diff --git a/bootstrap/linux-aarch64.ll b/bootstrap/linux-aarch64.ll index fd145aa..782dead 100644 --- a/bootstrap/linux-aarch64.ll +++ b/bootstrap/linux-aarch64.ll @@ -9,21 +9,23 @@ target triple = "aarch64-unknown-linux-gnu" %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, { ptr, i64, i64 }, i64, i64 } +%S.gen.Var = type { { ptr, i64, i64 }, %S.ast.Type, { ptr, i64, i64 }, i1, i64, i1, i1, { 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, 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 } } -%S.gen.Scope = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 } } -%S.gen.Loop = type { { ptr, i64, i64 }, { ptr, i64, i64 }, i64 } +%S.gen.Cleanup = type { i1, i64 } +%S.gen.Scope = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 } } +%S.gen.Pending = type { { ptr, i64, i64 }, %S.ast.Type, i1 } +%S.gen.Loop = type { { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64 } %S.gen.FnSig = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i1, i1, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i1, i1, { ptr, i64, i64 }, %S.ast.Type, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64 } %S.gen.StructDef = type { { ptr, i64, i64 }, { ptr, i64, i64 }, i1, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64, { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64, i64, i1 } %S.gen.Val = type { { ptr, i64, i64 }, %S.ast.Type, i1, i1 } %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, { 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.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 }, { 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 } } @@ -248,219 +250,219 @@ target triple = "aarch64-unknown-linux-gnu" @.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 [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 [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.145 = private unnamed_addr constant [8 x i8] c"/files-\00" +@.str.146 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.147 = private unnamed_addr constant [6 x i8] c"/done\00" +@.str.148 = private unnamed_addr constant [2 x i8] c"/\00" +@.str.149 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.150 = private unnamed_addr constant [2 x i8] c"/\00" +@.str.151 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.152 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.153 = private unnamed_addr constant [6 x i8] c"/done\00" +@.str.154 = private unnamed_addr constant [1 x i8] c"\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.156 = private unnamed_addr constant [8 x i8] c"version\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"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.158 = private unnamed_addr constant [10 x i8] c"--version\00" +@.str.159 = private unnamed_addr constant [47 x i8] c"Finch 2.4.0 (the compiler is written in Finch)\00" +@.str.160 = private unnamed_addr constant [1 x i8] c"\00" +@.str.161 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.162 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.163 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.164 = private unnamed_addr constant [4 x i8] c"lsp\00" +@.str.165 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.166 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.167 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.168 = private unnamed_addr constant [6 x i8] c"build\00" +@.str.169 = private unnamed_addr constant [4 x i8] c"run\00" +@.str.170 = private unnamed_addr constant [3 x i8] c"ir\00" +@.str.171 = private unnamed_addr constant [6 x i8] c"index\00" +@.str.172 = private unnamed_addr constant [1 x i8] c"\00" +@.str.173 = private unnamed_addr constant [4 x i8] c"-O2\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 [2 x i8] c"=\00" +@.str.175 = private unnamed_addr constant [4 x i8] c"run\00" +@.str.176 = private unnamed_addr constant [3 x i8] c"-o\00" +@.str.177 = private unnamed_addr constant [6 x i8] c"build\00" +@.str.178 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.179 = private unnamed_addr constant [9 x i8] c"--shared\00" +@.str.180 = private unnamed_addr constant [6 x i8] c"build\00" +@.str.181 = private unnamed_addr constant [4 x i8] c"-O0\00" +@.str.182 = private unnamed_addr constant [4 x i8] c"-O0\00" +@.str.183 = private unnamed_addr constant [3 x i8] c"-l\00" @.str.184 = private unnamed_addr constant [13 x i8] c"src/main.fch\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.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.186 = private unnamed_addr constant [3 x i8] c"-l\00" +@.str.187 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.188 = private unnamed_addr constant [3 x i8] c"-I\00" +@.str.189 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.190 = private unnamed_addr constant [10 x i8] c"--overlay\00" +@.str.191 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.192 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.193 = private unnamed_addr constant [2 x i8] c"=\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 [3 x i8] c"-g\00" +@.str.197 = private unnamed_addr constant [9 x i8] c"--target\00" +@.str.198 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.199 = private unnamed_addr constant [4 x i8] c"run\00" +@.str.200 = private unnamed_addr constant [4 x i8] c"run\00" +@.str.201 = private unnamed_addr constant [12 x i8] c"/finch_run_\00" +@.str.202 = private unnamed_addr constant [2 x i8] c"_\00" +@.str.203 = private unnamed_addr constant [5 x i8] c".dll\00" +@.str.204 = private unnamed_addr constant [4 x i8] c"lib\00" +@.str.205 = private unnamed_addr constant [7 x i8] c".dylib\00" +@.str.206 = private unnamed_addr constant [4 x i8] c"lib\00" +@.str.207 = private unnamed_addr constant [4 x i8] c".so\00" +@.str.208 = private unnamed_addr constant [6 x i8] c"linux\00" +@.str.209 = private unnamed_addr constant [8 x i8] c"windows\00" +@.str.210 = private unnamed_addr constant [6 x i8] c"macos\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.212 = private unnamed_addr constant [8 x i8] c"/../std\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.214 = private unnamed_addr constant [5 x i8] c"/std\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.216 = private unnamed_addr constant [20 x i8] c"/../share/finch/std\00" +@.str.217 = private unnamed_addr constant [4 x i8] c"std\00" +@.str.218 = private unnamed_addr constant [10 x i8] c"/path.fch\00" +@.str.219 = private unnamed_addr constant [5 x i8] c"/std\00" +@.str.220 = private unnamed_addr constant [11 x i8] c"FINCH_PATH\00" +@.str.221 = private unnamed_addr constant [1 x i8] c"\00" +declare ptr @getenv(ptr) +@.str.222 = private unnamed_addr constant [13 x i8] c"src/main.fch\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 [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.224 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.225 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.226 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.227 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.228 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.229 = private unnamed_addr constant [3 x i8] c".c\00" +@.str.230 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.231 = private unnamed_addr constant [3 x i8] c".o\00" +@.str.232 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.233 = private unnamed_addr constant [3 x i8] c".a\00" +@.str.234 = private unnamed_addr constant [2 x i8] c"/\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.236 = private unnamed_addr constant [1 x i8] c"\00" +@.str.237 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.238 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.239 = private unnamed_addr constant [6 x i8] c"index\00" +@.str.240 = private unnamed_addr constant [3 x i8] c"ir\00" +@.str.241 = private unnamed_addr constant [6 x i8] c"index\00" +@.str.242 = private unnamed_addr constant [1 x i8] c"\00" +@.str.243 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.244 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.245 = private unnamed_addr constant [9 x i8] c"FINCH_RT\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 [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 [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.247 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.248 = private unnamed_addr constant [23 x i8] c"/../runtime/finch_rt.c\00" +@.str.249 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.250 = private unnamed_addr constant [20 x i8] c"/runtime/finch_rt.c\00" +@.str.251 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.252 = private unnamed_addr constant [35 x i8] c"/../share/finch/runtime/finch_rt.c\00" +@.str.253 = private unnamed_addr constant [19 x i8] c"runtime/finch_rt.c\00" +@.str.254 = private unnamed_addr constant [19 x i8] c"runtime/finch_rt.c\00" +@.str.255 = private unnamed_addr constant [20 x i8] c"/runtime/finch_rt.c\00" +@.str.256 = private unnamed_addr constant [1 x i8] c"\00" +@.str.257 = private unnamed_addr constant [7 x i8] c" -fPIC\00" +@.str.258 = private unnamed_addr constant [4 x i8] c" -g\00" +@.str.259 = private unnamed_addr constant [4 x i8] c"run\00" +@.str.260 = private unnamed_addr constant [2 x i8] c" \00" +@.str.261 = private unnamed_addr constant [2 x i8] c" \00" +@.str.262 = private unnamed_addr constant [3 x i8] c"fn\00" +@.str.263 = private unnamed_addr constant [7 x i8] c"return\00" +@.str.264 = private unnamed_addr constant [3 x i8] c"if\00" +@.str.265 = private unnamed_addr constant [5 x i8] c"else\00" +@.str.266 = private unnamed_addr constant [6 x i8] c"while\00" +@.str.267 = private unnamed_addr constant [4 x i8] c"for\00" +@.str.268 = private unnamed_addr constant [3 x i8] c"in\00" +@.str.269 = private unnamed_addr constant [6 x i8] c"break\00" +@.str.270 = private unnamed_addr constant [9 x i8] c"continue\00" +@.str.271 = private unnamed_addr constant [5 x i8] c"true\00" +@.str.272 = private unnamed_addr constant [6 x i8] c"false\00" +@.str.273 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.274 = private unnamed_addr constant [7 x i8] c"import\00" +@.str.275 = private unnamed_addr constant [5 x i8] c"link\00" +@.str.276 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.277 = private unnamed_addr constant [6 x i8] c"defer\00" +@.str.278 = private unnamed_addr constant [3 x i8] c"or\00" +@.str.279 = private unnamed_addr constant [4 x i8] c"try\00" +@.str.280 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.281 = private unnamed_addr constant [6 x i8] c"match\00" +@.str.282 = private unnamed_addr constant [7 x i8] c"export\00" +@.str.283 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.284 = private unnamed_addr constant [29 x i8] c"used .path on a null pointer\00" +@.str.285 = private unnamed_addr constant [2 x i8] c":\00" +@.str.286 = private unnamed_addr constant [2 x i8] c":\00" +@.str.287 = private unnamed_addr constant [10 x i8] c": error: \00" +@.str.288 = private unnamed_addr constant [1 x i8] c"\00" +@.str.289 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.290 = private unnamed_addr constant [2 x i8] c"\0A\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.292 = private unnamed_addr constant [26 x i8] c"used .i 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.294 = private unnamed_addr constant [28 x i8] c"used .src 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.296 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.297 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.298 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.299 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\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.301 = private unnamed_addr constant [28 x i8] c"used .src 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 [28 x i8] c"used .col on a null pointer\00" +@.str.303 = private unnamed_addr constant [26 x i8] c"used .i 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 [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 [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.305 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.306 = private unnamed_addr constant [29 x i8] c"used .line on a null pointer\00" +@.str.307 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.308 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00" +@.str.309 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.310 = private unnamed_addr constant [27 x i8] c"used .nl 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 [28 x i8] c"used .col on a null pointer\00" +@.str.313 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.314 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\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 [3 x i8] c"&&\00" +@.str.323 = private unnamed_addr constant [3 x i8] c"||\00" +@.str.324 = private unnamed_addr constant [3 x i8] c"..\00" +@.str.325 = private unnamed_addr constant [3 x i8] c":=\00" +@.str.326 = private unnamed_addr constant [3 x i8] c"+=\00" +@.str.327 = private unnamed_addr constant [3 x i8] c"-=\00" +@.str.328 = private unnamed_addr constant [3 x i8] c"*=\00" +@.str.329 = private unnamed_addr constant [3 x i8] c"/=\00" +@.str.330 = private unnamed_addr constant [3 x i8] c"%=\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 [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.333 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.334 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.335 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.336 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\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 [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 [1 x i8] c"\00" +@.str.338 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.339 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.340 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.341 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.342 = private unnamed_addr constant [23 x i8] c"(){}[],.:+-*/%&|^~<>=!\00" @.str.343 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.344 = private unnamed_addr constant [29 x i8] c"used .line on a null pointer\00" +@.str.344 = private unnamed_addr constant [28 x i8] c"used .src 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 [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.346 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.347 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" @.str.348 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\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 [28 x i8] c"used .src on a null pointer\00" +@.str.351 = private unnamed_addr constant [1 x i8] c"\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.353 = private unnamed_addr constant [29 x i8] c"used .line 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 [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.355 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00" +@.str.356 = private unnamed_addr constant [17 x i8] c"unknown escape \5C\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" @@ -471,6800 +473,7034 @@ declare ptr @getenv(ptr) @.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.367 = private unnamed_addr constant [26 x i8] c"used .i 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.369 = private unnamed_addr constant [28 x i8] c"used .src 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 [26 x i8] c"used .i on a null pointer\00" +@.str.371 = private unnamed_addr constant [28 x i8] c"used .src 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 [28 x i8] c"used .src on a null pointer\00" +@.str.373 = private unnamed_addr constant [26 x i8] c"used .i 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 [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.375 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.376 = private unnamed_addr constant [29 x i8] c"used .line on a null pointer\00" +@.str.377 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.378 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\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.383 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.384 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.385 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.386 = private unnamed_addr constant [26 x i8] c"used .i 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 [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.389 = private unnamed_addr constant [26 x i8] c"used .i 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 [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 [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.391 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.392 = private unnamed_addr constant [37 x i8] c"comment is never closed (missing */)\00" +@.str.393 = private unnamed_addr constant [1 x i8] c"\00" +@.str.394 = private unnamed_addr constant [1 x i8] c"\00" +@.str.395 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.396 = private unnamed_addr constant [29 x i8] c"used .line on a null pointer\00" +@.str.397 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.398 = private unnamed_addr constant [28 x i8] c"used .col 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 [27 x i8] c"used .nl 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 [27 x i8] c"used .nl 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.405 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.406 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.406 = private unnamed_addr constant [26 x i8] c"used .i 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.408 = private unnamed_addr constant [28 x i8] c"used .src 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 [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.410 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\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.413 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\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.414 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.415 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.416 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.417 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.418 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" @.str.419 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\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.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 [6 x i8] c"ident\00" +@.str.425 = private unnamed_addr constant [4 x i8] c"int\00" @.str.426 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.427 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.427 = private unnamed_addr constant [26 x i8] c"used .i 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 [26 x i8] c"used .i on a null pointer\00" +@.str.429 = private unnamed_addr constant [28 x i8] c"used .src 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 [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.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.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" @.str.438 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" @.str.439 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" @.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.441 = private unnamed_addr constant [26 x i8] c"used .i 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 [26 x i8] c"used .i on a null pointer\00" +@.str.443 = private unnamed_addr constant [28 x i8] c"used .src 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.445 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\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.449 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.450 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.451 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.452 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.453 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.454 = private unnamed_addr constant [6 x i8] c"float\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.456 = private unnamed_addr constant [26 x i8] c"used .i 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 [26 x i8] c"used .i on a null pointer\00" +@.str.458 = private unnamed_addr constant [28 x i8] c"used .src 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 [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.460 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.461 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.462 = 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.464 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.465 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.466 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.467 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.468 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\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 .src on a null pointer\00" +@.str.471 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.472 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.473 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.474 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.475 = private unnamed_addr constant [2 x i8] c"_\00" +@.str.476 = private unnamed_addr constant [1 x i8] c"\00" +@.str.477 = private unnamed_addr constant [7 x i8] c"string\00" +@.str.478 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.479 = private unnamed_addr constant [35 x i8] c"string is never closed (missing \22)\00" +@.str.480 = private unnamed_addr constant [33 x i8] c"char is never closed (missing ')\00" +@.str.481 = private unnamed_addr constant [1 x i8] c"\00" +@.str.482 = private unnamed_addr constant [45 x i8] c"a char holds exactly one character, like 'a'\00" +@.str.483 = private unnamed_addr constant [1 x i8] c"\00" +@.str.484 = 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.485 = private unnamed_addr constant [23 x i8] c"unexpected character '\00" +@.str.486 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.487 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.488 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\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.490 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.491 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.492 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.493 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.494 = private unnamed_addr constant [4 x i8] c"eof\00" +@.str.495 = private unnamed_addr constant [1 x i8] c"\00" +@.str.496 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.497 = private unnamed_addr constant [29 x i8] c"used .line on a null pointer\00" +@.str.498 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.499 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00" +@.str.500 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.501 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.502 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.503 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.504 = private unnamed_addr constant [6 x i8] c"named\00" +@.str.505 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.506 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str.507 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.508 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.509 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.510 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str.511 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" +@.str.512 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" +@.str.513 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.514 = private unnamed_addr constant [3 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.516 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str.517 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.518 = private unnamed_addr constant [2 x i8] c"]\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 .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 [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.520 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.521 = private unnamed_addr constant [5 x i8] c"map[\00" +@.str.522 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" +@.str.523 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.524 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" +@.str.525 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.526 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.527 = private unnamed_addr constant [5 x i8] c"ptr[\00" +@.str.528 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" +@.str.529 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.530 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.531 = private unnamed_addr constant [6 x i8] c"named\00" +@.str.532 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.533 = private unnamed_addr constant [2 x i8] c".\00" +@.str.534 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.535 = private unnamed_addr constant [8 x i8] c"nothing\00" +@.str.536 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.537 = private unnamed_addr constant [29 x i8] c"used .path on a null pointer\00" +@.str.538 = private unnamed_addr constant [2 x i8] c":\00" +@.str.539 = private unnamed_addr constant [2 x i8] c":\00" +@.str.540 = private unnamed_addr constant [10 x i8] c": error: \00" +@.str.541 = private unnamed_addr constant [1 x i8] c"\00" +@.str.542 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.543 = private unnamed_addr constant [2 x i8] c"\0A\00" @.str.544 = private unnamed_addr constant [15 x i8] c"src/parser.fch\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.545 = private unnamed_addr constant [29 x i8] c"used .toks 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 [15 x i8] c"src/parser.fch\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.552 = private unnamed_addr constant [26 x i8] c"used .i 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.555 = private unnamed_addr constant [26 x i8] c"used .i 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.557 = private unnamed_addr constant [29 x i8] c"used .toks 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.559 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" +@.str.560 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.561 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" +@.str.562 = private unnamed_addr constant [15 x i8] c"src/parser.fch\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 [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 [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.564 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" +@.str.565 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.566 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.567 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.568 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.569 = private unnamed_addr constant [29 x i8] c"used .toks 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 [26 x i8] c"used .i on a null pointer\00" +@.str.572 = private unnamed_addr constant [15 x i8] c"src/parser.fch\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 [26 x i8] c"used .i on a null pointer\00" +@.str.577 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.578 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.579 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.580 = private unnamed_addr constant [4 x i8] c"eof\00" +@.str.581 = private unnamed_addr constant [12 x i8] c"end of file\00" +@.str.582 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.583 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.584 = private unnamed_addr constant [9 x i8] c"a number\00" +@.str.585 = private unnamed_addr constant [7 x i8] c"string\00" +@.str.586 = private unnamed_addr constant [9 x i8] c"a string\00" +@.str.587 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.588 = private unnamed_addr constant [7 x i8] c"a char\00" +@.str.589 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.590 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.591 = private unnamed_addr constant [10 x i8] c"expected \00" +@.str.592 = private unnamed_addr constant [9 x i8] c", found \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.594 = private unnamed_addr constant [30 x i8] c"used .depth 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 [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 [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 [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.596 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" +@.str.597 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.598 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.599 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.600 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.601 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" +@.str.602 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.603 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.604 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.605 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.606 = private unnamed_addr constant [29 x i8] c"used .file on a null pointer\00" +@.str.607 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.608 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.609 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.610 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.611 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.612 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.613 = private unnamed_addr constant [3 x i8] c"i8\00" +@.str.614 = private unnamed_addr constant [4 x i8] c"i16\00" +@.str.615 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.616 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.617 = private unnamed_addr constant [3 x i8] c"u8\00" +@.str.618 = private unnamed_addr constant [4 x i8] c"u16\00" +@.str.619 = private unnamed_addr constant [4 x i8] c"u32\00" +@.str.620 = private unnamed_addr constant [4 x i8] c"u64\00" +@.str.621 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.622 = private unnamed_addr constant [4 x i8] c"f64\00" +@.str.623 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.624 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.625 = private unnamed_addr constant [37 x i8] c"']' (an array type looks like []int)\00" +@.str.626 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.627 = private unnamed_addr constant [12 x i8] c"unexpected \00" +@.str.628 = private unnamed_addr constant [57 x i8] c" (expected a type like int, str, []int or a struct name)\00" +@.str.629 = private unnamed_addr constant [4 x i8] c"map\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 [40 x i8] c"']' (a map type looks like map[str]int)\00" +@.str.633 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.634 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.635 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.636 = private unnamed_addr constant [4 x i8] c"']'\00" +@.str.637 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.638 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.639 = private unnamed_addr constant [4 x i8] c"f64\00" +@.str.640 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.641 = private unnamed_addr constant [6 x i8] c"named\00" +@.str.642 = private unnamed_addr constant [2 x i8] c".\00" +@.str.643 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.644 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.645 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.646 = private unnamed_addr constant [2 x i8] c",\00" +@.str.647 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.648 = private unnamed_addr constant [29 x i8] c"']' after the type arguments\00" +@.str.649 = private unnamed_addr constant [6 x i8] c"ident\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 [29 x i8] c"used .toks on a null pointer\00" +@.str.653 = private unnamed_addr constant [26 x i8] c"used .i 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 [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 [6 x i8] c"ident\00" +@.str.657 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\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 [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 [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.659 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.660 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.661 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.662 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" +@.str.663 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.664 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" @.str.665 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.666 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.666 = private unnamed_addr constant [6 x i8] c"ident\00" @.str.667 = private unnamed_addr constant [15 x i8] c"src/parser.fch\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.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 [4 x i8] c"eof\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 [15 x i8] c"src/parser.fch\00" -@.str.675 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.675 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\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 [2 x i8] c"[\00" +@.str.678 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.679 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.680 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" +@.str.681 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.682 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.683 = private unnamed_addr constant [15 x i8] c"src/parser.fch\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.686 = private unnamed_addr constant [26 x i8] c"used .i 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.690 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\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 [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 [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 [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.692 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.693 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.694 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.695 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" +@.str.696 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.697 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" +@.str.698 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.699 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.700 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.701 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\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.703 = private unnamed_addr constant [4 x i8] c"eof\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.705 = private unnamed_addr constant [29 x i8] c"used .toks 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.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 [6 x i8] c"ident\00" +@.str.711 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.712 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\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.714 = private unnamed_addr constant [26 x i8] c"used .i 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.716 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.717 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.718 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.719 = private unnamed_addr constant [2 x i8] c".\00" +@.str.720 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.721 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.722 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.723 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" +@.str.724 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.725 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.726 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.727 = private unnamed_addr constant [2 x i8] c"}\00" +@.str.728 = private unnamed_addr constant [4 x i8] c"eof\00" +@.str.729 = private unnamed_addr constant [12 x i8] c"unexpected \00" +@.str.730 = private unnamed_addr constant [38 x i8] c" (put each statement on its own line)\00" +@.str.731 = private unnamed_addr constant [4 x i8] c"eof\00" +@.str.732 = private unnamed_addr constant [7 x i8] c"import\00" +@.str.733 = private unnamed_addr constant [7 x i8] c"string\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 [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 [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 [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.735 = private unnamed_addr constant [29 x i8] c"used .path on a null pointer\00" +@.str.736 = private unnamed_addr constant [2 x i8] c":\00" +@.str.737 = private unnamed_addr constant [2 x i8] c":\00" +@.str.738 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.739 = private unnamed_addr constant [52 x i8] c"expected a module name or a C header after 'import'\00" +@.str.740 = private unnamed_addr constant [5 x i8] c"link\00" +@.str.741 = private unnamed_addr constant [7 x i8] c"string\00" +@.str.742 = private unnamed_addr constant [43 x i8] c"a library name in quotes, like link \22glfw\22\00" +@.str.743 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.744 = private unnamed_addr constant [3 x i8] c".c\00" +@.str.745 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.746 = private unnamed_addr constant [3 x i8] c".o\00" +@.str.747 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.748 = private unnamed_addr constant [3 x i8] c".a\00" +@.str.749 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.750 = private unnamed_addr constant [4 x i8] c"lib\00" +@.str.751 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.752 = private unnamed_addr constant [4 x i8] c".so\00" +@.str.753 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.754 = private unnamed_addr constant [2 x i8] c"/\00" +@.str.755 = private unnamed_addr constant [66 x i8] c"write just the library's name: for libglfw.so that's link \22glfw\22\00" +@.str.756 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.757 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.758 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.759 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.760 = private unnamed_addr constant [7 x i8] c"'enum'\00" +@.str.761 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.762 = private unnamed_addr constant [13 x i8] c"an enum name\00" +@.str.763 = private unnamed_addr constant [2 x i8] c"{\00" +@.str.764 = private unnamed_addr constant [4 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"eof\00" +@.str.767 = private unnamed_addr constant [38 x i8] c"an enum is never closed (missing '}')\00" +@.str.768 = private unnamed_addr constant [8 x i8] c"variant\00" +@.str.769 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.770 = private unnamed_addr constant [25 x i8] c"a variant name, like Red\00" +@.str.771 = private unnamed_addr constant [2 x i8] c"=\00" +@.str.772 = private unnamed_addr constant [1 x i8] c"\00" +@.str.773 = private unnamed_addr constant [2 x i8] c"-\00" +@.str.774 = private unnamed_addr constant [2 x i8] c"-\00" +@.str.775 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.776 = private unnamed_addr constant [31 x i8] c"a whole number, like Ok = 200\00" +@.str.777 = private unnamed_addr constant [2 x i8] c",\00" +@.str.778 = private unnamed_addr constant [10 x i8] c"the enum \00" +@.str.779 = private unnamed_addr constant [17 x i8] c" has no variants\00" +@.str.780 = private unnamed_addr constant [6 x i8] c"match\00" +@.str.781 = private unnamed_addr constant [6 x i8] c"match\00" +@.str.782 = private unnamed_addr constant [8 x i8] c"'match'\00" +@.str.783 = private unnamed_addr constant [2 x i8] c"{\00" +@.str.784 = private unnamed_addr constant [4 x i8] c"'{'\00" +@.str.785 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.786 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" +@.str.787 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.788 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\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 [38 x i8] c"a match is never closed (missing '}')\00" +@.str.792 = private unnamed_addr constant [4 x i8] c"arm\00" +@.str.793 = private unnamed_addr constant [9 x i8] c"patterns\00" +@.str.794 = private unnamed_addr constant [5 x i8] c"else\00" +@.str.795 = private unnamed_addr constant [2 x i8] c",\00" +@.str.796 = private unnamed_addr constant [3 x i8] c"->\00" +@.str.797 = private unnamed_addr constant [58 x i8] c"'->' after the value to match, like Red -> print(\22red\22)\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 [15 x i8] c"src/parser.fch\00" +@.str.801 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" +@.str.802 = private unnamed_addr constant [31 x i8] c"a match needs at least one arm\00" +@.str.803 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.804 = private unnamed_addr constant [4 x i8] c"'['\00" +@.str.805 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.806 = private unnamed_addr constant [30 x i8] c"a type parameter name, like T\00" +@.str.807 = private unnamed_addr constant [2 x i8] c",\00" +@.str.808 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.809 = private unnamed_addr constant [30 x i8] c"']' after the type parameters\00" +@.str.810 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.811 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.812 = private unnamed_addr constant [9 x i8] c"'struct'\00" +@.str.813 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.814 = private unnamed_addr constant [14 x i8] c"a struct name\00" +@.str.815 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.816 = private unnamed_addr constant [2 x i8] c"{\00" +@.str.817 = private unnamed_addr constant [4 x i8] c"'{'\00" +@.str.818 = private unnamed_addr constant [2 x i8] c"}\00" +@.str.819 = private unnamed_addr constant [4 x i8] c"eof\00" +@.str.820 = private unnamed_addr constant [39 x i8] c"a struct is never closed (missing '}')\00" +@.str.821 = private unnamed_addr constant [6 x i8] c"field\00" +@.str.822 = private unnamed_addr constant [12 x i8] c"unexpected \00" +@.str.823 = private unnamed_addr constant [29 x i8] c" (a field looks like: int x)\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.825 = private unnamed_addr constant [13 x i8] c"a field name\00" +@.str.826 = private unnamed_addr constant [2 x i8] c"=\00" +@.str.827 = private unnamed_addr constant [3 x i8] c"fn\00" +@.str.828 = private unnamed_addr constant [7 x i8] c"export\00" +@.str.829 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.830 = private unnamed_addr constant [69 x i8] c"functions start with 'fn', like: fn add(int a, int b) -> int { ... }\00" +@.str.831 = private unnamed_addr constant [3 x i8] c"fn\00" +@.str.832 = private unnamed_addr constant [27 x i8] c"'fn', 'struct' or 'import'\00" +@.str.833 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.834 = private unnamed_addr constant [16 x i8] c"a function name\00" +@.str.835 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.836 = private unnamed_addr constant [2 x i8] c".\00" +@.str.837 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.838 = private unnamed_addr constant [14 x i8] c"a method name\00" +@.str.839 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.840 = private unnamed_addr constant [4 x i8] c"'('\00" +@.str.841 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.842 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" +@.str.843 = private unnamed_addr constant [2 x i8] c")\00" +@.str.844 = private unnamed_addr constant [6 x i8] c"param\00" +@.str.845 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.846 = private unnamed_addr constant [17 x i8] c"a parameter name\00" +@.str.847 = private unnamed_addr constant [2 x i8] c",\00" +@.str.848 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.849 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" +@.str.850 = private unnamed_addr constant [2 x i8] c")\00" +@.str.851 = private unnamed_addr constant [4 x i8] c"')'\00" +@.str.852 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.853 = private unnamed_addr constant [3 x i8] c"->\00" +@.str.854 = private unnamed_addr constant [2 x i8] c"!\00" +@.str.855 = private unnamed_addr constant [2 x i8] c"!\00" +@.str.856 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.857 = private unnamed_addr constant [12 x i8] c"unexpected \00" +@.str.858 = private unnamed_addr constant [62 x i8] c" (after '->' comes a type, or ! for a function that can fail)\00" +@.str.859 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.860 = private unnamed_addr constant [6 x i8] c"block\00" +@.str.861 = private unnamed_addr constant [2 x i8] c"{\00" +@.str.862 = private unnamed_addr constant [4 x i8] c"'{'\00" +@.str.863 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.864 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" +@.str.865 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.866 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" +@.str.867 = private unnamed_addr constant [2 x i8] c"}\00" +@.str.868 = private unnamed_addr constant [4 x i8] c"eof\00" +@.str.869 = private unnamed_addr constant [36 x i8] c"a '{' is never closed (missing '}')\00" +@.str.870 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.871 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" +@.str.872 = private unnamed_addr constant [3 x i8] c"if\00" +@.str.873 = private unnamed_addr constant [6 x i8] c"while\00" +@.str.874 = private unnamed_addr constant [6 x i8] c"while\00" +@.str.875 = private unnamed_addr constant [4 x i8] c"for\00" +@.str.876 = private unnamed_addr constant [4 x i8] c"for\00" +@.str.877 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.878 = private unnamed_addr constant [21 x i8] c"a loop variable name\00" +@.str.879 = private unnamed_addr constant [2 x i8] c",\00" +@.str.880 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.881 = private unnamed_addr constant [28 x i8] c"a second loop variable name\00" +@.str.882 = private unnamed_addr constant [3 x i8] c"in\00" +@.str.883 = private unnamed_addr constant [5 x i8] c"'in'\00" +@.str.884 = private unnamed_addr constant [3 x i8] c"..\00" +@.str.885 = private unnamed_addr constant [56 x i8] c"a range of numbers has one loop variable: for i in 0..n\00" +@.str.886 = private unnamed_addr constant [5 x i8] c"each\00" +@.str.887 = private unnamed_addr constant [6 x i8] c"match\00" +@.str.888 = private unnamed_addr constant [7 x i8] c"return\00" +@.str.889 = private unnamed_addr constant [7 x i8] c"return\00" +@.str.890 = private unnamed_addr constant [2 x i8] c"}\00" +@.str.891 = private unnamed_addr constant [6 x i8] c"break\00" +@.str.892 = private unnamed_addr constant [9 x i8] c"continue\00" +@.str.893 = private unnamed_addr constant [2 x i8] c"{\00" +@.str.894 = private unnamed_addr constant [6 x i8] c"defer\00" +@.str.895 = private unnamed_addr constant [6 x i8] c"defer\00" +@.str.896 = private unnamed_addr constant [6 x i8] c"defer\00" +@.str.897 = private unnamed_addr constant [34 x i8] c"defer inside defer is not allowed\00" +@.str.898 = private unnamed_addr constant [3 x i8] c"fn\00" +@.str.899 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.900 = private unnamed_addr constant [7 x i8] c"import\00" +@.str.901 = private unnamed_addr constant [5 x i8] c"link\00" +@.str.902 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.903 = private unnamed_addr constant [49 x i8] c"' can't be used here in the self-hosted compiler\00" +@.str.904 = private unnamed_addr constant [5 x i8] c"decl\00" +@.str.905 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.906 = private unnamed_addr constant [16 x i8] c"a variable name\00" +@.str.907 = private unnamed_addr constant [2 x i8] c"=\00" +@.str.908 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.909 = private unnamed_addr constant [3 x i8] c":=\00" +@.str.910 = private unnamed_addr constant [5 x i8] c"decl\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 [3 x i8] c"-=\00" +@.str.914 = private unnamed_addr constant [3 x i8] c"*=\00" +@.str.915 = private unnamed_addr constant [3 x i8] c"/=\00" +@.str.916 = private unnamed_addr constant [3 x i8] c"%=\00" +@.str.917 = private unnamed_addr constant [4 x i8] c"var\00" +@.str.918 = private unnamed_addr constant [7 x i8] c"member\00" +@.str.919 = private unnamed_addr constant [6 x i8] c"index\00" +@.str.920 = private unnamed_addr constant [67 x i8] c"only a variable, a field, an element or p.value can be assigned to\00" +@.str.921 = private unnamed_addr constant [7 x i8] c"assign\00" +@.str.922 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.923 = private unnamed_addr constant [29 x i8] c"used .file on a null pointer\00" +@.str.924 = private unnamed_addr constant [5 x i8] c"call\00" +@.str.925 = private unnamed_addr constant [7 x i8] c"method\00" +@.str.926 = private unnamed_addr constant [4 x i8] c"try\00" +@.str.927 = private unnamed_addr constant [3 x i8] c"or\00" +@.str.928 = private unnamed_addr constant [38 x i8] c"this value is computed but never used\00" +@.str.929 = private unnamed_addr constant [5 x i8] c"expr\00" +@.str.930 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.931 = private unnamed_addr constant [29 x i8] c"used .file on a null pointer\00" +@.str.932 = private unnamed_addr constant [3 x i8] c"if\00" +@.str.933 = private unnamed_addr constant [3 x i8] c"if\00" +@.str.934 = private unnamed_addr constant [5 x i8] c"'if'\00" +@.str.935 = private unnamed_addr constant [5 x i8] c"else\00" +@.str.936 = private unnamed_addr constant [3 x i8] c"if\00" +@.str.937 = private unnamed_addr constant [3 x i8] c"||\00" +@.str.938 = private unnamed_addr constant [3 x i8] c"&&\00" +@.str.939 = private unnamed_addr constant [3 x i8] c"==\00" +@.str.940 = private unnamed_addr constant [3 x i8] c"!=\00" +@.str.941 = private unnamed_addr constant [2 x i8] c"<\00" +@.str.942 = private unnamed_addr constant [3 x i8] c"<=\00" +@.str.943 = private unnamed_addr constant [2 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 [2 x i8] c"-\00" +@.str.947 = private unnamed_addr constant [2 x i8] c"|\00" +@.str.948 = private unnamed_addr constant [2 x i8] c"^\00" +@.str.949 = private unnamed_addr constant [2 x i8] c"*\00" +@.str.950 = private unnamed_addr constant [2 x i8] c"/\00" +@.str.951 = private unnamed_addr constant [2 x i8] c"%\00" +@.str.952 = private unnamed_addr constant [3 x i8] c"<<\00" +@.str.953 = private unnamed_addr constant [3 x i8] c">>\00" +@.str.954 = private unnamed_addr constant [2 x i8] c"&\00" +@.str.955 = private unnamed_addr constant [3 x i8] c"or\00" +@.str.956 = private unnamed_addr constant [3 x i8] c"or\00" +@.str.957 = private unnamed_addr constant [2 x i8] c"{\00" +@.str.958 = private unnamed_addr constant [7 x i8] c"binary\00" +@.str.959 = private unnamed_addr constant [4 x i8] c"try\00" +@.str.960 = private unnamed_addr constant [4 x i8] c"try\00" +@.str.961 = private unnamed_addr constant [2 x i8] c"-\00" +@.str.962 = private unnamed_addr constant [2 x i8] c"!\00" +@.str.963 = private unnamed_addr constant [2 x i8] c"~\00" +@.str.964 = private unnamed_addr constant [6 x i8] c"unary\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 [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 [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 [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.968 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" +@.str.969 = private unnamed_addr constant [2 x i8] c")\00" +@.str.970 = private unnamed_addr constant [2 x i8] c")\00" +@.str.971 = private unnamed_addr constant [1 x i8] c"\00" +@.str.972 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.973 = private unnamed_addr constant [2 x i8] c":\00" +@.str.974 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.975 = private unnamed_addr constant [30 x i8] c"used .names on a null pointer\00" +@.str.976 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.977 = private unnamed_addr constant [29 x i8] c"used .kids on a null pointer\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 [2 x i8] c")\00" +@.str.982 = private unnamed_addr constant [4 x i8] c"')'\00" +@.str.983 = private unnamed_addr constant [2 x i8] c".\00" +@.str.984 = private unnamed_addr constant [7 x i8] c"member\00" +@.str.985 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.986 = private unnamed_addr constant [17 x i8] c"a name after '.'\00" +@.str.987 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.988 = private unnamed_addr constant [7 x i8] c"method\00" +@.str.989 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.990 = private unnamed_addr constant [6 x i8] c"index\00" +@.str.991 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.992 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" +@.str.993 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.994 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" +@.str.995 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.996 = private unnamed_addr constant [4 x i8] c"']'\00" +@.str.997 = private unnamed_addr constant [1 x i8] c"\00" +@.str.998 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.999 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.1000 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.1001 = private unnamed_addr constant [7 x i8] c"string\00" +@.str.1002 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.1003 = private unnamed_addr constant [5 x i8] c"true\00" +@.str.1004 = private unnamed_addr constant [6 x i8] c"false\00" +@.str.1005 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.1006 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.1007 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.1008 = private unnamed_addr constant [2 x i8] c"(\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 [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.1011 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.1012 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" +@.str.1013 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1014 = private unnamed_addr constant [4 x i8] c"')'\00" +@.str.1015 = private unnamed_addr constant [6 x i8] c"match\00" +@.str.1016 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.1017 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.1018 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.1019 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" +@.str.1020 = private unnamed_addr constant [2 x i8] c":\00" +@.str.1021 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.1022 = private unnamed_addr constant [4 x i8] c"map\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 [2 x i8] c"\09\00" -@.str.1051 = private unnamed_addr constant [2 x i8] c" \00" +@.str.1024 = private unnamed_addr constant [2 x i8] c":\00" +@.str.1025 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.1026 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.1027 = private unnamed_addr constant [2 x i8] c":\00" +@.str.1028 = private unnamed_addr constant [42 x i8] c"':' (a map entry looks like \22key\22: value)\00" +@.str.1029 = private unnamed_addr constant [2 x i8] c",\00" +@.str.1030 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.1031 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" +@.str.1032 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.1033 = private unnamed_addr constant [4 x i8] c"']'\00" +@.str.1034 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.1035 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.1036 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.1037 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" +@.str.1038 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.1039 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.1040 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.1041 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.1042 = private unnamed_addr constant [6 x i8] c"targs\00" +@.str.1043 = private unnamed_addr constant [2 x i8] c",\00" +@.str.1044 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.1045 = private unnamed_addr constant [29 x i8] c"']' after the type arguments\00" +@.str.1046 = private unnamed_addr constant [5 x i8] c"call\00" +@.str.1047 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.1048 = private unnamed_addr constant [5 x i8] c"call\00" +@.str.1049 = private unnamed_addr constant [4 x i8] c"var\00" +@.str.1050 = private unnamed_addr constant [12 x i8] c"unexpected \00" +@.str.1051 = private unnamed_addr constant [20 x i8] c" (expected a value)\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.1053 = private unnamed_addr constant [2 x i8] c"\5C\00" +@.str.1054 = private unnamed_addr constant [3 x i8] c"\5C\5C\00" +@.str.1055 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1056 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.1057 = private unnamed_addr constant [3 x i8] c"\5Cn\00" +@.str.1058 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1059 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1060 = private unnamed_addr constant [2 x i8] c" \00" +@.str.1061 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1062 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" +@.str.1063 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1064 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" +@.str.1065 = private unnamed_addr constant [4 x i8] c"@R\09\00" +@.str.1066 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1067 = private unnamed_addr constant [30 x i8] c"used .files 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 [2 x i8] c"\09\00" +@.str.1070 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1071 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1072 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1073 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1074 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1075 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1076 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1077 = private unnamed_addr constant [2 x i8] c" \00" +@.str.1078 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1079 = private unnamed_addr constant [2 x i8] c".\00" +@.str.1080 = private unnamed_addr constant [4 x i8] c"fn \00" +@.str.1081 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.1082 = private unnamed_addr constant [3 x i8] c", \00" +@.str.1083 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1084 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.1085 = private unnamed_addr constant [6 x i8] c" -> !\00" +@.str.1086 = private unnamed_addr constant [5 x i8] c" -> \00" +@.str.1087 = private unnamed_addr constant [2 x i8] c"!\00" +@.str.1088 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.1089 = private unnamed_addr constant [5 x i8] c" -> \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.1091 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" +@.str.1092 = private unnamed_addr constant [7 x i8] c"method\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.1094 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.1095 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.1097 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" +@.str.1098 = private unnamed_addr constant [5 x i8] c"\0A```\00" +@.str.1099 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1100 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\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.1103 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" +@.str.1104 = private unnamed_addr constant [4 x i8] c"@I\09\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.1106 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.1107 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1108 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.1109 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1110 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.1111 = 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.1112 = private unnamed_addr constant [2 x i8] c" \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.1114 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1115 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" +@.str.1116 = private unnamed_addr constant [4 x i8] c"@F\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.1119 = private unnamed_addr constant [2 x i8] c"\09\00" @.str.1120 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1121 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" +@.str.1121 = private unnamed_addr constant [30 x i8] c"used .files 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 [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.1123 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1124 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1125 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1126 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1127 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1128 = private unnamed_addr constant [2 x i8] c"|\00" +@.str.1129 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1130 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" +@.str.1131 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1132 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.1133 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.1135 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1136 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" +@.str.1137 = private unnamed_addr constant [4 x i8] c"@F\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 [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 [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 [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 [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.1139 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1140 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1141 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1142 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" +@.str.1143 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1144 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1145 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1146 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1147 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1148 = private unnamed_addr constant [4 x i8] c"fn \00" +@.str.1149 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.1150 = private unnamed_addr constant [3 x i8] c", \00" +@.str.1151 = private unnamed_addr constant [7 x i8] c"](...)\00" +@.str.1152 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1153 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1154 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" @.str.1155 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1156 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" +@.str.1156 = private unnamed_addr constant [30 x i8] c"used .progs 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.1158 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1159 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1160 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" +@.str.1161 = private unnamed_addr constant [4 x i8] c"@S\09\00" +@.str.1162 = private unnamed_addr constant [2 x i8] c"\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 [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.1164 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1165 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" +@.str.1166 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1167 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1168 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1169 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1170 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" +@.str.1171 = private unnamed_addr constant [5 x i8] c"@SF\09\00" +@.str.1172 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1173 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1174 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1175 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1176 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1177 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1178 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.1179 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1180 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.1181 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1182 = private unnamed_addr constant [1 x i8] c"\00" +@.str.1183 = private unnamed_addr constant [2 x i8] c",\00" +@.str.1184 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1185 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" +@.str.1186 = private unnamed_addr constant [4 x i8] c"@E\09\00" +@.str.1187 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1188 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\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.1190 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1191 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1192 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1193 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" +@.str.1194 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1195 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1196 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1197 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1198 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1199 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" +@.str.1200 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1201 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" +@.str.1202 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1203 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" +@.str.1204 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.1205 = private unnamed_addr constant [1 x i8] c"\00" +@.str.1206 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.1207 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.1208 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1209 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\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.1211 = private unnamed_addr constant [2 x i8] c":\00" +@.str.1212 = private unnamed_addr constant [2 x i8] c":\00" +@.str.1213 = private unnamed_addr constant [10 x i8] c": error: \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.1215 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" +@.str.1216 = private unnamed_addr constant [1 x i8] c"\00" +@.str.1217 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.1218 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.1219 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1220 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\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.1222 = private unnamed_addr constant [6 x i8] c"call \00" +@.str.1223 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1224 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" +@.str.1225 = private unnamed_addr constant [3 x i8] c" \00" +@.str.1226 = private unnamed_addr constant [9 x i8] c", !dbg !\00" +@.str.1227 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1228 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" +@.str.1229 = private unnamed_addr constant [3 x i8] c" \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.1231 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" +@.str.1232 = private unnamed_addr constant [3 x i8] c"%t\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.1234 = private unnamed_addr constant [28 x i8] c"used .tmp 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 [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.1236 = private unnamed_addr constant [28 x i8] c"used .lbl on a null pointer\00" +@.str.1237 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1238 = private unnamed_addr constant [28 x i8] c"used .lbl on a null pointer\00" +@.str.1239 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1240 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" +@.str.1241 = private unnamed_addr constant [2 x i8] c":\00" +@.str.1242 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1243 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.1244 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1245 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.1246 = private unnamed_addr constant [11 x i8] c"br label %\00" +@.str.1247 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1248 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.1249 = private unnamed_addr constant [7 x i8] c"br i1 \00" +@.str.1250 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str.1251 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str.1252 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1253 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.1254 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1255 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" +@.str.1256 = private unnamed_addr constant [3 x i8] c"%a\00" +@.str.1257 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1258 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" +@.str.1259 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1260 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" +@.str.1261 = private unnamed_addr constant [3 x i8] c" \00" +@.str.1262 = private unnamed_addr constant [11 x i8] c" = alloca \00" +@.str.1263 = private unnamed_addr constant [11 x i8] c", align 16\00" +@.str.1264 = private unnamed_addr constant [9 x i8] c" = load \00" +@.str.1265 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1266 = private unnamed_addr constant [7 x i8] c"store \00" +@.str.1267 = private unnamed_addr constant [2 x i8] c" \00" +@.str.1268 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1269 = private unnamed_addr constant [4 x i8] c" = \00" +@.str.1270 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.1271 = private unnamed_addr constant [3 x i8] c"i8\00" +@.str.1272 = private unnamed_addr constant [4 x i8] c"i16\00" +@.str.1273 = private unnamed_addr constant [4 x i8] c"i32\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.1275 = private unnamed_addr constant [4 x i8] c"u16\00" +@.str.1276 = private unnamed_addr constant [4 x i8] c"u32\00" +@.str.1277 = private unnamed_addr constant [4 x i8] c"u64\00" +@.str.1278 = private unnamed_addr constant [6 x i8] c"float\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 [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.1280 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.1281 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.1282 = private unnamed_addr constant [3 x i8] c"i8\00" +@.str.1283 = private unnamed_addr constant [3 x i8] c"u8\00" +@.str.1284 = private unnamed_addr constant [4 x i8] c"i16\00" +@.str.1285 = private unnamed_addr constant [4 x i8] c"u16\00" +@.str.1286 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.1287 = private unnamed_addr constant [4 x i8] c"u32\00" +@.str.1288 = private unnamed_addr constant [4 x i8] c"f32\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.1290 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1291 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.1292 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1293 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\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.1295 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1296 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\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.1298 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1299 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" +@.str.1300 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1301 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" @.str.1302 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [31 x i8] c"used .module on a null pointer\00" +@.str.1303 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1304 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" +@.str.1305 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.1306 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1307 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.1307 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" @.str.1308 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1309 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.1309 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" @.str.1310 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [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.1311 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1312 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.1313 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1314 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.1315 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1316 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.1317 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1318 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.1319 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1320 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.1321 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.1322 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.1323 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.1324 = 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.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 [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.1326 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.1327 = private unnamed_addr constant [42 x i8] c"a map value can't have the type 'nothing'\00" +@.str.1328 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str.1329 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str.1330 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1331 = private unnamed_addr constant [4 x i8] c"ptr\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 [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.1333 = private unnamed_addr constant [6 x i8] c"named\00" +@.str.1334 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1335 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" +@.str.1336 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1337 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" +@.str.1338 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1339 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" +@.str.1340 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1341 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1342 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.1343 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.1344 = private unnamed_addr constant [37 x i8] c"' is not imported here (add: import \00" +@.str.1345 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1346 = private unnamed_addr constant [2 x i8] c"C\00" +@.str.1347 = private unnamed_addr constant [2 x i8] c"C\00" +@.str.1348 = private unnamed_addr constant [29 x i8] c"there is no C struct named '\00" +@.str.1349 = private unnamed_addr constant [2 x i8] 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 [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 [2 x i8] c",\00" -@.str.1363 = private unnamed_addr constant [2 x i8] c".\00" +@.str.1352 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1353 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.1354 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.1355 = private unnamed_addr constant [37 x i8] c"' is not imported here (add: import \00" +@.str.1356 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1357 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.1358 = private unnamed_addr constant [2 x i8] c"C\00" +@.str.1359 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.1360 = private unnamed_addr constant [2 x i8] c"C\00" +@.str.1361 = private unnamed_addr constant [25 x i8] c"there is no type named '\00" +@.str.1362 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.1363 = private unnamed_addr constant [7 x i8] c"struct\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 [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 [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 [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.1365 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.1366 = private unnamed_addr constant [2 x i8] c".\00" +@.str.1367 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1368 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.1369 = private unnamed_addr constant [1 x i8] c"\00" +@.str.1370 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1371 = private unnamed_addr constant [2 x i8] c",\00" +@.str.1372 = private unnamed_addr constant [2 x i8] c".\00" +@.str.1373 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1374 = private unnamed_addr constant [2 x i8] c" \00" +@.str.1375 = private unnamed_addr constant [1 x i8] c"\00" +@.str.1376 = private unnamed_addr constant [5 x i8] c"main\00" +@.str.1377 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.1378 = private unnamed_addr constant [3 x i8] c"i1\00" +@.str.1379 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.1380 = private unnamed_addr constant [2 x i8] c"i\00" +@.str.1381 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.1382 = private unnamed_addr constant [7 x i8] c"double\00" +@.str.1383 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.1384 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.1385 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.1386 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.1387 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.1388 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.1389 = private unnamed_addr constant [38 x i8] c"{ ptr, i64, i64, i64, ptr, i64, i64 }\00" +@.str.1390 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str.1391 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.1392 = private unnamed_addr constant [4 x i8] c" x \00" +@.str.1393 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1394 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.1395 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.1396 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.1397 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.1398 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.1399 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.1400 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.1401 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.1402 = private unnamed_addr constant [4 x i8] c"%S.\00" +@.str.1403 = private unnamed_addr constant [2 x i8] c".\00" +@.str.1404 = private unnamed_addr constant [3 x i8] c"i8\00" +@.str.1405 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.1406 = private unnamed_addr constant [7 x i8] c"{ i1, \00" +@.str.1407 = private unnamed_addr constant [22 x i8] c", { ptr, i64, i64 } }\00" +@.str.1408 = private unnamed_addr constant [2 x i8] c":\00" +@.str.1409 = private unnamed_addr constant [2 x i8] c":\00" +@.str.1410 = private unnamed_addr constant [2 x i8] c":\00" +@.str.1411 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.1412 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.1413 = private unnamed_addr constant [2 x i8] c"0\00" +@.str.1414 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.1415 = private unnamed_addr constant [6 x i8] c"false\00" +@.str.1416 = private unnamed_addr constant [4 x i8] c"0.0\00" +@.str.1417 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.1418 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.1419 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.1420 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" +@.str.1421 = private unnamed_addr constant [30 x i8] c"ptrtoint (ptr getelementptr (\00" +@.str.1422 = private unnamed_addr constant [27 x i8] c", ptr null, i32 1) to i64)\00" +@.str.1423 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.1424 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.1425 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.1426 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.1427 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1428 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.1429 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1430 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.1431 = private unnamed_addr constant [5 x i8] c"arr_\00" +@.str.1432 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1433 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.1434 = private unnamed_addr constant [5 x i8] c"map_\00" +@.str.1435 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1436 = private unnamed_addr constant [2 x i8] c"_\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.1438 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.1439 = private unnamed_addr constant [3 x i8] c"E_\00" +@.str.1440 = private unnamed_addr constant [2 x i8] c"_\00" +@.str.1441 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.1442 = private unnamed_addr constant [3 x i8] c"S_\00" +@.str.1443 = private unnamed_addr constant [2 x i8] c"_\00" +@.str.1444 = private unnamed_addr constant [17 x i8] c"0123456789ABCDEF\00" +@.str.1445 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1446 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1447 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1448 = private unnamed_addr constant [29 x i8] c"used .nstr on a null pointer\00" +@.str.1449 = private unnamed_addr constant [7 x i8] c"@.str.\00" +@.str.1450 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1451 = private unnamed_addr constant [29 x i8] c"used .nstr on a null pointer\00" +@.str.1452 = private unnamed_addr constant [2 x i8] c"\5C\00" +@.str.1453 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1454 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00" +@.str.1455 = private unnamed_addr constant [35 x i8] c" = private unnamed_addr constant [\00" +@.str.1456 = private unnamed_addr constant [10 x i8] c" x i8] c\22\00" +@.str.1457 = private unnamed_addr constant [1 x i8] c"\00" +@.str.1458 = private unnamed_addr constant [5 x i8] c"\5C00\22\00" +@.str.1459 = private unnamed_addr constant [7 x i8] c"{ 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.1461 = private unnamed_addr constant [10 x i8] c", i64 0 }\00" +@.str.1462 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.1463 = private unnamed_addr constant [6 x i8] c"panic\00" +@.str.1464 = private unnamed_addr constant [3 x i8] c"ok\00" +@.str.1465 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1466 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" +@.str.1467 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1468 = private unnamed_addr constant [28 x i8] c"call void @finch_panic(ptr \00" +@.str.1469 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.1470 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1471 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1472 = private unnamed_addr constant [12 x i8] c"unreachable\00" +@.str.1473 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1474 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.1475 = private unnamed_addr constant [6 x i8] c"range\00" +@.str.1476 = private unnamed_addr constant [8 x i8] c"inrange\00" +@.str.1477 = private unnamed_addr constant [14 x i8] c"icmp uge i64 \00" +@.str.1478 = private unnamed_addr constant [3 x i8] c", \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.1480 = private unnamed_addr constant [30 x i8] c"used .files 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.1482 = private unnamed_addr constant [34 x i8] c"call void @finch_panic_index(ptr \00" +@.str.1483 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.1484 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.1485 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.1486 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1487 = private unnamed_addr constant [12 x i8] c"unreachable\00" +@.str.1488 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1489 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.1490 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1491 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" +@.str.1492 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1493 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" +@.str.1494 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1495 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" +@.str.1496 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1497 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.1498 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1499 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" +@.str.1500 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1501 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" +@.str.1502 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1503 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\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.1506 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1507 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\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.1509 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.1510 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1511 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.1512 = private unnamed_addr constant [11 x i8] c" {\0Aentry:\0A\00" +@.str.1513 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1514 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" +@.str.1515 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.1516 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.1517 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1518 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" +@.str.1519 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.1520 = private unnamed_addr constant [4 x i8] c"\0A}\0A\00" +@.str.1521 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1522 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" +@.str.1523 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1524 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" +@.str.1525 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1526 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" +@.str.1527 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1528 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.1529 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1530 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\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.1532 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.1533 = private unnamed_addr constant [2 x i8] c"0\00" +@.str.1534 = private unnamed_addr constant [7 x i8] c"n.cond\00" +@.str.1535 = private unnamed_addr constant [7 x i8] c"n.body\00" +@.str.1536 = private unnamed_addr constant [6 x i8] c"n.end\00" +@.str.1537 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.1538 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" +@.str.1539 = private unnamed_addr constant [3 x i8] c", \00" +@.str.1540 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.1541 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1542 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.1543 = private unnamed_addr constant [9 x i8] c"add i64 \00" +@.str.1544 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str.1545 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1546 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1547 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1548 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.1549 = private unnamed_addr constant [31 x i8] c"call void @finch_str_copy(ptr \00" +@.str.1550 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1551 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1552 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.1553 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.1554 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.1555 = private unnamed_addr constant [11 x i8] c"call void \00" +@.str.1556 = private unnamed_addr constant [6 x i8] c"(ptr \00" +@.str.1557 = private unnamed_addr constant [7 x i8] c", ptr \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 [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.1559 = private unnamed_addr constant [13 x i8] c"@finch.copy.\00" +@.str.1560 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1561 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" +@.str.1562 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1563 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" +@.str.1564 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.1565 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1566 = private unnamed_addr constant [56 x i8] c"call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 \00" +@.str.1567 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1568 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.1569 = private unnamed_addr constant [5 x i8] c"%dst\00" +@.str.1570 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.1571 = private unnamed_addr constant [5 x i8] c"%src\00" +@.str.1572 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.1573 = private unnamed_addr constant [65 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1\00" +@.str.1574 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.1575 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1576 = private unnamed_addr constant [7 x i8] c", i64 \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.1578 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.1579 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1580 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.1581 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1582 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.1583 = private unnamed_addr constant [56 x i8] c"call void @finch_map_clone_raw(ptr %dst, ptr %src, i64 \00" +@.str.1584 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1585 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1586 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1587 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.1588 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.1589 = private unnamed_addr constant [25 x i8] c", ptr %src, i32 0, i32 2\00" +@.str.1590 = private unnamed_addr constant [5 x i8] c"%src\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"%dst\00" @.str.1593 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.1594 = private unnamed_addr constant [11 x i8] c"entry.live\00" +@.str.1595 = private unnamed_addr constant [11 x i8] c"entry.next\00" +@.str.1596 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00" +@.str.1597 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.1598 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.1599 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1600 = private unnamed_addr constant [15 x i8] c", i32 0, i32 0\00" +@.str.1601 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.1602 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.1604 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1605 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\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.1607 = private unnamed_addr constant [5 x i8] c"%src\00" +@.str.1608 = private unnamed_addr constant [5 x i8] c"%dst\00" +@.str.1609 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1610 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.1611 = private unnamed_addr constant [24 x i8] c", ptr %dst, i32 0, i32 \00" +@.str.1612 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1613 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.1614 = private unnamed_addr constant [24 x i8] c", ptr %src, i32 0, i32 \00" +@.str.1615 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1616 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1617 = private unnamed_addr constant [9 x i8] c"ret void\00" +@.str.1618 = private unnamed_addr constant [22 x i8] c"define internal void \00" +@.str.1619 = private unnamed_addr constant [21 x i8] c"(ptr %dst, ptr %src)\00" +@.str.1620 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.1621 = private unnamed_addr constant [31 x i8] c"call void @finch_str_drop(ptr \00" +@.str.1622 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1623 = private unnamed_addr constant [11 x i8] c"call void \00" +@.str.1624 = private unnamed_addr constant [6 x i8] c"(ptr \00" +@.str.1625 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1626 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1627 = private unnamed_addr constant [2 x i8] c"%\00" +@.str.1628 = private unnamed_addr constant [13 x i8] c"@finch.drop.\00" +@.str.1629 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1630 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" +@.str.1631 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1632 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" +@.str.1633 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.1634 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1635 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.1636 = private unnamed_addr constant [3 x i8] c"%a\00" +@.str.1637 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.1638 = private unnamed_addr constant [63 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1\00" +@.str.1639 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.1640 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1641 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.1642 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1643 = private unnamed_addr constant [34 x i8] c"call void @finch_arr_free(ptr %a)\00" +@.str.1644 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.1645 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1646 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1647 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.1648 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.1649 = private unnamed_addr constant [23 x i8] c", ptr %a, i32 0, i32 2\00" +@.str.1650 = private unnamed_addr constant [3 x i8] c"%a\00" +@.str.1651 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1652 = private unnamed_addr constant [11 x i8] c"entry.live\00" +@.str.1653 = private unnamed_addr constant [11 x i8] c"entry.next\00" +@.str.1654 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00" +@.str.1655 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.1656 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.1657 = private unnamed_addr constant [34 x i8] c"call void @finch_map_free(ptr %a)\00" +@.str.1658 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1659 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.1660 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1661 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1662 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.1663 = private unnamed_addr constant [22 x i8] c", ptr %a, i32 0, i32 \00" +@.str.1664 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1665 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1666 = private unnamed_addr constant [9 x i8] c"ret void\00" +@.str.1667 = private unnamed_addr constant [22 x i8] c"define internal void \00" +@.str.1668 = private unnamed_addr constant [9 x i8] c"(ptr %a)\00" +@.str.1669 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1670 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" +@.str.1671 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1672 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" +@.str.1673 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1674 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" +@.str.1675 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1676 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" +@.str.1677 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1678 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1679 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" +@.str.1680 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1681 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" +@.str.1682 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1683 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" +@.str.1684 = private unnamed_addr constant [1 x i8] c"\00" +@.str.1685 = private unnamed_addr constant [3 x i8] c", \00" +@.str.1686 = private unnamed_addr constant [36 x i8] c" = call i32 (ptr, ...) @printf(ptr \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 [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 [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 [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 [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 [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.1688 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00" +@.str.1689 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.1690 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00" +@.str.1691 = private unnamed_addr constant [7 x i8] c", null\00" +@.str.1692 = private unnamed_addr constant [1 x i8] c"\00" +@.str.1693 = private unnamed_addr constant [11 x i8] c"select i1 \00" +@.str.1694 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1695 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1696 = private unnamed_addr constant [5 x i8] c"%lld\00" +@.str.1697 = private unnamed_addr constant [5 x i8] c"i64 \00" +@.str.1698 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.1699 = private unnamed_addr constant [5 x i8] c"%llu\00" +@.str.1700 = private unnamed_addr constant [5 x i8] c"i64 \00" +@.str.1701 = private unnamed_addr constant [4 x i8] c"u64\00" +@.str.1702 = private unnamed_addr constant [3 x i8] c"%g\00" +@.str.1703 = private unnamed_addr constant [8 x i8] c"double \00" +@.str.1704 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.1705 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.1706 = private unnamed_addr constant [9 x i8] c"sext i8 \00" +@.str.1707 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str.1708 = private unnamed_addr constant [5 x i8] c"'%c'\00" +@.str.1709 = private unnamed_addr constant [5 x i8] c"i32 \00" +@.str.1710 = private unnamed_addr constant [3 x i8] c"%c\00" +@.str.1711 = private unnamed_addr constant [5 x i8] c"i32 \00" +@.str.1712 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.1713 = private unnamed_addr constant [5 x i8] c"true\00" +@.str.1714 = private unnamed_addr constant [6 x i8] c"false\00" +@.str.1715 = private unnamed_addr constant [11 x i8] c"select i1 \00" +@.str.1716 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1717 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1718 = private unnamed_addr constant [3 x i8] c"%s\00" +@.str.1719 = private unnamed_addr constant [5 x i8] c"ptr \00" +@.str.1720 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.1721 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00" +@.str.1722 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str.1723 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" +@.str.1724 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str.1725 = private unnamed_addr constant [7 x i8] c"\22%.*s\22\00" +@.str.1726 = private unnamed_addr constant [5 x i8] c"i32 \00" +@.str.1727 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1728 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.1729 = private unnamed_addr constant [5 x i8] c"i32 \00" +@.str.1730 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1731 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.1732 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00" +@.str.1733 = private unnamed_addr constant [7 x i8] c", null\00" +@.str.1734 = private unnamed_addr constant [9 x i8] c"ptr.null\00" +@.str.1735 = private unnamed_addr constant [9 x i8] c"ptr.addr\00" +@.str.1736 = private unnamed_addr constant [9 x i8] c"ptr.done\00" +@.str.1737 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.1738 = private unnamed_addr constant [1 x i8] c"\00" +@.str.1739 = private unnamed_addr constant [7 x i8] c"0x%llx\00" +@.str.1740 = private unnamed_addr constant [5 x i8] c"i64 \00" +@.str.1741 = private unnamed_addr constant [14 x i8] c"ptrtoint ptr \00" +@.str.1742 = private unnamed_addr constant [8 x i8] c" to i64\00" +@.str.1743 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.1744 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.1745 = private unnamed_addr constant [1 x i8] c"\00" +@.str.1746 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.1747 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.1748 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" +@.str.1749 = private unnamed_addr constant [32 x i8] c"call void @finch_buf_print(ptr \00" +@.str.1750 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1751 = private unnamed_addr constant [30 x i8] c"call void @finch_buf_add(ptr \00" +@.str.1752 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1753 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.1754 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1755 = private unnamed_addr constant [2 x i8] c"0\00" +@.str.1756 = private unnamed_addr constant [2 x i8] c"1\00" +@.str.1757 = private unnamed_addr constant [30 x i8] c"call void @finch_buf_int(ptr \00" +@.str.1758 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.1759 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.1760 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1761 = private unnamed_addr constant [31 x i8] c"call void @finch_buf_uint(ptr \00" +@.str.1762 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.1763 = private unnamed_addr constant [4 x i8] c"u64\00" +@.str.1764 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1765 = private unnamed_addr constant [32 x i8] c"call void @finch_buf_float(ptr \00" +@.str.1766 = private unnamed_addr constant [10 x i8] c", double \00" +@.str.1767 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.1768 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1769 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.1770 = private unnamed_addr constant [31 x i8] c"call void @finch_buf_char(ptr \00" +@.str.1771 = private unnamed_addr constant [6 x i8] c", i8 \00" +@.str.1772 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str.1773 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1774 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.1775 = private unnamed_addr constant [31 x i8] c"call void @finch_buf_bool(ptr \00" +@.str.1776 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str.1777 = private unnamed_addr constant [9 x i8] c"zext i1 \00" +@.str.1778 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str.1779 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1780 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.1781 = private unnamed_addr constant [30 x i8] c"call void @finch_buf_str(ptr \00" +@.str.1782 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1783 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str.1784 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1785 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.1786 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.1787 = private unnamed_addr constant [30 x i8] c"call void @finch_buf_ptr(ptr \00" +@.str.1788 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1789 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1790 = private unnamed_addr constant [11 x i8] c"call void \00" +@.str.1791 = private unnamed_addr constant [6 x i8] c"(ptr \00" +@.str.1792 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1793 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1794 = private unnamed_addr constant [15 x i8] c"@finch.format.\00" +@.str.1795 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1796 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" +@.str.1797 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1798 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" +@.str.1799 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.1800 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1801 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.1802 = private unnamed_addr constant [3 x i8] c"%a\00" +@.str.1803 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.1804 = private unnamed_addr constant [63 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1\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 [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 .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 [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.1806 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.1807 = private unnamed_addr constant [4 x i8] c"sep\00" +@.str.1808 = private unnamed_addr constant [5 x i8] c"item\00" +@.str.1809 = private unnamed_addr constant [14 x i8] c"icmp sgt i64 \00" +@.str.1810 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1811 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.1812 = private unnamed_addr constant [5 x i8] c"%buf\00" +@.str.1813 = private unnamed_addr constant [3 x i8] c", \00" +@.str.1814 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.1815 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1816 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.1817 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1818 = private unnamed_addr constant [5 x i8] c"%buf\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 [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.1820 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.1821 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.1822 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1823 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" @.str.1824 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [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.1825 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.1826 = private unnamed_addr constant [3 x i8] c"%a\00" +@.str.1827 = private unnamed_addr constant [11 x i8] c"enum.other\00" +@.str.1828 = private unnamed_addr constant [10 x i8] c"enum.done\00" +@.str.1829 = private unnamed_addr constant [7 x i8] c"enum.v\00" +@.str.1830 = private unnamed_addr constant [5 x i8] c"i32 \00" +@.str.1831 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1832 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str.1833 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1834 = private unnamed_addr constant [12 x i8] c"switch i32 \00" +@.str.1835 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str.1836 = private unnamed_addr constant [4 x i8] c" [ \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.1838 = private unnamed_addr constant [3 x i8] c" ]\00" +@.str.1839 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1840 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.1841 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1842 = private unnamed_addr constant [5 x i8] c"%buf\00" +@.str.1843 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1844 = private unnamed_addr constant [5 x i8] c"%buf\00" +@.str.1845 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.1846 = private unnamed_addr constant [40 x i8] c"call void @finch_buf_int(ptr %buf, i64 \00" +@.str.1847 = private unnamed_addr constant [10 x i8] c"sext i32 \00" +@.str.1848 = private unnamed_addr constant [8 x i8] c" to i64\00" +@.str.1849 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1850 = private unnamed_addr constant [5 x i8] c"%buf\00" +@.str.1851 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1852 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.1853 = private unnamed_addr constant [3 x i8] c"i1\00" +@.str.1854 = private unnamed_addr constant [3 x i8] c"i1\00" +@.str.1855 = private unnamed_addr constant [5 x i8] c"true\00" +@.str.1856 = private unnamed_addr constant [5 x i8] c"%buf\00" +@.str.1857 = private unnamed_addr constant [2 x i8] c"{\00" +@.str.1858 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.1859 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.1860 = private unnamed_addr constant [23 x i8] c", ptr %a, i32 0, i32 2\00" +@.str.1861 = private unnamed_addr constant [3 x i8] c"%a\00" +@.str.1862 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1863 = private unnamed_addr constant [11 x i8] c"entry.live\00" +@.str.1864 = private unnamed_addr constant [11 x i8] c"entry.next\00" +@.str.1865 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00" +@.str.1866 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.1867 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.1868 = private unnamed_addr constant [4 x i8] c"sep\00" +@.str.1869 = private unnamed_addr constant [5 x i8] c"item\00" +@.str.1870 = private unnamed_addr constant [3 x i8] c"i1\00" +@.str.1871 = private unnamed_addr constant [5 x i8] c"%buf\00" +@.str.1872 = private unnamed_addr constant [3 x i8] c", \00" +@.str.1873 = private unnamed_addr constant [3 x i8] c"i1\00" +@.str.1874 = private unnamed_addr constant [6 x i8] c"false\00" +@.str.1875 = private unnamed_addr constant [5 x i8] c"%buf\00" +@.str.1876 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 .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 [31 x i8] c"used .scopes on a null pointer\00" +@.str.1878 = private unnamed_addr constant [5 x i8] c"%buf\00" +@.str.1879 = private unnamed_addr constant [3 x i8] c": \00" +@.str.1880 = private unnamed_addr constant [5 x i8] c"%buf\00" @.str.1881 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 .scopes on a null pointer\00" -@.str.1886 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1882 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1883 = private unnamed_addr constant [5 x i8] c"%buf\00" +@.str.1884 = private unnamed_addr constant [2 x i8] c"}\00" +@.str.1885 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1886 = private unnamed_addr constant [32 x i8] c"used .structs 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 [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.1888 = private unnamed_addr constant [5 x i8] c"%buf\00" +@.str.1889 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.1890 = private unnamed_addr constant [3 x i8] c", \00" +@.str.1891 = private unnamed_addr constant [1 x i8] c"\00" +@.str.1892 = private unnamed_addr constant [5 x i8] c"%buf\00" @.str.1893 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.1894 = private unnamed_addr constant [3 x i8] c": \00" +@.str.1895 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.1896 = private unnamed_addr constant [22 x i8] c", ptr %a, i32 0, i32 \00" +@.str.1897 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1898 = private unnamed_addr constant [5 x i8] c"%buf\00" @.str.1899 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [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 [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 [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 [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.1901 = private unnamed_addr constant [5 x i8] c"%buf\00" +@.str.1902 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1903 = private unnamed_addr constant [9 x i8] c"ret void\00" +@.str.1904 = private unnamed_addr constant [22 x i8] c"define internal void \00" +@.str.1905 = private unnamed_addr constant [19 x i8] c"(ptr %buf, ptr %a)\00" +@.str.1906 = private unnamed_addr constant [7 x i8] c"trunc \00" +@.str.1907 = private unnamed_addr constant [2 x i8] c" \00" +@.str.1908 = private unnamed_addr constant [5 x i8] c" to \00" +@.str.1909 = private unnamed_addr constant [6 x i8] c"sext \00" +@.str.1910 = private unnamed_addr constant [2 x i8] c" \00" +@.str.1911 = private unnamed_addr constant [5 x i8] c" to \00" +@.str.1912 = private unnamed_addr constant [6 x i8] c"zext \00" +@.str.1913 = private unnamed_addr constant [2 x i8] c" \00" +@.str.1914 = private unnamed_addr constant [5 x i8] c" to \00" +@.str.1915 = private unnamed_addr constant [7 x i8] c"fpext \00" +@.str.1916 = private unnamed_addr constant [2 x i8] c" \00" +@.str.1917 = private unnamed_addr constant [5 x i8] c" to \00" +@.str.1918 = private unnamed_addr constant [9 x i8] c"fptrunc \00" +@.str.1919 = private unnamed_addr constant [2 x i8] c" \00" +@.str.1920 = private unnamed_addr constant [5 x i8] c" to \00" +@.str.1921 = private unnamed_addr constant [8 x i8] c"sitofp \00" +@.str.1922 = private unnamed_addr constant [2 x i8] c" \00" +@.str.1923 = private unnamed_addr constant [5 x i8] c" to \00" +@.str.1924 = private unnamed_addr constant [8 x i8] c"uitofp \00" +@.str.1925 = private unnamed_addr constant [2 x i8] c" \00" +@.str.1926 = private unnamed_addr constant [5 x i8] c" to \00" +@.str.1927 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.1928 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.1929 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.1930 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.1931 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.1932 = private unnamed_addr constant [12 x i8] c"the number \00" +@.str.1933 = private unnamed_addr constant [17 x i8] c" doesn't fit in \00" +@.str.1934 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.1935 = private unnamed_addr constant [3 x i8] c".0\00" +@.str.1936 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.1937 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.1938 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.1939 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.1940 = private unnamed_addr constant [10 x i8] c" must be \00" +@.str.1941 = private unnamed_addr constant [15 x i8] c", but this is \00" +@.str.1942 = private unnamed_addr constant [7 x i8] c" (use \00" +@.str.1943 = private unnamed_addr constant [17 x i8] c"(...) to convert\00" +@.str.1944 = private unnamed_addr constant [27 x i8] c", it cuts off the fraction\00" +@.str.1945 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1946 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.1947 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.1948 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.1949 = private unnamed_addr constant [35 x i8] c" (turn it into text with str(...))\00" +@.str.1950 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1951 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.1952 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1953 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\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 .scopes on a null pointer\00" +@.str.1956 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1957 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1958 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\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.1960 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.1962 = private unnamed_addr constant [32 x i8] c"used .deferOn 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 [30 x i8] c"used .nvars on a null pointer\00" +@.str.1964 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.1965 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.1966 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.1967 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1968 = private unnamed_addr constant [35 x i8] c"used .deferLimit on a null pointer\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.1970 = private unnamed_addr constant [31 x i8] c"used .scopes 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 [30 x i8] c"used .progs on a null pointer\00" +@.str.1972 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1973 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1974 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.1975 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1976 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.1977 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.1979 = private unnamed_addr constant [29 x i8] c"used .sigs 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.1982 = private unnamed_addr constant [29 x i8] c"used .sigs 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 [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.1985 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.1986 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1987 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.1988 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.1989 = 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.1990 = private unnamed_addr constant [29 x i8] c"used .sigs 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 [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 [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 [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 [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 [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 [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 [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 [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 [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 [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 [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 [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 [31 x i8] c"used .scopes on a null pointer\00" +@.str.1992 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1993 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.1994 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1995 = private unnamed_addr constant [6 x i8] c"print\00" +@.str.1996 = private unnamed_addr constant [5 x i8] c"addr\00" +@.str.1997 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.1998 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.1999 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.2000 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.2001 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.2002 = private unnamed_addr constant [10 x i8] c"read_file\00" +@.str.2003 = private unnamed_addr constant [11 x i8] c"write_file\00" +@.str.2004 = private unnamed_addr constant [12 x i8] c"file_exists\00" +@.str.2005 = private unnamed_addr constant [6 x i8] c"shell\00" +@.str.2006 = private unnamed_addr constant [5 x i8] c"exit\00" +@.str.2007 = private unnamed_addr constant [6 x i8] c"input\00" +@.str.2008 = private unnamed_addr constant [4 x i8] c"new\00" +@.str.2009 = private unnamed_addr constant [5 x i8] c"free\00" +@.str.2010 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.2011 = private unnamed_addr constant [12 x i8] c"delete_file\00" +@.str.2012 = private unnamed_addr constant [3 x i8] c"i8\00" +@.str.2013 = private unnamed_addr constant [4 x i8] c"i16\00" +@.str.2014 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.2015 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.2016 = private unnamed_addr constant [3 x i8] c"u8\00" +@.str.2017 = private unnamed_addr constant [4 x i8] c"u16\00" +@.str.2018 = private unnamed_addr constant [4 x i8] c"u32\00" +@.str.2019 = private unnamed_addr constant [4 x i8] c"u64\00" +@.str.2020 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.2021 = private unnamed_addr constant [4 x i8] c"f64\00" +@.str.2022 = private unnamed_addr constant [6 x i8] c"error\00" +@.str.2023 = private unnamed_addr constant [4 x i8] c"err\00" +@.str.2024 = private unnamed_addr constant [19 x i8] c"a variable named '\00" +@.str.2025 = private unnamed_addr constant [22 x i8] c"' already exists here\00" +@.str.2026 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2027 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2028 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.2029 = private unnamed_addr constant [36 x i8] c"' is already the name of a function\00" +@.str.2030 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.2031 = private unnamed_addr constant [39 x i8] c"' is a built-in name, pick another one\00" +@.str.2032 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2033 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.2034 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2035 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.2036 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [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.2040 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2041 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.2042 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 .nvars 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 [30 x i8] c"used .files 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 [30 x i8] c"used .nvars on a null pointer\00" +@.str.2050 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2051 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" +@.str.2052 = private unnamed_addr constant [4 x i8] c"err\00" +@.str.2053 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2054 = private unnamed_addr constant [2 x i8] c"$\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.2056 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" @.str.2057 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2058 = private unnamed_addr constant [27 x i8] c"used .mm on a null pointer\00" +@.str.2058 = private unnamed_addr constant [28 x i8] c"used .cur 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 [5 x i8] c"call\00" -@.str.2061 = private unnamed_addr constant [5 x i8] c"addr\00" +@.str.2060 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2061 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\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 [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.2064 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" +@.str.2065 = private unnamed_addr constant [4 x i8] c"@V\09\00" +@.str.2066 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.2067 = private unnamed_addr constant [2 x i8] c"\09\00" @.str.2068 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2069 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2069 = private unnamed_addr constant [30 x i8] c"used .files 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 [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 [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.2071 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.2072 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.2073 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.2074 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2075 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\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 [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.2077 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.2078 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.2079 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" +@.str.2080 = private unnamed_addr constant [2 x i8] c" \00" +@.str.2081 = private unnamed_addr constant [5 x i8] c"\0A```\00" +@.str.2082 = private unnamed_addr constant [1 x i8] c"\00" +@.str.2083 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2084 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.2085 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2086 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.2087 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2088 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.2089 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2090 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.2091 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2092 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" +@.str.2093 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2094 = private unnamed_addr constant [31 x i8] c"used .scopes 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 [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.2097 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.2098 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.2100 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2101 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\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.2103 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.2105 = private unnamed_addr constant [32 x i8] c"used .deferOn on a null pointer\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.2107 = private unnamed_addr constant [35 x i8] c"used .deferLimit 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 .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.2109 = private unnamed_addr constant [32 x i8] c"used .deferOn 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 [31 x i8] c"used .scopes on a null pointer\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.2113 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2114 = 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.2115 = private unnamed_addr constant [35 x i8] c"used .deferLimit 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 [32 x i8] c"used .inDefer 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 [31 x i8] c"used .scopes 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 [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.2122 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2123 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" +@.str.2124 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2125 = private unnamed_addr constant [32 x i8] c"used .deferOn 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 [35 x i8] c"used .deferLimit on a null pointer\00" @.str.2128 = 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 [32 x i8] c"used .structs on a null pointer\00" +@.str.2129 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.2130 = private unnamed_addr constant [4 x i8] c"var\00" +@.str.2131 = private unnamed_addr constant [7 x i8] c"member\00" +@.str.2132 = private unnamed_addr constant [6 x i8] c"index\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 .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 [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 [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.2134 = private unnamed_addr constant [1 x i8] c"\00" +@.str.2135 = private unnamed_addr constant [5 x i8] c"push\00" +@.str.2136 = private unnamed_addr constant [4 x i8] c"pop\00" +@.str.2137 = private unnamed_addr constant [7 x i8] c"insert\00" +@.str.2138 = private unnamed_addr constant [7 x i8] c"remove\00" +@.str.2139 = private unnamed_addr constant [6 x i8] c"clear\00" +@.str.2140 = private unnamed_addr constant [7 x i8] c"resize\00" +@.str.2141 = private unnamed_addr constant [5 x i8] c"sort\00" +@.str.2142 = private unnamed_addr constant [8 x i8] c"reverse\00" +@.str.2143 = private unnamed_addr constant [7 x i8] c"assign\00" +@.str.2144 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2145 = private unnamed_addr constant [7 x i8] c"method\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 [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.2147 = private unnamed_addr constant [27 x i8] c"used .mm on a null pointer\00" +@.str.2148 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2149 = private unnamed_addr constant [5 x i8] c"call\00" +@.str.2150 = private unnamed_addr constant [5 x i8] c"addr\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.2152 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2153 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.2154 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2155 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" @.str.2156 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [31 x i8] c"used .module on a null pointer\00" +@.str.2157 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2158 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2159 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2160 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.2161 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2162 = 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.2163 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.2164 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2165 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2166 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2167 = private unnamed_addr constant [31 x i8] c"used .module 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 [31 x i8] c"used .module on a null pointer\00" +@.str.2170 = private unnamed_addr constant [1 x i8] c"\00" +@.str.2171 = private unnamed_addr constant [13 x i8] c"the struct '\00" +@.str.2172 = private unnamed_addr constant [19 x i8] c"' is defined twice\00" +@.str.2173 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2174 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" +@.str.2175 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2176 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" @.str.2177 = 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.2180 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2181 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2182 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\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 [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 [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 [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 [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 [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.2184 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.2185 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2186 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2187 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2188 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2189 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.2190 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2191 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2192 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.2193 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2194 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2195 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2196 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2197 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2198 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2199 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.2200 = private unnamed_addr constant [19 x i8] c"' is defined twice\00" +@.str.2201 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2202 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2203 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2204 = private unnamed_addr constant [10 x i8] c"the enum \00" +@.str.2205 = private unnamed_addr constant [18 x i8] c" has the variant \00" +@.str.2206 = private unnamed_addr constant [7 x i8] c" twice\00" +@.str.2207 = private unnamed_addr constant [17 x i8] c"two variants of \00" +@.str.2208 = private unnamed_addr constant [18 x i8] c" have the number \00" +@.str.2209 = private unnamed_addr constant [21 x i8] c" (give each its own)\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.2211 = private unnamed_addr constant [30 x i8] c"used .enums 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.2213 = private unnamed_addr constant [27 x i8] c"used .ci 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 [29 x i8] c"used .sigs on a null pointer\00" +@.str.2215 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2216 = private unnamed_addr constant [2 x i8] c"C\00" @.str.2217 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.2218 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" +@.str.2219 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.2221 = private unnamed_addr constant [32 x i8] c"used .structs 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.2223 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" @.str.2224 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2225 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.2225 = private unnamed_addr constant [30 x i8] c"used .progs 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 [5 x i8] c"self\00" +@.str.2228 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\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 [29 x i8] c"used .sigs on a null pointer\00" +@.str.2230 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.2231 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2232 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.2233 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.2234 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2235 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [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.2236 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2237 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2238 = private unnamed_addr constant [11 x i8] c"function '\00" +@.str.2239 = private unnamed_addr constant [19 x i8] c"' is defined twice\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 [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.2241 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2242 = private unnamed_addr constant [1 x i8] c"\00" +@.str.2243 = private unnamed_addr constant [35 x i8] c"there is no generic struct named '\00" +@.str.2244 = private unnamed_addr constant [54 x i8] c"' here (a method goes in the same file as its struct)\00" @.str.2245 = 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.2246 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" +@.str.2247 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2248 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\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.2250 = private unnamed_addr constant [31 x i8] c"used .module 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 [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.2252 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2253 = private unnamed_addr constant [12 x i8] c"the method \00" +@.str.2254 = private unnamed_addr constant [2 x i8] c".\00" +@.str.2255 = private unnamed_addr constant [18 x i8] c" is defined twice\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 [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 [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.2257 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2258 = private unnamed_addr constant [2 x i8] c"C\00" +@.str.2259 = private unnamed_addr constant [2 x i8] c"C\00" +@.str.2260 = private unnamed_addr constant [2 x i8] c"C\00" +@.str.2261 = private unnamed_addr constant [27 x i8] c"there is no struct named '\00" +@.str.2262 = 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.2263 = private unnamed_addr constant [12 x i8] c"the method \00" +@.str.2264 = private unnamed_addr constant [2 x i8] c".\00" +@.str.2265 = private unnamed_addr constant [18 x i8] c" is defined twice\00" @.str.2266 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [29 x i8] c"used .sigs on a null pointer\00" +@.str.2267 = private unnamed_addr constant [32 x i8] c"used .structs 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 [12 x i8] c"the struct \00" +@.str.2270 = private unnamed_addr constant [29 x i8] c" already has a field named '\00" +@.str.2271 = private unnamed_addr constant [2 x i8] c"'\00" @.str.2272 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [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 [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.2273 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2274 = private unnamed_addr constant [11 x i8] c"function '\00" +@.str.2275 = private unnamed_addr constant [19 x i8] c"' is defined twice\00" +@.str.2276 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.2277 = private unnamed_addr constant [44 x i8] c"' is a built-in function, pick another name\00" +@.str.2278 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2279 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2280 = private unnamed_addr constant [8 x i8] c"@finch.\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 [34 x i8] c"used .templates on a null pointer\00" +@.str.2282 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2283 = private unnamed_addr constant [2 x i8] c".\00" +@.str.2284 = private unnamed_addr constant [8 x i8] c"@finch.\00" @.str.2285 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.2286 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2287 = private unnamed_addr constant [2 x i8] c".\00" +@.str.2288 = private unnamed_addr constant [2 x i8] c".\00" +@.str.2289 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2290 = private unnamed_addr constant [5 x i8] c"self\00" @.str.2291 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [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.2292 = private unnamed_addr constant [23 x i8] c"'self' is already the \00" +@.str.2293 = private unnamed_addr constant [25 x i8] c" the method is called on\00" +@.str.2294 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2295 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2296 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2297 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2298 = private unnamed_addr constant [29 x i8] c"used .sigs 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 [29 x i8] c"used .sigs on a null pointer\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.2302 = private unnamed_addr constant [29 x i8] c"used .sigs 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 [32 x i8] c"used .structs on a null pointer\00" -@.str.2305 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.2304 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2305 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\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.2307 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2308 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.2309 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2310 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\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.2312 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [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.2314 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.2315 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2316 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2317 = private unnamed_addr constant [5 x i8] c"self\00" +@.str.2318 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2319 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2320 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\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 [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 [31 x i8] c"used .module on a null pointer\00" +@.str.2322 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2323 = private unnamed_addr constant [27 x i8] c"used .mm on a null pointer\00" +@.str.2324 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2325 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.2326 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.2328 = private unnamed_addr constant [34 x i8] c"used .templates 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 [31 x i8] c"used .tnames on a null pointer\00" +@.str.2330 = private unnamed_addr constant [34 x i8] c"used .templates 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 [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.2332 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2333 = private unnamed_addr constant [30 x i8] c"used .progs 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 [5 x i8] c"self\00" @.str.2337 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.2338 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2339 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" @.str.2340 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.2342 = private unnamed_addr constant [27 x i8] c"used .mm on a null pointer\00" @.str.2343 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [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 [31 x i8] c"used .module on a null pointer\00" +@.str.2344 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.2345 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2346 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.2347 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2348 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.2349 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2350 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [29 x i8] c"used .sigs on a null pointer\00" +@.str.2351 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2352 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.2353 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.2355 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2356 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2357 = private unnamed_addr constant [29 x i8] c"used .sigs 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 [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.2360 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.2361 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2362 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.2364 = private unnamed_addr constant [29 x i8] c"used .sigs 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.2366 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2367 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.2368 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.2371 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" +@.str.2372 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2373 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\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.2375 = private unnamed_addr constant [3 x i8] c", \00" +@.str.2376 = private unnamed_addr constant [1 x i8] c"\00" +@.str.2377 = private unnamed_addr constant [35 x i8] c"there is no generic struct named '\00" +@.str.2378 = private unnamed_addr constant [29 x i8] c"' (a struct written struct \00" +@.str.2379 = private unnamed_addr constant [35 x i8] c"[T] { ... } takes type arguments)\00" +@.str.2380 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2381 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" @.str.2382 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.2383 = private unnamed_addr constant [8 x i8] c" takes \00" +@.str.2384 = private unnamed_addr constant [25 x i8] c" type argument(s), like \00" +@.str.2385 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.2386 = private unnamed_addr constant [3 x i8] c", \00" +@.str.2387 = private unnamed_addr constant [12 x i8] c"], but got \00" +@.str.2388 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.2389 = private unnamed_addr constant [2 x i8] c"]\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.2391 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2392 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2393 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2394 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.2395 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2396 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\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.2398 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.2399 = private unnamed_addr constant [2 x i8] c"]\00" @.str.2400 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [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.2401 = private unnamed_addr constant [30 x i8] c"used .progs 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 [8 x i8] c"@finch.\00" +@.str.2405 = private unnamed_addr constant [2 x i8] c".\00" +@.str.2406 = private unnamed_addr constant [2 x i8] c".\00" +@.str.2407 = private unnamed_addr constant [8 x i8] c"@finch.\00" +@.str.2408 = private unnamed_addr constant [2 x i8] c".\00" +@.str.2409 = private unnamed_addr constant [2 x i8] c".\00" +@.str.2410 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2411 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" +@.str.2412 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2413 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\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.2415 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\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.2417 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\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.2419 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\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.2421 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\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 [32 x i8] c"used .structs on a null pointer\00" +@.str.2423 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2424 = private unnamed_addr constant [18 x i8] c" (while building \00" +@.str.2425 = private unnamed_addr constant [2 x i8] c")\00" @.str.2426 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2427 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2427 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" @.str.2428 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2429 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2429 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2430 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.2431 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2432 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2433 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2434 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" +@.str.2435 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2436 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\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.2438 = private unnamed_addr constant [31 x i8] c"used .module 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.2440 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" +@.str.2441 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2442 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\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.2444 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.2445 = private unnamed_addr constant [6 x i8] c"named\00" +@.str.2446 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2447 = private unnamed_addr constant [30 x i8] c"used .bound on a null pointer\00" @.str.2448 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.2449 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2450 = private unnamed_addr constant [30 x i8] c"used .types on a null pointer\00" +@.str.2451 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2452 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2453 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2453 = private unnamed_addr constant [30 x i8] c"used .bound 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.2455 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.2456 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.2457 = private unnamed_addr constant [6 x i8] c"fixed\00" @.str.2458 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.2459 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2460 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.2461 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.2462 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2463 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.2465 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2466 = private unnamed_addr constant [6 x i8] c"named\00" +@.str.2467 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.2468 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2469 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\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.2471 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.2474 = private unnamed_addr constant [34 x i8] c"used .templates 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 [32 x i8] c"used .structs on a null pointer\00" +@.str.2477 = private unnamed_addr constant [30 x i8] c"used .progs 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 [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.2480 = private unnamed_addr constant [8 x i8] c" takes \00" +@.str.2481 = private unnamed_addr constant [28 x i8] c" type argument(s), but got \00" +@.str.2482 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.2483 = private unnamed_addr constant [1 x i8] c"\00" +@.str.2484 = private unnamed_addr constant [1 x i8] c"\00" +@.str.2485 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.2486 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2487 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\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 [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.2489 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.2490 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.2491 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2492 = private unnamed_addr constant [30 x i8] c"this has no type to work out \00" +@.str.2493 = private unnamed_addr constant [3 x i8] c", \00" +@.str.2494 = private unnamed_addr constant [6 x i8] c" from\00" +@.str.2495 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2496 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2497 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2497 = private unnamed_addr constant [17 x i8] c"can't tell what \00" @.str.2498 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [33 x i8] c"used .instNote on a null pointer\00" +@.str.2499 = private unnamed_addr constant [25 x i8] c" is here; write it out: \00" +@.str.2500 = private unnamed_addr constant [11 x i8] c"[int](...)\00" +@.str.2501 = private unnamed_addr constant [5 x i8] c"void\00" @.str.2502 = 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.2503 = private unnamed_addr constant [29 x i8] c"used .sigs 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.2505 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2506 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.2507 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2508 = private unnamed_addr constant [11 x i8] c"argument '\00" +@.str.2509 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2510 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.2511 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2512 = private unnamed_addr constant [2 x i8] c" \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 [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.2514 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" +@.str.2515 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2516 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\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.2519 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2520 = private unnamed_addr constant [32 x i8] c"used .structs 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 [7 x i8] c"struct\00" +@.str.2523 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.2524 = private unnamed_addr constant [7 x i8] c" x i8]\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 .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 .module on a null pointer\00" +@.str.2529 = private unnamed_addr constant [32 x i8] c"used .structs 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.2531 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2532 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" @.str.2533 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.2534 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2535 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\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.2537 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.2538 = private unnamed_addr constant [7 x i8] c" x i8]\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 .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 [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.2542 = private unnamed_addr constant [50 x i8] c"has fields Finch can't see (unions or bit fields)\00" +@.str.2543 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2544 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" @.str.2545 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.2546 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2547 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\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 .structs on a null pointer\00" -@.str.2550 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2549 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2550 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\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 .structs on a null pointer\00" +@.str.2552 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2553 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2554 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2555 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.2556 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00" +@.str.2557 = private unnamed_addr constant [6 x i8] c"%S.C.\00" +@.str.2558 = private unnamed_addr constant [11 x i8] c" = type { \00" +@.str.2559 = private unnamed_addr constant [3 x i8] c", \00" +@.str.2560 = private unnamed_addr constant [3 x i8] c" }\00" @.str.2561 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2562 = private unnamed_addr constant [2 x i8] c".\00" +@.str.2562 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\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.2564 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2565 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2566 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2567 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2568 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\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.2570 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2571 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" +@.str.2572 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2573 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" +@.str.2574 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2575 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" +@.str.2576 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2577 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2578 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2579 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2580 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" +@.str.2581 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2582 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2583 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2584 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2585 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" +@.str.2586 = private unnamed_addr constant [18 x i8] c" (while building \00" +@.str.2587 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2588 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2589 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2590 = private unnamed_addr constant [2 x i8] c")\00" @.str.2591 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2592 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.2592 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\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.2594 = private unnamed_addr constant [31 x i8] c"used .tnames 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.2596 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" +@.str.2597 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2598 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" +@.str.2599 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2600 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.2601 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2602 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2603 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2604 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2605 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2606 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2607 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2608 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2609 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2610 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\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.2612 = private unnamed_addr constant [12 x i8] c"the struct \00" +@.str.2613 = private unnamed_addr constant [27 x i8] c" contains itself; use ptr[\00" +@.str.2614 = private unnamed_addr constant [8 x i8] c"] or []\00" +@.str.2615 = private unnamed_addr constant [16 x i8] c" for that field\00" @.str.2616 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2617 = private unnamed_addr constant [32 x i8] c"used .mdfiles on a null pointer\00" +@.str.2617 = private unnamed_addr constant [32 x i8] c"used .structs 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 [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 [30 x i8] c"used .enums on a null pointer\00" +@.str.2619 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2620 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2621 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2622 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2623 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2624 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2625 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2626 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.2627 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2628 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2629 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2630 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2631 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2632 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2633 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2634 = private unnamed_addr constant [32 x i8] c"used .structs 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 [12 x i8] c"src/gen.fch\00" +@.str.2637 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2638 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2639 = 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.2640 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\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 [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 [32 x i8] c"used .mdcache on a null pointer\00" -@.str.2653 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.2642 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2643 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2644 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2645 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2646 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2647 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2648 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00" +@.str.2649 = private unnamed_addr constant [4 x i8] c"%S.\00" +@.str.2650 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2651 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2652 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2653 = private unnamed_addr constant [2 x i8] c".\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 [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 [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 [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 [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 [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 [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 [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 [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 [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.2655 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2656 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2657 = private unnamed_addr constant [11 x i8] c" = type { \00" +@.str.2658 = private unnamed_addr constant [3 x i8] c", \00" +@.str.2659 = private unnamed_addr constant [3 x i8] c" }\00" +@.str.2660 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2661 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" +@.str.2662 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2663 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" +@.str.2664 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.2665 = private unnamed_addr constant [2 x i8] c"!\00" +@.str.2666 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2667 = private unnamed_addr constant [17 x i8] c"division by zero\00" +@.str.2668 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.2669 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.2670 = private unnamed_addr constant [3 x i8] c"i8\00" +@.str.2671 = private unnamed_addr constant [3 x i8] c"u8\00" +@.str.2672 = private unnamed_addr constant [4 x i8] c"i16\00" +@.str.2673 = private unnamed_addr constant [4 x i8] c"u16\00" +@.str.2674 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.2675 = private unnamed_addr constant [4 x i8] c"u32\00" +@.str.2676 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.2677 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.2678 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.2679 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.2680 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.2681 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str.2682 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2683 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.2684 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2685 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2686 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2687 = private unnamed_addr constant [43 x i8] c"!DIDerivedType(tag: DW_TAG_member, name: \22\00" +@.str.2688 = private unnamed_addr constant [12 x i8] c"\22, scope: !\00" +@.str.2689 = private unnamed_addr constant [10 x i8] c", file: !\00" +@.str.2690 = private unnamed_addr constant [9 x i8] c", line: \00" +@.str.2691 = private unnamed_addr constant [13 x i8] c", baseType: \00" +@.str.2692 = private unnamed_addr constant [9 x i8] c", size: \00" +@.str.2693 = private unnamed_addr constant [11 x i8] c", offset: \00" +@.str.2694 = private unnamed_addr constant [2 x i8] c")\00" +@.str.2695 = private unnamed_addr constant [21 x i8] c"!DIBasicType(name: \22\00" +@.str.2696 = private unnamed_addr constant [10 x i8] c"\22, size: \00" +@.str.2697 = private unnamed_addr constant [13 x i8] c", encoding: \00" +@.str.2698 = private unnamed_addr constant [2 x i8] c")\00" +@.str.2699 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.2700 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.2701 = private unnamed_addr constant [3 x i8] c"T:\00" +@.str.2702 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2703 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" +@.str.2704 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2705 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" +@.str.2706 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2707 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2708 = private unnamed_addr constant [32 x i8] c"used .mdfiles on a null pointer\00" @.str.2709 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [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 [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.2710 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.2711 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.2712 = private unnamed_addr constant [15 x i8] c"DW_ATE_boolean\00" +@.str.2713 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.2714 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.2715 = private unnamed_addr constant [19 x i8] c"DW_ATE_signed_char\00" +@.str.2716 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.2717 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.2718 = private unnamed_addr constant [14 x i8] c"DW_ATE_signed\00" +@.str.2719 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.2720 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.2721 = private unnamed_addr constant [13 x i8] c"DW_ATE_float\00" +@.str.2722 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.2723 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.2724 = private unnamed_addr constant [13 x i8] c"DW_ATE_float\00" +@.str.2725 = private unnamed_addr constant [16 x i8] c"DW_ATE_unsigned\00" +@.str.2726 = private unnamed_addr constant [14 x i8] c"DW_ATE_signed\00" +@.str.2727 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.2728 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2729 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" +@.str.2730 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2731 = private unnamed_addr constant [22 x i8] c"!DIEnumerator(name: \22\00" @.str.2732 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2733 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" +@.str.2733 = private unnamed_addr constant [11 x i8] c"\22, value: \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 [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 [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 [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.2735 = private unnamed_addr constant [2 x i8] c")\00" +@.str.2736 = private unnamed_addr constant [55 x i8] c"!DICompositeType(tag: DW_TAG_enumeration_type, name: \22\00" +@.str.2737 = private unnamed_addr constant [11 x i8] c"\22, file: !\00" +@.str.2738 = private unnamed_addr constant [25 x i8] c", size: 32, elements: !{\00" +@.str.2739 = private unnamed_addr constant [3 x i8] c", \00" +@.str.2740 = private unnamed_addr constant [3 x i8] c"})\00" +@.str.2741 = private unnamed_addr constant [1 x i8] c"\00" +@.str.2742 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2743 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" +@.str.2744 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.2745 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2746 = private unnamed_addr constant [52 x i8] c"!DIDerivedType(tag: DW_TAG_pointer_type, baseType: \00" +@.str.2747 = private unnamed_addr constant [12 x i8] c", size: 64)\00" @.str.2748 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2749 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" +@.str.2749 = private unnamed_addr constant [27 x i8] c"used .md 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.2751 = private unnamed_addr constant [6 x i8] c"fixed\00" @.str.2752 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [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 [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 [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 [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 [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 [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 [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 [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 [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 [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.2753 = private unnamed_addr constant [20 x i8] c"!DISubrange(count: \00" +@.str.2754 = private unnamed_addr constant [2 x i8] c")\00" +@.str.2755 = private unnamed_addr constant [52 x i8] c"!DICompositeType(tag: DW_TAG_array_type, baseType: \00" +@.str.2756 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2757 = private unnamed_addr constant [9 x i8] c", size: \00" +@.str.2758 = private unnamed_addr constant [16 x i8] c", elements: !{!\00" +@.str.2759 = private unnamed_addr constant [3 x i8] c"})\00" +@.str.2760 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2761 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" +@.str.2762 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2763 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.2764 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.2765 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.2766 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.2767 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2768 = private unnamed_addr constant [52 x i8] c"!DIDerivedType(tag: DW_TAG_pointer_type, baseType: \00" +@.str.2769 = private unnamed_addr constant [12 x i8] c", size: 64)\00" +@.str.2770 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.2771 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.2772 = private unnamed_addr constant [4 x i8] c"len\00" +@.str.2773 = private unnamed_addr constant [4 x i8] c"cap\00" +@.str.2774 = private unnamed_addr constant [53 x i8] c"!DICompositeType(tag: DW_TAG_structure_type, name: \22\00" +@.str.2775 = private unnamed_addr constant [11 x i8] c"\22, file: !\00" +@.str.2776 = private unnamed_addr constant [38 x i8] c", size: 192, align: 64, elements: !{!\00" +@.str.2777 = private unnamed_addr constant [4 x i8] c", !\00" +@.str.2778 = private unnamed_addr constant [4 x i8] c", !\00" +@.str.2779 = private unnamed_addr constant [3 x i8] c"})\00" +@.str.2780 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2781 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" +@.str.2782 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2783 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.2784 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.2785 = private unnamed_addr constant [67 x i8] c"!DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64)\00" +@.str.2786 = private unnamed_addr constant [8 x i8] c"entries\00" +@.str.2787 = private unnamed_addr constant [4 x i8] c"len\00" +@.str.2788 = private unnamed_addr constant [5 x i8] c"used\00" +@.str.2789 = private unnamed_addr constant [4 x i8] c"cap\00" +@.str.2790 = private unnamed_addr constant [6 x i8] c"index\00" +@.str.2791 = private unnamed_addr constant [5 x i8] c"icap\00" +@.str.2792 = private unnamed_addr constant [5 x i8] c"adds\00" +@.str.2793 = private unnamed_addr constant [2 x i8] c"!\00" +@.str.2794 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2795 = private unnamed_addr constant [53 x i8] c"!DICompositeType(tag: DW_TAG_structure_type, name: \22\00" +@.str.2796 = private unnamed_addr constant [11 x i8] c"\22, file: !\00" +@.str.2797 = private unnamed_addr constant [37 x i8] c", size: 448, align: 64, elements: !{\00" +@.str.2798 = private unnamed_addr constant [3 x i8] c", \00" +@.str.2799 = private unnamed_addr constant [3 x i8] c"})\00" +@.str.2800 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2801 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\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.2803 = private unnamed_addr constant [7 x i8] c"struct\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.2805 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2806 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2807 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2808 = private unnamed_addr constant [2 x i8] c"!\00" +@.str.2809 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2810 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.2812 = private unnamed_addr constant [53 x i8] c"!DICompositeType(tag: DW_TAG_structure_type, name: \22\00" +@.str.2813 = private unnamed_addr constant [11 x i8] c"\22, file: !\00" +@.str.2814 = private unnamed_addr constant [9 x i8] c", size: \00" +@.str.2815 = private unnamed_addr constant [25 x i8] c", align: 8, elements: !{\00" +@.str.2816 = private unnamed_addr constant [3 x i8] c", \00" +@.str.2817 = private unnamed_addr constant [3 x i8] c"})\00" +@.str.2818 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2819 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\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.2821 = private unnamed_addr constant [21 x i8] c"!DIBasicType(name: \22\00" +@.str.2822 = private unnamed_addr constant [40 x i8] c"\22, size: 64, encoding: DW_ATE_unsigned)\00" @.str.2823 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2824 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2824 = private unnamed_addr constant [27 x i8] c"used .md 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.2826 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2827 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" +@.str.2828 = private unnamed_addr constant [3 x i8] c"L:\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.2830 = private unnamed_addr constant [32 x i8] c"used .dbgLine on a null pointer\00" +@.str.2831 = private unnamed_addr constant [2 x i8] c":\00" +@.str.2832 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2833 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00" +@.str.2834 = private unnamed_addr constant [2 x i8] c":\00" @.str.2835 = 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 [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.2836 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" +@.str.2837 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2838 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" +@.str.2839 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2840 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" +@.str.2841 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2842 = private unnamed_addr constant [19 x i8] c"!DILocation(line: \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.2844 = private unnamed_addr constant [32 x i8] c"used .dbgLine on a null pointer\00" +@.str.2845 = private unnamed_addr constant [11 x i8] c", column: \00" @.str.2846 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [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.2847 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00" +@.str.2848 = private unnamed_addr constant [11 x i8] c", scope: !\00" +@.str.2849 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2850 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" +@.str.2851 = private unnamed_addr constant [2 x i8] c")\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 [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 [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 [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.2853 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" +@.str.2854 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2855 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2856 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.2857 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2858 = private unnamed_addr constant [32 x i8] c"used .mdfiles on a null pointer\00" +@.str.2859 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2860 = private unnamed_addr constant [28 x i8] c"!DISubroutineType(types: !{\00" +@.str.2861 = private unnamed_addr constant [3 x i8] c", \00" +@.str.2862 = private unnamed_addr constant [3 x i8] c"})\00" +@.str.2863 = private unnamed_addr constant [31 x i8] c"distinct !DISubprogram(name: \22\00" +@.str.2864 = private unnamed_addr constant [18 x i8] c"\22, linkageName: \22\00" +@.str.2865 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2866 = private unnamed_addr constant [12 x i8] c"\22, scope: !\00" +@.str.2867 = private unnamed_addr constant [10 x i8] c", file: !\00" +@.str.2868 = private unnamed_addr constant [9 x i8] c", line: \00" +@.str.2869 = private unnamed_addr constant [10 x i8] c", type: !\00" +@.str.2870 = private unnamed_addr constant [14 x i8] c", scopeLine: \00" +@.str.2871 = private unnamed_addr constant [88 x i8] c", flags: DIFlagPrototyped, spFlags: DISPFlagDefinition | DISPFlagLocalToUnit, unit: !0)\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.2873 = private unnamed_addr constant [30 x i8] c"used .debug 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.2875 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" +@.str.2876 = private unnamed_addr constant [1 x i8] c"\00" +@.str.2877 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2878 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00" +@.str.2879 = private unnamed_addr constant [8 x i8] c", arg: \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.2881 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00" +@.str.2882 = private unnamed_addr constant [25 x i8] c"!DILocalVariable(name: \22\00" +@.str.2883 = private unnamed_addr constant [12 x i8] c"\22, scope: !\00" +@.str.2884 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2885 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" +@.str.2886 = private unnamed_addr constant [10 x i8] c", file: !\00" +@.str.2887 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2888 = private unnamed_addr constant [32 x i8] c"used .mdfiles on a null pointer\00" @.str.2889 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [28 x i8] c"used .cur on a null pointer\00" +@.str.2890 = private unnamed_addr constant [9 x i8] c", line: \00" +@.str.2891 = private unnamed_addr constant [10 x i8] c", type: !\00" +@.str.2892 = private unnamed_addr constant [2 x i8] c")\00" @.str.2893 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2894 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.2894 = private unnamed_addr constant [32 x i8] c"used .dbgLine 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.2896 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00" +@.str.2897 = private unnamed_addr constant [42 x i8] c"call void @llvm.dbg.declare(metadata ptr \00" +@.str.2898 = private unnamed_addr constant [13 x i8] c", metadata !\00" +@.str.2899 = private unnamed_addr constant [28 x i8] c", metadata !DIExpression())\00" +@.str.2900 = private unnamed_addr constant [21 x i8] c"!llvm.dbg.cu = !{!0}\00" +@.str.2901 = private unnamed_addr constant [31 x i8] c"!llvm.module.flags = !{!1, !2}\00" @.str.2902 = 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 [28 x i8] c"used .cur on a null pointer\00" +@.str.2903 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" +@.str.2904 = private unnamed_addr constant [2 x i8] c"!\00" +@.str.2905 = private unnamed_addr constant [4 x i8] c" = \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.2907 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" +@.str.2908 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2909 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.2910 = private unnamed_addr constant [2 x i8] c"\0A\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.2912 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.2913 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.2917 = private unnamed_addr constant [28 x i8] c"used .cur 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.2919 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2920 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2921 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\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.2923 = private unnamed_addr constant [31 x i8] c"used .tnames 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.2925 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2926 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2927 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" +@.str.2928 = private unnamed_addr constant [1 x i8] c"\00" +@.str.2929 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2930 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" +@.str.2931 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2932 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2933 = private unnamed_addr constant [18 x i8] c" (while building \00" @.str.2934 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.2936 = private unnamed_addr constant [2 x i8] c")\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.2938 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" +@.str.2939 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2940 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.2941 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2942 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\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 [28 x i8] c"used .cur on a null pointer\00" -@.str.2950 = private unnamed_addr constant [2 x i8] c" \00" +@.str.2944 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2945 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2946 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2947 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2948 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" +@.str.2949 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2950 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" @.str.2951 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.2952 = private unnamed_addr constant [28 x i8] c"used .tmp 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 [29 x i8] c"used .term on a null pointer\00" +@.str.2955 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2956 = private unnamed_addr constant [30 x i8] c"used .nvars on a null pointer\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.2958 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" +@.str.2959 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2960 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\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.2962 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" +@.str.2963 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2964 = private unnamed_addr constant [32 x i8] c"used .dbgLine on a null pointer\00" @.str.2965 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [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 [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 [12 x i8] c"src/gen.fch\00" +@.str.2966 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00" +@.str.2967 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2968 = private unnamed_addr constant [32 x i8] c"used .deferOn on a null pointer\00" +@.str.2969 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2970 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" +@.str.2971 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2972 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.2973 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2974 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2975 = private unnamed_addr constant [10 x i8] c"ptr %self\00" +@.str.2976 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.2977 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2978 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2979 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.2980 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2981 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2982 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2983 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2984 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2985 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.2986 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2987 = private unnamed_addr constant [5 x i8] c"self\00" +@.str.2988 = private unnamed_addr constant [6 x i8] c"%self\00" +@.str.2989 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2990 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" +@.str.2991 = private unnamed_addr constant [5 x i8] c"self\00" +@.str.2992 = private unnamed_addr constant [6 x i8] c"%self\00" +@.str.2993 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2994 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\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 [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 [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.2996 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2997 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2998 = private unnamed_addr constant [4 x i8] c" %p\00" +@.str.2999 = private unnamed_addr constant [3 x i8] c"%p\00" +@.str.3000 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3001 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3002 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.3004 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00" +@.str.3005 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3006 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3007 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3008 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00" @.str.3009 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [30 x i8] c"used .loops on a null pointer\00" +@.str.3010 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3011 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3012 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.3014 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3015 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.3017 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00" @.str.3018 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.3019 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3020 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\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.3022 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3023 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3024 = private unnamed_addr constant [11 x i8] c"function '\00" +@.str.3025 = private unnamed_addr constant [39 x i8] c"' can reach its end without returning \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 [32 x i8] c"used .structs on a null pointer\00" +@.str.3027 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3028 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3029 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3030 = private unnamed_addr constant [5 x i8] c"ret \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 [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 [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 [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.3032 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3033 = private unnamed_addr constant [54 x i8] c" { i1 true, i8 0, { ptr, i64, i64 } zeroinitializer }\00" +@.str.3034 = private unnamed_addr constant [9 x i8] c"ret void\00" +@.str.3035 = private unnamed_addr constant [1 x i8] c"\00" +@.str.3036 = private unnamed_addr constant [8 x i8] c" !dbg !\00" +@.str.3037 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3038 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" +@.str.3039 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3040 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.3041 = private unnamed_addr constant [17 x i8] c"define internal \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 [2 x i8] c" \00" +@.str.3045 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3046 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3047 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.3048 = private unnamed_addr constant [3 x i8] c", \00" +@.str.3049 = private unnamed_addr constant [2 x i8] c")\00" +@.str.3050 = private unnamed_addr constant [11 x i8] c" {\0Aentry:\0A\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.3052 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" +@.str.3053 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.3054 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.3055 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3056 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" +@.str.3057 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.3058 = private unnamed_addr constant [4 x i8] c"\0A}\0A\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.3061 = private unnamed_addr constant [67 x i8] c"this code can never run (it comes after return, break or continue)\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.3063 = private unnamed_addr constant [32 x i8] c"used .dbgLine on a null pointer\00" +@.str.3064 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3065 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00" +@.str.3066 = private unnamed_addr constant [6 x i8] c"block\00" +@.str.3067 = private unnamed_addr constant [5 x i8] c"decl\00" +@.str.3068 = private unnamed_addr constant [7 x i8] c"assign\00" +@.str.3069 = private unnamed_addr constant [5 x i8] c"expr\00" +@.str.3070 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3071 = private unnamed_addr constant [3 x i8] c"or\00" @.str.3072 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [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 [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.3073 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3074 = private unnamed_addr constant [6 x i8] c"match\00" +@.str.3075 = private unnamed_addr constant [3 x i8] c"if\00" +@.str.3076 = private unnamed_addr constant [6 x i8] c"while\00" +@.str.3077 = private unnamed_addr constant [4 x i8] c"for\00" +@.str.3078 = private unnamed_addr constant [5 x i8] c"each\00" +@.str.3079 = private unnamed_addr constant [7 x i8] c"return\00" +@.str.3080 = private unnamed_addr constant [6 x i8] c"defer\00" +@.str.3081 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3082 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" +@.str.3083 = private unnamed_addr constant [34 x i8] c"defer inside defer is not allowed\00" +@.str.3084 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3085 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" @.str.3086 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3087 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.3087 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\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.3089 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3090 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.3091 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.3093 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.3094 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3095 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3096 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3097 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.3098 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3099 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3100 = private unnamed_addr constant [30 x i8] c"used .nvars on a null pointer\00" +@.str.3101 = private unnamed_addr constant [6 x i8] c"break\00" +@.str.3102 = private unnamed_addr constant [9 x i8] c"continue\00" +@.str.3103 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3104 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" +@.str.3105 = private unnamed_addr constant [28 x i8] c" can't be used inside defer\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.3107 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" +@.str.3108 = private unnamed_addr constant [32 x i8] c" can only be used inside a loop\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.3110 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" +@.str.3111 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3112 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" +@.str.3113 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3114 = private unnamed_addr constant [6 x i8] c"break\00" +@.str.3115 = private unnamed_addr constant [19 x i8] c"unknown statement \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.3117 = private unnamed_addr constant [5 x i8] c"void\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"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 [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 [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 [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 [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.3119 = private unnamed_addr constant [47 x i8] c"this gives back nothing, so it can't be stored\00" +@.str.3120 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.3121 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3122 = private unnamed_addr constant [35 x i8] c"null needs a type, like: ptr[int] \00" +@.str.3123 = private unnamed_addr constant [8 x i8] c" = null\00" +@.str.3124 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.3125 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3126 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3127 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.3128 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.3129 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3130 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.3131 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3132 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3133 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.3134 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3135 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3136 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3137 = private unnamed_addr constant [4 x i8] c"var\00" +@.str.3138 = private unnamed_addr constant [29 x i8] c"there is no variable named '\00" +@.str.3139 = private unnamed_addr constant [19 x i8] c"' (create it with \00" +@.str.3140 = private unnamed_addr constant [9 x i8] c" := ...)\00" +@.str.3141 = private unnamed_addr constant [20 x i8] c"the loop variable '\00" +@.str.3142 = private unnamed_addr constant [19 x i8] c"' can't be changed\00" +@.str.3143 = private unnamed_addr constant [10 x i8] c"the value\00" +@.str.3144 = private unnamed_addr constant [4 x i8] c"var\00" +@.str.3145 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.3146 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.3147 = private unnamed_addr constant [2 x i8] c"=\00" +@.str.3148 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3149 = private unnamed_addr constant [4 x i8] c"var\00" +@.str.3150 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3151 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3152 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3153 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" +@.str.3154 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3155 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3156 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3157 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" +@.str.3158 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3159 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.3160 = private unnamed_addr constant [12 x i8] c"a condition\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.3162 = private unnamed_addr constant [5 x i8] c"then\00" +@.str.3163 = private unnamed_addr constant [5 x i8] c"else\00" +@.str.3164 = private unnamed_addr constant [6 x i8] c"endif\00" +@.str.3165 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.3167 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.3168 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3169 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3170 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.3171 = private unnamed_addr constant [11 x i8] c"while.cond\00" +@.str.3172 = private unnamed_addr constant [11 x i8] c"while.body\00" +@.str.3173 = private unnamed_addr constant [10 x i8] c"while.end\00" +@.str.3174 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3175 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.3176 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3177 = private unnamed_addr constant [5 x i8] c"true\00" @.str.3178 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.3179 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3180 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" +@.str.3181 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3182 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\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.3184 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" @.str.3185 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.3186 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3187 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3188 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" +@.str.3189 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3190 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" +@.str.3191 = private unnamed_addr constant [6 x i8] c"break\00" +@.str.3192 = private unnamed_addr constant [6 x i8] c"while\00" +@.str.3193 = private unnamed_addr constant [4 x i8] c"for\00" +@.str.3194 = private unnamed_addr constant [5 x i8] c"each\00" +@.str.3195 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3196 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.3197 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3198 = private unnamed_addr constant [21 x i8] c"the start of a range\00" +@.str.3199 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3200 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.3201 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3202 = private unnamed_addr constant [19 x i8] c"the end of a range\00" +@.str.3203 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.3204 = private unnamed_addr constant [9 x i8] c"for.cond\00" +@.str.3205 = private unnamed_addr constant [9 x i8] c"for.body\00" +@.str.3206 = private unnamed_addr constant [9 x i8] c"for.step\00" +@.str.3207 = private unnamed_addr constant [8 x i8] c"for.end\00" +@.str.3208 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3209 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" +@.str.3210 = private unnamed_addr constant [3 x i8] c", \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.3212 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" +@.str.3213 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3214 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.3215 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3216 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\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.3218 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3219 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\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.3221 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" +@.str.3222 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3223 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3224 = private unnamed_addr constant [9 x i8] c"add i64 \00" +@.str.3225 = private unnamed_addr constant [4 x i8] c", 1\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"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.3229 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3230 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3231 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3232 = private unnamed_addr constant [2 x i8] c"0\00" +@.str.3233 = private unnamed_addr constant [1 x i8] c"\00" +@.str.3234 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3235 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.3236 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.3237 = private unnamed_addr constant [15 x i8] c", i32 0, i32 6\00" +@.str.3238 = private unnamed_addr constant [9 x i8] c"map.cond\00" +@.str.3239 = private unnamed_addr constant [10 x i8] c"map.check\00" +@.str.3240 = private unnamed_addr constant [9 x i8] c"map.body\00" +@.str.3241 = private unnamed_addr constant [9 x i8] c"map.step\00" +@.str.3242 = private unnamed_addr constant [8 x i8] c"map.end\00" +@.str.3243 = private unnamed_addr constant [12 x i8] c"map.changed\00" +@.str.3244 = private unnamed_addr constant [9 x i8] c"map.same\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 6\00" +@.str.3249 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00" +@.str.3250 = private unnamed_addr constant [3 x i8] c", \00" +@.str.3251 = private unnamed_addr constant [34 x i8] c"call void @finch_map_changed(ptr \00" +@.str.3252 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3253 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" +@.str.3254 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3255 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.3256 = private unnamed_addr constant [2 x i8] c")\00" +@.str.3257 = private unnamed_addr constant [12 x i8] c"unreachable\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.3259 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.3260 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3261 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3262 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.3263 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.3264 = private unnamed_addr constant [15 x i8] c", i32 0, i32 2\00" +@.str.3265 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" +@.str.3266 = private unnamed_addr constant [3 x i8] c", \00" +@.str.3267 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3268 = private unnamed_addr constant [13 x i8] c"icmp eq i64 \00" +@.str.3269 = private unnamed_addr constant [4 x i8] c", 0\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.3271 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" +@.str.3272 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3273 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.3274 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3275 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\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.3277 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3278 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" @.str.3279 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [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.3280 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" +@.str.3281 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3282 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3283 = private unnamed_addr constant [9 x i8] c"add i64 \00" +@.str.3284 = private unnamed_addr constant [4 x i8] c", 1\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 [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.3286 = private unnamed_addr constant [1 x i8] c"\00" +@.str.3287 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3288 = private unnamed_addr constant [6 x i8] c"$list\00" +@.str.3289 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3290 = private unnamed_addr constant [30 x i8] c"used .nvars on a null pointer\00" +@.str.3291 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.3292 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.3293 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.3294 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3295 = private unnamed_addr constant [56 x i8] c"for ... in needs an array, a str or a map, but this is \00" +@.str.3296 = private unnamed_addr constant [37 x i8] c" (for a range of numbers write 0..n)\00" +@.str.3297 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.3298 = private unnamed_addr constant [6 x i8] c"array\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 [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 [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.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 [4 x i8] c"i64\00" +@.str.3303 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3304 = private unnamed_addr constant [2 x i8] c"0\00" +@.str.3305 = private unnamed_addr constant [10 x i8] c"each.cond\00" +@.str.3306 = private unnamed_addr constant [10 x i8] c"each.body\00" +@.str.3307 = private unnamed_addr constant [10 x i8] c"each.step\00" +@.str.3308 = private unnamed_addr constant [9 x i8] c"each.end\00" +@.str.3309 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3310 = private unnamed_addr constant [47 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr \00" +@.str.3311 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" +@.str.3312 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3313 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" +@.str.3314 = private unnamed_addr constant [3 x i8] c", \00" +@.str.3315 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.3316 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.3317 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.3318 = private unnamed_addr constant [7 x i8] c", i64 \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 .loops 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 [31 x i8] c"used .scopes on a null pointer\00" +@.str.3323 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3324 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" +@.str.3325 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.3326 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3327 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3328 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" +@.str.3329 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3330 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" +@.str.3331 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3332 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3333 = private unnamed_addr constant [9 x i8] c"add i64 \00" +@.str.3334 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str.3335 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3336 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" +@.str.3337 = private unnamed_addr constant [34 x i8] c"return can't be used inside defer\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 [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 [12 x i8] c"src/gen.fch\00" +@.str.3339 = private unnamed_addr constant [5 x i8] c"call\00" +@.str.3340 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3341 = private unnamed_addr constant [6 x i8] c"error\00" +@.str.3342 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3343 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3344 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3345 = private unnamed_addr constant [2 x i8] c"!\00" +@.str.3346 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3347 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3348 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3349 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3350 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3351 = private unnamed_addr constant [2 x i8] c"!\00" +@.str.3352 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.3353 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3354 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3355 = private unnamed_addr constant [65 x i8] c"' can't fail, so it can't return an error (make it fallible: -> \00" +@.str.3356 = private unnamed_addr constant [2 x i8] c")\00" +@.str.3357 = private unnamed_addr constant [6 x i8] c"error\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.3359 = private unnamed_addr constant [4 x i8] c"str\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.3361 = private unnamed_addr constant [18 x i8] c"the error message\00" +@.str.3362 = private unnamed_addr constant [5 x i8] c"ret \00" +@.str.3363 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3364 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3365 = private unnamed_addr constant [2 x i8] c" \00" +@.str.3366 = private unnamed_addr constant [13 x i8] c"insertvalue \00" +@.str.3367 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3368 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3369 = private unnamed_addr constant [37 x i8] c" zeroinitializer, { ptr, i64, i64 } \00" +@.str.3370 = private unnamed_addr constant [4 x i8] c", 2\00" +@.str.3371 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3372 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\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 [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.3374 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3375 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3376 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3377 = private unnamed_addr constant [2 x i8] c"'\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 [47 x i8] c"' doesn't return a value (it has no '-> type')\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"ret \00" @.str.3384 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.3385 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3386 = private unnamed_addr constant [54 x i8] c" { i1 true, i8 0, { ptr, i64, i64 } zeroinitializer }\00" +@.str.3387 = private unnamed_addr constant [9 x i8] c"ret void\00" +@.str.3388 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3389 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.3390 = private unnamed_addr constant [2 x i8] c"'\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.3392 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3393 = private unnamed_addr constant [15 x i8] c"' must return \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.3395 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3396 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3397 = private unnamed_addr constant [4 x i8] c"var\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.3399 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3400 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.3401 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3402 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\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 [12 x i8] c"src/gen.fch\00" +@.str.3405 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" @.str.3406 = 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.3408 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3409 = private unnamed_addr constant [32 x i8] c"used .deferOn on a null pointer\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.3411 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" @.str.3412 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.3415 = private unnamed_addr constant [35 x i8] c"used .deferLimit on a null pointer\00" +@.str.3416 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3417 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.3418 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.3421 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3422 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3423 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.3424 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [31 x i8] c"used .scopes on a null pointer\00" +@.str.3428 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3429 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3430 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3431 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3432 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3433 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3434 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3435 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3436 = private unnamed_addr constant [19 x i8] c"the returned value\00" +@.str.3437 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3438 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3439 = private unnamed_addr constant [13 x i8] c"insertvalue \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.3441 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3442 = private unnamed_addr constant [29 x i8] c" zeroinitializer, i1 true, 0\00" +@.str.3443 = private unnamed_addr constant [13 x i8] c"insertvalue \00" +@.str.3444 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3445 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3446 = private unnamed_addr constant [2 x i8] c" \00" +@.str.3447 = private unnamed_addr constant [3 x i8] c", \00" +@.str.3448 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3449 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3450 = private unnamed_addr constant [2 x i8] c" \00" +@.str.3451 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str.3452 = private unnamed_addr constant [5 x i8] c"ret \00" +@.str.3453 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3454 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3455 = private unnamed_addr constant [2 x i8] c" \00" +@.str.3456 = private unnamed_addr constant [5 x i8] c"ret \00" +@.str.3457 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3458 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3459 = private unnamed_addr constant [2 x i8] c" \00" +@.str.3460 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3461 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.3462 = private unnamed_addr constant [8 x i8] c"{ i64, \00" +@.str.3463 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3464 = private unnamed_addr constant [3 x i8] c", \00" +@.str.3465 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3466 = private unnamed_addr constant [3 x i8] c" }\00" +@.str.3467 = private unnamed_addr constant [30 x i8] c"ptrtoint (ptr getelementptr (\00" +@.str.3468 = private unnamed_addr constant [27 x i8] c", ptr null, i32 1) to i64)\00" +@.str.3469 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.3470 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.3471 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.3472 = private unnamed_addr constant [15 x i8] c", i32 0, i32 0\00" +@.str.3473 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.3474 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.3475 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.3476 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.3477 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.3478 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" +@.str.3479 = private unnamed_addr constant [2 x i8] c"0\00" +@.str.3480 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3481 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.3482 = private unnamed_addr constant [2 x i8] c"1\00" +@.str.3483 = private unnamed_addr constant [5 x i8] c"ptr \00" +@.str.3484 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.3485 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.3486 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.3487 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3488 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str.3489 = private unnamed_addr constant [26 x i8] c"call i64 @finch_map_find(\00" +@.str.3490 = private unnamed_addr constant [2 x i8] c")\00" +@.str.3491 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.3492 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.3493 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.3494 = private unnamed_addr constant [2 x i8] c"0\00" +@.str.3495 = private unnamed_addr constant [26 x i8] c"call i64 @finch_map_slot(\00" +@.str.3496 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.3497 = private unnamed_addr constant [2 x i8] c")\00" +@.str.3498 = private unnamed_addr constant [8 x i8] c"map.new\00" +@.str.3499 = private unnamed_addr constant [9 x i8] c"map.have\00" +@.str.3500 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" +@.str.3501 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.3502 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.3503 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3504 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.3506 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3507 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3508 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.3510 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3511 = private unnamed_addr constant [8 x i8] c"the key\00" +@.str.3512 = private unnamed_addr constant [45 x i8] c"this is a temporary map, it can't be changed\00" +@.str.3513 = private unnamed_addr constant [1 x i8] c"\00" +@.str.3514 = private unnamed_addr constant [12 x i8] c"map.missing\00" +@.str.3515 = private unnamed_addr constant [10 x i8] c"map.found\00" +@.str.3516 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" +@.str.3517 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.3518 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.3519 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.3520 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" +@.str.3521 = private unnamed_addr constant [34 x i8] c"call void @finch_map_missing(ptr \00" +@.str.3522 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3523 = private unnamed_addr constant [30 x i8] c"used .files 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 [7 x i8] c", i64 \00" +@.str.3526 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.3527 = private unnamed_addr constant [2 x i8] c")\00" +@.str.3528 = private unnamed_addr constant [12 x i8] c"unreachable\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 [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 [12 x i8] c"src/gen.fch\00" +@.str.3531 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.3532 = private unnamed_addr constant [53 x i8] c"an empty [:] needs a type, like: map[str]int m = [:]\00" +@.str.3533 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3534 = private unnamed_addr constant [6 x i8] c"unary\00" +@.str.3535 = private unnamed_addr constant [2 x i8] c"-\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"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 [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.3537 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.3538 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.3539 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3540 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3541 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3542 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.3543 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3544 = private unnamed_addr constant [36 x i8] c"a map key needs a value with a type\00" +@.str.3545 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3546 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.3547 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3548 = private unnamed_addr constant [38 x i8] c"a map value needs a value with a type\00" +@.str.3549 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.3550 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" +@.str.3551 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3552 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" +@.str.3553 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3554 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\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.3556 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.3558 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3559 = private unnamed_addr constant [22 x i8] c"every key of this map\00" +@.str.3560 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3561 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3562 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.3564 = private unnamed_addr constant [24 x i8] c"every value of this map\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.3566 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [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 [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.3568 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3569 = private unnamed_addr constant [4 x i8] c"has\00" +@.str.3570 = private unnamed_addr constant [4 x i8] c"get\00" +@.str.3571 = private unnamed_addr constant [7 x i8] c"remove\00" +@.str.3572 = private unnamed_addr constant [4 x i8] c"get\00" +@.str.3573 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3574 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3575 = private unnamed_addr constant [8 x i8] c"the key\00" +@.str.3576 = private unnamed_addr constant [14 x i8] c"icmp sge i64 \00" +@.str.3577 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.3578 = private unnamed_addr constant [4 x i8] c"has\00" +@.str.3579 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.3580 = private unnamed_addr constant [7 x i8] c"remove\00" +@.str.3581 = private unnamed_addr constant [11 x i8] c"remove.hit\00" +@.str.3582 = private unnamed_addr constant [11 x i8] c"remove.end\00" +@.str.3583 = private unnamed_addr constant [36 x i8] c"call void @finch_map_remove_at(ptr \00" +@.str.3584 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.3585 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.3586 = private unnamed_addr constant [2 x i8] c")\00" +@.str.3587 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.3588 = private unnamed_addr constant [10 x i8] c"get.found\00" +@.str.3589 = private unnamed_addr constant [12 x i8] c"get.missing\00" +@.str.3590 = private unnamed_addr constant [9 x i8] c"get.fend\00" +@.str.3591 = private unnamed_addr constant [9 x i8] c"get.mend\00" +@.str.3592 = private unnamed_addr constant [8 x i8] c"get.end\00" +@.str.3593 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.3594 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [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 [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 [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 [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 [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 [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 [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 [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.3595 = private unnamed_addr constant [12 x i8] c"the default\00" +@.str.3596 = private unnamed_addr constant [5 x i8] c"phi \00" +@.str.3597 = private unnamed_addr constant [4 x i8] c" [ \00" +@.str.3598 = private unnamed_addr constant [4 x i8] c", %\00" +@.str.3599 = private unnamed_addr constant [7 x i8] c" ], [ \00" +@.str.3600 = private unnamed_addr constant [4 x i8] c", %\00" +@.str.3601 = private unnamed_addr constant [3 x i8] c" ]\00" +@.str.3602 = private unnamed_addr constant [6 x i8] c"clear\00" +@.str.3603 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3604 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.3605 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.3606 = private unnamed_addr constant [15 x i8] c", i32 0, i32 2\00" +@.str.3607 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3608 = private unnamed_addr constant [11 x i8] c"entry.live\00" +@.str.3609 = private unnamed_addr constant [11 x i8] c"entry.next\00" +@.str.3610 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00" +@.str.3611 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3612 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.3613 = private unnamed_addr constant [32 x i8] c"call void @finch_map_clear(ptr \00" +@.str.3614 = private unnamed_addr constant [2 x i8] c")\00" +@.str.3615 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3616 = private unnamed_addr constant [5 x i8] c"keys\00" +@.str.3617 = private unnamed_addr constant [7 x i8] c"values\00" +@.str.3618 = private unnamed_addr constant [7 x i8] c"values\00" +@.str.3619 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.3620 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.3621 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" +@.str.3622 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3623 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.3624 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.3625 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" +@.str.3626 = private unnamed_addr constant [31 x i8] c"call void @finch_arr_make(ptr \00" +@.str.3627 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.3628 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.3629 = private unnamed_addr constant [2 x i8] c")\00" +@.str.3630 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.3631 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3632 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3633 = private unnamed_addr constant [2 x i8] c"0\00" +@.str.3634 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3635 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.3636 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.3637 = private unnamed_addr constant [15 x i8] c", i32 0, i32 2\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.3639 = private unnamed_addr constant [11 x i8] c"entry.live\00" +@.str.3640 = private unnamed_addr constant [11 x i8] c"entry.next\00" +@.str.3641 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00" +@.str.3642 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3643 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.3644 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3645 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.3646 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.3647 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.3648 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3649 = private unnamed_addr constant [9 x i8] c"add i64 \00" +@.str.3650 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str.3651 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.3652 = private unnamed_addr constant [22 x i8] c"a map has no method '\00" +@.str.3653 = private unnamed_addr constant [50 x i8] c"' (it has: has, get, remove, clear, keys, values)\00" +@.str.3654 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.3655 = private unnamed_addr constant [4 x i8] c"var\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.3657 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\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.3659 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.3660 = private unnamed_addr constant [23 x i8] c"' is not a variant of \00" +@.str.3661 = private unnamed_addr constant [11 x i8] c" (it has: \00" +@.str.3662 = private unnamed_addr constant [3 x i8] c", \00" +@.str.3663 = private unnamed_addr constant [2 x i8] c")\00" +@.str.3664 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3665 = private unnamed_addr constant [13 x i8] c"this pattern\00" +@.str.3666 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3667 = private unnamed_addr constant [5 x i8] c"void\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.3669 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3670 = private unnamed_addr constant [31 x i8] c"there is nothing to match here\00" +@.str.3671 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3672 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" +@.str.3673 = private unnamed_addr constant [10 x i8] c"match.end\00" +@.str.3674 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3675 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3676 = private unnamed_addr constant [73 x i8] c"this arm can never be used: 'else' already takes everything that is left\00" +@.str.3677 = private unnamed_addr constant [10 x i8] c"match.arm\00" +@.str.3678 = private unnamed_addr constant [11 x i8] c"match.next\00" +@.str.3679 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3680 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3681 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.3682 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3683 = private unnamed_addr constant [50 x i8] c"this variant is already handled by an earlier arm\00" +@.str.3684 = private unnamed_addr constant [3 x i8] c"==\00" +@.str.3685 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3686 = private unnamed_addr constant [9 x i8] c"match.or\00" +@.str.3687 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3688 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3689 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3690 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.3691 = private unnamed_addr constant [53 x i8] c"an arm of a match that gives a value has to give one\00" +@.str.3692 = private unnamed_addr constant [58 x i8] c"this arm (the arms of a match have to give the same type)\00" +@.str.3693 = private unnamed_addr constant [11 x i8] c"match.from\00" +@.str.3694 = private unnamed_addr constant [6 x i8] c"block\00" +@.str.3695 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3696 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.3697 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.3698 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3699 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\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.3701 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.3703 = private unnamed_addr constant [27 x i8] c"this match doesn't handle \00" +@.str.3704 = private unnamed_addr constant [3 x i8] c", \00" +@.str.3705 = private unnamed_addr constant [30 x i8] c" (add them, or an 'else' arm)\00" +@.str.3706 = private unnamed_addr constant [12 x i8] c"a match on \00" +@.str.3707 = private unnamed_addr constant [55 x i8] c" needs an 'else' arm for everything that is not listed\00" +@.str.3708 = private unnamed_addr constant [5 x i8] c"true\00" +@.str.3709 = private unnamed_addr constant [36 x i8] c"no arm of this match fits the value\00" +@.str.3710 = private unnamed_addr constant [12 x i8] c"unreachable\00" +@.str.3711 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3712 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.3713 = private unnamed_addr constant [12 x i8] c"unreachable\00" +@.str.3714 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3715 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.3716 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3717 = private unnamed_addr constant [5 x i8] c"phi \00" +@.str.3718 = private unnamed_addr constant [2 x i8] c" \00" +@.str.3719 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3720 = private unnamed_addr constant [3 x i8] c"[ \00" +@.str.3721 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3722 = private unnamed_addr constant [4 x i8] c", %\00" +@.str.3723 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3724 = private unnamed_addr constant [3 x i8] c" ]\00" +@.str.3725 = private unnamed_addr constant [3 x i8] c", \00" +@.str.3726 = private unnamed_addr constant [5 x i8] c"call\00" +@.str.3727 = private unnamed_addr constant [7 x i8] c"method\00" +@.str.3728 = 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.3729 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3730 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" +@.str.3731 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3732 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\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.3734 = private unnamed_addr constant [29 x i8] c"used .fmsg 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.3736 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" +@.str.3737 = private unnamed_addr constant [1 x i8] c"\00" +@.str.3738 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3739 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" +@.str.3740 = private unnamed_addr constant [1 x i8] c"\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.3742 = private unnamed_addr constant [29 x i8] c"used .fmsg 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.3744 = private unnamed_addr constant [32 x i8] c"used .ffailed 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.3746 = private unnamed_addr constant [29 x i8] c"used .fmsg 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.3748 = private unnamed_addr constant [32 x i8] c"used .ftarget 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.3750 = private unnamed_addr constant [32 x i8] c"used .ffailed 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.3752 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" +@.str.3753 = private unnamed_addr constant [51 x i8] c"this call can't fail, so it needs no 'or' or 'try'\00" +@.str.3754 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3755 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" +@.str.3756 = private unnamed_addr constant [31 x i8] c"try can't be used inside defer\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.3758 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3759 = private unnamed_addr constant [2 x i8] c"!\00" +@.str.3760 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3761 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3762 = private unnamed_addr constant [5 x i8] c"void\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.3764 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3765 = private unnamed_addr constant [2 x i8] c"!\00" +@.str.3766 = private unnamed_addr constant [30 x i8] c"try passes the error on, so '\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.3768 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3769 = private unnamed_addr constant [32 x i8] c"' must be able to fail too (-> \00" +@.str.3770 = private unnamed_addr constant [56 x i8] c"); or handle it here: ... or / ... or { ... }\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.3772 = private unnamed_addr constant [11 x i8] c"try.failed\00" +@.str.3773 = private unnamed_addr constant [7 x i8] c"try.ok\00" +@.str.3774 = private unnamed_addr constant [5 x i8] c"ret \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.3776 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3777 = private unnamed_addr constant [2 x i8] c" \00" +@.str.3778 = private unnamed_addr constant [13 x i8] c"insertvalue \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.3780 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3781 = private unnamed_addr constant [37 x i8] c" zeroinitializer, { ptr, i64, i64 } \00" +@.str.3782 = private unnamed_addr constant [4 x i8] c", 2\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.3784 = private unnamed_addr constant [29 x i8] c"used .term 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.3786 = private unnamed_addr constant [10 x i8] c"or.failed\00" +@.str.3787 = private unnamed_addr constant [6 x i8] c"or.ok\00" +@.str.3788 = private unnamed_addr constant [4 x i8] c"err\00" +@.str.3789 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.3790 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [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.3792 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.3793 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3794 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3795 = 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.3796 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3797 = private unnamed_addr constant [7 x i8] c"or.end\00" +@.str.3798 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3799 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3800 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3801 = 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.3802 = private unnamed_addr constant [4 x i8] c"err\00" +@.str.3803 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.3804 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [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.3806 = private unnamed_addr constant [21 x i8] c"the value after 'or'\00" +@.str.3807 = private unnamed_addr constant [8 x i8] c"or.bend\00" +@.str.3808 = private unnamed_addr constant [7 x i8] c"or.end\00" +@.str.3809 = private unnamed_addr constant [5 x i8] c"phi \00" +@.str.3810 = private unnamed_addr constant [4 x i8] c" [ \00" +@.str.3811 = private unnamed_addr constant [4 x i8] c", %\00" +@.str.3812 = private unnamed_addr constant [7 x i8] c" ], [ \00" +@.str.3813 = private unnamed_addr constant [4 x i8] c", %\00" +@.str.3814 = private unnamed_addr constant [3 x i8] c" ]\00" +@.str.3815 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.3816 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.3817 = private unnamed_addr constant [4 x i8] c"int\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 [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.3819 = private unnamed_addr constant [3 x i8] c"0x\00" +@.str.3820 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3821 = private unnamed_addr constant [3 x i8] c"0X\00" +@.str.3822 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3823 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.3824 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3825 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.3826 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.3827 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.3828 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.3829 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.3830 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.3831 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3832 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.3833 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.3834 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.3835 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.3836 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.3837 = private unnamed_addr constant [4 x i8] c"var\00" +@.str.3838 = private unnamed_addr constant [7 x i8] c"member\00" +@.str.3839 = private unnamed_addr constant [6 x i8] c"index\00" +@.str.3840 = private unnamed_addr constant [6 x i8] c"match\00" +@.str.3841 = private unnamed_addr constant [4 x i8] c"try\00" +@.str.3842 = private unnamed_addr constant [3 x i8] c"or\00" +@.str.3843 = private unnamed_addr constant [6 x i8] c"unary\00" +@.str.3844 = private unnamed_addr constant [7 x i8] c"binary\00" +@.str.3845 = private unnamed_addr constant [5 x i8] c"call\00" +@.str.3846 = private unnamed_addr constant [7 x i8] c"method\00" +@.str.3847 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.3848 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3849 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.3850 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3851 = private unnamed_addr constant [20 x i8] c"unknown expression \00" +@.str.3852 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3853 = private unnamed_addr constant [2 x i8] c"!\00" +@.str.3854 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.3855 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3856 = private unnamed_addr constant [20 x i8] c"the value after '!'\00" +@.str.3857 = private unnamed_addr constant [8 x i8] c"xor i1 \00" +@.str.3858 = private unnamed_addr constant [7 x i8] c", true\00" +@.str.3859 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.3860 = private unnamed_addr constant [2 x i8] c"~\00" +@.str.3861 = private unnamed_addr constant [46 x i8] c"'~' flips the bits of a whole number, not of \00" +@.str.3862 = private unnamed_addr constant [5 x i8] c"xor \00" +@.str.3863 = private unnamed_addr constant [2 x i8] c" \00" +@.str.3864 = private unnamed_addr constant [5 x i8] c", -1\00" +@.str.3865 = private unnamed_addr constant [35 x i8] c" can't be negative (it's unsigned)\00" +@.str.3866 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3867 = private unnamed_addr constant [2 x i8] c"-\00" +@.str.3868 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3869 = private unnamed_addr constant [2 x i8] c"-\00" +@.str.3870 = private unnamed_addr constant [5 x i8] c"sub \00" +@.str.3871 = private unnamed_addr constant [5 x i8] c" 0, \00" +@.str.3872 = private unnamed_addr constant [6 x i8] c"fneg \00" +@.str.3873 = private unnamed_addr constant [2 x i8] c" \00" +@.str.3874 = private unnamed_addr constant [27 x i8] c"can't put '-' in front of \00" +@.str.3875 = private unnamed_addr constant [12 x i8] c"can't use '\00" +@.str.3876 = private unnamed_addr constant [6 x i8] c"' on \00" +@.str.3877 = private unnamed_addr constant [6 x i8] c" and \00" +@.str.3878 = private unnamed_addr constant [2 x i8] c"+\00" +@.str.3879 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.3880 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.3881 = private unnamed_addr constant [49 x i8] c" (turn the other side into text first: str(...))\00" +@.str.3882 = private unnamed_addr constant [2 x i8] c"&\00" +@.str.3883 = private unnamed_addr constant [2 x i8] c"|\00" +@.str.3884 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.3885 = private unnamed_addr constant [2 x i8] c"&\00" +@.str.3886 = private unnamed_addr constant [27 x i8] c" (for true/false use '&&')\00" +@.str.3887 = private unnamed_addr constant [27 x i8] c" (for true/false use '||')\00" +@.str.3888 = private unnamed_addr constant [2 x i8] c"&\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 [3 x i8] c"<<\00" +@.str.3892 = private unnamed_addr constant [3 x i8] c">>\00" +@.str.3893 = private unnamed_addr constant [44 x i8] c" (bit operators work on whole numbers only)\00" +@.str.3894 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.3895 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.3896 = private unnamed_addr constant [3 x i8] c"==\00" +@.str.3897 = private unnamed_addr constant [3 x i8] c"!=\00" +@.str.3898 = private unnamed_addr constant [32 x i8] c" (compare the parts one by one)\00" +@.str.3899 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3900 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3901 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3902 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3903 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3904 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3905 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3906 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3907 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3908 = private unnamed_addr constant [28 x i8] c"used .lit on a null pointer\00" +@.str.3909 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3910 = private unnamed_addr constant [28 x i8] c"used .lit on a null pointer\00" @.str.3911 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.3912 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" +@.str.3913 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3914 = private unnamed_addr constant [27 x i8] c"used .ty 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 [27 x i8] c"used .ty on a null pointer\00" +@.str.3917 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3918 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" +@.str.3919 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3920 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3921 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3922 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" +@.str.3923 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3924 = private unnamed_addr constant [28 x i8] c"used .lit on a null pointer\00" +@.str.3925 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3926 = private unnamed_addr constant [28 x i8] c"used .lit on a null pointer\00" +@.str.3927 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3928 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" +@.str.3929 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3930 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3931 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3932 = private unnamed_addr constant [27 x i8] c"used .ty 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 [26 x i8] c"used .v on a null pointer\00" +@.str.3935 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3936 = private unnamed_addr constant [27 x i8] c"used .ty 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 [30 x i8] c"used .value on a null pointer\00" +@.str.3939 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3940 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3941 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3942 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3943 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3944 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" +@.str.3945 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3946 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3947 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3948 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3949 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3950 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3951 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3952 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" +@.str.3953 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3954 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3955 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3956 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3957 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3958 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" +@.str.3959 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3960 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3961 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3962 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\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 [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 [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.3964 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3965 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3966 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" +@.str.3967 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3968 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3969 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3970 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3971 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3972 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" +@.str.3973 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3974 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3975 = private unnamed_addr constant [1 x i8] c"\00" +@.str.3976 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3977 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" +@.str.3978 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3979 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3980 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3981 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3982 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3983 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" +@.str.3984 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3985 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3986 = private unnamed_addr constant [1 x i8] c"\00" +@.str.3987 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3988 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" +@.str.3989 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3990 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3991 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3992 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3993 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3994 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3995 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.3996 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3997 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" +@.str.3998 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3999 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.4000 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.4001 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.4002 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4003 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" +@.str.4004 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4005 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.4006 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.4007 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4008 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" +@.str.4009 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4010 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.4011 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.4012 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.4013 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4014 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" +@.str.4015 = private unnamed_addr constant [2 x i8] c"+\00" +@.str.4016 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4017 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4018 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.4019 = private unnamed_addr constant [33 x i8] c"call void @finch_str_concat(ptr \00" +@.str.4020 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4021 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4022 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4023 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.4024 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4025 = private unnamed_addr constant [2 x i8] c"+\00" +@.str.4026 = private unnamed_addr constant [2 x i8] c"-\00" +@.str.4027 = private unnamed_addr constant [2 x i8] c"*\00" +@.str.4028 = private unnamed_addr constant [2 x i8] c"/\00" +@.str.4029 = private unnamed_addr constant [2 x i8] c"%\00" +@.str.4030 = private unnamed_addr constant [2 x i8] c"&\00" +@.str.4031 = private unnamed_addr constant [2 x i8] c"|\00" +@.str.4032 = private unnamed_addr constant [2 x i8] c"^\00" +@.str.4033 = private unnamed_addr constant [3 x i8] c"<<\00" +@.str.4034 = private unnamed_addr constant [3 x i8] c">>\00" +@.str.4035 = private unnamed_addr constant [4 x i8] c"add\00" +@.str.4036 = private unnamed_addr constant [4 x i8] c"sub\00" +@.str.4037 = private unnamed_addr constant [4 x i8] c"mul\00" +@.str.4038 = private unnamed_addr constant [5 x i8] c"sdiv\00" +@.str.4039 = private unnamed_addr constant [5 x i8] c"srem\00" +@.str.4040 = private unnamed_addr constant [4 x i8] c"and\00" +@.str.4041 = private unnamed_addr constant [3 x i8] c"or\00" +@.str.4042 = private unnamed_addr constant [4 x i8] c"xor\00" +@.str.4043 = private unnamed_addr constant [4 x i8] c"shl\00" +@.str.4044 = private unnamed_addr constant [5 x i8] c"ashr\00" +@.str.4045 = private unnamed_addr constant [4 x i8] c"add\00" +@.str.4046 = private unnamed_addr constant [4 x i8] c"sub\00" +@.str.4047 = private unnamed_addr constant [4 x i8] c"mul\00" +@.str.4048 = private unnamed_addr constant [5 x i8] c"udiv\00" +@.str.4049 = private unnamed_addr constant [5 x i8] c"urem\00" +@.str.4050 = private unnamed_addr constant [4 x i8] c"and\00" +@.str.4051 = private unnamed_addr constant [3 x i8] c"or\00" +@.str.4052 = private unnamed_addr constant [4 x i8] c"xor\00" +@.str.4053 = private unnamed_addr constant [4 x i8] c"shl\00" +@.str.4054 = private unnamed_addr constant [5 x i8] c"lshr\00" +@.str.4055 = private unnamed_addr constant [2 x i8] c"/\00" +@.str.4056 = private unnamed_addr constant [2 x i8] c"%\00" +@.str.4057 = private unnamed_addr constant [2 x i8] c"0\00" +@.str.4058 = private unnamed_addr constant [17 x i8] c"division by zero\00" +@.str.4059 = private unnamed_addr constant [9 x i8] c"icmp eq \00" +@.str.4060 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4061 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.4062 = private unnamed_addr constant [17 x i8] c"division by zero\00" +@.str.4063 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4064 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4065 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4066 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4067 = private unnamed_addr constant [2 x i8] c"+\00" +@.str.4068 = private unnamed_addr constant [2 x i8] c"-\00" +@.str.4069 = private unnamed_addr constant [2 x i8] c"*\00" +@.str.4070 = private unnamed_addr constant [2 x i8] c"/\00" +@.str.4071 = private unnamed_addr constant [2 x i8] c"%\00" +@.str.4072 = private unnamed_addr constant [5 x i8] c"fadd\00" +@.str.4073 = private unnamed_addr constant [5 x i8] c"fsub\00" +@.str.4074 = private unnamed_addr constant [5 x i8] c"fmul\00" +@.str.4075 = private unnamed_addr constant [5 x i8] c"fdiv\00" +@.str.4076 = private unnamed_addr constant [5 x i8] c"frem\00" +@.str.4077 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4078 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4079 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4080 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4081 = private unnamed_addr constant [3 x i8] c"==\00" +@.str.4082 = private unnamed_addr constant [3 x i8] c"!=\00" +@.str.4083 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4084 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4085 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.4086 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.4087 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4088 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4089 = private unnamed_addr constant [60 x i8] c"a str is never null; to check for empty text use s.len == 0\00" +@.str.4090 = private unnamed_addr constant [3 x i8] c"eq\00" +@.str.4091 = private unnamed_addr constant [3 x i8] c"!=\00" +@.str.4092 = private unnamed_addr constant [3 x i8] c"ne\00" +@.str.4093 = private unnamed_addr constant [6 x i8] c"icmp \00" +@.str.4094 = private unnamed_addr constant [6 x i8] c" ptr \00" +@.str.4095 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4096 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4097 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4098 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4099 = private unnamed_addr constant [28 x i8] c"call i32 @finch_str_eq(ptr \00" +@.str.4100 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4101 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4102 = private unnamed_addr constant [3 x i8] c"ne\00" +@.str.4103 = private unnamed_addr constant [3 x i8] c"!=\00" +@.str.4104 = private unnamed_addr constant [3 x i8] c"eq\00" +@.str.4105 = private unnamed_addr constant [6 x i8] c"icmp \00" +@.str.4106 = private unnamed_addr constant [6 x i8] c" i32 \00" +@.str.4107 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.4108 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4109 = private unnamed_addr constant [29 x i8] c"call i64 @finch_str_cmp(ptr \00" +@.str.4110 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4111 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4112 = private unnamed_addr constant [6 x i8] c"icmp \00" +@.str.4113 = private unnamed_addr constant [6 x i8] c" i64 \00" +@.str.4114 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.4115 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4116 = private unnamed_addr constant [3 x i8] c"==\00" +@.str.4117 = private unnamed_addr constant [3 x i8] c"!=\00" +@.str.4118 = private unnamed_addr constant [2 x i8] c"<\00" +@.str.4119 = private unnamed_addr constant [3 x i8] c"<=\00" +@.str.4120 = private unnamed_addr constant [2 x i8] c">\00" +@.str.4121 = private unnamed_addr constant [3 x i8] c">=\00" +@.str.4122 = private unnamed_addr constant [4 x i8] c"oeq\00" +@.str.4123 = private unnamed_addr constant [4 x i8] c"une\00" +@.str.4124 = private unnamed_addr constant [4 x i8] c"olt\00" +@.str.4125 = private unnamed_addr constant [4 x i8] c"ole\00" +@.str.4126 = private unnamed_addr constant [4 x i8] c"ogt\00" +@.str.4127 = private unnamed_addr constant [4 x i8] c"oge\00" +@.str.4128 = private unnamed_addr constant [6 x i8] c"fcmp \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.4130 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4131 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4132 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4133 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4134 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.4135 = 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.4136 = private unnamed_addr constant [3 x i8] c"eq\00" +@.str.4137 = private unnamed_addr constant [3 x i8] c"!=\00" +@.str.4138 = private unnamed_addr constant [3 x i8] c"ne\00" +@.str.4139 = private unnamed_addr constant [6 x i8] c"icmp \00" +@.str.4140 = private unnamed_addr constant [6 x i8] c" i32 \00" +@.str.4141 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4142 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4143 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4144 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.4145 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4146 = private unnamed_addr constant [6 x i8] c"icmp \00" +@.str.4147 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4148 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4149 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4150 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4151 = private unnamed_addr constant [3 x i8] c"==\00" +@.str.4152 = private unnamed_addr constant [3 x i8] c"!=\00" +@.str.4153 = private unnamed_addr constant [2 x i8] c"<\00" +@.str.4154 = private unnamed_addr constant [3 x i8] c"<=\00" +@.str.4155 = private unnamed_addr constant [2 x i8] c">\00" +@.str.4156 = private unnamed_addr constant [3 x i8] c">=\00" +@.str.4157 = private unnamed_addr constant [3 x i8] c"eq\00" +@.str.4158 = private unnamed_addr constant [3 x i8] c"ne\00" +@.str.4159 = private unnamed_addr constant [4 x i8] c"ult\00" +@.str.4160 = private unnamed_addr constant [4 x i8] c"ule\00" +@.str.4161 = private unnamed_addr constant [4 x i8] c"ugt\00" +@.str.4162 = private unnamed_addr constant [4 x i8] c"uge\00" +@.str.4163 = private unnamed_addr constant [3 x i8] c"eq\00" +@.str.4164 = private unnamed_addr constant [3 x i8] c"ne\00" +@.str.4165 = private unnamed_addr constant [4 x i8] c"slt\00" +@.str.4166 = private unnamed_addr constant [4 x i8] c"sle\00" +@.str.4167 = private unnamed_addr constant [4 x i8] c"sgt\00" +@.str.4168 = private unnamed_addr constant [4 x i8] c"sge\00" +@.str.4169 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4170 = private unnamed_addr constant [3 x i8] c"&&\00" +@.str.4171 = private unnamed_addr constant [3 x i8] c"||\00" +@.str.4172 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4173 = private unnamed_addr constant [11 x i8] c"logic.from\00" +@.str.4174 = private unnamed_addr constant [10 x i8] c"logic.rhs\00" +@.str.4175 = private unnamed_addr constant [10 x i8] c"logic.end\00" +@.str.4176 = private unnamed_addr constant [3 x i8] c"&&\00" +@.str.4177 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4178 = private unnamed_addr constant [11 x i8] c"logic.rend\00" +@.str.4179 = private unnamed_addr constant [5 x i8] c"true\00" +@.str.4180 = private unnamed_addr constant [3 x i8] c"&&\00" +@.str.4181 = private unnamed_addr constant [6 x i8] c"false\00" +@.str.4182 = private unnamed_addr constant [10 x i8] c"phi i1 [ \00" +@.str.4183 = private unnamed_addr constant [4 x i8] c", %\00" +@.str.4184 = private unnamed_addr constant [7 x i8] c" ], [ \00" +@.str.4185 = private unnamed_addr constant [4 x i8] c", %\00" +@.str.4186 = private unnamed_addr constant [3 x i8] c" ]\00" +@.str.4187 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4188 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4189 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4190 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" +@.str.4191 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4192 = private unnamed_addr constant [3 x i8] c"==\00" +@.str.4193 = private unnamed_addr constant [3 x i8] c"!=\00" +@.str.4194 = private unnamed_addr constant [2 x i8] c"<\00" +@.str.4195 = private unnamed_addr constant [3 x i8] c"<=\00" +@.str.4196 = private unnamed_addr constant [2 x i8] c">\00" +@.str.4197 = private unnamed_addr constant [3 x i8] c">=\00" +@.str.4198 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.4199 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.4200 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4201 = private unnamed_addr constant [48 x i8] c"an empty [] needs a type, like: []int nums = []\00" +@.str.4202 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4203 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" +@.str.4204 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.4205 = private unnamed_addr constant [28 x i8] c"every element of this array\00" @.str.4206 = 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"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.4207 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.4208 = private unnamed_addr constant [9 x i8] c"mul i64 \00" +@.str.4209 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4210 = private unnamed_addr constant [27 x i8] c"call ptr @finch_alloc(i64 \00" +@.str.4211 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4212 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.4213 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4214 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.4215 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4216 = private unnamed_addr constant [42 x i8] c"insertvalue { ptr, i64, i64 } undef, ptr \00" +@.str.4217 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.4218 = private unnamed_addr constant [31 x i8] c"insertvalue { ptr, i64, i64 } \00" +@.str.4219 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.4220 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str.4221 = private unnamed_addr constant [31 x i8] c"insertvalue { ptr, i64, i64 } \00" +@.str.4222 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.4223 = private unnamed_addr constant [4 x i8] c", 2\00" +@.str.4224 = private unnamed_addr constant [4 x i8] c"var\00" +@.str.4225 = private unnamed_addr constant [29 x i8] c"there is no variable named '\00" +@.str.4226 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.4227 = private unnamed_addr constant [61 x i8] c"this is a temporary value, it can't be changed or pointed to\00" +@.str.4228 = private unnamed_addr constant [4 x i8] c"var\00" @.str.4229 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4230 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.4230 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" @.str.4231 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.4232 = private unnamed_addr constant [27 x i8] c"used .ci 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 [6 x i8] c"float\00" +@.str.4235 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.4236 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4237 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" @.str.4238 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [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 [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 [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 [12 x i8] c"src/gen.fch\00" -@.str.4392 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str.4239 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" +@.str.4240 = private unnamed_addr constant [8 x i8] c"fprintf\00" +@.str.4241 = private unnamed_addr constant [6 x i8] c"stdin\00" +@.str.4242 = private unnamed_addr constant [7 x i8] c"stdout\00" +@.str.4243 = private unnamed_addr constant [7 x i8] c"stderr\00" +@.str.4244 = private unnamed_addr constant [2 x i8] c"2\00" +@.str.4245 = private unnamed_addr constant [6 x i8] c"stdin\00" +@.str.4246 = private unnamed_addr constant [2 x i8] c"0\00" +@.str.4247 = private unnamed_addr constant [7 x i8] c"stdout\00" +@.str.4248 = private unnamed_addr constant [2 x i8] c"1\00" +@.str.4249 = private unnamed_addr constant [32 x i8] c"call ptr @finch_std_stream(i32 \00" +@.str.4250 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4251 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4252 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4253 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" +@.str.4254 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4255 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" +@.str.4256 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4257 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4258 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" +@.str.4259 = private unnamed_addr constant [3 x i8] c"g:\00" +@.str.4260 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4261 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" +@.str.4262 = private unnamed_addr constant [3 x i8] c"g:\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 .head on a null pointer\00" +@.str.4265 = private unnamed_addr constant [2 x i8] c"@\00" +@.str.4266 = private unnamed_addr constant [20 x i8] c" = external global \00" +@.str.4267 = private unnamed_addr constant [2 x i8] c"@\00" +@.str.4268 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.4269 = private unnamed_addr constant [44 x i8] c"' is a module; use something from it, like \00" +@.str.4270 = private unnamed_addr constant [11 x i8] c".name(...)\00" +@.str.4271 = private unnamed_addr constant [29 x i8] c"there is no variable named '\00" +@.str.4272 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.4273 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" +@.str.4274 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4275 = private unnamed_addr constant [5 x i8] c"\0A```\00" +@.str.4276 = private unnamed_addr constant [7 x i8] c"member\00" +@.str.4277 = private unnamed_addr constant [6 x i8] c"index\00" +@.str.4278 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4279 = private unnamed_addr constant [2 x i8] c".\00" +@.str.4280 = private unnamed_addr constant [2 x i8] c"0\00" +@.str.4281 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4282 = private unnamed_addr constant [2 x i8] c".\00" +@.str.4283 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4284 = private unnamed_addr constant [2 x i8] c"e\00" +@.str.4285 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4286 = private unnamed_addr constant [2 x i8] c"E\00" +@.str.4287 = private unnamed_addr constant [3 x i8] c".0\00" +@.str.4288 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4289 = private unnamed_addr constant [3 x i8] c".0\00" +@.str.4290 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4291 = private unnamed_addr constant [4 x i8] c"var\00" +@.str.4292 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4293 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.4294 = private unnamed_addr constant [7 x i8] c"member\00" +@.str.4295 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4296 = private unnamed_addr constant [4 x i8] c"var\00" +@.str.4297 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4298 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4299 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4300 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4301 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" +@.str.4302 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4303 = private unnamed_addr constant [10 x i8] c"the enum \00" +@.str.4304 = private unnamed_addr constant [18 x i8] c" has no variant '\00" +@.str.4305 = private unnamed_addr constant [12 x i8] c"' (it has: \00" +@.str.4306 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4307 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4308 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" +@.str.4309 = private unnamed_addr constant [2 x i8] c".\00" +@.str.4310 = private unnamed_addr constant [4 x i8] c" = \00" +@.str.4311 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4312 = private unnamed_addr constant [5 x i8] c"\0A```\00" +@.str.4313 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4314 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4315 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.4316 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4317 = private unnamed_addr constant [38 x i8] c"a variant of an enum can't be changed\00" +@.str.4318 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4319 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4320 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4321 = private unnamed_addr constant [58 x i8] c"this ptr has no type, so Finch doesn't know what's inside\00" +@.str.4322 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00" +@.str.4323 = private unnamed_addr constant [7 x i8] c", null\00" +@.str.4324 = private unnamed_addr constant [7 x i8] c"used .\00" +@.str.4325 = private unnamed_addr constant [19 x i8] c" on a null pointer\00" +@.str.4326 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4327 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.4328 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4329 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.4330 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4331 = private unnamed_addr constant [6 x i8] c"value\00" +@.str.4332 = private unnamed_addr constant [6 x i8] c"value\00" +@.str.4333 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.4334 = private unnamed_addr constant [3 x i8] c"a \00" +@.str.4335 = private unnamed_addr constant [44 x i8] c" only has '.value' (the thing it points to)\00" +@.str.4336 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str.4337 = private unnamed_addr constant [2 x i8] c".\00" +@.str.4338 = private unnamed_addr constant [27 x i8] c" can't be changed directly\00" +@.str.4339 = private unnamed_addr constant [4 x i8] c"len\00" +@.str.4340 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.4341 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4342 = private unnamed_addr constant [35 x i8] c"an array has .len and .ptr, not '.\00" +@.str.4343 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.4344 = private unnamed_addr constant [49 x i8] c".ptr of a temporary value would point to nothing\00" +@.str.4345 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4346 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.4347 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4348 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4349 = private unnamed_addr constant [31 x i8] c".ptr can't be changed directly\00" +@.str.4350 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4351 = private unnamed_addr constant [2 x i8] c"%\00" +@.str.4352 = private unnamed_addr constant [54 x i8] c".ptr of a temporary value would point to freed memory\00" +@.str.4353 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4354 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.4355 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00" +@.str.4356 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.4357 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4358 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.4359 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4360 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.4361 = private unnamed_addr constant [4 x i8] c"len\00" +@.str.4362 = private unnamed_addr constant [38 x i8] c"an array, map or str has .len, not '.\00" +@.str.4363 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.4364 = private unnamed_addr constant [49 x i8] c".len can't be changed directly (use push or pop)\00" +@.str.4365 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.4366 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4367 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" +@.str.4368 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.4369 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.4370 = private unnamed_addr constant [14 x i8] c"extractvalue \00" +@.str.4371 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4372 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str.4373 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.4374 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.4375 = private unnamed_addr constant [22 x i8] c" has no fields (no '.\00" +@.str.4376 = private unnamed_addr constant [3 x i8] c"')\00" +@.str.4377 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4378 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.4379 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4380 = private unnamed_addr constant [12 x i8] c"the struct \00" +@.str.4381 = private unnamed_addr constant [16 x i8] c" has no field '\00" +@.str.4382 = private unnamed_addr constant [12 x i8] c"' (it has: \00" +@.str.4383 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4384 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4385 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4386 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" +@.str.4387 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4388 = private unnamed_addr constant [5 x i8] c"\0A```\00" +@.str.4389 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4390 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.4391 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4392 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \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 [6 x i8] c"float\00" +@.str.4394 = private unnamed_addr constant [14 x i8] c"extractvalue \00" +@.str.4395 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4396 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4397 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [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.4399 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4400 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" +@.str.4401 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.4402 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4403 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.4404 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4405 = private unnamed_addr constant [9 x i8] c"an index\00" +@.str.4406 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str.4407 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4408 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.4409 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4410 = private unnamed_addr constant [14 x i8] c", i64 0, i64 \00" +@.str.4411 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4412 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4413 = private unnamed_addr constant [58 x i8] c"this ptr has no type, so Finch doesn't know what's inside\00" +@.str.4414 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4415 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4416 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.4417 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4418 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.4419 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.4420 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4421 = private unnamed_addr constant [47 x i8] c"[ ] works on arrays, str and pointers, not on \00" +@.str.4422 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.4423 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.4424 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4425 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4426 = private unnamed_addr constant [45 x i8] c"this is a temporary str, it can't be changed\00" +@.str.4427 = private unnamed_addr constant [30 x i8] c"call void @finch_str_own(ptr \00" +@.str.4428 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4429 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.4430 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00" +@.str.4431 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str.4432 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00" +@.str.4433 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.4434 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.4435 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4436 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.4437 = private unnamed_addr constant [18 x i8] c"named arguments (\00" +@.str.4438 = private unnamed_addr constant [37 x i8] c": ...) are only for creating structs\00" +@.str.4439 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.4440 = private unnamed_addr constant [9 x i8] c"' takes \00" +@.str.4441 = private unnamed_addr constant [23 x i8] c" argument(s), but got \00" +@.str.4442 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4443 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.4444 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.4445 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.4446 = private unnamed_addr constant [4 x i8] c"f64\00" +@.str.4447 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.4448 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.4449 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.4450 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.4451 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4452 = private unnamed_addr constant [3 x i8] c"i8\00" +@.str.4453 = private unnamed_addr constant [4 x i8] c"i16\00" +@.str.4454 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.4455 = private unnamed_addr constant [3 x i8] c"u8\00" +@.str.4456 = private unnamed_addr constant [4 x i8] c"u16\00" +@.str.4457 = private unnamed_addr constant [4 x i8] c"u32\00" +@.str.4458 = private unnamed_addr constant [4 x i8] c"u64\00" +@.str.4459 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.4460 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4461 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4462 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4463 = private unnamed_addr constant [4 x i8] c"str\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.4465 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" +@.str.4466 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.4467 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.4468 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" +@.str.4469 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.4470 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.4471 = private unnamed_addr constant [2 x i8] c"0\00" +@.str.4472 = private unnamed_addr constant [33 x i8] c"call i32 @finch_str_try_int(ptr \00" +@.str.4473 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4474 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4475 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4476 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" +@.str.4477 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.4478 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4479 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" +@.str.4480 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\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.4482 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" +@.str.4483 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.4484 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.4485 = private unnamed_addr constant [7 x i8] c"double\00" +@.str.4486 = private unnamed_addr constant [7 x i8] c"double\00" +@.str.4487 = private unnamed_addr constant [4 x i8] c"0.0\00" +@.str.4488 = private unnamed_addr constant [35 x i8] c"call i32 @finch_str_try_float(ptr \00" +@.str.4489 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4490 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4491 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4492 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" +@.str.4493 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.4494 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4495 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" +@.str.4496 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.4497 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4498 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" +@.str.4499 = private unnamed_addr constant [7 x i8] c"double\00" +@.str.4500 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.4501 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4502 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4503 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" +@.str.4504 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4505 = private unnamed_addr constant [32 x i8] c"call i64 @finch_str_to_int(ptr \00" +@.str.4506 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4507 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.4508 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4509 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.4510 = private unnamed_addr constant [37 x i8] c"call double @finch_str_to_float(ptr \00" +@.str.4511 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4512 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.4513 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4514 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.4515 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.4516 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.4517 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.4518 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.4519 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4520 = private unnamed_addr constant [9 x i8] c"zext i1 \00" +@.str.4521 = private unnamed_addr constant [5 x i8] c" to \00" +@.str.4522 = private unnamed_addr constant [7 x i8] c"fptoui\00" +@.str.4523 = private unnamed_addr constant [7 x i8] c"fptosi\00" +@.str.4524 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4525 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4526 = private unnamed_addr constant [5 x i8] c" to \00" +@.str.4527 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4528 = private unnamed_addr constant [9 x i8] c"icmp ne \00" +@.str.4529 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4530 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.4531 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4532 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4533 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.4534 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4535 = private unnamed_addr constant [14 x i8] c"inttoptr i64 \00" +@.str.4536 = private unnamed_addr constant [4 x i8] c"u64\00" +@.str.4537 = private unnamed_addr constant [8 x i8] c" to ptr\00" +@.str.4538 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4539 = private unnamed_addr constant [14 x i8] c"ptrtoint ptr \00" +@.str.4540 = private unnamed_addr constant [5 x i8] c" to \00" +@.str.4541 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4542 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4543 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4544 = 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.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.4546 = private unnamed_addr constant [12 x i8] c"can't turn \00" +@.str.4547 = private unnamed_addr constant [7 x i8] c" into \00" +@.str.4548 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.4549 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4550 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.4551 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4552 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str.4553 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4554 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4555 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4556 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.4557 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.4558 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4559 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.4560 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4561 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.4562 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4563 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.4565 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str.4566 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4567 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4568 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.4569 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4570 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.4571 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4572 = private unnamed_addr constant [7 x i8] c"double\00" +@.str.4573 = private unnamed_addr constant [7 x i8] c"expand\00" +@.str.4574 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.4575 = private unnamed_addr constant [4 x i8] c" x \00" +@.str.4576 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.4577 = private unnamed_addr constant [3 x i8] c"{ \00" +@.str.4578 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4579 = private unnamed_addr constant [3 x i8] c" }\00" +@.str.4580 = private unnamed_addr constant [9 x i8] c"indirect\00" +@.str.4581 = private unnamed_addr constant [7 x i8] c"expand\00" +@.str.4582 = private unnamed_addr constant [5 x i8] c"i128\00" +@.str.4583 = private unnamed_addr constant [5 x i8] c"i128\00" +@.str.4584 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.4585 = private unnamed_addr constant [2 x i8] c"i\00" +@.str.4586 = private unnamed_addr constant [10 x i8] c"[2 x i64]\00" +@.str.4587 = private unnamed_addr constant [10 x i8] c"[2 x i64]\00" +@.str.4588 = private unnamed_addr constant [7 x i8] c"direct\00" +@.str.4589 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.4590 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4591 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.4592 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4593 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4594 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" +@.str.4595 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4596 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" +@.str.4597 = private unnamed_addr constant [7 x i8] c"expand\00" +@.str.4598 = private unnamed_addr constant [2 x i8] c"i\00" +@.str.4599 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4600 = private unnamed_addr constant [9 x i8] c"indirect\00" +@.str.4601 = private unnamed_addr constant [7 x i8] c"memory\00" +@.str.4602 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4603 = private unnamed_addr constant [17 x i8] c"division by zero\00" +@.str.4604 = private unnamed_addr constant [7 x i8] c"memory\00" +@.str.4605 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4606 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4607 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.4609 = private unnamed_addr constant [7 x i8] c"expand\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.4612 = private unnamed_addr constant [7 x i8] c"double\00" +@.str.4613 = private unnamed_addr constant [12 x i8] c"<2 x float>\00" +@.str.4614 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.4615 = private unnamed_addr constant [2 x i8] c"i\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.4617 = private unnamed_addr constant [3 x i8] c"{ \00" +@.str.4618 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4619 = private unnamed_addr constant [3 x i8] c" }\00" +@.str.4620 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.4621 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.4622 = private unnamed_addr constant [9 x i8] c"indirect\00" +@.str.4623 = private unnamed_addr constant [7 x i8] c"memory\00" +@.str.4624 = private unnamed_addr constant [7 x i8] c"memory\00" +@.str.4625 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.4626 = private unnamed_addr constant [7 x i8] c"expand\00" +@.str.4627 = private unnamed_addr constant [7 x i8] c"expand\00" +@.str.4628 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4629 = private unnamed_addr constant [2 x i8] c"i\00" +@.str.4630 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4631 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" +@.str.4632 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4633 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" +@.str.4634 = private unnamed_addr constant [7 x i8] c"memory\00" +@.str.4635 = private unnamed_addr constant [7 x i8] c"direct\00" +@.str.4636 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.4637 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4638 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.4639 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4640 = private unnamed_addr constant [17 x i8] c"the C function '\00" +@.str.4641 = private unnamed_addr constant [3 x i8] c"' \00" +@.str.4642 = private unnamed_addr constant [19 x i8] c" the Finch struct \00" +@.str.4643 = private unnamed_addr constant [21 x i8] c", which C can't take\00" +@.str.4644 = private unnamed_addr constant [17 x i8] c"the C function '\00" +@.str.4645 = private unnamed_addr constant [3 x i8] c"' \00" +@.str.4646 = private unnamed_addr constant [13 x i8] c" the struct \00" +@.str.4647 = private unnamed_addr constant [41 x i8] c" by value, which Finch can't do yet: it \00" +@.str.4648 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4649 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.4650 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4651 = private unnamed_addr constant [60 x i8] c"methods can't be exported (export a plain fn that calls it)\00" +@.str.4652 = 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.4653 = private unnamed_addr constant [30 x i8] c"an export fn can't be generic\00" +@.str.4654 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4655 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4656 = private unnamed_addr constant [67 x i8] c"an export fn takes numbers, bool, char and pointers only (this is \00" +@.str.4657 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4658 = private unnamed_addr constant [51 x i8] c"; pass text as ptr[char] and make it a str inside)\00" +@.str.4659 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.4660 = private unnamed_addr constant [70 x i8] c"an export fn returns nothing, a number, bool, char or a pointer (not \00" +@.str.4661 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4662 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4663 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.4664 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.4665 = private unnamed_addr constant [39 x i8] c"' is exported twice (from two modules)\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 [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.4667 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4668 = private unnamed_addr constant [14 x i8] c"i8 zeroext %e\00" +@.str.4669 = private unnamed_addr constant [4 x i8] c"i1 \00" +@.str.4670 = private unnamed_addr constant [14 x i8] c"icmp ne i8 %e\00" +@.str.4671 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.4672 = private unnamed_addr constant [4 x i8] c" %e\00" +@.str.4673 = private unnamed_addr constant [4 x i8] c" %e\00" +@.str.4674 = private unnamed_addr constant [6 x i8] c"call \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 [5 x i8] c"void\00" +@.str.4676 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.4677 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4678 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4679 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.4680 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4681 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.4682 = private unnamed_addr constant [9 x i8] c"ret void\00" +@.str.4683 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4684 = private unnamed_addr constant [3 x i8] c"i8\00" +@.str.4685 = private unnamed_addr constant [9 x i8] c" zeroext\00" +@.str.4686 = private unnamed_addr constant [8 x i8] c"ret i8 \00" +@.str.4687 = private unnamed_addr constant [9 x i8] c"zext i1 \00" +@.str.4688 = private unnamed_addr constant [7 x i8] c" to i8\00" +@.str.4689 = private unnamed_addr constant [5 x i8] c"ret \00" +@.str.4690 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4691 = private unnamed_addr constant [1 x i8] c"\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 [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 [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 [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"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 [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.4693 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" +@.str.4694 = private unnamed_addr constant [11 x i8] c" dllexport\00" +@.str.4695 = private unnamed_addr constant [7 x i8] c"define\00" +@.str.4696 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4697 = private unnamed_addr constant [3 x i8] c" @\00" +@.str.4698 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.4699 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4700 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4701 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4702 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.4703 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4704 = private unnamed_addr constant [10 x i8] c"@finch.c.\00" +@.str.4705 = private unnamed_addr constant [2 x i8] c".\00" +@.str.4706 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4707 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" +@.str.4708 = private unnamed_addr constant [3 x i8] c"t:\00" +@.str.4709 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4710 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" +@.str.4711 = private unnamed_addr constant [3 x i8] c"t:\00" +@.str.4712 = private unnamed_addr constant [6 x i8] c"addr(\00" +@.str.4713 = 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.4714 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4715 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.4716 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4717 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.4718 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4719 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.4720 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4721 = private unnamed_addr constant [6 x i8] c"addr(\00" +@.str.4722 = 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.4723 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4724 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.4725 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4726 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.4727 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.4728 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4729 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.4730 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4731 = private unnamed_addr constant [6 x i8] c"addr(\00" +@.str.4732 = private unnamed_addr constant [39 x i8] c"): a function given to C can't return \00" +@.str.4733 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4734 = private unnamed_addr constant [10 x i8] c"ptr sret(\00" +@.str.4735 = private unnamed_addr constant [15 x i8] c") align 16 %c0\00" +@.str.4736 = private unnamed_addr constant [4 x i8] c"%c0\00" +@.str.4737 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4738 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4739 = private unnamed_addr constant [7 x i8] c"memory\00" +@.str.4740 = private unnamed_addr constant [11 x i8] c"ptr byval(\00" +@.str.4741 = private unnamed_addr constant [9 x i8] c") align \00" +@.str.4742 = private unnamed_addr constant [4 x i8] c" %c\00" +@.str.4743 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4744 = private unnamed_addr constant [3 x i8] c"%c\00" +@.str.4745 = private unnamed_addr constant [9 x i8] c"indirect\00" +@.str.4746 = private unnamed_addr constant [7 x i8] c"ptr %c\00" +@.str.4747 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4748 = private unnamed_addr constant [3 x i8] c"%c\00" +@.str.4749 = private unnamed_addr constant [7 x i8] c"expand\00" +@.str.4750 = private unnamed_addr constant [10 x i8] c"[32 x i8]\00" +@.str.4751 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4752 = private unnamed_addr constant [4 x i8] c" %c\00" +@.str.4753 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4754 = private unnamed_addr constant [3 x i8] c"%c\00" +@.str.4755 = private unnamed_addr constant [32 x i8] c"getelementptr inbounds i8, ptr \00" +@.str.4756 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.4757 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4758 = private unnamed_addr constant [4 x i8] c" %c\00" +@.str.4759 = private unnamed_addr constant [4 x i8] c" %c\00" +@.str.4760 = private unnamed_addr constant [6 x i8] c"call \00" +@.str.4761 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4762 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.4763 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4764 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4765 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4766 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.4767 = private unnamed_addr constant [9 x i8] c"ret void\00" +@.str.4768 = private unnamed_addr constant [9 x i8] c"ret void\00" +@.str.4769 = private unnamed_addr constant [7 x i8] c"expand\00" +@.str.4770 = private unnamed_addr constant [10 x i8] c"[32 x i8]\00" +@.str.4771 = private unnamed_addr constant [5 x i8] c"ret \00" +@.str.4772 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4773 = private unnamed_addr constant [5 x i8] c"ret \00" +@.str.4774 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4775 = private unnamed_addr constant [16 x i8] c"define internal\00" +@.str.4776 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4777 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4778 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.4779 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4780 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4781 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4782 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" +@.str.4783 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4784 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4785 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4786 = private unnamed_addr constant [55 x i8] c"(...) turns a whole number into the enum, but this is \00" +@.str.4787 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.4788 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4789 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4790 = private unnamed_addr constant [38 x i8] c" is not the number of any variant of \00" +@.str.4791 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.4792 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4793 = private unnamed_addr constant [13 x i8] c"icmp eq i64 \00" +@.str.4794 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4795 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4796 = private unnamed_addr constant [7 x i8] c"or i1 \00" +@.str.4797 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4798 = private unnamed_addr constant [8 x i8] c"xor i1 \00" +@.str.4799 = private unnamed_addr constant [7 x i8] c", true\00" +@.str.4800 = private unnamed_addr constant [33 x i8] c"this number is not a variant of \00" +@.str.4801 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" +@.str.4802 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str.4803 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4804 = private unnamed_addr constant [9 x i8] c" zeroext\00" +@.str.4805 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.4806 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4807 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" +@.str.4808 = private unnamed_addr constant [9 x i8] c" signext\00" +@.str.4809 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.4810 = private unnamed_addr constant [9 x i8] c" zeroext\00" +@.str.4811 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4812 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4813 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4814 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4815 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" +@.str.4816 = private unnamed_addr constant [4 x i8] c"...\00" +@.str.4817 = private unnamed_addr constant [18 x i8] c"C function from `\00" +@.str.4818 = private unnamed_addr constant [8 x i8] c"`\0A```c\0A\00" +@.str.4819 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4820 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.4821 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4822 = private unnamed_addr constant [6 x i8] c")\0A```\00" +@.str.4823 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4824 = private unnamed_addr constant [17 x i8] c"the C function '\00" +@.str.4825 = private unnamed_addr constant [36 x i8] c"' can't be used from Finch yet: it \00" +@.str.4826 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.4827 = private unnamed_addr constant [18 x i8] c"' takes at least \00" +@.str.4828 = private unnamed_addr constant [23 x i8] c" argument(s), but got \00" +@.str.4829 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.4830 = private unnamed_addr constant [9 x i8] c"' takes \00" +@.str.4831 = private unnamed_addr constant [23 x i8] c" argument(s), but got \00" +@.str.4832 = private unnamed_addr constant [8 x i8] c"returns\00" +@.str.4833 = private unnamed_addr constant [6 x i8] c"takes\00" +@.str.4834 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4835 = private unnamed_addr constant [10 x i8] c"ptr sret(\00" +@.str.4836 = private unnamed_addr constant [11 x i8] c") align 16\00" +@.str.4837 = private unnamed_addr constant [10 x i8] c"ptr sret(\00" +@.str.4838 = private unnamed_addr constant [12 x i8] c") align 16 \00" +@.str.4839 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4840 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" +@.str.4841 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4842 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4843 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4844 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4845 = private unnamed_addr constant [10 x i8] c"argument \00" +@.str.4846 = private unnamed_addr constant [5 x i8] c" of \00" +@.str.4847 = private unnamed_addr constant [7 x i8] c"memory\00" +@.str.4848 = private unnamed_addr constant [11 x i8] c"ptr byval(\00" +@.str.4849 = private unnamed_addr constant [9 x i8] c") align \00" +@.str.4850 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4851 = private unnamed_addr constant [9 x i8] c"indirect\00" +@.str.4852 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4853 = private unnamed_addr constant [5 x i8] c"ptr \00" +@.str.4854 = private unnamed_addr constant [7 x i8] c"expand\00" +@.str.4855 = private unnamed_addr constant [10 x i8] c"[32 x i8]\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"getelementptr inbounds i8, ptr \00" +@.str.4858 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.4859 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4860 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4861 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4862 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4863 = private unnamed_addr constant [5 x i8] c"ptr \00" +@.str.4864 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4865 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4866 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.4867 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4868 = private unnamed_addr constant [24 x i8] c"this gives back nothing\00" +@.str.4869 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.4870 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.4871 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4872 = private unnamed_addr constant [69 x i8] c"structs and arrays can't be passed to the '...' part of a C function\00" +@.str.4873 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.4874 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.4875 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.4876 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4877 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4878 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4879 = private unnamed_addr constant [9 x i8] c"zext i1 \00" +@.str.4880 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str.4881 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.4882 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.4883 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.4884 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.4885 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4886 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4887 = private unnamed_addr constant [7 x i8] c"direct\00" +@.str.4888 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4889 = private unnamed_addr constant [6 x i8] c", ...\00" +@.str.4890 = private unnamed_addr constant [4 x i8] c"...\00" +@.str.4891 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4892 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" +@.str.4893 = private unnamed_addr constant [3 x i8] c"f:\00" @.str.4894 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.4895 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" +@.str.4896 = private unnamed_addr constant [3 x i8] c"f:\00" +@.str.4897 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4898 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00" +@.str.4899 = private unnamed_addr constant [8 x i8] c"declare\00" +@.str.4900 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4901 = private unnamed_addr constant [3 x i8] c" @\00" +@.str.4902 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.4903 = private unnamed_addr constant [3 x i8] c", \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 [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 [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 [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 [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.4905 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4906 = private unnamed_addr constant [3 x i8] c" (\00" +@.str.4907 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4908 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4909 = private unnamed_addr constant [5 x i8] c"call\00" +@.str.4910 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4911 = private unnamed_addr constant [3 x i8] c" @\00" +@.str.4912 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.4913 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4914 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4915 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.4916 = private unnamed_addr constant [7 x i8] c"expand\00" +@.str.4917 = private unnamed_addr constant [10 x i8] c"[32 x i8]\00" +@.str.4918 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4919 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.4920 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" +@.str.4921 = private unnamed_addr constant [33 x i8] c"call void @finch_str_from_c(ptr \00" +@.str.4922 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4923 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4924 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.4925 = private unnamed_addr constant [7 x i8] c"printf\00" +@.str.4926 = private unnamed_addr constant [7 x i8] c"fflush\00" +@.str.4927 = private unnamed_addr constant [5 x i8] c"exit\00" +@.str.4928 = private unnamed_addr constant [5 x i8] c"free\00" +@.str.4929 = private unnamed_addr constant [6 x i8] c"qsort\00" +@.str.4930 = private unnamed_addr constant [7 x i8] c"printf\00" +@.str.4931 = private unnamed_addr constant [5 x i8] c"puts\00" +@.str.4932 = private unnamed_addr constant [8 x i8] c"putchar\00" +@.str.4933 = private unnamed_addr constant [6 x i8] c"scanf\00" +@.str.4934 = private unnamed_addr constant [6 x i8] c"fopen\00" +@.str.4935 = private unnamed_addr constant [8 x i8] c"getchar\00" +@.str.4936 = private unnamed_addr constant [5 x i8] c"sqrt\00" +@.str.4937 = private unnamed_addr constant [4 x i8] c"pow\00" +@.str.4938 = private unnamed_addr constant [4 x i8] c"sin\00" +@.str.4939 = private unnamed_addr constant [4 x i8] c"cos\00" +@.str.4940 = private unnamed_addr constant [6 x i8] c"floor\00" +@.str.4941 = private unnamed_addr constant [5 x i8] c"fabs\00" +@.str.4942 = private unnamed_addr constant [7 x i8] c"malloc\00" +@.str.4943 = private unnamed_addr constant [5 x i8] c"rand\00" +@.str.4944 = private unnamed_addr constant [6 x i8] c"srand\00" +@.str.4945 = private unnamed_addr constant [4 x i8] c"abs\00" +@.str.4946 = private unnamed_addr constant [5 x i8] c"atoi\00" +@.str.4947 = private unnamed_addr constant [7 x i8] c"strlen\00" +@.str.4948 = private unnamed_addr constant [7 x i8] c"strcpy\00" +@.str.4949 = private unnamed_addr constant [7 x i8] c"memcpy\00" +@.str.4950 = private unnamed_addr constant [5 x i8] c"time\00" +@.str.4951 = private unnamed_addr constant [6 x i8] c"sleep\00" +@.str.4952 = private unnamed_addr constant [7 x i8] c"usleep\00" +@.str.4953 = private unnamed_addr constant [8 x i8] c"stdio.h\00" +@.str.4954 = private unnamed_addr constant [8 x i8] c"stdio.h\00" +@.str.4955 = private unnamed_addr constant [8 x i8] c"stdio.h\00" +@.str.4956 = private unnamed_addr constant [8 x i8] c"stdio.h\00" +@.str.4957 = private unnamed_addr constant [8 x i8] c"stdio.h\00" +@.str.4958 = private unnamed_addr constant [8 x i8] c"stdio.h\00" +@.str.4959 = private unnamed_addr constant [7 x i8] c"math.h\00" +@.str.4960 = private unnamed_addr constant [7 x i8] c"math.h\00" +@.str.4961 = private unnamed_addr constant [7 x i8] c"math.h\00" +@.str.4962 = private unnamed_addr constant [7 x i8] c"math.h\00" +@.str.4963 = private unnamed_addr constant [7 x i8] c"math.h\00" +@.str.4964 = private unnamed_addr constant [7 x i8] c"math.h\00" +@.str.4965 = private unnamed_addr constant [9 x i8] c"stdlib.h\00" +@.str.4966 = private unnamed_addr constant [9 x i8] c"stdlib.h\00" +@.str.4967 = private unnamed_addr constant [9 x i8] c"stdlib.h\00" +@.str.4968 = private unnamed_addr constant [9 x i8] c"stdlib.h\00" +@.str.4969 = private unnamed_addr constant [9 x i8] c"stdlib.h\00" +@.str.4970 = private unnamed_addr constant [9 x i8] c"string.h\00" +@.str.4971 = private unnamed_addr constant [9 x i8] c"string.h\00" +@.str.4972 = private unnamed_addr constant [9 x i8] c"string.h\00" +@.str.4973 = private unnamed_addr constant [7 x i8] c"time.h\00" +@.str.4974 = private unnamed_addr constant [9 x i8] c"unistd.h\00" +@.str.4975 = private unnamed_addr constant [9 x i8] c"unistd.h\00" +@.str.4976 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4977 = private unnamed_addr constant [29 x i8] c" (it's from C: add import \22\00" +@.str.4978 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4979 = private unnamed_addr constant [15 x i8] c"\22 at the top)\00" @.str.4980 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [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.4981 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" +@.str.4982 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4983 = private unnamed_addr constant [6 x i8] c"error\00" +@.str.4984 = 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.4985 = private unnamed_addr constant [6 x i8] c"print\00" +@.str.4986 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4987 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.4988 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4989 = private unnamed_addr constant [54 x i8] c"this gives back nothing, so there is nothing to print\00" +@.str.4990 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4991 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4992 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.4993 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4994 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.4995 = private unnamed_addr constant [5 x i8] c"addr\00" +@.str.4996 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4997 = private unnamed_addr constant [4 x i8] c"var\00" +@.str.4998 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4999 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.5000 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5001 = private unnamed_addr constant [4 x i8] c"var\00" +@.str.5002 = private unnamed_addr constant [7 x i8] c"member\00" +@.str.5003 = private unnamed_addr constant [6 x i8] c"index\00" +@.str.5004 = private unnamed_addr constant [64 x i8] c"addr(...) needs a variable, a field or an element, like addr(x)\00" +@.str.5005 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5006 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.5008 = private unnamed_addr constant [35 x i8] c"call void @finch_str_from_int(ptr \00" +@.str.5009 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5010 = private unnamed_addr constant [4 x i8] c"int\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 [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.5012 = private unnamed_addr constant [36 x i8] c"call void @finch_str_from_uint(ptr \00" +@.str.5013 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5014 = private unnamed_addr constant [4 x i8] c"u64\00" +@.str.5015 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5016 = private unnamed_addr constant [37 x i8] c"call void @finch_str_from_float(ptr \00" +@.str.5017 = private unnamed_addr constant [10 x i8] c", double \00" +@.str.5018 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.5019 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5020 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.5021 = private unnamed_addr constant [36 x i8] c"call void @finch_str_from_char(ptr \00" +@.str.5022 = private unnamed_addr constant [14 x i8] c", i8 signext \00" +@.str.5023 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5024 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.5025 = private unnamed_addr constant [9 x i8] c"zext i1 \00" +@.str.5026 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str.5027 = private unnamed_addr constant [36 x i8] c"call void @finch_str_from_bool(ptr \00" +@.str.5028 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str.5029 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5030 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5031 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5032 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" +@.str.5033 = private unnamed_addr constant [33 x i8] c"call void @finch_str_from_c(ptr \00" +@.str.5034 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5035 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5036 = private unnamed_addr constant [6 x i8] c"array\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.5038 = private unnamed_addr constant [3 x i8] c"u8\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.5040 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.5041 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5042 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" +@.str.5043 = private unnamed_addr constant [37 x i8] c"call void @finch_str_from_bytes(ptr \00" +@.str.5044 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5045 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5046 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.5047 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.5048 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.5049 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.5050 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.5051 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.5052 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5053 = private unnamed_addr constant [16 x i8] c"zeroinitializer\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.5055 = private unnamed_addr constant [12 x i8] c"can't turn \00" +@.str.5056 = private unnamed_addr constant [10 x i8] c" into str\00" +@.str.5057 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5058 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5059 = private unnamed_addr constant [10 x i8] c"read_file\00" +@.str.5060 = private unnamed_addr constant [12 x i8] c"file_exists\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.5062 = private unnamed_addr constant [14 x i8] c"the file name\00" +@.str.5063 = private unnamed_addr constant [12 x i8] c"file_exists\00" +@.str.5064 = private unnamed_addr constant [33 x i8] c"call i32 @finch_file_exists(ptr \00" +@.str.5065 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5066 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" +@.str.5067 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.5068 = private unnamed_addr constant [5 x i8] c"bool\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.5070 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" +@.str.5071 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5072 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5073 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" +@.str.5074 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5075 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" +@.str.5076 = private unnamed_addr constant [35 x i8] c"call i32 @finch_try_read_file(ptr \00" +@.str.5077 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5078 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5079 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5080 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" +@.str.5081 = private unnamed_addr constant [4 x i8] c", 0\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.5083 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" +@.str.5084 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5085 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5086 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" +@.str.5087 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5088 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5089 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5090 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" +@.str.5091 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5092 = private unnamed_addr constant [32 x i8] c"call void @finch_read_file(ptr \00" +@.str.5093 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5094 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5095 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5096 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5097 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5098 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5099 = private unnamed_addr constant [11 x i8] c"write_file\00" +@.str.5100 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5101 = private unnamed_addr constant [14 x i8] c"the file name\00" +@.str.5102 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5103 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\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.5105 = private unnamed_addr constant [9 x i8] c"the text\00" +@.str.5106 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5107 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" +@.str.5108 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5109 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5110 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" +@.str.5111 = private unnamed_addr constant [36 x i8] c"call i32 @finch_try_write_file(ptr \00" +@.str.5112 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5113 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5114 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5115 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" +@.str.5116 = private unnamed_addr constant [4 x i8] c", 0\00" @.str.5117 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.5118 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" +@.str.5119 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\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 [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 [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.5121 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" +@.str.5122 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.5123 = private unnamed_addr constant [32 x i8] c"call i32 @finch_write_file(ptr \00" +@.str.5124 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5125 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5126 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" +@.str.5127 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.5128 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.5129 = private unnamed_addr constant [12 x i8] c"delete_file\00" +@.str.5130 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5131 = private unnamed_addr constant [14 x i8] c"the file name\00" +@.str.5132 = private unnamed_addr constant [31 x i8] c"call void @finch_str_copy(ptr \00" +@.str.5133 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5134 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5135 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5136 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" +@.str.5137 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5138 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\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.5140 = private unnamed_addr constant [37 x i8] c"call i32 @finch_try_delete_file(ptr \00" +@.str.5141 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5142 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5143 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" +@.str.5144 = private unnamed_addr constant [4 x i8] c", 0\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.5146 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" +@.str.5147 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5148 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5149 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" +@.str.5150 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5151 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.5152 = private unnamed_addr constant [33 x i8] c"call i32 @finch_delete_file(ptr \00" +@.str.5153 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5154 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5155 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" +@.str.5156 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.5157 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.5158 = private unnamed_addr constant [6 x i8] c"shell\00" +@.str.5159 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5160 = private unnamed_addr constant [12 x i8] c"the command\00" +@.str.5161 = private unnamed_addr constant [31 x i8] c"call void @finch_str_copy(ptr \00" +@.str.5162 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5163 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5164 = private unnamed_addr constant [27 x i8] c"call i64 @finch_shell(ptr \00" +@.str.5165 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5166 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5167 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.5168 = private unnamed_addr constant [5 x i8] c"exit\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.5170 = private unnamed_addr constant [4 x i8] c"int\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.5172 = private unnamed_addr constant [14 x i8] c"the exit code\00" +@.str.5173 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" +@.str.5174 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str.5175 = private unnamed_addr constant [27 x i8] c"call i32 @fflush(ptr null)\00" +@.str.5176 = private unnamed_addr constant [21 x i8] c"call void @exit(i32 \00" +@.str.5177 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5178 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.5179 = private unnamed_addr constant [6 x i8] c"input\00" +@.str.5180 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5181 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5182 = private unnamed_addr constant [13 x i8] c"the question\00" +@.str.5183 = private unnamed_addr constant [28 x i8] c"call void @finch_input(ptr \00" +@.str.5184 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5185 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5186 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5187 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5188 = private unnamed_addr constant [4 x i8] c"new\00" +@.str.5189 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5190 = private unnamed_addr constant [27 x i8] c"call ptr @finch_alloc(i64 \00" +@.str.5191 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5192 = private unnamed_addr constant [5 x i8] c"free\00" +@.str.5193 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5194 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5195 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5196 = 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.5197 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5198 = private unnamed_addr constant [10 x i8] c"free.drop\00" +@.str.5199 = private unnamed_addr constant [10 x i8] c"free.done\00" +@.str.5200 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00" +@.str.5201 = private unnamed_addr constant [7 x i8] c", null\00" +@.str.5202 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5203 = private unnamed_addr constant [21 x i8] c"call void @free(ptr \00" +@.str.5204 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5205 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.5206 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5207 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.5208 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.5209 = private unnamed_addr constant [48 x i8] c"' is not generic, so it takes no type arguments\00" +@.str.5210 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5211 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5212 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5213 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.5214 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5215 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5216 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.5217 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5218 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.5219 = private unnamed_addr constant [43 x i8] c"' is generic, so say which type it holds: \00" +@.str.5220 = private unnamed_addr constant [11 x i8] c"[int](...)\00" +@.str.5221 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5222 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.5223 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5224 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.5225 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5226 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.5227 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5228 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5229 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" +@.str.5230 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5231 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.5232 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5233 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5234 = private unnamed_addr constant [17 x i8] c"```finch\0Astruct \00" +@.str.5235 = private unnamed_addr constant [4 x i8] c" { \00" +@.str.5236 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5237 = private unnamed_addr constant [7 x i8] c" }\0A```\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.5239 = private unnamed_addr constant [30 x i8] c"used .files 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.5242 = private unnamed_addr constant [31 x i8] c"used .module 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.5244 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" +@.str.5245 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5246 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" +@.str.5247 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5248 = private unnamed_addr constant [2 x i8] c"C\00" +@.str.5249 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.5250 = private unnamed_addr constant [32 x i8] c"' is a variable, not a function\00" +@.str.5251 = private unnamed_addr constant [29 x i8] c"there is no function named '\00" +@.str.5252 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.5253 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5254 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.5255 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5256 = private unnamed_addr constant [5 x i8] c"main\00" +@.str.5257 = private unnamed_addr constant [53 x i8] c"main can't be called, it is where the program starts\00" +@.str.5258 = private unnamed_addr constant [5 x i8] c"ptr \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.5260 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" +@.str.5261 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5262 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5263 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5264 = private unnamed_addr constant [11 x i8] c"argument '\00" +@.str.5265 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5266 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.5267 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.5269 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5270 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5271 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" +@.str.5272 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.5273 = private unnamed_addr constant [40 x i8] c"' can fail, so say what happens then: \00" +@.str.5274 = private unnamed_addr constant [20 x i8] c"(...) or , \00" +@.str.5275 = private unnamed_addr constant [28 x i8] c"(...) or { ... }, or try \00" +@.str.5276 = private unnamed_addr constant [6 x i8] c"(...)\00" +@.str.5277 = private unnamed_addr constant [6 x i8] c"call \00" +@.str.5278 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5279 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.5280 = private unnamed_addr constant [3 x i8] c", \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 [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.5282 = private unnamed_addr constant [14 x i8] c"extractvalue \00" +@.str.5283 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5284 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.5285 = private unnamed_addr constant [8 x i8] c"xor i1 \00" +@.str.5286 = private unnamed_addr constant [7 x i8] c", true\00" +@.str.5287 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5288 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" +@.str.5289 = private unnamed_addr constant [14 x i8] c"extractvalue \00" +@.str.5290 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5291 = private unnamed_addr constant [4 x i8] c", 2\00" +@.str.5292 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5293 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" +@.str.5294 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.5295 = private unnamed_addr constant [14 x i8] c"extractvalue \00" +@.str.5296 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5297 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str.5298 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.5299 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5300 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.5301 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5302 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5303 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.5304 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5305 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5306 = private unnamed_addr constant [7 x i8] c"struct\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.5308 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5309 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5310 = 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.5311 = private unnamed_addr constant [6 x i8] c" has \00" +@.str.5312 = private unnamed_addr constant [18 x i8] c" fields, but got \00" +@.str.5313 = private unnamed_addr constant [24 x i8] c" values (or name them: \00" +@.str.5314 = private unnamed_addr constant [16 x i8] c"(field: value))\00" +@.str.5315 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5316 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5317 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5318 = private unnamed_addr constant [16 x i8] c" has no field '\00" +@.str.5319 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5320 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.5321 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5322 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5323 = private unnamed_addr constant [12 x i8] c"the field '\00" +@.str.5324 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5325 = private unnamed_addr constant [17 x i8] c"' is given twice\00" +@.str.5326 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5327 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" +@.str.5328 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5329 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" +@.str.5330 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5331 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5332 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5333 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5334 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5335 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5336 = private unnamed_addr constant [12 x i8] c"the field '\00" +@.str.5337 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5338 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.5339 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5340 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5341 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\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.5343 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.5344 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5345 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" +@.str.5346 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5347 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" +@.str.5348 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5349 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" +@.str.5350 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5351 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" +@.str.5352 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5353 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.5354 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5355 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\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.5357 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.5359 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5360 = private unnamed_addr constant [17 x i8] c"the default of '\00" +@.str.5361 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5362 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.5363 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5364 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.5365 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5366 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" +@.str.5367 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5368 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" +@.str.5369 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5370 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.5371 = private unnamed_addr constant [13 x i8] c"insertvalue \00" +@.str.5372 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5373 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5374 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5375 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5376 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5377 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5378 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" +@.str.5379 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5380 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5381 = private unnamed_addr constant [4 x i8] c"var\00" +@.str.5382 = private unnamed_addr constant [39 x i8] c"there is no variable or module named '\00" +@.str.5383 = private unnamed_addr constant [33 x i8] c"' (to use a module, add import \00" +@.str.5384 = private unnamed_addr constant [14 x i8] c" at the top)\00" +@.str.5385 = private unnamed_addr constant [2 x i8] c".\00" +@.str.5386 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5387 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5388 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5389 = private unnamed_addr constant [2 x i8] c".\00" +@.str.5390 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5391 = private unnamed_addr constant [13 x i8] c"the module '\00" +@.str.5392 = private unnamed_addr constant [36 x i8] c"' has no function or struct named '\00" +@.str.5393 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.5394 = private unnamed_addr constant [5 x i8] c"push\00" +@.str.5395 = private unnamed_addr constant [4 x i8] c"pop\00" +@.str.5396 = private unnamed_addr constant [7 x i8] c"insert\00" +@.str.5397 = private unnamed_addr constant [7 x i8] c"remove\00" +@.str.5398 = private unnamed_addr constant [6 x i8] c"clear\00" +@.str.5399 = private unnamed_addr constant [7 x i8] c"resize\00" +@.str.5400 = private unnamed_addr constant [5 x i8] c"sort\00" +@.str.5401 = private unnamed_addr constant [8 x i8] c"reverse\00" +@.str.5402 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5403 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" +@.str.5404 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.5405 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5406 = private unnamed_addr constant [64 x i8] c"() would change a temporary array; store it in a variable first\00" +@.str.5407 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5408 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5409 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.5410 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5411 = private unnamed_addr constant [62 x i8] c"() would change a temporary map; store it in a variable first\00" +@.str.5412 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5413 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5414 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5415 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.5416 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5417 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00" +@.str.5418 = private unnamed_addr constant [7 x i8] c", null\00" +@.str.5419 = private unnamed_addr constant [9 x i8] c"called .\00" +@.str.5420 = private unnamed_addr constant [21 x i8] c"() on a null pointer\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 [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 [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 [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 .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.5422 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.5423 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.5424 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.5425 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.5426 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.5427 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5428 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.5429 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5430 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5431 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.5432 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5433 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5434 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.5435 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5436 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5437 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.5438 = private unnamed_addr constant [5 x i8] c"the \00" +@.str.5439 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5440 = private unnamed_addr constant [35 x i8] c" has no methods; add one with fn \00" +@.str.5441 = private unnamed_addr constant [2 x i8] c".\00" +@.str.5442 = private unnamed_addr constant [14 x i8] c"(...) { ... }\00" +@.str.5443 = private unnamed_addr constant [5 x i8] c"the \00" +@.str.5444 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5445 = private unnamed_addr constant [17 x i8] c" has no method '\00" +@.str.5446 = private unnamed_addr constant [12 x i8] c"' (it has: \00" +@.str.5447 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5448 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5449 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5450 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.5451 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5452 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.5453 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.5454 = private unnamed_addr constant [29 x i8] c"() would change a temporary \00" +@.str.5455 = private unnamed_addr constant [31 x i8] c"; store it in a variable first\00" +@.str.5456 = private unnamed_addr constant [20 x i8] c"the loop variable '\00" +@.str.5457 = private unnamed_addr constant [19 x i8] c"' can't be changed\00" +@.str.5458 = private unnamed_addr constant [2 x i8] c".\00" +@.str.5459 = private unnamed_addr constant [16 x i8] c" has no methods\00" +@.str.5460 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5461 = private unnamed_addr constant [47 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr \00" +@.str.5462 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" +@.str.5463 = private unnamed_addr constant [5 x i8] c"push\00" +@.str.5464 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5465 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5466 = private unnamed_addr constant [12 x i8] c"the element\00" +@.str.5467 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5468 = private unnamed_addr constant [9 x i8] c"add i64 \00" +@.str.5469 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str.5470 = private unnamed_addr constant [34 x i8] c"call void @finch_arr_reserve(ptr \00" +@.str.5471 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5472 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5473 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5474 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5475 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.5476 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5477 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5478 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5479 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.5480 = private unnamed_addr constant [4 x i8] c"pop\00" +@.str.5481 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5482 = private unnamed_addr constant [13 x i8] c"icmp eq i64 \00" +@.str.5483 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.5484 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" +@.str.5485 = private unnamed_addr constant [9 x i8] c"sub i64 \00" +@.str.5486 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str.5487 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5488 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.5489 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5490 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5491 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5492 = private unnamed_addr constant [6 x i8] c"clear\00" +@.str.5493 = private unnamed_addr constant [2 x i8] c"0\00" +@.str.5494 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5495 = private unnamed_addr constant [2 x i8] c"0\00" +@.str.5496 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.5497 = private unnamed_addr constant [5 x i8] c"find\00" +@.str.5498 = private unnamed_addr constant [9 x i8] c"contains\00" +@.str.5499 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5500 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5501 = private unnamed_addr constant [22 x i8] c"the value to look for\00" +@.str.5502 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5503 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5504 = private unnamed_addr constant [3 x i8] c"-1\00" +@.str.5505 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5506 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5507 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5508 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5509 = private unnamed_addr constant [2 x i8] c"0\00" +@.str.5510 = private unnamed_addr constant [10 x i8] c"find.cond\00" +@.str.5511 = private unnamed_addr constant [10 x i8] c"find.body\00" +@.str.5512 = private unnamed_addr constant [9 x i8] c"find.hit\00" +@.str.5513 = private unnamed_addr constant [10 x i8] c"find.next\00" +@.str.5514 = private unnamed_addr constant [9 x i8] c"find.end\00" +@.str.5515 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5516 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" +@.str.5517 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5518 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.5519 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5520 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5521 = private unnamed_addr constant [3 x i8] c"==\00" +@.str.5522 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5523 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5524 = private unnamed_addr constant [9 x i8] c"add i64 \00" +@.str.5525 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str.5526 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5527 = private unnamed_addr constant [5 x i8] c"find\00" +@.str.5528 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.5529 = private unnamed_addr constant [14 x i8] c"icmp sge i64 \00" +@.str.5530 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.5531 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.5532 = private unnamed_addr constant [5 x i8] c"join\00" +@.str.5533 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5534 = private unnamed_addr constant [32 x i8] c"join() works on an array of str\00" +@.str.5535 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5536 = private unnamed_addr constant [14 x i8] c"the separator\00" +@.str.5537 = private unnamed_addr constant [31 x i8] c"call void @finch_str_join(ptr \00" +@.str.5538 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5539 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5540 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5541 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5542 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5543 = private unnamed_addr constant [7 x i8] c"insert\00" +@.str.5544 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5545 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.5546 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5547 = private unnamed_addr constant [13 x i8] c"the position\00" +@.str.5548 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5549 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5550 = private unnamed_addr constant [12 x i8] c"the element\00" +@.str.5551 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5552 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" +@.str.5553 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5554 = private unnamed_addr constant [37 x i8] c"call void @finch_arr_insert_gap(ptr \00" +@.str.5555 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5556 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5557 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5558 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5559 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5560 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5561 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \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.5563 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5564 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.5565 = private unnamed_addr constant [7 x i8] c"remove\00" +@.str.5566 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5567 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.5568 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5569 = private unnamed_addr constant [13 x i8] c"the position\00" +@.str.5570 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5571 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5572 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \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.5574 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5575 = private unnamed_addr constant [37 x i8] c"call void @finch_arr_remove_gap(ptr \00" +@.str.5576 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5577 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5578 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5579 = private unnamed_addr constant [7 x i8] c"resize\00" +@.str.5580 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5581 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.5582 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5583 = private unnamed_addr constant [15 x i8] c"the new length\00" +@.str.5584 = private unnamed_addr constant [33 x i8] c"call void @finch_arr_resize(ptr \00" +@.str.5585 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5586 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5587 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5588 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.5589 = private unnamed_addr constant [8 x i8] c"reverse\00" +@.str.5590 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5591 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5592 = private unnamed_addr constant [10 x i8] c"sdiv i64 \00" +@.str.5593 = private unnamed_addr constant [4 x i8] c", 2\00" +@.str.5594 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.5595 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5596 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5597 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5598 = private unnamed_addr constant [9 x i8] c"sub i64 \00" +@.str.5599 = private unnamed_addr constant [9 x i8] c"sub i64 \00" +@.str.5600 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str.5601 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5602 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5603 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.5604 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5605 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5606 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.5607 = private unnamed_addr constant [6 x i8] c"slice\00" +@.str.5608 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5609 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.5610 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5611 = private unnamed_addr constant [10 x i8] c"the start\00" +@.str.5612 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5613 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.5614 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5615 = private unnamed_addr constant [8 x i8] c"the end\00" +@.str.5616 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5617 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" +@.str.5618 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.5619 = private unnamed_addr constant [14 x i8] c"icmp sgt i64 \00" +@.str.5620 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5621 = private unnamed_addr constant [14 x i8] c"icmp sgt i64 \00" +@.str.5622 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5623 = private unnamed_addr constant [7 x i8] c"or i1 \00" +@.str.5624 = private unnamed_addr constant [7 x i8] c"or i1 \00" +@.str.5625 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5626 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5627 = private unnamed_addr constant [34 x i8] c"slice(start, end) is out of range\00" +@.str.5628 = private unnamed_addr constant [9 x i8] c"sub i64 \00" +@.str.5629 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5630 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5631 = private unnamed_addr constant [31 x i8] c"call void @finch_arr_make(ptr \00" +@.str.5632 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5633 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5634 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5635 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5636 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5637 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.5638 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5639 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5640 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5641 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.5642 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5643 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5644 = private unnamed_addr constant [9 x i8] c"add i64 \00" +@.str.5645 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5646 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5647 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5648 = private unnamed_addr constant [5 x i8] c"sort\00" +@.str.5649 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.5650 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5651 = private unnamed_addr constant [48 x i8] c"sort() works on arrays of numbers, chars or str\00" +@.str.5652 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5653 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5654 = private unnamed_addr constant [22 x i8] c"call void @qsort(ptr \00" +@.str.5655 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5656 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5657 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5658 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5659 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.5660 = private unnamed_addr constant [25 x i8] c"an array has no method '\00" +@.str.5661 = private unnamed_addr constant [97 x i8] c"' (it has: push, pop, insert, remove, clear, resize, find, contains, join, slice, reverse, sort)\00" +@.str.5662 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5663 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5664 = private unnamed_addr constant [47 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr \00" +@.str.5665 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" +@.str.5666 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5667 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" +@.str.5668 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5669 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" +@.str.5670 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.5671 = private unnamed_addr constant [11 x i8] c"select i1 \00" +@.str.5672 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5673 = private unnamed_addr constant [11 x i8] c"select i1 \00" +@.str.5674 = private unnamed_addr constant [14 x i8] c", i64 0, i64 \00" +@.str.5675 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5676 = private unnamed_addr constant [9 x i8] c"sub i64 \00" +@.str.5677 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5678 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.5679 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5680 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5681 = private unnamed_addr constant [9 x i8] c"add i64 \00" +@.str.5682 = private unnamed_addr constant [3 x i8] c", \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.5684 = private unnamed_addr constant [12 x i8] c"@finch.cmp.\00" +@.str.5685 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5686 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" +@.str.5687 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5688 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" +@.str.5689 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5690 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5691 = private unnamed_addr constant [40 x i8] c"call i64 @finch_str_cmp(ptr %x, ptr %y)\00" +@.str.5692 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" +@.str.5693 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str.5694 = private unnamed_addr constant [3 x i8] c"%x\00" +@.str.5695 = private unnamed_addr constant [3 x i8] c"%y\00" +@.str.5696 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5697 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5698 = private unnamed_addr constant [10 x i8] c"fcmp olt \00" +@.str.5699 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5700 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5701 = private unnamed_addr constant [10 x i8] c"fcmp ogt \00" +@.str.5702 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5703 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5704 = private unnamed_addr constant [6 x i8] c"icmp \00" +@.str.5705 = private unnamed_addr constant [2 x i8] c"<\00" +@.str.5706 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5707 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5708 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5709 = private unnamed_addr constant [6 x i8] c"icmp \00" +@.str.5710 = private unnamed_addr constant [2 x i8] c">\00" +@.str.5711 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5712 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5713 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5714 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str.5715 = private unnamed_addr constant [9 x i8] c"zext i1 \00" +@.str.5716 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str.5717 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5718 = private unnamed_addr constant [9 x i8] c"zext i1 \00" +@.str.5719 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str.5720 = private unnamed_addr constant [9 x i8] c"ret i32 \00" +@.str.5721 = private unnamed_addr constant [21 x i8] c"define internal i32 \00" +@.str.5722 = private unnamed_addr constant [17 x i8] c"(ptr %x, ptr %y)\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.5724 = private unnamed_addr constant [30 x i8] c"used .files 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.5726 = private unnamed_addr constant [4 x i8] c"sub\00" +@.str.5727 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5728 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.5729 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5730 = private unnamed_addr constant [10 x i8] c"the start\00" +@.str.5731 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5732 = private unnamed_addr constant [4 x i8] c"int\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.5734 = private unnamed_addr constant [8 x i8] c"the end\00" +@.str.5735 = private unnamed_addr constant [30 x i8] c"call void @finch_str_sub(ptr \00" +@.str.5736 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5737 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5738 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5739 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5740 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5741 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5742 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5743 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5744 = private unnamed_addr constant [5 x i8] c"find\00" +@.str.5745 = private unnamed_addr constant [9 x i8] c"contains\00" +@.str.5746 = private unnamed_addr constant [12 x i8] c"starts_with\00" +@.str.5747 = private unnamed_addr constant [10 x i8] c"ends_with\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" +@.str.5749 = private unnamed_addr constant [21 x i8] c"the text to look for\00" +@.str.5750 = private unnamed_addr constant [5 x i8] c"find\00" +@.str.5751 = private unnamed_addr constant [30 x i8] c"call i64 @finch_str_find(ptr \00" +@.str.5752 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5753 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5754 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.5755 = private unnamed_addr constant [9 x i8] c"contains\00" +@.str.5756 = private unnamed_addr constant [30 x i8] c"call i64 @finch_str_find(ptr \00" +@.str.5757 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5758 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5759 = private unnamed_addr constant [14 x i8] c"icmp sge i64 \00" +@.str.5760 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.5761 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.5762 = private unnamed_addr constant [18 x i8] c"@finch_str_starts\00" +@.str.5763 = private unnamed_addr constant [10 x i8] c"ends_with\00" +@.str.5764 = private unnamed_addr constant [16 x i8] c"@finch_str_ends\00" +@.str.5765 = private unnamed_addr constant [10 x i8] c"call i32 \00" +@.str.5766 = private unnamed_addr constant [6 x i8] c"(ptr \00" +@.str.5767 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5768 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5769 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" +@.str.5770 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.5771 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.5772 = private unnamed_addr constant [5 x i8] c"trim\00" +@.str.5773 = private unnamed_addr constant [6 x i8] c"upper\00" +@.str.5774 = private unnamed_addr constant [6 x i8] c"lower\00" +@.str.5775 = private unnamed_addr constant [22 x i8] c"call void @finch_str_\00" +@.str.5776 = private unnamed_addr constant [6 x i8] c"(ptr \00" +@.str.5777 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5778 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5779 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5780 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5781 = private unnamed_addr constant [8 x i8] c"replace\00" +@.str.5782 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5783 = private unnamed_addr constant [20 x i8] c"the text to replace\00" +@.str.5784 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5785 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" +@.str.5786 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5787 = private unnamed_addr constant [13 x i8] c"the new text\00" +@.str.5788 = private unnamed_addr constant [34 x i8] c"call void @finch_str_replace(ptr \00" +@.str.5789 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5790 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5791 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5792 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5793 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5794 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5795 = private unnamed_addr constant [6 x i8] c"split\00" +@.str.5796 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5797 = private unnamed_addr constant [14 x i8] c"the separator\00" +@.str.5798 = private unnamed_addr constant [32 x i8] c"call void @finch_str_split(ptr \00" +@.str.5799 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5800 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5801 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5802 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5803 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5804 = private unnamed_addr constant [7 x i8] c"repeat\00" +@.str.5805 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5806 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.5807 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5808 = private unnamed_addr constant [10 x i8] c"the count\00" +@.str.5809 = private unnamed_addr constant [33 x i8] c"call void @finch_str_repeat(ptr \00" +@.str.5810 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5811 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5812 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5813 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5814 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5815 = private unnamed_addr constant [6 x i8] c"bytes\00" +@.str.5816 = private unnamed_addr constant [37 x i8] c"call void @finch_bytes_from_str(ptr \00" +@.str.5817 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5818 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5819 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5820 = private unnamed_addr constant [3 x i8] c"u8\00" +@.str.5821 = private unnamed_addr constant [22 x i8] c"a str has no method '\00" +@.str.5822 = 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.5823 = private unnamed_addr constant [55 x i8] c"declare void @finch_panic(ptr, i64, ptr) noreturn cold\00" +@.str.5824 = private unnamed_addr constant [66 x i8] c"declare void @finch_panic_index(ptr, i64, i64, i64) noreturn cold\00" +@.str.5825 = private unnamed_addr constant [30 x i8] c"declare ptr @finch_alloc(i64)\00" +@.str.5826 = private unnamed_addr constant [39 x i8] c"declare void @finch_str_copy(ptr, ptr)\00" +@.str.5827 = private unnamed_addr constant [34 x i8] c"declare void @finch_str_drop(ptr)\00" +@.str.5828 = private unnamed_addr constant [34 x i8] c"declare void @finch_arr_free(ptr)\00" +@.str.5829 = private unnamed_addr constant [34 x i8] c"declare void @finch_map_free(ptr)\00" +@.str.5830 = private unnamed_addr constant [33 x i8] c"declare void @finch_str_own(ptr)\00" +@.str.5831 = private unnamed_addr constant [46 x i8] c"declare void @finch_str_concat(ptr, ptr, ptr)\00" +@.str.5832 = private unnamed_addr constant [36 x i8] c"declare i32 @finch_str_eq(ptr, ptr)\00" +@.str.5833 = private unnamed_addr constant [37 x i8] c"declare i64 @finch_str_cmp(ptr, ptr)\00" +@.str.5834 = private unnamed_addr constant [43 x i8] c"declare void @finch_buf_add(ptr, ptr, i64)\00" +@.str.5835 = private unnamed_addr constant [38 x i8] c"declare void @finch_buf_int(ptr, i64)\00" +@.str.5836 = private unnamed_addr constant [39 x i8] c"declare void @finch_buf_uint(ptr, i64)\00" +@.str.5837 = private unnamed_addr constant [43 x i8] c"declare void @finch_buf_float(ptr, double)\00" +@.str.5838 = private unnamed_addr constant [39 x i8] c"declare void @finch_buf_bool(ptr, i32)\00" +@.str.5839 = private unnamed_addr constant [38 x i8] c"declare void @finch_buf_ptr(ptr, ptr)\00" +@.str.5840 = private unnamed_addr constant [43 x i8] c"declare void @finch_buf_char(ptr, i8, i32)\00" +@.str.5841 = private unnamed_addr constant [43 x i8] c"declare void @finch_buf_str(ptr, ptr, i32)\00" +@.str.5842 = private unnamed_addr constant [35 x i8] c"declare void @finch_buf_print(ptr)\00" +@.str.5843 = private unnamed_addr constant [43 x i8] c"declare void @finch_str_from_int(ptr, i64)\00" +@.str.5844 = private unnamed_addr constant [44 x i8] c"declare void @finch_str_from_uint(ptr, i64)\00" +@.str.5845 = private unnamed_addr constant [48 x i8] c"declare void @finch_str_from_float(ptr, double)\00" +@.str.5846 = private unnamed_addr constant [51 x i8] c"declare void @finch_str_from_char(ptr, i8 signext)\00" +@.str.5847 = private unnamed_addr constant [44 x i8] c"declare void @finch_str_from_bool(ptr, i32)\00" +@.str.5848 = private unnamed_addr constant [45 x i8] c"declare i64 @finch_str_to_int(ptr, ptr, i64)\00" +@.str.5849 = private unnamed_addr constant [50 x i8] c"declare double @finch_str_to_float(ptr, ptr, i64)\00" +@.str.5850 = private unnamed_addr constant [58 x i8] c"declare void @finch_str_sub(ptr, ptr, i64, i64, ptr, i64)\00" +@.str.5851 = private unnamed_addr constant [38 x i8] c"declare i64 @finch_str_find(ptr, ptr)\00" +@.str.5852 = private unnamed_addr constant [40 x i8] c"declare i32 @finch_str_starts(ptr, ptr)\00" +@.str.5853 = private unnamed_addr constant [38 x i8] c"declare i32 @finch_str_ends(ptr, ptr)\00" +@.str.5854 = private unnamed_addr constant [39 x i8] c"declare void @finch_str_trim(ptr, ptr)\00" +@.str.5855 = private unnamed_addr constant [40 x i8] c"declare void @finch_str_upper(ptr, ptr)\00" +@.str.5856 = private unnamed_addr constant [40 x i8] c"declare void @finch_str_lower(ptr, ptr)\00" +@.str.5857 = private unnamed_addr constant [52 x i8] c"declare void @finch_str_replace(ptr, ptr, ptr, ptr)\00" +@.str.5858 = private unnamed_addr constant [45 x i8] c"declare void @finch_str_split(ptr, ptr, ptr)\00" +@.str.5859 = private unnamed_addr constant [44 x i8] c"declare void @finch_str_join(ptr, ptr, ptr)\00" +@.str.5860 = private unnamed_addr constant [46 x i8] c"declare void @finch_str_repeat(ptr, ptr, i64)\00" +@.str.5861 = private unnamed_addr constant [45 x i8] c"declare void @finch_bytes_from_str(ptr, ptr)\00" +@.str.5862 = private unnamed_addr constant [53 x i8] c"declare i64 @finch_map_find(ptr, ptr, i64, i64, i32)\00" +@.str.5863 = private unnamed_addr constant [58 x i8] c"declare i64 @finch_map_slot(ptr, ptr, i64, i64, i32, ptr)\00" +@.str.5864 = private unnamed_addr constant [49 x i8] c"declare void @finch_map_remove_at(ptr, i64, i64)\00" +@.str.5865 = private unnamed_addr constant [35 x i8] c"declare void @finch_map_clear(ptr)\00" +@.str.5866 = private unnamed_addr constant [49 x i8] c"declare void @finch_map_clone_raw(ptr, ptr, i64)\00" +@.str.5867 = private unnamed_addr constant [61 x i8] c"declare void @finch_map_missing(ptr, i64, ptr) noreturn cold\00" +@.str.5868 = private unnamed_addr constant [56 x i8] c"declare void @finch_map_changed(ptr, i64) noreturn cold\00" +@.str.5869 = private unnamed_addr constant [47 x i8] c"declare void @finch_arr_reserve(ptr, i64, i64)\00" +@.str.5870 = private unnamed_addr constant [49 x i8] c"declare void @finch_arr_clone_raw(ptr, ptr, i64)\00" +@.str.5871 = private unnamed_addr constant [44 x i8] c"declare void @finch_arr_make(ptr, i64, i64)\00" +@.str.5872 = private unnamed_addr constant [46 x i8] c"declare void @finch_arr_resize(ptr, i64, i64)\00" +@.str.5873 = private unnamed_addr constant [60 x i8] c"declare void @finch_arr_insert_gap(ptr, i64, i64, ptr, i64)\00" +@.str.5874 = private unnamed_addr constant [50 x i8] c"declare void @finch_arr_remove_gap(ptr, i64, i64)\00" +@.str.5875 = private unnamed_addr constant [40 x i8] c"declare void @qsort(ptr, i64, i64, ptr)\00" +@.str.5876 = private unnamed_addr constant [40 x i8] c"declare void @finch_args(ptr, i32, ptr)\00" +@.str.5877 = private unnamed_addr constant [36 x i8] c"declare void @finch_input(ptr, ptr)\00" +@.str.5878 = private unnamed_addr constant [36 x i8] c"declare i32 @finch_file_exists(ptr)\00" +@.str.5879 = private unnamed_addr constant [46 x i8] c"declare i32 @finch_str_try_int(ptr, ptr, ptr)\00" +@.str.5880 = private unnamed_addr constant [48 x i8] c"declare i32 @finch_str_try_float(ptr, ptr, ptr)\00" +@.str.5881 = private unnamed_addr constant [48 x i8] c"declare i32 @finch_try_read_file(ptr, ptr, ptr)\00" +@.str.5882 = private unnamed_addr constant [49 x i8] c"declare i32 @finch_try_write_file(ptr, ptr, ptr)\00" +@.str.5883 = private unnamed_addr constant [45 x i8] c"declare i32 @finch_try_delete_file(ptr, ptr)\00" +@.str.5884 = private unnamed_addr constant [38 x i8] c"declare void @finch_report_error(ptr)\00" +@.str.5885 = private unnamed_addr constant [50 x i8] c"declare void @finch_read_file(ptr, ptr, ptr, i64)\00" +@.str.5886 = private unnamed_addr constant [40 x i8] c"declare i32 @finch_write_file(ptr, ptr)\00" +@.str.5887 = private unnamed_addr constant [30 x i8] c"declare i64 @finch_shell(ptr)\00" +@.str.5888 = private unnamed_addr constant [36 x i8] c"declare i32 @finch_delete_file(ptr)\00" +@.str.5889 = private unnamed_addr constant [30 x i8] c"declare i32 @printf(ptr, ...)\00" +@.str.5890 = private unnamed_addr constant [25 x i8] c"declare i32 @fflush(ptr)\00" +@.str.5891 = private unnamed_addr constant [41 x i8] c"declare void @finch_str_from_c(ptr, ptr)\00" +@.str.5892 = private unnamed_addr constant [34 x i8] c"declare void @finch_on_fatal(ptr)\00" +@.str.5893 = private unnamed_addr constant [35 x i8] c"declare ptr @finch_std_stream(i32)\00" +@.str.5894 = private unnamed_addr constant [45 x i8] c"declare void @finch_str_from_bytes(ptr, ptr)\00" +@.str.5895 = private unnamed_addr constant [33 x i8] c"declare void @exit(i32) noreturn\00" +@.str.5896 = private unnamed_addr constant [24 x i8] c"declare void @free(ptr)\00" +@.str.5897 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.5898 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.5899 = private unnamed_addr constant [53 x i8] c"; generated by the Finch compiler written in Finch\0A\0A\00" +@.str.5900 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5901 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" +@.str.5902 = private unnamed_addr constant [18 x i8] c"target triple = \22\00" +@.str.5903 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5904 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" +@.str.5905 = private unnamed_addr constant [4 x i8] c"\22\0A\0A\00" +@.str.5906 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5907 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00" +@.str.5908 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.5909 = private unnamed_addr constant [3 x i8] c"\0A\0A\00" +@.str.5910 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.5911 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5912 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" +@.str.5913 = private unnamed_addr constant [63 x i8] c"declare void @llvm.dbg.declare(metadata, metadata, metadata)\0A\0A\00" +@.str.5914 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5915 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.5916 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.5917 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5918 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" +@.str.5919 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.5920 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5921 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" +@.str.5922 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5923 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" +@.str.5924 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5925 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5926 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" +@.str.5927 = private unnamed_addr constant [34 x i8] c"!{i32 7, !\22Dwarf Version\22, i32 4}\00" +@.str.5928 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5929 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" +@.str.5930 = private unnamed_addr constant [39 x i8] c"!{i32 2, !\22Debug Info Version\22, i32 3}\00" +@.str.5931 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5932 = private unnamed_addr constant [32 x i8] c"used .mdfiles on a null pointer\00" +@.str.5933 = private unnamed_addr constant [20 x i8] c"!DIFile(filename: \22\00" +@.str.5934 = private unnamed_addr constant [16 x i8] c"\22, directory: \22\00" +@.str.5935 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5936 = private unnamed_addr constant [28 x i8] c"used .cwd on a null pointer\00" +@.str.5937 = private unnamed_addr constant [3 x i8] c"\22)\00" +@.str.5938 = private unnamed_addr constant [53 x i8] c"distinct !DICompileUnit(language: DW_LANG_C, file: !\00" +@.str.5939 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5940 = private unnamed_addr constant [32 x i8] c"used .mdfiles on a null pointer\00" +@.str.5941 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5942 = private unnamed_addr constant [85 x i8] c", producer: \22finch\22, isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug)\00" +@.str.5943 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5944 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" +@.str.5945 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5946 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5947 = private unnamed_addr constant [5 x i8] c"main\00" +@.str.5948 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5949 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.5950 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5951 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.5952 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5953 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5954 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5955 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.5956 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5957 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5958 = 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.5959 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5960 = private unnamed_addr constant [65 x i8] c":1:1: error: there is no main function (add 'fn main() { ... }')\00" +@.str.5961 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5962 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.5963 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.5964 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5965 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.5966 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5967 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" +@.str.5968 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5969 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.5970 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5971 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5972 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" +@.str.5973 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.5974 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5975 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.5976 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5977 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5978 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" +@.str.5979 = private unnamed_addr constant [11 x i8] c" dllexport\00" +@.str.5980 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5981 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.5982 = private unnamed_addr constant [7 x i8] c"define\00" +@.str.5983 = 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.5984 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5985 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.5986 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5987 = private unnamed_addr constant [6 x i8] c"call \00" +@.str.5988 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5989 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.5990 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5991 = 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.5992 = private unnamed_addr constant [21 x i8] c"{ ptr, i64, i64 } %a\00" +@.str.5993 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5994 = private unnamed_addr constant [13 x i8] c" ret i32 0\0A\00" +@.str.5995 = private unnamed_addr constant [6 x i8] c"%r = \00" +@.str.5996 = private unnamed_addr constant [3 x i8] c" \00" +@.str.5997 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.5998 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5999 = private unnamed_addr constant [22 x i8] c" %ok = extractvalue \00" +@.str.6000 = 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.6001 = private unnamed_addr constant [21 x i8] c" %m = extractvalue \00" +@.str.6002 = 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.6003 = private unnamed_addr constant [63 x i8] c" call void @finch_report_error(ptr %mp)\0A ret i32 1\0Amain.ok:\0A\00" +@.str.6004 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.6005 = private unnamed_addr constant [21 x i8] c" %v = extractvalue \00" +@.str.6006 = private unnamed_addr constant [54 x i8] c" %r, 1\0A %code = trunc i64 %v to i32\0A ret i32 %code\0A\00" +@.str.6007 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.6008 = private unnamed_addr constant [6 x i8] c"%r = \00" +@.str.6009 = private unnamed_addr constant [47 x i8] c" %code = trunc i64 %r to i32\0A ret i32 %code\0A\00" +@.str.6010 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.6011 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6012 = private unnamed_addr constant [49 x i8] c"define i32 @main(i32 %argc, ptr %argv) {\0Aentry:\0A\00" +@.str.6013 = private unnamed_addr constant [3 x i8] c" \00" +@.str.6014 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6015 = private unnamed_addr constant [3 x i8] c"}\0A\00" +@.str.6016 = private unnamed_addr constant [6 x i8] c"print\00" +@.str.6017 = private unnamed_addr constant [17 x i8] c"print(a, b, ...)\00" +@.str.6018 = private unnamed_addr constant [79 x i8] c"Prints the values separated by spaces, then a new line. Works with every type.\00" +@.str.6019 = private unnamed_addr constant [6 x i8] c"input\00" +@.str.6020 = private unnamed_addr constant [32 x i8] c"input(str question = \22\22) -> str\00" +@.str.6021 = private unnamed_addr constant [78 x i8] c"Shows the question and reads one line typed by the user, without the newline.\00" +@.str.6022 = private unnamed_addr constant [10 x i8] c"read_file\00" +@.str.6023 = private unnamed_addr constant [27 x i8] c"read_file(str path) -> str\00" +@.str.6024 = 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.6025 = private unnamed_addr constant [11 x i8] c"write_file\00" +@.str.6026 = private unnamed_addr constant [39 x i8] c"write_file(str path, str text) -> bool\00" +@.str.6027 = 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.6028 = private unnamed_addr constant [12 x i8] c"file_exists\00" +@.str.6029 = private unnamed_addr constant [30 x i8] c"file_exists(str path) -> bool\00" +@.str.6030 = private unnamed_addr constant [30 x i8] c"Is there a file at this path?\00" +@.str.6031 = private unnamed_addr constant [12 x i8] c"delete_file\00" +@.str.6032 = private unnamed_addr constant [30 x i8] c"delete_file(str path) -> bool\00" +@.str.6033 = 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.6034 = private unnamed_addr constant [6 x i8] c"error\00" +@.str.6035 = private unnamed_addr constant [19 x i8] c"error(str message)\00" +@.str.6036 = 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.6037 = private unnamed_addr constant [6 x i8] c"shell\00" +@.str.6038 = private unnamed_addr constant [26 x i8] c"shell(str command) -> int\00" +@.str.6039 = private unnamed_addr constant [67 x i8] c"Runs a command in the system's shell and gives back its exit code.\00" +@.str.6040 = private unnamed_addr constant [5 x i8] c"exit\00" +@.str.6041 = private unnamed_addr constant [15 x i8] c"exit(int code)\00" +@.str.6042 = private unnamed_addr constant [49 x i8] c"Ends the program right away with this exit code.\00" +@.str.6043 = private unnamed_addr constant [5 x i8] c"addr\00" +@.str.6044 = private unnamed_addr constant [18 x i8] c"addr(x) -> ptr[T]\00" +@.str.6045 = private unnamed_addr constant [78 x i8] c"A pointer to a variable, field or element. addr(function) gives C a callback.\00" +@.str.6046 = private unnamed_addr constant [4 x i8] c"new\00" +@.str.6047 = private unnamed_addr constant [21 x i8] c"new(value) -> ptr[T]\00" +@.str.6048 = private unnamed_addr constant [67 x i8] c"Puts a copy of the value on the heap. Give it back with free(...).\00" +@.str.6049 = private unnamed_addr constant [5 x i8] c"free\00" +@.str.6050 = private unnamed_addr constant [12 x i8] c"free(ptr p)\00" +@.str.6051 = private unnamed_addr constant [74 x i8] c"Gives back memory from new(...) (or from C), freeing what the value owns.\00" +@.str.6052 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.6053 = private unnamed_addr constant [14 x i8] c"str(x) -> str\00" +@.str.6054 = private unnamed_addr constant [62 x i8] c"Turns a number, bool, char, []u8 or C char pointer into text.\00" +@.str.6055 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.6056 = private unnamed_addr constant [14 x i8] c"int(x) -> int\00" +@.str.6057 = 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.6058 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.6059 = private unnamed_addr constant [18 x i8] c"float(x) -> float\00" +@.str.6060 = 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.6061 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.6062 = private unnamed_addr constant [20 x i8] c"char(int n) -> char\00" +@.str.6063 = private unnamed_addr constant [30 x i8] c"The character with this code.\00" +@.str.6064 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.6065 = private unnamed_addr constant [20 x i8] c"bool(int n) -> bool\00" +@.str.6066 = private unnamed_addr constant [27 x i8] c"true for any number but 0.\00" +@.str.6067 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.6068 = private unnamed_addr constant [14 x i8] c"ptr(x) -> ptr\00" +@.str.6069 = 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.6070 = private unnamed_addr constant [4 x i8] c"len\00" +@.str.6071 = private unnamed_addr constant [12 x i8] c".len -> int\00" +@.str.6072 = private unnamed_addr constant [24 x i8] c"The number of elements.\00" +@.str.6073 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.6074 = private unnamed_addr constant [15 x i8] c".ptr -> ptr[T]\00" +@.str.6075 = private unnamed_addr constant [41 x i8] c"The address of the first element, for C.\00" +@.str.6076 = private unnamed_addr constant [5 x i8] c"push\00" +@.str.6077 = private unnamed_addr constant [10 x i8] c"push(T x)\00" +@.str.6078 = private unnamed_addr constant [19 x i8] c"Adds x at the end.\00" +@.str.6079 = private unnamed_addr constant [4 x i8] c"pop\00" +@.str.6080 = private unnamed_addr constant [11 x i8] c"pop() -> T\00" +@.str.6081 = private unnamed_addr constant [44 x i8] c"Removes the last element and gives it back.\00" +@.str.6082 = private unnamed_addr constant [7 x i8] c"insert\00" +@.str.6083 = private unnamed_addr constant [19 x i8] c"insert(int i, T x)\00" +@.str.6084 = private unnamed_addr constant [39 x i8] c"Puts x at position i, moving the rest.\00" +@.str.6085 = private unnamed_addr constant [7 x i8] c"remove\00" +@.str.6086 = private unnamed_addr constant [19 x i8] c"remove(int i) -> T\00" +@.str.6087 = private unnamed_addr constant [38 x i8] c"Removes position i and gives it back.\00" +@.str.6088 = private unnamed_addr constant [6 x i8] c"clear\00" +@.str.6089 = private unnamed_addr constant [8 x i8] c"clear()\00" +@.str.6090 = private unnamed_addr constant [20 x i8] c"Removes everything.\00" +@.str.6091 = private unnamed_addr constant [7 x i8] c"resize\00" +@.str.6092 = private unnamed_addr constant [14 x i8] c"resize(int n)\00" +@.str.6093 = private unnamed_addr constant [47 x i8] c"Makes the array n long; new elements are zero.\00" +@.str.6094 = private unnamed_addr constant [5 x i8] c"find\00" +@.str.6095 = private unnamed_addr constant [17 x i8] c"find(T x) -> int\00" +@.str.6096 = private unnamed_addr constant [23 x i8] c"The index of x, or -1.\00" +@.str.6097 = private unnamed_addr constant [9 x i8] c"contains\00" +@.str.6098 = private unnamed_addr constant [22 x i8] c"contains(T x) -> bool\00" +@.str.6099 = private unnamed_addr constant [19 x i8] c"Is x in the array?\00" +@.str.6100 = private unnamed_addr constant [5 x i8] c"sort\00" +@.str.6101 = private unnamed_addr constant [7 x i8] c"sort()\00" +@.str.6102 = private unnamed_addr constant [38 x i8] c"Sorts in place (numbers, chars, str).\00" +@.str.6103 = private unnamed_addr constant [8 x i8] c"reverse\00" +@.str.6104 = private unnamed_addr constant [10 x i8] c"reverse()\00" +@.str.6105 = private unnamed_addr constant [19 x i8] c"Reverses in place.\00" +@.str.6106 = private unnamed_addr constant [6 x i8] c"slice\00" +@.str.6107 = private unnamed_addr constant [33 x i8] c"slice(int start, int end) -> []T\00" +@.str.6108 = private unnamed_addr constant [46 x i8] c"A new array with the elements start to end-1.\00" +@.str.6109 = private unnamed_addr constant [5 x i8] c"join\00" +@.str.6110 = private unnamed_addr constant [21 x i8] c"join(str sep) -> str\00" +@.str.6111 = private unnamed_addr constant [48 x i8] c"For []str: one text with sep between the parts.\00" +@.str.6112 = private unnamed_addr constant [4 x i8] c"len\00" +@.str.6113 = private unnamed_addr constant [12 x i8] c".len -> int\00" +@.str.6114 = private unnamed_addr constant [21 x i8] c"The number of bytes.\00" +@.str.6115 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.6116 = private unnamed_addr constant [18 x i8] c".ptr -> ptr[char]\00" +@.str.6117 = private unnamed_addr constant [60 x i8] c"The address of the text, for C (valid while the str lives).\00" +@.str.6118 = private unnamed_addr constant [4 x i8] c"sub\00" +@.str.6119 = private unnamed_addr constant [31 x i8] c"sub(int start, int end) -> str\00" +@.str.6120 = private unnamed_addr constant [30 x i8] c"The part from start to end-1.\00" +@.str.6121 = private unnamed_addr constant [5 x i8] c"find\00" +@.str.6122 = private unnamed_addr constant [19 x i8] c"find(str t) -> int\00" +@.str.6123 = private unnamed_addr constant [23 x i8] c"Where t starts, or -1.\00" +@.str.6124 = private unnamed_addr constant [9 x i8] c"contains\00" +@.str.6125 = private unnamed_addr constant [24 x i8] c"contains(str t) -> bool\00" +@.str.6126 = private unnamed_addr constant [25 x i8] c"Does the text contain t?\00" +@.str.6127 = private unnamed_addr constant [12 x i8] c"starts_with\00" +@.str.6128 = private unnamed_addr constant [27 x i8] c"starts_with(str t) -> bool\00" +@.str.6129 = private unnamed_addr constant [28 x i8] c"Does the text start with t?\00" +@.str.6130 = private unnamed_addr constant [10 x i8] c"ends_with\00" +@.str.6131 = private unnamed_addr constant [25 x i8] c"ends_with(str t) -> bool\00" +@.str.6132 = private unnamed_addr constant [26 x i8] c"Does the text end with t?\00" +@.str.6133 = private unnamed_addr constant [6 x i8] c"split\00" +@.str.6134 = private unnamed_addr constant [24 x i8] c"split(str sep) -> []str\00" +@.str.6135 = private unnamed_addr constant [63 x i8] c"The parts between each sep; split(\22\22) gives single characters.\00" +@.str.6136 = private unnamed_addr constant [5 x i8] c"trim\00" +@.str.6137 = private unnamed_addr constant [14 x i8] c"trim() -> str\00" +@.str.6138 = private unnamed_addr constant [42 x i8] c"Without spaces and newlines at both ends.\00" +@.str.6139 = private unnamed_addr constant [6 x i8] c"upper\00" +@.str.6140 = private unnamed_addr constant [15 x i8] c"upper() -> str\00" +@.str.6141 = private unnamed_addr constant [25 x i8] c"With a-z changed to A-Z.\00" +@.str.6142 = private unnamed_addr constant [6 x i8] c"lower\00" +@.str.6143 = private unnamed_addr constant [15 x i8] c"lower() -> str\00" +@.str.6144 = private unnamed_addr constant [25 x i8] c"With A-Z changed to a-z.\00" +@.str.6145 = private unnamed_addr constant [8 x i8] c"replace\00" +@.str.6146 = private unnamed_addr constant [33 x i8] c"replace(str from, str to) -> str\00" +@.str.6147 = private unnamed_addr constant [27 x i8] c"Every from replaced by to.\00" +@.str.6148 = private unnamed_addr constant [7 x i8] c"repeat\00" +@.str.6149 = private unnamed_addr constant [21 x i8] c"repeat(int n) -> str\00" +@.str.6150 = private unnamed_addr constant [18 x i8] c"The text n times.\00" +@.str.6151 = private unnamed_addr constant [6 x i8] c"bytes\00" +@.str.6152 = private unnamed_addr constant [16 x i8] c"bytes() -> []u8\00" +@.str.6153 = private unnamed_addr constant [23 x i8] c"The bytes of the text.\00" +@.str.6154 = private unnamed_addr constant [4 x i8] c"len\00" +@.str.6155 = private unnamed_addr constant [12 x i8] c".len -> int\00" +@.str.6156 = private unnamed_addr constant [20 x i8] c"The number of keys.\00" +@.str.6157 = private unnamed_addr constant [4 x i8] c"has\00" +@.str.6158 = private unnamed_addr constant [19 x i8] c"has(K key) -> bool\00" +@.str.6159 = private unnamed_addr constant [23 x i8] c"Is the key in the map?\00" +@.str.6160 = private unnamed_addr constant [4 x i8] c"get\00" +@.str.6161 = private unnamed_addr constant [27 x i8] c"get(K key, V default) -> V\00" +@.str.6162 = private unnamed_addr constant [54 x i8] c"The value for key, or default if the key isn't there.\00" +@.str.6163 = private unnamed_addr constant [7 x i8] c"remove\00" +@.str.6164 = private unnamed_addr constant [22 x i8] c"remove(K key) -> bool\00" +@.str.6165 = private unnamed_addr constant [53 x i8] c"Removes the key and its value; true if it was there.\00" +@.str.6166 = private unnamed_addr constant [6 x i8] c"clear\00" +@.str.6167 = private unnamed_addr constant [8 x i8] c"clear()\00" +@.str.6168 = private unnamed_addr constant [20 x i8] c"Removes everything.\00" +@.str.6169 = private unnamed_addr constant [5 x i8] c"keys\00" +@.str.6170 = private unnamed_addr constant [14 x i8] c"keys() -> []K\00" +@.str.6171 = private unnamed_addr constant [40 x i8] c"The keys, in the order they were added.\00" +@.str.6172 = private unnamed_addr constant [7 x i8] c"values\00" +@.str.6173 = private unnamed_addr constant [16 x i8] c"values() -> []V\00" +@.str.6174 = private unnamed_addr constant [48 x i8] c"The values, in the order their keys were added.\00" +@.str.6175 = private unnamed_addr constant [3 x i8] c"fn\00" +@.str.6176 = private unnamed_addr constant [7 x i8] c"return\00" +@.str.6177 = private unnamed_addr constant [3 x i8] c"if\00" +@.str.6178 = private unnamed_addr constant [5 x i8] c"else\00" +@.str.6179 = private unnamed_addr constant [6 x i8] c"while\00" +@.str.6180 = private unnamed_addr constant [4 x i8] c"for\00" +@.str.6181 = private unnamed_addr constant [3 x i8] c"in\00" +@.str.6182 = private unnamed_addr constant [6 x i8] c"break\00" +@.str.6183 = private unnamed_addr constant [9 x i8] c"continue\00" +@.str.6184 = private unnamed_addr constant [5 x i8] c"true\00" +@.str.6185 = private unnamed_addr constant [6 x i8] c"false\00" +@.str.6186 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.6187 = private unnamed_addr constant [7 x i8] c"import\00" +@.str.6188 = private unnamed_addr constant [5 x i8] c"link\00" +@.str.6189 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.6190 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.6191 = private unnamed_addr constant [6 x i8] c"match\00" +@.str.6192 = private unnamed_addr constant [7 x i8] c"export\00" +@.str.6193 = private unnamed_addr constant [6 x i8] c"defer\00" +@.str.6194 = private unnamed_addr constant [3 x i8] c"or\00" +@.str.6195 = private unnamed_addr constant [4 x i8] c"try\00" +@.str.6196 = private unnamed_addr constant [5 x i8] c"self\00" +@.str.6197 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.6198 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.6199 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.6200 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.6201 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.6202 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.6203 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.6204 = private unnamed_addr constant [3 x i8] c"i8\00" +@.str.6205 = private unnamed_addr constant [4 x i8] c"i16\00" +@.str.6206 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.6207 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.6208 = private unnamed_addr constant [3 x i8] c"u8\00" +@.str.6209 = private unnamed_addr constant [4 x i8] c"u16\00" +@.str.6210 = private unnamed_addr constant [4 x i8] c"u32\00" +@.str.6211 = private unnamed_addr constant [4 x i8] c"u64\00" +@.str.6212 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.6213 = private unnamed_addr constant [4 x i8] c"f64\00" +@.str.6214 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" +@.str.6215 = private unnamed_addr constant [6 x i8] c"\0A```\0A\00" declare ptr @clang_getCString([2 x i64]) declare void @clang_disposeString([2 x i64]) -@.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" +@.str.6216 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str.6217 = private unnamed_addr constant [16 x i8] c"/finch_cc_dirs_\00" +@.str.6218 = private unnamed_addr constant [5 x i8] c".txt\00" +@.str.6219 = private unnamed_addr constant [14 x i8] c"/finch_empty_\00" +@.str.6220 = private unnamed_addr constant [3 x i8] c".c\00" +@.str.6221 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6222 = private unnamed_addr constant [13 x i8] c" -E -v -x c \00" +@.str.6223 = private unnamed_addr constant [5 x i8] c" 2> \00" +@.str.6224 = private unnamed_addr constant [4 x i8] c" > \00" +@.str.6225 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6226 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6227 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6228 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6229 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6230 = private unnamed_addr constant [35 x i8] c"#include <...> search starts here:\00" +@.str.6231 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6232 = private unnamed_addr constant [20 x i8] c"End of search list.\00" +@.str.6233 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6234 = private unnamed_addr constant [23 x i8] c" (framework directory)\00" +@.str.6235 = private unnamed_addr constant [12 x i8] c"-iframework\00" +@.str.6236 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6237 = private unnamed_addr constant [9 x i8] c"-isystem\00" declare void @clang_getTypeDeclaration(ptr sret(%S.C.CXCursor) align 16, ptr) declare [2 x i64] @clang_getCursorUSR(ptr) -@.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" +@.str.6238 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6239 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" +@.str.6240 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6241 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" +@.str.6242 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" declare [2 x i64] @clang_getCursorSpelling(ptr) -@.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" +@.str.6243 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6244 = private unnamed_addr constant [2 x i8] c" \00" +@.str.6245 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6246 = private unnamed_addr constant [29 x i8] c"used .anon on a null pointer\00" +@.str.6247 = private unnamed_addr constant [13 x i8] c"anon_struct_\00" +@.str.6248 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6249 = private unnamed_addr constant [29 x i8] c"used .anon on a null pointer\00" +@.str.6250 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6251 = 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) -@.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" +@.str.6252 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6253 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6254 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6255 = private unnamed_addr constant [33 x i8] c"used .defining on a null pointer\00" declare i64 @clang_Type_getSizeOf(ptr) -@.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" +@.str.6256 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6257 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6258 = private unnamed_addr constant [33 x i8] c"used .defining on a null pointer\00" declare i64 @clang_Type_getAlignOf(ptr) declare i32 @clang_getCursorKind(ptr) -@.str.6036 = private unnamed_addr constant [13 x i8] c"is a C union\00" +@.str.6259 = private unnamed_addr constant [13 x i8] c"is a C union\00" declare i32 @clang_Type_visitFields(ptr, ptr, ptr) -@.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" +@.str.6260 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6261 = private unnamed_addr constant [33 x i8] c"used .defining on a null pointer\00" +@.str.6262 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6263 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6264 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6265 = 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) declare i64 @clang_Cursor_getOffsetOfField(ptr) declare i32 @clang_Cursor_isBitField(ptr) -@.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" +@.str.6266 = private unnamed_addr constant [15 x i8] c"has bit fields\00" +@.str.6267 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6268 = private unnamed_addr constant [26 x i8] c"used .s on a null pointer\00" +@.str.6269 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6270 = private unnamed_addr constant [36 x i8] c"used .unsupported on a null pointer\00" +@.str.6271 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6272 = private unnamed_addr constant [28 x i8] c"used .imp on a null pointer\00" +@.str.6273 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6274 = private unnamed_addr constant [26 x i8] c"used .s on a null pointer\00" +@.str.6275 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6276 = private unnamed_addr constant [34 x i8] c"used .hasHidden on a null pointer\00" +@.str.6277 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6278 = private unnamed_addr constant [26 x i8] c"used .s on a null pointer\00" +@.str.6279 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6280 = private unnamed_addr constant [31 x i8] c"used .fields on a null pointer\00" +@.str.6281 = private unnamed_addr constant [3 x i8] c"i8\00" +@.str.6282 = private unnamed_addr constant [3 x i8] c"u8\00" +@.str.6283 = private unnamed_addr constant [4 x i8] c"i16\00" +@.str.6284 = private unnamed_addr constant [4 x i8] c"u16\00" +@.str.6285 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.6286 = private unnamed_addr constant [4 x i8] c"u32\00" +@.str.6287 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.6288 = private unnamed_addr constant [4 x i8] c"u64\00" +@.str.6289 = private unnamed_addr constant [8 x i8] c"uses a \00" +@.str.6290 = private unnamed_addr constant [12 x i8] c"-bit number\00" +@.str.6291 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.6292 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.6293 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.6294 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.6295 = private unnamed_addr constant [6 x i8] c"float\00" declare void @clang_getPointeeType(ptr sret(%S.C.CXType) align 16, ptr) declare i32 @clang_isConstQualifiedType(ptr) -@.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" +@.str.6296 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.6297 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.6298 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.6299 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str.6300 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.6301 = private unnamed_addr constant [24 x i8] c"uses a C union by value\00" +@.str.6302 = private unnamed_addr constant [37 x i8] c"uses an incomplete C struct by value\00" +@.str.6303 = private unnamed_addr constant [6 x i8] c"named\00" +@.str.6304 = private unnamed_addr constant [2 x i8] c"C\00" declare void @clang_getArrayElementType(ptr sret(%S.C.CXType) align 16, ptr) declare i64 @clang_getArraySize(ptr) -@.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" +@.str.6305 = private unnamed_addr constant [17 x i8] c"uses long double\00" +@.str.6306 = private unnamed_addr constant [18 x i8] c"uses the C type '\00" declare [2 x i64] @clang_getTypeSpelling(ptr) -@.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" +@.str.6307 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.6308 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6309 = private unnamed_addr constant [3 x i8] c"0x\00" +@.str.6310 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6311 = private unnamed_addr constant [3 x i8] c"0X\00" +@.str.6312 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6313 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6314 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6315 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6316 = private unnamed_addr constant [5 x i8] c"uUlL\00" +@.str.6317 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6318 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6319 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6320 = 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) declare void @clang_tokenize(ptr, ptr, ptr, ptr) declare i32 @clang_getTokenKind(ptr) -@.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" +@.str.6321 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6322 = private unnamed_addr constant [27 x i8] c"used .tu on a null pointer\00" declare [2 x i64] @clang_getTokenSpelling(ptr, ptr) -@.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" +@.str.6323 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6324 = private unnamed_addr constant [27 x i8] c"used .tu on a null pointer\00" declare void @clang_disposeTokens(ptr, ptr, i32) -@.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" +@.str.6325 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6326 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.6327 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6328 = private unnamed_addr constant [2 x i8] c")\00" +@.str.6329 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6330 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6331 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" +@.str.6332 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6333 = private unnamed_addr constant [2 x i8] c"-\00" +@.str.6334 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6335 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6336 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6337 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6338 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6339 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6340 = private unnamed_addr constant [2 x i8] c".\00" +@.str.6341 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6342 = private unnamed_addr constant [2 x i8] c"e\00" +@.str.6343 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6344 = private unnamed_addr constant [2 x i8] c"E\00" +@.str.6345 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6346 = private unnamed_addr constant [3 x i8] c"0x\00" +@.str.6347 = private unnamed_addr constant [5 x i8] c"fFlL\00" +@.str.6348 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6349 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6350 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" declare void @clang_getTypedefDeclUnderlyingType(ptr sret(%S.C.CXType) align 16, ptr) -@.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" +@.str.6351 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6352 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" +@.str.6353 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6354 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6355 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6356 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" +@.str.6357 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6358 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6359 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6360 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6361 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" +@.str.6362 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6363 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6364 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6365 = private unnamed_addr constant [31 x i8] c"used .header on a null pointer\00" declare i32 @clang_Cursor_getStorageClass(ptr) -@.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" +@.str.6366 = private unnamed_addr constant [63 x i8] c"is a static inline C function (it has no code to link against)\00" +@.str.6367 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6368 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6369 = private unnamed_addr constant [43 x i8] c"has no parameter list in its C declaration\00" +@.str.6370 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6371 = 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) declare i32 @clang_getNumArgTypes(ptr) declare void @clang_getArgType(ptr sret(%S.C.CXType) align 16, ptr, i32) declare i32 @clang_isFunctionTypeVariadic(ptr) -@.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" +@.str.6372 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6373 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6374 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6375 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6376 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6377 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" declare i32 @clang_isCursorDefinition(ptr) -@.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" +@.str.6378 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6379 = private unnamed_addr constant [2 x i8] c" \00" +@.str.6380 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6381 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" +@.str.6382 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6383 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" declare i32 @clang_visitChildren(ptr, ptr, ptr) -@.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" +@.str.6384 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6385 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" declare i64 @clang_getEnumConstantDeclValue(ptr) -@.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" +@.str.6386 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6387 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" declare i32 @clang_Cursor_isMacroBuiltin(ptr) declare i32 @clang_Cursor_isMacroFunctionLike(ptr) -@.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" +@.str.6388 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6389 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6390 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6391 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6392 = private unnamed_addr constant [3 x i8] c"-x\00" +@.str.6393 = private unnamed_addr constant [2 x i8] c"c\00" +@.str.6394 = private unnamed_addr constant [11 x i8] c"-std=gnu11\00" +@.str.6395 = private unnamed_addr constant [10 x i8] c"--target=\00" +@.str.6396 = private unnamed_addr constant [20 x i8] c"-D_USE_MATH_DEFINES\00" +@.str.6397 = private unnamed_addr constant [3 x i8] c"-I\00" +@.str.6398 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6399 = private unnamed_addr constant [1 x i8] c"\00" declare ptr @clang_createIndex(i32, i32) -@.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" +@.str.6400 = private unnamed_addr constant [11 x i8] c"#include \22\00" +@.str.6401 = private unnamed_addr constant [3 x i8] c"\22\0A\00" +@.str.6402 = private unnamed_addr constant [15 x i8] c"finch_import.c\00" +@.str.6403 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6404 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6405 = private unnamed_addr constant [15 x i8] c"finch_import.c\00" +@.str.6406 = private unnamed_addr constant [1 x i8] c"\00" declare i32 @clang_parseTranslationUnit2(ptr, ptr, ptr, i32, ptr, i32, i32, ptr) -@.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" +@.str.6407 = private unnamed_addr constant [34 x i8] c": error: couldn't read C header '\00" +@.str.6408 = 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 [2 x i64] @clang_getDiagnosticSpelling(ptr) declare void @clang_disposeDiagnostic(ptr) -@.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" +@.str.6409 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6410 = private unnamed_addr constant [15 x i8] c"file not found\00" +@.str.6411 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6412 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6413 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6414 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.6415 = private unnamed_addr constant [35 x i8] c": error: can't find the C header '\00" +@.str.6416 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.6417 = private unnamed_addr constant [35 x i8] c": error: can't find the C header '\00" +@.str.6418 = private unnamed_addr constant [11 x i8] c"', which '\00" +@.str.6419 = private unnamed_addr constant [61 x i8] c"' includes (is its library's development package installed?)\00" +@.str.6420 = private unnamed_addr constant [20 x i8] c": error: C header '\00" +@.str.6421 = 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.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" +@.str.6422 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.6423 = private unnamed_addr constant [13 x i8] c"src/host.fch\00" +@.str.6424 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.6425 = private unnamed_addr constant [5 x i8] c"'\5C''\00" +@.str.6426 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.6427 = private unnamed_addr constant [10 x i8] c"/dev/null\00" +@.str.6428 = private unnamed_addr constant [7 x i8] c"TMPDIR\00" +@.str.6429 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6430 = private unnamed_addr constant [13 x i8] c"src/host.fch\00" +@.str.6431 = private unnamed_addr constant [2 x i8] c"/\00" +@.str.6432 = private unnamed_addr constant [13 x i8] c"src/host.fch\00" +@.str.6433 = private unnamed_addr constant [5 x i8] c"/tmp\00" +@.str.6434 = private unnamed_addr constant [2 x i8] c":\00" declare i32 @getpid() -@.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.6435 = private unnamed_addr constant [4 x i8] c"PWD\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.6437 = private unnamed_addr constant [15 x i8] c"XDG_CACHE_HOME\00" +@.str.6438 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6439 = private unnamed_addr constant [7 x i8] c"/finch\00" +@.str.6440 = private unnamed_addr constant [5 x i8] c"HOME\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.6442 = private unnamed_addr constant [14 x i8] c"/.cache/finch\00" +@.str.6443 = private unnamed_addr constant [13 x i8] c"/finch-cache\00" +@.str.6444 = private unnamed_addr constant [10 x i8] c"mkdir -p \00" +@.str.6445 = private unnamed_addr constant [8 x i8] c"rm -rf \00" +@.str.6446 = private unnamed_addr constant [4 x i8] c"mv \00" +@.str.6447 = private unnamed_addr constant [2 x i8] c" \00" +@.str.6448 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6449 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6450 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6451 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6452 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6453 = private unnamed_addr constant [15 x i8] c"/finch_triple_\00" +@.str.6454 = private unnamed_addr constant [5 x i8] c".txt\00" +@.str.6455 = private unnamed_addr constant [22 x i8] c"clang -dumpmachine > \00" +@.str.6456 = private unnamed_addr constant [5 x i8] c" 2> \00" +@.str.6457 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6458 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6459 = private unnamed_addr constant [25 x i8] c"x86_64-unknown-linux-gnu\00" +@.str.6460 = private unnamed_addr constant [8 x i8] c"windows\00" +@.str.6461 = private unnamed_addr constant [19 x i8] c"x86_64-w64-mingw32\00" +@.str.6462 = private unnamed_addr constant [6 x i8] c"linux\00" +@.str.6463 = private unnamed_addr constant [25 x i8] c"x86_64-unknown-linux-gnu\00" +@.str.6464 = private unnamed_addr constant [6 x i8] c"arm64\00" +@.str.6465 = private unnamed_addr constant [8 x i8] c"aarch64\00" +@.str.6466 = private unnamed_addr constant [12 x i8] c"linux-arm64\00" +@.str.6467 = private unnamed_addr constant [26 x i8] c"aarch64-unknown-linux-gnu\00" +@.str.6468 = private unnamed_addr constant [6 x i8] c"macos\00" +@.str.6469 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6470 = private unnamed_addr constant [8 x i8] c"aarch64\00" +@.str.6471 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6472 = private unnamed_addr constant [6 x i8] c"arm64\00" +@.str.6473 = private unnamed_addr constant [25 x i8] c"arm64-apple-macosx14.0.0\00" +@.str.6474 = private unnamed_addr constant [26 x i8] c"x86_64-apple-macosx14.0.0\00" +@.str.6475 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6476 = private unnamed_addr constant [8 x i8] c"windows\00" +@.str.6477 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6478 = private unnamed_addr constant [6 x i8] c"mingw\00" +@.str.6479 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6480 = private unnamed_addr constant [5 x i8] c"msvc\00" +@.str.6481 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6482 = private unnamed_addr constant [6 x i8] c"win32\00" +@.str.6483 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6484 = private unnamed_addr constant [5 x i8] c"msvc\00" +@.str.6485 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6486 = private unnamed_addr constant [6 x i8] c"apple\00" +@.str.6487 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6488 = private unnamed_addr constant [7 x i8] c"darwin\00" +@.str.6489 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6490 = private unnamed_addr constant [6 x i8] c"macos\00" +@.str.6491 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6492 = private unnamed_addr constant [8 x i8] c"aarch64\00" +@.str.6493 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6494 = private unnamed_addr constant [6 x i8] c"arm64\00" +@.str.6495 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6496 = private unnamed_addr constant [8 x i8] c"aarch64\00" +@.str.6497 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6498 = private unnamed_addr constant [6 x i8] c"arm64\00" +@.str.6499 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6500 = private unnamed_addr constant [6 x i8] c"apple\00" +@.str.6501 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6502 = private unnamed_addr constant [7 x i8] c"darwin\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.6504 = private unnamed_addr constant [5 x i8] c".exe\00" +@.str.6505 = private unnamed_addr constant [9 x i8] c"FINCH_CC\00" +@.str.6506 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6507 = private unnamed_addr constant [23 x i8] c"x86_64-w64-mingw32-gcc\00" +@.str.6508 = private unnamed_addr constant [22 x i8] c"aarch64-linux-gnu-gcc\00" +@.str.6509 = private unnamed_addr constant [16 x i8] c"clang --target=\00" +@.str.6510 = private unnamed_addr constant [2 x i8] c";\00" +@.str.6511 = private unnamed_addr constant [6 x i8] c"clang\00" +@.str.6512 = private unnamed_addr constant [3 x i8] c"cc\00" +@.str.6513 = private unnamed_addr constant [6 x i8] c"wine \00" +@.str.6514 = private unnamed_addr constant [14 x i8] c"qemu-aarch64 \00" +@.str.6515 = private unnamed_addr constant [17 x i8] c"0123456789abcdef\00" +@.str.6516 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6517 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6518 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6519 = private unnamed_addr constant [11 x i8] c".framework\00" +@.str.6520 = private unnamed_addr constant [12 x i8] c"-framework \00" +@.str.6521 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6522 = private unnamed_addr constant [18 x i8] c"/finch_pkg_flags_\00" +@.str.6523 = private unnamed_addr constant [5 x i8] c".txt\00" +@.str.6524 = private unnamed_addr constant [19 x i8] c"pkg-config --libs \00" +@.str.6525 = private unnamed_addr constant [4 x i8] c" > \00" +@.str.6526 = private unnamed_addr constant [5 x i8] c" 2> \00" +@.str.6527 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6528 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6529 = private unnamed_addr constant [3 x i8] c"-l\00" +@.str.6530 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6531 = private unnamed_addr constant [2 x i8] c"/\00" +@.str.6532 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6533 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6534 = private unnamed_addr constant [2 x i8] c"/\00" +@.str.6535 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6536 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6537 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6538 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6539 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6540 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6541 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6542 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6543 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6544 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6545 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6546 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6547 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6548 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6549 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6550 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6551 = private unnamed_addr constant [25 x i8] c"undefined reference to `\00" +@.str.6552 = private unnamed_addr constant [25 x i8] c"undefined reference to `\00" +@.str.6553 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.6554 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6555 = private unnamed_addr constant [19 x i8] c"undefined symbol: \00" +@.str.6556 = private unnamed_addr constant [19 x i8] c"undefined symbol: \00" +@.str.6557 = private unnamed_addr constant [3 x i8] c" \0A\00" +@.str.6558 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6559 = private unnamed_addr constant [28 x i8] c"unresolved external symbol \00" +@.str.6560 = private unnamed_addr constant [28 x i8] c"unresolved external symbol \00" +@.str.6561 = private unnamed_addr constant [4 x i8] c" \0A\0D\00" +@.str.6562 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6563 = private unnamed_addr constant [15 x i8] c"cannot find -l\00" +@.str.6564 = private unnamed_addr constant [15 x i8] c"cannot find -l\00" +@.str.6565 = private unnamed_addr constant [5 x i8] c": \0A\0D\00" +@.str.6566 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6567 = private unnamed_addr constant [25 x i8] c"library not found for -l\00" +@.str.6568 = private unnamed_addr constant [25 x i8] c"library not found for -l\00" +@.str.6569 = private unnamed_addr constant [5 x i8] c": \0A\0D\00" +@.str.6570 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6571 = private unnamed_addr constant [14 x i8] c"ld: library '\00" +@.str.6572 = private unnamed_addr constant [14 x i8] c"ld: library '\00" +@.str.6573 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.6574 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6575 = private unnamed_addr constant [12 x i8] c"framework '\00" +@.str.6576 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6577 = private unnamed_addr constant [10 x i8] c"not found\00" +@.str.6578 = private unnamed_addr constant [12 x i8] c"framework '\00" +@.str.6579 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.6580 = private unnamed_addr constant [11 x i8] c".framework\00" +@.str.6581 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6582 = private unnamed_addr constant [2 x i8] c"\22\00" +@.str.6583 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6584 = private unnamed_addr constant [20 x i8] c"\22, referenced from:\00" +@.str.6585 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6586 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6587 = private unnamed_addr constant [20 x i8] c"\22, referenced from:\00" +@.str.6588 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6589 = private unnamed_addr constant [2 x i8] c"_\00" +@.str.6590 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6591 = private unnamed_addr constant [22 x i8] c"error: linking failed\00" +@.str.6592 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6593 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.6594 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6595 = private unnamed_addr constant [21 x i8] c"error: the library '\00" +@.str.6596 = private unnamed_addr constant [63 x i8] c"' wasn't found. Is it installed? (on Nix: add it to shell.nix)\00" +@.str.6597 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6598 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.6599 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6600 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6601 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6602 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6603 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6604 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6605 = private unnamed_addr constant [3 x i8] c", \00" +@.str.6606 = private unnamed_addr constant [6 x i8] c" and \00" +@.str.6607 = private unnamed_addr constant [6 x i8] c" more\00" +@.str.6608 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6609 = private unnamed_addr constant [26 x i8] c"error: no code found for \00" +@.str.6610 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6611 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.6612 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6613 = private unnamed_addr constant [5 x i8] c"come\00" +@.str.6614 = private unnamed_addr constant [6 x i8] c"comes\00" +@.str.6615 = private unnamed_addr constant [8 x i8] c"error: \00" +@.str.6616 = private unnamed_addr constant [2 x i8] c" \00" +@.str.6617 = private unnamed_addr constant [8 x i8] c" from \22\00" +@.str.6618 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6619 = private unnamed_addr constant [32 x i8] c"\22, but its library isn't linked\00" +@.str.6620 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6621 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.6622 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6623 = private unnamed_addr constant [75 x i8] c" the header only says the functions exist; their code lives in a library.\00" +@.str.6624 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6625 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.6626 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6627 = private unnamed_addr constant [67 x i8] c" add this at the top of your file (with the library's real name):\00" +@.str.6628 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6629 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.6630 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6631 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6632 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6633 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.6634 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6635 = private unnamed_addr constant [13 x i8] c" link \22\00" +@.str.6636 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6637 = private unnamed_addr constant [2 x i8] c"\22\00" +@.str.6638 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6639 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.6640 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6641 = private unnamed_addr constant [1 x i8] c"\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.6643 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.6644 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6645 = private unnamed_addr constant [5 x i8] c"/rt-\00" +@.str.6646 = private unnamed_addr constant [4 x i8] c"2.5\00" +@.str.6647 = private unnamed_addr constant [3 x i8] c".o\00" +@.str.6648 = private unnamed_addr constant [6 x i8] c".part\00" +@.str.6649 = private unnamed_addr constant [7 x i8] c" -fPIC\00" +@.str.6650 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6651 = private unnamed_addr constant [5 x i8] c".log\00" +@.str.6652 = private unnamed_addr constant [5 x i8] c" -O2\00" +@.str.6653 = private unnamed_addr constant [5 x i8] c" -c \00" +@.str.6654 = private unnamed_addr constant [5 x i8] c" -o \00" +@.str.6655 = private unnamed_addr constant [4 x i8] c" > \00" +@.str.6656 = private unnamed_addr constant [6 x i8] c" 2>&1\00" +@.str.6657 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6658 = private unnamed_addr constant [47 x i8] c"error: couldn't build the Finch runtime with '\00" +@.str.6659 = private unnamed_addr constant [31 x i8] c"' (is a C compiler installed?)\00" +@.str.6660 = private unnamed_addr constant [12 x i8] c"FINCH_CLANG\00" +@.str.6661 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6662 = private unnamed_addr constant [6 x i8] c"clang\00" +@.str.6663 = private unnamed_addr constant [9 x i8] c"FINCH_CC\00" +@.str.6664 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6665 = private unnamed_addr constant [9 x i8] c"FINCH_CC\00" +@.str.6666 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6667 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6668 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.6669 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6670 = private unnamed_addr constant [4 x i8] c".ll\00" +@.str.6671 = private unnamed_addr constant [3 x i8] c".o\00" +@.str.6672 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6673 = private unnamed_addr constant [11 x i8] c" --target=\00" +@.str.6674 = private unnamed_addr constant [5 x i8] c".log\00" +@.str.6675 = private unnamed_addr constant [2 x i8] c" \00" +@.str.6676 = private unnamed_addr constant [8 x i8] c" -w -c \00" +@.str.6677 = private unnamed_addr constant [5 x i8] c" -o \00" +@.str.6678 = private unnamed_addr constant [4 x i8] c" > \00" +@.str.6679 = private unnamed_addr constant [6 x i8] c" 2>&1\00" +@.str.6680 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6681 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6682 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.6683 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6684 = private unnamed_addr constant [47 x i8] c"error: clang couldn't compile the program's IR\00" +@.str.6685 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6686 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.6687 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6688 = private unnamed_addr constant [2 x i8] c" \00" +@.str.6689 = private unnamed_addr constant [2 x i8] c" \00" +@.str.6690 = private unnamed_addr constant [5 x i8] c" -o \00" +@.str.6691 = private unnamed_addr constant [5 x i8] c" -lm\00" +@.str.6692 = private unnamed_addr constant [13 x i8] c" -dynamiclib\00" +@.str.6693 = private unnamed_addr constant [9 x i8] c" -shared\00" +@.str.6694 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6695 = private unnamed_addr constant [3 x i8] c".c\00" +@.str.6696 = private unnamed_addr constant [2 x i8] c".\00" +@.str.6697 = private unnamed_addr constant [3 x i8] c".o\00" +@.str.6698 = private unnamed_addr constant [7 x i8] c" -fPIC\00" +@.str.6699 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6700 = private unnamed_addr constant [5 x i8] c" -O2\00" +@.str.6701 = private unnamed_addr constant [5 x i8] c" -c \00" +@.str.6702 = private unnamed_addr constant [5 x i8] c" -o \00" +@.str.6703 = private unnamed_addr constant [4 x i8] c" > \00" +@.str.6704 = private unnamed_addr constant [6 x i8] c" 2>&1\00" +@.str.6705 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6706 = private unnamed_addr constant [25 x i8] c"error: couldn't compile \00" +@.str.6707 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6708 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.6709 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6710 = private unnamed_addr constant [2 x i8] c" \00" +@.str.6711 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6712 = private unnamed_addr constant [3 x i8] c".o\00" +@.str.6713 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6714 = private unnamed_addr constant [3 x i8] c".a\00" +@.str.6715 = private unnamed_addr constant [2 x i8] c" \00" +@.str.6716 = private unnamed_addr constant [2 x i8] c" \00" +@.str.6717 = private unnamed_addr constant [4 x i8] c" > \00" +@.str.6718 = private unnamed_addr constant [6 x i8] c" 2>&1\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.6720 = private unnamed_addr constant [43 x i8] c"error: no C compiler found to link with ('\00" +@.str.6721 = private unnamed_addr constant [33 x i8] c"'; install one, or set FINCH_CC)\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.6723 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.6724 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6725 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6726 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.6727 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6728 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6729 = private unnamed_addr constant [8 x i8] c"file://\00" +@.str.6730 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6731 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6732 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\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.6737 = private unnamed_addr constant [17 x i8] c"0123456789ABCDEF\00" +@.str.6738 = private unnamed_addr constant [8 x i8] c"file://\00" +@.str.6739 = private unnamed_addr constant [6 x i8] c"/-_.~\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.6741 = private unnamed_addr constant [2 x i8] c"%\00" +@.str.6742 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\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.6744 = private unnamed_addr constant [1 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.6746 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6747 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6748 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6749 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6750 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6751 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6752 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6753 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6754 = private unnamed_addr constant [1 x i8] c"\00" +declare i32 @getchar() +@.str.6755 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6756 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6757 = private unnamed_addr constant [2 x i8] c"\0D\00" +@.str.6758 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@stdin = external global ptr +declare i32 @feof(ptr) +@.str.6759 = private unnamed_addr constant [33 x i8] c"the editor closed the connection\00" +@.str.6760 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6761 = private unnamed_addr constant [16 x i8] c"Content-Length:\00" +@.str.6762 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6763 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6764 = private unnamed_addr constant [26 x i8] c"the message was cut short\00" +@.str.6765 = private unnamed_addr constant [17 x i8] c"Content-Length: \00" +@.str.6766 = private unnamed_addr constant [5 x i8] c"\0D\0A\0D\0A\00" +@.str.6767 = private unnamed_addr constant [1 x i8] c"\00" +@stdout = external global ptr +declare i64 @fwrite(ptr, i64, i64, ptr) +@.str.6768 = private unnamed_addr constant [8 x i8] c"jsonrpc\00" +@.str.6769 = private unnamed_addr constant [4 x i8] c"2.0\00" +@.str.6770 = private unnamed_addr constant [3 x i8] c"id\00" +@.str.6771 = private unnamed_addr constant [7 x i8] c"result\00" +@.str.6772 = private unnamed_addr constant [8 x i8] c"jsonrpc\00" +@.str.6773 = private unnamed_addr constant [4 x i8] c"2.0\00" +@.str.6774 = private unnamed_addr constant [7 x i8] c"method\00" +@.str.6775 = private unnamed_addr constant [7 x i8] c"params\00" +@.str.6776 = private unnamed_addr constant [5 x i8] c"line\00" +@.str.6777 = private unnamed_addr constant [10 x i8] c"character\00" +@.str.6778 = private unnamed_addr constant [6 x i8] c"start\00" +@.str.6779 = private unnamed_addr constant [4 x i8] c"end\00" +@.str.6780 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6781 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.6782 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6783 = private unnamed_addr constant [10 x i8] c": error: \00" +@.str.6784 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6785 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6786 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6787 = private unnamed_addr constant [2 x i8] c":\00" +@.str.6788 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6789 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6790 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6791 = private unnamed_addr constant [2 x i8] c":\00" +@.str.6792 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6793 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6794 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6795 = private unnamed_addr constant [2 x i8] c"@\00" +@.str.6796 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6797 = private unnamed_addr constant [3 x i8] c"@R\00" +@.str.6798 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6799 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6800 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6801 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6802 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6803 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\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.6805 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6806 = private unnamed_addr constant [3 x i8] c"@V\00" +@.str.6807 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6808 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6809 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6810 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6811 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6812 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6813 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6814 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6815 = private unnamed_addr constant [3 x i8] c"@F\00" +@.str.6816 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6817 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6818 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6819 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6820 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6821 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6822 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6823 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6824 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6825 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6826 = private unnamed_addr constant [2 x i8] c"|\00" +@.str.6827 = private unnamed_addr constant [3 x i8] c"@S\00" +@.str.6828 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6829 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6830 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6831 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6832 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6833 = private unnamed_addr constant [4 x i8] c"@SF\00" +@.str.6834 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6835 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6836 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6837 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6838 = private unnamed_addr constant [3 x i8] c"@E\00" +@.str.6839 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6840 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6841 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6842 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6843 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6844 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6845 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6846 = private unnamed_addr constant [2 x i8] c",\00" +@.str.6847 = private unnamed_addr constant [3 x i8] c"@I\00" +@.str.6848 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6849 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6850 = private unnamed_addr constant [5 x i8] c"/doc\00" +@.str.6851 = private unnamed_addr constant [5 x i8] c".fch\00" +@.str.6852 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6853 = private unnamed_addr constant [12 x i8] c" --overlay \00" +@.str.6854 = private unnamed_addr constant [2 x i8] c"=\00" +@.str.6855 = private unnamed_addr constant [9 x i8] c"/out.txt\00" +@.str.6856 = private unnamed_addr constant [8 x i8] c" index \00" +@.str.6857 = private unnamed_addr constant [4 x i8] c" > \00" +@.str.6858 = private unnamed_addr constant [6 x i8] c" 2>&1\00" +@.str.6859 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6860 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6861 = private unnamed_addr constant [6 x i8] c"range\00" +@.str.6862 = private unnamed_addr constant [9 x i8] c"severity\00" +@.str.6863 = private unnamed_addr constant [7 x i8] c"source\00" +@.str.6864 = private unnamed_addr constant [6 x i8] c"finch\00" +@.str.6865 = private unnamed_addr constant [8 x i8] c"message\00" +@.str.6866 = private unnamed_addr constant [4 x i8] c"uri\00" +@.str.6867 = private unnamed_addr constant [12 x i8] c"diagnostics\00" +@.str.6868 = private unnamed_addr constant [32 x i8] c"textDocument/publishDiagnostics\00" +@.str.6869 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6870 = private unnamed_addr constant [5 x i8] c"kind\00" +@.str.6871 = private unnamed_addr constant [9 x i8] c"markdown\00" +@.str.6872 = private unnamed_addr constant [6 x i8] c"value\00" +@.str.6873 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6874 = private unnamed_addr constant [9 x i8] c"contents\00" +@.str.6875 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6876 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6877 = private unnamed_addr constant [4 x i8] c"uri\00" +@.str.6878 = private unnamed_addr constant [6 x i8] c"range\00" +@.str.6879 = private unnamed_addr constant [2 x i8] c".\00" +@.str.6880 = private unnamed_addr constant [5 x i8] c"name\00" +@.str.6881 = private unnamed_addr constant [5 x i8] c"kind\00" +@.str.6882 = private unnamed_addr constant [6 x i8] c"start\00" +@.str.6883 = private unnamed_addr constant [4 x i8] c"end\00" +@.str.6884 = private unnamed_addr constant [6 x i8] c"range\00" +@.str.6885 = private unnamed_addr constant [15 x i8] c"selectionRange\00" +@.str.6886 = private unnamed_addr constant [6 x i8] c"label\00" +@.str.6887 = private unnamed_addr constant [5 x i8] c"kind\00" +@.str.6888 = private unnamed_addr constant [7 x i8] c"detail\00" +@.str.6889 = private unnamed_addr constant [5 x i8] c"kind\00" +@.str.6890 = private unnamed_addr constant [9 x i8] c"markdown\00" +@.str.6891 = private unnamed_addr constant [6 x i8] c"value\00" +@.str.6892 = private unnamed_addr constant [14 x i8] c"documentation\00" +@.str.6893 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6894 = private unnamed_addr constant [2 x i8] c".\00" +@.str.6895 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6896 = private unnamed_addr constant [33 x i8] c"called .push() on a null pointer\00" +@.str.6897 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6898 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6899 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6900 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6901 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6902 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6903 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6904 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6905 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.6906 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6907 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6908 = private unnamed_addr constant [8 x i8] c"struct \00" +@.str.6909 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6910 = private unnamed_addr constant [6 x i8] c"enum \00" +@.str.6911 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6912 = private unnamed_addr constant [2 x i8] c".\00" +@.str.6913 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6914 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6915 = private unnamed_addr constant [3 x i8] c"[]\00" +@.str.6916 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6917 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.6918 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.6919 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6920 = private unnamed_addr constant [5 x i8] c"ptr[\00" +@.str.6921 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6922 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.6923 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6924 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6925 = private unnamed_addr constant [3 x i8] c"[]\00" +@.str.6926 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.6927 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6928 = private unnamed_addr constant [5 x i8] c"map[\00" +@.str.6929 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6930 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6931 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6932 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6933 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6934 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6935 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6936 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6937 = private unnamed_addr constant [8 x i8] c"struct \00" +@.str.6938 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6939 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6940 = private unnamed_addr constant [6 x i8] c"enum \00" +@.str.6941 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6942 = private unnamed_addr constant [7 x i8] c"module\00" +@.str.6943 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6944 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6945 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6946 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6947 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6948 = private unnamed_addr constant [13 x i8] c"isIncomplete\00" +@.str.6949 = private unnamed_addr constant [6 x i8] c"items\00" +@.str.6950 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6951 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6952 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6953 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6954 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6955 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6956 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6957 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6958 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6959 = private unnamed_addr constant [5 x i8] c"ptr[\00" +@.str.6960 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6961 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.6962 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6963 = private unnamed_addr constant [6 x i8] c"label\00" +@.str.6964 = private unnamed_addr constant [6 x i8] c"label\00" +@.str.6965 = private unnamed_addr constant [11 x i8] c"parameters\00" +@.str.6966 = private unnamed_addr constant [11 x i8] c"signatures\00" +@.str.6967 = private unnamed_addr constant [16 x i8] c"activeSignature\00" +@.str.6968 = private unnamed_addr constant [16 x i8] c"activeParameter\00" +@.str.6969 = private unnamed_addr constant [6 x i8] c"label\00" +@.str.6970 = private unnamed_addr constant [14 x i8] c"documentation\00" +@.str.6971 = private unnamed_addr constant [11 x i8] c"signatures\00" +@.str.6972 = private unnamed_addr constant [16 x i8] c"activeSignature\00" +@.str.6973 = private unnamed_addr constant [16 x i8] c"activeParameter\00" +@.str.6974 = private unnamed_addr constant [13 x i8] c"textDocument\00" +@.str.6975 = private unnamed_addr constant [5 x i8] c"text\00" +@.str.6976 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6977 = private unnamed_addr constant [13 x i8] c"textDocument\00" +@.str.6978 = private unnamed_addr constant [4 x i8] c"uri\00" +@.str.6979 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6980 = private unnamed_addr constant [7 x i8] c"method\00" +@.str.6981 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6982 = private unnamed_addr constant [7 x i8] c"params\00" +@.str.6983 = private unnamed_addr constant [3 x i8] c"id\00" +@.str.6984 = private unnamed_addr constant [11 x i8] c"initialize\00" +@.str.6985 = private unnamed_addr constant [17 x i8] c"textDocumentSync\00" +@.str.6986 = private unnamed_addr constant [14 x i8] c"hoverProvider\00" +@.str.6987 = private unnamed_addr constant [19 x i8] c"definitionProvider\00" +@.str.6988 = private unnamed_addr constant [23 x i8] c"documentSymbolProvider\00" +@.str.6989 = private unnamed_addr constant [2 x i8] c".\00" +@.str.6990 = private unnamed_addr constant [18 x i8] c"triggerCharacters\00" +@.str.6991 = private unnamed_addr constant [19 x i8] c"completionProvider\00" +@.str.6992 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.6993 = private unnamed_addr constant [2 x i8] c",\00" +@.str.6994 = private unnamed_addr constant [18 x i8] c"triggerCharacters\00" +@.str.6995 = private unnamed_addr constant [22 x i8] c"signatureHelpProvider\00" +@.str.6996 = private unnamed_addr constant [13 x i8] c"capabilities\00" +@.str.6997 = private unnamed_addr constant [5 x i8] c"name\00" +@.str.6998 = private unnamed_addr constant [6 x i8] c"finch\00" +@.str.6999 = private unnamed_addr constant [11 x i8] c"serverInfo\00" +@.str.7000 = private unnamed_addr constant [9 x i8] c"shutdown\00" +@.str.7001 = private unnamed_addr constant [5 x i8] c"exit\00" +@.str.7002 = private unnamed_addr constant [21 x i8] c"textDocument/didOpen\00" +@.str.7003 = private unnamed_addr constant [23 x i8] c"textDocument/didChange\00" +@.str.7004 = private unnamed_addr constant [15 x i8] c"contentChanges\00" +@.str.7005 = private unnamed_addr constant [5 x i8] c"text\00" +@.str.7006 = private unnamed_addr constant [1 x i8] c"\00" +@.str.7007 = private unnamed_addr constant [21 x i8] c"textDocument/didSave\00" +@.str.7008 = private unnamed_addr constant [22 x i8] c"textDocument/didClose\00" +@.str.7009 = private unnamed_addr constant [4 x i8] c"uri\00" +@.str.7010 = private unnamed_addr constant [12 x i8] c"diagnostics\00" +@.str.7011 = private unnamed_addr constant [32 x i8] c"textDocument/publishDiagnostics\00" +@.str.7012 = private unnamed_addr constant [19 x i8] c"textDocument/hover\00" +@.str.7013 = private unnamed_addr constant [24 x i8] c"textDocument/definition\00" +@.str.7014 = private unnamed_addr constant [24 x i8] c"textDocument/completion\00" +@.str.7015 = private unnamed_addr constant [28 x i8] c"textDocument/documentSymbol\00" +@.str.7016 = private unnamed_addr constant [27 x i8] c"textDocument/signatureHelp\00" +@.str.7017 = private unnamed_addr constant [9 x i8] c"position\00" +@.str.7018 = private unnamed_addr constant [5 x i8] c"line\00" +@.str.7019 = private unnamed_addr constant [9 x i8] c"position\00" +@.str.7020 = private unnamed_addr constant [10 x i8] c"character\00" +@.str.7021 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.7022 = private unnamed_addr constant [1 x i8] c"\00" +@.str.7023 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.7024 = private unnamed_addr constant [19 x i8] c"textDocument/hover\00" +@.str.7025 = private unnamed_addr constant [24 x i8] c"textDocument/definition\00" +@.str.7026 = private unnamed_addr constant [24 x i8] c"textDocument/completion\00" +@.str.7027 = private unnamed_addr constant [28 x i8] c"textDocument/documentSymbol\00" +@.str.7028 = private unnamed_addr constant [12 x i8] c"/finch_lsp_\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.7030 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\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.7032 = private unnamed_addr constant [2 x i8] c"\22\00" +@.str.7033 = private unnamed_addr constant [3 x i8] c"\5C\22\00" +@.str.7034 = private unnamed_addr constant [3 x i8] c"\5C\5C\00" +@.str.7035 = private unnamed_addr constant [3 x i8] c"\5Cn\00" +@.str.7036 = private unnamed_addr constant [3 x i8] c"\5Cr\00" +@.str.7037 = private unnamed_addr constant [3 x i8] c"\5Ct\00" +@.str.7038 = private unnamed_addr constant [5 x i8] c"\5Cu00\00" +@.str.7039 = private unnamed_addr constant [2 x i8] c"\22\00" +@.str.7040 = private unnamed_addr constant [1 x i8] c"\00" +@.str.7041 = private unnamed_addr constant [17 x i8] c"0123456789abcdef\00" +@.str.7042 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7043 = private unnamed_addr constant [1 x i8] c"\00" +@.str.7044 = private unnamed_addr constant [1 x i8] c"\00" +@.str.7045 = private unnamed_addr constant [2 x i8] c",\00" +@.str.7046 = private unnamed_addr constant [2 x i8] c":\00" +@.str.7047 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.7048 = private unnamed_addr constant [3 x i8] c": \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.7050 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.7051 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.7052 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7053 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.7054 = private unnamed_addr constant [5 x i8] c"true\00" +@.str.7055 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7056 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.7057 = private unnamed_addr constant [6 x i8] c"false\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.7059 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.7060 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7061 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.7062 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7063 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.7064 = private unnamed_addr constant [3 x i8] c"[]\00" +@.str.7065 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7066 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.7067 = private unnamed_addr constant [2 x i8] c"[\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.7069 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.7070 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7071 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.7072 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7073 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.7074 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.7075 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7076 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.7077 = private unnamed_addr constant [3 x i8] c"{}\00" +@.str.7078 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7079 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.7080 = private unnamed_addr constant [2 x i8] c"{\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.7082 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.7083 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7084 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\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.7086 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7087 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.7088 = private unnamed_addr constant [2 x i8] c"}\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" +@.str.7090 = private unnamed_addr constant [36 x i8] c"no arm of this match fits the value\00" +@.str.7091 = private unnamed_addr constant [1 x i8] c"\00" +@.str.7092 = private unnamed_addr constant [1 x i8] c"\00" +@.str.7093 = private unnamed_addr constant [1 x i8] c"\00" +@.str.7094 = private unnamed_addr constant [3 x i8] c" \00" +@.str.7095 = private unnamed_addr constant [1 x i8] c"\00" +@.str.7096 = private unnamed_addr constant [1 x i8] c"\00" +@.str.7097 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7098 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7099 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7100 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7101 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7102 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7103 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7104 = private unnamed_addr constant [6 x i8] c"line \00" +@.str.7105 = private unnamed_addr constant [10 x i8] c", column \00" +@.str.7106 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7107 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7108 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7109 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7110 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7111 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7112 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7113 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7114 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7115 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7116 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7117 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7118 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7119 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7120 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7121 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7122 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7123 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7124 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7125 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7126 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7127 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7128 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7129 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7130 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7131 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7132 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7133 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7134 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7135 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7136 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7137 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7138 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7139 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7140 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7141 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7142 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7143 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7144 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7145 = private unnamed_addr constant [27 x i8] c"json: the text ends where \00" +@.str.7146 = private unnamed_addr constant [13 x i8] c" should be (\00" +@.str.7147 = private unnamed_addr constant [2 x i8] c")\00" +@.str.7148 = private unnamed_addr constant [14 x i8] c"json: found '\00" +@.str.7149 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7150 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7151 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7152 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7153 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7154 = private unnamed_addr constant [9 x i8] c"' where \00" +@.str.7155 = private unnamed_addr constant [13 x i8] c" should be (\00" +@.str.7156 = private unnamed_addr constant [2 x i8] c")\00" +@.str.7157 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7158 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7159 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7160 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7161 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7162 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7163 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7164 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7165 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7166 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7167 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7168 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.7169 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.7170 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7171 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7172 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7173 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7174 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7175 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7176 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7177 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7178 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7179 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7180 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7181 = private unnamed_addr constant [20 x i8] c"a hexadecimal digit\00" +@.str.7182 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7183 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7184 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7185 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7186 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7187 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7188 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7189 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7190 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7191 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7192 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7193 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7194 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7195 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7196 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7197 = private unnamed_addr constant [31 x i8] c"json: a text is never closed (\00" +@.str.7198 = private unnamed_addr constant [2 x i8] c")\00" +@.str.7199 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7200 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7201 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7202 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7203 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7204 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7205 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7206 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7207 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7208 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7209 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7210 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7211 = private unnamed_addr constant [1 x i8] c"\00" +@.str.7212 = private unnamed_addr constant [56 x i8] c"json: a line break or control character inside a text (\00" +@.str.7213 = private unnamed_addr constant [2 x i8] c")\00" +@.str.7214 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7215 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7216 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7217 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7218 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7219 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7220 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7221 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7222 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7223 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7224 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7225 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.7226 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.7227 = private unnamed_addr constant [2 x i8] c"\0D\00" +@.str.7228 = private unnamed_addr constant [3 x i8] c"\5Cu\00" +@.str.7229 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7230 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7231 = private unnamed_addr constant [23 x i8] c"json: unknown escape \5C\00" +@.str.7232 = private unnamed_addr constant [13 x i8] c" in a text (\00" +@.str.7233 = private unnamed_addr constant [2 x i8] c")\00" +@.str.7234 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7235 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7236 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7237 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7238 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7239 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7240 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7241 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7242 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7243 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7244 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7245 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7246 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7247 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7248 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7249 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7250 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7251 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7252 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7253 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7254 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7255 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7256 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7257 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7258 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7259 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7260 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7261 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7262 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7263 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7264 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7265 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7266 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7267 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7268 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7269 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7270 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7271 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7272 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7273 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7274 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7275 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7276 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7277 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7278 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7279 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7280 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7281 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7282 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7283 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7284 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7285 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7286 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7287 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7288 = private unnamed_addr constant [9 x i8] c"a number\00" +@.str.7289 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7290 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7291 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7292 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7293 = private unnamed_addr constant [8 x i8] c"a value\00" +@.str.7294 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7295 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7296 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7297 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7298 = private unnamed_addr constant [16 x i8] c"a key in quotes\00" +@.str.7299 = private unnamed_addr constant [4 x i8] c"':'\00" +@.str.7300 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7301 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7302 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7303 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7304 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7305 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7306 = private unnamed_addr constant [11 x i8] c"',' or '}'\00" +@.str.7307 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7308 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7309 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7310 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7311 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7312 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7313 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7314 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7315 = private unnamed_addr constant [11 x i8] c"',' or ']'\00" +@.str.7316 = private unnamed_addr constant [5 x i8] c"true\00" +@.str.7317 = private unnamed_addr constant [6 x i8] c"false\00" +@.str.7318 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.7319 = private unnamed_addr constant [8 x i8] c"a value\00" +@.str.7320 = private unnamed_addr constant [20 x i8] c"the end of the text\00" +@.str.7321 = private unnamed_addr constant [19 x i8] c"runtime/finch_rt.c\00" +@.str.7322 = private unnamed_addr constant [13 x i8] c"std/json.fch\00" +@.str.7323 = private unnamed_addr constant [13 x i8] c"std/path.fch\00" +@.str.7324 = private unnamed_addr constant [13 x i8] c"std/proc.fch\00" +@.str.7325 = private unnamed_addr constant [21 x i8] c"std/proc_windows.fch\00" +@.str.7326 = private unnamed_addr constant [13 x i8] c"std/time.fch\00" +@.str.7327 = private unnamed_addr constant [21 x i8] c"std/time_windows.fch\00" +@.str.7328 = private unnamed_addr constant [16 x i8] c"std/finch_win.h\00" +@.str.7329 = private unnamed_addr constant [24982 x i8] c"// The Finch runtime: string and array helpers, input, files and runtime errors.\0A// It is embedded in the compiler, compiled once into a cache folder, and linked\0A// statically into every Finch program. Everything here is plain C with no state.\0A//\0A// Layout shared with the compiler (src/codegen.cpp):\0A// str = { char *ptr; int64 len; int64 cap } ptr is always NUL-terminated\0A// cap > 0 : heap memory owned by the value (cap bytes allocated)\0A// cap == 0 : a string literal, valid forever, never written to\0A// cap == -1: borrowed from C, must be copied before it is kept\0A// []T = { T *ptr; int64 len; int64 cap } owns ptr when cap > 0\0A// map[K]V: see \22maps\22 below\0A\0A#include \0A#include \0A#include \0A#include \0A#include \0A#include \0A#include \0A#ifndef _WIN32\0A#include \0A#endif\0A\0Atypedef struct {\0A char *ptr;\0A int64_t len;\0A int64_t cap;\0A} FStr;\0A\0Atypedef struct {\0A void *ptr;\0A int64_t len;\0A int64_t cap;\0A} FArr;\0A\0Astatic char empty[1] = \22\22;\0A\0A// ---------- runtime errors ----------\0A\0A// A program that loads Finch libraries (finch build --shared) can take runtime errors over\0A// instead of the process exiting: finch_module_on_fatal(handler) in each library. The handler\0A// gets the message and must not return (longjmp out, or exit itself).\0Astatic void (*fatal_hook)(const char *msg);\0Avoid finch_on_fatal(void (*hook)(const char *msg)) { fatal_hook = hook; }\0A\0Astatic __attribute__((noreturn)) void fatal(const char *msg) {\0A if (fatal_hook) fatal_hook(msg);\0A fflush(stdout);\0A fprintf(stderr, \22%s\5Cn\22, msg);\0A exit(1);\0A}\0A\0A__attribute__((noreturn, cold)) void finch_panic(const char *file, int64_t line, const char *msg) {\0A char full[1024];\0A snprintf(full, sizeof full, \22%s:%lld: runtime error: %s\22, file, (long long)line, msg);\0A fflush(stdout);\0A fatal(full);\0A}\0A\0A__attribute__((noreturn, cold)) void finch_panic_index(const char *file, int64_t line, int64_t i, int64_t len) {\0A char msg[128];\0A snprintf(msg, sizeof msg, \22index %lld is out of range (the length is %lld)\22, (long long)i, (long long)len);\0A finch_panic(file, line, msg);\0A}\0A\0Astatic void *must(void *p) {\0A if (!p) {\0A fflush(stdout);\0A fatal(\22runtime error: out of memory\22);\0A }\0A return p;\0A}\0A\0Avoid *finch_alloc(int64_t n) { return must(malloc(n ? (size_t)n : 1)); }\0Avoid *finch_zalloc(int64_t n) { return must(calloc(1, n ? (size_t)n : 1)); }\0A\0A// ---------- strings ----------\0A\0Astatic void str_heap(FStr *out, const char *p, int64_t len) {\0A char *m = finch_alloc(len + 1);\0A if (len) memcpy(m, p, (size_t)len);\0A m[len] = 0;\0A out->ptr = m;\0A out->len = len;\0A out->cap = len + 1;\0A}\0A\0Astatic void str_static(FStr *out, const char *lit) {\0A out->ptr = (char *)lit;\0A out->len = (int64_t)strlen(lit);\0A out->cap = 0;\0A}\0A\0A// A copy that can be kept: literals are shared, everything else is duplicated.\0Avoid finch_str_copy(FStr *out, const FStr *s) {\0A if (s->cap == 0) *out = *s;\0A else str_heap(out, s->ptr, s->len);\0A}\0A\0A// Make `s` writable (before s[i] = c).\0Avoid finch_str_own(FStr *s) {\0A if (s->cap > 0) return;\0A FStr t;\0A str_heap(&t, s->ptr, s->len);\0A *s = t;\0A}\0A\0Avoid finch_str_drop(FStr *s) {\0A if (s->cap > 0) free(s->ptr);\0A}\0A\0Avoid finch_str_from_c(FStr *out, const char *p) {\0A if (!p) {\0A str_static(out, empty);\0A return;\0A }\0A out->ptr = (char *)p;\0A out->len = (int64_t)strlen(p);\0A out->cap = -1;\0A}\0A\0Avoid finch_str_concat(FStr *out, const FStr *a, const FStr *b) {\0A int64_t len = a->len + b->len;\0A char *m = finch_alloc(len + 1);\0A memcpy(m, a->ptr, (size_t)a->len);\0A memcpy(m + a->len, b->ptr, (size_t)b->len);\0A m[len] = 0;\0A out->ptr = m;\0A out->len = len;\0A out->cap = len + 1;\0A}\0A\0Aint finch_str_eq(const FStr *a, const FStr *b) {\0A return a->len == b->len && memcmp(a->ptr, b->ptr, (size_t)a->len) == 0;\0A}\0A\0Aint64_t finch_str_cmp(const FStr *a, const FStr *b) {\0A int64_t n = a->len < b->len ? a->len : b->len;\0A int c = memcmp(a->ptr, b->ptr, (size_t)n);\0A if (c) return c < 0 ? -1 : 1;\0A return a->len < b->len ? -1 : a->len > b->len;\0A}\0A\0Avoid finch_str_from_int(FStr *out, int64_t v) {\0A char buf[32];\0A int n = snprintf(buf, sizeof buf, \22%lld\22, (long long)v);\0A str_heap(out, buf, n);\0A}\0A\0Avoid finch_str_from_uint(FStr *out, uint64_t v) {\0A char buf[32];\0A int n = snprintf(buf, sizeof buf, \22%llu\22, (unsigned long long)v);\0A str_heap(out, buf, n);\0A}\0A\0Avoid finch_str_from_float(FStr *out, double v) {\0A char buf[64];\0A int n = snprintf(buf, sizeof buf, \22%g\22, v);\0A str_heap(out, buf, n);\0A}\0A\0Avoid finch_str_from_char(FStr *out, char c) { str_heap(out, &c, 1); }\0A\0Avoid finch_str_from_bool(FStr *out, int b) { str_static(out, b ? \22true\22 : \22false\22); }\0A\0Astatic void number_error(char *msg, size_t size, const FStr *s, const char *kind) {\0A snprintf(msg, size, \22can't turn \5C\22%.*s\5C\22 into %s\22, (int)(s->len > 100 ? 100 : s->len), s->ptr ? s->ptr : \22\22, kind);\0A}\0A\0Astatic int parse_int(const FStr *s, int64_t *out) {\0A const char *p = s->ptr ? s->ptr : \22\22;\0A while (isspace((unsigned char)*p)) p++;\0A char *end;\0A errno = 0;\0A long long v = strtoll(p, &end, 10);\0A while (isspace((unsigned char)*end)) end++;\0A *out = v;\0A return !(end == p || *end || errno == ERANGE);\0A}\0A\0Astatic int parse_float(const FStr *s, double *out) {\0A const char *p = s->ptr ? s->ptr : \22\22;\0A while (isspace((unsigned char)*p)) p++;\0A char *end;\0A double v = strtod(p, &end);\0A while (isspace((unsigned char)*end)) end++;\0A *out = v;\0A return !(end == p || *end);\0A}\0A\0Aint64_t finch_str_to_int(const FStr *s, const char *file, int64_t line) {\0A int64_t v;\0A if (!parse_int(s, &v)) {\0A char msg[200];\0A number_error(msg, sizeof msg, s, \22int\22);\0A finch_panic(file, line, msg);\0A }\0A return v;\0A}\0A\0Adouble finch_str_to_float(const FStr *s, const char *file, int64_t line) {\0A double v;\0A if (!parse_float(s, &v)) {\0A char msg[200];\0A number_error(msg, sizeof msg, s, \22float\22);\0A finch_panic(file, line, msg);\0A }\0A return v;\0A}\0A\0A// ---------- errors as values: int(s) or 0, try read_file(p) ... ----------\0A// Each gives back 1 on success; on failure 0, with the message in *err.\0A\0Astatic void set_error(FStr *err, const char *msg) { str_heap(err, msg, (int64_t)strlen(msg)); }\0A\0Aint finch_str_try_int(const FStr *s, int64_t *out, FStr *err) {\0A if (parse_int(s, out)) return 1;\0A char msg[200];\0A number_error(msg, sizeof msg, s, \22int\22);\0A set_error(err, msg);\0A *out = 0;\0A return 0;\0A}\0A\0Aint finch_str_try_float(const FStr *s, double *out, FStr *err) {\0A if (parse_float(s, out)) return 1;\0A char msg[200];\0A number_error(msg, sizeof msg, s, \22float\22);\0A set_error(err, msg);\0A *out = 0;\0A return 0;\0A}\0A\0Astatic void file_error(FStr *err, const char *what, const FStr *path) {\0A char msg[300];\0A snprintf(msg, sizeof msg, \22can't %s the file \5C\22%.*s\5C\22: %s\22, what, (int)(path->len > 200 ? 200 : path->len),\0A path->ptr ? path->ptr : \22\22, strerror(errno));\0A set_error(err, msg);\0A}\0A\0A// when `fn main() -> !` fails\0Avoid finch_report_error(const FStr *msg) {\0A fflush(stdout);\0A fprintf(stderr, \22error: %.*s\5Cn\22, (int)msg->len, msg->ptr ? msg->ptr : \22\22);\0A}\0A\0Avoid finch_str_sub(FStr *out, const FStr *s, int64_t start, int64_t end, const char *file, int64_t line) {\0A if (start < 0 || end > s->len || start > end) {\0A char msg[160];\0A snprintf(msg, sizeof msg, \22sub(%lld, %lld) is out of range (the length is %lld)\22, (long long)start,\0A (long long)end, (long long)s->len);\0A finch_panic(file, line, msg);\0A }\0A str_heap(out, s->ptr + start, end - start);\0A}\0A\0Aint64_t finch_str_find(const FStr *s, const FStr *t) {\0A if (t->len == 0) return 0;\0A for (int64_t i = 0; i + t->len <= s->len; i++)\0A if (s->ptr[i] == t->ptr[0] && memcmp(s->ptr + i, t->ptr, (size_t)t->len) == 0) return i;\0A return -1;\0A}\0A\0Aint finch_str_starts(const FStr *s, const FStr *t) {\0A return t->len <= s->len && memcmp(s->ptr, t->ptr, (size_t)t->len) == 0;\0A}\0A\0Aint finch_str_ends(const FStr *s, const FStr *t) {\0A return t->len <= s->len && memcmp(s->ptr + s->len - t->len, t->ptr, (size_t)t->len) == 0;\0A}\0A\0Avoid finch_str_trim(FStr *out, const FStr *s) {\0A int64_t a = 0, b = s->len;\0A while (a < b && isspace((unsigned char)s->ptr[a])) a++;\0A while (b > a && isspace((unsigned char)s->ptr[b - 1])) b--;\0A str_heap(out, s->ptr + a, b - a);\0A}\0A\0Avoid finch_str_upper(FStr *out, const FStr *s) {\0A str_heap(out, s->ptr, s->len);\0A for (int64_t i = 0; i < out->len; i++) out->ptr[i] = (char)toupper((unsigned char)out->ptr[i]);\0A}\0A\0Avoid finch_str_lower(FStr *out, const FStr *s) {\0A str_heap(out, s->ptr, s->len);\0A for (int64_t i = 0; i < out->len; i++) out->ptr[i] = (char)tolower((unsigned char)out->ptr[i]);\0A}\0A\0Avoid finch_str_replace(FStr *out, const FStr *s, const FStr *from, const FStr *to) {\0A if (from->len == 0) {\0A str_heap(out, s->ptr, s->len);\0A return;\0A }\0A int64_t count = 0;\0A for (int64_t i = 0; i + from->len <= s->len;) {\0A if (memcmp(s->ptr + i, from->ptr, (size_t)from->len) == 0) {\0A count++;\0A i += from->len;\0A } else {\0A i++;\0A }\0A }\0A int64_t len = s->len + count * (to->len - from->len);\0A char *m = finch_alloc(len + 1), *w = m;\0A for (int64_t i = 0; i < s->len;) {\0A if (i + from->len <= s->len && memcmp(s->ptr + i, from->ptr, (size_t)from->len) == 0) {\0A memcpy(w, to->ptr, (size_t)to->len);\0A w += to->len;\0A i += from->len;\0A } else {\0A *w++ = s->ptr[i++];\0A }\0A }\0A *w = 0;\0A out->ptr = m;\0A out->len = len;\0A out->cap = len + 1;\0A}\0A\0Astatic void arr_push_str(FArr *a, const char *p, int64_t len);\0A\0A// \22a,b,,c\22.split(\22,\22) -> [\22a\22, \22b\22, \22\22, \22c\22]; split(\22\22) gives single characters.\0Avoid finch_str_split(FArr *out, const FStr *s, const FStr *sep) {\0A out->ptr = NULL;\0A out->len = out->cap = 0;\0A if (sep->len == 0) {\0A for (int64_t i = 0; i < s->len; i++) arr_push_str(out, s->ptr + i, 1);\0A return;\0A }\0A int64_t start = 0;\0A for (int64_t i = 0; i + sep->len <= s->len;) {\0A if (memcmp(s->ptr + i, sep->ptr, (size_t)sep->len) == 0) {\0A arr_push_str(out, s->ptr + start, i - start);\0A i += sep->len;\0A start = i;\0A } else {\0A i++;\0A }\0A }\0A arr_push_str(out, s->ptr + start, s->len - start);\0A}\0A\0Avoid finch_str_join(FStr *out, const FArr *parts, const FStr *sep) {\0A const FStr *p = parts->ptr;\0A int64_t len = 0;\0A for (int64_t i = 0; i < parts->len; i++) len += p[i].len + (i ? sep->len : 0);\0A char *m = finch_alloc(len + 1), *w = m;\0A for (int64_t i = 0; i < parts->len; i++) {\0A if (i) {\0A memcpy(w, sep->ptr, (size_t)sep->len);\0A w += sep->len;\0A }\0A memcpy(w, p[i].ptr, (size_t)p[i].len);\0A w += p[i].len;\0A }\0A *w = 0;\0A out->ptr = m;\0A out->len = len;\0A out->cap = len + 1;\0A}\0A\0Avoid finch_str_repeat(FStr *out, const FStr *s, int64_t n) {\0A if (n < 0) n = 0;\0A int64_t len = s->len * n;\0A char *m = finch_alloc(len + 1);\0A for (int64_t i = 0; i < n; i++) memcpy(m + i * s->len, s->ptr, (size_t)s->len);\0A m[len] = 0;\0A out->ptr = m;\0A out->len = len;\0A out->cap = len + 1;\0A}\0A\0Avoid finch_str_from_bytes(FStr *out, const FArr *bytes) { str_heap(out, bytes->ptr, bytes->len); }\0A\0A// ---------- building text: print(x) and str(x) of arrays, maps and structs ----------\0A// A buffer starts as an empty str and grows on the heap.\0A\0Avoid finch_buf_add(FStr *b, const char *p, int64_t n) {\0A if (b->len + n + 1 > b->cap) {\0A int64_t cap = b->cap > 0 ? b->cap * 2 : 32;\0A while (cap < b->len + n + 1) cap *= 2;\0A b->ptr = must(realloc(b->cap > 0 ? b->ptr : NULL, (size_t)cap));\0A b->cap = cap;\0A }\0A if (n) memcpy(b->ptr + b->len, p, (size_t)n);\0A b->len += n;\0A b->ptr[b->len] = 0;\0A}\0A\0Astatic void buf_fmt(FStr *b, const char *fmt, ...) __attribute__((format(printf, 2, 3)));\0Astatic void buf_fmt(FStr *b, const char *fmt, ...) {\0A char t[64];\0A va_list ap;\0A va_start(ap, fmt);\0A int n = vsnprintf(t, sizeof t, fmt, ap);\0A va_end(ap);\0A finch_buf_add(b, t, n);\0A}\0A\0Avoid finch_buf_int(FStr *b, int64_t v) { buf_fmt(b, \22%lld\22, (long long)v); }\0Avoid finch_buf_uint(FStr *b, uint64_t v) { buf_fmt(b, \22%llu\22, (unsigned long long)v); }\0Avoid finch_buf_float(FStr *b, double v) { buf_fmt(b, \22%g\22, v); }\0Avoid finch_buf_bool(FStr *b, int v) { finch_buf_add(b, v ? \22true\22 : \22false\22, v ? 4 : 5); }\0Avoid finch_buf_ptr(FStr *b, const void *p) {\0A if (p) buf_fmt(b, \220x%llx\22, (unsigned long long)(uintptr_t)p);\0A else finch_buf_add(b, \22null\22, 4);\0A}\0A\0Avoid finch_buf_char(FStr *b, char c, int quoted) {\0A if (quoted) finch_buf_add(b, \22'\22, 1);\0A finch_buf_add(b, &c, 1);\0A if (quoted) finch_buf_add(b, \22'\22, 1);\0A}\0A\0Avoid finch_buf_str(FStr *b, const FStr *s, int quoted) {\0A if (quoted) finch_buf_add(b, \22\5C\22\22, 1);\0A finch_buf_add(b, s->ptr, s->len);\0A if (quoted) finch_buf_add(b, \22\5C\22\22, 1);\0A}\0A\0A// print the buffer and free it\0Avoid finch_buf_print(FStr *b) {\0A if (b->len) fwrite(b->ptr, 1, (size_t)b->len, stdout);\0A if (b->cap > 0) free(b->ptr);\0A}\0A\0A// ---------- arrays ----------\0A\0Avoid finch_arr_reserve(FArr *a, int64_t need, int64_t es) {\0A if (need <= a->cap) return;\0A int64_t cap = a->cap * 2;\0A if (cap < 4) cap = 4;\0A if (cap < need) cap = need;\0A a->ptr = must(realloc(a->cap > 0 ? a->ptr : NULL, (size_t)(cap * es)));\0A a->cap = cap;\0A}\0A\0Avoid finch_arr_make(FArr *out, int64_t len, int64_t es) {\0A if (len < 0) len = 0;\0A out->ptr = len ? finch_zalloc(len * es) : NULL;\0A out->len = len;\0A out->cap = len;\0A}\0A\0A// grow or shrink to `len`; new elements are zero\0Avoid finch_arr_resize(FArr *a, int64_t len, int64_t es) {\0A if (len < 0) len = 0;\0A finch_arr_reserve(a, len, es);\0A if (len > a->len) memset((char *)a->ptr + a->len * es, 0, (size_t)((len - a->len) * es));\0A a->len = len;\0A}\0A\0A// a byte-for-byte copy of the elements (the compiler deep-copies owning elements afterwards)\0Avoid finch_arr_clone_raw(FArr *out, const FArr *a, int64_t es) {\0A out->len = a->len;\0A out->cap = a->len;\0A out->ptr = a->len ? finch_alloc(a->len * es) : NULL;\0A if (a->len) memcpy(out->ptr, a->ptr, (size_t)(a->len * es));\0A}\0A\0Avoid finch_arr_free(FArr *a) {\0A if (a->cap > 0) free(a->ptr);\0A}\0A\0A// open a hole at i (0 <= i <= len), len grows by one\0Avoid finch_arr_insert_gap(FArr *a, int64_t i, int64_t es, const char *file, int64_t line) {\0A if (i < 0 || i > a->len) finch_panic_index(file, line, i, a->len);\0A finch_arr_reserve(a, a->len + 1, es);\0A char *p = a->ptr;\0A memmove(p + (i + 1) * es, p + i * es, (size_t)((a->len - i) * es));\0A a->len++;\0A}\0A\0A// close the hole at i (the element was already moved out), len shrinks by one\0Avoid finch_arr_remove_gap(FArr *a, int64_t i, int64_t es) {\0A char *p = a->ptr;\0A memmove(p + i * es, p + (i + 1) * es, (size_t)((a->len - i - 1) * es));\0A a->len--;\0A}\0A\0Astatic void arr_push_str(FArr *a, const char *p, int64_t len) {\0A finch_arr_reserve(a, a->len + 1, (int64_t)sizeof(FStr));\0A str_heap((FStr *)a->ptr + a->len, p, len);\0A a->len++;\0A}\0A\0Avoid finch_bytes_from_str(FArr *out, const FStr *s) {\0A out->len = out->cap = s->len;\0A out->ptr = s->len ? finch_alloc(s->len) : NULL;\0A if (s->len) memcpy(out->ptr, s->ptr, (size_t)s->len);\0A}\0A\0A// ---------- program arguments, input and files ----------\0A\0Avoid finch_args(FArr *out, int argc, char **argv) {\0A out->len = out->cap = argc;\0A out->ptr = finch_alloc((int64_t)sizeof(FStr) * (argc ? argc : 1));\0A for (int i = 0; i < argc; i++) str_heap((FStr *)out->ptr + i, argv[i], (int64_t)strlen(argv[i]));\0A}\0A\0A// input(\22Name? \22) prints the prompt and reads one line, without the newline.\0Avoid finch_input(FStr *out, const FStr *prompt) {\0A if (prompt->len) fwrite(prompt->ptr, 1, (size_t)prompt->len, stdout);\0A fflush(stdout);\0A // read one line of any length (getline isn't available everywhere)\0A size_t size = 128, n = 0;\0A char *line = finch_alloc((int64_t)size);\0A int c, got = 0;\0A while ((c = fgetc(stdin)) != EOF) {\0A got = 1;\0A if (c == '\5Cn') break;\0A if (n + 1 >= size) line = must(realloc(line, size *= 2));\0A line[n++] = (char)c;\0A }\0A if (!got) {\0A free(line);\0A str_static(out, empty);\0A return;\0A }\0A while (n > 0 && line[n - 1] == '\5Cr') n--;\0A line[n] = 0;\0A out->ptr = line;\0A out->len = (int64_t)n;\0A out->cap = (int64_t)size;\0A}\0A\0Aint finch_file_exists(const FStr *path) {\0A FILE *f = fopen(path->ptr, \22rb\22);\0A if (f) fclose(f);\0A return f != NULL;\0A}\0A\0Aint finch_try_read_file(FStr *out, const FStr *path, FStr *err) {\0A FILE *f = fopen(path->ptr ? path->ptr : \22\22, \22rb\22);\0A if (!f) {\0A file_error(err, \22read\22, path);\0A return 0;\0A }\0A fseek(f, 0, SEEK_END);\0A long size = ftell(f);\0A fseek(f, 0, SEEK_SET);\0A char *m = finch_alloc(size + 1);\0A size_t got = fread(m, 1, (size_t)size, f);\0A fclose(f);\0A m[got] = 0;\0A out->ptr = m;\0A out->len = (int64_t)got;\0A out->cap = size + 1;\0A return 1;\0A}\0A\0Avoid finch_read_file(FStr *out, const FStr *path, const char *file, int64_t line) {\0A FILE *f = fopen(path->ptr ? path->ptr : \22\22, \22rb\22);\0A if (!f) {\0A char msg[300];\0A snprintf(msg, sizeof msg, \22can't read the file \5C\22%.*s\5C\22: %s\22, (int)(path->len > 200 ? 200 : path->len),\0A path->ptr, strerror(errno));\0A finch_panic(file, line, msg);\0A }\0A fseek(f, 0, SEEK_END);\0A long size = ftell(f);\0A fseek(f, 0, SEEK_SET);\0A char *m = finch_alloc(size + 1);\0A size_t got = fread(m, 1, (size_t)size, f);\0A fclose(f);\0A m[got] = 0;\0A out->ptr = m;\0A out->len = (int64_t)got;\0A out->cap = size + 1;\0A}\0A\0A// shell(\22ls -l\22): run a command, give back its exit code\0Aint64_t finch_shell(const FStr *cmd) {\0A fflush(stdout);\0A int status = system(cmd->ptr ? cmd->ptr : \22\22);\0A#ifdef _WIN32\0A return status; // Windows gives the exit code directly\0A#else\0A if (status == -1) return -1;\0A if (WIFEXITED(status)) return WEXITSTATUS(status);\0A return 128 + (WIFSIGNALED(status) ? WTERMSIG(status) : 0);\0A#endif\0A}\0A\0Aint finch_delete_file(const FStr *path) { return remove(path->ptr ? path->ptr : \22\22) == 0; }\0A\0Aint finch_try_delete_file(const FStr *path, FStr *err) {\0A if (remove(path->ptr ? path->ptr : \22\22) == 0) return 1;\0A file_error(err, \22delete\22, path);\0A return 0;\0A}\0A\0A// stdin/stdout/stderr are macros on some systems (Windows), so Finch asks for them here\0Avoid *finch_std_stream(int i) { return i == 0 ? (void *)stdin : i == 1 ? (void *)stdout : (void *)stderr; }\0A\0Aint finch_write_file(const FStr *path, const FStr *text) {\0A FILE *f = fopen(path->ptr ? path->ptr : \22\22, \22wb\22);\0A if (!f) return 0;\0A size_t put = text->len ? fwrite(text->ptr, 1, (size_t)text->len, f) : 0;\0A return fclose(f) == 0 && put == (size_t)text->len;\0A}\0A\0Aint finch_try_write_file(const FStr *path, const FStr *text, FStr *err) {\0A errno = 0;\0A if (finch_write_file(path, text)) return 1;\0A if (!errno) errno = EIO;\0A file_error(err, \22write\22, path);\0A return 0;\0A}\0A\0A// ---------- maps ----------\0A// map[K]V = { entries; len; used; cap; index; icap; adds }\0A// entries: `used` slots of es bytes, each { uint64 hash; K key; V value }, in insertion order.\0A// A removed entry keeps its slot (hash 0) until the next resize packs the slots.\0A// index: icap slots (a power of two, at least 2 * cap): -1 empty, -2 removed, else an entry number.\0A// adds: how many keys were ever added; a `for` over the map stops with an error if it changes.\0A// The compiler stores, copies and drops keys and values; the runtime only finds and places entries.\0A// Keys are compared byte for byte (numbers, chars, bools) or as text (kstr).\0A\0Atypedef struct {\0A char *entries;\0A int64_t len, used, cap;\0A int64_t *index;\0A int64_t icap;\0A int64_t adds;\0A} FMap;\0A\0Astatic uint64_t map_hash(const void *key, int64_t ks, int kstr) {\0A const unsigned char *p;\0A size_t n;\0A if (kstr) {\0A const FStr *s = key;\0A p = (const unsigned char *)s->ptr;\0A n = (size_t)s->len;\0A } else {\0A p = key;\0A n = (size_t)ks;\0A }\0A uint64_t h = 1469598103934665603ULL; // FNV-1a, then mixed so the low bits spread well\0A for (size_t i = 0; i < n; i++) {\0A h ^= p[i];\0A h *= 1099511628211ULL;\0A }\0A h ^= h >> 31;\0A h *= 0xbf58476d1ce4e5b9ULL;\0A h ^= h >> 29;\0A return h | 1; // 0 marks a removed entry\0A}\0A\0Astatic int map_key_eq(const char *a, const void *b, int64_t ks, int kstr) {\0A if (!kstr) return memcmp(a, b, (size_t)ks) == 0;\0A const FStr *x = (const FStr *)a, *y = b;\0A return x->len == y->len && (x->len == 0 || memcmp(x->ptr, y->ptr, (size_t)x->len) == 0);\0A}\0A\0Astatic void map_reindex(FMap *m, int64_t es) {\0A if (m->len != m->used) { // pack the slots of removed entries away\0A int64_t j = 0;\0A for (int64_t i = 0; i < m->used; i++) {\0A char *e = m->entries + i * es;\0A if (*(uint64_t *)e == 0) continue;\0A if (i != j) memmove(m->entries + j * es, e, (size_t)es);\0A j++;\0A }\0A m->used = j;\0A }\0A int64_t icap = 16;\0A while (icap < m->cap * 2) icap *= 2;\0A free(m->index);\0A m->index = finch_alloc(icap * (int64_t)sizeof(int64_t));\0A memset(m->index, 0xff, (size_t)icap * sizeof(int64_t));\0A m->icap = icap;\0A for (int64_t i = 0; i < m->used; i++) {\0A uint64_t h = *(uint64_t *)(m->entries + i * es);\0A int64_t s = (int64_t)(h & (uint64_t)(icap - 1));\0A while (m->index[s] != -1) s = (s + 1) & (icap - 1);\0A m->index[s] = i;\0A }\0A}\0A\0A// the entry number of `key`, or -1\0Aint64_t finch_map_find(const FMap *m, const void *key, int64_t es, int64_t ks, int32_t kstr) {\0A if (m->len == 0) return -1;\0A uint64_t h = map_hash(key, ks, kstr);\0A for (int64_t s = (int64_t)(h & (uint64_t)(m->icap - 1));; s = (s + 1) & (m->icap - 1)) {\0A int64_t i = m->index[s];\0A if (i == -1) return -1;\0A if (i < 0) continue;\0A char *e = m->entries + i * es;\0A if (*(uint64_t *)e == h && map_key_eq(e + 8, key, ks, kstr)) return i;\0A }\0A}\0A\0A// The entry for `key`. A new one is zeroed except its hash (*added = 1); the compiler then stores the key.\0Aint64_t finch_map_slot(FMap *m, const void *key, int64_t es, int64_t ks, int32_t kstr, int32_t *added) {\0A int64_t i = finch_map_find(m, key, es, ks, kstr);\0A *added = i < 0;\0A if (i >= 0) return i;\0A if (m->used == m->cap) {\0A if (m->len * 4 < m->cap * 3) { // many removed slots: pack them instead of growing\0A map_reindex(m, es);\0A } else {\0A m->cap = m->cap ? m->cap * 2 : 8;\0A m->entries = must(realloc(m->entries, (size_t)(m->cap * es)));\0A map_reindex(m, es);\0A }\0A }\0A uint64_t h = map_hash(key, ks, kstr);\0A i = m->used++;\0A char *e = m->entries + i * es;\0A memset(e, 0, (size_t)es);\0A *(uint64_t *)e = h;\0A int64_t s = (int64_t)(h & (uint64_t)(m->icap - 1));\0A while (m->index[s] >= 0) s = (s + 1) & (m->icap - 1);\0A m->index[s] = i;\0A m->len++;\0A m->adds++;\0A return i;\0A}\0A\0A// Forget entry i (its key and value were already dropped by the compiler).\0Avoid finch_map_remove_at(FMap *m, int64_t i, int64_t es) {\0A char *e = m->entries + i * es;\0A uint64_t h = *(uint64_t *)e;\0A int64_t s = (int64_t)(h & (uint64_t)(m->icap - 1));\0A while (m->index[s] != i) s = (s + 1) & (m->icap - 1);\0A m->index[s] = -2;\0A *(uint64_t *)e = 0;\0A if (--m->len == 0) {\0A m->used = 0;\0A memset(m->index, 0xff, (size_t)m->icap * sizeof(int64_t));\0A }\0A}\0A\0Avoid finch_map_clear(FMap *m) {\0A m->len = m->used = 0;\0A if (m->index) memset(m->index, 0xff, (size_t)m->icap * sizeof(int64_t));\0A}\0A\0Avoid finch_map_free(FMap *m) {\0A free(m->entries);\0A free(m->index);\0A}\0A\0A// A copy of the slots and the index; the compiler then copies the keys and values that own memory.\0Avoid finch_map_clone_raw(FMap *out, const FMap *m, int64_t es) {\0A *out = *m;\0A if (!m->cap) return;\0A out->entries = finch_alloc(m->cap * es);\0A memcpy(out->entries, m->entries, (size_t)(m->used * es));\0A out->index = finch_alloc(m->icap * (int64_t)sizeof(int64_t));\0A memcpy(out->index, m->index, (size_t)m->icap * sizeof(int64_t));\0A}\0A\0A__attribute__((noreturn, cold)) void finch_map_changed(const char *file, int64_t line) {\0A finch_panic(file, line, \22a key was added to the map while looping over it (collect the new keys, and add them after the loop)\22);\0A}\0A\0A__attribute__((noreturn, cold)) void finch_map_missing(const char *file, int64_t line, const FStr *key) {\0A char msg[200];\0A snprintf(msg, sizeof msg, \22the key %.*s is not in the map (check with .has(key), or use .get(key, default))\22,\0A (int)(key->len > 100 ? 100 : key->len), key->ptr ? key->ptr : \22\22);\0A finch_panic(file, line, msg);\0A}\0A\00" +@.str.7330 = private unnamed_addr constant [12885 x i8] c"// JSON: read it, build it, write it.\0A//\0A// import json\0A//\0A// doc := try json.parse(\22{\5C\22name\5C\22: \5C\22Finch\5C\22, \5C\22tags\5C\22: [\5C\22fast\5C\22, \5C\22small\5C\22], \5C\22stars\5C\22: 5}\22)\0A// print(doc.get(\22name\22).str_or(\22\22)) Finch\0A// print(doc.get(\22tags\22).at(1).str_or(\22\22)) small\0A// print(doc.get(\22stars\22).int_or(0)) 5\0A// print(doc.get(\22missing\22).is_null()) true (a missing key is null, so chains never fail)\0A//\0A// out := json.new_object()\0A// out.set(\22ok\22, json.new_bool(true))\0A// list := json.new_list()\0A// list.push(json.new_number(1.5))\0A// out.set(\22values\22, list)\0A// print(json.stringify(out)) {\22ok\22:true,\22values\22:[1.5]}\0A// print(json.pretty(out)) the same, over several lines\0A\0Aenum Kind { Null, Bool, Number, Text, List, Object }\0A\0A// One JSON value. `kind` says which of the other fields it uses: flag for Bool, num for Number,\0A// text for Text, items for List, and items with keys (the same length, in the same order) for Object.\0Astruct Json {\0A Kind kind\0A bool flag\0A float num\0A str text\0A []Json items\0A []str keys\0A}\0A\0Afn new_null() -> Json {\0A return Json(kind: Kind.Null)\0A}\0A\0Afn new_bool(bool b) -> Json {\0A return Json(kind: Kind.Bool, flag: b)\0A}\0A\0Afn new_number(float n) -> Json {\0A return Json(kind: Kind.Number, num: n)\0A}\0A\0Afn new_text(str s) -> Json {\0A return Json(kind: Kind.Text, text: s)\0A}\0A\0Afn new_list() -> Json {\0A return Json(kind: Kind.List)\0A}\0A\0Afn new_object() -> Json {\0A return Json(kind: Kind.Object)\0A}\0A\0A// ---------- looking inside ----------\0A\0Afn Json.is_null() -> bool {\0A return self.kind == Kind.Null\0A}\0A\0A// the number of elements of a list, of keys of an object, of bytes of a text; 0 for the rest\0Afn Json.len() -> int {\0A return match self.kind {\0A List, Object -> self.items.len\0A Text -> self.text.len\0A else -> 0\0A }\0A}\0A\0Afn Json.has(str key) -> bool {\0A return self.kind == Kind.Object && self.keys.contains(key)\0A}\0A\0A// the value of a key of an object; null if there is none (or this is not an object)\0Afn Json.get(str key) -> Json {\0A if self.kind != Kind.Object {\0A return new_null()\0A }\0A i := self.keys.find(key)\0A if i < 0 {\0A return new_null()\0A }\0A return self.items[i]\0A}\0A\0A// the element of a list; null if there is none\0Afn Json.at(int i) -> Json {\0A if self.kind != Kind.List || i < 0 || i >= self.items.len {\0A return new_null()\0A }\0A return self.items[i]\0A}\0A\0A// the value if it is of that kind, else what was given\0Afn Json.str_or(str fallback) -> str {\0A if self.kind == Kind.Text {\0A return self.text\0A }\0A return fallback\0A}\0A\0Afn Json.float_or(float fallback) -> float {\0A if self.kind == Kind.Number {\0A return self.num\0A }\0A return fallback\0A}\0A\0Afn Json.int_or(int fallback) -> int {\0A if self.kind == Kind.Number {\0A return int(self.num)\0A }\0A return fallback\0A}\0A\0Afn Json.bool_or(bool fallback) -> bool {\0A if self.kind == Kind.Bool {\0A return self.flag\0A }\0A return fallback\0A}\0A\0A// the keys of an object, in the order they were written\0Afn Json.names() -> []str {\0A return self.keys\0A}\0A\0A// ---------- building ----------\0A\0A// add to the end of a list\0Afn Json.push(Json v) {\0A self.items.push(v)\0A}\0A\0A// give a key a value in an object; a key that is already there is replaced\0Afn Json.set(str key, Json v) {\0A i := self.keys.find(key)\0A if i >= 0 {\0A self.items[i] = v\0A return\0A }\0A self.keys.push(key)\0A self.items.push(v)\0A}\0A\0A// ---------- writing ----------\0A\0Afn quote(str s) -> str {\0A []str parts = [\22\5C\22\22]\0A for c in s {\0A n := int(c)\0A if c == '\22' {\0A parts.push(\22\5C\5C\5C\22\22)\0A } else if c == '\5C\5C' {\0A parts.push(\22\5C\5C\5C\5C\22)\0A } else if c == '\5Cn' {\0A parts.push(\22\5C\5Cn\22)\0A } else if c == '\5Cr' {\0A parts.push(\22\5C\5Cr\22)\0A } else if c == '\5Ct' {\0A parts.push(\22\5C\5Ct\22)\0A } else if n < 32 {\0A parts.push(\22\5C\5Cu00\22 + hexdigit(n / 16) + hexdigit(n % 16))\0A } else {\0A parts.push(str(c))\0A }\0A }\0A parts.push(\22\5C\22\22)\0A return parts.join(\22\22)\0A}\0A\0Afn hexdigit(int n) -> str {\0A digits := \220123456789abcdef\22\0A return str(digits[n])\0A}\0A\0Afn number_text(float n) -> str {\0A if n == float(int(n)) && n > -1000000000000000.0 && n < 1000000000000000.0 {\0A return str(int(n))\0A }\0A return str(n)\0A}\0A\0Astruct Writer {\0A []str out\0A}\0A\0Afn write(Json j, str indent, str pad, ptr[Writer] w) {\0A nl := \22\22\0A inner := \22\22\0A sep := \22,\22\0A colon := \22:\22\0A if indent.len > 0 {\0A nl = \22\5Cn\22\0A inner = pad + indent\0A colon = \22: \22\0A }\0A match j.kind {\0A Null -> w.out.push(\22null\22)\0A Bool -> {\0A if j.flag {\0A w.out.push(\22true\22)\0A } else {\0A w.out.push(\22false\22)\0A }\0A }\0A Number -> w.out.push(number_text(j.num))\0A Text -> w.out.push(quote(j.text))\0A List -> {\0A if j.items.len == 0 {\0A w.out.push(\22[]\22)\0A return\0A }\0A w.out.push(\22[\22 + nl)\0A for i, item in j.items {\0A if i > 0 {\0A w.out.push(sep + nl)\0A }\0A w.out.push(inner)\0A write(item, indent, inner, w)\0A }\0A w.out.push(nl + pad + \22]\22)\0A }\0A Object -> {\0A if j.items.len == 0 {\0A w.out.push(\22{}\22)\0A return\0A }\0A w.out.push(\22{\22 + nl)\0A for i, item in j.items {\0A if i > 0 {\0A w.out.push(sep + nl)\0A }\0A w.out.push(inner + quote(j.keys[i]) + colon)\0A write(item, indent, inner, w)\0A }\0A w.out.push(nl + pad + \22}\22)\0A }\0A }\0A}\0A\0A// the value as text on one line\0Afn stringify(Json j) -> str {\0A w := Writer()\0A write(j, \22\22, \22\22, addr(w))\0A return w.out.join(\22\22)\0A}\0A\0A// the value as text over several lines, indented by two spaces\0Afn pretty(Json j) -> str {\0A w := Writer()\0A write(j, \22 \22, \22\22, addr(w))\0A return w.out.join(\22\22)\0A}\0A\0A// ---------- reading ----------\0A\0Astruct Reader {\0A str src\0A int i\0A}\0A\0A// the line and column of a position, for a message\0Afn where(ptr[Reader] r) -> str {\0A line := 1\0A col := 1\0A for k in 0..r.i {\0A if k < r.src.len && r.src[k] == '\5Cn' {\0A line += 1\0A col = 1\0A } else {\0A col += 1\0A }\0A }\0A return \22line \22 + str(line) + \22, column \22 + str(col)\0A}\0A\0Afn peek(ptr[Reader] r) -> char {\0A if r.i < r.src.len {\0A return r.src[r.i]\0A }\0A return char(0)\0A}\0A\0Afn skip_space(ptr[Reader] r) {\0A while r.i < r.src.len && (r.src[r.i] == ' ' || r.src[r.i] == '\5Cn' || r.src[r.i] == '\5Ct' || r.src[r.i] == '\5Cr') {\0A r.i += 1\0A }\0A}\0A\0Afn unexpected(ptr[Reader] r, str wanted) -> str {\0A if r.i >= r.src.len {\0A return \22json: the text ends where \22 + wanted + \22 should be (\22 + where(r) + \22)\22\0A }\0A return \22json: found '\22 + str(r.src[r.i]) + \22' where \22 + wanted + \22 should be (\22 + where(r) + \22)\22\0A}\0A\0A// does `word` come next?\0Afn comes(ptr[Reader] r, str word) -> bool {\0A return r.src.len - r.i >= word.len && r.src.sub(r.i, r.i + word.len) == word\0A}\0A\0Afn expect_word(ptr[Reader] r, str word) -> ! {\0A if !comes(r, word) {\0A return error(unexpected(r, \22'\22 + word + \22'\22))\0A }\0A r.i += word.len\0A}\0A\0Afn hex_value(char c) -> int {\0A if c >= '0' && c <= '9' {\0A return int(c) - int('0')\0A }\0A if c >= 'a' && c <= 'f' {\0A return int(c) - int('a') + 10\0A }\0A if c >= 'A' && c <= 'F' {\0A return int(c) - int('A') + 10\0A }\0A return -1\0A}\0A\0A// a code point as UTF-8\0Afn utf8(int cp) -> str {\0A []u8 b\0A if cp < 128 {\0A b.push(u8(cp))\0A } else if cp < 2048 {\0A b.push(u8(192 + cp / 64))\0A b.push(u8(128 + cp % 64))\0A } else if cp < 65536 {\0A b.push(u8(224 + cp / 4096))\0A b.push(u8(128 + (cp / 64) % 64))\0A b.push(u8(128 + cp % 64))\0A } else {\0A b.push(u8(240 + cp / 262144))\0A b.push(u8(128 + (cp / 4096) % 64))\0A b.push(u8(128 + (cp / 64) % 64))\0A b.push(u8(128 + cp % 64))\0A }\0A return str(b)\0A}\0A\0Afn read_hex4(ptr[Reader] r) -> int! {\0A n := 0\0A for k in 0..4 {\0A if r.i >= r.src.len || hex_value(r.src[r.i]) < 0 {\0A return error(unexpected(r, \22a hexadecimal digit\22))\0A }\0A n = n * 16 + hex_value(r.src[r.i])\0A r.i += 1\0A }\0A return n\0A}\0A\0Afn read_string(ptr[Reader] r) -> str! {\0A r.i += 1 // the opening quote\0A []str parts\0A start := r.i\0A while true {\0A if r.i >= r.src.len {\0A return error(\22json: a text is never closed (\22 + where(r) + \22)\22)\0A }\0A c := r.src[r.i]\0A if c == '\22' {\0A parts.push(r.src.sub(start, r.i))\0A r.i += 1\0A return parts.join(\22\22)\0A }\0A if int(c) < 32 {\0A return error(\22json: a line break or control character inside a text (\22 + where(r) + \22)\22)\0A }\0A if c != '\5C\5C' {\0A r.i += 1\0A continue\0A }\0A parts.push(r.src.sub(start, r.i))\0A r.i += 1\0A e := peek(r)\0A r.i += 1\0A if e == 'n' {\0A parts.push(\22\5Cn\22)\0A } else if e == 't' {\0A parts.push(\22\5Ct\22)\0A } else if e == 'r' {\0A parts.push(\22\5Cr\22)\0A } else if e == 'b' {\0A parts.push(utf8(8))\0A } else if e == 'f' {\0A parts.push(utf8(12))\0A } else if e == '\22' || e == '\5C\5C' || e == '/' {\0A parts.push(str(e))\0A } else if e == 'u' {\0A cp := try read_hex4(r)\0A // a pair of \F0\9F\98\80 stands for one character above U+FFFF\0A if cp >= 55296 && cp < 56320 && comes(r, \22\5C\5Cu\22) {\0A r.i += 2\0A low := try read_hex4(r)\0A cp = 65536 + (cp - 55296) * 1024 + (low - 56320)\0A }\0A parts.push(utf8(cp))\0A } else {\0A return error(\22json: unknown escape \5C\5C\22 + str(e) + \22 in a text (\22 + where(r) + \22)\22)\0A }\0A start = r.i\0A }\0A}\0A\0Afn read_number(ptr[Reader] r) -> Json! {\0A start := r.i\0A if peek(r) == '-' {\0A r.i += 1\0A }\0A while r.i < r.src.len && ((r.src[r.i] >= '0' && r.src[r.i] <= '9') || r.src[r.i] == '.' || r.src[r.i] == 'e' || r.src[r.i] == 'E' || r.src[r.i] == '+' || r.src[r.i] == '-') {\0A r.i += 1\0A }\0A n := float(r.src.sub(start, r.i)) or {\0A r.i = start\0A return error(unexpected(r, \22a number\22))\0A }\0A return new_number(n)\0A}\0A\0Afn read_value(ptr[Reader] r) -> Json! {\0A skip_space(r)\0A c := peek(r)\0A if r.i >= r.src.len {\0A return error(unexpected(r, \22a value\22))\0A }\0A if c == '{' {\0A obj := new_object()\0A r.i += 1\0A skip_space(r)\0A if peek(r) == '}' {\0A r.i += 1\0A return obj\0A }\0A while true {\0A skip_space(r)\0A if peek(r) != '\22' {\0A return error(unexpected(r, \22a key in quotes\22))\0A }\0A key := try read_string(r)\0A skip_space(r)\0A if peek(r) != ':' {\0A return error(unexpected(r, \22':'\22))\0A }\0A r.i += 1\0A v := try read_value(r)\0A obj.set(key, v)\0A skip_space(r)\0A if peek(r) == ',' {\0A r.i += 1\0A continue\0A }\0A if peek(r) == '}' {\0A r.i += 1\0A return obj\0A }\0A return error(unexpected(r, \22',' or '}'\22))\0A }\0A }\0A if c == '[' {\0A list := new_list()\0A r.i += 1\0A skip_space(r)\0A if peek(r) == ']' {\0A r.i += 1\0A return list\0A }\0A while true {\0A v := try read_value(r)\0A list.push(v)\0A skip_space(r)\0A if peek(r) == ',' {\0A r.i += 1\0A continue\0A }\0A if peek(r) == ']' {\0A r.i += 1\0A return list\0A }\0A return error(unexpected(r, \22',' or ']'\22))\0A }\0A }\0A if c == '\22' {\0A s := try read_string(r)\0A return new_text(s)\0A }\0A if c == 't' {\0A try expect_word(r, \22true\22)\0A return new_bool(true)\0A }\0A if c == 'f' {\0A try expect_word(r, \22false\22)\0A return new_bool(false)\0A }\0A if c == 'n' {\0A try expect_word(r, \22null\22)\0A return new_null()\0A }\0A if c == '-' || (c >= '0' && c <= '9') {\0A return try read_number(r)\0A }\0A return error(unexpected(r, \22a value\22))\0A}\0A\0A// the JSON in `text`; an error with the line and column where it went wrong\0Afn parse(str text) -> Json! {\0A r := Reader(src: text)\0A v := try read_value(addr(r))\0A skip_space(addr(r))\0A if r.i < r.src.len {\0A return error(unexpected(addr(r), \22the end of the text\22))\0A }\0A return v\0A}\0A\00" +@.str.7331 = private unnamed_addr constant [2847 x i8] c"// Paths, as text. Elements are separated by \22/\22.\0A//\0A// import path\0A// path.join(\22a\22, \22b.txt\22) a/b.txt\0A// path.base(\22/tmp/x/a.tar.gz\22) a.tar.gz path.stem(...) a.tar path.ext(...) .gz\0A// path.dir(\22/tmp/x/a.txt\22) /tmp/x\0A// path.clean(\22a//b/../c/./d\22) a/c/d\0A\0A// a and b with one separator between; an absolute b replaces a\0Afn join(str a, str b) -> str {\0A if a.len == 0 {\0A return b\0A }\0A if b.len == 0 {\0A return a\0A }\0A if b[0] == '/' {\0A return b\0A }\0A if a[a.len - 1] == '/' {\0A return a + b\0A }\0A return a + \22/\22 + b\0A}\0A\0Afn is_abs(str p) -> bool {\0A return p.len > 0 && p[0] == '/'\0A}\0A\0A// the last element: \22a/b.txt\22 -> \22b.txt\22, \22a/b/\22 -> \22b\22, \22\22 -> \22.\22, \22/\22 -> \22/\22\0Afn base(str p) -> str {\0A if p.len == 0 {\0A return \22.\22\0A }\0A end := p.len\0A while end > 1 && p[end - 1] == '/' {\0A end -= 1\0A }\0A if end == 1 && p[0] == '/' {\0A return \22/\22\0A }\0A start := end\0A while start > 0 && p[start - 1] != '/' {\0A start -= 1\0A }\0A return p.sub(start, end)\0A}\0A\0A// everything before the last element: \22a/b.txt\22 -> \22a\22, \22b.txt\22 -> \22.\22, \22/b\22 -> \22/\22\0Afn dir(str p) -> str {\0A end := p.len\0A while end > 1 && p[end - 1] == '/' {\0A end -= 1\0A }\0A i := end\0A while i > 0 && p[i - 1] != '/' {\0A i -= 1\0A }\0A if i == 0 {\0A return \22.\22\0A }\0A while i > 1 && p[i - 1] == '/' {\0A i -= 1\0A }\0A return p.sub(0, i)\0A}\0A\0A// the part of the last element from its last dot: \22a.tar.gz\22 -> \22.gz\22; \22\22 when there is none\0Afn ext(str p) -> str {\0A b := base(p)\0A i := b.len\0A while i > 0 && b[i - 1] != '.' {\0A i -= 1\0A }\0A if i <= 1 { // no dot, or a name that only starts with one (.bashrc)\0A return \22\22\0A }\0A return b.sub(i - 1, b.len)\0A}\0A\0A// the last element without its extension\0Afn stem(str p) -> str {\0A b := base(p)\0A e := ext(p)\0A return b.sub(0, b.len - e.len)\0A}\0A\0A// the elements of a path: \22/a/b/c\22 -> [\22a\22, \22b\22, \22c\22]\0Afn parts(str p) -> []str {\0A []str out\0A for piece in p.split(\22/\22) {\0A if piece.len > 0 {\0A out.push(piece)\0A }\0A }\0A return out\0A}\0A\0A// the shortest path with the same meaning: no \22//\22, no \22.\22, and \22..\22 resolved where it can be\0Afn clean(str p) -> str {\0A if p.len == 0 {\0A return \22.\22\0A }\0A abs := is_abs(p)\0A []str out\0A for piece in parts(p) {\0A if piece == \22.\22 {\0A continue\0A }\0A if piece == \22..\22 {\0A if out.len > 0 && out[out.len - 1] != \22..\22 {\0A out.pop()\0A } else if !abs {\0A out.push(\22..\22)\0A }\0A continue\0A }\0A out.push(piece)\0A }\0A joined := out.join(\22/\22)\0A if abs {\0A return \22/\22 + joined\0A }\0A if joined.len == 0 {\0A return \22.\22\0A }\0A return joined\0A}\0A\00" +@.str.7332 = private unnamed_addr constant [1407 x i8] c"// Programs: run a command, read what it printed, look at the environment.\0A//\0A// import proc\0A// code := proc.run(\22make\22) the exit code; what the command prints goes to the screen\0A// text := try proc.output(\22git describe\22) what the command printed; an error if it failed\0A// proc.env(\22HOME\22, \22/\22) an environment variable, or the second value if it is not set\0Aimport \22stdlib.h\22\0Aimport \22unistd.h\22\0Aimport \22time.h\22\0A\0A// run a command; its output goes to the screen. Gives its exit code.\0Afn run(str command) -> int {\0A return shell(command)\0A}\0A\0A// run a command and give what it printed. Fails, with its output as the message, if it exits with an error.\0Afn output(str command) -> str! {\0A tmp := \22/tmp/finch_out_\22 + str(getpid()) + \22_\22 + str(int(time(null)))\0A code := shell(\22(\22 + command + \22) > '\22 + tmp + \22' 2>&1\22)\0A text := read_file(tmp) or \22\22\0A delete_file(tmp)\0A if code != 0 {\0A return error(\22'\22 + command + \22' exited with code \22 + str(code) + \22: \22 + text.trim())\0A }\0A return text\0A}\0A\0Afn env(str name, str fallback) -> str {\0A v := getenv(name)\0A if v.len == 0 {\0A return fallback\0A }\0A return v\0A}\0A\0Afn pid() -> int {\0A return int(getpid())\0A}\0A\0A// the folder the program is running in\0Afn cwd() -> str {\0A []char buf\0A for i in 0..4096 {\0A buf.push(char(0))\0A }\0A getcwd(buf.ptr, 4096)\0A return str(buf.ptr)\0A}\0A\00" +@.str.7333 = private unnamed_addr constant [996 x i8] c"// Programs, for Windows. The same functions as proc.fch (that file is for Linux and macOS).\0Aimport \22stdlib.h\22\0Aimport \22process.h\22\0Aimport \22direct.h\22\0Aimport \22time.h\22\0A\0Afn run(str command) -> int {\0A return shell(command)\0A}\0A\0Afn output(str command) -> str! {\0A tmp := proc_env(\22TEMP\22, \22.\22) + \22\5C\5Cfinch_out_\22 + str(getpid()) + \22_\22 + str(int(time(null)))\0A code := shell(command + \22 > \5C\22\22 + tmp + \22\5C\22 2>&1\22)\0A text := read_file(tmp) or \22\22\0A delete_file(tmp)\0A if code != 0 {\0A return error(\22'\22 + command + \22' exited with code \22 + str(code) + \22: \22 + text.trim())\0A }\0A return text\0A}\0A\0Afn proc_env(str name, str fallback) -> str {\0A v := getenv(name)\0A if v.len == 0 {\0A return fallback\0A }\0A return v\0A}\0A\0Afn env(str name, str fallback) -> str {\0A return proc_env(name, fallback)\0A}\0A\0Afn pid() -> int {\0A return int(getpid())\0A}\0A\0Afn cwd() -> str {\0A []char buf\0A for i in 0..4096 {\0A buf.push(char(0))\0A }\0A getcwd(buf.ptr, 4096)\0A return str(buf.ptr)\0A}\0A\00" +@.str.7334 = private unnamed_addr constant [2540 x i8] c"// Time: the clock, sleeping, and dates.\0A//\0A// import time\0A// start := time.millis() milliseconds from a clock that only goes forward (to measure with)\0A// time.sleep(250) wait a quarter of a second\0A// time.now() seconds since 1970-01-01 00:00 UTC\0A// d := time.date(time.now()) the parts: d.year, d.month, d.day, d.hour, d.minute, d.second\0A// time.format(time.now(), \22%Y-%m-%d %H:%M\22) as text, in the computer's time zone\0Aimport \22time.h\22\0A\0Astruct Date {\0A int year\0A int month // 1 to 12\0A int day // 1 to 31\0A int hour\0A int minute\0A int second\0A int weekday // 0 is Sunday\0A int yearday // 1 to 366\0A}\0A\0A// seconds since 1970-01-01 00:00 UTC\0Afn now() -> int {\0A return int(time(null))\0A}\0A\0A// milliseconds on a clock that only goes forward: for measuring how long something took\0Afn millis() -> int {\0A timespec ts\0A clock_gettime(CLOCK_MONOTONIC, addr(ts))\0A return int(ts.tv_sec) * 1000 + int(ts.tv_nsec) / 1000000\0A}\0A\0Afn sleep(int ms) {\0A timespec ts\0A ts.tv_sec = ms / 1000\0A ts.tv_nsec = (ms % 1000) * 1000000\0A nanosleep(addr(ts), null)\0A}\0A\0Afn parts(tm t) -> Date {\0A return Date(year: int(t.tm_year) + 1900, month: int(t.tm_mon) + 1, day: int(t.tm_mday), hour: int(t.tm_hour),\0A minute: int(t.tm_min), second: int(t.tm_sec), weekday: int(t.tm_wday), yearday: int(t.tm_yday) + 1)\0A}\0A\0A// the date and time of a moment, in UTC\0Afn date(int unix) -> Date {\0A tm t\0A i64 stamp = unix\0A gmtime_r(addr(stamp), addr(t))\0A return parts(t)\0A}\0A\0A// the date and time of a moment, in the computer's time zone\0Afn local(int unix) -> Date {\0A tm t\0A i64 stamp = unix\0A localtime_r(addr(stamp), addr(t))\0A return parts(t)\0A}\0A\0A// a moment as text, in the computer's time zone: %Y year, %m month, %d day, %H hour, %M minute, %S second\0A// (the rest of C's strftime works too: %A weekday name, %B month name, ...)\0Afn format(int unix, str pattern) -> str {\0A tm t\0A i64 stamp = unix\0A localtime_r(addr(stamp), addr(t))\0A []char buf\0A for i in 0..256 {\0A buf.push(char(0))\0A }\0A strftime(buf.ptr, 256, pattern, addr(t))\0A return str(buf.ptr)\0A}\0A\0A// the number of days in a month (month is 1 to 12)\0Afn days_in_month(int year, int month) -> int {\0A if month == 2 {\0A if year % 4 == 0 && (year % 100 != 0 || year % 400 == 0) {\0A return 29\0A }\0A return 28\0A }\0A if month == 4 || month == 6 || month == 9 || month == 11 {\0A return 30\0A }\0A return 31\0A}\0A\00" +@.str.7335 = private unnamed_addr constant [1793 x i8] c"// Time, for Windows. The same functions as time.fch (that file is for Linux and macOS).\0Aimport \22time.h\22\0Aimport \22finch_win.h\22\0A\0Astruct Date {\0A int year\0A int month // 1 to 12\0A int day // 1 to 31\0A int hour\0A int minute\0A int second\0A int weekday // 0 is Sunday\0A int yearday // 1 to 366\0A}\0A\0Afn now() -> int {\0A return int(time(null))\0A}\0A\0A// milliseconds on a clock that only goes forward (the performance counter: GetTickCount64 ticks every 15 ms)\0Afn millis() -> int {\0A i64 count = 0\0A i64 freq = 1\0A QueryPerformanceFrequency(addr(freq))\0A QueryPerformanceCounter(addr(count))\0A return int(count / freq) * 1000 + int(count % freq) * 1000 / int(freq)\0A}\0A\0Afn sleep(int ms) {\0A Sleep(u32(ms))\0A}\0A\0Afn parts(tm t) -> Date {\0A return Date(year: int(t.tm_year) + 1900, month: int(t.tm_mon) + 1, day: int(t.tm_mday), hour: int(t.tm_hour),\0A minute: int(t.tm_min), second: int(t.tm_sec), weekday: int(t.tm_wday), yearday: int(t.tm_yday) + 1)\0A}\0A\0Afn date(int unix) -> Date {\0A tm t\0A i64 stamp = unix\0A _gmtime64_s(addr(t), addr(stamp))\0A return parts(t)\0A}\0A\0Afn local(int unix) -> Date {\0A tm t\0A i64 stamp = unix\0A _localtime64_s(addr(t), addr(stamp))\0A return parts(t)\0A}\0A\0Afn format(int unix, str pattern) -> str {\0A tm t\0A i64 stamp = unix\0A _localtime64_s(addr(t), addr(stamp))\0A []char buf\0A for i in 0..256 {\0A buf.push(char(0))\0A }\0A strftime(buf.ptr, 256, pattern, addr(t))\0A return str(buf.ptr)\0A}\0A\0Afn days_in_month(int year, int month) -> int {\0A if month == 2 {\0A if year % 4 == 0 && (year % 100 != 0 || year % 400 == 0) {\0A return 29\0A }\0A return 28\0A }\0A if month == 4 || month == 6 || month == 9 || month == 11 {\0A return 30\0A }\0A return 31\0A}\0A\00" +@.str.7336 = private unnamed_addr constant [366 x i8] c"/* The Windows functions std/time_windows.fch needs. Declared here, not by including :\0A libclang can't parse that header with MinGW's intrinsics. Both are in kernel32. */\0Aunsigned long long GetTickCount64(void);\0Avoid Sleep(unsigned long milliseconds);\0Aint QueryPerformanceCounter(long long *count);\0Aint QueryPerformanceFrequency(long long *frequency);\0A\00" declare void @finch_panic(ptr, i64, ptr) noreturn cold declare void @finch_panic_index(ptr, i64, i64, i64) noreturn cold declare ptr @finch_alloc(i64) declare void @finch_str_copy(ptr, ptr) +declare void @finch_str_drop(ptr) +declare void @finch_arr_free(ptr) +declare void @finch_map_free(ptr) declare void @finch_str_own(ptr) declare void @finch_str_concat(ptr, ptr, ptr) declare i32 @finch_str_eq(ptr, ptr) @@ -7358,7 +7594,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 20, i64 %t8, i64 %t10) + call void @finch_panic_index(ptr @.str.1, i64 22, i64 %t8, i64 %t10) unreachable inrange8: %t12 = extractvalue { ptr, i64, i64 } %t9, 0 @@ -7386,7 +7622,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 26) + call void @finch_str_sub(ptr %a23, ptr %a22, i64 0, i64 %t24, ptr @.str.3, i64 28) %t25 = load { ptr, i64, i64 }, ptr %a23 ret { ptr, i64, i64 } %t25 } @@ -7396,85 +7632,91 @@ entry: %a1 = alloca { ptr, i64, i64 }, align 16 %a3 = alloca { ptr, i64, i64 }, align 16 %a4 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 + %a8 = alloca { ptr, i64, i64 }, align 16 + %a13 = alloca { ptr, i64, i64 }, align 16 %a16 = 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 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 + %a23 = alloca { ptr, i64, i64 }, align 16 + %a24 = alloca { ptr, i64, i64 }, align 16 + %a30 = alloca { ptr, i64, i64 }, align 16 + %a31 = alloca { ptr, i64, i64 }, align 16 %a34 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca i64, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 + %a36 = alloca { ptr, i64, i64 }, align 16 + %a37 = alloca { ptr, i64, i64 }, align 16 + %a38 = alloca { ptr, i64, i64 }, align 16 + %a40 = alloca i64, align 16 + %a44 = alloca { ptr, i64, i64 }, align 16 %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = 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 %t5 = load { ptr, i64, i64 }, ptr %a1 %t6 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t5) %t7 = extractvalue { ptr, i64, i64 } %t6, 1 - %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 30) - %t11 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t11, ptr %a12 - %t13 = load { ptr, i64, i64 }, ptr %a1 - %t14 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t13) - store { ptr, i64, i64 } %t14, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.5, i64 1, i64 0 }, ptr %a16 - %t17 = call i32 @finch_str_eq(ptr %a15, ptr %a16) - %t18 = icmp ne i32 %t17, 0 + store { ptr, i64, i64 } %t6, ptr %a8 + call void @finch_str_drop(ptr %a8) + %t9 = add i64 %t7, 1 + %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t11 = load i64, ptr %t10 + call void @finch_str_sub(ptr %a4, ptr %a3, i64 %t9, i64 %t11, ptr @.str.4, i64 32) + %t12 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t12, ptr %a13 + %t14 = load { ptr, i64, i64 }, ptr %a1 + %t15 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t14) + store { ptr, i64, i64 } %t15, ptr %a16 + store { ptr, i64, i64 } { ptr @.str.5, i64 1, i64 0 }, ptr %a17 + %t18 = call i32 @finch_str_eq(ptr %a16, ptr %a17) + %t19 = icmp ne i32 %t18, 0 + store { ptr, i64, i64 } %t15, ptr %a20 + call void @finch_str_drop(ptr %a20) br label %logic.from13 logic.from13: - br i1 %t18, label %logic.rhs14, label %logic.end15 + br i1 %t19, label %logic.rhs14, label %logic.end15 logic.rhs14: - %t19 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t19, ptr %a20 - store { ptr, i64, i64 } { ptr @.str.7, i64 2, i64 0 }, ptr %a22 - %t23 = call i32 @finch_str_starts(ptr %a20, ptr %a22) - %t24 = icmp ne i32 %t23, 0 - %t25 = xor i1 %t24, true + %t21 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t21, ptr %a22 + store { ptr, i64, i64 } { ptr @.str.7, i64 2, i64 0 }, ptr %a24 + %t25 = call i32 @finch_str_starts(ptr %a22, ptr %a24) + %t26 = icmp ne i32 %t25, 0 + %t27 = xor i1 %t26, true br label %logic.rend16 logic.rend16: br label %logic.end15 logic.end15: - %t26 = phi i1 [ false, %logic.from13 ], [ %t25, %logic.rend16 ] - br i1 %t26, label %then17, label %endif19 + %t28 = phi i1 [ false, %logic.from13 ], [ %t27, %logic.rend16 ] + br i1 %t28, label %then17, label %endif19 then17: - %t27 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t27, ptr %a28 - call void @finch_str_copy(ptr %a29, ptr %a28) - %t30 = load { ptr, i64, i64 }, ptr %a29 - store { ptr, i64, i64 } %t30, ptr %a12 + %t29 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t29, ptr %a30 + call void @finch_str_copy(ptr %a31, ptr %a30) + %t32 = load { ptr, i64, i64 }, ptr %a31 + %t33 = load { ptr, i64, i64 }, ptr %a13 + store { ptr, i64, i64 } %t32, ptr %a13 + store { ptr, i64, i64 } %t33, ptr %a34 + call void @finch_str_drop(ptr %a34) br label %endif19 endif19: - %t31 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } %t31, ptr %a32 - store { ptr, i64, i64 } { ptr @.str.9, i64 1, i64 0 }, ptr %a34 - %t35 = call i64 @finch_str_find(ptr %a32, ptr %a34) - store i64 %t35, ptr %a36 - %t37 = load i64, ptr %a36 - %t38 = icmp sgt i64 %t37, 0 - br i1 %t38, label %then20, label %endif22 + %t35 = load { ptr, i64, i64 }, ptr %a13 + store { ptr, i64, i64 } %t35, ptr %a36 + store { ptr, i64, i64 } { ptr @.str.9, i64 1, i64 0 }, ptr %a38 + %t39 = call i64 @finch_str_find(ptr %a36, ptr %a38) + store i64 %t39, ptr %a40 + %t41 = load i64, ptr %a40 + %t42 = icmp sgt i64 %t41, 0 + br i1 %t42, label %then20, label %endif22 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 36) - %t43 = load { ptr, i64, i64 }, ptr %a41 - ret { ptr, i64, i64 } %t43 -endif22: - %t44 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } %t44, ptr %a45 - call void @finch_str_copy(ptr %a46, ptr %a45) - %t47 = load { ptr, i64, i64 }, ptr %a46 + %t43 = load { ptr, i64, i64 }, ptr %a13 + store { ptr, i64, i64 } %t43, ptr %a44 + %t46 = load i64, ptr %a40 + call void @finch_str_sub(ptr %a45, ptr %a44, i64 0, i64 %t46, ptr @.str.10, i64 38) + %t47 = load { ptr, i64, i64 }, ptr %a45 + call void @finch_str_drop(ptr %a13) ret { ptr, i64, i64 } %t47 +endif22: + %t48 = load { ptr, i64, i64 }, ptr %a13 + ret { ptr, i64, i64 } %t48 } define internal { ptr, i64, i64 } @finch.main.textOfFile(ptr %p0, { ptr, i64, i64 } %p1) { @@ -7496,7 +7738,7 @@ entry: %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) + call void @finch_panic(ptr @.str.11, i64 55, ptr @.str.12) unreachable ok24: %t5 = getelementptr inbounds %S.main.Loader, ptr %t3, i32 0, i32 6 @@ -7537,7 +7779,7 @@ then30: %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) + call void @finch_panic(ptr @.str.13, i64 57, ptr @.str.14) unreachable ok34: %t27 = getelementptr inbounds %S.main.Loader, ptr %t25, i32 0, i32 7 @@ -7547,20 +7789,20 @@ ok34: %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) + call void @finch_panic_index(ptr @.str.15, i64 57, 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) + call void @finch_read_file(ptr %a36, ptr %a35, ptr @.str.16, i64 57) %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) + call void @finch_read_file(ptr %a40, ptr %a39, ptr @.str.17, i64 59) %t41 = load { ptr, i64, i64 }, ptr %a40 ret { ptr, i64, i64 } %t41 } @@ -7573,151 +7815,189 @@ entry: %a6 = 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 + %a9 = alloca { ptr, i64, i64 }, align 16 %a12 = 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 %a17 = 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 %a22 = 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 + %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 %a32 = alloca { ptr, i64, i64 }, align 16 %a33 = alloca { ptr, i64, i64 }, align 16 + %a34 = alloca { ptr, i64, i64 }, align 16 + %a36 = alloca { ptr, i64, i64 }, align 16 + %a37 = alloca { ptr, i64, i64 }, align 16 + %a38 = 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 + %a46 = alloca { ptr, i64, i64 }, align 16 %a47 = 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 %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 + %a55 = alloca { ptr, i64, i64 }, align 16 %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 %a61 = alloca { ptr, i64, i64 }, align 16 %a62 = alloca { ptr, i64, i64 }, align 16 %a63 = alloca { ptr, i64, i64 }, align 16 + %a64 = 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 %a70 = 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 %a74 = alloca { ptr, i64, i64 }, align 16 %a75 = alloca { ptr, i64, i64 }, align 16 - %a78 = 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 - %a88 = alloca 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 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 + %a84 = alloca { ptr, i64, i64 }, align 16 + %a86 = 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 + %a99 = alloca i64, 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 + %a114 = 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 %a120 = alloca { ptr, i64, i64 }, align 16 %a121 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 + %a122 = alloca { ptr, i64, i64 }, align 16 %a128 = alloca { ptr, i64, i64 }, align 16 %a129 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 + %a130 = alloca { ptr, i64, i64 }, align 16 + %a131 = alloca { ptr, i64, i64 }, align 16 %a133 = 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 - %a137 = alloca { ptr, i64, i64 }, align 16 %a138 = alloca { ptr, i64, i64 }, align 16 + %a140 = alloca { ptr, i64, i64 }, align 16 + %a143 = 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 %a148 = 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 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 + %a156 = alloca { ptr, i64, i64 }, align 16 %a162 = alloca { ptr, i64, i64 }, align 16 %a163 = alloca { ptr, i64, i64 }, align 16 %a164 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 + %a165 = alloca { ptr, i64, i64 }, align 16 + %a167 = alloca { ptr, i64, i64 }, align 16 + %a168 = 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 - %a172 = 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 - %a176 = 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 %a180 = 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 + %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 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 + %a198 = alloca { ptr, i64, i64 }, align 16 + %a199 = 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 + %a203 = 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 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 %a220 = alloca { ptr, i64, i64 }, align 16 + %a221 = alloca { ptr, i64, i64 }, align 16 + %a222 = alloca { ptr, i64, i64 }, align 16 + %a225 = 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 - %a229 = 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 %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 + %a239 = 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 - %a248 = alloca { ptr, i64, i64 }, align 16 + %a247 = alloca { ptr, i64, i64 }, align 16 %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 + %a251 = alloca { ptr, i64, i64 }, align 16 %a257 = alloca { ptr, i64, i64 }, align 16 %a258 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 + %a259 = alloca { ptr, i64, i64 }, align 16 %a262 = alloca { ptr, i64, i64 }, align 16 %a263 = 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 %a267 = alloca { ptr, i64, i64 }, align 16 + %a268 = alloca { ptr, i64, i64 }, align 16 %a269 = alloca { ptr, i64, i64 }, align 16 + %a270 = alloca { ptr, i64, i64 }, align 16 %a276 = alloca { ptr, i64, i64 }, align 16 %a277 = alloca { ptr, i64, i64 }, align 16 %a278 = 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 + %a284 = 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 + %a295 = alloca { ptr, i64, i64 }, align 16 + %a296 = alloca { ptr, i64, i64 }, align 16 + %a297 = alloca { ptr, i64, i64 }, align 16 + %a298 = 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 + %a305 = alloca { ptr, i64, i64 }, align 16 + %a307 = 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 + %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 + %a326 = 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 @@ -7726,388 +8006,505 @@ entry: store { ptr, i64, i64 } %t5, ptr %a7 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 - store { ptr, i64, i64 } %t9, ptr %a12 + store { ptr, i64, i64 } %t5, ptr %a9 + call void @finch_str_drop(ptr %a9) + %t10 = load { ptr, i64, i64 }, ptr %a6 + %t11 = load { ptr, i64, i64 }, ptr %a3 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.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.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 - store { ptr, i64, i64 } %t25, 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.21, i64 1, i64 0 }, ptr %a33 + store { ptr, i64, i64 } %t11, ptr %a14 + call void @finch_str_concat(ptr %a12, ptr %a13, ptr %a14) + store { ptr, i64, i64 } %t10, ptr %a15 + call void @finch_str_drop(ptr %a15) + %t16 = load { ptr, i64, i64 }, ptr %a12 + store { ptr, i64, i64 } %t16, ptr %a18 + store { ptr, i64, i64 } { ptr @.str.19, i64 4, i64 0 }, ptr %a19 + call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) + store { ptr, i64, i64 } %t16, ptr %a20 + call void @finch_str_drop(ptr %a20) + %t21 = load { ptr, i64, i64 }, ptr %a17 + store { ptr, i64, i64 } %t21, ptr %a22 + %t23 = load { ptr, i64, i64 }, ptr %a2 + %t24 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t23) + store { ptr, i64, i64 } %t24, ptr %a26 + store { ptr, i64, i64 } { ptr @.str.20, i64 1, i64 0 }, ptr %a27 + call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) + store { ptr, i64, i64 } %t24, ptr %a28 + call void @finch_str_drop(ptr %a28) + %t29 = load { ptr, i64, i64 }, ptr %a25 + %t30 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t29, 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 ptr, ptr %a1 - %t36 = icmp eq ptr %t35, null - br i1 %t36, label %panic37, label %ok38 + store { ptr, i64, i64 } %t29, ptr %a34 + call void @finch_str_drop(ptr %a34) + %t35 = load { ptr, i64, i64 }, ptr %a31 + store { ptr, i64, i64 } %t35, ptr %a37 + store { ptr, i64, i64 } { ptr @.str.21, i64 1, i64 0 }, ptr %a38 + call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) + store { ptr, i64, i64 } %t35, ptr %a39 + call void @finch_str_drop(ptr %a39) + %t40 = load { ptr, i64, i64 }, ptr %a36 + %t41 = load ptr, ptr %a1 + %t42 = icmp eq ptr %t41, null + br i1 %t42, label %panic37, label %ok38 panic37: - call void @finch_panic(ptr @.str.22, i64 65, ptr @.str.23) + call void @finch_panic(ptr @.str.22, i64 67, ptr @.str.23) unreachable 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 - 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.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 %then39, label %endif41 + %t43 = getelementptr inbounds %S.main.Loader, ptr %t41, i32 0, i32 3 + %t44 = load { ptr, i64, i64 }, ptr %t43 + store { ptr, i64, i64 } %t40, ptr %a46 + store { ptr, i64, i64 } %t44, ptr %a47 + call void @finch_str_concat(ptr %a45, ptr %a46, ptr %a47) + store { ptr, i64, i64 } %t40, ptr %a48 + call void @finch_str_drop(ptr %a48) + %t49 = load { ptr, i64, i64 }, ptr %a45 + store { ptr, i64, i64 } %t49, ptr %a51 + store { ptr, i64, i64 } { ptr @.str.24, i64 4, i64 0 }, ptr %a52 + call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) + store { ptr, i64, i64 } %t49, ptr %a53 + call void @finch_str_drop(ptr %a53) + %t54 = load { ptr, i64, i64 }, ptr %a50 + store { ptr, i64, i64 } %t54, ptr %a55 + %t56 = call i32 @finch_file_exists(ptr %a55) + store { ptr, i64, i64 } %t54, ptr %a57 + call void @finch_str_drop(ptr %a57) + %t58 = icmp ne i32 %t56, 0 + br i1 %t58, 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.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 - store { ptr, i64, i64 } %t55, ptr %a58 - store { ptr, i64, i64 } %t56, ptr %a59 - call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) - %t60 = load { ptr, i64, i64 }, ptr %a57 + %t59 = load { ptr, i64, i64 }, ptr %a2 + %t60 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t59) store { ptr, i64, i64 } %t60, ptr %a62 - store { ptr, i64, i64 } { ptr @.str.26, i64 1, i64 0 }, ptr %a63 + store { ptr, i64, i64 } { ptr @.str.25, 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 %panic42, label %ok43 + store { ptr, i64, i64 } %t60, ptr %a64 + call void @finch_str_drop(ptr %a64) + %t65 = load { ptr, i64, i64 }, ptr %a61 + %t66 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t65, ptr %a68 + store { ptr, i64, i64 } %t66, ptr %a69 + call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) + store { ptr, i64, i64 } %t65, ptr %a70 + call void @finch_str_drop(ptr %a70) + %t71 = load { ptr, i64, i64 }, ptr %a67 + store { ptr, i64, i64 } %t71, ptr %a73 + store { ptr, i64, i64 } { ptr @.str.26, i64 1, i64 0 }, ptr %a74 + call void @finch_str_concat(ptr %a72, ptr %a73, ptr %a74) + store { ptr, i64, i64 } %t71, ptr %a75 + call void @finch_str_drop(ptr %a75) + %t76 = load { ptr, i64, i64 }, ptr %a72 + %t77 = load ptr, ptr %a1 + %t78 = icmp eq ptr %t77, null + br i1 %t78, label %panic42, label %ok43 panic42: - call void @finch_panic(ptr @.str.27, i64 66, ptr @.str.28) + call void @finch_panic(ptr @.str.27, i64 68, ptr @.str.28) unreachable 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 - 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.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 + %t79 = getelementptr inbounds %S.main.Loader, ptr %t77, i32 0, i32 3 + %t80 = load { ptr, i64, i64 }, ptr %t79 + store { ptr, i64, i64 } %t76, ptr %a82 + store { ptr, i64, i64 } %t80, ptr %a83 + call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) + store { ptr, i64, i64 } %t76, ptr %a84 + call void @finch_str_drop(ptr %a84) + %t85 = load { ptr, i64, i64 }, ptr %a81 + store { ptr, i64, i64 } %t85, ptr %a87 + store { ptr, i64, i64 } { ptr @.str.29, i64 4, i64 0 }, ptr %a88 + call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) + store { ptr, i64, i64 } %t85, ptr %a89 + call void @finch_str_drop(ptr %a89) + %t90 = load { ptr, i64, i64 }, ptr %a86 + call void @finch_str_drop(ptr %a22) + ret { ptr, i64, i64 } %t90 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 %then44, label %endif46 + %t91 = load { ptr, i64, i64 }, ptr %a22 + store { ptr, i64, i64 } %t91, ptr %a92 + %t93 = call i32 @finch_file_exists(ptr %a92) + %t94 = icmp ne i32 %t93, 0 + br i1 %t94, 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 + %t95 = load { ptr, i64, i64 }, ptr %a22 + ret { ptr, i64, i64 } %t95 endif46: - %t85 = load ptr, ptr %a1 - %t86 = icmp eq ptr %t85, null - br i1 %t86, label %panic47, label %ok48 + %t96 = load ptr, ptr %a1 + %t97 = icmp eq ptr %t96, null + br i1 %t97, label %panic47, label %ok48 panic47: - call void @finch_panic(ptr @.str.30, i64 71, ptr @.str.31) + call void @finch_panic(ptr @.str.30, i64 73, ptr @.str.31) unreachable ok48: - %t87 = getelementptr inbounds %S.main.Loader, ptr %t85, i32 0, i32 5 - store i64 0, ptr %a88 + %t98 = getelementptr inbounds %S.main.Loader, ptr %t96, i32 0, i32 5 + store i64 0, ptr %a99 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.body50, label %each.end52 + %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.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.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 - store { ptr, i64, i64 } %t101, 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.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 %panic53, label %ok54 + %t104 = load ptr, ptr %t98 + %t105 = getelementptr inbounds { ptr, i64, i64 }, ptr %t104, i64 %t102 + %t106 = load { ptr, i64, i64 }, ptr %t105 + store { ptr, i64, i64 } %t106, ptr %a107 + %t108 = load { ptr, i64, i64 }, ptr %a107 + store { ptr, i64, i64 } %t108, ptr %a110 + store { ptr, i64, i64 } { ptr @.str.32, i64 1, 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 %a3 + store { ptr, i64, i64 } %t112, ptr %a115 + store { ptr, i64, i64 } %t113, ptr %a116 + call void @finch_str_concat(ptr %a114, ptr %a115, ptr %a116) + store { ptr, i64, i64 } %t112, ptr %a117 + call void @finch_str_drop(ptr %a117) + %t118 = load { ptr, i64, i64 }, ptr %a114 + store { ptr, i64, i64 } %t118, ptr %a120 + store { ptr, i64, i64 } { ptr @.str.33, i64 1, i64 0 }, ptr %a121 + call void @finch_str_concat(ptr %a119, ptr %a120, ptr %a121) + store { ptr, i64, i64 } %t118, ptr %a122 + call void @finch_str_drop(ptr %a122) + %t123 = load { ptr, i64, i64 }, ptr %a119 + %t124 = load ptr, ptr %a1 + %t125 = icmp eq ptr %t124, null + br i1 %t125, label %panic53, label %ok54 panic53: - call void @finch_panic(ptr @.str.34, i64 72, ptr @.str.35) + call void @finch_panic(ptr @.str.34, i64 74, ptr @.str.35) unreachable 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 - store { ptr, i64, i64 } %t114, 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 %a120 - 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 %then55, label %endif57 + %t126 = getelementptr inbounds %S.main.Loader, ptr %t124, i32 0, i32 3 + %t127 = load { ptr, i64, i64 }, ptr %t126 + store { ptr, i64, i64 } %t123, ptr %a129 + store { ptr, i64, i64 } %t127, ptr %a130 + call void @finch_str_concat(ptr %a128, ptr %a129, ptr %a130) + store { ptr, i64, i64 } %t123, ptr %a131 + call void @finch_str_drop(ptr %a131) + %t132 = load { ptr, i64, i64 }, ptr %a128 + store { ptr, i64, i64 } %t132, ptr %a134 + store { ptr, i64, i64 } { ptr @.str.36, i64 4, i64 0 }, ptr %a135 + call void @finch_str_concat(ptr %a133, ptr %a134, ptr %a135) + store { ptr, i64, i64 } %t132, ptr %a136 + call void @finch_str_drop(ptr %a136) + %t137 = load { ptr, i64, i64 }, ptr %a133 + store { ptr, i64, i64 } %t137, ptr %a138 + %t139 = call i32 @finch_file_exists(ptr %a138) + store { ptr, i64, i64 } %t137, ptr %a140 + call void @finch_str_drop(ptr %a140) + %t141 = icmp ne i32 %t139, 0 + br i1 %t141, 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.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 - store { ptr, i64, i64 } %t130, ptr %a133 - store { ptr, i64, i64 } %t131, ptr %a134 - 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.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 %panic58, label %ok59 + %t142 = load { ptr, i64, i64 }, ptr %a107 + store { ptr, i64, i64 } %t142, ptr %a144 + store { ptr, i64, i64 } { ptr @.str.37, i64 1, i64 0 }, ptr %a145 + call void @finch_str_concat(ptr %a143, ptr %a144, ptr %a145) + %t146 = load { ptr, i64, i64 }, ptr %a143 + %t147 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t146, ptr %a149 + store { ptr, i64, i64 } %t147, ptr %a150 + call void @finch_str_concat(ptr %a148, ptr %a149, ptr %a150) + store { ptr, i64, i64 } %t146, ptr %a151 + call void @finch_str_drop(ptr %a151) + %t152 = load { ptr, i64, i64 }, ptr %a148 + store { ptr, i64, i64 } %t152, ptr %a154 + store { ptr, i64, i64 } { ptr @.str.38, i64 1, i64 0 }, ptr %a155 + call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155) + store { ptr, i64, i64 } %t152, ptr %a156 + call void @finch_str_drop(ptr %a156) + %t157 = load { ptr, i64, i64 }, ptr %a153 + %t158 = load ptr, ptr %a1 + %t159 = icmp eq ptr %t158, null + br i1 %t159, label %panic58, label %ok59 panic58: - call void @finch_panic(ptr @.str.39, i64 73, ptr @.str.40) + call void @finch_panic(ptr @.str.39, i64 75, ptr @.str.40) unreachable 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 - store { ptr, i64, i64 } %t143, ptr %a146 - 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.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 -endif57: - %t152 = load { ptr, i64, i64 }, ptr %a96 - store { ptr, i64, i64 } %t152, ptr %a154 - 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 - store { ptr, i64, i64 } %t156, 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.43, i64 4, i64 0 }, ptr %a164 + %t160 = getelementptr inbounds %S.main.Loader, ptr %t158, i32 0, i32 3 + %t161 = load { ptr, i64, i64 }, ptr %t160 + store { ptr, i64, i64 } %t157, 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 %a166 - %t167 = call i32 @finch_file_exists(ptr %a166) - %t168 = icmp ne i32 %t167, 0 - br i1 %t168, label %then60, label %endif62 + store { ptr, i64, i64 } %t157, ptr %a165 + call void @finch_str_drop(ptr %a165) + %t166 = load { ptr, i64, i64 }, ptr %a162 + store { ptr, i64, i64 } %t166, ptr %a168 + store { ptr, i64, i64 } { ptr @.str.41, i64 4, i64 0 }, ptr %a169 + call void @finch_str_concat(ptr %a167, ptr %a168, ptr %a169) + store { ptr, i64, i64 } %t166, ptr %a170 + call void @finch_str_drop(ptr %a170) + %t171 = load { ptr, i64, i64 }, ptr %a167 + call void @finch_str_drop(ptr %a22) + ret { ptr, i64, i64 } %t171 +endif57: + %t172 = load { ptr, i64, i64 }, ptr %a107 + store { ptr, i64, i64 } %t172, ptr %a174 + store { ptr, i64, i64 } { ptr @.str.42, i64 1, 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 %a3 + store { ptr, i64, i64 } %t176, ptr %a179 + store { ptr, i64, i64 } %t177, ptr %a180 + call void @finch_str_concat(ptr %a178, ptr %a179, ptr %a180) + store { ptr, i64, i64 } %t176, ptr %a181 + call void @finch_str_drop(ptr %a181) + %t182 = load { ptr, i64, i64 }, ptr %a178 + store { ptr, i64, i64 } %t182, ptr %a184 + store { ptr, i64, i64 } { ptr @.str.43, i64 4, i64 0 }, ptr %a185 + call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) + store { ptr, i64, i64 } %t182, ptr %a186 + call void @finch_str_drop(ptr %a186) + %t187 = load { ptr, i64, i64 }, ptr %a183 + store { ptr, i64, i64 } %t187, ptr %a188 + %t189 = call i32 @finch_file_exists(ptr %a188) + store { ptr, i64, i64 } %t187, ptr %a190 + call void @finch_str_drop(ptr %a190) + %t191 = icmp ne i32 %t189, 0 + br i1 %t191, 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.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 - store { ptr, i64, i64 } %t173, ptr %a176 - store { ptr, i64, i64 } %t174, ptr %a177 - 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.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 + %t192 = load { ptr, i64, i64 }, ptr %a107 + store { ptr, i64, i64 } %t192, ptr %a194 + store { ptr, i64, i64 } { ptr @.str.44, 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 { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t196, ptr %a199 + store { ptr, i64, i64 } %t197, ptr %a200 + call void @finch_str_concat(ptr %a198, ptr %a199, ptr %a200) + store { ptr, i64, i64 } %t196, ptr %a201 + call void @finch_str_drop(ptr %a201) + %t202 = load { ptr, i64, i64 }, ptr %a198 + store { ptr, i64, i64 } %t202, ptr %a204 + store { ptr, i64, i64 } { ptr @.str.45, i64 4, i64 0 }, ptr %a205 + call void @finch_str_concat(ptr %a203, ptr %a204, ptr %a205) + store { ptr, i64, i64 } %t202, ptr %a206 + call void @finch_str_drop(ptr %a206) + %t207 = load { ptr, i64, i64 }, ptr %a203 + call void @finch_str_drop(ptr %a22) + ret { ptr, i64, i64 } %t207 endif62: br label %each.step51 each.step51: - %t183 = load i64, ptr %a88 - %t184 = add i64 %t183, 1 - store i64 %t184, ptr %a88 + %t208 = load i64, ptr %a99 + %t209 = add i64 %t208, 1 + store i64 %t209, ptr %a99 br label %each.cond49 each.end52: - %t185 = load ptr, ptr %a1 - %t186 = icmp eq ptr %t185, null - br i1 %t186, label %panic63, label %ok64 + %t210 = load ptr, ptr %a1 + %t211 = icmp eq ptr %t210, null + br i1 %t211, label %panic63, label %ok64 panic63: - call void @finch_panic(ptr @.str.46, i64 79, ptr @.str.47) + call void @finch_panic(ptr @.str.46, i64 81, ptr @.str.47) unreachable 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 %then65, label %endif67 + %t212 = getelementptr inbounds %S.main.Loader, ptr %t210, i32 0, i32 4 + %t213 = getelementptr inbounds { ptr, i64, i64 }, ptr %t212, i32 0, i32 1 + %t214 = load i64, ptr %t213 + %t215 = icmp sgt i64 %t214, 0 + br i1 %t215, label %then65, label %endif67 then65: - %t191 = load ptr, ptr %a1 - %t192 = icmp eq ptr %t191, null - br i1 %t192, label %panic68, label %ok69 + %t216 = load ptr, ptr %a1 + %t217 = icmp eq ptr %t216, null + br i1 %t217, label %panic68, label %ok69 panic68: - call void @finch_panic(ptr @.str.48, i64 80, ptr @.str.49) + call void @finch_panic(ptr @.str.48, i64 82, ptr @.str.49) unreachable 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.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 - store { ptr, i64, i64 } %t198, 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.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 %panic70, label %ok71 + %t218 = getelementptr inbounds %S.main.Loader, ptr %t216, i32 0, i32 4 + %t219 = load { ptr, i64, i64 }, ptr %t218 + store { ptr, i64, i64 } %t219, ptr %a221 + store { ptr, i64, i64 } { ptr @.str.50, i64 1, i64 0 }, ptr %a222 + call void @finch_str_concat(ptr %a220, ptr %a221, ptr %a222) + %t223 = load { ptr, i64, i64 }, ptr %a220 + %t224 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t223, ptr %a226 + store { ptr, i64, i64 } %t224, ptr %a227 + call void @finch_str_concat(ptr %a225, ptr %a226, ptr %a227) + store { ptr, i64, i64 } %t223, ptr %a228 + call void @finch_str_drop(ptr %a228) + %t229 = load { ptr, i64, i64 }, ptr %a225 + store { ptr, i64, i64 } %t229, ptr %a231 + store { ptr, i64, i64 } { ptr @.str.51, i64 1, i64 0 }, ptr %a232 + call void @finch_str_concat(ptr %a230, ptr %a231, ptr %a232) + store { ptr, i64, i64 } %t229, ptr %a233 + call void @finch_str_drop(ptr %a233) + %t234 = load { ptr, i64, i64 }, ptr %a230 + %t235 = load ptr, ptr %a1 + %t236 = icmp eq ptr %t235, null + br i1 %t236, label %panic70, label %ok71 panic70: - call void @finch_panic(ptr @.str.52, i64 80, ptr @.str.53) + call void @finch_panic(ptr @.str.52, i64 82, ptr @.str.53) unreachable 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 - 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.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 %then72, label %endif74 + %t237 = getelementptr inbounds %S.main.Loader, ptr %t235, i32 0, i32 3 + %t238 = load { ptr, i64, i64 }, ptr %t237 + store { ptr, i64, i64 } %t234, ptr %a240 + store { ptr, i64, i64 } %t238, ptr %a241 + call void @finch_str_concat(ptr %a239, ptr %a240, ptr %a241) + store { ptr, i64, i64 } %t234, ptr %a242 + call void @finch_str_drop(ptr %a242) + %t243 = load { ptr, i64, i64 }, ptr %a239 + store { ptr, i64, i64 } %t243, ptr %a245 + store { ptr, i64, i64 } { ptr @.str.54, i64 4, i64 0 }, ptr %a246 + call void @finch_str_concat(ptr %a244, ptr %a245, ptr %a246) + store { ptr, i64, i64 } %t243, ptr %a247 + call void @finch_str_drop(ptr %a247) + %t248 = load { ptr, i64, i64 }, ptr %a244 + store { ptr, i64, i64 } %t248, ptr %a249 + %t250 = call i32 @finch_file_exists(ptr %a249) + store { ptr, i64, i64 } %t248, ptr %a251 + call void @finch_str_drop(ptr %a251) + %t252 = icmp ne i32 %t250, 0 + br i1 %t252, label %then72, label %endif74 then72: - %t223 = load ptr, ptr %a1 - %t224 = icmp eq ptr %t223, null - br i1 %t224, label %panic75, label %ok76 + %t253 = load ptr, ptr %a1 + %t254 = icmp eq ptr %t253, null + br i1 %t254, label %panic75, label %ok76 panic75: - call void @finch_panic(ptr @.str.55, i64 81, ptr @.str.56) + call void @finch_panic(ptr @.str.55, i64 83, ptr @.str.56) unreachable 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.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 - store { ptr, i64, i64 } %t230, 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.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 %panic77, label %ok78 -panic77: - call void @finch_panic(ptr @.str.59, i64 81, ptr @.str.60) - unreachable -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 - 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.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 -endif74: - %t252 = load ptr, ptr %a1 - %t253 = icmp eq ptr %t252, null - br i1 %t253, label %panic79, label %ok80 -panic79: - call void @finch_panic(ptr @.str.62, i64 83, ptr @.str.63) - unreachable -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.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 - store { ptr, i64, i64 } %t259, ptr %a262 + %t255 = getelementptr inbounds %S.main.Loader, ptr %t253, i32 0, i32 4 + %t256 = load { ptr, i64, i64 }, ptr %t255 + store { ptr, i64, i64 } %t256, ptr %a258 + store { ptr, i64, i64 } { ptr @.str.57, 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 { ptr, i64, i64 }, ptr %a3 store { ptr, i64, i64 } %t260, ptr %a263 - 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.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 %then81, label %endif83 -then81: + store { ptr, i64, i64 } %t261, ptr %a264 + call void @finch_str_concat(ptr %a262, ptr %a263, ptr %a264) + store { ptr, i64, i64 } %t260, ptr %a265 + call void @finch_str_drop(ptr %a265) + %t266 = load { ptr, i64, i64 }, ptr %a262 + store { ptr, i64, i64 } %t266, ptr %a268 + store { ptr, i64, i64 } { ptr @.str.58, i64 1, i64 0 }, ptr %a269 + call void @finch_str_concat(ptr %a267, ptr %a268, ptr %a269) + store { ptr, i64, i64 } %t266, ptr %a270 + call void @finch_str_drop(ptr %a270) + %t271 = load { ptr, i64, i64 }, ptr %a267 %t272 = load ptr, ptr %a1 %t273 = icmp eq ptr %t272, null - br i1 %t273, label %panic84, label %ok85 + br i1 %t273, label %panic77, label %ok78 +panic77: + call void @finch_panic(ptr @.str.59, i64 83, ptr @.str.60) + unreachable +ok78: + %t274 = getelementptr inbounds %S.main.Loader, ptr %t272, i32 0, i32 3 + %t275 = load { ptr, i64, i64 }, ptr %t274 + store { ptr, i64, i64 } %t271, ptr %a277 + store { ptr, i64, i64 } %t275, ptr %a278 + call void @finch_str_concat(ptr %a276, ptr %a277, ptr %a278) + store { ptr, i64, i64 } %t271, ptr %a279 + call void @finch_str_drop(ptr %a279) + %t280 = load { ptr, i64, i64 }, ptr %a276 + store { ptr, i64, i64 } %t280, ptr %a282 + store { ptr, i64, i64 } { ptr @.str.61, i64 4, i64 0 }, ptr %a283 + call void @finch_str_concat(ptr %a281, ptr %a282, ptr %a283) + store { ptr, i64, i64 } %t280, ptr %a284 + call void @finch_str_drop(ptr %a284) + %t285 = load { ptr, i64, i64 }, ptr %a281 + call void @finch_str_drop(ptr %a22) + ret { ptr, i64, i64 } %t285 +endif74: + %t286 = load ptr, ptr %a1 + %t287 = icmp eq ptr %t286, null + br i1 %t287, label %panic79, label %ok80 +panic79: + call void @finch_panic(ptr @.str.62, i64 85, ptr @.str.63) + unreachable +ok80: + %t288 = getelementptr inbounds %S.main.Loader, ptr %t286, i32 0, i32 4 + %t289 = load { ptr, i64, i64 }, ptr %t288 + store { ptr, i64, i64 } %t289, ptr %a291 + store { ptr, i64, i64 } { ptr @.str.64, 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 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t293, ptr %a296 + store { ptr, i64, i64 } %t294, ptr %a297 + call void @finch_str_concat(ptr %a295, ptr %a296, ptr %a297) + store { ptr, i64, i64 } %t293, ptr %a298 + call void @finch_str_drop(ptr %a298) + %t299 = load { ptr, i64, i64 }, ptr %a295 + store { ptr, i64, i64 } %t299, ptr %a301 + store { ptr, i64, i64 } { ptr @.str.65, i64 4, i64 0 }, ptr %a302 + call void @finch_str_concat(ptr %a300, ptr %a301, ptr %a302) + store { ptr, i64, i64 } %t299, ptr %a303 + call void @finch_str_drop(ptr %a303) + %t304 = load { ptr, i64, i64 }, ptr %a300 + store { ptr, i64, i64 } %t304, ptr %a305 + %t306 = call i32 @finch_file_exists(ptr %a305) + store { ptr, i64, i64 } %t304, ptr %a307 + call void @finch_str_drop(ptr %a307) + %t308 = icmp ne i32 %t306, 0 + br i1 %t308, label %then81, label %endif83 +then81: + %t309 = load ptr, ptr %a1 + %t310 = icmp eq ptr %t309, null + br i1 %t310, label %panic84, label %ok85 panic84: - call void @finch_panic(ptr @.str.66, i64 84, ptr @.str.67) + call void @finch_panic(ptr @.str.66, i64 86, ptr @.str.67) unreachable 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.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 - store { ptr, i64, i64 } %t279, 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.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 + %t311 = getelementptr inbounds %S.main.Loader, ptr %t309, i32 0, i32 4 + %t312 = load { ptr, i64, i64 }, ptr %t311 + store { ptr, i64, i64 } %t312, ptr %a314 + store { ptr, i64, i64 } { ptr @.str.68, 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) + store { ptr, i64, i64 } %t316, ptr %a321 + call void @finch_str_drop(ptr %a321) + %t322 = load { ptr, i64, i64 }, ptr %a318 + store { ptr, i64, i64 } %t322, ptr %a324 + store { ptr, i64, i64 } { ptr @.str.69, i64 4, i64 0 }, ptr %a325 + call void @finch_str_concat(ptr %a323, ptr %a324, ptr %a325) + store { ptr, i64, i64 } %t322, ptr %a326 + call void @finch_str_drop(ptr %a326) + %t327 = load { ptr, i64, i64 }, ptr %a323 + call void @finch_str_drop(ptr %a22) + ret { ptr, i64, i64 } %t327 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) - %t292 = load { ptr, i64, i64 }, ptr %a291 - ret { ptr, i64, i64 } %t292 + %t328 = load { ptr, i64, i64 }, ptr %a22 + ret { ptr, i64, i64 } %t328 +} + +define internal void @finch.drop.S_lexer_Token(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.lexer.Token, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.lexer.Token, ptr %a, i32 0, i32 1 + call void @finch_str_drop(ptr %t2) + ret void +} + +define internal void @finch.drop.arr_S_lexer_Token(ptr %a) { +entry: + %a4 = alloca i64, align 16 + %t1 = load ptr, ptr %a + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 + %t3 = load i64, ptr %t2 + store i64 0, ptr %a4 + br label %n.cond107 +n.cond107: + %t5 = load i64, ptr %a4 + %t6 = icmp slt i64 %t5, %t3 + br i1 %t6, label %n.body108, label %n.end109 +n.body108: + %t7 = getelementptr inbounds %S.lexer.Token, ptr %t1, i64 %t5 + call void @finch.drop.S_lexer_Token(ptr %t7) + %t8 = load i64, ptr %a4 + %t9 = add i64 %t8, 1 + store i64 %t9, ptr %a4 + br label %n.cond107 +n.end109: + call void @finch_arr_free(ptr %a) + ret void } define internal void @finch.copy.arr_str(ptr %dst, ptr %src) { @@ -8119,20 +8516,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.cond107 -n.cond107: + br label %n.cond110 +n.cond110: %t6 = load i64, ptr %a5 %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body108, label %n.end109 -n.body108: + br i1 %t7, label %n.body111, label %n.end112 +n.body111: %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.cond107 -n.end109: + br label %n.cond110 +n.end112: ret void } @@ -8145,20 +8542,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.cond115 -n.cond115: + br label %n.cond118 +n.cond118: %t6 = load i64, ptr %a5 %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body116, label %n.end117 -n.body116: + br i1 %t7, label %n.body119, label %n.end120 +n.body119: %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.cond115 -n.end117: + br label %n.cond118 +n.end120: ret void } @@ -8223,20 +8620,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.cond112 -n.cond112: + br label %n.cond115 +n.cond115: %t6 = load i64, ptr %a5 %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body113, label %n.end114 -n.body113: + br i1 %t7, label %n.body116, label %n.end117 +n.body116: %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.cond112 -n.end114: + br label %n.cond115 +n.end117: ret void } @@ -8275,6 +8672,138 @@ entry: ret void } +define internal void @finch.drop.arr_str(ptr %a) { +entry: + %a4 = alloca i64, align 16 + %t1 = load ptr, ptr %a + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 + %t3 = load i64, ptr %t2 + store i64 0, ptr %a4 + br label %n.cond137 +n.cond137: + %t5 = load i64, ptr %a4 + %t6 = icmp slt i64 %t5, %t3 + br i1 %t6, label %n.body138, label %n.end139 +n.body138: + %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1, i64 %t5 + call void @finch_str_drop(ptr %t7) + %t8 = load i64, ptr %a4 + %t9 = add i64 %t8, 1 + store i64 %t9, ptr %a4 + br label %n.cond137 +n.end139: + call void @finch_arr_free(ptr %a) + ret void +} + +define internal void @finch.drop.arr_S_ast_Type(ptr %a) { +entry: + %a4 = alloca i64, align 16 + %t1 = load ptr, ptr %a + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 + %t3 = load i64, ptr %t2 + store i64 0, ptr %a4 + br label %n.cond143 +n.cond143: + %t5 = load i64, ptr %a4 + %t6 = icmp slt i64 %t5, %t3 + br i1 %t6, label %n.body144, label %n.end145 +n.body144: + %t7 = getelementptr inbounds %S.ast.Type, ptr %t1, i64 %t5 + call void @finch.drop.S_ast_Type(ptr %t7) + %t8 = load i64, ptr %a4 + %t9 = add i64 %t8, 1 + store i64 %t9, ptr %a4 + br label %n.cond143 +n.end145: + call void @finch_arr_free(ptr %a) + ret void +} + +define internal void @finch.drop.S_ast_Type(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.ast.Type, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.ast.Type, ptr %a, i32 0, i32 1 + call void @finch.drop.arr_S_ast_Type(ptr %t2) + %t3 = getelementptr inbounds %S.ast.Type, ptr %a, i32 0, i32 2 + call void @finch_str_drop(ptr %t3) + %t4 = getelementptr inbounds %S.ast.Type, ptr %a, i32 0, i32 3 + call void @finch_str_drop(ptr %t4) + ret void +} + +define internal void @finch.drop.S_ast_Node(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.ast.Node, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.ast.Node, ptr %a, i32 0, i32 1 + call void @finch_str_drop(ptr %t2) + %t3 = getelementptr inbounds %S.ast.Node, ptr %a, i32 0, i32 2 + call void @finch_str_drop(ptr %t3) + %t4 = getelementptr inbounds %S.ast.Node, ptr %a, i32 0, i32 3 + call void @finch.drop.arr_str(ptr %t4) + %t5 = getelementptr inbounds %S.ast.Node, ptr %a, i32 0, i32 4 + call void @finch_str_drop(ptr %t5) + %t6 = getelementptr inbounds %S.ast.Node, ptr %a, i32 0, i32 5 + call void @finch.drop.S_ast_Type(ptr %t6) + %t7 = getelementptr inbounds %S.ast.Node, ptr %a, i32 0, i32 9 + call void @finch.drop.arr_S_ast_Node(ptr %t7) + %t8 = getelementptr inbounds %S.ast.Node, ptr %a, i32 0, i32 10 + call void @finch.drop.arr_str(ptr %t8) + ret void +} + +define internal void @finch.drop.arr_S_ast_Node(ptr %a) { +entry: + %a4 = alloca i64, align 16 + %t1 = load ptr, ptr %a + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 + %t3 = load i64, ptr %t2 + store i64 0, ptr %a4 + br label %n.cond140 +n.cond140: + %t5 = load i64, ptr %a4 + %t6 = icmp slt i64 %t5, %t3 + br i1 %t6, label %n.body141, label %n.end142 +n.body141: + %t7 = getelementptr inbounds %S.ast.Node, ptr %t1, i64 %t5 + call void @finch.drop.S_ast_Node(ptr %t7) + %t8 = load i64, ptr %a4 + %t9 = add i64 %t8, 1 + store i64 %t9, ptr %a4 + br label %n.cond140 +n.end142: + call void @finch_arr_free(ptr %a) + ret void +} + +define internal void @finch.drop.S_ast_Program(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 1 + call void @finch_str_drop(ptr %t2) + %t3 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 2 + call void @finch.drop.arr_str(ptr %t3) + %t4 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 3 + call void @finch.drop.arr_str(ptr %t4) + %t5 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 4 + call void @finch.drop.arr_str(ptr %t5) + %t6 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 5 + call void @finch.drop.arr_str(ptr %t6) + %t7 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 6 + call void @finch.drop.arr_S_ast_Node(ptr %t7) + %t8 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 7 + call void @finch.drop.arr_S_ast_Node(ptr %t8) + %t9 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 8 + call void @finch.drop.arr_S_ast_Node(ptr %t9) + ret void +} + define internal void @finch.main.load(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2) { entry: %a1 = alloca ptr, align 16 @@ -8291,40 +8820,50 @@ entry: %a39 = 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 + %a42 = 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 %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 + %a51 = alloca { ptr, i64, i64 }, align 16 + %a52 = alloca { ptr, i64, i64 }, align 16 + %a53 = 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 - %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 + %a68 = 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 + %a86 = alloca { ptr, i64, i64 }, align 16 + %a92 = alloca i64, align 16 + %a98 = alloca { ptr, i64, i64 }, align 16 + %a99 = alloca { ptr, i64, i64 }, align 16 + %a111 = alloca { ptr, i64, i64 }, align 16 + %a112 = alloca %S.ast.Program, align 16 + %a115 = alloca { ptr, i64, i64 }, align 16 + %a116 = alloca { ptr, i64, i64 }, align 16 %a119 = alloca { ptr, i64, i64 }, align 16 - %a121 = 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 + %a122 = alloca { ptr, i64, i64 }, align 16 + %a123 = alloca { ptr, i64, i64 }, align 16 + %a126 = alloca { ptr, i64, i64 }, align 16 + %a129 = alloca { ptr, i64, i64 }, align 16 + %a130 = alloca { ptr, i64, i64 }, align 16 + %a132 = alloca { ptr, i64, i64 }, align 16 + %a138 = alloca %S.ast.Program, align 16 + %a139 = alloca %S.ast.Program, align 16 + %a145 = alloca i64, align 16 + %a153 = alloca { ptr, i64, i64 }, align 16 + %a159 = alloca i64, align 16 + %a162 = alloca i64, align 16 + %a167 = alloca { ptr, i64, i64 }, align 16 + %a168 = alloca { ptr, i64, i64 }, align 16 + %a180 = alloca { ptr, i64, i64 }, align 16 + %a181 = alloca { ptr, i64, i64 }, align 16 + %a193 = 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 @@ -8341,7 +8880,7 @@ logic.rhs87: %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) + call void @finch_panic(ptr @.str.70, i64 93, ptr @.str.71) unreachable ok90: %t11 = getelementptr inbounds %S.main.Loader, ptr %t9, i32 0, i32 6 @@ -8395,217 +8934,242 @@ then100: 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 } %t38, ptr %a42 + call void @finch_str_drop(ptr %a42) + %t43 = load { ptr, i64, i64 }, ptr %a39 + %t44 = load { ptr, i64, i64 }, ptr %a2 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) + store { ptr, i64, i64 } %t44, ptr %a47 + call void @finch_str_concat(ptr %a45, ptr %a46, ptr %a47) + store { ptr, i64, i64 } %t43, ptr %a48 + call void @finch_str_drop(ptr %a48) + %t49 = load { ptr, i64, i64 }, ptr %a45 + store { ptr, i64, i64 } %t49, ptr %a51 + store { ptr, i64, i64 } { ptr @.str.74, i64 1, i64 0 }, ptr %a52 + call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) + store { ptr, i64, i64 } %t49, ptr %a53 + call void @finch_str_drop(ptr %a53) + %t54 = load { ptr, i64, i64 }, ptr %a50 + %t55 = extractvalue { ptr, i64, i64 } %t54, 1 + %t56 = trunc i64 %t55 to i32 + %t57 = extractvalue { ptr, i64, i64 } %t54, 0 + %t58 = icmp eq ptr %t57, null + %t59 = select i1 %t58, ptr @.str.75, ptr %t57 + %t60 = call i32 (ptr, ...) @printf(ptr @.str.76, i32 %t56, ptr %t59) + store { ptr, i64, i64 } %t54, ptr %a61 + call void @finch_str_drop(ptr %a61) + %t62 = 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 + %t63 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } { ptr @.str.78, i64 19, 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 - %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) + store { ptr, i64, i64 } %t67, ptr %a69 + store { ptr, i64, i64 } { ptr @.str.79, i64 1, i64 0 }, ptr %a70 + call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70) + store { ptr, i64, i64 } %t67, ptr %a71 + call void @finch_str_drop(ptr %a71) + %t72 = load { ptr, i64, i64 }, ptr %a68 + %t73 = extractvalue { ptr, i64, i64 } %t72, 1 + %t74 = trunc i64 %t73 to i32 + %t75 = extractvalue { ptr, i64, i64 } %t72, 0 + %t76 = icmp eq ptr %t75, null + %t77 = select i1 %t76, ptr @.str.80, ptr %t75 + %t78 = call i32 (ptr, ...) @printf(ptr @.str.81, i32 %t74, ptr %t77) + store { ptr, i64, i64 } %t72, ptr %a79 + call void @finch_str_drop(ptr %a79) + %t80 = 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) + %t81 = trunc i64 1 to i32 + %t82 = call i32 @fflush(ptr null) + call void @exit(i32 %t81) 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 -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 + %t83 = load ptr, ptr %a1 + %t84 = load { ptr, i64, i64 }, ptr %a2 + %t85 = call { ptr, i64, i64 } @finch.main.textOfFile(ptr %t83, { ptr, i64, i64 } %t84) + store { ptr, i64, 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) + br i1 %t88, label %panic103, label %ok104 +panic103: + call void @finch_panic(ptr @.str.83, i64 102, ptr @.str.84) unreachable -ok106: +ok104: %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 - %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 %panic110, label %ok111 -panic110: - call void @finch_panic(ptr @.str.87, i64 106, ptr @.str.88) + %t91 = load i64, ptr %t90 + store i64 %t91, ptr %a92 + %t93 = load ptr, ptr %a1 + %t94 = icmp eq ptr %t93, null + br i1 %t94, label %panic105, label %ok106 +panic105: + call void @finch_panic(ptr @.str.85, i64 103, ptr @.str.86) unreachable -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 %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 %panic122, label %ok123 -panic122: - call void @finch_panic(ptr @.str.89, i64 108, ptr @.str.90) +ok106: + %t95 = getelementptr inbounds %S.main.Loader, ptr %t93, i32 0, i32 1 + %t96 = getelementptr inbounds { ptr, i64, i64 }, ptr %t95, i32 0, i32 1 + %t97 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t97, ptr %a98 + call void @finch_str_copy(ptr %a99, ptr %a98) + %t100 = load { ptr, i64, i64 }, ptr %a99 + %t101 = load i64, ptr %t96 + %t102 = add i64 %t101, 1 + call void @finch_arr_reserve(ptr %t95, i64 %t102, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t103 = load ptr, ptr %t95 + %t104 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i64 %t101 + store { ptr, i64, i64 } %t100, ptr %t104 + store i64 %t102, ptr %t96 + %t105 = load { ptr, i64, i64 }, ptr %a86 + %t106 = load { ptr, i64, i64 }, ptr %a2 + %t107 = call { ptr, i64, i64 } @finch.lexer.lex({ ptr, i64, i64 } %t105, { ptr, i64, i64 } %t106) + %t108 = load i64, ptr %a92 + %t109 = load { ptr, i64, i64 }, ptr %a2 + %t110 = call %S.ast.Program @finch.parser.parse({ ptr, i64, i64 } %t107, i64 %t108, { ptr, i64, i64 } %t109) + store { ptr, i64, i64 } %t107, ptr %a111 + call void @finch.drop.arr_S_lexer_Token(ptr %a111) + store %S.ast.Program %t110, ptr %a112 + %t113 = load { ptr, i64, i64 }, ptr %a3 + %t114 = getelementptr inbounds %S.ast.Program, ptr %a112, i32 0, i32 0 + store { ptr, i64, i64 } %t113, ptr %a115 + call void @finch_str_copy(ptr %a116, ptr %a115) + %t117 = load { ptr, i64, i64 }, ptr %a116 + %t118 = load { ptr, i64, i64 }, ptr %t114 + store { ptr, i64, i64 } %t117, ptr %t114 + store { ptr, i64, i64 } %t118, ptr %a119 + call void @finch_str_drop(ptr %a119) + %t120 = load { ptr, i64, i64 }, ptr %a2 + %t121 = getelementptr inbounds %S.ast.Program, ptr %a112, i32 0, i32 1 + store { ptr, i64, i64 } %t120, ptr %a122 + call void @finch_str_copy(ptr %a123, ptr %a122) + %t124 = load { ptr, i64, i64 }, ptr %a123 + %t125 = load { ptr, i64, i64 }, ptr %t121 + store { ptr, i64, i64 } %t124, ptr %t121 + store { ptr, i64, i64 } %t125, ptr %a126 + call void @finch_str_drop(ptr %a126) + %t127 = getelementptr inbounds %S.ast.Program, ptr %a112, i32 0, i32 2 + %t128 = load { ptr, i64, i64 }, ptr %t127 + store { ptr, i64, i64 } %t128, ptr %a129 + call void @finch.copy.arr_str(ptr %a130, ptr %a129) + %t131 = load { ptr, i64, i64 }, ptr %a130 + store { ptr, i64, i64 } %t131, ptr %a132 + %t133 = load ptr, ptr %a1 + %t134 = icmp eq ptr %t133, null + br i1 %t134, label %panic113, label %ok114 +panic113: + call void @finch_panic(ptr @.str.87, i64 108, ptr @.str.88) unreachable -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 %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) +ok114: + %t135 = getelementptr inbounds %S.main.Loader, ptr %t133, i32 0, i32 0 + %t136 = getelementptr inbounds { ptr, i64, i64 }, ptr %t135, i32 0, i32 1 + %t137 = load %S.ast.Program, ptr %a112 + store %S.ast.Program %t137, ptr %a138 + call void @finch.copy.S_ast_Program(ptr %a139, ptr %a138) + %t140 = load %S.ast.Program, ptr %a139 + %t141 = load i64, ptr %t136 + %t142 = add i64 %t141, 1 + call void @finch_arr_reserve(ptr %t135, i64 %t142, i64 ptrtoint (ptr getelementptr (%S.ast.Program, ptr null, i32 1) to i64)) + %t143 = load ptr, ptr %t135 + %t144 = getelementptr inbounds %S.ast.Program, ptr %t143, i64 %t141 + store %S.ast.Program %t140, ptr %t144 + store i64 %t142, ptr %t136 + store i64 0, ptr %a145 + br label %each.cond121 +each.cond121: + %t146 = getelementptr inbounds { ptr, i64, i64 }, ptr %a132, i32 0, i32 1 + %t147 = load i64, ptr %t146 + %t148 = load i64, ptr %a145 + %t149 = icmp slt i64 %t148, %t147 + br i1 %t149, label %each.body122, label %each.end124 +each.body122: + %t150 = load ptr, ptr %a132 + %t151 = getelementptr inbounds { ptr, i64, i64 }, ptr %t150, i64 %t148 + %t152 = load { ptr, i64, i64 }, ptr %t151 + store { ptr, i64, i64 } %t152, ptr %a153 + %t154 = load ptr, ptr %a1 + %t155 = icmp eq ptr %t154, null + br i1 %t155, label %panic125, label %ok126 +panic125: + call void @finch_panic(ptr @.str.89, i64 110, ptr @.str.90) 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: +ok126: + %t156 = getelementptr inbounds %S.main.Loader, ptr %t154, i32 0, i32 2 + %t157 = getelementptr inbounds { ptr, i64, i64 }, ptr %t156, i32 0, i32 1 + %t158 = load { ptr, i64, i64 }, ptr %a153 + store i64 -1, ptr %a159 + %t160 = load i64, ptr %t157 + %t161 = load ptr, ptr %t156 + store i64 0, ptr %a162 + br label %find.cond127 +find.cond127: + %t163 = load i64, ptr %a162 + %t164 = icmp slt i64 %t163, %t160 + br i1 %t164, label %find.body128, label %find.end131 +find.body128: + %t165 = getelementptr inbounds { ptr, i64, i64 }, ptr %t161, i64 %t163 + %t166 = load { ptr, i64, i64 }, ptr %t165 + store { ptr, i64, i64 } %t166, ptr %a167 + store { ptr, i64, i64 } %t158, ptr %a168 + %t169 = call i32 @finch_str_eq(ptr %a167, ptr %a168) + %t170 = icmp ne i32 %t169, 0 + br i1 %t170, label %find.hit129, label %find.next130 +find.hit129: + store i64 %t163, ptr %a159 + br label %find.end131 +find.next130: + %t171 = add i64 %t163, 1 + store i64 %t171, ptr %a162 + br label %find.cond127 +find.end131: + %t172 = load i64, ptr %a159 + %t173 = icmp sge i64 %t172, 0 + %t174 = xor i1 %t173, true + br i1 %t174, label %then132, label %endif134 +then132: + %t175 = load ptr, ptr %a1 + %t176 = icmp eq ptr %t175, null + br i1 %t176, label %panic135, label %ok136 +panic135: + call void @finch_panic(ptr @.str.91, i64 111, ptr @.str.92) + unreachable +ok136: + %t177 = getelementptr inbounds %S.main.Loader, ptr %t175, i32 0, i32 2 + %t178 = getelementptr inbounds { ptr, i64, i64 }, ptr %t177, i32 0, i32 1 + %t179 = load { ptr, i64, i64 }, ptr %a153 + store { ptr, i64, i64 } %t179, ptr %a180 + call void @finch_str_copy(ptr %a181, ptr %a180) + %t182 = load { ptr, i64, i64 }, ptr %a181 + %t183 = load i64, ptr %t178 + %t184 = add i64 %t183, 1 + call void @finch_arr_reserve(ptr %t177, i64 %t184, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t185 = load ptr, ptr %t177 + %t186 = getelementptr inbounds { ptr, i64, i64 }, ptr %t185, i64 %t183 + store { ptr, i64, i64 } %t182, ptr %t186 + store i64 %t184, ptr %t178 + %t187 = load ptr, ptr %a1 + %t188 = load ptr, ptr %a1 + %t189 = load { ptr, i64, i64 }, ptr %a2 + %t190 = load { ptr, i64, i64 }, ptr %a153 + %t191 = call { ptr, i64, i64 } @finch.main.findModule(ptr %t188, { ptr, i64, i64 } %t189, { ptr, i64, i64 } %t190) + %t192 = load { ptr, i64, i64 }, ptr %a153 + call void @finch.main.load(ptr %t187, { ptr, i64, i64 } %t191, { ptr, i64, i64 } %t192) + store { ptr, i64, i64 } %t191, ptr %a193 + call void @finch_str_drop(ptr %a193) + br label %endif134 +endif134: + br label %each.step123 +each.step123: + %t194 = load i64, ptr %a145 + %t195 = add i64 %t194, 1 + store i64 %t195, ptr %a145 + br label %each.cond121 +each.end124: + call void @finch.drop.arr_str(ptr %a132) + call void @finch.drop.S_ast_Program(ptr %a112) + call void @finch_str_drop(ptr %a86) ret void } @@ -8709,6 +9273,298 @@ entry: ret void } +define internal { ptr, i64, i64 } @finch.main.unpack() { +entry: + %a2 = 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 + %a7 = 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 + %a16 = 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 + %a20 = alloca { ptr, i64, i64 }, align 16 + %a21 = alloca { ptr, i64, i64 }, align 16 + %a23 = alloca { ptr, i64, 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 + %a31 = alloca { ptr, i64, i64 }, align 16 + %a35 = alloca { ptr, i64, i64 }, align 16 + %a38 = alloca i64, align 16 + %a42 = alloca { ptr, i64, i64 }, align 16 + %a43 = alloca { ptr, i64, i64 }, align 16 + %a44 = 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 + %a56 = alloca { ptr, i64, i64 }, align 16 + %a59 = alloca { ptr, i64, i64 }, align 16 + %a60 = alloca { ptr, i64, i64 }, align 16 + %a62 = alloca { ptr, i64, i64 }, align 16 + %a63 = alloca { ptr, i64, i64 }, align 16 + %a64 = alloca { ptr, i64, i64 }, align 16 + %a73 = alloca { ptr, i64, i64 }, align 16 + %a74 = alloca { ptr, i64, i64 }, align 16 + %a75 = alloca { ptr, i64, i64 }, align 16 + %a76 = 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 + %a93 = alloca { ptr, i64, i64 }, align 16 + %a94 = alloca { ptr, i64, i64 }, align 16 + %a95 = 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 + %t1 = call { ptr, i64, i64 } @finch.embedded.names() + store { ptr, i64, i64 } %t1, ptr %a2 + %t3 = call { ptr, i64, i64 } @finch.host.cacheDir() + store { ptr, i64, i64 } %t3, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.145, i64 7, i64 0 }, ptr %a6 + call void @finch_str_concat(ptr %a4, ptr %a5, ptr %a6) + store { ptr, i64, i64 } %t3, ptr %a7 + call void @finch_str_drop(ptr %a7) + %t8 = load { ptr, i64, i64 }, ptr %a4 + %t9 = call { ptr, i64, i64 } @finch.embedded.texts() + store { ptr, i64, i64 } %t9, ptr %a10 + %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %a10, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.146, i64 1, i64 0 }, ptr %a12 + call void @finch_str_join(ptr %a13, ptr %a10, ptr %a12) + %t14 = load { ptr, i64, i64 }, ptr %a13 + call void @finch.drop.arr_str(ptr %a10) + %t15 = call { ptr, i64, i64 } @finch.linker.fingerprint({ ptr, i64, i64 } %t14) + store { ptr, i64, i64 } %t14, ptr %a16 + call void @finch_str_drop(ptr %a16) + store { ptr, i64, i64 } %t8, ptr %a18 + store { ptr, i64, i64 } %t15, ptr %a19 + call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) + store { ptr, i64, i64 } %t8, ptr %a20 + call void @finch_str_drop(ptr %a20) + store { ptr, i64, i64 } %t15, ptr %a21 + call void @finch_str_drop(ptr %a21) + %t22 = load { ptr, i64, i64 }, ptr %a17 + store { ptr, i64, i64 } %t22, ptr %a23 + %t24 = load { ptr, i64, i64 }, ptr %a23 + store { ptr, i64, i64 } %t24, ptr %a26 + store { ptr, i64, i64 } { ptr @.str.147, i64 5, i64 0 }, 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 %a29 + %t30 = call i32 @finch_file_exists(ptr %a29) + store { ptr, i64, i64 } %t28, ptr %a31 + call void @finch_str_drop(ptr %a31) + %t32 = icmp ne i32 %t30, 0 + br i1 %t32, label %then146, label %endif148 +then146: + %t33 = load { ptr, i64, i64 }, ptr %a23 + call void @finch.drop.arr_str(ptr %a2) + ret { ptr, i64, i64 } %t33 +endif148: + %t34 = call { ptr, i64, i64 } @finch.embedded.texts() + store { ptr, i64, i64 } %t34, ptr %a35 + %t36 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t37 = load i64, ptr %t36 + store i64 0, ptr %a38 + br label %for.cond149 +for.cond149: + %t39 = load i64, ptr %a38 + %t40 = icmp slt i64 %t39, %t37 + br i1 %t40, label %for.body150, label %for.end152 +for.body150: + %t41 = load { ptr, i64, i64 }, ptr %a23 + store { ptr, i64, i64 } %t41, ptr %a43 + store { ptr, i64, i64 } { ptr @.str.148, 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 = load i64, ptr %a38 + %t47 = load { ptr, i64, i64 }, ptr %a2 + %t48 = extractvalue { ptr, i64, i64 } %t47, 1 + %t49 = icmp uge i64 %t46, %t48 + br i1 %t49, label %range153, label %inrange154 +range153: + call void @finch_panic_index(ptr @.str.149, i64 144, i64 %t46, i64 %t48) + unreachable +inrange154: + %t50 = extractvalue { ptr, i64, i64 } %t47, 0 + %t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %t50, i64 %t46 + %t52 = load { ptr, i64, i64 }, ptr %t51 + store { ptr, i64, i64 } %t45, ptr %a54 + store { ptr, i64, i64 } %t52, ptr %a55 + call void @finch_str_concat(ptr %a53, ptr %a54, ptr %a55) + store { ptr, i64, i64 } %t45, ptr %a56 + call void @finch_str_drop(ptr %a56) + %t57 = load { ptr, i64, i64 }, ptr %a53 + %t58 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t57) + store { ptr, i64, i64 } %t57, ptr %a59 + call void @finch_str_drop(ptr %a59) + call void @finch.host.makeDirs({ ptr, i64, i64 } %t58) + store { ptr, i64, i64 } %t58, ptr %a60 + call void @finch_str_drop(ptr %a60) + %t61 = load { ptr, i64, i64 }, ptr %a23 + store { ptr, i64, i64 } %t61, ptr %a63 + store { ptr, i64, i64 } { ptr @.str.150, i64 1, i64 0 }, ptr %a64 + call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) + %t65 = load { ptr, i64, i64 }, ptr %a62 + %t66 = load i64, ptr %a38 + %t67 = load { ptr, i64, i64 }, ptr %a2 + %t68 = extractvalue { ptr, i64, i64 } %t67, 1 + %t69 = icmp uge i64 %t66, %t68 + br i1 %t69, label %range155, label %inrange156 +range155: + call void @finch_panic_index(ptr @.str.151, i64 145, i64 %t66, i64 %t68) + unreachable +inrange156: + %t70 = extractvalue { ptr, i64, i64 } %t67, 0 + %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %t70, i64 %t66 + %t72 = load { ptr, i64, i64 }, ptr %t71 + store { ptr, i64, i64 } %t65, ptr %a74 + store { ptr, i64, i64 } %t72, ptr %a75 + call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) + store { ptr, i64, i64 } %t65, ptr %a76 + call void @finch_str_drop(ptr %a76) + %t77 = load { ptr, i64, i64 }, ptr %a73 + %t78 = load i64, ptr %a38 + %t79 = load { ptr, i64, i64 }, ptr %a35 + %t80 = extractvalue { ptr, i64, i64 } %t79, 1 + %t81 = icmp uge i64 %t78, %t80 + br i1 %t81, label %range157, label %inrange158 +range157: + call void @finch_panic_index(ptr @.str.152, i64 145, i64 %t78, i64 %t80) + unreachable +inrange158: + %t82 = extractvalue { ptr, i64, i64 } %t79, 0 + %t83 = getelementptr inbounds { ptr, i64, i64 }, ptr %t82, i64 %t78 + %t84 = load { ptr, i64, i64 }, ptr %t83 + store { ptr, i64, i64 } %t77, ptr %a85 + store { ptr, i64, i64 } %t84, ptr %a86 + %t87 = call i32 @finch_write_file(ptr %a85, ptr %a86) + store { ptr, i64, i64 } %t77, ptr %a88 + call void @finch_str_drop(ptr %a88) + %t89 = icmp ne i32 %t87, 0 + br label %for.step151 +for.step151: + %t90 = load i64, ptr %a38 + %t91 = add i64 %t90, 1 + store i64 %t91, ptr %a38 + br label %for.cond149 +for.end152: + %t92 = load { ptr, i64, i64 }, ptr %a23 + store { ptr, i64, i64 } %t92, ptr %a94 + store { ptr, i64, i64 } { ptr @.str.153, i64 5, i64 0 }, 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 %a97 + store { ptr, i64, i64 } { ptr @.str.154, i64 0, i64 0 }, ptr %a98 + %t99 = call i32 @finch_write_file(ptr %a97, ptr %a98) + store { ptr, i64, i64 } %t96, ptr %a100 + call void @finch_str_drop(ptr %a100) + %t101 = icmp ne i32 %t99, 0 + %t102 = load { ptr, i64, i64 }, ptr %a23 + call void @finch.drop.arr_str(ptr %a35) + call void @finch.drop.arr_str(ptr %a2) + ret { ptr, i64, i64 } %t102 +} + +define internal void @finch.drop.S_cimport_Header(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.cimport.Header, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.cimport.Header, ptr %a, i32 0, i32 1 + call void @finch_str_drop(ptr %t2) + ret void +} + +define internal void @finch.drop.arr_S_cimport_Header(ptr %a) { +entry: + %a4 = alloca i64, align 16 + %t1 = load ptr, ptr %a + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 + %t3 = load i64, ptr %t2 + store i64 0, ptr %a4 + br label %n.cond399 +n.cond399: + %t5 = load i64, ptr %a4 + %t6 = icmp slt i64 %t5, %t3 + br i1 %t6, label %n.body400, label %n.end401 +n.body400: + %t7 = getelementptr inbounds %S.cimport.Header, ptr %t1, i64 %t5 + call void @finch.drop.S_cimport_Header(ptr %t7) + %t8 = load i64, ptr %a4 + %t9 = add i64 %t8, 1 + store i64 %t9, ptr %a4 + br label %n.cond399 +n.end401: + call void @finch_arr_free(ptr %a) + ret void +} + +define internal void @finch.drop.arr_S_ast_Program(ptr %a) { +entry: + %a4 = alloca i64, align 16 + %t1 = load ptr, ptr %a + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 + %t3 = load i64, ptr %t2 + store i64 0, ptr %a4 + br label %n.cond402 +n.cond402: + %t5 = load i64, ptr %a4 + %t6 = icmp slt i64 %t5, %t3 + br i1 %t6, label %n.body403, label %n.end404 +n.body403: + %t7 = getelementptr inbounds %S.ast.Program, ptr %t1, i64 %t5 + call void @finch.drop.S_ast_Program(ptr %t7) + %t8 = load i64, ptr %a4 + %t9 = add i64 %t8, 1 + store i64 %t9, ptr %a4 + br label %n.cond402 +n.end404: + call void @finch_arr_free(ptr %a) + ret void +} + +define internal void @finch.drop.S_main_Loader(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.main.Loader, ptr %a, i32 0, i32 0 + call void @finch.drop.arr_S_ast_Program(ptr %t1) + %t2 = getelementptr inbounds %S.main.Loader, ptr %a, i32 0, i32 1 + call void @finch.drop.arr_str(ptr %t2) + %t3 = getelementptr inbounds %S.main.Loader, ptr %a, i32 0, i32 2 + call void @finch.drop.arr_str(ptr %t3) + %t4 = getelementptr inbounds %S.main.Loader, ptr %a, i32 0, i32 3 + call void @finch_str_drop(ptr %t4) + %t5 = getelementptr inbounds %S.main.Loader, ptr %a, i32 0, i32 4 + call void @finch_str_drop(ptr %t5) + %t6 = getelementptr inbounds %S.main.Loader, ptr %a, i32 0, i32 5 + call void @finch.drop.arr_str(ptr %t6) + %t7 = getelementptr inbounds %S.main.Loader, ptr %a, i32 0, i32 6 + call void @finch.drop.arr_str(ptr %t7) + %t8 = getelementptr inbounds %S.main.Loader, ptr %a, i32 0, i32 7 + call void @finch.drop.arr_str(ptr %t8) + ret void +} + +define internal void @finch.drop.S_platform_Target(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.platform.Target, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.platform.Target, ptr %a, i32 0, i32 6 + call void @finch_str_drop(ptr %t2) + %t3 = getelementptr inbounds %S.platform.Target, ptr %a, i32 0, i32 7 + call void @finch_str_drop(ptr %t3) + %t4 = getelementptr inbounds %S.platform.Target, ptr %a, i32 0, i32 8 + call void @finch_str_drop(ptr %t4) + ret void +} + define internal void @finch.copy.S_platform_Target(ptr %dst, ptr %src) { entry: @@ -8729,6 +9585,260 @@ entry: ret void } +define internal void @finch.drop.S_gen_Options(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.gen.Options, ptr %a, i32 0, i32 3 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.gen.Options, ptr %a, i32 0, i32 4 + call void @finch.drop.S_platform_Target(ptr %t2) + ret void +} + +define internal void @finch.drop.S_cimport_CFunc(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.cimport.CFunc, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.cimport.CFunc, ptr %a, i32 0, i32 1 + call void @finch_str_drop(ptr %t2) + %t3 = getelementptr inbounds %S.cimport.CFunc, ptr %a, i32 0, i32 2 + call void @finch.drop.S_ast_Type(ptr %t3) + %t4 = getelementptr inbounds %S.cimport.CFunc, ptr %a, i32 0, i32 3 + call void @finch.drop.arr_S_ast_Type(ptr %t4) + %t5 = getelementptr inbounds %S.cimport.CFunc, ptr %a, i32 0, i32 5 + call void @finch_str_drop(ptr %t5) + ret void +} + +define internal void @finch.drop.map_str_S_cimport_CFunc(ptr %a) { +entry: + %a3 = alloca i64, align 16 + %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 2 + %t2 = load i64, ptr %t1 + store i64 0, ptr %a3 + br label %n.cond412 +n.cond412: + %t4 = load i64, ptr %a3 + %t5 = icmp slt i64 %t4, %t2 + br i1 %t5, label %n.body413, label %n.end414 +n.body413: + %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 0 + %t7 = load ptr, ptr %t6 + %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t7, i64 %t4 + %t9 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t8, i32 0, i32 0 + %t10 = load i64, ptr %t9 + %t11 = icmp ne i64 %t10, 0 + br i1 %t11, label %entry.live415, label %entry.next416 +entry.live415: + %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t8, i32 0, i32 1 + call void @finch_str_drop(ptr %t12) + %t13 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t8, i32 0, i32 2 + call void @finch.drop.S_cimport_CFunc(ptr %t13) + br label %entry.next416 +entry.next416: + %t14 = load i64, ptr %a3 + %t15 = add i64 %t14, 1 + store i64 %t15, ptr %a3 + br label %n.cond412 +n.end414: + call void @finch_map_free(ptr %a) + ret void +} + +define internal void @finch.drop.S_cimport_CConst(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.cimport.CConst, ptr %a, i32 0, i32 3 + call void @finch_str_drop(ptr %t1) + ret void +} + +define internal void @finch.drop.map_str_S_cimport_CConst(ptr %a) { +entry: + %a3 = alloca i64, align 16 + %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 2 + %t2 = load i64, ptr %t1 + store i64 0, ptr %a3 + br label %n.cond417 +n.cond417: + %t4 = load i64, ptr %a3 + %t5 = icmp slt i64 %t4, %t2 + br i1 %t5, label %n.body418, label %n.end419 +n.body418: + %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 0 + %t7 = load ptr, ptr %t6 + %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t7, i64 %t4 + %t9 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t8, i32 0, i32 0 + %t10 = load i64, ptr %t9 + %t11 = icmp ne i64 %t10, 0 + br i1 %t11, label %entry.live420, label %entry.next421 +entry.live420: + %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t8, i32 0, i32 1 + call void @finch_str_drop(ptr %t12) + %t13 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t8, i32 0, i32 2 + call void @finch.drop.S_cimport_CConst(ptr %t13) + br label %entry.next421 +entry.next421: + %t14 = load i64, ptr %a3 + %t15 = add i64 %t14, 1 + store i64 %t15, ptr %a3 + br label %n.cond417 +n.end419: + call void @finch_map_free(ptr %a) + ret void +} + +define internal void @finch.drop.map_str_S_ast_Type(ptr %a) { +entry: + %a3 = alloca i64, align 16 + %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 2 + %t2 = load i64, ptr %t1 + store i64 0, ptr %a3 + br label %n.cond422 +n.cond422: + %t4 = load i64, ptr %a3 + %t5 = icmp slt i64 %t4, %t2 + br i1 %t5, label %n.body423, label %n.end424 +n.body423: + %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 0 + %t7 = load ptr, ptr %t6 + %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t7, i64 %t4 + %t9 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t8, i32 0, i32 0 + %t10 = load i64, ptr %t9 + %t11 = icmp ne i64 %t10, 0 + br i1 %t11, label %entry.live425, label %entry.next426 +entry.live425: + %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t8, i32 0, i32 1 + call void @finch_str_drop(ptr %t12) + %t13 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t8, i32 0, i32 2 + call void @finch.drop.S_ast_Type(ptr %t13) + br label %entry.next426 +entry.next426: + %t14 = load i64, ptr %a3 + %t15 = add i64 %t14, 1 + store i64 %t15, ptr %a3 + br label %n.cond422 +n.end424: + call void @finch_map_free(ptr %a) + ret void +} + +define internal void @finch.drop.S_cimport_CField(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.cimport.CField, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.cimport.CField, ptr %a, i32 0, i32 1 + call void @finch.drop.S_ast_Type(ptr %t2) + ret void +} + +define internal void @finch.drop.arr_S_cimport_CField(ptr %a) { +entry: + %a4 = alloca i64, align 16 + %t1 = load ptr, ptr %a + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 + %t3 = load i64, ptr %t2 + store i64 0, ptr %a4 + br label %n.cond432 +n.cond432: + %t5 = load i64, ptr %a4 + %t6 = icmp slt i64 %t5, %t3 + br i1 %t6, label %n.body433, label %n.end434 +n.body433: + %t7 = getelementptr inbounds %S.cimport.CField, ptr %t1, i64 %t5 + call void @finch.drop.S_cimport_CField(ptr %t7) + %t8 = load i64, ptr %a4 + %t9 = add i64 %t8, 1 + store i64 %t9, ptr %a4 + br label %n.cond432 +n.end434: + call void @finch_arr_free(ptr %a) + ret void +} + +define internal void @finch.drop.S_cimport_CStruct(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.cimport.CStruct, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.cimport.CStruct, ptr %a, i32 0, i32 1 + call void @finch.drop.arr_S_cimport_CField(ptr %t2) + %t3 = getelementptr inbounds %S.cimport.CStruct, ptr %a, i32 0, i32 4 + call void @finch_str_drop(ptr %t3) + ret void +} + +define internal void @finch.drop.map_str_S_cimport_CStruct(ptr %a) { +entry: + %a3 = alloca i64, align 16 + %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 2 + %t2 = load i64, ptr %t1 + store i64 0, ptr %a3 + br label %n.cond427 +n.cond427: + %t4 = load i64, ptr %a3 + %t5 = icmp slt i64 %t4, %t2 + br i1 %t5, label %n.body428, label %n.end429 +n.body428: + %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 0 + %t7 = load ptr, ptr %t6 + %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t7, i64 %t4 + %t9 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t8, i32 0, i32 0 + %t10 = load i64, ptr %t9 + %t11 = icmp ne i64 %t10, 0 + br i1 %t11, label %entry.live430, label %entry.next431 +entry.live430: + %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t8, i32 0, i32 1 + call void @finch_str_drop(ptr %t12) + %t13 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t8, i32 0, i32 2 + call void @finch.drop.S_cimport_CStruct(ptr %t13) + br label %entry.next431 +entry.next431: + %t14 = load i64, ptr %a3 + %t15 = add i64 %t14, 1 + store i64 %t15, ptr %a3 + br label %n.cond427 +n.end429: + call void @finch_map_free(ptr %a) + ret void +} + +define internal void @finch.drop.S_cimport_CImports(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.cimport.CImports, ptr %a, i32 0, i32 0 + call void @finch.drop.map_str_S_cimport_CFunc(ptr %t1) + %t2 = getelementptr inbounds %S.cimport.CImports, ptr %a, i32 0, i32 1 + call void @finch.drop.map_str_S_cimport_CConst(ptr %t2) + %t3 = getelementptr inbounds %S.cimport.CImports, ptr %a, i32 0, i32 2 + call void @finch.drop.map_str_S_ast_Type(ptr %t3) + %t4 = getelementptr inbounds %S.cimport.CImports, ptr %a, i32 0, i32 3 + call void @finch.drop.map_str_S_cimport_CStruct(ptr %t4) + %t5 = getelementptr inbounds %S.cimport.CImports, ptr %a, i32 0, i32 4 + call void @finch.drop.arr_str(ptr %t5) + ret void +} + +define internal void @finch.drop.S_linker_Build(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.linker.Build, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.linker.Build, ptr %a, i32 0, i32 1 + call void @finch_str_drop(ptr %t2) + %t3 = getelementptr inbounds %S.linker.Build, ptr %a, i32 0, i32 2 + call void @finch_str_drop(ptr %t3) + %t4 = getelementptr inbounds %S.linker.Build, ptr %a, i32 0, i32 3 + call void @finch_str_drop(ptr %t4) + %t5 = getelementptr inbounds %S.linker.Build, ptr %a, i32 0, i32 4 + call void @finch_str_drop(ptr %t5) + %t6 = getelementptr inbounds %S.linker.Build, ptr %a, i32 0, i32 6 + call void @finch.drop.arr_str(ptr %t6) + ret void +} + define internal i64 @finch.main.main({ ptr, i64, i64 } %p0) { entry: %a1 = alloca { ptr, i64, i64 }, align 16 @@ -8777,343 +9887,406 @@ entry: %a161 = 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 - %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 - %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 - %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 - %a292 = 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 + %a177 = alloca { ptr, i64, i64 }, align 16 + %a181 = alloca { ptr, i64, i64 }, align 16 + %a182 = alloca { ptr, i64, i64 }, align 16 + %a186 = alloca { ptr, i64, i64 }, align 16 + %a187 = alloca { ptr, i64, i64 }, align 16 + %a192 = alloca { ptr, i64, i64 }, align 16 + %a193 = alloca { ptr, i64, i64 }, align 16 + %a197 = alloca { ptr, i64, i64 }, align 16 + %a199 = alloca { ptr, i64, i64 }, align 16 + %a200 = alloca { ptr, i64, i64 }, align 16 + %a218 = alloca { ptr, i64, i64 }, align 16 + %a219 = 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 + %a239 = alloca { ptr, i64, i64 }, align 16 + %a240 = alloca { ptr, i64, i64 }, align 16 + %a249 = alloca { ptr, i64, i64 }, align 16 + %a250 = alloca { ptr, i64, i64 }, align 16 + %a268 = alloca { ptr, i64, i64 }, align 16 + %a269 = alloca { ptr, i64, i64 }, align 16 + %a278 = alloca { ptr, i64, i64 }, align 16 + %a279 = alloca { ptr, i64, i64 }, align 16 + %a296 = 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 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a320 = alloca { ptr, i64, i64 }, align 16 - %a329 = alloca { ptr, i64, i64 }, align 16 - %a330 = alloca { ptr, i64, i64 }, align 16 + %a298 = alloca { ptr, i64, i64 }, align 16 + %a299 = alloca { ptr, i64, i64 }, align 16 + %a301 = alloca { ptr, i64, i64 }, align 16 + %a309 = alloca { ptr, i64, i64 }, align 16 + %a310 = alloca { ptr, i64, i64 }, align 16 + %a323 = alloca { ptr, i64, i64 }, align 16 + %a324 = 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 - %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 + %a338 = alloca { ptr, i64, i64 }, align 16 + %a339 = alloca { ptr, i64, i64 }, align 16 + %a356 = alloca { ptr, i64, i64 }, align 16 + %a357 = alloca { ptr, i64, i64 }, align 16 + %a360 = alloca { ptr, i64, i64 }, align 16 %a364 = alloca { ptr, i64, i64 }, align 16 %a365 = alloca { ptr, i64, i64 }, align 16 - %a375 = alloca %S.platform.Target, align 16 - %a377 = alloca { ptr, i64, i64 }, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 + %a370 = alloca { ptr, i64, i64 }, align 16 + %a371 = alloca { ptr, i64, i64 }, align 16 + %a381 = alloca %S.platform.Target, align 16 %a383 = alloca { ptr, i64, i64 }, align 16 %a384 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 + %a388 = 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 + %a394 = alloca { ptr, i64, i64 }, align 16 + %a396 = alloca { ptr, i64, i64 }, align 16 + %a397 = alloca { ptr, i64, i64 }, align 16 + %a398 = alloca { ptr, i64, i64 }, align 16 + %a399 = 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 + %a403 = alloca { ptr, i64, i64 }, align 16 + %a404 = alloca { ptr, i64, i64 }, align 16 + %a405 = 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 %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 + %a419 = 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 - %a429 = alloca { ptr, i64, i64 }, align 16 - %a430 = alloca { ptr, i64, i64 }, align 16 + %a423 = 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 + %a432 = alloca { ptr, i64, i64 }, align 16 + %a433 = 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 + %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 + %a447 = alloca { ptr, i64, i64 }, align 16 %a450 = alloca { ptr, i64, i64 }, align 16 + %a452 = alloca { ptr, i64, i64 }, align 16 + %a453 = alloca { ptr, i64, i64 }, align 16 + %a454 = alloca { ptr, i64, i64 }, align 16 + %a456 = 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 - %a460 = alloca { ptr, i64, 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 + %a462 = alloca { ptr, i64, i64 }, align 16 + %a468 = alloca { ptr, i64, i64 }, align 16 + %a469 = alloca { ptr, i64, i64 }, align 16 + %a470 = alloca { ptr, i64, i64 }, align 16 + %a473 = alloca { ptr, i64, i64 }, align 16 + %a474 = alloca %S.main.Loader, align 16 + %a477 = alloca { ptr, i64, i64 }, align 16 + %a482 = 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 + %a495 = 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 + %a498 = alloca { ptr, i64, i64 }, align 16 + %a507 = 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 + %a510 = alloca { ptr, i64, i64 }, align 16 %a519 = alloca { ptr, i64, i64 }, align 16 %a520 = alloca { ptr, i64, i64 }, align 16 + %a521 = 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 - %a538 = alloca { ptr, i64, i64 }, align 16 - %a539 = alloca { ptr, i64, i64 }, align 16 + %a533 = alloca { ptr, i64, i64 }, align 16 + %a534 = alloca i64, align 16 + %a542 = alloca { ptr, i64, i64 }, align 16 %a548 = alloca { ptr, i64, i64 }, align 16 %a549 = alloca { ptr, i64, i64 }, align 16 - %a551 = alloca { ptr, i64, i64 }, align 16 + %a550 = 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 + %a560 = alloca { ptr, i64, i64 }, align 16 + %a563 = alloca { ptr, i64, i64 }, align 16 + %a571 = alloca { ptr, i64, i64 }, align 16 + %a572 = alloca { ptr, i64, i64 }, 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 + %a574 = alloca { ptr, i64, i64 }, align 16 + %a578 = alloca { ptr, i64, i64 }, align 16 + %a581 = alloca { ptr, i64, i64 }, align 16 + %a582 = alloca { ptr, i64, i64 }, align 16 %a585 = alloca { ptr, i64, i64 }, align 16 - %a594 = 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 - %a625 = alloca { ptr, i64, i64 }, align 16 + %a588 = alloca { ptr, i64, i64 }, align 16 + %a589 = alloca { ptr, i64, i64 }, align 16 + %a592 = alloca { ptr, i64, i64 }, align 16 + %a597 = 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 + %a606 = alloca { ptr, i64, i64 }, align 16 + %a607 = alloca i64, align 16 + %a615 = alloca { ptr, i64, i64 }, align 16 + %a622 = alloca { ptr, i64, i64 }, align 16 + %a623 = alloca { ptr, i64, i64 }, align 16 + %a632 = alloca { ptr, i64, i64 }, align 16 + %a633 = alloca { ptr, i64, i64 }, align 16 + %a635 = alloca { ptr, i64, i64 }, align 16 + %a636 = alloca { ptr, i64, i64 }, align 16 + %a638 = 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 + %a643 = alloca { ptr, i64, i64 }, align 16 + %a645 = alloca i64, align 16 + %a653 = alloca %S.ast.Program, align 16 %a657 = alloca { ptr, i64, i64 }, align 16 - %a658 = alloca { ptr, i64, i64 }, align 16 + %a660 = alloca i64, align 16 + %a663 = alloca i64, align 16 + %a668 = 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 - %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 - %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 + %a678 = alloca { ptr, i64, i64 }, align 16 + %a679 = alloca { ptr, i64, i64 }, align 16 + %a688 = alloca i64, align 16 + %a700 = alloca i64, align 16 + %a703 = alloca i64, align 16 + %a708 = alloca { ptr, i64, i64 }, align 16 + %a709 = 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 - %a737 = alloca { ptr, i64, i64 }, align 16 + %a741 = 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 - %a766 = alloca %S.cimport.CImports, align 16 + %a753 = alloca { ptr, i64, i64 }, align 16 + %a754 = alloca { ptr, i64, i64 }, align 16 + %a764 = alloca 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 - %a786 = 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 + %a787 = alloca { ptr, i64, i64 }, align 16 %a788 = 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 + %a795 = alloca { ptr, i64, i64 }, align 16 + %a796 = alloca { ptr, i64, i64 }, align 16 + %a797 = 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 + %a802 = alloca { ptr, i64, i64 }, align 16 + %a803 = alloca { ptr, i64, i64 }, align 16 + %a811 = alloca { ptr, i64, i64 }, align 16 + %a812 = alloca { ptr, i64, i64 }, align 16 %a822 = 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 - %a856 = alloca { ptr, i64, i64 }, align 16 - %a859 = alloca { ptr, i64, i64 }, align 16 + %a828 = alloca { ptr, i64, i64 }, align 16 + %a831 = alloca { ptr, i64, i64 }, align 16 + %a844 = alloca { ptr, i64, i64 }, align 16 + %a853 = alloca %S.cimport.CImports, align 16 + %a862 = alloca { ptr, i64, i64 }, align 16 %a863 = alloca { ptr, i64, i64 }, align 16 - %a868 = 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 + %a872 = alloca %S.platform.Target, align 16 + %a873 = alloca %S.platform.Target, align 16 + %a877 = alloca %S.gen.Options, align 16 + %a878 = alloca { ptr, i64, i64 }, align 16 + %a880 = alloca { ptr, i64, i64 }, align 16 + %a881 = 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 + %a886 = alloca { ptr, i64, i64 }, align 16 + %a902 = 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 + %a905 = alloca { ptr, i64, i64 }, align 16 + %a907 = 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 %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 + %a926 = alloca { ptr, i64, 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 + %a938 = alloca { ptr, i64, i64 }, align 16 + %a939 = alloca { ptr, i64, i64 }, align 16 + %a940 = alloca { ptr, i64, i64 }, align 16 + %a943 = alloca { ptr, i64, i64 }, align 16 + %a945 = 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 + %a958 = alloca { ptr, i64, i64 }, align 16 + %a959 = alloca { ptr, i64, i64 }, align 16 + %a962 = 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 + %a980 = alloca { ptr, i64, i64 }, align 16 + %a981 = alloca { ptr, i64, i64 }, align 16 + %a982 = alloca { ptr, i64, i64 }, align 16 + %a983 = alloca { ptr, i64, i64 }, align 16 + %a986 = alloca { ptr, i64, i64 }, align 16 + %a987 = alloca { ptr, i64, i64 }, align 16 + %a990 = alloca { ptr, i64, i64 }, align 16 + %a993 = alloca { ptr, i64, i64 }, align 16 + %a994 = alloca { ptr, i64, i64 }, align 16 + %a995 = alloca { ptr, i64, i64 }, align 16 + %a998 = alloca { ptr, i64, i64 }, align 16 + %a1000 = alloca { ptr, i64, i64 }, align 16 + %a1001 = alloca { ptr, i64, i64 }, align 16 + %a1005 = alloca { ptr, i64, i64 }, align 16 + %a1006 = alloca { ptr, i64, i64 }, align 16 + %a1010 = alloca { ptr, i64, i64 }, align 16 + %a1011 = alloca { ptr, i64, i64 }, align 16 + %a1015 = alloca { ptr, i64, i64 }, align 16 + %a1016 = alloca { ptr, i64, i64 }, align 16 + %a1020 = alloca { ptr, i64, i64 }, align 16 + %a1021 = alloca { ptr, i64, i64 }, align 16 + %a1027 = alloca { ptr, i64, i64 }, align 16 + %a1028 = alloca { ptr, i64, i64 }, align 16 + %a1034 = alloca %S.linker.Build, align 16 + %a1037 = alloca { ptr, i64, i64 }, align 16 + %a1038 = alloca { ptr, i64, i64 }, align 16 + %a1041 = alloca { ptr, i64, i64 }, align 16 + %a1042 = alloca i64, align 16 + %a1050 = alloca { ptr, i64, i64 }, align 16 + %a1064 = 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 + %a1072 = alloca { ptr, i64, i64 }, align 16 + %a1075 = alloca { ptr, i64, i64 }, align 16 + %a1076 = alloca { ptr, i64, i64 }, align 16 + %a1078 = alloca { ptr, i64, i64 }, align 16 + %a1079 = alloca { ptr, i64, i64 }, align 16 + %a1080 = alloca { ptr, i64, i64 }, align 16 + %a1081 = alloca { ptr, i64, i64 }, align 16 + %a1082 = alloca { ptr, i64, i64 }, align 16 + %a1085 = alloca { ptr, i64, i64 }, align 16 + %a1086 = alloca 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.from134 -logic.from134: - br i1 %t4, label %logic.rhs135, label %logic.end136 -logic.rhs135: + br label %logic.from159 +logic.from159: + br i1 %t4, label %logic.rhs160, label %logic.end161 +logic.rhs160: %t5 = load { ptr, i64, i64 }, ptr %a1 %t6 = extractvalue { ptr, i64, i64 } %t5, 1 %t7 = icmp uge i64 1, %t6 - br i1 %t7, label %range137, label %inrange138 -range137: - call void @finch_panic_index(ptr @.str.145, i64 133, i64 1, i64 %t6) + br i1 %t7, label %range162, label %inrange163 +range162: + call void @finch_panic_index(ptr @.str.155, i64 152, i64 1, i64 %t6) unreachable -inrange138: +inrange163: %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.146, i64 7, i64 0 }, ptr %a12 + store { ptr, i64, i64 } { ptr @.str.156, 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.from139 -logic.from139: - br i1 %t14, label %logic.end141, label %logic.rhs140 -logic.rhs140: + br label %logic.from164 +logic.from164: + br i1 %t14, label %logic.end166, label %logic.rhs165 +logic.rhs165: %t15 = load { ptr, i64, i64 }, ptr %a1 %t16 = extractvalue { ptr, i64, i64 } %t15, 1 %t17 = icmp uge i64 1, %t16 - br i1 %t17, label %range142, label %inrange143 -range142: - call void @finch_panic_index(ptr @.str.147, i64 133, i64 1, i64 %t16) + br i1 %t17, label %range167, label %inrange168 +range167: + call void @finch_panic_index(ptr @.str.157, i64 152, i64 1, i64 %t16) unreachable -inrange143: +inrange168: %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.148, i64 9, i64 0 }, ptr %a22 + store { ptr, i64, i64 } { ptr @.str.158, 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.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 + br label %logic.rend169 +logic.rend169: + br label %logic.end166 +logic.end166: + %t25 = phi i1 [ true, %logic.from164 ], [ %t24, %logic.rend169 ] + br label %logic.rend170 +logic.rend170: + br label %logic.end161 +logic.end161: + %t26 = phi i1 [ false, %logic.from159 ], [ %t25, %logic.rend170 ] + br i1 %t26, label %then171, label %endif173 +then171: + %t27 = extractvalue { ptr, i64, i64 } { ptr @.str.159, i64 46, i64 0 }, 1 %t28 = trunc i64 %t27 to i32 - %t29 = extractvalue { ptr, i64, i64 } { ptr @.str.149, i64 46, i64 0 }, 0 + %t29 = extractvalue { ptr, i64, i64 } { ptr @.str.159, i64 46, i64 0 }, 0 %t30 = icmp eq ptr %t29, null - %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) + %t31 = select i1 %t30, ptr @.str.160, ptr %t29 + %t32 = call i32 (ptr, ...) @printf(ptr @.str.161, i32 %t28, ptr %t31) + %t33 = call i32 (ptr, ...) @printf(ptr @.str.162) ret i64 0 -endif148: +endif173: %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 %t35 = load i64, ptr %t34 %t36 = icmp eq i64 %t35, 2 - br label %logic.from149 -logic.from149: - br i1 %t36, label %logic.rhs150, label %logic.end151 -logic.rhs150: + br label %logic.from174 +logic.from174: + br i1 %t36, label %logic.rhs175, label %logic.end176 +logic.rhs175: %t37 = load { ptr, i64, i64 }, ptr %a1 %t38 = extractvalue { ptr, i64, i64 } %t37, 1 %t39 = icmp uge i64 1, %t38 - br i1 %t39, label %range152, label %inrange153 -range152: - call void @finch_panic_index(ptr @.str.153, i64 137, i64 1, i64 %t38) + br i1 %t39, label %range177, label %inrange178 +range177: + call void @finch_panic_index(ptr @.str.163, i64 156, i64 1, i64 %t38) unreachable -inrange153: +inrange178: %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 - store { ptr, i64, i64 } { ptr @.str.154, i64 3, i64 0 }, ptr %a44 + store { ptr, i64, i64 } { ptr @.str.164, 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: + br label %logic.rend179 +logic.rend179: + br label %logic.end176 +logic.end176: + %t47 = phi i1 [ false, %logic.from174 ], [ %t46, %logic.rend179 ] + br i1 %t47, label %then180, label %endif182 +then180: %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) + br i1 %t50, label %range183, label %inrange184 +range183: + call void @finch_panic_index(ptr @.str.165, i64 157, i64 0, i64 %t49) unreachable -inrange159: +inrange184: %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: +endif182: %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: + br i1 %t57, label %then185, label %endif187 +then185: call void @finch.main.usage() - br label %endif162 -endif162: + br label %endif187 +endif187: %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) + br i1 %t60, label %range188, label %inrange189 +range188: + call void @finch_panic_index(ptr @.str.166, i64 162, i64 1, i64 %t59) unreachable -inrange164: +inrange189: %t61 = extractvalue { ptr, i64, i64 } %t58, 0 %t62 = getelementptr inbounds { ptr, i64, i64 }, ptr %t61, i64 1 %t63 = load { ptr, i64, i64 }, ptr %t62 @@ -9124,11 +10297,11 @@ inrange164: %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.157, i64 144, i64 2, i64 %t69) + br i1 %t70, label %range190, label %inrange191 +range190: + call void @finch_panic_index(ptr @.str.167, i64 163, i64 2, i64 %t69) unreachable -inrange166: +inrange191: %t71 = extractvalue { ptr, i64, i64 } %t68, 0 %t72 = getelementptr inbounds { ptr, i64, i64 }, ptr %t71, i64 2 %t73 = load { ptr, i64, i64 }, ptr %t72 @@ -9138,87 +10311,87 @@ inrange166: 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 + store { ptr, i64, i64 } { ptr @.str.168, 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 %t82, label %logic.rhs168, label %logic.end169 -logic.rhs168: + br label %logic.from192 +logic.from192: + br i1 %t82, label %logic.rhs193, label %logic.end194 +logic.rhs193: %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 + store { ptr, i64, i64 } { ptr @.str.169, 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: - %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: + br label %logic.rend195 +logic.rend195: + br label %logic.end194 +logic.end194: + %t88 = phi i1 [ false, %logic.from192 ], [ %t87, %logic.rend195 ] + br label %logic.from196 +logic.from196: + br i1 %t88, label %logic.rhs197, label %logic.end198 +logic.rhs197: %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 + store { ptr, i64, i64 } { ptr @.str.170, 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: + br label %logic.rend199 +logic.rend199: + br label %logic.end198 +logic.end198: + %t94 = phi i1 [ false, %logic.from196 ], [ %t93, %logic.rend199 ] + br label %logic.from200 +logic.from200: + br i1 %t94, label %logic.rhs201, label %logic.end202 +logic.rhs201: %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 + store { ptr, i64, i64 } { ptr @.str.171, 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: + br label %logic.rend203 +logic.rend203: + br label %logic.end202 +logic.end202: + %t100 = phi i1 [ false, %logic.from200 ], [ %t99, %logic.rend203 ] + br i1 %t100, label %then204, label %endif206 +then204: call void @finch.main.usage() - br label %endif181 -endif181: + br label %endif206 +endif206: %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 } { ptr @.str.172, i64 0, i64 0 }, ptr %a107 + store { ptr, i64, i64 } { ptr @.str.173, 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: + br label %while.cond207 +while.cond207: %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: + br i1 %t118, label %while.body208, label %while.end209 +while.body208: %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) + br i1 %t122, label %range210, label %inrange211 +range210: + call void @finch_panic_index(ptr @.str.174, i64 180, i64 %t119, i64 %t121) unreachable -inrange186: +inrange211: %t123 = extractvalue { ptr, i64, i64 } %t120, 0 %t124 = getelementptr inbounds { ptr, i64, i64 }, ptr %t123, i64 %t119 %t125 = load { ptr, i64, i64 }, ptr %t124 @@ -9228,23 +10401,23 @@ inrange186: 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 + store { ptr, i64, i64 } { ptr @.str.175, 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: + br label %logic.from212 +logic.from212: + br i1 %t134, label %logic.rhs213, label %logic.end214 +logic.rhs213: %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: + br label %logic.rend215 +logic.rend215: + br label %logic.end214 +logic.end214: + %t138 = phi i1 [ false, %logic.from212 ], [ %t137, %logic.rend215 ] + br i1 %t138, label %then216, label %else217 +then216: %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 @@ -9257,1344 +10430,1630 @@ then191: %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: + br label %endif218 +else217: %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 + store { ptr, i64, i64 } { ptr @.str.176, 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: + br label %logic.from219 +logic.from219: + br i1 %t152, label %logic.rhs220, label %logic.end221 +logic.rhs220: %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: + br label %logic.rend222 +logic.rend222: + br label %logic.end221 +logic.end221: + %t158 = phi i1 [ false, %logic.from219 ], [ %t157, %logic.rend222 ] + br label %logic.from223 +logic.from223: + br i1 %t158, label %logic.rhs224, label %logic.end225 +logic.rhs224: %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 + store { ptr, i64, i64 } { ptr @.str.177, 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: + br label %logic.rend226 +logic.rend226: + br label %logic.end225 +logic.end225: + %t164 = phi i1 [ false, %logic.from223 ], [ %t163, %logic.rend226 ] + br i1 %t164, label %then227, label %else228 +then227: %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) + br i1 %t169, label %range230, label %inrange231 +range230: + call void @finch_panic_index(ptr @.str.178, i64 184, i64 %t166, i64 %t168) unreachable -inrange206: +inrange231: %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 + %t176 = load { ptr, i64, i64 }, ptr %a103 store { ptr, i64, i64 } %t175, ptr %a103 + store { ptr, i64, i64 } %t176, ptr %a177 + call void @finch_str_drop(ptr %a177) store i1 true, ptr %a104 - %t176 = load i64, ptr %a114 - %t177 = add i64 %t176, 1 - store i64 %t177, ptr %a114 - br label %endif204 -else203: - %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: + %t178 = load i64, ptr %a114 + %t179 = add i64 %t178, 1 + store i64 %t179, ptr %a114 + br label %endif229 +else228: + %t180 = load { ptr, i64, i64 }, ptr %a129 + store { ptr, i64, i64 } %t180, ptr %a181 + store { ptr, i64, i64 } { ptr @.str.179, i64 8, i64 0 }, ptr %a182 + %t183 = call i32 @finch_str_eq(ptr %a181, ptr %a182) + %t184 = icmp ne i32 %t183, 0 + br label %logic.from232 +logic.from232: + br i1 %t184, label %logic.rhs233, label %logic.end234 +logic.rhs233: + %t185 = load { ptr, i64, i64 }, ptr %a67 + store { ptr, i64, i64 } %t185, ptr %a186 + store { ptr, i64, i64 } { ptr @.str.180, i64 5, i64 0 }, ptr %a187 + %t188 = call i32 @finch_str_eq(ptr %a186, ptr %a187) + %t189 = icmp ne i32 %t188, 0 + br label %logic.rend235 +logic.rend235: + br label %logic.end234 +logic.end234: + %t190 = phi i1 [ false, %logic.from232 ], [ %t189, %logic.rend235 ] + br i1 %t190, label %then236, label %else237 +then236: 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: - store { ptr, i64, i64 } { ptr @.str.172, i64 3, i64 0 }, ptr %a108 - br label %endif216 -else215: - %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: - %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: - %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 %endif238 +else237: + %t191 = load { ptr, i64, i64 }, ptr %a129 + store { ptr, i64, i64 } %t191, ptr %a192 + store { ptr, i64, i64 } { ptr @.str.181, i64 3, i64 0 }, ptr %a193 + %t194 = call i32 @finch_str_eq(ptr %a192, ptr %a193) + %t195 = icmp ne i32 %t194, 0 + br i1 %t195, label %then239, label %else240 +then239: + %t196 = load { ptr, i64, i64 }, ptr %a108 + store { ptr, i64, i64 } { ptr @.str.182, i64 3, i64 0 }, ptr %a108 + store { ptr, i64, i64 } %t196, ptr %a197 + call void @finch_str_drop(ptr %a197) + br label %endif241 +else240: + %t198 = load { ptr, i64, i64 }, ptr %a129 + store { ptr, i64, i64 } %t198, ptr %a199 + store { ptr, i64, i64 } { ptr @.str.183, i64 2, i64 0 }, ptr %a200 + %t201 = call i32 @finch_str_eq(ptr %a199, ptr %a200) + %t202 = icmp ne i32 %t201, 0 br label %logic.from242 logic.from242: - br i1 %t277, label %logic.rhs243, label %logic.end244 + br i1 %t202, 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 + %t203 = load i64, ptr %a114 + %t204 = add i64 %t203, 1 + %t205 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t206 = load i64, ptr %t205 + %t207 = icmp slt i64 %t204, %t206 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 + %t208 = phi i1 [ false, %logic.from242 ], [ %t207, %logic.rend245 ] + br i1 %t208, 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 + %t209 = getelementptr inbounds { ptr, i64, i64 }, ptr %a109, i32 0, i32 1 + %t210 = load i64, ptr %a114 + %t211 = add i64 %t210, 1 + %t212 = load { ptr, i64, i64 }, ptr %a1 + %t213 = extractvalue { ptr, i64, i64 } %t212, 1 + %t214 = icmp uge i64 %t211, %t213 + br i1 %t214, label %range249, label %inrange250 range249: - call void @finch_panic_index(ptr @.str.181, i64 181, i64 %t285, i64 %t287) + call void @finch_panic_index(ptr @.str.184, i64 192, i64 %t211, i64 %t213) 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 + %t215 = extractvalue { ptr, i64, i64 } %t212, 0 + %t216 = getelementptr inbounds { ptr, i64, i64 }, ptr %t215, i64 %t211 + %t217 = load { ptr, i64, i64 }, ptr %t216 + store { ptr, i64, i64 } %t217, ptr %a218 + call void @finch_str_copy(ptr %a219, ptr %a218) + %t220 = load { ptr, i64, i64 }, ptr %a219 + %t221 = load i64, ptr %t209 + %t222 = add i64 %t221, 1 + call void @finch_arr_reserve(ptr %a109, i64 %t222, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t223 = load ptr, ptr %a109 + %t224 = getelementptr inbounds { ptr, i64, i64 }, ptr %t223, i64 %t221 + store { ptr, i64, i64 } %t220, ptr %t224 + store i64 %t222, ptr %t209 + %t225 = load i64, ptr %a114 + %t226 = add i64 %t225, 1 + store i64 %t226, 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 + %t227 = load { ptr, i64, i64 }, ptr %a129 + store { ptr, i64, i64 } %t227, ptr %a228 + store { ptr, i64, i64 } { ptr @.str.186, i64 2, i64 0 }, ptr %a230 + %t231 = call i32 @finch_str_starts(ptr %a228, ptr %a230) + %t232 = icmp ne i32 %t231, 0 + br label %logic.from251 +logic.from251: + br i1 %t232, label %logic.rhs252, label %logic.end253 +logic.rhs252: + %t233 = getelementptr inbounds { ptr, i64, i64 }, ptr %a129, i32 0, i32 1 + %t234 = load i64, ptr %t233 + %t235 = icmp sgt i64 %t234, 2 + br label %logic.rend254 +logic.rend254: + br label %logic.end253 +logic.end253: + %t236 = phi i1 [ false, %logic.from251 ], [ %t235, %logic.rend254 ] + br i1 %t236, label %then255, label %else256 then255: - store i1 true, ptr %a106 + %t237 = getelementptr inbounds { ptr, i64, i64 }, ptr %a109, i32 0, i32 1 + %t238 = load { ptr, i64, i64 }, ptr %a129 + store { ptr, i64, i64 } %t238, ptr %a239 + %t241 = getelementptr inbounds { ptr, i64, i64 }, ptr %a129, i32 0, i32 1 + %t242 = load i64, ptr %t241 + call void @finch_str_sub(ptr %a240, ptr %a239, i64 2, i64 %t242, ptr @.str.187, i64 195) + %t243 = load { ptr, i64, i64 }, ptr %a240 + %t244 = load i64, ptr %t237 + %t245 = add i64 %t244, 1 + call void @finch_arr_reserve(ptr %a109, i64 %t245, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t246 = load ptr, ptr %a109 + %t247 = getelementptr inbounds { ptr, i64, i64 }, ptr %t246, i64 %t244 + store { ptr, i64, i64 } %t243, ptr %t247 + store i64 %t245, ptr %t237 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 + %t248 = load { ptr, i64, i64 }, ptr %a129 + store { ptr, i64, i64 } %t248, ptr %a249 + store { ptr, i64, i64 } { ptr @.str.188, i64 2, i64 0 }, ptr %a250 + %t251 = call i32 @finch_str_eq(ptr %a249, ptr %a250) + %t252 = icmp ne i32 %t251, 0 br label %logic.from258 logic.from258: - br i1 %t337, label %logic.rhs259, label %logic.end260 + br i1 %t252, 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 + %t253 = load i64, ptr %a114 + %t254 = add i64 %t253, 1 + %t255 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t256 = load i64, ptr %t255 + %t257 = icmp slt i64 %t254, %t256 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 + %t258 = phi i1 [ false, %logic.from258 ], [ %t257, %logic.rend261 ] + br i1 %t258, 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 + %t259 = getelementptr inbounds { ptr, i64, i64 }, ptr %a110, i32 0, i32 1 + %t260 = load i64, ptr %a114 + %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 %range265, label %inrange266 range265: - call void @finch_panic_index(ptr @.str.188, i64 188, i64 %t345, i64 %t347) + call void @finch_panic_index(ptr @.str.189, i64 197, i64 %t261, i64 %t263) 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 + %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 + %t271 = load i64, ptr %t259 + %t272 = add i64 %t271, 1 + call void @finch_arr_reserve(ptr %a110, i64 %t272, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t273 = load ptr, ptr %a110 + %t274 = getelementptr inbounds { ptr, i64, i64 }, ptr %t273, i64 %t271 + store { ptr, i64, i64 } %t270, ptr %t274 + store i64 %t272, ptr %t259 + %t275 = load i64, ptr %a114 + %t276 = add i64 %t275, 1 + store i64 %t276, 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 + %t277 = load { ptr, i64, i64 }, ptr %a129 + store { ptr, i64, i64 } %t277, ptr %a278 + store { ptr, i64, i64 } { ptr @.str.190, i64 9, i64 0 }, ptr %a279 + %t280 = call i32 @finch_str_eq(ptr %a278, ptr %a279) + %t281 = icmp ne i32 %t280, 0 + br label %logic.from267 +logic.from267: + br i1 %t281, label %logic.rhs268, label %logic.end269 +logic.rhs268: + %t282 = load i64, ptr %a114 + %t283 = add i64 %t282, 1 + %t284 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t285 = load i64, ptr %t284 + %t286 = icmp slt i64 %t283, %t285 + br label %logic.rend270 +logic.rend270: + br label %logic.end269 +logic.end269: + %t287 = phi i1 [ false, %logic.from267 ], [ %t286, %logic.rend270 ] + br i1 %t287, label %then271, label %else272 +then271: + %t288 = load i64, ptr %a114 + %t289 = add i64 %t288, 1 + %t290 = load { ptr, i64, i64 }, ptr %a1 + %t291 = extractvalue { ptr, i64, i64 } %t290, 1 + %t292 = icmp uge i64 %t289, %t291 + br i1 %t292, label %range274, label %inrange275 +range274: + call void @finch_panic_index(ptr @.str.191, i64 200, i64 %t289, i64 %t291) + unreachable +inrange275: + %t293 = extractvalue { ptr, i64, i64 } %t290, 0 + %t294 = getelementptr inbounds { ptr, i64, i64 }, ptr %t293, i64 %t289 + %t295 = load { ptr, i64, i64 }, ptr %t294 + store { ptr, i64, i64 } %t295, ptr %a296 + store { ptr, i64, i64 } { ptr @.str.193, i64 1, i64 0 }, ptr %a298 + call void @finch_str_split(ptr %a299, ptr %a296, ptr %a298) + %t300 = load { ptr, i64, i64 }, ptr %a299 + store { ptr, i64, i64 } %t300, ptr %a301 + %t302 = getelementptr inbounds { ptr, i64, i64 }, ptr %a111, i32 0, i32 1 + %t303 = load { ptr, i64, i64 }, ptr %a301 + %t304 = extractvalue { ptr, i64, i64 } %t303, 1 + %t305 = icmp uge i64 0, %t304 + br i1 %t305, label %range276, label %inrange277 +range276: + call void @finch_panic_index(ptr @.str.194, i64 201, i64 0, i64 %t304) + unreachable +inrange277: + %t306 = extractvalue { ptr, i64, i64 } %t303, 0 + %t307 = getelementptr inbounds { ptr, i64, i64 }, ptr %t306, i64 0 + %t308 = load { ptr, i64, i64 }, ptr %t307 + store { ptr, i64, i64 } %t308, ptr %a309 + call void @finch_str_copy(ptr %a310, ptr %a309) + %t311 = load { ptr, i64, i64 }, ptr %a310 + %t312 = load i64, ptr %t302 + %t313 = add i64 %t312, 1 + call void @finch_arr_reserve(ptr %a111, i64 %t313, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t314 = load ptr, ptr %a111 + %t315 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i64 %t312 + store { ptr, i64, i64 } %t311, ptr %t315 + store i64 %t313, ptr %t302 + %t316 = getelementptr inbounds { ptr, i64, i64 }, ptr %a112, i32 0, i32 1 + %t317 = load { ptr, i64, i64 }, ptr %a301 + %t318 = extractvalue { ptr, i64, i64 } %t317, 1 + %t319 = icmp uge i64 1, %t318 + br i1 %t319, label %range278, label %inrange279 +range278: + call void @finch_panic_index(ptr @.str.195, i64 202, i64 1, i64 %t318) + unreachable +inrange279: + %t320 = extractvalue { ptr, i64, i64 } %t317, 0 + %t321 = getelementptr inbounds { ptr, i64, i64 }, ptr %t320, i64 1 + %t322 = load { ptr, i64, i64 }, ptr %t321 + store { ptr, i64, i64 } %t322, ptr %a323 + call void @finch_str_copy(ptr %a324, ptr %a323) + %t325 = load { ptr, i64, i64 }, ptr %a324 + %t326 = load i64, ptr %t316 + %t327 = add i64 %t326, 1 + call void @finch_arr_reserve(ptr %a112, i64 %t327, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t328 = load ptr, ptr %a112 + %t329 = getelementptr inbounds { ptr, i64, i64 }, ptr %t328, i64 %t326 + store { ptr, i64, i64 } %t325, ptr %t329 + store i64 %t327, ptr %t316 + %t330 = load i64, ptr %a114 + %t331 = add i64 %t330, 1 + store i64 %t331, ptr %a114 + call void @finch.drop.arr_str(ptr %a301) + br label %endif273 +else272: + %t332 = load { ptr, i64, i64 }, ptr %a129 + store { ptr, i64, i64 } %t332, ptr %a333 + store { ptr, i64, i64 } { ptr @.str.196, i64 2, i64 0 }, ptr %a334 + %t335 = call i32 @finch_str_eq(ptr %a333, ptr %a334) + %t336 = icmp ne i32 %t335, 0 + br i1 %t336, label %then280, label %else281 +then280: + store i1 true, ptr %a106 + br label %endif282 +else281: + %t337 = load { ptr, i64, i64 }, ptr %a129 + store { ptr, i64, i64 } %t337, ptr %a338 + store { ptr, i64, i64 } { ptr @.str.197, i64 8, i64 0 }, ptr %a339 + %t340 = call i32 @finch_str_eq(ptr %a338, ptr %a339) + %t341 = icmp ne i32 %t340, 0 + br label %logic.from283 +logic.from283: + br i1 %t341, label %logic.rhs284, label %logic.end285 +logic.rhs284: + %t342 = load i64, ptr %a114 + %t343 = add i64 %t342, 1 + %t344 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t345 = load i64, ptr %t344 + %t346 = icmp slt i64 %t343, %t345 + br label %logic.rend286 +logic.rend286: + br label %logic.end285 +logic.end285: + %t347 = phi i1 [ false, %logic.from283 ], [ %t346, %logic.rend286 ] + br i1 %t347, label %then287, label %else288 +then287: + %t348 = load i64, ptr %a114 + %t349 = add i64 %t348, 1 + %t350 = load { ptr, i64, i64 }, ptr %a1 + %t351 = extractvalue { ptr, i64, i64 } %t350, 1 + %t352 = icmp uge i64 %t349, %t351 + br i1 %t352, label %range290, label %inrange291 +range290: + call void @finch_panic_index(ptr @.str.198, i64 207, i64 %t349, i64 %t351) + unreachable +inrange291: + %t353 = extractvalue { ptr, i64, i64 } %t350, 0 + %t354 = getelementptr inbounds { ptr, i64, i64 }, ptr %t353, i64 %t349 + %t355 = load { ptr, i64, i64 }, ptr %t354 + store { ptr, i64, i64 } %t355, ptr %a356 + call void @finch_str_copy(ptr %a357, ptr %a356) + %t358 = load { ptr, i64, i64 }, ptr %a357 + %t359 = load { ptr, i64, i64 }, ptr %a107 + store { ptr, i64, i64 } %t358, ptr %a107 + store { ptr, i64, i64 } %t359, ptr %a360 + call void @finch_str_drop(ptr %a360) + %t361 = load i64, ptr %a114 + %t362 = add i64 %t361, 1 + store i64 %t362, ptr %a114 + br label %endif289 +else288: + %t363 = load { ptr, i64, i64 }, ptr %a67 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: + store { ptr, i64, i64 } { ptr @.str.199, i64 3, i64 0 }, ptr %a365 + %t366 = call i32 @finch_str_eq(ptr %a364, ptr %a365) + %t367 = icmp ne i32 %t366, 0 + br i1 %t367, label %then292, label %else293 +then292: + %t368 = getelementptr inbounds { ptr, i64, i64 }, ptr %a113, i32 0, i32 1 + %t369 = load { ptr, i64, i64 }, ptr %a129 + store { ptr, i64, i64 } %t369, ptr %a370 + call void @finch_str_copy(ptr %a371, ptr %a370) + %t372 = load { ptr, i64, i64 }, ptr %a371 + %t373 = load i64, ptr %t368 + %t374 = add i64 %t373, 1 + call void @finch_arr_reserve(ptr %a113, i64 %t374, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t375 = load ptr, ptr %a113 + %t376 = getelementptr inbounds { ptr, i64, i64 }, ptr %t375, i64 %t373 + store { ptr, i64, i64 } %t372, ptr %t376 + store i64 %t374, ptr %t368 + br label %endif294 +else293: call void @finch.main.usage() - br label %endif269 -endif269: + br label %endif294 +endif294: + br label %endif289 +endif289: + br label %endif282 +endif282: + br label %endif273 +endif273: br label %endif264 endif264: br label %endif257 endif257: br label %endif248 endif248: - br label %endif239 -endif239: - br label %endif232 -endif232: - 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 - 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 - %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 + br label %endif241 +endif241: + br label %endif238 +endif238: + br label %endif229 +endif229: + br label %endif218 +endif218: + %t377 = load i64, ptr %a114 + %t378 = add i64 %t377, 1 + store i64 %t378, ptr %a114 + call void @finch_str_drop(ptr %a129) + br label %while.cond207 +while.end209: + %t379 = load { ptr, i64, i64 }, ptr %a107 + %t380 = call %S.platform.Target @finch.platform.select({ ptr, i64, i64 } %t379) + store %S.platform.Target %t380, ptr %a381 + %t382 = load { ptr, i64, i64 }, ptr %a67 + store { ptr, i64, i64 } %t382, ptr %a383 + store { ptr, i64, i64 } { ptr @.str.200, i64 3, i64 0 }, ptr %a384 + %t385 = call i32 @finch_str_eq(ptr %a383, ptr %a384) + %t386 = icmp ne i32 %t385, 0 + br i1 %t386, label %then295, label %else296 +then295: + %t387 = call { ptr, i64, i64 } @finch.host.tempDir() + store { ptr, i64, i64 } %t387, ptr %a389 + store { ptr, i64, i64 } { ptr @.str.201, i64 11, i64 0 }, ptr %a390 + call void @finch_str_concat(ptr %a388, ptr %a389, ptr %a390) + store { ptr, i64, i64 } %t387, ptr %a391 + call void @finch_str_drop(ptr %a391) + %t392 = load { ptr, i64, i64 }, ptr %a388 + %t393 = call i64 @finch.host.pid() + call void @finch_str_from_int(ptr %a394, i64 %t393) + %t395 = load { ptr, i64, i64 }, ptr %a394 + store { ptr, i64, i64 } %t392, ptr %a397 + store { ptr, i64, i64 } %t395, ptr %a398 + call void @finch_str_concat(ptr %a396, ptr %a397, ptr %a398) + store { ptr, i64, i64 } %t392, ptr %a399 + call void @finch_str_drop(ptr %a399) + store { ptr, i64, i64 } %t395, ptr %a400 + call void @finch_str_drop(ptr %a400) + %t401 = load { ptr, i64, i64 }, ptr %a396 + store { ptr, i64, i64 } %t401, ptr %a403 + store { ptr, i64, i64 } { ptr @.str.202, i64 1, i64 0 }, ptr %a404 + call void @finch_str_concat(ptr %a402, ptr %a403, ptr %a404) + store { ptr, i64, i64 } %t401, ptr %a405 + call void @finch_str_drop(ptr %a405) + %t406 = load { ptr, i64, i64 }, ptr %a402 + %t407 = load { ptr, i64, i64 }, ptr %a77 + %t408 = call { ptr, i64, i64 } @finch.main.stem({ ptr, i64, i64 } %t407) + store { ptr, i64, i64 } %t406, ptr %a410 + store { ptr, i64, i64 } %t408, ptr %a411 + call void @finch_str_concat(ptr %a409, ptr %a410, ptr %a411) + store { ptr, i64, i64 } %t406, ptr %a412 + call void @finch_str_drop(ptr %a412) + store { ptr, i64, i64 } %t408, ptr %a413 + call void @finch_str_drop(ptr %a413) + %t414 = load { ptr, i64, i64 }, ptr %a409 + %t415 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 6 + %t416 = load { ptr, i64, i64 }, ptr %t415 + store { ptr, i64, i64 } %t414, ptr %a418 + store { ptr, i64, i64 } %t416, ptr %a419 + call void @finch_str_concat(ptr %a417, ptr %a418, ptr %a419) + store { ptr, i64, i64 } %t414, ptr %a420 + call void @finch_str_drop(ptr %a420) + %t421 = load { ptr, i64, i64 }, ptr %a417 + %t422 = load { ptr, i64, i64 }, ptr %a103 + store { ptr, i64, i64 } %t421, ptr %a103 + store { ptr, i64, i64 } %t422, ptr %a423 + call void @finch_str_drop(ptr %a423) + br label %endif297 +else296: + %t424 = load i1, ptr %a105 + br label %logic.from298 +logic.from298: + br i1 %t424, label %logic.rhs299, label %logic.end300 +logic.rhs299: + %t425 = load i1, ptr %a104 + %t426 = xor i1 %t425, true + br label %logic.rend301 +logic.rend301: + br label %logic.end300 +logic.end300: + %t427 = phi i1 [ false, %logic.from298 ], [ %t426, %logic.rend301 ] + br i1 %t427, label %then302, label %else303 +then302: + %t428 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 1 + %t429 = load i1, ptr %t428 + br i1 %t429, label %then305, label %else306 +then305: + %t430 = load { ptr, i64, i64 }, ptr %a103 + store { ptr, i64, i64 } %t430, ptr %a432 + store { ptr, i64, i64 } { ptr @.str.203, i64 4, i64 0 }, ptr %a433 + call void @finch_str_concat(ptr %a431, ptr %a432, ptr %a433) + %t434 = load { ptr, i64, i64 }, ptr %a431 + %t435 = load { ptr, i64, i64 }, ptr %a103 + store { ptr, i64, i64 } %t434, ptr %a103 + store { ptr, i64, i64 } %t435, ptr %a436 + call void @finch_str_drop(ptr %a436) + br label %endif307 +else306: + %t437 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 3 + %t438 = load i1, ptr %t437 + br i1 %t438, label %then308, label %else309 +then308: + %t439 = load { ptr, i64, i64 }, ptr %a103 + store { ptr, i64, i64 } { ptr @.str.204, 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.205, i64 6, i64 0 }, ptr %a446 + call void @finch_str_concat(ptr %a444, ptr %a445, ptr %a446) + store { ptr, i64, i64 } %t443, ptr %a447 + call void @finch_str_drop(ptr %a447) + %t448 = load { ptr, i64, i64 }, ptr %a444 + %t449 = load { ptr, i64, i64 }, ptr %a103 + store { ptr, i64, i64 } %t448, ptr %a103 + store { ptr, i64, i64 } %t449, ptr %a450 + call void @finch_str_drop(ptr %a450) + br label %endif310 +else309: + %t451 = load { ptr, i64, i64 }, ptr %a103 + store { ptr, i64, i64 } { ptr @.str.206, i64 3, i64 0 }, ptr %a453 + store { ptr, i64, i64 } %t451, ptr %a454 + call void @finch_str_concat(ptr %a452, ptr %a453, ptr %a454) + %t455 = load { ptr, i64, i64 }, ptr %a452 + store { ptr, i64, i64 } %t455, ptr %a457 + store { ptr, i64, i64 } { ptr @.str.207, i64 3, i64 0 }, ptr %a458 + call void @finch_str_concat(ptr %a456, ptr %a457, ptr %a458) + store { ptr, i64, i64 } %t455, ptr %a459 + call void @finch_str_drop(ptr %a459) + %t460 = load { ptr, i64, i64 }, ptr %a456 + %t461 = load { ptr, i64, i64 }, ptr %a103 + store { ptr, i64, i64 } %t460, ptr %a103 + store { ptr, i64, i64 } %t461, ptr %a462 + call void @finch_str_drop(ptr %a462) + br label %endif310 +endif310: + br label %endif307 +endif307: + br label %endif304 +else303: + %t463 = load i1, ptr %a104 + %t464 = xor i1 %t463, true + br i1 %t464, label %then311, label %endif313 +then311: + %t465 = load { ptr, i64, i64 }, ptr %a103 + %t466 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 6 + %t467 = load { ptr, i64, i64 }, ptr %t466 + store { ptr, i64, i64 } %t465, ptr %a469 + store { ptr, i64, i64 } %t467, 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 %a103 + store { ptr, i64, i64 } %t471, ptr %a103 + store { ptr, i64, i64 } %t472, ptr %a473 + call void @finch_str_drop(ptr %a473) + br label %endif313 +endif313: + br label %endif304 +endif304: + br label %endif297 +endif297: + store %S.main.Loader zeroinitializer, ptr %a474 + %t475 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 3 + %t476 = load { ptr, i64, i64 }, ptr %t475 + store { ptr, i64, i64 } { ptr @.str.208, i64 5, i64 0 }, ptr %t475 + store { ptr, i64, i64 } %t476, ptr %a477 + call void @finch_str_drop(ptr %a477) + %t478 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 1 + %t479 = load i1, ptr %t478 + br i1 %t479, label %then314, label %else315 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 + %t480 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 3 + %t481 = load { ptr, i64, i64 }, ptr %t480 + store { ptr, i64, i64 } { ptr @.str.209, i64 7, i64 0 }, ptr %t480 + store { ptr, i64, i64 } %t481, ptr %a482 + call void @finch_str_drop(ptr %a482) + br label %endif316 +else315: + %t483 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 3 + %t484 = load i1, ptr %t483 + br i1 %t484, label %then317, label %endif319 +then317: + %t485 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 3 + %t486 = load { ptr, i64, i64 }, ptr %t485 + store { ptr, i64, i64 } { ptr @.str.210, i64 5, i64 0 }, ptr %t485 + store { ptr, i64, i64 } %t486, ptr %a487 + call void @finch_str_drop(ptr %a487) + br label %endif319 +endif319: 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 - 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) + %t488 = load { ptr, i64, i64 }, ptr %a1 + %t489 = extractvalue { ptr, i64, i64 } %t488, 1 + %t490 = icmp uge i64 0, %t489 + br i1 %t490, label %range320, label %inrange321 +range320: + call void @finch_panic_index(ptr @.str.211, i64 238, i64 0, i64 %t489) 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) +inrange321: + %t491 = extractvalue { ptr, i64, i64 } %t488, 0 + %t492 = getelementptr inbounds { ptr, i64, i64 }, ptr %t491, i64 0 + %t493 = load { ptr, i64, i64 }, ptr %t492 + %t494 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t493) + store { ptr, i64, i64 } %t494, ptr %a496 + store { ptr, i64, i64 } { ptr @.str.212, i64 7, i64 0 }, ptr %a497 + call void @finch_str_concat(ptr %a495, ptr %a496, ptr %a497) + store { ptr, i64, i64 } %t494, ptr %a498 + call void @finch_str_drop(ptr %a498) + %t499 = load { ptr, i64, i64 }, ptr %a495 + %t500 = load { ptr, i64, i64 }, ptr %a1 + %t501 = extractvalue { ptr, i64, i64 } %t500, 1 + %t502 = icmp uge i64 0, %t501 + br i1 %t502, label %range322, label %inrange323 +range322: + call void @finch_panic_index(ptr @.str.213, i64 238, i64 0, i64 %t501) 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) +inrange323: + %t503 = extractvalue { ptr, i64, i64 } %t500, 0 + %t504 = getelementptr inbounds { ptr, i64, i64 }, ptr %t503, i64 0 + %t505 = load { ptr, i64, i64 }, ptr %t504 + %t506 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t505) + store { ptr, i64, i64 } %t506, ptr %a508 + store { ptr, i64, i64 } { ptr @.str.214, i64 4, i64 0 }, ptr %a509 + call void @finch_str_concat(ptr %a507, ptr %a508, ptr %a509) + store { ptr, i64, i64 } %t506, ptr %a510 + call void @finch_str_drop(ptr %a510) + %t511 = load { ptr, i64, i64 }, ptr %a507 + %t512 = load { ptr, i64, i64 }, ptr %a1 + %t513 = extractvalue { ptr, i64, i64 } %t512, 1 + %t514 = icmp uge i64 0, %t513 + br i1 %t514, label %range324, label %inrange325 +range324: + call void @finch_panic_index(ptr @.str.215, i64 238, i64 0, i64 %t513) 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 +inrange325: + %t515 = extractvalue { ptr, i64, i64 } %t512, 0 + %t516 = getelementptr inbounds { ptr, i64, i64 }, ptr %t515, i64 0 + %t517 = load { ptr, i64, i64 }, ptr %t516 + %t518 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t517) + store { ptr, i64, i64 } %t518, ptr %a520 + store { ptr, i64, i64 } { ptr @.str.216, i64 19, i64 0 }, ptr %a521 + call void @finch_str_concat(ptr %a519, ptr %a520, ptr %a521) + store { ptr, i64, i64 } %t518, ptr %a522 + call void @finch_str_drop(ptr %a522) + %t523 = load { ptr, i64, i64 }, ptr %a519 + %t524 = mul i64 4, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) + %t525 = call ptr @finch_alloc(i64 %t524) + %t526 = getelementptr inbounds { ptr, i64, i64 }, ptr %t525, i64 0 + store { ptr, i64, i64 } %t499, ptr %t526 + %t527 = getelementptr inbounds { ptr, i64, i64 }, ptr %t525, i64 1 + store { ptr, i64, i64 } %t511, ptr %t527 + %t528 = getelementptr inbounds { ptr, i64, i64 }, ptr %t525, i64 2 + store { ptr, i64, i64 } %t523, ptr %t528 + %t529 = getelementptr inbounds { ptr, i64, i64 }, ptr %t525, i64 3 + store { ptr, i64, i64 } { ptr @.str.217, i64 3, i64 0 }, ptr %t529 + %t530 = insertvalue { ptr, i64, i64 } undef, ptr %t525, 0 + %t531 = insertvalue { ptr, i64, i64 } %t530, i64 4, 1 + %t532 = insertvalue { ptr, i64, i64 } %t531, i64 4, 2 + store { ptr, i64, i64 } %t532, ptr %a533 + store i64 0, ptr %a534 + br label %each.cond326 +each.cond326: + %t535 = getelementptr inbounds { ptr, i64, i64 }, ptr %a533, i32 0, i32 1 + %t536 = load i64, ptr %t535 + %t537 = load i64, ptr %a534 + %t538 = icmp slt i64 %t537, %t536 + br i1 %t538, label %each.body327, label %each.end329 +each.body327: + %t539 = load ptr, ptr %a533 + %t540 = getelementptr inbounds { ptr, i64, i64 }, ptr %t539, i64 %t537 + %t541 = load { ptr, i64, i64 }, ptr %t540 + store { ptr, i64, i64 } %t541, ptr %a542 + %t543 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 4 + %t544 = getelementptr inbounds { ptr, i64, i64 }, ptr %t543, i32 0, i32 1 + %t545 = load i64, ptr %t544 + %t546 = icmp eq i64 %t545, 0 + br label %logic.from330 +logic.from330: + br i1 %t546, label %logic.rhs331, label %logic.end332 +logic.rhs331: + %t547 = load { ptr, i64, i64 }, ptr %a542 + store { ptr, i64, i64 } %t547, ptr %a549 + store { ptr, i64, i64 } { ptr @.str.218, i64 9, i64 0 }, ptr %a550 + call void @finch_str_concat(ptr %a548, ptr %a549, ptr %a550) + %t551 = load { ptr, i64, i64 }, ptr %a548 + store { ptr, i64, i64 } %t551, ptr %a552 + %t553 = call i32 @finch_file_exists(ptr %a552) + store { ptr, i64, i64 } %t551, ptr %a554 + call void @finch_str_drop(ptr %a554) + %t555 = icmp ne i32 %t553, 0 + br label %logic.rend333 +logic.rend333: + br label %logic.end332 +logic.end332: + %t556 = phi i1 [ false, %logic.from330 ], [ %t555, %logic.rend333 ] + br i1 %t556, label %then334, label %endif336 +then334: + %t557 = load { ptr, i64, i64 }, ptr %a542 + %t558 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 4 + store { ptr, i64, i64 } %t557, ptr %a559 + call void @finch_str_copy(ptr %a560, ptr %a559) + %t561 = load { ptr, i64, i64 }, ptr %a560 + %t562 = load { ptr, i64, i64 }, ptr %t558 + store { ptr, i64, i64 } %t561, ptr %t558 + store { ptr, i64, i64 } %t562, ptr %a563 + call void @finch_str_drop(ptr %a563) + br label %endif336 +endif336: + br label %each.step328 +each.step328: + %t564 = load i64, ptr %a534 + %t565 = add i64 %t564, 1 + store i64 %t565, ptr %a534 + br label %each.cond326 +each.end329: + call void @finch.drop.arr_str(ptr %a533) + %t566 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 4 + %t567 = getelementptr inbounds { ptr, i64, i64 }, ptr %t566, i32 0, i32 1 + %t568 = load i64, ptr %t567 + %t569 = icmp eq i64 %t568, 0 + br i1 %t569, label %then337, label %endif339 +then337: + %t570 = call { ptr, i64, i64 } @finch.main.unpack() + store { ptr, i64, i64 } %t570, ptr %a572 + store { ptr, i64, i64 } { ptr @.str.219, i64 4, i64 0 }, ptr %a573 + call void @finch_str_concat(ptr %a571, ptr %a572, ptr %a573) + store { ptr, i64, i64 } %t570, ptr %a574 + call void @finch_str_drop(ptr %a574) + %t575 = load { ptr, i64, i64 }, ptr %a571 + %t576 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 4 + %t577 = load { ptr, i64, i64 }, ptr %t576 + store { ptr, i64, i64 } %t575, ptr %t576 + store { ptr, i64, i64 } %t577, ptr %a578 + call void @finch_str_drop(ptr %a578) + br label %endif339 +endif339: + %t579 = load { ptr, i64, i64 }, ptr %a111 + %t580 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 6 + store { ptr, i64, i64 } %t579, ptr %a581 + call void @finch.copy.arr_str(ptr %a582, ptr %a581) + %t583 = load { ptr, i64, i64 }, ptr %a582 + %t584 = load { ptr, i64, i64 }, ptr %t580 + store { ptr, i64, i64 } %t583, ptr %t580 + store { ptr, i64, i64 } %t584, ptr %a585 + call void @finch.drop.arr_str(ptr %a585) + %t586 = load { ptr, i64, i64 }, ptr %a112 + %t587 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 7 + store { ptr, i64, i64 } %t586, ptr %a588 + call void @finch.copy.arr_str(ptr %a589, ptr %a588) + %t590 = load { ptr, i64, i64 }, ptr %a589 + %t591 = load { ptr, i64, i64 }, ptr %t587 + store { ptr, i64, i64 } %t590, ptr %t587 + store { ptr, i64, i64 } %t591, ptr %a592 + call void @finch.drop.arr_str(ptr %a592) + %t593 = extractvalue { ptr, i64, i64 } { ptr @.str.220, i64 10, i64 0 }, 0 + %t594 = icmp eq ptr %t593, null + %t595 = select i1 %t594, ptr @.str.221, ptr %t593 + %t596 = call ptr @getenv(ptr %t595) + store { ptr, i64, i64 } zeroinitializer, ptr %a597 + call void @finch_str_from_c(ptr %a597, ptr %t596) + %t598 = load { ptr, i64, i64 }, ptr %a597 + store { ptr, i64, i64 } %t598, ptr %a599 + %t601 = call { ptr, i64, i64 } @finch.host.pathSeparator() + store { ptr, i64, i64 } %t601, ptr %a602 + call void @finch_str_split(ptr %a603, ptr %a599, ptr %a602) + store { ptr, i64, i64 } %t601, ptr %a604 + call void @finch_str_drop(ptr %a604) + %t605 = load { ptr, i64, i64 }, ptr %a603 + store { ptr, i64, i64 } %t605, ptr %a606 + store i64 0, ptr %a607 + br label %each.cond340 +each.cond340: + %t608 = getelementptr inbounds { ptr, i64, i64 }, ptr %a606, i32 0, i32 1 + %t609 = load i64, ptr %t608 + %t610 = load i64, ptr %a607 + %t611 = icmp slt i64 %t610, %t609 + br i1 %t611, label %each.body341, label %each.end343 +each.body341: + %t612 = load ptr, ptr %a606 + %t613 = getelementptr inbounds { ptr, i64, i64 }, ptr %t612, i64 %t610 + %t614 = load { ptr, i64, i64 }, ptr %t613 + store { ptr, i64, i64 } %t614, ptr %a615 + %t616 = getelementptr inbounds { ptr, i64, i64 }, ptr %a615, i32 0, i32 1 + %t617 = load i64, ptr %t616 + %t618 = icmp sgt i64 %t617, 0 + br i1 %t618, label %then344, label %endif346 +then344: + %t619 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 5 + %t620 = getelementptr inbounds { ptr, i64, i64 }, ptr %t619, i32 0, i32 1 + %t621 = load { ptr, i64, i64 }, ptr %a615 + store { ptr, i64, i64 } %t621, ptr %a622 + call void @finch_str_copy(ptr %a623, ptr %a622) + %t624 = load { ptr, i64, i64 }, ptr %a623 + %t625 = load i64, ptr %t620 + %t626 = add i64 %t625, 1 + call void @finch_arr_reserve(ptr %t619, i64 %t626, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t627 = load ptr, ptr %t619 + %t628 = getelementptr inbounds { ptr, i64, i64 }, ptr %t627, i64 %t625 + store { ptr, i64, i64 } %t624, ptr %t628 + store i64 %t626, ptr %t620 + br label %endif346 +endif346: + br label %each.step342 +each.step342: + %t629 = load i64, ptr %a607 + %t630 = add i64 %t629, 1 + store i64 %t630, ptr %a607 + br label %each.cond340 +each.end343: + call void @finch.drop.arr_str(ptr %a606) + %t631 = load { ptr, i64, i64 }, ptr %a77 + call void @finch.main.load(ptr %a474, { ptr, i64, i64 } %t631, { ptr, i64, i64 } { ptr @.str.223, i64 0, i64 0 }) + store { ptr, i64, i64 } zeroinitializer, ptr %a632 + store { ptr, i64, i64 } zeroinitializer, ptr %a633 + %t634 = load { ptr, i64, i64 }, ptr %a110 + store { ptr, i64, i64 } %t634, ptr %a635 + call void @finch.copy.arr_str(ptr %a636, ptr %a635) + %t637 = load { ptr, i64, i64 }, ptr %a636 + store { ptr, i64, i64 } %t637, ptr %a638 + %t639 = load { ptr, i64, i64 }, ptr %a109 + store { ptr, i64, i64 } %t639, ptr %a640 + call void @finch.copy.arr_str(ptr %a641, ptr %a640) + %t642 = load { ptr, i64, i64 }, ptr %a641 + store { ptr, i64, i64 } %t642, ptr %a643 + %t644 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 0 + store i64 0, ptr %a645 + br label %each.cond347 +each.cond347: + %t646 = getelementptr inbounds { ptr, i64, i64 }, ptr %t644, i32 0, i32 1 + %t647 = load i64, ptr %t646 + %t648 = load i64, ptr %a645 + %t649 = icmp slt i64 %t648, %t647 + br i1 %t649, label %each.body348, label %each.end350 +each.body348: + %t650 = load ptr, ptr %t644 + %t651 = getelementptr inbounds %S.ast.Program, ptr %t650, i64 %t648 + %t652 = load %S.ast.Program, ptr %t651 + store %S.ast.Program %t652, ptr %a653 + %t654 = getelementptr inbounds %S.ast.Program, ptr %a653, i32 0, i32 1 + %t655 = load { ptr, i64, i64 }, ptr %t654 + %t656 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %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) + %t658 = getelementptr inbounds { ptr, i64, i64 }, ptr %a638, i32 0, i32 1 + %t659 = load { ptr, i64, i64 }, ptr %a657 + store i64 -1, ptr %a660 + %t661 = load i64, ptr %t658 + %t662 = load ptr, ptr %a638 + store i64 0, ptr %a663 + br label %find.cond351 +find.cond351: + %t664 = load i64, ptr %a663 + %t665 = icmp slt i64 %t664, %t661 + br i1 %t665, label %find.body352, label %find.end355 +find.body352: + %t666 = getelementptr inbounds { ptr, i64, i64 }, ptr %t662, i64 %t664 + %t667 = load { ptr, i64, i64 }, ptr %t666 + store { ptr, i64, i64 } %t667, ptr %a668 + store { ptr, i64, i64 } %t659, ptr %a669 + %t670 = call i32 @finch_str_eq(ptr %a668, ptr %a669) + %t671 = icmp ne i32 %t670, 0 + br i1 %t671, label %find.hit353, label %find.next354 +find.hit353: + store i64 %t664, ptr %a660 + br label %find.end355 +find.next354: + %t672 = add i64 %t664, 1 + store i64 %t672, ptr %a663 + br label %find.cond351 +find.end355: + %t673 = load i64, ptr %a660 + %t674 = icmp sge i64 %t673, 0 + %t675 = xor i1 %t674, true + br i1 %t675, label %then356, label %endif358 +then356: + %t676 = getelementptr inbounds { ptr, i64, i64 }, ptr %a638, i32 0, i32 1 + %t677 = load { ptr, i64, i64 }, ptr %a657 + store { ptr, i64, i64 } %t677, ptr %a678 + call void @finch_str_copy(ptr %a679, ptr %a678) + %t680 = load { ptr, i64, i64 }, ptr %a679 + %t681 = load i64, ptr %t676 + %t682 = add i64 %t681, 1 + call void @finch_arr_reserve(ptr %a638, i64 %t682, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t683 = load ptr, ptr %a638 + %t684 = getelementptr inbounds { ptr, i64, i64 }, ptr %t683, i64 %t681 + store { ptr, i64, i64 } %t680, ptr %t684 + store i64 %t682, ptr %t676 + br label %endif358 +endif358: + %t685 = getelementptr inbounds %S.ast.Program, ptr %a653, i32 0, i32 3 + %t686 = getelementptr inbounds { ptr, i64, i64 }, ptr %t685, i32 0, i32 1 + %t687 = load i64, ptr %t686 + store i64 0, ptr %a688 + br label %for.cond359 +for.cond359: + %t689 = load i64, ptr %a688 + %t690 = icmp slt i64 %t689, %t687 + br i1 %t690, label %for.body360, label %for.end362 +for.body360: + %t691 = getelementptr inbounds { ptr, i64, i64 }, ptr %a633, i32 0, i32 1 + %t692 = getelementptr inbounds %S.ast.Program, ptr %a653, i32 0, i32 3 + %t693 = load i64, ptr %a688 + %t694 = load { ptr, i64, i64 }, ptr %t692 + %t695 = extractvalue { ptr, i64, i64 } %t694, 1 + %t696 = icmp uge i64 %t693, %t695 + br i1 %t696, label %range363, label %inrange364 +range363: + call void @finch_panic_index(ptr @.str.224, i64 266, i64 %t693, i64 %t695) 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 - %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) +inrange364: + %t697 = extractvalue { ptr, i64, i64 } %t694, 0 + %t698 = getelementptr inbounds { ptr, i64, i64 }, ptr %t697, i64 %t693 + %t699 = load { ptr, i64, i64 }, ptr %t698 + store i64 -1, ptr %a700 + %t701 = load i64, ptr %t691 + %t702 = load ptr, ptr %a633 + store i64 0, ptr %a703 + br label %find.cond365 +find.cond365: + %t704 = load i64, ptr %a703 + %t705 = icmp slt i64 %t704, %t701 + br i1 %t705, label %find.body366, label %find.end369 +find.body366: + %t706 = getelementptr inbounds { ptr, i64, i64 }, ptr %t702, i64 %t704 + %t707 = load { ptr, i64, i64 }, ptr %t706 + store { ptr, i64, i64 } %t707, ptr %a708 + store { ptr, i64, i64 } %t699, ptr %a709 + %t710 = call i32 @finch_str_eq(ptr %a708, ptr %a709) + %t711 = icmp ne i32 %t710, 0 + br i1 %t711, label %find.hit367, label %find.next368 +find.hit367: + store i64 %t704, ptr %a700 + br label %find.end369 +find.next368: + %t712 = add i64 %t704, 1 + store i64 %t712, ptr %a703 + br label %find.cond365 +find.end369: + %t713 = load i64, ptr %a700 + %t714 = icmp sge i64 %t713, 0 + %t715 = xor i1 %t714, true + br i1 %t715, label %then370, label %endif372 +then370: + %t716 = getelementptr inbounds { ptr, i64, i64 }, ptr %a633, i32 0, i32 1 + %t717 = getelementptr inbounds %S.ast.Program, ptr %a653, i32 0, i32 3 + %t718 = load i64, ptr %a688 + %t719 = load { ptr, i64, i64 }, ptr %t717 + %t720 = extractvalue { ptr, i64, i64 } %t719, 1 + %t721 = icmp uge i64 %t718, %t720 + br i1 %t721, label %range373, label %inrange374 +range373: + call void @finch_panic_index(ptr @.str.225, i64 267, i64 %t718, i64 %t720) + unreachable +inrange374: + %t722 = extractvalue { ptr, i64, i64 } %t719, 0 + %t723 = getelementptr inbounds { ptr, i64, i64 }, ptr %t722, i64 %t718 + %t724 = load { ptr, i64, i64 }, ptr %t723 + store { ptr, i64, i64 } %t724, ptr %a725 + call void @finch_str_copy(ptr %a726, ptr %a725) + %t727 = load { ptr, i64, i64 }, ptr %a726 + %t728 = load i64, ptr %t716 + %t729 = add i64 %t728, 1 + call void @finch_arr_reserve(ptr %a633, i64 %t729, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t730 = load ptr, ptr %a633 + %t731 = getelementptr inbounds { ptr, i64, i64 }, ptr %t730, i64 %t728 + store { ptr, i64, i64 } %t727, ptr %t731 + store i64 %t729, ptr %t716 + %t732 = getelementptr inbounds { ptr, i64, i64 }, ptr %a632, i32 0, i32 1 + %t733 = getelementptr inbounds %S.ast.Program, ptr %a653, i32 0, i32 3 + %t734 = load i64, ptr %a688 + %t735 = load { ptr, i64, i64 }, ptr %t733 + %t736 = extractvalue { ptr, i64, i64 } %t735, 1 + %t737 = icmp uge i64 %t734, %t736 + br i1 %t737, label %range375, label %inrange376 +range375: + call void @finch_panic_index(ptr @.str.226, i64 268, i64 %t734, i64 %t736) + unreachable +inrange376: + %t738 = extractvalue { ptr, i64, i64 } %t735, 0 + %t739 = getelementptr inbounds { ptr, i64, i64 }, ptr %t738, i64 %t734 + %t740 = load { ptr, i64, i64 }, ptr %t739 + store { ptr, i64, i64 } %t740, ptr %a741 + call void @finch_str_copy(ptr %a742, ptr %a741) + %t743 = load { ptr, i64, i64 }, ptr %a742 + %t744 = insertvalue %S.cimport.Header zeroinitializer, { ptr, i64, i64 } %t743, 0 + %t745 = getelementptr inbounds %S.ast.Program, ptr %a653, i32 0, i32 4 + %t746 = load i64, ptr %a688 + %t747 = load { ptr, i64, i64 }, ptr %t745 + %t748 = extractvalue { ptr, i64, i64 } %t747, 1 + %t749 = icmp uge i64 %t746, %t748 + br i1 %t749, label %range377, label %inrange378 +range377: + call void @finch_panic_index(ptr @.str.227, i64 268, i64 %t746, i64 %t748) + unreachable +inrange378: + %t750 = extractvalue { ptr, i64, i64 } %t747, 0 + %t751 = getelementptr inbounds { ptr, i64, i64 }, ptr %t750, i64 %t746 + %t752 = load { ptr, i64, i64 }, ptr %t751 + store { ptr, i64, i64 } %t752, ptr %a753 + call void @finch_str_copy(ptr %a754, ptr %a753) + %t755 = load { ptr, i64, i64 }, ptr %a754 + %t756 = insertvalue %S.cimport.Header %t744, { ptr, i64, i64 } %t755, 1 + %t757 = load i64, ptr %t732 + %t758 = add i64 %t757, 1 + call void @finch_arr_reserve(ptr %a632, i64 %t758, i64 ptrtoint (ptr getelementptr (%S.cimport.Header, ptr null, i32 1) to i64)) + %t759 = load ptr, ptr %a632 + %t760 = getelementptr inbounds %S.cimport.Header, ptr %t759, i64 %t757 + store %S.cimport.Header %t756, ptr %t760 + store i64 %t758, ptr %t732 + br label %endif372 +endif372: + br label %for.step361 +for.step361: + %t761 = load i64, ptr %a688 + %t762 = add i64 %t761, 1 + store i64 %t762, ptr %a688 + br label %for.cond359 +for.end362: + %t763 = getelementptr inbounds %S.ast.Program, ptr %a653, i32 0, i32 5 + store i64 0, ptr %a764 + br label %each.cond379 +each.cond379: + %t765 = getelementptr inbounds { ptr, i64, i64 }, ptr %t763, i32 0, i32 1 + %t766 = load i64, ptr %t765 + %t767 = load i64, ptr %a764 + %t768 = icmp slt i64 %t767, %t766 + br i1 %t768, label %each.body380, label %each.end382 +each.body380: + %t769 = load ptr, ptr %t763 + %t770 = getelementptr inbounds { ptr, i64, i64 }, ptr %t769, i64 %t767 + %t771 = load { ptr, i64, i64 }, ptr %t770 + store { ptr, i64, i64 } %t771, ptr %a772 + %t773 = load { ptr, i64, i64 }, ptr %a772 + store { ptr, i64, i64 } %t773, ptr %a774 + store { ptr, i64, i64 } { ptr @.str.229, i64 2, i64 0 }, ptr %a776 + %t777 = call i32 @finch_str_ends(ptr %a774, 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 -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 - 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 + br label %logic.from383 +logic.from383: + br i1 %t778, label %logic.end385, label %logic.rhs384 +logic.rhs384: + %t779 = load { ptr, i64, i64 }, ptr %a772 + store { ptr, i64, i64 } %t779, ptr %a780 + store { ptr, i64, i64 } { ptr @.str.231, i64 2, i64 0 }, ptr %a782 + %t783 = call i32 @finch_str_ends(ptr %a780, ptr %a782) + %t784 = icmp ne i32 %t783, 0 + br label %logic.rend386 +logic.rend386: + br label %logic.end385 +logic.end385: + %t785 = phi i1 [ true, %logic.from383 ], [ %t784, %logic.rend386 ] + br label %logic.from387 +logic.from387: + br i1 %t785, label %logic.end389, label %logic.rhs388 +logic.rhs388: + %t786 = load { ptr, i64, i64 }, ptr %a772 + store { ptr, i64, i64 } %t786, ptr %a787 + store { ptr, i64, i64 } { ptr @.str.233, i64 2, i64 0 }, ptr %a789 + %t790 = call i32 @finch_str_ends(ptr %a787, ptr %a789) + %t791 = icmp ne i32 %t790, 0 + br label %logic.rend390 +logic.rend390: + br label %logic.end389 +logic.end389: + %t792 = phi i1 [ true, %logic.from387 ], [ %t791, %logic.rend390 ] + br i1 %t792, label %then391, label %else392 +then391: + %t793 = getelementptr inbounds { ptr, i64, i64 }, ptr %a643, i32 0, i32 1 + %t794 = load { ptr, i64, i64 }, ptr %a657 + store { ptr, i64, i64 } %t794, ptr %a796 + store { ptr, i64, i64 } { ptr @.str.234, i64 1, i64 0 }, ptr %a797 + call void @finch_str_concat(ptr %a795, ptr %a796, ptr %a797) + %t798 = load { ptr, i64, i64 }, ptr %a795 + %t799 = load { ptr, i64, i64 }, ptr %a772 + store { ptr, i64, i64 } %t798, ptr %a801 + store { ptr, i64, i64 } %t799, ptr %a802 + call void @finch_str_concat(ptr %a800, ptr %a801, ptr %a802) + store { ptr, i64, i64 } %t798, ptr %a803 + call void @finch_str_drop(ptr %a803) + %t804 = load { ptr, i64, i64 }, ptr %a800 + %t805 = load i64, ptr %t793 + %t806 = add i64 %t805, 1 + call void @finch_arr_reserve(ptr %a643, i64 %t806, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t807 = load ptr, ptr %a643 + %t808 = getelementptr inbounds { ptr, i64, i64 }, ptr %t807, i64 %t805 + store { ptr, i64, i64 } %t804, ptr %t808 + store i64 %t806, ptr %t793 + br label %endif393 +else392: + %t809 = getelementptr inbounds { ptr, i64, i64 }, ptr %a643, i32 0, i32 1 + %t810 = load { ptr, i64, i64 }, ptr %a772 + store { ptr, i64, i64 } %t810, ptr %a811 + call void @finch_str_copy(ptr %a812, ptr %a811) + %t813 = load { ptr, i64, i64 }, ptr %a812 + %t814 = load i64, ptr %t809 + %t815 = add i64 %t814, 1 + call void @finch_arr_reserve(ptr %a643, i64 %t815, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t816 = load ptr, ptr %a643 + %t817 = getelementptr inbounds { ptr, i64, i64 }, ptr %t816, i64 %t814 + store { ptr, i64, i64 } %t813, ptr %t817 + store i64 %t815, ptr %t809 + br label %endif393 +endif393: + br label %each.step381 +each.step381: + %t818 = load i64, ptr %a764 + %t819 = add i64 %t818, 1 + store i64 %t819, ptr %a764 + br label %each.cond379 +each.end382: + call void @finch_str_drop(ptr %a657) + br label %each.step349 +each.step349: + %t820 = load i64, ptr %a645 + %t821 = add i64 %t820, 1 + store i64 %t821, ptr %a645 + br label %each.cond347 +each.end350: + store { ptr, i64, i64 } { ptr @.str.235, i64 0, i64 0 }, ptr %a822 + %t823 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 5 + %t824 = load i1, ptr %t823 + br i1 %t824, label %then394, label %endif396 +then394: + %t825 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 0 + %t826 = load { ptr, i64, i64 }, ptr %t825 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) + call void @finch_str_copy(ptr %a828, ptr %a827) + %t829 = load { ptr, i64, i64 }, ptr %a828 + %t830 = load { ptr, i64, i64 }, ptr %a822 + store { ptr, i64, i64 } %t829, ptr %a822 + store { ptr, i64, i64 } %t830, ptr %a831 + call void @finch_str_drop(ptr %a831) + br label %endif396 +endif396: + %t832 = load { ptr, i64, i64 }, ptr %a632 + %t833 = load { ptr, i64, i64 }, ptr %a638 + %t834 = load { ptr, i64, i64 }, ptr %a822 + %t835 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 1 + %t836 = load i1, ptr %t835 + %t837 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 7 + %t838 = load { ptr, i64, i64 }, ptr %t837 + %t839 = call { i1, %S.cimport.CImports, { ptr, i64, i64 } } @finch.cimport.importHeaders({ ptr, i64, i64 } %t832, { ptr, i64, i64 } %t833, { ptr, i64, i64 } %t834, i1 %t836, { ptr, i64, i64 } %t838) + %t840 = extractvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t839, 0 + %t841 = xor i1 %t840, true + %t842 = extractvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t839, 2 + %t843 = extractvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t839, 1 + br i1 %t841, label %or.failed397, label %or.ok398 +or.failed397: + store { ptr, i64, i64 } %t842, ptr %a844 + %t845 = load { ptr, i64, i64 }, ptr %a844 + %t846 = extractvalue { ptr, i64, i64 } %t845, 1 + %t847 = trunc i64 %t846 to i32 + %t848 = extractvalue { ptr, i64, i64 } %t845, 0 + %t849 = icmp eq ptr %t848, null + %t850 = select i1 %t849, ptr @.str.236, ptr %t848 + %t851 = call i32 (ptr, ...) @printf(ptr @.str.237, i32 %t847, ptr %t850) + %t852 = call i32 (ptr, ...) @printf(ptr @.str.238) + call void @finch_str_drop(ptr %a844) + call void @finch_str_drop(ptr %a822) + call void @finch.drop.arr_str(ptr %a643) + call void @finch.drop.arr_str(ptr %a638) + call void @finch.drop.arr_str(ptr %a633) + call void @finch.drop.arr_S_cimport_Header(ptr %a632) + call void @finch.drop.S_main_Loader(ptr %a474) + call void @finch.drop.S_platform_Target(ptr %a381) + call void @finch.drop.arr_str(ptr %a113) + call void @finch.drop.arr_str(ptr %a112) + call void @finch.drop.arr_str(ptr %a111) + call void @finch.drop.arr_str(ptr %a110) + call void @finch.drop.arr_str(ptr %a109) + call void @finch_str_drop(ptr %a108) + call void @finch_str_drop(ptr %a107) + call void @finch_str_drop(ptr %a103) + call void @finch_str_drop(ptr %a77) + call void @finch_str_drop(ptr %a67) + ret i64 1 +or.ok398: + store %S.cimport.CImports %t843, ptr %a853 + %t854 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 0 + %t855 = load { ptr, i64, i64 }, ptr %t854 + %t856 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 1 + %t857 = load { ptr, i64, i64 }, ptr %t856 + %t858 = load %S.cimport.CImports, ptr %a853 + %t859 = load i1, ptr %a105 + %t860 = insertvalue %S.gen.Options zeroinitializer, i1 %t859, 0 + %t861 = load { ptr, i64, i64 }, ptr %a67 + store { ptr, i64, i64 } %t861, ptr %a862 + store { ptr, i64, i64 } { ptr @.str.239, i64 5, i64 0 }, ptr %a863 + %t864 = call i32 @finch_str_eq(ptr %a862, 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 + %t866 = insertvalue %S.gen.Options %t860, i1 %t865, 1 + %t867 = load i1, ptr %a106 + %t868 = insertvalue %S.gen.Options %t866, i1 %t867, 2 + %t869 = call { ptr, i64, i64 } @finch.host.cwd() + %t870 = insertvalue %S.gen.Options %t868, { ptr, i64, i64 } %t869, 3 + %t871 = load %S.platform.Target, ptr %a381 + store %S.platform.Target %t871, ptr %a872 + call void @finch.copy.S_platform_Target(ptr %a873, ptr %a872) + %t874 = load %S.platform.Target, ptr %a873 + %t875 = insertvalue %S.gen.Options %t870, %S.platform.Target %t874, 4 + %t876 = call { ptr, i64, i64 } @finch.gen.generate({ ptr, i64, i64 } %t855, { ptr, i64, i64 } %t857, %S.cimport.CImports %t858, %S.gen.Options %t875) + store %S.gen.Options %t875, ptr %a877 + call void @finch.drop.S_gen_Options(ptr %a877) + store { ptr, i64, i64 } %t876, ptr %a878 + %t879 = load { ptr, i64, i64 }, ptr %a67 + store { ptr, i64, i64 } %t879, ptr %a880 + store { ptr, i64, i64 } { ptr @.str.240, i64 2, i64 0 }, ptr %a881 + %t882 = call i32 @finch_str_eq(ptr %a880, ptr %a881) + %t883 = icmp ne i32 %t882, 0 + br label %logic.from405 +logic.from405: + br i1 %t883, label %logic.end407, label %logic.rhs406 +logic.rhs406: + %t884 = load { ptr, i64, i64 }, ptr %a67 + store { ptr, i64, i64 } %t884, ptr %a885 + store { ptr, i64, i64 } { ptr @.str.241, i64 5, i64 0 }, ptr %a886 + %t887 = call i32 @finch_str_eq(ptr %a885, ptr %a886) + %t888 = icmp ne i32 %t887, 0 + br label %logic.rend408 +logic.rend408: + br label %logic.end407 +logic.end407: + %t889 = phi i1 [ true, %logic.from405 ], [ %t888, %logic.rend408 ] + br i1 %t889, label %then409, label %endif411 +then409: + %t890 = load { ptr, i64, i64 }, ptr %a878 + %t891 = extractvalue { ptr, i64, i64 } %t890, 1 + %t892 = trunc i64 %t891 to i32 + %t893 = extractvalue { ptr, i64, i64 } %t890, 0 + %t894 = icmp eq ptr %t893, null + %t895 = select i1 %t894, ptr @.str.242, ptr %t893 + %t896 = call i32 (ptr, ...) @printf(ptr @.str.243, i32 %t892, ptr %t895) + %t897 = call i32 (ptr, ...) @printf(ptr @.str.244) + call void @finch_str_drop(ptr %a878) + call void @finch.drop.S_cimport_CImports(ptr %a853) + call void @finch_str_drop(ptr %a822) + call void @finch.drop.arr_str(ptr %a643) + call void @finch.drop.arr_str(ptr %a638) + call void @finch.drop.arr_str(ptr %a633) + call void @finch.drop.arr_S_cimport_Header(ptr %a632) + call void @finch.drop.S_main_Loader(ptr %a474) + call void @finch.drop.S_platform_Target(ptr %a381) + call void @finch.drop.arr_str(ptr %a113) + call void @finch.drop.arr_str(ptr %a112) + call void @finch.drop.arr_str(ptr %a111) + call void @finch.drop.arr_str(ptr %a110) + call void @finch.drop.arr_str(ptr %a109) + call void @finch_str_drop(ptr %a108) + call void @finch_str_drop(ptr %a107) + call void @finch_str_drop(ptr %a103) + call void @finch_str_drop(ptr %a77) + call void @finch_str_drop(ptr %a67) + ret i64 0 +endif411: + %t898 = extractvalue { ptr, i64, i64 } { ptr @.str.245, i64 8, i64 0 }, 0 + %t899 = icmp eq ptr %t898, null + %t900 = select i1 %t899, ptr @.str.246, ptr %t898 + %t901 = call ptr @getenv(ptr %t900) + store { ptr, i64, i64 } zeroinitializer, ptr %a902 + call void @finch_str_from_c(ptr %a902, ptr %t901) + %t903 = load { ptr, i64, i64 }, ptr %a902 + store { ptr, i64, i64 } %t903, ptr %a904 + call void @finch_str_copy(ptr %a905, ptr %a904) + %t906 = load { ptr, i64, i64 }, ptr %a905 + store { ptr, i64, i64 } %t906, ptr %a907 + %t908 = getelementptr inbounds { ptr, i64, i64 }, ptr %a907, i32 0, i32 1 + %t909 = load i64, ptr %t908 + %t910 = icmp eq i64 %t909, 0 + br i1 %t910, label %then435, label %endif437 +then435: + %t911 = load { ptr, i64, i64 }, ptr %a1 + %t912 = extractvalue { ptr, i64, i64 } %t911, 1 + %t913 = icmp uge i64 0, %t912 + br i1 %t913, label %range438, label %inrange439 +range438: + call void @finch_panic_index(ptr @.str.247, i64 296, i64 0, i64 %t912) + unreachable +inrange439: + %t914 = extractvalue { ptr, i64, i64 } %t911, 0 + %t915 = getelementptr inbounds { ptr, i64, i64 }, ptr %t914, i64 0 + %t916 = load { ptr, i64, i64 }, ptr %t915 + %t917 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t916) + store { ptr, i64, i64 } %t917, ptr %a919 + store { ptr, i64, i64 } { ptr @.str.248, i64 22, i64 0 }, ptr %a920 + call void @finch_str_concat(ptr %a918, ptr %a919, ptr %a920) + store { ptr, i64, i64 } %t917, ptr %a921 + call void @finch_str_drop(ptr %a921) + %t922 = load { ptr, i64, i64 }, ptr %a918 + %t923 = load { ptr, i64, i64 }, ptr %a907 + store { ptr, i64, i64 } %t922, ptr %a907 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: + call void @finch_str_drop(ptr %a924) + br label %endif437 +endif437: + %t925 = load { ptr, i64, i64 }, ptr %a907 + store { ptr, i64, i64 } %t925, ptr %a926 + %t927 = call i32 @finch_file_exists(ptr %a926) + %t928 = icmp ne i32 %t927, 0 + %t929 = xor i1 %t928, true + br i1 %t929, label %then440, label %endif442 +then440: + %t930 = load { ptr, i64, i64 }, ptr %a1 + %t931 = extractvalue { ptr, i64, i64 } %t930, 1 + %t932 = icmp uge i64 0, %t931 + br i1 %t932, label %range443, label %inrange444 +range443: + call void @finch_panic_index(ptr @.str.249, i64 299, i64 0, i64 %t931) + unreachable +inrange444: + %t933 = extractvalue { ptr, i64, i64 } %t930, 0 + %t934 = getelementptr inbounds { ptr, i64, i64 }, ptr %t933, i64 0 + %t935 = load { ptr, i64, i64 }, ptr %t934 + %t936 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t935) + store { ptr, i64, i64 } %t936, ptr %a938 + store { ptr, i64, i64 } { ptr @.str.250, i64 19, i64 0 }, ptr %a939 + call void @finch_str_concat(ptr %a937, ptr %a938, ptr %a939) + store { ptr, i64, i64 } %t936, ptr %a940 + call void @finch_str_drop(ptr %a940) + %t941 = load { ptr, i64, i64 }, ptr %a937 + %t942 = load { ptr, i64, i64 }, ptr %a907 + store { ptr, i64, i64 } %t941, ptr %a907 + store { ptr, i64, i64 } %t942, ptr %a943 + call void @finch_str_drop(ptr %a943) + br label %endif442 +endif442: + %t944 = load { ptr, i64, i64 }, ptr %a907 + store { ptr, i64, i64 } %t944, ptr %a945 + %t946 = call i32 @finch_file_exists(ptr %a945) + %t947 = icmp ne i32 %t946, 0 + %t948 = xor i1 %t947, true + br i1 %t948, label %then445, label %endif447 +then445: + %t949 = load { ptr, i64, i64 }, ptr %a1 + %t950 = extractvalue { ptr, i64, i64 } %t949, 1 + %t951 = icmp uge i64 0, %t950 + br i1 %t951, label %range448, label %inrange449 +range448: + call void @finch_panic_index(ptr @.str.251, i64 302, i64 0, i64 %t950) + unreachable +inrange449: + %t952 = extractvalue { ptr, i64, i64 } %t949, 0 + %t953 = getelementptr inbounds { ptr, i64, i64 }, ptr %t952, i64 0 + %t954 = load { ptr, i64, i64 }, ptr %t953 + %t955 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t954) + store { ptr, i64, i64 } %t955, ptr %a957 + store { ptr, i64, i64 } { ptr @.str.252, i64 34, i64 0 }, ptr %a958 + call void @finch_str_concat(ptr %a956, ptr %a957, ptr %a958) + store { ptr, i64, i64 } %t955, ptr %a959 + call void @finch_str_drop(ptr %a959) + %t960 = load { ptr, i64, i64 }, ptr %a956 + %t961 = load { ptr, i64, i64 }, ptr %a907 + store { ptr, i64, i64 } %t960, ptr %a907 + store { ptr, i64, i64 } %t961, ptr %a962 + call void @finch_str_drop(ptr %a962) + br label %endif447 +endif447: + %t963 = load { ptr, i64, i64 }, ptr %a907 + store { ptr, i64, i64 } %t963, ptr %a964 + %t965 = call i32 @finch_file_exists(ptr %a964) + %t966 = icmp ne i32 %t965, 0 + %t967 = xor i1 %t966, true + br label %logic.from450 +logic.from450: + br i1 %t967, label %logic.rhs451, label %logic.end452 +logic.rhs451: + store { ptr, i64, i64 } { ptr @.str.253, i64 18, i64 0 }, ptr %a968 + %t969 = call i32 @finch_file_exists(ptr %a968) + %t970 = icmp ne i32 %t969, 0 + br label %logic.rend453 +logic.rend453: + br label %logic.end452 +logic.end452: + %t971 = phi i1 [ false, %logic.from450 ], [ %t970, %logic.rend453 ] + br i1 %t971, label %then454, label %endif456 +then454: + %t972 = load { ptr, i64, i64 }, ptr %a907 + store { ptr, i64, i64 } { ptr @.str.254, i64 18, i64 0 }, ptr %a907 + store { ptr, i64, i64 } %t972, ptr %a973 + call void @finch_str_drop(ptr %a973) + br label %endif456 +endif456: + %t974 = load { ptr, i64, i64 }, ptr %a907 + store { ptr, i64, i64 } %t974, ptr %a975 + %t976 = call i32 @finch_file_exists(ptr %a975) + %t977 = icmp ne i32 %t976, 0 + %t978 = xor i1 %t977, true + br i1 %t978, label %then457, label %endif459 +then457: + %t979 = call { ptr, i64, i64 } @finch.main.unpack() + store { ptr, i64, i64 } %t979, ptr %a981 + store { ptr, i64, i64 } { ptr @.str.255, i64 19, i64 0 }, ptr %a982 + call void @finch_str_concat(ptr %a980, ptr %a981, ptr %a982) + store { ptr, i64, i64 } %t979, ptr %a983 + call void @finch_str_drop(ptr %a983) + %t984 = load { ptr, i64, i64 }, ptr %a980 + %t985 = load { ptr, i64, i64 }, ptr %a907 + store { ptr, i64, i64 } %t984, ptr %a907 + store { ptr, i64, i64 } %t985, ptr %a986 + call void @finch_str_drop(ptr %a986) + br label %endif459 +endif459: + store { ptr, i64, i64 } { ptr @.str.256, i64 0, i64 0 }, ptr %a987 + %t988 = load i1, ptr %a105 + br i1 %t988, label %then460, label %endif462 +then460: + %t989 = load { ptr, i64, i64 }, ptr %a987 + store { ptr, i64, i64 } { ptr @.str.257, i64 6, i64 0 }, ptr %a987 + store { ptr, i64, i64 } %t989, ptr %a990 + call void @finch_str_drop(ptr %a990) + br label %endif462 +endif462: + %t991 = load i1, ptr %a106 + br i1 %t991, label %then463, label %endif465 +then463: + %t992 = load { ptr, i64, i64 }, ptr %a987 + store { ptr, i64, i64 } %t992, ptr %a994 + store { ptr, i64, i64 } { ptr @.str.258, i64 3, i64 0 }, ptr %a995 + call void @finch_str_concat(ptr %a993, ptr %a994, ptr %a995) + %t996 = load { ptr, i64, i64 }, ptr %a993 + %t997 = load { ptr, i64, i64 }, ptr %a987 + store { ptr, i64, i64 } %t996, ptr %a987 + store { ptr, i64, i64 } %t997, ptr %a998 + call void @finch_str_drop(ptr %a998) + br label %endif465 +endif465: + %t999 = load { ptr, i64, i64 }, ptr %a103 + store { ptr, i64, i64 } %t999, ptr %a1000 + call void @finch_str_copy(ptr %a1001, ptr %a1000) + %t1002 = load { ptr, i64, i64 }, ptr %a1001 + %t1003 = insertvalue %S.linker.Build zeroinitializer, { ptr, i64, i64 } %t1002, 0 + %t1004 = load { ptr, i64, i64 }, ptr %a878 + store { ptr, i64, i64 } %t1004, ptr %a1005 + call void @finch_str_copy(ptr %a1006, ptr %a1005) + %t1007 = load { ptr, i64, i64 }, ptr %a1006 + %t1008 = insertvalue %S.linker.Build %t1003, { ptr, i64, i64 } %t1007, 1 + %t1009 = load { ptr, i64, i64 }, ptr %a907 + store { ptr, i64, i64 } %t1009, ptr %a1010 + call void @finch_str_copy(ptr %a1011, ptr %a1010) + %t1012 = load { ptr, i64, i64 }, ptr %a1011 + %t1013 = insertvalue %S.linker.Build %t1008, { ptr, i64, i64 } %t1012, 2 + %t1014 = load { ptr, i64, i64 }, ptr %a108 + store { ptr, i64, i64 } %t1014, ptr %a1015 + call void @finch_str_copy(ptr %a1016, ptr %a1015) + %t1017 = load { ptr, i64, i64 }, ptr %a1016 + %t1018 = insertvalue %S.linker.Build %t1013, { ptr, i64, i64 } %t1017, 3 + %t1019 = load { ptr, i64, i64 }, ptr %a987 + store { ptr, i64, i64 } %t1019, ptr %a1020 + call void @finch_str_copy(ptr %a1021, ptr %a1020) + %t1022 = load { ptr, i64, i64 }, ptr %a1021 + %t1023 = insertvalue %S.linker.Build %t1018, { ptr, i64, i64 } %t1022, 4 + %t1024 = load i1, ptr %a105 + %t1025 = insertvalue %S.linker.Build %t1023, i1 %t1024, 5 + %t1026 = load { ptr, i64, i64 }, ptr %a643 + store { ptr, i64, i64 } %t1026, ptr %a1027 + call void @finch.copy.arr_str(ptr %a1028, ptr %a1027) + %t1029 = load { ptr, i64, i64 }, ptr %a1028 + %t1030 = insertvalue %S.linker.Build %t1025, { ptr, i64, i64 } %t1029, 6 + %t1031 = load %S.platform.Target, ptr %a381 + %t1032 = load %S.cimport.CImports, ptr %a853 + %t1033 = call i64 @finch.linker.build(%S.linker.Build %t1030, %S.platform.Target %t1031, %S.cimport.CImports %t1032) + store %S.linker.Build %t1030, ptr %a1034 + call void @finch.drop.S_linker_Build(ptr %a1034) + %t1035 = icmp ne i64 %t1033, 0 + br i1 %t1035, label %then466, label %endif468 +then466: + call void @finch_str_drop(ptr %a987) + call void @finch_str_drop(ptr %a907) + call void @finch_str_drop(ptr %a878) + call void @finch.drop.S_cimport_CImports(ptr %a853) + call void @finch_str_drop(ptr %a822) + call void @finch.drop.arr_str(ptr %a643) + call void @finch.drop.arr_str(ptr %a638) + call void @finch.drop.arr_str(ptr %a633) + call void @finch.drop.arr_S_cimport_Header(ptr %a632) + call void @finch.drop.S_main_Loader(ptr %a474) + call void @finch.drop.S_platform_Target(ptr %a381) + call void @finch.drop.arr_str(ptr %a113) + call void @finch.drop.arr_str(ptr %a112) + call void @finch.drop.arr_str(ptr %a111) + call void @finch.drop.arr_str(ptr %a110) + call void @finch.drop.arr_str(ptr %a109) + call void @finch_str_drop(ptr %a108) + call void @finch_str_drop(ptr %a107) + call void @finch_str_drop(ptr %a103) + call void @finch_str_drop(ptr %a77) + call void @finch_str_drop(ptr %a67) + ret i64 1 +endif468: + %t1036 = load { ptr, i64, i64 }, ptr %a67 + store { ptr, i64, i64 } %t1036, ptr %a1037 + store { ptr, i64, i64 } { ptr @.str.259, i64 3, i64 0 }, ptr %a1038 + %t1039 = call i32 @finch_str_eq(ptr %a1037, ptr %a1038) + %t1040 = icmp ne i32 %t1039, 0 + br i1 %t1040, label %then469, label %endif471 +then469: + store { ptr, i64, i64 } zeroinitializer, ptr %a1041 + store i64 0, ptr %a1042 + br label %each.cond472 +each.cond472: + %t1043 = getelementptr inbounds { ptr, i64, i64 }, ptr %a113, i32 0, i32 1 + %t1044 = load i64, ptr %t1043 + %t1045 = load i64, ptr %a1042 + %t1046 = icmp slt i64 %t1045, %t1044 + br i1 %t1046, label %each.body473, label %each.end475 +each.body473: + %t1047 = load ptr, ptr %a113 + %t1048 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1047, i64 %t1045 + %t1049 = load { ptr, i64, i64 }, ptr %t1048 + store { ptr, i64, i64 } %t1049, ptr %a1050 + %t1051 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1041, i32 0, i32 1 + %t1052 = load { ptr, i64, i64 }, ptr %a1050 + %t1053 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t1052) + %t1054 = load i64, ptr %t1051 + %t1055 = add i64 %t1054, 1 + call void @finch_arr_reserve(ptr %a1041, i64 %t1055, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t1056 = load ptr, ptr %a1041 + %t1057 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1056, i64 %t1054 + store { ptr, i64, i64 } %t1053, ptr %t1057 + store i64 %t1055, ptr %t1051 + br label %each.step474 +each.step474: + %t1058 = load i64, ptr %a1042 + %t1059 = add i64 %t1058, 1 + store i64 %t1059, ptr %a1042 + br label %each.cond472 +each.end475: + %t1060 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 8 + %t1061 = load { ptr, i64, i64 }, ptr %t1060 + %t1062 = load { ptr, i64, i64 }, ptr %a103 + %t1063 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t1062) + store { ptr, i64, i64 } %t1061, ptr %a1065 + store { ptr, i64, i64 } %t1063, ptr %a1066 + call void @finch_str_concat(ptr %a1064, ptr %a1065, ptr %a1066) + store { ptr, i64, i64 } %t1063, ptr %a1067 + call void @finch_str_drop(ptr %a1067) + %t1068 = load { ptr, i64, i64 }, ptr %a1064 + store { ptr, i64, i64 } %t1068, ptr %a1070 + store { ptr, i64, i64 } { ptr @.str.260, i64 1, i64 0 }, ptr %a1071 + call void @finch_str_concat(ptr %a1069, ptr %a1070, ptr %a1071) + store { ptr, i64, i64 } %t1068, ptr %a1072 + call void @finch_str_drop(ptr %a1072) + %t1073 = load { ptr, i64, i64 }, ptr %a1069 + %t1074 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1041, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.261, i64 1, i64 0 }, ptr %a1075 + call void @finch_str_join(ptr %a1076, ptr %a1041, ptr %a1075) + %t1077 = load { ptr, i64, i64 }, ptr %a1076 + store { ptr, i64, i64 } %t1073, ptr %a1079 + store { ptr, i64, i64 } %t1077, ptr %a1080 + call void @finch_str_concat(ptr %a1078, ptr %a1079, ptr %a1080) + store { ptr, i64, i64 } %t1073, ptr %a1081 + call void @finch_str_drop(ptr %a1081) + store { ptr, i64, i64 } %t1077, ptr %a1082 + call void @finch_str_drop(ptr %a1082) + %t1083 = load { ptr, i64, i64 }, ptr %a1078 + %t1084 = call i64 @finch.host.run({ ptr, i64, i64 } %t1083) + store { ptr, i64, i64 } %t1083, ptr %a1085 + call void @finch_str_drop(ptr %a1085) + store i64 %t1084, ptr %a1086 + %t1087 = load { ptr, i64, i64 }, ptr %a103 + call void @finch.host.remove({ ptr, i64, i64 } %t1087) + %t1088 = load i64, ptr %a1086 + call void @finch.drop.arr_str(ptr %a1041) + call void @finch_str_drop(ptr %a987) + call void @finch_str_drop(ptr %a907) + call void @finch_str_drop(ptr %a878) + call void @finch.drop.S_cimport_CImports(ptr %a853) + call void @finch_str_drop(ptr %a822) + call void @finch.drop.arr_str(ptr %a643) + call void @finch.drop.arr_str(ptr %a638) + call void @finch.drop.arr_str(ptr %a633) + call void @finch.drop.arr_S_cimport_Header(ptr %a632) + call void @finch.drop.S_main_Loader(ptr %a474) + call void @finch.drop.S_platform_Target(ptr %a381) + call void @finch.drop.arr_str(ptr %a113) + call void @finch.drop.arr_str(ptr %a112) + call void @finch.drop.arr_str(ptr %a111) + call void @finch.drop.arr_str(ptr %a110) + call void @finch.drop.arr_str(ptr %a109) + call void @finch_str_drop(ptr %a108) + call void @finch_str_drop(ptr %a107) + call void @finch_str_drop(ptr %a103) + call void @finch_str_drop(ptr %a77) + call void @finch_str_drop(ptr %a67) + ret i64 %t1088 +endif471: + call void @finch_str_drop(ptr %a987) + call void @finch_str_drop(ptr %a907) + call void @finch_str_drop(ptr %a878) + call void @finch.drop.S_cimport_CImports(ptr %a853) + call void @finch_str_drop(ptr %a822) + call void @finch.drop.arr_str(ptr %a643) + call void @finch.drop.arr_str(ptr %a638) + call void @finch.drop.arr_str(ptr %a633) + call void @finch.drop.arr_S_cimport_Header(ptr %a632) + call void @finch.drop.S_main_Loader(ptr %a474) + call void @finch.drop.S_platform_Target(ptr %a381) + call void @finch.drop.arr_str(ptr %a113) + call void @finch.drop.arr_str(ptr %a112) + call void @finch.drop.arr_str(ptr %a111) + call void @finch.drop.arr_str(ptr %a110) + call void @finch.drop.arr_str(ptr %a109) + call void @finch_str_drop(ptr %a108) + call void @finch_str_drop(ptr %a107) + call void @finch_str_drop(ptr %a103) + call void @finch_str_drop(ptr %a77) + call void @finch_str_drop(ptr %a67) ret i64 0 } @@ -10604,50 +12063,50 @@ entry: store i8 %p0, ptr %a1 %t2 = load i8, ptr %a1 %t3 = icmp uge i8 %t2, 97 - br label %logic.from412 -logic.from412: - br i1 %t3, label %logic.rhs413, label %logic.end414 -logic.rhs413: + br label %logic.from476 +logic.from476: + br i1 %t3, label %logic.rhs477, label %logic.end478 +logic.rhs477: %t4 = load i8, ptr %a1 %t5 = icmp ule i8 %t4, 122 - 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: + br label %logic.rend479 +logic.rend479: + br label %logic.end478 +logic.end478: + %t6 = phi i1 [ false, %logic.from476 ], [ %t5, %logic.rend479 ] + br label %logic.from480 +logic.from480: + br i1 %t6, label %logic.end482, label %logic.rhs481 +logic.rhs481: %t7 = load i8, ptr %a1 %t8 = icmp uge i8 %t7, 65 - br label %logic.from419 -logic.from419: - br i1 %t8, label %logic.rhs420, label %logic.end421 -logic.rhs420: + br label %logic.from483 +logic.from483: + br i1 %t8, label %logic.rhs484, label %logic.end485 +logic.rhs484: %t9 = load i8, ptr %a1 %t10 = icmp ule i8 %t9, 90 - 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: + br label %logic.rend486 +logic.rend486: + br label %logic.end485 +logic.end485: + %t11 = phi i1 [ false, %logic.from483 ], [ %t10, %logic.rend486 ] + br label %logic.rend487 +logic.rend487: + br label %logic.end482 +logic.end482: + %t12 = phi i1 [ true, %logic.from480 ], [ %t11, %logic.rend487 ] + br label %logic.from488 +logic.from488: + br i1 %t12, label %logic.end490, label %logic.rhs489 +logic.rhs489: %t13 = load i8, ptr %a1 %t14 = icmp eq i8 %t13, 95 - br label %logic.rend427 -logic.rend427: - br label %logic.end426 -logic.end426: - %t15 = phi i1 [ true, %logic.from424 ], [ %t14, %logic.rend427 ] + br label %logic.rend491 +logic.rend491: + br label %logic.end490 +logic.end490: + %t15 = phi i1 [ true, %logic.from488 ], [ %t14, %logic.rend491 ] ret i1 %t15 } @@ -10657,17 +12116,17 @@ entry: store i8 %p0, ptr %a1 %t2 = load i8, ptr %a1 %t3 = icmp uge i8 %t2, 48 - br label %logic.from428 -logic.from428: - br i1 %t3, label %logic.rhs429, label %logic.end430 -logic.rhs429: + br label %logic.from492 +logic.from492: + br i1 %t3, label %logic.rhs493, label %logic.end494 +logic.rhs493: %t4 = load i8, ptr %a1 %t5 = icmp ule i8 %t4, 57 - br label %logic.rend431 -logic.rend431: - br label %logic.end430 -logic.end430: - %t6 = phi i1 [ false, %logic.from428 ], [ %t5, %logic.rend431 ] + br label %logic.rend495 +logic.rend495: + br label %logic.end494 +logic.end494: + %t6 = phi i1 [ false, %logic.from492 ], [ %t5, %logic.rend495 ] ret i1 %t6 } @@ -10677,50 +12136,50 @@ entry: store i8 %p0, ptr %a1 %t2 = load i8, ptr %a1 %t3 = call i1 @finch.lexer.isDigit(i8 %t2) - br label %logic.from432 -logic.from432: - br i1 %t3, label %logic.end434, label %logic.rhs433 -logic.rhs433: + br label %logic.from496 +logic.from496: + br i1 %t3, label %logic.end498, label %logic.rhs497 +logic.rhs497: %t4 = load i8, ptr %a1 %t5 = icmp uge i8 %t4, 97 - br label %logic.from435 -logic.from435: - br i1 %t5, label %logic.rhs436, label %logic.end437 -logic.rhs436: + br label %logic.from499 +logic.from499: + br i1 %t5, label %logic.rhs500, label %logic.end501 +logic.rhs500: %t6 = load i8, ptr %a1 %t7 = icmp ule i8 %t6, 102 - 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: + br label %logic.rend502 +logic.rend502: + br label %logic.end501 +logic.end501: + %t8 = phi i1 [ false, %logic.from499 ], [ %t7, %logic.rend502 ] + br label %logic.rend503 +logic.rend503: + br label %logic.end498 +logic.end498: + %t9 = phi i1 [ true, %logic.from496 ], [ %t8, %logic.rend503 ] + br label %logic.from504 +logic.from504: + br i1 %t9, label %logic.end506, label %logic.rhs505 +logic.rhs505: %t10 = load i8, ptr %a1 %t11 = icmp uge i8 %t10, 65 - br label %logic.from443 -logic.from443: - br i1 %t11, label %logic.rhs444, label %logic.end445 -logic.rhs444: + br label %logic.from507 +logic.from507: + br i1 %t11, label %logic.rhs508, label %logic.end509 +logic.rhs508: %t12 = load i8, ptr %a1 %t13 = icmp ule i8 %t12, 70 - 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 ] + br label %logic.rend510 +logic.rend510: + br label %logic.end509 +logic.end509: + %t14 = phi i1 [ false, %logic.from507 ], [ %t13, %logic.rend510 ] + br label %logic.rend511 +logic.rend511: + br label %logic.end506 +logic.end506: + %t15 = phi i1 [ true, %logic.from504 ], [ %t14, %logic.rend511 ] ret i1 %t15 } @@ -10736,47 +12195,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.253, i64 2, i64 0 }, ptr %t4 + store { ptr, i64, i64 } { ptr @.str.262, i64 2, i64 0 }, ptr %t4 %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 - store { ptr, i64, i64 } { ptr @.str.254, i64 6, i64 0 }, ptr %t5 + store { ptr, i64, i64 } { ptr @.str.263, i64 6, i64 0 }, ptr %t5 %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2 - store { ptr, i64, i64 } { ptr @.str.255, i64 2, i64 0 }, ptr %t6 + store { ptr, i64, i64 } { ptr @.str.264, i64 2, i64 0 }, ptr %t6 %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 3 - store { ptr, i64, i64 } { ptr @.str.256, i64 4, i64 0 }, ptr %t7 + store { ptr, i64, i64 } { ptr @.str.265, i64 4, i64 0 }, ptr %t7 %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4 - store { ptr, i64, i64 } { ptr @.str.257, i64 5, i64 0 }, ptr %t8 + store { ptr, i64, i64 } { ptr @.str.266, i64 5, i64 0 }, ptr %t8 %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 5 - store { ptr, i64, i64 } { ptr @.str.258, i64 3, i64 0 }, ptr %t9 + store { ptr, i64, i64 } { ptr @.str.267, i64 3, i64 0 }, ptr %t9 %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 6 - store { ptr, i64, i64 } { ptr @.str.259, i64 2, i64 0 }, ptr %t10 + store { ptr, i64, i64 } { ptr @.str.268, i64 2, i64 0 }, ptr %t10 %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 7 - store { ptr, i64, i64 } { ptr @.str.260, i64 5, i64 0 }, ptr %t11 + store { ptr, i64, i64 } { ptr @.str.269, i64 5, i64 0 }, ptr %t11 %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 8 - store { ptr, i64, i64 } { ptr @.str.261, i64 8, i64 0 }, ptr %t12 + store { ptr, i64, i64 } { ptr @.str.270, i64 8, i64 0 }, ptr %t12 %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 9 - store { ptr, i64, i64 } { ptr @.str.262, i64 4, i64 0 }, ptr %t13 + store { ptr, i64, i64 } { ptr @.str.271, i64 4, i64 0 }, ptr %t13 %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 10 - store { ptr, i64, i64 } { ptr @.str.263, i64 5, i64 0 }, ptr %t14 + store { ptr, i64, i64 } { ptr @.str.272, i64 5, i64 0 }, ptr %t14 %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 11 - store { ptr, i64, i64 } { ptr @.str.264, i64 4, i64 0 }, ptr %t15 + store { ptr, i64, i64 } { ptr @.str.273, i64 4, i64 0 }, ptr %t15 %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 12 - store { ptr, i64, i64 } { ptr @.str.265, i64 6, i64 0 }, ptr %t16 + store { ptr, i64, i64 } { ptr @.str.274, i64 6, i64 0 }, ptr %t16 %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 13 - store { ptr, i64, i64 } { ptr @.str.266, i64 4, i64 0 }, ptr %t17 + store { ptr, i64, i64 } { ptr @.str.275, i64 4, i64 0 }, ptr %t17 %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 14 - store { ptr, i64, i64 } { ptr @.str.267, i64 6, i64 0 }, ptr %t18 + store { ptr, i64, i64 } { ptr @.str.276, i64 6, i64 0 }, ptr %t18 %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 15 - store { ptr, i64, i64 } { ptr @.str.268, i64 5, i64 0 }, ptr %t19 + store { ptr, i64, i64 } { ptr @.str.277, i64 5, i64 0 }, ptr %t19 %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 16 - store { ptr, i64, i64 } { ptr @.str.269, i64 2, i64 0 }, ptr %t20 + store { ptr, i64, i64 } { ptr @.str.278, i64 2, i64 0 }, ptr %t20 %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 17 - store { ptr, i64, i64 } { ptr @.str.270, i64 3, i64 0 }, ptr %t21 + store { ptr, i64, i64 } { ptr @.str.279, i64 3, i64 0 }, ptr %t21 %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 18 - store { ptr, i64, i64 } { ptr @.str.271, i64 4, i64 0 }, ptr %t22 + store { ptr, i64, i64 } { ptr @.str.280, i64 4, i64 0 }, ptr %t22 %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 19 - store { ptr, i64, i64 } { ptr @.str.272, i64 5, i64 0 }, ptr %t23 + store { ptr, i64, i64 } { ptr @.str.281, i64 5, i64 0 }, ptr %t23 %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 20 - store { ptr, i64, i64 } { ptr @.str.273, i64 6, i64 0 }, ptr %t24 + store { ptr, i64, i64 } { ptr @.str.282, 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 @@ -10787,29 +12246,30 @@ entry: %t32 = load i64, ptr %t29 %t33 = load ptr, ptr %a28 store i64 0, ptr %a34 - br label %find.cond448 -find.cond448: + br label %find.cond512 +find.cond512: %t35 = load i64, ptr %a34 %t36 = icmp slt i64 %t35, %t32 - br i1 %t36, label %find.body449, label %find.end452 -find.body449: + br i1 %t36, label %find.body513, label %find.end516 +find.body513: %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.hit450, label %find.next451 -find.hit450: + br i1 %t42, label %find.hit514, label %find.next515 +find.hit514: store i64 %t35, ptr %a31 - br label %find.end452 -find.next451: + br label %find.end516 +find.next515: %t43 = add i64 %t35, 1 store i64 %t43, ptr %a34 - br label %find.cond448 -find.end452: + br label %find.cond512 +find.end516: %t44 = load i64, ptr %a31 %t45 = icmp sge i64 %t44, 0 + call void @finch.drop.arr_str(ptr %a28) ret i1 %t45 } @@ -10826,34 +12286,42 @@ entry: %a16 = 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 %a20 = 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 + %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 + %a30 = 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 + %a34 = alloca { ptr, i64, i64 }, align 16 %a36 = alloca { ptr, i64, i64 }, align 16 %a37 = alloca { ptr, i64, i64 }, align 16 %a38 = alloca { ptr, i64, i64 }, align 16 + %a39 = alloca { ptr, i64, i64 }, align 16 + %a42 = 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 + %a53 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store i64 %p1, ptr %a2 store i64 %p2, ptr %a3 store { ptr, i64, i64 } %p3, ptr %a4 %t5 = load ptr, ptr %a1 %t6 = icmp eq ptr %t5, null - br i1 %t6, label %panic453, label %ok454 -panic453: - call void @finch_panic(ptr @.str.274, i64 41, ptr @.str.275) + br i1 %t6, label %panic517, label %ok518 +panic517: + call void @finch_panic(ptr @.str.283, i64 41, ptr @.str.284) unreachable -ok454: +ok518: %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.276, i64 1, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.285, 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 @@ -10862,37 +12330,53 @@ ok454: store { ptr, i64, i64 } %t12, 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.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 - call void @finch_str_from_int(ptr %a25, i64 %t24) - %t26 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t23, 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.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 - store { ptr, i64, i64 } %t34, ptr %a37 - store { ptr, i64, i64 } %t35, ptr %a38 + store { ptr, i64, i64 } %t12, ptr %a19 + call void @finch_str_drop(ptr %a19) + store { ptr, i64, i64 } %t15, ptr %a20 + call void @finch_str_drop(ptr %a20) + %t21 = load { ptr, i64, i64 }, ptr %a16 + store { ptr, i64, i64 } %t21, ptr %a23 + store { ptr, i64, i64 } { ptr @.str.286, i64 1, i64 0 }, ptr %a24 + call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) + store { ptr, i64, i64 } %t21, ptr %a25 + call void @finch_str_drop(ptr %a25) + %t26 = load { ptr, i64, i64 }, ptr %a22 + %t27 = load i64, ptr %a3 + call void @finch_str_from_int(ptr %a28, i64 %t27) + %t29 = load { ptr, i64, i64 }, ptr %a28 + store { ptr, i64, i64 } %t26, ptr %a31 + store { ptr, i64, i64 } %t29, ptr %a32 + call void @finch_str_concat(ptr %a30, ptr %a31, ptr %a32) + store { ptr, i64, i64 } %t26, ptr %a33 + call void @finch_str_drop(ptr %a33) + store { ptr, i64, i64 } %t29, ptr %a34 + call void @finch_str_drop(ptr %a34) + %t35 = load { ptr, i64, i64 }, ptr %a30 + store { ptr, i64, i64 } %t35, ptr %a37 + store { ptr, i64, i64 } { ptr @.str.287, i64 9, i64 0 }, ptr %a38 call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) - %t39 = load { ptr, i64, i64 }, ptr %a36 - %t40 = extractvalue { ptr, i64, i64 } %t39, 1 - %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.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) + store { ptr, i64, i64 } %t35, ptr %a39 + call void @finch_str_drop(ptr %a39) + %t40 = load { ptr, i64, i64 }, ptr %a36 + %t41 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t40, ptr %a43 + store { ptr, i64, i64 } %t41, ptr %a44 + call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) + store { ptr, i64, i64 } %t40, ptr %a45 + call void @finch_str_drop(ptr %a45) + %t46 = load { ptr, i64, i64 }, ptr %a42 + %t47 = extractvalue { ptr, i64, i64 } %t46, 1 + %t48 = trunc i64 %t47 to i32 + %t49 = extractvalue { ptr, i64, i64 } %t46, 0 + %t50 = icmp eq ptr %t49, null + %t51 = select i1 %t50, ptr @.str.288, ptr %t49 + %t52 = call i32 (ptr, ...) @printf(ptr @.str.289, i32 %t48, ptr %t51) + store { ptr, i64, i64 } %t46, ptr %a53 + call void @finch_str_drop(ptr %a53) + %t54 = call i32 (ptr, ...) @printf(ptr @.str.290) + %t55 = trunc i64 1 to i32 + %t56 = call i32 @fflush(ptr null) + call void @exit(i32 %t55) ret void } @@ -10904,43 +12388,43 @@ entry: store i64 %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic455, label %ok456 -panic455: - call void @finch_panic(ptr @.str.282, i64 46, ptr @.str.283) + br i1 %t4, label %panic519, label %ok520 +panic519: + call void @finch_panic(ptr @.str.291, i64 46, ptr @.str.292) unreachable -ok456: +ok520: %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 %panic457, label %ok458 -panic457: - call void @finch_panic(ptr @.str.284, i64 46, ptr @.str.285) + br i1 %t10, label %panic521, label %ok522 +panic521: + call void @finch_panic(ptr @.str.293, i64 46, ptr @.str.294) unreachable -ok458: +ok522: %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 %then459, label %endif461 -then459: + br i1 %t14, label %then523, label %endif525 +then523: %t15 = load ptr, ptr %a1 %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic462, label %ok463 -panic462: - call void @finch_panic(ptr @.str.286, i64 47, ptr @.str.287) + br i1 %t16, label %panic526, label %ok527 +panic526: + call void @finch_panic(ptr @.str.295, i64 47, ptr @.str.296) unreachable -ok463: +ok527: %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 %panic464, label %ok465 -panic464: - call void @finch_panic(ptr @.str.288, i64 47, ptr @.str.289) + br i1 %t19, label %panic528, label %ok529 +panic528: + call void @finch_panic(ptr @.str.297, i64 47, ptr @.str.298) unreachable -ok465: +ok529: %t20 = getelementptr inbounds %S.lexer.Lexer, ptr %t18, i32 0, i32 2 %t21 = load i64, ptr %t20 %t22 = load i64, ptr %a2 @@ -10948,16 +12432,16 @@ ok465: %t24 = load { ptr, i64, i64 }, ptr %t17 %t25 = extractvalue { ptr, i64, i64 } %t24, 1 %t26 = icmp uge i64 %t23, %t25 - br i1 %t26, label %range466, label %inrange467 -range466: - call void @finch_panic_index(ptr @.str.290, i64 47, i64 %t23, i64 %t25) + br i1 %t26, label %range530, label %inrange531 +range530: + call void @finch_panic_index(ptr @.str.299, i64 47, i64 %t23, i64 %t25) unreachable -inrange467: +inrange531: %t27 = extractvalue { ptr, i64, i64 } %t24, 0 %t28 = getelementptr inbounds i8, ptr %t27, i64 %t23 %t29 = load i8, ptr %t28 ret i8 %t29 -endif461: +endif525: %t30 = trunc i64 0 to i8 ret i8 %t30 } @@ -10969,96 +12453,96 @@ entry: store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic468, label %ok469 -panic468: - call void @finch_panic(ptr @.str.291, i64 53, ptr @.str.292) + br i1 %t3, label %panic532, label %ok533 +panic532: + call void @finch_panic(ptr @.str.300, i64 53, ptr @.str.301) unreachable -ok469: +ok533: %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 %panic470, label %ok471 -panic470: - call void @finch_panic(ptr @.str.293, i64 53, ptr @.str.294) + br i1 %t6, label %panic534, label %ok535 +panic534: + call void @finch_panic(ptr @.str.302, i64 53, ptr @.str.303) unreachable -ok471: +ok535: %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 %range472, label %inrange473 -range472: - call void @finch_panic_index(ptr @.str.295, i64 53, i64 %t8, i64 %t10) + br i1 %t11, label %range536, label %inrange537 +range536: + call void @finch_panic_index(ptr @.str.304, i64 53, i64 %t8, i64 %t10) unreachable -inrange473: +inrange537: %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 %then474, label %else475 -then474: + br i1 %t17, label %then538, label %else539 +then538: %t18 = load ptr, ptr %a1 %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic477, label %ok478 -panic477: - call void @finch_panic(ptr @.str.296, i64 55, ptr @.str.297) + br i1 %t19, label %panic541, label %ok542 +panic541: + call void @finch_panic(ptr @.str.305, i64 55, ptr @.str.306) unreachable -ok478: +ok542: %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 %panic479, label %ok480 -panic479: - call void @finch_panic(ptr @.str.298, i64 56, ptr @.str.299) + br i1 %t24, label %panic543, label %ok544 +panic543: + call void @finch_panic(ptr @.str.307, i64 56, ptr @.str.308) unreachable -ok480: +ok544: %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 %panic481, label %ok482 -panic481: - call void @finch_panic(ptr @.str.300, i64 57, ptr @.str.301) + br i1 %t27, label %panic545, label %ok546 +panic545: + call void @finch_panic(ptr @.str.309, i64 57, ptr @.str.310) unreachable -ok482: +ok546: %t28 = getelementptr inbounds %S.lexer.Lexer, ptr %t26, i32 0, i32 5 store i1 true, ptr %t28 - br label %endif476 -else475: + br label %endif540 +else539: %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 %then483, label %endif485 -then483: + br i1 %t32, label %then547, label %endif549 +then547: %t33 = load ptr, ptr %a1 %t34 = icmp eq ptr %t33, null - br i1 %t34, label %panic486, label %ok487 -panic486: - call void @finch_panic(ptr @.str.302, i64 59, ptr @.str.303) + br i1 %t34, label %panic550, label %ok551 +panic550: + call void @finch_panic(ptr @.str.311, i64 59, ptr @.str.312) unreachable -ok487: +ok551: %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 %endif485 -endif485: - br label %endif476 -endif476: + br label %endif549 +endif549: + br label %endif540 +endif540: %t38 = load ptr, ptr %a1 %t39 = icmp eq ptr %t38, null - br i1 %t39, label %panic488, label %ok489 -panic488: - call void @finch_panic(ptr @.str.304, i64 61, ptr @.str.305) + br i1 %t39, label %panic552, label %ok553 +panic552: + call void @finch_panic(ptr @.str.313, i64 61, ptr @.str.314) unreachable -ok489: +ok553: %t40 = getelementptr inbounds %S.lexer.Lexer, ptr %t38, i32 0, i32 2 %t41 = load i64, ptr %t40 %t42 = add i64 %t41, 1 @@ -11084,100 +12568,98 @@ entry: %a89 = alloca { ptr, i64, i64 }, align 16 %a90 = alloca { ptr, i64, i64 }, align 16 %a92 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 %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.306, i64 2, i64 0 }, ptr %t4 + store { ptr, i64, i64 } { ptr @.str.315, i64 2, i64 0 }, ptr %t4 %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 - store { ptr, i64, i64 } { ptr @.str.307, i64 2, i64 0 }, ptr %t5 + store { ptr, i64, i64 } { ptr @.str.316, i64 2, i64 0 }, ptr %t5 %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2 - store { ptr, i64, i64 } { ptr @.str.308, i64 2, i64 0 }, ptr %t6 + store { ptr, i64, i64 } { ptr @.str.317, i64 2, i64 0 }, ptr %t6 %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 3 - store { ptr, i64, i64 } { ptr @.str.309, i64 2, i64 0 }, ptr %t7 + store { ptr, i64, i64 } { ptr @.str.318, i64 2, i64 0 }, ptr %t7 %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4 - store { ptr, i64, i64 } { ptr @.str.310, i64 2, i64 0 }, ptr %t8 + store { ptr, i64, i64 } { ptr @.str.319, i64 2, i64 0 }, ptr %t8 %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 5 - store { ptr, i64, i64 } { ptr @.str.311, i64 2, i64 0 }, ptr %t9 + store { ptr, i64, i64 } { ptr @.str.320, i64 2, i64 0 }, ptr %t9 %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 6 - store { ptr, i64, i64 } { ptr @.str.312, i64 2, i64 0 }, ptr %t10 + store { ptr, i64, i64 } { ptr @.str.321, i64 2, i64 0 }, ptr %t10 %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 7 - store { ptr, i64, i64 } { ptr @.str.313, i64 2, i64 0 }, ptr %t11 + store { ptr, i64, i64 } { ptr @.str.322, i64 2, i64 0 }, ptr %t11 %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 8 - store { ptr, i64, i64 } { ptr @.str.314, i64 2, i64 0 }, ptr %t12 + store { ptr, i64, i64 } { ptr @.str.323, i64 2, i64 0 }, ptr %t12 %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 9 - store { ptr, i64, i64 } { ptr @.str.315, i64 2, i64 0 }, ptr %t13 + store { ptr, i64, i64 } { ptr @.str.324, i64 2, i64 0 }, ptr %t13 %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 10 - store { ptr, i64, i64 } { ptr @.str.316, i64 2, i64 0 }, ptr %t14 + store { ptr, i64, i64 } { ptr @.str.325, i64 2, i64 0 }, ptr %t14 %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 11 - store { ptr, i64, i64 } { ptr @.str.317, i64 2, i64 0 }, ptr %t15 + store { ptr, i64, i64 } { ptr @.str.326, i64 2, i64 0 }, ptr %t15 %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 12 - store { ptr, i64, i64 } { ptr @.str.318, i64 2, i64 0 }, ptr %t16 + store { ptr, i64, i64 } { ptr @.str.327, i64 2, i64 0 }, ptr %t16 %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 13 - store { ptr, i64, i64 } { ptr @.str.319, i64 2, i64 0 }, ptr %t17 + store { ptr, i64, i64 } { ptr @.str.328, i64 2, i64 0 }, ptr %t17 %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 14 - store { ptr, i64, i64 } { ptr @.str.320, i64 2, i64 0 }, ptr %t18 + store { ptr, i64, i64 } { ptr @.str.329, i64 2, i64 0 }, ptr %t18 %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 15 - store { ptr, i64, i64 } { ptr @.str.321, i64 2, i64 0 }, ptr %t19 + store { ptr, i64, i64 } { ptr @.str.330, 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 %panic490, label %ok491 -panic490: - call void @finch_panic(ptr @.str.322, i64 67, ptr @.str.323) + br i1 %t25, label %panic554, label %ok555 +panic554: + call void @finch_panic(ptr @.str.331, i64 67, ptr @.str.332) unreachable -ok491: +ok555: %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 %panic492, label %ok493 -panic492: - call void @finch_panic(ptr @.str.324, i64 67, ptr @.str.325) + br i1 %t30, label %panic556, label %ok557 +panic556: + call void @finch_panic(ptr @.str.333, i64 67, ptr @.str.334) unreachable -ok493: +ok557: %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 %then494, label %endif496 -then494: + br i1 %t34, label %then558, label %endif560 +then558: %t35 = load ptr, ptr %a1 %t36 = icmp eq ptr %t35, null - br i1 %t36, label %panic497, label %ok498 -panic497: - call void @finch_panic(ptr @.str.326, i64 68, ptr @.str.327) + br i1 %t36, label %panic561, label %ok562 +panic561: + call void @finch_panic(ptr @.str.335, i64 68, ptr @.str.336) unreachable -ok498: +ok562: %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 %panic499, label %ok500 -panic499: - call void @finch_panic(ptr @.str.329, i64 68, ptr @.str.330) + br i1 %t42, label %panic563, label %ok564 +panic563: + call void @finch_panic(ptr @.str.338, i64 68, ptr @.str.339) unreachable -ok500: +ok564: %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 %panic501, label %ok502 -panic501: - call void @finch_panic(ptr @.str.331, i64 68, ptr @.str.332) + br i1 %t46, label %panic565, label %ok566 +panic565: + call void @finch_panic(ptr @.str.340, i64 68, ptr @.str.341) unreachable -ok502: +ok566: %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.328, i64 68) + call void @finch_str_sub(ptr %a40, ptr %a39, i64 %t44, i64 %t49, ptr @.str.337, 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 @@ -11186,67 +12668,69 @@ ok502: %t55 = load i64, ptr %t52 %t56 = load ptr, ptr %a23 store i64 0, ptr %a57 - br label %find.cond503 -find.cond503: + br label %find.cond567 +find.cond567: %t58 = load i64, ptr %a57 %t59 = icmp slt i64 %t58, %t55 - br i1 %t59, label %find.body504, label %find.end507 -find.body504: + br i1 %t59, label %find.body568, label %find.end571 +find.body568: %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.hit505, label %find.next506 -find.hit505: + br i1 %t65, label %find.hit569, label %find.next570 +find.hit569: store i64 %t58, ptr %a54 - br label %find.end507 -find.next506: + br label %find.end571 +find.next570: %t66 = add i64 %t58, 1 store i64 %t66, ptr %a57 - br label %find.cond503 -find.end507: + br label %find.cond567 +find.end571: %t67 = load i64, ptr %a54 %t68 = icmp sge i64 %t67, 0 - br i1 %t68, label %then508, label %endif510 -then508: + br i1 %t68, label %then572, label %endif574 +then572: %t69 = load { ptr, i64, i64 }, ptr %a51 + call void @finch.drop.arr_str(ptr %a23) ret { ptr, i64, i64 } %t69 -endif510: - br label %endif496 -endif496: - store { ptr, i64, i64 } { ptr @.str.333, i64 22, i64 0 }, ptr %a70 +endif574: + call void @finch_str_drop(ptr %a51) + br label %endif560 +endif560: + store { ptr, i64, i64 } { ptr @.str.342, i64 22, i64 0 }, ptr %a70 %t71 = load ptr, ptr %a1 %t72 = icmp eq ptr %t71, null - br i1 %t72, label %panic511, label %ok512 -panic511: - call void @finch_panic(ptr @.str.334, i64 74, ptr @.str.335) + br i1 %t72, label %panic575, label %ok576 +panic575: + call void @finch_panic(ptr @.str.343, i64 74, ptr @.str.344) unreachable -ok512: +ok576: %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 %panic513, label %ok514 -panic513: - call void @finch_panic(ptr @.str.337, i64 74, ptr @.str.338) + br i1 %t78, label %panic577, label %ok578 +panic577: + call void @finch_panic(ptr @.str.346, i64 74, ptr @.str.347) unreachable -ok514: +ok578: %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 %panic515, label %ok516 -panic515: - call void @finch_panic(ptr @.str.339, i64 74, ptr @.str.340) + br i1 %t82, label %panic579, label %ok580 +panic579: + call void @finch_panic(ptr @.str.348, i64 74, ptr @.str.349) unreachable -ok516: +ok580: %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.336, i64 74) + call void @finch_str_sub(ptr %a76, ptr %a75, i64 %t80, i64 %t85, ptr @.str.345, i64 74) %t86 = load { ptr, i64, i64 }, ptr %a76 store { ptr, i64, i64 } %t86, ptr %a87 %t88 = load { ptr, i64, i64 }, ptr %a70 @@ -11255,15 +12739,17 @@ ok516: 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 %then517, label %endif519 -then517: + br i1 %t94, label %then581, label %endif583 +then581: %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 -endif519: - ret { ptr, i64, i64 } { ptr @.str.342, i64 0, i64 0 } + call void @finch_str_drop(ptr %a70) + call void @finch.drop.arr_str(ptr %a23) + ret { ptr, i64, i64 } %t95 +endif583: + call void @finch_str_drop(ptr %a87) + call void @finch_str_drop(ptr %a70) + call void @finch.drop.arr_str(ptr %a23) + ret { ptr, i64, i64 } { ptr @.str.351, i64 0, i64 0 } } define internal i8 @finch.lexer.escape(ptr %p0, i8 %p1) { @@ -11274,92 +12760,98 @@ entry: %a34 = 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 store ptr %p0, ptr %a1 store i8 %p1, ptr %a2 %t3 = load i8, ptr %a2 %t4 = icmp eq i8 %t3, 110 - br i1 %t4, label %then520, label %endif522 -then520: + br i1 %t4, label %then584, label %endif586 +then584: ret i8 10 -endif522: +endif586: %t5 = load i8, ptr %a2 %t6 = icmp eq i8 %t5, 116 - br i1 %t6, label %then523, label %endif525 -then523: + br i1 %t6, label %then587, label %endif589 +then587: ret i8 9 -endif525: +endif589: %t7 = load i8, ptr %a2 %t8 = icmp eq i8 %t7, 114 - br i1 %t8, label %then526, label %endif528 -then526: + br i1 %t8, label %then590, label %endif592 +then590: ret i8 13 -endif528: +endif592: %t9 = load i8, ptr %a2 %t10 = icmp eq i8 %t9, 48 - br i1 %t10, label %then529, label %endif531 -then529: + br i1 %t10, label %then593, label %endif595 +then593: %t11 = trunc i64 0 to i8 ret i8 %t11 -endif531: +endif595: %t12 = load i8, ptr %a2 %t13 = icmp eq i8 %t12, 92 - br label %logic.from532 -logic.from532: - br i1 %t13, label %logic.end534, label %logic.rhs533 -logic.rhs533: + br label %logic.from596 +logic.from596: + br i1 %t13, label %logic.end598, label %logic.rhs597 +logic.rhs597: %t14 = load i8, ptr %a2 %t15 = icmp eq i8 %t14, 34 - 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: + br label %logic.rend599 +logic.rend599: + br label %logic.end598 +logic.end598: + %t16 = phi i1 [ true, %logic.from596 ], [ %t15, %logic.rend599 ] + br label %logic.from600 +logic.from600: + br i1 %t16, label %logic.end602, label %logic.rhs601 +logic.rhs601: %t17 = load i8, ptr %a2 %t18 = icmp eq i8 %t17, 39 - 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: + br label %logic.rend603 +logic.rend603: + br label %logic.end602 +logic.end602: + %t19 = phi i1 [ true, %logic.from600 ], [ %t18, %logic.rend603 ] + br i1 %t19, label %then604, label %endif606 +then604: %t20 = load i8, ptr %a2 ret i8 %t20 -endif542: +endif606: %t21 = load ptr, ptr %a1 %t22 = load ptr, ptr %a1 %t23 = icmp eq ptr %t22, null - br i1 %t23, label %panic543, label %ok544 -panic543: - call void @finch_panic(ptr @.str.343, i64 97, ptr @.str.344) + br i1 %t23, label %panic607, label %ok608 +panic607: + call void @finch_panic(ptr @.str.352, i64 97, ptr @.str.353) unreachable -ok544: +ok608: %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 %panic545, label %ok546 -panic545: - call void @finch_panic(ptr @.str.345, i64 97, ptr @.str.346) + br i1 %t27, label %panic609, label %ok610 +panic609: + call void @finch_panic(ptr @.str.354, i64 97, ptr @.str.355) unreachable -ok546: +ok610: %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.347, i64 16, i64 0 }, ptr %a35 + store { ptr, i64, i64 } { ptr @.str.356, 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 - call void @finch.lexer.fail(ptr %t21, i64 %t25, i64 %t30, { ptr, i64, i64 } %t37) - %t38 = load i8, ptr %a2 - ret i8 %t38 + store { ptr, i64, i64 } %t33, ptr %a37 + call void @finch_str_drop(ptr %a37) + %t38 = load { ptr, i64, i64 }, ptr %a34 + call void @finch.lexer.fail(ptr %t21, i64 %t25, i64 %t30, { ptr, i64, i64 } %t38) + store { ptr, i64, i64 } %t38, ptr %a39 + call void @finch_str_drop(ptr %a39) + %t40 = load i8, ptr %a2 + ret i8 %t40 } define internal void @finch.copy.S_lexer_Token(ptr %dst, ptr %src) { @@ -11376,29 +12868,13 @@ entry: ret void } -define internal void @finch.copy.arr_S_lexer_Token(ptr %dst, ptr %src) { +define internal void @finch.drop.S_lexer_Lexer(ptr %a) { entry: - %a5 = alloca i64, align 16 - call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (%S.lexer.Token, 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.cond853 -n.cond853: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - 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.cond853 -n.end855: + + %t1 = getelementptr inbounds %S.lexer.Lexer, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.lexer.Lexer, ptr %a, i32 0, i32 1 + call void @finch_str_drop(ptr %t2) ret void } @@ -11420,44 +12896,59 @@ entry: %a177 = alloca i64, align 16 %a225 = alloca { ptr, i64, i64 }, align 16 %a226 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a403 = alloca { ptr, i64, i64 }, align 16 - %a404 = alloca { ptr, i64, i64 }, align 16 + %a235 = alloca { ptr, i64, i64 }, align 16 + %a238 = alloca { ptr, i64, i64 }, align 16 + %a245 = alloca { ptr, i64, i64 }, align 16 + %a246 = alloca { ptr, i64, i64 }, align 16 + %a249 = alloca { ptr, i64, i64 }, align 16 + %a254 = alloca { ptr, i64, i64 }, align 16 + %a358 = alloca { ptr, i64, i64 }, align 16 %a405 = alloca { ptr, i64, i64 }, align 16 %a406 = alloca { ptr, i64, i64 }, align 16 - %a415 = alloca i8, 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 + %a418 = alloca { ptr, i64, i64 }, align 16 %a421 = alloca { ptr, i64, i64 }, align 16 - %a448 = alloca i8, align 16 - %a454 = alloca i8, align 16 - %a461 = alloca { ptr, i64, i64 }, align 16 - %a469 = alloca { ptr, i64, i64 }, align 16 - %a470 = alloca { ptr, i64, i64 }, align 16 + %a428 = alloca i8, align 16 + %a431 = alloca { ptr, i64, i64 }, align 16 + %a436 = alloca { ptr, i64, i64 }, align 16 + %a438 = alloca { ptr, i64, i64 }, align 16 + %a465 = alloca i8, align 16 + %a471 = alloca i8, align 16 + %a478 = alloca { ptr, i64, i64 }, align 16 + %a486 = alloca { ptr, i64, i64 }, align 16 %a487 = alloca { ptr, i64, i64 }, align 16 - %a491 = alloca i64, align 16 - %a504 = alloca { ptr, i64, i64 }, align 16 - %a517 = alloca { ptr, i64, i64 }, align 16 - %a518 = alloca { ptr, i64, i64 }, align 16 - %a530 = alloca { ptr, i64, i64 }, align 16 - %a531 = alloca { ptr, i64, i64 }, align 16 - %a532 = alloca { ptr, i64, i64 }, align 16 - %a534 = alloca { ptr, i64, i64 }, align 16 - %a535 = alloca { ptr, i64, i64 }, align 16 - %a536 = alloca { ptr, i64, i64 }, align 16 + %a491 = alloca { ptr, i64, i64 }, align 16 + %a506 = alloca { ptr, i64, i64 }, align 16 + %a510 = alloca i64, align 16 + %a523 = alloca { ptr, i64, i64 }, align 16 + %a528 = alloca { ptr, i64, i64 }, align 16 + %a538 = 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 - %a545 = alloca i64, align 16 + %a551 = alloca { ptr, i64, i64 }, align 16 + %a552 = alloca { ptr, i64, i64 }, align 16 %a553 = 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 %a558 = alloca { ptr, i64, i64 }, align 16 %a559 = alloca { ptr, i64, i64 }, align 16 - %a563 = alloca %S.lexer.Token, align 16 - %a564 = alloca %S.lexer.Token, align 16 + %a562 = 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 + %a567 = alloca { ptr, i64, i64 }, align 16 + %a570 = alloca i64, align 16 + %a578 = alloca { ptr, i64, i64 }, align 16 + %a579 = alloca { ptr, i64, i64 }, align 16 + %a582 = alloca { ptr, i64, i64 }, align 16 + %a585 = alloca { ptr, i64, i64 }, align 16 + %a586 = alloca { ptr, i64, i64 }, align 16 %a589 = alloca { ptr, i64, i64 }, align 16 - %a590 = alloca { ptr, i64, i64 }, align 16 + %a592 = alloca %S.lexer.Token, align 16 + %a593 = alloca %S.lexer.Token, align 16 store { ptr, i64, i64 } %p0, ptr %a1 store { ptr, i64, i64 } %p1, ptr %a2 %t3 = load { ptr, i64, i64 }, ptr %a1 @@ -11477,217 +12968,217 @@ entry: store %S.lexer.Lexer %t16, ptr %a17 store ptr %a17, ptr %a18 store { ptr, i64, i64 } zeroinitializer, ptr %a19 - br label %while.cond547 -while.cond547: + br label %while.cond611 +while.cond611: %t20 = load ptr, ptr %a18 %t21 = icmp eq ptr %t20, null - br i1 %t21, label %panic550, label %ok551 -panic550: - call void @finch_panic(ptr @.str.348, i64 105, ptr @.str.349) + br i1 %t21, label %panic614, label %ok615 +panic614: + call void @finch_panic(ptr @.str.357, i64 105, ptr @.str.358) unreachable -ok551: +ok615: %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 %panic552, label %ok553 -panic552: - call void @finch_panic(ptr @.str.350, i64 105, ptr @.str.351) + br i1 %t25, label %panic616, label %ok617 +panic616: + call void @finch_panic(ptr @.str.359, i64 105, ptr @.str.360) unreachable -ok553: +ok617: %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.body548, label %while.end549 -while.body548: + br i1 %t29, label %while.body612, label %while.end613 +while.body612: %t30 = load ptr, ptr %a18 %t31 = icmp eq ptr %t30, null - br i1 %t31, label %panic554, label %ok555 -panic554: - call void @finch_panic(ptr @.str.352, i64 106, ptr @.str.353) + br i1 %t31, label %panic618, label %ok619 +panic618: + call void @finch_panic(ptr @.str.361, i64 106, ptr @.str.362) unreachable -ok555: +ok619: %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 %panic556, label %ok557 -panic556: - call void @finch_panic(ptr @.str.354, i64 106, ptr @.str.355) + br i1 %t34, label %panic620, label %ok621 +panic620: + call void @finch_panic(ptr @.str.363, i64 106, ptr @.str.364) unreachable -ok557: +ok621: %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 %range558, label %inrange559 -range558: - call void @finch_panic_index(ptr @.str.356, i64 106, i64 %t36, i64 %t38) + br i1 %t39, label %range622, label %inrange623 +range622: + call void @finch_panic_index(ptr @.str.365, i64 106, i64 %t36, i64 %t38) unreachable -inrange559: +inrange623: %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.from560 -logic.from560: - br i1 %t45, label %logic.end562, label %logic.rhs561 -logic.rhs561: + br label %logic.from624 +logic.from624: + br i1 %t45, label %logic.end626, label %logic.rhs625 +logic.rhs625: %t46 = load i8, ptr %a43 %t47 = icmp eq i8 %t46, 9 - 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: + br label %logic.rend627 +logic.rend627: + br label %logic.end626 +logic.end626: + %t48 = phi i1 [ true, %logic.from624 ], [ %t47, %logic.rend627 ] + br label %logic.from628 +logic.from628: + br i1 %t48, label %logic.end630, label %logic.rhs629 +logic.rhs629: %t49 = load i8, ptr %a43 %t50 = icmp eq i8 %t49, 10 - 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: + br label %logic.rend631 +logic.rend631: + br label %logic.end630 +logic.end630: + %t51 = phi i1 [ true, %logic.from628 ], [ %t50, %logic.rend631 ] + br label %logic.from632 +logic.from632: + br i1 %t51, label %logic.end634, label %logic.rhs633 +logic.rhs633: %t52 = load i8, ptr %a43 %t53 = icmp eq i8 %t52, 13 - 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: + br label %logic.rend635 +logic.rend635: + br label %logic.end634 +logic.end634: + %t54 = phi i1 [ true, %logic.from632 ], [ %t53, %logic.rend635 ] + br i1 %t54, label %then636, label %endif638 +then636: %t55 = load ptr, ptr %a18 call void @finch.lexer.advance(ptr %t55) - br label %while.cond547 -endif574: + br label %while.cond611 +endif638: %t56 = load i8, ptr %a43 %t57 = icmp eq i8 %t56, 47 - br label %logic.from575 -logic.from575: - br i1 %t57, label %logic.rhs576, label %logic.end577 -logic.rhs576: + br label %logic.from639 +logic.from639: + br i1 %t57, label %logic.rhs640, label %logic.end641 +logic.rhs640: %t58 = load ptr, ptr %a18 %t59 = call i8 @finch.lexer.peek(ptr %t58, i64 1) %t60 = icmp eq i8 %t59, 47 - 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: + br label %logic.rend642 +logic.rend642: + br label %logic.end641 +logic.end641: + %t61 = phi i1 [ false, %logic.from639 ], [ %t60, %logic.rend642 ] + br i1 %t61, label %then643, label %endif645 +then643: + br label %while.cond646 +while.cond646: %t62 = load ptr, ptr %a18 %t63 = icmp eq ptr %t62, null - br i1 %t63, label %panic585, label %ok586 -panic585: - call void @finch_panic(ptr @.str.357, i64 112, ptr @.str.358) + br i1 %t63, label %panic649, label %ok650 +panic649: + call void @finch_panic(ptr @.str.366, i64 112, ptr @.str.367) unreachable -ok586: +ok650: %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 %panic587, label %ok588 -panic587: - call void @finch_panic(ptr @.str.359, i64 112, ptr @.str.360) + br i1 %t67, label %panic651, label %ok652 +panic651: + call void @finch_panic(ptr @.str.368, i64 112, ptr @.str.369) unreachable -ok588: +ok652: %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.from589 -logic.from589: - br i1 %t71, label %logic.rhs590, label %logic.end591 -logic.rhs590: + br label %logic.from653 +logic.from653: + br i1 %t71, label %logic.rhs654, label %logic.end655 +logic.rhs654: %t72 = load ptr, ptr %a18 %t73 = icmp eq ptr %t72, null - br i1 %t73, label %panic592, label %ok593 -panic592: - call void @finch_panic(ptr @.str.361, i64 112, ptr @.str.362) + br i1 %t73, label %panic656, label %ok657 +panic656: + call void @finch_panic(ptr @.str.370, i64 112, ptr @.str.371) unreachable -ok593: +ok657: %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 %panic594, label %ok595 -panic594: - call void @finch_panic(ptr @.str.363, i64 112, ptr @.str.364) + br i1 %t76, label %panic658, label %ok659 +panic658: + call void @finch_panic(ptr @.str.372, i64 112, ptr @.str.373) unreachable -ok595: +ok659: %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 %range596, label %inrange597 -range596: - call void @finch_panic_index(ptr @.str.365, i64 112, i64 %t78, i64 %t80) + br i1 %t81, label %range660, label %inrange661 +range660: + call void @finch_panic_index(ptr @.str.374, i64 112, i64 %t78, i64 %t80) unreachable -inrange597: +inrange661: %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.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: + br label %logic.rend662 +logic.rend662: + br label %logic.end655 +logic.end655: + %t86 = phi i1 [ false, %logic.from653 ], [ %t85, %logic.rend662 ] + br i1 %t86, label %while.body647, label %while.end648 +while.body647: %t87 = load ptr, ptr %a18 call void @finch.lexer.advance(ptr %t87) - br label %while.cond582 -while.end584: - br label %while.cond547 -endif581: + br label %while.cond646 +while.end648: + br label %while.cond611 +endif645: %t88 = load i8, ptr %a43 %t89 = icmp eq i8 %t88, 47 - br label %logic.from599 -logic.from599: - br i1 %t89, label %logic.rhs600, label %logic.end601 -logic.rhs600: + br label %logic.from663 +logic.from663: + br i1 %t89, label %logic.rhs664, label %logic.end665 +logic.rhs664: %t90 = load ptr, ptr %a18 %t91 = call i8 @finch.lexer.peek(ptr %t90, i64 1) %t92 = icmp eq i8 %t91, 42 - 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: + br label %logic.rend666 +logic.rend666: + br label %logic.end665 +logic.end665: + %t93 = phi i1 [ false, %logic.from663 ], [ %t92, %logic.rend666 ] + br i1 %t93, label %then667, label %endif669 +then667: %t94 = load ptr, ptr %a18 %t95 = icmp eq ptr %t94, null - br i1 %t95, label %panic606, label %ok607 -panic606: - call void @finch_panic(ptr @.str.366, i64 118, ptr @.str.367) + br i1 %t95, label %panic670, label %ok671 +panic670: + call void @finch_panic(ptr @.str.375, i64 118, ptr @.str.376) unreachable -ok607: +ok671: %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 %panic608, label %ok609 -panic608: - call void @finch_panic(ptr @.str.368, i64 119, ptr @.str.369) + br i1 %t100, label %panic672, label %ok673 +panic672: + call void @finch_panic(ptr @.str.377, i64 119, ptr @.str.378) unreachable -ok609: +ok673: %t101 = getelementptr inbounds %S.lexer.Lexer, ptr %t99, i32 0, i32 4 %t102 = load i64, ptr %t101 store i64 %t102, ptr %a103 @@ -11695,1061 +13186,1109 @@ ok609: call void @finch.lexer.advance(ptr %t104) %t105 = load ptr, ptr %a18 call void @finch.lexer.advance(ptr %t105) - br label %while.cond610 -while.cond610: + br label %while.cond674 +while.cond674: %t106 = load ptr, ptr %a18 %t107 = icmp eq ptr %t106, null - br i1 %t107, label %panic613, label %ok614 -panic613: - call void @finch_panic(ptr @.str.370, i64 122, ptr @.str.371) + br i1 %t107, label %panic677, label %ok678 +panic677: + call void @finch_panic(ptr @.str.379, i64 122, ptr @.str.380) unreachable -ok614: +ok678: %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 %panic615, label %ok616 -panic615: - call void @finch_panic(ptr @.str.372, i64 122, ptr @.str.373) + br i1 %t111, label %panic679, label %ok680 +panic679: + call void @finch_panic(ptr @.str.381, i64 122, ptr @.str.382) unreachable -ok616: +ok680: %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.from617 -logic.from617: - br i1 %t115, label %logic.rhs618, label %logic.end619 -logic.rhs618: + br label %logic.from681 +logic.from681: + br i1 %t115, label %logic.rhs682, label %logic.end683 +logic.rhs682: %t116 = load ptr, ptr %a18 %t117 = icmp eq ptr %t116, null - br i1 %t117, label %panic620, label %ok621 -panic620: - call void @finch_panic(ptr @.str.374, i64 122, ptr @.str.375) + br i1 %t117, label %panic684, label %ok685 +panic684: + call void @finch_panic(ptr @.str.383, i64 122, ptr @.str.384) unreachable -ok621: +ok685: %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 %panic622, label %ok623 -panic622: - call void @finch_panic(ptr @.str.376, i64 122, ptr @.str.377) + br i1 %t120, label %panic686, label %ok687 +panic686: + call void @finch_panic(ptr @.str.385, i64 122, ptr @.str.386) unreachable -ok623: +ok687: %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 %range624, label %inrange625 -range624: - call void @finch_panic_index(ptr @.str.378, i64 122, i64 %t122, i64 %t124) + br i1 %t125, label %range688, label %inrange689 +range688: + call void @finch_panic_index(ptr @.str.387, i64 122, i64 %t122, i64 %t124) unreachable -inrange625: +inrange689: %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.from626 -logic.from626: - br i1 %t129, label %logic.rhs627, label %logic.end628 -logic.rhs627: + br label %logic.from690 +logic.from690: + br i1 %t129, label %logic.rhs691, label %logic.end692 +logic.rhs691: %t130 = load ptr, ptr %a18 %t131 = call i8 @finch.lexer.peek(ptr %t130, i64 1) %t132 = icmp eq i8 %t131, 47 - br label %logic.rend629 -logic.rend629: - br label %logic.end628 -logic.end628: - %t133 = phi i1 [ false, %logic.from626 ], [ %t132, %logic.rend629 ] + br label %logic.rend693 +logic.rend693: + br label %logic.end692 +logic.end692: + %t133 = phi i1 [ false, %logic.from690 ], [ %t132, %logic.rend693 ] %t134 = xor i1 %t133, true - 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: + br label %logic.rend694 +logic.rend694: + br label %logic.end683 +logic.end683: + %t135 = phi i1 [ false, %logic.from681 ], [ %t134, %logic.rend694 ] + br i1 %t135, label %while.body675, label %while.end676 +while.body675: %t136 = load ptr, ptr %a18 call void @finch.lexer.advance(ptr %t136) - br label %while.cond610 -while.end612: + br label %while.cond674 +while.end676: %t137 = load ptr, ptr %a18 %t138 = icmp eq ptr %t137, null - br i1 %t138, label %panic631, label %ok632 -panic631: - call void @finch_panic(ptr @.str.379, i64 125, ptr @.str.380) + br i1 %t138, label %panic695, label %ok696 +panic695: + call void @finch_panic(ptr @.str.388, i64 125, ptr @.str.389) unreachable -ok632: +ok696: %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 %panic633, label %ok634 -panic633: - call void @finch_panic(ptr @.str.381, i64 125, ptr @.str.382) + br i1 %t142, label %panic697, label %ok698 +panic697: + call void @finch_panic(ptr @.str.390, i64 125, ptr @.str.391) unreachable -ok634: +ok698: %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 %then635, label %endif637 -then635: + br i1 %t146, label %then699, label %endif701 +then699: %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.383, i64 36, i64 0 }) - br label %endif637 -endif637: + call void @finch.lexer.fail(ptr %t147, i64 %t148, i64 %t149, { ptr, i64, i64 } { ptr @.str.392, i64 36, i64 0 }) + br label %endif701 +endif701: %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.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 + br label %while.cond611 +endif669: + %t152 = insertvalue %S.lexer.Token zeroinitializer, { ptr, i64, i64 } { ptr @.str.393, i64 0, i64 0 }, 0 + %t153 = insertvalue %S.lexer.Token %t152, { ptr, i64, i64 } { ptr @.str.394, i64 0, i64 0 }, 1 %t154 = load ptr, ptr %a18 %t155 = icmp eq ptr %t154, null - br i1 %t155, label %panic638, label %ok639 -panic638: - call void @finch_panic(ptr @.str.386, i64 133, ptr @.str.387) + br i1 %t155, label %panic702, label %ok703 +panic702: + call void @finch_panic(ptr @.str.395, i64 133, ptr @.str.396) unreachable -ok639: +ok703: %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 %panic640, label %ok641 -panic640: - call void @finch_panic(ptr @.str.388, i64 133, ptr @.str.389) + br i1 %t160, label %panic704, label %ok705 +panic704: + call void @finch_panic(ptr @.str.397, i64 133, ptr @.str.398) unreachable -ok641: +ok705: %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 %panic642, label %ok643 -panic642: - call void @finch_panic(ptr @.str.390, i64 133, ptr @.str.391) + br i1 %t165, label %panic706, label %ok707 +panic706: + call void @finch_panic(ptr @.str.399, i64 133, ptr @.str.400) unreachable -ok643: +ok707: %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 %panic644, label %ok645 -panic644: - call void @finch_panic(ptr @.str.392, i64 134, ptr @.str.393) + br i1 %t171, label %panic708, label %ok709 +panic708: + call void @finch_panic(ptr @.str.401, i64 134, ptr @.str.402) unreachable -ok645: +ok709: %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 %panic646, label %ok647 -panic646: - call void @finch_panic(ptr @.str.394, i64 135, ptr @.str.395) + br i1 %t174, label %panic710, label %ok711 +panic710: + call void @finch_panic(ptr @.str.403, i64 135, ptr @.str.404) unreachable -ok647: +ok711: %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 %then648, label %else649 -then648: - br label %while.cond651 -while.cond651: + br i1 %t179, label %then712, label %else713 +then712: + br label %while.cond715 +while.cond715: %t180 = load ptr, ptr %a18 %t181 = icmp eq ptr %t180, null - br i1 %t181, label %panic654, label %ok655 -panic654: - call void @finch_panic(ptr @.str.396, i64 137, ptr @.str.397) + br i1 %t181, label %panic718, label %ok719 +panic718: + call void @finch_panic(ptr @.str.405, i64 137, ptr @.str.406) unreachable -ok655: +ok719: %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 %panic656, label %ok657 -panic656: - call void @finch_panic(ptr @.str.398, i64 137, ptr @.str.399) + br i1 %t185, label %panic720, label %ok721 +panic720: + call void @finch_panic(ptr @.str.407, i64 137, ptr @.str.408) unreachable -ok657: +ok721: %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.from658 -logic.from658: - br i1 %t189, label %logic.rhs659, label %logic.end660 -logic.rhs659: + br label %logic.from722 +logic.from722: + br i1 %t189, label %logic.rhs723, label %logic.end724 +logic.rhs723: %t190 = load ptr, ptr %a18 %t191 = icmp eq ptr %t190, null - br i1 %t191, label %panic661, label %ok662 -panic661: - call void @finch_panic(ptr @.str.400, i64 137, ptr @.str.401) + br i1 %t191, label %panic725, label %ok726 +panic725: + call void @finch_panic(ptr @.str.409, i64 137, ptr @.str.410) unreachable -ok662: +ok726: %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 %panic663, label %ok664 -panic663: - call void @finch_panic(ptr @.str.402, i64 137, ptr @.str.403) + br i1 %t194, label %panic727, label %ok728 +panic727: + call void @finch_panic(ptr @.str.411, i64 137, ptr @.str.412) unreachable -ok664: +ok728: %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 %range665, label %inrange666 -range665: - call void @finch_panic_index(ptr @.str.404, i64 137, i64 %t196, i64 %t198) + br i1 %t199, label %range729, label %inrange730 +range729: + call void @finch_panic_index(ptr @.str.413, i64 137, i64 %t196, i64 %t198) unreachable -inrange666: +inrange730: %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.from667 -logic.from667: - br i1 %t203, label %logic.end669, label %logic.rhs668 -logic.rhs668: + br label %logic.from731 +logic.from731: + br i1 %t203, label %logic.end733, label %logic.rhs732 +logic.rhs732: %t204 = load ptr, ptr %a18 %t205 = icmp eq ptr %t204, null - br i1 %t205, label %panic670, label %ok671 -panic670: - call void @finch_panic(ptr @.str.405, i64 137, ptr @.str.406) + br i1 %t205, label %panic734, label %ok735 +panic734: + call void @finch_panic(ptr @.str.414, i64 137, ptr @.str.415) unreachable -ok671: +ok735: %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 %panic672, label %ok673 -panic672: - call void @finch_panic(ptr @.str.407, i64 137, ptr @.str.408) + br i1 %t208, label %panic736, label %ok737 +panic736: + call void @finch_panic(ptr @.str.416, i64 137, ptr @.str.417) unreachable -ok673: +ok737: %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 %range674, label %inrange675 -range674: - call void @finch_panic_index(ptr @.str.409, i64 137, i64 %t210, i64 %t212) + br i1 %t213, label %range738, label %inrange739 +range738: + call void @finch_panic_index(ptr @.str.418, i64 137, i64 %t210, i64 %t212) unreachable -inrange675: +inrange739: %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.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: + br label %logic.rend740 +logic.rend740: + br label %logic.end733 +logic.end733: + %t218 = phi i1 [ true, %logic.from731 ], [ %t217, %logic.rend740 ] + br label %logic.rend741 +logic.rend741: + br label %logic.end724 +logic.end724: + %t219 = phi i1 [ false, %logic.from722 ], [ %t218, %logic.rend741 ] + br i1 %t219, label %while.body716, label %while.end717 +while.body716: %t220 = load ptr, ptr %a18 call void @finch.lexer.advance(ptr %t220) - br label %while.cond651 -while.end653: + br label %while.cond715 +while.end717: %t221 = load ptr, ptr %a18 %t222 = icmp eq ptr %t221, null - br i1 %t222, label %panic678, label %ok679 -panic678: - call void @finch_panic(ptr @.str.410, i64 140, ptr @.str.411) + br i1 %t222, label %panic742, label %ok743 +panic742: + call void @finch_panic(ptr @.str.419, i64 140, ptr @.str.420) unreachable -ok679: +ok743: %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 %panic680, label %ok681 -panic680: - call void @finch_panic(ptr @.str.413, i64 140, ptr @.str.414) + br i1 %t229, label %panic744, label %ok745 +panic744: + call void @finch_panic(ptr @.str.422, i64 140, ptr @.str.423) unreachable -ok681: +ok745: %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.412, i64 140) + call void @finch_str_sub(ptr %a226, ptr %a225, i64 %t227, i64 %t231, ptr @.str.421, i64 140) %t232 = load { ptr, i64, i64 }, ptr %a226 %t233 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 + %t234 = load { ptr, i64, i64 }, ptr %t233 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.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 %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 - store { ptr, i64, i64 } %t239, ptr %a241 - 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 %endif684 -endif684: - br label %endif650 -else649: - %t244 = load i8, ptr %a43 - %t245 = call i1 @finch.lexer.isDigit(i8 %t244) - 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.416, i64 3, i64 0 }, ptr %t246 - %t247 = load i8, ptr %a43 - %t248 = icmp eq i8 %t247, 48 - 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.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.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: + store { ptr, i64, i64 } %t234, ptr %a235 + call void @finch_str_drop(ptr %a235) + %t236 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 + %t237 = load { ptr, i64, i64 }, ptr %t236 + store { ptr, i64, i64 } { ptr @.str.424, i64 5, i64 0 }, ptr %t236 + store { ptr, i64, i64 } %t237, ptr %a238 + call void @finch_str_drop(ptr %a238) + %t239 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 + %t240 = load { ptr, i64, i64 }, ptr %t239 + %t241 = call i1 @finch.lexer.isKeyword({ ptr, i64, i64 } %t240) + br i1 %t241, label %then746, label %endif748 +then746: + %t242 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 + %t243 = load { ptr, i64, i64 }, ptr %t242 + %t244 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 + store { ptr, i64, i64 } %t243, ptr %a245 + call void @finch_str_copy(ptr %a246, ptr %a245) + %t247 = load { ptr, i64, i64 }, ptr %a246 + %t248 = load { ptr, i64, i64 }, ptr %t244 + store { ptr, i64, i64 } %t247, ptr %t244 + store { ptr, i64, i64 } %t248, ptr %a249 + call void @finch_str_drop(ptr %a249) + br label %endif748 +endif748: + br label %endif714 +else713: + %t250 = load i8, ptr %a43 + %t251 = call i1 @finch.lexer.isDigit(i8 %t250) + br i1 %t251, label %then749, label %else750 +then749: + %t252 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 + %t253 = load { ptr, i64, i64 }, ptr %t252 + store { ptr, i64, i64 } { ptr @.str.425, i64 3, i64 0 }, ptr %t252 + store { ptr, i64, i64 } %t253, ptr %a254 + call void @finch_str_drop(ptr %a254) + %t255 = load i8, ptr %a43 + %t256 = icmp eq i8 %t255, 48 + br label %logic.from752 +logic.from752: + br i1 %t256, label %logic.rhs753, label %logic.end754 +logic.rhs753: %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.cond699 -while.cond699: - %t259 = load ptr, ptr %a18 - %t260 = icmp eq ptr %t259, null - br i1 %t260, label %panic702, label %ok703 -panic702: - call void @finch_panic(ptr @.str.417, i64 150, ptr @.str.418) - unreachable -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 %panic704, label %ok705 -panic704: - call void @finch_panic(ptr @.str.419, i64 150, ptr @.str.420) - unreachable -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.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 %panic709, label %ok710 -panic709: - call void @finch_panic(ptr @.str.421, i64 150, ptr @.str.422) - unreachable -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 %panic711, label %ok712 -panic711: - call void @finch_panic(ptr @.str.423, i64 150, ptr @.str.424) - unreachable -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 %range713, label %inrange714 -range713: - call void @finch_panic_index(ptr @.str.425, i64 150, i64 %t275, i64 %t277) - unreachable -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.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 %panic718, label %ok719 -panic718: + %t258 = call i8 @finch.lexer.peek(ptr %t257, i64 1) + %t259 = icmp eq i8 %t258, 120 + br label %logic.from755 +logic.from755: + br i1 %t259, label %logic.end757, label %logic.rhs756 +logic.rhs756: + %t260 = load ptr, ptr %a18 + %t261 = call i8 @finch.lexer.peek(ptr %t260, i64 1) + %t262 = icmp eq i8 %t261, 88 + br label %logic.rend758 +logic.rend758: + br label %logic.end757 +logic.end757: + %t263 = phi i1 [ true, %logic.from755 ], [ %t262, %logic.rend758 ] + br label %logic.rend759 +logic.rend759: + br label %logic.end754 +logic.end754: + %t264 = phi i1 [ false, %logic.from752 ], [ %t263, %logic.rend759 ] + br i1 %t264, label %then760, label %else761 +then760: + %t265 = load ptr, ptr %a18 + call void @finch.lexer.advance(ptr %t265) + %t266 = load ptr, ptr %a18 + call void @finch.lexer.advance(ptr %t266) + br label %while.cond763 +while.cond763: + %t267 = load ptr, ptr %a18 + %t268 = icmp eq ptr %t267, null + br i1 %t268, label %panic766, label %ok767 +panic766: call void @finch_panic(ptr @.str.426, i64 150, ptr @.str.427) unreachable -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 %panic720, label %ok721 -panic720: +ok767: + %t269 = getelementptr inbounds %S.lexer.Lexer, ptr %t267, i32 0, i32 2 + %t270 = load i64, ptr %t269 + %t271 = load ptr, ptr %a18 + %t272 = icmp eq ptr %t271, null + br i1 %t272, label %panic768, label %ok769 +panic768: call void @finch_panic(ptr @.str.428, i64 150, ptr @.str.429) unreachable -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 %range722, label %inrange723 -range722: - call void @finch_panic_index(ptr @.str.430, i64 150, i64 %t289, i64 %t291) +ok769: + %t273 = getelementptr inbounds %S.lexer.Lexer, ptr %t271, i32 0, i32 0 + %t274 = getelementptr inbounds { ptr, i64, i64 }, ptr %t273, i32 0, i32 1 + %t275 = load i64, ptr %t274 + %t276 = icmp slt i64 %t270, %t275 + br label %logic.from770 +logic.from770: + br i1 %t276, label %logic.rhs771, label %logic.end772 +logic.rhs771: + %t277 = load ptr, ptr %a18 + %t278 = icmp eq ptr %t277, null + br i1 %t278, label %panic773, label %ok774 +panic773: + call void @finch_panic(ptr @.str.430, i64 150, ptr @.str.431) unreachable -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.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.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 %panic729, label %ok730 -panic729: - call void @finch_panic(ptr @.str.431, i64 154, ptr @.str.432) +ok774: + %t279 = getelementptr inbounds %S.lexer.Lexer, ptr %t277, i32 0, i32 0 + %t280 = load ptr, ptr %a18 + %t281 = icmp eq ptr %t280, null + br i1 %t281, label %panic775, label %ok776 +panic775: + call void @finch_panic(ptr @.str.432, i64 150, ptr @.str.433) unreachable -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 %panic731, label %ok732 -panic731: - call void @finch_panic(ptr @.str.433, i64 154, ptr @.str.434) +ok776: + %t282 = getelementptr inbounds %S.lexer.Lexer, ptr %t280, i32 0, i32 2 + %t283 = load i64, ptr %t282 + %t284 = load { ptr, i64, i64 }, ptr %t279 + %t285 = extractvalue { ptr, i64, i64 } %t284, 1 + %t286 = icmp uge i64 %t283, %t285 + br i1 %t286, label %range777, label %inrange778 +range777: + call void @finch_panic_index(ptr @.str.434, i64 150, i64 %t283, i64 %t285) unreachable -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.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 %panic736, label %ok737 -panic736: - call void @finch_panic(ptr @.str.435, i64 154, ptr @.str.436) +inrange778: + %t287 = extractvalue { ptr, i64, i64 } %t284, 0 + %t288 = getelementptr inbounds i8, ptr %t287, i64 %t283 + %t289 = load i8, ptr %t288 + %t290 = call i1 @finch.lexer.isHex(i8 %t289) + br label %logic.from779 +logic.from779: + br i1 %t290, label %logic.end781, label %logic.rhs780 +logic.rhs780: + %t291 = load ptr, ptr %a18 + %t292 = icmp eq ptr %t291, null + br i1 %t292, label %panic782, label %ok783 +panic782: + call void @finch_panic(ptr @.str.435, i64 150, ptr @.str.436) unreachable -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 %panic738, label %ok739 -panic738: - call void @finch_panic(ptr @.str.437, i64 154, ptr @.str.438) +ok783: + %t293 = getelementptr inbounds %S.lexer.Lexer, ptr %t291, i32 0, i32 0 + %t294 = load ptr, ptr %a18 + %t295 = icmp eq ptr %t294, null + br i1 %t295, label %panic784, label %ok785 +panic784: + call void @finch_panic(ptr @.str.437, i64 150, ptr @.str.438) unreachable -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 %range740, label %inrange741 -range740: - call void @finch_panic_index(ptr @.str.439, i64 154, i64 %t316, i64 %t318) +ok785: + %t296 = getelementptr inbounds %S.lexer.Lexer, ptr %t294, i32 0, i32 2 + %t297 = load i64, ptr %t296 + %t298 = load { ptr, i64, i64 }, ptr %t293 + %t299 = extractvalue { ptr, i64, i64 } %t298, 1 + %t300 = icmp uge i64 %t297, %t299 + br i1 %t300, label %range786, label %inrange787 +range786: + call void @finch_panic_index(ptr @.str.439, i64 150, i64 %t297, i64 %t299) unreachable -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.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 %panic745, label %ok746 -panic745: +inrange787: + %t301 = extractvalue { ptr, i64, i64 } %t298, 0 + %t302 = getelementptr inbounds i8, ptr %t301, i64 %t297 + %t303 = load i8, ptr %t302 + %t304 = icmp eq i8 %t303, 95 + br label %logic.rend788 +logic.rend788: + br label %logic.end781 +logic.end781: + %t305 = phi i1 [ true, %logic.from779 ], [ %t304, %logic.rend788 ] + br label %logic.rend789 +logic.rend789: + br label %logic.end772 +logic.end772: + %t306 = phi i1 [ false, %logic.from770 ], [ %t305, %logic.rend789 ] + br i1 %t306, label %while.body764, label %while.end765 +while.body764: + %t307 = load ptr, ptr %a18 + call void @finch.lexer.advance(ptr %t307) + br label %while.cond763 +while.end765: + br label %endif762 +else761: + br label %while.cond790 +while.cond790: + %t308 = load ptr, ptr %a18 + %t309 = icmp eq ptr %t308, null + br i1 %t309, label %panic793, label %ok794 +panic793: call void @finch_panic(ptr @.str.440, i64 154, ptr @.str.441) unreachable -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 %panic747, label %ok748 -panic747: +ok794: + %t310 = getelementptr inbounds %S.lexer.Lexer, ptr %t308, i32 0, i32 2 + %t311 = load i64, ptr %t310 + %t312 = load ptr, ptr %a18 + %t313 = icmp eq ptr %t312, null + br i1 %t313, label %panic795, label %ok796 +panic795: call void @finch_panic(ptr @.str.442, i64 154, ptr @.str.443) unreachable -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 %range749, label %inrange750 -range749: - call void @finch_panic_index(ptr @.str.444, i64 154, i64 %t330, i64 %t332) +ok796: + %t314 = getelementptr inbounds %S.lexer.Lexer, ptr %t312, i32 0, i32 0 + %t315 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i32 0, i32 1 + %t316 = load i64, ptr %t315 + %t317 = icmp slt i64 %t311, %t316 + br label %logic.from797 +logic.from797: + br i1 %t317, label %logic.rhs798, label %logic.end799 +logic.rhs798: + %t318 = load ptr, ptr %a18 + %t319 = icmp eq ptr %t318, null + br i1 %t319, label %panic800, label %ok801 +panic800: + call void @finch_panic(ptr @.str.444, i64 154, ptr @.str.445) unreachable -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.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.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.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.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.445, i64 5, i64 0 }, ptr %t348 +ok801: + %t320 = getelementptr inbounds %S.lexer.Lexer, ptr %t318, i32 0, i32 0 + %t321 = load ptr, ptr %a18 + %t322 = icmp eq ptr %t321, null + br i1 %t322, label %panic802, label %ok803 +panic802: + call void @finch_panic(ptr @.str.446, i64 154, ptr @.str.447) + unreachable +ok803: + %t323 = getelementptr inbounds %S.lexer.Lexer, ptr %t321, i32 0, i32 2 + %t324 = load i64, ptr %t323 + %t325 = load { ptr, i64, i64 }, ptr %t320 + %t326 = extractvalue { ptr, i64, i64 } %t325, 1 + %t327 = icmp uge i64 %t324, %t326 + br i1 %t327, label %range804, label %inrange805 +range804: + call void @finch_panic_index(ptr @.str.448, i64 154, i64 %t324, i64 %t326) + unreachable +inrange805: + %t328 = extractvalue { ptr, i64, i64 } %t325, 0 + %t329 = getelementptr inbounds i8, ptr %t328, i64 %t324 + %t330 = load i8, ptr %t329 + %t331 = call i1 @finch.lexer.isDigit(i8 %t330) + br label %logic.from806 +logic.from806: + br i1 %t331, label %logic.end808, label %logic.rhs807 +logic.rhs807: + %t332 = load ptr, ptr %a18 + %t333 = icmp eq ptr %t332, null + br i1 %t333, label %panic809, label %ok810 +panic809: + call void @finch_panic(ptr @.str.449, i64 154, ptr @.str.450) + unreachable +ok810: + %t334 = getelementptr inbounds %S.lexer.Lexer, ptr %t332, i32 0, i32 0 + %t335 = load ptr, ptr %a18 + %t336 = icmp eq ptr %t335, null + br i1 %t336, label %panic811, label %ok812 +panic811: + call void @finch_panic(ptr @.str.451, i64 154, ptr @.str.452) + unreachable +ok812: + %t337 = getelementptr inbounds %S.lexer.Lexer, ptr %t335, i32 0, i32 2 + %t338 = load i64, ptr %t337 + %t339 = load { ptr, i64, i64 }, ptr %t334 + %t340 = extractvalue { ptr, i64, i64 } %t339, 1 + %t341 = icmp uge i64 %t338, %t340 + br i1 %t341, label %range813, label %inrange814 +range813: + call void @finch_panic_index(ptr @.str.453, i64 154, i64 %t338, i64 %t340) + unreachable +inrange814: + %t342 = extractvalue { ptr, i64, i64 } %t339, 0 + %t343 = getelementptr inbounds i8, ptr %t342, i64 %t338 + %t344 = load i8, ptr %t343 + %t345 = icmp eq i8 %t344, 95 + br label %logic.rend815 +logic.rend815: + br label %logic.end808 +logic.end808: + %t346 = phi i1 [ true, %logic.from806 ], [ %t345, %logic.rend815 ] + br label %logic.rend816 +logic.rend816: + br label %logic.end799 +logic.end799: + %t347 = phi i1 [ false, %logic.from797 ], [ %t346, %logic.rend816 ] + br i1 %t347, label %while.body791, label %while.end792 +while.body791: + %t348 = load ptr, ptr %a18 + call void @finch.lexer.advance(ptr %t348) + br label %while.cond790 +while.end792: %t349 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t349) - br label %while.cond760 -while.cond760: - %t350 = load ptr, ptr %a18 - %t351 = icmp eq ptr %t350, null - br i1 %t351, label %panic763, label %ok764 -panic763: - call void @finch_panic(ptr @.str.446, i64 160, ptr @.str.447) - unreachable -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 %panic765, label %ok766 -panic765: - call void @finch_panic(ptr @.str.448, i64 160, ptr @.str.449) - unreachable -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.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 %panic770, label %ok771 -panic770: - call void @finch_panic(ptr @.str.450, i64 160, ptr @.str.451) - unreachable -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 %panic772, label %ok773 -panic772: - call void @finch_panic(ptr @.str.452, i64 160, ptr @.str.453) - unreachable -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 %range774, label %inrange775 -range774: - call void @finch_panic_index(ptr @.str.454, i64 160, i64 %t366, i64 %t368) - unreachable -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.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 %panic779, label %ok780 -panic779: - call void @finch_panic(ptr @.str.455, i64 160, ptr @.str.456) - unreachable -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 %panic781, label %ok782 -panic781: - call void @finch_panic(ptr @.str.457, i64 160, ptr @.str.458) - unreachable -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 %range783, label %inrange784 -range783: - call void @finch_panic_index(ptr @.str.459, i64 160, i64 %t380, i64 %t382) - unreachable -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.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.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 %panic787, label %ok788 -panic787: - call void @finch_panic(ptr @.str.460, i64 165, ptr @.str.461) - unreachable -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 %panic789, label %ok790 -panic789: - call void @finch_panic(ptr @.str.463, i64 165, ptr @.str.464) - unreachable -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.462, i64 165) - %t402 = load { ptr, i64, i64 }, ptr %a396 - store { ptr, i64, i64 } %t402, ptr %a403 - 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 %endif687 -else686: - %t409 = load i8, ptr %a43 - %t410 = icmp eq i8 %t409, 34 - 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.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.468, i64 6, i64 0 }, ptr %t416 - %t417 = load i8, ptr %a415 - %t418 = icmp eq i8 %t417, 39 - 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.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.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.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.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.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 %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.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.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 - %t449 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t449) - %t450 = load i8, ptr %a448 - %t451 = icmp eq i8 %t450, 92 - 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 - %t455 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t455) - %t456 = load ptr, ptr %a18 - %t457 = load i8, ptr %a454 - %t458 = call i8 @finch.lexer.escape(ptr %t456, i8 %t457) - store i8 %t458, ptr %a448 - 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) - %t462 = load { ptr, i64, i64 }, ptr %a461 - %t463 = load i64, ptr %t459 - %t464 = add i64 %t463, 1 - call void @finch_arr_reserve(ptr %a421, i64 %t464, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t465 = load ptr, ptr %a421 - %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.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.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 + %t350 = call i8 @finch.lexer.peek(ptr %t349, i64 0) + %t351 = icmp eq i8 %t350, 46 br label %logic.from817 logic.from817: - br i1 %t474, label %logic.rhs818, label %logic.end819 + br i1 %t351, 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 + %t352 = load ptr, ptr %a18 + %t353 = call i8 @finch.lexer.peek(ptr %t352, i64 1) + %t354 = call i1 @finch.lexer.isDigit(i8 %t353) 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 + %t355 = phi i1 [ false, %logic.from817 ], [ %t354, %logic.rend820 ] + br i1 %t355, 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.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 %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 %then827, label %else828 -then827: - store i64 2, ptr %a491 - 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 %then830, label %else831 -then830: - store i64 3, ptr %a491 - 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 %then833, label %endif835 -then833: - store i64 4, ptr %a491 - 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 %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 - %t511 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 3 - %t512 = load i64, ptr %t511 - %t513 = load ptr, ptr %a18 - %t514 = icmp eq ptr %t513, null - br i1 %t514, label %panic839, label %ok840 -panic839: - call void @finch_panic(ptr @.str.477, i64 211, ptr @.str.478) + %t356 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 + %t357 = load { ptr, i64, i64 }, ptr %t356 + store { ptr, i64, i64 } { ptr @.str.454, i64 5, i64 0 }, ptr %t356 + store { ptr, i64, i64 } %t357, ptr %a358 + call void @finch_str_drop(ptr %a358) + %t359 = load ptr, ptr %a18 + call void @finch.lexer.advance(ptr %t359) + br label %while.cond824 +while.cond824: + %t360 = load ptr, ptr %a18 + %t361 = icmp eq ptr %t360, null + br i1 %t361, label %panic827, label %ok828 +panic827: + call void @finch_panic(ptr @.str.455, i64 160, ptr @.str.456) unreachable -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 %panic841, label %ok842 -panic841: - call void @finch_panic(ptr @.str.480, i64 211, ptr @.str.481) +ok828: + %t362 = getelementptr inbounds %S.lexer.Lexer, ptr %t360, i32 0, i32 2 + %t363 = load i64, ptr %t362 + %t364 = load ptr, ptr %a18 + %t365 = icmp eq ptr %t364, null + br i1 %t365, label %panic829, label %ok830 +panic829: + call void @finch_panic(ptr @.str.457, i64 160, ptr @.str.458) unreachable -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 %panic843, label %ok844 +ok830: + %t366 = getelementptr inbounds %S.lexer.Lexer, ptr %t364, i32 0, i32 0 + %t367 = getelementptr inbounds { ptr, i64, i64 }, ptr %t366, i32 0, i32 1 + %t368 = load i64, ptr %t367 + %t369 = icmp slt i64 %t363, %t368 + br label %logic.from831 +logic.from831: + br i1 %t369, label %logic.rhs832, label %logic.end833 +logic.rhs832: + %t370 = load ptr, ptr %a18 + %t371 = icmp eq ptr %t370, null + br i1 %t371, label %panic834, label %ok835 +panic834: + call void @finch_panic(ptr @.str.459, i64 160, ptr @.str.460) + unreachable +ok835: + %t372 = getelementptr inbounds %S.lexer.Lexer, ptr %t370, i32 0, i32 0 + %t373 = load ptr, ptr %a18 + %t374 = icmp eq ptr %t373, null + br i1 %t374, label %panic836, label %ok837 +panic836: + call void @finch_panic(ptr @.str.461, i64 160, ptr @.str.462) + unreachable +ok837: + %t375 = getelementptr inbounds %S.lexer.Lexer, ptr %t373, i32 0, i32 2 + %t376 = load i64, ptr %t375 + %t377 = load { ptr, i64, i64 }, ptr %t372 + %t378 = extractvalue { ptr, i64, i64 } %t377, 1 + %t379 = icmp uge i64 %t376, %t378 + br i1 %t379, label %range838, label %inrange839 +range838: + call void @finch_panic_index(ptr @.str.463, i64 160, i64 %t376, i64 %t378) + unreachable +inrange839: + %t380 = extractvalue { ptr, i64, i64 } %t377, 0 + %t381 = getelementptr inbounds i8, ptr %t380, i64 %t376 + %t382 = load i8, ptr %t381 + %t383 = call i1 @finch.lexer.isDigit(i8 %t382) + br label %logic.from840 +logic.from840: + br i1 %t383, label %logic.end842, label %logic.rhs841 +logic.rhs841: + %t384 = load ptr, ptr %a18 + %t385 = icmp eq ptr %t384, null + br i1 %t385, label %panic843, label %ok844 panic843: - call void @finch_panic(ptr @.str.482, i64 211, ptr @.str.483) + call void @finch_panic(ptr @.str.464, i64 160, ptr @.str.465) unreachable 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.479, i64 211) - %t529 = load { ptr, i64, i64 }, ptr %a518 - 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.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 - store { ptr, i64, i64 } %t537, 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 - call void @finch.lexer.fail(ptr %t508, i64 %t510, i64 %t512, { ptr, i64, i64 } %t542) - 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.cond845 -for.cond845: - %t546 = load i64, ptr %a545 - %t547 = icmp slt i64 %t546, %t544 - 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.step847 -for.step847: - %t549 = load i64, ptr %a545 - %t550 = add i64 %t549, 1 - store i64 %t550, ptr %a545 - 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 - call void @finch_str_copy(ptr %a554, ptr %a553) - %t555 = load { ptr, i64, i64 }, ptr %a554 - store { ptr, i64, i64 } %t555, ptr %t552 - %t556 = load { ptr, i64, i64 }, ptr %a487 - %t557 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 - store { ptr, i64, i64 } %t556, ptr %a558 - 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 %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 - call void @finch.copy.S_lexer_Token(ptr %a564, ptr %a563) - %t565 = load %S.lexer.Token, ptr %a564 - %t566 = load i64, ptr %t561 - %t567 = add i64 %t566, 1 - call void @finch_arr_reserve(ptr %a19, i64 %t567, i64 ptrtoint (ptr getelementptr (%S.lexer.Token, ptr null, i32 1) to i64)) - %t568 = load ptr, ptr %a19 - %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.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.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 %panic849, label %ok850 -panic849: - call void @finch_panic(ptr @.str.487, i64 221, ptr @.str.488) + %t386 = getelementptr inbounds %S.lexer.Lexer, ptr %t384, i32 0, i32 0 + %t387 = load ptr, ptr %a18 + %t388 = icmp eq ptr %t387, null + br i1 %t388, label %panic845, label %ok846 +panic845: + call void @finch_panic(ptr @.str.466, i64 160, ptr @.str.467) unreachable -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 %panic851, label %ok852 +ok846: + %t389 = getelementptr inbounds %S.lexer.Lexer, ptr %t387, i32 0, i32 2 + %t390 = load i64, ptr %t389 + %t391 = load { ptr, i64, i64 }, ptr %t386 + %t392 = extractvalue { ptr, i64, i64 } %t391, 1 + %t393 = icmp uge i64 %t390, %t392 + br i1 %t393, label %range847, label %inrange848 +range847: + call void @finch_panic_index(ptr @.str.468, i64 160, i64 %t390, i64 %t392) + unreachable +inrange848: + %t394 = extractvalue { ptr, i64, i64 } %t391, 0 + %t395 = getelementptr inbounds i8, ptr %t394, i64 %t390 + %t396 = load i8, ptr %t395 + %t397 = icmp eq i8 %t396, 95 + br label %logic.rend849 +logic.rend849: + br label %logic.end842 +logic.end842: + %t398 = phi i1 [ true, %logic.from840 ], [ %t397, %logic.rend849 ] + br label %logic.rend850 +logic.rend850: + br label %logic.end833 +logic.end833: + %t399 = phi i1 [ false, %logic.from831 ], [ %t398, %logic.rend850 ] + br i1 %t399, label %while.body825, label %while.end826 +while.body825: + %t400 = load ptr, ptr %a18 + call void @finch.lexer.advance(ptr %t400) + br label %while.cond824 +while.end826: + br label %endif823 +endif823: + br label %endif762 +endif762: + %t401 = load ptr, ptr %a18 + %t402 = icmp eq ptr %t401, null + br i1 %t402, label %panic851, label %ok852 panic851: - call void @finch_panic(ptr @.str.489, i64 221, ptr @.str.490) + call void @finch_panic(ptr @.str.469, i64 165, ptr @.str.470) unreachable 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 - %t583 = insertvalue %S.lexer.Token %t582, i1 true, 4 - %t584 = load i64, ptr %t570 - %t585 = add i64 %t584, 1 - call void @finch_arr_reserve(ptr %a19, i64 %t585, i64 ptrtoint (ptr getelementptr (%S.lexer.Token, ptr null, i32 1) to i64)) - %t586 = load ptr, ptr %a19 - %t587 = getelementptr inbounds %S.lexer.Token, ptr %t586, i64 %t584 - store %S.lexer.Token %t583, ptr %t587 - store i64 %t585, ptr %t570 - %t588 = load { ptr, i64, i64 }, ptr %a19 + %t403 = getelementptr inbounds %S.lexer.Lexer, ptr %t401, i32 0, i32 0 + %t404 = load { ptr, i64, i64 }, ptr %t403 + store { ptr, i64, i64 } %t404, ptr %a405 + %t407 = load i64, ptr %a177 + %t408 = load ptr, ptr %a18 + %t409 = icmp eq ptr %t408, null + br i1 %t409, label %panic853, label %ok854 +panic853: + call void @finch_panic(ptr @.str.472, i64 165, ptr @.str.473) + unreachable +ok854: + %t410 = getelementptr inbounds %S.lexer.Lexer, ptr %t408, i32 0, i32 2 + %t411 = load i64, ptr %t410 + call void @finch_str_sub(ptr %a406, ptr %a405, i64 %t407, i64 %t411, ptr @.str.471, i64 165) + %t412 = load { ptr, i64, i64 }, ptr %a406 + store { ptr, i64, i64 } %t412, ptr %a413 + store { ptr, i64, i64 } { ptr @.str.475, i64 1, i64 0 }, ptr %a415 + store { ptr, i64, i64 } { ptr @.str.476, i64 0, i64 0 }, ptr %a416 + call void @finch_str_replace(ptr %a414, ptr %a413, ptr %a415, ptr %a416) + %t417 = load { ptr, i64, i64 }, ptr %a414 + store { ptr, i64, i64 } %t412, ptr %a418 + call void @finch_str_drop(ptr %a418) + %t419 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 + %t420 = load { ptr, i64, i64 }, ptr %t419 + store { ptr, i64, i64 } %t417, ptr %t419 + store { ptr, i64, i64 } %t420, ptr %a421 + call void @finch_str_drop(ptr %a421) + br label %endif751 +else750: + %t422 = load i8, ptr %a43 + %t423 = icmp eq i8 %t422, 34 + br label %logic.from855 +logic.from855: + br i1 %t423, label %logic.end857, label %logic.rhs856 +logic.rhs856: + %t424 = load i8, ptr %a43 + %t425 = icmp eq i8 %t424, 39 + br label %logic.rend858 +logic.rend858: + br label %logic.end857 +logic.end857: + %t426 = phi i1 [ true, %logic.from855 ], [ %t425, %logic.rend858 ] + br i1 %t426, label %then859, label %else860 +then859: + %t427 = load i8, ptr %a43 + store i8 %t427, ptr %a428 + %t429 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 + %t430 = load { ptr, i64, i64 }, ptr %t429 + store { ptr, i64, i64 } { ptr @.str.477, i64 6, i64 0 }, ptr %t429 + store { ptr, i64, i64 } %t430, ptr %a431 + call void @finch_str_drop(ptr %a431) + %t432 = load i8, ptr %a428 + %t433 = icmp eq i8 %t432, 39 + br i1 %t433, label %then862, label %endif864 +then862: + %t434 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 + %t435 = load { ptr, i64, i64 }, ptr %t434 + store { ptr, i64, i64 } { ptr @.str.478, i64 4, i64 0 }, ptr %t434 + store { ptr, i64, i64 } %t435, ptr %a436 + call void @finch_str_drop(ptr %a436) + br label %endif864 +endif864: + %t437 = load ptr, ptr %a18 + call void @finch.lexer.advance(ptr %t437) + store { ptr, i64, i64 } zeroinitializer, ptr %a438 + br label %while.cond865 +while.cond865: + %t439 = load ptr, ptr %a18 + %t440 = call i8 @finch.lexer.peek(ptr %t439, i64 0) + %t441 = load i8, ptr %a428 + %t442 = icmp ne i8 %t440, %t441 + br i1 %t442, label %while.body866, label %while.end867 +while.body866: + %t443 = load ptr, ptr %a18 + %t444 = call i8 @finch.lexer.peek(ptr %t443, i64 0) + %t445 = trunc i64 0 to i8 + %t446 = icmp eq i8 %t444, %t445 + br label %logic.from868 +logic.from868: + br i1 %t446, label %logic.end870, label %logic.rhs869 +logic.rhs869: + %t447 = load ptr, ptr %a18 + %t448 = call i8 @finch.lexer.peek(ptr %t447, i64 0) + %t449 = icmp eq i8 %t448, 10 + br label %logic.rend871 +logic.rend871: + br label %logic.end870 +logic.end870: + %t450 = phi i1 [ true, %logic.from868 ], [ %t449, %logic.rend871 ] + br i1 %t450, label %then872, label %endif874 +then872: + %t451 = load i8, ptr %a428 + %t452 = icmp eq i8 %t451, 34 + br i1 %t452, label %then875, label %endif877 +then875: + %t453 = load ptr, ptr %a18 + %t454 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 2 + %t455 = load i64, ptr %t454 + %t456 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 3 + %t457 = load i64, ptr %t456 + call void @finch.lexer.fail(ptr %t453, i64 %t455, i64 %t457, { ptr, i64, i64 } { ptr @.str.479, i64 34, i64 0 }) + br label %endif877 +endif877: + %t458 = load ptr, ptr %a18 + %t459 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 2 + %t460 = load i64, ptr %t459 + %t461 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 3 + %t462 = load i64, ptr %t461 + call void @finch.lexer.fail(ptr %t458, i64 %t460, i64 %t462, { ptr, i64, i64 } { ptr @.str.480, i64 32, i64 0 }) + br label %endif874 +endif874: + %t463 = load ptr, ptr %a18 + %t464 = call i8 @finch.lexer.peek(ptr %t463, i64 0) + store i8 %t464, ptr %a465 + %t466 = load ptr, ptr %a18 + call void @finch.lexer.advance(ptr %t466) + %t467 = load i8, ptr %a465 + %t468 = icmp eq i8 %t467, 92 + br i1 %t468, label %then878, label %endif880 +then878: + %t469 = load ptr, ptr %a18 + %t470 = call i8 @finch.lexer.peek(ptr %t469, i64 0) + store i8 %t470, ptr %a471 + %t472 = load ptr, ptr %a18 + call void @finch.lexer.advance(ptr %t472) + %t473 = load ptr, ptr %a18 + %t474 = load i8, ptr %a471 + %t475 = call i8 @finch.lexer.escape(ptr %t473, i8 %t474) + store i8 %t475, ptr %a465 + br label %endif880 +endif880: + %t476 = getelementptr inbounds { ptr, i64, i64 }, ptr %a438, i32 0, i32 1 + %t477 = load i8, ptr %a465 + call void @finch_str_from_char(ptr %a478, i8 signext %t477) + %t479 = load { ptr, i64, i64 }, ptr %a478 + %t480 = load i64, ptr %t476 + %t481 = add i64 %t480, 1 + call void @finch_arr_reserve(ptr %a438, i64 %t481, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t482 = load ptr, ptr %a438 + %t483 = getelementptr inbounds { ptr, i64, i64 }, ptr %t482, i64 %t480 + store { ptr, i64, i64 } %t479, ptr %t483 + store i64 %t481, ptr %t476 + br label %while.cond865 +while.end867: + %t484 = load ptr, ptr %a18 + call void @finch.lexer.advance(ptr %t484) + %t485 = getelementptr inbounds { ptr, i64, i64 }, ptr %a438, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.481, i64 0, i64 0 }, ptr %a486 + call void @finch_str_join(ptr %a487, ptr %a438, ptr %a486) + %t488 = load { ptr, i64, i64 }, ptr %a487 + %t489 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 + %t490 = load { ptr, i64, i64 }, ptr %t489 + store { ptr, i64, i64 } %t488, ptr %t489 + store { ptr, i64, i64 } %t490, ptr %a491 + call void @finch_str_drop(ptr %a491) + %t492 = load i8, ptr %a428 + %t493 = icmp eq i8 %t492, 39 + br label %logic.from881 +logic.from881: + br i1 %t493, label %logic.rhs882, label %logic.end883 +logic.rhs882: + %t494 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 + %t495 = getelementptr inbounds { ptr, i64, i64 }, ptr %t494, i32 0, i32 1 + %t496 = load i64, ptr %t495 + %t497 = icmp ne i64 %t496, 1 + br label %logic.rend884 +logic.rend884: + br label %logic.end883 +logic.end883: + %t498 = phi i1 [ false, %logic.from881 ], [ %t497, %logic.rend884 ] + br i1 %t498, label %then885, label %endif887 +then885: + %t499 = load ptr, ptr %a18 + %t500 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 2 + %t501 = load i64, ptr %t500 + %t502 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 3 + %t503 = load i64, ptr %t502 + call void @finch.lexer.fail(ptr %t499, i64 %t501, i64 %t503, { ptr, i64, i64 } { ptr @.str.482, i64 44, i64 0 }) + br label %endif887 +endif887: + call void @finch.drop.arr_str(ptr %a438) + br label %endif861 +else860: + %t504 = load ptr, ptr %a18 + %t505 = call { ptr, i64, i64 } @finch.lexer.operator(ptr %t504) + store { ptr, i64, i64 } %t505, ptr %a506 + %t507 = getelementptr inbounds { ptr, i64, i64 }, ptr %a506, i32 0, i32 1 + %t508 = load i64, ptr %t507 + %t509 = icmp eq i64 %t508, 0 + br i1 %t509, label %then888, label %endif890 +then888: + store i64 1, ptr %a510 + %t511 = load i8, ptr %a43 + %t512 = zext i8 %t511 to i64 + %t513 = and i64 %t512, 224 + %t514 = icmp eq i64 %t513, 192 + br i1 %t514, label %then891, label %else892 +then891: + store i64 2, ptr %a510 + br label %endif893 +else892: + %t515 = load i8, ptr %a43 + %t516 = zext i8 %t515 to i64 + %t517 = and i64 %t516, 240 + %t518 = icmp eq i64 %t517, 224 + br i1 %t518, label %then894, label %else895 +then894: + store i64 3, ptr %a510 + br label %endif896 +else895: + %t519 = load i8, ptr %a43 + %t520 = zext i8 %t519 to i64 + %t521 = and i64 %t520, 248 + %t522 = icmp eq i64 %t521, 240 + br i1 %t522, label %then897, label %endif899 +then897: + store i64 4, ptr %a510 + br label %endif899 +endif899: + br label %endif896 +endif896: + br label %endif893 +endif893: + store { ptr, i64, i64 } { ptr @.str.483, i64 0, i64 0 }, ptr %a523 + %t524 = load i8, ptr %a43 + %t525 = zext i8 %t524 to i64 + %t526 = icmp sge i64 %t525, 128 + br i1 %t526, label %then900, label %endif902 +then900: + %t527 = load { ptr, i64, i64 }, ptr %a523 + store { ptr, i64, i64 } { ptr @.str.484, i64 74, i64 0 }, ptr %a523 + store { ptr, i64, i64 } %t527, ptr %a528 + call void @finch_str_drop(ptr %a528) + br label %endif902 +endif902: + %t529 = load ptr, ptr %a18 + %t530 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 2 + %t531 = load i64, ptr %t530 + %t532 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 3 + %t533 = load i64, ptr %t532 + %t534 = load ptr, ptr %a18 + %t535 = icmp eq ptr %t534, null + br i1 %t535, label %panic903, label %ok904 +panic903: + call void @finch_panic(ptr @.str.486, i64 211, ptr @.str.487) + unreachable +ok904: + %t536 = getelementptr inbounds %S.lexer.Lexer, ptr %t534, i32 0, i32 0 + %t537 = load { ptr, i64, i64 }, ptr %t536 + store { ptr, i64, i64 } %t537, ptr %a538 + %t540 = load ptr, ptr %a18 + %t541 = icmp eq ptr %t540, null + br i1 %t541, label %panic905, label %ok906 +panic905: + call void @finch_panic(ptr @.str.489, i64 211, ptr @.str.490) + unreachable +ok906: + %t542 = getelementptr inbounds %S.lexer.Lexer, ptr %t540, i32 0, i32 2 + %t543 = load i64, ptr %t542 + %t544 = load ptr, ptr %a18 + %t545 = icmp eq ptr %t544, null + br i1 %t545, label %panic907, label %ok908 +panic907: + call void @finch_panic(ptr @.str.491, i64 211, ptr @.str.492) + unreachable +ok908: + %t546 = getelementptr inbounds %S.lexer.Lexer, ptr %t544, i32 0, i32 2 + %t547 = load i64, ptr %t546 + %t548 = load i64, ptr %a510 + %t549 = add i64 %t547, %t548 + call void @finch_str_sub(ptr %a539, ptr %a538, i64 %t543, i64 %t549, ptr @.str.488, i64 211) + %t550 = load { ptr, i64, i64 }, ptr %a539 + store { ptr, i64, i64 } { ptr @.str.485, i64 22, i64 0 }, ptr %a552 + store { ptr, i64, i64 } %t550, ptr %a553 + call void @finch_str_concat(ptr %a551, ptr %a552, ptr %a553) + store { ptr, i64, i64 } %t550, ptr %a554 + call void @finch_str_drop(ptr %a554) + %t555 = load { ptr, i64, i64 }, ptr %a551 + store { ptr, i64, i64 } %t555, ptr %a557 + store { ptr, i64, i64 } { ptr @.str.493, i64 1, i64 0 }, ptr %a558 + call void @finch_str_concat(ptr %a556, ptr %a557, ptr %a558) + store { ptr, i64, i64 } %t555, ptr %a559 + call void @finch_str_drop(ptr %a559) + %t560 = load { ptr, i64, i64 }, ptr %a556 + %t561 = load { ptr, i64, i64 }, ptr %a523 + store { ptr, i64, i64 } %t560, ptr %a563 + store { ptr, i64, i64 } %t561, ptr %a564 + call void @finch_str_concat(ptr %a562, ptr %a563, ptr %a564) + store { ptr, i64, i64 } %t560, ptr %a565 + call void @finch_str_drop(ptr %a565) + %t566 = load { ptr, i64, i64 }, ptr %a562 + call void @finch.lexer.fail(ptr %t529, i64 %t531, i64 %t533, { ptr, i64, i64 } %t566) + store { ptr, i64, i64 } %t566, ptr %a567 + call void @finch_str_drop(ptr %a567) + call void @finch_str_drop(ptr %a523) + br label %endif890 +endif890: + %t568 = getelementptr inbounds { ptr, i64, i64 }, ptr %a506, i32 0, i32 1 + %t569 = load i64, ptr %t568 + store i64 0, ptr %a570 + br label %for.cond909 +for.cond909: + %t571 = load i64, ptr %a570 + %t572 = icmp slt i64 %t571, %t569 + br i1 %t572, label %for.body910, label %for.end912 +for.body910: + %t573 = load ptr, ptr %a18 + call void @finch.lexer.advance(ptr %t573) + br label %for.step911 +for.step911: + %t574 = load i64, ptr %a570 + %t575 = add i64 %t574, 1 + store i64 %t575, ptr %a570 + br label %for.cond909 +for.end912: + %t576 = load { ptr, i64, i64 }, ptr %a506 + %t577 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 + store { ptr, i64, i64 } %t576, ptr %a578 + call void @finch_str_copy(ptr %a579, ptr %a578) + %t580 = load { ptr, i64, i64 }, ptr %a579 + %t581 = load { ptr, i64, i64 }, ptr %t577 + store { ptr, i64, i64 } %t580, ptr %t577 + store { ptr, i64, i64 } %t581, ptr %a582 + call void @finch_str_drop(ptr %a582) + %t583 = load { ptr, i64, i64 }, ptr %a506 + %t584 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 + store { ptr, i64, i64 } %t583, ptr %a585 + call void @finch_str_copy(ptr %a586, ptr %a585) + %t587 = load { ptr, i64, i64 }, ptr %a586 + %t588 = load { ptr, i64, i64 }, ptr %t584 + store { ptr, i64, i64 } %t587, ptr %t584 store { ptr, i64, i64 } %t588, ptr %a589 - call void @finch.copy.arr_S_lexer_Token(ptr %a590, ptr %a589) - %t591 = load { ptr, i64, i64 }, ptr %a590 - ret { ptr, i64, i64 } %t591 + call void @finch_str_drop(ptr %a589) + call void @finch_str_drop(ptr %a506) + br label %endif861 +endif861: + br label %endif751 +endif751: + br label %endif714 +endif714: + %t590 = getelementptr inbounds { ptr, i64, i64 }, ptr %a19, i32 0, i32 1 + %t591 = load %S.lexer.Token, ptr %a169 + store %S.lexer.Token %t591, ptr %a592 + call void @finch.copy.S_lexer_Token(ptr %a593, ptr %a592) + %t594 = load %S.lexer.Token, ptr %a593 + %t595 = load i64, ptr %t590 + %t596 = add i64 %t595, 1 + call void @finch_arr_reserve(ptr %a19, i64 %t596, i64 ptrtoint (ptr getelementptr (%S.lexer.Token, ptr null, i32 1) to i64)) + %t597 = load ptr, ptr %a19 + %t598 = getelementptr inbounds %S.lexer.Token, ptr %t597, i64 %t595 + store %S.lexer.Token %t594, ptr %t598 + store i64 %t596, ptr %t590 + call void @finch.drop.S_lexer_Token(ptr %a169) + br label %while.cond611 +while.end613: + %t599 = getelementptr inbounds { ptr, i64, i64 }, ptr %a19, i32 0, i32 1 + %t600 = insertvalue %S.lexer.Token zeroinitializer, { ptr, i64, i64 } { ptr @.str.494, i64 3, i64 0 }, 0 + %t601 = insertvalue %S.lexer.Token %t600, { ptr, i64, i64 } { ptr @.str.495, i64 0, i64 0 }, 1 + %t602 = load ptr, ptr %a18 + %t603 = icmp eq ptr %t602, null + br i1 %t603, label %panic913, label %ok914 +panic913: + call void @finch_panic(ptr @.str.496, i64 221, ptr @.str.497) + unreachable +ok914: + %t604 = getelementptr inbounds %S.lexer.Lexer, ptr %t602, i32 0, i32 3 + %t605 = load i64, ptr %t604 + %t606 = insertvalue %S.lexer.Token %t601, i64 %t605, 2 + %t607 = load ptr, ptr %a18 + %t608 = icmp eq ptr %t607, null + br i1 %t608, label %panic915, label %ok916 +panic915: + call void @finch_panic(ptr @.str.498, i64 221, ptr @.str.499) + unreachable +ok916: + %t609 = getelementptr inbounds %S.lexer.Lexer, ptr %t607, i32 0, i32 4 + %t610 = load i64, ptr %t609 + %t611 = insertvalue %S.lexer.Token %t606, i64 %t610, 3 + %t612 = insertvalue %S.lexer.Token %t611, i1 true, 4 + %t613 = load i64, ptr %t599 + %t614 = add i64 %t613, 1 + call void @finch_arr_reserve(ptr %a19, i64 %t614, i64 ptrtoint (ptr getelementptr (%S.lexer.Token, ptr null, i32 1) to i64)) + %t615 = load ptr, ptr %a19 + %t616 = getelementptr inbounds %S.lexer.Token, ptr %t615, i64 %t613 + store %S.lexer.Token %t612, ptr %t616 + store i64 %t614, ptr %t599 + %t617 = load { ptr, i64, i64 }, ptr %a19 + call void @finch.drop.S_lexer_Lexer(ptr %a17) + ret { ptr, i64, i64 } %t617 } define internal %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } %p0) { @@ -12772,10 +14311,8 @@ entry: %a3 = alloca %S.ast.Type, align 16 %a7 = alloca %S.ast.Type, align 16 %a8 = alloca %S.ast.Type, align 16 - %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.491, i64 5, i64 0 }, 0 + %t2 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.500, 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 @@ -12791,10 +14328,7 @@ entry: store %S.ast.Type %t9, ptr %t13 store i64 %t11, ptr %t5 %t14 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t14, ptr %a15 - call void @finch.copy.S_ast_Type(ptr %a16, ptr %a15) - %t17 = load %S.ast.Type, ptr %a16 - ret %S.ast.Type %t17 + ret %S.ast.Type %t14 } define internal %S.ast.Type @finch.ast.mapOf(%S.ast.Type %p0, %S.ast.Type %p1) { @@ -12806,11 +14340,9 @@ entry: %a9 = alloca %S.ast.Type, align 16 %a18 = alloca %S.ast.Type, align 16 %a19 = alloca %S.ast.Type, align 16 - %a26 = alloca %S.ast.Type, align 16 - %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.492, i64 3, i64 0 }, 0 + %t3 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.501, 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 @@ -12839,10 +14371,7 @@ entry: store %S.ast.Type %t20, ptr %t24 store i64 %t22, ptr %t16 %t25 = load %S.ast.Type, ptr %a4 - store %S.ast.Type %t25, ptr %a26 - call void @finch.copy.S_ast_Type(ptr %a27, ptr %a26) - %t28 = load %S.ast.Type, ptr %a27 - ret %S.ast.Type %t28 + ret %S.ast.Type %t25 } define internal %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %p0) { @@ -12851,10 +14380,8 @@ entry: %a3 = alloca %S.ast.Type, align 16 %a7 = alloca %S.ast.Type, align 16 %a8 = alloca %S.ast.Type, align 16 - %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.493, i64 3, i64 0 }, 0 + %t2 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.502, 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 @@ -12870,10 +14397,7 @@ entry: store %S.ast.Type %t9, ptr %t13 store i64 %t11, ptr %t5 %t14 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t14, ptr %a15 - call void @finch.copy.S_ast_Type(ptr %a16, ptr %a15) - %t17 = load %S.ast.Type, ptr %a16 - ret %S.ast.Type %t17 + ret %S.ast.Type %t14 } define internal i1 @finch.ast.same(%S.ast.Type %p0, %S.ast.Type %p1) { @@ -12913,48 +14437,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 %then856, label %endif858 -then856: + br i1 %t10, label %then917, label %endif919 +then917: ret i1 false -endif858: +endif919: %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.494, i64 6, i64 0 }, ptr %a14 + store { ptr, i64, i64 } { ptr @.str.503, 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.from859 -logic.from859: - br i1 %t16, label %logic.end861, label %logic.rhs860 -logic.rhs860: + br label %logic.from920 +logic.from920: + br i1 %t16, label %logic.end922, label %logic.rhs921 +logic.rhs921: %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.495, i64 5, i64 0 }, ptr %a20 + store { ptr, i64, i64 } { ptr @.str.504, 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.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: + br label %logic.rend923 +logic.rend923: + br label %logic.end922 +logic.end922: + %t23 = phi i1 [ true, %logic.from920 ], [ %t22, %logic.rend923 ] + br label %logic.from924 +logic.from924: + br i1 %t23, label %logic.end926, label %logic.rhs925 +logic.rhs925: %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.496, i64 4, i64 0 }, ptr %a27 + store { ptr, i64, i64 } { ptr @.str.505, 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.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: + br label %logic.rend927 +logic.rend927: + br label %logic.end926 +logic.end926: + %t30 = phi i1 [ true, %logic.from924 ], [ %t29, %logic.rend927 ] + br i1 %t30, label %then928, label %endif930 +then928: %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 @@ -12963,10 +14487,10 @@ then867: 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.from870 -logic.from870: - br i1 %t38, label %logic.rhs871, label %logic.end872 -logic.rhs871: + br label %logic.from931 +logic.from931: + br i1 %t38, label %logic.rhs932, label %logic.end933 +logic.rhs932: %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 @@ -12975,90 +14499,90 @@ logic.rhs871: 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.rend873 -logic.rend873: - br label %logic.end872 -logic.end872: - %t47 = phi i1 [ false, %logic.from870 ], [ %t46, %logic.rend873 ] + br label %logic.rend934 +logic.rend934: + br label %logic.end933 +logic.end933: + %t47 = phi i1 [ false, %logic.from931 ], [ %t46, %logic.rend934 ] ret i1 %t47 -endif869: +endif930: %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.497, i64 5, i64 0 }, ptr %a51 + store { ptr, i64, i64 } { ptr @.str.506, 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.from874 -logic.from874: - br i1 %t53, label %logic.rhs875, label %logic.end876 -logic.rhs875: + br label %logic.from935 +logic.from935: + br i1 %t53, label %logic.rhs936, label %logic.end937 +logic.rhs936: %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.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: + br label %logic.rend938 +logic.rend938: + br label %logic.end937 +logic.end937: + %t59 = phi i1 [ false, %logic.from935 ], [ %t58, %logic.rend938 ] + br i1 %t59, label %then939, label %endif941 +then939: ret i1 false -endif880: +endif941: %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.498, i64 5, i64 0 }, ptr %a63 + store { ptr, i64, i64 } { ptr @.str.507, 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.from881 -logic.from881: - br i1 %t65, label %logic.end883, label %logic.rhs882 -logic.rhs882: + br label %logic.from942 +logic.from942: + br i1 %t65, label %logic.end944, label %logic.rhs943 +logic.rhs943: %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.499, i64 3, i64 0 }, ptr %a69 + store { ptr, i64, i64 } { ptr @.str.508, 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.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: + br label %logic.rend945 +logic.rend945: + br label %logic.end944 +logic.end944: + %t72 = phi i1 [ true, %logic.from942 ], [ %t71, %logic.rend945 ] + br label %logic.from946 +logic.from946: + br i1 %t72, label %logic.end948, label %logic.rhs947 +logic.rhs947: %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.500, i64 3, i64 0 }, ptr %a76 + store { ptr, i64, i64 } { ptr @.str.509, 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.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: + br label %logic.rend949 +logic.rend949: + br label %logic.end948 +logic.end948: + %t79 = phi i1 [ true, %logic.from946 ], [ %t78, %logic.rend949 ] + br label %logic.from950 +logic.from950: + br i1 %t79, label %logic.end952, label %logic.rhs951 +logic.rhs951: %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.501, i64 5, i64 0 }, ptr %a83 + store { ptr, i64, i64 } { ptr @.str.510, 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.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: + br label %logic.rend953 +logic.rend953: + br label %logic.end952 +logic.end952: + %t86 = phi i1 [ true, %logic.from950 ], [ %t85, %logic.rend953 ] + br i1 %t86, label %then954, label %endif956 +then954: %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 @@ -13066,30 +14590,30 @@ then893: %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 %then896, label %endif898 -then896: + br i1 %t93, label %then957, label %endif959 +then957: ret i1 false -endif898: +endif959: %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.cond899 -for.cond899: + br label %for.cond960 +for.cond960: %t98 = load i64, ptr %a97 %t99 = icmp slt i64 %t98, %t96 - br i1 %t99, label %for.body900, label %for.end902 -for.body900: + br i1 %t99, label %for.body961, label %for.end963 +for.body961: %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 %range903, label %inrange904 -range903: - call void @finch_panic_index(ptr @.str.502, i64 54, i64 %t101, i64 %t103) + br i1 %t104, label %range964, label %inrange965 +range964: + call void @finch_panic_index(ptr @.str.511, i64 54, i64 %t101, i64 %t103) unreachable -inrange904: +inrange965: %t105 = extractvalue { ptr, i64, i64 } %t102, 0 %t106 = getelementptr inbounds %S.ast.Type, ptr %t105, i64 %t101 %t107 = load %S.ast.Type, ptr %t106 @@ -13098,29 +14622,29 @@ inrange904: %t110 = load { ptr, i64, i64 }, ptr %t108 %t111 = extractvalue { ptr, i64, i64 } %t110, 1 %t112 = icmp uge i64 %t109, %t111 - br i1 %t112, label %range905, label %inrange906 -range905: - call void @finch_panic_index(ptr @.str.503, i64 54, i64 %t109, i64 %t111) + br i1 %t112, label %range966, label %inrange967 +range966: + call void @finch_panic_index(ptr @.str.512, i64 54, i64 %t109, i64 %t111) unreachable -inrange906: +inrange967: %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 %then907, label %endif909 -then907: + br i1 %t117, label %then968, label %endif970 +then968: ret i1 false -endif909: - br label %for.step901 -for.step901: +endif970: + br label %for.step962 +for.step962: %t118 = load i64, ptr %a97 %t119 = add i64 %t118, 1 store i64 %t119, ptr %a97 - br label %for.cond899 -for.end902: + br label %for.cond960 +for.end963: ret i1 true -endif895: +endif956: ret i1 true } @@ -13132,290 +14656,326 @@ entry: %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 + %a19 = alloca { ptr, i64, i64 }, align 16 %a23 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 + %a24 = 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 %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 %a36 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 + %a37 = alloca { ptr, i64, i64 }, align 16 + %a38 = alloca { ptr, i64, i64 }, align 16 + %a39 = 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 %a52 = alloca { ptr, i64, i64 }, align 16 %a53 = 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 + %a57 = alloca { ptr, i64, i64 }, align 16 + %a58 = 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 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 + %a71 = alloca { ptr, i64, i64 }, align 16 + %a72 = alloca { ptr, i64, i64 }, align 16 + %a74 = 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 %a87 = 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 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = 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 + %a91 = alloca { ptr, i64, i64 }, align 16 + %a95 = alloca { ptr, i64, i64 }, align 16 + %a96 = 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 + %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 %a119 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 + %a123 = alloca { ptr, i64, i64 }, align 16 + %a124 = alloca { ptr, i64, i64 }, align 16 + %a129 = alloca { ptr, i64, i64 }, align 16 + %a130 = alloca { ptr, i64, i64 }, align 16 %a136 = alloca { ptr, i64, i64 }, align 16 %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 + %a147 = alloca { ptr, i64, i64 }, align 16 %a148 = alloca { ptr, i64, i64 }, align 16 %a149 = alloca { ptr, i64, i64 }, align 16 %a153 = alloca { ptr, i64, i64 }, align 16 %a154 = alloca { ptr, i64, i64 }, align 16 - %a159 = 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 + %a165 = alloca { ptr, i64, i64 }, align 16 + %a166 = alloca { ptr, i64, i64 }, align 16 + %a171 = alloca { ptr, i64, i64 }, align 16 + %a172 = alloca { ptr, i64, i64 }, align 16 store %S.ast.Type %p0, ptr %a1 %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.504, i64 5, i64 0 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.513, 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 %then910, label %endif912 -then910: + br i1 %t7, label %then971, label %endif973 +then971: %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 %range913, label %inrange914 -range913: - call void @finch_panic_index(ptr @.str.506, i64 65, i64 0, i64 %t10) + br i1 %t11, label %range974, label %inrange975 +range974: + call void @finch_panic_index(ptr @.str.515, i64 65, i64 0, i64 %t10) unreachable -inrange914: +inrange975: %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.505, i64 2, i64 0 }, ptr %a17 + store { ptr, i64, i64 } { ptr @.str.514, 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 -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.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 %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.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.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 %range918, label %inrange919 -range918: - call void @finch_panic_index(ptr @.str.510, i64 68, i64 0, i64 %t40) + store { ptr, i64, i64 } %t15, ptr %a19 + call void @finch_str_drop(ptr %a19) + %t20 = load { ptr, i64, i64 }, ptr %a16 + ret { ptr, i64, i64 } %t20 +endif973: + %t21 = getelementptr inbounds %S.ast.Type, 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.516, i64 5, i64 0 }, ptr %a24 + %t25 = call i32 @finch_str_eq(ptr %a23, ptr %a24) + %t26 = icmp ne i32 %t25, 0 + br i1 %t26, label %then976, label %endif978 +then976: + %t27 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 4 + %t28 = load i64, ptr %t27 + call void @finch_str_from_int(ptr %a29, i64 %t28) + %t30 = load { ptr, i64, i64 }, ptr %a29 + store { ptr, i64, i64 } { ptr @.str.517, i64 1, i64 0 }, ptr %a32 + store { ptr, i64, i64 } %t30, ptr %a33 + call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) + store { ptr, i64, i64 } %t30, ptr %a34 + call void @finch_str_drop(ptr %a34) + %t35 = load { ptr, i64, i64 }, ptr %a31 + store { ptr, i64, i64 } %t35, ptr %a37 + store { ptr, i64, i64 } { ptr @.str.518, i64 1, i64 0 }, ptr %a38 + call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) + store { ptr, i64, i64 } %t35, ptr %a39 + call void @finch_str_drop(ptr %a39) + %t40 = load { ptr, i64, i64 }, ptr %a36 + %t41 = getelementptr inbounds %S.ast.Type, ptr %a1, 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 %range979, label %inrange980 +range979: + call void @finch_panic_index(ptr @.str.519, i64 68, i64 0, i64 %t43) unreachable -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 - %t45 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t44) - store { ptr, i64, i64 } %t37, ptr %a47 - store { ptr, i64, i64 } %t45, ptr %a48 - call void @finch_str_concat(ptr %a46, ptr %a47, ptr %a48) - %t49 = load { ptr, i64, i64 }, ptr %a46 - ret { ptr, i64, i64 } %t49 -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.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 %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 %range923, label %inrange924 -range923: - call void @finch_panic_index(ptr @.str.513, i64 71, i64 0, i64 %t58) +inrange980: + %t45 = extractvalue { ptr, i64, i64 } %t42, 0 + %t46 = getelementptr inbounds %S.ast.Type, ptr %t45, i64 0 + %t47 = load %S.ast.Type, ptr %t46 + %t48 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t47) + store { ptr, i64, i64 } %t40, ptr %a50 + store { ptr, i64, i64 } %t48, ptr %a51 + call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) + store { ptr, i64, i64 } %t40, ptr %a52 + call void @finch_str_drop(ptr %a52) + store { ptr, i64, i64 } %t48, ptr %a53 + call void @finch_str_drop(ptr %a53) + %t54 = load { ptr, i64, i64 }, ptr %a49 + ret { ptr, i64, i64 } %t54 +endif978: + %t55 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 + %t56 = load { ptr, i64, i64 }, ptr %t55 + store { ptr, i64, i64 } %t56, ptr %a57 + store { ptr, i64, i64 } { ptr @.str.520, i64 3, i64 0 }, ptr %a58 + %t59 = call i32 @finch_str_eq(ptr %a57, ptr %a58) + %t60 = icmp ne i32 %t59, 0 + br i1 %t60, label %then981, label %endif983 +then981: + %t61 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 + %t62 = load { ptr, i64, i64 }, ptr %t61 + %t63 = extractvalue { ptr, i64, i64 } %t62, 1 + %t64 = icmp uge i64 0, %t63 + br i1 %t64, label %range984, label %inrange985 +range984: + call void @finch_panic_index(ptr @.str.522, i64 71, i64 0, i64 %t63) unreachable -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.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.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 %range925, label %inrange926 -range925: - call void @finch_panic_index(ptr @.str.515, i64 71, i64 1, i64 %t74) +inrange985: + %t65 = extractvalue { ptr, i64, i64 } %t62, 0 + %t66 = getelementptr inbounds %S.ast.Type, ptr %t65, i64 0 + %t67 = load %S.ast.Type, ptr %t66 + %t68 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t67) + store { ptr, i64, i64 } { ptr @.str.521, i64 4, i64 0 }, ptr %a70 + store { ptr, i64, i64 } %t68, ptr %a71 + call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) + store { ptr, i64, i64 } %t68, ptr %a72 + call void @finch_str_drop(ptr %a72) + %t73 = load { ptr, i64, i64 }, ptr %a69 + store { ptr, i64, i64 } %t73, ptr %a75 + store { ptr, i64, i64 } { ptr @.str.523, i64 1, i64 0 }, ptr %a76 + call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) + store { ptr, i64, i64 } %t73, ptr %a77 + call void @finch_str_drop(ptr %a77) + %t78 = load { ptr, i64, i64 }, ptr %a74 + %t79 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 + %t80 = load { ptr, i64, i64 }, ptr %t79 + %t81 = extractvalue { ptr, i64, i64 } %t80, 1 + %t82 = icmp uge i64 1, %t81 + br i1 %t82, label %range986, label %inrange987 +range986: + call void @finch_panic_index(ptr @.str.524, i64 71, i64 1, i64 %t81) unreachable -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 - %t79 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t78) - store { ptr, i64, i64 } %t71, 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 - ret { ptr, i64, i64 } %t83 -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.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 %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 %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 %range933, label %inrange934 -range933: - call void @finch_panic_index(ptr @.str.519, i64 77, i64 0, i64 %t96) +inrange987: + %t83 = extractvalue { ptr, i64, i64 } %t80, 0 + %t84 = getelementptr inbounds %S.ast.Type, ptr %t83, i64 1 + %t85 = load %S.ast.Type, ptr %t84 + %t86 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t85) + store { ptr, i64, i64 } %t78, ptr %a88 + store { ptr, i64, i64 } %t86, ptr %a89 + call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89) + store { ptr, i64, i64 } %t78, ptr %a90 + call void @finch_str_drop(ptr %a90) + store { ptr, i64, i64 } %t86, ptr %a91 + call void @finch_str_drop(ptr %a91) + %t92 = load { ptr, i64, i64 }, ptr %a87 + ret { ptr, i64, i64 } %t92 +endif983: + %t93 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 + %t94 = load { ptr, i64, i64 }, ptr %t93 + store { ptr, i64, i64 } %t94, ptr %a95 + store { ptr, i64, i64 } { ptr @.str.525, i64 3, i64 0 }, ptr %a96 + %t97 = call i32 @finch_str_eq(ptr %a95, ptr %a96) + %t98 = icmp ne i32 %t97, 0 + br i1 %t98, label %then988, label %endif990 +then988: + %t99 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 + %t100 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i32 0, i32 1 + %t101 = load i64, ptr %t100 + %t102 = icmp eq i64 %t101, 0 + br i1 %t102, label %then991, label %endif993 +then991: + ret { ptr, i64, i64 } { ptr @.str.526, i64 3, i64 0 } +endif993: + %t103 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 + %t104 = load { ptr, i64, i64 }, ptr %t103 + %t105 = extractvalue { ptr, i64, i64 } %t104, 1 + %t106 = icmp uge i64 0, %t105 + br i1 %t106, label %range994, label %inrange995 +range994: + call void @finch_panic_index(ptr @.str.528, i64 77, i64 0, i64 %t105) unreachable -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.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.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 -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.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.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.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.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.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.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 %then946, label %endif948 -then946: - %t134 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 3 +inrange995: + %t107 = extractvalue { ptr, i64, i64 } %t104, 0 + %t108 = getelementptr inbounds %S.ast.Type, ptr %t107, i64 0 + %t109 = load %S.ast.Type, ptr %t108 + %t110 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t109) + store { ptr, i64, i64 } { ptr @.str.527, i64 4, i64 0 }, ptr %a112 + store { ptr, i64, i64 } %t110, ptr %a113 + call void @finch_str_concat(ptr %a111, ptr %a112, ptr %a113) + store { ptr, i64, i64 } %t110, ptr %a114 + call void @finch_str_drop(ptr %a114) + %t115 = load { ptr, i64, i64 }, ptr %a111 + store { ptr, i64, i64 } %t115, ptr %a117 + store { ptr, i64, i64 } { ptr @.str.529, i64 1, i64 0 }, ptr %a118 + call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118) + store { ptr, i64, i64 } %t115, ptr %a119 + call void @finch_str_drop(ptr %a119) + %t120 = load { ptr, i64, i64 }, ptr %a116 + ret { ptr, i64, i64 } %t120 +endif990: + %t121 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 + %t122 = load { ptr, i64, i64 }, ptr %t121 + store { ptr, i64, i64 } %t122, ptr %a123 + store { ptr, i64, i64 } { ptr @.str.530, i64 6, i64 0 }, ptr %a124 + %t125 = call i32 @finch_str_eq(ptr %a123, ptr %a124) + %t126 = icmp ne i32 %t125, 0 + br label %logic.from996 +logic.from996: + br i1 %t126, label %logic.end998, label %logic.rhs997 +logic.rhs997: + %t127 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 + %t128 = load { ptr, i64, i64 }, ptr %t127 + store { ptr, i64, i64 } %t128, ptr %a129 + store { ptr, i64, i64 } { ptr @.str.531, i64 5, i64 0 }, ptr %a130 + %t131 = call i32 @finch_str_eq(ptr %a129, ptr %a130) + %t132 = icmp ne i32 %t131, 0 + br label %logic.rend999 +logic.rend999: + br label %logic.end998 +logic.end998: + %t133 = phi i1 [ true, %logic.from996 ], [ %t132, %logic.rend999 ] + br label %logic.from1000 +logic.from1000: + br i1 %t133, label %logic.end1002, label %logic.rhs1001 +logic.rhs1001: + %t134 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 %t135 = load { ptr, i64, i64 }, ptr %t134 - store { ptr, i64, i64 } %t135, ptr %a137 - 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 - %t141 = load { ptr, i64, i64 }, ptr %t140 - store { ptr, i64, i64 } %t139, ptr %a143 - store { ptr, i64, i64 } %t141, ptr %a144 - call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144) - %t145 = load { ptr, i64, i64 }, ptr %a142 - ret { ptr, i64, i64 } %t145 -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 -endif945: - %t151 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 + store { ptr, i64, i64 } %t135, ptr %a136 + store { ptr, i64, i64 } { ptr @.str.532, i64 4, i64 0 }, ptr %a137 + %t138 = call i32 @finch_str_eq(ptr %a136, ptr %a137) + %t139 = icmp ne i32 %t138, 0 + br label %logic.rend1003 +logic.rend1003: + br label %logic.end1002 +logic.end1002: + %t140 = phi i1 [ true, %logic.from1000 ], [ %t139, %logic.rend1003 ] + br i1 %t140, label %then1004, label %endif1006 +then1004: + %t141 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 3 + %t142 = getelementptr inbounds { ptr, i64, i64 }, ptr %t141, i32 0, i32 1 + %t143 = load i64, ptr %t142 + %t144 = icmp sgt i64 %t143, 0 + br i1 %t144, label %then1007, label %endif1009 +then1007: + %t145 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 3 + %t146 = load { ptr, i64, i64 }, ptr %t145 + store { ptr, i64, i64 } %t146, ptr %a148 + store { ptr, i64, i64 } { ptr @.str.533, i64 1, 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.Type, ptr %a1, i32 0, i32 2 %t152 = load { ptr, i64, i64 }, ptr %t151 - store { ptr, i64, i64 } %t152, ptr %a153 - 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 %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 - call void @finch_str_copy(ptr %a160, ptr %a159) - %t161 = load { ptr, i64, i64 }, ptr %a160 - ret { ptr, i64, i64 } %t161 + store { ptr, i64, i64 } %t150, ptr %a154 + store { ptr, i64, i64 } %t152, ptr %a155 + call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155) + store { ptr, i64, i64 } %t150, ptr %a156 + call void @finch_str_drop(ptr %a156) + %t157 = load { ptr, i64, i64 }, ptr %a153 + ret { ptr, i64, i64 } %t157 +endif1009: + %t158 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 2 + %t159 = load { ptr, i64, i64 }, ptr %t158 + store { ptr, i64, i64 } %t159, ptr %a160 + call void @finch_str_copy(ptr %a161, ptr %a160) + %t162 = load { ptr, i64, i64 }, ptr %a161 + ret { ptr, i64, i64 } %t162 +endif1006: + %t163 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 + %t164 = load { ptr, i64, i64 }, ptr %t163 + store { ptr, i64, i64 } %t164, ptr %a165 + store { ptr, i64, i64 } { ptr @.str.534, i64 4, i64 0 }, ptr %a166 + %t167 = call i32 @finch_str_eq(ptr %a165, ptr %a166) + %t168 = icmp ne i32 %t167, 0 + br i1 %t168, label %then1010, label %endif1012 +then1010: + ret { ptr, i64, i64 } { ptr @.str.535, i64 7, i64 0 } +endif1012: + %t169 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 + %t170 = load { ptr, i64, i64 }, ptr %t169 + store { ptr, i64, i64 } %t170, ptr %a171 + call void @finch_str_copy(ptr %a172, ptr %a171) + %t173 = load { ptr, i64, i64 }, ptr %a172 + ret { ptr, i64, i64 } %t173 } define internal void @finch.parser.fail(ptr %p0, %S.lexer.Token %p1, { ptr, i64, i64 } %p2) { @@ -13430,33 +14990,41 @@ entry: %a16 = 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 %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 %a22 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a28 = 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 %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = 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 %a34 = alloca { ptr, i64, i64 }, align 16 + %a35 = alloca { ptr, i64, i64 }, align 16 %a37 = alloca { ptr, i64, i64 }, align 16 %a38 = alloca { ptr, i64, i64 }, align 16 %a39 = alloca { ptr, i64, i64 }, align 16 + %a40 = 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 + %a46 = alloca { ptr, i64, i64 }, align 16 + %a54 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store %S.lexer.Token %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 %panic952, label %ok953 -panic952: - call void @finch_panic(ptr @.str.527, i64 14, ptr @.str.528) + br i1 %t5, label %panic1013, label %ok1014 +panic1013: + call void @finch_panic(ptr @.str.536, i64 14, ptr @.str.537) unreachable -ok953: +ok1014: %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.529, i64 1, i64 0 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.538, 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 @@ -13466,38 +15034,54 @@ ok953: store { ptr, i64, i64 } %t11, 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.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 - %t25 = load i64, ptr %t24 - call void @finch_str_from_int(ptr %a26, i64 %t25) - %t27 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t23, 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.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 - store { ptr, i64, i64 } %t35, ptr %a38 - store { ptr, i64, i64 } %t36, ptr %a39 + store { ptr, i64, i64 } %t11, ptr %a19 + call void @finch_str_drop(ptr %a19) + store { ptr, i64, i64 } %t15, ptr %a20 + call void @finch_str_drop(ptr %a20) + %t21 = load { ptr, i64, i64 }, ptr %a16 + store { ptr, i64, i64 } %t21, ptr %a23 + store { ptr, i64, i64 } { ptr @.str.539, i64 1, i64 0 }, ptr %a24 + call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) + store { ptr, i64, i64 } %t21, ptr %a25 + call void @finch_str_drop(ptr %a25) + %t26 = load { ptr, i64, i64 }, ptr %a22 + %t27 = getelementptr inbounds %S.lexer.Token, ptr %a2, i32 0, i32 3 + %t28 = load i64, ptr %t27 + call void @finch_str_from_int(ptr %a29, i64 %t28) + %t30 = load { ptr, i64, i64 }, ptr %a29 + store { ptr, i64, i64 } %t26, ptr %a32 + store { ptr, i64, i64 } %t30, ptr %a33 + call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) + store { ptr, i64, i64 } %t26, ptr %a34 + call void @finch_str_drop(ptr %a34) + store { ptr, i64, i64 } %t30, ptr %a35 + call void @finch_str_drop(ptr %a35) + %t36 = load { ptr, i64, i64 }, ptr %a31 + store { ptr, i64, i64 } %t36, ptr %a38 + store { ptr, i64, i64 } { ptr @.str.540, i64 9, i64 0 }, ptr %a39 call void @finch_str_concat(ptr %a37, ptr %a38, ptr %a39) - %t40 = load { ptr, i64, i64 }, ptr %a37 - %t41 = extractvalue { ptr, i64, i64 } %t40, 1 - %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.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) + store { ptr, i64, i64 } %t36, ptr %a40 + call void @finch_str_drop(ptr %a40) + %t41 = load { ptr, i64, i64 }, ptr %a37 + %t42 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t41, ptr %a44 + store { ptr, i64, i64 } %t42, ptr %a45 + call void @finch_str_concat(ptr %a43, ptr %a44, ptr %a45) + store { ptr, i64, i64 } %t41, ptr %a46 + call void @finch_str_drop(ptr %a46) + %t47 = load { ptr, i64, i64 }, ptr %a43 + %t48 = extractvalue { ptr, i64, i64 } %t47, 1 + %t49 = trunc i64 %t48 to i32 + %t50 = extractvalue { ptr, i64, i64 } %t47, 0 + %t51 = icmp eq ptr %t50, null + %t52 = select i1 %t51, ptr @.str.541, ptr %t50 + %t53 = call i32 (ptr, ...) @printf(ptr @.str.542, i32 %t49, ptr %t52) + store { ptr, i64, i64 } %t47, ptr %a54 + call void @finch_str_drop(ptr %a54) + %t55 = call i32 (ptr, ...) @printf(ptr @.str.543) + %t56 = trunc i64 1 to i32 + %t57 = call i32 @fflush(ptr null) + call void @exit(i32 %t56) ret void } @@ -13509,29 +15093,29 @@ entry: store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic954, label %ok955 -panic954: - call void @finch_panic(ptr @.str.535, i64 19, ptr @.str.536) + br i1 %t3, label %panic1015, label %ok1016 +panic1015: + call void @finch_panic(ptr @.str.544, i64 19, ptr @.str.545) unreachable -ok955: +ok1016: %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 %panic956, label %ok957 -panic956: - call void @finch_panic(ptr @.str.537, i64 19, ptr @.str.538) + br i1 %t6, label %panic1017, label %ok1018 +panic1017: + call void @finch_panic(ptr @.str.546, i64 19, ptr @.str.547) unreachable -ok957: +ok1018: %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 %range958, label %inrange959 -range958: - call void @finch_panic_index(ptr @.str.539, i64 19, i64 %t8, i64 %t10) + br i1 %t11, label %range1019, label %inrange1020 +range1019: + call void @finch_panic_index(ptr @.str.548, i64 19, i64 %t8, i64 %t10) unreachable -inrange959: +inrange1020: %t12 = extractvalue { ptr, i64, i64 } %t9, 0 %t13 = getelementptr inbounds %S.lexer.Token, ptr %t12, i64 %t8 %t14 = load %S.lexer.Token, ptr %t13 @@ -13549,29 +15133,29 @@ entry: store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic960, label %ok961 -panic960: - call void @finch_panic(ptr @.str.540, i64 23, ptr @.str.541) + br i1 %t3, label %panic1021, label %ok1022 +panic1021: + call void @finch_panic(ptr @.str.549, i64 23, ptr @.str.550) unreachable -ok961: +ok1022: %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 %panic962, label %ok963 -panic962: - call void @finch_panic(ptr @.str.542, i64 23, ptr @.str.543) + br i1 %t6, label %panic1023, label %ok1024 +panic1023: + call void @finch_panic(ptr @.str.551, i64 23, ptr @.str.552) unreachable -ok963: +ok1024: %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 %range964, label %inrange965 -range964: - call void @finch_panic_index(ptr @.str.544, i64 23, i64 %t8, i64 %t10) + br i1 %t11, label %range1025, label %inrange1026 +range1025: + call void @finch_panic_index(ptr @.str.553, i64 23, i64 %t8, i64 %t10) unreachable -inrange965: +inrange1026: %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 @@ -13593,11 +15177,11 @@ entry: store i64 %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic966, label %ok967 -panic966: - call void @finch_panic(ptr @.str.545, i64 27, ptr @.str.546) + br i1 %t4, label %panic1027, label %ok1028 +panic1027: + call void @finch_panic(ptr @.str.554, i64 27, ptr @.str.555) unreachable -ok967: +ok1028: %t5 = getelementptr inbounds %S.parser.Parser, ptr %t3, i32 0, i32 1 %t6 = load i64, ptr %t5 %t7 = load i64, ptr %a2 @@ -13606,48 +15190,48 @@ ok967: %t10 = load i64, ptr %a9 %t11 = load ptr, ptr %a1 %t12 = icmp eq ptr %t11, null - br i1 %t12, label %panic968, label %ok969 -panic968: - call void @finch_panic(ptr @.str.547, i64 28, ptr @.str.548) + br i1 %t12, label %panic1029, label %ok1030 +panic1029: + call void @finch_panic(ptr @.str.556, i64 28, ptr @.str.557) unreachable -ok969: +ok1030: %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 %then970, label %endif972 -then970: + br i1 %t16, label %then1031, label %endif1033 +then1031: %t17 = load ptr, ptr %a1 %t18 = icmp eq ptr %t17, null - br i1 %t18, label %panic973, label %ok974 -panic973: - call void @finch_panic(ptr @.str.549, i64 29, ptr @.str.550) + br i1 %t18, label %panic1034, label %ok1035 +panic1034: + call void @finch_panic(ptr @.str.558, i64 29, ptr @.str.559) unreachable -ok974: +ok1035: %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 %endif972 -endif972: + br label %endif1033 +endif1033: %t23 = load ptr, ptr %a1 %t24 = icmp eq ptr %t23, null - br i1 %t24, label %panic975, label %ok976 -panic975: - call void @finch_panic(ptr @.str.551, i64 31, ptr @.str.552) + br i1 %t24, label %panic1036, label %ok1037 +panic1036: + call void @finch_panic(ptr @.str.560, i64 31, ptr @.str.561) unreachable -ok976: +ok1037: %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 %range977, label %inrange978 -range977: - call void @finch_panic_index(ptr @.str.553, i64 31, i64 %t26, i64 %t28) + br i1 %t29, label %range1038, label %inrange1039 +range1038: + call void @finch_panic_index(ptr @.str.562, i64 31, i64 %t26, i64 %t28) unreachable -inrange978: +inrange1039: %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 @@ -13668,29 +15252,29 @@ entry: store { ptr, i64, i64 } %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic979, label %ok980 -panic979: - call void @finch_panic(ptr @.str.554, i64 35, ptr @.str.555) + br i1 %t4, label %panic1040, label %ok1041 +panic1040: + call void @finch_panic(ptr @.str.563, i64 35, ptr @.str.564) unreachable -ok980: +ok1041: %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 %panic981, label %ok982 -panic981: - call void @finch_panic(ptr @.str.556, i64 35, ptr @.str.557) + br i1 %t7, label %panic1042, label %ok1043 +panic1042: + call void @finch_panic(ptr @.str.565, i64 35, ptr @.str.566) unreachable -ok982: +ok1043: %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 %range983, label %inrange984 -range983: - call void @finch_panic_index(ptr @.str.558, i64 35, i64 %t9, i64 %t11) + br i1 %t12, label %range1044, label %inrange1045 +range1044: + call void @finch_panic_index(ptr @.str.567, i64 35, i64 %t9, i64 %t11) unreachable -inrange984: +inrange1045: %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 @@ -13709,34 +15293,32 @@ entry: %a15 = alloca %S.lexer.Token, align 16 %a16 = alloca %S.lexer.Token, align 16 %a18 = alloca %S.lexer.Token, align 16 - %a25 = alloca %S.lexer.Token, align 16 - %a26 = alloca %S.lexer.Token, align 16 store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic985, label %ok986 -panic985: - call void @finch_panic(ptr @.str.559, i64 39, ptr @.str.560) + br i1 %t3, label %panic1046, label %ok1047 +panic1046: + call void @finch_panic(ptr @.str.568, i64 39, ptr @.str.569) unreachable -ok986: +ok1047: %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 %panic987, label %ok988 -panic987: - call void @finch_panic(ptr @.str.561, i64 39, ptr @.str.562) + br i1 %t6, label %panic1048, label %ok1049 +panic1048: + call void @finch_panic(ptr @.str.570, i64 39, ptr @.str.571) unreachable -ok988: +ok1049: %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 %range989, label %inrange990 -range989: - call void @finch_panic_index(ptr @.str.563, i64 39, i64 %t8, i64 %t10) + br i1 %t11, label %range1050, label %inrange1051 +range1050: + call void @finch_panic_index(ptr @.str.572, i64 39, i64 %t8, i64 %t10) unreachable -inrange990: +inrange1051: %t12 = extractvalue { ptr, i64, i64 } %t9, 0 %t13 = getelementptr inbounds %S.lexer.Token, ptr %t12, i64 %t8 %t14 = load %S.lexer.Token, ptr %t13 @@ -13746,20 +15328,17 @@ inrange990: store %S.lexer.Token %t17, ptr %a18 %t19 = load ptr, ptr %a1 %t20 = icmp eq ptr %t19, null - br i1 %t20, label %panic991, label %ok992 -panic991: - call void @finch_panic(ptr @.str.564, i64 40, ptr @.str.565) + br i1 %t20, label %panic1052, label %ok1053 +panic1052: + call void @finch_panic(ptr @.str.573, i64 40, ptr @.str.574) unreachable -ok992: +ok1053: %t21 = getelementptr inbounds %S.parser.Parser, ptr %t19, i32 0, i32 1 %t22 = load i64, ptr %t21 %t23 = add i64 %t22, 1 store i64 %t23, ptr %t21 %t24 = load %S.lexer.Token, ptr %a18 - store %S.lexer.Token %t24, ptr %a25 - call void @finch.copy.S_lexer_Token(ptr %a26, ptr %a25) - %t27 = load %S.lexer.Token, ptr %a26 - ret %S.lexer.Token %t27 + ret %S.lexer.Token %t24 } define internal i1 @finch.parser.accept(ptr %p0, { ptr, i64, i64 } %p1) { @@ -13771,21 +15350,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 %then993, label %endif995 -then993: + br i1 %t5, label %then1054, label %endif1056 +then1054: %t6 = load ptr, ptr %a1 %t7 = icmp eq ptr %t6, null - br i1 %t7, label %panic996, label %ok997 -panic996: - call void @finch_panic(ptr @.str.566, i64 46, ptr @.str.567) + br i1 %t7, label %panic1057, label %ok1058 +panic1057: + call void @finch_panic(ptr @.str.575, i64 46, ptr @.str.576) unreachable -ok997: +ok1058: %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 -endif995: +endif1056: ret i1 false } @@ -13800,109 +15379,115 @@ entry: %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 + %a17 = alloca { ptr, i64, i64 }, align 16 %a21 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 + %a22 = alloca { ptr, i64, i64 }, align 16 %a27 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 + %a28 = alloca { ptr, i64, i64 }, align 16 %a33 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 + %a34 = alloca { ptr, i64, i64 }, align 16 %a40 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 + %a41 = alloca { ptr, i64, i64 }, align 16 %a46 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 + %a47 = alloca { ptr, i64, i64 }, align 16 %a52 = alloca { ptr, i64, i64 }, align 16 %a53 = alloca { ptr, i64, i64 }, align 16 - %a55 = 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 + %a59 = alloca { ptr, i64, i64 }, align 16 store %S.lexer.Token %p0, ptr %a1 %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.568, i64 5, i64 0 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.577, 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 %then998, label %endif1000 -then998: + br i1 %t7, label %then1059, label %endif1061 +then1059: %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.569, i64 1, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.578, 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.570, i64 1, i64 0 }, ptr %a16 + store { ptr, i64, i64 } { ptr @.str.579, 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 -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.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 %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.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.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.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.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.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 %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.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 %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.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.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 + store { ptr, i64, i64 } %t13, ptr %a17 + call void @finch_str_drop(ptr %a17) + %t18 = load { ptr, i64, i64 }, ptr %a14 + ret { ptr, i64, i64 } %t18 +endif1061: + %t19 = getelementptr inbounds %S.lexer.Token, 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.580, i64 3, i64 0 }, ptr %a22 + %t23 = call i32 @finch_str_eq(ptr %a21, ptr %a22) + %t24 = icmp ne i32 %t23, 0 + br i1 %t24, label %then1062, label %endif1064 +then1062: + ret { ptr, i64, i64 } { ptr @.str.581, i64 11, i64 0 } +endif1064: + %t25 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0 + %t26 = load { ptr, i64, i64 }, ptr %t25 + store { ptr, i64, i64 } %t26, ptr %a27 + store { ptr, i64, i64 } { ptr @.str.582, 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.from1065 +logic.from1065: + br i1 %t30, label %logic.end1067, label %logic.rhs1066 +logic.rhs1066: + %t31 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0 + %t32 = load { ptr, i64, i64 }, ptr %t31 + store { ptr, i64, i64 } %t32, ptr %a33 + store { ptr, i64, i64 } { ptr @.str.583, i64 5, i64 0 }, ptr %a34 + %t35 = call i32 @finch_str_eq(ptr %a33, ptr %a34) + %t36 = icmp ne i32 %t35, 0 + br label %logic.rend1068 +logic.rend1068: + br label %logic.end1067 +logic.end1067: + %t37 = phi i1 [ true, %logic.from1065 ], [ %t36, %logic.rend1068 ] + br i1 %t37, label %then1069, label %endif1071 +then1069: + ret { ptr, i64, i64 } { ptr @.str.584, i64 8, i64 0 } +endif1071: + %t38 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0 + %t39 = load { ptr, i64, i64 }, ptr %t38 + store { ptr, i64, i64 } %t39, ptr %a40 + store { ptr, i64, i64 } { ptr @.str.585, i64 6, i64 0 }, ptr %a41 + %t42 = call i32 @finch_str_eq(ptr %a40, ptr %a41) + %t43 = icmp ne i32 %t42, 0 + br i1 %t43, label %then1072, label %endif1074 +then1072: + ret { ptr, i64, i64 } { ptr @.str.586, i64 8, i64 0 } +endif1074: + %t44 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0 + %t45 = load { ptr, i64, i64 }, ptr %t44 + store { ptr, i64, i64 } %t45, ptr %a46 + store { ptr, i64, i64 } { ptr @.str.587, i64 4, i64 0 }, ptr %a47 + %t48 = call i32 @finch_str_eq(ptr %a46, ptr %a47) + %t49 = icmp ne i32 %t48, 0 + br i1 %t49, label %then1075, label %endif1077 +then1075: + ret { ptr, i64, i64 } { ptr @.str.588, i64 6, i64 0 } +endif1077: + %t50 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0 + %t51 = load { ptr, i64, i64 }, ptr %t50 + store { ptr, i64, i64 } { ptr @.str.589, 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.590, i64 1, i64 0 }, ptr %a58 + call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) + store { ptr, i64, i64 } %t55, ptr %a59 + call void @finch_str_drop(ptr %a59) + %t60 = load { ptr, i64, i64 }, ptr %a56 + ret { ptr, i64, i64 } %t60 } define internal %S.lexer.Token @finch.parser.expect(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2) { @@ -13916,9 +15501,15 @@ entry: %a16 = alloca { ptr, i64, i64 }, align 16 %a17 = alloca { ptr, i64, i64 }, align 16 %a18 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 + %a19 = alloca { ptr, i64, i64 }, align 16 + %a24 = alloca %S.lexer.Token, align 16 %a25 = 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 %S.lexer.Token, align 16 + %a32 = 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 @@ -13926,33 +15517,45 @@ 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 %then1017, label %endif1019 -then1017: + br i1 %t7, label %then1078, label %endif1080 +then1078: %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.582, i64 9, i64 0 }, ptr %a13 + store { ptr, i64, i64 } { ptr @.str.591, 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.583, i64 8, i64 0 }, ptr %a18 + store { ptr, i64, i64 } { ptr @.str.592, 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 - %t21 = call %S.lexer.Token @finch.parser.cur(ptr %t20) - %t22 = call { ptr, i64, i64 } @finch.parser.describe(%S.lexer.Token %t21) - store { ptr, i64, i64 } %t19, 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 - call void @finch.parser.fail(ptr %t8, %S.lexer.Token %t10, { ptr, i64, i64 } %t26) - br label %endif1019 -endif1019: - %t27 = load ptr, ptr %a1 - %t28 = call %S.lexer.Token @finch.parser.next(ptr %t27) - ret %S.lexer.Token %t28 + store { ptr, i64, i64 } %t15, ptr %a19 + call void @finch_str_drop(ptr %a19) + %t20 = load { ptr, i64, i64 }, ptr %a16 + %t21 = load ptr, ptr %a1 + %t22 = call %S.lexer.Token @finch.parser.cur(ptr %t21) + %t23 = call { ptr, i64, i64 } @finch.parser.describe(%S.lexer.Token %t22) + store %S.lexer.Token %t22, ptr %a24 + call void @finch.drop.S_lexer_Token(ptr %a24) + store { ptr, i64, i64 } %t20, ptr %a26 + store { ptr, i64, i64 } %t23, ptr %a27 + call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) + store { ptr, i64, i64 } %t20, ptr %a28 + call void @finch_str_drop(ptr %a28) + store { ptr, i64, i64 } %t23, ptr %a29 + call void @finch_str_drop(ptr %a29) + %t30 = load { ptr, i64, i64 }, ptr %a25 + call void @finch.parser.fail(ptr %t8, %S.lexer.Token %t10, { ptr, i64, i64 } %t30) + store %S.lexer.Token %t10, ptr %a31 + call void @finch.drop.S_lexer_Token(ptr %a31) + store { ptr, i64, i64 } %t30, ptr %a32 + call void @finch_str_drop(ptr %a32) + br label %endif1080 +endif1080: + %t33 = load ptr, ptr %a1 + %t34 = call %S.lexer.Token @finch.parser.next(ptr %t33) + ret %S.lexer.Token %t34 } define internal i1 @finch.parser.sameLine(ptr %p0) { @@ -13961,53 +15564,53 @@ entry: store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic1020, label %ok1021 -panic1020: - call void @finch_panic(ptr @.str.584, i64 79, ptr @.str.585) + br i1 %t3, label %panic1081, label %ok1082 +panic1081: + call void @finch_panic(ptr @.str.593, i64 79, ptr @.str.594) unreachable -ok1021: +ok1082: %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.from1022 -logic.from1022: - br i1 %t6, label %logic.end1024, label %logic.rhs1023 -logic.rhs1023: + br label %logic.from1083 +logic.from1083: + br i1 %t6, label %logic.end1085, label %logic.rhs1084 +logic.rhs1084: %t7 = load ptr, ptr %a1 %t8 = icmp eq ptr %t7, null - br i1 %t8, label %panic1025, label %ok1026 -panic1025: - call void @finch_panic(ptr @.str.586, i64 79, ptr @.str.587) + br i1 %t8, label %panic1086, label %ok1087 +panic1086: + call void @finch_panic(ptr @.str.595, i64 79, ptr @.str.596) unreachable -ok1026: +ok1087: %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 %panic1027, label %ok1028 -panic1027: - call void @finch_panic(ptr @.str.588, i64 79, ptr @.str.589) + br i1 %t11, label %panic1088, label %ok1089 +panic1088: + call void @finch_panic(ptr @.str.597, i64 79, ptr @.str.598) unreachable -ok1028: +ok1089: %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 %range1029, label %inrange1030 -range1029: - call void @finch_panic_index(ptr @.str.590, i64 79, i64 %t13, i64 %t15) + br i1 %t16, label %range1090, label %inrange1091 +range1090: + call void @finch_panic_index(ptr @.str.599, i64 79, i64 %t13, i64 %t15) unreachable -inrange1030: +inrange1091: %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.rend1031 -logic.rend1031: - br label %logic.end1024 -logic.end1024: - %t22 = phi i1 [ true, %logic.from1022 ], [ %t21, %logic.rend1031 ] + br label %logic.rend1092 +logic.rend1092: + br label %logic.end1085 +logic.end1085: + %t22 = phi i1 [ true, %logic.from1083 ], [ %t21, %logic.rend1092 ] ret i1 %t22 } @@ -14024,29 +15627,29 @@ entry: store { ptr, i64, i64 } %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic1032, label %ok1033 -panic1032: - call void @finch_panic(ptr @.str.591, i64 83, ptr @.str.592) + br i1 %t4, label %panic1093, label %ok1094 +panic1093: + call void @finch_panic(ptr @.str.600, i64 83, ptr @.str.601) unreachable -ok1033: +ok1094: %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 %panic1034, label %ok1035 -panic1034: - call void @finch_panic(ptr @.str.593, i64 83, ptr @.str.594) + br i1 %t7, label %panic1095, label %ok1096 +panic1095: + call void @finch_panic(ptr @.str.602, i64 83, ptr @.str.603) unreachable -ok1035: +ok1096: %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 %range1036, label %inrange1037 -range1036: - call void @finch_panic_index(ptr @.str.595, i64 83, i64 %t9, i64 %t11) + br i1 %t12, label %range1097, label %inrange1098 +range1097: + call void @finch_panic_index(ptr @.str.604, i64 83, i64 %t9, i64 %t11) unreachable -inrange1037: +inrange1098: %t13 = extractvalue { ptr, i64, i64 } %t10, 0 %t14 = getelementptr inbounds %S.lexer.Token, ptr %t13, i64 %t9 %t15 = load %S.lexer.Token, ptr %t14 @@ -14067,14 +15670,15 @@ inrange1037: %t30 = insertvalue %S.ast.Node %t27, i64 %t29, 12 %t31 = load ptr, ptr %a1 %t32 = icmp eq ptr %t31, null - br i1 %t32, label %panic1038, label %ok1039 -panic1038: - call void @finch_panic(ptr @.str.596, i64 84, ptr @.str.597) + br i1 %t32, label %panic1099, label %ok1100 +panic1099: + call void @finch_panic(ptr @.str.605, i64 84, ptr @.str.606) unreachable -ok1039: +ok1100: %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 + call void @finch.drop.S_lexer_Token(ptr %a19) ret %S.ast.Node %t35 } @@ -14090,37 +15694,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.598, i64 3, i64 0 }, ptr %t4 + store { ptr, i64, i64 } { ptr @.str.607, i64 3, i64 0 }, ptr %t4 %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 - store { ptr, i64, i64 } { ptr @.str.599, i64 5, i64 0 }, ptr %t5 + store { ptr, i64, i64 } { ptr @.str.608, i64 5, i64 0 }, ptr %t5 %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2 - store { ptr, i64, i64 } { ptr @.str.600, i64 4, i64 0 }, ptr %t6 + store { ptr, i64, i64 } { ptr @.str.609, i64 4, i64 0 }, ptr %t6 %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 3 - store { ptr, i64, i64 } { ptr @.str.601, i64 4, i64 0 }, ptr %t7 + store { ptr, i64, i64 } { ptr @.str.610, i64 4, i64 0 }, ptr %t7 %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4 - store { ptr, i64, i64 } { ptr @.str.602, i64 3, i64 0 }, ptr %t8 + store { ptr, i64, i64 } { ptr @.str.611, i64 3, i64 0 }, ptr %t8 %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 5 - store { ptr, i64, i64 } { ptr @.str.603, i64 3, i64 0 }, ptr %t9 + store { ptr, i64, i64 } { ptr @.str.612, i64 3, i64 0 }, ptr %t9 %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 6 - store { ptr, i64, i64 } { ptr @.str.604, i64 2, i64 0 }, ptr %t10 + store { ptr, i64, i64 } { ptr @.str.613, i64 2, i64 0 }, ptr %t10 %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 7 - store { ptr, i64, i64 } { ptr @.str.605, i64 3, i64 0 }, ptr %t11 + store { ptr, i64, i64 } { ptr @.str.614, i64 3, i64 0 }, ptr %t11 %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 8 - store { ptr, i64, i64 } { ptr @.str.606, i64 3, i64 0 }, ptr %t12 + store { ptr, i64, i64 } { ptr @.str.615, i64 3, i64 0 }, ptr %t12 %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 9 - store { ptr, i64, i64 } { ptr @.str.607, i64 3, i64 0 }, ptr %t13 + store { ptr, i64, i64 } { ptr @.str.616, i64 3, i64 0 }, ptr %t13 %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 10 - store { ptr, i64, i64 } { ptr @.str.608, i64 2, i64 0 }, ptr %t14 + store { ptr, i64, i64 } { ptr @.str.617, i64 2, i64 0 }, ptr %t14 %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 11 - store { ptr, i64, i64 } { ptr @.str.609, i64 3, i64 0 }, ptr %t15 + store { ptr, i64, i64 } { ptr @.str.618, i64 3, i64 0 }, ptr %t15 %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 12 - store { ptr, i64, i64 } { ptr @.str.610, i64 3, i64 0 }, ptr %t16 + store { ptr, i64, i64 } { ptr @.str.619, i64 3, i64 0 }, ptr %t16 %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 13 - store { ptr, i64, i64 } { ptr @.str.611, i64 3, i64 0 }, ptr %t17 + store { ptr, i64, i64 } { ptr @.str.620, i64 3, i64 0 }, ptr %t17 %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 14 - store { ptr, i64, i64 } { ptr @.str.612, i64 3, i64 0 }, ptr %t18 + store { ptr, i64, i64 } { ptr @.str.621, i64 3, i64 0 }, ptr %t18 %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 15 - store { ptr, i64, i64 } { ptr @.str.613, i64 3, i64 0 }, ptr %t19 + store { ptr, i64, i64 } { ptr @.str.622, 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 @@ -14131,305 +15735,376 @@ entry: %t27 = load i64, ptr %t24 %t28 = load ptr, ptr %a23 store i64 0, ptr %a29 - br label %find.cond1040 -find.cond1040: + br label %find.cond1101 +find.cond1101: %t30 = load i64, ptr %a29 %t31 = icmp slt i64 %t30, %t27 - br i1 %t31, label %find.body1041, label %find.end1044 -find.body1041: + br i1 %t31, label %find.body1102, label %find.end1105 +find.body1102: %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.hit1042, label %find.next1043 -find.hit1042: + br i1 %t37, label %find.hit1103, label %find.next1104 +find.hit1103: store i64 %t30, ptr %a26 - br label %find.end1044 -find.next1043: + br label %find.end1105 +find.next1104: %t38 = add i64 %t30, 1 store i64 %t38, ptr %a29 - br label %find.cond1040 -find.end1044: + br label %find.cond1101 +find.end1105: %t39 = load i64, ptr %a26 %t40 = icmp sge i64 %t39, 0 + call void @finch.drop.arr_str(ptr %a23) ret i1 %t40 } define internal %S.ast.Type @finch.parser.parseType(ptr %p0) { entry: %a1 = alloca ptr, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 + %a6 = alloca %S.lexer.Token, align 16 + %a10 = alloca %S.ast.Type, align 16 + %a20 = alloca %S.lexer.Token, align 16 + %a21 = 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 + %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 - %a30 = alloca { ptr, i64, i64 }, align 16 + %a31 = alloca %S.lexer.Token, align 16 %a32 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca %S.ast.Type, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca %S.ast.Type, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca %S.ast.Type, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 + %a36 = alloca { ptr, i64, i64 }, align 16 + %a37 = alloca { ptr, i64, i64 }, align 16 + %a39 = alloca %S.lexer.Token, align 16 + %a40 = alloca { ptr, i64, i64 }, align 16 + %a42 = alloca { ptr, i64, i64 }, align 16 + %a43 = alloca { ptr, i64, i64 }, align 16 + %a51 = alloca %S.lexer.Token, align 16 + %a54 = alloca %S.ast.Type, align 16 + %a57 = alloca %S.lexer.Token, align 16 + %a62 = alloca %S.ast.Type, align 16 + %a66 = alloca { ptr, i64, i64 }, align 16 + %a67 = alloca { ptr, i64, i64 }, align 16 + %a76 = alloca %S.ast.Type, align 16 + %a77 = alloca %S.ast.Type, align 16 + %a80 = alloca %S.lexer.Token, align 16 + %a83 = alloca { ptr, i64, i64 }, align 16 + %a84 = alloca { ptr, i64, i64 }, align 16 + %a89 = alloca { ptr, i64, i64 }, align 16 + %a90 = alloca { ptr, i64, i64 }, align 16 + %a98 = alloca { ptr, i64, i64 }, align 16 + %a99 = alloca { ptr, i64, i64 }, align 16 + %a102 = alloca %S.ast.Type, align 16 + %a107 = alloca { ptr, i64, i64 }, align 16 + %a108 = alloca { ptr, i64, i64 }, align 16 + %a111 = alloca { ptr, i64, i64 }, align 16 + %a115 = alloca %S.lexer.Token, align 16 + %a118 = 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 - %a143 = alloca %S.ast.Type, align 16 - %a144 = alloca %S.ast.Type, align 16 + %a126 = alloca { ptr, i64, i64 }, align 16 + %a127 = alloca { ptr, i64, i64 }, align 16 + %a129 = alloca %S.lexer.Token, align 16 + %a132 = alloca { ptr, i64, i64 }, align 16 + %a138 = alloca %S.lexer.Token, align 16 + %a143 = alloca { ptr, i64, i64 }, align 16 + %a144 = alloca { ptr, i64, i64 }, align 16 + %a147 = alloca { ptr, i64, i64 }, align 16 + %a151 = alloca %S.lexer.Token, align 16 + %a165 = alloca %S.lexer.Token, 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.614, i64 1, i64 0 }) - br i1 %t3, label %then1045, label %endif1047 -then1045: + %t3 = call i1 @finch.parser.accept(ptr %t2, { ptr, i64, i64 } { ptr @.str.623, i64 1, i64 0 }) + br i1 %t3, label %then1106, label %endif1108 +then1106: %t4 = load ptr, ptr %a1 - %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 -endif1047: - %t9 = load ptr, ptr %a1 - %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 %then1048, label %endif1050 -then1048: - %t12 = load ptr, ptr %a1 - %t13 = load ptr, ptr %a1 - %t14 = call %S.lexer.Token @finch.parser.cur(ptr %t13) + %t5 = call %S.lexer.Token @finch.parser.expect(ptr %t4, { ptr, i64, i64 } { ptr @.str.624, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.625, i64 36, i64 0 }) + store %S.lexer.Token %t5, ptr %a6 + call void @finch.drop.S_lexer_Token(ptr %a6) + %t7 = load ptr, ptr %a1 + %t8 = call %S.ast.Type @finch.parser.parseType(ptr %t7) + %t9 = call %S.ast.Type @finch.ast.arrayOf(%S.ast.Type %t8) + store %S.ast.Type %t8, ptr %a10 + call void @finch.drop.S_ast_Type(ptr %a10) + ret %S.ast.Type %t9 +endif1108: + %t11 = load ptr, ptr %a1 + %t12 = call i1 @finch.parser.at(ptr %t11, { ptr, i64, i64 } { ptr @.str.626, i64 5, i64 0 }) + %t13 = xor i1 %t12, true + br i1 %t13, label %then1109, label %endif1111 +then1109: + %t14 = load ptr, ptr %a1 %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.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.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 %endif1050 -endif1050: - %t26 = load ptr, ptr %a1 - %t27 = call %S.lexer.Token @finch.parser.next(ptr %t26) - %t28 = extractvalue %S.lexer.Token %t27, 1 - store { ptr, i64, i64 } %t28, ptr %a29 - call void @finch_str_copy(ptr %a30, ptr %a29) - %t31 = load { ptr, i64, i64 }, ptr %a30 - 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.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.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.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 + %t17 = load ptr, ptr %a1 + %t18 = call %S.lexer.Token @finch.parser.cur(ptr %t17) + %t19 = call { ptr, i64, i64 } @finch.parser.describe(%S.lexer.Token %t18) + store %S.lexer.Token %t18, ptr %a20 + call void @finch.drop.S_lexer_Token(ptr %a20) + store { ptr, i64, i64 } { ptr @.str.627, i64 11, i64 0 }, ptr %a22 + store { ptr, i64, i64 } %t19, ptr %a23 + call void @finch_str_concat(ptr %a21, ptr %a22, ptr %a23) + store { ptr, i64, i64 } %t19, ptr %a24 + call void @finch_str_drop(ptr %a24) + %t25 = load { ptr, i64, i64 }, ptr %a21 + store { ptr, i64, i64 } %t25, ptr %a27 + store { ptr, i64, i64 } { ptr @.str.628, i64 56, i64 0 }, ptr %a28 + call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28) + store { ptr, i64, i64 } %t25, ptr %a29 + call void @finch_str_drop(ptr %a29) + %t30 = load { ptr, i64, i64 }, ptr %a26 + call void @finch.parser.fail(ptr %t14, %S.lexer.Token %t16, { ptr, i64, i64 } %t30) + store %S.lexer.Token %t16, ptr %a31 + call void @finch.drop.S_lexer_Token(ptr %a31) + store { ptr, i64, i64 } %t30, ptr %a32 + call void @finch_str_drop(ptr %a32) + br label %endif1111 +endif1111: + %t33 = load ptr, ptr %a1 + %t34 = call %S.lexer.Token @finch.parser.next(ptr %t33) + %t35 = extractvalue %S.lexer.Token %t34, 1 + store { ptr, i64, i64 } %t35, ptr %a36 + call void @finch_str_copy(ptr %a37, ptr %a36) + %t38 = load { ptr, i64, i64 }, ptr %a37 + store %S.lexer.Token %t34, ptr %a39 + call void @finch.drop.S_lexer_Token(ptr %a39) + store { ptr, i64, i64 } %t38, ptr %a40 + %t41 = load { ptr, i64, i64 }, ptr %a40 + store { ptr, i64, i64 } %t41, ptr %a42 + store { ptr, i64, i64 } { ptr @.str.629, 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.from1112 +logic.from1112: + br i1 %t45, label %logic.rhs1113, label %logic.end1114 +logic.rhs1113: %t46 = load ptr, ptr %a1 - %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 + %t47 = call i1 @finch.parser.at(ptr %t46, { ptr, i64, i64 } { ptr @.str.630, i64 1, i64 0 }) + br label %logic.rend1115 +logic.rend1115: + br label %logic.end1114 +logic.end1114: + %t48 = phi i1 [ false, %logic.from1112 ], [ %t47, %logic.rend1115 ] + br i1 %t48, label %then1116, label %endif1118 +then1116: %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 -endif1057: - %t52 = load { ptr, i64, i64 }, ptr %a32 - %t53 = call i1 @finch.parser.isTypeName({ ptr, i64, i64 } %t52) - 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.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.from1061 -logic.from1061: - br i1 %t58, label %logic.rhs1062, label %logic.end1063 -logic.rhs1062: + %t50 = call %S.lexer.Token @finch.parser.next(ptr %t49) + store %S.lexer.Token %t50, ptr %a51 + call void @finch.drop.S_lexer_Token(ptr %a51) + %t52 = load ptr, ptr %a1 + %t53 = call %S.ast.Type @finch.parser.parseType(ptr %t52) + store %S.ast.Type %t53, ptr %a54 + %t55 = load ptr, ptr %a1 + %t56 = call %S.lexer.Token @finch.parser.expect(ptr %t55, { ptr, i64, i64 } { ptr @.str.631, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.632, i64 39, i64 0 }) + store %S.lexer.Token %t56, ptr %a57 + call void @finch.drop.S_lexer_Token(ptr %a57) + %t58 = load %S.ast.Type, ptr %a54 %t59 = load ptr, ptr %a1 - %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.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 -endif1067: - %t69 = load { ptr, i64, i64 }, ptr %a32 - store { ptr, i64, i64 } %t69, ptr %a70 - 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 %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 -endif1070: - %t75 = load { ptr, i64, i64 }, ptr %a32 - store { ptr, i64, i64 } %t75, ptr %a76 - 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 %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 -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 -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) - %t87 = load { ptr, i64, i64 }, ptr %a86 - %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.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.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.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 - %t102 = getelementptr inbounds %S.ast.Type, ptr %a89, i32 0, i32 3 - store { ptr, i64, i64 } %t101, ptr %a103 - call void @finch_str_copy(ptr %a104, ptr %a103) - %t105 = load { ptr, i64, i64 }, ptr %a104 - store { ptr, i64, i64 } %t105, ptr %t102 - %t106 = load ptr, ptr %a1 - %t107 = call %S.lexer.Token @finch.parser.next(ptr %t106) - %t108 = extractvalue %S.lexer.Token %t107, 1 - store { ptr, i64, i64 } %t108, ptr %a109 - call void @finch_str_copy(ptr %a110, ptr %a109) - %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 %endif1080 -endif1080: + %t60 = call %S.ast.Type @finch.parser.parseType(ptr %t59) + %t61 = call %S.ast.Type @finch.ast.mapOf(%S.ast.Type %t58, %S.ast.Type %t60) + store %S.ast.Type %t60, ptr %a62 + call void @finch.drop.S_ast_Type(ptr %a62) + call void @finch.drop.S_ast_Type(ptr %a54) + call void @finch_str_drop(ptr %a40) + ret %S.ast.Type %t61 +endif1118: + %t63 = load { ptr, i64, i64 }, ptr %a40 + %t64 = call i1 @finch.parser.isTypeName({ ptr, i64, i64 } %t63) + br i1 %t64, label %then1119, label %endif1121 +then1119: + %t65 = load { ptr, i64, i64 }, ptr %a40 + store { ptr, i64, i64 } %t65, ptr %a66 + store { ptr, i64, i64 } { ptr @.str.633, i64 3, i64 0 }, ptr %a67 + %t68 = call i32 @finch_str_eq(ptr %a66, ptr %a67) + %t69 = icmp ne i32 %t68, 0 + br label %logic.from1122 +logic.from1122: + br i1 %t69, label %logic.rhs1123, label %logic.end1124 +logic.rhs1123: + %t70 = load ptr, ptr %a1 + %t71 = call i1 @finch.parser.accept(ptr %t70, { ptr, i64, i64 } { ptr @.str.634, i64 1, i64 0 }) + br label %logic.rend1125 +logic.rend1125: + br label %logic.end1124 +logic.end1124: + %t72 = phi i1 [ false, %logic.from1122 ], [ %t71, %logic.rend1125 ] + br i1 %t72, label %then1126, label %endif1128 +then1126: + %t73 = load ptr, ptr %a1 + %t74 = call %S.ast.Type @finch.parser.parseType(ptr %t73) + %t75 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t74) + store %S.ast.Type %t74, ptr %a76 + call void @finch.drop.S_ast_Type(ptr %a76) + store %S.ast.Type %t75, ptr %a77 + %t78 = load ptr, ptr %a1 + %t79 = call %S.lexer.Token @finch.parser.expect(ptr %t78, { ptr, i64, i64 } { ptr @.str.635, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.636, i64 3, i64 0 }) + store %S.lexer.Token %t79, ptr %a80 + call void @finch.drop.S_lexer_Token(ptr %a80) + %t81 = load %S.ast.Type, ptr %a77 + call void @finch_str_drop(ptr %a40) + ret %S.ast.Type %t81 +endif1128: + %t82 = load { ptr, i64, i64 }, ptr %a40 + store { ptr, i64, i64 } %t82, ptr %a83 + store { ptr, i64, i64 } { ptr @.str.637, i64 3, i64 0 }, ptr %a84 + %t85 = call i32 @finch_str_eq(ptr %a83, ptr %a84) + %t86 = icmp ne i32 %t85, 0 + br i1 %t86, label %then1129, label %endif1131 +then1129: + %t87 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.638, i64 3, i64 0 }) + call void @finch_str_drop(ptr %a40) + ret %S.ast.Type %t87 +endif1131: + %t88 = load { ptr, i64, i64 }, ptr %a40 + store { ptr, i64, i64 } %t88, ptr %a89 + store { ptr, i64, i64 } { ptr @.str.639, i64 3, i64 0 }, ptr %a90 + %t91 = call i32 @finch_str_eq(ptr %a89, ptr %a90) + %t92 = icmp ne i32 %t91, 0 + br i1 %t92, label %then1132, label %endif1134 +then1132: + %t93 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.640, i64 5, i64 0 }) + call void @finch_str_drop(ptr %a40) + ret %S.ast.Type %t93 +endif1134: + %t94 = load { ptr, i64, i64 }, ptr %a40 + %t95 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } %t94) + call void @finch_str_drop(ptr %a40) + ret %S.ast.Type %t95 +endif1121: + %t96 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.641, i64 5, i64 0 }, 0 + %t97 = load { ptr, i64, i64 }, ptr %a40 + store { ptr, i64, i64 } %t97, ptr %a98 + call void @finch_str_copy(ptr %a99, ptr %a98) + %t100 = load { ptr, i64, i64 }, ptr %a99 + %t101 = insertvalue %S.ast.Type %t96, { ptr, i64, i64 } %t100, 2 + store %S.ast.Type %t101, ptr %a102 + %t103 = load ptr, ptr %a1 + %t104 = call i1 @finch.parser.at(ptr %t103, { ptr, i64, i64 } { ptr @.str.642, i64 1, i64 0 }) + br label %logic.from1135 +logic.from1135: + br i1 %t104, label %logic.rhs1136, label %logic.end1137 +logic.rhs1136: + %t105 = load ptr, ptr %a1 + %t106 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t105, i64 1) + store { ptr, i64, i64 } %t106, ptr %a107 + store { ptr, i64, i64 } { ptr @.str.643, i64 5, i64 0 }, ptr %a108 + %t109 = call i32 @finch_str_eq(ptr %a107, ptr %a108) + %t110 = icmp ne i32 %t109, 0 + store { ptr, i64, i64 } %t106, ptr %a111 + call void @finch_str_drop(ptr %a111) + br label %logic.rend1138 +logic.rend1138: + br label %logic.end1137 +logic.end1137: + %t112 = phi i1 [ false, %logic.from1135 ], [ %t110, %logic.rend1138 ] + br i1 %t112, label %then1139, label %endif1141 +then1139: %t113 = load ptr, ptr %a1 - %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.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) + %t114 = call %S.lexer.Token @finch.parser.next(ptr %t113) + store %S.lexer.Token %t114, ptr %a115 + call void @finch.drop.S_lexer_Token(ptr %a115) + %t116 = load { ptr, i64, i64 }, ptr %a40 + %t117 = getelementptr inbounds %S.ast.Type, ptr %a102, i32 0, i32 3 + store { ptr, i64, i64 } %t116, ptr %a118 + call void @finch_str_copy(ptr %a119, ptr %a118) + %t120 = load { ptr, i64, i64 }, ptr %a119 + %t121 = load { ptr, i64, i64 }, ptr %t117 + store { ptr, i64, i64 } %t120, ptr %t117 store { ptr, i64, i64 } %t121, ptr %a122 - 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.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.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 - %t132 = call %S.ast.Type @finch.parser.parseType(ptr %t131) - %t133 = load i64, ptr %t130 - %t134 = add i64 %t133, 1 - call void @finch_arr_reserve(ptr %t129, i64 %t134, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t135 = load ptr, ptr %t129 - %t136 = getelementptr inbounds %S.ast.Type, ptr %t135, i64 %t133 - 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.637, i64 1, i64 0 }) - %t139 = xor i1 %t138, true - 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.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) - %t145 = load %S.ast.Type, ptr %a144 - ret %S.ast.Type %t145 + call void @finch_str_drop(ptr %a122) + %t123 = load ptr, ptr %a1 + %t124 = call %S.lexer.Token @finch.parser.next(ptr %t123) + %t125 = extractvalue %S.lexer.Token %t124, 1 + store { ptr, i64, i64 } %t125, ptr %a126 + call void @finch_str_copy(ptr %a127, ptr %a126) + %t128 = load { ptr, i64, i64 }, ptr %a127 + store %S.lexer.Token %t124, ptr %a129 + call void @finch.drop.S_lexer_Token(ptr %a129) + %t130 = getelementptr inbounds %S.ast.Type, ptr %a102, i32 0, i32 2 + %t131 = load { ptr, i64, i64 }, ptr %t130 + store { ptr, i64, i64 } %t128, ptr %t130 + store { ptr, i64, i64 } %t131, ptr %a132 + call void @finch_str_drop(ptr %a132) + br label %endif1141 +endif1141: + %t133 = load ptr, ptr %a1 + %t134 = call i1 @finch.parser.at(ptr %t133, { ptr, i64, i64 } { ptr @.str.644, i64 1, i64 0 }) + br label %logic.from1142 +logic.from1142: + br i1 %t134, label %logic.rhs1143, label %logic.end1144 +logic.rhs1143: + %t135 = load ptr, ptr %a1 + %t136 = call %S.lexer.Token @finch.parser.cur(ptr %t135) + %t137 = extractvalue %S.lexer.Token %t136, 4 + store %S.lexer.Token %t136, ptr %a138 + call void @finch.drop.S_lexer_Token(ptr %a138) + %t139 = xor i1 %t137, true + br label %logic.rend1145 +logic.rend1145: + br label %logic.end1144 +logic.end1144: + %t140 = phi i1 [ false, %logic.from1142 ], [ %t139, %logic.rend1145 ] + br label %logic.from1146 +logic.from1146: + br i1 %t140, label %logic.rhs1147, label %logic.end1148 +logic.rhs1147: + %t141 = load ptr, ptr %a1 + %t142 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t141, i64 1) + store { ptr, i64, i64 } %t142, ptr %a143 + store { ptr, i64, i64 } { ptr @.str.645, i64 1, i64 0 }, ptr %a144 + %t145 = call i32 @finch_str_eq(ptr %a143, ptr %a144) + %t146 = icmp eq i32 %t145, 0 + store { ptr, i64, i64 } %t142, ptr %a147 + call void @finch_str_drop(ptr %a147) + br label %logic.rend1149 +logic.rend1149: + br label %logic.end1148 +logic.end1148: + %t148 = phi i1 [ false, %logic.from1146 ], [ %t146, %logic.rend1149 ] + br i1 %t148, label %then1150, label %endif1152 +then1150: + %t149 = load ptr, ptr %a1 + %t150 = call %S.lexer.Token @finch.parser.next(ptr %t149) + store %S.lexer.Token %t150, ptr %a151 + call void @finch.drop.S_lexer_Token(ptr %a151) + br label %while.cond1153 +while.cond1153: + br label %while.body1154 +while.body1154: + %t152 = getelementptr inbounds %S.ast.Type, ptr %a102, i32 0, i32 1 + %t153 = getelementptr inbounds { ptr, i64, i64 }, ptr %t152, i32 0, i32 1 + %t154 = load ptr, ptr %a1 + %t155 = call %S.ast.Type @finch.parser.parseType(ptr %t154) + %t156 = load i64, ptr %t153 + %t157 = add i64 %t156, 1 + call void @finch_arr_reserve(ptr %t152, i64 %t157, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) + %t158 = load ptr, ptr %t152 + %t159 = getelementptr inbounds %S.ast.Type, ptr %t158, i64 %t156 + store %S.ast.Type %t155, ptr %t159 + store i64 %t157, ptr %t153 + %t160 = load ptr, ptr %a1 + %t161 = call i1 @finch.parser.accept(ptr %t160, { ptr, i64, i64 } { ptr @.str.646, i64 1, i64 0 }) + %t162 = xor i1 %t161, true + br i1 %t162, label %then1156, label %endif1158 +then1156: + br label %while.end1155 +endif1158: + br label %while.cond1153 +while.end1155: + %t163 = load ptr, ptr %a1 + %t164 = call %S.lexer.Token @finch.parser.expect(ptr %t163, { ptr, i64, i64 } { ptr @.str.647, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.648, i64 28, i64 0 }) + store %S.lexer.Token %t164, ptr %a165 + call void @finch.drop.S_lexer_Token(ptr %a165) + br label %endif1152 +endif1152: + %t166 = load %S.ast.Type, ptr %a102 + call void @finch_str_drop(ptr %a40) + ret %S.ast.Type %t166 } define internal i1 @finch.parser.genericDeclAhead(ptr %p0) { @@ -14437,281 +16112,290 @@ entry: %a1 = alloca ptr, align 16 %a7 = alloca { ptr, i64, i64 }, align 16 %a8 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 + %a11 = alloca { ptr, i64, i64 }, align 16 %a15 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca i64, align 16 - %a25 = alloca i64, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 + %a16 = alloca { ptr, i64, i64 }, align 16 + %a19 = alloca { ptr, i64, i64 }, align 16 + %a21 = alloca i64, align 16 + %a27 = alloca i64, align 16 + %a46 = alloca { ptr, i64, i64 }, align 16 %a47 = alloca { ptr, i64, i64 }, align 16 %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 + %a51 = alloca { ptr, i64, i64 }, align 16 + %a52 = alloca { ptr, i64, i64 }, align 16 + %a58 = alloca { ptr, i64, i64 }, align 16 + %a59 = alloca { ptr, i64, i64 }, align 16 + %a86 = alloca { ptr, i64, i64 }, align 16 + %a87 = alloca { ptr, i64, i64 }, align 16 + %a106 = alloca { ptr, i64, i64 }, align 16 + %a107 = 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.640, i64 5, i64 0 }) + %t3 = call i1 @finch.parser.at(ptr %t2, { ptr, i64, i64 } { ptr @.str.649, i64 5, i64 0 }) %t4 = xor i1 %t3, true - br label %logic.from1098 -logic.from1098: - br i1 %t4, label %logic.end1100, label %logic.rhs1099 -logic.rhs1099: + br label %logic.from1159 +logic.from1159: + br i1 %t4, label %logic.end1161, label %logic.rhs1160 +logic.rhs1160: %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.641, i64 1, i64 0 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.650, 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.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.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.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: + store { ptr, i64, i64 } %t6, ptr %a11 + call void @finch_str_drop(ptr %a11) + br label %logic.rend1162 +logic.rend1162: + br label %logic.end1161 +logic.end1161: + %t12 = phi i1 [ true, %logic.from1159 ], [ %t10, %logic.rend1162 ] + br label %logic.from1163 +logic.from1163: + br i1 %t12, label %logic.end1165, label %logic.rhs1164 +logic.rhs1164: + %t13 = load ptr, ptr %a1 + %t14 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t13, i64 2) + store { ptr, i64, i64 } %t14, ptr %a15 + store { ptr, i64, i64 } { ptr @.str.651, i64 1, i64 0 }, ptr %a16 + %t17 = call i32 @finch_str_eq(ptr %a15, ptr %a16) + %t18 = icmp ne i32 %t17, 0 + store { ptr, i64, i64 } %t14, ptr %a19 + call void @finch_str_drop(ptr %a19) + br label %logic.rend1166 +logic.rend1166: + br label %logic.end1165 +logic.end1165: + %t20 = phi i1 [ true, %logic.from1163 ], [ %t18, %logic.rend1166 ] + br i1 %t20, label %then1167, label %endif1169 +then1167: ret i1 false -endif1108: - store i64 0, ptr %a19 - %t20 = load ptr, ptr %a1 - %t21 = icmp eq ptr %t20, null - br i1 %t21, label %panic1109, label %ok1110 -panic1109: - call void @finch_panic(ptr @.str.643, i64 148, ptr @.str.644) +endif1169: + store i64 0, ptr %a21 + %t22 = load ptr, ptr %a1 + %t23 = icmp eq ptr %t22, null + br i1 %t23, label %panic1170, label %ok1171 +panic1170: + call void @finch_panic(ptr @.str.652, i64 148, ptr @.str.653) unreachable -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.cond1111 -while.cond1111: - %t26 = load i64, ptr %a25 - %t27 = load ptr, ptr %a1 - %t28 = icmp eq ptr %t27, null - br i1 %t28, label %panic1114, label %ok1115 -panic1114: - call void @finch_panic(ptr @.str.645, i64 149, ptr @.str.646) +ok1171: + %t24 = getelementptr inbounds %S.parser.Parser, ptr %t22, i32 0, i32 1 + %t25 = load i64, ptr %t24 + %t26 = add i64 %t25, 1 + store i64 %t26, ptr %a27 + br label %while.cond1172 +while.cond1172: + %t28 = load i64, ptr %a27 + %t29 = load ptr, ptr %a1 + %t30 = icmp eq ptr %t29, null + br i1 %t30, label %panic1175, label %ok1176 +panic1175: + call void @finch_panic(ptr @.str.654, i64 149, ptr @.str.655) unreachable -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.body1112, label %while.end1113 -while.body1112: - %t33 = load ptr, ptr %a1 - %t34 = icmp eq ptr %t33, null - br i1 %t34, label %panic1116, label %ok1117 -panic1116: - call void @finch_panic(ptr @.str.647, i64 150, ptr @.str.648) +ok1176: + %t31 = getelementptr inbounds %S.parser.Parser, 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 %while.body1173, label %while.end1174 +while.body1173: + %t35 = load ptr, ptr %a1 + %t36 = icmp eq ptr %t35, null + br i1 %t36, label %panic1177, label %ok1178 +panic1177: + call void @finch_panic(ptr @.str.656, i64 150, ptr @.str.657) unreachable -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 %range1118, label %inrange1119 -range1118: - call void @finch_panic_index(ptr @.str.649, i64 150, i64 %t36, i64 %t38) +ok1178: + %t37 = getelementptr inbounds %S.parser.Parser, ptr %t35, i32 0, i32 0 + %t38 = load i64, ptr %a27 + %t39 = load { ptr, i64, i64 }, ptr %t37 + %t40 = extractvalue { ptr, i64, i64 } %t39, 1 + %t41 = icmp uge i64 %t38, %t40 + br i1 %t41, label %range1179, label %inrange1180 +range1179: + call void @finch_panic_index(ptr @.str.658, i64 150, i64 %t38, i64 %t40) unreachable -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 - %t43 = load { ptr, i64, i64 }, ptr %t42 - store { ptr, i64, i64 } %t43, ptr %a44 - call void @finch_str_copy(ptr %a45, ptr %a44) - %t46 = load { ptr, i64, i64 }, ptr %a45 - store { ptr, i64, i64 } %t46, ptr %a47 +inrange1180: + %t42 = extractvalue { ptr, i64, i64 } %t39, 0 + %t43 = getelementptr inbounds %S.lexer.Token, ptr %t42, i64 %t38 + %t44 = getelementptr inbounds %S.lexer.Token, ptr %t43, i32 0, i32 0 + %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 - 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 %then1120, label %else1121 -then1120: - %t53 = load i64, ptr %a19 - %t54 = add i64 %t53, 1 - store i64 %t54, ptr %a19 - br label %endif1122 -else1121: - %t55 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } %t55, ptr %a56 - 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 %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 %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 %panic1129, label %ok1130 -panic1129: - call void @finch_panic(ptr @.str.652, i64 156, ptr @.str.653) + %t50 = load { ptr, i64, i64 }, ptr %a49 + store { ptr, i64, i64 } %t50, ptr %a51 + store { ptr, i64, i64 } { ptr @.str.659, i64 1, i64 0 }, ptr %a52 + %t53 = call i32 @finch_str_eq(ptr %a51, ptr %a52) + %t54 = icmp ne i32 %t53, 0 + br i1 %t54, label %then1181, label %else1182 +then1181: + %t55 = load i64, ptr %a21 + %t56 = add i64 %t55, 1 + store i64 %t56, ptr %a21 + br label %endif1183 +else1182: + %t57 = load { ptr, i64, i64 }, ptr %a49 + store { ptr, i64, i64 } %t57, ptr %a58 + store { ptr, i64, i64 } { ptr @.str.660, i64 1, i64 0 }, ptr %a59 + %t60 = call i32 @finch_str_eq(ptr %a58, ptr %a59) + %t61 = icmp ne i32 %t60, 0 + br i1 %t61, label %then1184, label %else1185 +then1184: + %t62 = load i64, ptr %a21 + %t63 = sub i64 %t62, 1 + store i64 %t63, ptr %a21 + %t64 = load i64, ptr %a21 + %t65 = icmp eq i64 %t64, 0 + br i1 %t65, label %then1187, label %endif1189 +then1187: + %t66 = load i64, ptr %a27 + %t67 = add i64 %t66, 1 + %t68 = load ptr, ptr %a1 + %t69 = icmp eq ptr %t68, null + br i1 %t69, label %panic1190, label %ok1191 +panic1190: + call void @finch_panic(ptr @.str.661, i64 156, ptr @.str.662) unreachable -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.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 %panic1134, label %ok1135 -panic1134: - call void @finch_panic(ptr @.str.654, i64 156, ptr @.str.655) +ok1191: + %t70 = getelementptr inbounds %S.parser.Parser, ptr %t68, i32 0, i32 0 + %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %t70, i32 0, i32 1 + %t72 = load i64, ptr %t71 + %t73 = icmp slt i64 %t67, %t72 + br label %logic.from1192 +logic.from1192: + br i1 %t73, label %logic.rhs1193, label %logic.end1194 +logic.rhs1193: + %t74 = load ptr, ptr %a1 + %t75 = icmp eq ptr %t74, null + br i1 %t75, label %panic1195, label %ok1196 +panic1195: + call void @finch_panic(ptr @.str.663, i64 156, ptr @.str.664) unreachable -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 %range1136, label %inrange1137 -range1136: - call void @finch_panic_index(ptr @.str.656, i64 156, i64 %t76, i64 %t78) +ok1196: + %t76 = getelementptr inbounds %S.parser.Parser, ptr %t74, i32 0, i32 0 + %t77 = load i64, ptr %a27 + %t78 = add i64 %t77, 1 + %t79 = load { ptr, i64, i64 }, ptr %t76 + %t80 = extractvalue { ptr, i64, i64 } %t79, 1 + %t81 = icmp uge i64 %t78, %t80 + br i1 %t81, label %range1197, label %inrange1198 +range1197: + call void @finch_panic_index(ptr @.str.665, i64 156, i64 %t78, i64 %t80) unreachable -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.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.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 %panic1142, label %ok1143 -panic1142: - call void @finch_panic(ptr @.str.658, i64 156, ptr @.str.659) +inrange1198: + %t82 = extractvalue { ptr, i64, i64 } %t79, 0 + %t83 = getelementptr inbounds %S.lexer.Token, ptr %t82, i64 %t78 + %t84 = getelementptr inbounds %S.lexer.Token, ptr %t83, i32 0, i32 0 + %t85 = load { ptr, i64, i64 }, ptr %t84 + store { ptr, i64, i64 } %t85, ptr %a86 + store { ptr, i64, i64 } { ptr @.str.666, i64 5, i64 0 }, ptr %a87 + %t88 = call i32 @finch_str_eq(ptr %a86, ptr %a87) + %t89 = icmp ne i32 %t88, 0 + br label %logic.rend1199 +logic.rend1199: + br label %logic.end1194 +logic.end1194: + %t90 = phi i1 [ false, %logic.from1192 ], [ %t89, %logic.rend1199 ] + br label %logic.from1200 +logic.from1200: + br i1 %t90, label %logic.rhs1201, label %logic.end1202 +logic.rhs1201: + %t91 = load ptr, ptr %a1 + %t92 = icmp eq ptr %t91, null + br i1 %t92, label %panic1203, label %ok1204 +panic1203: + call void @finch_panic(ptr @.str.667, i64 156, ptr @.str.668) unreachable -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 %range1144, label %inrange1145 -range1144: - call void @finch_panic_index(ptr @.str.660, i64 156, i64 %t93, i64 %t95) +ok1204: + %t93 = getelementptr inbounds %S.parser.Parser, ptr %t91, i32 0, i32 0 + %t94 = load i64, ptr %a27 + %t95 = add i64 %t94, 1 + %t96 = load { ptr, i64, i64 }, ptr %t93 + %t97 = extractvalue { ptr, i64, i64 } %t96, 1 + %t98 = icmp uge i64 %t95, %t97 + br i1 %t98, label %range1205, label %inrange1206 +range1205: + call void @finch_panic_index(ptr @.str.669, i64 156, i64 %t95, i64 %t97) unreachable -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.rend1146 -logic.rend1146: - br label %logic.end1141 -logic.end1141: - %t102 = phi i1 [ false, %logic.from1139 ], [ %t101, %logic.rend1146 ] - ret i1 %t102 -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.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.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 %panic1150, label %ok1151 -panic1150: - call void @finch_panic(ptr @.str.662, i64 158, ptr @.str.663) +inrange1206: + %t99 = extractvalue { ptr, i64, i64 } %t96, 0 + %t100 = getelementptr inbounds %S.lexer.Token, ptr %t99, i64 %t95 + %t101 = getelementptr inbounds %S.lexer.Token, ptr %t100, i32 0, i32 4 + %t102 = load i1, ptr %t101 + %t103 = xor i1 %t102, true + br label %logic.rend1207 +logic.rend1207: + br label %logic.end1202 +logic.end1202: + %t104 = phi i1 [ false, %logic.from1200 ], [ %t103, %logic.rend1207 ] + call void @finch_str_drop(ptr %a49) + ret i1 %t104 +endif1189: + br label %endif1186 +else1185: + %t105 = load { ptr, i64, i64 }, ptr %a49 + store { ptr, i64, i64 } %t105, ptr %a106 + store { ptr, i64, i64 } { ptr @.str.670, i64 3, i64 0 }, ptr %a107 + %t108 = call i32 @finch_str_eq(ptr %a106, ptr %a107) + %t109 = icmp ne i32 %t108, 0 + br label %logic.from1208 +logic.from1208: + br i1 %t109, label %logic.end1210, label %logic.rhs1209 +logic.rhs1209: + %t110 = load ptr, ptr %a1 + %t111 = icmp eq ptr %t110, null + br i1 %t111, label %panic1211, label %ok1212 +panic1211: + call void @finch_panic(ptr @.str.671, i64 158, ptr @.str.672) unreachable -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 %range1152, label %inrange1153 -range1152: - call void @finch_panic_index(ptr @.str.664, i64 158, i64 %t111, i64 %t113) +ok1212: + %t112 = getelementptr inbounds %S.parser.Parser, ptr %t110, i32 0, i32 0 + %t113 = load i64, ptr %a27 + %t114 = load { ptr, i64, i64 }, ptr %t112 + %t115 = extractvalue { ptr, i64, i64 } %t114, 1 + %t116 = icmp uge i64 %t113, %t115 + br i1 %t116, label %range1213, label %inrange1214 +range1213: + call void @finch_panic_index(ptr @.str.673, i64 158, i64 %t113, i64 %t115) unreachable -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.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.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: +inrange1214: + %t117 = extractvalue { ptr, i64, i64 } %t114, 0 + %t118 = getelementptr inbounds %S.lexer.Token, ptr %t117, i64 %t113 + %t119 = getelementptr inbounds %S.lexer.Token, ptr %t118, i32 0, i32 4 + %t120 = load i1, ptr %t119 + br label %logic.from1215 +logic.from1215: + br i1 %t120, label %logic.rhs1216, label %logic.end1217 +logic.rhs1216: + %t121 = load i64, ptr %a21 + %t122 = icmp eq i64 %t121, 0 + br label %logic.rend1218 +logic.rend1218: + br label %logic.end1217 +logic.end1217: + %t123 = phi i1 [ false, %logic.from1215 ], [ %t122, %logic.rend1218 ] + br label %logic.rend1219 +logic.rend1219: + br label %logic.end1210 +logic.end1210: + %t124 = phi i1 [ true, %logic.from1208 ], [ %t123, %logic.rend1219 ] + br i1 %t124, label %then1220, label %endif1222 +then1220: + call void @finch_str_drop(ptr %a49) ret i1 false -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.cond1111 -while.end1113: +endif1222: + br label %endif1186 +endif1186: + br label %endif1183 +endif1183: + %t125 = load i64, ptr %a27 + %t126 = add i64 %t125, 1 + store i64 %t126, ptr %a27 + call void @finch_str_drop(ptr %a49) + br label %while.cond1172 +while.end1174: ret i1 false } @@ -14722,11 +16406,11 @@ entry: store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic1162, label %ok1163 -panic1162: - call void @finch_panic(ptr @.str.665, i64 168, ptr @.str.666) + br i1 %t3, label %panic1223, label %ok1224 +panic1223: + call void @finch_panic(ptr @.str.674, i64 168, ptr @.str.675) unreachable -ok1163: +ok1224: %t4 = getelementptr inbounds %S.parser.Parser, ptr %t2, i32 0, i32 1 %t5 = load i64, ptr %t4 %t6 = sub i64 %t5, 1 @@ -14736,11 +16420,11 @@ ok1163: store i1 %t8, ptr %a9 %t10 = load ptr, ptr %a1 %t11 = icmp eq ptr %t10, null - br i1 %t11, label %panic1164, label %ok1165 -panic1164: - call void @finch_panic(ptr @.str.667, i64 170, ptr @.str.668) + br i1 %t11, label %panic1225, label %ok1226 +panic1225: + call void @finch_panic(ptr @.str.676, i64 170, ptr @.str.677) unreachable -ok1165: +ok1226: %t12 = getelementptr inbounds %S.parser.Parser, ptr %t10, i32 0, i32 1 %t13 = load i64, ptr %t12 %t14 = add i64 %t13, 1 @@ -14754,297 +16438,306 @@ entry: %a1 = alloca ptr, align 16 %a4 = alloca { ptr, i64, i64 }, align 16 %a5 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 + %a8 = alloca { ptr, i64, i64 }, align 16 %a27 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca i64, align 16 - %a37 = alloca i64, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 + %a28 = alloca { ptr, i64, i64 }, align 16 + %a31 = alloca { ptr, i64, i64 }, align 16 + %a33 = alloca i64, align 16 + %a39 = alloca i64, align 16 + %a58 = alloca { ptr, i64, i64 }, align 16 %a59 = alloca { ptr, i64, i64 }, align 16 %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 + %a63 = alloca { ptr, i64, i64 }, align 16 + %a64 = alloca { ptr, i64, i64 }, align 16 + %a70 = alloca { ptr, i64, i64 }, align 16 + %a71 = alloca { ptr, i64, i64 }, align 16 + %a98 = alloca { ptr, i64, i64 }, align 16 + %a99 = alloca { ptr, i64, i64 }, align 16 + %a118 = alloca { ptr, i64, i64 }, align 16 + %a119 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 %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.669, i64 1, i64 0 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.678, 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.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 %panic1169, label %ok1170 -panic1169: - call void @finch_panic(ptr @.str.670, i64 176, ptr @.str.671) + store { ptr, i64, i64 } %t3, ptr %a8 + call void @finch_str_drop(ptr %a8) + br label %logic.from1227 +logic.from1227: + br i1 %t7, label %logic.end1229, label %logic.rhs1228 +logic.rhs1228: + %t9 = load ptr, ptr %a1 + %t10 = icmp eq ptr %t9, null + br i1 %t10, label %panic1230, label %ok1231 +panic1230: + call void @finch_panic(ptr @.str.679, i64 176, ptr @.str.680) unreachable -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 %panic1171, label %ok1172 -panic1171: - call void @finch_panic(ptr @.str.672, i64 176, ptr @.str.673) +ok1231: + %t11 = getelementptr inbounds %S.parser.Parser, ptr %t9, i32 0, i32 0 + %t12 = load ptr, ptr %a1 + %t13 = icmp eq ptr %t12, null + br i1 %t13, label %panic1232, label %ok1233 +panic1232: + call void @finch_panic(ptr @.str.681, i64 176, ptr @.str.682) unreachable -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 %range1173, label %inrange1174 -range1173: - call void @finch_panic_index(ptr @.str.674, i64 176, i64 %t15, i64 %t17) +ok1233: + %t14 = getelementptr inbounds %S.parser.Parser, ptr %t12, i32 0, i32 1 + %t15 = load i64, ptr %t14 + %t16 = add i64 %t15, 1 + %t17 = load { ptr, i64, i64 }, ptr %t11 + %t18 = extractvalue { ptr, i64, i64 } %t17, 1 + %t19 = icmp uge i64 %t16, %t18 + br i1 %t19, label %range1234, label %inrange1235 +range1234: + call void @finch_panic_index(ptr @.str.683, i64 176, i64 %t16, i64 %t18) unreachable -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.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.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.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: +inrange1235: + %t20 = extractvalue { ptr, i64, i64 } %t17, 0 + %t21 = getelementptr inbounds %S.lexer.Token, ptr %t20, i64 %t16 + %t22 = getelementptr inbounds %S.lexer.Token, ptr %t21, i32 0, i32 4 + %t23 = load i1, ptr %t22 + br label %logic.rend1236 +logic.rend1236: + br label %logic.end1229 +logic.end1229: + %t24 = phi i1 [ true, %logic.from1227 ], [ %t23, %logic.rend1236 ] + br label %logic.from1237 +logic.from1237: + br i1 %t24, label %logic.end1239, label %logic.rhs1238 +logic.rhs1238: + %t25 = load ptr, ptr %a1 + %t26 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t25, i64 2) + store { ptr, i64, i64 } %t26, ptr %a27 + store { ptr, i64, i64 } { ptr @.str.684, i64 1, i64 0 }, ptr %a28 + %t29 = call i32 @finch_str_eq(ptr %a27, ptr %a28) + %t30 = icmp ne i32 %t29, 0 + store { ptr, i64, i64 } %t26, ptr %a31 + call void @finch_str_drop(ptr %a31) + br label %logic.rend1240 +logic.rend1240: + br label %logic.end1239 +logic.end1239: + %t32 = phi i1 [ true, %logic.from1237 ], [ %t30, %logic.rend1240 ] + br i1 %t32, label %then1241, label %endif1243 +then1241: ret i1 false -endif1182: - store i64 0, ptr %a31 - %t32 = load ptr, ptr %a1 - %t33 = icmp eq ptr %t32, null - br i1 %t33, label %panic1183, label %ok1184 -panic1183: - call void @finch_panic(ptr @.str.676, i64 180, ptr @.str.677) +endif1243: + store i64 0, ptr %a33 + %t34 = load ptr, ptr %a1 + %t35 = icmp eq ptr %t34, null + br i1 %t35, label %panic1244, label %ok1245 +panic1244: + call void @finch_panic(ptr @.str.685, i64 180, ptr @.str.686) unreachable -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.cond1185 -while.cond1185: - %t38 = load i64, ptr %a37 - %t39 = load ptr, ptr %a1 - %t40 = icmp eq ptr %t39, null - br i1 %t40, label %panic1188, label %ok1189 -panic1188: - call void @finch_panic(ptr @.str.678, i64 181, ptr @.str.679) +ok1245: + %t36 = getelementptr inbounds %S.parser.Parser, ptr %t34, i32 0, i32 1 + %t37 = load i64, ptr %t36 + %t38 = add i64 %t37, 1 + store i64 %t38, ptr %a39 + br label %while.cond1246 +while.cond1246: + %t40 = load i64, ptr %a39 + %t41 = load ptr, ptr %a1 + %t42 = icmp eq ptr %t41, null + br i1 %t42, label %panic1249, label %ok1250 +panic1249: + call void @finch_panic(ptr @.str.687, i64 181, ptr @.str.688) unreachable -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.body1186, label %while.end1187 -while.body1186: - %t45 = load ptr, ptr %a1 - %t46 = icmp eq ptr %t45, null - br i1 %t46, label %panic1190, label %ok1191 -panic1190: - call void @finch_panic(ptr @.str.680, i64 182, ptr @.str.681) +ok1250: + %t43 = getelementptr inbounds %S.parser.Parser, ptr %t41, i32 0, i32 0 + %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t43, i32 0, i32 1 + %t45 = load i64, ptr %t44 + %t46 = icmp slt i64 %t40, %t45 + br i1 %t46, label %while.body1247, label %while.end1248 +while.body1247: + %t47 = load ptr, ptr %a1 + %t48 = icmp eq ptr %t47, null + br i1 %t48, label %panic1251, label %ok1252 +panic1251: + call void @finch_panic(ptr @.str.689, i64 182, ptr @.str.690) unreachable -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 %range1192, label %inrange1193 -range1192: - call void @finch_panic_index(ptr @.str.682, i64 182, i64 %t48, i64 %t50) +ok1252: + %t49 = getelementptr inbounds %S.parser.Parser, ptr %t47, i32 0, i32 0 + %t50 = load i64, ptr %a39 + %t51 = load { ptr, i64, i64 }, ptr %t49 + %t52 = extractvalue { ptr, i64, i64 } %t51, 1 + %t53 = icmp uge i64 %t50, %t52 + br i1 %t53, label %range1253, label %inrange1254 +range1253: + call void @finch_panic_index(ptr @.str.691, i64 182, i64 %t50, i64 %t52) unreachable -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 - %t55 = load { ptr, i64, i64 }, ptr %t54 - store { ptr, i64, i64 } %t55, ptr %a56 - call void @finch_str_copy(ptr %a57, ptr %a56) - %t58 = load { ptr, i64, i64 }, ptr %a57 - store { ptr, i64, i64 } %t58, ptr %a59 +inrange1254: + %t54 = extractvalue { ptr, i64, i64 } %t51, 0 + %t55 = getelementptr inbounds %S.lexer.Token, ptr %t54, i64 %t50 + %t56 = getelementptr inbounds %S.lexer.Token, ptr %t55, i32 0, i32 0 + %t57 = load { ptr, i64, i64 }, ptr %t56 + store { ptr, i64, i64 } %t57, ptr %a58 + call void @finch_str_copy(ptr %a59, ptr %a58) %t60 = load { ptr, i64, i64 }, ptr %a59 store { ptr, i64, i64 } %t60, ptr %a61 - 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 %then1194, label %else1195 -then1194: - %t65 = load i64, ptr %a31 - %t66 = add i64 %t65, 1 - store i64 %t66, ptr %a31 - br label %endif1196 -else1195: - %t67 = load { ptr, i64, i64 }, ptr %a59 - store { ptr, i64, i64 } %t67, ptr %a68 - 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 %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 %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 %panic1203, label %ok1204 -panic1203: - call void @finch_panic(ptr @.str.685, i64 188, ptr @.str.686) + %t62 = load { ptr, i64, i64 }, ptr %a61 + store { ptr, i64, i64 } %t62, ptr %a63 + store { ptr, i64, i64 } { ptr @.str.692, i64 1, i64 0 }, ptr %a64 + %t65 = call i32 @finch_str_eq(ptr %a63, ptr %a64) + %t66 = icmp ne i32 %t65, 0 + br i1 %t66, label %then1255, label %else1256 +then1255: + %t67 = load i64, ptr %a33 + %t68 = add i64 %t67, 1 + store i64 %t68, ptr %a33 + br label %endif1257 +else1256: + %t69 = load { ptr, i64, i64 }, ptr %a61 + store { ptr, i64, i64 } %t69, ptr %a70 + store { ptr, i64, i64 } { ptr @.str.693, i64 1, i64 0 }, ptr %a71 + %t72 = call i32 @finch_str_eq(ptr %a70, ptr %a71) + %t73 = icmp ne i32 %t72, 0 + br i1 %t73, label %then1258, label %else1259 +then1258: + %t74 = load i64, ptr %a33 + %t75 = sub i64 %t74, 1 + store i64 %t75, ptr %a33 + %t76 = load i64, ptr %a33 + %t77 = icmp eq i64 %t76, 0 + br i1 %t77, label %then1261, label %endif1263 +then1261: + %t78 = load i64, ptr %a39 + %t79 = add i64 %t78, 1 + %t80 = load ptr, ptr %a1 + %t81 = icmp eq ptr %t80, null + br i1 %t81, label %panic1264, label %ok1265 +panic1264: + call void @finch_panic(ptr @.str.694, i64 188, ptr @.str.695) unreachable -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.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 %panic1208, label %ok1209 -panic1208: - call void @finch_panic(ptr @.str.687, i64 188, ptr @.str.688) +ok1265: + %t82 = getelementptr inbounds %S.parser.Parser, ptr %t80, i32 0, i32 0 + %t83 = getelementptr inbounds { ptr, i64, i64 }, ptr %t82, i32 0, i32 1 + %t84 = load i64, ptr %t83 + %t85 = icmp slt i64 %t79, %t84 + br label %logic.from1266 +logic.from1266: + br i1 %t85, label %logic.rhs1267, label %logic.end1268 +logic.rhs1267: + %t86 = load ptr, ptr %a1 + %t87 = icmp eq ptr %t86, null + br i1 %t87, label %panic1269, label %ok1270 +panic1269: + call void @finch_panic(ptr @.str.696, i64 188, ptr @.str.697) unreachable -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 %range1210, label %inrange1211 -range1210: - call void @finch_panic_index(ptr @.str.689, i64 188, i64 %t88, i64 %t90) +ok1270: + %t88 = getelementptr inbounds %S.parser.Parser, ptr %t86, i32 0, i32 0 + %t89 = load i64, ptr %a39 + %t90 = add i64 %t89, 1 + %t91 = load { ptr, i64, i64 }, ptr %t88 + %t92 = extractvalue { ptr, i64, i64 } %t91, 1 + %t93 = icmp uge i64 %t90, %t92 + br i1 %t93, label %range1271, label %inrange1272 +range1271: + call void @finch_panic_index(ptr @.str.698, i64 188, i64 %t90, i64 %t92) unreachable -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.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.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 %panic1216, label %ok1217 -panic1216: - call void @finch_panic(ptr @.str.691, i64 188, ptr @.str.692) +inrange1272: + %t94 = extractvalue { ptr, i64, i64 } %t91, 0 + %t95 = getelementptr inbounds %S.lexer.Token, ptr %t94, i64 %t90 + %t96 = getelementptr inbounds %S.lexer.Token, ptr %t95, i32 0, i32 0 + %t97 = load { ptr, i64, i64 }, ptr %t96 + store { ptr, i64, i64 } %t97, ptr %a98 + store { ptr, i64, i64 } { ptr @.str.699, i64 1, i64 0 }, ptr %a99 + %t100 = call i32 @finch_str_eq(ptr %a98, ptr %a99) + %t101 = icmp ne i32 %t100, 0 + br label %logic.rend1273 +logic.rend1273: + br label %logic.end1268 +logic.end1268: + %t102 = phi i1 [ false, %logic.from1266 ], [ %t101, %logic.rend1273 ] + br label %logic.from1274 +logic.from1274: + br i1 %t102, label %logic.rhs1275, label %logic.end1276 +logic.rhs1275: + %t103 = load ptr, ptr %a1 + %t104 = icmp eq ptr %t103, null + br i1 %t104, label %panic1277, label %ok1278 +panic1277: + call void @finch_panic(ptr @.str.700, i64 188, ptr @.str.701) unreachable -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 %range1218, label %inrange1219 -range1218: - call void @finch_panic_index(ptr @.str.693, i64 188, i64 %t105, i64 %t107) +ok1278: + %t105 = getelementptr inbounds %S.parser.Parser, ptr %t103, i32 0, i32 0 + %t106 = load i64, ptr %a39 + %t107 = add i64 %t106, 1 + %t108 = load { ptr, i64, i64 }, ptr %t105 + %t109 = extractvalue { ptr, i64, i64 } %t108, 1 + %t110 = icmp uge i64 %t107, %t109 + br i1 %t110, label %range1279, label %inrange1280 +range1279: + call void @finch_panic_index(ptr @.str.702, i64 188, i64 %t107, i64 %t109) unreachable -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.rend1220 -logic.rend1220: - br label %logic.end1215 -logic.end1215: - %t114 = phi i1 [ false, %logic.from1213 ], [ %t113, %logic.rend1220 ] - ret i1 %t114 -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.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.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 %panic1224, label %ok1225 -panic1224: - call void @finch_panic(ptr @.str.695, i64 190, ptr @.str.696) +inrange1280: + %t111 = extractvalue { ptr, i64, i64 } %t108, 0 + %t112 = getelementptr inbounds %S.lexer.Token, ptr %t111, i64 %t107 + %t113 = getelementptr inbounds %S.lexer.Token, ptr %t112, i32 0, i32 4 + %t114 = load i1, ptr %t113 + %t115 = xor i1 %t114, true + br label %logic.rend1281 +logic.rend1281: + br label %logic.end1276 +logic.end1276: + %t116 = phi i1 [ false, %logic.from1274 ], [ %t115, %logic.rend1281 ] + call void @finch_str_drop(ptr %a61) + ret i1 %t116 +endif1263: + br label %endif1260 +else1259: + %t117 = load { ptr, i64, i64 }, ptr %a61 + store { ptr, i64, i64 } %t117, ptr %a118 + store { ptr, i64, i64 } { ptr @.str.703, 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.from1282 +logic.from1282: + br i1 %t121, label %logic.end1284, label %logic.rhs1283 +logic.rhs1283: + %t122 = load ptr, ptr %a1 + %t123 = icmp eq ptr %t122, null + br i1 %t123, label %panic1285, label %ok1286 +panic1285: + call void @finch_panic(ptr @.str.704, i64 190, ptr @.str.705) unreachable -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 %range1226, label %inrange1227 -range1226: - call void @finch_panic_index(ptr @.str.697, i64 190, i64 %t123, i64 %t125) +ok1286: + %t124 = getelementptr inbounds %S.parser.Parser, ptr %t122, i32 0, i32 0 + %t125 = load i64, ptr %a39 + %t126 = load { ptr, i64, i64 }, ptr %t124 + %t127 = extractvalue { ptr, i64, i64 } %t126, 1 + %t128 = icmp uge i64 %t125, %t127 + br i1 %t128, label %range1287, label %inrange1288 +range1287: + call void @finch_panic_index(ptr @.str.706, i64 190, i64 %t125, i64 %t127) unreachable -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.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: +inrange1288: + %t129 = extractvalue { ptr, i64, i64 } %t126, 0 + %t130 = getelementptr inbounds %S.lexer.Token, ptr %t129, i64 %t125 + %t131 = getelementptr inbounds %S.lexer.Token, ptr %t130, i32 0, i32 4 + %t132 = load i1, ptr %t131 + br label %logic.rend1289 +logic.rend1289: + br label %logic.end1284 +logic.end1284: + %t133 = phi i1 [ true, %logic.from1282 ], [ %t132, %logic.rend1289 ] + br i1 %t133, label %then1290, label %endif1292 +then1290: + call void @finch_str_drop(ptr %a61) ret i1 false -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.cond1185 -while.end1187: +endif1292: + br label %endif1260 +endif1260: + br label %endif1257 +endif1257: + %t134 = load i64, ptr %a39 + %t135 = add i64 %t134, 1 + store i64 %t135, ptr %a39 + call void @finch_str_drop(ptr %a61) + br label %while.cond1246 +while.end1248: ret i1 false } @@ -15053,273 +16746,315 @@ entry: %a1 = alloca ptr, align 16 %a8 = alloca { ptr, i64, i64 }, align 16 %a9 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 + %a12 = alloca { ptr, i64, i64 }, align 16 + %a18 = alloca { ptr, i64, i64 }, align 16 %a20 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 + %a21 = 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 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 + %a44 = alloca { ptr, i64, i64 }, align 16 + %a46 = alloca %S.lexer.Token, align 16 + %a47 = alloca { ptr, i64, i64 }, align 16 + %a48 = alloca { ptr, i64, i64 }, align 16 + %a51 = alloca { ptr, i64, i64 }, align 16 %a55 = alloca { ptr, i64, i64 }, align 16 %a56 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 + %a58 = alloca %S.lexer.Token, align 16 + %a59 = alloca { ptr, i64, i64 }, align 16 + %a60 = alloca { ptr, i64, i64 }, align 16 + %a63 = 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 + %a72 = alloca { ptr, i64, i64 }, align 16 %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 + %a78 = alloca { ptr, i64, i64 }, align 16 + %a79 = alloca { ptr, i64, i64 }, align 16 + %a82 = alloca { ptr, i64, i64 }, align 16 + %a86 = alloca { ptr, i64, i64 }, align 16 + %a87 = alloca { ptr, i64, i64 }, align 16 + %a90 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 %t3 = call i1 @finch.parser.genericDeclAhead(ptr %t2) - br i1 %t3, label %then1232, label %endif1234 -then1232: + br i1 %t3, label %then1293, label %endif1295 +then1293: ret i1 true -endif1234: +endif1295: %t4 = load ptr, ptr %a1 - %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: + %t5 = call i1 @finch.parser.at(ptr %t4, { ptr, i64, i64 } { ptr @.str.707, i64 1, i64 0 }) + br i1 %t5, label %then1296, label %endif1298 +then1296: %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.699, i64 1, i64 0 }, ptr %a9 + store { ptr, i64, i64 } { ptr @.str.708, i64 1, i64 0 }, ptr %a9 %t10 = call i32 @finch_str_eq(ptr %a8, ptr %a9) %t11 = icmp ne i32 %t10, 0 + store { ptr, i64, i64 } %t7, ptr %a12 + call void @finch_str_drop(ptr %a12) ret i1 %t11 -endif1237: - %t12 = load ptr, ptr %a1 - %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 %then1238, label %endif1240 -then1238: +endif1298: + %t13 = load ptr, ptr %a1 + %t14 = call i1 @finch.parser.at(ptr %t13, { ptr, i64, i64 } { ptr @.str.709, i64 5, i64 0 }) + %t15 = xor i1 %t14, true + br i1 %t15, label %then1299, label %endif1301 +then1299: ret i1 false -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.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 %then1241, label %endif1243 -then1241: - %t23 = load ptr, ptr %a1 - %t24 = icmp eq ptr %t23, null - br i1 %t24, label %panic1244, label %ok1245 -panic1244: - call void @finch_panic(ptr @.str.702, i64 210, ptr @.str.703) +endif1301: + %t16 = load ptr, ptr %a1 + %t17 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t16, i64 1) + 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.710, 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 %then1302, label %endif1304 +then1302: + %t24 = load ptr, ptr %a1 + %t25 = icmp eq ptr %t24, null + br i1 %t25, label %panic1305, label %ok1306 +panic1305: + call void @finch_panic(ptr @.str.711, i64 210, ptr @.str.712) unreachable -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 %panic1246, label %ok1247 -panic1246: - call void @finch_panic(ptr @.str.704, i64 210, ptr @.str.705) +ok1306: + %t26 = getelementptr inbounds %S.parser.Parser, ptr %t24, i32 0, i32 0 + %t27 = load ptr, ptr %a1 + %t28 = icmp eq ptr %t27, null + br i1 %t28, label %panic1307, label %ok1308 +panic1307: + call void @finch_panic(ptr @.str.713, i64 210, ptr @.str.714) unreachable -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 %range1248, label %inrange1249 -range1248: - call void @finch_panic_index(ptr @.str.706, i64 210, i64 %t30, i64 %t32) +ok1308: + %t29 = getelementptr inbounds %S.parser.Parser, ptr %t27, i32 0, i32 1 + %t30 = load i64, ptr %t29 + %t31 = add i64 %t30, 1 + %t32 = load { ptr, i64, i64 }, ptr %t26 + %t33 = extractvalue { ptr, i64, i64 } %t32, 1 + %t34 = icmp uge i64 %t31, %t33 + br i1 %t34, label %range1309, label %inrange1310 +range1309: + call void @finch_panic_index(ptr @.str.715, i64 210, i64 %t31, i64 %t33) unreachable -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 -endif1243: - %t39 = load ptr, ptr %a1 - %t40 = call %S.lexer.Token @finch.parser.cur(ptr %t39) - %t41 = extractvalue %S.lexer.Token %t40, 1 - store { ptr, i64, i64 } %t41, ptr %a42 - 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.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.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 - store { ptr, i64, i64 } %t51, ptr %a52 - call void @finch_str_copy(ptr %a53, ptr %a52) - %t54 = load { ptr, i64, i64 }, ptr %a53 +inrange1310: + %t35 = extractvalue { ptr, i64, i64 } %t32, 0 + %t36 = getelementptr inbounds %S.lexer.Token, ptr %t35, i64 %t31 + %t37 = getelementptr inbounds %S.lexer.Token, ptr %t36, i32 0, i32 4 + %t38 = load i1, ptr %t37 + %t39 = xor i1 %t38, true + call void @finch_str_drop(ptr %a18) + ret i1 %t39 +endif1304: + %t40 = load ptr, ptr %a1 + %t41 = call %S.lexer.Token @finch.parser.cur(ptr %t40) + %t42 = extractvalue %S.lexer.Token %t41, 1 + store { ptr, i64, i64 } %t42, ptr %a43 + call void @finch_str_copy(ptr %a44, ptr %a43) + %t45 = load { ptr, i64, i64 }, ptr %a44 + store %S.lexer.Token %t41, ptr %a46 + call void @finch.drop.S_lexer_Token(ptr %a46) + store { ptr, i64, i64 } %t45, ptr %a47 + store { ptr, i64, i64 } { ptr @.str.716, i64 3, i64 0 }, ptr %a48 + %t49 = call i32 @finch_str_eq(ptr %a47, ptr %a48) + %t50 = icmp ne i32 %t49, 0 + store { ptr, i64, i64 } %t45, ptr %a51 + call void @finch_str_drop(ptr %a51) + br label %logic.from1311 +logic.from1311: + br i1 %t50, label %logic.end1313, label %logic.rhs1312 +logic.rhs1312: + %t52 = load ptr, ptr %a1 + %t53 = call %S.lexer.Token @finch.parser.cur(ptr %t52) + %t54 = extractvalue %S.lexer.Token %t53, 1 store { ptr, i64, i64 } %t54, ptr %a55 - 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.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.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.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: + call void @finch_str_copy(ptr %a56, ptr %a55) + %t57 = load { ptr, i64, i64 }, ptr %a56 + store %S.lexer.Token %t53, ptr %a58 + call void @finch.drop.S_lexer_Token(ptr %a58) + store { ptr, i64, i64 } %t57, ptr %a59 + store { ptr, i64, i64 } { ptr @.str.717, i64 3, i64 0 }, ptr %a60 + %t61 = call i32 @finch_str_eq(ptr %a59, ptr %a60) + %t62 = icmp ne i32 %t61, 0 + store { ptr, i64, i64 } %t57, ptr %a63 + call void @finch_str_drop(ptr %a63) + br label %logic.rend1314 +logic.rend1314: + br label %logic.end1313 +logic.end1313: + %t64 = phi i1 [ true, %logic.from1311 ], [ %t62, %logic.rend1314 ] + br label %logic.from1315 +logic.from1315: + br i1 %t64, label %logic.rhs1316, label %logic.end1317 +logic.rhs1316: + %t65 = load { ptr, i64, i64 }, ptr %a18 + store { ptr, i64, i64 } %t65, ptr %a66 + store { ptr, i64, i64 } { ptr @.str.718, i64 1, i64 0 }, ptr %a67 + %t68 = call i32 @finch_str_eq(ptr %a66, ptr %a67) + %t69 = icmp ne i32 %t68, 0 + br label %logic.rend1318 +logic.rend1318: + br label %logic.end1317 +logic.end1317: + %t70 = phi i1 [ false, %logic.from1315 ], [ %t69, %logic.rend1318 ] + br i1 %t70, label %then1319, label %endif1321 +then1319: + call void @finch_str_drop(ptr %a18) ret i1 true -endif1260: - %t66 = load { ptr, i64, i64 }, ptr %a17 - store { ptr, i64, i64 } %t66, ptr %a67 - 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.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.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.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.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.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 %panic1272, label %ok1273 -panic1272: - call void @finch_panic(ptr @.str.713, i64 215, ptr @.str.714) +endif1321: + %t71 = load { ptr, i64, i64 }, ptr %a18 + store { ptr, i64, i64 } %t71, ptr %a72 + store { ptr, i64, i64 } { ptr @.str.719, i64 1, i64 0 }, ptr %a73 + %t74 = call i32 @finch_str_eq(ptr %a72, ptr %a73) + %t75 = icmp ne i32 %t74, 0 + br label %logic.from1322 +logic.from1322: + br i1 %t75, label %logic.rhs1323, label %logic.end1324 +logic.rhs1323: + %t76 = load ptr, ptr %a1 + %t77 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t76, i64 2) + store { ptr, i64, i64 } %t77, ptr %a78 + store { ptr, i64, i64 } { ptr @.str.720, i64 5, i64 0 }, ptr %a79 + %t80 = call i32 @finch_str_eq(ptr %a78, ptr %a79) + %t81 = icmp ne i32 %t80, 0 + store { ptr, i64, i64 } %t77, ptr %a82 + call void @finch_str_drop(ptr %a82) + br label %logic.rend1325 +logic.rend1325: + br label %logic.end1324 +logic.end1324: + %t83 = phi i1 [ false, %logic.from1322 ], [ %t81, %logic.rend1325 ] + br label %logic.from1326 +logic.from1326: + br i1 %t83, label %logic.rhs1327, label %logic.end1328 +logic.rhs1327: + %t84 = load ptr, ptr %a1 + %t85 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t84, i64 3) + store { ptr, i64, i64 } %t85, ptr %a86 + store { ptr, i64, i64 } { ptr @.str.721, i64 5, i64 0 }, ptr %a87 + %t88 = call i32 @finch_str_eq(ptr %a86, ptr %a87) + %t89 = icmp ne i32 %t88, 0 + store { ptr, i64, i64 } %t85, ptr %a90 + call void @finch_str_drop(ptr %a90) + br label %logic.rend1329 +logic.rend1329: + br label %logic.end1328 +logic.end1328: + %t91 = phi i1 [ false, %logic.from1326 ], [ %t89, %logic.rend1329 ] + br label %logic.from1330 +logic.from1330: + br i1 %t91, label %logic.rhs1331, label %logic.end1332 +logic.rhs1331: + %t92 = load ptr, ptr %a1 + %t93 = icmp eq ptr %t92, null + br i1 %t93, label %panic1333, label %ok1334 +panic1333: + call void @finch_panic(ptr @.str.722, i64 215, ptr @.str.723) unreachable -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 %panic1274, label %ok1275 -panic1274: - call void @finch_panic(ptr @.str.715, i64 215, ptr @.str.716) +ok1334: + %t94 = getelementptr inbounds %S.parser.Parser, ptr %t92, i32 0, i32 0 + %t95 = load ptr, ptr %a1 + %t96 = icmp eq ptr %t95, null + br i1 %t96, label %panic1335, label %ok1336 +panic1335: + call void @finch_panic(ptr @.str.724, i64 215, ptr @.str.725) unreachable -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 %range1276, label %inrange1277 -range1276: - call void @finch_panic_index(ptr @.str.717, i64 215, i64 %t92, i64 %t94) +ok1336: + %t97 = getelementptr inbounds %S.parser.Parser, ptr %t95, i32 0, i32 1 + %t98 = load i64, ptr %t97 + %t99 = add i64 %t98, 3 + %t100 = load { ptr, i64, i64 }, ptr %t94 + %t101 = extractvalue { ptr, i64, i64 } %t100, 1 + %t102 = icmp uge i64 %t99, %t101 + br i1 %t102, label %range1337, label %inrange1338 +range1337: + call void @finch_panic_index(ptr @.str.726, i64 215, i64 %t99, i64 %t101) unreachable -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.rend1278 -logic.rend1278: - br label %logic.end1271 -logic.end1271: - %t101 = phi i1 [ false, %logic.from1269 ], [ %t100, %logic.rend1278 ] - ret i1 %t101 +inrange1338: + %t103 = extractvalue { ptr, i64, i64 } %t100, 0 + %t104 = getelementptr inbounds %S.lexer.Token, ptr %t103, i64 %t99 + %t105 = getelementptr inbounds %S.lexer.Token, ptr %t104, i32 0, i32 4 + %t106 = load i1, ptr %t105 + %t107 = xor i1 %t106, true + br label %logic.rend1339 +logic.rend1339: + br label %logic.end1332 +logic.end1332: + %t108 = phi i1 [ false, %logic.from1330 ], [ %t107, %logic.rend1339 ] + call void @finch_str_drop(ptr %a18) + ret i1 %t108 } define internal void @finch.parser.endOfStatement(ptr %p0) { entry: %a1 = alloca ptr, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca %S.lexer.Token, align 16 + %a18 = alloca %S.lexer.Token, align 16 %a19 = 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 - %a23 = 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 + %a27 = alloca { ptr, i64, i64 }, align 16 + %a29 = alloca %S.lexer.Token, align 16 + %a30 = 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.718, i64 1, i64 0 }) - br label %logic.from1279 -logic.from1279: - br i1 %t3, label %logic.end1281, label %logic.rhs1280 -logic.rhs1280: + %t3 = call i1 @finch.parser.at(ptr %t2, { ptr, i64, i64 } { ptr @.str.727, i64 1, i64 0 }) + br label %logic.from1340 +logic.from1340: + br i1 %t3, label %logic.end1342, label %logic.rhs1341 +logic.rhs1341: %t4 = load ptr, ptr %a1 - %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: + %t5 = call i1 @finch.parser.at(ptr %t4, { ptr, i64, i64 } { ptr @.str.728, i64 3, i64 0 }) + br label %logic.rend1343 +logic.rend1343: + br label %logic.end1342 +logic.end1342: + %t6 = phi i1 [ true, %logic.from1340 ], [ %t5, %logic.rend1343 ] + br label %logic.from1344 +logic.from1344: + br i1 %t6, label %logic.end1346, label %logic.rhs1345 +logic.rhs1345: %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.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: + store %S.lexer.Token %t8, ptr %a10 + call void @finch.drop.S_lexer_Token(ptr %a10) + br label %logic.rend1347 +logic.rend1347: + br label %logic.end1346 +logic.end1346: + %t11 = phi i1 [ true, %logic.from1344 ], [ %t9, %logic.rend1347 ] + br i1 %t11, label %then1348, label %endif1350 +then1348: ret void -endif1289: - %t11 = load ptr, ptr %a1 +endif1350: %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.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.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) + %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 %S.lexer.Token %t16, ptr %a18 + call void @finch.drop.S_lexer_Token(ptr %a18) + store { ptr, i64, i64 } { ptr @.str.729, i64 11, i64 0 }, ptr %a20 + store { ptr, i64, i64 } %t17, ptr %a21 + call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) + store { ptr, i64, i64 } %t17, ptr %a22 + call void @finch_str_drop(ptr %a22) + %t23 = load { ptr, i64, i64 }, ptr %a19 + store { ptr, i64, i64 } %t23, ptr %a25 + store { ptr, i64, i64 } { ptr @.str.730, i64 37, i64 0 }, ptr %a26 + call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) + store { ptr, i64, i64 } %t23, ptr %a27 + call void @finch_str_drop(ptr %a27) + %t28 = load { ptr, i64, i64 }, ptr %a24 + call void @finch.parser.fail(ptr %t12, %S.lexer.Token %t14, { ptr, i64, i64 } %t28) + store %S.lexer.Token %t14, ptr %a29 + call void @finch.drop.S_lexer_Token(ptr %a29) + store { ptr, i64, i64 } %t28, ptr %a30 + call void @finch_str_drop(ptr %a30) ret void } @@ -15335,77 +17070,83 @@ entry: %a27 = 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 %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 %a33 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 + %a34 = alloca { ptr, i64, i64 }, align 16 + %a35 = alloca { ptr, i64, i64 }, align 16 + %a36 = alloca { ptr, i64, i64 }, align 16 %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca %S.lexer.Token, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 + %a42 = 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 + %a46 = alloca { ptr, i64, i64 }, align 16 + %a57 = alloca { ptr, i64, i64 }, align 16 + %a58 = alloca { ptr, i64, i64 }, align 16 + %a60 = alloca %S.lexer.Token, align 16 + %a75 = alloca { ptr, i64, i64 }, align 16 + %a76 = alloca { ptr, i64, i64 }, align 16 + %a78 = alloca %S.lexer.Token, align 16 + %a87 = alloca %S.lexer.Token, align 16 %a91 = alloca { ptr, i64, i64 }, align 16 + %a92 = alloca { ptr, i64, i64 }, align 16 + %a94 = alloca %S.lexer.Token, align 16 %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 %a97 = 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 - %a108 = alloca i1, align 16 + %a105 = 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 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 + %a116 = alloca i1, align 16 %a120 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 + %a121 = 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 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca %S.ast.Program, align 16 - %a174 = alloca %S.ast.Program, align 16 + %a128 = alloca { ptr, i64, i64 }, align 16 + %a133 = alloca { ptr, i64, i64 }, align 16 + %a134 = alloca { ptr, i64, i64 }, align 16 + %a135 = alloca { ptr, i64, i64 }, align 16 + %a145 = alloca { ptr, i64, i64 }, align 16 + %a146 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store %S.ast.Program zeroinitializer, ptr %a2 - br label %while.cond1290 -while.cond1290: + br label %while.cond1351 +while.cond1351: %t3 = load ptr, ptr %a1 - %t4 = call i1 @finch.parser.at(ptr %t3, { ptr, i64, i64 } { ptr @.str.722, i64 3, i64 0 }) + %t4 = call i1 @finch.parser.at(ptr %t3, { ptr, i64, i64 } { ptr @.str.731, i64 3, i64 0 }) %t5 = xor i1 %t4, true - br i1 %t5, label %while.body1291, label %while.end1292 -while.body1291: + br i1 %t5, label %while.body1352, label %while.end1353 +while.body1352: %t6 = load ptr, ptr %a1 - %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: + %t7 = call i1 @finch.parser.at(ptr %t6, { ptr, i64, i64 } { ptr @.str.732, i64 6, i64 0 }) + br i1 %t7, label %then1354, label %else1355 +then1354: %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.724, i64 6, i64 0 }) - br i1 %t12, label %then1296, label %else1297 -then1296: + %t12 = call i1 @finch.parser.at(ptr %t11, { ptr, i64, i64 } { ptr @.str.733, i64 6, i64 0 }) + br i1 %t12, label %then1357, label %else1358 +then1357: %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 %panic1299, label %ok1300 -panic1299: - call void @finch_panic(ptr @.str.725, i64 233, ptr @.str.726) + br i1 %t16, label %panic1360, label %ok1361 +panic1360: + call void @finch_panic(ptr @.str.734, i64 233, ptr @.str.735) unreachable -ok1300: +ok1361: %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.727, i64 1, i64 0 }, ptr %a21 + store { ptr, i64, i64 } { ptr @.str.736, 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 @@ -15415,224 +17156,230 @@ ok1300: store { ptr, i64, i64 } %t22, 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.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 - %t36 = load i64, ptr %t35 - call void @finch_str_from_int(ptr %a37, i64 %t36) - %t38 = load { ptr, i64, i64 }, ptr %a37 - store { ptr, i64, i64 } %t34, 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 - %t43 = load i64, ptr %t14 - %t44 = add i64 %t43, 1 - call void @finch_arr_reserve(ptr %t13, i64 %t44, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t45 = load ptr, ptr %t13 - %t46 = getelementptr inbounds { ptr, i64, i64 }, ptr %t45, i64 %t43 - store { ptr, i64, i64 } %t42, ptr %t46 - store i64 %t44, ptr %t14 - %t47 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 3 - %t48 = getelementptr inbounds { ptr, i64, i64 }, ptr %t47, i32 0, i32 1 - %t49 = load ptr, ptr %a1 - %t50 = call %S.lexer.Token @finch.parser.next(ptr %t49) - %t51 = extractvalue %S.lexer.Token %t50, 1 - store { ptr, i64, i64 } %t51, ptr %a52 - call void @finch_str_copy(ptr %a53, ptr %a52) - %t54 = load { ptr, i64, i64 }, ptr %a53 - %t55 = load i64, ptr %t48 - %t56 = add i64 %t55, 1 - call void @finch_arr_reserve(ptr %t47, i64 %t56, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t57 = load ptr, ptr %t47 - %t58 = getelementptr inbounds { ptr, i64, i64 }, ptr %t57, i64 %t55 - store { ptr, i64, i64 } %t54, ptr %t58 - store i64 %t56, ptr %t48 - br label %endif1298 -else1297: - %t59 = load ptr, ptr %a1 - %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 %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.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 - %t67 = call %S.lexer.Token @finch.parser.next(ptr %t66) - %t68 = extractvalue %S.lexer.Token %t67, 1 - store { ptr, i64, i64 } %t68, ptr %a69 - call void @finch_str_copy(ptr %a70, ptr %a69) - %t71 = load { ptr, i64, i64 }, ptr %a70 - %t72 = load i64, ptr %t65 - %t73 = add i64 %t72, 1 - call void @finch_arr_reserve(ptr %t64, i64 %t73, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t74 = load ptr, ptr %t64 - %t75 = getelementptr inbounds { ptr, i64, i64 }, ptr %t74, i64 %t72 - store { ptr, i64, i64 } %t71, ptr %t75 - store i64 %t73, ptr %t65 - 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.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.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) - %t86 = load { ptr, i64, i64 }, ptr %a85 - 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.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.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.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.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.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.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.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.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.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.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.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.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.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.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 - store { ptr, i64, i64 } %t136, ptr %a137 - call void @finch_str_copy(ptr %a138, ptr %a137) - %t139 = load { ptr, i64, i64 }, ptr %a138 - %t140 = load i64, ptr %t135 - %t141 = add i64 %t140, 1 - call void @finch_arr_reserve(ptr %t134, i64 %t141, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t142 = load ptr, ptr %t134 - %t143 = getelementptr inbounds { ptr, i64, i64 }, ptr %t142, i64 %t140 - store { ptr, i64, i64 } %t139, ptr %t143 - store i64 %t141, ptr %t135 - br label %endif1306 -else1305: - %t144 = load ptr, ptr %a1 - %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 - %t149 = call %S.ast.Node @finch.parser.parseStruct(ptr %t148) - %t150 = load i64, ptr %t147 - %t151 = add i64 %t150, 1 - call void @finch_arr_reserve(ptr %t146, i64 %t151, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t152 = load ptr, ptr %t146 - %t153 = getelementptr inbounds %S.ast.Node, ptr %t152, i64 %t150 - store %S.ast.Node %t149, ptr %t153 - store i64 %t151, ptr %t147 - br label %endif1332 -else1331: - %t154 = load ptr, ptr %a1 - %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 - %t159 = call %S.ast.Node @finch.parser.parseEnum(ptr %t158) - %t160 = load i64, ptr %t157 - %t161 = add i64 %t160, 1 - call void @finch_arr_reserve(ptr %t156, i64 %t161, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t162 = load ptr, ptr %t156 - %t163 = getelementptr inbounds %S.ast.Node, ptr %t162, i64 %t160 - store %S.ast.Node %t159, ptr %t163 - store i64 %t161, ptr %t157 - br label %endif1335 -else1334: - %t164 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 8 + store { ptr, i64, i64 } %t22, ptr %a30 + call void @finch_str_drop(ptr %a30) + store { ptr, i64, i64 } %t26, ptr %a31 + call void @finch_str_drop(ptr %a31) + %t32 = load { ptr, i64, i64 }, ptr %a27 + store { ptr, i64, i64 } %t32, ptr %a34 + store { ptr, i64, i64 } { ptr @.str.737, i64 1, i64 0 }, ptr %a35 + call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) + store { ptr, i64, i64 } %t32, ptr %a36 + call void @finch_str_drop(ptr %a36) + %t37 = load { ptr, i64, i64 }, ptr %a33 + %t38 = getelementptr inbounds %S.lexer.Token, ptr %a10, i32 0, i32 3 + %t39 = load i64, ptr %t38 + call void @finch_str_from_int(ptr %a40, i64 %t39) + %t41 = load { ptr, i64, i64 }, ptr %a40 + store { ptr, i64, i64 } %t37, ptr %a43 + store { ptr, i64, i64 } %t41, ptr %a44 + call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) + store { ptr, i64, i64 } %t37, ptr %a45 + call void @finch_str_drop(ptr %a45) + store { ptr, i64, i64 } %t41, ptr %a46 + call void @finch_str_drop(ptr %a46) + %t47 = load { ptr, i64, i64 }, ptr %a42 + %t48 = load i64, ptr %t14 + %t49 = add i64 %t48, 1 + call void @finch_arr_reserve(ptr %t13, i64 %t49, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t50 = load ptr, ptr %t13 + %t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %t50, i64 %t48 + store { ptr, i64, i64 } %t47, ptr %t51 + store i64 %t49, ptr %t14 + %t52 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 3 + %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %t52, i32 0, i32 1 + %t54 = load ptr, ptr %a1 + %t55 = call %S.lexer.Token @finch.parser.next(ptr %t54) + %t56 = extractvalue %S.lexer.Token %t55, 1 + store { ptr, i64, i64 } %t56, ptr %a57 + call void @finch_str_copy(ptr %a58, ptr %a57) + %t59 = load { ptr, i64, i64 }, ptr %a58 + store %S.lexer.Token %t55, ptr %a60 + call void @finch.drop.S_lexer_Token(ptr %a60) + %t61 = load i64, ptr %t53 + %t62 = add i64 %t61, 1 + call void @finch_arr_reserve(ptr %t52, i64 %t62, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t63 = load ptr, ptr %t52 + %t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %t63, i64 %t61 + store { ptr, i64, i64 } %t59, ptr %t64 + store i64 %t62, ptr %t53 + br label %endif1359 +else1358: + %t65 = load ptr, ptr %a1 + %t66 = call i1 @finch.parser.at(ptr %t65, { ptr, i64, i64 } { ptr @.str.738, i64 5, i64 0 }) + %t67 = xor i1 %t66, true + br i1 %t67, label %then1362, label %endif1364 +then1362: + %t68 = load ptr, ptr %a1 + %t69 = load %S.lexer.Token, ptr %a10 + call void @finch.parser.fail(ptr %t68, %S.lexer.Token %t69, { ptr, i64, i64 } { ptr @.str.739, i64 51, i64 0 }) + br label %endif1364 +endif1364: + %t70 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 2 + %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %t70, i32 0, i32 1 + %t72 = load ptr, ptr %a1 + %t73 = call %S.lexer.Token @finch.parser.next(ptr %t72) + %t74 = extractvalue %S.lexer.Token %t73, 1 + store { ptr, i64, i64 } %t74, ptr %a75 + call void @finch_str_copy(ptr %a76, ptr %a75) + %t77 = load { ptr, i64, i64 }, ptr %a76 + store %S.lexer.Token %t73, ptr %a78 + call void @finch.drop.S_lexer_Token(ptr %a78) + %t79 = load i64, ptr %t71 + %t80 = add i64 %t79, 1 + call void @finch_arr_reserve(ptr %t70, i64 %t80, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t81 = load ptr, ptr %t70 + %t82 = getelementptr inbounds { ptr, i64, i64 }, ptr %t81, i64 %t79 + store { ptr, i64, i64 } %t77, ptr %t82 + store i64 %t80, ptr %t71 + br label %endif1359 +endif1359: + call void @finch.drop.S_lexer_Token(ptr %a10) + br label %endif1356 +else1355: + %t83 = load ptr, ptr %a1 + %t84 = call i1 @finch.parser.at(ptr %t83, { ptr, i64, i64 } { ptr @.str.740, i64 4, i64 0 }) + br i1 %t84, label %then1365, label %else1366 +then1365: + %t85 = load ptr, ptr %a1 + %t86 = call %S.lexer.Token @finch.parser.next(ptr %t85) + store %S.lexer.Token %t86, ptr %a87 + %t88 = load ptr, ptr %a1 + %t89 = call %S.lexer.Token @finch.parser.expect(ptr %t88, { ptr, i64, i64 } { ptr @.str.741, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.742, i64 42, i64 0 }) + %t90 = extractvalue %S.lexer.Token %t89, 1 + store { ptr, i64, i64 } %t90, ptr %a91 + call void @finch_str_copy(ptr %a92, ptr %a91) + %t93 = load { ptr, i64, i64 }, ptr %a92 + store %S.lexer.Token %t89, ptr %a94 + call void @finch.drop.S_lexer_Token(ptr %a94) + store { ptr, i64, i64 } %t93, ptr %a95 + %t96 = load { ptr, i64, i64 }, ptr %a95 + store { ptr, i64, i64 } %t96, ptr %a97 + store { ptr, i64, i64 } { ptr @.str.744, i64 2, i64 0 }, ptr %a99 + %t100 = call i32 @finch_str_ends(ptr %a97, ptr %a99) + %t101 = icmp ne i32 %t100, 0 + br label %logic.from1368 +logic.from1368: + br i1 %t101, label %logic.end1370, label %logic.rhs1369 +logic.rhs1369: + %t102 = load { ptr, i64, i64 }, ptr %a95 + store { ptr, i64, i64 } %t102, ptr %a103 + store { ptr, i64, i64 } { ptr @.str.746, i64 2, i64 0 }, ptr %a105 + %t106 = call i32 @finch_str_ends(ptr %a103, ptr %a105) + %t107 = icmp ne i32 %t106, 0 + br label %logic.rend1371 +logic.rend1371: + br label %logic.end1370 +logic.end1370: + %t108 = phi i1 [ true, %logic.from1368 ], [ %t107, %logic.rend1371 ] + br label %logic.from1372 +logic.from1372: + br i1 %t108, label %logic.end1374, label %logic.rhs1373 +logic.rhs1373: + %t109 = load { ptr, i64, i64 }, ptr %a95 + store { ptr, i64, i64 } %t109, ptr %a110 + store { ptr, i64, i64 } { ptr @.str.748, i64 2, i64 0 }, ptr %a112 + %t113 = call i32 @finch_str_ends(ptr %a110, ptr %a112) + %t114 = icmp ne i32 %t113, 0 + br label %logic.rend1375 +logic.rend1375: + br label %logic.end1374 +logic.end1374: + %t115 = phi i1 [ true, %logic.from1372 ], [ %t114, %logic.rend1375 ] + store i1 %t115, ptr %a116 + %t117 = load i1, ptr %a116 + %t118 = xor i1 %t117, true + br label %logic.from1376 +logic.from1376: + br i1 %t118, label %logic.rhs1377, label %logic.end1378 +logic.rhs1377: + %t119 = load { ptr, i64, i64 }, ptr %a95 + store { ptr, i64, i64 } %t119, ptr %a120 + store { ptr, i64, i64 } { ptr @.str.750, i64 3, i64 0 }, ptr %a122 + %t123 = call i32 @finch_str_starts(ptr %a120, ptr %a122) + %t124 = icmp ne i32 %t123, 0 + br label %logic.from1379 +logic.from1379: + br i1 %t124, label %logic.end1381, label %logic.rhs1380 +logic.rhs1380: + %t125 = load { ptr, i64, i64 }, ptr %a95 + store { ptr, i64, i64 } %t125, ptr %a126 + store { ptr, i64, i64 } { ptr @.str.752, i64 3, i64 0 }, ptr %a128 + %t129 = call i64 @finch_str_find(ptr %a126, ptr %a128) + %t130 = icmp sge i64 %t129, 0 + br label %logic.rend1382 +logic.rend1382: + br label %logic.end1381 +logic.end1381: + %t131 = phi i1 [ true, %logic.from1379 ], [ %t130, %logic.rend1382 ] + br label %logic.from1383 +logic.from1383: + br i1 %t131, label %logic.end1385, label %logic.rhs1384 +logic.rhs1384: + %t132 = load { ptr, i64, i64 }, ptr %a95 + store { ptr, i64, i64 } %t132, ptr %a133 + store { ptr, i64, i64 } { ptr @.str.754, i64 1, i64 0 }, ptr %a135 + %t136 = call i64 @finch_str_find(ptr %a133, ptr %a135) + %t137 = icmp sge i64 %t136, 0 + br label %logic.rend1386 +logic.rend1386: + br label %logic.end1385 +logic.end1385: + %t138 = phi i1 [ true, %logic.from1383 ], [ %t137, %logic.rend1386 ] + br label %logic.rend1387 +logic.rend1387: + br label %logic.end1378 +logic.end1378: + %t139 = phi i1 [ false, %logic.from1376 ], [ %t138, %logic.rend1387 ] + br i1 %t139, label %then1388, label %endif1390 +then1388: + %t140 = load ptr, ptr %a1 + %t141 = load %S.lexer.Token, ptr %a87 + call void @finch.parser.fail(ptr %t140, %S.lexer.Token %t141, { ptr, i64, i64 } { ptr @.str.755, i64 65, i64 0 }) + br label %endif1390 +endif1390: + %t142 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 5 + %t143 = getelementptr inbounds { ptr, i64, i64 }, ptr %t142, i32 0, i32 1 + %t144 = load { ptr, i64, i64 }, ptr %a95 + store { ptr, i64, i64 } %t144, ptr %a145 + call void @finch_str_copy(ptr %a146, ptr %a145) + %t147 = load { ptr, i64, i64 }, ptr %a146 + %t148 = load i64, ptr %t143 + %t149 = add i64 %t148, 1 + call void @finch_arr_reserve(ptr %t142, i64 %t149, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t150 = load ptr, ptr %t142 + %t151 = getelementptr inbounds { ptr, i64, i64 }, ptr %t150, i64 %t148 + store { ptr, i64, i64 } %t147, ptr %t151 + store i64 %t149, ptr %t143 + call void @finch_str_drop(ptr %a95) + call void @finch.drop.S_lexer_Token(ptr %a87) + br label %endif1367 +else1366: + %t152 = load ptr, ptr %a1 + %t153 = call i1 @finch.parser.at(ptr %t152, { ptr, i64, i64 } { ptr @.str.756, i64 6, i64 0 }) + br i1 %t153, label %then1391, label %else1392 +then1391: + %t154 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 6 + %t155 = getelementptr inbounds { ptr, i64, i64 }, ptr %t154, i32 0, i32 1 + %t156 = load ptr, ptr %a1 + %t157 = call %S.ast.Node @finch.parser.parseStruct(ptr %t156) + %t158 = load i64, ptr %t155 + %t159 = add i64 %t158, 1 + call void @finch_arr_reserve(ptr %t154, i64 %t159, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t160 = load ptr, ptr %t154 + %t161 = getelementptr inbounds %S.ast.Node, ptr %t160, i64 %t158 + store %S.ast.Node %t157, ptr %t161 + store i64 %t159, ptr %t155 + br label %endif1393 +else1392: + %t162 = load ptr, ptr %a1 + %t163 = call i1 @finch.parser.at(ptr %t162, { ptr, i64, i64 } { ptr @.str.757, i64 4, i64 0 }) + br i1 %t163, label %then1394, label %else1395 +then1394: + %t164 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 7 %t165 = getelementptr inbounds { ptr, i64, i64 }, ptr %t164, i32 0, i32 1 %t166 = load ptr, ptr %a1 - %t167 = call %S.ast.Node @finch.parser.parseFn(ptr %t166) + %t167 = call %S.ast.Node @finch.parser.parseEnum(ptr %t166) %t168 = load i64, ptr %t165 %t169 = add i64 %t168, 1 call void @finch_arr_reserve(ptr %t164, i64 %t169, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) @@ -15640,172 +17387,228 @@ else1334: %t171 = getelementptr inbounds %S.ast.Node, ptr %t170, i64 %t168 store %S.ast.Node %t167, ptr %t171 store i64 %t169, ptr %t165 - 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) - %t175 = load %S.ast.Program, ptr %a174 - ret %S.ast.Program %t175 + br label %endif1396 +else1395: + %t172 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 8 + %t173 = getelementptr inbounds { ptr, i64, i64 }, ptr %t172, i32 0, i32 1 + %t174 = load ptr, ptr %a1 + %t175 = call %S.ast.Node @finch.parser.parseFn(ptr %t174) + %t176 = load i64, ptr %t173 + %t177 = add i64 %t176, 1 + call void @finch_arr_reserve(ptr %t172, i64 %t177, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t178 = load ptr, ptr %t172 + %t179 = getelementptr inbounds %S.ast.Node, ptr %t178, i64 %t176 + store %S.ast.Node %t175, ptr %t179 + store i64 %t177, ptr %t173 + br label %endif1396 +endif1396: + br label %endif1393 +endif1393: + br label %endif1367 +endif1367: + br label %endif1356 +endif1356: + br label %while.cond1351 +while.end1353: + %t180 = load %S.ast.Program, ptr %a2 + ret %S.ast.Program %t180 } define internal %S.ast.Node @finch.parser.parseEnum(ptr %p0) { entry: %a1 = alloca ptr, align 16 %a4 = alloca %S.ast.Node, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 + %a7 = alloca %S.lexer.Token, align 16 %a11 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca %S.ast.Node, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 + %a12 = alloca { ptr, i64, i64 }, align 16 + %a14 = alloca %S.lexer.Token, align 16 + %a17 = alloca { ptr, i64, i64 }, align 16 + %a20 = alloca %S.lexer.Token, align 16 + %a29 = alloca %S.lexer.Token, align 16 + %a32 = alloca %S.ast.Node, align 16 %a36 = 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 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca %S.ast.Node, align 16 - %a55 = alloca %S.ast.Node, 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 - %a85 = alloca %S.ast.Node, align 16 - %a86 = alloca %S.ast.Node, align 16 + %a37 = alloca { ptr, i64, i64 }, align 16 + %a39 = alloca %S.lexer.Token, align 16 + %a42 = alloca { ptr, i64, i64 }, align 16 + %a45 = alloca { ptr, i64, i64 }, align 16 + %a49 = alloca { ptr, i64, i64 }, align 16 + %a54 = alloca { ptr, i64, i64 }, align 16 + %a55 = alloca { ptr, i64, i64 }, align 16 + %a57 = alloca %S.lexer.Token, align 16 + %a58 = 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 + %a65 = alloca { ptr, i64, i64 }, align 16 + %a69 = alloca %S.ast.Node, align 16 + %a70 = alloca %S.ast.Node, align 16 + %a82 = alloca %S.lexer.Token, 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 + %a99 = alloca { ptr, i64, i64 }, align 16 + %a101 = alloca %S.lexer.Token, align 16 + %a102 = alloca { ptr, i64, i64 }, 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.749, i64 4, i64 0 }) + %t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.758, 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.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.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) - %t12 = load { ptr, i64, i64 }, ptr %a11 - %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.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.756, i64 1, i64 0 }) - %t18 = xor i1 %t17, true - 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.757, i64 3, i64 0 }) - br i1 %t20, label %then1339, label %endif1341 -then1339: + %t6 = call %S.lexer.Token @finch.parser.expect(ptr %t5, { ptr, i64, i64 } { ptr @.str.759, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.760, i64 6, i64 0 }) + store %S.lexer.Token %t6, ptr %a7 + call void @finch.drop.S_lexer_Token(ptr %a7) + %t8 = load ptr, ptr %a1 + %t9 = call %S.lexer.Token @finch.parser.expect(ptr %t8, { ptr, i64, i64 } { ptr @.str.761, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.762, i64 12, i64 0 }) + %t10 = extractvalue %S.lexer.Token %t9, 1 + store { ptr, i64, i64 } %t10, ptr %a11 + call void @finch_str_copy(ptr %a12, ptr %a11) + %t13 = load { ptr, i64, i64 }, ptr %a12 + store %S.lexer.Token %t9, ptr %a14 + call void @finch.drop.S_lexer_Token(ptr %a14) + %t15 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 1 + %t16 = load { ptr, i64, i64 }, ptr %t15 + store { ptr, i64, i64 } %t13, ptr %t15 + store { ptr, i64, i64 } %t16, ptr %a17 + call void @finch_str_drop(ptr %a17) + %t18 = load ptr, ptr %a1 + %t19 = call %S.lexer.Token @finch.parser.expect(ptr %t18, { ptr, i64, i64 } { ptr @.str.763, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.764, i64 3, i64 0 }) + store %S.lexer.Token %t19, ptr %a20 + call void @finch.drop.S_lexer_Token(ptr %a20) + br label %while.cond1397 +while.cond1397: %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.758, i64 37, i64 0 }) - br label %endif1341 -endif1341: + %t22 = call i1 @finch.parser.at(ptr %t21, { ptr, i64, i64 } { ptr @.str.765, i64 1, i64 0 }) + %t23 = xor i1 %t22, true + br i1 %t23, label %while.body1398, label %while.end1399 +while.body1398: %t24 = load ptr, ptr %a1 - %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 + %t25 = call i1 @finch.parser.at(ptr %t24, { ptr, i64, i64 } { ptr @.str.766, i64 3, i64 0 }) + br i1 %t25, label %then1400, label %endif1402 +then1400: + %t26 = load ptr, ptr %a1 %t27 = load ptr, ptr %a1 - %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) - %t32 = load { ptr, i64, i64 }, ptr %a31 - %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.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.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.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) - %t45 = load { ptr, i64, i64 }, ptr %a44 - store { ptr, i64, i64 } %t39, ptr %a47 - store { ptr, i64, i64 } %t45, ptr %a48 - call void @finch_str_concat(ptr %a46, ptr %a47, ptr %a48) - %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 %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 - store %S.ast.Node %t53, ptr %a54 - call void @finch.copy.S_ast_Node(ptr %a55, ptr %a54) - %t56 = load %S.ast.Node, ptr %a55 - %t57 = load i64, ptr %t52 - %t58 = add i64 %t57, 1 - call void @finch_arr_reserve(ptr %t51, i64 %t58, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t59 = load ptr, ptr %t51 - %t60 = getelementptr inbounds %S.ast.Node, ptr %t59, i64 %t57 - 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.768, i64 1, i64 0 }) - %t63 = xor i1 %t62, true - br i1 %t63, label %then1348, label %endif1350 -then1348: - %t64 = load ptr, ptr %a1 - call void @finch.parser.endOfStatement(ptr %t64) - 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 %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.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.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 %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) - %t87 = load %S.ast.Node, ptr %a86 - ret %S.ast.Node %t87 + %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.767, i64 37, i64 0 }) + store %S.lexer.Token %t28, ptr %a29 + call void @finch.drop.S_lexer_Token(ptr %a29) + br label %endif1402 +endif1402: + %t30 = load ptr, ptr %a1 + %t31 = call %S.ast.Node @finch.parser.node(ptr %t30, { ptr, i64, i64 } { ptr @.str.768, i64 7, i64 0 }) + store %S.ast.Node %t31, ptr %a32 + %t33 = load ptr, ptr %a1 + %t34 = call %S.lexer.Token @finch.parser.expect(ptr %t33, { ptr, i64, i64 } { ptr @.str.769, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.770, i64 24, i64 0 }) + %t35 = extractvalue %S.lexer.Token %t34, 1 + store { ptr, i64, i64 } %t35, ptr %a36 + call void @finch_str_copy(ptr %a37, ptr %a36) + %t38 = load { ptr, i64, i64 }, ptr %a37 + store %S.lexer.Token %t34, ptr %a39 + call void @finch.drop.S_lexer_Token(ptr %a39) + %t40 = getelementptr inbounds %S.ast.Node, ptr %a32, i32 0, i32 1 + %t41 = load { ptr, i64, i64 }, ptr %t40 + store { ptr, i64, i64 } %t38, ptr %t40 + store { ptr, i64, i64 } %t41, ptr %a42 + call void @finch_str_drop(ptr %a42) + %t43 = load ptr, ptr %a1 + %t44 = call i1 @finch.parser.accept(ptr %t43, { ptr, i64, i64 } { ptr @.str.771, i64 1, i64 0 }) + br i1 %t44, label %then1403, label %endif1405 +then1403: + store { ptr, i64, i64 } { ptr @.str.772, i64 0, i64 0 }, ptr %a45 + %t46 = load ptr, ptr %a1 + %t47 = call i1 @finch.parser.accept(ptr %t46, { ptr, i64, i64 } { ptr @.str.773, i64 1, i64 0 }) + br i1 %t47, label %then1406, label %endif1408 +then1406: + %t48 = load { ptr, i64, i64 }, ptr %a45 + store { ptr, i64, i64 } { ptr @.str.774, i64 1, i64 0 }, ptr %a45 + store { ptr, i64, i64 } %t48, ptr %a49 + call void @finch_str_drop(ptr %a49) + br label %endif1408 +endif1408: + %t50 = load { ptr, i64, i64 }, ptr %a45 + %t51 = load ptr, ptr %a1 + %t52 = call %S.lexer.Token @finch.parser.expect(ptr %t51, { ptr, i64, i64 } { ptr @.str.775, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.776, i64 30, i64 0 }) + %t53 = extractvalue %S.lexer.Token %t52, 1 + store { ptr, i64, i64 } %t53, ptr %a54 + call void @finch_str_copy(ptr %a55, ptr %a54) + %t56 = load { ptr, i64, i64 }, ptr %a55 + store %S.lexer.Token %t52, ptr %a57 + call void @finch.drop.S_lexer_Token(ptr %a57) + store { ptr, i64, i64 } %t50, ptr %a59 + store { ptr, i64, i64 } %t56, ptr %a60 + call void @finch_str_concat(ptr %a58, ptr %a59, ptr %a60) + store { ptr, i64, i64 } %t56, ptr %a61 + call void @finch_str_drop(ptr %a61) + %t62 = load { ptr, i64, i64 }, ptr %a58 + %t63 = getelementptr inbounds %S.ast.Node, ptr %a32, i32 0, i32 4 + %t64 = load { ptr, i64, i64 }, ptr %t63 + store { ptr, i64, i64 } %t62, ptr %t63 + store { ptr, i64, i64 } %t64, ptr %a65 + call void @finch_str_drop(ptr %a65) + call void @finch_str_drop(ptr %a45) + br label %endif1405 +endif1405: + %t66 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 + %t67 = getelementptr inbounds { ptr, i64, i64 }, ptr %t66, i32 0, i32 1 + %t68 = load %S.ast.Node, ptr %a32 + store %S.ast.Node %t68, ptr %a69 + call void @finch.copy.S_ast_Node(ptr %a70, ptr %a69) + %t71 = load %S.ast.Node, ptr %a70 + %t72 = load i64, ptr %t67 + %t73 = add i64 %t72, 1 + call void @finch_arr_reserve(ptr %t66, i64 %t73, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t74 = load ptr, ptr %t66 + %t75 = getelementptr inbounds %S.ast.Node, ptr %t74, i64 %t72 + store %S.ast.Node %t71, ptr %t75 + store i64 %t73, ptr %t67 + %t76 = load ptr, ptr %a1 + %t77 = call i1 @finch.parser.accept(ptr %t76, { ptr, i64, i64 } { ptr @.str.777, i64 1, i64 0 }) + %t78 = xor i1 %t77, true + br i1 %t78, label %then1409, label %endif1411 +then1409: + %t79 = load ptr, ptr %a1 + call void @finch.parser.endOfStatement(ptr %t79) + br label %endif1411 +endif1411: + call void @finch.drop.S_ast_Node(ptr %a32) + br label %while.cond1397 +while.end1399: + %t80 = load ptr, ptr %a1 + %t81 = call %S.lexer.Token @finch.parser.next(ptr %t80) + store %S.lexer.Token %t81, ptr %a82 + call void @finch.drop.S_lexer_Token(ptr %a82) + %t83 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 + %t84 = getelementptr inbounds { ptr, i64, i64 }, ptr %t83, i32 0, i32 1 + %t85 = load i64, ptr %t84 + %t86 = icmp eq i64 %t85, 0 + br i1 %t86, label %then1412, label %endif1414 +then1412: + %t87 = load ptr, ptr %a1 + %t88 = load ptr, ptr %a1 + %t89 = call %S.lexer.Token @finch.parser.cur(ptr %t88) + %t90 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 1 + %t91 = load { ptr, i64, i64 }, ptr %t90 + store { ptr, i64, i64 } { ptr @.str.778, i64 9, 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.779, i64 16, i64 0 }, ptr %a98 + call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) + store { ptr, i64, i64 } %t95, ptr %a99 + call void @finch_str_drop(ptr %a99) + %t100 = load { ptr, i64, i64 }, ptr %a96 + call void @finch.parser.fail(ptr %t87, %S.lexer.Token %t89, { ptr, i64, i64 } %t100) + store %S.lexer.Token %t89, ptr %a101 + call void @finch.drop.S_lexer_Token(ptr %a101) + store { ptr, i64, i64 } %t100, ptr %a102 + call void @finch_str_drop(ptr %a102) + br label %endif1414 +endif1414: + %t103 = load %S.ast.Node, ptr %a4 + ret %S.ast.Node %t103 } define internal %S.ast.Node @finch.parser.parseMatch(ptr %p0, i1 %p1) { @@ -15813,288 +17616,307 @@ entry: %a1 = alloca ptr, align 16 %a2 = alloca i1, align 16 %a5 = alloca %S.ast.Node, align 16 - %a24 = alloca i64, align 16 - %a38 = alloca %S.ast.Node, align 16 + %a10 = alloca %S.lexer.Token, align 16 + %a21 = alloca %S.lexer.Token, align 16 + %a26 = alloca i64, align 16 + %a38 = alloca %S.lexer.Token, align 16 %a41 = alloca %S.ast.Node, align 16 - %a59 = alloca %S.ast.Node, align 16 - %a60 = alloca %S.ast.Node, align 16 - %a101 = alloca %S.ast.Node, align 16 - %a102 = alloca %S.ast.Node, align 16 - %a126 = alloca %S.ast.Node, align 16 - %a127 = alloca %S.ast.Node, align 16 + %a44 = alloca %S.ast.Node, align 16 + %a62 = alloca %S.ast.Node, align 16 + %a63 = alloca %S.ast.Node, align 16 + %a71 = alloca %S.lexer.Token, align 16 + %a105 = alloca %S.ast.Node, align 16 + %a106 = alloca %S.ast.Node, align 16 + %a122 = alloca %S.lexer.Token, align 16 + %a130 = alloca %S.lexer.Token, align 16 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.771, i64 5, i64 0 }) + %t4 = call %S.ast.Node @finch.parser.node(ptr %t3, { ptr, i64, i64 } { ptr @.str.780, 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.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 - %t13 = call %S.ast.Node @finch.parser.parseExpr(ptr %t12) - %t14 = load i64, ptr %t11 - %t15 = add i64 %t14, 1 - call void @finch_arr_reserve(ptr %t10, i64 %t15, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t16 = load ptr, ptr %t10 - %t17 = getelementptr inbounds %S.ast.Node, ptr %t16, i64 %t14 - 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.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 %panic1354, label %ok1355 -panic1354: - call void @finch_panic(ptr @.str.776, i64 300, ptr @.str.777) + %t9 = call %S.lexer.Token @finch.parser.expect(ptr %t8, { ptr, i64, i64 } { ptr @.str.781, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.782, i64 7, i64 0 }) + store %S.lexer.Token %t9, ptr %a10 + call void @finch.drop.S_lexer_Token(ptr %a10) + %t11 = getelementptr inbounds %S.ast.Node, ptr %a5, i32 0, i32 9 + %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t11, i32 0, i32 1 + %t13 = load ptr, ptr %a1 + %t14 = call %S.ast.Node @finch.parser.parseExpr(ptr %t13) + %t15 = load i64, ptr %t12 + %t16 = add i64 %t15, 1 + call void @finch_arr_reserve(ptr %t11, i64 %t16, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t17 = load ptr, ptr %t11 + %t18 = getelementptr inbounds %S.ast.Node, ptr %t17, i64 %t15 + store %S.ast.Node %t14, ptr %t18 + store i64 %t16, ptr %t12 + %t19 = load ptr, ptr %a1 + %t20 = call %S.lexer.Token @finch.parser.expect(ptr %t19, { ptr, i64, i64 } { ptr @.str.783, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.784, i64 3, i64 0 }) + store %S.lexer.Token %t20, ptr %a21 + call void @finch.drop.S_lexer_Token(ptr %a21) + %t22 = load ptr, ptr %a1 + %t23 = icmp eq ptr %t22, null + br i1 %t23, label %panic1415, label %ok1416 +panic1415: + call void @finch_panic(ptr @.str.785, i64 300, ptr @.str.786) unreachable -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 %panic1356, label %ok1357 -panic1356: - call void @finch_panic(ptr @.str.778, i64 301, ptr @.str.779) +ok1416: + %t24 = getelementptr inbounds %S.parser.Parser, ptr %t22, i32 0, i32 2 + %t25 = load i64, ptr %t24 + store i64 %t25, ptr %a26 + %t27 = load ptr, ptr %a1 + %t28 = icmp eq ptr %t27, null + br i1 %t28, label %panic1417, label %ok1418 +panic1417: + call void @finch_panic(ptr @.str.787, i64 301, ptr @.str.788) unreachable -ok1357: - %t27 = getelementptr inbounds %S.parser.Parser, ptr %t25, i32 0, i32 2 - store i64 0, ptr %t27 - br label %while.cond1358 -while.cond1358: - %t28 = load ptr, ptr %a1 - %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.body1359, label %while.end1360 -while.body1359: - %t31 = load ptr, ptr %a1 - %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: +ok1418: + %t29 = getelementptr inbounds %S.parser.Parser, ptr %t27, i32 0, i32 2 + store i64 0, ptr %t29 + br label %while.cond1419 +while.cond1419: + %t30 = load ptr, ptr %a1 + %t31 = call i1 @finch.parser.at(ptr %t30, { ptr, i64, i64 } { ptr @.str.789, i64 1, i64 0 }) + %t32 = xor i1 %t31, true + br i1 %t32, label %while.body1420, label %while.end1421 +while.body1420: %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.782, i64 37, i64 0 }) - br label %endif1363 -endif1363: + %t34 = call i1 @finch.parser.at(ptr %t33, { ptr, i64, i64 } { ptr @.str.790, i64 3, i64 0 }) + br i1 %t34, label %then1422, label %endif1424 +then1422: + %t35 = load ptr, ptr %a1 %t36 = load ptr, ptr %a1 - %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 + %t37 = call %S.lexer.Token @finch.parser.cur(ptr %t36) + call void @finch.parser.fail(ptr %t35, %S.lexer.Token %t37, { ptr, i64, i64 } { ptr @.str.791, i64 37, i64 0 }) + store %S.lexer.Token %t37, ptr %a38 + call void @finch.drop.S_lexer_Token(ptr %a38) + br label %endif1424 +endif1424: %t39 = load ptr, ptr %a1 - %t40 = call %S.ast.Node @finch.parser.node(ptr %t39, { ptr, i64, i64 } { ptr @.str.784, i64 8, i64 0 }) + %t40 = call %S.ast.Node @finch.parser.node(ptr %t39, { ptr, i64, i64 } { ptr @.str.792, i64 3, 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.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 %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 - %t48 = call %S.ast.Node @finch.parser.parseExpr(ptr %t47) - %t49 = load i64, ptr %t46 - %t50 = add i64 %t49, 1 - call void @finch_arr_reserve(ptr %t45, i64 %t50, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t51 = load ptr, ptr %t45 - %t52 = getelementptr inbounds %S.ast.Node, ptr %t51, i64 %t49 - 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.786, i64 1, i64 0 }) - %t55 = xor i1 %t54, true - 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 - store %S.ast.Node %t58, ptr %a59 - call void @finch.copy.S_ast_Node(ptr %a60, ptr %a59) - %t61 = load %S.ast.Node, ptr %a60 - %t62 = load i64, ptr %t57 - %t63 = add i64 %t62, 1 - call void @finch_arr_reserve(ptr %t56, i64 %t63, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t64 = load ptr, ptr %t56 - %t65 = getelementptr inbounds %S.ast.Node, ptr %t64, i64 %t62 - 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.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.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.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 - %t76 = call %S.ast.Node @finch.parser.parseBlock(ptr %t75) - %t77 = load i64, ptr %t74 - %t78 = add i64 %t77, 1 - call void @finch_arr_reserve(ptr %t73, i64 %t78, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t79 = load ptr, ptr %t73 - %t80 = getelementptr inbounds %S.ast.Node, ptr %t79, i64 %t77 - store %S.ast.Node %t76, ptr %t80 - store i64 %t78, ptr %t74 - br label %endif1379 -else1378: - %t81 = load i1, ptr %a2 - 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 - %t85 = call %S.ast.Node @finch.parser.parseExpr(ptr %t84) - %t86 = load i64, ptr %t83 - %t87 = add i64 %t86, 1 - call void @finch_arr_reserve(ptr %t82, i64 %t87, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t88 = load ptr, ptr %t82 - %t89 = getelementptr inbounds %S.ast.Node, ptr %t88, i64 %t86 - store %S.ast.Node %t85, ptr %t89 - store i64 %t87, ptr %t83 - 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 - %t93 = call %S.ast.Node @finch.parser.parseStatement(ptr %t92) - %t94 = load i64, ptr %t91 - %t95 = add i64 %t94, 1 - call void @finch_arr_reserve(ptr %t90, i64 %t95, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t96 = load ptr, ptr %t90 - %t97 = getelementptr inbounds %S.ast.Node, ptr %t96, i64 %t94 - store %S.ast.Node %t93, ptr %t97 - store i64 %t95, ptr %t91 - 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 - store %S.ast.Node %t100, ptr %a101 - call void @finch.copy.S_ast_Node(ptr %a102, ptr %a101) - %t103 = load %S.ast.Node, ptr %a102 - %t104 = load i64, ptr %t99 - %t105 = add i64 %t104, 1 - call void @finch_arr_reserve(ptr %t98, i64 %t105, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t106 = load ptr, ptr %t98 - %t107 = getelementptr inbounds %S.ast.Node, ptr %t106, i64 %t104 - 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.790, i64 1, i64 0 }) - %t110 = xor i1 %t109, true - br i1 %t110, label %then1383, label %endif1385 -then1383: - %t111 = load ptr, ptr %a1 - call void @finch.parser.endOfStatement(ptr %t111) - 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 %panic1386, label %ok1387 -panic1386: - call void @finch_panic(ptr @.str.791, i64 332, ptr @.str.792) + %t43 = call %S.ast.Node @finch.parser.node(ptr %t42, { ptr, i64, i64 } { ptr @.str.793, i64 8, i64 0 }) + store %S.ast.Node %t43, ptr %a44 + %t45 = load ptr, ptr %a1 + %t46 = call i1 @finch.parser.accept(ptr %t45, { ptr, i64, i64 } { ptr @.str.794, i64 4, i64 0 }) + br i1 %t46, label %then1425, label %else1426 +then1425: + %t47 = getelementptr inbounds %S.ast.Node, ptr %a41, i32 0, i32 6 + store i1 true, ptr %t47 + br label %endif1427 +else1426: + br label %while.cond1428 +while.cond1428: + br label %while.body1429 +while.body1429: + %t48 = getelementptr inbounds %S.ast.Node, ptr %a44, i32 0, i32 9 + %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %t48, i32 0, i32 1 + %t50 = load ptr, ptr %a1 + %t51 = call %S.ast.Node @finch.parser.parseExpr(ptr %t50) + %t52 = load i64, ptr %t49 + %t53 = add i64 %t52, 1 + call void @finch_arr_reserve(ptr %t48, i64 %t53, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t54 = load ptr, ptr %t48 + %t55 = getelementptr inbounds %S.ast.Node, ptr %t54, i64 %t52 + 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.795, i64 1, i64 0 }) + %t58 = xor i1 %t57, true + br i1 %t58, label %then1431, label %endif1433 +then1431: + br label %while.end1430 +endif1433: + br label %while.cond1428 +while.end1430: + br label %endif1427 +endif1427: + %t59 = getelementptr inbounds %S.ast.Node, ptr %a41, i32 0, i32 9 + %t60 = getelementptr inbounds { ptr, i64, i64 }, ptr %t59, i32 0, i32 1 + %t61 = load %S.ast.Node, ptr %a44 + store %S.ast.Node %t61, ptr %a62 + call void @finch.copy.S_ast_Node(ptr %a63, ptr %a62) + %t64 = load %S.ast.Node, ptr %a63 + %t65 = load i64, ptr %t60 + %t66 = add i64 %t65, 1 + call void @finch_arr_reserve(ptr %t59, i64 %t66, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t67 = load ptr, ptr %t59 + %t68 = getelementptr inbounds %S.ast.Node, ptr %t67, i64 %t65 + store %S.ast.Node %t64, ptr %t68 + store i64 %t66, ptr %t60 + %t69 = load ptr, ptr %a1 + %t70 = call %S.lexer.Token @finch.parser.expect(ptr %t69, { ptr, i64, i64 } { ptr @.str.796, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.797, i64 57, i64 0 }) + store %S.lexer.Token %t70, ptr %a71 + call void @finch.drop.S_lexer_Token(ptr %a71) + %t72 = load ptr, ptr %a1 + %t73 = call i1 @finch.parser.at(ptr %t72, { ptr, i64, i64 } { ptr @.str.798, i64 1, i64 0 }) + br label %logic.from1434 +logic.from1434: + br i1 %t73, label %logic.rhs1435, label %logic.end1436 +logic.rhs1435: + %t74 = load i1, ptr %a2 + %t75 = xor i1 %t74, true + br label %logic.rend1437 +logic.rend1437: + br label %logic.end1436 +logic.end1436: + %t76 = phi i1 [ false, %logic.from1434 ], [ %t75, %logic.rend1437 ] + br i1 %t76, label %then1438, label %else1439 +then1438: + %t77 = getelementptr inbounds %S.ast.Node, ptr %a41, i32 0, i32 9 + %t78 = getelementptr inbounds { ptr, i64, i64 }, ptr %t77, i32 0, i32 1 + %t79 = load ptr, ptr %a1 + %t80 = call %S.ast.Node @finch.parser.parseBlock(ptr %t79) + %t81 = load i64, ptr %t78 + %t82 = add i64 %t81, 1 + call void @finch_arr_reserve(ptr %t77, i64 %t82, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t83 = load ptr, ptr %t77 + %t84 = getelementptr inbounds %S.ast.Node, ptr %t83, i64 %t81 + store %S.ast.Node %t80, ptr %t84 + store i64 %t82, ptr %t78 + br label %endif1440 +else1439: + %t85 = load i1, ptr %a2 + br i1 %t85, label %then1441, label %else1442 +then1441: + %t86 = getelementptr inbounds %S.ast.Node, ptr %a41, i32 0, i32 9 + %t87 = getelementptr inbounds { ptr, i64, i64 }, ptr %t86, i32 0, i32 1 + %t88 = load ptr, ptr %a1 + %t89 = call %S.ast.Node @finch.parser.parseExpr(ptr %t88) + %t90 = load i64, ptr %t87 + %t91 = add i64 %t90, 1 + call void @finch_arr_reserve(ptr %t86, i64 %t91, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t92 = load ptr, ptr %t86 + %t93 = getelementptr inbounds %S.ast.Node, ptr %t92, i64 %t90 + store %S.ast.Node %t89, ptr %t93 + store i64 %t91, ptr %t87 + br label %endif1443 +else1442: + %t94 = getelementptr inbounds %S.ast.Node, ptr %a41, i32 0, i32 9 + %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %t94, i32 0, i32 1 + %t96 = load ptr, ptr %a1 + %t97 = call %S.ast.Node @finch.parser.parseStatement(ptr %t96) + %t98 = load i64, ptr %t95 + %t99 = add i64 %t98, 1 + call void @finch_arr_reserve(ptr %t94, i64 %t99, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t100 = load ptr, ptr %t94 + %t101 = getelementptr inbounds %S.ast.Node, ptr %t100, i64 %t98 + store %S.ast.Node %t97, ptr %t101 + store i64 %t99, ptr %t95 + br label %endif1443 +endif1443: + br label %endif1440 +endif1440: + %t102 = getelementptr inbounds %S.ast.Node, ptr %a5, i32 0, i32 9 + %t103 = getelementptr inbounds { ptr, i64, i64 }, ptr %t102, i32 0, i32 1 + %t104 = load %S.ast.Node, ptr %a41 + 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 + %t108 = load i64, ptr %t103 + %t109 = add i64 %t108, 1 + call void @finch_arr_reserve(ptr %t102, i64 %t109, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t110 = load ptr, ptr %t102 + %t111 = getelementptr inbounds %S.ast.Node, ptr %t110, i64 %t108 + store %S.ast.Node %t107, ptr %t111 + store i64 %t109, ptr %t103 + %t112 = load ptr, ptr %a1 + %t113 = call i1 @finch.parser.accept(ptr %t112, { ptr, i64, i64 } { ptr @.str.799, i64 1, i64 0 }) + %t114 = xor i1 %t113, true + br i1 %t114, label %then1444, label %endif1446 +then1444: + %t115 = load ptr, ptr %a1 + call void @finch.parser.endOfStatement(ptr %t115) + br label %endif1446 +endif1446: + call void @finch.drop.S_ast_Node(ptr %a44) + call void @finch.drop.S_ast_Node(ptr %a41) + br label %while.cond1419 +while.end1421: + %t116 = load i64, ptr %a26 + %t117 = load ptr, ptr %a1 + %t118 = icmp eq ptr %t117, null + br i1 %t118, label %panic1447, label %ok1448 +panic1447: + call void @finch_panic(ptr @.str.800, i64 332, ptr @.str.801) unreachable -ok1387: - %t115 = getelementptr inbounds %S.parser.Parser, ptr %t113, i32 0, i32 2 - store i64 %t112, ptr %t115 - %t116 = load ptr, ptr %a1 - %t117 = call %S.lexer.Token @finch.parser.next(ptr %t116) - %t118 = getelementptr inbounds %S.ast.Node, ptr %a5, i32 0, i32 9 - %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 %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.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) - %t128 = load %S.ast.Node, ptr %a127 - ret %S.ast.Node %t128 +ok1448: + %t119 = getelementptr inbounds %S.parser.Parser, ptr %t117, i32 0, i32 2 + store i64 %t116, ptr %t119 + %t120 = load ptr, ptr %a1 + %t121 = call %S.lexer.Token @finch.parser.next(ptr %t120) + store %S.lexer.Token %t121, ptr %a122 + call void @finch.drop.S_lexer_Token(ptr %a122) + %t123 = getelementptr inbounds %S.ast.Node, ptr %a5, i32 0, i32 9 + %t124 = getelementptr inbounds { ptr, i64, i64 }, ptr %t123, i32 0, i32 1 + %t125 = load i64, ptr %t124 + %t126 = icmp eq i64 %t125, 1 + br i1 %t126, label %then1449, label %endif1451 +then1449: + %t127 = load ptr, ptr %a1 + %t128 = load ptr, ptr %a1 + %t129 = call %S.lexer.Token @finch.parser.cur(ptr %t128) + call void @finch.parser.fail(ptr %t127, %S.lexer.Token %t129, { ptr, i64, i64 } { ptr @.str.802, i64 30, i64 0 }) + store %S.lexer.Token %t129, ptr %a130 + call void @finch.drop.S_lexer_Token(ptr %a130) + br label %endif1451 +endif1451: + %t131 = load %S.ast.Node, ptr %a5 + ret %S.ast.Node %t131 } define internal { ptr, i64, i64 } @finch.parser.parseTParams(ptr %p0) { entry: %a1 = alloca ptr, align 16 %a2 = alloca { ptr, i64, i64 }, align 16 - %a9 = alloca { ptr, i64, i64 }, align 16 + %a5 = alloca %S.lexer.Token, align 16 %a10 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 + %a11 = alloca { ptr, i64, i64 }, align 16 + %a13 = alloca %S.lexer.Token, align 16 + %a23 = alloca %S.lexer.Token, align 16 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.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.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) - %t11 = load { ptr, i64, i64 }, ptr %a10 - %t12 = load i64, ptr %t5 - %t13 = add i64 %t12, 1 - call void @finch_arr_reserve(ptr %a2, i64 %t13, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t14 = load ptr, ptr %a2 - %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t14, i64 %t12 - 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.798, i64 1, i64 0 }) - %t18 = xor i1 %t17, true - 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.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) - %t24 = load { ptr, i64, i64 }, ptr %a23 + %t4 = call %S.lexer.Token @finch.parser.expect(ptr %t3, { ptr, i64, i64 } { ptr @.str.803, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.804, i64 3, i64 0 }) + store %S.lexer.Token %t4, ptr %a5 + call void @finch.drop.S_lexer_Token(ptr %a5) + br label %while.cond1452 +while.cond1452: + br label %while.body1453 +while.body1453: + %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t7 = load ptr, ptr %a1 + %t8 = call %S.lexer.Token @finch.parser.expect(ptr %t7, { ptr, i64, i64 } { ptr @.str.805, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.806, i64 29, 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) + %t12 = load { ptr, i64, i64 }, ptr %a11 + store %S.lexer.Token %t8, ptr %a13 + call void @finch.drop.S_lexer_Token(ptr %a13) + %t14 = load i64, ptr %t6 + %t15 = add i64 %t14, 1 + call void @finch_arr_reserve(ptr %a2, i64 %t15, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t16 = load ptr, ptr %a2 + %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 %t14 + store { ptr, i64, i64 } %t12, ptr %t17 + store i64 %t15, ptr %t6 + %t18 = load ptr, ptr %a1 + %t19 = call i1 @finch.parser.accept(ptr %t18, { ptr, i64, i64 } { ptr @.str.807, i64 1, i64 0 }) + %t20 = xor i1 %t19, true + br i1 %t20, label %then1455, label %endif1457 +then1455: + br label %while.end1454 +endif1457: + br label %while.cond1452 +while.end1454: + %t21 = load ptr, ptr %a1 + %t22 = call %S.lexer.Token @finch.parser.expect(ptr %t21, { ptr, i64, i64 } { ptr @.str.808, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.809, i64 29, i64 0 }) + store %S.lexer.Token %t22, ptr %a23 + call void @finch.drop.S_lexer_Token(ptr %a23) + %t24 = load { ptr, i64, i64 }, ptr %a2 ret { ptr, i64, i64 } %t24 } @@ -16102,142 +17924,187 @@ define internal %S.ast.Node @finch.parser.parseStruct(ptr %p0) { entry: %a1 = alloca ptr, align 16 %a4 = alloca %S.ast.Node, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 + %a7 = alloca %S.lexer.Token, align 16 %a11 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca %S.ast.Node, 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 + %a12 = alloca { ptr, i64, i64 }, align 16 + %a14 = alloca %S.lexer.Token, align 16 + %a17 = alloca { ptr, i64, i64 }, align 16 + %a24 = alloca { ptr, i64, i64 }, align 16 + %a27 = alloca %S.lexer.Token, align 16 + %a36 = alloca %S.lexer.Token, align 16 + %a39 = alloca %S.ast.Node, align 16 + %a49 = alloca %S.lexer.Token, align 16 + %a50 = 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 %a55 = alloca { ptr, i64, i64 }, align 16 %a56 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca %S.ast.Node, align 16 - %a73 = alloca %S.ast.Node, align 16 - %a83 = alloca %S.ast.Node, align 16 - %a84 = alloca %S.ast.Node, align 16 + %a57 = alloca { ptr, i64, i64 }, align 16 + %a58 = alloca { ptr, i64, i64 }, align 16 + %a60 = alloca %S.lexer.Token, align 16 + %a61 = alloca { ptr, i64, i64 }, align 16 + %a66 = alloca %S.ast.Type, align 16 + %a70 = alloca { ptr, i64, i64 }, align 16 + %a71 = alloca { ptr, i64, i64 }, align 16 + %a73 = alloca %S.lexer.Token, align 16 + %a76 = alloca { ptr, i64, i64 }, align 16 + %a90 = alloca %S.ast.Node, align 16 + %a91 = alloca %S.ast.Node, align 16 + %a100 = alloca %S.lexer.Token, 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.801, i64 6, i64 0 }) + %t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.810, 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.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.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) - %t12 = load { ptr, i64, i64 }, ptr %a11 - %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.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 %endif1399 -endif1399: - %t19 = load ptr, ptr %a1 - %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.809, i64 1, i64 0 }) - %t23 = xor i1 %t22, true - 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.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.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.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 %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.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.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 %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.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) - %t57 = load { ptr, i64, i64 }, ptr %a56 - %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.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 - %t64 = call %S.ast.Node @finch.parser.parseExpr(ptr %t63) - %t65 = load i64, ptr %t62 - %t66 = add i64 %t65, 1 - call void @finch_arr_reserve(ptr %t61, i64 %t66, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t67 = load ptr, ptr %t61 - %t68 = getelementptr inbounds %S.ast.Node, ptr %t67, i64 %t65 - store %S.ast.Node %t64, ptr %t68 - store i64 %t66, ptr %t62 - 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 - store %S.ast.Node %t71, ptr %a72 - call void @finch.copy.S_ast_Node(ptr %a73, ptr %a72) - %t74 = load %S.ast.Node, ptr %a73 - %t75 = load i64, ptr %t70 - %t76 = add i64 %t75, 1 - call void @finch_arr_reserve(ptr %t69, i64 %t76, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t77 = load ptr, ptr %t69 - %t78 = getelementptr inbounds %S.ast.Node, ptr %t77, i64 %t75 - store %S.ast.Node %t74, ptr %t78 - store i64 %t76, ptr %t70 - %t79 = load ptr, ptr %a1 - call void @finch.parser.endOfStatement(ptr %t79) - 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 - store %S.ast.Node %t82, ptr %a83 - call void @finch.copy.S_ast_Node(ptr %a84, ptr %a83) - %t85 = load %S.ast.Node, ptr %a84 - ret %S.ast.Node %t85 + %t6 = call %S.lexer.Token @finch.parser.expect(ptr %t5, { ptr, i64, i64 } { ptr @.str.811, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.812, i64 8, i64 0 }) + store %S.lexer.Token %t6, ptr %a7 + call void @finch.drop.S_lexer_Token(ptr %a7) + %t8 = load ptr, ptr %a1 + %t9 = call %S.lexer.Token @finch.parser.expect(ptr %t8, { ptr, i64, i64 } { ptr @.str.813, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.814, i64 13, i64 0 }) + %t10 = extractvalue %S.lexer.Token %t9, 1 + store { ptr, i64, i64 } %t10, ptr %a11 + call void @finch_str_copy(ptr %a12, ptr %a11) + %t13 = load { ptr, i64, i64 }, ptr %a12 + store %S.lexer.Token %t9, ptr %a14 + call void @finch.drop.S_lexer_Token(ptr %a14) + %t15 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 1 + %t16 = load { ptr, i64, i64 }, ptr %t15 + store { ptr, i64, i64 } %t13, ptr %t15 + store { ptr, i64, i64 } %t16, ptr %a17 + call void @finch_str_drop(ptr %a17) + %t18 = load ptr, ptr %a1 + %t19 = call i1 @finch.parser.at(ptr %t18, { ptr, i64, i64 } { ptr @.str.815, i64 1, i64 0 }) + br i1 %t19, label %then1458, label %endif1460 +then1458: + %t20 = load ptr, ptr %a1 + %t21 = call { ptr, i64, i64 } @finch.parser.parseTParams(ptr %t20) + %t22 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 3 + %t23 = load { ptr, i64, i64 }, ptr %t22 + store { ptr, i64, i64 } %t21, ptr %t22 + store { ptr, i64, i64 } %t23, ptr %a24 + call void @finch.drop.arr_str(ptr %a24) + br label %endif1460 +endif1460: + %t25 = load ptr, ptr %a1 + %t26 = call %S.lexer.Token @finch.parser.expect(ptr %t25, { ptr, i64, i64 } { ptr @.str.816, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.817, i64 3, i64 0 }) + store %S.lexer.Token %t26, ptr %a27 + call void @finch.drop.S_lexer_Token(ptr %a27) + br label %while.cond1461 +while.cond1461: + %t28 = load ptr, ptr %a1 + %t29 = call i1 @finch.parser.at(ptr %t28, { ptr, i64, i64 } { ptr @.str.818, i64 1, i64 0 }) + %t30 = xor i1 %t29, true + br i1 %t30, label %while.body1462, label %while.end1463 +while.body1462: + %t31 = load ptr, ptr %a1 + %t32 = call i1 @finch.parser.at(ptr %t31, { ptr, i64, i64 } { ptr @.str.819, i64 3, i64 0 }) + br i1 %t32, label %then1464, label %endif1466 +then1464: + %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.820, i64 38, i64 0 }) + store %S.lexer.Token %t35, ptr %a36 + call void @finch.drop.S_lexer_Token(ptr %a36) + br label %endif1466 +endif1466: + %t37 = load ptr, ptr %a1 + %t38 = call %S.ast.Node @finch.parser.node(ptr %t37, { ptr, i64, i64 } { ptr @.str.821, i64 5, i64 0 }) + store %S.ast.Node %t38, ptr %a39 + %t40 = load ptr, ptr %a1 + %t41 = call i1 @finch.parser.atDeclaration(ptr %t40) + %t42 = xor i1 %t41, true + br i1 %t42, label %then1467, label %endif1469 +then1467: + %t43 = load ptr, ptr %a1 + %t44 = load ptr, ptr %a1 + %t45 = call %S.lexer.Token @finch.parser.cur(ptr %t44) + %t46 = load ptr, ptr %a1 + %t47 = call %S.lexer.Token @finch.parser.cur(ptr %t46) + %t48 = call { ptr, i64, i64 } @finch.parser.describe(%S.lexer.Token %t47) + store %S.lexer.Token %t47, ptr %a49 + call void @finch.drop.S_lexer_Token(ptr %a49) + store { ptr, i64, i64 } { ptr @.str.822, i64 11, i64 0 }, ptr %a51 + store { ptr, i64, i64 } %t48, ptr %a52 + call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) + store { ptr, i64, i64 } %t48, ptr %a53 + call void @finch_str_drop(ptr %a53) + %t54 = load { ptr, i64, i64 }, ptr %a50 + store { ptr, i64, i64 } %t54, ptr %a56 + store { ptr, i64, i64 } { ptr @.str.823, i64 28, i64 0 }, ptr %a57 + call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) + store { ptr, i64, i64 } %t54, ptr %a58 + call void @finch_str_drop(ptr %a58) + %t59 = load { ptr, i64, i64 }, ptr %a55 + call void @finch.parser.fail(ptr %t43, %S.lexer.Token %t45, { ptr, i64, i64 } %t59) + store %S.lexer.Token %t45, ptr %a60 + call void @finch.drop.S_lexer_Token(ptr %a60) + store { ptr, i64, i64 } %t59, ptr %a61 + call void @finch_str_drop(ptr %a61) + br label %endif1469 +endif1469: + %t62 = load ptr, ptr %a1 + %t63 = call %S.ast.Type @finch.parser.parseType(ptr %t62) + %t64 = getelementptr inbounds %S.ast.Node, ptr %a39, i32 0, i32 5 + %t65 = load %S.ast.Type, ptr %t64 + store %S.ast.Type %t63, ptr %t64 + store %S.ast.Type %t65, ptr %a66 + call void @finch.drop.S_ast_Type(ptr %a66) + %t67 = load ptr, ptr %a1 + %t68 = call %S.lexer.Token @finch.parser.expect(ptr %t67, { ptr, i64, i64 } { ptr @.str.824, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.825, i64 12, i64 0 }) + %t69 = extractvalue %S.lexer.Token %t68, 1 + store { ptr, i64, i64 } %t69, ptr %a70 + call void @finch_str_copy(ptr %a71, ptr %a70) + %t72 = load { ptr, i64, i64 }, ptr %a71 + store %S.lexer.Token %t68, ptr %a73 + call void @finch.drop.S_lexer_Token(ptr %a73) + %t74 = getelementptr inbounds %S.ast.Node, ptr %a39, i32 0, i32 1 + %t75 = load { ptr, i64, i64 }, ptr %t74 + store { ptr, i64, i64 } %t72, ptr %t74 + store { ptr, i64, i64 } %t75, ptr %a76 + call void @finch_str_drop(ptr %a76) + %t77 = load ptr, ptr %a1 + %t78 = call i1 @finch.parser.accept(ptr %t77, { ptr, i64, i64 } { ptr @.str.826, i64 1, i64 0 }) + br i1 %t78, label %then1470, label %endif1472 +then1470: + %t79 = getelementptr inbounds %S.ast.Node, ptr %a39, i32 0, i32 9 + %t80 = getelementptr inbounds { ptr, i64, i64 }, ptr %t79, i32 0, i32 1 + %t81 = load ptr, ptr %a1 + %t82 = call %S.ast.Node @finch.parser.parseExpr(ptr %t81) + %t83 = load i64, ptr %t80 + %t84 = add i64 %t83, 1 + call void @finch_arr_reserve(ptr %t79, i64 %t84, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t85 = load ptr, ptr %t79 + %t86 = getelementptr inbounds %S.ast.Node, ptr %t85, i64 %t83 + store %S.ast.Node %t82, ptr %t86 + store i64 %t84, ptr %t80 + br label %endif1472 +endif1472: + %t87 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 + %t88 = getelementptr inbounds { ptr, i64, i64 }, ptr %t87, i32 0, i32 1 + %t89 = load %S.ast.Node, ptr %a39 + store %S.ast.Node %t89, ptr %a90 + call void @finch.copy.S_ast_Node(ptr %a91, ptr %a90) + %t92 = load %S.ast.Node, ptr %a91 + %t93 = load i64, ptr %t88 + %t94 = add i64 %t93, 1 + call void @finch_arr_reserve(ptr %t87, i64 %t94, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t95 = load ptr, ptr %t87 + %t96 = getelementptr inbounds %S.ast.Node, ptr %t95, i64 %t93 + store %S.ast.Node %t92, ptr %t96 + store i64 %t94, ptr %t88 + %t97 = load ptr, ptr %a1 + call void @finch.parser.endOfStatement(ptr %t97) + call void @finch.drop.S_ast_Node(ptr %a39) + br label %while.cond1461 +while.end1463: + %t98 = load ptr, ptr %a1 + %t99 = call %S.lexer.Token @finch.parser.next(ptr %t98) + store %S.lexer.Token %t99, ptr %a100 + call void @finch.drop.S_lexer_Token(ptr %a100) + %t101 = load %S.ast.Node, ptr %a4 + ret %S.ast.Node %t101 } define internal %S.ast.Node @finch.parser.parseFn(ptr %p0) { @@ -16246,361 +18113,439 @@ entry: %a4 = alloca %S.ast.Node, align 16 %a13 = alloca { ptr, i64, i64 }, align 16 %a14 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca %S.ast.Node, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca %S.ast.Node, align 16 + %a16 = alloca %S.lexer.Token, align 16 + %a18 = alloca { ptr, i64, i64 }, align 16 + %a23 = alloca %S.lexer.Token, align 16 + %a26 = alloca %S.lexer.Token, align 16 + %a30 = alloca { ptr, i64, i64 }, align 16 + %a31 = alloca { ptr, i64, i64 }, align 16 + %a33 = alloca %S.lexer.Token, align 16 + %a36 = alloca { ptr, i64, i64 }, align 16 + %a43 = alloca { ptr, i64, i64 }, align 16 + %a49 = alloca { ptr, i64, i64 }, align 16 + %a50 = alloca { ptr, i64, i64 }, align 16 + %a53 = alloca { ptr, i64, i64 }, align 16 + %a57 = alloca { ptr, i64, i64 }, align 16 + %a58 = alloca { ptr, i64, i64 }, align 16 + %a60 = alloca %S.lexer.Token, align 16 + %a63 = alloca { ptr, i64, i64 }, align 16 + %a66 = alloca %S.lexer.Token, align 16 %a77 = alloca %S.ast.Node, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = 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 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca %S.ast.Node, align 16 - %a154 = alloca %S.ast.Node, align 16 + %a82 = alloca %S.ast.Type, align 16 + %a86 = alloca { ptr, i64, i64 }, align 16 + %a87 = alloca { ptr, i64, i64 }, align 16 + %a89 = alloca %S.lexer.Token, align 16 + %a92 = alloca { ptr, i64, i64 }, align 16 + %a96 = alloca %S.ast.Node, align 16 + %a97 = alloca %S.ast.Node, align 16 + %a113 = alloca %S.lexer.Token, align 16 + %a117 = alloca %S.ast.Type, align 16 + %a127 = alloca %S.ast.Type, align 16 + %a137 = alloca { ptr, i64, i64 }, align 16 + %a138 = alloca { ptr, i64, i64 }, align 16 + %a148 = alloca %S.lexer.Token, align 16 + %a149 = alloca { ptr, i64, i64 }, align 16 + %a150 = alloca { ptr, i64, i64 }, align 16 + %a151 = alloca { ptr, i64, i64 }, align 16 + %a152 = alloca { ptr, i64, i64 }, align 16 + %a154 = alloca { ptr, i64, i64 }, align 16 + %a155 = alloca { ptr, i64, i64 }, align 16 + %a156 = alloca { ptr, i64, i64 }, align 16 + %a157 = alloca { ptr, i64, i64 }, align 16 + %a159 = alloca %S.lexer.Token, align 16 + %a160 = alloca { ptr, i64, i64 }, 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.818, i64 2, i64 0 }) + %t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.827, 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.819, i64 6, i64 0 }) + %t6 = call i1 @finch.parser.accept(ptr %t5, { ptr, i64, i64 } { ptr @.str.828, 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.820, i64 5, i64 0 }) - br label %logic.from1412 -logic.from1412: - br i1 %t9, label %logic.rhs1413, label %logic.end1414 -logic.rhs1413: + %t9 = call i1 @finch.parser.at(ptr %t8, { ptr, i64, i64 } { ptr @.str.829, i64 5, i64 0 }) + br label %logic.from1473 +logic.from1473: + br i1 %t9, label %logic.rhs1474, label %logic.end1475 +logic.rhs1474: %t10 = load ptr, ptr %a1 %t11 = call %S.lexer.Token @finch.parser.cur(ptr %t10) %t12 = extractvalue %S.lexer.Token %t11, 1 store { ptr, i64, i64 } %t12, ptr %a13 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.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.821, i64 68, i64 0 }) - br label %endif1418 -endif1418: + store %S.lexer.Token %t11, ptr %a16 + call void @finch.drop.S_lexer_Token(ptr %a16) + %t17 = call i1 @finch.parser.isTypeName({ ptr, i64, i64 } %t15) + store { ptr, i64, i64 } %t15, ptr %a18 + call void @finch_str_drop(ptr %a18) + br label %logic.rend1476 +logic.rend1476: + br label %logic.end1475 +logic.end1475: + %t19 = phi i1 [ false, %logic.from1473 ], [ %t17, %logic.rend1476 ] + br i1 %t19, label %then1477, label %endif1479 +then1477: + %t20 = load ptr, ptr %a1 %t21 = load ptr, ptr %a1 - %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.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) - %t28 = load { ptr, i64, i64 }, ptr %a27 - %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.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 %endif1421 -endif1421: - %t35 = load ptr, ptr %a1 - %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 - store { ptr, i64, i64 } %t38, ptr %a40 - call void @finch_str_copy(ptr %a41, ptr %a40) - %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.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 %endif1424 -endif1424: - %t50 = load ptr, ptr %a1 - %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 %panic1425, label %ok1426 -panic1425: - call void @finch_panic(ptr @.str.832, i64 398, ptr @.str.833) + %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.830, i64 68, i64 0 }) + store %S.lexer.Token %t22, ptr %a23 + call void @finch.drop.S_lexer_Token(ptr %a23) + br label %endif1479 +endif1479: + %t24 = load ptr, ptr %a1 + %t25 = call %S.lexer.Token @finch.parser.expect(ptr %t24, { ptr, i64, i64 } { ptr @.str.831, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.832, i64 26, i64 0 }) + store %S.lexer.Token %t25, ptr %a26 + call void @finch.drop.S_lexer_Token(ptr %a26) + %t27 = load ptr, ptr %a1 + %t28 = call %S.lexer.Token @finch.parser.expect(ptr %t27, { ptr, i64, i64 } { ptr @.str.833, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.834, i64 15, 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) + %t32 = load { ptr, i64, i64 }, ptr %a31 + store %S.lexer.Token %t28, ptr %a33 + call void @finch.drop.S_lexer_Token(ptr %a33) + %t34 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 1 + %t35 = load { ptr, i64, i64 }, ptr %t34 + store { ptr, i64, i64 } %t32, ptr %t34 + store { ptr, i64, i64 } %t35, ptr %a36 + call void @finch_str_drop(ptr %a36) + %t37 = load ptr, ptr %a1 + %t38 = call i1 @finch.parser.at(ptr %t37, { ptr, i64, i64 } { ptr @.str.835, i64 1, i64 0 }) + br i1 %t38, label %then1480, label %endif1482 +then1480: + %t39 = load ptr, ptr %a1 + %t40 = call { ptr, i64, i64 } @finch.parser.parseTParams(ptr %t39) + %t41 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 3 + %t42 = load { ptr, i64, i64 }, ptr %t41 + store { ptr, i64, i64 } %t40, ptr %t41 + store { ptr, i64, i64 } %t42, ptr %a43 + call void @finch.drop.arr_str(ptr %a43) + br label %endif1482 +endif1482: + %t44 = load ptr, ptr %a1 + %t45 = call i1 @finch.parser.accept(ptr %t44, { ptr, i64, i64 } { ptr @.str.836, i64 1, i64 0 }) + br i1 %t45, label %then1483, label %endif1485 +then1483: + %t46 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 1 + %t47 = load { ptr, i64, i64 }, ptr %t46 + %t48 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 2 + store { ptr, i64, i64 } %t47, ptr %a49 + call void @finch_str_copy(ptr %a50, ptr %a49) + %t51 = load { ptr, i64, i64 }, ptr %a50 + %t52 = load { ptr, i64, i64 }, ptr %t48 + store { ptr, i64, i64 } %t51, ptr %t48 + store { ptr, i64, i64 } %t52, ptr %a53 + call void @finch_str_drop(ptr %a53) + %t54 = load ptr, ptr %a1 + %t55 = call %S.lexer.Token @finch.parser.expect(ptr %t54, { ptr, i64, i64 } { ptr @.str.837, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.838, i64 13, i64 0 }) + %t56 = extractvalue %S.lexer.Token %t55, 1 + store { ptr, i64, i64 } %t56, ptr %a57 + call void @finch_str_copy(ptr %a58, ptr %a57) + %t59 = load { ptr, i64, i64 }, ptr %a58 + store %S.lexer.Token %t55, ptr %a60 + call void @finch.drop.S_lexer_Token(ptr %a60) + %t61 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 1 + %t62 = load { ptr, i64, i64 }, ptr %t61 + store { ptr, i64, i64 } %t59, ptr %t61 + store { ptr, i64, i64 } %t62, ptr %a63 + call void @finch_str_drop(ptr %a63) + br label %endif1485 +endif1485: + %t64 = load ptr, ptr %a1 + %t65 = call %S.lexer.Token @finch.parser.expect(ptr %t64, { ptr, i64, i64 } { ptr @.str.839, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.840, i64 3, i64 0 }) + store %S.lexer.Token %t65, ptr %a66 + call void @finch.drop.S_lexer_Token(ptr %a66) + %t67 = load ptr, ptr %a1 + %t68 = icmp eq ptr %t67, null + br i1 %t68, label %panic1486, label %ok1487 +panic1486: + call void @finch_panic(ptr @.str.841, i64 398, ptr @.str.842) unreachable -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.834, i64 1, i64 0 }) - %t59 = xor i1 %t58, true - 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.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.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) - %t71 = load { ptr, i64, i64 }, ptr %a70 - %t72 = getelementptr inbounds %S.ast.Node, ptr %a62, i32 0, i32 1 - store { ptr, i64, i64 } %t71, ptr %t72 - %t73 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t74 = getelementptr inbounds { ptr, i64, i64 }, ptr %t73, i32 0, i32 1 - %t75 = load %S.ast.Node, ptr %a62 - store %S.ast.Node %t75, ptr %a76 - call void @finch.copy.S_ast_Node(ptr %a77, ptr %a76) - %t78 = load %S.ast.Node, ptr %a77 - %t79 = load i64, ptr %t74 - %t80 = add i64 %t79, 1 - call void @finch_arr_reserve(ptr %t73, i64 %t80, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t81 = load ptr, ptr %t73 - %t82 = getelementptr inbounds %S.ast.Node, ptr %t81, i64 %t79 - store %S.ast.Node %t78, ptr %t82 - store i64 %t80, ptr %t74 +ok1487: + %t69 = getelementptr inbounds %S.parser.Parser, ptr %t67, i32 0, i32 2 + %t70 = load i64, ptr %t69 + %t71 = add i64 %t70, 1 + store i64 %t71, ptr %t69 + %t72 = load ptr, ptr %a1 + %t73 = call i1 @finch.parser.at(ptr %t72, { ptr, i64, i64 } { ptr @.str.843, i64 1, i64 0 }) + %t74 = xor i1 %t73, true + br i1 %t74, label %then1488, label %endif1490 +then1488: + br label %while.cond1491 +while.cond1491: + br label %while.body1492 +while.body1492: + %t75 = load ptr, ptr %a1 + %t76 = call %S.ast.Node @finch.parser.node(ptr %t75, { ptr, i64, i64 } { ptr @.str.844, i64 5, i64 0 }) + store %S.ast.Node %t76, ptr %a77 + %t78 = load ptr, ptr %a1 + %t79 = call %S.ast.Type @finch.parser.parseType(ptr %t78) + %t80 = getelementptr inbounds %S.ast.Node, ptr %a77, i32 0, i32 5 + %t81 = load %S.ast.Type, ptr %t80 + store %S.ast.Type %t79, ptr %t80 + store %S.ast.Type %t81, ptr %a82 + call void @finch.drop.S_ast_Type(ptr %a82) %t83 = load ptr, ptr %a1 - %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 %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 %panic1436, label %ok1437 -panic1436: - call void @finch_panic(ptr @.str.839, i64 410, ptr @.str.840) - unreachable -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.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.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.845, i64 1, i64 0 }) - %t99 = xor i1 %t98, true - 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 %endif1443 -endif1443: + %t84 = call %S.lexer.Token @finch.parser.expect(ptr %t83, { ptr, i64, i64 } { ptr @.str.845, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.846, i64 16, i64 0 }) + %t85 = extractvalue %S.lexer.Token %t84, 1 + store { ptr, i64, i64 } %t85, ptr %a86 + call void @finch_str_copy(ptr %a87, ptr %a86) + %t88 = load { ptr, i64, i64 }, ptr %a87 + store %S.lexer.Token %t84, ptr %a89 + call void @finch.drop.S_lexer_Token(ptr %a89) + %t90 = getelementptr inbounds %S.ast.Node, ptr %a77, i32 0, i32 1 + %t91 = load { ptr, i64, i64 }, ptr %t90 + store { ptr, i64, i64 } %t88, ptr %t90 + store { ptr, i64, i64 } %t91, ptr %a92 + call void @finch_str_drop(ptr %a92) + %t93 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 + %t94 = getelementptr inbounds { ptr, i64, i64 }, ptr %t93, i32 0, i32 1 + %t95 = load %S.ast.Node, ptr %a77 + store %S.ast.Node %t95, ptr %a96 + call void @finch.copy.S_ast_Node(ptr %a97, ptr %a96) + %t98 = load %S.ast.Node, ptr %a97 + %t99 = load i64, ptr %t94 + %t100 = add i64 %t99, 1 + call void @finch_arr_reserve(ptr %t93, i64 %t100, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t101 = load ptr, ptr %t93 + %t102 = getelementptr inbounds %S.ast.Node, ptr %t101, i64 %t99 + store %S.ast.Node %t98, ptr %t102 + store i64 %t100, ptr %t94 %t103 = load ptr, ptr %a1 - %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.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.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.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.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.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 %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 - %t134 = call %S.ast.Node @finch.parser.parseBlock(ptr %t133) - %t135 = load i64, ptr %t132 - %t136 = add i64 %t135, 1 - call void @finch_arr_reserve(ptr %t131, i64 %t136, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t137 = load ptr, ptr %t131 - %t138 = getelementptr inbounds %S.ast.Node, ptr %t137, i64 %t135 - store %S.ast.Node %t134, ptr %t138 - store i64 %t136, ptr %t132 - %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) + %t104 = call i1 @finch.parser.accept(ptr %t103, { ptr, i64, i64 } { ptr @.str.847, i64 1, i64 0 }) + %t105 = xor i1 %t104, true + br i1 %t105, label %then1494, label %endif1496 +then1494: + call void @finch.drop.S_ast_Node(ptr %a77) + br label %while.end1493 +endif1496: + call void @finch.drop.S_ast_Node(ptr %a77) + br label %while.cond1491 +while.end1493: + br label %endif1490 +endif1490: + %t106 = load ptr, ptr %a1 + %t107 = icmp eq ptr %t106, null + br i1 %t107, label %panic1497, label %ok1498 +panic1497: + call void @finch_panic(ptr @.str.848, i64 410, ptr @.str.849) 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 +ok1498: + %t108 = getelementptr inbounds %S.parser.Parser, ptr %t106, i32 0, i32 2 + %t109 = load i64, ptr %t108 + %t110 = sub i64 %t109, 1 + store i64 %t110, ptr %t108 + %t111 = load ptr, ptr %a1 + %t112 = call %S.lexer.Token @finch.parser.expect(ptr %t111, { ptr, i64, i64 } { ptr @.str.850, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.851, i64 3, i64 0 }) + store %S.lexer.Token %t112, ptr %a113 + call void @finch.drop.S_lexer_Token(ptr %a113) + %t114 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.852, i64 4, i64 0 }) + %t115 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 5 + %t116 = load %S.ast.Type, ptr %t115 + store %S.ast.Type %t114, ptr %t115 + store %S.ast.Type %t116, ptr %a117 + call void @finch.drop.S_ast_Type(ptr %a117) + %t118 = load ptr, ptr %a1 + %t119 = call i1 @finch.parser.accept(ptr %t118, { ptr, i64, i64 } { ptr @.str.853, i64 2, i64 0 }) + br i1 %t119, label %then1499, label %endif1501 +then1499: + %t120 = load ptr, ptr %a1 + %t121 = call i1 @finch.parser.at(ptr %t120, { ptr, i64, i64 } { ptr @.str.854, i64 1, i64 0 }) + %t122 = xor i1 %t121, true + br i1 %t122, label %then1502, label %endif1504 +then1502: + %t123 = load ptr, ptr %a1 + %t124 = call %S.ast.Type @finch.parser.parseType(ptr %t123) + %t125 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 5 + %t126 = load %S.ast.Type, ptr %t125 + store %S.ast.Type %t124, ptr %t125 + store %S.ast.Type %t126, ptr %a127 + call void @finch.drop.S_ast_Type(ptr %a127) + br label %endif1504 +endif1504: + %t128 = load ptr, ptr %a1 + %t129 = call i1 @finch.parser.accept(ptr %t128, { ptr, i64, i64 } { ptr @.str.855, i64 1, i64 0 }) + %t130 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 7 + store i1 %t129, ptr %t130 + %t131 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 7 + %t132 = load i1, ptr %t131 + %t133 = xor i1 %t132, true + br label %logic.from1505 +logic.from1505: + br i1 %t133, label %logic.rhs1506, label %logic.end1507 +logic.rhs1506: + %t134 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 5 + %t135 = getelementptr inbounds %S.ast.Type, ptr %t134, i32 0, i32 0 + %t136 = load { ptr, i64, i64 }, ptr %t135 + store { ptr, i64, i64 } %t136, ptr %a137 + store { ptr, i64, i64 } { ptr @.str.856, i64 4, i64 0 }, ptr %a138 + %t139 = call i32 @finch_str_eq(ptr %a137, ptr %a138) + %t140 = icmp ne i32 %t139, 0 + br label %logic.rend1508 +logic.rend1508: + br label %logic.end1507 +logic.end1507: + %t141 = phi i1 [ false, %logic.from1505 ], [ %t140, %logic.rend1508 ] + br i1 %t141, label %then1509, label %endif1511 +then1509: + %t142 = load ptr, ptr %a1 + %t143 = load ptr, ptr %a1 + %t144 = call %S.lexer.Token @finch.parser.cur(ptr %t143) + %t145 = load ptr, ptr %a1 + %t146 = call %S.lexer.Token @finch.parser.cur(ptr %t145) + %t147 = call { ptr, i64, i64 } @finch.parser.describe(%S.lexer.Token %t146) + store %S.lexer.Token %t146, ptr %a148 + call void @finch.drop.S_lexer_Token(ptr %a148) + store { ptr, i64, i64 } { ptr @.str.857, i64 11, i64 0 }, ptr %a150 + store { ptr, i64, i64 } %t147, ptr %a151 + call void @finch_str_concat(ptr %a149, ptr %a150, ptr %a151) + store { ptr, i64, i64 } %t147, ptr %a152 + call void @finch_str_drop(ptr %a152) + %t153 = load { ptr, i64, i64 }, ptr %a149 + store { ptr, i64, i64 } %t153, ptr %a155 + store { ptr, i64, i64 } { ptr @.str.858, i64 61, i64 0 }, ptr %a156 + call void @finch_str_concat(ptr %a154, ptr %a155, ptr %a156) + store { ptr, i64, i64 } %t153, ptr %a157 + call void @finch_str_drop(ptr %a157) + %t158 = load { ptr, i64, i64 }, ptr %a154 + call void @finch.parser.fail(ptr %t142, %S.lexer.Token %t144, { ptr, i64, i64 } %t158) + store %S.lexer.Token %t144, ptr %a159 + call void @finch.drop.S_lexer_Token(ptr %a159) + store { ptr, i64, i64 } %t158, ptr %a160 + call void @finch_str_drop(ptr %a160) + br label %endif1511 +endif1511: + br label %endif1501 +endif1501: + %t161 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 + %t162 = getelementptr inbounds { ptr, i64, i64 }, ptr %t161, i32 0, i32 1 + %t163 = load ptr, ptr %a1 + %t164 = call %S.ast.Node @finch.parser.parseBlock(ptr %t163) + %t165 = load i64, ptr %t162 + %t166 = add i64 %t165, 1 + call void @finch_arr_reserve(ptr %t161, i64 %t166, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t167 = load ptr, ptr %t161 + %t168 = getelementptr inbounds %S.ast.Node, ptr %t167, i64 %t165 + store %S.ast.Node %t164, ptr %t168 + store i64 %t166, ptr %t162 + %t169 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 + %t170 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 + %t171 = getelementptr inbounds { ptr, i64, i64 }, ptr %t170, i32 0, i32 1 + %t172 = load i64, ptr %t171 + %t173 = sub i64 %t172, 1 + %t174 = load { ptr, i64, i64 }, ptr %t169 + %t175 = extractvalue { ptr, i64, i64 } %t174, 1 + %t176 = icmp uge i64 %t173, %t175 + br i1 %t176, label %range1512, label %inrange1513 +range1512: + call void @finch_panic_index(ptr @.str.859, i64 423, i64 %t173, i64 %t175) + unreachable +inrange1513: + %t177 = extractvalue { ptr, i64, i64 } %t174, 0 + %t178 = getelementptr inbounds %S.ast.Node, ptr %t177, i64 %t173 + %t179 = getelementptr inbounds %S.ast.Node, ptr %t178, i32 0, i32 14 + %t180 = load i64, ptr %t179 + %t181 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 14 + store i64 %t180, ptr %t181 + %t182 = load %S.ast.Node, ptr %a4 + ret %S.ast.Node %t182 } define internal %S.ast.Node @finch.parser.parseBlock(ptr %p0) { entry: %a1 = alloca ptr, align 16 %a4 = alloca %S.ast.Node, align 16 - %a11 = alloca i64, align 16 - %a43 = alloca %S.ast.Node, align 16 - %a44 = alloca %S.ast.Node, align 16 + %a7 = alloca %S.lexer.Token, align 16 + %a12 = alloca i64, align 16 + %a24 = alloca %S.lexer.Token, align 16 + %a41 = alloca %S.lexer.Token, align 16 + %a45 = alloca %S.lexer.Token, 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.851, i64 5, i64 0 }) + %t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.860, 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.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 %panic1453, label %ok1454 -panic1453: - call void @finch_panic(ptr @.str.854, i64 432, ptr @.str.855) + %t6 = call %S.lexer.Token @finch.parser.expect(ptr %t5, { ptr, i64, i64 } { ptr @.str.861, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.862, i64 3, i64 0 }) + store %S.lexer.Token %t6, ptr %a7 + call void @finch.drop.S_lexer_Token(ptr %a7) + %t8 = load ptr, ptr %a1 + %t9 = icmp eq ptr %t8, null + br i1 %t9, label %panic1514, label %ok1515 +panic1514: + call void @finch_panic(ptr @.str.863, i64 432, ptr @.str.864) unreachable -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 %panic1455, label %ok1456 -panic1455: - call void @finch_panic(ptr @.str.856, i64 433, ptr @.str.857) +ok1515: + %t10 = getelementptr inbounds %S.parser.Parser, ptr %t8, i32 0, i32 2 + %t11 = load i64, ptr %t10 + store i64 %t11, ptr %a12 + %t13 = load ptr, ptr %a1 + %t14 = icmp eq ptr %t13, null + br i1 %t14, label %panic1516, label %ok1517 +panic1516: + call void @finch_panic(ptr @.str.865, i64 433, ptr @.str.866) unreachable -ok1456: - %t14 = getelementptr inbounds %S.parser.Parser, ptr %t12, i32 0, i32 2 - store i64 0, ptr %t14 - br label %while.cond1457 -while.cond1457: - %t15 = load ptr, ptr %a1 - %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.body1458, label %while.end1459 -while.body1458: - %t18 = load ptr, ptr %a1 - %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 +ok1517: + %t15 = getelementptr inbounds %S.parser.Parser, ptr %t13, i32 0, i32 2 + store i64 0, ptr %t15 + br label %while.cond1518 +while.cond1518: + %t16 = load ptr, ptr %a1 + %t17 = call i1 @finch.parser.at(ptr %t16, { ptr, i64, i64 } { ptr @.str.867, i64 1, i64 0 }) + %t18 = xor i1 %t17, true + br i1 %t18, label %while.body1519, label %while.end1520 +while.body1519: + %t19 = load ptr, ptr %a1 + %t20 = call i1 @finch.parser.at(ptr %t19, { ptr, i64, i64 } { ptr @.str.868, i64 3, i64 0 }) + br i1 %t20, label %then1521, label %endif1523 +then1521: %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.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 - %t26 = call %S.ast.Node @finch.parser.parseStatement(ptr %t25) - %t27 = load i64, ptr %t24 - %t28 = add i64 %t27, 1 - call void @finch_arr_reserve(ptr %t23, i64 %t28, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t29 = load ptr, ptr %t23 - %t30 = getelementptr inbounds %S.ast.Node, ptr %t29, i64 %t27 - store %S.ast.Node %t26, ptr %t30 - store i64 %t28, ptr %t24 - %t31 = load ptr, ptr %a1 - call void @finch.parser.endOfStatement(ptr %t31) - br label %while.cond1457 -while.end1459: - %t32 = load i64, ptr %a11 + %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.869, i64 35, i64 0 }) + store %S.lexer.Token %t23, ptr %a24 + call void @finch.drop.S_lexer_Token(ptr %a24) + br label %endif1523 +endif1523: + %t25 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 + %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t25, i32 0, i32 1 + %t27 = load ptr, ptr %a1 + %t28 = call %S.ast.Node @finch.parser.parseStatement(ptr %t27) + %t29 = load i64, ptr %t26 + %t30 = add i64 %t29, 1 + call void @finch_arr_reserve(ptr %t25, i64 %t30, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t31 = load ptr, ptr %t25 + %t32 = getelementptr inbounds %S.ast.Node, ptr %t31, i64 %t29 + store %S.ast.Node %t28, ptr %t32 + store i64 %t30, ptr %t26 %t33 = load ptr, ptr %a1 - %t34 = icmp eq ptr %t33, null - br i1 %t34, label %panic1463, label %ok1464 -panic1463: - call void @finch_panic(ptr @.str.861, i64 441, ptr @.str.862) + call void @finch.parser.endOfStatement(ptr %t33) + br label %while.cond1518 +while.end1520: + %t34 = load i64, ptr %a12 + %t35 = load ptr, ptr %a1 + %t36 = icmp eq ptr %t35, null + br i1 %t36, label %panic1524, label %ok1525 +panic1524: + call void @finch_panic(ptr @.str.870, i64 441, ptr @.str.871) unreachable -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.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 +ok1525: + %t37 = getelementptr inbounds %S.parser.Parser, ptr %t35, i32 0, i32 2 + store i64 %t34, ptr %t37 + %t38 = load ptr, ptr %a1 + %t39 = call %S.lexer.Token @finch.parser.cur(ptr %t38) + %t40 = extractvalue %S.lexer.Token %t39, 2 + store %S.lexer.Token %t39, ptr %a41 + call void @finch.drop.S_lexer_Token(ptr %a41) + %t42 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 14 + store i64 %t40, ptr %t42 + %t43 = load ptr, ptr %a1 + %t44 = call %S.lexer.Token @finch.parser.next(ptr %t43) + store %S.lexer.Token %t44, ptr %a45 + call void @finch.drop.S_lexer_Token(ptr %a45) + %t46 = load %S.ast.Node, ptr %a4 + ret %S.ast.Node %t46 } define internal %S.ast.Node @finch.parser.parseStatement(ptr %p0) { @@ -16612,846 +18557,945 @@ entry: %a13 = alloca { ptr, i64, i64 }, align 16 %a14 = alloca { ptr, i64, i64 }, align 16 %a19 = alloca %S.ast.Node, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 + %a22 = alloca %S.lexer.Token, align 16 %a41 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca %S.ast.Node, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 + %a42 = alloca { ptr, i64, i64 }, align 16 + %a47 = alloca %S.ast.Node, align 16 + %a50 = alloca %S.lexer.Token, align 16 + %a54 = alloca { ptr, i64, i64 }, align 16 + %a55 = alloca { ptr, i64, i64 }, align 16 + %a57 = alloca %S.lexer.Token, align 16 + %a60 = alloca { ptr, i64, i64 }, align 16 + %a66 = alloca { ptr, i64, i64 }, align 16 + %a67 = alloca { ptr, i64, i64 }, align 16 + %a69 = alloca %S.lexer.Token, align 16 + %a72 = alloca { ptr, i64, i64 }, align 16 + %a75 = alloca %S.lexer.Token, align 16 + %a93 = alloca %S.lexer.Token, align 16 %a104 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca %S.ast.Node, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca %S.ast.Node, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 + %a115 = alloca { ptr, i64, i64 }, align 16 + %a116 = alloca { ptr, i64, i64 }, align 16 + %a122 = alloca { ptr, i64, i64 }, align 16 + %a123 = alloca { ptr, i64, i64 }, align 16 + %a128 = alloca %S.ast.Node, align 16 + %a131 = alloca %S.lexer.Token, align 16 + %a138 = alloca %S.lexer.Token, align 16 + %a151 = alloca { ptr, i64, i64 }, align 16 + %a152 = alloca { ptr, i64, i64 }, align 16 %a156 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca %S.ast.Node, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 + %a157 = alloca { ptr, i64, i64 }, align 16 + %a164 = alloca %S.ast.Node, align 16 + %a167 = alloca %S.lexer.Token, align 16 + %a170 = alloca { ptr, i64, i64 }, align 16 + %a171 = alloca { ptr, i64, i64 }, align 16 + %a177 = alloca { ptr, i64, i64 }, align 16 + %a178 = alloca { ptr, i64, i64 }, align 16 + %a183 = alloca %S.ast.Node, align 16 + %a186 = alloca %S.lexer.Token, align 16 + %a192 = alloca %S.lexer.Token, align 16 %a203 = alloca { ptr, i64, i64 }, align 16 %a204 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 + %a208 = alloca { ptr, i64, i64 }, align 16 + %a209 = alloca { ptr, i64, i64 }, align 16 %a214 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca %S.ast.Node, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 + %a215 = alloca { ptr, i64, i64 }, align 16 + %a220 = alloca { ptr, i64, i64 }, align 16 + %a221 = alloca { ptr, i64, i64 }, align 16 + %a229 = alloca { ptr, i64, i64 }, align 16 + %a230 = alloca { ptr, i64, i64 }, align 16 + %a231 = alloca { ptr, i64, i64 }, align 16 %a233 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca %S.ast.Node, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca %S.lexer.Token, align 16 - %a282 = alloca %S.ast.Node, align 16 + %a234 = alloca { ptr, i64, i64 }, align 16 + %a235 = alloca { ptr, i64, i64 }, align 16 + %a236 = alloca { ptr, i64, i64 }, align 16 + %a238 = alloca %S.lexer.Token, align 16 + %a239 = alloca { ptr, i64, i64 }, align 16 + %a244 = alloca %S.ast.Node, align 16 + %a250 = alloca %S.ast.Type, align 16 + %a254 = alloca { ptr, i64, i64 }, align 16 + %a255 = alloca { ptr, i64, i64 }, align 16 + %a257 = alloca %S.lexer.Token, align 16 + %a260 = alloca { ptr, i64, i64 }, align 16 + %a276 = alloca { ptr, i64, i64 }, align 16 + %a277 = alloca { ptr, i64, i64 }, align 16 + %a280 = alloca { ptr, i64, i64 }, align 16 + %a284 = alloca %S.ast.Node, align 16 + %a288 = alloca { ptr, i64, i64 }, align 16 + %a289 = alloca { ptr, i64, i64 }, align 16 + %a291 = alloca %S.lexer.Token, align 16 %a294 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca i64, align 16 - %a301 = alloca i64, align 16 - %a306 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 + %a297 = alloca %S.lexer.Token, align 16 + %a309 = alloca %S.lexer.Token, align 16 + %a312 = alloca %S.ast.Node, align 16 %a324 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca %S.ast.Node, align 16 - %a354 = alloca { ptr, i64, i64 }, align 16 + %a328 = alloca i64, align 16 + %a331 = alloca i64, align 16 + %a336 = alloca { ptr, i64, i64 }, align 16 + %a337 = alloca { ptr, i64, i64 }, align 16 + %a341 = alloca { ptr, i64, i64 }, align 16 + %a349 = alloca { ptr, i64, i64 }, align 16 + %a350 = alloca { ptr, i64, i64 }, align 16 %a355 = alloca { ptr, i64, i64 }, align 16 - %a361 = alloca %S.ast.Node, align 16 - %a362 = alloca %S.ast.Node, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 + %a356 = alloca { ptr, i64, i64 }, align 16 + %a362 = alloca { ptr, i64, i64 }, align 16 + %a363 = alloca { ptr, i64, i64 }, align 16 + %a381 = alloca %S.ast.Node, align 16 %a385 = alloca { ptr, i64, i64 }, align 16 %a386 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca { ptr, i64, i64 }, align 16 - %a393 = alloca { ptr, i64, i64 }, align 16 - %a399 = alloca { ptr, i64, i64 }, align 16 - %a400 = alloca { ptr, i64, i64 }, align 16 - %a418 = alloca %S.ast.Node, align 16 - %a422 = alloca %S.ast.Node, align 16 - %a423 = alloca %S.ast.Node, align 16 - %a430 = alloca %S.ast.Node, align 16 - %a431 = alloca %S.ast.Node, align 16 + %a388 = alloca %S.lexer.Token, align 16 + %a391 = alloca { ptr, i64, i64 }, align 16 + %a395 = alloca %S.ast.Node, align 16 + %a396 = alloca %S.ast.Node, align 16 + %a413 = alloca { ptr, i64, i64 }, align 16 + %a414 = alloca { ptr, i64, i64 }, align 16 + %a419 = alloca { ptr, i64, i64 }, align 16 + %a420 = alloca { ptr, i64, i64 }, align 16 + %a426 = alloca { ptr, i64, i64 }, align 16 + %a427 = alloca { ptr, i64, i64 }, align 16 + %a433 = alloca { ptr, i64, i64 }, align 16 + %a434 = alloca { ptr, i64, i64 }, align 16 + %a452 = alloca %S.ast.Node, align 16 + %a456 = alloca %S.ast.Node, align 16 + %a457 = alloca %S.ast.Node, align 16 store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 %t3 = call { ptr, i64, i64 } @finch.parser.curKind(ptr %t2) 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.863, i64 2, i64 0 }, ptr %a7 + store { ptr, i64, i64 } { ptr @.str.872, 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 %then1465, label %endif1467 -then1465: + br i1 %t9, label %then1526, label %endif1528 +then1526: %t10 = load ptr, ptr %a1 %t11 = call %S.ast.Node @finch.parser.parseIf(ptr %t10) + call void @finch_str_drop(ptr %a4) ret %S.ast.Node %t11 -endif1467: +endif1528: %t12 = load { ptr, i64, i64 }, ptr %a4 store { ptr, i64, i64 } %t12, ptr %a13 - store { ptr, i64, i64 } { ptr @.str.864, i64 5, i64 0 }, ptr %a14 + store { ptr, i64, i64 } { ptr @.str.873, 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 %then1468, label %endif1470 -then1468: + br i1 %t16, label %then1529, label %endif1531 +then1529: %t17 = load ptr, ptr %a1 - %t18 = call %S.ast.Node @finch.parser.node(ptr %t17, { ptr, i64, i64 } { ptr @.str.865, i64 5, i64 0 }) + %t18 = call %S.ast.Node @finch.parser.node(ptr %t17, { ptr, i64, i64 } { ptr @.str.874, 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) - %t22 = getelementptr inbounds %S.ast.Node, ptr %a19, i32 0, i32 9 - %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t22, i32 0, i32 1 - %t24 = load ptr, ptr %a1 - %t25 = call %S.ast.Node @finch.parser.parseExpr(ptr %t24) - %t26 = load i64, ptr %t23 - %t27 = add i64 %t26, 1 - call void @finch_arr_reserve(ptr %t22, i64 %t27, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t28 = load ptr, ptr %t22 - %t29 = getelementptr inbounds %S.ast.Node, ptr %t28, i64 %t26 - store %S.ast.Node %t25, ptr %t29 - store i64 %t27, ptr %t23 - %t30 = getelementptr inbounds %S.ast.Node, ptr %a19, i32 0, i32 9 - %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t30, i32 0, i32 1 - %t32 = load ptr, ptr %a1 - %t33 = call %S.ast.Node @finch.parser.parseBlock(ptr %t32) - %t34 = load i64, ptr %t31 - %t35 = add i64 %t34, 1 - call void @finch_arr_reserve(ptr %t30, i64 %t35, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t36 = load ptr, ptr %t30 - %t37 = getelementptr inbounds %S.ast.Node, ptr %t36, i64 %t34 - store %S.ast.Node %t33, ptr %t37 - store i64 %t35, ptr %t31 - %t38 = load %S.ast.Node, ptr %a19 - ret %S.ast.Node %t38 -endif1470: - %t39 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t39, ptr %a40 - 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 %then1471, label %endif1473 -then1471: - %t44 = load ptr, ptr %a1 - %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.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) - %t54 = load { ptr, i64, i64 }, ptr %a53 - %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.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.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 %endif1476 -endif1476: - %t65 = load ptr, ptr %a1 - %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 - %t70 = call %S.ast.Node @finch.parser.parseExpr(ptr %t69) - %t71 = load i64, ptr %t68 - %t72 = add i64 %t71, 1 - call void @finch_arr_reserve(ptr %t67, i64 %t72, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t73 = load ptr, ptr %t67 - %t74 = getelementptr inbounds %S.ast.Node, ptr %t73, i64 %t71 - 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.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 %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.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 - %t87 = call %S.ast.Node @finch.parser.parseExpr(ptr %t86) - %t88 = load i64, ptr %t85 - %t89 = add i64 %t88, 1 - call void @finch_arr_reserve(ptr %t84, i64 %t89, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t90 = load ptr, ptr %t84 - %t91 = getelementptr inbounds %S.ast.Node, ptr %t90, i64 %t88 - store %S.ast.Node %t87, ptr %t91 - store i64 %t89, ptr %t85 - br label %endif1479 -else1478: - %t92 = getelementptr inbounds %S.ast.Node, ptr %a46, i32 0, i32 0 - 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 - %t96 = call %S.ast.Node @finch.parser.parseBlock(ptr %t95) - %t97 = load i64, ptr %t94 - %t98 = add i64 %t97, 1 - call void @finch_arr_reserve(ptr %t93, i64 %t98, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t99 = load ptr, ptr %t93 - %t100 = getelementptr inbounds %S.ast.Node, ptr %t99, i64 %t97 - store %S.ast.Node %t96, ptr %t100 - store i64 %t98, ptr %t94 - %t101 = load %S.ast.Node, ptr %a46 - ret %S.ast.Node %t101 -endif1473: - %t102 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t102, ptr %a103 - 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 %then1483, label %endif1485 -then1483: + store %S.lexer.Token %t21, ptr %a22 + call void @finch.drop.S_lexer_Token(ptr %a22) + %t23 = getelementptr inbounds %S.ast.Node, ptr %a19, i32 0, i32 9 + %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t23, i32 0, i32 1 + %t25 = load ptr, ptr %a1 + %t26 = call %S.ast.Node @finch.parser.parseExpr(ptr %t25) + %t27 = load i64, ptr %t24 + %t28 = add i64 %t27, 1 + call void @finch_arr_reserve(ptr %t23, i64 %t28, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t29 = load ptr, ptr %t23 + %t30 = getelementptr inbounds %S.ast.Node, ptr %t29, i64 %t27 + store %S.ast.Node %t26, ptr %t30 + store i64 %t28, ptr %t24 + %t31 = getelementptr inbounds %S.ast.Node, ptr %a19, i32 0, i32 9 + %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %t31, i32 0, i32 1 + %t33 = load ptr, ptr %a1 + %t34 = call %S.ast.Node @finch.parser.parseBlock(ptr %t33) + %t35 = load i64, ptr %t32 + %t36 = add i64 %t35, 1 + call void @finch_arr_reserve(ptr %t31, i64 %t36, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t37 = load ptr, ptr %t31 + %t38 = getelementptr inbounds %S.ast.Node, ptr %t37, i64 %t35 + store %S.ast.Node %t34, ptr %t38 + store i64 %t36, ptr %t32 + %t39 = load %S.ast.Node, ptr %a19 + call void @finch_str_drop(ptr %a4) + ret %S.ast.Node %t39 +endif1531: + %t40 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t40, ptr %a41 + store { ptr, i64, i64 } { ptr @.str.875, i64 3, i64 0 }, ptr %a42 + %t43 = call i32 @finch_str_eq(ptr %a41, ptr %a42) + %t44 = icmp ne i32 %t43, 0 + br i1 %t44, label %then1532, label %endif1534 +then1532: + %t45 = load ptr, ptr %a1 + %t46 = call %S.ast.Node @finch.parser.node(ptr %t45, { ptr, i64, i64 } { ptr @.str.876, i64 3, i64 0 }) + store %S.ast.Node %t46, ptr %a47 + %t48 = load ptr, ptr %a1 + %t49 = call %S.lexer.Token @finch.parser.next(ptr %t48) + store %S.lexer.Token %t49, ptr %a50 + call void @finch.drop.S_lexer_Token(ptr %a50) + %t51 = load ptr, ptr %a1 + %t52 = call %S.lexer.Token @finch.parser.expect(ptr %t51, { ptr, i64, i64 } { ptr @.str.877, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.878, i64 20, i64 0 }) + %t53 = extractvalue %S.lexer.Token %t52, 1 + store { ptr, i64, i64 } %t53, ptr %a54 + call void @finch_str_copy(ptr %a55, ptr %a54) + %t56 = load { ptr, i64, i64 }, ptr %a55 + store %S.lexer.Token %t52, ptr %a57 + call void @finch.drop.S_lexer_Token(ptr %a57) + %t58 = getelementptr inbounds %S.ast.Node, ptr %a47, i32 0, i32 1 + %t59 = load { ptr, i64, i64 }, ptr %t58 + store { ptr, i64, i64 } %t56, ptr %t58 + store { ptr, i64, i64 } %t59, ptr %a60 + call void @finch_str_drop(ptr %a60) + %t61 = load ptr, ptr %a1 + %t62 = call i1 @finch.parser.accept(ptr %t61, { ptr, i64, i64 } { ptr @.str.879, i64 1, i64 0 }) + br i1 %t62, label %then1535, label %endif1537 +then1535: + %t63 = load ptr, ptr %a1 + %t64 = call %S.lexer.Token @finch.parser.expect(ptr %t63, { ptr, i64, i64 } { ptr @.str.880, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.881, i64 27, i64 0 }) + %t65 = extractvalue %S.lexer.Token %t64, 1 + store { ptr, i64, i64 } %t65, ptr %a66 + call void @finch_str_copy(ptr %a67, ptr %a66) + %t68 = load { ptr, i64, i64 }, ptr %a67 + store %S.lexer.Token %t64, ptr %a69 + call void @finch.drop.S_lexer_Token(ptr %a69) + %t70 = getelementptr inbounds %S.ast.Node, ptr %a47, i32 0, i32 4 + %t71 = load { ptr, i64, i64 }, ptr %t70 + store { ptr, i64, i64 } %t68, ptr %t70 + store { ptr, i64, i64 } %t71, ptr %a72 + call void @finch_str_drop(ptr %a72) + br label %endif1537 +endif1537: + %t73 = load ptr, ptr %a1 + %t74 = call %S.lexer.Token @finch.parser.expect(ptr %t73, { ptr, i64, i64 } { ptr @.str.882, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.883, i64 4, i64 0 }) + store %S.lexer.Token %t74, ptr %a75 + call void @finch.drop.S_lexer_Token(ptr %a75) + %t76 = getelementptr inbounds %S.ast.Node, ptr %a47, i32 0, i32 9 + %t77 = getelementptr inbounds { ptr, i64, i64 }, ptr %t76, i32 0, i32 1 + %t78 = load ptr, ptr %a1 + %t79 = call %S.ast.Node @finch.parser.parseExpr(ptr %t78) + %t80 = load i64, ptr %t77 + %t81 = add i64 %t80, 1 + call void @finch_arr_reserve(ptr %t76, i64 %t81, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t82 = load ptr, ptr %t76 + %t83 = getelementptr inbounds %S.ast.Node, ptr %t82, i64 %t80 + store %S.ast.Node %t79, ptr %t83 + store i64 %t81, ptr %t77 + %t84 = load ptr, ptr %a1 + %t85 = call i1 @finch.parser.accept(ptr %t84, { ptr, i64, i64 } { ptr @.str.884, i64 2, i64 0 }) + br i1 %t85, label %then1538, label %else1539 +then1538: + %t86 = getelementptr inbounds %S.ast.Node, ptr %a47, i32 0, i32 4 + %t87 = getelementptr inbounds { ptr, i64, i64 }, ptr %t86, i32 0, i32 1 + %t88 = load i64, ptr %t87 + %t89 = icmp sgt i64 %t88, 0 + br i1 %t89, label %then1541, label %endif1543 +then1541: + %t90 = load ptr, ptr %a1 + %t91 = load ptr, ptr %a1 + %t92 = call %S.lexer.Token @finch.parser.cur(ptr %t91) + call void @finch.parser.fail(ptr %t90, %S.lexer.Token %t92, { ptr, i64, i64 } { ptr @.str.885, i64 55, i64 0 }) + store %S.lexer.Token %t92, ptr %a93 + call void @finch.drop.S_lexer_Token(ptr %a93) + br label %endif1543 +endif1543: + %t94 = getelementptr inbounds %S.ast.Node, ptr %a47, i32 0, i32 9 + %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %t94, i32 0, i32 1 + %t96 = load ptr, ptr %a1 + %t97 = call %S.ast.Node @finch.parser.parseExpr(ptr %t96) + %t98 = load i64, ptr %t95 + %t99 = add i64 %t98, 1 + call void @finch_arr_reserve(ptr %t94, i64 %t99, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t100 = load ptr, ptr %t94 + %t101 = getelementptr inbounds %S.ast.Node, ptr %t100, i64 %t98 + store %S.ast.Node %t97, ptr %t101 + store i64 %t99, ptr %t95 + br label %endif1540 +else1539: + %t102 = getelementptr inbounds %S.ast.Node, ptr %a47, i32 0, i32 0 + %t103 = load { ptr, i64, i64 }, ptr %t102 + store { ptr, i64, i64 } { ptr @.str.886, i64 4, i64 0 }, ptr %t102 + store { ptr, i64, i64 } %t103, ptr %a104 + call void @finch_str_drop(ptr %a104) + br label %endif1540 +endif1540: + %t105 = getelementptr inbounds %S.ast.Node, ptr %a47, i32 0, i32 9 + %t106 = getelementptr inbounds { ptr, i64, i64 }, ptr %t105, i32 0, i32 1 %t107 = load ptr, ptr %a1 - %t108 = call %S.ast.Node @finch.parser.parseMatch(ptr %t107, i1 false) - ret %S.ast.Node %t108 -endif1485: - %t109 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t109, ptr %a110 - 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 %then1486, label %endif1488 -then1486: - %t114 = load ptr, ptr %a1 - %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) + %t108 = call %S.ast.Node @finch.parser.parseBlock(ptr %t107) + %t109 = load i64, ptr %t106 + %t110 = add i64 %t109, 1 + call void @finch_arr_reserve(ptr %t105, i64 %t110, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t111 = load ptr, ptr %t105 + %t112 = getelementptr inbounds %S.ast.Node, ptr %t111, i64 %t109 + store %S.ast.Node %t108, ptr %t112 + store i64 %t110, ptr %t106 + %t113 = load %S.ast.Node, ptr %a47 + call void @finch_str_drop(ptr %a4) + ret %S.ast.Node %t113 +endif1534: + %t114 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t114, ptr %a115 + store { ptr, i64, i64 } { ptr @.str.887, i64 5, i64 0 }, ptr %a116 + %t117 = call i32 @finch_str_eq(ptr %a115, ptr %a116) + %t118 = icmp ne i32 %t117, 0 + br i1 %t118, label %then1544, label %endif1546 +then1544: %t119 = load ptr, ptr %a1 - %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.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.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 + %t120 = call %S.ast.Node @finch.parser.parseMatch(ptr %t119, i1 false) + call void @finch_str_drop(ptr %a4) + ret %S.ast.Node %t120 +endif1546: + %t121 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t121, ptr %a122 + store { ptr, i64, i64 } { ptr @.str.888, i64 6, i64 0 }, ptr %a123 + %t124 = call i32 @finch_str_eq(ptr %a122, ptr %a123) + %t125 = icmp ne i32 %t124, 0 + br i1 %t125, label %then1547, label %endif1549 +then1547: + %t126 = load ptr, ptr %a1 + %t127 = call %S.ast.Node @finch.parser.node(ptr %t126, { ptr, i64, i64 } { ptr @.str.889, i64 6, i64 0 }) + store %S.ast.Node %t127, ptr %a128 %t129 = load ptr, ptr %a1 - %t130 = call %S.ast.Node @finch.parser.parseExpr(ptr %t129) - %t131 = load i64, ptr %t128 - %t132 = add i64 %t131, 1 - call void @finch_arr_reserve(ptr %t127, i64 %t132, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t133 = load ptr, ptr %t127 - %t134 = getelementptr inbounds %S.ast.Node, ptr %t133, i64 %t131 - store %S.ast.Node %t130, ptr %t134 - store i64 %t132, ptr %t128 - br label %endif1495 -endif1495: - %t135 = load %S.ast.Node, ptr %a116 - ret %S.ast.Node %t135 -endif1488: - %t136 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t136, ptr %a137 - 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.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.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.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) - store %S.ast.Node %t149, ptr %a150 - %t151 = load ptr, ptr %a1 - %t152 = call %S.lexer.Token @finch.parser.next(ptr %t151) - %t153 = load %S.ast.Node, ptr %a150 - ret %S.ast.Node %t153 -endif1502: - %t154 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t154, ptr %a155 - 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 %then1503, label %endif1505 -then1503: - %t159 = load ptr, ptr %a1 - %t160 = call %S.ast.Node @finch.parser.parseBlock(ptr %t159) - ret %S.ast.Node %t160 -endif1505: - %t161 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t161, ptr %a162 - 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 %then1506, label %endif1508 -then1506: - %t166 = load ptr, ptr %a1 - %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.887, i64 5, i64 0 }) - br i1 %t172, label %then1509, label %endif1511 -then1509: - %t173 = load ptr, ptr %a1 + %t130 = call %S.lexer.Token @finch.parser.next(ptr %t129) + store %S.lexer.Token %t130, ptr %a131 + call void @finch.drop.S_lexer_Token(ptr %a131) + %t132 = load ptr, ptr %a1 + %t133 = call i1 @finch.parser.at(ptr %t132, { ptr, i64, i64 } { ptr @.str.890, i64 1, i64 0 }) + %t134 = xor i1 %t133, true + br label %logic.from1550 +logic.from1550: + br i1 %t134, label %logic.rhs1551, label %logic.end1552 +logic.rhs1551: + %t135 = load ptr, ptr %a1 + %t136 = call %S.lexer.Token @finch.parser.cur(ptr %t135) + %t137 = extractvalue %S.lexer.Token %t136, 4 + store %S.lexer.Token %t136, ptr %a138 + call void @finch.drop.S_lexer_Token(ptr %a138) + %t139 = xor i1 %t137, true + br label %logic.rend1553 +logic.rend1553: + br label %logic.end1552 +logic.end1552: + %t140 = phi i1 [ false, %logic.from1550 ], [ %t139, %logic.rend1553 ] + br i1 %t140, label %then1554, label %endif1556 +then1554: + %t141 = getelementptr inbounds %S.ast.Node, ptr %a128, i32 0, i32 9 + %t142 = getelementptr inbounds { ptr, i64, i64 }, ptr %t141, i32 0, i32 1 + %t143 = load ptr, ptr %a1 + %t144 = call %S.ast.Node @finch.parser.parseExpr(ptr %t143) + %t145 = load i64, ptr %t142 + %t146 = add i64 %t145, 1 + call void @finch_arr_reserve(ptr %t141, i64 %t146, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t147 = load ptr, ptr %t141 + %t148 = getelementptr inbounds %S.ast.Node, ptr %t147, i64 %t145 + store %S.ast.Node %t144, ptr %t148 + store i64 %t146, ptr %t142 + br label %endif1556 +endif1556: + %t149 = load %S.ast.Node, ptr %a128 + call void @finch_str_drop(ptr %a4) + ret %S.ast.Node %t149 +endif1549: + %t150 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t150, ptr %a151 + store { ptr, i64, i64 } { ptr @.str.891, 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.from1557 +logic.from1557: + br i1 %t154, label %logic.end1559, label %logic.rhs1558 +logic.rhs1558: + %t155 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t155, ptr %a156 + store { ptr, i64, i64 } { ptr @.str.892, i64 8, i64 0 }, ptr %a157 + %t158 = call i32 @finch_str_eq(ptr %a156, ptr %a157) + %t159 = icmp ne i32 %t158, 0 + br label %logic.rend1560 +logic.rend1560: + br label %logic.end1559 +logic.end1559: + %t160 = phi i1 [ true, %logic.from1557 ], [ %t159, %logic.rend1560 ] + br i1 %t160, label %then1561, label %endif1563 +then1561: + %t161 = load ptr, ptr %a1 + %t162 = load { ptr, i64, i64 }, ptr %a4 + %t163 = call %S.ast.Node @finch.parser.node(ptr %t161, { ptr, i64, i64 } %t162) + store %S.ast.Node %t163, ptr %a164 + %t165 = load ptr, ptr %a1 + %t166 = call %S.lexer.Token @finch.parser.next(ptr %t165) + store %S.lexer.Token %t166, ptr %a167 + call void @finch.drop.S_lexer_Token(ptr %a167) + %t168 = load %S.ast.Node, ptr %a164 + call void @finch_str_drop(ptr %a4) + ret %S.ast.Node %t168 +endif1563: + %t169 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t169, ptr %a170 + store { ptr, i64, i64 } { ptr @.str.893, i64 1, i64 0 }, ptr %a171 + %t172 = call i32 @finch_str_eq(ptr %a170, ptr %a171) + %t173 = icmp ne i32 %t172, 0 + br i1 %t173, label %then1564, label %endif1566 +then1564: %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.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 - %t179 = call %S.ast.Node @finch.parser.parseStatement(ptr %t178) - %t180 = load i64, ptr %t177 - %t181 = add i64 %t180, 1 - call void @finch_arr_reserve(ptr %t176, i64 %t181, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t182 = load ptr, ptr %t176 - %t183 = getelementptr inbounds %S.ast.Node, ptr %t182, i64 %t180 - store %S.ast.Node %t179, ptr %t183 - store i64 %t181, ptr %t177 - %t184 = load %S.ast.Node, ptr %a168 - ret %S.ast.Node %t184 -endif1508: - %t185 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t185, ptr %a186 - 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.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.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.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.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.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: + %t175 = call %S.ast.Node @finch.parser.parseBlock(ptr %t174) + call void @finch_str_drop(ptr %a4) + ret %S.ast.Node %t175 +endif1566: + %t176 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t176, ptr %a177 + store { ptr, i64, i64 } { ptr @.str.894, i64 5, i64 0 }, ptr %a178 + %t179 = call i32 @finch_str_eq(ptr %a177, ptr %a178) + %t180 = icmp ne i32 %t179, 0 + br i1 %t180, label %then1567, label %endif1569 +then1567: + %t181 = load ptr, ptr %a1 + %t182 = call %S.ast.Node @finch.parser.node(ptr %t181, { ptr, i64, i64 } { ptr @.str.895, i64 5, i64 0 }) + store %S.ast.Node %t182, ptr %a183 + %t184 = load ptr, ptr %a1 + %t185 = call %S.lexer.Token @finch.parser.next(ptr %t184) + store %S.lexer.Token %t185, ptr %a186 + call void @finch.drop.S_lexer_Token(ptr %a186) + %t187 = load ptr, ptr %a1 + %t188 = call i1 @finch.parser.at(ptr %t187, { ptr, i64, i64 } { ptr @.str.896, i64 5, i64 0 }) + br i1 %t188, label %then1570, label %endif1572 +then1570: + %t189 = load ptr, ptr %a1 + %t190 = load ptr, ptr %a1 + %t191 = call %S.lexer.Token @finch.parser.cur(ptr %t190) + call void @finch.parser.fail(ptr %t189, %S.lexer.Token %t191, { ptr, i64, i64 } { ptr @.str.897, i64 33, i64 0 }) + store %S.lexer.Token %t191, ptr %a192 + call void @finch.drop.S_lexer_Token(ptr %a192) + br label %endif1572 +endif1572: + %t193 = getelementptr inbounds %S.ast.Node, ptr %a183, i32 0, i32 9 + %t194 = getelementptr inbounds { ptr, i64, i64 }, ptr %t193, i32 0, i32 1 + %t195 = load ptr, ptr %a1 + %t196 = call %S.ast.Node @finch.parser.parseStatement(ptr %t195) + %t197 = load i64, ptr %t194 + %t198 = add i64 %t197, 1 + call void @finch_arr_reserve(ptr %t193, i64 %t198, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t199 = load ptr, ptr %t193 + %t200 = getelementptr inbounds %S.ast.Node, ptr %t199, i64 %t197 + store %S.ast.Node %t196, ptr %t200 + store i64 %t198, ptr %t194 + %t201 = load %S.ast.Node, ptr %a183 + call void @finch_str_drop(ptr %a4) + ret %S.ast.Node %t201 +endif1569: %t202 = load { ptr, i64, i64 }, ptr %a4 store { ptr, i64, i64 } %t202, ptr %a203 - store { ptr, i64, i64 } { ptr @.str.892, i64 4, i64 0 }, ptr %a204 + store { ptr, i64, i64 } { ptr @.str.898, i64 2, i64 0 }, ptr %a204 %t205 = call i32 @finch_str_eq(ptr %a203, ptr %a204) %t206 = icmp ne i32 %t205, 0 - 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.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.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 %endif1526 -endif1526: - %t220 = load ptr, ptr %a1 - %t221 = call i1 @finch.parser.atDeclaration(ptr %t220) - 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.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 - %t226 = load ptr, ptr %a1 - %t227 = call %S.ast.Type @finch.parser.parseType(ptr %t226) - %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.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) - %t234 = load { ptr, i64, i64 }, ptr %a233 - %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.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 - %t241 = call %S.ast.Node @finch.parser.parseExpr(ptr %t240) - %t242 = load i64, ptr %t239 - %t243 = add i64 %t242, 1 - call void @finch_arr_reserve(ptr %t238, i64 %t243, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t244 = load ptr, ptr %t238 - %t245 = getelementptr inbounds %S.ast.Node, ptr %t244, i64 %t242 - store %S.ast.Node %t241, ptr %t245 - store i64 %t243, ptr %t239 - br label %endif1532 -endif1532: - %t246 = load %S.ast.Node, ptr %a224 - ret %S.ast.Node %t246 -endif1529: - %t247 = load ptr, ptr %a1 - %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.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.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.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) - %t261 = extractvalue %S.lexer.Token %t260, 1 - store { ptr, i64, i64 } %t261, ptr %a262 - call void @finch_str_copy(ptr %a263, ptr %a262) - %t264 = load { ptr, i64, i64 }, ptr %a263 - %t265 = getelementptr inbounds %S.ast.Node, ptr %a258, i32 0, i32 1 - store { ptr, i64, i64 } %t264, ptr %t265 - %t266 = load ptr, ptr %a1 - %t267 = call %S.lexer.Token @finch.parser.next(ptr %t266) - %t268 = getelementptr inbounds %S.ast.Node, ptr %a258, i32 0, i32 9 - %t269 = getelementptr inbounds { ptr, i64, i64 }, ptr %t268, i32 0, i32 1 - %t270 = load ptr, ptr %a1 - %t271 = call %S.ast.Node @finch.parser.parseExpr(ptr %t270) - %t272 = load i64, ptr %t269 - %t273 = add i64 %t272, 1 - call void @finch_arr_reserve(ptr %t268, i64 %t273, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t274 = load ptr, ptr %t268 - %t275 = getelementptr inbounds %S.ast.Node, ptr %t274, i64 %t272 - store %S.ast.Node %t271, ptr %t275 - store i64 %t273, ptr %t269 - %t276 = load %S.ast.Node, ptr %a258 - ret %S.ast.Node %t276 -endif1539: - %t277 = load ptr, ptr %a1 - %t278 = call %S.lexer.Token @finch.parser.cur(ptr %t277) - store %S.lexer.Token %t278, ptr %a279 - %t280 = load ptr, ptr %a1 - %t281 = call %S.ast.Node @finch.parser.parseExpr(ptr %t280) - store %S.ast.Node %t281, ptr %a282 - %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.902, i64 1, i64 0 }, ptr %t285 - %t286 = getelementptr inbounds { ptr, i64, i64 }, ptr %t284, i64 1 - 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.904, i64 2, i64 0 }, ptr %t287 - %t288 = getelementptr inbounds { ptr, i64, i64 }, ptr %t284, i64 3 - 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.906, i64 2, i64 0 }, ptr %t289 - %t290 = getelementptr inbounds { ptr, i64, i64 }, ptr %t284, i64 5 - 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 - store { ptr, i64, i64 } %t293, ptr %a294 - %t295 = getelementptr inbounds { ptr, i64, i64 }, ptr %a294, i32 0, i32 1 - %t296 = load ptr, ptr %a1 - %t297 = call { ptr, i64, i64 } @finch.parser.curKind(ptr %t296) - store i64 -1, ptr %a298 - %t299 = load i64, ptr %t295 - %t300 = load ptr, ptr %a294 - store i64 0, ptr %a301 - br label %find.cond1540 -find.cond1540: - %t302 = load i64, ptr %a301 - %t303 = icmp slt i64 %t302, %t299 - 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.hit1542, label %find.next1543 -find.hit1542: - store i64 %t302, ptr %a298 - br label %find.end1544 -find.next1543: - %t310 = add i64 %t302, 1 - store i64 %t310, ptr %a301 - br label %find.cond1540 -find.end1544: - %t311 = load i64, ptr %a298 - %t312 = icmp sge i64 %t311, 0 - 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.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.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.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.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.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.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.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.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 - %t342 = getelementptr inbounds %S.lexer.Token, ptr %a279, i32 0, i32 3 - %t343 = load i64, ptr %t342 - %t344 = insertvalue %S.ast.Node %t341, i64 %t343, 12 - %t345 = load ptr, ptr %a1 - %t346 = icmp eq ptr %t345, null - br i1 %t346, label %panic1563, label %ok1564 -panic1563: - call void @finch_panic(ptr @.str.913, i64 536, ptr @.str.914) - unreachable -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 - store %S.ast.Node %t349, ptr %a350 - %t351 = load ptr, ptr %a1 - %t352 = call %S.lexer.Token @finch.parser.next(ptr %t351) - %t353 = extractvalue %S.lexer.Token %t352, 0 - store { ptr, i64, i64 } %t353, ptr %a354 - call void @finch_str_copy(ptr %a355, ptr %a354) - %t356 = load { ptr, i64, i64 }, ptr %a355 - %t357 = getelementptr inbounds %S.ast.Node, ptr %a350, i32 0, i32 1 - store { ptr, i64, i64 } %t356, ptr %t357 - %t358 = getelementptr inbounds %S.ast.Node, ptr %a350, i32 0, i32 9 - %t359 = getelementptr inbounds { ptr, i64, i64 }, ptr %t358, i32 0, i32 1 - %t360 = load %S.ast.Node, ptr %a282 - store %S.ast.Node %t360, ptr %a361 - call void @finch.copy.S_ast_Node(ptr %a362, ptr %a361) - %t363 = load %S.ast.Node, ptr %a362 - %t364 = load i64, ptr %t359 - %t365 = add i64 %t364, 1 - call void @finch_arr_reserve(ptr %t358, i64 %t365, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t366 = load ptr, ptr %t358 - %t367 = getelementptr inbounds %S.ast.Node, ptr %t366, i64 %t364 - store %S.ast.Node %t363, ptr %t367 - store i64 %t365, ptr %t359 - %t368 = getelementptr inbounds %S.ast.Node, ptr %a350, i32 0, i32 9 - %t369 = getelementptr inbounds { ptr, i64, i64 }, ptr %t368, i32 0, i32 1 - %t370 = load ptr, ptr %a1 - %t371 = call %S.ast.Node @finch.parser.parseExpr(ptr %t370) - %t372 = load i64, ptr %t369 - %t373 = add i64 %t372, 1 - call void @finch_arr_reserve(ptr %t368, i64 %t373, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t374 = load ptr, ptr %t368 - %t375 = getelementptr inbounds %S.ast.Node, ptr %t374, i64 %t372 - store %S.ast.Node %t371, ptr %t375 - store i64 %t373, ptr %t369 - %t376 = load %S.ast.Node, ptr %a350 - ret %S.ast.Node %t376 -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.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.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.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.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.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.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 + br i1 %t206, label %logic.end1575, label %logic.rhs1574 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.918, i64 2, i64 0 }, ptr %a400 - %t401 = call i32 @finch_str_eq(ptr %a399, ptr %a400) - %t402 = icmp eq i32 %t401, 0 + %t207 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t207, ptr %a208 + store { ptr, i64, i64 } { ptr @.str.899, 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.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.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 - %t410 = getelementptr inbounds %S.lexer.Token, ptr %a279, i32 0, i32 3 - %t411 = load i64, ptr %t410 - %t412 = insertvalue %S.ast.Node %t409, i64 %t411, 12 - %t413 = load ptr, ptr %a1 - %t414 = icmp eq ptr %t413, null - br i1 %t414, label %panic1580, label %ok1581 -panic1580: - call void @finch_panic(ptr @.str.921, i64 545, ptr @.str.922) + %t212 = phi i1 [ true, %logic.from1573 ], [ %t211, %logic.rend1576 ] + br label %logic.from1577 +logic.from1577: + br i1 %t212, label %logic.end1579, label %logic.rhs1578 +logic.rhs1578: + %t213 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t213, ptr %a214 + store { ptr, i64, i64 } { ptr @.str.900, i64 6, i64 0 }, ptr %a215 + %t216 = call i32 @finch_str_eq(ptr %a214, ptr %a215) + %t217 = icmp ne i32 %t216, 0 + br label %logic.rend1580 +logic.rend1580: + br label %logic.end1579 +logic.end1579: + %t218 = phi i1 [ true, %logic.from1577 ], [ %t217, %logic.rend1580 ] + br label %logic.from1581 +logic.from1581: + br i1 %t218, label %logic.end1583, label %logic.rhs1582 +logic.rhs1582: + %t219 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t219, ptr %a220 + store { ptr, i64, i64 } { ptr @.str.901, i64 4, i64 0 }, ptr %a221 + %t222 = call i32 @finch_str_eq(ptr %a220, ptr %a221) + %t223 = icmp ne i32 %t222, 0 + br label %logic.rend1584 +logic.rend1584: + br label %logic.end1583 +logic.end1583: + %t224 = phi i1 [ true, %logic.from1581 ], [ %t223, %logic.rend1584 ] + br i1 %t224, label %then1585, label %endif1587 +then1585: + %t225 = load ptr, ptr %a1 + %t226 = load ptr, ptr %a1 + %t227 = call %S.lexer.Token @finch.parser.cur(ptr %t226) + %t228 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } { ptr @.str.902, i64 1, i64 0 }, ptr %a230 + store { ptr, i64, i64 } %t228, ptr %a231 + call void @finch_str_concat(ptr %a229, ptr %a230, ptr %a231) + %t232 = load { ptr, i64, i64 }, ptr %a229 + store { ptr, i64, i64 } %t232, ptr %a234 + store { ptr, i64, i64 } { ptr @.str.903, i64 48, i64 0 }, ptr %a235 + call void @finch_str_concat(ptr %a233, ptr %a234, ptr %a235) + store { ptr, i64, i64 } %t232, ptr %a236 + call void @finch_str_drop(ptr %a236) + %t237 = load { ptr, i64, i64 }, ptr %a233 + call void @finch.parser.fail(ptr %t225, %S.lexer.Token %t227, { ptr, i64, i64 } %t237) + store %S.lexer.Token %t227, ptr %a238 + call void @finch.drop.S_lexer_Token(ptr %a238) + store { ptr, i64, i64 } %t237, ptr %a239 + call void @finch_str_drop(ptr %a239) + br label %endif1587 +endif1587: + %t240 = load ptr, ptr %a1 + %t241 = call i1 @finch.parser.atDeclaration(ptr %t240) + br i1 %t241, label %then1588, label %endif1590 +then1588: + %t242 = load ptr, ptr %a1 + %t243 = call %S.ast.Node @finch.parser.node(ptr %t242, { ptr, i64, i64 } { ptr @.str.904, i64 4, i64 0 }) + store %S.ast.Node %t243, ptr %a244 + %t245 = getelementptr inbounds %S.ast.Node, ptr %a244, i32 0, i32 6 + store i1 true, ptr %t245 + %t246 = load ptr, ptr %a1 + %t247 = call %S.ast.Type @finch.parser.parseType(ptr %t246) + %t248 = getelementptr inbounds %S.ast.Node, ptr %a244, i32 0, i32 5 + %t249 = load %S.ast.Type, ptr %t248 + store %S.ast.Type %t247, ptr %t248 + store %S.ast.Type %t249, ptr %a250 + call void @finch.drop.S_ast_Type(ptr %a250) + %t251 = load ptr, ptr %a1 + %t252 = call %S.lexer.Token @finch.parser.expect(ptr %t251, { ptr, i64, i64 } { ptr @.str.905, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.906, i64 15, i64 0 }) + %t253 = extractvalue %S.lexer.Token %t252, 1 + store { ptr, i64, i64 } %t253, ptr %a254 + call void @finch_str_copy(ptr %a255, ptr %a254) + %t256 = load { ptr, i64, i64 }, ptr %a255 + store %S.lexer.Token %t252, ptr %a257 + call void @finch.drop.S_lexer_Token(ptr %a257) + %t258 = getelementptr inbounds %S.ast.Node, ptr %a244, i32 0, i32 1 + %t259 = load { ptr, i64, i64 }, ptr %t258 + store { ptr, i64, i64 } %t256, ptr %t258 + store { ptr, i64, i64 } %t259, ptr %a260 + call void @finch_str_drop(ptr %a260) + %t261 = load ptr, ptr %a1 + %t262 = call i1 @finch.parser.accept(ptr %t261, { ptr, i64, i64 } { ptr @.str.907, i64 1, i64 0 }) + br i1 %t262, label %then1591, label %endif1593 +then1591: + %t263 = getelementptr inbounds %S.ast.Node, ptr %a244, i32 0, i32 9 + %t264 = getelementptr inbounds { ptr, i64, i64 }, ptr %t263, i32 0, i32 1 + %t265 = load ptr, ptr %a1 + %t266 = call %S.ast.Node @finch.parser.parseExpr(ptr %t265) + %t267 = load i64, ptr %t264 + %t268 = add i64 %t267, 1 + call void @finch_arr_reserve(ptr %t263, i64 %t268, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t269 = load ptr, ptr %t263 + %t270 = getelementptr inbounds %S.ast.Node, ptr %t269, i64 %t267 + store %S.ast.Node %t266, ptr %t270 + store i64 %t268, ptr %t264 + br label %endif1593 +endif1593: + %t271 = load %S.ast.Node, ptr %a244 + call void @finch_str_drop(ptr %a4) + ret %S.ast.Node %t271 +endif1590: + %t272 = load ptr, ptr %a1 + %t273 = call i1 @finch.parser.at(ptr %t272, { ptr, i64, i64 } { ptr @.str.908, i64 5, i64 0 }) + br label %logic.from1594 +logic.from1594: + br i1 %t273, label %logic.rhs1595, label %logic.end1596 +logic.rhs1595: + %t274 = load ptr, ptr %a1 + %t275 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t274, i64 1) + store { ptr, i64, i64 } %t275, ptr %a276 + store { ptr, i64, i64 } { ptr @.str.909, i64 2, i64 0 }, ptr %a277 + %t278 = call i32 @finch_str_eq(ptr %a276, ptr %a277) + %t279 = icmp ne i32 %t278, 0 + store { ptr, i64, i64 } %t275, ptr %a280 + call void @finch_str_drop(ptr %a280) + br label %logic.rend1597 +logic.rend1597: + br label %logic.end1596 +logic.end1596: + %t281 = phi i1 [ false, %logic.from1594 ], [ %t279, %logic.rend1597 ] + br i1 %t281, label %then1598, label %endif1600 +then1598: + %t282 = load ptr, ptr %a1 + %t283 = call %S.ast.Node @finch.parser.node(ptr %t282, { ptr, i64, i64 } { ptr @.str.910, i64 4, i64 0 }) + store %S.ast.Node %t283, ptr %a284 + %t285 = load ptr, ptr %a1 + %t286 = call %S.lexer.Token @finch.parser.next(ptr %t285) + %t287 = extractvalue %S.lexer.Token %t286, 1 + store { ptr, i64, i64 } %t287, ptr %a288 + call void @finch_str_copy(ptr %a289, ptr %a288) + %t290 = load { ptr, i64, i64 }, ptr %a289 + store %S.lexer.Token %t286, ptr %a291 + call void @finch.drop.S_lexer_Token(ptr %a291) + %t292 = getelementptr inbounds %S.ast.Node, ptr %a284, i32 0, i32 1 + %t293 = load { ptr, i64, i64 }, ptr %t292 + store { ptr, i64, i64 } %t290, ptr %t292 + store { ptr, i64, i64 } %t293, ptr %a294 + call void @finch_str_drop(ptr %a294) + %t295 = load ptr, ptr %a1 + %t296 = call %S.lexer.Token @finch.parser.next(ptr %t295) + store %S.lexer.Token %t296, ptr %a297 + call void @finch.drop.S_lexer_Token(ptr %a297) + %t298 = getelementptr inbounds %S.ast.Node, ptr %a284, i32 0, i32 9 + %t299 = getelementptr inbounds { ptr, i64, i64 }, ptr %t298, i32 0, i32 1 + %t300 = load ptr, ptr %a1 + %t301 = call %S.ast.Node @finch.parser.parseExpr(ptr %t300) + %t302 = load i64, ptr %t299 + %t303 = add i64 %t302, 1 + call void @finch_arr_reserve(ptr %t298, i64 %t303, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t304 = load ptr, ptr %t298 + %t305 = getelementptr inbounds %S.ast.Node, ptr %t304, i64 %t302 + store %S.ast.Node %t301, ptr %t305 + store i64 %t303, ptr %t299 + %t306 = load %S.ast.Node, ptr %a284 + call void @finch_str_drop(ptr %a4) + ret %S.ast.Node %t306 +endif1600: + %t307 = load ptr, ptr %a1 + %t308 = call %S.lexer.Token @finch.parser.cur(ptr %t307) + store %S.lexer.Token %t308, ptr %a309 + %t310 = load ptr, ptr %a1 + %t311 = call %S.ast.Node @finch.parser.parseExpr(ptr %t310) + store %S.ast.Node %t311, ptr %a312 + %t313 = mul i64 6, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) + %t314 = call ptr @finch_alloc(i64 %t313) + %t315 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i64 0 + store { ptr, i64, i64 } { ptr @.str.911, i64 1, i64 0 }, ptr %t315 + %t316 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i64 1 + store { ptr, i64, i64 } { ptr @.str.912, i64 2, i64 0 }, ptr %t316 + %t317 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i64 2 + store { ptr, i64, i64 } { ptr @.str.913, i64 2, i64 0 }, ptr %t317 + %t318 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i64 3 + store { ptr, i64, i64 } { ptr @.str.914, i64 2, i64 0 }, ptr %t318 + %t319 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i64 4 + store { ptr, i64, i64 } { ptr @.str.915, i64 2, i64 0 }, ptr %t319 + %t320 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i64 5 + store { ptr, i64, i64 } { ptr @.str.916, i64 2, i64 0 }, ptr %t320 + %t321 = insertvalue { ptr, i64, i64 } undef, ptr %t314, 0 + %t322 = insertvalue { ptr, i64, i64 } %t321, i64 6, 1 + %t323 = insertvalue { ptr, i64, i64 } %t322, i64 6, 2 + store { ptr, i64, i64 } %t323, ptr %a324 + %t325 = getelementptr inbounds { ptr, i64, i64 }, ptr %a324, i32 0, i32 1 + %t326 = load ptr, ptr %a1 + %t327 = call { ptr, i64, i64 } @finch.parser.curKind(ptr %t326) + store i64 -1, ptr %a328 + %t329 = load i64, ptr %t325 + %t330 = load ptr, ptr %a324 + store i64 0, ptr %a331 + br label %find.cond1601 +find.cond1601: + %t332 = load i64, ptr %a331 + %t333 = icmp slt i64 %t332, %t329 + br i1 %t333, label %find.body1602, label %find.end1605 +find.body1602: + %t334 = getelementptr inbounds { ptr, i64, i64 }, ptr %t330, i64 %t332 + %t335 = load { ptr, i64, i64 }, ptr %t334 + store { ptr, i64, i64 } %t335, ptr %a336 + store { ptr, i64, i64 } %t327, ptr %a337 + %t338 = call i32 @finch_str_eq(ptr %a336, ptr %a337) + %t339 = icmp ne i32 %t338, 0 + br i1 %t339, label %find.hit1603, label %find.next1604 +find.hit1603: + store i64 %t332, ptr %a328 + br label %find.end1605 +find.next1604: + %t340 = add i64 %t332, 1 + store i64 %t340, ptr %a331 + br label %find.cond1601 +find.end1605: + store { ptr, i64, i64 } %t327, ptr %a341 + call void @finch_str_drop(ptr %a341) + %t342 = load i64, ptr %a328 + %t343 = icmp sge i64 %t342, 0 + br label %logic.from1606 +logic.from1606: + br i1 %t343, label %logic.rhs1607, label %logic.end1608 +logic.rhs1607: + %t344 = load ptr, ptr %a1 + %t345 = call i1 @finch.parser.sameLine(ptr %t344) + br label %logic.rend1609 +logic.rend1609: + br label %logic.end1608 +logic.end1608: + %t346 = phi i1 [ false, %logic.from1606 ], [ %t345, %logic.rend1609 ] + br i1 %t346, label %then1610, label %endif1612 +then1610: + %t347 = getelementptr inbounds %S.ast.Node, ptr %a312, i32 0, i32 0 + %t348 = load { ptr, i64, i64 }, ptr %t347 + store { ptr, i64, i64 } %t348, ptr %a349 + store { ptr, i64, i64 } { ptr @.str.917, i64 3, i64 0 }, ptr %a350 + %t351 = call i32 @finch_str_eq(ptr %a349, ptr %a350) + %t352 = icmp eq i32 %t351, 0 + br label %logic.from1613 +logic.from1613: + br i1 %t352, label %logic.rhs1614, label %logic.end1615 +logic.rhs1614: + %t353 = getelementptr inbounds %S.ast.Node, ptr %a312, i32 0, i32 0 + %t354 = load { ptr, i64, i64 }, ptr %t353 + store { ptr, i64, i64 } %t354, ptr %a355 + store { ptr, i64, i64 } { ptr @.str.918, i64 6, i64 0 }, ptr %a356 + %t357 = call i32 @finch_str_eq(ptr %a355, ptr %a356) + %t358 = icmp eq i32 %t357, 0 + br label %logic.rend1616 +logic.rend1616: + br label %logic.end1615 +logic.end1615: + %t359 = phi i1 [ false, %logic.from1613 ], [ %t358, %logic.rend1616 ] + br label %logic.from1617 +logic.from1617: + br i1 %t359, label %logic.rhs1618, label %logic.end1619 +logic.rhs1618: + %t360 = getelementptr inbounds %S.ast.Node, ptr %a312, i32 0, i32 0 + %t361 = load { ptr, i64, i64 }, ptr %t360 + store { ptr, i64, i64 } %t361, ptr %a362 + store { ptr, i64, i64 } { ptr @.str.919, i64 5, i64 0 }, ptr %a363 + %t364 = call i32 @finch_str_eq(ptr %a362, ptr %a363) + %t365 = icmp eq i32 %t364, 0 + br label %logic.rend1620 +logic.rend1620: + br label %logic.end1619 +logic.end1619: + %t366 = phi i1 [ false, %logic.from1617 ], [ %t365, %logic.rend1620 ] + br i1 %t366, label %then1621, label %endif1623 +then1621: + %t367 = load ptr, ptr %a1 + %t368 = load %S.lexer.Token, ptr %a309 + call void @finch.parser.fail(ptr %t367, %S.lexer.Token %t368, { ptr, i64, i64 } { ptr @.str.920, i64 66, i64 0 }) + br label %endif1623 +endif1623: + %t369 = insertvalue %S.ast.Node zeroinitializer, { ptr, i64, i64 } { ptr @.str.921, i64 6, i64 0 }, 0 + %t370 = getelementptr inbounds %S.lexer.Token, ptr %a309, i32 0, i32 2 + %t371 = load i64, ptr %t370 + %t372 = insertvalue %S.ast.Node %t369, i64 %t371, 11 + %t373 = getelementptr inbounds %S.lexer.Token, ptr %a309, i32 0, i32 3 + %t374 = load i64, ptr %t373 + %t375 = insertvalue %S.ast.Node %t372, i64 %t374, 12 + %t376 = load ptr, ptr %a1 + %t377 = icmp eq ptr %t376, null + br i1 %t377, label %panic1624, label %ok1625 +panic1624: + call void @finch_panic(ptr @.str.922, i64 536, ptr @.str.923) unreachable -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 - store %S.ast.Node %t417, ptr %a418 - %t419 = getelementptr inbounds %S.ast.Node, ptr %a418, i32 0, i32 9 - %t420 = getelementptr inbounds { ptr, i64, i64 }, ptr %t419, i32 0, i32 1 - %t421 = load %S.ast.Node, ptr %a282 - store %S.ast.Node %t421, ptr %a422 - call void @finch.copy.S_ast_Node(ptr %a423, ptr %a422) - %t424 = load %S.ast.Node, ptr %a423 - %t425 = load i64, ptr %t420 - %t426 = add i64 %t425, 1 - call void @finch_arr_reserve(ptr %t419, i64 %t426, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t427 = load ptr, ptr %t419 - %t428 = getelementptr inbounds %S.ast.Node, ptr %t427, i64 %t425 - store %S.ast.Node %t424, ptr %t428 - store i64 %t426, ptr %t420 - %t429 = load %S.ast.Node, ptr %a418 - 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 - ret %S.ast.Node %t432 +ok1625: + %t378 = getelementptr inbounds %S.parser.Parser, ptr %t376, i32 0, i32 3 + %t379 = load i64, ptr %t378 + %t380 = insertvalue %S.ast.Node %t375, i64 %t379, 13 + store %S.ast.Node %t380, ptr %a381 + %t382 = load ptr, ptr %a1 + %t383 = call %S.lexer.Token @finch.parser.next(ptr %t382) + %t384 = extractvalue %S.lexer.Token %t383, 0 + store { ptr, i64, i64 } %t384, ptr %a385 + call void @finch_str_copy(ptr %a386, ptr %a385) + %t387 = load { ptr, i64, i64 }, ptr %a386 + store %S.lexer.Token %t383, ptr %a388 + call void @finch.drop.S_lexer_Token(ptr %a388) + %t389 = getelementptr inbounds %S.ast.Node, ptr %a381, i32 0, i32 1 + %t390 = load { ptr, i64, i64 }, ptr %t389 + store { ptr, i64, i64 } %t387, ptr %t389 + store { ptr, i64, i64 } %t390, ptr %a391 + call void @finch_str_drop(ptr %a391) + %t392 = getelementptr inbounds %S.ast.Node, ptr %a381, i32 0, i32 9 + %t393 = getelementptr inbounds { ptr, i64, i64 }, ptr %t392, i32 0, i32 1 + %t394 = load %S.ast.Node, ptr %a312 + store %S.ast.Node %t394, ptr %a395 + call void @finch.copy.S_ast_Node(ptr %a396, ptr %a395) + %t397 = load %S.ast.Node, ptr %a396 + %t398 = load i64, ptr %t393 + %t399 = add i64 %t398, 1 + call void @finch_arr_reserve(ptr %t392, i64 %t399, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t400 = load ptr, ptr %t392 + %t401 = getelementptr inbounds %S.ast.Node, ptr %t400, i64 %t398 + store %S.ast.Node %t397, ptr %t401 + store i64 %t399, ptr %t393 + %t402 = getelementptr inbounds %S.ast.Node, ptr %a381, i32 0, i32 9 + %t403 = getelementptr inbounds { ptr, i64, i64 }, ptr %t402, i32 0, i32 1 + %t404 = load ptr, ptr %a1 + %t405 = call %S.ast.Node @finch.parser.parseExpr(ptr %t404) + %t406 = load i64, ptr %t403 + %t407 = add i64 %t406, 1 + call void @finch_arr_reserve(ptr %t402, i64 %t407, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t408 = load ptr, ptr %t402 + %t409 = getelementptr inbounds %S.ast.Node, ptr %t408, i64 %t406 + store %S.ast.Node %t405, ptr %t409 + store i64 %t407, ptr %t403 + %t410 = load %S.ast.Node, ptr %a381 + call void @finch.drop.arr_str(ptr %a324) + call void @finch.drop.S_ast_Node(ptr %a312) + call void @finch.drop.S_lexer_Token(ptr %a309) + call void @finch_str_drop(ptr %a4) + ret %S.ast.Node %t410 +endif1612: + %t411 = getelementptr inbounds %S.ast.Node, ptr %a312, i32 0, i32 0 + %t412 = load { ptr, i64, i64 }, ptr %t411 + store { ptr, i64, i64 } %t412, ptr %a413 + store { ptr, i64, i64 } { ptr @.str.924, i64 4, i64 0 }, ptr %a414 + %t415 = call i32 @finch_str_eq(ptr %a413, ptr %a414) + %t416 = icmp eq i32 %t415, 0 + br label %logic.from1626 +logic.from1626: + br i1 %t416, label %logic.rhs1627, label %logic.end1628 +logic.rhs1627: + %t417 = getelementptr inbounds %S.ast.Node, ptr %a312, i32 0, i32 0 + %t418 = load { ptr, i64, i64 }, ptr %t417 + store { ptr, i64, i64 } %t418, ptr %a419 + store { ptr, i64, i64 } { ptr @.str.925, i64 6, i64 0 }, ptr %a420 + %t421 = call i32 @finch_str_eq(ptr %a419, ptr %a420) + %t422 = icmp eq i32 %t421, 0 + br label %logic.rend1629 +logic.rend1629: + br label %logic.end1628 +logic.end1628: + %t423 = phi i1 [ false, %logic.from1626 ], [ %t422, %logic.rend1629 ] + br label %logic.from1630 +logic.from1630: + br i1 %t423, label %logic.rhs1631, label %logic.end1632 +logic.rhs1631: + %t424 = getelementptr inbounds %S.ast.Node, ptr %a312, i32 0, i32 0 + %t425 = load { ptr, i64, i64 }, ptr %t424 + store { ptr, i64, i64 } %t425, ptr %a426 + store { ptr, i64, i64 } { ptr @.str.926, i64 3, i64 0 }, ptr %a427 + %t428 = call i32 @finch_str_eq(ptr %a426, ptr %a427) + %t429 = icmp eq i32 %t428, 0 + br label %logic.rend1633 +logic.rend1633: + br label %logic.end1632 +logic.end1632: + %t430 = phi i1 [ false, %logic.from1630 ], [ %t429, %logic.rend1633 ] + br label %logic.from1634 +logic.from1634: + br i1 %t430, label %logic.rhs1635, label %logic.end1636 +logic.rhs1635: + %t431 = getelementptr inbounds %S.ast.Node, ptr %a312, i32 0, i32 0 + %t432 = load { ptr, i64, i64 }, ptr %t431 + store { ptr, i64, i64 } %t432, ptr %a433 + store { ptr, i64, i64 } { ptr @.str.927, i64 2, i64 0 }, ptr %a434 + %t435 = call i32 @finch_str_eq(ptr %a433, ptr %a434) + %t436 = icmp eq i32 %t435, 0 + br label %logic.rend1637 +logic.rend1637: + br label %logic.end1636 +logic.end1636: + %t437 = phi i1 [ false, %logic.from1634 ], [ %t436, %logic.rend1637 ] + br i1 %t437, label %then1638, label %endif1640 +then1638: + %t438 = load ptr, ptr %a1 + %t439 = load %S.lexer.Token, ptr %a309 + call void @finch.parser.fail(ptr %t438, %S.lexer.Token %t439, { ptr, i64, i64 } { ptr @.str.928, i64 37, i64 0 }) + br label %endif1640 +endif1640: + %t440 = insertvalue %S.ast.Node zeroinitializer, { ptr, i64, i64 } { ptr @.str.929, i64 4, i64 0 }, 0 + %t441 = getelementptr inbounds %S.lexer.Token, ptr %a309, i32 0, i32 2 + %t442 = load i64, ptr %t441 + %t443 = insertvalue %S.ast.Node %t440, i64 %t442, 11 + %t444 = getelementptr inbounds %S.lexer.Token, ptr %a309, i32 0, i32 3 + %t445 = load i64, ptr %t444 + %t446 = insertvalue %S.ast.Node %t443, i64 %t445, 12 + %t447 = load ptr, ptr %a1 + %t448 = icmp eq ptr %t447, null + br i1 %t448, label %panic1641, label %ok1642 +panic1641: + call void @finch_panic(ptr @.str.930, i64 545, ptr @.str.931) + unreachable +ok1642: + %t449 = getelementptr inbounds %S.parser.Parser, ptr %t447, i32 0, i32 3 + %t450 = load i64, ptr %t449 + %t451 = insertvalue %S.ast.Node %t446, i64 %t450, 13 + store %S.ast.Node %t451, ptr %a452 + %t453 = getelementptr inbounds %S.ast.Node, ptr %a452, i32 0, i32 9 + %t454 = getelementptr inbounds { ptr, i64, i64 }, ptr %t453, i32 0, i32 1 + %t455 = load %S.ast.Node, ptr %a312 + store %S.ast.Node %t455, ptr %a456 + call void @finch.copy.S_ast_Node(ptr %a457, ptr %a456) + %t458 = load %S.ast.Node, ptr %a457 + %t459 = load i64, ptr %t454 + %t460 = add i64 %t459, 1 + call void @finch_arr_reserve(ptr %t453, i64 %t460, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t461 = load ptr, ptr %t453 + %t462 = getelementptr inbounds %S.ast.Node, ptr %t461, i64 %t459 + store %S.ast.Node %t458, ptr %t462 + store i64 %t460, ptr %t454 + %t463 = load %S.ast.Node, ptr %a452 + call void @finch.drop.arr_str(ptr %a324) + call void @finch.drop.S_ast_Node(ptr %a312) + call void @finch.drop.S_lexer_Token(ptr %a309) + call void @finch_str_drop(ptr %a4) + ret %S.ast.Node %t463 } define internal %S.ast.Node @finch.parser.parseIf(ptr %p0) { entry: %a1 = alloca ptr, align 16 %a4 = alloca %S.ast.Node, align 16 - %a44 = alloca %S.ast.Node, align 16 - %a45 = alloca %S.ast.Node, align 16 + %a7 = alloca %S.lexer.Token, 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.923, i64 2, i64 0 }) + %t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.932, 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.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 - %t10 = call %S.ast.Node @finch.parser.parseExpr(ptr %t9) - %t11 = load i64, ptr %t8 - %t12 = add i64 %t11, 1 - call void @finch_arr_reserve(ptr %t7, i64 %t12, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t13 = load ptr, ptr %t7 - %t14 = getelementptr inbounds %S.ast.Node, ptr %t13, i64 %t11 - store %S.ast.Node %t10, ptr %t14 - store i64 %t12, ptr %t8 - %t15 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t15, i32 0, i32 1 - %t17 = load ptr, ptr %a1 - %t18 = call %S.ast.Node @finch.parser.parseBlock(ptr %t17) - %t19 = load i64, ptr %t16 - %t20 = add i64 %t19, 1 - call void @finch_arr_reserve(ptr %t15, i64 %t20, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t21 = load ptr, ptr %t15 - %t22 = getelementptr inbounds %S.ast.Node, ptr %t21, i64 %t19 - 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.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.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 - %t30 = call %S.ast.Node @finch.parser.parseIf(ptr %t29) - %t31 = load i64, ptr %t28 - %t32 = add i64 %t31, 1 - call void @finch_arr_reserve(ptr %t27, i64 %t32, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t33 = load ptr, ptr %t27 - %t34 = getelementptr inbounds %S.ast.Node, ptr %t33, i64 %t31 - store %S.ast.Node %t30, ptr %t34 - store i64 %t32, ptr %t28 - 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 - %t38 = call %S.ast.Node @finch.parser.parseBlock(ptr %t37) - %t39 = load i64, ptr %t36 - %t40 = add i64 %t39, 1 - call void @finch_arr_reserve(ptr %t35, i64 %t40, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t41 = load ptr, ptr %t35 - %t42 = getelementptr inbounds %S.ast.Node, ptr %t41, i64 %t39 - store %S.ast.Node %t38, ptr %t42 - store i64 %t40, ptr %t36 - 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) - %t46 = load %S.ast.Node, ptr %a45 - ret %S.ast.Node %t46 + %t6 = call %S.lexer.Token @finch.parser.expect(ptr %t5, { ptr, i64, i64 } { ptr @.str.933, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.934, i64 4, i64 0 }) + store %S.lexer.Token %t6, ptr %a7 + call void @finch.drop.S_lexer_Token(ptr %a7) + %t8 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 + %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t8, i32 0, i32 1 + %t10 = load ptr, ptr %a1 + %t11 = call %S.ast.Node @finch.parser.parseExpr(ptr %t10) + %t12 = load i64, ptr %t9 + %t13 = add i64 %t12, 1 + call void @finch_arr_reserve(ptr %t8, i64 %t13, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t14 = load ptr, ptr %t8 + %t15 = getelementptr inbounds %S.ast.Node, ptr %t14, i64 %t12 + store %S.ast.Node %t11, ptr %t15 + store i64 %t13, ptr %t9 + %t16 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 + %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i32 0, i32 1 + %t18 = load ptr, ptr %a1 + %t19 = call %S.ast.Node @finch.parser.parseBlock(ptr %t18) + %t20 = load i64, ptr %t17 + %t21 = add i64 %t20, 1 + call void @finch_arr_reserve(ptr %t16, i64 %t21, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t22 = load ptr, ptr %t16 + %t23 = getelementptr inbounds %S.ast.Node, ptr %t22, i64 %t20 + store %S.ast.Node %t19, ptr %t23 + store i64 %t21, ptr %t17 + %t24 = load ptr, ptr %a1 + %t25 = call i1 @finch.parser.accept(ptr %t24, { ptr, i64, i64 } { ptr @.str.935, i64 4, i64 0 }) + br i1 %t25, label %then1643, label %endif1645 +then1643: + %t26 = load ptr, ptr %a1 + %t27 = call i1 @finch.parser.at(ptr %t26, { ptr, i64, i64 } { ptr @.str.936, i64 2, i64 0 }) + br i1 %t27, label %then1646, label %else1647 +then1646: + %t28 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 + %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %t28, i32 0, i32 1 + %t30 = load ptr, ptr %a1 + %t31 = call %S.ast.Node @finch.parser.parseIf(ptr %t30) + %t32 = load i64, ptr %t29 + %t33 = add i64 %t32, 1 + call void @finch_arr_reserve(ptr %t28, i64 %t33, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t34 = load ptr, ptr %t28 + %t35 = getelementptr inbounds %S.ast.Node, ptr %t34, i64 %t32 + store %S.ast.Node %t31, ptr %t35 + store i64 %t33, ptr %t29 + br label %endif1648 +else1647: + %t36 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 + %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %t36, i32 0, i32 1 + %t38 = load ptr, ptr %a1 + %t39 = call %S.ast.Node @finch.parser.parseBlock(ptr %t38) + %t40 = load i64, ptr %t37 + %t41 = add i64 %t40, 1 + call void @finch_arr_reserve(ptr %t36, i64 %t41, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t42 = load ptr, ptr %t36 + %t43 = getelementptr inbounds %S.ast.Node, ptr %t42, i64 %t40 + store %S.ast.Node %t39, ptr %t43 + store i64 %t41, ptr %t37 + br label %endif1648 +endif1648: + br label %endif1645 +endif1645: + %t44 = load %S.ast.Node, ptr %a4 + ret %S.ast.Node %t44 } define internal i64 @finch.parser.binaryLevel({ ptr, i64, i64 } %p0) { @@ -17496,231 +19540,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.928, i64 2, i64 0 }, ptr %a4 + store { ptr, i64, i64 } { ptr @.str.937, 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 %then1588, label %endif1590 -then1588: + br i1 %t6, label %then1649, label %endif1651 +then1649: ret i64 1 -endif1590: +endif1651: %t7 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t7, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.929, i64 2, i64 0 }, ptr %a9 + store { ptr, i64, i64 } { ptr @.str.938, 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 %then1591, label %endif1593 -then1591: + br i1 %t11, label %then1652, label %endif1654 +then1652: ret i64 2 -endif1593: +endif1654: %t12 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t12, ptr %a13 - store { ptr, i64, i64 } { ptr @.str.930, i64 2, i64 0 }, ptr %a14 + store { ptr, i64, i64 } { ptr @.str.939, 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.from1594 -logic.from1594: - br i1 %t16, label %logic.end1596, label %logic.rhs1595 -logic.rhs1595: + br label %logic.from1655 +logic.from1655: + br i1 %t16, label %logic.end1657, label %logic.rhs1656 +logic.rhs1656: %t17 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t17, ptr %a18 - store { ptr, i64, i64 } { ptr @.str.931, i64 2, i64 0 }, ptr %a19 + store { ptr, i64, i64 } { ptr @.str.940, 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.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: + br label %logic.rend1658 +logic.rend1658: + br label %logic.end1657 +logic.end1657: + %t22 = phi i1 [ true, %logic.from1655 ], [ %t21, %logic.rend1658 ] + br label %logic.from1659 +logic.from1659: + br i1 %t22, label %logic.end1661, label %logic.rhs1660 +logic.rhs1660: %t23 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t23, ptr %a24 - store { ptr, i64, i64 } { ptr @.str.932, i64 1, i64 0 }, ptr %a25 + store { ptr, i64, i64 } { ptr @.str.941, 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.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: + br label %logic.rend1662 +logic.rend1662: + br label %logic.end1661 +logic.end1661: + %t28 = phi i1 [ true, %logic.from1659 ], [ %t27, %logic.rend1662 ] + br label %logic.from1663 +logic.from1663: + br i1 %t28, label %logic.end1665, label %logic.rhs1664 +logic.rhs1664: %t29 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t29, ptr %a30 - store { ptr, i64, i64 } { ptr @.str.933, i64 2, i64 0 }, ptr %a31 + store { ptr, i64, i64 } { ptr @.str.942, 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.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: + br label %logic.rend1666 +logic.rend1666: + br label %logic.end1665 +logic.end1665: + %t34 = phi i1 [ true, %logic.from1663 ], [ %t33, %logic.rend1666 ] + br label %logic.from1667 +logic.from1667: + br i1 %t34, label %logic.end1669, label %logic.rhs1668 +logic.rhs1668: %t35 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t35, ptr %a36 - store { ptr, i64, i64 } { ptr @.str.934, i64 1, i64 0 }, ptr %a37 + store { ptr, i64, i64 } { ptr @.str.943, 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.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: + br label %logic.rend1670 +logic.rend1670: + br label %logic.end1669 +logic.end1669: + %t40 = phi i1 [ true, %logic.from1667 ], [ %t39, %logic.rend1670 ] + br label %logic.from1671 +logic.from1671: + br i1 %t40, label %logic.end1673, label %logic.rhs1672 +logic.rhs1672: %t41 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t41, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.935, i64 2, i64 0 }, ptr %a43 + store { ptr, i64, i64 } { ptr @.str.944, 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.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: + br label %logic.rend1674 +logic.rend1674: + br label %logic.end1673 +logic.end1673: + %t46 = phi i1 [ true, %logic.from1671 ], [ %t45, %logic.rend1674 ] + br i1 %t46, label %then1675, label %endif1677 +then1675: ret i64 3 -endif1616: +endif1677: %t47 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t47, ptr %a48 - store { ptr, i64, i64 } { ptr @.str.936, i64 1, i64 0 }, ptr %a49 + store { ptr, i64, i64 } { ptr @.str.945, 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.from1617 -logic.from1617: - br i1 %t51, label %logic.end1619, label %logic.rhs1618 -logic.rhs1618: + br label %logic.from1678 +logic.from1678: + br i1 %t51, label %logic.end1680, label %logic.rhs1679 +logic.rhs1679: %t52 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t52, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.937, i64 1, i64 0 }, ptr %a54 + store { ptr, i64, i64 } { ptr @.str.946, 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.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: + br label %logic.rend1681 +logic.rend1681: + br label %logic.end1680 +logic.end1680: + %t57 = phi i1 [ true, %logic.from1678 ], [ %t56, %logic.rend1681 ] + br label %logic.from1682 +logic.from1682: + br i1 %t57, label %logic.end1684, label %logic.rhs1683 +logic.rhs1683: %t58 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t58, ptr %a59 - store { ptr, i64, i64 } { ptr @.str.938, i64 1, i64 0 }, ptr %a60 + store { ptr, i64, i64 } { ptr @.str.947, 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.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: + br label %logic.rend1685 +logic.rend1685: + br label %logic.end1684 +logic.end1684: + %t63 = phi i1 [ true, %logic.from1682 ], [ %t62, %logic.rend1685 ] + br label %logic.from1686 +logic.from1686: + br i1 %t63, label %logic.end1688, label %logic.rhs1687 +logic.rhs1687: %t64 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t64, ptr %a65 - store { ptr, i64, i64 } { ptr @.str.939, i64 1, i64 0 }, ptr %a66 + store { ptr, i64, i64 } { ptr @.str.948, 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.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: + br label %logic.rend1689 +logic.rend1689: + br label %logic.end1688 +logic.end1688: + %t69 = phi i1 [ true, %logic.from1686 ], [ %t68, %logic.rend1689 ] + br i1 %t69, label %then1690, label %endif1692 +then1690: ret i64 4 -endif1631: +endif1692: %t70 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t70, ptr %a71 - store { ptr, i64, i64 } { ptr @.str.940, i64 1, i64 0 }, ptr %a72 + store { ptr, i64, i64 } { ptr @.str.949, 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.from1632 -logic.from1632: - br i1 %t74, label %logic.end1634, label %logic.rhs1633 -logic.rhs1633: + br label %logic.from1693 +logic.from1693: + br i1 %t74, label %logic.end1695, label %logic.rhs1694 +logic.rhs1694: %t75 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t75, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.941, i64 1, i64 0 }, ptr %a77 + store { ptr, i64, i64 } { ptr @.str.950, 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.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: + br label %logic.rend1696 +logic.rend1696: + br label %logic.end1695 +logic.end1695: + %t80 = phi i1 [ true, %logic.from1693 ], [ %t79, %logic.rend1696 ] + br label %logic.from1697 +logic.from1697: + br i1 %t80, label %logic.end1699, label %logic.rhs1698 +logic.rhs1698: %t81 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t81, ptr %a82 - store { ptr, i64, i64 } { ptr @.str.942, i64 1, i64 0 }, ptr %a83 + store { ptr, i64, i64 } { ptr @.str.951, 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.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: + br label %logic.rend1700 +logic.rend1700: + br label %logic.end1699 +logic.end1699: + %t86 = phi i1 [ true, %logic.from1697 ], [ %t85, %logic.rend1700 ] + br label %logic.from1701 +logic.from1701: + br i1 %t86, label %logic.end1703, label %logic.rhs1702 +logic.rhs1702: %t87 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t87, ptr %a88 - store { ptr, i64, i64 } { ptr @.str.943, i64 2, i64 0 }, ptr %a89 + store { ptr, i64, i64 } { ptr @.str.952, 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.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: + br label %logic.rend1704 +logic.rend1704: + br label %logic.end1703 +logic.end1703: + %t92 = phi i1 [ true, %logic.from1701 ], [ %t91, %logic.rend1704 ] + br label %logic.from1705 +logic.from1705: + br i1 %t92, label %logic.end1707, label %logic.rhs1706 +logic.rhs1706: %t93 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t93, ptr %a94 - store { ptr, i64, i64 } { ptr @.str.944, i64 2, i64 0 }, ptr %a95 + store { ptr, i64, i64 } { ptr @.str.953, 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.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: + br label %logic.rend1708 +logic.rend1708: + br label %logic.end1707 +logic.end1707: + %t98 = phi i1 [ true, %logic.from1705 ], [ %t97, %logic.rend1708 ] + br label %logic.from1709 +logic.from1709: + br i1 %t98, label %logic.end1711, label %logic.rhs1710 +logic.rhs1710: %t99 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t99, ptr %a100 - store { ptr, i64, i64 } { ptr @.str.945, i64 1, i64 0 }, ptr %a101 + store { ptr, i64, i64 } { ptr @.str.954, 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.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: + br label %logic.rend1712 +logic.rend1712: + br label %logic.end1711 +logic.end1711: + %t104 = phi i1 [ true, %logic.from1709 ], [ %t103, %logic.rend1712 ] + br i1 %t104, label %then1713, label %endif1715 +then1713: ret i64 5 -endif1654: +endif1715: ret i64 0 } @@ -17728,13 +19772,10 @@ define internal %S.ast.Node @finch.parser.parseExpr(ptr %p0) { entry: %a1 = alloca ptr, align 16 %a4 = alloca %S.ast.Node, align 16 - %a13 = alloca %S.ast.Node, align 16 - %a14 = alloca %S.ast.Node, align 16 - %a18 = alloca %S.ast.Node, align 16 - %a24 = alloca %S.ast.Node, align 16 - %a25 = alloca %S.ast.Node, align 16 - %a51 = alloca %S.ast.Node, align 16 - %a52 = alloca %S.ast.Node, align 16 + %a15 = alloca %S.ast.Node, align 16 + %a18 = alloca %S.lexer.Token, align 16 + %a22 = alloca %S.ast.Node, align 16 + %a23 = alloca %S.ast.Node, align 16 store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 %t3 = call %S.ast.Node @finch.parser.parseBinary(ptr %t2, i64 1) @@ -17742,81 +19783,78 @@ entry: %t5 = load ptr, ptr %a1 %t6 = call i1 @finch.parser.sameLine(ptr %t5) %t7 = xor i1 %t6, true - br label %logic.from1655 -logic.from1655: - br i1 %t7, label %logic.end1657, label %logic.rhs1656 -logic.rhs1656: + br label %logic.from1716 +logic.from1716: + br i1 %t7, label %logic.end1718, label %logic.rhs1717 +logic.rhs1717: %t8 = load ptr, ptr %a1 - %t9 = call i1 @finch.parser.at(ptr %t8, { ptr, i64, i64 } { ptr @.str.946, i64 2, i64 0 }) + %t9 = call i1 @finch.parser.at(ptr %t8, { ptr, i64, i64 } { ptr @.str.955, i64 2, i64 0 }) %t10 = xor i1 %t9, true - 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: + br label %logic.rend1719 +logic.rend1719: + br label %logic.end1718 +logic.end1718: + %t11 = phi i1 [ true, %logic.from1716 ], [ %t10, %logic.rend1719 ] + br i1 %t11, label %then1720, label %endif1722 +then1720: %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 -endif1661: + ret %S.ast.Node %t12 +endif1722: + %t13 = load ptr, ptr %a1 + %t14 = call %S.ast.Node @finch.parser.node(ptr %t13, { ptr, i64, i64 } { ptr @.str.956, i64 2, i64 0 }) + store %S.ast.Node %t14, ptr %a15 %t16 = load ptr, ptr %a1 - %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) - %t21 = getelementptr inbounds %S.ast.Node, ptr %a18, i32 0, i32 9 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t21, i32 0, i32 1 - %t23 = load %S.ast.Node, ptr %a4 - store %S.ast.Node %t23, ptr %a24 - call void @finch.copy.S_ast_Node(ptr %a25, ptr %a24) - %t26 = load %S.ast.Node, ptr %a25 - %t27 = load i64, ptr %t22 - %t28 = add i64 %t27, 1 - call void @finch_arr_reserve(ptr %t21, i64 %t28, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t29 = load ptr, ptr %t21 - %t30 = getelementptr inbounds %S.ast.Node, ptr %t29, i64 %t27 - 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.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 - %t35 = getelementptr inbounds { ptr, i64, i64 }, ptr %t34, i32 0, i32 1 - %t36 = load ptr, ptr %a1 - %t37 = call %S.ast.Node @finch.parser.parseBlock(ptr %t36) - %t38 = load i64, ptr %t35 - %t39 = add i64 %t38, 1 - call void @finch_arr_reserve(ptr %t34, i64 %t39, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t40 = load ptr, ptr %t34 - %t41 = getelementptr inbounds %S.ast.Node, ptr %t40, i64 %t38 - store %S.ast.Node %t37, ptr %t41 - store i64 %t39, ptr %t35 - 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 - %t45 = call %S.ast.Node @finch.parser.parseExpr(ptr %t44) - %t46 = load i64, ptr %t43 - %t47 = add i64 %t46, 1 - call void @finch_arr_reserve(ptr %t42, i64 %t47, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t48 = load ptr, ptr %t42 - %t49 = getelementptr inbounds %S.ast.Node, ptr %t48, i64 %t46 - store %S.ast.Node %t45, ptr %t49 - store i64 %t47, ptr %t43 - 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) - %t53 = load %S.ast.Node, ptr %a52 - ret %S.ast.Node %t53 + %t17 = call %S.lexer.Token @finch.parser.next(ptr %t16) + store %S.lexer.Token %t17, ptr %a18 + call void @finch.drop.S_lexer_Token(ptr %a18) + %t19 = getelementptr inbounds %S.ast.Node, ptr %a15, i32 0, i32 9 + %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t19, i32 0, i32 1 + %t21 = load %S.ast.Node, ptr %a4 + store %S.ast.Node %t21, ptr %a22 + call void @finch.copy.S_ast_Node(ptr %a23, ptr %a22) + %t24 = load %S.ast.Node, ptr %a23 + %t25 = load i64, ptr %t20 + %t26 = add i64 %t25, 1 + call void @finch_arr_reserve(ptr %t19, i64 %t26, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t27 = load ptr, ptr %t19 + %t28 = getelementptr inbounds %S.ast.Node, ptr %t27, i64 %t25 + store %S.ast.Node %t24, ptr %t28 + store i64 %t26, ptr %t20 + %t29 = load ptr, ptr %a1 + %t30 = call i1 @finch.parser.at(ptr %t29, { ptr, i64, i64 } { ptr @.str.957, i64 1, i64 0 }) + br i1 %t30, label %then1723, label %else1724 +then1723: + %t31 = getelementptr inbounds %S.ast.Node, ptr %a15, i32 0, i32 6 + store i1 true, ptr %t31 + %t32 = getelementptr inbounds %S.ast.Node, ptr %a15, i32 0, i32 9 + %t33 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i32 0, i32 1 + %t34 = load ptr, ptr %a1 + %t35 = call %S.ast.Node @finch.parser.parseBlock(ptr %t34) + %t36 = load i64, ptr %t33 + %t37 = add i64 %t36, 1 + call void @finch_arr_reserve(ptr %t32, i64 %t37, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t38 = load ptr, ptr %t32 + %t39 = getelementptr inbounds %S.ast.Node, ptr %t38, i64 %t36 + store %S.ast.Node %t35, ptr %t39 + store i64 %t37, ptr %t33 + br label %endif1725 +else1724: + %t40 = getelementptr inbounds %S.ast.Node, ptr %a15, i32 0, i32 9 + %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i32 0, i32 1 + %t42 = load ptr, ptr %a1 + %t43 = call %S.ast.Node @finch.parser.parseExpr(ptr %t42) + %t44 = load i64, ptr %t41 + %t45 = add i64 %t44, 1 + call void @finch_arr_reserve(ptr %t40, i64 %t45, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t46 = load ptr, ptr %t40 + %t47 = getelementptr inbounds %S.ast.Node, ptr %t46, i64 %t44 + store %S.ast.Node %t43, ptr %t47 + store i64 %t45, ptr %t41 + br label %endif1725 +endif1725: + %t48 = load %S.ast.Node, ptr %a15 + call void @finch.drop.S_ast_Node(ptr %a4) + ret %S.ast.Node %t48 } define internal %S.ast.Node @finch.parser.parseBinary(ptr %p0, i64 %p1) { @@ -17824,319 +19862,360 @@ entry: %a1 = alloca ptr, align 16 %a2 = alloca i64, align 16 %a11 = alloca %S.ast.Node, align 16 - %a22 = alloca %S.ast.Node, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 + %a17 = alloca { ptr, i64, i64 }, align 16 + %a23 = alloca %S.ast.Node, align 16 %a27 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca %S.ast.Node, align 16 - %a34 = alloca %S.ast.Node, align 16 - %a51 = alloca %S.ast.Node, align 16 - %a52 = alloca %S.ast.Node, align 16 + %a28 = alloca { ptr, i64, i64 }, align 16 + %a30 = alloca %S.lexer.Token, align 16 + %a33 = alloca { ptr, i64, i64 }, align 16 + %a37 = alloca %S.ast.Node, align 16 + %a38 = alloca %S.ast.Node, align 16 %a55 = alloca %S.ast.Node, align 16 %a56 = alloca %S.ast.Node, align 16 + %a59 = alloca %S.ast.Node, align 16 store ptr %p0, ptr %a1 store i64 %p1, ptr %a2 %t3 = load i64, ptr %a2 %t4 = icmp sgt i64 %t3, 5 - br i1 %t4, label %then1665, label %endif1667 -then1665: + br i1 %t4, label %then1726, label %endif1728 +then1726: %t5 = load ptr, ptr %a1 %t6 = call %S.ast.Node @finch.parser.parseUnary(ptr %t5) ret %S.ast.Node %t6 -endif1667: +endif1728: %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.cond1668 -while.cond1668: + br label %while.cond1729 +while.cond1729: %t12 = load ptr, ptr %a1 %t13 = call i1 @finch.parser.sameLine(ptr %t12) - br label %logic.from1671 -logic.from1671: - br i1 %t13, label %logic.rhs1672, label %logic.end1673 -logic.rhs1672: + br label %logic.from1732 +logic.from1732: + br i1 %t13, label %logic.rhs1733, label %logic.end1734 +logic.rhs1733: %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.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.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) - %t25 = extractvalue %S.lexer.Token %t24, 0 - store { ptr, i64, i64 } %t25, ptr %a26 - call void @finch_str_copy(ptr %a27, ptr %a26) - %t28 = load { ptr, i64, i64 }, ptr %a27 - %t29 = getelementptr inbounds %S.ast.Node, ptr %a22, i32 0, i32 1 - store { ptr, i64, i64 } %t28, ptr %t29 - %t30 = getelementptr inbounds %S.ast.Node, ptr %a22, i32 0, i32 9 - %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t30, i32 0, i32 1 - %t32 = load %S.ast.Node, ptr %a11 - store %S.ast.Node %t32, ptr %a33 - call void @finch.copy.S_ast_Node(ptr %a34, ptr %a33) - %t35 = load %S.ast.Node, ptr %a34 - %t36 = load i64, ptr %t31 - %t37 = add i64 %t36, 1 - call void @finch_arr_reserve(ptr %t30, i64 %t37, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t38 = load ptr, ptr %t30 - %t39 = getelementptr inbounds %S.ast.Node, ptr %t38, i64 %t36 - store %S.ast.Node %t35, ptr %t39 - store i64 %t37, ptr %t31 - %t40 = getelementptr inbounds %S.ast.Node, ptr %a22, i32 0, i32 9 - %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i32 0, i32 1 - %t42 = load ptr, ptr %a1 - %t43 = load i64, ptr %a2 - %t44 = add i64 %t43, 1 - %t45 = call %S.ast.Node @finch.parser.parseBinary(ptr %t42, i64 %t44) - %t46 = load i64, ptr %t41 - %t47 = add i64 %t46, 1 - call void @finch_arr_reserve(ptr %t40, i64 %t47, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t48 = load ptr, ptr %t40 - %t49 = getelementptr inbounds %S.ast.Node, ptr %t48, i64 %t46 - store %S.ast.Node %t45, ptr %t49 - store i64 %t47, ptr %t41 - %t50 = load %S.ast.Node, ptr %a22 - store %S.ast.Node %t50, ptr %a51 - 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.cond1668 -while.end1670: - %t54 = load %S.ast.Node, ptr %a11 + store { ptr, i64, i64 } %t15, ptr %a17 + call void @finch_str_drop(ptr %a17) + %t18 = load i64, ptr %a2 + %t19 = icmp eq i64 %t16, %t18 + br label %logic.rend1735 +logic.rend1735: + br label %logic.end1734 +logic.end1734: + %t20 = phi i1 [ false, %logic.from1732 ], [ %t19, %logic.rend1735 ] + br i1 %t20, label %while.body1730, label %while.end1731 +while.body1730: + %t21 = load ptr, ptr %a1 + %t22 = call %S.ast.Node @finch.parser.node(ptr %t21, { ptr, i64, i64 } { ptr @.str.958, i64 6, i64 0 }) + store %S.ast.Node %t22, ptr %a23 + %t24 = load ptr, ptr %a1 + %t25 = call %S.lexer.Token @finch.parser.next(ptr %t24) + %t26 = extractvalue %S.lexer.Token %t25, 0 + store { ptr, i64, i64 } %t26, ptr %a27 + call void @finch_str_copy(ptr %a28, ptr %a27) + %t29 = load { ptr, i64, i64 }, ptr %a28 + store %S.lexer.Token %t25, ptr %a30 + call void @finch.drop.S_lexer_Token(ptr %a30) + %t31 = getelementptr inbounds %S.ast.Node, ptr %a23, i32 0, i32 1 + %t32 = load { ptr, i64, i64 }, ptr %t31 + store { ptr, i64, i64 } %t29, ptr %t31 + store { ptr, i64, i64 } %t32, ptr %a33 + call void @finch_str_drop(ptr %a33) + %t34 = getelementptr inbounds %S.ast.Node, ptr %a23, i32 0, i32 9 + %t35 = getelementptr inbounds { ptr, i64, i64 }, ptr %t34, i32 0, i32 1 + %t36 = load %S.ast.Node, ptr %a11 + store %S.ast.Node %t36, ptr %a37 + call void @finch.copy.S_ast_Node(ptr %a38, ptr %a37) + %t39 = load %S.ast.Node, 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 (%S.ast.Node, ptr null, i32 1) to i64)) + %t42 = load ptr, ptr %t34 + %t43 = getelementptr inbounds %S.ast.Node, ptr %t42, i64 %t40 + store %S.ast.Node %t39, ptr %t43 + store i64 %t41, ptr %t35 + %t44 = getelementptr inbounds %S.ast.Node, ptr %a23, i32 0, i32 9 + %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %t44, i32 0, i32 1 + %t46 = load ptr, ptr %a1 + %t47 = load i64, ptr %a2 + %t48 = add i64 %t47, 1 + %t49 = call %S.ast.Node @finch.parser.parseBinary(ptr %t46, i64 %t48) + %t50 = load i64, ptr %t45 + %t51 = add i64 %t50, 1 + call void @finch_arr_reserve(ptr %t44, i64 %t51, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t52 = load ptr, ptr %t44 + %t53 = getelementptr inbounds %S.ast.Node, ptr %t52, i64 %t50 + store %S.ast.Node %t49, ptr %t53 + store i64 %t51, ptr %t45 + %t54 = load %S.ast.Node, ptr %a23 store %S.ast.Node %t54, ptr %a55 call void @finch.copy.S_ast_Node(ptr %a56, ptr %a55) %t57 = load %S.ast.Node, ptr %a56 - ret %S.ast.Node %t57 + %t58 = load %S.ast.Node, ptr %a11 + store %S.ast.Node %t57, ptr %a11 + store %S.ast.Node %t58, ptr %a59 + call void @finch.drop.S_ast_Node(ptr %a59) + call void @finch.drop.S_ast_Node(ptr %a23) + br label %while.cond1729 +while.end1731: + %t60 = load %S.ast.Node, ptr %a11 + ret %S.ast.Node %t60 } define internal %S.ast.Node @finch.parser.parseUnary(ptr %p0) { entry: %a1 = alloca ptr, align 16 %a6 = alloca %S.ast.Node, align 16 - %a28 = alloca %S.ast.Node, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 + %a9 = alloca %S.lexer.Token, align 16 + %a29 = alloca %S.ast.Node, align 16 %a33 = alloca { ptr, i64, i64 }, align 16 + %a34 = alloca { ptr, i64, i64 }, align 16 + %a36 = alloca %S.lexer.Token, align 16 + %a39 = 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.950, i64 3, i64 0 }) - br i1 %t3, label %then1675, label %endif1677 -then1675: + %t3 = call i1 @finch.parser.at(ptr %t2, { ptr, i64, i64 } { ptr @.str.959, i64 3, i64 0 }) + br i1 %t3, label %then1736, label %endif1738 +then1736: %t4 = load ptr, ptr %a1 - %t5 = call %S.ast.Node @finch.parser.node(ptr %t4, { ptr, i64, i64 } { ptr @.str.951, i64 3, i64 0 }) + %t5 = call %S.ast.Node @finch.parser.node(ptr %t4, { ptr, i64, i64 } { ptr @.str.960, 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) - %t9 = getelementptr inbounds %S.ast.Node, ptr %a6, i32 0, i32 9 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t9, i32 0, i32 1 - %t11 = load ptr, ptr %a1 - %t12 = call %S.ast.Node @finch.parser.parsePostfix(ptr %t11) - %t13 = load i64, ptr %t10 - %t14 = add i64 %t13, 1 - call void @finch_arr_reserve(ptr %t9, i64 %t14, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t15 = load ptr, ptr %t9 - %t16 = getelementptr inbounds %S.ast.Node, ptr %t15, i64 %t13 - store %S.ast.Node %t12, ptr %t16 - store i64 %t14, ptr %t10 - %t17 = load %S.ast.Node, ptr %a6 - ret %S.ast.Node %t17 -endif1677: - %t18 = load ptr, ptr %a1 - %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.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.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.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) - %t31 = extractvalue %S.lexer.Token %t30, 0 - store { ptr, i64, i64 } %t31, ptr %a32 - call void @finch_str_copy(ptr %a33, ptr %a32) - %t34 = load { ptr, i64, i64 }, ptr %a33 - %t35 = getelementptr inbounds %S.ast.Node, ptr %a28, i32 0, i32 1 - store { ptr, i64, i64 } %t34, ptr %t35 - %t36 = getelementptr inbounds %S.ast.Node, ptr %a28, i32 0, i32 9 - %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %t36, i32 0, i32 1 - %t38 = load ptr, ptr %a1 - %t39 = call %S.ast.Node @finch.parser.parseUnary(ptr %t38) - %t40 = load i64, ptr %t37 - %t41 = add i64 %t40, 1 - call void @finch_arr_reserve(ptr %t36, i64 %t41, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t42 = load ptr, ptr %t36 - %t43 = getelementptr inbounds %S.ast.Node, ptr %t42, i64 %t40 - store %S.ast.Node %t39, ptr %t43 - store i64 %t41, ptr %t37 - %t44 = load %S.ast.Node, ptr %a28 - ret %S.ast.Node %t44 -endif1688: - %t45 = load ptr, ptr %a1 - %t46 = call %S.ast.Node @finch.parser.parsePostfix(ptr %t45) - ret %S.ast.Node %t46 + store %S.lexer.Token %t8, ptr %a9 + call void @finch.drop.S_lexer_Token(ptr %a9) + %t10 = getelementptr inbounds %S.ast.Node, ptr %a6, i32 0, i32 9 + %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t10, i32 0, i32 1 + %t12 = load ptr, ptr %a1 + %t13 = call %S.ast.Node @finch.parser.parsePostfix(ptr %t12) + %t14 = load i64, ptr %t11 + %t15 = add i64 %t14, 1 + call void @finch_arr_reserve(ptr %t10, i64 %t15, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t16 = load ptr, ptr %t10 + %t17 = getelementptr inbounds %S.ast.Node, ptr %t16, i64 %t14 + store %S.ast.Node %t13, ptr %t17 + store i64 %t15, ptr %t11 + %t18 = load %S.ast.Node, ptr %a6 + ret %S.ast.Node %t18 +endif1738: + %t19 = load ptr, ptr %a1 + %t20 = call i1 @finch.parser.at(ptr %t19, { ptr, i64, i64 } { ptr @.str.961, i64 1, i64 0 }) + br label %logic.from1739 +logic.from1739: + br i1 %t20, label %logic.end1741, label %logic.rhs1740 +logic.rhs1740: + %t21 = load ptr, ptr %a1 + %t22 = call i1 @finch.parser.at(ptr %t21, { ptr, i64, i64 } { ptr @.str.962, i64 1, i64 0 }) + br label %logic.rend1742 +logic.rend1742: + br label %logic.end1741 +logic.end1741: + %t23 = phi i1 [ true, %logic.from1739 ], [ %t22, %logic.rend1742 ] + br label %logic.from1743 +logic.from1743: + br i1 %t23, label %logic.end1745, label %logic.rhs1744 +logic.rhs1744: + %t24 = load ptr, ptr %a1 + %t25 = call i1 @finch.parser.at(ptr %t24, { ptr, i64, i64 } { ptr @.str.963, i64 1, i64 0 }) + br label %logic.rend1746 +logic.rend1746: + br label %logic.end1745 +logic.end1745: + %t26 = phi i1 [ true, %logic.from1743 ], [ %t25, %logic.rend1746 ] + br i1 %t26, label %then1747, label %endif1749 +then1747: + %t27 = load ptr, ptr %a1 + %t28 = call %S.ast.Node @finch.parser.node(ptr %t27, { ptr, i64, i64 } { ptr @.str.964, i64 5, i64 0 }) + store %S.ast.Node %t28, ptr %a29 + %t30 = load ptr, ptr %a1 + %t31 = call %S.lexer.Token @finch.parser.next(ptr %t30) + %t32 = extractvalue %S.lexer.Token %t31, 0 + store { ptr, i64, i64 } %t32, ptr %a33 + call void @finch_str_copy(ptr %a34, ptr %a33) + %t35 = load { ptr, i64, i64 }, ptr %a34 + store %S.lexer.Token %t31, ptr %a36 + call void @finch.drop.S_lexer_Token(ptr %a36) + %t37 = getelementptr inbounds %S.ast.Node, ptr %a29, i32 0, i32 1 + %t38 = load { ptr, i64, i64 }, ptr %t37 + store { ptr, i64, i64 } %t35, ptr %t37 + store { ptr, i64, i64 } %t38, ptr %a39 + call void @finch_str_drop(ptr %a39) + %t40 = getelementptr inbounds %S.ast.Node, ptr %a29, i32 0, i32 9 + %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i32 0, i32 1 + %t42 = load ptr, ptr %a1 + %t43 = call %S.ast.Node @finch.parser.parseUnary(ptr %t42) + %t44 = load i64, ptr %t41 + %t45 = add i64 %t44, 1 + call void @finch_arr_reserve(ptr %t40, i64 %t45, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t46 = load ptr, ptr %t40 + %t47 = getelementptr inbounds %S.ast.Node, ptr %t46, i64 %t44 + store %S.ast.Node %t43, ptr %t47 + store i64 %t45, ptr %t41 + %t48 = load %S.ast.Node, ptr %a29 + ret %S.ast.Node %t48 +endif1749: + %t49 = load ptr, ptr %a1 + %t50 = call %S.ast.Node @finch.parser.parsePostfix(ptr %t49) + ret %S.ast.Node %t50 } define internal void @finch.parser.parseArgs(ptr %p0, ptr %p1) { entry: %a1 = alloca ptr, align 16 %a2 = alloca ptr, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 + %a5 = alloca %S.lexer.Token, align 16 + %a17 = alloca { ptr, i64, i64 }, align 16 %a22 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 + %a23 = alloca { ptr, i64, i64 }, align 16 + %a26 = alloca { ptr, i64, i64 }, align 16 + %a31 = alloca { ptr, i64, i64 }, align 16 + %a32 = alloca { ptr, i64, i64 }, align 16 + %a34 = alloca %S.lexer.Token, align 16 + %a36 = alloca { ptr, i64, i64 }, align 16 + %a39 = alloca %S.lexer.Token, align 16 + %a45 = alloca { ptr, i64, i64 }, align 16 + %a46 = alloca { ptr, i64, i64 }, align 16 + %a72 = alloca %S.lexer.Token, align 16 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.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 %panic1689, label %ok1690 -panic1689: - call void @finch_panic(ptr @.str.958, i64 638, ptr @.str.959) + %t4 = call %S.lexer.Token @finch.parser.expect(ptr %t3, { ptr, i64, i64 } { ptr @.str.965, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.966, i64 3, i64 0 }) + store %S.lexer.Token %t4, ptr %a5 + call void @finch.drop.S_lexer_Token(ptr %a5) + %t6 = load ptr, ptr %a1 + %t7 = icmp eq ptr %t6, null + br i1 %t7, label %panic1750, label %ok1751 +panic1750: + call void @finch_panic(ptr @.str.967, i64 638, ptr @.str.968) unreachable -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.960, i64 1, i64 0 }) - %t12 = xor i1 %t11, true - 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.961, i64 1, i64 0 }) - %t15 = xor i1 %t14, true - 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.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.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.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 - store { ptr, i64, i64 } %t28, ptr %a29 - call void @finch_str_copy(ptr %a30, ptr %a29) - %t31 = load { ptr, i64, i64 }, ptr %a30 - store { ptr, i64, i64 } %t31, ptr %a16 - %t32 = load ptr, ptr %a1 - %t33 = call %S.lexer.Token @finch.parser.next(ptr %t32) - br label %endif1703 -endif1703: - %t34 = load ptr, ptr %a2 - %t35 = icmp eq ptr %t34, null - br i1 %t35, label %panic1704, label %ok1705 -panic1704: - call void @finch_panic(ptr @.str.965, i64 646, ptr @.str.966) +ok1751: + %t8 = getelementptr inbounds %S.parser.Parser, ptr %t6, i32 0, i32 2 + %t9 = load i64, ptr %t8 + %t10 = add i64 %t9, 1 + store i64 %t10, ptr %t8 + %t11 = load ptr, ptr %a1 + %t12 = call i1 @finch.parser.at(ptr %t11, { ptr, i64, i64 } { ptr @.str.969, i64 1, i64 0 }) + %t13 = xor i1 %t12, true + br i1 %t13, label %then1752, label %endif1754 +then1752: + br label %while.cond1755 +while.cond1755: + %t14 = load ptr, ptr %a1 + %t15 = call i1 @finch.parser.at(ptr %t14, { ptr, i64, i64 } { ptr @.str.970, i64 1, i64 0 }) + %t16 = xor i1 %t15, true + br i1 %t16, label %while.body1756, label %while.end1757 +while.body1756: + store { ptr, i64, i64 } { ptr @.str.971, i64 0, i64 0 }, ptr %a17 + %t18 = load ptr, ptr %a1 + %t19 = call i1 @finch.parser.at(ptr %t18, { ptr, i64, i64 } { ptr @.str.972, i64 5, i64 0 }) + br label %logic.from1758 +logic.from1758: + br i1 %t19, label %logic.rhs1759, label %logic.end1760 +logic.rhs1759: + %t20 = load ptr, ptr %a1 + %t21 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t20, i64 1) + store { ptr, i64, i64 } %t21, ptr %a22 + store { ptr, i64, i64 } { ptr @.str.973, i64 1, i64 0 }, ptr %a23 + %t24 = call i32 @finch_str_eq(ptr %a22, ptr %a23) + %t25 = icmp ne i32 %t24, 0 + store { ptr, i64, i64 } %t21, ptr %a26 + call void @finch_str_drop(ptr %a26) + br label %logic.rend1761 +logic.rend1761: + br label %logic.end1760 +logic.end1760: + %t27 = phi i1 [ false, %logic.from1758 ], [ %t25, %logic.rend1761 ] + br i1 %t27, label %then1762, label %endif1764 +then1762: + %t28 = load ptr, ptr %a1 + %t29 = call %S.lexer.Token @finch.parser.next(ptr %t28) + %t30 = extractvalue %S.lexer.Token %t29, 1 + store { ptr, i64, i64 } %t30, ptr %a31 + call void @finch_str_copy(ptr %a32, ptr %a31) + %t33 = load { ptr, i64, i64 }, ptr %a32 + store %S.lexer.Token %t29, ptr %a34 + call void @finch.drop.S_lexer_Token(ptr %a34) + %t35 = load { ptr, i64, i64 }, ptr %a17 + store { ptr, i64, i64 } %t33, ptr %a17 + store { ptr, i64, i64 } %t35, ptr %a36 + call void @finch_str_drop(ptr %a36) + %t37 = load ptr, ptr %a1 + %t38 = call %S.lexer.Token @finch.parser.next(ptr %t37) + store %S.lexer.Token %t38, ptr %a39 + call void @finch.drop.S_lexer_Token(ptr %a39) + br label %endif1764 +endif1764: + %t40 = load ptr, ptr %a2 + %t41 = icmp eq ptr %t40, null + br i1 %t41, label %panic1765, label %ok1766 +panic1765: + call void @finch_panic(ptr @.str.974, i64 646, ptr @.str.975) unreachable -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 - store { ptr, i64, i64 } %t38, ptr %a39 - call void @finch_str_copy(ptr %a40, ptr %a39) - %t41 = load { ptr, i64, i64 }, ptr %a40 - %t42 = load i64, ptr %t37 - %t43 = add i64 %t42, 1 - call void @finch_arr_reserve(ptr %t36, i64 %t43, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t44 = load ptr, ptr %t36 - %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %t44, i64 %t42 - store { ptr, i64, i64 } %t41, ptr %t45 - store i64 %t43, ptr %t37 - %t46 = load ptr, ptr %a2 - %t47 = icmp eq ptr %t46, null - br i1 %t47, label %panic1706, label %ok1707 -panic1706: - call void @finch_panic(ptr @.str.967, i64 647, ptr @.str.968) +ok1766: + %t42 = getelementptr inbounds %S.ast.Node, ptr %t40, i32 0, i32 10 + %t43 = getelementptr inbounds { ptr, i64, i64 }, ptr %t42, i32 0, i32 1 + %t44 = load { ptr, i64, i64 }, ptr %a17 + store { ptr, i64, i64 } %t44, ptr %a45 + call void @finch_str_copy(ptr %a46, ptr %a45) + %t47 = load { ptr, i64, i64 }, ptr %a46 + %t48 = load i64, ptr %t43 + %t49 = add i64 %t48, 1 + call void @finch_arr_reserve(ptr %t42, i64 %t49, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t50 = load ptr, ptr %t42 + %t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %t50, i64 %t48 + store { ptr, i64, i64 } %t47, ptr %t51 + store i64 %t49, ptr %t43 + %t52 = load ptr, ptr %a2 + %t53 = icmp eq ptr %t52, null + br i1 %t53, label %panic1767, label %ok1768 +panic1767: + call void @finch_panic(ptr @.str.976, i64 647, ptr @.str.977) unreachable -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 - %t51 = call %S.ast.Node @finch.parser.parseExpr(ptr %t50) - %t52 = load i64, ptr %t49 - %t53 = add i64 %t52, 1 - call void @finch_arr_reserve(ptr %t48, i64 %t53, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t54 = load ptr, ptr %t48 - %t55 = getelementptr inbounds %S.ast.Node, ptr %t54, i64 %t52 - store %S.ast.Node %t51, ptr %t55 - store i64 %t53, ptr %t49 +ok1768: + %t54 = getelementptr inbounds %S.ast.Node, ptr %t52, i32 0, i32 9 + %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %t54, i32 0, i32 1 %t56 = load ptr, ptr %a1 - %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 %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 %panic1711, label %ok1712 -panic1711: - call void @finch_panic(ptr @.str.970, i64 653, ptr @.str.971) + %t57 = call %S.ast.Node @finch.parser.parseExpr(ptr %t56) + %t58 = load i64, ptr %t55 + %t59 = add i64 %t58, 1 + call void @finch_arr_reserve(ptr %t54, i64 %t59, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t60 = load ptr, ptr %t54 + %t61 = getelementptr inbounds %S.ast.Node, ptr %t60, i64 %t58 + store %S.ast.Node %t57, ptr %t61 + store i64 %t59, ptr %t55 + %t62 = load ptr, ptr %a1 + %t63 = call i1 @finch.parser.accept(ptr %t62, { ptr, i64, i64 } { ptr @.str.978, i64 1, i64 0 }) + %t64 = xor i1 %t63, true + br i1 %t64, label %then1769, label %endif1771 +then1769: + call void @finch_str_drop(ptr %a17) + br label %while.end1757 +endif1771: + call void @finch_str_drop(ptr %a17) + br label %while.cond1755 +while.end1757: + br label %endif1754 +endif1754: + %t65 = load ptr, ptr %a1 + %t66 = icmp eq ptr %t65, null + br i1 %t66, label %panic1772, label %ok1773 +panic1772: + call void @finch_panic(ptr @.str.979, i64 653, ptr @.str.980) unreachable -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.972, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.973, i64 3, i64 0 }) +ok1773: + %t67 = getelementptr inbounds %S.parser.Parser, ptr %t65, i32 0, i32 2 + %t68 = load i64, ptr %t67 + %t69 = sub i64 %t68, 1 + store i64 %t69, ptr %t67 + %t70 = load ptr, ptr %a1 + %t71 = call %S.lexer.Token @finch.parser.expect(ptr %t70, { ptr, i64, i64 } { ptr @.str.981, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.982, i64 3, i64 0 }) + store %S.lexer.Token %t71, ptr %a72 + call void @finch.drop.S_lexer_Token(ptr %a72) ret void } @@ -18145,170 +20224,193 @@ entry: %a1 = alloca ptr, align 16 %a4 = alloca %S.ast.Node, align 16 %a11 = alloca %S.ast.Node, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 + %a14 = alloca %S.lexer.Token, align 16 %a18 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca %S.ast.Node, align 16 - %a25 = alloca %S.ast.Node, align 16 - %a41 = alloca %S.ast.Node, align 16 - %a42 = alloca %S.ast.Node, align 16 + %a19 = alloca { ptr, i64, i64 }, align 16 + %a21 = alloca %S.lexer.Token, align 16 + %a24 = alloca { ptr, i64, i64 }, align 16 + %a28 = alloca %S.ast.Node, align 16 + %a29 = alloca %S.ast.Node, align 16 + %a40 = alloca %S.lexer.Token, align 16 + %a45 = alloca { ptr, i64, i64 }, align 16 %a48 = alloca %S.ast.Node, align 16 - %a59 = alloca %S.ast.Node, align 16 - %a60 = alloca %S.ast.Node, align 16 - %a82 = alloca %S.ast.Node, align 16 - %a83 = alloca %S.ast.Node, align 16 - %a86 = alloca %S.ast.Node, align 16 - %a87 = alloca %S.ast.Node, align 16 - %a90 = alloca %S.ast.Node, align 16 - %a91 = alloca %S.ast.Node, align 16 + %a49 = alloca %S.ast.Node, align 16 + %a52 = alloca %S.ast.Node, align 16 + %a57 = alloca %S.ast.Node, align 16 + %a60 = alloca %S.lexer.Token, align 16 + %a69 = alloca %S.ast.Node, align 16 + %a70 = alloca %S.ast.Node, align 16 + %a91 = alloca %S.lexer.Token, align 16 + %a93 = alloca %S.ast.Node, align 16 + %a94 = alloca %S.ast.Node, align 16 + %a97 = alloca %S.ast.Node, align 16 store ptr %p0, ptr %a1 %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.cond1713 -while.cond1713: + br label %while.cond1774 +while.cond1774: %t5 = load ptr, ptr %a1 %t6 = call i1 @finch.parser.sameLine(ptr %t5) - br i1 %t6, label %while.body1714, label %while.end1715 -while.body1714: + br i1 %t6, label %while.body1775, label %while.end1776 +while.body1775: %t7 = load ptr, ptr %a1 - %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: + %t8 = call i1 @finch.parser.at(ptr %t7, { ptr, i64, i64 } { ptr @.str.983, i64 1, i64 0 }) + br i1 %t8, label %then1777, label %else1778 +then1777: %t9 = load ptr, ptr %a1 - %t10 = call %S.ast.Node @finch.parser.node(ptr %t9, { ptr, i64, i64 } { ptr @.str.975, i64 6, i64 0 }) + %t10 = call %S.ast.Node @finch.parser.node(ptr %t9, { ptr, i64, i64 } { ptr @.str.984, 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.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) - %t19 = load { ptr, i64, i64 }, ptr %a18 - %t20 = getelementptr inbounds %S.ast.Node, ptr %a11, i32 0, i32 1 - store { ptr, i64, i64 } %t19, ptr %t20 - %t21 = getelementptr inbounds %S.ast.Node, ptr %a11, i32 0, i32 9 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t21, i32 0, i32 1 - %t23 = load %S.ast.Node, ptr %a4 - store %S.ast.Node %t23, ptr %a24 - call void @finch.copy.S_ast_Node(ptr %a25, ptr %a24) - %t26 = load %S.ast.Node, ptr %a25 - %t27 = load i64, ptr %t22 - %t28 = add i64 %t27, 1 - call void @finch_arr_reserve(ptr %t21, i64 %t28, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t29 = load ptr, ptr %t21 - %t30 = getelementptr inbounds %S.ast.Node, ptr %t29, i64 %t27 - 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.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.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.979, i64 6, i64 0 }, ptr %t38 - %t39 = load ptr, ptr %a1 - call void @finch.parser.parseArgs(ptr %t39, ptr %a11) - 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 %endif1718 -else1717: - %t44 = load ptr, ptr %a1 - %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: + store %S.lexer.Token %t13, ptr %a14 + call void @finch.drop.S_lexer_Token(ptr %a14) + %t15 = load ptr, ptr %a1 + %t16 = call %S.lexer.Token @finch.parser.expect(ptr %t15, { ptr, i64, i64 } { ptr @.str.985, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.986, i64 16, i64 0 }) + %t17 = extractvalue %S.lexer.Token %t16, 1 + store { ptr, i64, i64 } %t17, ptr %a18 + call void @finch_str_copy(ptr %a19, ptr %a18) + %t20 = load { ptr, i64, i64 }, ptr %a19 + store %S.lexer.Token %t16, ptr %a21 + call void @finch.drop.S_lexer_Token(ptr %a21) + %t22 = getelementptr inbounds %S.ast.Node, ptr %a11, i32 0, i32 1 + %t23 = load { ptr, i64, i64 }, ptr %t22 + store { ptr, i64, i64 } %t20, ptr %t22 + store { ptr, i64, i64 } %t23, ptr %a24 + call void @finch_str_drop(ptr %a24) + %t25 = getelementptr inbounds %S.ast.Node, ptr %a11, i32 0, i32 9 + %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t25, i32 0, i32 1 + %t27 = load %S.ast.Node, ptr %a4 + store %S.ast.Node %t27, ptr %a28 + call void @finch.copy.S_ast_Node(ptr %a29, ptr %a28) + %t30 = load %S.ast.Node, ptr %a29 + %t31 = load i64, ptr %t26 + %t32 = add i64 %t31, 1 + call void @finch_arr_reserve(ptr %t25, i64 %t32, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t33 = load ptr, ptr %t25 + %t34 = getelementptr inbounds %S.ast.Node, ptr %t33, i64 %t31 + store %S.ast.Node %t30, ptr %t34 + store i64 %t32, ptr %t26 + %t35 = load ptr, ptr %a1 + %t36 = call i1 @finch.parser.at(ptr %t35, { ptr, i64, i64 } { ptr @.str.987, i64 1, i64 0 }) + br label %logic.from1780 +logic.from1780: + br i1 %t36, label %logic.rhs1781, label %logic.end1782 +logic.rhs1781: + %t37 = load ptr, ptr %a1 + %t38 = call %S.lexer.Token @finch.parser.cur(ptr %t37) + %t39 = extractvalue %S.lexer.Token %t38, 4 + store %S.lexer.Token %t38, ptr %a40 + call void @finch.drop.S_lexer_Token(ptr %a40) + %t41 = xor i1 %t39, true + br label %logic.rend1783 +logic.rend1783: + br label %logic.end1782 +logic.end1782: + %t42 = phi i1 [ false, %logic.from1780 ], [ %t41, %logic.rend1783 ] + br i1 %t42, label %then1784, label %endif1786 +then1784: + %t43 = getelementptr inbounds %S.ast.Node, ptr %a11, i32 0, i32 0 + %t44 = load { ptr, i64, i64 }, ptr %t43 + store { ptr, i64, i64 } { ptr @.str.988, i64 6, i64 0 }, ptr %t43 + store { ptr, i64, i64 } %t44, ptr %a45 + call void @finch_str_drop(ptr %a45) %t46 = load ptr, ptr %a1 - %t47 = call %S.ast.Node @finch.parser.node(ptr %t46, { ptr, i64, i64 } { ptr @.str.981, i64 5, i64 0 }) + call void @finch.parser.parseArgs(ptr %t46, ptr %a11) + br label %endif1786 +endif1786: + %t47 = load %S.ast.Node, ptr %a11 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 %panic1729, label %ok1730 -panic1729: - call void @finch_panic(ptr @.str.982, i64 673, ptr @.str.983) + call void @finch.copy.S_ast_Node(ptr %a49, ptr %a48) + %t50 = load %S.ast.Node, ptr %a49 + %t51 = load %S.ast.Node, ptr %a4 + store %S.ast.Node %t50, ptr %a4 + store %S.ast.Node %t51, ptr %a52 + call void @finch.drop.S_ast_Node(ptr %a52) + call void @finch.drop.S_ast_Node(ptr %a11) + br label %endif1779 +else1778: + %t53 = load ptr, ptr %a1 + %t54 = call i1 @finch.parser.at(ptr %t53, { ptr, i64, i64 } { ptr @.str.989, i64 1, i64 0 }) + br i1 %t54, label %then1787, label %else1788 +then1787: + %t55 = load ptr, ptr %a1 + %t56 = call %S.ast.Node @finch.parser.node(ptr %t55, { ptr, i64, i64 } { ptr @.str.990, i64 5, i64 0 }) + store %S.ast.Node %t56, ptr %a57 + %t58 = load ptr, ptr %a1 + %t59 = call %S.lexer.Token @finch.parser.next(ptr %t58) + store %S.lexer.Token %t59, ptr %a60 + call void @finch.drop.S_lexer_Token(ptr %a60) + %t61 = load ptr, ptr %a1 + %t62 = icmp eq ptr %t61, null + br i1 %t62, label %panic1790, label %ok1791 +panic1790: + call void @finch_panic(ptr @.str.991, i64 673, ptr @.str.992) unreachable -ok1730: - %t53 = getelementptr inbounds %S.parser.Parser, ptr %t51, i32 0, i32 2 - %t54 = load i64, ptr %t53 - %t55 = add i64 %t54, 1 - store i64 %t55, ptr %t53 - %t56 = getelementptr inbounds %S.ast.Node, ptr %a48, i32 0, i32 9 - %t57 = getelementptr inbounds { ptr, i64, i64 }, ptr %t56, i32 0, i32 1 - %t58 = load %S.ast.Node, ptr %a4 - store %S.ast.Node %t58, ptr %a59 - call void @finch.copy.S_ast_Node(ptr %a60, ptr %a59) - %t61 = load %S.ast.Node, ptr %a60 - %t62 = load i64, ptr %t57 - %t63 = add i64 %t62, 1 - call void @finch_arr_reserve(ptr %t56, i64 %t63, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t64 = load ptr, ptr %t56 - %t65 = getelementptr inbounds %S.ast.Node, ptr %t64, i64 %t62 - store %S.ast.Node %t61, ptr %t65 - store i64 %t63, ptr %t57 - %t66 = getelementptr inbounds %S.ast.Node, ptr %a48, i32 0, i32 9 +ok1791: + %t63 = getelementptr inbounds %S.parser.Parser, ptr %t61, i32 0, i32 2 + %t64 = load i64, ptr %t63 + %t65 = add i64 %t64, 1 + store i64 %t65, ptr %t63 + %t66 = getelementptr inbounds %S.ast.Node, ptr %a57, i32 0, i32 9 %t67 = getelementptr inbounds { ptr, i64, i64 }, ptr %t66, i32 0, i32 1 - %t68 = load ptr, ptr %a1 - %t69 = call %S.ast.Node @finch.parser.parseExpr(ptr %t68) - %t70 = load i64, ptr %t67 - %t71 = add i64 %t70, 1 - call void @finch_arr_reserve(ptr %t66, i64 %t71, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t72 = load ptr, ptr %t66 - %t73 = getelementptr inbounds %S.ast.Node, ptr %t72, i64 %t70 - store %S.ast.Node %t69, ptr %t73 - store i64 %t71, ptr %t67 - %t74 = load ptr, ptr %a1 - %t75 = icmp eq ptr %t74, null - br i1 %t75, label %panic1731, label %ok1732 -panic1731: - call void @finch_panic(ptr @.str.984, i64 676, ptr @.str.985) + %t68 = load %S.ast.Node, ptr %a4 + store %S.ast.Node %t68, ptr %a69 + call void @finch.copy.S_ast_Node(ptr %a70, ptr %a69) + %t71 = load %S.ast.Node, ptr %a70 + %t72 = load i64, ptr %t67 + %t73 = add i64 %t72, 1 + call void @finch_arr_reserve(ptr %t66, i64 %t73, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t74 = load ptr, ptr %t66 + %t75 = getelementptr inbounds %S.ast.Node, ptr %t74, i64 %t72 + store %S.ast.Node %t71, ptr %t75 + store i64 %t73, ptr %t67 + %t76 = getelementptr inbounds %S.ast.Node, ptr %a57, i32 0, i32 9 + %t77 = getelementptr inbounds { ptr, i64, i64 }, ptr %t76, i32 0, i32 1 + %t78 = load ptr, ptr %a1 + %t79 = call %S.ast.Node @finch.parser.parseExpr(ptr %t78) + %t80 = load i64, ptr %t77 + %t81 = add i64 %t80, 1 + call void @finch_arr_reserve(ptr %t76, i64 %t81, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t82 = load ptr, ptr %t76 + %t83 = getelementptr inbounds %S.ast.Node, ptr %t82, i64 %t80 + store %S.ast.Node %t79, ptr %t83 + store i64 %t81, ptr %t77 + %t84 = load ptr, ptr %a1 + %t85 = icmp eq ptr %t84, null + br i1 %t85, label %panic1792, label %ok1793 +panic1792: + call void @finch_panic(ptr @.str.993, i64 676, ptr @.str.994) unreachable -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.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 %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 -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) - %t92 = load %S.ast.Node, ptr %a91 - ret %S.ast.Node %t92 +ok1793: + %t86 = getelementptr inbounds %S.parser.Parser, ptr %t84, i32 0, i32 2 + %t87 = load i64, ptr %t86 + %t88 = sub i64 %t87, 1 + store i64 %t88, ptr %t86 + %t89 = load ptr, ptr %a1 + %t90 = call %S.lexer.Token @finch.parser.expect(ptr %t89, { ptr, i64, i64 } { ptr @.str.995, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.996, i64 3, i64 0 }) + store %S.lexer.Token %t90, ptr %a91 + call void @finch.drop.S_lexer_Token(ptr %a91) + %t92 = load %S.ast.Node, ptr %a57 + store %S.ast.Node %t92, ptr %a93 + call void @finch.copy.S_ast_Node(ptr %a94, ptr %a93) + %t95 = load %S.ast.Node, ptr %a94 + %t96 = load %S.ast.Node, ptr %a4 + store %S.ast.Node %t95, ptr %a4 + store %S.ast.Node %t96, ptr %a97 + call void @finch.drop.S_ast_Node(ptr %a97) + call void @finch.drop.S_ast_Node(ptr %a57) + br label %endif1789 +else1788: + %t98 = load %S.ast.Node, ptr %a4 + ret %S.ast.Node %t98 +endif1789: + br label %endif1779 +endif1779: + br label %while.cond1774 +while.end1776: + %t99 = load %S.ast.Node, ptr %a4 + ret %S.ast.Node %t99 } define internal %S.ast.Node @finch.parser.parsePrimary(ptr %p0) { @@ -18325,69 +20427,84 @@ entry: %a21 = alloca { ptr, i64, i64 }, align 16 %a26 = alloca { ptr, i64, i64 }, align 16 %a27 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 + %a33 = alloca %S.lexer.Token, align 16 %a36 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca %S.ast.Node, align 16 - %a46 = alloca %S.ast.Node, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 + %a37 = alloca { ptr, i64, i64 }, align 16 + %a40 = 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 + %a51 = alloca { ptr, i64, i64 }, align 16 + %a52 = alloca { ptr, i64, i64 }, align 16 + %a57 = alloca %S.lexer.Token, align 16 %a60 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca %S.ast.Node, align 16 - %a64 = alloca %S.ast.Node, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 + %a64 = alloca { ptr, i64, i64 }, align 16 + %a65 = alloca { ptr, i64, i64 }, align 16 %a68 = 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 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca %S.ast.Node, align 16 - %a87 = alloca %S.ast.Node, align 16 + %a76 = alloca { ptr, i64, i64 }, align 16 + %a77 = alloca { ptr, i64, i64 }, align 16 + %a83 = alloca %S.lexer.Token, align 16 + %a86 = alloca { ptr, i64, i64 }, align 16 + %a89 = alloca { ptr, i64, i64 }, align 16 %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca %S.ast.Node, align 16 - %a99 = alloca %S.ast.Node, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca %S.ast.Node, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 + %a93 = alloca { ptr, i64, i64 }, align 16 + %a96 = alloca { ptr, i64, i64 }, align 16 + %a97 = alloca { ptr, i64, i64 }, align 16 + %a102 = alloca %S.lexer.Token, align 16 + %a105 = alloca { ptr, i64, i64 }, align 16 + %a108 = alloca { ptr, i64, i64 }, align 16 + %a109 = alloca { ptr, i64, i64 }, align 16 + %a114 = alloca %S.lexer.Token, align 16 + %a122 = alloca %S.ast.Node, align 16 + %a130 = alloca %S.lexer.Token, align 16 %a133 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 + %a134 = alloca { ptr, i64, i64 }, align 16 + %a140 = alloca { ptr, i64, i64 }, align 16 + %a141 = alloca { ptr, i64, i64 }, align 16 + %a146 = alloca %S.lexer.Token, align 16 %a149 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca %S.ast.Node, align 16 - %a203 = alloca %S.ast.Node, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a235 = 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 + %a167 = alloca %S.lexer.Token, align 16 + %a170 = alloca { ptr, i64, i64 }, align 16 + %a191 = alloca { ptr, i64, i64 }, align 16 + %a194 = alloca { ptr, i64, i64 }, align 16 + %a195 = alloca { ptr, i64, i64 }, align 16 + %a200 = alloca %S.lexer.Token, align 16 + %a219 = alloca %S.lexer.Token, align 16 + %a222 = alloca { ptr, i64, i64 }, align 16 + %a223 = alloca { ptr, i64, i64 }, align 16 + %a228 = alloca %S.lexer.Token, align 16 + %a232 = alloca { ptr, i64, i64 }, align 16 + %a233 = alloca { ptr, i64, i64 }, align 16 %a236 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca %S.ast.Node, align 16 - %a265 = alloca %S.ast.Node, align 16 - %a277 = alloca %S.ast.Node, align 16 - %a278 = alloca %S.ast.Node, align 16 - %a282 = alloca %S.ast.Node, align 16 - %a283 = alloca %S.ast.Node, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a290 = 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 - %a298 = alloca %S.ast.Node, align 16 - %a299 = alloca %S.ast.Node, align 16 + %a254 = alloca { ptr, i64, i64 }, align 16 + %a255 = alloca { ptr, i64, i64 }, align 16 + %a264 = alloca %S.lexer.Token, align 16 + %a268 = alloca %S.ast.Type, align 16 + %a283 = alloca %S.lexer.Token, align 16 + %a286 = alloca { ptr, i64, i64 }, align 16 + %a294 = alloca %S.lexer.Token, align 16 + %a299 = alloca { ptr, i64, i64 }, align 16 + %a304 = 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 + %a313 = alloca { ptr, i64, i64 }, align 16 + %a315 = 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 + %a320 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 %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.988, i64 0, i64 0 }) + %t6 = call %S.ast.Node @finch.parser.node(ptr %t5, { ptr, i64, i64 } { ptr @.str.997, 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 @@ -18397,494 +20514,608 @@ 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.989, i64 3, i64 0 }, ptr %a16 + store { ptr, i64, i64 } { ptr @.str.998, 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.from1733 -logic.from1733: - br i1 %t18, label %logic.end1735, label %logic.rhs1734 -logic.rhs1734: + br label %logic.from1794 +logic.from1794: + br i1 %t18, label %logic.end1796, label %logic.rhs1795 +logic.rhs1795: %t19 = load { ptr, i64, i64 }, ptr %a13 store { ptr, i64, i64 } %t19, ptr %a20 - store { ptr, i64, i64 } { ptr @.str.990, i64 5, i64 0 }, ptr %a21 + store { ptr, i64, i64 } { ptr @.str.999, 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.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: + br label %logic.rend1797 +logic.rend1797: + br label %logic.end1796 +logic.end1796: + %t24 = phi i1 [ true, %logic.from1794 ], [ %t23, %logic.rend1797 ] + br label %logic.from1798 +logic.from1798: + br i1 %t24, label %logic.end1800, label %logic.rhs1799 +logic.rhs1799: %t25 = load { ptr, i64, i64 }, ptr %a13 store { ptr, i64, i64 } %t25, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.991, i64 4, i64 0 }, ptr %a27 + store { ptr, i64, i64 } { ptr @.str.1000, 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.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: + br label %logic.rend1801 +logic.rend1801: + br label %logic.end1800 +logic.end1800: + %t30 = phi i1 [ true, %logic.from1798 ], [ %t29, %logic.rend1801 ] + br i1 %t30, label %then1802, label %endif1804 +then1802: %t31 = load ptr, ptr %a1 %t32 = call %S.lexer.Token @finch.parser.next(ptr %t31) - %t33 = load { ptr, i64, i64 }, ptr %a13 - %t34 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - store { ptr, i64, i64 } %t33, ptr %a35 - call void @finch_str_copy(ptr %a36, ptr %a35) - %t37 = load { ptr, i64, i64 }, ptr %a36 - store { ptr, i64, i64 } %t37, ptr %t34 - %t38 = getelementptr inbounds %S.lexer.Token, ptr %a4, i32 0, i32 1 - %t39 = load { ptr, i64, i64 }, ptr %t38 - %t40 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 4 - store { ptr, i64, i64 } %t39, ptr %a41 - call void @finch_str_copy(ptr %a42, ptr %a41) - %t43 = load { ptr, i64, i64 }, ptr %a42 - store { ptr, i64, i64 } %t43, ptr %t40 - %t44 = load %S.ast.Node, ptr %a7 - store %S.ast.Node %t44, ptr %a45 - call void @finch.copy.S_ast_Node(ptr %a46, ptr %a45) - %t47 = load %S.ast.Node, ptr %a46 - ret %S.ast.Node %t47 -endif1743: - %t48 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t48, ptr %a49 - 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 %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.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 - store { ptr, i64, i64 } %t57, ptr %a59 - call void @finch_str_copy(ptr %a60, ptr %a59) - %t61 = load { ptr, i64, i64 }, ptr %a60 - store { ptr, i64, i64 } %t61, ptr %t58 - %t62 = load %S.ast.Node, ptr %a7 - store %S.ast.Node %t62, ptr %a63 - call void @finch.copy.S_ast_Node(ptr %a64, ptr %a63) - %t65 = load %S.ast.Node, ptr %a64 - ret %S.ast.Node %t65 -endif1746: - %t66 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t66, ptr %a67 - 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.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.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.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.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 - call void @finch_str_copy(ptr %a83, ptr %a82) - %t84 = load { ptr, i64, i64 }, ptr %a83 - store { ptr, i64, i64 } %t84, ptr %t81 - %t85 = load %S.ast.Node, ptr %a7 - 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 -endif1753: - %t89 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t89, ptr %a90 - 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 %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.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 -endif1756: - %t101 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t101, ptr %a102 - 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 %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 %panic1760, label %ok1761 -panic1760: - call void @finch_panic(ptr @.str.1000, i64 715, ptr @.str.1001) + store %S.lexer.Token %t32, ptr %a33 + call void @finch.drop.S_lexer_Token(ptr %a33) + %t34 = load { ptr, i64, i64 }, ptr %a13 + %t35 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 + store { ptr, i64, i64 } %t34, ptr %a36 + call void @finch_str_copy(ptr %a37, ptr %a36) + %t38 = load { ptr, i64, i64 }, ptr %a37 + %t39 = load { ptr, i64, i64 }, ptr %t35 + store { ptr, i64, i64 } %t38, ptr %t35 + store { ptr, i64, i64 } %t39, ptr %a40 + call void @finch_str_drop(ptr %a40) + %t41 = getelementptr inbounds %S.lexer.Token, ptr %a4, i32 0, i32 1 + %t42 = load { ptr, i64, i64 }, ptr %t41 + %t43 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 4 + store { ptr, i64, i64 } %t42, ptr %a44 + call void @finch_str_copy(ptr %a45, ptr %a44) + %t46 = load { ptr, i64, i64 }, ptr %a45 + %t47 = load { ptr, i64, i64 }, ptr %t43 + store { ptr, i64, i64 } %t46, ptr %t43 + store { ptr, i64, i64 } %t47, ptr %a48 + call void @finch_str_drop(ptr %a48) + %t49 = load %S.ast.Node, ptr %a7 + call void @finch_str_drop(ptr %a13) + call void @finch.drop.S_lexer_Token(ptr %a4) + ret %S.ast.Node %t49 +endif1804: + %t50 = load { ptr, i64, i64 }, ptr %a13 + store { ptr, i64, i64 } %t50, ptr %a51 + store { ptr, i64, i64 } { ptr @.str.1001, i64 6, i64 0 }, ptr %a52 + %t53 = call i32 @finch_str_eq(ptr %a51, ptr %a52) + %t54 = icmp ne i32 %t53, 0 + br i1 %t54, label %then1805, label %endif1807 +then1805: + %t55 = load ptr, ptr %a1 + %t56 = call %S.lexer.Token @finch.parser.next(ptr %t55) + store %S.lexer.Token %t56, ptr %a57 + call void @finch.drop.S_lexer_Token(ptr %a57) + %t58 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 + %t59 = load { ptr, i64, i64 }, ptr %t58 + store { ptr, i64, i64 } { ptr @.str.1002, i64 3, i64 0 }, ptr %t58 + store { ptr, i64, i64 } %t59, ptr %a60 + call void @finch_str_drop(ptr %a60) + %t61 = getelementptr inbounds %S.lexer.Token, ptr %a4, i32 0, i32 1 + %t62 = load { ptr, i64, i64 }, ptr %t61 + %t63 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 4 + store { ptr, i64, i64 } %t62, ptr %a64 + call void @finch_str_copy(ptr %a65, ptr %a64) + %t66 = load { ptr, i64, i64 }, ptr %a65 + %t67 = load { ptr, i64, i64 }, ptr %t63 + store { ptr, i64, i64 } %t66, ptr %t63 + store { ptr, i64, i64 } %t67, ptr %a68 + call void @finch_str_drop(ptr %a68) + %t69 = load %S.ast.Node, ptr %a7 + call void @finch_str_drop(ptr %a13) + call void @finch.drop.S_lexer_Token(ptr %a4) + ret %S.ast.Node %t69 +endif1807: + %t70 = load { ptr, i64, i64 }, ptr %a13 + store { ptr, i64, i64 } %t70, ptr %a71 + store { ptr, i64, i64 } { ptr @.str.1003, i64 4, i64 0 }, ptr %a72 + %t73 = call i32 @finch_str_eq(ptr %a71, ptr %a72) + %t74 = icmp ne i32 %t73, 0 + br label %logic.from1808 +logic.from1808: + br i1 %t74, label %logic.end1810, label %logic.rhs1809 +logic.rhs1809: + %t75 = load { ptr, i64, i64 }, ptr %a13 + store { ptr, i64, i64 } %t75, ptr %a76 + store { ptr, i64, i64 } { ptr @.str.1004, i64 5, i64 0 }, ptr %a77 + %t78 = call i32 @finch_str_eq(ptr %a76, ptr %a77) + %t79 = icmp ne i32 %t78, 0 + br label %logic.rend1811 +logic.rend1811: + br label %logic.end1810 +logic.end1810: + %t80 = phi i1 [ true, %logic.from1808 ], [ %t79, %logic.rend1811 ] + br i1 %t80, label %then1812, label %endif1814 +then1812: + %t81 = load ptr, ptr %a1 + %t82 = call %S.lexer.Token @finch.parser.next(ptr %t81) + store %S.lexer.Token %t82, ptr %a83 + call void @finch.drop.S_lexer_Token(ptr %a83) + %t84 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 + %t85 = load { ptr, i64, i64 }, ptr %t84 + store { ptr, i64, i64 } { ptr @.str.1005, i64 4, i64 0 }, ptr %t84 + store { ptr, i64, i64 } %t85, ptr %a86 + call void @finch_str_drop(ptr %a86) + %t87 = load { ptr, i64, i64 }, ptr %a13 + %t88 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 4 + store { ptr, i64, i64 } %t87, ptr %a89 + call void @finch_str_copy(ptr %a90, ptr %a89) + %t91 = load { ptr, i64, i64 }, ptr %a90 + %t92 = load { ptr, i64, i64 }, ptr %t88 + store { ptr, i64, i64 } %t91, ptr %t88 + store { ptr, i64, i64 } %t92, ptr %a93 + call void @finch_str_drop(ptr %a93) + %t94 = load %S.ast.Node, ptr %a7 + call void @finch_str_drop(ptr %a13) + call void @finch.drop.S_lexer_Token(ptr %a4) + ret %S.ast.Node %t94 +endif1814: + %t95 = load { ptr, i64, i64 }, ptr %a13 + store { ptr, i64, i64 } %t95, ptr %a96 + store { ptr, i64, i64 } { ptr @.str.1006, i64 4, i64 0 }, ptr %a97 + %t98 = call i32 @finch_str_eq(ptr %a96, ptr %a97) + %t99 = icmp ne i32 %t98, 0 + br i1 %t99, label %then1815, label %endif1817 +then1815: + %t100 = load ptr, ptr %a1 + %t101 = call %S.lexer.Token @finch.parser.next(ptr %t100) + store %S.lexer.Token %t101, ptr %a102 + call void @finch.drop.S_lexer_Token(ptr %a102) + %t103 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 + %t104 = load { ptr, i64, i64 }, ptr %t103 + store { ptr, i64, i64 } { ptr @.str.1007, i64 4, i64 0 }, ptr %t103 + store { ptr, i64, i64 } %t104, ptr %a105 + call void @finch_str_drop(ptr %a105) + %t106 = load %S.ast.Node, ptr %a7 + call void @finch_str_drop(ptr %a13) + call void @finch.drop.S_lexer_Token(ptr %a4) + ret %S.ast.Node %t106 +endif1817: + %t107 = load { ptr, i64, i64 }, ptr %a13 + store { ptr, i64, i64 } %t107, ptr %a108 + store { ptr, i64, i64 } { ptr @.str.1008, i64 1, i64 0 }, ptr %a109 + %t110 = call i32 @finch_str_eq(ptr %a108, ptr %a109) + %t111 = icmp ne i32 %t110, 0 + br i1 %t111, label %then1818, label %endif1820 +then1818: + %t112 = load ptr, ptr %a1 + %t113 = call %S.lexer.Token @finch.parser.next(ptr %t112) + store %S.lexer.Token %t113, ptr %a114 + call void @finch.drop.S_lexer_Token(ptr %a114) + %t115 = load ptr, ptr %a1 + %t116 = icmp eq ptr %t115, null + br i1 %t116, label %panic1821, label %ok1822 +panic1821: + call void @finch_panic(ptr @.str.1009, i64 715, ptr @.str.1010) unreachable -ok1761: - %t110 = getelementptr inbounds %S.parser.Parser, ptr %t108, i32 0, i32 2 - %t111 = load i64, ptr %t110 - %t112 = add i64 %t111, 1 - store i64 %t112, ptr %t110 - %t113 = load ptr, ptr %a1 - %t114 = call %S.ast.Node @finch.parser.parseExpr(ptr %t113) - store %S.ast.Node %t114, ptr %a115 - %t116 = load ptr, ptr %a1 - %t117 = icmp eq ptr %t116, null - br i1 %t117, label %panic1762, label %ok1763 -panic1762: - call void @finch_panic(ptr @.str.1002, i64 717, ptr @.str.1003) +ok1822: + %t117 = getelementptr inbounds %S.parser.Parser, ptr %t115, i32 0, i32 2 + %t118 = load i64, ptr %t117 + %t119 = add i64 %t118, 1 + store i64 %t119, ptr %t117 + %t120 = load ptr, ptr %a1 + %t121 = call %S.ast.Node @finch.parser.parseExpr(ptr %t120) + store %S.ast.Node %t121, ptr %a122 + %t123 = load ptr, ptr %a1 + %t124 = icmp eq ptr %t123, null + br i1 %t124, label %panic1823, label %ok1824 +panic1823: + call void @finch_panic(ptr @.str.1011, i64 717, ptr @.str.1012) unreachable -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.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 -endif1759: - %t124 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t124, ptr %a125 - 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 %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 -endif1766: - %t131 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t131, ptr %a132 - 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 %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.1008, i64 5, i64 0 }, ptr %t138 - %t139 = load ptr, ptr %a1 - %t140 = icmp eq ptr %t139, null - br i1 %t140, label %panic1770, label %ok1771 -panic1770: - call void @finch_panic(ptr @.str.1009, i64 727, ptr @.str.1010) - unreachable -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 +ok1824: + %t125 = getelementptr inbounds %S.parser.Parser, ptr %t123, i32 0, i32 2 + %t126 = load i64, ptr %t125 + %t127 = sub i64 %t126, 1 + store i64 %t127, ptr %t125 + %t128 = load ptr, ptr %a1 + %t129 = call %S.lexer.Token @finch.parser.expect(ptr %t128, { ptr, i64, i64 } { ptr @.str.1013, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.1014, i64 3, i64 0 }) + store %S.lexer.Token %t129, ptr %a130 + call void @finch.drop.S_lexer_Token(ptr %a130) + %t131 = load %S.ast.Node, ptr %a122 + call void @finch_str_drop(ptr %a13) + call void @finch.drop.S_ast_Node(ptr %a7) + call void @finch.drop.S_lexer_Token(ptr %a4) + ret %S.ast.Node %t131 +endif1820: + %t132 = load { ptr, i64, i64 }, ptr %a13 + store { ptr, i64, i64 } %t132, ptr %a133 + store { ptr, i64, i64 } { ptr @.str.1015, i64 5, i64 0 }, ptr %a134 + %t135 = call i32 @finch_str_eq(ptr %a133, ptr %a134) + %t136 = icmp ne i32 %t135, 0 + br i1 %t136, label %then1825, label %endif1827 +then1825: + %t137 = load ptr, ptr %a1 + %t138 = call %S.ast.Node @finch.parser.parseMatch(ptr %t137, i1 true) + call void @finch_str_drop(ptr %a13) + call void @finch.drop.S_ast_Node(ptr %a7) + call void @finch.drop.S_lexer_Token(ptr %a4) + ret %S.ast.Node %t138 +endif1827: + %t139 = load { ptr, i64, i64 }, ptr %a13 + store { ptr, i64, i64 } %t139, ptr %a140 + store { ptr, i64, i64 } { ptr @.str.1016, i64 1, i64 0 }, ptr %a141 + %t142 = call i32 @finch_str_eq(ptr %a140, ptr %a141) + %t143 = icmp ne i32 %t142, 0 + br i1 %t143, label %then1828, label %endif1830 +then1828: %t144 = load ptr, ptr %a1 - %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.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.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.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.1014, i64 1, i64 0 }) - %t158 = xor i1 %t157, true - 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 - %t162 = call %S.ast.Node @finch.parser.parseExpr(ptr %t161) - %t163 = load i64, ptr %t160 - %t164 = add i64 %t163, 1 - call void @finch_arr_reserve(ptr %t159, i64 %t164, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t165 = load ptr, ptr %t159 - %t166 = getelementptr inbounds %S.ast.Node, ptr %t165, i64 %t163 - store %S.ast.Node %t162, ptr %t166 - store i64 %t164, ptr %t160 - %t167 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 9 - %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.from1782 -logic.from1782: - br i1 %t170, label %logic.rhs1783, label %logic.end1784 -logic.rhs1783: + %t145 = call %S.lexer.Token @finch.parser.next(ptr %t144) + store %S.lexer.Token %t145, ptr %a146 + call void @finch.drop.S_lexer_Token(ptr %a146) + %t147 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 + %t148 = load { ptr, i64, i64 }, ptr %t147 + store { ptr, i64, i64 } { ptr @.str.1017, i64 5, i64 0 }, ptr %t147 + store { ptr, i64, i64 } %t148, ptr %a149 + call void @finch_str_drop(ptr %a149) + %t150 = load ptr, ptr %a1 + %t151 = icmp eq ptr %t150, null + br i1 %t151, label %panic1831, label %ok1832 +panic1831: + call void @finch_panic(ptr @.str.1018, i64 727, ptr @.str.1019) + unreachable +ok1832: + %t152 = getelementptr inbounds %S.parser.Parser, ptr %t150, i32 0, i32 2 + %t153 = load i64, ptr %t152 + %t154 = add i64 %t153, 1 + store i64 %t154, ptr %t152 + %t155 = load ptr, ptr %a1 + %t156 = call i1 @finch.parser.at(ptr %t155, { ptr, i64, i64 } { ptr @.str.1020, i64 1, i64 0 }) + br label %logic.from1833 +logic.from1833: + br i1 %t156, label %logic.rhs1834, label %logic.end1835 +logic.rhs1834: + %t157 = load ptr, ptr %a1 + %t158 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t157, i64 1) + store { ptr, i64, i64 } %t158, ptr %a159 + store { ptr, i64, i64 } { ptr @.str.1021, i64 1, i64 0 }, ptr %a160 + %t161 = call i32 @finch_str_eq(ptr %a159, ptr %a160) + %t162 = icmp ne i32 %t161, 0 + store { ptr, i64, i64 } %t158, ptr %a163 + call void @finch_str_drop(ptr %a163) + br label %logic.rend1836 +logic.rend1836: + br label %logic.end1835 +logic.end1835: + %t164 = phi i1 [ false, %logic.from1833 ], [ %t162, %logic.rend1836 ] + br i1 %t164, label %then1837, label %endif1839 +then1837: + %t165 = load ptr, ptr %a1 + %t166 = call %S.lexer.Token @finch.parser.next(ptr %t165) + store %S.lexer.Token %t166, ptr %a167 + call void @finch.drop.S_lexer_Token(ptr %a167) + %t168 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 + %t169 = load { ptr, i64, i64 }, ptr %t168 + store { ptr, i64, i64 } { ptr @.str.1022, i64 3, i64 0 }, ptr %t168 + store { ptr, i64, i64 } %t169, ptr %a170 + call void @finch_str_drop(ptr %a170) + br label %endif1839 +endif1839: + br label %while.cond1840 +while.cond1840: %t171 = load ptr, ptr %a1 - %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.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.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 %then1789, label %endif1791 -then1789: - %t181 = load ptr, ptr %a1 - %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 - %t186 = call %S.ast.Node @finch.parser.parseExpr(ptr %t185) - %t187 = load i64, ptr %t184 - %t188 = add i64 %t187, 1 - call void @finch_arr_reserve(ptr %t183, i64 %t188, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t189 = load ptr, ptr %t183 - %t190 = getelementptr inbounds %S.ast.Node, ptr %t189, i64 %t187 - store %S.ast.Node %t186, ptr %t190 - store i64 %t188, ptr %t184 - br label %endif1791 -endif1791: - %t191 = load ptr, ptr %a1 - %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 %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 %panic1795, label %ok1796 -panic1795: - call void @finch_panic(ptr @.str.1021, i64 745, ptr @.str.1022) + %t172 = call i1 @finch.parser.at(ptr %t171, { ptr, i64, i64 } { ptr @.str.1023, i64 1, i64 0 }) + %t173 = xor i1 %t172, true + br i1 %t173, label %while.body1841, label %while.end1842 +while.body1841: + %t174 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 9 + %t175 = getelementptr inbounds { ptr, i64, i64 }, ptr %t174, i32 0, i32 1 + %t176 = load ptr, ptr %a1 + %t177 = call %S.ast.Node @finch.parser.parseExpr(ptr %t176) + %t178 = load i64, ptr %t175 + %t179 = add i64 %t178, 1 + call void @finch_arr_reserve(ptr %t174, i64 %t179, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t180 = load ptr, ptr %t174 + %t181 = getelementptr inbounds %S.ast.Node, ptr %t180, i64 %t178 + store %S.ast.Node %t177, ptr %t181 + store i64 %t179, ptr %t175 + %t182 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 9 + %t183 = getelementptr inbounds { ptr, i64, i64 }, ptr %t182, i32 0, i32 1 + %t184 = load i64, ptr %t183 + %t185 = icmp eq i64 %t184, 1 + br label %logic.from1843 +logic.from1843: + br i1 %t185, label %logic.rhs1844, label %logic.end1845 +logic.rhs1844: + %t186 = load ptr, ptr %a1 + %t187 = call i1 @finch.parser.at(ptr %t186, { ptr, i64, i64 } { ptr @.str.1024, i64 1, i64 0 }) + br label %logic.rend1846 +logic.rend1846: + br label %logic.end1845 +logic.end1845: + %t188 = phi i1 [ false, %logic.from1843 ], [ %t187, %logic.rend1846 ] + br i1 %t188, label %then1847, label %endif1849 +then1847: + %t189 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 + %t190 = load { ptr, i64, i64 }, ptr %t189 + store { ptr, i64, i64 } { ptr @.str.1025, i64 3, i64 0 }, ptr %t189 + store { ptr, i64, i64 } %t190, ptr %a191 + call void @finch_str_drop(ptr %a191) + br label %endif1849 +endif1849: + %t192 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 + %t193 = load { ptr, i64, i64 }, ptr %t192 + store { ptr, i64, i64 } %t193, ptr %a194 + store { ptr, i64, i64 } { ptr @.str.1026, i64 3, i64 0 }, ptr %a195 + %t196 = call i32 @finch_str_eq(ptr %a194, ptr %a195) + %t197 = icmp ne i32 %t196, 0 + br i1 %t197, label %then1850, label %endif1852 +then1850: + %t198 = load ptr, ptr %a1 + %t199 = call %S.lexer.Token @finch.parser.expect(ptr %t198, { ptr, i64, i64 } { ptr @.str.1027, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.1028, i64 41, i64 0 }) + store %S.lexer.Token %t199, ptr %a200 + call void @finch.drop.S_lexer_Token(ptr %a200) + %t201 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 9 + %t202 = getelementptr inbounds { ptr, i64, i64 }, ptr %t201, i32 0, i32 1 + %t203 = load ptr, ptr %a1 + %t204 = call %S.ast.Node @finch.parser.parseExpr(ptr %t203) + %t205 = load i64, ptr %t202 + %t206 = add i64 %t205, 1 + call void @finch_arr_reserve(ptr %t201, i64 %t206, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t207 = load ptr, ptr %t201 + %t208 = getelementptr inbounds %S.ast.Node, ptr %t207, i64 %t205 + store %S.ast.Node %t204, ptr %t208 + store i64 %t206, ptr %t202 + br label %endif1852 +endif1852: + %t209 = load ptr, ptr %a1 + %t210 = call i1 @finch.parser.accept(ptr %t209, { ptr, i64, i64 } { ptr @.str.1029, i64 1, i64 0 }) + %t211 = xor i1 %t210, true + br i1 %t211, label %then1853, label %endif1855 +then1853: + br label %while.end1842 +endif1855: + br label %while.cond1840 +while.end1842: + %t212 = load ptr, ptr %a1 + %t213 = icmp eq ptr %t212, null + br i1 %t213, label %panic1856, label %ok1857 +panic1856: + call void @finch_panic(ptr @.str.1030, i64 745, ptr @.str.1031) unreachable -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.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 -endif1769: - %t205 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t205, ptr %a206 - 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 %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 - %t213 = load { ptr, i64, i64 }, ptr %t212 - %t214 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 1 - store { ptr, i64, i64 } %t213, ptr %a215 - call void @finch_str_copy(ptr %a216, ptr %a215) - %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.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 %panic1803, label %ok1804 -panic1803: - call void @finch_panic(ptr @.str.1027, i64 752, ptr @.str.1028) +ok1857: + %t214 = getelementptr inbounds %S.parser.Parser, ptr %t212, i32 0, i32 2 + %t215 = load i64, ptr %t214 + %t216 = sub i64 %t215, 1 + store i64 %t216, ptr %t214 + %t217 = load ptr, ptr %a1 + %t218 = call %S.lexer.Token @finch.parser.expect(ptr %t217, { ptr, i64, i64 } { ptr @.str.1032, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.1033, i64 3, i64 0 }) + store %S.lexer.Token %t218, ptr %a219 + call void @finch.drop.S_lexer_Token(ptr %a219) + %t220 = load %S.ast.Node, ptr %a7 + call void @finch_str_drop(ptr %a13) + call void @finch.drop.S_lexer_Token(ptr %a4) + ret %S.ast.Node %t220 +endif1830: + %t221 = load { ptr, i64, i64 }, ptr %a13 + store { ptr, i64, i64 } %t221, ptr %a222 + store { ptr, i64, i64 } { ptr @.str.1034, i64 5, i64 0 }, ptr %a223 + %t224 = call i32 @finch_str_eq(ptr %a222, ptr %a223) + %t225 = icmp ne i32 %t224, 0 + br i1 %t225, label %then1858, label %endif1860 +then1858: + %t226 = load ptr, ptr %a1 + %t227 = call %S.lexer.Token @finch.parser.next(ptr %t226) + store %S.lexer.Token %t227, ptr %a228 + call void @finch.drop.S_lexer_Token(ptr %a228) + %t229 = getelementptr inbounds %S.lexer.Token, ptr %a4, i32 0, i32 1 + %t230 = load { ptr, i64, i64 }, ptr %t229 + %t231 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 1 + store { ptr, i64, i64 } %t230, ptr %a232 + call void @finch_str_copy(ptr %a233, ptr %a232) + %t234 = load { ptr, i64, i64 }, ptr %a233 + %t235 = load { ptr, i64, i64 }, ptr %t231 + store { ptr, i64, i64 } %t234, ptr %t231 + store { ptr, i64, i64 } %t235, ptr %a236 + call void @finch_str_drop(ptr %a236) + %t237 = load ptr, ptr %a1 + %t238 = call i1 @finch.parser.at(ptr %t237, { ptr, i64, i64 } { ptr @.str.1035, i64 1, i64 0 }) + br label %logic.from1861 +logic.from1861: + br i1 %t238, label %logic.rhs1862, label %logic.end1863 +logic.rhs1862: + %t239 = load ptr, ptr %a1 + %t240 = icmp eq ptr %t239, null + br i1 %t240, label %panic1864, label %ok1865 +panic1864: + call void @finch_panic(ptr @.str.1036, i64 752, ptr @.str.1037) unreachable -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 %panic1805, label %ok1806 -panic1805: - call void @finch_panic(ptr @.str.1029, i64 752, ptr @.str.1030) +ok1865: + %t241 = getelementptr inbounds %S.parser.Parser, ptr %t239, i32 0, i32 0 + %t242 = load ptr, ptr %a1 + %t243 = icmp eq ptr %t242, null + br i1 %t243, label %panic1866, label %ok1867 +panic1866: + call void @finch_panic(ptr @.str.1038, i64 752, ptr @.str.1039) unreachable -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 %range1807, label %inrange1808 -range1807: - call void @finch_panic_index(ptr @.str.1031, i64 752, i64 %t227, i64 %t229) +ok1867: + %t244 = getelementptr inbounds %S.parser.Parser, ptr %t242, i32 0, i32 1 + %t245 = load i64, ptr %t244 + %t246 = sub i64 %t245, 1 + %t247 = load { ptr, i64, i64 }, ptr %t241 + %t248 = extractvalue { ptr, i64, i64 } %t247, 1 + %t249 = icmp uge i64 %t246, %t248 + br i1 %t249, label %range1868, label %inrange1869 +range1868: + call void @finch_panic_index(ptr @.str.1040, i64 752, i64 %t246, i64 %t248) unreachable -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.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.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.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.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.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 - %t250 = load ptr, ptr %a1 - %t251 = call %S.ast.Type @finch.parser.parseType(ptr %t250) - %t252 = load i64, ptr %t249 - %t253 = add i64 %t252, 1 - call void @finch_arr_reserve(ptr %t248, i64 %t253, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t254 = load ptr, ptr %t248 - %t255 = getelementptr inbounds %S.ast.Type, ptr %t254, i64 %t252 - 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.1034, i64 1, i64 0 }) - %t258 = xor i1 %t257, true - br i1 %t258, label %then1820, label %endif1822 -then1820: - br label %while.end1819 -endif1822: - br label %while.cond1817 -while.end1819: +inrange1869: + %t250 = extractvalue { ptr, i64, i64 } %t247, 0 + %t251 = getelementptr inbounds %S.lexer.Token, ptr %t250, i64 %t246 + %t252 = getelementptr inbounds %S.lexer.Token, ptr %t251, i32 0, i32 0 + %t253 = load { ptr, i64, i64 }, ptr %t252 + store { ptr, i64, i64 } %t253, ptr %a254 + store { ptr, i64, i64 } { ptr @.str.1041, i64 5, i64 0 }, ptr %a255 + %t256 = call i32 @finch_str_eq(ptr %a254, ptr %a255) + %t257 = icmp ne i32 %t256, 0 + br label %logic.rend1870 +logic.rend1870: + br label %logic.end1863 +logic.end1863: + %t258 = phi i1 [ false, %logic.from1861 ], [ %t257, %logic.rend1870 ] + br label %logic.from1871 +logic.from1871: + br i1 %t258, label %logic.rhs1872, label %logic.end1873 +logic.rhs1872: %t259 = load ptr, ptr %a1 - %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.1037, i64 4, i64 0 }, ptr %t261 + %t260 = call i1 @finch.parser.genericCallAheadFrom(ptr %t259) + br label %logic.rend1874 +logic.rend1874: + br label %logic.end1873 +logic.end1873: + %t261 = phi i1 [ false, %logic.from1871 ], [ %t260, %logic.rend1874 ] + br i1 %t261, label %then1875, label %endif1877 +then1875: %t262 = load ptr, ptr %a1 - call void @finch.parser.parseArgs(ptr %t262, ptr %a7) - %t263 = load %S.ast.Node, ptr %a7 - store %S.ast.Node %t263, ptr %a264 - call void @finch.copy.S_ast_Node(ptr %a265, ptr %a264) - %t266 = load %S.ast.Node, ptr %a265 - ret %S.ast.Node %t266 -endif1816: - %t267 = load ptr, ptr %a1 - %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.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.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 - store %S.ast.Node %t276, ptr %a277 - call void @finch.copy.S_ast_Node(ptr %a278, ptr %a277) - %t279 = load %S.ast.Node, ptr %a278 - ret %S.ast.Node %t279 -endif1829: - %t280 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - 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 -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.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.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) - %t297 = load %S.ast.Node, ptr %a7 - store %S.ast.Node %t297, ptr %a298 - call void @finch.copy.S_ast_Node(ptr %a299, ptr %a298) - %t300 = load %S.ast.Node, ptr %a299 - ret %S.ast.Node %t300 + %t263 = call %S.lexer.Token @finch.parser.next(ptr %t262) + store %S.lexer.Token %t263, ptr %a264 + call void @finch.drop.S_lexer_Token(ptr %a264) + %t265 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1042, i64 5, i64 0 }, 0 + %t266 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 5 + %t267 = load %S.ast.Type, ptr %t266 + store %S.ast.Type %t265, ptr %t266 + store %S.ast.Type %t267, ptr %a268 + call void @finch.drop.S_ast_Type(ptr %a268) + br label %while.cond1878 +while.cond1878: + br label %while.body1879 +while.body1879: + %t269 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 5 + %t270 = getelementptr inbounds %S.ast.Type, ptr %t269, i32 0, i32 1 + %t271 = getelementptr inbounds { ptr, i64, i64 }, ptr %t270, i32 0, i32 1 + %t272 = load ptr, ptr %a1 + %t273 = call %S.ast.Type @finch.parser.parseType(ptr %t272) + %t274 = load i64, ptr %t271 + %t275 = add i64 %t274, 1 + call void @finch_arr_reserve(ptr %t270, i64 %t275, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) + %t276 = load ptr, ptr %t270 + %t277 = getelementptr inbounds %S.ast.Type, ptr %t276, i64 %t274 + store %S.ast.Type %t273, ptr %t277 + store i64 %t275, ptr %t271 + %t278 = load ptr, ptr %a1 + %t279 = call i1 @finch.parser.accept(ptr %t278, { ptr, i64, i64 } { ptr @.str.1043, i64 1, i64 0 }) + %t280 = xor i1 %t279, true + br i1 %t280, label %then1881, label %endif1883 +then1881: + br label %while.end1880 +endif1883: + br label %while.cond1878 +while.end1880: + %t281 = load ptr, ptr %a1 + %t282 = call %S.lexer.Token @finch.parser.expect(ptr %t281, { ptr, i64, i64 } { ptr @.str.1044, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.1045, i64 28, i64 0 }) + store %S.lexer.Token %t282, ptr %a283 + call void @finch.drop.S_lexer_Token(ptr %a283) + %t284 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 + %t285 = load { ptr, i64, i64 }, ptr %t284 + store { ptr, i64, i64 } { ptr @.str.1046, i64 4, i64 0 }, ptr %t284 + store { ptr, i64, i64 } %t285, ptr %a286 + call void @finch_str_drop(ptr %a286) + %t287 = load ptr, ptr %a1 + call void @finch.parser.parseArgs(ptr %t287, ptr %a7) + %t288 = load %S.ast.Node, ptr %a7 + call void @finch_str_drop(ptr %a13) + call void @finch.drop.S_lexer_Token(ptr %a4) + ret %S.ast.Node %t288 +endif1877: + %t289 = load ptr, ptr %a1 + %t290 = call i1 @finch.parser.at(ptr %t289, { ptr, i64, i64 } { ptr @.str.1047, i64 1, i64 0 }) + br label %logic.from1884 +logic.from1884: + br i1 %t290, label %logic.rhs1885, label %logic.end1886 +logic.rhs1885: + %t291 = load ptr, ptr %a1 + %t292 = call %S.lexer.Token @finch.parser.cur(ptr %t291) + %t293 = extractvalue %S.lexer.Token %t292, 4 + store %S.lexer.Token %t292, ptr %a294 + call void @finch.drop.S_lexer_Token(ptr %a294) + %t295 = xor i1 %t293, true + br label %logic.rend1887 +logic.rend1887: + br label %logic.end1886 +logic.end1886: + %t296 = phi i1 [ false, %logic.from1884 ], [ %t295, %logic.rend1887 ] + br i1 %t296, label %then1888, label %endif1890 +then1888: + %t297 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 + %t298 = load { ptr, i64, i64 }, ptr %t297 + store { ptr, i64, i64 } { ptr @.str.1048, i64 4, i64 0 }, ptr %t297 + store { ptr, i64, i64 } %t298, ptr %a299 + call void @finch_str_drop(ptr %a299) + %t300 = load ptr, ptr %a1 + call void @finch.parser.parseArgs(ptr %t300, ptr %a7) + %t301 = load %S.ast.Node, ptr %a7 + call void @finch_str_drop(ptr %a13) + call void @finch.drop.S_lexer_Token(ptr %a4) + ret %S.ast.Node %t301 +endif1890: + %t302 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 + %t303 = load { ptr, i64, i64 }, ptr %t302 + store { ptr, i64, i64 } { ptr @.str.1049, i64 3, i64 0 }, ptr %t302 + store { ptr, i64, i64 } %t303, ptr %a304 + call void @finch_str_drop(ptr %a304) + %t305 = load %S.ast.Node, ptr %a7 + call void @finch_str_drop(ptr %a13) + call void @finch.drop.S_lexer_Token(ptr %a4) + ret %S.ast.Node %t305 +endif1860: + %t306 = load ptr, ptr %a1 + %t307 = load %S.lexer.Token, ptr %a4 + %t308 = load %S.lexer.Token, ptr %a4 + %t309 = call { ptr, i64, i64 } @finch.parser.describe(%S.lexer.Token %t308) + store { ptr, i64, i64 } { ptr @.str.1050, i64 11, i64 0 }, ptr %a311 + store { ptr, i64, i64 } %t309, ptr %a312 + call void @finch_str_concat(ptr %a310, ptr %a311, ptr %a312) + store { ptr, i64, i64 } %t309, ptr %a313 + call void @finch_str_drop(ptr %a313) + %t314 = load { ptr, i64, i64 }, ptr %a310 + store { ptr, i64, i64 } %t314, ptr %a316 + store { ptr, i64, i64 } { ptr @.str.1051, i64 19, i64 0 }, ptr %a317 + call void @finch_str_concat(ptr %a315, ptr %a316, ptr %a317) + store { ptr, i64, i64 } %t314, ptr %a318 + call void @finch_str_drop(ptr %a318) + %t319 = load { ptr, i64, i64 }, ptr %a315 + call void @finch.parser.fail(ptr %t306, %S.lexer.Token %t307, { ptr, i64, i64 } %t319) + store { ptr, i64, i64 } %t319, ptr %a320 + call void @finch_str_drop(ptr %a320) + %t321 = load %S.ast.Node, ptr %a7 + call void @finch_str_drop(ptr %a13) + call void @finch.drop.S_lexer_Token(ptr %a4) + ret %S.ast.Node %t321 +} + +define internal void @finch.copy.arr_S_lexer_Token(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.lexer.Token, 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.cond1891 +n.cond1891: + %t6 = load i64, ptr %a5 + %t7 = icmp slt i64 %t6, %t4 + br i1 %t7, label %n.body1892, label %n.end1893 +n.body1892: + %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.cond1891 +n.end1893: + ret void +} + +define internal void @finch.drop.S_parser_Parser(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.parser.Parser, ptr %a, i32 0, i32 0 + call void @finch.drop.arr_S_lexer_Token(ptr %t1) + %t2 = getelementptr inbounds %S.parser.Parser, ptr %a, i32 0, i32 4 + call void @finch_str_drop(ptr %t2) + ret void } define internal %S.ast.Program @finch.parser.parse({ ptr, i64, i64 } %p0, i64 %p1, { ptr, i64, i64 } %p2) { @@ -18916,6 +21147,7 @@ entry: %t17 = insertvalue %S.parser.Parser %t12, { ptr, i64, i64 } %t16, 4 store %S.parser.Parser %t17, ptr %a18 %t19 = call %S.ast.Program @finch.parser.parseProgram(ptr %a18) + call void @finch.drop.S_parser_Parser(ptr %a18) ret %S.ast.Program %t19 } @@ -18934,24 +21166,30 @@ entry: %a14 = 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 + %a19 = 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 + store { ptr, i64, i64 } { ptr @.str.1053, i64 1, i64 0 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.1054, 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 + store { ptr, i64, i64 } { ptr @.str.1056, i64 1, i64 0 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.1057, 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 + store { ptr, i64, i64 } %t7, ptr %a13 + call void @finch_str_drop(ptr %a13) + store { ptr, i64, i64 } %t12, ptr %a14 + store { ptr, i64, i64 } { ptr @.str.1059, i64 1, i64 0 }, ptr %a16 + store { ptr, i64, i64 } { ptr @.str.1060, i64 1, i64 0 }, ptr %a17 + call void @finch_str_replace(ptr %a15, ptr %a14, ptr %a16, ptr %a17) + %t18 = load { ptr, i64, i64 }, ptr %a15 + store { ptr, i64, i64 } %t12, ptr %a19 + call void @finch_str_drop(ptr %a19) + ret { ptr, i64, i64 } %t18 } 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) { @@ -18970,50 +21208,70 @@ entry: %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 + %a36 = 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 + %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 + %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 + %a51 = 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 + %a59 = alloca { ptr, i64, i64 }, align 16 + %a60 = alloca { ptr, i64, i64 }, align 16 + %a62 = 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 + %a70 = 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 %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 + %a79 = 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 { 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 + %a90 = alloca { ptr, i64, i64 }, align 16 + %a93 = 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 %a98 = 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 + %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 - %a106 = alloca { ptr, i64, i64 }, align 16 + %a107 = 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 + %a115 = 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 + %a122 = 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 + %a126 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store %S.ast.Node %p1, ptr %a2 store i64 %p2, ptr %a3 @@ -19024,134 +21282,174 @@ entry: 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) + br i1 %t10, label %panic1894, label %ok1895 +panic1894: + call void @finch_panic(ptr @.str.1061, i64 215, ptr @.str.1062) unreachable -ok1831: - %t11 = getelementptr inbounds %S.gen.Gen, ptr %t9, i32 0, i32 26 +ok1895: + %t11 = getelementptr inbounds %S.gen.Gen, ptr %t9, i32 0, i32 27 %t12 = load i1, ptr %t11 %t13 = xor i1 %t12, true - br i1 %t13, label %then1832, label %endif1834 -then1832: + br i1 %t13, label %then1896, label %endif1898 +then1896: ret void -endif1834: +endif1898: %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) + br i1 %t15, label %panic1899, label %ok1900 +panic1899: + call void @finch_panic(ptr @.str.1063, i64 218, ptr @.str.1064) unreachable -ok1836: - %t16 = getelementptr inbounds %S.gen.Gen, ptr %t14, i32 0, i32 27 +ok1900: + %t16 = getelementptr inbounds %S.gen.Gen, ptr %t14, i32 0, i32 28 %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) + br i1 %t19, label %panic1901, label %ok1902 +panic1901: + call void @finch_panic(ptr @.str.1066, i64 218, ptr @.str.1067) unreachable -ok1838: +ok1902: %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) + br i1 %t25, label %range1903, label %inrange1904 +range1903: + call void @finch_panic_index(ptr @.str.1068, i64 218, i64 %t22, i64 %t24) unreachable -inrange1840: +inrange1904: %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 } { ptr @.str.1065, 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 + store { ptr, i64, i64 } { ptr @.str.1069, 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 + store { ptr, i64, i64 } %t32, ptr %a36 + call void @finch_str_drop(ptr %a36) + %t37 = load { ptr, i64, i64 }, ptr %a33 + %t38 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 + %t39 = load i64, ptr %t38 + call void @finch_str_from_int(ptr %a40, i64 %t39) + %t41 = load { ptr, i64, i64 }, ptr %a40 + store { ptr, i64, i64 } %t37, ptr %a43 + store { ptr, i64, i64 } %t41, ptr %a44 + call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) + store { ptr, i64, i64 } %t37, ptr %a45 + call void @finch_str_drop(ptr %a45) + store { ptr, i64, i64 } %t41, ptr %a46 + call void @finch_str_drop(ptr %a46) + %t47 = load { ptr, i64, i64 }, ptr %a42 + store { ptr, i64, i64 } %t47, ptr %a49 + store { ptr, i64, i64 } { ptr @.str.1070, i64 1, i64 0 }, ptr %a50 + call void @finch_str_concat(ptr %a48, ptr %a49, ptr %a50) + store { ptr, i64, i64 } %t47, ptr %a51 + call void @finch_str_drop(ptr %a51) + %t52 = load { ptr, i64, i64 }, ptr %a48 + %t53 = load i64, ptr %a3 + call void @finch_str_from_int(ptr %a54, i64 %t53) + %t55 = load { ptr, i64, i64 }, ptr %a54 + store { ptr, i64, i64 } %t52, 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 - %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 } %t52, ptr %a59 + call void @finch_str_drop(ptr %a59) + store { ptr, i64, i64 } %t55, ptr %a60 + call void @finch_str_drop(ptr %a60) + %t61 = load { ptr, i64, i64 }, ptr %a56 + store { ptr, i64, i64 } %t61, ptr %a63 + store { ptr, i64, i64 } { ptr @.str.1071, i64 1, i64 0 }, ptr %a64 + call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) + store { ptr, i64, i64 } %t61, ptr %a65 + call void @finch_str_drop(ptr %a65) + %t66 = load { ptr, i64, i64 }, ptr %a62 + %t67 = load i64, ptr %a4 + call void @finch_str_from_int(ptr %a68, i64 %t67) + %t69 = load { ptr, i64, i64 }, ptr %a68 + store { ptr, i64, i64 } %t66, ptr %a71 + store { ptr, i64, i64 } %t69, ptr %a72 + call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) + store { ptr, i64, i64 } %t66, ptr %a73 + call void @finch_str_drop(ptr %a73) + store { ptr, i64, i64 } %t69, ptr %a74 + call void @finch_str_drop(ptr %a74) + %t75 = load { ptr, i64, i64 }, ptr %a70 store { ptr, i64, i64 } %t75, ptr %a77 - store { ptr, i64, i64 } { ptr @.str.1064, i64 1, i64 0 }, ptr %a78 + store { ptr, i64, i64 } { ptr @.str.1072, 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 } %t75, ptr %a79 + call void @finch_str_drop(ptr %a79) + %t80 = load { ptr, i64, i64 }, ptr %a76 + %t81 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t80, ptr %a83 + store { ptr, i64, i64 } %t81, ptr %a84 + call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84) + store { ptr, i64, i64 } %t80, ptr %a85 + call void @finch_str_drop(ptr %a85) + %t86 = load { ptr, i64, i64 }, ptr %a82 store { ptr, i64, i64 } %t86, ptr %a88 - store { ptr, i64, i64 } { ptr @.str.1065, i64 1, i64 0 }, ptr %a89 + store { ptr, i64, i64 } { ptr @.str.1073, 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 + store { ptr, i64, i64 } %t86, ptr %a90 + call void @finch_str_drop(ptr %a90) + %t91 = load { ptr, i64, i64 }, ptr %a87 + %t92 = load i64, ptr %a7 + call void @finch_str_from_int(ptr %a93, i64 %t92) + %t94 = load { ptr, i64, i64 }, ptr %a93 + store { ptr, i64, i64 } %t91, ptr %a96 + store { ptr, i64, i64 } %t94, ptr %a97 + call void @finch_str_concat(ptr %a95, ptr %a96, ptr %a97) + store { ptr, i64, i64 } %t91, ptr %a98 + call void @finch_str_drop(ptr %a98) + store { ptr, i64, i64 } %t94, ptr %a99 + call void @finch_str_drop(ptr %a99) + %t100 = load { ptr, i64, i64 }, ptr %a95 + store { ptr, i64, i64 } %t100, ptr %a102 + store { ptr, i64, i64 } { ptr @.str.1074, i64 1, i64 0 }, ptr %a103 + call void @finch_str_concat(ptr %a101, ptr %a102, ptr %a103) + store { ptr, i64, i64 } %t100, ptr %a104 + call void @finch_str_drop(ptr %a104) + %t105 = load { ptr, i64, i64 }, ptr %a101 + %t106 = load i64, ptr %a8 + call void @finch_str_from_int(ptr %a107, i64 %t106) + %t108 = load { ptr, i64, i64 }, ptr %a107 + store { ptr, i64, i64 } %t105, ptr %a110 + store { ptr, i64, i64 } %t108, ptr %a111 + call void @finch_str_concat(ptr %a109, ptr %a110, ptr %a111) + store { ptr, i64, i64 } %t105, ptr %a112 + call void @finch_str_drop(ptr %a112) + store { ptr, i64, i64 } %t108, ptr %a113 + call void @finch_str_drop(ptr %a113) + %t114 = load { ptr, i64, i64 }, ptr %a109 + store { ptr, i64, i64 } %t114, ptr %a116 + store { ptr, i64, i64 } { ptr @.str.1075, i64 1, i64 0 }, ptr %a117 + call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) + store { ptr, i64, i64 } %t114, ptr %a118 + call void @finch_str_drop(ptr %a118) + %t119 = load { ptr, i64, i64 }, ptr %a115 + %t120 = load { ptr, i64, i64 }, ptr %a5 + %t121 = call { ptr, i64, i64 } @finch.gen.esc({ ptr, i64, i64 } %t120) + store { ptr, i64, i64 } %t119, ptr %a123 + store { ptr, i64, i64 } %t121, ptr %a124 + call void @finch_str_concat(ptr %a122, ptr %a123, ptr %a124) + store { ptr, i64, i64 } %t119, ptr %a125 + call void @finch_str_drop(ptr %a125) + store { ptr, i64, i64 } %t121, ptr %a126 + call void @finch_str_drop(ptr %a126) + %t127 = load { ptr, i64, i64 }, ptr %a122 + %t128 = load i64, ptr %t17 + %t129 = add i64 %t128, 1 + call void @finch_arr_reserve(ptr %t16, i64 %t129, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t130 = load ptr, ptr %t16 + %t131 = getelementptr inbounds { ptr, i64, i64 }, ptr %t130, i64 %t128 + store { ptr, i64, i64 } %t127, ptr %t131 + store i64 %t129, ptr %t17 ret void } @@ -19163,241 +21461,290 @@ entry: %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 + %a22 = 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 + %a34 = alloca { ptr, i64, i64 }, align 16 + %a35 = alloca { ptr, i64, i64 }, align 16 + %a45 = 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 + %a48 = 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 + %a56 = alloca { ptr, i64, i64 }, align 16 + %a57 = alloca { ptr, i64, i64 }, align 16 %a61 = alloca { ptr, i64, i64 }, align 16 + %a62 = 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 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a68 = 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 %a73 = alloca { ptr, i64, i64 }, align 16 %a74 = 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 - %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 + %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 %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 + %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 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = 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 %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 + %a120 = alloca { ptr, i64, i64 }, align 16 + %a121 = alloca { ptr, i64, i64 }, align 16 + %a122 = 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 + %a127 = 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 + %a134 = alloca { ptr, i64, i64 }, align 16 %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = 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 + %a146 = alloca { ptr, i64, i64 }, align 16 + %a147 = alloca { ptr, i64, i64 }, align 16 + %a148 = alloca { ptr, i64, i64 }, align 16 + %a149 = alloca { ptr, i64, i64 }, align 16 + %a150 = alloca { ptr, i64, i64 }, align 16 + %a153 = 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: + br label %for.cond1905 +for.cond1905: %t7 = load i64, ptr %a6 %t8 = icmp slt i64 %t7, %t5 - br i1 %t8, label %for.body1842, label %for.end1844 -for.body1842: + br i1 %t8, label %for.body1906, label %for.end1908 +for.body1906: %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) + br i1 %t14, label %range1909, label %inrange1910 +range1909: + call void @finch_panic_index(ptr @.str.1076, i64 225, i64 %t11, i64 %t13) unreachable -inrange1846: +inrange1910: %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 + store { ptr, i64, i64 } { ptr @.str.1077, 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) + store { ptr, i64, i64 } %t18, ptr %a22 + call void @finch_str_drop(ptr %a22) + %t23 = load { ptr, i64, i64 }, ptr %a19 + %t24 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 14 + %t25 = load i64, ptr %a6 + %t26 = load { ptr, i64, i64 }, ptr %t24 + %t27 = extractvalue { ptr, i64, i64 } %t26, 1 + %t28 = icmp uge i64 %t25, %t27 + br i1 %t28, label %range1911, label %inrange1912 +range1911: + call void @finch_panic_index(ptr @.str.1078, i64 225, i64 %t25, i64 %t27) 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 +inrange1912: + %t29 = extractvalue { ptr, i64, i64 } %t26, 0 + %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 %t25 + %t31 = load { ptr, i64, i64 }, ptr %t30 + store { ptr, i64, i64 } %t23, ptr %a33 + store { ptr, i64, i64 } %t31, ptr %a34 + call void @finch_str_concat(ptr %a32, ptr %a33, ptr %a34) + store { ptr, i64, i64 } %t23, ptr %a35 + call void @finch_str_drop(ptr %a35) + %t36 = load { ptr, i64, i64 }, ptr %a32 + %t37 = load i64, ptr %t9 + %t38 = add i64 %t37, 1 + call void @finch_arr_reserve(ptr %a2, i64 %t38, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t39 = load ptr, ptr %a2 + %t40 = getelementptr inbounds { ptr, i64, i64 }, ptr %t39, i64 %t37 + store { ptr, i64, i64 } %t36, ptr %t40 + store i64 %t38, ptr %t9 + br label %for.step1907 +for.step1907: + %t41 = load i64, ptr %a6 + %t42 = add i64 %t41, 1 + store i64 %t42, ptr %a6 + br label %for.cond1905 +for.end1908: + %t43 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 1 + %t44 = load { ptr, i64, i64 }, ptr %t43 + store { ptr, i64, i64 } %t44, ptr %a45 + call void @finch_str_copy(ptr %a46, ptr %a45) + %t47 = load { ptr, i64, i64 }, ptr %a46 + store { ptr, i64, i64 } %t47, ptr %a48 + %t49 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 2 + %t50 = getelementptr inbounds { ptr, i64, i64 }, ptr %t49, i32 0, i32 1 + %t51 = load i64, ptr %t50 + %t52 = icmp sgt i64 %t51, 0 + br i1 %t52, label %then1913, label %endif1915 +then1913: + %t53 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 2 + %t54 = load { ptr, i64, i64 }, ptr %t53 + store { ptr, i64, i64 } %t54, ptr %a56 + store { ptr, i64, i64 } { ptr @.str.1079, i64 1, i64 0 }, ptr %a57 + call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) + %t58 = load { ptr, i64, i64 }, ptr %a55 + %t59 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 1 + %t60 = load { ptr, i64, i64 }, ptr %t59 + store { ptr, i64, i64 } %t58, ptr %a62 + store { ptr, i64, i64 } %t60, ptr %a63 + call void @finch_str_concat(ptr %a61, ptr %a62, ptr %a63) + store { ptr, i64, i64 } %t58, ptr %a64 + call void @finch_str_drop(ptr %a64) + %t65 = load { ptr, i64, i64 }, ptr %a61 + %t66 = load { ptr, i64, i64 }, ptr %a48 + store { ptr, i64, i64 } %t65, ptr %a48 + store { ptr, i64, i64 } %t66, ptr %a67 + call void @finch_str_drop(ptr %a67) + br label %endif1915 +endif1915: + %t68 = load { ptr, i64, i64 }, ptr %a48 + store { ptr, i64, i64 } { ptr @.str.1080, i64 3, 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.1081, i64 1, i64 0 }, ptr %a75 + call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) + store { ptr, i64, i64 } %t72, ptr %a76 + call void @finch_str_drop(ptr %a76) + %t77 = load { ptr, i64, i64 }, ptr %a73 + %t78 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.1082, i64 2, i64 0 }, ptr %a79 + call void @finch_str_join(ptr %a80, ptr %a2, ptr %a79) + %t81 = load { ptr, i64, i64 }, ptr %a80 + store { ptr, i64, i64 } %t77, ptr %a83 + store { ptr, i64, i64 } %t81, ptr %a84 + call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84) + store { ptr, i64, i64 } %t77, ptr %a85 + call void @finch_str_drop(ptr %a85) + store { ptr, i64, i64 } %t81, ptr %a86 + call void @finch_str_drop(ptr %a86) + %t87 = load { ptr, i64, i64 }, ptr %a82 + store { ptr, i64, i64 } %t87, ptr %a89 + store { ptr, i64, i64 } { ptr @.str.1083, i64 1, i64 0 }, ptr %a90 + call void @finch_str_concat(ptr %a88, ptr %a89, ptr %a90) + store { ptr, i64, i64 } %t87, ptr %a91 + call void @finch_str_drop(ptr %a91) + %t92 = load { ptr, i64, i64 }, ptr %a88 + store { ptr, i64, i64 } %t92, ptr %a93 + %t94 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 9 + %t95 = load i1, ptr %t94 + br i1 %t95, label %then1916, label %else1917 +then1916: + %t96 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 12 + %t97 = getelementptr inbounds %S.ast.Type, ptr %t96, i32 0, i32 0 + %t98 = load { ptr, i64, i64 }, ptr %t97 + store { ptr, i64, i64 } %t98, ptr %a99 + store { ptr, i64, i64 } { ptr @.str.1084, i64 4, i64 0 }, ptr %a100 + %t101 = call i32 @finch_str_eq(ptr %a99, ptr %a100) + %t102 = icmp ne i32 %t101, 0 + br i1 %t102, label %then1919, label %else1920 +then1919: + %t103 = load { ptr, i64, i64 }, ptr %a93 + store { ptr, i64, i64 } %t103, ptr %a105 + store { ptr, i64, i64 } { ptr @.str.1085, i64 5, 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 %a93 + store { ptr, i64, i64 } %t107, ptr %a93 + store { ptr, i64, i64 } %t108, ptr %a109 + call void @finch_str_drop(ptr %a109) + br label %endif1921 +else1920: + %t110 = load { ptr, i64, i64 }, ptr %a93 store { ptr, i64, i64 } %t110, ptr %a112 - store { ptr, i64, i64 } { ptr @.str.1078, i64 1, i64 0 }, ptr %a113 + store { ptr, i64, i64 } { ptr @.str.1086, i64 4, 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 + %t116 = load %S.ast.Type, ptr %t115 + %t117 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t116) + store { ptr, i64, i64 } %t114, ptr %a119 + store { ptr, i64, i64 } %t117, ptr %a120 + call void @finch_str_concat(ptr %a118, ptr %a119, ptr %a120) + store { ptr, i64, i64 } %t114, ptr %a121 + call void @finch_str_drop(ptr %a121) + store { ptr, i64, i64 } %t117, ptr %a122 + call void @finch_str_drop(ptr %a122) + %t123 = load { ptr, i64, i64 }, ptr %a118 + store { ptr, i64, i64 } %t123, ptr %a125 + store { ptr, i64, i64 } { ptr @.str.1087, i64 1, i64 0 }, ptr %a126 + call void @finch_str_concat(ptr %a124, ptr %a125, ptr %a126) + store { ptr, i64, i64 } %t123, ptr %a127 + call void @finch_str_drop(ptr %a127) + %t128 = load { ptr, i64, i64 }, ptr %a124 + %t129 = load { ptr, i64, i64 }, ptr %a93 + store { ptr, i64, i64 } %t128, ptr %a93 + store { ptr, i64, i64 } %t129, ptr %a130 + call void @finch_str_drop(ptr %a130) + br label %endif1921 +endif1921: + br label %endif1918 +else1917: + %t131 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 12 + %t132 = getelementptr inbounds %S.ast.Type, ptr %t131, i32 0, i32 0 + %t133 = load { ptr, i64, i64 }, ptr %t132 + store { ptr, i64, i64 } %t133, ptr %a134 + store { ptr, i64, i64 } { ptr @.str.1088, i64 4, i64 0 }, ptr %a135 + %t136 = call i32 @finch_str_eq(ptr %a134, ptr %a135) + %t137 = icmp eq i32 %t136, 0 + br i1 %t137, label %then1922, label %endif1924 +then1922: + %t138 = load { ptr, i64, i64 }, ptr %a93 + store { ptr, i64, i64 } %t138, ptr %a140 + store { ptr, i64, i64 } { ptr @.str.1089, i64 4, i64 0 }, ptr %a141 + call void @finch_str_concat(ptr %a139, ptr %a140, ptr %a141) + %t142 = load { ptr, i64, i64 }, ptr %a139 + %t143 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 12 + %t144 = load %S.ast.Type, ptr %t143 + %t145 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t144) + 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) + store { ptr, i64, i64 } %t142, ptr %a149 + call void @finch_str_drop(ptr %a149) + store { ptr, i64, i64 } %t145, ptr %a150 + call void @finch_str_drop(ptr %a150) + %t151 = load { ptr, i64, i64 }, ptr %a146 + %t152 = load { ptr, i64, i64 }, ptr %a93 + store { ptr, i64, i64 } %t151, ptr %a93 + store { ptr, i64, i64 } %t152, ptr %a153 + call void @finch_str_drop(ptr %a153) + br label %endif1924 +endif1924: + br label %endif1918 +endif1918: + %t154 = load { ptr, i64, i64 }, ptr %a93 + call void @finch_str_drop(ptr %a48) + call void @finch.drop.arr_str(ptr %a2) + ret { ptr, i64, i64 } %t154 } define internal void @finch.gen.noteCall(ptr %p0, %S.ast.Node %p1, %S.gen.FnSig %p2) { @@ -19416,64 +21763,68 @@ entry: %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 + %a65 = alloca { ptr, i64, i64 }, align 16 %a73 = alloca { ptr, i64, i64 }, align 16 + %a74 = 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 + %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 + %a99 = 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) + br i1 %t5, label %panic1925, label %ok1926 +panic1925: + call void @finch_panic(ptr @.str.1090, i64 246, ptr @.str.1091) unreachable -ok1862: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 26 +ok1926: + %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 27 %t7 = load i1, ptr %t6 %t8 = xor i1 %t7, true - br i1 %t8, label %then1863, label %endif1865 -then1863: + br i1 %t8, label %then1927, label %endif1929 +then1927: ret void -endif1865: +endif1929: %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 + store { ptr, i64, i64 } { ptr @.str.1092, 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: + br i1 %t17, label %then1930, label %endif1932 +then1930: %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: + br label %endif1932 +endif1932: %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) + br i1 %t22, label %panic1933, label %ok1934 +panic1933: + call void @finch_panic(ptr @.str.1093, i64 253, ptr @.str.1094) unreachable -ok1870: +ok1934: %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) + br i1 %t28, label %range1935, label %inrange1936 +range1935: + call void @finch_panic_index(ptr @.str.1095, i64 253, i64 %t25, i64 %t27) unreachable -inrange1872: +inrange1936: %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 @@ -19482,11 +21833,11 @@ inrange1872: %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) + br i1 %t36, label %range1937, label %inrange1938 +range1937: + call void @finch_panic_index(ptr @.str.1096, i64 253, i64 %t33, i64 %t35) unreachable -inrange1874: +inrange1938: %t37 = extractvalue { ptr, i64, i64 } %t34, 0 %t38 = getelementptr inbounds %S.ast.Node, ptr %t37, i64 %t33 %t39 = load %S.ast.Node, ptr %t38 @@ -19504,71 +21855,82 @@ inrange1874: %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: + br label %logic.from1939 +logic.from1939: + br i1 %t53, label %logic.rhs1940, label %logic.end1941 +logic.rhs1940: %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: + br label %logic.rend1942 +logic.rend1942: + br label %logic.end1941 +logic.end1941: + %t58 = phi i1 [ false, %logic.from1939 ], [ %t57, %logic.rend1942 ] + br i1 %t58, label %then1943, label %endif1945 +then1943: %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 + %t64 = load { ptr, i64, i64 }, ptr %a49 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) + store { ptr, i64, i64 } %t64, ptr %a65 + call void @finch_str_drop(ptr %a65) + br label %endif1945 +endif1945: + %t66 = load ptr, ptr %a1 + %t67 = load %S.ast.Node, ptr %a2 + %t68 = load i64, ptr %a11 + %t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %a49, i32 0, i32 1 + %t70 = load i64, ptr %t69 + %t71 = load %S.gen.FnSig, ptr %a3 + %t72 = call { ptr, i64, i64 } @finch.gen.sigText(%S.gen.FnSig %t71) + store { ptr, i64, i64 } { ptr @.str.1097, i64 9, i64 0 }, ptr %a74 + store { ptr, i64, i64 } %t72, ptr %a75 + call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) + store { ptr, i64, i64 } %t72, ptr %a76 + call void @finch_str_drop(ptr %a76) + %t77 = load { ptr, i64, i64 }, ptr %a73 + store { ptr, i64, i64 } %t77, ptr %a79 + store { ptr, i64, i64 } { ptr @.str.1098, i64 4, i64 0 }, ptr %a80 + call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) + store { ptr, i64, i64 } %t77, ptr %a81 + call void @finch_str_drop(ptr %a81) + %t82 = load { ptr, i64, i64 }, ptr %a78 + %t83 = load ptr, ptr %a1 + %t84 = icmp eq ptr %t83, null + br i1 %t84, label %panic1946, label %ok1947 +panic1946: + call void @finch_panic(ptr @.str.1099, i64 258, ptr @.str.1100) 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) +ok1947: + %t85 = getelementptr inbounds %S.gen.Gen, ptr %t83, i32 0, i32 1 + %t86 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 13 + %t87 = load i64, ptr %t86 + %t88 = load { ptr, i64, i64 }, ptr %t85 + %t89 = extractvalue { ptr, i64, i64 } %t88, 1 + %t90 = icmp uge i64 %t87, %t89 + br i1 %t90, label %range1948, label %inrange1949 +range1948: + call void @finch_panic_index(ptr @.str.1101, i64 258, i64 %t87, i64 %t89) 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) +inrange1949: + %t91 = extractvalue { ptr, i64, i64 } %t88, 0 + %t92 = getelementptr inbounds { ptr, i64, i64 }, ptr %t91, i64 %t87 + %t93 = load { ptr, i64, i64 }, ptr %t92 + %t94 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 11 + %t95 = load i64, ptr %t94 + %t96 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 12 + %t97 = load i64, ptr %t96 + %t98 = add i64 %t97, 3 + call void @finch.gen.noteRef(ptr %t66, %S.ast.Node %t67, i64 %t68, i64 %t70, { ptr, i64, i64 } %t82, { ptr, i64, i64 } %t93, i64 %t95, i64 %t98) + store { ptr, i64, i64 } %t82, ptr %a99 + call void @finch_str_drop(ptr %a99) + call void @finch_str_drop(ptr %a49) + call void @finch.drop.S_ast_Node(ptr %a43) ret void } @@ -19623,6 +21985,43 @@ entry: ret void } +define internal void @finch.drop.arr_bool(ptr %a) { +entry: + + call void @finch_arr_free(ptr %a) + ret void +} + +define internal void @finch.drop.S_gen_FnSig(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 1 + call void @finch_str_drop(ptr %t2) + %t3 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 2 + call void @finch_str_drop(ptr %t3) + %t4 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 3 + call void @finch_str_drop(ptr %t4) + %t5 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 6 + call void @finch.drop.arr_str(ptr %t5) + %t6 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 7 + call void @finch.drop.arr_S_ast_Type(ptr %t6) + %t7 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 8 + call void @finch_str_drop(ptr %t7) + %t8 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 11 + call void @finch_str_drop(ptr %t8) + %t9 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 12 + call void @finch.drop.S_ast_Type(ptr %t9) + %t10 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 13 + call void @finch.drop.arr_S_ast_Type(ptr %t10) + %t11 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 14 + call void @finch.drop.arr_str(ptr %t11) + %t12 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 15 + call void @finch.drop.arr_bool(ptr %t12) + ret void +} + define internal void @finch.copy.S_gen_Template(ptr %dst, ptr %src) { entry: @@ -19643,6 +22042,20 @@ entry: ret void } +define internal void @finch.drop.S_gen_Template(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.gen.Template, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.gen.Template, ptr %a, i32 0, i32 1 + call void @finch_str_drop(ptr %t2) + %t3 = getelementptr inbounds %S.gen.Template, ptr %a, i32 0, i32 2 + call void @finch_str_drop(ptr %t3) + %t4 = getelementptr inbounds %S.gen.Template, ptr %a, i32 0, i32 3 + call void @finch.drop.arr_str(ptr %t4) + ret void +} + define internal void @finch.copy.arr_int(ptr %dst, ptr %src) { entry: @@ -19688,6 +22101,39 @@ entry: ret void } +define internal void @finch.drop.arr_int(ptr %a) { +entry: + + call void @finch_arr_free(ptr %a) + ret void +} + +define internal void @finch.drop.S_gen_StructDef(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 1 + call void @finch_str_drop(ptr %t2) + %t3 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 3 + call void @finch.drop.arr_int(ptr %t3) + %t4 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 4 + call void @finch.drop.arr_int(ptr %t4) + %t5 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 5 + call void @finch_str_drop(ptr %t5) + %t6 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 6 + call void @finch.drop.arr_str(ptr %t6) + %t7 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 7 + call void @finch.drop.arr_S_ast_Type(ptr %t7) + %t8 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 8 + call void @finch_str_drop(ptr %t8) + %t9 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 11 + call void @finch.drop.arr_str(ptr %t9) + %t10 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 12 + call void @finch.drop.arr_S_ast_Type(ptr %t10) + ret void +} + define internal void @finch.gen.indexAll(ptr %p0, { ptr, i64, i64 } %p1) { entry: %a1 = alloca ptr, align 16 @@ -19709,44 +22155,49 @@ entry: %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 + %a89 = 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 + %a101 = alloca { ptr, i64, i64 }, align 16 + %a102 = 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 - %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 + %a121 = alloca { ptr, i64, i64 }, align 16 + %a122 = alloca { ptr, i64, i64 }, align 16 + %a123 = 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 + %a132 = alloca { ptr, i64, i64 }, align 16 + %a133 = 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 + %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 + %a147 = 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 %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 + %a168 = alloca { ptr, i64, i64 }, align 16 + %a172 = alloca { ptr, i64, i64 }, align 16 + %a174 = alloca { ptr, i64, i64 }, align 16 %a175 = 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 - %a179 = alloca { ptr, i64, i64 }, align 16 + %a180 = 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 @@ -19754,224 +22205,297 @@ entry: %a189 = alloca { ptr, i64, i64 }, align 16 %a190 = alloca { ptr, i64, i64 }, align 16 %a191 = alloca { ptr, i64, i64 }, align 16 + %a192 = 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 + %a196 = alloca { ptr, i64, i64 }, align 16 + %a197 = alloca { ptr, i64, i64 }, align 16 + %a198 = 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 + %a207 = alloca { ptr, i64, i64 }, align 16 + %a208 = alloca { ptr, i64, i64 }, align 16 %a210 = 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 - %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 + %a218 = 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 + %a222 = alloca { ptr, i64, i64 }, align 16 + %a223 = alloca { ptr, i64, i64 }, align 16 + %a225 = 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 + %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 + %a237 = alloca { ptr, i64, i64 }, align 16 + %a238 = alloca { ptr, i64, i64 }, align 16 + %a249 = alloca i64, align 16 + %a257 = alloca %S.gen.Template, align 16 + %a258 = alloca %S.gen.Template, align 16 + %a260 = alloca %S.gen.Template, align 16 + %a282 = alloca %S.ast.Node, align 16 + %a283 = alloca %S.ast.Node, align 16 + %a285 = alloca %S.ast.Node, 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 + %a296 = 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 + %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 %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 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 + %a315 = alloca { ptr, i64, i64 }, align 16 + %a316 = alloca { ptr, i64, i64 }, align 16 %a317 = alloca { ptr, i64, i64 }, align 16 - %a319 = 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 %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 + %a338 = alloca { ptr, i64, i64 }, align 16 + %a339 = 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 - %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 + %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 %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 %a368 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 + %a369 = 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 + %a373 = alloca { ptr, i64, i64 }, align 16 + %a374 = alloca { ptr, i64, i64 }, align 16 + %a378 = 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 + %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 + %a389 = alloca { ptr, i64, i64 }, align 16 + %a393 = alloca { ptr, i64, i64 }, align 16 + %a394 = alloca { ptr, i64, i64 }, align 16 + %a395 = alloca { ptr, i64, i64 }, align 16 + %a397 = alloca { ptr, i64, i64 }, align 16 + %a398 = alloca { ptr, i64, i64 }, align 16 + %a399 = alloca { ptr, i64, i64 }, align 16 + %a400 = alloca { ptr, i64, i64 }, align 16 + %a404 = alloca { ptr, i64, i64 }, align 16 + %a405 = 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 + %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 + %a416 = 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 + %a422 = alloca { ptr, i64, i64 }, align 16 + %a423 = alloca { ptr, i64, i64 }, align 16 + %a424 = alloca { ptr, i64, i64 }, align 16 + %a426 = alloca { ptr, i64, i64 }, align 16 + %a427 = alloca { ptr, i64, i64 }, align 16 + %a428 = alloca { ptr, i64, i64 }, align 16 + %a429 = alloca { ptr, i64, i64 }, align 16 + %a440 = alloca i64, align 16 + %a448 = alloca %S.gen.StructDef, align 16 + %a449 = alloca %S.gen.StructDef, align 16 + %a451 = alloca %S.gen.StructDef, align 16 + %a478 = alloca %S.ast.Node, align 16 + %a479 = alloca %S.ast.Node, align 16 + %a481 = alloca %S.ast.Node, align 16 + %a488 = alloca { ptr, i64, i64 }, align 16 + %a489 = alloca { ptr, i64, i64 }, align 16 + %a490 = alloca { ptr, i64, i64 }, align 16 + %a492 = 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 + %a499 = alloca { ptr, i64, i64 }, align 16 + %a500 = alloca { ptr, i64, i64 }, align 16 + %a501 = alloca { ptr, i64, i64 }, align 16 + %a502 = alloca { ptr, i64, i64 }, align 16 + %a504 = 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 + %a520 = alloca { ptr, i64, i64 }, align 16 + %a521 = 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 %a525 = alloca { ptr, i64, i64 }, align 16 + %a526 = 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 + %a532 = alloca { ptr, i64, i64 }, align 16 + %a534 = alloca { ptr, i64, i64 }, align 16 + %a535 = 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 %a540 = 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 - %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 + %a547 = alloca { ptr, i64, i64 }, align 16 + %a549 = alloca { ptr, i64, i64 }, align 16 + %a550 = alloca { ptr, i64, i64 }, align 16 + %a551 = alloca { ptr, i64, i64 }, align 16 + %a552 = alloca { ptr, i64, i64 }, align 16 + %a553 = alloca { ptr, i64, i64 }, align 16 + %a562 = alloca i64, align 16 + %a571 = alloca { ptr, i64, i64 }, align 16 + %a572 = alloca { ptr, i64, i64 }, align 16 + %a573 = alloca { ptr, i64, i64 }, align 16 + %a575 = 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 + %a582 = alloca { ptr, i64, i64 }, align 16 + %a583 = alloca { ptr, i64, i64 }, align 16 + %a584 = alloca { ptr, i64, i64 }, align 16 + %a585 = 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 + %a590 = 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 + %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 + %a608 = 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 - %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 + %a638 = alloca i64, align 16 + %a651 = alloca i64, align 16 + %a659 = alloca %S.ast.Node, align 16 + %a660 = alloca %S.ast.Node, align 16 + %a662 = alloca %S.ast.Node, align 16 + %a663 = alloca { ptr, i64, i64 }, align 16 + %a664 = alloca { ptr, i64, i64 }, align 16 + %a666 = alloca i64, align 16 + %a674 = alloca %S.ast.Node, align 16 + %a678 = alloca { ptr, i64, i64 }, align 16 + %a679 = alloca { ptr, i64, i64 }, align 16 %a688 = alloca { ptr, i64, i64 }, align 16 + %a689 = 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 + %a708 = alloca { ptr, i64, i64 }, align 16 + %a709 = alloca { ptr, i64, i64 }, align 16 + %a710 = alloca { ptr, i64, i64 }, align 16 + %a712 = alloca { ptr, i64, i64 }, align 16 + %a713 = alloca { ptr, i64, i64 }, align 16 + %a714 = alloca { ptr, i64, i64 }, align 16 + %a715 = alloca { ptr, i64, i64 }, align 16 + %a719 = alloca { ptr, i64, i64 }, align 16 + %a720 = alloca { ptr, i64, i64 }, align 16 + %a721 = alloca { ptr, i64, i64 }, align 16 + %a722 = 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 + %a740 = alloca { ptr, i64, i64 }, align 16 + %a741 = alloca { ptr, i64, i64 }, align 16 + %a742 = alloca { ptr, i64, i64 }, align 16 + %a743 = alloca { ptr, i64, i64 }, align 16 + %a745 = alloca { ptr, i64, i64 }, align 16 + %a746 = alloca { ptr, i64, i64 }, align 16 + %a747 = alloca { ptr, i64, i64 }, align 16 + %a748 = alloca { ptr, i64, i64 }, align 16 + %a752 = 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 + %a757 = alloca { ptr, i64, i64 }, align 16 + %a758 = alloca { ptr, i64, i64 }, align 16 + %a760 = 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 + %a767 = alloca { ptr, i64, i64 }, align 16 + %a769 = 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 + %a773 = 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 + %a778 = alloca { ptr, i64, i64 }, align 16 + %a781 = alloca { ptr, i64, i64 }, align 16 + %a782 = alloca { ptr, i64, i64 }, align 16 + %a783 = alloca { ptr, i64, i64 }, align 16 + %a784 = 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: + br label %each.cond1950 +each.cond1950: %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: + br i1 %t7, label %each.body1951, label %each.end1953 +each.body1951: %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) + br i1 %t13, label %panic1954, label %ok1955 +panic1954: + call void @finch_panic(ptr @.str.1102, i64 264, ptr @.str.1103) unreachable -ok1891: - %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 27 +ok1955: + %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 28 %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 } { ptr @.str.1104, 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 @@ -19982,30 +22506,30 @@ ok1891: %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: + br label %each.step1952 +each.step1952: %t25 = load i64, ptr %a3 %t26 = add i64 %t25, 1 store i64 %t26, ptr %a3 - br label %each.cond1886 -each.end1889: + br label %each.cond1950 +each.end1953: %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) + br i1 %t28, label %panic1956, label %ok1957 +panic1956: + call void @finch_panic(ptr @.str.1105, i64 266, ptr @.str.1106) unreachable -ok1893: - %t29 = getelementptr inbounds %S.gen.Gen, ptr %t27, i32 0, i32 14 +ok1957: + %t29 = getelementptr inbounds %S.gen.Gen, ptr %t27, i32 0, i32 15 store i64 0, ptr %a30 - br label %each.cond1894 -each.cond1894: + br label %each.cond1958 +each.cond1958: %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: + br i1 %t34, label %each.body1959, label %each.end1961 +each.body1959: %t35 = load ptr, ptr %t29 %t36 = getelementptr inbounds %S.gen.FnSig, ptr %t35, i64 %t33 %t37 = load %S.gen.FnSig, ptr %t36 @@ -20015,22 +22539,22 @@ each.body1895: 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) + br i1 %t43, label %panic1962, label %ok1963 +panic1962: + call void @finch_panic(ptr @.str.1107, i64 267, ptr @.str.1108) unreachable -ok1899: +ok1963: %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) + br i1 %t49, label %range1964, label %inrange1965 +range1964: + call void @finch_panic_index(ptr @.str.1109, i64 267, i64 %t46, i64 %t48) unreachable -inrange1901: +inrange1965: %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 @@ -20039,11 +22563,11 @@ inrange1901: %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) + br i1 %t57, label %range1966, label %inrange1967 +range1966: + call void @finch_panic_index(ptr @.str.1110, i64 267, i64 %t54, i64 %t56) unreachable -inrange1903: +inrange1967: %t58 = extractvalue { ptr, i64, i64 } %t55, 0 %t59 = getelementptr inbounds %S.ast.Node, ptr %t58, i64 %t54 %t60 = load %S.ast.Node, ptr %t59 @@ -20055,912 +22579,1083 @@ inrange1903: %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: + br i1 %t68, label %then1968, label %endif1970 +then1968: + call void @finch.drop.S_ast_Node(ptr %a64) + call void @finch.drop.S_gen_FnSig(ptr %a41) + br label %each.step1960 +endif1970: 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: + br label %for.cond1971 +for.cond1971: %t74 = load i64, ptr %a73 %t75 = icmp slt i64 %t74, %t72 - br i1 %t75, label %for.body1908, label %for.end1910 -for.body1908: + br i1 %t75, label %for.body1972, label %for.end1974 +for.body1972: %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) + br i1 %t81, label %range1975, label %inrange1976 +range1975: + call void @finch_panic_index(ptr @.str.1111, i64 273, i64 %t78, i64 %t80) unreachable -inrange1912: +inrange1976: %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 + store { ptr, i64, i64 } { ptr @.str.1112, 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) + store { ptr, i64, i64 } %t85, ptr %a89 + call void @finch_str_drop(ptr %a89) + %t90 = load { ptr, i64, i64 }, ptr %a86 + %t91 = getelementptr inbounds %S.gen.FnSig, ptr %a41, i32 0, i32 14 + %t92 = load i64, ptr %a73 + %t93 = load { ptr, i64, i64 }, ptr %t91 + %t94 = extractvalue { ptr, i64, i64 } %t93, 1 + %t95 = icmp uge i64 %t92, %t94 + br i1 %t95, label %range1977, label %inrange1978 +range1977: + call void @finch_panic_index(ptr @.str.1113, i64 273, i64 %t92, i64 %t94) 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) +inrange1978: + %t96 = extractvalue { ptr, i64, i64 } %t93, 0 + %t97 = getelementptr inbounds { ptr, i64, i64 }, ptr %t96, i64 %t92 + %t98 = load { ptr, i64, i64 }, ptr %t97 + store { ptr, i64, i64 } %t90, ptr %a100 + store { ptr, i64, i64 } %t98, ptr %a101 + call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) + store { ptr, i64, i64 } %t90, ptr %a102 + call void @finch_str_drop(ptr %a102) + %t103 = load { ptr, i64, i64 }, ptr %a99 + %t104 = load i64, ptr %t76 + %t105 = add i64 %t104, 1 + call void @finch_arr_reserve(ptr %a69, i64 %t105, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t106 = load ptr, ptr %a69 + %t107 = getelementptr inbounds { ptr, i64, i64 }, ptr %t106, i64 %t104 + store { ptr, i64, i64 } %t103, ptr %t107 + store i64 %t105, ptr %t76 + br label %for.step1973 +for.step1973: + %t108 = load i64, ptr %a73 + %t109 = add i64 %t108, 1 + store i64 %t109, ptr %a73 + br label %for.cond1971 +for.end1974: + %t110 = load ptr, ptr %a1 + %t111 = icmp eq ptr %t110, null + br i1 %t111, label %panic1979, label %ok1980 +panic1979: + call void @finch_panic(ptr @.str.1114, i64 275, ptr @.str.1115) 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 +ok1980: + %t112 = getelementptr inbounds %S.gen.Gen, ptr %t110, i32 0, i32 28 + %t113 = getelementptr inbounds { ptr, i64, i64 }, ptr %t112, i32 0, i32 1 + %t114 = getelementptr inbounds %S.gen.FnSig, ptr %a41, i32 0, i32 0 + %t115 = load { ptr, i64, i64 }, ptr %t114 + store { ptr, i64, i64 } { ptr @.str.1116, i64 3, 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.1117, i64 1, i64 0 }, ptr %a122 + call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122) + store { ptr, i64, i64 } %t119, ptr %a123 + call void @finch_str_drop(ptr %a123) + %t124 = load { ptr, i64, i64 }, ptr %a120 + %t125 = getelementptr inbounds %S.gen.FnSig, ptr %a41, i32 0, i32 1 + %t126 = load { ptr, i64, i64 }, ptr %t125 + store { ptr, i64, i64 } %t124, ptr %a128 + store { ptr, i64, i64 } %t126, ptr %a129 + call void @finch_str_concat(ptr %a127, ptr %a128, ptr %a129) + store { ptr, i64, i64 } %t124, ptr %a130 + call void @finch_str_drop(ptr %a130) + %t131 = load { ptr, i64, i64 }, ptr %a127 + store { ptr, i64, i64 } %t131, ptr %a133 + store { ptr, i64, i64 } { ptr @.str.1118, i64 1, i64 0 }, ptr %a134 + call void @finch_str_concat(ptr %a132, ptr %a133, ptr %a134) 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) + call void @finch_str_drop(ptr %a135) + %t136 = load { ptr, i64, i64 }, ptr %a132 + %t137 = getelementptr inbounds %S.gen.FnSig, ptr %a41, i32 0, i32 2 + %t138 = load { ptr, i64, i64 }, ptr %t137 + store { ptr, i64, i64 } %t136, ptr %a140 + store { ptr, i64, i64 } %t138, ptr %a141 + call void @finch_str_concat(ptr %a139, ptr %a140, ptr %a141) + store { ptr, i64, i64 } %t136, ptr %a142 + call void @finch_str_drop(ptr %a142) + %t143 = load { ptr, i64, i64 }, ptr %a139 + store { ptr, i64, i64 } %t143, ptr %a145 + store { ptr, i64, i64 } { ptr @.str.1119, i64 1, i64 0 }, ptr %a146 + call void @finch_str_concat(ptr %a144, ptr %a145, ptr %a146) + store { ptr, i64, i64 } %t143, ptr %a147 + call void @finch_str_drop(ptr %a147) + %t148 = load { ptr, i64, i64 }, ptr %a144 + %t149 = load ptr, ptr %a1 + %t150 = icmp eq ptr %t149, null + br i1 %t150, label %panic1981, label %ok1982 +panic1981: + call void @finch_panic(ptr @.str.1120, i64 275, ptr @.str.1121) 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) +ok1982: + %t151 = getelementptr inbounds %S.gen.Gen, ptr %t149, i32 0, i32 1 + %t152 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 13 + %t153 = load i64, ptr %t152 + %t154 = load { ptr, i64, i64 }, ptr %t151 + %t155 = extractvalue { ptr, i64, i64 } %t154, 1 + %t156 = icmp uge i64 %t153, %t155 + br i1 %t156, label %range1983, label %inrange1984 +range1983: + call void @finch_panic_index(ptr @.str.1122, i64 275, i64 %t153, i64 %t155) 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 +inrange1984: + %t157 = extractvalue { ptr, i64, i64 } %t154, 0 + %t158 = getelementptr inbounds { ptr, i64, i64 }, ptr %t157, i64 %t153 + %t159 = load { ptr, i64, i64 }, ptr %t158 + store { ptr, i64, i64 } %t148, ptr %a161 + store { ptr, i64, i64 } %t159, ptr %a162 + call void @finch_str_concat(ptr %a160, ptr %a161, ptr %a162) + store { ptr, i64, i64 } %t148, ptr %a163 + call void @finch_str_drop(ptr %a163) + %t164 = load { ptr, i64, i64 }, ptr %a160 + store { ptr, i64, i64 } %t164, ptr %a166 + store { ptr, i64, i64 } { ptr @.str.1123, i64 1, i64 0 }, 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 + store { ptr, i64, i64 } %t164, ptr %a168 + call void @finch_str_drop(ptr %a168) + %t169 = load { ptr, i64, i64 }, ptr %a165 + %t170 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 11 + %t171 = load i64, ptr %t170 + call void @finch_str_from_int(ptr %a172, i64 %t171) + %t173 = load { ptr, i64, i64 }, ptr %a172 + store { ptr, i64, i64 } %t169, ptr %a175 + store { ptr, i64, i64 } %t173, ptr %a176 + call void @finch_str_concat(ptr %a174, ptr %a175, ptr %a176) + store { ptr, i64, i64 } %t169, ptr %a177 + call void @finch_str_drop(ptr %a177) + store { ptr, i64, i64 } %t173, ptr %a178 + call void @finch_str_drop(ptr %a178) + %t179 = load { ptr, i64, i64 }, ptr %a174 + store { ptr, i64, i64 } %t179, ptr %a181 + store { ptr, i64, i64 } { ptr @.str.1124, i64 1, i64 0 }, ptr %a182 + call void @finch_str_concat(ptr %a180, ptr %a181, ptr %a182) + store { ptr, i64, i64 } %t179, ptr %a183 + call void @finch_str_drop(ptr %a183) + %t184 = load { ptr, i64, i64 }, ptr %a180 + %t185 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 12 %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 + store { ptr, i64, i64 } %t184, ptr %a192 + call void @finch_str_drop(ptr %a192) + store { ptr, i64, i64 } %t188, ptr %a193 + call void @finch_str_drop(ptr %a193) + %t194 = load { ptr, i64, i64 }, ptr %a189 + store { ptr, i64, i64 } %t194, ptr %a196 + store { ptr, i64, i64 } { ptr @.str.1125, i64 1, i64 0 }, ptr %a197 + call void @finch_str_concat(ptr %a195, ptr %a196, ptr %a197) + store { ptr, i64, i64 } %t194, ptr %a198 + call void @finch_str_drop(ptr %a198) + %t199 = load { ptr, i64, i64 }, ptr %a195 + %t200 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 14 + %t201 = load i64, ptr %t200 + call void @finch_str_from_int(ptr %a202, i64 %t201) + %t203 = load { ptr, i64, i64 }, ptr %a202 + store { ptr, i64, i64 } %t199, 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 - %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) + store { ptr, i64, i64 } %t199, ptr %a207 + call void @finch_str_drop(ptr %a207) + store { ptr, i64, i64 } %t203, ptr %a208 + call void @finch_str_drop(ptr %a208) + %t209 = load { ptr, i64, i64 }, ptr %a204 + store { ptr, i64, i64 } %t209, ptr %a211 + store { ptr, i64, i64 } { ptr @.str.1126, i64 1, i64 0 }, ptr %a212 + call void @finch_str_concat(ptr %a210, ptr %a211, ptr %a212) + store { ptr, i64, i64 } %t209, ptr %a213 + call void @finch_str_drop(ptr %a213) + %t214 = load { ptr, i64, i64 }, ptr %a210 + %t215 = load %S.gen.FnSig, ptr %a41 + %t216 = call { ptr, i64, i64 } @finch.gen.sigText(%S.gen.FnSig %t215) + %t217 = call { ptr, i64, i64 } @finch.gen.esc({ ptr, i64, i64 } %t216) + store { ptr, i64, i64 } %t216, ptr %a218 + call void @finch_str_drop(ptr %a218) + store { ptr, i64, i64 } %t214, ptr %a220 + store { ptr, i64, i64 } %t217, ptr %a221 + call void @finch_str_concat(ptr %a219, ptr %a220, ptr %a221) + store { ptr, i64, i64 } %t214, ptr %a222 + call void @finch_str_drop(ptr %a222) + store { ptr, i64, i64 } %t217, ptr %a223 + call void @finch_str_drop(ptr %a223) + %t224 = load { ptr, i64, i64 }, ptr %a219 + store { ptr, i64, i64 } %t224, ptr %a226 + store { ptr, i64, i64 } { ptr @.str.1127, i64 1, i64 0 }, ptr %a227 + call void @finch_str_concat(ptr %a225, ptr %a226, ptr %a227) + store { ptr, i64, i64 } %t224, ptr %a228 + call void @finch_str_drop(ptr %a228) + %t229 = load { ptr, i64, i64 }, ptr %a225 + %t230 = getelementptr inbounds { ptr, i64, i64 }, ptr %a69, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.1128, i64 1, i64 0 }, ptr %a231 + call void @finch_str_join(ptr %a232, ptr %a69, ptr %a231) + %t233 = load { ptr, i64, i64 }, ptr %a232 + store { ptr, i64, i64 } %t229, ptr %a235 + store { ptr, i64, i64 } %t233, ptr %a236 + call void @finch_str_concat(ptr %a234, ptr %a235, ptr %a236) + store { ptr, i64, i64 } %t229, ptr %a237 + call void @finch_str_drop(ptr %a237) + store { ptr, i64, i64 } %t233, ptr %a238 + call void @finch_str_drop(ptr %a238) + %t239 = load { ptr, i64, i64 }, ptr %a234 + %t240 = load i64, ptr %t113 + %t241 = add i64 %t240, 1 + call void @finch_arr_reserve(ptr %t112, i64 %t241, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t242 = load ptr, ptr %t112 + %t243 = getelementptr inbounds { ptr, i64, i64 }, ptr %t242, i64 %t240 + store { ptr, i64, i64 } %t239, ptr %t243 + store i64 %t241, ptr %t113 + call void @finch.drop.arr_str(ptr %a69) + call void @finch.drop.S_ast_Node(ptr %a64) + call void @finch.drop.S_gen_FnSig(ptr %a41) + br label %each.step1960 +each.step1960: + %t244 = load i64, ptr %a30 + %t245 = add i64 %t244, 1 + store i64 %t245, ptr %a30 + br label %each.cond1958 +each.end1961: + %t246 = load ptr, ptr %a1 + %t247 = icmp eq ptr %t246, null + br i1 %t247, label %panic1985, label %ok1986 +panic1985: + call void @finch_panic(ptr @.str.1129, i64 277, ptr @.str.1130) 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 +ok1986: + %t248 = getelementptr inbounds %S.gen.Gen, ptr %t246, i32 0, i32 17 + store i64 0, ptr %a249 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 + %t250 = getelementptr inbounds { ptr, i64, i64 }, ptr %t248, i32 0, i32 1 + %t251 = load i64, ptr %t250 + %t252 = load i64, ptr %a249 + %t253 = icmp slt i64 %t252, %t251 + br i1 %t253, 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) + %t254 = load ptr, ptr %t248 + %t255 = getelementptr inbounds %S.gen.Template, ptr %t254, i64 %t252 + %t256 = load %S.gen.Template, ptr %t255 + store %S.gen.Template %t256, ptr %a257 + call void @finch.copy.S_gen_Template(ptr %a258, ptr %a257) + %t259 = load %S.gen.Template, ptr %a258 + store %S.gen.Template %t259, ptr %a260 + %t261 = getelementptr inbounds %S.gen.Template, ptr %a260, i32 0, i32 6 + %t262 = load i1, ptr %t261 + br i1 %t262, label %then1991, label %endif1993 +then1991: + call void @finch.drop.S_gen_Template(ptr %a260) + br label %each.step1989 +endif1993: + %t263 = load ptr, ptr %a1 + %t264 = icmp eq ptr %t263, null + br i1 %t264, label %panic1994, label %ok1995 +panic1994: + call void @finch_panic(ptr @.str.1131, i64 281, ptr @.str.1132) 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) +ok1995: + %t265 = getelementptr inbounds %S.gen.Gen, ptr %t263, i32 0, i32 0 + %t266 = getelementptr inbounds %S.gen.Template, ptr %a260, i32 0, i32 4 + %t267 = load i64, ptr %t266 + %t268 = load { ptr, i64, i64 }, ptr %t265 + %t269 = extractvalue { ptr, i64, i64 } %t268, 1 + %t270 = icmp uge i64 %t267, %t269 + br i1 %t270, label %range1996, label %inrange1997 +range1996: + call void @finch_panic_index(ptr @.str.1133, i64 281, i64 %t267, i64 %t269) 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) +inrange1997: + %t271 = extractvalue { ptr, i64, i64 } %t268, 0 + %t272 = getelementptr inbounds %S.ast.Program, ptr %t271, i64 %t267 + %t273 = getelementptr inbounds %S.ast.Program, ptr %t272, i32 0, i32 8 + %t274 = getelementptr inbounds %S.gen.Template, ptr %a260, i32 0, i32 5 + %t275 = load i64, ptr %t274 + %t276 = load { ptr, i64, i64 }, ptr %t273 + %t277 = extractvalue { ptr, i64, i64 } %t276, 1 + %t278 = icmp uge i64 %t275, %t277 + br i1 %t278, label %range1998, label %inrange1999 +range1998: + call void @finch_panic_index(ptr @.str.1134, i64 281, i64 %t275, i64 %t277) 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) +inrange1999: + %t279 = extractvalue { ptr, i64, i64 } %t276, 0 + %t280 = getelementptr inbounds %S.ast.Node, ptr %t279, i64 %t275 + %t281 = load %S.ast.Node, ptr %t280 + 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 + store %S.ast.Node %t284, ptr %a285 + %t286 = load ptr, ptr %a1 + %t287 = icmp eq ptr %t286, null + br i1 %t287, label %panic2000, label %ok2001 +panic2000: + call void @finch_panic(ptr @.str.1135, i64 282, ptr @.str.1136) 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) +ok2001: + %t288 = getelementptr inbounds %S.gen.Gen, ptr %t286, i32 0, i32 28 + %t289 = getelementptr inbounds { ptr, i64, i64 }, ptr %t288, i32 0, i32 1 + %t290 = getelementptr inbounds %S.gen.Template, ptr %a260, i32 0, i32 0 + %t291 = load { ptr, i64, i64 }, ptr %t290 + store { ptr, i64, i64 } { ptr @.str.1137, i64 3, i64 0 }, ptr %a293 + store { ptr, i64, i64 } %t291, ptr %a294 + 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.1138, i64 1, i64 0 }, ptr %a298 + call void @finch_str_concat(ptr %a296, ptr %a297, ptr %a298) + store { ptr, i64, i64 } %t295, ptr %a299 + call void @finch_str_drop(ptr %a299) + %t300 = load { ptr, i64, i64 }, ptr %a296 + %t301 = getelementptr inbounds %S.gen.Template, ptr %a260, i32 0, i32 1 + %t302 = load { ptr, i64, i64 }, ptr %t301 + store { ptr, i64, i64 } %t300, ptr %a304 + store { ptr, i64, i64 } %t302, ptr %a305 + call void @finch_str_concat(ptr %a303, ptr %a304, ptr %a305) + store { ptr, i64, i64 } %t300, ptr %a306 + call void @finch_str_drop(ptr %a306) + %t307 = load { ptr, i64, i64 }, ptr %a303 + store { ptr, i64, i64 } %t307, ptr %a309 + store { ptr, i64, i64 } { ptr @.str.1139, i64 1, i64 0 }, ptr %a310 + call void @finch_str_concat(ptr %a308, ptr %a309, ptr %a310) + store { ptr, i64, i64 } %t307, ptr %a311 + call void @finch_str_drop(ptr %a311) + %t312 = load { ptr, i64, i64 }, ptr %a308 + %t313 = getelementptr inbounds %S.gen.Template, ptr %a260, i32 0, i32 2 + %t314 = load { ptr, i64, i64 }, ptr %t313 + store { ptr, i64, i64 } %t312, ptr %a316 + store { ptr, i64, i64 } %t314, ptr %a317 + call void @finch_str_concat(ptr %a315, ptr %a316, ptr %a317) + store { ptr, i64, i64 } %t312, ptr %a318 + call void @finch_str_drop(ptr %a318) + %t319 = load { ptr, i64, i64 }, ptr %a315 + store { ptr, i64, i64 } %t319, ptr %a321 + store { ptr, i64, i64 } { ptr @.str.1140, i64 1, i64 0 }, ptr %a322 + call void @finch_str_concat(ptr %a320, ptr %a321, ptr %a322) + store { ptr, i64, i64 } %t319, ptr %a323 + call void @finch_str_drop(ptr %a323) + %t324 = load { ptr, i64, i64 }, ptr %a320 + %t325 = load ptr, ptr %a1 + %t326 = icmp eq ptr %t325, null + br i1 %t326, label %panic2002, label %ok2003 +panic2002: + call void @finch_panic(ptr @.str.1141, i64 282, ptr @.str.1142) 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 +ok2003: + %t327 = getelementptr inbounds %S.gen.Gen, ptr %t325, i32 0, i32 1 + %t328 = getelementptr inbounds %S.ast.Node, ptr %a285, i32 0, i32 13 + %t329 = load i64, ptr %t328 + %t330 = load { ptr, i64, i64 }, ptr %t327 + %t331 = extractvalue { ptr, i64, i64 } %t330, 1 + %t332 = icmp uge i64 %t329, %t331 + br i1 %t332, label %range2004, label %inrange2005 +range2004: + call void @finch_panic_index(ptr @.str.1143, i64 282, i64 %t329, i64 %t331) + unreachable +inrange2005: + %t333 = extractvalue { ptr, i64, i64 } %t330, 0 + %t334 = getelementptr inbounds { ptr, i64, i64 }, ptr %t333, i64 %t329 + %t335 = load { ptr, i64, i64 }, ptr %t334 + store { ptr, i64, i64 } %t324, ptr %a337 + store { ptr, i64, i64 } %t335, ptr %a338 + call void @finch_str_concat(ptr %a336, ptr %a337, ptr %a338) + store { ptr, i64, i64 } %t324, ptr %a339 + call void @finch_str_drop(ptr %a339) + %t340 = load { ptr, i64, i64 }, ptr %a336 + store { ptr, i64, i64 } %t340, ptr %a342 + store { ptr, i64, i64 } { ptr @.str.1144, i64 1, i64 0 }, ptr %a343 + call void @finch_str_concat(ptr %a341, ptr %a342, ptr %a343) + store { ptr, i64, i64 } %t340, ptr %a344 + call void @finch_str_drop(ptr %a344) + %t345 = load { ptr, i64, i64 }, ptr %a341 + %t346 = getelementptr inbounds %S.ast.Node, ptr %a285, i32 0, i32 11 + %t347 = load i64, ptr %t346 + call void @finch_str_from_int(ptr %a348, i64 %t347) + %t349 = load { ptr, i64, i64 }, ptr %a348 + store { ptr, i64, i64 } %t345, ptr %a351 + store { ptr, i64, i64 } %t349, ptr %a352 + call void @finch_str_concat(ptr %a350, ptr %a351, ptr %a352) + store { ptr, i64, i64 } %t345, ptr %a353 + call void @finch_str_drop(ptr %a353) + store { ptr, i64, i64 } %t349, ptr %a354 + call void @finch_str_drop(ptr %a354) + %t355 = load { ptr, i64, i64 }, ptr %a350 + store { ptr, i64, i64 } %t355, ptr %a357 + store { ptr, i64, i64 } { ptr @.str.1145, i64 1, i64 0 }, ptr %a358 + call void @finch_str_concat(ptr %a356, ptr %a357, ptr %a358) + store { ptr, i64, i64 } %t355, ptr %a359 + call void @finch_str_drop(ptr %a359) + %t360 = load { ptr, i64, i64 }, ptr %a356 + %t361 = getelementptr inbounds %S.ast.Node, ptr %a285, i32 0, i32 12 + %t362 = load i64, ptr %t361 + call void @finch_str_from_int(ptr %a363, i64 %t362) + %t364 = load { ptr, i64, i64 }, ptr %a363 + store { ptr, i64, i64 } %t360, ptr %a366 + store { ptr, i64, i64 } %t364, ptr %a367 + call void @finch_str_concat(ptr %a365, ptr %a366, ptr %a367) + store { ptr, i64, i64 } %t360, ptr %a368 + call void @finch_str_drop(ptr %a368) + store { ptr, i64, i64 } %t364, ptr %a369 + call void @finch_str_drop(ptr %a369) + %t370 = load { ptr, i64, i64 }, ptr %a365 + store { ptr, i64, i64 } %t370, ptr %a372 + store { ptr, i64, i64 } { ptr @.str.1146, i64 1, i64 0 }, ptr %a373 + call void @finch_str_concat(ptr %a371, ptr %a372, ptr %a373) + store { ptr, i64, i64 } %t370, ptr %a374 + call void @finch_str_drop(ptr %a374) + %t375 = load { ptr, i64, i64 }, ptr %a371 + %t376 = getelementptr inbounds %S.ast.Node, ptr %a285, i32 0, i32 14 + %t377 = load i64, ptr %t376 + call void @finch_str_from_int(ptr %a378, i64 %t377) + %t379 = load { ptr, i64, i64 }, ptr %a378 + store { ptr, i64, i64 } %t375, ptr %a381 + store { ptr, i64, i64 } %t379, ptr %a382 + call void @finch_str_concat(ptr %a380, ptr %a381, ptr %a382) + store { ptr, i64, i64 } %t375, ptr %a383 + call void @finch_str_drop(ptr %a383) + store { ptr, i64, i64 } %t379, ptr %a384 + call void @finch_str_drop(ptr %a384) + %t385 = load { ptr, i64, i64 }, ptr %a380 + store { ptr, i64, i64 } %t385, ptr %a387 + store { ptr, i64, i64 } { ptr @.str.1147, i64 1, i64 0 }, ptr %a388 + call void @finch_str_concat(ptr %a386, ptr %a387, ptr %a388) + store { ptr, i64, i64 } %t385, ptr %a389 + call void @finch_str_drop(ptr %a389) + %t390 = load { ptr, i64, i64 }, ptr %a386 + %t391 = getelementptr inbounds %S.gen.Template, ptr %a260, i32 0, i32 1 + %t392 = load { ptr, i64, i64 }, ptr %t391 + store { ptr, i64, i64 } { ptr @.str.1148, i64 3, i64 0 }, ptr %a394 + store { ptr, i64, i64 } %t392, ptr %a395 + call void @finch_str_concat(ptr %a393, ptr %a394, ptr %a395) + %t396 = load { ptr, i64, i64 }, ptr %a393 + store { ptr, i64, i64 } %t396, ptr %a398 + store { ptr, i64, i64 } { ptr @.str.1149, i64 1, i64 0 }, ptr %a399 + call void @finch_str_concat(ptr %a397, ptr %a398, ptr %a399) + store { ptr, i64, i64 } %t396, ptr %a400 + call void @finch_str_drop(ptr %a400) + %t401 = load { ptr, i64, i64 }, ptr %a397 + %t402 = getelementptr inbounds %S.gen.Template, ptr %a260, i32 0, i32 3 + %t403 = getelementptr inbounds { ptr, i64, i64 }, ptr %t402, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.1150, i64 2, i64 0 }, ptr %a404 + call void @finch_str_join(ptr %a405, ptr %t402, ptr %a404) + %t406 = load { ptr, i64, i64 }, ptr %a405 + store { ptr, i64, i64 } %t401, ptr %a408 + store { ptr, i64, i64 } %t406, ptr %a409 + call void @finch_str_concat(ptr %a407, ptr %a408, ptr %a409) + store { ptr, i64, i64 } %t401, ptr %a410 + call void @finch_str_drop(ptr %a410) + store { ptr, i64, i64 } %t406, ptr %a411 + call void @finch_str_drop(ptr %a411) + %t412 = load { ptr, i64, i64 }, ptr %a407 + store { ptr, i64, i64 } %t412, ptr %a414 + store { ptr, i64, i64 } { ptr @.str.1151, i64 6, i64 0 }, ptr %a415 + call void @finch_str_concat(ptr %a413, ptr %a414, ptr %a415) + store { ptr, i64, i64 } %t412, ptr %a416 + call void @finch_str_drop(ptr %a416) + %t417 = load { ptr, i64, i64 }, ptr %a413 + %t418 = call { ptr, i64, i64 } @finch.gen.esc({ ptr, i64, i64 } %t417) + store { ptr, i64, i64 } %t417, ptr %a419 + call void @finch_str_drop(ptr %a419) + store { ptr, i64, i64 } %t390, ptr %a421 + store { ptr, i64, i64 } %t418, ptr %a422 + call void @finch_str_concat(ptr %a420, ptr %a421, ptr %a422) + store { ptr, i64, i64 } %t390, ptr %a423 + call void @finch_str_drop(ptr %a423) + store { ptr, i64, i64 } %t418, ptr %a424 + call void @finch_str_drop(ptr %a424) + %t425 = load { ptr, i64, i64 }, ptr %a420 + store { ptr, i64, i64 } %t425, ptr %a427 + store { ptr, i64, i64 } { ptr @.str.1152, i64 1, i64 0 }, ptr %a428 + call void @finch_str_concat(ptr %a426, ptr %a427, ptr %a428) + store { ptr, i64, i64 } %t425, ptr %a429 + call void @finch_str_drop(ptr %a429) + %t430 = load { ptr, i64, i64 }, ptr %a426 + %t431 = load i64, ptr %t289 + %t432 = add i64 %t431, 1 + call void @finch_arr_reserve(ptr %t288, i64 %t432, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t433 = load ptr, ptr %t288 + %t434 = getelementptr inbounds { ptr, i64, i64 }, ptr %t433, i64 %t431 + store { ptr, i64, i64 } %t430, ptr %t434 + store i64 %t432, ptr %t289 + call void @finch.drop.S_ast_Node(ptr %a285) + call void @finch.drop.S_gen_Template(ptr %a260) br label %each.step1989 each.step1989: - %t711 = load i64, ptr %a586 - %t712 = add i64 %t711, 1 - store i64 %t712, ptr %a586 + %t435 = load i64, ptr %a249 + %t436 = add i64 %t435, 1 + store i64 %t436, ptr %a249 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: + %t437 = load ptr, ptr %a1 + %t438 = icmp eq ptr %t437, null + br i1 %t438, label %panic2006, label %ok2007 +panic2006: + call void @finch_panic(ptr @.str.1153, i64 284, ptr @.str.1154) + unreachable +ok2007: + %t439 = getelementptr inbounds %S.gen.Gen, ptr %t437, i32 0, i32 16 + store i64 0, ptr %a440 + br label %each.cond2008 +each.cond2008: + %t441 = getelementptr inbounds { ptr, i64, i64 }, ptr %t439, i32 0, i32 1 + %t442 = load i64, ptr %t441 + %t443 = load i64, ptr %a440 + %t444 = icmp slt i64 %t443, %t442 + br i1 %t444, label %each.body2009, label %each.end2011 +each.body2009: + %t445 = load ptr, ptr %t439 + %t446 = getelementptr inbounds %S.gen.StructDef, ptr %t445, i64 %t443 + %t447 = load %S.gen.StructDef, ptr %t446 + store %S.gen.StructDef %t447, ptr %a448 + call void @finch.copy.S_gen_StructDef(ptr %a449, ptr %a448) + %t450 = load %S.gen.StructDef, ptr %a449 + store %S.gen.StructDef %t450, ptr %a451 + %t452 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 2 + %t453 = load i1, ptr %t452 + br label %logic.from2012 +logic.from2012: + br i1 %t453, label %logic.end2014, label %logic.rhs2013 +logic.rhs2013: + %t454 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 5 + %t455 = getelementptr inbounds { ptr, i64, i64 }, ptr %t454, i32 0, i32 1 + %t456 = load i64, ptr %t455 + %t457 = icmp sgt i64 %t456, 0 + br label %logic.rend2015 +logic.rend2015: + br label %logic.end2014 +logic.end2014: + %t458 = phi i1 [ true, %logic.from2012 ], [ %t457, %logic.rend2015 ] + br i1 %t458, label %then2016, label %endif2018 +then2016: + call void @finch.drop.S_gen_StructDef(ptr %a451) + br label %each.step2010 +endif2018: + %t459 = load ptr, ptr %a1 + %t460 = icmp eq ptr %t459, null + br i1 %t460, label %panic2019, label %ok2020 +panic2019: + call void @finch_panic(ptr @.str.1155, i64 288, ptr @.str.1156) + unreachable +ok2020: + %t461 = getelementptr inbounds %S.gen.Gen, ptr %t459, i32 0, i32 0 + %t462 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 13 + %t463 = load i64, ptr %t462 + %t464 = load { ptr, i64, i64 }, ptr %t461 + %t465 = extractvalue { ptr, i64, i64 } %t464, 1 + %t466 = icmp uge i64 %t463, %t465 + br i1 %t466, label %range2021, label %inrange2022 +range2021: + call void @finch_panic_index(ptr @.str.1157, i64 288, i64 %t463, i64 %t465) + unreachable +inrange2022: + %t467 = extractvalue { ptr, i64, i64 } %t464, 0 + %t468 = getelementptr inbounds %S.ast.Program, ptr %t467, i64 %t463 + %t469 = getelementptr inbounds %S.ast.Program, ptr %t468, i32 0, i32 6 + %t470 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 14 + %t471 = load i64, ptr %t470 + %t472 = load { ptr, i64, i64 }, ptr %t469 + %t473 = extractvalue { ptr, i64, i64 } %t472, 1 + %t474 = icmp uge i64 %t471, %t473 + br i1 %t474, label %range2023, label %inrange2024 +range2023: + call void @finch_panic_index(ptr @.str.1158, i64 288, i64 %t471, i64 %t473) + unreachable +inrange2024: + %t475 = extractvalue { ptr, i64, i64 } %t472, 0 + %t476 = getelementptr inbounds %S.ast.Node, ptr %t475, i64 %t471 + %t477 = load %S.ast.Node, ptr %t476 + store %S.ast.Node %t477, ptr %a478 + call void @finch.copy.S_ast_Node(ptr %a479, ptr %a478) + %t480 = load %S.ast.Node, ptr %a479 + store %S.ast.Node %t480, ptr %a481 + %t482 = load ptr, ptr %a1 + %t483 = icmp eq ptr %t482, null + br i1 %t483, label %panic2025, label %ok2026 +panic2025: + call void @finch_panic(ptr @.str.1159, i64 289, ptr @.str.1160) + unreachable +ok2026: + %t484 = getelementptr inbounds %S.gen.Gen, ptr %t482, i32 0, i32 28 + %t485 = getelementptr inbounds { ptr, i64, i64 }, ptr %t484, i32 0, i32 1 + %t486 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 0 + %t487 = load { ptr, i64, i64 }, ptr %t486 + store { ptr, i64, i64 } { ptr @.str.1161, i64 3, i64 0 }, ptr %a489 + store { ptr, i64, i64 } %t487, ptr %a490 + call void @finch_str_concat(ptr %a488, ptr %a489, ptr %a490) + %t491 = load { ptr, i64, i64 }, ptr %a488 + store { ptr, i64, i64 } %t491, ptr %a493 + store { ptr, i64, i64 } { ptr @.str.1162, i64 1, i64 0 }, ptr %a494 + call void @finch_str_concat(ptr %a492, ptr %a493, ptr %a494) + store { ptr, i64, i64 } %t491, ptr %a495 + call void @finch_str_drop(ptr %a495) + %t496 = load { ptr, i64, i64 }, ptr %a492 + %t497 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 1 + %t498 = load { ptr, i64, i64 }, ptr %t497 + store { ptr, i64, i64 } %t496, ptr %a500 + store { ptr, i64, i64 } %t498, ptr %a501 + call void @finch_str_concat(ptr %a499, ptr %a500, ptr %a501) + store { ptr, i64, i64 } %t496, ptr %a502 + call void @finch_str_drop(ptr %a502) + %t503 = load { ptr, i64, i64 }, ptr %a499 + store { ptr, i64, i64 } %t503, ptr %a505 + store { ptr, i64, i64 } { ptr @.str.1163, i64 1, i64 0 }, ptr %a506 + call void @finch_str_concat(ptr %a504, ptr %a505, ptr %a506) + store { ptr, i64, i64 } %t503, ptr %a507 + call void @finch_str_drop(ptr %a507) + %t508 = load { ptr, i64, i64 }, ptr %a504 + %t509 = load ptr, ptr %a1 + %t510 = icmp eq ptr %t509, null + br i1 %t510, label %panic2027, label %ok2028 +panic2027: + call void @finch_panic(ptr @.str.1164, i64 289, ptr @.str.1165) + unreachable +ok2028: + %t511 = getelementptr inbounds %S.gen.Gen, ptr %t509, i32 0, i32 1 + %t512 = getelementptr inbounds %S.ast.Node, ptr %a481, i32 0, i32 13 + %t513 = load i64, ptr %t512 + %t514 = load { ptr, i64, i64 }, ptr %t511 + %t515 = extractvalue { ptr, i64, i64 } %t514, 1 + %t516 = icmp uge i64 %t513, %t515 + br i1 %t516, label %range2029, label %inrange2030 +range2029: + call void @finch_panic_index(ptr @.str.1166, i64 289, i64 %t513, i64 %t515) + unreachable +inrange2030: + %t517 = extractvalue { ptr, i64, i64 } %t514, 0 + %t518 = getelementptr inbounds { ptr, i64, i64 }, ptr %t517, i64 %t513 + %t519 = load { ptr, i64, i64 }, ptr %t518 + store { ptr, i64, i64 } %t508, ptr %a521 + store { ptr, i64, i64 } %t519, ptr %a522 + call void @finch_str_concat(ptr %a520, ptr %a521, ptr %a522) + store { ptr, i64, i64 } %t508, ptr %a523 + call void @finch_str_drop(ptr %a523) + %t524 = load { ptr, i64, i64 }, ptr %a520 + store { ptr, i64, i64 } %t524, ptr %a526 + store { ptr, i64, i64 } { ptr @.str.1167, i64 1, i64 0 }, ptr %a527 + call void @finch_str_concat(ptr %a525, ptr %a526, ptr %a527) + store { ptr, i64, i64 } %t524, ptr %a528 + call void @finch_str_drop(ptr %a528) + %t529 = load { ptr, i64, i64 }, ptr %a525 + %t530 = getelementptr inbounds %S.ast.Node, ptr %a481, i32 0, i32 11 + %t531 = load i64, ptr %t530 + call void @finch_str_from_int(ptr %a532, i64 %t531) + %t533 = load { ptr, i64, i64 }, ptr %a532 + store { ptr, i64, i64 } %t529, ptr %a535 + store { ptr, i64, i64 } %t533, ptr %a536 + call void @finch_str_concat(ptr %a534, ptr %a535, ptr %a536) + store { ptr, i64, i64 } %t529, ptr %a537 + call void @finch_str_drop(ptr %a537) + store { ptr, i64, i64 } %t533, ptr %a538 + call void @finch_str_drop(ptr %a538) + %t539 = load { ptr, i64, i64 }, ptr %a534 + store { ptr, i64, i64 } %t539, ptr %a541 + store { ptr, i64, i64 } { ptr @.str.1168, i64 1, i64 0 }, ptr %a542 + call void @finch_str_concat(ptr %a540, ptr %a541, ptr %a542) + store { ptr, i64, i64 } %t539, ptr %a543 + call void @finch_str_drop(ptr %a543) + %t544 = load { ptr, i64, i64 }, ptr %a540 + %t545 = getelementptr inbounds %S.ast.Node, ptr %a481, i32 0, i32 12 + %t546 = load i64, ptr %t545 + call void @finch_str_from_int(ptr %a547, i64 %t546) + %t548 = load { ptr, i64, i64 }, ptr %a547 + store { ptr, i64, i64 } %t544, ptr %a550 + store { ptr, i64, i64 } %t548, ptr %a551 + call void @finch_str_concat(ptr %a549, ptr %a550, ptr %a551) + store { ptr, i64, i64 } %t544, ptr %a552 + call void @finch_str_drop(ptr %a552) + store { ptr, i64, i64 } %t548, ptr %a553 + call void @finch_str_drop(ptr %a553) + %t554 = load { ptr, i64, i64 }, ptr %a549 + %t555 = load i64, ptr %t485 + %t556 = add i64 %t555, 1 + call void @finch_arr_reserve(ptr %t484, i64 %t556, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t557 = load ptr, ptr %t484 + %t558 = getelementptr inbounds { ptr, i64, i64 }, ptr %t557, i64 %t555 + store { ptr, i64, i64 } %t554, ptr %t558 + store i64 %t556, ptr %t485 + %t559 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 11 + %t560 = getelementptr inbounds { ptr, i64, i64 }, ptr %t559, i32 0, i32 1 + %t561 = load i64, ptr %t560 + store i64 0, ptr %a562 + br label %for.cond2031 +for.cond2031: + %t563 = load i64, ptr %a562 + %t564 = icmp slt i64 %t563, %t561 + br i1 %t564, label %for.body2032, label %for.end2034 +for.body2032: + %t565 = load ptr, ptr %a1 + %t566 = icmp eq ptr %t565, null + br i1 %t566, label %panic2035, label %ok2036 +panic2035: + call void @finch_panic(ptr @.str.1169, i64 291, ptr @.str.1170) + unreachable +ok2036: + %t567 = getelementptr inbounds %S.gen.Gen, ptr %t565, i32 0, i32 28 + %t568 = getelementptr inbounds { ptr, i64, i64 }, ptr %t567, i32 0, i32 1 + %t569 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 0 + %t570 = load { ptr, i64, i64 }, ptr %t569 + store { ptr, i64, i64 } { ptr @.str.1171, i64 4, i64 0 }, ptr %a572 + store { ptr, i64, i64 } %t570, ptr %a573 + call void @finch_str_concat(ptr %a571, ptr %a572, ptr %a573) + %t574 = load { ptr, i64, i64 }, ptr %a571 + store { ptr, i64, i64 } %t574, ptr %a576 + store { ptr, i64, i64 } { ptr @.str.1172, i64 1, i64 0 }, ptr %a577 + call void @finch_str_concat(ptr %a575, ptr %a576, ptr %a577) + store { ptr, i64, i64 } %t574, ptr %a578 + call void @finch_str_drop(ptr %a578) + %t579 = load { ptr, i64, i64 }, ptr %a575 + %t580 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 1 + %t581 = load { ptr, i64, i64 }, ptr %t580 + store { ptr, i64, i64 } %t579, ptr %a583 + store { ptr, i64, i64 } %t581, ptr %a584 + call void @finch_str_concat(ptr %a582, ptr %a583, ptr %a584) + store { ptr, i64, i64 } %t579, ptr %a585 + call void @finch_str_drop(ptr %a585) + %t586 = load { ptr, i64, i64 }, ptr %a582 + store { ptr, i64, i64 } %t586, ptr %a588 + store { ptr, i64, i64 } { ptr @.str.1173, i64 1, i64 0 }, ptr %a589 + call void @finch_str_concat(ptr %a587, ptr %a588, ptr %a589) + store { ptr, i64, i64 } %t586, ptr %a590 + call void @finch_str_drop(ptr %a590) + %t591 = load { ptr, i64, i64 }, ptr %a587 + %t592 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 11 + %t593 = load i64, ptr %a562 + %t594 = load { ptr, i64, i64 }, ptr %t592 + %t595 = extractvalue { ptr, i64, i64 } %t594, 1 + %t596 = icmp uge i64 %t593, %t595 + br i1 %t596, label %range2037, label %inrange2038 +range2037: + call void @finch_panic_index(ptr @.str.1174, i64 291, i64 %t593, i64 %t595) + unreachable +inrange2038: + %t597 = extractvalue { ptr, i64, i64 } %t594, 0 + %t598 = getelementptr inbounds { ptr, i64, i64 }, ptr %t597, i64 %t593 + %t599 = load { ptr, i64, i64 }, ptr %t598 + store { ptr, i64, i64 } %t591, ptr %a601 + store { ptr, i64, i64 } %t599, ptr %a602 + call void @finch_str_concat(ptr %a600, ptr %a601, ptr %a602) + store { ptr, i64, i64 } %t591, ptr %a603 + call void @finch_str_drop(ptr %a603) + %t604 = load { ptr, i64, i64 }, ptr %a600 + store { ptr, i64, i64 } %t604, ptr %a606 + store { ptr, i64, i64 } { ptr @.str.1175, i64 1, i64 0 }, ptr %a607 + call void @finch_str_concat(ptr %a605, ptr %a606, ptr %a607) + store { ptr, i64, i64 } %t604, ptr %a608 + call void @finch_str_drop(ptr %a608) + %t609 = load { ptr, i64, i64 }, ptr %a605 + %t610 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 12 + %t611 = load i64, ptr %a562 + %t612 = load { ptr, i64, i64 }, ptr %t610 + %t613 = extractvalue { ptr, i64, i64 } %t612, 1 + %t614 = icmp uge i64 %t611, %t613 + br i1 %t614, label %range2039, label %inrange2040 +range2039: + call void @finch_panic_index(ptr @.str.1176, i64 291, i64 %t611, i64 %t613) + unreachable +inrange2040: + %t615 = extractvalue { ptr, i64, i64 } %t612, 0 + %t616 = getelementptr inbounds %S.ast.Type, ptr %t615, i64 %t611 + %t617 = load %S.ast.Type, ptr %t616 + %t618 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t617) + store { ptr, i64, i64 } %t609, ptr %a620 + store { ptr, i64, i64 } %t618, ptr %a621 + call void @finch_str_concat(ptr %a619, ptr %a620, ptr %a621) + store { ptr, i64, i64 } %t609, ptr %a622 + call void @finch_str_drop(ptr %a622) + store { ptr, i64, i64 } %t618, ptr %a623 + call void @finch_str_drop(ptr %a623) + %t624 = load { ptr, i64, i64 }, ptr %a619 + %t625 = load i64, ptr %t568 + %t626 = add i64 %t625, 1 + call void @finch_arr_reserve(ptr %t567, i64 %t626, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t627 = load ptr, ptr %t567 + %t628 = getelementptr inbounds { ptr, i64, i64 }, ptr %t627, i64 %t625 + store { ptr, i64, i64 } %t624, ptr %t628 + store i64 %t626, ptr %t568 + br label %for.step2033 +for.step2033: + %t629 = load i64, ptr %a562 + %t630 = add i64 %t629, 1 + store i64 %t630, ptr %a562 + br label %for.cond2031 +for.end2034: + call void @finch.drop.S_ast_Node(ptr %a481) + call void @finch.drop.S_gen_StructDef(ptr %a451) + br label %each.step2010 +each.step2010: + %t631 = load i64, ptr %a440 + %t632 = add i64 %t631, 1 + store i64 %t632, ptr %a440 + br label %each.cond2008 +each.end2011: + %t633 = load ptr, ptr %a1 + %t634 = icmp eq ptr %t633, null + br i1 %t634, label %panic2041, label %ok2042 +panic2041: + call void @finch_panic(ptr @.str.1177, i64 294, ptr @.str.1178) + unreachable +ok2042: + %t635 = getelementptr inbounds %S.gen.Gen, ptr %t633, i32 0, i32 0 + %t636 = getelementptr inbounds { ptr, i64, i64 }, ptr %t635, i32 0, i32 1 + %t637 = load i64, ptr %t636 + store i64 0, ptr %a638 + br label %for.cond2043 +for.cond2043: + %t639 = load i64, ptr %a638 + %t640 = icmp slt i64 %t639, %t637 + br i1 %t640, label %for.body2044, label %for.end2046 +for.body2044: + %t641 = load ptr, ptr %a1 + %t642 = icmp eq ptr %t641, null + br i1 %t642, label %panic2047, label %ok2048 +panic2047: + call void @finch_panic(ptr @.str.1179, i64 295, ptr @.str.1180) + unreachable +ok2048: + %t643 = getelementptr inbounds %S.gen.Gen, ptr %t641, i32 0, i32 0 + %t644 = load i64, ptr %a638 + %t645 = load { ptr, i64, i64 }, ptr %t643 + %t646 = extractvalue { ptr, i64, i64 } %t645, 1 + %t647 = icmp uge i64 %t644, %t646 + br i1 %t647, label %range2049, label %inrange2050 +range2049: + call void @finch_panic_index(ptr @.str.1181, i64 295, i64 %t644, i64 %t646) + unreachable +inrange2050: + %t648 = extractvalue { ptr, i64, i64 } %t645, 0 + %t649 = getelementptr inbounds %S.ast.Program, ptr %t648, i64 %t644 + %t650 = getelementptr inbounds %S.ast.Program, ptr %t649, i32 0, i32 7 + store i64 0, ptr %a651 + br label %each.cond2051 +each.cond2051: + %t652 = getelementptr inbounds { ptr, i64, i64 }, ptr %t650, i32 0, i32 1 + %t653 = load i64, ptr %t652 + %t654 = load i64, ptr %a651 + %t655 = icmp slt i64 %t654, %t653 + br i1 %t655, label %each.body2052, label %each.end2054 +each.body2052: + %t656 = load ptr, ptr %t650 + %t657 = getelementptr inbounds %S.ast.Node, ptr %t656, i64 %t654 + %t658 = load %S.ast.Node, ptr %t657 + store %S.ast.Node %t658, ptr %a659 + call void @finch.copy.S_ast_Node(ptr %a660, ptr %a659) + %t661 = load %S.ast.Node, ptr %a660 + store %S.ast.Node %t661, ptr %a662 + store { ptr, i64, i64 } { ptr @.str.1182, i64 0, i64 0 }, ptr %a663 + store { ptr, i64, i64 } zeroinitializer, ptr %a664 + %t665 = getelementptr inbounds %S.ast.Node, ptr %a662, i32 0, i32 9 + store i64 0, ptr %a666 + br label %each.cond2055 +each.cond2055: + %t667 = getelementptr inbounds { ptr, i64, i64 }, ptr %t665, i32 0, i32 1 + %t668 = load i64, ptr %t667 + %t669 = load i64, ptr %a666 + %t670 = icmp slt i64 %t669, %t668 + br i1 %t670, label %each.body2056, label %each.end2058 +each.body2056: + %t671 = load ptr, ptr %t665 + %t672 = getelementptr inbounds %S.ast.Node, ptr %t671, i64 %t669 + %t673 = load %S.ast.Node, ptr %t672 + store %S.ast.Node %t673, ptr %a674 + %t675 = getelementptr inbounds { ptr, i64, i64 }, ptr %a664, i32 0, i32 1 + %t676 = getelementptr inbounds %S.ast.Node, ptr %a674, i32 0, i32 1 + %t677 = load { ptr, i64, i64 }, ptr %t676 + store { ptr, i64, i64 } %t677, ptr %a678 + call void @finch_str_copy(ptr %a679, ptr %a678) + %t680 = load { ptr, i64, i64 }, ptr %a679 + %t681 = load i64, ptr %t675 + %t682 = add i64 %t681, 1 + call void @finch_arr_reserve(ptr %a664, i64 %t682, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t683 = load ptr, ptr %a664 + %t684 = getelementptr inbounds { ptr, i64, i64 }, ptr %t683, i64 %t681 + store { ptr, i64, i64 } %t680, ptr %t684 + store i64 %t682, ptr %t675 + br label %each.step2057 +each.step2057: + %t685 = load i64, ptr %a666 + %t686 = add i64 %t685, 1 + store i64 %t686, ptr %a666 + br label %each.cond2055 +each.end2058: + %t687 = getelementptr inbounds { ptr, i64, i64 }, ptr %a664, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.1183, i64 1, i64 0 }, ptr %a688 + call void @finch_str_join(ptr %a689, ptr %a664, ptr %a688) + %t690 = load { ptr, i64, i64 }, ptr %a689 + %t691 = load { ptr, i64, i64 }, ptr %a663 + store { ptr, i64, i64 } %t690, ptr %a663 + store { ptr, i64, i64 } %t691, ptr %a692 + call void @finch_str_drop(ptr %a692) + %t693 = load ptr, ptr %a1 + %t694 = icmp eq ptr %t693, null + br i1 %t694, label %panic2059, label %ok2060 +panic2059: + call void @finch_panic(ptr @.str.1184, i64 302, ptr @.str.1185) + unreachable +ok2060: + %t695 = getelementptr inbounds %S.gen.Gen, ptr %t693, i32 0, i32 28 + %t696 = getelementptr inbounds { ptr, i64, i64 }, ptr %t695, i32 0, i32 1 + %t697 = load ptr, ptr %a1 + %t698 = icmp eq ptr %t697, null + br i1 %t698, label %panic2061, label %ok2062 +panic2061: + call void @finch_panic(ptr @.str.1187, i64 302, ptr @.str.1188) + unreachable +ok2062: + %t699 = getelementptr inbounds %S.gen.Gen, ptr %t697, i32 0, i32 0 + %t700 = load i64, ptr %a638 + %t701 = load { ptr, i64, i64 }, ptr %t699 + %t702 = extractvalue { ptr, i64, i64 } %t701, 1 + %t703 = icmp uge i64 %t700, %t702 + br i1 %t703, label %range2063, label %inrange2064 +range2063: + call void @finch_panic_index(ptr @.str.1189, i64 302, i64 %t700, i64 %t702) + unreachable +inrange2064: + %t704 = extractvalue { ptr, i64, i64 } %t701, 0 + %t705 = getelementptr inbounds %S.ast.Program, ptr %t704, i64 %t700 + %t706 = getelementptr inbounds %S.ast.Program, ptr %t705, i32 0, i32 0 + %t707 = load { ptr, i64, i64 }, ptr %t706 + store { ptr, i64, i64 } { ptr @.str.1186, i64 3, i64 0 }, ptr %a709 + store { ptr, i64, i64 } %t707, ptr %a710 + call void @finch_str_concat(ptr %a708, ptr %a709, ptr %a710) + %t711 = load { ptr, i64, i64 }, ptr %a708 + store { ptr, i64, i64 } %t711, ptr %a713 + store { ptr, i64, i64 } { ptr @.str.1190, i64 1, i64 0 }, ptr %a714 + call void @finch_str_concat(ptr %a712, ptr %a713, ptr %a714) + store { ptr, i64, i64 } %t711, ptr %a715 + call void @finch_str_drop(ptr %a715) + %t716 = load { ptr, i64, i64 }, ptr %a712 + %t717 = getelementptr inbounds %S.ast.Node, ptr %a662, i32 0, i32 1 + %t718 = load { ptr, i64, i64 }, ptr %t717 + store { ptr, i64, i64 } %t716, ptr %a720 + store { ptr, i64, i64 } %t718, ptr %a721 + call void @finch_str_concat(ptr %a719, ptr %a720, ptr %a721) + store { ptr, i64, i64 } %t716, ptr %a722 + call void @finch_str_drop(ptr %a722) + %t723 = load { ptr, i64, i64 }, ptr %a719 + store { ptr, i64, i64 } %t723, ptr %a725 + store { ptr, i64, i64 } { ptr @.str.1191, i64 1, i64 0 }, ptr %a726 + call void @finch_str_concat(ptr %a724, ptr %a725, ptr %a726) + store { ptr, i64, i64 } %t723, ptr %a727 + call void @finch_str_drop(ptr %a727) + %t728 = load { ptr, i64, i64 }, ptr %a724 + %t729 = load ptr, ptr %a1 + %t730 = icmp eq ptr %t729, null + br i1 %t730, label %panic2065, label %ok2066 +panic2065: + call void @finch_panic(ptr @.str.1192, i64 302, ptr @.str.1193) + unreachable +ok2066: + %t731 = getelementptr inbounds %S.gen.Gen, ptr %t729, i32 0, i32 1 + %t732 = getelementptr inbounds %S.ast.Node, ptr %a662, i32 0, i32 13 + %t733 = load i64, ptr %t732 + %t734 = load { ptr, i64, i64 }, ptr %t731 + %t735 = extractvalue { ptr, i64, i64 } %t734, 1 + %t736 = icmp uge i64 %t733, %t735 + br i1 %t736, label %range2067, label %inrange2068 +range2067: + call void @finch_panic_index(ptr @.str.1194, i64 302, i64 %t733, i64 %t735) + unreachable +inrange2068: + %t737 = extractvalue { ptr, i64, i64 } %t734, 0 + %t738 = getelementptr inbounds { ptr, i64, i64 }, ptr %t737, i64 %t733 + %t739 = load { ptr, i64, i64 }, ptr %t738 + store { ptr, i64, i64 } %t728, ptr %a741 + store { ptr, i64, i64 } %t739, ptr %a742 + call void @finch_str_concat(ptr %a740, ptr %a741, ptr %a742) + store { ptr, i64, i64 } %t728, ptr %a743 + call void @finch_str_drop(ptr %a743) + %t744 = load { ptr, i64, i64 }, ptr %a740 + store { ptr, i64, i64 } %t744, ptr %a746 + store { ptr, i64, i64 } { ptr @.str.1195, i64 1, i64 0 }, ptr %a747 + call void @finch_str_concat(ptr %a745, ptr %a746, ptr %a747) + store { ptr, i64, i64 } %t744, ptr %a748 + call void @finch_str_drop(ptr %a748) + %t749 = load { ptr, i64, i64 }, ptr %a745 + %t750 = getelementptr inbounds %S.ast.Node, ptr %a662, i32 0, i32 11 + %t751 = load i64, ptr %t750 + call void @finch_str_from_int(ptr %a752, i64 %t751) + %t753 = load { ptr, i64, i64 }, ptr %a752 + store { ptr, i64, i64 } %t749, ptr %a755 + store { ptr, i64, i64 } %t753, ptr %a756 + call void @finch_str_concat(ptr %a754, ptr %a755, ptr %a756) + store { ptr, i64, i64 } %t749, ptr %a757 + call void @finch_str_drop(ptr %a757) + store { ptr, i64, i64 } %t753, ptr %a758 + call void @finch_str_drop(ptr %a758) + %t759 = load { ptr, i64, i64 }, ptr %a754 + store { ptr, i64, i64 } %t759, ptr %a761 + store { ptr, i64, i64 } { ptr @.str.1196, i64 1, i64 0 }, ptr %a762 + call void @finch_str_concat(ptr %a760, ptr %a761, ptr %a762) + store { ptr, i64, i64 } %t759, ptr %a763 + call void @finch_str_drop(ptr %a763) + %t764 = load { ptr, i64, i64 }, ptr %a760 + %t765 = getelementptr inbounds %S.ast.Node, ptr %a662, i32 0, i32 12 + %t766 = load i64, ptr %t765 + call void @finch_str_from_int(ptr %a767, i64 %t766) + %t768 = load { ptr, i64, i64 }, ptr %a767 + store { ptr, i64, i64 } %t764, ptr %a770 + store { ptr, i64, i64 } %t768, ptr %a771 + call void @finch_str_concat(ptr %a769, ptr %a770, ptr %a771) + store { ptr, i64, i64 } %t764, ptr %a772 + call void @finch_str_drop(ptr %a772) + store { ptr, i64, i64 } %t768, ptr %a773 + call void @finch_str_drop(ptr %a773) + %t774 = load { ptr, i64, i64 }, ptr %a769 + store { ptr, i64, i64 } %t774, ptr %a776 + store { ptr, i64, i64 } { ptr @.str.1197, i64 1, i64 0 }, ptr %a777 + call void @finch_str_concat(ptr %a775, ptr %a776, ptr %a777) + store { ptr, i64, i64 } %t774, ptr %a778 + call void @finch_str_drop(ptr %a778) + %t779 = load { ptr, i64, i64 }, ptr %a775 + %t780 = load { ptr, i64, i64 }, ptr %a663 + store { ptr, i64, i64 } %t779, ptr %a782 + store { ptr, i64, i64 } %t780, ptr %a783 + call void @finch_str_concat(ptr %a781, ptr %a782, ptr %a783) + store { ptr, i64, i64 } %t779, ptr %a784 + call void @finch_str_drop(ptr %a784) + %t785 = load { ptr, i64, i64 }, ptr %a781 + %t786 = load i64, ptr %t696 + %t787 = add i64 %t786, 1 + call void @finch_arr_reserve(ptr %t695, i64 %t787, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t788 = load ptr, ptr %t695 + %t789 = getelementptr inbounds { ptr, i64, i64 }, ptr %t788, i64 %t786 + store { ptr, i64, i64 } %t785, ptr %t789 + store i64 %t787, ptr %t696 + call void @finch.drop.arr_str(ptr %a664) + call void @finch_str_drop(ptr %a663) + call void @finch.drop.S_ast_Node(ptr %a662) + br label %each.step2053 +each.step2053: + %t790 = load i64, ptr %a651 + %t791 = add i64 %t790, 1 + store i64 %t791, ptr %a651 + br label %each.cond2051 +each.end2054: + br label %for.step2045 +for.step2045: + %t792 = load i64, ptr %a638 + %t793 = add i64 %t792, 1 + store i64 %t793, ptr %a638 + br label %for.cond2043 +for.end2046: ret void } @@ -20971,161 +23666,191 @@ entry: %a3 = 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 + %a28 = alloca { ptr, i64, i64 }, align 16 %a41 = 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 + %a43 = alloca { ptr, i64, i64 }, align 16 + %a47 = 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 %a52 = 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 + %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 %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 + %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 + %a73 = 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 %a79 = alloca { ptr, i64, i64 }, align 16 + %a85 = alloca { ptr, i64, i64 }, align 16 + %a86 = alloca { ptr, i64, i64 }, align 16 + %a87 = alloca { ptr, i64, i64 }, align 16 + %a88 = alloca { ptr, i64, i64 }, align 16 + %a96 = 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 %panic2005, label %ok2006 -panic2005: - call void @finch_panic(ptr @.str.1189, i64 288, ptr @.str.1190) + br i1 %t5, label %panic2069, label %ok2070 +panic2069: + call void @finch_panic(ptr @.str.1198, i64 308, ptr @.str.1199) unreachable -ok2006: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 26 +ok2070: + %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 27 %t7 = load i1, ptr %t6 - br label %logic.from2007 -logic.from2007: - br i1 %t7, label %logic.rhs2008, label %logic.end2009 -logic.rhs2008: + br label %logic.from2071 +logic.from2071: + br i1 %t7, label %logic.rhs2072, label %logic.end2073 +logic.rhs2072: %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) + br i1 %t9, label %panic2074, label %ok2075 +panic2074: + call void @finch_panic(ptr @.str.1200, i64 308, ptr @.str.1201) unreachable -ok2011: - %t10 = getelementptr inbounds %S.gen.Gen, ptr %t8, i32 0, i32 27 +ok2075: + %t10 = getelementptr inbounds %S.gen.Gen, ptr %t8, i32 0, i32 28 %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: + br label %logic.rend2076 +logic.rend2076: + br label %logic.end2073 +logic.end2073: + %t14 = phi i1 [ false, %logic.from2071 ], [ %t13, %logic.rend2076 ] + br i1 %t14, label %then2077, label %endif2079 +then2077: %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) + br i1 %t16, label %panic2080, label %ok2081 +panic2080: + call void @finch_panic(ptr @.str.1202, i64 309, ptr @.str.1203) unreachable -ok2017: - %t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 27 +ok2081: + %t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 28 %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 + store { ptr, i64, i64 } { ptr @.str.1204, 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) + %t26 = select i1 %t25, ptr @.str.1205, ptr %t24 + %t27 = call i32 (ptr, ...) @printf(ptr @.str.1206, i32 %t23, ptr %t26) + store { ptr, i64, i64 } %t21, ptr %a28 + call void @finch_str_drop(ptr %a28) + %t29 = call i32 (ptr, ...) @printf(ptr @.str.1207) + br label %endif2079 +endif2079: + %t30 = load ptr, ptr %a1 + %t31 = icmp eq ptr %t30, null + br i1 %t31, label %panic2082, label %ok2083 +panic2082: + call void @finch_panic(ptr @.str.1208, i64 311, ptr @.str.1209) 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) +ok2083: + %t32 = getelementptr inbounds %S.gen.Gen, ptr %t30, i32 0, i32 1 + %t33 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 + %t34 = load i64, ptr %t33 + %t35 = load { ptr, i64, i64 }, ptr %t32 + %t36 = extractvalue { ptr, i64, i64 } %t35, 1 + %t37 = icmp uge i64 %t34, %t36 + br i1 %t37, label %range2084, label %inrange2085 +range2084: + call void @finch_panic_index(ptr @.str.1210, i64 311, i64 %t34, i64 %t36) 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 = 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 +inrange2085: + %t38 = extractvalue { ptr, i64, i64 } %t35, 0 + %t39 = getelementptr inbounds { ptr, i64, i64 }, ptr %t38, i64 %t34 + %t40 = load { ptr, i64, i64 }, ptr %t39 + store { ptr, i64, i64 } %t40, ptr %a42 + store { ptr, i64, i64 } { ptr @.str.1211, i64 1, 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 %a2, i32 0, i32 11 + %t46 = load i64, ptr %t45 + call void @finch_str_from_int(ptr %a47, i64 %t46) + %t48 = load { ptr, i64, i64 }, ptr %a47 + store { ptr, i64, i64 } %t44, ptr %a50 + store { ptr, i64, i64 } %t48, ptr %a51 + call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) + store { ptr, i64, i64 } %t44, ptr %a52 + call void @finch_str_drop(ptr %a52) + store { ptr, i64, i64 } %t48, ptr %a53 + call void @finch_str_drop(ptr %a53) + %t54 = load { ptr, i64, i64 }, ptr %a49 + store { ptr, i64, i64 } %t54, ptr %a56 + store { ptr, i64, i64 } { ptr @.str.1212, i64 1, i64 0 }, ptr %a57 + call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) + store { ptr, i64, i64 } %t54, ptr %a58 + call void @finch_str_drop(ptr %a58) + %t59 = load { ptr, i64, i64 }, ptr %a55 + %t60 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 + %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 } %t59, 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 - %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) + store { ptr, i64, i64 } %t59, ptr %a67 + call void @finch_str_drop(ptr %a67) + store { ptr, i64, i64 } %t63, ptr %a68 + call void @finch_str_drop(ptr %a68) + %t69 = load { ptr, i64, i64 }, ptr %a64 + store { ptr, i64, i64 } %t69, ptr %a71 + store { ptr, i64, i64 } { ptr @.str.1213, i64 9, i64 0 }, ptr %a72 + call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) + store { ptr, i64, i64 } %t69, ptr %a73 + call void @finch_str_drop(ptr %a73) + %t74 = load { ptr, i64, i64 }, ptr %a70 + %t75 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t74, ptr %a77 + store { ptr, i64, i64 } %t75, ptr %a78 + call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78) + store { ptr, i64, i64 } %t74, ptr %a79 + call void @finch_str_drop(ptr %a79) + %t80 = load { ptr, i64, i64 }, ptr %a76 + %t81 = load ptr, ptr %a1 + %t82 = icmp eq ptr %t81, null + br i1 %t82, label %panic2086, label %ok2087 +panic2086: + call void @finch_panic(ptr @.str.1214, i64 311, ptr @.str.1215) 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) +ok2087: + %t83 = getelementptr inbounds %S.gen.Gen, ptr %t81, i32 0, i32 20 + %t84 = load { ptr, i64, i64 }, ptr %t83 + store { ptr, i64, i64 } %t80, ptr %a86 + store { ptr, i64, i64 } %t84, ptr %a87 + call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) + store { ptr, i64, i64 } %t80, ptr %a88 + call void @finch_str_drop(ptr %a88) + %t89 = load { ptr, i64, i64 }, ptr %a85 + %t90 = extractvalue { ptr, i64, i64 } %t89, 1 + %t91 = trunc i64 %t90 to i32 + %t92 = extractvalue { ptr, i64, i64 } %t89, 0 + %t93 = icmp eq ptr %t92, null + %t94 = select i1 %t93, ptr @.str.1216, ptr %t92 + %t95 = call i32 (ptr, ...) @printf(ptr @.str.1217, i32 %t91, ptr %t94) + store { ptr, i64, i64 } %t89, ptr %a96 + call void @finch_str_drop(ptr %a96) + %t97 = call i32 (ptr, ...) @printf(ptr @.str.1218) + %t98 = trunc i64 1 to i32 + %t99 = call i32 @fflush(ptr null) + call void @exit(i32 %t98) ret void } @@ -21142,97 +23867,106 @@ entry: %a24 = alloca { ptr, i64, i64 }, align 16 %a25 = alloca { ptr, i64, i64 }, align 16 %a26 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 + %a27 = 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 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = 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 + %a48 = alloca { ptr, i64, i64 }, align 16 + %a49 = alloca { ptr, i64, i64 }, align 16 + %a50 = 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 %panic2024, label %ok2025 -panic2024: - call void @finch_panic(ptr @.str.1210, i64 297, ptr @.str.1211) + br i1 %t4, label %panic2088, label %ok2089 +panic2088: + call void @finch_panic(ptr @.str.1219, i64 317, ptr @.str.1220) unreachable -ok2025: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 34 +ok2089: + %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 35 %t6 = load i64, ptr %t5 %t7 = icmp sge i64 %t6, 0 - br label %logic.from2026 -logic.from2026: - br i1 %t7, label %logic.rhs2027, label %logic.end2028 -logic.rhs2027: + br label %logic.from2090 +logic.from2090: + br i1 %t7, label %logic.rhs2091, label %logic.end2092 +logic.rhs2091: %t8 = load { ptr, i64, i64 }, ptr %a2 store { ptr, i64, i64 } %t8, ptr %a9 - store { ptr, i64, i64 } { ptr @.str.1213, i64 5, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.1222, 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.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: + br label %logic.rend2093 +logic.rend2093: + br label %logic.end2092 +logic.end2092: + %t14 = phi i1 [ false, %logic.from2090 ], [ %t13, %logic.rend2093 ] + br i1 %t14, label %then2094, label %endif2096 +then2094: %t15 = load ptr, ptr %a1 %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic2033, label %ok2034 -panic2033: - call void @finch_panic(ptr @.str.1214, i64 298, ptr @.str.1215) + br i1 %t16, label %panic2097, label %ok2098 +panic2097: + call void @finch_panic(ptr @.str.1223, i64 318, ptr @.str.1224) unreachable -ok2034: +ok2098: %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.1216, i64 2, i64 0 }, ptr %a21 + store { ptr, i64, i64 } { ptr @.str.1225, 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.1217, i64 8, i64 0 }, ptr %a26 + store { ptr, i64, i64 } { ptr @.str.1226, 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 - %t29 = call i64 @finch.gen.dbgLocation(ptr %t28) - call void @finch_str_from_int(ptr %a30, i64 %t29) - %t31 = load { ptr, i64, i64 }, ptr %a30 - store { ptr, i64, i64 } %t27, 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 - %t36 = load i64, ptr %t18 - %t37 = add i64 %t36, 1 - call void @finch_arr_reserve(ptr %t17, i64 %t37, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t38 = load ptr, ptr %t17 - %t39 = getelementptr inbounds { ptr, i64, i64 }, ptr %t38, i64 %t36 - store { ptr, i64, i64 } %t35, ptr %t39 - store i64 %t37, ptr %t18 + store { ptr, i64, i64 } %t23, ptr %a27 + call void @finch_str_drop(ptr %a27) + %t28 = load { ptr, i64, i64 }, ptr %a24 + %t29 = load ptr, ptr %a1 + %t30 = call i64 @finch.gen.dbgLocation(ptr %t29) + call void @finch_str_from_int(ptr %a31, i64 %t30) + %t32 = load { ptr, i64, i64 }, ptr %a31 + store { ptr, i64, i64 } %t28, ptr %a34 + store { ptr, i64, i64 } %t32, ptr %a35 + call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) + store { ptr, i64, i64 } %t28, ptr %a36 + call void @finch_str_drop(ptr %a36) + store { ptr, i64, i64 } %t32, ptr %a37 + call void @finch_str_drop(ptr %a37) + %t38 = load { ptr, i64, i64 }, ptr %a33 + %t39 = load i64, ptr %t18 + %t40 = add i64 %t39, 1 + call void @finch_arr_reserve(ptr %t17, i64 %t40, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t41 = load ptr, ptr %t17 + %t42 = getelementptr inbounds { ptr, i64, i64 }, ptr %t41, i64 %t39 + store { ptr, i64, i64 } %t38, ptr %t42 + store i64 %t40, ptr %t18 ret void -endif2032: - %t40 = load ptr, ptr %a1 - %t41 = icmp eq ptr %t40, null - br i1 %t41, label %panic2035, label %ok2036 -panic2035: - call void @finch_panic(ptr @.str.1218, i64 301, ptr @.str.1219) +endif2096: + %t43 = load ptr, ptr %a1 + %t44 = icmp eq ptr %t43, null + br i1 %t44, label %panic2099, label %ok2100 +panic2099: + call void @finch_panic(ptr @.str.1227, i64 321, ptr @.str.1228) unreachable -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.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 - %t49 = load i64, ptr %t43 - %t50 = add i64 %t49, 1 - call void @finch_arr_reserve(ptr %t42, i64 %t50, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t51 = load ptr, ptr %t42 - %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %t51, i64 %t49 - store { ptr, i64, i64 } %t48, ptr %t52 - store i64 %t50, ptr %t43 +ok2100: + %t45 = getelementptr inbounds %S.gen.Gen, ptr %t43, i32 0, i32 4 + %t46 = getelementptr inbounds { ptr, i64, i64 }, ptr %t45, i32 0, i32 1 + %t47 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } { ptr @.str.1229, i64 2, 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 + %t52 = load i64, ptr %t46 + %t53 = add i64 %t52, 1 + call void @finch_arr_reserve(ptr %t45, i64 %t53, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t54 = load ptr, ptr %t45 + %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %t54, i64 %t52 + store { ptr, i64, i64 } %t51, ptr %t55 + store i64 %t53, ptr %t46 ret void } @@ -21243,34 +23977,37 @@ entry: %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 %p0, ptr %a1 %t2 = load ptr, ptr %a1 %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic2037, label %ok2038 -panic2037: - call void @finch_panic(ptr @.str.1221, i64 305, ptr @.str.1222) + br i1 %t3, label %panic2101, label %ok2102 +panic2101: + call void @finch_panic(ptr @.str.1230, i64 325, ptr @.str.1231) unreachable -ok2038: +ok2102: %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 %panic2039, label %ok2040 -panic2039: - call void @finch_panic(ptr @.str.1224, i64 306, ptr @.str.1225) + br i1 %t8, label %panic2103, label %ok2104 +panic2103: + call void @finch_panic(ptr @.str.1233, i64 326, ptr @.str.1234) unreachable -ok2040: +ok2104: %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.1223, i64 2, i64 0 }, ptr %a14 + store { ptr, i64, i64 } { ptr @.str.1232, 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 - ret { ptr, i64, i64 } %t16 + store { ptr, i64, i64 } %t12, ptr %a16 + call void @finch_str_drop(ptr %a16) + %t17 = load { ptr, i64, i64 }, ptr %a13 + ret { ptr, i64, i64 } %t17 } define internal { ptr, i64, i64 } @finch.gen.newLabel(ptr %p0, { ptr, i64, i64 } %p1) { @@ -21281,15 +24018,16 @@ entry: %a15 = 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 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 %panic2041, label %ok2042 -panic2041: - call void @finch_panic(ptr @.str.1226, i64 310, ptr @.str.1227) + br i1 %t4, label %panic2105, label %ok2106 +panic2105: + call void @finch_panic(ptr @.str.1235, i64 330, ptr @.str.1236) unreachable -ok2042: +ok2106: %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 7 %t6 = load i64, ptr %t5 %t7 = add i64 %t6, 1 @@ -21297,11 +24035,11 @@ ok2042: %t8 = load { ptr, i64, i64 }, ptr %a2 %t9 = load ptr, ptr %a1 %t10 = icmp eq ptr %t9, null - br i1 %t10, label %panic2043, label %ok2044 -panic2043: - call void @finch_panic(ptr @.str.1228, i64 311, ptr @.str.1229) + br i1 %t10, label %panic2107, label %ok2108 +panic2107: + call void @finch_panic(ptr @.str.1237, i64 331, ptr @.str.1238) unreachable -ok2044: +ok2108: %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) @@ -21309,8 +24047,10 @@ ok2044: store { ptr, i64, i64 } %t8, 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 - ret { ptr, i64, i64 } %t18 + store { ptr, i64, i64 } %t14, ptr %a18 + call void @finch_str_drop(ptr %a18) + %t19 = load { ptr, i64, i64 }, ptr %a15 + ret { ptr, i64, i64 } %t19 } define internal void @finch.gen.label(ptr %p0, { ptr, i64, i64 } %p1) { @@ -21324,16 +24064,16 @@ entry: store { ptr, i64, i64 } %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic2045, label %ok2046 -panic2045: - call void @finch_panic(ptr @.str.1230, i64 315, ptr @.str.1231) + br i1 %t4, label %panic2109, label %ok2110 +panic2109: + call void @finch_panic(ptr @.str.1239, i64 335, ptr @.str.1240) unreachable -ok2046: +ok2110: %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.1232, i64 1, i64 0 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.1241, 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 @@ -21345,11 +24085,11 @@ ok2046: store i64 %t13, ptr %t6 %t16 = load ptr, ptr %a1 %t17 = icmp eq ptr %t16, null - br i1 %t17, label %panic2047, label %ok2048 -panic2047: - call void @finch_panic(ptr @.str.1233, i64 316, ptr @.str.1234) + br i1 %t17, label %panic2111, label %ok2112 +panic2111: + call void @finch_panic(ptr @.str.1242, i64 336, ptr @.str.1243) unreachable -ok2048: +ok2112: %t18 = getelementptr inbounds %S.gen.Gen, ptr %t16, i32 0, i32 9 store i1 false, ptr %t18 ret void @@ -21362,38 +24102,41 @@ entry: %a10 = alloca { ptr, i64, i64 }, align 16 %a11 = alloca { ptr, i64, i64 }, align 16 %a12 = alloca { ptr, i64, i64 }, align 16 + %a14 = 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 %panic2049, label %ok2050 -panic2049: - call void @finch_panic(ptr @.str.1235, i64 320, ptr @.str.1236) + br i1 %t4, label %panic2113, label %ok2114 +panic2113: + call void @finch_panic(ptr @.str.1244, i64 340, ptr @.str.1245) unreachable -ok2050: +ok2114: %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 %then2051, label %endif2053 -then2051: + br i1 %t7, label %then2115, label %endif2117 +then2115: %t8 = load ptr, ptr %a1 %t9 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1237, i64 10, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.1246, 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 %panic2054, label %ok2055 -panic2054: - call void @finch_panic(ptr @.str.1238, i64 322, ptr @.str.1239) + store { ptr, i64, i64 } %t13, ptr %a14 + call void @finch_str_drop(ptr %a14) + %t15 = load ptr, ptr %a1 + %t16 = icmp eq ptr %t15, null + br i1 %t16, label %panic2118, label %ok2119 +panic2118: + call void @finch_panic(ptr @.str.1247, i64 342, ptr @.str.1248) unreachable -ok2055: - %t16 = getelementptr inbounds %S.gen.Gen, ptr %t14, i32 0, i32 9 - store i1 true, ptr %t16 - br label %endif2053 -endif2053: +ok2119: + %t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 9 + store i1 true, ptr %t17 + br label %endif2117 +endif2117: ret void } @@ -21409,53 +24152,68 @@ entry: %a11 = alloca { ptr, i64, i64 }, align 16 %a12 = alloca { ptr, i64, i64 }, align 16 %a13 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 + %a14 = 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 %a20 = 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 + %a24 = alloca { ptr, i64, i64 }, align 16 %a25 = 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 + %a30 = alloca { ptr, i64, i64 }, align 16 + %a31 = alloca { ptr, i64, i64 }, align 16 + %a33 = 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 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.1240, i64 6, i64 0 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.1249, 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.1241, i64 9, i64 0 }, ptr %a13 + store { ptr, i64, i64 } { ptr @.str.1250, 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 - store { ptr, i64, i64 } %t14, ptr %a17 + store { ptr, i64, i64 } %t10, ptr %a14 + call void @finch_str_drop(ptr %a14) + %t15 = load { ptr, i64, i64 }, ptr %a11 + %t16 = load { ptr, i64, i64 }, ptr %a3 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.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 - store { ptr, i64, i64 } %t23, 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 - 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 %panic2056, label %ok2057 -panic2056: - call void @finch_panic(ptr @.str.1243, i64 328, ptr @.str.1244) + store { ptr, i64, i64 } %t16, ptr %a19 + call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) + store { ptr, i64, i64 } %t15, ptr %a20 + call void @finch_str_drop(ptr %a20) + %t21 = load { ptr, i64, i64 }, ptr %a17 + store { ptr, i64, i64 } %t21, ptr %a23 + store { ptr, i64, i64 } { ptr @.str.1251, i64 9, i64 0 }, ptr %a24 + call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) + store { ptr, i64, i64 } %t21, ptr %a25 + call void @finch_str_drop(ptr %a25) + %t26 = load { ptr, i64, i64 }, ptr %a22 + %t27 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t26, ptr %a29 + store { ptr, i64, i64 } %t27, ptr %a30 + call void @finch_str_concat(ptr %a28, ptr %a29, ptr %a30) + store { ptr, i64, i64 } %t26, ptr %a31 + call void @finch_str_drop(ptr %a31) + %t32 = load { ptr, i64, i64 }, ptr %a28 + call void @finch.gen.emit(ptr %t5, { ptr, i64, i64 } %t32) + store { ptr, i64, i64 } %t32, ptr %a33 + call void @finch_str_drop(ptr %a33) + %t34 = load ptr, ptr %a1 + %t35 = icmp eq ptr %t34, null + br i1 %t35, label %panic2120, label %ok2121 +panic2120: + call void @finch_panic(ptr @.str.1252, i64 348, ptr @.str.1253) unreachable -ok2057: - %t31 = getelementptr inbounds %S.gen.Gen, ptr %t29, i32 0, i32 9 - store i1 true, ptr %t31 +ok2121: + %t36 = getelementptr inbounds %S.gen.Gen, ptr %t34, i32 0, i32 9 + store i1 true, ptr %t36 ret void } @@ -21467,89 +24225,96 @@ entry: %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 - %a24 = alloca { ptr, i64, i64 }, align 16 + %a17 = alloca { ptr, i64, i64 }, align 16 + %a19 = 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 + %a27 = alloca { ptr, i64, i64 }, align 16 %a29 = alloca { ptr, i64, i64 }, align 16 %a30 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 + %a31 = alloca { ptr, i64, i64 }, align 16 + %a32 = 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 %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = 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 + %a43 = 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 %panic2058, label %ok2059 -panic2058: - call void @finch_panic(ptr @.str.1245, i64 332, ptr @.str.1246) + br i1 %t4, label %panic2122, label %ok2123 +panic2122: + call void @finch_panic(ptr @.str.1254, i64 352, ptr @.str.1255) unreachable -ok2059: +ok2123: %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 %panic2060, label %ok2061 -panic2060: - call void @finch_panic(ptr @.str.1248, i64 333, ptr @.str.1249) + br i1 %t9, label %panic2124, label %ok2125 +panic2124: + call void @finch_panic(ptr @.str.1257, i64 353, ptr @.str.1258) unreachable -ok2061: +ok2125: %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.1247, i64 2, i64 0 }, ptr %a15 + store { ptr, i64, i64 } { ptr @.str.1256, 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 %panic2062, label %ok2063 -panic2062: - call void @finch_panic(ptr @.str.1250, i64 334, ptr @.str.1251) + store { ptr, i64, i64 } %t13, ptr %a17 + call void @finch_str_drop(ptr %a17) + %t18 = load { ptr, i64, i64 }, ptr %a14 + store { ptr, i64, i64 } %t18, ptr %a19 + %t20 = load ptr, ptr %a1 + %t21 = icmp eq ptr %t20, null + br i1 %t21, label %panic2126, label %ok2127 +panic2126: + call void @finch_panic(ptr @.str.1259, i64 354, ptr @.str.1260) unreachable -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.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.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 - store { ptr, i64, i64 } %t31, ptr %a34 - store { ptr, i64, i64 } %t32, 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 %a38 - 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 - %t42 = add i64 %t41, 1 - call void @finch_arr_reserve(ptr %t21, i64 %t42, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t43 = load ptr, ptr %t21 - %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t43, i64 %t41 - store { ptr, i64, i64 } %t40, ptr %t44 - store i64 %t42, ptr %t22 - %t45 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t45, ptr %a46 - call void @finch_str_copy(ptr %a47, ptr %a46) - %t48 = load { ptr, i64, i64 }, ptr %a47 - ret { ptr, i64, i64 } %t48 +ok2127: + %t22 = getelementptr inbounds %S.gen.Gen, ptr %t20, i32 0, i32 5 + %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t22, i32 0, i32 1 + %t24 = load { ptr, i64, i64 }, ptr %a19 + store { ptr, i64, i64 } { ptr @.str.1261, i64 2, 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.1262, i64 10, i64 0 }, ptr %a31 + call void @finch_str_concat(ptr %a29, ptr %a30, ptr %a31) + store { ptr, i64, i64 } %t28, ptr %a32 + call void @finch_str_drop(ptr %a32) + %t33 = load { ptr, i64, i64 }, ptr %a29 + %t34 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t33, ptr %a36 + store { ptr, i64, i64 } %t34, ptr %a37 + call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) + store { ptr, i64, i64 } %t33, ptr %a38 + call void @finch_str_drop(ptr %a38) + %t39 = load { ptr, i64, i64 }, ptr %a35 + store { ptr, i64, i64 } %t39, ptr %a41 + store { ptr, i64, i64 } { ptr @.str.1263, i64 10, i64 0 }, ptr %a42 + call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) + store { ptr, i64, i64 } %t39, ptr %a43 + call void @finch_str_drop(ptr %a43) + %t44 = load { ptr, i64, i64 }, ptr %a40 + %t45 = load i64, ptr %t23 + %t46 = add i64 %t45, 1 + call void @finch_arr_reserve(ptr %t22, i64 %t46, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t47 = load ptr, ptr %t22 + %t48 = getelementptr inbounds { ptr, i64, i64 }, ptr %t47, i64 %t45 + store { ptr, i64, i64 } %t44, ptr %t48 + store i64 %t46, ptr %t23 + %t49 = load { ptr, i64, i64 }, ptr %a19 + ret { ptr, i64, i64 } %t49 } define internal { ptr, i64, i64 } @finch.gen.load(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2) { @@ -21564,14 +24329,16 @@ entry: %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 + %a17 = alloca { ptr, i64, i64 }, align 16 %a19 = alloca { ptr, i64, i64 }, align 16 %a20 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 + %a21 = alloca { ptr, i64, i64 }, align 16 + %a22 = alloca { ptr, i64, i64 }, align 16 %a25 = 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 + %a30 = 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 @@ -21581,29 +24348,34 @@ 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.1255, i64 8, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.1264, 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 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 %a19 - 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 - store { ptr, i64, i64 } %t21, 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 - call void @finch.gen.emit(ptr %t7, { ptr, i64, i64 } %t26) - %t27 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t27, ptr %a28 - call void @finch_str_copy(ptr %a29, ptr %a28) - %t30 = load { ptr, i64, i64 }, ptr %a29 - ret { ptr, i64, i64 } %t30 + store { ptr, i64, i64 } %t12, ptr %a17 + call void @finch_str_drop(ptr %a17) + %t18 = load { ptr, i64, i64 }, ptr %a14 + store { ptr, i64, i64 } %t18, ptr %a20 + store { ptr, i64, i64 } { ptr @.str.1265, i64 6, i64 0 }, ptr %a21 + call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) + store { ptr, i64, i64 } %t18, ptr %a22 + call void @finch_str_drop(ptr %a22) + %t23 = load { ptr, i64, i64 }, ptr %a19 + %t24 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t23, ptr %a26 + store { ptr, i64, i64 } %t24, ptr %a27 + call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) + store { ptr, i64, i64 } %t23, ptr %a28 + call void @finch_str_drop(ptr %a28) + %t29 = load { ptr, i64, i64 }, ptr %a25 + call void @finch.gen.emit(ptr %t7, { ptr, i64, i64 } %t29) + store { ptr, i64, i64 } %t29, ptr %a30 + call void @finch_str_drop(ptr %a30) + %t31 = load { ptr, i64, i64 }, ptr %a6 + ret { ptr, i64, i64 } %t31 } define internal void @finch.gen.store(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, { ptr, i64, i64 } %p3) { @@ -21618,44 +24390,59 @@ entry: %a11 = alloca { ptr, i64, i64 }, align 16 %a12 = alloca { ptr, i64, i64 }, align 16 %a13 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 + %a14 = 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 %a20 = 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 + %a24 = alloca { ptr, i64, i64 }, align 16 %a25 = 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 + %a30 = alloca { ptr, i64, i64 }, align 16 + %a31 = alloca { ptr, i64, i64 }, align 16 + %a33 = 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 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.1257, i64 6, i64 0 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.1266, 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.1258, i64 1, i64 0 }, ptr %a13 + store { ptr, i64, i64 } { ptr @.str.1267, 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 - store { ptr, i64, i64 } %t14, ptr %a17 + store { ptr, i64, i64 } %t10, ptr %a14 + call void @finch_str_drop(ptr %a14) + %t15 = load { ptr, i64, i64 }, ptr %a11 + %t16 = load { ptr, i64, i64 }, ptr %a3 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.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 - store { ptr, i64, i64 } %t23, 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 - call void @finch.gen.emit(ptr %t5, { ptr, i64, i64 } %t28) + store { ptr, i64, i64 } %t16, ptr %a19 + call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) + store { ptr, i64, i64 } %t15, ptr %a20 + call void @finch_str_drop(ptr %a20) + %t21 = load { ptr, i64, i64 }, ptr %a17 + store { ptr, i64, i64 } %t21, ptr %a23 + store { ptr, i64, i64 } { ptr @.str.1268, i64 6, i64 0 }, ptr %a24 + call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) + store { ptr, i64, i64 } %t21, ptr %a25 + call void @finch_str_drop(ptr %a25) + %t26 = load { ptr, i64, i64 }, ptr %a22 + %t27 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t26, ptr %a29 + store { ptr, i64, i64 } %t27, ptr %a30 + call void @finch_str_concat(ptr %a28, ptr %a29, ptr %a30) + store { ptr, i64, i64 } %t26, ptr %a31 + call void @finch_str_drop(ptr %a31) + %t32 = load { ptr, i64, i64 }, ptr %a28 + call void @finch.gen.emit(ptr %t5, { ptr, i64, i64 } %t32) + store { ptr, i64, i64 } %t32, ptr %a33 + call void @finch_str_drop(ptr %a33) ret void } @@ -21664,8 +24451,8 @@ entry: %a1 = alloca ptr, align 16 %a2 = alloca %S.gen.Val, align 16 %a9 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca { ptr, i64, i64 }, align 16 %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store %S.gen.Val %p1, ptr %a2 %t3 = load ptr, ptr %a1 @@ -21674,21 +24461,22 @@ entry: %t6 = load %S.ast.Type, ptr %t5 %t7 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t4, %S.ast.Type %t6) %t8 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t3, { ptr, i64, i64 } %t7) - store { ptr, i64, i64 } %t8, ptr %a9 - %t10 = load ptr, ptr %a1 + store { ptr, i64, i64 } %t7, ptr %a9 + call void @finch_str_drop(ptr %a9) + store { ptr, i64, i64 } %t8, ptr %a10 %t11 = load ptr, ptr %a1 - %t12 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t13 = load %S.ast.Type, ptr %t12 - %t14 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t11, %S.ast.Type %t13) - %t15 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t16 = load { ptr, i64, i64 }, ptr %t15 - %t17 = load { ptr, i64, i64 }, ptr %a9 - call void @finch.gen.store(ptr %t10, { ptr, i64, i64 } %t14, { ptr, i64, i64 } %t16, { ptr, i64, i64 } %t17) - %t18 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t18, ptr %a19 - call void @finch_str_copy(ptr %a20, ptr %a19) - %t21 = load { ptr, i64, i64 }, ptr %a20 - ret { ptr, i64, i64 } %t21 + %t12 = load ptr, ptr %a1 + %t13 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 + %t14 = load %S.ast.Type, ptr %t13 + %t15 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t12, %S.ast.Type %t14) + %t16 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 + %t17 = load { ptr, i64, i64 }, ptr %t16 + %t18 = load { ptr, i64, i64 }, ptr %a10 + call void @finch.gen.store(ptr %t11, { ptr, i64, i64 } %t15, { ptr, i64, i64 } %t17, { ptr, i64, i64 } %t18) + store { ptr, i64, i64 } %t15, ptr %a19 + call void @finch_str_drop(ptr %a19) + %t20 = load { ptr, i64, i64 }, ptr %a10 + ret { ptr, i64, i64 } %t20 } define internal { ptr, i64, i64 } @finch.gen.op(ptr %p0, { ptr, i64, i64 } %p1) { @@ -21702,8 +24490,8 @@ entry: %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 %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store { ptr, i64, i64 } %p1, ptr %a2 %t3 = load ptr, ptr %a1 @@ -21712,20 +24500,21 @@ 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.1260, i64 3, i64 0 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.1269, 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 store { ptr, i64, i64 } %t11, 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 - call void @finch.gen.emit(ptr %t6, { ptr, i64, i64 } %t16) - %t17 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } %t11, ptr %a16 + call void @finch_str_drop(ptr %a16) + %t17 = load { ptr, i64, i64 }, ptr %a13 + call void @finch.gen.emit(ptr %t6, { ptr, i64, i64 } %t17) store { ptr, i64, i64 } %t17, ptr %a18 - call void @finch_str_copy(ptr %a19, ptr %a18) - %t20 = load { ptr, i64, i64 }, ptr %a19 - ret { ptr, i64, i64 } %t20 + call void @finch_str_drop(ptr %a18) + %t19 = load { ptr, i64, i64 }, ptr %a5 + ret { ptr, i64, i64 } %t19 } define internal i1 @finch.gen.has({ ptr, i64, i64 } %p0, { ptr, i64, i64 } %p1) { @@ -21744,27 +24533,27 @@ entry: %t6 = load i64, ptr %t3 %t7 = load ptr, ptr %a1 store i64 0, ptr %a8 - br label %find.cond2064 -find.cond2064: + br label %find.cond2128 +find.cond2128: %t9 = load i64, ptr %a8 %t10 = icmp slt i64 %t9, %t6 - br i1 %t10, label %find.body2065, label %find.end2068 -find.body2065: + br i1 %t10, label %find.body2129, label %find.end2132 +find.body2129: %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.hit2066, label %find.next2067 -find.hit2066: + br i1 %t16, label %find.hit2130, label %find.next2131 +find.hit2130: store i64 %t9, ptr %a5 - br label %find.end2068 -find.next2067: + br label %find.end2132 +find.next2131: %t17 = add i64 %t9, 1 store i64 %t17, ptr %a8 - br label %find.cond2064 -find.end2068: + br label %find.cond2128 +find.end2132: %t18 = load i64, ptr %a5 %t19 = icmp sge i64 %t18, 0 ret i1 %t19 @@ -21802,51 +24591,52 @@ 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.1261, i64 3, i64 0 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.1270, 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.from2069 -logic.from2069: - br i1 %t12, label %logic.end2071, label %logic.rhs2070 -logic.rhs2070: + br label %logic.from2133 +logic.from2133: + br i1 %t12, label %logic.end2135, label %logic.rhs2134 +logic.rhs2134: %t13 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t13, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.1262, i64 2, i64 0 }, ptr %a15 + store { ptr, i64, i64 } { ptr @.str.1271, 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.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: + br label %logic.rend2136 +logic.rend2136: + br label %logic.end2135 +logic.end2135: + %t18 = phi i1 [ true, %logic.from2133 ], [ %t17, %logic.rend2136 ] + br label %logic.from2137 +logic.from2137: + br i1 %t18, label %logic.end2139, label %logic.rhs2138 +logic.rhs2138: %t19 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t19, ptr %a20 - store { ptr, i64, i64 } { ptr @.str.1263, i64 3, i64 0 }, ptr %a21 + store { ptr, i64, i64 } { ptr @.str.1272, 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.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: + br label %logic.rend2140 +logic.rend2140: + br label %logic.end2139 +logic.end2139: + %t24 = phi i1 [ true, %logic.from2137 ], [ %t23, %logic.rend2140 ] + br label %logic.from2141 +logic.from2141: + br i1 %t24, label %logic.end2143, label %logic.rhs2142 +logic.rhs2142: %t25 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t25, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.1264, i64 3, i64 0 }, ptr %a27 + store { ptr, i64, i64 } { ptr @.str.1273, 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.rend2080 -logic.rend2080: - br label %logic.end2079 -logic.end2079: - %t30 = phi i1 [ true, %logic.from2077 ], [ %t29, %logic.rend2080 ] + br label %logic.rend2144 +logic.rend2144: + br label %logic.end2143 +logic.end2143: + %t30 = phi i1 [ true, %logic.from2141 ], [ %t29, %logic.rend2144 ] + call void @finch_str_drop(ptr %a7) ret i1 %t30 } @@ -21873,51 +24663,52 @@ 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.1265, i64 2, i64 0 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.1274, 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.from2081 -logic.from2081: - br i1 %t12, label %logic.end2083, label %logic.rhs2082 -logic.rhs2082: + br label %logic.from2145 +logic.from2145: + br i1 %t12, label %logic.end2147, label %logic.rhs2146 +logic.rhs2146: %t13 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t13, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.1266, i64 3, i64 0 }, ptr %a15 + store { ptr, i64, i64 } { ptr @.str.1275, 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.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: + br label %logic.rend2148 +logic.rend2148: + br label %logic.end2147 +logic.end2147: + %t18 = phi i1 [ true, %logic.from2145 ], [ %t17, %logic.rend2148 ] + br label %logic.from2149 +logic.from2149: + br i1 %t18, label %logic.end2151, label %logic.rhs2150 +logic.rhs2150: %t19 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t19, ptr %a20 - store { ptr, i64, i64 } { ptr @.str.1267, i64 3, i64 0 }, ptr %a21 + store { ptr, i64, i64 } { ptr @.str.1276, 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.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: + br label %logic.rend2152 +logic.rend2152: + br label %logic.end2151 +logic.end2151: + %t24 = phi i1 [ true, %logic.from2149 ], [ %t23, %logic.rend2152 ] + br label %logic.from2153 +logic.from2153: + br i1 %t24, label %logic.end2155, label %logic.rhs2154 +logic.rhs2154: %t25 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t25, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.1268, i64 3, i64 0 }, ptr %a27 + store { ptr, i64, i64 } { ptr @.str.1277, 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.rend2092 -logic.rend2092: - br label %logic.end2091 -logic.end2091: - %t30 = phi i1 [ true, %logic.from2089 ], [ %t29, %logic.rend2092 ] + br label %logic.rend2156 +logic.rend2156: + br label %logic.end2155 +logic.end2155: + %t30 = phi i1 [ true, %logic.from2153 ], [ %t29, %logic.rend2156 ] + call void @finch_str_drop(ptr %a7) ret i1 %t30 } @@ -21927,17 +24718,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.from2093 -logic.from2093: - br i1 %t3, label %logic.end2095, label %logic.rhs2094 -logic.rhs2094: + br label %logic.from2157 +logic.from2157: + br i1 %t3, label %logic.end2159, label %logic.rhs2158 +logic.rhs2158: %t4 = load %S.ast.Type, ptr %a1 %t5 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t4) - br label %logic.rend2096 -logic.rend2096: - br label %logic.end2095 -logic.end2095: - %t6 = phi i1 [ true, %logic.from2093 ], [ %t5, %logic.rend2096 ] + br label %logic.rend2160 +logic.rend2160: + br label %logic.end2159 +logic.end2159: + %t6 = phi i1 [ true, %logic.from2157 ], [ %t5, %logic.rend2160 ] ret i1 %t6 } @@ -21952,24 +24743,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.1269, i64 5, i64 0 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.1278, 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.from2097 -logic.from2097: - br i1 %t7, label %logic.end2099, label %logic.rhs2098 -logic.rhs2098: + br label %logic.from2161 +logic.from2161: + br i1 %t7, label %logic.end2163, label %logic.rhs2162 +logic.rhs2162: %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.1270, i64 3, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.1279, 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.rend2100 -logic.rend2100: - br label %logic.end2099 -logic.end2099: - %t14 = phi i1 [ true, %logic.from2097 ], [ %t13, %logic.rend2100 ] + br label %logic.rend2164 +logic.rend2164: + br label %logic.end2163 +logic.end2163: + %t14 = phi i1 [ true, %logic.from2161 ], [ %t13, %logic.rend2164 ] ret i1 %t14 } @@ -21979,17 +24770,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.from2101 -logic.from2101: - br i1 %t3, label %logic.end2103, label %logic.rhs2102 -logic.rhs2102: + br label %logic.from2165 +logic.from2165: + br i1 %t3, label %logic.end2167, label %logic.rhs2166 +logic.rhs2166: %t4 = load %S.ast.Type, ptr %a1 %t5 = call i1 @finch.gen.isFloat(%S.ast.Type %t4) - br label %logic.rend2104 -logic.rend2104: - br label %logic.end2103 -logic.end2103: - %t6 = phi i1 [ true, %logic.from2101 ], [ %t5, %logic.rend2104 ] + br label %logic.rend2168 +logic.rend2168: + br label %logic.end2167 +logic.end2167: + %t6 = phi i1 [ true, %logic.from2165 ], [ %t5, %logic.rend2168 ] ret i1 %t6 } @@ -22026,110 +24817,115 @@ 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.1271, i64 4, i64 0 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.1280, 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 %then2105, label %endif2107 -then2105: + br i1 %t12, label %then2169, label %endif2171 +then2169: + call void @finch_str_drop(ptr %a7) ret i64 1 -endif2107: +endif2171: %t13 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t13, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.1272, i64 4, i64 0 }, ptr %a15 + store { ptr, i64, i64 } { ptr @.str.1281, 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.from2108 -logic.from2108: - br i1 %t17, label %logic.end2110, label %logic.rhs2109 -logic.rhs2109: + br label %logic.from2172 +logic.from2172: + br i1 %t17, label %logic.end2174, label %logic.rhs2173 +logic.rhs2173: %t18 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t18, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.1273, i64 2, i64 0 }, ptr %a20 + store { ptr, i64, i64 } { ptr @.str.1282, 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.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: + br label %logic.rend2175 +logic.rend2175: + br label %logic.end2174 +logic.end2174: + %t23 = phi i1 [ true, %logic.from2172 ], [ %t22, %logic.rend2175 ] + br label %logic.from2176 +logic.from2176: + br i1 %t23, label %logic.end2178, label %logic.rhs2177 +logic.rhs2177: %t24 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t24, ptr %a25 - store { ptr, i64, i64 } { ptr @.str.1274, i64 2, i64 0 }, ptr %a26 + store { ptr, i64, i64 } { ptr @.str.1283, 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.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: + br label %logic.rend2179 +logic.rend2179: + br label %logic.end2178 +logic.end2178: + %t29 = phi i1 [ true, %logic.from2176 ], [ %t28, %logic.rend2179 ] + br i1 %t29, label %then2180, label %endif2182 +then2180: + call void @finch_str_drop(ptr %a7) ret i64 8 -endif2118: +endif2182: %t30 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t30, ptr %a31 - store { ptr, i64, i64 } { ptr @.str.1275, i64 3, i64 0 }, ptr %a32 + store { ptr, i64, i64 } { ptr @.str.1284, 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.from2119 -logic.from2119: - br i1 %t34, label %logic.end2121, label %logic.rhs2120 -logic.rhs2120: + br label %logic.from2183 +logic.from2183: + br i1 %t34, label %logic.end2185, label %logic.rhs2184 +logic.rhs2184: %t35 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t35, ptr %a36 - store { ptr, i64, i64 } { ptr @.str.1276, i64 3, i64 0 }, ptr %a37 + store { ptr, i64, i64 } { ptr @.str.1285, 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.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: + br label %logic.rend2186 +logic.rend2186: + br label %logic.end2185 +logic.end2185: + %t40 = phi i1 [ true, %logic.from2183 ], [ %t39, %logic.rend2186 ] + br i1 %t40, label %then2187, label %endif2189 +then2187: + call void @finch_str_drop(ptr %a7) ret i64 16 -endif2125: +endif2189: %t41 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t41, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.1277, i64 3, i64 0 }, ptr %a43 + store { ptr, i64, i64 } { ptr @.str.1286, 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.from2126 -logic.from2126: - br i1 %t45, label %logic.end2128, label %logic.rhs2127 -logic.rhs2127: + br label %logic.from2190 +logic.from2190: + br i1 %t45, label %logic.end2192, label %logic.rhs2191 +logic.rhs2191: %t46 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t46, ptr %a47 - store { ptr, i64, i64 } { ptr @.str.1278, i64 3, i64 0 }, ptr %a48 + store { ptr, i64, i64 } { ptr @.str.1287, 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.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: + br label %logic.rend2193 +logic.rend2193: + br label %logic.end2192 +logic.end2192: + %t51 = phi i1 [ true, %logic.from2190 ], [ %t50, %logic.rend2193 ] + br label %logic.from2194 +logic.from2194: + br i1 %t51, label %logic.end2196, label %logic.rhs2195 +logic.rhs2195: %t52 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t52, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.1279, i64 3, i64 0 }, ptr %a54 + store { ptr, i64, i64 } { ptr @.str.1288, 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.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: + br label %logic.rend2197 +logic.rend2197: + br label %logic.end2196 +logic.end2196: + %t57 = phi i1 [ true, %logic.from2194 ], [ %t56, %logic.rend2197 ] + br i1 %t57, label %then2198, label %endif2200 +then2198: + call void @finch_str_drop(ptr %a7) ret i64 32 -endif2136: +endif2200: + call void @finch_str_drop(ptr %a7) ret i64 64 } @@ -22142,39 +24938,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.from2137 -logic.from2137: - br i1 %t5, label %logic.end2139, label %logic.rhs2138 -logic.rhs2138: + br label %logic.from2201 +logic.from2201: + br i1 %t5, label %logic.end2203, label %logic.rhs2202 +logic.rhs2202: %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.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: + br label %logic.rend2204 +logic.rend2204: + br label %logic.end2203 +logic.end2203: + %t9 = phi i1 [ true, %logic.from2201 ], [ %t8, %logic.rend2204 ] + br i1 %t9, label %then2205, label %endif2207 +then2205: ret i1 false -endif2143: +endif2207: %t10 = load %S.ast.Type, ptr %a1 %t11 = call i1 @finch.gen.isSigned(%S.ast.Type %t10) - br label %logic.from2144 -logic.from2144: - br i1 %t11, label %logic.rhs2145, label %logic.end2146 -logic.rhs2145: + br label %logic.from2208 +logic.from2208: + br i1 %t11, label %logic.rhs2209, label %logic.end2210 +logic.rhs2209: %t12 = load %S.ast.Type, ptr %a2 %t13 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t12) - 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: + br label %logic.rend2211 +logic.rend2211: + br label %logic.end2210 +logic.end2210: + %t14 = phi i1 [ false, %logic.from2208 ], [ %t13, %logic.rend2211 ] + br i1 %t14, label %then2212, label %endif2214 +then2212: ret i1 false -endif2150: +endif2214: %t15 = load %S.ast.Type, ptr %a2 %t16 = call i64 @finch.gen.bitsOf(%S.ast.Type %t15) %t17 = load %S.ast.Type, ptr %a1 @@ -22198,33 +24994,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 %then2151, label %endif2153 -then2151: + br i1 %t6, label %then2215, label %endif2217 +then2215: ret i1 false -endif2153: +endif2217: %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.1280, i64 427) + %t9 = call i64 @finch_str_to_int(ptr %a8, ptr @.str.1289, i64 447) 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 %then2154, label %endif2156 -then2154: + br i1 %t15, label %then2218, label %endif2220 +then2218: %t16 = load %S.ast.Type, ptr %a3 %t17 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t16) - br i1 %t17, label %then2157, label %endif2159 -then2157: + br i1 %t17, label %then2221, label %endif2223 +then2221: ret i1 false -endif2159: +endif2223: %t18 = load i64, ptr %a13 %t19 = icmp eq i64 %t18, 64 - br i1 %t19, label %then2160, label %endif2162 -then2160: + br i1 %t19, label %then2224, label %endif2226 +then2224: ret i1 true -endif2162: +endif2226: %t20 = load i64, ptr %a10 %t21 = load i64, ptr %a13 %t22 = sub i64 %t21, 1 @@ -22232,28 +25028,28 @@ endif2162: %t24 = sub i64 0, %t23 %t25 = icmp sge i64 %t20, %t24 ret i1 %t25 -endif2156: +endif2220: %t26 = load i64, ptr %a13 %t27 = icmp eq i64 %t26, 64 - br i1 %t27, label %then2163, label %endif2165 -then2163: + br i1 %t27, label %then2227, label %endif2229 +then2227: ret i1 true -endif2165: +endif2229: %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 %then2166, label %endif2168 -then2166: + br i1 %t33, label %then2230, label %endif2232 +then2230: %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 %endif2168 -endif2168: + br label %endif2232 +endif2232: %t38 = load i64, ptr %a10 %t39 = load i64, ptr %a31 %t40 = icmp sle i64 %t38, %t39 @@ -22275,38 +25071,38 @@ entry: store { ptr, i64, i64 } %p2, ptr %a3 %t4 = load ptr, ptr %a1 %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic2169, label %ok2170 -panic2169: - call void @finch_panic(ptr @.str.1281, i64 449, ptr @.str.1282) + br i1 %t5, label %panic2233, label %ok2234 +panic2233: + call void @finch_panic(ptr @.str.1290, i64 469, ptr @.str.1291) unreachable -ok2170: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 15 +ok2234: + %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 16 %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.cond2171 -for.cond2171: + br label %for.cond2235 +for.cond2235: %t10 = load i64, ptr %a9 %t11 = icmp slt i64 %t10, %t8 - br i1 %t11, label %for.body2172, label %for.end2174 -for.body2172: + br i1 %t11, label %for.body2236, label %for.end2238 +for.body2236: %t12 = load ptr, ptr %a1 %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic2175, label %ok2176 -panic2175: - call void @finch_panic(ptr @.str.1283, i64 450, ptr @.str.1284) + br i1 %t13, label %panic2239, label %ok2240 +panic2239: + call void @finch_panic(ptr @.str.1292, i64 470, ptr @.str.1293) unreachable -ok2176: - %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 15 +ok2240: + %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 16 %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 %range2177, label %inrange2178 -range2177: - call void @finch_panic_index(ptr @.str.1285, i64 450, i64 %t15, i64 %t17) + br i1 %t18, label %range2241, label %inrange2242 +range2241: + call void @finch_panic_index(ptr @.str.1294, i64 470, i64 %t15, i64 %t17) unreachable -inrange2178: +inrange2242: %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 @@ -22316,27 +25112,27 @@ inrange2178: 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.from2179 -logic.from2179: - br i1 %t27, label %logic.rhs2180, label %logic.end2181 -logic.rhs2180: + br label %logic.from2243 +logic.from2243: + br i1 %t27, label %logic.rhs2244, label %logic.end2245 +logic.rhs2244: %t28 = load ptr, ptr %a1 %t29 = icmp eq ptr %t28, null - br i1 %t29, label %panic2182, label %ok2183 -panic2182: - call void @finch_panic(ptr @.str.1286, i64 450, ptr @.str.1287) + br i1 %t29, label %panic2246, label %ok2247 +panic2246: + call void @finch_panic(ptr @.str.1295, i64 470, ptr @.str.1296) unreachable -ok2183: - %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 15 +ok2247: + %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 16 %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 %range2184, label %inrange2185 -range2184: - call void @finch_panic_index(ptr @.str.1288, i64 450, i64 %t31, i64 %t33) + br i1 %t34, label %range2248, label %inrange2249 +range2248: + call void @finch_panic_index(ptr @.str.1297, i64 470, i64 %t31, i64 %t33) unreachable -inrange2185: +inrange2249: %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 @@ -22346,23 +25142,23 @@ inrange2185: 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.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: + br label %logic.rend2250 +logic.rend2250: + br label %logic.end2245 +logic.end2245: + %t44 = phi i1 [ false, %logic.from2243 ], [ %t43, %logic.rend2250 ] + br i1 %t44, label %then2251, label %endif2253 +then2251: %t45 = load i64, ptr %a9 ret i64 %t45 -endif2189: - br label %for.step2173 -for.step2173: +endif2253: + br label %for.step2237 +for.step2237: %t46 = load i64, ptr %a9 %t47 = add i64 %t46, 1 store i64 %t47, ptr %a9 - br label %for.cond2171 -for.end2174: + br label %for.cond2235 +for.end2238: ret i64 -1 } @@ -22381,38 +25177,38 @@ entry: store { ptr, i64, i64 } %p2, ptr %a3 %t4 = load ptr, ptr %a1 %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic2190, label %ok2191 -panic2190: - call void @finch_panic(ptr @.str.1289, i64 458, ptr @.str.1290) + br i1 %t5, label %panic2254, label %ok2255 +panic2254: + call void @finch_panic(ptr @.str.1298, i64 478, ptr @.str.1299) unreachable -ok2191: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 20 +ok2255: + %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 21 %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.cond2192 -for.cond2192: + br label %for.cond2256 +for.cond2256: %t10 = load i64, ptr %a9 %t11 = icmp slt i64 %t10, %t8 - br i1 %t11, label %for.body2193, label %for.end2195 -for.body2193: + br i1 %t11, label %for.body2257, label %for.end2259 +for.body2257: %t12 = load ptr, ptr %a1 %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic2196, label %ok2197 -panic2196: - call void @finch_panic(ptr @.str.1291, i64 459, ptr @.str.1292) + br i1 %t13, label %panic2260, label %ok2261 +panic2260: + call void @finch_panic(ptr @.str.1300, i64 479, ptr @.str.1301) unreachable -ok2197: - %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 20 +ok2261: + %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 21 %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 %range2198, label %inrange2199 -range2198: - call void @finch_panic_index(ptr @.str.1293, i64 459, i64 %t15, i64 %t17) + br i1 %t18, label %range2262, label %inrange2263 +range2262: + call void @finch_panic_index(ptr @.str.1302, i64 479, i64 %t15, i64 %t17) unreachable -inrange2199: +inrange2263: %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 @@ -22422,27 +25218,27 @@ inrange2199: 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.from2200 -logic.from2200: - br i1 %t27, label %logic.rhs2201, label %logic.end2202 -logic.rhs2201: + br label %logic.from2264 +logic.from2264: + br i1 %t27, label %logic.rhs2265, label %logic.end2266 +logic.rhs2265: %t28 = load ptr, ptr %a1 %t29 = icmp eq ptr %t28, null - br i1 %t29, label %panic2203, label %ok2204 -panic2203: - call void @finch_panic(ptr @.str.1294, i64 459, ptr @.str.1295) + br i1 %t29, label %panic2267, label %ok2268 +panic2267: + call void @finch_panic(ptr @.str.1303, i64 479, ptr @.str.1304) unreachable -ok2204: - %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 20 +ok2268: + %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 21 %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 %range2205, label %inrange2206 -range2205: - call void @finch_panic_index(ptr @.str.1296, i64 459, i64 %t31, i64 %t33) + br i1 %t34, label %range2269, label %inrange2270 +range2269: + call void @finch_panic_index(ptr @.str.1305, i64 479, i64 %t31, i64 %t33) unreachable -inrange2206: +inrange2270: %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 @@ -22452,23 +25248,23 @@ inrange2206: 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.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: + br label %logic.rend2271 +logic.rend2271: + br label %logic.end2266 +logic.end2266: + %t44 = phi i1 [ false, %logic.from2264 ], [ %t43, %logic.rend2271 ] + br i1 %t44, label %then2272, label %endif2274 +then2272: %t45 = load i64, ptr %a9 ret i64 %t45 -endif2210: - br label %for.step2194 -for.step2194: +endif2274: + br label %for.step2258 +for.step2258: %t46 = load i64, ptr %a9 %t47 = add i64 %t46, 1 store i64 %t47, ptr %a9 - br label %for.cond2192 -for.end2195: + br label %for.cond2256 +for.end2259: ret i64 -1 } @@ -22483,38 +25279,38 @@ entry: store { ptr, i64, i64 } %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic2211, label %ok2212 -panic2211: - call void @finch_panic(ptr @.str.1297, i64 467, ptr @.str.1298) + br i1 %t4, label %panic2275, label %ok2276 +panic2275: + call void @finch_panic(ptr @.str.1306, i64 487, ptr @.str.1307) unreachable -ok2212: +ok2276: %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.cond2213 -for.cond2213: + br label %for.cond2277 +for.cond2277: %t9 = load i64, ptr %a8 %t10 = icmp slt i64 %t9, %t7 - br i1 %t10, label %for.body2214, label %for.end2216 -for.body2214: + br i1 %t10, label %for.body2278, label %for.end2280 +for.body2278: %t11 = load ptr, ptr %a1 %t12 = icmp eq ptr %t11, null - br i1 %t12, label %panic2217, label %ok2218 -panic2217: - call void @finch_panic(ptr @.str.1299, i64 468, ptr @.str.1300) + br i1 %t12, label %panic2281, label %ok2282 +panic2281: + call void @finch_panic(ptr @.str.1308, i64 488, ptr @.str.1309) unreachable -ok2218: +ok2282: %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 %range2219, label %inrange2220 -range2219: - call void @finch_panic_index(ptr @.str.1301, i64 468, i64 %t14, i64 %t16) + br i1 %t17, label %range2283, label %inrange2284 +range2283: + call void @finch_panic_index(ptr @.str.1310, i64 488, i64 %t14, i64 %t16) unreachable -inrange2220: +inrange2284: %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 @@ -22524,18 +25320,18 @@ inrange2220: 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 %then2221, label %endif2223 -then2221: + br i1 %t26, label %then2285, label %endif2287 +then2285: %t27 = load i64, ptr %a8 ret i64 %t27 -endif2223: - br label %for.step2215 -for.step2215: +endif2287: + br label %for.step2279 +for.step2279: %t28 = load i64, ptr %a8 %t29 = add i64 %t28, 1 store i64 %t29, ptr %a8 - br label %for.cond2213 -for.end2216: + br label %for.cond2277 +for.end2280: ret i64 -1 } @@ -22551,31 +25347,31 @@ entry: store { ptr, i64, i64 } %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic2224, label %ok2225 -panic2224: - call void @finch_panic(ptr @.str.1302, i64 476, ptr @.str.1303) + br i1 %t4, label %panic2288, label %ok2289 +panic2288: + call void @finch_panic(ptr @.str.1311, i64 496, ptr @.str.1312) unreachable -ok2225: +ok2289: %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 %panic2226, label %ok2227 -panic2226: - call void @finch_panic(ptr @.str.1304, i64 476, ptr @.str.1305) + br i1 %t8, label %panic2290, label %ok2291 +panic2290: + call void @finch_panic(ptr @.str.1313, i64 496, ptr @.str.1314) unreachable -ok2227: - %t9 = getelementptr inbounds %S.gen.Gen, ptr %t7, i32 0, i32 13 +ok2291: + %t9 = getelementptr inbounds %S.gen.Gen, ptr %t7, i32 0, i32 14 %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 %range2228, label %inrange2229 -range2228: - call void @finch_panic_index(ptr @.str.1306, i64 476, i64 %t11, i64 %t13) + br i1 %t14, label %range2292, label %inrange2293 +range2292: + call void @finch_panic_index(ptr @.str.1315, i64 496, i64 %t11, i64 %t13) unreachable -inrange2229: +inrange2293: %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 @@ -22585,27 +25381,27 @@ inrange2229: %t21 = load i64, ptr %t18 %t22 = load ptr, ptr %t17 store i64 0, ptr %a23 - br label %find.cond2230 -find.cond2230: + br label %find.cond2294 +find.cond2294: %t24 = load i64, ptr %a23 %t25 = icmp slt i64 %t24, %t21 - br i1 %t25, label %find.body2231, label %find.end2234 -find.body2231: + br i1 %t25, label %find.body2295, label %find.end2298 +find.body2295: %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.hit2232, label %find.next2233 -find.hit2232: + br i1 %t31, label %find.hit2296, label %find.next2297 +find.hit2296: store i64 %t24, ptr %a20 - br label %find.end2234 -find.next2233: + br label %find.end2298 +find.next2297: %t32 = add i64 %t24, 1 store i64 %t32, ptr %a23 - br label %find.cond2230 -find.end2234: + br label %find.cond2294 +find.end2298: %t33 = load i64, ptr %a20 %t34 = icmp sge i64 %t33, 0 ret i1 %t34 @@ -22618,784 +25414,850 @@ entry: %a3 = alloca %S.ast.Node, align 16 %a6 = alloca { ptr, i64, i64 }, align 16 %a7 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 + %a21 = alloca %S.ast.Type, align 16 %a24 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca %S.ast.Type, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 + %a25 = alloca { ptr, i64, i64 }, align 16 + %a38 = alloca %S.ast.Type, align 16 %a44 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 + %a45 = alloca { ptr, i64, i64 }, align 16 %a51 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 + %a52 = alloca { ptr, i64, i64 }, align 16 %a58 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 + %a59 = alloca { ptr, i64, i64 }, align 16 %a65 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 + %a66 = alloca { ptr, i64, i64 }, align 16 %a74 = alloca { ptr, i64, i64 }, align 16 %a75 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca %S.ast.Type, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca %S.ast.Type, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca %S.ast.Type, align 16 - %a139 = alloca %S.ast.Type, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca %S.ast.Type, align 16 - %a160 = alloca %S.ast.Type, align 16 - %a177 = alloca i64, align 16 - %a180 = alloca i64, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca i64, align 16 - %a205 = alloca i64, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca %S.ast.Type, align 16 - %a223 = alloca %S.ast.Type, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca i64, align 16 - %a239 = alloca %S.ast.Type, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 - %a258 = 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 + %a76 = alloca { ptr, i64, i64 }, align 16 + %a77 = alloca { ptr, i64, i64 }, align 16 + %a79 = alloca { ptr, i64, i64 }, align 16 + %a90 = alloca %S.ast.Type, align 16 + %a93 = alloca { ptr, i64, i64 }, align 16 + %a94 = alloca { ptr, i64, i64 }, align 16 + %a104 = alloca { ptr, i64, i64 }, align 16 + %a105 = alloca { ptr, i64, i64 }, align 16 + %a112 = alloca %S.ast.Type, align 16 + %a132 = alloca { ptr, i64, i64 }, align 16 + %a133 = alloca { ptr, i64, i64 }, align 16 + %a141 = alloca %S.ast.Type, align 16 + %a142 = alloca %S.ast.Type, align 16 + %a155 = alloca %S.ast.Type, align 16 + %a158 = alloca { ptr, i64, i64 }, align 16 + %a159 = alloca { ptr, i64, i64 }, align 16 + %a163 = alloca %S.ast.Type, align 16 + %a164 = alloca %S.ast.Type, align 16 + %a181 = alloca i64, align 16 + %a184 = alloca i64, align 16 + %a189 = alloca { ptr, i64, i64 }, align 16 + %a190 = alloca { ptr, i64, i64 }, align 16 + %a206 = alloca i64, align 16 + %a209 = alloca i64, align 16 + %a214 = alloca { ptr, i64, i64 }, align 16 + %a215 = alloca { ptr, i64, i64 }, align 16 + %a226 = alloca %S.ast.Type, align 16 + %a227 = alloca %S.ast.Type, align 16 + %a233 = alloca { ptr, i64, i64 }, align 16 + %a235 = alloca i64, align 16 + %a243 = alloca %S.ast.Type, align 16 + %a259 = alloca { ptr, i64, i64 }, align 16 + %a260 = alloca { ptr, i64, i64 }, align 16 + %a262 = alloca { ptr, i64, i64 }, align 16 %a276 = alloca { ptr, i64, i64 }, align 16 %a277 = alloca { ptr, i64, i64 }, align 16 %a278 = 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 - %a286 = 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 + %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 + %a295 = alloca { ptr, i64, i64 }, align 16 + %a297 = alloca { ptr, i64, i64 }, align 16 + %a300 = alloca { ptr, i64, i64 }, align 16 + %a301 = alloca { ptr, i64, i64 }, align 16 %a304 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 + %a314 = alloca { ptr, i64, i64 }, align 16 + %a315 = 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 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a338 = 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 + %a334 = alloca { ptr, i64, i64 }, align 16 + %a336 = alloca { ptr, i64, i64 }, align 16 %a340 = 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 - %a358 = alloca { ptr, i64, i64 }, align 16 - %a359 = alloca { ptr, i64, i64 }, align 16 - %a360 = alloca { ptr, i64, i64 }, align 16 - %a364 = alloca { ptr, i64, i64 }, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 + %a341 = alloca { ptr, i64, i64 }, align 16 + %a349 = alloca { ptr, i64, i64 }, align 16 + %a350 = alloca { ptr, i64, i64 }, align 16 + %a352 = 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 - %a369 = alloca { ptr, i64, i64 }, align 16 %a370 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a375 = alloca { ptr, i64, i64 }, align 16 - %a386 = 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 + %a377 = alloca { ptr, i64, i64 }, align 16 + %a378 = alloca { ptr, i64, i64 }, align 16 + %a379 = alloca { ptr, i64, i64 }, align 16 + %a380 = 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 + %a385 = alloca { ptr, i64, i64 }, align 16 %a387 = alloca { ptr, i64, i64 }, align 16 + %a390 = alloca { ptr, i64, i64 }, align 16 %a391 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a415 = 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 - %a427 = alloca { ptr, i64, i64 }, align 16 - %a428 = alloca { ptr, i64, i64 }, align 16 - %a429 = alloca { ptr, i64, i64 }, align 16 - %a434 = alloca { ptr, i64, i64 }, align 16 - %a435 = alloca { ptr, i64, i64 }, align 16 - %a439 = alloca { ptr, i64, i64 }, align 16 - %a440 = alloca { ptr, i64, i64 }, align 16 + %a394 = alloca { ptr, i64, i64 }, align 16 + %a404 = alloca { ptr, i64, i64 }, align 16 + %a405 = alloca { ptr, i64, i64 }, align 16 + %a409 = alloca { ptr, i64, i64 }, align 16 + %a410 = alloca { ptr, i64, i64 }, align 16 + %a432 = alloca { ptr, i64, i64 }, align 16 + %a433 = 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 + %a444 = 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 + %a449 = alloca { ptr, i64, i64 }, align 16 + %a451 = alloca { ptr, i64, i64 }, align 16 + %a455 = alloca { ptr, i64, i64 }, align 16 + %a456 = alloca { ptr, i64, i64 }, align 16 + %a460 = alloca { ptr, i64, i64 }, align 16 + %a461 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store %S.ast.Type %p1, ptr %a2 store %S.ast.Node %p2, ptr %a3 %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.1307, i64 5, i64 0 }, ptr %a7 + store { ptr, i64, i64 } { ptr @.str.1316, 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 %then2235, label %endif2237 -then2235: + br i1 %t9, label %then2299, label %endif2301 +then2299: %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 %range2238, label %inrange2239 -range2238: - call void @finch_panic_index(ptr @.str.1308, i64 481, i64 0, i64 %t13) + br i1 %t14, label %range2302, label %inrange2303 +range2302: + call void @finch_panic_index(ptr @.str.1317, i64 501, i64 0, i64 %t13) unreachable -inrange2239: +inrange2303: %t15 = extractvalue { ptr, i64, i64 } %t12, 0 %t16 = getelementptr inbounds %S.ast.Type, ptr %t15, i64 0 %t17 = load %S.ast.Type, ptr %t16 %t18 = load %S.ast.Node, ptr %a3 %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) + store %S.ast.Type %t19, ptr %a21 + call void @finch.drop.S_ast_Type(ptr %a21) ret %S.ast.Type %t20 -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.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 %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 %range2243, label %inrange2244 -range2243: - call void @finch_panic_index(ptr @.str.1310, i64 484, i64 0, i64 %t30) +endif2301: + %t22 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 + %t23 = load { ptr, i64, i64 }, ptr %t22 + store { ptr, i64, i64 } %t23, ptr %a24 + store { ptr, i64, i64 } { ptr @.str.1318, i64 3, i64 0 }, ptr %a25 + %t26 = call i32 @finch_str_eq(ptr %a24, ptr %a25) + %t27 = icmp ne i32 %t26, 0 + br i1 %t27, label %then2304, label %endif2306 +then2304: + %t28 = load ptr, ptr %a1 + %t29 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t30 = load { ptr, i64, i64 }, ptr %t29 + %t31 = extractvalue { ptr, i64, i64 } %t30, 1 + %t32 = icmp uge i64 0, %t31 + br i1 %t32, label %range2307, label %inrange2308 +range2307: + call void @finch_panic_index(ptr @.str.1319, i64 504, i64 0, i64 %t31) unreachable -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 - %t35 = load %S.ast.Node, ptr %a3 - %t36 = call %S.ast.Type @finch.gen.resolve(ptr %t27, %S.ast.Type %t34, %S.ast.Node %t35) - store %S.ast.Type %t36, ptr %a37 - %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.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.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.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.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.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.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.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.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.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.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 %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 %range2264, label %inrange2265 -range2264: - call void @finch_panic_index(ptr @.str.1316, i64 488, i64 1, i64 %t80) +inrange2308: + %t33 = extractvalue { ptr, i64, i64 } %t30, 0 + %t34 = getelementptr inbounds %S.ast.Type, ptr %t33, i64 0 + %t35 = load %S.ast.Type, ptr %t34 + %t36 = load %S.ast.Node, ptr %a3 + %t37 = call %S.ast.Type @finch.gen.resolve(ptr %t28, %S.ast.Type %t35, %S.ast.Node %t36) + store %S.ast.Type %t37, ptr %a38 + %t39 = load %S.ast.Type, ptr %a38 + %t40 = call i1 @finch.gen.isInt(%S.ast.Type %t39) + %t41 = xor i1 %t40, true + br label %logic.from2309 +logic.from2309: + br i1 %t41, label %logic.rhs2310, label %logic.end2311 +logic.rhs2310: + %t42 = getelementptr inbounds %S.ast.Type, ptr %a38, i32 0, i32 0 + %t43 = load { ptr, i64, i64 }, ptr %t42 + store { ptr, i64, i64 } %t43, ptr %a44 + store { ptr, i64, i64 } { ptr @.str.1320, i64 4, i64 0 }, ptr %a45 + %t46 = call i32 @finch_str_eq(ptr %a44, ptr %a45) + %t47 = icmp eq i32 %t46, 0 + br label %logic.rend2312 +logic.rend2312: + br label %logic.end2311 +logic.end2311: + %t48 = phi i1 [ false, %logic.from2309 ], [ %t47, %logic.rend2312 ] + br label %logic.from2313 +logic.from2313: + br i1 %t48, label %logic.rhs2314, label %logic.end2315 +logic.rhs2314: + %t49 = getelementptr inbounds %S.ast.Type, ptr %a38, i32 0, i32 0 + %t50 = load { ptr, i64, i64 }, ptr %t49 + store { ptr, i64, i64 } %t50, ptr %a51 + store { ptr, i64, i64 } { ptr @.str.1321, i64 4, i64 0 }, ptr %a52 + %t53 = call i32 @finch_str_eq(ptr %a51, ptr %a52) + %t54 = icmp eq i32 %t53, 0 + br label %logic.rend2316 +logic.rend2316: + br label %logic.end2315 +logic.end2315: + %t55 = phi i1 [ false, %logic.from2313 ], [ %t54, %logic.rend2316 ] + br label %logic.from2317 +logic.from2317: + br i1 %t55, label %logic.rhs2318, label %logic.end2319 +logic.rhs2318: + %t56 = getelementptr inbounds %S.ast.Type, ptr %a38, i32 0, i32 0 + %t57 = load { ptr, i64, i64 }, ptr %t56 + store { ptr, i64, i64 } %t57, ptr %a58 + store { ptr, i64, i64 } { ptr @.str.1322, i64 3, i64 0 }, ptr %a59 + %t60 = call i32 @finch_str_eq(ptr %a58, ptr %a59) + %t61 = icmp eq i32 %t60, 0 + br label %logic.rend2320 +logic.rend2320: + br label %logic.end2319 +logic.end2319: + %t62 = phi i1 [ false, %logic.from2317 ], [ %t61, %logic.rend2320 ] + br label %logic.from2321 +logic.from2321: + br i1 %t62, label %logic.rhs2322, label %logic.end2323 +logic.rhs2322: + %t63 = getelementptr inbounds %S.ast.Type, ptr %a38, i32 0, i32 0 + %t64 = load { ptr, i64, i64 }, ptr %t63 + store { ptr, i64, i64 } %t64, ptr %a65 + store { ptr, i64, i64 } { ptr @.str.1323, i64 4, i64 0 }, ptr %a66 + %t67 = call i32 @finch_str_eq(ptr %a65, ptr %a66) + %t68 = icmp eq i32 %t67, 0 + br label %logic.rend2324 +logic.rend2324: + br label %logic.end2323 +logic.end2323: + %t69 = phi i1 [ false, %logic.from2321 ], [ %t68, %logic.rend2324 ] + br i1 %t69, label %then2325, label %endif2327 +then2325: + %t70 = load ptr, ptr %a1 + %t71 = load %S.ast.Node, ptr %a3 + %t72 = load %S.ast.Type, ptr %a38 + %t73 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t72) + store { ptr, i64, i64 } { ptr @.str.1324, i64 63, i64 0 }, ptr %a75 + store { ptr, i64, i64 } %t73, ptr %a76 + call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) + store { ptr, i64, i64 } %t73, ptr %a77 + call void @finch_str_drop(ptr %a77) + %t78 = load { ptr, i64, i64 }, ptr %a74 + call void @finch.gen.fail(ptr %t70, %S.ast.Node %t71, { ptr, i64, i64 } %t78) + store { ptr, i64, i64 } %t78, ptr %a79 + call void @finch_str_drop(ptr %a79) + br label %endif2327 +endif2327: + %t80 = load ptr, ptr %a1 + %t81 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t82 = load { ptr, i64, i64 }, ptr %t81 + %t83 = extractvalue { ptr, i64, i64 } %t82, 1 + %t84 = icmp uge i64 1, %t83 + br i1 %t84, label %range2328, label %inrange2329 +range2328: + call void @finch_panic_index(ptr @.str.1325, i64 508, i64 1, i64 %t83) unreachable -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 - %t85 = load %S.ast.Node, ptr %a3 - %t86 = call %S.ast.Type @finch.gen.resolve(ptr %t77, %S.ast.Type %t84, %S.ast.Node %t85) - store %S.ast.Type %t86, ptr %a87 - %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.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 %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.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 -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.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 %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 - store %S.ast.Type %t108, ptr %a109 - %t110 = getelementptr inbounds %S.ast.Type, ptr %a109, i32 0, i32 1 - %t111 = getelementptr inbounds { ptr, i64, i64 }, ptr %t110, i32 0, i32 1 - %t112 = load ptr, ptr %a1 - %t113 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t114 = load { ptr, i64, i64 }, ptr %t113 - %t115 = extractvalue { ptr, i64, i64 } %t114, 1 - %t116 = icmp uge i64 0, %t115 - br i1 %t116, label %range2272, label %inrange2273 -range2272: - call void @finch_panic_index(ptr @.str.1321, i64 496, i64 0, i64 %t115) +inrange2329: + %t85 = extractvalue { ptr, i64, i64 } %t82, 0 + %t86 = getelementptr inbounds %S.ast.Type, ptr %t85, i64 1 + %t87 = load %S.ast.Type, ptr %t86 + %t88 = load %S.ast.Node, ptr %a3 + %t89 = call %S.ast.Type @finch.gen.resolve(ptr %t80, %S.ast.Type %t87, %S.ast.Node %t88) + store %S.ast.Type %t89, ptr %a90 + %t91 = getelementptr inbounds %S.ast.Type, ptr %a90, i32 0, i32 0 + %t92 = load { ptr, i64, i64 }, ptr %t91 + store { ptr, i64, i64 } %t92, ptr %a93 + store { ptr, i64, i64 } { ptr @.str.1326, i64 4, i64 0 }, ptr %a94 + %t95 = call i32 @finch_str_eq(ptr %a93, ptr %a94) + %t96 = icmp ne i32 %t95, 0 + br i1 %t96, label %then2330, label %endif2332 +then2330: + %t97 = load ptr, ptr %a1 + %t98 = load %S.ast.Node, ptr %a3 + call void @finch.gen.fail(ptr %t97, %S.ast.Node %t98, { ptr, i64, i64 } { ptr @.str.1327, i64 41, i64 0 }) + br label %endif2332 +endif2332: + %t99 = load %S.ast.Type, ptr %a38 + %t100 = load %S.ast.Type, ptr %a90 + %t101 = call %S.ast.Type @finch.ast.mapOf(%S.ast.Type %t99, %S.ast.Type %t100) + call void @finch.drop.S_ast_Type(ptr %a90) + call void @finch.drop.S_ast_Type(ptr %a38) + ret %S.ast.Type %t101 +endif2306: + %t102 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 + %t103 = load { ptr, i64, i64 }, ptr %t102 + store { ptr, i64, i64 } %t103, ptr %a104 + store { ptr, i64, i64 } { ptr @.str.1328, i64 5, i64 0 }, ptr %a105 + %t106 = call i32 @finch_str_eq(ptr %a104, ptr %a105) + %t107 = icmp ne i32 %t106, 0 + br i1 %t107, label %then2333, label %endif2335 +then2333: + %t108 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1329, i64 5, i64 0 }, 0 + %t109 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 4 + %t110 = load i64, ptr %t109 + %t111 = insertvalue %S.ast.Type %t108, i64 %t110, 4 + store %S.ast.Type %t111, ptr %a112 + %t113 = getelementptr inbounds %S.ast.Type, ptr %a112, i32 0, i32 1 + %t114 = getelementptr inbounds { ptr, i64, i64 }, ptr %t113, i32 0, i32 1 + %t115 = load ptr, ptr %a1 + %t116 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t117 = load { ptr, i64, i64 }, ptr %t116 + %t118 = extractvalue { ptr, i64, i64 } %t117, 1 + %t119 = icmp uge i64 0, %t118 + br i1 %t119, label %range2336, label %inrange2337 +range2336: + call void @finch_panic_index(ptr @.str.1330, i64 516, i64 0, i64 %t118) unreachable -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 - %t120 = load %S.ast.Node, ptr %a3 - %t121 = call %S.ast.Type @finch.gen.resolve(ptr %t112, %S.ast.Type %t119, %S.ast.Node %t120) - %t122 = load i64, ptr %t111 - %t123 = add i64 %t122, 1 - call void @finch_arr_reserve(ptr %t110, i64 %t123, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t124 = load ptr, ptr %t110 - %t125 = getelementptr inbounds %S.ast.Type, ptr %t124, i64 %t122 - store %S.ast.Type %t121, ptr %t125 - store i64 %t123, ptr %t111 - %t126 = load %S.ast.Type, ptr %a109 - ret %S.ast.Type %t126 -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.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 %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 %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 -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 %range2280, label %inrange2281 -range2280: - call void @finch_panic_index(ptr @.str.1323, i64 503, i64 0, i64 %t144) +inrange2337: + %t120 = extractvalue { ptr, i64, i64 } %t117, 0 + %t121 = getelementptr inbounds %S.ast.Type, ptr %t120, i64 0 + %t122 = load %S.ast.Type, ptr %t121 + %t123 = load %S.ast.Node, ptr %a3 + %t124 = call %S.ast.Type @finch.gen.resolve(ptr %t115, %S.ast.Type %t122, %S.ast.Node %t123) + %t125 = load i64, ptr %t114 + %t126 = add i64 %t125, 1 + call void @finch_arr_reserve(ptr %t113, i64 %t126, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) + %t127 = load ptr, ptr %t113 + %t128 = getelementptr inbounds %S.ast.Type, ptr %t127, i64 %t125 + store %S.ast.Type %t124, ptr %t128 + store i64 %t126, ptr %t114 + %t129 = load %S.ast.Type, ptr %a112 + ret %S.ast.Type %t129 +endif2335: + %t130 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 + %t131 = load { ptr, i64, i64 }, ptr %t130 + store { ptr, i64, i64 } %t131, ptr %a132 + store { ptr, i64, i64 } { ptr @.str.1331, i64 3, i64 0 }, ptr %a133 + %t134 = call i32 @finch_str_eq(ptr %a132, ptr %a133) + %t135 = icmp ne i32 %t134, 0 + br i1 %t135, label %then2338, label %endif2340 +then2338: + %t136 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t137 = getelementptr inbounds { ptr, i64, i64 }, ptr %t136, i32 0, i32 1 + %t138 = load i64, ptr %t137 + %t139 = icmp eq i64 %t138, 0 + br i1 %t139, label %then2341, label %endif2343 +then2341: + %t140 = load %S.ast.Type, ptr %a2 + store %S.ast.Type %t140, ptr %a141 + call void @finch.copy.S_ast_Type(ptr %a142, ptr %a141) + %t143 = load %S.ast.Type, ptr %a142 + ret %S.ast.Type %t143 +endif2343: + %t144 = load ptr, ptr %a1 + %t145 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t146 = load { ptr, i64, i64 }, ptr %t145 + %t147 = extractvalue { ptr, i64, i64 } %t146, 1 + %t148 = icmp uge i64 0, %t147 + br i1 %t148, label %range2344, label %inrange2345 +range2344: + call void @finch_panic_index(ptr @.str.1332, i64 523, i64 0, i64 %t147) unreachable -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 - %t149 = load %S.ast.Node, ptr %a3 - %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 -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.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 %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 -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.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 +inrange2345: + %t149 = extractvalue { ptr, i64, i64 } %t146, 0 + %t150 = getelementptr inbounds %S.ast.Type, ptr %t149, i64 0 + %t151 = load %S.ast.Type, ptr %t150 + %t152 = load %S.ast.Node, ptr %a3 + %t153 = call %S.ast.Type @finch.gen.resolve(ptr %t144, %S.ast.Type %t151, %S.ast.Node %t152) + %t154 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t153) + store %S.ast.Type %t153, ptr %a155 + call void @finch.drop.S_ast_Type(ptr %a155) + ret %S.ast.Type %t154 +endif2340: + %t156 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 + %t157 = load { ptr, i64, i64 }, ptr %t156 + store { ptr, i64, i64 } %t157, ptr %a158 + store { ptr, i64, i64 } { ptr @.str.1333, i64 5, i64 0 }, ptr %a159 + %t160 = call i32 @finch_str_eq(ptr %a158, ptr %a159) + %t161 = icmp eq i32 %t160, 0 + br i1 %t161, label %then2346, label %endif2348 +then2346: + %t162 = load %S.ast.Type, ptr %a2 + store %S.ast.Type %t162, ptr %a163 + call void @finch.copy.S_ast_Type(ptr %a164, ptr %a163) + %t165 = load %S.ast.Type, ptr %a164 + ret %S.ast.Type %t165 +endif2348: + %t166 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 %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.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 %panic2292, label %ok2293 -panic2292: - call void @finch_panic(ptr @.str.1325, i64 509, ptr @.str.1326) - unreachable -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 - %t176 = load { ptr, i64, i64 }, ptr %t175 - store i64 -1, ptr %a177 - %t178 = load i64, ptr %t174 - %t179 = load ptr, ptr %t173 - store i64 0, ptr %a180 - br label %find.cond2294 -find.cond2294: - %t181 = load i64, ptr %a180 - %t182 = icmp slt i64 %t181, %t178 - 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.hit2296, label %find.next2297 -find.hit2296: - store i64 %t181, ptr %a177 - br label %find.end2298 -find.next2297: - %t189 = add i64 %t181, 1 - store i64 %t189, ptr %a180 - br label %find.cond2294 -find.end2298: - %t190 = load i64, ptr %a177 - %t191 = icmp sge i64 %t190, 0 - 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 %panic2303, label %ok2304 -panic2303: - call void @finch_panic(ptr @.str.1327, i64 510, ptr @.str.1328) - unreachable -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 %panic2305, label %ok2306 -panic2305: - call void @finch_panic(ptr @.str.1329, i64 510, ptr @.str.1330) - unreachable -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 - %t201 = load { ptr, i64, i64 }, ptr %t200 - store i64 -1, ptr %a202 - %t203 = load i64, ptr %t199 - %t204 = load ptr, ptr %t198 - store i64 0, ptr %a205 - br label %find.cond2307 -find.cond2307: - %t206 = load i64, ptr %a205 - %t207 = icmp slt i64 %t206, %t203 - 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.hit2309, label %find.next2310 -find.hit2309: - store i64 %t206, ptr %a202 - br label %find.end2311 -find.next2310: - %t214 = add i64 %t206, 1 - store i64 %t214, ptr %a205 - 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 %range2312, label %inrange2313 -range2312: - call void @finch_panic_index(ptr @.str.1331, i64 510, i64 %t215, i64 %t217) - unreachable -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 - store %S.ast.Type %t221, ptr %a222 - call void @finch.copy.S_ast_Type(ptr %a223, ptr %a222) - %t224 = load %S.ast.Type, ptr %a223 - ret %S.ast.Type %t224 -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 %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.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.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 - store %S.ast.Type %t238, ptr %a239 - %t240 = getelementptr inbounds { ptr, i64, i64 }, ptr %a229, i32 0, i32 1 - %t241 = load ptr, ptr %a1 - %t242 = load %S.ast.Type, ptr %a239 - %t243 = load %S.ast.Node, ptr %a3 - %t244 = call %S.ast.Type @finch.gen.resolve(ptr %t241, %S.ast.Type %t242, %S.ast.Node %t243) - %t245 = load i64, ptr %t240 - %t246 = add i64 %t245, 1 - call void @finch_arr_reserve(ptr %a229, i64 %t246, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t247 = load ptr, ptr %a229 - %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.step2319 -each.step2319: - %t249 = load i64, ptr %a231 - %t250 = add i64 %t249, 1 - store i64 %t250, ptr %a231 - br label %each.cond2317 -each.end2320: - %t251 = load ptr, ptr %a1 - %t252 = icmp eq ptr %t251, null - br i1 %t252, label %panic2321, label %ok2322 -panic2321: - call void @finch_panic(ptr @.str.1332, i64 518, ptr @.str.1333) - unreachable -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 - call void @finch_str_copy(ptr %a256, ptr %a255) - %t257 = load { ptr, i64, i64 }, ptr %a256 - store { ptr, i64, i64 } %t257, ptr %a258 - %t259 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %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 %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 %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.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.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 - %t281 = load { ptr, i64, i64 }, ptr %t280 - store { ptr, i64, i64 } %t279, 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.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 %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 %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 - %t298 = load { ptr, i64, i64 }, ptr %t297 - %t299 = load { ptr, i64, i64 }, ptr %a229 - %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 -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.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 %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.1338, i64 1, i64 0 }, { ptr, i64, i64 } %t310) - %t312 = icmp slt i64 %t311, 0 - 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.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.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 %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.1342, i64 1, i64 0 }, 3 - ret %S.ast.Type %t332 -endif2331: - %t333 = load ptr, ptr %a1 - %t334 = icmp eq ptr %t333, null - br i1 %t334, label %panic2335, label %ok2336 -panic2335: - call void @finch_panic(ptr @.str.1343, i64 533, ptr @.str.1344) - unreachable -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 - call void @finch_str_copy(ptr %a338, ptr %a337) - %t339 = load { ptr, i64, i64 }, ptr %a338 - store { ptr, i64, i64 } %t339, ptr %a340 - %t341 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %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 %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 %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.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.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 - %t363 = load { ptr, i64, i64 }, ptr %t362 - store { ptr, i64, i64 } %t361, ptr %a365 - store { ptr, i64, i64 } %t363, 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.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 %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 %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 %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 - call void @finch_str_copy(ptr %a387, ptr %a386) - %t388 = load { ptr, i64, i64 }, ptr %a387 - %t389 = insertvalue %S.ast.Type %t383, { ptr, i64, i64 } %t388, 2 - %t390 = load { ptr, i64, i64 }, ptr %a340 - store { ptr, i64, i64 } %t390, ptr %a391 - call void @finch_str_copy(ptr %a392, ptr %a391) - %t393 = load { ptr, i64, i64 }, ptr %a392 - %t394 = insertvalue %S.ast.Type %t389, { ptr, i64, i64 } %t393, 3 - ret %S.ast.Type %t394 -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 %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.from2349 logic.from2349: - br i1 %t404, label %logic.rhs2350, label %logic.end2351 + br i1 %t169, 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.1349, i64 1, i64 0 }, { ptr, i64, i64 } %t407) - %t409 = icmp sge i64 %t408, 0 + %t170 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t171 = getelementptr inbounds { ptr, i64, i64 }, ptr %t170, i32 0, i32 1 + %t172 = load i64, ptr %t171 + %t173 = icmp eq i64 %t172, 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.1351, i64 1, i64 0 }, 3 - ret %S.ast.Type %t418 -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.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.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 %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 - call void @finch_str_copy(ptr %a435, ptr %a434) - %t436 = load { ptr, i64, i64 }, ptr %a435 - %t437 = insertvalue %S.ast.Type %t431, { ptr, i64, i64 } %t436, 2 - %t438 = load { ptr, i64, i64 }, ptr %a340 - store { ptr, i64, i64 } %t438, ptr %a439 - call void @finch_str_copy(ptr %a440, ptr %a439) - %t441 = load { ptr, i64, i64 }, ptr %a440 - %t442 = insertvalue %S.ast.Type %t437, { ptr, i64, i64 } %t441, 3 - ret %S.ast.Type %t442 + %t174 = phi i1 [ false, %logic.from2349 ], [ %t173, %logic.rend2352 ] + br label %logic.from2353 +logic.from2353: + br i1 %t174, label %logic.rhs2354, label %logic.end2355 +logic.rhs2354: + %t175 = load ptr, ptr %a1 + %t176 = icmp eq ptr %t175, null + br i1 %t176, label %panic2356, label %ok2357 +panic2356: + call void @finch_panic(ptr @.str.1334, i64 529, ptr @.str.1335) + unreachable +ok2357: + %t177 = getelementptr inbounds %S.gen.Gen, ptr %t175, i32 0, i32 18 + %t178 = getelementptr inbounds { ptr, i64, i64 }, ptr %t177, i32 0, i32 1 + %t179 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 + %t180 = load { ptr, i64, i64 }, ptr %t179 + store i64 -1, ptr %a181 + %t182 = load i64, ptr %t178 + %t183 = load ptr, ptr %t177 + store i64 0, ptr %a184 + br label %find.cond2358 +find.cond2358: + %t185 = load i64, ptr %a184 + %t186 = icmp slt i64 %t185, %t182 + br i1 %t186, label %find.body2359, label %find.end2362 +find.body2359: + %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.hit2360, label %find.next2361 +find.hit2360: + store i64 %t185, ptr %a181 + br label %find.end2362 +find.next2361: + %t193 = add i64 %t185, 1 + store i64 %t193, ptr %a184 + br label %find.cond2358 +find.end2362: + %t194 = load i64, ptr %a181 + %t195 = icmp sge i64 %t194, 0 + br label %logic.rend2363 +logic.rend2363: + br label %logic.end2355 +logic.end2355: + %t196 = phi i1 [ false, %logic.from2353 ], [ %t195, %logic.rend2363 ] + br i1 %t196, label %then2364, label %endif2366 +then2364: + %t197 = load ptr, ptr %a1 + %t198 = icmp eq ptr %t197, null + br i1 %t198, label %panic2367, label %ok2368 +panic2367: + call void @finch_panic(ptr @.str.1336, i64 530, ptr @.str.1337) + unreachable +ok2368: + %t199 = getelementptr inbounds %S.gen.Gen, ptr %t197, i32 0, i32 19 + %t200 = load ptr, ptr %a1 + %t201 = icmp eq ptr %t200, null + br i1 %t201, label %panic2369, label %ok2370 +panic2369: + call void @finch_panic(ptr @.str.1338, i64 530, ptr @.str.1339) + unreachable +ok2370: + %t202 = getelementptr inbounds %S.gen.Gen, ptr %t200, i32 0, i32 18 + %t203 = getelementptr inbounds { ptr, i64, i64 }, ptr %t202, i32 0, i32 1 + %t204 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 + %t205 = load { ptr, i64, i64 }, ptr %t204 + store i64 -1, ptr %a206 + %t207 = load i64, ptr %t203 + %t208 = load ptr, ptr %t202 + store i64 0, ptr %a209 + br label %find.cond2371 +find.cond2371: + %t210 = load i64, ptr %a209 + %t211 = icmp slt i64 %t210, %t207 + br i1 %t211, label %find.body2372, label %find.end2375 +find.body2372: + %t212 = getelementptr inbounds { ptr, i64, i64 }, ptr %t208, i64 %t210 + %t213 = load { ptr, i64, i64 }, ptr %t212 + store { ptr, i64, i64 } %t213, ptr %a214 + store { ptr, i64, i64 } %t205, ptr %a215 + %t216 = call i32 @finch_str_eq(ptr %a214, ptr %a215) + %t217 = icmp ne i32 %t216, 0 + br i1 %t217, label %find.hit2373, label %find.next2374 +find.hit2373: + store i64 %t210, ptr %a206 + br label %find.end2375 +find.next2374: + %t218 = add i64 %t210, 1 + store i64 %t218, ptr %a209 + br label %find.cond2371 +find.end2375: + %t219 = load i64, ptr %a206 + %t220 = load { ptr, i64, i64 }, ptr %t199 + %t221 = extractvalue { ptr, i64, i64 } %t220, 1 + %t222 = icmp uge i64 %t219, %t221 + br i1 %t222, label %range2376, label %inrange2377 +range2376: + call void @finch_panic_index(ptr @.str.1340, i64 530, i64 %t219, i64 %t221) + unreachable +inrange2377: + %t223 = extractvalue { ptr, i64, i64 } %t220, 0 + %t224 = getelementptr inbounds %S.ast.Type, ptr %t223, i64 %t219 + %t225 = load %S.ast.Type, ptr %t224 + 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 + ret %S.ast.Type %t228 +endif2366: + %t229 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t230 = getelementptr inbounds { ptr, i64, i64 }, ptr %t229, i32 0, i32 1 + %t231 = load i64, ptr %t230 + %t232 = icmp sgt i64 %t231, 0 + br i1 %t232, label %then2378, label %endif2380 +then2378: + store { ptr, i64, i64 } zeroinitializer, ptr %a233 + %t234 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + store i64 0, ptr %a235 + br label %each.cond2381 +each.cond2381: + %t236 = getelementptr inbounds { ptr, i64, i64 }, ptr %t234, i32 0, i32 1 + %t237 = load i64, ptr %t236 + %t238 = load i64, ptr %a235 + %t239 = icmp slt i64 %t238, %t237 + br i1 %t239, label %each.body2382, label %each.end2384 +each.body2382: + %t240 = load ptr, ptr %t234 + %t241 = getelementptr inbounds %S.ast.Type, ptr %t240, i64 %t238 + %t242 = load %S.ast.Type, ptr %t241 + store %S.ast.Type %t242, ptr %a243 + %t244 = getelementptr inbounds { ptr, i64, i64 }, ptr %a233, i32 0, i32 1 + %t245 = load ptr, ptr %a1 + %t246 = load %S.ast.Type, ptr %a243 + %t247 = load %S.ast.Node, ptr %a3 + %t248 = call %S.ast.Type @finch.gen.resolve(ptr %t245, %S.ast.Type %t246, %S.ast.Node %t247) + %t249 = load i64, ptr %t244 + %t250 = add i64 %t249, 1 + call void @finch_arr_reserve(ptr %a233, i64 %t250, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) + %t251 = load ptr, ptr %a233 + %t252 = getelementptr inbounds %S.ast.Type, ptr %t251, i64 %t249 + store %S.ast.Type %t248, ptr %t252 + store i64 %t250, ptr %t244 + br label %each.step2383 +each.step2383: + %t253 = load i64, ptr %a235 + %t254 = add i64 %t253, 1 + store i64 %t254, ptr %a235 + br label %each.cond2381 +each.end2384: + %t255 = load ptr, ptr %a1 + %t256 = icmp eq ptr %t255, null + br i1 %t256, label %panic2385, label %ok2386 +panic2385: + call void @finch_panic(ptr @.str.1341, i64 538, ptr @.str.1342) + unreachable +ok2386: + %t257 = getelementptr inbounds %S.gen.Gen, ptr %t255, i32 0, i32 14 + %t258 = load { ptr, i64, i64 }, ptr %t257 + store { ptr, i64, i64 } %t258, ptr %a259 + call void @finch_str_copy(ptr %a260, ptr %a259) + %t261 = load { ptr, i64, i64 }, ptr %a260 + store { ptr, i64, i64 } %t261, ptr %a262 + %t263 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 + %t264 = getelementptr inbounds { ptr, i64, i64 }, ptr %t263, i32 0, i32 1 + %t265 = load i64, ptr %t264 + %t266 = icmp sgt i64 %t265, 0 + br i1 %t266, label %then2387, label %endif2389 +then2387: + %t267 = load ptr, ptr %a1 + %t268 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 + %t269 = load { ptr, i64, i64 }, ptr %t268 + %t270 = call i1 @finch.gen.imports(ptr %t267, { ptr, i64, i64 } %t269) + %t271 = xor i1 %t270, true + br i1 %t271, label %then2390, label %endif2392 +then2390: + %t272 = load ptr, ptr %a1 + %t273 = load %S.ast.Node, ptr %a3 + %t274 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 + %t275 = load { ptr, i64, i64 }, ptr %t274 + store { ptr, i64, i64 } { ptr @.str.1343, i64 1, 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.1344, i64 36, i64 0 }, ptr %a282 + call void @finch_str_concat(ptr %a280, ptr %a281, ptr %a282) + store { ptr, i64, i64 } %t279, ptr %a283 + call void @finch_str_drop(ptr %a283) + %t284 = load { ptr, i64, i64 }, ptr %a280 + %t285 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 + %t286 = load { ptr, i64, i64 }, ptr %t285 + store { ptr, i64, i64 } %t284, ptr %a288 + store { ptr, i64, i64 } %t286, ptr %a289 + call void @finch_str_concat(ptr %a287, ptr %a288, ptr %a289) + store { ptr, i64, i64 } %t284, ptr %a290 + call void @finch_str_drop(ptr %a290) + %t291 = load { ptr, i64, i64 }, ptr %a287 + store { ptr, i64, i64 } %t291, ptr %a293 + store { ptr, i64, i64 } { ptr @.str.1345, i64 1, i64 0 }, ptr %a294 + call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) + store { ptr, i64, i64 } %t291, ptr %a295 + call void @finch_str_drop(ptr %a295) + %t296 = load { ptr, i64, i64 }, ptr %a292 + call void @finch.gen.fail(ptr %t272, %S.ast.Node %t273, { ptr, i64, i64 } %t296) + store { ptr, i64, i64 } %t296, ptr %a297 + call void @finch_str_drop(ptr %a297) + br label %endif2392 +endif2392: + %t298 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 + %t299 = load { ptr, i64, i64 }, ptr %t298 + store { ptr, i64, i64 } %t299, ptr %a300 + call void @finch_str_copy(ptr %a301, ptr %a300) + %t302 = load { ptr, i64, i64 }, ptr %a301 + %t303 = load { ptr, i64, i64 }, ptr %a262 + store { ptr, i64, i64 } %t302, ptr %a262 + store { ptr, i64, i64 } %t303, ptr %a304 + call void @finch_str_drop(ptr %a304) + br label %endif2389 +endif2389: + %t305 = load ptr, ptr %a1 + %t306 = load { ptr, i64, i64 }, ptr %a262 + %t307 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 + %t308 = load { ptr, i64, i64 }, ptr %t307 + %t309 = load { ptr, i64, i64 }, ptr %a233 + %t310 = load %S.ast.Node, ptr %a3 + %t311 = call %S.ast.Type @finch.gen.instStruct(ptr %t305, { ptr, i64, i64 } %t306, { ptr, i64, i64 } %t308, { ptr, i64, i64 } %t309, %S.ast.Node %t310) + call void @finch_str_drop(ptr %a262) + call void @finch.drop.arr_S_ast_Type(ptr %a233) + ret %S.ast.Type %t311 +endif2380: + %t312 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 + %t313 = load { ptr, i64, i64 }, ptr %t312 + store { ptr, i64, i64 } %t313, ptr %a314 + store { ptr, i64, i64 } { ptr @.str.1346, i64 1, i64 0 }, ptr %a315 + %t316 = call i32 @finch_str_eq(ptr %a314, ptr %a315) + %t317 = icmp ne i32 %t316, 0 + br i1 %t317, label %then2393, label %endif2395 +then2393: + %t318 = load ptr, ptr %a1 + %t319 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 + %t320 = load { ptr, i64, i64 }, ptr %t319 + %t321 = call i64 @finch.gen.findStruct(ptr %t318, { ptr, i64, i64 } { ptr @.str.1347, i64 1, i64 0 }, { ptr, i64, i64 } %t320) + %t322 = icmp slt i64 %t321, 0 + br i1 %t322, label %then2396, label %endif2398 +then2396: + %t323 = load ptr, ptr %a1 + %t324 = load %S.ast.Node, ptr %a3 + %t325 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 + %t326 = load { ptr, i64, i64 }, ptr %t325 + store { ptr, i64, i64 } { ptr @.str.1348, i64 28, i64 0 }, ptr %a328 + store { ptr, i64, i64 } %t326, 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 %a332 + store { ptr, i64, i64 } { ptr @.str.1349, i64 1, i64 0 }, ptr %a333 + call void @finch_str_concat(ptr %a331, ptr %a332, ptr %a333) + store { ptr, i64, i64 } %t330, ptr %a334 + call void @finch_str_drop(ptr %a334) + %t335 = load { ptr, i64, i64 }, ptr %a331 + call void @finch.gen.fail(ptr %t323, %S.ast.Node %t324, { ptr, i64, i64 } %t335) + store { ptr, i64, i64 } %t335, ptr %a336 + call void @finch_str_drop(ptr %a336) + br label %endif2398 +endif2398: + %t337 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1350, i64 6, i64 0 }, 0 + %t338 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 + %t339 = load { ptr, i64, i64 }, ptr %t338 + store { ptr, i64, i64 } %t339, ptr %a340 + call void @finch_str_copy(ptr %a341, ptr %a340) + %t342 = load { ptr, i64, i64 }, ptr %a341 + %t343 = insertvalue %S.ast.Type %t337, { ptr, i64, i64 } %t342, 2 + %t344 = insertvalue %S.ast.Type %t343, { ptr, i64, i64 } { ptr @.str.1351, i64 1, i64 0 }, 3 + ret %S.ast.Type %t344 +endif2395: + %t345 = load ptr, ptr %a1 + %t346 = icmp eq ptr %t345, null + br i1 %t346, label %panic2399, label %ok2400 +panic2399: + call void @finch_panic(ptr @.str.1352, i64 553, ptr @.str.1353) + unreachable +ok2400: + %t347 = getelementptr inbounds %S.gen.Gen, ptr %t345, i32 0, i32 14 + %t348 = load { ptr, i64, i64 }, ptr %t347 + store { ptr, i64, i64 } %t348, ptr %a349 + call void @finch_str_copy(ptr %a350, ptr %a349) + %t351 = load { ptr, i64, i64 }, ptr %a350 + store { ptr, i64, i64 } %t351, ptr %a352 + %t353 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 + %t354 = getelementptr inbounds { ptr, i64, i64 }, ptr %t353, i32 0, i32 1 + %t355 = load i64, ptr %t354 + %t356 = icmp sgt i64 %t355, 0 + br i1 %t356, label %then2401, label %endif2403 +then2401: + %t357 = load ptr, ptr %a1 + %t358 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 + %t359 = load { ptr, i64, i64 }, ptr %t358 + %t360 = call i1 @finch.gen.imports(ptr %t357, { ptr, i64, i64 } %t359) + %t361 = xor i1 %t360, true + br i1 %t361, label %then2404, label %endif2406 +then2404: + %t362 = load ptr, ptr %a1 + %t363 = load %S.ast.Node, ptr %a3 + %t364 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 + %t365 = load { ptr, i64, i64 }, ptr %t364 + store { ptr, i64, i64 } { ptr @.str.1354, i64 1, i64 0 }, 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.1355, i64 36, i64 0 }, ptr %a372 + call void @finch_str_concat(ptr %a370, ptr %a371, ptr %a372) + store { ptr, i64, i64 } %t369, ptr %a373 + call void @finch_str_drop(ptr %a373) + %t374 = load { ptr, i64, i64 }, ptr %a370 + %t375 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 + %t376 = load { ptr, i64, i64 }, ptr %t375 + store { ptr, i64, i64 } %t374, ptr %a378 + store { ptr, i64, i64 } %t376, ptr %a379 + call void @finch_str_concat(ptr %a377, ptr %a378, ptr %a379) + store { ptr, i64, i64 } %t374, ptr %a380 + call void @finch_str_drop(ptr %a380) + %t381 = load { ptr, i64, i64 }, ptr %a377 + store { ptr, i64, i64 } %t381, ptr %a383 + store { ptr, i64, i64 } { ptr @.str.1356, i64 1, i64 0 }, ptr %a384 + call void @finch_str_concat(ptr %a382, ptr %a383, ptr %a384) + store { ptr, i64, i64 } %t381, ptr %a385 + call void @finch_str_drop(ptr %a385) + %t386 = load { ptr, i64, i64 }, ptr %a382 + call void @finch.gen.fail(ptr %t362, %S.ast.Node %t363, { ptr, i64, i64 } %t386) + store { ptr, i64, i64 } %t386, ptr %a387 + call void @finch_str_drop(ptr %a387) + br label %endif2406 +endif2406: + %t388 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 + %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 + %t393 = load { ptr, i64, i64 }, ptr %a352 + store { ptr, i64, i64 } %t392, ptr %a352 + store { ptr, i64, i64 } %t393, ptr %a394 + call void @finch_str_drop(ptr %a394) + br label %endif2403 +endif2403: + %t395 = load ptr, ptr %a1 + %t396 = load { ptr, i64, i64 }, ptr %a352 + %t397 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 + %t398 = load { ptr, i64, i64 }, ptr %t397 + %t399 = call i64 @finch.gen.findEnum(ptr %t395, { ptr, i64, i64 } %t396, { ptr, i64, i64 } %t398) + %t400 = icmp sge i64 %t399, 0 + br i1 %t400, label %then2407, label %endif2409 +then2407: + %t401 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1357, i64 4, i64 0 }, 0 + %t402 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 + %t403 = load { ptr, i64, i64 }, ptr %t402 + store { ptr, i64, i64 } %t403, ptr %a404 + call void @finch_str_copy(ptr %a405, ptr %a404) + %t406 = load { ptr, i64, i64 }, ptr %a405 + %t407 = insertvalue %S.ast.Type %t401, { ptr, i64, i64 } %t406, 2 + %t408 = load { ptr, i64, i64 }, ptr %a352 + store { ptr, i64, i64 } %t408, ptr %a409 + call void @finch_str_copy(ptr %a410, ptr %a409) + %t411 = load { ptr, i64, i64 }, ptr %a410 + %t412 = insertvalue %S.ast.Type %t407, { ptr, i64, i64 } %t411, 3 + call void @finch_str_drop(ptr %a352) + ret %S.ast.Type %t412 +endif2409: + %t413 = load ptr, ptr %a1 + %t414 = load { ptr, i64, i64 }, ptr %a352 + %t415 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 + %t416 = load { ptr, i64, i64 }, ptr %t415 + %t417 = call i64 @finch.gen.findStruct(ptr %t413, { ptr, i64, i64 } %t414, { ptr, i64, i64 } %t416) + %t418 = icmp slt i64 %t417, 0 + br i1 %t418, label %then2410, label %endif2412 +then2410: + %t419 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 + %t420 = getelementptr inbounds { ptr, i64, i64 }, ptr %t419, i32 0, i32 1 + %t421 = load i64, ptr %t420 + %t422 = icmp eq i64 %t421, 0 + br label %logic.from2413 +logic.from2413: + br i1 %t422, label %logic.rhs2414, label %logic.end2415 +logic.rhs2414: + %t423 = load ptr, ptr %a1 + %t424 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 + %t425 = load { ptr, i64, i64 }, ptr %t424 + %t426 = call i64 @finch.gen.findStruct(ptr %t423, { ptr, i64, i64 } { ptr @.str.1358, i64 1, i64 0 }, { ptr, i64, i64 } %t425) + %t427 = icmp sge i64 %t426, 0 + br label %logic.rend2416 +logic.rend2416: + br label %logic.end2415 +logic.end2415: + %t428 = phi i1 [ false, %logic.from2413 ], [ %t427, %logic.rend2416 ] + br i1 %t428, label %then2417, label %endif2419 +then2417: + %t429 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1359, i64 6, i64 0 }, 0 + %t430 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 + %t431 = load { ptr, i64, i64 }, ptr %t430 + store { ptr, i64, i64 } %t431, ptr %a432 + call void @finch_str_copy(ptr %a433, ptr %a432) + %t434 = load { ptr, i64, i64 }, ptr %a433 + %t435 = insertvalue %S.ast.Type %t429, { ptr, i64, i64 } %t434, 2 + %t436 = insertvalue %S.ast.Type %t435, { ptr, i64, i64 } { ptr @.str.1360, i64 1, i64 0 }, 3 + call void @finch_str_drop(ptr %a352) + ret %S.ast.Type %t436 +endif2419: + %t437 = load ptr, ptr %a1 + %t438 = load %S.ast.Node, ptr %a3 + %t439 = load %S.ast.Type, ptr %a2 + %t440 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t439) + store { ptr, i64, i64 } { ptr @.str.1361, i64 24, i64 0 }, ptr %a442 + store { ptr, i64, i64 } %t440, ptr %a443 + call void @finch_str_concat(ptr %a441, ptr %a442, ptr %a443) + store { ptr, i64, i64 } %t440, ptr %a444 + call void @finch_str_drop(ptr %a444) + %t445 = load { ptr, i64, i64 }, ptr %a441 + store { ptr, i64, i64 } %t445, ptr %a447 + store { ptr, i64, i64 } { ptr @.str.1362, i64 1, i64 0 }, ptr %a448 + call void @finch_str_concat(ptr %a446, ptr %a447, ptr %a448) + store { ptr, i64, i64 } %t445, ptr %a449 + call void @finch_str_drop(ptr %a449) + %t450 = load { ptr, i64, i64 }, ptr %a446 + call void @finch.gen.fail(ptr %t437, %S.ast.Node %t438, { ptr, i64, i64 } %t450) + store { ptr, i64, i64 } %t450, ptr %a451 + call void @finch_str_drop(ptr %a451) + br label %endif2412 +endif2412: + %t452 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1363, i64 6, i64 0 }, 0 + %t453 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 + %t454 = load { ptr, i64, i64 }, ptr %t453 + store { ptr, i64, i64 } %t454, ptr %a455 + call void @finch_str_copy(ptr %a456, ptr %a455) + %t457 = load { ptr, i64, i64 }, ptr %a456 + %t458 = insertvalue %S.ast.Type %t452, { ptr, i64, i64 } %t457, 2 + %t459 = load { ptr, i64, i64 }, ptr %a352 + store { ptr, i64, i64 } %t459, ptr %a460 + call void @finch_str_copy(ptr %a461, ptr %a460) + %t462 = load { ptr, i64, i64 }, ptr %a461 + %t463 = insertvalue %S.ast.Type %t458, { ptr, i64, i64 } %t462, 3 + call void @finch_str_drop(ptr %a352) + ret %S.ast.Type %t463 } define internal { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %p0) { @@ -23413,33 +26275,42 @@ entry: %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 + %a17 = alloca { ptr, i64, i64 }, align 16 %a19 = 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 + %a23 = alloca { ptr, i64, i64 }, align 16 + %a25 = 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.1356, i64 1, i64 0 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.1357, i64 1, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.1365, i64 1, i64 0 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.1366, 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.1359, i64 1, i64 0 }, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.1360, i64 0, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.1368, i64 1, i64 0 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.1369, 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.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.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 + store { ptr, i64, i64 } %t7, ptr %a13 + call void @finch_str_drop(ptr %a13) + store { ptr, i64, i64 } %t12, ptr %a14 + store { ptr, i64, i64 } { ptr @.str.1371, i64 1, i64 0 }, ptr %a16 + store { ptr, i64, i64 } { ptr @.str.1372, i64 1, i64 0 }, ptr %a17 + call void @finch_str_replace(ptr %a15, ptr %a14, ptr %a16, ptr %a17) + %t18 = load { ptr, i64, i64 }, ptr %a15 + store { ptr, i64, i64 } %t12, ptr %a19 + call void @finch_str_drop(ptr %a19) + store { ptr, i64, i64 } %t18, ptr %a20 + store { ptr, i64, i64 } { ptr @.str.1374, i64 1, i64 0 }, ptr %a22 + store { ptr, i64, i64 } { ptr @.str.1375, i64 0, i64 0 }, ptr %a23 + call void @finch_str_replace(ptr %a21, ptr %a20, ptr %a22, ptr %a23) + %t24 = load { ptr, i64, i64 }, ptr %a21 + store { ptr, i64, i64 } %t18, ptr %a25 + call void @finch_str_drop(ptr %a25) + ret { ptr, i64, i64 } %t24 } define internal { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %p0) { @@ -23451,10 +26322,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 %then2356, label %endif2358 -then2356: - ret { ptr, i64, i64 } { ptr @.str.1367, i64 4, i64 0 } -endif2358: + br i1 %t4, label %then2420, label %endif2422 +then2420: + ret { ptr, i64, i64 } { ptr @.str.1376, i64 4, i64 0 } +endif2422: %t5 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t5, ptr %a6 call void @finch_str_copy(ptr %a7, ptr %a6) @@ -23477,48 +26348,58 @@ entry: %a26 = alloca { ptr, i64, i64 }, align 16 %a27 = alloca { ptr, i64, i64 }, align 16 %a28 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 + %a29 = alloca { ptr, i64, i64 }, align 16 %a32 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 + %a33 = alloca { ptr, i64, i64 }, align 16 %a37 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 + %a38 = alloca { ptr, i64, i64 }, align 16 %a42 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 + %a43 = alloca { ptr, i64, i64 }, align 16 %a47 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 + %a48 = alloca { ptr, i64, i64 }, align 16 %a53 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 + %a54 = alloca { ptr, i64, i64 }, align 16 %a58 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 + %a59 = alloca { ptr, i64, i64 }, align 16 + %a64 = 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 %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 %a71 = 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 + %a72 = alloca { ptr, i64, i64 }, align 16 + %a73 = alloca { ptr, i64, i64 }, align 16 + %a74 = alloca { ptr, i64, i64 }, align 16 + %a85 = alloca { ptr, i64, i64 }, align 16 %a86 = 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 %a91 = alloca { ptr, i64, i64 }, align 16 %a92 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 + %a93 = alloca { ptr, i64, i64 }, align 16 + %a94 = alloca { ptr, i64, i64 }, align 16 %a97 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 + %a98 = alloca { ptr, i64, i64 }, align 16 %a102 = alloca { ptr, i64, i64 }, align 16 + %a103 = alloca { ptr, i64, i64 }, align 16 %a107 = alloca { ptr, i64, i64 }, align 16 %a108 = 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 - %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 + %a121 = alloca { ptr, i64, i64 }, align 16 + %a122 = alloca { ptr, i64, i64 }, align 16 + %a123 = alloca { ptr, i64, i64 }, align 16 %a125 = 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 + %a134 = 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 store ptr %p0, ptr %a1 store %S.ast.Type %p1, ptr %a2 %t3 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 @@ -23529,194 +26410,225 @@ 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.1368, i64 4, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.1377, 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 %then2359, label %endif2361 -then2359: - ret { ptr, i64, i64 } { ptr @.str.1369, i64 2, i64 0 } -endif2361: + br i1 %t13, label %then2423, label %endif2425 +then2423: + call void @finch_str_drop(ptr %a8) + ret { ptr, i64, i64 } { ptr @.str.1378, i64 2, i64 0 } +endif2425: %t14 = load %S.ast.Type, ptr %a2 %t15 = call i1 @finch.gen.isInt(%S.ast.Type %t14) - br label %logic.from2362 -logic.from2362: - br i1 %t15, label %logic.end2364, label %logic.rhs2363 -logic.rhs2363: + br label %logic.from2426 +logic.from2426: + br i1 %t15, label %logic.end2428, label %logic.rhs2427 +logic.rhs2427: %t16 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t16, ptr %a17 - store { ptr, i64, i64 } { ptr @.str.1370, i64 4, i64 0 }, ptr %a18 + store { ptr, i64, i64 } { ptr @.str.1379, 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.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: + br label %logic.rend2429 +logic.rend2429: + br label %logic.end2428 +logic.end2428: + %t21 = phi i1 [ true, %logic.from2426 ], [ %t20, %logic.rend2429 ] + br i1 %t21, label %then2430, label %endif2432 +then2430: %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.1371, i64 1, i64 0 }, ptr %a27 + store { ptr, i64, i64 } { ptr @.str.1380, 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 -endif2368: - %t30 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t30, ptr %a31 - 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 %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.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 %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.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.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.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.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.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 %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.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 %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.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.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 - %t74 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t75 = load { ptr, i64, i64 }, ptr %t74 - %t76 = extractvalue { ptr, i64, i64 } %t75, 1 - %t77 = icmp uge i64 0, %t76 - br i1 %t77, label %range2388, label %inrange2389 -range2388: - call void @finch_panic_index(ptr @.str.1384, i64 586, i64 0, i64 %t76) + store { ptr, i64, i64 } %t25, ptr %a29 + call void @finch_str_drop(ptr %a29) + %t30 = load { ptr, i64, i64 }, ptr %a26 + call void @finch_str_drop(ptr %a8) + ret { ptr, i64, i64 } %t30 +endif2432: + %t31 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t31, ptr %a32 + store { ptr, i64, i64 } { ptr @.str.1381, i64 5, i64 0 }, ptr %a33 + %t34 = call i32 @finch_str_eq(ptr %a32, ptr %a33) + %t35 = icmp ne i32 %t34, 0 + br i1 %t35, label %then2433, label %endif2435 +then2433: + call void @finch_str_drop(ptr %a8) + ret { ptr, i64, i64 } { ptr @.str.1382, i64 6, i64 0 } +endif2435: + %t36 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t36, ptr %a37 + store { ptr, i64, i64 } { ptr @.str.1383, i64 3, i64 0 }, ptr %a38 + %t39 = call i32 @finch_str_eq(ptr %a37, ptr %a38) + %t40 = icmp ne i32 %t39, 0 + br i1 %t40, label %then2436, label %endif2438 +then2436: + call void @finch_str_drop(ptr %a8) + ret { ptr, i64, i64 } { ptr @.str.1384, i64 5, i64 0 } +endif2438: + %t41 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t41, ptr %a42 + store { ptr, i64, i64 } { ptr @.str.1385, 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.from2439 +logic.from2439: + br i1 %t45, label %logic.end2441, label %logic.rhs2440 +logic.rhs2440: + %t46 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t46, ptr %a47 + store { ptr, i64, i64 } { ptr @.str.1386, i64 5, i64 0 }, ptr %a48 + %t49 = call i32 @finch_str_eq(ptr %a47, ptr %a48) + %t50 = icmp ne i32 %t49, 0 + br label %logic.rend2442 +logic.rend2442: + br label %logic.end2441 +logic.end2441: + %t51 = phi i1 [ true, %logic.from2439 ], [ %t50, %logic.rend2442 ] + br i1 %t51, label %then2443, label %endif2445 +then2443: + call void @finch_str_drop(ptr %a8) + ret { ptr, i64, i64 } { ptr @.str.1387, i64 17, i64 0 } +endif2445: + %t52 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t52, ptr %a53 + store { ptr, i64, i64 } { ptr @.str.1388, 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 %then2446, label %endif2448 +then2446: + call void @finch_str_drop(ptr %a8) + ret { ptr, i64, i64 } { ptr @.str.1389, i64 37, i64 0 } +endif2448: + %t57 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t57, ptr %a58 + store { ptr, i64, i64 } { ptr @.str.1390, 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 %then2449, label %endif2451 +then2449: + %t62 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 4 + %t63 = load i64, ptr %t62 + call void @finch_str_from_int(ptr %a64, i64 %t63) + %t65 = load { ptr, i64, i64 }, ptr %a64 + store { ptr, i64, i64 } { ptr @.str.1391, i64 1, i64 0 }, ptr %a67 + store { ptr, i64, i64 } %t65, ptr %a68 + call void @finch_str_concat(ptr %a66, ptr %a67, ptr %a68) + store { ptr, i64, i64 } %t65, ptr %a69 + call void @finch_str_drop(ptr %a69) + %t70 = load { ptr, i64, i64 }, ptr %a66 + store { ptr, i64, i64 } %t70, ptr %a72 + store { ptr, i64, i64 } { ptr @.str.1392, i64 3, i64 0 }, ptr %a73 + call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73) + store { ptr, i64, i64 } %t70, ptr %a74 + call void @finch_str_drop(ptr %a74) + %t75 = load { ptr, i64, i64 }, ptr %a71 + %t76 = load ptr, ptr %a1 + %t77 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t78 = load { ptr, i64, i64 }, ptr %t77 + %t79 = extractvalue { ptr, i64, i64 } %t78, 1 + %t80 = icmp uge i64 0, %t79 + br i1 %t80, label %range2452, label %inrange2453 +range2452: + call void @finch_panic_index(ptr @.str.1393, i64 606, i64 0, i64 %t79) unreachable -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 - %t81 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t73, %S.ast.Type %t80) - store { ptr, i64, i64 } %t72, 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.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 -endif2387: - %t90 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t90, ptr %a91 - 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 %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.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.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.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.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: +inrange2453: + %t81 = extractvalue { ptr, i64, i64 } %t78, 0 + %t82 = getelementptr inbounds %S.ast.Type, ptr %t81, i64 0 + %t83 = load %S.ast.Type, ptr %t82 + %t84 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t76, %S.ast.Type %t83) + store { ptr, i64, i64 } %t75, ptr %a86 + store { ptr, i64, i64 } %t84, ptr %a87 + call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) + store { ptr, i64, i64 } %t75, ptr %a88 + call void @finch_str_drop(ptr %a88) + store { ptr, i64, i64 } %t84, ptr %a89 + call void @finch_str_drop(ptr %a89) + %t90 = load { ptr, i64, i64 }, ptr %a85 + store { ptr, i64, i64 } %t90, ptr %a92 + store { ptr, i64, i64 } { ptr @.str.1394, i64 1, i64 0 }, ptr %a93 + call void @finch_str_concat(ptr %a91, ptr %a92, ptr %a93) + store { ptr, i64, i64 } %t90, ptr %a94 + call void @finch_str_drop(ptr %a94) + %t95 = load { ptr, i64, i64 }, ptr %a91 + call void @finch_str_drop(ptr %a8) + ret { ptr, i64, i64 } %t95 +endif2451: + %t96 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t96, ptr %a97 + store { ptr, i64, i64 } { ptr @.str.1395, i64 4, i64 0 }, ptr %a98 + %t99 = call i32 @finch_str_eq(ptr %a97, ptr %a98) + %t100 = icmp ne i32 %t99, 0 + br i1 %t100, label %then2454, label %endif2456 +then2454: + call void @finch_str_drop(ptr %a8) + ret { ptr, i64, i64 } { ptr @.str.1396, i64 3, i64 0 } +endif2456: + %t101 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t101, ptr %a102 + store { ptr, i64, i64 } { ptr @.str.1397, 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.from2457 +logic.from2457: + br i1 %t105, label %logic.end2459, label %logic.rhs2458 +logic.rhs2458: %t106 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t106, ptr %a107 - store { ptr, i64, i64 } { ptr @.str.1391, i64 4, i64 0 }, ptr %a108 + store { ptr, i64, i64 } { ptr @.str.1398, 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 %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.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.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 - %t123 = load { ptr, i64, i64 }, ptr %t122 - %t124 = call { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %t123) - store { ptr, i64, i64 } %t121, ptr %a126 - store { ptr, i64, i64 } %t124, ptr %a127 + br label %logic.rend2460 +logic.rend2460: + br label %logic.end2459 +logic.end2459: + %t111 = phi i1 [ true, %logic.from2457 ], [ %t110, %logic.rend2460 ] + br i1 %t111, label %then2461, label %endif2463 +then2461: + call void @finch_str_drop(ptr %a8) + ret { ptr, i64, i64 } { ptr @.str.1399, i64 3, i64 0 } +endif2463: + %t112 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t112, ptr %a113 + store { ptr, i64, i64 } { ptr @.str.1400, i64 4, i64 0 }, ptr %a114 + %t115 = call i32 @finch_str_eq(ptr %a113, ptr %a114) + %t116 = icmp ne i32 %t115, 0 + br i1 %t116, label %then2464, label %endif2466 +then2464: + call void @finch_str_drop(ptr %a8) + ret { ptr, i64, i64 } { ptr @.str.1401, i64 4, i64 0 } +endif2466: + %t117 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 + %t118 = load { ptr, i64, i64 }, ptr %t117 + %t119 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t118) + store { ptr, i64, i64 } { ptr @.str.1402, i64 3, i64 0 }, ptr %a121 + store { ptr, i64, i64 } %t119, ptr %a122 + call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122) + store { ptr, i64, i64 } %t119, ptr %a123 + call void @finch_str_drop(ptr %a123) + %t124 = load { ptr, i64, i64 }, ptr %a120 + store { ptr, i64, i64 } %t124, ptr %a126 + store { ptr, i64, i64 } { ptr @.str.1403, i64 1, i64 0 }, ptr %a127 call void @finch_str_concat(ptr %a125, ptr %a126, ptr %a127) - %t128 = load { ptr, i64, i64 }, ptr %a125 - ret { ptr, i64, i64 } %t128 + store { ptr, i64, i64 } %t124, ptr %a128 + call void @finch_str_drop(ptr %a128) + %t129 = load { ptr, i64, i64 }, ptr %a125 + %t130 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 + %t131 = load { ptr, i64, i64 }, ptr %t130 + %t132 = call { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %t131) + store { ptr, i64, i64 } %t129, ptr %a134 + store { ptr, i64, i64 } %t132, ptr %a135 + call void @finch_str_concat(ptr %a133, ptr %a134, ptr %a135) + store { ptr, i64, i64 } %t129, ptr %a136 + call void @finch_str_drop(ptr %a136) + store { ptr, i64, i64 } %t132, ptr %a137 + call void @finch_str_drop(ptr %a137) + %t138 = load { ptr, i64, i64 }, ptr %a133 + call void @finch_str_drop(ptr %a8) + ret { ptr, i64, i64 } %t138 } define internal { ptr, i64, i64 } @finch.gen.retTy(ptr %p0, %S.gen.FnSig %p1) { @@ -23727,51 +26639,59 @@ entry: %a14 = alloca { ptr, i64, i64 }, align 16 %a15 = 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 + %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 + %a30 = alloca { ptr, i64, i64 }, align 16 + %a31 = alloca { ptr, i64, i64 }, align 16 + %a32 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store %S.gen.FnSig %p1, ptr %a2 %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 %then2403, label %endif2405 -then2403: + br i1 %t5, label %then2467, label %endif2469 +then2467: %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 -endif2405: - store { ptr, i64, i64 } { ptr @.str.1395, i64 2, i64 0 }, ptr %a10 +endif2469: + store { ptr, i64, i64 } { ptr @.str.1404, 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.1396, i64 4, i64 0 }, ptr %a15 + store { ptr, i64, i64 } { ptr @.str.1405, 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 %then2406, label %endif2408 -then2406: + br i1 %t17, label %then2470, label %endif2472 +then2470: %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 %endif2408 -endif2408: %t22 = load { ptr, i64, i64 }, ptr %a10 - 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.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 + store { ptr, i64, i64 } %t21, ptr %a10 + store { ptr, i64, i64 } %t22, ptr %a23 + call void @finch_str_drop(ptr %a23) + br label %endif2472 +endif2472: + %t24 = load { ptr, i64, i64 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.1406, 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.1407, i64 21, i64 0 }, ptr %a31 + call void @finch_str_concat(ptr %a29, ptr %a30, ptr %a31) + store { ptr, i64, i64 } %t28, ptr %a32 + call void @finch_str_drop(ptr %a32) + %t33 = load { ptr, i64, i64 }, ptr %a29 + call void @finch_str_drop(ptr %a10) + ret { ptr, i64, i64 } %t33 } define internal { ptr, i64, i64 } @finch.gen.nodeKey(%S.ast.Node %p0) { @@ -23784,25 +26704,33 @@ entry: %a12 = 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 - %a17 = alloca { ptr, i64, i64 }, align 16 %a18 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 + %a19 = 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 + %a27 = 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 + %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 %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = 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 + %a44 = alloca { ptr, i64, i64 }, align 16 + %a45 = alloca { ptr, i64, i64 }, align 16 + %a46 = alloca { ptr, i64, i64 }, align 16 store %S.ast.Node %p0, ptr %a1 %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.1399, i64 1, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.1408, 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 @@ -23812,32 +26740,48 @@ entry: store { ptr, i64, i64 } %t7, 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.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 - %t21 = load i64, ptr %t20 - call void @finch_str_from_int(ptr %a22, i64 %t21) - %t23 = load { ptr, i64, i64 }, ptr %a22 - store { ptr, i64, i64 } %t19, 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.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 - %t33 = load i64, ptr %t32 - call void @finch_str_from_int(ptr %a34, i64 %t33) - %t35 = load { ptr, i64, i64 }, ptr %a34 - store { ptr, i64, i64 } %t31, 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 - ret { ptr, i64, i64 } %t39 + store { ptr, i64, i64 } %t7, ptr %a15 + call void @finch_str_drop(ptr %a15) + store { ptr, i64, i64 } %t11, ptr %a16 + call void @finch_str_drop(ptr %a16) + %t17 = load { ptr, i64, i64 }, ptr %a12 + store { ptr, i64, i64 } %t17, ptr %a19 + store { ptr, i64, i64 } { ptr @.str.1409, i64 1, i64 0 }, ptr %a20 + call void @finch_str_concat(ptr %a18, ptr %a19, ptr %a20) + store { ptr, i64, i64 } %t17, ptr %a21 + call void @finch_str_drop(ptr %a21) + %t22 = load { ptr, i64, i64 }, ptr %a18 + %t23 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 12 + %t24 = load i64, ptr %t23 + call void @finch_str_from_int(ptr %a25, i64 %t24) + %t26 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t22, ptr %a28 + store { ptr, i64, i64 } %t26, ptr %a29 + call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) + store { ptr, i64, i64 } %t22, ptr %a30 + call void @finch_str_drop(ptr %a30) + store { ptr, i64, i64 } %t26, ptr %a31 + call void @finch_str_drop(ptr %a31) + %t32 = load { ptr, i64, i64 }, ptr %a27 + store { ptr, i64, i64 } %t32, ptr %a34 + store { ptr, i64, i64 } { ptr @.str.1410, i64 1, i64 0 }, ptr %a35 + call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) + store { ptr, i64, i64 } %t32, ptr %a36 + call void @finch_str_drop(ptr %a36) + %t37 = load { ptr, i64, i64 }, ptr %a33 + %t38 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 13 + %t39 = load i64, ptr %t38 + call void @finch_str_from_int(ptr %a40, i64 %t39) + %t41 = load { ptr, i64, i64 }, ptr %a40 + store { ptr, i64, i64 } %t37, ptr %a43 + store { ptr, i64, i64 } %t41, ptr %a44 + call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) + store { ptr, i64, i64 } %t37, ptr %a45 + call void @finch_str_drop(ptr %a45) + store { ptr, i64, i64 } %t41, ptr %a46 + call void @finch_str_drop(ptr %a46) + %t47 = load { ptr, i64, i64 }, ptr %a42 + ret { ptr, i64, i64 } %t47 } define internal { ptr, i64, i64 } @finch.gen.zeroOf(%S.ast.Type %p0) { @@ -23865,77 +26809,82 @@ 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.from2409 -logic.from2409: - br i1 %t9, label %logic.end2411, label %logic.rhs2410 -logic.rhs2410: + br label %logic.from2473 +logic.from2473: + br i1 %t9, label %logic.end2475, label %logic.rhs2474 +logic.rhs2474: %t10 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t10, ptr %a11 - store { ptr, i64, i64 } { ptr @.str.1402, i64 4, i64 0 }, ptr %a12 + store { ptr, i64, i64 } { ptr @.str.1411, 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.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: + br label %logic.rend2476 +logic.rend2476: + br label %logic.end2475 +logic.end2475: + %t15 = phi i1 [ true, %logic.from2473 ], [ %t14, %logic.rend2476 ] + br label %logic.from2477 +logic.from2477: + br i1 %t15, label %logic.end2479, label %logic.rhs2478 +logic.rhs2478: %t16 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t16, ptr %a17 - store { ptr, i64, i64 } { ptr @.str.1403, i64 4, i64 0 }, ptr %a18 + store { ptr, i64, i64 } { ptr @.str.1412, 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.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: + br label %logic.rend2480 +logic.rend2480: + br label %logic.end2479 +logic.end2479: + %t21 = phi i1 [ true, %logic.from2477 ], [ %t20, %logic.rend2480 ] + br i1 %t21, label %then2481, label %endif2483 +then2481: + call void @finch_str_drop(ptr %a7) + ret { ptr, i64, i64 } { ptr @.str.1413, i64 1, i64 0 } +endif2483: %t22 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t22, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.1405, i64 4, i64 0 }, ptr %a24 + store { ptr, i64, i64 } { ptr @.str.1414, 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 %then2420, label %endif2422 -then2420: - ret { ptr, i64, i64 } { ptr @.str.1406, i64 5, i64 0 } -endif2422: + br i1 %t26, label %then2484, label %endif2486 +then2484: + call void @finch_str_drop(ptr %a7) + ret { ptr, i64, i64 } { ptr @.str.1415, i64 5, i64 0 } +endif2486: %t27 = load %S.ast.Type, ptr %a1 %t28 = call i1 @finch.gen.isFloat(%S.ast.Type %t27) - br i1 %t28, label %then2423, label %endif2425 -then2423: - ret { ptr, i64, i64 } { ptr @.str.1407, i64 3, i64 0 } -endif2425: + br i1 %t28, label %then2487, label %endif2489 +then2487: + call void @finch_str_drop(ptr %a7) + ret { ptr, i64, i64 } { ptr @.str.1416, i64 3, i64 0 } +endif2489: %t29 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t29, ptr %a30 - store { ptr, i64, i64 } { ptr @.str.1408, i64 3, i64 0 }, ptr %a31 + store { ptr, i64, i64 } { ptr @.str.1417, 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.from2426 -logic.from2426: - br i1 %t33, label %logic.end2428, label %logic.rhs2427 -logic.rhs2427: + br label %logic.from2490 +logic.from2490: + br i1 %t33, label %logic.end2492, label %logic.rhs2491 +logic.rhs2491: %t34 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t34, ptr %a35 - store { ptr, i64, i64 } { ptr @.str.1409, i64 4, i64 0 }, ptr %a36 + store { ptr, i64, i64 } { ptr @.str.1418, 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.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 } + br label %logic.rend2493 +logic.rend2493: + br label %logic.end2492 +logic.end2492: + %t39 = phi i1 [ true, %logic.from2490 ], [ %t38, %logic.rend2493 ] + br i1 %t39, label %then2494, label %endif2496 +then2494: + call void @finch_str_drop(ptr %a7) + ret { ptr, i64, i64 } { ptr @.str.1419, i64 4, i64 0 } +endif2496: + call void @finch_str_drop(ptr %a7) + ret { ptr, i64, i64 } { ptr @.str.1420, i64 15, i64 0 } } define internal { ptr, i64, i64 } @finch.gen.sizeOf(ptr %p0, %S.ast.Type %p1) { @@ -23945,23 +26894,29 @@ entry: %a6 = alloca { ptr, i64, i64 }, align 16 %a7 = alloca { ptr, i64, i64 }, align 16 %a8 = alloca { ptr, i64, i64 }, align 16 - %a10 = 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 + %a14 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store %S.ast.Type %p1, ptr %a2 %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.1412, i64 29, i64 0 }, ptr %a7 + store { ptr, i64, i64 } { ptr @.str.1421, 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.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 + store { ptr, i64, i64 } %t5, ptr %a9 + call void @finch_str_drop(ptr %a9) + %t10 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t10, ptr %a12 + store { ptr, i64, i64 } { ptr @.str.1422, i64 26, i64 0 }, ptr %a13 + call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13) + store { ptr, i64, i64 } %t10, ptr %a14 + call void @finch_str_drop(ptr %a14) + %t15 = load { ptr, i64, i64 }, ptr %a11 + ret { ptr, i64, i64 } %t15 } define internal i1 @finch.gen.owning(ptr %p0, %S.ast.Type %p1) { @@ -23981,59 +26936,59 @@ 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.1414, i64 3, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.1423, 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.from2433 -logic.from2433: - br i1 %t8, label %logic.end2435, label %logic.rhs2434 -logic.rhs2434: + br label %logic.from2497 +logic.from2497: + br i1 %t8, label %logic.end2499, label %logic.rhs2498 +logic.rhs2498: %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.1415, i64 5, i64 0 }, ptr %a12 + store { ptr, i64, i64 } { ptr @.str.1424, 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.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: + br label %logic.rend2500 +logic.rend2500: + br label %logic.end2499 +logic.end2499: + %t15 = phi i1 [ true, %logic.from2497 ], [ %t14, %logic.rend2500 ] + br label %logic.from2501 +logic.from2501: + br i1 %t15, label %logic.end2503, label %logic.rhs2502 +logic.rhs2502: %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.1416, i64 3, i64 0 }, ptr %a19 + store { ptr, i64, i64 } { ptr @.str.1425, 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.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: + br label %logic.rend2504 +logic.rend2504: + br label %logic.end2503 +logic.end2503: + %t22 = phi i1 [ true, %logic.from2501 ], [ %t21, %logic.rend2504 ] + br i1 %t22, label %then2505, label %endif2507 +then2505: ret i1 true -endif2443: +endif2507: %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.1417, i64 6, i64 0 }, ptr %a26 + store { ptr, i64, i64 } { ptr @.str.1426, 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 %then2444, label %endif2446 -then2444: + br i1 %t28, label %then2508, label %endif2510 +then2508: %t29 = load ptr, ptr %a1 %t30 = icmp eq ptr %t29, null - br i1 %t30, label %panic2447, label %ok2448 -panic2447: - call void @finch_panic(ptr @.str.1418, i64 644, ptr @.str.1419) + br i1 %t30, label %panic2511, label %ok2512 +panic2511: + call void @finch_panic(ptr @.str.1427, i64 664, ptr @.str.1428) unreachable -ok2448: - %t31 = getelementptr inbounds %S.gen.Gen, ptr %t29, i32 0, i32 15 +ok2512: + %t31 = getelementptr inbounds %S.gen.Gen, ptr %t29, i32 0, i32 16 %t32 = load ptr, ptr %a1 %t33 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 %t34 = load { ptr, i64, i64 }, ptr %t33 @@ -24043,17 +26998,17 @@ ok2448: %t38 = load { ptr, i64, i64 }, ptr %t31 %t39 = extractvalue { ptr, i64, i64 } %t38, 1 %t40 = icmp uge i64 %t37, %t39 - br i1 %t40, label %range2449, label %inrange2450 -range2449: - call void @finch_panic_index(ptr @.str.1420, i64 644, i64 %t37, i64 %t39) + br i1 %t40, label %range2513, label %inrange2514 +range2513: + call void @finch_panic_index(ptr @.str.1429, i64 664, i64 %t37, i64 %t39) unreachable -inrange2450: +inrange2514: %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 -endif2446: +endif2510: ret i1 false } @@ -24065,178 +27020,214 @@ entry: %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 + %a19 = alloca { ptr, i64, i64 }, align 16 %a23 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 + %a24 = 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 %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 %a40 = 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 + %a41 = alloca { ptr, i64, i64 }, align 16 + %a42 = alloca { ptr, i64, i64 }, align 16 + %a43 = 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 %a56 = alloca { ptr, i64, i64 }, align 16 %a57 = 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 + %a61 = alloca { ptr, i64, i64 }, align 16 + %a62 = 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 + %a71 = alloca { ptr, i64, i64 }, align 16 %a73 = alloca { ptr, i64, i64 }, align 16 %a74 = alloca { ptr, i64, i64 }, align 16 %a75 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 + %a76 = alloca { ptr, i64, i64 }, align 16 %a80 = alloca { ptr, i64, i64 }, align 16 - %a86 = 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 %a87 = alloca { ptr, i64, i64 }, align 16 %a88 = 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 + %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 - %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 + %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 + %a110 = alloca { ptr, i64, i64 }, align 16 + %a111 = alloca { ptr, i64, i64 }, align 16 + %a115 = alloca { ptr, i64, i64 }, align 16 + %a116 = alloca { ptr, i64, i64 }, align 16 store %S.ast.Type %p0, ptr %a1 %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.1421, i64 5, i64 0 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.1430, 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 %then2451, label %endif2453 -then2451: + br i1 %t7, label %then2515, label %endif2517 +then2515: %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 %range2454, label %inrange2455 -range2454: - call void @finch_panic_index(ptr @.str.1423, i64 651, i64 0, i64 %t10) + br i1 %t11, label %range2518, label %inrange2519 +range2518: + call void @finch_panic_index(ptr @.str.1432, i64 671, i64 0, i64 %t10) unreachable -inrange2455: +inrange2519: %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.1422, i64 4, i64 0 }, ptr %a17 + store { ptr, i64, i64 } { ptr @.str.1431, 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 -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.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 %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 %range2459, label %inrange2460 -range2459: - call void @finch_panic_index(ptr @.str.1426, i64 654, i64 0, i64 %t28) + store { ptr, i64, i64 } %t15, ptr %a19 + call void @finch_str_drop(ptr %a19) + %t20 = load { ptr, i64, i64 }, ptr %a16 + ret { ptr, i64, i64 } %t20 +endif2517: + %t21 = getelementptr inbounds %S.ast.Type, 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.1433, 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 %then2520, label %endif2522 +then2520: + %t27 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 + %t28 = load { ptr, i64, i64 }, ptr %t27 + %t29 = extractvalue { ptr, i64, i64 } %t28, 1 + %t30 = icmp uge i64 0, %t29 + br i1 %t30, label %range2523, label %inrange2524 +range2523: + call void @finch_panic_index(ptr @.str.1435, i64 674, i64 0, i64 %t29) unreachable -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.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.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 %range2461, label %inrange2462 -range2461: - call void @finch_panic_index(ptr @.str.1428, i64 654, i64 1, i64 %t44) +inrange2524: + %t31 = extractvalue { ptr, i64, i64 } %t28, 0 + %t32 = getelementptr inbounds %S.ast.Type, ptr %t31, i64 0 + %t33 = load %S.ast.Type, ptr %t32 + %t34 = call { ptr, i64, i64 } @finch.gen.typeKey(%S.ast.Type %t33) + store { ptr, i64, i64 } { ptr @.str.1434, i64 4, i64 0 }, ptr %a36 + store { ptr, i64, i64 } %t34, ptr %a37 + call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) + store { ptr, i64, i64 } %t34, ptr %a38 + call void @finch_str_drop(ptr %a38) + %t39 = load { ptr, i64, i64 }, ptr %a35 + store { ptr, i64, i64 } %t39, ptr %a41 + store { ptr, i64, i64 } { ptr @.str.1436, i64 1, i64 0 }, ptr %a42 + call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) + store { ptr, i64, i64 } %t39, ptr %a43 + call void @finch_str_drop(ptr %a43) + %t44 = load { ptr, i64, i64 }, ptr %a40 + %t45 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 + %t46 = load { ptr, i64, i64 }, ptr %t45 + %t47 = extractvalue { ptr, i64, i64 } %t46, 1 + %t48 = icmp uge i64 1, %t47 + br i1 %t48, label %range2525, label %inrange2526 +range2525: + call void @finch_panic_index(ptr @.str.1437, i64 674, i64 1, i64 %t47) unreachable -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 - %t49 = call { ptr, i64, i64 } @finch.gen.typeKey(%S.ast.Type %t48) - store { ptr, i64, i64 } %t41, 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 -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.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 %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.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.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 - %t72 = load { ptr, i64, i64 }, ptr %t71 - store { ptr, i64, i64 } %t70, ptr %a74 - store { ptr, i64, i64 } %t72, ptr %a75 +inrange2526: + %t49 = extractvalue { ptr, i64, i64 } %t46, 0 + %t50 = getelementptr inbounds %S.ast.Type, ptr %t49, i64 1 + %t51 = load %S.ast.Type, ptr %t50 + %t52 = call { ptr, i64, i64 } @finch.gen.typeKey(%S.ast.Type %t51) + store { ptr, i64, i64 } %t44, ptr %a54 + store { ptr, i64, i64 } %t52, ptr %a55 + call void @finch_str_concat(ptr %a53, ptr %a54, ptr %a55) + store { ptr, i64, i64 } %t44, ptr %a56 + call void @finch_str_drop(ptr %a56) + store { ptr, i64, i64 } %t52, ptr %a57 + call void @finch_str_drop(ptr %a57) + %t58 = load { ptr, i64, i64 }, ptr %a53 + ret { ptr, i64, i64 } %t58 +endif2522: + %t59 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 + %t60 = load { ptr, i64, i64 }, ptr %t59 + store { ptr, i64, i64 } %t60, ptr %a61 + store { ptr, i64, i64 } { ptr @.str.1438, i64 4, i64 0 }, ptr %a62 + %t63 = call i32 @finch_str_eq(ptr %a61, ptr %a62) + %t64 = icmp ne i32 %t63, 0 + br i1 %t64, label %then2527, label %endif2529 +then2527: + %t65 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 3 + %t66 = load { ptr, i64, i64 }, ptr %t65 + %t67 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t66) + store { ptr, i64, i64 } { ptr @.str.1439, i64 2, i64 0 }, ptr %a69 + store { ptr, i64, i64 } %t67, ptr %a70 + call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70) + store { ptr, i64, i64 } %t67, ptr %a71 + call void @finch_str_drop(ptr %a71) + %t72 = load { ptr, i64, i64 }, ptr %a68 + store { ptr, i64, i64 } %t72, ptr %a74 + store { ptr, i64, i64 } { ptr @.str.1440, i64 1, 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 -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.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 %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.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.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 - %t95 = load { ptr, i64, i64 }, ptr %t94 - %t96 = call { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %t95) - store { ptr, i64, i64 } %t93, 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 - ret { ptr, i64, i64 } %t100 -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 - call void @finch_str_copy(ptr %a104, ptr %a103) - %t105 = load { ptr, i64, i64 }, ptr %a104 - ret { ptr, i64, i64 } %t105 + store { ptr, i64, i64 } %t72, ptr %a76 + call void @finch_str_drop(ptr %a76) + %t77 = load { ptr, i64, i64 }, ptr %a73 + %t78 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 2 + %t79 = load { ptr, i64, i64 }, ptr %t78 + store { ptr, i64, i64 } %t77, ptr %a81 + store { ptr, i64, i64 } %t79, ptr %a82 + call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82) + store { ptr, i64, i64 } %t77, ptr %a83 + call void @finch_str_drop(ptr %a83) + %t84 = load { ptr, i64, i64 }, ptr %a80 + ret { ptr, i64, i64 } %t84 +endif2529: + %t85 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 + %t86 = load { ptr, i64, i64 }, ptr %t85 + store { ptr, i64, i64 } %t86, ptr %a87 + store { ptr, i64, i64 } { ptr @.str.1441, i64 6, i64 0 }, ptr %a88 + %t89 = call i32 @finch_str_eq(ptr %a87, ptr %a88) + %t90 = icmp ne i32 %t89, 0 + br i1 %t90, label %then2530, label %endif2532 +then2530: + %t91 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 3 + %t92 = load { ptr, i64, i64 }, ptr %t91 + %t93 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t92) + store { ptr, i64, i64 } { ptr @.str.1442, i64 2, i64 0 }, ptr %a95 + store { ptr, i64, i64 } %t93, ptr %a96 + call void @finch_str_concat(ptr %a94, ptr %a95, ptr %a96) + store { ptr, i64, i64 } %t93, ptr %a97 + call void @finch_str_drop(ptr %a97) + %t98 = load { ptr, i64, i64 }, ptr %a94 + store { ptr, i64, i64 } %t98, ptr %a100 + store { ptr, i64, i64 } { ptr @.str.1443, i64 1, i64 0 }, ptr %a101 + call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) + store { ptr, i64, i64 } %t98, ptr %a102 + call void @finch_str_drop(ptr %a102) + %t103 = load { ptr, i64, i64 }, ptr %a99 + %t104 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 2 + %t105 = load { ptr, i64, i64 }, ptr %t104 + %t106 = call { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %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) + store { ptr, i64, i64 } %t103, ptr %a110 + call void @finch_str_drop(ptr %a110) + store { ptr, i64, i64 } %t106, ptr %a111 + call void @finch_str_drop(ptr %a111) + %t112 = load { ptr, i64, i64 }, ptr %a107 + ret { ptr, i64, i64 } %t112 +endif2532: + %t113 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 + %t114 = load { ptr, i64, i64 }, ptr %t113 + store { ptr, i64, i64 } %t114, ptr %a115 + call void @finch_str_copy(ptr %a116, ptr %a115) + %t117 = load { ptr, i64, i64 }, ptr %a116 + ret { ptr, i64, i64 } %t117 } define internal { ptr, i64, i64 } @finch.gen.hex(i64 %p0) { @@ -24248,18 +27239,20 @@ entry: %a23 = 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 + %a27 = alloca { ptr, i64, i64 }, align 16 store i64 %p0, ptr %a1 - store { ptr, i64, i64 } { ptr @.str.1435, i64 16, i64 0 }, ptr %a2 + store { ptr, i64, i64 } { ptr @.str.1444, 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 %range2469, label %inrange2470 -range2469: - call void @finch_panic_index(ptr @.str.1436, i64 669, i64 %t4, i64 %t6) + br i1 %t7, label %range2533, label %inrange2534 +range2533: + call void @finch_panic_index(ptr @.str.1445, i64 689, i64 %t4, i64 %t6) unreachable -inrange2470: +inrange2534: %t8 = extractvalue { ptr, i64, i64 } %t5, 0 %t9 = getelementptr inbounds i8, ptr %t8, i64 %t4 %t10 = load i8, ptr %t9 @@ -24270,11 +27263,11 @@ inrange2470: %t15 = load { ptr, i64, i64 }, ptr %a2 %t16 = extractvalue { ptr, i64, i64 } %t15, 1 %t17 = icmp uge i64 %t14, %t16 - br i1 %t17, label %range2471, label %inrange2472 -range2471: - call void @finch_panic_index(ptr @.str.1437, i64 669, i64 %t14, i64 %t16) + br i1 %t17, label %range2535, label %inrange2536 +range2535: + call void @finch_panic_index(ptr @.str.1446, i64 689, i64 %t14, i64 %t16) unreachable -inrange2472: +inrange2536: %t18 = extractvalue { ptr, i64, i64 } %t15, 0 %t19 = getelementptr inbounds i8, ptr %t18, i64 %t14 %t20 = load i8, ptr %t19 @@ -24283,8 +27276,13 @@ inrange2472: store { ptr, i64, i64 } %t12, 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 - ret { ptr, i64, i64 } %t26 + store { ptr, i64, i64 } %t12, ptr %a26 + call void @finch_str_drop(ptr %a26) + store { ptr, i64, i64 } %t22, ptr %a27 + call void @finch_str_drop(ptr %a27) + %t28 = load { ptr, i64, i64 }, ptr %a23 + call void @finch_str_drop(ptr %a2) + ret { ptr, i64, i64 } %t28 } define internal { ptr, i64, i64 } @finch.gen.strGlobal(ptr %p0, { ptr, i64, i64 } %p1) { @@ -24295,214 +27293,234 @@ entry: %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 + %a17 = alloca { ptr, i64, i64 }, align 16 %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca i64, align 16 - %a28 = alloca i8, align 16 - %a31 = alloca i64, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 + %a20 = alloca { ptr, i64, i64 }, align 16 + %a21 = alloca i64, align 16 + %a29 = alloca i8, align 16 + %a32 = alloca i64, align 16 + %a50 = alloca { ptr, i64, i64 }, align 16 %a59 = alloca { ptr, i64, i64 }, align 16 %a60 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 + %a61 = alloca { ptr, i64, i64 }, align 16 + %a62 = alloca { ptr, i64, i64 }, align 16 %a75 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 + %a76 = alloca { ptr, i64, i64 }, align 16 + %a77 = 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 { ptr, i64, i64 }, align 16 %a86 = alloca { ptr, i64, i64 }, align 16 %a87 = alloca { ptr, i64, i64 }, align 16 %a88 = 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 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 + %a93 = alloca { ptr, i64, i64 }, align 16 %a96 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 + %a97 = 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 + %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 %a108 = 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 %panic2473, label %ok2474 -panic2473: - call void @finch_panic(ptr @.str.1438, i64 673, ptr @.str.1439) + br i1 %t4, label %panic2537, label %ok2538 +panic2537: + call void @finch_panic(ptr @.str.1447, i64 693, ptr @.str.1448) unreachable -ok2474: +ok2538: %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 %panic2475, label %ok2476 -panic2475: - call void @finch_panic(ptr @.str.1441, i64 674, ptr @.str.1442) + br i1 %t9, label %panic2539, label %ok2540 +panic2539: + call void @finch_panic(ptr @.str.1450, i64 694, ptr @.str.1451) unreachable -ok2476: +ok2540: %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.1440, i64 6, i64 0 }, ptr %a15 + store { ptr, i64, i64 } { ptr @.str.1449, 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.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.body2478, label %each.end2480 -each.body2478: - %t25 = load ptr, ptr %a2 - %t26 = getelementptr inbounds i8, ptr %t25, i64 %t23 - %t27 = load i8, ptr %t26 - store i8 %t27, ptr %a28 - %t29 = load i8, ptr %a28 - %t30 = zext i8 %t29 to i64 - store i64 %t30, ptr %a31 - %t32 = load i64, ptr %a31 - %t33 = icmp slt i64 %t32, 0 - 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 %endif2483 -endif2483: - %t36 = load i64, ptr %a31 - %t37 = icmp sge i64 %t36, 32 - 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.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.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.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) - %t50 = load { ptr, i64, i64 }, ptr %a49 - %t51 = load i64, ptr %t47 - %t52 = add i64 %t51, 1 - call void @finch_arr_reserve(ptr %a19, i64 %t52, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t53 = load ptr, ptr %a19 - %t54 = getelementptr inbounds { ptr, i64, i64 }, ptr %t53, i64 %t51 - store { ptr, i64, i64 } %t50, ptr %t54 - store i64 %t52, ptr %t47 - 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.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 - %t62 = load i64, ptr %t55 - %t63 = add i64 %t62, 1 - call void @finch_arr_reserve(ptr %a19, i64 %t63, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t64 = load ptr, ptr %a19 - %t65 = getelementptr inbounds { ptr, i64, i64 }, ptr %t64, i64 %t62 - store { ptr, i64, i64 } %t61, ptr %t65 - store i64 %t63, ptr %t55 - 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.cond2477 -each.end2480: - %t68 = load ptr, ptr %a1 - %t69 = icmp eq ptr %t68, null - br i1 %t69, label %panic2499, label %ok2500 -panic2499: - call void @finch_panic(ptr @.str.1444, i64 687, ptr @.str.1445) + store { ptr, i64, i64 } %t13, ptr %a17 + call void @finch_str_drop(ptr %a17) + %t18 = load { ptr, i64, i64 }, ptr %a14 + store { ptr, i64, i64 } %t18, ptr %a19 + store { ptr, i64, i64 } zeroinitializer, ptr %a20 + store i64 0, ptr %a21 + br label %each.cond2541 +each.cond2541: + %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t23 = load i64, ptr %t22 + %t24 = load i64, ptr %a21 + %t25 = icmp slt i64 %t24, %t23 + br i1 %t25, label %each.body2542, label %each.end2544 +each.body2542: + %t26 = load ptr, ptr %a2 + %t27 = getelementptr inbounds i8, ptr %t26, i64 %t24 + %t28 = load i8, ptr %t27 + store i8 %t28, ptr %a29 + %t30 = load i8, ptr %a29 + %t31 = zext i8 %t30 to i64 + store i64 %t31, ptr %a32 + %t33 = load i64, ptr %a32 + %t34 = icmp slt i64 %t33, 0 + br i1 %t34, label %then2545, label %endif2547 +then2545: + %t35 = load i64, ptr %a32 + %t36 = add i64 %t35, 256 + store i64 %t36, ptr %a32 + br label %endif2547 +endif2547: + %t37 = load i64, ptr %a32 + %t38 = icmp sge i64 %t37, 32 + br label %logic.from2548 +logic.from2548: + br i1 %t38, label %logic.rhs2549, label %logic.end2550 +logic.rhs2549: + %t39 = load i64, ptr %a32 + %t40 = icmp slt i64 %t39, 127 + br label %logic.rend2551 +logic.rend2551: + br label %logic.end2550 +logic.end2550: + %t41 = phi i1 [ false, %logic.from2548 ], [ %t40, %logic.rend2551 ] + br label %logic.from2552 +logic.from2552: + br i1 %t41, label %logic.rhs2553, label %logic.end2554 +logic.rhs2553: + %t42 = load i8, ptr %a29 + %t43 = icmp ne i8 %t42, 34 + br label %logic.rend2555 +logic.rend2555: + br label %logic.end2554 +logic.end2554: + %t44 = phi i1 [ false, %logic.from2552 ], [ %t43, %logic.rend2555 ] + br label %logic.from2556 +logic.from2556: + br i1 %t44, label %logic.rhs2557, label %logic.end2558 +logic.rhs2557: + %t45 = load i8, ptr %a29 + %t46 = icmp ne i8 %t45, 92 + br label %logic.rend2559 +logic.rend2559: + br label %logic.end2558 +logic.end2558: + %t47 = phi i1 [ false, %logic.from2556 ], [ %t46, %logic.rend2559 ] + br i1 %t47, label %then2560, label %else2561 +then2560: + %t48 = getelementptr inbounds { ptr, i64, i64 }, ptr %a20, i32 0, i32 1 + %t49 = load i8, ptr %a29 + 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 %a20, i64 %t53, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t54 = load ptr, ptr %a20 + %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %t54, i64 %t52 + store { ptr, i64, i64 } %t51, ptr %t55 + store i64 %t53, ptr %t48 + br label %endif2562 +else2561: + %t56 = getelementptr inbounds { ptr, i64, i64 }, ptr %a20, i32 0, i32 1 + %t57 = load i64, ptr %a32 + %t58 = call { ptr, i64, i64 } @finch.gen.hex(i64 %t57) + store { ptr, i64, i64 } { ptr @.str.1452, i64 1, i64 0 }, ptr %a60 + store { ptr, i64, i64 } %t58, ptr %a61 + call void @finch_str_concat(ptr %a59, ptr %a60, ptr %a61) + store { ptr, i64, i64 } %t58, ptr %a62 + call void @finch_str_drop(ptr %a62) + %t63 = load { ptr, i64, i64 }, ptr %a59 + %t64 = load i64, ptr %t56 + %t65 = add i64 %t64, 1 + call void @finch_arr_reserve(ptr %a20, i64 %t65, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t66 = load ptr, ptr %a20 + %t67 = getelementptr inbounds { ptr, i64, i64 }, ptr %t66, i64 %t64 + store { ptr, i64, i64 } %t63, ptr %t67 + store i64 %t65, ptr %t56 + br label %endif2562 +endif2562: + br label %each.step2543 +each.step2543: + %t68 = load i64, ptr %a21 + %t69 = add i64 %t68, 1 + store i64 %t69, ptr %a21 + br label %each.cond2541 +each.end2544: + %t70 = load ptr, ptr %a1 + %t71 = icmp eq ptr %t70, null + br i1 %t71, label %panic2563, label %ok2564 +panic2563: + call void @finch_panic(ptr @.str.1453, i64 707, ptr @.str.1454) unreachable -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.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 - %t78 = load i64, ptr %t77 - %t79 = add i64 %t78, 1 - call void @finch_str_from_int(ptr %a80, i64 %t79) - %t81 = load { ptr, i64, i64 }, ptr %a80 - store { ptr, i64, i64 } %t76, 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.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.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 - 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.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 - %t103 = add i64 %t102, 1 - call void @finch_arr_reserve(ptr %t70, i64 %t103, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t104 = load ptr, ptr %t70 - %t105 = getelementptr inbounds { ptr, i64, i64 }, ptr %t104, i64 %t102 - store { ptr, i64, i64 } %t101, ptr %t105 - store i64 %t103, ptr %t71 - %t106 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t106, ptr %a107 - call void @finch_str_copy(ptr %a108, ptr %a107) - %t109 = load { ptr, i64, i64 }, ptr %a108 - ret { ptr, i64, i64 } %t109 +ok2564: + %t72 = getelementptr inbounds %S.gen.Gen, ptr %t70, i32 0, i32 2 + %t73 = getelementptr inbounds { ptr, i64, i64 }, ptr %t72, i32 0, i32 1 + %t74 = load { ptr, i64, i64 }, ptr %a19 + store { ptr, i64, i64 } %t74, ptr %a76 + store { ptr, i64, i64 } { ptr @.str.1455, i64 34, i64 0 }, ptr %a77 + call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77) + %t78 = load { ptr, i64, i64 }, ptr %a75 + %t79 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t80 = load i64, ptr %t79 + %t81 = add i64 %t80, 1 + call void @finch_str_from_int(ptr %a82, i64 %t81) + %t83 = load { ptr, i64, i64 }, ptr %a82 + store { ptr, i64, i64 } %t78, ptr %a85 + store { ptr, i64, i64 } %t83, ptr %a86 + call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) + store { ptr, i64, i64 } %t78, ptr %a87 + call void @finch_str_drop(ptr %a87) + store { ptr, i64, i64 } %t83, ptr %a88 + call void @finch_str_drop(ptr %a88) + %t89 = load { ptr, i64, i64 }, ptr %a84 + store { ptr, i64, i64 } %t89, ptr %a91 + store { ptr, i64, i64 } { ptr @.str.1456, i64 9, i64 0 }, ptr %a92 + call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92) + store { ptr, i64, i64 } %t89, ptr %a93 + call void @finch_str_drop(ptr %a93) + %t94 = load { ptr, i64, i64 }, ptr %a90 + %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %a20, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.1457, i64 0, i64 0 }, ptr %a96 + call void @finch_str_join(ptr %a97, ptr %a20, ptr %a96) + %t98 = load { ptr, i64, i64 }, ptr %a97 + 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) + store { ptr, i64, i64 } %t94, ptr %a102 + call void @finch_str_drop(ptr %a102) + store { ptr, i64, i64 } %t98, ptr %a103 + call void @finch_str_drop(ptr %a103) + %t104 = load { ptr, i64, i64 }, ptr %a99 + store { ptr, i64, i64 } %t104, ptr %a106 + store { ptr, i64, i64 } { ptr @.str.1458, i64 4, i64 0 }, ptr %a107 + call void @finch_str_concat(ptr %a105, ptr %a106, ptr %a107) + store { ptr, i64, i64 } %t104, ptr %a108 + call void @finch_str_drop(ptr %a108) + %t109 = load { ptr, i64, i64 }, ptr %a105 + %t110 = load i64, ptr %t73 + %t111 = add i64 %t110, 1 + call void @finch_arr_reserve(ptr %t72, i64 %t111, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t112 = load ptr, ptr %t72 + %t113 = getelementptr inbounds { ptr, i64, i64 }, ptr %t112, i64 %t110 + store { ptr, i64, i64 } %t109, ptr %t113 + store i64 %t111, ptr %t73 + %t114 = load { ptr, i64, i64 }, ptr %a19 + call void @finch.drop.arr_str(ptr %a20) + ret { ptr, i64, i64 } %t114 } define internal %S.gen.Val @finch.gen.strConst(ptr %p0, { ptr, i64, i64 } %p1) { @@ -24516,13 +27534,17 @@ entry: %a12 = alloca { ptr, i64, i64 }, align 16 %a13 = alloca { ptr, i64, i64 }, align 16 %a14 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 + %a15 = 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 %a24 = alloca { ptr, i64, i64 }, align 16 %a25 = 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 + %a30 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store { ptr, i64, i64 } %p1, ptr %a2 %t3 = load ptr, ptr %a1 @@ -24530,31 +27552,40 @@ 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.1450, i64 6, i64 0 }, ptr %a9 + store { ptr, i64, i64 } { ptr @.str.1459, 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.1451, i64 6, i64 0 }, ptr %a14 + store { ptr, i64, i64 } { ptr @.str.1460, 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 - %t17 = load i64, ptr %t16 - call void @finch_str_from_int(ptr %a18, i64 %t17) - %t19 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t15, 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.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.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 + store { ptr, i64, i64 } %t11, ptr %a15 + call void @finch_str_drop(ptr %a15) + %t16 = load { ptr, i64, i64 }, ptr %a12 + %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t18 = load i64, ptr %t17 + call void @finch_str_from_int(ptr %a19, i64 %t18) + %t20 = load { ptr, i64, i64 }, ptr %a19 + store { ptr, i64, i64 } %t16, ptr %a22 + store { ptr, i64, i64 } %t20, ptr %a23 + call void @finch_str_concat(ptr %a21, ptr %a22, ptr %a23) + store { ptr, i64, i64 } %t16, ptr %a24 + call void @finch_str_drop(ptr %a24) + store { ptr, i64, i64 } %t20, ptr %a25 + call void @finch_str_drop(ptr %a25) + %t26 = load { ptr, i64, i64 }, ptr %a21 + store { ptr, i64, i64 } %t26, ptr %a28 + store { ptr, i64, i64 } { ptr @.str.1461, i64 9, i64 0 }, ptr %a29 + call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) + store { ptr, i64, i64 } %t26, ptr %a30 + call void @finch_str_drop(ptr %a30) + %t31 = load { ptr, i64, i64 }, ptr %a27 + %t32 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t31, 0 + %t33 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1462, i64 3, i64 0 }) + %t34 = insertvalue %S.gen.Val %t32, %S.ast.Type %t33, 1 + %t35 = insertvalue %S.gen.Val %t34, i1 true, 2 + call void @finch_str_drop(ptr %a6) + ret %S.gen.Val %t35 } define internal void @finch.gen.panicIf(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, %S.ast.Node %p3) { @@ -24573,28 +27604,35 @@ entry: %a41 = alloca { ptr, i64, i64 }, align 16 %a42 = alloca { ptr, i64, i64 }, align 16 %a43 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 + %a44 = 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 %a53 = alloca { ptr, i64, i64 }, align 16 %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = 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 %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 %a62 = 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 + %a70 = 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 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.1454, i64 5, i64 0 }) + %t6 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t5, { ptr, i64, i64 } { ptr @.str.1463, 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.1455, i64 2, i64 0 }) + %t9 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t8, { ptr, i64, i64 } { ptr @.str.1464, i64 2, i64 0 }) store { ptr, i64, i64 } %t9, ptr %a10 %t11 = load ptr, ptr %a1 %t12 = load { ptr, i64, i64 }, ptr %a2 @@ -24607,22 +27645,22 @@ entry: %t17 = load ptr, ptr %a1 %t18 = load ptr, ptr %a1 %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic2501, label %ok2502 -panic2501: - call void @finch_panic(ptr @.str.1456, i64 703, ptr @.str.1457) + br i1 %t19, label %panic2565, label %ok2566 +panic2565: + call void @finch_panic(ptr @.str.1465, i64 723, ptr @.str.1466) unreachable -ok2502: +ok2566: %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 %range2503, label %inrange2504 -range2503: - call void @finch_panic_index(ptr @.str.1458, i64 703, i64 %t22, i64 %t24) + br i1 %t25, label %range2567, label %inrange2568 +range2567: + call void @finch_panic_index(ptr @.str.1467, i64 723, i64 %t22, i64 %t24) unreachable -inrange2504: +inrange2568: %t26 = extractvalue { ptr, i64, i64 } %t23, 0 %t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %t26, i64 %t22 %t28 = load { ptr, i64, i64 }, ptr %t27 @@ -24634,50 +27672,68 @@ inrange2504: 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.1459, i64 27, i64 0 }, ptr %a38 + store { ptr, i64, i64 } { ptr @.str.1468, 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.1460, i64 6, i64 0 }, ptr %a43 + store { ptr, i64, i64 } { ptr @.str.1469, 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 - %t46 = load i64, ptr %t45 - call void @finch_str_from_int(ptr %a47, i64 %t46) - %t48 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } %t44, 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.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 - store { ptr, i64, i64 } %t56, 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.1462, i64 1, i64 0 }, ptr %a64 + store { ptr, i64, i64 } %t40, ptr %a44 + call void @finch_str_drop(ptr %a44) + %t45 = load { ptr, i64, i64 }, ptr %a41 + %t46 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 11 + %t47 = load i64, ptr %t46 + call void @finch_str_from_int(ptr %a48, i64 %t47) + %t49 = load { ptr, i64, i64 }, ptr %a48 + store { ptr, i64, i64 } %t45, ptr %a51 + store { ptr, i64, i64 } %t49, ptr %a52 + call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) + store { ptr, i64, i64 } %t45, ptr %a53 + call void @finch_str_drop(ptr %a53) + store { ptr, i64, i64 } %t49, ptr %a54 + call void @finch_str_drop(ptr %a54) + %t55 = load { ptr, i64, i64 }, ptr %a50 + store { ptr, i64, i64 } %t55, ptr %a57 + store { ptr, i64, i64 } { ptr @.str.1470, i64 6, i64 0 }, ptr %a58 + call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) + store { ptr, i64, i64 } %t55, ptr %a59 + call void @finch_str_drop(ptr %a59) + %t60 = load { ptr, i64, i64 }, ptr %a56 + %t61 = load { ptr, i64, i64 }, ptr %a34 + store { ptr, i64, i64 } %t60, 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 - 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.1463, i64 11, i64 0 }) - %t67 = load ptr, ptr %a1 - %t68 = icmp eq ptr %t67, null - br i1 %t68, label %panic2505, label %ok2506 -panic2505: - call void @finch_panic(ptr @.str.1464, i64 707, ptr @.str.1465) + store { ptr, i64, i64 } %t60, ptr %a65 + call void @finch_str_drop(ptr %a65) + %t66 = load { ptr, i64, i64 }, ptr %a62 + store { ptr, i64, i64 } %t66, ptr %a68 + store { ptr, i64, i64 } { ptr @.str.1471, i64 1, i64 0 }, ptr %a69 + call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) + store { ptr, i64, i64 } %t66, ptr %a70 + call void @finch_str_drop(ptr %a70) + %t71 = load { ptr, i64, i64 }, ptr %a67 + call void @finch.gen.emit(ptr %t35, { ptr, i64, i64 } %t71) + store { ptr, i64, i64 } %t71, ptr %a72 + call void @finch_str_drop(ptr %a72) + %t73 = load ptr, ptr %a1 + call void @finch.gen.emit(ptr %t73, { ptr, i64, i64 } { ptr @.str.1472, i64 11, i64 0 }) + %t74 = load ptr, ptr %a1 + %t75 = icmp eq ptr %t74, null + br i1 %t75, label %panic2569, label %ok2570 +panic2569: + call void @finch_panic(ptr @.str.1473, i64 727, ptr @.str.1474) unreachable -ok2506: - %t69 = getelementptr inbounds %S.gen.Gen, ptr %t67, i32 0, i32 9 - store i1 true, ptr %t69 - %t70 = load ptr, ptr %a1 - %t71 = load { ptr, i64, i64 }, ptr %a10 - call void @finch.gen.label(ptr %t70, { ptr, i64, i64 } %t71) +ok2570: + %t76 = getelementptr inbounds %S.gen.Gen, ptr %t74, i32 0, i32 9 + store i1 true, ptr %t76 + %t77 = load ptr, ptr %a1 + %t78 = load { ptr, i64, i64 }, ptr %a10 + call void @finch.gen.label(ptr %t77, { ptr, i64, i64 } %t78) + call void @finch_str_drop(ptr %a34) + call void @finch_str_drop(ptr %a30) + call void @finch_str_drop(ptr %a10) + call void @finch_str_drop(ptr %a7) ret void } @@ -24695,164 +27751,190 @@ entry: %a17 = alloca { ptr, i64, i64 }, align 16 %a18 = alloca { ptr, i64, i64 }, align 16 %a19 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 + %a20 = alloca { ptr, i64, i64 }, align 16 %a23 = alloca { ptr, i64, i64 }, align 16 %a24 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 + %a25 = alloca { ptr, i64, i64 }, align 16 + %a26 = alloca { ptr, i64, i64 }, align 16 + %a29 = alloca { ptr, i64, i64 }, align 16 + %a30 = 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 + %a53 = alloca { ptr, i64, i64 }, align 16 %a54 = alloca { ptr, i64, i64 }, align 16 %a55 = 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 + %a59 = alloca { ptr, i64, i64 }, align 16 %a60 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 %a64 = 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 - %a71 = alloca { ptr, i64, i64 }, align 16 + %a69 = alloca { ptr, i64, i64 }, align 16 + %a70 = 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 %a75 = 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 + %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 { ptr, i64, i64 }, align 16 %a86 = alloca { ptr, i64, i64 }, align 16 + %a89 = 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 + %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 + %a99 = 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 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.1466, i64 5, i64 0 }) + %t6 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t5, { ptr, i64, i64 } { ptr @.str.1475, 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.1467, i64 7, i64 0 }) + %t9 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t8, { ptr, i64, i64 } { ptr @.str.1476, 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.1468, i64 13, i64 0 }, ptr %a14 + store { ptr, i64, i64 } { ptr @.str.1477, 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.1469, i64 2, i64 0 }, ptr %a19 + store { ptr, i64, i64 } { ptr @.str.1478, 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 - store { ptr, i64, i64 } %t20, ptr %a23 + store { ptr, i64, i64 } %t16, ptr %a20 + call void @finch_str_drop(ptr %a20) + %t21 = load { ptr, i64, i64 }, ptr %a17 + %t22 = load { ptr, i64, i64 }, ptr %a3 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 - %t26 = call { ptr, i64, i64 } @finch.gen.op(ptr %t11, { ptr, i64, i64 } %t25) - store { ptr, i64, i64 } %t26, ptr %a27 - %t28 = load ptr, ptr %a1 - %t29 = load { ptr, i64, i64 }, ptr %a27 - %t30 = load { ptr, i64, i64 }, ptr %a7 - %t31 = load { ptr, i64, i64 }, ptr %a10 - call void @finch.gen.condBr(ptr %t28, { ptr, i64, i64 } %t29, { ptr, i64, i64 } %t30, { ptr, i64, i64 } %t31) - %t32 = load ptr, ptr %a1 + store { ptr, i64, i64 } %t22, ptr %a25 + call void @finch_str_concat(ptr %a23, ptr %a24, ptr %a25) + store { ptr, i64, i64 } %t21, ptr %a26 + call void @finch_str_drop(ptr %a26) + %t27 = load { ptr, i64, i64 }, ptr %a23 + %t28 = call { ptr, i64, i64 } @finch.gen.op(ptr %t11, { ptr, i64, i64 } %t27) + store { ptr, i64, i64 } %t27, ptr %a29 + call void @finch_str_drop(ptr %a29) + store { ptr, i64, i64 } %t28, ptr %a30 + %t31 = load ptr, ptr %a1 + %t32 = load { ptr, i64, i64 }, ptr %a30 %t33 = load { ptr, i64, i64 }, ptr %a7 - call void @finch.gen.label(ptr %t32, { ptr, i64, i64 } %t33) - %t34 = load ptr, ptr %a1 + %t34 = load { ptr, i64, i64 }, ptr %a10 + call void @finch.gen.condBr(ptr %t31, { ptr, i64, i64 } %t32, { ptr, i64, i64 } %t33, { ptr, i64, i64 } %t34) %t35 = load ptr, ptr %a1 - %t36 = icmp eq ptr %t35, null - br i1 %t36, label %panic2507, label %ok2508 -panic2507: - call void @finch_panic(ptr @.str.1470, i64 717, ptr @.str.1471) + %t36 = load { ptr, i64, i64 }, ptr %a7 + call void @finch.gen.label(ptr %t35, { ptr, i64, i64 } %t36) + %t37 = load ptr, ptr %a1 + %t38 = load ptr, ptr %a1 + %t39 = icmp eq ptr %t38, null + br i1 %t39, label %panic2571, label %ok2572 +panic2571: + call void @finch_panic(ptr @.str.1479, i64 737, ptr @.str.1480) unreachable -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 %range2509, label %inrange2510 -range2509: - call void @finch_panic_index(ptr @.str.1472, i64 717, i64 %t39, i64 %t41) +ok2572: + %t40 = getelementptr inbounds %S.gen.Gen, ptr %t38, i32 0, i32 1 + %t41 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 13 + %t42 = load i64, ptr %t41 + %t43 = load { ptr, i64, i64 }, ptr %t40 + %t44 = extractvalue { ptr, i64, i64 } %t43, 1 + %t45 = icmp uge i64 %t42, %t44 + br i1 %t45, label %range2573, label %inrange2574 +range2573: + call void @finch_panic_index(ptr @.str.1481, i64 737, i64 %t42, i64 %t44) unreachable -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 - %t46 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t34, { ptr, i64, i64 } %t45) - 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.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.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 - %t59 = load i64, ptr %t58 - call void @finch_str_from_int(ptr %a60, i64 %t59) - %t61 = load { ptr, i64, i64 }, ptr %a60 - store { ptr, i64, i64 } %t57, 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 - store { ptr, i64, i64 } %t65, ptr %a67 - store { ptr, i64, i64 } { ptr @.str.1475, i64 6, i64 0 }, ptr %a68 +inrange2574: + %t46 = extractvalue { ptr, i64, i64 } %t43, 0 + %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %t46, i64 %t42 + %t48 = load { ptr, i64, i64 }, ptr %t47 + %t49 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t37, { ptr, i64, i64 } %t48) + store { ptr, i64, i64 } %t49, ptr %a50 + %t51 = load ptr, ptr %a1 + %t52 = load { ptr, i64, i64 }, ptr %a50 + store { ptr, i64, i64 } { ptr @.str.1482, i64 33, i64 0 }, ptr %a54 + store { ptr, i64, i64 } %t52, ptr %a55 + 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.1483, i64 6, i64 0 }, ptr %a59 + call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) + store { ptr, i64, i64 } %t56, ptr %a60 + call void @finch_str_drop(ptr %a60) + %t61 = load { ptr, i64, i64 }, ptr %a57 + %t62 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 11 + %t63 = load i64, ptr %t62 + call void @finch_str_from_int(ptr %a64, i64 %t63) + %t65 = load { ptr, i64, i64 }, ptr %a64 + store { ptr, i64, i64 } %t61, 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 - %t70 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t69, 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.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 - store { ptr, i64, i64 } %t78, 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.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.1478, i64 11, i64 0 }) - %t89 = load ptr, ptr %a1 - %t90 = icmp eq ptr %t89, null - br i1 %t90, label %panic2511, label %ok2512 -panic2511: - call void @finch_panic(ptr @.str.1479, i64 720, ptr @.str.1480) + store { ptr, i64, i64 } %t61, ptr %a69 + call void @finch_str_drop(ptr %a69) + store { ptr, i64, i64 } %t65, ptr %a70 + call void @finch_str_drop(ptr %a70) + %t71 = load { ptr, i64, i64 }, ptr %a66 + store { ptr, i64, i64 } %t71, ptr %a73 + store { ptr, i64, i64 } { ptr @.str.1484, i64 6, i64 0 }, ptr %a74 + call void @finch_str_concat(ptr %a72, ptr %a73, ptr %a74) + store { ptr, i64, i64 } %t71, ptr %a75 + call void @finch_str_drop(ptr %a75) + %t76 = load { ptr, i64, i64 }, ptr %a72 + %t77 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t76, ptr %a79 + store { ptr, i64, i64 } %t77, ptr %a80 + call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) + store { ptr, i64, i64 } %t76, ptr %a81 + call void @finch_str_drop(ptr %a81) + %t82 = load { ptr, i64, i64 }, ptr %a78 + store { ptr, i64, i64 } %t82, ptr %a84 + store { ptr, i64, i64 } { ptr @.str.1485, i64 6, i64 0 }, ptr %a85 + call void @finch_str_concat(ptr %a83, ptr %a84, ptr %a85) + store { ptr, i64, i64 } %t82, ptr %a86 + call void @finch_str_drop(ptr %a86) + %t87 = load { ptr, i64, i64 }, ptr %a83 + %t88 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t87, ptr %a90 + store { ptr, i64, i64 } %t88, ptr %a91 + call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) + store { ptr, i64, i64 } %t87, ptr %a92 + call void @finch_str_drop(ptr %a92) + %t93 = load { ptr, i64, i64 }, ptr %a89 + store { ptr, i64, i64 } %t93, ptr %a95 + store { ptr, i64, i64 } { ptr @.str.1486, i64 1, i64 0 }, ptr %a96 + call void @finch_str_concat(ptr %a94, ptr %a95, ptr %a96) + store { ptr, i64, i64 } %t93, ptr %a97 + call void @finch_str_drop(ptr %a97) + %t98 = load { ptr, i64, i64 }, ptr %a94 + call void @finch.gen.emit(ptr %t51, { ptr, i64, i64 } %t98) + store { ptr, i64, i64 } %t98, ptr %a99 + call void @finch_str_drop(ptr %a99) + %t100 = load ptr, ptr %a1 + call void @finch.gen.emit(ptr %t100, { ptr, i64, i64 } { ptr @.str.1487, i64 11, i64 0 }) + %t101 = load ptr, ptr %a1 + %t102 = icmp eq ptr %t101, null + br i1 %t102, label %panic2575, label %ok2576 +panic2575: + call void @finch_panic(ptr @.str.1488, i64 740, ptr @.str.1489) unreachable -ok2512: - %t91 = getelementptr inbounds %S.gen.Gen, ptr %t89, i32 0, i32 9 - store i1 true, ptr %t91 - %t92 = load ptr, ptr %a1 - %t93 = load { ptr, i64, i64 }, ptr %a10 - call void @finch.gen.label(ptr %t92, { ptr, i64, i64 } %t93) - ret void -} - -define internal void @finch.copy.S_gen_Saved(ptr %dst, ptr %src) { -entry: - - %t1 = load %S.gen.Saved, ptr %src - store %S.gen.Saved %t1, ptr %dst - %t2 = getelementptr inbounds %S.gen.Saved, ptr %dst, i32 0, i32 0 - %t3 = getelementptr inbounds %S.gen.Saved, ptr %src, i32 0, i32 0 - call void @finch.copy.arr_str(ptr %t2, ptr %t3) - %t4 = getelementptr inbounds %S.gen.Saved, ptr %dst, i32 0, i32 1 - %t5 = getelementptr inbounds %S.gen.Saved, ptr %src, i32 0, i32 1 - call void @finch.copy.arr_str(ptr %t4, ptr %t5) +ok2576: + %t103 = getelementptr inbounds %S.gen.Gen, ptr %t101, i32 0, i32 9 + store i1 true, ptr %t103 + %t104 = load ptr, ptr %a1 + %t105 = load { ptr, i64, i64 }, ptr %a10 + call void @finch.gen.label(ptr %t104, { ptr, i64, i64 } %t105) + call void @finch_str_drop(ptr %a50) + call void @finch_str_drop(ptr %a30) + call void @finch_str_drop(ptr %a10) + call void @finch_str_drop(ptr %a7) ret void } @@ -24867,18 +27949,18 @@ entry: %a37 = alloca { ptr, i64, i64 }, align 16 %a42 = alloca { ptr, i64, i64 }, align 16 %a43 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca %S.gen.Saved, align 16 - %a60 = alloca %S.gen.Saved, align 16 + %a46 = alloca { ptr, i64, i64 }, align 16 + %a51 = alloca { ptr, i64, i64 }, align 16 + %a52 = alloca { ptr, i64, i64 }, align 16 + %a55 = 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 %panic2513, label %ok2514 -panic2513: - call void @finch_panic(ptr @.str.1481, i64 735, ptr @.str.1482) + br i1 %t3, label %panic2577, label %ok2578 +panic2577: + call void @finch_panic(ptr @.str.1490, i64 755, ptr @.str.1491) unreachable -ok2514: +ok2578: %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 @@ -24887,11 +27969,11 @@ ok2514: %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 %panic2515, label %ok2516 -panic2515: - call void @finch_panic(ptr @.str.1483, i64 735, ptr @.str.1484) + br i1 %t11, label %panic2579, label %ok2580 +panic2579: + call void @finch_panic(ptr @.str.1492, i64 755, ptr @.str.1493) unreachable -ok2516: +ok2580: %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 @@ -24900,94 +27982,98 @@ ok2516: %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 %panic2517, label %ok2518 -panic2517: - call void @finch_panic(ptr @.str.1485, i64 735, ptr @.str.1486) + br i1 %t19, label %panic2581, label %ok2582 +panic2581: + call void @finch_panic(ptr @.str.1494, i64 755, ptr @.str.1495) unreachable -ok2518: +ok2582: %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 %panic2519, label %ok2520 -panic2519: - call void @finch_panic(ptr @.str.1487, i64 735, ptr @.str.1488) + br i1 %t24, label %panic2583, label %ok2584 +panic2583: + call void @finch_panic(ptr @.str.1496, i64 755, ptr @.str.1497) unreachable -ok2520: +ok2584: %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 %panic2521, label %ok2522 -panic2521: - call void @finch_panic(ptr @.str.1489, i64 735, ptr @.str.1490) + br i1 %t29, label %panic2585, label %ok2586 +panic2585: + call void @finch_panic(ptr @.str.1498, i64 755, ptr @.str.1499) unreachable -ok2522: - %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 34 +ok2586: + %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 35 %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 %panic2523, label %ok2524 -panic2523: - call void @finch_panic(ptr @.str.1491, i64 736, ptr @.str.1492) + br i1 %t35, label %panic2587, label %ok2588 +panic2587: + call void @finch_panic(ptr @.str.1500, i64 756, ptr @.str.1501) unreachable -ok2524: - %t36 = getelementptr inbounds %S.gen.Gen, ptr %t34, i32 0, i32 34 +ok2588: + %t36 = getelementptr inbounds %S.gen.Gen, ptr %t34, i32 0, i32 35 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 %panic2525, label %ok2526 -panic2525: - call void @finch_panic(ptr @.str.1493, i64 738, ptr @.str.1494) + br i1 %t40, label %panic2589, label %ok2590 +panic2589: + call void @finch_panic(ptr @.str.1502, i64 758, ptr @.str.1503) unreachable -ok2526: +ok2590: %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) %t44 = load { ptr, i64, i64 }, ptr %a43 + %t45 = load { ptr, i64, i64 }, ptr %t41 store { ptr, i64, i64 } %t44, ptr %t41 - %t45 = load { ptr, i64, i64 }, ptr %a37 - %t46 = load ptr, ptr %a1 - %t47 = icmp eq ptr %t46, null - br i1 %t47, label %panic2527, label %ok2528 -panic2527: - call void @finch_panic(ptr @.str.1495, i64 739, ptr @.str.1496) + store { ptr, i64, i64 } %t45, ptr %a46 + call void @finch.drop.arr_str(ptr %a46) + %t47 = load { ptr, i64, i64 }, ptr %a37 + %t48 = load ptr, ptr %a1 + %t49 = icmp eq ptr %t48, null + br i1 %t49, label %panic2591, label %ok2592 +panic2591: + call void @finch_panic(ptr @.str.1504, i64 759, ptr @.str.1505) unreachable -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) - %t51 = load { ptr, i64, i64 }, ptr %a50 - store { ptr, i64, i64 } %t51, ptr %t48 - %t52 = load ptr, ptr %a1 - %t53 = icmp eq ptr %t52, null - br i1 %t53, label %panic2529, label %ok2530 -panic2529: - call void @finch_panic(ptr @.str.1497, i64 740, ptr @.str.1498) +ok2592: + %t50 = getelementptr inbounds %S.gen.Gen, ptr %t48, i32 0, i32 5 + store { ptr, i64, i64 } %t47, ptr %a51 + call void @finch.copy.arr_str(ptr %a52, ptr %a51) + %t53 = load { ptr, i64, i64 }, ptr %a52 + %t54 = load { ptr, i64, i64 }, ptr %t50 + store { ptr, i64, i64 } %t53, ptr %t50 + store { ptr, i64, i64 } %t54, ptr %a55 + call void @finch.drop.arr_str(ptr %a55) + %t56 = load ptr, ptr %a1 + %t57 = icmp eq ptr %t56, null + br i1 %t57, label %panic2593, label %ok2594 +panic2593: + call void @finch_panic(ptr @.str.1506, i64 760, ptr @.str.1507) unreachable -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 %panic2531, label %ok2532 -panic2531: - call void @finch_panic(ptr @.str.1499, i64 741, ptr @.str.1500) +ok2594: + %t58 = getelementptr inbounds %S.gen.Gen, ptr %t56, i32 0, i32 6 + store i64 0, ptr %t58 + %t59 = load ptr, ptr %a1 + %t60 = icmp eq ptr %t59, null + br i1 %t60, label %panic2595, label %ok2596 +panic2595: + call void @finch_panic(ptr @.str.1508, i64 761, ptr @.str.1509) unreachable -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 - store %S.gen.Saved %t58, ptr %a59 - call void @finch.copy.S_gen_Saved(ptr %a60, ptr %a59) - %t61 = load %S.gen.Saved, ptr %a60 - ret %S.gen.Saved %t61 +ok2596: + %t61 = getelementptr inbounds %S.gen.Gen, ptr %t59, i32 0, i32 9 + store i1 false, ptr %t61 + %t62 = load %S.gen.Saved, ptr %a33 + call void @finch.drop.arr_str(ptr %a37) + ret %S.gen.Saved %t62 } define internal void @finch.gen.endHelper(ptr %p0, %S.gen.Saved %p1, { ptr, i64, i64 } %p2) { @@ -25003,146 +28089,172 @@ entry: %a20 = 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 %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 %a26 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = 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 %a35 = alloca { ptr, i64, i64 }, align 16 %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 + %a38 = 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 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 + %a42 = alloca { ptr, i64, i64 }, 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 + %a58 = alloca { ptr, i64, i64 }, align 16 + %a59 = alloca { ptr, i64, i64 }, align 16 + %a62 = 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 store ptr %p0, ptr %a1 store %S.gen.Saved %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 %panic2533, label %ok2534 -panic2533: - call void @finch_panic(ptr @.str.1501, i64 746, ptr @.str.1502) + br i1 %t5, label %panic2597, label %ok2598 +panic2597: + call void @finch_panic(ptr @.str.1510, i64 766, ptr @.str.1511) unreachable -ok2534: +ok2598: %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.1503, i64 10, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.1512, 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 %panic2535, label %ok2536 -panic2535: - call void @finch_panic(ptr @.str.1504, i64 746, ptr @.str.1505) + br i1 %t14, label %panic2599, label %ok2600 +panic2599: + call void @finch_panic(ptr @.str.1513, i64 766, ptr @.str.1514) unreachable -ok2536: +ok2600: %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.1506, i64 1, i64 0 }, ptr %a17 + store { ptr, i64, i64 } { ptr @.str.1515, 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 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.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 %panic2537, label %ok2538 -panic2537: - call void @finch_panic(ptr @.str.1508, i64 746, ptr @.str.1509) + store { ptr, i64, i64 } %t12, ptr %a23 + call void @finch_str_drop(ptr %a23) + store { ptr, i64, i64 } %t19, ptr %a24 + call void @finch_str_drop(ptr %a24) + %t25 = load { ptr, i64, i64 }, ptr %a20 + store { ptr, i64, i64 } %t25, ptr %a27 + store { ptr, i64, i64 } { ptr @.str.1516, i64 1, i64 0 }, ptr %a28 + call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28) + store { ptr, i64, i64 } %t25, ptr %a29 + call void @finch_str_drop(ptr %a29) + %t30 = load { ptr, i64, i64 }, ptr %a26 + %t31 = load ptr, ptr %a1 + %t32 = icmp eq ptr %t31, null + br i1 %t32, label %panic2601, label %ok2602 +panic2601: + call void @finch_panic(ptr @.str.1517, i64 766, ptr @.str.1518) unreachable -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.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 - 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.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 - %t44 = add i64 %t43, 1 - call void @finch_arr_reserve(ptr %t6, i64 %t44, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t45 = load ptr, ptr %t6 - %t46 = getelementptr inbounds { ptr, i64, i64 }, ptr %t45, i64 %t43 - store { ptr, i64, i64 } %t42, ptr %t46 - store i64 %t44, ptr %t7 - %t47 = getelementptr inbounds %S.gen.Saved, ptr %a2, i32 0, i32 0 - %t48 = load { ptr, i64, i64 }, ptr %t47 - %t49 = load ptr, ptr %a1 - %t50 = icmp eq ptr %t49, null - br i1 %t50, label %panic2539, label %ok2540 -panic2539: - call void @finch_panic(ptr @.str.1512, i64 747, ptr @.str.1513) +ok2602: + %t33 = getelementptr inbounds %S.gen.Gen, ptr %t31, i32 0, i32 4 + %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t33, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.1519, i64 1, i64 0 }, ptr %a35 + call void @finch_str_join(ptr %a36, ptr %t33, ptr %a35) + %t37 = load { ptr, i64, i64 }, ptr %a36 + store { ptr, i64, i64 } %t30, ptr %a39 + store { ptr, i64, i64 } %t37, ptr %a40 + call void @finch_str_concat(ptr %a38, ptr %a39, ptr %a40) + store { ptr, i64, i64 } %t30, ptr %a41 + call void @finch_str_drop(ptr %a41) + store { ptr, i64, i64 } %t37, ptr %a42 + call void @finch_str_drop(ptr %a42) + %t43 = load { ptr, i64, i64 }, ptr %a38 + store { ptr, i64, i64 } %t43, ptr %a45 + store { ptr, i64, i64 } { ptr @.str.1520, i64 3, i64 0 }, ptr %a46 + call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46) + store { ptr, i64, i64 } %t43, ptr %a47 + call void @finch_str_drop(ptr %a47) + %t48 = load { ptr, i64, i64 }, ptr %a44 + %t49 = load i64, ptr %t7 + %t50 = add i64 %t49, 1 + call void @finch_arr_reserve(ptr %t6, i64 %t50, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t51 = load ptr, ptr %t6 + %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %t51, i64 %t49 + store { ptr, i64, i64 } %t48, ptr %t52 + store i64 %t50, ptr %t7 + %t53 = getelementptr inbounds %S.gen.Saved, ptr %a2, i32 0, i32 0 + %t54 = load { ptr, i64, i64 }, ptr %t53 + %t55 = load ptr, ptr %a1 + %t56 = icmp eq ptr %t55, null + br i1 %t56, label %panic2603, label %ok2604 +panic2603: + call void @finch_panic(ptr @.str.1521, i64 767, ptr @.str.1522) unreachable -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) - %t54 = load { ptr, i64, i64 }, ptr %a53 - store { ptr, i64, i64 } %t54, ptr %t51 - %t55 = getelementptr inbounds %S.gen.Saved, ptr %a2, i32 0, i32 1 - %t56 = load { ptr, i64, i64 }, ptr %t55 - %t57 = load ptr, ptr %a1 - %t58 = icmp eq ptr %t57, null - br i1 %t58, label %panic2541, label %ok2542 -panic2541: - call void @finch_panic(ptr @.str.1514, i64 748, ptr @.str.1515) - unreachable -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) - %t62 = load { ptr, i64, i64 }, ptr %a61 - store { ptr, i64, i64 } %t62, ptr %t59 - %t63 = getelementptr inbounds %S.gen.Saved, ptr %a2, i32 0, i32 2 - %t64 = load i64, ptr %t63 +ok2604: + %t57 = getelementptr inbounds %S.gen.Gen, ptr %t55, i32 0, i32 4 + store { ptr, i64, i64 } %t54, ptr %a58 + call void @finch.copy.arr_str(ptr %a59, ptr %a58) + %t60 = load { ptr, i64, i64 }, ptr %a59 + %t61 = load { ptr, i64, i64 }, ptr %t57 + store { ptr, i64, i64 } %t60, ptr %t57 + store { ptr, i64, i64 } %t61, ptr %a62 + call void @finch.drop.arr_str(ptr %a62) + %t63 = getelementptr inbounds %S.gen.Saved, ptr %a2, i32 0, i32 1 + %t64 = load { ptr, i64, i64 }, ptr %t63 %t65 = load ptr, ptr %a1 %t66 = icmp eq ptr %t65, null - br i1 %t66, label %panic2543, label %ok2544 -panic2543: - call void @finch_panic(ptr @.str.1516, i64 749, ptr @.str.1517) + br i1 %t66, label %panic2605, label %ok2606 +panic2605: + call void @finch_panic(ptr @.str.1523, i64 768, ptr @.str.1524) unreachable -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 %panic2545, label %ok2546 -panic2545: - call void @finch_panic(ptr @.str.1518, i64 750, ptr @.str.1519) - unreachable -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 +ok2606: + %t67 = getelementptr inbounds %S.gen.Gen, ptr %t65, i32 0, i32 5 + store { ptr, i64, i64 } %t64, ptr %a68 + call void @finch.copy.arr_str(ptr %a69, ptr %a68) + %t70 = load { ptr, i64, i64 }, ptr %a69 + %t71 = load { ptr, i64, i64 }, ptr %t67 + store { ptr, i64, i64 } %t70, ptr %t67 + store { ptr, i64, i64 } %t71, ptr %a72 + call void @finch.drop.arr_str(ptr %a72) + %t73 = getelementptr inbounds %S.gen.Saved, ptr %a2, i32 0, i32 2 %t74 = load i64, ptr %t73 %t75 = load ptr, ptr %a1 %t76 = icmp eq ptr %t75, null - br i1 %t76, label %panic2547, label %ok2548 -panic2547: - call void @finch_panic(ptr @.str.1520, i64 751, ptr @.str.1521) + br i1 %t76, label %panic2607, label %ok2608 +panic2607: + call void @finch_panic(ptr @.str.1525, i64 769, ptr @.str.1526) unreachable -ok2548: - %t77 = getelementptr inbounds %S.gen.Gen, ptr %t75, i32 0, i32 34 +ok2608: + %t77 = getelementptr inbounds %S.gen.Gen, ptr %t75, i32 0, i32 6 store i64 %t74, ptr %t77 + %t78 = getelementptr inbounds %S.gen.Saved, ptr %a2, i32 0, i32 3 + %t79 = load i1, ptr %t78 + %t80 = load ptr, ptr %a1 + %t81 = icmp eq ptr %t80, null + br i1 %t81, label %panic2609, label %ok2610 +panic2609: + call void @finch_panic(ptr @.str.1527, i64 770, ptr @.str.1528) + unreachable +ok2610: + %t82 = getelementptr inbounds %S.gen.Gen, ptr %t80, i32 0, i32 9 + store i1 %t79, ptr %t82 + %t83 = getelementptr inbounds %S.gen.Saved, ptr %a2, i32 0, i32 4 + %t84 = load i64, ptr %t83 + %t85 = load ptr, ptr %a1 + %t86 = icmp eq ptr %t85, null + br i1 %t86, label %panic2611, label %ok2612 +panic2611: + call void @finch_panic(ptr @.str.1529, i64 771, ptr @.str.1530) + unreachable +ok2612: + %t87 = getelementptr inbounds %S.gen.Gen, ptr %t85, i32 0, i32 35 + store i64 %t84, ptr %t87 ret void } @@ -25161,34 +28273,37 @@ entry: %a31 = alloca { ptr, i64, i64 }, align 16 %a32 = alloca { ptr, i64, i64 }, align 16 %a33 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 + %a34 = alloca { ptr, i64, i64 }, align 16 %a37 = alloca { ptr, i64, i64 }, align 16 %a38 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 + %a39 = alloca { ptr, i64, i64 }, align 16 + %a40 = alloca { ptr, i64, i64 }, align 16 + %a43 = alloca { ptr, i64, i64 }, align 16 + %a44 = 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 + %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 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.1522, i64 3, i64 0 }) + %t4 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t3, { ptr, i64, i64 } { ptr @.str.1531, 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.1523, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1524, i64 1, i64 0 }, { ptr, i64, i64 } %t7) + call void @finch.gen.store(ptr %t6, { ptr, i64, i64 } { ptr @.str.1532, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1533, 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.1525, i64 6, i64 0 }) + %t9 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t8, { ptr, i64, i64 } { ptr @.str.1534, 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.1526, i64 6, i64 0 }) + %t12 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t11, { ptr, i64, i64 } { ptr @.str.1535, 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.1527, i64 5, i64 0 }) + %t15 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t14, { ptr, i64, i64 } { ptr @.str.1536, i64 5, i64 0 }) store { ptr, i64, i64 } %t15, ptr %a16 %t17 = load ptr, ptr %a1 %t18 = load { ptr, i64, i64 }, ptr %a10 @@ -25198,63 +28313,75 @@ 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.1528, i64 3, i64 0 }, { ptr, i64, i64 } %t22) + %t23 = call { ptr, i64, i64 } @finch.gen.load(ptr %t21, { ptr, i64, i64 } { ptr @.str.1537, 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.1529, i64 13, i64 0 }, ptr %a28 + store { ptr, i64, i64 } { ptr @.str.1538, 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.1530, i64 2, i64 0 }, ptr %a33 + store { ptr, i64, i64 } { ptr @.str.1539, 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 - store { ptr, i64, i64 } %t34, ptr %a37 + store { ptr, i64, i64 } %t30, ptr %a34 + call void @finch_str_drop(ptr %a34) + %t35 = load { ptr, i64, i64 }, ptr %a31 + %t36 = load { ptr, i64, i64 }, ptr %a2 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 - %t40 = call { ptr, i64, i64 } @finch.gen.op(ptr %t25, { ptr, i64, i64 } %t39) - store { ptr, i64, i64 } %t40, ptr %a41 - %t42 = load ptr, ptr %a1 - %t43 = load { ptr, i64, i64 }, ptr %a41 - %t44 = load { ptr, i64, i64 }, ptr %a13 - %t45 = load { ptr, i64, i64 }, ptr %a16 - call void @finch.gen.condBr(ptr %t42, { ptr, i64, i64 } %t43, { ptr, i64, i64 } %t44, { ptr, i64, i64 } %t45) - %t46 = load ptr, ptr %a1 + store { ptr, i64, i64 } %t36, ptr %a39 + call void @finch_str_concat(ptr %a37, ptr %a38, ptr %a39) + store { ptr, i64, i64 } %t35, ptr %a40 + call void @finch_str_drop(ptr %a40) + %t41 = load { ptr, i64, i64 }, ptr %a37 + %t42 = call { ptr, i64, i64 } @finch.gen.op(ptr %t25, { ptr, i64, i64 } %t41) + store { ptr, i64, i64 } %t41, ptr %a43 + call void @finch_str_drop(ptr %a43) + store { ptr, i64, i64 } %t42, ptr %a44 + %t45 = load ptr, ptr %a1 + %t46 = load { ptr, i64, i64 }, ptr %a44 %t47 = load { ptr, i64, i64 }, ptr %a13 - call void @finch.gen.label(ptr %t46, { ptr, i64, i64 } %t47) - %t48 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t48, ptr %a49 - call void @finch_str_copy(ptr %a50, ptr %a49) - %t51 = load { ptr, i64, i64 }, ptr %a50 - %t52 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t52, ptr %a53 - call void @finch_str_copy(ptr %a54, ptr %a53) - %t55 = load { ptr, i64, i64 }, ptr %a54 - %t56 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } %t56, ptr %a57 - call void @finch_str_copy(ptr %a58, ptr %a57) - %t59 = load { ptr, i64, i64 }, ptr %a58 - %t60 = load { ptr, i64, i64 }, ptr %a24 - store { ptr, i64, i64 } %t60, ptr %a61 - call void @finch_str_copy(ptr %a62, ptr %a61) - %t63 = load { ptr, i64, i64 }, ptr %a62 - %t64 = mul i64 4, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t65 = call ptr @finch_alloc(i64 %t64) - %t66 = getelementptr inbounds { ptr, i64, i64 }, ptr %t65, i64 0 - store { ptr, i64, i64 } %t51, ptr %t66 - %t67 = getelementptr inbounds { ptr, i64, i64 }, ptr %t65, i64 1 - store { ptr, i64, i64 } %t55, ptr %t67 - %t68 = getelementptr inbounds { ptr, i64, i64 }, ptr %t65, i64 2 - store { ptr, i64, i64 } %t59, ptr %t68 - %t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %t65, i64 3 - store { ptr, i64, i64 } %t63, ptr %t69 - %t70 = insertvalue { ptr, i64, i64 } undef, ptr %t65, 0 - %t71 = insertvalue { ptr, i64, i64 } %t70, i64 4, 1 - %t72 = insertvalue { ptr, i64, i64 } %t71, i64 4, 2 - ret { ptr, i64, i64 } %t72 + %t48 = load { ptr, i64, i64 }, ptr %a16 + call void @finch.gen.condBr(ptr %t45, { ptr, i64, i64 } %t46, { ptr, i64, i64 } %t47, { ptr, i64, i64 } %t48) + %t49 = load ptr, ptr %a1 + %t50 = load { ptr, i64, i64 }, ptr %a13 + call void @finch.gen.label(ptr %t49, { ptr, i64, i64 } %t50) + %t51 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } %t51, ptr %a52 + call void @finch_str_copy(ptr %a53, ptr %a52) + %t54 = load { ptr, i64, i64 }, ptr %a53 + %t55 = load { ptr, i64, i64 }, ptr %a10 + store { ptr, i64, i64 } %t55, ptr %a56 + call void @finch_str_copy(ptr %a57, ptr %a56) + %t58 = load { ptr, i64, i64 }, ptr %a57 + %t59 = load { ptr, i64, i64 }, ptr %a16 + store { ptr, i64, i64 } %t59, ptr %a60 + call void @finch_str_copy(ptr %a61, ptr %a60) + %t62 = load { ptr, i64, i64 }, ptr %a61 + %t63 = load { ptr, i64, i64 }, ptr %a24 + store { ptr, i64, i64 } %t63, ptr %a64 + call void @finch_str_copy(ptr %a65, ptr %a64) + %t66 = load { ptr, i64, i64 }, ptr %a65 + %t67 = mul i64 4, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) + %t68 = call ptr @finch_alloc(i64 %t67) + %t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %t68, i64 0 + store { ptr, i64, i64 } %t54, ptr %t69 + %t70 = getelementptr inbounds { ptr, i64, i64 }, ptr %t68, i64 1 + store { ptr, i64, i64 } %t58, ptr %t70 + %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %t68, i64 2 + store { ptr, i64, i64 } %t62, ptr %t71 + %t72 = getelementptr inbounds { ptr, i64, i64 }, ptr %t68, i64 3 + store { ptr, i64, i64 } %t66, ptr %t72 + %t73 = insertvalue { ptr, i64, i64 } undef, ptr %t68, 0 + %t74 = insertvalue { ptr, i64, i64 } %t73, i64 4, 1 + %t75 = insertvalue { ptr, i64, i64 } %t74, i64 4, 2 + call void @finch_str_drop(ptr %a44) + call void @finch_str_drop(ptr %a24) + call void @finch_str_drop(ptr %a16) + call void @finch_str_drop(ptr %a13) + call void @finch_str_drop(ptr %a10) + call void @finch_str_drop(ptr %a5) + ret { ptr, i64, i64 } %t75 } define internal void @finch.gen.loopEnd(ptr %p0, { ptr, i64, i64 } %p1) { @@ -25268,72 +28395,82 @@ entry: %a19 = 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 + %a25 = alloca { ptr, i64, i64 }, align 16 + %a32 = 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 = extractvalue { ptr, i64, i64 } %t4, 1 %t6 = icmp uge i64 0, %t5 - br i1 %t6, label %range2549, label %inrange2550 -range2549: - call void @finch_panic_index(ptr @.str.1532, i64 771, i64 0, i64 %t5) + br i1 %t6, label %range2613, label %inrange2614 +range2613: + call void @finch_panic_index(ptr @.str.1541, i64 791, i64 0, i64 %t5) unreachable -inrange2550: +inrange2614: %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.1531, i64 3, i64 0 }, { ptr, i64, i64 } %t9) + %t10 = call { ptr, i64, i64 } @finch.gen.load(ptr %t3, { ptr, i64, i64 } { ptr @.str.1540, 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.1534, i64 8, i64 0 }, ptr %a16 + store { ptr, i64, i64 } { ptr @.str.1543, 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.1535, i64 3, i64 0 }, ptr %a21 + store { ptr, i64, i64 } { ptr @.str.1544, 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 %range2551, label %inrange2552 -range2551: - call void @finch_panic_index(ptr @.str.1536, i64 772, i64 0, i64 %t25) + store { ptr, i64, i64 } %t18, ptr %a22 + call void @finch_str_drop(ptr %a22) + %t23 = load { ptr, i64, i64 }, ptr %a19 + %t24 = call { ptr, i64, i64 } @finch.gen.op(ptr %t13, { ptr, i64, i64 } %t23) + store { ptr, i64, i64 } %t23, ptr %a25 + call void @finch_str_drop(ptr %a25) + %t26 = load { ptr, i64, i64 }, ptr %a2 + %t27 = extractvalue { ptr, i64, i64 } %t26, 1 + %t28 = icmp uge i64 0, %t27 + br i1 %t28, label %range2615, label %inrange2616 +range2615: + call void @finch_panic_index(ptr @.str.1545, i64 792, i64 0, i64 %t27) unreachable -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.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 %range2553, label %inrange2554 -range2553: - call void @finch_panic_index(ptr @.str.1537, i64 773, i64 1, i64 %t32) +inrange2616: + %t29 = extractvalue { ptr, i64, i64 } %t26, 0 + %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 0 + %t31 = load { ptr, i64, i64 }, ptr %t30 + call void @finch.gen.store(ptr %t12, { ptr, i64, i64 } { ptr @.str.1542, i64 3, i64 0 }, { ptr, i64, i64 } %t24, { ptr, i64, i64 } %t31) + store { ptr, i64, i64 } %t24, ptr %a32 + call void @finch_str_drop(ptr %a32) + %t33 = load ptr, ptr %a1 + %t34 = load { ptr, i64, i64 }, ptr %a2 + %t35 = extractvalue { ptr, i64, i64 } %t34, 1 + %t36 = icmp uge i64 1, %t35 + br i1 %t36, label %range2617, label %inrange2618 +range2617: + call void @finch_panic_index(ptr @.str.1546, i64 793, i64 1, i64 %t35) unreachable -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 - call void @finch.gen.br(ptr %t30, { ptr, i64, i64 } %t36) - %t37 = load ptr, ptr %a1 - %t38 = load { ptr, i64, i64 }, ptr %a2 - %t39 = extractvalue { ptr, i64, i64 } %t38, 1 - %t40 = icmp uge i64 2, %t39 - br i1 %t40, label %range2555, label %inrange2556 -range2555: - call void @finch_panic_index(ptr @.str.1538, i64 774, i64 2, i64 %t39) +inrange2618: + %t37 = extractvalue { ptr, i64, i64 } %t34, 0 + %t38 = getelementptr inbounds { ptr, i64, i64 }, ptr %t37, i64 1 + %t39 = load { ptr, i64, i64 }, ptr %t38 + call void @finch.gen.br(ptr %t33, { ptr, i64, i64 } %t39) + %t40 = load ptr, ptr %a1 + %t41 = load { ptr, i64, i64 }, ptr %a2 + %t42 = extractvalue { ptr, i64, i64 } %t41, 1 + %t43 = icmp uge i64 2, %t42 + br i1 %t43, label %range2619, label %inrange2620 +range2619: + call void @finch_panic_index(ptr @.str.1547, i64 794, i64 2, i64 %t42) unreachable -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 - call void @finch.gen.label(ptr %t37, { ptr, i64, i64 } %t43) +inrange2620: + %t44 = extractvalue { ptr, i64, i64 } %t41, 0 + %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %t44, i64 2 + %t46 = load { ptr, i64, i64 }, ptr %t45 + call void @finch.gen.label(ptr %t40, { ptr, i64, i64 } %t46) + call void @finch_str_drop(ptr %a11) ret void } @@ -25351,36 +28488,50 @@ entry: %a17 = alloca { ptr, i64, i64 }, align 16 %a18 = alloca { ptr, i64, i64 }, align 16 %a19 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 + %a20 = 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 %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 %a28 = alloca { ptr, i64, i64 }, align 16 - %a32 = 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 %a33 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 + %a36 = alloca { ptr, i64, i64 }, align 16 + %a37 = alloca { ptr, i64, i64 }, align 16 + %a42 = alloca { ptr, i64, i64 }, align 16 + %a43 = alloca { ptr, i64, i64 }, align 16 + %a49 = alloca { ptr, i64, i64 }, align 16 + %a50 = alloca { ptr, i64, i64 }, align 16 %a62 = 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 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = 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 + %a75 = 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 + %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 + %a84 = alloca { ptr, i64, i64 }, align 16 + %a85 = alloca { ptr, i64, i64 }, align 16 + %a86 = alloca { ptr, i64, i64 }, align 16 + %a87 = alloca { ptr, i64, i64 }, align 16 + %a89 = 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 + %a94 = alloca { ptr, i64, i64 }, align 16 + %a105 = alloca { ptr, i64, i64 }, align 16 + %a107 = alloca { ptr, i64, i64 }, align 16 + %a108 = 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 @@ -25388,132 +28539,170 @@ 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.1539, i64 3, i64 0 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.1548, 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 %then2557, label %else2558 -then2557: + br i1 %t10, label %then2621, label %else2622 +then2621: %t11 = load ptr, ptr %a1 %t12 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1540, i64 30, i64 0 }, ptr %a14 + store { ptr, i64, i64 } { ptr @.str.1549, 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.1541, i64 6, i64 0 }, ptr %a19 + store { ptr, i64, i64 } { ptr @.str.1550, 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 - store { ptr, i64, i64 } %t20, ptr %a23 + store { ptr, i64, i64 } %t16, ptr %a20 + call void @finch_str_drop(ptr %a20) + %t21 = load { ptr, i64, i64 }, ptr %a17 + %t22 = load { ptr, i64, i64 }, ptr %a3 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.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 %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.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.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.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.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.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.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.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.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.1547, i64 5, i64 0 }, ptr %a64 + store { ptr, i64, i64 } %t22, ptr %a25 + call void @finch_str_concat(ptr %a23, ptr %a24, ptr %a25) + store { ptr, i64, i64 } %t21, ptr %a26 + call void @finch_str_drop(ptr %a26) + %t27 = load { ptr, i64, i64 }, ptr %a23 + store { ptr, i64, i64 } %t27, ptr %a29 + store { ptr, i64, i64 } { ptr @.str.1551, i64 1, i64 0 }, ptr %a30 + call void @finch_str_concat(ptr %a28, ptr %a29, ptr %a30) + store { ptr, i64, i64 } %t27, ptr %a31 + call void @finch_str_drop(ptr %a31) + %t32 = load { ptr, i64, i64 }, ptr %a28 + call void @finch.gen.emit(ptr %t11, { ptr, i64, i64 } %t32) + store { ptr, i64, i64 } %t32, ptr %a33 + call void @finch_str_drop(ptr %a33) + br label %endif2623 +else2622: + %t34 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 0 + %t35 = load { ptr, i64, i64 }, ptr %t34 + store { ptr, i64, i64 } %t35, ptr %a36 + store { ptr, i64, i64 } { ptr @.str.1552, i64 5, i64 0 }, ptr %a37 + %t38 = call i32 @finch_str_eq(ptr %a36, ptr %a37) + %t39 = icmp ne i32 %t38, 0 + br label %logic.from2624 +logic.from2624: + br i1 %t39, label %logic.end2626, label %logic.rhs2625 +logic.rhs2625: + %t40 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 0 + %t41 = load { ptr, i64, i64 }, ptr %t40 + store { ptr, i64, i64 } %t41, ptr %a42 + store { ptr, i64, i64 } { ptr @.str.1553, 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.rend2627 +logic.rend2627: + br label %logic.end2626 +logic.end2626: + %t46 = phi i1 [ true, %logic.from2624 ], [ %t45, %logic.rend2627 ] + br label %logic.from2628 +logic.from2628: + br i1 %t46, label %logic.end2630, label %logic.rhs2629 +logic.rhs2629: + %t47 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 0 + %t48 = load { ptr, i64, i64 }, ptr %t47 + store { ptr, i64, i64 } %t48, ptr %a49 + store { ptr, i64, i64 } { ptr @.str.1554, i64 6, i64 0 }, ptr %a50 + %t51 = call i32 @finch_str_eq(ptr %a49, ptr %a50) + %t52 = icmp ne i32 %t51, 0 + br label %logic.from2631 +logic.from2631: + br i1 %t52, label %logic.rhs2632, label %logic.end2633 +logic.rhs2632: + %t53 = load ptr, ptr %a1 + %t54 = load %S.ast.Type, ptr %a4 + %t55 = call i1 @finch.gen.owning(ptr %t53, %S.ast.Type %t54) + br label %logic.rend2634 +logic.rend2634: + br label %logic.end2633 +logic.end2633: + %t56 = phi i1 [ false, %logic.from2631 ], [ %t55, %logic.rend2634 ] + br label %logic.rend2635 +logic.rend2635: + br label %logic.end2630 +logic.end2630: + %t57 = phi i1 [ true, %logic.from2628 ], [ %t56, %logic.rend2635 ] + br i1 %t57, label %then2636, label %else2637 +then2636: + %t58 = load ptr, ptr %a1 + %t59 = load ptr, ptr %a1 + %t60 = load %S.ast.Type, ptr %a4 + %t61 = call { ptr, i64, i64 } @finch.gen.copyFn(ptr %t59, %S.ast.Type %t60) + store { ptr, i64, i64 } { ptr @.str.1555, i64 10, 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 { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t65, ptr %a68 - store { ptr, i64, i64 } %t66, ptr %a69 + store { ptr, i64, i64 } %t61, ptr %a65 + call void @finch_str_drop(ptr %a65) + %t66 = load { ptr, i64, i64 }, ptr %a62 + store { ptr, i64, i64 } %t66, ptr %a68 + store { ptr, i64, i64 } { ptr @.str.1556, i64 5, 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 %a72 - 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 - store { ptr, i64, i64 } %t74, 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.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 %endif2574 -else2573: - %t84 = load ptr, ptr %a1 - %t85 = load ptr, ptr %a1 - %t86 = load %S.ast.Type, ptr %a4 - %t87 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t85, %S.ast.Type %t86) - %t88 = load ptr, ptr %a1 - %t89 = load ptr, ptr %a1 - %t90 = load %S.ast.Type, ptr %a4 - %t91 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t89, %S.ast.Type %t90) - %t92 = load { ptr, i64, i64 }, ptr %a3 - %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 %endif2574 -endif2574: - br label %endif2559 -endif2559: + store { ptr, i64, i64 } %t66, ptr %a70 + call void @finch_str_drop(ptr %a70) + %t71 = load { ptr, i64, i64 }, ptr %a67 + %t72 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t71, ptr %a74 + store { ptr, i64, i64 } %t72, ptr %a75 + call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) + store { ptr, i64, i64 } %t71, ptr %a76 + call void @finch_str_drop(ptr %a76) + %t77 = load { ptr, i64, i64 }, ptr %a73 + store { ptr, i64, i64 } %t77, ptr %a79 + store { ptr, i64, i64 } { ptr @.str.1557, i64 6, i64 0 }, ptr %a80 + call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) + store { ptr, i64, i64 } %t77, ptr %a81 + call void @finch_str_drop(ptr %a81) + %t82 = load { ptr, i64, i64 }, ptr %a78 + %t83 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t82, ptr %a85 + store { ptr, i64, i64 } %t83, ptr %a86 + call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) + store { ptr, i64, i64 } %t82, ptr %a87 + call void @finch_str_drop(ptr %a87) + %t88 = load { ptr, i64, i64 }, ptr %a84 + store { ptr, i64, i64 } %t88, ptr %a90 + store { ptr, i64, i64 } { ptr @.str.1558, i64 1, i64 0 }, ptr %a91 + call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) + store { ptr, i64, i64 } %t88, ptr %a92 + call void @finch_str_drop(ptr %a92) + %t93 = load { ptr, i64, i64 }, ptr %a89 + call void @finch.gen.emit(ptr %t58, { ptr, i64, i64 } %t93) + store { ptr, i64, i64 } %t93, ptr %a94 + call void @finch_str_drop(ptr %a94) + br label %endif2638 +else2637: + %t95 = load ptr, ptr %a1 + %t96 = load ptr, ptr %a1 + %t97 = load %S.ast.Type, ptr %a4 + %t98 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t96, %S.ast.Type %t97) + %t99 = load ptr, ptr %a1 + %t100 = load ptr, ptr %a1 + %t101 = load %S.ast.Type, ptr %a4 + %t102 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t100, %S.ast.Type %t101) + %t103 = load { ptr, i64, i64 }, ptr %a3 + %t104 = call { ptr, i64, i64 } @finch.gen.load(ptr %t99, { ptr, i64, i64 } %t102, { ptr, i64, i64 } %t103) + store { ptr, i64, i64 } %t102, ptr %a105 + call void @finch_str_drop(ptr %a105) + %t106 = load { ptr, i64, i64 }, ptr %a2 + call void @finch.gen.store(ptr %t95, { ptr, i64, i64 } %t98, { ptr, i64, i64 } %t104, { ptr, i64, i64 } %t106) + store { ptr, i64, i64 } %t98, ptr %a107 + call void @finch_str_drop(ptr %a107) + store { ptr, i64, i64 } %t104, ptr %a108 + call void @finch_str_drop(ptr %a108) + br label %endif2638 +endif2638: + br label %endif2623 +endif2623: + ret void +} + +define internal void @finch.drop.S_gen_Saved(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.gen.Saved, ptr %a, i32 0, i32 0 + call void @finch.drop.arr_str(ptr %t1) + %t2 = getelementptr inbounds %S.gen.Saved, ptr %a, i32 0, i32 1 + call void @finch.drop.arr_str(ptr %t2) ret void } @@ -25524,719 +28713,884 @@ entry: %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 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca %S.gen.Saved, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca %S.ast.Type, align 16 + %a8 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca { ptr, i64, i64 }, align 16 + %a23 = alloca { ptr, i64, i64 }, align 16 + %a24 = alloca { ptr, i64, i64 }, align 16 + %a32 = alloca %S.gen.Saved, align 16 + %a35 = alloca { ptr, i64, i64 }, align 16 + %a36 = alloca { ptr, i64, i64 }, align 16 + %a46 = alloca %S.ast.Type, align 16 + %a47 = alloca %S.ast.Type, align 16 %a49 = alloca %S.ast.Type, align 16 - %a51 = alloca %S.ast.Type, align 16 + %a54 = alloca { ptr, i64, i64 }, align 16 + %a55 = 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 + %a59 = 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 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 + %a64 = alloca { ptr, i64, i64 }, align 16 + %a70 = alloca { ptr, i64, i64 }, align 16 + %a73 = alloca { ptr, i64, i64 }, align 16 + %a78 = alloca { ptr, i64, i64 }, align 16 + %a79 = alloca { ptr, i64, i64 }, align 16 + %a83 = 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 %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 %a99 = alloca { ptr, i64, i64 }, align 16 %a100 = alloca { ptr, i64, i64 }, align 16 %a101 = 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 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 + %a102 = 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 + %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 + %a118 = alloca { ptr, i64, i64 }, align 16 %a121 = 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 + %a122 = 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 %a132 = alloca { ptr, i64, i64 }, align 16 %a133 = alloca { ptr, i64, i64 }, align 16 %a134 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 + %a135 = 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 + %a141 = alloca { ptr, i64, i64 }, align 16 %a143 = alloca { ptr, i64, i64 }, align 16 %a144 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 + %a145 = alloca { ptr, i64, i64 }, align 16 + %a146 = alloca { ptr, i64, i64 }, align 16 + %a154 = alloca { ptr, i64, i64 }, align 16 + %a155 = alloca { ptr, i64, i64 }, align 16 %a156 = alloca { ptr, i64, i64 }, align 16 %a157 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 + %a160 = alloca { ptr, i64, i64 }, align 16 + %a161 = alloca { ptr, i64, i64 }, align 16 %a170 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = 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 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 + %a171 = alloca { ptr, i64, i64 }, align 16 + %a178 = 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 + %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 + %a213 = alloca { ptr, i64, i64 }, align 16 + %a214 = alloca { ptr, i64, i64 }, align 16 + %a215 = alloca { ptr, i64, i64 }, align 16 + %a216 = alloca { ptr, i64, i64 }, align 16 + %a218 = alloca { ptr, i64, i64 }, align 16 + %a219 = alloca { ptr, i64, i64 }, align 16 %a220 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a236 = 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 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 + %a221 = alloca { ptr, i64, i64 }, align 16 + %a224 = alloca { ptr, i64, i64 }, align 16 + %a226 = alloca { ptr, i64, i64 }, align 16 + %a227 = alloca { ptr, i64, i64 }, align 16 + %a231 = alloca { ptr, i64, i64 }, align 16 + %a241 = alloca { ptr, i64, i64 }, align 16 + %a251 = 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 - %a263 = 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 %a267 = alloca { ptr, i64, i64 }, align 16 %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a329 = alloca %S.gen.StructDef, align 16 - %a330 = alloca %S.gen.StructDef, align 16 - %a332 = alloca %S.gen.StructDef, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a345 = alloca 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 - %a376 = alloca { ptr, i64, i64 }, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a383 = 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 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a392 = 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 + %a273 = alloca { ptr, i64, i64 }, align 16 + %a276 = alloca { ptr, i64, i64 }, align 16 + %a277 = alloca { ptr, i64, i64 }, align 16 + %a278 = 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 + %a284 = alloca { ptr, i64, i64 }, align 16 + %a287 = alloca { ptr, i64, i64 }, align 16 + %a289 = 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 + %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 + %a298 = alloca { ptr, i64, i64 }, align 16 + %a301 = alloca { ptr, i64, i64 }, align 16 + %a304 = alloca { ptr, i64, i64 }, align 16 + %a323 = alloca { ptr, i64, i64 }, align 16 + %a324 = alloca { ptr, i64, i64 }, align 16 + %a341 = alloca { ptr, i64, i64 }, align 16 + %a342 = alloca { ptr, i64, i64 }, align 16 + %a364 = alloca %S.gen.StructDef, align 16 + %a365 = alloca %S.gen.StructDef, align 16 + %a367 = alloca %S.gen.StructDef, align 16 + %a371 = alloca { ptr, i64, i64 }, align 16 + %a377 = alloca { ptr, i64, i64 }, align 16 + %a381 = alloca i64, align 16 + %a396 = alloca { ptr, i64, i64 }, align 16 + %a397 = alloca { ptr, i64, i64 }, align 16 + %a398 = 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 - %a404 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca { ptr, i64, i64 }, align 16 - %a406 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 + %a403 = alloca { ptr, i64, i64 }, align 16 + %a413 = 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 + %a422 = alloca { ptr, i64, i64 }, align 16 + %a423 = alloca { ptr, i64, i64 }, align 16 + %a426 = alloca { ptr, i64, i64 }, align 16 %a427 = 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 %a432 = alloca { ptr, i64, i64 }, align 16 %a433 = alloca { ptr, i64, i64 }, align 16 - %a436 = alloca { ptr, i64, i64 }, align 16 - %a437 = alloca { ptr, i64, i64 }, align 16 + %a443 = alloca { ptr, i64, i64 }, align 16 + %a445 = 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 + %a449 = alloca { ptr, i64, i64 }, align 16 + %a452 = alloca { ptr, i64, i64 }, align 16 + %a453 = alloca { ptr, i64, i64 }, align 16 + %a471 = alloca { ptr, i64, i64 }, align 16 + %a472 = alloca { ptr, i64, i64 }, align 16 + %a473 = alloca { ptr, i64, i64 }, align 16 + %a475 = alloca { ptr, i64, i64 }, align 16 + %a476 = alloca { ptr, i64, i64 }, align 16 + %a477 = alloca { ptr, i64, i64 }, align 16 + %a478 = alloca { ptr, i64, i64 }, align 16 + %a480 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 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.1550, i64 12, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.1559, 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 %panic2575, label %ok2576 -panic2575: - call void @finch_panic(ptr @.str.1551, i64 789, ptr @.str.1552) + store { ptr, i64, i64 } %t4, ptr %a8 + call void @finch_str_drop(ptr %a8) + %t9 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } %t9, ptr %a10 + %t11 = load ptr, ptr %a1 + %t12 = icmp eq ptr %t11, null + br i1 %t12, label %panic2639, label %ok2640 +panic2639: + call void @finch_panic(ptr @.str.1560, i64 809, ptr @.str.1561) unreachable -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 %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 -endif2579: - %t20 = load ptr, ptr %a1 - %t21 = icmp eq ptr %t20, null - br i1 %t21, label %panic2580, label %ok2581 -panic2580: - call void @finch_panic(ptr @.str.1553, i64 792, ptr @.str.1554) +ok2640: + %t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 22 + %t14 = load { ptr, i64, i64 }, ptr %t13 + %t15 = load { ptr, i64, i64 }, ptr %a10 + %t16 = call i1 @finch.gen.has({ ptr, i64, i64 } %t14, { ptr, i64, i64 } %t15) + br i1 %t16, label %then2641, label %endif2643 +then2641: + %t17 = load { ptr, i64, i64 }, ptr %a10 + ret { ptr, i64, i64 } %t17 +endif2643: + %t18 = load ptr, ptr %a1 + %t19 = icmp eq ptr %t18, null + br i1 %t19, label %panic2644, label %ok2645 +panic2644: + call void @finch_panic(ptr @.str.1562, i64 812, ptr @.str.1563) unreachable -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 - store { ptr, i64, i64 } %t24, ptr %a25 - call void @finch_str_copy(ptr %a26, ptr %a25) - %t27 = load { ptr, i64, i64 }, ptr %a26 - %t28 = load i64, ptr %t23 - %t29 = add i64 %t28, 1 - call void @finch_arr_reserve(ptr %t22, i64 %t29, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t30 = load ptr, ptr %t22 - %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t30, i64 %t28 - store { ptr, i64, i64 } %t27, ptr %t31 - store i64 %t29, ptr %t23 - %t32 = load ptr, ptr %a1 - %t33 = call %S.gen.Saved @finch.gen.beginHelper(ptr %t32) - store %S.gen.Saved %t33, ptr %a34 - %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.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 %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 %range2585, label %inrange2586 -range2585: - call void @finch_panic_index(ptr @.str.1556, i64 795, i64 0, i64 %t43) +ok2645: + %t20 = getelementptr inbounds %S.gen.Gen, ptr %t18, i32 0, i32 22 + %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t20, i32 0, i32 1 + %t22 = load { ptr, i64, i64 }, ptr %a10 + 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 + %t30 = load ptr, ptr %a1 + %t31 = call %S.gen.Saved @finch.gen.beginHelper(ptr %t30) + store %S.gen.Saved %t31, ptr %a32 + %t33 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 + %t34 = load { ptr, i64, i64 }, ptr %t33 + store { ptr, i64, i64 } %t34, ptr %a35 + store { ptr, i64, i64 } { ptr @.str.1564, i64 5, i64 0 }, ptr %a36 + %t37 = call i32 @finch_str_eq(ptr %a35, ptr %a36) + %t38 = icmp ne i32 %t37, 0 + br i1 %t38, label %then2646, label %else2647 +then2646: + %t39 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t40 = load { ptr, i64, i64 }, ptr %t39 + %t41 = extractvalue { ptr, i64, i64 } %t40, 1 + %t42 = icmp uge i64 0, %t41 + br i1 %t42, label %range2649, label %inrange2650 +range2649: + call void @finch_panic_index(ptr @.str.1565, i64 815, i64 0, i64 %t41) unreachable -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 - store %S.ast.Type %t47, ptr %a48 - call void @finch.copy.S_ast_Type(ptr %a49, ptr %a48) - %t50 = load %S.ast.Type, ptr %a49 - store %S.ast.Type %t50, ptr %a51 - %t52 = load ptr, ptr %a1 - %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.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.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 %then2587, label %endif2589 -then2587: - %t67 = load ptr, ptr %a1 - %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.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 +inrange2650: + %t43 = extractvalue { ptr, i64, i64 } %t40, 0 + %t44 = getelementptr inbounds %S.ast.Type, ptr %t43, i64 0 + %t45 = load %S.ast.Type, ptr %t44 + store %S.ast.Type %t45, ptr %a46 + call void @finch.copy.S_ast_Type(ptr %a47, ptr %a46) + %t48 = load %S.ast.Type, ptr %a47 + store %S.ast.Type %t48, ptr %a49 + %t50 = load ptr, ptr %a1 + %t51 = load ptr, ptr %a1 + %t52 = load %S.ast.Type, ptr %a49 + %t53 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t51, %S.ast.Type %t52) + store { ptr, i64, i64 } { ptr @.str.1566, i64 55, i64 0 }, ptr %a55 + store { ptr, i64, i64 } %t53, ptr %a56 + call void @finch_str_concat(ptr %a54, ptr %a55, ptr %a56) + store { ptr, i64, i64 } %t53, ptr %a57 + call void @finch_str_drop(ptr %a57) + %t58 = load { ptr, i64, i64 }, ptr %a54 + store { ptr, i64, i64 } %t58, ptr %a60 + store { ptr, i64, i64 } { ptr @.str.1567, i64 1, i64 0 }, ptr %a61 + call void @finch_str_concat(ptr %a59, ptr %a60, ptr %a61) + store { ptr, i64, i64 } %t58, ptr %a62 + call void @finch_str_drop(ptr %a62) + %t63 = load { ptr, i64, i64 }, ptr %a59 + call void @finch.gen.emit(ptr %t50, { ptr, i64, i64 } %t63) + store { ptr, i64, i64 } %t63, ptr %a64 + call void @finch_str_drop(ptr %a64) + %t65 = load ptr, ptr %a1 + %t66 = load %S.ast.Type, ptr %a49 + %t67 = call i1 @finch.gen.owning(ptr %t65, %S.ast.Type %t66) + br i1 %t67, label %then2651, label %endif2653 +then2651: + %t68 = load ptr, ptr %a1 + %t69 = call { ptr, i64, i64 } @finch.gen.load(ptr %t68, { ptr, i64, i64 } { ptr @.str.1568, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1569, i64 4, i64 0 }) + store { ptr, i64, i64 } %t69, ptr %a70 + %t71 = load ptr, ptr %a1 + %t72 = call { ptr, i64, i64 } @finch.gen.load(ptr %t71, { ptr, i64, i64 } { ptr @.str.1570, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1571, i64 4, i64 0 }) + store { ptr, i64, i64 } %t72, ptr %a73 %t74 = load ptr, ptr %a1 - %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 - %t80 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t78, { ptr, i64, i64 } %t79) - store { ptr, i64, i64 } %t80, ptr %a81 - %t82 = load ptr, ptr %a1 - %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.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.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 - store { ptr, i64, i64 } %t93, ptr %a96 - store { ptr, i64, i64 } %t94, 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 %a100 - store { ptr, i64, i64 } { ptr @.str.1567, i64 6, i64 0 }, ptr %a101 + %t75 = load ptr, ptr %a1 + %t76 = call { ptr, i64, i64 } @finch.gen.op(ptr %t75, { ptr, i64, i64 } { ptr @.str.1573, i64 64, i64 0 }) + %t77 = call { ptr, i64, i64 } @finch.gen.load(ptr %t74, { ptr, i64, i64 } { ptr @.str.1572, i64 3, i64 0 }, { ptr, i64, i64 } %t76) + store { ptr, i64, i64 } %t76, ptr %a78 + call void @finch_str_drop(ptr %a78) + store { ptr, i64, i64 } %t77, ptr %a79 + %t80 = load ptr, ptr %a1 + %t81 = load { ptr, i64, i64 }, ptr %a79 + %t82 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t80, { ptr, i64, i64 } %t81) + store { ptr, i64, i64 } %t82, ptr %a83 + %t84 = load ptr, ptr %a1 + %t85 = load ptr, ptr %a1 + %t86 = load %S.ast.Type, ptr %a49 + %t87 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t85, %S.ast.Type %t86) + store { ptr, i64, i64 } { ptr @.str.1574, i64 23, i64 0 }, ptr %a89 + store { ptr, i64, i64 } %t87, ptr %a90 + call void @finch_str_concat(ptr %a88, ptr %a89, ptr %a90) + store { ptr, i64, i64 } %t87, ptr %a91 + call void @finch_str_drop(ptr %a91) + %t92 = load { ptr, i64, i64 }, ptr %a88 + store { ptr, i64, i64 } %t92, ptr %a94 + store { ptr, i64, i64 } { ptr @.str.1575, i64 6, i64 0 }, ptr %a95 + call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) + store { ptr, i64, i64 } %t92, ptr %a96 + call void @finch_str_drop(ptr %a96) + %t97 = load { ptr, i64, i64 }, ptr %a93 + %t98 = load { ptr, i64, i64 }, ptr %a70 + store { ptr, i64, i64 } %t97, 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 - %t103 = load { ptr, i64, i64 }, ptr %a81 - %t104 = extractvalue { ptr, i64, i64 } %t103, 1 - %t105 = icmp uge i64 3, %t104 - br i1 %t105, label %range2590, label %inrange2591 -range2590: - call void @finch_panic_index(ptr @.str.1568, i64 802, i64 3, i64 %t104) + store { ptr, i64, i64 } %t97, ptr %a102 + call void @finch_str_drop(ptr %a102) + %t103 = load { ptr, i64, i64 }, ptr %a99 + store { ptr, i64, i64 } %t103, ptr %a105 + store { ptr, i64, i64 } { ptr @.str.1576, i64 6, i64 0 }, ptr %a106 + call void @finch_str_concat(ptr %a104, ptr %a105, ptr %a106) + store { ptr, i64, i64 } %t103, ptr %a107 + call void @finch_str_drop(ptr %a107) + %t108 = load { ptr, i64, i64 }, ptr %a104 + %t109 = load { ptr, i64, i64 }, ptr %a83 + %t110 = extractvalue { ptr, i64, i64 } %t109, 1 + %t111 = icmp uge i64 3, %t110 + br i1 %t111, label %range2654, label %inrange2655 +range2654: + call void @finch_panic_index(ptr @.str.1577, i64 822, i64 3, i64 %t110) unreachable -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 - store { ptr, i64, i64 } %t102, 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 - %t113 = call { ptr, i64, i64 } @finch.gen.op(ptr %t82, { ptr, i64, i64 } %t112) - store { ptr, i64, i64 } %t113, ptr %a114 - %t115 = load ptr, ptr %a1 - %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.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.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 +inrange2655: + %t112 = extractvalue { ptr, i64, i64 } %t109, 0 + %t113 = getelementptr inbounds { ptr, i64, i64 }, ptr %t112, i64 3 + %t114 = load { ptr, i64, i64 }, ptr %t113 + store { ptr, i64, i64 } %t108, ptr %a116 + store { ptr, i64, i64 } %t114, ptr %a117 + call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) + store { ptr, i64, i64 } %t108, ptr %a118 + call void @finch_str_drop(ptr %a118) + %t119 = load { ptr, i64, i64 }, ptr %a115 + %t120 = call { ptr, i64, i64 } @finch.gen.op(ptr %t84, { ptr, i64, i64 } %t119) + store { ptr, i64, i64 } %t119, ptr %a121 + call void @finch_str_drop(ptr %a121) + store { ptr, i64, i64 } %t120, ptr %a122 + %t123 = load ptr, ptr %a1 + %t124 = load ptr, ptr %a1 + %t125 = load %S.ast.Type, ptr %a49 + %t126 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t124, %S.ast.Type %t125) + store { ptr, i64, i64 } { ptr @.str.1578, i64 23, i64 0 }, ptr %a128 store { ptr, i64, i64 } %t126, 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 + call void @finch_str_concat(ptr %a127, ptr %a128, ptr %a129) + store { ptr, i64, i64 } %t126, ptr %a130 + call void @finch_str_drop(ptr %a130) + %t131 = load { ptr, i64, i64 }, ptr %a127 store { ptr, i64, i64 } %t131, ptr %a133 - store { ptr, i64, i64 } { ptr @.str.1571, i64 6, i64 0 }, ptr %a134 + store { ptr, i64, i64 } { ptr @.str.1579, 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 %range2592, label %inrange2593 -range2592: - call void @finch_panic_index(ptr @.str.1572, i64 803, i64 3, i64 %t137) + store { ptr, i64, i64 } %t131, ptr %a135 + call void @finch_str_drop(ptr %a135) + %t136 = load { ptr, i64, i64 }, ptr %a132 + %t137 = load { ptr, i64, i64 }, ptr %a73 + store { ptr, i64, i64 } %t136, ptr %a139 + store { ptr, i64, i64 } %t137, ptr %a140 + call void @finch_str_concat(ptr %a138, ptr %a139, ptr %a140) + store { ptr, i64, i64 } %t136, ptr %a141 + call void @finch_str_drop(ptr %a141) + %t142 = load { ptr, i64, i64 }, ptr %a138 + store { ptr, i64, i64 } %t142, ptr %a144 + store { ptr, i64, i64 } { ptr @.str.1580, i64 6, i64 0 }, ptr %a145 + call void @finch_str_concat(ptr %a143, ptr %a144, ptr %a145) + store { ptr, i64, i64 } %t142, ptr %a146 + call void @finch_str_drop(ptr %a146) + %t147 = load { ptr, i64, i64 }, ptr %a143 + %t148 = load { ptr, i64, i64 }, ptr %a83 + %t149 = extractvalue { ptr, i64, i64 } %t148, 1 + %t150 = icmp uge i64 3, %t149 + br i1 %t150, label %range2656, label %inrange2657 +range2656: + call void @finch_panic_index(ptr @.str.1581, i64 823, i64 3, i64 %t149) unreachable -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 - store { ptr, i64, i64 } %t135, ptr %a143 - store { ptr, i64, i64 } %t141, ptr %a144 - call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144) - %t145 = load { ptr, i64, i64 }, ptr %a142 - %t146 = call { ptr, i64, i64 } @finch.gen.op(ptr %t115, { ptr, i64, i64 } %t145) - store { ptr, i64, i64 } %t146, ptr %a147 - %t148 = load ptr, ptr %a1 - %t149 = load { ptr, i64, i64 }, ptr %a114 - %t150 = load { ptr, i64, i64 }, ptr %a147 - %t151 = load %S.ast.Type, ptr %a51 - call void @finch.gen.copyAt(ptr %t148, { ptr, i64, i64 } %t149, { ptr, i64, i64 } %t150, %S.ast.Type %t151) - %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 %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.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 %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.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.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) - %t172 = load ptr, ptr %a1 - %t173 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t174 = load { ptr, i64, i64 }, ptr %t173 - %t175 = extractvalue { ptr, i64, i64 } %t174, 1 - %t176 = icmp uge i64 0, %t175 - br i1 %t176, label %range2597, label %inrange2598 -range2597: - call void @finch_panic_index(ptr @.str.1576, i64 809, i64 0, i64 %t175) +inrange2657: + %t151 = extractvalue { ptr, i64, i64 } %t148, 0 + %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %t151, i64 3 + %t153 = load { ptr, i64, i64 }, ptr %t152 + store { ptr, i64, i64 } %t147, ptr %a155 + store { ptr, i64, i64 } %t153, ptr %a156 + call void @finch_str_concat(ptr %a154, ptr %a155, ptr %a156) + store { ptr, i64, i64 } %t147, ptr %a157 + call void @finch_str_drop(ptr %a157) + %t158 = load { ptr, i64, i64 }, ptr %a154 + %t159 = call { ptr, i64, i64 } @finch.gen.op(ptr %t123, { ptr, i64, i64 } %t158) + store { ptr, i64, i64 } %t158, ptr %a160 + call void @finch_str_drop(ptr %a160) + store { ptr, i64, i64 } %t159, ptr %a161 + %t162 = load ptr, ptr %a1 + %t163 = load { ptr, i64, i64 }, ptr %a122 + %t164 = load { ptr, i64, i64 }, ptr %a161 + %t165 = load %S.ast.Type, ptr %a49 + call void @finch.gen.copyAt(ptr %t162, { ptr, i64, i64 } %t163, { ptr, i64, i64 } %t164, %S.ast.Type %t165) + %t166 = load ptr, ptr %a1 + %t167 = load { ptr, i64, i64 }, ptr %a83 + call void @finch.gen.loopEnd(ptr %t166, { ptr, i64, i64 } %t167) + call void @finch_str_drop(ptr %a161) + call void @finch_str_drop(ptr %a122) + call void @finch.drop.arr_str(ptr %a83) + call void @finch_str_drop(ptr %a79) + call void @finch_str_drop(ptr %a73) + call void @finch_str_drop(ptr %a70) + br label %endif2653 +endif2653: + call void @finch.drop.S_ast_Type(ptr %a49) + br label %endif2648 +else2647: + %t168 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 + %t169 = load { ptr, i64, i64 }, ptr %t168 + store { ptr, i64, i64 } %t169, ptr %a170 + store { ptr, i64, i64 } { ptr @.str.1582, i64 3, i64 0 }, ptr %a171 + %t172 = call i32 @finch_str_eq(ptr %a170, ptr %a171) + %t173 = icmp ne i32 %t172, 0 + br i1 %t173, label %then2658, label %else2659 +then2658: + %t174 = load ptr, ptr %a1 + %t175 = load ptr, ptr %a1 + %t176 = load %S.ast.Type, ptr %a2 + %t177 = call { ptr, i64, i64 } @finch.gen.entrySize(ptr %t175, %S.ast.Type %t176) + store { ptr, i64, i64 } { ptr @.str.1583, i64 55, i64 0 }, ptr %a179 + store { ptr, i64, i64 } %t177, ptr %a180 + call void @finch_str_concat(ptr %a178, ptr %a179, ptr %a180) + store { ptr, i64, i64 } %t177, ptr %a181 + call void @finch_str_drop(ptr %a181) + %t182 = load { ptr, i64, i64 }, ptr %a178 + store { ptr, i64, i64 } %t182, ptr %a184 + store { ptr, i64, i64 } { ptr @.str.1584, i64 1, i64 0 }, ptr %a185 + call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) + store { ptr, i64, i64 } %t182, ptr %a186 + call void @finch_str_drop(ptr %a186) + %t187 = load { ptr, i64, i64 }, ptr %a183 + call void @finch.gen.emit(ptr %t174, { ptr, i64, i64 } %t187) + store { ptr, i64, i64 } %t187, ptr %a188 + call void @finch_str_drop(ptr %a188) + %t189 = load ptr, ptr %a1 + %t190 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t191 = load { ptr, i64, i64 }, ptr %t190 + %t192 = extractvalue { ptr, i64, i64 } %t191, 1 + %t193 = icmp uge i64 0, %t192 + br i1 %t193, label %range2661, label %inrange2662 +range2661: + call void @finch_panic_index(ptr @.str.1585, i64 829, i64 0, i64 %t192) unreachable -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.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 %range2602, label %inrange2603 -range2602: - call void @finch_panic_index(ptr @.str.1577, i64 809, i64 1, i64 %t184) +inrange2662: + %t194 = extractvalue { ptr, i64, i64 } %t191, 0 + %t195 = getelementptr inbounds %S.ast.Type, ptr %t194, i64 0 + %t196 = load %S.ast.Type, ptr %t195 + %t197 = call i1 @finch.gen.owning(ptr %t189, %S.ast.Type %t196) + br label %logic.from2663 +logic.from2663: + br i1 %t197, label %logic.end2665, label %logic.rhs2664 +logic.rhs2664: + %t198 = load ptr, ptr %a1 + %t199 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t200 = load { ptr, i64, i64 }, ptr %t199 + %t201 = extractvalue { ptr, i64, i64 } %t200, 1 + %t202 = icmp uge i64 1, %t201 + br i1 %t202, label %range2666, label %inrange2667 +range2666: + call void @finch_panic_index(ptr @.str.1586, i64 829, i64 1, i64 %t201) unreachable -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.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.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.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.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 - %t209 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t207, { ptr, i64, i64 } %t208) - store { ptr, i64, i64 } %t209, ptr %a210 - %t211 = load ptr, ptr %a1 - %t212 = load %S.ast.Type, ptr %a2 - %t213 = load { ptr, i64, i64 }, ptr %a210 - %t214 = extractvalue { ptr, i64, i64 } %t213, 1 - %t215 = icmp uge i64 3, %t214 - br i1 %t215, label %range2608, label %inrange2609 -range2608: - call void @finch_panic_index(ptr @.str.1582, i64 813, i64 3, i64 %t214) +inrange2667: + %t203 = extractvalue { ptr, i64, i64 } %t200, 0 + %t204 = getelementptr inbounds %S.ast.Type, ptr %t203, i64 1 + %t205 = load %S.ast.Type, ptr %t204 + %t206 = call i1 @finch.gen.owning(ptr %t198, %S.ast.Type %t205) + br label %logic.rend2668 +logic.rend2668: + br label %logic.end2665 +logic.end2665: + %t207 = phi i1 [ true, %logic.from2663 ], [ %t206, %logic.rend2668 ] + br i1 %t207, label %then2669, label %endif2671 +then2669: + %t208 = load ptr, ptr %a1 + %t209 = load ptr, ptr %a1 + %t210 = load ptr, ptr %a1 + %t211 = load %S.ast.Type, ptr %a2 + %t212 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t210, %S.ast.Type %t211) + store { ptr, i64, i64 } { ptr @.str.1588, i64 23, i64 0 }, ptr %a214 + store { ptr, i64, i64 } %t212, ptr %a215 + call void @finch_str_concat(ptr %a213, ptr %a214, ptr %a215) + store { ptr, i64, i64 } %t212, ptr %a216 + call void @finch_str_drop(ptr %a216) + %t217 = load { ptr, i64, i64 }, ptr %a213 + store { ptr, i64, i64 } %t217, ptr %a219 + store { ptr, i64, i64 } { ptr @.str.1589, i64 24, i64 0 }, ptr %a220 + call void @finch_str_concat(ptr %a218, ptr %a219, ptr %a220) + store { ptr, i64, i64 } %t217, ptr %a221 + call void @finch_str_drop(ptr %a221) + %t222 = load { ptr, i64, i64 }, ptr %a218 + %t223 = call { ptr, i64, i64 } @finch.gen.op(ptr %t209, { ptr, i64, i64 } %t222) + store { ptr, i64, i64 } %t222, ptr %a224 + call void @finch_str_drop(ptr %a224) + %t225 = call { ptr, i64, i64 } @finch.gen.load(ptr %t208, { ptr, i64, i64 } { ptr @.str.1587, i64 3, i64 0 }, { ptr, i64, i64 } %t223) + store { ptr, i64, i64 } %t223, ptr %a226 + call void @finch_str_drop(ptr %a226) + store { ptr, i64, i64 } %t225, ptr %a227 + %t228 = load ptr, ptr %a1 + %t229 = load { ptr, i64, i64 }, ptr %a227 + %t230 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t228, { ptr, i64, i64 } %t229) + store { ptr, i64, i64 } %t230, ptr %a231 + %t232 = load ptr, ptr %a1 + %t233 = load %S.ast.Type, ptr %a2 + %t234 = load { ptr, i64, i64 }, ptr %a231 + %t235 = extractvalue { ptr, i64, i64 } %t234, 1 + %t236 = icmp uge i64 3, %t235 + br i1 %t236, label %range2672, label %inrange2673 +range2672: + call void @finch_panic_index(ptr @.str.1591, i64 833, i64 3, i64 %t235) unreachable -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.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 %range2610, label %inrange2611 -range2610: - call void @finch_panic_index(ptr @.str.1584, i64 814, i64 3, i64 %t224) +inrange2673: + %t237 = extractvalue { ptr, i64, i64 } %t234, 0 + %t238 = getelementptr inbounds { ptr, i64, i64 }, ptr %t237, i64 3 + %t239 = load { ptr, i64, i64 }, ptr %t238 + %t240 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t232, { ptr, i64, i64 } { ptr @.str.1590, i64 4, i64 0 }, %S.ast.Type %t233, { ptr, i64, i64 } %t239) + store { ptr, i64, i64 } %t240, ptr %a241 + %t242 = load ptr, ptr %a1 + %t243 = load %S.ast.Type, ptr %a2 + %t244 = load { ptr, i64, i64 }, ptr %a231 + %t245 = extractvalue { ptr, i64, i64 } %t244, 1 + %t246 = icmp uge i64 3, %t245 + br i1 %t246, label %range2674, label %inrange2675 +range2674: + call void @finch_panic_index(ptr @.str.1593, i64 834, i64 3, i64 %t245) unreachable -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.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.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.1586, i64 10, i64 0 }) - store { ptr, i64, i64 } %t235, ptr %a236 - %t237 = load ptr, ptr %a1 - %t238 = load ptr, ptr %a1 - %t239 = load ptr, ptr %a1 - %t240 = load ptr, ptr %a1 - %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.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.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 - 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.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.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.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) - %t272 = load { ptr, i64, i64 }, ptr %a233 - %t273 = load { ptr, i64, i64 }, ptr %a236 - call void @finch.gen.condBr(ptr %t237, { ptr, i64, i64 } %t271, { ptr, i64, i64 } %t272, { ptr, i64, i64 } %t273) - %t274 = load ptr, ptr %a1 - %t275 = load { ptr, i64, i64 }, ptr %a233 - call void @finch.gen.label(ptr %t274, { ptr, i64, i64 } %t275) - %t276 = load ptr, ptr %a1 - %t277 = load ptr, ptr %a1 - %t278 = load { ptr, i64, i64 }, ptr %a230 - %t279 = load %S.ast.Type, ptr %a2 - %t280 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t277, { ptr, i64, i64 } %t278, %S.ast.Type %t279, i64 1) - %t281 = load ptr, ptr %a1 - %t282 = load { ptr, i64, i64 }, ptr %a220 - %t283 = load %S.ast.Type, ptr %a2 - %t284 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t281, { ptr, i64, i64 } %t282, %S.ast.Type %t283, i64 1) - %t285 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t286 = load { ptr, i64, i64 }, ptr %t285 - %t287 = extractvalue { ptr, i64, i64 } %t286, 1 - %t288 = icmp uge i64 0, %t287 - br i1 %t288, label %range2612, label %inrange2613 -range2612: - call void @finch_panic_index(ptr @.str.1593, i64 819, i64 0, i64 %t287) - unreachable -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 - call void @finch.gen.copyAt(ptr %t276, { ptr, i64, i64 } %t280, { ptr, i64, i64 } %t284, %S.ast.Type %t291) - %t292 = load ptr, ptr %a1 - %t293 = load ptr, ptr %a1 - %t294 = load { ptr, i64, i64 }, ptr %a230 - %t295 = load %S.ast.Type, ptr %a2 - %t296 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t293, { ptr, i64, i64 } %t294, %S.ast.Type %t295, i64 2) - %t297 = load ptr, ptr %a1 - %t298 = load { ptr, i64, i64 }, ptr %a220 - %t299 = load %S.ast.Type, ptr %a2 - %t300 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t297, { ptr, i64, i64 } %t298, %S.ast.Type %t299, i64 2) - %t301 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t302 = load { ptr, i64, i64 }, ptr %t301 - %t303 = extractvalue { ptr, i64, i64 } %t302, 1 - %t304 = icmp uge i64 1, %t303 - br i1 %t304, label %range2614, label %inrange2615 -range2614: - call void @finch_panic_index(ptr @.str.1594, i64 820, i64 1, i64 %t303) - unreachable -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 - call void @finch.gen.copyAt(ptr %t292, { ptr, i64, i64 } %t296, { ptr, i64, i64 } %t300, %S.ast.Type %t307) +inrange2675: + %t247 = extractvalue { ptr, i64, i64 } %t244, 0 + %t248 = getelementptr inbounds { ptr, i64, i64 }, ptr %t247, i64 3 + %t249 = load { ptr, i64, i64 }, ptr %t248 + %t250 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t242, { ptr, i64, i64 } { ptr @.str.1592, i64 4, i64 0 }, %S.ast.Type %t243, { ptr, i64, i64 } %t249) + store { ptr, i64, i64 } %t250, ptr %a251 + %t252 = load ptr, ptr %a1 + %t253 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t252, { ptr, i64, i64 } { ptr @.str.1594, i64 10, i64 0 }) + store { ptr, i64, i64 } %t253, ptr %a254 + %t255 = load ptr, ptr %a1 + %t256 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t255, { ptr, i64, i64 } { ptr @.str.1595, i64 10, i64 0 }) + store { ptr, i64, i64 } %t256, ptr %a257 + %t258 = load ptr, ptr %a1 + %t259 = load ptr, ptr %a1 + %t260 = load ptr, ptr %a1 + %t261 = load ptr, ptr %a1 + %t262 = load ptr, ptr %a1 + %t263 = load %S.ast.Type, ptr %a2 + %t264 = call { ptr, i64, i64 } @finch.gen.entryTy(ptr %t262, %S.ast.Type %t263) + store { ptr, i64, i64 } { ptr @.str.1598, i64 23, i64 0 }, ptr %a266 + store { ptr, i64, i64 } %t264, ptr %a267 + call void @finch_str_concat(ptr %a265, ptr %a266, ptr %a267) + store { ptr, i64, i64 } %t264, ptr %a268 + call void @finch_str_drop(ptr %a268) + %t269 = load { ptr, i64, i64 }, ptr %a265 + store { ptr, i64, i64 } %t269, ptr %a271 + store { ptr, i64, i64 } { ptr @.str.1599, i64 6, i64 0 }, ptr %a272 + call void @finch_str_concat(ptr %a270, ptr %a271, ptr %a272) + store { ptr, i64, i64 } %t269, ptr %a273 + call void @finch_str_drop(ptr %a273) + %t274 = load { ptr, i64, i64 }, ptr %a270 + %t275 = load { ptr, i64, i64 }, ptr %a241 + store { ptr, i64, i64 } %t274, ptr %a277 + store { ptr, i64, i64 } %t275, ptr %a278 + call void @finch_str_concat(ptr %a276, ptr %a277, ptr %a278) + store { ptr, i64, i64 } %t274, ptr %a279 + call void @finch_str_drop(ptr %a279) + %t280 = load { ptr, i64, i64 }, ptr %a276 + store { ptr, i64, i64 } %t280, ptr %a282 + store { ptr, i64, i64 } { ptr @.str.1600, i64 14, i64 0 }, ptr %a283 + call void @finch_str_concat(ptr %a281, ptr %a282, ptr %a283) + store { ptr, i64, i64 } %t280, ptr %a284 + call void @finch_str_drop(ptr %a284) + %t285 = load { ptr, i64, i64 }, ptr %a281 + %t286 = call { ptr, i64, i64 } @finch.gen.op(ptr %t261, { ptr, i64, i64 } %t285) + store { ptr, i64, i64 } %t285, ptr %a287 + call void @finch_str_drop(ptr %a287) + %t288 = call { ptr, i64, i64 } @finch.gen.load(ptr %t260, { ptr, i64, i64 } { ptr @.str.1597, i64 3, i64 0 }, { ptr, i64, i64 } %t286) + store { ptr, i64, i64 } %t286, ptr %a289 + call void @finch_str_drop(ptr %a289) + store { ptr, i64, i64 } { ptr @.str.1596, i64 12, i64 0 }, ptr %a291 + store { ptr, i64, i64 } %t288, ptr %a292 + call void @finch_str_concat(ptr %a290, ptr %a291, ptr %a292) + store { ptr, i64, i64 } %t288, ptr %a293 + call void @finch_str_drop(ptr %a293) + %t294 = load { ptr, i64, i64 }, ptr %a290 + store { ptr, i64, i64 } %t294, ptr %a296 + store { ptr, i64, i64 } { ptr @.str.1601, i64 3, i64 0 }, ptr %a297 + call void @finch_str_concat(ptr %a295, ptr %a296, ptr %a297) + store { ptr, i64, i64 } %t294, ptr %a298 + call void @finch_str_drop(ptr %a298) + %t299 = load { ptr, i64, i64 }, ptr %a295 + %t300 = call { ptr, i64, i64 } @finch.gen.op(ptr %t259, { ptr, i64, i64 } %t299) + store { ptr, i64, i64 } %t299, ptr %a301 + call void @finch_str_drop(ptr %a301) + %t302 = load { ptr, i64, i64 }, ptr %a254 + %t303 = load { ptr, i64, i64 }, ptr %a257 + call void @finch.gen.condBr(ptr %t258, { ptr, i64, i64 } %t300, { ptr, i64, i64 } %t302, { ptr, i64, i64 } %t303) + store { ptr, i64, i64 } %t300, ptr %a304 + call void @finch_str_drop(ptr %a304) + %t305 = load ptr, ptr %a1 + %t306 = load { ptr, i64, i64 }, ptr %a254 + call void @finch.gen.label(ptr %t305, { ptr, i64, i64 } %t306) + %t307 = load ptr, ptr %a1 %t308 = load ptr, ptr %a1 - %t309 = load { ptr, i64, i64 }, ptr %a236 - call void @finch.gen.br(ptr %t308, { ptr, i64, i64 } %t309) - %t310 = load ptr, ptr %a1 - %t311 = load { ptr, i64, i64 }, ptr %a236 - call void @finch.gen.label(ptr %t310, { ptr, i64, i64 } %t311) + %t309 = load { ptr, i64, i64 }, ptr %a251 + %t310 = load %S.ast.Type, ptr %a2 + %t311 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t308, { ptr, i64, i64 } %t309, %S.ast.Type %t310, i64 1) %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 %endif2607 -endif2607: - br label %endif2596 -else2595: - %t314 = load ptr, ptr %a1 - %t315 = icmp eq ptr %t314, null - br i1 %t315, label %panic2616, label %ok2617 -panic2616: - call void @finch_panic(ptr @.str.1595, i64 826, ptr @.str.1596) + %t313 = load { ptr, i64, i64 }, ptr %a241 + %t314 = load %S.ast.Type, ptr %a2 + %t315 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t312, { ptr, i64, i64 } %t313, %S.ast.Type %t314, i64 1) + %t316 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t317 = load { ptr, i64, i64 }, ptr %t316 + %t318 = extractvalue { ptr, i64, i64 } %t317, 1 + %t319 = icmp uge i64 0, %t318 + br i1 %t319, label %range2676, label %inrange2677 +range2676: + call void @finch_panic_index(ptr @.str.1602, i64 839, i64 0, i64 %t318) unreachable -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 - %t319 = load { ptr, i64, i64 }, ptr %t318 - %t320 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t321 = load { ptr, i64, i64 }, ptr %t320 - %t322 = call i64 @finch.gen.findStruct(ptr %t317, { ptr, i64, i64 } %t319, { ptr, i64, i64 } %t321) - %t323 = load { ptr, i64, i64 }, ptr %t316 - %t324 = extractvalue { ptr, i64, i64 } %t323, 1 - %t325 = icmp uge i64 %t322, %t324 - br i1 %t325, label %range2618, label %inrange2619 -range2618: - call void @finch_panic_index(ptr @.str.1597, i64 826, i64 %t322, i64 %t324) +inrange2677: + %t320 = extractvalue { ptr, i64, i64 } %t317, 0 + %t321 = getelementptr inbounds %S.ast.Type, ptr %t320, i64 0 + %t322 = load %S.ast.Type, ptr %t321 + call void @finch.gen.copyAt(ptr %t307, { ptr, i64, i64 } %t311, { ptr, i64, i64 } %t315, %S.ast.Type %t322) + store { ptr, i64, i64 } %t311, ptr %a323 + call void @finch_str_drop(ptr %a323) + store { ptr, i64, i64 } %t315, ptr %a324 + call void @finch_str_drop(ptr %a324) + %t325 = load ptr, ptr %a1 + %t326 = load ptr, ptr %a1 + %t327 = load { ptr, i64, i64 }, ptr %a251 + %t328 = load %S.ast.Type, ptr %a2 + %t329 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t326, { ptr, i64, i64 } %t327, %S.ast.Type %t328, i64 2) + %t330 = load ptr, ptr %a1 + %t331 = load { ptr, i64, i64 }, ptr %a241 + %t332 = load %S.ast.Type, ptr %a2 + %t333 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t330, { ptr, i64, i64 } %t331, %S.ast.Type %t332, i64 2) + %t334 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t335 = load { ptr, i64, i64 }, ptr %t334 + %t336 = extractvalue { ptr, i64, i64 } %t335, 1 + %t337 = icmp uge i64 1, %t336 + br i1 %t337, label %range2678, label %inrange2679 +range2678: + call void @finch_panic_index(ptr @.str.1603, i64 840, i64 1, i64 %t336) unreachable -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 - store %S.gen.StructDef %t328, ptr %a329 - call void @finch.copy.S_gen_StructDef(ptr %a330, ptr %a329) - %t331 = load %S.gen.StructDef, ptr %a330 - store %S.gen.StructDef %t331, ptr %a332 - %t333 = load ptr, ptr %a1 - %t334 = load %S.ast.Type, ptr %a2 - %t335 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t333, %S.ast.Type %t334) - store { ptr, i64, i64 } %t335, ptr %a336 - %t337 = load ptr, ptr %a1 - %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.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.cond2620 -for.cond2620: - %t346 = load i64, ptr %a345 - %t347 = icmp slt i64 %t346, %t344 - 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 %range2624, label %inrange2625 -range2624: - call void @finch_panic_index(ptr @.str.1600, i64 830, i64 %t350, i64 %t352) +inrange2679: + %t338 = extractvalue { ptr, i64, i64 } %t335, 0 + %t339 = getelementptr inbounds %S.ast.Type, ptr %t338, i64 1 + %t340 = load %S.ast.Type, ptr %t339 + call void @finch.gen.copyAt(ptr %t325, { ptr, i64, i64 } %t329, { ptr, i64, i64 } %t333, %S.ast.Type %t340) + store { ptr, i64, i64 } %t329, ptr %a341 + call void @finch_str_drop(ptr %a341) + store { ptr, i64, i64 } %t333, ptr %a342 + call void @finch_str_drop(ptr %a342) + %t343 = load ptr, ptr %a1 + %t344 = load { ptr, i64, i64 }, ptr %a257 + call void @finch.gen.br(ptr %t343, { ptr, i64, i64 } %t344) + %t345 = load ptr, ptr %a1 + %t346 = load { ptr, i64, i64 }, ptr %a257 + call void @finch.gen.label(ptr %t345, { ptr, i64, i64 } %t346) + %t347 = load ptr, ptr %a1 + %t348 = load { ptr, i64, i64 }, ptr %a231 + call void @finch.gen.loopEnd(ptr %t347, { ptr, i64, i64 } %t348) + call void @finch_str_drop(ptr %a257) + call void @finch_str_drop(ptr %a254) + call void @finch_str_drop(ptr %a251) + call void @finch_str_drop(ptr %a241) + call void @finch.drop.arr_str(ptr %a231) + call void @finch_str_drop(ptr %a227) + br label %endif2671 +endif2671: + br label %endif2660 +else2659: + %t349 = load ptr, ptr %a1 + %t350 = icmp eq ptr %t349, null + br i1 %t350, label %panic2680, label %ok2681 +panic2680: + call void @finch_panic(ptr @.str.1604, i64 846, ptr @.str.1605) unreachable -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 %then2626, label %endif2628 -then2626: - %t358 = load ptr, ptr %a1 - %t359 = load { ptr, i64, i64 }, ptr %a336 - 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.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 - %t369 = load i64, ptr %a345 - %t370 = load { ptr, i64, i64 }, ptr %t368 - %t371 = extractvalue { ptr, i64, i64 } %t370, 1 - %t372 = icmp uge i64 %t369, %t371 - br i1 %t372, label %range2629, label %inrange2630 -range2629: - call void @finch_panic_index(ptr @.str.1603, i64 831, i64 %t369, i64 %t371) +ok2681: + %t351 = getelementptr inbounds %S.gen.Gen, ptr %t349, i32 0, i32 16 + %t352 = load ptr, ptr %a1 + %t353 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 + %t354 = load { ptr, i64, i64 }, ptr %t353 + %t355 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 + %t356 = load { ptr, i64, i64 }, ptr %t355 + %t357 = call i64 @finch.gen.findStruct(ptr %t352, { ptr, i64, i64 } %t354, { ptr, i64, i64 } %t356) + %t358 = load { ptr, i64, i64 }, ptr %t351 + %t359 = extractvalue { ptr, i64, i64 } %t358, 1 + %t360 = icmp uge i64 %t357, %t359 + br i1 %t360, label %range2682, label %inrange2683 +range2682: + call void @finch_panic_index(ptr @.str.1606, i64 846, i64 %t357, i64 %t359) unreachable -inrange2630: - %t373 = extractvalue { ptr, i64, i64 } %t370, 0 - %t374 = getelementptr inbounds i64, ptr %t373, i64 %t369 - %t375 = load i64, ptr %t374 - call void @finch_str_from_int(ptr %a376, i64 %t375) - %t377 = load { ptr, i64, i64 }, ptr %a376 - store { ptr, i64, i64 } %t367, ptr %a379 - store { ptr, i64, i64 } %t377, ptr %a380 - call void @finch_str_concat(ptr %a378, ptr %a379, ptr %a380) - %t381 = load { ptr, i64, i64 }, ptr %a378 - %t382 = call { ptr, i64, i64 } @finch.gen.op(ptr %t358, { ptr, i64, i64 } %t381) - store { ptr, i64, i64 } %t382, ptr %a383 +inrange2683: + %t361 = extractvalue { ptr, i64, i64 } %t358, 0 + %t362 = getelementptr inbounds %S.gen.StructDef, ptr %t361, i64 %t357 + %t363 = load %S.gen.StructDef, ptr %t362 + store %S.gen.StructDef %t363, ptr %a364 + call void @finch.copy.S_gen_StructDef(ptr %a365, ptr %a364) + %t366 = load %S.gen.StructDef, ptr %a365 + store %S.gen.StructDef %t366, ptr %a367 + %t368 = load ptr, ptr %a1 + %t369 = load %S.ast.Type, ptr %a2 + %t370 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t368, %S.ast.Type %t369) + store { ptr, i64, i64 } %t370, ptr %a371 + %t372 = load ptr, ptr %a1 + %t373 = load { ptr, i64, i64 }, ptr %a371 + %t374 = load ptr, ptr %a1 + %t375 = load { ptr, i64, i64 }, ptr %a371 + %t376 = call { ptr, i64, i64 } @finch.gen.load(ptr %t374, { ptr, i64, i64 } %t375, { ptr, i64, i64 } { ptr @.str.1607, i64 4, i64 0 }) + call void @finch.gen.store(ptr %t372, { ptr, i64, i64 } %t373, { ptr, i64, i64 } %t376, { ptr, i64, i64 } { ptr @.str.1608, i64 4, i64 0 }) + store { ptr, i64, i64 } %t376, ptr %a377 + call void @finch_str_drop(ptr %a377) + %t378 = getelementptr inbounds %S.gen.StructDef, ptr %a367, i32 0, i32 12 + %t379 = getelementptr inbounds { ptr, i64, i64 }, ptr %t378, i32 0, i32 1 + %t380 = load i64, ptr %t379 + store i64 0, ptr %a381 + br label %for.cond2684 +for.cond2684: + %t382 = load i64, ptr %a381 + %t383 = icmp slt i64 %t382, %t380 + br i1 %t383, label %for.body2685, label %for.end2687 +for.body2685: %t384 = load ptr, ptr %a1 - %t385 = load { ptr, i64, i64 }, ptr %a336 - 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.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 - %t395 = load i64, ptr %a345 - %t396 = load { ptr, i64, i64 }, ptr %t394 - %t397 = extractvalue { ptr, i64, i64 } %t396, 1 - %t398 = icmp uge i64 %t395, %t397 - br i1 %t398, label %range2631, label %inrange2632 -range2631: - call void @finch_panic_index(ptr @.str.1606, i64 832, i64 %t395, i64 %t397) + %t385 = getelementptr inbounds %S.gen.StructDef, ptr %a367, i32 0, i32 12 + %t386 = load i64, ptr %a381 + %t387 = load { ptr, i64, i64 }, ptr %t385 + %t388 = extractvalue { ptr, i64, i64 } %t387, 1 + %t389 = icmp uge i64 %t386, %t388 + br i1 %t389, label %range2688, label %inrange2689 +range2688: + call void @finch_panic_index(ptr @.str.1609, i64 850, i64 %t386, i64 %t388) unreachable -inrange2632: - %t399 = extractvalue { ptr, i64, i64 } %t396, 0 - %t400 = getelementptr inbounds i64, ptr %t399, i64 %t395 - %t401 = load i64, ptr %t400 - call void @finch_str_from_int(ptr %a402, i64 %t401) - %t403 = load { ptr, i64, i64 }, ptr %a402 - store { ptr, i64, i64 } %t393, 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 - %t408 = call { ptr, i64, i64 } @finch.gen.op(ptr %t384, { ptr, i64, i64 } %t407) - store { ptr, i64, i64 } %t408, ptr %a409 - %t410 = load ptr, ptr %a1 - %t411 = load { ptr, i64, i64 }, ptr %a383 - %t412 = load { ptr, i64, i64 }, ptr %a409 - %t413 = getelementptr inbounds %S.gen.StructDef, ptr %a332, i32 0, i32 12 - %t414 = load i64, ptr %a345 - %t415 = load { ptr, i64, i64 }, ptr %t413 - %t416 = extractvalue { ptr, i64, i64 } %t415, 1 - %t417 = icmp uge i64 %t414, %t416 - br i1 %t417, label %range2633, label %inrange2634 -range2633: - call void @finch_panic_index(ptr @.str.1607, i64 833, i64 %t414, i64 %t416) +inrange2689: + %t390 = extractvalue { ptr, i64, i64 } %t387, 0 + %t391 = getelementptr inbounds %S.ast.Type, ptr %t390, i64 %t386 + %t392 = load %S.ast.Type, ptr %t391 + %t393 = call i1 @finch.gen.owning(ptr %t384, %S.ast.Type %t392) + br i1 %t393, label %then2690, label %endif2692 +then2690: + %t394 = load ptr, ptr %a1 + %t395 = load { ptr, i64, i64 }, ptr %a371 + store { ptr, i64, i64 } { ptr @.str.1610, i64 23, i64 0 }, ptr %a397 + store { ptr, i64, i64 } %t395, ptr %a398 + call void @finch_str_concat(ptr %a396, ptr %a397, ptr %a398) + %t399 = load { ptr, i64, i64 }, ptr %a396 + store { ptr, i64, i64 } %t399, ptr %a401 + store { ptr, i64, i64 } { ptr @.str.1611, i64 23, i64 0 }, ptr %a402 + call void @finch_str_concat(ptr %a400, ptr %a401, ptr %a402) + store { ptr, i64, i64 } %t399, ptr %a403 + call void @finch_str_drop(ptr %a403) + %t404 = load { ptr, i64, i64 }, ptr %a400 + %t405 = getelementptr inbounds %S.gen.StructDef, ptr %a367, i32 0, i32 3 + %t406 = load i64, ptr %a381 + %t407 = load { ptr, i64, i64 }, ptr %t405 + %t408 = extractvalue { ptr, i64, i64 } %t407, 1 + %t409 = icmp uge i64 %t406, %t408 + br i1 %t409, label %range2693, label %inrange2694 +range2693: + call void @finch_panic_index(ptr @.str.1612, i64 851, i64 %t406, i64 %t408) unreachable -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 %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.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.1608, i64 8, i64 0 }) +inrange2694: + %t410 = extractvalue { ptr, i64, i64 } %t407, 0 + %t411 = getelementptr inbounds i64, ptr %t410, i64 %t406 + %t412 = load i64, ptr %t411 + call void @finch_str_from_int(ptr %a413, i64 %t412) + %t414 = load { ptr, i64, i64 }, ptr %a413 + store { ptr, i64, i64 } %t404, ptr %a416 + store { ptr, i64, i64 } %t414, ptr %a417 + call void @finch_str_concat(ptr %a415, ptr %a416, ptr %a417) + store { ptr, i64, i64 } %t404, ptr %a418 + call void @finch_str_drop(ptr %a418) + store { ptr, i64, i64 } %t414, ptr %a419 + call void @finch_str_drop(ptr %a419) + %t420 = load { ptr, i64, i64 }, ptr %a415 + %t421 = call { ptr, i64, i64 } @finch.gen.op(ptr %t394, { ptr, i64, i64 } %t420) + store { ptr, i64, i64 } %t420, ptr %a422 + call void @finch_str_drop(ptr %a422) + store { ptr, i64, i64 } %t421, ptr %a423 %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.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.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) - %t435 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t435, ptr %a436 - call void @finch_str_copy(ptr %a437, ptr %a436) - %t438 = load { ptr, i64, i64 }, ptr %a437 - ret { ptr, i64, i64 } %t438 + %t425 = load { ptr, i64, i64 }, ptr %a371 + store { ptr, i64, i64 } { ptr @.str.1613, i64 23, i64 0 }, ptr %a427 + store { ptr, i64, i64 } %t425, ptr %a428 + call void @finch_str_concat(ptr %a426, ptr %a427, ptr %a428) + %t429 = load { ptr, i64, i64 }, ptr %a426 + store { ptr, i64, i64 } %t429, ptr %a431 + store { ptr, i64, i64 } { ptr @.str.1614, i64 23, i64 0 }, ptr %a432 + call void @finch_str_concat(ptr %a430, ptr %a431, ptr %a432) + store { ptr, i64, i64 } %t429, ptr %a433 + call void @finch_str_drop(ptr %a433) + %t434 = load { ptr, i64, i64 }, ptr %a430 + %t435 = getelementptr inbounds %S.gen.StructDef, ptr %a367, i32 0, i32 3 + %t436 = load i64, ptr %a381 + %t437 = load { ptr, i64, i64 }, ptr %t435 + %t438 = extractvalue { ptr, i64, i64 } %t437, 1 + %t439 = icmp uge i64 %t436, %t438 + br i1 %t439, label %range2695, label %inrange2696 +range2695: + call void @finch_panic_index(ptr @.str.1615, i64 852, i64 %t436, i64 %t438) + unreachable +inrange2696: + %t440 = extractvalue { ptr, i64, i64 } %t437, 0 + %t441 = getelementptr inbounds i64, ptr %t440, i64 %t436 + %t442 = load i64, ptr %t441 + call void @finch_str_from_int(ptr %a443, i64 %t442) + %t444 = load { ptr, i64, i64 }, ptr %a443 + store { ptr, i64, i64 } %t434, ptr %a446 + store { ptr, i64, i64 } %t444, ptr %a447 + call void @finch_str_concat(ptr %a445, ptr %a446, ptr %a447) + store { ptr, i64, i64 } %t434, ptr %a448 + call void @finch_str_drop(ptr %a448) + store { ptr, i64, i64 } %t444, ptr %a449 + call void @finch_str_drop(ptr %a449) + %t450 = load { ptr, i64, i64 }, ptr %a445 + %t451 = call { ptr, i64, i64 } @finch.gen.op(ptr %t424, { ptr, i64, i64 } %t450) + store { ptr, i64, i64 } %t450, ptr %a452 + call void @finch_str_drop(ptr %a452) + store { ptr, i64, i64 } %t451, ptr %a453 + %t454 = load ptr, ptr %a1 + %t455 = load { ptr, i64, i64 }, ptr %a423 + %t456 = load { ptr, i64, i64 }, ptr %a453 + %t457 = getelementptr inbounds %S.gen.StructDef, ptr %a367, i32 0, i32 12 + %t458 = load i64, ptr %a381 + %t459 = load { ptr, i64, i64 }, ptr %t457 + %t460 = extractvalue { ptr, i64, i64 } %t459, 1 + %t461 = icmp uge i64 %t458, %t460 + br i1 %t461, label %range2697, label %inrange2698 +range2697: + call void @finch_panic_index(ptr @.str.1616, i64 853, i64 %t458, i64 %t460) + unreachable +inrange2698: + %t462 = extractvalue { ptr, i64, i64 } %t459, 0 + %t463 = getelementptr inbounds %S.ast.Type, ptr %t462, i64 %t458 + %t464 = load %S.ast.Type, ptr %t463 + call void @finch.gen.copyAt(ptr %t454, { ptr, i64, i64 } %t455, { ptr, i64, i64 } %t456, %S.ast.Type %t464) + call void @finch_str_drop(ptr %a453) + call void @finch_str_drop(ptr %a423) + br label %endif2692 +endif2692: + br label %for.step2686 +for.step2686: + %t465 = load i64, ptr %a381 + %t466 = add i64 %t465, 1 + store i64 %t466, ptr %a381 + br label %for.cond2684 +for.end2687: + call void @finch_str_drop(ptr %a371) + call void @finch.drop.S_gen_StructDef(ptr %a367) + br label %endif2660 +endif2660: + br label %endif2648 +endif2648: + %t467 = load ptr, ptr %a1 + call void @finch.gen.emit(ptr %t467, { ptr, i64, i64 } { ptr @.str.1617, i64 8, i64 0 }) + %t468 = load ptr, ptr %a1 + %t469 = load %S.gen.Saved, ptr %a32 + %t470 = load { ptr, i64, i64 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.1618, i64 21, i64 0 }, ptr %a472 + store { ptr, i64, i64 } %t470, ptr %a473 + call void @finch_str_concat(ptr %a471, ptr %a472, ptr %a473) + %t474 = load { ptr, i64, i64 }, ptr %a471 + store { ptr, i64, i64 } %t474, ptr %a476 + store { ptr, i64, i64 } { ptr @.str.1619, i64 20, i64 0 }, ptr %a477 + call void @finch_str_concat(ptr %a475, ptr %a476, ptr %a477) + store { ptr, i64, i64 } %t474, ptr %a478 + call void @finch_str_drop(ptr %a478) + %t479 = load { ptr, i64, i64 }, ptr %a475 + call void @finch.gen.endHelper(ptr %t468, %S.gen.Saved %t469, { ptr, i64, i64 } %t479) + store { ptr, i64, i64 } %t479, ptr %a480 + call void @finch_str_drop(ptr %a480) + %t481 = load { ptr, i64, i64 }, ptr %a10 + call void @finch.drop.S_gen_Saved(ptr %a32) + ret { ptr, i64, i64 } %t481 +} + +define internal void @finch.drop.S_gen_Val(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.gen.Val, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.gen.Val, ptr %a, i32 0, i32 1 + call void @finch.drop.S_ast_Type(ptr %t2) + ret void } define internal { ptr, i64, i64 } @finch.gen.copyValue(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2) { @@ -26250,8 +29604,11 @@ entry: %a15 = alloca { ptr, i64, i64 }, align 16 %a19 = alloca %S.ast.Type, align 16 %a20 = alloca %S.ast.Type, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 + %a24 = alloca %S.gen.Val, align 16 + %a25 = alloca { ptr, i64, i64 }, align 16 + %a31 = alloca { ptr, i64, i64 }, align 16 + %a32 = alloca { ptr, i64, i64 }, align 16 + %a43 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store { ptr, i64, i64 } %p1, ptr %a2 store %S.ast.Type %p2, ptr %a3 @@ -26259,14 +29616,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 %then2635, label %endif2637 -then2635: + br i1 %t7, label %then2699, label %endif2701 +then2699: %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 -endif2637: +endif2701: %t12 = load ptr, ptr %a1 %t13 = load { ptr, i64, i64 }, ptr %a2 store { ptr, i64, i64 } %t13, ptr %a14 @@ -26279,25 +29636,1149 @@ endif2637: %t21 = load %S.ast.Type, ptr %a20 %t22 = insertvalue %S.gen.Val %t17, %S.ast.Type %t21, 1 %t23 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t12, %S.gen.Val %t22) - store { ptr, i64, i64 } %t23, ptr %a24 - %t25 = load ptr, ptr %a1 + store %S.gen.Val %t22, ptr %a24 + call void @finch.drop.S_gen_Val(ptr %a24) + store { ptr, i64, i64 } %t23, ptr %a25 %t26 = load ptr, ptr %a1 - %t27 = load %S.ast.Type, ptr %a3 - %t28 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t26, %S.ast.Type %t27) - %t29 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t25, { ptr, i64, i64 } %t28) - store { ptr, i64, i64 } %t29, ptr %a30 - %t31 = load ptr, ptr %a1 - %t32 = load { ptr, i64, i64 }, ptr %a30 - %t33 = load { ptr, i64, i64 }, ptr %a24 - %t34 = load %S.ast.Type, ptr %a3 - call void @finch.gen.copyAt(ptr %t31, { ptr, i64, i64 } %t32, { ptr, i64, i64 } %t33, %S.ast.Type %t34) + %t27 = load ptr, ptr %a1 + %t28 = load %S.ast.Type, ptr %a3 + %t29 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t27, %S.ast.Type %t28) + %t30 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t26, { ptr, i64, i64 } %t29) + store { ptr, i64, i64 } %t29, ptr %a31 + call void @finch_str_drop(ptr %a31) + store { ptr, i64, i64 } %t30, ptr %a32 + %t33 = load ptr, ptr %a1 + %t34 = load { ptr, i64, i64 }, ptr %a32 + %t35 = load { ptr, i64, i64 }, ptr %a25 + %t36 = load %S.ast.Type, ptr %a3 + call void @finch.gen.copyAt(ptr %t33, { ptr, i64, i64 } %t34, { ptr, i64, i64 } %t35, %S.ast.Type %t36) + %t37 = load ptr, ptr %a1 + %t38 = load ptr, ptr %a1 + %t39 = load %S.ast.Type, ptr %a3 + %t40 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t38, %S.ast.Type %t39) + %t41 = load { ptr, i64, i64 }, ptr %a32 + %t42 = call { ptr, i64, i64 } @finch.gen.load(ptr %t37, { ptr, i64, i64 } %t40, { ptr, i64, i64 } %t41) + store { ptr, i64, i64 } %t40, ptr %a43 + call void @finch_str_drop(ptr %a43) + call void @finch_str_drop(ptr %a32) + call void @finch_str_drop(ptr %a25) + ret { ptr, i64, i64 } %t42 +} + +define internal void @finch.gen.dropAt(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca %S.ast.Type, align 16 + %a10 = alloca { ptr, i64, i64 }, align 16 + %a11 = 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 + %a20 = 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 + %a25 = alloca { ptr, i64, i64 }, align 16 + %a30 = 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 + %a37 = alloca { ptr, i64, i64 }, align 16 + %a38 = 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 + %a44 = alloca { ptr, i64, i64 }, align 16 + %a46 = 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 + store ptr %p0, ptr %a1 + store { ptr, i64, i64 } %p1, ptr %a2 + store %S.ast.Type %p2, ptr %a3 + %t4 = load ptr, ptr %a1 + %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 %then2702, label %endif2704 +then2702: + ret void +endif2704: + %t8 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 + %t9 = load { ptr, i64, i64 }, ptr %t8 + store { ptr, i64, i64 } %t9, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.1620, 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 %then2705, label %else2706 +then2705: + %t14 = load ptr, ptr %a1 + %t15 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } { ptr @.str.1621, i64 30, 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.1622, i64 1, i64 0 }, ptr %a22 + call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22) + store { ptr, i64, i64 } %t19, ptr %a23 + call void @finch_str_drop(ptr %a23) + %t24 = load { ptr, i64, i64 }, ptr %a20 + call void @finch.gen.emit(ptr %t14, { ptr, i64, i64 } %t24) + store { ptr, i64, i64 } %t24, ptr %a25 + call void @finch_str_drop(ptr %a25) + br label %endif2707 +else2706: + %t26 = load ptr, ptr %a1 + %t27 = load ptr, ptr %a1 + %t28 = load %S.ast.Type, ptr %a3 + %t29 = call { ptr, i64, i64 } @finch.gen.dropFn(ptr %t27, %S.ast.Type %t28) + store { ptr, i64, i64 } { ptr @.str.1623, i64 10, i64 0 }, ptr %a31 + store { ptr, i64, i64 } %t29, ptr %a32 + call void @finch_str_concat(ptr %a30, ptr %a31, ptr %a32) + store { ptr, i64, i64 } %t29, ptr %a33 + call void @finch_str_drop(ptr %a33) + %t34 = load { ptr, i64, i64 }, ptr %a30 + store { ptr, i64, i64 } %t34, ptr %a36 + store { ptr, i64, i64 } { ptr @.str.1624, i64 5, i64 0 }, ptr %a37 + call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) + store { ptr, i64, i64 } %t34, ptr %a38 + call void @finch_str_drop(ptr %a38) + %t39 = load { ptr, i64, i64 }, ptr %a35 + %t40 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t39, ptr %a42 + store { ptr, i64, i64 } %t40, ptr %a43 + call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) + store { ptr, i64, i64 } %t39, ptr %a44 + call void @finch_str_drop(ptr %a44) + %t45 = load { ptr, i64, i64 }, ptr %a41 + store { ptr, i64, i64 } %t45, ptr %a47 + store { ptr, i64, i64 } { ptr @.str.1625, i64 1, i64 0 }, ptr %a48 + call void @finch_str_concat(ptr %a46, ptr %a47, ptr %a48) + store { ptr, i64, i64 } %t45, ptr %a49 + call void @finch_str_drop(ptr %a49) + %t50 = load { ptr, i64, i64 }, ptr %a46 + call void @finch.gen.emit(ptr %t26, { ptr, i64, i64 } %t50) + store { ptr, i64, i64 } %t50, ptr %a51 + call void @finch_str_drop(ptr %a51) + br label %endif2707 +endif2707: + ret void +} + +define internal void @finch.gen.dropValue(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca %S.ast.Type, align 16 + %a10 = alloca { ptr, i64, i64 }, align 16 + %a11 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca %S.ast.Type, align 16 + %a16 = alloca %S.ast.Type, align 16 + %a20 = alloca %S.gen.Val, align 16 + %a22 = alloca { ptr, i64, i64 }, align 16 + store ptr %p0, ptr %a1 + store { ptr, i64, i64 } %p1, ptr %a2 + store %S.ast.Type %p2, ptr %a3 + %t4 = load ptr, ptr %a1 + %t5 = load %S.ast.Type, ptr %a3 + %t6 = call i1 @finch.gen.owning(ptr %t4, %S.ast.Type %t5) + br i1 %t6, label %then2708, label %endif2710 +then2708: + %t7 = load ptr, ptr %a1 + %t8 = load ptr, ptr %a1 + %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.gen.Val zeroinitializer, { ptr, i64, i64 } %t12, 0 + %t14 = load %S.ast.Type, ptr %a3 + store %S.ast.Type %t14, ptr %a15 + call void @finch.copy.S_ast_Type(ptr %a16, ptr %a15) + %t17 = load %S.ast.Type, ptr %a16 + %t18 = insertvalue %S.gen.Val %t13, %S.ast.Type %t17, 1 + %t19 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t8, %S.gen.Val %t18) + store %S.gen.Val %t18, ptr %a20 + call void @finch.drop.S_gen_Val(ptr %a20) + %t21 = load %S.ast.Type, ptr %a3 + call void @finch.gen.dropAt(ptr %t7, { ptr, i64, i64 } %t19, %S.ast.Type %t21) + store { ptr, i64, i64 } %t19, ptr %a22 + call void @finch_str_drop(ptr %a22) + br label %endif2710 +endif2710: + ret void +} + +define internal void @finch.gen.release(ptr %p0, %S.gen.Val %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.gen.Val, align 16 + store ptr %p0, ptr %a1 + store %S.gen.Val %p1, ptr %a2 + %t3 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 2 + %t4 = load i1, ptr %t3 + br label %logic.from2711 +logic.from2711: + br i1 %t4, label %logic.rhs2712, label %logic.end2713 +logic.rhs2712: + %t5 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 + %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1 + %t7 = load i64, ptr %t6 + %t8 = icmp sgt i64 %t7, 0 + br label %logic.rend2714 +logic.rend2714: + br label %logic.end2713 +logic.end2713: + %t9 = phi i1 [ false, %logic.from2711 ], [ %t8, %logic.rend2714 ] + br label %logic.from2715 +logic.from2715: + br i1 %t9, label %logic.rhs2716, label %logic.end2717 +logic.rhs2716: + %t10 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 + %t11 = load { ptr, i64, i64 }, ptr %t10 + %t12 = call i1 @finch.gen.isConstant({ ptr, i64, i64 } %t11) + %t13 = xor i1 %t12, true + br label %logic.rend2718 +logic.rend2718: + br label %logic.end2717 +logic.end2717: + %t14 = phi i1 [ false, %logic.from2715 ], [ %t13, %logic.rend2718 ] + br label %logic.from2719 +logic.from2719: + br i1 %t14, label %logic.rhs2720, label %logic.end2721 +logic.rhs2720: + %t15 = load ptr, ptr %a1 + %t16 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 + %t17 = load %S.ast.Type, ptr %t16 + %t18 = call i1 @finch.gen.owning(ptr %t15, %S.ast.Type %t17) + br label %logic.rend2722 +logic.rend2722: + br label %logic.end2721 +logic.end2721: + %t19 = phi i1 [ false, %logic.from2719 ], [ %t18, %logic.rend2722 ] + br i1 %t19, label %then2723, label %endif2725 +then2723: + %t20 = load ptr, ptr %a1 + %t21 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 + %t22 = load { ptr, i64, i64 }, ptr %t21 + %t23 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 + %t24 = load %S.ast.Type, ptr %t23 + call void @finch.gen.dropValue(ptr %t20, { ptr, i64, i64 } %t22, %S.ast.Type %t24) + br label %endif2725 +endif2725: + ret void +} + +define internal i1 @finch.gen.isConstant({ 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 + 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.1627, i64 1, i64 0 }, ptr %a5 + %t6 = call i32 @finch_str_starts(ptr %a3, ptr %a5) + %t7 = icmp ne i32 %t6, 0 + %t8 = xor i1 %t7, true + ret i1 %t8 +} + +define internal { ptr, i64, i64 } @finch.gen.dropFn(ptr %p0, %S.ast.Type %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Type, 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 + %a10 = alloca { ptr, i64, i64 }, align 16 + %a23 = alloca { ptr, i64, i64 }, align 16 + %a24 = alloca { ptr, i64, i64 }, align 16 + %a32 = alloca %S.gen.Saved, align 16 + %a35 = alloca { ptr, i64, i64 }, align 16 + %a36 = alloca { ptr, i64, i64 }, align 16 + %a46 = alloca %S.ast.Type, align 16 + %a47 = alloca %S.ast.Type, align 16 + %a49 = alloca %S.ast.Type, align 16 + %a55 = alloca { ptr, i64, i64 }, align 16 + %a60 = alloca { ptr, i64, i64 }, align 16 + %a61 = alloca { ptr, i64, i64 }, align 16 + %a65 = 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 + %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 + %a78 = 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 + %a86 = 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 + %a97 = 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 + %a103 = alloca { ptr, i64, i64 }, align 16 + %a104 = alloca { ptr, i64, i64 }, align 16 + %a113 = alloca { ptr, i64, i64 }, align 16 + %a114 = alloca { ptr, i64, i64 }, align 16 + %a124 = alloca %S.ast.Type, align 16 + %a125 = alloca %S.ast.Type, align 16 + %a127 = alloca %S.ast.Type, align 16 + %a135 = alloca %S.ast.Type, align 16 + %a136 = alloca %S.ast.Type, align 16 + %a138 = alloca %S.ast.Type, align 16 + %a151 = alloca { ptr, i64, i64 }, align 16 + %a152 = alloca { ptr, i64, i64 }, align 16 + %a153 = alloca { ptr, i64, i64 }, align 16 + %a154 = 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 + %a159 = alloca { ptr, i64, i64 }, align 16 + %a162 = alloca { ptr, i64, i64 }, align 16 + %a164 = alloca { ptr, i64, i64 }, align 16 + %a165 = alloca { ptr, i64, i64 }, align 16 + %a169 = alloca { ptr, i64, i64 }, align 16 + %a179 = alloca { ptr, i64, i64 }, align 16 + %a182 = alloca { ptr, i64, i64 }, align 16 + %a185 = alloca { ptr, i64, i64 }, align 16 + %a194 = 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 + %a198 = 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 + %a203 = alloca { ptr, i64, i64 }, align 16 + %a206 = alloca { ptr, i64, i64 }, align 16 + %a209 = alloca { ptr, i64, i64 }, align 16 + %a218 = alloca { ptr, i64, i64 }, align 16 + %a225 = alloca { ptr, i64, i64 }, align 16 + %a248 = alloca %S.gen.StructDef, align 16 + %a249 = alloca %S.gen.StructDef, align 16 + %a251 = alloca %S.gen.StructDef, align 16 + %a255 = alloca { ptr, i64, i64 }, align 16 + %a259 = alloca 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 + %a282 = 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 + %a297 = alloca { ptr, i64, i64 }, align 16 + %a298 = alloca { ptr, i64, i64 }, align 16 + %a301 = alloca { ptr, i64, i64 }, align 16 + %a310 = alloca { ptr, i64, i64 }, align 16 + %a317 = alloca { ptr, i64, i64 }, align 16 + %a318 = alloca { ptr, i64, i64 }, align 16 + %a319 = alloca { ptr, i64, i64 }, align 16 + %a321 = 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 + %a326 = alloca { ptr, i64, i64 }, align 16 + store ptr %p0, ptr %a1 + 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.1628, i64 12, i64 0 }, ptr %a6 + store { ptr, i64, i64 } %t4, ptr %a7 + call void @finch_str_concat(ptr %a5, ptr %a6, ptr %a7) + store { ptr, i64, i64 } %t4, ptr %a8 + call void @finch_str_drop(ptr %a8) + %t9 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } %t9, ptr %a10 + %t11 = load ptr, ptr %a1 + %t12 = icmp eq ptr %t11, null + br i1 %t12, label %panic2726, label %ok2727 +panic2726: + call void @finch_panic(ptr @.str.1629, i64 904, ptr @.str.1630) + unreachable +ok2727: + %t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 22 + %t14 = load { ptr, i64, i64 }, ptr %t13 + %t15 = load { ptr, i64, i64 }, ptr %a10 + %t16 = call i1 @finch.gen.has({ ptr, i64, i64 } %t14, { ptr, i64, i64 } %t15) + br i1 %t16, label %then2728, label %endif2730 +then2728: + %t17 = load { ptr, i64, i64 }, ptr %a10 + ret { ptr, i64, i64 } %t17 +endif2730: + %t18 = load ptr, ptr %a1 + %t19 = icmp eq ptr %t18, null + br i1 %t19, label %panic2731, label %ok2732 +panic2731: + call void @finch_panic(ptr @.str.1631, i64 907, ptr @.str.1632) + unreachable +ok2732: + %t20 = getelementptr inbounds %S.gen.Gen, ptr %t18, i32 0, i32 22 + %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t20, i32 0, i32 1 + %t22 = load { ptr, i64, i64 }, ptr %a10 + 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 + %t30 = load ptr, ptr %a1 + %t31 = call %S.gen.Saved @finch.gen.beginHelper(ptr %t30) + store %S.gen.Saved %t31, ptr %a32 + %t33 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 + %t34 = load { ptr, i64, i64 }, ptr %t33 + store { ptr, i64, i64 } %t34, ptr %a35 + store { ptr, i64, i64 } { ptr @.str.1633, i64 5, i64 0 }, ptr %a36 + %t37 = call i32 @finch_str_eq(ptr %a35, ptr %a36) + %t38 = icmp ne i32 %t37, 0 + br i1 %t38, label %then2733, label %else2734 +then2733: + %t39 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t40 = load { ptr, i64, i64 }, ptr %t39 + %t41 = extractvalue { ptr, i64, i64 } %t40, 1 + %t42 = icmp uge i64 0, %t41 + br i1 %t42, label %range2736, label %inrange2737 +range2736: + call void @finch_panic_index(ptr @.str.1634, i64 910, i64 0, i64 %t41) + unreachable +inrange2737: + %t43 = extractvalue { ptr, i64, i64 } %t40, 0 + %t44 = getelementptr inbounds %S.ast.Type, ptr %t43, i64 0 + %t45 = load %S.ast.Type, ptr %t44 + store %S.ast.Type %t45, ptr %a46 + call void @finch.copy.S_ast_Type(ptr %a47, ptr %a46) + %t48 = load %S.ast.Type, ptr %a47 + store %S.ast.Type %t48, ptr %a49 + %t50 = load ptr, ptr %a1 + %t51 = load %S.ast.Type, ptr %a49 + %t52 = call i1 @finch.gen.owning(ptr %t50, %S.ast.Type %t51) + br i1 %t52, label %then2738, label %endif2740 +then2738: + %t53 = load ptr, ptr %a1 + %t54 = call { ptr, i64, i64 } @finch.gen.load(ptr %t53, { ptr, i64, i64 } { ptr @.str.1635, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1636, i64 2, i64 0 }) + store { ptr, i64, i64 } %t54, ptr %a55 + %t56 = load ptr, ptr %a1 + %t57 = load ptr, ptr %a1 + %t58 = call { ptr, i64, i64 } @finch.gen.op(ptr %t57, { ptr, i64, i64 } { ptr @.str.1638, i64 62, i64 0 }) + %t59 = call { ptr, i64, i64 } @finch.gen.load(ptr %t56, { ptr, i64, i64 } { ptr @.str.1637, i64 3, i64 0 }, { ptr, i64, i64 } %t58) + store { ptr, i64, i64 } %t58, ptr %a60 + call void @finch_str_drop(ptr %a60) + store { ptr, i64, i64 } %t59, ptr %a61 + %t62 = load ptr, ptr %a1 + %t63 = load { ptr, i64, i64 }, ptr %a61 + %t64 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t62, { ptr, i64, i64 } %t63) + store { ptr, i64, i64 } %t64, ptr %a65 + %t66 = load ptr, ptr %a1 + %t67 = load ptr, ptr %a1 + %t68 = load %S.ast.Type, ptr %a49 + %t69 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t67, %S.ast.Type %t68) + store { ptr, i64, i64 } { ptr @.str.1639, i64 23, i64 0 }, ptr %a71 + store { ptr, i64, i64 } %t69, ptr %a72 + call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) + store { ptr, i64, i64 } %t69, ptr %a73 + call void @finch_str_drop(ptr %a73) + %t74 = load { ptr, i64, i64 }, ptr %a70 + store { ptr, i64, i64 } %t74, ptr %a76 + store { ptr, i64, i64 } { ptr @.str.1640, i64 6, i64 0 }, ptr %a77 + call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77) + store { ptr, i64, i64 } %t74, ptr %a78 + call void @finch_str_drop(ptr %a78) + %t79 = load { ptr, i64, i64 }, ptr %a75 + %t80 = load { ptr, i64, i64 }, ptr %a55 + store { ptr, i64, i64 } %t79, ptr %a82 + store { ptr, i64, i64 } %t80, ptr %a83 + call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) + store { ptr, i64, i64 } %t79, ptr %a84 + call void @finch_str_drop(ptr %a84) + %t85 = load { ptr, i64, i64 }, ptr %a81 + store { ptr, i64, i64 } %t85, ptr %a87 + store { ptr, i64, i64 } { ptr @.str.1641, i64 6, i64 0 }, ptr %a88 + call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) + store { ptr, i64, i64 } %t85, ptr %a89 + call void @finch_str_drop(ptr %a89) + %t90 = load { ptr, i64, i64 }, ptr %a86 + %t91 = load { ptr, i64, i64 }, ptr %a65 + %t92 = extractvalue { ptr, i64, i64 } %t91, 1 + %t93 = icmp uge i64 3, %t92 + br i1 %t93, label %range2741, label %inrange2742 +range2741: + call void @finch_panic_index(ptr @.str.1642, i64 915, i64 3, i64 %t92) + unreachable +inrange2742: + %t94 = extractvalue { ptr, i64, i64 } %t91, 0 + %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %t94, i64 3 + %t96 = load { ptr, i64, i64 }, ptr %t95 + store { ptr, i64, i64 } %t90, ptr %a98 + store { ptr, i64, i64 } %t96, ptr %a99 + call void @finch_str_concat(ptr %a97, ptr %a98, ptr %a99) + store { ptr, i64, i64 } %t90, ptr %a100 + call void @finch_str_drop(ptr %a100) + %t101 = load { ptr, i64, i64 }, ptr %a97 + %t102 = call { ptr, i64, i64 } @finch.gen.op(ptr %t66, { ptr, i64, i64 } %t101) + store { ptr, i64, i64 } %t101, ptr %a103 + call void @finch_str_drop(ptr %a103) + store { ptr, i64, i64 } %t102, ptr %a104 + %t105 = load ptr, ptr %a1 + %t106 = load { ptr, i64, i64 }, ptr %a104 + %t107 = load %S.ast.Type, ptr %a49 + call void @finch.gen.dropAt(ptr %t105, { ptr, i64, i64 } %t106, %S.ast.Type %t107) + %t108 = load ptr, ptr %a1 + %t109 = load { ptr, i64, i64 }, ptr %a65 + call void @finch.gen.loopEnd(ptr %t108, { ptr, i64, i64 } %t109) + call void @finch_str_drop(ptr %a104) + call void @finch.drop.arr_str(ptr %a65) + call void @finch_str_drop(ptr %a61) + call void @finch_str_drop(ptr %a55) + br label %endif2740 +endif2740: + %t110 = load ptr, ptr %a1 + call void @finch.gen.emit(ptr %t110, { ptr, i64, i64 } { ptr @.str.1643, i64 33, i64 0 }) + call void @finch.drop.S_ast_Type(ptr %a49) + br label %endif2735 +else2734: + %t111 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 + %t112 = load { ptr, i64, i64 }, ptr %t111 + store { ptr, i64, i64 } %t112, ptr %a113 + store { ptr, i64, i64 } { ptr @.str.1644, i64 3, i64 0 }, ptr %a114 + %t115 = call i32 @finch_str_eq(ptr %a113, ptr %a114) + %t116 = icmp ne i32 %t115, 0 + br i1 %t116, label %then2743, label %else2744 +then2743: + %t117 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t118 = load { ptr, i64, i64 }, ptr %t117 + %t119 = extractvalue { ptr, i64, i64 } %t118, 1 + %t120 = icmp uge i64 0, %t119 + br i1 %t120, label %range2746, label %inrange2747 +range2746: + call void @finch_panic_index(ptr @.str.1645, i64 921, i64 0, i64 %t119) + unreachable +inrange2747: + %t121 = extractvalue { ptr, i64, i64 } %t118, 0 + %t122 = getelementptr inbounds %S.ast.Type, ptr %t121, i64 0 + %t123 = load %S.ast.Type, ptr %t122 + store %S.ast.Type %t123, ptr %a124 + call void @finch.copy.S_ast_Type(ptr %a125, ptr %a124) + %t126 = load %S.ast.Type, ptr %a125 + store %S.ast.Type %t126, ptr %a127 + %t128 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t129 = load { ptr, i64, i64 }, ptr %t128 + %t130 = extractvalue { ptr, i64, i64 } %t129, 1 + %t131 = icmp uge i64 1, %t130 + br i1 %t131, label %range2748, label %inrange2749 +range2748: + call void @finch_panic_index(ptr @.str.1646, i64 922, i64 1, i64 %t130) + unreachable +inrange2749: + %t132 = extractvalue { ptr, i64, i64 } %t129, 0 + %t133 = getelementptr inbounds %S.ast.Type, ptr %t132, i64 1 + %t134 = load %S.ast.Type, ptr %t133 + store %S.ast.Type %t134, ptr %a135 + call void @finch.copy.S_ast_Type(ptr %a136, ptr %a135) + %t137 = load %S.ast.Type, ptr %a136 + store %S.ast.Type %t137, ptr %a138 + %t139 = load ptr, ptr %a1 + %t140 = load %S.ast.Type, ptr %a127 + %t141 = call i1 @finch.gen.owning(ptr %t139, %S.ast.Type %t140) + br label %logic.from2750 +logic.from2750: + br i1 %t141, label %logic.end2752, label %logic.rhs2751 +logic.rhs2751: + %t142 = load ptr, ptr %a1 + %t143 = load %S.ast.Type, ptr %a138 + %t144 = call i1 @finch.gen.owning(ptr %t142, %S.ast.Type %t143) + br label %logic.rend2753 +logic.rend2753: + br label %logic.end2752 +logic.end2752: + %t145 = phi i1 [ true, %logic.from2750 ], [ %t144, %logic.rend2753 ] + br i1 %t145, label %then2754, label %endif2756 +then2754: + %t146 = load ptr, ptr %a1 + %t147 = load ptr, ptr %a1 + %t148 = load ptr, ptr %a1 + %t149 = load %S.ast.Type, ptr %a2 + %t150 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t148, %S.ast.Type %t149) + store { ptr, i64, i64 } { ptr @.str.1648, i64 23, i64 0 }, ptr %a152 + store { ptr, i64, i64 } %t150, ptr %a153 + call void @finch_str_concat(ptr %a151, ptr %a152, ptr %a153) + store { ptr, i64, i64 } %t150, ptr %a154 + call void @finch_str_drop(ptr %a154) + %t155 = load { ptr, i64, i64 }, ptr %a151 + store { ptr, i64, i64 } %t155, ptr %a157 + store { ptr, i64, i64 } { ptr @.str.1649, i64 22, i64 0 }, ptr %a158 + call void @finch_str_concat(ptr %a156, ptr %a157, ptr %a158) + store { ptr, i64, i64 } %t155, ptr %a159 + call void @finch_str_drop(ptr %a159) + %t160 = load { ptr, i64, i64 }, ptr %a156 + %t161 = call { ptr, i64, i64 } @finch.gen.op(ptr %t147, { ptr, i64, i64 } %t160) + store { ptr, i64, i64 } %t160, ptr %a162 + call void @finch_str_drop(ptr %a162) + %t163 = call { ptr, i64, i64 } @finch.gen.load(ptr %t146, { ptr, i64, i64 } { ptr @.str.1647, i64 3, i64 0 }, { ptr, i64, i64 } %t161) + store { ptr, i64, i64 } %t161, ptr %a164 + call void @finch_str_drop(ptr %a164) + store { ptr, i64, i64 } %t163, ptr %a165 + %t166 = load ptr, ptr %a1 + %t167 = load { ptr, i64, i64 }, ptr %a165 + %t168 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t166, { ptr, i64, i64 } %t167) + store { ptr, i64, i64 } %t168, ptr %a169 + %t170 = load ptr, ptr %a1 + %t171 = load %S.ast.Type, ptr %a2 + %t172 = load { ptr, i64, i64 }, ptr %a169 + %t173 = extractvalue { ptr, i64, i64 } %t172, 1 + %t174 = icmp uge i64 3, %t173 + br i1 %t174, label %range2757, label %inrange2758 +range2757: + call void @finch_panic_index(ptr @.str.1651, i64 926, i64 3, i64 %t173) + unreachable +inrange2758: + %t175 = extractvalue { ptr, i64, i64 } %t172, 0 + %t176 = getelementptr inbounds { ptr, i64, i64 }, ptr %t175, i64 3 + %t177 = load { ptr, i64, i64 }, ptr %t176 + %t178 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t170, { ptr, i64, i64 } { ptr @.str.1650, i64 2, i64 0 }, %S.ast.Type %t171, { ptr, i64, i64 } %t177) + store { ptr, i64, i64 } %t178, ptr %a179 + %t180 = load ptr, ptr %a1 + %t181 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t180, { ptr, i64, i64 } { ptr @.str.1652, i64 10, i64 0 }) + store { ptr, i64, i64 } %t181, ptr %a182 + %t183 = load ptr, ptr %a1 + %t184 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t183, { ptr, i64, i64 } { ptr @.str.1653, i64 10, i64 0 }) + store { ptr, i64, i64 } %t184, ptr %a185 + %t186 = load ptr, ptr %a1 + %t187 = load ptr, ptr %a1 + %t188 = load ptr, ptr %a1 + %t189 = load ptr, ptr %a1 + %t190 = load { ptr, i64, i64 }, ptr %a179 + %t191 = load %S.ast.Type, ptr %a2 + %t192 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t189, { ptr, i64, i64 } %t190, %S.ast.Type %t191, i64 0) + %t193 = call { ptr, i64, i64 } @finch.gen.load(ptr %t188, { ptr, i64, i64 } { ptr @.str.1655, i64 3, i64 0 }, { ptr, i64, i64 } %t192) + store { ptr, i64, i64 } %t192, ptr %a194 + call void @finch_str_drop(ptr %a194) + store { ptr, i64, i64 } { ptr @.str.1654, i64 12, i64 0 }, ptr %a196 + store { ptr, i64, i64 } %t193, ptr %a197 + call void @finch_str_concat(ptr %a195, ptr %a196, ptr %a197) + store { ptr, i64, i64 } %t193, ptr %a198 + call void @finch_str_drop(ptr %a198) + %t199 = load { ptr, i64, i64 }, ptr %a195 + store { ptr, i64, i64 } %t199, ptr %a201 + store { ptr, i64, i64 } { ptr @.str.1656, i64 3, i64 0 }, ptr %a202 + call void @finch_str_concat(ptr %a200, ptr %a201, ptr %a202) + store { ptr, i64, i64 } %t199, ptr %a203 + call void @finch_str_drop(ptr %a203) + %t204 = load { ptr, i64, i64 }, ptr %a200 + %t205 = call { ptr, i64, i64 } @finch.gen.op(ptr %t187, { ptr, i64, i64 } %t204) + store { ptr, i64, i64 } %t204, ptr %a206 + call void @finch_str_drop(ptr %a206) + %t207 = load { ptr, i64, i64 }, ptr %a182 + %t208 = load { ptr, i64, i64 }, ptr %a185 + call void @finch.gen.condBr(ptr %t186, { ptr, i64, i64 } %t205, { ptr, i64, i64 } %t207, { ptr, i64, i64 } %t208) + store { ptr, i64, i64 } %t205, ptr %a209 + call void @finch_str_drop(ptr %a209) + %t210 = load ptr, ptr %a1 + %t211 = load { ptr, i64, i64 }, ptr %a182 + call void @finch.gen.label(ptr %t210, { ptr, i64, i64 } %t211) + %t212 = load ptr, ptr %a1 + %t213 = load ptr, ptr %a1 + %t214 = load { ptr, i64, i64 }, ptr %a179 + %t215 = load %S.ast.Type, ptr %a2 + %t216 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t213, { ptr, i64, i64 } %t214, %S.ast.Type %t215, i64 1) + %t217 = load %S.ast.Type, ptr %a127 + call void @finch.gen.dropAt(ptr %t212, { ptr, i64, i64 } %t216, %S.ast.Type %t217) + store { ptr, i64, i64 } %t216, ptr %a218 + call void @finch_str_drop(ptr %a218) + %t219 = load ptr, ptr %a1 + %t220 = load ptr, ptr %a1 + %t221 = load { ptr, i64, i64 }, ptr %a179 + %t222 = load %S.ast.Type, ptr %a2 + %t223 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t220, { ptr, i64, i64 } %t221, %S.ast.Type %t222, i64 2) + %t224 = load %S.ast.Type, ptr %a138 + call void @finch.gen.dropAt(ptr %t219, { ptr, i64, i64 } %t223, %S.ast.Type %t224) + store { ptr, i64, i64 } %t223, ptr %a225 + call void @finch_str_drop(ptr %a225) + %t226 = load ptr, ptr %a1 + %t227 = load { ptr, i64, i64 }, ptr %a185 + call void @finch.gen.br(ptr %t226, { ptr, i64, i64 } %t227) + %t228 = load ptr, ptr %a1 + %t229 = load { ptr, i64, i64 }, ptr %a185 + call void @finch.gen.label(ptr %t228, { ptr, i64, i64 } %t229) + %t230 = load ptr, ptr %a1 + %t231 = load { ptr, i64, i64 }, ptr %a169 + call void @finch.gen.loopEnd(ptr %t230, { ptr, i64, i64 } %t231) + call void @finch_str_drop(ptr %a185) + call void @finch_str_drop(ptr %a182) + call void @finch_str_drop(ptr %a179) + call void @finch.drop.arr_str(ptr %a169) + call void @finch_str_drop(ptr %a165) + br label %endif2756 +endif2756: + %t232 = load ptr, ptr %a1 + call void @finch.gen.emit(ptr %t232, { ptr, i64, i64 } { ptr @.str.1657, i64 33, i64 0 }) + call void @finch.drop.S_ast_Type(ptr %a138) + call void @finch.drop.S_ast_Type(ptr %a127) + br label %endif2745 +else2744: + %t233 = load ptr, ptr %a1 + %t234 = icmp eq ptr %t233, null + br i1 %t234, label %panic2759, label %ok2760 +panic2759: + call void @finch_panic(ptr @.str.1658, i64 939, ptr @.str.1659) + unreachable +ok2760: + %t235 = getelementptr inbounds %S.gen.Gen, ptr %t233, i32 0, i32 16 + %t236 = load ptr, ptr %a1 + %t237 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 + %t238 = load { ptr, i64, i64 }, ptr %t237 + %t239 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 + %t240 = load { ptr, i64, i64 }, ptr %t239 + %t241 = call i64 @finch.gen.findStruct(ptr %t236, { ptr, i64, i64 } %t238, { ptr, i64, i64 } %t240) + %t242 = load { ptr, i64, i64 }, ptr %t235 + %t243 = extractvalue { ptr, i64, i64 } %t242, 1 + %t244 = icmp uge i64 %t241, %t243 + br i1 %t244, label %range2761, label %inrange2762 +range2761: + call void @finch_panic_index(ptr @.str.1660, i64 939, i64 %t241, i64 %t243) + unreachable +inrange2762: + %t245 = extractvalue { ptr, i64, i64 } %t242, 0 + %t246 = getelementptr inbounds %S.gen.StructDef, ptr %t245, i64 %t241 + %t247 = load %S.gen.StructDef, ptr %t246 + store %S.gen.StructDef %t247, ptr %a248 + call void @finch.copy.S_gen_StructDef(ptr %a249, ptr %a248) + %t250 = load %S.gen.StructDef, ptr %a249 + store %S.gen.StructDef %t250, ptr %a251 + %t252 = load ptr, ptr %a1 + %t253 = load %S.ast.Type, ptr %a2 + %t254 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t252, %S.ast.Type %t253) + store { ptr, i64, i64 } %t254, ptr %a255 + %t256 = getelementptr inbounds %S.gen.StructDef, ptr %a251, i32 0, i32 12 + %t257 = getelementptr inbounds { ptr, i64, i64 }, ptr %t256, i32 0, i32 1 + %t258 = load i64, ptr %t257 + store i64 0, ptr %a259 + br label %for.cond2763 +for.cond2763: + %t260 = load i64, ptr %a259 + %t261 = icmp slt i64 %t260, %t258 + br i1 %t261, label %for.body2764, label %for.end2766 +for.body2764: + %t262 = load ptr, ptr %a1 + %t263 = getelementptr inbounds %S.gen.StructDef, ptr %a251, i32 0, i32 12 + %t264 = load i64, ptr %a259 + %t265 = load { ptr, i64, i64 }, ptr %t263 + %t266 = extractvalue { ptr, i64, i64 } %t265, 1 + %t267 = icmp uge i64 %t264, %t266 + br i1 %t267, label %range2767, label %inrange2768 +range2767: + call void @finch_panic_index(ptr @.str.1661, i64 942, i64 %t264, i64 %t266) + unreachable +inrange2768: + %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 = call i1 @finch.gen.owning(ptr %t262, %S.ast.Type %t270) + br i1 %t271, label %then2769, label %endif2771 +then2769: + %t272 = load ptr, ptr %a1 + %t273 = load ptr, ptr %a1 + %t274 = load { ptr, i64, i64 }, ptr %a255 + store { ptr, i64, i64 } { ptr @.str.1662, i64 23, i64 0 }, 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.1663, i64 21, i64 0 }, ptr %a281 + call void @finch_str_concat(ptr %a279, ptr %a280, ptr %a281) + store { ptr, i64, i64 } %t278, ptr %a282 + call void @finch_str_drop(ptr %a282) + %t283 = load { ptr, i64, i64 }, ptr %a279 + %t284 = getelementptr inbounds %S.gen.StructDef, ptr %a251, i32 0, i32 3 + %t285 = load i64, ptr %a259 + %t286 = load { ptr, i64, i64 }, ptr %t284 + %t287 = extractvalue { ptr, i64, i64 } %t286, 1 + %t288 = icmp uge i64 %t285, %t287 + br i1 %t288, label %range2772, label %inrange2773 +range2772: + call void @finch_panic_index(ptr @.str.1664, i64 943, i64 %t285, i64 %t287) + unreachable +inrange2773: + %t289 = extractvalue { ptr, i64, i64 } %t286, 0 + %t290 = getelementptr inbounds i64, ptr %t289, i64 %t285 + %t291 = load i64, ptr %t290 + call void @finch_str_from_int(ptr %a292, i64 %t291) + %t293 = load { ptr, i64, i64 }, ptr %a292 + store { ptr, i64, i64 } %t283, ptr %a295 + store { ptr, i64, i64 } %t293, ptr %a296 + call void @finch_str_concat(ptr %a294, ptr %a295, ptr %a296) + store { ptr, i64, i64 } %t283, ptr %a297 + call void @finch_str_drop(ptr %a297) + store { ptr, i64, i64 } %t293, ptr %a298 + call void @finch_str_drop(ptr %a298) + %t299 = load { ptr, i64, i64 }, ptr %a294 + %t300 = call { ptr, i64, i64 } @finch.gen.op(ptr %t273, { ptr, i64, i64 } %t299) + store { ptr, i64, i64 } %t299, ptr %a301 + call void @finch_str_drop(ptr %a301) + %t302 = getelementptr inbounds %S.gen.StructDef, ptr %a251, i32 0, i32 12 + %t303 = load i64, ptr %a259 + %t304 = load { ptr, i64, i64 }, ptr %t302 + %t305 = extractvalue { ptr, i64, i64 } %t304, 1 + %t306 = icmp uge i64 %t303, %t305 + br i1 %t306, label %range2774, label %inrange2775 +range2774: + call void @finch_panic_index(ptr @.str.1665, i64 943, i64 %t303, i64 %t305) + unreachable +inrange2775: + %t307 = extractvalue { ptr, i64, i64 } %t304, 0 + %t308 = getelementptr inbounds %S.ast.Type, ptr %t307, i64 %t303 + %t309 = load %S.ast.Type, ptr %t308 + call void @finch.gen.dropAt(ptr %t272, { ptr, i64, i64 } %t300, %S.ast.Type %t309) + store { ptr, i64, i64 } %t300, ptr %a310 + call void @finch_str_drop(ptr %a310) + br label %endif2771 +endif2771: + br label %for.step2765 +for.step2765: + %t311 = load i64, ptr %a259 + %t312 = add i64 %t311, 1 + store i64 %t312, ptr %a259 + br label %for.cond2763 +for.end2766: + call void @finch_str_drop(ptr %a255) + call void @finch.drop.S_gen_StructDef(ptr %a251) + br label %endif2745 +endif2745: + br label %endif2735 +endif2735: + %t313 = load ptr, ptr %a1 + call void @finch.gen.emit(ptr %t313, { ptr, i64, i64 } { ptr @.str.1666, i64 8, i64 0 }) + %t314 = load ptr, ptr %a1 + %t315 = load %S.gen.Saved, ptr %a32 + %t316 = load { ptr, i64, i64 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.1667, i64 21, 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.1668, i64 8, i64 0 }, ptr %a323 + call void @finch_str_concat(ptr %a321, ptr %a322, ptr %a323) + store { ptr, i64, i64 } %t320, ptr %a324 + call void @finch_str_drop(ptr %a324) + %t325 = load { ptr, i64, i64 }, ptr %a321 + call void @finch.gen.endHelper(ptr %t314, %S.gen.Saved %t315, { ptr, i64, i64 } %t325) + store { ptr, i64, i64 } %t325, ptr %a326 + call void @finch_str_drop(ptr %a326) + %t327 = load { ptr, i64, i64 }, ptr %a10 + call void @finch.drop.S_gen_Saved(ptr %a32) + ret { ptr, i64, i64 } %t327 +} + +define internal void @finch.gen.hold(ptr %p0, %S.gen.Val %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.gen.Val, align 16 + %a26 = alloca { ptr, i64, i64 }, align 16 + %a27 = alloca { ptr, i64, i64 }, align 16 + %a32 = alloca %S.ast.Type, align 16 + %a33 = alloca %S.ast.Type, align 16 + store ptr %p0, ptr %a1 + store %S.gen.Val %p1, ptr %a2 + %t3 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 2 + %t4 = load i1, ptr %t3 + br label %logic.from2776 +logic.from2776: + br i1 %t4, label %logic.rhs2777, label %logic.end2778 +logic.rhs2777: + %t5 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 + %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1 + %t7 = load i64, ptr %t6 + %t8 = icmp sgt i64 %t7, 0 + br label %logic.rend2779 +logic.rend2779: + br label %logic.end2778 +logic.end2778: + %t9 = phi i1 [ false, %logic.from2776 ], [ %t8, %logic.rend2779 ] + br label %logic.from2780 +logic.from2780: + br i1 %t9, label %logic.rhs2781, label %logic.end2782 +logic.rhs2781: + %t10 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 + %t11 = load { ptr, i64, i64 }, ptr %t10 + %t12 = call i1 @finch.gen.isConstant({ ptr, i64, i64 } %t11) + %t13 = xor i1 %t12, true + br label %logic.rend2783 +logic.rend2783: + br label %logic.end2782 +logic.end2782: + %t14 = phi i1 [ false, %logic.from2780 ], [ %t13, %logic.rend2783 ] + br label %logic.from2784 +logic.from2784: + br i1 %t14, label %logic.rhs2785, label %logic.end2786 +logic.rhs2785: + %t15 = load ptr, ptr %a1 + %t16 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 + %t17 = load %S.ast.Type, ptr %t16 + %t18 = call i1 @finch.gen.owning(ptr %t15, %S.ast.Type %t17) + br label %logic.rend2787 +logic.rend2787: + br label %logic.end2786 +logic.end2786: + %t19 = phi i1 [ false, %logic.from2784 ], [ %t18, %logic.rend2787 ] + br i1 %t19, label %then2788, label %endif2790 +then2788: + %t20 = load ptr, ptr %a1 + %t21 = icmp eq ptr %t20, null + br i1 %t21, label %panic2791, label %ok2792 +panic2791: + call void @finch_panic(ptr @.str.1669, i64 956, ptr @.str.1670) + unreachable +ok2792: + %t22 = getelementptr inbounds %S.gen.Gen, ptr %t20, i32 0, i32 11 + %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t22, i32 0, i32 1 + %t24 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 + %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 + %t29 = insertvalue %S.gen.Pending zeroinitializer, { ptr, i64, i64 } %t28, 0 + %t30 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 + %t31 = load %S.ast.Type, ptr %t30 + store %S.ast.Type %t31, ptr %a32 + call void @finch.copy.S_ast_Type(ptr %a33, ptr %a32) + %t34 = load %S.ast.Type, ptr %a33 + %t35 = insertvalue %S.gen.Pending %t29, %S.ast.Type %t34, 1 + %t36 = insertvalue %S.gen.Pending %t35, i1 false, 2 + %t37 = load i64, ptr %t23 + %t38 = add i64 %t37, 1 + call void @finch_arr_reserve(ptr %t22, i64 %t38, i64 ptrtoint (ptr getelementptr (%S.gen.Pending, ptr null, i32 1) to i64)) + %t39 = load ptr, ptr %t22 + %t40 = getelementptr inbounds %S.gen.Pending, ptr %t39, i64 %t37 + store %S.gen.Pending %t36, ptr %t40 + store i64 %t38, ptr %t23 + br label %endif2790 +endif2790: + ret void +} + +define internal void @finch.gen.holdAddr(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca %S.ast.Type, align 16 + %a12 = alloca { ptr, i64, i64 }, align 16 + %a13 = alloca { ptr, i64, i64 }, align 16 + %a17 = alloca %S.ast.Type, align 16 + %a18 = alloca %S.ast.Type, align 16 + store ptr %p0, ptr %a1 + store { ptr, i64, i64 } %p1, ptr %a2 + store %S.ast.Type %p2, ptr %a3 + %t4 = load ptr, ptr %a1 + %t5 = load %S.ast.Type, ptr %a3 + %t6 = call i1 @finch.gen.owning(ptr %t4, %S.ast.Type %t5) + br i1 %t6, label %then2793, label %endif2795 +then2793: + %t7 = load ptr, ptr %a1 + %t8 = icmp eq ptr %t7, null + br i1 %t8, label %panic2796, label %ok2797 +panic2796: + call void @finch_panic(ptr @.str.1671, i64 962, ptr @.str.1672) + unreachable +ok2797: + %t9 = getelementptr inbounds %S.gen.Gen, ptr %t7, i32 0, i32 11 + %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t9, i32 0, i32 1 + %t11 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t11, ptr %a12 + call void @finch_str_copy(ptr %a13, ptr %a12) + %t14 = load { ptr, i64, i64 }, ptr %a13 + %t15 = insertvalue %S.gen.Pending zeroinitializer, { ptr, i64, i64 } %t14, 0 + %t16 = load %S.ast.Type, ptr %a3 + store %S.ast.Type %t16, ptr %a17 + call void @finch.copy.S_ast_Type(ptr %a18, ptr %a17) + %t19 = load %S.ast.Type, ptr %a18 + %t20 = insertvalue %S.gen.Pending %t15, %S.ast.Type %t19, 1 + %t21 = insertvalue %S.gen.Pending %t20, i1 true, 2 + %t22 = load i64, ptr %t10 + %t23 = add i64 %t22, 1 + call void @finch_arr_reserve(ptr %t9, i64 %t23, i64 ptrtoint (ptr getelementptr (%S.gen.Pending, ptr null, i32 1) to i64)) + %t24 = load ptr, ptr %t9 + %t25 = getelementptr inbounds %S.gen.Pending, ptr %t24, i64 %t22 + store %S.gen.Pending %t21, ptr %t25 + store i64 %t23, ptr %t10 + br label %endif2795 +endif2795: + ret void +} + +define internal void @finch.copy.S_gen_Pending(ptr %dst, ptr %src) { +entry: + + %t1 = load %S.gen.Pending, ptr %src + store %S.gen.Pending %t1, ptr %dst + %t2 = getelementptr inbounds %S.gen.Pending, ptr %dst, i32 0, i32 0 + %t3 = getelementptr inbounds %S.gen.Pending, ptr %src, i32 0, i32 0 + call void @finch_str_copy(ptr %t2, ptr %t3) + %t4 = getelementptr inbounds %S.gen.Pending, ptr %dst, i32 0, i32 1 + %t5 = getelementptr inbounds %S.gen.Pending, ptr %src, i32 0, i32 1 + call void @finch.copy.S_ast_Type(ptr %t4, ptr %t5) + ret void +} + +define internal void @finch.drop.S_gen_Pending(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.gen.Pending, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.gen.Pending, ptr %a, i32 0, i32 1 + call void @finch.drop.S_ast_Type(ptr %t2) + ret void +} + +define internal void @finch.gen.dropPending(ptr %p0, i64 %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca i64, align 16 + %a8 = alloca i64, align 16 + %a24 = alloca %S.gen.Pending, align 16 + %a25 = alloca %S.gen.Pending, align 16 + %a27 = alloca %S.gen.Pending, align 16 + store ptr %p0, ptr %a1 + 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.1673, i64 968, ptr @.str.1674) + unreachable +ok2799: + %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 11 + %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.cond2800 +while.cond2800: + %t9 = load i64, ptr %a8 + %t10 = load i64, ptr %a2 + %t11 = icmp sgt i64 %t9, %t10 + br i1 %t11, label %while.body2801, label %while.end2802 +while.body2801: + %t12 = load i64, ptr %a8 + %t13 = sub i64 %t12, 1 + store i64 %t13, ptr %a8 + %t14 = load ptr, ptr %a1 + %t15 = icmp eq ptr %t14, null + br i1 %t15, label %panic2803, label %ok2804 +panic2803: + call void @finch_panic(ptr @.str.1675, i64 971, ptr @.str.1676) + unreachable +ok2804: + %t16 = getelementptr inbounds %S.gen.Gen, ptr %t14, i32 0, i32 11 + %t17 = load i64, ptr %a8 + %t18 = load { ptr, i64, i64 }, ptr %t16 + %t19 = extractvalue { ptr, i64, i64 } %t18, 1 + %t20 = icmp uge i64 %t17, %t19 + br i1 %t20, label %range2805, label %inrange2806 +range2805: + call void @finch_panic_index(ptr @.str.1677, i64 971, i64 %t17, i64 %t19) + unreachable +inrange2806: + %t21 = extractvalue { ptr, i64, i64 } %t18, 0 + %t22 = getelementptr inbounds %S.gen.Pending, ptr %t21, i64 %t17 + %t23 = load %S.gen.Pending, ptr %t22 + store %S.gen.Pending %t23, ptr %a24 + call void @finch.copy.S_gen_Pending(ptr %a25, ptr %a24) + %t26 = load %S.gen.Pending, ptr %a25 + store %S.gen.Pending %t26, ptr %a27 + %t28 = getelementptr inbounds %S.gen.Pending, ptr %a27, i32 0, i32 2 + %t29 = load i1, ptr %t28 + br i1 %t29, label %then2807, label %else2808 +then2807: + %t30 = load ptr, ptr %a1 + %t31 = getelementptr inbounds %S.gen.Pending, ptr %a27, i32 0, i32 0 + %t32 = load { ptr, i64, i64 }, ptr %t31 + %t33 = getelementptr inbounds %S.gen.Pending, ptr %a27, i32 0, i32 1 + %t34 = load %S.ast.Type, ptr %t33 + call void @finch.gen.dropAt(ptr %t30, { ptr, i64, i64 } %t32, %S.ast.Type %t34) + br label %endif2809 +else2808: %t35 = load ptr, ptr %a1 - %t36 = load ptr, ptr %a1 - %t37 = load %S.ast.Type, ptr %a3 - %t38 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t36, %S.ast.Type %t37) - %t39 = load { ptr, i64, i64 }, ptr %a30 - %t40 = call { ptr, i64, i64 } @finch.gen.load(ptr %t35, { ptr, i64, i64 } %t38, { ptr, i64, i64 } %t39) - ret { ptr, i64, i64 } %t40 + %t36 = getelementptr inbounds %S.gen.Pending, ptr %a27, i32 0, i32 0 + %t37 = load { ptr, i64, i64 }, ptr %t36 + %t38 = getelementptr inbounds %S.gen.Pending, ptr %a27, i32 0, i32 1 + %t39 = load %S.ast.Type, ptr %t38 + call void @finch.gen.dropValue(ptr %t35, { ptr, i64, i64 } %t37, %S.ast.Type %t39) + br label %endif2809 +endif2809: + call void @finch.drop.S_gen_Pending(ptr %a27) + br label %while.cond2800 +while.end2802: + ret void +} + +define internal void @finch.gen.heldEnd(ptr %p0, i64 %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca i64, align 16 + %a20 = alloca %S.gen.Pending, align 16 + store ptr %p0, ptr %a1 + store i64 %p1, ptr %a2 + br label %while.cond2810 +while.cond2810: + %t3 = load ptr, ptr %a1 + %t4 = icmp eq ptr %t3, null + br i1 %t4, label %panic2813, label %ok2814 +panic2813: + call void @finch_panic(ptr @.str.1678, i64 982, ptr @.str.1679) + unreachable +ok2814: + %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 11 + %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1 + %t7 = load i64, ptr %t6 + %t8 = load i64, ptr %a2 + %t9 = icmp sgt i64 %t7, %t8 + br i1 %t9, label %while.body2811, label %while.end2812 +while.body2811: + %t10 = load ptr, ptr %a1 + %t11 = icmp eq ptr %t10, null + br i1 %t11, label %panic2815, label %ok2816 +panic2815: + call void @finch_panic(ptr @.str.1680, i64 983, ptr @.str.1681) + unreachable +ok2816: + %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 11 + %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t12, i32 0, i32 1 + %t14 = load i64, ptr %t13 + %t15 = icmp eq i64 %t14, 0 + br i1 %t15, label %panic2817, label %ok2818 +panic2817: + call void @finch_panic(ptr @.str.1682, i64 983, ptr @.str.1683) + unreachable +ok2818: + %t16 = sub i64 %t14, 1 + %t17 = load ptr, ptr %t12 + %t18 = getelementptr inbounds %S.gen.Pending, ptr %t17, i64 %t16 + %t19 = load %S.gen.Pending, ptr %t18 + store i64 %t16, ptr %t13 + store %S.gen.Pending %t19, ptr %a20 + call void @finch.drop.S_gen_Pending(ptr %a20) + br label %while.cond2810 +while.end2812: + ret void } define internal { ptr, i64, i64 } @finch.gen.own(ptr %p0, %S.gen.Val %p1) { @@ -26313,26 +30794,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.from2638 -logic.from2638: - br i1 %t7, label %logic.end2640, label %logic.rhs2639 -logic.rhs2639: + br label %logic.from2819 +logic.from2819: + br i1 %t7, label %logic.end2821, label %logic.rhs2820 +logic.rhs2820: %t8 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 2 %t9 = load i1, ptr %t8 - 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: + br label %logic.rend2822 +logic.rend2822: + br label %logic.end2821 +logic.end2821: + %t10 = phi i1 [ true, %logic.from2819 ], [ %t9, %logic.rend2822 ] + br i1 %t10, label %then2823, label %endif2825 +then2823: %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 -endif2644: +endif2825: %t16 = load ptr, ptr %a1 %t17 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 %t18 = load { ptr, i64, i64 }, ptr %t17 @@ -26353,18 +30834,23 @@ entry: %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 + %a21 = alloca { ptr, i64, i64 }, align 16 %a24 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 + %a25 = alloca { ptr, i64, i64 }, align 16 + %a26 = 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 %a32 = 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 %a36 = alloca { ptr, i64, i64 }, align 16 %a37 = alloca { ptr, i64, i64 }, align 16 %a38 = 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 + %a43 = alloca { ptr, i64, i64 }, align 16 + %a45 = 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 @@ -26375,41 +30861,55 @@ 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.1611, i64 0, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.1684, 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 %then2645, label %endif2647 -then2645: + br i1 %t14, label %then2826, label %endif2828 +then2826: %t15 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.1612, i64 2, i64 0 }, ptr %a17 + store { ptr, i64, i64 } { ptr @.str.1685, 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 + %t20 = load { ptr, i64, i64 }, ptr %a11 store { ptr, i64, i64 } %t19, ptr %a11 - 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.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 - store { ptr, i64, i64 } %t25, 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 - %t31 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } %t30, 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.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) + store { ptr, i64, i64 } %t20, ptr %a21 + call void @finch_str_drop(ptr %a21) + br label %endif2828 +endif2828: + %t22 = load ptr, ptr %a1 + %t23 = load { ptr, i64, i64 }, ptr %a10 + store { ptr, i64, i64 } %t23, ptr %a25 + store { ptr, i64, i64 } { ptr @.str.1686, i64 35, 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, i64, i64 }, ptr %a7 + store { ptr, i64, i64 } %t27, ptr %a30 + store { ptr, i64, i64 } %t28, ptr %a31 + call void @finch_str_concat(ptr %a29, ptr %a30, ptr %a31) + store { ptr, i64, i64 } %t27, ptr %a32 + call void @finch_str_drop(ptr %a32) + %t33 = load { ptr, i64, i64 }, ptr %a29 + %t34 = load { ptr, i64, i64 }, ptr %a11 + store { ptr, i64, i64 } %t33, ptr %a36 + store { ptr, i64, i64 } %t34, ptr %a37 + call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) + store { ptr, i64, i64 } %t33, ptr %a38 + call void @finch_str_drop(ptr %a38) + %t39 = load { ptr, i64, i64 }, ptr %a35 + store { ptr, i64, i64 } %t39, ptr %a41 + store { ptr, i64, i64 } { ptr @.str.1687, i64 1, i64 0 }, ptr %a42 + call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) + store { ptr, i64, i64 } %t39, ptr %a43 + call void @finch_str_drop(ptr %a43) + %t44 = load { ptr, i64, i64 }, ptr %a40 + call void @finch.gen.emit(ptr %t22, { ptr, i64, i64 } %t44) + store { ptr, i64, i64 } %t44, ptr %a45 + call void @finch_str_drop(ptr %a45) + call void @finch_str_drop(ptr %a11) + call void @finch_str_drop(ptr %a10) + call void @finch_str_drop(ptr %a7) ret void } @@ -26423,85 +30923,115 @@ entry: %a9 = alloca { ptr, i64, i64 }, align 16 %a10 = alloca { ptr, i64, i64 }, align 16 %a11 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 + %a12 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + %a16 = alloca { ptr, i64, i64 }, align 16 %a19 = 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 %a23 = 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 %a29 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 + %a30 = alloca { ptr, i64, i64 }, align 16 %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 %a36 = alloca { ptr, i64, i64 }, align 16 %a37 = alloca { ptr, i64, i64 }, align 16 %a38 = 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 %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 + %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 + %a54 = alloca { ptr, i64, i64 }, align 16 + %a57 = alloca { ptr, i64, i64 }, align 16 + %a58 = 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 store ptr %p0, ptr %a1 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.1615, i64 31, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.1688, 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.1616, i64 3, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.1689, 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.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.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.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.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.1621, i64 6, i64 0 }, ptr %a38 + store { ptr, i64, i64 } %t8, ptr %a12 + call void @finch_str_drop(ptr %a12) + %t13 = load { ptr, i64, i64 }, ptr %a9 + %t14 = call { ptr, i64, i64 } @finch.gen.op(ptr %t3, { ptr, i64, i64 } %t13) + store { ptr, i64, i64 } %t13, ptr %a15 + call void @finch_str_drop(ptr %a15) + store { ptr, i64, i64 } %t14, ptr %a16 + %t17 = load ptr, ptr %a1 + %t18 = load { ptr, i64, i64 }, ptr %a16 + store { ptr, i64, i64 } { ptr @.str.1690, i64 12, 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.1691, i64 6, i64 0 }, ptr %a25 + call void @finch_str_concat(ptr %a23, ptr %a24, ptr %a25) + store { ptr, i64, i64 } %t22, ptr %a26 + call void @finch_str_drop(ptr %a26) + %t27 = load { ptr, i64, i64 }, ptr %a23 + %t28 = call { ptr, i64, i64 } @finch.gen.op(ptr %t17, { ptr, i64, i64 } %t27) + store { ptr, i64, i64 } %t27, ptr %a29 + call void @finch_str_drop(ptr %a29) + store { ptr, i64, i64 } %t28, ptr %a30 + %t31 = load ptr, ptr %a1 + %t32 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t31, { ptr, i64, i64 } { ptr @.str.1692, i64 0, i64 0 }) + store { ptr, i64, i64 } %t32, ptr %a33 + %t34 = load ptr, ptr %a1 + %t35 = load { ptr, i64, i64 }, ptr %a30 + store { ptr, i64, i64 } { ptr @.str.1693, i64 10, 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 - %t40 = load { ptr, i64, i64 }, ptr %a29 - store { ptr, i64, i64 } %t39, 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.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 - store { ptr, i64, i64 } %t48, 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 - %t54 = call { ptr, i64, i64 } @finch.gen.op(ptr %t30, { ptr, i64, i64 } %t53) - ret { ptr, i64, i64 } %t54 + store { ptr, i64, i64 } %t39, ptr %a41 + store { ptr, i64, i64 } { ptr @.str.1694, i64 6, i64 0 }, ptr %a42 + call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) + store { ptr, i64, i64 } %t39, ptr %a43 + call void @finch_str_drop(ptr %a43) + %t44 = load { ptr, i64, i64 }, ptr %a40 + %t45 = load { ptr, i64, i64 }, ptr %a33 + store { ptr, i64, i64 } %t44, ptr %a47 + store { ptr, i64, i64 } %t45, ptr %a48 + call void @finch_str_concat(ptr %a46, ptr %a47, ptr %a48) + store { ptr, i64, i64 } %t44, ptr %a49 + call void @finch_str_drop(ptr %a49) + %t50 = load { ptr, i64, i64 }, ptr %a46 + store { ptr, i64, i64 } %t50, ptr %a52 + store { ptr, i64, i64 } { ptr @.str.1695, i64 6, i64 0 }, ptr %a53 + call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) + store { ptr, i64, i64 } %t50, ptr %a54 + call void @finch_str_drop(ptr %a54) + %t55 = load { ptr, i64, i64 }, ptr %a51 + %t56 = load { ptr, i64, i64 }, ptr %a16 + store { ptr, i64, i64 } %t55, ptr %a58 + store { ptr, i64, i64 } %t56, ptr %a59 + call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) + store { ptr, i64, i64 } %t55, ptr %a60 + call void @finch_str_drop(ptr %a60) + %t61 = load { ptr, i64, i64 }, ptr %a57 + %t62 = call { ptr, i64, i64 } @finch.gen.op(ptr %t34, { ptr, i64, i64 } %t61) + store { ptr, i64, i64 } %t61, ptr %a63 + call void @finch_str_drop(ptr %a63) + call void @finch_str_drop(ptr %a33) + call void @finch_str_drop(ptr %a30) + call void @finch_str_drop(ptr %a16) + ret { ptr, i64, i64 } %t62 } define internal void @finch.gen.emitPrint(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, i1 %p3) { @@ -26513,118 +31043,155 @@ entry: %a7 = alloca { ptr, i64, i64 }, align 16 %a8 = alloca { ptr, i64, i64 }, align 16 %a10 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 + %a19 = alloca %S.ast.Type, 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 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 + %a22 = alloca { ptr, i64, i64 }, align 16 + %a23 = alloca { ptr, i64, i64 }, align 16 + %a25 = alloca { ptr, i64, i64 }, align 16 + %a34 = alloca %S.ast.Type, align 16 + %a35 = alloca { ptr, i64, i64 }, align 16 + %a36 = alloca { ptr, i64, i64 }, align 16 + %a37 = alloca { ptr, i64, i64 }, align 16 + %a38 = alloca { ptr, i64, i64 }, align 16 + %a40 = alloca { ptr, i64, i64 }, align 16 + %a49 = alloca %S.ast.Type, align 16 + %a50 = 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 %a55 = 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 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = 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 + %a70 = alloca { ptr, i64, i64 }, align 16 %a73 = alloca { ptr, i64, i64 }, align 16 %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 %a78 = alloca { ptr, i64, i64 }, align 16 %a79 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 + %a80 = alloca { ptr, i64, i64 }, align 16 + %a82 = alloca { ptr, i64, i64 }, align 16 + %a85 = alloca { ptr, i64, i64 }, align 16 + %a86 = alloca { ptr, i64, i64 }, align 16 %a87 = alloca { ptr, i64, i64 }, align 16 - %a90 = 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 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a99 = 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 %a103 = alloca { ptr, i64, i64 }, align 16 %a104 = alloca { ptr, i64, i64 }, align 16 %a105 = 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 %a110 = 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 %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = 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 %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = 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 %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 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = 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 - %a139 = alloca { ptr, i64, i64 }, align 16 + %a138 = alloca { ptr, i64, i64 }, align 16 %a140 = alloca { ptr, i64, i64 }, align 16 %a141 = alloca { ptr, i64, i64 }, align 16 - %a143 = 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 + %a147 = alloca { ptr, i64, i64 }, align 16 %a148 = alloca { ptr, i64, i64 }, align 16 + %a150 = 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 %a156 = alloca { ptr, i64, i64 }, align 16 %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = 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 + %a164 = 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 + %a170 = alloca { ptr, i64, i64 }, align 16 %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 %a175 = 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 %a180 = 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 + %a184 = alloca { ptr, i64, i64 }, align 16 %a185 = alloca { ptr, i64, i64 }, align 16 %a186 = 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 %a192 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 + %a194 = alloca { ptr, i64, i64 }, align 16 %a197 = alloca { ptr, i64, i64 }, align 16 - %a200 = 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 - %a206 = alloca { ptr, i64, i64 }, align 16 + %a204 = 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 + %a210 = alloca { ptr, i64, i64 }, align 16 + %a212 = alloca { ptr, i64, i64 }, align 16 + %a214 = alloca { ptr, i64, i64 }, align 16 + %a215 = alloca { ptr, i64, i64 }, align 16 + %a220 = alloca { ptr, i64, i64 }, align 16 + %a221 = alloca { ptr, i64, i64 }, align 16 + %a222 = 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 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 + %a227 = alloca { ptr, i64, i64 }, align 16 %a230 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 + %a231 = alloca { ptr, i64, i64 }, align 16 %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 + %a237 = alloca { ptr, i64, i64 }, align 16 + %a240 = 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 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 + %a262 = 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 + %a268 = alloca { ptr, i64, i64 }, align 16 + %a269 = alloca { ptr, i64, i64 }, align 16 + %a271 = alloca { ptr, i64, i64 }, align 16 + %a277 = alloca { ptr, i64, i64 }, align 16 + %a278 = alloca { ptr, i64, i64 }, align 16 + %a284 = 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 + %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 + %a303 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store { ptr, i64, i64 } %p1, ptr %a2 store %S.ast.Type %p2, ptr %a3 @@ -26637,340 +31204,427 @@ 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 %then2648, label %else2649 -then2648: + br i1 %t12, label %then2829, label %else2830 +then2829: %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.1625, i64 3, i64 0 }) + %t17 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1698, 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.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.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 %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.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.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.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 %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.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.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.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.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 %then2657, label %else2658 -then2657: - %t52 = load ptr, ptr %a1 - %t53 = load { ptr, i64, i64 }, ptr %a2 - 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.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 %then2660, label %else2661 -then2660: - %t65 = load ptr, ptr %a1 + store %S.ast.Type %t17, ptr %a19 + call void @finch.drop.S_ast_Type(ptr %a19) + store { ptr, i64, i64 } { ptr @.str.1697, i64 4, i64 0 }, ptr %a21 + store { ptr, i64, i64 } %t18, ptr %a22 + call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22) + store { ptr, i64, i64 } %t18, ptr %a23 + call void @finch_str_drop(ptr %a23) + %t24 = load { ptr, i64, i64 }, ptr %a20 + call void @finch.gen.printf(ptr %t13, { ptr, i64, i64 } { ptr @.str.1696, i64 4, i64 0 }, { ptr, i64, i64 } %t24) + store { ptr, i64, i64 } %t24, ptr %a25 + call void @finch_str_drop(ptr %a25) + br label %endif2831 +else2830: + %t26 = load %S.ast.Type, ptr %a3 + %t27 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t26) + br i1 %t27, label %then2832, label %else2833 +then2832: + %t28 = load ptr, ptr %a1 + %t29 = load ptr, ptr %a1 + %t30 = load { ptr, i64, i64 }, ptr %a2 + %t31 = load %S.ast.Type, ptr %a3 + %t32 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1701, i64 3, i64 0 }) + %t33 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t29, { ptr, i64, i64 } %t30, %S.ast.Type %t31, %S.ast.Type %t32) + store %S.ast.Type %t32, ptr %a34 + call void @finch.drop.S_ast_Type(ptr %a34) + store { ptr, i64, i64 } { ptr @.str.1700, i64 4, i64 0 }, ptr %a36 + store { ptr, i64, i64 } %t33, ptr %a37 + call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) + store { ptr, i64, i64 } %t33, ptr %a38 + call void @finch_str_drop(ptr %a38) + %t39 = load { ptr, i64, i64 }, ptr %a35 + call void @finch.gen.printf(ptr %t28, { ptr, i64, i64 } { ptr @.str.1699, i64 4, i64 0 }, { ptr, i64, i64 } %t39) + store { ptr, i64, i64 } %t39, ptr %a40 + call void @finch_str_drop(ptr %a40) + br label %endif2834 +else2833: + %t41 = load %S.ast.Type, ptr %a3 + %t42 = call i1 @finch.gen.isFloat(%S.ast.Type %t41) + br i1 %t42, label %then2835, label %else2836 +then2835: + %t43 = load ptr, ptr %a1 + %t44 = load ptr, ptr %a1 + %t45 = load { ptr, i64, i64 }, ptr %a2 + %t46 = load %S.ast.Type, ptr %a3 + %t47 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1704, i64 5, i64 0 }) + %t48 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t44, { ptr, i64, i64 } %t45, %S.ast.Type %t46, %S.ast.Type %t47) + store %S.ast.Type %t47, ptr %a49 + call void @finch.drop.S_ast_Type(ptr %a49) + store { ptr, i64, i64 } { ptr @.str.1703, i64 7, i64 0 }, ptr %a51 + store { ptr, i64, i64 } %t48, ptr %a52 + call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) + store { ptr, i64, i64 } %t48, ptr %a53 + call void @finch_str_drop(ptr %a53) + %t54 = load { ptr, i64, i64 }, ptr %a50 + call void @finch.gen.printf(ptr %t43, { ptr, i64, i64 } { ptr @.str.1702, i64 2, i64 0 }, { ptr, i64, i64 } %t54) + store { ptr, i64, i64 } %t54, ptr %a55 + call void @finch_str_drop(ptr %a55) + br label %endif2837 +else2836: + %t56 = load { ptr, i64, i64 }, ptr %a10 + store { ptr, i64, i64 } %t56, ptr %a57 + store { ptr, i64, i64 } { ptr @.str.1705, i64 4, i64 0 }, ptr %a58 + %t59 = call i32 @finch_str_eq(ptr %a57, ptr %a58) + %t60 = icmp ne i32 %t59, 0 + br i1 %t60, label %then2838, label %else2839 +then2838: + %t61 = load ptr, ptr %a1 + %t62 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } { ptr @.str.1706, i64 8, 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 } { ptr @.str.1636, i64 4, i64 0 }, ptr %a68 - store { ptr, i64, i64 } %t66, ptr %a69 + store { ptr, i64, i64 } %t66, ptr %a68 + store { ptr, i64, i64 } { ptr @.str.1707, i64 7, 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.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.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.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.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 %then2663, label %else2664 -then2663: - %t82 = load ptr, ptr %a1 - %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.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.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.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 - store { ptr, i64, i64 } %t97, 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.1644, i64 6, i64 0 }, ptr %a105 + store { ptr, i64, i64 } %t66, ptr %a70 + call void @finch_str_drop(ptr %a70) + %t71 = load { ptr, i64, i64 }, ptr %a67 + %t72 = call { ptr, i64, i64 } @finch.gen.op(ptr %t61, { ptr, i64, i64 } %t71) + store { ptr, i64, i64 } %t71, ptr %a73 + call void @finch_str_drop(ptr %a73) + store { ptr, i64, i64 } %t72, ptr %a74 + %t75 = load i1, ptr %a4 + br i1 %t75, label %then2841, label %else2842 +then2841: + %t76 = load ptr, ptr %a1 + %t77 = load { ptr, i64, i64 }, ptr %a74 + store { ptr, i64, i64 } { ptr @.str.1709, i64 4, 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 + call void @finch.gen.printf(ptr %t76, { ptr, i64, i64 } { ptr @.str.1708, i64 4, i64 0 }, { ptr, i64, i64 } %t81) + store { ptr, i64, i64 } %t81, ptr %a82 + call void @finch_str_drop(ptr %a82) + br label %endif2843 +else2842: + %t83 = load ptr, ptr %a1 + %t84 = load { ptr, i64, i64 }, ptr %a74 + store { ptr, i64, i64 } { ptr @.str.1711, i64 4, 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 + call void @finch.gen.printf(ptr %t83, { ptr, i64, i64 } { ptr @.str.1710, i64 2, i64 0 }, { ptr, i64, i64 } %t88) + store { ptr, i64, i64 } %t88, ptr %a89 + call void @finch_str_drop(ptr %a89) + br label %endif2843 +endif2843: + call void @finch_str_drop(ptr %a74) + br label %endif2840 +else2839: + %t90 = load { ptr, i64, i64 }, ptr %a10 + store { ptr, i64, i64 } %t90, ptr %a91 + store { ptr, i64, i64 } { ptr @.str.1712, 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 %then2844, label %else2845 +then2844: + %t95 = load ptr, ptr %a1 + %t96 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t95, { ptr, i64, i64 } { ptr @.str.1713, i64 4, i64 0 }) + store { ptr, i64, i64 } %t96, ptr %a97 + %t98 = load ptr, ptr %a1 + %t99 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t98, { ptr, i64, i64 } { ptr @.str.1714, i64 5, i64 0 }) + store { ptr, i64, i64 } %t99, ptr %a100 + %t101 = load ptr, ptr %a1 + %t102 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } { ptr @.str.1715, i64 10, 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 - %t107 = load { ptr, i64, i64 }, ptr %a87 - store { ptr, i64, i64 } %t106, 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 - %t112 = call { ptr, i64, i64 } @finch.gen.op(ptr %t88, { ptr, i64, i64 } %t111) - 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.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.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.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 %then2666, label %else2667 -then2666: - %t125 = load ptr, ptr %a1 - %t126 = load { ptr, i64, i64 }, ptr %a2 - 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.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.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.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) - store { ptr, i64, i64 } %t147, ptr %a148 - %t149 = load ptr, ptr %a1 - %t150 = load { ptr, i64, i64 }, ptr %a2 - %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 %then2669, label %else2670 -then2669: - %t154 = load ptr, ptr %a1 - %t155 = load { ptr, i64, i64 }, ptr %a148 - 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.1654, i64 6, i64 0 }, ptr %a162 + store { ptr, i64, i64 } %t106, ptr %a108 + store { ptr, i64, i64 } { ptr @.str.1716, i64 6, i64 0 }, ptr %a109 + call void @finch_str_concat(ptr %a107, ptr %a108, ptr %a109) + store { ptr, i64, i64 } %t106, ptr %a110 + call void @finch_str_drop(ptr %a110) + %t111 = load { ptr, i64, i64 }, ptr %a107 + %t112 = load { ptr, i64, i64 }, ptr %a97 + store { ptr, i64, i64 } %t111, ptr %a114 + store { ptr, i64, i64 } %t112, ptr %a115 + call void @finch_str_concat(ptr %a113, ptr %a114, ptr %a115) + store { ptr, i64, i64 } %t111, ptr %a116 + call void @finch_str_drop(ptr %a116) + %t117 = load { ptr, i64, i64 }, ptr %a113 + store { ptr, i64, i64 } %t117, ptr %a119 + store { ptr, i64, i64 } { ptr @.str.1717, i64 6, i64 0 }, ptr %a120 + call void @finch_str_concat(ptr %a118, ptr %a119, ptr %a120) + store { ptr, i64, i64 } %t117, ptr %a121 + call void @finch_str_drop(ptr %a121) + %t122 = load { ptr, i64, i64 }, ptr %a118 + %t123 = load { ptr, i64, i64 }, ptr %a100 + store { ptr, i64, i64 } %t122, ptr %a125 + store { ptr, i64, i64 } %t123, ptr %a126 + call void @finch_str_concat(ptr %a124, ptr %a125, ptr %a126) + store { ptr, i64, i64 } %t122, ptr %a127 + call void @finch_str_drop(ptr %a127) + %t128 = load { ptr, i64, i64 }, ptr %a124 + %t129 = call { ptr, i64, i64 } @finch.gen.op(ptr %t101, { ptr, i64, i64 } %t128) + store { ptr, i64, i64 } %t128, ptr %a130 + call void @finch_str_drop(ptr %a130) + store { ptr, i64, i64 } %t129, ptr %a131 + %t132 = load ptr, ptr %a1 + %t133 = load { ptr, i64, i64 }, ptr %a131 + store { ptr, i64, i64 } { ptr @.str.1719, i64 4, 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 + call void @finch.gen.printf(ptr %t132, { ptr, i64, i64 } { ptr @.str.1718, i64 2, i64 0 }, { ptr, i64, i64 } %t137) + store { ptr, i64, i64 } %t137, ptr %a138 + call void @finch_str_drop(ptr %a138) + call void @finch_str_drop(ptr %a131) + call void @finch_str_drop(ptr %a100) + call void @finch_str_drop(ptr %a97) + br label %endif2846 +else2845: + %t139 = load { ptr, i64, i64 }, ptr %a10 + store { ptr, i64, i64 } %t139, ptr %a140 + store { ptr, i64, i64 } { ptr @.str.1720, 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 %then2847, label %else2848 +then2847: + %t144 = load ptr, ptr %a1 + %t145 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } { ptr @.str.1721, i64 31, 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.1722, i64 3, i64 0 }, ptr %a152 + call void @finch_str_concat(ptr %a150, ptr %a151, ptr %a152) + store { ptr, i64, i64 } %t149, ptr %a153 + call void @finch_str_drop(ptr %a153) + %t154 = load { ptr, i64, i64 }, ptr %a150 + %t155 = call { ptr, i64, i64 } @finch.gen.op(ptr %t144, { ptr, i64, i64 } %t154) + store { ptr, i64, i64 } %t154, ptr %a156 + call void @finch_str_drop(ptr %a156) + store { ptr, i64, i64 } %t155, ptr %a157 + %t158 = load ptr, ptr %a1 + %t159 = load { ptr, i64, i64 }, ptr %a157 + store { ptr, i64, i64 } { ptr @.str.1723, i64 10, i64 0 }, ptr %a161 + store { ptr, i64, i64 } %t159, 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 - store { ptr, i64, i64 } %t163, 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 - 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.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.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 + store { ptr, i64, i64 } %t163, ptr %a165 + store { ptr, i64, i64 } { ptr @.str.1724, i64 7, i64 0 }, ptr %a166 + call void @finch_str_concat(ptr %a164, ptr %a165, ptr %a166) + store { ptr, i64, i64 } %t163, ptr %a167 + call void @finch_str_drop(ptr %a167) + %t168 = load { ptr, i64, i64 }, ptr %a164 + %t169 = call { ptr, i64, i64 } @finch.gen.op(ptr %t158, { ptr, i64, i64 } %t168) + store { ptr, i64, i64 } %t168, ptr %a170 + call void @finch_str_drop(ptr %a170) + store { ptr, i64, i64 } %t169, ptr %a171 + %t172 = load ptr, ptr %a1 + %t173 = load { ptr, i64, i64 }, ptr %a2 + %t174 = call { ptr, i64, i64 } @finch.gen.cstr(ptr %t172, { ptr, i64, i64 } %t173) + store { ptr, i64, i64 } %t174, ptr %a175 + %t176 = load i1, ptr %a4 + br i1 %t176, label %then2850, label %else2851 +then2850: + %t177 = load ptr, ptr %a1 + %t178 = load { ptr, i64, i64 }, ptr %a171 + store { ptr, i64, i64 } { ptr @.str.1726, i64 4, i64 0 }, ptr %a180 store { ptr, i64, i64 } %t178, 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 - 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.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 %then2672, label %else2673 -then2672: - %t189 = load ptr, ptr %a1 - %t190 = load { ptr, i64, i64 }, ptr %a2 - 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.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.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.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.1663, i64 8, i64 0 }) - store { ptr, i64, i64 } %t208, ptr %a209 - %t210 = load ptr, ptr %a1 - %t211 = load { ptr, i64, i64 }, ptr %a200 - %t212 = load { ptr, i64, i64 }, ptr %a203 - %t213 = load { ptr, i64, i64 }, ptr %a206 - call void @finch.gen.condBr(ptr %t210, { ptr, i64, i64 } %t211, { ptr, i64, i64 } %t212, { ptr, i64, i64 } %t213) - %t214 = load ptr, ptr %a1 - %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.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) - %t219 = load ptr, ptr %a1 - %t220 = load { ptr, i64, i64 }, ptr %a206 - call void @finch.gen.label(ptr %t219, { ptr, i64, i64 } %t220) - %t221 = load ptr, ptr %a1 - %t222 = load ptr, ptr %a1 - %t223 = load { ptr, i64, i64 }, ptr %a2 - 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 %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.1727, i64 6, i64 0 }, ptr %a185 + call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) + store { ptr, i64, i64 } %t182, ptr %a186 + call void @finch_str_drop(ptr %a186) + %t187 = load { ptr, i64, i64 }, ptr %a183 + %t188 = load { ptr, i64, i64 }, ptr %a175 + store { ptr, i64, i64 } %t187, ptr %a190 + store { ptr, i64, i64 } %t188, ptr %a191 + call void @finch_str_concat(ptr %a189, ptr %a190, ptr %a191) + store { ptr, i64, i64 } %t187, ptr %a192 + call void @finch_str_drop(ptr %a192) + %t193 = load { ptr, i64, i64 }, ptr %a189 + call void @finch.gen.printf(ptr %t177, { ptr, i64, i64 } { ptr @.str.1725, i64 6, i64 0 }, { ptr, i64, i64 } %t193) + store { ptr, i64, i64 } %t193, ptr %a194 + call void @finch_str_drop(ptr %a194) + br label %endif2852 +else2851: + %t195 = load ptr, ptr %a1 + %t196 = load { ptr, i64, i64 }, ptr %a171 + store { ptr, i64, i64 } { ptr @.str.1729, i64 4, 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.1730, i64 6, i64 0 }, ptr %a203 + call void @finch_str_concat(ptr %a201, ptr %a202, ptr %a203) + store { ptr, i64, i64 } %t200, ptr %a204 + call void @finch_str_drop(ptr %a204) + %t205 = load { ptr, i64, i64 }, ptr %a201 + %t206 = load { ptr, i64, i64 }, ptr %a175 + store { ptr, i64, i64 } %t205, ptr %a208 + store { ptr, i64, i64 } %t206, ptr %a209 + call void @finch_str_concat(ptr %a207, ptr %a208, ptr %a209) + store { ptr, i64, i64 } %t205, ptr %a210 + call void @finch_str_drop(ptr %a210) + %t211 = load { ptr, i64, i64 }, ptr %a207 + call void @finch.gen.printf(ptr %t195, { ptr, i64, i64 } { ptr @.str.1728, i64 4, i64 0 }, { ptr, i64, i64 } %t211) + store { ptr, i64, i64 } %t211, ptr %a212 + call void @finch_str_drop(ptr %a212) + br label %endif2852 +endif2852: + call void @finch_str_drop(ptr %a175) + call void @finch_str_drop(ptr %a171) + call void @finch_str_drop(ptr %a157) + br label %endif2849 +else2848: + %t213 = load { ptr, i64, i64 }, ptr %a10 + store { ptr, i64, i64 } %t213, ptr %a214 + store { ptr, i64, i64 } { ptr @.str.1731, i64 3, i64 0 }, ptr %a215 + %t216 = call i32 @finch_str_eq(ptr %a214, ptr %a215) + %t217 = icmp ne i32 %t216, 0 + br i1 %t217, label %then2853, label %else2854 +then2853: + %t218 = load ptr, ptr %a1 + %t219 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } { ptr @.str.1732, i64 12, i64 0 }, ptr %a221 + store { ptr, i64, i64 } %t219, ptr %a222 + 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.1733, i64 6, i64 0 }, 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.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.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.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 %endif2674 -else2673: - %t241 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t241, ptr %a242 - 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 %then2675, label %else2676 -then2675: - %t246 = load ptr, ptr %a1 - 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: + store { ptr, i64, i64 } %t223, ptr %a227 + call void @finch_str_drop(ptr %a227) + %t228 = load { ptr, i64, i64 }, ptr %a224 + %t229 = call { ptr, i64, i64 } @finch.gen.op(ptr %t218, { ptr, i64, i64 } %t228) + store { ptr, i64, i64 } %t228, ptr %a230 + call void @finch_str_drop(ptr %a230) + store { ptr, i64, i64 } %t229, ptr %a231 + %t232 = load ptr, ptr %a1 + %t233 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t232, { ptr, i64, i64 } { ptr @.str.1734, i64 8, i64 0 }) + store { ptr, i64, i64 } %t233, ptr %a234 + %t235 = load ptr, ptr %a1 + %t236 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t235, { ptr, i64, i64 } { ptr @.str.1735, i64 8, i64 0 }) + store { ptr, i64, i64 } %t236, ptr %a237 + %t238 = load ptr, ptr %a1 + %t239 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t238, { ptr, i64, i64 } { ptr @.str.1736, i64 8, i64 0 }) + store { ptr, i64, i64 } %t239, ptr %a240 + %t241 = load ptr, ptr %a1 + %t242 = load { ptr, i64, i64 }, ptr %a231 + %t243 = load { ptr, i64, i64 }, ptr %a234 + %t244 = load { ptr, i64, i64 }, ptr %a237 + call void @finch.gen.condBr(ptr %t241, { ptr, i64, i64 } %t242, { ptr, i64, i64 } %t243, { ptr, i64, i64 } %t244) + %t245 = load ptr, ptr %a1 + %t246 = load { ptr, i64, i64 }, ptr %a234 + call void @finch.gen.label(ptr %t245, { ptr, i64, i64 } %t246) %t247 = load ptr, ptr %a1 - %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 + call void @finch.gen.printf(ptr %t247, { ptr, i64, i64 } { ptr @.str.1737, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1738, i64 0, i64 0 }) + %t248 = load ptr, ptr %a1 + %t249 = load { ptr, i64, i64 }, ptr %a240 + call void @finch.gen.br(ptr %t248, { ptr, i64, i64 } %t249) %t250 = load ptr, ptr %a1 - %t251 = load { ptr, i64, i64 }, ptr %a249 - 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) + %t251 = load { ptr, i64, i64 }, ptr %a237 + call void @finch.gen.label(ptr %t250, { ptr, i64, i64 } %t251) %t252 = load ptr, ptr %a1 - %t253 = load { ptr, i64, i64 }, ptr %a249 + %t253 = load ptr, ptr %a1 %t254 = load { ptr, i64, i64 }, ptr %a2 - %t255 = load %S.ast.Type, ptr %a3 - %t256 = load i1, ptr %a4 - 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.1676, i64 31, i64 0 }, ptr %a260 - store { ptr, i64, i64 } %t258, ptr %a261 + store { ptr, i64, i64 } { ptr @.str.1741, i64 13, 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.1742, i64 7, i64 0 }, 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.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 %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: + store { ptr, i64, i64 } %t258, ptr %a262 + call void @finch_str_drop(ptr %a262) + %t263 = load { ptr, i64, i64 }, ptr %a259 + %t264 = call { ptr, i64, i64 } @finch.gen.op(ptr %t253, { ptr, i64, i64 } %t263) + store { ptr, i64, i64 } %t263, ptr %a265 + call void @finch_str_drop(ptr %a265) + store { ptr, i64, i64 } { ptr @.str.1740, i64 4, i64 0 }, ptr %a267 + store { ptr, i64, i64 } %t264, ptr %a268 + call void @finch_str_concat(ptr %a266, ptr %a267, ptr %a268) + store { ptr, i64, i64 } %t264, ptr %a269 + call void @finch_str_drop(ptr %a269) + %t270 = load { ptr, i64, i64 }, ptr %a266 + call void @finch.gen.printf(ptr %t252, { ptr, i64, i64 } { ptr @.str.1739, i64 6, i64 0 }, { ptr, i64, i64 } %t270) + store { ptr, i64, i64 } %t270, ptr %a271 + call void @finch_str_drop(ptr %a271) + %t272 = load ptr, ptr %a1 + %t273 = load { ptr, i64, i64 }, ptr %a240 + call void @finch.gen.br(ptr %t272, { ptr, i64, i64 } %t273) + %t274 = load ptr, ptr %a1 + %t275 = load { ptr, i64, i64 }, ptr %a240 + call void @finch.gen.label(ptr %t274, { ptr, i64, i64 } %t275) + call void @finch_str_drop(ptr %a240) + call void @finch_str_drop(ptr %a237) + call void @finch_str_drop(ptr %a234) + call void @finch_str_drop(ptr %a231) + br label %endif2855 +else2854: + %t276 = load { ptr, i64, i64 }, ptr %a10 + store { ptr, i64, i64 } %t276, ptr %a277 + store { ptr, i64, i64 } { ptr @.str.1743, i64 4, i64 0 }, ptr %a278 + %t279 = call i32 @finch_str_eq(ptr %a277, ptr %a278) + %t280 = icmp ne i32 %t279, 0 + br i1 %t280, label %then2856, label %else2857 +then2856: + %t281 = load ptr, ptr %a1 + call void @finch.gen.printf(ptr %t281, { ptr, i64, i64 } { ptr @.str.1744, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1745, i64 0, i64 0 }) + br label %endif2858 +else2857: + %t282 = load ptr, ptr %a1 + %t283 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t282, { ptr, i64, i64 } { ptr @.str.1746, i64 17, 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.1747, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.1748, i64 15, i64 0 }, { ptr, i64, i64 } %t286) + %t287 = load ptr, ptr %a1 + %t288 = load { ptr, i64, i64 }, ptr %a284 + %t289 = load { ptr, i64, i64 }, ptr %a2 + %t290 = load %S.ast.Type, ptr %a3 + %t291 = load i1, ptr %a4 + call void @finch.gen.emitFormat(ptr %t287, { ptr, i64, i64 } %t288, { ptr, i64, i64 } %t289, %S.ast.Type %t290, i1 %t291) + %t292 = load ptr, ptr %a1 + %t293 = load { ptr, i64, i64 }, ptr %a284 + store { ptr, i64, i64 } { ptr @.str.1749, i64 31, i64 0 }, ptr %a295 + store { ptr, i64, i64 } %t293, ptr %a296 + 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.1750, i64 1, i64 0 }, ptr %a300 + call void @finch_str_concat(ptr %a298, ptr %a299, ptr %a300) + store { ptr, i64, i64 } %t297, ptr %a301 + call void @finch_str_drop(ptr %a301) + %t302 = load { ptr, i64, i64 }, ptr %a298 + call void @finch.gen.emit(ptr %t292, { ptr, i64, i64 } %t302) + store { ptr, i64, i64 } %t302, ptr %a303 + call void @finch_str_drop(ptr %a303) + call void @finch_str_drop(ptr %a284) + br label %endif2858 +endif2858: + br label %endif2855 +endif2855: + br label %endif2849 +endif2849: + br label %endif2846 +endif2846: + br label %endif2840 +endif2840: + br label %endif2837 +endif2837: + br label %endif2834 +endif2834: + br label %endif2831 +endif2831: + call void @finch_str_drop(ptr %a10) ret void } @@ -26985,56 +31639,80 @@ entry: %a10 = alloca { ptr, i64, i64 }, align 16 %a11 = alloca { ptr, i64, i64 }, align 16 %a12 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 + %a13 = 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 %a21 = 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 + %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 %a33 = alloca { ptr, i64, i64 }, align 16 %a34 = 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 + %a41 = alloca { ptr, i64, i64 }, align 16 + %a42 = alloca { ptr, i64, i64 }, align 16 + %a44 = 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 %t4 = load ptr, ptr %a1 %t5 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1678, i64 29, i64 0 }, ptr %a7 + store { ptr, i64, i64 } { ptr @.str.1751, 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.1679, i64 6, i64 0 }, ptr %a12 + store { ptr, i64, i64 } { ptr @.str.1752, 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 - %t15 = load { ptr, i64, i64 }, ptr %a3 - %t16 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t14, { ptr, i64, i64 } %t15) - store { ptr, i64, i64 } %t13, 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.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 - %t26 = load i64, ptr %t25 - call void @finch_str_from_int(ptr %a27, i64 %t26) - %t28 = load { ptr, i64, i64 }, ptr %a27 - store { ptr, i64, i64 } %t24, 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.1681, i64 1, i64 0 }, ptr %a35 + store { ptr, i64, i64 } %t9, ptr %a13 + call void @finch_str_drop(ptr %a13) + %t14 = load { ptr, i64, i64 }, ptr %a10 + %t15 = load ptr, ptr %a1 + %t16 = load { ptr, i64, i64 }, ptr %a3 + %t17 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t15, { ptr, i64, i64 } %t16) + store { ptr, i64, i64 } %t14, ptr %a19 + store { ptr, i64, i64 } %t17, ptr %a20 + call void @finch_str_concat(ptr %a18, ptr %a19, ptr %a20) + store { ptr, i64, i64 } %t14, ptr %a21 + call void @finch_str_drop(ptr %a21) + store { ptr, i64, i64 } %t17, ptr %a22 + call void @finch_str_drop(ptr %a22) + %t23 = load { ptr, i64, i64 }, ptr %a18 + store { ptr, i64, i64 } %t23, ptr %a25 + store { ptr, i64, i64 } { ptr @.str.1753, i64 6, i64 0 }, ptr %a26 + call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) + store { ptr, i64, i64 } %t23, ptr %a27 + call void @finch_str_drop(ptr %a27) + %t28 = load { ptr, i64, i64 }, ptr %a24 + %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 + %t30 = load i64, ptr %t29 + call void @finch_str_from_int(ptr %a31, i64 %t30) + %t32 = load { ptr, i64, i64 }, ptr %a31 + store { ptr, i64, i64 } %t28, ptr %a34 + store { ptr, i64, i64 } %t32, 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) + store { ptr, i64, i64 } %t28, ptr %a36 + call void @finch_str_drop(ptr %a36) + store { ptr, i64, i64 } %t32, ptr %a37 + call void @finch_str_drop(ptr %a37) + %t38 = load { ptr, i64, i64 }, ptr %a33 + store { ptr, i64, i64 } %t38, ptr %a40 + store { ptr, i64, i64 } { ptr @.str.1754, i64 1, i64 0 }, ptr %a41 + call void @finch_str_concat(ptr %a39, ptr %a40, ptr %a41) + store { ptr, i64, i64 } %t38, ptr %a42 + call void @finch_str_drop(ptr %a42) + %t43 = load { ptr, i64, i64 }, ptr %a39 + call void @finch.gen.emit(ptr %t4, { ptr, i64, i64 } %t43) + store { ptr, i64, i64 } %t43, ptr %a44 + call void @finch_str_drop(ptr %a44) ret void } @@ -27049,144 +31727,197 @@ entry: %a9 = alloca { ptr, i64, i64 }, align 16 %a11 = alloca { ptr, i64, i64 }, align 16 %a12 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 + %a15 = 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 - %a23 = alloca { ptr, i64, i64 }, align 16 %a24 = 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 + %a25 = alloca { ptr, i64, i64 }, align 16 + %a26 = alloca { ptr, i64, i64 }, align 16 + %a27 = alloca { ptr, i64, i64 }, align 16 + %a34 = alloca %S.ast.Type, align 16 %a35 = alloca { ptr, i64, i64 }, align 16 %a36 = alloca { ptr, i64, i64 }, align 16 %a37 = alloca { ptr, i64, i64 }, align 16 + %a38 = 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 %a44 = 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 + %a46 = 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 + %a55 = 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 + %a65 = alloca %S.ast.Type, align 16 + %a66 = 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 %a70 = 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 - %a81 = alloca { ptr, i64, i64 }, align 16 + %a75 = alloca { ptr, i64, i64 }, align 16 + %a77 = alloca { ptr, i64, i64 }, align 16 %a82 = alloca { ptr, i64, i64 }, align 16 %a83 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 + %a84 = alloca { ptr, i64, i64 }, align 16 %a86 = alloca { ptr, i64, i64 }, align 16 %a87 = 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 + %a88 = alloca { ptr, i64, i64 }, align 16 + %a89 = alloca { ptr, i64, i64 }, align 16 + %a96 = alloca %S.ast.Type, align 16 %a97 = 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 %a101 = 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 %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 + %a108 = alloca { ptr, i64, i64 }, align 16 %a110 = alloca { ptr, i64, i64 }, align 16 %a111 = 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 + %a117 = 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 + %a121 = 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 %a129 = 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 %a133 = alloca { ptr, i64, i64 }, align 16 %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 + %a137 = 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 - %a141 = alloca { ptr, i64, i64 }, align 16 + %a142 = alloca { ptr, i64, i64 }, align 16 %a143 = alloca { ptr, i64, i64 }, align 16 %a144 = alloca { ptr, i64, i64 }, align 16 %a145 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 + %a147 = alloca { ptr, i64, i64 }, align 16 %a149 = alloca { ptr, i64, i64 }, align 16 %a150 = alloca { ptr, i64, i64 }, align 16 - %a152 = 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 + %a156 = alloca { ptr, i64, i64 }, align 16 %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = 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 + %a159 = 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 %a168 = 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 + %a172 = alloca { ptr, i64, i64 }, align 16 %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca %S.ast.Type, align 16 - %a179 = alloca %S.ast.Type, align 16 + %a176 = 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 + %a180 = 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 - %a187 = 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 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 + %a190 = alloca { ptr, i64, i64 }, align 16 + %a191 = alloca { ptr, i64, i64 }, align 16 %a196 = alloca { ptr, i64, i64 }, align 16 %a197 = alloca { ptr, i64, i64 }, align 16 %a198 = 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 - %a206 = alloca { ptr, i64, i64 }, align 16 + %a203 = alloca { ptr, i64, i64 }, align 16 %a207 = 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 - %a217 = alloca { ptr, i64, i64 }, align 16 + %a208 = alloca { ptr, i64, i64 }, align 16 + %a212 = alloca %S.ast.Type, align 16 + %a213 = alloca %S.ast.Type, align 16 + %a217 = alloca %S.gen.Val, align 16 %a218 = 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 %a222 = 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 %a226 = 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 + %a230 = 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 %a235 = 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 - %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 - %a245 = 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 - %a253 = alloca { ptr, i64, i64 }, align 16 %a254 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca %S.ast.Type, align 16 - %a259 = alloca %S.ast.Type, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 + %a255 = alloca { ptr, i64, i64 }, align 16 + %a256 = alloca { ptr, i64, i64 }, align 16 + %a258 = 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 %a264 = 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 - %a268 = 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 + %a274 = 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 + %a282 = 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 + %a290 = 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 + %a298 = alloca { ptr, i64, i64 }, align 16 + %a302 = alloca { ptr, i64, i64 }, align 16 + %a303 = alloca { ptr, i64, i64 }, align 16 + %a307 = alloca %S.ast.Type, align 16 + %a308 = alloca %S.ast.Type, align 16 + %a312 = alloca %S.gen.Val, align 16 + %a313 = 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 + %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 + %a322 = alloca { ptr, i64, i64 }, align 16 + %a324 = 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 @@ -27198,328 +31929,437 @@ 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.1682, i64 1, i64 0 }, ptr %a12 + store { ptr, i64, i64 } { ptr @.str.1755, i64 1, i64 0 }, ptr %a12 %t13 = load i1, ptr %a5 - 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 %then2681, label %else2682 -then2681: - %t16 = load ptr, ptr %a1 - %t17 = load { ptr, i64, i64 }, ptr %a2 - 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.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.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.1687, i64 1, i64 0 }, ptr %a37 + br i1 %t13, label %then2859, label %endif2861 +then2859: + %t14 = load { ptr, i64, i64 }, ptr %a12 + store { ptr, i64, i64 } { ptr @.str.1756, i64 1, i64 0 }, ptr %a12 + store { ptr, i64, i64 } %t14, ptr %a15 + call void @finch_str_drop(ptr %a15) + br label %endif2861 +endif2861: + %t16 = load %S.ast.Type, ptr %a4 + %t17 = call i1 @finch.gen.isSigned(%S.ast.Type %t16) + br i1 %t17, label %then2862, label %else2863 +then2862: + %t18 = load ptr, ptr %a1 + %t19 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } { ptr @.str.1757, i64 29, 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.1758, i64 6, i64 0 }, ptr %a26 + call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) + store { ptr, i64, i64 } %t23, ptr %a27 + call void @finch_str_drop(ptr %a27) + %t28 = load { ptr, i64, i64 }, ptr %a24 + %t29 = load ptr, ptr %a1 + %t30 = load { ptr, i64, i64 }, ptr %a3 + %t31 = load %S.ast.Type, ptr %a4 + %t32 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1759, i64 3, i64 0 }) + %t33 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t29, { ptr, i64, i64 } %t30, %S.ast.Type %t31, %S.ast.Type %t32) + store %S.ast.Type %t32, ptr %a34 + call void @finch.drop.S_ast_Type(ptr %a34) + store { ptr, i64, i64 } %t28, ptr %a36 + store { ptr, i64, i64 } %t33, 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 %endif2683 -else2682: - %t39 = load %S.ast.Type, ptr %a4 - %t40 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t39) - 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.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.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.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.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 %endif2686 -else2685: - %t64 = load %S.ast.Type, ptr %a4 - %t65 = call i1 @finch.gen.isFloat(%S.ast.Type %t64) - 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.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 } %t28, ptr %a38 + call void @finch_str_drop(ptr %a38) + store { ptr, i64, i64 } %t33, ptr %a39 + call void @finch_str_drop(ptr %a39) + %t40 = load { ptr, i64, i64 }, ptr %a35 + store { ptr, i64, i64 } %t40, ptr %a42 + store { ptr, i64, i64 } { ptr @.str.1760, i64 1, i64 0 }, ptr %a43 + call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) + store { ptr, i64, i64 } %t40, ptr %a44 + call void @finch_str_drop(ptr %a44) + %t45 = load { ptr, i64, i64 }, ptr %a41 + call void @finch.gen.emit(ptr %t18, { ptr, i64, i64 } %t45) + store { ptr, i64, i64 } %t45, ptr %a46 + call void @finch_str_drop(ptr %a46) + br label %endif2864 +else2863: + %t47 = load %S.ast.Type, ptr %a4 + %t48 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t47) + br i1 %t48, label %then2865, label %else2866 +then2865: + %t49 = load ptr, ptr %a1 + %t50 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } { ptr @.str.1761, i64 30, 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.1762, i64 6, i64 0 }, ptr %a57 + call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) + store { ptr, i64, i64 } %t54, ptr %a58 + call void @finch_str_drop(ptr %a58) + %t59 = load { ptr, i64, i64 }, ptr %a55 + %t60 = load ptr, ptr %a1 + %t61 = load { ptr, i64, i64 }, ptr %a3 + %t62 = load %S.ast.Type, ptr %a4 + %t63 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1763, i64 3, i64 0 }) + %t64 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t60, { ptr, i64, i64 } %t61, %S.ast.Type %t62, %S.ast.Type %t63) + store %S.ast.Type %t63, ptr %a65 + call void @finch.drop.S_ast_Type(ptr %a65) + store { ptr, i64, i64 } %t59, ptr %a67 + store { ptr, i64, i64 } %t64, ptr %a68 + call void @finch_str_concat(ptr %a66, ptr %a67, ptr %a68) + store { ptr, i64, i64 } %t59, ptr %a69 + call void @finch_str_drop(ptr %a69) + store { ptr, i64, i64 } %t64, ptr %a70 + call void @finch_str_drop(ptr %a70) + %t71 = load { ptr, i64, i64 }, ptr %a66 store { ptr, i64, i64 } %t71, ptr %a73 - store { ptr, i64, i64 } { ptr @.str.1693, i64 9, i64 0 }, ptr %a74 + store { ptr, i64, i64 } { ptr @.str.1764, i64 1, 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 + store { ptr, i64, i64 } %t71, ptr %a75 + call void @finch_str_drop(ptr %a75) + %t76 = load { ptr, i64, i64 }, ptr %a72 + call void @finch.gen.emit(ptr %t49, { ptr, i64, i64 } %t76) + store { ptr, i64, i64 } %t76, ptr %a77 + call void @finch_str_drop(ptr %a77) + br label %endif2867 +else2866: %t78 = load %S.ast.Type, ptr %a4 - %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.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 %endif2689 -else2688: - %t89 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } %t89, ptr %a90 - 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 %then2690, label %else2691 -then2690: - %t94 = load ptr, ptr %a1 - %t95 = load { ptr, i64, i64 }, ptr %a2 - 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.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 - store { ptr, i64, i64 } %t103, ptr %a106 - store { ptr, i64, i64 } %t104, 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 %a110 - 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 - store { ptr, i64, i64 } %t112, 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.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 %endif2692 -else2691: - %t122 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } %t122, ptr %a123 - 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 %then2693, label %else2694 -then2693: - %t127 = load ptr, ptr %a1 - %t128 = load { ptr, i64, i64 }, ptr %a2 - 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.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.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.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) - store { ptr, i64, i64 } %t136, ptr %a149 - store { ptr, i64, i64 } %t147, ptr %a150 - 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.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 %endif2695 -else2694: - %t156 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } %t156, ptr %a157 - 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 %then2696, label %else2697 -then2696: - %t161 = load ptr, ptr %a1 - %t162 = load { ptr, i64, i64 }, ptr %a2 - 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.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 - %t172 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t172, ptr %a173 - call void @finch_str_copy(ptr %a174, ptr %a173) - %t175 = load { ptr, i64, i64 }, ptr %a174 - %t176 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t175, 0 - %t177 = load %S.ast.Type, ptr %a4 - store %S.ast.Type %t177, ptr %a178 - call void @finch.copy.S_ast_Type(ptr %a179, ptr %a178) - %t180 = load %S.ast.Type, ptr %a179 - %t181 = insertvalue %S.gen.Val %t176, %S.ast.Type %t180, 1 - %t182 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t171, %S.gen.Val %t181) - store { ptr, i64, i64 } %t170, ptr %a184 - store { ptr, i64, i64 } %t182, ptr %a185 + %t79 = call i1 @finch.gen.isFloat(%S.ast.Type %t78) + br i1 %t79, label %then2868, label %else2869 +then2868: + %t80 = load ptr, ptr %a1 + %t81 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } { ptr @.str.1765, i64 31, 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.1766, i64 9, i64 0 }, ptr %a88 + call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) + store { ptr, i64, i64 } %t85, ptr %a89 + call void @finch_str_drop(ptr %a89) + %t90 = load { ptr, i64, i64 }, ptr %a86 + %t91 = load ptr, ptr %a1 + %t92 = load { ptr, i64, i64 }, ptr %a3 + %t93 = load %S.ast.Type, ptr %a4 + %t94 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1767, i64 5, i64 0 }) + %t95 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t91, { ptr, i64, i64 } %t92, %S.ast.Type %t93, %S.ast.Type %t94) + store %S.ast.Type %t94, ptr %a96 + call void @finch.drop.S_ast_Type(ptr %a96) + store { ptr, i64, i64 } %t90, ptr %a98 + store { ptr, i64, i64 } %t95, ptr %a99 + call void @finch_str_concat(ptr %a97, ptr %a98, ptr %a99) + store { ptr, i64, i64 } %t90, ptr %a100 + call void @finch_str_drop(ptr %a100) + store { ptr, i64, i64 } %t95, ptr %a101 + call void @finch_str_drop(ptr %a101) + %t102 = load { ptr, i64, i64 }, ptr %a97 + store { ptr, i64, i64 } %t102, ptr %a104 + store { ptr, i64, i64 } { ptr @.str.1768, i64 1, i64 0 }, ptr %a105 + call void @finch_str_concat(ptr %a103, ptr %a104, ptr %a105) + store { ptr, i64, i64 } %t102, ptr %a106 + call void @finch_str_drop(ptr %a106) + %t107 = load { ptr, i64, i64 }, ptr %a103 + call void @finch.gen.emit(ptr %t80, { ptr, i64, i64 } %t107) + store { ptr, i64, i64 } %t107, ptr %a108 + call void @finch_str_drop(ptr %a108) + br label %endif2870 +else2869: + %t109 = load { ptr, i64, i64 }, ptr %a11 + store { ptr, i64, i64 } %t109, ptr %a110 + store { ptr, i64, i64 } { ptr @.str.1769, 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 %then2871, label %else2872 +then2871: + %t114 = load ptr, ptr %a1 + %t115 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } { ptr @.str.1770, i64 30, 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.1771, i64 5, i64 0 }, ptr %a122 + call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122) + store { ptr, i64, i64 } %t119, ptr %a123 + call void @finch_str_drop(ptr %a123) + %t124 = load { ptr, i64, i64 }, ptr %a120 + %t125 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t124, ptr %a127 + store { ptr, i64, i64 } %t125, ptr %a128 + call void @finch_str_concat(ptr %a126, ptr %a127, ptr %a128) + store { ptr, i64, i64 } %t124, ptr %a129 + call void @finch_str_drop(ptr %a129) + %t130 = load { ptr, i64, i64 }, ptr %a126 + store { ptr, i64, i64 } %t130, ptr %a132 + store { ptr, i64, i64 } { ptr @.str.1772, i64 6, i64 0 }, ptr %a133 + call void @finch_str_concat(ptr %a131, ptr %a132, ptr %a133) + store { ptr, i64, i64 } %t130, ptr %a134 + call void @finch_str_drop(ptr %a134) + %t135 = load { ptr, i64, i64 }, ptr %a131 + %t136 = load { ptr, i64, i64 }, ptr %a12 + store { ptr, i64, i64 } %t135, ptr %a138 + store { ptr, i64, i64 } %t136, ptr %a139 + call void @finch_str_concat(ptr %a137, ptr %a138, ptr %a139) + store { ptr, i64, i64 } %t135, ptr %a140 + call void @finch_str_drop(ptr %a140) + %t141 = load { ptr, i64, i64 }, ptr %a137 + store { ptr, i64, i64 } %t141, ptr %a143 + store { ptr, i64, i64 } { ptr @.str.1773, i64 1, i64 0 }, ptr %a144 + call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144) + store { ptr, i64, i64 } %t141, ptr %a145 + call void @finch_str_drop(ptr %a145) + %t146 = load { ptr, i64, i64 }, ptr %a142 + call void @finch.gen.emit(ptr %t114, { ptr, i64, i64 } %t146) + store { ptr, i64, i64 } %t146, ptr %a147 + call void @finch_str_drop(ptr %a147) + br label %endif2873 +else2872: + %t148 = load { ptr, i64, i64 }, ptr %a11 + store { ptr, i64, i64 } %t148, ptr %a149 + store { ptr, i64, i64 } { ptr @.str.1774, i64 4, i64 0 }, ptr %a150 + %t151 = call i32 @finch_str_eq(ptr %a149, ptr %a150) + %t152 = icmp ne i32 %t151, 0 + br i1 %t152, label %then2874, label %else2875 +then2874: + %t153 = load ptr, ptr %a1 + %t154 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } { ptr @.str.1775, i64 30, 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.1776, i64 6, i64 0 }, ptr %a161 + call void @finch_str_concat(ptr %a159, ptr %a160, ptr %a161) + store { ptr, i64, i64 } %t158, ptr %a162 + call void @finch_str_drop(ptr %a162) + %t163 = load { ptr, i64, i64 }, ptr %a159 + %t164 = load ptr, ptr %a1 + %t165 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } { ptr @.str.1777, i64 8, 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.1778, i64 7, i64 0 }, ptr %a172 + call void @finch_str_concat(ptr %a170, ptr %a171, ptr %a172) + store { ptr, i64, i64 } %t169, ptr %a173 + call void @finch_str_drop(ptr %a173) + %t174 = load { ptr, i64, i64 }, ptr %a170 + %t175 = call { ptr, i64, i64 } @finch.gen.op(ptr %t164, { ptr, i64, i64 } %t174) + store { ptr, i64, i64 } %t174, ptr %a176 + call void @finch_str_drop(ptr %a176) + store { ptr, i64, i64 } %t163, ptr %a178 + store { ptr, i64, i64 } %t175, ptr %a179 + call void @finch_str_concat(ptr %a177, ptr %a178, ptr %a179) + store { ptr, i64, i64 } %t163, ptr %a180 + call void @finch_str_drop(ptr %a180) + store { ptr, i64, i64 } %t175, ptr %a181 + call void @finch_str_drop(ptr %a181) + %t182 = load { ptr, i64, i64 }, ptr %a177 + store { ptr, i64, i64 } %t182, ptr %a184 + store { ptr, i64, i64 } { ptr @.str.1779, i64 1, i64 0 }, 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.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 - store { ptr, i64, i64 } %t190, ptr %a193 - store { ptr, i64, i64 } %t191, ptr %a194 - 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.1711, i64 1, i64 0 }, ptr %a198 + store { ptr, i64, i64 } %t182, ptr %a186 + call void @finch_str_drop(ptr %a186) + %t187 = load { ptr, i64, i64 }, ptr %a183 + call void @finch.gen.emit(ptr %t153, { ptr, i64, i64 } %t187) + store { ptr, i64, i64 } %t187, ptr %a188 + call void @finch_str_drop(ptr %a188) + br label %endif2876 +else2875: + %t189 = load { ptr, i64, i64 }, ptr %a11 + store { ptr, i64, i64 } %t189, ptr %a190 + store { ptr, i64, i64 } { ptr @.str.1780, 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 %then2877, label %else2878 +then2877: + %t194 = load ptr, ptr %a1 + %t195 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } { ptr @.str.1781, i64 29, 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 - call void @finch.gen.emit(ptr %t161, { ptr, i64, i64 } %t199) - br label %endif2698 -else2697: - %t200 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } %t200, ptr %a201 - 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.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.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.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.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.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 - store { ptr, i64, i64 } %t220, ptr %a223 - store { ptr, i64, i64 } %t221, ptr %a224 - 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.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 %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.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.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 - store { ptr, i64, i64 } %t241, ptr %a244 - store { ptr, i64, i64 } %t242, ptr %a245 - 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.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 - %t252 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t252, ptr %a253 - call void @finch_str_copy(ptr %a254, ptr %a253) - %t255 = load { ptr, i64, i64 }, ptr %a254 - %t256 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t255, 0 - %t257 = load %S.ast.Type, ptr %a4 - store %S.ast.Type %t257, ptr %a258 - call void @finch.copy.S_ast_Type(ptr %a259, ptr %a258) - %t260 = load %S.ast.Type, ptr %a259 - %t261 = insertvalue %S.gen.Val %t256, %S.ast.Type %t260, 1 - %t262 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t251, %S.gen.Val %t261) - store { ptr, i64, i64 } %t250, ptr %a264 + store { ptr, i64, i64 } %t199, ptr %a201 + store { ptr, i64, i64 } { ptr @.str.1782, i64 6, i64 0 }, ptr %a202 + call void @finch_str_concat(ptr %a200, ptr %a201, ptr %a202) + store { ptr, i64, i64 } %t199, ptr %a203 + call void @finch_str_drop(ptr %a203) + %t204 = load { ptr, i64, i64 }, ptr %a200 + %t205 = load ptr, ptr %a1 + %t206 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t206, ptr %a207 + call void @finch_str_copy(ptr %a208, ptr %a207) + %t209 = load { ptr, i64, i64 }, ptr %a208 + %t210 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t209, 0 + %t211 = load %S.ast.Type, ptr %a4 + store %S.ast.Type %t211, ptr %a212 + call void @finch.copy.S_ast_Type(ptr %a213, ptr %a212) + %t214 = load %S.ast.Type, ptr %a213 + %t215 = insertvalue %S.gen.Val %t210, %S.ast.Type %t214, 1 + %t216 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t205, %S.gen.Val %t215) + store %S.gen.Val %t215, ptr %a217 + call void @finch.drop.S_gen_Val(ptr %a217) + store { ptr, i64, i64 } %t204, ptr %a219 + store { ptr, i64, i64 } %t216, ptr %a220 + call void @finch_str_concat(ptr %a218, ptr %a219, ptr %a220) + store { ptr, i64, i64 } %t204, ptr %a221 + call void @finch_str_drop(ptr %a221) + store { ptr, i64, i64 } %t216, ptr %a222 + call void @finch_str_drop(ptr %a222) + %t223 = load { ptr, i64, i64 }, ptr %a218 + store { ptr, i64, i64 } %t223, ptr %a225 + store { ptr, i64, i64 } { ptr @.str.1783, i64 6, i64 0 }, ptr %a226 + call void @finch_str_concat(ptr %a224, ptr %a225, ptr %a226) + store { ptr, i64, i64 } %t223, ptr %a227 + call void @finch_str_drop(ptr %a227) + %t228 = load { ptr, i64, i64 }, ptr %a224 + %t229 = load { ptr, i64, i64 }, ptr %a12 + store { ptr, i64, i64 } %t228, ptr %a231 + store { ptr, i64, i64 } %t229, ptr %a232 + call void @finch_str_concat(ptr %a230, ptr %a231, ptr %a232) + store { ptr, i64, i64 } %t228, ptr %a233 + call void @finch_str_drop(ptr %a233) + %t234 = load { ptr, i64, i64 }, ptr %a230 + store { ptr, i64, i64 } %t234, ptr %a236 + store { ptr, i64, i64 } { ptr @.str.1784, i64 1, i64 0 }, ptr %a237 + call void @finch_str_concat(ptr %a235, ptr %a236, ptr %a237) + store { ptr, i64, i64 } %t234, ptr %a238 + call void @finch_str_drop(ptr %a238) + %t239 = load { ptr, i64, i64 }, ptr %a235 + call void @finch.gen.emit(ptr %t194, { ptr, i64, i64 } %t239) + store { ptr, i64, i64 } %t239, ptr %a240 + call void @finch_str_drop(ptr %a240) + br label %endif2879 +else2878: + %t241 = load { ptr, i64, i64 }, ptr %a11 + store { ptr, i64, i64 } %t241, ptr %a242 + store { ptr, i64, i64 } { ptr @.str.1785, i64 3, i64 0 }, ptr %a243 + %t244 = call i32 @finch_str_eq(ptr %a242, ptr %a243) + %t245 = icmp ne i32 %t244, 0 + br label %logic.from2880 +logic.from2880: + br i1 %t245, label %logic.end2882, label %logic.rhs2881 +logic.rhs2881: + %t246 = load { ptr, i64, i64 }, ptr %a11 + store { ptr, i64, i64 } %t246, ptr %a247 + store { ptr, i64, i64 } { ptr @.str.1786, i64 4, i64 0 }, ptr %a248 + %t249 = call i32 @finch_str_eq(ptr %a247, ptr %a248) + %t250 = icmp ne i32 %t249, 0 + br label %logic.rend2883 +logic.rend2883: + br label %logic.end2882 +logic.end2882: + %t251 = phi i1 [ true, %logic.from2880 ], [ %t250, %logic.rend2883 ] + br i1 %t251, label %then2884, label %else2885 +then2884: + %t252 = load ptr, ptr %a1 + %t253 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } { ptr @.str.1787, i64 29, 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.1788, i64 6, i64 0 }, ptr %a260 + call void @finch_str_concat(ptr %a258, ptr %a259, ptr %a260) + store { ptr, i64, i64 } %t257, ptr %a261 + call void @finch_str_drop(ptr %a261) + %t262 = load { ptr, i64, i64 }, ptr %a258 + %t263 = load { ptr, i64, i64 }, ptr %a3 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.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 %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: + store { ptr, i64, i64 } %t263, ptr %a266 + call void @finch_str_concat(ptr %a264, ptr %a265, ptr %a266) + store { ptr, i64, i64 } %t262, ptr %a267 + call void @finch_str_drop(ptr %a267) + %t268 = load { ptr, i64, i64 }, ptr %a264 + store { ptr, i64, i64 } %t268, ptr %a270 + store { ptr, i64, i64 } { ptr @.str.1789, i64 1, i64 0 }, ptr %a271 + call void @finch_str_concat(ptr %a269, ptr %a270, ptr %a271) + store { ptr, i64, i64 } %t268, ptr %a272 + call void @finch_str_drop(ptr %a272) + %t273 = load { ptr, i64, i64 }, ptr %a269 + call void @finch.gen.emit(ptr %t252, { ptr, i64, i64 } %t273) + store { ptr, i64, i64 } %t273, ptr %a274 + call void @finch_str_drop(ptr %a274) + br label %endif2886 +else2885: + %t275 = load ptr, ptr %a1 + %t276 = load ptr, ptr %a1 + %t277 = load %S.ast.Type, ptr %a4 + %t278 = call { ptr, i64, i64 } @finch.gen.formatFn(ptr %t276, %S.ast.Type %t277) + store { ptr, i64, i64 } { ptr @.str.1790, i64 10, i64 0 }, ptr %a280 + store { ptr, i64, i64 } %t278, ptr %a281 + call void @finch_str_concat(ptr %a279, ptr %a280, ptr %a281) + store { ptr, i64, i64 } %t278, ptr %a282 + call void @finch_str_drop(ptr %a282) + %t283 = load { ptr, i64, i64 }, ptr %a279 + store { ptr, i64, i64 } %t283, ptr %a285 + store { ptr, i64, i64 } { ptr @.str.1791, i64 5, i64 0 }, ptr %a286 + call void @finch_str_concat(ptr %a284, ptr %a285, ptr %a286) + store { ptr, i64, i64 } %t283, ptr %a287 + call void @finch_str_drop(ptr %a287) + %t288 = load { ptr, i64, i64 }, ptr %a284 + %t289 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t288, ptr %a291 + store { ptr, i64, i64 } %t289, ptr %a292 + call void @finch_str_concat(ptr %a290, ptr %a291, ptr %a292) + store { ptr, i64, i64 } %t288, ptr %a293 + call void @finch_str_drop(ptr %a293) + %t294 = load { ptr, i64, i64 }, ptr %a290 + store { ptr, i64, i64 } %t294, ptr %a296 + store { ptr, i64, i64 } { ptr @.str.1792, i64 6, i64 0 }, ptr %a297 + call void @finch_str_concat(ptr %a295, ptr %a296, ptr %a297) + store { ptr, i64, i64 } %t294, ptr %a298 + call void @finch_str_drop(ptr %a298) + %t299 = load { ptr, i64, i64 }, ptr %a295 + %t300 = load ptr, ptr %a1 + %t301 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t301, ptr %a302 + call void @finch_str_copy(ptr %a303, ptr %a302) + %t304 = load { ptr, i64, i64 }, ptr %a303 + %t305 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t304, 0 + %t306 = load %S.ast.Type, ptr %a4 + store %S.ast.Type %t306, ptr %a307 + call void @finch.copy.S_ast_Type(ptr %a308, ptr %a307) + %t309 = load %S.ast.Type, ptr %a308 + %t310 = insertvalue %S.gen.Val %t305, %S.ast.Type %t309, 1 + %t311 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t300, %S.gen.Val %t310) + store %S.gen.Val %t310, ptr %a312 + call void @finch.drop.S_gen_Val(ptr %a312) + store { ptr, i64, i64 } %t299, ptr %a314 + store { ptr, i64, i64 } %t311, ptr %a315 + call void @finch_str_concat(ptr %a313, ptr %a314, ptr %a315) + store { ptr, i64, i64 } %t299, ptr %a316 + call void @finch_str_drop(ptr %a316) + store { ptr, i64, i64 } %t311, ptr %a317 + call void @finch_str_drop(ptr %a317) + %t318 = load { ptr, i64, i64 }, ptr %a313 + store { ptr, i64, i64 } %t318, ptr %a320 + store { ptr, i64, i64 } { ptr @.str.1793, i64 1, i64 0 }, ptr %a321 + call void @finch_str_concat(ptr %a319, ptr %a320, ptr %a321) + store { ptr, i64, i64 } %t318, ptr %a322 + call void @finch_str_drop(ptr %a322) + %t323 = load { ptr, i64, i64 }, ptr %a319 + call void @finch.gen.emit(ptr %t275, { ptr, i64, i64 } %t323) + store { ptr, i64, i64 } %t323, ptr %a324 + call void @finch_str_drop(ptr %a324) + br label %endif2886 +endif2886: + br label %endif2879 +endif2879: + br label %endif2876 +endif2876: + br label %endif2873 +endif2873: + br label %endif2870 +endif2870: + br label %endif2867 +endif2867: + br label %endif2864 +endif2864: + call void @finch_str_drop(ptr %a12) + call void @finch_str_drop(ptr %a11) ret void } @@ -27543,6 +32383,20 @@ entry: ret void } +define internal void @finch.drop.S_gen_EnumDef(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.gen.EnumDef, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.gen.EnumDef, ptr %a, i32 0, i32 1 + call void @finch_str_drop(ptr %t2) + %t3 = getelementptr inbounds %S.gen.EnumDef, ptr %a, i32 0, i32 2 + call void @finch.drop.arr_str(ptr %t3) + %t4 = getelementptr inbounds %S.gen.EnumDef, ptr %a, i32 0, i32 3 + call void @finch.drop.arr_int(ptr %t4) + ret void +} + define internal { ptr, i64, i64 } @finch.gen.formatFn(ptr %p0, %S.ast.Type %p1) { entry: %a1 = alloca ptr, align 16 @@ -27550,970 +32404,1156 @@ entry: %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 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca %S.gen.Saved, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca %S.ast.Type, align 16 + %a8 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca { ptr, i64, i64 }, align 16 + %a23 = alloca { ptr, i64, i64 }, align 16 + %a24 = alloca { ptr, i64, i64 }, align 16 + %a32 = alloca %S.gen.Saved, align 16 + %a35 = alloca { ptr, i64, i64 }, align 16 + %a36 = alloca { ptr, i64, i64 }, align 16 + %a46 = alloca %S.ast.Type, align 16 + %a47 = alloca %S.ast.Type, align 16 %a49 = alloca %S.ast.Type, align 16 - %a51 = alloca %S.ast.Type, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 + %a52 = alloca { ptr, i64, i64 }, align 16 + %a57 = alloca { ptr, i64, i64 }, align 16 + %a58 = alloca { ptr, i64, i64 }, align 16 + %a63 = alloca { ptr, i64, i64 }, align 16 + %a66 = alloca { ptr, i64, i64 }, align 16 + %a69 = 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 %a87 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 + %a88 = 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 %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 - %a114 = 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 %a118 = 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 + %a120 = alloca { ptr, i64, i64 }, align 16 + %a121 = alloca { ptr, i64, i64 }, align 16 + %a122 = alloca { ptr, i64, i64 }, align 16 + %a123 = alloca { ptr, i64, i64 }, align 16 %a131 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 + %a132 = alloca { ptr, i64, i64 }, align 16 + %a133 = alloca { ptr, i64, i64 }, align 16 + %a134 = alloca { ptr, i64, i64 }, align 16 + %a137 = alloca { ptr, i64, i64 }, align 16 + %a138 = alloca { ptr, i64, i64 }, align 16 %a146 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca %S.gen.EnumDef, align 16 - %a165 = alloca %S.gen.EnumDef, align 16 - %a167 = alloca %S.gen.EnumDef, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a173 = 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 - %a182 = alloca i64, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a205 = 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 + %a148 = alloca { ptr, i64, i64 }, align 16 + %a154 = alloca { ptr, i64, i64 }, align 16 + %a155 = alloca { ptr, i64, i64 }, align 16 + %a173 = alloca %S.gen.EnumDef, align 16 + %a174 = alloca %S.gen.EnumDef, align 16 + %a176 = alloca %S.gen.EnumDef, align 16 + %a179 = alloca { ptr, i64, i64 }, align 16 + %a182 = 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 + %a191 = alloca 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 + %a215 = alloca { ptr, i64, i64 }, align 16 + %a217 = alloca { ptr, i64, i64 }, align 16 %a218 = alloca { ptr, i64, i64 }, align 16 %a219 = alloca { ptr, i64, i64 }, align 16 %a220 = alloca { ptr, i64, i64 }, align 16 + %a229 = 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 - %a239 = 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 %a243 = 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 + %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 + %a254 = 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 - %a265 = alloca i64, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a296 = 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 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a306 = alloca { ptr, i64, i64 }, align 16 - %a307 = 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 + %a258 = alloca { ptr, i64, i64 }, align 16 + %a259 = alloca { ptr, i64, i64 }, align 16 + %a260 = alloca { ptr, i64, i64 }, align 16 + %a263 = alloca { ptr, i64, i64 }, align 16 + %a264 = alloca { ptr, i64, i64 }, align 16 + %a266 = alloca { ptr, i64, i64 }, align 16 + %a267 = alloca { ptr, i64, i64 }, 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 + %a275 = alloca { ptr, i64, i64 }, align 16 + %a277 = alloca { ptr, i64, i64 }, align 16 + %a284 = alloca i64, align 16 + %a313 = 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 + %a317 = alloca { ptr, i64, i64 }, align 16 + %a321 = 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 + %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 + %a334 = alloca { ptr, i64, i64 }, align 16 + %a335 = 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 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a345 = alloca { ptr, i64, i64 }, align 16 - %a346 = alloca { ptr, i64, i64 }, align 16 %a350 = alloca { ptr, i64, i64 }, align 16 - %a354 = alloca { ptr, i64, i64 }, align 16 - %a364 = alloca { ptr, i64, i64 }, align 16 + %a351 = alloca { ptr, i64, i64 }, align 16 + %a356 = 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 + %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 + %a373 = alloca { ptr, i64, i64 }, align 16 + %a376 = alloca { ptr, i64, i64 }, align 16 + %a378 = 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 %a383 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a394 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a482 = alloca %S.gen.StructDef, align 16 - %a483 = alloca %S.gen.StructDef, align 16 - %a485 = alloca %S.gen.StructDef, align 16 - %a489 = 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 - %a500 = alloca i64, align 16 - %a503 = 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 - %a520 = alloca { ptr, i64, i64 }, align 16 - %a521 = alloca { ptr, i64, i64 }, align 16 - %a522 = alloca { ptr, i64, i64 }, align 16 - %a526 = alloca { ptr, i64, i64 }, align 16 - %a527 = alloca { ptr, i64, i64 }, align 16 - %a528 = alloca { ptr, i64, i64 }, align 16 + %a393 = alloca { ptr, i64, i64 }, align 16 + %a396 = alloca { ptr, i64, i64 }, align 16 + %a399 = 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 + %a411 = alloca { ptr, i64, i64 }, align 16 + %a412 = 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 + %a420 = alloca { ptr, i64, i64 }, align 16 + %a423 = alloca { ptr, i64, i64 }, align 16 + %a428 = alloca { ptr, i64, i64 }, align 16 + %a431 = alloca { ptr, i64, i64 }, align 16 + %a438 = alloca { ptr, i64, i64 }, align 16 + %a464 = alloca { ptr, i64, i64 }, align 16 + %a465 = alloca { ptr, i64, i64 }, align 16 + %a473 = alloca { ptr, i64, i64 }, align 16 + %a491 = alloca { ptr, i64, i64 }, align 16 + %a492 = alloca { ptr, i64, i64 }, align 16 + %a500 = alloca { ptr, i64, i64 }, align 16 + %a523 = alloca %S.gen.StructDef, align 16 + %a524 = alloca %S.gen.StructDef, align 16 + %a526 = alloca %S.gen.StructDef, align 16 %a530 = alloca { ptr, i64, i64 }, align 16 - %a531 = alloca { ptr, i64, i64 }, align 16 - %a532 = alloca { ptr, i64, i64 }, align 16 - %a542 = alloca { ptr, i64, i64 }, align 16 - %a544 = alloca { ptr, i64, i64 }, align 16 + %a534 = alloca { ptr, i64, i64 }, align 16 + %a535 = alloca { ptr, i64, i64 }, align 16 + %a536 = alloca { ptr, i64, i64 }, align 16 + %a538 = alloca { ptr, i64, i64 }, align 16 + %a542 = alloca i64, align 16 %a545 = alloca { ptr, i64, i64 }, align 16 - %a546 = alloca { ptr, i64, i64 }, align 16 %a549 = alloca { ptr, i64, i64 }, align 16 + %a560 = alloca { ptr, i64, i64 }, align 16 + %a561 = alloca { ptr, i64, i64 }, align 16 + %a562 = 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 + %a567 = alloca { ptr, i64, i64 }, align 16 + %a569 = 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 + %a576 = alloca { ptr, i64, i64 }, align 16 + %a577 = alloca { ptr, i64, i64 }, align 16 + %a578 = alloca { ptr, i64, i64 }, align 16 %a579 = 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 - %a584 = alloca { ptr, i64, i64 }, align 16 - %a585 = 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 + %a594 = alloca { ptr, i64, i64 }, align 16 + %a595 = alloca { ptr, i64, i64 }, align 16 + %a598 = alloca { ptr, i64, i64 }, align 16 + %a599 = alloca { ptr, i64, i64 }, align 16 + %a614 = alloca { ptr, i64, i64 }, align 16 + %a623 = 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 + %a635 = alloca { ptr, i64, i64 }, align 16 + %a636 = alloca { ptr, i64, i64 }, align 16 + %a637 = alloca { ptr, i64, i64 }, align 16 + %a638 = alloca { ptr, i64, i64 }, align 16 + %a640 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 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.1721, i64 14, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.1794, 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 %panic2706, label %ok2707 -panic2706: - call void @finch_panic(ptr @.str.1722, i64 965, ptr @.str.1723) + store { ptr, i64, i64 } %t4, ptr %a8 + call void @finch_str_drop(ptr %a8) + %t9 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } %t9, ptr %a10 + %t11 = load ptr, ptr %a1 + %t12 = icmp eq ptr %t11, null + br i1 %t12, label %panic2887, label %ok2888 +panic2887: + call void @finch_panic(ptr @.str.1795, i64 1100, ptr @.str.1796) unreachable -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 %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 -endif2710: - %t20 = load ptr, ptr %a1 - %t21 = icmp eq ptr %t20, null - br i1 %t21, label %panic2711, label %ok2712 -panic2711: - call void @finch_panic(ptr @.str.1724, i64 968, ptr @.str.1725) +ok2888: + %t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 22 + %t14 = load { ptr, i64, i64 }, ptr %t13 + %t15 = load { ptr, i64, i64 }, ptr %a10 + %t16 = call i1 @finch.gen.has({ ptr, i64, i64 } %t14, { ptr, i64, i64 } %t15) + br i1 %t16, label %then2889, label %endif2891 +then2889: + %t17 = load { ptr, i64, i64 }, ptr %a10 + ret { ptr, i64, i64 } %t17 +endif2891: + %t18 = load ptr, ptr %a1 + %t19 = icmp eq ptr %t18, null + br i1 %t19, label %panic2892, label %ok2893 +panic2892: + call void @finch_panic(ptr @.str.1797, i64 1103, ptr @.str.1798) unreachable -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 - store { ptr, i64, i64 } %t24, ptr %a25 - call void @finch_str_copy(ptr %a26, ptr %a25) - %t27 = load { ptr, i64, i64 }, ptr %a26 - %t28 = load i64, ptr %t23 - %t29 = add i64 %t28, 1 - call void @finch_arr_reserve(ptr %t22, i64 %t29, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t30 = load ptr, ptr %t22 - %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t30, i64 %t28 - store { ptr, i64, i64 } %t27, ptr %t31 - store i64 %t29, ptr %t23 - %t32 = load ptr, ptr %a1 - %t33 = call %S.gen.Saved @finch.gen.beginHelper(ptr %t32) - store %S.gen.Saved %t33, ptr %a34 - %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.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 %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 %range2716, label %inrange2717 -range2716: - call void @finch_panic_index(ptr @.str.1727, i64 971, i64 0, i64 %t43) +ok2893: + %t20 = getelementptr inbounds %S.gen.Gen, ptr %t18, i32 0, i32 22 + %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t20, i32 0, i32 1 + %t22 = load { ptr, i64, i64 }, ptr %a10 + 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 + %t30 = load ptr, ptr %a1 + %t31 = call %S.gen.Saved @finch.gen.beginHelper(ptr %t30) + store %S.gen.Saved %t31, ptr %a32 + %t33 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 + %t34 = load { ptr, i64, i64 }, ptr %t33 + store { ptr, i64, i64 } %t34, ptr %a35 + store { ptr, i64, i64 } { ptr @.str.1799, i64 5, i64 0 }, ptr %a36 + %t37 = call i32 @finch_str_eq(ptr %a35, ptr %a36) + %t38 = icmp ne i32 %t37, 0 + br i1 %t38, label %then2894, label %else2895 +then2894: + %t39 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t40 = load { ptr, i64, i64 }, ptr %t39 + %t41 = extractvalue { ptr, i64, i64 } %t40, 1 + %t42 = icmp uge i64 0, %t41 + br i1 %t42, label %range2897, label %inrange2898 +range2897: + call void @finch_panic_index(ptr @.str.1800, i64 1106, i64 0, i64 %t41) unreachable -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 - store %S.ast.Type %t47, ptr %a48 - call void @finch.copy.S_ast_Type(ptr %a49, ptr %a48) - %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.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.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 +inrange2898: + %t43 = extractvalue { ptr, i64, i64 } %t40, 0 + %t44 = getelementptr inbounds %S.ast.Type, ptr %t43, i64 0 + %t45 = load %S.ast.Type, ptr %t44 + store %S.ast.Type %t45, ptr %a46 + call void @finch.copy.S_ast_Type(ptr %a47, ptr %a46) + %t48 = load %S.ast.Type, ptr %a47 + store %S.ast.Type %t48, ptr %a49 + %t50 = load ptr, ptr %a1 + %t51 = call { ptr, i64, i64 } @finch.gen.load(ptr %t50, { ptr, i64, i64 } { ptr @.str.1801, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1802, i64 2, i64 0 }) + store { ptr, i64, i64 } %t51, ptr %a52 + %t53 = load ptr, ptr %a1 + %t54 = load ptr, ptr %a1 + %t55 = call { ptr, i64, i64 } @finch.gen.op(ptr %t54, { ptr, i64, i64 } { ptr @.str.1804, i64 62, i64 0 }) + %t56 = call { ptr, i64, i64 } @finch.gen.load(ptr %t53, { ptr, i64, i64 } { ptr @.str.1803, i64 3, i64 0 }, { ptr, i64, i64 } %t55) + store { ptr, i64, i64 } %t55, ptr %a57 + call void @finch_str_drop(ptr %a57) + store { ptr, i64, i64 } %t56, ptr %a58 + %t59 = load ptr, ptr %a1 + call void @finch.gen.bufText(ptr %t59, { ptr, i64, i64 } { ptr @.str.1805, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1806, i64 1, i64 0 }) %t60 = load ptr, ptr %a1 - 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.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.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 %range2718, label %inrange2719 -range2718: - call void @finch_panic_index(ptr @.str.1737, i64 978, i64 3, i64 %t73) + %t61 = load { ptr, i64, i64 }, ptr %a58 + %t62 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t60, { ptr, i64, i64 } %t61) + store { ptr, i64, i64 } %t62, ptr %a63 + %t64 = load ptr, ptr %a1 + %t65 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t64, { ptr, i64, i64 } { ptr @.str.1807, i64 3, i64 0 }) + store { ptr, i64, i64 } %t65, ptr %a66 + %t67 = load ptr, ptr %a1 + %t68 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t67, { ptr, i64, i64 } { ptr @.str.1808, i64 4, i64 0 }) + store { ptr, i64, i64 } %t68, ptr %a69 + %t70 = load ptr, ptr %a1 + %t71 = load { ptr, i64, i64 }, ptr %a63 + %t72 = extractvalue { ptr, i64, i64 } %t71, 1 + %t73 = icmp uge i64 3, %t72 + br i1 %t73, label %range2899, label %inrange2900 +range2899: + call void @finch_panic_index(ptr @.str.1810, i64 1113, i64 3, i64 %t72) unreachable -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.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.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) - store { ptr, i64, i64 } %t86, ptr %a87 - %t88 = load ptr, ptr %a1 - %t89 = load { ptr, i64, i64 }, ptr %a87 - %t90 = load { ptr, i64, i64 }, ptr %a67 - %t91 = load { ptr, i64, i64 }, ptr %a70 - call void @finch.gen.condBr(ptr %t88, { ptr, i64, i64 } %t89, { ptr, i64, i64 } %t90, { ptr, i64, i64 } %t91) - %t92 = load ptr, ptr %a1 - %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.1739, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1740, i64 2, i64 0 }) +inrange2900: + %t74 = extractvalue { ptr, i64, i64 } %t71, 0 + %t75 = getelementptr inbounds { ptr, i64, i64 }, ptr %t74, i64 3 + %t76 = load { ptr, i64, i64 }, ptr %t75 + store { ptr, i64, i64 } { ptr @.str.1809, i64 13, 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.1811, i64 3, i64 0 }, ptr %a83 + call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) + store { ptr, i64, i64 } %t80, ptr %a84 + call void @finch_str_drop(ptr %a84) + %t85 = load { ptr, i64, i64 }, ptr %a81 + %t86 = call { ptr, i64, i64 } @finch.gen.op(ptr %t70, { ptr, i64, i64 } %t85) + store { ptr, i64, i64 } %t85, ptr %a87 + call void @finch_str_drop(ptr %a87) + store { ptr, i64, i64 } %t86, ptr %a88 + %t89 = load ptr, ptr %a1 + %t90 = load { ptr, i64, i64 }, ptr %a88 + %t91 = load { ptr, i64, i64 }, ptr %a66 + %t92 = load { ptr, i64, i64 }, ptr %a69 + call void @finch.gen.condBr(ptr %t89, { ptr, i64, i64 } %t90, { ptr, i64, i64 } %t91, { ptr, i64, i64 } %t92) + %t93 = load ptr, ptr %a1 + %t94 = load { ptr, i64, i64 }, ptr %a66 + call void @finch.gen.label(ptr %t93, { ptr, i64, i64 } %t94) %t95 = load ptr, ptr %a1 - %t96 = load { ptr, i64, i64 }, ptr %a70 - call void @finch.gen.br(ptr %t95, { ptr, i64, i64 } %t96) - %t97 = load ptr, ptr %a1 - %t98 = load { ptr, i64, i64 }, ptr %a70 - call void @finch.gen.label(ptr %t97, { ptr, i64, i64 } %t98) - %t99 = load ptr, ptr %a1 + call void @finch.gen.bufText(ptr %t95, { ptr, i64, i64 } { ptr @.str.1812, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1813, i64 2, i64 0 }) + %t96 = load ptr, ptr %a1 + %t97 = load { ptr, i64, i64 }, ptr %a69 + call void @finch.gen.br(ptr %t96, { ptr, i64, i64 } %t97) + %t98 = load ptr, ptr %a1 + %t99 = load { ptr, i64, i64 }, ptr %a69 + call void @finch.gen.label(ptr %t98, { ptr, i64, i64 } %t99) %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.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.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 - store { ptr, i64, i64 } %t110, 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.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 %range2720, label %inrange2721 -range2720: - call void @finch_panic_index(ptr @.str.1744, i64 984, i64 3, i64 %t121) + %t101 = load ptr, ptr %a1 + %t102 = load %S.ast.Type, ptr %a49 + %t103 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t101, %S.ast.Type %t102) + store { ptr, i64, i64 } { ptr @.str.1814, i64 23, i64 0 }, ptr %a105 + store { ptr, i64, i64 } %t103, ptr %a106 + call void @finch_str_concat(ptr %a104, ptr %a105, ptr %a106) + store { ptr, i64, i64 } %t103, ptr %a107 + call void @finch_str_drop(ptr %a107) + %t108 = load { ptr, i64, i64 }, ptr %a104 + store { ptr, i64, i64 } %t108, ptr %a110 + store { ptr, i64, i64 } { ptr @.str.1815, i64 6, i64 0 }, ptr %a111 + call void @finch_str_concat(ptr %a109, ptr %a110, ptr %a111) + store { ptr, i64, i64 } %t108, ptr %a112 + call void @finch_str_drop(ptr %a112) + %t113 = load { ptr, i64, i64 }, ptr %a109 + %t114 = load { ptr, i64, i64 }, ptr %a52 + store { ptr, i64, i64 } %t113, ptr %a116 + store { ptr, i64, i64 } %t114, ptr %a117 + call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) + store { ptr, i64, i64 } %t113, ptr %a118 + call void @finch_str_drop(ptr %a118) + %t119 = load { ptr, i64, i64 }, ptr %a115 + store { ptr, i64, i64 } %t119, ptr %a121 + store { ptr, i64, i64 } { ptr @.str.1816, i64 6, i64 0 }, ptr %a122 + call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122) + store { ptr, i64, i64 } %t119, ptr %a123 + call void @finch_str_drop(ptr %a123) + %t124 = load { ptr, i64, i64 }, ptr %a120 + %t125 = load { ptr, i64, i64 }, ptr %a63 + %t126 = extractvalue { ptr, i64, i64 } %t125, 1 + %t127 = icmp uge i64 3, %t126 + br i1 %t127, label %range2901, label %inrange2902 +range2901: + call void @finch_panic_index(ptr @.str.1817, i64 1119, i64 3, i64 %t126) unreachable -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 - store { ptr, i64, i64 } %t119, 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 - %t130 = call { ptr, i64, i64 } @finch.gen.op(ptr %t99, { ptr, i64, i64 } %t129) - store { ptr, i64, i64 } %t130, ptr %a131 - %t132 = load ptr, ptr %a1 - %t133 = load ptr, ptr %a1 - %t134 = load ptr, ptr %a1 - %t135 = load %S.ast.Type, ptr %a51 - %t136 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t134, %S.ast.Type %t135) - %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.1745, i64 4, i64 0 }, { ptr, i64, i64 } %t138, %S.ast.Type %t139, i1 true) +inrange2902: + %t128 = extractvalue { ptr, i64, i64 } %t125, 0 + %t129 = getelementptr inbounds { ptr, i64, i64 }, ptr %t128, i64 3 + %t130 = load { ptr, i64, i64 }, ptr %t129 + store { ptr, i64, i64 } %t124, ptr %a132 + store { ptr, i64, i64 } %t130, ptr %a133 + call void @finch_str_concat(ptr %a131, ptr %a132, ptr %a133) + store { ptr, i64, i64 } %t124, ptr %a134 + call void @finch_str_drop(ptr %a134) + %t135 = load { ptr, i64, i64 }, ptr %a131 + %t136 = call { ptr, i64, i64 } @finch.gen.op(ptr %t100, { ptr, i64, i64 } %t135) + store { ptr, i64, i64 } %t135, ptr %a137 + call void @finch_str_drop(ptr %a137) + store { ptr, i64, i64 } %t136, ptr %a138 + %t139 = load ptr, ptr %a1 %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.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.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 %then2722, label %else2723 -then2722: + %t141 = load ptr, ptr %a1 + %t142 = load %S.ast.Type, ptr %a49 + %t143 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t141, %S.ast.Type %t142) + %t144 = load { ptr, i64, i64 }, ptr %a138 + %t145 = call { ptr, i64, i64 } @finch.gen.load(ptr %t140, { ptr, i64, i64 } %t143, { ptr, i64, i64 } %t144) + store { ptr, i64, i64 } %t143, ptr %a146 + call void @finch_str_drop(ptr %a146) + %t147 = load %S.ast.Type, ptr %a49 + call void @finch.gen.emitFormat(ptr %t139, { ptr, i64, i64 } { ptr @.str.1818, i64 4, i64 0 }, { ptr, i64, i64 } %t145, %S.ast.Type %t147, i1 true) + store { ptr, i64, i64 } %t145, ptr %a148 + call void @finch_str_drop(ptr %a148) %t149 = load ptr, ptr %a1 - %t150 = icmp eq ptr %t149, null - br i1 %t150, label %panic2725, label %ok2726 -panic2725: - call void @finch_panic(ptr @.str.1749, i64 990, ptr @.str.1750) + %t150 = load { ptr, i64, i64 }, ptr %a63 + call void @finch.gen.loopEnd(ptr %t149, { ptr, i64, i64 } %t150) + %t151 = load ptr, ptr %a1 + call void @finch.gen.bufText(ptr %t151, { ptr, i64, i64 } { ptr @.str.1819, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1820, i64 1, i64 0 }) + call void @finch_str_drop(ptr %a138) + call void @finch_str_drop(ptr %a88) + call void @finch_str_drop(ptr %a69) + call void @finch_str_drop(ptr %a66) + call void @finch.drop.arr_str(ptr %a63) + call void @finch_str_drop(ptr %a58) + call void @finch_str_drop(ptr %a52) + call void @finch.drop.S_ast_Type(ptr %a49) + br label %endif2896 +else2895: + %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.1821, i64 4, i64 0 }, ptr %a155 + %t156 = call i32 @finch_str_eq(ptr %a154, ptr %a155) + %t157 = icmp ne i32 %t156, 0 + br i1 %t157, label %then2903, label %else2904 +then2903: + %t158 = load ptr, ptr %a1 + %t159 = icmp eq ptr %t158, null + br i1 %t159, label %panic2906, label %ok2907 +panic2906: + call void @finch_panic(ptr @.str.1822, i64 1125, ptr @.str.1823) unreachable -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 - %t154 = load { ptr, i64, i64 }, ptr %t153 - %t155 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t156 = load { ptr, i64, i64 }, ptr %t155 - %t157 = call i64 @finch.gen.findEnum(ptr %t152, { ptr, i64, i64 } %t154, { ptr, i64, i64 } %t156) - %t158 = load { ptr, i64, i64 }, ptr %t151 - %t159 = extractvalue { ptr, i64, i64 } %t158, 1 - %t160 = icmp uge i64 %t157, %t159 - br i1 %t160, label %range2727, label %inrange2728 -range2727: - call void @finch_panic_index(ptr @.str.1751, i64 990, i64 %t157, i64 %t159) +ok2907: + %t160 = getelementptr inbounds %S.gen.Gen, ptr %t158, i32 0, i32 21 + %t161 = load ptr, ptr %a1 + %t162 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 + %t163 = load { ptr, i64, i64 }, ptr %t162 + %t164 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 + %t165 = load { ptr, i64, i64 }, ptr %t164 + %t166 = call i64 @finch.gen.findEnum(ptr %t161, { ptr, i64, i64 } %t163, { ptr, i64, i64 } %t165) + %t167 = load { ptr, i64, i64 }, ptr %t160 + %t168 = extractvalue { ptr, i64, i64 } %t167, 1 + %t169 = icmp uge i64 %t166, %t168 + br i1 %t169, label %range2908, label %inrange2909 +range2908: + call void @finch_panic_index(ptr @.str.1824, i64 1125, i64 %t166, i64 %t168) unreachable -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 - store %S.gen.EnumDef %t163, ptr %a164 - call void @finch.copy.S_gen_EnumDef(ptr %a165, ptr %a164) - %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.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.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.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 - %t179 = getelementptr inbounds %S.gen.EnumDef, ptr %a167, i32 0, i32 2 - %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.cond2729 -for.cond2729: - %t183 = load i64, ptr %a182 - %t184 = icmp slt i64 %t183, %t181 - 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.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)) - %t190 = load ptr, ptr %a178 - %t191 = getelementptr inbounds { ptr, i64, i64 }, ptr %t190, i64 %t188 - store { ptr, i64, i64 } %t187, ptr %t191 - store i64 %t189, ptr %t185 - %t192 = getelementptr inbounds { ptr, i64, i64 }, ptr %a177, i32 0, i32 1 - %t193 = getelementptr inbounds %S.gen.EnumDef, ptr %a167, i32 0, i32 3 - %t194 = load i64, ptr %a182 - %t195 = load { ptr, i64, i64 }, ptr %t193 - %t196 = extractvalue { ptr, i64, i64 } %t195, 1 - %t197 = icmp uge i64 %t194, %t196 - br i1 %t197, label %range2733, label %inrange2734 -range2733: - call void @finch_panic_index(ptr @.str.1758, i64 998, i64 %t194, i64 %t196) +inrange2909: + %t170 = extractvalue { ptr, i64, i64 } %t167, 0 + %t171 = getelementptr inbounds %S.gen.EnumDef, ptr %t170, i64 %t166 + %t172 = load %S.gen.EnumDef, ptr %t171 + store %S.gen.EnumDef %t172, ptr %a173 + call void @finch.copy.S_gen_EnumDef(ptr %a174, ptr %a173) + %t175 = load %S.gen.EnumDef, ptr %a174 + store %S.gen.EnumDef %t175, ptr %a176 + %t177 = load ptr, ptr %a1 + %t178 = call { ptr, i64, i64 } @finch.gen.load(ptr %t177, { ptr, i64, i64 } { ptr @.str.1825, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1826, i64 2, i64 0 }) + store { ptr, i64, i64 } %t178, ptr %a179 + %t180 = load ptr, ptr %a1 + %t181 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t180, { ptr, i64, i64 } { ptr @.str.1827, i64 10, i64 0 }) + store { ptr, i64, i64 } %t181, ptr %a182 + %t183 = load ptr, ptr %a1 + %t184 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t183, { ptr, i64, i64 } { ptr @.str.1828, i64 9, i64 0 }) + store { ptr, i64, i64 } %t184, ptr %a185 + store { ptr, i64, i64 } zeroinitializer, ptr %a186 + store { ptr, i64, i64 } zeroinitializer, ptr %a187 + %t188 = getelementptr inbounds %S.gen.EnumDef, ptr %a176, i32 0, i32 2 + %t189 = getelementptr inbounds { ptr, i64, i64 }, ptr %t188, i32 0, i32 1 + %t190 = load i64, ptr %t189 + store i64 0, ptr %a191 + br label %for.cond2910 +for.cond2910: + %t192 = load i64, ptr %a191 + %t193 = icmp slt i64 %t192, %t190 + br i1 %t193, label %for.body2911, label %for.end2913 +for.body2911: + %t194 = getelementptr inbounds { ptr, i64, i64 }, ptr %a187, i32 0, i32 1 + %t195 = load ptr, ptr %a1 + %t196 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t195, { ptr, i64, i64 } { ptr @.str.1829, i64 6, i64 0 }) + %t197 = load i64, ptr %t194 + %t198 = add i64 %t197, 1 + call void @finch_arr_reserve(ptr %a187, i64 %t198, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t199 = load ptr, ptr %a187 + %t200 = getelementptr inbounds { ptr, i64, i64 }, ptr %t199, i64 %t197 + store { ptr, i64, i64 } %t196, ptr %t200 + store i64 %t198, ptr %t194 + %t201 = getelementptr inbounds { ptr, i64, i64 }, ptr %a186, i32 0, i32 1 + %t202 = getelementptr inbounds %S.gen.EnumDef, ptr %a176, i32 0, i32 3 + %t203 = load i64, ptr %a191 + %t204 = load { ptr, i64, i64 }, ptr %t202 + %t205 = extractvalue { ptr, i64, i64 } %t204, 1 + %t206 = icmp uge i64 %t203, %t205 + br i1 %t206, label %range2914, label %inrange2915 +range2914: + call void @finch_panic_index(ptr @.str.1831, i64 1133, i64 %t203, i64 %t205) unreachable -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.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.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 %range2735, label %inrange2736 -range2735: - call void @finch_panic_index(ptr @.str.1760, i64 998, i64 %t211, i64 %t213) +inrange2915: + %t207 = extractvalue { ptr, i64, i64 } %t204, 0 + %t208 = getelementptr inbounds i64, ptr %t207, i64 %t203 + %t209 = load i64, ptr %t208 + call void @finch_str_from_int(ptr %a210, i64 %t209) + %t211 = load { ptr, i64, i64 }, ptr %a210 + store { ptr, i64, i64 } { ptr @.str.1830, i64 4, i64 0 }, ptr %a213 + store { ptr, i64, i64 } %t211, ptr %a214 + call void @finch_str_concat(ptr %a212, ptr %a213, ptr %a214) + store { ptr, i64, i64 } %t211, ptr %a215 + call void @finch_str_drop(ptr %a215) + %t216 = load { ptr, i64, i64 }, ptr %a212 + store { ptr, i64, i64 } %t216, ptr %a218 + store { ptr, i64, i64 } { ptr @.str.1832, i64 9, i64 0 }, ptr %a219 + call void @finch_str_concat(ptr %a217, ptr %a218, ptr %a219) + store { ptr, i64, i64 } %t216, ptr %a220 + call void @finch_str_drop(ptr %a220) + %t221 = load { ptr, i64, i64 }, ptr %a217 + %t222 = load i64, ptr %a191 + %t223 = load { ptr, i64, i64 }, ptr %a187 + %t224 = extractvalue { ptr, i64, i64 } %t223, 1 + %t225 = icmp uge i64 %t222, %t224 + br i1 %t225, label %range2916, label %inrange2917 +range2916: + call void @finch_panic_index(ptr @.str.1833, i64 1133, i64 %t222, i64 %t224) unreachable -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 - store { ptr, i64, i64 } %t210, ptr %a219 - store { ptr, i64, i64 } %t217, ptr %a220 - call void @finch_str_concat(ptr %a218, ptr %a219, ptr %a220) - %t221 = load { ptr, i64, i64 }, ptr %a218 - %t222 = load i64, ptr %t192 - %t223 = add i64 %t222, 1 - call void @finch_arr_reserve(ptr %a177, i64 %t223, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t224 = load ptr, ptr %a177 - %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.step2731 -for.step2731: - %t226 = load i64, ptr %a182 - %t227 = add i64 %t226, 1 - store i64 %t227, ptr %a182 - br label %for.cond2729 -for.end2732: - %t228 = load ptr, ptr %a1 - %t229 = load { ptr, i64, i64 }, ptr %a170 - 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.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 - store { ptr, i64, i64 } %t237, 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.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.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 +inrange2917: + %t226 = extractvalue { ptr, i64, i64 } %t223, 0 + %t227 = getelementptr inbounds { ptr, i64, i64 }, ptr %t226, i64 %t222 + %t228 = load { ptr, i64, i64 }, ptr %t227 + store { ptr, i64, i64 } %t221, ptr %a230 + store { ptr, i64, i64 } %t228, ptr %a231 + call void @finch_str_concat(ptr %a229, ptr %a230, ptr %a231) + store { ptr, i64, i64 } %t221, ptr %a232 + call void @finch_str_drop(ptr %a232) + %t233 = load { ptr, i64, i64 }, ptr %a229 + %t234 = load i64, ptr %t201 + %t235 = add i64 %t234, 1 + call void @finch_arr_reserve(ptr %a186, i64 %t235, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t236 = load ptr, ptr %a186 + %t237 = getelementptr inbounds { ptr, i64, i64 }, ptr %t236, i64 %t234 + store { ptr, i64, i64 } %t233, ptr %t237 + store i64 %t235, ptr %t201 + br label %for.step2912 +for.step2912: + %t238 = load i64, ptr %a191 + %t239 = add i64 %t238, 1 + store i64 %t239, ptr %a191 + br label %for.cond2910 +for.end2913: + %t240 = load ptr, ptr %a1 + %t241 = load { ptr, i64, i64 }, ptr %a179 + store { ptr, i64, i64 } { ptr @.str.1834, i64 11, i64 0 }, 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.1835, i64 9, i64 0 }, ptr %a248 + call void @finch_str_concat(ptr %a246, ptr %a247, ptr %a248) + store { ptr, i64, i64 } %t245, ptr %a249 + call void @finch_str_drop(ptr %a249) + %t250 = load { ptr, i64, i64 }, ptr %a246 + %t251 = load { ptr, i64, i64 }, ptr %a182 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.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 %panic2737, label %ok2738 -panic2737: - call void @finch_panic(ptr @.str.1766, i64 1001, ptr @.str.1767) + store { ptr, i64, i64 } %t251, ptr %a254 + call void @finch_str_concat(ptr %a252, ptr %a253, ptr %a254) + store { ptr, i64, i64 } %t250, ptr %a255 + call void @finch_str_drop(ptr %a255) + %t256 = load { ptr, i64, i64 }, ptr %a252 + store { ptr, i64, i64 } %t256, ptr %a258 + store { ptr, i64, i64 } { ptr @.str.1836, i64 3, i64 0 }, ptr %a259 + call void @finch_str_concat(ptr %a257, ptr %a258, ptr %a259) + store { ptr, i64, i64 } %t256, ptr %a260 + call void @finch_str_drop(ptr %a260) + %t261 = load { ptr, i64, i64 }, ptr %a257 + %t262 = getelementptr inbounds { ptr, i64, i64 }, ptr %a186, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.1837, i64 1, i64 0 }, ptr %a263 + call void @finch_str_join(ptr %a264, ptr %a186, ptr %a263) + %t265 = load { ptr, i64, i64 }, ptr %a264 + store { ptr, i64, i64 } %t261, ptr %a267 + store { ptr, i64, i64 } %t265, ptr %a268 + call void @finch_str_concat(ptr %a266, ptr %a267, ptr %a268) + store { ptr, i64, i64 } %t261, ptr %a269 + call void @finch_str_drop(ptr %a269) + store { ptr, i64, i64 } %t265, ptr %a270 + call void @finch_str_drop(ptr %a270) + %t271 = load { ptr, i64, i64 }, ptr %a266 + store { ptr, i64, i64 } %t271, ptr %a273 + store { ptr, i64, i64 } { ptr @.str.1838, i64 2, i64 0 }, ptr %a274 + call void @finch_str_concat(ptr %a272, ptr %a273, ptr %a274) + store { ptr, i64, i64 } %t271, ptr %a275 + call void @finch_str_drop(ptr %a275) + %t276 = load { ptr, i64, i64 }, ptr %a272 + call void @finch.gen.emit(ptr %t240, { ptr, i64, i64 } %t276) + store { ptr, i64, i64 } %t276, ptr %a277 + call void @finch_str_drop(ptr %a277) + %t278 = load ptr, ptr %a1 + %t279 = icmp eq ptr %t278, null + br i1 %t279, label %panic2918, label %ok2919 +panic2918: + call void @finch_panic(ptr @.str.1839, i64 1136, ptr @.str.1840) unreachable -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.cond2739 -for.cond2739: - %t266 = load i64, ptr %a265 - %t267 = icmp slt i64 %t266, %t264 - 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 %range2743, label %inrange2744 -range2743: - call void @finch_panic_index(ptr @.str.1768, i64 1003, i64 %t269, i64 %t271) +ok2919: + %t280 = getelementptr inbounds %S.gen.Gen, ptr %t278, i32 0, i32 9 + store i1 true, ptr %t280 + %t281 = getelementptr inbounds %S.gen.EnumDef, ptr %a176, i32 0, i32 2 + %t282 = getelementptr inbounds { ptr, i64, i64 }, ptr %t281, i32 0, i32 1 + %t283 = load i64, ptr %t282 + store i64 0, ptr %a284 + br label %for.cond2920 +for.cond2920: + %t285 = load i64, ptr %a284 + %t286 = icmp slt i64 %t285, %t283 + br i1 %t286, label %for.body2921, label %for.end2923 +for.body2921: + %t287 = load ptr, ptr %a1 + %t288 = load i64, ptr %a284 + %t289 = load { ptr, i64, i64 }, ptr %a187 + %t290 = extractvalue { ptr, i64, i64 } %t289, 1 + %t291 = icmp uge i64 %t288, %t290 + br i1 %t291, label %range2924, label %inrange2925 +range2924: + call void @finch_panic_index(ptr @.str.1841, i64 1138, i64 %t288, i64 %t290) unreachable -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 - call void @finch.gen.label(ptr %t268, { ptr, i64, i64 } %t275) - %t276 = load ptr, ptr %a1 - %t277 = getelementptr inbounds %S.gen.EnumDef, ptr %a167, i32 0, i32 2 - %t278 = load i64, ptr %a265 - %t279 = load { ptr, i64, i64 }, ptr %t277 - %t280 = extractvalue { ptr, i64, i64 } %t279, 1 - %t281 = icmp uge i64 %t278, %t280 - br i1 %t281, label %range2745, label %inrange2746 -range2745: - call void @finch_panic_index(ptr @.str.1770, i64 1004, i64 %t278, i64 %t280) +inrange2925: + %t292 = extractvalue { ptr, i64, i64 } %t289, 0 + %t293 = getelementptr inbounds { ptr, i64, i64 }, ptr %t292, i64 %t288 + %t294 = load { ptr, i64, i64 }, ptr %t293 + call void @finch.gen.label(ptr %t287, { ptr, i64, i64 } %t294) + %t295 = load ptr, ptr %a1 + %t296 = getelementptr inbounds %S.gen.EnumDef, ptr %a176, i32 0, i32 2 + %t297 = load i64, ptr %a284 + %t298 = load { ptr, i64, i64 }, ptr %t296 + %t299 = extractvalue { ptr, i64, i64 } %t298, 1 + %t300 = icmp uge i64 %t297, %t299 + br i1 %t300, label %range2926, label %inrange2927 +range2926: + call void @finch_panic_index(ptr @.str.1843, i64 1139, i64 %t297, i64 %t299) unreachable -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.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.step2741 -for.step2741: - %t287 = load i64, ptr %a265 - %t288 = add i64 %t287, 1 - store i64 %t288, ptr %a265 - 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) - %t291 = load ptr, ptr %a1 - %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.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.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.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.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.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.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) +inrange2927: + %t301 = extractvalue { ptr, i64, i64 } %t298, 0 + %t302 = getelementptr inbounds { ptr, i64, i64 }, ptr %t301, i64 %t297 + %t303 = load { ptr, i64, i64 }, ptr %t302 + call void @finch.gen.bufText(ptr %t295, { ptr, i64, i64 } { ptr @.str.1842, i64 4, i64 0 }, { ptr, i64, i64 } %t303) + %t304 = load ptr, ptr %a1 + %t305 = load { ptr, i64, i64 }, ptr %a185 + call void @finch.gen.br(ptr %t304, { ptr, i64, i64 } %t305) + br label %for.step2922 +for.step2922: + %t306 = load i64, ptr %a284 + %t307 = add i64 %t306, 1 + store i64 %t307, ptr %a284 + br label %for.cond2920 +for.end2923: + %t308 = load ptr, ptr %a1 + %t309 = load { ptr, i64, i64 }, ptr %a182 + call void @finch.gen.label(ptr %t308, { ptr, i64, i64 } %t309) + %t310 = load ptr, ptr %a1 + %t311 = getelementptr inbounds %S.gen.EnumDef, ptr %a176, i32 0, i32 1 + %t312 = load { ptr, i64, i64 }, ptr %t311 + store { ptr, i64, i64 } %t312, ptr %a314 + store { ptr, i64, i64 } { ptr @.str.1845, i64 1, i64 0 }, ptr %a315 + call void @finch_str_concat(ptr %a313, ptr %a314, ptr %a315) + %t316 = load { ptr, i64, i64 }, ptr %a313 + call void @finch.gen.bufText(ptr %t310, { ptr, i64, i64 } { ptr @.str.1844, i64 4, i64 0 }, { ptr, i64, i64 } %t316) + store { ptr, i64, i64 } %t316, ptr %a317 + call void @finch_str_drop(ptr %a317) %t318 = load ptr, ptr %a1 - 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 %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.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 %then2747, label %else2748 -then2747: - %t329 = load ptr, ptr %a1 - %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.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.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.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.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.1785, i64 3, i64 0 }, { ptr, i64, i64 } %t348) + %t320 = load { ptr, i64, i64 }, ptr %a179 + store { ptr, i64, i64 } { ptr @.str.1847, i64 9, i64 0 }, 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.1848, i64 7, i64 0 }, ptr %a327 + call void @finch_str_concat(ptr %a325, ptr %a326, ptr %a327) + store { ptr, i64, i64 } %t324, ptr %a328 + call void @finch_str_drop(ptr %a328) + %t329 = load { ptr, i64, i64 }, ptr %a325 + %t330 = call { ptr, i64, i64 } @finch.gen.op(ptr %t319, { ptr, i64, i64 } %t329) + store { ptr, i64, i64 } %t329, ptr %a331 + call void @finch_str_drop(ptr %a331) + store { ptr, i64, i64 } { ptr @.str.1846, i64 39, i64 0 }, ptr %a333 + store { ptr, i64, i64 } %t330, ptr %a334 + call void @finch_str_concat(ptr %a332, ptr %a333, ptr %a334) + store { ptr, i64, i64 } %t330, ptr %a335 + call void @finch_str_drop(ptr %a335) + %t336 = load { ptr, i64, i64 }, ptr %a332 + store { ptr, i64, i64 } %t336, ptr %a338 + store { ptr, i64, i64 } { ptr @.str.1849, i64 1, i64 0 }, ptr %a339 + call void @finch_str_concat(ptr %a337, ptr %a338, ptr %a339) + store { ptr, i64, i64 } %t336, ptr %a340 + call void @finch_str_drop(ptr %a340) + %t341 = load { ptr, i64, i64 }, ptr %a337 + call void @finch.gen.emit(ptr %t318, { ptr, i64, i64 } %t341) + store { ptr, i64, i64 } %t341, ptr %a342 + call void @finch_str_drop(ptr %a342) + %t343 = load ptr, ptr %a1 + call void @finch.gen.bufText(ptr %t343, { ptr, i64, i64 } { ptr @.str.1850, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1851, i64 1, i64 0 }) + %t344 = load ptr, ptr %a1 + %t345 = load { ptr, i64, i64 }, ptr %a185 + call void @finch.gen.br(ptr %t344, { ptr, i64, i64 } %t345) + %t346 = load ptr, ptr %a1 + %t347 = load { ptr, i64, i64 }, ptr %a185 + call void @finch.gen.label(ptr %t346, { ptr, i64, i64 } %t347) + call void @finch.drop.arr_str(ptr %a187) + call void @finch.drop.arr_str(ptr %a186) + call void @finch_str_drop(ptr %a185) + call void @finch_str_drop(ptr %a182) + call void @finch_str_drop(ptr %a179) + call void @finch.drop.S_gen_EnumDef(ptr %a176) + br label %endif2905 +else2904: + %t348 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 + %t349 = load { ptr, i64, i64 }, ptr %t348 store { ptr, i64, i64 } %t349, ptr %a350 - %t351 = load ptr, ptr %a1 - %t352 = load { ptr, i64, i64 }, ptr %a350 - %t353 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t351, { ptr, i64, i64 } %t352) - store { ptr, i64, i64 } %t353, ptr %a354 - %t355 = load ptr, ptr %a1 - %t356 = load %S.ast.Type, ptr %a2 - %t357 = load { ptr, i64, i64 }, ptr %a354 - %t358 = extractvalue { ptr, i64, i64 } %t357, 1 - %t359 = icmp uge i64 3, %t358 - br i1 %t359, label %range2750, label %inrange2751 -range2750: - call void @finch_panic_index(ptr @.str.1789, i64 1020, i64 3, i64 %t358) - unreachable -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.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.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.1791, i64 10, i64 0 }) - store { ptr, i64, i64 } %t369, ptr %a370 - %t371 = load ptr, ptr %a1 - %t372 = load ptr, ptr %a1 - %t373 = load ptr, ptr %a1 - %t374 = load ptr, ptr %a1 - %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.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.1794, i64 3, i64 0 }, ptr %a385 - call void @finch_str_concat(ptr %a383, ptr %a384, ptr %a385) + store { ptr, i64, i64 } { ptr @.str.1852, i64 3, i64 0 }, ptr %a351 + %t352 = call i32 @finch_str_eq(ptr %a350, ptr %a351) + %t353 = icmp ne i32 %t352, 0 + br i1 %t353, label %then2928, label %else2929 +then2928: + %t354 = load ptr, ptr %a1 + %t355 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t354, { ptr, i64, i64 } { ptr @.str.1853, i64 2, i64 0 }) + store { ptr, i64, i64 } %t355, ptr %a356 + %t357 = load ptr, ptr %a1 + %t358 = load { ptr, i64, i64 }, ptr %a356 + call void @finch.gen.store(ptr %t357, { ptr, i64, i64 } { ptr @.str.1854, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.1855, i64 4, i64 0 }, { ptr, i64, i64 } %t358) + %t359 = load ptr, ptr %a1 + call void @finch.gen.bufText(ptr %t359, { ptr, i64, i64 } { ptr @.str.1856, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1857, i64 1, i64 0 }) + %t360 = load ptr, ptr %a1 + %t361 = load ptr, ptr %a1 + %t362 = load ptr, ptr %a1 + %t363 = load %S.ast.Type, ptr %a2 + %t364 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t362, %S.ast.Type %t363) + store { ptr, i64, i64 } { ptr @.str.1859, i64 23, i64 0 }, ptr %a366 + store { ptr, i64, i64 } %t364, ptr %a367 + call void @finch_str_concat(ptr %a365, ptr %a366, ptr %a367) + store { ptr, i64, i64 } %t364, ptr %a368 + call void @finch_str_drop(ptr %a368) + %t369 = load { ptr, i64, i64 }, ptr %a365 + store { ptr, i64, i64 } %t369, ptr %a371 + store { ptr, i64, i64 } { ptr @.str.1860, i64 22, i64 0 }, ptr %a372 + call void @finch_str_concat(ptr %a370, ptr %a371, ptr %a372) + store { ptr, i64, i64 } %t369, ptr %a373 + call void @finch_str_drop(ptr %a373) + %t374 = load { ptr, i64, i64 }, ptr %a370 + %t375 = call { ptr, i64, i64 } @finch.gen.op(ptr %t361, { ptr, i64, i64 } %t374) + store { ptr, i64, i64 } %t374, ptr %a376 + call void @finch_str_drop(ptr %a376) + %t377 = call { ptr, i64, i64 } @finch.gen.load(ptr %t360, { ptr, i64, i64 } { ptr @.str.1858, i64 3, i64 0 }, { ptr, i64, i64 } %t375) + store { ptr, i64, i64 } %t375, ptr %a378 + call void @finch_str_drop(ptr %a378) + store { ptr, i64, i64 } %t377, ptr %a379 + %t380 = load ptr, ptr %a1 + %t381 = load { ptr, i64, i64 }, ptr %a379 + %t382 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t380, { ptr, i64, i64 } %t381) + store { ptr, i64, i64 } %t382, ptr %a383 + %t384 = load ptr, ptr %a1 + %t385 = load %S.ast.Type, ptr %a2 %t386 = load { ptr, i64, i64 }, ptr %a383 - %t387 = call { ptr, i64, i64 } @finch.gen.op(ptr %t372, { ptr, i64, i64 } %t386) - %t388 = load { ptr, i64, i64 }, ptr %a367 - %t389 = load { ptr, i64, i64 }, ptr %a370 - call void @finch.gen.condBr(ptr %t371, { ptr, i64, i64 } %t387, { ptr, i64, i64 } %t388, { ptr, i64, i64 } %t389) - %t390 = load ptr, ptr %a1 - %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.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.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.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) - %t404 = load ptr, ptr %a1 - %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.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) - %t409 = load ptr, ptr %a1 - %t410 = load { ptr, i64, i64 }, ptr %a397 - 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.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 - %t416 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t417 = load { ptr, i64, i64 }, ptr %t416 - %t418 = extractvalue { ptr, i64, i64 } %t417, 1 - %t419 = icmp uge i64 0, %t418 - br i1 %t419, label %range2752, label %inrange2753 -range2752: - call void @finch_panic_index(ptr @.str.1803, i64 1033, i64 0, i64 %t418) + %t387 = extractvalue { ptr, i64, i64 } %t386, 1 + %t388 = icmp uge i64 3, %t387 + br i1 %t388, label %range2931, label %inrange2932 +range2931: + call void @finch_panic_index(ptr @.str.1862, i64 1155, i64 3, i64 %t387) unreachable -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 - %t423 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t415, %S.ast.Type %t422) +inrange2932: + %t389 = extractvalue { ptr, i64, i64 } %t386, 0 + %t390 = getelementptr inbounds { ptr, i64, i64 }, ptr %t389, i64 3 + %t391 = load { ptr, i64, i64 }, ptr %t390 + %t392 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t384, { ptr, i64, i64 } { ptr @.str.1861, i64 2, i64 0 }, %S.ast.Type %t385, { ptr, i64, i64 } %t391) + store { ptr, i64, i64 } %t392, ptr %a393 + %t394 = load ptr, ptr %a1 + %t395 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t394, { ptr, i64, i64 } { ptr @.str.1863, i64 10, i64 0 }) + store { ptr, i64, i64 } %t395, ptr %a396 + %t397 = load ptr, ptr %a1 + %t398 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t397, { ptr, i64, i64 } { ptr @.str.1864, i64 10, i64 0 }) + store { ptr, i64, i64 } %t398, ptr %a399 + %t400 = load ptr, ptr %a1 + %t401 = load ptr, ptr %a1 + %t402 = load ptr, ptr %a1 + %t403 = load ptr, ptr %a1 + %t404 = load { ptr, i64, i64 }, ptr %a393 + %t405 = load %S.ast.Type, ptr %a2 + %t406 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t403, { ptr, i64, i64 } %t404, %S.ast.Type %t405, i64 0) + %t407 = call { ptr, i64, i64 } @finch.gen.load(ptr %t402, { ptr, i64, i64 } { ptr @.str.1866, i64 3, i64 0 }, { ptr, i64, i64 } %t406) + store { ptr, i64, i64 } %t406, ptr %a408 + call void @finch_str_drop(ptr %a408) + store { ptr, i64, i64 } { ptr @.str.1865, i64 12, i64 0 }, ptr %a410 + store { ptr, i64, i64 } %t407, ptr %a411 + call void @finch_str_concat(ptr %a409, ptr %a410, ptr %a411) + store { ptr, i64, i64 } %t407, ptr %a412 + call void @finch_str_drop(ptr %a412) + %t413 = load { ptr, i64, i64 }, ptr %a409 + store { ptr, i64, i64 } %t413, ptr %a415 + store { ptr, i64, i64 } { ptr @.str.1867, i64 3, i64 0 }, ptr %a416 + call void @finch_str_concat(ptr %a414, ptr %a415, ptr %a416) + store { ptr, i64, i64 } %t413, ptr %a417 + call void @finch_str_drop(ptr %a417) + %t418 = load { ptr, i64, i64 }, ptr %a414 + %t419 = call { ptr, i64, i64 } @finch.gen.op(ptr %t401, { ptr, i64, i64 } %t418) + store { ptr, i64, i64 } %t418, ptr %a420 + call void @finch_str_drop(ptr %a420) + %t421 = load { ptr, i64, i64 }, ptr %a396 + %t422 = load { ptr, i64, i64 }, ptr %a399 + call void @finch.gen.condBr(ptr %t400, { ptr, i64, i64 } %t419, { ptr, i64, i64 } %t421, { ptr, i64, i64 } %t422) + store { ptr, i64, i64 } %t419, ptr %a423 + call void @finch_str_drop(ptr %a423) %t424 = load ptr, ptr %a1 - %t425 = load { ptr, i64, i64 }, ptr %a364 - %t426 = load %S.ast.Type, ptr %a2 - %t427 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t424, { ptr, i64, i64 } %t425, %S.ast.Type %t426, i64 1) - %t428 = call { ptr, i64, i64 } @finch.gen.load(ptr %t414, { ptr, i64, i64 } %t423, { ptr, i64, i64 } %t427) - %t429 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t430 = load { ptr, i64, i64 }, ptr %t429 - %t431 = extractvalue { ptr, i64, i64 } %t430, 1 - %t432 = icmp uge i64 0, %t431 - br i1 %t432, label %range2754, label %inrange2755 -range2754: - call void @finch_panic_index(ptr @.str.1804, i64 1033, i64 0, i64 %t431) - unreachable -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.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.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 + %t425 = load { ptr, i64, i64 }, ptr %a396 + call void @finch.gen.label(ptr %t424, { ptr, i64, i64 } %t425) + %t426 = load ptr, ptr %a1 + %t427 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t426, { ptr, i64, i64 } { ptr @.str.1868, i64 3, i64 0 }) + store { ptr, i64, i64 } %t427, ptr %a428 + %t429 = load ptr, ptr %a1 + %t430 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t429, { ptr, i64, i64 } { ptr @.str.1869, i64 4, i64 0 }) + store { ptr, i64, i64 } %t430, ptr %a431 + %t432 = load ptr, ptr %a1 + %t433 = load ptr, ptr %a1 + %t434 = load { ptr, i64, i64 }, ptr %a356 + %t435 = call { ptr, i64, i64 } @finch.gen.load(ptr %t433, { ptr, i64, i64 } { ptr @.str.1870, i64 2, i64 0 }, { ptr, i64, i64 } %t434) + %t436 = load { ptr, i64, i64 }, ptr %a431 + %t437 = load { ptr, i64, i64 }, ptr %a428 + call void @finch.gen.condBr(ptr %t432, { ptr, i64, i64 } %t435, { ptr, i64, i64 } %t436, { ptr, i64, i64 } %t437) + store { ptr, i64, i64 } %t435, ptr %a438 + call void @finch_str_drop(ptr %a438) %t439 = load ptr, ptr %a1 - %t440 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t441 = load { ptr, i64, i64 }, ptr %t440 - %t442 = extractvalue { ptr, i64, i64 } %t441, 1 - %t443 = icmp uge i64 1, %t442 - br i1 %t443, label %range2756, label %inrange2757 -range2756: - call void @finch_panic_index(ptr @.str.1808, i64 1035, i64 1, i64 %t442) - unreachable -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 - %t447 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t439, %S.ast.Type %t446) + %t440 = load { ptr, i64, i64 }, ptr %a428 + call void @finch.gen.label(ptr %t439, { ptr, i64, i64 } %t440) + %t441 = load ptr, ptr %a1 + call void @finch.gen.bufText(ptr %t441, { ptr, i64, i64 } { ptr @.str.1871, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1872, i64 2, i64 0 }) + %t442 = load ptr, ptr %a1 + %t443 = load { ptr, i64, i64 }, ptr %a431 + call void @finch.gen.br(ptr %t442, { ptr, i64, i64 } %t443) + %t444 = load ptr, ptr %a1 + %t445 = load { ptr, i64, i64 }, ptr %a431 + call void @finch.gen.label(ptr %t444, { ptr, i64, i64 } %t445) + %t446 = load ptr, ptr %a1 + %t447 = load { ptr, i64, i64 }, ptr %a356 + call void @finch.gen.store(ptr %t446, { ptr, i64, i64 } { ptr @.str.1873, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.1874, i64 5, i64 0 }, { ptr, i64, i64 } %t447) %t448 = load ptr, ptr %a1 - %t449 = load { ptr, i64, i64 }, ptr %a364 - %t450 = load %S.ast.Type, ptr %a2 - %t451 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t448, { ptr, i64, i64 } %t449, %S.ast.Type %t450, i64 2) - %t452 = call { ptr, i64, i64 } @finch.gen.load(ptr %t438, { ptr, i64, i64 } %t447, { ptr, i64, i64 } %t451) - %t453 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t454 = load { ptr, i64, i64 }, ptr %t453 - %t455 = extractvalue { ptr, i64, i64 } %t454, 1 - %t456 = icmp uge i64 1, %t455 - br i1 %t456, label %range2758, label %inrange2759 -range2758: - call void @finch_panic_index(ptr @.str.1809, i64 1035, i64 1, i64 %t455) + %t449 = load ptr, ptr %a1 + %t450 = load ptr, ptr %a1 + %t451 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t452 = load { ptr, i64, i64 }, ptr %t451 + %t453 = extractvalue { ptr, i64, i64 } %t452, 1 + %t454 = icmp uge i64 0, %t453 + br i1 %t454, label %range2933, label %inrange2934 +range2933: + call void @finch_panic_index(ptr @.str.1876, i64 1168, i64 0, i64 %t453) unreachable -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.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) - %t462 = load ptr, ptr %a1 - %t463 = load { ptr, i64, i64 }, ptr %a370 - call void @finch.gen.label(ptr %t462, { ptr, i64, i64 } %t463) - %t464 = load ptr, ptr %a1 - %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.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 %panic2760, label %ok2761 -panic2760: - call void @finch_panic(ptr @.str.1812, i64 1041, ptr @.str.1813) +inrange2934: + %t455 = extractvalue { ptr, i64, i64 } %t452, 0 + %t456 = getelementptr inbounds %S.ast.Type, ptr %t455, i64 0 + %t457 = load %S.ast.Type, ptr %t456 + %t458 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t450, %S.ast.Type %t457) + %t459 = load ptr, ptr %a1 + %t460 = load { ptr, i64, i64 }, ptr %a393 + %t461 = load %S.ast.Type, ptr %a2 + %t462 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t459, { ptr, i64, i64 } %t460, %S.ast.Type %t461, i64 1) + %t463 = call { ptr, i64, i64 } @finch.gen.load(ptr %t449, { ptr, i64, i64 } %t458, { ptr, i64, i64 } %t462) + store { ptr, i64, i64 } %t458, ptr %a464 + call void @finch_str_drop(ptr %a464) + store { ptr, i64, i64 } %t462, ptr %a465 + call void @finch_str_drop(ptr %a465) + %t466 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t467 = load { ptr, i64, i64 }, ptr %t466 + %t468 = extractvalue { ptr, i64, i64 } %t467, 1 + %t469 = icmp uge i64 0, %t468 + br i1 %t469, label %range2935, label %inrange2936 +range2935: + call void @finch_panic_index(ptr @.str.1877, i64 1168, i64 0, i64 %t468) unreachable -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 - %t472 = load { ptr, i64, i64 }, ptr %t471 - %t473 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t474 = load { ptr, i64, i64 }, ptr %t473 - %t475 = call i64 @finch.gen.findStruct(ptr %t470, { ptr, i64, i64 } %t472, { ptr, i64, i64 } %t474) - %t476 = load { ptr, i64, i64 }, ptr %t469 - %t477 = extractvalue { ptr, i64, i64 } %t476, 1 - %t478 = icmp uge i64 %t475, %t477 - br i1 %t478, label %range2762, label %inrange2763 -range2762: - call void @finch_panic_index(ptr @.str.1814, i64 1041, i64 %t475, i64 %t477) +inrange2936: + %t470 = extractvalue { ptr, i64, i64 } %t467, 0 + %t471 = getelementptr inbounds %S.ast.Type, ptr %t470, i64 0 + %t472 = load %S.ast.Type, ptr %t471 + call void @finch.gen.emitFormat(ptr %t448, { ptr, i64, i64 } { ptr @.str.1875, i64 4, i64 0 }, { ptr, i64, i64 } %t463, %S.ast.Type %t472, i1 true) + store { ptr, i64, i64 } %t463, ptr %a473 + call void @finch_str_drop(ptr %a473) + %t474 = load ptr, ptr %a1 + call void @finch.gen.bufText(ptr %t474, { ptr, i64, i64 } { ptr @.str.1878, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1879, i64 2, i64 0 }) + %t475 = load ptr, ptr %a1 + %t476 = load ptr, ptr %a1 + %t477 = load ptr, ptr %a1 + %t478 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t479 = load { ptr, i64, i64 }, ptr %t478 + %t480 = extractvalue { ptr, i64, i64 } %t479, 1 + %t481 = icmp uge i64 1, %t480 + br i1 %t481, label %range2937, label %inrange2938 +range2937: + call void @finch_panic_index(ptr @.str.1881, i64 1170, i64 1, i64 %t480) unreachable -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 - store %S.gen.StructDef %t481, ptr %a482 - call void @finch.copy.S_gen_StructDef(ptr %a483, ptr %a482) - %t484 = load %S.gen.StructDef, ptr %a483 - store %S.gen.StructDef %t484, ptr %a485 +inrange2938: + %t482 = extractvalue { ptr, i64, i64 } %t479, 0 + %t483 = getelementptr inbounds %S.ast.Type, ptr %t482, i64 1 + %t484 = load %S.ast.Type, ptr %t483 + %t485 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t477, %S.ast.Type %t484) %t486 = load ptr, ptr %a1 - %t487 = load %S.ast.Type, ptr %a2 - %t488 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t486, %S.ast.Type %t487) - store { ptr, i64, i64 } %t488, ptr %a489 - %t490 = load ptr, ptr %a1 - %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.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.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.cond2764 -for.cond2764: - %t501 = load i64, ptr %a500 - %t502 = icmp slt i64 %t501, %t499 - 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 %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 - %t509 = load i64, ptr %a500 - %t510 = load { ptr, i64, i64 }, ptr %t508 - %t511 = extractvalue { ptr, i64, i64 } %t510, 1 - %t512 = icmp uge i64 %t509, %t511 - br i1 %t512, label %range2771, label %inrange2772 -range2771: - call void @finch_panic_index(ptr @.str.1820, i64 1049, i64 %t509, i64 %t511) + %t487 = load { ptr, i64, i64 }, ptr %a393 + %t488 = load %S.ast.Type, ptr %a2 + %t489 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t486, { ptr, i64, i64 } %t487, %S.ast.Type %t488, i64 2) + %t490 = call { ptr, i64, i64 } @finch.gen.load(ptr %t476, { ptr, i64, i64 } %t485, { ptr, i64, i64 } %t489) + store { ptr, i64, i64 } %t485, ptr %a491 + call void @finch_str_drop(ptr %a491) + store { ptr, i64, i64 } %t489, ptr %a492 + call void @finch_str_drop(ptr %a492) + %t493 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t494 = load { ptr, i64, i64 }, ptr %t493 + %t495 = extractvalue { ptr, i64, i64 } %t494, 1 + %t496 = icmp uge i64 1, %t495 + br i1 %t496, label %range2939, label %inrange2940 +range2939: + call void @finch_panic_index(ptr @.str.1882, i64 1170, i64 1, i64 %t495) unreachable -inrange2772: - %t513 = extractvalue { ptr, i64, i64 } %t510, 0 - %t514 = getelementptr inbounds { ptr, i64, i64 }, ptr %t513, i64 %t509 +inrange2940: + %t497 = extractvalue { ptr, i64, i64 } %t494, 0 + %t498 = getelementptr inbounds %S.ast.Type, ptr %t497, i64 1 + %t499 = load %S.ast.Type, ptr %t498 + call void @finch.gen.emitFormat(ptr %t475, { ptr, i64, i64 } { ptr @.str.1880, i64 4, i64 0 }, { ptr, i64, i64 } %t490, %S.ast.Type %t499, i1 true) + store { ptr, i64, i64 } %t490, ptr %a500 + call void @finch_str_drop(ptr %a500) + %t501 = load ptr, ptr %a1 + %t502 = load { ptr, i64, i64 }, ptr %a399 + call void @finch.gen.br(ptr %t501, { ptr, i64, i64 } %t502) + %t503 = load ptr, ptr %a1 + %t504 = load { ptr, i64, i64 }, ptr %a399 + call void @finch.gen.label(ptr %t503, { ptr, i64, i64 } %t504) + %t505 = load ptr, ptr %a1 + %t506 = load { ptr, i64, i64 }, ptr %a383 + call void @finch.gen.loopEnd(ptr %t505, { ptr, i64, i64 } %t506) + %t507 = load ptr, ptr %a1 + call void @finch.gen.bufText(ptr %t507, { ptr, i64, i64 } { ptr @.str.1883, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1884, i64 1, i64 0 }) + call void @finch_str_drop(ptr %a431) + call void @finch_str_drop(ptr %a428) + call void @finch_str_drop(ptr %a399) + call void @finch_str_drop(ptr %a396) + call void @finch_str_drop(ptr %a393) + call void @finch.drop.arr_str(ptr %a383) + call void @finch_str_drop(ptr %a379) + call void @finch_str_drop(ptr %a356) + br label %endif2930 +else2929: + %t508 = load ptr, ptr %a1 + %t509 = icmp eq ptr %t508, null + br i1 %t509, label %panic2941, label %ok2942 +panic2941: + call void @finch_panic(ptr @.str.1885, i64 1176, ptr @.str.1886) + unreachable +ok2942: + %t510 = getelementptr inbounds %S.gen.Gen, ptr %t508, i32 0, i32 16 + %t511 = load ptr, ptr %a1 + %t512 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 + %t513 = load { ptr, i64, i64 }, ptr %t512 + %t514 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 %t515 = load { ptr, i64, i64 }, ptr %t514 - store { ptr, i64, i64 } %t507, 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 - store { ptr, i64, i64 } %t519, ptr %a521 - 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.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.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.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 - %t535 = load i64, ptr %a500 - %t536 = load { ptr, i64, i64 }, ptr %t534 - %t537 = extractvalue { ptr, i64, i64 } %t536, 1 - %t538 = icmp uge i64 %t535, %t537 - br i1 %t538, label %range2773, label %inrange2774 -range2773: - call void @finch_panic_index(ptr @.str.1824, i64 1050, i64 %t535, i64 %t537) + %t516 = call i64 @finch.gen.findStruct(ptr %t511, { ptr, i64, i64 } %t513, { ptr, i64, i64 } %t515) + %t517 = load { ptr, i64, i64 }, ptr %t510 + %t518 = extractvalue { ptr, i64, i64 } %t517, 1 + %t519 = icmp uge i64 %t516, %t518 + br i1 %t519, label %range2943, label %inrange2944 +range2943: + call void @finch_panic_index(ptr @.str.1887, i64 1176, i64 %t516, i64 %t518) unreachable -inrange2774: - %t539 = extractvalue { ptr, i64, i64 } %t536, 0 - %t540 = getelementptr inbounds i64, ptr %t539, i64 %t535 +inrange2944: + %t520 = extractvalue { ptr, i64, i64 } %t517, 0 + %t521 = getelementptr inbounds %S.gen.StructDef, ptr %t520, i64 %t516 + %t522 = load %S.gen.StructDef, ptr %t521 + store %S.gen.StructDef %t522, ptr %a523 + call void @finch.copy.S_gen_StructDef(ptr %a524, ptr %a523) + %t525 = load %S.gen.StructDef, ptr %a524 + store %S.gen.StructDef %t525, ptr %a526 + %t527 = load ptr, ptr %a1 + %t528 = load %S.ast.Type, ptr %a2 + %t529 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t527, %S.ast.Type %t528) + store { ptr, i64, i64 } %t529, ptr %a530 + %t531 = load ptr, ptr %a1 + %t532 = getelementptr inbounds %S.gen.StructDef, ptr %a526, i32 0, i32 1 + %t533 = load { ptr, i64, i64 }, ptr %t532 + store { ptr, i64, i64 } %t533, ptr %a535 + store { ptr, i64, i64 } { ptr @.str.1889, i64 1, i64 0 }, ptr %a536 + call void @finch_str_concat(ptr %a534, ptr %a535, ptr %a536) + %t537 = load { ptr, i64, i64 }, ptr %a534 + call void @finch.gen.bufText(ptr %t531, { ptr, i64, i64 } { ptr @.str.1888, i64 4, i64 0 }, { ptr, i64, i64 } %t537) + store { ptr, i64, i64 } %t537, ptr %a538 + call void @finch_str_drop(ptr %a538) + %t539 = getelementptr inbounds %S.gen.StructDef, ptr %a526, i32 0, i32 12 + %t540 = getelementptr inbounds { ptr, i64, i64 }, ptr %t539, i32 0, i32 1 %t541 = load i64, ptr %t540 - call void @finch_str_from_int(ptr %a542, i64 %t541) - %t543 = load { ptr, i64, i64 }, ptr %a542 - store { ptr, i64, i64 } %t533, ptr %a545 - store { ptr, i64, i64 } %t543, ptr %a546 - call void @finch_str_concat(ptr %a544, ptr %a545, ptr %a546) - %t547 = load { ptr, i64, i64 }, ptr %a544 - %t548 = call { ptr, i64, i64 } @finch.gen.op(ptr %t524, { ptr, i64, i64 } %t547) + store i64 0, ptr %a542 + br label %for.cond2945 +for.cond2945: + %t543 = load i64, ptr %a542 + %t544 = icmp slt i64 %t543, %t541 + br i1 %t544, label %for.body2946, label %for.end2948 +for.body2946: + store { ptr, i64, i64 } { ptr @.str.1890, i64 2, i64 0 }, ptr %a545 + %t546 = load i64, ptr %a542 + %t547 = icmp eq i64 %t546, 0 + br i1 %t547, label %then2949, label %endif2951 +then2949: + %t548 = load { ptr, i64, i64 }, ptr %a545 + store { ptr, i64, i64 } { ptr @.str.1891, i64 0, i64 0 }, ptr %a545 store { ptr, i64, i64 } %t548, ptr %a549 + call void @finch_str_drop(ptr %a549) + br label %endif2951 +endif2951: %t550 = load ptr, ptr %a1 - %t551 = load ptr, ptr %a1 - %t552 = load ptr, ptr %a1 - %t553 = getelementptr inbounds %S.gen.StructDef, ptr %a485, i32 0, i32 12 - %t554 = load i64, ptr %a500 - %t555 = load { ptr, i64, i64 }, ptr %t553 - %t556 = extractvalue { ptr, i64, i64 } %t555, 1 - %t557 = icmp uge i64 %t554, %t556 - br i1 %t557, label %range2775, label %inrange2776 -range2775: - call void @finch_panic_index(ptr @.str.1826, i64 1051, i64 %t554, i64 %t556) + %t551 = load { ptr, i64, i64 }, ptr %a545 + %t552 = getelementptr inbounds %S.gen.StructDef, ptr %a526, i32 0, i32 11 + %t553 = load i64, ptr %a542 + %t554 = load { ptr, i64, i64 }, ptr %t552 + %t555 = extractvalue { ptr, i64, i64 } %t554, 1 + %t556 = icmp uge i64 %t553, %t555 + br i1 %t556, label %range2952, label %inrange2953 +range2952: + call void @finch_panic_index(ptr @.str.1893, i64 1184, i64 %t553, i64 %t555) unreachable -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 - %t561 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t552, %S.ast.Type %t560) - %t562 = load { ptr, i64, i64 }, ptr %a549 - %t563 = call { ptr, i64, i64 } @finch.gen.load(ptr %t551, { ptr, i64, i64 } %t561, { ptr, i64, i64 } %t562) - %t564 = getelementptr inbounds %S.gen.StructDef, ptr %a485, i32 0, i32 12 - %t565 = load i64, ptr %a500 - %t566 = load { ptr, i64, i64 }, ptr %t564 - %t567 = extractvalue { ptr, i64, i64 } %t566, 1 - %t568 = icmp uge i64 %t565, %t567 - br i1 %t568, label %range2777, label %inrange2778 -range2777: - call void @finch_panic_index(ptr @.str.1827, i64 1051, i64 %t565, i64 %t567) +inrange2953: + %t557 = extractvalue { ptr, i64, i64 } %t554, 0 + %t558 = getelementptr inbounds { ptr, i64, i64 }, ptr %t557, i64 %t553 + %t559 = load { ptr, i64, i64 }, ptr %t558 + store { ptr, i64, i64 } %t551, ptr %a561 + store { ptr, i64, i64 } %t559, ptr %a562 + 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.1894, i64 2, i64 0 }, ptr %a566 + call void @finch_str_concat(ptr %a564, ptr %a565, ptr %a566) + store { ptr, i64, i64 } %t563, ptr %a567 + call void @finch_str_drop(ptr %a567) + %t568 = load { ptr, i64, i64 }, ptr %a564 + call void @finch.gen.bufText(ptr %t550, { ptr, i64, i64 } { ptr @.str.1892, i64 4, i64 0 }, { ptr, i64, i64 } %t568) + store { ptr, i64, i64 } %t568, ptr %a569 + call void @finch_str_drop(ptr %a569) + %t570 = load ptr, ptr %a1 + %t571 = load { ptr, i64, i64 }, ptr %a530 + store { ptr, i64, i64 } { ptr @.str.1895, i64 23, 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 + store { ptr, i64, i64 } %t575, ptr %a577 + store { ptr, i64, i64 } { ptr @.str.1896, i64 21, i64 0 }, ptr %a578 + call void @finch_str_concat(ptr %a576, ptr %a577, ptr %a578) + store { ptr, i64, i64 } %t575, ptr %a579 + call void @finch_str_drop(ptr %a579) + %t580 = load { ptr, i64, i64 }, ptr %a576 + %t581 = getelementptr inbounds %S.gen.StructDef, ptr %a526, i32 0, i32 3 + %t582 = load i64, ptr %a542 + %t583 = load { ptr, i64, i64 }, ptr %t581 + %t584 = extractvalue { ptr, i64, i64 } %t583, 1 + %t585 = icmp uge i64 %t582, %t584 + br i1 %t585, label %range2954, label %inrange2955 +range2954: + call void @finch_panic_index(ptr @.str.1897, i64 1185, i64 %t582, i64 %t584) unreachable -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.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.cond2764 -for.end2767: - %t574 = load ptr, ptr %a1 - 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.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.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.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) - %t587 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t587, ptr %a588 - call void @finch_str_copy(ptr %a589, ptr %a588) +inrange2955: + %t586 = extractvalue { ptr, i64, i64 } %t583, 0 + %t587 = getelementptr inbounds i64, ptr %t586, i64 %t582 + %t588 = load i64, ptr %t587 + call void @finch_str_from_int(ptr %a589, i64 %t588) %t590 = load { ptr, i64, i64 }, ptr %a589 - ret { ptr, i64, i64 } %t590 + store { ptr, i64, i64 } %t580, ptr %a592 + store { ptr, i64, i64 } %t590, ptr %a593 + call void @finch_str_concat(ptr %a591, ptr %a592, ptr %a593) + store { ptr, i64, i64 } %t580, ptr %a594 + call void @finch_str_drop(ptr %a594) + store { ptr, i64, i64 } %t590, ptr %a595 + call void @finch_str_drop(ptr %a595) + %t596 = load { ptr, i64, i64 }, ptr %a591 + %t597 = call { ptr, i64, i64 } @finch.gen.op(ptr %t570, { ptr, i64, i64 } %t596) + store { ptr, i64, i64 } %t596, ptr %a598 + call void @finch_str_drop(ptr %a598) + store { ptr, i64, i64 } %t597, ptr %a599 + %t600 = load ptr, ptr %a1 + %t601 = load ptr, ptr %a1 + %t602 = load ptr, ptr %a1 + %t603 = getelementptr inbounds %S.gen.StructDef, ptr %a526, i32 0, i32 12 + %t604 = load i64, ptr %a542 + %t605 = load { ptr, i64, i64 }, ptr %t603 + %t606 = extractvalue { ptr, i64, i64 } %t605, 1 + %t607 = icmp uge i64 %t604, %t606 + br i1 %t607, label %range2956, label %inrange2957 +range2956: + call void @finch_panic_index(ptr @.str.1899, i64 1186, i64 %t604, i64 %t606) + unreachable +inrange2957: + %t608 = extractvalue { ptr, i64, i64 } %t605, 0 + %t609 = getelementptr inbounds %S.ast.Type, ptr %t608, i64 %t604 + %t610 = load %S.ast.Type, ptr %t609 + %t611 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t602, %S.ast.Type %t610) + %t612 = load { ptr, i64, i64 }, ptr %a599 + %t613 = call { ptr, i64, i64 } @finch.gen.load(ptr %t601, { ptr, i64, i64 } %t611, { ptr, i64, i64 } %t612) + store { ptr, i64, i64 } %t611, ptr %a614 + call void @finch_str_drop(ptr %a614) + %t615 = getelementptr inbounds %S.gen.StructDef, ptr %a526, i32 0, i32 12 + %t616 = load i64, ptr %a542 + %t617 = load { ptr, i64, i64 }, ptr %t615 + %t618 = extractvalue { ptr, i64, i64 } %t617, 1 + %t619 = icmp uge i64 %t616, %t618 + br i1 %t619, label %range2958, label %inrange2959 +range2958: + call void @finch_panic_index(ptr @.str.1900, i64 1186, i64 %t616, i64 %t618) + unreachable +inrange2959: + %t620 = extractvalue { ptr, i64, i64 } %t617, 0 + %t621 = getelementptr inbounds %S.ast.Type, ptr %t620, i64 %t616 + %t622 = load %S.ast.Type, ptr %t621 + call void @finch.gen.emitFormat(ptr %t600, { ptr, i64, i64 } { ptr @.str.1898, i64 4, i64 0 }, { ptr, i64, i64 } %t613, %S.ast.Type %t622, i1 true) + store { ptr, i64, i64 } %t613, ptr %a623 + call void @finch_str_drop(ptr %a623) + call void @finch_str_drop(ptr %a599) + call void @finch_str_drop(ptr %a545) + br label %for.step2947 +for.step2947: + %t624 = load i64, ptr %a542 + %t625 = add i64 %t624, 1 + store i64 %t625, ptr %a542 + br label %for.cond2945 +for.end2948: + %t626 = load ptr, ptr %a1 + call void @finch.gen.bufText(ptr %t626, { ptr, i64, i64 } { ptr @.str.1901, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1902, i64 1, i64 0 }) + call void @finch_str_drop(ptr %a530) + call void @finch.drop.S_gen_StructDef(ptr %a526) + br label %endif2930 +endif2930: + br label %endif2905 +endif2905: + br label %endif2896 +endif2896: + %t627 = load ptr, ptr %a1 + call void @finch.gen.emit(ptr %t627, { ptr, i64, i64 } { ptr @.str.1903, i64 8, i64 0 }) + %t628 = load ptr, ptr %a1 + %t629 = load %S.gen.Saved, ptr %a32 + %t630 = load { ptr, i64, i64 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.1904, i64 21, i64 0 }, 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.1905, i64 18, i64 0 }, ptr %a637 + call void @finch_str_concat(ptr %a635, ptr %a636, ptr %a637) + store { ptr, i64, i64 } %t634, ptr %a638 + call void @finch_str_drop(ptr %a638) + %t639 = load { ptr, i64, i64 }, ptr %a635 + call void @finch.gen.endHelper(ptr %t628, %S.gen.Saved %t629, { ptr, i64, i64 } %t639) + store { ptr, i64, i64 } %t639, ptr %a640 + call void @finch_str_drop(ptr %a640) + %t641 = load { ptr, i64, i64 }, ptr %a10 + call void @finch.drop.S_gen_Saved(ptr %a32) + ret { ptr, i64, i64 } %t641 } define internal { ptr, i64, i64 } @finch.gen.intCast(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, %S.ast.Type %p3) { @@ -28529,48 +33569,69 @@ entry: %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 + %a28 = alloca { ptr, i64, i64 }, align 16 %a30 = alloca { ptr, i64, i64 }, align 16 %a31 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 + %a32 = alloca { ptr, i64, i64 }, align 16 + %a33 = alloca { ptr, i64, i64 }, align 16 %a36 = alloca { ptr, i64, i64 }, align 16 + %a37 = alloca { ptr, i64, i64 }, align 16 %a38 = alloca { ptr, i64, i64 }, align 16 %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = 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 + %a41 = alloca { ptr, i64, i64 }, align 16 + %a42 = alloca { ptr, i64, i64 }, align 16 + %a43 = alloca { ptr, i64, i64 }, align 16 + %a44 = 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 + %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 + %a63 = 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 - %a67 = 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 %a71 = alloca { ptr, i64, i64 }, align 16 + %a74 = 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 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = 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 %a87 = 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 %a91 = 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 + %a101 = alloca { ptr, i64, i64 }, align 16 + %a102 = 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 %a107 = 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 + %a115 = 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 + %a123 = 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 + %a127 = alloca { ptr, i64, i64 }, align 16 + %a130 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store { ptr, i64, i64 } %p1, ptr %a2 store %S.ast.Type %p2, ptr %a3 @@ -28584,115 +33645,157 @@ entry: %t11 = load i64, ptr %a7 %t12 = load i64, ptr %a10 %t13 = icmp eq i64 %t11, %t12 - br i1 %t13, label %then2779, label %endif2781 -then2779: + br i1 %t13, label %then2960, label %endif2962 +then2960: %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 -endif2781: +endif2962: %t18 = load i64, ptr %a10 %t19 = load i64, ptr %a7 %t20 = icmp slt i64 %t18, %t19 - br i1 %t20, label %then2782, label %endif2784 -then2782: + br i1 %t20, label %then2963, label %endif2965 +then2963: %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.1833, i64 6, i64 0 }, ptr %a26 + store { ptr, i64, i64 } { ptr @.str.1906, 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.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 - store { ptr, i64, i64 } %t32, 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.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 - %t43 = load %S.ast.Type, ptr %a4 - %t44 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t42, %S.ast.Type %t43) - store { ptr, i64, i64 } %t41, 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 - %t49 = call { ptr, i64, i64 } @finch.gen.op(ptr %t21, { ptr, i64, i64 } %t48) - ret { ptr, i64, i64 } %t49 -endif2784: - %t50 = load %S.ast.Type, ptr %a3 - %t51 = call i1 @finch.gen.isSigned(%S.ast.Type %t50) - 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.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.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 - store { ptr, i64, i64 } %t63, 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.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 - %t74 = load %S.ast.Type, ptr %a4 - %t75 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t73, %S.ast.Type %t74) + store { ptr, i64, i64 } %t24, ptr %a28 + call void @finch_str_drop(ptr %a28) + %t29 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t29, ptr %a31 + store { ptr, i64, i64 } { ptr @.str.1907, i64 1, i64 0 }, ptr %a32 + call void @finch_str_concat(ptr %a30, ptr %a31, ptr %a32) + store { ptr, i64, i64 } %t29, ptr %a33 + call void @finch_str_drop(ptr %a33) + %t34 = load { ptr, i64, i64 }, ptr %a30 + %t35 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t34, ptr %a37 + store { ptr, i64, i64 } %t35, ptr %a38 + call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) + store { ptr, i64, i64 } %t34, ptr %a39 + call void @finch_str_drop(ptr %a39) + %t40 = load { ptr, i64, i64 }, ptr %a36 + store { ptr, i64, i64 } %t40, ptr %a42 + store { ptr, i64, i64 } { ptr @.str.1908, i64 4, i64 0 }, ptr %a43 + call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) + store { ptr, i64, i64 } %t40, ptr %a44 + call void @finch_str_drop(ptr %a44) + %t45 = load { ptr, i64, i64 }, ptr %a41 + %t46 = load ptr, ptr %a1 + %t47 = load %S.ast.Type, ptr %a4 + %t48 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t46, %S.ast.Type %t47) + store { ptr, i64, i64 } %t45, ptr %a50 + store { ptr, i64, i64 } %t48, ptr %a51 + call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) + store { ptr, i64, i64 } %t45, ptr %a52 + call void @finch_str_drop(ptr %a52) + store { ptr, i64, i64 } %t48, ptr %a53 + call void @finch_str_drop(ptr %a53) + %t54 = load { ptr, i64, i64 }, ptr %a49 + %t55 = call { ptr, i64, i64 } @finch.gen.op(ptr %t21, { ptr, i64, i64 } %t54) + store { ptr, i64, i64 } %t54, ptr %a56 + call void @finch_str_drop(ptr %a56) + ret { ptr, i64, i64 } %t55 +endif2965: + %t57 = load %S.ast.Type, ptr %a3 + %t58 = call i1 @finch.gen.isSigned(%S.ast.Type %t57) + br i1 %t58, label %then2966, label %endif2968 +then2966: + %t59 = load ptr, ptr %a1 + %t60 = load ptr, ptr %a1 + %t61 = load %S.ast.Type, ptr %a3 + %t62 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t60, %S.ast.Type %t61) + store { ptr, i64, i64 } { ptr @.str.1909, i64 5, i64 0 }, ptr %a64 + store { ptr, i64, i64 } %t62, ptr %a65 + call void @finch_str_concat(ptr %a63, ptr %a64, ptr %a65) + store { ptr, i64, i64 } %t62, ptr %a66 + call void @finch_str_drop(ptr %a66) + %t67 = load { ptr, i64, i64 }, ptr %a63 + store { ptr, i64, i64 } %t67, ptr %a69 + store { ptr, i64, i64 } { ptr @.str.1910, i64 1, i64 0 }, ptr %a70 + call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70) + store { ptr, i64, i64 } %t67, ptr %a71 + call void @finch_str_drop(ptr %a71) + %t72 = load { ptr, i64, i64 }, ptr %a68 + %t73 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t72, ptr %a75 + store { ptr, i64, i64 } %t73, ptr %a76 + call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) store { ptr, i64, i64 } %t72, 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 - %t80 = call { ptr, i64, i64 } @finch.gen.op(ptr %t52, { ptr, i64, i64 } %t79) - ret { ptr, i64, i64 } %t80 -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.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.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 - store { ptr, i64, i64 } %t92, 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.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 - %t103 = load %S.ast.Type, ptr %a4 - %t104 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t102, %S.ast.Type %t103) - store { ptr, i64, i64 } %t101, ptr %a106 - store { ptr, i64, i64 } %t104, ptr %a107 - call void @finch_str_concat(ptr %a105, ptr %a106, ptr %a107) - %t108 = load { ptr, i64, i64 }, ptr %a105 - %t109 = call { ptr, i64, i64 } @finch.gen.op(ptr %t81, { ptr, i64, i64 } %t108) - ret { ptr, i64, i64 } %t109 + call void @finch_str_drop(ptr %a77) + %t78 = load { ptr, i64, i64 }, ptr %a74 + store { ptr, i64, i64 } %t78, ptr %a80 + store { ptr, i64, i64 } { ptr @.str.1911, i64 4, i64 0 }, ptr %a81 + call void @finch_str_concat(ptr %a79, ptr %a80, ptr %a81) + store { ptr, i64, i64 } %t78, ptr %a82 + call void @finch_str_drop(ptr %a82) + %t83 = load { ptr, i64, i64 }, ptr %a79 + %t84 = load ptr, ptr %a1 + %t85 = load %S.ast.Type, ptr %a4 + %t86 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t84, %S.ast.Type %t85) + store { ptr, i64, i64 } %t83, ptr %a88 + store { ptr, i64, i64 } %t86, ptr %a89 + call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89) + store { ptr, i64, i64 } %t83, ptr %a90 + call void @finch_str_drop(ptr %a90) + store { ptr, i64, i64 } %t86, ptr %a91 + call void @finch_str_drop(ptr %a91) + %t92 = load { ptr, i64, i64 }, ptr %a87 + %t93 = call { ptr, i64, i64 } @finch.gen.op(ptr %t59, { ptr, i64, i64 } %t92) + store { ptr, i64, i64 } %t92, ptr %a94 + call void @finch_str_drop(ptr %a94) + ret { ptr, i64, i64 } %t93 +endif2968: + %t95 = load ptr, ptr %a1 + %t96 = load ptr, ptr %a1 + %t97 = load %S.ast.Type, ptr %a3 + %t98 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t96, %S.ast.Type %t97) + store { ptr, i64, i64 } { ptr @.str.1912, i64 5, i64 0 }, ptr %a100 + store { ptr, i64, i64 } %t98, ptr %a101 + call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) + store { ptr, i64, i64 } %t98, ptr %a102 + call void @finch_str_drop(ptr %a102) + %t103 = load { ptr, i64, i64 }, ptr %a99 + store { ptr, i64, i64 } %t103, ptr %a105 + store { ptr, i64, i64 } { ptr @.str.1913, i64 1, i64 0 }, ptr %a106 + call void @finch_str_concat(ptr %a104, ptr %a105, ptr %a106) + store { ptr, i64, i64 } %t103, ptr %a107 + call void @finch_str_drop(ptr %a107) + %t108 = load { ptr, i64, i64 }, ptr %a104 + %t109 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t108, ptr %a111 + store { ptr, i64, i64 } %t109, ptr %a112 + call void @finch_str_concat(ptr %a110, ptr %a111, ptr %a112) + store { ptr, i64, i64 } %t108, ptr %a113 + call void @finch_str_drop(ptr %a113) + %t114 = load { ptr, i64, i64 }, ptr %a110 + store { ptr, i64, i64 } %t114, ptr %a116 + store { ptr, i64, i64 } { ptr @.str.1914, i64 4, i64 0 }, ptr %a117 + call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) + store { ptr, i64, i64 } %t114, ptr %a118 + call void @finch_str_drop(ptr %a118) + %t119 = load { ptr, i64, i64 }, ptr %a115 + %t120 = load ptr, ptr %a1 + %t121 = load %S.ast.Type, ptr %a4 + %t122 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t120, %S.ast.Type %t121) + store { ptr, i64, i64 } %t119, ptr %a124 + store { ptr, i64, i64 } %t122, ptr %a125 + call void @finch_str_concat(ptr %a123, ptr %a124, ptr %a125) + store { ptr, i64, i64 } %t119, ptr %a126 + call void @finch_str_drop(ptr %a126) + store { ptr, i64, i64 } %t122, ptr %a127 + call void @finch_str_drop(ptr %a127) + %t128 = load { ptr, i64, i64 }, ptr %a123 + %t129 = call { ptr, i64, i64 } @finch.gen.op(ptr %t95, { ptr, i64, i64 } %t128) + store { ptr, i64, i64 } %t128, ptr %a130 + call void @finch_str_drop(ptr %a130) + ret { ptr, i64, i64 } %t129 } define internal { ptr, i64, i64 } @finch.gen.floatCast(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, %S.ast.Type %p3) { @@ -28708,33 +33811,47 @@ entry: %a26 = alloca { ptr, i64, i64 }, align 16 %a27 = alloca { ptr, i64, i64 }, align 16 %a28 = alloca { ptr, i64, i64 }, align 16 - %a30 = 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 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 + %a33 = alloca { ptr, i64, i64 }, align 16 + %a34 = alloca { ptr, i64, i64 }, align 16 %a37 = alloca { ptr, i64, i64 }, align 16 + %a38 = 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 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 + %a42 = 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 + %a50 = 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 + %a54 = 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 - %a61 = alloca { ptr, i64, i64 }, align 16 + %a62 = 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 - %a66 = 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 %a70 = alloca { ptr, i64, i64 }, align 16 + %a73 = alloca { ptr, i64, i64 }, align 16 + %a74 = 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 + %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 + %a86 = 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 + %a90 = alloca { ptr, i64, i64 }, align 16 + %a93 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store { ptr, i64, i64 } %p1, ptr %a2 store %S.ast.Type %p2, ptr %a3 @@ -28747,82 +33864,110 @@ 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 %then2788, label %endif2790 -then2788: + br i1 %t12, label %then2969, label %endif2971 +then2969: %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 -endif2790: +endif2971: %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 %then2791, label %endif2793 -then2791: + br i1 %t21, label %then2972, label %endif2974 +then2972: %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.1842, i64 6, i64 0 }, ptr %a27 + store { ptr, i64, i64 } { ptr @.str.1915, 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.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 - store { ptr, i64, i64 } %t33, 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.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 - %t44 = load %S.ast.Type, ptr %a4 - %t45 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t43, %S.ast.Type %t44) - store { ptr, i64, i64 } %t42, ptr %a47 - store { ptr, i64, i64 } %t45, ptr %a48 - call void @finch_str_concat(ptr %a46, ptr %a47, ptr %a48) - %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 -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.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.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 - store { ptr, i64, i64 } %t62, 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.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 - %t73 = load %S.ast.Type, ptr %a4 - %t74 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t72, %S.ast.Type %t73) + store { ptr, i64, i64 } %t25, ptr %a29 + call void @finch_str_drop(ptr %a29) + %t30 = load { ptr, i64, i64 }, ptr %a26 + store { ptr, i64, i64 } %t30, ptr %a32 + store { ptr, i64, i64 } { ptr @.str.1916, i64 1, i64 0 }, ptr %a33 + call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) + store { ptr, i64, i64 } %t30, ptr %a34 + call void @finch_str_drop(ptr %a34) + %t35 = load { ptr, i64, i64 }, ptr %a31 + %t36 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t35, ptr %a38 + store { ptr, i64, i64 } %t36, ptr %a39 + call void @finch_str_concat(ptr %a37, ptr %a38, ptr %a39) + store { ptr, i64, i64 } %t35, ptr %a40 + call void @finch_str_drop(ptr %a40) + %t41 = load { ptr, i64, i64 }, ptr %a37 + store { ptr, i64, i64 } %t41, ptr %a43 + store { ptr, i64, i64 } { ptr @.str.1917, i64 4, i64 0 }, ptr %a44 + call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) + store { ptr, i64, i64 } %t41, ptr %a45 + call void @finch_str_drop(ptr %a45) + %t46 = load { ptr, i64, i64 }, ptr %a42 + %t47 = load ptr, ptr %a1 + %t48 = load %S.ast.Type, ptr %a4 + %t49 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t47, %S.ast.Type %t48) + 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) + store { ptr, i64, i64 } %t46, ptr %a53 + call void @finch_str_drop(ptr %a53) + store { ptr, i64, i64 } %t49, ptr %a54 + call void @finch_str_drop(ptr %a54) + %t55 = load { ptr, i64, i64 }, ptr %a50 + %t56 = call { ptr, i64, i64 } @finch.gen.op(ptr %t22, { ptr, i64, i64 } %t55) + store { ptr, i64, i64 } %t55, ptr %a57 + call void @finch_str_drop(ptr %a57) + ret { ptr, i64, i64 } %t56 +endif2974: + %t58 = load ptr, ptr %a1 + %t59 = load ptr, ptr %a1 + %t60 = load %S.ast.Type, ptr %a3 + %t61 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t59, %S.ast.Type %t60) + store { ptr, i64, i64 } { ptr @.str.1918, i64 8, i64 0 }, ptr %a63 + store { ptr, i64, i64 } %t61, ptr %a64 + call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) + store { ptr, i64, i64 } %t61, ptr %a65 + call void @finch_str_drop(ptr %a65) + %t66 = load { ptr, i64, i64 }, ptr %a62 + store { ptr, i64, i64 } %t66, ptr %a68 + store { ptr, i64, i64 } { ptr @.str.1919, i64 1, i64 0 }, ptr %a69 + call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) + store { ptr, i64, i64 } %t66, ptr %a70 + call void @finch_str_drop(ptr %a70) + %t71 = load { ptr, i64, i64 }, ptr %a67 + %t72 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t71, ptr %a74 + store { ptr, i64, i64 } %t72, ptr %a75 + call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) store { ptr, i64, i64 } %t71, ptr %a76 - store { ptr, i64, i64 } %t74, ptr %a77 - call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a75 - %t79 = call { ptr, i64, i64 } @finch.gen.op(ptr %t51, { ptr, i64, i64 } %t78) - ret { ptr, i64, i64 } %t79 + call void @finch_str_drop(ptr %a76) + %t77 = load { ptr, i64, i64 }, ptr %a73 + store { ptr, i64, i64 } %t77, ptr %a79 + store { ptr, i64, i64 } { ptr @.str.1920, i64 4, i64 0 }, ptr %a80 + call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) + store { ptr, i64, i64 } %t77, ptr %a81 + call void @finch_str_drop(ptr %a81) + %t82 = load { ptr, i64, i64 }, ptr %a78 + %t83 = load ptr, ptr %a1 + %t84 = load %S.ast.Type, ptr %a4 + %t85 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t83, %S.ast.Type %t84) + store { ptr, i64, i64 } %t82, ptr %a87 + store { ptr, i64, i64 } %t85, ptr %a88 + call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) + store { ptr, i64, i64 } %t82, ptr %a89 + call void @finch_str_drop(ptr %a89) + store { ptr, i64, i64 } %t85, ptr %a90 + call void @finch_str_drop(ptr %a90) + %t91 = load { ptr, i64, i64 }, ptr %a86 + %t92 = call { ptr, i64, i64 } @finch.gen.op(ptr %t58, { ptr, i64, i64 } %t91) + store { ptr, i64, i64 } %t91, ptr %a93 + call void @finch_str_drop(ptr %a93) + ret { ptr, i64, i64 } %t92 } define internal { ptr, i64, i64 } @finch.gen.intToFloat(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, %S.ast.Type %p3) { @@ -28834,102 +33979,144 @@ entry: %a11 = 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 + %a14 = alloca { ptr, i64, i64 }, align 16 %a16 = 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 + %a18 = alloca { ptr, i64, i64 }, align 16 + %a19 = 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 %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = 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 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = 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 + %a30 = 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 + %a38 = alloca { ptr, i64, i64 }, align 16 + %a39 = alloca { ptr, i64, i64 }, align 16 %a42 = alloca { ptr, i64, i64 }, 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 + %a48 = 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 + %a52 = 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 + %a59 = 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 + %a63 = 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 + %a71 = 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 + %a75 = alloca { ptr, i64, i64 }, align 16 + %a78 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store { ptr, i64, i64 } %p1, ptr %a2 store %S.ast.Type %p2, ptr %a3 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 %then2794, label %endif2796 -then2794: + br i1 %t6, label %then2975, label %endif2977 +then2975: %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.1848, i64 7, i64 0 }, ptr %a12 + store { ptr, i64, i64 } { ptr @.str.1921, 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.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 - 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 %a25 - 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 - %t29 = load %S.ast.Type, ptr %a4 - %t30 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t28, %S.ast.Type %t29) - store { ptr, i64, i64 } %t27, 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 = call { ptr, i64, i64 } @finch.gen.op(ptr %t7, { ptr, i64, i64 } %t34) - ret { ptr, i64, i64 } %t35 -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.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.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 - store { ptr, i64, i64 } %t47, 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.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 - %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 } %t10, ptr %a14 + call void @finch_str_drop(ptr %a14) + %t15 = load { ptr, i64, i64 }, ptr %a11 + store { ptr, i64, i64 } %t15, ptr %a17 + store { ptr, i64, i64 } { ptr @.str.1922, i64 1, i64 0 }, ptr %a18 + call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) + store { ptr, i64, i64 } %t15, ptr %a19 + call void @finch_str_drop(ptr %a19) + %t20 = load { ptr, i64, i64 }, ptr %a16 + %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) + store { ptr, i64, i64 } %t20, ptr %a25 + call void @finch_str_drop(ptr %a25) + %t26 = load { ptr, i64, i64 }, ptr %a22 + store { ptr, i64, i64 } %t26, ptr %a28 + store { ptr, i64, i64 } { ptr @.str.1923, i64 4, i64 0 }, ptr %a29 + call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) + store { ptr, i64, i64 } %t26, ptr %a30 + call void @finch_str_drop(ptr %a30) + %t31 = load { ptr, i64, i64 }, ptr %a27 + %t32 = load ptr, ptr %a1 + %t33 = load %S.ast.Type, ptr %a4 + %t34 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t32, %S.ast.Type %t33) + store { ptr, i64, i64 } %t31, ptr %a36 + store { ptr, i64, i64 } %t34, ptr %a37 + call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) + store { ptr, i64, i64 } %t31, ptr %a38 + call void @finch_str_drop(ptr %a38) + store { ptr, i64, i64 } %t34, ptr %a39 + call void @finch_str_drop(ptr %a39) + %t40 = load { ptr, i64, i64 }, ptr %a35 + %t41 = call { ptr, i64, i64 } @finch.gen.op(ptr %t7, { ptr, i64, i64 } %t40) + store { ptr, i64, i64 } %t40, ptr %a42 + call void @finch_str_drop(ptr %a42) + ret { ptr, i64, i64 } %t41 +endif2977: + %t43 = load ptr, ptr %a1 + %t44 = load ptr, ptr %a1 + %t45 = load %S.ast.Type, ptr %a3 + %t46 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t44, %S.ast.Type %t45) + store { ptr, i64, i64 } { ptr @.str.1924, i64 7, i64 0 }, ptr %a48 + store { ptr, i64, i64 } %t46, ptr %a49 + call void @finch_str_concat(ptr %a47, ptr %a48, ptr %a49) + store { ptr, i64, i64 } %t46, ptr %a50 + call void @finch_str_drop(ptr %a50) + %t51 = load { ptr, i64, i64 }, ptr %a47 + store { ptr, i64, i64 } %t51, ptr %a53 + store { ptr, i64, i64 } { ptr @.str.1925, i64 1, i64 0 }, ptr %a54 + call void @finch_str_concat(ptr %a52, ptr %a53, ptr %a54) + store { ptr, i64, i64 } %t51, ptr %a55 + call void @finch_str_drop(ptr %a55) + %t56 = load { ptr, i64, i64 }, ptr %a52 + %t57 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t56, ptr %a59 + store { ptr, i64, i64 } %t57, ptr %a60 + call void @finch_str_concat(ptr %a58, ptr %a59, ptr %a60) 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 - %t64 = call { ptr, i64, i64 } @finch.gen.op(ptr %t36, { ptr, i64, i64 } %t63) - ret { ptr, i64, i64 } %t64 + call void @finch_str_drop(ptr %a61) + %t62 = load { ptr, i64, i64 }, ptr %a58 + store { ptr, i64, i64 } %t62, ptr %a64 + store { ptr, i64, i64 } { ptr @.str.1926, i64 4, i64 0 }, ptr %a65 + call void @finch_str_concat(ptr %a63, ptr %a64, ptr %a65) + store { ptr, i64, i64 } %t62, ptr %a66 + call void @finch_str_drop(ptr %a66) + %t67 = load { ptr, i64, i64 }, ptr %a63 + %t68 = load ptr, ptr %a1 + %t69 = load %S.ast.Type, ptr %a4 + %t70 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t68, %S.ast.Type %t69) + store { ptr, i64, i64 } %t67, ptr %a72 + store { ptr, i64, i64 } %t70, ptr %a73 + call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73) + store { ptr, i64, i64 } %t67, ptr %a74 + call void @finch_str_drop(ptr %a74) + store { ptr, i64, i64 } %t70, ptr %a75 + call void @finch_str_drop(ptr %a75) + %t76 = load { ptr, i64, i64 }, ptr %a71 + %t77 = call { ptr, i64, i64 } @finch.gen.op(ptr %t43, { ptr, i64, i64 } %t76) + store { ptr, i64, i64 } %t76, ptr %a78 + call void @finch_str_drop(ptr %a78) + ret { ptr, i64, i64 } %t77 } define internal void @finch.copy.S_gen_Val(ptr %dst, ptr %src) { @@ -28981,69 +34168,85 @@ entry: %a124 = alloca { ptr, i64, i64 }, align 16 %a125 = alloca { ptr, i64, i64 }, align 16 %a126 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 + %a127 = 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 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca %S.ast.Type, align 16 - %a158 = alloca %S.ast.Type, align 16 - %a171 = alloca %S.ast.Type, align 16 - %a172 = alloca %S.ast.Type, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca %S.ast.Type, align 16 - %a199 = alloca %S.ast.Type, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca %S.ast.Type, align 16 - %a229 = alloca %S.ast.Type, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 + %a133 = alloca { ptr, i64, i64 }, align 16 + %a134 = alloca { ptr, i64, i64 }, align 16 + %a135 = alloca { ptr, i64, i64 }, align 16 + %a137 = alloca { ptr, i64, i64 }, align 16 + %a148 = alloca { ptr, i64, i64 }, align 16 + %a149 = alloca { ptr, i64, i64 }, align 16 + %a155 = alloca { ptr, i64, i64 }, align 16 + %a156 = alloca { ptr, i64, i64 }, align 16 + %a157 = alloca { ptr, i64, i64 }, align 16 + %a161 = alloca %S.ast.Type, align 16 + %a162 = alloca %S.ast.Type, align 16 + %a175 = alloca %S.ast.Type, align 16 + %a176 = alloca %S.ast.Type, align 16 + %a182 = alloca { ptr, i64, i64 }, align 16 + %a183 = alloca { ptr, i64, i64 }, align 16 + %a188 = alloca { ptr, i64, i64 }, align 16 + %a189 = alloca { ptr, i64, i64 }, align 16 + %a202 = alloca %S.ast.Type, align 16 + %a203 = alloca %S.ast.Type, align 16 + %a209 = alloca { ptr, i64, i64 }, align 16 + %a210 = alloca { ptr, i64, i64 }, align 16 + %a215 = alloca { ptr, i64, i64 }, align 16 + %a216 = alloca { ptr, i64, i64 }, align 16 + %a232 = alloca %S.ast.Type, align 16 + %a233 = alloca %S.ast.Type, align 16 + %a237 = 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 - %a241 = alloca { ptr, i64, i64 }, align 16 %a243 = 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 + %a247 = 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 %a252 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a262 = 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 + %a260 = alloca { ptr, i64, i64 }, align 16 + %a261 = alloca { ptr, i64, i64 }, align 16 %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a268 = 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 %a273 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 + %a277 = 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 + %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 - %a288 = alloca { ptr, i64, i64 }, align 16 + %a286 = alloca { ptr, i64, i64 }, align 16 %a289 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = 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 + %a302 = 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 %a312 = alloca { ptr, i64, i64 }, align 16 %a313 = 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 - %a327 = alloca %S.gen.Val, align 16 - %a328 = alloca %S.gen.Val, align 16 + %a322 = alloca { ptr, i64, i64 }, align 16 + %a323 = alloca { ptr, i64, i64 }, align 16 + %a330 = alloca { ptr, i64, i64 }, align 16 + %a331 = 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 + %a342 = alloca { ptr, i64, i64 }, align 16 + %a347 = alloca %S.gen.Val, align 16 + %a348 = alloca %S.gen.Val, align 16 store ptr %p0, ptr %a1 store %S.gen.Val %p1, ptr %a2 store %S.ast.Type %p2, ptr %a3 @@ -29053,97 +34256,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 %then2797, label %endif2799 -then2797: + br i1 %t9, label %then2978, label %endif2980 +then2978: %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 -endif2799: +endif2980: %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.1854, i64 4, i64 0 }, ptr %a18 + store { ptr, i64, i64 } { ptr @.str.1927, 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.from2800 -logic.from2800: - br i1 %t20, label %logic.rhs2801, label %logic.end2802 -logic.rhs2801: + br label %logic.from2981 +logic.from2981: + br i1 %t20, label %logic.rhs2982, label %logic.end2983 +logic.rhs2982: %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.1855, i64 3, i64 0 }, ptr %a24 + store { ptr, i64, i64 } { ptr @.str.1928, 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.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 + br label %logic.rend2984 +logic.rend2984: + br label %logic.end2983 +logic.end2983: + %t27 = phi i1 [ false, %logic.from2981 ], [ %t26, %logic.rend2984 ] + br i1 %t27, label %then2985, label %endif2987 +then2985: + %t28 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } { ptr @.str.1929, 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 -endif2806: +endif2987: %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.1857, i64 3, i64 0 }, ptr %a38 + store { ptr, i64, i64 } { ptr @.str.1930, 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.from2807 -logic.from2807: - br i1 %t40, label %logic.rhs2808, label %logic.end2809 -logic.rhs2808: + br label %logic.from2988 +logic.from2988: + br i1 %t40, label %logic.rhs2989, label %logic.end2990 +logic.rhs2989: %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.1858, i64 3, i64 0 }, ptr %a44 + store { ptr, i64, i64 } { ptr @.str.1931, 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.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: + br label %logic.rend2991 +logic.rend2991: + br label %logic.end2990 +logic.end2990: + %t47 = phi i1 [ false, %logic.from2988 ], [ %t46, %logic.rend2991 ] + br label %logic.from2992 +logic.from2992: + br i1 %t47, label %logic.rhs2993, label %logic.end2994 +logic.rhs2993: %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.from2814 -logic.from2814: - br i1 %t52, label %logic.end2816, label %logic.rhs2815 -logic.rhs2815: + br label %logic.from2995 +logic.from2995: + br i1 %t52, label %logic.end2997, label %logic.rhs2996 +logic.rhs2996: %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.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: + br label %logic.rend2998 +logic.rend2998: + br label %logic.end2997 +logic.end2997: + %t57 = phi i1 [ true, %logic.from2995 ], [ %t56, %logic.rend2998 ] + br label %logic.rend2999 +logic.rend2999: + br label %logic.end2994 +logic.end2994: + %t58 = phi i1 [ false, %logic.from2992 ], [ %t57, %logic.rend2999 ] + br i1 %t58, label %then3000, label %endif3002 +then3000: %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 @@ -29156,42 +34359,42 @@ then2819: %t68 = load %S.ast.Type, ptr %a67 %t69 = insertvalue %S.gen.Val %t64, %S.ast.Type %t68, 1 ret %S.gen.Val %t69 -endif2821: +endif3002: %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.from2822 -logic.from2822: - br i1 %t72, label %logic.rhs2823, label %logic.end2824 -logic.rhs2823: + br label %logic.from3003 +logic.from3003: + br i1 %t72, label %logic.rhs3004, label %logic.end3005 +logic.rhs3004: %t73 = load %S.ast.Type, ptr %a3 %t74 = call i1 @finch.gen.isInt(%S.ast.Type %t73) - 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: + br label %logic.rend3006 +logic.rend3006: + br label %logic.end3005 +logic.end3005: + %t75 = phi i1 [ false, %logic.from3003 ], [ %t74, %logic.rend3006 ] + br i1 %t75, label %then3007, label %endif3009 +then3007: %t76 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 3 %t77 = load i1, ptr %t76 - br label %logic.from2829 -logic.from2829: - br i1 %t77, label %logic.rhs2830, label %logic.end2831 -logic.rhs2830: + br label %logic.from3010 +logic.from3010: + br i1 %t77, label %logic.rhs3011, label %logic.end3012 +logic.rhs3011: %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.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: + br label %logic.rend3013 +logic.rend3013: + br label %logic.end3012 +logic.end3012: + %t84 = phi i1 [ false, %logic.from3010 ], [ %t83, %logic.rend3013 ] + br i1 %t84, label %then3014, label %endif3016 +then3014: %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 @@ -29205,13 +34408,13 @@ then2833: %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 -endif2835: +endif3016: %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 %then2836, label %endif2838 -then2836: + br i1 %t100, label %then3017, label %endif3019 +then3017: %t101 = load ptr, ptr %a1 %t102 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 %t103 = load { ptr, i64, i64 }, ptr %t102 @@ -29226,344 +34429,381 @@ then2836: %t112 = load %S.ast.Type, ptr %a111 %t113 = insertvalue %S.gen.Val %t108, %S.ast.Type %t112, 1 ret %S.gen.Val %t113 -endif2838: +endif3019: %t114 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 3 %t115 = load i1, ptr %t114 - br i1 %t115, label %then2839, label %endif2841 -then2839: + br i1 %t115, label %then3020, label %endif3022 +then3020: %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.1859, i64 11, i64 0 }, ptr %a121 + store { ptr, i64, i64 } { ptr @.str.1932, 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.1860, i64 16, i64 0 }, ptr %a126 + store { ptr, i64, i64 } { ptr @.str.1933, 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 - %t129 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t128) - store { ptr, i64, i64 } %t127, 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 - call void @finch.gen.fail(ptr %t116, %S.ast.Node %t117, { ptr, i64, i64 } %t133) - 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.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.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.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.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.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.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 - %t156 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t156, ptr %a157 - call void @finch.copy.S_ast_Type(ptr %a158, ptr %a157) - %t159 = load %S.ast.Type, ptr %a158 - %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 -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 - %t165 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t166 = load %S.ast.Type, ptr %t165 - %t167 = load %S.ast.Type, ptr %a3 - %t168 = call { ptr, i64, i64 } @finch.gen.intToFloat(ptr %t162, { ptr, i64, i64 } %t164, %S.ast.Type %t166, %S.ast.Type %t167) - %t169 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t168, 0 - %t170 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t170, ptr %a171 - call void @finch.copy.S_ast_Type(ptr %a172, ptr %a171) - %t173 = load %S.ast.Type, ptr %a172 - %t174 = insertvalue %S.gen.Val %t169, %S.ast.Type %t173, 1 - ret %S.gen.Val %t174 -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.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.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.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.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 - %t192 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t193 = load %S.ast.Type, ptr %t192 - %t194 = load %S.ast.Type, ptr %a3 - %t195 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t189, { ptr, i64, i64 } %t191, %S.ast.Type %t193, %S.ast.Type %t194) - %t196 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t195, 0 - %t197 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t197, ptr %a198 - call void @finch.copy.S_ast_Type(ptr %a199, ptr %a198) - %t200 = load %S.ast.Type, ptr %a199 - %t201 = insertvalue %S.gen.Val %t196, %S.ast.Type %t200, 1 - ret %S.gen.Val %t201 -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.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.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.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.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.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 - %t222 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t223 = load %S.ast.Type, ptr %t222 - %t224 = load %S.ast.Type, ptr %a3 - %t225 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t219, { ptr, i64, i64 } %t221, %S.ast.Type %t223, %S.ast.Type %t224) - %t226 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t225, 0 - %t227 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t227, ptr %a228 - call void @finch.copy.S_ast_Type(ptr %a229, ptr %a228) - %t230 = load %S.ast.Type, ptr %a229 - %t231 = insertvalue %S.gen.Val %t226, %S.ast.Type %t230, 1 - ret %S.gen.Val %t231 -endif2873: - %t232 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t232, ptr %a234 - 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 - %t238 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t237) - store { ptr, i64, i64 } %t236, 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.1868, i64 14, i64 0 }, ptr %a245 + store { ptr, i64, i64 } %t123, ptr %a127 + call void @finch_str_drop(ptr %a127) + %t128 = load { ptr, i64, i64 }, ptr %a124 + %t129 = load %S.ast.Type, ptr %a3 + %t130 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t129) + store { ptr, i64, i64 } %t128, ptr %a132 + store { ptr, i64, i64 } %t130, ptr %a133 + call void @finch_str_concat(ptr %a131, ptr %a132, ptr %a133) + store { ptr, i64, i64 } %t128, ptr %a134 + call void @finch_str_drop(ptr %a134) + store { ptr, i64, i64 } %t130, ptr %a135 + call void @finch_str_drop(ptr %a135) + %t136 = load { ptr, i64, i64 }, ptr %a131 + call void @finch.gen.fail(ptr %t116, %S.ast.Node %t117, { ptr, i64, i64 } %t136) + store { ptr, i64, i64 } %t136, ptr %a137 + call void @finch_str_drop(ptr %a137) + br label %endif3022 +endif3022: + br label %endif3009 +endif3009: + %t138 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 + %t139 = load %S.ast.Type, ptr %t138 + %t140 = call i1 @finch.gen.isInt(%S.ast.Type %t139) + br label %logic.from3023 +logic.from3023: + br i1 %t140, label %logic.rhs3024, label %logic.end3025 +logic.rhs3024: + %t141 = load %S.ast.Type, ptr %a3 + %t142 = call i1 @finch.gen.isFloat(%S.ast.Type %t141) + br label %logic.rend3026 +logic.rend3026: + br label %logic.end3025 +logic.end3025: + %t143 = phi i1 [ false, %logic.from3023 ], [ %t142, %logic.rend3026 ] + br i1 %t143, label %then3027, label %endif3029 +then3027: + %t144 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 3 + %t145 = load i1, ptr %t144 + br label %logic.from3030 +logic.from3030: + br i1 %t145, label %logic.rhs3031, label %logic.end3032 +logic.rhs3031: + %t146 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 + %t147 = load { ptr, i64, i64 }, ptr %t146 + store { ptr, i64, i64 } %t147, ptr %a148 + store { ptr, i64, i64 } { ptr @.str.1934, i64 5, i64 0 }, ptr %a149 + %t150 = call i32 @finch_str_eq(ptr %a148, ptr %a149) + %t151 = icmp ne i32 %t150, 0 + br label %logic.rend3033 +logic.rend3033: + br label %logic.end3032 +logic.end3032: + %t152 = phi i1 [ false, %logic.from3030 ], [ %t151, %logic.rend3033 ] + br i1 %t152, label %then3034, label %endif3036 +then3034: + %t153 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 + %t154 = load { ptr, i64, i64 }, ptr %t153 + store { ptr, i64, i64 } %t154, ptr %a156 + store { ptr, i64, i64 } { ptr @.str.1935, i64 2, i64 0 }, ptr %a157 + call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) + %t158 = load { ptr, i64, i64 }, ptr %a155 + %t159 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t158, 0 + %t160 = load %S.ast.Type, ptr %a3 + store %S.ast.Type %t160, ptr %a161 + call void @finch.copy.S_ast_Type(ptr %a162, ptr %a161) + %t163 = load %S.ast.Type, ptr %a162 + %t164 = insertvalue %S.gen.Val %t159, %S.ast.Type %t163, 1 + %t165 = insertvalue %S.gen.Val %t164, i1 true, 3 + ret %S.gen.Val %t165 +endif3036: + %t166 = load ptr, ptr %a1 + %t167 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 + %t168 = load { ptr, i64, i64 }, ptr %t167 + %t169 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 + %t170 = load %S.ast.Type, ptr %t169 + %t171 = load %S.ast.Type, ptr %a3 + %t172 = call { ptr, i64, i64 } @finch.gen.intToFloat(ptr %t166, { ptr, i64, i64 } %t168, %S.ast.Type %t170, %S.ast.Type %t171) + %t173 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t172, 0 + %t174 = load %S.ast.Type, ptr %a3 + store %S.ast.Type %t174, ptr %a175 + call void @finch.copy.S_ast_Type(ptr %a176, ptr %a175) + %t177 = load %S.ast.Type, ptr %a176 + %t178 = insertvalue %S.gen.Val %t173, %S.ast.Type %t177, 1 + ret %S.gen.Val %t178 +endif3029: + %t179 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 + %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.1936, i64 3, i64 0 }, ptr %a183 + %t184 = call i32 @finch_str_eq(ptr %a182, ptr %a183) + %t185 = icmp ne i32 %t184, 0 + br label %logic.from3037 +logic.from3037: + br i1 %t185, label %logic.rhs3038, label %logic.end3039 +logic.rhs3038: + %t186 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 + %t187 = load { ptr, i64, i64 }, ptr %t186 + store { ptr, i64, i64 } %t187, ptr %a188 + store { ptr, i64, i64 } { ptr @.str.1937, i64 5, i64 0 }, ptr %a189 + %t190 = call i32 @finch_str_eq(ptr %a188, ptr %a189) + %t191 = icmp ne i32 %t190, 0 + br label %logic.rend3040 +logic.rend3040: + br label %logic.end3039 +logic.end3039: + %t192 = phi i1 [ false, %logic.from3037 ], [ %t191, %logic.rend3040 ] + br i1 %t192, label %then3041, label %endif3043 +then3041: + %t193 = load ptr, ptr %a1 + %t194 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 + %t195 = load { ptr, i64, i64 }, ptr %t194 + %t196 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 + %t197 = load %S.ast.Type, ptr %t196 + %t198 = load %S.ast.Type, ptr %a3 + %t199 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t193, { ptr, i64, i64 } %t195, %S.ast.Type %t197, %S.ast.Type %t198) + %t200 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t199, 0 + %t201 = load %S.ast.Type, ptr %a3 + store %S.ast.Type %t201, ptr %a202 + call void @finch.copy.S_ast_Type(ptr %a203, ptr %a202) + %t204 = load %S.ast.Type, ptr %a203 + %t205 = insertvalue %S.gen.Val %t200, %S.ast.Type %t204, 1 + ret %S.gen.Val %t205 +endif3043: + %t206 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 + %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.1938, i64 5, i64 0 }, ptr %a210 + %t211 = call i32 @finch_str_eq(ptr %a209, ptr %a210) + %t212 = icmp ne i32 %t211, 0 + br label %logic.from3044 +logic.from3044: + br i1 %t212, label %logic.rhs3045, label %logic.end3046 +logic.rhs3045: + %t213 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 + %t214 = load { ptr, i64, i64 }, ptr %t213 + store { ptr, i64, i64 } %t214, ptr %a215 + store { ptr, i64, i64 } { ptr @.str.1939, i64 3, i64 0 }, ptr %a216 + %t217 = call i32 @finch_str_eq(ptr %a215, ptr %a216) + %t218 = icmp ne i32 %t217, 0 + br label %logic.rend3047 +logic.rend3047: + br label %logic.end3046 +logic.end3046: + %t219 = phi i1 [ false, %logic.from3044 ], [ %t218, %logic.rend3047 ] + br label %logic.from3048 +logic.from3048: + br i1 %t219, label %logic.rhs3049, label %logic.end3050 +logic.rhs3049: + %t220 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 3 + %t221 = load i1, ptr %t220 + br label %logic.rend3051 +logic.rend3051: + br label %logic.end3050 +logic.end3050: + %t222 = phi i1 [ false, %logic.from3048 ], [ %t221, %logic.rend3051 ] + br i1 %t222, label %then3052, label %endif3054 +then3052: + %t223 = load ptr, ptr %a1 + %t224 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 + %t225 = load { ptr, i64, i64 }, ptr %t224 + %t226 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 + %t227 = load %S.ast.Type, ptr %t226 + %t228 = load %S.ast.Type, ptr %a3 + %t229 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t223, { ptr, i64, i64 } %t225, %S.ast.Type %t227, %S.ast.Type %t228) + %t230 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t229, 0 + %t231 = load %S.ast.Type, ptr %a3 + store %S.ast.Type %t231, ptr %a232 + call void @finch.copy.S_ast_Type(ptr %a233, ptr %a232) + %t234 = load %S.ast.Type, ptr %a233 + %t235 = insertvalue %S.gen.Val %t230, %S.ast.Type %t234, 1 + ret %S.gen.Val %t235 +endif3054: + %t236 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } %t236, ptr %a238 + store { ptr, i64, i64 } { ptr @.str.1940, i64 9, i64 0 }, ptr %a239 + call void @finch_str_concat(ptr %a237, ptr %a238, ptr %a239) + %t240 = load { ptr, i64, i64 }, ptr %a237 + %t241 = load %S.ast.Type, ptr %a3 + %t242 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t241) + store { ptr, i64, i64 } %t240, ptr %a244 + store { ptr, i64, i64 } %t242, 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 - %t248 = load %S.ast.Type, ptr %t247 - %t249 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t248) - store { ptr, i64, i64 } %t246, 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 %a254 - %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.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.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.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 - %t267 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t266) - store { ptr, i64, i64 } %t265, 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.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.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.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 } %t240, ptr %a246 + call void @finch_str_drop(ptr %a246) + store { ptr, i64, i64 } %t242, ptr %a247 + call void @finch_str_drop(ptr %a247) + %t248 = load { ptr, i64, i64 }, ptr %a243 + store { ptr, i64, i64 } %t248, ptr %a250 + store { ptr, i64, i64 } { ptr @.str.1941, i64 14, i64 0 }, ptr %a251 + call void @finch_str_concat(ptr %a249, ptr %a250, ptr %a251) + store { ptr, i64, i64 } %t248, ptr %a252 + call void @finch_str_drop(ptr %a252) + %t253 = load { ptr, i64, i64 }, ptr %a249 + %t254 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 + %t255 = load %S.ast.Type, ptr %t254 + %t256 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t255) + store { ptr, i64, i64 } %t253, ptr %a258 + store { ptr, i64, i64 } %t256, ptr %a259 + call void @finch_str_concat(ptr %a257, ptr %a258, ptr %a259) + store { ptr, i64, i64 } %t253, ptr %a260 + call void @finch_str_drop(ptr %a260) + store { ptr, i64, i64 } %t256, ptr %a261 + call void @finch_str_drop(ptr %a261) + %t262 = load { ptr, i64, i64 }, ptr %a257 + store { ptr, i64, i64 } %t262, ptr %a263 + %t264 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 + %t265 = load %S.ast.Type, ptr %t264 + %t266 = call i1 @finch.gen.isNumber(%S.ast.Type %t265) + br label %logic.from3055 +logic.from3055: + br i1 %t266, label %logic.rhs3056, label %logic.end3057 +logic.rhs3056: + %t267 = load %S.ast.Type, ptr %a3 + %t268 = call i1 @finch.gen.isNumber(%S.ast.Type %t267) + br label %logic.rend3058 +logic.rend3058: + br label %logic.end3057 +logic.end3057: + %t269 = phi i1 [ false, %logic.from3055 ], [ %t268, %logic.rend3058 ] + br i1 %t269, label %then3059, label %endif3061 +then3059: + %t270 = load { ptr, i64, i64 }, ptr %a263 + store { ptr, i64, i64 } %t270, ptr %a272 + store { ptr, i64, i64 } { ptr @.str.1942, i64 6, i64 0 }, ptr %a273 + call void @finch_str_concat(ptr %a271, ptr %a272, ptr %a273) + %t274 = load { ptr, i64, i64 }, ptr %a271 + %t275 = load %S.ast.Type, ptr %a3 + %t276 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t275) + store { ptr, i64, i64 } %t274, ptr %a278 + store { ptr, i64, i64 } %t276, ptr %a279 + call void @finch_str_concat(ptr %a277, ptr %a278, ptr %a279) + store { ptr, i64, i64 } %t274, ptr %a280 + call void @finch_str_drop(ptr %a280) + store { ptr, i64, i64 } %t276, ptr %a281 + call void @finch_str_drop(ptr %a281) + %t282 = load { ptr, i64, i64 }, ptr %a277 store { ptr, i64, i64 } %t282, ptr %a284 - store { ptr, i64, i64 } { ptr @.str.1871, i64 26, i64 0 }, ptr %a285 + store { ptr, i64, i64 } { ptr @.str.1943, i64 16, 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 %endif2887 -endif2887: - %t287 = load { ptr, i64, i64 }, ptr %a254 - store { ptr, i64, i64 } %t287, ptr %a289 - 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 %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.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.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.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.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.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 + store { ptr, i64, i64 } %t282, ptr %a286 + call void @finch_str_drop(ptr %a286) + %t287 = load { ptr, i64, i64 }, ptr %a283 + %t288 = load { ptr, i64, i64 }, ptr %a263 + store { ptr, i64, i64 } %t287, ptr %a263 + store { ptr, i64, i64 } %t288, ptr %a289 + call void @finch_str_drop(ptr %a289) + %t290 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 + %t291 = load %S.ast.Type, ptr %t290 + %t292 = call i1 @finch.gen.isFloat(%S.ast.Type %t291) + br label %logic.from3062 +logic.from3062: + br i1 %t292, label %logic.rhs3063, label %logic.end3064 +logic.rhs3063: + %t293 = load %S.ast.Type, ptr %a3 + %t294 = call i1 @finch.gen.isInt(%S.ast.Type %t293) + br label %logic.rend3065 +logic.rend3065: + br label %logic.end3064 +logic.end3064: + %t295 = phi i1 [ false, %logic.from3062 ], [ %t294, %logic.rend3065 ] + br i1 %t295, label %then3066, label %endif3068 +then3066: + %t296 = load { ptr, i64, i64 }, ptr %a263 + store { ptr, i64, i64 } %t296, ptr %a298 + store { ptr, i64, i64 } { ptr @.str.1944, i64 26, i64 0 }, ptr %a299 + call void @finch_str_concat(ptr %a297, ptr %a298, ptr %a299) + %t300 = load { ptr, i64, i64 }, ptr %a297 + %t301 = load { ptr, i64, i64 }, ptr %a263 + store { ptr, i64, i64 } %t300, ptr %a263 + store { ptr, i64, i64 } %t301, ptr %a302 + call void @finch_str_drop(ptr %a302) + br label %endif3068 +endif3068: + %t303 = load { ptr, i64, i64 }, ptr %a263 + store { ptr, i64, i64 } %t303, ptr %a305 + store { ptr, i64, i64 } { ptr @.str.1945, i64 1, i64 0 }, ptr %a306 + call void @finch_str_concat(ptr %a304, ptr %a305, ptr %a306) + %t307 = load { ptr, i64, i64 }, ptr %a304 + %t308 = load { ptr, i64, i64 }, ptr %a263 + store { ptr, i64, i64 } %t307, ptr %a263 + store { ptr, i64, i64 } %t308, ptr %a309 + call void @finch_str_drop(ptr %a309) + br label %endif3061 +endif3061: + %t310 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 %t311 = load { ptr, i64, i64 }, ptr %t310 store { ptr, i64, i64 } %t311, ptr %a312 - store { ptr, i64, i64 } { ptr @.str.1875, i64 4, i64 0 }, ptr %a313 + store { ptr, i64, i64 } { ptr @.str.1946, i64 3, i64 0 }, ptr %a313 %t314 = call i32 @finch_str_eq(ptr %a312, ptr %a313) %t315 = icmp ne i32 %t314, 0 - 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.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 %endif2902 -endif2902: - %t323 = load ptr, ptr %a1 - %t324 = load %S.ast.Node, ptr %a4 - %t325 = load { ptr, i64, i64 }, ptr %a254 - call void @finch.gen.fail(ptr %t323, %S.ast.Node %t324, { ptr, i64, i64 } %t325) - %t326 = load %S.gen.Val, ptr %a2 - store %S.gen.Val %t326, ptr %a327 - call void @finch.copy.S_gen_Val(ptr %a328, ptr %a327) - %t329 = load %S.gen.Val, ptr %a328 - ret %S.gen.Val %t329 + br label %logic.from3069 +logic.from3069: + br i1 %t315, label %logic.rhs3070, label %logic.end3071 +logic.rhs3070: + %t316 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 + %t317 = load %S.ast.Type, ptr %t316 + %t318 = call i1 @finch.gen.isNumber(%S.ast.Type %t317) + br label %logic.from3072 +logic.from3072: + br i1 %t318, label %logic.end3074, label %logic.rhs3073 +logic.rhs3073: + %t319 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 + %t320 = getelementptr inbounds %S.ast.Type, ptr %t319, i32 0, i32 0 + %t321 = load { ptr, i64, i64 }, ptr %t320 + store { ptr, i64, i64 } %t321, ptr %a322 + store { ptr, i64, i64 } { ptr @.str.1947, i64 4, i64 0 }, ptr %a323 + %t324 = call i32 @finch_str_eq(ptr %a322, ptr %a323) + %t325 = icmp ne i32 %t324, 0 + br label %logic.rend3075 +logic.rend3075: + br label %logic.end3074 +logic.end3074: + %t326 = phi i1 [ true, %logic.from3072 ], [ %t325, %logic.rend3075 ] + br label %logic.from3076 +logic.from3076: + br i1 %t326, label %logic.end3078, label %logic.rhs3077 +logic.rhs3077: + %t327 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 + %t328 = getelementptr inbounds %S.ast.Type, ptr %t327, i32 0, i32 0 + %t329 = load { ptr, i64, i64 }, ptr %t328 + store { ptr, i64, i64 } %t329, ptr %a330 + store { ptr, i64, i64 } { ptr @.str.1948, i64 4, i64 0 }, ptr %a331 + %t332 = call i32 @finch_str_eq(ptr %a330, ptr %a331) + %t333 = icmp ne i32 %t332, 0 + br label %logic.rend3079 +logic.rend3079: + br label %logic.end3078 +logic.end3078: + %t334 = phi i1 [ true, %logic.from3076 ], [ %t333, %logic.rend3079 ] + br label %logic.rend3080 +logic.rend3080: + br label %logic.end3071 +logic.end3071: + %t335 = phi i1 [ false, %logic.from3069 ], [ %t334, %logic.rend3080 ] + br i1 %t335, label %then3081, label %endif3083 +then3081: + %t336 = load { ptr, i64, i64 }, ptr %a263 + store { ptr, i64, i64 } %t336, ptr %a338 + store { ptr, i64, i64 } { ptr @.str.1949, i64 34, i64 0 }, ptr %a339 + call void @finch_str_concat(ptr %a337, ptr %a338, ptr %a339) + %t340 = load { ptr, i64, i64 }, ptr %a337 + %t341 = load { ptr, i64, i64 }, ptr %a263 + store { ptr, i64, i64 } %t340, ptr %a263 + store { ptr, i64, i64 } %t341, ptr %a342 + call void @finch_str_drop(ptr %a342) + br label %endif3083 +endif3083: + %t343 = load ptr, ptr %a1 + %t344 = load %S.ast.Node, ptr %a4 + %t345 = load { ptr, i64, i64 }, ptr %a263 + call void @finch.gen.fail(ptr %t343, %S.ast.Node %t344, { ptr, i64, i64 } %t345) + %t346 = load %S.gen.Val, ptr %a2 + store %S.gen.Val %t346, ptr %a347 + call void @finch.copy.S_gen_Val(ptr %a348, ptr %a347) + %t349 = load %S.gen.Val, ptr %a348 + call void @finch_str_drop(ptr %a263) + ret %S.gen.Val %t349 } define internal i64 @finch.gen.lookup(ptr %p0, { ptr, i64, i64 } %p1) { @@ -29579,28 +34819,28 @@ entry: store { ptr, i64, i64 } %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic2903, label %ok2904 -panic2903: - call void @finch_panic(ptr @.str.1877, i64 1148, ptr @.str.1878) + br i1 %t4, label %panic3084, label %ok3085 +panic3084: + call void @finch_panic(ptr @.str.1950, i64 1283, ptr @.str.1951) unreachable -ok2904: +ok3085: %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.cond2905 -for.cond2905: + br label %for.cond3086 +for.cond3086: %t9 = load i64, ptr %a8 %t10 = icmp slt i64 %t9, %t7 - br i1 %t10, label %for.body2906, label %for.end2908 -for.body2906: + br i1 %t10, label %for.body3087, label %for.end3089 +for.body3087: %t11 = load ptr, ptr %a1 %t12 = icmp eq ptr %t11, null - br i1 %t12, label %panic2909, label %ok2910 -panic2909: - call void @finch_panic(ptr @.str.1879, i64 1149, ptr @.str.1880) + br i1 %t12, label %panic3090, label %ok3091 +panic3090: + call void @finch_panic(ptr @.str.1952, i64 1284, ptr @.str.1953) unreachable -ok2910: +ok3091: %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 @@ -29610,50 +34850,50 @@ ok2910: store i64 %t18, ptr %a19 %t20 = load ptr, ptr %a1 %t21 = icmp eq ptr %t20, null - br i1 %t21, label %panic2911, label %ok2912 -panic2911: - call void @finch_panic(ptr @.str.1881, i64 1150, ptr @.str.1882) + br i1 %t21, label %panic3092, label %ok3093 +panic3092: + call void @finch_panic(ptr @.str.1954, i64 1285, ptr @.str.1955) unreachable -ok2912: +ok3093: %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 %range2913, label %inrange2914 -range2913: - call void @finch_panic_index(ptr @.str.1883, i64 1150, i64 %t23, i64 %t25) + br i1 %t26, label %range3094, label %inrange3095 +range3094: + call void @finch_panic_index(ptr @.str.1956, i64 1285, i64 %t23, i64 %t25) unreachable -inrange2914: +inrange3095: %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.cond2915 -for.cond2915: + br label %for.cond3096 +for.cond3096: %t33 = load i64, ptr %a32 %t34 = icmp slt i64 %t33, %t31 - br i1 %t34, label %for.body2916, label %for.end2918 -for.body2916: + br i1 %t34, label %for.body3097, label %for.end3099 +for.body3097: %t35 = load ptr, ptr %a1 %t36 = icmp eq ptr %t35, null - br i1 %t36, label %panic2919, label %ok2920 -panic2919: - call void @finch_panic(ptr @.str.1884, i64 1151, ptr @.str.1885) + br i1 %t36, label %panic3100, label %ok3101 +panic3100: + call void @finch_panic(ptr @.str.1957, i64 1286, ptr @.str.1958) unreachable -ok2920: +ok3101: %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 %range2921, label %inrange2922 -range2921: - call void @finch_panic_index(ptr @.str.1886, i64 1151, i64 %t38, i64 %t40) + br i1 %t41, label %range3102, label %inrange3103 +range3102: + call void @finch_panic_index(ptr @.str.1959, i64 1286, i64 %t38, i64 %t40) unreachable -inrange2922: +inrange3103: %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 @@ -29661,11 +34901,11 @@ inrange2922: %t46 = load { ptr, i64, i64 }, ptr %t44 %t47 = extractvalue { ptr, i64, i64 } %t46, 1 %t48 = icmp uge i64 %t45, %t47 - br i1 %t48, label %range2923, label %inrange2924 -range2923: - call void @finch_panic_index(ptr @.str.1887, i64 1151, i64 %t45, i64 %t47) + br i1 %t48, label %range3104, label %inrange3105 +range3104: + call void @finch_panic_index(ptr @.str.1960, i64 1286, i64 %t45, i64 %t47) unreachable -inrange2924: +inrange3105: %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 @@ -29675,38 +34915,38 @@ inrange2924: 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 %then2925, label %endif2927 -then2925: + br i1 %t57, label %then3106, label %endif3108 +then3106: %t58 = load ptr, ptr %a1 %t59 = icmp eq ptr %t58, null - br i1 %t59, label %panic2928, label %ok2929 -panic2928: - call void @finch_panic(ptr @.str.1888, i64 1152, ptr @.str.1889) + br i1 %t59, label %panic3109, label %ok3110 +panic3109: + call void @finch_panic(ptr @.str.1961, i64 1287, ptr @.str.1962) unreachable -ok2929: - %t60 = getelementptr inbounds %S.gen.Gen, ptr %t58, i32 0, i32 42 +ok3110: + %t60 = getelementptr inbounds %S.gen.Gen, ptr %t58, i32 0, i32 43 %t61 = load i1, ptr %t60 - br label %logic.from2930 -logic.from2930: - br i1 %t61, label %logic.rhs2931, label %logic.end2932 -logic.rhs2931: + br label %logic.from3111 +logic.from3111: + br i1 %t61, label %logic.rhs3112, label %logic.end3113 +logic.rhs3112: %t62 = load ptr, ptr %a1 %t63 = icmp eq ptr %t62, null - br i1 %t63, label %panic2933, label %ok2934 -panic2933: - call void @finch_panic(ptr @.str.1890, i64 1152, ptr @.str.1891) + br i1 %t63, label %panic3114, label %ok3115 +panic3114: + call void @finch_panic(ptr @.str.1963, i64 1287, ptr @.str.1964) unreachable -ok2934: +ok3115: %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 %range2935, label %inrange2936 -range2935: - call void @finch_panic_index(ptr @.str.1892, i64 1152, i64 %t65, i64 %t67) + br i1 %t68, label %range3116, label %inrange3117 +range3116: + call void @finch_panic_index(ptr @.str.1965, i64 1287, i64 %t65, i64 %t67) unreachable -inrange2936: +inrange3117: %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 @@ -29714,54 +34954,54 @@ inrange2936: %t73 = load { ptr, i64, i64 }, ptr %t71 %t74 = extractvalue { ptr, i64, i64 } %t73, 1 %t75 = icmp uge i64 %t72, %t74 - br i1 %t75, label %range2937, label %inrange2938 -range2937: - call void @finch_panic_index(ptr @.str.1893, i64 1152, i64 %t72, i64 %t74) + br i1 %t75, label %range3118, label %inrange3119 +range3118: + call void @finch_panic_index(ptr @.str.1966, i64 1287, i64 %t72, i64 %t74) unreachable -inrange2938: +inrange3119: %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 %panic2939, label %ok2940 -panic2939: - call void @finch_panic(ptr @.str.1894, i64 1152, ptr @.str.1895) + br i1 %t81, label %panic3120, label %ok3121 +panic3120: + call void @finch_panic(ptr @.str.1967, i64 1287, ptr @.str.1968) unreachable -ok2940: - %t82 = getelementptr inbounds %S.gen.Gen, ptr %t80, i32 0, i32 43 +ok3121: + %t82 = getelementptr inbounds %S.gen.Gen, ptr %t80, i32 0, i32 44 %t83 = load i64, ptr %t82 %t84 = icmp sge i64 %t79, %t83 - 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: + br label %logic.rend3122 +logic.rend3122: + br label %logic.end3113 +logic.end3113: + %t85 = phi i1 [ false, %logic.from3111 ], [ %t84, %logic.rend3122 ] + br i1 %t85, label %then3123, label %endif3125 +then3123: + br label %for.step3098 +endif3125: %t86 = load i64, ptr %a19 %t87 = mul i64 %t86, 100000 %t88 = load i64, ptr %a32 %t89 = add i64 %t87, %t88 ret i64 %t89 -endif2927: - br label %for.step2917 -for.step2917: +endif3108: + br label %for.step3098 +for.step3098: %t90 = load i64, ptr %a32 %t91 = add i64 %t90, 1 store i64 %t91, ptr %a32 - br label %for.cond2915 -for.end2918: - br label %for.step2907 -for.step2907: + br label %for.cond3096 +for.end3099: + br label %for.step3088 +for.step3088: %t92 = load i64, ptr %a8 %t93 = add i64 %t92, 1 store i64 %t93, ptr %a8 - br label %for.cond2905 -for.end2908: + br label %for.cond3086 +for.end3089: ret i64 -1 } @@ -29779,8 +35019,8 @@ 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 + %t8 = getelementptr inbounds %S.gen.Var, ptr %dst, i32 0, i32 7 + %t9 = getelementptr inbounds %S.gen.Var, ptr %src, i32 0, i32 7 call void @finch_str_copy(ptr %t8, ptr %t9) ret void } @@ -29795,22 +35035,22 @@ entry: store i64 %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic2945, label %ok2946 -panic2945: - call void @finch_panic(ptr @.str.1896, i64 1163, ptr @.str.1897) + br i1 %t4, label %panic3126, label %ok3127 +panic3126: + call void @finch_panic(ptr @.str.1969, i64 1298, ptr @.str.1970) unreachable -ok2946: +ok3127: %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 %range2947, label %inrange2948 -range2947: - call void @finch_panic_index(ptr @.str.1898, i64 1163, i64 %t7, i64 %t9) + br i1 %t10, label %range3128, label %inrange3129 +range3128: + call void @finch_panic_index(ptr @.str.1971, i64 1298, i64 %t7, i64 %t9) unreachable -inrange2948: +inrange3129: %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 @@ -29819,11 +35059,11 @@ inrange2948: %t16 = load { ptr, i64, i64 }, ptr %t13 %t17 = extractvalue { ptr, i64, i64 } %t16, 1 %t18 = icmp uge i64 %t15, %t17 - br i1 %t18, label %range2949, label %inrange2950 -range2949: - call void @finch_panic_index(ptr @.str.1899, i64 1163, i64 %t15, i64 %t17) + br i1 %t18, label %range3130, label %inrange3131 +range3130: + call void @finch_panic_index(ptr @.str.1972, i64 1298, i64 %t15, i64 %t17) unreachable -inrange2950: +inrange3131: %t19 = extractvalue { ptr, i64, i64 } %t16, 0 %t20 = getelementptr inbounds %S.gen.Var, ptr %t19, i64 %t15 %t21 = load %S.gen.Var, ptr %t20 @@ -29848,38 +35088,38 @@ entry: store { ptr, i64, i64 } %p2, ptr %a3 %t4 = load ptr, ptr %a1 %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic2951, label %ok2952 -panic2951: - call void @finch_panic(ptr @.str.1900, i64 1167, ptr @.str.1901) + br i1 %t5, label %panic3132, label %ok3133 +panic3132: + call void @finch_panic(ptr @.str.1973, i64 1302, ptr @.str.1974) unreachable -ok2952: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 14 +ok3133: + %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.cond2953 -for.cond2953: + br label %for.cond3134 +for.cond3134: %t10 = load i64, ptr %a9 %t11 = icmp slt i64 %t10, %t8 - br i1 %t11, label %for.body2954, label %for.end2956 -for.body2954: + br i1 %t11, label %for.body3135, label %for.end3137 +for.body3135: %t12 = load ptr, ptr %a1 %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic2957, label %ok2958 -panic2957: - call void @finch_panic(ptr @.str.1902, i64 1168, ptr @.str.1903) + br i1 %t13, label %panic3138, label %ok3139 +panic3138: + call void @finch_panic(ptr @.str.1975, i64 1303, ptr @.str.1976) unreachable -ok2958: - %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 14 +ok3139: + %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 %range2959, label %inrange2960 -range2959: - call void @finch_panic_index(ptr @.str.1904, i64 1168, i64 %t15, i64 %t17) + br i1 %t18, label %range3140, label %inrange3141 +range3140: + call void @finch_panic_index(ptr @.str.1977, i64 1303, i64 %t15, i64 %t17) unreachable -inrange2960: +inrange3141: %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 @@ -29889,27 +35129,27 @@ inrange2960: 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.from2961 -logic.from2961: - br i1 %t27, label %logic.rhs2962, label %logic.end2963 -logic.rhs2962: + br label %logic.from3142 +logic.from3142: + br i1 %t27, label %logic.rhs3143, label %logic.end3144 +logic.rhs3143: %t28 = load ptr, ptr %a1 %t29 = icmp eq ptr %t28, null - br i1 %t29, label %panic2964, label %ok2965 -panic2964: - call void @finch_panic(ptr @.str.1905, i64 1168, ptr @.str.1906) + br i1 %t29, label %panic3145, label %ok3146 +panic3145: + call void @finch_panic(ptr @.str.1978, i64 1303, ptr @.str.1979) unreachable -ok2965: - %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 14 +ok3146: + %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 %range2966, label %inrange2967 -range2966: - call void @finch_panic_index(ptr @.str.1907, i64 1168, i64 %t31, i64 %t33) + br i1 %t34, label %range3147, label %inrange3148 +range3147: + call void @finch_panic_index(ptr @.str.1980, i64 1303, i64 %t31, i64 %t33) unreachable -inrange2967: +inrange3148: %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 @@ -29919,55 +35159,55 @@ inrange2967: 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.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: + br label %logic.rend3149 +logic.rend3149: + br label %logic.end3144 +logic.end3144: + %t44 = phi i1 [ false, %logic.from3142 ], [ %t43, %logic.rend3149 ] + br label %logic.from3150 +logic.from3150: + br i1 %t44, label %logic.rhs3151, label %logic.end3152 +logic.rhs3151: %t45 = load ptr, ptr %a1 %t46 = icmp eq ptr %t45, null - br i1 %t46, label %panic2972, label %ok2973 -panic2972: - call void @finch_panic(ptr @.str.1908, i64 1168, ptr @.str.1909) + br i1 %t46, label %panic3153, label %ok3154 +panic3153: + call void @finch_panic(ptr @.str.1981, i64 1303, ptr @.str.1982) unreachable -ok2973: - %t47 = getelementptr inbounds %S.gen.Gen, ptr %t45, i32 0, i32 14 +ok3154: + %t47 = getelementptr inbounds %S.gen.Gen, ptr %t45, i32 0, i32 15 %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 %range2974, label %inrange2975 -range2974: - call void @finch_panic_index(ptr @.str.1910, i64 1168, i64 %t48, i64 %t50) + br i1 %t51, label %range3155, label %inrange3156 +range3155: + call void @finch_panic_index(ptr @.str.1983, i64 1303, i64 %t48, i64 %t50) unreachable -inrange2975: +inrange3156: %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.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: + br label %logic.rend3157 +logic.rend3157: + br label %logic.end3152 +logic.end3152: + %t58 = phi i1 [ false, %logic.from3150 ], [ %t57, %logic.rend3157 ] + br i1 %t58, label %then3158, label %endif3160 +then3158: %t59 = load i64, ptr %a9 ret i64 %t59 -endif2979: - br label %for.step2955 -for.step2955: +endif3160: + br label %for.step3136 +for.step3136: %t60 = load i64, ptr %a9 %t61 = add i64 %t60, 1 store i64 %t61, ptr %a9 - br label %for.cond2953 -for.end2956: + br label %for.cond3134 +for.end3137: ret i64 -1 } @@ -29990,38 +35230,38 @@ entry: store { ptr, i64, i64 } %p3, ptr %a4 %t5 = load ptr, ptr %a1 %t6 = icmp eq ptr %t5, null - br i1 %t6, label %panic2980, label %ok2981 -panic2980: - call void @finch_panic(ptr @.str.1911, i64 1176, ptr @.str.1912) + br i1 %t6, label %panic3161, label %ok3162 +panic3161: + call void @finch_panic(ptr @.str.1984, i64 1311, ptr @.str.1985) unreachable -ok2981: - %t7 = getelementptr inbounds %S.gen.Gen, ptr %t5, i32 0, i32 14 +ok3162: + %t7 = getelementptr inbounds %S.gen.Gen, ptr %t5, i32 0, i32 15 %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.cond2982 -for.cond2982: + br label %for.cond3163 +for.cond3163: %t11 = load i64, ptr %a10 %t12 = icmp slt i64 %t11, %t9 - br i1 %t12, label %for.body2983, label %for.end2985 -for.body2983: + br i1 %t12, label %for.body3164, label %for.end3166 +for.body3164: %t13 = load ptr, ptr %a1 %t14 = icmp eq ptr %t13, null - br i1 %t14, label %panic2986, label %ok2987 -panic2986: - call void @finch_panic(ptr @.str.1913, i64 1177, ptr @.str.1914) + br i1 %t14, label %panic3167, label %ok3168 +panic3167: + call void @finch_panic(ptr @.str.1986, i64 1312, ptr @.str.1987) unreachable -ok2987: - %t15 = getelementptr inbounds %S.gen.Gen, ptr %t13, i32 0, i32 14 +ok3168: + %t15 = getelementptr inbounds %S.gen.Gen, ptr %t13, i32 0, i32 15 %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 %range2988, label %inrange2989 -range2988: - call void @finch_panic_index(ptr @.str.1915, i64 1177, i64 %t16, i64 %t18) + br i1 %t19, label %range3169, label %inrange3170 +range3169: + call void @finch_panic_index(ptr @.str.1988, i64 1312, i64 %t16, i64 %t18) unreachable -inrange2989: +inrange3170: %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 @@ -30031,27 +35271,27 @@ inrange2989: 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.from2990 -logic.from2990: - br i1 %t28, label %logic.rhs2991, label %logic.end2992 -logic.rhs2991: + br label %logic.from3171 +logic.from3171: + br i1 %t28, label %logic.rhs3172, label %logic.end3173 +logic.rhs3172: %t29 = load ptr, ptr %a1 %t30 = icmp eq ptr %t29, null - br i1 %t30, label %panic2993, label %ok2994 -panic2993: - call void @finch_panic(ptr @.str.1916, i64 1177, ptr @.str.1917) + br i1 %t30, label %panic3174, label %ok3175 +panic3174: + call void @finch_panic(ptr @.str.1989, i64 1312, ptr @.str.1990) unreachable -ok2994: - %t31 = getelementptr inbounds %S.gen.Gen, ptr %t29, i32 0, i32 14 +ok3175: + %t31 = getelementptr inbounds %S.gen.Gen, ptr %t29, i32 0, i32 15 %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 %range2995, label %inrange2996 -range2995: - call void @finch_panic_index(ptr @.str.1918, i64 1177, i64 %t32, i64 %t34) + br i1 %t35, label %range3176, label %inrange3177 +range3176: + call void @finch_panic_index(ptr @.str.1991, i64 1312, i64 %t32, i64 %t34) unreachable -inrange2996: +inrange3177: %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 @@ -30061,32 +35301,32 @@ inrange2996: 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.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: + br label %logic.rend3178 +logic.rend3178: + br label %logic.end3173 +logic.end3173: + %t45 = phi i1 [ false, %logic.from3171 ], [ %t44, %logic.rend3178 ] + br label %logic.from3179 +logic.from3179: + br i1 %t45, label %logic.rhs3180, label %logic.end3181 +logic.rhs3180: %t46 = load ptr, ptr %a1 %t47 = icmp eq ptr %t46, null - br i1 %t47, label %panic3001, label %ok3002 -panic3001: - call void @finch_panic(ptr @.str.1919, i64 1177, ptr @.str.1920) + br i1 %t47, label %panic3182, label %ok3183 +panic3182: + call void @finch_panic(ptr @.str.1992, i64 1312, ptr @.str.1993) unreachable -ok3002: - %t48 = getelementptr inbounds %S.gen.Gen, ptr %t46, i32 0, i32 14 +ok3183: + %t48 = getelementptr inbounds %S.gen.Gen, ptr %t46, i32 0, i32 15 %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 %range3003, label %inrange3004 -range3003: - call void @finch_panic_index(ptr @.str.1921, i64 1177, i64 %t49, i64 %t51) + br i1 %t52, label %range3184, label %inrange3185 +range3184: + call void @finch_panic_index(ptr @.str.1994, i64 1312, i64 %t49, i64 %t51) unreachable -inrange3004: +inrange3185: %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 @@ -30096,23 +35336,23 @@ inrange3004: 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.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: + br label %logic.rend3186 +logic.rend3186: + br label %logic.end3181 +logic.end3181: + %t62 = phi i1 [ false, %logic.from3179 ], [ %t61, %logic.rend3186 ] + br i1 %t62, label %then3187, label %endif3189 +then3187: %t63 = load i64, ptr %a10 ret i64 %t63 -endif3008: - br label %for.step2984 -for.step2984: +endif3189: + br label %for.step3165 +for.step3165: %t64 = load i64, ptr %a10 %t65 = add i64 %t64, 1 store i64 %t65, ptr %a10 - br label %for.cond2982 -for.end2985: + br label %for.cond3163 +for.end3166: ret i64 -1 } @@ -30128,61 +35368,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.1922, i64 5, i64 0 }, ptr %t4 + store { ptr, i64, i64 } { ptr @.str.1995, i64 5, i64 0 }, ptr %t4 %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 - store { ptr, i64, i64 } { ptr @.str.1923, i64 4, i64 0 }, ptr %t5 + store { ptr, i64, i64 } { ptr @.str.1996, i64 4, i64 0 }, ptr %t5 %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2 - store { ptr, i64, i64 } { ptr @.str.1924, i64 3, i64 0 }, ptr %t6 + store { ptr, i64, i64 } { ptr @.str.1997, i64 3, i64 0 }, ptr %t6 %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 3 - store { ptr, i64, i64 } { ptr @.str.1925, i64 3, i64 0 }, ptr %t7 + store { ptr, i64, i64 } { ptr @.str.1998, i64 3, i64 0 }, ptr %t7 %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4 - store { ptr, i64, i64 } { ptr @.str.1926, i64 4, i64 0 }, ptr %t8 + store { ptr, i64, i64 } { ptr @.str.1999, i64 4, i64 0 }, ptr %t8 %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 5 - store { ptr, i64, i64 } { ptr @.str.1927, i64 5, i64 0 }, ptr %t9 + store { ptr, i64, i64 } { ptr @.str.2000, i64 5, i64 0 }, ptr %t9 %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 6 - store { ptr, i64, i64 } { ptr @.str.1928, i64 4, i64 0 }, ptr %t10 + store { ptr, i64, i64 } { ptr @.str.2001, i64 4, i64 0 }, ptr %t10 %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 7 - store { ptr, i64, i64 } { ptr @.str.1929, i64 9, i64 0 }, ptr %t11 + store { ptr, i64, i64 } { ptr @.str.2002, i64 9, i64 0 }, ptr %t11 %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 8 - store { ptr, i64, i64 } { ptr @.str.1930, i64 10, i64 0 }, ptr %t12 + store { ptr, i64, i64 } { ptr @.str.2003, i64 10, i64 0 }, ptr %t12 %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 9 - store { ptr, i64, i64 } { ptr @.str.1931, i64 11, i64 0 }, ptr %t13 + store { ptr, i64, i64 } { ptr @.str.2004, i64 11, i64 0 }, ptr %t13 %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 10 - store { ptr, i64, i64 } { ptr @.str.1932, i64 5, i64 0 }, ptr %t14 + store { ptr, i64, i64 } { ptr @.str.2005, i64 5, i64 0 }, ptr %t14 %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 11 - store { ptr, i64, i64 } { ptr @.str.1933, i64 4, i64 0 }, ptr %t15 + store { ptr, i64, i64 } { ptr @.str.2006, i64 4, i64 0 }, ptr %t15 %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 12 - store { ptr, i64, i64 } { ptr @.str.1934, i64 5, i64 0 }, ptr %t16 + store { ptr, i64, i64 } { ptr @.str.2007, i64 5, i64 0 }, ptr %t16 %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 13 - store { ptr, i64, i64 } { ptr @.str.1935, i64 3, i64 0 }, ptr %t17 + store { ptr, i64, i64 } { ptr @.str.2008, i64 3, i64 0 }, ptr %t17 %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 14 - store { ptr, i64, i64 } { ptr @.str.1936, i64 4, i64 0 }, ptr %t18 + store { ptr, i64, i64 } { ptr @.str.2009, i64 4, i64 0 }, ptr %t18 %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 15 - store { ptr, i64, i64 } { ptr @.str.1937, i64 3, i64 0 }, ptr %t19 + store { ptr, i64, i64 } { ptr @.str.2010, i64 3, i64 0 }, ptr %t19 %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 16 - store { ptr, i64, i64 } { ptr @.str.1938, i64 11, i64 0 }, ptr %t20 + store { ptr, i64, i64 } { ptr @.str.2011, i64 11, i64 0 }, ptr %t20 %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 17 - store { ptr, i64, i64 } { ptr @.str.1939, i64 2, i64 0 }, ptr %t21 + store { ptr, i64, i64 } { ptr @.str.2012, i64 2, i64 0 }, ptr %t21 %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 18 - store { ptr, i64, i64 } { ptr @.str.1940, i64 3, i64 0 }, ptr %t22 + store { ptr, i64, i64 } { ptr @.str.2013, i64 3, i64 0 }, ptr %t22 %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 19 - store { ptr, i64, i64 } { ptr @.str.1941, i64 3, i64 0 }, ptr %t23 + store { ptr, i64, i64 } { ptr @.str.2014, i64 3, i64 0 }, ptr %t23 %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 20 - store { ptr, i64, i64 } { ptr @.str.1942, i64 3, i64 0 }, ptr %t24 + store { ptr, i64, i64 } { ptr @.str.2015, i64 3, i64 0 }, ptr %t24 %t25 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 21 - store { ptr, i64, i64 } { ptr @.str.1943, i64 2, i64 0 }, ptr %t25 + store { ptr, i64, i64 } { ptr @.str.2016, i64 2, i64 0 }, ptr %t25 %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 22 - store { ptr, i64, i64 } { ptr @.str.1944, i64 3, i64 0 }, ptr %t26 + store { ptr, i64, i64 } { ptr @.str.2017, i64 3, i64 0 }, ptr %t26 %t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 23 - store { ptr, i64, i64 } { ptr @.str.1945, i64 3, i64 0 }, ptr %t27 + store { ptr, i64, i64 } { ptr @.str.2018, i64 3, i64 0 }, ptr %t27 %t28 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 24 - store { ptr, i64, i64 } { ptr @.str.1946, i64 3, i64 0 }, ptr %t28 + store { ptr, i64, i64 } { ptr @.str.2019, i64 3, i64 0 }, ptr %t28 %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 25 - store { ptr, i64, i64 } { ptr @.str.1947, i64 3, i64 0 }, ptr %t29 + store { ptr, i64, i64 } { ptr @.str.2020, i64 3, i64 0 }, ptr %t29 %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 26 - store { ptr, i64, i64 } { ptr @.str.1948, i64 3, i64 0 }, ptr %t30 + store { ptr, i64, i64 } { ptr @.str.2021, i64 3, i64 0 }, ptr %t30 %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 27 - store { ptr, i64, i64 } { ptr @.str.1949, i64 5, i64 0 }, ptr %t31 + store { ptr, i64, i64 } { ptr @.str.2022, 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 @@ -30193,33 +35433,34 @@ entry: %t39 = load i64, ptr %t36 %t40 = load ptr, ptr %a35 store i64 0, ptr %a41 - br label %find.cond3009 -find.cond3009: + br label %find.cond3190 +find.cond3190: %t42 = load i64, ptr %a41 %t43 = icmp slt i64 %t42, %t39 - br i1 %t43, label %find.body3010, label %find.end3013 -find.body3010: + br i1 %t43, label %find.body3191, label %find.end3194 +find.body3191: %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.hit3011, label %find.next3012 -find.hit3011: + br i1 %t49, label %find.hit3192, label %find.next3193 +find.hit3192: store i64 %t42, ptr %a38 - br label %find.end3013 -find.next3012: + br label %find.end3194 +find.next3193: %t50 = add i64 %t42, 1 store i64 %t50, ptr %a41 - br label %find.cond3009 -find.end3013: + br label %find.cond3190 +find.end3194: %t51 = load i64, ptr %a38 %t52 = icmp sge i64 %t51, 0 + call void @finch.drop.arr_str(ptr %a35) ret i1 %t52 } -define internal { ptr, i64, i64 } @finch.gen.addVar(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3, { ptr, i64, i64 } %p4, i1 %p5) { +define internal { ptr, i64, i64 } @finch.gen.addVar(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3, { ptr, i64, i64 } %p4, i1 %p5, i1 %p6) { entry: %a1 = alloca ptr, align 16 %a2 = alloca %S.ast.Node, align 16 @@ -30227,85 +35468,75 @@ entry: %a4 = alloca %S.ast.Type, align 16 %a5 = alloca { ptr, i64, i64 }, align 16 %a6 = alloca i1, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 + %a7 = alloca i1, align 16 %a13 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 + %a14 = 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 + %a23 = alloca { ptr, i64, i64 }, align 16 %a25 = alloca { ptr, i64, i64 }, align 16 %a26 = 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 + %a27 = alloca { ptr, i64, i64 }, align 16 + %a28 = alloca { ptr, i64, i64 }, align 16 + %a30 = alloca { ptr, i64, i64 }, align 16 + %a42 = 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 - %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 + %a46 = 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 %a57 = alloca { ptr, i64, i64 }, align 16 %a58 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca %S.ast.Type, align 16 - %a95 = alloca %S.ast.Type, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = 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 + %a59 = alloca { ptr, i64, i64 }, align 16 + %a61 = alloca { ptr, i64, i64 }, align 16 + %a62 = alloca { ptr, i64, i64 }, align 16 + %a63 = alloca { ptr, i64, i64 }, align 16 + %a64 = alloca { ptr, i64, i64 }, align 16 + %a66 = alloca { ptr, i64, i64 }, align 16 + %a72 = alloca { ptr, i64, i64 }, align 16 + %a73 = alloca { ptr, i64, i64 }, align 16 + %a80 = alloca { ptr, i64, i64 }, align 16 + %a87 = alloca i64, align 16 + %a93 = alloca i1, align 16 + %a136 = alloca { ptr, i64, i64 }, align 16 + %a137 = alloca { ptr, i64, i64 }, align 16 + %a141 = alloca %S.ast.Type, align 16 + %a142 = alloca %S.ast.Type, align 16 + %a146 = alloca { ptr, i64, i64 }, align 16 + %a147 = alloca { ptr, i64, i64 }, align 16 + %a170 = alloca { ptr, i64, i64 }, align 16 + %a171 = 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 + %a200 = alloca { ptr, i64, i64 }, align 16 + %a205 = alloca { ptr, i64, i64 }, align 16 + %a206 = 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 + %a237 = alloca %S.ast.Node, align 16 + %a238 = alloca %S.ast.Node, align 16 + %a240 = alloca %S.ast.Node, align 16 + %a246 = alloca { ptr, i64, i64 }, align 16 + %a247 = 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 + %a253 = 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 + %a260 = alloca { ptr, i64, i64 }, align 16 + %a261 = alloca { ptr, i64, i64 }, align 16 + %a263 = 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 %a279 = 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 @@ -30313,497 +35544,678 @@ entry: %a293 = 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 + %a297 = 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 + %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 - %a313 = alloca { ptr, i64, i64 }, align 16 + %a312 = 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 + %a316 = alloca { ptr, i64, i64 }, align 16 + %a317 = alloca { ptr, i64, i64 }, align 16 + %a330 = 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 + %a338 = alloca { ptr, i64, i64 }, align 16 + %a342 = 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 + %a347 = alloca { ptr, i64, i64 }, align 16 + %a348 = 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 + %a357 = 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 + %a377 = alloca { ptr, i64, i64 }, align 16 + %a378 = alloca { ptr, i64, i64 }, align 16 + %a379 = alloca { ptr, i64, i64 }, align 16 + %a380 = 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 + %a385 = alloca { ptr, i64, i64 }, align 16 + %a388 = 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 + %a393 = alloca { ptr, i64, i64 }, align 16 + %a394 = alloca { ptr, i64, i64 }, align 16 + %a395 = alloca { ptr, i64, i64 }, align 16 + %a396 = alloca { ptr, i64, i64 }, align 16 + %a398 = 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 store %S.ast.Type %p3, ptr %a4 store { ptr, i64, i64 } %p4, ptr %a5 store i1 %p5, ptr %a6 - %t7 = load ptr, ptr %a1 - %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.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.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.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.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.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 %endif3020 -endif3020: - %t28 = load ptr, ptr %a1 - %t29 = load ptr, ptr %a1 - %t30 = icmp eq ptr %t29, null - br i1 %t30, label %panic3021, label %ok3022 -panic3021: - call void @finch_panic(ptr @.str.1953, i64 1195, ptr @.str.1954) + store i1 %p6, ptr %a7 + %t8 = load ptr, ptr %a1 + %t9 = load { ptr, i64, i64 }, ptr %a3 + %t10 = call i64 @finch.gen.lookup(ptr %t8, { ptr, i64, i64 } %t9) + %t11 = icmp sge i64 %t10, 0 + br label %logic.from3195 +logic.from3195: + br i1 %t11, label %logic.rhs3196, label %logic.end3197 +logic.rhs3196: + %t12 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t12, ptr %a13 + store { ptr, i64, i64 } { ptr @.str.2023, i64 3, i64 0 }, ptr %a14 + %t15 = call i32 @finch_str_eq(ptr %a13, ptr %a14) + %t16 = icmp eq i32 %t15, 0 + br label %logic.rend3198 +logic.rend3198: + br label %logic.end3197 +logic.end3197: + %t17 = phi i1 [ false, %logic.from3195 ], [ %t16, %logic.rend3198 ] + br i1 %t17, label %then3199, label %endif3201 +then3199: + %t18 = load ptr, ptr %a1 + %t19 = load %S.ast.Node, ptr %a2 + %t20 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } { ptr @.str.2024, i64 18, 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.2025, i64 21, i64 0 }, ptr %a27 + call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) + store { ptr, i64, i64 } %t24, ptr %a28 + call void @finch_str_drop(ptr %a28) + %t29 = load { ptr, i64, i64 }, ptr %a25 + call void @finch.gen.fail(ptr %t18, %S.ast.Node %t19, { ptr, i64, i64 } %t29) + store { ptr, i64, i64 } %t29, ptr %a30 + call void @finch_str_drop(ptr %a30) + br label %endif3201 +endif3201: + %t31 = load ptr, ptr %a1 + %t32 = load ptr, ptr %a1 + %t33 = icmp eq ptr %t32, null + br i1 %t33, label %panic3202, label %ok3203 +panic3202: + call void @finch_panic(ptr @.str.2026, i64 1330, ptr @.str.2027) unreachable -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 %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.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.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 %endif3025 -endif3025: - %t47 = load { ptr, i64, i64 }, ptr %a3 - %t48 = call i1 @finch.gen.isBuiltin({ ptr, i64, i64 } %t47) - 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.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.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 %endif3028 -endif3028: - %t60 = load ptr, ptr %a1 - %t61 = load ptr, ptr %a1 - %t62 = load %S.ast.Type, ptr %a4 - %t63 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t61, %S.ast.Type %t62) - %t64 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t60, { ptr, i64, i64 } %t63) - store { ptr, i64, i64 } %t64, ptr %a65 - %t66 = load ptr, ptr %a1 +ok3203: + %t34 = getelementptr inbounds %S.gen.Gen, ptr %t32, i32 0, i32 14 + %t35 = load { ptr, i64, i64 }, ptr %t34 + %t36 = load { ptr, i64, i64 }, ptr %a3 + %t37 = call i64 @finch.gen.findFn(ptr %t31, { ptr, i64, i64 } %t35, { ptr, i64, i64 } %t36) + %t38 = icmp sge i64 %t37, 0 + br i1 %t38, label %then3204, label %endif3206 +then3204: + %t39 = load ptr, ptr %a1 + %t40 = load %S.ast.Node, ptr %a2 + %t41 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } { ptr @.str.2028, i64 1, i64 0 }, ptr %a43 + store { ptr, i64, i64 } %t41, 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 %a47 + store { ptr, i64, i64 } { ptr @.str.2029, i64 35, i64 0 }, ptr %a48 + call void @finch_str_concat(ptr %a46, ptr %a47, ptr %a48) + store { ptr, i64, i64 } %t45, ptr %a49 + call void @finch_str_drop(ptr %a49) + %t50 = load { ptr, i64, i64 }, ptr %a46 + call void @finch.gen.fail(ptr %t39, %S.ast.Node %t40, { ptr, i64, i64 } %t50) + store { ptr, i64, i64 } %t50, ptr %a51 + call void @finch_str_drop(ptr %a51) + br label %endif3206 +endif3206: + %t52 = load { ptr, i64, i64 }, ptr %a3 + %t53 = call i1 @finch.gen.isBuiltin({ ptr, i64, i64 } %t52) + br i1 %t53, label %then3207, label %endif3209 +then3207: + %t54 = load ptr, ptr %a1 + %t55 = load %S.ast.Node, ptr %a2 + %t56 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } { ptr @.str.2030, i64 1, i64 0 }, ptr %a58 + store { ptr, i64, i64 } %t56, ptr %a59 + 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.2031, i64 38, i64 0 }, ptr %a63 + call void @finch_str_concat(ptr %a61, ptr %a62, ptr %a63) + store { ptr, i64, i64 } %t60, ptr %a64 + call void @finch_str_drop(ptr %a64) + %t65 = load { ptr, i64, i64 }, ptr %a61 + call void @finch.gen.fail(ptr %t54, %S.ast.Node %t55, { ptr, i64, i64 } %t65) + store { ptr, i64, i64 } %t65, ptr %a66 + call void @finch_str_drop(ptr %a66) + br label %endif3209 +endif3209: %t67 = load ptr, ptr %a1 - %t68 = load %S.ast.Type, ptr %a4 - %t69 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t67, %S.ast.Type %t68) - %t70 = load { ptr, i64, i64 }, ptr %a5 - %t71 = load { ptr, i64, i64 }, ptr %a65 - 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 %panic3029, label %ok3030 -panic3029: - call void @finch_panic(ptr @.str.1959, i64 1203, ptr @.str.1960) - unreachable -ok3030: - %t74 = getelementptr inbounds %S.gen.Gen, ptr %t72, i32 0, i32 10 + %t68 = load ptr, ptr %a1 + %t69 = load %S.ast.Type, ptr %a4 + %t70 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t68, %S.ast.Type %t69) + %t71 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t67, { ptr, i64, i64 } %t70) + store { ptr, i64, i64 } %t70, ptr %a72 + call void @finch_str_drop(ptr %a72) + store { ptr, i64, i64 } %t71, ptr %a73 + %t74 = load ptr, ptr %a1 %t75 = load ptr, ptr %a1 - %t76 = icmp eq ptr %t75, null - br i1 %t76, label %panic3031, label %ok3032 -panic3031: - call void @finch_panic(ptr @.str.1961, i64 1203, ptr @.str.1962) + %t76 = load %S.ast.Type, ptr %a4 + %t77 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t75, %S.ast.Type %t76) + %t78 = load { ptr, i64, i64 }, ptr %a5 + %t79 = load { ptr, i64, i64 }, ptr %a73 + call void @finch.gen.store(ptr %t74, { ptr, i64, i64 } %t77, { ptr, i64, i64 } %t78, { ptr, i64, i64 } %t79) + store { ptr, i64, i64 } %t77, ptr %a80 + call void @finch_str_drop(ptr %a80) + %t81 = load ptr, ptr %a1 + %t82 = icmp eq ptr %t81, null + br i1 %t82, label %panic3210, label %ok3211 +panic3210: + call void @finch_panic(ptr @.str.2032, i64 1338, ptr @.str.2033) unreachable -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 - %t80 = sub i64 %t79, 1 - %t81 = load { ptr, i64, i64 }, ptr %t74 - %t82 = extractvalue { ptr, i64, i64 } %t81, 1 - %t83 = icmp uge i64 %t80, %t82 - br i1 %t83, label %range3033, label %inrange3034 -range3033: - call void @finch_panic_index(ptr @.str.1963, i64 1203, i64 %t80, i64 %t82) +ok3211: + %t83 = getelementptr inbounds %S.gen.Gen, ptr %t81, i32 0, i32 10 + %t84 = getelementptr inbounds { ptr, i64, i64 }, ptr %t83, i32 0, i32 1 + %t85 = load i64, ptr %t84 + %t86 = sub i64 %t85, 1 + store i64 %t86, ptr %a87 + %t88 = load i1, ptr %a7 + br label %logic.from3212 +logic.from3212: + br i1 %t88, label %logic.rhs3213, label %logic.end3214 +logic.rhs3213: + %t89 = load ptr, ptr %a1 + %t90 = load %S.ast.Type, ptr %a4 + %t91 = call i1 @finch.gen.owning(ptr %t89, %S.ast.Type %t90) + br label %logic.rend3215 +logic.rend3215: + br label %logic.end3214 +logic.end3214: + %t92 = phi i1 [ false, %logic.from3212 ], [ %t91, %logic.rend3215 ] + store i1 %t92, ptr %a93 + %t94 = load i1, ptr %a93 + br i1 %t94, label %then3216, label %endif3218 +then3216: + %t95 = load ptr, ptr %a1 + %t96 = icmp eq ptr %t95, null + br i1 %t96, label %panic3219, label %ok3220 +panic3219: + call void @finch_panic(ptr @.str.2034, i64 1341, ptr @.str.2035) unreachable -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 - %t87 = getelementptr inbounds { ptr, i64, i64 }, ptr %t86, i32 0, i32 1 - %t88 = load { ptr, i64, i64 }, ptr %a3 - 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.gen.Var zeroinitializer, { ptr, i64, i64 } %t91, 0 - %t93 = load %S.ast.Type, ptr %a4 - store %S.ast.Type %t93, ptr %a94 - call void @finch.copy.S_ast_Type(ptr %a95, ptr %a94) - %t96 = load %S.ast.Type, ptr %a95 - %t97 = insertvalue %S.gen.Var %t92, %S.ast.Type %t96, 1 - %t98 = load { ptr, i64, i64 }, ptr %a65 - store { ptr, i64, i64 } %t98, ptr %a99 - call void @finch_str_copy(ptr %a100, ptr %a99) - %t101 = load { ptr, i64, i64 }, ptr %a100 - %t102 = insertvalue %S.gen.Var %t97, { ptr, i64, i64 } %t101, 2 - %t103 = load i1, ptr %a6 - %t104 = insertvalue %S.gen.Var %t102, i1 %t103, 3 - %t105 = load ptr, ptr %a1 - %t106 = icmp eq ptr %t105, null - br i1 %t106, label %panic3035, label %ok3036 -panic3035: - call void @finch_panic(ptr @.str.1964, i64 1203, ptr @.str.1965) +ok3220: + %t97 = getelementptr inbounds %S.gen.Gen, ptr %t95, i32 0, i32 10 + %t98 = load i64, ptr %a87 + %t99 = load { ptr, i64, i64 }, ptr %t97 + %t100 = extractvalue { ptr, i64, i64 } %t99, 1 + %t101 = icmp uge i64 %t98, %t100 + br i1 %t101, label %range3221, label %inrange3222 +range3221: + call void @finch_panic_index(ptr @.str.2036, i64 1341, i64 %t98, i64 %t100) unreachable -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 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) +inrange3222: + %t102 = extractvalue { ptr, i64, i64 } %t99, 0 + %t103 = getelementptr inbounds %S.gen.Scope, ptr %t102, i64 %t98 + %t104 = getelementptr inbounds %S.gen.Scope, ptr %t103, i32 0, i32 3 + %t105 = getelementptr inbounds { ptr, i64, i64 }, ptr %t104, i32 0, i32 1 + %t106 = insertvalue %S.gen.Cleanup zeroinitializer, i1 false, 0 + %t107 = load ptr, ptr %a1 + %t108 = icmp eq ptr %t107, null + br i1 %t108, label %panic3223, label %ok3224 +panic3223: + call void @finch_panic(ptr @.str.2037, i64 1341, ptr @.str.2038) unreachable -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) +ok3224: + %t109 = getelementptr inbounds %S.gen.Gen, ptr %t107, i32 0, i32 10 + %t110 = load i64, ptr %a87 + %t111 = load { ptr, i64, i64 }, ptr %t109 + %t112 = extractvalue { ptr, i64, i64 } %t111, 1 + %t113 = icmp uge i64 %t110, %t112 + br i1 %t113, label %range3225, label %inrange3226 +range3225: + call void @finch_panic_index(ptr @.str.2039, i64 1341, i64 %t110, i64 %t112) 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) +inrange3226: + %t114 = extractvalue { ptr, i64, i64 } %t111, 0 + %t115 = getelementptr inbounds %S.gen.Scope, ptr %t114, i64 %t110 + %t116 = getelementptr inbounds %S.gen.Scope, ptr %t115, i32 0, i32 0 + %t117 = getelementptr inbounds { ptr, i64, i64 }, ptr %t116, i32 0, i32 1 + %t118 = load i64, ptr %t117 + %t119 = insertvalue %S.gen.Cleanup %t106, i64 %t118, 1 + %t120 = load i64, ptr %t105 + %t121 = add i64 %t120, 1 + call void @finch_arr_reserve(ptr %t104, i64 %t121, i64 ptrtoint (ptr getelementptr (%S.gen.Cleanup, ptr null, i32 1) to i64)) + %t122 = load ptr, ptr %t104 + %t123 = getelementptr inbounds %S.gen.Cleanup, ptr %t122, i64 %t120 + store %S.gen.Cleanup %t119, ptr %t123 + store i64 %t121, ptr %t105 + br label %endif3218 +endif3218: + %t124 = load ptr, ptr %a1 + %t125 = icmp eq ptr %t124, null + br i1 %t125, label %panic3227, label %ok3228 +panic3227: + call void @finch_panic(ptr @.str.2040, i64 1343, ptr @.str.2041) 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) +ok3228: + %t126 = getelementptr inbounds %S.gen.Gen, ptr %t124, i32 0, i32 10 + %t127 = load i64, ptr %a87 + %t128 = load { ptr, i64, i64 }, ptr %t126 + %t129 = extractvalue { ptr, i64, i64 } %t128, 1 + %t130 = icmp uge i64 %t127, %t129 + br i1 %t130, label %range3229, label %inrange3230 +range3229: + call void @finch_panic_index(ptr @.str.2042, i64 1343, i64 %t127, i64 %t129) 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) +inrange3230: + %t131 = extractvalue { ptr, i64, i64 } %t128, 0 + %t132 = getelementptr inbounds %S.gen.Scope, ptr %t131, i64 %t127 + %t133 = getelementptr inbounds %S.gen.Scope, ptr %t132, i32 0, i32 0 + %t134 = getelementptr inbounds { ptr, i64, i64 }, ptr %t133, i32 0, i32 1 + %t135 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t135, ptr %a136 + call void @finch_str_copy(ptr %a137, ptr %a136) + %t138 = load { ptr, i64, i64 }, ptr %a137 + %t139 = insertvalue %S.gen.Var zeroinitializer, { ptr, i64, i64 } %t138, 0 + %t140 = load %S.ast.Type, ptr %a4 + store %S.ast.Type %t140, ptr %a141 + call void @finch.copy.S_ast_Type(ptr %a142, ptr %a141) + %t143 = load %S.ast.Type, ptr %a142 + %t144 = insertvalue %S.gen.Var %t139, %S.ast.Type %t143, 1 + %t145 = load { ptr, i64, i64 }, ptr %a73 + store { ptr, i64, i64 } %t145, ptr %a146 + call void @finch_str_copy(ptr %a147, ptr %a146) + %t148 = load { ptr, i64, i64 }, ptr %a147 + %t149 = insertvalue %S.gen.Var %t144, { ptr, i64, i64 } %t148, 2 + %t150 = load i1, ptr %a6 + %t151 = insertvalue %S.gen.Var %t149, i1 %t150, 3 + %t152 = load ptr, ptr %a1 + %t153 = icmp eq ptr %t152, null + br i1 %t153, label %panic3231, label %ok3232 +panic3231: + call void @finch_panic(ptr @.str.2043, i64 1343, ptr @.str.2044) 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) +ok3232: + %t154 = getelementptr inbounds %S.gen.Gen, ptr %t152, i32 0, i32 24 + %t155 = load i64, ptr %t154 + %t156 = insertvalue %S.gen.Var %t151, i64 %t155, 4 + %t157 = load i1, ptr %a93 + %t158 = insertvalue %S.gen.Var %t156, i1 %t157, 5 + %t159 = load ptr, ptr %a1 + %t160 = icmp eq ptr %t159, null + br i1 %t160, label %panic3233, label %ok3234 +panic3233: + call void @finch_panic(ptr @.str.2045, i64 1343, ptr @.str.2046) 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) +ok3234: + %t161 = getelementptr inbounds %S.gen.Gen, ptr %t159, i32 0, i32 1 + %t162 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 + %t163 = load i64, ptr %t162 + %t164 = load { ptr, i64, i64 }, ptr %t161 + %t165 = extractvalue { ptr, i64, i64 } %t164, 1 + %t166 = icmp uge i64 %t163, %t165 + br i1 %t166, label %range3235, label %inrange3236 +range3235: + call void @finch_panic_index(ptr @.str.2047, i64 1343, i64 %t163, i64 %t165) 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) +inrange3236: + %t167 = extractvalue { ptr, i64, i64 } %t164, 0 + %t168 = getelementptr inbounds { ptr, i64, i64 }, ptr %t167, i64 %t163 + %t169 = load { ptr, i64, i64 }, ptr %t168 + store { ptr, i64, i64 } %t169, ptr %a170 + call void @finch_str_copy(ptr %a171, ptr %a170) + %t172 = load { ptr, i64, i64 }, ptr %a171 + %t173 = insertvalue %S.gen.Var %t158, { ptr, i64, i64 } %t172, 7 + %t174 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 + %t175 = load i64, ptr %t174 + %t176 = insertvalue %S.gen.Var %t173, i64 %t175, 8 + %t177 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 + %t178 = load i64, ptr %t177 + %t179 = insertvalue %S.gen.Var %t176, i64 %t178, 9 + %t180 = load i64, ptr %t134 + %t181 = add i64 %t180, 1 + call void @finch_arr_reserve(ptr %t133, i64 %t181, i64 ptrtoint (ptr getelementptr (%S.gen.Var, ptr null, i32 1) to i64)) + %t182 = load ptr, ptr %t133 + %t183 = getelementptr inbounds %S.gen.Var, ptr %t182, i64 %t180 + store %S.gen.Var %t179, ptr %t183 + store i64 %t181, ptr %t134 + %t184 = load ptr, ptr %a1 + %t185 = icmp eq ptr %t184, null + br i1 %t185, label %panic3237, label %ok3238 +panic3237: + call void @finch_panic(ptr @.str.2048, i64 1344, ptr @.str.2049) 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) +ok3238: + %t186 = getelementptr inbounds %S.gen.Gen, ptr %t184, i32 0, i32 24 + %t187 = load i64, ptr %t186 + %t188 = add i64 %t187, 1 + store i64 %t188, ptr %t186 + %t189 = load ptr, ptr %a1 + %t190 = load %S.ast.Node, ptr %a2 + %t191 = load { ptr, i64, i64 }, ptr %a3 + %t192 = load %S.ast.Type, ptr %a4 + %t193 = load { ptr, i64, i64 }, ptr %a73 + call void @finch.gen.dbgVariable(ptr %t189, %S.ast.Node %t190, { ptr, i64, i64 } %t191, %S.ast.Type %t192, { ptr, i64, i64 } %t193) + %t194 = load ptr, ptr %a1 + %t195 = icmp eq ptr %t194, null + br i1 %t195, label %panic3239, label %ok3240 +panic3239: + call void @finch_panic(ptr @.str.2050, i64 1346, ptr @.str.2051) 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) +ok3240: + %t196 = getelementptr inbounds %S.gen.Gen, ptr %t194, i32 0, i32 27 + %t197 = load i1, ptr %t196 + br label %logic.from3241 +logic.from3241: + br i1 %t197, label %logic.rhs3242, label %logic.end3243 +logic.rhs3242: + %t198 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t198, ptr %a199 + store { ptr, i64, i64 } { ptr @.str.2052, i64 3, i64 0 }, ptr %a200 + %t201 = call i32 @finch_str_eq(ptr %a199, ptr %a200) + %t202 = icmp eq i32 %t201, 0 + br label %logic.rend3244 +logic.rend3244: + br label %logic.end3243 +logic.end3243: + %t203 = phi i1 [ false, %logic.from3241 ], [ %t202, %logic.rend3244 ] + br label %logic.from3245 +logic.from3245: + br i1 %t203, label %logic.rhs3246, label %logic.end3247 +logic.rhs3246: + %t204 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t204, ptr %a205 + store { ptr, i64, i64 } { ptr @.str.2054, i64 1, i64 0 }, ptr %a207 + %t208 = call i32 @finch_str_starts(ptr %a205, ptr %a207) + %t209 = icmp ne i32 %t208, 0 + %t210 = xor i1 %t209, true + br label %logic.rend3248 +logic.rend3248: + br label %logic.end3247 +logic.end3247: + %t211 = phi i1 [ false, %logic.from3245 ], [ %t210, %logic.rend3248 ] + br i1 %t211, label %then3249, label %endif3251 +then3249: + %t212 = load ptr, ptr %a1 + %t213 = icmp eq ptr %t212, null + br i1 %t213, label %panic3252, label %ok3253 +panic3252: + call void @finch_panic(ptr @.str.2055, i64 1347, ptr @.str.2056) 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 +ok3253: + %t214 = getelementptr inbounds %S.gen.Gen, ptr %t212, i32 0, i32 0 %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) + br i1 %t216, label %panic3254, label %ok3255 +panic3254: + call void @finch_panic(ptr @.str.2057, i64 1347, ptr @.str.2058) 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 +ok3255: + %t217 = getelementptr inbounds %S.gen.Gen, ptr %t215, i32 0, i32 13 + %t218 = getelementptr inbounds %S.gen.FnSig, ptr %t217, i32 0, i32 16 %t219 = load i64, ptr %t218 - %t220 = load { ptr, i64, i64 }, ptr %t217 + %t220 = load { ptr, i64, i64 }, ptr %t214 %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) + br i1 %t222, label %range3256, label %inrange3257 +range3256: + call void @finch_panic_index(ptr @.str.2059, i64 1347, i64 %t219, i64 %t221) unreachable -inrange3071: +inrange3257: %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 + %t224 = getelementptr inbounds %S.ast.Program, ptr %t223, i64 %t219 + %t225 = getelementptr inbounds %S.ast.Program, ptr %t224, i32 0, i32 8 + %t226 = load ptr, ptr %a1 + %t227 = icmp eq ptr %t226, null + br i1 %t227, label %panic3258, label %ok3259 +panic3258: + call void @finch_panic(ptr @.str.2060, i64 1347, ptr @.str.2061) + unreachable +ok3259: + %t228 = getelementptr inbounds %S.gen.Gen, ptr %t226, i32 0, i32 13 + %t229 = getelementptr inbounds %S.gen.FnSig, ptr %t228, i32 0, i32 17 + %t230 = load i64, ptr %t229 + %t231 = load { ptr, i64, i64 }, ptr %t225 + %t232 = extractvalue { ptr, i64, i64 } %t231, 1 + %t233 = icmp uge i64 %t230, %t232 + br i1 %t233, label %range3260, label %inrange3261 +range3260: + call void @finch_panic_index(ptr @.str.2062, i64 1347, i64 %t230, i64 %t232) + unreachable +inrange3261: + %t234 = extractvalue { ptr, i64, i64 } %t231, 0 + %t235 = getelementptr inbounds %S.ast.Node, ptr %t234, i64 %t230 + %t236 = load %S.ast.Node, ptr %t235 + store %S.ast.Node %t236, ptr %a237 + call void @finch.copy.S_ast_Node(ptr %a238, ptr %a237) + %t239 = load %S.ast.Node, ptr %a238 + store %S.ast.Node %t239, ptr %a240 + %t241 = load ptr, ptr %a1 + %t242 = icmp eq ptr %t241, null + br i1 %t242, label %panic3262, label %ok3263 +panic3262: + call void @finch_panic(ptr @.str.2063, i64 1348, ptr @.str.2064) + unreachable +ok3263: + %t243 = getelementptr inbounds %S.gen.Gen, ptr %t241, i32 0, i32 28 + %t244 = getelementptr inbounds { ptr, i64, i64 }, ptr %t243, i32 0, i32 1 + %t245 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } { ptr @.str.2065, i64 3, i64 0 }, ptr %a247 + store { ptr, i64, i64 } %t245, ptr %a248 + call void @finch_str_concat(ptr %a246, ptr %a247, ptr %a248) + %t249 = load { ptr, i64, i64 }, ptr %a246 + store { ptr, i64, i64 } %t249, ptr %a251 + store { ptr, i64, i64 } { ptr @.str.2066, i64 1, i64 0 }, 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) + store { ptr, i64, i64 } %t249, ptr %a253 + call void @finch_str_drop(ptr %a253) + %t254 = load { ptr, i64, i64 }, ptr %a250 + %t255 = load %S.ast.Type, ptr %a4 + %t256 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t255) + store { ptr, i64, i64 } %t254, ptr %a258 + store { ptr, i64, i64 } %t256, ptr %a259 + call void @finch_str_concat(ptr %a257, ptr %a258, ptr %a259) + store { ptr, i64, i64 } %t254, ptr %a260 + call void @finch_str_drop(ptr %a260) + store { ptr, i64, i64 } %t256, ptr %a261 + call void @finch_str_drop(ptr %a261) + %t262 = load { ptr, i64, i64 }, ptr %a257 + store { ptr, i64, i64 } %t262, ptr %a264 + store { ptr, i64, i64 } { ptr @.str.2067, i64 1, i64 0 }, ptr %a265 + call void @finch_str_concat(ptr %a263, ptr %a264, ptr %a265) + store { ptr, i64, i64 } %t262, ptr %a266 + call void @finch_str_drop(ptr %a266) + %t267 = load { ptr, i64, i64 }, ptr %a263 + %t268 = load ptr, ptr %a1 + %t269 = icmp eq ptr %t268, null + br i1 %t269, label %panic3264, label %ok3265 +panic3264: + call void @finch_panic(ptr @.str.2068, i64 1348, ptr @.str.2069) 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) +ok3265: + %t270 = getelementptr inbounds %S.gen.Gen, ptr %t268, i32 0, i32 1 + %t271 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 + %t272 = load i64, ptr %t271 + %t273 = load { ptr, i64, i64 }, ptr %t270 + %t274 = extractvalue { ptr, i64, i64 } %t273, 1 + %t275 = icmp uge i64 %t272, %t274 + br i1 %t275, label %range3266, label %inrange3267 +range3266: + call void @finch_panic_index(ptr @.str.2070, i64 1348, i64 %t272, i64 %t274) 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 +inrange3267: + %t276 = extractvalue { ptr, i64, i64 } %t273, 0 + %t277 = getelementptr inbounds { ptr, i64, i64 }, ptr %t276, i64 %t272 + %t278 = load { ptr, i64, i64 }, ptr %t277 + store { ptr, i64, i64 } %t267, ptr %a280 + store { ptr, i64, i64 } %t278, ptr %a281 + call void @finch_str_concat(ptr %a279, ptr %a280, ptr %a281) + store { ptr, i64, i64 } %t267, ptr %a282 + call void @finch_str_drop(ptr %a282) + %t283 = load { ptr, i64, i64 }, ptr %a279 + store { ptr, i64, i64 } %t283, ptr %a285 + store { ptr, i64, i64 } { ptr @.str.2071, i64 1, i64 0 }, ptr %a286 + call void @finch_str_concat(ptr %a284, ptr %a285, ptr %a286) + store { ptr, i64, i64 } %t283, ptr %a287 + call void @finch_str_drop(ptr %a287) + %t288 = load { ptr, i64, i64 }, ptr %a284 + %t289 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 %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 + store { ptr, i64, i64 } %t288, ptr %a296 + call void @finch_str_drop(ptr %a296) + store { ptr, i64, i64 } %t292, ptr %a297 + call void @finch_str_drop(ptr %a297) + %t298 = load { ptr, i64, i64 }, ptr %a293 + store { ptr, i64, i64 } %t298, ptr %a300 + store { ptr, i64, i64 } { ptr @.str.2072, i64 1, i64 0 }, ptr %a301 + call void @finch_str_concat(ptr %a299, ptr %a300, ptr %a301) + store { ptr, i64, i64 } %t298, ptr %a302 + call void @finch_str_drop(ptr %a302) + %t303 = load { ptr, i64, i64 }, ptr %a299 + %t304 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 + %t305 = load i64, ptr %t304 + call void @finch_str_from_int(ptr %a306, i64 %t305) + %t307 = load { ptr, i64, i64 }, ptr %a306 + store { ptr, i64, i64 } %t303, ptr %a309 + store { ptr, i64, i64 } %t307, ptr %a310 + call void @finch_str_concat(ptr %a308, ptr %a309, ptr %a310) + store { ptr, i64, i64 } %t303, ptr %a311 + call void @finch_str_drop(ptr %a311) + store { ptr, i64, i64 } %t307, ptr %a312 + call void @finch_str_drop(ptr %a312) + %t313 = load { ptr, i64, i64 }, ptr %a308 + store { ptr, i64, i64 } %t313, ptr %a315 + store { ptr, i64, i64 } { ptr @.str.2073, i64 1, i64 0 }, ptr %a316 + call void @finch_str_concat(ptr %a314, ptr %a315, ptr %a316) + store { ptr, i64, i64 } %t313, ptr %a317 + call void @finch_str_drop(ptr %a317) + %t318 = load { ptr, i64, i64 }, ptr %a314 + %t319 = load ptr, ptr %a1 + %t320 = icmp eq ptr %t319, null + br i1 %t320, label %panic3268, label %ok3269 +panic3268: + call void @finch_panic(ptr @.str.2074, i64 1348, ptr @.str.2075) + unreachable +ok3269: + %t321 = getelementptr inbounds %S.gen.Gen, ptr %t319, i32 0, i32 1 + %t322 = getelementptr inbounds %S.ast.Node, ptr %a240, i32 0, i32 13 + %t323 = load i64, ptr %t322 + %t324 = load { ptr, i64, i64 }, ptr %t321 + %t325 = extractvalue { ptr, i64, i64 } %t324, 1 + %t326 = icmp uge i64 %t323, %t325 + br i1 %t326, label %range3270, label %inrange3271 +range3270: + call void @finch_panic_index(ptr @.str.2076, i64 1348, i64 %t323, i64 %t325) + unreachable +inrange3271: + %t327 = extractvalue { ptr, i64, i64 } %t324, 0 + %t328 = getelementptr inbounds { ptr, i64, i64 }, ptr %t327, i64 %t323 + %t329 = load { ptr, i64, i64 }, ptr %t328 + store { ptr, i64, i64 } %t318, ptr %a331 + store { ptr, i64, i64 } %t329, ptr %a332 + call void @finch_str_concat(ptr %a330, ptr %a331, ptr %a332) + store { ptr, i64, i64 } %t318, ptr %a333 + call void @finch_str_drop(ptr %a333) + %t334 = load { ptr, i64, i64 }, ptr %a330 + store { ptr, i64, i64 } %t334, ptr %a336 + store { ptr, i64, i64 } { ptr @.str.2077, i64 1, i64 0 }, ptr %a337 + call void @finch_str_concat(ptr %a335, ptr %a336, ptr %a337) + store { ptr, i64, i64 } %t334, ptr %a338 + call void @finch_str_drop(ptr %a338) + %t339 = load { ptr, i64, i64 }, ptr %a335 + %t340 = getelementptr inbounds %S.ast.Node, ptr %a240, i32 0, i32 11 + %t341 = load i64, ptr %t340 + call void @finch_str_from_int(ptr %a342, i64 %t341) + %t343 = load { ptr, i64, i64 }, ptr %a342 + store { ptr, i64, i64 } %t339, ptr %a345 + store { ptr, i64, i64 } %t343, ptr %a346 + call void @finch_str_concat(ptr %a344, ptr %a345, ptr %a346) + store { ptr, i64, i64 } %t339, ptr %a347 + call void @finch_str_drop(ptr %a347) + store { ptr, i64, i64 } %t343, ptr %a348 + call void @finch_str_drop(ptr %a348) + %t349 = load { ptr, i64, i64 }, ptr %a344 + store { ptr, i64, i64 } %t349, ptr %a351 + store { ptr, i64, i64 } { ptr @.str.2078, i64 1, i64 0 }, ptr %a352 + call void @finch_str_concat(ptr %a350, ptr %a351, ptr %a352) + store { ptr, i64, i64 } %t349, ptr %a353 + call void @finch_str_drop(ptr %a353) + %t354 = load { ptr, i64, i64 }, ptr %a350 + %t355 = getelementptr inbounds %S.ast.Node, ptr %a240, i32 0, i32 14 + %t356 = load i64, ptr %t355 + call void @finch_str_from_int(ptr %a357, i64 %t356) + %t358 = load { ptr, i64, i64 }, ptr %a357 + store { ptr, i64, i64 } %t354, ptr %a360 + store { ptr, i64, i64 } %t358, ptr %a361 + call void @finch_str_concat(ptr %a359, ptr %a360, ptr %a361) + store { ptr, i64, i64 } %t354, ptr %a362 + call void @finch_str_drop(ptr %a362) + store { ptr, i64, i64 } %t358, ptr %a363 + call void @finch_str_drop(ptr %a363) + %t364 = load { ptr, i64, i64 }, ptr %a359 + %t365 = load i64, ptr %t244 + %t366 = add i64 %t365, 1 + call void @finch_arr_reserve(ptr %t243, i64 %t366, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t367 = load ptr, ptr %t243 + %t368 = getelementptr inbounds { ptr, i64, i64 }, ptr %t367, i64 %t365 + store { ptr, i64, i64 } %t364, ptr %t368 + store i64 %t366, ptr %t244 + %t369 = load ptr, ptr %a1 + %t370 = load %S.ast.Node, ptr %a2 + %t371 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 + %t372 = load i64, ptr %t371 + %t373 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 + %t374 = load i64, ptr %t373 + %t375 = load %S.ast.Type, ptr %a4 + %t376 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t375) + store { ptr, i64, i64 } { ptr @.str.2079, i64 9, i64 0 }, ptr %a378 + store { ptr, i64, i64 } %t376, ptr %a379 + call void @finch_str_concat(ptr %a377, ptr %a378, ptr %a379) + store { ptr, i64, i64 } %t376, ptr %a380 + call void @finch_str_drop(ptr %a380) + %t381 = load { ptr, i64, i64 }, ptr %a377 + store { ptr, i64, i64 } %t381, ptr %a383 + store { ptr, i64, i64 } { ptr @.str.2080, i64 1, i64 0 }, ptr %a384 + call void @finch_str_concat(ptr %a382, ptr %a383, ptr %a384) + store { ptr, i64, i64 } %t381, ptr %a385 + call void @finch_str_drop(ptr %a385) + %t386 = load { ptr, i64, i64 }, ptr %a382 + %t387 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t386, ptr %a389 + store { ptr, i64, i64 } %t387, ptr %a390 + call void @finch_str_concat(ptr %a388, ptr %a389, ptr %a390) + store { ptr, i64, i64 } %t386, ptr %a391 + call void @finch_str_drop(ptr %a391) + %t392 = load { ptr, i64, i64 }, ptr %a388 + store { ptr, i64, i64 } %t392, ptr %a394 + store { ptr, i64, i64 } { ptr @.str.2081, i64 4, i64 0 }, ptr %a395 + call void @finch_str_concat(ptr %a393, ptr %a394, ptr %a395) + store { ptr, i64, i64 } %t392, ptr %a396 + call void @finch_str_drop(ptr %a396) + %t397 = load { ptr, i64, i64 }, ptr %a393 + call void @finch.gen.noteRef(ptr %t369, %S.ast.Node %t370, i64 %t372, i64 %t374, { ptr, i64, i64 } %t397, { ptr, i64, i64 } { ptr @.str.2082, i64 0, i64 0 }, i64 0, i64 0) + store { ptr, i64, i64 } %t397, ptr %a398 + call void @finch_str_drop(ptr %a398) + call void @finch.drop.S_ast_Node(ptr %a240) + br label %endif3251 +endif3251: + %t399 = load { ptr, i64, i64 }, ptr %a73 + ret { ptr, i64, i64 } %t399 } define internal void @finch.gen.pushScope(ptr %p0) { @@ -30812,11 +36224,11 @@ entry: store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic3076, label %ok3077 -panic3076: - call void @finch_panic(ptr @.str.2004, i64 1215, ptr @.str.2005) + br i1 %t3, label %panic3272, label %ok3273 +panic3272: + call void @finch_panic(ptr @.str.2083, i64 1355, ptr @.str.2084) unreachable -ok3077: +ok3273: %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 @@ -30829,240 +36241,413 @@ ok3077: ret void } +define internal void @finch.drop.S_gen_Var(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.gen.Var, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.gen.Var, ptr %a, i32 0, i32 1 + call void @finch.drop.S_ast_Type(ptr %t2) + %t3 = getelementptr inbounds %S.gen.Var, ptr %a, i32 0, i32 2 + call void @finch_str_drop(ptr %t3) + %t4 = getelementptr inbounds %S.gen.Var, ptr %a, i32 0, i32 7 + call void @finch_str_drop(ptr %t4) + ret void +} + +define internal void @finch.drop.arr_S_gen_Var(ptr %a) { +entry: + %a4 = alloca i64, align 16 + %t1 = load ptr, ptr %a + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 + %t3 = load i64, ptr %t2 + store i64 0, ptr %a4 + br label %n.cond3285 +n.cond3285: + %t5 = load i64, ptr %a4 + %t6 = icmp slt i64 %t5, %t3 + br i1 %t6, label %n.body3286, label %n.end3287 +n.body3286: + %t7 = getelementptr inbounds %S.gen.Var, ptr %t1, i64 %t5 + call void @finch.drop.S_gen_Var(ptr %t7) + %t8 = load i64, ptr %a4 + %t9 = add i64 %t8, 1 + store i64 %t9, ptr %a4 + br label %n.cond3285 +n.end3287: + call void @finch_arr_free(ptr %a) + ret void +} + +define internal void @finch.drop.arr_S_gen_Cleanup(ptr %a) { +entry: + + call void @finch_arr_free(ptr %a) + ret void +} + +define internal void @finch.drop.S_gen_Scope(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.gen.Scope, ptr %a, i32 0, i32 0 + call void @finch.drop.arr_S_gen_Var(ptr %t1) + %t2 = getelementptr inbounds %S.gen.Scope, ptr %a, i32 0, i32 1 + call void @finch.drop.arr_S_ast_Node(ptr %t2) + %t3 = getelementptr inbounds %S.gen.Scope, ptr %a, i32 0, i32 2 + call void @finch.drop.arr_int(ptr %t3) + %t4 = getelementptr inbounds %S.gen.Scope, ptr %a, i32 0, i32 3 + call void @finch.drop.arr_S_gen_Cleanup(ptr %t4) + ret void +} + define internal void @finch.gen.popScope(ptr %p0) { entry: %a1 = alloca ptr, align 16 + %a24 = alloca %S.gen.Scope, align 16 store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic3078, label %ok3079 -panic3078: - call void @finch_panic(ptr @.str.2006, i64 1219, ptr @.str.2007) + br i1 %t3, label %panic3274, label %ok3275 +panic3274: + call void @finch_panic(ptr @.str.2085, i64 1361, ptr @.str.2086) unreachable -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 %panic3080, label %ok3081 -panic3080: - call void @finch_panic(ptr @.str.2008, i64 1219, ptr @.str.2009) +ok3275: + %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 %then3276, label %endif3278 +then3276: + %t7 = load ptr, ptr %a1 + %t8 = load ptr, ptr %a1 + %t9 = icmp eq ptr %t8, null + br i1 %t9, label %panic3279, label %ok3280 +panic3279: + call void @finch_panic(ptr @.str.2087, i64 1362, ptr @.str.2088) unreachable -ok3081: - %t8 = sub i64 %t6, 1 - %t9 = load ptr, ptr %t4 - %t10 = getelementptr inbounds %S.gen.Scope, ptr %t9, i64 %t8 - %t11 = load %S.gen.Scope, ptr %t10 - store i64 %t8, ptr %t5 +ok3280: + %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.runCleanups(ptr %t7, i64 %t13) + br label %endif3278 +endif3278: + %t14 = load ptr, ptr %a1 + %t15 = icmp eq ptr %t14, null + br i1 %t15, label %panic3281, label %ok3282 +panic3281: + call void @finch_panic(ptr @.str.2089, i64 1364, ptr @.str.2090) + unreachable +ok3282: + %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 %panic3283, label %ok3284 +panic3283: + call void @finch_panic(ptr @.str.2091, i64 1364, ptr @.str.2092) + unreachable +ok3284: + %t20 = sub i64 %t18, 1 + %t21 = load ptr, ptr %t16 + %t22 = getelementptr inbounds %S.gen.Scope, ptr %t21, i64 %t20 + %t23 = load %S.gen.Scope, ptr %t22 + store i64 %t20, ptr %t17 + store %S.gen.Scope %t23, ptr %a24 + call void @finch.drop.S_gen_Scope(ptr %a24) ret void } -define internal void @finch.copy.arr_S_gen_Var(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.gen.Var, 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.cond3086 -n.cond3086: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - 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.cond3086 -n.end3088: - ret void -} - -define internal void @finch.copy.S_gen_Scope(ptr %dst, ptr %src) { -entry: - - %t1 = load %S.gen.Scope, ptr %src - store %S.gen.Scope %t1, ptr %dst - %t2 = getelementptr inbounds %S.gen.Scope, ptr %dst, i32 0, i32 0 - %t3 = getelementptr inbounds %S.gen.Scope, ptr %src, i32 0, i32 0 - call void @finch.copy.arr_S_gen_Var(ptr %t2, ptr %t3) - %t4 = getelementptr inbounds %S.gen.Scope, ptr %dst, i32 0, i32 1 - %t5 = getelementptr inbounds %S.gen.Scope, ptr %src, i32 0, i32 1 - call void @finch.copy.arr_S_ast_Node(ptr %t4, ptr %t5) - %t6 = getelementptr inbounds %S.gen.Scope, ptr %dst, i32 0, i32 2 - %t7 = getelementptr inbounds %S.gen.Scope, ptr %src, i32 0, i32 2 - call void @finch.copy.arr_int(ptr %t6, ptr %t7) - ret void -} - -define internal void @finch.gen.runDefers(ptr %p0, i64 %p1) { +define internal void @finch.gen.runCleanups(ptr %p0, i64 %p1) { entry: %a1 = alloca ptr, align 16 %a2 = alloca i64, align 16 - %a13 = alloca %S.gen.Scope, align 16 - %a14 = alloca %S.gen.Scope, align 16 - %a16 = alloca %S.gen.Scope, align 16 - %a20 = alloca i64, align 16 - %a29 = alloca i1, align 16 - %a34 = alloca i64, align 16 + %a15 = alloca i64, align 16 + %a37 = alloca %S.gen.Cleanup, align 16 + %a59 = alloca %S.gen.Var, align 16 + %a60 = alloca %S.gen.Var, align 16 + %a62 = alloca %S.gen.Var, align 16 + %a75 = alloca i1, align 16 + %a80 = alloca i64, align 16 store ptr %p0, ptr %a1 store i64 %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic3082, label %ok3083 -panic3082: - call void @finch_panic(ptr @.str.2010, i64 1224, ptr @.str.2011) + br i1 %t4, label %panic3288, label %ok3289 +panic3288: + call void @finch_panic(ptr @.str.2093, i64 1369, ptr @.str.2094) unreachable -ok3083: +ok3289: %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 %range3084, label %inrange3085 -range3084: - call void @finch_panic_index(ptr @.str.2012, i64 1224, i64 %t6, i64 %t8) + br i1 %t9, label %range3290, label %inrange3291 +range3290: + call void @finch_panic_index(ptr @.str.2095, i64 1369, i64 %t6, i64 %t8) unreachable -inrange3085: +inrange3291: %t10 = extractvalue { ptr, i64, i64 } %t7, 0 %t11 = getelementptr inbounds %S.gen.Scope, ptr %t10, i64 %t6 - %t12 = load %S.gen.Scope, ptr %t11 - store %S.gen.Scope %t12, ptr %a13 - call void @finch.copy.S_gen_Scope(ptr %a14, ptr %a13) - %t15 = load %S.gen.Scope, ptr %a14 - store %S.gen.Scope %t15, ptr %a16 - %t17 = getelementptr inbounds %S.gen.Scope, ptr %a16, i32 0, i32 1 - %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.cond3089 -while.cond3089: - %t21 = load i64, ptr %a20 - %t22 = icmp sgt i64 %t21, 0 - 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 %panic3092, label %ok3093 -panic3092: - call void @finch_panic(ptr @.str.2013, i64 1228, ptr @.str.2014) + %t12 = getelementptr inbounds %S.gen.Scope, ptr %t11, i32 0, i32 3 + %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t12, i32 0, i32 1 + %t14 = load i64, ptr %t13 + store i64 %t14, ptr %a15 + br label %while.cond3292 +while.cond3292: + %t16 = load i64, ptr %a15 + %t17 = icmp sgt i64 %t16, 0 + br i1 %t17, label %while.body3293, label %while.end3294 +while.body3293: + %t18 = load i64, ptr %a15 + %t19 = sub i64 %t18, 1 + store i64 %t19, ptr %a15 + %t20 = load ptr, ptr %a1 + %t21 = icmp eq ptr %t20, null + br i1 %t21, label %panic3295, label %ok3296 +panic3295: + call void @finch_panic(ptr @.str.2096, i64 1372, ptr @.str.2097) unreachable -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 %panic3094, label %ok3095 -panic3094: - call void @finch_panic(ptr @.str.2015, i64 1229, ptr @.str.2016) +ok3296: + %t22 = getelementptr inbounds %S.gen.Gen, ptr %t20, i32 0, i32 10 + %t23 = load i64, ptr %a2 + %t24 = load { ptr, i64, i64 }, ptr %t22 + %t25 = extractvalue { ptr, i64, i64 } %t24, 1 + %t26 = icmp uge i64 %t23, %t25 + br i1 %t26, label %range3297, label %inrange3298 +range3297: + call void @finch_panic_index(ptr @.str.2098, i64 1372, i64 %t23, i64 %t25) unreachable -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 %panic3096, label %ok3097 -panic3096: - call void @finch_panic(ptr @.str.2017, i64 1230, ptr @.str.2018) +inrange3298: + %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 3 + %t30 = load i64, ptr %a15 + %t31 = load { ptr, i64, i64 }, ptr %t29 + %t32 = extractvalue { ptr, i64, i64 } %t31, 1 + %t33 = icmp uge i64 %t30, %t32 + br i1 %t33, label %range3299, label %inrange3300 +range3299: + call void @finch_panic_index(ptr @.str.2099, i64 1372, i64 %t30, i64 %t32) unreachable -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 %range3098, label %inrange3099 -range3098: - call void @finch_panic_index(ptr @.str.2019, i64 1231, i64 %t39, i64 %t41) +inrange3300: + %t34 = extractvalue { ptr, i64, i64 } %t31, 0 + %t35 = getelementptr inbounds %S.gen.Cleanup, ptr %t34, i64 %t30 + %t36 = load %S.gen.Cleanup, ptr %t35 + store %S.gen.Cleanup %t36, ptr %a37 + %t38 = getelementptr inbounds %S.gen.Cleanup, ptr %a37, i32 0, i32 0 + %t39 = load i1, ptr %t38 + %t40 = xor i1 %t39, true + br i1 %t40, label %then3301, label %endif3303 +then3301: + %t41 = load ptr, ptr %a1 + %t42 = icmp eq ptr %t41, null + br i1 %t42, label %panic3304, label %ok3305 +panic3304: + call void @finch_panic(ptr @.str.2100, i64 1374, ptr @.str.2101) unreachable -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 %panic3100, label %ok3101 -panic3100: - call void @finch_panic(ptr @.str.2020, i64 1231, ptr @.str.2021) +ok3305: + %t43 = getelementptr inbounds %S.gen.Gen, ptr %t41, i32 0, i32 10 + %t44 = load i64, ptr %a2 + %t45 = load { ptr, i64, i64 }, ptr %t43 + %t46 = extractvalue { ptr, i64, i64 } %t45, 1 + %t47 = icmp uge i64 %t44, %t46 + br i1 %t47, label %range3306, label %inrange3307 +range3306: + call void @finch_panic_index(ptr @.str.2102, i64 1374, i64 %t44, i64 %t46) unreachable -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 %panic3102, label %ok3103 -panic3102: - call void @finch_panic(ptr @.str.2022, i64 1232, ptr @.str.2023) - unreachable -ok3103: - %t51 = getelementptr inbounds %S.gen.Gen, ptr %t49, i32 0, i32 44 +inrange3307: + %t48 = extractvalue { ptr, i64, i64 } %t45, 0 + %t49 = getelementptr inbounds %S.gen.Scope, ptr %t48, i64 %t44 + %t50 = getelementptr inbounds %S.gen.Scope, ptr %t49, i32 0, i32 0 + %t51 = getelementptr inbounds %S.gen.Cleanup, ptr %a37, i32 0, i32 1 %t52 = load i64, ptr %t51 - %t53 = add i64 %t52, 1 - store i64 %t53, ptr %t51 - %t54 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t54) - %t55 = load ptr, ptr %a1 - %t56 = getelementptr inbounds %S.gen.Scope, ptr %a16, i32 0, i32 1 - %t57 = load i64, ptr %a20 - %t58 = load { ptr, i64, i64 }, ptr %t56 - %t59 = extractvalue { ptr, i64, i64 } %t58, 1 - %t60 = icmp uge i64 %t57, %t59 - br i1 %t60, label %range3104, label %inrange3105 -range3104: - call void @finch_panic_index(ptr @.str.2024, i64 1234, i64 %t57, i64 %t59) + %t53 = load { ptr, i64, i64 }, ptr %t50 + %t54 = extractvalue { ptr, i64, i64 } %t53, 1 + %t55 = icmp uge i64 %t52, %t54 + br i1 %t55, label %range3308, label %inrange3309 +range3308: + call void @finch_panic_index(ptr @.str.2103, i64 1374, i64 %t52, i64 %t54) unreachable -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 - call void @finch.gen.stmt(ptr %t55, %S.ast.Node %t63) - %t64 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t64) - %t65 = load ptr, ptr %a1 - %t66 = icmp eq ptr %t65, null - br i1 %t66, label %panic3106, label %ok3107 -panic3106: - call void @finch_panic(ptr @.str.2025, i64 1236, ptr @.str.2026) - unreachable -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 +inrange3309: + %t56 = extractvalue { ptr, i64, i64 } %t53, 0 + %t57 = getelementptr inbounds %S.gen.Var, ptr %t56, i64 %t52 + %t58 = load %S.gen.Var, ptr %t57 + store %S.gen.Var %t58, ptr %a59 + call void @finch.copy.S_gen_Var(ptr %a60, ptr %a59) + %t61 = load %S.gen.Var, ptr %a60 + store %S.gen.Var %t61, ptr %a62 + %t63 = getelementptr inbounds %S.gen.Var, ptr %a62, i32 0, i32 6 + %t64 = load i1, ptr %t63 + %t65 = xor i1 %t64, true + br i1 %t65, label %then3310, label %endif3312 +then3310: + %t66 = load ptr, ptr %a1 + %t67 = getelementptr inbounds %S.gen.Var, ptr %a62, i32 0, i32 2 + %t68 = load { ptr, i64, i64 }, ptr %t67 + %t69 = getelementptr inbounds %S.gen.Var, ptr %a62, i32 0, i32 1 + %t70 = load %S.ast.Type, ptr %t69 + call void @finch.gen.dropAt(ptr %t66, { ptr, i64, i64 } %t68, %S.ast.Type %t70) + br label %endif3312 +endif3312: + call void @finch.drop.S_gen_Var(ptr %a62) + br label %while.cond3292 +endif3303: %t71 = load ptr, ptr %a1 %t72 = icmp eq ptr %t71, null - br i1 %t72, label %panic3108, label %ok3109 -panic3108: - call void @finch_panic(ptr @.str.2027, i64 1237, ptr @.str.2028) + br i1 %t72, label %panic3313, label %ok3314 +panic3313: + call void @finch_panic(ptr @.str.2104, i64 1380, ptr @.str.2105) unreachable -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 %panic3110, label %ok3111 -panic3110: - call void @finch_panic(ptr @.str.2029, i64 1238, ptr @.str.2030) +ok3314: + %t73 = getelementptr inbounds %S.gen.Gen, ptr %t71, i32 0, i32 43 + %t74 = load i1, ptr %t73 + store i1 %t74, ptr %a75 + %t76 = load ptr, ptr %a1 + %t77 = icmp eq ptr %t76, null + br i1 %t77, label %panic3315, label %ok3316 +panic3315: + call void @finch_panic(ptr @.str.2106, i64 1381, ptr @.str.2107) unreachable -ok3111: - %t77 = getelementptr inbounds %S.gen.Gen, ptr %t75, i32 0, i32 43 - store i64 %t74, ptr %t77 - br label %while.cond3089 -while.end3091: +ok3316: + %t78 = getelementptr inbounds %S.gen.Gen, ptr %t76, i32 0, i32 44 + %t79 = load i64, ptr %t78 + store i64 %t79, ptr %a80 + %t81 = load ptr, ptr %a1 + %t82 = icmp eq ptr %t81, null + br i1 %t82, label %panic3317, label %ok3318 +panic3317: + call void @finch_panic(ptr @.str.2108, i64 1382, ptr @.str.2109) + unreachable +ok3318: + %t83 = getelementptr inbounds %S.gen.Gen, ptr %t81, i32 0, i32 43 + store i1 true, ptr %t83 + %t84 = load ptr, ptr %a1 + %t85 = icmp eq ptr %t84, null + br i1 %t85, label %panic3319, label %ok3320 +panic3319: + call void @finch_panic(ptr @.str.2110, i64 1383, ptr @.str.2111) + unreachable +ok3320: + %t86 = getelementptr inbounds %S.gen.Gen, ptr %t84, i32 0, i32 10 + %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 %range3321, label %inrange3322 +range3321: + call void @finch_panic_index(ptr @.str.2112, i64 1383, i64 %t87, i64 %t89) + unreachable +inrange3322: + %t91 = extractvalue { ptr, i64, i64 } %t88, 0 + %t92 = getelementptr inbounds %S.gen.Scope, ptr %t91, i64 %t87 + %t93 = getelementptr inbounds %S.gen.Scope, ptr %t92, i32 0, i32 2 + %t94 = getelementptr inbounds %S.gen.Cleanup, ptr %a37, i32 0, i32 1 + %t95 = load i64, ptr %t94 + %t96 = load { ptr, i64, i64 }, ptr %t93 + %t97 = extractvalue { ptr, i64, i64 } %t96, 1 + %t98 = icmp uge i64 %t95, %t97 + br i1 %t98, label %range3323, label %inrange3324 +range3323: + call void @finch_panic_index(ptr @.str.2113, i64 1383, i64 %t95, i64 %t97) + unreachable +inrange3324: + %t99 = extractvalue { ptr, i64, i64 } %t96, 0 + %t100 = getelementptr inbounds i64, ptr %t99, i64 %t95 + %t101 = load i64, ptr %t100 + %t102 = load ptr, ptr %a1 + %t103 = icmp eq ptr %t102, null + br i1 %t103, label %panic3325, label %ok3326 +panic3325: + call void @finch_panic(ptr @.str.2114, i64 1383, ptr @.str.2115) + unreachable +ok3326: + %t104 = getelementptr inbounds %S.gen.Gen, ptr %t102, i32 0, i32 44 + store i64 %t101, ptr %t104 + %t105 = load ptr, ptr %a1 + %t106 = icmp eq ptr %t105, null + br i1 %t106, label %panic3327, label %ok3328 +panic3327: + call void @finch_panic(ptr @.str.2116, i64 1384, ptr @.str.2117) + unreachable +ok3328: + %t107 = getelementptr inbounds %S.gen.Gen, ptr %t105, i32 0, i32 45 + %t108 = load i64, ptr %t107 + %t109 = add i64 %t108, 1 + store i64 %t109, ptr %t107 + %t110 = load ptr, ptr %a1 + call void @finch.gen.pushScope(ptr %t110) + %t111 = load ptr, ptr %a1 + %t112 = load ptr, ptr %a1 + %t113 = icmp eq ptr %t112, null + br i1 %t113, label %panic3329, label %ok3330 +panic3329: + call void @finch_panic(ptr @.str.2118, i64 1386, ptr @.str.2119) + unreachable +ok3330: + %t114 = getelementptr inbounds %S.gen.Gen, ptr %t112, i32 0, i32 10 + %t115 = load i64, ptr %a2 + %t116 = load { ptr, i64, i64 }, ptr %t114 + %t117 = extractvalue { ptr, i64, i64 } %t116, 1 + %t118 = icmp uge i64 %t115, %t117 + br i1 %t118, label %range3331, label %inrange3332 +range3331: + call void @finch_panic_index(ptr @.str.2120, i64 1386, i64 %t115, i64 %t117) + unreachable +inrange3332: + %t119 = extractvalue { ptr, i64, i64 } %t116, 0 + %t120 = getelementptr inbounds %S.gen.Scope, ptr %t119, i64 %t115 + %t121 = getelementptr inbounds %S.gen.Scope, ptr %t120, i32 0, i32 1 + %t122 = getelementptr inbounds %S.gen.Cleanup, ptr %a37, i32 0, i32 1 + %t123 = load i64, ptr %t122 + %t124 = load { ptr, i64, i64 }, ptr %t121 + %t125 = extractvalue { ptr, i64, i64 } %t124, 1 + %t126 = icmp uge i64 %t123, %t125 + br i1 %t126, label %range3333, label %inrange3334 +range3333: + call void @finch_panic_index(ptr @.str.2121, i64 1386, i64 %t123, i64 %t125) + unreachable +inrange3334: + %t127 = extractvalue { ptr, i64, i64 } %t124, 0 + %t128 = getelementptr inbounds %S.ast.Node, ptr %t127, i64 %t123 + %t129 = load %S.ast.Node, ptr %t128 + call void @finch.gen.stmt(ptr %t111, %S.ast.Node %t129) + %t130 = load ptr, ptr %a1 + call void @finch.gen.popScope(ptr %t130) + %t131 = load ptr, ptr %a1 + %t132 = icmp eq ptr %t131, null + br i1 %t132, label %panic3335, label %ok3336 +panic3335: + call void @finch_panic(ptr @.str.2122, i64 1388, ptr @.str.2123) + unreachable +ok3336: + %t133 = getelementptr inbounds %S.gen.Gen, ptr %t131, i32 0, i32 45 + %t134 = load i64, ptr %t133 + %t135 = sub i64 %t134, 1 + store i64 %t135, ptr %t133 + %t136 = load i1, ptr %a75 + %t137 = load ptr, ptr %a1 + %t138 = icmp eq ptr %t137, null + br i1 %t138, label %panic3337, label %ok3338 +panic3337: + call void @finch_panic(ptr @.str.2124, i64 1389, ptr @.str.2125) + unreachable +ok3338: + %t139 = getelementptr inbounds %S.gen.Gen, ptr %t137, i32 0, i32 43 + store i1 %t136, ptr %t139 + %t140 = load i64, ptr %a80 + %t141 = load ptr, ptr %a1 + %t142 = icmp eq ptr %t141, null + br i1 %t142, label %panic3339, label %ok3340 +panic3339: + call void @finch_panic(ptr @.str.2126, i64 1390, ptr @.str.2127) + unreachable +ok3340: + %t143 = getelementptr inbounds %S.gen.Gen, ptr %t141, i32 0, i32 44 + store i64 %t140, ptr %t143 + br label %while.cond3292 +while.end3294: ret void } @@ -31075,30 +36660,30 @@ entry: store i64 %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic3112, label %ok3113 -panic3112: - call void @finch_panic(ptr @.str.2031, i64 1244, ptr @.str.2032) + br i1 %t4, label %panic3341, label %ok3342 +panic3341: + call void @finch_panic(ptr @.str.2128, i64 1396, ptr @.str.2129) unreachable -ok3113: +ok3342: %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.cond3114 -while.cond3114: + br label %while.cond3343 +while.cond3343: %t9 = load i64, ptr %a8 %t10 = load i64, ptr %a2 %t11 = icmp sgt i64 %t9, %t10 - br i1 %t11, label %while.body3115, label %while.end3116 -while.body3115: + br i1 %t11, label %while.body3344, label %while.end3345 +while.body3344: %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.cond3114 -while.end3116: + call void @finch.gen.runCleanups(ptr %t14, i64 %t15) + br label %while.cond3343 +while.end3345: ret void } @@ -31107,53 +36692,7 @@ 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 %panic3117, label %ok3118 -panic3117: - call void @finch_panic(ptr @.str.2033, i64 1253, ptr @.str.2034) - unreachable -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 %then3119, label %endif3121 -then3119: - %t7 = load ptr, ptr %a1 - %t8 = load ptr, ptr %a1 - %t9 = icmp eq ptr %t8, null - br i1 %t9, label %panic3122, label %ok3123 -panic3122: - call void @finch_panic(ptr @.str.2035, i64 1254, ptr @.str.2036) - unreachable -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 %endif3121 -endif3121: - %t14 = load ptr, ptr %a1 - %t15 = icmp eq ptr %t14, null - br i1 %t15, label %panic3124, label %ok3125 -panic3124: - call void @finch_panic(ptr @.str.2037, i64 1256, ptr @.str.2038) - unreachable -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 %panic3126, label %ok3127 -panic3126: - call void @finch_panic(ptr @.str.2039, i64 1256, ptr @.str.2040) - unreachable -ok3127: - %t20 = sub i64 %t18, 1 - %t21 = load ptr, ptr %t16 - %t22 = getelementptr inbounds %S.gen.Scope, ptr %t21, i64 %t20 - %t23 = load %S.gen.Scope, ptr %t22 - store i64 %t20, ptr %t17 + call void @finch.gen.popScope(ptr %t2) ret void } @@ -31172,57 +36711,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.2041, i64 3, i64 0 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.2130, 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 %then3128, label %endif3130 -then3128: + br i1 %t7, label %then3346, label %endif3348 +then3346: %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 -endif3130: +endif3348: %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.2042, i64 6, i64 0 }, ptr %a16 + store { ptr, i64, i64 } { ptr @.str.2131, 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.from3131 -logic.from3131: - br i1 %t18, label %logic.end3133, label %logic.rhs3132 -logic.rhs3132: + br label %logic.from3349 +logic.from3349: + br i1 %t18, label %logic.end3351, label %logic.rhs3350 +logic.rhs3350: %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.2043, i64 5, i64 0 }, ptr %a22 + store { ptr, i64, i64 } { ptr @.str.2132, 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.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: + br label %logic.rend3352 +logic.rend3352: + br label %logic.end3351 +logic.end3351: + %t25 = phi i1 [ true, %logic.from3349 ], [ %t24, %logic.rend3352 ] + br i1 %t25, label %then3353, label %endif3355 +then3353: %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 %range3138, label %inrange3139 -range3138: - call void @finch_panic_index(ptr @.str.2044, i64 1266, i64 0, i64 %t28) + br i1 %t29, label %range3356, label %inrange3357 +range3356: + call void @finch_panic_index(ptr @.str.2133, i64 1414, i64 0, i64 %t28) unreachable -inrange3139: +inrange3357: %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 -endif3137: - ret { ptr, i64, i64 } { ptr @.str.2045, i64 0, i64 0 } +endif3355: + ret { ptr, i64, i64 } { ptr @.str.2134, i64 0, i64 0 } } define internal i1 @finch.gen.mutates(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Node %p2) { @@ -31235,47 +36774,50 @@ entry: %a21 = alloca { ptr, i64, i64 }, align 16 %a33 = alloca { ptr, i64, i64 }, align 16 %a34 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 + %a37 = alloca { ptr, i64, i64 }, align 16 %a41 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca i64, align 16 - %a50 = alloca i64, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 + %a42 = alloca { ptr, i64, i64 }, align 16 + %a48 = alloca i64, align 16 + %a51 = alloca i64, align 16 %a56 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca i64, align 16 - %a71 = alloca i64, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 + %a57 = alloca { ptr, i64, i64 }, align 16 + %a69 = alloca i64, align 16 + %a72 = alloca i64, align 16 %a77 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 + %a78 = alloca { ptr, i64, i64 }, align 16 %a95 = 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 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca i64, align 16 - %a140 = alloca %S.ast.Node, align 16 + %a96 = 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 + %a109 = alloca { ptr, i64, i64 }, align 16 + %a110 = alloca { ptr, i64, i64 }, align 16 + %a128 = alloca { ptr, i64, i64 }, align 16 + %a129 = alloca { ptr, i64, i64 }, align 16 + %a132 = alloca { ptr, i64, i64 }, align 16 + %a135 = alloca i64, align 16 + %a143 = alloca %S.ast.Node, align 16 store ptr %p0, ptr %a1 store { ptr, i64, i64 } %p1, ptr %a2 store %S.ast.Node %p2, ptr %a3 %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.2046, i64 4, i64 0 }, ptr %t6 + store { ptr, i64, i64 } { ptr @.str.2135, i64 4, i64 0 }, ptr %t6 %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 1 - store { ptr, i64, i64 } { ptr @.str.2047, i64 3, i64 0 }, ptr %t7 + store { ptr, i64, i64 } { ptr @.str.2136, i64 3, i64 0 }, ptr %t7 %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 2 - store { ptr, i64, i64 } { ptr @.str.2048, i64 6, i64 0 }, ptr %t8 + store { ptr, i64, i64 } { ptr @.str.2137, i64 6, i64 0 }, ptr %t8 %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 3 - store { ptr, i64, i64 } { ptr @.str.2049, i64 6, i64 0 }, ptr %t9 + store { ptr, i64, i64 } { ptr @.str.2138, i64 6, i64 0 }, ptr %t9 %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 4 - store { ptr, i64, i64 } { ptr @.str.2050, i64 5, i64 0 }, ptr %t10 + store { ptr, i64, i64 } { ptr @.str.2139, i64 5, i64 0 }, ptr %t10 %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 5 - store { ptr, i64, i64 } { ptr @.str.2051, i64 6, i64 0 }, ptr %t11 + store { ptr, i64, i64 } { ptr @.str.2140, i64 6, i64 0 }, ptr %t11 %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 6 - store { ptr, i64, i64 } { ptr @.str.2052, i64 4, i64 0 }, ptr %t12 + store { ptr, i64, i64 } { ptr @.str.2141, i64 4, i64 0 }, ptr %t12 %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 7 - store { ptr, i64, i64 } { ptr @.str.2053, i64 7, i64 0 }, ptr %t13 + store { ptr, i64, i64 } { ptr @.str.2142, 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 @@ -31283,22 +36825,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.2054, i64 6, i64 0 }, ptr %a21 + store { ptr, i64, i64 } { ptr @.str.2143, 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.from3140 -logic.from3140: - br i1 %t23, label %logic.rhs3141, label %logic.end3142 -logic.rhs3141: + br label %logic.from3358 +logic.from3358: + br i1 %t23, label %logic.rhs3359, label %logic.end3360 +logic.rhs3359: %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 %range3143, label %inrange3144 -range3143: - call void @finch_panic_index(ptr @.str.2055, i64 1273, i64 0, i64 %t26) + br i1 %t27, label %range3361, label %inrange3362 +range3361: + call void @finch_panic_index(ptr @.str.2144, i64 1421, i64 0, i64 %t26) unreachable -inrange3144: +inrange3362: %t28 = extractvalue { ptr, i64, i64 } %t25, 0 %t29 = getelementptr inbounds %S.ast.Node, ptr %t28, i64 0 %t30 = load %S.ast.Node, ptr %t29 @@ -31308,232 +36850,243 @@ inrange3144: 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.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: + store { ptr, i64, i64 } %t31, ptr %a37 + call void @finch_str_drop(ptr %a37) + br label %logic.rend3363 +logic.rend3363: + br label %logic.end3360 +logic.end3360: + %t38 = phi i1 [ false, %logic.from3358 ], [ %t36, %logic.rend3363 ] + br i1 %t38, label %then3364, label %endif3366 +then3364: + call void @finch.drop.arr_str(ptr %a17) ret i1 true -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.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.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 - store i64 -1, ptr %a47 - %t48 = load i64, ptr %t44 - %t49 = load ptr, ptr %a17 - store i64 0, ptr %a50 - br label %find.cond3152 -find.cond3152: - %t51 = load i64, ptr %a50 - %t52 = icmp slt i64 %t51, %t48 - 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.hit3154, label %find.next3155 -find.hit3154: - store i64 %t51, ptr %a47 - br label %find.end3156 -find.next3155: - %t59 = add i64 %t51, 1 - store i64 %t59, ptr %a50 - br label %find.cond3152 -find.end3156: - %t60 = load i64, ptr %a47 - %t61 = icmp sge i64 %t60, 0 - 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 %panic3160, label %ok3161 -panic3160: - call void @finch_panic(ptr @.str.2057, i64 1279, ptr @.str.2058) +endif3366: + %t39 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 0 + %t40 = load { ptr, i64, i64 }, ptr %t39 + store { ptr, i64, i64 } %t40, ptr %a41 + store { ptr, i64, i64 } { ptr @.str.2145, i64 6, i64 0 }, ptr %a42 + %t43 = call i32 @finch_str_eq(ptr %a41, ptr %a42) + %t44 = icmp ne i32 %t43, 0 + br label %logic.from3367 +logic.from3367: + br i1 %t44, label %logic.rhs3368, label %logic.end3369 +logic.rhs3368: + %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %a17, i32 0, i32 1 + %t46 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 1 + %t47 = load { ptr, i64, i64 }, ptr %t46 + store i64 -1, ptr %a48 + %t49 = load i64, ptr %t45 + %t50 = load ptr, ptr %a17 + store i64 0, ptr %a51 + br label %find.cond3370 +find.cond3370: + %t52 = load i64, ptr %a51 + %t53 = icmp slt i64 %t52, %t49 + br i1 %t53, label %find.body3371, label %find.end3374 +find.body3371: + %t54 = getelementptr inbounds { ptr, i64, i64 }, ptr %t50, i64 %t52 + %t55 = load { ptr, i64, i64 }, ptr %t54 + store { ptr, i64, i64 } %t55, ptr %a56 + store { ptr, i64, i64 } %t47, ptr %a57 + %t58 = call i32 @finch_str_eq(ptr %a56, ptr %a57) + %t59 = icmp ne i32 %t58, 0 + br i1 %t59, label %find.hit3372, label %find.next3373 +find.hit3372: + store i64 %t52, ptr %a48 + br label %find.end3374 +find.next3373: + %t60 = add i64 %t52, 1 + store i64 %t60, ptr %a51 + br label %find.cond3370 +find.end3374: + %t61 = load i64, ptr %a48 + %t62 = icmp sge i64 %t61, 0 + br label %logic.from3375 +logic.from3375: + br i1 %t62, label %logic.end3377, label %logic.rhs3376 +logic.rhs3376: + %t63 = load ptr, ptr %a1 + %t64 = icmp eq ptr %t63, null + br i1 %t64, label %panic3378, label %ok3379 +panic3378: + call void @finch_panic(ptr @.str.2146, i64 1427, ptr @.str.2147) unreachable -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 - %t67 = load { ptr, i64, i64 }, ptr %t66 - store i64 -1, ptr %a68 - %t69 = load i64, ptr %t65 - %t70 = load ptr, ptr %t64 - store i64 0, ptr %a71 - br label %find.cond3162 -find.cond3162: - %t72 = load i64, ptr %a71 - %t73 = icmp slt i64 %t72, %t69 - 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.hit3164, label %find.next3165 -find.hit3164: - store i64 %t72, ptr %a68 - br label %find.end3166 -find.next3165: - %t80 = add i64 %t72, 1 - store i64 %t80, ptr %a71 - br label %find.cond3162 -find.end3166: - %t81 = load i64, ptr %a68 - %t82 = icmp sge i64 %t81, 0 - 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 %range3172, label %inrange3173 -range3172: - call void @finch_panic_index(ptr @.str.2059, i64 1279, i64 0, i64 %t87) +ok3379: + %t65 = getelementptr inbounds %S.gen.Gen, ptr %t63, i32 0, i32 23 + %t66 = getelementptr inbounds { ptr, i64, i64 }, ptr %t65, i32 0, i32 1 + %t67 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 1 + %t68 = load { ptr, i64, i64 }, ptr %t67 + store i64 -1, ptr %a69 + %t70 = load i64, ptr %t66 + %t71 = load ptr, ptr %t65 + store i64 0, ptr %a72 + br label %find.cond3380 +find.cond3380: + %t73 = load i64, ptr %a72 + %t74 = icmp slt i64 %t73, %t70 + br i1 %t74, label %find.body3381, label %find.end3384 +find.body3381: + %t75 = getelementptr inbounds { ptr, i64, i64 }, ptr %t71, i64 %t73 + %t76 = load { ptr, i64, i64 }, ptr %t75 + store { ptr, i64, i64 } %t76, ptr %a77 + store { ptr, i64, i64 } %t68, ptr %a78 + %t79 = call i32 @finch_str_eq(ptr %a77, ptr %a78) + %t80 = icmp ne i32 %t79, 0 + br i1 %t80, label %find.hit3382, label %find.next3383 +find.hit3382: + store i64 %t73, ptr %a69 + br label %find.end3384 +find.next3383: + %t81 = add i64 %t73, 1 + store i64 %t81, ptr %a72 + br label %find.cond3380 +find.end3384: + %t82 = load i64, ptr %a69 + %t83 = icmp sge i64 %t82, 0 + br label %logic.rend3385 +logic.rend3385: + br label %logic.end3377 +logic.end3377: + %t84 = phi i1 [ true, %logic.from3375 ], [ %t83, %logic.rend3385 ] + br label %logic.rend3386 +logic.rend3386: + br label %logic.end3369 +logic.end3369: + %t85 = phi i1 [ false, %logic.from3367 ], [ %t84, %logic.rend3386 ] + br label %logic.from3387 +logic.from3387: + br i1 %t85, label %logic.rhs3388, label %logic.end3389 +logic.rhs3388: + %t86 = getelementptr inbounds %S.ast.Node, ptr %a3, 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 %range3390, label %inrange3391 +range3390: + call void @finch_panic_index(ptr @.str.2148, i64 1427, i64 0, i64 %t88) unreachable -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 - %t92 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t91) - %t93 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t92, ptr %a94 +inrange3391: + %t90 = extractvalue { ptr, i64, i64 } %t87, 0 + %t91 = getelementptr inbounds %S.ast.Node, ptr %t90, i64 0 + %t92 = load %S.ast.Node, ptr %t91 + %t93 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t92) + %t94 = load { ptr, i64, i64 }, ptr %a2 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.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: + store { ptr, i64, i64 } %t94, ptr %a96 + %t97 = call i32 @finch_str_eq(ptr %a95, ptr %a96) + %t98 = icmp ne i32 %t97, 0 + store { ptr, i64, i64 } %t93, ptr %a99 + call void @finch_str_drop(ptr %a99) + br label %logic.rend3392 +logic.rend3392: + br label %logic.end3389 +logic.end3389: + %t100 = phi i1 [ false, %logic.from3387 ], [ %t98, %logic.rend3392 ] + br i1 %t100, label %then3393, label %endif3395 +then3393: + call void @finch.drop.arr_str(ptr %a17) ret i1 true -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.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.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.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.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.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 %range3189, label %inrange3190 -range3189: - call void @finch_panic_index(ptr @.str.2062, i64 1282, i64 0, i64 %t119) +endif3395: + %t101 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 0 + %t102 = load { ptr, i64, i64 }, ptr %t101 + store { ptr, i64, i64 } %t102, ptr %a103 + store { ptr, i64, i64 } { ptr @.str.2149, i64 4, i64 0 }, ptr %a104 + %t105 = call i32 @finch_str_eq(ptr %a103, ptr %a104) + %t106 = icmp ne i32 %t105, 0 + br label %logic.from3396 +logic.from3396: + br i1 %t106, label %logic.rhs3397, label %logic.end3398 +logic.rhs3397: + %t107 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 1 + %t108 = load { ptr, i64, i64 }, ptr %t107 + store { ptr, i64, i64 } %t108, ptr %a109 + store { ptr, i64, i64 } { ptr @.str.2150, i64 4, i64 0 }, ptr %a110 + %t111 = call i32 @finch_str_eq(ptr %a109, ptr %a110) + %t112 = icmp ne i32 %t111, 0 + br label %logic.rend3399 +logic.rend3399: + br label %logic.end3398 +logic.end3398: + %t113 = phi i1 [ false, %logic.from3396 ], [ %t112, %logic.rend3399 ] + br label %logic.from3400 +logic.from3400: + br i1 %t113, label %logic.rhs3401, label %logic.end3402 +logic.rhs3401: + %t114 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 9 + %t115 = getelementptr inbounds { ptr, i64, i64 }, ptr %t114, i32 0, i32 1 + %t116 = load i64, ptr %t115 + %t117 = icmp eq i64 %t116, 1 + br label %logic.rend3403 +logic.rend3403: + br label %logic.end3402 +logic.end3402: + %t118 = phi i1 [ false, %logic.from3400 ], [ %t117, %logic.rend3403 ] + br label %logic.from3404 +logic.from3404: + br i1 %t118, label %logic.rhs3405, label %logic.end3406 +logic.rhs3405: + %t119 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 9 + %t120 = load { ptr, i64, i64 }, ptr %t119 + %t121 = extractvalue { ptr, i64, i64 } %t120, 1 + %t122 = icmp uge i64 0, %t121 + br i1 %t122, label %range3407, label %inrange3408 +range3407: + call void @finch_panic_index(ptr @.str.2151, i64 1430, i64 0, i64 %t121) unreachable -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 - %t124 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t123) - %t125 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t124, ptr %a126 - 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.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: +inrange3408: + %t123 = extractvalue { ptr, i64, i64 } %t120, 0 + %t124 = getelementptr inbounds %S.ast.Node, ptr %t123, i64 0 + %t125 = load %S.ast.Node, ptr %t124 + %t126 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t125) + %t127 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t126, ptr %a128 + store { ptr, i64, i64 } %t127, ptr %a129 + %t130 = call i32 @finch_str_eq(ptr %a128, ptr %a129) + %t131 = icmp ne i32 %t130, 0 + store { ptr, i64, i64 } %t126, ptr %a132 + call void @finch_str_drop(ptr %a132) + br label %logic.rend3409 +logic.rend3409: + br label %logic.end3406 +logic.end3406: + %t133 = phi i1 [ false, %logic.from3404 ], [ %t131, %logic.rend3409 ] + br i1 %t133, label %then3410, label %endif3412 +then3410: + call void @finch.drop.arr_str(ptr %a17) ret i1 true -endif3194: - %t131 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 9 - store i64 0, ptr %a132 - 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.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 - store %S.ast.Node %t139, ptr %a140 - %t141 = load ptr, ptr %a1 - %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 %then3199, label %endif3201 -then3199: +endif3412: + %t134 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 9 + store i64 0, ptr %a135 + br label %each.cond3413 +each.cond3413: + %t136 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i32 0, i32 1 + %t137 = load i64, ptr %t136 + %t138 = load i64, ptr %a135 + %t139 = icmp slt i64 %t138, %t137 + br i1 %t139, label %each.body3414, label %each.end3416 +each.body3414: + %t140 = load ptr, ptr %t134 + %t141 = getelementptr inbounds %S.ast.Node, ptr %t140, i64 %t138 + %t142 = load %S.ast.Node, ptr %t141 + store %S.ast.Node %t142, ptr %a143 + %t144 = load ptr, ptr %a1 + %t145 = load { ptr, i64, i64 }, ptr %a2 + %t146 = load %S.ast.Node, ptr %a143 + %t147 = call i1 @finch.gen.mutates(ptr %t144, { ptr, i64, i64 } %t145, %S.ast.Node %t146) + br i1 %t147, label %then3417, label %endif3419 +then3417: + call void @finch.drop.arr_str(ptr %a17) ret i1 true -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.cond3195 -each.end3198: +endif3419: + br label %each.step3415 +each.step3415: + %t148 = load i64, ptr %a135 + %t149 = add i64 %t148, 1 + store i64 %t149, ptr %a135 + br label %each.cond3413 +each.end3416: + call void @finch.drop.arr_str(ptr %a17) ret i1 false } @@ -31543,2585 +37096,2762 @@ entry: %a7 = alloca i64, align 16 %a24 = alloca { ptr, i64, i64 }, align 16 %a25 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca i64, align 16 - %a59 = alloca %S.ast.Node, align 16 - %a60 = alloca %S.ast.Node, align 16 + %a28 = alloca { ptr, i64, i64 }, align 16 + %a41 = alloca i64, align 16 + %a61 = alloca %S.ast.Node, align 16 %a62 = alloca %S.ast.Node, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 + %a64 = alloca %S.ast.Node, align 16 %a88 = alloca { ptr, i64, i64 }, align 16 + %a89 = 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 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = 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 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca i64, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca i64, align 16 - %a218 = alloca %S.ast.Node, align 16 - %a219 = alloca %S.ast.Node, align 16 - %a221 = alloca %S.ast.Node, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = 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 + %a97 = alloca { ptr, i64, i64 }, align 16 + %a110 = alloca { ptr, i64, i64 }, align 16 + %a111 = alloca { ptr, i64, i64 }, align 16 + %a116 = alloca { ptr, i64, i64 }, align 16 + %a117 = alloca { ptr, i64, i64 }, align 16 + %a122 = alloca { ptr, i64, i64 }, align 16 + %a123 = alloca { ptr, i64, i64 }, align 16 + %a143 = alloca { ptr, i64, i64 }, align 16 + %a144 = alloca { ptr, i64, i64 }, align 16 + %a149 = alloca { ptr, i64, i64 }, align 16 + %a150 = alloca { ptr, i64, i64 }, align 16 + %a170 = alloca i64, align 16 + %a187 = alloca { ptr, i64, i64 }, align 16 + %a188 = alloca { ptr, i64, i64 }, align 16 + %a191 = alloca { ptr, i64, i64 }, align 16 + %a204 = alloca i64, align 16 + %a224 = alloca %S.ast.Node, align 16 + %a225 = alloca %S.ast.Node, align 16 + %a227 = alloca %S.ast.Node, 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 %a258 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca %S.gen.EnumDef, align 16 - %a268 = alloca i64, align 16 - %a270 = alloca i64, align 16 - %a278 = alloca %S.ast.Node, align 16 - %a285 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca i64, align 16 - %a294 = alloca i64, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a300 = 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 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 + %a260 = alloca { ptr, i64, i64 }, align 16 + %a265 = alloca { ptr, i64, i64 }, align 16 + %a266 = alloca { ptr, i64, i64 }, align 16 + %a271 = alloca { ptr, i64, i64 }, align 16 + %a272 = alloca { ptr, i64, i64 }, align 16 + %a275 = alloca %S.gen.EnumDef, align 16 + %a276 = alloca i64, align 16 + %a278 = alloca i64, align 16 + %a286 = alloca %S.ast.Node, align 16 + %a293 = alloca { ptr, i64, i64 }, align 16 + %a299 = alloca i64, align 16 + %a302 = alloca i64, align 16 + %a307 = alloca { ptr, i64, i64 }, align 16 + %a308 = 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 %a322 = 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 - %a326 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca i64, align 16 - %a334 = alloca i64, align 16 - %a347 = alloca { ptr, i64, i64 }, align 16 - %a348 = alloca { ptr, i64, i64 }, align 16 - %a349 = 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 { ptr, i64, i64 }, align 16 - %a358 = 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 + %a332 = alloca { ptr, i64, i64 }, align 16 + %a334 = 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 + %a339 = alloca { ptr, i64, i64 }, align 16 + %a343 = alloca i64, align 16 + %a346 = alloca i64, align 16 %a359 = alloca { ptr, i64, i64 }, align 16 %a360 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca { ptr, i64, i64 }, align 16 + %a361 = alloca { ptr, i64, i64 }, align 16 %a363 = alloca { ptr, i64, i64 }, align 16 %a364 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 + %a365 = alloca { ptr, i64, i64 }, align 16 + %a366 = alloca { ptr, i64, i64 }, align 16 + %a369 = alloca { ptr, i64, i64 }, align 16 %a371 = alloca { ptr, i64, i64 }, align 16 - %a393 = alloca %S.gen.EnumDef, align 16 - %a394 = alloca %S.gen.EnumDef, align 16 - %a410 = alloca i64, align 16 - %a429 = alloca { ptr, i64, i64 }, align 16 - %a430 = alloca { ptr, i64, i64 }, align 16 - %a448 = alloca i64, align 16 - %a460 = alloca i64, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a478 = alloca { ptr, i64, i64 }, align 16 - %a492 = alloca i64, align 16 - %a512 = alloca %S.ast.Node, align 16 - %a513 = alloca %S.ast.Node, align 16 - %a515 = alloca %S.ast.Node, align 16 - %a535 = alloca { ptr, i64, i64 }, align 16 - %a536 = alloca { ptr, i64, i64 }, align 16 - %a537 = 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 + %a372 = alloca { ptr, i64, i64 }, align 16 + %a373 = alloca { ptr, i64, i64 }, align 16 + %a374 = alloca { ptr, i64, i64 }, align 16 + %a375 = 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 + %a380 = alloca { ptr, i64, i64 }, align 16 + %a382 = alloca { ptr, i64, i64 }, align 16 + %a387 = alloca { ptr, i64, i64 }, align 16 + %a388 = alloca { ptr, i64, i64 }, align 16 + %a410 = alloca %S.gen.EnumDef, align 16 + %a411 = alloca %S.gen.EnumDef, align 16 + %a427 = alloca i64, align 16 + %a446 = alloca { ptr, i64, i64 }, align 16 + %a447 = alloca { ptr, i64, i64 }, align 16 + %a465 = alloca i64, align 16 + %a477 = alloca i64, align 16 + %a494 = alloca { ptr, i64, i64 }, align 16 + %a495 = alloca { ptr, i64, i64 }, align 16 + %a498 = alloca { ptr, i64, i64 }, align 16 + %a511 = alloca i64, align 16 + %a531 = alloca %S.ast.Node, align 16 + %a532 = alloca %S.ast.Node, align 16 + %a534 = alloca %S.ast.Node, align 16 + %a554 = alloca { ptr, i64, i64 }, align 16 + %a555 = 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 + %a560 = alloca { ptr, i64, i64 }, align 16 %a561 = alloca { ptr, i64, i64 }, align 16 - %a562 = alloca { ptr, i64, i64 }, align 16 %a563 = alloca { ptr, i64, i64 }, align 16 - %a565 = alloca { ptr, i64, i64 }, align 16 - %a566 = alloca { ptr, i64, i64 }, align 16 - %a567 = alloca { ptr, i64, i64 }, align 16 - %a577 = alloca { ptr, i64, i64 }, align 16 - %a578 = alloca { ptr, i64, i64 }, align 16 + %a582 = alloca { ptr, i64, i64 }, align 16 %a583 = alloca { ptr, i64, i64 }, align 16 %a584 = alloca { ptr, i64, i64 }, align 16 + %a586 = 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 - %a590 = alloca { ptr, i64, i64 }, align 16 - %a595 = alloca { ptr, i64, i64 }, align 16 - %a596 = alloca { ptr, i64, i64 }, align 16 - %a611 = alloca { ptr, i64, i64 }, align 16 + %a591 = alloca { ptr, i64, i64 }, align 16 + %a600 = alloca { ptr, i64, i64 }, align 16 + %a601 = alloca { ptr, i64, i64 }, align 16 + %a606 = alloca { ptr, i64, i64 }, align 16 + %a607 = alloca { ptr, i64, i64 }, align 16 %a612 = alloca { ptr, i64, i64 }, align 16 - %a614 = alloca { ptr, i64, i64 }, align 16 - %a615 = alloca i1, align 16 - %a642 = alloca { ptr, i64, i64 }, align 16 - %a643 = alloca { ptr, i64, i64 }, align 16 - %a644 = alloca { ptr, i64, i64 }, align 16 - %a646 = alloca { ptr, i64, i64 }, align 16 - %a647 = alloca { ptr, i64, i64 }, align 16 - %a648 = 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 - %a656 = alloca { ptr, i64, i64 }, align 16 - %a657 = alloca { ptr, i64, i64 }, align 16 - %a658 = alloca { ptr, i64, i64 }, align 16 - %a672 = alloca i64, align 16 - %a691 = alloca { ptr, i64, i64 }, align 16 - %a692 = alloca { ptr, i64, i64 }, align 16 - %a693 = alloca { ptr, i64, i64 }, align 16 - %a695 = alloca { ptr, i64, i64 }, align 16 - %a696 = alloca { ptr, i64, i64 }, align 16 - %a697 = alloca { ptr, i64, i64 }, align 16 - %a711 = alloca { ptr, i64, i64 }, align 16 - %a712 = alloca { ptr, i64, i64 }, align 16 + %a613 = alloca { ptr, i64, i64 }, align 16 + %a618 = alloca { ptr, i64, i64 }, align 16 + %a619 = alloca { ptr, i64, i64 }, align 16 + %a634 = alloca { ptr, i64, i64 }, align 16 + %a635 = alloca { ptr, i64, i64 }, align 16 + %a637 = alloca { ptr, i64, i64 }, align 16 + %a638 = alloca i1, align 16 + %a665 = alloca { ptr, i64, i64 }, align 16 + %a666 = alloca { ptr, i64, i64 }, align 16 + %a667 = alloca { ptr, i64, i64 }, align 16 + %a669 = 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 + %a676 = alloca { ptr, i64, i64 }, align 16 + %a677 = alloca { ptr, i64, i64 }, align 16 + %a678 = alloca { ptr, i64, i64 }, align 16 + %a679 = 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 + %a684 = alloca { ptr, i64, i64 }, align 16 + %a686 = alloca { ptr, i64, i64 }, align 16 + %a699 = alloca 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 + %a720 = 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 + %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 - %a742 = alloca i64, align 16 - %a745 = alloca i64, align 16 - %a750 = alloca { ptr, i64, i64 }, align 16 - %a751 = alloca { ptr, i64, i64 }, align 16 + %a729 = alloca { ptr, i64, i64 }, align 16 + %a742 = alloca { ptr, i64, i64 }, align 16 + %a743 = alloca { ptr, i64, i64 }, align 16 + %a744 = alloca { ptr, i64, i64 }, align 16 + %a746 = alloca { ptr, i64, i64 }, align 16 + %a747 = alloca { ptr, i64, i64 }, align 16 + %a748 = alloca { ptr, i64, i64 }, align 16 + %a749 = 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 + %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 %a761 = alloca { ptr, i64, i64 }, align 16 - %a762 = alloca { ptr, i64, i64 }, align 16 %a763 = 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 - %a771 = alloca { ptr, i64, i64 }, align 16 - %a772 = alloca { ptr, i64, i64 }, align 16 - %a773 = 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 - %a792 = alloca { ptr, i64, i64 }, align 16 - %a793 = alloca { ptr, i64, i64 }, align 16 - %a794 = 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 %a796 = alloca { ptr, i64, i64 }, align 16 %a797 = alloca { ptr, i64, i64 }, align 16 %a798 = alloca { ptr, i64, i64 }, align 16 + %a800 = alloca { ptr, i64, i64 }, align 16 + %a801 = alloca { ptr, i64, i64 }, align 16 + %a802 = alloca { ptr, i64, i64 }, align 16 + %a803 = alloca { ptr, i64, i64 }, align 16 %a807 = alloca { ptr, i64, i64 }, align 16 %a808 = alloca { ptr, i64, i64 }, align 16 %a809 = alloca { ptr, i64, i64 }, align 16 - %a811 = alloca { ptr, i64, i64 }, align 16 + %a810 = alloca { ptr, i64, i64 }, align 16 %a812 = alloca { ptr, i64, i64 }, align 16 %a813 = alloca { ptr, i64, i64 }, align 16 - %a819 = alloca { ptr, i64, i64 }, align 16 - %a820 = alloca { ptr, i64, i64 }, align 16 - %a825 = alloca { ptr, i64, i64 }, align 16 - %a826 = 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 %a831 = alloca { ptr, i64, i64 }, align 16 %a832 = alloca { ptr, i64, i64 }, align 16 + %a833 = 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 - %a852 = alloca %S.gen.FnSig, align 16 - %a858 = alloca { ptr, i64, i64 }, align 16 - %a859 = alloca { ptr, i64, i64 }, align 16 - %a860 = alloca { ptr, i64, i64 }, align 16 + %a838 = alloca { ptr, i64, i64 }, align 16 + %a840 = 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 + %a855 = alloca { ptr, i64, i64 }, align 16 + %a857 = alloca { ptr, i64, i64 }, align 16 %a862 = alloca { ptr, i64, i64 }, align 16 %a863 = 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 - %a870 = alloca { ptr, i64, i64 }, align 16 - %a882 = alloca { ptr, i64, i64 }, align 16 - %a883 = alloca { ptr, i64, i64 }, align 16 - %a884 = alloca { ptr, i64, i64 }, align 16 - %a886 = alloca { ptr, i64, i64 }, align 16 - %a887 = alloca { ptr, i64, i64 }, align 16 - %a888 = alloca { ptr, i64, i64 }, align 16 - %a892 = alloca { ptr, i64, i64 }, align 16 - %a893 = alloca { ptr, i64, i64 }, align 16 - %a894 = 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 + %a874 = alloca { ptr, i64, i64 }, align 16 + %a875 = alloca { ptr, i64, i64 }, align 16 + %a879 = alloca { ptr, i64, i64 }, align 16 + %a880 = alloca { ptr, i64, i64 }, align 16 + %a895 = alloca %S.gen.FnSig, align 16 + %a901 = alloca { ptr, i64, i64 }, align 16 %a902 = alloca { ptr, i64, i64 }, align 16 %a903 = alloca { ptr, i64, i64 }, align 16 %a904 = alloca { ptr, i64, i64 }, align 16 - %a917 = alloca i64, align 16 - %a929 = 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 + %a913 = alloca { ptr, i64, i64 }, align 16 + %a914 = alloca { ptr, i64, i64 }, align 16 + %a915 = alloca { ptr, i64, i64 }, align 16 + %a916 = alloca { ptr, i64, i64 }, align 16 + %a920 = alloca { ptr, i64, i64 }, align 16 %a930 = alloca { ptr, i64, i64 }, align 16 + %a931 = alloca { ptr, i64, i64 }, align 16 + %a932 = alloca { ptr, i64, i64 }, align 16 + %a933 = alloca { ptr, i64, i64 }, align 16 + %a935 = 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 + %a942 = alloca { ptr, i64, i64 }, align 16 + %a943 = alloca { ptr, i64, i64 }, align 16 + %a944 = alloca { ptr, i64, i64 }, align 16 + %a945 = alloca { ptr, i64, i64 }, align 16 + %a947 = alloca { ptr, i64, i64 }, align 16 + %a948 = alloca { ptr, i64, i64 }, align 16 %a949 = alloca { ptr, i64, i64 }, align 16 %a950 = alloca { ptr, i64, i64 }, align 16 - %a951 = alloca { ptr, i64, i64 }, align 16 - %a953 = alloca { ptr, i64, i64 }, align 16 %a954 = alloca { ptr, i64, i64 }, align 16 %a955 = alloca { ptr, i64, i64 }, align 16 - %a993 = alloca { ptr, i64, i64 }, align 16 - %a994 = alloca { ptr, i64, i64 }, align 16 - %a1012 = alloca %S.gen.FnSig, align 16 - %a1013 = alloca %S.gen.FnSig, align 16 - %a1023 = alloca i1, align 16 - %a1030 = alloca i64, align 16 - %a1096 = alloca %S.ast.Node, align 16 - %a1097 = alloca %S.ast.Node, align 16 - %a1099 = alloca %S.ast.Node, align 16 - %a1138 = alloca { ptr, i64, i64 }, align 16 - %a1139 = alloca { ptr, i64, i64 }, align 16 - %a1152 = alloca i64, align 16 - %a1165 = alloca %S.gen.Template, align 16 - %a1166 = alloca %S.gen.Template, align 16 - %a1168 = alloca %S.gen.Template, align 16 - %a1196 = alloca %S.ast.Node, align 16 - %a1197 = alloca %S.ast.Node, align 16 - %a1199 = alloca %S.ast.Node, align 16 - %a1229 = alloca { ptr, i64, i64 }, align 16 - %a1230 = alloca { ptr, i64, i64 }, align 16 - %a1243 = alloca i64, align 16 - %a1283 = alloca %S.ast.Node, align 16 - %a1284 = alloca %S.ast.Node, align 16 - %a1286 = alloca %S.ast.Node, align 16 - %a1298 = alloca %S.ast.Node, align 16 - %a1299 = alloca %S.ast.Node, align 16 - %a1301 = alloca %S.ast.Node, align 16 - %a1314 = alloca i64, align 16 - %a1334 = alloca %S.ast.Type, align 16 - %a1335 = alloca %S.ast.Type, align 16 - %a1337 = alloca %S.ast.Type, align 16 + %a956 = alloca { ptr, i64, i64 }, align 16 + %a957 = alloca { ptr, i64, i64 }, align 16 + %a961 = alloca { ptr, i64, i64 }, align 16 + %a969 = alloca %S.ast.Type, align 16 + %a974 = alloca i64, align 16 + %a986 = alloca { ptr, i64, i64 }, align 16 + %a987 = alloca { ptr, i64, i64 }, align 16 + %a1006 = alloca { ptr, i64, i64 }, align 16 + %a1007 = alloca { ptr, i64, i64 }, align 16 + %a1008 = 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 + %a1015 = alloca { ptr, i64, i64 }, align 16 + %a1052 = alloca { ptr, i64, i64 }, align 16 + %a1053 = alloca { ptr, i64, i64 }, align 16 + %a1071 = alloca %S.gen.FnSig, align 16 + %a1072 = alloca %S.gen.FnSig, align 16 + %a1082 = alloca i1, align 16 + %a1089 = alloca i64, align 16 + %a1155 = alloca %S.ast.Node, align 16 + %a1156 = alloca %S.ast.Node, align 16 + %a1158 = alloca %S.ast.Node, align 16 + %a1197 = alloca { ptr, i64, i64 }, align 16 + %a1198 = alloca { ptr, i64, i64 }, align 16 + %a1211 = alloca i64, align 16 + %a1224 = alloca %S.gen.Template, align 16 + %a1225 = alloca %S.gen.Template, align 16 + %a1227 = alloca %S.gen.Template, align 16 + %a1255 = alloca %S.ast.Node, align 16 + %a1256 = alloca %S.ast.Node, align 16 + %a1258 = alloca %S.ast.Node, align 16 + %a1288 = alloca { ptr, i64, i64 }, align 16 + %a1289 = alloca { ptr, i64, i64 }, align 16 + %a1302 = alloca i64, align 16 + %a1342 = alloca %S.ast.Node, align 16 + %a1343 = alloca %S.ast.Node, align 16 + %a1345 = alloca %S.ast.Node, align 16 + %a1357 = alloca %S.ast.Node, align 16 + %a1358 = alloca %S.ast.Node, align 16 + %a1360 = alloca %S.ast.Node, align 16 + %a1373 = alloca i64, align 16 + %a1393 = alloca %S.ast.Type, align 16 + %a1394 = alloca %S.ast.Type, align 16 + %a1396 = alloca %S.ast.Type, align 16 store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic3202, label %ok3203 -panic3202: - call void @finch_panic(ptr @.str.2063, i64 1296, ptr @.str.2064) + br i1 %t3, label %panic3420, label %ok3421 +panic3420: + call void @finch_panic(ptr @.str.2152, i64 1444, ptr @.str.2153) unreachable -ok3203: +ok3421: %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.cond3204 -for.cond3204: + br label %for.cond3422 +for.cond3422: %t8 = load i64, ptr %a7 %t9 = icmp slt i64 %t8, %t6 - br i1 %t9, label %for.body3205, label %for.end3207 -for.body3205: + br i1 %t9, label %for.body3423, label %for.end3425 +for.body3423: %t10 = load ptr, ptr %a1 %t11 = icmp eq ptr %t10, null - br i1 %t11, label %panic3208, label %ok3209 -panic3208: - call void @finch_panic(ptr @.str.2065, i64 1297, ptr @.str.2066) + br i1 %t11, label %panic3426, label %ok3427 +panic3426: + call void @finch_panic(ptr @.str.2154, i64 1445, ptr @.str.2155) unreachable -ok3209: +ok3427: %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 %range3210, label %inrange3211 -range3210: - call void @finch_panic_index(ptr @.str.2067, i64 1297, i64 %t13, i64 %t15) + br i1 %t16, label %range3428, label %inrange3429 +range3428: + call void @finch_panic_index(ptr @.str.2156, i64 1445, i64 %t13, i64 %t15) unreachable -inrange3211: +inrange3429: %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 %panic3212, label %ok3213 -panic3212: - call void @finch_panic(ptr @.str.2068, i64 1297, ptr @.str.2069) + br i1 %t22, label %panic3430, label %ok3431 +panic3430: + call void @finch_panic(ptr @.str.2157, i64 1445, ptr @.str.2158) unreachable -ok3213: - %t23 = getelementptr inbounds %S.gen.Gen, ptr %t21, i32 0, i32 13 +ok3431: + %t23 = getelementptr inbounds %S.gen.Gen, ptr %t21, i32 0, i32 14 store { ptr, i64, i64 } %t20, ptr %a24 call void @finch_str_copy(ptr %a25, ptr %a24) %t26 = load { ptr, i64, i64 }, ptr %a25 + %t27 = load { ptr, i64, i64 }, ptr %t23 store { ptr, i64, i64 } %t26, ptr %t23 - %t27 = load ptr, ptr %a1 - %t28 = icmp eq ptr %t27, null - br i1 %t28, label %panic3214, label %ok3215 -panic3214: - call void @finch_panic(ptr @.str.2070, i64 1298, ptr @.str.2071) + store { ptr, i64, i64 } %t27, ptr %a28 + call void @finch_str_drop(ptr %a28) + %t29 = load ptr, ptr %a1 + %t30 = icmp eq ptr %t29, null + br i1 %t30, label %panic3432, label %ok3433 +panic3432: + call void @finch_panic(ptr @.str.2159, i64 1446, ptr @.str.2160) unreachable -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 %range3216, label %inrange3217 -range3216: - call void @finch_panic_index(ptr @.str.2072, i64 1298, i64 %t30, i64 %t32) +ok3433: + %t31 = getelementptr inbounds %S.gen.Gen, ptr %t29, i32 0, i32 0 + %t32 = load i64, ptr %a7 + %t33 = load { ptr, i64, i64 }, ptr %t31 + %t34 = extractvalue { ptr, i64, i64 } %t33, 1 + %t35 = icmp uge i64 %t32, %t34 + br i1 %t35, label %range3434, label %inrange3435 +range3434: + call void @finch_panic_index(ptr @.str.2161, i64 1446, i64 %t32, i64 %t34) unreachable -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.cond3218 -for.cond3218: - %t40 = load i64, ptr %a39 - %t41 = icmp slt i64 %t40, %t38 - 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 %panic3222, label %ok3223 -panic3222: - call void @finch_panic(ptr @.str.2073, i64 1299, ptr @.str.2074) +inrange3435: + %t36 = extractvalue { ptr, i64, i64 } %t33, 0 + %t37 = getelementptr inbounds %S.ast.Program, ptr %t36, i64 %t32 + %t38 = getelementptr inbounds %S.ast.Program, ptr %t37, i32 0, i32 6 + %t39 = getelementptr inbounds { ptr, i64, i64 }, ptr %t38, i32 0, i32 1 + %t40 = load i64, ptr %t39 + store i64 0, ptr %a41 + br label %for.cond3436 +for.cond3436: + %t42 = load i64, ptr %a41 + %t43 = icmp slt i64 %t42, %t40 + br i1 %t43, label %for.body3437, label %for.end3439 +for.body3437: + %t44 = load ptr, ptr %a1 + %t45 = icmp eq ptr %t44, null + br i1 %t45, label %panic3440, label %ok3441 +panic3440: + call void @finch_panic(ptr @.str.2162, i64 1447, ptr @.str.2163) unreachable -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 %range3224, label %inrange3225 -range3224: - call void @finch_panic_index(ptr @.str.2075, i64 1299, i64 %t45, i64 %t47) +ok3441: + %t46 = getelementptr inbounds %S.gen.Gen, ptr %t44, i32 0, i32 0 + %t47 = load i64, ptr %a7 + %t48 = load { ptr, i64, i64 }, ptr %t46 + %t49 = extractvalue { ptr, i64, i64 } %t48, 1 + %t50 = icmp uge i64 %t47, %t49 + br i1 %t50, label %range3442, label %inrange3443 +range3442: + call void @finch_panic_index(ptr @.str.2164, i64 1447, i64 %t47, i64 %t49) unreachable -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 - %t52 = load i64, ptr %a39 - %t53 = load { ptr, i64, i64 }, ptr %t51 - %t54 = extractvalue { ptr, i64, i64 } %t53, 1 - %t55 = icmp uge i64 %t52, %t54 - br i1 %t55, label %range3226, label %inrange3227 -range3226: - call void @finch_panic_index(ptr @.str.2076, i64 1299, i64 %t52, i64 %t54) +inrange3443: + %t51 = extractvalue { ptr, i64, i64 } %t48, 0 + %t52 = getelementptr inbounds %S.ast.Program, ptr %t51, i64 %t47 + %t53 = getelementptr inbounds %S.ast.Program, ptr %t52, i32 0, i32 6 + %t54 = load i64, ptr %a41 + %t55 = load { ptr, i64, i64 }, ptr %t53 + %t56 = extractvalue { ptr, i64, i64 } %t55, 1 + %t57 = icmp uge i64 %t54, %t56 + br i1 %t57, label %range3444, label %inrange3445 +range3444: + call void @finch_panic_index(ptr @.str.2165, i64 1447, i64 %t54, i64 %t56) unreachable -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 - store %S.ast.Node %t58, ptr %a59 - call void @finch.copy.S_ast_Node(ptr %a60, ptr %a59) - %t61 = load %S.ast.Node, ptr %a60 - store %S.ast.Node %t61, ptr %a62 - %t63 = load ptr, ptr %a1 - %t64 = load ptr, ptr %a1 - %t65 = icmp eq ptr %t64, null - br i1 %t65, label %panic3228, label %ok3229 -panic3228: - call void @finch_panic(ptr @.str.2077, i64 1300, ptr @.str.2078) +inrange3445: + %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 = load ptr, ptr %a1 + %t66 = load ptr, ptr %a1 + %t67 = icmp eq ptr %t66, null + br i1 %t67, label %panic3446, label %ok3447 +panic3446: + call void @finch_panic(ptr @.str.2166, i64 1448, ptr @.str.2167) unreachable -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 +ok3447: + %t68 = getelementptr inbounds %S.gen.Gen, ptr %t66, i32 0, i32 14 %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.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 %panic3233, label %ok3234 -panic3233: - call void @finch_panic(ptr @.str.2079, i64 1300, ptr @.str.2080) + %t70 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 1 + %t71 = load { ptr, i64, i64 }, ptr %t70 + %t72 = call i64 @finch.gen.findStruct(ptr %t65, { ptr, i64, i64 } %t69, { ptr, i64, i64 } %t71) + %t73 = icmp sge i64 %t72, 0 + br label %logic.from3448 +logic.from3448: + br i1 %t73, label %logic.end3450, label %logic.rhs3449 +logic.rhs3449: + %t74 = load ptr, ptr %a1 + %t75 = load ptr, ptr %a1 + %t76 = icmp eq ptr %t75, null + br i1 %t76, label %panic3451, label %ok3452 +panic3451: + call void @finch_panic(ptr @.str.2168, i64 1448, ptr @.str.2169) unreachable -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 +ok3452: + %t77 = getelementptr inbounds %S.gen.Gen, ptr %t75, i32 0, i32 14 %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.2081, i64 0, i64 0 }, i1 true) - %t80 = icmp sge i64 %t79, 0 - 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.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.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 %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 %then3239, label %endif3241 -then3239: - %t98 = load ptr, ptr %a1 - %t99 = icmp eq ptr %t98, null - br i1 %t99, label %panic3242, label %ok3243 -panic3242: - call void @finch_panic(ptr @.str.2084, i64 1305, ptr @.str.2085) - unreachable -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 + %t79 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 1 + %t80 = load { ptr, i64, i64 }, ptr %t79 + %t81 = call i64 @finch.gen.findTemplate(ptr %t74, { ptr, i64, i64 } %t78, { ptr, i64, i64 } %t80, { ptr, i64, i64 } { ptr @.str.2170, i64 0, i64 0 }, i1 true) + %t82 = icmp sge i64 %t81, 0 + br label %logic.rend3453 +logic.rend3453: + br label %logic.end3450 +logic.end3450: + %t83 = phi i1 [ true, %logic.from3448 ], [ %t82, %logic.rend3453 ] + br i1 %t83, label %then3454, label %endif3456 +then3454: + %t84 = load ptr, ptr %a1 + %t85 = load %S.ast.Node, ptr %a64 + %t86 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 1 + %t87 = load { ptr, i64, i64 }, ptr %t86 + store { ptr, i64, i64 } { ptr @.str.2171, i64 12, 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.2172, i64 18, i64 0 }, ptr %a94 + call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) + store { ptr, i64, i64 } %t91, ptr %a95 + call void @finch_str_drop(ptr %a95) + %t96 = load { ptr, i64, i64 }, ptr %a92 + call void @finch.gen.fail(ptr %t84, %S.ast.Node %t85, { ptr, i64, i64 } %t96) + store { ptr, i64, i64 } %t96, ptr %a97 + call void @finch_str_drop(ptr %a97) + br label %endif3456 +endif3456: + %t98 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 3 + %t99 = getelementptr inbounds { ptr, i64, i64 }, ptr %t98, i32 0, i32 1 + %t100 = load i64, ptr %t99 + %t101 = icmp sgt i64 %t100, 0 + br i1 %t101, label %then3457, label %endif3459 +then3457: %t102 = load ptr, ptr %a1 %t103 = icmp eq ptr %t102, null - br i1 %t103, label %panic3244, label %ok3245 -panic3244: - call void @finch_panic(ptr @.str.2086, i64 1305, ptr @.str.2087) + br i1 %t103, label %panic3460, label %ok3461 +panic3460: + call void @finch_panic(ptr @.str.2173, i64 1453, ptr @.str.2174) unreachable -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 - call void @finch_str_copy(ptr %a107, ptr %a106) - %t108 = load { ptr, i64, i64 }, ptr %a107 - %t109 = insertvalue %S.gen.Template zeroinitializer, { ptr, i64, i64 } %t108, 0 - %t110 = getelementptr inbounds %S.ast.Node, ptr %a62, i32 0, i32 1 - %t111 = load { ptr, i64, i64 }, ptr %t110 - store { ptr, i64, i64 } %t111, ptr %a112 - call void @finch_str_copy(ptr %a113, ptr %a112) - %t114 = load { ptr, i64, i64 }, ptr %a113 - %t115 = insertvalue %S.gen.Template %t109, { ptr, i64, i64 } %t114, 1 - %t116 = getelementptr inbounds %S.ast.Node, ptr %a62, i32 0, i32 3 - %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 - %t121 = insertvalue %S.gen.Template %t115, { ptr, i64, i64 } %t120, 3 - %t122 = load i64, ptr %a7 - %t123 = insertvalue %S.gen.Template %t121, i64 %t122, 4 - %t124 = load i64, ptr %a39 - %t125 = insertvalue %S.gen.Template %t123, i64 %t124, 5 - %t126 = insertvalue %S.gen.Template %t125, i1 true, 6 - %t127 = load i64, ptr %t101 - %t128 = add i64 %t127, 1 - call void @finch_arr_reserve(ptr %t100, i64 %t128, i64 ptrtoint (ptr getelementptr (%S.gen.Template, ptr null, i32 1) to i64)) - %t129 = load ptr, ptr %t100 - %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.step3220 -endif3241: - %t131 = load ptr, ptr %a1 - %t132 = icmp eq ptr %t131, null - br i1 %t132, label %panic3246, label %ok3247 -panic3246: - call void @finch_panic(ptr @.str.2088, i64 1308, ptr @.str.2089) +ok3461: + %t104 = getelementptr inbounds %S.gen.Gen, ptr %t102, i32 0, i32 17 + %t105 = getelementptr inbounds { ptr, i64, i64 }, ptr %t104, i32 0, i32 1 + %t106 = load ptr, ptr %a1 + %t107 = icmp eq ptr %t106, null + br i1 %t107, label %panic3462, label %ok3463 +panic3462: + call void @finch_panic(ptr @.str.2175, i64 1453, ptr @.str.2176) unreachable -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 +ok3463: + %t108 = getelementptr inbounds %S.gen.Gen, ptr %t106, i32 0, i32 14 + %t109 = load { ptr, i64, i64 }, ptr %t108 + store { ptr, i64, i64 } %t109, ptr %a110 + call void @finch_str_copy(ptr %a111, ptr %a110) + %t112 = load { ptr, i64, i64 }, ptr %a111 + %t113 = insertvalue %S.gen.Template zeroinitializer, { ptr, i64, i64 } %t112, 0 + %t114 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 1 + %t115 = load { ptr, i64, i64 }, ptr %t114 + store { ptr, i64, i64 } %t115, ptr %a116 + call void @finch_str_copy(ptr %a117, ptr %a116) + %t118 = load { ptr, i64, i64 }, ptr %a117 + %t119 = insertvalue %S.gen.Template %t113, { ptr, i64, i64 } %t118, 1 + %t120 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 3 + %t121 = load { ptr, i64, i64 }, ptr %t120 + store { ptr, i64, i64 } %t121, ptr %a122 + call void @finch.copy.arr_str(ptr %a123, ptr %a122) + %t124 = load { ptr, i64, i64 }, ptr %a123 + %t125 = insertvalue %S.gen.Template %t119, { ptr, i64, i64 } %t124, 3 + %t126 = load i64, ptr %a7 + %t127 = insertvalue %S.gen.Template %t125, i64 %t126, 4 + %t128 = load i64, ptr %a41 + %t129 = insertvalue %S.gen.Template %t127, i64 %t128, 5 + %t130 = insertvalue %S.gen.Template %t129, i1 true, 6 + %t131 = load i64, ptr %t105 + %t132 = add i64 %t131, 1 + call void @finch_arr_reserve(ptr %t104, i64 %t132, i64 ptrtoint (ptr getelementptr (%S.gen.Template, ptr null, i32 1) to i64)) + %t133 = load ptr, ptr %t104 + %t134 = getelementptr inbounds %S.gen.Template, ptr %t133, i64 %t131 + store %S.gen.Template %t130, ptr %t134 + store i64 %t132, ptr %t105 + call void @finch.drop.S_ast_Node(ptr %a64) + br label %for.step3438 +endif3459: %t135 = load ptr, ptr %a1 %t136 = icmp eq ptr %t135, null - br i1 %t136, label %panic3248, label %ok3249 -panic3248: - call void @finch_panic(ptr @.str.2090, i64 1308, ptr @.str.2091) + br i1 %t136, label %panic3464, label %ok3465 +panic3464: + call void @finch_panic(ptr @.str.2177, i64 1456, ptr @.str.2178) unreachable -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 - call void @finch_str_copy(ptr %a140, ptr %a139) - %t141 = load { ptr, i64, i64 }, ptr %a140 - %t142 = insertvalue %S.gen.StructDef zeroinitializer, { ptr, i64, i64 } %t141, 0 - %t143 = getelementptr inbounds %S.ast.Node, ptr %a62, i32 0, i32 1 - %t144 = load { ptr, i64, i64 }, ptr %t143 - store { ptr, i64, i64 } %t144, ptr %a145 - call void @finch_str_copy(ptr %a146, ptr %a145) - %t147 = load { ptr, i64, i64 }, ptr %a146 - %t148 = insertvalue %S.gen.StructDef %t142, { ptr, i64, i64 } %t147, 1 - %t149 = load i64, ptr %a7 - %t150 = insertvalue %S.gen.StructDef %t148, i64 %t149, 13 - %t151 = load i64, ptr %a39 - %t152 = insertvalue %S.gen.StructDef %t150, i64 %t151, 14 - %t153 = load i64, ptr %t134 - %t154 = add i64 %t153, 1 - call void @finch_arr_reserve(ptr %t133, i64 %t154, i64 ptrtoint (ptr getelementptr (%S.gen.StructDef, ptr null, i32 1) to i64)) - %t155 = load ptr, ptr %t133 - %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.step3220 -for.step3220: - %t157 = load i64, ptr %a39 +ok3465: + %t137 = getelementptr inbounds %S.gen.Gen, ptr %t135, i32 0, i32 16 + %t138 = getelementptr inbounds { ptr, i64, i64 }, ptr %t137, i32 0, i32 1 + %t139 = load ptr, ptr %a1 + %t140 = icmp eq ptr %t139, null + br i1 %t140, label %panic3466, label %ok3467 +panic3466: + call void @finch_panic(ptr @.str.2179, i64 1456, ptr @.str.2180) + unreachable +ok3467: + %t141 = getelementptr inbounds %S.gen.Gen, ptr %t139, i32 0, i32 14 + %t142 = load { ptr, i64, i64 }, ptr %t141 + store { ptr, i64, i64 } %t142, ptr %a143 + call void @finch_str_copy(ptr %a144, ptr %a143) + %t145 = load { ptr, i64, i64 }, ptr %a144 + %t146 = insertvalue %S.gen.StructDef zeroinitializer, { ptr, i64, i64 } %t145, 0 + %t147 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 1 + %t148 = load { ptr, i64, i64 }, ptr %t147 + store { ptr, i64, i64 } %t148, ptr %a149 + call void @finch_str_copy(ptr %a150, ptr %a149) + %t151 = load { ptr, i64, i64 }, ptr %a150 + %t152 = insertvalue %S.gen.StructDef %t146, { ptr, i64, i64 } %t151, 1 + %t153 = load i64, ptr %a7 + %t154 = insertvalue %S.gen.StructDef %t152, i64 %t153, 13 + %t155 = load i64, ptr %a41 + %t156 = insertvalue %S.gen.StructDef %t154, i64 %t155, 14 + %t157 = load i64, ptr %t138 %t158 = add i64 %t157, 1 - store i64 %t158, ptr %a39 - 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.cond3204 -for.end3207: - %t161 = load ptr, ptr %a1 - %t162 = icmp eq ptr %t161, null - br i1 %t162, label %panic3250, label %ok3251 -panic3250: - call void @finch_panic(ptr @.str.2092, i64 1311, ptr @.str.2093) + call void @finch_arr_reserve(ptr %t137, i64 %t158, i64 ptrtoint (ptr getelementptr (%S.gen.StructDef, ptr null, i32 1) to i64)) + %t159 = load ptr, ptr %t137 + %t160 = getelementptr inbounds %S.gen.StructDef, ptr %t159, i64 %t157 + store %S.gen.StructDef %t156, ptr %t160 + store i64 %t158, ptr %t138 + call void @finch.drop.S_ast_Node(ptr %a64) + br label %for.step3438 +for.step3438: + %t161 = load i64, ptr %a41 + %t162 = add i64 %t161, 1 + store i64 %t162, ptr %a41 + br label %for.cond3436 +for.end3439: + br label %for.step3424 +for.step3424: + %t163 = load i64, ptr %a7 + %t164 = add i64 %t163, 1 + store i64 %t164, ptr %a7 + br label %for.cond3422 +for.end3425: + %t165 = load ptr, ptr %a1 + %t166 = icmp eq ptr %t165, null + br i1 %t166, label %panic3468, label %ok3469 +panic3468: + call void @finch_panic(ptr @.str.2181, i64 1459, ptr @.str.2182) unreachable -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.cond3252 -for.cond3252: - %t167 = load i64, ptr %a166 - %t168 = icmp slt i64 %t167, %t165 - 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 %panic3256, label %ok3257 -panic3256: - call void @finch_panic(ptr @.str.2094, i64 1312, ptr @.str.2095) +ok3469: + %t167 = getelementptr inbounds %S.gen.Gen, ptr %t165, i32 0, i32 0 + %t168 = getelementptr inbounds { ptr, i64, i64 }, ptr %t167, i32 0, i32 1 + %t169 = load i64, ptr %t168 + store i64 0, ptr %a170 + br label %for.cond3470 +for.cond3470: + %t171 = load i64, ptr %a170 + %t172 = icmp slt i64 %t171, %t169 + br i1 %t172, label %for.body3471, label %for.end3473 +for.body3471: + %t173 = load ptr, ptr %a1 + %t174 = icmp eq ptr %t173, null + br i1 %t174, label %panic3474, label %ok3475 +panic3474: + call void @finch_panic(ptr @.str.2183, i64 1460, ptr @.str.2184) unreachable -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 %range3258, label %inrange3259 -range3258: - call void @finch_panic_index(ptr @.str.2096, i64 1312, i64 %t172, i64 %t174) +ok3475: + %t175 = getelementptr inbounds %S.gen.Gen, ptr %t173, i32 0, i32 0 + %t176 = load i64, ptr %a170 + %t177 = load { ptr, i64, i64 }, ptr %t175 + %t178 = extractvalue { ptr, i64, i64 } %t177, 1 + %t179 = icmp uge i64 %t176, %t178 + br i1 %t179, label %range3476, label %inrange3477 +range3476: + call void @finch_panic_index(ptr @.str.2185, i64 1460, i64 %t176, i64 %t178) unreachable -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 %panic3260, label %ok3261 -panic3260: - call void @finch_panic(ptr @.str.2097, i64 1312, ptr @.str.2098) +inrange3477: + %t180 = extractvalue { ptr, i64, i64 } %t177, 0 + %t181 = getelementptr inbounds %S.ast.Program, ptr %t180, i64 %t176 + %t182 = getelementptr inbounds %S.ast.Program, ptr %t181, i32 0, i32 0 + %t183 = load { ptr, i64, i64 }, ptr %t182 + %t184 = load ptr, ptr %a1 + %t185 = icmp eq ptr %t184, null + br i1 %t185, label %panic3478, label %ok3479 +panic3478: + call void @finch_panic(ptr @.str.2186, i64 1460, ptr @.str.2187) unreachable -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) - %t185 = load { ptr, i64, i64 }, ptr %a184 - store { ptr, i64, i64 } %t185, ptr %t182 - %t186 = load ptr, ptr %a1 - %t187 = icmp eq ptr %t186, null - br i1 %t187, label %panic3262, label %ok3263 -panic3262: - call void @finch_panic(ptr @.str.2099, i64 1313, ptr @.str.2100) +ok3479: + %t186 = getelementptr inbounds %S.gen.Gen, ptr %t184, i32 0, i32 14 + store { ptr, i64, i64 } %t183, ptr %a187 + call void @finch_str_copy(ptr %a188, ptr %a187) + %t189 = load { ptr, i64, i64 }, ptr %a188 + %t190 = load { ptr, i64, i64 }, ptr %t186 + store { ptr, i64, i64 } %t189, ptr %t186 + store { ptr, i64, i64 } %t190, ptr %a191 + call void @finch_str_drop(ptr %a191) + %t192 = load ptr, ptr %a1 + %t193 = icmp eq ptr %t192, null + br i1 %t193, label %panic3480, label %ok3481 +panic3480: + call void @finch_panic(ptr @.str.2188, i64 1461, ptr @.str.2189) unreachable -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 %range3264, label %inrange3265 -range3264: - call void @finch_panic_index(ptr @.str.2101, i64 1313, i64 %t189, i64 %t191) +ok3481: + %t194 = getelementptr inbounds %S.gen.Gen, ptr %t192, i32 0, i32 0 + %t195 = load i64, ptr %a170 + %t196 = load { ptr, i64, i64 }, ptr %t194 + %t197 = extractvalue { ptr, i64, i64 } %t196, 1 + %t198 = icmp uge i64 %t195, %t197 + br i1 %t198, label %range3482, label %inrange3483 +range3482: + call void @finch_panic_index(ptr @.str.2190, i64 1461, i64 %t195, i64 %t197) unreachable -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.cond3266 -for.cond3266: - %t199 = load i64, ptr %a198 - %t200 = icmp slt i64 %t199, %t197 - 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 %panic3270, label %ok3271 -panic3270: - call void @finch_panic(ptr @.str.2102, i64 1314, ptr @.str.2103) +inrange3483: + %t199 = extractvalue { ptr, i64, i64 } %t196, 0 + %t200 = getelementptr inbounds %S.ast.Program, ptr %t199, i64 %t195 + %t201 = getelementptr inbounds %S.ast.Program, ptr %t200, i32 0, i32 7 + %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.cond3484 +for.cond3484: + %t205 = load i64, ptr %a204 + %t206 = icmp slt i64 %t205, %t203 + br i1 %t206, label %for.body3485, label %for.end3487 +for.body3485: + %t207 = load ptr, ptr %a1 + %t208 = icmp eq ptr %t207, null + br i1 %t208, label %panic3488, label %ok3489 +panic3488: + call void @finch_panic(ptr @.str.2191, i64 1462, ptr @.str.2192) unreachable -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 %range3272, label %inrange3273 -range3272: - call void @finch_panic_index(ptr @.str.2104, i64 1314, i64 %t204, i64 %t206) +ok3489: + %t209 = getelementptr inbounds %S.gen.Gen, ptr %t207, i32 0, i32 0 + %t210 = load i64, ptr %a170 + %t211 = load { ptr, i64, i64 }, ptr %t209 + %t212 = extractvalue { ptr, i64, i64 } %t211, 1 + %t213 = icmp uge i64 %t210, %t212 + br i1 %t213, label %range3490, label %inrange3491 +range3490: + call void @finch_panic_index(ptr @.str.2193, i64 1462, i64 %t210, i64 %t212) unreachable -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 - %t211 = load i64, ptr %a198 - %t212 = load { ptr, i64, i64 }, ptr %t210 - %t213 = extractvalue { ptr, i64, i64 } %t212, 1 - %t214 = icmp uge i64 %t211, %t213 - br i1 %t214, label %range3274, label %inrange3275 -range3274: - call void @finch_panic_index(ptr @.str.2105, i64 1314, i64 %t211, i64 %t213) +inrange3491: + %t214 = extractvalue { ptr, i64, i64 } %t211, 0 + %t215 = getelementptr inbounds %S.ast.Program, ptr %t214, i64 %t210 + %t216 = getelementptr inbounds %S.ast.Program, ptr %t215, i32 0, i32 7 + %t217 = load i64, ptr %a204 + %t218 = load { ptr, i64, i64 }, ptr %t216 + %t219 = extractvalue { ptr, i64, i64 } %t218, 1 + %t220 = icmp uge i64 %t217, %t219 + br i1 %t220, label %range3492, label %inrange3493 +range3492: + call void @finch_panic_index(ptr @.str.2194, i64 1462, i64 %t217, i64 %t219) unreachable -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 - store %S.ast.Node %t217, ptr %a218 - call void @finch.copy.S_ast_Node(ptr %a219, ptr %a218) - %t220 = load %S.ast.Node, ptr %a219 - store %S.ast.Node %t220, ptr %a221 - %t222 = load ptr, ptr %a1 - %t223 = load ptr, ptr %a1 - %t224 = icmp eq ptr %t223, null - br i1 %t224, label %panic3276, label %ok3277 -panic3276: - call void @finch_panic(ptr @.str.2106, i64 1315, ptr @.str.2107) +inrange3493: + %t221 = extractvalue { ptr, i64, i64 } %t218, 0 + %t222 = getelementptr inbounds %S.ast.Node, ptr %t221, i64 %t217 + %t223 = load %S.ast.Node, ptr %t222 + store %S.ast.Node %t223, ptr %a224 + call void @finch.copy.S_ast_Node(ptr %a225, ptr %a224) + %t226 = load %S.ast.Node, ptr %a225 + store %S.ast.Node %t226, ptr %a227 + %t228 = load ptr, ptr %a1 + %t229 = load ptr, ptr %a1 + %t230 = icmp eq ptr %t229, null + br i1 %t230, label %panic3494, label %ok3495 +panic3494: + call void @finch_panic(ptr @.str.2195, i64 1463, ptr @.str.2196) unreachable -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.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 %panic3281, label %ok3282 -panic3281: - call void @finch_panic(ptr @.str.2108, i64 1315, ptr @.str.2109) +ok3495: + %t231 = getelementptr inbounds %S.gen.Gen, ptr %t229, i32 0, i32 14 + %t232 = load { ptr, i64, i64 }, ptr %t231 + %t233 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 + %t234 = load { ptr, i64, i64 }, ptr %t233 + %t235 = call i64 @finch.gen.findEnum(ptr %t228, { ptr, i64, i64 } %t232, { ptr, i64, i64 } %t234) + %t236 = icmp sge i64 %t235, 0 + br label %logic.from3496 +logic.from3496: + br i1 %t236, label %logic.end3498, label %logic.rhs3497 +logic.rhs3497: + %t237 = load ptr, ptr %a1 + %t238 = load ptr, ptr %a1 + %t239 = icmp eq ptr %t238, null + br i1 %t239, label %panic3499, label %ok3500 +panic3499: + call void @finch_panic(ptr @.str.2197, i64 1463, ptr @.str.2198) unreachable -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.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.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.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 %endif3286 -endif3286: - %t253 = load ptr, ptr %a1 - %t254 = icmp eq ptr %t253, null - br i1 %t254, label %panic3287, label %ok3288 -panic3287: - call void @finch_panic(ptr @.str.2112, i64 1318, ptr @.str.2113) +ok3500: + %t240 = getelementptr inbounds %S.gen.Gen, ptr %t238, i32 0, i32 14 + %t241 = load { ptr, i64, i64 }, ptr %t240 + %t242 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 + %t243 = load { ptr, i64, i64 }, ptr %t242 + %t244 = call i64 @finch.gen.findStruct(ptr %t237, { ptr, i64, i64 } %t241, { ptr, i64, i64 } %t243) + %t245 = icmp sge i64 %t244, 0 + br label %logic.rend3501 +logic.rend3501: + br label %logic.end3498 +logic.end3498: + %t246 = phi i1 [ true, %logic.from3496 ], [ %t245, %logic.rend3501 ] + br i1 %t246, label %then3502, label %endif3504 +then3502: + %t247 = load ptr, ptr %a1 + %t248 = load %S.ast.Node, ptr %a227 + %t249 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 + %t250 = load { ptr, i64, i64 }, ptr %t249 + store { ptr, i64, i64 } { ptr @.str.2199, i64 1, 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.2200, i64 18, i64 0 }, ptr %a257 + call void @finch_str_concat(ptr %a255, ptr %a256, ptr %a257) + store { ptr, i64, i64 } %t254, ptr %a258 + call void @finch_str_drop(ptr %a258) + %t259 = load { ptr, i64, i64 }, ptr %a255 + call void @finch.gen.fail(ptr %t247, %S.ast.Node %t248, { ptr, i64, i64 } %t259) + store { ptr, i64, i64 } %t259, ptr %a260 + call void @finch_str_drop(ptr %a260) + br label %endif3504 +endif3504: + %t261 = load ptr, ptr %a1 + %t262 = icmp eq ptr %t261, null + br i1 %t262, label %panic3505, label %ok3506 +panic3505: + call void @finch_panic(ptr @.str.2201, i64 1466, ptr @.str.2202) unreachable -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 - call void @finch_str_copy(ptr %a258, ptr %a257) - %t259 = load { ptr, i64, i64 }, ptr %a258 - %t260 = insertvalue %S.gen.EnumDef zeroinitializer, { ptr, i64, i64 } %t259, 0 - %t261 = getelementptr inbounds %S.ast.Node, ptr %a221, i32 0, i32 1 - %t262 = load { ptr, i64, i64 }, ptr %t261 - store { ptr, i64, i64 } %t262, ptr %a263 - call void @finch_str_copy(ptr %a264, ptr %a263) - %t265 = load { ptr, i64, i64 }, ptr %a264 - %t266 = insertvalue %S.gen.EnumDef %t260, { ptr, i64, i64 } %t265, 1 - store %S.gen.EnumDef %t266, ptr %a267 - 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.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.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 - store %S.ast.Node %t277, ptr %a278 - %t279 = getelementptr inbounds %S.ast.Node, ptr %a278, i32 0, i32 4 - %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 %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.2114, i64 1322) - store i64 %t286, ptr %a268 - br label %endif3295 -endif3295: - %t287 = getelementptr inbounds %S.gen.EnumDef, ptr %a267, i32 0, i32 2 +ok3506: + %t263 = getelementptr inbounds %S.gen.Gen, ptr %t261, i32 0, i32 14 + %t264 = load { ptr, i64, i64 }, ptr %t263 + store { ptr, i64, i64 } %t264, ptr %a265 + call void @finch_str_copy(ptr %a266, ptr %a265) + %t267 = load { ptr, i64, i64 }, ptr %a266 + %t268 = insertvalue %S.gen.EnumDef zeroinitializer, { ptr, i64, i64 } %t267, 0 + %t269 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 + %t270 = load { ptr, i64, i64 }, ptr %t269 + store { ptr, i64, i64 } %t270, ptr %a271 + call void @finch_str_copy(ptr %a272, ptr %a271) + %t273 = load { ptr, i64, i64 }, ptr %a272 + %t274 = insertvalue %S.gen.EnumDef %t268, { ptr, i64, i64 } %t273, 1 + store %S.gen.EnumDef %t274, ptr %a275 + store i64 0, ptr %a276 + %t277 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 9 + store i64 0, ptr %a278 + br label %each.cond3507 +each.cond3507: + %t279 = getelementptr inbounds { ptr, i64, i64 }, ptr %t277, i32 0, i32 1 + %t280 = load i64, ptr %t279 + %t281 = load i64, ptr %a278 + %t282 = icmp slt i64 %t281, %t280 + br i1 %t282, label %each.body3508, label %each.end3510 +each.body3508: + %t283 = load ptr, ptr %t277 + %t284 = getelementptr inbounds %S.ast.Node, ptr %t283, i64 %t281 + %t285 = load %S.ast.Node, ptr %t284 + store %S.ast.Node %t285, ptr %a286 + %t287 = getelementptr inbounds %S.ast.Node, ptr %a286, i32 0, i32 4 %t288 = getelementptr inbounds { ptr, i64, i64 }, ptr %t287, i32 0, i32 1 - %t289 = getelementptr inbounds %S.ast.Node, ptr %a278, i32 0, i32 1 - %t290 = load { ptr, i64, i64 }, ptr %t289 - store i64 -1, ptr %a291 - %t292 = load i64, ptr %t288 - %t293 = load ptr, ptr %t287 - store i64 0, ptr %a294 - br label %find.cond3296 -find.cond3296: - %t295 = load i64, ptr %a294 - %t296 = icmp slt i64 %t295, %t292 - br i1 %t296, label %find.body3297, label %find.end3300 -find.body3297: - %t297 = getelementptr inbounds { ptr, i64, i64 }, ptr %t293, i64 %t295 + %t289 = load i64, ptr %t288 + %t290 = icmp sgt i64 %t289, 0 + br i1 %t290, label %then3511, label %endif3513 +then3511: + %t291 = getelementptr inbounds %S.ast.Node, ptr %a286, i32 0, i32 4 + %t292 = load { ptr, i64, i64 }, ptr %t291 + store { ptr, i64, i64 } %t292, ptr %a293 + %t294 = call i64 @finch_str_to_int(ptr %a293, ptr @.str.2203, i64 1470) + store i64 %t294, ptr %a276 + br label %endif3513 +endif3513: + %t295 = getelementptr inbounds %S.gen.EnumDef, ptr %a275, i32 0, i32 2 + %t296 = getelementptr inbounds { ptr, i64, i64 }, ptr %t295, i32 0, i32 1 + %t297 = getelementptr inbounds %S.ast.Node, ptr %a286, i32 0, i32 1 %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.hit3298, label %find.next3299 -find.hit3298: - store i64 %t295, ptr %a291 - br label %find.end3300 -find.next3299: - %t303 = add i64 %t295, 1 - store i64 %t303, ptr %a294 - br label %find.cond3296 -find.end3300: - %t304 = load i64, ptr %a291 - %t305 = icmp sge i64 %t304, 0 - 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.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.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 - %t319 = load { ptr, i64, i64 }, ptr %t318 - store { ptr, i64, i64 } %t317, 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.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 %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 - store i64 -1, ptr %a331 - %t332 = load i64, ptr %t329 - %t333 = load ptr, ptr %t328 - store i64 0, ptr %a334 - br label %find.cond3304 -find.cond3304: - %t335 = load i64, ptr %a334 - %t336 = icmp slt i64 %t335, %t332 - 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.hit3306, label %find.next3307 -find.hit3306: - store i64 %t335, ptr %a331 - br label %find.end3308 -find.next3307: - %t340 = add i64 %t335, 1 - store i64 %t340, ptr %a334 - br label %find.cond3304 -find.end3308: - %t341 = load i64, ptr %a331 - %t342 = icmp sge i64 %t341, 0 - 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.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.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 - call void @finch_str_from_int(ptr %a356, i64 %t355) - %t357 = load { ptr, i64, i64 }, ptr %a356 - store { ptr, i64, i64 } %t354, ptr %a359 - store { ptr, i64, i64 } %t357, ptr %a360 - 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.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 %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 - %t369 = load { ptr, i64, i64 }, ptr %t368 - store { ptr, i64, i64 } %t369, ptr %a370 - call void @finch_str_copy(ptr %a371, ptr %a370) - %t372 = load { ptr, i64, i64 }, ptr %a371 - %t373 = load i64, ptr %t367 - %t374 = add i64 %t373, 1 - call void @finch_arr_reserve(ptr %t366, i64 %t374, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t375 = load ptr, ptr %t366 - %t376 = getelementptr inbounds { ptr, i64, i64 }, ptr %t375, i64 %t373 - store { ptr, i64, i64 } %t372, ptr %t376 - store i64 %t374, ptr %t367 - %t377 = getelementptr inbounds %S.gen.EnumDef, ptr %a267, i32 0, i32 3 - %t378 = getelementptr inbounds { ptr, i64, i64 }, ptr %t377, i32 0, i32 1 - %t379 = load i64, ptr %a268 - %t380 = load i64, ptr %t378 - %t381 = add i64 %t380, 1 - call void @finch_arr_reserve(ptr %t377, i64 %t381, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t382 = load ptr, ptr %t377 - %t383 = getelementptr inbounds i64, ptr %t382, i64 %t380 - store i64 %t379, ptr %t383 - store i64 %t381, ptr %t378 - %t384 = load i64, ptr %a268 - %t385 = add i64 %t384, 1 - store i64 %t385, ptr %a268 - br label %each.step3291 -each.step3291: - %t386 = load i64, ptr %a270 - %t387 = add i64 %t386, 1 - store i64 %t387, ptr %a270 - br label %each.cond3289 -each.end3292: - %t388 = load ptr, ptr %a1 - %t389 = icmp eq ptr %t388, null - br i1 %t389, label %panic3312, label %ok3313 -panic3312: - call void @finch_panic(ptr @.str.2121, i64 1334, ptr @.str.2122) + store i64 -1, ptr %a299 + %t300 = load i64, ptr %t296 + %t301 = load ptr, ptr %t295 + store i64 0, ptr %a302 + br label %find.cond3514 +find.cond3514: + %t303 = load i64, ptr %a302 + %t304 = icmp slt i64 %t303, %t300 + br i1 %t304, label %find.body3515, label %find.end3518 +find.body3515: + %t305 = getelementptr inbounds { ptr, i64, i64 }, ptr %t301, i64 %t303 + %t306 = load { ptr, i64, i64 }, ptr %t305 + store { ptr, i64, i64 } %t306, ptr %a307 + store { ptr, i64, i64 } %t298, ptr %a308 + %t309 = call i32 @finch_str_eq(ptr %a307, ptr %a308) + %t310 = icmp ne i32 %t309, 0 + br i1 %t310, label %find.hit3516, label %find.next3517 +find.hit3516: + store i64 %t303, ptr %a299 + br label %find.end3518 +find.next3517: + %t311 = add i64 %t303, 1 + store i64 %t311, ptr %a302 + br label %find.cond3514 +find.end3518: + %t312 = load i64, ptr %a299 + %t313 = icmp sge i64 %t312, 0 + br i1 %t313, label %then3519, label %endif3521 +then3519: + %t314 = load ptr, ptr %a1 + %t315 = load %S.ast.Node, ptr %a286 + %t316 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 + %t317 = load { ptr, i64, i64 }, ptr %t316 + store { ptr, i64, i64 } { ptr @.str.2204, i64 9, 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.2205, i64 17, i64 0 }, ptr %a324 + call void @finch_str_concat(ptr %a322, ptr %a323, ptr %a324) + store { ptr, i64, i64 } %t321, ptr %a325 + call void @finch_str_drop(ptr %a325) + %t326 = load { ptr, i64, i64 }, ptr %a322 + %t327 = getelementptr inbounds %S.ast.Node, ptr %a286, i32 0, i32 1 + %t328 = load { ptr, i64, i64 }, ptr %t327 + store { ptr, i64, i64 } %t326, ptr %a330 + store { ptr, i64, i64 } %t328, ptr %a331 + call void @finch_str_concat(ptr %a329, ptr %a330, ptr %a331) + store { ptr, i64, i64 } %t326, ptr %a332 + call void @finch_str_drop(ptr %a332) + %t333 = load { ptr, i64, i64 }, ptr %a329 + store { ptr, i64, i64 } %t333, ptr %a335 + store { ptr, i64, i64 } { ptr @.str.2206, i64 6, i64 0 }, ptr %a336 + call void @finch_str_concat(ptr %a334, ptr %a335, ptr %a336) + store { ptr, i64, i64 } %t333, ptr %a337 + call void @finch_str_drop(ptr %a337) + %t338 = load { ptr, i64, i64 }, ptr %a334 + call void @finch.gen.fail(ptr %t314, %S.ast.Node %t315, { ptr, i64, i64 } %t338) + store { ptr, i64, i64 } %t338, ptr %a339 + call void @finch_str_drop(ptr %a339) + br label %endif3521 +endif3521: + %t340 = getelementptr inbounds %S.gen.EnumDef, ptr %a275, i32 0, i32 3 + %t341 = getelementptr inbounds { ptr, i64, i64 }, ptr %t340, i32 0, i32 1 + %t342 = load i64, ptr %a276 + store i64 -1, ptr %a343 + %t344 = load i64, ptr %t341 + %t345 = load ptr, ptr %t340 + store i64 0, ptr %a346 + br label %find.cond3522 +find.cond3522: + %t347 = load i64, ptr %a346 + %t348 = icmp slt i64 %t347, %t344 + br i1 %t348, label %find.body3523, label %find.end3526 +find.body3523: + %t349 = getelementptr inbounds i64, ptr %t345, i64 %t347 + %t350 = load i64, ptr %t349 + %t351 = icmp eq i64 %t350, %t342 + br i1 %t351, label %find.hit3524, label %find.next3525 +find.hit3524: + store i64 %t347, ptr %a343 + br label %find.end3526 +find.next3525: + %t352 = add i64 %t347, 1 + store i64 %t352, ptr %a346 + br label %find.cond3522 +find.end3526: + %t353 = load i64, ptr %a343 + %t354 = icmp sge i64 %t353, 0 + br i1 %t354, label %then3527, label %endif3529 +then3527: + %t355 = load ptr, ptr %a1 + %t356 = load %S.ast.Node, ptr %a286 + %t357 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 + %t358 = load { ptr, i64, i64 }, ptr %t357 + store { ptr, i64, i64 } { ptr @.str.2207, i64 16, i64 0 }, 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.2208, i64 17, i64 0 }, ptr %a365 + call void @finch_str_concat(ptr %a363, ptr %a364, ptr %a365) + store { ptr, i64, i64 } %t362, ptr %a366 + call void @finch_str_drop(ptr %a366) + %t367 = load { ptr, i64, i64 }, ptr %a363 + %t368 = load i64, ptr %a276 + call void @finch_str_from_int(ptr %a369, i64 %t368) + %t370 = load { ptr, i64, i64 }, ptr %a369 + store { ptr, i64, i64 } %t367, ptr %a372 + store { ptr, i64, i64 } %t370, ptr %a373 + call void @finch_str_concat(ptr %a371, ptr %a372, ptr %a373) + store { ptr, i64, i64 } %t367, ptr %a374 + call void @finch_str_drop(ptr %a374) + store { ptr, i64, i64 } %t370, ptr %a375 + call void @finch_str_drop(ptr %a375) + %t376 = load { ptr, i64, i64 }, ptr %a371 + store { ptr, i64, i64 } %t376, ptr %a378 + store { ptr, i64, i64 } { ptr @.str.2209, i64 20, i64 0 }, ptr %a379 + call void @finch_str_concat(ptr %a377, ptr %a378, ptr %a379) + store { ptr, i64, i64 } %t376, ptr %a380 + call void @finch_str_drop(ptr %a380) + %t381 = load { ptr, i64, i64 }, ptr %a377 + call void @finch.gen.fail(ptr %t355, %S.ast.Node %t356, { ptr, i64, i64 } %t381) + store { ptr, i64, i64 } %t381, ptr %a382 + call void @finch_str_drop(ptr %a382) + br label %endif3529 +endif3529: + %t383 = getelementptr inbounds %S.gen.EnumDef, ptr %a275, i32 0, i32 2 + %t384 = getelementptr inbounds { ptr, i64, i64 }, ptr %t383, i32 0, i32 1 + %t385 = getelementptr inbounds %S.ast.Node, ptr %a286, i32 0, i32 1 + %t386 = load { ptr, i64, i64 }, ptr %t385 + store { ptr, i64, i64 } %t386, ptr %a387 + call void @finch_str_copy(ptr %a388, ptr %a387) + %t389 = load { ptr, i64, i64 }, ptr %a388 + %t390 = load i64, ptr %t384 + %t391 = add i64 %t390, 1 + call void @finch_arr_reserve(ptr %t383, i64 %t391, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t392 = load ptr, ptr %t383 + %t393 = getelementptr inbounds { ptr, i64, i64 }, ptr %t392, i64 %t390 + store { ptr, i64, i64 } %t389, ptr %t393 + store i64 %t391, ptr %t384 + %t394 = getelementptr inbounds %S.gen.EnumDef, ptr %a275, i32 0, i32 3 + %t395 = getelementptr inbounds { ptr, i64, i64 }, ptr %t394, i32 0, i32 1 + %t396 = load i64, ptr %a276 + %t397 = load i64, ptr %t395 + %t398 = add i64 %t397, 1 + call void @finch_arr_reserve(ptr %t394, i64 %t398, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) + %t399 = load ptr, ptr %t394 + %t400 = getelementptr inbounds i64, ptr %t399, i64 %t397 + store i64 %t396, ptr %t400 + store i64 %t398, ptr %t395 + %t401 = load i64, ptr %a276 + %t402 = add i64 %t401, 1 + store i64 %t402, ptr %a276 + br label %each.step3509 +each.step3509: + %t403 = load i64, ptr %a278 + %t404 = add i64 %t403, 1 + store i64 %t404, ptr %a278 + br label %each.cond3507 +each.end3510: + %t405 = load ptr, ptr %a1 + %t406 = icmp eq ptr %t405, null + br i1 %t406, label %panic3530, label %ok3531 +panic3530: + call void @finch_panic(ptr @.str.2210, i64 1482, ptr @.str.2211) unreachable -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 - store %S.gen.EnumDef %t392, ptr %a393 - call void @finch.copy.S_gen_EnumDef(ptr %a394, ptr %a393) - %t395 = load %S.gen.EnumDef, ptr %a394 - %t396 = load i64, ptr %t391 - %t397 = add i64 %t396, 1 - call void @finch_arr_reserve(ptr %t390, i64 %t397, i64 ptrtoint (ptr getelementptr (%S.gen.EnumDef, ptr null, i32 1) to i64)) - %t398 = load ptr, ptr %t390 - %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.step3268 -for.step3268: - %t400 = load i64, ptr %a198 - %t401 = add i64 %t400, 1 - store i64 %t401, ptr %a198 - 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.cond3252 -for.end3255: - %t404 = load ptr, ptr %a1 - %t405 = icmp eq ptr %t404, null - br i1 %t405, label %panic3314, label %ok3315 -panic3314: - call void @finch_panic(ptr @.str.2123, i64 1337, ptr @.str.2124) - unreachable -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 +ok3531: + %t407 = getelementptr inbounds %S.gen.Gen, ptr %t405, i32 0, i32 21 %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.cond3316 -for.cond3316: - %t411 = load i64, ptr %a410 - %t412 = icmp slt i64 %t411, %t409 - 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 %panic3320, label %ok3321 -panic3320: - call void @finch_panic(ptr @.str.2125, i64 1338, ptr @.str.2126) + %t409 = load %S.gen.EnumDef, ptr %a275 + store %S.gen.EnumDef %t409, ptr %a410 + call void @finch.copy.S_gen_EnumDef(ptr %a411, ptr %a410) + %t412 = load %S.gen.EnumDef, ptr %a411 + %t413 = load i64, ptr %t408 + %t414 = add i64 %t413, 1 + call void @finch_arr_reserve(ptr %t407, i64 %t414, i64 ptrtoint (ptr getelementptr (%S.gen.EnumDef, ptr null, i32 1) to i64)) + %t415 = load ptr, ptr %t407 + %t416 = getelementptr inbounds %S.gen.EnumDef, ptr %t415, i64 %t413 + store %S.gen.EnumDef %t412, ptr %t416 + store i64 %t414, ptr %t408 + call void @finch.drop.S_gen_EnumDef(ptr %a275) + call void @finch.drop.S_ast_Node(ptr %a227) + br label %for.step3486 +for.step3486: + %t417 = load i64, ptr %a204 + %t418 = add i64 %t417, 1 + store i64 %t418, ptr %a204 + br label %for.cond3484 +for.end3487: + br label %for.step3472 +for.step3472: + %t419 = load i64, ptr %a170 + %t420 = add i64 %t419, 1 + store i64 %t420, ptr %a170 + br label %for.cond3470 +for.end3473: + %t421 = load ptr, ptr %a1 + %t422 = icmp eq ptr %t421, null + br i1 %t422, label %panic3532, label %ok3533 +panic3532: + call void @finch_panic(ptr @.str.2212, i64 1485, ptr @.str.2213) unreachable -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.2127, i64 1, i64 0 }, 0 - %t418 = load ptr, ptr %a1 - %t419 = icmp eq ptr %t418, null - br i1 %t419, label %panic3322, label %ok3323 -panic3322: - call void @finch_panic(ptr @.str.2128, i64 1338, ptr @.str.2129) +ok3533: + %t423 = getelementptr inbounds %S.gen.Gen, ptr %t421, i32 0, i32 25 + %t424 = getelementptr inbounds %S.cimport.CImports, ptr %t423, i32 0, i32 4 + %t425 = getelementptr inbounds { ptr, i64, i64 }, ptr %t424, i32 0, i32 1 + %t426 = load i64, ptr %t425 + store i64 0, ptr %a427 + br label %for.cond3534 +for.cond3534: + %t428 = load i64, ptr %a427 + %t429 = icmp slt i64 %t428, %t426 + br i1 %t429, label %for.body3535, label %for.end3537 +for.body3535: + %t430 = load ptr, ptr %a1 + %t431 = icmp eq ptr %t430, null + br i1 %t431, label %panic3538, label %ok3539 +panic3538: + call void @finch_panic(ptr @.str.2214, i64 1486, ptr @.str.2215) unreachable -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 %range3324, label %inrange3325 -range3324: - call void @finch_panic_index(ptr @.str.2130, i64 1338, i64 %t422, i64 %t424) +ok3539: + %t432 = getelementptr inbounds %S.gen.Gen, ptr %t430, i32 0, i32 16 + %t433 = getelementptr inbounds { ptr, i64, i64 }, ptr %t432, i32 0, i32 1 + %t434 = insertvalue %S.gen.StructDef zeroinitializer, { ptr, i64, i64 } { ptr @.str.2216, i64 1, i64 0 }, 0 + %t435 = load ptr, ptr %a1 + %t436 = icmp eq ptr %t435, null + br i1 %t436, label %panic3540, label %ok3541 +panic3540: + call void @finch_panic(ptr @.str.2217, i64 1486, ptr @.str.2218) unreachable -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 - store { ptr, i64, i64 } %t428, ptr %a429 - call void @finch_str_copy(ptr %a430, ptr %a429) - %t431 = load { ptr, i64, i64 }, ptr %a430 - %t432 = insertvalue %S.gen.StructDef %t417, { ptr, i64, i64 } %t431, 1 - %t433 = insertvalue %S.gen.StructDef %t432, i1 true, 2 - %t434 = insertvalue %S.gen.StructDef %t433, i64 -1, 13 - %t435 = load i64, ptr %a410 - %t436 = insertvalue %S.gen.StructDef %t434, i64 %t435, 14 - %t437 = load i64, ptr %t416 - %t438 = add i64 %t437, 1 - call void @finch_arr_reserve(ptr %t415, i64 %t438, i64 ptrtoint (ptr getelementptr (%S.gen.StructDef, ptr null, i32 1) to i64)) - %t439 = load ptr, ptr %t415 - %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.step3318 -for.step3318: - %t441 = load i64, ptr %a410 - %t442 = add i64 %t441, 1 - store i64 %t442, ptr %a410 - br label %for.cond3316 -for.end3319: - %t443 = load ptr, ptr %a1 - %t444 = icmp eq ptr %t443, null - br i1 %t444, label %panic3326, label %ok3327 -panic3326: - call void @finch_panic(ptr @.str.2131, i64 1340, ptr @.str.2132) +ok3541: + %t437 = getelementptr inbounds %S.gen.Gen, ptr %t435, i32 0, i32 25 + %t438 = getelementptr inbounds %S.cimport.CImports, ptr %t437, i32 0, i32 4 + %t439 = load i64, ptr %a427 + %t440 = load { ptr, i64, i64 }, ptr %t438 + %t441 = extractvalue { ptr, i64, i64 } %t440, 1 + %t442 = icmp uge i64 %t439, %t441 + br i1 %t442, label %range3542, label %inrange3543 +range3542: + call void @finch_panic_index(ptr @.str.2219, i64 1486, i64 %t439, i64 %t441) unreachable -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.cond3328 -for.cond3328: - %t449 = load i64, ptr %a448 - %t450 = icmp slt i64 %t449, %t447 - 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.step3330 -for.step3330: - %t453 = load i64, ptr %a448 - %t454 = add i64 %t453, 1 - store i64 %t454, ptr %a448 - br label %for.cond3328 -for.end3331: - %t455 = load ptr, ptr %a1 - %t456 = icmp eq ptr %t455, null - br i1 %t456, label %panic3332, label %ok3333 -panic3332: - call void @finch_panic(ptr @.str.2133, i64 1343, ptr @.str.2134) +inrange3543: + %t443 = extractvalue { ptr, i64, i64 } %t440, 0 + %t444 = getelementptr inbounds { ptr, i64, i64 }, ptr %t443, i64 %t439 + %t445 = load { ptr, i64, i64 }, ptr %t444 + store { ptr, i64, i64 } %t445, ptr %a446 + call void @finch_str_copy(ptr %a447, ptr %a446) + %t448 = load { ptr, i64, i64 }, ptr %a447 + %t449 = insertvalue %S.gen.StructDef %t434, { ptr, i64, i64 } %t448, 1 + %t450 = insertvalue %S.gen.StructDef %t449, i1 true, 2 + %t451 = insertvalue %S.gen.StructDef %t450, i64 -1, 13 + %t452 = load i64, ptr %a427 + %t453 = insertvalue %S.gen.StructDef %t451, i64 %t452, 14 + %t454 = load i64, ptr %t433 + %t455 = add i64 %t454, 1 + call void @finch_arr_reserve(ptr %t432, i64 %t455, i64 ptrtoint (ptr getelementptr (%S.gen.StructDef, ptr null, i32 1) to i64)) + %t456 = load ptr, ptr %t432 + %t457 = getelementptr inbounds %S.gen.StructDef, ptr %t456, i64 %t454 + store %S.gen.StructDef %t453, ptr %t457 + store i64 %t455, ptr %t433 + br label %for.step3536 +for.step3536: + %t458 = load i64, ptr %a427 + %t459 = add i64 %t458, 1 + store i64 %t459, ptr %a427 + br label %for.cond3534 +for.end3537: + %t460 = load ptr, ptr %a1 + %t461 = icmp eq ptr %t460, null + br i1 %t461, label %panic3544, label %ok3545 +panic3544: + call void @finch_panic(ptr @.str.2220, i64 1488, ptr @.str.2221) unreachable -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.cond3334 -for.cond3334: - %t461 = load i64, ptr %a460 - %t462 = icmp slt i64 %t461, %t459 - 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 %panic3338, label %ok3339 -panic3338: - call void @finch_panic(ptr @.str.2135, i64 1344, ptr @.str.2136) +ok3545: + %t462 = getelementptr inbounds %S.gen.Gen, ptr %t460, i32 0, i32 16 + %t463 = getelementptr inbounds { ptr, i64, i64 }, ptr %t462, i32 0, i32 1 + %t464 = load i64, ptr %t463 + store i64 0, ptr %a465 + br label %for.cond3546 +for.cond3546: + %t466 = load i64, ptr %a465 + %t467 = icmp slt i64 %t466, %t464 + br i1 %t467, label %for.body3547, label %for.end3549 +for.body3547: + %t468 = load ptr, ptr %a1 + %t469 = load i64, ptr %a465 + call void @finch.gen.resolveStruct(ptr %t468, i64 %t469) + br label %for.step3548 +for.step3548: + %t470 = load i64, ptr %a465 + %t471 = add i64 %t470, 1 + store i64 %t471, ptr %a465 + br label %for.cond3546 +for.end3549: + %t472 = load ptr, ptr %a1 + %t473 = icmp eq ptr %t472, null + br i1 %t473, label %panic3550, label %ok3551 +panic3550: + call void @finch_panic(ptr @.str.2222, i64 1491, ptr @.str.2223) unreachable -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 %range3340, label %inrange3341 -range3340: - call void @finch_panic_index(ptr @.str.2137, i64 1344, i64 %t466, i64 %t468) - unreachable -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 %panic3342, label %ok3343 -panic3342: - call void @finch_panic(ptr @.str.2138, i64 1344, ptr @.str.2139) - unreachable -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) - %t479 = load { ptr, i64, i64 }, ptr %a478 - store { ptr, i64, i64 } %t479, ptr %t476 +ok3551: + %t474 = getelementptr inbounds %S.gen.Gen, ptr %t472, i32 0, i32 0 + %t475 = getelementptr inbounds { ptr, i64, i64 }, ptr %t474, i32 0, i32 1 + %t476 = load i64, ptr %t475 + store i64 0, ptr %a477 + br label %for.cond3552 +for.cond3552: + %t478 = load i64, ptr %a477 + %t479 = icmp slt i64 %t478, %t476 + br i1 %t479, label %for.body3553, label %for.end3555 +for.body3553: %t480 = load ptr, ptr %a1 %t481 = icmp eq ptr %t480, null - br i1 %t481, label %panic3344, label %ok3345 -panic3344: - call void @finch_panic(ptr @.str.2140, i64 1345, ptr @.str.2141) + br i1 %t481, label %panic3556, label %ok3557 +panic3556: + call void @finch_panic(ptr @.str.2224, i64 1492, ptr @.str.2225) unreachable -ok3345: +ok3557: %t482 = getelementptr inbounds %S.gen.Gen, ptr %t480, i32 0, i32 0 - %t483 = load i64, ptr %a460 + %t483 = load i64, ptr %a477 %t484 = load { ptr, i64, i64 }, ptr %t482 %t485 = extractvalue { ptr, i64, i64 } %t484, 1 %t486 = icmp uge i64 %t483, %t485 - br i1 %t486, label %range3346, label %inrange3347 -range3346: - call void @finch_panic_index(ptr @.str.2142, i64 1345, i64 %t483, i64 %t485) + br i1 %t486, label %range3558, label %inrange3559 +range3558: + call void @finch_panic_index(ptr @.str.2226, i64 1492, i64 %t483, i64 %t485) unreachable -inrange3347: +inrange3559: %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.cond3348 -for.cond3348: - %t493 = load i64, ptr %a492 - %t494 = icmp slt i64 %t493, %t491 - 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 %panic3352, label %ok3353 -panic3352: - call void @finch_panic(ptr @.str.2143, i64 1346, ptr @.str.2144) + %t489 = getelementptr inbounds %S.ast.Program, ptr %t488, i32 0, i32 0 + %t490 = load { ptr, i64, i64 }, ptr %t489 + %t491 = load ptr, ptr %a1 + %t492 = icmp eq ptr %t491, null + br i1 %t492, label %panic3560, label %ok3561 +panic3560: + call void @finch_panic(ptr @.str.2227, i64 1492, ptr @.str.2228) unreachable -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 %range3354, label %inrange3355 -range3354: - call void @finch_panic_index(ptr @.str.2145, i64 1346, i64 %t498, i64 %t500) +ok3561: + %t493 = getelementptr inbounds %S.gen.Gen, ptr %t491, i32 0, i32 14 + store { ptr, i64, i64 } %t490, ptr %a494 + call void @finch_str_copy(ptr %a495, ptr %a494) + %t496 = load { ptr, i64, i64 }, ptr %a495 + %t497 = load { ptr, i64, i64 }, ptr %t493 + store { ptr, i64, i64 } %t496, ptr %t493 + store { ptr, i64, i64 } %t497, ptr %a498 + call void @finch_str_drop(ptr %a498) + %t499 = load ptr, ptr %a1 + %t500 = icmp eq ptr %t499, null + br i1 %t500, label %panic3562, label %ok3563 +panic3562: + call void @finch_panic(ptr @.str.2229, i64 1493, ptr @.str.2230) unreachable -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 - %t505 = load i64, ptr %a492 - %t506 = load { ptr, i64, i64 }, ptr %t504 - %t507 = extractvalue { ptr, i64, i64 } %t506, 1 - %t508 = icmp uge i64 %t505, %t507 - br i1 %t508, label %range3356, label %inrange3357 -range3356: - call void @finch_panic_index(ptr @.str.2146, i64 1346, i64 %t505, i64 %t507) +ok3563: + %t501 = getelementptr inbounds %S.gen.Gen, ptr %t499, i32 0, i32 0 + %t502 = load i64, ptr %a477 + %t503 = load { ptr, i64, i64 }, ptr %t501 + %t504 = extractvalue { ptr, i64, i64 } %t503, 1 + %t505 = icmp uge i64 %t502, %t504 + br i1 %t505, label %range3564, label %inrange3565 +range3564: + call void @finch_panic_index(ptr @.str.2231, i64 1493, i64 %t502, i64 %t504) unreachable -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 - store %S.ast.Node %t511, ptr %a512 - call void @finch.copy.S_ast_Node(ptr %a513, ptr %a512) - %t514 = load %S.ast.Node, ptr %a513 - store %S.ast.Node %t514, ptr %a515 - %t516 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 3 - %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 %then3358, label %endif3360 -then3358: - %t520 = load ptr, ptr %a1 - %t521 = load ptr, ptr %a1 - %t522 = icmp eq ptr %t521, null - br i1 %t522, label %panic3361, label %ok3362 -panic3361: - call void @finch_panic(ptr @.str.2147, i64 1349, ptr @.str.2148) +inrange3565: + %t506 = extractvalue { ptr, i64, i64 } %t503, 0 + %t507 = getelementptr inbounds %S.ast.Program, ptr %t506, i64 %t502 + %t508 = getelementptr inbounds %S.ast.Program, ptr %t507, i32 0, i32 8 + %t509 = getelementptr inbounds { ptr, i64, i64 }, ptr %t508, i32 0, i32 1 + %t510 = load i64, ptr %t509 + store i64 0, ptr %a511 + br label %for.cond3566 +for.cond3566: + %t512 = load i64, ptr %a511 + %t513 = icmp slt i64 %t512, %t510 + br i1 %t513, label %for.body3567, label %for.end3569 +for.body3567: + %t514 = load ptr, ptr %a1 + %t515 = icmp eq ptr %t514, null + br i1 %t515, label %panic3570, label %ok3571 +panic3570: + call void @finch_panic(ptr @.str.2232, i64 1494, ptr @.str.2233) unreachable -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 - %t526 = load { ptr, i64, i64 }, ptr %t525 - %t527 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 2 - %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 %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.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.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 %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.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 %panic3369, label %ok3370 -panic3369: - call void @finch_panic(ptr @.str.2151, i64 1352, ptr @.str.2152) +ok3571: + %t516 = getelementptr inbounds %S.gen.Gen, ptr %t514, i32 0, i32 0 + %t517 = load i64, ptr %a477 + %t518 = load { ptr, i64, i64 }, ptr %t516 + %t519 = extractvalue { ptr, i64, i64 } %t518, 1 + %t520 = icmp uge i64 %t517, %t519 + br i1 %t520, label %range3572, label %inrange3573 +range3572: + call void @finch_panic_index(ptr @.str.2234, i64 1494, i64 %t517, i64 %t519) unreachable -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 +inrange3573: + %t521 = extractvalue { ptr, i64, i64 } %t518, 0 + %t522 = getelementptr inbounds %S.ast.Program, ptr %t521, i64 %t517 + %t523 = getelementptr inbounds %S.ast.Program, ptr %t522, i32 0, i32 8 + %t524 = load i64, ptr %a511 + %t525 = load { ptr, i64, i64 }, ptr %t523 + %t526 = extractvalue { ptr, i64, i64 } %t525, 1 + %t527 = icmp uge i64 %t524, %t526 + br i1 %t527, label %range3574, label %inrange3575 +range3574: + call void @finch_panic_index(ptr @.str.2235, i64 1494, i64 %t524, i64 %t526) + unreachable +inrange3575: + %t528 = extractvalue { ptr, i64, i64 } %t525, 0 + %t529 = getelementptr inbounds %S.ast.Node, ptr %t528, i64 %t524 + %t530 = load %S.ast.Node, ptr %t529 + store %S.ast.Node %t530, ptr %a531 + call void @finch.copy.S_ast_Node(ptr %a532, ptr %a531) + %t533 = load %S.ast.Node, ptr %a532 + store %S.ast.Node %t533, ptr %a534 + %t535 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 3 + %t536 = getelementptr inbounds { ptr, i64, i64 }, ptr %t535, i32 0, i32 1 + %t537 = load i64, ptr %t536 + %t538 = icmp sgt i64 %t537, 0 + br i1 %t538, label %then3576, label %endif3578 +then3576: + %t539 = load ptr, ptr %a1 + %t540 = load ptr, ptr %a1 + %t541 = icmp eq ptr %t540, null + br i1 %t541, label %panic3579, label %ok3580 +panic3579: + call void @finch_panic(ptr @.str.2236, i64 1497, ptr @.str.2237) + unreachable +ok3580: + %t542 = getelementptr inbounds %S.gen.Gen, ptr %t540, i32 0, i32 14 + %t543 = load { ptr, i64, i64 }, ptr %t542 + %t544 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 1 + %t545 = load { ptr, i64, i64 }, ptr %t544 + %t546 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 2 + %t547 = load { ptr, i64, i64 }, ptr %t546 + %t548 = call i64 @finch.gen.findTemplate(ptr %t539, { ptr, i64, i64 } %t543, { ptr, i64, i64 } %t545, { ptr, i64, i64 } %t547, i1 false) + %t549 = icmp sge i64 %t548, 0 + br i1 %t549, label %then3581, label %endif3583 +then3581: + %t550 = load ptr, ptr %a1 + %t551 = load %S.ast.Node, ptr %a534 + %t552 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 1 %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.2153, i64 0, i64 0 }, i1 true) - %t555 = icmp slt i64 %t554, 0 - 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.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.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 %endif3374 -endif3374: + store { ptr, i64, i64 } { ptr @.str.2238, i64 10, i64 0 }, ptr %a555 + store { ptr, i64, i64 } %t553, ptr %a556 + call void @finch_str_concat(ptr %a554, ptr %a555, ptr %a556) + %t557 = load { ptr, i64, i64 }, ptr %a554 + store { ptr, i64, i64 } %t557, ptr %a559 + store { ptr, i64, i64 } { ptr @.str.2239, i64 18, i64 0 }, ptr %a560 + call void @finch_str_concat(ptr %a558, ptr %a559, ptr %a560) + store { ptr, i64, i64 } %t557, ptr %a561 + call void @finch_str_drop(ptr %a561) + %t562 = load { ptr, i64, i64 }, ptr %a558 + call void @finch.gen.fail(ptr %t550, %S.ast.Node %t551, { ptr, i64, i64 } %t562) + store { ptr, i64, i64 } %t562, ptr %a563 + call void @finch_str_drop(ptr %a563) + br label %endif3583 +endif3583: + %t564 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 2 + %t565 = getelementptr inbounds { ptr, i64, i64 }, ptr %t564, i32 0, i32 1 + %t566 = load i64, ptr %t565 + %t567 = icmp sgt i64 %t566, 0 + br label %logic.from3584 +logic.from3584: + br i1 %t567, label %logic.rhs3585, label %logic.end3586 +logic.rhs3585: + %t568 = load ptr, ptr %a1 %t569 = load ptr, ptr %a1 %t570 = icmp eq ptr %t569, null - br i1 %t570, label %panic3375, label %ok3376 -panic3375: - call void @finch_panic(ptr @.str.2156, i64 1355, ptr @.str.2157) + br i1 %t570, label %panic3587, label %ok3588 +panic3587: + call void @finch_panic(ptr @.str.2240, i64 1500, ptr @.str.2241) unreachable -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 %panic3377, label %ok3378 -panic3377: - call void @finch_panic(ptr @.str.2158, i64 1355, ptr @.str.2159) +ok3588: + %t571 = getelementptr inbounds %S.gen.Gen, ptr %t569, i32 0, i32 14 + %t572 = load { ptr, i64, i64 }, ptr %t571 + %t573 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 2 + %t574 = load { ptr, i64, i64 }, ptr %t573 + %t575 = call i64 @finch.gen.findTemplate(ptr %t568, { ptr, i64, i64 } %t572, { ptr, i64, i64 } %t574, { ptr, i64, i64 } { ptr @.str.2242, i64 0, i64 0 }, i1 true) + %t576 = icmp slt i64 %t575, 0 + br label %logic.rend3589 +logic.rend3589: + br label %logic.end3586 +logic.end3586: + %t577 = phi i1 [ false, %logic.from3584 ], [ %t576, %logic.rend3589 ] + br i1 %t577, label %then3590, label %endif3592 +then3590: + %t578 = load ptr, ptr %a1 + %t579 = load %S.ast.Node, ptr %a534 + %t580 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 2 + %t581 = load { ptr, i64, i64 }, ptr %t580 + store { ptr, i64, i64 } { ptr @.str.2243, i64 34, i64 0 }, ptr %a583 + store { ptr, i64, i64 } %t581, ptr %a584 + call void @finch_str_concat(ptr %a582, ptr %a583, ptr %a584) + %t585 = load { ptr, i64, i64 }, ptr %a582 + store { ptr, i64, i64 } %t585, ptr %a587 + store { ptr, i64, i64 } { ptr @.str.2244, i64 53, i64 0 }, ptr %a588 + call void @finch_str_concat(ptr %a586, ptr %a587, ptr %a588) + store { ptr, i64, i64 } %t585, ptr %a589 + call void @finch_str_drop(ptr %a589) + %t590 = load { ptr, i64, i64 }, ptr %a586 + call void @finch.gen.fail(ptr %t578, %S.ast.Node %t579, { ptr, i64, i64 } %t590) + store { ptr, i64, i64 } %t590, ptr %a591 + call void @finch_str_drop(ptr %a591) + br label %endif3592 +endif3592: + %t592 = load ptr, ptr %a1 + %t593 = icmp eq ptr %t592, null + br i1 %t593, label %panic3593, label %ok3594 +panic3593: + call void @finch_panic(ptr @.str.2245, i64 1503, ptr @.str.2246) unreachable -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 - call void @finch_str_copy(ptr %a578, ptr %a577) - %t579 = load { ptr, i64, i64 }, ptr %a578 - %t580 = insertvalue %S.gen.Template zeroinitializer, { ptr, i64, i64 } %t579, 0 - %t581 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 1 - %t582 = load { ptr, i64, i64 }, ptr %t581 - store { ptr, i64, i64 } %t582, ptr %a583 - call void @finch_str_copy(ptr %a584, ptr %a583) - %t585 = load { ptr, i64, i64 }, ptr %a584 - %t586 = insertvalue %S.gen.Template %t580, { ptr, i64, i64 } %t585, 1 - %t587 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 2 - %t588 = load { ptr, i64, i64 }, ptr %t587 - store { ptr, i64, i64 } %t588, ptr %a589 - call void @finch_str_copy(ptr %a590, ptr %a589) - %t591 = load { ptr, i64, i64 }, ptr %a590 - %t592 = insertvalue %S.gen.Template %t586, { ptr, i64, i64 } %t591, 2 - %t593 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 3 - %t594 = load { ptr, i64, i64 }, ptr %t593 - store { ptr, i64, i64 } %t594, ptr %a595 - call void @finch.copy.arr_str(ptr %a596, ptr %a595) - %t597 = load { ptr, i64, i64 }, ptr %a596 - %t598 = insertvalue %S.gen.Template %t592, { ptr, i64, i64 } %t597, 3 - %t599 = load i64, ptr %a460 - %t600 = insertvalue %S.gen.Template %t598, i64 %t599, 4 - %t601 = load i64, ptr %a492 - %t602 = insertvalue %S.gen.Template %t600, i64 %t601, 5 - %t603 = load i64, ptr %t572 - %t604 = add i64 %t603, 1 - call void @finch_arr_reserve(ptr %t571, i64 %t604, i64 ptrtoint (ptr getelementptr (%S.gen.Template, ptr null, i32 1) to i64)) - %t605 = load ptr, ptr %t571 - %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.step3350 -endif3360: - %t607 = load ptr, ptr %a1 - %t608 = icmp eq ptr %t607, null - br i1 %t608, label %panic3379, label %ok3380 -panic3379: - call void @finch_panic(ptr @.str.2160, i64 1358, ptr @.str.2161) +ok3594: + %t594 = getelementptr inbounds %S.gen.Gen, ptr %t592, i32 0, i32 17 + %t595 = getelementptr inbounds { ptr, i64, i64 }, ptr %t594, i32 0, i32 1 + %t596 = load ptr, ptr %a1 + %t597 = icmp eq ptr %t596, null + br i1 %t597, label %panic3595, label %ok3596 +panic3595: + call void @finch_panic(ptr @.str.2247, i64 1503, ptr @.str.2248) unreachable -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 - call void @finch_str_copy(ptr %a612, ptr %a611) - %t613 = load { ptr, i64, i64 }, ptr %a612 - store { ptr, i64, i64 } %t613, ptr %a614 - store i1 false, ptr %a615 - %t616 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 2 - %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.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 %panic3384, label %ok3385 -panic3384: - call void @finch_panic(ptr @.str.2162, i64 1360, ptr @.str.2163) - unreachable -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.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 +ok3596: + %t598 = getelementptr inbounds %S.gen.Gen, ptr %t596, i32 0, i32 14 + %t599 = load { ptr, i64, i64 }, ptr %t598 + store { ptr, i64, i64 } %t599, ptr %a600 + call void @finch_str_copy(ptr %a601, ptr %a600) + %t602 = load { ptr, i64, i64 }, ptr %a601 + %t603 = insertvalue %S.gen.Template zeroinitializer, { ptr, i64, i64 } %t602, 0 + %t604 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 1 + %t605 = load { ptr, i64, i64 }, ptr %t604 + store { ptr, i64, i64 } %t605, ptr %a606 + call void @finch_str_copy(ptr %a607, ptr %a606) + %t608 = load { ptr, i64, i64 }, ptr %a607 + %t609 = insertvalue %S.gen.Template %t603, { ptr, i64, i64 } %t608, 1 + %t610 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 2 + %t611 = load { ptr, i64, i64 }, ptr %t610 + store { ptr, i64, i64 } %t611, ptr %a612 + call void @finch_str_copy(ptr %a613, ptr %a612) + %t614 = load { ptr, i64, i64 }, ptr %a613 + %t615 = insertvalue %S.gen.Template %t609, { ptr, i64, i64 } %t614, 2 + %t616 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 3 + %t617 = load { ptr, i64, i64 }, ptr %t616 + store { ptr, i64, i64 } %t617, ptr %a618 + call void @finch.copy.arr_str(ptr %a619, ptr %a618) + %t620 = load { ptr, i64, i64 }, ptr %a619 + %t621 = insertvalue %S.gen.Template %t615, { ptr, i64, i64 } %t620, 3 + %t622 = load i64, ptr %a477 + %t623 = insertvalue %S.gen.Template %t621, i64 %t622, 4 + %t624 = load i64, ptr %a511 + %t625 = insertvalue %S.gen.Template %t623, i64 %t624, 5 + %t626 = load i64, ptr %t595 + %t627 = add i64 %t626, 1 + call void @finch_arr_reserve(ptr %t594, i64 %t627, i64 ptrtoint (ptr getelementptr (%S.gen.Template, ptr null, i32 1) to i64)) + %t628 = load ptr, ptr %t594 + %t629 = getelementptr inbounds %S.gen.Template, ptr %t628, i64 %t626 + store %S.gen.Template %t625, ptr %t629 + store i64 %t627, ptr %t595 + call void @finch.drop.S_ast_Node(ptr %a534) + br label %for.step3568 +endif3578: %t630 = load ptr, ptr %a1 - %t631 = load { ptr, i64, i64 }, ptr %a614 - %t632 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 2 + %t631 = icmp eq ptr %t630, null + br i1 %t631, label %panic3597, label %ok3598 +panic3597: + call void @finch_panic(ptr @.str.2249, i64 1506, ptr @.str.2250) + unreachable +ok3598: + %t632 = getelementptr inbounds %S.gen.Gen, ptr %t630, i32 0, i32 14 %t633 = load { ptr, i64, i64 }, ptr %t632 - %t634 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 1 - %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 %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.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.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 - %t651 = load { ptr, i64, i64 }, ptr %t650 - store { ptr, i64, i64 } %t649, 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.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 %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 %then3393, label %else3394 -then3393: - %t664 = load ptr, ptr %a1 - %t665 = load ptr, ptr %a1 - %t666 = icmp eq ptr %t665, null - br i1 %t666, label %panic3396, label %ok3397 -panic3396: - call void @finch_panic(ptr @.str.2167, i64 1366, ptr @.str.2168) + store { ptr, i64, i64 } %t633, ptr %a634 + call void @finch_str_copy(ptr %a635, ptr %a634) + %t636 = load { ptr, i64, i64 }, ptr %a635 + store { ptr, i64, i64 } %t636, ptr %a637 + store i1 false, ptr %a638 + %t639 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 2 + %t640 = getelementptr inbounds { ptr, i64, i64 }, ptr %t639, i32 0, i32 1 + %t641 = load i64, ptr %t640 + %t642 = icmp sgt i64 %t641, 0 + br label %logic.from3599 +logic.from3599: + br i1 %t642, label %logic.rhs3600, label %logic.end3601 +logic.rhs3600: + %t643 = load ptr, ptr %a1 + %t644 = load ptr, ptr %a1 + %t645 = icmp eq ptr %t644, null + br i1 %t645, label %panic3602, label %ok3603 +panic3602: + call void @finch_panic(ptr @.str.2251, i64 1508, ptr @.str.2252) unreachable -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 - %t670 = load { ptr, i64, i64 }, ptr %t669 - %t671 = call i64 @finch.gen.findStruct(ptr %t664, { ptr, i64, i64 } %t668, { ptr, i64, i64 } %t670) - store i64 %t671, ptr %a672 - %t673 = load i64, ptr %a672 - %t674 = icmp slt i64 %t673, 0 - 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.2169, i64 1, i64 0 }, { ptr, i64, i64 } %t677) - %t679 = icmp sge i64 %t678, 0 - 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.2170, i64 1, i64 0 }, { ptr, i64, i64 } %t683) - store i64 %t684, ptr %a672 - 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 %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.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.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 %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 - %t702 = load { ptr, i64, i64 }, ptr %t701 - %t703 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 1 +ok3603: + %t646 = getelementptr inbounds %S.gen.Gen, ptr %t644, i32 0, i32 14 + %t647 = load { ptr, i64, i64 }, ptr %t646 + %t648 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 2 + %t649 = load { ptr, i64, i64 }, ptr %t648 + %t650 = call i64 @finch.gen.findEnum(ptr %t643, { ptr, i64, i64 } %t647, { ptr, i64, i64 } %t649) + %t651 = icmp sge i64 %t650, 0 + br label %logic.rend3604 +logic.rend3604: + br label %logic.end3601 +logic.end3601: + %t652 = phi i1 [ false, %logic.from3599 ], [ %t651, %logic.rend3604 ] + br i1 %t652, label %then3605, label %else3606 +then3605: + store i1 true, ptr %a638 + %t653 = load ptr, ptr %a1 + %t654 = load { ptr, i64, i64 }, ptr %a637 + %t655 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 2 + %t656 = load { ptr, i64, i64 }, ptr %t655 + %t657 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 1 + %t658 = load { ptr, i64, i64 }, ptr %t657 + %t659 = call i64 @finch.gen.findMethod(ptr %t653, { ptr, i64, i64 } %t654, { ptr, i64, i64 } %t656, { ptr, i64, i64 } %t658) + %t660 = icmp sge i64 %t659, 0 + br i1 %t660, label %then3608, label %endif3610 +then3608: + %t661 = load ptr, ptr %a1 + %t662 = load %S.ast.Node, ptr %a534 + %t663 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 2 + %t664 = load { ptr, i64, i64 }, ptr %t663 + store { ptr, i64, i64 } { ptr @.str.2253, i64 11, i64 0 }, ptr %a666 + store { ptr, i64, i64 } %t664, ptr %a667 + call void @finch_str_concat(ptr %a665, ptr %a666, ptr %a667) + %t668 = load { ptr, i64, i64 }, ptr %a665 + store { ptr, i64, i64 } %t668, ptr %a670 + store { ptr, i64, i64 } { ptr @.str.2254, i64 1, i64 0 }, ptr %a671 + call void @finch_str_concat(ptr %a669, ptr %a670, ptr %a671) + store { ptr, i64, i64 } %t668, ptr %a672 + call void @finch_str_drop(ptr %a672) + %t673 = load { ptr, i64, i64 }, ptr %a669 + %t674 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 1 + %t675 = load { ptr, i64, i64 }, ptr %t674 + store { ptr, i64, i64 } %t673, ptr %a677 + store { ptr, i64, i64 } %t675, ptr %a678 + call void @finch_str_concat(ptr %a676, ptr %a677, ptr %a678) + store { ptr, i64, i64 } %t673, ptr %a679 + call void @finch_str_drop(ptr %a679) + %t680 = load { ptr, i64, i64 }, ptr %a676 + store { ptr, i64, i64 } %t680, ptr %a682 + store { ptr, i64, i64 } { ptr @.str.2255, i64 17, i64 0 }, ptr %a683 + call void @finch_str_concat(ptr %a681, ptr %a682, ptr %a683) + store { ptr, i64, i64 } %t680, ptr %a684 + call void @finch_str_drop(ptr %a684) + %t685 = load { ptr, i64, i64 }, ptr %a681 + call void @finch.gen.fail(ptr %t661, %S.ast.Node %t662, { ptr, i64, i64 } %t685) + store { ptr, i64, i64 } %t685, ptr %a686 + call void @finch_str_drop(ptr %a686) + br label %endif3610 +endif3610: + br label %endif3607 +else3606: + %t687 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 2 + %t688 = getelementptr inbounds { ptr, i64, i64 }, ptr %t687, i32 0, i32 1 + %t689 = load i64, ptr %t688 + %t690 = icmp sgt i64 %t689, 0 + br i1 %t690, label %then3611, label %else3612 +then3611: + %t691 = load ptr, ptr %a1 + %t692 = load ptr, ptr %a1 + %t693 = icmp eq ptr %t692, null + br i1 %t693, label %panic3614, label %ok3615 +panic3614: + call void @finch_panic(ptr @.str.2256, i64 1514, ptr @.str.2257) + unreachable +ok3615: + %t694 = getelementptr inbounds %S.gen.Gen, ptr %t692, i32 0, i32 14 + %t695 = load { ptr, i64, i64 }, ptr %t694 + %t696 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 2 + %t697 = load { ptr, i64, i64 }, ptr %t696 + %t698 = call i64 @finch.gen.findStruct(ptr %t691, { ptr, i64, i64 } %t695, { ptr, i64, i64 } %t697) + store i64 %t698, ptr %a699 + %t700 = load i64, ptr %a699 + %t701 = icmp slt i64 %t700, 0 + br label %logic.from3616 +logic.from3616: + br i1 %t701, label %logic.rhs3617, label %logic.end3618 +logic.rhs3617: + %t702 = load ptr, ptr %a1 + %t703 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 2 %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) + %t705 = call i64 @finch.gen.findStruct(ptr %t702, { ptr, i64, i64 } { ptr @.str.2258, i64 1, i64 0 }, { ptr, i64, i64 } %t704) %t706 = icmp sge i64 %t705, 0 - 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 + br label %logic.rend3619 +logic.rend3619: + br label %logic.end3618 +logic.end3618: + %t707 = phi i1 [ false, %logic.from3616 ], [ %t706, %logic.rend3619 ] + br i1 %t707, label %then3620, label %endif3622 +then3620: + %t708 = load ptr, ptr %a1 + %t709 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 2 %t710 = load { ptr, i64, i64 }, ptr %t709 - 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.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 - %t720 = load { ptr, i64, i64 }, ptr %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.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 %endif3410 -endif3410: - %t729 = load ptr, ptr %a1 - %t730 = icmp eq ptr %t729, null - br i1 %t730, label %panic3411, label %ok3412 -panic3411: - call void @finch_panic(ptr @.str.2177, i64 1377, ptr @.str.2178) - unreachable -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 %range3413, label %inrange3414 -range3413: - call void @finch_panic_index(ptr @.str.2179, i64 1377, i64 %t732, i64 %t734) - unreachable -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 - %t739 = getelementptr inbounds { ptr, i64, i64 }, ptr %t738, i32 0, i32 1 - %t740 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 1 + %t711 = call i64 @finch.gen.findStruct(ptr %t708, { ptr, i64, i64 } { ptr @.str.2259, i64 1, i64 0 }, { ptr, i64, i64 } %t710) + store i64 %t711, ptr %a699 + %t712 = load { ptr, i64, i64 }, ptr %a637 + store { ptr, i64, i64 } { ptr @.str.2260, i64 1, i64 0 }, ptr %a637 + store { ptr, i64, i64 } %t712, ptr %a713 + call void @finch_str_drop(ptr %a713) + br label %endif3622 +endif3622: + %t714 = load i64, ptr %a699 + %t715 = icmp slt i64 %t714, 0 + br i1 %t715, label %then3623, label %endif3625 +then3623: + %t716 = load ptr, ptr %a1 + %t717 = load %S.ast.Node, ptr %a534 + %t718 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 2 + %t719 = load { ptr, i64, i64 }, ptr %t718 + store { ptr, i64, i64 } { ptr @.str.2261, i64 26, i64 0 }, ptr %a721 + store { ptr, i64, i64 } %t719, ptr %a722 + call void @finch_str_concat(ptr %a720, ptr %a721, ptr %a722) + %t723 = load { ptr, i64, i64 }, ptr %a720 + store { ptr, i64, i64 } %t723, ptr %a725 + store { ptr, i64, i64 } { ptr @.str.2262, i64 76, i64 0 }, ptr %a726 + call void @finch_str_concat(ptr %a724, ptr %a725, ptr %a726) + store { ptr, i64, i64 } %t723, ptr %a727 + call void @finch_str_drop(ptr %a727) + %t728 = load { ptr, i64, i64 }, ptr %a724 + call void @finch.gen.fail(ptr %t716, %S.ast.Node %t717, { ptr, i64, i64 } %t728) + store { ptr, i64, i64 } %t728, ptr %a729 + call void @finch_str_drop(ptr %a729) + br label %endif3625 +endif3625: + %t730 = load ptr, ptr %a1 + %t731 = load { ptr, i64, i64 }, ptr %a637 + %t732 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 2 + %t733 = load { ptr, i64, i64 }, ptr %t732 + %t734 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 1 + %t735 = load { ptr, i64, i64 }, ptr %t734 + %t736 = call i64 @finch.gen.findMethod(ptr %t730, { ptr, i64, i64 } %t731, { ptr, i64, i64 } %t733, { ptr, i64, i64 } %t735) + %t737 = icmp sge i64 %t736, 0 + br i1 %t737, label %then3626, label %endif3628 +then3626: + %t738 = load ptr, ptr %a1 + %t739 = load %S.ast.Node, ptr %a534 + %t740 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 2 %t741 = load { ptr, i64, i64 }, ptr %t740 - store i64 -1, ptr %a742 - %t743 = load i64, ptr %t739 - %t744 = load ptr, ptr %t738 - store i64 0, ptr %a745 - br label %find.cond3415 -find.cond3415: - %t746 = load i64, ptr %a745 - %t747 = icmp slt i64 %t746, %t743 - 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.hit3417, label %find.next3418 -find.hit3417: - store i64 %t746, ptr %a742 - br label %find.end3419 -find.next3418: - %t754 = add i64 %t746, 1 - store i64 %t754, ptr %a745 - br label %find.cond3415 -find.end3419: - %t755 = load i64, ptr %a742 - %t756 = icmp sge i64 %t755, 0 - 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.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.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 - %t770 = load { ptr, i64, i64 }, ptr %t769 - store { ptr, i64, i64 } %t768, 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.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 %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 %panic3423, label %ok3424 -panic3423: - call void @finch_panic(ptr @.str.2183, i64 1381, ptr @.str.2184) + store { ptr, i64, i64 } { ptr @.str.2263, i64 11, i64 0 }, ptr %a743 + store { ptr, i64, i64 } %t741, ptr %a744 + call void @finch_str_concat(ptr %a742, ptr %a743, ptr %a744) + %t745 = load { ptr, i64, i64 }, ptr %a742 + store { ptr, i64, i64 } %t745, ptr %a747 + store { ptr, i64, i64 } { ptr @.str.2264, i64 1, i64 0 }, ptr %a748 + call void @finch_str_concat(ptr %a746, ptr %a747, ptr %a748) + store { ptr, i64, i64 } %t745, ptr %a749 + call void @finch_str_drop(ptr %a749) + %t750 = load { ptr, i64, i64 }, ptr %a746 + %t751 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 1 + %t752 = load { ptr, i64, i64 }, ptr %t751 + store { ptr, i64, i64 } %t750, ptr %a754 + store { ptr, i64, i64 } %t752, ptr %a755 + call void @finch_str_concat(ptr %a753, ptr %a754, ptr %a755) + store { ptr, i64, i64 } %t750, ptr %a756 + call void @finch_str_drop(ptr %a756) + %t757 = load { ptr, i64, i64 }, ptr %a753 + store { ptr, i64, i64 } %t757, ptr %a759 + store { ptr, i64, i64 } { ptr @.str.2265, i64 17, i64 0 }, ptr %a760 + call void @finch_str_concat(ptr %a758, ptr %a759, ptr %a760) + store { ptr, i64, i64 } %t757, ptr %a761 + call void @finch_str_drop(ptr %a761) + %t762 = load { ptr, i64, i64 }, ptr %a758 + call void @finch.gen.fail(ptr %t738, %S.ast.Node %t739, { ptr, i64, i64 } %t762) + store { ptr, i64, i64 } %t762, ptr %a763 + call void @finch_str_drop(ptr %a763) + br label %endif3628 +endif3628: + %t764 = load ptr, ptr %a1 + %t765 = icmp eq ptr %t764, null + br i1 %t765, label %panic3629, label %ok3630 +panic3629: + call void @finch_panic(ptr @.str.2266, i64 1525, ptr @.str.2267) unreachable -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 %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.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.2186, i64 18, i64 0 }, ptr %a798 +ok3630: + %t766 = getelementptr inbounds %S.gen.Gen, ptr %t764, i32 0, i32 16 + %t767 = load i64, ptr %a699 + %t768 = load { ptr, i64, i64 }, ptr %t766 + %t769 = extractvalue { ptr, i64, i64 } %t768, 1 + %t770 = icmp uge i64 %t767, %t769 + br i1 %t770, label %range3631, label %inrange3632 +range3631: + call void @finch_panic_index(ptr @.str.2268, i64 1525, i64 %t767, i64 %t769) + unreachable +inrange3632: + %t771 = extractvalue { ptr, i64, i64 } %t768, 0 + %t772 = getelementptr inbounds %S.gen.StructDef, ptr %t771, i64 %t767 + %t773 = getelementptr inbounds %S.gen.StructDef, ptr %t772, i32 0, i32 11 + %t774 = getelementptr inbounds { ptr, i64, i64 }, ptr %t773, i32 0, i32 1 + %t775 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 1 + %t776 = load { ptr, i64, i64 }, ptr %t775 + store i64 -1, ptr %a777 + %t778 = load i64, ptr %t774 + %t779 = load ptr, ptr %t773 + store i64 0, ptr %a780 + br label %find.cond3633 +find.cond3633: + %t781 = load i64, ptr %a780 + %t782 = icmp slt i64 %t781, %t778 + br i1 %t782, label %find.body3634, label %find.end3637 +find.body3634: + %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.hit3635, label %find.next3636 +find.hit3635: + store i64 %t781, ptr %a777 + br label %find.end3637 +find.next3636: + %t789 = add i64 %t781, 1 + store i64 %t789, ptr %a780 + br label %find.cond3633 +find.end3637: + %t790 = load i64, ptr %a777 + %t791 = icmp sge i64 %t790, 0 + br i1 %t791, label %then3638, label %endif3640 +then3638: + %t792 = load ptr, ptr %a1 + %t793 = load %S.ast.Node, ptr %a534 + %t794 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 2 + %t795 = load { ptr, i64, i64 }, ptr %t794 + store { ptr, i64, i64 } { ptr @.str.2269, i64 11, i64 0 }, ptr %a797 + store { ptr, i64, i64 } %t795, 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 %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 %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 + store { ptr, i64, i64 } %t799, ptr %a801 + store { ptr, i64, i64 } { ptr @.str.2270, i64 28, i64 0 }, ptr %a802 + call void @finch_str_concat(ptr %a800, ptr %a801, ptr %a802) + store { ptr, i64, i64 } %t799, ptr %a803 + call void @finch_str_drop(ptr %a803) + %t804 = load { ptr, i64, i64 }, ptr %a800 + %t805 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 1 %t806 = load { ptr, i64, i64 }, ptr %t805 - store { ptr, i64, i64 } { ptr @.str.2187, i64 1, i64 0 }, ptr %a808 + store { ptr, i64, i64 } %t804, 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.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 %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 %panic3431, label %ok3432 -panic3431: - call void @finch_panic(ptr @.str.2189, i64 1388, ptr @.str.2190) + store { ptr, i64, i64 } %t804, ptr %a810 + call void @finch_str_drop(ptr %a810) + %t811 = load { ptr, i64, i64 }, ptr %a807 + store { ptr, i64, i64 } %t811, ptr %a813 + store { ptr, i64, i64 } { ptr @.str.2271, i64 1, i64 0 }, ptr %a814 + call void @finch_str_concat(ptr %a812, ptr %a813, ptr %a814) + store { ptr, i64, i64 } %t811, ptr %a815 + call void @finch_str_drop(ptr %a815) + %t816 = load { ptr, i64, i64 }, ptr %a812 + call void @finch.gen.fail(ptr %t792, %S.ast.Node %t793, { ptr, i64, i64 } %t816) + store { ptr, i64, i64 } %t816, ptr %a817 + call void @finch_str_drop(ptr %a817) + br label %endif3640 +endif3640: + br label %endif3613 +else3612: + %t818 = load ptr, ptr %a1 + %t819 = load ptr, ptr %a1 + %t820 = icmp eq ptr %t819, null + br i1 %t820, label %panic3641, label %ok3642 +panic3641: + call void @finch_panic(ptr @.str.2272, i64 1529, ptr @.str.2273) unreachable -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 - call void @finch_str_copy(ptr %a820, ptr %a819) - %t821 = load { ptr, i64, i64 }, ptr %a820 - %t822 = insertvalue %S.gen.FnSig zeroinitializer, { ptr, i64, i64 } %t821, 0 - %t823 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 1 +ok3642: + %t821 = getelementptr inbounds %S.gen.Gen, ptr %t819, i32 0, i32 14 + %t822 = load { ptr, i64, i64 }, ptr %t821 + %t823 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 1 %t824 = load { ptr, i64, i64 }, ptr %t823 - store { ptr, i64, i64 } %t824, ptr %a825 - call void @finch_str_copy(ptr %a826, ptr %a825) - %t827 = load { ptr, i64, i64 }, ptr %a826 - %t828 = insertvalue %S.gen.FnSig %t822, { ptr, i64, i64 } %t827, 1 - %t829 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 2 + %t825 = call i64 @finch.gen.findFn(ptr %t818, { ptr, i64, i64 } %t822, { ptr, i64, i64 } %t824) + %t826 = icmp sge i64 %t825, 0 + br i1 %t826, label %then3643, label %endif3645 +then3643: + %t827 = load ptr, ptr %a1 + %t828 = load %S.ast.Node, ptr %a534 + %t829 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 1 %t830 = load { ptr, i64, i64 }, ptr %t829 - store { ptr, i64, i64 } %t830, ptr %a831 - call void @finch_str_copy(ptr %a832, ptr %a831) - %t833 = load { ptr, i64, i64 }, ptr %a832 - %t834 = insertvalue %S.gen.FnSig %t828, { ptr, i64, i64 } %t833, 2 - %t835 = load { ptr, i64, i64 }, ptr %a614 - store { ptr, i64, i64 } %t835, ptr %a836 - call void @finch_str_copy(ptr %a837, ptr %a836) - %t838 = load { ptr, i64, i64 }, ptr %a837 - %t839 = insertvalue %S.gen.FnSig %t834, { ptr, i64, i64 } %t838, 3 - %t840 = load i1, ptr %a615 - %t841 = insertvalue %S.gen.FnSig %t839, i1 %t840, 4 - %t842 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 8 - %t843 = load i1, ptr %t842 - %t844 = insertvalue %S.gen.FnSig %t841, i1 %t843, 5 - %t845 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 7 - %t846 = load i1, ptr %t845 - %t847 = insertvalue %S.gen.FnSig %t844, i1 %t846, 9 - %t848 = load i64, ptr %a460 - %t849 = insertvalue %S.gen.FnSig %t847, i64 %t848, 16 - %t850 = load i64, ptr %a492 - %t851 = insertvalue %S.gen.FnSig %t849, i64 %t850, 17 - store %S.gen.FnSig %t851, ptr %a852 - %t853 = load ptr, ptr %a1 - %t854 = icmp eq ptr %t853, null - br i1 %t854, label %panic3433, label %ok3434 -panic3433: - call void @finch_panic(ptr @.str.2192, i64 1389, ptr @.str.2193) + store { ptr, i64, i64 } { ptr @.str.2274, i64 10, i64 0 }, ptr %a832 + store { ptr, i64, i64 } %t830, ptr %a833 + call void @finch_str_concat(ptr %a831, ptr %a832, ptr %a833) + %t834 = load { ptr, i64, i64 }, ptr %a831 + store { ptr, i64, i64 } %t834, ptr %a836 + store { ptr, i64, i64 } { ptr @.str.2275, i64 18, i64 0 }, ptr %a837 + call void @finch_str_concat(ptr %a835, ptr %a836, ptr %a837) + store { ptr, i64, i64 } %t834, ptr %a838 + call void @finch_str_drop(ptr %a838) + %t839 = load { ptr, i64, i64 }, ptr %a835 + call void @finch.gen.fail(ptr %t827, %S.ast.Node %t828, { ptr, i64, i64 } %t839) + store { ptr, i64, i64 } %t839, ptr %a840 + call void @finch_str_drop(ptr %a840) + br label %endif3645 +endif3645: + %t841 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 1 + %t842 = load { ptr, i64, i64 }, ptr %t841 + %t843 = call i1 @finch.gen.isBuiltin({ ptr, i64, i64 } %t842) + br i1 %t843, label %then3646, label %endif3648 +then3646: + %t844 = load ptr, ptr %a1 + %t845 = load %S.ast.Node, ptr %a534 + %t846 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 1 + %t847 = load { ptr, i64, i64 }, ptr %t846 + store { ptr, i64, i64 } { ptr @.str.2276, i64 1, 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.2277, i64 43, i64 0 }, ptr %a854 + call void @finch_str_concat(ptr %a852, ptr %a853, ptr %a854) + store { ptr, i64, i64 } %t851, ptr %a855 + call void @finch_str_drop(ptr %a855) + %t856 = load { ptr, i64, i64 }, ptr %a852 + call void @finch.gen.fail(ptr %t844, %S.ast.Node %t845, { ptr, i64, i64 } %t856) + store { ptr, i64, i64 } %t856, ptr %a857 + call void @finch_str_drop(ptr %a857) + br label %endif3648 +endif3648: + br label %endif3613 +endif3613: + br label %endif3607 +endif3607: + %t858 = load ptr, ptr %a1 + %t859 = icmp eq ptr %t858, null + br i1 %t859, label %panic3649, label %ok3650 +panic3649: + call void @finch_panic(ptr @.str.2278, i64 1536, ptr @.str.2279) unreachable -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.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.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 +ok3650: + %t860 = getelementptr inbounds %S.gen.Gen, ptr %t858, i32 0, i32 14 + %t861 = load { ptr, i64, i64 }, ptr %t860 + store { ptr, i64, i64 } %t861, ptr %a862 + call void @finch_str_copy(ptr %a863, ptr %a862) + %t864 = load { ptr, i64, i64 }, ptr %a863 + %t865 = insertvalue %S.gen.FnSig zeroinitializer, { ptr, i64, i64 } %t864, 0 + %t866 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 1 %t867 = load { ptr, i64, i64 }, ptr %t866 - store { ptr, i64, i64 } %t865, ptr %a869 - store { ptr, i64, i64 } %t867, ptr %a870 - call void @finch_str_concat(ptr %a868, ptr %a869, ptr %a870) - %t871 = load { ptr, i64, i64 }, ptr %a868 - %t872 = getelementptr inbounds %S.gen.FnSig, ptr %a852, i32 0, i32 11 - store { ptr, i64, i64 } %t871, ptr %t872 - %t873 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 2 - %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 %then3435, label %endif3437 -then3435: - %t877 = load ptr, ptr %a1 - %t878 = icmp eq ptr %t877, null - br i1 %t878, label %panic3438, label %ok3439 -panic3438: - call void @finch_panic(ptr @.str.2196, i64 1391, ptr @.str.2197) + store { ptr, i64, i64 } %t867, ptr %a868 + call void @finch_str_copy(ptr %a869, ptr %a868) + %t870 = load { ptr, i64, i64 }, ptr %a869 + %t871 = insertvalue %S.gen.FnSig %t865, { ptr, i64, i64 } %t870, 1 + %t872 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 2 + %t873 = load { ptr, i64, i64 }, ptr %t872 + store { ptr, i64, i64 } %t873, ptr %a874 + call void @finch_str_copy(ptr %a875, ptr %a874) + %t876 = load { ptr, i64, i64 }, ptr %a875 + %t877 = insertvalue %S.gen.FnSig %t871, { ptr, i64, i64 } %t876, 2 + %t878 = load { ptr, i64, i64 }, ptr %a637 + store { ptr, i64, i64 } %t878, ptr %a879 + call void @finch_str_copy(ptr %a880, ptr %a879) + %t881 = load { ptr, i64, i64 }, ptr %a880 + %t882 = insertvalue %S.gen.FnSig %t877, { ptr, i64, i64 } %t881, 3 + %t883 = load i1, ptr %a638 + %t884 = insertvalue %S.gen.FnSig %t882, i1 %t883, 4 + %t885 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 8 + %t886 = load i1, ptr %t885 + %t887 = insertvalue %S.gen.FnSig %t884, i1 %t886, 5 + %t888 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 7 + %t889 = load i1, ptr %t888 + %t890 = insertvalue %S.gen.FnSig %t887, i1 %t889, 9 + %t891 = load i64, ptr %a477 + %t892 = insertvalue %S.gen.FnSig %t890, i64 %t891, 16 + %t893 = load i64, ptr %a511 + %t894 = insertvalue %S.gen.FnSig %t892, i64 %t893, 17 + store %S.gen.FnSig %t894, ptr %a895 + %t896 = load ptr, ptr %a1 + %t897 = icmp eq ptr %t896, null + br i1 %t897, label %panic3651, label %ok3652 +panic3651: + call void @finch_panic(ptr @.str.2281, i64 1537, ptr @.str.2282) unreachable -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.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.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 - %t891 = load { ptr, i64, i64 }, ptr %t890 - store { ptr, i64, i64 } %t889, ptr %a893 - store { ptr, i64, i64 } %t891, ptr %a894 - 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.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 - %t901 = load { ptr, i64, i64 }, ptr %t900 - store { ptr, i64, i64 } %t899, ptr %a903 - store { ptr, i64, i64 } %t901, ptr %a904 - call void @finch_str_concat(ptr %a902, ptr %a903, ptr %a904) - %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 %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 - %t910 = load %S.ast.Node, ptr %a515 - %t911 = call %S.ast.Type @finch.gen.resolve(ptr %t907, %S.ast.Type %t909, %S.ast.Node %t910) - %t912 = getelementptr inbounds %S.gen.FnSig, ptr %a852, i32 0, i32 12 - store %S.ast.Type %t911, ptr %t912 - %t913 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 9 - %t914 = getelementptr inbounds { ptr, i64, i64 }, ptr %t913, i32 0, i32 1 - %t915 = load i64, ptr %t914 - %t916 = sub i64 %t915, 1 - store i64 0, ptr %a917 - br label %for.cond3440 -for.cond3440: - %t918 = load i64, ptr %a917 - %t919 = icmp slt i64 %t918, %t916 - 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 %range3444, label %inrange3445 -range3444: - call void @finch_panic_index(ptr @.str.2200, i64 1395, i64 %t921, i64 %t923) +ok3652: + %t898 = getelementptr inbounds %S.gen.Gen, ptr %t896, i32 0, i32 14 + %t899 = load { ptr, i64, i64 }, ptr %t898 + %t900 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t899) + store { ptr, i64, i64 } { ptr @.str.2280, i64 7, i64 0 }, ptr %a902 + store { ptr, i64, i64 } %t900, ptr %a903 + call void @finch_str_concat(ptr %a901, ptr %a902, ptr %a903) + store { ptr, i64, i64 } %t900, ptr %a904 + call void @finch_str_drop(ptr %a904) + %t905 = load { ptr, i64, i64 }, ptr %a901 + store { ptr, i64, i64 } %t905, ptr %a907 + store { ptr, i64, i64 } { ptr @.str.2283, i64 1, i64 0 }, ptr %a908 + call void @finch_str_concat(ptr %a906, ptr %a907, ptr %a908) + store { ptr, i64, i64 } %t905, ptr %a909 + call void @finch_str_drop(ptr %a909) + %t910 = load { ptr, i64, i64 }, ptr %a906 + %t911 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 1 + %t912 = load { ptr, i64, i64 }, ptr %t911 + store { ptr, i64, i64 } %t910, ptr %a914 + store { ptr, i64, i64 } %t912, ptr %a915 + call void @finch_str_concat(ptr %a913, ptr %a914, ptr %a915) + store { ptr, i64, i64 } %t910, ptr %a916 + call void @finch_str_drop(ptr %a916) + %t917 = load { ptr, i64, i64 }, ptr %a913 + %t918 = getelementptr inbounds %S.gen.FnSig, ptr %a895, i32 0, i32 11 + %t919 = load { ptr, i64, i64 }, ptr %t918 + store { ptr, i64, i64 } %t917, ptr %t918 + store { ptr, i64, i64 } %t919, ptr %a920 + call void @finch_str_drop(ptr %a920) + %t921 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 2 + %t922 = getelementptr inbounds { ptr, i64, i64 }, ptr %t921, i32 0, i32 1 + %t923 = load i64, ptr %t922 + %t924 = icmp sgt i64 %t923, 0 + br i1 %t924, label %then3653, label %endif3655 +then3653: + %t925 = load ptr, ptr %a1 + %t926 = icmp eq ptr %t925, null + br i1 %t926, label %panic3656, label %ok3657 +panic3656: + call void @finch_panic(ptr @.str.2285, i64 1539, ptr @.str.2286) unreachable -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 +ok3657: + %t927 = getelementptr inbounds %S.gen.Gen, ptr %t925, i32 0, i32 14 %t928 = load { ptr, i64, i64 }, ptr %t927 - store { ptr, i64, i64 } %t928, ptr %a929 - 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.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.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 %range3453, label %inrange3454 -range3453: - call void @finch_panic_index(ptr @.str.2202, i64 1396, i64 %t940, i64 %t942) - unreachable -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.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.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 %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 - %t960 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 9 - %t961 = load i64, ptr %a917 - %t962 = load { ptr, i64, i64 }, ptr %t960 - %t963 = extractvalue { ptr, i64, i64 } %t962, 1 - %t964 = icmp uge i64 %t961, %t963 - br i1 %t964, label %range3455, label %inrange3456 -range3455: - call void @finch_panic_index(ptr @.str.2205, i64 1398, i64 %t961, i64 %t963) - unreachable -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 + %t929 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t928) + store { ptr, i64, i64 } { ptr @.str.2284, i64 7, i64 0 }, ptr %a931 + store { ptr, i64, i64 } %t929, ptr %a932 + call void @finch_str_concat(ptr %a930, ptr %a931, ptr %a932) + store { ptr, i64, i64 } %t929, ptr %a933 + call void @finch_str_drop(ptr %a933) + %t934 = load { ptr, i64, i64 }, ptr %a930 + store { ptr, i64, i64 } %t934, ptr %a936 + store { ptr, i64, i64 } { ptr @.str.2287, i64 1, i64 0 }, ptr %a937 + call void @finch_str_concat(ptr %a935, ptr %a936, ptr %a937) + store { ptr, i64, i64 } %t934, ptr %a938 + call void @finch_str_drop(ptr %a938) + %t939 = load { ptr, i64, i64 }, ptr %a935 + %t940 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 2 + %t941 = load { ptr, i64, i64 }, ptr %t940 + store { ptr, i64, i64 } %t939, ptr %a943 + store { ptr, i64, i64 } %t941, ptr %a944 + call void @finch_str_concat(ptr %a942, ptr %a943, ptr %a944) + store { ptr, i64, i64 } %t939, ptr %a945 + call void @finch_str_drop(ptr %a945) + %t946 = load { ptr, i64, i64 }, ptr %a942 + store { ptr, i64, i64 } %t946, ptr %a948 + store { ptr, i64, i64 } { ptr @.str.2288, i64 1, i64 0 }, ptr %a949 + call void @finch_str_concat(ptr %a947, ptr %a948, ptr %a949) + store { ptr, i64, i64 } %t946, ptr %a950 + call void @finch_str_drop(ptr %a950) + %t951 = load { ptr, i64, i64 }, ptr %a947 + %t952 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 1 + %t953 = load { ptr, i64, i64 }, ptr %t952 + store { ptr, i64, i64 } %t951, ptr %a955 + store { ptr, i64, i64 } %t953, ptr %a956 + call void @finch_str_concat(ptr %a954, ptr %a955, ptr %a956) + store { ptr, i64, i64 } %t951, ptr %a957 + call void @finch_str_drop(ptr %a957) + %t958 = load { ptr, i64, i64 }, ptr %a954 + %t959 = getelementptr inbounds %S.gen.FnSig, ptr %a895, i32 0, i32 11 + %t960 = load { ptr, i64, i64 }, ptr %t959 + store { ptr, i64, i64 } %t958, ptr %t959 + store { ptr, i64, i64 } %t960, ptr %a961 + call void @finch_str_drop(ptr %a961) + br label %endif3655 +endif3655: + %t962 = load ptr, ptr %a1 + %t963 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 5 + %t964 = load %S.ast.Type, ptr %t963 + %t965 = load %S.ast.Node, ptr %a534 + %t966 = call %S.ast.Type @finch.gen.resolve(ptr %t962, %S.ast.Type %t964, %S.ast.Node %t965) + %t967 = getelementptr inbounds %S.gen.FnSig, ptr %a895, i32 0, i32 12 %t968 = load %S.ast.Type, ptr %t967 - %t969 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 9 - %t970 = load i64, ptr %a917 - %t971 = load { ptr, i64, i64 }, ptr %t969 - %t972 = extractvalue { ptr, i64, i64 } %t971, 1 - %t973 = icmp uge i64 %t970, %t972 - br i1 %t973, label %range3457, label %inrange3458 -range3457: - call void @finch_panic_index(ptr @.str.2206, i64 1398, i64 %t970, i64 %t972) + store %S.ast.Type %t966, ptr %t967 + store %S.ast.Type %t968, ptr %a969 + call void @finch.drop.S_ast_Type(ptr %a969) + %t970 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 9 + %t971 = getelementptr inbounds { ptr, i64, i64 }, ptr %t970, i32 0, i32 1 + %t972 = load i64, ptr %t971 + %t973 = sub i64 %t972, 1 + store i64 0, ptr %a974 + br label %for.cond3658 +for.cond3658: + %t975 = load i64, ptr %a974 + %t976 = icmp slt i64 %t975, %t973 + br i1 %t976, label %for.body3659, label %for.end3661 +for.body3659: + %t977 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 9 + %t978 = load i64, ptr %a974 + %t979 = load { ptr, i64, i64 }, ptr %t977 + %t980 = extractvalue { ptr, i64, i64 } %t979, 1 + %t981 = icmp uge i64 %t978, %t980 + br i1 %t981, label %range3662, label %inrange3663 +range3662: + call void @finch_panic_index(ptr @.str.2289, i64 1543, i64 %t978, i64 %t980) unreachable -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 - %t977 = call %S.ast.Type @finch.gen.resolve(ptr %t959, %S.ast.Type %t968, %S.ast.Node %t976) - %t978 = load i64, ptr %t958 - %t979 = add i64 %t978, 1 - call void @finch_arr_reserve(ptr %t957, i64 %t979, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t980 = load ptr, ptr %t957 - %t981 = getelementptr inbounds %S.ast.Type, ptr %t980, i64 %t978 - store %S.ast.Type %t977, ptr %t981 - store i64 %t979, ptr %t958 - %t982 = getelementptr inbounds %S.gen.FnSig, ptr %a852, i32 0, i32 14 - %t983 = getelementptr inbounds { ptr, i64, i64 }, ptr %t982, i32 0, i32 1 - %t984 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 9 - %t985 = load i64, ptr %a917 - %t986 = load { ptr, i64, i64 }, ptr %t984 - %t987 = extractvalue { ptr, i64, i64 } %t986, 1 - %t988 = icmp uge i64 %t985, %t987 - br i1 %t988, label %range3459, label %inrange3460 -range3459: - call void @finch_panic_index(ptr @.str.2207, i64 1399, i64 %t985, i64 %t987) +inrange3663: + %t982 = extractvalue { ptr, i64, i64 } %t979, 0 + %t983 = getelementptr inbounds %S.ast.Node, ptr %t982, i64 %t978 + %t984 = getelementptr inbounds %S.ast.Node, ptr %t983, i32 0, i32 1 + %t985 = load { ptr, i64, i64 }, ptr %t984 + store { ptr, i64, i64 } %t985, ptr %a986 + store { ptr, i64, i64 } { ptr @.str.2290, i64 4, i64 0 }, ptr %a987 + %t988 = call i32 @finch_str_eq(ptr %a986, ptr %a987) + %t989 = icmp ne i32 %t988, 0 + br label %logic.from3664 +logic.from3664: + br i1 %t989, label %logic.rhs3665, label %logic.end3666 +logic.rhs3665: + %t990 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 2 + %t991 = getelementptr inbounds { ptr, i64, i64 }, ptr %t990, i32 0, i32 1 + %t992 = load i64, ptr %t991 + %t993 = icmp sgt i64 %t992, 0 + br label %logic.rend3667 +logic.rend3667: + br label %logic.end3666 +logic.end3666: + %t994 = phi i1 [ false, %logic.from3664 ], [ %t993, %logic.rend3667 ] + br i1 %t994, label %then3668, label %endif3670 +then3668: + %t995 = load ptr, ptr %a1 + %t996 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 9 + %t997 = load i64, ptr %a974 + %t998 = load { ptr, i64, i64 }, ptr %t996 + %t999 = extractvalue { ptr, i64, i64 } %t998, 1 + %t1000 = icmp uge i64 %t997, %t999 + br i1 %t1000, label %range3671, label %inrange3672 +range3671: + call void @finch_panic_index(ptr @.str.2291, i64 1544, i64 %t997, i64 %t999) unreachable -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 - %t992 = load { ptr, i64, i64 }, ptr %t991 - store { ptr, i64, i64 } %t992, ptr %a993 - call void @finch_str_copy(ptr %a994, ptr %a993) - %t995 = load { ptr, i64, i64 }, ptr %a994 - %t996 = load i64, ptr %t983 - %t997 = add i64 %t996, 1 - call void @finch_arr_reserve(ptr %t982, i64 %t997, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t998 = load ptr, ptr %t982 - %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.step3442 -for.step3442: - %t1000 = load i64, ptr %a917 - %t1001 = add i64 %t1000, 1 - store i64 %t1001, ptr %a917 - 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 %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 %endif3463 -endif3463: - %t1007 = load ptr, ptr %a1 - %t1008 = icmp eq ptr %t1007, null - br i1 %t1008, label %panic3464, label %ok3465 -panic3464: - call void @finch_panic(ptr @.str.2208, i64 1404, ptr @.str.2209) +inrange3672: + %t1001 = extractvalue { ptr, i64, i64 } %t998, 0 + %t1002 = getelementptr inbounds %S.ast.Node, ptr %t1001, i64 %t997 + %t1003 = load %S.ast.Node, ptr %t1002 + %t1004 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 2 + %t1005 = load { ptr, i64, i64 }, ptr %t1004 + store { ptr, i64, i64 } { ptr @.str.2292, i64 22, i64 0 }, ptr %a1007 + store { ptr, i64, i64 } %t1005, ptr %a1008 + call void @finch_str_concat(ptr %a1006, ptr %a1007, ptr %a1008) + %t1009 = load { ptr, i64, i64 }, ptr %a1006 + store { ptr, i64, i64 } %t1009, ptr %a1011 + store { ptr, i64, i64 } { ptr @.str.2293, i64 24, i64 0 }, ptr %a1012 + call void @finch_str_concat(ptr %a1010, ptr %a1011, ptr %a1012) + store { ptr, i64, i64 } %t1009, ptr %a1013 + call void @finch_str_drop(ptr %a1013) + %t1014 = load { ptr, i64, i64 }, ptr %a1010 + call void @finch.gen.fail(ptr %t995, %S.ast.Node %t1003, { ptr, i64, i64 } %t1014) + store { ptr, i64, i64 } %t1014, ptr %a1015 + call void @finch_str_drop(ptr %a1015) + br label %endif3670 +endif3670: + %t1016 = getelementptr inbounds %S.gen.FnSig, ptr %a895, i32 0, i32 13 + %t1017 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1016, i32 0, i32 1 + %t1018 = load ptr, ptr %a1 + %t1019 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 9 + %t1020 = load i64, ptr %a974 + %t1021 = load { ptr, i64, i64 }, ptr %t1019 + %t1022 = extractvalue { ptr, i64, i64 } %t1021, 1 + %t1023 = icmp uge i64 %t1020, %t1022 + br i1 %t1023, label %range3673, label %inrange3674 +range3673: + call void @finch_panic_index(ptr @.str.2294, i64 1546, i64 %t1020, i64 %t1022) unreachable -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 - store %S.gen.FnSig %t1011, ptr %a1012 - call void @finch.copy.S_gen_FnSig(ptr %a1013, ptr %a1012) - %t1014 = load %S.gen.FnSig, ptr %a1013 - %t1015 = load i64, ptr %t1010 - %t1016 = add i64 %t1015, 1 - call void @finch_arr_reserve(ptr %t1009, i64 %t1016, i64 ptrtoint (ptr getelementptr (%S.gen.FnSig, ptr null, i32 1) to i64)) - %t1017 = load ptr, ptr %t1009 - %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.step3350 -for.step3350: - %t1019 = load i64, ptr %a492 - %t1020 = add i64 %t1019, 1 - store i64 %t1020, ptr %a492 - 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.cond3334 -for.end3337: - store i1 true, ptr %a1023 - br label %while.cond3466 -while.cond3466: - %t1024 = load i1, ptr %a1023 - 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 %panic3469, label %ok3470 -panic3469: - call void @finch_panic(ptr @.str.2210, i64 1412, ptr @.str.2211) +inrange3674: + %t1024 = extractvalue { ptr, i64, i64 } %t1021, 0 + %t1025 = getelementptr inbounds %S.ast.Node, ptr %t1024, i64 %t1020 + %t1026 = getelementptr inbounds %S.ast.Node, ptr %t1025, i32 0, i32 5 + %t1027 = load %S.ast.Type, ptr %t1026 + %t1028 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 9 + %t1029 = load i64, ptr %a974 + %t1030 = load { ptr, i64, i64 }, ptr %t1028 + %t1031 = extractvalue { ptr, i64, i64 } %t1030, 1 + %t1032 = icmp uge i64 %t1029, %t1031 + br i1 %t1032, label %range3675, label %inrange3676 +range3675: + call void @finch_panic_index(ptr @.str.2295, i64 1546, i64 %t1029, i64 %t1031) unreachable -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.cond3471 -for.cond3471: - %t1031 = load i64, ptr %a1030 - %t1032 = icmp slt i64 %t1031, %t1029 - 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 %panic3475, label %ok3476 -panic3475: - call void @finch_panic(ptr @.str.2212, i64 1413, ptr @.str.2213) +inrange3676: + %t1033 = extractvalue { ptr, i64, i64 } %t1030, 0 + %t1034 = getelementptr inbounds %S.ast.Node, ptr %t1033, i64 %t1029 + %t1035 = load %S.ast.Node, ptr %t1034 + %t1036 = call %S.ast.Type @finch.gen.resolve(ptr %t1018, %S.ast.Type %t1027, %S.ast.Node %t1035) + %t1037 = load i64, ptr %t1017 + %t1038 = add i64 %t1037, 1 + call void @finch_arr_reserve(ptr %t1016, i64 %t1038, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) + %t1039 = load ptr, ptr %t1016 + %t1040 = getelementptr inbounds %S.ast.Type, ptr %t1039, i64 %t1037 + store %S.ast.Type %t1036, ptr %t1040 + store i64 %t1038, ptr %t1017 + %t1041 = getelementptr inbounds %S.gen.FnSig, ptr %a895, i32 0, i32 14 + %t1042 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1041, i32 0, i32 1 + %t1043 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 9 + %t1044 = load i64, ptr %a974 + %t1045 = load { ptr, i64, i64 }, ptr %t1043 + %t1046 = extractvalue { ptr, i64, i64 } %t1045, 1 + %t1047 = icmp uge i64 %t1044, %t1046 + br i1 %t1047, label %range3677, label %inrange3678 +range3677: + call void @finch_panic_index(ptr @.str.2296, i64 1547, i64 %t1044, i64 %t1046) unreachable -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 %range3477, label %inrange3478 -range3477: - call void @finch_panic_index(ptr @.str.2214, i64 1413, i64 %t1036, i64 %t1038) +inrange3678: + %t1048 = extractvalue { ptr, i64, i64 } %t1045, 0 + %t1049 = getelementptr inbounds %S.ast.Node, ptr %t1048, i64 %t1044 + %t1050 = getelementptr inbounds %S.ast.Node, ptr %t1049, i32 0, i32 1 + %t1051 = load { ptr, i64, i64 }, ptr %t1050 + store { ptr, i64, i64 } %t1051, ptr %a1052 + call void @finch_str_copy(ptr %a1053, ptr %a1052) + %t1054 = load { ptr, i64, i64 }, ptr %a1053 + %t1055 = load i64, ptr %t1042 + %t1056 = add i64 %t1055, 1 + call void @finch_arr_reserve(ptr %t1041, i64 %t1056, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t1057 = load ptr, ptr %t1041 + %t1058 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1057, i64 %t1055 + store { ptr, i64, i64 } %t1054, ptr %t1058 + store i64 %t1056, ptr %t1042 + br label %for.step3660 +for.step3660: + %t1059 = load i64, ptr %a974 + %t1060 = add i64 %t1059, 1 + store i64 %t1060, ptr %a974 + br label %for.cond3658 +for.end3661: + %t1061 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 8 + %t1062 = load i1, ptr %t1061 + br i1 %t1062, label %then3679, label %endif3681 +then3679: + %t1063 = load ptr, ptr %a1 + %t1064 = load %S.ast.Node, ptr %a534 + %t1065 = load %S.gen.FnSig, ptr %a895 + call void @finch.gen.checkExport(ptr %t1063, %S.ast.Node %t1064, %S.gen.FnSig %t1065) + br label %endif3681 +endif3681: + %t1066 = load ptr, ptr %a1 + %t1067 = icmp eq ptr %t1066, null + br i1 %t1067, label %panic3682, label %ok3683 +panic3682: + call void @finch_panic(ptr @.str.2297, i64 1552, ptr @.str.2298) unreachable -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.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 %panic3482, label %ok3483 -panic3482: - call void @finch_panic(ptr @.str.2215, i64 1413, ptr @.str.2216) +ok3683: + %t1068 = getelementptr inbounds %S.gen.Gen, ptr %t1066, i32 0, i32 15 + %t1069 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1068, i32 0, i32 1 + %t1070 = load %S.gen.FnSig, ptr %a895 + store %S.gen.FnSig %t1070, ptr %a1071 + call void @finch.copy.S_gen_FnSig(ptr %a1072, ptr %a1071) + %t1073 = load %S.gen.FnSig, ptr %a1072 + %t1074 = load i64, ptr %t1069 + %t1075 = add i64 %t1074, 1 + call void @finch_arr_reserve(ptr %t1068, i64 %t1075, i64 ptrtoint (ptr getelementptr (%S.gen.FnSig, ptr null, i32 1) to i64)) + %t1076 = load ptr, ptr %t1068 + %t1077 = getelementptr inbounds %S.gen.FnSig, ptr %t1076, i64 %t1074 + store %S.gen.FnSig %t1073, ptr %t1077 + store i64 %t1075, ptr %t1069 + call void @finch.drop.S_gen_FnSig(ptr %a895) + call void @finch_str_drop(ptr %a637) + call void @finch.drop.S_ast_Node(ptr %a534) + br label %for.step3568 +for.step3568: + %t1078 = load i64, ptr %a511 + %t1079 = add i64 %t1078, 1 + store i64 %t1079, ptr %a511 + br label %for.cond3566 +for.end3569: + br label %for.step3554 +for.step3554: + %t1080 = load i64, ptr %a477 + %t1081 = add i64 %t1080, 1 + store i64 %t1081, ptr %a477 + br label %for.cond3552 +for.end3555: + store i1 true, ptr %a1082 + br label %while.cond3684 +while.cond3684: + %t1083 = load i1, ptr %a1082 + br i1 %t1083, label %while.body3685, label %while.end3686 +while.body3685: + store i1 false, ptr %a1082 + %t1084 = load ptr, ptr %a1 + %t1085 = icmp eq ptr %t1084, null + br i1 %t1085, label %panic3687, label %ok3688 +panic3687: + call void @finch_panic(ptr @.str.2299, i64 1560, ptr @.str.2300) unreachable -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 %range3484, label %inrange3485 -range3484: - call void @finch_panic_index(ptr @.str.2217, i64 1413, i64 %t1049, i64 %t1051) +ok3688: + %t1086 = getelementptr inbounds %S.gen.Gen, ptr %t1084, i32 0, i32 15 + %t1087 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1086, i32 0, i32 1 + %t1088 = load i64, ptr %t1087 + store i64 0, ptr %a1089 + br label %for.cond3689 +for.cond3689: + %t1090 = load i64, ptr %a1089 + %t1091 = icmp slt i64 %t1090, %t1088 + br i1 %t1091, label %for.body3690, label %for.end3692 +for.body3690: + %t1092 = load ptr, ptr %a1 + %t1093 = icmp eq ptr %t1092, null + br i1 %t1093, label %panic3693, label %ok3694 +panic3693: + call void @finch_panic(ptr @.str.2301, i64 1561, ptr @.str.2302) unreachable -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.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 %panic3490, label %ok3491 -panic3490: - call void @finch_panic(ptr @.str.2218, i64 1414, ptr @.str.2219) +ok3694: + %t1094 = getelementptr inbounds %S.gen.Gen, ptr %t1092, i32 0, i32 15 + %t1095 = load i64, ptr %a1089 + %t1096 = load { ptr, i64, i64 }, ptr %t1094 + %t1097 = extractvalue { ptr, i64, i64 } %t1096, 1 + %t1098 = icmp uge i64 %t1095, %t1097 + br i1 %t1098, label %range3695, label %inrange3696 +range3695: + call void @finch_panic_index(ptr @.str.2303, i64 1561, i64 %t1095, i64 %t1097) unreachable -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 %panic3492, label %ok3493 -panic3492: - call void @finch_panic(ptr @.str.2220, i64 1414, ptr @.str.2221) +inrange3696: + %t1099 = extractvalue { ptr, i64, i64 } %t1096, 0 + %t1100 = getelementptr inbounds %S.gen.FnSig, ptr %t1099, i64 %t1095 + %t1101 = getelementptr inbounds %S.gen.FnSig, ptr %t1100, i32 0, i32 2 + %t1102 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1101, i32 0, i32 1 + %t1103 = load i64, ptr %t1102 + %t1104 = icmp sgt i64 %t1103, 0 + br label %logic.from3697 +logic.from3697: + br i1 %t1104, label %logic.rhs3698, label %logic.end3699 +logic.rhs3698: + %t1105 = load ptr, ptr %a1 + %t1106 = icmp eq ptr %t1105, null + br i1 %t1106, label %panic3700, label %ok3701 +panic3700: + call void @finch_panic(ptr @.str.2304, i64 1561, ptr @.str.2305) unreachable -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 %range3494, label %inrange3495 -range3494: - call void @finch_panic_index(ptr @.str.2222, i64 1414, i64 %t1065, i64 %t1067) +ok3701: + %t1107 = getelementptr inbounds %S.gen.Gen, ptr %t1105, i32 0, i32 15 + %t1108 = load i64, ptr %a1089 + %t1109 = load { ptr, i64, i64 }, ptr %t1107 + %t1110 = extractvalue { ptr, i64, i64 } %t1109, 1 + %t1111 = icmp uge i64 %t1108, %t1110 + br i1 %t1111, label %range3702, label %inrange3703 +range3702: + call void @finch_panic_index(ptr @.str.2306, i64 1561, i64 %t1108, i64 %t1110) unreachable -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 - %t1072 = load i64, ptr %t1071 - %t1073 = load { ptr, i64, i64 }, ptr %t1061 - %t1074 = extractvalue { ptr, i64, i64 } %t1073, 1 - %t1075 = icmp uge i64 %t1072, %t1074 - br i1 %t1075, label %range3496, label %inrange3497 -range3496: - call void @finch_panic_index(ptr @.str.2223, i64 1414, i64 %t1072, i64 %t1074) +inrange3703: + %t1112 = extractvalue { ptr, i64, i64 } %t1109, 0 + %t1113 = getelementptr inbounds %S.gen.FnSig, ptr %t1112, i64 %t1108 + %t1114 = getelementptr inbounds %S.gen.FnSig, ptr %t1113, i32 0, i32 10 + %t1115 = load i1, ptr %t1114 + %t1116 = xor i1 %t1115, true + br label %logic.rend3704 +logic.rend3704: + br label %logic.end3699 +logic.end3699: + %t1117 = phi i1 [ false, %logic.from3697 ], [ %t1116, %logic.rend3704 ] + br i1 %t1117, label %then3705, label %endif3707 +then3705: + %t1118 = load ptr, ptr %a1 + %t1119 = icmp eq ptr %t1118, null + br i1 %t1119, label %panic3708, label %ok3709 +panic3708: + call void @finch_panic(ptr @.str.2307, i64 1562, ptr @.str.2308) unreachable -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 %panic3498, label %ok3499 -panic3498: - call void @finch_panic(ptr @.str.2224, i64 1414, ptr @.str.2225) +ok3709: + %t1120 = getelementptr inbounds %S.gen.Gen, ptr %t1118, i32 0, i32 0 + %t1121 = load ptr, ptr %a1 + %t1122 = icmp eq ptr %t1121, null + br i1 %t1122, label %panic3710, label %ok3711 +panic3710: + call void @finch_panic(ptr @.str.2309, i64 1562, ptr @.str.2310) unreachable -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 %range3500, label %inrange3501 -range3500: - call void @finch_panic_index(ptr @.str.2226, i64 1414, i64 %t1082, i64 %t1084) +ok3711: + %t1123 = getelementptr inbounds %S.gen.Gen, ptr %t1121, i32 0, i32 15 + %t1124 = load i64, ptr %a1089 + %t1125 = load { ptr, i64, i64 }, ptr %t1123 + %t1126 = extractvalue { ptr, i64, i64 } %t1125, 1 + %t1127 = icmp uge i64 %t1124, %t1126 + br i1 %t1127, label %range3712, label %inrange3713 +range3712: + call void @finch_panic_index(ptr @.str.2311, i64 1562, i64 %t1124, i64 %t1126) unreachable -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 - %t1089 = load i64, ptr %t1088 - %t1090 = load { ptr, i64, i64 }, ptr %t1078 - %t1091 = extractvalue { ptr, i64, i64 } %t1090, 1 - %t1092 = icmp uge i64 %t1089, %t1091 - br i1 %t1092, label %range3502, label %inrange3503 -range3502: - call void @finch_panic_index(ptr @.str.2227, i64 1414, i64 %t1089, i64 %t1091) +inrange3713: + %t1128 = extractvalue { ptr, i64, i64 } %t1125, 0 + %t1129 = getelementptr inbounds %S.gen.FnSig, ptr %t1128, i64 %t1124 + %t1130 = getelementptr inbounds %S.gen.FnSig, ptr %t1129, i32 0, i32 16 + %t1131 = load i64, ptr %t1130 + %t1132 = load { ptr, i64, i64 }, ptr %t1120 + %t1133 = extractvalue { ptr, i64, i64 } %t1132, 1 + %t1134 = icmp uge i64 %t1131, %t1133 + br i1 %t1134, label %range3714, label %inrange3715 +range3714: + call void @finch_panic_index(ptr @.str.2312, i64 1562, i64 %t1131, i64 %t1133) unreachable -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 - store %S.ast.Node %t1095, ptr %a1096 - call void @finch.copy.S_ast_Node(ptr %a1097, ptr %a1096) - %t1098 = load %S.ast.Node, ptr %a1097 - store %S.ast.Node %t1098, ptr %a1099 - %t1100 = load ptr, ptr %a1 - %t1101 = getelementptr inbounds %S.ast.Node, ptr %a1099, i32 0, i32 9 - %t1102 = getelementptr inbounds %S.ast.Node, ptr %a1099, i32 0, i32 9 - %t1103 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1102, i32 0, i32 1 - %t1104 = load i64, ptr %t1103 - %t1105 = sub i64 %t1104, 1 - %t1106 = load { ptr, i64, i64 }, ptr %t1101 - %t1107 = extractvalue { ptr, i64, i64 } %t1106, 1 - %t1108 = icmp uge i64 %t1105, %t1107 - br i1 %t1108, label %range3504, label %inrange3505 -range3504: - call void @finch_panic_index(ptr @.str.2229, i64 1415, i64 %t1105, i64 %t1107) +inrange3715: + %t1135 = extractvalue { ptr, i64, i64 } %t1132, 0 + %t1136 = getelementptr inbounds %S.ast.Program, ptr %t1135, i64 %t1131 + %t1137 = getelementptr inbounds %S.ast.Program, ptr %t1136, i32 0, i32 8 + %t1138 = load ptr, ptr %a1 + %t1139 = icmp eq ptr %t1138, null + br i1 %t1139, label %panic3716, label %ok3717 +panic3716: + call void @finch_panic(ptr @.str.2313, i64 1562, ptr @.str.2314) unreachable -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.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 %panic3509, label %ok3510 -panic3509: - call void @finch_panic(ptr @.str.2230, i64 1416, ptr @.str.2231) +ok3717: + %t1140 = getelementptr inbounds %S.gen.Gen, ptr %t1138, i32 0, i32 15 + %t1141 = load i64, ptr %a1089 + %t1142 = load { ptr, i64, i64 }, ptr %t1140 + %t1143 = extractvalue { ptr, i64, i64 } %t1142, 1 + %t1144 = icmp uge i64 %t1141, %t1143 + br i1 %t1144, label %range3718, label %inrange3719 +range3718: + call void @finch_panic_index(ptr @.str.2315, i64 1562, i64 %t1141, i64 %t1143) unreachable -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 %range3511, label %inrange3512 -range3511: - call void @finch_panic_index(ptr @.str.2232, i64 1416, i64 %t1116, i64 %t1118) +inrange3719: + %t1145 = extractvalue { ptr, i64, i64 } %t1142, 0 + %t1146 = getelementptr inbounds %S.gen.FnSig, ptr %t1145, i64 %t1141 + %t1147 = getelementptr inbounds %S.gen.FnSig, ptr %t1146, i32 0, i32 17 + %t1148 = load i64, ptr %t1147 + %t1149 = load { ptr, i64, i64 }, ptr %t1137 + %t1150 = extractvalue { ptr, i64, i64 } %t1149, 1 + %t1151 = icmp uge i64 %t1148, %t1150 + br i1 %t1151, label %range3720, label %inrange3721 +range3720: + call void @finch_panic_index(ptr @.str.2316, i64 1562, i64 %t1148, i64 %t1150) unreachable -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 %panic3513, label %ok3514 -panic3513: - call void @finch_panic(ptr @.str.2233, i64 1417, ptr @.str.2234) +inrange3721: + %t1152 = extractvalue { ptr, i64, i64 } %t1149, 0 + %t1153 = getelementptr inbounds %S.ast.Node, ptr %t1152, i64 %t1148 + %t1154 = load %S.ast.Node, ptr %t1153 + store %S.ast.Node %t1154, ptr %a1155 + call void @finch.copy.S_ast_Node(ptr %a1156, ptr %a1155) + %t1157 = load %S.ast.Node, ptr %a1156 + store %S.ast.Node %t1157, ptr %a1158 + %t1159 = load ptr, ptr %a1 + %t1160 = getelementptr inbounds %S.ast.Node, ptr %a1158, i32 0, i32 9 + %t1161 = getelementptr inbounds %S.ast.Node, ptr %a1158, i32 0, i32 9 + %t1162 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1161, i32 0, i32 1 + %t1163 = load i64, ptr %t1162 + %t1164 = sub i64 %t1163, 1 + %t1165 = load { ptr, i64, i64 }, ptr %t1160 + %t1166 = extractvalue { ptr, i64, i64 } %t1165, 1 + %t1167 = icmp uge i64 %t1164, %t1166 + br i1 %t1167, label %range3722, label %inrange3723 +range3722: + call void @finch_panic_index(ptr @.str.2318, i64 1563, i64 %t1164, i64 %t1166) unreachable -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 %panic3515, label %ok3516 -panic3515: - call void @finch_panic(ptr @.str.2235, i64 1417, ptr @.str.2236) +inrange3723: + %t1168 = extractvalue { ptr, i64, i64 } %t1165, 0 + %t1169 = getelementptr inbounds %S.ast.Node, ptr %t1168, i64 %t1164 + %t1170 = load %S.ast.Node, ptr %t1169 + %t1171 = call i1 @finch.gen.mutates(ptr %t1159, { ptr, i64, i64 } { ptr @.str.2317, i64 4, i64 0 }, %S.ast.Node %t1170) + br i1 %t1171, label %then3724, label %endif3726 +then3724: + %t1172 = load ptr, ptr %a1 + %t1173 = icmp eq ptr %t1172, null + br i1 %t1173, label %panic3727, label %ok3728 +panic3727: + call void @finch_panic(ptr @.str.2319, i64 1564, ptr @.str.2320) unreachable -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 %range3517, label %inrange3518 -range3517: - call void @finch_panic_index(ptr @.str.2237, i64 1417, i64 %t1130, i64 %t1132) +ok3728: + %t1174 = getelementptr inbounds %S.gen.Gen, ptr %t1172, i32 0, i32 15 + %t1175 = load i64, ptr %a1089 + %t1176 = load { ptr, i64, i64 }, ptr %t1174 + %t1177 = extractvalue { ptr, i64, i64 } %t1176, 1 + %t1178 = icmp uge i64 %t1175, %t1177 + br i1 %t1178, label %range3729, label %inrange3730 +range3729: + call void @finch_panic_index(ptr @.str.2321, i64 1564, i64 %t1175, i64 %t1177) unreachable -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 - %t1137 = load { ptr, i64, i64 }, ptr %t1136 - store { ptr, i64, i64 } %t1137, ptr %a1138 - call void @finch_str_copy(ptr %a1139, ptr %a1138) - %t1140 = load { ptr, i64, i64 }, ptr %a1139 - %t1141 = load i64, ptr %t1126 - %t1142 = add i64 %t1141, 1 - call void @finch_arr_reserve(ptr %t1125, i64 %t1142, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t1143 = load ptr, ptr %t1125 - %t1144 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1143, i64 %t1141 - store { ptr, i64, i64 } %t1140, ptr %t1144 - store i64 %t1142, ptr %t1126 - store i1 true, ptr %a1023 - 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.cond3471 -for.end3474: - %t1147 = load ptr, ptr %a1 - %t1148 = icmp eq ptr %t1147, null - br i1 %t1148, label %panic3519, label %ok3520 -panic3519: - call void @finch_panic(ptr @.str.2238, i64 1422, ptr @.str.2239) +inrange3730: + %t1179 = extractvalue { ptr, i64, i64 } %t1176, 0 + %t1180 = getelementptr inbounds %S.gen.FnSig, ptr %t1179, i64 %t1175 + %t1181 = getelementptr inbounds %S.gen.FnSig, ptr %t1180, i32 0, i32 10 + store i1 true, ptr %t1181 + %t1182 = load ptr, ptr %a1 + %t1183 = icmp eq ptr %t1182, null + br i1 %t1183, label %panic3731, label %ok3732 +panic3731: + call void @finch_panic(ptr @.str.2322, i64 1565, ptr @.str.2323) unreachable -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.cond3521 -for.cond3521: - %t1153 = load i64, ptr %a1152 - %t1154 = icmp slt i64 %t1153, %t1151 - 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 %panic3525, label %ok3526 -panic3525: - call void @finch_panic(ptr @.str.2240, i64 1423, ptr @.str.2241) +ok3732: + %t1184 = getelementptr inbounds %S.gen.Gen, ptr %t1182, i32 0, i32 23 + %t1185 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1184, i32 0, i32 1 + %t1186 = load ptr, ptr %a1 + %t1187 = icmp eq ptr %t1186, null + br i1 %t1187, label %panic3733, label %ok3734 +panic3733: + call void @finch_panic(ptr @.str.2324, i64 1565, ptr @.str.2325) unreachable -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 %range3527, label %inrange3528 -range3527: - call void @finch_panic_index(ptr @.str.2242, i64 1423, i64 %t1158, i64 %t1160) - unreachable -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 - store %S.gen.Template %t1164, ptr %a1165 - call void @finch.copy.S_gen_Template(ptr %a1166, ptr %a1165) - %t1167 = load %S.gen.Template, ptr %a1166 - store %S.gen.Template %t1167, ptr %a1168 - %t1169 = getelementptr inbounds %S.gen.Template, ptr %a1168, i32 0, i32 2 - %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.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.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 %panic3536, label %ok3537 -panic3536: - call void @finch_panic(ptr @.str.2243, i64 1425, ptr @.str.2244) - unreachable -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 %range3538, label %inrange3539 -range3538: - call void @finch_panic_index(ptr @.str.2245, i64 1425, i64 %t1181, i64 %t1183) - unreachable -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 - %t1188 = getelementptr inbounds %S.gen.Template, ptr %a1168, i32 0, i32 5 - %t1189 = load i64, ptr %t1188 - %t1190 = load { ptr, i64, i64 }, ptr %t1187 +ok3734: + %t1188 = getelementptr inbounds %S.gen.Gen, ptr %t1186, i32 0, i32 15 + %t1189 = load i64, ptr %a1089 + %t1190 = load { ptr, i64, i64 }, ptr %t1188 %t1191 = extractvalue { ptr, i64, i64 } %t1190, 1 %t1192 = icmp uge i64 %t1189, %t1191 - br i1 %t1192, label %range3540, label %inrange3541 -range3540: - call void @finch_panic_index(ptr @.str.2246, i64 1425, i64 %t1189, i64 %t1191) + br i1 %t1192, label %range3735, label %inrange3736 +range3735: + call void @finch_panic_index(ptr @.str.2326, i64 1565, i64 %t1189, i64 %t1191) unreachable -inrange3541: +inrange3736: %t1193 = extractvalue { ptr, i64, i64 } %t1190, 0 - %t1194 = getelementptr inbounds %S.ast.Node, ptr %t1193, i64 %t1189 - %t1195 = load %S.ast.Node, ptr %t1194 - store %S.ast.Node %t1195, ptr %a1196 - call void @finch.copy.S_ast_Node(ptr %a1197, ptr %a1196) - %t1198 = load %S.ast.Node, ptr %a1197 - store %S.ast.Node %t1198, ptr %a1199 - %t1200 = load ptr, ptr %a1 - %t1201 = getelementptr inbounds %S.ast.Node, ptr %a1199, i32 0, i32 9 - %t1202 = getelementptr inbounds %S.ast.Node, ptr %a1199, i32 0, i32 9 - %t1203 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1202, i32 0, i32 1 - %t1204 = load i64, ptr %t1203 - %t1205 = sub i64 %t1204, 1 - %t1206 = load { ptr, i64, i64 }, ptr %t1201 - %t1207 = extractvalue { ptr, i64, i64 } %t1206, 1 - %t1208 = icmp uge i64 %t1205, %t1207 - br i1 %t1208, label %range3542, label %inrange3543 -range3542: - call void @finch_panic_index(ptr @.str.2248, i64 1426, i64 %t1205, i64 %t1207) + %t1194 = getelementptr inbounds %S.gen.FnSig, ptr %t1193, i64 %t1189 + %t1195 = getelementptr inbounds %S.gen.FnSig, ptr %t1194, i32 0, i32 1 + %t1196 = load { ptr, i64, i64 }, ptr %t1195 + store { ptr, i64, i64 } %t1196, ptr %a1197 + call void @finch_str_copy(ptr %a1198, ptr %a1197) + %t1199 = load { ptr, i64, i64 }, ptr %a1198 + %t1200 = load i64, ptr %t1185 + %t1201 = add i64 %t1200, 1 + call void @finch_arr_reserve(ptr %t1184, i64 %t1201, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t1202 = load ptr, ptr %t1184 + %t1203 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1202, i64 %t1200 + store { ptr, i64, i64 } %t1199, ptr %t1203 + store i64 %t1201, ptr %t1185 + store i1 true, ptr %a1082 + br label %endif3726 +endif3726: + call void @finch.drop.S_ast_Node(ptr %a1158) + br label %endif3707 +endif3707: + br label %for.step3691 +for.step3691: + %t1204 = load i64, ptr %a1089 + %t1205 = add i64 %t1204, 1 + store i64 %t1205, ptr %a1089 + br label %for.cond3689 +for.end3692: + %t1206 = load ptr, ptr %a1 + %t1207 = icmp eq ptr %t1206, null + br i1 %t1207, label %panic3737, label %ok3738 +panic3737: + call void @finch_panic(ptr @.str.2327, i64 1570, ptr @.str.2328) unreachable -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.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 %panic3547, label %ok3548 -panic3547: - call void @finch_panic(ptr @.str.2249, i64 1427, ptr @.str.2250) +ok3738: + %t1208 = getelementptr inbounds %S.gen.Gen, ptr %t1206, i32 0, i32 17 + %t1209 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1208, i32 0, i32 1 + %t1210 = load i64, ptr %t1209 + store i64 0, ptr %a1211 + br label %for.cond3739 +for.cond3739: + %t1212 = load i64, ptr %a1211 + %t1213 = icmp slt i64 %t1212, %t1210 + br i1 %t1213, label %for.body3740, label %for.end3742 +for.body3740: + %t1214 = load ptr, ptr %a1 + %t1215 = icmp eq ptr %t1214, null + br i1 %t1215, label %panic3743, label %ok3744 +panic3743: + call void @finch_panic(ptr @.str.2329, i64 1571, ptr @.str.2330) unreachable -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 %range3549, label %inrange3550 -range3549: - call void @finch_panic_index(ptr @.str.2251, i64 1427, i64 %t1216, i64 %t1218) +ok3744: + %t1216 = getelementptr inbounds %S.gen.Gen, ptr %t1214, i32 0, i32 17 + %t1217 = load i64, ptr %a1211 + %t1218 = load { ptr, i64, i64 }, ptr %t1216 + %t1219 = extractvalue { ptr, i64, i64 } %t1218, 1 + %t1220 = icmp uge i64 %t1217, %t1219 + br i1 %t1220, label %range3745, label %inrange3746 +range3745: + call void @finch_panic_index(ptr @.str.2331, i64 1571, i64 %t1217, i64 %t1219) unreachable -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 %panic3551, label %ok3552 -panic3551: - call void @finch_panic(ptr @.str.2252, i64 1428, ptr @.str.2253) +inrange3746: + %t1221 = extractvalue { ptr, i64, i64 } %t1218, 0 + %t1222 = getelementptr inbounds %S.gen.Template, ptr %t1221, i64 %t1217 + %t1223 = load %S.gen.Template, ptr %t1222 + store %S.gen.Template %t1223, ptr %a1224 + call void @finch.copy.S_gen_Template(ptr %a1225, ptr %a1224) + %t1226 = load %S.gen.Template, ptr %a1225 + store %S.gen.Template %t1226, ptr %a1227 + %t1228 = getelementptr inbounds %S.gen.Template, ptr %a1227, i32 0, i32 2 + %t1229 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1228, i32 0, i32 1 + %t1230 = load i64, ptr %t1229 + %t1231 = icmp sgt i64 %t1230, 0 + br label %logic.from3747 +logic.from3747: + br i1 %t1231, label %logic.rhs3748, label %logic.end3749 +logic.rhs3748: + %t1232 = getelementptr inbounds %S.gen.Template, ptr %a1227, i32 0, i32 7 + %t1233 = load i1, ptr %t1232 + %t1234 = xor i1 %t1233, true + br label %logic.rend3750 +logic.rend3750: + br label %logic.end3749 +logic.end3749: + %t1235 = phi i1 [ false, %logic.from3747 ], [ %t1234, %logic.rend3750 ] + br i1 %t1235, label %then3751, label %endif3753 +then3751: + %t1236 = load ptr, ptr %a1 + %t1237 = icmp eq ptr %t1236, null + br i1 %t1237, label %panic3754, label %ok3755 +panic3754: + call void @finch_panic(ptr @.str.2332, i64 1573, ptr @.str.2333) unreachable -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 - %t1228 = load { ptr, i64, i64 }, ptr %t1227 - store { ptr, i64, i64 } %t1228, ptr %a1229 - call void @finch_str_copy(ptr %a1230, ptr %a1229) - %t1231 = load { ptr, i64, i64 }, ptr %a1230 - %t1232 = load i64, ptr %t1226 - %t1233 = add i64 %t1232, 1 - call void @finch_arr_reserve(ptr %t1225, i64 %t1233, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t1234 = load ptr, ptr %t1225 - %t1235 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1234, i64 %t1232 - store { ptr, i64, i64 } %t1231, ptr %t1235 - store i64 %t1233, ptr %t1226 - store i1 true, ptr %a1023 - 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.cond3521 -for.end3524: - br label %while.cond3466 -while.end3468: - %t1238 = load ptr, ptr %a1 - %t1239 = icmp eq ptr %t1238, null - br i1 %t1239, label %panic3553, label %ok3554 -panic3553: - call void @finch_panic(ptr @.str.2254, i64 1435, ptr @.str.2255) +ok3755: + %t1238 = getelementptr inbounds %S.gen.Gen, ptr %t1236, i32 0, i32 0 + %t1239 = getelementptr inbounds %S.gen.Template, ptr %a1227, i32 0, i32 4 + %t1240 = load i64, ptr %t1239 + %t1241 = load { ptr, i64, i64 }, ptr %t1238 + %t1242 = extractvalue { ptr, i64, i64 } %t1241, 1 + %t1243 = icmp uge i64 %t1240, %t1242 + br i1 %t1243, label %range3756, label %inrange3757 +range3756: + call void @finch_panic_index(ptr @.str.2334, i64 1573, i64 %t1240, i64 %t1242) unreachable -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.cond3555 -for.cond3555: - %t1244 = load i64, ptr %a1243 - %t1245 = icmp slt i64 %t1244, %t1242 - 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 %panic3559, label %ok3560 -panic3559: - call void @finch_panic(ptr @.str.2256, i64 1436, ptr @.str.2257) +inrange3757: + %t1244 = extractvalue { ptr, i64, i64 } %t1241, 0 + %t1245 = getelementptr inbounds %S.ast.Program, ptr %t1244, i64 %t1240 + %t1246 = getelementptr inbounds %S.ast.Program, ptr %t1245, i32 0, i32 8 + %t1247 = getelementptr inbounds %S.gen.Template, ptr %a1227, i32 0, i32 5 + %t1248 = load i64, ptr %t1247 + %t1249 = load { ptr, i64, i64 }, ptr %t1246 + %t1250 = extractvalue { ptr, i64, i64 } %t1249, 1 + %t1251 = icmp uge i64 %t1248, %t1250 + br i1 %t1251, label %range3758, label %inrange3759 +range3758: + call void @finch_panic_index(ptr @.str.2335, i64 1573, i64 %t1248, i64 %t1250) unreachable -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 %panic3561, label %ok3562 -panic3561: - call void @finch_panic(ptr @.str.2258, i64 1436, ptr @.str.2259) +inrange3759: + %t1252 = extractvalue { ptr, i64, i64 } %t1249, 0 + %t1253 = getelementptr inbounds %S.ast.Node, ptr %t1252, i64 %t1248 + %t1254 = load %S.ast.Node, ptr %t1253 + store %S.ast.Node %t1254, ptr %a1255 + call void @finch.copy.S_ast_Node(ptr %a1256, ptr %a1255) + %t1257 = load %S.ast.Node, ptr %a1256 + store %S.ast.Node %t1257, ptr %a1258 + %t1259 = load ptr, ptr %a1 + %t1260 = getelementptr inbounds %S.ast.Node, ptr %a1258, i32 0, i32 9 + %t1261 = getelementptr inbounds %S.ast.Node, ptr %a1258, i32 0, i32 9 + %t1262 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1261, i32 0, i32 1 + %t1263 = load i64, ptr %t1262 + %t1264 = sub i64 %t1263, 1 + %t1265 = load { ptr, i64, i64 }, ptr %t1260 + %t1266 = extractvalue { ptr, i64, i64 } %t1265, 1 + %t1267 = icmp uge i64 %t1264, %t1266 + br i1 %t1267, label %range3760, label %inrange3761 +range3760: + call void @finch_panic_index(ptr @.str.2337, i64 1574, i64 %t1264, i64 %t1266) unreachable -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 %range3563, label %inrange3564 -range3563: - call void @finch_panic_index(ptr @.str.2260, i64 1436, i64 %t1252, i64 %t1254) +inrange3761: + %t1268 = extractvalue { ptr, i64, i64 } %t1265, 0 + %t1269 = getelementptr inbounds %S.ast.Node, ptr %t1268, i64 %t1264 + %t1270 = load %S.ast.Node, ptr %t1269 + %t1271 = call i1 @finch.gen.mutates(ptr %t1259, { ptr, i64, i64 } { ptr @.str.2336, i64 4, i64 0 }, %S.ast.Node %t1270) + br i1 %t1271, label %then3762, label %endif3764 +then3762: + %t1272 = load ptr, ptr %a1 + %t1273 = icmp eq ptr %t1272, null + br i1 %t1273, label %panic3765, label %ok3766 +panic3765: + call void @finch_panic(ptr @.str.2338, i64 1575, ptr @.str.2339) unreachable -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 - %t1259 = load i64, ptr %t1258 - %t1260 = load { ptr, i64, i64 }, ptr %t1248 - %t1261 = extractvalue { ptr, i64, i64 } %t1260, 1 - %t1262 = icmp uge i64 %t1259, %t1261 - br i1 %t1262, label %range3565, label %inrange3566 -range3565: - call void @finch_panic_index(ptr @.str.2261, i64 1436, i64 %t1259, i64 %t1261) +ok3766: + %t1274 = getelementptr inbounds %S.gen.Gen, ptr %t1272, i32 0, i32 17 + %t1275 = load i64, ptr %a1211 + %t1276 = load { ptr, i64, i64 }, ptr %t1274 + %t1277 = extractvalue { ptr, i64, i64 } %t1276, 1 + %t1278 = icmp uge i64 %t1275, %t1277 + br i1 %t1278, label %range3767, label %inrange3768 +range3767: + call void @finch_panic_index(ptr @.str.2340, i64 1575, i64 %t1275, i64 %t1277) unreachable -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 %panic3567, label %ok3568 -panic3567: - call void @finch_panic(ptr @.str.2262, i64 1436, ptr @.str.2263) +inrange3768: + %t1279 = extractvalue { ptr, i64, i64 } %t1276, 0 + %t1280 = getelementptr inbounds %S.gen.Template, ptr %t1279, i64 %t1275 + %t1281 = getelementptr inbounds %S.gen.Template, ptr %t1280, i32 0, i32 7 + store i1 true, ptr %t1281 + %t1282 = load ptr, ptr %a1 + %t1283 = icmp eq ptr %t1282, null + br i1 %t1283, label %panic3769, label %ok3770 +panic3769: + call void @finch_panic(ptr @.str.2341, i64 1576, ptr @.str.2342) unreachable -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 %range3569, label %inrange3570 -range3569: - call void @finch_panic_index(ptr @.str.2264, i64 1436, i64 %t1269, i64 %t1271) +ok3770: + %t1284 = getelementptr inbounds %S.gen.Gen, ptr %t1282, i32 0, i32 23 + %t1285 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1284, i32 0, i32 1 + %t1286 = getelementptr inbounds %S.gen.Template, ptr %a1227, i32 0, i32 1 + %t1287 = load { ptr, i64, i64 }, ptr %t1286 + store { ptr, i64, i64 } %t1287, ptr %a1288 + call void @finch_str_copy(ptr %a1289, ptr %a1288) + %t1290 = load { ptr, i64, i64 }, ptr %a1289 + %t1291 = load i64, ptr %t1285 + %t1292 = add i64 %t1291, 1 + call void @finch_arr_reserve(ptr %t1284, i64 %t1292, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t1293 = load ptr, ptr %t1284 + %t1294 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1293, i64 %t1291 + store { ptr, i64, i64 } %t1290, ptr %t1294 + store i64 %t1292, ptr %t1285 + store i1 true, ptr %a1082 + br label %endif3764 +endif3764: + call void @finch.drop.S_ast_Node(ptr %a1258) + br label %endif3753 +endif3753: + call void @finch.drop.S_gen_Template(ptr %a1227) + br label %for.step3741 +for.step3741: + %t1295 = load i64, ptr %a1211 + %t1296 = add i64 %t1295, 1 + store i64 %t1296, ptr %a1211 + br label %for.cond3739 +for.end3742: + br label %while.cond3684 +while.end3686: + %t1297 = load ptr, ptr %a1 + %t1298 = icmp eq ptr %t1297, null + br i1 %t1298, label %panic3771, label %ok3772 +panic3771: + call void @finch_panic(ptr @.str.2343, i64 1583, ptr @.str.2344) unreachable -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 - %t1276 = load i64, ptr %t1275 - %t1277 = load { ptr, i64, i64 }, ptr %t1265 - %t1278 = extractvalue { ptr, i64, i64 } %t1277, 1 - %t1279 = icmp uge i64 %t1276, %t1278 - br i1 %t1279, label %range3571, label %inrange3572 -range3571: - call void @finch_panic_index(ptr @.str.2265, i64 1436, i64 %t1276, i64 %t1278) +ok3772: + %t1299 = getelementptr inbounds %S.gen.Gen, ptr %t1297, i32 0, i32 15 + %t1300 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1299, i32 0, i32 1 + %t1301 = load i64, ptr %t1300 + store i64 0, ptr %a1302 + br label %for.cond3773 +for.cond3773: + %t1303 = load i64, ptr %a1302 + %t1304 = icmp slt i64 %t1303, %t1301 + br i1 %t1304, label %for.body3774, label %for.end3776 +for.body3774: + %t1305 = load ptr, ptr %a1 + %t1306 = icmp eq ptr %t1305, null + br i1 %t1306, label %panic3777, label %ok3778 +panic3777: + call void @finch_panic(ptr @.str.2345, i64 1584, ptr @.str.2346) unreachable -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 - store %S.ast.Node %t1282, ptr %a1283 - call void @finch.copy.S_ast_Node(ptr %a1284, ptr %a1283) - %t1285 = load %S.ast.Node, ptr %a1284 - store %S.ast.Node %t1285, ptr %a1286 - %t1287 = getelementptr inbounds %S.ast.Node, ptr %a1286, i32 0, i32 9 - %t1288 = getelementptr inbounds %S.ast.Node, ptr %a1286, i32 0, i32 9 - %t1289 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1288, i32 0, i32 1 - %t1290 = load i64, ptr %t1289 - %t1291 = sub i64 %t1290, 1 - %t1292 = load { ptr, i64, i64 }, ptr %t1287 - %t1293 = extractvalue { ptr, i64, i64 } %t1292, 1 - %t1294 = icmp uge i64 %t1291, %t1293 - br i1 %t1294, label %range3573, label %inrange3574 -range3573: - call void @finch_panic_index(ptr @.str.2266, i64 1437, i64 %t1291, i64 %t1293) +ok3778: + %t1307 = getelementptr inbounds %S.gen.Gen, ptr %t1305, i32 0, i32 0 + %t1308 = load ptr, ptr %a1 + %t1309 = icmp eq ptr %t1308, null + br i1 %t1309, label %panic3779, label %ok3780 +panic3779: + call void @finch_panic(ptr @.str.2347, i64 1584, ptr @.str.2348) unreachable -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 - store %S.ast.Node %t1297, ptr %a1298 - call void @finch.copy.S_ast_Node(ptr %a1299, ptr %a1298) - %t1300 = load %S.ast.Node, ptr %a1299 - store %S.ast.Node %t1300, ptr %a1301 - %t1302 = load ptr, ptr %a1 - %t1303 = icmp eq ptr %t1302, null - br i1 %t1303, label %panic3575, label %ok3576 -panic3575: - call void @finch_panic(ptr @.str.2267, i64 1438, ptr @.str.2268) +ok3780: + %t1310 = getelementptr inbounds %S.gen.Gen, ptr %t1308, i32 0, i32 15 + %t1311 = load i64, ptr %a1302 + %t1312 = load { ptr, i64, i64 }, ptr %t1310 + %t1313 = extractvalue { ptr, i64, i64 } %t1312, 1 + %t1314 = icmp uge i64 %t1311, %t1313 + br i1 %t1314, label %range3781, label %inrange3782 +range3781: + call void @finch_panic_index(ptr @.str.2349, i64 1584, i64 %t1311, i64 %t1313) unreachable -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 %range3577, label %inrange3578 -range3577: - call void @finch_panic_index(ptr @.str.2269, i64 1438, i64 %t1305, i64 %t1307) +inrange3782: + %t1315 = extractvalue { ptr, i64, i64 } %t1312, 0 + %t1316 = getelementptr inbounds %S.gen.FnSig, ptr %t1315, i64 %t1311 + %t1317 = getelementptr inbounds %S.gen.FnSig, ptr %t1316, i32 0, i32 16 + %t1318 = load i64, ptr %t1317 + %t1319 = load { ptr, i64, i64 }, ptr %t1307 + %t1320 = extractvalue { ptr, i64, i64 } %t1319, 1 + %t1321 = icmp uge i64 %t1318, %t1320 + br i1 %t1321, label %range3783, label %inrange3784 +range3783: + call void @finch_panic_index(ptr @.str.2350, i64 1584, i64 %t1318, i64 %t1320) unreachable -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.cond3579 -for.cond3579: - %t1315 = load i64, ptr %a1314 - %t1316 = icmp slt i64 %t1315, %t1313 - 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 %panic3583, label %ok3584 -panic3583: - call void @finch_panic(ptr @.str.2270, i64 1439, ptr @.str.2271) +inrange3784: + %t1322 = extractvalue { ptr, i64, i64 } %t1319, 0 + %t1323 = getelementptr inbounds %S.ast.Program, ptr %t1322, i64 %t1318 + %t1324 = getelementptr inbounds %S.ast.Program, ptr %t1323, i32 0, i32 8 + %t1325 = load ptr, ptr %a1 + %t1326 = icmp eq ptr %t1325, null + br i1 %t1326, label %panic3785, label %ok3786 +panic3785: + call void @finch_panic(ptr @.str.2351, i64 1584, ptr @.str.2352) unreachable -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 %range3585, label %inrange3586 -range3585: - call void @finch_panic_index(ptr @.str.2272, i64 1439, i64 %t1320, i64 %t1322) +ok3786: + %t1327 = getelementptr inbounds %S.gen.Gen, ptr %t1325, i32 0, i32 15 + %t1328 = load i64, ptr %a1302 + %t1329 = load { ptr, i64, i64 }, ptr %t1327 + %t1330 = extractvalue { ptr, i64, i64 } %t1329, 1 + %t1331 = icmp uge i64 %t1328, %t1330 + br i1 %t1331, label %range3787, label %inrange3788 +range3787: + call void @finch_panic_index(ptr @.str.2353, i64 1584, i64 %t1328, i64 %t1330) unreachable -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 - %t1327 = load i64, ptr %a1314 - %t1328 = load { ptr, i64, i64 }, ptr %t1326 - %t1329 = extractvalue { ptr, i64, i64 } %t1328, 1 - %t1330 = icmp uge i64 %t1327, %t1329 - br i1 %t1330, label %range3587, label %inrange3588 -range3587: - call void @finch_panic_index(ptr @.str.2273, i64 1439, i64 %t1327, i64 %t1329) +inrange3788: + %t1332 = extractvalue { ptr, i64, i64 } %t1329, 0 + %t1333 = getelementptr inbounds %S.gen.FnSig, ptr %t1332, i64 %t1328 + %t1334 = getelementptr inbounds %S.gen.FnSig, ptr %t1333, i32 0, i32 17 + %t1335 = load i64, ptr %t1334 + %t1336 = load { ptr, i64, i64 }, ptr %t1324 + %t1337 = extractvalue { ptr, i64, i64 } %t1336, 1 + %t1338 = icmp uge i64 %t1335, %t1337 + br i1 %t1338, label %range3789, label %inrange3790 +range3789: + call void @finch_panic_index(ptr @.str.2354, i64 1584, i64 %t1335, i64 %t1337) unreachable -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 - store %S.ast.Type %t1333, ptr %a1334 - call void @finch.copy.S_ast_Type(ptr %a1335, ptr %a1334) - %t1336 = load %S.ast.Type, ptr %a1335 - store %S.ast.Type %t1336, ptr %a1337 - %t1338 = load ptr, ptr %a1 - %t1339 = icmp eq ptr %t1338, null - br i1 %t1339, label %panic3589, label %ok3590 -panic3589: - call void @finch_panic(ptr @.str.2274, i64 1440, ptr @.str.2275) - unreachable -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 %range3591, label %inrange3592 -range3591: - call void @finch_panic_index(ptr @.str.2276, i64 1440, i64 %t1341, i64 %t1343) - unreachable -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 +inrange3790: + %t1339 = extractvalue { ptr, i64, i64 } %t1336, 0 + %t1340 = getelementptr inbounds %S.ast.Node, ptr %t1339, i64 %t1335 + %t1341 = load %S.ast.Node, ptr %t1340 + store %S.ast.Node %t1341, ptr %a1342 + call void @finch.copy.S_ast_Node(ptr %a1343, ptr %a1342) + %t1344 = load %S.ast.Node, ptr %a1343 + store %S.ast.Node %t1344, ptr %a1345 + %t1346 = getelementptr inbounds %S.ast.Node, ptr %a1345, i32 0, i32 9 + %t1347 = getelementptr inbounds %S.ast.Node, ptr %a1345, i32 0, i32 9 %t1348 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1347, i32 0, i32 1 - %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.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 %panic3596, label %ok3597 -panic3596: - call void @finch_panic(ptr @.str.2277, i64 1440, ptr @.str.2278) + %t1349 = load i64, ptr %t1348 + %t1350 = sub i64 %t1349, 1 + %t1351 = load { ptr, i64, i64 }, ptr %t1346 + %t1352 = extractvalue { ptr, i64, i64 } %t1351, 1 + %t1353 = icmp uge i64 %t1350, %t1352 + br i1 %t1353, label %range3791, label %inrange3792 +range3791: + call void @finch_panic_index(ptr @.str.2355, i64 1585, i64 %t1350, i64 %t1352) unreachable -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 %range3598, label %inrange3599 -range3598: - call void @finch_panic_index(ptr @.str.2279, i64 1440, i64 %t1356, i64 %t1358) +inrange3792: + %t1354 = extractvalue { ptr, i64, i64 } %t1351, 0 + %t1355 = getelementptr inbounds %S.ast.Node, ptr %t1354, i64 %t1350 + %t1356 = load %S.ast.Node, ptr %t1355 + store %S.ast.Node %t1356, ptr %a1357 + call void @finch.copy.S_ast_Node(ptr %a1358, ptr %a1357) + %t1359 = load %S.ast.Node, ptr %a1358 + store %S.ast.Node %t1359, ptr %a1360 + %t1361 = load ptr, ptr %a1 + %t1362 = icmp eq ptr %t1361, null + br i1 %t1362, label %panic3793, label %ok3794 +panic3793: + call void @finch_panic(ptr @.str.2356, i64 1586, ptr @.str.2357) unreachable -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 - %t1363 = load i64, ptr %a1314 - %t1364 = load { ptr, i64, i64 }, ptr %t1362 - %t1365 = extractvalue { ptr, i64, i64 } %t1364, 1 - %t1366 = icmp uge i64 %t1363, %t1365 - br i1 %t1366, label %range3600, label %inrange3601 -range3600: - call void @finch_panic_index(ptr @.str.2280, i64 1440, i64 %t1363, i64 %t1365) +ok3794: + %t1363 = getelementptr inbounds %S.gen.Gen, ptr %t1361, i32 0, i32 15 + %t1364 = load i64, ptr %a1302 + %t1365 = load { ptr, i64, i64 }, ptr %t1363 + %t1366 = extractvalue { ptr, i64, i64 } %t1365, 1 + %t1367 = icmp uge i64 %t1364, %t1366 + br i1 %t1367, label %range3795, label %inrange3796 +range3795: + call void @finch_panic_index(ptr @.str.2358, i64 1586, i64 %t1364, i64 %t1366) unreachable -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.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)) - %t1376 = load ptr, ptr %t1347 - %t1377 = getelementptr inbounds i1, ptr %t1376, i64 %t1374 - store i1 %t1373, ptr %t1377 - store i64 %t1375, ptr %t1348 - br label %for.step3581 -for.step3581: - %t1378 = load i64, ptr %a1314 - %t1379 = add i64 %t1378, 1 - store i64 %t1379, ptr %a1314 - 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.cond3555 -for.end3558: +inrange3796: + %t1368 = extractvalue { ptr, i64, i64 } %t1365, 0 + %t1369 = getelementptr inbounds %S.gen.FnSig, ptr %t1368, i64 %t1364 + %t1370 = getelementptr inbounds %S.gen.FnSig, ptr %t1369, i32 0, i32 13 + %t1371 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1370, i32 0, i32 1 + %t1372 = load i64, ptr %t1371 + store i64 0, ptr %a1373 + br label %for.cond3797 +for.cond3797: + %t1374 = load i64, ptr %a1373 + %t1375 = icmp slt i64 %t1374, %t1372 + br i1 %t1375, label %for.body3798, label %for.end3800 +for.body3798: + %t1376 = load ptr, ptr %a1 + %t1377 = icmp eq ptr %t1376, null + br i1 %t1377, label %panic3801, label %ok3802 +panic3801: + call void @finch_panic(ptr @.str.2359, i64 1587, ptr @.str.2360) + unreachable +ok3802: + %t1378 = getelementptr inbounds %S.gen.Gen, ptr %t1376, i32 0, i32 15 + %t1379 = load i64, ptr %a1302 + %t1380 = load { ptr, i64, i64 }, ptr %t1378 + %t1381 = extractvalue { ptr, i64, i64 } %t1380, 1 + %t1382 = icmp uge i64 %t1379, %t1381 + br i1 %t1382, label %range3803, label %inrange3804 +range3803: + call void @finch_panic_index(ptr @.str.2361, i64 1587, i64 %t1379, i64 %t1381) + unreachable +inrange3804: + %t1383 = extractvalue { ptr, i64, i64 } %t1380, 0 + %t1384 = getelementptr inbounds %S.gen.FnSig, ptr %t1383, i64 %t1379 + %t1385 = getelementptr inbounds %S.gen.FnSig, ptr %t1384, i32 0, i32 13 + %t1386 = load i64, ptr %a1373 + %t1387 = load { ptr, i64, i64 }, ptr %t1385 + %t1388 = extractvalue { ptr, i64, i64 } %t1387, 1 + %t1389 = icmp uge i64 %t1386, %t1388 + br i1 %t1389, label %range3805, label %inrange3806 +range3805: + call void @finch_panic_index(ptr @.str.2362, i64 1587, i64 %t1386, i64 %t1388) + unreachable +inrange3806: + %t1390 = extractvalue { ptr, i64, i64 } %t1387, 0 + %t1391 = getelementptr inbounds %S.ast.Type, ptr %t1390, i64 %t1386 + %t1392 = load %S.ast.Type, ptr %t1391 + store %S.ast.Type %t1392, ptr %a1393 + call void @finch.copy.S_ast_Type(ptr %a1394, ptr %a1393) + %t1395 = load %S.ast.Type, ptr %a1394 + store %S.ast.Type %t1395, ptr %a1396 + %t1397 = load ptr, ptr %a1 + %t1398 = icmp eq ptr %t1397, null + br i1 %t1398, label %panic3807, label %ok3808 +panic3807: + call void @finch_panic(ptr @.str.2363, i64 1588, ptr @.str.2364) + unreachable +ok3808: + %t1399 = getelementptr inbounds %S.gen.Gen, ptr %t1397, i32 0, i32 15 + %t1400 = load i64, ptr %a1302 + %t1401 = load { ptr, i64, i64 }, ptr %t1399 + %t1402 = extractvalue { ptr, i64, i64 } %t1401, 1 + %t1403 = icmp uge i64 %t1400, %t1402 + br i1 %t1403, label %range3809, label %inrange3810 +range3809: + call void @finch_panic_index(ptr @.str.2365, i64 1588, i64 %t1400, i64 %t1402) + unreachable +inrange3810: + %t1404 = extractvalue { ptr, i64, i64 } %t1401, 0 + %t1405 = getelementptr inbounds %S.gen.FnSig, ptr %t1404, i64 %t1400 + %t1406 = getelementptr inbounds %S.gen.FnSig, ptr %t1405, i32 0, i32 15 + %t1407 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1406, i32 0, i32 1 + %t1408 = load ptr, ptr %a1 + %t1409 = load %S.ast.Type, ptr %a1396 + %t1410 = call i1 @finch.gen.owning(ptr %t1408, %S.ast.Type %t1409) + br label %logic.from3811 +logic.from3811: + br i1 %t1410, label %logic.rhs3812, label %logic.end3813 +logic.rhs3812: + %t1411 = load ptr, ptr %a1 + %t1412 = load ptr, ptr %a1 + %t1413 = icmp eq ptr %t1412, null + br i1 %t1413, label %panic3814, label %ok3815 +panic3814: + call void @finch_panic(ptr @.str.2366, i64 1588, ptr @.str.2367) + unreachable +ok3815: + %t1414 = getelementptr inbounds %S.gen.Gen, ptr %t1412, i32 0, i32 15 + %t1415 = load i64, ptr %a1302 + %t1416 = load { ptr, i64, i64 }, ptr %t1414 + %t1417 = extractvalue { ptr, i64, i64 } %t1416, 1 + %t1418 = icmp uge i64 %t1415, %t1417 + br i1 %t1418, label %range3816, label %inrange3817 +range3816: + call void @finch_panic_index(ptr @.str.2368, i64 1588, i64 %t1415, i64 %t1417) + unreachable +inrange3817: + %t1419 = extractvalue { ptr, i64, i64 } %t1416, 0 + %t1420 = getelementptr inbounds %S.gen.FnSig, ptr %t1419, i64 %t1415 + %t1421 = getelementptr inbounds %S.gen.FnSig, ptr %t1420, i32 0, i32 14 + %t1422 = load i64, ptr %a1373 + %t1423 = load { ptr, i64, i64 }, ptr %t1421 + %t1424 = extractvalue { ptr, i64, i64 } %t1423, 1 + %t1425 = icmp uge i64 %t1422, %t1424 + br i1 %t1425, label %range3818, label %inrange3819 +range3818: + call void @finch_panic_index(ptr @.str.2369, i64 1588, i64 %t1422, i64 %t1424) + unreachable +inrange3819: + %t1426 = extractvalue { ptr, i64, i64 } %t1423, 0 + %t1427 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1426, i64 %t1422 + %t1428 = load { ptr, i64, i64 }, ptr %t1427 + %t1429 = load %S.ast.Node, ptr %a1360 + %t1430 = call i1 @finch.gen.mutates(ptr %t1411, { ptr, i64, i64 } %t1428, %S.ast.Node %t1429) + %t1431 = xor i1 %t1430, true + br label %logic.rend3820 +logic.rend3820: + br label %logic.end3813 +logic.end3813: + %t1432 = phi i1 [ false, %logic.from3811 ], [ %t1431, %logic.rend3820 ] + %t1433 = load i64, ptr %t1407 + %t1434 = add i64 %t1433, 1 + call void @finch_arr_reserve(ptr %t1406, i64 %t1434, i64 ptrtoint (ptr getelementptr (i1, ptr null, i32 1) to i64)) + %t1435 = load ptr, ptr %t1406 + %t1436 = getelementptr inbounds i1, ptr %t1435, i64 %t1433 + store i1 %t1432, ptr %t1436 + store i64 %t1434, ptr %t1407 + call void @finch.drop.S_ast_Type(ptr %a1396) + br label %for.step3799 +for.step3799: + %t1437 = load i64, ptr %a1373 + %t1438 = add i64 %t1437, 1 + store i64 %t1438, ptr %a1373 + br label %for.cond3797 +for.end3800: + call void @finch.drop.S_ast_Node(ptr %a1360) + call void @finch.drop.S_ast_Node(ptr %a1345) + br label %for.step3775 +for.step3775: + %t1439 = load i64, ptr %a1302 + %t1440 = add i64 %t1439, 1 + store i64 %t1440, ptr %a1302 + br label %for.cond3773 +for.end3776: ret void } @@ -34149,38 +39879,38 @@ entry: store i1 %p4, ptr %a5 %t6 = load ptr, ptr %a1 %t7 = icmp eq ptr %t6, null - br i1 %t7, label %panic3603, label %ok3604 -panic3603: - call void @finch_panic(ptr @.str.2281, i64 1446, ptr @.str.2282) + br i1 %t7, label %panic3821, label %ok3822 +panic3821: + call void @finch_panic(ptr @.str.2370, i64 1594, ptr @.str.2371) unreachable -ok3604: - %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 16 +ok3822: + %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 17 %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.cond3605 -for.cond3605: + br label %for.cond3823 +for.cond3823: %t12 = load i64, ptr %a11 %t13 = icmp slt i64 %t12, %t10 - br i1 %t13, label %for.body3606, label %for.end3608 -for.body3606: + br i1 %t13, label %for.body3824, label %for.end3826 +for.body3824: %t14 = load ptr, ptr %a1 %t15 = icmp eq ptr %t14, null - br i1 %t15, label %panic3609, label %ok3610 -panic3609: - call void @finch_panic(ptr @.str.2283, i64 1447, ptr @.str.2284) + br i1 %t15, label %panic3827, label %ok3828 +panic3827: + call void @finch_panic(ptr @.str.2372, i64 1595, ptr @.str.2373) unreachable -ok3610: - %t16 = getelementptr inbounds %S.gen.Gen, ptr %t14, i32 0, i32 16 +ok3828: + %t16 = getelementptr inbounds %S.gen.Gen, ptr %t14, i32 0, i32 17 %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 %range3611, label %inrange3612 -range3611: - call void @finch_panic_index(ptr @.str.2285, i64 1447, i64 %t17, i64 %t19) + br i1 %t20, label %range3829, label %inrange3830 +range3829: + call void @finch_panic_index(ptr @.str.2374, i64 1595, i64 %t17, i64 %t19) unreachable -inrange3612: +inrange3830: %t21 = extractvalue { ptr, i64, i64 } %t18, 0 %t22 = getelementptr inbounds %S.gen.Template, ptr %t21, i64 %t17 %t23 = load %S.gen.Template, ptr %t22 @@ -34195,10 +39925,10 @@ inrange3612: 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.from3613 -logic.from3613: - br i1 %t34, label %logic.rhs3614, label %logic.end3615 -logic.rhs3614: + br label %logic.from3831 +logic.from3831: + br i1 %t34, label %logic.rhs3832, label %logic.end3833 +logic.rhs3832: %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 @@ -34206,15 +39936,15 @@ logic.rhs3614: 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.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: + br label %logic.rend3834 +logic.rend3834: + br label %logic.end3833 +logic.end3833: + %t42 = phi i1 [ false, %logic.from3831 ], [ %t41, %logic.rend3834 ] + br label %logic.from3835 +logic.from3835: + br i1 %t42, label %logic.rhs3836, label %logic.end3837 +logic.rhs3836: %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 @@ -34222,36 +39952,38 @@ logic.rhs3618: 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.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: + br label %logic.rend3838 +logic.rend3838: + br label %logic.end3837 +logic.end3837: + %t50 = phi i1 [ false, %logic.from3835 ], [ %t49, %logic.rend3838 ] + br label %logic.from3839 +logic.from3839: + br i1 %t50, label %logic.rhs3840, label %logic.end3841 +logic.rhs3840: %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.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: + br label %logic.rend3842 +logic.rend3842: + br label %logic.end3841 +logic.end3841: + %t55 = phi i1 [ false, %logic.from3839 ], [ %t54, %logic.rend3842 ] + br i1 %t55, label %then3843, label %endif3845 +then3843: %t56 = load i64, ptr %a11 + call void @finch.drop.S_gen_Template(ptr %a27) ret i64 %t56 -endif3627: - br label %for.step3607 -for.step3607: +endif3845: + call void @finch.drop.S_gen_Template(ptr %a27) + br label %for.step3825 +for.step3825: %t57 = load i64, ptr %a11 %t58 = add i64 %t57, 1 store i64 %t58, ptr %a11 - br label %for.cond3605 -for.end3608: + br label %for.cond3823 +for.end3826: ret i64 -1 } @@ -34266,14 +39998,14 @@ entry: store { ptr, i64, i64 } %p0, ptr %a1 store { ptr, i64, i64 } zeroinitializer, ptr %a2 store i64 0, ptr %a3 - br label %each.cond3628 -each.cond3628: + br label %each.cond3846 +each.cond3846: %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.body3629, label %each.end3631 -each.body3629: + br i1 %t7, label %each.body3847, label %each.end3849 +each.body3847: %t8 = load ptr, ptr %a1 %t9 = getelementptr inbounds %S.ast.Type, ptr %t8, i64 %t6 %t10 = load %S.ast.Type, ptr %t9 @@ -34288,17 +40020,18 @@ each.body3629: %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.step3630 -each.step3630: + br label %each.step3848 +each.step3848: %t19 = load i64, ptr %a3 %t20 = add i64 %t19, 1 store i64 %t20, ptr %a3 - br label %each.cond3628 -each.end3631: + br label %each.cond3846 +each.end3849: %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2286, i64 2, i64 0 }, ptr %a22 + store { ptr, i64, i64 } { ptr @.str.2375, i64 2, i64 0 }, ptr %a22 call void @finch_str_join(ptr %a23, ptr %a2, ptr %a22) %t24 = load { ptr, i64, i64 }, ptr %a23 + call void @finch.drop.arr_str(ptr %a2) ret { ptr, i64, i64 } %t24 } @@ -34316,67 +40049,85 @@ entry: %a20 = alloca { ptr, i64, i64 }, align 16 %a21 = alloca { ptr, i64, i64 }, align 16 %a22 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 + %a23 = 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 - %a30 = alloca { ptr, i64, i64 }, align 16 %a31 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca %S.gen.Template, align 16 - %a44 = alloca %S.gen.Template, align 16 - %a46 = alloca %S.gen.Template, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 + %a32 = alloca { ptr, i64, i64 }, align 16 + %a33 = alloca { ptr, i64, i64 }, align 16 + %a34 = alloca { ptr, i64, i64 }, align 16 + %a36 = alloca { ptr, i64, i64 }, align 16 + %a47 = alloca %S.gen.Template, align 16 + %a48 = alloca %S.gen.Template, align 16 + %a50 = alloca %S.gen.Template, align 16 + %a60 = alloca { ptr, i64, i64 }, align 16 + %a61 = alloca { ptr, i64, i64 }, align 16 + %a62 = 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 + %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 %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 - %a85 = alloca { ptr, i64, i64 }, align 16 + %a86 = 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 - %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 + %a96 = alloca { ptr, i64, i64 }, align 16 %a97 = 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 - %a101 = 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 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a110 = 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 %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 + %a117 = alloca { ptr, i64, i64 }, align 16 + %a119 = alloca { ptr, i64, i64 }, align 16 + %a120 = alloca { ptr, i64, i64 }, align 16 + %a121 = alloca { ptr, i64, i64 }, align 16 + %a125 = 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 + %a132 = alloca { ptr, i64, i64 }, align 16 + %a133 = alloca { ptr, i64, i64 }, align 16 %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 + %a136 = alloca { ptr, i64, i64 }, align 16 + %a147 = alloca { ptr, i64, i64 }, align 16 + %a148 = 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 + %a163 = alloca { ptr, i64, i64 }, align 16 + %a164 = alloca { ptr, i64, i64 }, align 16 + %a168 = alloca { ptr, i64, i64 }, align 16 + %a169 = alloca { ptr, i64, i64 }, align 16 + %a191 = alloca { ptr, i64, i64 }, align 16 + %a192 = alloca { ptr, i64, i64 }, align 16 + %a196 = alloca { ptr, i64, i64 }, align 16 + %a197 = 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 @@ -34385,218 +40136,256 @@ 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.2287, 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.2376, 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 %then3632, label %endif3634 -then3632: + br i1 %t12, label %then3850, label %endif3852 +then3850: %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.2288, i64 34, i64 0 }, ptr %a17 + store { ptr, i64, i64 } { ptr @.str.2377, 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.2289, i64 28, i64 0 }, ptr %a22 + store { ptr, i64, i64 } { ptr @.str.2378, 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 - store { ptr, i64, i64 } %t23, ptr %a26 + store { ptr, i64, i64 } %t19, ptr %a23 + call void @finch_str_drop(ptr %a23) + %t24 = load { ptr, i64, i64 }, ptr %a20 + %t25 = load { ptr, i64, i64 }, ptr %a3 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.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 %endif3634 -endif3634: - %t33 = load ptr, ptr %a1 - %t34 = icmp eq ptr %t33, null - br i1 %t34, label %panic3635, label %ok3636 -panic3635: - call void @finch_panic(ptr @.str.2291, i64 1469, ptr @.str.2292) + store { ptr, i64, i64 } %t25, ptr %a28 + call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28) + store { ptr, i64, i64 } %t24, ptr %a29 + call void @finch_str_drop(ptr %a29) + %t30 = load { ptr, i64, i64 }, ptr %a26 + store { ptr, i64, i64 } %t30, ptr %a32 + store { ptr, i64, i64 } { ptr @.str.2379, i64 34, i64 0 }, ptr %a33 + call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) + store { ptr, i64, i64 } %t30, ptr %a34 + call void @finch_str_drop(ptr %a34) + %t35 = load { ptr, i64, i64 }, ptr %a31 + call void @finch.gen.fail(ptr %t13, %S.ast.Node %t14, { ptr, i64, i64 } %t35) + store { ptr, i64, i64 } %t35, ptr %a36 + call void @finch_str_drop(ptr %a36) + br label %endif3852 +endif3852: + %t37 = load ptr, ptr %a1 + %t38 = icmp eq ptr %t37, null + br i1 %t38, label %panic3853, label %ok3854 +panic3853: + call void @finch_panic(ptr @.str.2380, i64 1617, ptr @.str.2381) unreachable -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 %range3637, label %inrange3638 -range3637: - call void @finch_panic_index(ptr @.str.2293, i64 1469, i64 %t36, i64 %t38) +ok3854: + %t39 = getelementptr inbounds %S.gen.Gen, ptr %t37, i32 0, i32 17 + %t40 = load i64, ptr %a10 + %t41 = load { ptr, i64, i64 }, ptr %t39 + %t42 = extractvalue { ptr, i64, i64 } %t41, 1 + %t43 = icmp uge i64 %t40, %t42 + br i1 %t43, label %range3855, label %inrange3856 +range3855: + call void @finch_panic_index(ptr @.str.2382, i64 1617, i64 %t40, i64 %t42) unreachable -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 - store %S.gen.Template %t42, ptr %a43 - call void @finch.copy.S_gen_Template(ptr %a44, ptr %a43) - %t45 = load %S.gen.Template, ptr %a44 - store %S.gen.Template %t45, ptr %a46 - %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - %t48 = load i64, ptr %t47 - %t49 = getelementptr inbounds %S.gen.Template, ptr %a46, i32 0, i32 3 - %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 %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.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 - %t61 = getelementptr inbounds { ptr, i64, i64 }, ptr %t60, i32 0, i32 1 - %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 } %t59, 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.2295, i64 24, i64 0 }, ptr %a71 +inrange3856: + %t44 = extractvalue { ptr, i64, i64 } %t41, 0 + %t45 = getelementptr inbounds %S.gen.Template, ptr %t44, i64 %t40 + %t46 = load %S.gen.Template, ptr %t45 + store %S.gen.Template %t46, ptr %a47 + call void @finch.copy.S_gen_Template(ptr %a48, ptr %a47) + %t49 = load %S.gen.Template, ptr %a48 + store %S.gen.Template %t49, ptr %a50 + %t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 + %t52 = load i64, ptr %t51 + %t53 = getelementptr inbounds %S.gen.Template, ptr %a50, i32 0, i32 3 + %t54 = getelementptr inbounds { ptr, i64, i64 }, ptr %t53, i32 0, i32 1 + %t55 = load i64, ptr %t54 + %t56 = icmp ne i64 %t52, %t55 + br i1 %t56, label %then3857, label %endif3859 +then3857: + %t57 = load ptr, ptr %a1 + %t58 = load %S.ast.Node, ptr %a5 + %t59 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t59, ptr %a61 + store { ptr, i64, i64 } { ptr @.str.2383, i64 7, i64 0 }, ptr %a62 + call void @finch_str_concat(ptr %a60, ptr %a61, ptr %a62) + %t63 = load { ptr, i64, i64 }, ptr %a60 + %t64 = getelementptr inbounds %S.gen.Template, ptr %a50, i32 0, i32 3 + %t65 = getelementptr inbounds { ptr, i64, i64 }, ptr %t64, i32 0, i32 1 + %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 } %t63, 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, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t72, 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.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.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 - 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.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 - %t96 = load i64, ptr %t95 - call void @finch_str_from_int(ptr %a97, i64 %t96) - %t98 = load { ptr, i64, i64 }, ptr %a97 - 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 - call void @finch.gen.fail(ptr %t53, %S.ast.Node %t54, { ptr, i64, i64 } %t102) - br label %endif3641 -endif3641: - %t103 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t103, ptr %a105 - 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 - %t109 = call { ptr, i64, i64 } @finch.gen.shownTypes({ ptr, i64, i64 } %t108) - store { ptr, i64, i64 } %t107, 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.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 - %t119 = load ptr, ptr %a1 - %t120 = load { ptr, i64, i64 }, ptr %a2 - %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 %then3642, label %endif3644 -then3642: - %t124 = load ptr, ptr %a1 - %t125 = icmp eq ptr %t124, null - br i1 %t125, label %panic3645, label %ok3646 -panic3645: - call void @finch_panic(ptr @.str.2301, i64 1475, ptr @.str.2302) + store { ptr, i64, i64 } %t63, ptr %a72 + call void @finch_str_drop(ptr %a72) + store { ptr, i64, i64 } %t68, ptr %a73 + call void @finch_str_drop(ptr %a73) + %t74 = load { ptr, i64, i64 }, ptr %a69 + store { ptr, i64, i64 } %t74, ptr %a76 + store { ptr, i64, i64 } { ptr @.str.2384, i64 24, i64 0 }, ptr %a77 + call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77) + store { ptr, i64, i64 } %t74, ptr %a78 + call void @finch_str_drop(ptr %a78) + %t79 = load { ptr, i64, i64 }, ptr %a75 + %t80 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t79, ptr %a82 + store { ptr, i64, i64 } %t80, ptr %a83 + call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) + store { ptr, i64, i64 } %t79, ptr %a84 + call void @finch_str_drop(ptr %a84) + %t85 = load { ptr, i64, i64 }, ptr %a81 + store { ptr, i64, i64 } %t85, ptr %a87 + store { ptr, i64, i64 } { ptr @.str.2385, i64 1, i64 0 }, ptr %a88 + call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) + store { ptr, i64, i64 } %t85, ptr %a89 + call void @finch_str_drop(ptr %a89) + %t90 = load { ptr, i64, i64 }, ptr %a86 + %t91 = getelementptr inbounds %S.gen.Template, ptr %a50, i32 0, i32 3 + %t92 = getelementptr inbounds { ptr, i64, i64 }, ptr %t91, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.2386, i64 2, i64 0 }, ptr %a93 + call void @finch_str_join(ptr %a94, ptr %t91, ptr %a93) + %t95 = load { ptr, i64, i64 }, ptr %a94 + store { ptr, i64, i64 } %t90, ptr %a97 + store { ptr, i64, i64 } %t95, ptr %a98 + call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) + store { ptr, i64, i64 } %t90, ptr %a99 + call void @finch_str_drop(ptr %a99) + store { ptr, i64, i64 } %t95, ptr %a100 + call void @finch_str_drop(ptr %a100) + %t101 = load { ptr, i64, i64 }, ptr %a96 + store { ptr, i64, i64 } %t101, ptr %a103 + store { ptr, i64, i64 } { ptr @.str.2387, i64 11, i64 0 }, ptr %a104 + call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104) + store { ptr, i64, i64 } %t101, ptr %a105 + call void @finch_str_drop(ptr %a105) + %t106 = load { ptr, i64, i64 }, ptr %a102 + %t107 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 + %t108 = load i64, ptr %t107 + call void @finch_str_from_int(ptr %a109, i64 %t108) + %t110 = load { ptr, i64, i64 }, ptr %a109 + store { ptr, i64, i64 } %t106, ptr %a112 + store { ptr, i64, i64 } %t110, ptr %a113 + call void @finch_str_concat(ptr %a111, ptr %a112, ptr %a113) + store { ptr, i64, i64 } %t106, ptr %a114 + call void @finch_str_drop(ptr %a114) + store { ptr, i64, i64 } %t110, ptr %a115 + call void @finch_str_drop(ptr %a115) + %t116 = load { ptr, i64, i64 }, ptr %a111 + call void @finch.gen.fail(ptr %t57, %S.ast.Node %t58, { ptr, i64, i64 } %t116) + store { ptr, i64, i64 } %t116, ptr %a117 + call void @finch_str_drop(ptr %a117) + br label %endif3859 +endif3859: + %t118 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t118, ptr %a120 + store { ptr, i64, i64 } { ptr @.str.2388, i64 1, 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 %a4 + %t124 = call { ptr, i64, i64 } @finch.gen.shownTypes({ ptr, i64, i64 } %t123) + store { ptr, i64, i64 } %t122, ptr %a126 + store { ptr, i64, i64 } %t124, ptr %a127 + call void @finch_str_concat(ptr %a125, ptr %a126, ptr %a127) + store { ptr, i64, i64 } %t122, ptr %a128 + call void @finch_str_drop(ptr %a128) + store { ptr, i64, i64 } %t124, ptr %a129 + call void @finch_str_drop(ptr %a129) + %t130 = load { ptr, i64, i64 }, ptr %a125 + store { ptr, i64, i64 } %t130, ptr %a132 + store { ptr, i64, i64 } { ptr @.str.2389, i64 1, i64 0 }, ptr %a133 + call void @finch_str_concat(ptr %a131, ptr %a132, ptr %a133) + store { ptr, i64, i64 } %t130, ptr %a134 + call void @finch_str_drop(ptr %a134) + %t135 = load { ptr, i64, i64 }, ptr %a131 + store { ptr, i64, i64 } %t135, ptr %a136 + %t137 = load ptr, ptr %a1 + %t138 = load { ptr, i64, i64 }, ptr %a2 + %t139 = load { ptr, i64, i64 }, ptr %a136 + %t140 = call i64 @finch.gen.findStruct(ptr %t137, { ptr, i64, i64 } %t138, { ptr, i64, i64 } %t139) + %t141 = icmp slt i64 %t140, 0 + br i1 %t141, label %then3860, label %endif3862 +then3860: + %t142 = load ptr, ptr %a1 + %t143 = icmp eq ptr %t142, null + br i1 %t143, label %panic3863, label %ok3864 +panic3863: + call void @finch_panic(ptr @.str.2390, i64 1623, ptr @.str.2391) unreachable -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 - store { ptr, i64, i64 } %t128, ptr %a129 - call void @finch_str_copy(ptr %a130, ptr %a129) - %t131 = load { ptr, i64, i64 }, ptr %a130 - %t132 = insertvalue %S.gen.StructDef zeroinitializer, { ptr, i64, i64 } %t131, 0 - %t133 = load { ptr, i64, i64 }, ptr %a118 - 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.gen.StructDef %t132, { ptr, i64, i64 } %t136, 1 - %t138 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t138, ptr %a139 - call void @finch_str_copy(ptr %a140, ptr %a139) - %t141 = load { ptr, i64, i64 }, ptr %a140 - %t142 = insertvalue %S.gen.StructDef %t137, { ptr, i64, i64 } %t141, 5 - %t143 = getelementptr inbounds %S.gen.Template, ptr %a46, i32 0, i32 3 - %t144 = load { ptr, i64, i64 }, ptr %t143 - store { ptr, i64, i64 } %t144, ptr %a145 - call void @finch.copy.arr_str(ptr %a146, ptr %a145) - %t147 = load { ptr, i64, i64 }, ptr %a146 - %t148 = insertvalue %S.gen.StructDef %t142, { ptr, i64, i64 } %t147, 6 - %t149 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t149, ptr %a150 - call void @finch.copy.arr_S_ast_Type(ptr %a151, ptr %a150) - %t152 = load { ptr, i64, i64 }, ptr %a151 - %t153 = insertvalue %S.gen.StructDef %t148, { ptr, i64, i64 } %t152, 7 - %t154 = getelementptr inbounds %S.gen.Template, ptr %a46, i32 0, i32 4 - %t155 = load i64, ptr %t154 - %t156 = insertvalue %S.gen.StructDef %t153, i64 %t155, 13 - %t157 = getelementptr inbounds %S.gen.Template, ptr %a46, i32 0, i32 5 - %t158 = load i64, ptr %t157 - %t159 = insertvalue %S.gen.StructDef %t156, i64 %t158, 14 - %t160 = load i64, ptr %t127 - %t161 = add i64 %t160, 1 - call void @finch_arr_reserve(ptr %t126, i64 %t161, i64 ptrtoint (ptr getelementptr (%S.gen.StructDef, ptr null, i32 1) to i64)) - %t162 = load ptr, ptr %t126 - %t163 = getelementptr inbounds %S.gen.StructDef, ptr %t162, i64 %t160 - store %S.gen.StructDef %t159, ptr %t163 - store i64 %t161, ptr %t127 - %t164 = load ptr, ptr %a1 - %t165 = load ptr, ptr %a1 - %t166 = icmp eq ptr %t165, null - br i1 %t166, label %panic3647, label %ok3648 -panic3647: - call void @finch_panic(ptr @.str.2303, i64 1476, ptr @.str.2304) +ok3864: + %t144 = getelementptr inbounds %S.gen.Gen, ptr %t142, i32 0, i32 16 + %t145 = getelementptr inbounds { ptr, i64, i64 }, ptr %t144, i32 0, i32 1 + %t146 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t146, ptr %a147 + call void @finch_str_copy(ptr %a148, ptr %a147) + %t149 = load { ptr, i64, i64 }, ptr %a148 + %t150 = insertvalue %S.gen.StructDef zeroinitializer, { ptr, i64, i64 } %t149, 0 + %t151 = load { ptr, i64, i64 }, ptr %a136 + store { ptr, i64, i64 } %t151, ptr %a152 + call void @finch_str_copy(ptr %a153, ptr %a152) + %t154 = load { ptr, i64, i64 }, ptr %a153 + %t155 = insertvalue %S.gen.StructDef %t150, { ptr, i64, i64 } %t154, 1 + %t156 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t156, ptr %a157 + call void @finch_str_copy(ptr %a158, ptr %a157) + %t159 = load { ptr, i64, i64 }, ptr %a158 + %t160 = insertvalue %S.gen.StructDef %t155, { ptr, i64, i64 } %t159, 5 + %t161 = getelementptr inbounds %S.gen.Template, ptr %a50, i32 0, i32 3 + %t162 = load { ptr, i64, i64 }, ptr %t161 + store { ptr, i64, i64 } %t162, ptr %a163 + call void @finch.copy.arr_str(ptr %a164, ptr %a163) + %t165 = load { ptr, i64, i64 }, ptr %a164 + %t166 = insertvalue %S.gen.StructDef %t160, { ptr, i64, i64 } %t165, 6 + %t167 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t167, ptr %a168 + call void @finch.copy.arr_S_ast_Type(ptr %a169, ptr %a168) + %t170 = load { ptr, i64, i64 }, ptr %a169 + %t171 = insertvalue %S.gen.StructDef %t166, { ptr, i64, i64 } %t170, 7 + %t172 = getelementptr inbounds %S.gen.Template, ptr %a50, i32 0, i32 4 + %t173 = load i64, ptr %t172 + %t174 = insertvalue %S.gen.StructDef %t171, i64 %t173, 13 + %t175 = getelementptr inbounds %S.gen.Template, ptr %a50, i32 0, i32 5 + %t176 = load i64, ptr %t175 + %t177 = insertvalue %S.gen.StructDef %t174, i64 %t176, 14 + %t178 = load i64, ptr %t145 + %t179 = add i64 %t178, 1 + call void @finch_arr_reserve(ptr %t144, i64 %t179, i64 ptrtoint (ptr getelementptr (%S.gen.StructDef, ptr null, i32 1) to i64)) + %t180 = load ptr, ptr %t144 + %t181 = getelementptr inbounds %S.gen.StructDef, ptr %t180, i64 %t178 + store %S.gen.StructDef %t177, ptr %t181 + store i64 %t179, ptr %t145 + %t182 = load ptr, ptr %a1 + %t183 = load ptr, ptr %a1 + %t184 = icmp eq ptr %t183, null + br i1 %t184, label %panic3865, label %ok3866 +panic3865: + call void @finch_panic(ptr @.str.2392, i64 1624, ptr @.str.2393) unreachable -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 %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) - %t175 = load { ptr, i64, i64 }, ptr %a174 - %t176 = insertvalue %S.ast.Type %t171, { ptr, i64, i64 } %t175, 2 - %t177 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t177, ptr %a178 - call void @finch_str_copy(ptr %a179, ptr %a178) - %t180 = load { ptr, i64, i64 }, ptr %a179 - %t181 = insertvalue %S.ast.Type %t176, { ptr, i64, i64 } %t180, 3 - ret %S.ast.Type %t181 +ok3866: + %t185 = getelementptr inbounds %S.gen.Gen, ptr %t183, i32 0, i32 16 + %t186 = getelementptr inbounds { ptr, i64, i64 }, ptr %t185, i32 0, i32 1 + %t187 = load i64, ptr %t186 + %t188 = sub i64 %t187, 1 + call void @finch.gen.resolveStruct(ptr %t182, i64 %t188) + br label %endif3862 +endif3862: + %t189 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.2394, i64 6, i64 0 }, 0 + %t190 = load { ptr, i64, i64 }, ptr %a136 + store { ptr, i64, i64 } %t190, ptr %a191 + call void @finch_str_copy(ptr %a192, ptr %a191) + %t193 = load { ptr, i64, i64 }, ptr %a192 + %t194 = insertvalue %S.ast.Type %t189, { ptr, i64, i64 } %t193, 2 + %t195 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t195, ptr %a196 + call void @finch_str_copy(ptr %a197, ptr %a196) + %t198 = load { ptr, i64, i64 }, ptr %a197 + %t199 = insertvalue %S.ast.Type %t194, { ptr, i64, i64 } %t198, 3 + call void @finch_str_drop(ptr %a136) + call void @finch.drop.S_gen_Template(ptr %a50) + ret %S.ast.Type %t199 } define internal i64 @finch.gen.instFn(ptr %p0, i64 %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3, %S.ast.Node %p4) { @@ -34615,105 +40404,134 @@ entry: %a28 = 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 %a32 = 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 %a36 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca i64, align 16 - %a58 = alloca i64, align 16 - %a81 = alloca %S.ast.Node, align 16 - %a82 = alloca %S.ast.Node, align 16 + %a37 = alloca { ptr, i64, i64 }, align 16 + %a39 = alloca { ptr, i64, i64 }, align 16 + %a52 = alloca i64, align 16 + %a61 = alloca i64, align 16 %a84 = alloca %S.ast.Node, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca %S.gen.FnSig, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 + %a85 = alloca %S.ast.Node, align 16 + %a87 = alloca %S.ast.Node, 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 + %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 + %a112 = alloca { ptr, i64, i64 }, align 16 + %a113 = alloca { ptr, i64, i64 }, align 16 + %a117 = alloca { ptr, i64, i64 }, align 16 + %a118 = alloca { ptr, i64, i64 }, align 16 + %a133 = alloca %S.gen.FnSig, align 16 + %a137 = 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 + %a142 = alloca { ptr, i64, i64 }, align 16 + %a143 = 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 - %a156 = 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 + %a152 = alloca { ptr, i64, i64 }, align 16 + %a153 = alloca { ptr, i64, i64 }, align 16 %a157 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 + %a165 = alloca { ptr, i64, i64 }, align 16 + %a166 = 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 + %a177 = alloca { ptr, i64, i64 }, align 16 + %a180 = 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 - %a185 = alloca { ptr, i64, i64 }, align 16 %a186 = alloca { ptr, i64, i64 }, align 16 %a187 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 + %a188 = alloca { ptr, i64, i64 }, align 16 + %a189 = alloca { ptr, i64, i64 }, align 16 %a193 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 %a197 = alloca { ptr, i64, i64 }, align 16 %a198 = 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 %a203 = alloca { ptr, i64, i64 }, align 16 %a204 = alloca { ptr, i64, i64 }, align 16 + %a205 = alloca { ptr, i64, i64 }, align 16 + %a210 = 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 %a214 = alloca { ptr, i64, i64 }, align 16 + %a216 = alloca { ptr, i64, i64 }, align 16 + %a217 = alloca { ptr, i64, i64 }, align 16 + %a218 = alloca { ptr, i64, i64 }, align 16 %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a228 = 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 + %a226 = 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 %a238 = alloca { ptr, i64, i64 }, align 16 + %a243 = 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 %a251 = alloca { ptr, i64, i64 }, align 16 %a252 = alloca { ptr, i64, i64 }, align 16 + %a254 = alloca { ptr, i64, i64 }, align 16 %a259 = alloca { ptr, i64, 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 + %a262 = alloca { ptr, i64, i64 }, align 16 %a268 = alloca { ptr, i64, i64 }, align 16 %a269 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca %S.ast.Node, align 16 - %a293 = alloca %S.ast.Node, align 16 - %a295 = alloca %S.ast.Node, align 16 - %a300 = alloca i64, align 16 - %a322 = alloca %S.ast.Type, align 16 - %a326 = alloca %S.ast.Type, align 16 - %a327 = alloca %S.ast.Type, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a345 = alloca { ptr, i64, i64 }, align 16 + %a272 = alloca { ptr, i64, i64 }, align 16 + %a277 = alloca { ptr, i64, i64 }, align 16 + %a278 = alloca { ptr, i64, i64 }, align 16 + %a281 = alloca { ptr, i64, i64 }, align 16 + %a287 = alloca { ptr, i64, i64 }, align 16 + %a288 = alloca { ptr, i64, i64 }, align 16 + %a291 = 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 + %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 + %a307 = alloca { ptr, i64, i64 }, align 16 + %a315 = alloca %S.ast.Type, align 16 + %a327 = alloca %S.ast.Node, align 16 + %a328 = alloca %S.ast.Node, align 16 + %a330 = alloca %S.ast.Node, align 16 + %a335 = alloca i64, align 16 + %a357 = alloca %S.ast.Type, align 16 + %a361 = alloca %S.ast.Type, align 16 + %a362 = alloca %S.ast.Type, align 16 + %a379 = alloca { ptr, i64, i64 }, align 16 %a380 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca { ptr, i64, i64 }, align 16 - %a394 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a401 = alloca { ptr, i64, i64 }, align 16 - %a402 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca %S.gen.FnSig, align 16 - %a410 = alloca %S.gen.FnSig, align 16 + %a415 = alloca { ptr, i64, i64 }, align 16 + %a416 = alloca { ptr, i64, i64 }, align 16 + %a419 = alloca { ptr, i64, i64 }, align 16 + %a424 = alloca { ptr, i64, i64 }, align 16 + %a425 = alloca { ptr, i64, i64 }, align 16 + %a428 = alloca { ptr, i64, i64 }, align 16 + %a433 = alloca { ptr, i64, i64 }, align 16 + %a434 = alloca { ptr, i64, i64 }, align 16 + %a437 = 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 + %a452 = alloca %S.gen.FnSig, align 16 + %a453 = alloca %S.gen.FnSig, align 16 store ptr %p0, ptr %a1 store i64 %p1, ptr %a2 store { ptr, i64, i64 } %p2, ptr %a3 @@ -34721,21 +40539,21 @@ entry: store %S.ast.Node %p4, ptr %a5 %t6 = load ptr, ptr %a1 %t7 = icmp eq ptr %t6, null - br i1 %t7, label %panic3649, label %ok3650 -panic3649: - call void @finch_panic(ptr @.str.2306, i64 1483, ptr @.str.2307) + br i1 %t7, label %panic3867, label %ok3868 +panic3867: + call void @finch_panic(ptr @.str.2395, i64 1631, ptr @.str.2396) unreachable -ok3650: - %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 16 +ok3868: + %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 17 %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 %range3651, label %inrange3652 -range3651: - call void @finch_panic_index(ptr @.str.2308, i64 1483, i64 %t9, i64 %t11) + br i1 %t12, label %range3869, label %inrange3870 +range3869: + call void @finch_panic_index(ptr @.str.2397, i64 1631, i64 %t9, i64 %t11) unreachable -inrange3652: +inrange3870: %t13 = extractvalue { ptr, i64, i64 } %t10, 0 %t14 = getelementptr inbounds %S.gen.Template, ptr %t13, i64 %t9 %t15 = load %S.gen.Template, ptr %t14 @@ -34746,7 +40564,7 @@ inrange3652: %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.2309, i64 1, i64 0 }, ptr %a24 + store { ptr, i64, i64 } { ptr @.str.2398, 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 @@ -34754,569 +40572,655 @@ inrange3652: store { ptr, i64, i64 } %t25, 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.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 - %t37 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 2 - %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 %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 - %t44 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 2 - %t45 = load { ptr, i64, i64 }, ptr %t44 - %t46 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 1 - %t47 = load { ptr, i64, i64 }, ptr %t46 - %t48 = call i64 @finch.gen.findMethod(ptr %t41, { ptr, i64, i64 } %t43, { ptr, i64, i64 } %t45, { ptr, i64, i64 } %t47) - store i64 %t48, ptr %a49 - %t50 = load i64, ptr %a49 - %t51 = icmp sge i64 %t50, 0 - br i1 %t51, label %then3656, label %endif3658 -then3656: - %t52 = load i64, ptr %a49 - ret i64 %t52 -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 - %t56 = load { ptr, i64, i64 }, ptr %a36 - %t57 = call i64 @finch.gen.findFn(ptr %t53, { ptr, i64, i64 } %t55, { ptr, i64, i64 } %t56) - store i64 %t57, ptr %a58 - %t59 = load i64, ptr %a58 - %t60 = icmp sge i64 %t59, 0 - br i1 %t60, label %then3659, label %endif3661 -then3659: - %t61 = load i64, ptr %a58 - ret i64 %t61 -endif3661: - br label %endif3655 -endif3655: - %t62 = load ptr, ptr %a1 - %t63 = icmp eq ptr %t62, null - br i1 %t63, label %panic3662, label %ok3663 -panic3662: - call void @finch_panic(ptr @.str.2311, i64 1496, ptr @.str.2312) + store { ptr, i64, i64 } %t25, ptr %a31 + call void @finch_str_drop(ptr %a31) + store { ptr, i64, i64 } %t27, ptr %a32 + call void @finch_str_drop(ptr %a32) + %t33 = load { ptr, i64, i64 }, ptr %a28 + store { ptr, i64, i64 } %t33, ptr %a35 + store { ptr, i64, i64 } { ptr @.str.2399, i64 1, i64 0 }, ptr %a36 + call void @finch_str_concat(ptr %a34, ptr %a35, ptr %a36) + store { ptr, i64, i64 } %t33, ptr %a37 + call void @finch_str_drop(ptr %a37) + %t38 = load { ptr, i64, i64 }, ptr %a34 + store { ptr, i64, i64 } %t38, ptr %a39 + %t40 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 2 + %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i32 0, i32 1 + %t42 = load i64, ptr %t41 + %t43 = icmp sgt i64 %t42, 0 + br i1 %t43, label %then3871, label %else3872 +then3871: + %t44 = load ptr, ptr %a1 + %t45 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 + %t46 = load { ptr, i64, i64 }, ptr %t45 + %t47 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 2 + %t48 = load { ptr, i64, i64 }, ptr %t47 + %t49 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 1 + %t50 = load { ptr, i64, i64 }, ptr %t49 + %t51 = call i64 @finch.gen.findMethod(ptr %t44, { ptr, i64, i64 } %t46, { ptr, i64, i64 } %t48, { ptr, i64, i64 } %t50) + store i64 %t51, ptr %a52 + %t53 = load i64, ptr %a52 + %t54 = icmp sge i64 %t53, 0 + br i1 %t54, label %then3874, label %endif3876 +then3874: + %t55 = load i64, ptr %a52 + call void @finch_str_drop(ptr %a39) + call void @finch.drop.S_gen_Template(ptr %a19) + ret i64 %t55 +endif3876: + br label %endif3873 +else3872: + %t56 = load ptr, ptr %a1 + %t57 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 + %t58 = load { ptr, i64, i64 }, ptr %t57 + %t59 = load { ptr, i64, i64 }, ptr %a39 + %t60 = call i64 @finch.gen.findFn(ptr %t56, { ptr, i64, i64 } %t58, { ptr, i64, i64 } %t59) + store i64 %t60, ptr %a61 + %t62 = load i64, ptr %a61 + %t63 = icmp sge i64 %t62, 0 + br i1 %t63, label %then3877, label %endif3879 +then3877: + %t64 = load i64, ptr %a61 + call void @finch_str_drop(ptr %a39) + call void @finch.drop.S_gen_Template(ptr %a19) + ret i64 %t64 +endif3879: + br label %endif3873 +endif3873: + %t65 = load ptr, ptr %a1 + %t66 = icmp eq ptr %t65, null + br i1 %t66, label %panic3880, label %ok3881 +panic3880: + call void @finch_panic(ptr @.str.2400, i64 1644, ptr @.str.2401) unreachable -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 %range3664, label %inrange3665 -range3664: - call void @finch_panic_index(ptr @.str.2313, i64 1496, i64 %t66, i64 %t68) +ok3881: + %t67 = getelementptr inbounds %S.gen.Gen, ptr %t65, i32 0, i32 0 + %t68 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 4 + %t69 = load i64, ptr %t68 + %t70 = load { ptr, i64, i64 }, ptr %t67 + %t71 = extractvalue { ptr, i64, i64 } %t70, 1 + %t72 = icmp uge i64 %t69, %t71 + br i1 %t72, label %range3882, label %inrange3883 +range3882: + call void @finch_panic_index(ptr @.str.2402, i64 1644, i64 %t69, i64 %t71) unreachable -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 - %t73 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 5 - %t74 = load i64, ptr %t73 - %t75 = load { ptr, i64, i64 }, ptr %t72 - %t76 = extractvalue { ptr, i64, i64 } %t75, 1 - %t77 = icmp uge i64 %t74, %t76 - br i1 %t77, label %range3666, label %inrange3667 -range3666: - call void @finch_panic_index(ptr @.str.2314, i64 1496, i64 %t74, i64 %t76) +inrange3883: + %t73 = extractvalue { ptr, i64, i64 } %t70, 0 + %t74 = getelementptr inbounds %S.ast.Program, ptr %t73, i64 %t69 + %t75 = getelementptr inbounds %S.ast.Program, ptr %t74, i32 0, i32 8 + %t76 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 5 + %t77 = load i64, ptr %t76 + %t78 = load { ptr, i64, i64 }, ptr %t75 + %t79 = extractvalue { ptr, i64, i64 } %t78, 1 + %t80 = icmp uge i64 %t77, %t79 + br i1 %t80, label %range3884, label %inrange3885 +range3884: + call void @finch_panic_index(ptr @.str.2403, i64 1644, i64 %t77, i64 %t79) unreachable -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 - store %S.ast.Node %t80, ptr %a81 - call void @finch.copy.S_ast_Node(ptr %a82, ptr %a81) - %t83 = load %S.ast.Node, ptr %a82 +inrange3885: + %t81 = extractvalue { ptr, i64, i64 } %t78, 0 + %t82 = getelementptr inbounds %S.ast.Node, ptr %t81, i64 %t77 + %t83 = load %S.ast.Node, ptr %t82 store %S.ast.Node %t83, ptr %a84 - %t85 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 - %t86 = load { ptr, i64, i64 }, ptr %t85 - store { ptr, i64, i64 } %t86, ptr %a87 - call void @finch_str_copy(ptr %a88, ptr %a87) - %t89 = load { ptr, i64, i64 }, ptr %a88 - %t90 = insertvalue %S.gen.FnSig zeroinitializer, { ptr, i64, i64 } %t89, 0 - %t91 = load { ptr, i64, i64 }, ptr %a36 - 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.gen.FnSig %t90, { ptr, i64, i64 } %t94, 1 - %t96 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 - %t97 = load { ptr, i64, i64 }, ptr %t96 - store { ptr, i64, i64 } %t97, ptr %a98 - call void @finch_str_copy(ptr %a99, ptr %a98) - %t100 = load { ptr, i64, i64 }, ptr %a99 - %t101 = insertvalue %S.gen.FnSig %t95, { ptr, i64, i64 } %t100, 3 - %t102 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 - %t103 = load { ptr, i64, i64 }, ptr %t102 - store { ptr, i64, i64 } %t103, ptr %a104 - call void @finch.copy.arr_str(ptr %a105, ptr %a104) - %t106 = load { ptr, i64, i64 }, ptr %a105 - %t107 = insertvalue %S.gen.FnSig %t101, { ptr, i64, i64 } %t106, 6 - %t108 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t108, ptr %a109 - call void @finch.copy.arr_S_ast_Type(ptr %a110, ptr %a109) - %t111 = load { ptr, i64, i64 }, ptr %a110 - %t112 = insertvalue %S.gen.FnSig %t107, { ptr, i64, i64 } %t111, 7 - %t113 = load { ptr, i64, i64 }, ptr %a36 - store { ptr, i64, i64 } %t113, ptr %a114 - call void @finch_str_copy(ptr %a115, ptr %a114) - %t116 = load { ptr, i64, i64 }, ptr %a115 - %t117 = insertvalue %S.gen.FnSig %t112, { ptr, i64, i64 } %t116, 8 - %t118 = getelementptr inbounds %S.ast.Node, ptr %a84, i32 0, i32 7 - %t119 = load i1, ptr %t118 - %t120 = insertvalue %S.gen.FnSig %t117, i1 %t119, 9 - %t121 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 7 + call void @finch.copy.S_ast_Node(ptr %a85, ptr %a84) + %t86 = load %S.ast.Node, ptr %a85 + store %S.ast.Node %t86, ptr %a87 + %t88 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 + %t89 = load { ptr, i64, i64 }, ptr %t88 + store { ptr, i64, i64 } %t89, ptr %a90 + call void @finch_str_copy(ptr %a91, ptr %a90) + %t92 = load { ptr, i64, i64 }, ptr %a91 + %t93 = insertvalue %S.gen.FnSig zeroinitializer, { ptr, i64, i64 } %t92, 0 + %t94 = load { ptr, i64, i64 }, ptr %a39 + store { ptr, i64, i64 } %t94, ptr %a95 + call void @finch_str_copy(ptr %a96, ptr %a95) + %t97 = load { ptr, i64, i64 }, ptr %a96 + %t98 = insertvalue %S.gen.FnSig %t93, { ptr, i64, i64 } %t97, 1 + %t99 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 + %t100 = load { ptr, i64, i64 }, ptr %t99 + store { ptr, i64, i64 } %t100, ptr %a101 + call void @finch_str_copy(ptr %a102, ptr %a101) + %t103 = load { ptr, i64, i64 }, ptr %a102 + %t104 = insertvalue %S.gen.FnSig %t98, { ptr, i64, i64 } %t103, 3 + %t105 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 + %t106 = load { ptr, i64, i64 }, ptr %t105 + store { ptr, i64, i64 } %t106, ptr %a107 + call void @finch.copy.arr_str(ptr %a108, ptr %a107) + %t109 = load { ptr, i64, i64 }, ptr %a108 + %t110 = insertvalue %S.gen.FnSig %t104, { ptr, i64, i64 } %t109, 6 + %t111 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t111, ptr %a112 + call void @finch.copy.arr_S_ast_Type(ptr %a113, ptr %a112) + %t114 = load { ptr, i64, i64 }, ptr %a113 + %t115 = insertvalue %S.gen.FnSig %t110, { ptr, i64, i64 } %t114, 7 + %t116 = load { ptr, i64, i64 }, ptr %a39 + 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.FnSig %t115, { ptr, i64, i64 } %t119, 8 + %t121 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 7 %t122 = load i1, ptr %t121 - %t123 = insertvalue %S.gen.FnSig %t120, i1 %t122, 10 - %t124 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 4 - %t125 = load i64, ptr %t124 - %t126 = insertvalue %S.gen.FnSig %t123, i64 %t125, 16 - %t127 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 5 + %t123 = insertvalue %S.gen.FnSig %t120, i1 %t122, 9 + %t124 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 7 + %t125 = load i1, ptr %t124 + %t126 = insertvalue %S.gen.FnSig %t123, i1 %t125, 10 + %t127 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 4 %t128 = load i64, ptr %t127 - %t129 = insertvalue %S.gen.FnSig %t126, i64 %t128, 17 - store %S.gen.FnSig %t129, ptr %a130 - %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.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.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 - %t143 = call { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %t142) + %t129 = insertvalue %S.gen.FnSig %t126, i64 %t128, 16 + %t130 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 5 + %t131 = load i64, ptr %t130 + %t132 = insertvalue %S.gen.FnSig %t129, i64 %t131, 17 + store %S.gen.FnSig %t132, ptr %a133 + %t134 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 + %t135 = load { ptr, i64, i64 }, ptr %t134 + %t136 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t135) + store { ptr, i64, i64 } { ptr @.str.2404, i64 7, i64 0 }, ptr %a138 + store { ptr, i64, i64 } %t136, ptr %a139 + call void @finch_str_concat(ptr %a137, ptr %a138, ptr %a139) + store { ptr, i64, i64 } %t136, ptr %a140 + call void @finch_str_drop(ptr %a140) + %t141 = load { ptr, i64, i64 }, ptr %a137 + store { ptr, i64, i64 } %t141, ptr %a143 + store { ptr, i64, i64 } { ptr @.str.2405, i64 1, i64 0 }, ptr %a144 + call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144) store { ptr, i64, i64 } %t141, ptr %a145 - store { ptr, i64, i64 } %t143, 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.FnSig, ptr %a130, i32 0, i32 11 - store { ptr, i64, i64 } %t147, ptr %t148 - %t149 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 2 - %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 %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 - store { ptr, i64, i64 } %t154, ptr %a156 - call void @finch_str_copy(ptr %a157, ptr %a156) - %t158 = load { ptr, i64, i64 }, ptr %a157 - store { ptr, i64, i64 } %t158, ptr %t155 - %t159 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 2 - %t160 = load { ptr, i64, i64 }, ptr %t159 - %t161 = getelementptr inbounds %S.gen.FnSig, ptr %a130, i32 0, i32 2 - store { ptr, i64, i64 } %t160, ptr %a162 - call void @finch_str_copy(ptr %a163, ptr %a162) - %t164 = load { ptr, i64, i64 }, ptr %a163 - store { ptr, i64, i64 } %t164, ptr %t161 - %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.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 - %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 = getelementptr inbounds %S.gen.FnSig, ptr %a130, i32 0, i32 8 - store { ptr, i64, i64 } %t176, ptr %t177 - %t178 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 + call void @finch_str_drop(ptr %a145) + %t146 = load { ptr, i64, i64 }, ptr %a142 + %t147 = load { ptr, i64, i64 }, ptr %a39 + %t148 = call { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %t147) + store { ptr, i64, i64 } %t146, ptr %a150 + store { ptr, i64, i64 } %t148, ptr %a151 + call void @finch_str_concat(ptr %a149, ptr %a150, ptr %a151) + store { ptr, i64, i64 } %t146, ptr %a152 + call void @finch_str_drop(ptr %a152) + store { ptr, i64, i64 } %t148, ptr %a153 + call void @finch_str_drop(ptr %a153) + %t154 = load { ptr, i64, i64 }, ptr %a149 + %t155 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 11 + %t156 = load { ptr, i64, i64 }, ptr %t155 + store { ptr, i64, i64 } %t154, ptr %t155 + store { ptr, i64, i64 } %t156, ptr %a157 + call void @finch_str_drop(ptr %a157) + %t158 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 2 + %t159 = getelementptr inbounds { ptr, i64, i64 }, ptr %t158, i32 0, i32 1 + %t160 = load i64, ptr %t159 + %t161 = icmp sgt i64 %t160, 0 + br i1 %t161, label %then3886, label %endif3888 +then3886: + %t162 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 1 + %t163 = load { ptr, i64, i64 }, ptr %t162 + %t164 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 1 + store { ptr, i64, i64 } %t163, ptr %a165 + call void @finch_str_copy(ptr %a166, ptr %a165) + %t167 = load { ptr, i64, i64 }, ptr %a166 + %t168 = load { ptr, i64, i64 }, ptr %t164 + store { ptr, i64, i64 } %t167, ptr %t164 + store { ptr, i64, i64 } %t168, ptr %a169 + call void @finch_str_drop(ptr %a169) + %t170 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 2 + %t171 = load { ptr, i64, i64 }, ptr %t170 + %t172 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 2 + store { ptr, i64, i64 } %t171, ptr %a173 + call void @finch_str_copy(ptr %a174, ptr %a173) + %t175 = load { ptr, i64, i64 }, ptr %a174 + %t176 = load { ptr, i64, i64 }, ptr %t172 + store { ptr, i64, i64 } %t175, ptr %t172 + store { ptr, i64, i64 } %t176, ptr %a177 + call void @finch_str_drop(ptr %a177) + %t178 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 2 %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.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.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 - %t190 = load { ptr, i64, i64 }, ptr %t189 - %t191 = call { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %t190) - store { ptr, i64, i64 } %t188, ptr %a193 - store { ptr, i64, i64 } %t191, ptr %a194 - 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.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 - %t201 = load { ptr, i64, i64 }, ptr %t200 - store { ptr, i64, i64 } %t199, ptr %a203 - store { ptr, i64, i64 } %t201, ptr %a204 + store { ptr, i64, i64 } %t179, ptr %a181 + store { ptr, i64, i64 } { ptr @.str.2406, 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 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 1 + %t185 = load { ptr, i64, i64 }, ptr %t184 + store { ptr, i64, i64 } %t183, ptr %a187 + store { ptr, i64, i64 } %t185, ptr %a188 + call void @finch_str_concat(ptr %a186, ptr %a187, ptr %a188) + store { ptr, i64, i64 } %t183, ptr %a189 + call void @finch_str_drop(ptr %a189) + %t190 = load { ptr, i64, i64 }, ptr %a186 + %t191 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 8 + %t192 = load { ptr, i64, i64 }, ptr %t191 + store { ptr, i64, i64 } %t190, ptr %t191 + store { ptr, i64, i64 } %t192, ptr %a193 + call void @finch_str_drop(ptr %a193) + %t194 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 + %t195 = load { ptr, i64, i64 }, ptr %t194 + %t196 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t195) + store { ptr, i64, i64 } { ptr @.str.2407, i64 7, i64 0 }, ptr %a198 + store { ptr, i64, i64 } %t196, ptr %a199 + call void @finch_str_concat(ptr %a197, ptr %a198, ptr %a199) + store { ptr, i64, i64 } %t196, ptr %a200 + call void @finch_str_drop(ptr %a200) + %t201 = load { ptr, i64, i64 }, ptr %a197 + store { ptr, i64, i64 } %t201, ptr %a203 + store { ptr, i64, i64 } { ptr @.str.2408, i64 1, 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.FnSig, ptr %a130, i32 0, i32 11 - store { ptr, i64, i64 } %t205, ptr %t206 - br label %endif3670 -endif3670: - %t207 = load ptr, ptr %a1 - %t208 = icmp eq ptr %t207, null - br i1 %t208, label %panic3671, label %ok3672 -panic3671: - call void @finch_panic(ptr @.str.2321, i64 1505, ptr @.str.2322) - unreachable -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 - call void @finch.copy.arr_str(ptr %a212, ptr %a211) - %t213 = load { ptr, i64, i64 }, ptr %a212 - store { ptr, i64, i64 } %t213, ptr %a214 - %t215 = load ptr, ptr %a1 - %t216 = icmp eq ptr %t215, null - br i1 %t216, label %panic3673, label %ok3674 -panic3673: - call void @finch_panic(ptr @.str.2323, i64 1506, ptr @.str.2324) - unreachable -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 - call void @finch.copy.arr_S_ast_Type(ptr %a220, ptr %a219) - %t221 = load { ptr, i64, i64 }, ptr %a220 - store { ptr, i64, i64 } %t221, ptr %a222 - %t223 = load ptr, ptr %a1 - %t224 = icmp eq ptr %t223, null - br i1 %t224, label %panic3675, label %ok3676 -panic3675: - call void @finch_panic(ptr @.str.2325, i64 1507, ptr @.str.2326) - unreachable -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 - call void @finch_str_copy(ptr %a228, ptr %a227) - %t229 = load { ptr, i64, i64 }, ptr %a228 + store { ptr, i64, i64 } %t201, ptr %a205 + call void @finch_str_drop(ptr %a205) + %t206 = load { ptr, i64, i64 }, ptr %a202 + %t207 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 2 + %t208 = load { ptr, i64, i64 }, ptr %t207 + %t209 = call { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %t208) + store { ptr, i64, i64 } %t206, ptr %a211 + store { ptr, i64, i64 } %t209, ptr %a212 + call void @finch_str_concat(ptr %a210, ptr %a211, ptr %a212) + store { ptr, i64, i64 } %t206, ptr %a213 + call void @finch_str_drop(ptr %a213) + store { ptr, i64, i64 } %t209, ptr %a214 + call void @finch_str_drop(ptr %a214) + %t215 = load { ptr, i64, i64 }, ptr %a210 + store { ptr, i64, i64 } %t215, ptr %a217 + store { ptr, i64, i64 } { ptr @.str.2409, i64 1, i64 0 }, ptr %a218 + call void @finch_str_concat(ptr %a216, ptr %a217, ptr %a218) + store { ptr, i64, i64 } %t215, ptr %a219 + call void @finch_str_drop(ptr %a219) + %t220 = load { ptr, i64, i64 }, ptr %a216 + %t221 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 1 + %t222 = load { ptr, i64, i64 }, ptr %t221 + store { ptr, i64, i64 } %t220, ptr %a224 + store { ptr, i64, i64 } %t222, ptr %a225 + call void @finch_str_concat(ptr %a223, ptr %a224, ptr %a225) + store { ptr, i64, i64 } %t220, ptr %a226 + call void @finch_str_drop(ptr %a226) + %t227 = load { ptr, i64, i64 }, ptr %a223 + %t228 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 11 + %t229 = load { ptr, i64, i64 }, ptr %t228 + store { ptr, i64, i64 } %t227, ptr %t228 store { ptr, i64, i64 } %t229, ptr %a230 + call void @finch_str_drop(ptr %a230) + br label %endif3888 +endif3888: %t231 = load ptr, ptr %a1 %t232 = icmp eq ptr %t231, null - br i1 %t232, label %panic3677, label %ok3678 -panic3677: - call void @finch_panic(ptr @.str.2327, i64 1508, ptr @.str.2328) + br i1 %t232, label %panic3889, label %ok3890 +panic3889: + call void @finch_panic(ptr @.str.2410, i64 1653, ptr @.str.2411) unreachable -ok3678: - %t233 = getelementptr inbounds %S.gen.Gen, ptr %t231, i32 0, i32 19 +ok3890: + %t233 = getelementptr inbounds %S.gen.Gen, ptr %t231, i32 0, i32 18 %t234 = load { ptr, i64, i64 }, ptr %t233 store { ptr, i64, i64 } %t234, ptr %a235 - call void @finch_str_copy(ptr %a236, ptr %a235) + call void @finch.copy.arr_str(ptr %a236, ptr %a235) %t237 = load { ptr, i64, i64 }, ptr %a236 store { ptr, i64, i64 } %t237, ptr %a238 - %t239 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 - %t240 = load { ptr, i64, i64 }, ptr %t239 - %t241 = load ptr, ptr %a1 - %t242 = icmp eq ptr %t241, null - br i1 %t242, label %panic3679, label %ok3680 -panic3679: - call void @finch_panic(ptr @.str.2329, i64 1509, ptr @.str.2330) + %t239 = load ptr, ptr %a1 + %t240 = icmp eq ptr %t239, null + br i1 %t240, label %panic3891, label %ok3892 +panic3891: + call void @finch_panic(ptr @.str.2412, i64 1654, ptr @.str.2413) unreachable -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) - %t246 = load { ptr, i64, i64 }, ptr %a245 - store { ptr, i64, i64 } %t246, ptr %t243 - %t247 = load { ptr, i64, i64 }, ptr %a3 - %t248 = load ptr, ptr %a1 - %t249 = icmp eq ptr %t248, null - br i1 %t249, label %panic3681, label %ok3682 -panic3681: - call void @finch_panic(ptr @.str.2331, i64 1510, ptr @.str.2332) +ok3892: + %t241 = getelementptr inbounds %S.gen.Gen, ptr %t239, i32 0, i32 19 + %t242 = load { ptr, i64, i64 }, ptr %t241 + store { ptr, i64, i64 } %t242, ptr %a243 + call void @finch.copy.arr_S_ast_Type(ptr %a244, ptr %a243) + %t245 = load { ptr, i64, i64 }, ptr %a244 + store { ptr, i64, i64 } %t245, ptr %a246 + %t247 = load ptr, ptr %a1 + %t248 = icmp eq ptr %t247, null + br i1 %t248, label %panic3893, label %ok3894 +panic3893: + call void @finch_panic(ptr @.str.2414, i64 1655, ptr @.str.2415) unreachable -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) +ok3894: + %t249 = getelementptr inbounds %S.gen.Gen, ptr %t247, i32 0, i32 14 + %t250 = load { ptr, i64, i64 }, ptr %t249 + store { ptr, i64, i64 } %t250, ptr %a251 + call void @finch_str_copy(ptr %a252, ptr %a251) %t253 = load { ptr, i64, i64 }, ptr %a252 - store { ptr, i64, i64 } %t253, ptr %t250 - %t254 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 - %t255 = load { ptr, i64, i64 }, ptr %t254 - %t256 = load ptr, ptr %a1 - %t257 = icmp eq ptr %t256, null - br i1 %t257, label %panic3683, label %ok3684 -panic3683: - call void @finch_panic(ptr @.str.2333, i64 1511, ptr @.str.2334) + store { ptr, i64, i64 } %t253, ptr %a254 + %t255 = load ptr, ptr %a1 + %t256 = icmp eq ptr %t255, null + br i1 %t256, label %panic3895, label %ok3896 +panic3895: + call void @finch_panic(ptr @.str.2416, i64 1656, ptr @.str.2417) unreachable -ok3684: - %t258 = getelementptr inbounds %S.gen.Gen, ptr %t256, i32 0, i32 13 - store { ptr, i64, i64 } %t255, ptr %a259 +ok3896: + %t257 = getelementptr inbounds %S.gen.Gen, ptr %t255, i32 0, i32 20 + %t258 = load { ptr, i64, i64 }, ptr %t257 + store { ptr, i64, i64 } %t258, ptr %a259 call void @finch_str_copy(ptr %a260, ptr %a259) %t261 = load { ptr, i64, i64 }, ptr %a260 - 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.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.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 %panic3685, label %ok3686 -panic3685: - call void @finch_panic(ptr @.str.2337, i64 1512, ptr @.str.2338) + store { ptr, i64, i64 } %t261, ptr %a262 + %t263 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 + %t264 = load { ptr, i64, i64 }, ptr %t263 + %t265 = load ptr, ptr %a1 + %t266 = icmp eq ptr %t265, null + br i1 %t266, label %panic3897, label %ok3898 +panic3897: + call void @finch_panic(ptr @.str.2418, i64 1657, ptr @.str.2419) unreachable -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 - %t276 = getelementptr inbounds %S.ast.Node, ptr %a84, i32 0, i32 5 - %t277 = load %S.ast.Type, ptr %t276 - %t278 = load %S.ast.Node, ptr %a84 - %t279 = call %S.ast.Type @finch.gen.resolve(ptr %t275, %S.ast.Type %t277, %S.ast.Node %t278) - %t280 = getelementptr inbounds %S.gen.FnSig, ptr %a130, i32 0, i32 12 - store %S.ast.Type %t279, ptr %t280 - %t281 = getelementptr inbounds %S.ast.Node, ptr %a84, i32 0, i32 9 - %t282 = getelementptr inbounds %S.ast.Node, ptr %a84, i32 0, i32 9 - %t283 = getelementptr inbounds { ptr, i64, i64 }, ptr %t282, i32 0, i32 1 - %t284 = load i64, ptr %t283 - %t285 = sub i64 %t284, 1 - %t286 = load { ptr, i64, i64 }, ptr %t281 - %t287 = extractvalue { ptr, i64, i64 } %t286, 1 - %t288 = icmp uge i64 %t285, %t287 - br i1 %t288, label %range3687, label %inrange3688 -range3687: - call void @finch_panic_index(ptr @.str.2339, i64 1514, i64 %t285, i64 %t287) +ok3898: + %t267 = getelementptr inbounds %S.gen.Gen, ptr %t265, i32 0, i32 18 + store { ptr, i64, i64 } %t264, ptr %a268 + call void @finch.copy.arr_str(ptr %a269, ptr %a268) + %t270 = load { ptr, i64, i64 }, ptr %a269 + %t271 = load { ptr, i64, i64 }, ptr %t267 + store { ptr, i64, i64 } %t270, ptr %t267 + store { ptr, i64, i64 } %t271, ptr %a272 + call void @finch.drop.arr_str(ptr %a272) + %t273 = load { ptr, i64, i64 }, ptr %a3 + %t274 = load ptr, ptr %a1 + %t275 = icmp eq ptr %t274, null + br i1 %t275, label %panic3899, label %ok3900 +panic3899: + call void @finch_panic(ptr @.str.2420, i64 1658, ptr @.str.2421) unreachable -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 - store %S.ast.Node %t291, ptr %a292 - call void @finch.copy.S_ast_Node(ptr %a293, ptr %a292) - %t294 = load %S.ast.Node, ptr %a293 - store %S.ast.Node %t294, ptr %a295 - %t296 = getelementptr inbounds %S.ast.Node, ptr %a84, i32 0, i32 9 - %t297 = getelementptr inbounds { ptr, i64, i64 }, ptr %t296, i32 0, i32 1 - %t298 = load i64, ptr %t297 - %t299 = sub i64 %t298, 1 - store i64 0, ptr %a300 - br label %for.cond3689 -for.cond3689: - %t301 = load i64, ptr %a300 - %t302 = icmp slt i64 %t301, %t299 - br i1 %t302, label %for.body3690, label %for.end3692 -for.body3690: +ok3900: + %t276 = getelementptr inbounds %S.gen.Gen, ptr %t274, i32 0, i32 19 + store { ptr, i64, i64 } %t273, ptr %a277 + call void @finch.copy.arr_S_ast_Type(ptr %a278, ptr %a277) + %t279 = load { ptr, i64, i64 }, ptr %a278 + %t280 = load { ptr, i64, i64 }, ptr %t276 + store { ptr, i64, i64 } %t279, ptr %t276 + store { ptr, i64, i64 } %t280, ptr %a281 + call void @finch.drop.arr_S_ast_Type(ptr %a281) + %t282 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 + %t283 = load { ptr, i64, i64 }, ptr %t282 + %t284 = load ptr, ptr %a1 + %t285 = icmp eq ptr %t284, null + br i1 %t285, label %panic3901, label %ok3902 +panic3901: + call void @finch_panic(ptr @.str.2422, i64 1659, ptr @.str.2423) + unreachable +ok3902: + %t286 = getelementptr inbounds %S.gen.Gen, ptr %t284, i32 0, i32 14 + store { ptr, i64, i64 } %t283, ptr %a287 + call void @finch_str_copy(ptr %a288, ptr %a287) + %t289 = load { ptr, i64, i64 }, ptr %a288 + %t290 = load { ptr, i64, i64 }, ptr %t286 + store { ptr, i64, i64 } %t289, ptr %t286 + store { ptr, i64, i64 } %t290, ptr %a291 + call void @finch_str_drop(ptr %a291) + %t292 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 8 + %t293 = load { ptr, i64, i64 }, ptr %t292 + store { ptr, i64, i64 } { ptr @.str.2424, i64 17, i64 0 }, ptr %a295 + store { ptr, i64, i64 } %t293, ptr %a296 + 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.2425, i64 1, i64 0 }, ptr %a300 + call void @finch_str_concat(ptr %a298, ptr %a299, ptr %a300) + store { ptr, i64, i64 } %t297, ptr %a301 + call void @finch_str_drop(ptr %a301) + %t302 = load { ptr, i64, i64 }, ptr %a298 %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 %range3693, label %inrange3694 -range3693: - call void @finch_panic_index(ptr @.str.2340, i64 1516, i64 %t305, i64 %t307) + %t304 = icmp eq ptr %t303, null + br i1 %t304, label %panic3903, label %ok3904 +panic3903: + call void @finch_panic(ptr @.str.2426, i64 1660, ptr @.str.2427) unreachable -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 - %t312 = load %S.ast.Type, ptr %t311 - %t313 = getelementptr inbounds %S.ast.Node, ptr %a84, i32 0, i32 9 - %t314 = load i64, ptr %a300 - %t315 = load { ptr, i64, i64 }, ptr %t313 - %t316 = extractvalue { ptr, i64, i64 } %t315, 1 - %t317 = icmp uge i64 %t314, %t316 - br i1 %t317, label %range3695, label %inrange3696 -range3695: - call void @finch_panic_index(ptr @.str.2341, i64 1516, i64 %t314, i64 %t316) +ok3904: + %t305 = getelementptr inbounds %S.gen.Gen, ptr %t303, i32 0, i32 20 + %t306 = load { ptr, i64, i64 }, ptr %t305 + store { ptr, i64, i64 } %t302, ptr %t305 + store { ptr, i64, i64 } %t306, ptr %a307 + call void @finch_str_drop(ptr %a307) + %t308 = load ptr, ptr %a1 + %t309 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 5 + %t310 = load %S.ast.Type, ptr %t309 + %t311 = load %S.ast.Node, ptr %a87 + %t312 = call %S.ast.Type @finch.gen.resolve(ptr %t308, %S.ast.Type %t310, %S.ast.Node %t311) + %t313 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 12 + %t314 = load %S.ast.Type, ptr %t313 + store %S.ast.Type %t312, ptr %t313 + store %S.ast.Type %t314, ptr %a315 + call void @finch.drop.S_ast_Type(ptr %a315) + %t316 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 9 + %t317 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 9 + %t318 = getelementptr inbounds { ptr, i64, i64 }, ptr %t317, i32 0, i32 1 + %t319 = load i64, ptr %t318 + %t320 = sub i64 %t319, 1 + %t321 = load { ptr, i64, i64 }, ptr %t316 + %t322 = extractvalue { ptr, i64, i64 } %t321, 1 + %t323 = icmp uge i64 %t320, %t322 + br i1 %t323, label %range3905, label %inrange3906 +range3905: + call void @finch_panic_index(ptr @.str.2428, i64 1662, i64 %t320, i64 %t322) unreachable -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 - %t321 = call %S.ast.Type @finch.gen.resolve(ptr %t303, %S.ast.Type %t312, %S.ast.Node %t320) - store %S.ast.Type %t321, ptr %a322 - %t323 = getelementptr inbounds %S.gen.FnSig, ptr %a130, i32 0, i32 13 - %t324 = getelementptr inbounds { ptr, i64, i64 }, ptr %t323, i32 0, i32 1 - %t325 = load %S.ast.Type, ptr %a322 - store %S.ast.Type %t325, ptr %a326 - call void @finch.copy.S_ast_Type(ptr %a327, ptr %a326) - %t328 = load %S.ast.Type, ptr %a327 - %t329 = load i64, ptr %t324 - %t330 = add i64 %t329, 1 - call void @finch_arr_reserve(ptr %t323, i64 %t330, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t331 = load ptr, ptr %t323 - %t332 = getelementptr inbounds %S.ast.Type, ptr %t331, i64 %t329 - store %S.ast.Type %t328, ptr %t332 - store i64 %t330, ptr %t324 - %t333 = getelementptr inbounds %S.gen.FnSig, ptr %a130, i32 0, i32 14 - %t334 = getelementptr inbounds { ptr, i64, i64 }, ptr %t333, i32 0, i32 1 - %t335 = getelementptr inbounds %S.ast.Node, ptr %a84, i32 0, i32 9 - %t336 = load i64, ptr %a300 - %t337 = load { ptr, i64, i64 }, ptr %t335 - %t338 = extractvalue { ptr, i64, i64 } %t337, 1 - %t339 = icmp uge i64 %t336, %t338 - br i1 %t339, label %range3697, label %inrange3698 -range3697: - call void @finch_panic_index(ptr @.str.2342, i64 1518, i64 %t336, i64 %t338) +inrange3906: + %t324 = extractvalue { ptr, i64, i64 } %t321, 0 + %t325 = getelementptr inbounds %S.ast.Node, ptr %t324, i64 %t320 + %t326 = load %S.ast.Node, ptr %t325 + store %S.ast.Node %t326, ptr %a327 + call void @finch.copy.S_ast_Node(ptr %a328, ptr %a327) + %t329 = load %S.ast.Node, ptr %a328 + store %S.ast.Node %t329, ptr %a330 + %t331 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 9 + %t332 = getelementptr inbounds { ptr, i64, i64 }, ptr %t331, i32 0, i32 1 + %t333 = load i64, ptr %t332 + %t334 = sub i64 %t333, 1 + store i64 0, ptr %a335 + br label %for.cond3907 +for.cond3907: + %t336 = load i64, ptr %a335 + %t337 = icmp slt i64 %t336, %t334 + br i1 %t337, label %for.body3908, label %for.end3910 +for.body3908: + %t338 = load ptr, ptr %a1 + %t339 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 9 + %t340 = load i64, ptr %a335 + %t341 = load { ptr, i64, i64 }, ptr %t339 + %t342 = extractvalue { ptr, i64, i64 } %t341, 1 + %t343 = icmp uge i64 %t340, %t342 + br i1 %t343, label %range3911, label %inrange3912 +range3911: + call void @finch_panic_index(ptr @.str.2429, i64 1664, i64 %t340, i64 %t342) unreachable -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 - %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 = load i64, ptr %t334 - %t348 = add i64 %t347, 1 - call void @finch_arr_reserve(ptr %t333, i64 %t348, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t349 = load ptr, ptr %t333 - %t350 = getelementptr inbounds { ptr, i64, i64 }, ptr %t349, i64 %t347 - store { ptr, i64, i64 } %t346, ptr %t350 - store i64 %t348, ptr %t334 - %t351 = getelementptr inbounds %S.gen.FnSig, ptr %a130, i32 0, i32 15 - %t352 = getelementptr inbounds { ptr, i64, i64 }, ptr %t351, i32 0, i32 1 - %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.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 %range3702, label %inrange3703 -range3702: - call void @finch_panic_index(ptr @.str.2343, i64 1519, i64 %t358, i64 %t360) +inrange3912: + %t344 = extractvalue { ptr, i64, i64 } %t341, 0 + %t345 = getelementptr inbounds %S.ast.Node, ptr %t344, i64 %t340 + %t346 = getelementptr inbounds %S.ast.Node, ptr %t345, i32 0, i32 5 + %t347 = load %S.ast.Type, ptr %t346 + %t348 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 9 + %t349 = load i64, ptr %a335 + %t350 = load { ptr, i64, i64 }, ptr %t348 + %t351 = extractvalue { ptr, i64, i64 } %t350, 1 + %t352 = icmp uge i64 %t349, %t351 + br i1 %t352, label %range3913, label %inrange3914 +range3913: + call void @finch_panic_index(ptr @.str.2430, i64 1664, i64 %t349, i64 %t351) unreachable -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 - %t365 = load { ptr, i64, i64 }, ptr %t364 - %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.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)) - %t372 = load ptr, ptr %t351 - %t373 = getelementptr inbounds i1, ptr %t372, i64 %t370 - store i1 %t369, ptr %t373 - store i64 %t371, ptr %t352 - br label %for.step3691 -for.step3691: - %t374 = load i64, ptr %a300 - %t375 = add i64 %t374, 1 - store i64 %t375, ptr %a300 - 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 %panic3705, label %ok3706 -panic3705: - call void @finch_panic(ptr @.str.2344, i64 1521, ptr @.str.2345) +inrange3914: + %t353 = extractvalue { ptr, i64, i64 } %t350, 0 + %t354 = getelementptr inbounds %S.ast.Node, ptr %t353, i64 %t349 + %t355 = load %S.ast.Node, ptr %t354 + %t356 = call %S.ast.Type @finch.gen.resolve(ptr %t338, %S.ast.Type %t347, %S.ast.Node %t355) + store %S.ast.Type %t356, ptr %a357 + %t358 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 13 + %t359 = getelementptr inbounds { ptr, i64, i64 }, ptr %t358, i32 0, i32 1 + %t360 = load %S.ast.Type, ptr %a357 + store %S.ast.Type %t360, ptr %a361 + call void @finch.copy.S_ast_Type(ptr %a362, ptr %a361) + %t363 = load %S.ast.Type, ptr %a362 + %t364 = load i64, ptr %t359 + %t365 = add i64 %t364, 1 + call void @finch_arr_reserve(ptr %t358, i64 %t365, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) + %t366 = load ptr, ptr %t358 + %t367 = getelementptr inbounds %S.ast.Type, ptr %t366, i64 %t364 + store %S.ast.Type %t363, ptr %t367 + store i64 %t365, ptr %t359 + %t368 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 14 + %t369 = getelementptr inbounds { ptr, i64, i64 }, ptr %t368, i32 0, i32 1 + %t370 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 9 + %t371 = load i64, ptr %a335 + %t372 = load { ptr, i64, i64 }, ptr %t370 + %t373 = extractvalue { ptr, i64, i64 } %t372, 1 + %t374 = icmp uge i64 %t371, %t373 + br i1 %t374, label %range3915, label %inrange3916 +range3915: + call void @finch_panic_index(ptr @.str.2431, i64 1666, i64 %t371, i64 %t373) unreachable -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) - %t382 = load { ptr, i64, i64 }, ptr %a381 - store { ptr, i64, i64 } %t382, ptr %t379 - %t383 = load { ptr, i64, i64 }, ptr %a222 - %t384 = load ptr, ptr %a1 - %t385 = icmp eq ptr %t384, null - br i1 %t385, label %panic3707, label %ok3708 -panic3707: - call void @finch_panic(ptr @.str.2346, i64 1522, ptr @.str.2347) - unreachable -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) - %t389 = load { ptr, i64, i64 }, ptr %a388 - store { ptr, i64, i64 } %t389, ptr %t386 - %t390 = load { ptr, i64, i64 }, ptr %a230 +inrange3916: + %t375 = extractvalue { ptr, i64, i64 } %t372, 0 + %t376 = getelementptr inbounds %S.ast.Node, ptr %t375, i64 %t371 + %t377 = getelementptr inbounds %S.ast.Node, ptr %t376, i32 0, i32 1 + %t378 = load { ptr, i64, i64 }, ptr %t377 + store { ptr, i64, i64 } %t378, ptr %a379 + call void @finch_str_copy(ptr %a380, ptr %a379) + %t381 = load { ptr, i64, i64 }, ptr %a380 + %t382 = load i64, ptr %t369 + %t383 = add i64 %t382, 1 + call void @finch_arr_reserve(ptr %t368, i64 %t383, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t384 = load ptr, ptr %t368 + %t385 = getelementptr inbounds { ptr, i64, i64 }, ptr %t384, i64 %t382 + store { ptr, i64, i64 } %t381, ptr %t385 + store i64 %t383, ptr %t369 + %t386 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 15 + %t387 = getelementptr inbounds { ptr, i64, i64 }, ptr %t386, i32 0, i32 1 + %t388 = load ptr, ptr %a1 + %t389 = load %S.ast.Type, ptr %a357 + %t390 = call i1 @finch.gen.owning(ptr %t388, %S.ast.Type %t389) + br label %logic.from3917 +logic.from3917: + br i1 %t390, label %logic.rhs3918, label %logic.end3919 +logic.rhs3918: %t391 = load ptr, ptr %a1 - %t392 = icmp eq ptr %t391, null - br i1 %t392, label %panic3709, label %ok3710 -panic3709: - call void @finch_panic(ptr @.str.2348, i64 1523, ptr @.str.2349) + %t392 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 9 + %t393 = load i64, ptr %a335 + %t394 = load { ptr, i64, i64 }, ptr %t392 + %t395 = extractvalue { ptr, i64, i64 } %t394, 1 + %t396 = icmp uge i64 %t393, %t395 + br i1 %t396, label %range3920, label %inrange3921 +range3920: + call void @finch_panic_index(ptr @.str.2432, i64 1667, i64 %t393, i64 %t395) unreachable -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) - %t396 = load { ptr, i64, i64 }, ptr %a395 - store { ptr, i64, i64 } %t396, ptr %t393 - %t397 = load { ptr, i64, i64 }, ptr %a238 - %t398 = load ptr, ptr %a1 - %t399 = icmp eq ptr %t398, null - br i1 %t399, label %panic3711, label %ok3712 -panic3711: - call void @finch_panic(ptr @.str.2350, i64 1524, ptr @.str.2351) +inrange3921: + %t397 = extractvalue { ptr, i64, i64 } %t394, 0 + %t398 = getelementptr inbounds %S.ast.Node, ptr %t397, i64 %t393 + %t399 = getelementptr inbounds %S.ast.Node, ptr %t398, i32 0, i32 1 + %t400 = load { ptr, i64, i64 }, ptr %t399 + %t401 = load %S.ast.Node, ptr %a330 + %t402 = call i1 @finch.gen.mutates(ptr %t391, { ptr, i64, i64 } %t400, %S.ast.Node %t401) + %t403 = xor i1 %t402, true + br label %logic.rend3922 +logic.rend3922: + br label %logic.end3919 +logic.end3919: + %t404 = phi i1 [ false, %logic.from3917 ], [ %t403, %logic.rend3922 ] + %t405 = load i64, ptr %t387 + %t406 = add i64 %t405, 1 + call void @finch_arr_reserve(ptr %t386, i64 %t406, i64 ptrtoint (ptr getelementptr (i1, ptr null, i32 1) to i64)) + %t407 = load ptr, ptr %t386 + %t408 = getelementptr inbounds i1, ptr %t407, i64 %t405 + store i1 %t404, ptr %t408 + store i64 %t406, ptr %t387 + call void @finch.drop.S_ast_Type(ptr %a357) + br label %for.step3909 +for.step3909: + %t409 = load i64, ptr %a335 + %t410 = add i64 %t409, 1 + store i64 %t410, ptr %a335 + br label %for.cond3907 +for.end3910: + %t411 = load { ptr, i64, i64 }, ptr %a238 + %t412 = load ptr, ptr %a1 + %t413 = icmp eq ptr %t412, null + br i1 %t413, label %panic3923, label %ok3924 +panic3923: + call void @finch_panic(ptr @.str.2433, i64 1669, ptr @.str.2434) unreachable -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) - %t403 = load { ptr, i64, i64 }, ptr %a402 - store { ptr, i64, i64 } %t403, ptr %t400 - %t404 = load ptr, ptr %a1 - %t405 = icmp eq ptr %t404, null - br i1 %t405, label %panic3713, label %ok3714 -panic3713: - call void @finch_panic(ptr @.str.2352, i64 1525, ptr @.str.2353) +ok3924: + %t414 = getelementptr inbounds %S.gen.Gen, ptr %t412, i32 0, i32 18 + store { ptr, i64, i64 } %t411, ptr %a415 + call void @finch.copy.arr_str(ptr %a416, ptr %a415) + %t417 = load { ptr, i64, i64 }, ptr %a416 + %t418 = load { ptr, i64, i64 }, ptr %t414 + store { ptr, i64, i64 } %t417, ptr %t414 + store { ptr, i64, i64 } %t418, ptr %a419 + call void @finch.drop.arr_str(ptr %a419) + %t420 = load { ptr, i64, i64 }, ptr %a246 + %t421 = load ptr, ptr %a1 + %t422 = icmp eq ptr %t421, null + br i1 %t422, label %panic3925, label %ok3926 +panic3925: + call void @finch_panic(ptr @.str.2435, i64 1670, ptr @.str.2436) unreachable -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 - store %S.gen.FnSig %t408, ptr %a409 - call void @finch.copy.S_gen_FnSig(ptr %a410, ptr %a409) - %t411 = load %S.gen.FnSig, ptr %a410 - %t412 = load i64, ptr %t407 - %t413 = add i64 %t412, 1 - call void @finch_arr_reserve(ptr %t406, i64 %t413, i64 ptrtoint (ptr getelementptr (%S.gen.FnSig, ptr null, i32 1) to i64)) - %t414 = load ptr, ptr %t406 - %t415 = getelementptr inbounds %S.gen.FnSig, ptr %t414, i64 %t412 - store %S.gen.FnSig %t411, ptr %t415 - store i64 %t413, ptr %t407 - %t416 = load ptr, ptr %a1 - %t417 = icmp eq ptr %t416, null - br i1 %t417, label %panic3715, label %ok3716 -panic3715: - call void @finch_panic(ptr @.str.2354, i64 1526, ptr @.str.2355) +ok3926: + %t423 = getelementptr inbounds %S.gen.Gen, ptr %t421, i32 0, i32 19 + store { ptr, i64, i64 } %t420, ptr %a424 + call void @finch.copy.arr_S_ast_Type(ptr %a425, ptr %a424) + %t426 = load { ptr, i64, i64 }, ptr %a425 + %t427 = load { ptr, i64, i64 }, ptr %t423 + store { ptr, i64, i64 } %t426, ptr %t423 + store { ptr, i64, i64 } %t427, ptr %a428 + call void @finch.drop.arr_S_ast_Type(ptr %a428) + %t429 = load { ptr, i64, i64 }, ptr %a254 + %t430 = load ptr, ptr %a1 + %t431 = icmp eq ptr %t430, null + br i1 %t431, label %panic3927, label %ok3928 +panic3927: + call void @finch_panic(ptr @.str.2437, i64 1671, ptr @.str.2438) unreachable -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 - %t421 = sub i64 %t420, 1 - ret i64 %t421 +ok3928: + %t432 = getelementptr inbounds %S.gen.Gen, ptr %t430, i32 0, i32 14 + store { ptr, i64, i64 } %t429, ptr %a433 + call void @finch_str_copy(ptr %a434, ptr %a433) + %t435 = load { ptr, i64, i64 }, ptr %a434 + %t436 = load { ptr, i64, i64 }, ptr %t432 + store { ptr, i64, i64 } %t435, ptr %t432 + store { ptr, i64, i64 } %t436, ptr %a437 + call void @finch_str_drop(ptr %a437) + %t438 = load { ptr, i64, i64 }, ptr %a262 + %t439 = load ptr, ptr %a1 + %t440 = icmp eq ptr %t439, null + br i1 %t440, label %panic3929, label %ok3930 +panic3929: + call void @finch_panic(ptr @.str.2439, i64 1672, ptr @.str.2440) + unreachable +ok3930: + %t441 = getelementptr inbounds %S.gen.Gen, ptr %t439, i32 0, i32 20 + store { ptr, i64, i64 } %t438, ptr %a442 + call void @finch_str_copy(ptr %a443, ptr %a442) + %t444 = load { ptr, i64, i64 }, ptr %a443 + %t445 = load { ptr, i64, i64 }, ptr %t441 + store { ptr, i64, i64 } %t444, ptr %t441 + store { ptr, i64, i64 } %t445, ptr %a446 + call void @finch_str_drop(ptr %a446) + %t447 = load ptr, ptr %a1 + %t448 = icmp eq ptr %t447, null + br i1 %t448, label %panic3931, label %ok3932 +panic3931: + call void @finch_panic(ptr @.str.2441, i64 1673, ptr @.str.2442) + unreachable +ok3932: + %t449 = getelementptr inbounds %S.gen.Gen, ptr %t447, i32 0, i32 15 + %t450 = getelementptr inbounds { ptr, i64, i64 }, ptr %t449, i32 0, i32 1 + %t451 = load %S.gen.FnSig, ptr %a133 + store %S.gen.FnSig %t451, ptr %a452 + call void @finch.copy.S_gen_FnSig(ptr %a453, ptr %a452) + %t454 = load %S.gen.FnSig, ptr %a453 + %t455 = load i64, ptr %t450 + %t456 = add i64 %t455, 1 + call void @finch_arr_reserve(ptr %t449, i64 %t456, i64 ptrtoint (ptr getelementptr (%S.gen.FnSig, ptr null, i32 1) to i64)) + %t457 = load ptr, ptr %t449 + %t458 = getelementptr inbounds %S.gen.FnSig, ptr %t457, i64 %t455 + store %S.gen.FnSig %t454, ptr %t458 + store i64 %t456, ptr %t450 + %t459 = load ptr, ptr %a1 + %t460 = icmp eq ptr %t459, null + br i1 %t460, label %panic3933, label %ok3934 +panic3933: + call void @finch_panic(ptr @.str.2443, i64 1674, ptr @.str.2444) + unreachable +ok3934: + %t461 = getelementptr inbounds %S.gen.Gen, ptr %t459, i32 0, i32 15 + %t462 = getelementptr inbounds { ptr, i64, i64 }, ptr %t461, i32 0, i32 1 + %t463 = load i64, ptr %t462 + %t464 = sub i64 %t463, 1 + call void @finch.drop.S_ast_Node(ptr %a330) + call void @finch_str_drop(ptr %a262) + call void @finch_str_drop(ptr %a254) + call void @finch.drop.arr_S_ast_Type(ptr %a246) + call void @finch.drop.arr_str(ptr %a238) + call void @finch.drop.S_gen_FnSig(ptr %a133) + call void @finch.drop.S_ast_Node(ptr %a87) + call void @finch_str_drop(ptr %a39) + call void @finch.drop.S_gen_Template(ptr %a19) + ret i64 %t464 } define internal void @finch.gen.bindType(ptr %p0, %S.ast.Type %p1, %S.ast.Type %p2, { ptr, i64, i64 } %p3, ptr %p4) { @@ -35339,28 +41243,29 @@ entry: %a58 = alloca i64, align 16 %a80 = alloca %S.ast.Type, align 16 %a81 = alloca %S.ast.Type, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = 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 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca %S.gen.StructDef, align 16 - %a229 = alloca %S.gen.StructDef, align 16 + %a84 = alloca %S.ast.Type, 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 { ptr, i64, i64 }, align 16 + %a109 = alloca { ptr, i64, i64 }, align 16 + %a110 = alloca { ptr, i64, i64 }, align 16 + %a123 = alloca { ptr, i64, i64 }, align 16 + %a124 = alloca { ptr, i64, i64 }, align 16 + %a152 = alloca { ptr, i64, i64 }, align 16 + %a153 = alloca { ptr, i64, i64 }, align 16 + %a158 = alloca { ptr, i64, i64 }, align 16 + %a159 = alloca { ptr, i64, i64 }, align 16 + %a199 = alloca { ptr, i64, i64 }, align 16 + %a200 = alloca { ptr, i64, i64 }, align 16 + %a210 = alloca { ptr, i64, i64 }, align 16 + %a211 = alloca { ptr, i64, i64 }, align 16 + %a230 = alloca %S.gen.StructDef, align 16 %a231 = alloca %S.gen.StructDef, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca i64, align 16 + %a233 = alloca %S.gen.StructDef, align 16 + %a238 = alloca { ptr, i64, i64 }, align 16 + %a239 = alloca { ptr, i64, i64 }, align 16 + %a253 = alloca i64, align 16 store ptr %p0, ptr %a1 store %S.ast.Type %p1, ptr %a2 store %S.ast.Type %p2, ptr %a3 @@ -35369,39 +41274,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.2356, i64 5, i64 0 }, ptr %a9 + store { ptr, i64, i64 } { ptr @.str.2445, 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.from3717 -logic.from3717: - br i1 %t11, label %logic.rhs3718, label %logic.end3719 -logic.rhs3718: + br label %logic.from3935 +logic.from3935: + br i1 %t11, label %logic.rhs3936, label %logic.end3937 +logic.rhs3936: %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.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: + br label %logic.rend3938 +logic.rend3938: + br label %logic.end3937 +logic.end3937: + %t16 = phi i1 [ false, %logic.from3935 ], [ %t15, %logic.rend3938 ] + br label %logic.from3939 +logic.from3939: + br i1 %t16, label %logic.rhs3940, label %logic.end3941 +logic.rhs3940: %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.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: + br label %logic.rend3942 +logic.rend3942: + br label %logic.end3941 +logic.end3941: + %t21 = phi i1 [ false, %logic.from3939 ], [ %t20, %logic.rend3942 ] + br label %logic.from3943 +logic.from3943: + br i1 %t21, label %logic.rhs3944, label %logic.end3945 +logic.rhs3944: %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 @@ -35409,36 +41314,36 @@ logic.rhs3726: %t26 = load i64, ptr %t22 %t27 = load ptr, ptr %a4 store i64 0, ptr %a28 - br label %find.cond3728 -find.cond3728: + br label %find.cond3946 +find.cond3946: %t29 = load i64, ptr %a28 %t30 = icmp slt i64 %t29, %t26 - br i1 %t30, label %find.body3729, label %find.end3732 -find.body3729: + br i1 %t30, label %find.body3947, label %find.end3950 +find.body3947: %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.hit3730, label %find.next3731 -find.hit3730: + br i1 %t36, label %find.hit3948, label %find.next3949 +find.hit3948: store i64 %t29, ptr %a25 - br label %find.end3732 -find.next3731: + br label %find.end3950 +find.next3949: %t37 = add i64 %t29, 1 store i64 %t37, ptr %a28 - br label %find.cond3728 -find.end3732: + br label %find.cond3946 +find.end3950: %t38 = load i64, ptr %a25 %t39 = icmp sge i64 %t38, 0 - 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: + br label %logic.rend3951 +logic.rend3951: + br label %logic.end3945 +logic.end3945: + %t40 = phi i1 [ false, %logic.from3943 ], [ %t39, %logic.rend3951 ] + br i1 %t40, label %then3952, label %endif3954 +then3952: %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 @@ -35446,434 +41351,472 @@ then3734: %t45 = load i64, ptr %t41 %t46 = load ptr, ptr %a4 store i64 0, ptr %a47 - br label %find.cond3737 -find.cond3737: + br label %find.cond3955 +find.cond3955: %t48 = load i64, ptr %a47 %t49 = icmp slt i64 %t48, %t45 - br i1 %t49, label %find.body3738, label %find.end3741 -find.body3738: + br i1 %t49, label %find.body3956, label %find.end3959 +find.body3956: %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.hit3739, label %find.next3740 -find.hit3739: + br i1 %t55, label %find.hit3957, label %find.next3958 +find.hit3957: store i64 %t48, ptr %a44 - br label %find.end3741 -find.next3740: + br label %find.end3959 +find.next3958: %t56 = add i64 %t48, 1 store i64 %t56, ptr %a47 - br label %find.cond3737 -find.end3741: + br label %find.cond3955 +find.end3959: %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 %panic3742, label %ok3743 -panic3742: - call void @finch_panic(ptr @.str.2357, i64 1533, ptr @.str.2358) + br i1 %t60, label %panic3960, label %ok3961 +panic3960: + call void @finch_panic(ptr @.str.2446, i64 1681, ptr @.str.2447) unreachable -ok3743: +ok3961: %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 %range3744, label %inrange3745 -range3744: - call void @finch_panic_index(ptr @.str.2359, i64 1533, i64 %t62, i64 %t64) + br i1 %t65, label %range3962, label %inrange3963 +range3962: + call void @finch_panic_index(ptr @.str.2448, i64 1681, i64 %t62, i64 %t64) unreachable -inrange3745: +inrange3963: %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 %then3746, label %endif3748 -then3746: + br i1 %t69, label %then3964, label %endif3966 +then3964: %t70 = load %S.ast.Type, ptr %a3 %t71 = load ptr, ptr %a5 %t72 = icmp eq ptr %t71, null - br i1 %t72, label %panic3749, label %ok3750 -panic3749: - call void @finch_panic(ptr @.str.2360, i64 1534, ptr @.str.2361) + br i1 %t72, label %panic3967, label %ok3968 +panic3967: + call void @finch_panic(ptr @.str.2449, i64 1682, ptr @.str.2450) unreachable -ok3750: +ok3968: %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 %range3751, label %inrange3752 -range3751: - call void @finch_panic_index(ptr @.str.2362, i64 1534, i64 %t74, i64 %t76) + br i1 %t77, label %range3969, label %inrange3970 +range3969: + call void @finch_panic_index(ptr @.str.2451, i64 1682, i64 %t74, i64 %t76) unreachable -inrange3752: +inrange3970: %t78 = extractvalue { ptr, i64, i64 } %t75, 0 %t79 = getelementptr inbounds %S.ast.Type, ptr %t78, i64 %t74 store %S.ast.Type %t70, ptr %a80 call void @finch.copy.S_ast_Type(ptr %a81, ptr %a80) %t82 = load %S.ast.Type, ptr %a81 + %t83 = load %S.ast.Type, ptr %t79 store %S.ast.Type %t82, ptr %t79 - %t83 = load ptr, ptr %a5 - %t84 = icmp eq ptr %t83, null - br i1 %t84, label %panic3753, label %ok3754 -panic3753: - call void @finch_panic(ptr @.str.2363, i64 1535, ptr @.str.2364) + store %S.ast.Type %t83, ptr %a84 + call void @finch.drop.S_ast_Type(ptr %a84) + %t85 = load ptr, ptr %a5 + %t86 = icmp eq ptr %t85, null + br i1 %t86, label %panic3971, label %ok3972 +panic3971: + call void @finch_panic(ptr @.str.2452, i64 1683, ptr @.str.2453) unreachable -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 %range3755, label %inrange3756 -range3755: - call void @finch_panic_index(ptr @.str.2365, i64 1535, i64 %t86, i64 %t88) +ok3972: + %t87 = getelementptr inbounds %S.gen.Binds, ptr %t85, i32 0, i32 1 + %t88 = load i64, ptr %a58 + %t89 = load { ptr, i64, i64 }, ptr %t87 + %t90 = extractvalue { ptr, i64, i64 } %t89, 1 + %t91 = icmp uge i64 %t88, %t90 + br i1 %t91, label %range3973, label %inrange3974 +range3973: + call void @finch_panic_index(ptr @.str.2454, i64 1683, i64 %t88, i64 %t90) unreachable -inrange3756: - %t90 = extractvalue { ptr, i64, i64 } %t87, 0 - %t91 = getelementptr inbounds i1, ptr %t90, i64 %t86 - store i1 true, ptr %t91 - br label %endif3748 -endif3748: +inrange3974: + %t92 = extractvalue { ptr, i64, i64 } %t89, 0 + %t93 = getelementptr inbounds i1, ptr %t92, i64 %t88 + store i1 true, ptr %t93 + br label %endif3966 +endif3966: ret void -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.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.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.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.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.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.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.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 +endif3954: + %t94 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 + %t95 = load { ptr, i64, i64 }, ptr %t94 + store { ptr, i64, i64 } %t95, ptr %a96 + store { ptr, i64, i64 } { ptr @.str.2455, i64 5, i64 0 }, ptr %a97 + %t98 = call i32 @finch_str_eq(ptr %a96, ptr %a97) + %t99 = icmp ne i32 %t98, 0 + br label %logic.from3975 +logic.from3975: + br i1 %t99, label %logic.end3977, label %logic.rhs3976 +logic.rhs3976: + %t100 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 + %t101 = load { ptr, i64, i64 }, ptr %t100 + store { ptr, i64, i64 } %t101, ptr %a102 + store { ptr, i64, i64 } { ptr @.str.2456, 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.rend3978 +logic.rend3978: + br label %logic.end3977 +logic.end3977: + %t106 = phi i1 [ true, %logic.from3975 ], [ %t105, %logic.rend3978 ] + br label %logic.from3979 +logic.from3979: + br i1 %t106, label %logic.end3981, label %logic.rhs3980 +logic.rhs3980: + %t107 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 + %t108 = load { ptr, i64, i64 }, ptr %t107 + store { ptr, i64, i64 } %t108, ptr %a109 + store { ptr, i64, i64 } { ptr @.str.2457, i64 5, i64 0 }, ptr %a110 + %t111 = call i32 @finch_str_eq(ptr %a109, ptr %a110) + %t112 = icmp ne i32 %t111, 0 + br label %logic.rend3982 +logic.rend3982: + br label %logic.end3981 +logic.end3981: + %t113 = phi i1 [ true, %logic.from3979 ], [ %t112, %logic.rend3982 ] + br label %logic.from3983 +logic.from3983: + br i1 %t113, label %logic.rhs3984, label %logic.end3985 +logic.rhs3984: + %t114 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t115 = getelementptr inbounds { ptr, i64, i64 }, ptr %t114, i32 0, i32 1 + %t116 = load i64, ptr %t115 + %t117 = icmp sgt i64 %t116, 0 + br label %logic.rend3986 +logic.rend3986: + br label %logic.end3985 +logic.end3985: + %t118 = phi i1 [ false, %logic.from3983 ], [ %t117, %logic.rend3986 ] + br label %logic.from3987 +logic.from3987: + br i1 %t118, label %logic.rhs3988, label %logic.end3989 +logic.rhs3988: + %t119 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 %t120 = load { ptr, i64, i64 }, ptr %t119 - store { ptr, i64, i64 } %t118, ptr %a121 - 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.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.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 %range3780, label %inrange3781 -range3780: - call void @finch_panic_index(ptr @.str.2369, i64 1540, i64 0, i64 %t134) + %t121 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 + %t122 = load { ptr, i64, i64 }, ptr %t121 + store { ptr, i64, i64 } %t120, ptr %a123 + store { ptr, i64, i64 } %t122, ptr %a124 + %t125 = call i32 @finch_str_eq(ptr %a123, ptr %a124) + %t126 = icmp ne i32 %t125, 0 + br label %logic.rend3990 +logic.rend3990: + br label %logic.end3989 +logic.end3989: + %t127 = phi i1 [ false, %logic.from3987 ], [ %t126, %logic.rend3990 ] + br label %logic.from3991 +logic.from3991: + br i1 %t127, label %logic.rhs3992, label %logic.end3993 +logic.rhs3992: + %t128 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 + %t129 = getelementptr inbounds { ptr, i64, i64 }, ptr %t128, i32 0, i32 1 + %t130 = load i64, ptr %t129 + %t131 = icmp sgt i64 %t130, 0 + br label %logic.rend3994 +logic.rend3994: + br label %logic.end3993 +logic.end3993: + %t132 = phi i1 [ false, %logic.from3991 ], [ %t131, %logic.rend3994 ] + br i1 %t132, label %then3995, label %endif3997 +then3995: + %t133 = load ptr, ptr %a1 + %t134 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t135 = load { ptr, i64, i64 }, ptr %t134 + %t136 = extractvalue { ptr, i64, i64 } %t135, 1 + %t137 = icmp uge i64 0, %t136 + br i1 %t137, label %range3998, label %inrange3999 +range3998: + call void @finch_panic_index(ptr @.str.2458, i64 1688, i64 0, i64 %t136) unreachable -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 - %t139 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t140 = load { ptr, i64, i64 }, ptr %t139 - %t141 = extractvalue { ptr, i64, i64 } %t140, 1 - %t142 = icmp uge i64 0, %t141 - br i1 %t142, label %range3782, label %inrange3783 -range3782: - call void @finch_panic_index(ptr @.str.2370, i64 1540, i64 0, i64 %t141) +inrange3999: + %t138 = extractvalue { ptr, i64, i64 } %t135, 0 + %t139 = getelementptr inbounds %S.ast.Type, ptr %t138, i64 0 + %t140 = load %S.ast.Type, ptr %t139 + %t141 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 + %t142 = load { ptr, i64, i64 }, ptr %t141 + %t143 = extractvalue { ptr, i64, i64 } %t142, 1 + %t144 = icmp uge i64 0, %t143 + br i1 %t144, label %range4000, label %inrange4001 +range4000: + call void @finch_panic_index(ptr @.str.2459, i64 1688, i64 0, i64 %t143) unreachable -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 - %t146 = load { ptr, i64, i64 }, ptr %a4 - %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) +inrange4001: + %t145 = extractvalue { ptr, i64, i64 } %t142, 0 + %t146 = getelementptr inbounds %S.ast.Type, ptr %t145, i64 0 + %t147 = load %S.ast.Type, ptr %t146 + %t148 = load { ptr, i64, i64 }, ptr %a4 + %t149 = load ptr, ptr %a5 + call void @finch.gen.bindType(ptr %t133, %S.ast.Type %t140, %S.ast.Type %t147, { ptr, i64, i64 } %t148, ptr %t149) ret void -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.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.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.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.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 %range3791, label %inrange3792 -range3791: - call void @finch_panic_index(ptr @.str.2373, i64 1544, i64 0, i64 %t164) +endif3997: + %t150 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 + %t151 = load { ptr, i64, i64 }, ptr %t150 + store { ptr, i64, i64 } %t151, ptr %a152 + store { ptr, i64, i64 } { ptr @.str.2460, i64 3, i64 0 }, ptr %a153 + %t154 = call i32 @finch_str_eq(ptr %a152, ptr %a153) + %t155 = icmp ne i32 %t154, 0 + br label %logic.from4002 +logic.from4002: + br i1 %t155, label %logic.rhs4003, label %logic.end4004 +logic.rhs4003: + %t156 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 + %t157 = load { ptr, i64, i64 }, ptr %t156 + store { ptr, i64, i64 } %t157, ptr %a158 + store { ptr, i64, i64 } { ptr @.str.2461, i64 3, i64 0 }, ptr %a159 + %t160 = call i32 @finch_str_eq(ptr %a158, ptr %a159) + %t161 = icmp ne i32 %t160, 0 + br label %logic.rend4005 +logic.rend4005: + br label %logic.end4004 +logic.end4004: + %t162 = phi i1 [ false, %logic.from4002 ], [ %t161, %logic.rend4005 ] + br i1 %t162, label %then4006, label %endif4008 +then4006: + %t163 = load ptr, ptr %a1 + %t164 = getelementptr inbounds %S.ast.Type, ptr %a2, 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 %range4009, label %inrange4010 +range4009: + call void @finch_panic_index(ptr @.str.2462, i64 1692, i64 0, i64 %t166) unreachable -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 - %t169 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t170 = load { ptr, i64, i64 }, ptr %t169 - %t171 = extractvalue { ptr, i64, i64 } %t170, 1 - %t172 = icmp uge i64 0, %t171 - br i1 %t172, label %range3793, label %inrange3794 -range3793: - call void @finch_panic_index(ptr @.str.2374, i64 1544, i64 0, i64 %t171) +inrange4010: + %t168 = extractvalue { ptr, i64, i64 } %t165, 0 + %t169 = getelementptr inbounds %S.ast.Type, ptr %t168, i64 0 + %t170 = load %S.ast.Type, ptr %t169 + %t171 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 + %t172 = load { ptr, i64, i64 }, ptr %t171 + %t173 = extractvalue { ptr, i64, i64 } %t172, 1 + %t174 = icmp uge i64 0, %t173 + br i1 %t174, label %range4011, label %inrange4012 +range4011: + call void @finch_panic_index(ptr @.str.2463, i64 1692, i64 0, i64 %t173) unreachable -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 - %t176 = load { ptr, i64, i64 }, ptr %a4 - %t177 = load ptr, ptr %a5 - call void @finch.gen.bindType(ptr %t161, %S.ast.Type %t168, %S.ast.Type %t175, { ptr, i64, i64 } %t176, ptr %t177) - %t178 = load ptr, ptr %a1 - %t179 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t180 = load { ptr, i64, i64 }, ptr %t179 - %t181 = extractvalue { ptr, i64, i64 } %t180, 1 - %t182 = icmp uge i64 1, %t181 - br i1 %t182, label %range3795, label %inrange3796 -range3795: - call void @finch_panic_index(ptr @.str.2375, i64 1545, i64 1, i64 %t181) +inrange4012: + %t175 = extractvalue { ptr, i64, i64 } %t172, 0 + %t176 = getelementptr inbounds %S.ast.Type, ptr %t175, i64 0 + %t177 = load %S.ast.Type, ptr %t176 + %t178 = load { ptr, i64, i64 }, ptr %a4 + %t179 = load ptr, ptr %a5 + call void @finch.gen.bindType(ptr %t163, %S.ast.Type %t170, %S.ast.Type %t177, { ptr, i64, i64 } %t178, ptr %t179) + %t180 = load ptr, ptr %a1 + %t181 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t182 = load { ptr, i64, i64 }, ptr %t181 + %t183 = extractvalue { ptr, i64, i64 } %t182, 1 + %t184 = icmp uge i64 1, %t183 + br i1 %t184, label %range4013, label %inrange4014 +range4013: + call void @finch_panic_index(ptr @.str.2464, i64 1693, i64 1, i64 %t183) unreachable -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 - %t186 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t187 = load { ptr, i64, i64 }, ptr %t186 - %t188 = extractvalue { ptr, i64, i64 } %t187, 1 - %t189 = icmp uge i64 1, %t188 - br i1 %t189, label %range3797, label %inrange3798 -range3797: - call void @finch_panic_index(ptr @.str.2376, i64 1545, i64 1, i64 %t188) +inrange4014: + %t185 = extractvalue { ptr, i64, i64 } %t182, 0 + %t186 = getelementptr inbounds %S.ast.Type, ptr %t185, i64 1 + %t187 = load %S.ast.Type, ptr %t186 + %t188 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 + %t189 = load { ptr, i64, i64 }, ptr %t188 + %t190 = extractvalue { ptr, i64, i64 } %t189, 1 + %t191 = icmp uge i64 1, %t190 + br i1 %t191, label %range4015, label %inrange4016 +range4015: + call void @finch_panic_index(ptr @.str.2465, i64 1693, i64 1, i64 %t190) unreachable -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 - %t193 = load { ptr, i64, i64 }, ptr %a4 - %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) +inrange4016: + %t192 = extractvalue { ptr, i64, i64 } %t189, 0 + %t193 = getelementptr inbounds %S.ast.Type, ptr %t192, i64 1 + %t194 = load %S.ast.Type, ptr %t193 + %t195 = load { ptr, i64, i64 }, ptr %a4 + %t196 = load ptr, ptr %a5 + call void @finch.gen.bindType(ptr %t180, %S.ast.Type %t187, %S.ast.Type %t194, { ptr, i64, i64 } %t195, ptr %t196) ret void -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.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.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.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.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.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 %panic3810, label %ok3811 -panic3810: - call void @finch_panic(ptr @.str.2379, i64 1549, ptr @.str.2380) +endif4008: + %t197 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 + %t198 = load { ptr, i64, i64 }, ptr %t197 + store { ptr, i64, i64 } %t198, ptr %a199 + store { ptr, i64, i64 } { ptr @.str.2466, i64 5, i64 0 }, ptr %a200 + %t201 = call i32 @finch_str_eq(ptr %a199, ptr %a200) + %t202 = icmp ne i32 %t201, 0 + br label %logic.from4017 +logic.from4017: + br i1 %t202, label %logic.rhs4018, label %logic.end4019 +logic.rhs4018: + %t203 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t204 = getelementptr inbounds { ptr, i64, i64 }, ptr %t203, i32 0, i32 1 + %t205 = load i64, ptr %t204 + %t206 = icmp sgt i64 %t205, 0 + br label %logic.rend4020 +logic.rend4020: + br label %logic.end4019 +logic.end4019: + %t207 = phi i1 [ false, %logic.from4017 ], [ %t206, %logic.rend4020 ] + br label %logic.from4021 +logic.from4021: + br i1 %t207, label %logic.rhs4022, label %logic.end4023 +logic.rhs4022: + %t208 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 + %t209 = load { ptr, i64, i64 }, ptr %t208 + store { ptr, i64, i64 } %t209, ptr %a210 + store { ptr, i64, i64 } { ptr @.str.2467, i64 6, i64 0 }, ptr %a211 + %t212 = call i32 @finch_str_eq(ptr %a210, ptr %a211) + %t213 = icmp ne i32 %t212, 0 + br label %logic.rend4024 +logic.rend4024: + br label %logic.end4023 +logic.end4023: + %t214 = phi i1 [ false, %logic.from4021 ], [ %t213, %logic.rend4024 ] + br i1 %t214, label %then4025, label %endif4027 +then4025: + %t215 = load ptr, ptr %a1 + %t216 = icmp eq ptr %t215, null + br i1 %t216, label %panic4028, label %ok4029 +panic4028: + call void @finch_panic(ptr @.str.2468, i64 1697, ptr @.str.2469) unreachable -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 - %t218 = load { ptr, i64, i64 }, ptr %t217 - %t219 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 2 +ok4029: + %t217 = getelementptr inbounds %S.gen.Gen, ptr %t215, i32 0, i32 16 + %t218 = load ptr, ptr %a1 + %t219 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 3 %t220 = load { ptr, i64, i64 }, ptr %t219 - %t221 = call i64 @finch.gen.findStruct(ptr %t216, { ptr, i64, i64 } %t218, { ptr, i64, i64 } %t220) - %t222 = load { ptr, i64, i64 }, ptr %t215 - %t223 = extractvalue { ptr, i64, i64 } %t222, 1 - %t224 = icmp uge i64 %t221, %t223 - br i1 %t224, label %range3812, label %inrange3813 -range3812: - call void @finch_panic_index(ptr @.str.2381, i64 1549, i64 %t221, i64 %t223) + %t221 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 2 + %t222 = load { ptr, i64, i64 }, ptr %t221 + %t223 = call i64 @finch.gen.findStruct(ptr %t218, { ptr, i64, i64 } %t220, { ptr, i64, i64 } %t222) + %t224 = load { ptr, i64, i64 }, ptr %t217 + %t225 = extractvalue { ptr, i64, i64 } %t224, 1 + %t226 = icmp uge i64 %t223, %t225 + br i1 %t226, label %range4030, label %inrange4031 +range4030: + call void @finch_panic_index(ptr @.str.2470, i64 1697, i64 %t223, i64 %t225) unreachable -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 - store %S.gen.StructDef %t227, ptr %a228 - call void @finch.copy.S_gen_StructDef(ptr %a229, ptr %a228) - %t230 = load %S.gen.StructDef, ptr %a229 - store %S.gen.StructDef %t230, ptr %a231 - %t232 = getelementptr inbounds %S.gen.StructDef, ptr %a231, i32 0, i32 5 - %t233 = load { ptr, i64, i64 }, ptr %t232 - %t234 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 +inrange4031: + %t227 = extractvalue { ptr, i64, i64 } %t224, 0 + %t228 = getelementptr inbounds %S.gen.StructDef, ptr %t227, i64 %t223 + %t229 = load %S.gen.StructDef, ptr %t228 + store %S.gen.StructDef %t229, ptr %a230 + call void @finch.copy.S_gen_StructDef(ptr %a231, ptr %a230) + %t232 = load %S.gen.StructDef, ptr %a231 + store %S.gen.StructDef %t232, ptr %a233 + %t234 = getelementptr inbounds %S.gen.StructDef, ptr %a233, i32 0, i32 5 %t235 = load { ptr, i64, i64 }, ptr %t234 - store { ptr, i64, i64 } %t233, ptr %a236 - 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.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 - %t243 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %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.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.cond3821 -for.cond3821: - %t252 = load i64, ptr %a251 - %t253 = icmp slt i64 %t252, %t250 - 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 %range3825, label %inrange3826 -range3825: - call void @finch_panic_index(ptr @.str.2382, i64 1552, i64 %t256, i64 %t258) + %t236 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 + %t237 = load { ptr, i64, i64 }, ptr %t236 + store { ptr, i64, i64 } %t235, ptr %a238 + store { ptr, i64, i64 } %t237, ptr %a239 + %t240 = call i32 @finch_str_eq(ptr %a238, ptr %a239) + %t241 = icmp ne i32 %t240, 0 + br label %logic.from4032 +logic.from4032: + br i1 %t241, label %logic.rhs4033, label %logic.end4034 +logic.rhs4033: + %t242 = getelementptr inbounds %S.gen.StructDef, ptr %a233, i32 0, i32 7 + %t243 = getelementptr inbounds { ptr, i64, i64 }, ptr %t242, i32 0, i32 1 + %t244 = load i64, ptr %t243 + %t245 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t246 = getelementptr inbounds { ptr, i64, i64 }, ptr %t245, i32 0, i32 1 + %t247 = load i64, ptr %t246 + %t248 = icmp eq i64 %t244, %t247 + br label %logic.rend4035 +logic.rend4035: + br label %logic.end4034 +logic.end4034: + %t249 = phi i1 [ false, %logic.from4032 ], [ %t248, %logic.rend4035 ] + br i1 %t249, label %then4036, label %endif4038 +then4036: + %t250 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t251 = getelementptr inbounds { ptr, i64, i64 }, ptr %t250, i32 0, i32 1 + %t252 = load i64, ptr %t251 + store i64 0, ptr %a253 + br label %for.cond4039 +for.cond4039: + %t254 = load i64, ptr %a253 + %t255 = icmp slt i64 %t254, %t252 + br i1 %t255, label %for.body4040, label %for.end4042 +for.body4040: + %t256 = load ptr, ptr %a1 + %t257 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t258 = load i64, ptr %a253 + %t259 = load { ptr, i64, i64 }, ptr %t257 + %t260 = extractvalue { ptr, i64, i64 } %t259, 1 + %t261 = icmp uge i64 %t258, %t260 + br i1 %t261, label %range4043, label %inrange4044 +range4043: + call void @finch_panic_index(ptr @.str.2471, i64 1700, i64 %t258, i64 %t260) unreachable -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 - %t263 = getelementptr inbounds %S.gen.StructDef, ptr %a231, i32 0, i32 7 - %t264 = load i64, ptr %a251 - %t265 = load { ptr, i64, i64 }, ptr %t263 - %t266 = extractvalue { ptr, i64, i64 } %t265, 1 - %t267 = icmp uge i64 %t264, %t266 - br i1 %t267, label %range3827, label %inrange3828 -range3827: - call void @finch_panic_index(ptr @.str.2383, i64 1552, i64 %t264, i64 %t266) +inrange4044: + %t262 = extractvalue { ptr, i64, i64 } %t259, 0 + %t263 = getelementptr inbounds %S.ast.Type, ptr %t262, i64 %t258 + %t264 = load %S.ast.Type, ptr %t263 + %t265 = getelementptr inbounds %S.gen.StructDef, ptr %a233, i32 0, i32 7 + %t266 = load i64, ptr %a253 + %t267 = load { ptr, i64, i64 }, ptr %t265 + %t268 = extractvalue { ptr, i64, i64 } %t267, 1 + %t269 = icmp uge i64 %t266, %t268 + br i1 %t269, label %range4045, label %inrange4046 +range4045: + call void @finch_panic_index(ptr @.str.2472, i64 1700, i64 %t266, i64 %t268) unreachable -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.step3823 -for.step3823: - %t273 = load i64, ptr %a251 - %t274 = add i64 %t273, 1 - store i64 %t274, ptr %a251 - br label %for.cond3821 -for.end3824: - br label %endif3820 -endif3820: - br label %endif3809 -endif3809: +inrange4046: + %t270 = extractvalue { ptr, i64, i64 } %t267, 0 + %t271 = getelementptr inbounds %S.ast.Type, ptr %t270, i64 %t266 + %t272 = load %S.ast.Type, ptr %t271 + %t273 = load { ptr, i64, i64 }, ptr %a4 + %t274 = load ptr, ptr %a5 + call void @finch.gen.bindType(ptr %t256, %S.ast.Type %t264, %S.ast.Type %t272, { ptr, i64, i64 } %t273, ptr %t274) + br label %for.step4041 +for.step4041: + %t275 = load i64, ptr %a253 + %t276 = add i64 %t275, 1 + store i64 %t276, ptr %a253 + br label %for.cond4039 +for.end4042: + br label %endif4038 +endif4038: + call void @finch.drop.S_gen_StructDef(ptr %a233) + br label %endif4027 +endif4027: + ret void +} + +define internal void @finch.drop.arr_S_gen_Val(ptr %a) { +entry: + %a4 = alloca i64, align 16 + %t1 = load ptr, ptr %a + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 + %t3 = load i64, ptr %t2 + store i64 0, ptr %a4 + br label %n.cond4123 +n.cond4123: + %t5 = load i64, ptr %a4 + %t6 = icmp slt i64 %t5, %t3 + br i1 %t6, label %n.body4124, label %n.end4125 +n.body4124: + %t7 = getelementptr inbounds %S.gen.Val, ptr %t1, i64 %t5 + call void @finch.drop.S_gen_Val(ptr %t7) + %t8 = load i64, ptr %a4 + %t9 = add i64 %t8, 1 + store i64 %t9, ptr %a4 + br label %n.cond4123 +n.end4125: + call void @finch_arr_free(ptr %a) + ret void +} + +define internal void @finch.drop.S_gen_Binds(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.gen.Binds, ptr %a, i32 0, i32 0 + call void @finch.drop.arr_S_ast_Type(ptr %t1) + %t2 = getelementptr inbounds %S.gen.Binds, ptr %a, i32 0, i32 1 + call void @finch.drop.arr_bool(ptr %t2) ret void } @@ -35899,66 +41842,89 @@ entry: %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 { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 + %a86 = alloca { ptr, i64, i64 }, align 16 + %a87 = alloca { ptr, i64, i64 }, align 16 + %a88 = alloca { ptr, i64, i64 }, align 16 %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca i64, align 16 - %a107 = alloca %S.ast.Type, align 16 - %a130 = alloca %S.gen.Binds, align 16 - %a134 = alloca i64, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca i64, align 16 - %a169 = alloca %S.gen.Val, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = 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 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca %S.gen.Val, align 16 - %a212 = alloca %S.gen.Val, align 16 - %a237 = alloca i64, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a265 = 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 - %a286 = alloca i64, align 16 - %a297 = alloca %S.gen.FnSig, align 16 - %a298 = alloca %S.gen.FnSig, align 16 - %a300 = alloca %S.gen.FnSig, 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 - %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 + %a96 = alloca { ptr, i64, i64 }, align 16 + %a97 = 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 + %a102 = alloca { ptr, i64, i64 }, align 16 + %a105 = alloca i64, align 16 + %a113 = alloca %S.ast.Type, align 16 + %a132 = alloca %S.ast.Type, align 16 + %a137 = alloca %S.gen.Binds, align 16 + %a141 = alloca i64, align 16 + %a159 = alloca { ptr, i64, i64 }, align 16 + %a165 = alloca i64, align 16 + %a167 = alloca i64, align 16 + %a182 = alloca %S.gen.Val, align 16 + %a186 = alloca { ptr, i64, i64 }, align 16 + %a187 = alloca { ptr, i64, i64 }, align 16 + %a193 = alloca { ptr, i64, i64 }, align 16 + %a194 = alloca { ptr, i64, i64 }, align 16 + %a211 = alloca { ptr, i64, i64 }, align 16 + %a212 = alloca { ptr, i64, i64 }, align 16 + %a214 = alloca { ptr, i64, i64 }, align 16 + %a215 = alloca { ptr, i64, i64 }, align 16 + %a216 = alloca { ptr, i64, i64 }, align 16 + %a217 = 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 + %a222 = alloca { ptr, i64, i64 }, align 16 + %a224 = alloca { ptr, i64, i64 }, align 16 + %a227 = alloca %S.gen.Val, align 16 + %a228 = alloca %S.gen.Val, align 16 + %a255 = alloca i64, align 16 + %a277 = alloca { ptr, i64, i64 }, align 16 + %a278 = 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 + %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 + %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 + %a296 = alloca { ptr, i64, i64 }, align 16 + %a298 = alloca { ptr, i64, i64 }, align 16 + %a308 = alloca %S.ast.Type, align 16 + %a309 = alloca i64, align 16 + %a320 = alloca %S.gen.FnSig, align 16 + %a321 = alloca %S.gen.FnSig, align 16 + %a323 = alloca %S.gen.FnSig, align 16 + %a327 = alloca { ptr, i64, i64 }, align 16 + %a329 = alloca 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 + %a373 = alloca { ptr, i64, i64 }, align 16 + %a376 = alloca { ptr, i64, i64 }, align 16 + %a377 = alloca %S.gen.Val, align 16 + %a389 = alloca { ptr, i64, i64 }, align 16 + %a390 = alloca { ptr, i64, i64 }, align 16 + %a391 = alloca { ptr, i64, i64 }, align 16 + %a392 = alloca { ptr, i64, i64 }, align 16 + %a396 = alloca { ptr, i64, i64 }, align 16 + %a397 = alloca { ptr, i64, i64 }, align 16 + %a398 = alloca { ptr, i64, i64 }, align 16 + %a399 = alloca { ptr, i64, i64 }, align 16 + %a413 = alloca %S.gen.Val, align 16 + %a414 = alloca i64, align 16 + %a422 = alloca %S.gen.Val, align 16 store ptr %p0, ptr %a1 store %S.ast.Node %p1, ptr %a2 store i64 %p2, ptr %a3 @@ -35966,21 +41932,21 @@ entry: store { ptr, i64, i64 } %p4, ptr %a5 %t6 = load ptr, ptr %a1 %t7 = icmp eq ptr %t6, null - br i1 %t7, label %panic3829, label %ok3830 -panic3829: - call void @finch_panic(ptr @.str.2384, i64 1560, ptr @.str.2385) + br i1 %t7, label %panic4047, label %ok4048 +panic4047: + call void @finch_panic(ptr @.str.2473, i64 1708, ptr @.str.2474) unreachable -ok3830: - %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 16 +ok4048: + %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 17 %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 %range3831, label %inrange3832 -range3831: - call void @finch_panic_index(ptr @.str.2386, i64 1560, i64 %t9, i64 %t11) + br i1 %t12, label %range4049, label %inrange4050 +range4049: + call void @finch_panic_index(ptr @.str.2475, i64 1708, i64 %t9, i64 %t11) unreachable -inrange3832: +inrange4050: %t13 = extractvalue { ptr, i64, i64 } %t10, 0 %t14 = getelementptr inbounds %S.gen.Template, ptr %t13, i64 %t9 %t15 = load %S.gen.Template, ptr %t14 @@ -35990,22 +41956,22 @@ inrange3832: store %S.gen.Template %t18, ptr %a19 %t20 = load ptr, ptr %a1 %t21 = icmp eq ptr %t20, null - br i1 %t21, label %panic3833, label %ok3834 -panic3833: - call void @finch_panic(ptr @.str.2387, i64 1561, ptr @.str.2388) + br i1 %t21, label %panic4051, label %ok4052 +panic4051: + call void @finch_panic(ptr @.str.2476, i64 1709, ptr @.str.2477) unreachable -ok3834: +ok4052: %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 %range3835, label %inrange3836 -range3835: - call void @finch_panic_index(ptr @.str.2389, i64 1561, i64 %t24, i64 %t26) + br i1 %t27, label %range4053, label %inrange4054 +range4053: + call void @finch_panic_index(ptr @.str.2478, i64 1709, i64 %t24, i64 %t26) unreachable -inrange3836: +inrange4054: %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 @@ -36014,11 +41980,11 @@ inrange3836: %t33 = load { ptr, i64, i64 }, ptr %t30 %t34 = extractvalue { ptr, i64, i64 } %t33, 1 %t35 = icmp uge i64 %t32, %t34 - br i1 %t35, label %range3837, label %inrange3838 -range3837: - call void @finch_panic_index(ptr @.str.2390, i64 1561, i64 %t32, i64 %t34) + br i1 %t35, label %range4055, label %inrange4056 +range4055: + call void @finch_panic_index(ptr @.str.2479, i64 1709, i64 %t32, i64 %t34) unreachable -inrange3838: +inrange4056: %t36 = extractvalue { ptr, i64, i64 } %t33, 0 %t37 = getelementptr inbounds %S.ast.Node, ptr %t36, i64 %t32 %t38 = load %S.ast.Node, ptr %t37 @@ -36043,8 +42009,8 @@ inrange3838: %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 %then3839, label %endif3841 -then3839: + br i1 %t58, label %then4057, label %endif4059 +then4057: %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 @@ -36053,13 +42019,13 @@ then3839: %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 %then3842, label %endif3844 -then3842: + br i1 %t66, label %then4060, label %endif4062 +then4060: %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.2391, i64 7, i64 0 }, ptr %a72 + store { ptr, i64, i64 } { ptr @.str.2480, 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 @@ -36070,456 +42036,548 @@ then3842: store { ptr, i64, i64 } %t73, 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.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 - %t88 = getelementptr inbounds %S.ast.Type, ptr %t87, i32 0, i32 1 - %t89 = getelementptr inbounds { ptr, i64, i64 }, ptr %t88, i32 0, i32 1 - %t90 = load i64, ptr %t89 - call void @finch_str_from_int(ptr %a91, i64 %t90) - %t92 = load { ptr, i64, i64 }, ptr %a91 - store { ptr, i64, i64 } %t86, 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 - call void @finch.gen.fail(ptr %t67, %S.ast.Node %t68, { ptr, i64, i64 } %t96) - 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.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.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 - store %S.ast.Type %t106, ptr %a107 - %t108 = getelementptr inbounds { ptr, i64, i64 }, ptr %a53, i32 0, i32 1 - %t109 = load ptr, ptr %a1 - %t110 = load %S.ast.Type, ptr %a107 - %t111 = load %S.ast.Node, ptr %a2 - %t112 = call %S.ast.Type @finch.gen.resolve(ptr %t109, %S.ast.Type %t110, %S.ast.Node %t111) - %t113 = load i64, ptr %t108 - %t114 = add i64 %t113, 1 - call void @finch_arr_reserve(ptr %a53, i64 %t114, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t115 = load ptr, ptr %a53 - %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.step3847 -each.step3847: - %t117 = load i64, ptr %a99 - %t118 = add i64 %t117, 1 - store i64 %t118, ptr %a99 - 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.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.2394, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.2395, i64 0, i64 0 }) - ret %S.gen.Val %t129 -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.cond3849 -for.cond3849: - %t135 = load i64, ptr %a134 - %t136 = icmp slt i64 %t135, %t133 - 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.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)) - %t142 = load ptr, ptr %t137 - %t143 = getelementptr inbounds %S.ast.Type, ptr %t142, i64 %t140 - store %S.ast.Type %t139, ptr %t143 - store i64 %t141, ptr %t138 - %t144 = getelementptr inbounds %S.gen.Binds, ptr %a130, i32 0, i32 1 + store { ptr, i64, i64 } %t73, ptr %a82 + call void @finch_str_drop(ptr %a82) + store { ptr, i64, i64 } %t78, ptr %a83 + call void @finch_str_drop(ptr %a83) + %t84 = load { ptr, i64, i64 }, ptr %a79 + store { ptr, i64, i64 } %t84, ptr %a86 + store { ptr, i64, i64 } { ptr @.str.2481, i64 27, i64 0 }, ptr %a87 + call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) + store { ptr, i64, i64 } %t84, ptr %a88 + call void @finch_str_drop(ptr %a88) + %t89 = load { ptr, i64, i64 }, ptr %a85 + %t90 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5 + %t91 = getelementptr inbounds %S.ast.Type, ptr %t90, i32 0, i32 1 + %t92 = getelementptr inbounds { ptr, i64, i64 }, ptr %t91, i32 0, i32 1 + %t93 = load i64, ptr %t92 + call void @finch_str_from_int(ptr %a94, i64 %t93) + %t95 = load { ptr, i64, i64 }, ptr %a94 + store { ptr, i64, i64 } %t89, ptr %a97 + store { ptr, i64, i64 } %t95, ptr %a98 + call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) + store { ptr, i64, i64 } %t89, ptr %a99 + call void @finch_str_drop(ptr %a99) + store { ptr, i64, i64 } %t95, ptr %a100 + call void @finch_str_drop(ptr %a100) + %t101 = load { ptr, i64, i64 }, ptr %a96 + call void @finch.gen.fail(ptr %t67, %S.ast.Node %t68, { ptr, i64, i64 } %t101) + store { ptr, i64, i64 } %t101, ptr %a102 + call void @finch_str_drop(ptr %a102) + br label %endif4062 +endif4062: + %t103 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5 + %t104 = getelementptr inbounds %S.ast.Type, ptr %t103, i32 0, i32 1 + store i64 0, ptr %a105 + br label %each.cond4063 +each.cond4063: + %t106 = getelementptr inbounds { ptr, i64, i64 }, ptr %t104, i32 0, i32 1 + %t107 = load i64, ptr %t106 + %t108 = load i64, ptr %a105 + %t109 = icmp slt i64 %t108, %t107 + br i1 %t109, label %each.body4064, label %each.end4066 +each.body4064: + %t110 = load ptr, ptr %t104 + %t111 = getelementptr inbounds %S.ast.Type, ptr %t110, i64 %t108 + %t112 = load %S.ast.Type, ptr %t111 + store %S.ast.Type %t112, ptr %a113 + %t114 = getelementptr inbounds { ptr, i64, i64 }, ptr %a53, i32 0, i32 1 + %t115 = load ptr, ptr %a1 + %t116 = load %S.ast.Type, ptr %a113 + %t117 = load %S.ast.Node, ptr %a2 + %t118 = call %S.ast.Type @finch.gen.resolve(ptr %t115, %S.ast.Type %t116, %S.ast.Node %t117) + %t119 = load i64, ptr %t114 + %t120 = add i64 %t119, 1 + call void @finch_arr_reserve(ptr %a53, i64 %t120, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) + %t121 = load ptr, ptr %a53 + %t122 = getelementptr inbounds %S.ast.Type, ptr %t121, i64 %t119 + store %S.ast.Type %t118, ptr %t122 + store i64 %t120, ptr %t114 + br label %each.step4065 +each.step4065: + %t123 = load i64, ptr %a105 + %t124 = add i64 %t123, 1 + store i64 %t124, ptr %a105 + br label %each.cond4063 +each.end4066: + %t125 = load ptr, ptr %a1 + %t126 = load ptr, ptr %a1 + %t127 = load i64, ptr %a3 + %t128 = load { ptr, i64, i64 }, ptr %a53 + %t129 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.2482, i64 4, i64 0 }) + %t130 = load %S.ast.Node, ptr %a2 + %t131 = call i64 @finch.gen.instFn(ptr %t126, i64 %t127, { ptr, i64, i64 } %t128, %S.ast.Type %t129, %S.ast.Node %t130) + store %S.ast.Type %t129, ptr %a132 + call void @finch.drop.S_ast_Type(ptr %a132) + %t133 = load %S.ast.Node, ptr %a2 + %t134 = load i64, ptr %a4 + %t135 = load { ptr, i64, i64 }, ptr %a5 + %t136 = call %S.gen.Val @finch.gen.callFn(ptr %t125, i64 %t131, %S.ast.Node %t133, i64 %t134, { ptr, i64, i64 } %t135, { ptr, i64, i64 } { ptr @.str.2483, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.2484, i64 0, i64 0 }) + call void @finch.drop.arr_S_ast_Type(ptr %a53) + call void @finch.drop.S_ast_Node(ptr %a42) + call void @finch.drop.S_gen_Template(ptr %a19) + ret %S.gen.Val %t136 +endif4059: + store %S.gen.Binds zeroinitializer, ptr %a137 + %t138 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 + %t139 = getelementptr inbounds { ptr, i64, i64 }, ptr %t138, i32 0, i32 1 + %t140 = load i64, ptr %t139 + store i64 0, ptr %a141 + br label %for.cond4067 +for.cond4067: + %t142 = load i64, ptr %a141 + %t143 = icmp slt i64 %t142, %t140 + br i1 %t143, label %for.body4068, label %for.end4070 +for.body4068: + %t144 = getelementptr inbounds %S.gen.Binds, ptr %a137, i32 0, i32 0 %t145 = getelementptr inbounds { ptr, i64, i64 }, ptr %t144, i32 0, i32 1 - %t146 = load i64, ptr %t145 - %t147 = add i64 %t146, 1 - call void @finch_arr_reserve(ptr %t144, i64 %t147, i64 ptrtoint (ptr getelementptr (i1, ptr null, i32 1) to i64)) - %t148 = load ptr, ptr %t144 - %t149 = getelementptr inbounds i1, ptr %t148, i64 %t146 - store i1 false, ptr %t149 - store i64 %t147, ptr %t145 - br label %for.step3851 -for.step3851: - %t150 = load i64, ptr %a134 - %t151 = add i64 %t150, 1 - store i64 %t151, ptr %a134 - 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.cond3853 -for.cond3853: - %t155 = load i64, ptr %a154 - %t156 = icmp slt i64 %t155, %t153 - 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 - %t160 = load i64, ptr %a154 - %t161 = add i64 %t159, %t160 - %t162 = load { ptr, i64, i64 }, ptr %t158 - %t163 = extractvalue { ptr, i64, i64 } %t162, 1 - %t164 = icmp uge i64 %t161, %t163 - br i1 %t164, label %range3857, label %inrange3858 -range3857: - call void @finch_panic_index(ptr @.str.2397, i64 1581, i64 %t161, i64 %t163) + %t146 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.2485, i64 4, i64 0 }) + %t147 = load i64, ptr %t145 + %t148 = add i64 %t147, 1 + call void @finch_arr_reserve(ptr %t144, i64 %t148, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) + %t149 = load ptr, ptr %t144 + %t150 = getelementptr inbounds %S.ast.Type, ptr %t149, i64 %t147 + store %S.ast.Type %t146, ptr %t150 + store i64 %t148, ptr %t145 + %t151 = getelementptr inbounds %S.gen.Binds, ptr %a137, i32 0, i32 1 + %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %t151, i32 0, i32 1 + %t153 = load i64, ptr %t152 + %t154 = add i64 %t153, 1 + call void @finch_arr_reserve(ptr %t151, i64 %t154, i64 ptrtoint (ptr getelementptr (i1, ptr null, i32 1) to i64)) + %t155 = load ptr, ptr %t151 + %t156 = getelementptr inbounds i1, ptr %t155, i64 %t153 + store i1 false, ptr %t156 + store i64 %t154, ptr %t152 + br label %for.step4069 +for.step4069: + %t157 = load i64, ptr %a141 + %t158 = add i64 %t157, 1 + store i64 %t158, ptr %a141 + br label %for.cond4067 +for.end4070: + store { ptr, i64, i64 } zeroinitializer, ptr %a159 + %t160 = load ptr, ptr %a1 + %t161 = icmp eq ptr %t160, null + br i1 %t161, label %panic4071, label %ok4072 +panic4071: + call void @finch_panic(ptr @.str.2486, i64 1728, ptr @.str.2487) unreachable -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 - %t168 = call %S.gen.Val @finch.gen.expr(ptr %t157, %S.ast.Node %t167) - store %S.gen.Val %t168, ptr %a169 - %t170 = getelementptr inbounds %S.gen.Val, ptr %a169, i32 0, i32 1 - %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.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.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.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.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 - %t188 = load i64, ptr %a154 - %t189 = add i64 %t187, %t188 - %t190 = load { ptr, i64, i64 }, ptr %t186 - %t191 = extractvalue { ptr, i64, i64 } %t190, 1 - %t192 = icmp uge i64 %t189, %t191 - br i1 %t192, label %range3866, label %inrange3867 -range3866: - call void @finch_panic_index(ptr @.str.2400, i64 1583, i64 %t189, i64 %t191) +ok4072: + %t162 = getelementptr inbounds %S.gen.Gen, ptr %t160, i32 0, i32 11 + %t163 = getelementptr inbounds { ptr, i64, i64 }, ptr %t162, i32 0, i32 1 + %t164 = load i64, ptr %t163 + store i64 %t164, ptr %a165 + %t166 = load i64, ptr %a47 + store i64 0, ptr %a167 + br label %for.cond4073 +for.cond4073: + %t168 = load i64, ptr %a167 + %t169 = icmp slt i64 %t168, %t166 + br i1 %t169, label %for.body4074, label %for.end4076 +for.body4074: + %t170 = load ptr, ptr %a1 + %t171 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t172 = load i64, ptr %a4 + %t173 = load i64, ptr %a167 + %t174 = add i64 %t172, %t173 + %t175 = load { ptr, i64, i64 }, ptr %t171 + %t176 = extractvalue { ptr, i64, i64 } %t175, 1 + %t177 = icmp uge i64 %t174, %t176 + br i1 %t177, label %range4077, label %inrange4078 +range4077: + call void @finch_panic_index(ptr @.str.2488, i64 1730, i64 %t174, i64 %t176) unreachable -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.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.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.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 %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 - call void @finch.copy.S_gen_Val(ptr %a212, ptr %a211) - %t213 = load %S.gen.Val, ptr %a212 - %t214 = load i64, ptr %t209 - %t215 = add i64 %t214, 1 - call void @finch_arr_reserve(ptr %a152, i64 %t215, i64 ptrtoint (ptr getelementptr (%S.gen.Val, ptr null, i32 1) to i64)) - %t216 = load ptr, ptr %a152 - %t217 = getelementptr inbounds %S.gen.Val, ptr %t216, i64 %t214 - store %S.gen.Val %t213, ptr %t217 - store i64 %t215, ptr %t209 - %t218 = load ptr, ptr %a1 - %t219 = getelementptr inbounds %S.ast.Node, ptr %a42, i32 0, i32 9 - %t220 = load i64, ptr %a154 - %t221 = load { ptr, i64, i64 }, ptr %t219 - %t222 = extractvalue { ptr, i64, i64 } %t221, 1 - %t223 = icmp uge i64 %t220, %t222 - br i1 %t223, label %range3868, label %inrange3869 -range3868: - call void @finch_panic_index(ptr @.str.2404, i64 1586, i64 %t220, i64 %t222) +inrange4078: + %t178 = extractvalue { ptr, i64, i64 } %t175, 0 + %t179 = getelementptr inbounds %S.ast.Node, ptr %t178, i64 %t174 + %t180 = load %S.ast.Node, ptr %t179 + %t181 = call %S.gen.Val @finch.gen.expr(ptr %t170, %S.ast.Node %t180) + store %S.gen.Val %t181, ptr %a182 + %t183 = getelementptr inbounds %S.gen.Val, ptr %a182, i32 0, i32 1 + %t184 = getelementptr inbounds %S.ast.Type, ptr %t183, i32 0, i32 0 + %t185 = load { ptr, i64, i64 }, ptr %t184 + store { ptr, i64, i64 } %t185, ptr %a186 + store { ptr, i64, i64 } { ptr @.str.2489, i64 4, i64 0 }, ptr %a187 + %t188 = call i32 @finch_str_eq(ptr %a186, ptr %a187) + %t189 = icmp ne i32 %t188, 0 + br label %logic.from4079 +logic.from4079: + br i1 %t189, label %logic.end4081, label %logic.rhs4080 +logic.rhs4080: + %t190 = getelementptr inbounds %S.gen.Val, ptr %a182, i32 0, i32 1 + %t191 = getelementptr inbounds %S.ast.Type, ptr %t190, i32 0, i32 0 + %t192 = load { ptr, i64, i64 }, ptr %t191 + store { ptr, i64, i64 } %t192, ptr %a193 + store { ptr, i64, i64 } { ptr @.str.2490, i64 4, i64 0 }, ptr %a194 + %t195 = call i32 @finch_str_eq(ptr %a193, ptr %a194) + %t196 = icmp ne i32 %t195, 0 + br label %logic.rend4082 +logic.rend4082: + br label %logic.end4081 +logic.end4081: + %t197 = phi i1 [ true, %logic.from4079 ], [ %t196, %logic.rend4082 ] + br i1 %t197, label %then4083, label %endif4085 +then4083: + %t198 = load ptr, ptr %a1 + %t199 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t200 = load i64, ptr %a4 + %t201 = load i64, ptr %a167 + %t202 = add i64 %t200, %t201 + %t203 = load { ptr, i64, i64 }, ptr %t199 + %t204 = extractvalue { ptr, i64, i64 } %t203, 1 + %t205 = icmp uge i64 %t202, %t204 + br i1 %t205, label %range4086, label %inrange4087 +range4086: + call void @finch_panic_index(ptr @.str.2491, i64 1732, i64 %t202, i64 %t204) unreachable -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 - %t227 = load %S.ast.Type, ptr %t226 - %t228 = getelementptr inbounds %S.gen.Val, ptr %a169, i32 0, i32 1 - %t229 = load %S.ast.Type, ptr %t228 - %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.step3855 -for.step3855: - %t232 = load i64, ptr %a154 - %t233 = add i64 %t232, 1 - store i64 %t233, ptr %a154 - 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.cond3870 -for.cond3870: - %t238 = load i64, ptr %a237 - %t239 = icmp slt i64 %t238, %t236 - 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 %range3874, label %inrange3875 -range3874: - call void @finch_panic_index(ptr @.str.2405, i64 1589, i64 %t241, i64 %t243) +inrange4087: + %t206 = extractvalue { ptr, i64, i64 } %t203, 0 + %t207 = getelementptr inbounds %S.ast.Node, ptr %t206, i64 %t202 + %t208 = load %S.ast.Node, ptr %t207 + %t209 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 + %t210 = getelementptr inbounds { ptr, i64, i64 }, ptr %t209, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.2493, i64 2, i64 0 }, ptr %a211 + call void @finch_str_join(ptr %a212, ptr %t209, ptr %a211) + %t213 = load { ptr, i64, i64 }, ptr %a212 + store { ptr, i64, i64 } { ptr @.str.2492, i64 29, i64 0 }, ptr %a215 + store { ptr, i64, i64 } %t213, ptr %a216 + call void @finch_str_concat(ptr %a214, ptr %a215, ptr %a216) + store { ptr, i64, i64 } %t213, ptr %a217 + call void @finch_str_drop(ptr %a217) + %t218 = load { ptr, i64, i64 }, ptr %a214 + store { ptr, i64, i64 } %t218, ptr %a220 + store { ptr, i64, i64 } { ptr @.str.2494, i64 5, i64 0 }, ptr %a221 + call void @finch_str_concat(ptr %a219, ptr %a220, ptr %a221) + store { ptr, i64, i64 } %t218, ptr %a222 + call void @finch_str_drop(ptr %a222) + %t223 = load { ptr, i64, i64 }, ptr %a219 + call void @finch.gen.fail(ptr %t198, %S.ast.Node %t208, { ptr, i64, i64 } %t223) + store { ptr, i64, i64 } %t223, ptr %a224 + call void @finch_str_drop(ptr %a224) + br label %endif4085 +endif4085: + %t225 = getelementptr inbounds { ptr, i64, i64 }, ptr %a159, i32 0, i32 1 + %t226 = load %S.gen.Val, ptr %a182 + store %S.gen.Val %t226, ptr %a227 + call void @finch.copy.S_gen_Val(ptr %a228, ptr %a227) + %t229 = load %S.gen.Val, ptr %a228 + %t230 = load i64, ptr %t225 + %t231 = add i64 %t230, 1 + call void @finch_arr_reserve(ptr %a159, i64 %t231, i64 ptrtoint (ptr getelementptr (%S.gen.Val, ptr null, i32 1) to i64)) + %t232 = load ptr, ptr %a159 + %t233 = getelementptr inbounds %S.gen.Val, ptr %t232, i64 %t230 + store %S.gen.Val %t229, ptr %t233 + store i64 %t231, ptr %t225 + %t234 = load ptr, ptr %a1 + %t235 = load %S.gen.Val, ptr %a182 + call void @finch.gen.hold(ptr %t234, %S.gen.Val %t235) + %t236 = load ptr, ptr %a1 + %t237 = getelementptr inbounds %S.ast.Node, ptr %a42, i32 0, i32 9 + %t238 = load i64, ptr %a167 + %t239 = load { ptr, i64, i64 }, ptr %t237 + %t240 = extractvalue { ptr, i64, i64 } %t239, 1 + %t241 = icmp uge i64 %t238, %t240 + br i1 %t241, label %range4088, label %inrange4089 +range4088: + call void @finch_panic_index(ptr @.str.2495, i64 1736, i64 %t238, i64 %t240) unreachable -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 %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 - %t252 = load i64, ptr %a237 - %t253 = load { ptr, i64, i64 }, ptr %t251 - %t254 = extractvalue { ptr, i64, i64 } %t253, 1 - %t255 = icmp uge i64 %t252, %t254 - br i1 %t255, label %range3879, label %inrange3880 -range3879: - call void @finch_panic_index(ptr @.str.2407, i64 1590, i64 %t252, i64 %t254) +inrange4089: + %t242 = extractvalue { ptr, i64, i64 } %t239, 0 + %t243 = getelementptr inbounds %S.ast.Node, ptr %t242, i64 %t238 + %t244 = getelementptr inbounds %S.ast.Node, ptr %t243, i32 0, i32 5 + %t245 = load %S.ast.Type, ptr %t244 + %t246 = getelementptr inbounds %S.gen.Val, ptr %a182, i32 0, i32 1 + %t247 = load %S.ast.Type, ptr %t246 + %t248 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 + %t249 = load { ptr, i64, i64 }, ptr %t248 + call void @finch.gen.bindType(ptr %t236, %S.ast.Type %t245, %S.ast.Type %t247, { ptr, i64, i64 } %t249, ptr %a137) + call void @finch.drop.S_gen_Val(ptr %a182) + br label %for.step4075 +for.step4075: + %t250 = load i64, ptr %a167 + %t251 = add i64 %t250, 1 + store i64 %t251, ptr %a167 + br label %for.cond4073 +for.end4076: + %t252 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 + %t253 = getelementptr inbounds { ptr, i64, i64 }, ptr %t252, i32 0, i32 1 + %t254 = load i64, ptr %t253 + store i64 0, ptr %a255 + br label %for.cond4090 +for.cond4090: + %t256 = load i64, ptr %a255 + %t257 = icmp slt i64 %t256, %t254 + br i1 %t257, label %for.body4091, label %for.end4093 +for.body4091: + %t258 = getelementptr inbounds %S.gen.Binds, ptr %a137, i32 0, i32 1 + %t259 = load i64, ptr %a255 + %t260 = load { ptr, i64, i64 }, ptr %t258 + %t261 = extractvalue { ptr, i64, i64 } %t260, 1 + %t262 = icmp uge i64 %t259, %t261 + br i1 %t262, label %range4094, label %inrange4095 +range4094: + call void @finch_panic_index(ptr @.str.2496, i64 1739, i64 %t259, i64 %t261) unreachable -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.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.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 - %t268 = load { ptr, i64, i64 }, ptr %t267 - store { ptr, i64, i64 } %t266, 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.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 %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.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.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 %panic3881, label %ok3882 -panic3881: - call void @finch_panic(ptr @.str.2411, i64 1594, ptr @.str.2412) +inrange4095: + %t263 = extractvalue { ptr, i64, i64 } %t260, 0 + %t264 = getelementptr inbounds i1, ptr %t263, i64 %t259 + %t265 = load i1, ptr %t264 + %t266 = xor i1 %t265, true + br i1 %t266, label %then4096, label %endif4098 +then4096: + %t267 = load ptr, ptr %a1 + %t268 = load %S.ast.Node, ptr %a2 + %t269 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 + %t270 = load i64, ptr %a255 + %t271 = load { ptr, i64, i64 }, ptr %t269 + %t272 = extractvalue { ptr, i64, i64 } %t271, 1 + %t273 = icmp uge i64 %t270, %t272 + br i1 %t273, label %range4099, label %inrange4100 +range4099: + call void @finch_panic_index(ptr @.str.2498, i64 1740, i64 %t270, i64 %t272) unreachable -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 %range3883, label %inrange3884 -range3883: - call void @finch_panic_index(ptr @.str.2413, i64 1594, i64 %t290, i64 %t292) - unreachable -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 - store %S.gen.FnSig %t296, ptr %a297 - 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 +inrange4100: + %t274 = extractvalue { ptr, i64, i64 } %t271, 0 + %t275 = getelementptr inbounds { ptr, i64, i64 }, ptr %t274, i64 %t270 + %t276 = load { ptr, i64, i64 }, ptr %t275 + store { ptr, i64, i64 } { ptr @.str.2497, i64 16, 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.2499, i64 24, i64 0 }, ptr %a283 + call void @finch_str_concat(ptr %a281, ptr %a282, ptr %a283) + store { ptr, i64, i64 } %t280, ptr %a284 + call void @finch_str_drop(ptr %a284) + %t285 = load { ptr, i64, i64 }, ptr %a281 + %t286 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 1 + %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) + store { ptr, i64, i64 } %t285, ptr %a291 + call void @finch_str_drop(ptr %a291) + %t292 = load { ptr, i64, i64 }, ptr %a288 + store { ptr, i64, i64 } %t292, ptr %a294 + store { ptr, i64, i64 } { ptr @.str.2500, i64 10, i64 0 }, ptr %a295 + call void @finch_str_concat(ptr %a293, ptr %a294, ptr %a295) + store { ptr, i64, i64 } %t292, ptr %a296 + call void @finch_str_drop(ptr %a296) + %t297 = load { ptr, i64, i64 }, ptr %a293 + call void @finch.gen.fail(ptr %t267, %S.ast.Node %t268, { ptr, i64, i64 } %t297) + store { ptr, i64, i64 } %t297, ptr %a298 + call void @finch_str_drop(ptr %a298) + br label %endif4098 +endif4098: + br label %for.step4092 +for.step4092: + %t299 = load i64, ptr %a255 + %t300 = add i64 %t299, 1 + store i64 %t300, ptr %a255 + br label %for.cond4090 +for.end4093: %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) + %t302 = load i64, ptr %a3 + %t303 = getelementptr inbounds %S.gen.Binds, ptr %a137, i32 0, i32 0 + %t304 = load { ptr, i64, i64 }, ptr %t303 + %t305 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.2501, i64 4, i64 0 }) + %t306 = load %S.ast.Node, ptr %a2 + %t307 = call i64 @finch.gen.instFn(ptr %t301, i64 %t302, { ptr, i64, i64 } %t304, %S.ast.Type %t305, %S.ast.Node %t306) + store %S.ast.Type %t305, ptr %a308 + call void @finch.drop.S_ast_Type(ptr %a308) + store i64 %t307, ptr %a309 + %t310 = load ptr, ptr %a1 + %t311 = icmp eq ptr %t310, null + br i1 %t311, label %panic4101, label %ok4102 +panic4101: + call void @finch_panic(ptr @.str.2502, i64 1744, ptr @.str.2503) unreachable -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) +ok4102: + %t312 = getelementptr inbounds %S.gen.Gen, ptr %t310, i32 0, i32 15 + %t313 = load i64, ptr %a309 + %t314 = load { ptr, i64, i64 }, ptr %t312 + %t315 = extractvalue { ptr, i64, i64 } %t314, 1 + %t316 = icmp uge i64 %t313, %t315 + br i1 %t316, label %range4103, label %inrange4104 +range4103: + call void @finch_panic_index(ptr @.str.2504, i64 1744, i64 %t313, i64 %t315) unreachable -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) +inrange4104: + %t317 = extractvalue { ptr, i64, i64 } %t314, 0 + %t318 = getelementptr inbounds %S.gen.FnSig, ptr %t317, i64 %t313 + %t319 = load %S.gen.FnSig, ptr %t318 + store %S.gen.FnSig %t319, ptr %a320 + call void @finch.copy.S_gen_FnSig(ptr %a321, ptr %a320) + %t322 = load %S.gen.FnSig, ptr %a321 + store %S.gen.FnSig %t322, ptr %a323 + %t324 = load ptr, ptr %a1 + %t325 = load %S.ast.Node, ptr %a2 + %t326 = load %S.gen.FnSig, ptr %a323 + call void @finch.gen.noteCall(ptr %t324, %S.ast.Node %t325, %S.gen.FnSig %t326) + store { ptr, i64, i64 } zeroinitializer, ptr %a327 + %t328 = load i64, ptr %a47 + store i64 0, ptr %a329 + br label %for.cond4105 +for.cond4105: + %t330 = load i64, ptr %a329 + %t331 = icmp slt i64 %t330, %t328 + br i1 %t331, label %for.body4106, label %for.end4108 +for.body4106: + %t332 = load ptr, ptr %a1 + %t333 = load i64, ptr %a329 + %t334 = load { ptr, i64, i64 }, ptr %a159 + %t335 = extractvalue { ptr, i64, i64 } %t334, 1 + %t336 = icmp uge i64 %t333, %t335 + br i1 %t336, label %range4109, label %inrange4110 +range4109: + call void @finch_panic_index(ptr @.str.2505, i64 1748, i64 %t333, i64 %t335) unreachable -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) +inrange4110: + %t337 = extractvalue { ptr, i64, i64 } %t334, 0 + %t338 = getelementptr inbounds %S.gen.Val, ptr %t337, i64 %t333 + %t339 = load %S.gen.Val, ptr %t338 + %t340 = getelementptr inbounds %S.gen.FnSig, ptr %a323, i32 0, i32 13 + %t341 = load i64, ptr %a329 + %t342 = load { ptr, i64, i64 }, ptr %t340 + %t343 = extractvalue { ptr, i64, i64 } %t342, 1 + %t344 = icmp uge i64 %t341, %t343 + br i1 %t344, label %range4111, label %inrange4112 +range4111: + call void @finch_panic_index(ptr @.str.2506, i64 1748, i64 %t341, i64 %t343) unreachable -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) +inrange4112: + %t345 = extractvalue { ptr, i64, i64 } %t342, 0 + %t346 = getelementptr inbounds %S.ast.Type, ptr %t345, i64 %t341 + %t347 = load %S.ast.Type, ptr %t346 + %t348 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t349 = load i64, ptr %a4 + %t350 = load i64, ptr %a329 + %t351 = add i64 %t349, %t350 + %t352 = load { ptr, i64, i64 }, ptr %t348 + %t353 = extractvalue { ptr, i64, i64 } %t352, 1 + %t354 = icmp uge i64 %t351, %t353 + br i1 %t354, label %range4113, label %inrange4114 +range4113: + call void @finch_panic_index(ptr @.str.2507, i64 1748, i64 %t351, i64 %t353) unreachable -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 +inrange4114: + %t355 = extractvalue { ptr, i64, i64 } %t352, 0 + %t356 = getelementptr inbounds %S.ast.Node, ptr %t355, i64 %t351 + %t357 = load %S.ast.Node, ptr %t356 + %t358 = getelementptr inbounds %S.gen.FnSig, ptr %a323, i32 0, i32 14 + %t359 = load i64, ptr %a329 + %t360 = load { ptr, i64, i64 }, ptr %t358 + %t361 = extractvalue { ptr, i64, i64 } %t360, 1 + %t362 = icmp uge i64 %t359, %t361 + br i1 %t362, label %range4115, label %inrange4116 +range4115: + call void @finch_panic_index(ptr @.str.2509, i64 1748, i64 %t359, i64 %t361) + unreachable +inrange4116: + %t363 = extractvalue { ptr, i64, i64 } %t360, 0 + %t364 = getelementptr inbounds { ptr, i64, i64 }, ptr %t363, i64 %t359 + %t365 = load { ptr, i64, i64 }, ptr %t364 + store { ptr, i64, i64 } { ptr @.str.2508, i64 10, i64 0 }, 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.2510, i64 1, 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 %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 + store { ptr, i64, i64 } %t369, ptr %a373 + call void @finch_str_drop(ptr %a373) + %t374 = load { ptr, i64, i64 }, ptr %a370 + %t375 = call %S.gen.Val @finch.gen.coerce(ptr %t332, %S.gen.Val %t339, %S.ast.Type %t347, %S.ast.Node %t357, { ptr, i64, i64 } %t374) + store { ptr, i64, i64 } %t374, ptr %a376 + call void @finch_str_drop(ptr %a376) + store %S.gen.Val %t375, ptr %a377 + %t378 = getelementptr inbounds { ptr, i64, i64 }, ptr %a327, i32 0, i32 1 + %t379 = load ptr, ptr %a1 + %t380 = getelementptr inbounds %S.gen.FnSig, ptr %a323, i32 0, i32 13 + %t381 = load i64, ptr %a329 + %t382 = load { ptr, i64, i64 }, ptr %t380 + %t383 = extractvalue { ptr, i64, i64 } %t382, 1 + %t384 = icmp uge i64 %t381, %t383 + br i1 %t384, label %range4117, label %inrange4118 +range4117: + call void @finch_panic_index(ptr @.str.2511, i64 1749, i64 %t381, i64 %t383) + unreachable +inrange4118: + %t385 = extractvalue { ptr, i64, i64 } %t382, 0 + %t386 = getelementptr inbounds %S.ast.Type, ptr %t385, i64 %t381 + %t387 = load %S.ast.Type, ptr %t386 + %t388 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t379, %S.ast.Type %t387) + store { ptr, i64, i64 } %t388, ptr %a390 + store { ptr, i64, i64 } { ptr @.str.2512, i64 1, i64 0 }, ptr %a391 + call void @finch_str_concat(ptr %a389, ptr %a390, ptr %a391) + store { ptr, i64, i64 } %t388, ptr %a392 + call void @finch_str_drop(ptr %a392) + %t393 = load { ptr, i64, i64 }, ptr %a389 + %t394 = getelementptr inbounds %S.gen.Val, ptr %a377, i32 0, i32 0 + %t395 = load { ptr, i64, i64 }, ptr %t394 + store { ptr, i64, i64 } %t393, ptr %a397 + store { ptr, i64, i64 } %t395, ptr %a398 + call void @finch_str_concat(ptr %a396, ptr %a397, ptr %a398) + store { ptr, i64, i64 } %t393, ptr %a399 + call void @finch_str_drop(ptr %a399) + %t400 = load { ptr, i64, i64 }, ptr %a396 + %t401 = load i64, ptr %t378 + %t402 = add i64 %t401, 1 + call void @finch_arr_reserve(ptr %a327, i64 %t402, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t403 = load ptr, ptr %a327 + %t404 = getelementptr inbounds { ptr, i64, i64 }, ptr %t403, i64 %t401 + store { ptr, i64, i64 } %t400, ptr %t404 + store i64 %t402, ptr %t378 + call void @finch.drop.S_gen_Val(ptr %a377) + br label %for.step4107 +for.step4107: + %t405 = load i64, ptr %a329 + %t406 = add i64 %t405, 1 + store i64 %t406, ptr %a329 + br label %for.cond4105 +for.end4108: + %t407 = load ptr, ptr %a1 + %t408 = load %S.gen.FnSig, ptr %a323 + %t409 = load %S.ast.Node, ptr %a2 + %t410 = load { ptr, i64, i64 }, ptr %a327 + %t411 = load { ptr, i64, i64 }, ptr %a5 + %t412 = call %S.gen.Val @finch.gen.emitCall(ptr %t407, %S.gen.FnSig %t408, %S.ast.Node %t409, { ptr, i64, i64 } %t410, { ptr, i64, i64 } %t411) + store %S.gen.Val %t412, ptr %a413 + store i64 0, ptr %a414 + br label %each.cond4119 +each.cond4119: + %t415 = getelementptr inbounds { ptr, i64, i64 }, ptr %a159, i32 0, i32 1 + %t416 = load i64, ptr %t415 + %t417 = load i64, ptr %a414 + %t418 = icmp slt i64 %t417, %t416 + br i1 %t418, label %each.body4120, label %each.end4122 +each.body4120: + %t419 = load ptr, ptr %a159 + %t420 = getelementptr inbounds %S.gen.Val, ptr %t419, i64 %t417 + %t421 = load %S.gen.Val, ptr %t420 + store %S.gen.Val %t421, ptr %a422 + %t423 = load ptr, ptr %a1 + %t424 = load %S.gen.Val, ptr %a422 + call void @finch.gen.release(ptr %t423, %S.gen.Val %t424) + br label %each.step4121 +each.step4121: + %t425 = load i64, ptr %a414 + %t426 = add i64 %t425, 1 + store i64 %t426, ptr %a414 + br label %each.cond4119 +each.end4122: + %t427 = load ptr, ptr %a1 + %t428 = load i64, ptr %a165 + call void @finch.gen.heldEnd(ptr %t427, i64 %t428) + %t429 = load %S.gen.Val, ptr %a413 + call void @finch.drop.arr_str(ptr %a327) + call void @finch.drop.S_gen_FnSig(ptr %a323) + call void @finch.drop.arr_S_gen_Val(ptr %a159) + call void @finch.drop.S_gen_Binds(ptr %a137) + call void @finch.drop.arr_S_ast_Type(ptr %a53) + call void @finch.drop.S_ast_Node(ptr %a42) + call void @finch.drop.S_gen_Template(ptr %a19) + ret %S.gen.Val %t429 } define internal void @finch.copy.S_cimport_CField(ptr %dst, ptr %src) { @@ -36545,20 +42603,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.cond3907 -n.cond3907: + br label %n.cond4134 +n.cond4134: %t6 = load i64, ptr %a5 %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body3908, label %n.end3909 -n.body3908: + br i1 %t7, label %n.body4135, label %n.end4136 +n.body4135: %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.cond3907 -n.end3909: + br label %n.cond4134 +n.end4136: ret void } @@ -36600,64 +42658,74 @@ entry: %a85 = alloca { ptr, i64, i64 }, align 16 %a86 = alloca { ptr, i64, i64 }, align 16 %a87 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 + %a88 = alloca { ptr, i64, i64 }, align 16 %a90 = alloca { ptr, i64, i64 }, align 16 %a91 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca %S.ast.Type, align 16 - %a130 = alloca %S.ast.Type, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 + %a92 = alloca { ptr, i64, i64 }, align 16 + %a93 = alloca { ptr, i64, i64 }, align 16 + %a112 = alloca { ptr, i64, i64 }, align 16 + %a113 = alloca { ptr, i64, i64 }, align 16 + %a131 = alloca %S.ast.Type, align 16 + %a132 = alloca %S.ast.Type, align 16 %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 %a198 = alloca { ptr, i64, i64 }, align 16 + %a199 = 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 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = 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 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a285 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 + %a203 = 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 + %a224 = alloca { ptr, i64, i64 }, align 16 + %a225 = alloca { ptr, i64, i64 }, align 16 + %a228 = alloca { ptr, i64, i64 }, align 16 + %a247 = 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 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 + %a295 = alloca { ptr, i64, i64 }, align 16 %a298 = alloca { ptr, i64, i64 }, align 16 + %a299 = 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 + %a307 = 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 store ptr %p0, ptr %a1 store i64 %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic3899, label %ok3900 -panic3899: - call void @finch_panic(ptr @.str.2422, i64 1607, ptr @.str.2423) + br i1 %t4, label %panic4126, label %ok4127 +panic4126: + call void @finch_panic(ptr @.str.2513, i64 1762, ptr @.str.2514) unreachable -ok3900: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 24 +ok4127: + %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 25 %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 %panic3901, label %ok3902 -panic3901: - call void @finch_panic(ptr @.str.2424, i64 1607, ptr @.str.2425) + br i1 %t8, label %panic4128, label %ok4129 +panic4128: + call void @finch_panic(ptr @.str.2515, i64 1762, ptr @.str.2516) unreachable -ok3902: - %t9 = getelementptr inbounds %S.gen.Gen, ptr %t7, i32 0, i32 15 +ok4129: + %t9 = getelementptr inbounds %S.gen.Gen, ptr %t7, i32 0, i32 16 %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 %range3903, label %inrange3904 -range3903: - call void @finch_panic_index(ptr @.str.2426, i64 1607, i64 %t10, i64 %t12) + br i1 %t13, label %range4130, label %inrange4131 +range4130: + call void @finch_panic_index(ptr @.str.2517, i64 1762, i64 %t10, i64 %t12) unreachable -inrange3904: +inrange4131: %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 @@ -36665,14 +42733,14 @@ inrange3904: 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.missing3905, label %map.found3906 -map.missing3905: + br i1 %t20, label %map.missing4132, label %map.found4133 +map.missing4132: 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.2427, i64 1607, ptr %a21) + call void @finch_map_missing(ptr @.str.2518, i64 1762, ptr %a21) unreachable -map.found3906: +map.found4133: %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 @@ -36684,21 +42752,21 @@ map.found3906: store %S.cimport.CStruct %t30, ptr %a31 %t32 = load ptr, ptr %a1 %t33 = icmp eq ptr %t32, null - br i1 %t33, label %panic3910, label %ok3911 -panic3910: - call void @finch_panic(ptr @.str.2428, i64 1608, ptr @.str.2429) + br i1 %t33, label %panic4137, label %ok4138 +panic4137: + call void @finch_panic(ptr @.str.2519, i64 1763, ptr @.str.2520) unreachable -ok3911: - %t34 = getelementptr inbounds %S.gen.Gen, ptr %t32, i32 0, i32 15 +ok4138: + %t34 = getelementptr inbounds %S.gen.Gen, ptr %t32, i32 0, i32 16 %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 %range3912, label %inrange3913 -range3912: - call void @finch_panic_index(ptr @.str.2430, i64 1608, i64 %t35, i64 %t37) + br i1 %t38, label %range4139, label %inrange4140 +range4139: + call void @finch_panic_index(ptr @.str.2521, i64 1763, i64 %t35, i64 %t37) unreachable -inrange3913: +inrange4140: %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 @@ -36707,24 +42775,24 @@ inrange3913: 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.cond3914 -each.cond3914: + br label %each.cond4141 +each.cond4141: %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.body3915, label %each.end3917 -each.body3915: + br i1 %t49, label %each.body4142, label %each.end4144 +each.body4142: %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 %then3918, label %endif3920 -then3918: - br label %each.step3916 -endif3920: + br i1 %t55, label %then4145, label %endif4147 +then4145: + br label %each.step4143 +endif4147: %t56 = load ptr, ptr %a1 %t57 = getelementptr inbounds %S.cimport.CField, ptr %a53, i32 0, i32 1 %t58 = load %S.ast.Type, ptr %t57 @@ -36733,11 +42801,11 @@ endif3920: %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.2431, i64 6, i64 0 }, ptr %a64 + store { ptr, i64, i64 } { ptr @.str.2522, 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 %then3921, label %endif3923 -then3921: + br i1 %t66, label %then4148, label %endif4150 +then4148: %t67 = load ptr, ptr %a1 %t68 = load ptr, ptr %a1 %t69 = getelementptr inbounds %S.ast.Type, ptr %a60, i32 0, i32 3 @@ -36746,14 +42814,14 @@ then3921: %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 %endif3923 -endif3923: + br label %endif4150 +endif4150: %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 %then3924, label %endif3926 -then3924: + br i1 %t77, label %then4151, label %endif4153 +then4151: %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 @@ -36761,373 +42829,398 @@ then3924: %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.2432, i64 1, i64 0 }, ptr %a86 + store { ptr, i64, i64 } { ptr @.str.2523, 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.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 - %t94 = add i64 %t93, 1 - call void @finch_arr_reserve(ptr %a43, i64 %t94, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t95 = load ptr, ptr %a43 - %t96 = getelementptr inbounds { ptr, i64, i64 }, ptr %t95, i64 %t93 - store { ptr, i64, i64 } %t92, ptr %t96 - store i64 %t94, ptr %t78 - br label %endif3926 -endif3926: - %t97 = load ptr, ptr %a1 - %t98 = icmp eq ptr %t97, null - br i1 %t98, label %panic3927, label %ok3928 -panic3927: - call void @finch_panic(ptr @.str.2434, i64 1622, ptr @.str.2435) + store { ptr, i64, i64 } %t84, ptr %a88 + call void @finch_str_drop(ptr %a88) + %t89 = load { ptr, i64, i64 }, ptr %a85 + store { ptr, i64, i64 } %t89, ptr %a91 + store { ptr, i64, i64 } { ptr @.str.2524, i64 6, i64 0 }, ptr %a92 + call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92) + store { ptr, i64, i64 } %t89, ptr %a93 + call void @finch_str_drop(ptr %a93) + %t94 = load { ptr, i64, i64 }, ptr %a90 + %t95 = load i64, ptr %t78 + %t96 = add i64 %t95, 1 + call void @finch_arr_reserve(ptr %a43, i64 %t96, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t97 = load ptr, ptr %a43 + %t98 = getelementptr inbounds { ptr, i64, i64 }, ptr %t97, i64 %t95 + store { ptr, i64, i64 } %t94, ptr %t98 + store i64 %t96, ptr %t78 + br label %endif4153 +endif4153: + %t99 = load ptr, ptr %a1 + %t100 = icmp eq ptr %t99, null + br i1 %t100, label %panic4154, label %ok4155 +panic4154: + call void @finch_panic(ptr @.str.2525, i64 1777, ptr @.str.2526) unreachable -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 %range3929, label %inrange3930 -range3929: - call void @finch_panic_index(ptr @.str.2436, i64 1622, i64 %t100, i64 %t102) +ok4155: + %t101 = getelementptr inbounds %S.gen.Gen, ptr %t99, i32 0, i32 16 + %t102 = load i64, ptr %a2 + %t103 = load { ptr, i64, i64 }, ptr %t101 + %t104 = extractvalue { ptr, i64, i64 } %t103, 1 + %t105 = icmp uge i64 %t102, %t104 + br i1 %t105, label %range4156, label %inrange4157 +range4156: + call void @finch_panic_index(ptr @.str.2527, i64 1777, i64 %t102, i64 %t104) unreachable -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 - %t107 = getelementptr inbounds { ptr, i64, i64 }, ptr %t106, i32 0, i32 1 - %t108 = getelementptr inbounds %S.cimport.CField, ptr %a53, i32 0, i32 0 - %t109 = load { ptr, i64, i64 }, ptr %t108 - store { ptr, i64, i64 } %t109, ptr %a110 - call void @finch_str_copy(ptr %a111, ptr %a110) - %t112 = load { ptr, i64, i64 }, ptr %a111 - %t113 = load i64, ptr %t107 - %t114 = add i64 %t113, 1 - call void @finch_arr_reserve(ptr %t106, i64 %t114, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t115 = load ptr, ptr %t106 - %t116 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 %t113 - store { ptr, i64, i64 } %t112, ptr %t116 - store i64 %t114, ptr %t107 - %t117 = load ptr, ptr %a1 - %t118 = icmp eq ptr %t117, null - br i1 %t118, label %panic3931, label %ok3932 -panic3931: - call void @finch_panic(ptr @.str.2437, i64 1623, ptr @.str.2438) +inrange4157: + %t106 = extractvalue { ptr, i64, i64 } %t103, 0 + %t107 = getelementptr inbounds %S.gen.StructDef, ptr %t106, i64 %t102 + %t108 = getelementptr inbounds %S.gen.StructDef, ptr %t107, i32 0, i32 11 + %t109 = getelementptr inbounds { ptr, i64, i64 }, ptr %t108, i32 0, i32 1 + %t110 = getelementptr inbounds %S.cimport.CField, ptr %a53, i32 0, i32 0 + %t111 = load { ptr, i64, i64 }, ptr %t110 + 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 %t109 + %t116 = add i64 %t115, 1 + call void @finch_arr_reserve(ptr %t108, i64 %t116, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t117 = load ptr, ptr %t108 + %t118 = getelementptr inbounds { ptr, i64, i64 }, ptr %t117, i64 %t115 + store { ptr, i64, i64 } %t114, ptr %t118 + store i64 %t116, ptr %t109 + %t119 = load ptr, ptr %a1 + %t120 = icmp eq ptr %t119, null + br i1 %t120, label %panic4158, label %ok4159 +panic4158: + call void @finch_panic(ptr @.str.2528, i64 1778, ptr @.str.2529) unreachable -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 %range3933, label %inrange3934 -range3933: - call void @finch_panic_index(ptr @.str.2439, i64 1623, i64 %t120, i64 %t122) +ok4159: + %t121 = getelementptr inbounds %S.gen.Gen, ptr %t119, i32 0, i32 16 + %t122 = load i64, ptr %a2 + %t123 = load { ptr, i64, i64 }, ptr %t121 + %t124 = extractvalue { ptr, i64, i64 } %t123, 1 + %t125 = icmp uge i64 %t122, %t124 + br i1 %t125, label %range4160, label %inrange4161 +range4160: + call void @finch_panic_index(ptr @.str.2530, i64 1778, i64 %t122, i64 %t124) unreachable -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 - %t127 = getelementptr inbounds { ptr, i64, i64 }, ptr %t126, i32 0, i32 1 - %t128 = load %S.ast.Type, ptr %a60 - store %S.ast.Type %t128, ptr %a129 - call void @finch.copy.S_ast_Type(ptr %a130, ptr %a129) - %t131 = load %S.ast.Type, ptr %a130 - %t132 = load i64, ptr %t127 - %t133 = add i64 %t132, 1 - call void @finch_arr_reserve(ptr %t126, i64 %t133, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t134 = load ptr, ptr %t126 - %t135 = getelementptr inbounds %S.ast.Type, ptr %t134, i64 %t132 - store %S.ast.Type %t131, ptr %t135 - store i64 %t133, ptr %t127 - %t136 = load ptr, ptr %a1 - %t137 = icmp eq ptr %t136, null - br i1 %t137, label %panic3935, label %ok3936 -panic3935: - call void @finch_panic(ptr @.str.2440, i64 1624, ptr @.str.2441) +inrange4161: + %t126 = extractvalue { ptr, i64, i64 } %t123, 0 + %t127 = getelementptr inbounds %S.gen.StructDef, ptr %t126, i64 %t122 + %t128 = getelementptr inbounds %S.gen.StructDef, ptr %t127, i32 0, i32 12 + %t129 = getelementptr inbounds { ptr, i64, i64 }, ptr %t128, i32 0, i32 1 + %t130 = load %S.ast.Type, ptr %a60 + store %S.ast.Type %t130, ptr %a131 + call void @finch.copy.S_ast_Type(ptr %a132, ptr %a131) + %t133 = load %S.ast.Type, ptr %a132 + %t134 = load i64, ptr %t129 + %t135 = add i64 %t134, 1 + call void @finch_arr_reserve(ptr %t128, i64 %t135, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) + %t136 = load ptr, ptr %t128 + %t137 = getelementptr inbounds %S.ast.Type, ptr %t136, i64 %t134 + store %S.ast.Type %t133, ptr %t137 + store i64 %t135, ptr %t129 + %t138 = load ptr, ptr %a1 + %t139 = icmp eq ptr %t138, null + br i1 %t139, label %panic4162, label %ok4163 +panic4162: + call void @finch_panic(ptr @.str.2531, i64 1779, ptr @.str.2532) unreachable -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 %range3937, label %inrange3938 -range3937: - call void @finch_panic_index(ptr @.str.2442, i64 1624, i64 %t139, i64 %t141) +ok4163: + %t140 = getelementptr inbounds %S.gen.Gen, ptr %t138, i32 0, i32 16 + %t141 = load i64, ptr %a2 + %t142 = load { ptr, i64, i64 }, ptr %t140 + %t143 = extractvalue { ptr, i64, i64 } %t142, 1 + %t144 = icmp uge i64 %t141, %t143 + br i1 %t144, label %range4164, label %inrange4165 +range4164: + call void @finch_panic_index(ptr @.str.2533, i64 1779, i64 %t141, i64 %t143) unreachable -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 - %t146 = getelementptr inbounds { ptr, i64, i64 }, ptr %t145, i32 0, i32 1 - %t147 = getelementptr inbounds { ptr, i64, i64 }, ptr %a43, i32 0, i32 1 - %t148 = load i64, ptr %t147 - %t149 = load i64, ptr %t146 - %t150 = add i64 %t149, 1 - call void @finch_arr_reserve(ptr %t145, i64 %t150, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t151 = load ptr, ptr %t145 - %t152 = getelementptr inbounds i64, ptr %t151, i64 %t149 - store i64 %t148, ptr %t152 - store i64 %t150, ptr %t146 - %t153 = load ptr, ptr %a1 - %t154 = icmp eq ptr %t153, null - br i1 %t154, label %panic3939, label %ok3940 -panic3939: - call void @finch_panic(ptr @.str.2443, i64 1625, ptr @.str.2444) +inrange4165: + %t145 = extractvalue { ptr, i64, i64 } %t142, 0 + %t146 = getelementptr inbounds %S.gen.StructDef, ptr %t145, i64 %t141 + %t147 = getelementptr inbounds %S.gen.StructDef, ptr %t146, i32 0, i32 3 + %t148 = getelementptr inbounds { ptr, i64, i64 }, ptr %t147, i32 0, i32 1 + %t149 = getelementptr inbounds { ptr, i64, i64 }, ptr %a43, i32 0, i32 1 + %t150 = load i64, ptr %t149 + %t151 = load i64, ptr %t148 + %t152 = add i64 %t151, 1 + call void @finch_arr_reserve(ptr %t147, i64 %t152, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) + %t153 = load ptr, ptr %t147 + %t154 = getelementptr inbounds i64, ptr %t153, i64 %t151 + store i64 %t150, ptr %t154 + store i64 %t152, ptr %t148 + %t155 = load ptr, ptr %a1 + %t156 = icmp eq ptr %t155, null + br i1 %t156, label %panic4166, label %ok4167 +panic4166: + call void @finch_panic(ptr @.str.2534, i64 1780, ptr @.str.2535) unreachable -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 %range3941, label %inrange3942 -range3941: - call void @finch_panic_index(ptr @.str.2445, i64 1625, i64 %t156, i64 %t158) +ok4167: + %t157 = getelementptr inbounds %S.gen.Gen, ptr %t155, i32 0, i32 16 + %t158 = load i64, ptr %a2 + %t159 = load { ptr, i64, i64 }, ptr %t157 + %t160 = extractvalue { ptr, i64, i64 } %t159, 1 + %t161 = icmp uge i64 %t158, %t160 + br i1 %t161, label %range4168, label %inrange4169 +range4168: + call void @finch_panic_index(ptr @.str.2536, i64 1780, i64 %t158, i64 %t160) unreachable -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 - %t163 = getelementptr inbounds { ptr, i64, i64 }, ptr %t162, i32 0, i32 1 - %t164 = getelementptr inbounds %S.cimport.CField, ptr %a53, i32 0, i32 2 - %t165 = load i64, ptr %t164 - %t166 = load i64, ptr %t163 - %t167 = add i64 %t166, 1 - call void @finch_arr_reserve(ptr %t162, i64 %t167, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t168 = load ptr, ptr %t162 - %t169 = getelementptr inbounds i64, ptr %t168, i64 %t166 - store i64 %t165, ptr %t169 - store i64 %t167, ptr %t163 - %t170 = getelementptr inbounds { ptr, i64, i64 }, ptr %a43, i32 0, i32 1 - %t171 = load ptr, ptr %a1 - %t172 = load %S.ast.Type, ptr %a60 - %t173 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t171, %S.ast.Type %t172) - %t174 = load i64, ptr %t170 - %t175 = add i64 %t174, 1 - call void @finch_arr_reserve(ptr %a43, i64 %t175, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t176 = load ptr, ptr %a43 - %t177 = getelementptr inbounds { ptr, i64, i64 }, ptr %t176, i64 %t174 - store { ptr, i64, i64 } %t173, ptr %t177 - store i64 %t175, ptr %t170 - %t178 = getelementptr inbounds %S.cimport.CField, ptr %a53, i32 0, i32 2 - %t179 = load i64, ptr %t178 - %t180 = getelementptr inbounds %S.cimport.CField, ptr %a53, i32 0, i32 3 +inrange4169: + %t162 = extractvalue { ptr, i64, i64 } %t159, 0 + %t163 = getelementptr inbounds %S.gen.StructDef, ptr %t162, i64 %t158 + %t164 = getelementptr inbounds %S.gen.StructDef, ptr %t163, i32 0, i32 4 + %t165 = getelementptr inbounds { ptr, i64, i64 }, ptr %t164, i32 0, i32 1 + %t166 = getelementptr inbounds %S.cimport.CField, ptr %a53, i32 0, i32 2 + %t167 = load i64, ptr %t166 + %t168 = load i64, ptr %t165 + %t169 = add i64 %t168, 1 + call void @finch_arr_reserve(ptr %t164, i64 %t169, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) + %t170 = load ptr, ptr %t164 + %t171 = getelementptr inbounds i64, ptr %t170, i64 %t168 + store i64 %t167, ptr %t171 + store i64 %t169, ptr %t165 + %t172 = getelementptr inbounds { ptr, i64, i64 }, ptr %a43, i32 0, i32 1 + %t173 = load ptr, ptr %a1 + %t174 = load %S.ast.Type, ptr %a60 + %t175 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t173, %S.ast.Type %t174) + %t176 = load i64, ptr %t172 + %t177 = add i64 %t176, 1 + call void @finch_arr_reserve(ptr %a43, i64 %t177, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t178 = load ptr, ptr %a43 + %t179 = getelementptr inbounds { ptr, i64, i64 }, ptr %t178, i64 %t176 + store { ptr, i64, i64 } %t175, ptr %t179 + store i64 %t177, ptr %t172 + %t180 = getelementptr inbounds %S.cimport.CField, ptr %a53, i32 0, i32 2 %t181 = load i64, ptr %t180 - %t182 = add i64 %t179, %t181 - store i64 %t182, ptr %a42 - br label %each.step3916 -each.step3916: - %t183 = load i64, ptr %a45 - %t184 = add i64 %t183, 1 - store i64 %t184, ptr %a45 - 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 %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 - %t192 = load i64, ptr %a42 - %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.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.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 - %t205 = add i64 %t204, 1 - call void @finch_arr_reserve(ptr %a43, i64 %t205, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t206 = load ptr, ptr %a43 - %t207 = getelementptr inbounds { ptr, i64, i64 }, ptr %t206, i64 %t204 - store { ptr, i64, i64 } %t203, ptr %t207 - store i64 %t205, ptr %t189 - 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 %panic3946, label %ok3947 -panic3946: - call void @finch_panic(ptr @.str.2448, i64 1632, ptr @.str.2449) + %t182 = getelementptr inbounds %S.cimport.CField, ptr %a53, i32 0, i32 3 + %t183 = load i64, ptr %t182 + %t184 = add i64 %t181, %t183 + store i64 %t184, ptr %a42 + call void @finch.drop.S_ast_Type(ptr %a60) + br label %each.step4143 +each.step4143: + %t185 = load i64, ptr %a45 + %t186 = add i64 %t185, 1 + store i64 %t186, ptr %a45 + br label %each.cond4141 +each.end4144: + %t187 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 2 + %t188 = load i64, ptr %t187 + %t189 = load i64, ptr %a42 + %t190 = icmp sgt i64 %t188, %t189 + br i1 %t190, label %then4170, label %endif4172 +then4170: + %t191 = getelementptr inbounds { ptr, i64, i64 }, ptr %a43, i32 0, i32 1 + %t192 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 2 + %t193 = load i64, ptr %t192 + %t194 = load i64, ptr %a42 + %t195 = sub i64 %t193, %t194 + call void @finch_str_from_int(ptr %a196, i64 %t195) + %t197 = load { ptr, i64, i64 }, ptr %a196 + store { ptr, i64, i64 } { ptr @.str.2537, i64 1, i64 0 }, ptr %a199 + store { ptr, i64, i64 } %t197, ptr %a200 + call void @finch_str_concat(ptr %a198, ptr %a199, ptr %a200) + store { ptr, i64, i64 } %t197, ptr %a201 + call void @finch_str_drop(ptr %a201) + %t202 = load { ptr, i64, i64 }, ptr %a198 + store { ptr, i64, i64 } %t202, ptr %a204 + store { ptr, i64, i64 } { ptr @.str.2538, i64 6, i64 0 }, ptr %a205 + call void @finch_str_concat(ptr %a203, ptr %a204, ptr %a205) + store { ptr, i64, i64 } %t202, ptr %a206 + call void @finch_str_drop(ptr %a206) + %t207 = load { ptr, i64, i64 }, ptr %a203 + %t208 = load i64, ptr %t191 + %t209 = add i64 %t208, 1 + call void @finch_arr_reserve(ptr %a43, i64 %t209, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t210 = load ptr, ptr %a43 + %t211 = getelementptr inbounds { ptr, i64, i64 }, ptr %t210, i64 %t208 + store { ptr, i64, i64 } %t207, ptr %t211 + store i64 %t209, ptr %t191 + br label %endif4172 +endif4172: + %t212 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 4 + %t213 = load { ptr, i64, i64 }, ptr %t212 + %t214 = load ptr, ptr %a1 + %t215 = icmp eq ptr %t214, null + br i1 %t215, label %panic4173, label %ok4174 +panic4173: + call void @finch_panic(ptr @.str.2539, i64 1787, ptr @.str.2540) unreachable -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 %range3948, label %inrange3949 -range3948: - call void @finch_panic_index(ptr @.str.2450, i64 1632, i64 %t213, i64 %t215) +ok4174: + %t216 = getelementptr inbounds %S.gen.Gen, ptr %t214, i32 0, i32 16 + %t217 = load i64, ptr %a2 + %t218 = load { ptr, i64, i64 }, ptr %t216 + %t219 = extractvalue { ptr, i64, i64 } %t218, 1 + %t220 = icmp uge i64 %t217, %t219 + br i1 %t220, label %range4175, label %inrange4176 +range4175: + call void @finch_panic_index(ptr @.str.2541, i64 1787, i64 %t217, i64 %t219) unreachable -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 - store { ptr, i64, i64 } %t209, ptr %a220 - call void @finch_str_copy(ptr %a221, ptr %a220) - %t222 = load { ptr, i64, i64 }, ptr %a221 - 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.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.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 %panic3957, label %ok3958 -panic3957: - call void @finch_panic(ptr @.str.2452, i64 1634, ptr @.str.2453) +inrange4176: + %t221 = extractvalue { ptr, i64, i64 } %t218, 0 + %t222 = getelementptr inbounds %S.gen.StructDef, ptr %t221, i64 %t217 + %t223 = getelementptr inbounds %S.gen.StructDef, ptr %t222, i32 0, i32 8 + store { ptr, i64, i64 } %t213, ptr %a224 + call void @finch_str_copy(ptr %a225, ptr %a224) + %t226 = load { ptr, i64, i64 }, ptr %a225 + %t227 = load { ptr, i64, i64 }, ptr %t223 + store { ptr, i64, i64 } %t226, ptr %t223 + store { ptr, i64, i64 } %t227, ptr %a228 + call void @finch_str_drop(ptr %a228) + %t229 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 5 + %t230 = load i1, ptr %t229 + br label %logic.from4177 +logic.from4177: + br i1 %t230, label %logic.rhs4178, label %logic.end4179 +logic.rhs4178: + %t231 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 4 + %t232 = getelementptr inbounds { ptr, i64, i64 }, ptr %t231, i32 0, i32 1 + %t233 = load i64, ptr %t232 + %t234 = icmp eq i64 %t233, 0 + br label %logic.rend4180 +logic.rend4180: + br label %logic.end4179 +logic.end4179: + %t235 = phi i1 [ false, %logic.from4177 ], [ %t234, %logic.rend4180 ] + br i1 %t235, label %then4181, label %endif4183 +then4181: + %t236 = load ptr, ptr %a1 + %t237 = icmp eq ptr %t236, null + br i1 %t237, label %panic4184, label %ok4185 +panic4184: + call void @finch_panic(ptr @.str.2543, i64 1789, ptr @.str.2544) unreachable -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 %range3959, label %inrange3960 -range3959: - call void @finch_panic_index(ptr @.str.2454, i64 1634, i64 %t233, i64 %t235) +ok4185: + %t238 = getelementptr inbounds %S.gen.Gen, ptr %t236, i32 0, i32 16 + %t239 = load i64, ptr %a2 + %t240 = load { ptr, i64, i64 }, ptr %t238 + %t241 = extractvalue { ptr, i64, i64 } %t240, 1 + %t242 = icmp uge i64 %t239, %t241 + br i1 %t242, label %range4186, label %inrange4187 +range4186: + call void @finch_panic_index(ptr @.str.2545, i64 1789, i64 %t239, i64 %t241) unreachable -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.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 %panic3961, label %ok3962 -panic3961: - call void @finch_panic(ptr @.str.2455, i64 1636, ptr @.str.2456) +inrange4187: + %t243 = extractvalue { ptr, i64, i64 } %t240, 0 + %t244 = getelementptr inbounds %S.gen.StructDef, ptr %t243, i64 %t239 + %t245 = getelementptr inbounds %S.gen.StructDef, ptr %t244, i32 0, i32 8 + %t246 = load { ptr, i64, i64 }, ptr %t245 + store { ptr, i64, i64 } { ptr @.str.2542, i64 49, i64 0 }, ptr %t245 + store { ptr, i64, i64 } %t246, ptr %a247 + call void @finch_str_drop(ptr %a247) + br label %endif4183 +endif4183: + %t248 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 2 + %t249 = load i64, ptr %t248 + %t250 = load ptr, ptr %a1 + %t251 = icmp eq ptr %t250, null + br i1 %t251, label %panic4188, label %ok4189 +panic4188: + call void @finch_panic(ptr @.str.2546, i64 1791, ptr @.str.2547) unreachable -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 %range3963, label %inrange3964 -range3963: - call void @finch_panic_index(ptr @.str.2457, i64 1636, i64 %t245, i64 %t247) +ok4189: + %t252 = getelementptr inbounds %S.gen.Gen, ptr %t250, i32 0, i32 16 + %t253 = load i64, ptr %a2 + %t254 = load { ptr, i64, i64 }, ptr %t252 + %t255 = extractvalue { ptr, i64, i64 } %t254, 1 + %t256 = icmp uge i64 %t253, %t255 + br i1 %t256, label %range4190, label %inrange4191 +range4190: + call void @finch_panic_index(ptr @.str.2548, i64 1791, i64 %t253, i64 %t255) unreachable -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 - store i64 %t241, ptr %t251 - %t252 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 3 - %t253 = load i64, ptr %t252 - %t254 = load ptr, ptr %a1 - %t255 = icmp eq ptr %t254, null - br i1 %t255, label %panic3965, label %ok3966 -panic3965: - call void @finch_panic(ptr @.str.2458, i64 1637, ptr @.str.2459) +inrange4191: + %t257 = extractvalue { ptr, i64, i64 } %t254, 0 + %t258 = getelementptr inbounds %S.gen.StructDef, ptr %t257, i64 %t253 + %t259 = getelementptr inbounds %S.gen.StructDef, ptr %t258, i32 0, i32 9 + store i64 %t249, ptr %t259 + %t260 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 3 + %t261 = load i64, ptr %t260 + %t262 = load ptr, ptr %a1 + %t263 = icmp eq ptr %t262, null + br i1 %t263, label %panic4192, label %ok4193 +panic4192: + call void @finch_panic(ptr @.str.2549, i64 1792, ptr @.str.2550) unreachable -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 %range3967, label %inrange3968 -range3967: - call void @finch_panic_index(ptr @.str.2460, i64 1637, i64 %t257, i64 %t259) +ok4193: + %t264 = getelementptr inbounds %S.gen.Gen, ptr %t262, i32 0, i32 16 + %t265 = load i64, ptr %a2 + %t266 = load { ptr, i64, i64 }, ptr %t264 + %t267 = extractvalue { ptr, i64, i64 } %t266, 1 + %t268 = icmp uge i64 %t265, %t267 + br i1 %t268, label %range4194, label %inrange4195 +range4194: + call void @finch_panic_index(ptr @.str.2551, i64 1792, i64 %t265, i64 %t267) unreachable -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 %panic3969, label %ok3970 -panic3969: - call void @finch_panic(ptr @.str.2461, i64 1638, ptr @.str.2462) +inrange4195: + %t269 = extractvalue { ptr, i64, i64 } %t266, 0 + %t270 = getelementptr inbounds %S.gen.StructDef, ptr %t269, i64 %t265 + %t271 = getelementptr inbounds %S.gen.StructDef, ptr %t270, i32 0, i32 10 + store i64 %t261, ptr %t271 + %t272 = load ptr, ptr %a1 + %t273 = icmp eq ptr %t272, null + br i1 %t273, label %panic4196, label %ok4197 +panic4196: + call void @finch_panic(ptr @.str.2552, i64 1793, ptr @.str.2553) unreachable -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 %range3971, label %inrange3972 -range3971: - call void @finch_panic_index(ptr @.str.2463, i64 1638, i64 %t267, i64 %t269) +ok4197: + %t274 = getelementptr inbounds %S.gen.Gen, ptr %t272, i32 0, i32 16 + %t275 = load i64, ptr %a2 + %t276 = load { ptr, i64, i64 }, ptr %t274 + %t277 = extractvalue { ptr, i64, i64 } %t276, 1 + %t278 = icmp uge i64 %t275, %t277 + br i1 %t278, label %range4198, label %inrange4199 +range4198: + call void @finch_panic_index(ptr @.str.2554, i64 1793, i64 %t275, i64 %t277) unreachable -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 %panic3973, label %ok3974 -panic3973: - call void @finch_panic(ptr @.str.2464, i64 1639, ptr @.str.2465) +inrange4199: + %t279 = extractvalue { ptr, i64, i64 } %t276, 0 + %t280 = getelementptr inbounds %S.gen.StructDef, ptr %t279, i64 %t275 + %t281 = getelementptr inbounds %S.gen.StructDef, ptr %t280, i32 0, i32 15 + store i64 2, ptr %t281 + %t282 = load ptr, ptr %a1 + %t283 = icmp eq ptr %t282, null + br i1 %t283, label %panic4200, label %ok4201 +panic4200: + call void @finch_panic(ptr @.str.2555, i64 1794, ptr @.str.2556) unreachable -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.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.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.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 - store { ptr, i64, i64 } %t291, ptr %a294 +ok4201: + %t284 = getelementptr inbounds %S.gen.Gen, ptr %t282, i32 0, i32 2 + %t285 = getelementptr inbounds { ptr, i64, i64 }, ptr %t284, i32 0, i32 1 + %t286 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 0 + %t287 = load { ptr, i64, i64 }, ptr %t286 + store { ptr, i64, i64 } { ptr @.str.2557, i64 5, i64 0 }, 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.2558, i64 10, i64 0 }, ptr %a294 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.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 - %t301 = add i64 %t300, 1 - call void @finch_arr_reserve(ptr %t276, i64 %t301, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t302 = load ptr, ptr %t276 - %t303 = getelementptr inbounds { ptr, i64, i64 }, ptr %t302, i64 %t300 - store { ptr, i64, i64 } %t299, ptr %t303 - store i64 %t301, ptr %t277 + store { ptr, i64, i64 } %t291, ptr %a295 + call void @finch_str_drop(ptr %a295) + %t296 = load { ptr, i64, i64 }, ptr %a292 + %t297 = getelementptr inbounds { ptr, i64, i64 }, ptr %a43, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.2559, i64 2, i64 0 }, ptr %a298 + call void @finch_str_join(ptr %a299, ptr %a43, ptr %a298) + %t300 = load { ptr, i64, i64 }, ptr %a299 + store { ptr, i64, i64 } %t296, ptr %a302 + store { ptr, i64, i64 } %t300, ptr %a303 + call void @finch_str_concat(ptr %a301, ptr %a302, ptr %a303) + store { ptr, i64, i64 } %t296, ptr %a304 + call void @finch_str_drop(ptr %a304) + store { ptr, i64, i64 } %t300, ptr %a305 + call void @finch_str_drop(ptr %a305) + %t306 = load { ptr, i64, i64 }, ptr %a301 + store { ptr, i64, i64 } %t306, ptr %a308 + store { ptr, i64, i64 } { ptr @.str.2560, i64 2, i64 0 }, ptr %a309 + call void @finch_str_concat(ptr %a307, ptr %a308, ptr %a309) + store { ptr, i64, i64 } %t306, ptr %a310 + call void @finch_str_drop(ptr %a310) + %t311 = load { ptr, i64, i64 }, ptr %a307 + %t312 = load i64, ptr %t285 + %t313 = add i64 %t312, 1 + call void @finch_arr_reserve(ptr %t284, i64 %t313, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t314 = load ptr, ptr %t284 + %t315 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i64 %t312 + store { ptr, i64, i64 } %t311, ptr %t315 + store i64 %t313, ptr %t285 + call void @finch.drop.arr_str(ptr %a43) + call void @finch.drop.S_cimport_CStruct(ptr %a31) ret void } @@ -37146,114 +43239,121 @@ entry: %a66 = alloca { ptr, i64, i64 }, align 16 %a81 = alloca { ptr, i64, i64 }, align 16 %a82 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = 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 + %a85 = alloca { ptr, i64, i64 }, align 16 + %a100 = alloca { ptr, i64, i64 }, align 16 + %a101 = alloca { ptr, i64, i64 }, align 16 + %a104 = 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 + %a120 = alloca { ptr, i64, i64 }, align 16 + %a121 = alloca { ptr, i64, i64 }, align 16 + %a122 = alloca { ptr, i64, i64 }, align 16 + %a123 = alloca { ptr, i64, i64 }, align 16 %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 %a136 = alloca { ptr, i64, i64 }, align 16 %a137 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 + %a140 = 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 + %a154 = alloca { ptr, i64, i64 }, align 16 + %a155 = alloca { ptr, i64, i64 }, align 16 + %a158 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store i64 %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic3975, label %ok3976 -panic3975: - call void @finch_panic(ptr @.str.2470, i64 1643, ptr @.str.2471) + br i1 %t4, label %panic4202, label %ok4203 +panic4202: + call void @finch_panic(ptr @.str.2561, i64 1798, ptr @.str.2562) unreachable -ok3976: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 15 +ok4203: + %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 16 %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 %range3977, label %inrange3978 -range3977: - call void @finch_panic_index(ptr @.str.2472, i64 1643, i64 %t6, i64 %t8) + br i1 %t9, label %range4204, label %inrange4205 +range4204: + call void @finch_panic_index(ptr @.str.2563, i64 1798, i64 %t6, i64 %t8) unreachable -inrange3978: +inrange4205: %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 %then3979, label %endif3981 -then3979: + br i1 %t14, label %then4206, label %endif4208 +then4206: ret void -endif3981: +endif4208: %t15 = load ptr, ptr %a1 %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic3982, label %ok3983 -panic3982: - call void @finch_panic(ptr @.str.2473, i64 1646, ptr @.str.2474) + br i1 %t16, label %panic4209, label %ok4210 +panic4209: + call void @finch_panic(ptr @.str.2564, i64 1801, ptr @.str.2565) unreachable -ok3983: - %t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 15 +ok4210: + %t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 16 %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 %range3984, label %inrange3985 -range3984: - call void @finch_panic_index(ptr @.str.2475, i64 1646, i64 %t18, i64 %t20) + br i1 %t21, label %range4211, label %inrange4212 +range4211: + call void @finch_panic_index(ptr @.str.2566, i64 1801, i64 %t18, i64 %t20) unreachable -inrange3985: +inrange4212: %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 %then3986, label %endif3988 -then3986: + br i1 %t25, label %then4213, label %endif4215 +then4213: %t26 = load ptr, ptr %a1 %t27 = load i64, ptr %a2 call void @finch.gen.resolveCStruct(ptr %t26, i64 %t27) ret void -endif3988: +endif4215: %t28 = load ptr, ptr %a1 %t29 = icmp eq ptr %t28, null - br i1 %t29, label %panic3989, label %ok3990 -panic3989: - call void @finch_panic(ptr @.str.2476, i64 1650, ptr @.str.2477) + br i1 %t29, label %panic4216, label %ok4217 +panic4216: + call void @finch_panic(ptr @.str.2567, i64 1805, ptr @.str.2568) unreachable -ok3990: - %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 15 +ok4217: + %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 16 %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 %range3991, label %inrange3992 -range3991: - call void @finch_panic_index(ptr @.str.2478, i64 1650, i64 %t31, i64 %t33) + br i1 %t34, label %range4218, label %inrange4219 +range4218: + call void @finch_panic_index(ptr @.str.2569, i64 1805, i64 %t31, i64 %t33) unreachable -inrange3992: +inrange4219: %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 %then3993, label %endif3995 -then3993: + br i1 %t40, label %then4220, label %endif4222 +then4220: %t41 = load ptr, ptr %a1 %t42 = load i64, ptr %a2 call void @finch.gen.resolveStructBody(ptr %t41, i64 %t42) ret void -endif3995: +endif4222: %t43 = load ptr, ptr %a1 %t44 = icmp eq ptr %t43, null - br i1 %t44, label %panic3996, label %ok3997 -panic3996: - call void @finch_panic(ptr @.str.2479, i64 1655, ptr @.str.2480) + br i1 %t44, label %panic4223, label %ok4224 +panic4223: + call void @finch_panic(ptr @.str.2570, i64 1810, ptr @.str.2571) unreachable -ok3997: - %t45 = getelementptr inbounds %S.gen.Gen, ptr %t43, i32 0, i32 17 +ok4224: + %t45 = getelementptr inbounds %S.gen.Gen, ptr %t43, i32 0, i32 18 %t46 = load { ptr, i64, i64 }, ptr %t45 store { ptr, i64, i64 } %t46, ptr %a47 call void @finch.copy.arr_str(ptr %a48, ptr %a47) @@ -37261,12 +43361,12 @@ ok3997: store { ptr, i64, i64 } %t49, ptr %a50 %t51 = load ptr, ptr %a1 %t52 = icmp eq ptr %t51, null - br i1 %t52, label %panic3998, label %ok3999 -panic3998: - call void @finch_panic(ptr @.str.2481, i64 1656, ptr @.str.2482) + br i1 %t52, label %panic4225, label %ok4226 +panic4225: + call void @finch_panic(ptr @.str.2572, i64 1811, ptr @.str.2573) unreachable -ok3999: - %t53 = getelementptr inbounds %S.gen.Gen, ptr %t51, i32 0, i32 18 +ok4226: + %t53 = getelementptr inbounds %S.gen.Gen, ptr %t51, i32 0, i32 19 %t54 = load { ptr, i64, i64 }, ptr %t53 store { ptr, i64, i64 } %t54, ptr %a55 call void @finch.copy.arr_S_ast_Type(ptr %a56, ptr %a55) @@ -37274,12 +43374,12 @@ ok3999: store { ptr, i64, i64 } %t57, ptr %a58 %t59 = load ptr, ptr %a1 %t60 = icmp eq ptr %t59, null - br i1 %t60, label %panic4000, label %ok4001 -panic4000: - call void @finch_panic(ptr @.str.2483, i64 1657, ptr @.str.2484) + br i1 %t60, label %panic4227, label %ok4228 +panic4227: + call void @finch_panic(ptr @.str.2574, i64 1812, ptr @.str.2575) unreachable -ok4001: - %t61 = getelementptr inbounds %S.gen.Gen, ptr %t59, i32 0, i32 19 +ok4228: + %t61 = getelementptr inbounds %S.gen.Gen, ptr %t59, i32 0, i32 20 %t62 = load { ptr, i64, i64 }, ptr %t61 store { ptr, i64, i64 } %t62, ptr %a63 call void @finch_str_copy(ptr %a64, ptr %a63) @@ -37287,150 +43387,173 @@ ok4001: store { ptr, i64, i64 } %t65, ptr %a66 %t67 = load ptr, ptr %a1 %t68 = icmp eq ptr %t67, null - br i1 %t68, label %panic4002, label %ok4003 -panic4002: - call void @finch_panic(ptr @.str.2485, i64 1658, ptr @.str.2486) + br i1 %t68, label %panic4229, label %ok4230 +panic4229: + call void @finch_panic(ptr @.str.2576, i64 1813, ptr @.str.2577) unreachable -ok4003: - %t69 = getelementptr inbounds %S.gen.Gen, ptr %t67, i32 0, i32 15 +ok4230: + %t69 = getelementptr inbounds %S.gen.Gen, ptr %t67, i32 0, i32 16 %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 %range4004, label %inrange4005 -range4004: - call void @finch_panic_index(ptr @.str.2487, i64 1658, i64 %t70, i64 %t72) + br i1 %t73, label %range4231, label %inrange4232 +range4231: + call void @finch_panic_index(ptr @.str.2578, i64 1813, i64 %t70, i64 %t72) unreachable -inrange4005: +inrange4232: %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 %panic4006, label %ok4007 -panic4006: - call void @finch_panic(ptr @.str.2488, i64 1658, ptr @.str.2489) + br i1 %t79, label %panic4233, label %ok4234 +panic4233: + call void @finch_panic(ptr @.str.2579, i64 1813, ptr @.str.2580) unreachable -ok4007: - %t80 = getelementptr inbounds %S.gen.Gen, ptr %t78, i32 0, i32 17 +ok4234: + %t80 = getelementptr inbounds %S.gen.Gen, ptr %t78, i32 0, i32 18 store { ptr, i64, i64 } %t77, ptr %a81 call void @finch.copy.arr_str(ptr %a82, ptr %a81) %t83 = load { ptr, i64, i64 }, ptr %a82 + %t84 = load { ptr, i64, i64 }, ptr %t80 store { ptr, i64, i64 } %t83, ptr %t80 - %t84 = load ptr, ptr %a1 - %t85 = icmp eq ptr %t84, null - br i1 %t85, label %panic4008, label %ok4009 -panic4008: - call void @finch_panic(ptr @.str.2490, i64 1659, ptr @.str.2491) + store { ptr, i64, i64 } %t84, ptr %a85 + call void @finch.drop.arr_str(ptr %a85) + %t86 = load ptr, ptr %a1 + %t87 = icmp eq ptr %t86, null + br i1 %t87, label %panic4235, label %ok4236 +panic4235: + call void @finch_panic(ptr @.str.2581, i64 1814, ptr @.str.2582) unreachable -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 %range4010, label %inrange4011 -range4010: - call void @finch_panic_index(ptr @.str.2492, i64 1659, i64 %t87, i64 %t89) +ok4236: + %t88 = getelementptr inbounds %S.gen.Gen, ptr %t86, i32 0, i32 16 + %t89 = load i64, ptr %a2 + %t90 = load { ptr, i64, i64 }, ptr %t88 + %t91 = extractvalue { ptr, i64, i64 } %t90, 1 + %t92 = icmp uge i64 %t89, %t91 + br i1 %t92, label %range4237, label %inrange4238 +range4237: + call void @finch_panic_index(ptr @.str.2583, i64 1814, i64 %t89, i64 %t91) unreachable -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 %panic4012, label %ok4013 -panic4012: - call void @finch_panic(ptr @.str.2493, i64 1659, ptr @.str.2494) +inrange4238: + %t93 = extractvalue { ptr, i64, i64 } %t90, 0 + %t94 = getelementptr inbounds %S.gen.StructDef, ptr %t93, i64 %t89 + %t95 = getelementptr inbounds %S.gen.StructDef, ptr %t94, i32 0, i32 7 + %t96 = load { ptr, i64, i64 }, ptr %t95 + %t97 = load ptr, ptr %a1 + %t98 = icmp eq ptr %t97, null + br i1 %t98, label %panic4239, label %ok4240 +panic4239: + call void @finch_panic(ptr @.str.2584, i64 1814, ptr @.str.2585) unreachable -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) - %t100 = load { ptr, i64, i64 }, ptr %a99 - store { ptr, i64, i64 } %t100, ptr %t97 - %t101 = load ptr, ptr %a1 - %t102 = icmp eq ptr %t101, null - br i1 %t102, label %panic4014, label %ok4015 -panic4014: - call void @finch_panic(ptr @.str.2496, i64 1660, ptr @.str.2497) +ok4240: + %t99 = getelementptr inbounds %S.gen.Gen, ptr %t97, i32 0, i32 19 + store { ptr, i64, i64 } %t96, ptr %a100 + call void @finch.copy.arr_S_ast_Type(ptr %a101, ptr %a100) + %t102 = load { ptr, i64, i64 }, ptr %a101 + %t103 = load { ptr, i64, i64 }, ptr %t99 + store { ptr, i64, i64 } %t102, ptr %t99 + store { ptr, i64, i64 } %t103, ptr %a104 + call void @finch.drop.arr_S_ast_Type(ptr %a104) + %t105 = load ptr, ptr %a1 + %t106 = icmp eq ptr %t105, null + br i1 %t106, label %panic4241, label %ok4242 +panic4241: + call void @finch_panic(ptr @.str.2587, i64 1815, ptr @.str.2588) unreachable -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 %range4016, label %inrange4017 -range4016: - call void @finch_panic_index(ptr @.str.2498, i64 1660, i64 %t104, i64 %t106) +ok4242: + %t107 = getelementptr inbounds %S.gen.Gen, ptr %t105, i32 0, i32 16 + %t108 = load i64, ptr %a2 + %t109 = load { ptr, i64, i64 }, ptr %t107 + %t110 = extractvalue { ptr, i64, i64 } %t109, 1 + %t111 = icmp uge i64 %t108, %t110 + br i1 %t111, label %range4243, label %inrange4244 +range4243: + call void @finch_panic_index(ptr @.str.2589, i64 1815, i64 %t108, i64 %t110) unreachable -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.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.2499, i64 1, i64 0 }, ptr %a118 +inrange4244: + %t112 = extractvalue { ptr, i64, i64 } %t109, 0 + %t113 = getelementptr inbounds %S.gen.StructDef, ptr %t112, i64 %t108 + %t114 = getelementptr inbounds %S.gen.StructDef, ptr %t113, i32 0, i32 1 + %t115 = load { ptr, i64, i64 }, ptr %t114 + store { ptr, i64, i64 } { ptr @.str.2586, i64 17, 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 - %t120 = load ptr, ptr %a1 - %t121 = icmp eq ptr %t120, null - br i1 %t121, label %panic4018, label %ok4019 -panic4018: - call void @finch_panic(ptr @.str.2500, i64 1660, ptr @.str.2501) + store { ptr, i64, i64 } %t119, ptr %a121 + store { ptr, i64, i64 } { ptr @.str.2590, i64 1, i64 0 }, ptr %a122 + call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122) + store { ptr, i64, i64 } %t119, ptr %a123 + call void @finch_str_drop(ptr %a123) + %t124 = load { ptr, i64, i64 }, ptr %a120 + %t125 = load ptr, ptr %a1 + %t126 = icmp eq ptr %t125, null + br i1 %t126, label %panic4245, label %ok4246 +panic4245: + call void @finch_panic(ptr @.str.2591, i64 1815, ptr @.str.2592) unreachable -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 - %t124 = load i64, ptr %a2 - call void @finch.gen.resolveStructBody(ptr %t123, i64 %t124) - %t125 = load { ptr, i64, i64 }, ptr %a50 - %t126 = load ptr, ptr %a1 - %t127 = icmp eq ptr %t126, null - br i1 %t127, label %panic4020, label %ok4021 -panic4020: - call void @finch_panic(ptr @.str.2502, i64 1662, ptr @.str.2503) - unreachable -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) - %t131 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } %t131, ptr %t128 - %t132 = load { ptr, i64, i64 }, ptr %a58 +ok4246: + %t127 = getelementptr inbounds %S.gen.Gen, ptr %t125, i32 0, i32 20 + %t128 = load { ptr, i64, i64 }, ptr %t127 + store { ptr, i64, i64 } %t124, ptr %t127 + store { ptr, i64, i64 } %t128, ptr %a129 + call void @finch_str_drop(ptr %a129) + %t130 = load ptr, ptr %a1 + %t131 = load i64, ptr %a2 + call void @finch.gen.resolveStructBody(ptr %t130, i64 %t131) + %t132 = load { ptr, i64, i64 }, ptr %a50 %t133 = load ptr, ptr %a1 %t134 = icmp eq ptr %t133, null - br i1 %t134, label %panic4022, label %ok4023 -panic4022: - call void @finch_panic(ptr @.str.2504, i64 1663, ptr @.str.2505) + br i1 %t134, label %panic4247, label %ok4248 +panic4247: + call void @finch_panic(ptr @.str.2593, i64 1817, ptr @.str.2594) unreachable -ok4023: +ok4248: %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) + call void @finch.copy.arr_str(ptr %a137, ptr %a136) %t138 = load { ptr, i64, i64 }, ptr %a137 + %t139 = load { ptr, i64, i64 }, ptr %t135 store { ptr, i64, i64 } %t138, ptr %t135 - %t139 = load { ptr, i64, i64 }, ptr %a66 - %t140 = load ptr, ptr %a1 - %t141 = icmp eq ptr %t140, null - br i1 %t141, label %panic4024, label %ok4025 -panic4024: - call void @finch_panic(ptr @.str.2506, i64 1664, ptr @.str.2507) + store { ptr, i64, i64 } %t139, ptr %a140 + call void @finch.drop.arr_str(ptr %a140) + %t141 = load { ptr, i64, i64 }, ptr %a58 + %t142 = load ptr, ptr %a1 + %t143 = icmp eq ptr %t142, null + br i1 %t143, label %panic4249, label %ok4250 +panic4249: + call void @finch_panic(ptr @.str.2595, i64 1818, ptr @.str.2596) unreachable -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) - %t145 = load { ptr, i64, i64 }, ptr %a144 - store { ptr, i64, i64 } %t145, ptr %t142 +ok4250: + %t144 = getelementptr inbounds %S.gen.Gen, ptr %t142, i32 0, i32 19 + store { ptr, i64, i64 } %t141, ptr %a145 + call void @finch.copy.arr_S_ast_Type(ptr %a146, ptr %a145) + %t147 = load { ptr, i64, i64 }, ptr %a146 + %t148 = load { ptr, i64, i64 }, ptr %t144 + store { ptr, i64, i64 } %t147, ptr %t144 + store { ptr, i64, i64 } %t148, ptr %a149 + call void @finch.drop.arr_S_ast_Type(ptr %a149) + %t150 = load { ptr, i64, i64 }, ptr %a66 + %t151 = load ptr, ptr %a1 + %t152 = icmp eq ptr %t151, null + br i1 %t152, label %panic4251, label %ok4252 +panic4251: + call void @finch_panic(ptr @.str.2597, i64 1819, ptr @.str.2598) + unreachable +ok4252: + %t153 = getelementptr inbounds %S.gen.Gen, ptr %t151, i32 0, i32 20 + store { ptr, i64, i64 } %t150, ptr %a154 + call void @finch_str_copy(ptr %a155, ptr %a154) + %t156 = load { ptr, i64, i64 }, ptr %a155 + %t157 = load { ptr, i64, i64 }, ptr %t153 + store { ptr, i64, i64 } %t156, ptr %t153 + store { ptr, i64, i64 } %t157, ptr %a158 + call void @finch_str_drop(ptr %a158) + call void @finch_str_drop(ptr %a66) + call void @finch.drop.arr_S_ast_Type(ptr %a58) + call void @finch.drop.arr_str(ptr %a50) ret void } @@ -37447,83 +43570,99 @@ entry: %a64 = alloca { ptr, i64, i64 }, align 16 %a65 = alloca { ptr, i64, i64 }, align 16 %a66 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 + %a67 = 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 %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 %a76 = 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 + %a77 = alloca { ptr, i64, i64 }, align 16 + %a78 = alloca { ptr, i64, i64 }, align 16 + %a79 = 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 %a86 = 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 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca i1, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca i64, align 16 - %a134 = alloca %S.ast.Node, align 16 - %a140 = alloca %S.ast.Type, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca %S.ast.Type, align 16 - %a214 = alloca %S.ast.Type, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = 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 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = 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 - %a306 = alloca { ptr, i64, i64 }, align 16 - %a307 = 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 + %a91 = alloca { ptr, i64, i64 }, align 16 + %a93 = 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 + %a126 = alloca { ptr, i64, i64 }, align 16 + %a127 = alloca { ptr, i64, i64 }, align 16 + %a130 = alloca { ptr, i64, i64 }, align 16 + %a131 = alloca i1, align 16 + %a132 = alloca { ptr, i64, i64 }, align 16 + %a134 = alloca i64, align 16 + %a142 = alloca %S.ast.Node, align 16 + %a148 = alloca %S.ast.Type, align 16 + %a151 = alloca { ptr, i64, i64 }, align 16 + %a152 = alloca { ptr, i64, i64 }, align 16 + %a202 = alloca { ptr, i64, i64 }, align 16 + %a203 = alloca { ptr, i64, i64 }, align 16 + %a221 = alloca %S.ast.Type, align 16 + %a222 = alloca %S.ast.Type, align 16 + %a256 = alloca { ptr, i64, i64 }, align 16 + %a257 = alloca { ptr, i64, i64 }, align 16 + %a260 = 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 + %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 + %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 + %a312 = 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 + %a316 = alloca { ptr, i64, i64 }, align 16 + %a317 = alloca { ptr, i64, i64 }, align 16 + %a318 = alloca { ptr, i64, i64 }, align 16 + %a321 = alloca { ptr, i64, i64 }, align 16 + %a322 = alloca { ptr, i64, i64 }, align 16 + %a324 = 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 + %a328 = alloca { ptr, i64, i64 }, align 16 + %a330 = 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 store ptr %p0, ptr %a1 store i64 %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic4026, label %ok4027 -panic4026: - call void @finch_panic(ptr @.str.2508, i64 1668, ptr @.str.2509) + br i1 %t4, label %panic4253, label %ok4254 +panic4253: + call void @finch_panic(ptr @.str.2599, i64 1823, ptr @.str.2600) unreachable -ok4027: +ok4254: %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 %panic4028, label %ok4029 -panic4028: - call void @finch_panic(ptr @.str.2510, i64 1668, ptr @.str.2511) + br i1 %t7, label %panic4255, label %ok4256 +panic4255: + call void @finch_panic(ptr @.str.2601, i64 1823, ptr @.str.2602) unreachable -ok4029: - %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 15 +ok4256: + %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 %range4030, label %inrange4031 -range4030: - call void @finch_panic_index(ptr @.str.2512, i64 1668, i64 %t9, i64 %t11) + br i1 %t12, label %range4257, label %inrange4258 +range4257: + call void @finch_panic_index(ptr @.str.2603, i64 1823, i64 %t9, i64 %t11) unreachable -inrange4031: +inrange4258: %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 @@ -37531,31 +43670,31 @@ inrange4031: %t17 = load { ptr, i64, i64 }, ptr %t5 %t18 = extractvalue { ptr, i64, i64 } %t17, 1 %t19 = icmp uge i64 %t16, %t18 - br i1 %t19, label %range4032, label %inrange4033 -range4032: - call void @finch_panic_index(ptr @.str.2513, i64 1668, i64 %t16, i64 %t18) + br i1 %t19, label %range4259, label %inrange4260 +range4259: + call void @finch_panic_index(ptr @.str.2604, i64 1823, i64 %t16, i64 %t18) unreachable -inrange4033: +inrange4260: %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 %panic4034, label %ok4035 -panic4034: - call void @finch_panic(ptr @.str.2514, i64 1668, ptr @.str.2515) + br i1 %t24, label %panic4261, label %ok4262 +panic4261: + call void @finch_panic(ptr @.str.2605, i64 1823, ptr @.str.2606) unreachable -ok4035: - %t25 = getelementptr inbounds %S.gen.Gen, ptr %t23, i32 0, i32 15 +ok4262: + %t25 = getelementptr inbounds %S.gen.Gen, ptr %t23, i32 0, i32 16 %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 %range4036, label %inrange4037 -range4036: - call void @finch_panic_index(ptr @.str.2516, i64 1668, i64 %t26, i64 %t28) + br i1 %t29, label %range4263, label %inrange4264 +range4263: + call void @finch_panic_index(ptr @.str.2607, i64 1823, i64 %t26, i64 %t28) unreachable -inrange4037: +inrange4264: %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 @@ -37563,11 +43702,11 @@ inrange4037: %t34 = load { ptr, i64, i64 }, ptr %t22 %t35 = extractvalue { ptr, i64, i64 } %t34, 1 %t36 = icmp uge i64 %t33, %t35 - br i1 %t36, label %range4038, label %inrange4039 -range4038: - call void @finch_panic_index(ptr @.str.2517, i64 1668, i64 %t33, i64 %t35) + br i1 %t36, label %range4265, label %inrange4266 +range4265: + call void @finch_panic_index(ptr @.str.2608, i64 1823, i64 %t33, i64 %t35) unreachable -inrange4039: +inrange4266: %t37 = extractvalue { ptr, i64, i64 } %t34, 0 %t38 = getelementptr inbounds %S.ast.Node, ptr %t37, i64 %t33 %t39 = load %S.ast.Node, ptr %t38 @@ -37577,455 +43716,493 @@ inrange4039: store %S.ast.Node %t42, ptr %a43 %t44 = load ptr, ptr %a1 %t45 = icmp eq ptr %t44, null - br i1 %t45, label %panic4040, label %ok4041 -panic4040: - call void @finch_panic(ptr @.str.2518, i64 1669, ptr @.str.2519) + br i1 %t45, label %panic4267, label %ok4268 +panic4267: + call void @finch_panic(ptr @.str.2609, i64 1824, ptr @.str.2610) unreachable -ok4041: - %t46 = getelementptr inbounds %S.gen.Gen, ptr %t44, i32 0, i32 15 +ok4268: + %t46 = getelementptr inbounds %S.gen.Gen, ptr %t44, i32 0, i32 16 %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 %range4042, label %inrange4043 -range4042: - call void @finch_panic_index(ptr @.str.2520, i64 1669, i64 %t47, i64 %t49) + br i1 %t50, label %range4269, label %inrange4270 +range4269: + call void @finch_panic_index(ptr @.str.2611, i64 1824, i64 %t47, i64 %t49) unreachable -inrange4043: +inrange4270: %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 %then4044, label %endif4046 -then4044: + br i1 %t55, label %then4271, label %endif4273 +then4271: %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.2521, i64 11, i64 0 }, ptr %a61 + store { ptr, i64, i64 } { ptr @.str.2612, 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.2522, i64 26, i64 0 }, ptr %a66 + store { ptr, i64, i64 } { ptr @.str.2613, 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 - %t69 = load { ptr, i64, i64 }, ptr %t68 - store { ptr, i64, i64 } %t67, 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.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 - %t79 = load { ptr, i64, i64 }, ptr %t78 - store { ptr, i64, i64 } %t77, 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.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 %endif4046 -endif4046: - %t88 = load ptr, ptr %a1 - %t89 = icmp eq ptr %t88, null - br i1 %t89, label %panic4047, label %ok4048 -panic4047: - call void @finch_panic(ptr @.str.2525, i64 1672, ptr @.str.2526) + store { ptr, i64, i64 } %t63, ptr %a67 + call void @finch_str_drop(ptr %a67) + %t68 = load { ptr, i64, i64 }, ptr %a64 + %t69 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 1 + %t70 = load { ptr, i64, i64 }, ptr %t69 + store { ptr, i64, i64 } %t68, ptr %a72 + store { ptr, i64, i64 } %t70, ptr %a73 + call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73) + store { ptr, i64, i64 } %t68, ptr %a74 + call void @finch_str_drop(ptr %a74) + %t75 = load { ptr, i64, i64 }, ptr %a71 + store { ptr, i64, i64 } %t75, ptr %a77 + store { ptr, i64, i64 } { ptr @.str.2614, i64 7, i64 0 }, ptr %a78 + call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78) + store { ptr, i64, i64 } %t75, ptr %a79 + call void @finch_str_drop(ptr %a79) + %t80 = load { ptr, i64, i64 }, ptr %a76 + %t81 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 1 + %t82 = load { ptr, i64, i64 }, ptr %t81 + store { ptr, i64, i64 } %t80, ptr %a84 + store { ptr, i64, i64 } %t82, ptr %a85 + call void @finch_str_concat(ptr %a83, ptr %a84, ptr %a85) + store { ptr, i64, i64 } %t80, ptr %a86 + call void @finch_str_drop(ptr %a86) + %t87 = load { ptr, i64, i64 }, ptr %a83 + store { ptr, i64, i64 } %t87, ptr %a89 + store { ptr, i64, i64 } { ptr @.str.2615, i64 15, i64 0 }, ptr %a90 + call void @finch_str_concat(ptr %a88, ptr %a89, ptr %a90) + store { ptr, i64, i64 } %t87, ptr %a91 + call void @finch_str_drop(ptr %a91) + %t92 = load { ptr, i64, i64 }, ptr %a88 + call void @finch.gen.fail(ptr %t56, %S.ast.Node %t57, { ptr, i64, i64 } %t92) + store { ptr, i64, i64 } %t92, ptr %a93 + call void @finch_str_drop(ptr %a93) + br label %endif4273 +endif4273: + %t94 = load ptr, ptr %a1 + %t95 = icmp eq ptr %t94, null + br i1 %t95, label %panic4274, label %ok4275 +panic4274: + call void @finch_panic(ptr @.str.2616, i64 1827, ptr @.str.2617) unreachable -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 %range4049, label %inrange4050 -range4049: - call void @finch_panic_index(ptr @.str.2527, i64 1672, i64 %t91, i64 %t93) +ok4275: + %t96 = getelementptr inbounds %S.gen.Gen, ptr %t94, i32 0, i32 16 + %t97 = load i64, ptr %a2 + %t98 = load { ptr, i64, i64 }, ptr %t96 + %t99 = extractvalue { ptr, i64, i64 } %t98, 1 + %t100 = icmp uge i64 %t97, %t99 + br i1 %t100, label %range4276, label %inrange4277 +range4276: + call void @finch_panic_index(ptr @.str.2618, i64 1827, i64 %t97, i64 %t99) unreachable -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 %panic4051, label %ok4052 -panic4051: - call void @finch_panic(ptr @.str.2528, i64 1673, ptr @.str.2529) +inrange4277: + %t101 = extractvalue { ptr, i64, i64 } %t98, 0 + %t102 = getelementptr inbounds %S.gen.StructDef, ptr %t101, i64 %t97 + %t103 = getelementptr inbounds %S.gen.StructDef, ptr %t102, i32 0, i32 15 + store i64 1, ptr %t103 + %t104 = load ptr, ptr %a1 + %t105 = icmp eq ptr %t104, null + br i1 %t105, label %panic4278, label %ok4279 +panic4278: + call void @finch_panic(ptr @.str.2619, i64 1828, ptr @.str.2620) unreachable -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 - call void @finch_str_copy(ptr %a103, ptr %a102) - %t104 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t104, ptr %a105 - %t106 = load ptr, ptr %a1 - %t107 = icmp eq ptr %t106, null - br i1 %t107, label %panic4053, label %ok4054 -panic4053: - call void @finch_panic(ptr @.str.2530, i64 1674, ptr @.str.2531) +ok4279: + %t106 = getelementptr inbounds %S.gen.Gen, ptr %t104, i32 0, i32 14 + %t107 = load { ptr, i64, i64 }, ptr %t106 + store { ptr, i64, i64 } %t107, ptr %a108 + call void @finch_str_copy(ptr %a109, ptr %a108) + %t110 = load { ptr, i64, i64 }, ptr %a109 + store { ptr, i64, i64 } %t110, ptr %a111 + %t112 = load ptr, ptr %a1 + %t113 = icmp eq ptr %t112, null + br i1 %t113, label %panic4280, label %ok4281 +panic4280: + call void @finch_panic(ptr @.str.2621, i64 1829, ptr @.str.2622) unreachable -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 %range4055, label %inrange4056 -range4055: - call void @finch_panic_index(ptr @.str.2532, i64 1674, i64 %t109, i64 %t111) +ok4281: + %t114 = getelementptr inbounds %S.gen.Gen, ptr %t112, i32 0, i32 16 + %t115 = load i64, ptr %a2 + %t116 = load { ptr, i64, i64 }, ptr %t114 + %t117 = extractvalue { ptr, i64, i64 } %t116, 1 + %t118 = icmp uge i64 %t115, %t117 + br i1 %t118, label %range4282, label %inrange4283 +range4282: + call void @finch_panic_index(ptr @.str.2623, i64 1829, i64 %t115, i64 %t117) unreachable -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 %panic4057, label %ok4058 -panic4057: - call void @finch_panic(ptr @.str.2533, i64 1674, ptr @.str.2534) +inrange4283: + %t119 = extractvalue { ptr, i64, i64 } %t116, 0 + %t120 = getelementptr inbounds %S.gen.StructDef, ptr %t119, i64 %t115 + %t121 = getelementptr inbounds %S.gen.StructDef, ptr %t120, i32 0, i32 0 + %t122 = load { ptr, i64, i64 }, ptr %t121 + %t123 = load ptr, ptr %a1 + %t124 = icmp eq ptr %t123, null + br i1 %t124, label %panic4284, label %ok4285 +panic4284: + call void @finch_panic(ptr @.str.2624, i64 1829, ptr @.str.2625) unreachable -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) - %t122 = load { ptr, i64, i64 }, ptr %a121 - store { ptr, i64, i64 } %t122, ptr %t119 - store i1 false, ptr %a123 - 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.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.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 - store %S.ast.Node %t133, ptr %a134 - %t135 = load ptr, ptr %a1 - %t136 = getelementptr inbounds %S.ast.Node, ptr %a134, i32 0, i32 5 - %t137 = load %S.ast.Type, ptr %t136 - %t138 = load %S.ast.Node, ptr %a134 - %t139 = call %S.ast.Type @finch.gen.resolve(ptr %t135, %S.ast.Type %t137, %S.ast.Node %t138) - store %S.ast.Type %t139, ptr %a140 - %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.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 %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 +ok4285: + %t125 = getelementptr inbounds %S.gen.Gen, ptr %t123, i32 0, i32 14 + store { ptr, i64, i64 } %t122, ptr %a126 + call void @finch_str_copy(ptr %a127, ptr %a126) + %t128 = load { ptr, i64, i64 }, ptr %a127 + %t129 = load { ptr, i64, i64 }, ptr %t125 + store { ptr, i64, i64 } %t128, ptr %t125 + store { ptr, i64, i64 } %t129, ptr %a130 + call void @finch_str_drop(ptr %a130) + store i1 false, ptr %a131 + store { ptr, i64, i64 } zeroinitializer, ptr %a132 + %t133 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 9 + store i64 0, ptr %a134 + br label %each.cond4286 +each.cond4286: + %t135 = getelementptr inbounds { ptr, i64, i64 }, ptr %t133, 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.body4287, label %each.end4289 +each.body4287: + %t139 = load ptr, ptr %t133 + %t140 = getelementptr inbounds %S.ast.Node, ptr %t139, i64 %t137 + %t141 = load %S.ast.Node, ptr %t140 + store %S.ast.Node %t141, ptr %a142 + %t143 = load ptr, ptr %a1 + %t144 = getelementptr inbounds %S.ast.Node, ptr %a142, i32 0, i32 5 + %t145 = load %S.ast.Type, ptr %t144 + %t146 = load %S.ast.Node, ptr %a142 + %t147 = call %S.ast.Type @finch.gen.resolve(ptr %t143, %S.ast.Type %t145, %S.ast.Node %t146) + store %S.ast.Type %t147, ptr %a148 + %t149 = getelementptr inbounds %S.ast.Type, ptr %a148, i32 0, i32 0 %t150 = load { ptr, i64, i64 }, ptr %t149 - %t151 = getelementptr inbounds %S.ast.Type, ptr %a140, i32 0, i32 2 - %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 %endif4065 -endif4065: - %t154 = load ptr, ptr %a1 - %t155 = icmp eq ptr %t154, null - br i1 %t155, label %panic4066, label %ok4067 -panic4066: - call void @finch_panic(ptr @.str.2536, i64 1682, ptr @.str.2537) + store { ptr, i64, i64 } %t150, ptr %a151 + store { ptr, i64, i64 } { ptr @.str.2626, i64 6, i64 0 }, ptr %a152 + %t153 = call i32 @finch_str_eq(ptr %a151, ptr %a152) + %t154 = icmp ne i32 %t153, 0 + br i1 %t154, label %then4290, label %endif4292 +then4290: + %t155 = load ptr, ptr %a1 + %t156 = load ptr, ptr %a1 + %t157 = getelementptr inbounds %S.ast.Type, ptr %a148, i32 0, i32 3 + %t158 = load { ptr, i64, i64 }, ptr %t157 + %t159 = getelementptr inbounds %S.ast.Type, ptr %a148, i32 0, i32 2 + %t160 = load { ptr, i64, i64 }, ptr %t159 + %t161 = call i64 @finch.gen.findStruct(ptr %t156, { ptr, i64, i64 } %t158, { ptr, i64, i64 } %t160) + call void @finch.gen.resolveStruct(ptr %t155, i64 %t161) + br label %endif4292 +endif4292: + %t162 = load ptr, ptr %a1 + %t163 = icmp eq ptr %t162, null + br i1 %t163, label %panic4293, label %ok4294 +panic4293: + call void @finch_panic(ptr @.str.2627, i64 1837, ptr @.str.2628) unreachable -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 %range4068, label %inrange4069 -range4068: - call void @finch_panic_index(ptr @.str.2538, i64 1682, i64 %t157, i64 %t159) +ok4294: + %t164 = getelementptr inbounds %S.gen.Gen, ptr %t162, i32 0, i32 16 + %t165 = load i64, ptr %a2 + %t166 = load { ptr, i64, i64 }, ptr %t164 + %t167 = extractvalue { ptr, i64, i64 } %t166, 1 + %t168 = icmp uge i64 %t165, %t167 + br i1 %t168, label %range4295, label %inrange4296 +range4295: + call void @finch_panic_index(ptr @.str.2629, i64 1837, i64 %t165, i64 %t167) unreachable -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 %panic4070, label %ok4071 -panic4070: - call void @finch_panic(ptr @.str.2539, i64 1682, ptr @.str.2540) +inrange4296: + %t169 = extractvalue { ptr, i64, i64 } %t166, 0 + %t170 = getelementptr inbounds %S.gen.StructDef, ptr %t169, i64 %t165 + %t171 = getelementptr inbounds %S.gen.StructDef, ptr %t170, i32 0, i32 3 + %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 %panic4297, label %ok4298 +panic4297: + call void @finch_panic(ptr @.str.2630, i64 1837, ptr @.str.2631) unreachable -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 %range4072, label %inrange4073 -range4072: - call void @finch_panic_index(ptr @.str.2541, i64 1682, i64 %t168, i64 %t170) +ok4298: + %t175 = getelementptr inbounds %S.gen.Gen, ptr %t173, i32 0, i32 16 + %t176 = load i64, ptr %a2 + %t177 = load { ptr, i64, i64 }, ptr %t175 + %t178 = extractvalue { ptr, i64, i64 } %t177, 1 + %t179 = icmp uge i64 %t176, %t178 + br i1 %t179, label %range4299, label %inrange4300 +range4299: + call void @finch_panic_index(ptr @.str.2632, i64 1837, i64 %t176, i64 %t178) unreachable -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 - %t175 = getelementptr inbounds { ptr, i64, i64 }, ptr %t174, i32 0, i32 1 - %t176 = load i64, ptr %t175 - %t177 = load i64, ptr %t164 - %t178 = add i64 %t177, 1 - call void @finch_arr_reserve(ptr %t163, i64 %t178, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t179 = load ptr, ptr %t163 - %t180 = getelementptr inbounds i64, ptr %t179, i64 %t177 - store i64 %t176, ptr %t180 - store i64 %t178, ptr %t164 - %t181 = load ptr, ptr %a1 - %t182 = icmp eq ptr %t181, null - br i1 %t182, label %panic4074, label %ok4075 -panic4074: - call void @finch_panic(ptr @.str.2542, i64 1683, ptr @.str.2543) +inrange4300: + %t180 = extractvalue { ptr, i64, i64 } %t177, 0 + %t181 = getelementptr inbounds %S.gen.StructDef, ptr %t180, i64 %t176 + %t182 = getelementptr inbounds %S.gen.StructDef, ptr %t181, i32 0, i32 11 + %t183 = getelementptr inbounds { ptr, i64, i64 }, ptr %t182, i32 0, i32 1 + %t184 = load i64, ptr %t183 + %t185 = load i64, ptr %t172 + %t186 = add i64 %t185, 1 + call void @finch_arr_reserve(ptr %t171, i64 %t186, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) + %t187 = load ptr, ptr %t171 + %t188 = getelementptr inbounds i64, ptr %t187, i64 %t185 + store i64 %t184, ptr %t188 + store i64 %t186, ptr %t172 + %t189 = load ptr, ptr %a1 + %t190 = icmp eq ptr %t189, null + br i1 %t190, label %panic4301, label %ok4302 +panic4301: + call void @finch_panic(ptr @.str.2633, i64 1838, ptr @.str.2634) unreachable -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 %range4076, label %inrange4077 -range4076: - call void @finch_panic_index(ptr @.str.2544, i64 1683, i64 %t184, i64 %t186) +ok4302: + %t191 = getelementptr inbounds %S.gen.Gen, ptr %t189, i32 0, i32 16 + %t192 = load i64, ptr %a2 + %t193 = load { ptr, i64, i64 }, ptr %t191 + %t194 = extractvalue { ptr, i64, i64 } %t193, 1 + %t195 = icmp uge i64 %t192, %t194 + br i1 %t195, label %range4303, label %inrange4304 +range4303: + call void @finch_panic_index(ptr @.str.2635, i64 1838, i64 %t192, i64 %t194) unreachable -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 - %t191 = getelementptr inbounds { ptr, i64, i64 }, ptr %t190, i32 0, i32 1 - %t192 = getelementptr inbounds %S.ast.Node, ptr %a134, i32 0, i32 1 - %t193 = load { ptr, i64, i64 }, ptr %t192 - store { ptr, i64, i64 } %t193, ptr %a194 - call void @finch_str_copy(ptr %a195, ptr %a194) - %t196 = load { ptr, i64, i64 }, ptr %a195 - %t197 = load i64, ptr %t191 - %t198 = add i64 %t197, 1 - call void @finch_arr_reserve(ptr %t190, i64 %t198, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t199 = load ptr, ptr %t190 - %t200 = getelementptr inbounds { ptr, i64, i64 }, ptr %t199, i64 %t197 - store { ptr, i64, i64 } %t196, ptr %t200 - store i64 %t198, ptr %t191 - %t201 = load ptr, ptr %a1 - %t202 = icmp eq ptr %t201, null - br i1 %t202, label %panic4078, label %ok4079 -panic4078: - call void @finch_panic(ptr @.str.2545, i64 1684, ptr @.str.2546) +inrange4304: + %t196 = extractvalue { ptr, i64, i64 } %t193, 0 + %t197 = getelementptr inbounds %S.gen.StructDef, ptr %t196, i64 %t192 + %t198 = getelementptr inbounds %S.gen.StructDef, ptr %t197, i32 0, i32 11 + %t199 = getelementptr inbounds { ptr, i64, i64 }, ptr %t198, i32 0, i32 1 + %t200 = getelementptr inbounds %S.ast.Node, ptr %a142, i32 0, i32 1 + %t201 = load { ptr, i64, i64 }, ptr %t200 + store { ptr, i64, i64 } %t201, ptr %a202 + call void @finch_str_copy(ptr %a203, ptr %a202) + %t204 = load { ptr, i64, i64 }, ptr %a203 + %t205 = load i64, ptr %t199 + %t206 = add i64 %t205, 1 + call void @finch_arr_reserve(ptr %t198, i64 %t206, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t207 = load ptr, ptr %t198 + %t208 = getelementptr inbounds { ptr, i64, i64 }, ptr %t207, i64 %t205 + store { ptr, i64, i64 } %t204, ptr %t208 + store i64 %t206, ptr %t199 + %t209 = load ptr, ptr %a1 + %t210 = icmp eq ptr %t209, null + br i1 %t210, label %panic4305, label %ok4306 +panic4305: + call void @finch_panic(ptr @.str.2636, i64 1839, ptr @.str.2637) unreachable -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 %range4080, label %inrange4081 -range4080: - call void @finch_panic_index(ptr @.str.2547, i64 1684, i64 %t204, i64 %t206) +ok4306: + %t211 = getelementptr inbounds %S.gen.Gen, ptr %t209, i32 0, i32 16 + %t212 = load i64, ptr %a2 + %t213 = load { ptr, i64, i64 }, ptr %t211 + %t214 = extractvalue { ptr, i64, i64 } %t213, 1 + %t215 = icmp uge i64 %t212, %t214 + br i1 %t215, label %range4307, label %inrange4308 +range4307: + call void @finch_panic_index(ptr @.str.2638, i64 1839, i64 %t212, i64 %t214) unreachable -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 - %t211 = getelementptr inbounds { ptr, i64, i64 }, ptr %t210, i32 0, i32 1 - %t212 = load %S.ast.Type, ptr %a140 - store %S.ast.Type %t212, ptr %a213 - call void @finch.copy.S_ast_Type(ptr %a214, ptr %a213) - %t215 = load %S.ast.Type, ptr %a214 - %t216 = load i64, ptr %t211 - %t217 = add i64 %t216, 1 - call void @finch_arr_reserve(ptr %t210, i64 %t217, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t218 = load ptr, ptr %t210 - %t219 = getelementptr inbounds %S.ast.Type, ptr %t218, i64 %t216 - store %S.ast.Type %t215, ptr %t219 - store i64 %t217, ptr %t211 - %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 %then4082, label %endif4084 -then4082: - store i1 true, ptr %a123 - 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 - %t226 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t224, %S.ast.Type %t225) - %t227 = load i64, ptr %t223 - %t228 = add i64 %t227, 1 - call void @finch_arr_reserve(ptr %a124, i64 %t228, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t229 = load ptr, ptr %a124 - %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.step4061 -each.step4061: - %t231 = load i64, ptr %a126 - %t232 = add i64 %t231, 1 - store i64 %t232, ptr %a126 - 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 %panic4085, label %ok4086 -panic4085: - call void @finch_panic(ptr @.str.2548, i64 1690, ptr @.str.2549) +inrange4308: + %t216 = extractvalue { ptr, i64, i64 } %t213, 0 + %t217 = getelementptr inbounds %S.gen.StructDef, ptr %t216, i64 %t212 + %t218 = getelementptr inbounds %S.gen.StructDef, ptr %t217, i32 0, i32 12 + %t219 = getelementptr inbounds { ptr, i64, i64 }, ptr %t218, i32 0, i32 1 + %t220 = load %S.ast.Type, ptr %a148 + 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 %t218, i64 %t225, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) + %t226 = load ptr, ptr %t218 + %t227 = getelementptr inbounds %S.ast.Type, ptr %t226, i64 %t224 + store %S.ast.Type %t223, ptr %t227 + store i64 %t225, ptr %t219 + %t228 = load ptr, ptr %a1 + %t229 = load %S.ast.Type, ptr %a148 + %t230 = call i1 @finch.gen.owning(ptr %t228, %S.ast.Type %t229) + br i1 %t230, label %then4309, label %endif4311 +then4309: + store i1 true, ptr %a131 + br label %endif4311 +endif4311: + %t231 = getelementptr inbounds { ptr, i64, i64 }, ptr %a132, i32 0, i32 1 + %t232 = load ptr, ptr %a1 + %t233 = load %S.ast.Type, ptr %a148 + %t234 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t232, %S.ast.Type %t233) + %t235 = load i64, ptr %t231 + %t236 = add i64 %t235, 1 + call void @finch_arr_reserve(ptr %a132, i64 %t236, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t237 = load ptr, ptr %a132 + %t238 = getelementptr inbounds { ptr, i64, i64 }, ptr %t237, i64 %t235 + store { ptr, i64, i64 } %t234, ptr %t238 + store i64 %t236, ptr %t231 + call void @finch.drop.S_ast_Type(ptr %a148) + br label %each.step4288 +each.step4288: + %t239 = load i64, ptr %a134 + %t240 = add i64 %t239, 1 + store i64 %t240, ptr %a134 + br label %each.cond4286 +each.end4289: + %t241 = load i1, ptr %a131 + %t242 = load ptr, ptr %a1 + %t243 = icmp eq ptr %t242, null + br i1 %t243, label %panic4312, label %ok4313 +panic4312: + call void @finch_panic(ptr @.str.2639, i64 1845, ptr @.str.2640) unreachable -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 %range4087, label %inrange4088 -range4087: - call void @finch_panic_index(ptr @.str.2550, i64 1690, i64 %t237, i64 %t239) +ok4313: + %t244 = getelementptr inbounds %S.gen.Gen, ptr %t242, i32 0, i32 16 + %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 %range4314, label %inrange4315 +range4314: + call void @finch_panic_index(ptr @.str.2641, i64 1845, i64 %t245, i64 %t247) unreachable -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 - store i1 %t233, ptr %t243 - %t244 = load { ptr, i64, i64 }, ptr %a105 - %t245 = load ptr, ptr %a1 - %t246 = icmp eq ptr %t245, null - br i1 %t246, label %panic4089, label %ok4090 -panic4089: - call void @finch_panic(ptr @.str.2551, i64 1691, ptr @.str.2552) +inrange4315: + %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 16 + store i1 %t241, ptr %t251 + %t252 = load { ptr, i64, i64 }, ptr %a111 + %t253 = load ptr, ptr %a1 + %t254 = icmp eq ptr %t253, null + br i1 %t254, label %panic4316, label %ok4317 +panic4316: + call void @finch_panic(ptr @.str.2642, i64 1846, ptr @.str.2643) unreachable -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) - %t250 = load { ptr, i64, i64 }, ptr %a249 - store { ptr, i64, i64 } %t250, ptr %t247 - %t251 = load ptr, ptr %a1 - %t252 = icmp eq ptr %t251, null - br i1 %t252, label %panic4091, label %ok4092 -panic4091: - call void @finch_panic(ptr @.str.2553, i64 1692, ptr @.str.2554) - unreachable -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 %range4093, label %inrange4094 -range4093: - call void @finch_panic_index(ptr @.str.2555, i64 1692, i64 %t254, i64 %t256) - unreachable -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 +ok4317: + %t255 = getelementptr inbounds %S.gen.Gen, ptr %t253, i32 0, i32 14 + store { ptr, i64, i64 } %t252, ptr %a256 + call void @finch_str_copy(ptr %a257, ptr %a256) + %t258 = load { ptr, i64, i64 }, ptr %a257 + %t259 = load { ptr, i64, i64 }, ptr %t255 + store { ptr, i64, i64 } %t258, ptr %t255 + store { ptr, i64, i64 } %t259, ptr %a260 + call void @finch_str_drop(ptr %a260) %t261 = load ptr, ptr %a1 %t262 = icmp eq ptr %t261, null - br i1 %t262, label %panic4095, label %ok4096 -panic4095: - call void @finch_panic(ptr @.str.2556, i64 1693, ptr @.str.2557) + br i1 %t262, label %panic4318, label %ok4319 +panic4318: + call void @finch_panic(ptr @.str.2644, i64 1847, ptr @.str.2645) unreachable -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 %panic4097, label %ok4098 -panic4097: - call void @finch_panic(ptr @.str.2559, i64 1693, ptr @.str.2560) +ok4319: + %t263 = getelementptr inbounds %S.gen.Gen, ptr %t261, i32 0, i32 16 + %t264 = load i64, ptr %a2 + %t265 = load { ptr, i64, i64 }, ptr %t263 + %t266 = extractvalue { ptr, i64, i64 } %t265, 1 + %t267 = icmp uge i64 %t264, %t266 + br i1 %t267, label %range4320, label %inrange4321 +range4320: + call void @finch_panic_index(ptr @.str.2646, i64 1847, i64 %t264, i64 %t266) unreachable -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 %range4099, label %inrange4100 -range4099: - call void @finch_panic_index(ptr @.str.2561, i64 1693, i64 %t268, i64 %t270) +inrange4321: + %t268 = extractvalue { ptr, i64, i64 } %t265, 0 + %t269 = getelementptr inbounds %S.gen.StructDef, ptr %t268, i64 %t264 + %t270 = getelementptr inbounds %S.gen.StructDef, ptr %t269, i32 0, i32 15 + store i64 2, ptr %t270 + %t271 = load ptr, ptr %a1 + %t272 = icmp eq ptr %t271, null + br i1 %t272, label %panic4322, label %ok4323 +panic4322: + call void @finch_panic(ptr @.str.2647, i64 1848, ptr @.str.2648) unreachable -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.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.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 %panic4101, label %ok4102 -panic4101: - call void @finch_panic(ptr @.str.2563, i64 1693, ptr @.str.2564) +ok4323: + %t273 = getelementptr inbounds %S.gen.Gen, ptr %t271, i32 0, i32 2 + %t274 = getelementptr inbounds { ptr, i64, i64 }, ptr %t273, i32 0, i32 1 + %t275 = load ptr, ptr %a1 + %t276 = icmp eq ptr %t275, null + br i1 %t276, label %panic4324, label %ok4325 +panic4324: + call void @finch_panic(ptr @.str.2650, i64 1848, ptr @.str.2651) unreachable -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 %range4103, label %inrange4104 -range4103: - call void @finch_panic_index(ptr @.str.2565, i64 1693, i64 %t288, i64 %t290) +ok4325: + %t277 = getelementptr inbounds %S.gen.Gen, ptr %t275, i32 0, i32 16 + %t278 = load i64, ptr %a2 + %t279 = load { ptr, i64, i64 }, ptr %t277 + %t280 = extractvalue { ptr, i64, i64 } %t279, 1 + %t281 = icmp uge i64 %t278, %t280 + br i1 %t281, label %range4326, label %inrange4327 +range4326: + call void @finch_panic_index(ptr @.str.2652, i64 1848, i64 %t278, i64 %t280) unreachable -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 - %t295 = load { ptr, i64, i64 }, ptr %t294 - %t296 = call { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %t295) - store { ptr, i64, i64 } %t284, ptr %a298 - store { ptr, i64, i64 } %t296, ptr %a299 - 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.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.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 +inrange4327: + %t282 = extractvalue { ptr, i64, i64 } %t279, 0 + %t283 = getelementptr inbounds %S.gen.StructDef, ptr %t282, i64 %t278 + %t284 = getelementptr inbounds %S.gen.StructDef, ptr %t283, i32 0, i32 0 + %t285 = load { ptr, i64, i64 }, ptr %t284 + %t286 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t285) + store { ptr, i64, i64 } { ptr @.str.2649, i64 3, i64 0 }, ptr %a288 + store { ptr, i64, i64 } %t286, ptr %a289 + call void @finch_str_concat(ptr %a287, ptr %a288, ptr %a289) + store { ptr, i64, i64 } %t286, ptr %a290 + call void @finch_str_drop(ptr %a290) + %t291 = load { ptr, i64, i64 }, ptr %a287 + store { ptr, i64, i64 } %t291, ptr %a293 + store { ptr, i64, i64 } { ptr @.str.2653, i64 1, i64 0 }, ptr %a294 + call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) + store { ptr, i64, i64 } %t291, ptr %a295 + call void @finch_str_drop(ptr %a295) + %t296 = load { ptr, i64, i64 }, ptr %a292 + %t297 = load ptr, ptr %a1 + %t298 = icmp eq ptr %t297, null + br i1 %t298, label %panic4328, label %ok4329 +panic4328: + call void @finch_panic(ptr @.str.2654, i64 1848, ptr @.str.2655) + unreachable +ok4329: + %t299 = getelementptr inbounds %S.gen.Gen, ptr %t297, i32 0, i32 16 + %t300 = load i64, ptr %a2 + %t301 = load { ptr, i64, i64 }, ptr %t299 + %t302 = extractvalue { ptr, i64, i64 } %t301, 1 + %t303 = icmp uge i64 %t300, %t302 + br i1 %t303, label %range4330, label %inrange4331 +range4330: + call void @finch_panic_index(ptr @.str.2656, i64 1848, i64 %t300, i64 %t302) + unreachable +inrange4331: + %t304 = extractvalue { ptr, i64, i64 } %t301, 0 + %t305 = getelementptr inbounds %S.gen.StructDef, ptr %t304, i64 %t300 + %t306 = getelementptr inbounds %S.gen.StructDef, ptr %t305, i32 0, i32 1 + %t307 = load { ptr, i64, i64 }, ptr %t306 + %t308 = call { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %t307) + store { ptr, i64, i64 } %t296, 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.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 - %t318 = add i64 %t317, 1 - call void @finch_arr_reserve(ptr %t263, i64 %t318, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t319 = load ptr, ptr %t263 - %t320 = getelementptr inbounds { ptr, i64, i64 }, ptr %t319, i64 %t317 - store { ptr, i64, i64 } %t316, ptr %t320 - store i64 %t318, ptr %t264 + store { ptr, i64, i64 } %t296, ptr %a312 + call void @finch_str_drop(ptr %a312) + store { ptr, i64, i64 } %t308, ptr %a313 + call void @finch_str_drop(ptr %a313) + %t314 = load { ptr, i64, i64 }, ptr %a309 + store { ptr, i64, i64 } %t314, ptr %a316 + store { ptr, i64, i64 } { ptr @.str.2657, i64 10, i64 0 }, ptr %a317 + call void @finch_str_concat(ptr %a315, ptr %a316, ptr %a317) + store { ptr, i64, i64 } %t314, ptr %a318 + call void @finch_str_drop(ptr %a318) + %t319 = load { ptr, i64, i64 }, ptr %a315 + %t320 = getelementptr inbounds { ptr, i64, i64 }, ptr %a132, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.2658, i64 2, i64 0 }, ptr %a321 + call void @finch_str_join(ptr %a322, ptr %a132, ptr %a321) + %t323 = load { ptr, i64, i64 }, ptr %a322 + store { ptr, i64, i64 } %t319, ptr %a325 + store { ptr, i64, i64 } %t323, ptr %a326 + call void @finch_str_concat(ptr %a324, ptr %a325, ptr %a326) + store { ptr, i64, i64 } %t319, ptr %a327 + call void @finch_str_drop(ptr %a327) + store { ptr, i64, i64 } %t323, ptr %a328 + call void @finch_str_drop(ptr %a328) + %t329 = load { ptr, i64, i64 }, ptr %a324 + store { ptr, i64, i64 } %t329, ptr %a331 + store { ptr, i64, i64 } { ptr @.str.2659, i64 2, i64 0 }, ptr %a332 + call void @finch_str_concat(ptr %a330, ptr %a331, ptr %a332) + store { ptr, i64, i64 } %t329, ptr %a333 + call void @finch_str_drop(ptr %a333) + %t334 = load { ptr, i64, i64 }, ptr %a330 + %t335 = load i64, ptr %t274 + %t336 = add i64 %t335, 1 + call void @finch_arr_reserve(ptr %t273, i64 %t336, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t337 = load ptr, ptr %t273 + %t338 = getelementptr inbounds { ptr, i64, i64 }, ptr %t337, i64 %t335 + store { ptr, i64, i64 } %t334, ptr %t338 + store i64 %t336, ptr %t274 + call void @finch.drop.arr_str(ptr %a132) + call void @finch_str_drop(ptr %a111) + call void @finch.drop.S_ast_Node(ptr %a43) ret void } @@ -38039,12 +44216,12 @@ entry: store { ptr, i64, i64 } %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic4105, label %ok4106 -panic4105: - call void @finch_panic(ptr @.str.2569, i64 1702, ptr @.str.2570) + br i1 %t4, label %panic4332, label %ok4333 +panic4332: + call void @finch_panic(ptr @.str.2660, i64 1857, ptr @.str.2661) unreachable -ok4106: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 31 +ok4333: + %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 32 %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 @@ -38059,12 +44236,12 @@ ok4106: store i64 %t12, ptr %t6 %t15 = load ptr, ptr %a1 %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic4107, label %ok4108 -panic4107: - call void @finch_panic(ptr @.str.2571, i64 1703, ptr @.str.2572) + br i1 %t16, label %panic4334, label %ok4335 +panic4334: + call void @finch_panic(ptr @.str.2662, i64 1858, ptr @.str.2663) unreachable -ok4108: - %t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 31 +ok4335: + %t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 32 %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t17, i32 0, i32 1 %t19 = load i64, ptr %t18 %t20 = sub i64 %t19, 1 @@ -38078,21 +44255,24 @@ entry: %a7 = 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 store i64 %p0, ptr %a1 %t2 = load i64, ptr %a1 %t3 = icmp slt i64 %t2, 0 - br i1 %t3, label %then4109, label %endif4111 -then4109: - ret { ptr, i64, i64 } { ptr @.str.2573, i64 4, i64 0 } -endif4111: + br i1 %t3, label %then4336, label %endif4338 +then4336: + ret { ptr, i64, i64 } { ptr @.str.2664, i64 4, i64 0 } +endif4338: %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.2574, i64 1, i64 0 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.2665, 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 - ret { ptr, i64, i64 } %t10 + store { ptr, i64, i64 } %t6, ptr %a10 + call void @finch_str_drop(ptr %a10) + %t11 = load { ptr, i64, i64 }, ptr %a7 + ret { ptr, i64, i64 } %t11 } define internal i64 @finch.gen.alignUp(i64 %p0, i64 %p1) { @@ -38103,22 +44283,22 @@ entry: store i64 %p1, ptr %a2 %t3 = load i64, ptr %a2 %t4 = icmp sle i64 %t3, 1 - br i1 %t4, label %then4112, label %endif4114 -then4112: + br i1 %t4, label %then4339, label %endif4341 +then4339: %t5 = load i64, ptr %a1 ret i64 %t5 -endif4114: +endif4341: %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 %panic4115, label %ok4116 -panic4115: - call void @finch_panic(ptr @.str.2575, i64 1722, ptr @.str.2576) + br i1 %t11, label %panic4342, label %ok4343 +panic4342: + call void @finch_panic(ptr @.str.2666, i64 1877, ptr @.str.2667) unreachable -ok4116: +ok4343: %t12 = sdiv i64 %t9, %t10 %t13 = load i64, ptr %a2 %t14 = mul i64 %t12, %t13 @@ -38181,188 +44361,193 @@ 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.2577, i64 4, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.2668, 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.from4117 -logic.from4117: - br i1 %t13, label %logic.end4119, label %logic.rhs4118 -logic.rhs4118: + br label %logic.from4344 +logic.from4344: + br i1 %t13, label %logic.end4346, label %logic.rhs4345 +logic.rhs4345: %t14 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t14, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.2578, i64 4, i64 0 }, ptr %a16 + store { ptr, i64, i64 } { ptr @.str.2669, 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.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: + br label %logic.rend4347 +logic.rend4347: + br label %logic.end4346 +logic.end4346: + %t19 = phi i1 [ true, %logic.from4344 ], [ %t18, %logic.rend4347 ] + br label %logic.from4348 +logic.from4348: + br i1 %t19, label %logic.end4350, label %logic.rhs4349 +logic.rhs4349: %t20 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t20, ptr %a21 - store { ptr, i64, i64 } { ptr @.str.2579, i64 2, i64 0 }, ptr %a22 + store { ptr, i64, i64 } { ptr @.str.2670, 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.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: + br label %logic.rend4351 +logic.rend4351: + br label %logic.end4350 +logic.end4350: + %t25 = phi i1 [ true, %logic.from4348 ], [ %t24, %logic.rend4351 ] + br label %logic.from4352 +logic.from4352: + br i1 %t25, label %logic.end4354, label %logic.rhs4353 +logic.rhs4353: %t26 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t26, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.2580, i64 2, i64 0 }, ptr %a28 + store { ptr, i64, i64 } { ptr @.str.2671, 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.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: + br label %logic.rend4355 +logic.rend4355: + br label %logic.end4354 +logic.end4354: + %t31 = phi i1 [ true, %logic.from4352 ], [ %t30, %logic.rend4355 ] + br i1 %t31, label %then4356, label %endif4358 +then4356: %t32 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 1, 0 %t33 = insertvalue %S.gen.SizeAlign %t32, i64 1, 1 + call void @finch_str_drop(ptr %a8) ret %S.gen.SizeAlign %t33 -endif4131: +endif4358: %t34 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t34, ptr %a35 - store { ptr, i64, i64 } { ptr @.str.2581, i64 3, i64 0 }, ptr %a36 + store { ptr, i64, i64 } { ptr @.str.2672, 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.from4132 -logic.from4132: - br i1 %t38, label %logic.end4134, label %logic.rhs4133 -logic.rhs4133: + br label %logic.from4359 +logic.from4359: + br i1 %t38, label %logic.end4361, label %logic.rhs4360 +logic.rhs4360: %t39 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t39, ptr %a40 - store { ptr, i64, i64 } { ptr @.str.2582, i64 3, i64 0 }, ptr %a41 + store { ptr, i64, i64 } { ptr @.str.2673, 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.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: + br label %logic.rend4362 +logic.rend4362: + br label %logic.end4361 +logic.end4361: + %t44 = phi i1 [ true, %logic.from4359 ], [ %t43, %logic.rend4362 ] + br i1 %t44, label %then4363, label %endif4365 +then4363: %t45 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 2, 0 %t46 = insertvalue %S.gen.SizeAlign %t45, i64 2, 1 + call void @finch_str_drop(ptr %a8) ret %S.gen.SizeAlign %t46 -endif4138: +endif4365: %t47 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t47, ptr %a48 - store { ptr, i64, i64 } { ptr @.str.2583, i64 3, i64 0 }, ptr %a49 + store { ptr, i64, i64 } { ptr @.str.2674, 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.from4139 -logic.from4139: - br i1 %t51, label %logic.end4141, label %logic.rhs4140 -logic.rhs4140: + br label %logic.from4366 +logic.from4366: + br i1 %t51, label %logic.end4368, label %logic.rhs4367 +logic.rhs4367: %t52 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t52, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.2584, i64 3, i64 0 }, ptr %a54 + store { ptr, i64, i64 } { ptr @.str.2675, 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.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: + br label %logic.rend4369 +logic.rend4369: + br label %logic.end4368 +logic.end4368: + %t57 = phi i1 [ true, %logic.from4366 ], [ %t56, %logic.rend4369 ] + br label %logic.from4370 +logic.from4370: + br i1 %t57, label %logic.end4372, label %logic.rhs4371 +logic.rhs4371: %t58 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t58, ptr %a59 - store { ptr, i64, i64 } { ptr @.str.2585, i64 3, i64 0 }, ptr %a60 + store { ptr, i64, i64 } { ptr @.str.2676, 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.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: + br label %logic.rend4373 +logic.rend4373: + br label %logic.end4372 +logic.end4372: + %t63 = phi i1 [ true, %logic.from4370 ], [ %t62, %logic.rend4373 ] + br label %logic.from4374 +logic.from4374: + br i1 %t63, label %logic.end4376, label %logic.rhs4375 +logic.rhs4375: %t64 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t64, ptr %a65 - store { ptr, i64, i64 } { ptr @.str.2586, i64 4, i64 0 }, ptr %a66 + store { ptr, i64, i64 } { ptr @.str.2677, 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.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: + br label %logic.rend4377 +logic.rend4377: + br label %logic.end4376 +logic.end4376: + %t69 = phi i1 [ true, %logic.from4374 ], [ %t68, %logic.rend4377 ] + br i1 %t69, label %then4378, label %endif4380 +then4378: %t70 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 4, 0 %t71 = insertvalue %S.gen.SizeAlign %t70, i64 4, 1 + call void @finch_str_drop(ptr %a8) ret %S.gen.SizeAlign %t71 -endif4153: +endif4380: %t72 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t72, ptr %a73 - store { ptr, i64, i64 } { ptr @.str.2587, i64 3, i64 0 }, ptr %a74 + store { ptr, i64, i64 } { ptr @.str.2678, 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.from4154 -logic.from4154: - br i1 %t76, label %logic.end4156, label %logic.rhs4155 -logic.rhs4155: + br label %logic.from4381 +logic.from4381: + br i1 %t76, label %logic.end4383, label %logic.rhs4382 +logic.rhs4382: %t77 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t77, ptr %a78 - store { ptr, i64, i64 } { ptr @.str.2588, i64 5, i64 0 }, ptr %a79 + store { ptr, i64, i64 } { ptr @.str.2679, 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.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: + br label %logic.rend4384 +logic.rend4384: + br label %logic.end4383 +logic.end4383: + %t82 = phi i1 [ true, %logic.from4381 ], [ %t81, %logic.rend4384 ] + br i1 %t82, label %then4385, label %endif4387 +then4385: %t83 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 24, 0 %t84 = insertvalue %S.gen.SizeAlign %t83, i64 8, 1 + call void @finch_str_drop(ptr %a8) ret %S.gen.SizeAlign %t84 -endif4160: +endif4387: %t85 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t85, ptr %a86 - store { ptr, i64, i64 } { ptr @.str.2589, i64 3, i64 0 }, ptr %a87 + store { ptr, i64, i64 } { ptr @.str.2680, 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 %then4161, label %endif4163 -then4161: + br i1 %t89, label %then4388, label %endif4390 +then4388: %t90 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 56, 0 %t91 = insertvalue %S.gen.SizeAlign %t90, i64 8, 1 + call void @finch_str_drop(ptr %a8) ret %S.gen.SizeAlign %t91 -endif4163: +endif4390: %t92 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t92, ptr %a93 - store { ptr, i64, i64 } { ptr @.str.2590, i64 5, i64 0 }, ptr %a94 + store { ptr, i64, i64 } { ptr @.str.2681, 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 %then4164, label %endif4166 -then4164: + br i1 %t96, label %then4391, label %endif4393 +then4391: %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 %range4167, label %inrange4168 -range4167: - call void @finch_panic_index(ptr @.str.2591, i64 1744, i64 0, i64 %t100) + br i1 %t101, label %range4394, label %inrange4395 +range4394: + call void @finch_panic_index(ptr @.str.2682, i64 1899, i64 0, i64 %t100) unreachable -inrange4168: +inrange4395: %t102 = extractvalue { ptr, i64, i64 } %t99, 0 %t103 = getelementptr inbounds %S.ast.Type, ptr %t102, i64 0 %t104 = load %S.ast.Type, ptr %t103 @@ -38377,23 +44562,24 @@ inrange4168: %t113 = getelementptr inbounds %S.gen.SizeAlign, ptr %a106, i32 0, i32 1 %t114 = load i64, ptr %t113 %t115 = insertvalue %S.gen.SizeAlign %t112, i64 %t114, 1 + call void @finch_str_drop(ptr %a8) ret %S.gen.SizeAlign %t115 -endif4166: +endif4393: %t116 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t116, ptr %a117 - store { ptr, i64, i64 } { ptr @.str.2592, i64 6, i64 0 }, ptr %a118 + store { ptr, i64, i64 } { ptr @.str.2683, 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 %then4169, label %endif4171 -then4169: + br i1 %t120, label %then4396, label %endif4398 +then4396: %t121 = load ptr, ptr %a1 %t122 = icmp eq ptr %t121, null - br i1 %t122, label %panic4172, label %ok4173 -panic4172: - call void @finch_panic(ptr @.str.2593, i64 1748, ptr @.str.2594) + br i1 %t122, label %panic4399, label %ok4400 +panic4399: + call void @finch_panic(ptr @.str.2684, i64 1903, ptr @.str.2685) unreachable -ok4173: - %t123 = getelementptr inbounds %S.gen.Gen, ptr %t121, i32 0, i32 15 +ok4400: + %t123 = getelementptr inbounds %S.gen.Gen, ptr %t121, i32 0, i32 16 %t124 = load ptr, ptr %a1 %t125 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 %t126 = load { ptr, i64, i64 }, ptr %t125 @@ -38403,11 +44589,11 @@ ok4173: %t130 = load { ptr, i64, i64 }, ptr %t123 %t131 = extractvalue { ptr, i64, i64 } %t130, 1 %t132 = icmp uge i64 %t129, %t131 - br i1 %t132, label %range4174, label %inrange4175 -range4174: - call void @finch_panic_index(ptr @.str.2595, i64 1748, i64 %t129, i64 %t131) + br i1 %t132, label %range4401, label %inrange4402 +range4401: + call void @finch_panic_index(ptr @.str.2686, i64 1903, i64 %t129, i64 %t131) unreachable -inrange4175: +inrange4402: %t133 = extractvalue { ptr, i64, i64 } %t130, 0 %t134 = getelementptr inbounds %S.gen.StructDef, ptr %t133, i64 %t129 %t135 = load %S.gen.StructDef, ptr %t134 @@ -38417,28 +44603,30 @@ inrange4175: 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 %then4176, label %endif4178 -then4176: + br i1 %t141, label %then4403, label %endif4405 +then4403: %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 %t145 = getelementptr inbounds %S.gen.StructDef, ptr %a139, i32 0, i32 10 %t146 = load i64, ptr %t145 %t147 = insertvalue %S.gen.SizeAlign %t144, i64 %t146, 1 + call void @finch.drop.S_gen_StructDef(ptr %a139) + call void @finch_str_drop(ptr %a8) ret %S.gen.SizeAlign %t147 -endif4178: +endif4405: 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.cond4179 -each.cond4179: + br label %each.cond4406 +each.cond4406: %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.body4180, label %each.end4182 -each.body4180: + br i1 %t155, label %each.body4407, label %each.end4409 +each.body4407: %t156 = load ptr, ptr %t150 %t157 = getelementptr inbounds %S.ast.Type, ptr %t156, i64 %t154 %t158 = load %S.ast.Type, ptr %t157 @@ -38459,30 +44647,33 @@ each.body4180: %t172 = load i64, ptr %t171 %t173 = load i64, ptr %a149 %t174 = icmp sgt i64 %t172, %t173 - br i1 %t174, label %then4183, label %endif4185 -then4183: + br i1 %t174, label %then4410, label %endif4412 +then4410: %t175 = getelementptr inbounds %S.gen.SizeAlign, ptr %a163, i32 0, i32 1 %t176 = load i64, ptr %t175 store i64 %t176, ptr %a149 - br label %endif4185 -endif4185: - br label %each.step4181 -each.step4181: + br label %endif4412 +endif4412: + br label %each.step4408 +each.step4408: %t177 = load i64, ptr %a151 %t178 = add i64 %t177, 1 store i64 %t178, ptr %a151 - br label %each.cond4179 -each.end4182: + br label %each.cond4406 +each.end4409: %t179 = load i64, ptr %a148 %t180 = load i64, ptr %a149 %t181 = call i64 @finch.gen.alignUp(i64 %t179, i64 %t180) %t182 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 %t181, 0 %t183 = load i64, ptr %a149 %t184 = insertvalue %S.gen.SizeAlign %t182, i64 %t183, 1 + call void @finch.drop.S_gen_StructDef(ptr %a139) + call void @finch_str_drop(ptr %a8) ret %S.gen.SizeAlign %t184 -endif4171: +endif4398: %t185 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 8, 0 %t186 = insertvalue %S.gen.SizeAlign %t185, i64 8, 1 + call void @finch_str_drop(ptr %a8) ret %S.gen.SizeAlign %t186 } @@ -38497,33 +44688,31 @@ entry: %a13 = alloca i64, align 16 %a21 = alloca %S.ast.Type, align 16 %a25 = alloca %S.gen.SizeAlign, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 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 %then4186, label %endif4188 -then4186: + br i1 %t4, label %then4413, label %endif4415 +then4413: %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 -endif4188: +endif4415: 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.cond4189 -each.cond4189: + br label %each.cond4416 +each.cond4416: %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.body4190, label %each.end4192 -each.body4190: + br i1 %t17, label %each.body4417, label %each.end4419 +each.body4417: %t18 = load ptr, ptr %t12 %t19 = getelementptr inbounds %S.ast.Type, ptr %t18, i64 %t16 %t20 = load %S.ast.Type, ptr %t19 @@ -38551,18 +44740,15 @@ each.body4190: %t38 = load i64, ptr %a11 %t39 = add i64 %t38, %t37 store i64 %t39, ptr %a11 - br label %each.step4191 -each.step4191: + br label %each.step4418 +each.step4418: %t40 = load i64, ptr %a13 %t41 = add i64 %t40, 1 store i64 %t41, ptr %a13 - br label %each.cond4189 -each.end4192: + br label %each.cond4416 +each.end4419: %t42 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t42, ptr %a43 - call void @finch.copy.arr_int(ptr %a44, ptr %a43) - %t45 = load { ptr, i64, i64 }, ptr %a44 - ret { ptr, i64, i64 } %t45 + ret { ptr, i64, i64 } %t42 } define internal i64 @finch.gen.dbgMember(ptr %p0, { ptr, i64, i64 } %p1, i64 %p2, i64 %p3, i64 %p4, i64 %p5, i64 %p6, i64 %p7) { @@ -38581,47 +44767,67 @@ entry: %a15 = alloca { ptr, i64, i64 }, align 16 %a16 = alloca { ptr, i64, i64 }, align 16 %a17 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 + %a18 = 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 %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 + %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 + %a32 = alloca { ptr, i64, i64 }, align 16 %a35 = alloca { ptr, i64, i64 }, align 16 %a37 = alloca { ptr, i64, i64 }, align 16 %a38 = alloca { ptr, i64, i64 }, align 16 %a39 = alloca { ptr, i64, i64 }, align 16 - %a42 = 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 %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 + %a51 = 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 %a55 = 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 %a59 = alloca { ptr, i64, i64 }, align 16 %a60 = 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 %a66 = alloca { ptr, i64, i64 }, align 16 %a67 = alloca { ptr, i64, i64 }, align 16 - %a69 = 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 - %a74 = alloca { ptr, i64, i64 }, align 16 + %a72 = 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 %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 + %a84 = alloca { ptr, i64, i64 }, align 16 + %a85 = alloca { ptr, i64, i64 }, align 16 + %a86 = alloca { ptr, i64, i64 }, align 16 + %a87 = alloca { ptr, i64, i64 }, align 16 + %a90 = 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 + %a98 = 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 + %a104 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store { ptr, i64, i64 } %p1, ptr %a2 store i64 %p2, ptr %a3 @@ -38632,81 +44838,121 @@ entry: store i64 %p7, ptr %a8 %t9 = load ptr, ptr %a1 %t10 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.2596, i64 42, i64 0 }, ptr %a12 + store { ptr, i64, i64 } { ptr @.str.2687, 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.2597, i64 11, i64 0 }, ptr %a17 + store { ptr, i64, i64 } { ptr @.str.2688, 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 - call void @finch_str_from_int(ptr %a20, i64 %t19) - %t21 = load { ptr, i64, i64 }, ptr %a20 - store { ptr, i64, i64 } %t18, 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.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 - call void @finch_str_from_int(ptr %a31, i64 %t30) - %t32 = load { ptr, i64, i64 }, ptr %a31 - store { ptr, i64, i64 } %t29, ptr %a34 - store { ptr, i64, i64 } %t32, 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 %a38 - store { ptr, i64, i64 } { ptr @.str.2599, i64 8, i64 0 }, ptr %a39 + store { ptr, i64, i64 } %t14, ptr %a18 + call void @finch_str_drop(ptr %a18) + %t19 = load { ptr, i64, i64 }, ptr %a15 + %t20 = load i64, ptr %a3 + call void @finch_str_from_int(ptr %a21, i64 %t20) + %t22 = load { ptr, i64, i64 }, ptr %a21 + store { ptr, i64, i64 } %t19, ptr %a24 + store { ptr, i64, i64 } %t22, ptr %a25 + call void @finch_str_concat(ptr %a23, ptr %a24, ptr %a25) + store { ptr, i64, i64 } %t19, ptr %a26 + call void @finch_str_drop(ptr %a26) + store { ptr, i64, i64 } %t22, ptr %a27 + call void @finch_str_drop(ptr %a27) + %t28 = load { ptr, i64, i64 }, ptr %a23 + store { ptr, i64, i64 } %t28, ptr %a30 + store { ptr, i64, i64 } { ptr @.str.2689, i64 9, i64 0 }, ptr %a31 + call void @finch_str_concat(ptr %a29, ptr %a30, ptr %a31) + store { ptr, i64, i64 } %t28, ptr %a32 + call void @finch_str_drop(ptr %a32) + %t33 = load { ptr, i64, i64 }, ptr %a29 + %t34 = load i64, ptr %a4 + call void @finch_str_from_int(ptr %a35, i64 %t34) + %t36 = load { ptr, i64, i64 }, ptr %a35 + store { ptr, i64, i64 } %t33, 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 - %t41 = load i64, ptr %a5 - call void @finch_str_from_int(ptr %a42, i64 %t41) - %t43 = load { ptr, i64, i64 }, ptr %a42 - store { ptr, i64, i64 } %t40, 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.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 - %t53 = call { ptr, i64, i64 } @finch.gen.mdRef(i64 %t52) - store { ptr, i64, i64 } %t51, 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.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 - call void @finch_str_from_int(ptr %a63, i64 %t62) - %t64 = load { ptr, i64, i64 }, ptr %a63 - store { ptr, i64, i64 } %t61, 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.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 - call void @finch_str_from_int(ptr %a74, i64 %t73) - %t75 = load { ptr, i64, i64 }, ptr %a74 - store { ptr, i64, i64 } %t72, 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.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) - ret i64 %t84 + store { ptr, i64, i64 } %t33, ptr %a40 + call void @finch_str_drop(ptr %a40) + store { ptr, i64, i64 } %t36, ptr %a41 + call void @finch_str_drop(ptr %a41) + %t42 = load { ptr, i64, i64 }, ptr %a37 + store { ptr, i64, i64 } %t42, ptr %a44 + store { ptr, i64, i64 } { ptr @.str.2690, i64 8, i64 0 }, ptr %a45 + call void @finch_str_concat(ptr %a43, ptr %a44, ptr %a45) + store { ptr, i64, i64 } %t42, ptr %a46 + call void @finch_str_drop(ptr %a46) + %t47 = load { ptr, i64, i64 }, ptr %a43 + %t48 = load i64, ptr %a5 + call void @finch_str_from_int(ptr %a49, i64 %t48) + %t50 = load { ptr, i64, i64 }, ptr %a49 + store { ptr, i64, i64 } %t47, ptr %a52 + store { ptr, i64, i64 } %t50, ptr %a53 + call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) + store { ptr, i64, i64 } %t47, ptr %a54 + call void @finch_str_drop(ptr %a54) + store { ptr, i64, i64 } %t50, ptr %a55 + call void @finch_str_drop(ptr %a55) + %t56 = load { ptr, i64, i64 }, ptr %a51 + store { ptr, i64, i64 } %t56, ptr %a58 + store { ptr, i64, i64 } { ptr @.str.2691, i64 12, i64 0 }, ptr %a59 + call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) + store { ptr, i64, i64 } %t56, ptr %a60 + call void @finch_str_drop(ptr %a60) + %t61 = load { ptr, i64, i64 }, ptr %a57 + %t62 = load i64, ptr %a6 + %t63 = call { ptr, i64, i64 } @finch.gen.mdRef(i64 %t62) + store { ptr, i64, i64 } %t61, ptr %a65 + store { ptr, i64, i64 } %t63, ptr %a66 + call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) + store { ptr, i64, i64 } %t61, ptr %a67 + call void @finch_str_drop(ptr %a67) + store { ptr, i64, i64 } %t63, ptr %a68 + call void @finch_str_drop(ptr %a68) + %t69 = load { ptr, i64, i64 }, ptr %a64 + store { ptr, i64, i64 } %t69, ptr %a71 + store { ptr, i64, i64 } { ptr @.str.2692, i64 8, i64 0 }, ptr %a72 + call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) + store { ptr, i64, i64 } %t69, ptr %a73 + call void @finch_str_drop(ptr %a73) + %t74 = load { ptr, i64, i64 }, ptr %a70 + %t75 = load i64, ptr %a7 + call void @finch_str_from_int(ptr %a76, i64 %t75) + %t77 = load { ptr, i64, i64 }, ptr %a76 + store { ptr, i64, i64 } %t74, ptr %a79 + store { ptr, i64, i64 } %t77, ptr %a80 + call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) + store { ptr, i64, i64 } %t74, ptr %a81 + call void @finch_str_drop(ptr %a81) + store { ptr, i64, i64 } %t77, ptr %a82 + call void @finch_str_drop(ptr %a82) + %t83 = load { ptr, i64, i64 }, ptr %a78 + store { ptr, i64, i64 } %t83, ptr %a85 + store { ptr, i64, i64 } { ptr @.str.2693, i64 10, i64 0 }, ptr %a86 + call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) + store { ptr, i64, i64 } %t83, ptr %a87 + call void @finch_str_drop(ptr %a87) + %t88 = load { ptr, i64, i64 }, ptr %a84 + %t89 = load i64, ptr %a8 + call void @finch_str_from_int(ptr %a90, i64 %t89) + %t91 = load { ptr, i64, i64 }, ptr %a90 + store { ptr, i64, i64 } %t88, ptr %a93 + store { ptr, i64, i64 } %t91, ptr %a94 + call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) + store { ptr, i64, i64 } %t88, ptr %a95 + call void @finch_str_drop(ptr %a95) + store { ptr, i64, i64 } %t91, ptr %a96 + call void @finch_str_drop(ptr %a96) + %t97 = load { ptr, i64, i64 }, ptr %a92 + store { ptr, i64, i64 } %t97, ptr %a99 + store { ptr, i64, i64 } { ptr @.str.2694, i64 1, i64 0 }, ptr %a100 + call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100) + store { ptr, i64, i64 } %t97, ptr %a101 + call void @finch_str_drop(ptr %a101) + %t102 = load { ptr, i64, i64 }, ptr %a98 + %t103 = call i64 @finch.gen.md(ptr %t9, { ptr, i64, i64 } %t102) + store { ptr, i64, i64 } %t102, ptr %a104 + call void @finch_str_drop(ptr %a104) + ret i64 %t103 } define internal i64 @finch.gen.basicType(ptr %p0, { ptr, i64, i64 } %p1, i64 %p2, { ptr, i64, i64 } %p3) { @@ -38721,55 +44967,76 @@ entry: %a11 = alloca { ptr, i64, i64 }, align 16 %a12 = alloca { ptr, i64, i64 }, align 16 %a13 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 + %a14 = alloca { ptr, i64, i64 }, align 16 + %a17 = alloca { ptr, i64, i64 }, align 16 %a19 = 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 %a23 = 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 %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 + %a34 = alloca { ptr, i64, i64 }, align 16 + %a36 = alloca { ptr, i64, i64 }, align 16 + %a37 = alloca { ptr, i64, i64 }, align 16 + %a38 = alloca { ptr, i64, i64 }, align 16 + %a39 = alloca { ptr, i64, i64 }, align 16 + %a42 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store { ptr, i64, i64 } %p1, ptr %a2 store i64 %p2, ptr %a3 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.2604, i64 20, i64 0 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.2695, 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.2605, i64 9, i64 0 }, ptr %a13 + store { ptr, i64, i64 } { ptr @.str.2696, 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 - call void @finch_str_from_int(ptr %a16, i64 %t15) - %t17 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } %t14, 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.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 - store { ptr, i64, i64 } %t25, 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.2607, i64 1, i64 0 }, ptr %a33 + store { ptr, i64, i64 } %t10, ptr %a14 + call void @finch_str_drop(ptr %a14) + %t15 = load { ptr, i64, i64 }, ptr %a11 + %t16 = load i64, ptr %a3 + call void @finch_str_from_int(ptr %a17, i64 %t16) + %t18 = load { ptr, i64, i64 }, ptr %a17 + store { ptr, i64, i64 } %t15, ptr %a20 + store { ptr, i64, i64 } %t18, ptr %a21 + call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) + store { ptr, i64, i64 } %t15, ptr %a22 + call void @finch_str_drop(ptr %a22) + store { ptr, i64, i64 } %t18, ptr %a23 + call void @finch_str_drop(ptr %a23) + %t24 = load { ptr, i64, i64 }, ptr %a19 + store { ptr, i64, i64 } %t24, ptr %a26 + store { ptr, i64, i64 } { ptr @.str.2697, i64 12, i64 0 }, ptr %a27 + call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) + store { ptr, i64, i64 } %t24, ptr %a28 + call void @finch_str_drop(ptr %a28) + %t29 = load { ptr, i64, i64 }, ptr %a25 + %t30 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t29, 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 = call i64 @finch.gen.md(ptr %t5, { ptr, i64, i64 } %t34) - ret i64 %t35 + store { ptr, i64, i64 } %t29, ptr %a34 + call void @finch_str_drop(ptr %a34) + %t35 = load { ptr, i64, i64 }, ptr %a31 + store { ptr, i64, i64 } %t35, ptr %a37 + store { ptr, i64, i64 } { ptr @.str.2698, i64 1, i64 0 }, ptr %a38 + call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) + store { ptr, i64, i64 } %t35, ptr %a39 + call void @finch_str_drop(ptr %a39) + %t40 = load { ptr, i64, i64 }, ptr %a36 + %t41 = call i64 @finch.gen.md(ptr %t5, { ptr, i64, i64 } %t40) + store { ptr, i64, i64 } %t40, ptr %a42 + call void @finch_str_drop(ptr %a42) + ret i64 %t41 } define internal i64 @finch.gen.diType(ptr %p0, %S.ast.Type %p1) { @@ -38786,244 +45053,319 @@ entry: %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 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 + %a25 = alloca { ptr, i64, i64 }, align 16 + %a27 = alloca { ptr, i64, i64 }, align 16 + %a32 = alloca { ptr, i64, i64 }, align 16 + %a39 = alloca { ptr, i64, i64 }, align 16 %a42 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca i64, align 16 - %a58 = alloca i64, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 + %a43 = alloca { ptr, i64, i64 }, align 16 + %a49 = alloca i64, align 16 + %a59 = alloca i64, align 16 %a61 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 + %a62 = alloca { ptr, i64, i64 }, align 16 %a68 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 + %a69 = alloca { ptr, i64, i64 }, align 16 %a75 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 + %a76 = alloca { ptr, i64, i64 }, align 16 %a82 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 + %a83 = alloca { ptr, i64, i64 }, align 16 %a89 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca %S.gen.EnumDef, align 16 - %a126 = alloca %S.gen.EnumDef, align 16 + %a90 = alloca { ptr, i64, i64 }, align 16 + %a97 = alloca { ptr, i64, i64 }, align 16 + %a101 = alloca { ptr, i64, i64 }, align 16 + %a109 = alloca { ptr, i64, i64 }, align 16 + %a110 = alloca { ptr, i64, i64 }, align 16 %a128 = alloca %S.gen.EnumDef, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca i64, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 + %a129 = alloca %S.gen.EnumDef, align 16 + %a131 = alloca %S.gen.EnumDef, align 16 + %a132 = alloca { ptr, i64, i64 }, align 16 + %a136 = alloca i64, align 16 + %a149 = alloca { ptr, i64, i64 }, align 16 %a150 = alloca { ptr, i64, i64 }, align 16 %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = 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 + %a156 = alloca { ptr, i64, i64 }, align 16 %a166 = alloca { ptr, i64, i64 }, align 16 %a168 = alloca { ptr, i64, i64 }, align 16 %a169 = alloca { ptr, i64, i64 }, align 16 %a170 = 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 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 + %a171 = alloca { ptr, i64, i64 }, align 16 + %a172 = alloca { ptr, i64, i64 }, align 16 + %a174 = alloca { ptr, i64, i64 }, align 16 + %a175 = alloca { ptr, i64, i64 }, align 16 + %a176 = alloca { ptr, i64, i64 }, align 16 + %a177 = alloca { ptr, i64, i64 }, align 16 + %a180 = alloca { ptr, i64, i64 }, align 16 + %a191 = alloca { ptr, i64, i64 }, align 16 %a192 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 + %a193 = 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 %a198 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 + %a201 = alloca { ptr, i64, i64 }, align 16 %a203 = 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 %a207 = 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 %a211 = alloca { ptr, i64, i64 }, align 16 %a212 = alloca { ptr, i64, i64 }, align 16 + %a215 = alloca { ptr, i64, i64 }, align 16 + %a216 = alloca { ptr, i64, i64 }, align 16 + %a218 = 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 %a222 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca i32, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca i64, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = 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 + %a227 = alloca { ptr, i64, i64 }, align 16 + %a230 = alloca { ptr, i64, i64 }, align 16 + %a238 = alloca { ptr, i64, i64 }, align 16 + %a239 = alloca i32, align 16 + %a250 = alloca { ptr, i64, i64 }, align 16 + %a251 = alloca { ptr, i64, i64 }, align 16 + %a254 = alloca i64, align 16 + %a270 = alloca { ptr, i64, i64 }, align 16 + %a271 = alloca { ptr, i64, i64 }, align 16 %a272 = alloca { ptr, i64, i64 }, align 16 %a273 = alloca { ptr, i64, i64 }, align 16 - %a285 = alloca %S.gen.SizeAlign, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a291 = 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 + %a278 = 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 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca i64, align 16 + %a305 = alloca %S.gen.SizeAlign, 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 - %a315 = alloca { ptr, i64, i64 }, align 16 + %a314 = alloca { ptr, i64, i64 }, align 16 %a316 = alloca { ptr, i64, i64 }, align 16 %a317 = 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 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 + %a318 = alloca { ptr, i64, i64 }, align 16 + %a319 = alloca { ptr, i64, i64 }, align 16 + %a322 = alloca { ptr, i64, i64 }, align 16 + %a323 = alloca i64, align 16 + %a334 = alloca { ptr, i64, i64 }, align 16 + %a335 = alloca { ptr, i64, i64 }, align 16 %a336 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 + %a337 = 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 - %a344 = alloca { ptr, i64, i64 }, align 16 + %a350 = 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 - %a367 = alloca %S.ast.Type, 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 %a369 = alloca { ptr, i64, i64 }, align 16 %a370 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca %S.ast.Type, align 16 - %a381 = alloca %S.ast.Type, align 16 - %a388 = 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 + %a375 = alloca { ptr, i64, i64 }, align 16 + %a387 = alloca { ptr, i64, i64 }, align 16 %a389 = alloca { ptr, i64, i64 }, align 16 %a390 = 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 - %a397 = alloca i64, align 16 - %a401 = alloca i64, align 16 - %a407 = alloca i64, align 16 - %a413 = alloca i64, align 16 - %a419 = alloca i64, align 16 - %a422 = alloca { ptr, i64, i64 }, align 16 + %a395 = alloca { ptr, i64, i64 }, align 16 + %a400 = alloca %S.ast.Type, align 16 + %a402 = alloca { ptr, i64, i64 }, align 16 + %a403 = alloca { ptr, i64, i64 }, align 16 + %a413 = alloca %S.ast.Type, align 16 + %a414 = alloca %S.ast.Type, align 16 + %a417 = alloca %S.ast.Type, 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 - %a427 = 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 - %a433 = alloca { ptr, i64, i64 }, align 16 %a434 = alloca { ptr, i64, i64 }, align 16 - %a435 = 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 - %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 - %a448 = alloca { ptr, i64, i64 }, align 16 - %a449 = alloca { ptr, i64, i64 }, align 16 - %a450 = alloca { ptr, i64, i64 }, align 16 - %a453 = 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 + %a435 = alloca i64, align 16 + %a439 = alloca %S.ast.Type, align 16 + %a440 = alloca i64, align 16 + %a446 = alloca i64, align 16 + %a452 = alloca i64, align 16 + %a458 = alloca i64, align 16 %a461 = alloca { ptr, i64, i64 }, align 16 + %a462 = alloca { ptr, i64, i64 }, align 16 + %a463 = alloca { ptr, i64, i64 }, align 16 %a464 = alloca { ptr, i64, i64 }, align 16 %a466 = alloca { ptr, i64, i64 }, align 16 %a467 = alloca { ptr, i64, i64 }, align 16 %a468 = alloca { ptr, i64, i64 }, align 16 - %a470 = alloca { ptr, i64, i64 }, align 16 - %a471 = alloca { ptr, i64, i64 }, align 16 + %a469 = alloca { ptr, i64, i64 }, align 16 %a472 = alloca { ptr, i64, i64 }, align 16 - %a484 = alloca { ptr, i64, i64 }, align 16 - %a485 = alloca { ptr, i64, i64 }, align 16 - %a491 = alloca i64, align 16 - %a494 = alloca i64, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 + %a474 = alloca { ptr, i64, i64 }, align 16 + %a475 = alloca { ptr, i64, i64 }, align 16 + %a476 = alloca { ptr, i64, i64 }, align 16 + %a477 = alloca { ptr, i64, i64 }, align 16 + %a478 = alloca { ptr, i64, i64 }, align 16 + %a480 = 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 + %a486 = alloca { ptr, i64, i64 }, align 16 + %a488 = alloca { ptr, i64, i64 }, align 16 + %a489 = alloca { ptr, i64, i64 }, align 16 + %a490 = alloca { ptr, i64, i64 }, align 16 + %a491 = alloca { ptr, i64, i64 }, align 16 + %a492 = 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 + %a500 = alloca { ptr, i64, i64 }, align 16 + %a502 = alloca { ptr, i64, i64 }, align 16 + %a503 = alloca { ptr, i64, i64 }, align 16 + %a504 = alloca { ptr, i64, i64 }, align 16 + %a505 = alloca { ptr, i64, i64 }, align 16 + %a506 = alloca { ptr, i64, i64 }, align 16 %a508 = alloca { ptr, i64, i64 }, align 16 - %a509 = alloca i64, align 16 - %a513 = alloca i64, align 16 - %a535 = alloca { ptr, i64, i64 }, align 16 + %a509 = alloca { ptr, i64, i64 }, align 16 + %a510 = alloca { ptr, i64, i64 }, align 16 + %a511 = alloca { ptr, i64, i64 }, align 16 + %a514 = 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 + %a519 = alloca { ptr, i64, i64 }, align 16 + %a520 = 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 + %a525 = alloca { ptr, i64, i64 }, align 16 %a537 = alloca { ptr, i64, i64 }, align 16 - %a538 = alloca { ptr, i64, i64 }, align 16 %a539 = alloca { ptr, i64, i64 }, align 16 - %a549 = alloca { ptr, i64, i64 }, align 16 - %a550 = alloca { ptr, i64, i64 }, align 16 - %a551 = 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 - %a558 = alloca { ptr, i64, i64 }, align 16 - %a560 = alloca { ptr, i64, i64 }, align 16 - %a561 = alloca { ptr, i64, i64 }, align 16 - %a562 = alloca { ptr, i64, i64 }, align 16 + %a540 = alloca { ptr, i64, i64 }, align 16 + %a546 = alloca %S.ast.Type, align 16 + %a547 = alloca i64, align 16 + %a550 = alloca i64, align 16 + %a563 = 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 - %a569 = alloca { ptr, i64, i64 }, align 16 - %a570 = 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 - %a576 = alloca { ptr, i64, i64 }, align 16 - %a577 = alloca { ptr, i64, i64 }, align 16 - %a578 = alloca { ptr, i64, i64 }, align 16 - %a590 = alloca { ptr, i64, i64 }, align 16 + %a565 = alloca i64, align 16 + %a569 = alloca i64, align 16 %a591 = alloca { ptr, i64, i64 }, align 16 - %a609 = alloca %S.gen.StructDef, align 16 - %a610 = alloca %S.gen.StructDef, align 16 - %a612 = alloca %S.gen.StructDef, align 16 - %a616 = alloca { ptr, i64, i64 }, align 16 - %a620 = alloca %S.gen.SizeAlign, align 16 + %a593 = alloca { ptr, i64, i64 }, align 16 + %a594 = alloca { ptr, i64, i64 }, align 16 + %a595 = alloca { ptr, i64, i64 }, align 16 + %a596 = 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 + %a609 = 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 + %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 - %a625 = alloca i64, align 16 - %a638 = alloca %S.gen.SizeAlign, align 16 - %a673 = alloca { ptr, i64, i64 }, align 16 - %a675 = alloca { ptr, i64, i64 }, align 16 - %a676 = alloca { ptr, i64, i64 }, align 16 - %a677 = alloca { ptr, i64, i64 }, align 16 - %a687 = alloca { ptr, i64, i64 }, align 16 + %a622 = alloca { ptr, i64, i64 }, align 16 + %a623 = 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 + %a628 = alloca { ptr, i64, i64 }, align 16 + %a631 = alloca { ptr, i64, i64 }, align 16 + %a632 = 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 + %a638 = 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 + %a643 = alloca { ptr, i64, i64 }, align 16 + %a655 = alloca { ptr, i64, i64 }, align 16 + %a657 = alloca { ptr, i64, i64 }, align 16 + %a658 = alloca { ptr, i64, i64 }, align 16 + %a676 = alloca %S.gen.StructDef, align 16 + %a677 = alloca %S.gen.StructDef, align 16 + %a679 = alloca %S.gen.StructDef, align 16 + %a683 = alloca { ptr, i64, i64 }, align 16 + %a687 = alloca %S.gen.SizeAlign, align 16 %a688 = alloca { ptr, i64, i64 }, align 16 - %a689 = 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 - %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 - %a702 = alloca { ptr, i64, i64 }, align 16 - %a703 = alloca { ptr, i64, i64 }, align 16 - %a704 = 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 - %a720 = alloca { ptr, i64, i64 }, align 16 - %a721 = alloca { ptr, i64, i64 }, align 16 - %a723 = alloca { ptr, i64, i64 }, align 16 - %a724 = alloca { ptr, i64, i64 }, align 16 - %a725 = alloca { ptr, i64, i64 }, align 16 - %a727 = alloca { ptr, i64, i64 }, align 16 - %a728 = alloca { ptr, i64, i64 }, align 16 - %a729 = alloca { ptr, i64, i64 }, align 16 - %a741 = alloca { ptr, i64, i64 }, align 16 + %a692 = alloca i64, align 16 + %a705 = alloca %S.gen.SizeAlign, align 16 + %a740 = alloca { ptr, i64, i64 }, align 16 %a742 = alloca { ptr, i64, i64 }, align 16 %a743 = 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 - %a747 = alloca { ptr, i64, i64 }, align 16 - %a764 = alloca { ptr, i64, i64 }, align 16 - %a765 = alloca i32, align 16 + %a755 = alloca { ptr, i64, i64 }, align 16 + %a756 = alloca { ptr, i64, i64 }, align 16 + %a757 = alloca { ptr, i64, i64 }, align 16 + %a759 = alloca { ptr, i64, i64 }, align 16 + %a760 = alloca { ptr, i64, i64 }, align 16 + %a761 = alloca { ptr, i64, i64 }, align 16 + %a762 = alloca { ptr, i64, i64 }, align 16 + %a765 = alloca { ptr, i64, i64 }, align 16 + %a767 = 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 + %a771 = 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 + %a781 = alloca { ptr, i64, i64 }, align 16 + %a783 = 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 + %a789 = 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 + %a798 = 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 + %a802 = 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 + %a807 = alloca { ptr, i64, i64 }, align 16 + %a819 = 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 + %a825 = alloca { ptr, i64, i64 }, align 16 + %a826 = alloca { ptr, i64, i64 }, align 16 + %a827 = alloca { ptr, i64, i64 }, align 16 + %a828 = alloca { ptr, i64, i64 }, align 16 + %a840 = alloca { ptr, i64, i64 }, align 16 + %a847 = alloca { ptr, i64, i64 }, align 16 + %a848 = alloca i32, align 16 store ptr %p0, ptr %a1 store %S.ast.Type %p1, ptr %a2 %t3 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 @@ -39034,1138 +45376,1312 @@ 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.2608, i64 4, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.2699, 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.from4193 -logic.from4193: - br i1 %t13, label %logic.end4195, label %logic.rhs4194 -logic.rhs4194: + br label %logic.from4420 +logic.from4420: + br i1 %t13, label %logic.end4422, label %logic.rhs4421 +logic.rhs4421: %t14 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t14, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.2609, i64 4, i64 0 }, ptr %a16 + store { ptr, i64, i64 } { ptr @.str.2700, 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.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: + br label %logic.rend4423 +logic.rend4423: + br label %logic.end4422 +logic.end4422: + %t19 = phi i1 [ true, %logic.from4420 ], [ %t18, %logic.rend4423 ] + br i1 %t19, label %then4424, label %endif4426 +then4424: + call void @finch_str_drop(ptr %a8) ret i64 -1 -endif4199: +endif4426: %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.2610, i64 2, i64 0 }, ptr %a23 + store { ptr, i64, i64 } { ptr @.str.2701, 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 %panic4200, label %ok4201 -panic4200: - call void @finch_panic(ptr @.str.2611, i64 1797, ptr @.str.2612) + store { ptr, i64, i64 } %t21, ptr %a25 + call void @finch_str_drop(ptr %a25) + %t26 = load { ptr, i64, i64 }, ptr %a22 + store { ptr, i64, i64 } %t26, ptr %a27 + %t28 = load ptr, ptr %a1 + %t29 = icmp eq ptr %t28, null + br i1 %t29, label %panic4427, label %ok4428 +panic4427: + call void @finch_panic(ptr @.str.2702, i64 1952, ptr @.str.2703) unreachable -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 %then4202, label %endif4204 -then4202: - %t34 = load ptr, ptr %a1 - %t35 = icmp eq ptr %t34, null - br i1 %t35, label %panic4205, label %ok4206 -panic4205: - call void @finch_panic(ptr @.str.2613, i64 1798, ptr @.str.2614) +ok4428: + %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 33 + %t31 = load { ptr, i64, i64 }, ptr %a27 + store { ptr, i64, i64 } %t31, ptr %a32 + %t33 = call i64 @finch_map_find(ptr %t30, ptr %a32, 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) + %t34 = icmp sge i64 %t33, 0 + br i1 %t34, label %then4429, label %endif4431 +then4429: + %t35 = load ptr, ptr %a1 + %t36 = icmp eq ptr %t35, null + br i1 %t36, label %panic4432, label %ok4433 +panic4432: + call void @finch_panic(ptr @.str.2704, i64 1953, ptr @.str.2705) unreachable -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.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.2615, i64 1798, ptr %a41) +ok4433: + %t37 = getelementptr inbounds %S.gen.Gen, ptr %t35, i32 0, i32 33 + %t38 = load { ptr, i64, i64 }, ptr %a27 + store { ptr, i64, i64 } %t38, ptr %a39 + %t40 = call i64 @finch_map_find(ptr %t37, ptr %a39, 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) + %t41 = icmp slt i64 %t40, 0 + br i1 %t41, label %map.missing4434, label %map.found4435 +map.missing4434: + store { ptr, i64, i64 } zeroinitializer, ptr %a42 + store { ptr, i64, i64 } %t38, ptr %a43 + call void @finch_buf_str(ptr %a42, ptr %a43, i32 1) + call void @finch_map_missing(ptr @.str.2706, i64 1953, ptr %a42) unreachable -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 -endif4204: - store i64 -1, ptr %a48 - %t49 = load ptr, ptr %a1 - %t50 = icmp eq ptr %t49, null - br i1 %t50, label %panic4209, label %ok4210 -panic4209: - call void @finch_panic(ptr @.str.2616, i64 1801, ptr @.str.2617) +map.found4435: + %t44 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t37, i32 0, i32 0 + %t45 = load ptr, ptr %t44 + %t46 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t45, i64 %t40 + %t47 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t46, i32 0, i32 2 + %t48 = load i64, ptr %t47 + call void @finch_str_drop(ptr %a27) + call void @finch_str_drop(ptr %a8) + ret i64 %t48 +endif4431: + store i64 -1, ptr %a49 + %t50 = load ptr, ptr %a1 + %t51 = icmp eq ptr %t50, null + br i1 %t51, label %panic4436, label %ok4437 +panic4436: + call void @finch_panic(ptr @.str.2707, i64 1956, ptr @.str.2708) unreachable -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 %range4211, label %inrange4212 -range4211: - call void @finch_panic_index(ptr @.str.2618, i64 1801, i64 0, i64 %t53) +ok4437: + %t52 = getelementptr inbounds %S.gen.Gen, ptr %t50, i32 0, i32 34 + %t53 = load { ptr, i64, i64 }, ptr %t52 + %t54 = extractvalue { ptr, i64, i64 } %t53, 1 + %t55 = icmp uge i64 0, %t54 + br i1 %t55, label %range4438, label %inrange4439 +range4438: + call void @finch_panic_index(ptr @.str.2709, i64 1956, i64 0, i64 %t54) unreachable -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.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 %then4213, label %else4214 -then4213: - %t64 = load ptr, ptr %a1 - %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 %endif4215 -else4214: - %t66 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t66, ptr %a67 - 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 %then4216, label %else4217 -then4216: - %t71 = load ptr, ptr %a1 - %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 %endif4218 -else4217: - %t73 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t73, ptr %a74 - 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 %then4219, label %else4220 -then4219: - %t78 = load ptr, ptr %a1 - %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 %endif4221 -else4220: - %t80 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t80, ptr %a81 - 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 %then4222, label %else4223 -then4222: - %t85 = load ptr, ptr %a1 - %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 %endif4224 -else4223: - %t87 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t87, ptr %a88 - 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 %then4225, label %else4226 -then4225: - %t92 = load ptr, ptr %a1 - %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 %endif4227 -else4226: - %t94 = load %S.ast.Type, ptr %a2 - %t95 = call i1 @finch.gen.isInt(%S.ast.Type %t94) - 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 %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 - %t102 = call i64 @finch.gen.bitsOf(%S.ast.Type %t101) - %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 %endif4230 -else4229: - %t105 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t105, ptr %a106 - 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 %then4234, label %else4235 -then4234: - %t110 = load ptr, ptr %a1 - %t111 = icmp eq ptr %t110, null - br i1 %t111, label %panic4237, label %ok4238 -panic4237: - call void @finch_panic(ptr @.str.2637, i64 1819, ptr @.str.2638) - unreachable -ok4238: - %t112 = getelementptr inbounds %S.gen.Gen, ptr %t110, i32 0, i32 20 +inrange4439: + %t56 = extractvalue { ptr, i64, i64 } %t53, 0 + %t57 = getelementptr inbounds i64, ptr %t56, i64 0 + %t58 = load i64, ptr %t57 + store i64 %t58, ptr %a59 + %t60 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t60, ptr %a61 + store { ptr, i64, i64 } { ptr @.str.2710, i64 4, i64 0 }, ptr %a62 + %t63 = call i32 @finch_str_eq(ptr %a61, ptr %a62) + %t64 = icmp ne i32 %t63, 0 + br i1 %t64, label %then4440, label %else4441 +then4440: + %t65 = load ptr, ptr %a1 + %t66 = call i64 @finch.gen.basicType(ptr %t65, { ptr, i64, i64 } { ptr @.str.2711, i64 4, i64 0 }, i64 8, { ptr, i64, i64 } { ptr @.str.2712, i64 14, i64 0 }) + store i64 %t66, ptr %a49 + br label %endif4442 +else4441: + %t67 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t67, ptr %a68 + store { ptr, i64, i64 } { ptr @.str.2713, 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 %then4443, label %else4444 +then4443: + %t72 = load ptr, ptr %a1 + %t73 = call i64 @finch.gen.basicType(ptr %t72, { ptr, i64, i64 } { ptr @.str.2714, i64 4, i64 0 }, i64 8, { ptr, i64, i64 } { ptr @.str.2715, i64 18, i64 0 }) + store i64 %t73, ptr %a49 + br label %endif4445 +else4444: + %t74 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t74, ptr %a75 + store { ptr, i64, i64 } { ptr @.str.2716, i64 3, i64 0 }, ptr %a76 + %t77 = call i32 @finch_str_eq(ptr %a75, ptr %a76) + %t78 = icmp ne i32 %t77, 0 + br i1 %t78, label %then4446, label %else4447 +then4446: + %t79 = load ptr, ptr %a1 + %t80 = call i64 @finch.gen.basicType(ptr %t79, { ptr, i64, i64 } { ptr @.str.2717, i64 3, i64 0 }, i64 64, { ptr, i64, i64 } { ptr @.str.2718, i64 13, i64 0 }) + store i64 %t80, ptr %a49 + br label %endif4448 +else4447: + %t81 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t81, ptr %a82 + store { ptr, i64, i64 } { ptr @.str.2719, i64 5, i64 0 }, ptr %a83 + %t84 = call i32 @finch_str_eq(ptr %a82, ptr %a83) + %t85 = icmp ne i32 %t84, 0 + br i1 %t85, label %then4449, label %else4450 +then4449: + %t86 = load ptr, ptr %a1 + %t87 = call i64 @finch.gen.basicType(ptr %t86, { ptr, i64, i64 } { ptr @.str.2720, i64 5, i64 0 }, i64 64, { ptr, i64, i64 } { ptr @.str.2721, i64 12, i64 0 }) + store i64 %t87, ptr %a49 + br label %endif4451 +else4450: + %t88 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t88, ptr %a89 + store { ptr, i64, i64 } { ptr @.str.2722, i64 3, i64 0 }, ptr %a90 + %t91 = call i32 @finch_str_eq(ptr %a89, ptr %a90) + %t92 = icmp ne i32 %t91, 0 + br i1 %t92, label %then4452, label %else4453 +then4452: + %t93 = load ptr, ptr %a1 + %t94 = call i64 @finch.gen.basicType(ptr %t93, { ptr, i64, i64 } { ptr @.str.2723, i64 3, i64 0 }, i64 32, { ptr, i64, i64 } { ptr @.str.2724, i64 12, i64 0 }) + store i64 %t94, ptr %a49 + br label %endif4454 +else4453: + %t95 = load %S.ast.Type, ptr %a2 + %t96 = call i1 @finch.gen.isInt(%S.ast.Type %t95) + br i1 %t96, label %then4455, label %else4456 +then4455: + store { ptr, i64, i64 } { ptr @.str.2725, i64 15, i64 0 }, ptr %a97 + %t98 = load %S.ast.Type, ptr %a2 + %t99 = call i1 @finch.gen.isSigned(%S.ast.Type %t98) + br i1 %t99, label %then4458, label %endif4460 +then4458: + %t100 = load { ptr, i64, i64 }, ptr %a97 + store { ptr, i64, i64 } { ptr @.str.2726, i64 13, i64 0 }, ptr %a97 + store { ptr, i64, i64 } %t100, ptr %a101 + call void @finch_str_drop(ptr %a101) + br label %endif4460 +endif4460: + %t102 = load ptr, ptr %a1 + %t103 = load { ptr, i64, i64 }, ptr %a8 + %t104 = load %S.ast.Type, ptr %a2 + %t105 = call i64 @finch.gen.bitsOf(%S.ast.Type %t104) + %t106 = load { ptr, i64, i64 }, ptr %a97 + %t107 = call i64 @finch.gen.basicType(ptr %t102, { ptr, i64, i64 } %t103, i64 %t105, { ptr, i64, i64 } %t106) + store i64 %t107, ptr %a49 + call void @finch_str_drop(ptr %a97) + br label %endif4457 +else4456: + %t108 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t108, ptr %a109 + store { ptr, i64, i64 } { ptr @.str.2727, i64 4, i64 0 }, ptr %a110 + %t111 = call i32 @finch_str_eq(ptr %a109, ptr %a110) + %t112 = icmp ne i32 %t111, 0 + br i1 %t112, label %then4461, label %else4462 +then4461: %t113 = load ptr, ptr %a1 - %t114 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t115 = load { ptr, i64, i64 }, ptr %t114 - %t116 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t117 = load { ptr, i64, i64 }, ptr %t116 - %t118 = call i64 @finch.gen.findEnum(ptr %t113, { ptr, i64, i64 } %t115, { ptr, i64, i64 } %t117) - %t119 = load { ptr, i64, i64 }, ptr %t112 - %t120 = extractvalue { ptr, i64, i64 } %t119, 1 - %t121 = icmp uge i64 %t118, %t120 - br i1 %t121, label %range4239, label %inrange4240 -range4239: - call void @finch_panic_index(ptr @.str.2639, i64 1819, i64 %t118, i64 %t120) + %t114 = icmp eq ptr %t113, null + br i1 %t114, label %panic4464, label %ok4465 +panic4464: + call void @finch_panic(ptr @.str.2728, i64 1974, ptr @.str.2729) unreachable -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 - store %S.gen.EnumDef %t124, ptr %a125 - call void @finch.copy.S_gen_EnumDef(ptr %a126, ptr %a125) - %t127 = load %S.gen.EnumDef, ptr %a126 +ok4465: + %t115 = getelementptr inbounds %S.gen.Gen, ptr %t113, i32 0, i32 21 + %t116 = load ptr, ptr %a1 + %t117 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 + %t118 = load { ptr, i64, i64 }, ptr %t117 + %t119 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 + %t120 = load { ptr, i64, i64 }, ptr %t119 + %t121 = call i64 @finch.gen.findEnum(ptr %t116, { ptr, i64, i64 } %t118, { ptr, i64, i64 } %t120) + %t122 = load { ptr, i64, i64 }, ptr %t115 + %t123 = extractvalue { ptr, i64, i64 } %t122, 1 + %t124 = icmp uge i64 %t121, %t123 + br i1 %t124, label %range4466, label %inrange4467 +range4466: + call void @finch_panic_index(ptr @.str.2730, i64 1974, i64 %t121, i64 %t123) + unreachable +inrange4467: + %t125 = extractvalue { ptr, i64, i64 } %t122, 0 + %t126 = getelementptr inbounds %S.gen.EnumDef, ptr %t125, i64 %t121 + %t127 = load %S.gen.EnumDef, ptr %t126 store %S.gen.EnumDef %t127, ptr %a128 - store { ptr, i64, i64 } zeroinitializer, ptr %a129 - %t130 = getelementptr inbounds %S.gen.EnumDef, ptr %a128, i32 0, i32 2 - %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.cond4241 -for.cond4241: - %t134 = load i64, ptr %a133 - %t135 = icmp slt i64 %t134, %t132 - 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 - %t139 = load i64, ptr %a133 - %t140 = load { ptr, i64, i64 }, ptr %t138 - %t141 = extractvalue { ptr, i64, i64 } %t140, 1 - %t142 = icmp uge i64 %t139, %t141 - br i1 %t142, label %range4245, label %inrange4246 -range4245: - call void @finch_panic_index(ptr @.str.2641, i64 1822, i64 %t139, i64 %t141) + call void @finch.copy.S_gen_EnumDef(ptr %a129, ptr %a128) + %t130 = load %S.gen.EnumDef, ptr %a129 + store %S.gen.EnumDef %t130, ptr %a131 + store { ptr, i64, i64 } zeroinitializer, ptr %a132 + %t133 = getelementptr inbounds %S.gen.EnumDef, ptr %a131, i32 0, i32 2 + %t134 = getelementptr inbounds { ptr, i64, i64 }, ptr %t133, i32 0, i32 1 + %t135 = load i64, ptr %t134 + store i64 0, ptr %a136 + br label %for.cond4468 +for.cond4468: + %t137 = load i64, ptr %a136 + %t138 = icmp slt i64 %t137, %t135 + br i1 %t138, label %for.body4469, label %for.end4471 +for.body4469: + %t139 = getelementptr inbounds { ptr, i64, i64 }, ptr %a132, i32 0, i32 1 + %t140 = load ptr, ptr %a1 + %t141 = getelementptr inbounds %S.gen.EnumDef, ptr %a131, i32 0, i32 2 + %t142 = load i64, ptr %a136 + %t143 = load { ptr, i64, i64 }, ptr %t141 + %t144 = extractvalue { ptr, i64, i64 } %t143, 1 + %t145 = icmp uge i64 %t142, %t144 + br i1 %t145, label %range4472, label %inrange4473 +range4472: + call void @finch_panic_index(ptr @.str.2732, i64 1977, i64 %t142, i64 %t144) unreachable -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.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.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 - %t155 = load i64, ptr %a133 - %t156 = load { ptr, i64, i64 }, ptr %t154 - %t157 = extractvalue { ptr, i64, i64 } %t156, 1 - %t158 = icmp uge i64 %t155, %t157 - br i1 %t158, label %range4247, label %inrange4248 -range4247: - call void @finch_panic_index(ptr @.str.2643, i64 1822, i64 %t155, i64 %t157) +inrange4473: + %t146 = extractvalue { ptr, i64, i64 } %t143, 0 + %t147 = getelementptr inbounds { ptr, i64, i64 }, ptr %t146, i64 %t142 + %t148 = load { ptr, i64, i64 }, ptr %t147 + store { ptr, i64, i64 } { ptr @.str.2731, i64 21, i64 0 }, 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.2733, i64 10, i64 0 }, ptr %a155 + call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155) + store { ptr, i64, i64 } %t152, ptr %a156 + call void @finch_str_drop(ptr %a156) + %t157 = load { ptr, i64, i64 }, ptr %a153 + %t158 = getelementptr inbounds %S.gen.EnumDef, ptr %a131, i32 0, i32 3 + %t159 = load i64, ptr %a136 + %t160 = load { ptr, i64, i64 }, ptr %t158 + %t161 = extractvalue { ptr, i64, i64 } %t160, 1 + %t162 = icmp uge i64 %t159, %t161 + br i1 %t162, label %range4474, label %inrange4475 +range4474: + call void @finch_panic_index(ptr @.str.2734, i64 1977, i64 %t159, i64 %t161) unreachable -inrange4248: - %t159 = extractvalue { ptr, i64, i64 } %t156, 0 - %t160 = getelementptr inbounds i64, ptr %t159, i64 %t155 - %t161 = load i64, ptr %t160 - call void @finch_str_from_int(ptr %a162, i64 %t161) - %t163 = load { ptr, i64, i64 }, ptr %a162 - store { ptr, i64, i64 } %t153, 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.2644, i64 1, i64 0 }, ptr %a170 +inrange4475: + %t163 = extractvalue { ptr, i64, i64 } %t160, 0 + %t164 = getelementptr inbounds i64, ptr %t163, i64 %t159 + %t165 = load i64, ptr %t164 + call void @finch_str_from_int(ptr %a166, i64 %t165) + %t167 = load { ptr, i64, i64 }, ptr %a166 + store { ptr, i64, i64 } %t157, 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 - %t172 = call i64 @finch.gen.md(ptr %t137, { ptr, i64, i64 } %t171) - %t173 = call { ptr, i64, i64 } @finch.gen.mdRef(i64 %t172) - %t174 = load i64, ptr %t136 - %t175 = add i64 %t174, 1 - call void @finch_arr_reserve(ptr %a129, i64 %t175, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t176 = load ptr, ptr %a129 - %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.step4243 -for.step4243: - %t178 = load i64, ptr %a133 - %t179 = add i64 %t178, 1 - store i64 %t179, ptr %a133 - 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.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.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 - call void @finch_str_from_int(ptr %a192, i64 %t191) - %t193 = load { ptr, i64, i64 }, ptr %a192 - store { ptr, i64, i64 } %t190, ptr %a195 - store { ptr, i64, i64 } %t193, ptr %a196 - 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.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.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 - 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.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 %endif4236 -else4235: - %t215 = load ptr, ptr %a1 - %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 %panic4249, label %ok4250 -panic4249: - call void @finch_panic(ptr @.str.2651, i64 1828, ptr @.str.2652) + store { ptr, i64, i64 } %t157, ptr %a171 + call void @finch_str_drop(ptr %a171) + store { ptr, i64, i64 } %t167, ptr %a172 + call void @finch_str_drop(ptr %a172) + %t173 = load { ptr, i64, i64 }, ptr %a168 + store { ptr, i64, i64 } %t173, ptr %a175 + store { ptr, i64, i64 } { ptr @.str.2735, i64 1, i64 0 }, ptr %a176 + call void @finch_str_concat(ptr %a174, ptr %a175, ptr %a176) + store { ptr, i64, i64 } %t173, ptr %a177 + call void @finch_str_drop(ptr %a177) + %t178 = load { ptr, i64, i64 }, ptr %a174 + %t179 = call i64 @finch.gen.md(ptr %t140, { ptr, i64, i64 } %t178) + store { ptr, i64, i64 } %t178, ptr %a180 + call void @finch_str_drop(ptr %a180) + %t181 = call { ptr, i64, i64 } @finch.gen.mdRef(i64 %t179) + %t182 = load i64, ptr %t139 + %t183 = add i64 %t182, 1 + call void @finch_arr_reserve(ptr %a132, i64 %t183, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t184 = load ptr, ptr %a132 + %t185 = getelementptr inbounds { ptr, i64, i64 }, ptr %t184, i64 %t182 + store { ptr, i64, i64 } %t181, ptr %t185 + store i64 %t183, ptr %t139 + br label %for.step4470 +for.step4470: + %t186 = load i64, ptr %a136 + %t187 = add i64 %t186, 1 + store i64 %t187, ptr %a136 + br label %for.cond4468 +for.end4471: + %t188 = load ptr, ptr %a1 + %t189 = getelementptr inbounds %S.gen.EnumDef, ptr %a131, i32 0, i32 1 + %t190 = load { ptr, i64, i64 }, ptr %t189 + store { ptr, i64, i64 } { ptr @.str.2736, i64 54, 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.2737, i64 10, i64 0 }, ptr %a197 + call void @finch_str_concat(ptr %a195, ptr %a196, ptr %a197) + store { ptr, i64, i64 } %t194, ptr %a198 + call void @finch_str_drop(ptr %a198) + %t199 = load { ptr, i64, i64 }, ptr %a195 + %t200 = load i64, ptr %a59 + call void @finch_str_from_int(ptr %a201, i64 %t200) + %t202 = load { ptr, i64, i64 }, ptr %a201 + store { ptr, i64, i64 } %t199, ptr %a204 + store { ptr, i64, i64 } %t202, ptr %a205 + call void @finch_str_concat(ptr %a203, ptr %a204, ptr %a205) + store { ptr, i64, i64 } %t199, ptr %a206 + call void @finch_str_drop(ptr %a206) + store { ptr, i64, i64 } %t202, ptr %a207 + call void @finch_str_drop(ptr %a207) + %t208 = load { ptr, i64, i64 }, ptr %a203 + store { ptr, i64, i64 } %t208, ptr %a210 + store { ptr, i64, i64 } { ptr @.str.2738, i64 24, i64 0 }, ptr %a211 + call void @finch_str_concat(ptr %a209, ptr %a210, ptr %a211) + store { ptr, i64, i64 } %t208, ptr %a212 + call void @finch_str_drop(ptr %a212) + %t213 = load { ptr, i64, i64 }, ptr %a209 + %t214 = getelementptr inbounds { ptr, i64, i64 }, ptr %a132, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.2739, i64 2, i64 0 }, ptr %a215 + call void @finch_str_join(ptr %a216, ptr %a132, ptr %a215) + %t217 = load { ptr, i64, i64 }, ptr %a216 + store { ptr, i64, i64 } %t213, ptr %a219 + store { ptr, i64, i64 } %t217, ptr %a220 + call void @finch_str_concat(ptr %a218, ptr %a219, ptr %a220) + store { ptr, i64, i64 } %t213, ptr %a221 + call void @finch_str_drop(ptr %a221) + store { ptr, i64, i64 } %t217, ptr %a222 + call void @finch_str_drop(ptr %a222) + %t223 = load { ptr, i64, i64 }, ptr %a218 + store { ptr, i64, i64 } %t223, ptr %a225 + store { ptr, i64, i64 } { ptr @.str.2740, i64 2, i64 0 }, ptr %a226 + call void @finch_str_concat(ptr %a224, ptr %a225, ptr %a226) + store { ptr, i64, i64 } %t223, ptr %a227 + call void @finch_str_drop(ptr %a227) + %t228 = load { ptr, i64, i64 }, ptr %a224 + %t229 = call i64 @finch.gen.md(ptr %t188, { ptr, i64, i64 } %t228) + store { ptr, i64, i64 } %t228, ptr %a230 + call void @finch_str_drop(ptr %a230) + store i64 %t229, ptr %a49 + call void @finch.drop.arr_str(ptr %a132) + call void @finch.drop.S_gen_EnumDef(ptr %a131) + br label %endif4463 +else4462: + %t231 = load ptr, ptr %a1 + %t232 = call i64 @finch.gen.md(ptr %t231, { ptr, i64, i64 } { ptr @.str.2741, i64 0, i64 0 }) + store i64 %t232, ptr %a49 + %t233 = load i64, ptr %a49 + %t234 = load ptr, ptr %a1 + %t235 = icmp eq ptr %t234, null + br i1 %t235, label %panic4476, label %ok4477 +panic4476: + call void @finch_panic(ptr @.str.2742, i64 1983, ptr @.str.2743) unreachable -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 - %t224 = call i64 @finch_map_slot(ptr %t220, ptr %a222, 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, ptr %a223) - %t225 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t220, i32 0, i32 0 - %t226 = load ptr, ptr %t225 - %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.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.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.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 %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 %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 %range4259, label %inrange4260 -range4259: - call void @finch_panic_index(ptr @.str.2654, i64 1832, i64 0, i64 %t246) +ok4477: + %t236 = getelementptr inbounds %S.gen.Gen, ptr %t234, i32 0, i32 33 + %t237 = load { ptr, i64, i64 }, ptr %a27 + store { ptr, i64, i64 } %t237, ptr %a238 + store i32 0, ptr %a239 + %t240 = call i64 @finch_map_slot(ptr %t236, ptr %a238, 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, ptr %a239) + %t241 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t236, i32 0, i32 0 + %t242 = load ptr, ptr %t241 + %t243 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t242, i64 %t240 + %t244 = load i32, ptr %a239 + %t245 = icmp ne i32 %t244, 0 + br i1 %t245, label %map.new4478, label %map.have4479 +map.new4478: + %t246 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t243, i32 0, i32 1 + call void @finch_str_copy(ptr %t246, ptr %a238) + %t247 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t243, i32 0, i32 2 + store i64 0, ptr %t247 + br label %map.have4479 +map.have4479: + %t248 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t243, i32 0, i32 2 + store i64 %t233, ptr %t248 + %t249 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t249, ptr %a250 + store { ptr, i64, i64 } { ptr @.str.2744, i64 3, i64 0 }, ptr %a251 + %t252 = call i32 @finch_str_eq(ptr %a250, ptr %a251) + %t253 = icmp ne i32 %t252, 0 + br i1 %t253, label %then4480, label %else4481 +then4480: + store i64 -1, ptr %a254 + %t255 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t256 = getelementptr inbounds { ptr, i64, i64 }, ptr %t255, i32 0, i32 1 + %t257 = load i64, ptr %t256 + %t258 = icmp sgt i64 %t257, 0 + br i1 %t258, label %then4483, label %endif4485 +then4483: + %t259 = load ptr, ptr %a1 + %t260 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t261 = load { ptr, i64, i64 }, ptr %t260 + %t262 = extractvalue { ptr, i64, i64 } %t261, 1 + %t263 = icmp uge i64 0, %t262 + br i1 %t263, label %range4486, label %inrange4487 +range4486: + call void @finch_panic_index(ptr @.str.2745, i64 1987, i64 0, i64 %t262) unreachable -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 %endif4258 -endif4258: - %t252 = load i64, ptr %a238 - %t253 = call { ptr, i64, i64 } @finch.gen.mdRef(i64 %t252) - 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.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 %panic4261, label %ok4262 -panic4261: - call void @finch_panic(ptr @.str.2657, i64 1834, ptr @.str.2658) +inrange4487: + %t264 = extractvalue { ptr, i64, i64 } %t261, 0 + %t265 = getelementptr inbounds %S.ast.Type, ptr %t264, i64 0 + %t266 = load %S.ast.Type, ptr %t265 + %t267 = call i64 @finch.gen.diType(ptr %t259, %S.ast.Type %t266) + store i64 %t267, ptr %a254 + br label %endif4485 +endif4485: + %t268 = load i64, ptr %a254 + %t269 = call { ptr, i64, i64 } @finch.gen.mdRef(i64 %t268) + store { ptr, i64, i64 } { ptr @.str.2746, i64 51, i64 0 }, ptr %a271 + store { ptr, i64, i64 } %t269, ptr %a272 + call void @finch_str_concat(ptr %a270, ptr %a271, ptr %a272) + store { ptr, i64, i64 } %t269, ptr %a273 + call void @finch_str_drop(ptr %a273) + %t274 = load { ptr, i64, i64 }, ptr %a270 + store { ptr, i64, i64 } %t274, ptr %a276 + store { ptr, i64, i64 } { ptr @.str.2747, i64 11, i64 0 }, ptr %a277 + call void @finch_str_concat(ptr %a275, ptr %a276, ptr %a277) + store { ptr, i64, i64 } %t274, ptr %a278 + call void @finch_str_drop(ptr %a278) + %t279 = load { ptr, i64, i64 }, ptr %a275 + %t280 = load ptr, ptr %a1 + %t281 = icmp eq ptr %t280, null + br i1 %t281, label %panic4488, label %ok4489 +panic4488: + call void @finch_panic(ptr @.str.2748, i64 1989, ptr @.str.2749) unreachable -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 %range4263, label %inrange4264 -range4263: - call void @finch_panic_index(ptr @.str.2659, i64 1834, i64 %t265, i64 %t267) +ok4489: + %t282 = getelementptr inbounds %S.gen.Gen, ptr %t280, i32 0, i32 32 + %t283 = load i64, ptr %a49 + %t284 = load { ptr, i64, i64 }, ptr %t282 + %t285 = extractvalue { ptr, i64, i64 } %t284, 1 + %t286 = icmp uge i64 %t283, %t285 + br i1 %t286, label %range4490, label %inrange4491 +range4490: + call void @finch_panic_index(ptr @.str.2750, i64 1989, i64 %t283, i64 %t285) unreachable -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 %endif4255 -else4254: - %t271 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t271, ptr %a272 - 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 %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 %range4268, label %inrange4269 -range4268: - call void @finch_panic_index(ptr @.str.2661, i64 1836, i64 0, i64 %t279) +inrange4491: + %t287 = extractvalue { ptr, i64, i64 } %t284, 0 + %t288 = getelementptr inbounds { ptr, i64, i64 }, ptr %t287, i64 %t283 + %t289 = load { ptr, i64, i64 }, ptr %t288 + store { ptr, i64, i64 } %t279, ptr %t288 + store { ptr, i64, i64 } %t289, ptr %a290 + call void @finch_str_drop(ptr %a290) + br label %endif4482 +else4481: + %t291 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t291, ptr %a292 + store { ptr, i64, i64 } { ptr @.str.2751, i64 5, i64 0 }, ptr %a293 + %t294 = call i32 @finch_str_eq(ptr %a292, ptr %a293) + %t295 = icmp ne i32 %t294, 0 + br i1 %t295, label %then4492, label %else4493 +then4492: + %t296 = load ptr, ptr %a1 + %t297 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t298 = load { ptr, i64, i64 }, ptr %t297 + %t299 = extractvalue { ptr, i64, i64 } %t298, 1 + %t300 = icmp uge i64 0, %t299 + br i1 %t300, label %range4495, label %inrange4496 +range4495: + call void @finch_panic_index(ptr @.str.2752, i64 1991, i64 0, i64 %t299) unreachable -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 - %t284 = call %S.gen.SizeAlign @finch.gen.sizeAlign(ptr %t276, %S.ast.Type %t283) - store %S.gen.SizeAlign %t284, ptr %a285 - %t286 = load ptr, ptr %a1 - %t287 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 4 - %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.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.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) - store i64 %t299, ptr %a300 - %t301 = load ptr, ptr %a1 - %t302 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t303 = load { ptr, i64, i64 }, ptr %t302 - %t304 = extractvalue { ptr, i64, i64 } %t303, 1 - %t305 = icmp uge i64 0, %t304 - br i1 %t305, label %range4270, label %inrange4271 -range4270: - call void @finch_panic_index(ptr @.str.2665, i64 1838, i64 0, i64 %t304) - unreachable -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.2664, i64 51, i64 0 }, ptr %a312 +inrange4496: + %t301 = extractvalue { ptr, i64, i64 } %t298, 0 + %t302 = getelementptr inbounds %S.ast.Type, ptr %t301, i64 0 + %t303 = load %S.ast.Type, ptr %t302 + %t304 = call %S.gen.SizeAlign @finch.gen.sizeAlign(ptr %t296, %S.ast.Type %t303) + store %S.gen.SizeAlign %t304, ptr %a305 + %t306 = load ptr, ptr %a1 + %t307 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 4 + %t308 = load i64, ptr %t307 + call void @finch_str_from_int(ptr %a309, i64 %t308) + %t310 = load { ptr, i64, i64 }, ptr %a309 + store { ptr, i64, i64 } { ptr @.str.2753, i64 19, 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.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 - %t320 = load i64, ptr %t319 - %t321 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 4 - %t322 = load i64, ptr %t321 - %t323 = mul i64 %t320, %t322 - %t324 = mul i64 %t323, 8 - call void @finch_str_from_int(ptr %a325, i64 %t324) - %t326 = load { ptr, i64, i64 }, ptr %a325 - store { ptr, i64, i64 } %t318, ptr %a328 - store { ptr, i64, i64 } %t326, 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 %a332 - 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 - call void @finch_str_from_int(ptr %a336, i64 %t335) - %t337 = load { ptr, i64, i64 }, ptr %a336 - store { ptr, i64, i64 } %t334, ptr %a339 - store { ptr, i64, i64 } %t337, ptr %a340 - 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.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 %panic4272, label %ok4273 -panic4272: - call void @finch_panic(ptr @.str.2669, i64 1838, ptr @.str.2670) + store { ptr, i64, i64 } %t310, ptr %a314 + call void @finch_str_drop(ptr %a314) + %t315 = load { ptr, i64, i64 }, ptr %a311 + store { ptr, i64, i64 } %t315, ptr %a317 + store { ptr, i64, i64 } { ptr @.str.2754, i64 1, i64 0 }, ptr %a318 + call void @finch_str_concat(ptr %a316, ptr %a317, ptr %a318) + store { ptr, i64, i64 } %t315, ptr %a319 + call void @finch_str_drop(ptr %a319) + %t320 = load { ptr, i64, i64 }, ptr %a316 + %t321 = call i64 @finch.gen.md(ptr %t306, { ptr, i64, i64 } %t320) + store { ptr, i64, i64 } %t320, ptr %a322 + call void @finch_str_drop(ptr %a322) + store i64 %t321, ptr %a323 + %t324 = load ptr, ptr %a1 + %t325 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t326 = load { ptr, i64, i64 }, ptr %t325 + %t327 = extractvalue { ptr, i64, i64 } %t326, 1 + %t328 = icmp uge i64 0, %t327 + br i1 %t328, label %range4497, label %inrange4498 +range4497: + call void @finch_panic_index(ptr @.str.2756, i64 1993, i64 0, i64 %t327) unreachable -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 %range4274, label %inrange4275 -range4274: - call void @finch_panic_index(ptr @.str.2671, i64 1838, i64 %t349, i64 %t351) +inrange4498: + %t329 = extractvalue { ptr, i64, i64 } %t326, 0 + %t330 = getelementptr inbounds %S.ast.Type, ptr %t329, i64 0 + %t331 = load %S.ast.Type, ptr %t330 + %t332 = call i64 @finch.gen.diType(ptr %t324, %S.ast.Type %t331) + %t333 = call { ptr, i64, i64 } @finch.gen.mdRef(i64 %t332) + store { ptr, i64, i64 } { ptr @.str.2755, i64 51, i64 0 }, ptr %a335 + store { ptr, i64, i64 } %t333, ptr %a336 + call void @finch_str_concat(ptr %a334, ptr %a335, ptr %a336) + store { ptr, i64, i64 } %t333, ptr %a337 + call void @finch_str_drop(ptr %a337) + %t338 = load { ptr, i64, i64 }, ptr %a334 + store { ptr, i64, i64 } %t338, ptr %a340 + store { ptr, i64, i64 } { ptr @.str.2757, i64 8, i64 0 }, ptr %a341 + call void @finch_str_concat(ptr %a339, ptr %a340, ptr %a341) + store { ptr, i64, i64 } %t338, ptr %a342 + call void @finch_str_drop(ptr %a342) + %t343 = load { ptr, i64, i64 }, ptr %a339 + %t344 = getelementptr inbounds %S.gen.SizeAlign, ptr %a305, i32 0, i32 0 + %t345 = load i64, ptr %t344 + %t346 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 4 + %t347 = load i64, ptr %t346 + %t348 = mul i64 %t345, %t347 + %t349 = mul i64 %t348, 8 + call void @finch_str_from_int(ptr %a350, i64 %t349) + %t351 = load { ptr, i64, i64 }, ptr %a350 + store { ptr, i64, i64 } %t343, ptr %a353 + store { ptr, i64, i64 } %t351, ptr %a354 + call void @finch_str_concat(ptr %a352, ptr %a353, ptr %a354) + store { ptr, i64, i64 } %t343, ptr %a355 + call void @finch_str_drop(ptr %a355) + store { ptr, i64, i64 } %t351, ptr %a356 + call void @finch_str_drop(ptr %a356) + %t357 = load { ptr, i64, i64 }, ptr %a352 + store { ptr, i64, i64 } %t357, ptr %a359 + store { ptr, i64, i64 } { ptr @.str.2758, i64 15, i64 0 }, ptr %a360 + call void @finch_str_concat(ptr %a358, ptr %a359, ptr %a360) + store { ptr, i64, i64 } %t357, ptr %a361 + call void @finch_str_drop(ptr %a361) + %t362 = load { ptr, i64, i64 }, ptr %a358 + %t363 = load i64, ptr %a323 + call void @finch_str_from_int(ptr %a364, i64 %t363) + %t365 = load { ptr, i64, i64 }, ptr %a364 + store { ptr, i64, i64 } %t362, ptr %a367 + store { ptr, i64, i64 } %t365, ptr %a368 + call void @finch_str_concat(ptr %a366, ptr %a367, ptr %a368) + store { ptr, i64, i64 } %t362, ptr %a369 + call void @finch_str_drop(ptr %a369) + store { ptr, i64, i64 } %t365, ptr %a370 + call void @finch_str_drop(ptr %a370) + %t371 = load { ptr, i64, i64 }, ptr %a366 + store { ptr, i64, i64 } %t371, ptr %a373 + store { ptr, i64, i64 } { ptr @.str.2759, i64 2, i64 0 }, ptr %a374 + call void @finch_str_concat(ptr %a372, ptr %a373, ptr %a374) + store { ptr, i64, i64 } %t371, ptr %a375 + call void @finch_str_drop(ptr %a375) + %t376 = load { ptr, i64, i64 }, ptr %a372 + %t377 = load ptr, ptr %a1 + %t378 = icmp eq ptr %t377, null + br i1 %t378, label %panic4499, label %ok4500 +panic4499: + call void @finch_panic(ptr @.str.2760, i64 1993, ptr @.str.2761) unreachable -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 %endif4267 -else4266: - %t355 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t355, ptr %a356 - 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.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.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.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.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 %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 %range4286, label %inrange4287 -range4286: - call void @finch_panic_index(ptr @.str.2676, i64 1842, i64 0, i64 %t375) +ok4500: + %t379 = getelementptr inbounds %S.gen.Gen, ptr %t377, i32 0, i32 32 + %t380 = load i64, ptr %a49 + %t381 = load { ptr, i64, i64 }, ptr %t379 + %t382 = extractvalue { ptr, i64, i64 } %t381, 1 + %t383 = icmp uge i64 %t380, %t382 + br i1 %t383, label %range4501, label %inrange4502 +range4501: + call void @finch_panic_index(ptr @.str.2762, i64 1993, i64 %t380, i64 %t382) unreachable -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 - store %S.ast.Type %t379, ptr %a380 - 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 %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.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.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.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.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.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.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.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.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 - call void @finch_str_from_int(ptr %a431, i64 %t430) - %t432 = load { ptr, i64, i64 }, ptr %a431 - store { ptr, i64, i64 } %t429, ptr %a434 - store { ptr, i64, i64 } %t432, ptr %a435 - 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.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 - call void @finch_str_from_int(ptr %a442, i64 %t441) - %t443 = load { ptr, i64, i64 }, ptr %a442 - store { ptr, i64, i64 } %t440, ptr %a445 - store { ptr, i64, i64 } %t443, ptr %a446 - 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.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 - call void @finch_str_from_int(ptr %a453, i64 %t452) - %t454 = load { ptr, i64, i64 }, ptr %a453 - store { ptr, i64, i64 } %t451, 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.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 - call void @finch_str_from_int(ptr %a464, i64 %t463) - %t465 = load { ptr, i64, i64 }, ptr %a464 - store { ptr, i64, i64 } %t462, ptr %a467 - store { ptr, i64, i64 } %t465, ptr %a468 +inrange4502: + %t384 = extractvalue { ptr, i64, i64 } %t381, 0 + %t385 = getelementptr inbounds { ptr, i64, i64 }, ptr %t384, i64 %t380 + %t386 = load { ptr, i64, i64 }, ptr %t385 + store { ptr, i64, i64 } %t376, ptr %t385 + store { ptr, i64, i64 } %t386, ptr %a387 + call void @finch_str_drop(ptr %a387) + br label %endif4494 +else4493: + %t388 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t388, ptr %a389 + store { ptr, i64, i64 } { ptr @.str.2763, i64 3, i64 0 }, ptr %a390 + %t391 = call i32 @finch_str_eq(ptr %a389, ptr %a390) + %t392 = icmp ne i32 %t391, 0 + br label %logic.from4503 +logic.from4503: + br i1 %t392, label %logic.end4505, label %logic.rhs4504 +logic.rhs4504: + %t393 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t393, ptr %a394 + store { ptr, i64, i64 } { ptr @.str.2764, i64 5, i64 0 }, ptr %a395 + %t396 = call i32 @finch_str_eq(ptr %a394, ptr %a395) + %t397 = icmp ne i32 %t396, 0 + br label %logic.rend4506 +logic.rend4506: + br label %logic.end4505 +logic.end4505: + %t398 = phi i1 [ true, %logic.from4503 ], [ %t397, %logic.rend4506 ] + br i1 %t398, label %then4507, label %else4508 +then4507: + %t399 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.2765, i64 4, i64 0 }) + store %S.ast.Type %t399, ptr %a400 + %t401 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t401, ptr %a402 + store { ptr, i64, i64 } { ptr @.str.2766, i64 5, i64 0 }, ptr %a403 + %t404 = call i32 @finch_str_eq(ptr %a402, ptr %a403) + %t405 = icmp ne i32 %t404, 0 + br i1 %t405, label %then4510, label %endif4512 +then4510: + %t406 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t407 = load { ptr, i64, i64 }, ptr %t406 + %t408 = extractvalue { ptr, i64, i64 } %t407, 1 + %t409 = icmp uge i64 0, %t408 + br i1 %t409, label %range4513, label %inrange4514 +range4513: + call void @finch_panic_index(ptr @.str.2767, i64 1997, i64 0, i64 %t408) + unreachable +inrange4514: + %t410 = extractvalue { ptr, i64, i64 } %t407, 0 + %t411 = getelementptr inbounds %S.ast.Type, ptr %t410, i64 0 + %t412 = load %S.ast.Type, ptr %t411 + store %S.ast.Type %t412, ptr %a413 + call void @finch.copy.S_ast_Type(ptr %a414, ptr %a413) + %t415 = load %S.ast.Type, ptr %a414 + %t416 = load %S.ast.Type, ptr %a400 + store %S.ast.Type %t415, ptr %a400 + store %S.ast.Type %t416, ptr %a417 + call void @finch.drop.S_ast_Type(ptr %a417) + br label %endif4512 +endif4512: + %t418 = load ptr, ptr %a1 + %t419 = load ptr, ptr %a1 + %t420 = load %S.ast.Type, ptr %a400 + %t421 = call i64 @finch.gen.diType(ptr %t419, %S.ast.Type %t420) + %t422 = call { ptr, i64, i64 } @finch.gen.mdRef(i64 %t421) + store { ptr, i64, i64 } { ptr @.str.2768, i64 51, i64 0 }, ptr %a424 + store { ptr, i64, i64 } %t422, ptr %a425 + call void @finch_str_concat(ptr %a423, ptr %a424, ptr %a425) + store { ptr, i64, i64 } %t422, ptr %a426 + call void @finch_str_drop(ptr %a426) + %t427 = load { ptr, i64, i64 }, ptr %a423 + store { ptr, i64, i64 } %t427, ptr %a429 + store { ptr, i64, i64 } { ptr @.str.2769, i64 11, i64 0 }, ptr %a430 + call void @finch_str_concat(ptr %a428, ptr %a429, ptr %a430) + store { ptr, i64, i64 } %t427, ptr %a431 + call void @finch_str_drop(ptr %a431) + %t432 = load { ptr, i64, i64 }, ptr %a428 + %t433 = call i64 @finch.gen.md(ptr %t418, { ptr, i64, i64 } %t432) + store { ptr, i64, i64 } %t432, ptr %a434 + call void @finch_str_drop(ptr %a434) + store i64 %t433, ptr %a435 + %t436 = load ptr, ptr %a1 + %t437 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.2770, i64 3, i64 0 }) + %t438 = call i64 @finch.gen.diType(ptr %t436, %S.ast.Type %t437) + store %S.ast.Type %t437, ptr %a439 + call void @finch.drop.S_ast_Type(ptr %a439) + store i64 %t438, ptr %a440 + %t441 = load ptr, ptr %a1 + %t442 = load i64, ptr %a49 + %t443 = load i64, ptr %a59 + %t444 = load i64, ptr %a435 + %t445 = call i64 @finch.gen.dbgMember(ptr %t441, { ptr, i64, i64 } { ptr @.str.2771, i64 3, i64 0 }, i64 %t442, i64 %t443, i64 0, i64 %t444, i64 64, i64 0) + store i64 %t445, ptr %a446 + %t447 = load ptr, ptr %a1 + %t448 = load i64, ptr %a49 + %t449 = load i64, ptr %a59 + %t450 = load i64, ptr %a440 + %t451 = call i64 @finch.gen.dbgMember(ptr %t447, { ptr, i64, i64 } { ptr @.str.2772, i64 3, i64 0 }, i64 %t448, i64 %t449, i64 0, i64 %t450, i64 64, i64 64) + store i64 %t451, ptr %a452 + %t453 = load ptr, ptr %a1 + %t454 = load i64, ptr %a49 + %t455 = load i64, ptr %a59 + %t456 = load i64, ptr %a440 + %t457 = call i64 @finch.gen.dbgMember(ptr %t453, { ptr, i64, i64 } { ptr @.str.2773, i64 3, i64 0 }, i64 %t454, i64 %t455, i64 0, i64 %t456, i64 64, i64 128) + store i64 %t457, ptr %a458 + %t459 = load %S.ast.Type, ptr %a2 + %t460 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t459) + store { ptr, i64, i64 } { ptr @.str.2774, i64 52, i64 0 }, ptr %a462 + store { ptr, i64, i64 } %t460, ptr %a463 + call void @finch_str_concat(ptr %a461, ptr %a462, ptr %a463) + store { ptr, i64, i64 } %t460, ptr %a464 + call void @finch_str_drop(ptr %a464) + %t465 = load { ptr, i64, i64 }, ptr %a461 + store { ptr, i64, i64 } %t465, ptr %a467 + store { ptr, i64, i64 } { ptr @.str.2775, i64 10, i64 0 }, ptr %a468 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.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 %panic4288, label %ok4289 -panic4288: - call void @finch_panic(ptr @.str.2689, i64 1849, ptr @.str.2690) + store { ptr, i64, i64 } %t465, ptr %a469 + call void @finch_str_drop(ptr %a469) + %t470 = load { ptr, i64, i64 }, ptr %a466 + %t471 = load i64, ptr %a59 + call void @finch_str_from_int(ptr %a472, i64 %t471) + %t473 = load { ptr, i64, i64 }, ptr %a472 + store { ptr, i64, i64 } %t470, ptr %a475 + store { ptr, i64, i64 } %t473, ptr %a476 + call void @finch_str_concat(ptr %a474, ptr %a475, ptr %a476) + store { ptr, i64, i64 } %t470, ptr %a477 + call void @finch_str_drop(ptr %a477) + store { ptr, i64, i64 } %t473, ptr %a478 + call void @finch_str_drop(ptr %a478) + %t479 = load { ptr, i64, i64 }, ptr %a474 + store { ptr, i64, i64 } %t479, ptr %a481 + store { ptr, i64, i64 } { ptr @.str.2776, i64 37, i64 0 }, ptr %a482 + call void @finch_str_concat(ptr %a480, ptr %a481, ptr %a482) + store { ptr, i64, i64 } %t479, ptr %a483 + call void @finch_str_drop(ptr %a483) + %t484 = load { ptr, i64, i64 }, ptr %a480 + %t485 = load i64, ptr %a446 + call void @finch_str_from_int(ptr %a486, i64 %t485) + %t487 = load { ptr, i64, i64 }, ptr %a486 + store { ptr, i64, i64 } %t484, ptr %a489 + store { ptr, i64, i64 } %t487, ptr %a490 + call void @finch_str_concat(ptr %a488, ptr %a489, ptr %a490) + store { ptr, i64, i64 } %t484, ptr %a491 + call void @finch_str_drop(ptr %a491) + store { ptr, i64, i64 } %t487, ptr %a492 + call void @finch_str_drop(ptr %a492) + %t493 = load { ptr, i64, i64 }, ptr %a488 + store { ptr, i64, i64 } %t493, ptr %a495 + store { ptr, i64, i64 } { ptr @.str.2777, i64 3, i64 0 }, ptr %a496 + call void @finch_str_concat(ptr %a494, ptr %a495, ptr %a496) + store { ptr, i64, i64 } %t493, ptr %a497 + call void @finch_str_drop(ptr %a497) + %t498 = load { ptr, i64, i64 }, ptr %a494 + %t499 = load i64, ptr %a452 + call void @finch_str_from_int(ptr %a500, i64 %t499) + %t501 = load { ptr, i64, i64 }, ptr %a500 + store { ptr, i64, i64 } %t498, ptr %a503 + store { ptr, i64, i64 } %t501, ptr %a504 + call void @finch_str_concat(ptr %a502, ptr %a503, ptr %a504) + store { ptr, i64, i64 } %t498, ptr %a505 + call void @finch_str_drop(ptr %a505) + store { ptr, i64, i64 } %t501, ptr %a506 + call void @finch_str_drop(ptr %a506) + %t507 = load { ptr, i64, i64 }, ptr %a502 + store { ptr, i64, i64 } %t507, ptr %a509 + store { ptr, i64, i64 } { ptr @.str.2778, i64 3, i64 0 }, ptr %a510 + call void @finch_str_concat(ptr %a508, ptr %a509, ptr %a510) + store { ptr, i64, i64 } %t507, ptr %a511 + call void @finch_str_drop(ptr %a511) + %t512 = load { ptr, i64, i64 }, ptr %a508 + %t513 = load i64, ptr %a458 + call void @finch_str_from_int(ptr %a514, i64 %t513) + %t515 = load { ptr, i64, i64 }, ptr %a514 + store { ptr, i64, i64 } %t512, ptr %a517 + store { ptr, i64, i64 } %t515, ptr %a518 + call void @finch_str_concat(ptr %a516, ptr %a517, ptr %a518) + store { ptr, i64, i64 } %t512, ptr %a519 + call void @finch_str_drop(ptr %a519) + store { ptr, i64, i64 } %t515, ptr %a520 + call void @finch_str_drop(ptr %a520) + %t521 = load { ptr, i64, i64 }, ptr %a516 + store { ptr, i64, i64 } %t521, ptr %a523 + store { ptr, i64, i64 } { ptr @.str.2779, i64 2, i64 0 }, ptr %a524 + call void @finch_str_concat(ptr %a522, ptr %a523, ptr %a524) + store { ptr, i64, i64 } %t521, ptr %a525 + call void @finch_str_drop(ptr %a525) + %t526 = load { ptr, i64, i64 }, ptr %a522 + %t527 = load ptr, ptr %a1 + %t528 = icmp eq ptr %t527, null + br i1 %t528, label %panic4515, label %ok4516 +panic4515: + call void @finch_panic(ptr @.str.2780, i64 2004, ptr @.str.2781) unreachable -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 %range4290, label %inrange4291 -range4290: - call void @finch_panic_index(ptr @.str.2691, i64 1849, i64 %t477, i64 %t479) +ok4516: + %t529 = getelementptr inbounds %S.gen.Gen, ptr %t527, i32 0, i32 32 + %t530 = load i64, ptr %a49 + %t531 = load { ptr, i64, i64 }, ptr %t529 + %t532 = extractvalue { ptr, i64, i64 } %t531, 1 + %t533 = icmp uge i64 %t530, %t532 + br i1 %t533, label %range4517, label %inrange4518 +range4517: + call void @finch_panic_index(ptr @.str.2782, i64 2004, i64 %t530, i64 %t532) unreachable -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 %endif4282 -else4281: - %t483 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t483, ptr %a484 - 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 %then4292, label %else4293 -then4292: - %t488 = load ptr, ptr %a1 - %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.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.2695, i64 7, i64 0 }, ptr %t497 - %t498 = getelementptr inbounds { ptr, i64, i64 }, ptr %t496, i64 1 - 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.2697, i64 4, i64 0 }, ptr %t499 - %t500 = getelementptr inbounds { ptr, i64, i64 }, ptr %t496, i64 3 - 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.2699, i64 5, i64 0 }, ptr %t501 - %t502 = getelementptr inbounds { ptr, i64, i64 }, ptr %t496, i64 5 - 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.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.cond4295 -for.cond4295: - %t510 = load i64, ptr %a509 - %t511 = icmp slt i64 %t510, 7 - 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.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.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 %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 %range4306, label %inrange4307 -range4306: - call void @finch_panic_index(ptr @.str.2703, i64 1860, i64 %t522, i64 %t524) +inrange4518: + %t534 = extractvalue { ptr, i64, i64 } %t531, 0 + %t535 = getelementptr inbounds { ptr, i64, i64 }, ptr %t534, i64 %t530 + %t536 = load { ptr, i64, i64 }, ptr %t535 + store { ptr, i64, i64 } %t526, ptr %t535 + store { ptr, i64, i64 } %t536, ptr %a537 + call void @finch_str_drop(ptr %a537) + call void @finch.drop.S_ast_Type(ptr %a400) + br label %endif4509 +else4508: + %t538 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t538, ptr %a539 + store { ptr, i64, i64 } { ptr @.str.2783, i64 3, i64 0 }, ptr %a540 + %t541 = call i32 @finch_str_eq(ptr %a539, ptr %a540) + %t542 = icmp ne i32 %t541, 0 + br i1 %t542, label %then4519, label %else4520 +then4519: + %t543 = load ptr, ptr %a1 + %t544 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.2784, i64 3, i64 0 }) + %t545 = call i64 @finch.gen.diType(ptr %t543, %S.ast.Type %t544) + store %S.ast.Type %t544, ptr %a546 + call void @finch.drop.S_ast_Type(ptr %a546) + store i64 %t545, ptr %a547 + %t548 = load ptr, ptr %a1 + %t549 = call i64 @finch.gen.md(ptr %t548, { ptr, i64, i64 } { ptr @.str.2785, i64 66, i64 0 }) + store i64 %t549, ptr %a550 + %t551 = mul i64 7, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) + %t552 = call ptr @finch_alloc(i64 %t551) + %t553 = getelementptr inbounds { ptr, i64, i64 }, ptr %t552, i64 0 + store { ptr, i64, i64 } { ptr @.str.2786, i64 7, i64 0 }, ptr %t553 + %t554 = getelementptr inbounds { ptr, i64, i64 }, ptr %t552, i64 1 + store { ptr, i64, i64 } { ptr @.str.2787, i64 3, i64 0 }, ptr %t554 + %t555 = getelementptr inbounds { ptr, i64, i64 }, ptr %t552, i64 2 + store { ptr, i64, i64 } { ptr @.str.2788, i64 4, i64 0 }, ptr %t555 + %t556 = getelementptr inbounds { ptr, i64, i64 }, ptr %t552, i64 3 + store { ptr, i64, i64 } { ptr @.str.2789, i64 3, i64 0 }, ptr %t556 + %t557 = getelementptr inbounds { ptr, i64, i64 }, ptr %t552, i64 4 + store { ptr, i64, i64 } { ptr @.str.2790, i64 5, i64 0 }, ptr %t557 + %t558 = getelementptr inbounds { ptr, i64, i64 }, ptr %t552, i64 5 + store { ptr, i64, i64 } { ptr @.str.2791, i64 4, i64 0 }, ptr %t558 + %t559 = getelementptr inbounds { ptr, i64, i64 }, ptr %t552, i64 6 + store { ptr, i64, i64 } { ptr @.str.2792, i64 4, i64 0 }, ptr %t559 + %t560 = insertvalue { ptr, i64, i64 } undef, ptr %t552, 0 + %t561 = insertvalue { ptr, i64, i64 } %t560, i64 7, 1 + %t562 = insertvalue { ptr, i64, i64 } %t561, i64 7, 2 + store { ptr, i64, i64 } %t562, ptr %a563 + store { ptr, i64, i64 } zeroinitializer, ptr %a564 + store i64 0, ptr %a565 + br label %for.cond4522 +for.cond4522: + %t566 = load i64, ptr %a565 + %t567 = icmp slt i64 %t566, 7 + br i1 %t567, label %for.body4523, label %for.end4525 +for.body4523: + %t568 = load i64, ptr %a547 + store i64 %t568, ptr %a569 + %t570 = load i64, ptr %a565 + %t571 = icmp eq i64 %t570, 0 + br label %logic.from4526 +logic.from4526: + br i1 %t571, label %logic.end4528, label %logic.rhs4527 +logic.rhs4527: + %t572 = load i64, ptr %a565 + %t573 = icmp eq i64 %t572, 4 + br label %logic.rend4529 +logic.rend4529: + br label %logic.end4528 +logic.end4528: + %t574 = phi i1 [ true, %logic.from4526 ], [ %t573, %logic.rend4529 ] + br i1 %t574, label %then4530, label %endif4532 +then4530: + %t575 = load i64, ptr %a550 + store i64 %t575, ptr %a569 + br label %endif4532 +endif4532: + %t576 = getelementptr inbounds { ptr, i64, i64 }, ptr %a564, i32 0, i32 1 + %t577 = load ptr, ptr %a1 + %t578 = load i64, ptr %a565 + %t579 = load { ptr, i64, i64 }, ptr %a563 + %t580 = extractvalue { ptr, i64, i64 } %t579, 1 + %t581 = icmp uge i64 %t578, %t580 + br i1 %t581, label %range4533, label %inrange4534 +range4533: + call void @finch_panic_index(ptr @.str.2794, i64 2015, i64 %t578, i64 %t580) unreachable -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 - %t529 = load i64, ptr %a48 - %t530 = load i64, ptr %a58 - %t531 = load i64, ptr %a513 - %t532 = load i64, ptr %a509 - %t533 = mul i64 64, %t532 - %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.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 - %t541 = load i64, ptr %t520 - %t542 = add i64 %t541, 1 - call void @finch_arr_reserve(ptr %a508, i64 %t542, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t543 = load ptr, ptr %a508 - %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.step4297 -for.step4297: - %t545 = load i64, ptr %a509 - %t546 = add i64 %t545, 1 - store i64 %t546, ptr %a509 - 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.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.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 - call void @finch_str_from_int(ptr %a558, i64 %t557) - %t559 = load { ptr, i64, i64 }, ptr %a558 - store { ptr, i64, i64 } %t556, ptr %a561 - store { ptr, i64, i64 } %t559, ptr %a562 - 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.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.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 - 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 - store { ptr, i64, i64 } %t575, ptr %a577 - 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 %panic4308, label %ok4309 -panic4308: - call void @finch_panic(ptr @.str.2709, i64 1862, ptr @.str.2710) +inrange4534: + %t582 = extractvalue { ptr, i64, i64 } %t579, 0 + %t583 = getelementptr inbounds { ptr, i64, i64 }, ptr %t582, i64 %t578 + %t584 = load { ptr, i64, i64 }, ptr %t583 + %t585 = load i64, ptr %a49 + %t586 = load i64, ptr %a59 + %t587 = load i64, ptr %a569 + %t588 = load i64, ptr %a565 + %t589 = mul i64 64, %t588 + %t590 = call i64 @finch.gen.dbgMember(ptr %t577, { ptr, i64, i64 } %t584, i64 %t585, i64 %t586, i64 0, i64 %t587, i64 64, i64 %t589) + call void @finch_str_from_int(ptr %a591, i64 %t590) + %t592 = load { ptr, i64, i64 }, ptr %a591 + store { ptr, i64, i64 } { ptr @.str.2793, i64 1, i64 0 }, ptr %a594 + store { ptr, i64, i64 } %t592, ptr %a595 + call void @finch_str_concat(ptr %a593, ptr %a594, ptr %a595) + store { ptr, i64, i64 } %t592, ptr %a596 + call void @finch_str_drop(ptr %a596) + %t597 = load { ptr, i64, i64 }, ptr %a593 + %t598 = load i64, ptr %t576 + %t599 = add i64 %t598, 1 + call void @finch_arr_reserve(ptr %a564, i64 %t599, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t600 = load ptr, ptr %a564 + %t601 = getelementptr inbounds { ptr, i64, i64 }, ptr %t600, i64 %t598 + store { ptr, i64, i64 } %t597, ptr %t601 + store i64 %t599, ptr %t576 + br label %for.step4524 +for.step4524: + %t602 = load i64, ptr %a565 + %t603 = add i64 %t602, 1 + store i64 %t603, ptr %a565 + br label %for.cond4522 +for.end4525: + %t604 = load %S.ast.Type, ptr %a2 + %t605 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t604) + store { ptr, i64, i64 } { ptr @.str.2795, i64 52, i64 0 }, ptr %a607 + store { ptr, i64, i64 } %t605, ptr %a608 + call void @finch_str_concat(ptr %a606, ptr %a607, ptr %a608) + store { ptr, i64, i64 } %t605, ptr %a609 + call void @finch_str_drop(ptr %a609) + %t610 = load { ptr, i64, i64 }, ptr %a606 + store { ptr, i64, i64 } %t610, ptr %a612 + store { ptr, i64, i64 } { ptr @.str.2796, i64 10, i64 0 }, ptr %a613 + call void @finch_str_concat(ptr %a611, ptr %a612, ptr %a613) + store { ptr, i64, i64 } %t610, ptr %a614 + call void @finch_str_drop(ptr %a614) + %t615 = load { ptr, i64, i64 }, ptr %a611 + %t616 = load i64, ptr %a59 + call void @finch_str_from_int(ptr %a617, i64 %t616) + %t618 = load { ptr, i64, i64 }, ptr %a617 + store { ptr, i64, i64 } %t615, ptr %a620 + store { ptr, i64, i64 } %t618, ptr %a621 + call void @finch_str_concat(ptr %a619, ptr %a620, ptr %a621) + store { ptr, i64, i64 } %t615, ptr %a622 + call void @finch_str_drop(ptr %a622) + store { ptr, i64, i64 } %t618, ptr %a623 + call void @finch_str_drop(ptr %a623) + %t624 = load { ptr, i64, i64 }, ptr %a619 + store { ptr, i64, i64 } %t624, ptr %a626 + store { ptr, i64, i64 } { ptr @.str.2797, i64 36, i64 0 }, ptr %a627 + call void @finch_str_concat(ptr %a625, ptr %a626, ptr %a627) + store { ptr, i64, i64 } %t624, ptr %a628 + call void @finch_str_drop(ptr %a628) + %t629 = load { ptr, i64, i64 }, ptr %a625 + %t630 = getelementptr inbounds { ptr, i64, i64 }, ptr %a564, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.2798, i64 2, i64 0 }, ptr %a631 + call void @finch_str_join(ptr %a632, ptr %a564, ptr %a631) + %t633 = load { ptr, i64, i64 }, ptr %a632 + store { ptr, i64, i64 } %t629, ptr %a635 + store { ptr, i64, i64 } %t633, ptr %a636 + call void @finch_str_concat(ptr %a634, ptr %a635, ptr %a636) + store { ptr, i64, i64 } %t629, ptr %a637 + call void @finch_str_drop(ptr %a637) + store { ptr, i64, i64 } %t633, ptr %a638 + call void @finch_str_drop(ptr %a638) + %t639 = load { ptr, i64, i64 }, ptr %a634 + store { ptr, i64, i64 } %t639, ptr %a641 + store { ptr, i64, i64 } { ptr @.str.2799, i64 2, i64 0 }, ptr %a642 + call void @finch_str_concat(ptr %a640, ptr %a641, ptr %a642) + store { ptr, i64, i64 } %t639, ptr %a643 + call void @finch_str_drop(ptr %a643) + %t644 = load { ptr, i64, i64 }, ptr %a640 + %t645 = load ptr, ptr %a1 + %t646 = icmp eq ptr %t645, null + br i1 %t646, label %panic4535, label %ok4536 +panic4535: + call void @finch_panic(ptr @.str.2800, i64 2017, ptr @.str.2801) unreachable -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 %range4310, label %inrange4311 -range4310: - call void @finch_panic_index(ptr @.str.2711, i64 1862, i64 %t583, i64 %t585) +ok4536: + %t647 = getelementptr inbounds %S.gen.Gen, ptr %t645, i32 0, i32 32 + %t648 = load i64, ptr %a49 + %t649 = load { ptr, i64, i64 }, ptr %t647 + %t650 = extractvalue { ptr, i64, i64 } %t649, 1 + %t651 = icmp uge i64 %t648, %t650 + br i1 %t651, label %range4537, label %inrange4538 +range4537: + call void @finch_panic_index(ptr @.str.2802, i64 2017, i64 %t648, i64 %t650) unreachable -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 %endif4294 -else4293: - %t589 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t589, ptr %a590 - 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 %then4312, label %else4313 -then4312: - %t594 = load ptr, ptr %a1 - %t595 = icmp eq ptr %t594, null - br i1 %t595, label %panic4315, label %ok4316 -panic4315: - call void @finch_panic(ptr @.str.2713, i64 1864, ptr @.str.2714) +inrange4538: + %t652 = extractvalue { ptr, i64, i64 } %t649, 0 + %t653 = getelementptr inbounds { ptr, i64, i64 }, ptr %t652, i64 %t648 + %t654 = load { ptr, i64, i64 }, ptr %t653 + store { ptr, i64, i64 } %t644, ptr %t653 + store { ptr, i64, i64 } %t654, ptr %a655 + call void @finch_str_drop(ptr %a655) + call void @finch.drop.arr_str(ptr %a564) + call void @finch.drop.arr_str(ptr %a563) + br label %endif4521 +else4520: + %t656 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t656, ptr %a657 + store { ptr, i64, i64 } { ptr @.str.2803, i64 6, i64 0 }, ptr %a658 + %t659 = call i32 @finch_str_eq(ptr %a657, ptr %a658) + %t660 = icmp ne i32 %t659, 0 + br i1 %t660, label %then4539, label %else4540 +then4539: + %t661 = load ptr, ptr %a1 + %t662 = icmp eq ptr %t661, null + br i1 %t662, label %panic4542, label %ok4543 +panic4542: + call void @finch_panic(ptr @.str.2804, i64 2019, ptr @.str.2805) unreachable -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 - %t599 = load { ptr, i64, i64 }, ptr %t598 - %t600 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t601 = load { ptr, i64, i64 }, ptr %t600 - %t602 = call i64 @finch.gen.findStruct(ptr %t597, { ptr, i64, i64 } %t599, { ptr, i64, i64 } %t601) - %t603 = load { ptr, i64, i64 }, ptr %t596 - %t604 = extractvalue { ptr, i64, i64 } %t603, 1 - %t605 = icmp uge i64 %t602, %t604 - br i1 %t605, label %range4317, label %inrange4318 -range4317: - call void @finch_panic_index(ptr @.str.2715, i64 1864, i64 %t602, i64 %t604) +ok4543: + %t663 = getelementptr inbounds %S.gen.Gen, ptr %t661, i32 0, i32 16 + %t664 = load ptr, ptr %a1 + %t665 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 + %t666 = load { ptr, i64, i64 }, ptr %t665 + %t667 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 + %t668 = load { ptr, i64, i64 }, ptr %t667 + %t669 = call i64 @finch.gen.findStruct(ptr %t664, { ptr, i64, i64 } %t666, { ptr, i64, i64 } %t668) + %t670 = load { ptr, i64, i64 }, ptr %t663 + %t671 = extractvalue { ptr, i64, i64 } %t670, 1 + %t672 = icmp uge i64 %t669, %t671 + br i1 %t672, label %range4544, label %inrange4545 +range4544: + call void @finch_panic_index(ptr @.str.2806, i64 2019, i64 %t669, i64 %t671) unreachable -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 - store %S.gen.StructDef %t608, ptr %a609 - call void @finch.copy.S_gen_StructDef(ptr %a610, ptr %a609) - %t611 = load %S.gen.StructDef, ptr %a610 - store %S.gen.StructDef %t611, ptr %a612 - %t613 = load ptr, ptr %a1 - %t614 = load %S.gen.StructDef, ptr %a612 - %t615 = call { ptr, i64, i64 } @finch.gen.fieldOffsets(ptr %t613, %S.gen.StructDef %t614) - store { ptr, i64, i64 } %t615, ptr %a616 - %t617 = load ptr, ptr %a1 - %t618 = load %S.ast.Type, ptr %a2 - %t619 = call %S.gen.SizeAlign @finch.gen.sizeAlign(ptr %t617, %S.ast.Type %t618) - store %S.gen.SizeAlign %t619, ptr %a620 - store { ptr, i64, i64 } zeroinitializer, ptr %a621 - %t622 = getelementptr inbounds %S.gen.StructDef, ptr %a612, i32 0, i32 12 - %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.cond4319 -for.cond4319: - %t626 = load i64, ptr %a625 - %t627 = icmp slt i64 %t626, %t624 - 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 %range4323, label %inrange4324 -range4323: - call void @finch_panic_index(ptr @.str.2716, i64 1869, i64 %t630, i64 %t632) +inrange4545: + %t673 = extractvalue { ptr, i64, i64 } %t670, 0 + %t674 = getelementptr inbounds %S.gen.StructDef, ptr %t673, i64 %t669 + %t675 = load %S.gen.StructDef, ptr %t674 + store %S.gen.StructDef %t675, ptr %a676 + call void @finch.copy.S_gen_StructDef(ptr %a677, ptr %a676) + %t678 = load %S.gen.StructDef, ptr %a677 + store %S.gen.StructDef %t678, ptr %a679 + %t680 = load ptr, ptr %a1 + %t681 = load %S.gen.StructDef, ptr %a679 + %t682 = call { ptr, i64, i64 } @finch.gen.fieldOffsets(ptr %t680, %S.gen.StructDef %t681) + store { ptr, i64, i64 } %t682, ptr %a683 + %t684 = load ptr, ptr %a1 + %t685 = load %S.ast.Type, ptr %a2 + %t686 = call %S.gen.SizeAlign @finch.gen.sizeAlign(ptr %t684, %S.ast.Type %t685) + store %S.gen.SizeAlign %t686, ptr %a687 + store { ptr, i64, i64 } zeroinitializer, ptr %a688 + %t689 = getelementptr inbounds %S.gen.StructDef, ptr %a679, i32 0, i32 12 + %t690 = getelementptr inbounds { ptr, i64, i64 }, ptr %t689, i32 0, i32 1 + %t691 = load i64, ptr %t690 + store i64 0, ptr %a692 + br label %for.cond4546 +for.cond4546: + %t693 = load i64, ptr %a692 + %t694 = icmp slt i64 %t693, %t691 + br i1 %t694, label %for.body4547, label %for.end4549 +for.body4547: + %t695 = load ptr, ptr %a1 + %t696 = getelementptr inbounds %S.gen.StructDef, ptr %a679, i32 0, i32 12 + %t697 = load i64, ptr %a692 + %t698 = load { ptr, i64, i64 }, ptr %t696 + %t699 = extractvalue { ptr, i64, i64 } %t698, 1 + %t700 = icmp uge i64 %t697, %t699 + br i1 %t700, label %range4550, label %inrange4551 +range4550: + call void @finch_panic_index(ptr @.str.2807, i64 2024, i64 %t697, i64 %t699) unreachable -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 - %t637 = call %S.gen.SizeAlign @finch.gen.sizeAlign(ptr %t628, %S.ast.Type %t636) - store %S.gen.SizeAlign %t637, ptr %a638 - %t639 = getelementptr inbounds { ptr, i64, i64 }, ptr %a621, i32 0, i32 1 - %t640 = load ptr, ptr %a1 - %t641 = getelementptr inbounds %S.gen.StructDef, ptr %a612, i32 0, i32 11 - %t642 = load i64, ptr %a625 - %t643 = load { ptr, i64, i64 }, ptr %t641 - %t644 = extractvalue { ptr, i64, i64 } %t643, 1 - %t645 = icmp uge i64 %t642, %t644 - br i1 %t645, label %range4325, label %inrange4326 -range4325: - call void @finch_panic_index(ptr @.str.2718, i64 1870, i64 %t642, i64 %t644) +inrange4551: + %t701 = extractvalue { ptr, i64, i64 } %t698, 0 + %t702 = getelementptr inbounds %S.ast.Type, ptr %t701, i64 %t697 + %t703 = load %S.ast.Type, ptr %t702 + %t704 = call %S.gen.SizeAlign @finch.gen.sizeAlign(ptr %t695, %S.ast.Type %t703) + store %S.gen.SizeAlign %t704, ptr %a705 + %t706 = getelementptr inbounds { ptr, i64, i64 }, ptr %a688, i32 0, i32 1 + %t707 = load ptr, ptr %a1 + %t708 = getelementptr inbounds %S.gen.StructDef, ptr %a679, i32 0, i32 11 + %t709 = load i64, ptr %a692 + %t710 = load { ptr, i64, i64 }, ptr %t708 + %t711 = extractvalue { ptr, i64, i64 } %t710, 1 + %t712 = icmp uge i64 %t709, %t711 + br i1 %t712, label %range4552, label %inrange4553 +range4552: + call void @finch_panic_index(ptr @.str.2809, i64 2025, i64 %t709, i64 %t711) unreachable -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 - %t649 = load i64, ptr %a48 - %t650 = load i64, ptr %a58 - %t651 = load ptr, ptr %a1 - %t652 = getelementptr inbounds %S.gen.StructDef, ptr %a612, i32 0, i32 12 - %t653 = load i64, ptr %a625 - %t654 = load { ptr, i64, i64 }, ptr %t652 - %t655 = extractvalue { ptr, i64, i64 } %t654, 1 - %t656 = icmp uge i64 %t653, %t655 - br i1 %t656, label %range4327, label %inrange4328 -range4327: - call void @finch_panic_index(ptr @.str.2719, i64 1870, i64 %t653, i64 %t655) +inrange4553: + %t713 = extractvalue { ptr, i64, i64 } %t710, 0 + %t714 = getelementptr inbounds { ptr, i64, i64 }, ptr %t713, i64 %t709 + %t715 = load { ptr, i64, i64 }, ptr %t714 + %t716 = load i64, ptr %a49 + %t717 = load i64, ptr %a59 + %t718 = load ptr, ptr %a1 + %t719 = getelementptr inbounds %S.gen.StructDef, ptr %a679, i32 0, i32 12 + %t720 = load i64, ptr %a692 + %t721 = load { ptr, i64, i64 }, ptr %t719 + %t722 = extractvalue { ptr, i64, i64 } %t721, 1 + %t723 = icmp uge i64 %t720, %t722 + br i1 %t723, label %range4554, label %inrange4555 +range4554: + call void @finch_panic_index(ptr @.str.2810, i64 2025, i64 %t720, i64 %t722) unreachable -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 - %t660 = call i64 @finch.gen.diType(ptr %t651, %S.ast.Type %t659) - %t661 = getelementptr inbounds %S.gen.SizeAlign, ptr %a638, i32 0, i32 0 - %t662 = load i64, ptr %t661 - %t663 = mul i64 %t662, 8 - %t664 = load i64, ptr %a625 - %t665 = load { ptr, i64, i64 }, ptr %a616 - %t666 = extractvalue { ptr, i64, i64 } %t665, 1 - %t667 = icmp uge i64 %t664, %t666 - br i1 %t667, label %range4329, label %inrange4330 -range4329: - call void @finch_panic_index(ptr @.str.2720, i64 1870, i64 %t664, i64 %t666) +inrange4555: + %t724 = extractvalue { ptr, i64, i64 } %t721, 0 + %t725 = getelementptr inbounds %S.ast.Type, ptr %t724, i64 %t720 + %t726 = load %S.ast.Type, ptr %t725 + %t727 = call i64 @finch.gen.diType(ptr %t718, %S.ast.Type %t726) + %t728 = getelementptr inbounds %S.gen.SizeAlign, ptr %a705, i32 0, i32 0 + %t729 = load i64, ptr %t728 + %t730 = mul i64 %t729, 8 + %t731 = load i64, ptr %a692 + %t732 = load { ptr, i64, i64 }, ptr %a683 + %t733 = extractvalue { ptr, i64, i64 } %t732, 1 + %t734 = icmp uge i64 %t731, %t733 + br i1 %t734, label %range4556, label %inrange4557 +range4556: + call void @finch_panic_index(ptr @.str.2811, i64 2025, i64 %t731, i64 %t733) unreachable -inrange4330: - %t668 = extractvalue { ptr, i64, i64 } %t665, 0 - %t669 = getelementptr inbounds i64, ptr %t668, i64 %t664 - %t670 = load i64, ptr %t669 - %t671 = mul i64 %t670, 8 - %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.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 - %t679 = load i64, ptr %t639 - %t680 = add i64 %t679, 1 - call void @finch_arr_reserve(ptr %a621, i64 %t680, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t681 = load ptr, ptr %a621 - %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.step4321 -for.step4321: - %t683 = load i64, ptr %a625 - %t684 = add i64 %t683, 1 - store i64 %t684, ptr %a625 - 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.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.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 - call void @finch_str_from_int(ptr %a696, i64 %t695) - %t697 = load { ptr, i64, i64 }, ptr %a696 - store { ptr, i64, i64 } %t694, ptr %a699 - store { ptr, i64, i64 } %t697, ptr %a700 - 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.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 - %t707 = load i64, ptr %t706 - %t708 = mul i64 %t707, 8 - call void @finch_str_from_int(ptr %a709, i64 %t708) - %t710 = load { ptr, i64, i64 }, ptr %a709 - store { ptr, i64, i64 } %t705, 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.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.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 - store { ptr, i64, i64 } %t722, ptr %a725 - 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.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 %panic4331, label %ok4332 -panic4331: - call void @finch_panic(ptr @.str.2727, i64 1872, ptr @.str.2728) +inrange4557: + %t735 = extractvalue { ptr, i64, i64 } %t732, 0 + %t736 = getelementptr inbounds i64, ptr %t735, i64 %t731 + %t737 = load i64, ptr %t736 + %t738 = mul i64 %t737, 8 + %t739 = call i64 @finch.gen.dbgMember(ptr %t707, { ptr, i64, i64 } %t715, i64 %t716, i64 %t717, i64 0, i64 %t727, i64 %t730, i64 %t738) + call void @finch_str_from_int(ptr %a740, i64 %t739) + %t741 = load { ptr, i64, i64 }, ptr %a740 + store { ptr, i64, i64 } { ptr @.str.2808, i64 1, i64 0 }, ptr %a743 + store { ptr, i64, i64 } %t741, ptr %a744 + call void @finch_str_concat(ptr %a742, ptr %a743, ptr %a744) + store { ptr, i64, i64 } %t741, ptr %a745 + call void @finch_str_drop(ptr %a745) + %t746 = load { ptr, i64, i64 }, ptr %a742 + %t747 = load i64, ptr %t706 + %t748 = add i64 %t747, 1 + call void @finch_arr_reserve(ptr %a688, i64 %t748, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t749 = load ptr, ptr %a688 + %t750 = getelementptr inbounds { ptr, i64, i64 }, ptr %t749, i64 %t747 + store { ptr, i64, i64 } %t746, ptr %t750 + store i64 %t748, ptr %t706 + br label %for.step4548 +for.step4548: + %t751 = load i64, ptr %a692 + %t752 = add i64 %t751, 1 + store i64 %t752, ptr %a692 + br label %for.cond4546 +for.end4549: + %t753 = getelementptr inbounds %S.gen.StructDef, ptr %a679, i32 0, i32 1 + %t754 = load { ptr, i64, i64 }, ptr %t753 + store { ptr, i64, i64 } { ptr @.str.2812, i64 52, i64 0 }, ptr %a756 + store { ptr, i64, i64 } %t754, ptr %a757 + call void @finch_str_concat(ptr %a755, ptr %a756, ptr %a757) + %t758 = load { ptr, i64, i64 }, ptr %a755 + store { ptr, i64, i64 } %t758, ptr %a760 + store { ptr, i64, i64 } { ptr @.str.2813, i64 10, i64 0 }, ptr %a761 + call void @finch_str_concat(ptr %a759, ptr %a760, ptr %a761) + store { ptr, i64, i64 } %t758, ptr %a762 + call void @finch_str_drop(ptr %a762) + %t763 = load { ptr, i64, i64 }, ptr %a759 + %t764 = load i64, ptr %a59 + call void @finch_str_from_int(ptr %a765, i64 %t764) + %t766 = load { ptr, i64, i64 }, ptr %a765 + store { ptr, i64, i64 } %t763, ptr %a768 + store { ptr, i64, i64 } %t766, ptr %a769 + call void @finch_str_concat(ptr %a767, ptr %a768, ptr %a769) + store { ptr, i64, i64 } %t763, ptr %a770 + call void @finch_str_drop(ptr %a770) + store { ptr, i64, i64 } %t766, ptr %a771 + call void @finch_str_drop(ptr %a771) + %t772 = load { ptr, i64, i64 }, ptr %a767 + store { ptr, i64, i64 } %t772, ptr %a774 + store { ptr, i64, i64 } { ptr @.str.2814, i64 8, i64 0 }, ptr %a775 + call void @finch_str_concat(ptr %a773, ptr %a774, ptr %a775) + store { ptr, i64, i64 } %t772, ptr %a776 + call void @finch_str_drop(ptr %a776) + %t777 = load { ptr, i64, i64 }, ptr %a773 + %t778 = getelementptr inbounds %S.gen.SizeAlign, ptr %a687, i32 0, i32 0 + %t779 = load i64, ptr %t778 + %t780 = mul i64 %t779, 8 + call void @finch_str_from_int(ptr %a781, i64 %t780) + %t782 = load { ptr, i64, i64 }, ptr %a781 + store { ptr, i64, i64 } %t777, ptr %a784 + store { ptr, i64, i64 } %t782, ptr %a785 + call void @finch_str_concat(ptr %a783, ptr %a784, ptr %a785) + store { ptr, i64, i64 } %t777, ptr %a786 + call void @finch_str_drop(ptr %a786) + store { ptr, i64, i64 } %t782, ptr %a787 + call void @finch_str_drop(ptr %a787) + %t788 = load { ptr, i64, i64 }, ptr %a783 + store { ptr, i64, i64 } %t788, ptr %a790 + store { ptr, i64, i64 } { ptr @.str.2815, i64 24, i64 0 }, ptr %a791 + call void @finch_str_concat(ptr %a789, ptr %a790, ptr %a791) + store { ptr, i64, i64 } %t788, ptr %a792 + call void @finch_str_drop(ptr %a792) + %t793 = load { ptr, i64, i64 }, ptr %a789 + %t794 = getelementptr inbounds { ptr, i64, i64 }, ptr %a688, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.2816, i64 2, i64 0 }, ptr %a795 + call void @finch_str_join(ptr %a796, ptr %a688, ptr %a795) + %t797 = load { ptr, i64, i64 }, ptr %a796 + store { ptr, i64, i64 } %t793, ptr %a799 + store { ptr, i64, i64 } %t797, ptr %a800 + call void @finch_str_concat(ptr %a798, ptr %a799, ptr %a800) + store { ptr, i64, i64 } %t793, ptr %a801 + call void @finch_str_drop(ptr %a801) + store { ptr, i64, i64 } %t797, ptr %a802 + call void @finch_str_drop(ptr %a802) + %t803 = load { ptr, i64, i64 }, ptr %a798 + store { ptr, i64, i64 } %t803, ptr %a805 + store { ptr, i64, i64 } { ptr @.str.2817, i64 2, i64 0 }, ptr %a806 + call void @finch_str_concat(ptr %a804, ptr %a805, ptr %a806) + store { ptr, i64, i64 } %t803, ptr %a807 + call void @finch_str_drop(ptr %a807) + %t808 = load { ptr, i64, i64 }, ptr %a804 + %t809 = load ptr, ptr %a1 + %t810 = icmp eq ptr %t809, null + br i1 %t810, label %panic4558, label %ok4559 +panic4558: + call void @finch_panic(ptr @.str.2818, i64 2027, ptr @.str.2819) unreachable -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 %range4333, label %inrange4334 -range4333: - call void @finch_panic_index(ptr @.str.2729, i64 1872, i64 %t734, i64 %t736) +ok4559: + %t811 = getelementptr inbounds %S.gen.Gen, ptr %t809, i32 0, i32 32 + %t812 = load i64, ptr %a49 + %t813 = load { ptr, i64, i64 }, ptr %t811 + %t814 = extractvalue { ptr, i64, i64 } %t813, 1 + %t815 = icmp uge i64 %t812, %t814 + br i1 %t815, label %range4560, label %inrange4561 +range4560: + call void @finch_panic_index(ptr @.str.2820, i64 2027, i64 %t812, i64 %t814) unreachable -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 %endif4314 -else4313: - %t740 = load { ptr, i64, i64 }, ptr %a8 - 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.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 %panic4335, label %ok4336 -panic4335: - call void @finch_panic(ptr @.str.2732, i64 1874, ptr @.str.2733) +inrange4561: + %t816 = extractvalue { ptr, i64, i64 } %t813, 0 + %t817 = getelementptr inbounds { ptr, i64, i64 }, ptr %t816, i64 %t812 + %t818 = load { ptr, i64, i64 }, ptr %t817 + store { ptr, i64, i64 } %t808, ptr %t817 + store { ptr, i64, i64 } %t818, ptr %a819 + call void @finch_str_drop(ptr %a819) + call void @finch.drop.arr_str(ptr %a688) + call void @finch.drop.arr_int(ptr %a683) + call void @finch.drop.S_gen_StructDef(ptr %a679) + br label %endif4541 +else4540: + %t820 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.2821, i64 20, i64 0 }, ptr %a822 + store { ptr, i64, i64 } %t820, ptr %a823 + call void @finch_str_concat(ptr %a821, ptr %a822, ptr %a823) + %t824 = load { ptr, i64, i64 }, ptr %a821 + store { ptr, i64, i64 } %t824, ptr %a826 + store { ptr, i64, i64 } { ptr @.str.2822, i64 39, i64 0 }, ptr %a827 + call void @finch_str_concat(ptr %a825, ptr %a826, ptr %a827) + store { ptr, i64, i64 } %t824, ptr %a828 + call void @finch_str_drop(ptr %a828) + %t829 = load { ptr, i64, i64 }, ptr %a825 + %t830 = load ptr, ptr %a1 + %t831 = icmp eq ptr %t830, null + br i1 %t831, label %panic4562, label %ok4563 +panic4562: + call void @finch_panic(ptr @.str.2823, i64 2029, ptr @.str.2824) unreachable -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 %range4337, label %inrange4338 -range4337: - call void @finch_panic_index(ptr @.str.2734, i64 1874, i64 %t752, i64 %t754) +ok4563: + %t832 = getelementptr inbounds %S.gen.Gen, ptr %t830, i32 0, i32 32 + %t833 = load i64, ptr %a49 + %t834 = load { ptr, i64, i64 }, ptr %t832 + %t835 = extractvalue { ptr, i64, i64 } %t834, 1 + %t836 = icmp uge i64 %t833, %t835 + br i1 %t836, label %range4564, label %inrange4565 +range4564: + call void @finch_panic_index(ptr @.str.2825, i64 2029, i64 %t833, i64 %t835) unreachable -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 %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 -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 %panic4339, label %ok4340 -panic4339: - call void @finch_panic(ptr @.str.2735, i64 1878, ptr @.str.2736) +inrange4565: + %t837 = extractvalue { ptr, i64, i64 } %t834, 0 + %t838 = getelementptr inbounds { ptr, i64, i64 }, ptr %t837, i64 %t833 + %t839 = load { ptr, i64, i64 }, ptr %t838 + store { ptr, i64, i64 } %t829, ptr %t838 + store { ptr, i64, i64 } %t839, ptr %a840 + call void @finch_str_drop(ptr %a840) + br label %endif4541 +endif4541: + br label %endif4521 +endif4521: + br label %endif4509 +endif4509: + br label %endif4494 +endif4494: + br label %endif4482 +endif4482: + %t841 = load i64, ptr %a49 + call void @finch_str_drop(ptr %a27) + call void @finch_str_drop(ptr %a8) + ret i64 %t841 +endif4463: + br label %endif4457 +endif4457: + br label %endif4454 +endif4454: + br label %endif4451 +endif4451: + br label %endif4448 +endif4448: + br label %endif4445 +endif4445: + br label %endif4442 +endif4442: + %t842 = load i64, ptr %a49 + %t843 = load ptr, ptr %a1 + %t844 = icmp eq ptr %t843, null + br i1 %t844, label %panic4566, label %ok4567 +panic4566: + call void @finch_panic(ptr @.str.2826, i64 2033, ptr @.str.2827) unreachable -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 - %t766 = call i64 @finch_map_slot(ptr %t762, ptr %a764, 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, ptr %a765) - %t767 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t762, i32 0, i32 0 - %t768 = load ptr, ptr %t767 - %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.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.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 - ret i64 %t775 +ok4567: + %t845 = getelementptr inbounds %S.gen.Gen, ptr %t843, i32 0, i32 33 + %t846 = load { ptr, i64, i64 }, ptr %a27 + store { ptr, i64, i64 } %t846, ptr %a847 + store i32 0, ptr %a848 + %t849 = call i64 @finch_map_slot(ptr %t845, ptr %a847, 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, ptr %a848) + %t850 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t845, i32 0, i32 0 + %t851 = load ptr, ptr %t850 + %t852 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t851, i64 %t849 + %t853 = load i32, ptr %a848 + %t854 = icmp ne i32 %t853, 0 + br i1 %t854, label %map.new4568, label %map.have4569 +map.new4568: + %t855 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t852, i32 0, i32 1 + call void @finch_str_copy(ptr %t855, ptr %a847) + %t856 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t852, i32 0, i32 2 + store i64 0, ptr %t856 + br label %map.have4569 +map.have4569: + %t857 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t852, i32 0, i32 2 + store i64 %t842, ptr %t857 + %t858 = load i64, ptr %a49 + call void @finch_str_drop(ptr %a27) + call void @finch_str_drop(ptr %a8) + ret i64 %t858 } define internal i64 @finch.gen.dbgLocation(ptr %p0) { @@ -40175,235 +46691,285 @@ entry: %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 + %a11 = alloca { ptr, i64, i64 }, align 16 %a13 = alloca { ptr, i64, i64 }, align 16 %a14 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + %a16 = 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 + %a25 = 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 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 + %a30 = 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 + %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 + %a44 = alloca { ptr, i64, i64 }, align 16 %a45 = alloca { ptr, i64, i64 }, align 16 + %a47 = alloca { ptr, i64, i64 }, align 16 %a52 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = 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 - %a73 = alloca { ptr, i64, i64 }, align 16 + %a59 = alloca { ptr, i64, i64 }, align 16 + %a62 = alloca { ptr, i64, i64 }, align 16 + %a63 = alloca { ptr, i64, i64 }, align 16 %a74 = 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 + %a78 = alloca { ptr, i64, i64 }, align 16 + %a79 = 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 { 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 + %a90 = 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 - %a97 = 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 %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca i64, align 16 + %a107 = 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 i32, align 16 + %a113 = 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 + %a118 = alloca { ptr, i64, i64 }, align 16 + %a121 = alloca { ptr, i64, i64 }, align 16 + %a122 = alloca i64, align 16 + %a128 = alloca { ptr, i64, i64 }, align 16 + %a129 = alloca i32, align 16 store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic4343, label %ok4344 -panic4343: - call void @finch_panic(ptr @.str.2738, i64 1883, ptr @.str.2739) + br i1 %t3, label %panic4570, label %ok4571 +panic4570: + call void @finch_panic(ptr @.str.2829, i64 2038, ptr @.str.2830) unreachable -ok4344: - %t4 = getelementptr inbounds %S.gen.Gen, ptr %t2, i32 0, i32 35 +ok4571: + %t4 = getelementptr inbounds %S.gen.Gen, ptr %t2, i32 0, i32 36 %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.2737, i64 2, i64 0 }, ptr %a9 + store { ptr, i64, i64 } { ptr @.str.2828, 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.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 %panic4345, label %ok4346 -panic4345: - call void @finch_panic(ptr @.str.2741, i64 1883, ptr @.str.2742) + store { ptr, i64, i64 } %t7, ptr %a11 + call void @finch_str_drop(ptr %a11) + %t12 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t12, ptr %a14 + store { ptr, i64, i64 } { ptr @.str.2831, i64 1, i64 0 }, ptr %a15 + call void @finch_str_concat(ptr %a13, ptr %a14, ptr %a15) + store { ptr, i64, i64 } %t12, ptr %a16 + call void @finch_str_drop(ptr %a16) + %t17 = load { ptr, i64, i64 }, ptr %a13 + %t18 = load ptr, ptr %a1 + %t19 = icmp eq ptr %t18, null + br i1 %t19, label %panic4572, label %ok4573 +panic4572: + call void @finch_panic(ptr @.str.2832, i64 2038, ptr @.str.2833) unreachable -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 - store { ptr, i64, i64 } %t15, 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.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 %panic4347, label %ok4348 -panic4347: - call void @finch_panic(ptr @.str.2744, i64 1883, ptr @.str.2745) +ok4573: + %t20 = getelementptr inbounds %S.gen.Gen, ptr %t18, i32 0, i32 37 + %t21 = load i64, ptr %t20 + call void @finch_str_from_int(ptr %a22, i64 %t21) + %t23 = load { ptr, i64, i64 }, ptr %a22 + store { ptr, i64, i64 } %t17, ptr %a25 + store { ptr, i64, i64 } %t23, ptr %a26 + call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) + store { ptr, i64, i64 } %t17, ptr %a27 + call void @finch_str_drop(ptr %a27) + store { ptr, i64, i64 } %t23, ptr %a28 + call void @finch_str_drop(ptr %a28) + %t29 = load { ptr, i64, i64 }, ptr %a24 + store { ptr, i64, i64 } %t29, ptr %a31 + store { ptr, i64, i64 } { ptr @.str.2834, i64 1, i64 0 }, ptr %a32 + call void @finch_str_concat(ptr %a30, ptr %a31, ptr %a32) + store { ptr, i64, i64 } %t29, ptr %a33 + call void @finch_str_drop(ptr %a33) + %t34 = load { ptr, i64, i64 }, ptr %a30 + %t35 = load ptr, ptr %a1 + %t36 = icmp eq ptr %t35, null + br i1 %t36, label %panic4574, label %ok4575 +panic4574: + call void @finch_panic(ptr @.str.2835, i64 2038, ptr @.str.2836) unreachable -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 - store { ptr, i64, i64 } %t29, 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 %a40 - %t41 = load ptr, ptr %a1 - %t42 = icmp eq ptr %t41, null - br i1 %t42, label %panic4349, label %ok4350 -panic4349: - call void @finch_panic(ptr @.str.2746, i64 1884, ptr @.str.2747) - unreachable -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 %then4351, label %endif4353 -then4351: +ok4575: + %t37 = getelementptr inbounds %S.gen.Gen, ptr %t35, i32 0, i32 35 + %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 } %t34, ptr %a42 + store { ptr, i64, i64 } %t40, ptr %a43 + call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) + store { ptr, i64, i64 } %t34, ptr %a44 + call void @finch_str_drop(ptr %a44) + store { ptr, i64, i64 } %t40, ptr %a45 + call void @finch_str_drop(ptr %a45) + %t46 = load { ptr, i64, i64 }, ptr %a41 + store { ptr, i64, i64 } %t46, ptr %a47 %t48 = load ptr, ptr %a1 %t49 = icmp eq ptr %t48, null - br i1 %t49, label %panic4354, label %ok4355 -panic4354: - call void @finch_panic(ptr @.str.2748, i64 1885, ptr @.str.2749) + br i1 %t49, label %panic4576, label %ok4577 +panic4576: + call void @finch_panic(ptr @.str.2837, i64 2039, ptr @.str.2838) unreachable -ok4355: - %t50 = getelementptr inbounds %S.gen.Gen, ptr %t48, i32 0, i32 32 - %t51 = load { ptr, i64, i64 }, ptr %a40 +ok4577: + %t50 = getelementptr inbounds %S.gen.Gen, ptr %t48, i32 0, i32 33 + %t51 = load { ptr, i64, i64 }, ptr %a47 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.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.2750, i64 1885, ptr %a55) + %t54 = icmp sge i64 %t53, 0 + br i1 %t54, label %then4578, label %endif4580 +then4578: + %t55 = load ptr, ptr %a1 + %t56 = icmp eq ptr %t55, null + br i1 %t56, label %panic4581, label %ok4582 +panic4581: + call void @finch_panic(ptr @.str.2839, i64 2040, ptr @.str.2840) unreachable -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 -endif4353: - %t62 = load ptr, ptr %a1 - %t63 = load ptr, ptr %a1 - %t64 = icmp eq ptr %t63, null - br i1 %t64, label %panic4358, label %ok4359 -panic4358: - call void @finch_panic(ptr @.str.2752, i64 1887, ptr @.str.2753) +ok4582: + %t57 = getelementptr inbounds %S.gen.Gen, ptr %t55, i32 0, i32 33 + %t58 = load { ptr, i64, i64 }, ptr %a47 + store { ptr, i64, i64 } %t58, ptr %a59 + %t60 = call i64 @finch_map_find(ptr %t57, ptr %a59, 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) + %t61 = icmp slt i64 %t60, 0 + br i1 %t61, label %map.missing4583, label %map.found4584 +map.missing4583: + store { ptr, i64, i64 } zeroinitializer, ptr %a62 + store { ptr, i64, i64 } %t58, ptr %a63 + call void @finch_buf_str(ptr %a62, ptr %a63, i32 1) + call void @finch_map_missing(ptr @.str.2841, i64 2040, ptr %a62) unreachable -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.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.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 %panic4360, label %ok4361 -panic4360: - call void @finch_panic(ptr @.str.2755, i64 1887, ptr @.str.2756) +map.found4584: + %t64 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t57, i32 0, i32 0 + %t65 = load ptr, ptr %t64 + %t66 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t65, i64 %t60 + %t67 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t66, i32 0, i32 2 + %t68 = load i64, ptr %t67 + call void @finch_str_drop(ptr %a47) + ret i64 %t68 +endif4580: + %t69 = load ptr, ptr %a1 + %t70 = load ptr, ptr %a1 + %t71 = icmp eq ptr %t70, null + br i1 %t71, label %panic4585, label %ok4586 +panic4585: + call void @finch_panic(ptr @.str.2843, i64 2042, ptr @.str.2844) unreachable -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 - store { ptr, i64, i64 } %t76, 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.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 %panic4362, label %ok4363 -panic4362: - call void @finch_panic(ptr @.str.2758, i64 1887, ptr @.str.2759) +ok4586: + %t72 = getelementptr inbounds %S.gen.Gen, ptr %t70, i32 0, i32 36 + %t73 = load i64, ptr %t72 + call void @finch_str_from_int(ptr %a74, i64 %t73) + %t75 = load { ptr, i64, i64 }, ptr %a74 + store { ptr, i64, i64 } { ptr @.str.2842, i64 18, i64 0 }, ptr %a77 + store { ptr, i64, i64 } %t75, ptr %a78 + call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78) + store { ptr, i64, i64 } %t75, ptr %a79 + call void @finch_str_drop(ptr %a79) + %t80 = load { ptr, i64, i64 }, ptr %a76 + store { ptr, i64, i64 } %t80, ptr %a82 + store { ptr, i64, i64 } { ptr @.str.2845, i64 10, i64 0 }, ptr %a83 + call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) + store { ptr, i64, i64 } %t80, ptr %a84 + call void @finch_str_drop(ptr %a84) + %t85 = load { ptr, i64, i64 }, ptr %a81 + %t86 = load ptr, ptr %a1 + %t87 = icmp eq ptr %t86, null + br i1 %t87, label %panic4587, label %ok4588 +panic4587: + call void @finch_panic(ptr @.str.2846, i64 2042, ptr @.str.2847) unreachable -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 - store { ptr, i64, i64 } %t90, 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.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) - store i64 %t105, ptr %a106 - %t107 = load i64, ptr %a106 - %t108 = load ptr, ptr %a1 - %t109 = icmp eq ptr %t108, null - br i1 %t109, label %panic4364, label %ok4365 -panic4364: - call void @finch_panic(ptr @.str.2761, i64 1888, ptr @.str.2762) +ok4588: + %t88 = getelementptr inbounds %S.gen.Gen, ptr %t86, i32 0, i32 37 + %t89 = load i64, ptr %t88 + call void @finch_str_from_int(ptr %a90, i64 %t89) + %t91 = load { ptr, i64, i64 }, ptr %a90 + store { ptr, i64, i64 } %t85, ptr %a93 + store { ptr, i64, i64 } %t91, ptr %a94 + call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) + store { ptr, i64, i64 } %t85, ptr %a95 + call void @finch_str_drop(ptr %a95) + store { ptr, i64, i64 } %t91, ptr %a96 + call void @finch_str_drop(ptr %a96) + %t97 = load { ptr, i64, i64 }, ptr %a92 + store { ptr, i64, i64 } %t97, ptr %a99 + store { ptr, i64, i64 } { ptr @.str.2848, i64 10, i64 0 }, ptr %a100 + call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100) + store { ptr, i64, i64 } %t97, ptr %a101 + call void @finch_str_drop(ptr %a101) + %t102 = load { ptr, i64, i64 }, ptr %a98 + %t103 = load ptr, ptr %a1 + %t104 = icmp eq ptr %t103, null + br i1 %t104, label %panic4589, label %ok4590 +panic4589: + call void @finch_panic(ptr @.str.2849, i64 2042, ptr @.str.2850) unreachable -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 - %t114 = call i64 @finch_map_slot(ptr %t110, ptr %a112, 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, ptr %a113) - %t115 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t110, i32 0, i32 0 - %t116 = load ptr, ptr %t115 - %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.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.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 - ret i64 %t123 +ok4590: + %t105 = getelementptr inbounds %S.gen.Gen, ptr %t103, i32 0, i32 35 + %t106 = load i64, ptr %t105 + call void @finch_str_from_int(ptr %a107, i64 %t106) + %t108 = load { ptr, i64, i64 }, ptr %a107 + store { ptr, i64, i64 } %t102, ptr %a110 + store { ptr, i64, i64 } %t108, ptr %a111 + call void @finch_str_concat(ptr %a109, ptr %a110, ptr %a111) + store { ptr, i64, i64 } %t102, ptr %a112 + call void @finch_str_drop(ptr %a112) + store { ptr, i64, i64 } %t108, ptr %a113 + call void @finch_str_drop(ptr %a113) + %t114 = load { ptr, i64, i64 }, ptr %a109 + store { ptr, i64, i64 } %t114, ptr %a116 + store { ptr, i64, i64 } { ptr @.str.2851, i64 1, i64 0 }, ptr %a117 + call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) + store { ptr, i64, i64 } %t114, ptr %a118 + call void @finch_str_drop(ptr %a118) + %t119 = load { ptr, i64, i64 }, ptr %a115 + %t120 = call i64 @finch.gen.md(ptr %t69, { ptr, i64, i64 } %t119) + store { ptr, i64, i64 } %t119, ptr %a121 + call void @finch_str_drop(ptr %a121) + store i64 %t120, ptr %a122 + %t123 = load i64, ptr %a122 + %t124 = load ptr, ptr %a1 + %t125 = icmp eq ptr %t124, null + br i1 %t125, label %panic4591, label %ok4592 +panic4591: + call void @finch_panic(ptr @.str.2852, i64 2043, ptr @.str.2853) + unreachable +ok4592: + %t126 = getelementptr inbounds %S.gen.Gen, ptr %t124, i32 0, i32 33 + %t127 = load { ptr, i64, i64 }, ptr %a47 + store { ptr, i64, i64 } %t127, ptr %a128 + store i32 0, ptr %a129 + %t130 = call i64 @finch_map_slot(ptr %t126, ptr %a128, 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, ptr %a129) + %t131 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t126, i32 0, i32 0 + %t132 = load ptr, ptr %t131 + %t133 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t132, i64 %t130 + %t134 = load i32, ptr %a129 + %t135 = icmp ne i32 %t134, 0 + br i1 %t135, label %map.new4593, label %map.have4594 +map.new4593: + %t136 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t133, i32 0, i32 1 + call void @finch_str_copy(ptr %t136, ptr %a128) + %t137 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t133, i32 0, i32 2 + store i64 0, ptr %t137 + br label %map.have4594 +map.have4594: + %t138 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t133, i32 0, i32 2 + store i64 %t123, ptr %t138 + %t139 = load i64, ptr %a122 + call void @finch_str_drop(ptr %a47) + ret i64 %t139 } define internal i64 @finch.gen.dbgSubprogram(ptr %p0, %S.ast.Node %p1) { @@ -40422,69 +46988,92 @@ entry: %a69 = alloca { ptr, i64, i64 }, align 16 %a70 = alloca { ptr, i64, i64 }, align 16 %a71 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 + %a72 = alloca { ptr, i64, i64 }, align 16 %a74 = alloca { ptr, i64, i64 }, align 16 %a75 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca i64, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 + %a76 = alloca { ptr, i64, i64 }, align 16 + %a77 = alloca { ptr, i64, i64 }, align 16 + %a80 = alloca { ptr, i64, i64 }, align 16 + %a81 = alloca i64, align 16 + %a85 = alloca { ptr, i64, i64 }, align 16 %a86 = 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 + %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 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, 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 { ptr, i64, i64 }, align 16 %a104 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 + %a105 = alloca { ptr, i64, i64 }, align 16 + %a106 = 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 - %a113 = 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 + %a117 = 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 - %a121 = 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 %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 + %a128 = 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 %a133 = alloca { ptr, i64, i64 }, align 16 %a134 = alloca { ptr, i64, i64 }, align 16 %a136 = alloca { ptr, i64, i64 }, align 16 %a137 = alloca { ptr, i64, i64 }, align 16 %a138 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 + %a139 = alloca { ptr, i64, i64 }, align 16 %a143 = 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 %a147 = alloca { ptr, i64, i64 }, align 16 %a148 = 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 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 + %a154 = alloca { ptr, i64, i64 }, align 16 %a157 = 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 + %a162 = 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 + %a168 = alloca { ptr, i64, i64 }, align 16 + %a172 = alloca { ptr, i64, i64 }, align 16 + %a174 = alloca { ptr, i64, i64 }, align 16 + %a175 = 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 + %a180 = 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 + %a186 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store %S.ast.Node %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic4368, label %ok4369 -panic4368: - call void @finch_panic(ptr @.str.2763, i64 1893, ptr @.str.2764) + br i1 %t4, label %panic4595, label %ok4596 +panic4595: + call void @finch_panic(ptr @.str.2854, i64 2048, ptr @.str.2855) unreachable -ok4369: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 12 +ok4596: + %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 13 %t6 = load %S.gen.FnSig, ptr %t5 store %S.gen.FnSig %t6, ptr %a7 call void @finch.copy.S_gen_FnSig(ptr %a8, ptr %a7) @@ -40508,28 +47097,28 @@ ok4369: %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 %then4370, label %endif4372 -then4370: + br i1 %t25, label %then4597, label %endif4599 +then4597: %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.2765, i64 4, i64 0 }, ptr %t30 + store { ptr, i64, i64 } { ptr @.str.2856, i64 4, i64 0 }, ptr %t30 store i64 %t28, ptr %t26 - br label %endif4372 -endif4372: + br label %endif4599 +endif4599: %t31 = getelementptr inbounds %S.gen.FnSig, ptr %a10, i32 0, i32 13 store i64 0, ptr %a32 - br label %each.cond4373 -each.cond4373: + br label %each.cond4600 +each.cond4600: %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.body4374, label %each.end4376 -each.body4374: + br i1 %t36, label %each.body4601, label %each.end4603 +each.body4601: %t37 = load ptr, ptr %t31 %t38 = getelementptr inbounds %S.ast.Type, ptr %t37, i64 %t35 %t39 = load %S.ast.Type, ptr %t38 @@ -40546,136 +47135,184 @@ each.body4374: %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.step4375 -each.step4375: + br label %each.step4602 +each.step4602: %t50 = load i64, ptr %a32 %t51 = add i64 %t50, 1 store i64 %t51, ptr %a32 - br label %each.cond4373 -each.end4376: + br label %each.cond4600 +each.end4603: %t52 = load ptr, ptr %a1 %t53 = icmp eq ptr %t52, null - br i1 %t53, label %panic4377, label %ok4378 -panic4377: - call void @finch_panic(ptr @.str.2766, i64 1902, ptr @.str.2767) + br i1 %t53, label %panic4604, label %ok4605 +panic4604: + call void @finch_panic(ptr @.str.2857, i64 2057, ptr @.str.2858) unreachable -ok4378: - %t54 = getelementptr inbounds %S.gen.Gen, ptr %t52, i32 0, i32 33 +ok4605: + %t54 = getelementptr inbounds %S.gen.Gen, ptr %t52, i32 0, i32 34 %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 %range4379, label %inrange4380 -range4379: - call void @finch_panic_index(ptr @.str.2768, i64 1902, i64 %t56, i64 %t58) + br i1 %t59, label %range4606, label %inrange4607 +range4606: + call void @finch_panic_index(ptr @.str.2859, i64 2057, i64 %t56, i64 %t58) unreachable -inrange4380: +inrange4607: %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.2770, i64 2, i64 0 }, ptr %a66 + store { ptr, i64, i64 } { ptr @.str.2861, 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.2769, i64 27, i64 0 }, ptr %a70 + store { ptr, i64, i64 } { ptr @.str.2860, 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.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) - store i64 %t77, ptr %a78 - %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.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.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 - %t91 = load { ptr, i64, i64 }, ptr %t90 - store { ptr, i64, i64 } %t91, ptr %a92 + store { ptr, i64, i64 } %t68, ptr %a72 + call void @finch_str_drop(ptr %a72) + %t73 = load { ptr, i64, i64 }, ptr %a69 + store { ptr, i64, i64 } %t73, ptr %a75 + store { ptr, i64, i64 } { ptr @.str.2862, i64 2, i64 0 }, ptr %a76 + call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) + store { ptr, i64, i64 } %t73, ptr %a77 + call void @finch_str_drop(ptr %a77) + %t78 = load { ptr, i64, i64 }, ptr %a74 + %t79 = call i64 @finch.gen.md(ptr %t64, { ptr, i64, i64 } %t78) + store { ptr, i64, i64 } %t78, ptr %a80 + call void @finch_str_drop(ptr %a80) + store i64 %t79, ptr %a81 + %t82 = load ptr, ptr %a1 + %t83 = getelementptr inbounds %S.gen.FnSig, ptr %a10, i32 0, i32 1 + %t84 = load { ptr, i64, i64 }, ptr %t83 + store { ptr, i64, i64 } { ptr @.str.2863, i64 30, 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.2864, i64 17, i64 0 }, ptr %a91 + call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) + store { ptr, i64, i64 } %t88, ptr %a92 + call void @finch_str_drop(ptr %a92) + %t93 = load { ptr, i64, i64 }, ptr %a89 %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.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.2775, i64 11, i64 0 }, ptr %a104 + %t95 = load { ptr, i64, i64 }, ptr %t94 + store { ptr, i64, i64 } %t95, ptr %a96 + %t98 = getelementptr inbounds %S.gen.FnSig, ptr %a10, i32 0, i32 11 + %t99 = getelementptr inbounds { ptr, i64, i64 }, ptr %t98, i32 0, i32 1 + %t100 = load i64, ptr %t99 + call void @finch_str_sub(ptr %a97, ptr %a96, i64 1, i64 %t100, ptr @.str.2865, i64 2059) + %t101 = load { ptr, i64, i64 }, ptr %a97 + store { ptr, i64, i64 } %t93, 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 - %t106 = load i64, ptr %a63 - call void @finch_str_from_int(ptr %a107, i64 %t106) - %t108 = load { ptr, i64, i64 }, ptr %a107 - store { ptr, i64, i64 } %t105, 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.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 - call void @finch_str_from_int(ptr %a118, i64 %t117) - %t119 = load { ptr, i64, i64 }, ptr %a118 - store { ptr, i64, i64 } %t116, 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.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 - %t129 = load i64, ptr %t128 - call void @finch_str_from_int(ptr %a130, i64 %t129) - %t131 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } %t127, ptr %a133 - store { ptr, i64, i64 } %t131, ptr %a134 - call void @finch_str_concat(ptr %a132, ptr %a133, ptr %a134) - %t135 = load { ptr, i64, i64 }, ptr %a132 + store { ptr, i64, i64 } %t93, ptr %a105 + call void @finch_str_drop(ptr %a105) + store { ptr, i64, i64 } %t101, ptr %a106 + call void @finch_str_drop(ptr %a106) + %t107 = load { ptr, i64, i64 }, ptr %a102 + store { ptr, i64, i64 } %t107, ptr %a109 + store { ptr, i64, i64 } { ptr @.str.2866, i64 11, i64 0 }, ptr %a110 + call void @finch_str_concat(ptr %a108, ptr %a109, ptr %a110) + store { ptr, i64, i64 } %t107, ptr %a111 + call void @finch_str_drop(ptr %a111) + %t112 = load { ptr, i64, i64 }, ptr %a108 + %t113 = load i64, ptr %a63 + call void @finch_str_from_int(ptr %a114, i64 %t113) + %t115 = load { ptr, i64, i64 }, ptr %a114 + store { ptr, i64, i64 } %t112, ptr %a117 + store { ptr, i64, i64 } %t115, ptr %a118 + call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118) + store { ptr, i64, i64 } %t112, ptr %a119 + call void @finch_str_drop(ptr %a119) + store { ptr, i64, i64 } %t115, ptr %a120 + call void @finch_str_drop(ptr %a120) + %t121 = load { ptr, i64, i64 }, ptr %a116 + store { ptr, i64, i64 } %t121, ptr %a123 + store { ptr, i64, i64 } { ptr @.str.2867, i64 9, i64 0 }, ptr %a124 + call void @finch_str_concat(ptr %a122, ptr %a123, ptr %a124) + store { ptr, i64, i64 } %t121, ptr %a125 + call void @finch_str_drop(ptr %a125) + %t126 = load { ptr, i64, i64 }, ptr %a122 + %t127 = load i64, ptr %a63 + call void @finch_str_from_int(ptr %a128, i64 %t127) + %t129 = load { ptr, i64, i64 }, ptr %a128 + 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) + store { ptr, i64, i64 } %t126, ptr %a133 + call void @finch_str_drop(ptr %a133) + store { ptr, i64, i64 } %t129, ptr %a134 + call void @finch_str_drop(ptr %a134) + %t135 = load { ptr, i64, i64 }, ptr %a130 store { ptr, i64, i64 } %t135, ptr %a137 - store { ptr, i64, i64 } { ptr @.str.2778, i64 9, i64 0 }, ptr %a138 + store { ptr, i64, i64 } { ptr @.str.2868, i64 8, 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 - call void @finch_str_from_int(ptr %a141, i64 %t140) - %t142 = load { ptr, i64, i64 }, ptr %a141 - store { ptr, i64, i64 } %t139, ptr %a144 - store { ptr, i64, i64 } %t142, 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 %a148 - 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 - %t152 = load i64, ptr %t151 - call void @finch_str_from_int(ptr %a153, i64 %t152) - %t154 = load { ptr, i64, i64 }, ptr %a153 - store { ptr, i64, i64 } %t150, 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.2780, i64 87, i64 0 }, ptr %a161 + store { ptr, i64, i64 } %t135, ptr %a139 + call void @finch_str_drop(ptr %a139) + %t140 = load { ptr, i64, i64 }, ptr %a136 + %t141 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 + %t142 = load i64, ptr %t141 + call void @finch_str_from_int(ptr %a143, i64 %t142) + %t144 = load { ptr, i64, i64 }, ptr %a143 + store { ptr, i64, i64 } %t140, ptr %a146 + store { ptr, i64, i64 } %t144, ptr %a147 + call void @finch_str_concat(ptr %a145, ptr %a146, ptr %a147) + store { ptr, i64, i64 } %t140, ptr %a148 + call void @finch_str_drop(ptr %a148) + store { ptr, i64, i64 } %t144, ptr %a149 + call void @finch_str_drop(ptr %a149) + %t150 = load { ptr, i64, i64 }, ptr %a145 + store { ptr, i64, i64 } %t150, ptr %a152 + store { ptr, i64, i64 } { ptr @.str.2869, i64 9, i64 0 }, ptr %a153 + call void @finch_str_concat(ptr %a151, ptr %a152, ptr %a153) + store { ptr, i64, i64 } %t150, ptr %a154 + call void @finch_str_drop(ptr %a154) + %t155 = load { ptr, i64, i64 }, ptr %a151 + %t156 = load i64, ptr %a81 + call void @finch_str_from_int(ptr %a157, i64 %t156) + %t158 = load { ptr, i64, i64 }, ptr %a157 + store { ptr, i64, i64 } %t155, 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 - %t163 = call i64 @finch.gen.md(ptr %t79, { ptr, i64, i64 } %t162) - ret i64 %t163 + store { ptr, i64, i64 } %t155, ptr %a162 + call void @finch_str_drop(ptr %a162) + store { ptr, i64, i64 } %t158, ptr %a163 + call void @finch_str_drop(ptr %a163) + %t164 = load { ptr, i64, i64 }, ptr %a159 + store { ptr, i64, i64 } %t164, ptr %a166 + store { ptr, i64, i64 } { ptr @.str.2870, i64 13, i64 0 }, ptr %a167 + call void @finch_str_concat(ptr %a165, ptr %a166, ptr %a167) + store { ptr, i64, i64 } %t164, ptr %a168 + call void @finch_str_drop(ptr %a168) + %t169 = load { ptr, i64, i64 }, ptr %a165 + %t170 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 + %t171 = load i64, ptr %t170 + call void @finch_str_from_int(ptr %a172, i64 %t171) + %t173 = load { ptr, i64, i64 }, ptr %a172 + store { ptr, i64, i64 } %t169, ptr %a175 + store { ptr, i64, i64 } %t173, ptr %a176 + call void @finch_str_concat(ptr %a174, ptr %a175, ptr %a176) + store { ptr, i64, i64 } %t169, ptr %a177 + call void @finch_str_drop(ptr %a177) + store { ptr, i64, i64 } %t173, ptr %a178 + call void @finch_str_drop(ptr %a178) + %t179 = load { ptr, i64, i64 }, ptr %a174 + store { ptr, i64, i64 } %t179, ptr %a181 + store { ptr, i64, i64 } { ptr @.str.2871, i64 87, i64 0 }, ptr %a182 + call void @finch_str_concat(ptr %a180, ptr %a181, ptr %a182) + store { ptr, i64, i64 } %t179, ptr %a183 + call void @finch_str_drop(ptr %a183) + %t184 = load { ptr, i64, i64 }, ptr %a180 + %t185 = call i64 @finch.gen.md(ptr %t82, { ptr, i64, i64 } %t184) + store { ptr, i64, i64 } %t184, ptr %a186 + call void @finch_str_drop(ptr %a186) + call void @finch.drop.arr_str(ptr %a11) + call void @finch.drop.S_gen_FnSig(ptr %a10) + ret i64 %t185 } define internal void @finch.gen.dbgVariable(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3, { ptr, i64, i64 } %p4) { @@ -40691,57 +47328,79 @@ entry: %a35 = alloca { ptr, i64, i64 }, align 16 %a36 = alloca { ptr, i64, i64 }, align 16 %a37 = alloca { ptr, i64, i64 }, align 16 + %a38 = 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 + %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 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = 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 + %a51 = 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 %a61 = 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 + %a62 = alloca { ptr, i64, i64 }, align 16 + %a63 = 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 + %a68 = 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 { ptr, i64, i64 }, align 16 %a86 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 + %a87 = alloca { ptr, i64, i64 }, align 16 %a89 = 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 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a97 = 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 %a101 = alloca { ptr, i64, i64 }, align 16 + %a102 = 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 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 + %a107 = alloca { ptr, i64, i64 }, align 16 %a110 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca i64, align 16 + %a112 = 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 + %a116 = alloca { ptr, i64, i64 }, align 16 + %a119 = alloca { ptr, i64, i64 }, align 16 + %a120 = alloca { ptr, i64, i64 }, align 16 + %a121 = alloca { ptr, i64, i64 }, align 16 + %a122 = 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 %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = 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 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 + %a131 = alloca i64, align 16 + %a144 = alloca { ptr, i64, i64 }, align 16 + %a145 = alloca { ptr, i64, i64 }, align 16 + %a146 = alloca { ptr, i64, i64 }, align 16 + %a148 = 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 + %a154 = 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 + %a159 = alloca { ptr, i64, i64 }, align 16 + %a160 = alloca { ptr, i64, i64 }, align 16 + %a162 = 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 + %a167 = 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 @@ -40749,212 +47408,258 @@ entry: store { ptr, i64, i64 } %p4, ptr %a5 %t6 = load ptr, ptr %a1 %t7 = icmp eq ptr %t6, null - br i1 %t7, label %panic4381, label %ok4382 -panic4381: - call void @finch_panic(ptr @.str.2781, i64 1908, ptr @.str.2782) + br i1 %t7, label %panic4608, label %ok4609 +panic4608: + call void @finch_panic(ptr @.str.2872, i64 2063, ptr @.str.2873) unreachable -ok4382: - %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 28 +ok4609: + %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 29 %t9 = load i1, ptr %t8 %t10 = xor i1 %t9, true - br label %logic.from4383 -logic.from4383: - br i1 %t10, label %logic.end4385, label %logic.rhs4384 -logic.rhs4384: + br label %logic.from4610 +logic.from4610: + br i1 %t10, label %logic.end4612, label %logic.rhs4611 +logic.rhs4611: %t11 = load ptr, ptr %a1 %t12 = icmp eq ptr %t11, null - br i1 %t12, label %panic4386, label %ok4387 -panic4386: - call void @finch_panic(ptr @.str.2783, i64 1908, ptr @.str.2784) + br i1 %t12, label %panic4613, label %ok4614 +panic4613: + call void @finch_panic(ptr @.str.2874, i64 2063, ptr @.str.2875) unreachable -ok4387: - %t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 34 +ok4614: + %t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 35 %t14 = load i64, ptr %t13 %t15 = icmp slt i64 %t14, 0 - 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: + br label %logic.rend4615 +logic.rend4615: + br label %logic.end4612 +logic.end4612: + %t16 = phi i1 [ true, %logic.from4610 ], [ %t15, %logic.rend4615 ] + br i1 %t16, label %then4616, label %endif4618 +then4616: ret void -endif4391: +endif4618: %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 %then4392, label %endif4394 -then4392: + br i1 %t22, label %then4619, label %endif4621 +then4619: ret void -endif4394: - store { ptr, i64, i64 } { ptr @.str.2785, i64 0, i64 0 }, ptr %a23 +endif4621: + store { ptr, i64, i64 } { ptr @.str.2876, i64 0, i64 0 }, ptr %a23 %t24 = load ptr, ptr %a1 %t25 = icmp eq ptr %t24, null - br i1 %t25, label %panic4395, label %ok4396 -panic4395: - call void @finch_panic(ptr @.str.2786, i64 1916, ptr @.str.2787) + br i1 %t25, label %panic4622, label %ok4623 +panic4622: + call void @finch_panic(ptr @.str.2877, i64 2071, ptr @.str.2878) unreachable -ok4396: - %t26 = getelementptr inbounds %S.gen.Gen, ptr %t24, i32 0, i32 37 +ok4623: + %t26 = getelementptr inbounds %S.gen.Gen, ptr %t24, i32 0, i32 38 %t27 = load i64, ptr %t26 %t28 = icmp sgt i64 %t27, 0 - br i1 %t28, label %then4397, label %endif4399 -then4397: + br i1 %t28, label %then4624, label %endif4626 +then4624: %t29 = load ptr, ptr %a1 %t30 = icmp eq ptr %t29, null - br i1 %t30, label %panic4400, label %ok4401 -panic4400: - call void @finch_panic(ptr @.str.2789, i64 1917, ptr @.str.2790) + br i1 %t30, label %panic4627, label %ok4628 +panic4627: + call void @finch_panic(ptr @.str.2880, i64 2072, ptr @.str.2881) unreachable -ok4401: - %t31 = getelementptr inbounds %S.gen.Gen, ptr %t29, i32 0, i32 37 +ok4628: + %t31 = getelementptr inbounds %S.gen.Gen, ptr %t29, i32 0, i32 38 %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.2788, i64 7, i64 0 }, ptr %a36 + store { ptr, i64, i64 } { ptr @.str.2879, 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 %endif4399 -endif4399: - %t39 = load ptr, ptr %a1 - %t40 = load { ptr, i64, i64 }, ptr %a3 - 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.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 %panic4402, label %ok4403 -panic4402: - call void @finch_panic(ptr @.str.2793, i64 1919, ptr @.str.2794) + store { ptr, i64, i64 } %t34, ptr %a38 + call void @finch_str_drop(ptr %a38) + %t39 = load { ptr, i64, i64 }, ptr %a35 + %t40 = load { ptr, i64, i64 }, ptr %a23 + store { ptr, i64, i64 } %t39, ptr %a23 + store { ptr, i64, i64 } %t40, ptr %a41 + call void @finch_str_drop(ptr %a41) + br label %endif4626 +endif4626: + %t42 = load ptr, ptr %a1 + %t43 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } { ptr @.str.2882, i64 24, 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.2883, i64 11, i64 0 }, ptr %a50 + call void @finch_str_concat(ptr %a48, ptr %a49, ptr %a50) + store { ptr, i64, i64 } %t47, ptr %a51 + call void @finch_str_drop(ptr %a51) + %t52 = load { ptr, i64, i64 }, ptr %a48 + %t53 = load ptr, ptr %a1 + %t54 = icmp eq ptr %t53, null + br i1 %t54, label %panic4629, label %ok4630 +panic4629: + call void @finch_panic(ptr @.str.2884, i64 2074, ptr @.str.2885) unreachable -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 - store { ptr, i64, i64 } %t48, 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.2795, i64 9, i64 0 }, ptr %a61 +ok4630: + %t55 = getelementptr inbounds %S.gen.Gen, ptr %t53, i32 0, i32 35 + %t56 = load i64, ptr %t55 + call void @finch_str_from_int(ptr %a57, i64 %t56) + %t58 = load { ptr, i64, i64 }, ptr %a57 + store { ptr, i64, i64 } %t52, 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 - %t63 = load ptr, ptr %a1 - %t64 = icmp eq ptr %t63, null - br i1 %t64, label %panic4404, label %ok4405 -panic4404: - call void @finch_panic(ptr @.str.2796, i64 1919, ptr @.str.2797) + store { ptr, i64, i64 } %t52, ptr %a62 + call void @finch_str_drop(ptr %a62) + store { ptr, i64, i64 } %t58, ptr %a63 + call void @finch_str_drop(ptr %a63) + %t64 = load { ptr, i64, i64 }, ptr %a59 + store { ptr, i64, i64 } %t64, ptr %a66 + store { ptr, i64, i64 } { ptr @.str.2886, i64 9, i64 0 }, ptr %a67 + call void @finch_str_concat(ptr %a65, ptr %a66, ptr %a67) + store { ptr, i64, i64 } %t64, ptr %a68 + call void @finch_str_drop(ptr %a68) + %t69 = load { ptr, i64, i64 }, ptr %a65 + %t70 = load ptr, ptr %a1 + %t71 = icmp eq ptr %t70, null + br i1 %t71, label %panic4631, label %ok4632 +panic4631: + call void @finch_panic(ptr @.str.2887, i64 2074, ptr @.str.2888) unreachable -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 %range4406, label %inrange4407 -range4406: - call void @finch_panic_index(ptr @.str.2798, i64 1919, i64 %t67, i64 %t69) +ok4632: + %t72 = getelementptr inbounds %S.gen.Gen, ptr %t70, i32 0, i32 34 + %t73 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 + %t74 = load i64, ptr %t73 + %t75 = load { ptr, i64, i64 }, ptr %t72 + %t76 = extractvalue { ptr, i64, i64 } %t75, 1 + %t77 = icmp uge i64 %t74, %t76 + br i1 %t77, label %range4633, label %inrange4634 +range4633: + call void @finch_panic_index(ptr @.str.2889, i64 2074, i64 %t74, i64 %t76) unreachable -inrange4407: - %t71 = extractvalue { ptr, i64, i64 } %t68, 0 - %t72 = getelementptr inbounds i64, ptr %t71, i64 %t67 - %t73 = load i64, ptr %t72 - call void @finch_str_from_int(ptr %a74, i64 %t73) - %t75 = load { ptr, i64, i64 }, ptr %a74 - store { ptr, i64, i64 } %t62, 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.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 - %t85 = load i64, ptr %t84 - call void @finch_str_from_int(ptr %a86, i64 %t85) - %t87 = load { ptr, i64, i64 }, ptr %a86 - store { ptr, i64, i64 } %t83, 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.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 - call void @finch_str_from_int(ptr %a97, i64 %t96) - %t98 = load { ptr, i64, i64 }, ptr %a97 - store { ptr, i64, i64 } %t95, 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 - %t103 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t102, ptr %a105 - store { ptr, i64, i64 } %t103, ptr %a106 +inrange4634: + %t78 = extractvalue { ptr, i64, i64 } %t75, 0 + %t79 = getelementptr inbounds i64, ptr %t78, i64 %t74 + %t80 = load i64, ptr %t79 + call void @finch_str_from_int(ptr %a81, i64 %t80) + %t82 = load { ptr, i64, i64 }, ptr %a81 + store { ptr, i64, i64 } %t69, ptr %a84 + store { ptr, i64, i64 } %t82, ptr %a85 + call void @finch_str_concat(ptr %a83, ptr %a84, ptr %a85) + store { ptr, i64, i64 } %t69, ptr %a86 + call void @finch_str_drop(ptr %a86) + store { ptr, i64, i64 } %t82, ptr %a87 + call void @finch_str_drop(ptr %a87) + %t88 = load { ptr, i64, i64 }, ptr %a83 + store { ptr, i64, i64 } %t88, ptr %a90 + store { ptr, i64, i64 } { ptr @.str.2890, i64 8, i64 0 }, ptr %a91 + call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) + store { ptr, i64, i64 } %t88, ptr %a92 + call void @finch_str_drop(ptr %a92) + %t93 = load { ptr, i64, i64 }, ptr %a89 + %t94 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 + %t95 = load i64, ptr %t94 + call void @finch_str_from_int(ptr %a96, i64 %t95) + %t97 = load { ptr, i64, i64 }, ptr %a96 + store { ptr, i64, i64 } %t93, ptr %a99 + store { ptr, i64, i64 } %t97, ptr %a100 + call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100) + store { ptr, i64, i64 } %t93, ptr %a101 + call void @finch_str_drop(ptr %a101) + store { ptr, i64, i64 } %t97, ptr %a102 + call void @finch_str_drop(ptr %a102) + %t103 = load { ptr, i64, i64 }, ptr %a98 + store { ptr, i64, i64 } %t103, ptr %a105 + store { ptr, i64, i64 } { ptr @.str.2891, i64 9, i64 0 }, ptr %a106 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.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) - store i64 %t112, ptr %a113 - %t114 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t115 = load i64, ptr %t114 - %t116 = load ptr, ptr %a1 - %t117 = icmp eq ptr %t116, null - br i1 %t117, label %panic4408, label %ok4409 -panic4408: - call void @finch_panic(ptr @.str.2802, i64 1920, ptr @.str.2803) + store { ptr, i64, i64 } %t103, ptr %a107 + call void @finch_str_drop(ptr %a107) + %t108 = load { ptr, i64, i64 }, ptr %a104 + %t109 = load i64, ptr %a20 + call void @finch_str_from_int(ptr %a110, i64 %t109) + %t111 = load { ptr, i64, i64 }, ptr %a110 + store { ptr, i64, i64 } %t108, ptr %a113 + store { ptr, i64, i64 } %t111, ptr %a114 + call void @finch_str_concat(ptr %a112, ptr %a113, ptr %a114) + store { ptr, i64, i64 } %t108, ptr %a115 + call void @finch_str_drop(ptr %a115) + store { ptr, i64, i64 } %t111, ptr %a116 + call void @finch_str_drop(ptr %a116) + %t117 = load { ptr, i64, i64 }, ptr %a112 + %t118 = load { ptr, i64, i64 }, ptr %a23 + store { ptr, i64, i64 } %t117, ptr %a120 + store { ptr, i64, i64 } %t118, ptr %a121 + call void @finch_str_concat(ptr %a119, ptr %a120, ptr %a121) + store { ptr, i64, i64 } %t117, ptr %a122 + call void @finch_str_drop(ptr %a122) + %t123 = load { ptr, i64, i64 }, ptr %a119 + store { ptr, i64, i64 } %t123, ptr %a125 + store { ptr, i64, i64 } { ptr @.str.2892, i64 1, i64 0 }, ptr %a126 + call void @finch_str_concat(ptr %a124, ptr %a125, ptr %a126) + store { ptr, i64, i64 } %t123, ptr %a127 + call void @finch_str_drop(ptr %a127) + %t128 = load { ptr, i64, i64 }, ptr %a124 + %t129 = call i64 @finch.gen.md(ptr %t42, { ptr, i64, i64 } %t128) + store { ptr, i64, i64 } %t128, ptr %a130 + call void @finch_str_drop(ptr %a130) + store i64 %t129, ptr %a131 + %t132 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 + %t133 = load i64, ptr %t132 + %t134 = load ptr, ptr %a1 + %t135 = icmp eq ptr %t134, null + br i1 %t135, label %panic4635, label %ok4636 +panic4635: + call void @finch_panic(ptr @.str.2893, i64 2075, ptr @.str.2894) unreachable -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 %panic4410, label %ok4411 -panic4410: - call void @finch_panic(ptr @.str.2804, i64 1921, ptr @.str.2805) +ok4636: + %t136 = getelementptr inbounds %S.gen.Gen, ptr %t134, i32 0, i32 36 + store i64 %t133, ptr %t136 + %t137 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 + %t138 = load i64, ptr %t137 + %t139 = load ptr, ptr %a1 + %t140 = icmp eq ptr %t139, null + br i1 %t140, label %panic4637, label %ok4638 +panic4637: + call void @finch_panic(ptr @.str.2895, i64 2076, ptr @.str.2896) unreachable -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.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.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 - call void @finch_str_from_int(ptr %a135, i64 %t134) - %t136 = load { ptr, i64, i64 }, ptr %a135 - store { ptr, i64, i64 } %t133, 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.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) +ok4638: + %t141 = getelementptr inbounds %S.gen.Gen, ptr %t139, i32 0, i32 37 + store i64 %t138, ptr %t141 + %t142 = load ptr, ptr %a1 + %t143 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.2897, i64 41, i64 0 }, ptr %a145 + store { ptr, i64, i64 } %t143, ptr %a146 + 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.2898, i64 12, i64 0 }, ptr %a150 + call void @finch_str_concat(ptr %a148, ptr %a149, ptr %a150) + store { ptr, i64, i64 } %t147, ptr %a151 + call void @finch_str_drop(ptr %a151) + %t152 = load { ptr, i64, i64 }, ptr %a148 + %t153 = load i64, ptr %a131 + call void @finch_str_from_int(ptr %a154, i64 %t153) + %t155 = load { ptr, i64, i64 }, ptr %a154 + store { ptr, i64, i64 } %t152, ptr %a157 + store { ptr, i64, i64 } %t155, ptr %a158 + call void @finch_str_concat(ptr %a156, ptr %a157, ptr %a158) + store { ptr, i64, i64 } %t152, ptr %a159 + call void @finch_str_drop(ptr %a159) + store { ptr, i64, i64 } %t155, ptr %a160 + call void @finch_str_drop(ptr %a160) + %t161 = load { ptr, i64, i64 }, ptr %a156 + store { ptr, i64, i64 } %t161, ptr %a163 + store { ptr, i64, i64 } { ptr @.str.2899, i64 27, i64 0 }, ptr %a164 + call void @finch_str_concat(ptr %a162, ptr %a163, ptr %a164) + store { ptr, i64, i64 } %t161, ptr %a165 + call void @finch_str_drop(ptr %a165) + %t166 = load { ptr, i64, i64 }, ptr %a162 + call void @finch.gen.emit(ptr %t142, { ptr, i64, i64 } %t166) + store { ptr, i64, i64 } %t166, ptr %a167 + call void @finch_str_drop(ptr %a167) + call void @finch_str_drop(ptr %a23) ret void } @@ -40967,104 +47672,170 @@ entry: %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 + %a25 = alloca { ptr, i64, i64 }, align 16 %a27 = alloca { ptr, i64, i64 }, align 16 %a28 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 + %a29 = alloca { ptr, i64, i64 }, align 16 + %a30 = alloca { ptr, i64, i64 }, align 16 %a42 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = 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 %a54 = alloca { ptr, i64, i64 }, align 16 %a55 = 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 + %a59 = alloca { ptr, i64, i64 }, align 16 + %a60 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 %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.2809, i64 20, i64 0 }, ptr %t4 + store { ptr, i64, i64 } { ptr @.str.2900, i64 20, i64 0 }, ptr %t4 %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 - store { ptr, i64, i64 } { ptr @.str.2810, i64 30, i64 0 }, ptr %t5 + store { ptr, i64, i64 } { ptr @.str.2901, 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 %panic4412, label %ok4413 -panic4412: - call void @finch_panic(ptr @.str.2811, i64 1928, ptr @.str.2812) + br i1 %t11, label %panic4639, label %ok4640 +panic4639: + call void @finch_panic(ptr @.str.2902, i64 2083, ptr @.str.2903) unreachable -ok4413: - %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 31 +ok4640: + %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 32 %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.cond4414 -for.cond4414: + br label %for.cond4641 +for.cond4641: %t16 = load i64, ptr %a15 %t17 = icmp slt i64 %t16, %t14 - br i1 %t17, label %for.body4415, label %for.end4417 -for.body4415: + br i1 %t17, label %for.body4642, label %for.end4644 +for.body4642: %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.2813, i64 1, i64 0 }, ptr %a23 + store { ptr, i64, i64 } { ptr @.str.2904, 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.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 %panic4418, label %ok4419 -panic4418: - call void @finch_panic(ptr @.str.2815, i64 1929, ptr @.str.2816) + store { ptr, i64, i64 } %t21, ptr %a25 + call void @finch_str_drop(ptr %a25) + %t26 = load { ptr, i64, i64 }, ptr %a22 + store { ptr, i64, i64 } %t26, ptr %a28 + store { ptr, i64, i64 } { ptr @.str.2905, i64 3, i64 0 }, ptr %a29 + call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) + store { ptr, i64, i64 } %t26, ptr %a30 + call void @finch_str_drop(ptr %a30) + %t31 = load { ptr, i64, i64 }, ptr %a27 + %t32 = load ptr, ptr %a1 + %t33 = icmp eq ptr %t32, null + br i1 %t33, label %panic4645, label %ok4646 +panic4645: + call void @finch_panic(ptr @.str.2906, i64 2084, ptr @.str.2907) unreachable -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 %range4420, label %inrange4421 -range4420: - call void @finch_panic_index(ptr @.str.2817, i64 1929, i64 %t33, i64 %t35) +ok4646: + %t34 = getelementptr inbounds %S.gen.Gen, ptr %t32, i32 0, i32 32 + %t35 = load i64, ptr %a15 + %t36 = load { ptr, i64, i64 }, ptr %t34 + %t37 = extractvalue { ptr, i64, i64 } %t36, 1 + %t38 = icmp uge i64 %t35, %t37 + br i1 %t38, label %range4647, label %inrange4648 +range4647: + call void @finch_panic_index(ptr @.str.2908, i64 2084, i64 %t35, i64 %t37) unreachable -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 - store { ptr, i64, i64 } %t29, 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 - %t44 = load i64, ptr %t18 - %t45 = add i64 %t44, 1 - call void @finch_arr_reserve(ptr %a9, i64 %t45, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t46 = load ptr, ptr %a9 - %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.step4416 -for.step4416: - %t48 = load i64, ptr %a15 - %t49 = add i64 %t48, 1 - store i64 %t49, ptr %a15 - br label %for.cond4414 -for.end4417: - %t50 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 - 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.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 +inrange4648: + %t39 = extractvalue { ptr, i64, i64 } %t36, 0 + %t40 = getelementptr inbounds { ptr, i64, i64 }, ptr %t39, i64 %t35 + %t41 = load { ptr, i64, i64 }, ptr %t40 + store { ptr, i64, i64 } %t31, ptr %a43 + store { ptr, i64, i64 } %t41, ptr %a44 + call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) + store { ptr, i64, i64 } %t31, ptr %a45 + call void @finch_str_drop(ptr %a45) + %t46 = load { ptr, i64, i64 }, ptr %a42 + %t47 = load i64, ptr %t18 + %t48 = add i64 %t47, 1 + call void @finch_arr_reserve(ptr %a9, i64 %t48, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t49 = load ptr, ptr %a9 + %t50 = getelementptr inbounds { ptr, i64, i64 }, ptr %t49, i64 %t47 + store { ptr, i64, i64 } %t46, ptr %t50 + store i64 %t48, ptr %t18 + br label %for.step4643 +for.step4643: + %t51 = load i64, ptr %a15 + %t52 = add i64 %t51, 1 + store i64 %t52, ptr %a15 + br label %for.cond4641 +for.end4644: + %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.2909, i64 1, i64 0 }, ptr %a54 + call void @finch_str_join(ptr %a55, ptr %a9, ptr %a54) + %t56 = load { ptr, i64, i64 }, ptr %a55 + store { ptr, i64, i64 } %t56, ptr %a58 + store { ptr, i64, i64 } { ptr @.str.2910, i64 1, i64 0 }, ptr %a59 + call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) + store { ptr, i64, i64 } %t56, ptr %a60 + call void @finch_str_drop(ptr %a60) + %t61 = load { ptr, i64, i64 }, ptr %a57 + call void @finch.drop.arr_str(ptr %a9) + ret { ptr, i64, i64 } %t61 +} + +define internal void @finch.copy.arr_S_gen_Var(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.gen.Var, 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.cond4720 +n.cond4720: + %t6 = load i64, ptr %a5 + %t7 = icmp slt i64 %t6, %t4 + br i1 %t7, label %n.body4721, label %n.end4722 +n.body4721: + %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.cond4720 +n.end4722: + ret void +} + +define internal void @finch.copy.arr_S_gen_Cleanup(ptr %dst, ptr %src) { +entry: + + call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (%S.gen.Cleanup, ptr null, i32 1) to i64)) + ret void +} + +define internal void @finch.copy.S_gen_Scope(ptr %dst, ptr %src) { +entry: + + %t1 = load %S.gen.Scope, ptr %src + store %S.gen.Scope %t1, ptr %dst + %t2 = getelementptr inbounds %S.gen.Scope, ptr %dst, i32 0, i32 0 + %t3 = getelementptr inbounds %S.gen.Scope, ptr %src, i32 0, i32 0 + call void @finch.copy.arr_S_gen_Var(ptr %t2, ptr %t3) + %t4 = getelementptr inbounds %S.gen.Scope, ptr %dst, i32 0, i32 1 + %t5 = getelementptr inbounds %S.gen.Scope, ptr %src, i32 0, i32 1 + call void @finch.copy.arr_S_ast_Node(ptr %t4, ptr %t5) + %t6 = getelementptr inbounds %S.gen.Scope, ptr %dst, i32 0, i32 2 + %t7 = getelementptr inbounds %S.gen.Scope, ptr %src, i32 0, i32 2 + call void @finch.copy.arr_int(ptr %t6, ptr %t7) + %t8 = getelementptr inbounds %S.gen.Scope, ptr %dst, i32 0, i32 3 + %t9 = getelementptr inbounds %S.gen.Scope, ptr %src, i32 0, i32 3 + call void @finch.copy.arr_S_gen_Cleanup(ptr %t8, ptr %t9) + ret void } define internal void @finch.copy.arr_S_gen_Scope(ptr %dst, ptr %src) { @@ -41076,20 +47847,44 @@ 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.cond4490 -n.cond4490: + br label %n.cond4717 +n.cond4717: %t6 = load i64, ptr %a5 %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body4491, label %n.end4492 -n.body4491: + br i1 %t7, label %n.body4718, label %n.end4719 +n.body4718: %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.cond4490 -n.end4492: + br label %n.cond4717 +n.end4719: + ret void +} + +define internal void @finch.drop.arr_S_gen_Scope(ptr %a) { +entry: + %a4 = alloca i64, align 16 + %t1 = load ptr, ptr %a + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 + %t3 = load i64, ptr %t2 + store i64 0, ptr %a4 + br label %n.cond4723 +n.cond4723: + %t5 = load i64, ptr %a4 + %t6 = icmp slt i64 %t5, %t3 + br i1 %t6, label %n.body4724, label %n.end4725 +n.body4724: + %t7 = getelementptr inbounds %S.gen.Scope, ptr %t1, i64 %t5 + call void @finch.drop.S_gen_Scope(ptr %t7) + %t8 = load i64, ptr %a4 + %t9 = add i64 %t8, 1 + store i64 %t9, ptr %a4 + br label %n.cond4723 +n.end4725: + call void @finch_arr_free(ptr %a) ret void } @@ -41099,1067 +47894,1245 @@ entry: %a2 = alloca i64, align 16 %a16 = alloca %S.gen.FnSig, align 16 %a17 = alloca %S.gen.FnSig, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = 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 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca %S.ast.Node, align 16 - %a104 = alloca %S.ast.Node, align 16 - %a106 = alloca %S.ast.Node, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 + %a20 = alloca %S.gen.FnSig, align 16 + %a29 = alloca { ptr, i64, i64 }, align 16 + %a30 = alloca { ptr, i64, i64 }, align 16 + %a33 = alloca { ptr, i64, i64 }, align 16 + %a42 = alloca { ptr, i64, i64 }, align 16 + %a43 = alloca { ptr, i64, i64 }, align 16 + %a46 = alloca { ptr, i64, i64 }, align 16 + %a55 = alloca { ptr, i64, i64 }, align 16 + %a56 = alloca { ptr, i64, i64 }, align 16 + %a59 = alloca { ptr, i64, i64 }, align 16 + %a64 = 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 + %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 + %a90 = alloca { ptr, i64, i64 }, align 16 + %a116 = alloca %S.ast.Node, align 16 + %a117 = alloca %S.ast.Node, align 16 + %a119 = alloca %S.ast.Node, align 16 %a120 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca i64, align 16 - %a162 = 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 + %a125 = alloca { ptr, i64, i64 }, align 16 + %a126 = alloca { ptr, i64, i64 }, align 16 + %a129 = alloca { ptr, i64, i64 }, align 16 + %a134 = alloca { ptr, i64, i64 }, align 16 + %a135 = alloca { ptr, i64, i64 }, align 16 + %a138 = alloca { ptr, i64, i64 }, align 16 + %a151 = alloca i64, align 16 + %a179 = alloca { ptr, i64, i64 }, align 16 %a184 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 + %a185 = alloca { ptr, i64, i64 }, align 16 + %a188 = alloca { ptr, i64, i64 }, align 16 + %a190 = alloca { ptr, i64, i64 }, align 16 + %a203 = alloca { ptr, i64, i64 }, align 16 %a210 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca %S.ast.Type, align 16 - %a226 = alloca %S.ast.Type, align 16 - %a227 = alloca %S.ast.Type, align 16 - %a249 = alloca i64, align 16 - %a263 = alloca %S.ast.Type, align 16 - %a264 = alloca %S.ast.Type, align 16 - %a266 = alloca %S.ast.Type, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a276 = 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 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 + %a212 = alloca { ptr, i64, i64 }, align 16 + %a213 = alloca { ptr, i64, i64 }, align 16 + %a221 = alloca { ptr, i64, i64 }, align 16 + %a222 = alloca { ptr, i64, i64 }, align 16 + %a230 = alloca { ptr, i64, i64 }, align 16 + %a231 = alloca { ptr, i64, i64 }, align 16 + %a234 = alloca %S.ast.Type, align 16 + %a247 = alloca %S.ast.Type, align 16 + %a248 = alloca %S.ast.Type, align 16 + %a270 = alloca i64, align 16 + %a284 = alloca %S.ast.Type, align 16 + %a285 = alloca %S.ast.Type, align 16 + %a287 = alloca %S.ast.Type, align 16 + %a292 = alloca { ptr, i64, i64 }, align 16 %a293 = 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 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca { ptr, i64, i64 }, align 16 - %a394 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a396 = 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 - %a421 = alloca { ptr, i64, i64 }, align 16 - %a422 = alloca { ptr, i64, i64 }, align 16 - %a423 = alloca { ptr, i64, i64 }, align 16 - %a425 = alloca { ptr, i64, i64 }, align 16 + %a294 = alloca { ptr, i64, i64 }, align 16 + %a295 = alloca { ptr, i64, i64 }, align 16 + %a298 = 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 + %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 + %a316 = alloca { ptr, i64, i64 }, align 16 + %a318 = alloca { ptr, i64, i64 }, align 16 + %a340 = alloca { ptr, i64, i64 }, align 16 + %a397 = alloca { ptr, i64, i64 }, align 16 %a426 = alloca { ptr, i64, i64 }, align 16 %a427 = alloca { ptr, i64, i64 }, align 16 - %a430 = alloca { ptr, i64, i64 }, align 16 %a434 = alloca { ptr, i64, i64 }, align 16 + %a435 = 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 + %a439 = alloca { ptr, i64, i64 }, align 16 + %a440 = alloca { ptr, i64, i64 }, align 16 + %a441 = alloca { ptr, i64, i64 }, align 16 + %a449 = 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 %a453 = 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 - %a459 = alloca { ptr, i64, i64 }, align 16 - %a466 = alloca { ptr, i64, i64 }, align 16 - %a467 = alloca { ptr, i64, i64 }, align 16 - %a468 = 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 %a472 = alloca { ptr, i64, i64 }, align 16 + %a474 = alloca { ptr, i64, i64 }, align 16 %a475 = alloca { ptr, i64, i64 }, align 16 %a476 = alloca { ptr, i64, i64 }, align 16 - %a478 = alloca { ptr, i64, i64 }, align 16 + %a477 = alloca { ptr, i64, i64 }, align 16 %a479 = alloca { ptr, i64, i64 }, align 16 - %a480 = 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 + %a481 = alloca { ptr, i64, i64 }, align 16 + %a485 = alloca { ptr, i64, 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 + %a490 = alloca { ptr, i64, i64 }, align 16 %a493 = alloca { ptr, i64, i64 }, align 16 - %a499 = alloca { ptr, i64, i64 }, align 16 - %a500 = alloca { ptr, i64, i64 }, align 16 - %a502 = alloca { ptr, i64, i64 }, align 16 - %a503 = alloca { ptr, i64, i64 }, align 16 - %a504 = 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 + %a509 = alloca { ptr, i64, i64 }, align 16 + %a510 = alloca { ptr, i64, i64 }, align 16 + %a512 = alloca { ptr, i64, 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 - %a521 = 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 + %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 + %a530 = alloca { ptr, i64, i64 }, align 16 + %a533 = alloca { ptr, i64, i64 }, align 16 + %a534 = 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 + %a539 = alloca { ptr, i64, i64 }, align 16 + %a540 = alloca { ptr, i64, i64 }, align 16 + %a542 = 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 + %a548 = alloca { ptr, i64, i64 }, align 16 + %a549 = alloca { ptr, i64, i64 }, align 16 + %a550 = alloca { ptr, i64, i64 }, align 16 + %a551 = 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 + %a556 = alloca { ptr, i64, i64 }, align 16 + %a562 = alloca { ptr, i64, i64 }, align 16 + %a563 = alloca { ptr, i64, i64 }, align 16 + %a565 = alloca { ptr, i64, i64 }, align 16 + %a566 = alloca { ptr, i64, i64 }, align 16 + %a567 = alloca { ptr, i64, i64 }, align 16 + %a568 = alloca { ptr, i64, i64 }, align 16 + %a569 = alloca { ptr, i64, i64 }, align 16 + %a571 = 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 + %a580 = alloca { ptr, i64, i64 }, align 16 + %a581 = alloca { ptr, i64, i64 }, align 16 + %a583 = alloca { ptr, i64, i64 }, align 16 + %a584 = alloca { ptr, i64, i64 }, align 16 + %a585 = alloca { ptr, i64, i64 }, align 16 + %a586 = alloca { ptr, i64, i64 }, align 16 + %a587 = alloca { ptr, i64, i64 }, align 16 + %a589 = alloca { ptr, i64, i64 }, align 16 + %a590 = alloca { ptr, i64, i64 }, align 16 + %a591 = alloca { ptr, i64, i64 }, align 16 + %a592 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store i64 %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic4422, label %ok4423 -panic4422: - call void @finch_panic(ptr @.str.2820, i64 1935, ptr @.str.2821) + br i1 %t4, label %panic4649, label %ok4650 +panic4649: + call void @finch_panic(ptr @.str.2911, i64 2090, ptr @.str.2912) unreachable -ok4423: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 14 +ok4650: + %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 %range4424, label %inrange4425 -range4424: - call void @finch_panic_index(ptr @.str.2822, i64 1935, i64 %t6, i64 %t8) + br i1 %t9, label %range4651, label %inrange4652 +range4651: + call void @finch_panic_index(ptr @.str.2913, i64 2090, i64 %t6, i64 %t8) unreachable -inrange4425: +inrange4652: %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 %panic4426, label %ok4427 -panic4426: - call void @finch_panic(ptr @.str.2823, i64 1935, ptr @.str.2824) + br i1 %t14, label %panic4653, label %ok4654 +panic4653: + call void @finch_panic(ptr @.str.2914, i64 2090, ptr @.str.2915) unreachable -ok4427: - %t15 = getelementptr inbounds %S.gen.Gen, ptr %t13, i32 0, i32 12 +ok4654: + %t15 = getelementptr inbounds %S.gen.Gen, ptr %t13, i32 0, i32 13 store %S.gen.FnSig %t12, ptr %a16 call void @finch.copy.S_gen_FnSig(ptr %a17, ptr %a16) %t18 = load %S.gen.FnSig, ptr %a17 + %t19 = load %S.gen.FnSig, ptr %t15 store %S.gen.FnSig %t18, ptr %t15 - %t19 = load ptr, ptr %a1 - %t20 = icmp eq ptr %t19, null - br i1 %t20, label %panic4428, label %ok4429 -panic4428: - call void @finch_panic(ptr @.str.2825, i64 1936, ptr @.str.2826) + store %S.gen.FnSig %t19, ptr %a20 + call void @finch.drop.S_gen_FnSig(ptr %a20) + %t21 = load ptr, ptr %a1 + %t22 = icmp eq ptr %t21, null + br i1 %t22, label %panic4655, label %ok4656 +panic4655: + call void @finch_panic(ptr @.str.2916, i64 2091, ptr @.str.2917) unreachable -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 %panic4430, label %ok4431 -panic4430: - call void @finch_panic(ptr @.str.2827, i64 1936, ptr @.str.2828) +ok4656: + %t23 = getelementptr inbounds %S.gen.Gen, ptr %t21, i32 0, i32 13 + %t24 = getelementptr inbounds %S.gen.FnSig, ptr %t23, i32 0, i32 0 + %t25 = load { ptr, i64, i64 }, ptr %t24 + %t26 = load ptr, ptr %a1 + %t27 = icmp eq ptr %t26, null + br i1 %t27, label %panic4657, label %ok4658 +panic4657: + call void @finch_panic(ptr @.str.2918, i64 2091, ptr @.str.2919) unreachable -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) - %t29 = load { ptr, i64, i64 }, ptr %a28 - store { ptr, i64, i64 } %t29, ptr %t26 - %t30 = load ptr, ptr %a1 - %t31 = icmp eq ptr %t30, null - br i1 %t31, label %panic4432, label %ok4433 -panic4432: - call void @finch_panic(ptr @.str.2829, i64 1937, ptr @.str.2830) +ok4658: + %t28 = getelementptr inbounds %S.gen.Gen, ptr %t26, i32 0, i32 14 + store { ptr, i64, i64 } %t25, ptr %a29 + call void @finch_str_copy(ptr %a30, ptr %a29) + %t31 = load { ptr, i64, i64 }, ptr %a30 + %t32 = load { ptr, i64, i64 }, ptr %t28 + store { ptr, i64, i64 } %t31, ptr %t28 + store { ptr, i64, i64 } %t32, ptr %a33 + call void @finch_str_drop(ptr %a33) + %t34 = load ptr, ptr %a1 + %t35 = icmp eq ptr %t34, null + br i1 %t35, label %panic4659, label %ok4660 +panic4659: + call void @finch_panic(ptr @.str.2920, i64 2092, ptr @.str.2921) unreachable -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 %panic4434, label %ok4435 -panic4434: - call void @finch_panic(ptr @.str.2831, i64 1937, ptr @.str.2832) +ok4660: + %t36 = getelementptr inbounds %S.gen.Gen, ptr %t34, i32 0, i32 13 + %t37 = getelementptr inbounds %S.gen.FnSig, ptr %t36, i32 0, i32 6 + %t38 = load { ptr, i64, i64 }, ptr %t37 + %t39 = load ptr, ptr %a1 + %t40 = icmp eq ptr %t39, null + br i1 %t40, label %panic4661, label %ok4662 +panic4661: + call void @finch_panic(ptr @.str.2922, i64 2092, ptr @.str.2923) unreachable -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) - %t40 = load { ptr, i64, i64 }, ptr %a39 - store { ptr, i64, i64 } %t40, ptr %t37 - %t41 = load ptr, ptr %a1 - %t42 = icmp eq ptr %t41, null - br i1 %t42, label %panic4436, label %ok4437 -panic4436: - call void @finch_panic(ptr @.str.2833, i64 1938, ptr @.str.2834) +ok4662: + %t41 = getelementptr inbounds %S.gen.Gen, ptr %t39, i32 0, i32 18 + store { ptr, i64, i64 } %t38, ptr %a42 + call void @finch.copy.arr_str(ptr %a43, ptr %a42) + %t44 = load { ptr, i64, i64 }, ptr %a43 + %t45 = load { ptr, i64, i64 }, ptr %t41 + store { ptr, i64, i64 } %t44, ptr %t41 + store { ptr, i64, i64 } %t45, ptr %a46 + call void @finch.drop.arr_str(ptr %a46) + %t47 = load ptr, ptr %a1 + %t48 = icmp eq ptr %t47, null + br i1 %t48, label %panic4663, label %ok4664 +panic4663: + call void @finch_panic(ptr @.str.2924, i64 2093, ptr @.str.2925) unreachable -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 %panic4438, label %ok4439 -panic4438: - call void @finch_panic(ptr @.str.2835, i64 1938, ptr @.str.2836) - unreachable -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) - %t51 = load { ptr, i64, i64 }, ptr %a50 - store { ptr, i64, i64 } %t51, ptr %t48 +ok4664: + %t49 = getelementptr inbounds %S.gen.Gen, ptr %t47, i32 0, i32 13 + %t50 = getelementptr inbounds %S.gen.FnSig, ptr %t49, i32 0, i32 7 + %t51 = load { ptr, i64, i64 }, ptr %t50 %t52 = load ptr, ptr %a1 %t53 = icmp eq ptr %t52, null - br i1 %t53, label %panic4440, label %ok4441 -panic4440: - call void @finch_panic(ptr @.str.2838, i64 1939, ptr @.str.2839) + br i1 %t53, label %panic4665, label %ok4666 +panic4665: + call void @finch_panic(ptr @.str.2926, i64 2093, ptr @.str.2927) unreachable -ok4441: +ok4666: %t54 = getelementptr inbounds %S.gen.Gen, ptr %t52, i32 0, i32 19 - 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 %panic4442, label %ok4443 -panic4442: - call void @finch_panic(ptr @.str.2840, i64 1940, ptr @.str.2841) + store { ptr, i64, i64 } %t51, ptr %a55 + call void @finch.copy.arr_S_ast_Type(ptr %a56, ptr %a55) + %t57 = load { ptr, i64, i64 }, ptr %a56 + %t58 = load { ptr, i64, i64 }, ptr %t54 + store { ptr, i64, i64 } %t57, ptr %t54 + store { ptr, i64, i64 } %t58, ptr %a59 + call void @finch.drop.arr_S_ast_Type(ptr %a59) + %t60 = load ptr, ptr %a1 + %t61 = icmp eq ptr %t60, null + br i1 %t61, label %panic4667, label %ok4668 +panic4667: + call void @finch_panic(ptr @.str.2929, i64 2094, ptr @.str.2930) unreachable -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 %then4444, label %endif4446 -then4444: - %t62 = load ptr, ptr %a1 - %t63 = icmp eq ptr %t62, null - br i1 %t63, label %panic4447, label %ok4448 -panic4447: - call void @finch_panic(ptr @.str.2843, i64 1941, ptr @.str.2844) +ok4668: + %t62 = getelementptr inbounds %S.gen.Gen, ptr %t60, i32 0, i32 20 + %t63 = load { ptr, i64, i64 }, ptr %t62 + store { ptr, i64, i64 } { ptr @.str.2928, i64 0, i64 0 }, ptr %t62 + store { ptr, i64, i64 } %t63, ptr %a64 + call void @finch_str_drop(ptr %a64) + %t65 = load ptr, ptr %a1 + %t66 = icmp eq ptr %t65, null + br i1 %t66, label %panic4669, label %ok4670 +panic4669: + call void @finch_panic(ptr @.str.2931, i64 2095, ptr @.str.2932) unreachable -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.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.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 %panic4449, label %ok4450 -panic4449: - call void @finch_panic(ptr @.str.2846, i64 1941, ptr @.str.2847) +ok4670: + %t67 = getelementptr inbounds %S.gen.Gen, ptr %t65, i32 0, i32 13 + %t68 = getelementptr inbounds %S.gen.FnSig, ptr %t67, i32 0, i32 7 + %t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %t68, i32 0, i32 1 + %t70 = load i64, ptr %t69 + %t71 = icmp sgt i64 %t70, 0 + br i1 %t71, label %then4671, label %endif4673 +then4671: + %t72 = load ptr, ptr %a1 + %t73 = icmp eq ptr %t72, null + br i1 %t73, label %panic4674, label %ok4675 +panic4674: + call void @finch_panic(ptr @.str.2934, i64 2096, ptr @.str.2935) unreachable -ok4450: - %t77 = getelementptr inbounds %S.gen.Gen, ptr %t75, i32 0, i32 19 - store { ptr, i64, i64 } %t74, ptr %t77 - br label %endif4446 -endif4446: - %t78 = load ptr, ptr %a1 - %t79 = icmp eq ptr %t78, null - br i1 %t79, label %panic4451, label %ok4452 -panic4451: - call void @finch_panic(ptr @.str.2848, i64 1943, ptr @.str.2849) +ok4675: + %t74 = getelementptr inbounds %S.gen.Gen, ptr %t72, i32 0, i32 13 + %t75 = getelementptr inbounds %S.gen.FnSig, ptr %t74, i32 0, i32 8 + %t76 = load { ptr, i64, i64 }, ptr %t75 + store { ptr, i64, i64 } { ptr @.str.2933, i64 17, 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.2936, i64 1, i64 0 }, ptr %a83 + call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) + store { ptr, i64, i64 } %t80, ptr %a84 + call void @finch_str_drop(ptr %a84) + %t85 = load { ptr, i64, i64 }, ptr %a81 + %t86 = load ptr, ptr %a1 + %t87 = icmp eq ptr %t86, null + br i1 %t87, label %panic4676, label %ok4677 +panic4676: + call void @finch_panic(ptr @.str.2937, i64 2096, ptr @.str.2938) unreachable -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 %panic4453, label %ok4454 -panic4453: - call void @finch_panic(ptr @.str.2850, i64 1943, ptr @.str.2851) +ok4677: + %t88 = getelementptr inbounds %S.gen.Gen, ptr %t86, i32 0, i32 20 + %t89 = load { ptr, i64, i64 }, ptr %t88 + store { ptr, i64, i64 } %t85, ptr %t88 + store { ptr, i64, i64 } %t89, ptr %a90 + call void @finch_str_drop(ptr %a90) + br label %endif4673 +endif4673: + %t91 = load ptr, ptr %a1 + %t92 = icmp eq ptr %t91, null + br i1 %t92, label %panic4678, label %ok4679 +panic4678: + call void @finch_panic(ptr @.str.2939, i64 2098, ptr @.str.2940) unreachable -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 %range4455, label %inrange4456 -range4455: - call void @finch_panic_index(ptr @.str.2852, i64 1943, i64 %t85, i64 %t87) +ok4679: + %t93 = getelementptr inbounds %S.gen.Gen, ptr %t91, i32 0, i32 0 + %t94 = load ptr, ptr %a1 + %t95 = icmp eq ptr %t94, null + br i1 %t95, label %panic4680, label %ok4681 +panic4680: + call void @finch_panic(ptr @.str.2941, i64 2098, ptr @.str.2942) unreachable -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 %panic4457, label %ok4458 -panic4457: - call void @finch_panic(ptr @.str.2853, i64 1943, ptr @.str.2854) +ok4681: + %t96 = getelementptr inbounds %S.gen.Gen, ptr %t94, i32 0, i32 13 + %t97 = getelementptr inbounds %S.gen.FnSig, ptr %t96, i32 0, i32 16 + %t98 = load i64, ptr %t97 + %t99 = load { ptr, i64, i64 }, ptr %t93 + %t100 = extractvalue { ptr, i64, i64 } %t99, 1 + %t101 = icmp uge i64 %t98, %t100 + br i1 %t101, label %range4682, label %inrange4683 +range4682: + call void @finch_panic_index(ptr @.str.2943, i64 2098, i64 %t98, i64 %t100) unreachable -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 %range4459, label %inrange4460 -range4459: - call void @finch_panic_index(ptr @.str.2855, i64 1943, i64 %t96, i64 %t98) +inrange4683: + %t102 = extractvalue { ptr, i64, i64 } %t99, 0 + %t103 = getelementptr inbounds %S.ast.Program, ptr %t102, i64 %t98 + %t104 = getelementptr inbounds %S.ast.Program, ptr %t103, i32 0, i32 8 + %t105 = load ptr, ptr %a1 + %t106 = icmp eq ptr %t105, null + br i1 %t106, label %panic4684, label %ok4685 +panic4684: + call void @finch_panic(ptr @.str.2944, i64 2098, ptr @.str.2945) unreachable -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 - store %S.ast.Node %t102, ptr %a103 - call void @finch.copy.S_ast_Node(ptr %a104, ptr %a103) - %t105 = load %S.ast.Node, ptr %a104 - store %S.ast.Node %t105, ptr %a106 - store { ptr, i64, i64 } zeroinitializer, ptr %a107 - %t108 = load { ptr, i64, i64 }, ptr %a107 - %t109 = load ptr, ptr %a1 - %t110 = icmp eq ptr %t109, null - br i1 %t110, label %panic4461, label %ok4462 -panic4461: - call void @finch_panic(ptr @.str.2856, i64 1945, ptr @.str.2857) +ok4685: + %t107 = getelementptr inbounds %S.gen.Gen, ptr %t105, i32 0, i32 13 + %t108 = getelementptr inbounds %S.gen.FnSig, ptr %t107, i32 0, i32 17 + %t109 = load i64, ptr %t108 + %t110 = load { ptr, i64, i64 }, ptr %t104 + %t111 = extractvalue { ptr, i64, i64 } %t110, 1 + %t112 = icmp uge i64 %t109, %t111 + br i1 %t112, label %range4686, label %inrange4687 +range4686: + call void @finch_panic_index(ptr @.str.2946, i64 2098, i64 %t109, i64 %t111) unreachable -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) - %t114 = load { ptr, i64, i64 }, ptr %a113 - store { ptr, i64, i64 } %t114, ptr %t111 - %t115 = load { ptr, i64, i64 }, ptr %a107 - %t116 = load ptr, ptr %a1 - %t117 = icmp eq ptr %t116, null - br i1 %t117, label %panic4463, label %ok4464 -panic4463: - call void @finch_panic(ptr @.str.2858, i64 1946, ptr @.str.2859) - unreachable -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) +inrange4687: + %t113 = extractvalue { ptr, i64, i64 } %t110, 0 + %t114 = getelementptr inbounds %S.ast.Node, ptr %t113, i64 %t109 + %t115 = load %S.ast.Node, ptr %t114 + store %S.ast.Node %t115, ptr %a116 + call void @finch.copy.S_ast_Node(ptr %a117, ptr %a116) + %t118 = load %S.ast.Node, ptr %a117 + store %S.ast.Node %t118, ptr %a119 + store { ptr, i64, i64 } zeroinitializer, ptr %a120 %t121 = load { ptr, i64, i64 }, ptr %a120 - store { ptr, i64, i64 } %t121, ptr %t118 %t122 = load ptr, ptr %a1 %t123 = icmp eq ptr %t122, null - br i1 %t123, label %panic4465, label %ok4466 -panic4465: - call void @finch_panic(ptr @.str.2860, i64 1947, ptr @.str.2861) + br i1 %t123, label %panic4688, label %ok4689 +panic4688: + call void @finch_panic(ptr @.str.2947, i64 2100, ptr @.str.2948) unreachable -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 %panic4467, label %ok4468 -panic4467: - call void @finch_panic(ptr @.str.2862, i64 1948, ptr @.str.2863) - unreachable -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 %panic4469, label %ok4470 -panic4469: - call void @finch_panic(ptr @.str.2864, i64 1949, ptr @.str.2865) - unreachable -ok4470: - %t130 = getelementptr inbounds %S.gen.Gen, ptr %t128, i32 0, i32 23 - store i64 0, ptr %t130 +ok4689: + %t124 = getelementptr inbounds %S.gen.Gen, ptr %t122, i32 0, i32 4 + store { ptr, i64, i64 } %t121, ptr %a125 + call void @finch.copy.arr_str(ptr %a126, ptr %a125) + %t127 = load { ptr, i64, i64 }, ptr %a126 + %t128 = load { ptr, i64, i64 }, ptr %t124 + store { ptr, i64, i64 } %t127, ptr %t124 + store { ptr, i64, i64 } %t128, ptr %a129 + call void @finch.drop.arr_str(ptr %a129) + %t130 = load { ptr, i64, i64 }, ptr %a120 %t131 = load ptr, ptr %a1 %t132 = icmp eq ptr %t131, null - br i1 %t132, label %panic4471, label %ok4472 -panic4471: - call void @finch_panic(ptr @.str.2866, i64 1950, ptr @.str.2867) + br i1 %t132, label %panic4690, label %ok4691 +panic4690: + call void @finch_panic(ptr @.str.2949, i64 2101, ptr @.str.2950) unreachable -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 %panic4473, label %ok4474 -panic4473: - call void @finch_panic(ptr @.str.2868, i64 1952, ptr @.str.2869) - unreachable -ok4474: - %t137 = getelementptr inbounds %S.gen.Gen, ptr %t135, i32 0, i32 28 - %t138 = load i1, ptr %t137 - br i1 %t138, label %then4475, label %endif4477 -then4475: +ok4691: + %t133 = getelementptr inbounds %S.gen.Gen, ptr %t131, i32 0, i32 5 + store { ptr, i64, i64 } %t130, ptr %a134 + call void @finch.copy.arr_str(ptr %a135, ptr %a134) + %t136 = load { ptr, i64, i64 }, ptr %a135 + %t137 = load { ptr, i64, i64 }, ptr %t133 + store { ptr, i64, i64 } %t136, ptr %t133 + store { ptr, i64, i64 } %t137, ptr %a138 + call void @finch.drop.arr_str(ptr %a138) %t139 = load ptr, ptr %a1 - %t140 = load %S.ast.Node, ptr %a106 - %t141 = call i64 @finch.gen.dbgSubprogram(ptr %t139, %S.ast.Node %t140) - store i64 %t141, ptr %a134 - %t142 = load i64, ptr %a134 - %t143 = load ptr, ptr %a1 - %t144 = icmp eq ptr %t143, null - br i1 %t144, label %panic4478, label %ok4479 -panic4478: - call void @finch_panic(ptr @.str.2870, i64 1954, ptr @.str.2871) + %t140 = icmp eq ptr %t139, null + br i1 %t140, label %panic4692, label %ok4693 +panic4692: + call void @finch_panic(ptr @.str.2951, i64 2102, ptr @.str.2952) unreachable -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 +ok4693: + %t141 = getelementptr inbounds %S.gen.Gen, ptr %t139, i32 0, i32 6 + store i64 0, ptr %t141 + %t142 = load ptr, ptr %a1 + %t143 = icmp eq ptr %t142, null + br i1 %t143, label %panic4694, label %ok4695 +panic4694: + call void @finch_panic(ptr @.str.2953, i64 2103, ptr @.str.2954) + unreachable +ok4695: + %t144 = getelementptr inbounds %S.gen.Gen, ptr %t142, i32 0, i32 9 + store i1 false, ptr %t144 + %t145 = load ptr, ptr %a1 + %t146 = icmp eq ptr %t145, null + br i1 %t146, label %panic4696, label %ok4697 +panic4696: + call void @finch_panic(ptr @.str.2955, i64 2104, ptr @.str.2956) + unreachable +ok4697: + %t147 = getelementptr inbounds %S.gen.Gen, ptr %t145, i32 0, i32 24 + store i64 0, ptr %t147 %t148 = load ptr, ptr %a1 %t149 = icmp eq ptr %t148, null - br i1 %t149, label %panic4480, label %ok4481 -panic4480: - call void @finch_panic(ptr @.str.2872, i64 1955, ptr @.str.2873) + br i1 %t149, label %panic4698, label %ok4699 +panic4698: + call void @finch_panic(ptr @.str.2957, i64 2105, ptr @.str.2958) unreachable -ok4481: +ok4699: %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 %panic4482, label %ok4483 -panic4482: - call void @finch_panic(ptr @.str.2874, i64 1956, ptr @.str.2875) + store i64 -1, ptr %t150 + store i64 -1, ptr %a151 + %t152 = load ptr, ptr %a1 + %t153 = icmp eq ptr %t152, null + br i1 %t153, label %panic4700, label %ok4701 +panic4700: + call void @finch_panic(ptr @.str.2959, i64 2107, ptr @.str.2960) unreachable -ok4483: - %t155 = getelementptr inbounds %S.gen.Gen, ptr %t153, i32 0, i32 36 - store i64 %t152, ptr %t155 - br label %endif4477 -endif4477: +ok4701: + %t154 = getelementptr inbounds %S.gen.Gen, ptr %t152, i32 0, i32 29 + %t155 = load i1, ptr %t154 + br i1 %t155, label %then4702, label %endif4704 +then4702: %t156 = load ptr, ptr %a1 - %t157 = icmp eq ptr %t156, null - br i1 %t157, label %panic4484, label %ok4485 -panic4484: - call void @finch_panic(ptr @.str.2876, i64 1958, ptr @.str.2877) + %t157 = load %S.ast.Node, ptr %a119 + %t158 = call i64 @finch.gen.dbgSubprogram(ptr %t156, %S.ast.Node %t157) + store i64 %t158, ptr %a151 + %t159 = load i64, ptr %a151 + %t160 = load ptr, ptr %a1 + %t161 = icmp eq ptr %t160, null + br i1 %t161, label %panic4705, label %ok4706 +panic4705: + call void @finch_panic(ptr @.str.2961, i64 2109, ptr @.str.2962) unreachable -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 %panic4486, label %ok4487 -panic4486: - call void @finch_panic(ptr @.str.2878, i64 1959, ptr @.str.2879) +ok4706: + %t162 = getelementptr inbounds %S.gen.Gen, ptr %t160, i32 0, i32 35 + store i64 %t159, ptr %t162 + %t163 = getelementptr inbounds %S.ast.Node, ptr %a119, i32 0, i32 11 + %t164 = load i64, ptr %t163 + %t165 = load ptr, ptr %a1 + %t166 = icmp eq ptr %t165, null + br i1 %t166, label %panic4707, label %ok4708 +panic4707: + call void @finch_panic(ptr @.str.2963, i64 2110, ptr @.str.2964) unreachable -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 %panic4488, label %ok4489 -panic4488: - call void @finch_panic(ptr @.str.2880, i64 1961, ptr @.str.2881) - unreachable -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) - %t169 = load { ptr, i64, i64 }, ptr %a168 - store { ptr, i64, i64 } %t169, ptr %t166 +ok4708: + %t167 = getelementptr inbounds %S.gen.Gen, ptr %t165, i32 0, i32 36 + store i64 %t164, ptr %t167 + %t168 = getelementptr inbounds %S.ast.Node, ptr %a119, i32 0, i32 12 + %t169 = load i64, ptr %t168 %t170 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t170) - store { ptr, i64, i64 } zeroinitializer, ptr %a171 - %t172 = load ptr, ptr %a1 - %t173 = icmp eq ptr %t172, null - br i1 %t173, label %panic4493, label %ok4494 -panic4493: - call void @finch_panic(ptr @.str.2882, i64 1964, ptr @.str.2883) + %t171 = icmp eq ptr %t170, null + br i1 %t171, label %panic4709, label %ok4710 +panic4709: + call void @finch_panic(ptr @.str.2965, i64 2111, ptr @.str.2966) unreachable -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 %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.2884, i64 9, i64 0 }, ptr %t183 - store i64 %t181, ptr %t179 - 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 %panic4498, label %ok4499 -panic4498: - call void @finch_panic(ptr @.str.2886, i64 1968, ptr @.str.2887) +ok4710: + %t172 = getelementptr inbounds %S.gen.Gen, ptr %t170, i32 0, i32 37 + store i64 %t169, ptr %t172 + br label %endif4704 +endif4704: + %t173 = load ptr, ptr %a1 + %t174 = icmp eq ptr %t173, null + br i1 %t174, label %panic4711, label %ok4712 +panic4711: + call void @finch_panic(ptr @.str.2967, i64 2113, ptr @.str.2968) unreachable -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 %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) - %t193 = load { ptr, i64, i64 }, ptr %a192 - %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 %panic4503, label %ok4504 -panic4503: - call void @finch_panic(ptr @.str.2889, i64 1971, ptr @.str.2890) +ok4712: + %t175 = getelementptr inbounds %S.gen.Gen, ptr %t173, i32 0, i32 43 + store i1 false, ptr %t175 + %t176 = load ptr, ptr %a1 + %t177 = icmp eq ptr %t176, null + br i1 %t177, label %panic4713, label %ok4714 +panic4713: + call void @finch_panic(ptr @.str.2969, i64 2114, ptr @.str.2970) unreachable -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 - store { ptr, i64, i64 } %t199, ptr %a200 - call void @finch_str_copy(ptr %a201, ptr %a200) - %t202 = load { ptr, i64, i64 }, ptr %a201 - %t203 = insertvalue %S.ast.Type %t194, { ptr, i64, i64 } %t202, 2 +ok4714: + %t178 = getelementptr inbounds %S.gen.Gen, ptr %t176, i32 0, i32 45 + store i64 0, ptr %t178 + store { ptr, i64, i64 } zeroinitializer, ptr %a179 + %t180 = load { ptr, i64, i64 }, ptr %a179 + %t181 = load ptr, ptr %a1 + %t182 = icmp eq ptr %t181, null + br i1 %t182, label %panic4715, label %ok4716 +panic4715: + call void @finch_panic(ptr @.str.2971, i64 2116, ptr @.str.2972) + unreachable +ok4716: + %t183 = getelementptr inbounds %S.gen.Gen, ptr %t181, i32 0, i32 10 + store { ptr, i64, i64 } %t180, ptr %a184 + call void @finch.copy.arr_S_gen_Scope(ptr %a185, ptr %a184) + %t186 = load { ptr, i64, i64 }, ptr %a185 + %t187 = load { ptr, i64, i64 }, ptr %t183 + store { ptr, i64, i64 } %t186, ptr %t183 + store { ptr, i64, i64 } %t187, ptr %a188 + call void @finch.drop.arr_S_gen_Scope(ptr %a188) + %t189 = load ptr, ptr %a1 + call void @finch.gen.pushScope(ptr %t189) + store { ptr, i64, i64 } zeroinitializer, ptr %a190 + %t191 = load ptr, ptr %a1 + %t192 = icmp eq ptr %t191, null + br i1 %t192, label %panic4726, label %ok4727 +panic4726: + call void @finch_panic(ptr @.str.2973, i64 2119, ptr @.str.2974) + unreachable +ok4727: + %t193 = getelementptr inbounds %S.gen.Gen, ptr %t191, i32 0, i32 13 + %t194 = getelementptr inbounds %S.gen.FnSig, ptr %t193, i32 0, i32 2 + %t195 = getelementptr inbounds { ptr, i64, i64 }, ptr %t194, i32 0, i32 1 + %t196 = load i64, ptr %t195 + %t197 = icmp sgt i64 %t196, 0 + br i1 %t197, label %then4728, label %endif4730 +then4728: + %t198 = getelementptr inbounds { ptr, i64, i64 }, ptr %a190, i32 0, i32 1 + %t199 = load i64, ptr %t198 + %t200 = add i64 %t199, 1 + call void @finch_arr_reserve(ptr %a190, i64 %t200, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t201 = load ptr, ptr %a190 + %t202 = getelementptr inbounds { ptr, i64, i64 }, ptr %t201, i64 %t199 + store { ptr, i64, i64 } { ptr @.str.2975, i64 9, i64 0 }, ptr %t202 + store i64 %t200, ptr %t198 + store { ptr, i64, i64 } { ptr @.str.2976, i64 6, i64 0 }, ptr %a203 %t204 = load ptr, ptr %a1 %t205 = icmp eq ptr %t204, null - br i1 %t205, label %panic4505, label %ok4506 -panic4505: - call void @finch_panic(ptr @.str.2891, i64 1971, ptr @.str.2892) + br i1 %t205, label %panic4731, label %ok4732 +panic4731: + call void @finch_panic(ptr @.str.2977, i64 2123, ptr @.str.2978) unreachable -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 - store { ptr, i64, i64 } %t208, ptr %a209 - call void @finch_str_copy(ptr %a210, ptr %a209) - %t211 = load { ptr, i64, i64 }, ptr %a210 - %t212 = insertvalue %S.ast.Type %t203, { ptr, i64, i64 } %t211, 3 - store %S.ast.Type %t212, ptr %a213 - %t214 = load ptr, ptr %a1 - %t215 = icmp eq ptr %t214, null - br i1 %t215, label %panic4507, label %ok4508 -panic4507: - call void @finch_panic(ptr @.str.2893, i64 1972, ptr @.str.2894) +ok4732: + %t206 = getelementptr inbounds %S.gen.Gen, ptr %t204, i32 0, i32 13 + %t207 = getelementptr inbounds %S.gen.FnSig, ptr %t206, i32 0, i32 4 + %t208 = load i1, ptr %t207 + br i1 %t208, label %then4733, label %endif4735 +then4733: + %t209 = load { ptr, i64, i64 }, ptr %a203 + store { ptr, i64, i64 } { ptr @.str.2979, i64 4, i64 0 }, ptr %a203 + store { ptr, i64, i64 } %t209, ptr %a210 + call void @finch_str_drop(ptr %a210) + br label %endif4735 +endif4735: + %t211 = load { ptr, i64, i64 }, ptr %a203 + store { ptr, i64, i64 } %t211, ptr %a212 + call void @finch_str_copy(ptr %a213, ptr %a212) + %t214 = load { ptr, i64, i64 }, ptr %a213 + %t215 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } %t214, 0 + %t216 = load ptr, ptr %a1 + %t217 = icmp eq ptr %t216, null + br i1 %t217, label %panic4736, label %ok4737 +panic4736: + call void @finch_panic(ptr @.str.2980, i64 2126, ptr @.str.2981) unreachable -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 %range4509, label %inrange4510 -range4509: - call void @finch_panic_index(ptr @.str.2895, i64 1972, i64 0, i64 %t218) +ok4737: + %t218 = getelementptr inbounds %S.gen.Gen, ptr %t216, i32 0, i32 13 + %t219 = getelementptr inbounds %S.gen.FnSig, ptr %t218, i32 0, i32 2 + %t220 = load { ptr, i64, i64 }, ptr %t219 + store { ptr, i64, i64 } %t220, ptr %a221 + call void @finch_str_copy(ptr %a222, ptr %a221) + %t223 = load { ptr, i64, i64 }, ptr %a222 + %t224 = insertvalue %S.ast.Type %t215, { ptr, i64, i64 } %t223, 2 + %t225 = load ptr, ptr %a1 + %t226 = icmp eq ptr %t225, null + br i1 %t226, label %panic4738, label %ok4739 +panic4738: + call void @finch_panic(ptr @.str.2982, i64 2126, ptr @.str.2983) unreachable -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.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.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 - call void @finch_arr_reserve(ptr %t222, i64 %t233, i64 ptrtoint (ptr getelementptr (%S.gen.Var, ptr null, i32 1) to i64)) - %t234 = load ptr, ptr %t222 - %t235 = getelementptr inbounds %S.gen.Var, ptr %t234, i64 %t232 - store %S.gen.Var %t231, ptr %t235 - store i64 %t233, ptr %t223 - %t236 = load ptr, ptr %a1 - %t237 = icmp eq ptr %t236, null - br i1 %t237, label %panic4511, label %ok4512 -panic4511: - call void @finch_panic(ptr @.str.2898, i64 1973, ptr @.str.2899) +ok4739: + %t227 = getelementptr inbounds %S.gen.Gen, ptr %t225, i32 0, i32 13 + %t228 = getelementptr inbounds %S.gen.FnSig, ptr %t227, i32 0, i32 3 + %t229 = load { ptr, i64, i64 }, ptr %t228 + store { ptr, i64, i64 } %t229, ptr %a230 + call void @finch_str_copy(ptr %a231, ptr %a230) + %t232 = load { ptr, i64, i64 }, ptr %a231 + %t233 = insertvalue %S.ast.Type %t224, { ptr, i64, i64 } %t232, 3 + store %S.ast.Type %t233, ptr %a234 + %t235 = load ptr, ptr %a1 + %t236 = icmp eq ptr %t235, null + br i1 %t236, label %panic4740, label %ok4741 +panic4740: + call void @finch_panic(ptr @.str.2984, i64 2127, ptr @.str.2985) unreachable -ok4512: - %t238 = getelementptr inbounds %S.gen.Gen, ptr %t236, i32 0, i32 28 - %t239 = load i1, ptr %t238 - 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.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 %panic4516, label %ok4517 -panic4516: - call void @finch_panic(ptr @.str.2902, i64 1978, ptr @.str.2903) +ok4741: + %t237 = getelementptr inbounds %S.gen.Gen, ptr %t235, i32 0, i32 10 + %t238 = load { ptr, i64, i64 }, ptr %t237 + %t239 = extractvalue { ptr, i64, i64 } %t238, 1 + %t240 = icmp uge i64 0, %t239 + br i1 %t240, label %range4742, label %inrange4743 +range4742: + call void @finch_panic_index(ptr @.str.2986, i64 2127, i64 0, i64 %t239) unreachable -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.cond4518 -for.cond4518: - %t250 = load i64, ptr %a249 - %t251 = icmp slt i64 %t250, %t248 - 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 %panic4522, label %ok4523 -panic4522: - call void @finch_panic(ptr @.str.2904, i64 1979, ptr @.str.2905) +inrange4743: + %t241 = extractvalue { ptr, i64, i64 } %t238, 0 + %t242 = getelementptr inbounds %S.gen.Scope, ptr %t241, i64 0 + %t243 = getelementptr inbounds %S.gen.Scope, ptr %t242, i32 0, i32 0 + %t244 = getelementptr inbounds { ptr, i64, i64 }, ptr %t243, i32 0, i32 1 + %t245 = insertvalue %S.gen.Var zeroinitializer, { ptr, i64, i64 } { ptr @.str.2987, i64 4, i64 0 }, 0 + %t246 = load %S.ast.Type, ptr %a234 + store %S.ast.Type %t246, ptr %a247 + call void @finch.copy.S_ast_Type(ptr %a248, ptr %a247) + %t249 = load %S.ast.Type, ptr %a248 + %t250 = insertvalue %S.gen.Var %t245, %S.ast.Type %t249, 1 + %t251 = insertvalue %S.gen.Var %t250, { ptr, i64, i64 } { ptr @.str.2988, i64 5, i64 0 }, 2 + %t252 = insertvalue %S.gen.Var %t251, i1 false, 3 + %t253 = load i64, ptr %t244 + %t254 = add i64 %t253, 1 + call void @finch_arr_reserve(ptr %t243, i64 %t254, i64 ptrtoint (ptr getelementptr (%S.gen.Var, ptr null, i32 1) to i64)) + %t255 = load ptr, ptr %t243 + %t256 = getelementptr inbounds %S.gen.Var, ptr %t255, i64 %t253 + store %S.gen.Var %t252, ptr %t256 + store i64 %t254, ptr %t244 + %t257 = load ptr, ptr %a1 + %t258 = icmp eq ptr %t257, null + br i1 %t258, label %panic4744, label %ok4745 +panic4744: + call void @finch_panic(ptr @.str.2989, i64 2128, ptr @.str.2990) unreachable -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 %range4524, label %inrange4525 -range4524: - call void @finch_panic_index(ptr @.str.2906, i64 1979, i64 %t256, i64 %t258) +ok4745: + %t259 = getelementptr inbounds %S.gen.Gen, ptr %t257, i32 0, i32 29 + %t260 = load i1, ptr %t259 + br i1 %t260, label %then4746, label %endif4748 +then4746: + %t261 = load ptr, ptr %a1 + %t262 = load %S.ast.Node, ptr %a119 + %t263 = load %S.ast.Type, ptr %a234 + call void @finch.gen.dbgVariable(ptr %t261, %S.ast.Node %t262, { ptr, i64, i64 } { ptr @.str.2991, i64 4, i64 0 }, %S.ast.Type %t263, { ptr, i64, i64 } { ptr @.str.2992, i64 5, i64 0 }) + br label %endif4748 +endif4748: + call void @finch.drop.S_ast_Type(ptr %a234) + call void @finch_str_drop(ptr %a203) + br label %endif4730 +endif4730: + %t264 = load ptr, ptr %a1 + %t265 = icmp eq ptr %t264, null + br i1 %t265, label %panic4749, label %ok4750 +panic4749: + call void @finch_panic(ptr @.str.2993, i64 2133, ptr @.str.2994) unreachable -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 - store %S.ast.Type %t262, ptr %a263 - call void @finch.copy.S_ast_Type(ptr %a264, ptr %a263) - %t265 = load %S.ast.Type, ptr %a264 - store %S.ast.Type %t265, ptr %a266 - %t267 = getelementptr inbounds { ptr, i64, i64 }, ptr %a171, i32 0, i32 1 - %t268 = load ptr, ptr %a1 - %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.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 - call void @finch_str_from_int(ptr %a276, i64 %t275) - %t277 = load { ptr, i64, i64 }, ptr %a276 - store { ptr, i64, i64 } %t274, 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 - %t282 = load i64, ptr %t267 - %t283 = add i64 %t282, 1 - call void @finch_arr_reserve(ptr %a171, i64 %t283, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t284 = load ptr, ptr %a171 - %t285 = getelementptr inbounds { ptr, i64, i64 }, ptr %t284, i64 %t282 - store { ptr, i64, i64 } %t281, ptr %t285 - store i64 %t283, ptr %t267 - %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.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 - store { ptr, i64, i64 } %t292, ptr %a293 - %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.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 %panic4529, label %ok4530 -panic4529: - call void @finch_panic(ptr @.str.2909, i64 1982, ptr @.str.2910) +ok4750: + %t266 = getelementptr inbounds %S.gen.Gen, ptr %t264, i32 0, i32 13 + %t267 = getelementptr inbounds %S.gen.FnSig, ptr %t266, i32 0, i32 13 + %t268 = getelementptr inbounds { ptr, i64, i64 }, ptr %t267, i32 0, i32 1 + %t269 = load i64, ptr %t268 + store i64 0, ptr %a270 + br label %for.cond4751 +for.cond4751: + %t271 = load i64, ptr %a270 + %t272 = icmp slt i64 %t271, %t269 + br i1 %t272, label %for.body4752, label %for.end4754 +for.body4752: + %t273 = load ptr, ptr %a1 + %t274 = icmp eq ptr %t273, null + br i1 %t274, label %panic4755, label %ok4756 +panic4755: + call void @finch_panic(ptr @.str.2995, i64 2134, ptr @.str.2996) unreachable -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 %range4531, label %inrange4532 -range4531: - call void @finch_panic_index(ptr @.str.2911, i64 1982, i64 %t301, i64 %t303) +ok4756: + %t275 = getelementptr inbounds %S.gen.Gen, ptr %t273, i32 0, i32 13 + %t276 = getelementptr inbounds %S.gen.FnSig, ptr %t275, i32 0, i32 13 + %t277 = load i64, ptr %a270 + %t278 = load { ptr, i64, i64 }, ptr %t276 + %t279 = extractvalue { ptr, i64, i64 } %t278, 1 + %t280 = icmp uge i64 %t277, %t279 + br i1 %t280, label %range4757, label %inrange4758 +range4757: + call void @finch_panic_index(ptr @.str.2997, i64 2134, i64 %t277, i64 %t279) unreachable -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.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 %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 %panic4537, label %ok4538 -panic4537: - call void @finch_panic(ptr @.str.2912, i64 1985, ptr @.str.2913) - unreachable -ok4538: - %t318 = getelementptr inbounds %S.gen.Gen, ptr %t316, i32 0, i32 37 - store i64 %t315, ptr %t318 +inrange4758: + %t281 = extractvalue { ptr, i64, i64 } %t278, 0 + %t282 = getelementptr inbounds %S.ast.Type, ptr %t281, i64 %t277 + %t283 = load %S.ast.Type, ptr %t282 + store %S.ast.Type %t283, ptr %a284 + call void @finch.copy.S_ast_Type(ptr %a285, ptr %a284) + %t286 = load %S.ast.Type, ptr %a285 + store %S.ast.Type %t286, ptr %a287 + %t288 = getelementptr inbounds { ptr, i64, i64 }, ptr %a190, i32 0, i32 1 + %t289 = load ptr, ptr %a1 + %t290 = load %S.ast.Type, ptr %a287 + %t291 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t289, %S.ast.Type %t290) + store { ptr, i64, i64 } %t291, ptr %a293 + store { ptr, i64, i64 } { ptr @.str.2998, i64 3, i64 0 }, ptr %a294 + call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) + store { ptr, i64, i64 } %t291, ptr %a295 + call void @finch_str_drop(ptr %a295) + %t296 = load { ptr, i64, i64 }, ptr %a292 + %t297 = load i64, ptr %a270 + call void @finch_str_from_int(ptr %a298, i64 %t297) + %t299 = load { ptr, i64, i64 }, ptr %a298 + store { ptr, i64, i64 } %t296, ptr %a301 + store { ptr, i64, i64 } %t299, ptr %a302 + call void @finch_str_concat(ptr %a300, ptr %a301, ptr %a302) + store { ptr, i64, i64 } %t296, ptr %a303 + call void @finch_str_drop(ptr %a303) + store { ptr, i64, i64 } %t299, ptr %a304 + call void @finch_str_drop(ptr %a304) + %t305 = load { ptr, i64, i64 }, ptr %a300 + %t306 = load i64, ptr %t288 + %t307 = add i64 %t306, 1 + call void @finch_arr_reserve(ptr %a190, i64 %t307, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t308 = load ptr, ptr %a190 + %t309 = getelementptr inbounds { ptr, i64, i64 }, ptr %t308, i64 %t306 + store { ptr, i64, i64 } %t305, ptr %t309 + store i64 %t307, ptr %t288 + %t310 = load i64, ptr %a270 + call void @finch_str_from_int(ptr %a311, i64 %t310) + %t312 = load { ptr, i64, i64 }, ptr %a311 + store { ptr, i64, i64 } { ptr @.str.2999, i64 2, i64 0 }, ptr %a314 + store { ptr, i64, i64 } %t312, ptr %a315 + call void @finch_str_concat(ptr %a313, ptr %a314, ptr %a315) + store { ptr, i64, i64 } %t312, ptr %a316 + call void @finch_str_drop(ptr %a316) + %t317 = load { ptr, i64, i64 }, ptr %a313 + store { ptr, i64, i64 } %t317, ptr %a318 %t319 = load ptr, ptr %a1 - %t320 = icmp eq ptr %t319, null - br i1 %t320, label %panic4539, label %ok4540 -panic4539: - call void @finch_panic(ptr @.str.2914, i64 1986, ptr @.str.2915) + %t320 = load %S.ast.Type, ptr %a287 + %t321 = call i1 @finch.gen.owning(ptr %t319, %S.ast.Type %t320) + br label %logic.from4759 +logic.from4759: + br i1 %t321, label %logic.rhs4760, label %logic.end4761 +logic.rhs4760: + %t322 = load ptr, ptr %a1 + %t323 = icmp eq ptr %t322, null + br i1 %t323, label %panic4762, label %ok4763 +panic4762: + call void @finch_panic(ptr @.str.3000, i64 2137, ptr @.str.3001) unreachable -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 %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 %panic4544, label %ok4545 -panic4544: - call void @finch_panic(ptr @.str.2916, i64 1987, ptr @.str.2917) +ok4763: + %t324 = getelementptr inbounds %S.gen.Gen, ptr %t322, i32 0, i32 13 + %t325 = getelementptr inbounds %S.gen.FnSig, ptr %t324, i32 0, i32 15 + %t326 = load i64, ptr %a270 + %t327 = load { ptr, i64, i64 }, ptr %t325 + %t328 = extractvalue { ptr, i64, i64 } %t327, 1 + %t329 = icmp uge i64 %t326, %t328 + br i1 %t329, label %range4764, label %inrange4765 +range4764: + call void @finch_panic_index(ptr @.str.3002, i64 2137, i64 %t326, i64 %t328) unreachable -ok4545: - %t330 = getelementptr inbounds %S.gen.Gen, ptr %t328, i32 0, i32 37 - store i64 %t327, ptr %t330 - 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 %range4546, label %inrange4547 -range4546: - call void @finch_panic_index(ptr @.str.2918, i64 1989, i64 %t333, i64 %t335) +inrange4765: + %t330 = extractvalue { ptr, i64, i64 } %t327, 0 + %t331 = getelementptr inbounds i1, ptr %t330, i64 %t326 + %t332 = load i1, ptr %t331 + %t333 = xor i1 %t332, true + br label %logic.rend4766 +logic.rend4766: + br label %logic.end4761 +logic.end4761: + %t334 = phi i1 [ false, %logic.from4759 ], [ %t333, %logic.rend4766 ] + br i1 %t334, label %then4767, label %endif4769 +then4767: + %t335 = load ptr, ptr %a1 + %t336 = load { ptr, i64, i64 }, ptr %a318 + %t337 = load %S.ast.Type, ptr %a287 + %t338 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t335, { ptr, i64, i64 } %t336, %S.ast.Type %t337) + %t339 = load { ptr, i64, i64 }, ptr %a318 + store { ptr, i64, i64 } %t338, ptr %a318 + store { ptr, i64, i64 } %t339, ptr %a340 + call void @finch_str_drop(ptr %a340) + br label %endif4769 +endif4769: + %t341 = load i64, ptr %a270 + %t342 = add i64 %t341, 1 + %t343 = load ptr, ptr %a1 + %t344 = icmp eq ptr %t343, null + br i1 %t344, label %panic4770, label %ok4771 +panic4770: + call void @finch_panic(ptr @.str.3003, i64 2140, ptr @.str.3004) unreachable -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 %panic4548, label %ok4549 -panic4548: - call void @finch_panic(ptr @.str.2919, i64 1989, ptr @.str.2920) +ok4771: + %t345 = getelementptr inbounds %S.gen.Gen, ptr %t343, i32 0, i32 38 + store i64 %t342, ptr %t345 + %t346 = load ptr, ptr %a1 + %t347 = icmp eq ptr %t346, null + br i1 %t347, label %panic4772, label %ok4773 +panic4772: + call void @finch_panic(ptr @.str.3005, i64 2141, ptr @.str.3006) unreachable -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 %range4550, label %inrange4551 -range4550: - call void @finch_panic_index(ptr @.str.2921, i64 1989, i64 %t344, i64 %t346) +ok4773: + %t348 = getelementptr inbounds %S.gen.Gen, ptr %t346, i32 0, i32 13 + %t349 = getelementptr inbounds %S.gen.FnSig, ptr %t348, i32 0, i32 2 + %t350 = getelementptr inbounds { ptr, i64, i64 }, ptr %t349, i32 0, i32 1 + %t351 = load i64, ptr %t350 + %t352 = icmp sgt i64 %t351, 0 + br i1 %t352, label %then4774, label %endif4776 +then4774: + %t353 = load i64, ptr %a270 + %t354 = add i64 %t353, 2 + %t355 = load ptr, ptr %a1 + %t356 = icmp eq ptr %t355, null + br i1 %t356, label %panic4777, label %ok4778 +panic4777: + call void @finch_panic(ptr @.str.3007, i64 2142, ptr @.str.3008) unreachable -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 - %t351 = load %S.ast.Type, ptr %a266 - %t352 = load { ptr, i64, i64 }, ptr %a293 - %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 %panic4552, label %ok4553 -panic4552: - call void @finch_panic(ptr @.str.2922, i64 1990, ptr @.str.2923) +ok4778: + %t357 = getelementptr inbounds %S.gen.Gen, ptr %t355, i32 0, i32 38 + store i64 %t354, ptr %t357 + br label %endif4776 +endif4776: + %t358 = load ptr, ptr %a1 + %t359 = getelementptr inbounds %S.ast.Node, ptr %a119, i32 0, i32 9 + %t360 = load i64, ptr %a270 + %t361 = load { ptr, i64, i64 }, ptr %t359 + %t362 = extractvalue { ptr, i64, i64 } %t361, 1 + %t363 = icmp uge i64 %t360, %t362 + br i1 %t363, label %range4779, label %inrange4780 +range4779: + call void @finch_panic_index(ptr @.str.3009, i64 2144, i64 %t360, i64 %t362) unreachable -ok4553: - %t356 = getelementptr inbounds %S.gen.Gen, ptr %t354, i32 0, i32 37 - store i64 0, ptr %t356 - br label %for.step4520 -for.step4520: - %t357 = load i64, ptr %a249 - %t358 = add i64 %t357, 1 - store i64 %t358, ptr %a249 - 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 - %t362 = getelementptr inbounds { ptr, i64, i64 }, ptr %t361, i32 0, i32 1 - %t363 = load i64, ptr %t362 - %t364 = sub i64 %t363, 1 - %t365 = load { ptr, i64, i64 }, ptr %t360 - %t366 = extractvalue { ptr, i64, i64 } %t365, 1 - %t367 = icmp uge i64 %t364, %t366 - br i1 %t367, label %range4554, label %inrange4555 -range4554: - call void @finch_panic_index(ptr @.str.2924, i64 1992, i64 %t364, i64 %t366) +inrange4780: + %t364 = extractvalue { ptr, i64, i64 } %t361, 0 + %t365 = getelementptr inbounds %S.ast.Node, ptr %t364, i64 %t360 + %t366 = load %S.ast.Node, ptr %t365 + %t367 = load ptr, ptr %a1 + %t368 = icmp eq ptr %t367, null + br i1 %t368, label %panic4781, label %ok4782 +panic4781: + call void @finch_panic(ptr @.str.3010, i64 2144, ptr @.str.3011) unreachable -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 %panic4556, label %ok4557 -panic4556: - call void @finch_panic(ptr @.str.2925, i64 1993, ptr @.str.2926) +ok4782: + %t369 = getelementptr inbounds %S.gen.Gen, ptr %t367, i32 0, i32 13 + %t370 = getelementptr inbounds %S.gen.FnSig, ptr %t369, i32 0, i32 14 + %t371 = load i64, ptr %a270 + %t372 = load { ptr, i64, i64 }, ptr %t370 + %t373 = extractvalue { ptr, i64, i64 } %t372, 1 + %t374 = icmp uge i64 %t371, %t373 + br i1 %t374, label %range4783, label %inrange4784 +range4783: + call void @finch_panic_index(ptr @.str.3012, i64 2144, i64 %t371, i64 %t373) unreachable -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 %then4558, label %endif4560 -then4558: - %t376 = load ptr, ptr %a1 - %t377 = icmp eq ptr %t376, null - br i1 %t377, label %panic4561, label %ok4562 -panic4561: - call void @finch_panic(ptr @.str.2927, i64 1994, ptr @.str.2928) +inrange4784: + %t375 = extractvalue { ptr, i64, i64 } %t372, 0 + %t376 = getelementptr inbounds { ptr, i64, i64 }, ptr %t375, i64 %t371 + %t377 = load { ptr, i64, i64 }, ptr %t376 + %t378 = load %S.ast.Type, ptr %a287 + %t379 = load { ptr, i64, i64 }, ptr %a318 + %t380 = load ptr, ptr %a1 + %t381 = load %S.ast.Type, ptr %a287 + %t382 = call i1 @finch.gen.owning(ptr %t380, %S.ast.Type %t381) + br label %logic.from4785 +logic.from4785: + br i1 %t382, label %logic.rhs4786, label %logic.end4787 +logic.rhs4786: + %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.3013, i64 2144, ptr @.str.3014) unreachable -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.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 %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.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.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 +ok4789: + %t385 = getelementptr inbounds %S.gen.Gen, ptr %t383, i32 0, i32 13 + %t386 = getelementptr inbounds %S.gen.FnSig, ptr %t385, i32 0, i32 15 + %t387 = load i64, ptr %a270 + %t388 = load { ptr, i64, i64 }, ptr %t386 + %t389 = extractvalue { ptr, i64, i64 } %t388, 1 + %t390 = icmp uge i64 %t387, %t389 + br i1 %t390, label %range4790, label %inrange4791 +range4790: + call void @finch_panic_index(ptr @.str.3015, i64 2144, i64 %t387, i64 %t389) + unreachable +inrange4791: + %t391 = extractvalue { ptr, i64, i64 } %t388, 0 + %t392 = getelementptr inbounds i1, ptr %t391, i64 %t387 + %t393 = load i1, ptr %t392 + %t394 = xor i1 %t393, true + br label %logic.rend4792 +logic.rend4792: + br label %logic.end4787 +logic.end4787: + %t395 = phi i1 [ false, %logic.from4785 ], [ %t394, %logic.rend4792 ] + %t396 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t358, %S.ast.Node %t366, { ptr, i64, i64 } %t377, %S.ast.Type %t378, { ptr, i64, i64 } %t379, i1 false, i1 %t395) + store { ptr, i64, i64 } %t396, ptr %a397 + call void @finch_str_drop(ptr %a397) %t398 = load ptr, ptr %a1 %t399 = icmp eq ptr %t398, null - br i1 %t399, label %panic4566, label %ok4567 -panic4566: - call void @finch_panic(ptr @.str.2932, i64 1995, ptr @.str.2933) + br i1 %t399, label %panic4793, label %ok4794 +panic4793: + call void @finch_panic(ptr @.str.3016, i64 2145, ptr @.str.3017) unreachable -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 - %t403 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t402) - store { ptr, i64, i64 } %t397, 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 - call void @finch.gen.fail(ptr %t386, %S.ast.Node %t387, { ptr, i64, i64 } %t407) - 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 %panic4568, label %ok4569 -panic4568: - call void @finch_panic(ptr @.str.2934, i64 1998, ptr @.str.2935) +ok4794: + %t400 = getelementptr inbounds %S.gen.Gen, ptr %t398, i32 0, i32 38 + store i64 0, ptr %t400 + call void @finch_str_drop(ptr %a318) + call void @finch.drop.S_ast_Type(ptr %a287) + br label %for.step4753 +for.step4753: + %t401 = load i64, ptr %a270 + %t402 = add i64 %t401, 1 + store i64 %t402, ptr %a270 + br label %for.cond4751 +for.end4754: + %t403 = load ptr, ptr %a1 + %t404 = getelementptr inbounds %S.ast.Node, ptr %a119, i32 0, i32 9 + %t405 = getelementptr inbounds %S.ast.Node, ptr %a119, i32 0, i32 9 + %t406 = getelementptr inbounds { ptr, i64, i64 }, ptr %t405, i32 0, i32 1 + %t407 = load i64, ptr %t406 + %t408 = sub i64 %t407, 1 + %t409 = load { ptr, i64, i64 }, ptr %t404 + %t410 = extractvalue { ptr, i64, i64 } %t409, 1 + %t411 = icmp uge i64 %t408, %t410 + br i1 %t411, label %range4795, label %inrange4796 +range4795: + call void @finch_panic_index(ptr @.str.3018, i64 2147, i64 %t408, i64 %t410) unreachable -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 %then4570, label %else4571 -then4570: - %t414 = load ptr, ptr %a1 +inrange4796: + %t412 = extractvalue { ptr, i64, i64 } %t409, 0 + %t413 = getelementptr inbounds %S.ast.Node, ptr %t412, i64 %t408 + %t414 = load %S.ast.Node, ptr %t413 + call void @finch.gen.block(ptr %t403, %S.ast.Node %t414, i1 false) %t415 = load ptr, ptr %a1 - %t416 = load ptr, ptr %a1 - %t417 = icmp eq ptr %t416, null - br i1 %t417, label %panic4573, label %ok4574 -panic4573: - call void @finch_panic(ptr @.str.2937, i64 1999, ptr @.str.2938) + %t416 = icmp eq ptr %t415, null + br i1 %t416, label %panic4797, label %ok4798 +panic4797: + call void @finch_panic(ptr @.str.3019, i64 2148, ptr @.str.3020) unreachable -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.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.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 %endif4572 -else4571: - %t429 = load ptr, ptr %a1 - 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 %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.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 %endif4577 -endif4577: - %t440 = load ptr, ptr %a1 - %t441 = icmp eq ptr %t440, null - br i1 %t441, label %panic4578, label %ok4579 -panic4578: - call void @finch_panic(ptr @.str.2943, i64 2008, ptr @.str.2944) +ok4798: + %t417 = getelementptr inbounds %S.gen.Gen, ptr %t415, i32 0, i32 9 + %t418 = load i1, ptr %t417 + %t419 = xor i1 %t418, true + br i1 %t419, label %then4799, label %endif4801 +then4799: + %t420 = load ptr, ptr %a1 + %t421 = icmp eq ptr %t420, null + br i1 %t421, label %panic4802, label %ok4803 +panic4802: + call void @finch_panic(ptr @.str.3021, i64 2149, ptr @.str.3022) unreachable -ok4579: - %t442 = getelementptr inbounds %S.gen.Gen, ptr %t440, i32 0, i32 34 - store i64 -1, ptr %t442 +ok4803: + %t422 = getelementptr inbounds %S.gen.Gen, ptr %t420, i32 0, i32 13 + %t423 = getelementptr inbounds %S.gen.FnSig, ptr %t422, i32 0, i32 12 + %t424 = getelementptr inbounds %S.ast.Type, ptr %t423, i32 0, i32 0 + %t425 = load { ptr, i64, i64 }, ptr %t424 + store { ptr, i64, i64 } %t425, ptr %a426 + store { ptr, i64, i64 } { ptr @.str.3023, i64 4, i64 0 }, ptr %a427 + %t428 = call i32 @finch_str_eq(ptr %a426, ptr %a427) + %t429 = icmp eq i32 %t428, 0 + br i1 %t429, label %then4804, label %endif4806 +then4804: + %t430 = load ptr, ptr %a1 + %t431 = load %S.ast.Node, ptr %a119 + %t432 = getelementptr inbounds %S.ast.Node, ptr %a119, i32 0, i32 1 + %t433 = load { ptr, i64, i64 }, ptr %t432 + store { ptr, i64, i64 } { ptr @.str.3024, i64 10, 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.3025, i64 38, i64 0 }, ptr %a440 + call void @finch_str_concat(ptr %a438, ptr %a439, ptr %a440) + store { ptr, i64, i64 } %t437, ptr %a441 + call void @finch_str_drop(ptr %a441) + %t442 = load { ptr, i64, i64 }, ptr %a438 %t443 = load ptr, ptr %a1 %t444 = icmp eq ptr %t443, null - br i1 %t444, label %panic4580, label %ok4581 -panic4580: - call void @finch_panic(ptr @.str.2945, i64 2009, ptr @.str.2946) + br i1 %t444, label %panic4807, label %ok4808 +panic4807: + call void @finch_panic(ptr @.str.3026, i64 2150, ptr @.str.3027) unreachable -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 %panic4582, label %ok4583 -panic4582: - call void @finch_panic(ptr @.str.2948, i64 2009, ptr @.str.2949) +ok4808: + %t445 = getelementptr inbounds %S.gen.Gen, ptr %t443, i32 0, i32 13 + %t446 = getelementptr inbounds %S.gen.FnSig, ptr %t445, i32 0, i32 12 + %t447 = load %S.ast.Type, ptr %t446 + %t448 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t447) + store { ptr, i64, i64 } %t442, ptr %a450 + store { ptr, i64, i64 } %t448, ptr %a451 + call void @finch_str_concat(ptr %a449, ptr %a450, ptr %a451) + store { ptr, i64, i64 } %t442, ptr %a452 + call void @finch_str_drop(ptr %a452) + store { ptr, i64, i64 } %t448, ptr %a453 + call void @finch_str_drop(ptr %a453) + %t454 = load { ptr, i64, i64 }, ptr %a449 + call void @finch.gen.fail(ptr %t430, %S.ast.Node %t431, { ptr, i64, i64 } %t454) + store { ptr, i64, i64 } %t454, ptr %a455 + call void @finch_str_drop(ptr %a455) + br label %endif4806 +endif4806: + %t456 = load ptr, ptr %a1 + call void @finch.gen.unwind(ptr %t456, i64 0) + %t457 = load ptr, ptr %a1 + %t458 = icmp eq ptr %t457, null + br i1 %t458, label %panic4809, label %ok4810 +panic4809: + call void @finch_panic(ptr @.str.3028, i64 2153, ptr @.str.3029) unreachable -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.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.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 %panic4584, label %ok4585 -panic4584: - call void @finch_panic(ptr @.str.2951, i64 2009, ptr @.str.2952) +ok4810: + %t459 = getelementptr inbounds %S.gen.Gen, ptr %t457, i32 0, i32 13 + %t460 = getelementptr inbounds %S.gen.FnSig, ptr %t459, i32 0, i32 9 + %t461 = load i1, ptr %t460 + br i1 %t461, label %then4811, label %else4812 +then4811: + %t462 = load ptr, ptr %a1 + %t463 = load ptr, ptr %a1 + %t464 = load ptr, ptr %a1 + %t465 = icmp eq ptr %t464, null + br i1 %t465, label %panic4814, label %ok4815 +panic4814: + call void @finch_panic(ptr @.str.3031, i64 2154, ptr @.str.3032) unreachable -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 - store { ptr, i64, i64 } %t460, ptr %a467 - store { ptr, i64, i64 } %t465, ptr %a468 - 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.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.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 - store { ptr, i64, i64 } %t477, ptr %a480 - 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.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 - store { ptr, i64, i64 } %t485, ptr %a488 +ok4815: + %t466 = getelementptr inbounds %S.gen.Gen, ptr %t464, i32 0, i32 13 + %t467 = load %S.gen.FnSig, ptr %t466 + %t468 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t463, %S.gen.FnSig %t467) + store { ptr, i64, i64 } { ptr @.str.3030, i64 4, i64 0 }, ptr %a470 + store { ptr, i64, i64 } %t468, ptr %a471 + call void @finch_str_concat(ptr %a469, ptr %a470, ptr %a471) + store { ptr, i64, i64 } %t468, ptr %a472 + call void @finch_str_drop(ptr %a472) + %t473 = load { ptr, i64, i64 }, ptr %a469 + store { ptr, i64, i64 } %t473, ptr %a475 + store { ptr, i64, i64 } { ptr @.str.3033, i64 53, i64 0 }, ptr %a476 + call void @finch_str_concat(ptr %a474, ptr %a475, ptr %a476) + store { ptr, i64, i64 } %t473, ptr %a477 + call void @finch_str_drop(ptr %a477) + %t478 = load { ptr, i64, i64 }, ptr %a474 + call void @finch.gen.emit(ptr %t462, { ptr, i64, i64 } %t478) + store { ptr, i64, i64 } %t478, ptr %a479 + call void @finch_str_drop(ptr %a479) + br label %endif4813 +else4812: + %t480 = load ptr, ptr %a1 + call void @finch.gen.emit(ptr %t480, { ptr, i64, i64 } { ptr @.str.3034, i64 8, i64 0 }) + br label %endif4813 +endif4813: + br label %endif4801 +endif4801: + store { ptr, i64, i64 } { ptr @.str.3035, i64 0, i64 0 }, ptr %a481 + %t482 = load i64, ptr %a151 + %t483 = icmp sge i64 %t482, 0 + br i1 %t483, label %then4816, label %endif4818 +then4816: + %t484 = load i64, ptr %a151 + call void @finch_str_from_int(ptr %a485, i64 %t484) + %t486 = load { ptr, i64, i64 }, ptr %a485 + store { ptr, i64, i64 } { ptr @.str.3036, i64 7, 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.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 %panic4586, label %ok4587 -panic4586: - call void @finch_panic(ptr @.str.2957, i64 2010, ptr @.str.2958) + store { ptr, i64, i64 } %t486, ptr %a490 + call void @finch_str_drop(ptr %a490) + %t491 = load { ptr, i64, i64 }, ptr %a487 + %t492 = load { ptr, i64, i64 }, ptr %a481 + store { ptr, i64, i64 } %t491, ptr %a481 + store { ptr, i64, i64 } %t492, ptr %a493 + call void @finch_str_drop(ptr %a493) + br label %endif4818 +endif4818: + %t494 = load ptr, ptr %a1 + %t495 = icmp eq ptr %t494, null + br i1 %t495, label %panic4819, label %ok4820 +panic4819: + call void @finch_panic(ptr @.str.3037, i64 2163, ptr @.str.3038) unreachable -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.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 - store { ptr, i64, i64 } %t501, ptr %a504 - 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.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 %panic4588, label %ok4589 -panic4588: - call void @finch_panic(ptr @.str.2961, i64 2010, ptr @.str.2962) +ok4820: + %t496 = getelementptr inbounds %S.gen.Gen, ptr %t494, i32 0, i32 35 + store i64 -1, ptr %t496 + %t497 = load ptr, ptr %a1 + %t498 = icmp eq ptr %t497, null + br i1 %t498, label %panic4821, label %ok4822 +panic4821: + call void @finch_panic(ptr @.str.3039, i64 2164, ptr @.str.3040) unreachable -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.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 - store { ptr, i64, i64 } %t516, ptr %a519 - 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.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 - %t526 = add i64 %t525, 1 - call void @finch_arr_reserve(ptr %t445, i64 %t526, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t527 = load ptr, ptr %t445 - %t528 = getelementptr inbounds { ptr, i64, i64 }, ptr %t527, i64 %t525 - store { ptr, i64, i64 } %t524, ptr %t528 - store i64 %t526, ptr %t446 +ok4822: + %t499 = getelementptr inbounds %S.gen.Gen, ptr %t497, i32 0, i32 3 + %t500 = getelementptr inbounds { ptr, i64, i64 }, ptr %t499, i32 0, i32 1 + %t501 = load ptr, ptr %a1 + %t502 = load ptr, ptr %a1 + %t503 = icmp eq ptr %t502, null + br i1 %t503, label %panic4823, label %ok4824 +panic4823: + call void @finch_panic(ptr @.str.3042, i64 2164, ptr @.str.3043) + unreachable +ok4824: + %t504 = getelementptr inbounds %S.gen.Gen, ptr %t502, i32 0, i32 13 + %t505 = load %S.gen.FnSig, ptr %t504 + %t506 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t501, %S.gen.FnSig %t505) + store { ptr, i64, i64 } { ptr @.str.3041, i64 16, i64 0 }, ptr %a508 + store { ptr, i64, i64 } %t506, ptr %a509 + call void @finch_str_concat(ptr %a507, ptr %a508, ptr %a509) + store { ptr, i64, i64 } %t506, ptr %a510 + call void @finch_str_drop(ptr %a510) + %t511 = load { ptr, i64, i64 }, ptr %a507 + store { ptr, i64, i64 } %t511, ptr %a513 + store { ptr, i64, i64 } { ptr @.str.3044, i64 1, i64 0 }, ptr %a514 + call void @finch_str_concat(ptr %a512, ptr %a513, ptr %a514) + store { ptr, i64, i64 } %t511, ptr %a515 + call void @finch_str_drop(ptr %a515) + %t516 = load { ptr, i64, i64 }, ptr %a512 + %t517 = load ptr, ptr %a1 + %t518 = icmp eq ptr %t517, null + br i1 %t518, label %panic4825, label %ok4826 +panic4825: + call void @finch_panic(ptr @.str.3045, i64 2164, ptr @.str.3046) + unreachable +ok4826: + %t519 = getelementptr inbounds %S.gen.Gen, ptr %t517, i32 0, i32 13 + %t520 = getelementptr inbounds %S.gen.FnSig, ptr %t519, i32 0, i32 11 + %t521 = load { ptr, i64, i64 }, ptr %t520 + store { ptr, i64, i64 } %t516, ptr %a523 + store { ptr, i64, i64 } %t521, ptr %a524 + call void @finch_str_concat(ptr %a522, ptr %a523, ptr %a524) + store { ptr, i64, i64 } %t516, ptr %a525 + call void @finch_str_drop(ptr %a525) + %t526 = load { ptr, i64, i64 }, ptr %a522 + store { ptr, i64, i64 } %t526, ptr %a528 + store { ptr, i64, i64 } { ptr @.str.3047, i64 1, i64 0 }, ptr %a529 + call void @finch_str_concat(ptr %a527, ptr %a528, ptr %a529) + store { ptr, i64, i64 } %t526, ptr %a530 + call void @finch_str_drop(ptr %a530) + %t531 = load { ptr, i64, i64 }, ptr %a527 + %t532 = getelementptr inbounds { ptr, i64, i64 }, ptr %a190, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.3048, i64 2, i64 0 }, ptr %a533 + call void @finch_str_join(ptr %a534, ptr %a190, ptr %a533) + %t535 = load { ptr, i64, i64 }, ptr %a534 + store { ptr, i64, i64 } %t531, ptr %a537 + store { ptr, i64, i64 } %t535, ptr %a538 + call void @finch_str_concat(ptr %a536, ptr %a537, ptr %a538) + store { ptr, i64, i64 } %t531, ptr %a539 + call void @finch_str_drop(ptr %a539) + store { ptr, i64, i64 } %t535, ptr %a540 + call void @finch_str_drop(ptr %a540) + %t541 = load { ptr, i64, i64 }, ptr %a536 + store { ptr, i64, i64 } %t541, ptr %a543 + store { ptr, i64, i64 } { ptr @.str.3049, i64 1, i64 0 }, ptr %a544 + call void @finch_str_concat(ptr %a542, ptr %a543, ptr %a544) + store { ptr, i64, i64 } %t541, ptr %a545 + call void @finch_str_drop(ptr %a545) + %t546 = load { ptr, i64, i64 }, ptr %a542 + %t547 = load { ptr, i64, i64 }, ptr %a481 + store { ptr, i64, i64 } %t546, ptr %a549 + store { ptr, i64, i64 } %t547, ptr %a550 + call void @finch_str_concat(ptr %a548, ptr %a549, ptr %a550) + store { ptr, i64, i64 } %t546, ptr %a551 + call void @finch_str_drop(ptr %a551) + %t552 = load { ptr, i64, i64 }, ptr %a548 + store { ptr, i64, i64 } %t552, ptr %a554 + store { ptr, i64, i64 } { ptr @.str.3050, i64 10, i64 0 }, ptr %a555 + call void @finch_str_concat(ptr %a553, ptr %a554, ptr %a555) + store { ptr, i64, i64 } %t552, ptr %a556 + call void @finch_str_drop(ptr %a556) + %t557 = load { ptr, i64, i64 }, ptr %a553 + %t558 = load ptr, ptr %a1 + %t559 = icmp eq ptr %t558, null + br i1 %t559, label %panic4827, label %ok4828 +panic4827: + call void @finch_panic(ptr @.str.3051, i64 2165, ptr @.str.3052) + unreachable +ok4828: + %t560 = getelementptr inbounds %S.gen.Gen, ptr %t558, i32 0, i32 5 + %t561 = getelementptr inbounds { ptr, i64, i64 }, ptr %t560, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.3053, i64 1, i64 0 }, ptr %a562 + call void @finch_str_join(ptr %a563, ptr %t560, ptr %a562) + %t564 = load { ptr, i64, i64 }, ptr %a563 + store { ptr, i64, i64 } %t557, ptr %a566 + store { ptr, i64, i64 } %t564, ptr %a567 + call void @finch_str_concat(ptr %a565, ptr %a566, ptr %a567) + store { ptr, i64, i64 } %t557, ptr %a568 + call void @finch_str_drop(ptr %a568) + store { ptr, i64, i64 } %t564, ptr %a569 + call void @finch_str_drop(ptr %a569) + %t570 = load { ptr, i64, i64 }, ptr %a565 + store { ptr, i64, i64 } %t570, ptr %a572 + store { ptr, i64, i64 } { ptr @.str.3054, i64 1, i64 0 }, ptr %a573 + call void @finch_str_concat(ptr %a571, ptr %a572, ptr %a573) + store { ptr, i64, i64 } %t570, ptr %a574 + call void @finch_str_drop(ptr %a574) + %t575 = load { ptr, i64, i64 }, ptr %a571 + %t576 = load ptr, ptr %a1 + %t577 = icmp eq ptr %t576, null + br i1 %t577, label %panic4829, label %ok4830 +panic4829: + call void @finch_panic(ptr @.str.3055, i64 2165, ptr @.str.3056) + unreachable +ok4830: + %t578 = getelementptr inbounds %S.gen.Gen, ptr %t576, i32 0, i32 4 + %t579 = getelementptr inbounds { ptr, i64, i64 }, ptr %t578, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.3057, i64 1, i64 0 }, ptr %a580 + call void @finch_str_join(ptr %a581, ptr %t578, ptr %a580) + %t582 = load { ptr, i64, i64 }, ptr %a581 + store { ptr, i64, i64 } %t575, ptr %a584 + store { ptr, i64, i64 } %t582, ptr %a585 + call void @finch_str_concat(ptr %a583, ptr %a584, ptr %a585) + store { ptr, i64, i64 } %t575, ptr %a586 + call void @finch_str_drop(ptr %a586) + store { ptr, i64, i64 } %t582, ptr %a587 + call void @finch_str_drop(ptr %a587) + %t588 = load { ptr, i64, i64 }, ptr %a583 + store { ptr, i64, i64 } %t588, ptr %a590 + store { ptr, i64, i64 } { ptr @.str.3058, i64 3, i64 0 }, ptr %a591 + call void @finch_str_concat(ptr %a589, ptr %a590, ptr %a591) + store { ptr, i64, i64 } %t588, ptr %a592 + call void @finch_str_drop(ptr %a592) + %t593 = load { ptr, i64, i64 }, ptr %a589 + %t594 = load i64, ptr %t500 + %t595 = add i64 %t594, 1 + call void @finch_arr_reserve(ptr %t499, i64 %t595, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t596 = load ptr, ptr %t499 + %t597 = getelementptr inbounds { ptr, i64, i64 }, ptr %t596, i64 %t594 + store { ptr, i64, i64 } %t593, ptr %t597 + store i64 %t595, ptr %t500 + call void @finch_str_drop(ptr %a481) + call void @finch.drop.arr_str(ptr %a190) + call void @finch.drop.arr_S_gen_Scope(ptr %a179) + call void @finch.drop.arr_str(ptr %a120) + call void @finch.drop.S_ast_Node(ptr %a119) ret void } @@ -42174,59 +49147,59 @@ entry: store %S.ast.Node %p1, ptr %a2 store i1 %p2, ptr %a3 %t4 = load i1, ptr %a3 - br i1 %t4, label %then4590, label %endif4592 -then4590: + br i1 %t4, label %then4831, label %endif4833 +then4831: %t5 = load ptr, ptr %a1 call void @finch.gen.pushScope(ptr %t5) - br label %endif4592 -endif4592: + br label %endif4833 +endif4833: %t6 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 store i64 0, ptr %a7 - br label %each.cond4593 -each.cond4593: + br label %each.cond4834 +each.cond4834: %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.body4594, label %each.end4596 -each.body4594: + br i1 %t11, label %each.body4835, label %each.end4837 +each.body4835: %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 %panic4597, label %ok4598 -panic4597: - call void @finch_panic(ptr @.str.2965, i64 2020, ptr @.str.2966) + br i1 %t17, label %panic4838, label %ok4839 +panic4838: + call void @finch_panic(ptr @.str.3059, i64 2175, ptr @.str.3060) unreachable -ok4598: +ok4839: %t18 = getelementptr inbounds %S.gen.Gen, ptr %t16, i32 0, i32 9 %t19 = load i1, ptr %t18 - br i1 %t19, label %then4599, label %endif4601 -then4599: + br i1 %t19, label %then4840, label %endif4842 +then4840: %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.2967, i64 66, i64 0 }) - br label %endif4601 -endif4601: + call void @finch.gen.fail(ptr %t20, %S.ast.Node %t21, { ptr, i64, i64 } { ptr @.str.3061, i64 66, i64 0 }) + br label %endif4842 +endif4842: %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.step4595 -each.step4595: + br label %each.step4836 +each.step4836: %t24 = load i64, ptr %a7 %t25 = add i64 %t24, 1 store i64 %t25, ptr %a7 - br label %each.cond4593 -each.end4596: + br label %each.cond4834 +each.end4837: %t26 = load i1, ptr %a3 - br i1 %t26, label %then4602, label %endif4604 -then4602: + br i1 %t26, label %then4843, label %endif4845 +then4843: %t27 = load ptr, ptr %a1 call void @finch.gen.endScope(ptr %t27) - br label %endif4604 -endif4604: + br label %endif4845 +endif4845: ret void } @@ -42244,6 +49217,16 @@ entry: ret void } +define internal void @finch.drop.S_gen_Loop(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.gen.Loop, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.gen.Loop, ptr %a, i32 0, i32 1 + call void @finch_str_drop(ptr %t2) + ret void +} + define internal void @finch.gen.stmt(ptr %p0, %S.ast.Node %p1) { entry: %a1 = alloca ptr, align 16 @@ -42261,64 +49244,70 @@ entry: %a42 = alloca { ptr, i64, i64 }, align 16 %a53 = alloca { ptr, i64, i64 }, align 16 %a54 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca i64, align 16 - %a155 = alloca %S.ast.Node, align 16 - %a156 = alloca %S.ast.Node, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a188 = 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 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca %S.gen.Loop, align 16 - %a233 = alloca %S.gen.Loop, align 16 - %a235 = alloca %S.gen.Loop, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a241 = 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 + %a67 = alloca %S.gen.Val, align 16 + %a78 = alloca %S.gen.Val, align 16 + %a80 = alloca { ptr, i64, i64 }, align 16 + %a81 = alloca { ptr, i64, i64 }, align 16 + %a87 = alloca %S.gen.Val, align 16 + %a89 = alloca { ptr, i64, i64 }, align 16 + %a90 = alloca { ptr, i64, i64 }, align 16 + %a96 = alloca { ptr, i64, i64 }, align 16 + %a97 = alloca { ptr, i64, i64 }, align 16 + %a103 = alloca { ptr, i64, i64 }, align 16 + %a104 = alloca { ptr, i64, i64 }, align 16 + %a110 = alloca { ptr, i64, i64 }, align 16 + %a111 = alloca { ptr, i64, i64 }, align 16 + %a117 = alloca { ptr, i64, i64 }, align 16 + %a118 = alloca { ptr, i64, i64 }, align 16 + %a124 = alloca { ptr, i64, i64 }, align 16 + %a125 = alloca { ptr, i64, i64 }, align 16 + %a141 = alloca i64, align 16 + %a189 = alloca %S.ast.Node, align 16 + %a190 = alloca %S.ast.Node, align 16 + %a216 = alloca { ptr, i64, i64 }, align 16 + %a217 = alloca { ptr, i64, i64 }, align 16 + %a221 = alloca { ptr, i64, i64 }, align 16 + %a222 = 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 + %a238 = alloca { ptr, i64, i64 }, align 16 + %a248 = alloca { ptr, i64, i64 }, align 16 + %a249 = alloca { ptr, i64, i64 }, align 16 + %a250 = alloca { ptr, i64, i64 }, align 16 + %a252 = alloca { ptr, i64, i64 }, align 16 + %a268 = alloca %S.gen.Loop, align 16 + %a269 = alloca %S.gen.Loop, align 16 + %a271 = alloca %S.gen.Loop, align 16 + %a279 = alloca { ptr, i64, i64 }, align 16 + %a280 = 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 + %a296 = 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 11 %t4 = load i64, ptr %t3 %t5 = load ptr, ptr %a1 %t6 = icmp eq ptr %t5, null - br i1 %t6, label %panic4605, label %ok4606 -panic4605: - call void @finch_panic(ptr @.str.2968, i64 2031, ptr @.str.2969) + br i1 %t6, label %panic4846, label %ok4847 +panic4846: + call void @finch_panic(ptr @.str.3062, i64 2186, ptr @.str.3063) unreachable -ok4606: - %t7 = getelementptr inbounds %S.gen.Gen, ptr %t5, i32 0, i32 35 +ok4847: + %t7 = getelementptr inbounds %S.gen.Gen, ptr %t5, i32 0, i32 36 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 %panic4607, label %ok4608 -panic4607: - call void @finch_panic(ptr @.str.2970, i64 2032, ptr @.str.2971) + br i1 %t11, label %panic4848, label %ok4849 +panic4848: + call void @finch_panic(ptr @.str.3064, i64 2187, ptr @.str.3065) unreachable -ok4608: - %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 36 +ok4849: + %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 37 store i64 %t9, ptr %t12 %t13 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 %t14 = load { ptr, i64, i64 }, ptr %t13 @@ -42328,447 +49317,521 @@ ok4608: 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.2972, i64 5, i64 0 }, ptr %a21 + store { ptr, i64, i64 } { ptr @.str.3066, 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 %then4609, label %else4610 -then4609: + br i1 %t23, label %then4850, label %else4851 +then4850: %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 %endif4611 -else4610: + br label %endif4852 +else4851: %t26 = load { ptr, i64, i64 }, ptr %a18 store { ptr, i64, i64 } %t26, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.2973, i64 4, i64 0 }, ptr %a28 + store { ptr, i64, i64 } { ptr @.str.3067, 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 %then4612, label %else4613 -then4612: + br i1 %t30, label %then4853, label %else4854 +then4853: %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 %endif4614 -else4613: + br label %endif4855 +else4854: %t33 = load { ptr, i64, i64 }, ptr %a18 store { ptr, i64, i64 } %t33, ptr %a34 - store { ptr, i64, i64 } { ptr @.str.2974, i64 6, i64 0 }, ptr %a35 + store { ptr, i64, i64 } { ptr @.str.3068, 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 %then4615, label %else4616 -then4615: + br i1 %t37, label %then4856, label %else4857 +then4856: %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 %endif4617 -else4616: + br label %endif4858 +else4857: %t40 = load { ptr, i64, i64 }, ptr %a18 store { ptr, i64, i64 } %t40, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.2975, i64 4, i64 0 }, ptr %a42 + store { ptr, i64, i64 } { ptr @.str.3069, 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 %then4618, label %else4619 -then4618: + br i1 %t44, label %then4859, label %else4860 +then4859: %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 %range4621, label %inrange4622 -range4621: - call void @finch_panic_index(ptr @.str.2976, i64 2041, i64 0, i64 %t47) + br i1 %t48, label %range4862, label %inrange4863 +range4862: + call void @finch_panic_index(ptr @.str.3070, i64 2196, i64 0, i64 %t47) unreachable -inrange4622: +inrange4863: %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.2977, i64 2, i64 0 }, ptr %a54 + store { ptr, i64, i64 } { ptr @.str.3071, 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 %then4623, label %else4624 -then4623: + br i1 %t56, label %then4864, label %else4865 +then4864: %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 %range4626, label %inrange4627 -range4626: - call void @finch_panic_index(ptr @.str.2978, i64 2042, i64 0, i64 %t60) + %t58 = load ptr, ptr %a1 + %t59 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t60 = load { ptr, i64, i64 }, ptr %t59 + %t61 = extractvalue { ptr, i64, i64 } %t60, 1 + %t62 = icmp uge i64 0, %t61 + br i1 %t62, label %range4867, label %inrange4868 +range4867: + call void @finch_panic_index(ptr @.str.3072, i64 2197, i64 0, i64 %t61) unreachable -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 %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 %range4628, label %inrange4629 -range4628: - call void @finch_panic_index(ptr @.str.2979, i64 2044, i64 0, i64 %t69) +inrange4868: + %t63 = extractvalue { ptr, i64, i64 } %t60, 0 + %t64 = getelementptr inbounds %S.ast.Node, ptr %t63, i64 0 + %t65 = load %S.ast.Node, ptr %t64 + %t66 = call %S.gen.Val @finch.gen.orElse(ptr %t58, %S.ast.Node %t65, i1 true) + call void @finch.gen.release(ptr %t57, %S.gen.Val %t66) + store %S.gen.Val %t66, ptr %a67 + call void @finch.drop.S_gen_Val(ptr %a67) + br label %endif4866 +else4865: + %t68 = load ptr, ptr %a1 + %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 0, %t72 + br i1 %t73, label %range4869, label %inrange4870 +range4869: + call void @finch_panic_index(ptr @.str.3073, i64 2199, i64 0, i64 %t72) unreachable -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 %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.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 %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 %endif4632 -else4631: - %t83 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t83, ptr %a84 - 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 %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 %endif4635 -else4634: - %t90 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t90, ptr %a91 - 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 %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 %endif4638 -else4637: - %t97 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t97, ptr %a98 - 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 %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 %endif4641 -else4640: - %t104 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t104, ptr %a105 - 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 %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 %endif4644 -else4643: - %t111 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t111, ptr %a112 - 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 %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 %endif4647 -else4646: - %t118 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t118, ptr %a119 - 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 %then4648, label %else4649 -then4648: - %t123 = load ptr, ptr %a1 - %t124 = icmp eq ptr %t123, null - br i1 %t124, label %panic4651, label %ok4652 -panic4651: - call void @finch_panic(ptr @.str.2987, i64 2059, ptr @.str.2988) - unreachable -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 %then4653, label %endif4655 -then4653: +inrange4870: + %t74 = extractvalue { ptr, i64, i64 } %t71, 0 + %t75 = getelementptr inbounds %S.ast.Node, ptr %t74, i64 0 + %t76 = load %S.ast.Node, ptr %t75 + %t77 = call %S.gen.Val @finch.gen.expr(ptr %t69, %S.ast.Node %t76) + call void @finch.gen.release(ptr %t68, %S.gen.Val %t77) + store %S.gen.Val %t77, ptr %a78 + call void @finch.drop.S_gen_Val(ptr %a78) + br label %endif4866 +endif4866: + br label %endif4861 +else4860: + %t79 = load { ptr, i64, i64 }, ptr %a18 + store { ptr, i64, i64 } %t79, ptr %a80 + store { ptr, i64, i64 } { ptr @.str.3074, i64 5, i64 0 }, ptr %a81 + %t82 = call i32 @finch_str_eq(ptr %a80, ptr %a81) + %t83 = icmp ne i32 %t82, 0 + br i1 %t83, label %then4871, label %else4872 +then4871: + %t84 = load ptr, ptr %a1 + %t85 = load %S.ast.Node, ptr %a2 + %t86 = call %S.gen.Val @finch.gen.matchGen(ptr %t84, %S.ast.Node %t85, i1 false) + store %S.gen.Val %t86, ptr %a87 + call void @finch.drop.S_gen_Val(ptr %a87) + br label %endif4873 +else4872: + %t88 = load { ptr, i64, i64 }, ptr %a18 + store { ptr, i64, i64 } %t88, ptr %a89 + store { ptr, i64, i64 } { ptr @.str.3075, i64 2, i64 0 }, ptr %a90 + %t91 = call i32 @finch_str_eq(ptr %a89, ptr %a90) + %t92 = icmp ne i32 %t91, 0 + br i1 %t92, label %then4874, label %else4875 +then4874: + %t93 = load ptr, ptr %a1 + %t94 = load %S.ast.Node, ptr %a2 + call void @finch.gen.ifStmt(ptr %t93, %S.ast.Node %t94) + br label %endif4876 +else4875: + %t95 = load { ptr, i64, i64 }, ptr %a18 + store { ptr, i64, i64 } %t95, ptr %a96 + store { ptr, i64, i64 } { ptr @.str.3076, i64 5, i64 0 }, ptr %a97 + %t98 = call i32 @finch_str_eq(ptr %a96, ptr %a97) + %t99 = icmp ne i32 %t98, 0 + br i1 %t99, label %then4877, label %else4878 +then4877: + %t100 = load ptr, ptr %a1 + %t101 = load %S.ast.Node, ptr %a2 + call void @finch.gen.whileStmt(ptr %t100, %S.ast.Node %t101) + br label %endif4879 +else4878: + %t102 = load { ptr, i64, i64 }, ptr %a18 + store { ptr, i64, i64 } %t102, ptr %a103 + store { ptr, i64, i64 } { ptr @.str.3077, 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 %then4880, label %else4881 +then4880: + %t107 = load ptr, ptr %a1 + %t108 = load %S.ast.Node, ptr %a2 + call void @finch.gen.forStmt(ptr %t107, %S.ast.Node %t108) + br label %endif4882 +else4881: + %t109 = load { ptr, i64, i64 }, ptr %a18 + store { ptr, i64, i64 } %t109, ptr %a110 + store { ptr, i64, i64 } { ptr @.str.3078, 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 %then4883, label %else4884 +then4883: + %t114 = load ptr, ptr %a1 + %t115 = load %S.ast.Node, ptr %a2 + call void @finch.gen.eachStmt(ptr %t114, %S.ast.Node %t115) + br label %endif4885 +else4884: + %t116 = load { ptr, i64, i64 }, ptr %a18 + store { ptr, i64, i64 } %t116, ptr %a117 + store { ptr, i64, i64 } { ptr @.str.3079, 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 %then4886, label %else4887 +then4886: + %t121 = load ptr, ptr %a1 + %t122 = load %S.ast.Node, ptr %a2 + call void @finch.gen.returnStmt(ptr %t121, %S.ast.Node %t122) + br label %endif4888 +else4887: + %t123 = load { ptr, i64, i64 }, ptr %a18 + store { ptr, i64, i64 } %t123, ptr %a124 + store { ptr, i64, i64 } { ptr @.str.3080, i64 5, i64 0 }, ptr %a125 + %t126 = call i32 @finch_str_eq(ptr %a124, ptr %a125) + %t127 = icmp ne i32 %t126, 0 + br i1 %t127, label %then4889, label %else4890 +then4889: %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.2989, i64 33, i64 0 }) - br label %endif4655 -endif4655: - %t130 = load ptr, ptr %a1 - %t131 = icmp eq ptr %t130, null - br i1 %t131, label %panic4656, label %ok4657 -panic4656: - call void @finch_panic(ptr @.str.2990, i64 2062, ptr @.str.2991) + %t129 = icmp eq ptr %t128, null + br i1 %t129, label %panic4892, label %ok4893 +panic4892: + call void @finch_panic(ptr @.str.3081, i64 2214, ptr @.str.3082) unreachable -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 - %t135 = sub i64 %t134, 1 - store i64 %t135, ptr %a136 - %t137 = load ptr, ptr %a1 - %t138 = icmp eq ptr %t137, null - br i1 %t138, label %panic4658, label %ok4659 -panic4658: - call void @finch_panic(ptr @.str.2992, i64 2063, ptr @.str.2993) +ok4893: + %t130 = getelementptr inbounds %S.gen.Gen, ptr %t128, i32 0, i32 45 + %t131 = load i64, ptr %t130 + %t132 = icmp sgt i64 %t131, 0 + br i1 %t132, label %then4894, label %endif4896 +then4894: + %t133 = load ptr, ptr %a1 + %t134 = load %S.ast.Node, ptr %a2 + call void @finch.gen.fail(ptr %t133, %S.ast.Node %t134, { ptr, i64, i64 } { ptr @.str.3083, i64 33, i64 0 }) + br label %endif4896 +endif4896: + %t135 = load ptr, ptr %a1 + %t136 = icmp eq ptr %t135, null + br i1 %t136, label %panic4897, label %ok4898 +panic4897: + call void @finch_panic(ptr @.str.3084, i64 2217, ptr @.str.3085) unreachable -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 %range4660, label %inrange4661 -range4660: - call void @finch_panic_index(ptr @.str.2994, i64 2063, i64 %t140, i64 %t142) +ok4898: + %t137 = getelementptr inbounds %S.gen.Gen, ptr %t135, i32 0, i32 10 + %t138 = getelementptr inbounds { ptr, i64, i64 }, ptr %t137, i32 0, i32 1 + %t139 = load i64, ptr %t138 + %t140 = sub i64 %t139, 1 + store i64 %t140, ptr %a141 + %t142 = load ptr, ptr %a1 + %t143 = icmp eq ptr %t142, null + br i1 %t143, label %panic4899, label %ok4900 +panic4899: + call void @finch_panic(ptr @.str.3086, i64 2218, ptr @.str.3087) unreachable -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 - %t147 = getelementptr inbounds { ptr, i64, i64 }, ptr %t146, i32 0, i32 1 - %t148 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t149 = load { ptr, i64, i64 }, ptr %t148 - %t150 = extractvalue { ptr, i64, i64 } %t149, 1 - %t151 = icmp uge i64 0, %t150 - br i1 %t151, label %range4662, label %inrange4663 -range4662: - call void @finch_panic_index(ptr @.str.2995, i64 2063, i64 0, i64 %t150) +ok4900: + %t144 = getelementptr inbounds %S.gen.Gen, ptr %t142, i32 0, i32 10 + %t145 = load i64, ptr %a141 + %t146 = load { ptr, i64, i64 }, ptr %t144 + %t147 = extractvalue { ptr, i64, i64 } %t146, 1 + %t148 = icmp uge i64 %t145, %t147 + br i1 %t148, label %range4901, label %inrange4902 +range4901: + call void @finch_panic_index(ptr @.str.3088, i64 2218, i64 %t145, i64 %t147) unreachable -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 - store %S.ast.Node %t154, ptr %a155 - call void @finch.copy.S_ast_Node(ptr %a156, ptr %a155) - %t157 = load %S.ast.Node, ptr %a156 - %t158 = load i64, ptr %t147 - %t159 = add i64 %t158, 1 - call void @finch_arr_reserve(ptr %t146, i64 %t159, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t160 = load ptr, ptr %t146 - %t161 = getelementptr inbounds %S.ast.Node, ptr %t160, i64 %t158 - store %S.ast.Node %t157, ptr %t161 - store i64 %t159, ptr %t147 - %t162 = load ptr, ptr %a1 - %t163 = icmp eq ptr %t162, null - br i1 %t163, label %panic4664, label %ok4665 -panic4664: - call void @finch_panic(ptr @.str.2996, i64 2064, ptr @.str.2997) +inrange4902: + %t149 = extractvalue { ptr, i64, i64 } %t146, 0 + %t150 = getelementptr inbounds %S.gen.Scope, ptr %t149, i64 %t145 + %t151 = getelementptr inbounds %S.gen.Scope, ptr %t150, i32 0, i32 3 + %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %t151, i32 0, i32 1 + %t153 = insertvalue %S.gen.Cleanup zeroinitializer, i1 true, 0 + %t154 = load ptr, ptr %a1 + %t155 = icmp eq ptr %t154, null + br i1 %t155, label %panic4903, label %ok4904 +panic4903: + call void @finch_panic(ptr @.str.3089, i64 2218, ptr @.str.3090) unreachable -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 %range4666, label %inrange4667 -range4666: - call void @finch_panic_index(ptr @.str.2998, i64 2064, i64 %t165, i64 %t167) +ok4904: + %t156 = getelementptr inbounds %S.gen.Gen, ptr %t154, i32 0, i32 10 + %t157 = load i64, ptr %a141 + %t158 = load { ptr, i64, i64 }, ptr %t156 + %t159 = extractvalue { ptr, i64, i64 } %t158, 1 + %t160 = icmp uge i64 %t157, %t159 + br i1 %t160, label %range4905, label %inrange4906 +range4905: + call void @finch_panic_index(ptr @.str.3091, i64 2218, i64 %t157, i64 %t159) unreachable -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 %panic4668, label %ok4669 -panic4668: - call void @finch_panic(ptr @.str.2999, i64 2064, ptr @.str.3000) +inrange4906: + %t161 = extractvalue { ptr, i64, i64 } %t158, 0 + %t162 = getelementptr inbounds %S.gen.Scope, ptr %t161, i64 %t157 + %t163 = getelementptr inbounds %S.gen.Scope, ptr %t162, i32 0, i32 1 + %t164 = getelementptr inbounds { ptr, i64, i64 }, ptr %t163, i32 0, i32 1 + %t165 = load i64, ptr %t164 + %t166 = insertvalue %S.gen.Cleanup %t153, i64 %t165, 1 + %t167 = load i64, ptr %t152 + %t168 = add i64 %t167, 1 + call void @finch_arr_reserve(ptr %t151, i64 %t168, i64 ptrtoint (ptr getelementptr (%S.gen.Cleanup, ptr null, i32 1) to i64)) + %t169 = load ptr, ptr %t151 + %t170 = getelementptr inbounds %S.gen.Cleanup, ptr %t169, i64 %t167 + store %S.gen.Cleanup %t166, ptr %t170 + store i64 %t168, ptr %t152 + %t171 = load ptr, ptr %a1 + %t172 = icmp eq ptr %t171, null + br i1 %t172, label %panic4907, label %ok4908 +panic4907: + call void @finch_panic(ptr @.str.3092, i64 2219, ptr @.str.3093) unreachable -ok4669: - %t175 = getelementptr inbounds %S.gen.Gen, ptr %t173, i32 0, i32 23 - %t176 = load i64, ptr %t175 - %t177 = load i64, ptr %t172 - %t178 = add i64 %t177, 1 - call void @finch_arr_reserve(ptr %t171, i64 %t178, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t179 = load ptr, ptr %t171 - %t180 = getelementptr inbounds i64, ptr %t179, i64 %t177 - store i64 %t176, ptr %t180 - store i64 %t178, ptr %t172 - br label %endif4650 -else4649: - %t181 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t181, ptr %a182 - 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.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.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.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 %panic4677, label %ok4678 -panic4677: - call void @finch_panic(ptr @.str.3003, i64 2066, ptr @.str.3004) +ok4908: + %t173 = getelementptr inbounds %S.gen.Gen, ptr %t171, i32 0, i32 10 + %t174 = load i64, ptr %a141 + %t175 = load { ptr, i64, i64 }, ptr %t173 + %t176 = extractvalue { ptr, i64, i64 } %t175, 1 + %t177 = icmp uge i64 %t174, %t176 + br i1 %t177, label %range4909, label %inrange4910 +range4909: + call void @finch_panic_index(ptr @.str.3094, i64 2219, i64 %t174, i64 %t176) unreachable -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 %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.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 %endif4681 -endif4681: - %t204 = load ptr, ptr %a1 - %t205 = icmp eq ptr %t204, null - br i1 %t205, label %panic4682, label %ok4683 -panic4682: - call void @finch_panic(ptr @.str.3006, i64 2069, ptr @.str.3007) +inrange4910: + %t178 = extractvalue { ptr, i64, i64 } %t175, 0 + %t179 = getelementptr inbounds %S.gen.Scope, ptr %t178, i64 %t174 + %t180 = getelementptr inbounds %S.gen.Scope, ptr %t179, i32 0, i32 1 + %t181 = getelementptr inbounds { ptr, i64, i64 }, ptr %t180, i32 0, i32 1 + %t182 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t183 = load { ptr, i64, i64 }, ptr %t182 + %t184 = extractvalue { ptr, i64, i64 } %t183, 1 + %t185 = icmp uge i64 0, %t184 + br i1 %t185, label %range4911, label %inrange4912 +range4911: + call void @finch_panic_index(ptr @.str.3095, i64 2219, i64 0, i64 %t184) unreachable -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 %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.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 %endif4686 -endif4686: - %t217 = load ptr, ptr %a1 - %t218 = icmp eq ptr %t217, null - br i1 %t218, label %panic4687, label %ok4688 -panic4687: - call void @finch_panic(ptr @.str.3009, i64 2072, ptr @.str.3010) +inrange4912: + %t186 = extractvalue { ptr, i64, i64 } %t183, 0 + %t187 = getelementptr inbounds %S.ast.Node, ptr %t186, i64 0 + %t188 = load %S.ast.Node, ptr %t187 + store %S.ast.Node %t188, ptr %a189 + call void @finch.copy.S_ast_Node(ptr %a190, ptr %a189) + %t191 = load %S.ast.Node, ptr %a190 + %t192 = load i64, ptr %t181 + %t193 = add i64 %t192, 1 + call void @finch_arr_reserve(ptr %t180, i64 %t193, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t194 = load ptr, ptr %t180 + %t195 = getelementptr inbounds %S.ast.Node, ptr %t194, i64 %t192 + store %S.ast.Node %t191, ptr %t195 + store i64 %t193, ptr %t181 + %t196 = load ptr, ptr %a1 + %t197 = icmp eq ptr %t196, null + br i1 %t197, label %panic4913, label %ok4914 +panic4913: + call void @finch_panic(ptr @.str.3096, i64 2220, ptr @.str.3097) unreachable -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 %panic4689, label %ok4690 -panic4689: - call void @finch_panic(ptr @.str.3011, i64 2072, ptr @.str.3012) +ok4914: + %t198 = getelementptr inbounds %S.gen.Gen, ptr %t196, i32 0, i32 10 + %t199 = load i64, ptr %a141 + %t200 = load { ptr, i64, i64 }, ptr %t198 + %t201 = extractvalue { ptr, i64, i64 } %t200, 1 + %t202 = icmp uge i64 %t199, %t201 + br i1 %t202, label %range4915, label %inrange4916 +range4915: + call void @finch_panic_index(ptr @.str.3098, i64 2220, i64 %t199, i64 %t201) unreachable -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 - %t225 = sub i64 %t224, 1 - %t226 = load { ptr, i64, i64 }, ptr %t219 - %t227 = extractvalue { ptr, i64, i64 } %t226, 1 - %t228 = icmp uge i64 %t225, %t227 - br i1 %t228, label %range4691, label %inrange4692 -range4691: - call void @finch_panic_index(ptr @.str.3013, i64 2072, i64 %t225, i64 %t227) +inrange4916: + %t203 = extractvalue { ptr, i64, i64 } %t200, 0 + %t204 = getelementptr inbounds %S.gen.Scope, ptr %t203, i64 %t199 + %t205 = getelementptr inbounds %S.gen.Scope, ptr %t204, i32 0, i32 2 + %t206 = getelementptr inbounds { ptr, i64, i64 }, ptr %t205, i32 0, i32 1 + %t207 = load ptr, ptr %a1 + %t208 = icmp eq ptr %t207, null + br i1 %t208, label %panic4917, label %ok4918 +panic4917: + call void @finch_panic(ptr @.str.3099, i64 2220, ptr @.str.3100) unreachable -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 - store %S.gen.Loop %t231, ptr %a232 - call void @finch.copy.S_gen_Loop(ptr %a233, ptr %a232) - %t234 = load %S.gen.Loop, ptr %a233 - store %S.gen.Loop %t234, ptr %a235 - %t236 = load ptr, ptr %a1 - %t237 = getelementptr inbounds %S.gen.Loop, ptr %a235, i32 0, i32 2 - %t238 = load i64, ptr %t237 - 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.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 %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 %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 %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.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 %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: +ok4918: + %t209 = getelementptr inbounds %S.gen.Gen, ptr %t207, i32 0, i32 24 + %t210 = load i64, ptr %t209 + %t211 = load i64, ptr %t206 + %t212 = add i64 %t211, 1 + call void @finch_arr_reserve(ptr %t205, i64 %t212, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) + %t213 = load ptr, ptr %t205 + %t214 = getelementptr inbounds i64, ptr %t213, i64 %t211 + store i64 %t210, ptr %t214 + store i64 %t212, ptr %t206 + br label %endif4891 +else4890: + %t215 = load { ptr, i64, i64 }, ptr %a18 + store { ptr, i64, i64 } %t215, ptr %a216 + store { ptr, i64, i64 } { ptr @.str.3101, i64 5, i64 0 }, ptr %a217 + %t218 = call i32 @finch_str_eq(ptr %a216, ptr %a217) + %t219 = icmp ne i32 %t218, 0 + br label %logic.from4919 +logic.from4919: + br i1 %t219, label %logic.end4921, label %logic.rhs4920 +logic.rhs4920: + %t220 = load { ptr, i64, i64 }, ptr %a18 + store { ptr, i64, i64 } %t220, ptr %a221 + store { ptr, i64, i64 } { ptr @.str.3102, i64 8, i64 0 }, ptr %a222 + %t223 = call i32 @finch_str_eq(ptr %a221, ptr %a222) + %t224 = icmp ne i32 %t223, 0 + br label %logic.rend4922 +logic.rend4922: + br label %logic.end4921 +logic.end4921: + %t225 = phi i1 [ true, %logic.from4919 ], [ %t224, %logic.rend4922 ] + br i1 %t225, label %then4923, label %else4924 +then4923: + %t226 = load ptr, ptr %a1 + %t227 = icmp eq ptr %t226, null + br i1 %t227, label %panic4926, label %ok4927 +panic4926: + call void @finch_panic(ptr @.str.3103, i64 2222, ptr @.str.3104) + unreachable +ok4927: + %t228 = getelementptr inbounds %S.gen.Gen, ptr %t226, i32 0, i32 45 + %t229 = load i64, ptr %t228 + %t230 = icmp sgt i64 %t229, 0 + br i1 %t230, label %then4928, label %endif4930 +then4928: + %t231 = load ptr, ptr %a1 + %t232 = load %S.ast.Node, ptr %a2 + %t233 = load { ptr, i64, i64 }, ptr %a18 + store { ptr, i64, i64 } %t233, ptr %a235 + store { ptr, i64, i64 } { ptr @.str.3105, i64 27, i64 0 }, ptr %a236 + call void @finch_str_concat(ptr %a234, ptr %a235, ptr %a236) + %t237 = load { ptr, i64, i64 }, ptr %a234 + call void @finch.gen.fail(ptr %t231, %S.ast.Node %t232, { ptr, i64, i64 } %t237) + store { ptr, i64, i64 } %t237, ptr %a238 + call void @finch_str_drop(ptr %a238) + br label %endif4930 +endif4930: + %t239 = load ptr, ptr %a1 + %t240 = icmp eq ptr %t239, null + br i1 %t240, label %panic4931, label %ok4932 +panic4931: + call void @finch_panic(ptr @.str.3106, i64 2225, ptr @.str.3107) + unreachable +ok4932: + %t241 = getelementptr inbounds %S.gen.Gen, ptr %t239, i32 0, i32 12 + %t242 = getelementptr inbounds { ptr, i64, i64 }, ptr %t241, i32 0, i32 1 + %t243 = load i64, ptr %t242 + %t244 = icmp eq i64 %t243, 0 + br i1 %t244, label %then4933, label %endif4935 +then4933: + %t245 = load ptr, ptr %a1 + %t246 = load %S.ast.Node, ptr %a2 + %t247 = load { ptr, i64, i64 }, ptr %a18 + store { ptr, i64, i64 } %t247, ptr %a249 + store { ptr, i64, i64 } { ptr @.str.3108, i64 31, i64 0 }, ptr %a250 + call void @finch_str_concat(ptr %a248, ptr %a249, ptr %a250) + %t251 = load { ptr, i64, i64 }, ptr %a248 + call void @finch.gen.fail(ptr %t245, %S.ast.Node %t246, { ptr, i64, i64 } %t251) + store { ptr, i64, i64 } %t251, ptr %a252 + call void @finch_str_drop(ptr %a252) + br label %endif4935 +endif4935: + %t253 = load ptr, ptr %a1 + %t254 = icmp eq ptr %t253, null + br i1 %t254, label %panic4936, label %ok4937 +panic4936: + call void @finch_panic(ptr @.str.3109, i64 2228, ptr @.str.3110) + unreachable +ok4937: + %t255 = getelementptr inbounds %S.gen.Gen, ptr %t253, i32 0, i32 12 + %t256 = load ptr, ptr %a1 + %t257 = icmp eq ptr %t256, null + br i1 %t257, label %panic4938, label %ok4939 +panic4938: + call void @finch_panic(ptr @.str.3111, i64 2228, ptr @.str.3112) + unreachable +ok4939: + %t258 = getelementptr inbounds %S.gen.Gen, ptr %t256, i32 0, i32 12 + %t259 = getelementptr inbounds { ptr, i64, i64 }, ptr %t258, i32 0, i32 1 + %t260 = load i64, ptr %t259 + %t261 = sub i64 %t260, 1 + %t262 = load { ptr, i64, i64 }, ptr %t255 + %t263 = extractvalue { ptr, i64, i64 } %t262, 1 + %t264 = icmp uge i64 %t261, %t263 + br i1 %t264, label %range4940, label %inrange4941 +range4940: + call void @finch_panic_index(ptr @.str.3113, i64 2228, i64 %t261, i64 %t263) + unreachable +inrange4941: + %t265 = extractvalue { ptr, i64, i64 } %t262, 0 + %t266 = getelementptr inbounds %S.gen.Loop, ptr %t265, i64 %t261 + %t267 = load %S.gen.Loop, ptr %t266 + store %S.gen.Loop %t267, ptr %a268 + call void @finch.copy.S_gen_Loop(ptr %a269, ptr %a268) + %t270 = load %S.gen.Loop, ptr %a269 + store %S.gen.Loop %t270, ptr %a271 + %t272 = load ptr, ptr %a1 + %t273 = getelementptr inbounds %S.gen.Loop, ptr %a271, i32 0, i32 3 + %t274 = load i64, ptr %t273 + call void @finch.gen.dropPending(ptr %t272, i64 %t274) + %t275 = load ptr, ptr %a1 + %t276 = getelementptr inbounds %S.gen.Loop, ptr %a271, i32 0, i32 2 + %t277 = load i64, ptr %t276 + call void @finch.gen.unwind(ptr %t275, i64 %t277) + %t278 = load { ptr, i64, i64 }, ptr %a18 + store { ptr, i64, i64 } %t278, ptr %a279 + store { ptr, i64, i64 } { ptr @.str.3114, i64 5, i64 0 }, ptr %a280 + %t281 = call i32 @finch_str_eq(ptr %a279, ptr %a280) + %t282 = icmp ne i32 %t281, 0 + br i1 %t282, label %then4942, label %else4943 +then4942: + %t283 = load ptr, ptr %a1 + %t284 = getelementptr inbounds %S.gen.Loop, ptr %a271, i32 0, i32 1 + %t285 = load { ptr, i64, i64 }, ptr %t284 + call void @finch.gen.br(ptr %t283, { ptr, i64, i64 } %t285) + br label %endif4944 +else4943: + %t286 = load ptr, ptr %a1 + %t287 = getelementptr inbounds %S.gen.Loop, ptr %a271, i32 0, i32 0 + %t288 = load { ptr, i64, i64 }, ptr %t287 + call void @finch.gen.br(ptr %t286, { ptr, i64, i64 } %t288) + br label %endif4944 +endif4944: + call void @finch.drop.S_gen_Loop(ptr %a271) + br label %endif4925 +else4924: + %t289 = load ptr, ptr %a1 + %t290 = load %S.ast.Node, ptr %a2 + %t291 = load { ptr, i64, i64 }, ptr %a18 + store { ptr, i64, i64 } { ptr @.str.3115, i64 18, i64 0 }, ptr %a293 + store { ptr, i64, i64 } %t291, ptr %a294 + call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) + %t295 = load { ptr, i64, i64 }, ptr %a292 + call void @finch.gen.fail(ptr %t289, %S.ast.Node %t290, { ptr, i64, i64 } %t295) + store { ptr, i64, i64 } %t295, ptr %a296 + call void @finch_str_drop(ptr %a296) + br label %endif4925 +endif4925: + br label %endif4891 +endif4891: + br label %endif4888 +endif4888: + br label %endif4885 +endif4885: + br label %endif4882 +endif4882: + br label %endif4879 +endif4879: + br label %endif4876 +endif4876: + br label %endif4873 +endif4873: + br label %endif4861 +endif4861: + br label %endif4858 +endif4858: + br label %endif4855 +endif4855: + br label %endif4852 +endif4852: + call void @finch_str_drop(ptr %a18) ret void } @@ -42787,36 +49850,48 @@ entry: %a52 = alloca { ptr, i64, i64 }, align 16 %a53 = alloca { ptr, i64, i64 }, align 16 %a54 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca %S.ast.Type, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca %S.gen.Val, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca %S.gen.Val, align 16 + %a55 = alloca { ptr, i64, i64 }, align 16 + %a57 = alloca { ptr, i64, i64 }, align 16 + %a68 = alloca { ptr, i64, i64 }, align 16 + %a69 = alloca { ptr, i64, i64 }, align 16 + %a75 = alloca %S.ast.Type, align 16 + %a82 = alloca { ptr, i64, i64 }, align 16 + %a83 = alloca { ptr, i64, i64 }, align 16 + %a90 = alloca { ptr, i64, i64 }, align 16 + %a91 = alloca { ptr, i64, i64 }, align 16 + %a103 = alloca %S.gen.Val, align 16 + %a112 = alloca { ptr, i64, i64 }, align 16 + %a121 = alloca { ptr, i64, i64 }, align 16 + %a122 = 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 + %a148 = 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 + %a154 = alloca %S.gen.Val, align 16 + %a155 = alloca { ptr, i64, i64 }, align 16 + %a156 = alloca %S.gen.Val, align 16 + %a166 = alloca { ptr, i64, i64 }, align 16 + %a167 = 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 6 %t4 = load i1, ptr %t3 %t5 = xor i1 %t4, true - br i1 %t5, label %then4696, label %endif4698 -then4696: + br i1 %t5, label %then4945, label %endif4947 +then4945: %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 %range4699, label %inrange4700 -range4699: - call void @finch_panic_index(ptr @.str.3016, i64 2086, i64 0, i64 %t9) + br i1 %t10, label %range4948, label %inrange4949 +range4948: + call void @finch_panic_index(ptr @.str.3116, i64 2243, i64 0, i64 %t9) unreachable -inrange4700: +inrange4949: %t11 = extractvalue { ptr, i64, i64 } %t8, 0 %t12 = getelementptr inbounds %S.ast.Node, ptr %t11, i64 0 %t13 = load %S.ast.Node, ptr %t12 @@ -42826,190 +49901,222 @@ inrange4700: %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.3017, i64 4, i64 0 }, ptr %a20 + store { ptr, i64, i64 } { ptr @.str.3117, 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 %then4701, label %endif4703 -then4701: + br i1 %t22, label %then4950, label %endif4952 +then4950: %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 %range4704, label %inrange4705 -range4704: - call void @finch_panic_index(ptr @.str.3018, i64 2088, i64 0, i64 %t26) + br i1 %t27, label %range4953, label %inrange4954 +range4953: + call void @finch_panic_index(ptr @.str.3118, i64 2245, i64 0, i64 %t26) unreachable -inrange4705: +inrange4954: %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.3019, i64 46, i64 0 }) - br label %endif4703 -endif4703: + call void @finch.gen.fail(ptr %t23, %S.ast.Node %t30, { ptr, i64, i64 } { ptr @.str.3119, i64 46, i64 0 }) + br label %endif4952 +endif4952: %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.3020, i64 4, i64 0 }, ptr %a35 + store { ptr, i64, i64 } { ptr @.str.3120, 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 %then4706, label %endif4708 -then4706: + br i1 %t37, label %then4955, label %endif4957 +then4955: %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 %range4709, label %inrange4710 -range4709: - call void @finch_panic_index(ptr @.str.3021, i64 2091, i64 0, i64 %t41) + br i1 %t42, label %range4958, label %inrange4959 +range4958: + call void @finch_panic_index(ptr @.str.3121, i64 2248, i64 0, i64 %t41) unreachable -inrange4710: +inrange4959: %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.3022, i64 34, i64 0 }, ptr %a49 + store { ptr, i64, i64 } { ptr @.str.3122, 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.3023, i64 7, i64 0 }, ptr %a54 + store { ptr, i64, i64 } { ptr @.str.3123, 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 %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 - %t59 = load { ptr, i64, i64 }, ptr %t58 - %t60 = getelementptr inbounds %S.gen.Val, ptr %a15, i32 0, i32 1 - %t61 = load %S.ast.Type, ptr %t60 - %t62 = load ptr, ptr %a1 - %t63 = load %S.gen.Val, ptr %a15 - %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) + store { ptr, i64, i64 } %t51, ptr %a55 + call void @finch_str_drop(ptr %a55) + %t56 = load { ptr, i64, i64 }, ptr %a52 + call void @finch.gen.fail(ptr %t38, %S.ast.Node %t45, { ptr, i64, i64 } %t56) + store { ptr, i64, i64 } %t56, ptr %a57 + call void @finch_str_drop(ptr %a57) + br label %endif4957 +endif4957: + %t58 = load ptr, ptr %a1 + %t59 = load %S.ast.Node, ptr %a2 + %t60 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t61 = load { ptr, i64, i64 }, ptr %t60 + %t62 = getelementptr inbounds %S.gen.Val, ptr %a15, i32 0, i32 1 + %t63 = load %S.ast.Type, ptr %t62 + %t64 = load ptr, ptr %a1 + %t65 = load %S.gen.Val, ptr %a15 + %t66 = call { ptr, i64, i64 } @finch.gen.own(ptr %t64, %S.gen.Val %t65) + %t67 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t58, %S.ast.Node %t59, { ptr, i64, i64 } %t61, %S.ast.Type %t63, { ptr, i64, i64 } %t66, i1 false, i1 true) + store { ptr, i64, i64 } %t66, ptr %a68 + call void @finch_str_drop(ptr %a68) + store { ptr, i64, i64 } %t67, ptr %a69 + call void @finch_str_drop(ptr %a69) + call void @finch.drop.S_gen_Val(ptr %a15) ret void -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 - %t69 = load %S.ast.Node, ptr %a2 - %t70 = call %S.ast.Type @finch.gen.resolve(ptr %t66, %S.ast.Type %t68, %S.ast.Node %t69) - store %S.ast.Type %t70, ptr %a71 - %t72 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %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 %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.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.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.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 - %t89 = load ptr, ptr %a1 - %t90 = getelementptr inbounds %S.ast.Type, ptr %a71, i32 0, i32 3 - %t91 = load { ptr, i64, i64 }, ptr %t90 - %t92 = getelementptr inbounds %S.ast.Type, ptr %a71, i32 0, i32 2 - %t93 = load { ptr, i64, i64 }, ptr %t92 - %t94 = call i64 @finch.gen.findStruct(ptr %t89, { ptr, i64, i64 } %t91, { ptr, i64, i64 } %t93) - %t95 = load { ptr, i64, i64 }, ptr %a86 - %t96 = load { ptr, i64, i64 }, ptr %a87 - %t97 = load %S.ast.Node, ptr %a2 - %t98 = call %S.gen.Val @finch.gen.construct(ptr %t88, i64 %t94, { ptr, i64, i64 } %t95, { ptr, i64, i64 } %t96, %S.ast.Node %t97) - store %S.gen.Val %t98, ptr %a99 - %t100 = load ptr, ptr %a1 +endif4947: + %t70 = load ptr, ptr %a1 + %t71 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5 + %t72 = load %S.ast.Type, ptr %t71 + %t73 = load %S.ast.Node, ptr %a2 + %t74 = call %S.ast.Type @finch.gen.resolve(ptr %t70, %S.ast.Type %t72, %S.ast.Node %t73) + store %S.ast.Type %t74, ptr %a75 + %t76 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t77 = getelementptr inbounds { ptr, i64, i64 }, ptr %t76, i32 0, i32 1 + %t78 = load i64, ptr %t77 + %t79 = icmp eq i64 %t78, 0 + br i1 %t79, label %then4960, label %endif4962 +then4960: + %t80 = getelementptr inbounds %S.ast.Type, ptr %a75, i32 0, i32 0 + %t81 = load { ptr, i64, i64 }, ptr %t80 + store { ptr, i64, i64 } %t81, ptr %a82 + store { ptr, i64, i64 } { ptr @.str.3124, i64 6, i64 0 }, ptr %a83 + %t84 = call i32 @finch_str_eq(ptr %a82, ptr %a83) + %t85 = icmp ne i32 %t84, 0 + br label %logic.from4963 +logic.from4963: + br i1 %t85, label %logic.rhs4964, label %logic.end4965 +logic.rhs4964: + %t86 = load ptr, ptr %a1 + %t87 = load %S.ast.Type, ptr %a75 + %t88 = call i1 @finch.gen.hasDefaults(ptr %t86, %S.ast.Type %t87) + br label %logic.rend4966 +logic.rend4966: + br label %logic.end4965 +logic.end4965: + %t89 = phi i1 [ false, %logic.from4963 ], [ %t88, %logic.rend4966 ] + br i1 %t89, label %then4967, label %endif4969 +then4967: + store { ptr, i64, i64 } zeroinitializer, ptr %a90 + store { ptr, i64, i64 } zeroinitializer, ptr %a91 + %t92 = load ptr, ptr %a1 + %t93 = load ptr, ptr %a1 + %t94 = getelementptr inbounds %S.ast.Type, ptr %a75, i32 0, i32 3 + %t95 = load { ptr, i64, i64 }, ptr %t94 + %t96 = getelementptr inbounds %S.ast.Type, ptr %a75, i32 0, i32 2 + %t97 = load { ptr, i64, i64 }, ptr %t96 + %t98 = call i64 @finch.gen.findStruct(ptr %t93, { ptr, i64, i64 } %t95, { ptr, i64, i64 } %t97) + %t99 = load { ptr, i64, i64 }, ptr %a90 + %t100 = load { ptr, i64, i64 }, ptr %a91 %t101 = load %S.ast.Node, ptr %a2 - %t102 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t103 = load { ptr, i64, i64 }, ptr %t102 - %t104 = load %S.ast.Type, ptr %a71 - %t105 = getelementptr inbounds %S.gen.Val, ptr %a99, i32 0, i32 0 - %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) + %t102 = call %S.gen.Val @finch.gen.construct(ptr %t92, i64 %t98, { ptr, i64, i64 } %t99, { ptr, i64, i64 } %t100, %S.ast.Node %t101) + store %S.gen.Val %t102, ptr %a103 + %t104 = load ptr, ptr %a1 + %t105 = load %S.ast.Node, ptr %a2 + %t106 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t107 = load { ptr, i64, i64 }, ptr %t106 + %t108 = load %S.ast.Type, ptr %a75 + %t109 = getelementptr inbounds %S.gen.Val, ptr %a103, i32 0, i32 0 + %t110 = load { ptr, i64, i64 }, ptr %t109 + %t111 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t104, %S.ast.Node %t105, { ptr, i64, i64 } %t107, %S.ast.Type %t108, { ptr, i64, i64 } %t110, i1 false, i1 true) + store { ptr, i64, i64 } %t111, ptr %a112 + call void @finch_str_drop(ptr %a112) + call void @finch.drop.S_gen_Val(ptr %a103) + call void @finch.drop.arr_str(ptr %a91) + call void @finch.drop.arr_S_ast_Node(ptr %a90) + call void @finch.drop.S_ast_Type(ptr %a75) ret void -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 - %t111 = load { ptr, i64, i64 }, ptr %t110 - %t112 = load %S.ast.Type, ptr %a71 - %t113 = load %S.ast.Type, ptr %a71 - %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) +endif4969: + %t113 = load ptr, ptr %a1 + %t114 = load %S.ast.Node, ptr %a2 + %t115 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t116 = load { ptr, i64, i64 }, ptr %t115 + %t117 = load %S.ast.Type, ptr %a75 + %t118 = load %S.ast.Type, ptr %a75 + %t119 = call { ptr, i64, i64 } @finch.gen.zeroOf(%S.ast.Type %t118) + %t120 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t113, %S.ast.Node %t114, { ptr, i64, i64 } %t116, %S.ast.Type %t117, { ptr, i64, i64 } %t119, i1 false, i1 true) + store { ptr, i64, i64 } %t119, ptr %a121 + call void @finch_str_drop(ptr %a121) + store { ptr, i64, i64 } %t120, ptr %a122 + call void @finch_str_drop(ptr %a122) + call void @finch.drop.S_ast_Type(ptr %a75) ret void -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 %range4721, label %inrange4722 -range4721: - call void @finch_panic_index(ptr @.str.3025, i64 2108, i64 0, i64 %t120) +endif4962: + %t123 = load ptr, ptr %a1 + %t124 = load ptr, ptr %a1 + %t125 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t126 = load { ptr, i64, i64 }, ptr %t125 + %t127 = extractvalue { ptr, i64, i64 } %t126, 1 + %t128 = icmp uge i64 0, %t127 + br i1 %t128, label %range4970, label %inrange4971 +range4970: + call void @finch_panic_index(ptr @.str.3125, i64 2265, i64 0, i64 %t127) unreachable -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 - %t125 = load %S.ast.Type, ptr %a71 - %t126 = call %S.gen.Val @finch.gen.exprWant(ptr %t117, %S.ast.Node %t124, %S.ast.Type %t125) - %t127 = load %S.ast.Type, ptr %a71 - %t128 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t129 = load { ptr, i64, i64 }, ptr %t128 - %t130 = extractvalue { ptr, i64, i64 } %t129, 1 - %t131 = icmp uge i64 0, %t130 - br i1 %t131, label %range4723, label %inrange4724 -range4723: - call void @finch_panic_index(ptr @.str.3026, i64 2108, i64 0, i64 %t130) - unreachable -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 +inrange4971: + %t129 = extractvalue { ptr, i64, i64 } %t126, 0 + %t130 = getelementptr inbounds %S.ast.Node, ptr %t129, i64 0 + %t131 = load %S.ast.Node, ptr %t130 + %t132 = load %S.ast.Type, ptr %a75 + %t133 = call %S.gen.Val @finch.gen.exprWant(ptr %t124, %S.ast.Node %t131, %S.ast.Type %t132) + %t134 = load %S.ast.Type, ptr %a75 + %t135 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t136 = load { ptr, i64, i64 }, ptr %t135 - 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.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) - store %S.gen.Val %t145, ptr %a146 - %t147 = load ptr, ptr %a1 - %t148 = load %S.ast.Node, ptr %a2 - %t149 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t150 = load { ptr, i64, i64 }, ptr %t149 - %t151 = load %S.ast.Type, ptr %a71 - %t152 = load ptr, ptr %a1 - %t153 = load %S.gen.Val, ptr %a146 - %t154 = call { ptr, i64, i64 } @finch.gen.own(ptr %t152, %S.gen.Val %t153) - %t155 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t147, %S.ast.Node %t148, { ptr, i64, i64 } %t150, %S.ast.Type %t151, { ptr, i64, i64 } %t154, i1 false) + %t137 = extractvalue { ptr, i64, i64 } %t136, 1 + %t138 = icmp uge i64 0, %t137 + br i1 %t138, label %range4972, label %inrange4973 +range4972: + call void @finch_panic_index(ptr @.str.3126, i64 2265, i64 0, i64 %t137) + unreachable +inrange4973: + %t139 = extractvalue { ptr, i64, i64 } %t136, 0 + %t140 = getelementptr inbounds %S.ast.Node, ptr %t139, i64 0 + %t141 = load %S.ast.Node, ptr %t140 + %t142 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t143 = load { ptr, i64, i64 }, ptr %t142 + store { ptr, i64, i64 } { ptr @.str.3127, i64 1, i64 0 }, ptr %a145 + store { ptr, i64, i64 } %t143, ptr %a146 + 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.3128, i64 1, i64 0 }, ptr %a150 + call void @finch_str_concat(ptr %a148, ptr %a149, ptr %a150) + store { ptr, i64, i64 } %t147, ptr %a151 + call void @finch_str_drop(ptr %a151) + %t152 = load { ptr, i64, i64 }, ptr %a148 + %t153 = call %S.gen.Val @finch.gen.coerce(ptr %t123, %S.gen.Val %t133, %S.ast.Type %t134, %S.ast.Node %t141, { ptr, i64, i64 } %t152) + store %S.gen.Val %t133, ptr %a154 + call void @finch.drop.S_gen_Val(ptr %a154) + store { ptr, i64, i64 } %t152, ptr %a155 + call void @finch_str_drop(ptr %a155) + store %S.gen.Val %t153, ptr %a156 + %t157 = load ptr, ptr %a1 + %t158 = load %S.ast.Node, ptr %a2 + %t159 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t160 = load { ptr, i64, i64 }, ptr %t159 + %t161 = load %S.ast.Type, ptr %a75 + %t162 = load ptr, ptr %a1 + %t163 = load %S.gen.Val, ptr %a156 + %t164 = call { ptr, i64, i64 } @finch.gen.own(ptr %t162, %S.gen.Val %t163) + %t165 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t157, %S.ast.Node %t158, { ptr, i64, i64 } %t160, %S.ast.Type %t161, { ptr, i64, i64 } %t164, i1 false, i1 true) + store { ptr, i64, i64 } %t164, ptr %a166 + call void @finch_str_drop(ptr %a166) + store { ptr, i64, i64 } %t165, ptr %a167 + call void @finch_str_drop(ptr %a167) + call void @finch.drop.S_gen_Val(ptr %a156) + call void @finch.drop.S_ast_Type(ptr %a75) ret void } @@ -43026,12 +50133,12 @@ entry: store %S.ast.Type %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic4725, label %ok4726 -panic4725: - call void @finch_panic(ptr @.str.3029, i64 2113, ptr @.str.3030) + br i1 %t4, label %panic4974, label %ok4975 +panic4974: + call void @finch_panic(ptr @.str.3129, i64 2270, ptr @.str.3130) unreachable -ok4726: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 15 +ok4975: + %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 16 %t6 = load ptr, ptr %a1 %t7 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 %t8 = load { ptr, i64, i64 }, ptr %t7 @@ -43041,11 +50148,11 @@ ok4726: %t12 = load { ptr, i64, i64 }, ptr %t5 %t13 = extractvalue { ptr, i64, i64 } %t12, 1 %t14 = icmp uge i64 %t11, %t13 - br i1 %t14, label %range4727, label %inrange4728 -range4727: - call void @finch_panic_index(ptr @.str.3031, i64 2113, i64 %t11, i64 %t13) + br i1 %t14, label %range4976, label %inrange4977 +range4976: + call void @finch_panic_index(ptr @.str.3131, i64 2270, i64 %t11, i64 %t13) unreachable -inrange4728: +inrange4977: %t15 = extractvalue { ptr, i64, i64 } %t12, 0 %t16 = getelementptr inbounds %S.gen.StructDef, ptr %t15, i64 %t11 %t17 = load %S.gen.StructDef, ptr %t16 @@ -43055,28 +50162,29 @@ inrange4728: 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 %then4729, label %endif4731 -then4729: + br i1 %t23, label %then4978, label %endif4980 +then4978: + call void @finch.drop.S_gen_StructDef(ptr %a21) ret i1 false -endif4731: +endif4980: %t24 = load ptr, ptr %a1 %t25 = icmp eq ptr %t24, null - br i1 %t25, label %panic4732, label %ok4733 -panic4732: - call void @finch_panic(ptr @.str.3032, i64 2117, ptr @.str.3033) + br i1 %t25, label %panic4981, label %ok4982 +panic4981: + call void @finch_panic(ptr @.str.3132, i64 2274, ptr @.str.3133) unreachable -ok4733: +ok4982: %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 %range4734, label %inrange4735 -range4734: - call void @finch_panic_index(ptr @.str.3034, i64 2117, i64 %t28, i64 %t30) + br i1 %t31, label %range4983, label %inrange4984 +range4983: + call void @finch_panic_index(ptr @.str.3134, i64 2274, i64 %t28, i64 %t30) unreachable -inrange4735: +inrange4984: %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 @@ -43085,23 +50193,23 @@ inrange4735: %t37 = load { ptr, i64, i64 }, ptr %t34 %t38 = extractvalue { ptr, i64, i64 } %t37, 1 %t39 = icmp uge i64 %t36, %t38 - br i1 %t39, label %range4736, label %inrange4737 -range4736: - call void @finch_panic_index(ptr @.str.3035, i64 2117, i64 %t36, i64 %t38) + br i1 %t39, label %range4985, label %inrange4986 +range4985: + call void @finch_panic_index(ptr @.str.3135, i64 2274, i64 %t36, i64 %t38) unreachable -inrange4737: +inrange4986: %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.cond4738 -each.cond4738: + br label %each.cond4987 +each.cond4987: %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.body4739, label %each.end4741 -each.body4739: + br i1 %t47, label %each.body4988, label %each.end4990 +each.body4988: %t48 = load ptr, ptr %t42 %t49 = getelementptr inbounds %S.ast.Node, ptr %t48, i64 %t46 %t50 = load %S.ast.Node, ptr %t49 @@ -43110,20 +50218,32 @@ each.body4739: %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 %then4742, label %endif4744 -then4742: + br i1 %t55, label %then4991, label %endif4993 +then4991: + call void @finch.drop.S_gen_StructDef(ptr %a21) ret i1 true -endif4744: - br label %each.step4740 -each.step4740: +endif4993: + br label %each.step4989 +each.step4989: %t56 = load i64, ptr %a43 %t57 = add i64 %t56, 1 store i64 %t57, ptr %a43 - br label %each.cond4738 -each.end4741: + br label %each.cond4987 +each.end4990: + call void @finch.drop.S_gen_StructDef(ptr %a21) ret i1 false } +define internal void @finch.drop.S_gen_Place(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.gen.Place, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.gen.Place, ptr %a, i32 0, i32 1 + call void @finch.drop.S_ast_Type(ptr %t2) + ret void +} + define internal void @finch.gen.assignStmt(ptr %p0, %S.ast.Node %p1) { entry: %a1 = alloca ptr, align 16 @@ -43141,51 +50261,83 @@ entry: %a40 = alloca { ptr, i64, i64 }, align 16 %a41 = alloca { ptr, i64, i64 }, align 16 %a42 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 + %a43 = alloca { ptr, i64, i64 }, align 16 %a46 = 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 - %a50 = alloca { ptr, i64, i64 }, align 16 %a51 = 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 + %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 + %a63 = alloca %S.gen.Var, align 16 %a68 = alloca { ptr, i64, i64 }, align 16 %a69 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 + %a70 = 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 %a75 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = 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 - %a89 = alloca { ptr, i64, i64 }, align 16 + %a82 = alloca { ptr, i64, i64 }, align 16 + %a86 = alloca { ptr, i64, i64 }, align 16 + %a87 = alloca { ptr, i64, i64 }, align 16 + %a88 = alloca { ptr, i64, i64 }, align 16 %a90 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca %S.gen.Val, align 16 - %a106 = alloca %S.gen.Place, align 16 - %a139 = alloca %S.gen.Val, align 16 - %a143 = alloca %S.gen.Place, align 16 - %a155 = alloca %S.ast.Type, align 16 - %a156 = alloca %S.ast.Type, align 16 - %a159 = alloca %S.gen.Val, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca %S.gen.Val, align 16 + %a91 = alloca { ptr, i64, i64 }, align 16 + %a92 = alloca { ptr, i64, i64 }, align 16 + %a93 = alloca { ptr, i64, i64 }, align 16 + %a96 = alloca { ptr, i64, i64 }, align 16 + %a99 = alloca { ptr, i64, i64 }, align 16 + %a100 = alloca { ptr, i64, i64 }, align 16 + %a104 = alloca %S.ast.Type, align 16 + %a105 = alloca i1, align 16 + %a108 = alloca { ptr, i64, i64 }, align 16 + %a109 = alloca { ptr, i64, i64 }, align 16 + %a115 = alloca i64, align 16 + %a122 = alloca %S.ast.Type, align 16 + %a123 = alloca %S.ast.Type, align 16 + %a125 = alloca %S.gen.Var, align 16 + %a127 = alloca %S.ast.Type, align 16 + %a128 = alloca %S.gen.Val, align 16 + %a141 = alloca %S.gen.Val, align 16 + %a152 = alloca %S.gen.Val, align 16 + %a158 = alloca i64, align 16 + %a164 = alloca %S.gen.Place, align 16 + %a179 = alloca %S.gen.Val, align 16 + %a183 = 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 + %a219 = alloca { ptr, i64, i64 }, align 16 + %a231 = alloca %S.gen.Val, align 16 + %a237 = alloca i64, align 16 + %a243 = alloca %S.gen.Place, align 16 + %a252 = alloca { ptr, i64, i64 }, align 16 + %a256 = alloca %S.ast.Type, align 16 + %a257 = alloca %S.ast.Type, align 16 + %a260 = alloca %S.gen.Val, align 16 + %a263 = alloca { ptr, i64, i64 }, align 16 + %a264 = alloca { ptr, i64, i64 }, align 16 + %a266 = alloca { ptr, i64, i64 }, align 16 + %a279 = alloca %S.gen.Val, align 16 + %a280 = alloca %S.gen.Val, align 16 + %a284 = alloca { ptr, i64, i64 }, align 16 + %a293 = 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 %range4745, label %inrange4746 -range4745: - call void @finch_panic_index(ptr @.str.3036, i64 2126, i64 0, i64 %t5) + br i1 %t6, label %range4994, label %inrange4995 +range4994: + call void @finch_panic_index(ptr @.str.3136, i64 2283, i64 0, i64 %t5) unreachable -inrange4746: +inrange4995: %t7 = extractvalue { ptr, i64, i64 } %t4, 0 %t8 = getelementptr inbounds %S.ast.Node, ptr %t7, i64 0 %t9 = load %S.ast.Node, ptr %t8 @@ -43199,232 +50351,435 @@ inrange4746: %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 %then4747, label %endif4749 -then4747: + br i1 %t19, label %then4996, label %endif4998 +then4996: %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.from4750 -logic.from4750: - br i1 %t25, label %logic.rhs4751, label %logic.end4752 -logic.rhs4751: + br label %logic.from4999 +logic.from4999: + br i1 %t25, label %logic.rhs5000, label %logic.end5001 +logic.rhs5000: %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.3037, i64 3, i64 0 }, ptr %a29 + store { ptr, i64, i64 } { ptr @.str.3137, 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.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: + br label %logic.rend5002 +logic.rend5002: + br label %logic.end5001 +logic.end5001: + %t32 = phi i1 [ false, %logic.from4999 ], [ %t31, %logic.rend5002 ] + br i1 %t32, label %then5003, label %endif5005 +then5003: %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.3038, i64 28, i64 0 }, ptr %a37 + store { ptr, i64, i64 } { ptr @.str.3138, 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.3039, i64 18, i64 0 }, ptr %a42 + store { ptr, i64, i64 } { ptr @.str.3139, 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 - store { ptr, i64, i64 } %t43, ptr %a46 + store { ptr, i64, i64 } %t39, ptr %a43 + call void @finch_str_drop(ptr %a43) + %t44 = load { ptr, i64, i64 }, ptr %a40 + %t45 = load { ptr, i64, i64 }, ptr %a16 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 - store { ptr, i64, i64 } %t48, ptr %a50 - 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 %endif4756 -endif4756: - %t53 = load i64, ptr %a23 - %t54 = icmp sge i64 %t53, 0 - 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.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.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.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 %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.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 %then4764, label %endif4766 -then4764: - %t78 = load { ptr, i64, i64 }, ptr %a16 - 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.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 %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.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 %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 %range4770, label %inrange4771 -range4770: - call void @finch_panic_index(ptr @.str.3048, i64 2142, i64 1, i64 %t96) - unreachable -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 - %t101 = call %S.gen.Val @finch.gen.expr(ptr %t93, %S.ast.Node %t100) - store %S.gen.Val %t101, ptr %a102 - %t103 = load ptr, ptr %a1 - %t104 = load %S.ast.Node, ptr %a13 - %t105 = call %S.gen.Place @finch.gen.place(ptr %t103, %S.ast.Node %t104, i1 true) - store %S.gen.Place %t105, ptr %a106 - %t107 = load ptr, ptr %a1 - %t108 = load %S.gen.Val, ptr %a102 - %t109 = getelementptr inbounds %S.gen.Place, ptr %a106, i32 0, i32 1 - %t110 = load %S.ast.Type, ptr %t109 - %t111 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t112 = load { ptr, i64, i64 }, ptr %t111 - %t113 = extractvalue { ptr, i64, i64 } %t112, 1 - %t114 = icmp uge i64 1, %t113 - br i1 %t114, label %range4772, label %inrange4773 -range4772: - call void @finch_panic_index(ptr @.str.3049, i64 2144, i64 1, i64 %t113) - unreachable -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 - %t118 = load { ptr, i64, i64 }, ptr %a71 - %t119 = call %S.gen.Val @finch.gen.coerce(ptr %t107, %S.gen.Val %t108, %S.ast.Type %t110, %S.ast.Node %t117, { ptr, i64, i64 } %t118) - store %S.gen.Val %t119, ptr %a102 - %t120 = load ptr, ptr %a1 - %t121 = load ptr, ptr %a1 - %t122 = getelementptr inbounds %S.gen.Place, ptr %a106, i32 0, i32 1 - %t123 = load %S.ast.Type, ptr %t122 - %t124 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t121, %S.ast.Type %t123) - %t125 = load ptr, ptr %a1 - %t126 = load %S.gen.Val, ptr %a102 - %t127 = call { ptr, i64, i64 } @finch.gen.own(ptr %t125, %S.gen.Val %t126) - %t128 = getelementptr inbounds %S.gen.Place, ptr %a106, i32 0, i32 0 - %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 -endif4769: + store { ptr, i64, i64 } %t45, ptr %a48 + call void @finch_str_concat(ptr %a46, ptr %a47, ptr %a48) + store { ptr, i64, i64 } %t44, ptr %a49 + call void @finch_str_drop(ptr %a49) + %t50 = load { ptr, i64, i64 }, ptr %a46 + store { ptr, i64, i64 } %t50, ptr %a52 + store { ptr, i64, i64 } { ptr @.str.3140, i64 8, i64 0 }, ptr %a53 + call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) + store { ptr, i64, i64 } %t50, ptr %a54 + call void @finch_str_drop(ptr %a54) + %t55 = load { ptr, i64, i64 }, ptr %a51 + call void @finch.gen.fail(ptr %t33, %S.ast.Node %t34, { ptr, i64, i64 } %t55) + store { ptr, i64, i64 } %t55, ptr %a56 + call void @finch_str_drop(ptr %a56) + br label %endif5005 +endif5005: + %t57 = load i64, ptr %a23 + %t58 = icmp sge i64 %t57, 0 + br label %logic.from5006 +logic.from5006: + br i1 %t58, label %logic.rhs5007, label %logic.end5008 +logic.rhs5007: + %t59 = load ptr, ptr %a1 + %t60 = load i64, ptr %a23 + %t61 = call %S.gen.Var @finch.gen.varAt(ptr %t59, i64 %t60) + %t62 = extractvalue %S.gen.Var %t61, 3 + store %S.gen.Var %t61, ptr %a63 + call void @finch.drop.S_gen_Var(ptr %a63) + br label %logic.rend5009 +logic.rend5009: + br label %logic.end5008 +logic.end5008: + %t64 = phi i1 [ false, %logic.from5006 ], [ %t62, %logic.rend5009 ] + br i1 %t64, label %then5010, label %endif5012 +then5010: + %t65 = load ptr, ptr %a1 + %t66 = load %S.ast.Node, ptr %a2 + %t67 = load { ptr, i64, i64 }, ptr %a16 + store { ptr, i64, i64 } { ptr @.str.3141, i64 19, 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.3142, i64 18, i64 0 }, ptr %a74 + call void @finch_str_concat(ptr %a72, ptr %a73, ptr %a74) + store { ptr, i64, i64 } %t71, ptr %a75 + call void @finch_str_drop(ptr %a75) + %t76 = load { ptr, i64, i64 }, ptr %a72 + call void @finch.gen.fail(ptr %t65, %S.ast.Node %t66, { ptr, i64, i64 } %t76) + store { ptr, i64, i64 } %t76, ptr %a77 + call void @finch_str_drop(ptr %a77) + br label %endif5012 +endif5012: + br label %endif4998 +endif4998: + store { ptr, i64, i64 } { ptr @.str.3143, i64 9, i64 0 }, ptr %a78 + %t79 = getelementptr inbounds %S.ast.Node, ptr %a13, i32 0, i32 0 + %t80 = load { ptr, i64, i64 }, ptr %t79 + store { ptr, i64, i64 } %t80, ptr %a81 + store { ptr, i64, i64 } { ptr @.str.3144, i64 3, i64 0 }, ptr %a82 + %t83 = call i32 @finch_str_eq(ptr %a81, ptr %a82) + %t84 = icmp ne i32 %t83, 0 + br i1 %t84, label %then5013, label %endif5015 +then5013: + %t85 = load { ptr, i64, i64 }, ptr %a16 + store { ptr, i64, i64 } { ptr @.str.3145, i64 1, 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.3146, i64 1, i64 0 }, ptr %a92 + call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92) + store { ptr, i64, i64 } %t89, ptr %a93 + call void @finch_str_drop(ptr %a93) + %t94 = load { ptr, i64, i64 }, ptr %a90 + %t95 = load { ptr, i64, i64 }, ptr %a78 + store { ptr, i64, i64 } %t94, ptr %a78 + store { ptr, i64, i64 } %t95, ptr %a96 + call void @finch_str_drop(ptr %a96) + br label %endif5015 +endif5015: + %t97 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t98 = load { ptr, i64, i64 }, ptr %t97 + store { ptr, i64, i64 } %t98, ptr %a99 + store { ptr, i64, i64 } { ptr @.str.3147, i64 1, i64 0 }, ptr %a100 + %t101 = call i32 @finch_str_eq(ptr %a99, ptr %a100) + %t102 = icmp ne i32 %t101, 0 + br i1 %t102, label %then5016, label %endif5018 +then5016: + %t103 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3148, i64 4, i64 0 }) + store %S.ast.Type %t103, ptr %a104 + store i1 false, ptr %a105 + %t106 = getelementptr inbounds %S.ast.Node, ptr %a13, i32 0, i32 0 + %t107 = load { ptr, i64, i64 }, ptr %t106 + store { ptr, i64, i64 } %t107, ptr %a108 + store { ptr, i64, i64 } { ptr @.str.3149, i64 3, i64 0 }, ptr %a109 + %t110 = call i32 @finch_str_eq(ptr %a108, ptr %a109) + %t111 = icmp ne i32 %t110, 0 + br i1 %t111, label %then5019, label %endif5021 +then5019: + %t112 = load ptr, ptr %a1 + %t113 = load { ptr, i64, i64 }, ptr %a16 + %t114 = call i64 @finch.gen.lookup(ptr %t112, { ptr, i64, i64 } %t113) + store i64 %t114, ptr %a115 + %t116 = load i64, ptr %a115 + %t117 = icmp sge i64 %t116, 0 + br i1 %t117, label %then5022, label %endif5024 +then5022: + %t118 = load ptr, ptr %a1 + %t119 = load i64, ptr %a115 + %t120 = call %S.gen.Var @finch.gen.varAt(ptr %t118, i64 %t119) + %t121 = extractvalue %S.gen.Var %t120, 1 + store %S.ast.Type %t121, ptr %a122 + call void @finch.copy.S_ast_Type(ptr %a123, ptr %a122) + %t124 = load %S.ast.Type, ptr %a123 + store %S.gen.Var %t120, ptr %a125 + call void @finch.drop.S_gen_Var(ptr %a125) + %t126 = load %S.ast.Type, ptr %a104 + store %S.ast.Type %t124, ptr %a104 + store %S.ast.Type %t126, ptr %a127 + call void @finch.drop.S_ast_Type(ptr %a127) + store i1 true, ptr %a105 + br label %endif5024 +endif5024: + br label %endif5021 +endif5021: + store %S.gen.Val zeroinitializer, ptr %a128 + %t129 = load i1, ptr %a105 + br i1 %t129, label %then5025, label %else5026 +then5025: %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 %range4774, label %inrange4775 -range4774: - call void @finch_panic_index(ptr @.str.3050, i64 2148, i64 1, i64 %t133) + br i1 %t134, label %range5028, label %inrange5029 +range5028: + call void @finch_panic_index(ptr @.str.3150, i64 2311, i64 1, i64 %t133) unreachable -inrange4775: +inrange5029: %t135 = extractvalue { ptr, i64, i64 } %t132, 0 %t136 = getelementptr inbounds %S.ast.Node, ptr %t135, i64 1 %t137 = load %S.ast.Node, ptr %t136 - %t138 = call %S.gen.Val @finch.gen.expr(ptr %t130, %S.ast.Node %t137) - store %S.gen.Val %t138, ptr %a139 - %t140 = load ptr, ptr %a1 - %t141 = load %S.ast.Node, ptr %a13 - %t142 = call %S.gen.Place @finch.gen.place(ptr %t140, %S.ast.Node %t141, i1 true) - store %S.gen.Place %t142, ptr %a143 - %t144 = load ptr, ptr %a1 - %t145 = load ptr, ptr %a1 - %t146 = getelementptr inbounds %S.gen.Place, ptr %a143, i32 0, i32 1 - %t147 = load %S.ast.Type, ptr %t146 - %t148 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t145, %S.ast.Type %t147) - %t149 = getelementptr inbounds %S.gen.Place, ptr %a143, i32 0, i32 0 - %t150 = load { ptr, i64, i64 }, ptr %t149 - %t151 = call { ptr, i64, i64 } @finch.gen.load(ptr %t144, { ptr, i64, i64 } %t148, { ptr, i64, i64 } %t150) - %t152 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t151, 0 - %t153 = getelementptr inbounds %S.gen.Place, ptr %a143, i32 0, i32 1 - %t154 = load %S.ast.Type, ptr %t153 - store %S.ast.Type %t154, ptr %a155 - call void @finch.copy.S_ast_Type(ptr %a156, ptr %a155) - %t157 = load %S.ast.Type, ptr %a156 - %t158 = insertvalue %S.gen.Val %t152, %S.ast.Type %t157, 1 - store %S.gen.Val %t158, ptr %a159 - %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.3051, i64 2151) - %t164 = load { ptr, i64, i64 }, ptr %a163 - store { ptr, i64, i64 } %t164, ptr %a165 - %t166 = load ptr, ptr %a1 - %t167 = load ptr, ptr %a1 - %t168 = load { ptr, i64, i64 }, ptr %a165 - %t169 = load %S.gen.Val, ptr %a159 - %t170 = load %S.gen.Val, ptr %a139 - %t171 = load %S.ast.Node, ptr %a2 - %t172 = call %S.gen.Val @finch.gen.arith(ptr %t167, { ptr, i64, i64 } %t168, %S.gen.Val %t169, %S.gen.Val %t170, %S.ast.Node %t171) - %t173 = getelementptr inbounds %S.gen.Place, ptr %a143, i32 0, i32 1 - %t174 = load %S.ast.Type, ptr %t173 - %t175 = load %S.ast.Node, ptr %a2 - %t176 = load { ptr, i64, i64 }, ptr %a71 - %t177 = call %S.gen.Val @finch.gen.coerce(ptr %t166, %S.gen.Val %t172, %S.ast.Type %t174, %S.ast.Node %t175, { ptr, i64, i64 } %t176) - store %S.gen.Val %t177, ptr %a178 - %t179 = load ptr, ptr %a1 + %t138 = load %S.ast.Type, ptr %a104 + %t139 = call %S.gen.Val @finch.gen.exprWant(ptr %t130, %S.ast.Node %t137, %S.ast.Type %t138) + %t140 = load %S.gen.Val, ptr %a128 + store %S.gen.Val %t139, ptr %a128 + store %S.gen.Val %t140, ptr %a141 + call void @finch.drop.S_gen_Val(ptr %a141) + br label %endif5027 +else5026: + %t142 = load ptr, ptr %a1 + %t143 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t144 = load { ptr, i64, i64 }, ptr %t143 + %t145 = extractvalue { ptr, i64, i64 } %t144, 1 + %t146 = icmp uge i64 1, %t145 + br i1 %t146, label %range5030, label %inrange5031 +range5030: + call void @finch_panic_index(ptr @.str.3151, i64 2313, i64 1, i64 %t145) + unreachable +inrange5031: + %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.expr(ptr %t142, %S.ast.Node %t149) + %t151 = load %S.gen.Val, ptr %a128 + store %S.gen.Val %t150, ptr %a128 + store %S.gen.Val %t151, ptr %a152 + call void @finch.drop.S_gen_Val(ptr %a152) + br label %endif5027 +endif5027: + %t153 = load ptr, ptr %a1 + %t154 = icmp eq ptr %t153, null + br i1 %t154, label %panic5032, label %ok5033 +panic5032: + call void @finch_panic(ptr @.str.3152, i64 2315, ptr @.str.3153) + unreachable +ok5033: + %t155 = getelementptr inbounds %S.gen.Gen, ptr %t153, i32 0, i32 11 + %t156 = getelementptr inbounds { ptr, i64, i64 }, ptr %t155, i32 0, i32 1 + %t157 = load i64, ptr %t156 + store i64 %t157, ptr %a158 + %t159 = load ptr, ptr %a1 + %t160 = load %S.gen.Val, ptr %a128 + call void @finch.gen.hold(ptr %t159, %S.gen.Val %t160) + %t161 = load ptr, ptr %a1 + %t162 = load %S.ast.Node, ptr %a13 + %t163 = call %S.gen.Place @finch.gen.place(ptr %t161, %S.ast.Node %t162, i1 true) + store %S.gen.Place %t163, ptr %a164 + %t165 = load ptr, ptr %a1 + %t166 = load %S.gen.Val, ptr %a128 + %t167 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 1 + %t168 = load %S.ast.Type, ptr %t167 + %t169 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t170 = load { ptr, i64, i64 }, ptr %t169 + %t171 = extractvalue { ptr, i64, i64 } %t170, 1 + %t172 = icmp uge i64 1, %t171 + br i1 %t172, label %range5034, label %inrange5035 +range5034: + call void @finch_panic_index(ptr @.str.3154, i64 2318, i64 1, i64 %t171) + unreachable +inrange5035: + %t173 = extractvalue { ptr, i64, i64 } %t170, 0 + %t174 = getelementptr inbounds %S.ast.Node, ptr %t173, i64 1 + %t175 = load %S.ast.Node, ptr %t174 + %t176 = load { ptr, i64, i64 }, ptr %a78 + %t177 = call %S.gen.Val @finch.gen.coerce(ptr %t165, %S.gen.Val %t166, %S.ast.Type %t168, %S.ast.Node %t175, { ptr, i64, i64 } %t176) + %t178 = load %S.gen.Val, ptr %a128 + store %S.gen.Val %t177, ptr %a128 + store %S.gen.Val %t178, ptr %a179 + call void @finch.drop.S_gen_Val(ptr %a179) %t180 = load ptr, ptr %a1 - %t181 = getelementptr inbounds %S.gen.Place, ptr %a143, i32 0, i32 1 - %t182 = load %S.ast.Type, ptr %t181 - %t183 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t180, %S.ast.Type %t182) + %t181 = load %S.gen.Val, ptr %a128 + %t182 = call { ptr, i64, i64 } @finch.gen.own(ptr %t180, %S.gen.Val %t181) + store { ptr, i64, i64 } %t182, ptr %a183 %t184 = load ptr, ptr %a1 - %t185 = load %S.gen.Val, ptr %a178 - %t186 = call { ptr, i64, i64 } @finch.gen.own(ptr %t184, %S.gen.Val %t185) - %t187 = getelementptr inbounds %S.gen.Place, ptr %a143, i32 0, i32 0 - %t188 = load { ptr, i64, i64 }, ptr %t187 - call void @finch.gen.store(ptr %t179, { ptr, i64, i64 } %t183, { ptr, i64, i64 } %t186, { ptr, i64, i64 } %t188) + %t185 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 1 + %t186 = load %S.ast.Type, ptr %t185 + %t187 = call i1 @finch.gen.owning(ptr %t184, %S.ast.Type %t186) + br i1 %t187, label %then5036, label %else5037 +then5036: + %t188 = load ptr, ptr %a1 + %t189 = load ptr, ptr %a1 + %t190 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 1 + %t191 = load %S.ast.Type, ptr %t190 + %t192 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t189, %S.ast.Type %t191) + %t193 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 0 + %t194 = load { ptr, i64, i64 }, ptr %t193 + %t195 = call { ptr, i64, i64 } @finch.gen.load(ptr %t188, { ptr, i64, i64 } %t192, { ptr, i64, i64 } %t194) + store { ptr, i64, i64 } %t192, ptr %a196 + call void @finch_str_drop(ptr %a196) + store { ptr, i64, i64 } %t195, ptr %a197 + %t198 = load ptr, ptr %a1 + %t199 = load ptr, ptr %a1 + %t200 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 1 + %t201 = load %S.ast.Type, ptr %t200 + %t202 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t199, %S.ast.Type %t201) + %t203 = load { ptr, i64, i64 }, ptr %a183 + %t204 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 0 + %t205 = load { ptr, i64, i64 }, ptr %t204 + call void @finch.gen.store(ptr %t198, { ptr, i64, i64 } %t202, { ptr, i64, i64 } %t203, { ptr, i64, i64 } %t205) + store { ptr, i64, i64 } %t202, ptr %a206 + call void @finch_str_drop(ptr %a206) + %t207 = load ptr, ptr %a1 + %t208 = load { ptr, i64, i64 }, ptr %a197 + %t209 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 1 + %t210 = load %S.ast.Type, ptr %t209 + call void @finch.gen.dropValue(ptr %t207, { ptr, i64, i64 } %t208, %S.ast.Type %t210) + call void @finch_str_drop(ptr %a197) + br label %endif5038 +else5037: + %t211 = load ptr, ptr %a1 + %t212 = load ptr, ptr %a1 + %t213 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 1 + %t214 = load %S.ast.Type, ptr %t213 + %t215 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t212, %S.ast.Type %t214) + %t216 = load { ptr, i64, i64 }, ptr %a183 + %t217 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 0 + %t218 = load { ptr, i64, i64 }, ptr %t217 + call void @finch.gen.store(ptr %t211, { ptr, i64, i64 } %t215, { ptr, i64, i64 } %t216, { ptr, i64, i64 } %t218) + store { ptr, i64, i64 } %t215, ptr %a219 + call void @finch_str_drop(ptr %a219) + br label %endif5038 +endif5038: + %t220 = load ptr, ptr %a1 + %t221 = load i64, ptr %a158 + call void @finch.gen.heldEnd(ptr %t220, i64 %t221) + call void @finch_str_drop(ptr %a183) + call void @finch.drop.S_gen_Place(ptr %a164) + call void @finch.drop.S_gen_Val(ptr %a128) + call void @finch.drop.S_ast_Type(ptr %a104) + call void @finch_str_drop(ptr %a78) + call void @finch_str_drop(ptr %a16) + call void @finch.drop.S_ast_Node(ptr %a13) + ret void +endif5018: + %t222 = load ptr, ptr %a1 + %t223 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t224 = load { ptr, i64, i64 }, ptr %t223 + %t225 = extractvalue { ptr, i64, i64 } %t224, 1 + %t226 = icmp uge i64 1, %t225 + br i1 %t226, label %range5039, label %inrange5040 +range5039: + call void @finch_panic_index(ptr @.str.3155, i64 2330, i64 1, i64 %t225) + unreachable +inrange5040: + %t227 = extractvalue { ptr, i64, i64 } %t224, 0 + %t228 = getelementptr inbounds %S.ast.Node, ptr %t227, i64 1 + %t229 = load %S.ast.Node, ptr %t228 + %t230 = call %S.gen.Val @finch.gen.expr(ptr %t222, %S.ast.Node %t229) + store %S.gen.Val %t230, ptr %a231 + %t232 = load ptr, ptr %a1 + %t233 = icmp eq ptr %t232, null + br i1 %t233, label %panic5041, label %ok5042 +panic5041: + call void @finch_panic(ptr @.str.3156, i64 2331, ptr @.str.3157) + unreachable +ok5042: + %t234 = getelementptr inbounds %S.gen.Gen, ptr %t232, i32 0, i32 11 + %t235 = getelementptr inbounds { ptr, i64, i64 }, ptr %t234, i32 0, i32 1 + %t236 = load i64, ptr %t235 + store i64 %t236, ptr %a237 + %t238 = load ptr, ptr %a1 + %t239 = load %S.gen.Val, ptr %a231 + call void @finch.gen.hold(ptr %t238, %S.gen.Val %t239) + %t240 = load ptr, ptr %a1 + %t241 = load %S.ast.Node, ptr %a13 + %t242 = call %S.gen.Place @finch.gen.place(ptr %t240, %S.ast.Node %t241, i1 true) + store %S.gen.Place %t242, ptr %a243 + %t244 = load ptr, ptr %a1 + %t245 = load ptr, ptr %a1 + %t246 = getelementptr inbounds %S.gen.Place, ptr %a243, i32 0, i32 1 + %t247 = load %S.ast.Type, ptr %t246 + %t248 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t245, %S.ast.Type %t247) + %t249 = getelementptr inbounds %S.gen.Place, ptr %a243, i32 0, i32 0 + %t250 = load { ptr, i64, i64 }, ptr %t249 + %t251 = call { ptr, i64, i64 } @finch.gen.load(ptr %t244, { ptr, i64, i64 } %t248, { ptr, i64, i64 } %t250) + store { ptr, i64, i64 } %t248, ptr %a252 + call void @finch_str_drop(ptr %a252) + %t253 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t251, 0 + %t254 = getelementptr inbounds %S.gen.Place, ptr %a243, i32 0, i32 1 + %t255 = load %S.ast.Type, ptr %t254 + store %S.ast.Type %t255, ptr %a256 + call void @finch.copy.S_ast_Type(ptr %a257, ptr %a256) + %t258 = load %S.ast.Type, ptr %a257 + %t259 = insertvalue %S.gen.Val %t253, %S.ast.Type %t258, 1 + store %S.gen.Val %t259, ptr %a260 + %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 %a263 + call void @finch_str_sub(ptr %a264, ptr %a263, i64 0, i64 1, ptr @.str.3158, i64 2335) + %t265 = load { ptr, i64, i64 }, ptr %a264 + store { ptr, i64, i64 } %t265, ptr %a266 + %t267 = load ptr, ptr %a1 + %t268 = load ptr, ptr %a1 + %t269 = load { ptr, i64, i64 }, ptr %a266 + %t270 = load %S.gen.Val, ptr %a260 + %t271 = load %S.gen.Val, ptr %a231 + %t272 = load %S.ast.Node, ptr %a2 + %t273 = call %S.gen.Val @finch.gen.arith(ptr %t268, { ptr, i64, i64 } %t269, %S.gen.Val %t270, %S.gen.Val %t271, %S.ast.Node %t272) + %t274 = getelementptr inbounds %S.gen.Place, ptr %a243, i32 0, i32 1 + %t275 = load %S.ast.Type, ptr %t274 + %t276 = load %S.ast.Node, ptr %a2 + %t277 = load { ptr, i64, i64 }, ptr %a78 + %t278 = call %S.gen.Val @finch.gen.coerce(ptr %t267, %S.gen.Val %t273, %S.ast.Type %t275, %S.ast.Node %t276, { ptr, i64, i64 } %t277) + store %S.gen.Val %t273, ptr %a279 + call void @finch.drop.S_gen_Val(ptr %a279) + store %S.gen.Val %t278, ptr %a280 + %t281 = load ptr, ptr %a1 + %t282 = load %S.gen.Val, ptr %a280 + %t283 = call { ptr, i64, i64 } @finch.gen.own(ptr %t281, %S.gen.Val %t282) + store { ptr, i64, i64 } %t283, ptr %a284 + %t285 = load ptr, ptr %a1 + %t286 = load ptr, ptr %a1 + %t287 = getelementptr inbounds %S.gen.Place, ptr %a243, i32 0, i32 1 + %t288 = load %S.ast.Type, ptr %t287 + %t289 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t286, %S.ast.Type %t288) + %t290 = load { ptr, i64, i64 }, ptr %a284 + %t291 = getelementptr inbounds %S.gen.Place, ptr %a243, i32 0, i32 0 + %t292 = load { ptr, i64, i64 }, ptr %t291 + call void @finch.gen.store(ptr %t285, { ptr, i64, i64 } %t289, { ptr, i64, i64 } %t290, { ptr, i64, i64 } %t292) + store { ptr, i64, i64 } %t289, ptr %a293 + call void @finch_str_drop(ptr %a293) + %t294 = load ptr, ptr %a1 + %t295 = getelementptr inbounds %S.gen.Place, ptr %a243, i32 0, i32 1 + %t296 = load %S.ast.Type, ptr %t295 + %t297 = call i1 @finch.gen.owning(ptr %t294, %S.ast.Type %t296) + br i1 %t297, label %then5043, label %endif5045 +then5043: + %t298 = load ptr, ptr %a1 + %t299 = getelementptr inbounds %S.gen.Val, ptr %a260, i32 0, i32 0 + %t300 = load { ptr, i64, i64 }, ptr %t299 + %t301 = getelementptr inbounds %S.gen.Place, ptr %a243, i32 0, i32 1 + %t302 = load %S.ast.Type, ptr %t301 + call void @finch.gen.dropValue(ptr %t298, { ptr, i64, i64 } %t300, %S.ast.Type %t302) + br label %endif5045 +endif5045: + %t303 = load ptr, ptr %a1 + %t304 = load i64, ptr %a237 + call void @finch.gen.heldEnd(ptr %t303, i64 %t304) + call void @finch_str_drop(ptr %a284) + call void @finch.drop.S_gen_Val(ptr %a280) + call void @finch_str_drop(ptr %a266) + call void @finch.drop.S_gen_Val(ptr %a260) + call void @finch.drop.S_gen_Place(ptr %a243) + call void @finch.drop.S_gen_Val(ptr %a231) + call void @finch_str_drop(ptr %a78) + call void @finch_str_drop(ptr %a16) + call void @finch.drop.S_ast_Node(ptr %a13) ret void } @@ -43432,22 +50787,31 @@ define internal { ptr, i64, i64 } @finch.gen.condition(ptr %p0, %S.ast.Node %p1) entry: %a1 = alloca ptr, align 16 %a2 = alloca %S.ast.Node, align 16 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca %S.gen.Val, align 16 + %a11 = alloca %S.ast.Type, align 16 + %a13 = alloca { ptr, i64, i64 }, align 16 + %a14 = alloca { ptr, i64, i64 }, align 16 + %a16 = alloca %S.gen.Val, align 16 store ptr %p0, ptr %a1 store %S.ast.Node %p1, ptr %a2 %t3 = load ptr, ptr %a1 %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.3052, i64 4, i64 0 }) + %t7 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3159, 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.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) - %t13 = load { ptr, i64, i64 }, ptr %a12 - ret { ptr, i64, i64 } %t13 + %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.3160, i64 11, i64 0 }) + store %S.gen.Val %t6, ptr %a10 + call void @finch.drop.S_gen_Val(ptr %a10) + store %S.ast.Type %t7, ptr %a11 + call void @finch.drop.S_ast_Type(ptr %a11) + %t12 = extractvalue %S.gen.Val %t9, 0 + store { ptr, i64, i64 } %t12, ptr %a13 + call void @finch_str_copy(ptr %a14, ptr %a13) + %t15 = load { ptr, i64, i64 }, ptr %a14 + store %S.gen.Val %t9, ptr %a16 + call void @finch.drop.S_gen_Val(ptr %a16) + ret { ptr, i64, i64 } %t15 } define internal void @finch.gen.ifStmt(ptr %p0, %S.ast.Node %p1) { @@ -43466,45 +50830,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 %range4776, label %inrange4777 -range4776: - call void @finch_panic_index(ptr @.str.3054, i64 2161, i64 0, i64 %t6) + br i1 %t7, label %range5046, label %inrange5047 +range5046: + call void @finch_panic_index(ptr @.str.3161, i64 2350, i64 0, i64 %t6) unreachable -inrange4777: +inrange5047: %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.3055, i64 4, i64 0 }) + %t14 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t13, { ptr, i64, i64 } { ptr @.str.3162, 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.3056, i64 4, i64 0 }) + %t17 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t16, { ptr, i64, i64 } { ptr @.str.3163, 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.3057, i64 5, i64 0 }) + %t20 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t19, { ptr, i64, i64 } { ptr @.str.3164, 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 %then4778, label %else4779 -then4778: + br i1 %t25, label %then5048, label %else5049 +then5048: %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 %endif4780 -else4779: + br label %endif5050 +else5049: %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 %endif4780 -endif4780: + br label %endif5050 +endif5050: %t34 = load ptr, ptr %a1 %t35 = load { ptr, i64, i64 }, ptr %a15 call void @finch.gen.label(ptr %t34, { ptr, i64, i64 } %t35) @@ -43513,22 +50877,22 @@ endif4780: %t38 = load { ptr, i64, i64 }, ptr %t37 %t39 = extractvalue { ptr, i64, i64 } %t38, 1 %t40 = icmp uge i64 1, %t39 - br i1 %t40, label %range4781, label %inrange4782 -range4781: - call void @finch_panic_index(ptr @.str.3058, i64 2171, i64 1, i64 %t39) + br i1 %t40, label %range5051, label %inrange5052 +range5051: + call void @finch_panic_index(ptr @.str.3165, i64 2360, i64 1, i64 %t39) unreachable -inrange4782: +inrange5052: %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 %panic4783, label %ok4784 -panic4783: - call void @finch_panic(ptr @.str.3059, i64 2172, ptr @.str.3060) + br i1 %t45, label %panic5053, label %ok5054 +panic5053: + call void @finch_panic(ptr @.str.3166, i64 2361, ptr @.str.3167) unreachable -ok4784: +ok5054: %t46 = getelementptr inbounds %S.gen.Gen, ptr %t44, i32 0, i32 9 %t47 = load i1, ptr %t46 %t48 = xor i1 %t47, true @@ -43540,8 +50904,8 @@ ok4784: %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 %then4785, label %else4786 -then4785: + br i1 %t55, label %then5055, label %else5056 +then5055: %t56 = load ptr, ptr %a1 %t57 = load { ptr, i64, i64 }, ptr %a18 call void @finch.gen.label(ptr %t56, { ptr, i64, i64 } %t57) @@ -43550,52 +50914,56 @@ then4785: %t60 = load { ptr, i64, i64 }, ptr %t59 %t61 = extractvalue { ptr, i64, i64 } %t60, 1 %t62 = icmp uge i64 2, %t61 - br i1 %t62, label %range4788, label %inrange4789 -range4788: - call void @finch_panic_index(ptr @.str.3061, i64 2176, i64 2, i64 %t61) + br i1 %t62, label %range5058, label %inrange5059 +range5058: + call void @finch_panic_index(ptr @.str.3168, i64 2365, i64 2, i64 %t61) unreachable -inrange4789: +inrange5059: %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.from4790 -logic.from4790: - br i1 %t66, label %logic.end4792, label %logic.rhs4791 -logic.rhs4791: + br label %logic.from5060 +logic.from5060: + br i1 %t66, label %logic.end5062, label %logic.rhs5061 +logic.rhs5061: %t67 = load ptr, ptr %a1 %t68 = icmp eq ptr %t67, null - br i1 %t68, label %panic4793, label %ok4794 -panic4793: - call void @finch_panic(ptr @.str.3062, i64 2177, ptr @.str.3063) + br i1 %t68, label %panic5063, label %ok5064 +panic5063: + call void @finch_panic(ptr @.str.3169, i64 2366, ptr @.str.3170) unreachable -ok4794: +ok5064: %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.rend4795 -logic.rend4795: - br label %logic.end4792 -logic.end4792: - %t72 = phi i1 [ true, %logic.from4790 ], [ %t71, %logic.rend4795 ] + br label %logic.rend5065 +logic.rend5065: + br label %logic.end5062 +logic.end5062: + %t72 = phi i1 [ true, %logic.from5060 ], [ %t71, %logic.rend5065 ] 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 %endif4787 -else4786: + br label %endif5057 +else5056: store i1 true, ptr %a49 - br label %endif4787 -endif4787: + br label %endif5057 +endif5057: %t75 = load i1, ptr %a49 - br i1 %t75, label %then4796, label %endif4798 -then4796: + br i1 %t75, label %then5066, label %endif5068 +then5066: %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 %endif4798 -endif4798: + br label %endif5068 +endif5068: + call void @finch_str_drop(ptr %a21) + call void @finch_str_drop(ptr %a18) + call void @finch_str_drop(ptr %a15) + call void @finch_str_drop(ptr %a12) ret void } @@ -43616,17 +50984,18 @@ entry: %a67 = alloca { ptr, i64, i64 }, align 16 %a71 = alloca { ptr, i64, i64 }, align 16 %a72 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca i1, align 16 + %a99 = alloca i1, align 16 + %a118 = alloca %S.gen.Loop, align 16 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.3064, i64 10, i64 0 }) + %t4 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t3, { ptr, i64, i64 } { ptr @.str.3171, 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.3065, i64 10, i64 0 }) + %t7 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t6, { ptr, i64, i64 } { ptr @.str.3172, 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.3066, i64 9, i64 0 }) + %t10 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t9, { ptr, i64, i64 } { ptr @.str.3173, i64 9, i64 0 }) store { ptr, i64, i64 } %t10, ptr %a11 %t12 = load ptr, ptr %a1 %t13 = load { ptr, i64, i64 }, ptr %a5 @@ -43638,87 +51007,87 @@ 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 %range4799, label %inrange4800 -range4799: - call void @finch_panic_index(ptr @.str.3067, i64 2193, i64 0, i64 %t18) + br i1 %t19, label %range5069, label %inrange5070 +range5069: + call void @finch_panic_index(ptr @.str.3174, i64 2382, i64 0, i64 %t18) unreachable -inrange4800: +inrange5070: %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.3068, i64 4, i64 0 }, ptr %a25 + store { ptr, i64, i64 } { ptr @.str.3175, 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.from4801 -logic.from4801: - br i1 %t27, label %logic.rhs4802, label %logic.end4803 -logic.rhs4802: + br label %logic.from5071 +logic.from5071: + br i1 %t27, label %logic.rhs5072, label %logic.end5073 +logic.rhs5072: %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 %range4804, label %inrange4805 -range4804: - call void @finch_panic_index(ptr @.str.3069, i64 2193, i64 0, i64 %t30) + br i1 %t31, label %range5074, label %inrange5075 +range5074: + call void @finch_panic_index(ptr @.str.3176, i64 2382, i64 0, i64 %t30) unreachable -inrange4805: +inrange5075: %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.3070, i64 4, i64 0 }, ptr %a37 + store { ptr, i64, i64 } { ptr @.str.3177, 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.rend4806 -logic.rend4806: - br label %logic.end4803 -logic.end4803: - %t40 = phi i1 [ false, %logic.from4801 ], [ %t39, %logic.rend4806 ] + br label %logic.rend5076 +logic.rend5076: + br label %logic.end5073 +logic.end5073: + %t40 = phi i1 [ false, %logic.from5071 ], [ %t39, %logic.rend5076 ] 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 %range4807, label %inrange4808 -range4807: - call void @finch_panic_index(ptr @.str.3071, i64 2194, i64 0, i64 %t45) + br i1 %t46, label %range5077, label %inrange5078 +range5077: + call void @finch_panic_index(ptr @.str.3178, i64 2383, i64 0, i64 %t45) unreachable -inrange4808: +inrange5078: %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 %then4809, label %else4810 -then4809: + br i1 %t52, label %then5079, label %else5080 +then5079: %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 %endif4811 -else4810: + br label %endif5081 +else5080: %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 %endif4811 -endif4811: + br label %endif5081 +endif5081: %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 %panic4812, label %ok4813 -panic4812: - call void @finch_panic(ptr @.str.3072, i64 2201, ptr @.str.3073) + br i1 %t62, label %panic5082, label %ok5083 +panic5082: + call void @finch_panic(ptr @.str.3179, i64 2390, ptr @.str.3180) unreachable -ok4813: - %t63 = getelementptr inbounds %S.gen.Gen, ptr %t61, i32 0, i32 11 +ok5083: + %t63 = getelementptr inbounds %S.gen.Gen, ptr %t61, i32 0, i32 12 %t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %t63, i32 0, i32 1 %t65 = load { ptr, i64, i64 }, ptr %a5 store { ptr, i64, i64 } %t65, ptr %a66 @@ -43732,93 +51101,110 @@ ok4813: %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 %panic4814, label %ok4815 -panic4814: - call void @finch_panic(ptr @.str.3074, i64 2201, ptr @.str.3075) + br i1 %t76, label %panic5084, label %ok5085 +panic5084: + call void @finch_panic(ptr @.str.3181, i64 2390, ptr @.str.3182) unreachable -ok4815: +ok5085: %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 %t80 = insertvalue %S.gen.Loop %t74, i64 %t79, 2 - %t81 = load i64, ptr %t64 - %t82 = add i64 %t81, 1 - call void @finch_arr_reserve(ptr %t63, i64 %t82, i64 ptrtoint (ptr getelementptr (%S.gen.Loop, ptr null, i32 1) to i64)) - %t83 = load ptr, ptr %t63 - %t84 = getelementptr inbounds %S.gen.Loop, ptr %t83, i64 %t81 - store %S.gen.Loop %t80, ptr %t84 - store i64 %t82, ptr %t64 - %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 1, %t87 - br i1 %t88, label %range4816, label %inrange4817 -range4816: - call void @finch_panic_index(ptr @.str.3076, i64 2202, i64 1, i64 %t87) + %t81 = load ptr, ptr %a1 + %t82 = icmp eq ptr %t81, null + br i1 %t82, label %panic5086, label %ok5087 +panic5086: + call void @finch_panic(ptr @.str.3183, i64 2390, ptr @.str.3184) unreachable -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 - %t92 = call i1 @finch.gen.countBreaks(%S.ast.Node %t91) - store i1 %t92, ptr %a93 - %t94 = load ptr, ptr %a1 - %t95 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t96 = load { ptr, i64, i64 }, ptr %t95 - %t97 = extractvalue { ptr, i64, i64 } %t96, 1 - %t98 = icmp uge i64 1, %t97 - br i1 %t98, label %range4818, label %inrange4819 -range4818: - call void @finch_panic_index(ptr @.str.3077, i64 2203, i64 1, i64 %t97) +ok5087: + %t83 = getelementptr inbounds %S.gen.Gen, ptr %t81, i32 0, i32 11 + %t84 = getelementptr inbounds { ptr, i64, i64 }, ptr %t83, i32 0, i32 1 + %t85 = load i64, ptr %t84 + %t86 = insertvalue %S.gen.Loop %t80, i64 %t85, 3 + %t87 = load i64, ptr %t64 + %t88 = add i64 %t87, 1 + call void @finch_arr_reserve(ptr %t63, i64 %t88, i64 ptrtoint (ptr getelementptr (%S.gen.Loop, ptr null, i32 1) to i64)) + %t89 = load ptr, ptr %t63 + %t90 = getelementptr inbounds %S.gen.Loop, ptr %t89, i64 %t87 + store %S.gen.Loop %t86, ptr %t90 + store i64 %t88, ptr %t64 + %t91 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t92 = load { ptr, i64, i64 }, ptr %t91 + %t93 = extractvalue { ptr, i64, i64 } %t92, 1 + %t94 = icmp uge i64 1, %t93 + br i1 %t94, label %range5088, label %inrange5089 +range5088: + call void @finch_panic_index(ptr @.str.3185, i64 2391, i64 1, i64 %t93) unreachable -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 %panic4820, label %ok4821 -panic4820: - call void @finch_panic(ptr @.str.3078, i64 2204, ptr @.str.3079) +inrange5089: + %t95 = extractvalue { ptr, i64, i64 } %t92, 0 + %t96 = getelementptr inbounds %S.ast.Node, ptr %t95, i64 1 + %t97 = load %S.ast.Node, ptr %t96 + %t98 = call i1 @finch.gen.countBreaks(%S.ast.Node %t97) + store i1 %t98, ptr %a99 + %t100 = load ptr, ptr %a1 + %t101 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t102 = load { ptr, i64, i64 }, ptr %t101 + %t103 = extractvalue { ptr, i64, i64 } %t102, 1 + %t104 = icmp uge i64 1, %t103 + br i1 %t104, label %range5090, label %inrange5091 +range5090: + call void @finch_panic_index(ptr @.str.3186, i64 2392, i64 1, i64 %t103) unreachable -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 %panic4822, label %ok4823 -panic4822: - call void @finch_panic(ptr @.str.3080, i64 2204, ptr @.str.3081) +inrange5091: + %t105 = extractvalue { ptr, i64, i64 } %t102, 0 + %t106 = getelementptr inbounds %S.ast.Node, ptr %t105, i64 1 + %t107 = load %S.ast.Node, ptr %t106 + call void @finch.gen.block(ptr %t100, %S.ast.Node %t107, i1 true) + %t108 = load ptr, ptr %a1 + %t109 = icmp eq ptr %t108, null + br i1 %t109, label %panic5092, label %ok5093 +panic5092: + call void @finch_panic(ptr @.str.3187, i64 2393, ptr @.str.3188) unreachable -ok4823: - %t108 = sub i64 %t106, 1 - %t109 = load ptr, ptr %t104 - %t110 = getelementptr inbounds %S.gen.Loop, ptr %t109, i64 %t108 - %t111 = load %S.gen.Loop, ptr %t110 - store i64 %t108, ptr %t105 - %t112 = load ptr, ptr %a1 - %t113 = load { ptr, i64, i64 }, ptr %a5 - call void @finch.gen.br(ptr %t112, { ptr, i64, i64 } %t113) - %t114 = load i1, ptr %a41 - %t115 = xor i1 %t114, true - 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.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 %endif4830 -endif4830: +ok5093: + %t110 = getelementptr inbounds %S.gen.Gen, ptr %t108, i32 0, i32 12 + %t111 = getelementptr inbounds { ptr, i64, i64 }, ptr %t110, i32 0, i32 1 + %t112 = load i64, ptr %t111 + %t113 = icmp eq i64 %t112, 0 + br i1 %t113, label %panic5094, label %ok5095 +panic5094: + call void @finch_panic(ptr @.str.3189, i64 2393, ptr @.str.3190) + unreachable +ok5095: + %t114 = sub i64 %t112, 1 + %t115 = load ptr, ptr %t110 + %t116 = getelementptr inbounds %S.gen.Loop, ptr %t115, i64 %t114 + %t117 = load %S.gen.Loop, ptr %t116 + store i64 %t114, ptr %t111 + store %S.gen.Loop %t117, ptr %a118 + call void @finch.drop.S_gen_Loop(ptr %a118) + %t119 = load ptr, ptr %a1 + %t120 = load { ptr, i64, i64 }, ptr %a5 + call void @finch.gen.br(ptr %t119, { ptr, i64, i64 } %t120) + %t121 = load i1, ptr %a41 + %t122 = xor i1 %t121, true + br label %logic.from5096 +logic.from5096: + br i1 %t122, label %logic.end5098, label %logic.rhs5097 +logic.rhs5097: + %t123 = load i1, ptr %a99 + br label %logic.rend5099 +logic.rend5099: + br label %logic.end5098 +logic.end5098: + %t124 = phi i1 [ true, %logic.from5096 ], [ %t123, %logic.rend5099 ] + br i1 %t124, label %then5100, label %endif5102 +then5100: + %t125 = load ptr, ptr %a1 + %t126 = load { ptr, i64, i64 }, ptr %a11 + call void @finch.gen.label(ptr %t125, { ptr, i64, i64 } %t126) + br label %endif5102 +endif5102: + call void @finch_str_drop(ptr %a51) + call void @finch_str_drop(ptr %a11) + call void @finch_str_drop(ptr %a8) + call void @finch_str_drop(ptr %a5) ret void } @@ -43839,80 +51225,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.3082, i64 5, i64 0 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.3191, 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 %then4831, label %endif4833 -then4831: + br i1 %t7, label %then5103, label %endif5105 +then5103: ret i1 true -endif4833: +endif5105: %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.3083, i64 5, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.3192, 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.from4834 -logic.from4834: - br i1 %t13, label %logic.end4836, label %logic.rhs4835 -logic.rhs4835: + br label %logic.from5106 +logic.from5106: + br i1 %t13, label %logic.end5108, label %logic.rhs5107 +logic.rhs5107: %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.3084, i64 3, i64 0 }, ptr %a17 + store { ptr, i64, i64 } { ptr @.str.3193, 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.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: + br label %logic.rend5109 +logic.rend5109: + br label %logic.end5108 +logic.end5108: + %t20 = phi i1 [ true, %logic.from5106 ], [ %t19, %logic.rend5109 ] + br label %logic.from5110 +logic.from5110: + br i1 %t20, label %logic.end5112, label %logic.rhs5111 +logic.rhs5111: %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.3085, i64 4, i64 0 }, ptr %a24 + store { ptr, i64, i64 } { ptr @.str.3194, 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.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: + br label %logic.rend5113 +logic.rend5113: + br label %logic.end5112 +logic.end5112: + %t27 = phi i1 [ true, %logic.from5110 ], [ %t26, %logic.rend5113 ] + br i1 %t27, label %then5114, label %endif5116 +then5114: ret i1 false -endif4844: +endif5116: %t28 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 9 store i64 0, ptr %a29 - br label %each.cond4845 -each.cond4845: + br label %each.cond5117 +each.cond5117: %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.body4846, label %each.end4848 -each.body4846: + br i1 %t33, label %each.body5118, label %each.end5120 +each.body5118: %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 %then4849, label %endif4851 -then4849: + br i1 %t39, label %then5121, label %endif5123 +then5121: ret i1 true -endif4851: - br label %each.step4847 -each.step4847: +endif5123: + br label %each.step5119 +each.step5119: %t40 = load i64, ptr %a29 %t41 = add i64 %t40, 1 store i64 %t41, ptr %a29 - br label %each.cond4845 -each.end4848: + br label %each.cond5117 +each.end5120: ret i1 false } @@ -43920,39 +51306,53 @@ define internal void @finch.gen.forStmt(ptr %p0, %S.ast.Node %p1) { entry: %a1 = alloca ptr, align 16 %a2 = alloca %S.ast.Node, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 + %a22 = alloca %S.gen.Val, align 16 + %a23 = alloca %S.ast.Type, align 16 + %a25 = alloca { ptr, i64, i64 }, align 16 %a26 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a79 = 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 + %a28 = alloca %S.gen.Val, align 16 + %a29 = alloca { ptr, i64, i64 }, align 16 + %a49 = alloca %S.gen.Val, align 16 + %a50 = alloca %S.ast.Type, align 16 + %a52 = alloca { ptr, i64, i64 }, align 16 + %a53 = alloca { ptr, i64, i64 }, align 16 + %a55 = alloca %S.gen.Val, align 16 + %a56 = alloca { ptr, i64, i64 }, align 16 + %a65 = alloca %S.ast.Type, align 16 + %a66 = alloca { ptr, i64, i64 }, align 16 + %a69 = alloca { ptr, i64, i64 }, align 16 + %a72 = alloca { ptr, i64, i64 }, align 16 + %a75 = alloca { ptr, i64, i64 }, align 16 + %a78 = alloca { ptr, i64, i64 }, align 16 %a86 = 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 + %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 + %a94 = alloca { ptr, i64, i64 }, align 16 + %a95 = alloca { ptr, i64, i64 }, align 16 %a96 = alloca { ptr, i64, i64 }, 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 - %a152 = 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 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = 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 + %a102 = alloca { ptr, i64, i64 }, align 16 + %a105 = alloca { ptr, i64, i64 }, align 16 + %a106 = 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 + %a161 = alloca %S.gen.Loop, 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 + %a177 = alloca { ptr, i64, i64 }, align 16 + %a178 = alloca { ptr, i64, i64 }, align 16 + %a179 = alloca { ptr, i64, i64 }, align 16 + %a180 = alloca { ptr, i64, i64 }, align 16 + %a183 = alloca { ptr, i64, i64 }, align 16 + %a185 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store %S.ast.Node %p1, ptr %a2 %t3 = load ptr, ptr %a1 @@ -43961,229 +51361,278 @@ 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 %range4852, label %inrange4853 -range4852: - call void @finch_panic_index(ptr @.str.3086, i64 2228, i64 0, i64 %t7) + br i1 %t8, label %range5124, label %inrange5125 +range5124: + call void @finch_panic_index(ptr @.str.3195, i64 2417, i64 0, i64 %t7) unreachable -inrange4853: +inrange5125: %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.3087, i64 3, i64 0 }) + %t13 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3196, 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 %range4854, label %inrange4855 -range4854: - call void @finch_panic_index(ptr @.str.3088, i64 2228, i64 0, i64 %t16) + br i1 %t17, label %range5126, label %inrange5127 +range5126: + call void @finch_panic_index(ptr @.str.3197, i64 2417, i64 0, i64 %t16) unreachable -inrange4855: +inrange5127: %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.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) - %t25 = load { ptr, i64, i64 }, ptr %a24 - store { ptr, i64, i64 } %t25, ptr %a26 - %t27 = load ptr, ptr %a1 - %t28 = load ptr, ptr %a1 - %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 1, %t31 - br i1 %t32, label %range4856, label %inrange4857 -range4856: - call void @finch_panic_index(ptr @.str.3090, i64 2229, i64 1, i64 %t31) + %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.3198, i64 20, i64 0 }) + store %S.gen.Val %t12, ptr %a22 + call void @finch.drop.S_gen_Val(ptr %a22) + store %S.ast.Type %t13, ptr %a23 + call void @finch.drop.S_ast_Type(ptr %a23) + %t24 = extractvalue %S.gen.Val %t21, 0 + store { ptr, i64, i64 } %t24, ptr %a25 + call void @finch_str_copy(ptr %a26, ptr %a25) + %t27 = load { ptr, i64, i64 }, ptr %a26 + store %S.gen.Val %t21, ptr %a28 + call void @finch.drop.S_gen_Val(ptr %a28) + store { ptr, i64, i64 } %t27, ptr %a29 + %t30 = load ptr, ptr %a1 + %t31 = load ptr, ptr %a1 + %t32 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t33 = load { ptr, i64, i64 }, ptr %t32 + %t34 = extractvalue { ptr, i64, i64 } %t33, 1 + %t35 = icmp uge i64 1, %t34 + br i1 %t35, label %range5128, label %inrange5129 +range5128: + call void @finch_panic_index(ptr @.str.3199, i64 2418, i64 1, i64 %t34) unreachable -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.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 %range4858, label %inrange4859 -range4858: - call void @finch_panic_index(ptr @.str.3092, i64 2229, i64 1, i64 %t40) +inrange5129: + %t36 = extractvalue { ptr, i64, i64 } %t33, 0 + %t37 = getelementptr inbounds %S.ast.Node, ptr %t36, i64 1 + %t38 = load %S.ast.Node, ptr %t37 + %t39 = call %S.gen.Val @finch.gen.expr(ptr %t31, %S.ast.Node %t38) + %t40 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3200, i64 3, i64 0 }) + %t41 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t42 = load { ptr, i64, i64 }, ptr %t41 + %t43 = extractvalue { ptr, i64, i64 } %t42, 1 + %t44 = icmp uge i64 1, %t43 + br i1 %t44, label %range5130, label %inrange5131 +range5130: + call void @finch_panic_index(ptr @.str.3201, i64 2418, i64 1, i64 %t43) unreachable -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.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) - %t49 = load { ptr, i64, i64 }, ptr %a48 - store { ptr, i64, i64 } %t49, ptr %a50 - %t51 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t51) - %t52 = load ptr, ptr %a1 - %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.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.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.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.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.3098, i64 7, i64 0 }) - store { ptr, i64, i64 } %t70, ptr %a71 - %t72 = load ptr, ptr %a1 - %t73 = load { ptr, i64, i64 }, ptr %a62 - call void @finch.gen.br(ptr %t72, { ptr, i64, i64 } %t73) - %t74 = load ptr, ptr %a1 - %t75 = load { ptr, i64, i64 }, ptr %a62 - call void @finch.gen.label(ptr %t74, { ptr, i64, i64 } %t75) +inrange5131: + %t45 = extractvalue { ptr, i64, i64 } %t42, 0 + %t46 = getelementptr inbounds %S.ast.Node, ptr %t45, i64 1 + %t47 = load %S.ast.Node, ptr %t46 + %t48 = call %S.gen.Val @finch.gen.coerce(ptr %t30, %S.gen.Val %t39, %S.ast.Type %t40, %S.ast.Node %t47, { ptr, i64, i64 } { ptr @.str.3202, i64 18, i64 0 }) + store %S.gen.Val %t39, ptr %a49 + call void @finch.drop.S_gen_Val(ptr %a49) + store %S.ast.Type %t40, ptr %a50 + call void @finch.drop.S_ast_Type(ptr %a50) + %t51 = extractvalue %S.gen.Val %t48, 0 + store { ptr, i64, i64 } %t51, ptr %a52 + call void @finch_str_copy(ptr %a53, ptr %a52) + %t54 = load { ptr, i64, i64 }, ptr %a53 + store %S.gen.Val %t48, ptr %a55 + call void @finch.drop.S_gen_Val(ptr %a55) + store { ptr, i64, i64 } %t54, ptr %a56 + %t57 = load ptr, ptr %a1 + call void @finch.gen.pushScope(ptr %t57) + %t58 = load ptr, ptr %a1 + %t59 = load %S.ast.Node, ptr %a2 + %t60 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t61 = load { ptr, i64, i64 }, ptr %t60 + %t62 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3203, i64 3, i64 0 }) + %t63 = load { ptr, i64, i64 }, ptr %a29 + %t64 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t58, %S.ast.Node %t59, { ptr, i64, i64 } %t61, %S.ast.Type %t62, { ptr, i64, i64 } %t63, i1 true, i1 false) + store %S.ast.Type %t62, ptr %a65 + call void @finch.drop.S_ast_Type(ptr %a65) + store { ptr, i64, i64 } %t64, ptr %a66 + %t67 = load ptr, ptr %a1 + %t68 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t67, { ptr, i64, i64 } { ptr @.str.3204, i64 8, i64 0 }) + store { ptr, i64, i64 } %t68, ptr %a69 + %t70 = load ptr, ptr %a1 + %t71 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t70, { ptr, i64, i64 } { ptr @.str.3205, i64 8, i64 0 }) + store { ptr, i64, i64 } %t71, ptr %a72 + %t73 = load ptr, ptr %a1 + %t74 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t73, { ptr, i64, i64 } { ptr @.str.3206, i64 8, i64 0 }) + store { ptr, i64, i64 } %t74, ptr %a75 %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.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.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.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 - store { ptr, i64, i64 } %t89, 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 - %t95 = call { ptr, i64, i64 } @finch.gen.op(ptr %t80, { ptr, i64, i64 } %t94) - store { ptr, i64, i64 } %t95, ptr %a96 - %t97 = load ptr, ptr %a1 - %t98 = load { ptr, i64, i64 }, ptr %a96 - %t99 = load { ptr, i64, i64 }, ptr %a65 - %t100 = load { ptr, i64, i64 }, ptr %a71 - call void @finch.gen.condBr(ptr %t97, { ptr, i64, i64 } %t98, { ptr, i64, i64 } %t99, { ptr, i64, i64 } %t100) - %t101 = load ptr, ptr %a1 - %t102 = load { ptr, i64, i64 }, ptr %a65 - 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 %panic4860, label %ok4861 -panic4860: - call void @finch_panic(ptr @.str.3102, i64 2242, ptr @.str.3103) + %t77 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t76, { ptr, i64, i64 } { ptr @.str.3207, i64 7, i64 0 }) + store { ptr, i64, i64 } %t77, ptr %a78 + %t79 = load ptr, ptr %a1 + %t80 = load { ptr, i64, i64 }, ptr %a69 + call void @finch.gen.br(ptr %t79, { ptr, i64, i64 } %t80) + %t81 = load ptr, ptr %a1 + %t82 = load { ptr, i64, i64 }, ptr %a69 + call void @finch.gen.label(ptr %t81, { ptr, i64, i64 } %t82) + %t83 = load ptr, ptr %a1 + %t84 = load { ptr, i64, i64 }, ptr %a66 + %t85 = call { ptr, i64, i64 } @finch.gen.load(ptr %t83, { ptr, i64, i64 } { ptr @.str.3208, i64 3, i64 0 }, { ptr, i64, i64 } %t84) + store { ptr, i64, i64 } %t85, ptr %a86 + %t87 = load ptr, ptr %a1 + %t88 = load { ptr, i64, i64 }, ptr %a86 + store { ptr, i64, i64 } { ptr @.str.3209, i64 13, i64 0 }, ptr %a90 + store { ptr, i64, i64 } %t88, ptr %a91 + call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) + %t92 = load { ptr, i64, i64 }, ptr %a89 + store { ptr, i64, i64 } %t92, ptr %a94 + store { ptr, i64, i64 } { ptr @.str.3210, i64 2, i64 0 }, ptr %a95 + call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) + store { ptr, i64, i64 } %t92, ptr %a96 + call void @finch_str_drop(ptr %a96) + %t97 = load { ptr, i64, i64 }, ptr %a93 + %t98 = load { ptr, i64, i64 }, ptr %a56 + store { ptr, i64, i64 } %t97, ptr %a100 + store { ptr, i64, i64 } %t98, ptr %a101 + call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) + store { ptr, i64, i64 } %t97, ptr %a102 + call void @finch_str_drop(ptr %a102) + %t103 = load { ptr, i64, i64 }, ptr %a99 + %t104 = call { ptr, i64, i64 } @finch.gen.op(ptr %t87, { ptr, i64, i64 } %t103) + store { ptr, i64, i64 } %t103, ptr %a105 + call void @finch_str_drop(ptr %a105) + store { ptr, i64, i64 } %t104, ptr %a106 + %t107 = load ptr, ptr %a1 + %t108 = load { ptr, i64, i64 }, ptr %a106 + %t109 = load { ptr, i64, i64 }, ptr %a72 + %t110 = load { ptr, i64, i64 }, ptr %a78 + call void @finch.gen.condBr(ptr %t107, { ptr, i64, i64 } %t108, { ptr, i64, i64 } %t109, { ptr, i64, i64 } %t110) + %t111 = load ptr, ptr %a1 + %t112 = load { ptr, i64, i64 }, ptr %a72 + call void @finch.gen.label(ptr %t111, { ptr, i64, i64 } %t112) + %t113 = load ptr, ptr %a1 + %t114 = icmp eq ptr %t113, null + br i1 %t114, label %panic5132, label %ok5133 +panic5132: + call void @finch_panic(ptr @.str.3211, i64 2431, ptr @.str.3212) unreachable -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 - 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.Loop zeroinitializer, { ptr, i64, i64 } %t110, 0 - %t112 = load { ptr, i64, i64 }, ptr %a71 - store { ptr, i64, i64 } %t112, ptr %a113 - call void @finch_str_copy(ptr %a114, ptr %a113) - %t115 = load { ptr, i64, i64 }, ptr %a114 - %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 %panic4862, label %ok4863 -panic4862: - call void @finch_panic(ptr @.str.3104, i64 2242, ptr @.str.3105) - unreachable -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 - %t122 = insertvalue %S.gen.Loop %t116, i64 %t121, 2 - %t123 = load i64, ptr %t106 - %t124 = add i64 %t123, 1 - call void @finch_arr_reserve(ptr %t105, i64 %t124, i64 ptrtoint (ptr getelementptr (%S.gen.Loop, ptr null, i32 1) to i64)) - %t125 = load ptr, ptr %t105 - %t126 = getelementptr inbounds %S.gen.Loop, ptr %t125, i64 %t123 - store %S.gen.Loop %t122, ptr %t126 - store i64 %t124, ptr %t106 +ok5133: + %t115 = getelementptr inbounds %S.gen.Gen, ptr %t113, i32 0, i32 12 + %t116 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i32 0, i32 1 + %t117 = load { ptr, i64, i64 }, ptr %a75 + store { ptr, i64, i64 } %t117, ptr %a118 + call void @finch_str_copy(ptr %a119, ptr %a118) + %t120 = load { ptr, i64, i64 }, ptr %a119 + %t121 = insertvalue %S.gen.Loop zeroinitializer, { ptr, i64, i64 } %t120, 0 + %t122 = load { ptr, i64, i64 }, ptr %a78 + store { ptr, i64, i64 } %t122, ptr %a123 + call void @finch_str_copy(ptr %a124, ptr %a123) + %t125 = load { ptr, i64, i64 }, ptr %a124 + %t126 = insertvalue %S.gen.Loop %t121, { ptr, i64, i64 } %t125, 1 %t127 = load ptr, ptr %a1 - %t128 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t129 = load { ptr, i64, i64 }, ptr %t128 - %t130 = extractvalue { ptr, i64, i64 } %t129, 1 - %t131 = icmp uge i64 2, %t130 - br i1 %t131, label %range4864, label %inrange4865 -range4864: - call void @finch_panic_index(ptr @.str.3106, i64 2243, i64 2, i64 %t130) + %t128 = icmp eq ptr %t127, null + br i1 %t128, label %panic5134, label %ok5135 +panic5134: + call void @finch_panic(ptr @.str.3213, i64 2431, ptr @.str.3214) unreachable -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 %panic4866, label %ok4867 -panic4866: - call void @finch_panic(ptr @.str.3107, i64 2244, ptr @.str.3108) +ok5135: + %t129 = getelementptr inbounds %S.gen.Gen, ptr %t127, i32 0, i32 10 + %t130 = getelementptr inbounds { ptr, i64, i64 }, ptr %t129, i32 0, i32 1 + %t131 = load i64, ptr %t130 + %t132 = insertvalue %S.gen.Loop %t126, i64 %t131, 2 + %t133 = load ptr, ptr %a1 + %t134 = icmp eq ptr %t133, null + br i1 %t134, label %panic5136, label %ok5137 +panic5136: + call void @finch_panic(ptr @.str.3215, i64 2431, ptr @.str.3216) unreachable -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 %panic4868, label %ok4869 -panic4868: - call void @finch_panic(ptr @.str.3109, i64 2244, ptr @.str.3110) +ok5137: + %t135 = getelementptr inbounds %S.gen.Gen, ptr %t133, i32 0, i32 11 + %t136 = getelementptr inbounds { ptr, i64, i64 }, ptr %t135, i32 0, i32 1 + %t137 = load i64, ptr %t136 + %t138 = insertvalue %S.gen.Loop %t132, i64 %t137, 3 + %t139 = load i64, ptr %t116 + %t140 = add i64 %t139, 1 + call void @finch_arr_reserve(ptr %t115, i64 %t140, i64 ptrtoint (ptr getelementptr (%S.gen.Loop, ptr null, i32 1) to i64)) + %t141 = load ptr, ptr %t115 + %t142 = getelementptr inbounds %S.gen.Loop, ptr %t141, i64 %t139 + store %S.gen.Loop %t138, ptr %t142 + store i64 %t140, ptr %t116 + %t143 = load ptr, ptr %a1 + %t144 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t145 = load { ptr, i64, i64 }, ptr %t144 + %t146 = extractvalue { ptr, i64, i64 } %t145, 1 + %t147 = icmp uge i64 2, %t146 + br i1 %t147, label %range5138, label %inrange5139 +range5138: + call void @finch_panic_index(ptr @.str.3217, i64 2432, i64 2, i64 %t146) unreachable -ok4869: - %t141 = sub i64 %t139, 1 - %t142 = load ptr, ptr %t137 - %t143 = getelementptr inbounds %S.gen.Loop, ptr %t142, i64 %t141 - %t144 = load %S.gen.Loop, ptr %t143 - store i64 %t141, ptr %t138 - %t145 = load ptr, ptr %a1 - %t146 = load { ptr, i64, i64 }, ptr %a68 - call void @finch.gen.br(ptr %t145, { ptr, i64, i64 } %t146) - %t147 = load ptr, ptr %a1 - %t148 = load { ptr, i64, i64 }, ptr %a68 - 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.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.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.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.3112, i64 3, i64 0 }, { ptr, i64, i64 } %t164, { ptr, i64, i64 } %t165) +inrange5139: + %t148 = extractvalue { ptr, i64, i64 } %t145, 0 + %t149 = getelementptr inbounds %S.ast.Node, ptr %t148, i64 2 + %t150 = load %S.ast.Node, ptr %t149 + call void @finch.gen.block(ptr %t143, %S.ast.Node %t150, i1 true) + %t151 = load ptr, ptr %a1 + %t152 = icmp eq ptr %t151, null + br i1 %t152, label %panic5140, label %ok5141 +panic5140: + call void @finch_panic(ptr @.str.3218, i64 2433, ptr @.str.3219) + unreachable +ok5141: + %t153 = getelementptr inbounds %S.gen.Gen, ptr %t151, i32 0, i32 12 + %t154 = getelementptr inbounds { ptr, i64, i64 }, ptr %t153, i32 0, i32 1 + %t155 = load i64, ptr %t154 + %t156 = icmp eq i64 %t155, 0 + br i1 %t156, label %panic5142, label %ok5143 +panic5142: + call void @finch_panic(ptr @.str.3220, i64 2433, ptr @.str.3221) + unreachable +ok5143: + %t157 = sub i64 %t155, 1 + %t158 = load ptr, ptr %t153 + %t159 = getelementptr inbounds %S.gen.Loop, ptr %t158, i64 %t157 + %t160 = load %S.gen.Loop, ptr %t159 + store i64 %t157, ptr %t154 + store %S.gen.Loop %t160, ptr %a161 + call void @finch.drop.S_gen_Loop(ptr %a161) + %t162 = load ptr, ptr %a1 + %t163 = load { ptr, i64, i64 }, ptr %a75 + call void @finch.gen.br(ptr %t162, { ptr, i64, i64 } %t163) + %t164 = load ptr, ptr %a1 + %t165 = load { ptr, i64, i64 }, ptr %a75 + call void @finch.gen.label(ptr %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) - %t168 = load ptr, ptr %a1 - %t169 = load { ptr, i64, i64 }, ptr %a71 - call void @finch.gen.label(ptr %t168, { ptr, i64, i64 } %t169) + %t167 = load { ptr, i64, i64 }, ptr %a66 + %t168 = call { ptr, i64, i64 } @finch.gen.load(ptr %t166, { ptr, i64, i64 } { ptr @.str.3222, i64 3, i64 0 }, { ptr, i64, i64 } %t167) + store { ptr, i64, i64 } %t168, ptr %a169 %t170 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t170) + %t171 = load ptr, ptr %a1 + %t172 = load { ptr, i64, i64 }, ptr %a169 + store { ptr, i64, i64 } { ptr @.str.3224, i64 8, i64 0 }, 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 + store { ptr, i64, i64 } %t176, ptr %a178 + store { ptr, i64, i64 } { ptr @.str.3225, i64 3, i64 0 }, ptr %a179 + call void @finch_str_concat(ptr %a177, ptr %a178, ptr %a179) + store { ptr, i64, i64 } %t176, ptr %a180 + call void @finch_str_drop(ptr %a180) + %t181 = load { ptr, i64, i64 }, ptr %a177 + %t182 = call { ptr, i64, i64 } @finch.gen.op(ptr %t171, { ptr, i64, i64 } %t181) + store { ptr, i64, i64 } %t181, ptr %a183 + call void @finch_str_drop(ptr %a183) + %t184 = load { ptr, i64, i64 }, ptr %a66 + call void @finch.gen.store(ptr %t170, { ptr, i64, i64 } { ptr @.str.3223, i64 3, i64 0 }, { ptr, i64, i64 } %t182, { ptr, i64, i64 } %t184) + store { ptr, i64, i64 } %t182, ptr %a185 + call void @finch_str_drop(ptr %a185) + %t186 = load ptr, ptr %a1 + %t187 = load { ptr, i64, i64 }, ptr %a69 + call void @finch.gen.br(ptr %t186, { ptr, i64, i64 } %t187) + %t188 = load ptr, ptr %a1 + %t189 = load { ptr, i64, i64 }, ptr %a78 + call void @finch.gen.label(ptr %t188, { ptr, i64, i64 } %t189) + %t190 = load ptr, ptr %a1 + call void @finch.gen.popScope(ptr %t190) + call void @finch_str_drop(ptr %a169) + call void @finch_str_drop(ptr %a106) + call void @finch_str_drop(ptr %a86) + call void @finch_str_drop(ptr %a78) + call void @finch_str_drop(ptr %a75) + call void @finch_str_drop(ptr %a72) + call void @finch_str_drop(ptr %a69) + call void @finch_str_drop(ptr %a66) + call void @finch_str_drop(ptr %a56) + call void @finch_str_drop(ptr %a29) ret void } @@ -44200,107 +51649,157 @@ entry: %a24 = alloca %S.ast.Type, align 16 %a25 = alloca %S.ast.Type, align 16 %a27 = alloca %S.ast.Type, align 16 - %a47 = alloca i1, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 + %a46 = alloca { ptr, i64, i64 }, align 16 + %a48 = alloca i1, align 16 + %a51 = alloca { ptr, i64, i64 }, align 16 + %a54 = alloca { ptr, i64, i64 }, align 16 %a61 = alloca { ptr, i64, i64 }, align 16 %a62 = 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 %a66 = 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 - %a70 = 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 %a74 = alloca { ptr, i64, i64 }, align 16 %a75 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a84 = 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 + %a83 = alloca { ptr, i64, i64 }, align 16 + %a85 = alloca { ptr, i64, i64 }, align 16 %a87 = alloca { ptr, i64, i64 }, align 16 %a90 = alloca { ptr, i64, i64 }, align 16 %a93 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 + %a96 = alloca { ptr, i64, i64 }, align 16 + %a99 = alloca { ptr, i64, i64 }, align 16 + %a102 = 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 + %a115 = alloca { ptr, i64, i64 }, align 16 %a121 = alloca { ptr, i64, i64 }, align 16 %a122 = alloca { ptr, i64, i64 }, align 16 %a123 = alloca { ptr, i64, i64 }, align 16 - %a125 = 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 - %a131 = alloca { ptr, i64, i64 }, align 16 + %a128 = alloca { ptr, i64, i64 }, align 16 + %a129 = alloca { ptr, i64, i64 }, align 16 + %a132 = alloca { ptr, i64, i64 }, align 16 + %a133 = 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 %a137 = 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 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 + %a143 = alloca { ptr, i64, i64 }, align 16 %a145 = alloca { ptr, i64, i64 }, align 16 %a146 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 + %a150 = alloca { ptr, i64, i64 }, align 16 + %a151 = alloca { ptr, i64, i64 }, align 16 + %a152 = alloca { ptr, i64, i64 }, align 16 + %a154 = alloca { ptr, i64, i64 }, align 16 + %a155 = alloca { ptr, i64, i64 }, align 16 + %a156 = alloca { ptr, i64, i64 }, align 16 + %a157 = 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 + %a163 = alloca { ptr, i64, i64 }, align 16 + %a166 = alloca { ptr, i64, i64 }, align 16 %a169 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a177 = 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 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 + %a186 = alloca { ptr, i64, i64 }, align 16 + %a187 = alloca { ptr, i64, i64 }, align 16 + %a188 = alloca { ptr, i64, i64 }, align 16 + %a189 = alloca { ptr, i64, i64 }, align 16 + %a191 = alloca { ptr, i64, i64 }, align 16 + %a192 = alloca { ptr, i64, i64 }, align 16 + %a193 = alloca { ptr, i64, i64 }, align 16 + %a194 = alloca { ptr, i64, i64 }, align 16 + %a198 = 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 %a203 = alloca { ptr, i64, i64 }, align 16 %a204 = alloca { ptr, i64, i64 }, align 16 %a206 = 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 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 %a221 = alloca { ptr, i64, i64 }, align 16 - %a225 = 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 %a229 = 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 + %a233 = 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 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a259 = 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 + %a241 = alloca { ptr, i64, i64 }, align 16 + %a243 = 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 + %a249 = alloca { ptr, i64, i64 }, align 16 + %a251 = alloca { ptr, i64, i64 }, align 16 + %a252 = alloca { ptr, i64, i64 }, align 16 + %a256 = alloca { ptr, i64, i64 }, align 16 + %a257 = alloca { ptr, i64, i64 }, 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 %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 + %a266 = alloca { ptr, i64, i64 }, align 16 + %a267 = alloca { ptr, i64, i64 }, align 16 + %a268 = alloca { ptr, i64, i64 }, align 16 + %a269 = alloca { ptr, i64, i64 }, align 16 + %a272 = alloca { ptr, i64, i64 }, align 16 + %a275 = alloca { ptr, i64, i64 }, align 16 %a283 = alloca { ptr, i64, i64 }, align 16 - %a306 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a371 = 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 + %a290 = alloca { ptr, i64, i64 }, align 16 + %a291 = 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 + %a301 = alloca { ptr, i64, i64 }, align 16 + %a302 = alloca { ptr, i64, i64 }, align 16 + %a305 = alloca { ptr, i64, i64 }, align 16 + %a308 = 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 + %a322 = 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 + %a360 = alloca { ptr, i64, i64 }, align 16 + %a369 = 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 + %a392 = alloca { ptr, i64, i64 }, align 16 + %a401 = alloca { ptr, i64, i64 }, align 16 + %a421 = alloca %S.gen.Loop, align 16 + %a429 = 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 + %a437 = alloca { ptr, i64, i64 }, align 16 + %a438 = alloca { ptr, i64, i64 }, align 16 + %a439 = alloca { ptr, i64, i64 }, align 16 + %a440 = alloca { ptr, i64, i64 }, align 16 + %a443 = alloca { ptr, i64, i64 }, align 16 + %a445 = 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 @@ -44310,11 +51809,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 %range4870, label %inrange4871 -range4870: - call void @finch_panic_index(ptr @.str.3115, i64 2256, i64 0, i64 %t8) + br i1 %t9, label %range5144, label %inrange5145 +range5144: + call void @finch_panic_index(ptr @.str.3226, i64 2445, i64 0, i64 %t8) unreachable -inrange4871: +inrange5145: %t10 = extractvalue { ptr, i64, i64 } %t7, 0 %t11 = getelementptr inbounds %S.ast.Type, ptr %t10, i64 0 %t12 = load %S.ast.Type, ptr %t11 @@ -44326,11 +51825,11 @@ inrange4871: %t18 = load { ptr, i64, i64 }, ptr %t17 %t19 = extractvalue { ptr, i64, i64 } %t18, 1 %t20 = icmp uge i64 1, %t19 - br i1 %t20, label %range4872, label %inrange4873 -range4872: - call void @finch_panic_index(ptr @.str.3116, i64 2257, i64 1, i64 %t19) + br i1 %t20, label %range5146, label %inrange5147 +range5146: + call void @finch_panic_index(ptr @.str.3227, i64 2446, i64 1, i64 %t19) unreachable -inrange4873: +inrange5147: %t21 = extractvalue { ptr, i64, i64 } %t18, 0 %t22 = getelementptr inbounds %S.ast.Type, ptr %t21, i64 1 %t23 = load %S.ast.Type, ptr %t22 @@ -44339,20 +51838,20 @@ inrange4873: %t26 = load %S.ast.Type, ptr %a25 store %S.ast.Type %t26, ptr %a27 %t28 = load i1, ptr %a5 - br label %logic.from4874 -logic.from4874: - br i1 %t28, label %logic.rhs4875, label %logic.end4876 -logic.rhs4875: + br label %logic.from5148 +logic.from5148: + br i1 %t28, label %logic.rhs5149, label %logic.end5150 +logic.rhs5149: %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 %range4877, label %inrange4878 -range4877: - call void @finch_panic_index(ptr @.str.3117, i64 2258, i64 0, i64 %t32) + br i1 %t33, label %range5151, label %inrange5152 +range5151: + call void @finch_panic_index(ptr @.str.3228, i64 2447, i64 0, i64 %t32) unreachable -inrange4878: +inrange5152: %t34 = extractvalue { ptr, i64, i64 } %t31, 0 %t35 = getelementptr inbounds %S.ast.Node, ptr %t34, i64 0 %t36 = load %S.ast.Node, ptr %t35 @@ -44361,458 +51860,603 @@ inrange4878: %t39 = load { ptr, i64, i64 }, ptr %t38 %t40 = extractvalue { ptr, i64, i64 } %t39, 1 %t41 = icmp uge i64 1, %t40 - br i1 %t41, label %range4879, label %inrange4880 -range4879: - call void @finch_panic_index(ptr @.str.3118, i64 2258, i64 1, i64 %t40) + br i1 %t41, label %range5153, label %inrange5154 +range5153: + call void @finch_panic_index(ptr @.str.3229, i64 2447, i64 1, i64 %t40) unreachable -inrange4880: +inrange5154: %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.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.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.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 %then4882, label %endif4884 -then4882: - %t55 = load ptr, ptr %a1 + store { ptr, i64, i64 } %t37, ptr %a46 + call void @finch_str_drop(ptr %a46) + br label %logic.rend5155 +logic.rend5155: + br label %logic.end5150 +logic.end5150: + %t47 = phi i1 [ false, %logic.from5148 ], [ %t45, %logic.rend5155 ] + store i1 %t47, ptr %a48 + %t49 = load ptr, ptr %a1 + %t50 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t49, { ptr, i64, i64 } { ptr @.str.3230, i64 3, i64 0 }) + store { ptr, i64, i64 } %t50, ptr %a51 + %t52 = load ptr, ptr %a1 + %t53 = load { ptr, i64, i64 }, ptr %a51 + call void @finch.gen.store(ptr %t52, { ptr, i64, i64 } { ptr @.str.3231, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.3232, i64 1, i64 0 }, { ptr, i64, i64 } %t53) + store { ptr, i64, i64 } { ptr @.str.3233, i64 0, i64 0 }, ptr %a54 + %t55 = load i1, ptr %a5 + br i1 %t55, label %then5156, label %endif5158 +then5156: %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.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.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 - 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 - store { ptr, i64, i64 } %t72, ptr %a74 - 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.3123, i64 3, i64 0 }, { ptr, i64, i64 } %t77) - store { ptr, i64, i64 } %t78, ptr %a53 - br label %endif4884 -endif4884: - %t79 = load ptr, ptr %a1 - %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.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.3129, i64 8, i64 0 }) + %t58 = load ptr, ptr %a1 + %t59 = load %S.ast.Type, ptr %a4 + %t60 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t58, %S.ast.Type %t59) + store { ptr, i64, i64 } { ptr @.str.3235, i64 23, i64 0 }, ptr %a62 + store { ptr, i64, i64 } %t60, ptr %a63 + call void @finch_str_concat(ptr %a61, ptr %a62, ptr %a63) + store { ptr, i64, i64 } %t60, ptr %a64 + call void @finch_str_drop(ptr %a64) + %t65 = load { ptr, i64, i64 }, ptr %a61 + store { ptr, i64, i64 } %t65, ptr %a67 + store { ptr, i64, i64 } { ptr @.str.3236, i64 6, i64 0 }, ptr %a68 + call void @finch_str_concat(ptr %a66, ptr %a67, ptr %a68) + store { ptr, i64, i64 } %t65, ptr %a69 + call void @finch_str_drop(ptr %a69) + %t70 = load { ptr, i64, i64 }, ptr %a66 + %t71 = load { ptr, i64, i64 }, ptr %a3 + 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) + store { ptr, i64, i64 } %t70, ptr %a75 + call void @finch_str_drop(ptr %a75) + %t76 = load { ptr, i64, i64 }, ptr %a72 + store { ptr, i64, i64 } %t76, ptr %a78 + store { ptr, i64, i64 } { ptr @.str.3237, i64 14, i64 0 }, ptr %a79 + call void @finch_str_concat(ptr %a77, ptr %a78, ptr %a79) + store { ptr, i64, i64 } %t76, ptr %a80 + call void @finch_str_drop(ptr %a80) + %t81 = load { ptr, i64, i64 }, ptr %a77 + %t82 = call { ptr, i64, i64 } @finch.gen.op(ptr %t57, { ptr, i64, i64 } %t81) + store { ptr, i64, i64 } %t81, ptr %a83 + call void @finch_str_drop(ptr %a83) + %t84 = call { ptr, i64, i64 } @finch.gen.load(ptr %t56, { ptr, i64, i64 } { ptr @.str.3234, i64 3, i64 0 }, { ptr, i64, i64 } %t82) + store { ptr, i64, i64 } %t82, ptr %a85 + call void @finch_str_drop(ptr %a85) + %t86 = load { ptr, i64, i64 }, ptr %a54 + store { ptr, i64, i64 } %t84, ptr %a54 store { ptr, i64, i64 } %t86, ptr %a87 + call void @finch_str_drop(ptr %a87) + br label %endif5158 +endif5158: %t88 = load ptr, ptr %a1 - %t89 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t88, { ptr, i64, i64 } { ptr @.str.3130, i64 8, i64 0 }) + %t89 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t88, { ptr, i64, i64 } { ptr @.str.3238, 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.3131, i64 7, i64 0 }) + %t92 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t91, { ptr, i64, i64 } { ptr @.str.3239, i64 9, i64 0 }) store { ptr, i64, i64 } %t92, ptr %a93 %t94 = load ptr, ptr %a1 - %t95 = load { ptr, i64, i64 }, ptr %a81 - call void @finch.gen.br(ptr %t94, { ptr, i64, i64 } %t95) - %t96 = load ptr, ptr %a1 - %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.from4885 -logic.from4885: - br i1 %t98, label %logic.rhs4886, label %logic.end4887 -logic.rhs4886: - %t99 = load i1, ptr %a47 - 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.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.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.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.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 - store { ptr, i64, i64 } %t119, ptr %a122 + %t95 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t94, { ptr, i64, i64 } { ptr @.str.3240, i64 8, i64 0 }) + store { ptr, i64, i64 } %t95, ptr %a96 + %t97 = load ptr, ptr %a1 + %t98 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t97, { ptr, i64, i64 } { ptr @.str.3241, i64 8, i64 0 }) + store { ptr, i64, i64 } %t98, ptr %a99 + %t100 = load ptr, ptr %a1 + %t101 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t100, { ptr, i64, i64 } { ptr @.str.3242, i64 7, i64 0 }) + store { ptr, i64, i64 } %t101, ptr %a102 + %t103 = load ptr, ptr %a1 + %t104 = load { ptr, i64, i64 }, ptr %a90 + call void @finch.gen.br(ptr %t103, { ptr, i64, i64 } %t104) + %t105 = load ptr, ptr %a1 + %t106 = load { ptr, i64, i64 }, ptr %a90 + call void @finch.gen.label(ptr %t105, { ptr, i64, i64 } %t106) + %t107 = load i1, ptr %a5 + br label %logic.from5159 +logic.from5159: + br i1 %t107, label %logic.rhs5160, label %logic.end5161 +logic.rhs5160: + %t108 = load i1, ptr %a48 + br label %logic.rend5162 +logic.rend5162: + br label %logic.end5161 +logic.end5161: + %t109 = phi i1 [ false, %logic.from5159 ], [ %t108, %logic.rend5162 ] + br i1 %t109, label %then5163, label %endif5165 +then5163: + %t110 = load ptr, ptr %a1 + %t111 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t110, { ptr, i64, i64 } { ptr @.str.3243, i64 11, i64 0 }) + store { ptr, i64, i64 } %t111, ptr %a112 + %t113 = load ptr, ptr %a1 + %t114 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t113, { ptr, i64, i64 } { ptr @.str.3244, i64 8, i64 0 }) + store { ptr, i64, i64 } %t114, ptr %a115 + %t116 = load ptr, ptr %a1 + %t117 = load ptr, ptr %a1 + %t118 = load ptr, ptr %a1 + %t119 = load %S.ast.Type, ptr %a4 + %t120 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t118, %S.ast.Type %t119) + store { ptr, i64, i64 } { ptr @.str.3246, i64 23, i64 0 }, ptr %a122 store { ptr, i64, i64 } %t120, ptr %a123 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.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.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.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.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 + store { ptr, i64, i64 } %t120, ptr %a124 + call void @finch_str_drop(ptr %a124) + %t125 = load { ptr, i64, i64 }, ptr %a121 + store { ptr, i64, i64 } %t125, ptr %a127 + store { ptr, i64, i64 } { ptr @.str.3247, i64 6, i64 0 }, ptr %a128 + call void @finch_str_concat(ptr %a126, ptr %a127, ptr %a128) + store { ptr, i64, i64 } %t125, ptr %a129 + call void @finch_str_drop(ptr %a129) + %t130 = load { ptr, i64, i64 }, ptr %a126 + %t131 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t130, ptr %a133 + store { ptr, i64, i64 } %t131, ptr %a134 + call void @finch_str_concat(ptr %a132, ptr %a133, ptr %a134) + store { ptr, i64, i64 } %t130, ptr %a135 + call void @finch_str_drop(ptr %a135) + %t136 = load { ptr, i64, i64 }, ptr %a132 + store { ptr, i64, i64 } %t136, ptr %a138 + store { ptr, i64, i64 } { ptr @.str.3248, i64 14, i64 0 }, ptr %a139 + call void @finch_str_concat(ptr %a137, ptr %a138, ptr %a139) + store { ptr, i64, i64 } %t136, ptr %a140 + call void @finch_str_drop(ptr %a140) + %t141 = load { ptr, i64, i64 }, ptr %a137 + %t142 = call { ptr, i64, i64 } @finch.gen.op(ptr %t117, { ptr, i64, i64 } %t141) + store { ptr, i64, i64 } %t141, ptr %a143 + call void @finch_str_drop(ptr %a143) + %t144 = call { ptr, i64, i64 } @finch.gen.load(ptr %t116, { ptr, i64, i64 } { ptr @.str.3245, i64 3, i64 0 }, { ptr, i64, i64 } %t142) store { ptr, i64, i64 } %t142, ptr %a145 - store { ptr, i64, i64 } %t143, ptr %a146 - call void @finch_str_concat(ptr %a144, ptr %a145, ptr %a146) - %t147 = load { ptr, i64, i64 }, ptr %a144 - %t148 = call { ptr, i64, i64 } @finch.gen.op(ptr %t133, { ptr, i64, i64 } %t147) - %t149 = load { ptr, i64, i64 }, ptr %a103 - %t150 = load { ptr, i64, i64 }, ptr %a106 - call void @finch.gen.condBr(ptr %t132, { ptr, i64, i64 } %t148, { ptr, i64, i64 } %t149, { ptr, i64, i64 } %t150) - %t151 = load ptr, ptr %a1 - %t152 = load { ptr, i64, i64 }, ptr %a103 - call void @finch.gen.label(ptr %t151, { ptr, i64, i64 } %t152) - %t153 = load ptr, ptr %a1 - %t154 = load ptr, ptr %a1 - %t155 = load ptr, ptr %a1 - %t156 = icmp eq ptr %t155, null - br i1 %t156, label %panic4892, label %ok4893 -panic4892: - call void @finch_panic(ptr @.str.3141, i64 2279, ptr @.str.3142) + call void @finch_str_drop(ptr %a145) + store { ptr, i64, i64 } %t144, ptr %a146 + %t147 = load ptr, ptr %a1 + %t148 = load ptr, ptr %a1 + %t149 = load { ptr, i64, i64 }, ptr %a146 + store { ptr, i64, i64 } { ptr @.str.3249, i64 12, i64 0 }, ptr %a151 + store { ptr, i64, i64 } %t149, ptr %a152 + 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.3250, i64 2, i64 0 }, ptr %a156 + call void @finch_str_concat(ptr %a154, ptr %a155, ptr %a156) + store { ptr, i64, i64 } %t153, ptr %a157 + call void @finch_str_drop(ptr %a157) + %t158 = load { ptr, i64, i64 }, ptr %a154 + %t159 = load { ptr, i64, i64 }, ptr %a54 + store { ptr, i64, i64 } %t158, ptr %a161 + store { ptr, i64, i64 } %t159, ptr %a162 + call void @finch_str_concat(ptr %a160, ptr %a161, ptr %a162) + store { ptr, i64, i64 } %t158, ptr %a163 + call void @finch_str_drop(ptr %a163) + %t164 = load { ptr, i64, i64 }, ptr %a160 + %t165 = call { ptr, i64, i64 } @finch.gen.op(ptr %t148, { ptr, i64, i64 } %t164) + store { ptr, i64, i64 } %t164, ptr %a166 + call void @finch_str_drop(ptr %a166) + %t167 = load { ptr, i64, i64 }, ptr %a112 + %t168 = load { ptr, i64, i64 }, ptr %a115 + call void @finch.gen.condBr(ptr %t147, { ptr, i64, i64 } %t165, { ptr, i64, i64 } %t167, { ptr, i64, i64 } %t168) + store { ptr, i64, i64 } %t165, ptr %a169 + call void @finch_str_drop(ptr %a169) + %t170 = load ptr, ptr %a1 + %t171 = load { ptr, i64, i64 }, ptr %a112 + call void @finch.gen.label(ptr %t170, { ptr, i64, i64 } %t171) + %t172 = load ptr, ptr %a1 + %t173 = load ptr, ptr %a1 + %t174 = load ptr, ptr %a1 + %t175 = icmp eq ptr %t174, null + br i1 %t175, label %panic5166, label %ok5167 +panic5166: + call void @finch_panic(ptr @.str.3252, i64 2468, ptr @.str.3253) unreachable -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 %range4894, label %inrange4895 -range4894: - call void @finch_panic_index(ptr @.str.3143, i64 2279, i64 %t159, i64 %t161) +ok5167: + %t176 = getelementptr inbounds %S.gen.Gen, ptr %t174, i32 0, i32 1 + %t177 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 + %t178 = load i64, ptr %t177 + %t179 = load { ptr, i64, i64 }, ptr %t176 + %t180 = extractvalue { ptr, i64, i64 } %t179, 1 + %t181 = icmp uge i64 %t178, %t180 + br i1 %t181, label %range5168, label %inrange5169 +range5168: + call void @finch_panic_index(ptr @.str.3254, i64 2468, i64 %t178, i64 %t180) unreachable -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.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.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 - %t176 = load i64, ptr %t175 - call void @finch_str_from_int(ptr %a177, i64 %t176) - %t178 = load { ptr, i64, i64 }, ptr %a177 - store { ptr, i64, i64 } %t174, 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 - store { ptr, i64, i64 } %t182, ptr %a184 - 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.3146, i64 11, i64 0 }) - %t188 = load ptr, ptr %a1 - %t189 = icmp eq ptr %t188, null - br i1 %t189, label %panic4896, label %ok4897 -panic4896: - call void @finch_panic(ptr @.str.3147, i64 2281, ptr @.str.3148) - unreachable -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 %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.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.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 +inrange5169: + %t182 = extractvalue { ptr, i64, i64 } %t179, 0 + %t183 = getelementptr inbounds { ptr, i64, i64 }, ptr %t182, i64 %t178 + %t184 = load { ptr, i64, i64 }, ptr %t183 + %t185 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t173, { ptr, i64, i64 } %t184) + store { ptr, i64, i64 } { ptr @.str.3251, i64 33, i64 0 }, ptr %a187 + store { ptr, i64, i64 } %t185, ptr %a188 + call void @finch_str_concat(ptr %a186, ptr %a187, ptr %a188) + store { ptr, i64, i64 } %t185, ptr %a189 + call void @finch_str_drop(ptr %a189) + %t190 = load { ptr, i64, i64 }, ptr %a186 + store { ptr, i64, i64 } %t190, ptr %a192 + store { ptr, i64, i64 } { ptr @.str.3255, i64 6, i64 0 }, ptr %a193 + call void @finch_str_concat(ptr %a191, ptr %a192, ptr %a193) + store { ptr, i64, i64 } %t190, ptr %a194 + call void @finch_str_drop(ptr %a194) + %t195 = load { ptr, i64, i64 }, ptr %a191 + %t196 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 + %t197 = load i64, ptr %t196 + call void @finch_str_from_int(ptr %a198, i64 %t197) + %t199 = load { ptr, i64, i64 }, ptr %a198 + store { ptr, i64, i64 } %t195, ptr %a201 + store { ptr, i64, i64 } %t199, ptr %a202 + call void @finch_str_concat(ptr %a200, ptr %a201, ptr %a202) + store { ptr, i64, i64 } %t195, ptr %a203 + call void @finch_str_drop(ptr %a203) + store { ptr, i64, i64 } %t199, ptr %a204 + call void @finch_str_drop(ptr %a204) + %t205 = load { ptr, i64, i64 }, ptr %a200 store { ptr, i64, i64 } %t205, ptr %a207 - store { ptr, i64, i64 } { ptr @.str.3152, i64 6, i64 0 }, ptr %a208 + store { ptr, i64, i64 } { ptr @.str.3256, i64 1, 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 - store { ptr, i64, i64 } %t209, ptr %a212 - store { ptr, i64, i64 } %t210, ptr %a213 - 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.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.3150, i64 3, i64 0 }, { ptr, i64, i64 } %t219) + store { ptr, i64, i64 } %t205, ptr %a209 + call void @finch_str_drop(ptr %a209) + %t210 = load { ptr, i64, i64 }, ptr %a206 + call void @finch.gen.emit(ptr %t172, { ptr, i64, i64 } %t210) + store { ptr, i64, i64 } %t210, ptr %a211 + call void @finch_str_drop(ptr %a211) + %t212 = load ptr, ptr %a1 + call void @finch.gen.emit(ptr %t212, { ptr, i64, i64 } { ptr @.str.3257, i64 11, i64 0 }) + %t213 = load ptr, ptr %a1 + %t214 = icmp eq ptr %t213, null + br i1 %t214, label %panic5170, label %ok5171 +panic5170: + call void @finch_panic(ptr @.str.3258, i64 2470, ptr @.str.3259) + unreachable +ok5171: + %t215 = getelementptr inbounds %S.gen.Gen, ptr %t213, i32 0, i32 9 + store i1 true, ptr %t215 + %t216 = load ptr, ptr %a1 + %t217 = load { ptr, i64, i64 }, ptr %a115 + call void @finch.gen.label(ptr %t216, { ptr, i64, i64 } %t217) + call void @finch_str_drop(ptr %a146) + call void @finch_str_drop(ptr %a115) + call void @finch_str_drop(ptr %a112) + br label %endif5165 +endif5165: + %t218 = load ptr, ptr %a1 + %t219 = load { ptr, i64, i64 }, ptr %a51 + %t220 = call { ptr, i64, i64 } @finch.gen.load(ptr %t218, { ptr, i64, i64 } { ptr @.str.3260, 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.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.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 - store { ptr, i64, i64 } %t232, 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 - %t238 = call { ptr, i64, i64 } @finch.gen.op(ptr %t223, { ptr, i64, i64 } %t237) - %t239 = load { ptr, i64, i64 }, ptr %a84 - %t240 = load { ptr, i64, i64 }, ptr %a93 - call void @finch.gen.condBr(ptr %t222, { ptr, i64, i64 } %t238, { ptr, i64, i64 } %t239, { ptr, i64, i64 } %t240) - %t241 = load ptr, ptr %a1 - %t242 = load { ptr, i64, i64 }, ptr %a84 - call void @finch.gen.label(ptr %t241, { ptr, i64, i64 } %t242) - %t243 = load ptr, ptr %a1 - %t244 = load { ptr, i64, i64 }, ptr %a3 - %t245 = load %S.ast.Type, ptr %a4 - %t246 = load { ptr, i64, i64 }, ptr %a196 - %t247 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t243, { ptr, i64, i64 } %t244, %S.ast.Type %t245, { ptr, i64, i64 } %t246) - store { ptr, i64, i64 } %t247, ptr %a248 - %t249 = load ptr, ptr %a1 - %t250 = load ptr, ptr %a1 - %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.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.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.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) - %t268 = load { ptr, i64, i64 }, ptr %a90 - %t269 = load { ptr, i64, i64 }, ptr %a87 - call void @finch.gen.condBr(ptr %t256, { ptr, i64, i64 } %t267, { ptr, i64, i64 } %t268, { ptr, i64, i64 } %t269) - %t270 = load ptr, ptr %a1 - %t271 = load { ptr, i64, i64 }, ptr %a87 - 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 %panic4898, label %ok4899 -panic4898: - call void @finch_panic(ptr @.str.3159, i64 2292, ptr @.str.3160) + %t224 = load ptr, ptr %a1 + %t225 = load %S.ast.Type, ptr %a4 + %t226 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t224, %S.ast.Type %t225) + store { ptr, i64, i64 } { ptr @.str.3262, i64 23, i64 0 }, ptr %a228 + store { ptr, i64, i64 } %t226, ptr %a229 + call void @finch_str_concat(ptr %a227, ptr %a228, ptr %a229) + store { ptr, i64, i64 } %t226, ptr %a230 + call void @finch_str_drop(ptr %a230) + %t231 = load { ptr, i64, i64 }, ptr %a227 + store { ptr, i64, i64 } %t231, ptr %a233 + store { ptr, i64, i64 } { ptr @.str.3263, i64 6, i64 0 }, ptr %a234 + call void @finch_str_concat(ptr %a232, ptr %a233, ptr %a234) + store { ptr, i64, i64 } %t231, ptr %a235 + call void @finch_str_drop(ptr %a235) + %t236 = load { ptr, i64, i64 }, ptr %a232 + %t237 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t236, ptr %a239 + store { ptr, i64, i64 } %t237, ptr %a240 + call void @finch_str_concat(ptr %a238, ptr %a239, ptr %a240) + store { ptr, i64, i64 } %t236, ptr %a241 + call void @finch_str_drop(ptr %a241) + %t242 = load { ptr, i64, i64 }, ptr %a238 + store { ptr, i64, i64 } %t242, ptr %a244 + store { ptr, i64, i64 } { ptr @.str.3264, i64 14, i64 0 }, ptr %a245 + call void @finch_str_concat(ptr %a243, ptr %a244, ptr %a245) + store { ptr, i64, i64 } %t242, ptr %a246 + call void @finch_str_drop(ptr %a246) + %t247 = load { ptr, i64, i64 }, ptr %a243 + %t248 = call { ptr, i64, i64 } @finch.gen.op(ptr %t223, { ptr, i64, i64 } %t247) + store { ptr, i64, i64 } %t247, ptr %a249 + call void @finch_str_drop(ptr %a249) + %t250 = call { ptr, i64, i64 } @finch.gen.load(ptr %t222, { ptr, i64, i64 } { ptr @.str.3261, i64 3, i64 0 }, { ptr, i64, i64 } %t248) + store { ptr, i64, i64 } %t248, ptr %a251 + call void @finch_str_drop(ptr %a251) + store { ptr, i64, i64 } %t250, ptr %a252 + %t253 = load ptr, ptr %a1 + %t254 = load ptr, ptr %a1 + %t255 = load { ptr, i64, i64 }, ptr %a221 + store { ptr, i64, i64 } { ptr @.str.3265, i64 13, i64 0 }, ptr %a257 + store { ptr, i64, i64 } %t255, ptr %a258 + call void @finch_str_concat(ptr %a256, ptr %a257, ptr %a258) + %t259 = load { ptr, i64, i64 }, ptr %a256 + store { ptr, i64, i64 } %t259, ptr %a261 + store { ptr, i64, i64 } { ptr @.str.3266, i64 2, i64 0 }, ptr %a262 + call void @finch_str_concat(ptr %a260, ptr %a261, ptr %a262) + store { ptr, i64, i64 } %t259, ptr %a263 + call void @finch_str_drop(ptr %a263) + %t264 = load { ptr, i64, i64 }, ptr %a260 + %t265 = load { ptr, i64, i64 }, ptr %a252 + store { ptr, i64, i64 } %t264, ptr %a267 + store { ptr, i64, i64 } %t265, ptr %a268 + call void @finch_str_concat(ptr %a266, ptr %a267, ptr %a268) + store { ptr, i64, i64 } %t264, ptr %a269 + call void @finch_str_drop(ptr %a269) + %t270 = load { ptr, i64, i64 }, ptr %a266 + %t271 = call { ptr, i64, i64 } @finch.gen.op(ptr %t254, { ptr, i64, i64 } %t270) + store { ptr, i64, i64 } %t270, ptr %a272 + call void @finch_str_drop(ptr %a272) + %t273 = load { ptr, i64, i64 }, ptr %a93 + %t274 = load { ptr, i64, i64 }, ptr %a102 + call void @finch.gen.condBr(ptr %t253, { ptr, i64, i64 } %t271, { ptr, i64, i64 } %t273, { ptr, i64, i64 } %t274) + store { ptr, i64, i64 } %t271, ptr %a275 + call void @finch_str_drop(ptr %a275) + %t276 = load ptr, ptr %a1 + %t277 = load { ptr, i64, i64 }, ptr %a93 + call void @finch.gen.label(ptr %t276, { ptr, i64, i64 } %t277) + %t278 = load ptr, ptr %a1 + %t279 = load { ptr, i64, i64 }, ptr %a3 + %t280 = load %S.ast.Type, ptr %a4 + %t281 = load { ptr, i64, i64 }, ptr %a221 + %t282 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t278, { ptr, i64, i64 } %t279, %S.ast.Type %t280, { ptr, i64, i64 } %t281) + store { ptr, i64, i64 } %t282, ptr %a283 + %t284 = load ptr, ptr %a1 + %t285 = load ptr, ptr %a1 + %t286 = load { ptr, i64, i64 }, ptr %a283 + %t287 = load %S.ast.Type, ptr %a4 + %t288 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t285, { ptr, i64, i64 } %t286, %S.ast.Type %t287, i64 0) + %t289 = call { ptr, i64, i64 } @finch.gen.load(ptr %t284, { ptr, i64, i64 } { ptr @.str.3267, i64 3, i64 0 }, { ptr, i64, i64 } %t288) + store { ptr, i64, i64 } %t288, ptr %a290 + call void @finch_str_drop(ptr %a290) + store { ptr, i64, i64 } %t289, ptr %a291 + %t292 = load ptr, ptr %a1 + %t293 = load ptr, ptr %a1 + %t294 = load { ptr, i64, i64 }, ptr %a291 + store { ptr, i64, i64 } { ptr @.str.3268, i64 12, i64 0 }, ptr %a296 + store { ptr, i64, i64 } %t294, 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 %a300 + store { ptr, i64, i64 } { ptr @.str.3269, i64 3, i64 0 }, ptr %a301 + call void @finch_str_concat(ptr %a299, ptr %a300, ptr %a301) + store { ptr, i64, i64 } %t298, ptr %a302 + call void @finch_str_drop(ptr %a302) + %t303 = load { ptr, i64, i64 }, ptr %a299 + %t304 = call { ptr, i64, i64 } @finch.gen.op(ptr %t293, { ptr, i64, i64 } %t303) + store { ptr, i64, i64 } %t303, ptr %a305 + call void @finch_str_drop(ptr %a305) + %t306 = load { ptr, i64, i64 }, ptr %a99 + %t307 = load { ptr, i64, i64 }, ptr %a96 + call void @finch.gen.condBr(ptr %t292, { ptr, i64, i64 } %t304, { ptr, i64, i64 } %t306, { ptr, i64, i64 } %t307) + store { ptr, i64, i64 } %t304, ptr %a308 + call void @finch_str_drop(ptr %a308) + %t309 = load ptr, ptr %a1 + %t310 = load { ptr, i64, i64 }, ptr %a96 + call void @finch.gen.label(ptr %t309, { ptr, i64, i64 } %t310) + %t311 = load ptr, ptr %a1 + %t312 = icmp eq ptr %t311, null + br i1 %t312, label %panic5172, label %ok5173 +panic5172: + call void @finch_panic(ptr @.str.3270, i64 2481, ptr @.str.3271) unreachable -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 - store { ptr, i64, i64 } %t276, ptr %a277 - call void @finch_str_copy(ptr %a278, ptr %a277) - %t279 = load { ptr, i64, i64 }, ptr %a278 - %t280 = insertvalue %S.gen.Loop zeroinitializer, { ptr, i64, i64 } %t279, 0 - %t281 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t281, ptr %a282 - call void @finch_str_copy(ptr %a283, ptr %a282) - %t284 = load { ptr, i64, i64 }, ptr %a283 - %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 %panic4900, label %ok4901 -panic4900: - call void @finch_panic(ptr @.str.3161, i64 2292, ptr @.str.3162) +ok5173: + %t313 = getelementptr inbounds %S.gen.Gen, ptr %t311, i32 0, i32 12 + %t314 = getelementptr inbounds { ptr, i64, i64 }, ptr %t313, i32 0, i32 1 + %t315 = load { ptr, i64, i64 }, ptr %a99 + store { ptr, i64, i64 } %t315, ptr %a316 + call void @finch_str_copy(ptr %a317, ptr %a316) + %t318 = load { ptr, i64, i64 }, ptr %a317 + %t319 = insertvalue %S.gen.Loop zeroinitializer, { ptr, i64, i64 } %t318, 0 + %t320 = load { ptr, i64, i64 }, ptr %a102 + store { ptr, i64, i64 } %t320, ptr %a321 + call void @finch_str_copy(ptr %a322, ptr %a321) + %t323 = load { ptr, i64, i64 }, ptr %a322 + %t324 = insertvalue %S.gen.Loop %t319, { ptr, i64, i64 } %t323, 1 + %t325 = load ptr, ptr %a1 + %t326 = icmp eq ptr %t325, null + br i1 %t326, label %panic5174, label %ok5175 +panic5174: + call void @finch_panic(ptr @.str.3272, i64 2481, ptr @.str.3273) unreachable -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 - %t291 = insertvalue %S.gen.Loop %t285, i64 %t290, 2 - %t292 = load i64, ptr %t275 - %t293 = add i64 %t292, 1 - call void @finch_arr_reserve(ptr %t274, i64 %t293, i64 ptrtoint (ptr getelementptr (%S.gen.Loop, ptr null, i32 1) to i64)) - %t294 = load ptr, ptr %t274 - %t295 = getelementptr inbounds %S.gen.Loop, ptr %t294, i64 %t292 - store %S.gen.Loop %t291, ptr %t295 - store i64 %t293, ptr %t275 - %t296 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t296) - %t297 = load ptr, ptr %a1 - %t298 = load ptr, ptr %a1 - %t299 = load %S.ast.Type, ptr %a16 - %t300 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t298, %S.ast.Type %t299) - %t301 = load ptr, ptr %a1 - %t302 = load { ptr, i64, i64 }, ptr %a248 - %t303 = load %S.ast.Type, ptr %a4 - %t304 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t301, { ptr, i64, i64 } %t302, %S.ast.Type %t303, i64 1) - %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 %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 %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 - %t315 = load { ptr, i64, i64 }, ptr %t314 - %t316 = load %S.ast.Type, ptr %a16 - %t317 = load { ptr, i64, i64 }, ptr %a306 - %t318 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t312, %S.ast.Node %t313, { ptr, i64, i64 } %t315, %S.ast.Type %t316, { ptr, i64, i64 } %t317, i1 true) - %t319 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 - %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 %then4905, label %endif4907 -then4905: - %t323 = load ptr, ptr %a1 - %t324 = load ptr, ptr %a1 - %t325 = load %S.ast.Type, ptr %a27 - %t326 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t324, %S.ast.Type %t325) - %t327 = load ptr, ptr %a1 - %t328 = load { ptr, i64, i64 }, ptr %a248 - %t329 = load %S.ast.Type, ptr %a4 - %t330 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t327, { ptr, i64, i64 } %t328, %S.ast.Type %t329, i64 2) - %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 %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 %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 - %t341 = load { ptr, i64, i64 }, ptr %t340 - %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 %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 %range4911, label %inrange4912 -range4911: - call void @finch_panic_index(ptr @.str.3163, i64 2306, i64 1, i64 %t348) +ok5175: + %t327 = getelementptr inbounds %S.gen.Gen, ptr %t325, i32 0, i32 10 + %t328 = getelementptr inbounds { ptr, i64, i64 }, ptr %t327, i32 0, i32 1 + %t329 = load i64, ptr %t328 + %t330 = insertvalue %S.gen.Loop %t324, i64 %t329, 2 + %t331 = load ptr, ptr %a1 + %t332 = icmp eq ptr %t331, null + br i1 %t332, label %panic5176, label %ok5177 +panic5176: + call void @finch_panic(ptr @.str.3274, i64 2481, ptr @.str.3275) unreachable -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 - call void @finch.gen.block(ptr %t345, %S.ast.Node %t352, i1 true) - %t353 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t353) - %t354 = load ptr, ptr %a1 - %t355 = icmp eq ptr %t354, null - br i1 %t355, label %panic4913, label %ok4914 -panic4913: - call void @finch_panic(ptr @.str.3164, i64 2308, ptr @.str.3165) - unreachable -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 %panic4915, label %ok4916 -panic4915: - call void @finch_panic(ptr @.str.3166, i64 2308, ptr @.str.3167) - unreachable -ok4916: - %t360 = sub i64 %t358, 1 - %t361 = load ptr, ptr %t356 - %t362 = getelementptr inbounds %S.gen.Loop, ptr %t361, i64 %t360 - %t363 = load %S.gen.Loop, ptr %t362 - store i64 %t360, ptr %t357 - %t364 = load ptr, ptr %a1 - %t365 = load { ptr, i64, i64 }, ptr %a90 - call void @finch.gen.br(ptr %t364, { ptr, i64, i64 } %t365) - %t366 = load ptr, ptr %a1 - %t367 = load { ptr, i64, i64 }, ptr %a90 - 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.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.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.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.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) +ok5177: + %t333 = getelementptr inbounds %S.gen.Gen, ptr %t331, i32 0, i32 11 + %t334 = getelementptr inbounds { ptr, i64, i64 }, ptr %t333, i32 0, i32 1 + %t335 = load i64, ptr %t334 + %t336 = insertvalue %S.gen.Loop %t330, i64 %t335, 3 + %t337 = load i64, ptr %t314 + %t338 = add i64 %t337, 1 + call void @finch_arr_reserve(ptr %t313, i64 %t338, i64 ptrtoint (ptr getelementptr (%S.gen.Loop, ptr null, i32 1) to i64)) + %t339 = load ptr, ptr %t313 + %t340 = getelementptr inbounds %S.gen.Loop, ptr %t339, i64 %t337 + store %S.gen.Loop %t336, ptr %t340 + store i64 %t338, ptr %t314 + %t341 = load ptr, ptr %a1 + call void @finch.gen.pushScope(ptr %t341) + %t342 = load ptr, ptr %a1 + %t343 = load ptr, ptr %a1 + %t344 = load %S.ast.Type, ptr %a16 + %t345 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t343, %S.ast.Type %t344) + %t346 = load ptr, ptr %a1 + %t347 = load { ptr, i64, i64 }, ptr %a283 + %t348 = load %S.ast.Type, ptr %a4 + %t349 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t346, { ptr, i64, i64 } %t347, %S.ast.Type %t348, i64 1) + %t350 = call { ptr, i64, i64 } @finch.gen.load(ptr %t342, { ptr, i64, i64 } %t345, { ptr, i64, i64 } %t349) + store { ptr, i64, i64 } %t345, ptr %a351 + call void @finch_str_drop(ptr %a351) + store { ptr, i64, i64 } %t349, ptr %a352 + call void @finch_str_drop(ptr %a352) + store { ptr, i64, i64 } %t350, ptr %a353 + %t354 = load i1, ptr %a48 + br i1 %t354, label %then5178, label %endif5180 +then5178: + %t355 = load ptr, ptr %a1 + %t356 = load { ptr, i64, i64 }, ptr %a353 + %t357 = load %S.ast.Type, ptr %a16 + %t358 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t355, { ptr, i64, i64 } %t356, %S.ast.Type %t357) + %t359 = load { ptr, i64, i64 }, ptr %a353 + store { ptr, i64, i64 } %t358, ptr %a353 + store { ptr, i64, i64 } %t359, ptr %a360 + call void @finch_str_drop(ptr %a360) + br label %endif5180 +endif5180: + %t361 = load ptr, ptr %a1 + %t362 = load %S.ast.Node, ptr %a2 + %t363 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t364 = load { ptr, i64, i64 }, ptr %t363 + %t365 = load %S.ast.Type, ptr %a16 + %t366 = load { ptr, i64, i64 }, ptr %a353 + %t367 = load i1, ptr %a48 + %t368 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t361, %S.ast.Node %t362, { ptr, i64, i64 } %t364, %S.ast.Type %t365, { ptr, i64, i64 } %t366, i1 true, i1 %t367) + store { ptr, i64, i64 } %t368, ptr %a369 + call void @finch_str_drop(ptr %a369) + %t370 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 + %t371 = getelementptr inbounds { ptr, i64, i64 }, ptr %t370, i32 0, i32 1 + %t372 = load i64, ptr %t371 + %t373 = icmp sgt i64 %t372, 0 + br i1 %t373, label %then5181, label %endif5183 +then5181: + %t374 = load ptr, ptr %a1 + %t375 = load ptr, ptr %a1 + %t376 = load %S.ast.Type, ptr %a27 + %t377 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t375, %S.ast.Type %t376) + %t378 = load ptr, ptr %a1 + %t379 = load { ptr, i64, i64 }, ptr %a283 + %t380 = load %S.ast.Type, ptr %a4 + %t381 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t378, { ptr, i64, i64 } %t379, %S.ast.Type %t380, i64 2) + %t382 = call { ptr, i64, i64 } @finch.gen.load(ptr %t374, { ptr, i64, i64 } %t377, { ptr, i64, i64 } %t381) + store { ptr, i64, i64 } %t377, ptr %a383 + call void @finch_str_drop(ptr %a383) + store { ptr, i64, i64 } %t381, ptr %a384 + call void @finch_str_drop(ptr %a384) + store { ptr, i64, i64 } %t382, ptr %a385 + %t386 = load i1, ptr %a48 + br i1 %t386, label %then5184, label %endif5186 +then5184: %t387 = load ptr, ptr %a1 - %t388 = load { ptr, i64, i64 }, ptr %a93 - call void @finch.gen.label(ptr %t387, { ptr, i64, i64 } %t388) + %t388 = load { ptr, i64, i64 }, ptr %a385 + %t389 = load %S.ast.Type, ptr %a27 + %t390 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t387, { ptr, i64, i64 } %t388, %S.ast.Type %t389) + %t391 = load { ptr, i64, i64 }, ptr %a385 + store { ptr, i64, i64 } %t390, ptr %a385 + store { ptr, i64, i64 } %t391, ptr %a392 + call void @finch_str_drop(ptr %a392) + br label %endif5186 +endif5186: + %t393 = load ptr, ptr %a1 + %t394 = load %S.ast.Node, ptr %a2 + %t395 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 + %t396 = load { ptr, i64, i64 }, ptr %t395 + %t397 = load %S.ast.Type, ptr %a27 + %t398 = load { ptr, i64, i64 }, ptr %a385 + %t399 = load i1, ptr %a48 + %t400 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t393, %S.ast.Node %t394, { ptr, i64, i64 } %t396, %S.ast.Type %t397, { ptr, i64, i64 } %t398, i1 true, i1 %t399) + store { ptr, i64, i64 } %t400, ptr %a401 + call void @finch_str_drop(ptr %a401) + call void @finch_str_drop(ptr %a385) + br label %endif5183 +endif5183: + %t402 = load ptr, ptr %a1 + %t403 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t404 = load { ptr, i64, i64 }, ptr %t403 + %t405 = extractvalue { ptr, i64, i64 } %t404, 1 + %t406 = icmp uge i64 1, %t405 + br i1 %t406, label %range5187, label %inrange5188 +range5187: + call void @finch_panic_index(ptr @.str.3276, i64 2495, i64 1, i64 %t405) + unreachable +inrange5188: + %t407 = extractvalue { ptr, i64, i64 } %t404, 0 + %t408 = getelementptr inbounds %S.ast.Node, ptr %t407, i64 1 + %t409 = load %S.ast.Node, ptr %t408 + call void @finch.gen.block(ptr %t402, %S.ast.Node %t409, i1 true) + %t410 = load ptr, ptr %a1 + call void @finch.gen.popScope(ptr %t410) + %t411 = load ptr, ptr %a1 + %t412 = icmp eq ptr %t411, null + br i1 %t412, label %panic5189, label %ok5190 +panic5189: + call void @finch_panic(ptr @.str.3277, i64 2497, ptr @.str.3278) + unreachable +ok5190: + %t413 = getelementptr inbounds %S.gen.Gen, ptr %t411, i32 0, i32 12 + %t414 = getelementptr inbounds { ptr, i64, i64 }, ptr %t413, i32 0, i32 1 + %t415 = load i64, ptr %t414 + %t416 = icmp eq i64 %t415, 0 + br i1 %t416, label %panic5191, label %ok5192 +panic5191: + call void @finch_panic(ptr @.str.3279, i64 2497, ptr @.str.3280) + unreachable +ok5192: + %t417 = sub i64 %t415, 1 + %t418 = load ptr, ptr %t413 + %t419 = getelementptr inbounds %S.gen.Loop, ptr %t418, i64 %t417 + %t420 = load %S.gen.Loop, ptr %t419 + store i64 %t417, ptr %t414 + store %S.gen.Loop %t420, ptr %a421 + call void @finch.drop.S_gen_Loop(ptr %a421) + %t422 = load ptr, ptr %a1 + %t423 = load { ptr, i64, i64 }, ptr %a99 + call void @finch.gen.br(ptr %t422, { ptr, i64, i64 } %t423) + %t424 = load ptr, ptr %a1 + %t425 = load { ptr, i64, i64 }, ptr %a99 + call void @finch.gen.label(ptr %t424, { ptr, i64, i64 } %t425) + %t426 = load ptr, ptr %a1 + %t427 = load { ptr, i64, i64 }, ptr %a51 + %t428 = call { ptr, i64, i64 } @finch.gen.load(ptr %t426, { ptr, i64, i64 } { ptr @.str.3281, i64 3, i64 0 }, { ptr, i64, i64 } %t427) + store { ptr, i64, i64 } %t428, ptr %a429 + %t430 = load ptr, ptr %a1 + %t431 = load ptr, ptr %a1 + %t432 = load { ptr, i64, i64 }, ptr %a429 + store { ptr, i64, i64 } { ptr @.str.3283, i64 8, i64 0 }, ptr %a434 + store { ptr, i64, i64 } %t432, ptr %a435 + 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.3284, i64 3, i64 0 }, ptr %a439 + call void @finch_str_concat(ptr %a437, ptr %a438, ptr %a439) + store { ptr, i64, i64 } %t436, ptr %a440 + call void @finch_str_drop(ptr %a440) + %t441 = load { ptr, i64, i64 }, ptr %a437 + %t442 = call { ptr, i64, i64 } @finch.gen.op(ptr %t431, { ptr, i64, i64 } %t441) + store { ptr, i64, i64 } %t441, ptr %a443 + call void @finch_str_drop(ptr %a443) + %t444 = load { ptr, i64, i64 }, ptr %a51 + call void @finch.gen.store(ptr %t430, { ptr, i64, i64 } { ptr @.str.3282, i64 3, i64 0 }, { ptr, i64, i64 } %t442, { ptr, i64, i64 } %t444) + store { ptr, i64, i64 } %t442, ptr %a445 + call void @finch_str_drop(ptr %a445) + %t446 = load ptr, ptr %a1 + %t447 = load { ptr, i64, i64 }, ptr %a90 + call void @finch.gen.br(ptr %t446, { ptr, i64, i64 } %t447) + %t448 = load ptr, ptr %a1 + %t449 = load { ptr, i64, i64 }, ptr %a102 + call void @finch.gen.label(ptr %t448, { ptr, i64, i64 } %t449) + call void @finch_str_drop(ptr %a429) + call void @finch_str_drop(ptr %a353) + call void @finch_str_drop(ptr %a291) + call void @finch_str_drop(ptr %a283) + call void @finch_str_drop(ptr %a252) + call void @finch_str_drop(ptr %a221) + call void @finch_str_drop(ptr %a102) + call void @finch_str_drop(ptr %a99) + call void @finch_str_drop(ptr %a96) + call void @finch_str_drop(ptr %a93) + call void @finch_str_drop(ptr %a90) + call void @finch_str_drop(ptr %a54) + call void @finch_str_drop(ptr %a51) + call void @finch.drop.S_ast_Type(ptr %a27) + call void @finch.drop.S_ast_Type(ptr %a16) + ret void +} + +define internal void @finch.drop.S_gen_Ref(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.gen.Ref, ptr %a, i32 0, i32 1 + call void @finch.drop.S_gen_Place(ptr %t1) + %t2 = getelementptr inbounds %S.gen.Ref, ptr %a, i32 0, i32 2 + call void @finch.drop.S_gen_Val(ptr %t2) ret void } @@ -44825,85 +52469,123 @@ entry: %a16 = alloca %S.ast.Type, align 16 %a22 = alloca { ptr, i64, i64 }, align 16 %a23 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca %S.ast.Type, align 16 - %a29 = alloca %S.ast.Type, align 16 + %a26 = alloca { ptr, i64, i64 }, align 16 + %a30 = alloca %S.ast.Type, align 16 + %a31 = alloca %S.ast.Type, align 16 %a34 = alloca %S.ast.Type, align 16 - %a35 = alloca %S.ast.Type, align 16 - %a43 = 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 + %a38 = alloca %S.ast.Type, align 16 + %a39 = alloca %S.ast.Type, align 16 + %a42 = alloca %S.ast.Type, 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 + %a54 = alloca { ptr, i64, i64 }, align 16 %a62 = alloca { ptr, i64, i64 }, align 16 %a63 = 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 + %a65 = alloca { ptr, i64, i64 }, align 16 + %a68 = alloca { ptr, i64, i64 }, align 16 + %a69 = 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 - %a86 = alloca %S.ast.Type, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca %S.ast.Type, align 16 - %a101 = alloca %S.ast.Type, align 16 - %a127 = alloca i1, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 + %a87 = alloca { ptr, i64, i64 }, align 16 + %a88 = 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 + %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 + %a112 = alloca { ptr, i64, i64 }, align 16 + %a114 = alloca %S.ast.Type, align 16 + %a117 = alloca { ptr, i64, i64 }, align 16 + %a118 = alloca { ptr, i64, i64 }, align 16 + %a128 = alloca %S.ast.Type, align 16 + %a129 = alloca %S.ast.Type, align 16 + %a132 = alloca %S.ast.Type, align 16 %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 + %a158 = alloca i1, align 16 + %a161 = alloca { ptr, i64, i64 }, align 16 %a166 = 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 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 + %a172 = alloca { ptr, i64, i64 }, align 16 %a175 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = 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 + %a187 = 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 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 + %a195 = alloca { ptr, i64, i64 }, align 16 + %a196 = alloca { ptr, i64, i64 }, align 16 %a200 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 %a203 = alloca { ptr, i64, i64 }, align 16 %a204 = alloca { ptr, i64, i64 }, align 16 + %a205 = 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 + %a210 = 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 %a216 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 + %a219 = alloca { ptr, i64, i64 }, align 16 + %a220 = 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 + %a237 = alloca { ptr, i64, i64 }, align 16 + %a238 = alloca { ptr, i64, i64 }, align 16 %a240 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 + %a241 = alloca { ptr, i64, i64 }, align 16 + %a242 = alloca { ptr, i64, i64 }, align 16 + %a243 = 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 + %a254 = 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 + %a260 = alloca { ptr, i64, i64 }, align 16 + %a263 = alloca { ptr, i64, i64 }, align 16 %a264 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 + %a271 = alloca { ptr, i64, i64 }, align 16 + %a272 = alloca { ptr, i64, i64 }, align 16 %a279 = alloca { ptr, i64, i64 }, align 16 + %a285 = alloca { ptr, i64, i64 }, align 16 + %a286 = alloca { ptr, i64, i64 }, align 16 + %a290 = alloca { ptr, i64, i64 }, align 16 + %a291 = alloca { ptr, i64, i64 }, align 16 %a313 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 + %a314 = alloca { ptr, i64, i64 }, align 16 + %a316 = alloca { ptr, i64, i64 }, align 16 + %a328 = alloca %S.ast.Type, align 16 + %a329 = alloca { ptr, i64, i64 }, align 16 + %a332 = alloca { ptr, i64, i64 }, align 16 + %a333 = alloca { ptr, i64, i64 }, align 16 + %a336 = alloca { ptr, i64, i64 }, align 16 + %a344 = alloca { ptr, i64, i64 }, align 16 + %a364 = alloca %S.gen.Loop, align 16 + %a372 = alloca { ptr, i64, i64 }, align 16 + %a376 = alloca { ptr, i64, i64 }, align 16 + %a377 = alloca { ptr, i64, i64 }, align 16 + %a378 = alloca { ptr, i64, i64 }, align 16 + %a380 = 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 + %a386 = alloca { ptr, i64, i64 }, align 16 + %a388 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store %S.ast.Node %p1, ptr %a2 %t3 = load ptr, ptr %a1 @@ -44913,457 +52595,583 @@ 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 %range4917, label %inrange4918 -range4917: - call void @finch_panic_index(ptr @.str.3172, i64 2319, i64 0, i64 %t7) + br i1 %t8, label %range5193, label %inrange5194 +range5193: + call void @finch_panic_index(ptr @.str.3285, i64 2508, i64 0, i64 %t7) unreachable -inrange4918: +inrange5194: %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.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 { ptr, i64, i64 } { ptr @.str.3286, i64 0, i64 0 }, ptr %a14 + %t15 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3287, 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 %then4919, label %else4920 -then4919: + br i1 %t18, label %then5195, label %else5196 +then5195: %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 store { ptr, i64, i64 } %t21, ptr %a22 call void @finch_str_copy(ptr %a23, ptr %a22) %t24 = load { ptr, i64, i64 }, ptr %a23 + %t25 = load { ptr, i64, i64 }, ptr %a14 store { ptr, i64, i64 } %t24, ptr %a14 - %t25 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 1 - %t26 = getelementptr inbounds %S.gen.Place, ptr %t25, i32 0, i32 1 - %t27 = load %S.ast.Type, ptr %t26 - store %S.ast.Type %t27, ptr %a28 - 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 %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 + store { ptr, i64, i64 } %t25, ptr %a26 + call void @finch_str_drop(ptr %a26) + %t27 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 1 + %t28 = getelementptr inbounds %S.gen.Place, ptr %t27, i32 0, i32 1 + %t29 = load %S.ast.Type, ptr %t28 + 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 = load %S.ast.Type, ptr %a16 + store %S.ast.Type %t32, ptr %a16 store %S.ast.Type %t33, ptr %a34 - call void @finch.copy.S_ast_Type(ptr %a35, ptr %a34) - %t36 = load %S.ast.Type, ptr %a35 - store %S.ast.Type %t36, ptr %a16 - %t37 = load ptr, ptr %a1 - %t38 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 2 - %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 %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.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 %then4922, label %endif4924 -then4922: - %t47 = load ptr, ptr %a1 - %t48 = load %S.ast.Node, ptr %a2 - %t49 = load { ptr, i64, i64 }, ptr %a14 - %t50 = load %S.ast.Type, ptr %a16 - %t51 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 0 - %t52 = load i1, ptr %t51 - call void @finch.gen.eachMap(ptr %t47, %S.ast.Node %t48, { ptr, i64, i64 } %t49, %S.ast.Type %t50, i1 %t52) - %t53 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t53) - ret void -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.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.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.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.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 %range4932, label %inrange4933 -range4932: - call void @finch_panic_index(ptr @.str.3178, i64 2335, i64 0, i64 %t70) + call void @finch.drop.S_ast_Type(ptr %a34) + br label %endif5197 +else5196: + %t35 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 2 + %t36 = getelementptr inbounds %S.gen.Val, ptr %t35, i32 0, i32 1 + %t37 = load %S.ast.Type, ptr %t36 + store %S.ast.Type %t37, ptr %a38 + call void @finch.copy.S_ast_Type(ptr %a39, ptr %a38) + %t40 = load %S.ast.Type, ptr %a39 + %t41 = load %S.ast.Type, ptr %a16 + store %S.ast.Type %t40, ptr %a16 + store %S.ast.Type %t41, ptr %a42 + call void @finch.drop.S_ast_Type(ptr %a42) + %t43 = load ptr, ptr %a1 + %t44 = load %S.ast.Node, ptr %a2 + %t45 = load ptr, ptr %a1 + %t46 = icmp eq ptr %t45, null + br i1 %t46, label %panic5198, label %ok5199 +panic5198: + call void @finch_panic(ptr @.str.3289, i64 2516, ptr @.str.3290) unreachable -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 +ok5199: + %t47 = getelementptr inbounds %S.gen.Gen, ptr %t45, i32 0, i32 24 + %t48 = load i64, ptr %t47 + call void @finch_str_from_int(ptr %a49, i64 %t48) + %t50 = load { ptr, i64, i64 }, ptr %a49 + store { ptr, i64, i64 } { ptr @.str.3288, i64 5, i64 0 }, ptr %a52 + store { ptr, i64, i64 } %t50, ptr %a53 + call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) + store { ptr, i64, i64 } %t50, ptr %a54 + call void @finch_str_drop(ptr %a54) + %t55 = load { ptr, i64, i64 }, ptr %a51 + %t56 = load %S.ast.Type, ptr %a16 + %t57 = load ptr, ptr %a1 + %t58 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 2 + %t59 = load %S.gen.Val, ptr %t58 + %t60 = call { ptr, i64, i64 } @finch.gen.own(ptr %t57, %S.gen.Val %t59) + %t61 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t43, %S.ast.Node %t44, { ptr, i64, i64 } %t55, %S.ast.Type %t56, { ptr, i64, i64 } %t60, i1 false, i1 true) + store { ptr, i64, i64 } %t55, ptr %a62 + call void @finch_str_drop(ptr %a62) + store { ptr, i64, i64 } %t60, ptr %a63 + call void @finch_str_drop(ptr %a63) + %t64 = load { ptr, i64, i64 }, ptr %a14 + store { ptr, i64, i64 } %t61, ptr %a14 + store { ptr, i64, i64 } %t64, ptr %a65 + call void @finch_str_drop(ptr %a65) + br label %endif5197 +endif5197: + %t66 = getelementptr inbounds %S.ast.Type, ptr %a16, i32 0, i32 0 + %t67 = load { ptr, i64, i64 }, ptr %t66 + store { ptr, i64, i64 } %t67, ptr %a68 + store { ptr, i64, i64 } { ptr @.str.3291, i64 3, i64 0 }, ptr %a69 + %t70 = call i32 @finch_str_eq(ptr %a68, ptr %a69) + %t71 = icmp ne i32 %t70, 0 + br i1 %t71, label %then5200, label %endif5202 +then5200: + %t72 = load ptr, ptr %a1 + %t73 = load %S.ast.Node, ptr %a2 + %t74 = load { ptr, i64, i64 }, ptr %a14 %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.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.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 %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.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 %then4934, label %endif4936 -then4934: - %t93 = getelementptr inbounds %S.ast.Type, ptr %a16, i32 0, i32 1 + %t76 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 0 + %t77 = load i1, ptr %t76 + call void @finch.gen.eachMap(ptr %t72, %S.ast.Node %t73, { ptr, i64, i64 } %t74, %S.ast.Type %t75, i1 %t77) + %t78 = load ptr, ptr %a1 + call void @finch.gen.popScope(ptr %t78) + call void @finch.drop.S_ast_Type(ptr %a16) + call void @finch_str_drop(ptr %a14) + call void @finch.drop.S_gen_Ref(ptr %a13) + ret void +endif5202: + %t79 = getelementptr inbounds %S.ast.Type, ptr %a16, i32 0, i32 0 + %t80 = load { ptr, i64, i64 }, ptr %t79 + store { ptr, i64, i64 } %t80, ptr %a81 + store { ptr, i64, i64 } { ptr @.str.3292, i64 5, i64 0 }, ptr %a82 + %t83 = call i32 @finch_str_eq(ptr %a81, ptr %a82) + %t84 = icmp eq i32 %t83, 0 + br label %logic.from5203 +logic.from5203: + br i1 %t84, label %logic.rhs5204, label %logic.end5205 +logic.rhs5204: + %t85 = getelementptr inbounds %S.ast.Type, ptr %a16, i32 0, i32 0 + %t86 = load { ptr, i64, i64 }, ptr %t85 + store { ptr, i64, i64 } %t86, ptr %a87 + store { ptr, i64, i64 } { ptr @.str.3293, i64 3, i64 0 }, ptr %a88 + %t89 = call i32 @finch_str_eq(ptr %a87, ptr %a88) + %t90 = icmp eq i32 %t89, 0 + br label %logic.rend5206 +logic.rend5206: + br label %logic.end5205 +logic.end5205: + %t91 = phi i1 [ false, %logic.from5203 ], [ %t90, %logic.rend5206 ] + br i1 %t91, label %then5207, label %endif5209 +then5207: + %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 %range4937, label %inrange4938 -range4937: - call void @finch_panic_index(ptr @.str.3183, i64 2339, i64 0, i64 %t95) + br i1 %t96, label %range5210, label %inrange5211 +range5210: + call void @finch_panic_index(ptr @.str.3294, i64 2524, i64 0, i64 %t95) unreachable -inrange4938: +inrange5211: %t97 = extractvalue { ptr, i64, i64 } %t94, 0 - %t98 = getelementptr inbounds %S.ast.Type, ptr %t97, i64 0 - %t99 = load %S.ast.Type, ptr %t98 - store %S.ast.Type %t99, ptr %a100 - 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 %endif4936 -endif4936: - %t103 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 0 - %t104 = load i1, ptr %t103 - 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.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 %range4946, label %inrange4947 -range4946: - call void @finch_panic_index(ptr @.str.3184, i64 2341, i64 0, i64 %t112) + %t98 = getelementptr inbounds %S.ast.Node, ptr %t97, i64 0 + %t99 = load %S.ast.Node, ptr %t98 + %t100 = load %S.ast.Type, ptr %a16 + %t101 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t100) + store { ptr, i64, i64 } { ptr @.str.3295, i64 55, i64 0 }, ptr %a103 + store { ptr, i64, i64 } %t101, ptr %a104 + call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104) + store { ptr, i64, i64 } %t101, ptr %a105 + call void @finch_str_drop(ptr %a105) + %t106 = load { ptr, i64, i64 }, ptr %a102 + store { ptr, i64, i64 } %t106, ptr %a108 + store { ptr, i64, i64 } { ptr @.str.3296, i64 36, i64 0 }, ptr %a109 + call void @finch_str_concat(ptr %a107, ptr %a108, ptr %a109) + store { ptr, i64, i64 } %t106, ptr %a110 + call void @finch_str_drop(ptr %a110) + %t111 = load { ptr, i64, i64 }, ptr %a107 + call void @finch.gen.fail(ptr %t92, %S.ast.Node %t99, { ptr, i64, i64 } %t111) + store { ptr, i64, i64 } %t111, ptr %a112 + call void @finch_str_drop(ptr %a112) + br label %endif5209 +endif5209: + %t113 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3297, i64 4, i64 0 }) + store %S.ast.Type %t113, ptr %a114 + %t115 = getelementptr inbounds %S.ast.Type, ptr %a16, i32 0, i32 0 + %t116 = load { ptr, i64, i64 }, ptr %t115 + store { ptr, i64, i64 } %t116, ptr %a117 + store { ptr, i64, i64 } { ptr @.str.3298, i64 5, i64 0 }, ptr %a118 + %t119 = call i32 @finch_str_eq(ptr %a117, ptr %a118) + %t120 = icmp ne i32 %t119, 0 + br i1 %t120, label %then5212, label %endif5214 +then5212: + %t121 = getelementptr inbounds %S.ast.Type, ptr %a16, i32 0, i32 1 + %t122 = load { ptr, i64, i64 }, ptr %t121 + %t123 = extractvalue { ptr, i64, i64 } %t122, 1 + %t124 = icmp uge i64 0, %t123 + br i1 %t124, label %range5215, label %inrange5216 +range5215: + call void @finch_panic_index(ptr @.str.3299, i64 2528, i64 0, i64 %t123) unreachable -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 - %t117 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t116) - %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 1, %t120 - br i1 %t121, label %range4948, label %inrange4949 -range4948: - call void @finch_panic_index(ptr @.str.3185, i64 2341, i64 1, i64 %t120) - unreachable -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.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.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.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.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.3190, i64 9, i64 0 }) - store { ptr, i64, i64 } %t137, ptr %a138 +inrange5216: + %t125 = extractvalue { ptr, i64, i64 } %t122, 0 + %t126 = getelementptr inbounds %S.ast.Type, ptr %t125, i64 0 + %t127 = load %S.ast.Type, ptr %t126 + store %S.ast.Type %t127, ptr %a128 + call void @finch.copy.S_ast_Type(ptr %a129, ptr %a128) + %t130 = load %S.ast.Type, ptr %a129 + %t131 = load %S.ast.Type, ptr %a114 + store %S.ast.Type %t130, ptr %a114 + store %S.ast.Type %t131, ptr %a132 + call void @finch.drop.S_ast_Type(ptr %a132) + br label %endif5214 +endif5214: + %t133 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 0 + %t134 = load i1, ptr %t133 + br label %logic.from5217 +logic.from5217: + br i1 %t134, label %logic.rhs5218, label %logic.end5219 +logic.rhs5218: + %t135 = load ptr, ptr %a1 + %t136 = load %S.ast.Type, ptr %a114 + %t137 = call i1 @finch.gen.owning(ptr %t135, %S.ast.Type %t136) + br label %logic.rend5220 +logic.rend5220: + br label %logic.end5219 +logic.end5219: + %t138 = phi i1 [ false, %logic.from5217 ], [ %t137, %logic.rend5220 ] + br label %logic.from5221 +logic.from5221: + br i1 %t138, label %logic.rhs5222, label %logic.end5223 +logic.rhs5222: %t139 = load ptr, ptr %a1 - %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.3192, i64 8, i64 0 }) - store { ptr, i64, i64 } %t143, ptr %a144 - %t145 = load ptr, ptr %a1 - %t146 = load { ptr, i64, i64 }, ptr %a135 - call void @finch.gen.br(ptr %t145, { ptr, i64, i64 } %t146) - %t147 = load ptr, ptr %a1 - %t148 = load { ptr, i64, i64 }, ptr %a135 - call void @finch.gen.label(ptr %t147, { ptr, i64, i64 } %t148) - %t149 = load ptr, ptr %a1 - %t150 = load ptr, ptr %a1 - %t151 = load { ptr, i64, i64 }, ptr %a14 - 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.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.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.3196, i64 3, i64 0 }, { ptr, i64, i64 } %t164) + %t140 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t141 = load { ptr, i64, i64 }, ptr %t140 + %t142 = extractvalue { ptr, i64, i64 } %t141, 1 + %t143 = icmp uge i64 0, %t142 + br i1 %t143, label %range5224, label %inrange5225 +range5224: + call void @finch_panic_index(ptr @.str.3300, i64 2530, i64 0, i64 %t142) + unreachable +inrange5225: + %t144 = extractvalue { ptr, i64, i64 } %t141, 0 + %t145 = getelementptr inbounds %S.ast.Node, ptr %t144, i64 0 + %t146 = load %S.ast.Node, ptr %t145 + %t147 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t146) + %t148 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t149 = load { ptr, i64, i64 }, ptr %t148 + %t150 = extractvalue { ptr, i64, i64 } %t149, 1 + %t151 = icmp uge i64 1, %t150 + br i1 %t151, label %range5226, label %inrange5227 +range5226: + call void @finch_panic_index(ptr @.str.3301, i64 2530, i64 1, i64 %t150) + unreachable +inrange5227: + %t152 = extractvalue { ptr, i64, i64 } %t149, 0 + %t153 = getelementptr inbounds %S.ast.Node, ptr %t152, i64 1 + %t154 = load %S.ast.Node, ptr %t153 + %t155 = call i1 @finch.gen.mutates(ptr %t139, { ptr, i64, i64 } %t147, %S.ast.Node %t154) + store { ptr, i64, i64 } %t147, ptr %a156 + call void @finch_str_drop(ptr %a156) + br label %logic.rend5228 +logic.rend5228: + br label %logic.end5223 +logic.end5223: + %t157 = phi i1 [ false, %logic.from5221 ], [ %t155, %logic.rend5228 ] + store i1 %t157, ptr %a158 + %t159 = load ptr, ptr %a1 + %t160 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t159, { ptr, i64, i64 } { ptr @.str.3302, i64 3, i64 0 }) + store { ptr, i64, i64 } %t160, ptr %a161 + %t162 = load ptr, ptr %a1 + %t163 = load { ptr, i64, i64 }, ptr %a161 + call void @finch.gen.store(ptr %t162, { ptr, i64, i64 } { ptr @.str.3303, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.3304, i64 1, i64 0 }, { ptr, i64, i64 } %t163) + %t164 = load ptr, ptr %a1 + %t165 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t164, { ptr, i64, i64 } { ptr @.str.3305, i64 9, i64 0 }) 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.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.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 - store { ptr, i64, i64 } %t176, 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 - %t182 = call { ptr, i64, i64 } @finch.gen.op(ptr %t167, { ptr, i64, i64 } %t181) - store { ptr, i64, i64 } %t182, ptr %a183 - %t184 = load ptr, ptr %a1 - %t185 = load { ptr, i64, i64 }, ptr %a183 - %t186 = load { ptr, i64, i64 }, ptr %a138 - %t187 = load { ptr, i64, i64 }, ptr %a144 - call void @finch.gen.condBr(ptr %t184, { ptr, i64, i64 } %t185, { ptr, i64, i64 } %t186, { ptr, i64, i64 } %t187) - %t188 = load ptr, ptr %a1 - %t189 = load { ptr, i64, i64 }, ptr %a138 - 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.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.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.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 - store { ptr, i64, i64 } %t205, ptr %a208 - store { ptr, i64, i64 } %t206, ptr %a209 + %t168 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t167, { ptr, i64, i64 } { ptr @.str.3306, i64 9, i64 0 }) + store { ptr, i64, i64 } %t168, ptr %a169 + %t170 = load ptr, ptr %a1 + %t171 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t170, { ptr, i64, i64 } { ptr @.str.3307, i64 9, i64 0 }) + store { ptr, i64, i64 } %t171, ptr %a172 + %t173 = load ptr, ptr %a1 + %t174 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t173, { ptr, i64, i64 } { ptr @.str.3308, i64 8, i64 0 }) + store { ptr, i64, i64 } %t174, ptr %a175 + %t176 = load ptr, ptr %a1 + %t177 = load { ptr, i64, i64 }, ptr %a166 + call void @finch.gen.br(ptr %t176, { ptr, i64, i64 } %t177) + %t178 = load ptr, ptr %a1 + %t179 = load { ptr, i64, i64 }, ptr %a166 + call void @finch.gen.label(ptr %t178, { ptr, i64, i64 } %t179) + %t180 = load ptr, ptr %a1 + %t181 = load ptr, ptr %a1 + %t182 = load { ptr, i64, i64 }, ptr %a14 + store { ptr, i64, i64 } { ptr @.str.3310, i64 46, 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.3311, i64 14, i64 0 }, ptr %a189 + call void @finch_str_concat(ptr %a187, ptr %a188, ptr %a189) + store { ptr, i64, i64 } %t186, ptr %a190 + call void @finch_str_drop(ptr %a190) + %t191 = load { ptr, i64, i64 }, ptr %a187 + %t192 = call { ptr, i64, i64 } @finch.gen.op(ptr %t181, { ptr, i64, i64 } %t191) + store { ptr, i64, i64 } %t191, ptr %a193 + call void @finch_str_drop(ptr %a193) + %t194 = call { ptr, i64, i64 } @finch.gen.load(ptr %t180, { ptr, i64, i64 } { ptr @.str.3309, i64 3, i64 0 }, { ptr, i64, i64 } %t192) + store { ptr, i64, i64 } %t192, ptr %a195 + call void @finch_str_drop(ptr %a195) + store { ptr, i64, i64 } %t194, ptr %a196 + %t197 = load ptr, ptr %a1 + %t198 = load { ptr, i64, i64 }, ptr %a161 + %t199 = call { ptr, i64, i64 } @finch.gen.load(ptr %t197, { ptr, i64, i64 } { ptr @.str.3312, i64 3, i64 0 }, { ptr, i64, i64 } %t198) + store { ptr, i64, i64 } %t199, ptr %a200 + %t201 = load ptr, ptr %a1 + %t202 = load { ptr, i64, i64 }, ptr %a200 + store { ptr, i64, i64 } { ptr @.str.3313, i64 13, 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.3314, i64 2, i64 0 }, 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.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 - store { ptr, i64, i64 } %t214, 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 - %t220 = call { ptr, i64, i64 } @finch.gen.op(ptr %t194, { ptr, i64, i64 } %t219) - store { ptr, i64, i64 } %t220, ptr %a221 - %t222 = load ptr, ptr %a1 - %t223 = load ptr, ptr %a1 - %t224 = load %S.ast.Type, ptr %a86 - %t225 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t223, %S.ast.Type %t224) - %t226 = load { ptr, i64, i64 }, ptr %a221 - %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 %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 %endif4953 -endif4953: - %t234 = load ptr, ptr %a1 - %t235 = icmp eq ptr %t234, null - br i1 %t235, label %panic4954, label %ok4955 -panic4954: - call void @finch_panic(ptr @.str.3203, i64 2361, ptr @.str.3204) + store { ptr, i64, i64 } %t206, ptr %a210 + call void @finch_str_drop(ptr %a210) + %t211 = load { ptr, i64, i64 }, ptr %a207 + %t212 = load { ptr, i64, i64 }, ptr %a196 + store { ptr, i64, i64 } %t211, ptr %a214 + store { ptr, i64, i64 } %t212, ptr %a215 + call void @finch_str_concat(ptr %a213, ptr %a214, ptr %a215) + store { ptr, i64, i64 } %t211, ptr %a216 + call void @finch_str_drop(ptr %a216) + %t217 = load { ptr, i64, i64 }, ptr %a213 + %t218 = call { ptr, i64, i64 } @finch.gen.op(ptr %t201, { ptr, i64, i64 } %t217) + store { ptr, i64, i64 } %t217, ptr %a219 + call void @finch_str_drop(ptr %a219) + store { ptr, i64, i64 } %t218, ptr %a220 + %t221 = load ptr, ptr %a1 + %t222 = load { ptr, i64, i64 }, ptr %a220 + %t223 = load { ptr, i64, i64 }, ptr %a169 + %t224 = load { ptr, i64, i64 }, ptr %a175 + call void @finch.gen.condBr(ptr %t221, { ptr, i64, i64 } %t222, { ptr, i64, i64 } %t223, { ptr, i64, i64 } %t224) + %t225 = load ptr, ptr %a1 + %t226 = load { ptr, i64, i64 }, ptr %a169 + call void @finch.gen.label(ptr %t225, { ptr, i64, i64 } %t226) + %t227 = load ptr, ptr %a1 + %t228 = load { ptr, i64, i64 }, ptr %a14 + %t229 = call { ptr, i64, i64 } @finch.gen.load(ptr %t227, { ptr, i64, i64 } { ptr @.str.3315, i64 3, i64 0 }, { ptr, i64, i64 } %t228) + store { ptr, i64, i64 } %t229, ptr %a230 + %t231 = load ptr, ptr %a1 + %t232 = load ptr, ptr %a1 + %t233 = load %S.ast.Type, ptr %a114 + %t234 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t232, %S.ast.Type %t233) + store { ptr, i64, i64 } { ptr @.str.3316, i64 23, i64 0 }, ptr %a236 + store { ptr, i64, i64 } %t234, ptr %a237 + call void @finch_str_concat(ptr %a235, ptr %a236, ptr %a237) + store { ptr, i64, i64 } %t234, ptr %a238 + call void @finch_str_drop(ptr %a238) + %t239 = load { ptr, i64, i64 }, ptr %a235 + store { ptr, i64, i64 } %t239, ptr %a241 + store { ptr, i64, i64 } { ptr @.str.3317, i64 6, i64 0 }, ptr %a242 + call void @finch_str_concat(ptr %a240, ptr %a241, ptr %a242) + store { ptr, i64, i64 } %t239, ptr %a243 + call void @finch_str_drop(ptr %a243) + %t244 = load { ptr, i64, i64 }, ptr %a240 + %t245 = load { ptr, i64, i64 }, ptr %a230 + store { ptr, i64, i64 } %t244, ptr %a247 + store { ptr, i64, i64 } %t245, ptr %a248 + call void @finch_str_concat(ptr %a246, ptr %a247, ptr %a248) + store { ptr, i64, i64 } %t244, ptr %a249 + call void @finch_str_drop(ptr %a249) + %t250 = load { ptr, i64, i64 }, ptr %a246 + store { ptr, i64, i64 } %t250, ptr %a252 + store { ptr, i64, i64 } { ptr @.str.3318, i64 6, i64 0 }, ptr %a253 + call void @finch_str_concat(ptr %a251, ptr %a252, ptr %a253) + store { ptr, i64, i64 } %t250, ptr %a254 + call void @finch_str_drop(ptr %a254) + %t255 = load { ptr, i64, i64 }, ptr %a251 + %t256 = load { ptr, i64, i64 }, ptr %a200 + store { ptr, i64, i64 } %t255, ptr %a258 + store { ptr, i64, i64 } %t256, ptr %a259 + call void @finch_str_concat(ptr %a257, ptr %a258, ptr %a259) + store { ptr, i64, i64 } %t255, ptr %a260 + call void @finch_str_drop(ptr %a260) + %t261 = load { ptr, i64, i64 }, ptr %a257 + %t262 = call { ptr, i64, i64 } @finch.gen.op(ptr %t231, { ptr, i64, i64 } %t261) + store { ptr, i64, i64 } %t261, ptr %a263 + call void @finch_str_drop(ptr %a263) + store { ptr, i64, i64 } %t262, ptr %a264 + %t265 = load ptr, ptr %a1 + %t266 = load ptr, ptr %a1 + %t267 = load %S.ast.Type, ptr %a114 + %t268 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t266, %S.ast.Type %t267) + %t269 = load { ptr, i64, i64 }, ptr %a264 + %t270 = call { ptr, i64, i64 } @finch.gen.load(ptr %t265, { ptr, i64, i64 } %t268, { ptr, i64, i64 } %t269) + store { ptr, i64, i64 } %t268, ptr %a271 + call void @finch_str_drop(ptr %a271) + store { ptr, i64, i64 } %t270, ptr %a272 + %t273 = load i1, ptr %a158 + br i1 %t273, label %then5229, label %endif5231 +then5229: + %t274 = load ptr, ptr %a1 + %t275 = load { ptr, i64, i64 }, ptr %a272 + %t276 = load %S.ast.Type, ptr %a114 + %t277 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t274, { ptr, i64, i64 } %t275, %S.ast.Type %t276) + %t278 = load { ptr, i64, i64 }, ptr %a272 + store { ptr, i64, i64 } %t277, ptr %a272 + store { ptr, i64, i64 } %t278, ptr %a279 + call void @finch_str_drop(ptr %a279) + br label %endif5231 +endif5231: + %t280 = load ptr, ptr %a1 + %t281 = icmp eq ptr %t280, null + br i1 %t281, label %panic5232, label %ok5233 +panic5232: + call void @finch_panic(ptr @.str.3319, i64 2550, ptr @.str.3320) unreachable -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 - store { ptr, i64, i64 } %t238, ptr %a239 - call void @finch_str_copy(ptr %a240, ptr %a239) - %t241 = load { ptr, i64, i64 }, ptr %a240 - %t242 = insertvalue %S.gen.Loop zeroinitializer, { ptr, i64, i64 } %t241, 0 - %t243 = load { ptr, i64, i64 }, ptr %a144 - store { ptr, i64, i64 } %t243, ptr %a244 - call void @finch_str_copy(ptr %a245, ptr %a244) - %t246 = load { ptr, i64, i64 }, ptr %a245 - %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 %panic4956, label %ok4957 -panic4956: - call void @finch_panic(ptr @.str.3205, i64 2361, ptr @.str.3206) +ok5233: + %t282 = getelementptr inbounds %S.gen.Gen, ptr %t280, i32 0, i32 12 + %t283 = getelementptr inbounds { ptr, i64, i64 }, ptr %t282, i32 0, i32 1 + %t284 = load { ptr, i64, i64 }, ptr %a172 + store { ptr, i64, i64 } %t284, ptr %a285 + call void @finch_str_copy(ptr %a286, ptr %a285) + %t287 = load { ptr, i64, i64 }, ptr %a286 + %t288 = insertvalue %S.gen.Loop zeroinitializer, { ptr, i64, i64 } %t287, 0 + %t289 = load { ptr, i64, i64 }, ptr %a175 + store { ptr, i64, i64 } %t289, ptr %a290 + call void @finch_str_copy(ptr %a291, ptr %a290) + %t292 = load { ptr, i64, i64 }, ptr %a291 + %t293 = insertvalue %S.gen.Loop %t288, { ptr, i64, i64 } %t292, 1 + %t294 = load ptr, ptr %a1 + %t295 = icmp eq ptr %t294, null + br i1 %t295, label %panic5234, label %ok5235 +panic5234: + call void @finch_panic(ptr @.str.3321, i64 2550, ptr @.str.3322) unreachable -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 - %t253 = insertvalue %S.gen.Loop %t247, i64 %t252, 2 - %t254 = load i64, ptr %t237 - %t255 = add i64 %t254, 1 - call void @finch_arr_reserve(ptr %t236, i64 %t255, i64 ptrtoint (ptr getelementptr (%S.gen.Loop, ptr null, i32 1) to i64)) - %t256 = load ptr, ptr %t236 - %t257 = getelementptr inbounds %S.gen.Loop, ptr %t256, i64 %t254 - store %S.gen.Loop %t253, ptr %t257 - store i64 %t255, ptr %t237 - %t258 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t258) - %t259 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t260 = load { ptr, i64, i64 }, ptr %t259 - store { ptr, i64, i64 } %t260, ptr %a261 - call void @finch_str_copy(ptr %a262, ptr %a261) - %t263 = load { ptr, i64, i64 }, ptr %a262 - store { ptr, i64, i64 } %t263, ptr %a264 - %t265 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 - %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 %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.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 - %t277 = load { ptr, i64, i64 }, ptr %t276 - store { ptr, i64, i64 } %t277, ptr %a278 - 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 %endif4960 -endif4960: - %t281 = load ptr, ptr %a1 - %t282 = load %S.ast.Node, ptr %a2 - %t283 = load { ptr, i64, i64 }, ptr %a264 - %t284 = load %S.ast.Type, ptr %a86 - %t285 = load { ptr, i64, i64 }, ptr %a228 - %t286 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t281, %S.ast.Node %t282, { ptr, i64, i64 } %t283, %S.ast.Type %t284, { ptr, i64, i64 } %t285, i1 true) - %t287 = load ptr, ptr %a1 - %t288 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t289 = load { ptr, i64, i64 }, ptr %t288 - %t290 = extractvalue { ptr, i64, i64 } %t289, 1 - %t291 = icmp uge i64 1, %t290 - br i1 %t291, label %range4961, label %inrange4962 -range4961: - call void @finch_panic_index(ptr @.str.3208, i64 2369, i64 1, i64 %t290) +ok5235: + %t296 = getelementptr inbounds %S.gen.Gen, ptr %t294, i32 0, i32 10 + %t297 = getelementptr inbounds { ptr, i64, i64 }, ptr %t296, i32 0, i32 1 + %t298 = load i64, ptr %t297 + %t299 = insertvalue %S.gen.Loop %t293, i64 %t298, 2 + %t300 = load ptr, ptr %a1 + %t301 = icmp eq ptr %t300, null + br i1 %t301, label %panic5236, label %ok5237 +panic5236: + call void @finch_panic(ptr @.str.3323, i64 2550, ptr @.str.3324) unreachable -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 - call void @finch.gen.block(ptr %t287, %S.ast.Node %t294, i1 true) - %t295 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t295) - %t296 = load ptr, ptr %a1 - %t297 = icmp eq ptr %t296, null - br i1 %t297, label %panic4963, label %ok4964 -panic4963: - call void @finch_panic(ptr @.str.3209, i64 2371, ptr @.str.3210) - unreachable -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 %panic4965, label %ok4966 -panic4965: - call void @finch_panic(ptr @.str.3211, i64 2371, ptr @.str.3212) - unreachable -ok4966: - %t302 = sub i64 %t300, 1 - %t303 = load ptr, ptr %t298 - %t304 = getelementptr inbounds %S.gen.Loop, ptr %t303, i64 %t302 - %t305 = load %S.gen.Loop, ptr %t304 - store i64 %t302, ptr %t299 - %t306 = load ptr, ptr %a1 - %t307 = load { ptr, i64, i64 }, ptr %a141 - call void @finch.gen.br(ptr %t306, { ptr, i64, i64 } %t307) - %t308 = load ptr, ptr %a1 - %t309 = load { ptr, i64, i64 }, ptr %a141 - call void @finch.gen.label(ptr %t308, { ptr, i64, i64 } %t309) +ok5237: + %t302 = getelementptr inbounds %S.gen.Gen, ptr %t300, i32 0, i32 11 + %t303 = getelementptr inbounds { ptr, i64, i64 }, ptr %t302, i32 0, i32 1 + %t304 = load i64, ptr %t303 + %t305 = insertvalue %S.gen.Loop %t299, i64 %t304, 3 + %t306 = load i64, ptr %t283 + %t307 = add i64 %t306, 1 + call void @finch_arr_reserve(ptr %t282, i64 %t307, i64 ptrtoint (ptr getelementptr (%S.gen.Loop, ptr null, i32 1) to i64)) + %t308 = load ptr, ptr %t282 + %t309 = getelementptr inbounds %S.gen.Loop, ptr %t308, i64 %t306 + store %S.gen.Loop %t305, ptr %t309 + store i64 %t307, ptr %t283 %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.3213, i64 3, i64 0 }, { ptr, i64, i64 } %t311) + call void @finch.gen.pushScope(ptr %t310) + %t311 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t312 = load { ptr, i64, i64 }, ptr %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.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.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.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) - %t329 = load ptr, ptr %a1 - %t330 = load { ptr, i64, i64 }, ptr %a144 - call void @finch.gen.label(ptr %t329, { ptr, i64, i64 } %t330) - %t331 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t331) + call void @finch_str_copy(ptr %a314, ptr %a313) + %t315 = load { ptr, i64, i64 }, ptr %a314 + store { ptr, i64, i64 } %t315, ptr %a316 + %t317 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 + %t318 = getelementptr inbounds { ptr, i64, i64 }, ptr %t317, i32 0, i32 1 + %t319 = load i64, ptr %t318 + %t320 = icmp sgt i64 %t319, 0 + br i1 %t320, label %then5238, label %endif5240 +then5238: + %t321 = load ptr, ptr %a1 + %t322 = load %S.ast.Node, ptr %a2 + %t323 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t324 = load { ptr, i64, i64 }, ptr %t323 + %t325 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3325, i64 3, i64 0 }) + %t326 = load { ptr, i64, i64 }, ptr %a200 + %t327 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t321, %S.ast.Node %t322, { ptr, i64, i64 } %t324, %S.ast.Type %t325, { ptr, i64, i64 } %t326, i1 true, i1 false) + store %S.ast.Type %t325, ptr %a328 + call void @finch.drop.S_ast_Type(ptr %a328) + store { ptr, i64, i64 } %t327, ptr %a329 + call void @finch_str_drop(ptr %a329) + %t330 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 + %t331 = load { ptr, i64, i64 }, ptr %t330 + store { ptr, i64, i64 } %t331, ptr %a332 + call void @finch_str_copy(ptr %a333, ptr %a332) + %t334 = load { ptr, i64, i64 }, ptr %a333 + %t335 = load { ptr, i64, i64 }, ptr %a316 + store { ptr, i64, i64 } %t334, ptr %a316 + store { ptr, i64, i64 } %t335, ptr %a336 + call void @finch_str_drop(ptr %a336) + br label %endif5240 +endif5240: + %t337 = load ptr, ptr %a1 + %t338 = load %S.ast.Node, ptr %a2 + %t339 = load { ptr, i64, i64 }, ptr %a316 + %t340 = load %S.ast.Type, ptr %a114 + %t341 = load { ptr, i64, i64 }, ptr %a272 + %t342 = load i1, ptr %a158 + %t343 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t337, %S.ast.Node %t338, { ptr, i64, i64 } %t339, %S.ast.Type %t340, { ptr, i64, i64 } %t341, i1 true, i1 %t342) + store { ptr, i64, i64 } %t343, ptr %a344 + call void @finch_str_drop(ptr %a344) + %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 %range5241, label %inrange5242 +range5241: + call void @finch_panic_index(ptr @.str.3326, i64 2558, i64 1, i64 %t348) + unreachable +inrange5242: + %t350 = extractvalue { ptr, i64, i64 } %t347, 0 + %t351 = getelementptr inbounds %S.ast.Node, ptr %t350, i64 1 + %t352 = load %S.ast.Node, ptr %t351 + call void @finch.gen.block(ptr %t345, %S.ast.Node %t352, i1 true) + %t353 = load ptr, ptr %a1 + call void @finch.gen.popScope(ptr %t353) + %t354 = load ptr, ptr %a1 + %t355 = icmp eq ptr %t354, null + br i1 %t355, label %panic5243, label %ok5244 +panic5243: + call void @finch_panic(ptr @.str.3327, i64 2560, ptr @.str.3328) + unreachable +ok5244: + %t356 = getelementptr inbounds %S.gen.Gen, ptr %t354, i32 0, i32 12 + %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 %panic5245, label %ok5246 +panic5245: + call void @finch_panic(ptr @.str.3329, i64 2560, ptr @.str.3330) + unreachable +ok5246: + %t360 = sub i64 %t358, 1 + %t361 = load ptr, ptr %t356 + %t362 = getelementptr inbounds %S.gen.Loop, ptr %t361, i64 %t360 + %t363 = load %S.gen.Loop, ptr %t362 + store i64 %t360, ptr %t357 + store %S.gen.Loop %t363, ptr %a364 + call void @finch.drop.S_gen_Loop(ptr %a364) + %t365 = load ptr, ptr %a1 + %t366 = load { ptr, i64, i64 }, ptr %a172 + call void @finch.gen.br(ptr %t365, { ptr, i64, i64 } %t366) + %t367 = load ptr, ptr %a1 + %t368 = load { ptr, i64, i64 }, ptr %a172 + call void @finch.gen.label(ptr %t367, { ptr, i64, i64 } %t368) + %t369 = load ptr, ptr %a1 + %t370 = load { ptr, i64, i64 }, ptr %a161 + %t371 = call { ptr, i64, i64 } @finch.gen.load(ptr %t369, { ptr, i64, i64 } { ptr @.str.3331, i64 3, i64 0 }, { ptr, i64, i64 } %t370) + store { ptr, i64, i64 } %t371, ptr %a372 + %t373 = load ptr, ptr %a1 + %t374 = load ptr, ptr %a1 + %t375 = load { ptr, i64, i64 }, ptr %a372 + store { ptr, i64, i64 } { ptr @.str.3333, i64 8, i64 0 }, ptr %a377 + store { ptr, i64, i64 } %t375, ptr %a378 + call void @finch_str_concat(ptr %a376, ptr %a377, ptr %a378) + %t379 = load { ptr, i64, i64 }, ptr %a376 + store { ptr, i64, i64 } %t379, ptr %a381 + store { ptr, i64, i64 } { ptr @.str.3334, i64 3, i64 0 }, ptr %a382 + call void @finch_str_concat(ptr %a380, ptr %a381, ptr %a382) + store { ptr, i64, i64 } %t379, ptr %a383 + call void @finch_str_drop(ptr %a383) + %t384 = load { ptr, i64, i64 }, ptr %a380 + %t385 = call { ptr, i64, i64 } @finch.gen.op(ptr %t374, { ptr, i64, i64 } %t384) + store { ptr, i64, i64 } %t384, ptr %a386 + call void @finch_str_drop(ptr %a386) + %t387 = load { ptr, i64, i64 }, ptr %a161 + call void @finch.gen.store(ptr %t373, { ptr, i64, i64 } { ptr @.str.3332, i64 3, i64 0 }, { ptr, i64, i64 } %t385, { ptr, i64, i64 } %t387) + store { ptr, i64, i64 } %t385, ptr %a388 + call void @finch_str_drop(ptr %a388) + %t389 = load ptr, ptr %a1 + %t390 = load { ptr, i64, i64 }, ptr %a166 + call void @finch.gen.br(ptr %t389, { ptr, i64, i64 } %t390) + %t391 = load ptr, ptr %a1 + %t392 = load { ptr, i64, i64 }, ptr %a175 + call void @finch.gen.label(ptr %t391, { ptr, i64, i64 } %t392) + %t393 = load ptr, ptr %a1 + call void @finch.gen.popScope(ptr %t393) + call void @finch_str_drop(ptr %a372) + call void @finch_str_drop(ptr %a316) + call void @finch_str_drop(ptr %a272) + call void @finch_str_drop(ptr %a264) + call void @finch_str_drop(ptr %a230) + call void @finch_str_drop(ptr %a220) + call void @finch_str_drop(ptr %a200) + call void @finch_str_drop(ptr %a196) + call void @finch_str_drop(ptr %a175) + call void @finch_str_drop(ptr %a172) + call void @finch_str_drop(ptr %a169) + call void @finch_str_drop(ptr %a166) + call void @finch_str_drop(ptr %a161) + call void @finch.drop.S_ast_Type(ptr %a114) + call void @finch.drop.S_ast_Type(ptr %a16) + call void @finch_str_drop(ptr %a14) + call void @finch.drop.S_gen_Ref(ptr %a13) ret void } @@ -45384,208 +53192,195 @@ entry: %a74 = alloca { ptr, i64, i64 }, align 16 %a75 = alloca { ptr, i64, i64 }, align 16 %a76 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 + %a77 = alloca { ptr, i64, i64 }, align 16 + %a80 = 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 - %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 %a98 = alloca { ptr, i64, i64 }, align 16 %a99 = alloca { ptr, i64, i64 }, align 16 %a100 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca %S.gen.Val, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 + %a101 = 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 + %a106 = alloca { ptr, i64, i64 }, align 16 + %a108 = alloca { ptr, i64, i64 }, align 16 + %a130 = alloca %S.gen.Val, align 16 + %a131 = alloca %S.ast.Type, align 16 + %a132 = alloca %S.gen.Val, align 16 %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = 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 + %a146 = alloca { ptr, i64, i64 }, align 16 + %a147 = alloca { ptr, i64, i64 }, align 16 + %a148 = 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 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = 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 + %a154 = 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 %a166 = alloca { ptr, i64, i64 }, align 16 + %a168 = 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 + %a174 = alloca { ptr, i64, i64 }, align 16 + %a175 = 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 + %a180 = 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 + %a185 = alloca { ptr, i64, i64 }, align 16 + %a186 = alloca { ptr, i64, i64 }, align 16 + %a187 = 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 + %a192 = alloca { ptr, i64, i64 }, align 16 + %a202 = alloca { ptr, i64, i64 }, align 16 %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a205 = 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 + %a223 = 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 + %a227 = 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 + %a232 = 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 + %a250 = alloca { ptr, i64, i64 }, align 16 %a252 = alloca { ptr, i64, i64 }, align 16 %a253 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca %S.gen.Val, 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 i1, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca i64, align 16 - %a348 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca { ptr, i64, i64 }, align 16 - %a350 = 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 - %a357 = 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 + %a273 = alloca { ptr, i64, i64 }, align 16 + %a274 = alloca { ptr, i64, i64 }, align 16 + %a275 = alloca { ptr, i64, i64 }, align 16 + %a277 = 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 + %a288 = alloca { ptr, i64, i64 }, align 16 + %a289 = 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 + %a303 = alloca { ptr, i64, i64 }, align 16 + %a304 = 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 + %a324 = alloca i64, align 16 + %a329 = alloca i64, align 16 + %a342 = alloca 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 - %a369 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a375 = alloca { ptr, i64, i64 }, align 16 - %a376 = alloca { ptr, i64, i64 }, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a380 = 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 - %a393 = alloca { ptr, i64, i64 }, align 16 - %a394 = 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 - %a400 = 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 - %a407 = 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 - %a419 = alloca { ptr, i64, i64 }, align 16 - %a420 = alloca { ptr, i64, i64 }, align 16 - %a421 = 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 - %a436 = alloca { ptr, i64, i64 }, align 16 - %a437 = alloca { ptr, i64, i64 }, align 16 - %a438 = alloca { ptr, i64, i64 }, align 16 - %a440 = alloca { ptr, i64, i64 }, align 16 - %a441 = alloca { ptr, i64, i64 }, align 16 - %a442 = alloca { ptr, i64, i64 }, align 16 - %a445 = alloca { ptr, i64, i64 }, align 16 - %a446 = alloca { ptr, i64, i64 }, align 16 - %a447 = alloca { ptr, i64, i64 }, align 16 + %a420 = alloca %S.gen.Var, align 16 + %a421 = alloca %S.gen.Var, align 16 + %a423 = alloca %S.gen.Var, align 16 + %a443 = alloca { ptr, i64, i64 }, align 16 + %a444 = alloca { ptr, i64, i64 }, align 16 + %a511 = alloca %S.gen.Val, align 16 + %a512 = alloca %S.gen.Val, align 16 + %a516 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store %S.ast.Node %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic4967, label %ok4968 -panic4967: - call void @finch_panic(ptr @.str.3217, i64 2382, ptr @.str.3218) + br i1 %t4, label %panic5247, label %ok5248 +panic5247: + call void @finch_panic(ptr @.str.3335, i64 2571, ptr @.str.3336) unreachable -ok4968: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 44 +ok5248: + %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 45 %t6 = load i64, ptr %t5 %t7 = icmp sgt i64 %t6, 0 - br i1 %t7, label %then4969, label %endif4971 -then4969: + br i1 %t7, label %then5249, label %endif5251 +then5249: %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.3219, i64 33, i64 0 }) - br label %endif4971 -endif4971: + call void @finch.gen.fail(ptr %t8, %S.ast.Node %t9, { ptr, i64, i64 } { ptr @.str.3337, i64 33, i64 0 }) + br label %endif5251 +endif5251: %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.from4972 -logic.from4972: - br i1 %t13, label %logic.rhs4973, label %logic.end4974 -logic.rhs4973: + br label %logic.from5252 +logic.from5252: + br i1 %t13, label %logic.rhs5253, label %logic.end5254 +logic.rhs5253: %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 %range4975, label %inrange4976 -range4975: - call void @finch_panic_index(ptr @.str.3220, i64 2386, i64 0, i64 %t16) + br i1 %t17, label %range5255, label %inrange5256 +range5255: + call void @finch_panic_index(ptr @.str.3338, i64 2575, i64 0, i64 %t16) unreachable -inrange4976: +inrange5256: %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.3221, i64 4, i64 0 }, ptr %a23 + store { ptr, i64, i64 } { ptr @.str.3339, 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.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: + br label %logic.rend5257 +logic.rend5257: + br label %logic.end5254 +logic.end5254: + %t26 = phi i1 [ false, %logic.from5252 ], [ %t25, %logic.rend5257 ] + br label %logic.from5258 +logic.from5258: + br i1 %t26, label %logic.rhs5259, label %logic.end5260 +logic.rhs5259: %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 %range4981, label %inrange4982 -range4981: - call void @finch_panic_index(ptr @.str.3222, i64 2386, i64 0, i64 %t29) + br i1 %t30, label %range5261, label %inrange5262 +range5261: + call void @finch_panic_index(ptr @.str.3340, i64 2575, i64 0, i64 %t29) unreachable -inrange4982: +inrange5262: %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.3223, i64 5, i64 0 }, ptr %a36 + store { ptr, i64, i64 } { ptr @.str.3341, 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.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: + br label %logic.rend5263 +logic.rend5263: + br label %logic.end5260 +logic.end5260: + %t39 = phi i1 [ false, %logic.from5258 ], [ %t38, %logic.rend5263 ] + br i1 %t39, label %then5264, label %endif5266 +then5264: %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 %range4987, label %inrange4988 -range4987: - call void @finch_panic_index(ptr @.str.3224, i64 2387, i64 0, i64 %t42) + br i1 %t43, label %range5267, label %inrange5268 +range5267: + call void @finch_panic_index(ptr @.str.3342, i64 2576, i64 0, i64 %t42) unreachable -inrange4988: +inrange5268: %t44 = extractvalue { ptr, i64, i64 } %t41, 0 %t45 = getelementptr inbounds %S.ast.Node, ptr %t44, i64 0 %t46 = load %S.ast.Node, ptr %t45 @@ -45595,623 +53390,1125 @@ inrange4988: store %S.ast.Node %t49, ptr %a50 %t51 = load ptr, ptr %a1 %t52 = icmp eq ptr %t51, null - br i1 %t52, label %panic4989, label %ok4990 -panic4989: - call void @finch_panic(ptr @.str.3225, i64 2388, ptr @.str.3226) + br i1 %t52, label %panic5269, label %ok5270 +panic5269: + call void @finch_panic(ptr @.str.3343, i64 2577, ptr @.str.3344) unreachable -ok4990: - %t53 = getelementptr inbounds %S.gen.Gen, ptr %t51, i32 0, i32 12 +ok5270: + %t53 = getelementptr inbounds %S.gen.Gen, ptr %t51, i32 0, i32 13 %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 %then4991, label %endif4993 -then4991: - store { ptr, i64, i64 } { ptr @.str.3227, i64 1, i64 0 }, ptr %a57 + br i1 %t56, label %then5271, label %endif5273 +then5271: + store { ptr, i64, i64 } { ptr @.str.3345, i64 1, i64 0 }, ptr %a57 %t58 = load ptr, ptr %a1 %t59 = icmp eq ptr %t58, null - br i1 %t59, label %panic4994, label %ok4995 -panic4994: - call void @finch_panic(ptr @.str.3228, i64 2390, ptr @.str.3229) + br i1 %t59, label %panic5274, label %ok5275 +panic5274: + call void @finch_panic(ptr @.str.3346, i64 2579, ptr @.str.3347) unreachable -ok4995: - %t60 = getelementptr inbounds %S.gen.Gen, ptr %t58, i32 0, i32 12 +ok5275: + %t60 = getelementptr inbounds %S.gen.Gen, ptr %t58, i32 0, i32 13 %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.3230, i64 4, i64 0 }, ptr %a65 + store { ptr, i64, i64 } { ptr @.str.3348, 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 %then4996, label %endif4998 -then4996: + br i1 %t67, label %then5276, label %endif5278 +then5276: %t68 = load ptr, ptr %a1 %t69 = icmp eq ptr %t68, null - br i1 %t69, label %panic4999, label %ok5000 -panic4999: - call void @finch_panic(ptr @.str.3231, i64 2391, ptr @.str.3232) + br i1 %t69, label %panic5279, label %ok5280 +panic5279: + call void @finch_panic(ptr @.str.3349, i64 2580, ptr @.str.3350) unreachable -ok5000: - %t70 = getelementptr inbounds %S.gen.Gen, ptr %t68, i32 0, i32 12 +ok5280: + %t70 = getelementptr inbounds %S.gen.Gen, ptr %t68, i32 0, i32 13 %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.3233, i64 1, i64 0 }, ptr %a76 + store { ptr, i64, i64 } { ptr @.str.3351, 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 %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 %panic5001, label %ok5002 -panic5001: - call void @finch_panic(ptr @.str.3235, i64 2393, ptr @.str.3236) + store { ptr, i64, i64 } %t73, ptr %a77 + call void @finch_str_drop(ptr %a77) + %t78 = load { ptr, i64, i64 }, ptr %a74 + %t79 = load { ptr, i64, i64 }, ptr %a57 + store { ptr, i64, i64 } %t78, ptr %a57 + store { ptr, i64, i64 } %t79, ptr %a80 + call void @finch_str_drop(ptr %a80) + br label %endif5278 +endif5278: + %t81 = load ptr, ptr %a1 + %t82 = load %S.ast.Node, ptr %a50 + %t83 = load ptr, ptr %a1 + %t84 = icmp eq ptr %t83, null + br i1 %t84, label %panic5281, label %ok5282 +panic5281: + call void @finch_panic(ptr @.str.3353, i64 2582, ptr @.str.3354) unreachable -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.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.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 - store { ptr, i64, i64 } %t92, 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.3238, i64 1, i64 0 }, ptr %a100 +ok5282: + %t85 = getelementptr inbounds %S.gen.Gen, ptr %t83, i32 0, i32 13 + %t86 = getelementptr inbounds %S.gen.FnSig, ptr %t85, i32 0, i32 1 + %t87 = load { ptr, i64, i64 }, ptr %t86 + store { ptr, i64, i64 } { ptr @.str.3352, i64 1, 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.3355, i64 64, i64 0 }, ptr %a94 + call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) + store { ptr, i64, i64 } %t91, ptr %a95 + call void @finch_str_drop(ptr %a95) + %t96 = load { ptr, i64, i64 }, ptr %a92 + %t97 = load { ptr, i64, i64 }, ptr %a57 + store { ptr, i64, i64 } %t96, 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 - call void @finch.gen.fail(ptr %t78, %S.ast.Node %t79, { ptr, i64, i64 } %t101) - 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.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 %range5003, label %inrange5004 -range5003: - call void @finch_panic_index(ptr @.str.3240, i64 2396, i64 0, i64 %t108) + store { ptr, i64, i64 } %t96, ptr %a101 + call void @finch_str_drop(ptr %a101) + %t102 = load { ptr, i64, i64 }, ptr %a98 + store { ptr, i64, i64 } %t102, ptr %a104 + store { ptr, i64, i64 } { ptr @.str.3356, i64 1, i64 0 }, ptr %a105 + call void @finch_str_concat(ptr %a103, ptr %a104, ptr %a105) + store { ptr, i64, i64 } %t102, ptr %a106 + call void @finch_str_drop(ptr %a106) + %t107 = load { ptr, i64, i64 }, ptr %a103 + call void @finch.gen.fail(ptr %t81, %S.ast.Node %t82, { ptr, i64, i64 } %t107) + store { ptr, i64, i64 } %t107, ptr %a108 + call void @finch_str_drop(ptr %a108) + call void @finch_str_drop(ptr %a57) + br label %endif5273 +endif5273: + %t109 = load ptr, ptr %a1 + %t110 = load %S.ast.Node, ptr %a50 + call void @finch.gen.checkArgs(ptr %t109, %S.ast.Node %t110, i64 0, i64 1, { ptr, i64, i64 } { ptr @.str.3357, i64 5, i64 0 }) + %t111 = load ptr, ptr %a1 + %t112 = load ptr, ptr %a1 + %t113 = getelementptr inbounds %S.ast.Node, ptr %a50, i32 0, i32 9 + %t114 = load { ptr, i64, i64 }, ptr %t113 + %t115 = extractvalue { ptr, i64, i64 } %t114, 1 + %t116 = icmp uge i64 0, %t115 + br i1 %t116, label %range5283, label %inrange5284 +range5283: + call void @finch_panic_index(ptr @.str.3358, i64 2585, i64 0, i64 %t115) unreachable -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.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 %range5005, label %inrange5006 -range5005: - call void @finch_panic_index(ptr @.str.3242, i64 2396, i64 0, i64 %t117) +inrange5284: + %t117 = extractvalue { ptr, i64, i64 } %t114, 0 + %t118 = getelementptr inbounds %S.ast.Node, ptr %t117, i64 0 + %t119 = load %S.ast.Node, ptr %t118 + %t120 = call %S.gen.Val @finch.gen.expr(ptr %t112, %S.ast.Node %t119) + %t121 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3359, i64 3, i64 0 }) + %t122 = getelementptr inbounds %S.ast.Node, ptr %a50, i32 0, i32 9 + %t123 = load { ptr, i64, i64 }, ptr %t122 + %t124 = extractvalue { ptr, i64, i64 } %t123, 1 + %t125 = icmp uge i64 0, %t124 + br i1 %t125, label %range5285, label %inrange5286 +range5285: + call void @finch_panic_index(ptr @.str.3360, i64 2585, i64 0, i64 %t124) unreachable -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.3243, i64 17, i64 0 }) - store %S.gen.Val %t122, ptr %a123 - %t124 = load ptr, ptr %a1 - %t125 = load %S.gen.Val, ptr %a123 - %t126 = call { ptr, i64, i64 } @finch.gen.own(ptr %t124, %S.gen.Val %t125) - store { ptr, i64, i64 } %t126, ptr %a127 - %t128 = load ptr, ptr %a1 - call void @finch.gen.unwind(ptr %t128, i64 0) - %t129 = load ptr, ptr %a1 - %t130 = load ptr, ptr %a1 - %t131 = load ptr, ptr %a1 - %t132 = icmp eq ptr %t131, null - br i1 %t132, label %panic5007, label %ok5008 -panic5007: - call void @finch_panic(ptr @.str.3245, i64 2399, ptr @.str.3246) +inrange5286: + %t126 = extractvalue { ptr, i64, i64 } %t123, 0 + %t127 = getelementptr inbounds %S.ast.Node, ptr %t126, i64 0 + %t128 = load %S.ast.Node, ptr %t127 + %t129 = call %S.gen.Val @finch.gen.coerce(ptr %t111, %S.gen.Val %t120, %S.ast.Type %t121, %S.ast.Node %t128, { ptr, i64, i64 } { ptr @.str.3361, i64 17, i64 0 }) + store %S.gen.Val %t120, ptr %a130 + call void @finch.drop.S_gen_Val(ptr %a130) + store %S.ast.Type %t121, ptr %a131 + call void @finch.drop.S_ast_Type(ptr %a131) + store %S.gen.Val %t129, ptr %a132 + %t133 = load ptr, ptr %a1 + %t134 = load %S.gen.Val, ptr %a132 + %t135 = call { ptr, i64, i64 } @finch.gen.own(ptr %t133, %S.gen.Val %t134) + store { ptr, i64, i64 } %t135, ptr %a136 + %t137 = load ptr, ptr %a1 + call void @finch.gen.dropPending(ptr %t137, i64 0) + %t138 = load ptr, ptr %a1 + call void @finch.gen.unwind(ptr %t138, i64 0) + %t139 = load ptr, ptr %a1 + %t140 = load ptr, ptr %a1 + %t141 = load ptr, ptr %a1 + %t142 = icmp eq ptr %t141, null + br i1 %t142, label %panic5287, label %ok5288 +panic5287: + call void @finch_panic(ptr @.str.3363, i64 2589, ptr @.str.3364) unreachable -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.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.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 %panic5009, label %ok5010 -panic5009: - call void @finch_panic(ptr @.str.3249, i64 2399, ptr @.str.3250) - unreachable -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.3248, i64 12, i64 0 }, ptr %a152 - store { ptr, i64, i64 } %t150, ptr %a153 +ok5288: + %t143 = getelementptr inbounds %S.gen.Gen, ptr %t141, i32 0, i32 13 + %t144 = load %S.gen.FnSig, ptr %t143 + %t145 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t140, %S.gen.FnSig %t144) + store { ptr, i64, i64 } { ptr @.str.3362, i64 4, i64 0 }, ptr %a147 + store { ptr, i64, i64 } %t145, ptr %a148 + call void @finch_str_concat(ptr %a146, ptr %a147, ptr %a148) + store { ptr, i64, i64 } %t145, ptr %a149 + call void @finch_str_drop(ptr %a149) + %t150 = load { ptr, i64, i64 }, ptr %a146 + store { ptr, i64, i64 } %t150, ptr %a152 + store { ptr, i64, i64 } { ptr @.str.3365, i64 1, i64 0 }, 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.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 - store { ptr, i64, i64 } %t158, ptr %a161 - store { ptr, i64, i64 } %t159, ptr %a162 - 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.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) - store { ptr, i64, i64 } %t143, 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 - 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 %panic5011, label %ok5012 -panic5011: - call void @finch_panic(ptr @.str.3253, i64 2400, ptr @.str.3254) + store { ptr, i64, i64 } %t150, ptr %a154 + call void @finch_str_drop(ptr %a154) + %t155 = load { ptr, i64, i64 }, ptr %a151 + %t156 = load ptr, ptr %a1 + %t157 = load ptr, ptr %a1 + %t158 = load ptr, ptr %a1 + %t159 = icmp eq ptr %t158, null + br i1 %t159, label %panic5289, label %ok5290 +panic5289: + call void @finch_panic(ptr @.str.3367, i64 2589, ptr @.str.3368) unreachable -ok5012: - %t175 = getelementptr inbounds %S.gen.Gen, ptr %t173, i32 0, i32 9 - store i1 true, ptr %t175 +ok5290: + %t160 = getelementptr inbounds %S.gen.Gen, ptr %t158, i32 0, i32 13 + %t161 = load %S.gen.FnSig, ptr %t160 + %t162 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t157, %S.gen.FnSig %t161) + store { ptr, i64, i64 } { ptr @.str.3366, i64 12, i64 0 }, ptr %a164 + store { ptr, i64, i64 } %t162, ptr %a165 + call void @finch_str_concat(ptr %a163, ptr %a164, ptr %a165) + store { ptr, i64, i64 } %t162, ptr %a166 + call void @finch_str_drop(ptr %a166) + %t167 = load { ptr, i64, i64 }, ptr %a163 + store { ptr, i64, i64 } %t167, ptr %a169 + store { ptr, i64, i64 } { ptr @.str.3369, i64 36, i64 0 }, ptr %a170 + call void @finch_str_concat(ptr %a168, ptr %a169, ptr %a170) + store { ptr, i64, i64 } %t167, ptr %a171 + call void @finch_str_drop(ptr %a171) + %t172 = load { ptr, i64, i64 }, ptr %a168 + %t173 = load { ptr, i64, i64 }, ptr %a136 + store { ptr, i64, i64 } %t172, ptr %a175 + store { ptr, i64, i64 } %t173, ptr %a176 + call void @finch_str_concat(ptr %a174, ptr %a175, ptr %a176) + store { ptr, i64, i64 } %t172, ptr %a177 + call void @finch_str_drop(ptr %a177) + %t178 = load { ptr, i64, i64 }, ptr %a174 + store { ptr, i64, i64 } %t178, ptr %a180 + store { ptr, i64, i64 } { ptr @.str.3370, i64 3, i64 0 }, ptr %a181 + call void @finch_str_concat(ptr %a179, ptr %a180, ptr %a181) + store { ptr, i64, i64 } %t178, ptr %a182 + call void @finch_str_drop(ptr %a182) + %t183 = load { ptr, i64, i64 }, ptr %a179 + %t184 = call { ptr, i64, i64 } @finch.gen.op(ptr %t156, { ptr, i64, i64 } %t183) + store { ptr, i64, i64 } %t183, ptr %a185 + call void @finch_str_drop(ptr %a185) + store { ptr, i64, i64 } %t155, ptr %a187 + store { ptr, i64, i64 } %t184, ptr %a188 + call void @finch_str_concat(ptr %a186, ptr %a187, ptr %a188) + store { ptr, i64, i64 } %t155, ptr %a189 + call void @finch_str_drop(ptr %a189) + store { ptr, i64, i64 } %t184, ptr %a190 + call void @finch_str_drop(ptr %a190) + %t191 = load { ptr, i64, i64 }, ptr %a186 + call void @finch.gen.emit(ptr %t139, { ptr, i64, i64 } %t191) + store { ptr, i64, i64 } %t191, ptr %a192 + call void @finch_str_drop(ptr %a192) + %t193 = load ptr, ptr %a1 + %t194 = icmp eq ptr %t193, null + br i1 %t194, label %panic5291, label %ok5292 +panic5291: + call void @finch_panic(ptr @.str.3371, i64 2590, ptr @.str.3372) + unreachable +ok5292: + %t195 = getelementptr inbounds %S.gen.Gen, ptr %t193, i32 0, i32 9 + store i1 true, ptr %t195 + call void @finch_str_drop(ptr %a136) + call void @finch.drop.S_gen_Val(ptr %a132) + call void @finch.drop.S_ast_Node(ptr %a50) ret void -endif4986: - %t176 = load ptr, ptr %a1 - %t177 = icmp eq ptr %t176, null - br i1 %t177, label %panic5013, label %ok5014 -panic5013: - call void @finch_panic(ptr @.str.3255, i64 2403, ptr @.str.3256) +endif5266: + %t196 = load ptr, ptr %a1 + %t197 = icmp eq ptr %t196, null + br i1 %t197, label %panic5293, label %ok5294 +panic5293: + call void @finch_panic(ptr @.str.3373, i64 2593, ptr @.str.3374) unreachable -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.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 %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 %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 %range5021, label %inrange5022 -range5021: - call void @finch_panic_index(ptr @.str.3258, i64 2405, i64 0, i64 %t193) +ok5294: + %t198 = getelementptr inbounds %S.gen.Gen, ptr %t196, i32 0, i32 13 + %t199 = getelementptr inbounds %S.gen.FnSig, ptr %t198, i32 0, i32 12 + %t200 = getelementptr inbounds %S.ast.Type, ptr %t199, i32 0, i32 0 + %t201 = load { ptr, i64, i64 }, ptr %t200 + store { ptr, i64, i64 } %t201, ptr %a202 + store { ptr, i64, i64 } { ptr @.str.3375, i64 4, i64 0 }, ptr %a203 + %t204 = call i32 @finch_str_eq(ptr %a202, ptr %a203) + %t205 = icmp ne i32 %t204, 0 + br i1 %t205, label %then5295, label %endif5297 +then5295: + %t206 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t207 = getelementptr inbounds { ptr, i64, i64 }, ptr %t206, i32 0, i32 1 + %t208 = load i64, ptr %t207 + %t209 = icmp sgt i64 %t208, 0 + br i1 %t209, label %then5298, label %endif5300 +then5298: + %t210 = load ptr, ptr %a1 + %t211 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t212 = load { ptr, i64, i64 }, ptr %t211 + %t213 = extractvalue { ptr, i64, i64 } %t212, 1 + %t214 = icmp uge i64 0, %t213 + br i1 %t214, label %range5301, label %inrange5302 +range5301: + call void @finch_panic_index(ptr @.str.3376, i64 2595, i64 0, i64 %t213) unreachable -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 %panic5023, label %ok5024 -panic5023: - call void @finch_panic(ptr @.str.3260, i64 2405, ptr @.str.3261) - unreachable -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.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.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 %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 %panic5025, label %ok5026 -panic5025: - call void @finch_panic(ptr @.str.3263, i64 2408, ptr @.str.3264) - unreachable -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 %then5027, label %else5028 -then5027: - %t217 = load ptr, ptr %a1 +inrange5302: + %t215 = extractvalue { ptr, i64, i64 } %t212, 0 + %t216 = getelementptr inbounds %S.ast.Node, ptr %t215, i64 0 + %t217 = load %S.ast.Node, ptr %t216 %t218 = load ptr, ptr %a1 - %t219 = load ptr, ptr %a1 - %t220 = icmp eq ptr %t219, null - br i1 %t220, label %panic5030, label %ok5031 -panic5030: - call void @finch_panic(ptr @.str.3266, i64 2409, ptr @.str.3267) + %t219 = icmp eq ptr %t218, null + br i1 %t219, label %panic5303, label %ok5304 +panic5303: + call void @finch_panic(ptr @.str.3378, i64 2595, ptr @.str.3379) unreachable -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.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.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 %endif5029 -else5028: - %t232 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t232, { ptr, i64, i64 } { ptr @.str.3269, i64 8, i64 0 }) - br label %endif5029 -endif5029: +ok5304: + %t220 = getelementptr inbounds %S.gen.Gen, ptr %t218, i32 0, i32 13 + %t221 = getelementptr inbounds %S.gen.FnSig, ptr %t220, i32 0, i32 1 + %t222 = load { ptr, i64, i64 }, ptr %t221 + store { ptr, i64, i64 } { ptr @.str.3377, i64 1, i64 0 }, ptr %a224 + store { ptr, i64, i64 } %t222, ptr %a225 + 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.3380, i64 46, i64 0 }, ptr %a229 + call void @finch_str_concat(ptr %a227, ptr %a228, ptr %a229) + store { ptr, i64, i64 } %t226, ptr %a230 + call void @finch_str_drop(ptr %a230) + %t231 = load { ptr, i64, i64 }, ptr %a227 + call void @finch.gen.fail(ptr %t210, %S.ast.Node %t217, { ptr, i64, i64 } %t231) + store { ptr, i64, i64 } %t231, ptr %a232 + call void @finch_str_drop(ptr %a232) + br label %endif5300 +endif5300: %t233 = load ptr, ptr %a1 - %t234 = icmp eq ptr %t233, null - br i1 %t234, label %panic5032, label %ok5033 -panic5032: - call void @finch_panic(ptr @.str.3270, i64 2413, ptr @.str.3271) + call void @finch.gen.dropPending(ptr %t233, i64 0) + %t234 = load ptr, ptr %a1 + call void @finch.gen.unwind(ptr %t234, i64 0) + %t235 = load ptr, ptr %a1 + %t236 = icmp eq ptr %t235, null + br i1 %t236, label %panic5305, label %ok5306 +panic5305: + call void @finch_panic(ptr @.str.3381, i64 2599, ptr @.str.3382) unreachable -ok5033: - %t235 = getelementptr inbounds %S.gen.Gen, ptr %t233, i32 0, i32 9 - store i1 true, ptr %t235 - ret void -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 %then5034, label %endif5036 -then5034: +ok5306: + %t237 = getelementptr inbounds %S.gen.Gen, ptr %t235, i32 0, i32 13 + %t238 = getelementptr inbounds %S.gen.FnSig, ptr %t237, i32 0, i32 9 + %t239 = load i1, ptr %t238 + br i1 %t239, label %then5307, label %else5308 +then5307: %t240 = load ptr, ptr %a1 - %t241 = load %S.ast.Node, ptr %a2 + %t241 = load ptr, ptr %a1 %t242 = load ptr, ptr %a1 %t243 = icmp eq ptr %t242, null - br i1 %t243, label %panic5037, label %ok5038 -panic5037: - call void @finch_panic(ptr @.str.3273, i64 2417, ptr @.str.3274) + br i1 %t243, label %panic5310, label %ok5311 +panic5310: + call void @finch_panic(ptr @.str.3384, i64 2600, ptr @.str.3385) unreachable -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.3272, i64 1, i64 0 }, ptr %a248 +ok5311: + %t244 = getelementptr inbounds %S.gen.Gen, ptr %t242, i32 0, i32 13 + %t245 = load %S.gen.FnSig, ptr %t244 + %t246 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t241, %S.gen.FnSig %t245) + store { ptr, i64, i64 } { ptr @.str.3383, i64 4, 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.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 %panic5039, label %ok5040 -panic5039: - call void @finch_panic(ptr @.str.3276, i64 2417, ptr @.str.3277) + store { ptr, i64, i64 } %t246, ptr %a250 + call void @finch_str_drop(ptr %a250) + %t251 = load { ptr, i64, i64 }, ptr %a247 + store { ptr, i64, i64 } %t251, ptr %a253 + store { ptr, i64, i64 } { ptr @.str.3386, i64 53, i64 0 }, ptr %a254 + call void @finch_str_concat(ptr %a252, ptr %a253, ptr %a254) + store { ptr, i64, i64 } %t251, ptr %a255 + call void @finch_str_drop(ptr %a255) + %t256 = load { ptr, i64, i64 }, ptr %a252 + call void @finch.gen.emit(ptr %t240, { ptr, i64, i64 } %t256) + store { ptr, i64, i64 } %t256, ptr %a257 + call void @finch_str_drop(ptr %a257) + br label %endif5309 +else5308: + %t258 = load ptr, ptr %a1 + call void @finch.gen.emit(ptr %t258, { ptr, i64, i64 } { ptr @.str.3387, i64 8, i64 0 }) + br label %endif5309 +endif5309: + %t259 = load ptr, ptr %a1 + %t260 = icmp eq ptr %t259, null + br i1 %t260, label %panic5312, label %ok5313 +panic5312: + call void @finch_panic(ptr @.str.3388, i64 2604, ptr @.str.3389) unreachable -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 - %t260 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t259) - store { ptr, i64, i64 } %t254, ptr %a262 - store { ptr, i64, i64 } %t260, ptr %a263 - 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 %endif5036 -endif5036: - %t265 = load ptr, ptr %a1 +ok5313: + %t261 = getelementptr inbounds %S.gen.Gen, ptr %t259, i32 0, i32 9 + store i1 true, ptr %t261 + ret void +endif5297: + %t262 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t263 = getelementptr inbounds { ptr, i64, i64 }, ptr %t262, i32 0, i32 1 + %t264 = load i64, ptr %t263 + %t265 = icmp eq i64 %t264, 0 + br i1 %t265, label %then5314, label %endif5316 +then5314: %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 %range5041, label %inrange5042 -range5041: - call void @finch_panic_index(ptr @.str.3278, i64 2419, i64 0, i64 %t269) + %t267 = load %S.ast.Node, ptr %a2 + %t268 = load ptr, ptr %a1 + %t269 = icmp eq ptr %t268, null + br i1 %t269, label %panic5317, label %ok5318 +panic5317: + call void @finch_panic(ptr @.str.3391, i64 2608, ptr @.str.3392) unreachable -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 %panic5043, label %ok5044 -panic5043: - call void @finch_panic(ptr @.str.3279, i64 2419, ptr @.str.3280) +ok5318: + %t270 = getelementptr inbounds %S.gen.Gen, ptr %t268, i32 0, i32 13 + %t271 = getelementptr inbounds %S.gen.FnSig, ptr %t270, i32 0, i32 1 + %t272 = load { ptr, i64, i64 }, ptr %t271 + store { ptr, i64, i64 } { ptr @.str.3390, i64 1, 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.3393, i64 14, i64 0 }, ptr %a279 + call void @finch_str_concat(ptr %a277, ptr %a278, ptr %a279) + store { ptr, i64, i64 } %t276, ptr %a280 + call void @finch_str_drop(ptr %a280) + %t281 = load { ptr, i64, i64 }, ptr %a277 + %t282 = load ptr, ptr %a1 + %t283 = icmp eq ptr %t282, null + br i1 %t283, label %panic5319, label %ok5320 +panic5319: + call void @finch_panic(ptr @.str.3394, i64 2608, ptr @.str.3395) unreachable -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 %panic5045, label %ok5046 -panic5045: - call void @finch_panic(ptr @.str.3281, i64 2419, ptr @.str.3282) +ok5320: + %t284 = getelementptr inbounds %S.gen.Gen, ptr %t282, i32 0, i32 13 + %t285 = getelementptr inbounds %S.gen.FnSig, ptr %t284, i32 0, i32 12 + %t286 = load %S.ast.Type, ptr %t285 + %t287 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t286) + store { ptr, i64, i64 } %t281, ptr %a289 + store { ptr, i64, i64 } %t287, ptr %a290 + call void @finch_str_concat(ptr %a288, ptr %a289, ptr %a290) + store { ptr, i64, i64 } %t281, ptr %a291 + call void @finch_str_drop(ptr %a291) + store { ptr, i64, i64 } %t287, ptr %a292 + call void @finch_str_drop(ptr %a292) + %t293 = load { ptr, i64, i64 }, ptr %a288 + call void @finch.gen.fail(ptr %t266, %S.ast.Node %t267, { ptr, i64, i64 } %t293) + store { ptr, i64, i64 } %t293, ptr %a294 + call void @finch_str_drop(ptr %a294) + br label %endif5316 +endif5316: + %t295 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t296 = load { ptr, i64, i64 }, ptr %t295 + %t297 = extractvalue { ptr, i64, i64 } %t296, 1 + %t298 = icmp uge i64 0, %t297 + br i1 %t298, label %range5321, label %inrange5322 +range5321: + call void @finch_panic_index(ptr @.str.3396, i64 2611, i64 0, i64 %t297) unreachable -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 - %t285 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t286 = load { ptr, i64, i64 }, ptr %t285 - %t287 = extractvalue { ptr, i64, i64 } %t286, 1 - %t288 = icmp uge i64 0, %t287 - br i1 %t288, label %range5047, label %inrange5048 -range5047: - call void @finch_panic_index(ptr @.str.3283, i64 2419, i64 0, i64 %t287) - unreachable -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.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 - store { ptr, i64, i64 } %t295, ptr %a296 - call void @finch_str_copy(ptr %a297, ptr %a296) - %t298 = load { ptr, i64, i64 }, ptr %a297 - store { ptr, i64, i64 } %t298, ptr %a299 - store i1 false, ptr %a300 - %t301 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 +inrange5322: + %t299 = extractvalue { ptr, i64, i64 } %t296, 0 + %t300 = getelementptr inbounds %S.ast.Node, ptr %t299, i64 0 + %t301 = getelementptr inbounds %S.ast.Node, ptr %t300, i32 0, i32 0 %t302 = load { ptr, i64, i64 }, ptr %t301 - %t303 = extractvalue { ptr, i64, i64 } %t302, 1 - %t304 = icmp uge i64 0, %t303 - br i1 %t304, label %range5049, label %inrange5050 -range5049: - call void @finch_panic_index(ptr @.str.3285, i64 2423, i64 0, i64 %t303) - unreachable -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 + store { ptr, i64, i64 } %t302, ptr %a303 + store { ptr, i64, i64 } { ptr @.str.3397, i64 3, i64 0 }, ptr %a304 + %t305 = call i32 @finch_str_eq(ptr %a303, ptr %a304) + %t306 = icmp ne i32 %t305, 0 + br i1 %t306, label %then5323, label %endif5325 +then5323: + %t307 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t308 = load { ptr, i64, i64 }, ptr %t307 - store { ptr, i64, i64 } %t308, ptr %a309 - 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 %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 %range5054, label %inrange5055 -range5054: - call void @finch_panic_index(ptr @.str.3287, i64 2424, i64 0, i64 %t316) + %t309 = extractvalue { ptr, i64, i64 } %t308, 1 + %t310 = icmp uge i64 0, %t309 + br i1 %t310, label %range5326, label %inrange5327 +range5326: + call void @finch_panic_index(ptr @.str.3398, i64 2612, i64 0, i64 %t309) unreachable -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 - %t321 = load { ptr, i64, i64 }, ptr %t320 - %t322 = call i64 @finch.gen.lookup(ptr %t313, { ptr, i64, i64 } %t321) - store i64 %t322, ptr %a323 - %t324 = load i64, ptr %a323 - %t325 = icmp sge i64 %t324, 0 - 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.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 %endif5053 -endif5053: - %t330 = load i1, ptr %a300 - %t331 = xor i1 %t330, true - 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 %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 %panic5063, label %ok5064 -panic5063: - call void @finch_panic(ptr @.str.3288, i64 2431, ptr @.str.3289) +inrange5327: + %t311 = extractvalue { ptr, i64, i64 } %t308, 0 + %t312 = getelementptr inbounds %S.ast.Node, ptr %t311, i64 0 + %t313 = getelementptr inbounds %S.ast.Node, ptr %t312, i32 0, i32 1 + %t314 = load { ptr, i64, i64 }, ptr %t313 + store { ptr, i64, i64 } %t314, ptr %a315 + call void @finch_str_copy(ptr %a316, ptr %a315) + %t317 = load { ptr, i64, i64 }, ptr %a316 + store { ptr, i64, i64 } %t317, ptr %a318 + %t319 = load ptr, ptr %a1 + %t320 = icmp eq ptr %t319, null + br i1 %t320, label %panic5328, label %ok5329 +panic5328: + call void @finch_panic(ptr @.str.3399, i64 2613, ptr @.str.3400) unreachable -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 %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 %panic5068, label %ok5069 -panic5068: - call void @finch_panic(ptr @.str.3291, i64 2432, ptr @.str.3292) +ok5329: + %t321 = getelementptr inbounds %S.gen.Gen, ptr %t319, i32 0, i32 10 + %t322 = getelementptr inbounds { ptr, i64, i64 }, ptr %t321, i32 0, i32 1 + %t323 = load i64, ptr %t322 + store i64 %t323, ptr %a324 + br label %while.cond5330 +while.cond5330: + %t325 = load i64, ptr %a324 + %t326 = icmp sgt i64 %t325, 0 + br i1 %t326, label %while.body5331, label %while.end5332 +while.body5331: + %t327 = load i64, ptr %a324 + %t328 = sub i64 %t327, 1 + store i64 %t328, ptr %a324 + store i64 -1, ptr %a329 + %t330 = load ptr, ptr %a1 + %t331 = icmp eq ptr %t330, null + br i1 %t331, label %panic5333, label %ok5334 +panic5333: + call void @finch_panic(ptr @.str.3401, i64 2617, ptr @.str.3402) unreachable -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.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.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) - store { ptr, i64, i64 } %t356, ptr %a357 - %t358 = load ptr, ptr %a1 - %t359 = load ptr, ptr %a1 - %t360 = load ptr, ptr %a1 - %t361 = icmp eq ptr %t360, null - br i1 %t361, label %panic5070, label %ok5071 -panic5070: - call void @finch_panic(ptr @.str.3295, i64 2433, ptr @.str.3296) +ok5334: + %t332 = getelementptr inbounds %S.gen.Gen, ptr %t330, i32 0, i32 10 + %t333 = load i64, ptr %a324 + %t334 = load { ptr, i64, i64 }, ptr %t332 + %t335 = extractvalue { ptr, i64, i64 } %t334, 1 + %t336 = icmp uge i64 %t333, %t335 + br i1 %t336, label %range5335, label %inrange5336 +range5335: + call void @finch_panic_index(ptr @.str.3403, i64 2617, i64 %t333, i64 %t335) unreachable -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.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.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 - store { ptr, i64, i64 } %t372, ptr %a375 - store { ptr, i64, i64 } %t373, ptr %a376 - 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.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 %panic5072, label %ok5073 -panic5072: - call void @finch_panic(ptr @.str.3299, i64 2433, ptr @.str.3300) +inrange5336: + %t337 = extractvalue { ptr, i64, i64 } %t334, 0 + %t338 = getelementptr inbounds %S.gen.Scope, ptr %t337, i64 %t333 + %t339 = getelementptr inbounds %S.gen.Scope, ptr %t338, i32 0, i32 0 + %t340 = getelementptr inbounds { ptr, i64, i64 }, ptr %t339, i32 0, i32 1 + %t341 = load i64, ptr %t340 + store i64 0, ptr %a342 + br label %for.cond5337 +for.cond5337: + %t343 = load i64, ptr %a342 + %t344 = icmp slt i64 %t343, %t341 + br i1 %t344, label %for.body5338, label %for.end5340 +for.body5338: + %t345 = load ptr, ptr %a1 + %t346 = icmp eq ptr %t345, null + br i1 %t346, label %panic5341, label %ok5342 +panic5341: + call void @finch_panic(ptr @.str.3404, i64 2618, ptr @.str.3405) unreachable -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 - %t388 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t382, %S.ast.Type %t387) - store { ptr, i64, i64 } %t381, 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.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 - store { ptr, i64, i64 } %t396, 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 %a403 - 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) - store { ptr, i64, i64 } %t406, ptr %a407 - %t408 = load ptr, ptr %a1 - %t409 = load ptr, ptr %a1 - %t410 = load ptr, ptr %a1 - %t411 = icmp eq ptr %t410, null - br i1 %t411, label %panic5074, label %ok5075 -panic5074: - call void @finch_panic(ptr @.str.3304, i64 2434, ptr @.str.3305) +ok5342: + %t347 = getelementptr inbounds %S.gen.Gen, ptr %t345, i32 0, i32 10 + %t348 = load i64, ptr %a324 + %t349 = load { ptr, i64, i64 }, ptr %t347 + %t350 = extractvalue { ptr, i64, i64 } %t349, 1 + %t351 = icmp uge i64 %t348, %t350 + br i1 %t351, label %range5343, label %inrange5344 +range5343: + call void @finch_panic_index(ptr @.str.3406, i64 2618, i64 %t348, i64 %t350) unreachable -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.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.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 - store { ptr, i64, i64 } %t422, 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 - call void @finch.gen.emit(ptr %t408, { ptr, i64, i64 } %t427) - br label %endif5067 -else5066: +inrange5344: + %t352 = extractvalue { ptr, i64, i64 } %t349, 0 + %t353 = getelementptr inbounds %S.gen.Scope, ptr %t352, i64 %t348 + %t354 = getelementptr inbounds %S.gen.Scope, ptr %t353, i32 0, i32 0 + %t355 = load i64, ptr %a342 + %t356 = load { ptr, i64, i64 }, ptr %t354 + %t357 = extractvalue { ptr, i64, i64 } %t356, 1 + %t358 = icmp uge i64 %t355, %t357 + br i1 %t358, label %range5345, label %inrange5346 +range5345: + call void @finch_panic_index(ptr @.str.3407, i64 2618, i64 %t355, i64 %t357) + unreachable +inrange5346: + %t359 = extractvalue { ptr, i64, i64 } %t356, 0 + %t360 = getelementptr inbounds %S.gen.Var, ptr %t359, i64 %t355 + %t361 = getelementptr inbounds %S.gen.Var, ptr %t360, i32 0, i32 0 + %t362 = load { ptr, i64, i64 }, ptr %t361 + %t363 = load { ptr, i64, i64 }, ptr %a318 + store { ptr, i64, i64 } %t362, ptr %a364 + store { ptr, i64, i64 } %t363, ptr %a365 + %t366 = call i32 @finch_str_eq(ptr %a364, ptr %a365) + %t367 = icmp ne i32 %t366, 0 + br label %logic.from5347 +logic.from5347: + br i1 %t367, label %logic.rhs5348, label %logic.end5349 +logic.rhs5348: + %t368 = load ptr, ptr %a1 + %t369 = icmp eq ptr %t368, null + br i1 %t369, label %panic5350, label %ok5351 +panic5350: + call void @finch_panic(ptr @.str.3408, i64 2618, ptr @.str.3409) + unreachable +ok5351: + %t370 = getelementptr inbounds %S.gen.Gen, ptr %t368, i32 0, i32 43 + %t371 = load i1, ptr %t370 + br label %logic.from5352 +logic.from5352: + br i1 %t371, label %logic.rhs5353, label %logic.end5354 +logic.rhs5353: + %t372 = load ptr, ptr %a1 + %t373 = icmp eq ptr %t372, null + br i1 %t373, label %panic5355, label %ok5356 +panic5355: + call void @finch_panic(ptr @.str.3410, i64 2618, ptr @.str.3411) + unreachable +ok5356: + %t374 = getelementptr inbounds %S.gen.Gen, ptr %t372, i32 0, i32 10 + %t375 = load i64, ptr %a324 + %t376 = load { ptr, i64, i64 }, ptr %t374 + %t377 = extractvalue { ptr, i64, i64 } %t376, 1 + %t378 = icmp uge i64 %t375, %t377 + br i1 %t378, label %range5357, label %inrange5358 +range5357: + call void @finch_panic_index(ptr @.str.3412, i64 2618, i64 %t375, i64 %t377) + unreachable +inrange5358: + %t379 = extractvalue { ptr, i64, i64 } %t376, 0 + %t380 = getelementptr inbounds %S.gen.Scope, ptr %t379, i64 %t375 + %t381 = getelementptr inbounds %S.gen.Scope, ptr %t380, i32 0, i32 0 + %t382 = load i64, ptr %a342 + %t383 = load { ptr, i64, i64 }, ptr %t381 + %t384 = extractvalue { ptr, i64, i64 } %t383, 1 + %t385 = icmp uge i64 %t382, %t384 + br i1 %t385, label %range5359, label %inrange5360 +range5359: + call void @finch_panic_index(ptr @.str.3413, i64 2618, i64 %t382, i64 %t384) + unreachable +inrange5360: + %t386 = extractvalue { ptr, i64, i64 } %t383, 0 + %t387 = getelementptr inbounds %S.gen.Var, ptr %t386, i64 %t382 + %t388 = getelementptr inbounds %S.gen.Var, ptr %t387, i32 0, i32 4 + %t389 = load i64, ptr %t388 + %t390 = load ptr, ptr %a1 + %t391 = icmp eq ptr %t390, null + br i1 %t391, label %panic5361, label %ok5362 +panic5361: + call void @finch_panic(ptr @.str.3414, i64 2618, ptr @.str.3415) + unreachable +ok5362: + %t392 = getelementptr inbounds %S.gen.Gen, ptr %t390, i32 0, i32 44 + %t393 = load i64, ptr %t392 + %t394 = icmp sge i64 %t389, %t393 + br label %logic.rend5363 +logic.rend5363: + br label %logic.end5354 +logic.end5354: + %t395 = phi i1 [ false, %logic.from5352 ], [ %t394, %logic.rend5363 ] + %t396 = xor i1 %t395, true + br label %logic.rend5364 +logic.rend5364: + br label %logic.end5349 +logic.end5349: + %t397 = phi i1 [ false, %logic.from5347 ], [ %t396, %logic.rend5364 ] + br i1 %t397, label %then5365, label %endif5367 +then5365: + %t398 = load i64, ptr %a342 + store i64 %t398, ptr %a329 + br label %endif5367 +endif5367: + br label %for.step5339 +for.step5339: + %t399 = load i64, ptr %a342 + %t400 = add i64 %t399, 1 + store i64 %t400, ptr %a342 + br label %for.cond5337 +for.end5340: + %t401 = load i64, ptr %a329 + %t402 = icmp slt i64 %t401, 0 + br i1 %t402, label %then5368, label %endif5370 +then5368: + br label %while.cond5330 +endif5370: + %t403 = load ptr, ptr %a1 + %t404 = icmp eq ptr %t403, null + br i1 %t404, label %panic5371, label %ok5372 +panic5371: + call void @finch_panic(ptr @.str.3416, i64 2625, ptr @.str.3417) + unreachable +ok5372: + %t405 = getelementptr inbounds %S.gen.Gen, ptr %t403, i32 0, i32 10 + %t406 = load i64, ptr %a324 + %t407 = load { ptr, i64, i64 }, ptr %t405 + %t408 = extractvalue { ptr, i64, i64 } %t407, 1 + %t409 = icmp uge i64 %t406, %t408 + br i1 %t409, label %range5373, label %inrange5374 +range5373: + call void @finch_panic_index(ptr @.str.3418, i64 2625, i64 %t406, i64 %t408) + unreachable +inrange5374: + %t410 = extractvalue { ptr, i64, i64 } %t407, 0 + %t411 = getelementptr inbounds %S.gen.Scope, ptr %t410, i64 %t406 + %t412 = getelementptr inbounds %S.gen.Scope, ptr %t411, i32 0, i32 0 + %t413 = load i64, ptr %a329 + %t414 = load { ptr, i64, i64 }, ptr %t412 + %t415 = extractvalue { ptr, i64, i64 } %t414, 1 + %t416 = icmp uge i64 %t413, %t415 + br i1 %t416, label %range5375, label %inrange5376 +range5375: + call void @finch_panic_index(ptr @.str.3419, i64 2625, i64 %t413, i64 %t415) + unreachable +inrange5376: + %t417 = extractvalue { ptr, i64, i64 } %t414, 0 + %t418 = getelementptr inbounds %S.gen.Var, ptr %t417, i64 %t413 + %t419 = load %S.gen.Var, ptr %t418 + store %S.gen.Var %t419, ptr %a420 + call void @finch.copy.S_gen_Var(ptr %a421, ptr %a420) + %t422 = load %S.gen.Var, ptr %a421 + store %S.gen.Var %t422, ptr %a423 + %t424 = getelementptr inbounds %S.gen.Var, ptr %a423, i32 0, i32 5 + %t425 = load i1, ptr %t424 + br label %logic.from5377 +logic.from5377: + br i1 %t425, label %logic.rhs5378, label %logic.end5379 +logic.rhs5378: + %t426 = getelementptr inbounds %S.gen.Var, ptr %a423, i32 0, i32 1 + %t427 = load %S.ast.Type, ptr %t426 %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 %panic5076, label %ok5077 -panic5076: - call void @finch_panic(ptr @.str.3308, i64 2436, ptr @.str.3309) + %t429 = icmp eq ptr %t428, null + br i1 %t429, label %panic5380, label %ok5381 +panic5380: + call void @finch_panic(ptr @.str.3420, i64 2626, ptr @.str.3421) unreachable -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.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.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 - store { ptr, i64, i64 } %t443, ptr %a446 - store { ptr, i64, i64 } %t444, ptr %a447 - 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 %endif5067 -endif5067: - %t449 = load ptr, ptr %a1 - %t450 = icmp eq ptr %t449, null - br i1 %t450, label %panic5078, label %ok5079 -panic5078: - call void @finch_panic(ptr @.str.3311, i64 2438, ptr @.str.3312) +ok5381: + %t430 = getelementptr inbounds %S.gen.Gen, ptr %t428, i32 0, i32 13 + %t431 = getelementptr inbounds %S.gen.FnSig, ptr %t430, i32 0, i32 12 + %t432 = load %S.ast.Type, ptr %t431 + %t433 = call i1 @finch.ast.same(%S.ast.Type %t427, %S.ast.Type %t432) + br label %logic.rend5382 +logic.rend5382: + br label %logic.end5379 +logic.end5379: + %t434 = phi i1 [ false, %logic.from5377 ], [ %t433, %logic.rend5382 ] + br i1 %t434, label %then5383, label %endif5385 +then5383: + %t435 = load ptr, ptr %a1 + %t436 = load ptr, ptr %a1 + %t437 = getelementptr inbounds %S.gen.Var, ptr %a423, i32 0, i32 1 + %t438 = load %S.ast.Type, ptr %t437 + %t439 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t436, %S.ast.Type %t438) + %t440 = getelementptr inbounds %S.gen.Var, ptr %a423, i32 0, i32 2 + %t441 = load { ptr, i64, i64 }, ptr %t440 + %t442 = call { ptr, i64, i64 } @finch.gen.load(ptr %t435, { ptr, i64, i64 } %t439, { ptr, i64, i64 } %t441) + store { ptr, i64, i64 } %t439, ptr %a443 + call void @finch_str_drop(ptr %a443) + store { ptr, i64, i64 } %t442, ptr %a444 + %t445 = load ptr, ptr %a1 + %t446 = icmp eq ptr %t445, null + br i1 %t446, label %panic5386, label %ok5387 +panic5386: + call void @finch_panic(ptr @.str.3422, i64 2628, ptr @.str.3423) unreachable -ok5079: - %t451 = getelementptr inbounds %S.gen.Gen, ptr %t449, i32 0, i32 9 - store i1 true, ptr %t451 +ok5387: + %t447 = getelementptr inbounds %S.gen.Gen, ptr %t445, i32 0, i32 10 + %t448 = load i64, ptr %a324 + %t449 = load { ptr, i64, i64 }, ptr %t447 + %t450 = extractvalue { ptr, i64, i64 } %t449, 1 + %t451 = icmp uge i64 %t448, %t450 + br i1 %t451, label %range5388, label %inrange5389 +range5388: + call void @finch_panic_index(ptr @.str.3424, i64 2628, i64 %t448, i64 %t450) + unreachable +inrange5389: + %t452 = extractvalue { ptr, i64, i64 } %t449, 0 + %t453 = getelementptr inbounds %S.gen.Scope, ptr %t452, i64 %t448 + %t454 = getelementptr inbounds %S.gen.Scope, ptr %t453, i32 0, i32 0 + %t455 = load i64, ptr %a329 + %t456 = load { ptr, i64, i64 }, ptr %t454 + %t457 = extractvalue { ptr, i64, i64 } %t456, 1 + %t458 = icmp uge i64 %t455, %t457 + br i1 %t458, label %range5390, label %inrange5391 +range5390: + call void @finch_panic_index(ptr @.str.3425, i64 2628, i64 %t455, i64 %t457) + unreachable +inrange5391: + %t459 = extractvalue { ptr, i64, i64 } %t456, 0 + %t460 = getelementptr inbounds %S.gen.Var, ptr %t459, i64 %t455 + %t461 = getelementptr inbounds %S.gen.Var, ptr %t460, i32 0, i32 6 + store i1 true, ptr %t461 + %t462 = load ptr, ptr %a1 + call void @finch.gen.dropPending(ptr %t462, i64 0) + %t463 = load ptr, ptr %a1 + call void @finch.gen.unwind(ptr %t463, i64 0) + %t464 = load ptr, ptr %a1 + %t465 = icmp eq ptr %t464, null + br i1 %t465, label %panic5392, label %ok5393 +panic5392: + call void @finch_panic(ptr @.str.3426, i64 2631, ptr @.str.3427) + unreachable +ok5393: + %t466 = getelementptr inbounds %S.gen.Gen, ptr %t464, i32 0, i32 10 + %t467 = load i64, ptr %a324 + %t468 = load { ptr, i64, i64 }, ptr %t466 + %t469 = extractvalue { ptr, i64, i64 } %t468, 1 + %t470 = icmp uge i64 %t467, %t469 + br i1 %t470, label %range5394, label %inrange5395 +range5394: + call void @finch_panic_index(ptr @.str.3428, i64 2631, i64 %t467, i64 %t469) + unreachable +inrange5395: + %t471 = extractvalue { ptr, i64, i64 } %t468, 0 + %t472 = getelementptr inbounds %S.gen.Scope, ptr %t471, i64 %t467 + %t473 = getelementptr inbounds %S.gen.Scope, ptr %t472, i32 0, i32 0 + %t474 = load i64, ptr %a329 + %t475 = load { ptr, i64, i64 }, ptr %t473 + %t476 = extractvalue { ptr, i64, i64 } %t475, 1 + %t477 = icmp uge i64 %t474, %t476 + br i1 %t477, label %range5396, label %inrange5397 +range5396: + call void @finch_panic_index(ptr @.str.3429, i64 2631, i64 %t474, i64 %t476) + unreachable +inrange5397: + %t478 = extractvalue { ptr, i64, i64 } %t475, 0 + %t479 = getelementptr inbounds %S.gen.Var, ptr %t478, i64 %t474 + %t480 = getelementptr inbounds %S.gen.Var, ptr %t479, i32 0, i32 6 + store i1 false, ptr %t480 + %t481 = load ptr, ptr %a1 + %t482 = load { ptr, i64, i64 }, ptr %a444 + call void @finch.gen.finishReturn(ptr %t481, { ptr, i64, i64 } %t482) + call void @finch_str_drop(ptr %a444) + call void @finch.drop.S_gen_Var(ptr %a423) + call void @finch_str_drop(ptr %a318) + ret void +endif5385: + call void @finch.drop.S_gen_Var(ptr %a423) + br label %while.end5332 +while.end5332: + call void @finch_str_drop(ptr %a318) + br label %endif5325 +endif5325: + %t483 = load ptr, ptr %a1 + %t484 = load ptr, ptr %a1 + %t485 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t486 = load { ptr, i64, i64 }, ptr %t485 + %t487 = extractvalue { ptr, i64, i64 } %t486, 1 + %t488 = icmp uge i64 0, %t487 + br i1 %t488, label %range5398, label %inrange5399 +range5398: + call void @finch_panic_index(ptr @.str.3430, i64 2638, i64 0, i64 %t487) + unreachable +inrange5399: + %t489 = extractvalue { ptr, i64, i64 } %t486, 0 + %t490 = getelementptr inbounds %S.ast.Node, ptr %t489, i64 0 + %t491 = load %S.ast.Node, ptr %t490 + %t492 = load ptr, ptr %a1 + %t493 = icmp eq ptr %t492, null + br i1 %t493, label %panic5400, label %ok5401 +panic5400: + call void @finch_panic(ptr @.str.3431, i64 2638, ptr @.str.3432) + unreachable +ok5401: + %t494 = getelementptr inbounds %S.gen.Gen, ptr %t492, i32 0, i32 13 + %t495 = getelementptr inbounds %S.gen.FnSig, ptr %t494, i32 0, i32 12 + %t496 = load %S.ast.Type, ptr %t495 + %t497 = call %S.gen.Val @finch.gen.exprWant(ptr %t484, %S.ast.Node %t491, %S.ast.Type %t496) + %t498 = load ptr, ptr %a1 + %t499 = icmp eq ptr %t498, null + br i1 %t499, label %panic5402, label %ok5403 +panic5402: + call void @finch_panic(ptr @.str.3433, i64 2638, ptr @.str.3434) + unreachable +ok5403: + %t500 = getelementptr inbounds %S.gen.Gen, ptr %t498, i32 0, i32 13 + %t501 = getelementptr inbounds %S.gen.FnSig, ptr %t500, i32 0, i32 12 + %t502 = load %S.ast.Type, ptr %t501 + %t503 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t504 = load { ptr, i64, i64 }, ptr %t503 + %t505 = extractvalue { ptr, i64, i64 } %t504, 1 + %t506 = icmp uge i64 0, %t505 + br i1 %t506, label %range5404, label %inrange5405 +range5404: + call void @finch_panic_index(ptr @.str.3435, i64 2638, i64 0, i64 %t505) + unreachable +inrange5405: + %t507 = extractvalue { ptr, i64, i64 } %t504, 0 + %t508 = getelementptr inbounds %S.ast.Node, ptr %t507, i64 0 + %t509 = load %S.ast.Node, ptr %t508 + %t510 = call %S.gen.Val @finch.gen.coerce(ptr %t483, %S.gen.Val %t497, %S.ast.Type %t502, %S.ast.Node %t509, { ptr, i64, i64 } { ptr @.str.3436, i64 18, i64 0 }) + store %S.gen.Val %t497, ptr %a511 + call void @finch.drop.S_gen_Val(ptr %a511) + store %S.gen.Val %t510, ptr %a512 + %t513 = load ptr, ptr %a1 + %t514 = load %S.gen.Val, ptr %a512 + %t515 = call { ptr, i64, i64 } @finch.gen.own(ptr %t513, %S.gen.Val %t514) + store { ptr, i64, i64 } %t515, ptr %a516 + %t517 = load ptr, ptr %a1 + call void @finch.gen.dropPending(ptr %t517, i64 0) + %t518 = load ptr, ptr %a1 + call void @finch.gen.unwind(ptr %t518, i64 0) + %t519 = load ptr, ptr %a1 + %t520 = load { ptr, i64, i64 }, ptr %a516 + call void @finch.gen.finishReturn(ptr %t519, { ptr, i64, i64 } %t520) + call void @finch_str_drop(ptr %a516) + call void @finch.drop.S_gen_Val(ptr %a512) + ret void +} + +define internal void @finch.gen.finishReturn(ptr %p0, { ptr, i64, i64 } %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = 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 + %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 + %a23 = alloca { ptr, i64, i64 }, align 16 + %a26 = alloca { ptr, i64, i64 }, align 16 + %a27 = 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 + %a38 = 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 + %a43 = alloca { ptr, i64, i64 }, align 16 + %a46 = 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 + %a54 = 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 + %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 + %a72 = 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 + %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 + %a83 = alloca { ptr, i64, i64 }, align 16 + %a86 = alloca { ptr, i64, i64 }, align 16 + %a87 = 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 + %a98 = 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 + %a103 = 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 + %a109 = alloca { ptr, i64, i64 }, align 16 + %a111 = alloca { ptr, i64, i64 }, align 16 + %a120 = alloca { ptr, i64, i64 }, align 16 + %a121 = alloca { ptr, i64, i64 }, align 16 + %a122 = alloca { ptr, i64, i64 }, align 16 + %a123 = alloca { ptr, i64, i64 }, align 16 + %a125 = 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 + %a134 = alloca { ptr, i64, i64 }, align 16 + %a136 = 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 %panic5406, label %ok5407 +panic5406: + call void @finch_panic(ptr @.str.3437, i64 2646, ptr @.str.3438) + unreachable +ok5407: + %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 13 + %t6 = getelementptr inbounds %S.gen.FnSig, ptr %t5, i32 0, i32 9 + %t7 = load i1, ptr %t6 + br i1 %t7, label %then5408, label %else5409 +then5408: + %t8 = load ptr, ptr %a1 + %t9 = load ptr, ptr %a1 + %t10 = load ptr, ptr %a1 + %t11 = icmp eq ptr %t10, null + br i1 %t11, label %panic5411, label %ok5412 +panic5411: + call void @finch_panic(ptr @.str.3440, i64 2647, ptr @.str.3441) + unreachable +ok5412: + %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 13 + %t13 = load %S.gen.FnSig, ptr %t12 + %t14 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t9, %S.gen.FnSig %t13) + store { ptr, i64, i64 } { ptr @.str.3439, i64 12, i64 0 }, ptr %a16 + store { ptr, i64, i64 } %t14, ptr %a17 + call void @finch_str_concat(ptr %a15, ptr %a16, ptr %a17) + store { ptr, i64, i64 } %t14, ptr %a18 + call void @finch_str_drop(ptr %a18) + %t19 = load { ptr, i64, i64 }, ptr %a15 + store { ptr, i64, i64 } %t19, ptr %a21 + store { ptr, i64, i64 } { ptr @.str.3442, i64 28, i64 0 }, ptr %a22 + call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22) + store { ptr, i64, i64 } %t19, ptr %a23 + call void @finch_str_drop(ptr %a23) + %t24 = load { ptr, i64, i64 }, ptr %a20 + %t25 = call { ptr, i64, i64 } @finch.gen.op(ptr %t8, { ptr, i64, i64 } %t24) + store { ptr, i64, i64 } %t24, ptr %a26 + call void @finch_str_drop(ptr %a26) + store { ptr, i64, i64 } %t25, ptr %a27 + %t28 = load ptr, ptr %a1 + %t29 = load ptr, ptr %a1 + %t30 = load ptr, ptr %a1 + %t31 = icmp eq ptr %t30, null + br i1 %t31, label %panic5413, label %ok5414 +panic5413: + call void @finch_panic(ptr @.str.3444, i64 2648, ptr @.str.3445) + unreachable +ok5414: + %t32 = getelementptr inbounds %S.gen.Gen, ptr %t30, i32 0, i32 13 + %t33 = load %S.gen.FnSig, ptr %t32 + %t34 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t29, %S.gen.FnSig %t33) + store { ptr, i64, i64 } { ptr @.str.3443, i64 12, i64 0 }, ptr %a36 + store { ptr, i64, i64 } %t34, ptr %a37 + call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) + store { ptr, i64, i64 } %t34, ptr %a38 + call void @finch_str_drop(ptr %a38) + %t39 = load { ptr, i64, i64 }, ptr %a35 + store { ptr, i64, i64 } %t39, ptr %a41 + store { ptr, i64, i64 } { ptr @.str.3446, i64 1, i64 0 }, ptr %a42 + call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) + store { ptr, i64, i64 } %t39, ptr %a43 + call void @finch_str_drop(ptr %a43) + %t44 = load { ptr, i64, i64 }, ptr %a40 + %t45 = load { ptr, i64, i64 }, ptr %a27 + store { ptr, i64, i64 } %t44, ptr %a47 + store { ptr, i64, i64 } %t45, ptr %a48 + call void @finch_str_concat(ptr %a46, ptr %a47, ptr %a48) + store { ptr, i64, i64 } %t44, ptr %a49 + call void @finch_str_drop(ptr %a49) + %t50 = load { ptr, i64, i64 }, ptr %a46 + store { ptr, i64, i64 } %t50, ptr %a52 + store { ptr, i64, i64 } { ptr @.str.3447, i64 2, i64 0 }, ptr %a53 + call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) + store { ptr, i64, i64 } %t50, ptr %a54 + call void @finch_str_drop(ptr %a54) + %t55 = load { ptr, i64, i64 }, ptr %a51 + %t56 = load ptr, ptr %a1 + %t57 = load ptr, ptr %a1 + %t58 = icmp eq ptr %t57, null + br i1 %t58, label %panic5415, label %ok5416 +panic5415: + call void @finch_panic(ptr @.str.3448, i64 2648, ptr @.str.3449) + unreachable +ok5416: + %t59 = getelementptr inbounds %S.gen.Gen, ptr %t57, i32 0, i32 13 + %t60 = getelementptr inbounds %S.gen.FnSig, ptr %t59, i32 0, i32 12 + %t61 = load %S.ast.Type, ptr %t60 + %t62 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t56, %S.ast.Type %t61) + store { ptr, i64, i64 } %t55, ptr %a64 + store { ptr, i64, i64 } %t62, ptr %a65 + call void @finch_str_concat(ptr %a63, ptr %a64, ptr %a65) + store { ptr, i64, i64 } %t55, ptr %a66 + call void @finch_str_drop(ptr %a66) + store { ptr, i64, i64 } %t62, ptr %a67 + call void @finch_str_drop(ptr %a67) + %t68 = load { ptr, i64, i64 }, ptr %a63 + store { ptr, i64, i64 } %t68, ptr %a70 + store { ptr, i64, i64 } { ptr @.str.3450, i64 1, i64 0 }, ptr %a71 + call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) + store { ptr, i64, i64 } %t68, ptr %a72 + call void @finch_str_drop(ptr %a72) + %t73 = load { ptr, i64, i64 }, ptr %a69 + %t74 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t73, ptr %a76 + store { ptr, i64, i64 } %t74, ptr %a77 + call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77) + store { ptr, i64, i64 } %t73, ptr %a78 + call void @finch_str_drop(ptr %a78) + %t79 = load { ptr, i64, i64 }, ptr %a75 + store { ptr, i64, i64 } %t79, ptr %a81 + store { ptr, i64, i64 } { ptr @.str.3451, i64 3, i64 0 }, ptr %a82 + call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82) + store { ptr, i64, i64 } %t79, ptr %a83 + call void @finch_str_drop(ptr %a83) + %t84 = load { ptr, i64, i64 }, ptr %a80 + %t85 = call { ptr, i64, i64 } @finch.gen.op(ptr %t28, { ptr, i64, i64 } %t84) + store { ptr, i64, i64 } %t84, ptr %a86 + call void @finch_str_drop(ptr %a86) + store { ptr, i64, i64 } %t85, ptr %a87 + %t88 = load ptr, ptr %a1 + %t89 = load ptr, ptr %a1 + %t90 = load ptr, ptr %a1 + %t91 = icmp eq ptr %t90, null + br i1 %t91, label %panic5417, label %ok5418 +panic5417: + call void @finch_panic(ptr @.str.3453, i64 2649, ptr @.str.3454) + unreachable +ok5418: + %t92 = getelementptr inbounds %S.gen.Gen, ptr %t90, i32 0, i32 13 + %t93 = load %S.gen.FnSig, ptr %t92 + %t94 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t89, %S.gen.FnSig %t93) + store { ptr, i64, i64 } { ptr @.str.3452, i64 4, i64 0 }, ptr %a96 + store { ptr, i64, i64 } %t94, ptr %a97 + call void @finch_str_concat(ptr %a95, ptr %a96, ptr %a97) + store { ptr, i64, i64 } %t94, ptr %a98 + call void @finch_str_drop(ptr %a98) + %t99 = load { ptr, i64, i64 }, ptr %a95 + store { ptr, i64, i64 } %t99, ptr %a101 + store { ptr, i64, i64 } { ptr @.str.3455, i64 1, i64 0 }, ptr %a102 + call void @finch_str_concat(ptr %a100, ptr %a101, ptr %a102) + store { ptr, i64, i64 } %t99, ptr %a103 + call void @finch_str_drop(ptr %a103) + %t104 = load { ptr, i64, i64 }, ptr %a100 + %t105 = load { ptr, i64, i64 }, ptr %a87 + store { ptr, i64, i64 } %t104, ptr %a107 + store { ptr, i64, i64 } %t105, ptr %a108 + call void @finch_str_concat(ptr %a106, ptr %a107, ptr %a108) + store { ptr, i64, i64 } %t104, ptr %a109 + call void @finch_str_drop(ptr %a109) + %t110 = load { ptr, i64, i64 }, ptr %a106 + call void @finch.gen.emit(ptr %t88, { ptr, i64, i64 } %t110) + store { ptr, i64, i64 } %t110, ptr %a111 + call void @finch_str_drop(ptr %a111) + call void @finch_str_drop(ptr %a87) + call void @finch_str_drop(ptr %a27) + br label %endif5410 +else5409: + %t112 = load ptr, ptr %a1 + %t113 = load ptr, ptr %a1 + %t114 = load ptr, ptr %a1 + %t115 = icmp eq ptr %t114, null + br i1 %t115, label %panic5419, label %ok5420 +panic5419: + call void @finch_panic(ptr @.str.3457, i64 2651, ptr @.str.3458) + unreachable +ok5420: + %t116 = getelementptr inbounds %S.gen.Gen, ptr %t114, i32 0, i32 13 + %t117 = getelementptr inbounds %S.gen.FnSig, ptr %t116, i32 0, i32 12 + %t118 = load %S.ast.Type, ptr %t117 + %t119 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t113, %S.ast.Type %t118) + store { ptr, i64, i64 } { ptr @.str.3456, i64 4, i64 0 }, ptr %a121 + store { ptr, i64, i64 } %t119, ptr %a122 + call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122) + store { ptr, i64, i64 } %t119, ptr %a123 + call void @finch_str_drop(ptr %a123) + %t124 = load { ptr, i64, i64 }, ptr %a120 + store { ptr, i64, i64 } %t124, ptr %a126 + store { ptr, i64, i64 } { ptr @.str.3459, i64 1, i64 0 }, ptr %a127 + call void @finch_str_concat(ptr %a125, ptr %a126, ptr %a127) + store { ptr, i64, i64 } %t124, ptr %a128 + call void @finch_str_drop(ptr %a128) + %t129 = load { ptr, i64, i64 }, ptr %a125 + %t130 = load { ptr, i64, i64 }, ptr %a2 + 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) + store { ptr, i64, i64 } %t129, ptr %a134 + call void @finch_str_drop(ptr %a134) + %t135 = load { ptr, i64, i64 }, ptr %a131 + call void @finch.gen.emit(ptr %t112, { ptr, i64, i64 } %t135) + store { ptr, i64, i64 } %t135, ptr %a136 + call void @finch_str_drop(ptr %a136) + br label %endif5410 +endif5410: + %t137 = load ptr, ptr %a1 + %t138 = icmp eq ptr %t137, null + br i1 %t138, label %panic5421, label %ok5422 +panic5421: + call void @finch_panic(ptr @.str.3460, i64 2653, ptr @.str.3461) + unreachable +ok5422: + %t139 = getelementptr inbounds %S.gen.Gen, ptr %t137, i32 0, i32 9 + store i1 true, ptr %t139 ret void } @@ -46222,15 +54519,20 @@ entry: %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 + %a15 = alloca { ptr, i64, i64 }, align 16 %a17 = alloca { ptr, i64, i64 }, align 16 %a18 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 + %a19 = alloca { ptr, i64, i64 }, align 16 + %a20 = 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 %a34 = alloca { ptr, i64, i64 }, align 16 %a35 = alloca { ptr, i64, i64 }, align 16 + %a37 = alloca { ptr, i64, i64 }, align 16 + %a38 = 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 %S.ast.Type %p1, ptr %a2 %t3 = load ptr, ptr %a1 @@ -46238,46 +54540,56 @@ 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 %range5080, label %inrange5081 -range5080: - call void @finch_panic_index(ptr @.str.3314, i64 2450, i64 0, i64 %t6) + br i1 %t7, label %range5423, label %inrange5424 +range5423: + call void @finch_panic_index(ptr @.str.3463, i64 2665, i64 0, i64 %t6) unreachable -inrange5081: +inrange5424: %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.3313, i64 7, i64 0 }, ptr %a13 + store { ptr, i64, i64 } { ptr @.str.3462, 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.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 - %t21 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t22 = load { ptr, i64, i64 }, ptr %t21 - %t23 = extractvalue { ptr, i64, i64 } %t22, 1 - %t24 = icmp uge i64 1, %t23 - br i1 %t24, label %range5082, label %inrange5083 -range5082: - call void @finch_panic_index(ptr @.str.3316, i64 2450, i64 1, i64 %t23) + store { ptr, i64, i64 } %t11, ptr %a15 + call void @finch_str_drop(ptr %a15) + %t16 = load { ptr, i64, i64 }, ptr %a12 + store { ptr, i64, i64 } %t16, ptr %a18 + store { ptr, i64, i64 } { ptr @.str.3464, i64 2, i64 0 }, ptr %a19 + call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) + store { ptr, i64, i64 } %t16, ptr %a20 + call void @finch_str_drop(ptr %a20) + %t21 = load { ptr, i64, i64 }, ptr %a17 + %t22 = load ptr, ptr %a1 + %t23 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t24 = load { ptr, i64, i64 }, ptr %t23 + %t25 = extractvalue { ptr, i64, i64 } %t24, 1 + %t26 = icmp uge i64 1, %t25 + br i1 %t26, label %range5425, label %inrange5426 +range5425: + call void @finch_panic_index(ptr @.str.3465, i64 2665, i64 1, i64 %t25) unreachable -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 - %t28 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t20, %S.ast.Type %t27) - store { ptr, i64, i64 } %t19, 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.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 +inrange5426: + %t27 = extractvalue { ptr, i64, i64 } %t24, 0 + %t28 = getelementptr inbounds %S.ast.Type, ptr %t27, i64 1 + %t29 = load %S.ast.Type, ptr %t28 + %t30 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t22, %S.ast.Type %t29) + store { ptr, i64, i64 } %t21, ptr %a32 + store { ptr, i64, i64 } %t30, ptr %a33 + call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) + store { ptr, i64, i64 } %t21, ptr %a34 + call void @finch_str_drop(ptr %a34) + store { ptr, i64, i64 } %t30, ptr %a35 + call void @finch_str_drop(ptr %a35) + %t36 = load { ptr, i64, i64 }, ptr %a31 + store { ptr, i64, i64 } %t36, ptr %a38 + store { ptr, i64, i64 } { ptr @.str.3466, i64 2, i64 0 }, ptr %a39 + call void @finch_str_concat(ptr %a37, ptr %a38, ptr %a39) + store { ptr, i64, i64 } %t36, ptr %a40 + call void @finch_str_drop(ptr %a40) + %t41 = load { ptr, i64, i64 }, ptr %a37 + ret { ptr, i64, i64 } %t41 } define internal { ptr, i64, i64 } @finch.gen.entrySize(ptr %p0, %S.ast.Type %p1) { @@ -46287,23 +54599,29 @@ entry: %a6 = alloca { ptr, i64, i64 }, align 16 %a7 = alloca { ptr, i64, i64 }, align 16 %a8 = alloca { ptr, i64, i64 }, align 16 - %a10 = 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 + %a14 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store %S.ast.Type %p1, ptr %a2 %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.3318, i64 29, i64 0 }, ptr %a7 + store { ptr, i64, i64 } { ptr @.str.3467, 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.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 + store { ptr, i64, i64 } %t5, ptr %a9 + call void @finch_str_drop(ptr %a9) + %t10 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t10, ptr %a12 + store { ptr, i64, i64 } { ptr @.str.3468, i64 26, i64 0 }, ptr %a13 + call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13) + store { ptr, i64, i64 } %t10, ptr %a14 + call void @finch_str_drop(ptr %a14) + %t15 = load { ptr, i64, i64 }, ptr %a11 + ret { ptr, i64, i64 } %t15 } define internal { ptr, i64, i64 } @finch.gen.entryAt(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, { ptr, i64, i64 } %p3) { @@ -46315,31 +54633,43 @@ entry: %a10 = alloca { ptr, i64, i64 }, align 16 %a11 = alloca { ptr, i64, i64 }, align 16 %a12 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 + %a13 = alloca { ptr, i64, i64 }, align 16 %a15 = alloca { ptr, i64, i64 }, align 16 %a16 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 + %a17 = alloca { ptr, i64, i64 }, align 16 + %a18 = 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 %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = 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 + %a32 = alloca { ptr, i64, i64 }, align 16 %a34 = alloca { ptr, i64, i64 }, align 16 %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a38 = 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 + %a42 = 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 + %a46 = 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 %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 + %a59 = alloca { ptr, i64, i64 }, align 16 + %a62 = 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 + %a68 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store { ptr, i64, i64 } %p1, ptr %a2 store %S.ast.Type %p2, ptr %a3 @@ -46349,54 +54679,79 @@ 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.3321, i64 23, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.3470, 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.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 - store { ptr, i64, i64 } %t17, 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.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.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.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.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 - store { ptr, i64, i64 } %t41, 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.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 + store { ptr, i64, i64 } %t9, ptr %a13 + call void @finch_str_drop(ptr %a13) + %t14 = load { ptr, i64, i64 }, ptr %a10 + store { ptr, i64, i64 } %t14, ptr %a16 + store { ptr, i64, i64 } { ptr @.str.3471, i64 6, i64 0 }, ptr %a17 + call void @finch_str_concat(ptr %a15, ptr %a16, ptr %a17) + store { ptr, i64, i64 } %t14, ptr %a18 + call void @finch_str_drop(ptr %a18) + %t19 = load { ptr, i64, i64 }, ptr %a15 + %t20 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t19, ptr %a22 + store { ptr, i64, i64 } %t20, ptr %a23 + call void @finch_str_concat(ptr %a21, ptr %a22, ptr %a23) + store { ptr, i64, i64 } %t19, ptr %a24 + call void @finch_str_drop(ptr %a24) + %t25 = load { ptr, i64, i64 }, ptr %a21 + store { ptr, i64, i64 } %t25, ptr %a27 + store { ptr, i64, i64 } { ptr @.str.3472, i64 14, i64 0 }, ptr %a28 + call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28) + store { ptr, i64, i64 } %t25, ptr %a29 + call void @finch_str_drop(ptr %a29) + %t30 = load { ptr, i64, i64 }, ptr %a26 + %t31 = call { ptr, i64, i64 } @finch.gen.op(ptr %t6, { ptr, i64, i64 } %t30) + store { ptr, i64, i64 } %t30, ptr %a32 + call void @finch_str_drop(ptr %a32) + %t33 = call { ptr, i64, i64 } @finch.gen.load(ptr %t5, { ptr, i64, i64 } { ptr @.str.3469, i64 3, i64 0 }, { ptr, i64, i64 } %t31) + store { ptr, i64, i64 } %t31, ptr %a34 + call void @finch_str_drop(ptr %a34) + store { ptr, i64, i64 } %t33, ptr %a35 + %t36 = load ptr, ptr %a1 + %t37 = load ptr, ptr %a1 + %t38 = load %S.ast.Type, ptr %a3 + %t39 = call { ptr, i64, i64 } @finch.gen.entryTy(ptr %t37, %S.ast.Type %t38) + store { ptr, i64, i64 } { ptr @.str.3473, i64 23, i64 0 }, ptr %a41 + store { ptr, i64, i64 } %t39, ptr %a42 + call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) + store { ptr, i64, i64 } %t39, ptr %a43 + call void @finch_str_drop(ptr %a43) + %t44 = load { ptr, i64, i64 }, ptr %a40 + store { ptr, i64, i64 } %t44, ptr %a46 + store { ptr, i64, i64 } { ptr @.str.3474, i64 6, i64 0 }, ptr %a47 + call void @finch_str_concat(ptr %a45, ptr %a46, ptr %a47) + store { ptr, i64, i64 } %t44, ptr %a48 + call void @finch_str_drop(ptr %a48) + %t49 = load { ptr, i64, i64 }, ptr %a45 + %t50 = load { ptr, i64, i64 }, ptr %a35 + store { ptr, i64, i64 } %t49, ptr %a52 store { ptr, i64, i64 } %t50, 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 = call { ptr, i64, i64 } @finch.gen.op(ptr %t30, { ptr, i64, i64 } %t55) - ret { ptr, i64, i64 } %t56 + call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) + store { ptr, i64, i64 } %t49, ptr %a54 + call void @finch_str_drop(ptr %a54) + %t55 = load { ptr, i64, i64 }, ptr %a51 + store { ptr, i64, i64 } %t55, ptr %a57 + store { ptr, i64, i64 } { ptr @.str.3475, i64 6, i64 0 }, ptr %a58 + call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) + store { ptr, i64, i64 } %t55, ptr %a59 + call void @finch_str_drop(ptr %a59) + %t60 = load { ptr, i64, i64 }, ptr %a56 + %t61 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t60, ptr %a63 + store { ptr, i64, i64 } %t61, ptr %a64 + call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) + store { ptr, i64, i64 } %t60, ptr %a65 + call void @finch_str_drop(ptr %a65) + %t66 = load { ptr, i64, i64 }, ptr %a62 + %t67 = call { ptr, i64, i64 } @finch.gen.op(ptr %t36, { ptr, i64, i64 } %t66) + store { ptr, i64, i64 } %t66, ptr %a68 + call void @finch_str_drop(ptr %a68) + call void @finch_str_drop(ptr %a35) + ret { ptr, i64, i64 } %t67 } define internal { ptr, i64, i64 } @finch.gen.entryField(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, i64 %p3) { @@ -46408,19 +54763,26 @@ entry: %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 + %a12 = alloca { ptr, i64, i64 }, align 16 %a14 = alloca { ptr, i64, i64 }, align 16 %a15 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 + %a16 = 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 %a23 = 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 %a27 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 + %a28 = 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 + %a36 = alloca { ptr, i64, i64 }, align 16 + %a37 = 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 store %S.ast.Type %p2, ptr %a3 @@ -46429,32 +54791,46 @@ 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.3327, i64 23, i64 0 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.3476, 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.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 - store { ptr, i64, i64 } %t16, 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.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 - call void @finch_str_from_int(ptr %a27, i64 %t26) - %t28 = load { ptr, i64, i64 }, ptr %a27 - store { ptr, i64, i64 } %t25, 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 - %t33 = call { ptr, i64, i64 } @finch.gen.op(ptr %t5, { ptr, i64, i64 } %t32) - ret { ptr, i64, i64 } %t33 + store { ptr, i64, i64 } %t8, ptr %a12 + call void @finch_str_drop(ptr %a12) + %t13 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t13, ptr %a15 + store { ptr, i64, i64 } { ptr @.str.3477, i64 6, i64 0 }, ptr %a16 + call void @finch_str_concat(ptr %a14, ptr %a15, ptr %a16) + store { ptr, i64, i64 } %t13, ptr %a17 + call void @finch_str_drop(ptr %a17) + %t18 = load { ptr, i64, i64 }, ptr %a14 + %t19 = load { ptr, i64, i64 }, ptr %a2 + 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) + store { ptr, i64, i64 } %t18, ptr %a23 + call void @finch_str_drop(ptr %a23) + %t24 = load { ptr, i64, i64 }, ptr %a20 + store { ptr, i64, i64 } %t24, ptr %a26 + store { ptr, i64, i64 } { ptr @.str.3478, i64 13, i64 0 }, ptr %a27 + call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) + store { ptr, i64, i64 } %t24, ptr %a28 + call void @finch_str_drop(ptr %a28) + %t29 = load { ptr, i64, i64 }, ptr %a25 + %t30 = load i64, ptr %a4 + call void @finch_str_from_int(ptr %a31, i64 %t30) + %t32 = load { ptr, i64, i64 }, ptr %a31 + store { ptr, i64, i64 } %t29, ptr %a34 + store { ptr, i64, i64 } %t32, ptr %a35 + call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) + store { ptr, i64, i64 } %t29, ptr %a36 + call void @finch_str_drop(ptr %a36) + store { ptr, i64, i64 } %t32, ptr %a37 + call void @finch_str_drop(ptr %a37) + %t38 = load { ptr, i64, i64 }, ptr %a33 + %t39 = call { ptr, i64, i64 } @finch.gen.op(ptr %t5, { ptr, i64, i64 } %t38) + store { ptr, i64, i64 } %t38, ptr %a40 + call void @finch_str_drop(ptr %a40) + ret { ptr, i64, i64 } %t39 } define internal { ptr, i64, i64 } @finch.gen.mapArgs(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3) { @@ -46467,116 +54843,151 @@ entry: %a14 = alloca { ptr, i64, i64 }, align 16 %a15 = alloca { ptr, i64, i64 }, align 16 %a19 = 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 %a23 = 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 + %a27 = 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 + %a31 = alloca { ptr, i64, i64 }, align 16 %a32 = alloca { ptr, i64, i64 }, align 16 %a33 = alloca { ptr, i64, i64 }, align 16 %a34 = alloca { ptr, i64, i64 }, align 16 + %a36 = alloca { ptr, i64, i64 }, align 16 + %a37 = alloca { ptr, i64, i64 }, align 16 + %a38 = 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 - %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 + %a46 = alloca { ptr, i64, i64 }, align 16 + %a47 = 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 + %a53 = 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 %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 + %a73 = 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 + %a79 = 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 store %S.ast.Type %p3, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.3330, i64 1, i64 0 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.3479, 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 %range5084, label %inrange5085 -range5084: - call void @finch_panic_index(ptr @.str.3331, i64 2470, i64 0, i64 %t8) + br i1 %t9, label %range5427, label %inrange5428 +range5427: + call void @finch_panic_index(ptr @.str.3480, i64 2685, i64 0, i64 %t8) unreachable -inrange5085: +inrange5428: %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.3332, i64 3, i64 0 }, ptr %a15 + store { ptr, i64, i64 } { ptr @.str.3481, 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 %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.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.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 - store { ptr, i64, i64 } %t26, 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.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 - %t37 = load %S.ast.Type, ptr %a4 - %t38 = call { ptr, i64, i64 } @finch.gen.entrySize(ptr %t36, %S.ast.Type %t37) - store { ptr, i64, i64 } %t35, 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.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 - %t48 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 1 - %t49 = load { ptr, i64, i64 }, ptr %t48 - %t50 = extractvalue { ptr, i64, i64 } %t49, 1 - %t51 = icmp uge i64 0, %t50 - br i1 %t51, label %range5089, label %inrange5090 -range5089: - call void @finch_panic_index(ptr @.str.3338, i64 2473, i64 0, i64 %t50) + br i1 %t17, label %then5429, label %endif5431 +then5429: + %t18 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.3482, i64 1, i64 0 }, ptr %a5 + store { ptr, i64, i64 } %t18, ptr %a19 + call void @finch_str_drop(ptr %a19) + br label %endif5431 +endif5431: + %t20 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } { ptr @.str.3483, i64 4, 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.3484, i64 6, i64 0 }, ptr %a27 + call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) + store { ptr, i64, i64 } %t24, ptr %a28 + call void @finch_str_drop(ptr %a28) + %t29 = load { ptr, i64, i64 }, ptr %a25 + %t30 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t29, ptr %a32 + store { ptr, i64, i64 } %t30, ptr %a33 + call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) + store { ptr, i64, i64 } %t29, ptr %a34 + call void @finch_str_drop(ptr %a34) + %t35 = load { ptr, i64, i64 }, ptr %a31 + store { ptr, i64, i64 } %t35, ptr %a37 + store { ptr, i64, i64 } { ptr @.str.3485, i64 6, i64 0 }, ptr %a38 + call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) + store { ptr, i64, i64 } %t35, ptr %a39 + call void @finch_str_drop(ptr %a39) + %t40 = load { ptr, i64, i64 }, ptr %a36 + %t41 = load ptr, ptr %a1 + %t42 = load %S.ast.Type, ptr %a4 + %t43 = call { ptr, i64, i64 } @finch.gen.entrySize(ptr %t41, %S.ast.Type %t42) + store { ptr, i64, i64 } %t40, ptr %a45 + store { ptr, i64, i64 } %t43, ptr %a46 + call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46) + store { ptr, i64, i64 } %t40, ptr %a47 + call void @finch_str_drop(ptr %a47) + store { ptr, i64, i64 } %t43, ptr %a48 + call void @finch_str_drop(ptr %a48) + %t49 = load { ptr, i64, i64 }, ptr %a44 + store { ptr, i64, i64 } %t49, ptr %a51 + store { ptr, i64, i64 } { ptr @.str.3486, i64 6, i64 0 }, ptr %a52 + call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) + store { ptr, i64, i64 } %t49, ptr %a53 + call void @finch_str_drop(ptr %a53) + %t54 = load { ptr, i64, i64 }, ptr %a50 + %t55 = load ptr, ptr %a1 + %t56 = getelementptr inbounds %S.ast.Type, ptr %a4, 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 %range5432, label %inrange5433 +range5432: + call void @finch_panic_index(ptr @.str.3487, i64 2688, i64 0, i64 %t58) unreachable -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 - %t55 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t47, %S.ast.Type %t54) - store { ptr, i64, i64 } %t46, 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.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 +inrange5433: + %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.gen.sizeOf(ptr %t55, %S.ast.Type %t62) + store { ptr, i64, i64 } %t54, ptr %a65 store { ptr, i64, i64 } %t63, 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 - ret { ptr, i64, i64 } %t68 + call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) + store { ptr, i64, i64 } %t54, ptr %a67 + call void @finch_str_drop(ptr %a67) + store { ptr, i64, i64 } %t63, ptr %a68 + call void @finch_str_drop(ptr %a68) + %t69 = load { ptr, i64, i64 }, ptr %a64 + store { ptr, i64, i64 } %t69, ptr %a71 + store { ptr, i64, i64 } { ptr @.str.3488, i64 6, i64 0 }, ptr %a72 + call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) + store { ptr, i64, i64 } %t69, ptr %a73 + call void @finch_str_drop(ptr %a73) + %t74 = load { ptr, i64, i64 }, ptr %a70 + %t75 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } %t74, ptr %a77 + store { ptr, i64, i64 } %t75, ptr %a78 + call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78) + store { ptr, i64, i64 } %t74, ptr %a79 + call void @finch_str_drop(ptr %a79) + %t80 = load { ptr, i64, i64 }, ptr %a76 + call void @finch_str_drop(ptr %a5) + ret { ptr, i64, i64 } %t80 } define internal { ptr, i64, i64 } @finch.gen.mapFind(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3) { @@ -46588,9 +54999,12 @@ entry: %a11 = 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 + %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 + %a19 = alloca { ptr, i64, i64 }, align 16 + %a22 = 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 @@ -46601,16 +55015,22 @@ 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.3340, i64 25, i64 0 }, ptr %a12 + store { ptr, i64, i64 } { ptr @.str.3489, 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.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) - ret { ptr, i64, i64 } %t19 + store { ptr, i64, i64 } %t10, ptr %a14 + call void @finch_str_drop(ptr %a14) + %t15 = load { ptr, i64, i64 }, ptr %a11 + store { ptr, i64, i64 } %t15, ptr %a17 + store { ptr, i64, i64 } { ptr @.str.3490, i64 1, i64 0 }, ptr %a18 + call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) + store { ptr, i64, i64 } %t15, ptr %a19 + call void @finch_str_drop(ptr %a19) + %t20 = load { ptr, i64, i64 }, ptr %a16 + %t21 = call { ptr, i64, i64 } @finch.gen.op(ptr %t5, { ptr, i64, i64 } %t20) + store { ptr, i64, i64 } %t20, ptr %a22 + call void @finch_str_drop(ptr %a22) + ret { ptr, i64, i64 } %t21 } define internal { ptr, i64, i64 } @finch.gen.defaultVal(ptr %p0, %S.ast.Type %p1, %S.ast.Node %p2) { @@ -46624,29 +55044,30 @@ entry: %a15 = alloca { ptr, i64, i64 }, align 16 %a28 = alloca { ptr, i64, i64 }, align 16 %a29 = alloca { ptr, i64, i64 }, align 16 + %a31 = alloca %S.gen.Val, align 16 store ptr %p0, ptr %a1 store %S.ast.Type %p1, ptr %a2 store %S.ast.Node %p2, ptr %a3 %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.3342, i64 6, i64 0 }, ptr %a7 + store { ptr, i64, i64 } { ptr @.str.3491, 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.from5091 -logic.from5091: - br i1 %t9, label %logic.rhs5092, label %logic.end5093 -logic.rhs5092: + br label %logic.from5434 +logic.from5434: + br i1 %t9, label %logic.rhs5435, label %logic.end5436 +logic.rhs5435: %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.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: + br label %logic.rend5437 +logic.rend5437: + br label %logic.end5436 +logic.end5436: + %t13 = phi i1 [ false, %logic.from5434 ], [ %t12, %logic.rend5437 ] + br i1 %t13, label %then5438, label %endif5440 +then5438: store { ptr, i64, i64 } zeroinitializer, ptr %a14 store { ptr, i64, i64 } zeroinitializer, ptr %a15 %t16 = load ptr, ptr %a1 @@ -46664,11 +55085,15 @@ then5095: store { ptr, i64, i64 } %t27, ptr %a28 call void @finch_str_copy(ptr %a29, ptr %a28) %t30 = load { ptr, i64, i64 }, ptr %a29 + store %S.gen.Val %t26, ptr %a31 + call void @finch.drop.S_gen_Val(ptr %a31) + call void @finch.drop.arr_str(ptr %a15) + call void @finch.drop.arr_S_ast_Node(ptr %a14) ret { ptr, i64, i64 } %t30 -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 +endif5440: + %t32 = load %S.ast.Type, ptr %a2 + %t33 = call { ptr, i64, i64 } @finch.gen.zeroOf(%S.ast.Type %t32) + ret { ptr, i64, i64 } %t33 } define internal { ptr, i64, i64 } @finch.gen.mapSlot(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, %S.gen.Val %p3, i1 %p4, %S.ast.Node %p5) { @@ -46684,29 +55109,41 @@ entry: %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 + %a25 = alloca { ptr, i64, i64 }, align 16 %a27 = alloca { ptr, i64, i64 }, align 16 %a28 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 + %a29 = alloca { ptr, i64, i64 }, align 16 + %a30 = 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 %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 + %a38 = alloca { ptr, i64, i64 }, align 16 + %a39 = alloca { ptr, i64, i64 }, align 16 %a40 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a62 = 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 + %a51 = alloca { ptr, i64, i64 }, align 16 + %a54 = alloca { ptr, i64, i64 }, align 16 + %a57 = alloca { ptr, i64, i64 }, align 16 %a63 = alloca { ptr, i64, i64 }, align 16 %a64 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca %S.ast.Type, align 16 - %a115 = alloca %S.ast.Type, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = 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 + %a71 = alloca { ptr, i64, i64 }, align 16 + %a74 = alloca { ptr, i64, i64 }, align 16 + %a77 = alloca { ptr, i64, i64 }, align 16 + %a93 = alloca { ptr, i64, i64 }, align 16 + %a124 = alloca %S.ast.Type, align 16 + %a125 = alloca %S.ast.Type, align 16 + %a130 = alloca %S.gen.Val, align 16 + %a135 = alloca { ptr, i64, i64 }, align 16 + %a136 = alloca { ptr, i64, i64 }, align 16 + %a137 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store { ptr, i64, i64 } %p1, ptr %a2 store %S.ast.Type %p2, ptr %a3 @@ -46718,158 +55155,188 @@ 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.3343, i64 3, i64 0 }) + %t12 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t11, { ptr, i64, i64 } { ptr @.str.3492, 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.3344, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.3345, i64 1, i64 0 }, { ptr, i64, i64 } %t15) + call void @finch.gen.store(ptr %t14, { ptr, i64, i64 } { ptr @.str.3493, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.3494, 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.3346, i64 25, i64 0 }, ptr %a23 + store { ptr, i64, i64 } { ptr @.str.3495, 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.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 - store { ptr, i64, i64 } %t29, 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.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) - store { ptr, i64, i64 } %t39, ptr %a40 - %t41 = load ptr, ptr %a1 - %t42 = load { ptr, i64, i64 }, ptr %a2 - %t43 = load %S.ast.Type, ptr %a3 - %t44 = load { ptr, i64, i64 }, ptr %a40 - %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.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.3350, i64 8, i64 0 }) - store { ptr, i64, i64 } %t51, ptr %a52 - %t53 = load ptr, ptr %a1 - %t54 = load ptr, ptr %a1 + store { ptr, i64, i64 } %t21, ptr %a25 + call void @finch_str_drop(ptr %a25) + %t26 = load { ptr, i64, i64 }, ptr %a22 + store { ptr, i64, i64 } %t26, ptr %a28 + store { ptr, i64, i64 } { ptr @.str.3496, i64 6, i64 0 }, ptr %a29 + call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) + store { ptr, i64, i64 } %t26, ptr %a30 + call void @finch_str_drop(ptr %a30) + %t31 = load { ptr, i64, i64 }, ptr %a27 + %t32 = load { ptr, i64, i64 }, ptr %a13 + store { ptr, i64, i64 } %t31, ptr %a34 + store { ptr, i64, i64 } %t32, ptr %a35 + call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) + store { ptr, i64, i64 } %t31, ptr %a36 + call void @finch_str_drop(ptr %a36) + %t37 = load { ptr, i64, i64 }, ptr %a33 + store { ptr, i64, i64 } %t37, ptr %a39 + store { ptr, i64, i64 } { ptr @.str.3497, i64 1, i64 0 }, ptr %a40 + call void @finch_str_concat(ptr %a38, ptr %a39, ptr %a40) + store { ptr, i64, i64 } %t37, ptr %a41 + call void @finch_str_drop(ptr %a41) + %t42 = load { ptr, i64, i64 }, ptr %a38 + %t43 = call { ptr, i64, i64 } @finch.gen.op(ptr %t16, { ptr, i64, i64 } %t42) + store { ptr, i64, i64 } %t42, ptr %a44 + call void @finch_str_drop(ptr %a44) + store { ptr, i64, i64 } %t43, ptr %a45 + %t46 = load ptr, ptr %a1 + %t47 = load { ptr, i64, i64 }, ptr %a2 + %t48 = load %S.ast.Type, ptr %a3 + %t49 = load { ptr, i64, i64 }, ptr %a45 + %t50 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t46, { ptr, i64, i64 } %t47, %S.ast.Type %t48, { ptr, i64, i64 } %t49) + store { ptr, i64, i64 } %t50, ptr %a51 + %t52 = load ptr, ptr %a1 + %t53 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t52, { ptr, i64, i64 } { ptr @.str.3498, i64 7, i64 0 }) + store { ptr, i64, i64 } %t53, ptr %a54 %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.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.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) - %t67 = load { ptr, i64, i64 }, ptr %a49 - %t68 = load { ptr, i64, i64 }, ptr %a52 - call void @finch.gen.condBr(ptr %t53, { ptr, i64, i64 } %t66, { ptr, i64, i64 } %t67, { ptr, i64, i64 } %t68) - %t69 = load ptr, ptr %a1 - %t70 = load { ptr, i64, i64 }, ptr %a49 - call void @finch.gen.label(ptr %t69, { ptr, i64, i64 } %t70) - %t71 = load ptr, ptr %a1 - %t72 = load ptr, ptr %a1 - %t73 = load { ptr, i64, i64 }, ptr %a46 - %t74 = load %S.ast.Type, ptr %a3 - %t75 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t72, { ptr, i64, i64 } %t73, %S.ast.Type %t74, i64 1) - %t76 = load { ptr, i64, i64 }, ptr %a10 - %t77 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t78 = load { ptr, i64, i64 }, ptr %t77 - %t79 = extractvalue { ptr, i64, i64 } %t78, 1 - %t80 = icmp uge i64 0, %t79 - br i1 %t80, label %range5098, label %inrange5099 -range5098: - call void @finch_panic_index(ptr @.str.3354, i64 2501, i64 0, i64 %t79) + %t56 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t55, { ptr, i64, i64 } { ptr @.str.3499, i64 8, i64 0 }) + store { ptr, i64, i64 } %t56, ptr %a57 + %t58 = load ptr, ptr %a1 + %t59 = load ptr, ptr %a1 + %t60 = load ptr, ptr %a1 + %t61 = load { ptr, i64, i64 }, ptr %a13 + %t62 = call { ptr, i64, i64 } @finch.gen.load(ptr %t60, { ptr, i64, i64 } { ptr @.str.3501, i64 3, i64 0 }, { ptr, i64, i64 } %t61) + store { ptr, i64, i64 } { ptr @.str.3500, i64 12, i64 0 }, ptr %a64 + store { ptr, i64, i64 } %t62, ptr %a65 + call void @finch_str_concat(ptr %a63, ptr %a64, ptr %a65) + store { ptr, i64, i64 } %t62, ptr %a66 + call void @finch_str_drop(ptr %a66) + %t67 = load { ptr, i64, i64 }, ptr %a63 + store { ptr, i64, i64 } %t67, ptr %a69 + store { ptr, i64, i64 } { ptr @.str.3502, i64 3, i64 0 }, ptr %a70 + call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70) + store { ptr, i64, i64 } %t67, ptr %a71 + call void @finch_str_drop(ptr %a71) + %t72 = load { ptr, i64, i64 }, ptr %a68 + %t73 = call { ptr, i64, i64 } @finch.gen.op(ptr %t59, { ptr, i64, i64 } %t72) + store { ptr, i64, i64 } %t72, ptr %a74 + call void @finch_str_drop(ptr %a74) + %t75 = load { ptr, i64, i64 }, ptr %a54 + %t76 = load { ptr, i64, i64 }, ptr %a57 + call void @finch.gen.condBr(ptr %t58, { ptr, i64, i64 } %t73, { ptr, i64, i64 } %t75, { ptr, i64, i64 } %t76) + store { ptr, i64, i64 } %t73, ptr %a77 + call void @finch_str_drop(ptr %a77) + %t78 = load ptr, ptr %a1 + %t79 = load { ptr, i64, i64 }, ptr %a54 + call void @finch.gen.label(ptr %t78, { ptr, i64, i64 } %t79) + %t80 = load ptr, ptr %a1 + %t81 = load ptr, ptr %a1 + %t82 = load { ptr, i64, i64 }, ptr %a51 + %t83 = load %S.ast.Type, ptr %a3 + %t84 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t81, { ptr, i64, i64 } %t82, %S.ast.Type %t83, i64 1) + %t85 = load { ptr, i64, i64 }, ptr %a10 + %t86 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 + %t87 = load { ptr, i64, i64 }, ptr %t86 + %t88 = extractvalue { ptr, i64, i64 } %t87, 1 + %t89 = icmp uge i64 0, %t88 + br i1 %t89, label %range5441, label %inrange5442 +range5441: + call void @finch_panic_index(ptr @.str.3503, i64 2716, i64 0, i64 %t88) unreachable -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 %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 %range5103, label %inrange5104 -range5103: - call void @finch_panic_index(ptr @.str.3355, i64 2503, i64 1, i64 %t89) - unreachable -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 - %t94 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t86, %S.ast.Type %t93) +inrange5442: + %t90 = extractvalue { ptr, i64, i64 } %t87, 0 + %t91 = getelementptr inbounds %S.ast.Type, ptr %t90, i64 0 + %t92 = load %S.ast.Type, ptr %t91 + call void @finch.gen.copyAt(ptr %t80, { ptr, i64, i64 } %t84, { ptr, i64, i64 } %t85, %S.ast.Type %t92) + store { ptr, i64, i64 } %t84, ptr %a93 + call void @finch_str_drop(ptr %a93) + %t94 = load i1, ptr %a5 + br i1 %t94, label %then5443, label %endif5445 +then5443: %t95 = load ptr, ptr %a1 %t96 = load ptr, ptr %a1 %t97 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 %t98 = load { ptr, i64, i64 }, ptr %t97 %t99 = extractvalue { ptr, i64, i64 } %t98, 1 %t100 = icmp uge i64 1, %t99 - br i1 %t100, label %range5105, label %inrange5106 -range5105: - call void @finch_panic_index(ptr @.str.3356, i64 2503, i64 1, i64 %t99) + br i1 %t100, label %range5446, label %inrange5447 +range5446: + call void @finch_panic_index(ptr @.str.3504, i64 2718, i64 1, i64 %t99) unreachable -inrange5106: +inrange5447: %t101 = extractvalue { ptr, i64, i64 } %t98, 0 %t102 = getelementptr inbounds %S.ast.Type, ptr %t101, i64 1 %t103 = load %S.ast.Type, ptr %t102 - %t104 = load %S.ast.Node, ptr %a6 - %t105 = call { ptr, i64, i64 } @finch.gen.defaultVal(ptr %t96, %S.ast.Type %t103, %S.ast.Node %t104) - %t106 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t105, 0 + %t104 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t96, %S.ast.Type %t103) + %t105 = load ptr, ptr %a1 + %t106 = load ptr, ptr %a1 %t107 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 %t108 = load { ptr, i64, i64 }, ptr %t107 %t109 = extractvalue { ptr, i64, i64 } %t108, 1 %t110 = icmp uge i64 1, %t109 - br i1 %t110, label %range5107, label %inrange5108 -range5107: - call void @finch_panic_index(ptr @.str.3357, i64 2503, i64 1, i64 %t109) + br i1 %t110, label %range5448, label %inrange5449 +range5448: + call void @finch_panic_index(ptr @.str.3505, i64 2718, i64 1, i64 %t109) unreachable -inrange5108: +inrange5449: %t111 = extractvalue { ptr, i64, i64 } %t108, 0 %t112 = getelementptr inbounds %S.ast.Type, ptr %t111, i64 1 %t113 = load %S.ast.Type, ptr %t112 - store %S.ast.Type %t113, ptr %a114 - call void @finch.copy.S_ast_Type(ptr %a115, ptr %a114) - %t116 = load %S.ast.Type, ptr %a115 - %t117 = insertvalue %S.gen.Val %t106, %S.ast.Type %t116, 1 - %t118 = insertvalue %S.gen.Val %t117, i1 true, 2 - %t119 = call { ptr, i64, i64 } @finch.gen.own(ptr %t95, %S.gen.Val %t118) - %t120 = load ptr, ptr %a1 - %t121 = load { ptr, i64, i64 }, ptr %a46 - %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 %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) - %t126 = load ptr, ptr %a1 - %t127 = load { ptr, i64, i64 }, ptr %a52 - call void @finch.gen.label(ptr %t126, { ptr, i64, i64 } %t127) - %t128 = load { ptr, i64, i64 }, ptr %a46 - store { ptr, i64, i64 } %t128, ptr %a129 - call void @finch_str_copy(ptr %a130, ptr %a129) - %t131 = load { ptr, i64, i64 }, ptr %a130 - ret { ptr, i64, i64 } %t131 + %t114 = load %S.ast.Node, ptr %a6 + %t115 = call { ptr, i64, i64 } @finch.gen.defaultVal(ptr %t106, %S.ast.Type %t113, %S.ast.Node %t114) + %t116 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t115, 0 + %t117 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 + %t118 = load { ptr, i64, i64 }, ptr %t117 + %t119 = extractvalue { ptr, i64, i64 } %t118, 1 + %t120 = icmp uge i64 1, %t119 + br i1 %t120, label %range5450, label %inrange5451 +range5450: + call void @finch_panic_index(ptr @.str.3506, i64 2718, i64 1, i64 %t119) + unreachable +inrange5451: + %t121 = extractvalue { ptr, i64, i64 } %t118, 0 + %t122 = getelementptr inbounds %S.ast.Type, ptr %t121, i64 1 + %t123 = load %S.ast.Type, ptr %t122 + store %S.ast.Type %t123, ptr %a124 + call void @finch.copy.S_ast_Type(ptr %a125, ptr %a124) + %t126 = load %S.ast.Type, ptr %a125 + %t127 = insertvalue %S.gen.Val %t116, %S.ast.Type %t126, 1 + %t128 = insertvalue %S.gen.Val %t127, i1 true, 2 + %t129 = call { ptr, i64, i64 } @finch.gen.own(ptr %t105, %S.gen.Val %t128) + store %S.gen.Val %t128, ptr %a130 + call void @finch.drop.S_gen_Val(ptr %a130) + %t131 = load ptr, ptr %a1 + %t132 = load { ptr, i64, i64 }, ptr %a51 + %t133 = load %S.ast.Type, ptr %a3 + %t134 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t131, { ptr, i64, i64 } %t132, %S.ast.Type %t133, i64 2) + call void @finch.gen.store(ptr %t95, { ptr, i64, i64 } %t104, { ptr, i64, i64 } %t129, { ptr, i64, i64 } %t134) + store { ptr, i64, i64 } %t104, ptr %a135 + call void @finch_str_drop(ptr %a135) + store { ptr, i64, i64 } %t129, ptr %a136 + call void @finch_str_drop(ptr %a136) + store { ptr, i64, i64 } %t134, ptr %a137 + call void @finch_str_drop(ptr %a137) + br label %endif5445 +endif5445: + %t138 = load ptr, ptr %a1 + %t139 = load { ptr, i64, i64 }, ptr %a57 + call void @finch.gen.br(ptr %t138, { ptr, i64, i64 } %t139) + %t140 = load ptr, ptr %a1 + %t141 = load { ptr, i64, i64 }, ptr %a57 + call void @finch.gen.label(ptr %t140, { ptr, i64, i64 } %t141) + %t142 = load { ptr, i64, i64 }, ptr %a51 + call void @finch_str_drop(ptr %a57) + call void @finch_str_drop(ptr %a54) + call void @finch_str_drop(ptr %a45) + call void @finch_str_drop(ptr %a13) + call void @finch_str_drop(ptr %a10) + ret { ptr, i64, i64 } %t142 } define internal %S.gen.Ref @finch.gen.mapIndex(ptr %p0, %S.ast.Node %p1, %S.gen.Ref %p2, %S.ast.Type %p3, i1 %p4) { @@ -46886,57 +55353,74 @@ entry: %a25 = alloca %S.ast.Type, align 16 %a27 = alloca %S.ast.Type, align 16 %a48 = alloca %S.gen.Val, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca %S.ast.Type, align 16 - %a72 = alloca %S.ast.Type, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 + %a49 = alloca %S.gen.Val, align 16 + %a64 = alloca { ptr, i64, i64 }, align 16 + %a74 = alloca %S.ast.Type, align 16 + %a75 = alloca %S.ast.Type, align 16 + %a79 = alloca { ptr, i64, i64 }, align 16 + %a85 = alloca { ptr, i64, i64 }, align 16 + %a86 = alloca { ptr, i64, i64 }, align 16 + %a89 = alloca { ptr, i64, i64 }, align 16 + %a95 = alloca { ptr, i64, i64 }, align 16 + %a99 = alloca { ptr, i64, i64 }, align 16 + %a105 = 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 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a145 = 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 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 + %a111 = 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 + %a120 = alloca { ptr, i64, i64 }, align 16 + %a121 = alloca { ptr, i64, i64 }, align 16 + %a122 = alloca { ptr, i64, i64 }, align 16 + %a125 = alloca { ptr, i64, i64 }, align 16 + %a128 = alloca { ptr, i64, i64 }, align 16 + %a133 = alloca { ptr, i64, i64 }, align 16 %a155 = 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 - %a159 = 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 %a163 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = 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 %a172 = alloca { ptr, i64, i64 }, align 16 + %a173 = alloca { ptr, i64, i64 }, align 16 + %a175 = 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 + %a182 = alloca { ptr, i64, i64 }, align 16 + %a183 = alloca { ptr, i64, i64 }, align 16 + %a184 = alloca { ptr, i64, i64 }, align 16 + %a186 = alloca { ptr, i64, i64 }, align 16 + %a187 = alloca { ptr, i64, i64 }, align 16 %a188 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca %S.ast.Type, align 16 - %a199 = alloca %S.ast.Type, align 16 + %a189 = alloca { ptr, i64, i64 }, align 16 + %a191 = 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 - %a216 = alloca %S.ast.Type, align 16 - %a217 = alloca %S.ast.Type, align 16 - %a220 = alloca %S.gen.Val, align 16 - %a234 = alloca %S.ast.Type, align 16 - %a235 = alloca %S.ast.Type, align 16 - %a241 = alloca %S.gen.Val, align 16 + %a214 = alloca { ptr, i64, i64 }, align 16 + %a215 = alloca { ptr, i64, i64 }, align 16 + %a219 = alloca %S.ast.Type, align 16 + %a220 = alloca %S.ast.Type, align 16 + %a230 = alloca { ptr, i64, i64 }, align 16 + %a231 = alloca { ptr, i64, i64 }, align 16 + %a233 = alloca { ptr, i64, i64 }, align 16 + %a234 = alloca { ptr, i64, i64 }, align 16 + %a238 = alloca %S.ast.Type, align 16 + %a239 = alloca %S.ast.Type, align 16 %a242 = alloca %S.gen.Val, align 16 + %a256 = alloca %S.ast.Type, align 16 + %a257 = alloca %S.ast.Type, align 16 + %a262 = alloca %S.gen.Val, align 16 + %a268 = alloca %S.gen.Val, align 16 + %a269 = alloca %S.gen.Val, align 16 store ptr %p0, ptr %a1 store %S.ast.Node %p1, ptr %a2 store %S.gen.Ref %p2, ptr %a3 @@ -46946,11 +55430,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 %range5109, label %inrange5110 -range5109: - call void @finch_panic_index(ptr @.str.3358, i64 2512, i64 0, i64 %t8) + br i1 %t9, label %range5452, label %inrange5453 +range5452: + call void @finch_panic_index(ptr @.str.3507, i64 2727, i64 0, i64 %t8) unreachable -inrange5110: +inrange5453: %t10 = extractvalue { ptr, i64, i64 } %t7, 0 %t11 = getelementptr inbounds %S.ast.Type, ptr %t10, i64 0 %t12 = load %S.ast.Type, ptr %t11 @@ -46962,11 +55446,11 @@ inrange5110: %t18 = load { ptr, i64, i64 }, ptr %t17 %t19 = extractvalue { ptr, i64, i64 } %t18, 1 %t20 = icmp uge i64 1, %t19 - br i1 %t20, label %range5111, label %inrange5112 -range5111: - call void @finch_panic_index(ptr @.str.3359, i64 2513, i64 1, i64 %t19) + br i1 %t20, label %range5454, label %inrange5455 +range5454: + call void @finch_panic_index(ptr @.str.3508, i64 2728, i64 1, i64 %t19) unreachable -inrange5112: +inrange5455: %t21 = extractvalue { ptr, i64, i64 } %t18, 0 %t22 = getelementptr inbounds %S.ast.Type, ptr %t21, i64 1 %t23 = load %S.ast.Type, ptr %t22 @@ -46980,11 +55464,11 @@ inrange5112: %t31 = load { ptr, i64, i64 }, ptr %t30 %t32 = extractvalue { ptr, i64, i64 } %t31, 1 %t33 = icmp uge i64 1, %t32 - br i1 %t33, label %range5113, label %inrange5114 -range5113: - call void @finch_panic_index(ptr @.str.3360, i64 2514, i64 1, i64 %t32) + br i1 %t33, label %range5456, label %inrange5457 +range5456: + call void @finch_panic_index(ptr @.str.3509, i64 2729, i64 1, i64 %t32) unreachable -inrange5114: +inrange5457: %t34 = extractvalue { ptr, i64, i64 } %t31, 0 %t35 = getelementptr inbounds %S.ast.Node, ptr %t34, i64 1 %t36 = load %S.ast.Node, ptr %t35 @@ -46995,270 +55479,343 @@ inrange5114: %t41 = load { ptr, i64, i64 }, ptr %t40 %t42 = extractvalue { ptr, i64, i64 } %t41, 1 %t43 = icmp uge i64 1, %t42 - br i1 %t43, label %range5115, label %inrange5116 -range5115: - call void @finch_panic_index(ptr @.str.3361, i64 2514, i64 1, i64 %t42) + br i1 %t43, label %range5458, label %inrange5459 +range5458: + call void @finch_panic_index(ptr @.str.3510, i64 2729, i64 1, i64 %t42) unreachable -inrange5116: +inrange5459: %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.3362, i64 7, i64 0 }) - store %S.gen.Val %t47, ptr %a48 - %t49 = load i1, ptr %a5 - 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 %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.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 - %t58 = load { ptr, i64, i64 }, ptr %t57 - %t59 = load %S.ast.Type, ptr %a4 - %t60 = load %S.gen.Val, ptr %a48 - %t61 = load %S.ast.Node, ptr %a2 - %t62 = call { ptr, i64, i64 } @finch.gen.mapSlot(ptr %t55, { ptr, i64, i64 } %t58, %S.ast.Type %t59, %S.gen.Val %t60, i1 true, %S.ast.Node %t61) - store { ptr, i64, i64 } %t62, ptr %a63 - %t64 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 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.3511, i64 7, i64 0 }) + store %S.gen.Val %t38, ptr %a48 + call void @finch.drop.S_gen_Val(ptr %a48) + store %S.gen.Val %t47, ptr %a49 + %t50 = load i1, ptr %a5 + br i1 %t50, label %then5460, label %endif5462 +then5460: + %t51 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 + %t52 = load i1, ptr %t51 + %t53 = xor i1 %t52, true + br i1 %t53, label %then5463, label %endif5465 +then5463: + %t54 = load ptr, ptr %a1 + %t55 = load %S.ast.Node, ptr %a2 + call void @finch.gen.fail(ptr %t54, %S.ast.Node %t55, { ptr, i64, i64 } { ptr @.str.3512, i64 44, i64 0 }) + br label %endif5465 +endif5465: + %t56 = load ptr, ptr %a1 + %t57 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 1 + %t58 = getelementptr inbounds %S.gen.Place, ptr %t57, i32 0, i32 0 + %t59 = load { ptr, i64, i64 }, ptr %t58 + %t60 = load %S.ast.Type, ptr %a4 + %t61 = load %S.gen.Val, ptr %a49 + %t62 = load %S.ast.Node, ptr %a2 + %t63 = call { ptr, i64, i64 } @finch.gen.mapSlot(ptr %t56, { ptr, i64, i64 } %t59, %S.ast.Type %t60, %S.gen.Val %t61, i1 true, %S.ast.Node %t62) + store { ptr, i64, i64 } %t63, ptr %a64 %t65 = load ptr, ptr %a1 - %t66 = load { ptr, i64, i64 }, ptr %a63 - %t67 = load %S.ast.Type, ptr %a4 - %t68 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t65, { ptr, i64, i64 } %t66, %S.ast.Type %t67, i64 2) - %t69 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t68, 0 - %t70 = load %S.ast.Type, ptr %a27 - store %S.ast.Type %t70, ptr %a71 - call void @finch.copy.S_ast_Type(ptr %a72, ptr %a71) - %t73 = load %S.ast.Type, ptr %a72 - %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 -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 %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 - store { ptr, i64, i64 } %t81, ptr %a82 - 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 %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 %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) - store { ptr, i64, i64 } %t91, ptr %a92 - %t93 = load ptr, ptr %a1 - %t94 = load { ptr, i64, i64 }, ptr %a76 - %t95 = load { ptr, i64, i64 }, ptr %a92 - %t96 = load %S.ast.Type, ptr %a4 - %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.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.3366, i64 9, i64 0 }) - store { ptr, i64, i64 } %t103, ptr %a104 - %t105 = load ptr, ptr %a1 + %t66 = load %S.gen.Val, ptr %a49 + call void @finch.gen.release(ptr %t65, %S.gen.Val %t66) + %t67 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 + %t68 = load ptr, ptr %a1 + %t69 = load { ptr, i64, i64 }, ptr %a64 + %t70 = load %S.ast.Type, ptr %a4 + %t71 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t68, { ptr, i64, i64 } %t69, %S.ast.Type %t70, i64 2) + %t72 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t71, 0 + %t73 = load %S.ast.Type, ptr %a27 + store %S.ast.Type %t73, ptr %a74 + call void @finch.copy.S_ast_Type(ptr %a75, ptr %a74) + %t76 = load %S.ast.Type, ptr %a75 + %t77 = insertvalue %S.gen.Place %t72, %S.ast.Type %t76, 1 + %t78 = insertvalue %S.gen.Ref %t67, %S.gen.Place %t77, 1 + call void @finch_str_drop(ptr %a64) + call void @finch.drop.S_gen_Val(ptr %a49) + call void @finch.drop.S_ast_Type(ptr %a27) + call void @finch.drop.S_ast_Type(ptr %a16) + ret %S.gen.Ref %t78 +endif5462: + store { ptr, i64, i64 } { ptr @.str.3513, i64 0, i64 0 }, ptr %a79 + %t80 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 + %t81 = load i1, ptr %t80 + br i1 %t81, label %then5466, label %else5467 +then5466: + %t82 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 1 + %t83 = getelementptr inbounds %S.gen.Place, ptr %t82, i32 0, i32 0 + %t84 = load { ptr, i64, i64 }, ptr %t83 + store { ptr, i64, i64 } %t84, ptr %a85 + call void @finch_str_copy(ptr %a86, ptr %a85) + %t87 = load { ptr, i64, i64 }, ptr %a86 + %t88 = load { ptr, i64, i64 }, ptr %a79 + store { ptr, i64, i64 } %t87, ptr %a79 + store { ptr, i64, i64 } %t88, ptr %a89 + call void @finch_str_drop(ptr %a89) + br label %endif5468 +else5467: + %t90 = load ptr, ptr %a1 + %t91 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 + %t92 = load %S.gen.Val, ptr %t91 + %t93 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t90, %S.gen.Val %t92) + %t94 = load { ptr, i64, i64 }, ptr %a79 + store { ptr, i64, i64 } %t93, ptr %a79 + store { ptr, i64, i64 } %t94, ptr %a95 + call void @finch_str_drop(ptr %a95) + br label %endif5468 +endif5468: + %t96 = load ptr, ptr %a1 + %t97 = load %S.gen.Val, ptr %a49 + %t98 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t96, %S.gen.Val %t97) + store { ptr, i64, i64 } %t98, ptr %a99 + %t100 = load ptr, ptr %a1 + %t101 = load { ptr, i64, i64 }, ptr %a79 + %t102 = load { ptr, i64, i64 }, ptr %a99 + %t103 = load %S.ast.Type, ptr %a4 + %t104 = call { ptr, i64, i64 } @finch.gen.mapFind(ptr %t100, { ptr, i64, i64 } %t101, { ptr, i64, i64 } %t102, %S.ast.Type %t103) + store { ptr, i64, i64 } %t104, ptr %a105 %t106 = load ptr, ptr %a1 - %t107 = load { ptr, i64, i64 }, ptr %a98 - 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.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) - %t117 = load { ptr, i64, i64 }, ptr %a101 - %t118 = load { ptr, i64, i64 }, ptr %a104 - call void @finch.gen.condBr(ptr %t105, { ptr, i64, i64 } %t116, { ptr, i64, i64 } %t117, { ptr, i64, i64 } %t118) - %t119 = load ptr, ptr %a1 - %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.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.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 - %t129 = load { ptr, i64, i64 }, ptr %t128 - %t130 = load %S.ast.Type, ptr %a16 - call void @finch.gen.emitFormat(ptr %t126, { ptr, i64, i64 } %t127, { ptr, i64, i64 } %t129, %S.ast.Type %t130, i1 true) + %t107 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t106, { ptr, i64, i64 } { ptr @.str.3514, i64 11, i64 0 }) + store { ptr, i64, i64 } %t107, ptr %a108 + %t109 = load ptr, ptr %a1 + %t110 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t109, { ptr, i64, i64 } { ptr @.str.3515, i64 9, i64 0 }) + store { ptr, i64, i64 } %t110, ptr %a111 + %t112 = load ptr, ptr %a1 + %t113 = load ptr, ptr %a1 + %t114 = load { ptr, i64, i64 }, ptr %a105 + store { ptr, i64, i64 } { ptr @.str.3516, i64 13, i64 0 }, ptr %a116 + store { ptr, i64, i64 } %t114, 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 %a120 + store { ptr, i64, i64 } { ptr @.str.3517, i64 3, i64 0 }, ptr %a121 + call void @finch_str_concat(ptr %a119, ptr %a120, ptr %a121) + store { ptr, i64, i64 } %t118, ptr %a122 + call void @finch_str_drop(ptr %a122) + %t123 = load { ptr, i64, i64 }, ptr %a119 + %t124 = call { ptr, i64, i64 } @finch.gen.op(ptr %t113, { ptr, i64, i64 } %t123) + store { ptr, i64, i64 } %t123, ptr %a125 + call void @finch_str_drop(ptr %a125) + %t126 = load { ptr, i64, i64 }, ptr %a108 + %t127 = load { ptr, i64, i64 }, ptr %a111 + call void @finch.gen.condBr(ptr %t112, { ptr, i64, i64 } %t124, { ptr, i64, i64 } %t126, { ptr, i64, i64 } %t127) + store { ptr, i64, i64 } %t124, ptr %a128 + call void @finch_str_drop(ptr %a128) + %t129 = load ptr, ptr %a1 + %t130 = load { ptr, i64, i64 }, ptr %a108 + call void @finch.gen.label(ptr %t129, { ptr, i64, i64 } %t130) %t131 = load ptr, ptr %a1 - %t132 = load ptr, ptr %a1 - %t133 = load ptr, ptr %a1 - %t134 = icmp eq ptr %t133, null - br i1 %t134, label %panic5126, label %ok5127 -panic5126: - call void @finch_panic(ptr @.str.3373, i64 2537, ptr @.str.3374) + %t132 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t131, { ptr, i64, i64 } { ptr @.str.3518, i64 17, i64 0 }) + store { ptr, i64, i64 } %t132, ptr %a133 + %t134 = load ptr, ptr %a1 + %t135 = load { ptr, i64, i64 }, ptr %a133 + call void @finch.gen.store(ptr %t134, { ptr, i64, i64 } { ptr @.str.3519, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.3520, i64 15, i64 0 }, { ptr, i64, i64 } %t135) + %t136 = load ptr, ptr %a1 + %t137 = load { ptr, i64, i64 }, ptr %a133 + %t138 = getelementptr inbounds %S.gen.Val, ptr %a49, i32 0, i32 0 + %t139 = load { ptr, i64, i64 }, ptr %t138 + %t140 = load %S.ast.Type, ptr %a16 + call void @finch.gen.emitFormat(ptr %t136, { ptr, i64, i64 } %t137, { ptr, i64, i64 } %t139, %S.ast.Type %t140, i1 true) + %t141 = load ptr, ptr %a1 + %t142 = load ptr, ptr %a1 + %t143 = load ptr, ptr %a1 + %t144 = icmp eq ptr %t143, null + br i1 %t144, label %panic5469, label %ok5470 +panic5469: + call void @finch_panic(ptr @.str.3522, i64 2753, ptr @.str.3523) unreachable -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 %range5128, label %inrange5129 -range5128: - call void @finch_panic_index(ptr @.str.3375, i64 2537, i64 %t137, i64 %t139) +ok5470: + %t145 = getelementptr inbounds %S.gen.Gen, ptr %t143, i32 0, i32 1 + %t146 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 + %t147 = load i64, ptr %t146 + %t148 = load { ptr, i64, i64 }, ptr %t145 + %t149 = extractvalue { ptr, i64, i64 } %t148, 1 + %t150 = icmp uge i64 %t147, %t149 + br i1 %t150, label %range5471, label %inrange5472 +range5471: + call void @finch_panic_index(ptr @.str.3524, i64 2753, i64 %t147, i64 %t149) unreachable -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.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.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 - %t154 = load i64, ptr %t153 - call void @finch_str_from_int(ptr %a155, i64 %t154) - %t156 = load { ptr, i64, i64 }, ptr %a155 - store { ptr, i64, i64 } %t152, 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.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 - store { ptr, i64, i64 } %t164, 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.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.3379, i64 11, i64 0 }) - %t175 = load ptr, ptr %a1 - %t176 = icmp eq ptr %t175, null - br i1 %t176, label %panic5130, label %ok5131 -panic5130: - call void @finch_panic(ptr @.str.3380, i64 2539, ptr @.str.3381) +inrange5472: + %t151 = extractvalue { ptr, i64, i64 } %t148, 0 + %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %t151, i64 %t147 + %t153 = load { ptr, i64, i64 }, ptr %t152 + %t154 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t142, { ptr, i64, i64 } %t153) + store { ptr, i64, i64 } { ptr @.str.3521, i64 33, i64 0 }, ptr %a156 + store { ptr, i64, i64 } %t154, ptr %a157 + call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) + store { ptr, i64, i64 } %t154, ptr %a158 + call void @finch_str_drop(ptr %a158) + %t159 = load { ptr, i64, i64 }, ptr %a155 + store { ptr, i64, i64 } %t159, ptr %a161 + store { ptr, i64, i64 } { ptr @.str.3525, i64 6, i64 0 }, ptr %a162 + call void @finch_str_concat(ptr %a160, ptr %a161, ptr %a162) + store { ptr, i64, i64 } %t159, ptr %a163 + call void @finch_str_drop(ptr %a163) + %t164 = load { ptr, i64, i64 }, ptr %a160 + %t165 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 + %t166 = load i64, ptr %t165 + call void @finch_str_from_int(ptr %a167, i64 %t166) + %t168 = load { ptr, i64, i64 }, ptr %a167 + store { ptr, i64, i64 } %t164, ptr %a170 + store { ptr, i64, i64 } %t168, ptr %a171 + call void @finch_str_concat(ptr %a169, ptr %a170, ptr %a171) + store { ptr, i64, i64 } %t164, ptr %a172 + call void @finch_str_drop(ptr %a172) + store { ptr, i64, i64 } %t168, ptr %a173 + call void @finch_str_drop(ptr %a173) + %t174 = load { ptr, i64, i64 }, ptr %a169 + store { ptr, i64, i64 } %t174, ptr %a176 + store { ptr, i64, i64 } { ptr @.str.3526, i64 6, i64 0 }, ptr %a177 + call void @finch_str_concat(ptr %a175, ptr %a176, ptr %a177) + store { ptr, i64, i64 } %t174, ptr %a178 + call void @finch_str_drop(ptr %a178) + %t179 = load { ptr, i64, i64 }, ptr %a175 + %t180 = load { ptr, i64, i64 }, ptr %a133 + store { ptr, i64, i64 } %t179, ptr %a182 + store { ptr, i64, i64 } %t180, ptr %a183 + call void @finch_str_concat(ptr %a181, ptr %a182, ptr %a183) + store { ptr, i64, i64 } %t179, ptr %a184 + call void @finch_str_drop(ptr %a184) + %t185 = load { ptr, i64, i64 }, ptr %a181 + store { ptr, i64, i64 } %t185, ptr %a187 + store { ptr, i64, i64 } { ptr @.str.3527, i64 1, i64 0 }, ptr %a188 + call void @finch_str_concat(ptr %a186, ptr %a187, ptr %a188) + store { ptr, i64, i64 } %t185, ptr %a189 + call void @finch_str_drop(ptr %a189) + %t190 = load { ptr, i64, i64 }, ptr %a186 + call void @finch.gen.emit(ptr %t141, { ptr, i64, i64 } %t190) + store { ptr, i64, i64 } %t190, ptr %a191 + call void @finch_str_drop(ptr %a191) + %t192 = load ptr, ptr %a1 + call void @finch.gen.emit(ptr %t192, { ptr, i64, i64 } { ptr @.str.3528, i64 11, i64 0 }) + %t193 = load ptr, ptr %a1 + %t194 = icmp eq ptr %t193, null + br i1 %t194, label %panic5473, label %ok5474 +panic5473: + call void @finch_panic(ptr @.str.3529, i64 2755, ptr @.str.3530) unreachable -ok5131: - %t177 = getelementptr inbounds %S.gen.Gen, ptr %t175, i32 0, i32 9 - store i1 true, ptr %t177 - %t178 = load ptr, ptr %a1 - %t179 = load { ptr, i64, i64 }, ptr %a104 - call void @finch.gen.label(ptr %t178, { ptr, i64, i64 } %t179) - %t180 = load ptr, ptr %a1 - %t181 = load ptr, ptr %a1 - %t182 = load { ptr, i64, i64 }, ptr %a76 - %t183 = load %S.ast.Type, ptr %a4 - %t184 = load { ptr, i64, i64 }, ptr %a98 - %t185 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t181, { ptr, i64, i64 } %t182, %S.ast.Type %t183, { ptr, i64, i64 } %t184) - %t186 = load %S.ast.Type, ptr %a4 - %t187 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t180, { ptr, i64, i64 } %t185, %S.ast.Type %t186, i64 2) - 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 %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 - call void @finch_str_copy(ptr %a194, ptr %a193) - %t195 = load { ptr, i64, i64 }, ptr %a194 - %t196 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t195, 0 - %t197 = load %S.ast.Type, ptr %a27 - store %S.ast.Type %t197, ptr %a198 - call void @finch.copy.S_ast_Type(ptr %a199, ptr %a198) - %t200 = load %S.ast.Type, ptr %a199 - %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 -endif5134: - %t203 = load ptr, ptr %a1 - %t204 = load ptr, ptr %a1 - %t205 = load %S.ast.Type, ptr %a27 - %t206 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t204, %S.ast.Type %t205) - %t207 = load { ptr, i64, i64 }, ptr %a188 - %t208 = call { ptr, i64, i64 } @finch.gen.load(ptr %t203, { ptr, i64, i64 } %t206, { ptr, i64, i64 } %t207) - store { ptr, i64, i64 } %t208, ptr %a209 - %t210 = load { ptr, i64, i64 }, ptr %a209 - store { ptr, i64, i64 } %t210, ptr %a211 - call void @finch_str_copy(ptr %a212, ptr %a211) - %t213 = load { ptr, i64, i64 }, ptr %a212 - %t214 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t213, 0 - %t215 = load %S.ast.Type, ptr %a27 - store %S.ast.Type %t215, ptr %a216 - call void @finch.copy.S_ast_Type(ptr %a217, ptr %a216) - %t218 = load %S.ast.Type, ptr %a217 - %t219 = insertvalue %S.gen.Val %t214, %S.ast.Type %t218, 1 - store %S.gen.Val %t219, ptr %a220 - %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.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.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 - %t231 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t228, { ptr, i64, i64 } %t229, %S.ast.Type %t230) - %t232 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t231, 0 - %t233 = load %S.ast.Type, ptr %a27 - store %S.ast.Type %t233, ptr %a234 - call void @finch.copy.S_ast_Type(ptr %a235, ptr %a234) - %t236 = load %S.ast.Type, ptr %a235 - %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 %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 - call void @finch.copy.S_gen_Val(ptr %a242, ptr %a241) - %t243 = load %S.gen.Val, ptr %a242 - %t244 = insertvalue %S.gen.Ref %t239, %S.gen.Val %t243, 2 - ret %S.gen.Ref %t244 +ok5474: + %t195 = getelementptr inbounds %S.gen.Gen, ptr %t193, i32 0, i32 9 + store i1 true, ptr %t195 + %t196 = load ptr, ptr %a1 + %t197 = load { ptr, i64, i64 }, ptr %a111 + call void @finch.gen.label(ptr %t196, { ptr, i64, i64 } %t197) + %t198 = load ptr, ptr %a1 + %t199 = load %S.gen.Val, ptr %a49 + call void @finch.gen.release(ptr %t198, %S.gen.Val %t199) + %t200 = load ptr, ptr %a1 + %t201 = load ptr, ptr %a1 + %t202 = load { ptr, i64, i64 }, ptr %a79 + %t203 = load %S.ast.Type, ptr %a4 + %t204 = load { ptr, i64, i64 }, ptr %a105 + %t205 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t201, { ptr, i64, i64 } %t202, %S.ast.Type %t203, { ptr, i64, i64 } %t204) + %t206 = load %S.ast.Type, ptr %a4 + %t207 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t200, { ptr, i64, i64 } %t205, %S.ast.Type %t206, i64 2) + store { ptr, i64, i64 } %t205, ptr %a208 + call void @finch_str_drop(ptr %a208) + store { ptr, i64, i64 } %t207, ptr %a209 + %t210 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 + %t211 = load i1, ptr %t210 + br i1 %t211, label %then5475, label %endif5477 +then5475: + %t212 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 + %t213 = load { ptr, i64, i64 }, ptr %a209 + store { ptr, i64, i64 } %t213, ptr %a214 + call void @finch_str_copy(ptr %a215, ptr %a214) + %t216 = load { ptr, i64, i64 }, ptr %a215 + %t217 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t216, 0 + %t218 = load %S.ast.Type, ptr %a27 + 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 + %t222 = insertvalue %S.gen.Place %t217, %S.ast.Type %t221, 1 + %t223 = insertvalue %S.gen.Ref %t212, %S.gen.Place %t222, 1 + call void @finch_str_drop(ptr %a209) + call void @finch_str_drop(ptr %a133) + call void @finch_str_drop(ptr %a111) + call void @finch_str_drop(ptr %a108) + call void @finch_str_drop(ptr %a105) + call void @finch_str_drop(ptr %a99) + call void @finch_str_drop(ptr %a79) + call void @finch.drop.S_gen_Val(ptr %a49) + call void @finch.drop.S_ast_Type(ptr %a27) + call void @finch.drop.S_ast_Type(ptr %a16) + ret %S.gen.Ref %t223 +endif5477: + %t224 = load ptr, ptr %a1 + %t225 = load ptr, ptr %a1 + %t226 = load %S.ast.Type, ptr %a27 + %t227 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t225, %S.ast.Type %t226) + %t228 = load { ptr, i64, i64 }, ptr %a209 + %t229 = call { ptr, i64, i64 } @finch.gen.load(ptr %t224, { ptr, i64, i64 } %t227, { ptr, i64, i64 } %t228) + store { ptr, i64, i64 } %t227, ptr %a230 + call void @finch_str_drop(ptr %a230) + store { ptr, i64, i64 } %t229, ptr %a231 + %t232 = load { ptr, i64, i64 }, ptr %a231 + store { ptr, i64, i64 } %t232, ptr %a233 + call void @finch_str_copy(ptr %a234, ptr %a233) + %t235 = load { ptr, i64, i64 }, ptr %a234 + %t236 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t235, 0 + %t237 = load %S.ast.Type, ptr %a27 + store %S.ast.Type %t237, ptr %a238 + call void @finch.copy.S_ast_Type(ptr %a239, ptr %a238) + %t240 = load %S.ast.Type, ptr %a239 + %t241 = insertvalue %S.gen.Val %t236, %S.ast.Type %t240, 1 + store %S.gen.Val %t241, ptr %a242 + %t243 = load ptr, ptr %a1 + %t244 = load %S.ast.Type, ptr %a27 + %t245 = call i1 @finch.gen.owning(ptr %t243, %S.ast.Type %t244) + br label %logic.from5478 +logic.from5478: + br i1 %t245, label %logic.rhs5479, label %logic.end5480 +logic.rhs5479: + %t246 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 + %t247 = getelementptr inbounds %S.gen.Val, ptr %t246, i32 0, i32 2 + %t248 = load i1, ptr %t247 + br label %logic.rend5481 +logic.rend5481: + br label %logic.end5480 +logic.end5480: + %t249 = phi i1 [ false, %logic.from5478 ], [ %t248, %logic.rend5481 ] + br i1 %t249, label %then5482, label %endif5484 +then5482: + %t250 = load ptr, ptr %a1 + %t251 = load { ptr, i64, i64 }, ptr %a231 + %t252 = load %S.ast.Type, ptr %a27 + %t253 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t250, { ptr, i64, i64 } %t251, %S.ast.Type %t252) + %t254 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t253, 0 + %t255 = load %S.ast.Type, ptr %a27 + store %S.ast.Type %t255, ptr %a256 + call void @finch.copy.S_ast_Type(ptr %a257, ptr %a256) + %t258 = load %S.ast.Type, ptr %a257 + %t259 = insertvalue %S.gen.Val %t254, %S.ast.Type %t258, 1 + %t260 = insertvalue %S.gen.Val %t259, i1 true, 2 + %t261 = load %S.gen.Val, ptr %a242 + store %S.gen.Val %t260, ptr %a242 + store %S.gen.Val %t261, ptr %a262 + call void @finch.drop.S_gen_Val(ptr %a262) + br label %endif5484 +endif5484: + %t263 = load ptr, ptr %a1 + %t264 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 + %t265 = load %S.gen.Val, ptr %t264 + call void @finch.gen.release(ptr %t263, %S.gen.Val %t265) + %t266 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 + %t267 = load %S.gen.Val, ptr %a242 + store %S.gen.Val %t267, ptr %a268 + call void @finch.copy.S_gen_Val(ptr %a269, ptr %a268) + %t270 = load %S.gen.Val, ptr %a269 + %t271 = insertvalue %S.gen.Ref %t266, %S.gen.Val %t270, 2 + call void @finch.drop.S_gen_Val(ptr %a242) + call void @finch_str_drop(ptr %a231) + call void @finch_str_drop(ptr %a209) + call void @finch_str_drop(ptr %a133) + call void @finch_str_drop(ptr %a111) + call void @finch_str_drop(ptr %a108) + call void @finch_str_drop(ptr %a105) + call void @finch_str_drop(ptr %a99) + call void @finch_str_drop(ptr %a79) + call void @finch.drop.S_gen_Val(ptr %a49) + call void @finch.drop.S_ast_Type(ptr %a27) + call void @finch.drop.S_ast_Type(ptr %a16) + ret %S.gen.Ref %t271 } define internal %S.gen.Val @finch.gen.mapLit(ptr %p0, %S.ast.Node %p1, %S.ast.Type %p2) { @@ -47286,33 +55843,49 @@ entry: %a56 = alloca { ptr, i64, i64 }, align 16 %a67 = alloca %S.ast.Node, align 16 %a68 = alloca %S.ast.Node, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 + %a71 = alloca %S.ast.Node, align 16 + %a74 = alloca { ptr, i64, i64 }, align 16 + %a75 = alloca { ptr, i64, i64 }, align 16 + %a80 = alloca { ptr, i64, i64 }, align 16 + %a81 = alloca { ptr, i64, i64 }, align 16 + %a96 = alloca %S.gen.Val, align 16 + %a107 = alloca %S.gen.Val, align 16 + %a111 = alloca { ptr, i64, i64 }, align 16 %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 + %a118 = alloca { ptr, i64, i64 }, align 16 + %a119 = 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 - %a150 = alloca %S.ast.Type, align 16 - %a151 = alloca %S.ast.Type, align 16 - %a153 = alloca %S.ast.Type, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca i64, align 16 - %a181 = alloca %S.gen.Val, align 16 - %a182 = alloca %S.gen.Val, align 16 - %a184 = alloca %S.gen.Val, align 16 - %a186 = alloca %S.gen.Val, align 16 - %a187 = alloca %S.gen.Val, align 16 - %a189 = alloca %S.gen.Val, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca %S.ast.Type, align 16 - %a308 = alloca %S.ast.Type, align 16 + %a141 = alloca { ptr, i64, i64 }, align 16 + %a142 = alloca { ptr, i64, i64 }, align 16 + %a156 = alloca %S.ast.Type, align 16 + %a157 = alloca %S.ast.Type, align 16 + %a159 = alloca %S.ast.Type, align 16 + %a165 = alloca %S.ast.Type, align 16 + %a171 = alloca %S.ast.Type, align 16 + %a177 = alloca { ptr, i64, i64 }, align 16 + %a178 = alloca { ptr, i64, i64 }, align 16 + %a184 = alloca { ptr, i64, i64 }, align 16 + %a190 = alloca i64, align 16 + %a198 = alloca i64, align 16 + %a206 = alloca i64, align 16 + %a208 = alloca %S.gen.Val, align 16 + %a209 = alloca %S.gen.Val, align 16 + %a211 = alloca %S.gen.Val, align 16 + %a236 = alloca %S.gen.Val, align 16 + %a257 = alloca %S.gen.Val, align 16 + %a261 = alloca %S.gen.Val, align 16 + %a262 = alloca %S.gen.Val, align 16 + %a264 = alloca %S.gen.Val, align 16 + %a290 = alloca %S.gen.Val, align 16 + %a312 = alloca %S.gen.Val, align 16 + %a316 = alloca { ptr, i64, i64 }, align 16 + %a323 = alloca { ptr, i64, i64 }, align 16 + %a328 = alloca { ptr, i64, i64 }, align 16 + %a350 = alloca { ptr, i64, i64 }, align 16 + %a365 = alloca { ptr, i64, i64 }, align 16 + %a368 = alloca %S.ast.Type, align 16 + %a369 = alloca %S.ast.Type, align 16 store ptr %p0, ptr %a1 store %S.ast.Node %p1, ptr %a2 store %S.ast.Type %p2, ptr %a3 @@ -47327,22 +55900,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.3382, i64 3, i64 0 }, ptr %a15 + store { ptr, i64, i64 } { ptr @.str.3531, 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 %then5142, label %endif5144 -then5142: + br i1 %t17, label %then5485, label %endif5487 +then5485: %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 %then5145, label %endif5147 -then5145: + br i1 %t21, label %then5488, label %endif5490 +then5488: %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.3383, i64 52, i64 0 }) - br label %endif5147 -endif5147: + call void @finch.gen.fail(ptr %t22, %S.ast.Node %t23, { ptr, i64, i64 } { ptr @.str.3532, i64 52, i64 0 }) + br label %endif5490 +endif5490: store i1 true, ptr %a24 store i1 false, ptr %a25 %t26 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 @@ -47350,12 +55923,12 @@ endif5147: %t28 = load i64, ptr %t27 %t29 = sdiv i64 %t28, 2 store i64 0, ptr %a30 - br label %for.cond5148 -for.cond5148: + br label %for.cond5491 +for.cond5491: %t31 = load i64, ptr %a30 %t32 = icmp slt i64 %t31, %t29 - br i1 %t32, label %for.body5149, label %for.end5151 -for.body5149: + br i1 %t32, label %for.body5492, label %for.end5494 +for.body5492: %t33 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t34 = load i64, ptr %a30 %t35 = mul i64 2, %t34 @@ -47363,11 +55936,11 @@ for.body5149: %t37 = load { ptr, i64, i64 }, ptr %t33 %t38 = extractvalue { ptr, i64, i64 } %t37, 1 %t39 = icmp uge i64 %t36, %t38 - br i1 %t39, label %range5152, label %inrange5153 -range5152: - call void @finch_panic_index(ptr @.str.3384, i64 2567, i64 %t36, i64 %t38) + br i1 %t39, label %range5495, label %inrange5496 +range5495: + call void @finch_panic_index(ptr @.str.3533, i64 2785, i64 %t36, i64 %t38) unreachable -inrange5153: +inrange5496: %t40 = extractvalue { ptr, i64, i64 } %t37, 0 %t41 = getelementptr inbounds %S.ast.Node, ptr %t40, i64 %t36 %t42 = load %S.ast.Node, ptr %t41 @@ -47378,441 +55951,559 @@ inrange5153: %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.3385, i64 5, i64 0 }, ptr %a50 + store { ptr, i64, i64 } { ptr @.str.3534, 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.from5154 -logic.from5154: - br i1 %t52, label %logic.rhs5155, label %logic.end5156 -logic.rhs5155: + br label %logic.from5497 +logic.from5497: + br i1 %t52, label %logic.rhs5498, label %logic.end5499 +logic.rhs5498: %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.3386, i64 1, i64 0 }, ptr %a56 + store { ptr, i64, i64 } { ptr @.str.3535, 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.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: + br label %logic.rend5500 +logic.rend5500: + br label %logic.end5499 +logic.end5499: + %t59 = phi i1 [ false, %logic.from5497 ], [ %t58, %logic.rend5500 ] + br i1 %t59, label %then5501, label %endif5503 +then5501: %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 %range5161, label %inrange5162 -range5161: - call void @finch_panic_index(ptr @.str.3387, i64 2569, i64 0, i64 %t62) + br i1 %t63, label %range5504, label %inrange5505 +range5504: + call void @finch_panic_index(ptr @.str.3536, i64 2787, i64 0, i64 %t62) unreachable -inrange5162: +inrange5505: %t64 = extractvalue { ptr, i64, i64 } %t61, 0 %t65 = getelementptr inbounds %S.ast.Node, ptr %t64, i64 0 %t66 = load %S.ast.Node, ptr %t65 store %S.ast.Node %t66, ptr %a67 call void @finch.copy.S_ast_Node(ptr %a68, ptr %a67) %t69 = load %S.ast.Node, ptr %a68 + %t70 = load %S.ast.Node, ptr %a46 store %S.ast.Node %t69, ptr %a46 - 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.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 %then5163, label %else5164 -then5163: + store %S.ast.Node %t70, ptr %a71 + call void @finch.drop.S_ast_Node(ptr %a71) + br label %endif5503 +endif5503: + %t72 = getelementptr inbounds %S.ast.Node, ptr %a46, i32 0, i32 0 + %t73 = load { ptr, i64, i64 }, ptr %t72 + store { ptr, i64, i64 } %t73, ptr %a74 + store { ptr, i64, i64 } { ptr @.str.3537, i64 5, i64 0 }, ptr %a75 + %t76 = call i32 @finch_str_eq(ptr %a74, ptr %a75) + %t77 = icmp ne i32 %t76, 0 + br i1 %t77, label %then5506, label %else5507 +then5506: store i1 true, ptr %a25 - 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.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 %then5166, label %endif5168 -then5166: + br label %endif5508 +else5507: + %t78 = getelementptr inbounds %S.ast.Node, ptr %a46, i32 0, i32 0 + %t79 = load { ptr, i64, i64 }, ptr %t78 + store { ptr, i64, i64 } %t79, ptr %a80 + store { ptr, i64, i64 } { ptr @.str.3538, i64 3, i64 0 }, ptr %a81 + %t82 = call i32 @finch_str_eq(ptr %a80, ptr %a81) + %t83 = icmp eq i32 %t82, 0 + br i1 %t83, label %then5509, label %endif5511 +then5509: store i1 false, ptr %a24 - 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.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 %range5169, label %inrange5170 -range5169: - call void @finch_panic_index(ptr @.str.3390, i64 2577, i64 0, i64 %t87) + br label %endif5511 +endif5511: + br label %endif5508 +endif5508: + call void @finch.drop.S_ast_Node(ptr %a46) + br label %for.step5493 +for.step5493: + %t84 = load i64, ptr %a30 + %t85 = add i64 %t84, 1 + store i64 %t85, ptr %a30 + br label %for.cond5491 +for.end5494: + %t86 = load ptr, ptr %a1 + %t87 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t88 = load { ptr, i64, i64 }, ptr %t87 + %t89 = extractvalue { ptr, i64, i64 } %t88, 1 + %t90 = icmp uge i64 0, %t89 + br i1 %t90, label %range5512, label %inrange5513 +range5512: + call void @finch_panic_index(ptr @.str.3539, i64 2795, i64 0, i64 %t89) unreachable -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 - %t92 = call %S.gen.Val @finch.gen.expr(ptr %t84, %S.ast.Node %t91) - store %S.gen.Val %t92, ptr %a10 - %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 %range5171, label %inrange5172 -range5171: - call void @finch_panic_index(ptr @.str.3391, i64 2578, i64 1, i64 %t96) +inrange5513: + %t91 = extractvalue { ptr, i64, i64 } %t88, 0 + %t92 = getelementptr inbounds %S.ast.Node, ptr %t91, i64 0 + %t93 = load %S.ast.Node, ptr %t92 + %t94 = call %S.gen.Val @finch.gen.expr(ptr %t86, %S.ast.Node %t93) + %t95 = load %S.gen.Val, ptr %a10 + store %S.gen.Val %t94, ptr %a10 + store %S.gen.Val %t95, ptr %a96 + call void @finch.drop.S_gen_Val(ptr %a96) + %t97 = load ptr, ptr %a1 + %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 1, %t100 + br i1 %t101, label %range5514, label %inrange5515 +range5514: + call void @finch_panic_index(ptr @.str.3540, i64 2796, i64 1, i64 %t100) unreachable -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 - %t101 = call %S.gen.Val @finch.gen.expr(ptr %t93, %S.ast.Node %t100) - store %S.gen.Val %t101, ptr %a11 - %t102 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 1 - %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.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.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.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.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 %range5180, label %inrange5181 -range5180: - call void @finch_panic_index(ptr @.str.3394, i64 2580, i64 0, i64 %t120) +inrange5515: + %t102 = extractvalue { ptr, i64, i64 } %t99, 0 + %t103 = getelementptr inbounds %S.ast.Node, ptr %t102, i64 1 + %t104 = load %S.ast.Node, ptr %t103 + %t105 = call %S.gen.Val @finch.gen.expr(ptr %t97, %S.ast.Node %t104) + %t106 = load %S.gen.Val, ptr %a11 + store %S.gen.Val %t105, ptr %a11 + store %S.gen.Val %t106, ptr %a107 + call void @finch.drop.S_gen_Val(ptr %a107) + %t108 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 1 + %t109 = getelementptr inbounds %S.ast.Type, ptr %t108, i32 0, i32 0 + %t110 = load { ptr, i64, i64 }, ptr %t109 + store { ptr, i64, i64 } %t110, ptr %a111 + store { ptr, i64, i64 } { ptr @.str.3541, i64 4, i64 0 }, ptr %a112 + %t113 = call i32 @finch_str_eq(ptr %a111, ptr %a112) + %t114 = icmp ne i32 %t113, 0 + br label %logic.from5516 +logic.from5516: + br i1 %t114, label %logic.end5518, label %logic.rhs5517 +logic.rhs5517: + %t115 = getelementptr inbounds %S.gen.Val, ptr %a10, 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.3542, i64 4, i64 0 }, ptr %a119 + %t120 = call i32 @finch_str_eq(ptr %a118, ptr %a119) + %t121 = icmp ne i32 %t120, 0 + br label %logic.rend5519 +logic.rend5519: + br label %logic.end5518 +logic.end5518: + %t122 = phi i1 [ true, %logic.from5516 ], [ %t121, %logic.rend5519 ] + br i1 %t122, label %then5520, label %endif5522 +then5520: + %t123 = load ptr, ptr %a1 + %t124 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t125 = load { ptr, i64, i64 }, ptr %t124 + %t126 = extractvalue { ptr, i64, i64 } %t125, 1 + %t127 = icmp uge i64 0, %t126 + br i1 %t127, label %range5523, label %inrange5524 +range5523: + call void @finch_panic_index(ptr @.str.3543, i64 2798, i64 0, i64 %t126) unreachable -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.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.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.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.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.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 %range5189, label %inrange5190 -range5189: - call void @finch_panic_index(ptr @.str.3398, i64 2583, i64 1, i64 %t143) +inrange5524: + %t128 = extractvalue { ptr, i64, i64 } %t125, 0 + %t129 = getelementptr inbounds %S.ast.Node, ptr %t128, i64 0 + %t130 = load %S.ast.Node, ptr %t129 + call void @finch.gen.fail(ptr %t123, %S.ast.Node %t130, { ptr, i64, i64 } { ptr @.str.3544, i64 35, i64 0 }) + br label %endif5522 +endif5522: + %t131 = getelementptr inbounds %S.gen.Val, ptr %a11, i32 0, i32 1 + %t132 = getelementptr inbounds %S.ast.Type, ptr %t131, i32 0, i32 0 + %t133 = load { ptr, i64, i64 }, ptr %t132 + store { ptr, i64, i64 } %t133, ptr %a134 + store { ptr, i64, i64 } { ptr @.str.3545, 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.from5525 +logic.from5525: + br i1 %t137, label %logic.end5527, label %logic.rhs5526 +logic.rhs5526: + %t138 = getelementptr inbounds %S.gen.Val, ptr %a11, i32 0, i32 1 + %t139 = getelementptr inbounds %S.ast.Type, ptr %t138, i32 0, i32 0 + %t140 = load { ptr, i64, i64 }, ptr %t139 + store { ptr, i64, i64 } %t140, ptr %a141 + store { ptr, i64, i64 } { ptr @.str.3546, i64 4, i64 0 }, ptr %a142 + %t143 = call i32 @finch_str_eq(ptr %a141, ptr %a142) + %t144 = icmp ne i32 %t143, 0 + br label %logic.rend5528 +logic.rend5528: + br label %logic.end5527 +logic.end5527: + %t145 = phi i1 [ true, %logic.from5525 ], [ %t144, %logic.rend5528 ] + br i1 %t145, label %then5529, label %endif5531 +then5529: + %t146 = load ptr, ptr %a1 + %t147 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t148 = load { ptr, i64, i64 }, ptr %t147 + %t149 = extractvalue { ptr, i64, i64 } %t148, 1 + %t150 = icmp uge i64 1, %t149 + br i1 %t150, label %range5532, label %inrange5533 +range5532: + call void @finch_panic_index(ptr @.str.3547, i64 2801, i64 1, i64 %t149) unreachable -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.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 - call void @finch.copy.S_ast_Type(ptr %a151, ptr %a150) - %t152 = load %S.ast.Type, ptr %a151 - store %S.ast.Type %t152, ptr %a153 - %t154 = load i1, ptr %a24 - 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.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 %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 %endif5144 -endif5144: - %t162 = load ptr, ptr %a1 - %t163 = load ptr, ptr %a1 - %t164 = load %S.ast.Type, ptr %a8 - %t165 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t163, %S.ast.Type %t164) - %t166 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t162, { ptr, i64, i64 } %t165) - store { ptr, i64, i64 } %t166, ptr %a167 - %t168 = load ptr, ptr %a1 - %t169 = load ptr, ptr %a1 +inrange5533: + %t151 = extractvalue { ptr, i64, i64 } %t148, 0 + %t152 = getelementptr inbounds %S.ast.Node, ptr %t151, i64 1 + %t153 = load %S.ast.Node, ptr %t152 + call void @finch.gen.fail(ptr %t146, %S.ast.Node %t153, { ptr, i64, i64 } { ptr @.str.3548, i64 37, i64 0 }) + br label %endif5531 +endif5531: + %t154 = getelementptr inbounds %S.gen.Val, ptr %a11, i32 0, i32 1 + %t155 = load %S.ast.Type, ptr %t154 + store %S.ast.Type %t155, ptr %a156 + call void @finch.copy.S_ast_Type(ptr %a157, ptr %a156) + %t158 = load %S.ast.Type, ptr %a157 + store %S.ast.Type %t158, ptr %a159 + %t160 = load i1, ptr %a24 + br label %logic.from5534 +logic.from5534: + br i1 %t160, label %logic.rhs5535, label %logic.end5536 +logic.rhs5535: + %t161 = load i1, ptr %a25 + br label %logic.rend5537 +logic.rend5537: + br label %logic.end5536 +logic.end5536: + %t162 = phi i1 [ false, %logic.from5534 ], [ %t161, %logic.rend5537 ] + br i1 %t162, label %then5538, label %endif5540 +then5538: + %t163 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3549, i64 5, i64 0 }) + %t164 = load %S.ast.Type, ptr %a159 + store %S.ast.Type %t163, ptr %a159 + store %S.ast.Type %t164, ptr %a165 + call void @finch.drop.S_ast_Type(ptr %a165) + br label %endif5540 +endif5540: + %t166 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 1 + %t167 = load %S.ast.Type, ptr %t166 + %t168 = load %S.ast.Type, ptr %a159 + %t169 = call %S.ast.Type @finch.ast.mapOf(%S.ast.Type %t167, %S.ast.Type %t168) %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.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.cond5198 -for.cond5198: - %t178 = load i64, ptr %a177 - %t179 = icmp slt i64 %t178, %t176 - 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) - %t183 = load %S.gen.Val, ptr %a182 - store %S.gen.Val %t183, ptr %a184 - %t185 = load %S.gen.Val, ptr %a11 - 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 - store %S.gen.Val %t188, ptr %a189 - %t190 = load i64, ptr %a177 - %t191 = icmp eq i64 %t190, 0 - 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.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 %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 - %t198 = mul i64 2, %t197 - %t199 = load { ptr, i64, i64 }, ptr %t196 - %t200 = extractvalue { ptr, i64, i64 } %t199, 1 - %t201 = icmp uge i64 %t198, %t200 - br i1 %t201, label %range5209, label %inrange5210 -range5209: - call void @finch_panic_index(ptr @.str.3402, i64 2598, i64 %t198, i64 %t200) + store %S.ast.Type %t169, ptr %a8 + store %S.ast.Type %t170, ptr %a171 + call void @finch.drop.S_ast_Type(ptr %a171) + store i1 true, ptr %a9 + call void @finch.drop.S_ast_Type(ptr %a159) + br label %endif5487 +endif5487: + %t172 = load ptr, ptr %a1 + %t173 = load ptr, ptr %a1 + %t174 = load %S.ast.Type, ptr %a8 + %t175 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t173, %S.ast.Type %t174) + %t176 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t172, { ptr, i64, i64 } %t175) + store { ptr, i64, i64 } %t175, ptr %a177 + call void @finch_str_drop(ptr %a177) + store { ptr, i64, i64 } %t176, ptr %a178 + %t179 = load ptr, ptr %a1 + %t180 = load ptr, ptr %a1 + %t181 = load %S.ast.Type, ptr %a8 + %t182 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t180, %S.ast.Type %t181) + %t183 = load { ptr, i64, i64 }, ptr %a178 + call void @finch.gen.store(ptr %t179, { ptr, i64, i64 } %t182, { ptr, i64, i64 } { ptr @.str.3550, i64 15, i64 0 }, { ptr, i64, i64 } %t183) + store { ptr, i64, i64 } %t182, ptr %a184 + call void @finch_str_drop(ptr %a184) + %t185 = load ptr, ptr %a1 + %t186 = icmp eq ptr %t185, null + br i1 %t186, label %panic5541, label %ok5542 +panic5541: + call void @finch_panic(ptr @.str.3551, i64 2812, ptr @.str.3552) unreachable -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 - %t205 = getelementptr inbounds %S.ast.Type, ptr %a8, i32 0, i32 1 - %t206 = load { ptr, i64, i64 }, ptr %t205 - %t207 = extractvalue { ptr, i64, i64 } %t206, 1 - %t208 = icmp uge i64 0, %t207 - br i1 %t208, label %range5211, label %inrange5212 -range5211: - call void @finch_panic_index(ptr @.str.3403, i64 2598, i64 0, i64 %t207) +ok5542: + %t187 = getelementptr inbounds %S.gen.Gen, ptr %t185, i32 0, i32 11 + %t188 = getelementptr inbounds { ptr, i64, i64 }, ptr %t187, i32 0, i32 1 + %t189 = load i64, ptr %t188 + store i64 %t189, ptr %a190 + %t191 = load ptr, ptr %a1 + %t192 = load { ptr, i64, i64 }, ptr %a178 + %t193 = load %S.ast.Type, ptr %a8 + call void @finch.gen.holdAddr(ptr %t191, { ptr, i64, i64 } %t192, %S.ast.Type %t193) + %t194 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t195 = getelementptr inbounds { ptr, i64, i64 }, ptr %t194, i32 0, i32 1 + %t196 = load i64, ptr %t195 + %t197 = sdiv i64 %t196, 2 + store i64 0, ptr %a198 + br label %for.cond5543 +for.cond5543: + %t199 = load i64, ptr %a198 + %t200 = icmp slt i64 %t199, %t197 + br i1 %t200, label %for.body5544, label %for.end5546 +for.body5544: + %t201 = load ptr, ptr %a1 + %t202 = icmp eq ptr %t201, null + br i1 %t202, label %panic5547, label %ok5548 +panic5547: + call void @finch_panic(ptr @.str.3553, i64 2815, ptr @.str.3554) unreachable -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 - %t212 = call %S.gen.Val @finch.gen.exprWant(ptr %t195, %S.ast.Node %t204, %S.ast.Type %t211) - store %S.gen.Val %t212, ptr %a184 - %t213 = load ptr, ptr %a1 - %t214 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t215 = load i64, ptr %a177 - %t216 = mul i64 2, %t215 - %t217 = add i64 %t216, 1 - %t218 = load { ptr, i64, i64 }, ptr %t214 - %t219 = extractvalue { ptr, i64, i64 } %t218, 1 - %t220 = icmp uge i64 %t217, %t219 - br i1 %t220, label %range5213, label %inrange5214 -range5213: - call void @finch_panic_index(ptr @.str.3404, i64 2599, i64 %t217, i64 %t219) +ok5548: + %t203 = getelementptr inbounds %S.gen.Gen, ptr %t201, i32 0, i32 11 + %t204 = getelementptr inbounds { ptr, i64, i64 }, ptr %t203, i32 0, i32 1 + %t205 = load i64, ptr %t204 + store i64 %t205, ptr %a206 + %t207 = load %S.gen.Val, ptr %a10 + store %S.gen.Val %t207, ptr %a208 + call void @finch.copy.S_gen_Val(ptr %a209, ptr %a208) + %t210 = load %S.gen.Val, ptr %a209 + store %S.gen.Val %t210, ptr %a211 + %t212 = load i64, ptr %a198 + %t213 = icmp eq i64 %t212, 0 + br label %logic.from5549 +logic.from5549: + br i1 %t213, label %logic.rhs5550, label %logic.end5551 +logic.rhs5550: + %t214 = load i1, ptr %a9 + br label %logic.rend5552 +logic.rend5552: + br label %logic.end5551 +logic.end5551: + %t215 = phi i1 [ false, %logic.from5549 ], [ %t214, %logic.rend5552 ] + %t216 = xor i1 %t215, true + br i1 %t216, label %then5553, label %endif5555 +then5553: + %t217 = load ptr, ptr %a1 + %t218 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t219 = load i64, ptr %a198 + %t220 = mul i64 2, %t219 + %t221 = load { ptr, i64, i64 }, ptr %t218 + %t222 = extractvalue { ptr, i64, i64 } %t221, 1 + %t223 = icmp uge i64 %t220, %t222 + br i1 %t223, label %range5556, label %inrange5557 +range5556: + call void @finch_panic_index(ptr @.str.3555, i64 2818, i64 %t220, i64 %t222) unreachable -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 - %t224 = getelementptr inbounds %S.ast.Type, ptr %a8, i32 0, i32 1 - %t225 = load { ptr, i64, i64 }, ptr %t224 - %t226 = extractvalue { ptr, i64, i64 } %t225, 1 - %t227 = icmp uge i64 1, %t226 - br i1 %t227, label %range5215, label %inrange5216 -range5215: - call void @finch_panic_index(ptr @.str.3405, i64 2599, i64 1, i64 %t226) +inrange5557: + %t224 = extractvalue { ptr, i64, i64 } %t221, 0 + %t225 = getelementptr inbounds %S.ast.Node, ptr %t224, i64 %t220 + %t226 = load %S.ast.Node, ptr %t225 + %t227 = getelementptr inbounds %S.ast.Type, ptr %a8, i32 0, i32 1 + %t228 = load { ptr, i64, i64 }, ptr %t227 + %t229 = extractvalue { ptr, i64, i64 } %t228, 1 + %t230 = icmp uge i64 0, %t229 + br i1 %t230, label %range5558, label %inrange5559 +range5558: + call void @finch_panic_index(ptr @.str.3556, i64 2818, i64 0, i64 %t229) unreachable -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 %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 %range5217, label %inrange5218 -range5217: - call void @finch_panic_index(ptr @.str.3406, i64 2601, i64 0, i64 %t236) +inrange5559: + %t231 = extractvalue { ptr, i64, i64 } %t228, 0 + %t232 = getelementptr inbounds %S.ast.Type, ptr %t231, i64 0 + %t233 = load %S.ast.Type, ptr %t232 + %t234 = call %S.gen.Val @finch.gen.exprWant(ptr %t217, %S.ast.Node %t226, %S.ast.Type %t233) + %t235 = load %S.gen.Val, ptr %a211 + store %S.gen.Val %t234, ptr %a211 + store %S.gen.Val %t235, ptr %a236 + call void @finch.drop.S_gen_Val(ptr %a236) + br label %endif5555 +endif5555: + %t237 = load ptr, ptr %a1 + %t238 = load %S.gen.Val, ptr %a211 + %t239 = getelementptr inbounds %S.ast.Type, ptr %a8, 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 %range5560, label %inrange5561 +range5560: + call void @finch_panic_index(ptr @.str.3557, i64 2820, i64 0, i64 %t241) unreachable -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 - %t241 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t242 = load i64, ptr %a177 - %t243 = mul i64 2, %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 %range5219, label %inrange5220 -range5219: - call void @finch_panic_index(ptr @.str.3407, i64 2601, i64 %t243, i64 %t245) +inrange5561: + %t243 = extractvalue { ptr, i64, i64 } %t240, 0 + %t244 = getelementptr inbounds %S.ast.Type, ptr %t243, i64 0 + %t245 = load %S.ast.Type, ptr %t244 + %t246 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t247 = load i64, ptr %a198 + %t248 = mul i64 2, %t247 + %t249 = load { ptr, i64, i64 }, ptr %t246 + %t250 = extractvalue { ptr, i64, i64 } %t249, 1 + %t251 = icmp uge i64 %t248, %t250 + br i1 %t251, label %range5562, label %inrange5563 +range5562: + call void @finch_panic_index(ptr @.str.3558, i64 2820, i64 %t248, i64 %t250) unreachable -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.3408, i64 21, i64 0 }) - store %S.gen.Val %t250, ptr %a184 - %t251 = load ptr, ptr %a1 - %t252 = load %S.gen.Val, ptr %a189 - %t253 = getelementptr inbounds %S.ast.Type, ptr %a8, i32 0, i32 1 - %t254 = load { ptr, i64, i64 }, ptr %t253 - %t255 = extractvalue { ptr, i64, i64 } %t254, 1 - %t256 = icmp uge i64 1, %t255 - br i1 %t256, label %range5221, label %inrange5222 -range5221: - call void @finch_panic_index(ptr @.str.3409, i64 2602, i64 1, i64 %t255) +inrange5563: + %t252 = extractvalue { ptr, i64, i64 } %t249, 0 + %t253 = getelementptr inbounds %S.ast.Node, ptr %t252, i64 %t248 + %t254 = load %S.ast.Node, ptr %t253 + %t255 = call %S.gen.Val @finch.gen.coerce(ptr %t237, %S.gen.Val %t238, %S.ast.Type %t245, %S.ast.Node %t254, { ptr, i64, i64 } { ptr @.str.3559, i64 21, i64 0 }) + %t256 = load %S.gen.Val, ptr %a211 + store %S.gen.Val %t255, ptr %a211 + store %S.gen.Val %t256, ptr %a257 + call void @finch.drop.S_gen_Val(ptr %a257) + %t258 = load ptr, ptr %a1 + %t259 = load %S.gen.Val, ptr %a211 + call void @finch.gen.hold(ptr %t258, %S.gen.Val %t259) + %t260 = load %S.gen.Val, ptr %a11 + store %S.gen.Val %t260, ptr %a261 + call void @finch.copy.S_gen_Val(ptr %a262, ptr %a261) + %t263 = load %S.gen.Val, ptr %a262 + store %S.gen.Val %t263, ptr %a264 + %t265 = load i64, ptr %a198 + %t266 = icmp eq i64 %t265, 0 + br label %logic.from5564 +logic.from5564: + br i1 %t266, label %logic.rhs5565, label %logic.end5566 +logic.rhs5565: + %t267 = load i1, ptr %a9 + br label %logic.rend5567 +logic.rend5567: + br label %logic.end5566 +logic.end5566: + %t268 = phi i1 [ false, %logic.from5564 ], [ %t267, %logic.rend5567 ] + %t269 = xor i1 %t268, true + br i1 %t269, label %then5568, label %endif5570 +then5568: + %t270 = load ptr, ptr %a1 + %t271 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t272 = load i64, ptr %a198 + %t273 = mul i64 2, %t272 + %t274 = add i64 %t273, 1 + %t275 = load { ptr, i64, i64 }, ptr %t271 + %t276 = extractvalue { ptr, i64, i64 } %t275, 1 + %t277 = icmp uge i64 %t274, %t276 + br i1 %t277, label %range5571, label %inrange5572 +range5571: + call void @finch_panic_index(ptr @.str.3560, i64 2824, i64 %t274, i64 %t276) unreachable -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 - %t260 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t261 = load i64, ptr %a177 - %t262 = mul i64 2, %t261 - %t263 = add i64 %t262, 1 - %t264 = load { ptr, i64, i64 }, ptr %t260 - %t265 = extractvalue { ptr, i64, i64 } %t264, 1 - %t266 = icmp uge i64 %t263, %t265 - br i1 %t266, label %range5223, label %inrange5224 -range5223: - call void @finch_panic_index(ptr @.str.3410, i64 2602, i64 %t263, i64 %t265) +inrange5572: + %t278 = extractvalue { ptr, i64, i64 } %t275, 0 + %t279 = getelementptr inbounds %S.ast.Node, ptr %t278, i64 %t274 + %t280 = load %S.ast.Node, ptr %t279 + %t281 = getelementptr inbounds %S.ast.Type, ptr %a8, i32 0, i32 1 + %t282 = load { ptr, i64, i64 }, ptr %t281 + %t283 = extractvalue { ptr, i64, i64 } %t282, 1 + %t284 = icmp uge i64 1, %t283 + br i1 %t284, label %range5573, label %inrange5574 +range5573: + call void @finch_panic_index(ptr @.str.3561, i64 2824, i64 1, i64 %t283) unreachable -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.3411, i64 23, i64 0 }) - store %S.gen.Val %t270, ptr %a189 - %t271 = load ptr, ptr %a1 - %t272 = load %S.gen.Val, ptr %a189 - %t273 = call { ptr, i64, i64 } @finch.gen.own(ptr %t271, %S.gen.Val %t272) - store { ptr, i64, i64 } %t273, ptr %a274 - %t275 = load ptr, ptr %a1 - %t276 = load { ptr, i64, i64 }, ptr %a167 - %t277 = load %S.ast.Type, ptr %a8 - %t278 = load %S.gen.Val, ptr %a184 - %t279 = load %S.ast.Node, ptr %a2 - %t280 = call { ptr, i64, i64 } @finch.gen.mapSlot(ptr %t275, { ptr, i64, i64 } %t276, %S.ast.Type %t277, %S.gen.Val %t278, i1 false, %S.ast.Node %t279) - store { ptr, i64, i64 } %t280, ptr %a281 - %t282 = load ptr, ptr %a1 - %t283 = load ptr, ptr %a1 - %t284 = getelementptr inbounds %S.ast.Type, ptr %a8, i32 0, i32 1 - %t285 = load { ptr, i64, i64 }, ptr %t284 - %t286 = extractvalue { ptr, i64, i64 } %t285, 1 - %t287 = icmp uge i64 1, %t286 - br i1 %t287, label %range5225, label %inrange5226 -range5225: - call void @finch_panic_index(ptr @.str.3412, i64 2605, i64 1, i64 %t286) +inrange5574: + %t285 = extractvalue { ptr, i64, i64 } %t282, 0 + %t286 = getelementptr inbounds %S.ast.Type, ptr %t285, i64 1 + %t287 = load %S.ast.Type, ptr %t286 + %t288 = call %S.gen.Val @finch.gen.exprWant(ptr %t270, %S.ast.Node %t280, %S.ast.Type %t287) + %t289 = load %S.gen.Val, ptr %a264 + store %S.gen.Val %t288, ptr %a264 + store %S.gen.Val %t289, ptr %a290 + call void @finch.drop.S_gen_Val(ptr %a290) + br label %endif5570 +endif5570: + %t291 = load ptr, ptr %a1 + %t292 = load %S.gen.Val, ptr %a264 + %t293 = getelementptr inbounds %S.ast.Type, ptr %a8, i32 0, i32 1 + %t294 = load { ptr, i64, i64 }, ptr %t293 + %t295 = extractvalue { ptr, i64, i64 } %t294, 1 + %t296 = icmp uge i64 1, %t295 + br i1 %t296, label %range5575, label %inrange5576 +range5575: + call void @finch_panic_index(ptr @.str.3562, i64 2826, i64 1, i64 %t295) unreachable -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 - %t291 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t283, %S.ast.Type %t290) - %t292 = load { ptr, i64, i64 }, ptr %a274 - %t293 = load ptr, ptr %a1 - %t294 = load { ptr, i64, i64 }, ptr %a281 - %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.step5200 -for.step5200: - %t297 = load i64, ptr %a177 - %t298 = add i64 %t297, 1 - store i64 %t298, ptr %a177 - br label %for.cond5198 -for.end5201: - %t299 = load ptr, ptr %a1 - %t300 = load ptr, ptr %a1 - %t301 = load %S.ast.Type, ptr %a8 - %t302 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t300, %S.ast.Type %t301) - %t303 = load { ptr, i64, i64 }, ptr %a167 - %t304 = call { ptr, i64, i64 } @finch.gen.load(ptr %t299, { ptr, i64, i64 } %t302, { ptr, i64, i64 } %t303) - %t305 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t304, 0 - %t306 = load %S.ast.Type, ptr %a8 - store %S.ast.Type %t306, ptr %a307 - call void @finch.copy.S_ast_Type(ptr %a308, ptr %a307) - %t309 = load %S.ast.Type, ptr %a308 - %t310 = insertvalue %S.gen.Val %t305, %S.ast.Type %t309, 1 - %t311 = insertvalue %S.gen.Val %t310, i1 true, 2 - ret %S.gen.Val %t311 +inrange5576: + %t297 = extractvalue { ptr, i64, i64 } %t294, 0 + %t298 = getelementptr inbounds %S.ast.Type, ptr %t297, i64 1 + %t299 = load %S.ast.Type, ptr %t298 + %t300 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t301 = load i64, ptr %a198 + %t302 = mul i64 2, %t301 + %t303 = add i64 %t302, 1 + %t304 = load { ptr, i64, i64 }, ptr %t300 + %t305 = extractvalue { ptr, i64, i64 } %t304, 1 + %t306 = icmp uge i64 %t303, %t305 + br i1 %t306, label %range5577, label %inrange5578 +range5577: + call void @finch_panic_index(ptr @.str.3563, i64 2826, i64 %t303, i64 %t305) + unreachable +inrange5578: + %t307 = extractvalue { ptr, i64, i64 } %t304, 0 + %t308 = getelementptr inbounds %S.ast.Node, ptr %t307, i64 %t303 + %t309 = load %S.ast.Node, ptr %t308 + %t310 = call %S.gen.Val @finch.gen.coerce(ptr %t291, %S.gen.Val %t292, %S.ast.Type %t299, %S.ast.Node %t309, { ptr, i64, i64 } { ptr @.str.3564, i64 23, i64 0 }) + %t311 = load %S.gen.Val, ptr %a264 + store %S.gen.Val %t310, ptr %a264 + store %S.gen.Val %t311, ptr %a312 + call void @finch.drop.S_gen_Val(ptr %a312) + %t313 = load ptr, ptr %a1 + %t314 = load %S.gen.Val, ptr %a264 + %t315 = call { ptr, i64, i64 } @finch.gen.own(ptr %t313, %S.gen.Val %t314) + store { ptr, i64, i64 } %t315, ptr %a316 + %t317 = load ptr, ptr %a1 + %t318 = load { ptr, i64, i64 }, ptr %a178 + %t319 = load %S.ast.Type, ptr %a8 + %t320 = load %S.gen.Val, ptr %a211 + %t321 = load %S.ast.Node, ptr %a2 + %t322 = call { ptr, i64, i64 } @finch.gen.mapSlot(ptr %t317, { ptr, i64, i64 } %t318, %S.ast.Type %t319, %S.gen.Val %t320, i1 false, %S.ast.Node %t321) + store { ptr, i64, i64 } %t322, ptr %a323 + %t324 = load ptr, ptr %a1 + %t325 = load { ptr, i64, i64 }, ptr %a323 + %t326 = load %S.ast.Type, ptr %a8 + %t327 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t324, { ptr, i64, i64 } %t325, %S.ast.Type %t326, i64 2) + store { ptr, i64, i64 } %t327, ptr %a328 + %t329 = load ptr, ptr %a1 + %t330 = load { ptr, i64, i64 }, ptr %a328 + %t331 = getelementptr inbounds %S.ast.Type, ptr %a8, i32 0, i32 1 + %t332 = load { ptr, i64, i64 }, ptr %t331 + %t333 = extractvalue { ptr, i64, i64 } %t332, 1 + %t334 = icmp uge i64 1, %t333 + br i1 %t334, label %range5579, label %inrange5580 +range5579: + call void @finch_panic_index(ptr @.str.3565, i64 2830, i64 1, i64 %t333) + unreachable +inrange5580: + %t335 = extractvalue { ptr, i64, i64 } %t332, 0 + %t336 = getelementptr inbounds %S.ast.Type, ptr %t335, i64 1 + %t337 = load %S.ast.Type, ptr %t336 + call void @finch.gen.dropAt(ptr %t329, { ptr, i64, i64 } %t330, %S.ast.Type %t337) + %t338 = load ptr, ptr %a1 + %t339 = load ptr, ptr %a1 + %t340 = getelementptr inbounds %S.ast.Type, ptr %a8, i32 0, i32 1 + %t341 = load { ptr, i64, i64 }, ptr %t340 + %t342 = extractvalue { ptr, i64, i64 } %t341, 1 + %t343 = icmp uge i64 1, %t342 + br i1 %t343, label %range5581, label %inrange5582 +range5581: + call void @finch_panic_index(ptr @.str.3566, i64 2831, i64 1, i64 %t342) + unreachable +inrange5582: + %t344 = extractvalue { ptr, i64, i64 } %t341, 0 + %t345 = getelementptr inbounds %S.ast.Type, ptr %t344, i64 1 + %t346 = load %S.ast.Type, ptr %t345 + %t347 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t339, %S.ast.Type %t346) + %t348 = load { ptr, i64, i64 }, ptr %a316 + %t349 = load { ptr, i64, i64 }, ptr %a328 + call void @finch.gen.store(ptr %t338, { ptr, i64, i64 } %t347, { ptr, i64, i64 } %t348, { ptr, i64, i64 } %t349) + store { ptr, i64, i64 } %t347, ptr %a350 + call void @finch_str_drop(ptr %a350) + %t351 = load ptr, ptr %a1 + %t352 = load %S.gen.Val, ptr %a211 + call void @finch.gen.release(ptr %t351, %S.gen.Val %t352) + %t353 = load ptr, ptr %a1 + %t354 = load i64, ptr %a206 + call void @finch.gen.heldEnd(ptr %t353, i64 %t354) + call void @finch_str_drop(ptr %a328) + call void @finch_str_drop(ptr %a323) + call void @finch_str_drop(ptr %a316) + call void @finch.drop.S_gen_Val(ptr %a264) + call void @finch.drop.S_gen_Val(ptr %a211) + br label %for.step5545 +for.step5545: + %t355 = load i64, ptr %a198 + %t356 = add i64 %t355, 1 + store i64 %t356, ptr %a198 + br label %for.cond5543 +for.end5546: + %t357 = load ptr, ptr %a1 + %t358 = load i64, ptr %a190 + call void @finch.gen.heldEnd(ptr %t357, i64 %t358) + %t359 = load ptr, ptr %a1 + %t360 = load ptr, ptr %a1 + %t361 = load %S.ast.Type, ptr %a8 + %t362 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t360, %S.ast.Type %t361) + %t363 = load { ptr, i64, i64 }, ptr %a178 + %t364 = call { ptr, i64, i64 } @finch.gen.load(ptr %t359, { ptr, i64, i64 } %t362, { ptr, i64, i64 } %t363) + store { ptr, i64, i64 } %t362, ptr %a365 + call void @finch_str_drop(ptr %a365) + %t366 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t364, 0 + %t367 = load %S.ast.Type, ptr %a8 + store %S.ast.Type %t367, ptr %a368 + call void @finch.copy.S_ast_Type(ptr %a369, ptr %a368) + %t370 = load %S.ast.Type, ptr %a369 + %t371 = insertvalue %S.gen.Val %t366, %S.ast.Type %t370, 1 + %t372 = insertvalue %S.gen.Val %t371, i1 true, 2 + call void @finch_str_drop(ptr %a178) + call void @finch.drop.S_gen_Val(ptr %a11) + call void @finch.drop.S_gen_Val(ptr %a10) + call void @finch.drop.S_ast_Type(ptr %a8) + ret %S.gen.Val %t372 } define internal %S.gen.Val @finch.gen.mapMethod(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3) { @@ -47839,189 +56530,296 @@ entry: %a51 = alloca { ptr, i64, i64 }, align 16 %a52 = alloca { ptr, i64, i64 }, align 16 %a81 = alloca %S.gen.Val, 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 + %a82 = alloca %S.gen.Val, 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 %a101 = 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 - %a108 = alloca { ptr, i64, i64 }, align 16 + %a106 = alloca { ptr, i64, i64 }, align 16 + %a107 = alloca { ptr, i64, i64 }, align 16 %a109 = alloca { ptr, i64, i64 }, align 16 + %a110 = 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 %a121 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 + %a122 = alloca { ptr, i64, i64 }, align 16 + %a127 = alloca { ptr, i64, i64 }, align 16 + %a130 = alloca { ptr, i64, i64 }, align 16 %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = 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 - %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 + %a149 = 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 + %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 %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 + %a172 = alloca { ptr, i64, i64 }, align 16 %a174 = alloca { ptr, i64, i64 }, align 16 + %a175 = alloca { ptr, i64, i64 }, align 16 + %a176 = alloca { ptr, i64, i64 }, align 16 %a177 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 + %a182 = 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 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a240 = 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 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a273 = 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 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = 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 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a291 = 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 + %a191 = alloca { ptr, i64, i64 }, align 16 + %a193 = alloca { ptr, i64, i64 }, align 16 + %a199 = alloca { ptr, i64, i64 }, align 16 + %a200 = alloca { ptr, i64, i64 }, align 16 + %a207 = alloca { ptr, i64, i64 }, align 16 + %a210 = alloca { ptr, i64, i64 }, align 16 + %a213 = alloca { ptr, i64, i64 }, align 16 + %a216 = alloca { ptr, i64, i64 }, align 16 + %a219 = alloca { ptr, i64, i64 }, align 16 + %a239 = alloca { ptr, i64, i64 }, align 16 + %a241 = alloca { ptr, i64, i64 }, align 16 + %a242 = alloca { ptr, i64, i64 }, align 16 + %a245 = alloca { ptr, i64, i64 }, align 16 + %a246 = alloca { ptr, i64, i64 }, align 16 + %a276 = alloca %S.gen.Val, align 16 + %a278 = alloca %S.gen.Val, align 16 + %a279 = 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 %a295 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca %S.ast.Type, align 16 - %a301 = alloca %S.ast.Type, 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 + %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 + %a308 = alloca { ptr, i64, i64 }, align 16 %a309 = alloca { ptr, i64, i64 }, align 16 %a310 = alloca { ptr, i64, i64 }, align 16 - %a318 = 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 + %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 %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a329 = 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 + %a328 = alloca { ptr, i64, i64 }, align 16 %a330 = alloca { ptr, i64, i64 }, align 16 - %a334 = alloca { ptr, i64, i64 }, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca i64, align 16 - %a344 = alloca %S.ast.Type, align 16 - %a345 = alloca %S.ast.Type, align 16 - %a347 = alloca %S.ast.Type, align 16 - %a349 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a354 = alloca %S.ast.Type, align 16 - %a355 = alloca %S.ast.Type, align 16 - %a359 = alloca %S.ast.Type, align 16 - %a362 = 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 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a375 = alloca { ptr, i64, i64 }, align 16 - %a376 = 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 + %a336 = 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 + %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 + %a350 = alloca %S.ast.Type, align 16 + %a351 = alloca %S.ast.Type, align 16 + %a359 = alloca { ptr, i64, i64 }, align 16 + %a360 = alloca { ptr, i64, i64 }, align 16 + %a378 = 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 %a383 = alloca { ptr, i64, i64 }, align 16 %a384 = alloca { ptr, i64, i64 }, align 16 %a385 = alloca { ptr, i64, i64 }, align 16 + %a386 = 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 %a392 = alloca { ptr, i64, i64 }, align 16 - %a393 = alloca { ptr, i64, i64 }, align 16 %a394 = 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 - %a398 = alloca { ptr, i64, i64 }, align 16 - %a401 = alloca { ptr, i64, i64 }, align 16 + %a400 = alloca { ptr, i64, i64 }, align 16 %a402 = alloca { ptr, i64, i64 }, align 16 %a403 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca { ptr, i64, i64 }, align 16 - %a406 = alloca { ptr, i64, i64 }, align 16 %a407 = 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 - %a423 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 + %a421 = alloca { ptr, i64, i64 }, align 16 + %a424 = 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 %a436 = alloca { ptr, i64, i64 }, align 16 - %a438 = alloca { ptr, i64, i64 }, align 16 + %a437 = alloca { ptr, i64, i64 }, align 16 %a439 = alloca { ptr, i64, i64 }, align 16 %a440 = alloca { ptr, i64, i64 }, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a444 = alloca { ptr, i64, i64 }, align 16 + %a441 = alloca { ptr, i64, i64 }, align 16 + %a442 = 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 - %a453 = alloca { ptr, i64, i64 }, align 16 %a457 = alloca { ptr, i64, i64 }, align 16 - %a468 = alloca { ptr, i64, i64 }, align 16 - %a471 = alloca { ptr, i64, i64 }, align 16 + %a464 = alloca { ptr, i64, i64 }, align 16 + %a473 = alloca { ptr, i64, i64 }, align 16 %a474 = alloca { ptr, i64, i64 }, align 16 - %a483 = alloca { ptr, i64, i64 }, align 16 - %a484 = alloca { ptr, i64, i64 }, align 16 - %a485 = alloca { ptr, i64, i64 }, align 16 + %a475 = alloca { ptr, i64, i64 }, align 16 + %a477 = alloca { ptr, i64, i64 }, align 16 + %a478 = alloca { ptr, i64, i64 }, align 16 + %a479 = alloca { ptr, i64, i64 }, align 16 + %a480 = alloca { ptr, i64, i64 }, align 16 + %a482 = 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 - %a489 = alloca { ptr, i64, i64 }, align 16 - %a499 = alloca { ptr, i64, i64 }, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 + %a491 = alloca { ptr, i64, i64 }, align 16 + %a492 = alloca { ptr, i64, i64 }, align 16 + %a499 = alloca i64, align 16 + %a501 = alloca %S.ast.Type, align 16 + %a502 = alloca %S.ast.Type, align 16 + %a504 = alloca %S.ast.Type, 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 - %a511 = alloca { ptr, i64, i64 }, align 16 - %a514 = alloca { ptr, i64, i64 }, align 16 - %a515 = alloca { ptr, i64, i64 }, align 16 - %a516 = 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 - %a523 = alloca { ptr, i64, i64 }, align 16 - %a524 = alloca { ptr, i64, i64 }, align 16 - %a525 = alloca { ptr, i64, i64 }, align 16 + %a511 = alloca %S.ast.Type, align 16 + %a512 = alloca %S.ast.Type, align 16 + %a515 = alloca %S.ast.Type, align 16 + %a518 = alloca %S.ast.Type, align 16 + %a521 = alloca { ptr, i64, i64 }, align 16 + %a529 = alloca { ptr, i64, i64 }, align 16 + %a530 = alloca { ptr, i64, i64 }, align 16 + %a531 = alloca { ptr, i64, i64 }, align 16 + %a532 = alloca { ptr, i64, i64 }, align 16 + %a534 = alloca { ptr, i64, i64 }, align 16 + %a535 = 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 - %a539 = alloca { ptr, i64, i64 }, align 16 + %a540 = 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 - %a558 = alloca %S.ast.Type, align 16 - %a559 = alloca %S.ast.Type, align 16 - %a566 = 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 + %a548 = alloca { ptr, i64, i64 }, align 16 + %a551 = alloca { ptr, i64, i64 }, align 16 + %a553 = alloca { ptr, i64, i64 }, align 16 + %a554 = alloca { ptr, i64, i64 }, align 16 + %a557 = alloca { ptr, i64, i64 }, align 16 + %a558 = alloca { ptr, i64, i64 }, align 16 + %a559 = alloca { ptr, i64, i64 }, align 16 + %a561 = alloca { ptr, i64, i64 }, align 16 + %a562 = alloca { ptr, i64, i64 }, align 16 + %a563 = alloca { ptr, i64, i64 }, align 16 + %a564 = alloca { ptr, i64, i64 }, align 16 %a567 = 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 - %a571 = 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 + %a575 = alloca { ptr, i64, i64 }, align 16 + %a580 = alloca { ptr, i64, i64 }, align 16 + %a581 = alloca { ptr, i64, i64 }, align 16 + %a582 = alloca { ptr, i64, i64 }, align 16 + %a583 = alloca { ptr, i64, i64 }, align 16 + %a584 = alloca { ptr, i64, i64 }, align 16 + %a586 = 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 + %a595 = alloca { ptr, i64, i64 }, align 16 + %a598 = 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 + %a609 = 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 + %a617 = alloca { ptr, i64, i64 }, align 16 + %a618 = alloca { ptr, i64, i64 }, align 16 + %a619 = alloca { ptr, i64, i64 }, align 16 + %a620 = 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 + %a628 = alloca { ptr, i64, i64 }, align 16 + %a630 = alloca { ptr, i64, i64 }, align 16 + %a631 = alloca { ptr, i64, i64 }, align 16 + %a635 = alloca { ptr, i64, i64 }, align 16 + %a646 = alloca { ptr, i64, i64 }, align 16 + %a649 = alloca { ptr, i64, i64 }, align 16 + %a652 = 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 + %a667 = alloca { ptr, i64, i64 }, align 16 + %a668 = alloca { ptr, i64, i64 }, align 16 + %a669 = alloca { ptr, i64, i64 }, align 16 + %a670 = alloca { ptr, i64, i64 }, align 16 + %a673 = alloca { ptr, i64, i64 }, align 16 + %a676 = alloca { ptr, i64, i64 }, align 16 + %a682 = 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 + %a691 = 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 + %a702 = alloca { ptr, i64, i64 }, align 16 + %a704 = alloca { ptr, i64, i64 }, align 16 + %a705 = alloca { ptr, i64, i64 }, align 16 + %a706 = alloca { ptr, i64, i64 }, align 16 + %a707 = alloca { ptr, i64, i64 }, align 16 + %a710 = 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 + %a723 = alloca { ptr, i64, i64 }, align 16 + %a724 = alloca { ptr, i64, i64 }, align 16 + %a728 = alloca { ptr, i64, i64 }, align 16 + %a729 = alloca { ptr, i64, i64 }, align 16 + %a730 = 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 + %a735 = alloca { ptr, i64, i64 }, align 16 + %a738 = alloca { ptr, i64, i64 }, align 16 + %a740 = alloca { ptr, i64, i64 }, align 16 + %a752 = alloca %S.ast.Type, align 16 + %a753 = alloca %S.ast.Type, align 16 + %a760 = alloca { ptr, i64, i64 }, align 16 + %a761 = alloca { ptr, i64, i64 }, align 16 + %a762 = 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 + %a769 = 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 @@ -48036,11 +56834,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 %range5227, label %inrange5228 -range5227: - call void @finch_panic_index(ptr @.str.3413, i64 2612, i64 0, i64 %t13) + br i1 %t14, label %range5583, label %inrange5584 +range5583: + call void @finch_panic_index(ptr @.str.3567, i64 2841, i64 0, i64 %t13) unreachable -inrange5228: +inrange5584: %t15 = extractvalue { ptr, i64, i64 } %t12, 0 %t16 = getelementptr inbounds %S.ast.Type, ptr %t15, i64 0 %t17 = load %S.ast.Type, ptr %t16 @@ -48052,11 +56850,11 @@ inrange5228: %t23 = load { ptr, i64, i64 }, ptr %t22 %t24 = extractvalue { ptr, i64, i64 } %t23, 1 %t25 = icmp uge i64 1, %t24 - br i1 %t25, label %range5229, label %inrange5230 -range5229: - call void @finch_panic_index(ptr @.str.3414, i64 2613, i64 1, i64 %t24) + br i1 %t25, label %range5585, label %inrange5586 +range5585: + call void @finch_panic_index(ptr @.str.3568, i64 2842, i64 1, i64 %t24) unreachable -inrange5230: +inrange5586: %t26 = extractvalue { ptr, i64, i64 } %t23, 0 %t27 = getelementptr inbounds %S.ast.Type, ptr %t26, i64 1 %t28 = load %S.ast.Type, ptr %t27 @@ -48066,69 +56864,69 @@ inrange5230: 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.3415, i64 3, i64 0 }, ptr %a35 + store { ptr, i64, i64 } { ptr @.str.3569, 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.from5231 -logic.from5231: - br i1 %t37, label %logic.end5233, label %logic.rhs5232 -logic.rhs5232: + br label %logic.from5587 +logic.from5587: + br i1 %t37, label %logic.end5589, label %logic.rhs5588 +logic.rhs5588: %t38 = load { ptr, i64, i64 }, ptr %a10 store { ptr, i64, i64 } %t38, ptr %a39 - store { ptr, i64, i64 } { ptr @.str.3416, i64 3, i64 0 }, ptr %a40 + store { ptr, i64, i64 } { ptr @.str.3570, 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.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: + br label %logic.rend5590 +logic.rend5590: + br label %logic.end5589 +logic.end5589: + %t43 = phi i1 [ true, %logic.from5587 ], [ %t42, %logic.rend5590 ] + br label %logic.from5591 +logic.from5591: + br i1 %t43, label %logic.end5593, label %logic.rhs5592 +logic.rhs5592: %t44 = load { ptr, i64, i64 }, ptr %a10 store { ptr, i64, i64 } %t44, ptr %a45 - store { ptr, i64, i64 } { ptr @.str.3417, i64 6, i64 0 }, ptr %a46 + store { ptr, i64, i64 } { ptr @.str.3571, 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.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: + br label %logic.rend5594 +logic.rend5594: + br label %logic.end5593 +logic.end5593: + %t49 = phi i1 [ true, %logic.from5591 ], [ %t48, %logic.rend5594 ] + br i1 %t49, label %then5595, label %endif5597 +then5595: %t50 = load { ptr, i64, i64 }, ptr %a10 store { ptr, i64, i64 } %t50, ptr %a51 - store { ptr, i64, i64 } { ptr @.str.3418, i64 3, i64 0 }, ptr %a52 + store { ptr, i64, i64 } { ptr @.str.3572, 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 %then5242, label %else5243 -then5242: + br i1 %t54, label %then5598, label %else5599 +then5598: %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 %endif5244 -else5243: + br label %endif5600 +else5599: %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 %endif5244 -endif5244: + br label %endif5600 +endif5600: %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 %range5245, label %inrange5246 -range5245: - call void @finch_panic_index(ptr @.str.3419, i64 2620, i64 1, i64 %t65) + br i1 %t66, label %range5601, label %inrange5602 +range5601: + call void @finch_panic_index(ptr @.str.3573, i64 2849, i64 1, i64 %t65) unreachable -inrange5246: +inrange5602: %t67 = extractvalue { ptr, i64, i64 } %t64, 0 %t68 = getelementptr inbounds %S.ast.Node, ptr %t67, i64 1 %t69 = load %S.ast.Node, ptr %t68 @@ -48139,584 +56937,944 @@ inrange5246: %t74 = load { ptr, i64, i64 }, ptr %t73 %t75 = extractvalue { ptr, i64, i64 } %t74, 1 %t76 = icmp uge i64 1, %t75 - br i1 %t76, label %range5247, label %inrange5248 -range5247: - call void @finch_panic_index(ptr @.str.3420, i64 2620, i64 1, i64 %t75) + br i1 %t76, label %range5603, label %inrange5604 +range5603: + call void @finch_panic_index(ptr @.str.3574, i64 2849, i64 1, i64 %t75) unreachable -inrange5248: +inrange5604: %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.3421, i64 7, i64 0 }) - store %S.gen.Val %t80, ptr %a81 - %t82 = load ptr, ptr %a1 - %t83 = load { ptr, i64, i64 }, ptr %a3 - %t84 = load ptr, ptr %a1 - %t85 = load %S.gen.Val, ptr %a81 - %t86 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t84, %S.gen.Val %t85) - %t87 = load %S.ast.Type, ptr %a4 - %t88 = call { ptr, i64, i64 } @finch.gen.mapFind(ptr %t82, { ptr, i64, i64 } %t83, { ptr, i64, i64 } %t86, %S.ast.Type %t87) - 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.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.3423, i64 3, i64 0 }, ptr %a98 + %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.3575, i64 7, i64 0 }) + store %S.gen.Val %t71, ptr %a81 + call void @finch.drop.S_gen_Val(ptr %a81) + store %S.gen.Val %t80, ptr %a82 + %t83 = load ptr, ptr %a1 + %t84 = load { ptr, i64, i64 }, ptr %a3 + %t85 = load ptr, ptr %a1 + %t86 = load %S.gen.Val, ptr %a82 + %t87 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t85, %S.gen.Val %t86) + %t88 = load %S.ast.Type, ptr %a4 + %t89 = call { ptr, i64, i64 } @finch.gen.mapFind(ptr %t83, { ptr, i64, i64 } %t84, { ptr, i64, i64 } %t87, %S.ast.Type %t88) + store { ptr, i64, i64 } %t87, ptr %a90 + call void @finch_str_drop(ptr %a90) + store { ptr, i64, i64 } %t89, ptr %a91 + %t92 = load ptr, ptr %a1 + %t93 = load %S.gen.Val, ptr %a82 + call void @finch.gen.release(ptr %t92, %S.gen.Val %t93) + %t94 = load ptr, ptr %a1 + %t95 = load { ptr, i64, i64 }, ptr %a91 + store { ptr, i64, i64 } { ptr @.str.3576, i64 13, 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 - %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.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 %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.3425, i64 4, i64 0 }) - %t113 = insertvalue %S.gen.Val %t111, %S.ast.Type %t112, 1 - ret %S.gen.Val %t113 -endif5251: - %t114 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t114, ptr %a115 - 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 %then5252, label %endif5254 -then5252: - %t119 = load ptr, ptr %a1 - %t120 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t119, { ptr, i64, i64 } { ptr @.str.3427, i64 10, i64 0 }) + store { ptr, i64, i64 } %t99, ptr %a101 + store { ptr, i64, i64 } { ptr @.str.3577, i64 3, i64 0 }, ptr %a102 + call void @finch_str_concat(ptr %a100, ptr %a101, ptr %a102) + store { ptr, i64, i64 } %t99, ptr %a103 + call void @finch_str_drop(ptr %a103) + %t104 = load { ptr, i64, i64 }, ptr %a100 + %t105 = call { ptr, i64, i64 } @finch.gen.op(ptr %t94, { ptr, i64, i64 } %t104) + store { ptr, i64, i64 } %t104, ptr %a106 + call void @finch_str_drop(ptr %a106) + store { ptr, i64, i64 } %t105, ptr %a107 + %t108 = load { ptr, i64, i64 }, ptr %a10 + store { ptr, i64, i64 } %t108, ptr %a109 + store { ptr, i64, i64 } { ptr @.str.3578, i64 3, i64 0 }, ptr %a110 + %t111 = call i32 @finch_str_eq(ptr %a109, ptr %a110) + %t112 = icmp ne i32 %t111, 0 + br i1 %t112, label %then5605, label %endif5607 +then5605: + %t113 = load { ptr, i64, i64 }, ptr %a107 + store { ptr, i64, i64 } %t113, ptr %a114 + call void @finch_str_copy(ptr %a115, ptr %a114) + %t116 = load { ptr, i64, i64 }, ptr %a115 + %t117 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t116, 0 + %t118 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3579, i64 4, i64 0 }) + %t119 = insertvalue %S.gen.Val %t117, %S.ast.Type %t118, 1 + call void @finch_str_drop(ptr %a107) + call void @finch_str_drop(ptr %a91) + call void @finch.drop.S_gen_Val(ptr %a82) + call void @finch.drop.S_ast_Type(ptr %a32) + call void @finch.drop.S_ast_Type(ptr %a21) + call void @finch_str_drop(ptr %a10) + ret %S.gen.Val %t119 +endif5607: + %t120 = load { ptr, i64, i64 }, ptr %a10 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.3428, i64 10, i64 0 }) - store { ptr, i64, i64 } %t123, ptr %a124 + store { ptr, i64, i64 } { ptr @.str.3580, i64 6, i64 0 }, ptr %a122 + %t123 = call i32 @finch_str_eq(ptr %a121, ptr %a122) + %t124 = icmp ne i32 %t123, 0 + br i1 %t124, label %then5608, label %endif5610 +then5608: %t125 = load ptr, ptr %a1 - %t126 = load { ptr, i64, i64 }, ptr %a101 - %t127 = load { ptr, i64, i64 }, ptr %a121 - %t128 = load { ptr, i64, i64 }, ptr %a124 - call void @finch.gen.condBr(ptr %t125, { ptr, i64, i64 } %t126, { ptr, i64, i64 } %t127, { ptr, i64, i64 } %t128) - %t129 = load ptr, ptr %a1 - %t130 = load { ptr, i64, i64 }, ptr %a121 - call void @finch.gen.label(ptr %t129, { ptr, i64, i64 } %t130) + %t126 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t125, { ptr, i64, i64 } { ptr @.str.3581, i64 10, i64 0 }) + store { ptr, i64, i64 } %t126, ptr %a127 + %t128 = load ptr, ptr %a1 + %t129 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t128, { ptr, i64, i64 } { ptr @.str.3582, i64 10, i64 0 }) + store { ptr, i64, i64 } %t129, ptr %a130 %t131 = load ptr, ptr %a1 - %t132 = load { ptr, i64, i64 }, ptr %a3 - 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.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 - store { ptr, i64, i64 } %t140, ptr %a143 - store { ptr, i64, i64 } %t141, ptr %a144 - call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144) + %t132 = load { ptr, i64, i64 }, ptr %a107 + %t133 = load { ptr, i64, i64 }, ptr %a127 + %t134 = load { ptr, i64, i64 }, ptr %a130 + call void @finch.gen.condBr(ptr %t131, { ptr, i64, i64 } %t132, { ptr, i64, i64 } %t133, { ptr, i64, i64 } %t134) + %t135 = load ptr, ptr %a1 + %t136 = load { ptr, i64, i64 }, ptr %a127 + call void @finch.gen.label(ptr %t135, { ptr, i64, i64 } %t136) + %t137 = load ptr, ptr %a1 + %t138 = load { ptr, i64, i64 }, ptr %a3 + %t139 = load %S.ast.Type, ptr %a4 + %t140 = load { ptr, i64, i64 }, ptr %a91 + %t141 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t137, { ptr, i64, i64 } %t138, %S.ast.Type %t139, { ptr, i64, i64 } %t140) + store { ptr, i64, i64 } %t141, ptr %a142 + %t143 = load ptr, ptr %a1 + %t144 = load ptr, ptr %a1 %t145 = load { ptr, i64, i64 }, ptr %a142 - store { ptr, i64, i64 } %t145, ptr %a147 - 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 + %t146 = load %S.ast.Type, ptr %a4 + %t147 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t144, { ptr, i64, i64 } %t145, %S.ast.Type %t146, i64 1) + %t148 = load %S.ast.Type, ptr %a21 + call void @finch.gen.dropAt(ptr %t143, { ptr, i64, i64 } %t147, %S.ast.Type %t148) + store { ptr, i64, i64 } %t147, ptr %a149 + call void @finch_str_drop(ptr %a149) %t150 = load ptr, ptr %a1 - %t151 = load %S.ast.Type, ptr %a4 - %t152 = call { ptr, i64, i64 } @finch.gen.entrySize(ptr %t150, %S.ast.Type %t151) - store { ptr, i64, i64 } %t149, 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.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) - %t161 = load ptr, ptr %a1 - %t162 = load { ptr, i64, i64 }, ptr %a124 - call void @finch.gen.br(ptr %t161, { ptr, i64, i64 } %t162) - %t163 = load ptr, ptr %a1 - %t164 = load { ptr, i64, i64 }, ptr %a124 - call void @finch.gen.label(ptr %t163, { ptr, i64, i64 } %t164) - %t165 = load { ptr, i64, i64 }, ptr %a101 - 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.gen.Val zeroinitializer, { ptr, i64, i64 } %t168, 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 -endif5254: - %t172 = load ptr, ptr %a1 - %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.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.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.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.3438, i64 7, i64 0 }) - store { ptr, i64, i64 } %t185, ptr %a186 - %t187 = load ptr, ptr %a1 - %t188 = load { ptr, i64, i64 }, ptr %a101 - %t189 = load { ptr, i64, i64 }, ptr %a174 - %t190 = load { ptr, i64, i64 }, ptr %a177 - call void @finch.gen.condBr(ptr %t187, { ptr, i64, i64 } %t188, { ptr, i64, i64 } %t189, { ptr, i64, i64 } %t190) - %t191 = load ptr, ptr %a1 - %t192 = load { ptr, i64, i64 }, ptr %a174 - call void @finch.gen.label(ptr %t191, { ptr, i64, i64 } %t192) - %t193 = load ptr, ptr %a1 + %t151 = load ptr, ptr %a1 + %t152 = load { ptr, i64, i64 }, ptr %a142 + %t153 = load %S.ast.Type, ptr %a4 + %t154 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t151, { ptr, i64, i64 } %t152, %S.ast.Type %t153, i64 2) + %t155 = load %S.ast.Type, ptr %a32 + call void @finch.gen.dropAt(ptr %t150, { ptr, i64, i64 } %t154, %S.ast.Type %t155) + store { ptr, i64, i64 } %t154, ptr %a156 + call void @finch_str_drop(ptr %a156) + %t157 = load ptr, ptr %a1 + %t158 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } { ptr @.str.3583, i64 35, 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.3584, i64 6, i64 0 }, ptr %a165 + call void @finch_str_concat(ptr %a163, ptr %a164, ptr %a165) + store { ptr, i64, i64 } %t162, ptr %a166 + call void @finch_str_drop(ptr %a166) + %t167 = load { ptr, i64, i64 }, ptr %a163 + %t168 = load { ptr, i64, i64 }, ptr %a91 + store { ptr, i64, i64 } %t167, ptr %a170 + store { ptr, i64, i64 } %t168, ptr %a171 + call void @finch_str_concat(ptr %a169, ptr %a170, ptr %a171) + store { ptr, i64, i64 } %t167, ptr %a172 + call void @finch_str_drop(ptr %a172) + %t173 = load { ptr, i64, i64 }, ptr %a169 + store { ptr, i64, i64 } %t173, ptr %a175 + store { ptr, i64, i64 } { ptr @.str.3585, i64 6, i64 0 }, ptr %a176 + call void @finch_str_concat(ptr %a174, ptr %a175, ptr %a176) + store { ptr, i64, i64 } %t173, ptr %a177 + call void @finch_str_drop(ptr %a177) + %t178 = load { ptr, i64, i64 }, ptr %a174 + %t179 = load ptr, ptr %a1 + %t180 = load %S.ast.Type, ptr %a4 + %t181 = call { ptr, i64, i64 } @finch.gen.entrySize(ptr %t179, %S.ast.Type %t180) + store { ptr, i64, i64 } %t178, ptr %a183 + store { ptr, i64, i64 } %t181, ptr %a184 + call void @finch_str_concat(ptr %a182, ptr %a183, ptr %a184) + store { ptr, i64, i64 } %t178, ptr %a185 + call void @finch_str_drop(ptr %a185) + store { ptr, i64, i64 } %t181, ptr %a186 + call void @finch_str_drop(ptr %a186) + %t187 = load { ptr, i64, i64 }, ptr %a182 + store { ptr, i64, i64 } %t187, ptr %a189 + store { ptr, i64, i64 } { ptr @.str.3586, i64 1, i64 0 }, ptr %a190 + call void @finch_str_concat(ptr %a188, ptr %a189, ptr %a190) + store { ptr, i64, i64 } %t187, ptr %a191 + call void @finch_str_drop(ptr %a191) + %t192 = load { ptr, i64, i64 }, ptr %a188 + call void @finch.gen.emit(ptr %t157, { ptr, i64, i64 } %t192) + store { ptr, i64, i64 } %t192, ptr %a193 + call void @finch_str_drop(ptr %a193) %t194 = load ptr, ptr %a1 - %t195 = load ptr, ptr %a1 - %t196 = load %S.ast.Type, ptr %a32 - %t197 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t195, %S.ast.Type %t196) - %t198 = load ptr, ptr %a1 - %t199 = load ptr, ptr %a1 - %t200 = load { ptr, i64, i64 }, ptr %a3 - %t201 = load %S.ast.Type, ptr %a4 - %t202 = load { ptr, i64, i64 }, ptr %a89 - %t203 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t199, { ptr, i64, i64 } %t200, %S.ast.Type %t201, { ptr, i64, i64 } %t202) - %t204 = load %S.ast.Type, ptr %a4 - %t205 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t198, { ptr, i64, i64 } %t203, %S.ast.Type %t204, i64 2) - %t206 = call { ptr, i64, i64 } @finch.gen.load(ptr %t194, { ptr, i64, i64 } %t197, { ptr, i64, i64 } %t205) - %t207 = load %S.ast.Type, ptr %a32 - %t208 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t193, { ptr, i64, i64 } %t206, %S.ast.Type %t207) - store { ptr, i64, i64 } %t208, ptr %a209 - %t210 = load ptr, ptr %a1 - %t211 = load { ptr, i64, i64 }, ptr %a180 - call void @finch.gen.br(ptr %t210, { ptr, i64, i64 } %t211) - %t212 = load ptr, ptr %a1 - %t213 = load { ptr, i64, i64 }, ptr %a180 - call void @finch.gen.label(ptr %t212, { ptr, i64, i64 } %t213) + %t195 = load { ptr, i64, i64 }, ptr %a130 + call void @finch.gen.br(ptr %t194, { ptr, i64, i64 } %t195) + %t196 = load ptr, ptr %a1 + %t197 = load { ptr, i64, i64 }, ptr %a130 + call void @finch.gen.label(ptr %t196, { ptr, i64, i64 } %t197) + %t198 = load { ptr, i64, i64 }, ptr %a107 + store { ptr, i64, i64 } %t198, ptr %a199 + call void @finch_str_copy(ptr %a200, ptr %a199) + %t201 = load { ptr, i64, i64 }, ptr %a200 + %t202 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t201, 0 + %t203 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3587, i64 4, i64 0 }) + %t204 = insertvalue %S.gen.Val %t202, %S.ast.Type %t203, 1 + call void @finch_str_drop(ptr %a142) + call void @finch_str_drop(ptr %a130) + call void @finch_str_drop(ptr %a127) + call void @finch_str_drop(ptr %a107) + call void @finch_str_drop(ptr %a91) + call void @finch.drop.S_gen_Val(ptr %a82) + call void @finch.drop.S_ast_Type(ptr %a32) + call void @finch.drop.S_ast_Type(ptr %a21) + call void @finch_str_drop(ptr %a10) + ret %S.gen.Val %t204 +endif5610: + %t205 = load ptr, ptr %a1 + %t206 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t205, { ptr, i64, i64 } { ptr @.str.3588, i64 9, i64 0 }) + store { ptr, i64, i64 } %t206, ptr %a207 + %t208 = load ptr, ptr %a1 + %t209 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t208, { ptr, i64, i64 } { ptr @.str.3589, i64 11, i64 0 }) + store { ptr, i64, i64 } %t209, ptr %a210 + %t211 = load ptr, ptr %a1 + %t212 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t211, { ptr, i64, i64 } { ptr @.str.3590, i64 8, i64 0 }) + store { ptr, i64, i64 } %t212, ptr %a213 %t214 = load ptr, ptr %a1 - %t215 = load { ptr, i64, i64 }, ptr %a186 - call void @finch.gen.br(ptr %t214, { ptr, i64, i64 } %t215) - %t216 = load ptr, ptr %a1 - %t217 = load { ptr, i64, i64 }, ptr %a177 - call void @finch.gen.label(ptr %t216, { ptr, i64, i64 } %t217) - %t218 = load ptr, ptr %a1 - %t219 = load ptr, ptr %a1 + %t215 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t214, { ptr, i64, i64 } { ptr @.str.3591, i64 8, i64 0 }) + store { ptr, i64, i64 } %t215, ptr %a216 + %t217 = load ptr, ptr %a1 + %t218 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t217, { ptr, i64, i64 } { ptr @.str.3592, i64 7, i64 0 }) + store { ptr, i64, i64 } %t218, ptr %a219 %t220 = load ptr, ptr %a1 - %t221 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t222 = load { ptr, i64, i64 }, ptr %t221 - %t223 = extractvalue { ptr, i64, i64 } %t222, 1 - %t224 = icmp uge i64 2, %t223 - br i1 %t224, label %range5255, label %inrange5256 -range5255: - call void @finch_panic_index(ptr @.str.3439, i64 2649, i64 2, i64 %t223) - unreachable -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 - %t228 = load %S.ast.Type, ptr %a32 - %t229 = call %S.gen.Val @finch.gen.exprWant(ptr %t220, %S.ast.Node %t227, %S.ast.Type %t228) - %t230 = load %S.ast.Type, ptr %a32 - %t231 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t232 = load { ptr, i64, i64 }, ptr %t231 - %t233 = extractvalue { ptr, i64, i64 } %t232, 1 - %t234 = icmp uge i64 2, %t233 - br i1 %t234, label %range5257, label %inrange5258 -range5257: - call void @finch_panic_index(ptr @.str.3440, i64 2649, i64 2, i64 %t233) - unreachable -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.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 - %t242 = load { ptr, i64, i64 }, ptr %a183 - call void @finch.gen.br(ptr %t241, { ptr, i64, i64 } %t242) - %t243 = load ptr, ptr %a1 - %t244 = load { ptr, i64, i64 }, ptr %a183 - call void @finch.gen.label(ptr %t243, { ptr, i64, i64 } %t244) - %t245 = load ptr, ptr %a1 - %t246 = load { ptr, i64, i64 }, ptr %a186 - call void @finch.gen.br(ptr %t245, { ptr, i64, i64 } %t246) + %t221 = load { ptr, i64, i64 }, ptr %a107 + %t222 = load { ptr, i64, i64 }, ptr %a207 + %t223 = load { ptr, i64, i64 }, ptr %a210 + call void @finch.gen.condBr(ptr %t220, { ptr, i64, i64 } %t221, { ptr, i64, i64 } %t222, { ptr, i64, i64 } %t223) + %t224 = load ptr, ptr %a1 + %t225 = load { ptr, i64, i64 }, ptr %a207 + call void @finch.gen.label(ptr %t224, { ptr, i64, i64 } %t225) + %t226 = load ptr, ptr %a1 + %t227 = load ptr, ptr %a1 + %t228 = load ptr, ptr %a1 + %t229 = load %S.ast.Type, ptr %a32 + %t230 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t228, %S.ast.Type %t229) + %t231 = load ptr, ptr %a1 + %t232 = load ptr, ptr %a1 + %t233 = load { ptr, i64, i64 }, ptr %a3 + %t234 = load %S.ast.Type, ptr %a4 + %t235 = load { ptr, i64, i64 }, ptr %a91 + %t236 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t232, { ptr, i64, i64 } %t233, %S.ast.Type %t234, { ptr, i64, i64 } %t235) + %t237 = load %S.ast.Type, ptr %a4 + %t238 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t231, { ptr, i64, i64 } %t236, %S.ast.Type %t237, i64 2) + store { ptr, i64, i64 } %t236, ptr %a239 + call void @finch_str_drop(ptr %a239) + %t240 = call { ptr, i64, i64 } @finch.gen.load(ptr %t227, { ptr, i64, i64 } %t230, { ptr, i64, i64 } %t238) + store { ptr, i64, i64 } %t230, ptr %a241 + call void @finch_str_drop(ptr %a241) + store { ptr, i64, i64 } %t238, ptr %a242 + call void @finch_str_drop(ptr %a242) + %t243 = load %S.ast.Type, ptr %a32 + %t244 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t226, { ptr, i64, i64 } %t240, %S.ast.Type %t243) + store { ptr, i64, i64 } %t240, ptr %a245 + call void @finch_str_drop(ptr %a245) + store { ptr, i64, i64 } %t244, ptr %a246 %t247 = load ptr, ptr %a1 - %t248 = load { ptr, i64, i64 }, ptr %a186 - call void @finch.gen.label(ptr %t247, { ptr, i64, i64 } %t248) + %t248 = load { ptr, i64, i64 }, ptr %a213 + call void @finch.gen.br(ptr %t247, { ptr, i64, i64 } %t248) %t249 = load ptr, ptr %a1 - %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.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.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 - store { ptr, i64, i64 } %t260, ptr %a263 - store { ptr, i64, i64 } %t261, 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 %a267 - 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 - store { ptr, i64, i64 } %t269, ptr %a272 - store { ptr, i64, i64 } %t270, ptr %a273 - 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.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 - store { ptr, i64, i64 } %t278, 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.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 - store { ptr, i64, i64 } %t287, 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.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) - %t298 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t297, 0 - %t299 = load %S.ast.Type, ptr %a32 - 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 - %t304 = load ptr, ptr %a1 - %t305 = load %S.ast.Type, ptr %a32 - %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 -endif5241: - %t308 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t308, ptr %a309 - 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 %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.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.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.3451, i64 4, i64 0 }) - %t327 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t326, 1 - ret %S.gen.Val %t327 -endif5261: - %t328 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t328, ptr %a329 - 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.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.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.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 - call void @finch.gen.checkArgs(ptr %t339, %S.ast.Node %t340, i64 1, i64 0, { ptr, i64, i64 } %t341) - store i64 1, ptr %a342 - %t343 = load %S.ast.Type, ptr %a21 - store %S.ast.Type %t343, ptr %a344 - call void @finch.copy.S_ast_Type(ptr %a345, ptr %a344) - %t346 = load %S.ast.Type, ptr %a345 - 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.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 %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 %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.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.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.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.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 - store { ptr, i64, i64 } %t377, 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.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.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.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.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 - store { ptr, i64, i64 } %t399, ptr %a402 - store { ptr, i64, i64 } %t400, ptr %a403 - 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.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 - %t410 = load %S.ast.Type, ptr %a347 - %t411 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t409, %S.ast.Type %t410) - store { ptr, i64, i64 } %t408, 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.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.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.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.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.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.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 - store { ptr, i64, i64 } %t441, 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.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.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 - %t456 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t454, { ptr, i64, i64 } %t455) - store { ptr, i64, i64 } %t456, ptr %a457 - %t458 = load ptr, ptr %a1 - %t459 = load { ptr, i64, i64 }, ptr %a3 - %t460 = load %S.ast.Type, ptr %a4 - %t461 = load { ptr, i64, i64 }, ptr %a457 - %t462 = extractvalue { ptr, i64, i64 } %t461, 1 - %t463 = icmp uge i64 3, %t462 - br i1 %t463, label %range5272, label %inrange5273 -range5272: - call void @finch_panic_index(ptr @.str.3474, i64 2679, i64 3, i64 %t462) + %t250 = load { ptr, i64, i64 }, ptr %a213 + call void @finch.gen.label(ptr %t249, { ptr, i64, i64 } %t250) + %t251 = load ptr, ptr %a1 + %t252 = load { ptr, i64, i64 }, ptr %a219 + call void @finch.gen.br(ptr %t251, { ptr, i64, i64 } %t252) + %t253 = load ptr, ptr %a1 + %t254 = load { ptr, i64, i64 }, ptr %a210 + call void @finch.gen.label(ptr %t253, { ptr, i64, i64 } %t254) + %t255 = load ptr, ptr %a1 + %t256 = load ptr, ptr %a1 + %t257 = load ptr, ptr %a1 + %t258 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t259 = load { ptr, i64, i64 }, ptr %t258 + %t260 = extractvalue { ptr, i64, i64 } %t259, 1 + %t261 = icmp uge i64 2, %t260 + br i1 %t261, label %range5611, label %inrange5612 +range5611: + call void @finch_panic_index(ptr @.str.3593, i64 2882, i64 2, i64 %t260) unreachable -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 +inrange5612: + %t262 = extractvalue { ptr, i64, i64 } %t259, 0 + %t263 = getelementptr inbounds %S.ast.Node, ptr %t262, i64 2 + %t264 = load %S.ast.Node, ptr %t263 + %t265 = load %S.ast.Type, ptr %a32 + %t266 = call %S.gen.Val @finch.gen.exprWant(ptr %t257, %S.ast.Node %t264, %S.ast.Type %t265) + %t267 = load %S.ast.Type, ptr %a32 + %t268 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t269 = load { ptr, i64, i64 }, ptr %t268 + %t270 = extractvalue { ptr, i64, i64 } %t269, 1 + %t271 = icmp uge i64 2, %t270 + br i1 %t271, label %range5613, label %inrange5614 +range5613: + call void @finch_panic_index(ptr @.str.3594, i64 2882, i64 2, i64 %t270) + unreachable +inrange5614: + %t272 = extractvalue { ptr, i64, i64 } %t269, 0 + %t273 = getelementptr inbounds %S.ast.Node, ptr %t272, i64 2 + %t274 = load %S.ast.Node, ptr %t273 + %t275 = call %S.gen.Val @finch.gen.coerce(ptr %t256, %S.gen.Val %t266, %S.ast.Type %t267, %S.ast.Node %t274, { ptr, i64, i64 } { ptr @.str.3595, i64 11, i64 0 }) + store %S.gen.Val %t266, ptr %a276 + call void @finch.drop.S_gen_Val(ptr %a276) + %t277 = call { ptr, i64, i64 } @finch.gen.own(ptr %t255, %S.gen.Val %t275) + store %S.gen.Val %t275, ptr %a278 + call void @finch.drop.S_gen_Val(ptr %a278) + store { ptr, i64, i64 } %t277, ptr %a279 + %t280 = load ptr, ptr %a1 + %t281 = load { ptr, i64, i64 }, ptr %a216 + call void @finch.gen.br(ptr %t280, { ptr, i64, i64 } %t281) + %t282 = load ptr, ptr %a1 + %t283 = load { ptr, i64, i64 }, ptr %a216 + call void @finch.gen.label(ptr %t282, { ptr, i64, i64 } %t283) + %t284 = load ptr, ptr %a1 + %t285 = load { ptr, i64, i64 }, ptr %a219 + call void @finch.gen.br(ptr %t284, { ptr, i64, i64 } %t285) + %t286 = load ptr, ptr %a1 + %t287 = load { ptr, i64, i64 }, ptr %a219 + call void @finch.gen.label(ptr %t286, { ptr, i64, i64 } %t287) + %t288 = load ptr, ptr %a1 + %t289 = load ptr, ptr %a1 + %t290 = load %S.ast.Type, ptr %a32 + %t291 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t289, %S.ast.Type %t290) + store { ptr, i64, i64 } { ptr @.str.3596, i64 4, i64 0 }, ptr %a293 + store { ptr, i64, i64 } %t291, ptr %a294 + call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) + store { ptr, i64, i64 } %t291, ptr %a295 + call void @finch_str_drop(ptr %a295) + %t296 = load { ptr, i64, i64 }, ptr %a292 + store { ptr, i64, i64 } %t296, ptr %a298 + store { ptr, i64, i64 } { ptr @.str.3597, i64 3, i64 0 }, ptr %a299 + call void @finch_str_concat(ptr %a297, ptr %a298, ptr %a299) + store { ptr, i64, i64 } %t296, ptr %a300 + call void @finch_str_drop(ptr %a300) + %t301 = load { ptr, i64, i64 }, ptr %a297 + %t302 = load { ptr, i64, i64 }, ptr %a246 + store { ptr, i64, i64 } %t301, ptr %a304 + store { ptr, i64, i64 } %t302, ptr %a305 + call void @finch_str_concat(ptr %a303, ptr %a304, ptr %a305) + store { ptr, i64, i64 } %t301, ptr %a306 + call void @finch_str_drop(ptr %a306) + %t307 = load { ptr, i64, i64 }, ptr %a303 + store { ptr, i64, i64 } %t307, ptr %a309 + store { ptr, i64, i64 } { ptr @.str.3598, i64 3, i64 0 }, ptr %a310 + call void @finch_str_concat(ptr %a308, ptr %a309, ptr %a310) + store { ptr, i64, i64 } %t307, ptr %a311 + call void @finch_str_drop(ptr %a311) + %t312 = load { ptr, i64, i64 }, ptr %a308 + %t313 = load { ptr, i64, i64 }, ptr %a213 + store { ptr, i64, i64 } %t312, ptr %a315 + store { ptr, i64, i64 } %t313, ptr %a316 + call void @finch_str_concat(ptr %a314, ptr %a315, ptr %a316) + store { ptr, i64, i64 } %t312, ptr %a317 + call void @finch_str_drop(ptr %a317) + %t318 = load { ptr, i64, i64 }, ptr %a314 + store { ptr, i64, i64 } %t318, ptr %a320 + store { ptr, i64, i64 } { ptr @.str.3599, i64 6, i64 0 }, ptr %a321 + call void @finch_str_concat(ptr %a319, ptr %a320, ptr %a321) + store { ptr, i64, i64 } %t318, ptr %a322 + call void @finch_str_drop(ptr %a322) + %t323 = load { ptr, i64, i64 }, ptr %a319 + %t324 = load { ptr, i64, i64 }, ptr %a279 + store { ptr, i64, i64 } %t323, ptr %a326 + store { ptr, i64, i64 } %t324, ptr %a327 + call void @finch_str_concat(ptr %a325, ptr %a326, ptr %a327) + store { ptr, i64, i64 } %t323, ptr %a328 + call void @finch_str_drop(ptr %a328) + %t329 = load { ptr, i64, i64 }, ptr %a325 + store { ptr, i64, i64 } %t329, ptr %a331 + store { ptr, i64, i64 } { ptr @.str.3600, i64 3, i64 0 }, ptr %a332 + call void @finch_str_concat(ptr %a330, ptr %a331, ptr %a332) + store { ptr, i64, i64 } %t329, ptr %a333 + call void @finch_str_drop(ptr %a333) + %t334 = load { ptr, i64, i64 }, ptr %a330 + %t335 = load { ptr, i64, i64 }, ptr %a216 + store { ptr, i64, i64 } %t334, ptr %a337 + store { ptr, i64, i64 } %t335, ptr %a338 + call void @finch_str_concat(ptr %a336, ptr %a337, ptr %a338) + store { ptr, i64, i64 } %t334, ptr %a339 + call void @finch_str_drop(ptr %a339) + %t340 = load { ptr, i64, i64 }, ptr %a336 + store { ptr, i64, i64 } %t340, ptr %a342 + store { ptr, i64, i64 } { ptr @.str.3601, i64 2, i64 0 }, ptr %a343 + call void @finch_str_concat(ptr %a341, ptr %a342, ptr %a343) + store { ptr, i64, i64 } %t340, ptr %a344 + call void @finch_str_drop(ptr %a344) + %t345 = load { ptr, i64, i64 }, ptr %a341 + %t346 = call { ptr, i64, i64 } @finch.gen.op(ptr %t288, { ptr, i64, i64 } %t345) + store { ptr, i64, i64 } %t345, ptr %a347 + call void @finch_str_drop(ptr %a347) + %t348 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t346, 0 + %t349 = load %S.ast.Type, ptr %a32 + store %S.ast.Type %t349, ptr %a350 + call void @finch.copy.S_ast_Type(ptr %a351, ptr %a350) + %t352 = load %S.ast.Type, ptr %a351 + %t353 = insertvalue %S.gen.Val %t348, %S.ast.Type %t352, 1 + %t354 = load ptr, ptr %a1 + %t355 = load %S.ast.Type, ptr %a32 + %t356 = call i1 @finch.gen.owning(ptr %t354, %S.ast.Type %t355) + %t357 = insertvalue %S.gen.Val %t353, i1 %t356, 2 + call void @finch_str_drop(ptr %a279) + call void @finch_str_drop(ptr %a246) + call void @finch_str_drop(ptr %a219) + call void @finch_str_drop(ptr %a216) + call void @finch_str_drop(ptr %a213) + call void @finch_str_drop(ptr %a210) + call void @finch_str_drop(ptr %a207) + call void @finch_str_drop(ptr %a107) + call void @finch_str_drop(ptr %a91) + call void @finch.drop.S_gen_Val(ptr %a82) + call void @finch.drop.S_ast_Type(ptr %a32) + call void @finch.drop.S_ast_Type(ptr %a21) + call void @finch_str_drop(ptr %a10) + ret %S.gen.Val %t357 +endif5597: + %t358 = load { ptr, i64, i64 }, ptr %a10 + store { ptr, i64, i64 } %t358, ptr %a359 + store { ptr, i64, i64 } { ptr @.str.3602, i64 5, i64 0 }, ptr %a360 + %t361 = call i32 @finch_str_eq(ptr %a359, ptr %a360) + %t362 = icmp ne i32 %t361, 0 + br i1 %t362, label %then5615, label %endif5617 +then5615: + %t363 = load ptr, ptr %a1 + %t364 = load %S.ast.Node, ptr %a2 + %t365 = load { ptr, i64, i64 }, ptr %a10 + call void @finch.gen.checkArgs(ptr %t363, %S.ast.Node %t364, i64 1, i64 0, { ptr, i64, i64 } %t365) + %t366 = load ptr, ptr %a1 + %t367 = load %S.ast.Type, ptr %a21 + %t368 = call i1 @finch.gen.owning(ptr %t366, %S.ast.Type %t367) + br label %logic.from5618 +logic.from5618: + br i1 %t368, label %logic.end5620, label %logic.rhs5619 +logic.rhs5619: + %t369 = load ptr, ptr %a1 + %t370 = load %S.ast.Type, ptr %a32 + %t371 = call i1 @finch.gen.owning(ptr %t369, %S.ast.Type %t370) + br label %logic.rend5621 +logic.rend5621: + br label %logic.end5620 +logic.end5620: + %t372 = phi i1 [ true, %logic.from5618 ], [ %t371, %logic.rend5621 ] + br i1 %t372, label %then5622, label %endif5624 +then5622: + %t373 = load ptr, ptr %a1 + %t374 = load ptr, ptr %a1 + %t375 = load ptr, ptr %a1 + %t376 = load %S.ast.Type, ptr %a4 + %t377 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t375, %S.ast.Type %t376) + store { ptr, i64, i64 } { ptr @.str.3604, i64 23, i64 0 }, ptr %a379 + store { ptr, i64, i64 } %t377, ptr %a380 + call void @finch_str_concat(ptr %a378, ptr %a379, ptr %a380) + store { ptr, i64, i64 } %t377, ptr %a381 + call void @finch_str_drop(ptr %a381) + %t382 = load { ptr, i64, i64 }, ptr %a378 + store { ptr, i64, i64 } %t382, ptr %a384 + store { ptr, i64, i64 } { ptr @.str.3605, i64 6, i64 0 }, ptr %a385 + call void @finch_str_concat(ptr %a383, ptr %a384, ptr %a385) + store { ptr, i64, i64 } %t382, ptr %a386 + call void @finch_str_drop(ptr %a386) + %t387 = load { ptr, i64, i64 }, ptr %a383 + %t388 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t387, ptr %a390 + store { ptr, i64, i64 } %t388, ptr %a391 + call void @finch_str_concat(ptr %a389, ptr %a390, ptr %a391) + store { ptr, i64, i64 } %t387, ptr %a392 + call void @finch_str_drop(ptr %a392) + %t393 = load { ptr, i64, i64 }, ptr %a389 + store { ptr, i64, i64 } %t393, ptr %a395 + store { ptr, i64, i64 } { ptr @.str.3606, i64 14, i64 0 }, ptr %a396 + call void @finch_str_concat(ptr %a394, ptr %a395, ptr %a396) + store { ptr, i64, i64 } %t393, ptr %a397 + call void @finch_str_drop(ptr %a397) + %t398 = load { ptr, i64, i64 }, ptr %a394 + %t399 = call { ptr, i64, i64 } @finch.gen.op(ptr %t374, { ptr, i64, i64 } %t398) + store { ptr, i64, i64 } %t398, ptr %a400 + call void @finch_str_drop(ptr %a400) + %t401 = call { ptr, i64, i64 } @finch.gen.load(ptr %t373, { ptr, i64, i64 } { ptr @.str.3603, i64 3, i64 0 }, { ptr, i64, i64 } %t399) + store { ptr, i64, i64 } %t399, ptr %a402 + call void @finch_str_drop(ptr %a402) + store { ptr, i64, i64 } %t401, ptr %a403 + %t404 = load ptr, ptr %a1 + %t405 = load { ptr, i64, i64 }, ptr %a403 + %t406 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t404, { ptr, i64, i64 } %t405) + store { ptr, i64, i64 } %t406, ptr %a407 + %t408 = load ptr, ptr %a1 + %t409 = load { ptr, i64, i64 }, ptr %a3 + %t410 = load %S.ast.Type, ptr %a4 + %t411 = load { ptr, i64, i64 }, ptr %a407 + %t412 = extractvalue { ptr, i64, i64 } %t411, 1 + %t413 = icmp uge i64 3, %t412 + br i1 %t413, label %range5625, label %inrange5626 +range5625: + call void @finch_panic_index(ptr @.str.3607, i64 2894, i64 3, i64 %t412) + unreachable +inrange5626: + %t414 = extractvalue { ptr, i64, i64 } %t411, 0 + %t415 = getelementptr inbounds { ptr, i64, i64 }, ptr %t414, i64 3 + %t416 = load { ptr, i64, i64 }, ptr %t415 + %t417 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t408, { ptr, i64, i64 } %t409, %S.ast.Type %t410, { ptr, i64, i64 } %t416) + store { ptr, i64, i64 } %t417, ptr %a418 + %t419 = load ptr, ptr %a1 + %t420 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t419, { ptr, i64, i64 } { ptr @.str.3608, i64 10, i64 0 }) + store { ptr, i64, i64 } %t420, ptr %a421 + %t422 = load ptr, ptr %a1 + %t423 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t422, { ptr, i64, i64 } { ptr @.str.3609, i64 10, i64 0 }) + store { ptr, i64, i64 } %t423, ptr %a424 + %t425 = load ptr, ptr %a1 + %t426 = load ptr, ptr %a1 + %t427 = load ptr, ptr %a1 + %t428 = load ptr, ptr %a1 + %t429 = load { ptr, i64, i64 }, ptr %a418 + %t430 = load %S.ast.Type, ptr %a4 + %t431 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t428, { ptr, i64, i64 } %t429, %S.ast.Type %t430, i64 0) + %t432 = call { ptr, i64, i64 } @finch.gen.load(ptr %t427, { ptr, i64, i64 } { ptr @.str.3611, i64 3, i64 0 }, { ptr, i64, i64 } %t431) + store { ptr, i64, i64 } %t431, ptr %a433 + call void @finch_str_drop(ptr %a433) + store { ptr, i64, i64 } { ptr @.str.3610, i64 12, i64 0 }, ptr %a435 + store { ptr, i64, i64 } %t432, ptr %a436 + call void @finch_str_concat(ptr %a434, ptr %a435, ptr %a436) + store { ptr, i64, i64 } %t432, ptr %a437 + call void @finch_str_drop(ptr %a437) + %t438 = load { ptr, i64, i64 }, ptr %a434 + store { ptr, i64, i64 } %t438, ptr %a440 + store { ptr, i64, i64 } { ptr @.str.3612, i64 3, i64 0 }, ptr %a441 + call void @finch_str_concat(ptr %a439, ptr %a440, ptr %a441) + store { ptr, i64, i64 } %t438, ptr %a442 + call void @finch_str_drop(ptr %a442) + %t443 = load { ptr, i64, i64 }, ptr %a439 + %t444 = call { ptr, i64, i64 } @finch.gen.op(ptr %t426, { ptr, i64, i64 } %t443) + store { ptr, i64, i64 } %t443, ptr %a445 + call void @finch_str_drop(ptr %a445) + %t446 = load { ptr, i64, i64 }, ptr %a421 + %t447 = load { ptr, i64, i64 }, ptr %a424 + call void @finch.gen.condBr(ptr %t425, { ptr, i64, i64 } %t444, { ptr, i64, i64 } %t446, { ptr, i64, i64 } %t447) + store { ptr, i64, i64 } %t444, ptr %a448 + call void @finch_str_drop(ptr %a448) + %t449 = load ptr, ptr %a1 + %t450 = load { ptr, i64, i64 }, ptr %a421 + call void @finch.gen.label(ptr %t449, { ptr, i64, i64 } %t450) + %t451 = load ptr, ptr %a1 + %t452 = load ptr, ptr %a1 + %t453 = load { ptr, i64, i64 }, ptr %a418 + %t454 = load %S.ast.Type, ptr %a4 + %t455 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t452, { ptr, i64, i64 } %t453, %S.ast.Type %t454, i64 1) + %t456 = load %S.ast.Type, ptr %a21 + call void @finch.gen.dropAt(ptr %t451, { ptr, i64, i64 } %t455, %S.ast.Type %t456) + store { ptr, i64, i64 } %t455, ptr %a457 + call void @finch_str_drop(ptr %a457) + %t458 = load ptr, ptr %a1 + %t459 = load ptr, ptr %a1 + %t460 = load { ptr, i64, i64 }, ptr %a418 + %t461 = load %S.ast.Type, ptr %a4 + %t462 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t459, { ptr, i64, i64 } %t460, %S.ast.Type %t461, i64 2) + %t463 = load %S.ast.Type, ptr %a32 + call void @finch.gen.dropAt(ptr %t458, { ptr, i64, i64 } %t462, %S.ast.Type %t463) + store { ptr, i64, i64 } %t462, ptr %a464 + call void @finch_str_drop(ptr %a464) + %t465 = load ptr, ptr %a1 + %t466 = load { ptr, i64, i64 }, ptr %a424 + call void @finch.gen.br(ptr %t465, { ptr, i64, i64 } %t466) + %t467 = load ptr, ptr %a1 + %t468 = load { ptr, i64, i64 }, ptr %a424 + call void @finch.gen.label(ptr %t467, { ptr, i64, i64 } %t468) %t469 = load ptr, ptr %a1 - %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.3476, i64 10, i64 0 }) - store { ptr, i64, i64 } %t473, ptr %a474 - %t475 = load ptr, ptr %a1 - %t476 = load ptr, ptr %a1 - %t477 = load ptr, ptr %a1 - %t478 = load ptr, ptr %a1 - %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.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.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) - %t492 = load { ptr, i64, i64 }, ptr %a471 - %t493 = load { ptr, i64, i64 }, ptr %a474 - call void @finch.gen.condBr(ptr %t475, { ptr, i64, i64 } %t491, { ptr, i64, i64 } %t492, { ptr, i64, i64 } %t493) - %t494 = load ptr, ptr %a1 - %t495 = load { ptr, i64, i64 }, ptr %a471 - call void @finch.gen.label(ptr %t494, { ptr, i64, i64 } %t495) + %t470 = load { ptr, i64, i64 }, ptr %a407 + call void @finch.gen.loopEnd(ptr %t469, { ptr, i64, i64 } %t470) + call void @finch_str_drop(ptr %a424) + call void @finch_str_drop(ptr %a421) + call void @finch_str_drop(ptr %a418) + call void @finch.drop.arr_str(ptr %a407) + call void @finch_str_drop(ptr %a403) + br label %endif5624 +endif5624: + %t471 = load ptr, ptr %a1 + %t472 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } { ptr @.str.3613, i64 31, i64 0 }, ptr %a474 + store { ptr, i64, i64 } %t472, ptr %a475 + 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.3614, i64 1, i64 0 }, ptr %a479 + call void @finch_str_concat(ptr %a477, ptr %a478, ptr %a479) + store { ptr, i64, i64 } %t476, ptr %a480 + call void @finch_str_drop(ptr %a480) + %t481 = load { ptr, i64, i64 }, ptr %a477 + call void @finch.gen.emit(ptr %t471, { ptr, i64, i64 } %t481) + store { ptr, i64, i64 } %t481, ptr %a482 + call void @finch_str_drop(ptr %a482) + %t483 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3615, i64 4, i64 0 }) + %t484 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t483, 1 + call void @finch.drop.S_ast_Type(ptr %a32) + call void @finch.drop.S_ast_Type(ptr %a21) + call void @finch_str_drop(ptr %a10) + ret %S.gen.Val %t484 +endif5617: + %t485 = load { ptr, i64, i64 }, ptr %a10 + store { ptr, i64, i64 } %t485, ptr %a486 + store { ptr, i64, i64 } { ptr @.str.3616, i64 4, i64 0 }, ptr %a487 + %t488 = call i32 @finch_str_eq(ptr %a486, ptr %a487) + %t489 = icmp ne i32 %t488, 0 + br label %logic.from5627 +logic.from5627: + br i1 %t489, label %logic.end5629, label %logic.rhs5628 +logic.rhs5628: + %t490 = load { ptr, i64, i64 }, ptr %a10 + store { ptr, i64, i64 } %t490, ptr %a491 + store { ptr, i64, i64 } { ptr @.str.3617, i64 6, i64 0 }, ptr %a492 + %t493 = call i32 @finch_str_eq(ptr %a491, ptr %a492) + %t494 = icmp ne i32 %t493, 0 + br label %logic.rend5630 +logic.rend5630: + br label %logic.end5629 +logic.end5629: + %t495 = phi i1 [ true, %logic.from5627 ], [ %t494, %logic.rend5630 ] + br i1 %t495, label %then5631, label %endif5633 +then5631: %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.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.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.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 - store { ptr, i64, i64 } %t512, ptr %a515 - store { ptr, i64, i64 } %t513, ptr %a516 - 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.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 - store { ptr, i64, i64 } %t521, 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 - %t527 = call { ptr, i64, i64 } @finch.gen.op(ptr %t501, { ptr, i64, i64 } %t526) - %t528 = load ptr, ptr %a1 - %t529 = load { ptr, i64, i64 }, ptr %a468 - %t530 = load %S.ast.Type, ptr %a4 - %t531 = load i64, ptr %a342 - %t532 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t528, { ptr, i64, i64 } %t529, %S.ast.Type %t530, i64 %t531) - %t533 = load %S.ast.Type, ptr %a347 - call void @finch.gen.copyAt(ptr %t500, { ptr, i64, i64 } %t527, { ptr, i64, i64 } %t532, %S.ast.Type %t533) - %t534 = load ptr, ptr %a1 - %t535 = load ptr, ptr %a1 - %t536 = load { ptr, i64, i64 }, ptr %a499 - 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.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.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) - %t549 = load ptr, ptr %a1 - %t550 = load { ptr, i64, i64 }, ptr %a474 - call void @finch.gen.label(ptr %t549, { ptr, i64, i64 } %t550) - %t551 = load ptr, ptr %a1 - %t552 = load { ptr, i64, i64 }, ptr %a457 - 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.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 - call void @finch.copy.S_ast_Type(ptr %a559, ptr %a558) - %t560 = load %S.ast.Type, ptr %a559 - %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 -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.3488, i64 21, i64 0 }, ptr %a567 + %t497 = load %S.ast.Node, ptr %a2 + %t498 = load { ptr, i64, i64 }, ptr %a10 + call void @finch.gen.checkArgs(ptr %t496, %S.ast.Node %t497, i64 1, i64 0, { ptr, i64, i64 } %t498) + store i64 1, ptr %a499 + %t500 = load %S.ast.Type, ptr %a21 + store %S.ast.Type %t500, ptr %a501 + call void @finch.copy.S_ast_Type(ptr %a502, ptr %a501) + %t503 = load %S.ast.Type, ptr %a502 + store %S.ast.Type %t503, ptr %a504 + %t505 = load { ptr, i64, i64 }, ptr %a10 + store { ptr, i64, i64 } %t505, ptr %a506 + store { ptr, i64, i64 } { ptr @.str.3618, i64 6, i64 0 }, ptr %a507 + %t508 = call i32 @finch_str_eq(ptr %a506, ptr %a507) + %t509 = icmp ne i32 %t508, 0 + br i1 %t509, label %then5634, label %endif5636 +then5634: + store i64 2, ptr %a499 + %t510 = load %S.ast.Type, ptr %a32 + store %S.ast.Type %t510, ptr %a511 + call void @finch.copy.S_ast_Type(ptr %a512, ptr %a511) + %t513 = load %S.ast.Type, ptr %a512 + %t514 = load %S.ast.Type, ptr %a504 + store %S.ast.Type %t513, ptr %a504 + store %S.ast.Type %t514, ptr %a515 + call void @finch.drop.S_ast_Type(ptr %a515) + br label %endif5636 +endif5636: + %t516 = load %S.ast.Type, ptr %a504 + %t517 = call %S.ast.Type @finch.ast.arrayOf(%S.ast.Type %t516) + store %S.ast.Type %t517, ptr %a518 + %t519 = load ptr, ptr %a1 + %t520 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t519, { ptr, i64, i64 } { ptr @.str.3619, i64 17, i64 0 }) + store { ptr, i64, i64 } %t520, ptr %a521 + %t522 = load ptr, ptr %a1 + %t523 = load { ptr, i64, i64 }, ptr %a521 + call void @finch.gen.store(ptr %t522, { ptr, i64, i64 } { ptr @.str.3620, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.3621, i64 15, i64 0 }, { ptr, i64, i64 } %t523) + %t524 = load ptr, ptr %a1 + %t525 = load ptr, ptr %a1 + %t526 = load ptr, ptr %a1 + %t527 = load %S.ast.Type, ptr %a4 + %t528 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t526, %S.ast.Type %t527) + store { ptr, i64, i64 } { ptr @.str.3623, i64 23, i64 0 }, ptr %a530 + store { ptr, i64, i64 } %t528, ptr %a531 + call void @finch_str_concat(ptr %a529, ptr %a530, ptr %a531) + store { ptr, i64, i64 } %t528, ptr %a532 + call void @finch_str_drop(ptr %a532) + %t533 = load { ptr, i64, i64 }, ptr %a529 + store { ptr, i64, i64 } %t533, ptr %a535 + store { ptr, i64, i64 } { ptr @.str.3624, i64 6, i64 0 }, ptr %a536 + call void @finch_str_concat(ptr %a534, ptr %a535, ptr %a536) + store { ptr, i64, i64 } %t533, ptr %a537 + call void @finch_str_drop(ptr %a537) + %t538 = load { ptr, i64, i64 }, ptr %a534 + %t539 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t538, ptr %a541 + store { ptr, i64, i64 } %t539, ptr %a542 + call void @finch_str_concat(ptr %a540, ptr %a541, ptr %a542) + store { ptr, i64, i64 } %t538, ptr %a543 + call void @finch_str_drop(ptr %a543) + %t544 = load { ptr, i64, i64 }, ptr %a540 + store { ptr, i64, i64 } %t544, ptr %a546 + store { ptr, i64, i64 } { ptr @.str.3625, i64 14, i64 0 }, ptr %a547 + call void @finch_str_concat(ptr %a545, ptr %a546, ptr %a547) + store { ptr, i64, i64 } %t544, ptr %a548 + call void @finch_str_drop(ptr %a548) + %t549 = load { ptr, i64, i64 }, ptr %a545 + %t550 = call { ptr, i64, i64 } @finch.gen.op(ptr %t525, { ptr, i64, i64 } %t549) + store { ptr, i64, i64 } %t549, ptr %a551 + call void @finch_str_drop(ptr %a551) + %t552 = call { ptr, i64, i64 } @finch.gen.load(ptr %t524, { ptr, i64, i64 } { ptr @.str.3622, i64 3, i64 0 }, { ptr, i64, i64 } %t550) + store { ptr, i64, i64 } %t550, ptr %a553 + call void @finch_str_drop(ptr %a553) + store { ptr, i64, i64 } %t552, ptr %a554 + %t555 = load ptr, ptr %a1 + %t556 = load { ptr, i64, i64 }, ptr %a521 + store { ptr, i64, i64 } { ptr @.str.3626, i64 30, i64 0 }, ptr %a558 + store { ptr, i64, i64 } %t556, ptr %a559 + call void @finch_str_concat(ptr %a557, ptr %a558, ptr %a559) + %t560 = load { ptr, i64, i64 }, ptr %a557 + store { ptr, i64, i64 } %t560, ptr %a562 + store { ptr, i64, i64 } { ptr @.str.3627, i64 6, i64 0 }, ptr %a563 + call void @finch_str_concat(ptr %a561, ptr %a562, ptr %a563) + store { ptr, i64, i64 } %t560, ptr %a564 + call void @finch_str_drop(ptr %a564) + %t565 = load { ptr, i64, i64 }, ptr %a561 + %t566 = load { ptr, i64, i64 }, ptr %a554 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.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) + store { ptr, i64, i64 } %t566, ptr %a569 + call void @finch_str_concat(ptr %a567, ptr %a568, ptr %a569) + store { ptr, i64, i64 } %t565, ptr %a570 + call void @finch_str_drop(ptr %a570) + %t571 = load { ptr, i64, i64 }, ptr %a567 + store { ptr, i64, i64 } %t571, ptr %a573 + store { ptr, i64, i64 } { ptr @.str.3628, i64 6, i64 0 }, ptr %a574 + call void @finch_str_concat(ptr %a572, ptr %a573, ptr %a574) + store { ptr, i64, i64 } %t571, ptr %a575 + call void @finch_str_drop(ptr %a575) + %t576 = load { ptr, i64, i64 }, ptr %a572 + %t577 = load ptr, ptr %a1 + %t578 = load %S.ast.Type, ptr %a504 + %t579 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t577, %S.ast.Type %t578) + store { ptr, i64, i64 } %t576, ptr %a581 + store { ptr, i64, i64 } %t579, ptr %a582 + call void @finch_str_concat(ptr %a580, ptr %a581, ptr %a582) + store { ptr, i64, i64 } %t576, ptr %a583 + call void @finch_str_drop(ptr %a583) + store { ptr, i64, i64 } %t579, ptr %a584 + call void @finch_str_drop(ptr %a584) + %t585 = load { ptr, i64, i64 }, ptr %a580 + store { ptr, i64, i64 } %t585, ptr %a587 + store { ptr, i64, i64 } { ptr @.str.3629, i64 1, i64 0 }, ptr %a588 + call void @finch_str_concat(ptr %a586, ptr %a587, ptr %a588) + store { ptr, i64, i64 } %t585, ptr %a589 + call void @finch_str_drop(ptr %a589) + %t590 = load { ptr, i64, i64 }, ptr %a586 + call void @finch.gen.emit(ptr %t555, { ptr, i64, i64 } %t590) + store { ptr, i64, i64 } %t590, ptr %a591 + call void @finch_str_drop(ptr %a591) + %t592 = load ptr, ptr %a1 + %t593 = load { ptr, i64, i64 }, ptr %a521 + %t594 = call { ptr, i64, i64 } @finch.gen.load(ptr %t592, { ptr, i64, i64 } { ptr @.str.3630, i64 3, i64 0 }, { ptr, i64, i64 } %t593) + store { ptr, i64, i64 } %t594, ptr %a595 + %t596 = load ptr, ptr %a1 + %t597 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t596, { ptr, i64, i64 } { ptr @.str.3631, i64 3, i64 0 }) + store { ptr, i64, i64 } %t597, ptr %a598 + %t599 = load ptr, ptr %a1 + %t600 = load { ptr, i64, i64 }, ptr %a598 + call void @finch.gen.store(ptr %t599, { ptr, i64, i64 } { ptr @.str.3632, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.3633, i64 1, i64 0 }, { ptr, i64, i64 } %t600) + %t601 = load ptr, ptr %a1 + %t602 = load ptr, ptr %a1 + %t603 = load ptr, ptr %a1 + %t604 = load %S.ast.Type, ptr %a4 + %t605 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t603, %S.ast.Type %t604) + store { ptr, i64, i64 } { ptr @.str.3635, i64 23, i64 0 }, ptr %a607 + store { ptr, i64, i64 } %t605, ptr %a608 + call void @finch_str_concat(ptr %a606, ptr %a607, ptr %a608) + store { ptr, i64, i64 } %t605, ptr %a609 + call void @finch_str_drop(ptr %a609) + %t610 = load { ptr, i64, i64 }, ptr %a606 + store { ptr, i64, i64 } %t610, ptr %a612 + store { ptr, i64, i64 } { ptr @.str.3636, i64 6, i64 0 }, ptr %a613 + call void @finch_str_concat(ptr %a611, ptr %a612, ptr %a613) + store { ptr, i64, i64 } %t610, ptr %a614 + call void @finch_str_drop(ptr %a614) + %t615 = load { ptr, i64, i64 }, ptr %a611 + %t616 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t615, ptr %a618 + store { ptr, i64, i64 } %t616, ptr %a619 + call void @finch_str_concat(ptr %a617, ptr %a618, ptr %a619) + store { ptr, i64, i64 } %t615, ptr %a620 + call void @finch_str_drop(ptr %a620) + %t621 = load { ptr, i64, i64 }, ptr %a617 + store { ptr, i64, i64 } %t621, ptr %a623 + store { ptr, i64, i64 } { ptr @.str.3637, i64 14, i64 0 }, ptr %a624 + call void @finch_str_concat(ptr %a622, ptr %a623, ptr %a624) + store { ptr, i64, i64 } %t621, ptr %a625 + call void @finch_str_drop(ptr %a625) + %t626 = load { ptr, i64, i64 }, ptr %a622 + %t627 = call { ptr, i64, i64 } @finch.gen.op(ptr %t602, { ptr, i64, i64 } %t626) + store { ptr, i64, i64 } %t626, ptr %a628 + call void @finch_str_drop(ptr %a628) + %t629 = call { ptr, i64, i64 } @finch.gen.load(ptr %t601, { ptr, i64, i64 } { ptr @.str.3634, i64 3, i64 0 }, { ptr, i64, i64 } %t627) + store { ptr, i64, i64 } %t627, ptr %a630 + call void @finch_str_drop(ptr %a630) + store { ptr, i64, i64 } %t629, ptr %a631 + %t632 = load ptr, ptr %a1 + %t633 = load { ptr, i64, i64 }, ptr %a631 + %t634 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t632, { ptr, i64, i64 } %t633) + store { ptr, i64, i64 } %t634, ptr %a635 + %t636 = load ptr, ptr %a1 + %t637 = load { ptr, i64, i64 }, ptr %a3 + %t638 = load %S.ast.Type, ptr %a4 + %t639 = load { ptr, i64, i64 }, ptr %a635 + %t640 = extractvalue { ptr, i64, i64 } %t639, 1 + %t641 = icmp uge i64 3, %t640 + br i1 %t641, label %range5637, label %inrange5638 +range5637: + call void @finch_panic_index(ptr @.str.3638, i64 2926, i64 3, i64 %t640) + unreachable +inrange5638: + %t642 = extractvalue { ptr, i64, i64 } %t639, 0 + %t643 = getelementptr inbounds { ptr, i64, i64 }, ptr %t642, i64 3 + %t644 = load { ptr, i64, i64 }, ptr %t643 + %t645 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t636, { ptr, i64, i64 } %t637, %S.ast.Type %t638, { ptr, i64, i64 } %t644) + store { ptr, i64, i64 } %t645, ptr %a646 + %t647 = load ptr, ptr %a1 + %t648 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t647, { ptr, i64, i64 } { ptr @.str.3639, i64 10, i64 0 }) + store { ptr, i64, i64 } %t648, ptr %a649 + %t650 = load ptr, ptr %a1 + %t651 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t650, { ptr, i64, i64 } { ptr @.str.3640, i64 10, i64 0 }) + store { ptr, i64, i64 } %t651, ptr %a652 + %t653 = load ptr, ptr %a1 + %t654 = load ptr, ptr %a1 + %t655 = load ptr, ptr %a1 + %t656 = load ptr, ptr %a1 + %t657 = load { ptr, i64, i64 }, ptr %a646 + %t658 = load %S.ast.Type, ptr %a4 + %t659 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t656, { ptr, i64, i64 } %t657, %S.ast.Type %t658, i64 0) + %t660 = call { ptr, i64, i64 } @finch.gen.load(ptr %t655, { ptr, i64, i64 } { ptr @.str.3642, i64 3, i64 0 }, { ptr, i64, i64 } %t659) + store { ptr, i64, i64 } %t659, ptr %a661 + call void @finch_str_drop(ptr %a661) + store { ptr, i64, i64 } { ptr @.str.3641, i64 12, i64 0 }, ptr %a663 + store { ptr, i64, i64 } %t660, ptr %a664 + call void @finch_str_concat(ptr %a662, ptr %a663, ptr %a664) + store { ptr, i64, i64 } %t660, ptr %a665 + call void @finch_str_drop(ptr %a665) + %t666 = load { ptr, i64, i64 }, ptr %a662 + store { ptr, i64, i64 } %t666, ptr %a668 + store { ptr, i64, i64 } { ptr @.str.3643, i64 3, i64 0 }, ptr %a669 + call void @finch_str_concat(ptr %a667, ptr %a668, ptr %a669) + store { ptr, i64, i64 } %t666, ptr %a670 + call void @finch_str_drop(ptr %a670) + %t671 = load { ptr, i64, i64 }, ptr %a667 + %t672 = call { ptr, i64, i64 } @finch.gen.op(ptr %t654, { ptr, i64, i64 } %t671) + store { ptr, i64, i64 } %t671, ptr %a673 + call void @finch_str_drop(ptr %a673) + %t674 = load { ptr, i64, i64 }, ptr %a649 + %t675 = load { ptr, i64, i64 }, ptr %a652 + call void @finch.gen.condBr(ptr %t653, { ptr, i64, i64 } %t672, { ptr, i64, i64 } %t674, { ptr, i64, i64 } %t675) + store { ptr, i64, i64 } %t672, ptr %a676 + call void @finch_str_drop(ptr %a676) + %t677 = load ptr, ptr %a1 + %t678 = load { ptr, i64, i64 }, ptr %a649 + call void @finch.gen.label(ptr %t677, { ptr, i64, i64 } %t678) + %t679 = load ptr, ptr %a1 + %t680 = load { ptr, i64, i64 }, ptr %a598 + %t681 = call { ptr, i64, i64 } @finch.gen.load(ptr %t679, { ptr, i64, i64 } { ptr @.str.3644, i64 3, i64 0 }, { ptr, i64, i64 } %t680) + store { ptr, i64, i64 } %t681, ptr %a682 + %t683 = load ptr, ptr %a1 + %t684 = load ptr, ptr %a1 + %t685 = load ptr, ptr %a1 + %t686 = load %S.ast.Type, ptr %a504 + %t687 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t685, %S.ast.Type %t686) + store { ptr, i64, i64 } { ptr @.str.3645, i64 23, i64 0 }, ptr %a689 + store { ptr, i64, i64 } %t687, ptr %a690 + call void @finch_str_concat(ptr %a688, ptr %a689, ptr %a690) + store { ptr, i64, i64 } %t687, ptr %a691 + call void @finch_str_drop(ptr %a691) + %t692 = load { ptr, i64, i64 }, ptr %a688 + store { ptr, i64, i64 } %t692, ptr %a694 + store { ptr, i64, i64 } { ptr @.str.3646, i64 6, i64 0 }, ptr %a695 + call void @finch_str_concat(ptr %a693, ptr %a694, ptr %a695) + store { ptr, i64, i64 } %t692, ptr %a696 + call void @finch_str_drop(ptr %a696) + %t697 = load { ptr, i64, i64 }, ptr %a693 + %t698 = load { ptr, i64, i64 }, ptr %a595 + 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) + store { ptr, i64, i64 } %t697, ptr %a702 + call void @finch_str_drop(ptr %a702) + %t703 = load { ptr, i64, i64 }, ptr %a699 + store { ptr, i64, i64 } %t703, ptr %a705 + store { ptr, i64, i64 } { ptr @.str.3647, i64 6, i64 0 }, ptr %a706 + call void @finch_str_concat(ptr %a704, ptr %a705, ptr %a706) + store { ptr, i64, i64 } %t703, ptr %a707 + call void @finch_str_drop(ptr %a707) + %t708 = load { ptr, i64, i64 }, ptr %a704 + %t709 = load { ptr, i64, i64 }, ptr %a682 + store { ptr, i64, i64 } %t708, ptr %a711 + store { ptr, i64, i64 } %t709, ptr %a712 + call void @finch_str_concat(ptr %a710, ptr %a711, ptr %a712) + store { ptr, i64, i64 } %t708, ptr %a713 + call void @finch_str_drop(ptr %a713) + %t714 = load { ptr, i64, i64 }, ptr %a710 + %t715 = call { ptr, i64, i64 } @finch.gen.op(ptr %t684, { ptr, i64, i64 } %t714) + store { ptr, i64, i64 } %t714, ptr %a716 + call void @finch_str_drop(ptr %a716) + %t717 = load ptr, ptr %a1 + %t718 = load { ptr, i64, i64 }, ptr %a646 + %t719 = load %S.ast.Type, ptr %a4 + %t720 = load i64, ptr %a499 + %t721 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t717, { ptr, i64, i64 } %t718, %S.ast.Type %t719, i64 %t720) + %t722 = load %S.ast.Type, ptr %a504 + call void @finch.gen.copyAt(ptr %t683, { ptr, i64, i64 } %t715, { ptr, i64, i64 } %t721, %S.ast.Type %t722) + store { ptr, i64, i64 } %t715, ptr %a723 + call void @finch_str_drop(ptr %a723) + store { ptr, i64, i64 } %t721, ptr %a724 + call void @finch_str_drop(ptr %a724) + %t725 = load ptr, ptr %a1 + %t726 = load ptr, ptr %a1 + %t727 = load { ptr, i64, i64 }, ptr %a682 + store { ptr, i64, i64 } { ptr @.str.3649, i64 8, i64 0 }, ptr %a729 + store { ptr, i64, i64 } %t727, ptr %a730 + call void @finch_str_concat(ptr %a728, ptr %a729, ptr %a730) + %t731 = load { ptr, i64, i64 }, ptr %a728 + store { ptr, i64, i64 } %t731, ptr %a733 + store { ptr, i64, i64 } { ptr @.str.3650, i64 3, i64 0 }, ptr %a734 + call void @finch_str_concat(ptr %a732, ptr %a733, ptr %a734) + store { ptr, i64, i64 } %t731, ptr %a735 + call void @finch_str_drop(ptr %a735) + %t736 = load { ptr, i64, i64 }, ptr %a732 + %t737 = call { ptr, i64, i64 } @finch.gen.op(ptr %t726, { ptr, i64, i64 } %t736) + store { ptr, i64, i64 } %t736, ptr %a738 + call void @finch_str_drop(ptr %a738) + %t739 = load { ptr, i64, i64 }, ptr %a598 + call void @finch.gen.store(ptr %t725, { ptr, i64, i64 } { ptr @.str.3648, i64 3, i64 0 }, { ptr, i64, i64 } %t737, { ptr, i64, i64 } %t739) + store { ptr, i64, i64 } %t737, ptr %a740 + call void @finch_str_drop(ptr %a740) + %t741 = load ptr, ptr %a1 + %t742 = load { ptr, i64, i64 }, ptr %a652 + call void @finch.gen.br(ptr %t741, { ptr, i64, i64 } %t742) + %t743 = load ptr, ptr %a1 + %t744 = load { ptr, i64, i64 }, ptr %a652 + call void @finch.gen.label(ptr %t743, { ptr, i64, i64 } %t744) + %t745 = load ptr, ptr %a1 + %t746 = load { ptr, i64, i64 }, ptr %a635 + call void @finch.gen.loopEnd(ptr %t745, { ptr, i64, i64 } %t746) + %t747 = load ptr, ptr %a1 + %t748 = load { ptr, i64, i64 }, ptr %a521 + %t749 = call { ptr, i64, i64 } @finch.gen.load(ptr %t747, { ptr, i64, i64 } { ptr @.str.3651, i64 17, i64 0 }, { ptr, i64, i64 } %t748) + %t750 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t749, 0 + %t751 = load %S.ast.Type, ptr %a518 + store %S.ast.Type %t751, ptr %a752 + call void @finch.copy.S_ast_Type(ptr %a753, ptr %a752) + %t754 = load %S.ast.Type, ptr %a753 + %t755 = insertvalue %S.gen.Val %t750, %S.ast.Type %t754, 1 + %t756 = insertvalue %S.gen.Val %t755, i1 true, 2 + call void @finch_str_drop(ptr %a682) + call void @finch_str_drop(ptr %a652) + call void @finch_str_drop(ptr %a649) + call void @finch_str_drop(ptr %a646) + call void @finch.drop.arr_str(ptr %a635) + call void @finch_str_drop(ptr %a631) + call void @finch_str_drop(ptr %a598) + call void @finch_str_drop(ptr %a595) + call void @finch_str_drop(ptr %a554) + call void @finch_str_drop(ptr %a521) + call void @finch.drop.S_ast_Type(ptr %a518) + call void @finch.drop.S_ast_Type(ptr %a504) + call void @finch.drop.S_ast_Type(ptr %a32) + call void @finch.drop.S_ast_Type(ptr %a21) + call void @finch_str_drop(ptr %a10) + ret %S.gen.Val %t756 +endif5633: + %t757 = load ptr, ptr %a1 + %t758 = load %S.ast.Node, ptr %a2 + %t759 = load { ptr, i64, i64 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.3652, i64 21, i64 0 }, ptr %a761 + store { ptr, i64, i64 } %t759, ptr %a762 + call void @finch_str_concat(ptr %a760, ptr %a761, ptr %a762) + %t763 = load { ptr, i64, i64 }, ptr %a760 + store { ptr, i64, i64 } %t763, ptr %a765 + store { ptr, i64, i64 } { ptr @.str.3653, i64 49, i64 0 }, ptr %a766 + call void @finch_str_concat(ptr %a764, ptr %a765, ptr %a766) + store { ptr, i64, i64 } %t763, ptr %a767 + call void @finch_str_drop(ptr %a767) + %t768 = load { ptr, i64, i64 }, ptr %a764 + call void @finch.gen.fail(ptr %t757, %S.ast.Node %t758, { ptr, i64, i64 } %t768) + store { ptr, i64, i64 } %t768, ptr %a769 + call void @finch_str_drop(ptr %a769) + call void @finch.drop.S_ast_Type(ptr %a32) + call void @finch.drop.S_ast_Type(ptr %a21) + call void @finch_str_drop(ptr %a10) ret %S.gen.Val zeroinitializer } @@ -48743,71 +57901,79 @@ entry: %a71 = alloca { ptr, i64, i64 }, align 16 %a72 = alloca { ptr, i64, i64 }, align 16 %a73 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 + %a74 = 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 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = 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 %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 %a94 = alloca { ptr, i64, i64 }, align 16 %a95 = alloca { ptr, i64, i64 }, align 16 %a96 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca %S.ast.Type, align 16 - %a111 = alloca %S.ast.Type, align 16 + %a97 = 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 + %a102 = alloca { ptr, i64, i64 }, align 16 + %a104 = alloca { ptr, i64, i64 }, align 16 + %a113 = alloca { ptr, i64, i64 }, align 16 + %a117 = alloca %S.ast.Type, align 16 + %a118 = alloca %S.ast.Type, align 16 + %a129 = alloca %S.gen.Val, align 16 store ptr %p0, ptr %a1 store %S.ast.Node %p1, ptr %a2 store %S.ast.Type %p2, ptr %a3 %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.3490, i64 4, i64 0 }, ptr %a7 + store { ptr, i64, i64 } { ptr @.str.3654, 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.from5274 -logic.from5274: - br i1 %t9, label %logic.rhs5275, label %logic.end5276 -logic.rhs5275: + br label %logic.from5639 +logic.from5639: + br i1 %t9, label %logic.rhs5640, label %logic.end5641 +logic.rhs5640: %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.3491, i64 3, i64 0 }, ptr %a13 + store { ptr, i64, i64 } { ptr @.str.3655, 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.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: + br label %logic.rend5642 +logic.rend5642: + br label %logic.end5641 +logic.end5641: + %t16 = phi i1 [ false, %logic.from5639 ], [ %t15, %logic.rend5642 ] + br label %logic.from5643 +logic.from5643: + br i1 %t16, label %logic.rhs5644, label %logic.end5645 +logic.rhs5644: %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.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: + br label %logic.rend5646 +logic.rend5646: + br label %logic.end5645 +logic.end5645: + %t22 = phi i1 [ false, %logic.from5643 ], [ %t21, %logic.rend5646 ] + br i1 %t22, label %then5647, label %endif5649 +then5647: %t23 = load ptr, ptr %a1 %t24 = icmp eq ptr %t23, null - br i1 %t24, label %panic5285, label %ok5286 -panic5285: - call void @finch_panic(ptr @.str.3492, i64 2701, ptr @.str.3493) + br i1 %t24, label %panic5650, label %ok5651 +panic5650: + call void @finch_panic(ptr @.str.3656, i64 2948, ptr @.str.3657) unreachable -ok5286: - %t25 = getelementptr inbounds %S.gen.Gen, ptr %t23, i32 0, i32 20 +ok5651: + %t25 = getelementptr inbounds %S.gen.Gen, ptr %t23, i32 0, i32 21 %t26 = load ptr, ptr %a1 %t27 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 3 %t28 = load { ptr, i64, i64 }, ptr %t27 @@ -48817,11 +57983,11 @@ ok5286: %t32 = load { ptr, i64, i64 }, ptr %t25 %t33 = extractvalue { ptr, i64, i64 } %t32, 1 %t34 = icmp uge i64 %t31, %t33 - br i1 %t34, label %range5287, label %inrange5288 -range5287: - call void @finch_panic_index(ptr @.str.3494, i64 2701, i64 %t31, i64 %t33) + br i1 %t34, label %range5652, label %inrange5653 +range5652: + call void @finch_panic_index(ptr @.str.3658, i64 2948, i64 %t31, i64 %t33) unreachable -inrange5288: +inrange5653: %t35 = extractvalue { ptr, i64, i64 } %t32, 0 %t36 = getelementptr inbounds %S.gen.EnumDef, ptr %t35, i64 %t31 %t37 = load %S.gen.EnumDef, ptr %t36 @@ -48837,103 +58003,120 @@ inrange5288: %t47 = load i64, ptr %t43 %t48 = load ptr, ptr %t42 store i64 0, ptr %a49 - br label %find.cond5289 -find.cond5289: + br label %find.cond5654 +find.cond5654: %t50 = load i64, ptr %a49 %t51 = icmp slt i64 %t50, %t47 - br i1 %t51, label %find.body5290, label %find.end5293 -find.body5290: + br i1 %t51, label %find.body5655, label %find.end5658 +find.body5655: %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.hit5291, label %find.next5292 -find.hit5291: + br i1 %t57, label %find.hit5656, label %find.next5657 +find.hit5656: store i64 %t50, ptr %a46 - br label %find.end5293 -find.next5292: + br label %find.end5658 +find.next5657: %t58 = add i64 %t50, 1 store i64 %t58, ptr %a49 - br label %find.cond5289 -find.end5293: + br label %find.cond5654 +find.end5658: %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 %then5294, label %endif5296 -then5294: + br i1 %t62, label %then5659, label %endif5661 +then5659: %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.3495, i64 1, i64 0 }, ptr %a68 + store { ptr, i64, i64 } { ptr @.str.3659, 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.3496, i64 22, i64 0 }, ptr %a73 + store { ptr, i64, i64 } { ptr @.str.3660, 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 - %t76 = load { ptr, i64, i64 }, ptr %t75 - store { ptr, i64, i64 } %t74, 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.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.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 - 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.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 %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 %range5297, label %inrange5298 -range5297: - call void @finch_panic_index(ptr @.str.3500, i64 2706, i64 %t99, i64 %t101) + store { ptr, i64, i64 } %t70, ptr %a74 + call void @finch_str_drop(ptr %a74) + %t75 = load { ptr, i64, i64 }, ptr %a71 + %t76 = getelementptr inbounds %S.gen.EnumDef, ptr %a41, i32 0, i32 1 + %t77 = load { ptr, i64, i64 }, ptr %t76 + store { ptr, i64, i64 } %t75, ptr %a79 + store { ptr, i64, i64 } %t77, ptr %a80 + call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) + store { ptr, i64, i64 } %t75, ptr %a81 + call void @finch_str_drop(ptr %a81) + %t82 = load { ptr, i64, i64 }, ptr %a78 + store { ptr, i64, i64 } %t82, ptr %a84 + store { ptr, i64, i64 } { ptr @.str.3661, i64 10, i64 0 }, ptr %a85 + call void @finch_str_concat(ptr %a83, ptr %a84, ptr %a85) + store { ptr, i64, i64 } %t82, ptr %a86 + call void @finch_str_drop(ptr %a86) + %t87 = load { ptr, i64, i64 }, ptr %a83 + %t88 = getelementptr inbounds %S.gen.EnumDef, ptr %a41, i32 0, i32 2 + %t89 = getelementptr inbounds { ptr, i64, i64 }, ptr %t88, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.3662, i64 2, i64 0 }, ptr %a90 + call void @finch_str_join(ptr %a91, ptr %t88, ptr %a90) + %t92 = load { ptr, i64, i64 }, ptr %a91 + store { ptr, i64, i64 } %t87, ptr %a94 + store { ptr, i64, i64 } %t92, ptr %a95 + call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) + store { ptr, i64, i64 } %t87, ptr %a96 + call void @finch_str_drop(ptr %a96) + store { ptr, i64, i64 } %t92, ptr %a97 + call void @finch_str_drop(ptr %a97) + %t98 = load { ptr, i64, i64 }, ptr %a93 + store { ptr, i64, i64 } %t98, ptr %a100 + store { ptr, i64, i64 } { ptr @.str.3663, i64 1, i64 0 }, ptr %a101 + call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) + store { ptr, i64, i64 } %t98, ptr %a102 + call void @finch_str_drop(ptr %a102) + %t103 = load { ptr, i64, i64 }, ptr %a99 + call void @finch.gen.fail(ptr %t63, %S.ast.Node %t64, { ptr, i64, i64 } %t103) + store { ptr, i64, i64 } %t103, ptr %a104 + call void @finch_str_drop(ptr %a104) + br label %endif5661 +endif5661: + %t105 = getelementptr inbounds %S.gen.EnumDef, ptr %a41, i32 0, i32 3 + %t106 = load i64, ptr %a60 + %t107 = load { ptr, i64, i64 }, ptr %t105 + %t108 = extractvalue { ptr, i64, i64 } %t107, 1 + %t109 = icmp uge i64 %t106, %t108 + br i1 %t109, label %range5662, label %inrange5663 +range5662: + call void @finch_panic_index(ptr @.str.3664, i64 2953, i64 %t106, i64 %t108) unreachable -inrange5298: - %t103 = extractvalue { ptr, i64, i64 } %t100, 0 - %t104 = getelementptr inbounds i64, ptr %t103, i64 %t99 - %t105 = load i64, ptr %t104 - call void @finch_str_from_int(ptr %a106, i64 %t105) - %t107 = load { ptr, i64, i64 }, ptr %a106 - %t108 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t107, 0 - %t109 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t109, ptr %a110 - call void @finch.copy.S_ast_Type(ptr %a111, ptr %a110) - %t112 = load %S.ast.Type, ptr %a111 - %t113 = insertvalue %S.gen.Val %t108, %S.ast.Type %t112, 1 - ret %S.gen.Val %t113 -endif5284: - %t114 = load ptr, ptr %a1 - %t115 = load ptr, ptr %a1 - %t116 = load %S.ast.Node, ptr %a2 - %t117 = load %S.ast.Type, ptr %a3 - %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.3501, i64 12, i64 0 }) - ret %S.gen.Val %t121 +inrange5663: + %t110 = extractvalue { ptr, i64, i64 } %t107, 0 + %t111 = getelementptr inbounds i64, ptr %t110, i64 %t106 + %t112 = load i64, ptr %t111 + call void @finch_str_from_int(ptr %a113, i64 %t112) + %t114 = load { ptr, i64, i64 }, ptr %a113 + %t115 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t114, 0 + %t116 = load %S.ast.Type, ptr %a3 + store %S.ast.Type %t116, ptr %a117 + call void @finch.copy.S_ast_Type(ptr %a118, ptr %a117) + %t119 = load %S.ast.Type, ptr %a118 + %t120 = insertvalue %S.gen.Val %t115, %S.ast.Type %t119, 1 + call void @finch.drop.S_gen_EnumDef(ptr %a41) + ret %S.gen.Val %t120 +endif5649: + %t121 = load ptr, ptr %a1 + %t122 = load ptr, ptr %a1 + %t123 = load %S.ast.Node, ptr %a2 + %t124 = load %S.ast.Type, ptr %a3 + %t125 = call %S.gen.Val @finch.gen.exprWant(ptr %t122, %S.ast.Node %t123, %S.ast.Type %t124) + %t126 = load %S.ast.Type, ptr %a3 + %t127 = load %S.ast.Node, ptr %a2 + %t128 = call %S.gen.Val @finch.gen.coerce(ptr %t121, %S.gen.Val %t125, %S.ast.Type %t126, %S.ast.Node %t127, { ptr, i64, i64 } { ptr @.str.3665, i64 12, i64 0 }) + store %S.gen.Val %t125, ptr %a129 + call void @finch.drop.S_gen_Val(ptr %a129) + ret %S.gen.Val %t128 } define internal %S.gen.Val @finch.gen.matchGen(ptr %p0, %S.ast.Node %p1, i1 %p2) { @@ -48949,94 +58132,110 @@ entry: %a23 = alloca { ptr, i64, i64 }, align 16 %a28 = alloca { ptr, i64, i64 }, align 16 %a29 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca i1, align 16 - %a45 = alloca i1, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca %S.ast.Type, align 16 - %a55 = alloca i64, align 16 - %a57 = alloca i64, align 16 - %a69 = alloca %S.ast.Node, align 16 - %a70 = alloca %S.ast.Node, align 16 - %a72 = alloca %S.ast.Node, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca i64, align 16 - %a113 = alloca %S.gen.Val, align 16 - %a117 = alloca i64, align 16 - %a120 = alloca i64, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 + %a46 = alloca i64, align 16 + %a51 = alloca { ptr, i64, i64 }, align 16 + %a52 = alloca i1, align 16 + %a53 = alloca i1, align 16 + %a54 = alloca { ptr, i64, i64 }, align 16 + %a55 = alloca { ptr, i64, i64 }, align 16 + %a56 = alloca { ptr, i64, i64 }, align 16 + %a58 = alloca %S.ast.Type, align 16 + %a63 = alloca i64, align 16 + %a65 = alloca i64, align 16 + %a77 = alloca %S.ast.Node, align 16 + %a78 = alloca %S.ast.Node, align 16 + %a80 = alloca %S.ast.Node, align 16 + %a86 = alloca { ptr, i64, i64 }, align 16 + %a89 = 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 + %a108 = alloca i64, align 16 + %a121 = alloca %S.gen.Val, align 16 + %a125 = alloca i64, align 16 + %a128 = alloca i64, align 16 + %a133 = alloca { ptr, i64, i64 }, align 16 %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca %S.gen.Val, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca %S.ast.Node, align 16 - %a201 = alloca %S.ast.Node, align 16 - %a203 = alloca %S.ast.Node, align 16 - %a208 = alloca %S.gen.Val, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 + %a142 = alloca { ptr, i64, i64 }, align 16 + %a143 = alloca { ptr, i64, i64 }, align 16 + %a158 = alloca { ptr, i64, i64 }, align 16 + %a159 = alloca { ptr, i64, i64 }, align 16 + %a176 = alloca %S.gen.Val, align 16 + %a189 = alloca { ptr, i64, i64 }, align 16 + %a208 = alloca %S.ast.Node, align 16 + %a209 = alloca %S.ast.Node, align 16 + %a211 = alloca %S.ast.Node, align 16 + %a216 = alloca %S.gen.Val, align 16 %a221 = alloca { ptr, i64, i64 }, align 16 %a222 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 %a229 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca %S.ast.Type, align 16 - %a238 = alloca %S.ast.Type, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 + %a230 = alloca { ptr, i64, i64 }, align 16 + %a236 = alloca { ptr, i64, i64 }, align 16 + %a237 = alloca { ptr, i64, i64 }, align 16 + %a245 = alloca %S.ast.Type, align 16 + %a246 = alloca %S.ast.Type, align 16 + %a249 = alloca %S.ast.Type, align 16 + %a256 = alloca %S.gen.Val, align 16 + %a260 = alloca { ptr, i64, i64 }, align 16 + %a263 = alloca { ptr, i64, i64 }, align 16 + %a270 = alloca { ptr, i64, i64 }, align 16 + %a271 = alloca { ptr, i64, i64 }, align 16 %a279 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca %S.gen.EnumDef, align 16 - %a324 = alloca %S.gen.EnumDef, align 16 - %a326 = alloca %S.gen.EnumDef, align 16 - %a327 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca i64, align 16 - %a343 = alloca { ptr, i64, i64 }, align 16 - %a345 = alloca i64, align 16 - %a348 = alloca i64, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 - %a354 = alloca { ptr, i64, i64 }, align 16 + %a280 = alloca { ptr, i64, i64 }, align 16 + %a290 = alloca { ptr, i64, i64 }, align 16 + %a291 = alloca { ptr, i64, i64 }, align 16 + %a316 = alloca { ptr, i64, i64 }, align 16 + %a317 = alloca { ptr, i64, i64 }, align 16 + %a335 = alloca %S.gen.EnumDef, align 16 + %a336 = alloca %S.gen.EnumDef, align 16 + %a338 = alloca %S.gen.EnumDef, align 16 + %a339 = alloca { ptr, i64, i64 }, align 16 + %a343 = alloca i64, align 16 + %a355 = alloca { ptr, i64, i64 }, align 16 + %a357 = alloca i64, align 16 + %a360 = alloca 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 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a390 = 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 - %a400 = alloca { ptr, i64, i64 }, align 16 + %a383 = alloca { ptr, i64, i64 }, align 16 + %a384 = alloca { ptr, i64, i64 }, align 16 + %a398 = alloca { ptr, i64, i64 }, align 16 + %a399 = 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 - %a405 = alloca { ptr, i64, i64 }, align 16 %a406 = 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 { 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 - %a442 = alloca { ptr, i64, i64 }, align 16 - %a447 = alloca %S.ast.Type, align 16 - %a448 = alloca %S.ast.Type, 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 + %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 + %a421 = alloca { ptr, i64, i64 }, align 16 + %a422 = alloca { ptr, i64, i64 }, align 16 + %a423 = alloca { ptr, i64, i64 }, align 16 + %a424 = alloca { ptr, i64, i64 }, align 16 + %a426 = 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 + %a453 = 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 + %a458 = alloca { ptr, i64, i64 }, align 16 + %a463 = alloca { ptr, i64, i64 }, align 16 + %a464 = alloca { ptr, i64, i64 }, align 16 + %a465 = alloca { ptr, i64, i64 }, align 16 + %a466 = alloca { ptr, i64, i64 }, align 16 + %a467 = alloca { ptr, i64, i64 }, align 16 + %a470 = alloca { ptr, i64, i64 }, align 16 + %a473 = alloca %S.ast.Type, align 16 + %a474 = alloca %S.ast.Type, align 16 + %a481 = alloca %S.gen.Val, align 16 store ptr %p0, ptr %a1 store %S.ast.Node %p1, ptr %a2 store i1 %p2, ptr %a3 @@ -49045,11 +58244,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 %range5299, label %inrange5300 -range5299: - call void @finch_panic_index(ptr @.str.3502, i64 2714, i64 0, i64 %t7) + br i1 %t8, label %range5664, label %inrange5665 +range5664: + call void @finch_panic_index(ptr @.str.3666, i64 2961, i64 0, i64 %t7) unreachable -inrange5300: +inrange5665: %t9 = extractvalue { ptr, i64, i64 } %t6, 0 %t10 = getelementptr inbounds %S.ast.Node, ptr %t9, i64 0 %t11 = load %S.ast.Node, ptr %t10 @@ -49064,713 +58263,802 @@ inrange5300: %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.3503, i64 4, i64 0 }, ptr %a23 + store { ptr, i64, i64 } { ptr @.str.3667, 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.from5301 -logic.from5301: - br i1 %t25, label %logic.end5303, label %logic.rhs5302 -logic.rhs5302: + br label %logic.from5666 +logic.from5666: + br i1 %t25, label %logic.end5668, label %logic.rhs5667 +logic.rhs5667: %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.3504, i64 4, i64 0 }, ptr %a29 + store { ptr, i64, i64 } { ptr @.str.3668, 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.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: + br label %logic.rend5669 +logic.rend5669: + br label %logic.end5668 +logic.end5668: + %t32 = phi i1 [ true, %logic.from5666 ], [ %t31, %logic.rend5669 ] + br i1 %t32, label %then5670, label %endif5672 +then5670: %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 %range5308, label %inrange5309 -range5308: - call void @finch_panic_index(ptr @.str.3505, i64 2717, i64 0, i64 %t36) + br i1 %t37, label %range5673, label %inrange5674 +range5673: + call void @finch_panic_index(ptr @.str.3669, i64 2964, i64 0, i64 %t36) unreachable -inrange5309: +inrange5674: %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.3506, i64 30, i64 0 }) - br label %endif5307 -endif5307: + call void @finch.gen.fail(ptr %t33, %S.ast.Node %t40, { ptr, i64, i64 } { ptr @.str.3670, i64 30, i64 0 }) + br label %endif5672 +endif5672: %t41 = load ptr, ptr %a1 - %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.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 - %t53 = load i64, ptr %t52 - %t54 = sub i64 %t53, 1 - store i64 %t54, ptr %a55 - %t56 = load i64, ptr %a55 - store i64 0, ptr %a57 - br label %for.cond5310 -for.cond5310: - %t58 = load i64, ptr %a57 - %t59 = icmp slt i64 %t58, %t56 - 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 %range5314, label %inrange5315 -range5314: - call void @finch_panic_index(ptr @.str.3509, i64 2728, i64 %t62, i64 %t64) + %t42 = icmp eq ptr %t41, null + br i1 %t42, label %panic5675, label %ok5676 +panic5675: + call void @finch_panic(ptr @.str.3671, i64 2966, ptr @.str.3672) unreachable -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 - store %S.ast.Node %t68, ptr %a69 - call void @finch.copy.S_ast_Node(ptr %a70, ptr %a69) - %t71 = load %S.ast.Node, ptr %a70 - store %S.ast.Node %t71, ptr %a72 - %t73 = load i1, ptr %a44 - 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.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.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.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 %then5319, label %else5320 -then5319: - store i1 true, ptr %a44 +ok5676: + %t43 = getelementptr inbounds %S.gen.Gen, ptr %t41, i32 0, i32 11 + %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t43, i32 0, i32 1 + %t45 = load i64, ptr %t44 + store i64 %t45, ptr %a46 + %t47 = load ptr, ptr %a1 + %t48 = load %S.gen.Val, ptr %a13 + call void @finch.gen.hold(ptr %t47, %S.gen.Val %t48) + %t49 = load ptr, ptr %a1 + %t50 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t49, { ptr, i64, i64 } { ptr @.str.3673, i64 9, i64 0 }) + store { ptr, i64, i64 } %t50, ptr %a51 + store i1 false, ptr %a52 + store i1 false, ptr %a53 + store { ptr, i64, i64 } zeroinitializer, ptr %a54 + store { ptr, i64, i64 } zeroinitializer, ptr %a55 + store { ptr, i64, i64 } zeroinitializer, ptr %a56 + %t57 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3674, i64 4, i64 0 }) + store %S.ast.Type %t57, ptr %a58 + %t59 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t60 = getelementptr inbounds { ptr, i64, i64 }, ptr %t59, i32 0, i32 1 + %t61 = load i64, ptr %t60 + %t62 = sub i64 %t61, 1 + store i64 %t62, ptr %a63 + %t64 = load i64, ptr %a63 + store i64 0, ptr %a65 + br label %for.cond5677 +for.cond5677: + %t66 = load i64, ptr %a65 + %t67 = icmp slt i64 %t66, %t64 + br i1 %t67, label %for.body5678, label %for.end5680 +for.body5678: + %t68 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t69 = load i64, ptr %a65 + %t70 = add i64 1, %t69 + %t71 = load { ptr, i64, i64 }, ptr %t68 + %t72 = extractvalue { ptr, i64, i64 } %t71, 1 + %t73 = icmp uge i64 %t70, %t72 + br i1 %t73, label %range5681, label %inrange5682 +range5681: + call void @finch_panic_index(ptr @.str.3675, i64 2977, i64 %t70, i64 %t72) + unreachable +inrange5682: + %t74 = extractvalue { ptr, i64, i64 } %t71, 0 + %t75 = getelementptr inbounds %S.ast.Node, ptr %t74, i64 %t70 + %t76 = load %S.ast.Node, ptr %t75 + store %S.ast.Node %t76, ptr %a77 + call void @finch.copy.S_ast_Node(ptr %a78, ptr %a77) + %t79 = load %S.ast.Node, ptr %a78 + store %S.ast.Node %t79, ptr %a80 + %t81 = load i1, ptr %a52 + br i1 %t81, label %then5683, label %endif5685 +then5683: + %t82 = load ptr, ptr %a1 + %t83 = load %S.ast.Node, ptr %a80 + call void @finch.gen.fail(ptr %t82, %S.ast.Node %t83, { ptr, i64, i64 } { ptr @.str.3676, i64 72, i64 0 }) + br label %endif5685 +endif5685: %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 %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 %range5322, label %inrange5323 -range5322: - call void @finch_panic_index(ptr @.str.3513, i64 2738, i64 0, i64 %t88) + %t85 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t84, { ptr, i64, i64 } { ptr @.str.3677, i64 9, i64 0 }) + store { ptr, i64, i64 } %t85, ptr %a86 + %t87 = load ptr, ptr %a1 + %t88 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t87, { ptr, i64, i64 } { ptr @.str.3678, i64 10, i64 0 }) + store { ptr, i64, i64 } %t88, ptr %a89 + %t90 = getelementptr inbounds %S.ast.Node, ptr %a80, i32 0, i32 6 + %t91 = load i1, ptr %t90 + br i1 %t91, label %then5686, label %else5687 +then5686: + store i1 true, ptr %a52 + %t92 = load ptr, ptr %a1 + %t93 = load { ptr, i64, i64 }, ptr %a86 + call void @finch.gen.br(ptr %t92, { ptr, i64, i64 } %t93) + br label %endif5688 +else5687: + %t94 = getelementptr inbounds %S.ast.Node, ptr %a80, i32 0, i32 9 + %t95 = load { ptr, i64, i64 }, ptr %t94 + %t96 = extractvalue { ptr, i64, i64 } %t95, 1 + %t97 = icmp uge i64 0, %t96 + br i1 %t97, label %range5689, label %inrange5690 +range5689: + call void @finch_panic_index(ptr @.str.3679, i64 2987, i64 0, i64 %t96) unreachable -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 - %t93 = load { ptr, i64, i64 }, ptr %t92 - store { ptr, i64, i64 } %t93, ptr %a94 - call void @finch.copy.arr_S_ast_Node(ptr %a95, ptr %a94) - %t96 = load { ptr, i64, i64 }, ptr %a95 - store { ptr, i64, i64 } %t96, ptr %a97 - %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.cond5324 -for.cond5324: - %t101 = load i64, ptr %a100 - %t102 = icmp slt i64 %t101, %t99 - 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 %range5328, label %inrange5329 -range5328: - call void @finch_panic_index(ptr @.str.3514, i64 2740, i64 %t104, i64 %t106) +inrange5690: + %t98 = extractvalue { ptr, i64, i64 } %t95, 0 + %t99 = getelementptr inbounds %S.ast.Node, ptr %t98, i64 0 + %t100 = getelementptr inbounds %S.ast.Node, ptr %t99, i32 0, i32 9 + %t101 = load { ptr, i64, i64 }, ptr %t100 + store { ptr, i64, i64 } %t101, ptr %a102 + call void @finch.copy.arr_S_ast_Node(ptr %a103, ptr %a102) + %t104 = load { ptr, i64, i64 }, ptr %a103 + store { ptr, i64, i64 } %t104, ptr %a105 + %t106 = getelementptr inbounds { ptr, i64, i64 }, ptr %a105, i32 0, i32 1 + %t107 = load i64, ptr %t106 + store i64 0, ptr %a108 + br label %for.cond5691 +for.cond5691: + %t109 = load i64, ptr %a108 + %t110 = icmp slt i64 %t109, %t107 + br i1 %t110, label %for.body5692, label %for.end5694 +for.body5692: + %t111 = load ptr, ptr %a1 + %t112 = load i64, ptr %a108 + %t113 = load { ptr, i64, i64 }, ptr %a105 + %t114 = extractvalue { ptr, i64, i64 } %t113, 1 + %t115 = icmp uge i64 %t112, %t114 + br i1 %t115, label %range5695, label %inrange5696 +range5695: + call void @finch_panic_index(ptr @.str.3680, i64 2989, i64 %t112, i64 %t114) unreachable -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 - %t111 = load %S.ast.Type, ptr %a19 - %t112 = call %S.gen.Val @finch.gen.patternValue(ptr %t103, %S.ast.Node %t110, %S.ast.Type %t111) - store %S.gen.Val %t112, ptr %a113 - %t114 = getelementptr inbounds { ptr, i64, i64 }, ptr %a46, i32 0, i32 1 - %t115 = getelementptr inbounds %S.gen.Val, ptr %a113, i32 0, i32 0 - %t116 = load { ptr, i64, i64 }, ptr %t115 - store i64 -1, ptr %a117 - %t118 = load i64, ptr %t114 - %t119 = load ptr, ptr %a46 - store i64 0, ptr %a120 - br label %find.cond5330 -find.cond5330: - %t121 = load i64, ptr %a120 - %t122 = icmp slt i64 %t121, %t118 - br i1 %t122, label %find.body5331, label %find.end5334 -find.body5331: - %t123 = getelementptr inbounds { ptr, i64, i64 }, ptr %t119, i64 %t121 +inrange5696: + %t116 = extractvalue { ptr, i64, i64 } %t113, 0 + %t117 = getelementptr inbounds %S.ast.Node, ptr %t116, i64 %t112 + %t118 = load %S.ast.Node, ptr %t117 + %t119 = load %S.ast.Type, ptr %a19 + %t120 = call %S.gen.Val @finch.gen.patternValue(ptr %t111, %S.ast.Node %t118, %S.ast.Type %t119) + store %S.gen.Val %t120, ptr %a121 + %t122 = getelementptr inbounds { ptr, i64, i64 }, ptr %a54, i32 0, i32 1 + %t123 = getelementptr inbounds %S.gen.Val, ptr %a121, i32 0, i32 0 %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.hit5332, label %find.next5333 -find.hit5332: - store i64 %t121, ptr %a117 - br label %find.end5334 -find.next5333: - %t129 = add i64 %t121, 1 - store i64 %t129, ptr %a120 - br label %find.cond5330 -find.end5334: - %t130 = load i64, ptr %a117 - %t131 = icmp sge i64 %t130, 0 - 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.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.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 %range5342, label %inrange5343 -range5342: - call void @finch_panic_index(ptr @.str.3516, i64 2742, i64 %t140, i64 %t142) + store i64 -1, ptr %a125 + %t126 = load i64, ptr %t122 + %t127 = load ptr, ptr %a54 + store i64 0, ptr %a128 + br label %find.cond5697 +find.cond5697: + %t129 = load i64, ptr %a128 + %t130 = icmp slt i64 %t129, %t126 + br i1 %t130, label %find.body5698, label %find.end5701 +find.body5698: + %t131 = getelementptr inbounds { ptr, i64, i64 }, ptr %t127, i64 %t129 + %t132 = load { ptr, i64, i64 }, ptr %t131 + store { ptr, i64, i64 } %t132, ptr %a133 + store { ptr, i64, i64 } %t124, ptr %a134 + %t135 = call i32 @finch_str_eq(ptr %a133, ptr %a134) + %t136 = icmp ne i32 %t135, 0 + br i1 %t136, label %find.hit5699, label %find.next5700 +find.hit5699: + store i64 %t129, ptr %a125 + br label %find.end5701 +find.next5700: + %t137 = add i64 %t129, 1 + store i64 %t137, ptr %a128 + br label %find.cond5697 +find.end5701: + %t138 = load i64, ptr %a125 + %t139 = icmp sge i64 %t138, 0 + br label %logic.from5702 +logic.from5702: + br i1 %t139, label %logic.rhs5703, label %logic.end5704 +logic.rhs5703: + %t140 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 0 + %t141 = load { ptr, i64, i64 }, ptr %t140 + store { ptr, i64, i64 } %t141, ptr %a142 + store { ptr, i64, i64 } { ptr @.str.3681, i64 4, i64 0 }, ptr %a143 + %t144 = call i32 @finch_str_eq(ptr %a142, ptr %a143) + %t145 = icmp ne i32 %t144, 0 + br label %logic.rend5705 +logic.rend5705: + br label %logic.end5704 +logic.end5704: + %t146 = phi i1 [ false, %logic.from5702 ], [ %t145, %logic.rend5705 ] + br i1 %t146, label %then5706, label %endif5708 +then5706: + %t147 = load ptr, ptr %a1 + %t148 = load i64, ptr %a108 + %t149 = load { ptr, i64, i64 }, ptr %a105 + %t150 = extractvalue { ptr, i64, i64 } %t149, 1 + %t151 = icmp uge i64 %t148, %t150 + br i1 %t151, label %range5709, label %inrange5710 +range5709: + call void @finch_panic_index(ptr @.str.3682, i64 2991, i64 %t148, i64 %t150) unreachable -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.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 - store { ptr, i64, i64 } %t149, ptr %a150 - call void @finch_str_copy(ptr %a151, ptr %a150) - %t152 = load { ptr, i64, i64 }, ptr %a151 - %t153 = load i64, ptr %t147 - %t154 = add i64 %t153, 1 - call void @finch_arr_reserve(ptr %a46, i64 %t154, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t155 = load ptr, ptr %a46 - %t156 = getelementptr inbounds { ptr, i64, i64 }, ptr %t155, i64 %t153 - store { ptr, i64, i64 } %t152, ptr %t156 - store i64 %t154, ptr %t147 - %t157 = load ptr, ptr %a1 - %t158 = load %S.gen.Val, ptr %a13 - %t159 = load %S.gen.Val, ptr %a113 - %t160 = load i64, ptr %a100 - %t161 = load { ptr, i64, i64 }, ptr %a97 - %t162 = extractvalue { ptr, i64, i64 } %t161, 1 - %t163 = icmp uge i64 %t160, %t162 - br i1 %t163, label %range5344, label %inrange5345 -range5344: - call void @finch_panic_index(ptr @.str.3519, i64 2745, i64 %t160, i64 %t162) +inrange5710: + %t152 = extractvalue { ptr, i64, i64 } %t149, 0 + %t153 = getelementptr inbounds %S.ast.Node, ptr %t152, i64 %t148 + %t154 = load %S.ast.Node, ptr %t153 + call void @finch.gen.fail(ptr %t147, %S.ast.Node %t154, { ptr, i64, i64 } { ptr @.str.3683, i64 49, i64 0 }) + br label %endif5708 +endif5708: + %t155 = getelementptr inbounds { ptr, i64, i64 }, ptr %a54, i32 0, i32 1 + %t156 = getelementptr inbounds %S.gen.Val, ptr %a121, i32 0, i32 0 + %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 = load i64, ptr %t155 + %t162 = add i64 %t161, 1 + call void @finch_arr_reserve(ptr %a54, i64 %t162, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t163 = load ptr, ptr %a54 + %t164 = getelementptr inbounds { ptr, i64, i64 }, ptr %t163, i64 %t161 + store { ptr, i64, i64 } %t160, ptr %t164 + store i64 %t162, ptr %t155 + %t165 = load ptr, ptr %a1 + %t166 = load %S.gen.Val, ptr %a13 + %t167 = load %S.gen.Val, ptr %a121 + %t168 = load i64, ptr %a108 + %t169 = load { ptr, i64, i64 }, ptr %a105 + %t170 = extractvalue { ptr, i64, i64 } %t169, 1 + %t171 = icmp uge i64 %t168, %t170 + br i1 %t171, label %range5711, label %inrange5712 +range5711: + call void @finch_panic_index(ptr @.str.3685, i64 2994, i64 %t168, i64 %t170) unreachable -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.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 %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 %endif5348 -else5347: - %t179 = load ptr, ptr %a1 - %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 +inrange5712: + %t172 = extractvalue { ptr, i64, i64 } %t169, 0 + %t173 = getelementptr inbounds %S.ast.Node, ptr %t172, i64 %t168 + %t174 = load %S.ast.Node, ptr %t173 + %t175 = call %S.gen.Val @finch.gen.compare(ptr %t165, { ptr, i64, i64 } { ptr @.str.3684, i64 2, i64 0 }, %S.gen.Val %t166, %S.gen.Val %t167, %S.ast.Node %t174) + store %S.gen.Val %t175, ptr %a176 + %t177 = load i64, ptr %a108 + %t178 = getelementptr inbounds { ptr, i64, i64 }, ptr %a105, i32 0, i32 1 + %t179 = load i64, ptr %t178 + %t180 = sub i64 %t179, 1 + %t181 = icmp eq i64 %t177, %t180 + br i1 %t181, label %then5713, label %else5714 +then5713: %t182 = load ptr, ptr %a1 - %t183 = getelementptr inbounds %S.gen.Val, ptr %a168, i32 0, i32 0 + %t183 = getelementptr inbounds %S.gen.Val, ptr %a176, i32 0, i32 0 %t184 = load { ptr, i64, i64 }, ptr %t183 - %t185 = load { ptr, i64, i64 }, ptr %a78 - %t186 = load { ptr, i64, i64 }, ptr %a181 + %t185 = load { ptr, i64, i64 }, ptr %a86 + %t186 = load { ptr, i64, i64 }, ptr %a89 call void @finch.gen.condBr(ptr %t182, { ptr, i64, i64 } %t184, { ptr, i64, i64 } %t185, { ptr, i64, i64 } %t186) + br label %endif5715 +else5714: %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 %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.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) - %t193 = getelementptr inbounds %S.ast.Node, ptr %a72, i32 0, i32 9 - %t194 = load { ptr, i64, i64 }, ptr %t193 - %t195 = extractvalue { ptr, i64, i64 } %t194, 1 - %t196 = icmp uge i64 1, %t195 - br i1 %t196, label %range5349, label %inrange5350 -range5349: - call void @finch_panic_index(ptr @.str.3521, i64 2756, i64 1, i64 %t195) + %t188 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t187, { ptr, i64, i64 } { ptr @.str.3686, i64 8, i64 0 }) + store { ptr, i64, i64 } %t188, ptr %a189 + %t190 = load ptr, ptr %a1 + %t191 = getelementptr inbounds %S.gen.Val, ptr %a176, i32 0, i32 0 + %t192 = load { ptr, i64, i64 }, ptr %t191 + %t193 = load { ptr, i64, i64 }, ptr %a86 + %t194 = load { ptr, i64, i64 }, ptr %a189 + call void @finch.gen.condBr(ptr %t190, { ptr, i64, i64 } %t192, { ptr, i64, i64 } %t193, { ptr, i64, i64 } %t194) + %t195 = load ptr, ptr %a1 + %t196 = load { ptr, i64, i64 }, ptr %a189 + call void @finch.gen.label(ptr %t195, { ptr, i64, i64 } %t196) + call void @finch_str_drop(ptr %a189) + br label %endif5715 +endif5715: + call void @finch.drop.S_gen_Val(ptr %a176) + call void @finch.drop.S_gen_Val(ptr %a121) + br label %for.step5693 +for.step5693: + %t197 = load i64, ptr %a108 + %t198 = add i64 %t197, 1 + store i64 %t198, ptr %a108 + br label %for.cond5691 +for.end5694: + call void @finch.drop.arr_S_ast_Node(ptr %a105) + br label %endif5688 +endif5688: + %t199 = load ptr, ptr %a1 + %t200 = load { ptr, i64, i64 }, ptr %a86 + call void @finch.gen.label(ptr %t199, { ptr, i64, i64 } %t200) + %t201 = getelementptr inbounds %S.ast.Node, ptr %a80, i32 0, i32 9 + %t202 = load { ptr, i64, i64 }, ptr %t201 + %t203 = extractvalue { ptr, i64, i64 } %t202, 1 + %t204 = icmp uge i64 1, %t203 + br i1 %t204, label %range5716, label %inrange5717 +range5716: + call void @finch_panic_index(ptr @.str.3687, i64 3005, i64 1, i64 %t203) unreachable -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 - store %S.ast.Node %t199, ptr %a200 - call void @finch.copy.S_ast_Node(ptr %a201, ptr %a200) - %t202 = load %S.ast.Node, ptr %a201 - store %S.ast.Node %t202, ptr %a203 - %t204 = load i1, ptr %a3 - 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.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.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.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 +inrange5717: + %t205 = extractvalue { ptr, i64, i64 } %t202, 0 + %t206 = getelementptr inbounds %S.ast.Node, ptr %t205, i64 1 + %t207 = load %S.ast.Node, ptr %t206 + store %S.ast.Node %t207, ptr %a208 + call void @finch.copy.S_ast_Node(ptr %a209, ptr %a208) + %t210 = load %S.ast.Node, ptr %a209 + store %S.ast.Node %t210, ptr %a211 + %t212 = load i1, ptr %a3 + br i1 %t212, label %then5718, label %else5719 +then5718: + %t213 = load ptr, ptr %a1 + %t214 = load %S.ast.Node, ptr %a211 + %t215 = call %S.gen.Val @finch.gen.expr(ptr %t213, %S.ast.Node %t214) + store %S.gen.Val %t215, ptr %a216 + %t217 = load i64, ptr %a65 + %t218 = icmp eq i64 %t217, 0 + br label %logic.from5721 +logic.from5721: + br i1 %t218, label %logic.end5723, label %logic.rhs5722 +logic.rhs5722: + %t219 = getelementptr inbounds %S.ast.Type, ptr %a58, i32 0, i32 0 %t220 = load { ptr, i64, i64 }, ptr %t219 store { ptr, i64, i64 } %t220, ptr %a221 - store { ptr, i64, i64 } { ptr @.str.3523, i64 4, i64 0 }, ptr %a222 + store { ptr, i64, i64 } { ptr @.str.3688, 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.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.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.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.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 %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.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.3527, i64 10, i64 0 }) - store { ptr, i64, i64 } %t250, ptr %a251 - %t252 = load ptr, ptr %a1 - %t253 = load { ptr, i64, i64 }, ptr %a251 - call void @finch.gen.br(ptr %t252, { ptr, i64, i64 } %t253) - %t254 = load ptr, ptr %a1 - %t255 = load { ptr, i64, i64 }, ptr %a251 - call void @finch.gen.label(ptr %t254, { ptr, i64, i64 } %t255) - %t256 = getelementptr inbounds { ptr, i64, i64 }, ptr %a47, i32 0, i32 1 - %t257 = load { ptr, i64, i64 }, ptr %a248 - store { ptr, i64, i64 } %t257, ptr %a258 - call void @finch_str_copy(ptr %a259, ptr %a258) - %t260 = load { ptr, i64, i64 }, ptr %a259 - %t261 = load i64, ptr %t256 - %t262 = add i64 %t261, 1 - call void @finch_arr_reserve(ptr %a47, i64 %t262, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t263 = load ptr, ptr %a47 - %t264 = getelementptr inbounds { ptr, i64, i64 }, ptr %t263, i64 %t261 - store { ptr, i64, i64 } %t260, ptr %t264 - store i64 %t262, ptr %t256 - %t265 = getelementptr inbounds { ptr, i64, i64 }, ptr %a48, i32 0, i32 1 - %t266 = load { ptr, i64, i64 }, ptr %a251 - store { ptr, i64, i64 } %t266, ptr %a267 - call void @finch_str_copy(ptr %a268, ptr %a267) - %t269 = load { ptr, i64, i64 }, ptr %a268 - %t270 = load i64, ptr %t265 - %t271 = add i64 %t270, 1 - call void @finch_arr_reserve(ptr %a48, i64 %t271, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t272 = load ptr, ptr %a48 - %t273 = getelementptr inbounds { ptr, i64, i64 }, ptr %t272, i64 %t270 - store { ptr, i64, i64 } %t269, ptr %t273 - store i64 %t271, ptr %t265 - %t274 = load ptr, ptr %a1 - %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 %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.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 %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 %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 %endif5370 -endif5370: + br label %logic.rend5724 +logic.rend5724: + br label %logic.end5723 +logic.end5723: + %t225 = phi i1 [ true, %logic.from5721 ], [ %t224, %logic.rend5724 ] + br i1 %t225, label %then5725, label %endif5727 +then5725: + %t226 = getelementptr inbounds %S.gen.Val, ptr %a216, i32 0, i32 1 + %t227 = getelementptr inbounds %S.ast.Type, ptr %t226, i32 0, i32 0 + %t228 = load { ptr, i64, i64 }, ptr %t227 + store { ptr, i64, i64 } %t228, ptr %a229 + store { ptr, i64, i64 } { ptr @.str.3689, i64 4, i64 0 }, ptr %a230 + %t231 = call i32 @finch_str_eq(ptr %a229, ptr %a230) + %t232 = icmp ne i32 %t231, 0 + br label %logic.from5728 +logic.from5728: + br i1 %t232, label %logic.end5730, label %logic.rhs5729 +logic.rhs5729: + %t233 = getelementptr inbounds %S.gen.Val, ptr %a216, i32 0, i32 1 + %t234 = getelementptr inbounds %S.ast.Type, ptr %t233, i32 0, i32 0 + %t235 = load { ptr, i64, i64 }, ptr %t234 + store { ptr, i64, i64 } %t235, ptr %a236 + store { ptr, i64, i64 } { ptr @.str.3690, i64 4, i64 0 }, ptr %a237 + %t238 = call i32 @finch_str_eq(ptr %a236, ptr %a237) + %t239 = icmp ne i32 %t238, 0 + br label %logic.rend5731 +logic.rend5731: + br label %logic.end5730 +logic.end5730: + %t240 = phi i1 [ true, %logic.from5728 ], [ %t239, %logic.rend5731 ] + br i1 %t240, label %then5732, label %endif5734 +then5732: + %t241 = load ptr, ptr %a1 + %t242 = load %S.ast.Node, ptr %a211 + call void @finch.gen.fail(ptr %t241, %S.ast.Node %t242, { ptr, i64, i64 } { ptr @.str.3691, i64 52, i64 0 }) + br label %endif5734 +endif5734: + %t243 = getelementptr inbounds %S.gen.Val, ptr %a216, i32 0, i32 1 + %t244 = load %S.ast.Type, ptr %t243 + store %S.ast.Type %t244, ptr %a245 + call void @finch.copy.S_ast_Type(ptr %a246, ptr %a245) + %t247 = load %S.ast.Type, ptr %a246 + %t248 = load %S.ast.Type, ptr %a58 + store %S.ast.Type %t247, ptr %a58 + store %S.ast.Type %t248, ptr %a249 + call void @finch.drop.S_ast_Type(ptr %a249) + br label %endif5727 +endif5727: + %t250 = load ptr, ptr %a1 + %t251 = load %S.gen.Val, ptr %a216 + %t252 = load %S.ast.Type, ptr %a58 + %t253 = load %S.ast.Node, ptr %a211 + %t254 = call %S.gen.Val @finch.gen.coerce(ptr %t250, %S.gen.Val %t251, %S.ast.Type %t252, %S.ast.Node %t253, { ptr, i64, i64 } { ptr @.str.3692, i64 57, i64 0 }) + %t255 = load %S.gen.Val, ptr %a216 + store %S.gen.Val %t254, ptr %a216 + store %S.gen.Val %t255, ptr %a256 + call void @finch.drop.S_gen_Val(ptr %a256) + %t257 = load ptr, ptr %a1 + %t258 = load %S.gen.Val, ptr %a216 + %t259 = call { ptr, i64, i64 } @finch.gen.own(ptr %t257, %S.gen.Val %t258) + store { ptr, i64, i64 } %t259, ptr %a260 + %t261 = load ptr, ptr %a1 + %t262 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t261, { ptr, i64, i64 } { ptr @.str.3693, i64 10, i64 0 }) + store { ptr, i64, i64 } %t262, ptr %a263 + %t264 = load ptr, ptr %a1 + %t265 = load { ptr, i64, i64 }, ptr %a263 + call void @finch.gen.br(ptr %t264, { ptr, i64, i64 } %t265) + %t266 = load ptr, ptr %a1 + %t267 = load { ptr, i64, i64 }, ptr %a263 + call void @finch.gen.label(ptr %t266, { ptr, i64, i64 } %t267) + %t268 = getelementptr inbounds { ptr, i64, i64 }, ptr %a55, i32 0, i32 1 + %t269 = load { ptr, i64, i64 }, ptr %a260 + store { ptr, i64, i64 } %t269, ptr %a270 + call void @finch_str_copy(ptr %a271, ptr %a270) + %t272 = load { ptr, i64, i64 }, ptr %a271 + %t273 = load i64, ptr %t268 + %t274 = add i64 %t273, 1 + call void @finch_arr_reserve(ptr %a55, i64 %t274, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t275 = load ptr, ptr %a55 + %t276 = getelementptr inbounds { ptr, i64, i64 }, ptr %t275, i64 %t273 + store { ptr, i64, i64 } %t272, ptr %t276 + store i64 %t274, ptr %t268 + %t277 = getelementptr inbounds { ptr, i64, i64 }, ptr %a56, i32 0, i32 1 + %t278 = load { ptr, i64, i64 }, ptr %a263 + store { ptr, i64, i64 } %t278, ptr %a279 + call void @finch_str_copy(ptr %a280, ptr %a279) + %t281 = load { ptr, i64, i64 }, ptr %a280 + %t282 = load i64, ptr %t277 + %t283 = add i64 %t282, 1 + call void @finch_arr_reserve(ptr %a56, i64 %t283, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t284 = load ptr, ptr %a56 + %t285 = getelementptr inbounds { ptr, i64, i64 }, ptr %t284, i64 %t282 + store { ptr, i64, i64 } %t281, ptr %t285 + store i64 %t283, ptr %t277 %t286 = load ptr, ptr %a1 - %t287 = icmp eq ptr %t286, null - br i1 %t287, label %panic5371, label %ok5372 -panic5371: - call void @finch_panic(ptr @.str.3529, i64 2780, ptr @.str.3530) - unreachable -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 %then5373, label %endif5375 -then5373: - store i1 true, ptr %a45 - 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 %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 %then5376, label %endif5378 -then5376: + %t287 = load { ptr, i64, i64 }, ptr %a51 + call void @finch.gen.br(ptr %t286, { ptr, i64, i64 } %t287) + store i1 true, ptr %a53 + call void @finch_str_drop(ptr %a263) + call void @finch_str_drop(ptr %a260) + call void @finch.drop.S_gen_Val(ptr %a216) + br label %endif5720 +else5719: + %t288 = getelementptr inbounds %S.ast.Node, ptr %a211, i32 0, i32 0 + %t289 = load { ptr, i64, i64 }, ptr %t288 + store { ptr, i64, i64 } %t289, ptr %a290 + store { ptr, i64, i64 } { ptr @.str.3694, i64 5, i64 0 }, ptr %a291 + %t292 = call i32 @finch_str_eq(ptr %a290, ptr %a291) + %t293 = icmp ne i32 %t292, 0 + br i1 %t293, label %then5735, label %else5736 +then5735: + %t294 = load ptr, ptr %a1 + %t295 = load %S.ast.Node, ptr %a211 + call void @finch.gen.block(ptr %t294, %S.ast.Node %t295, i1 true) + br label %endif5737 +else5736: %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 %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.cond5310 -for.end5313: - %t300 = load i1, ptr %a44 - %t301 = xor i1 %t300, true - 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.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 %then5382, label %else5383 -then5382: + %t297 = load %S.ast.Node, ptr %a211 + call void @finch.gen.stmt(ptr %t296, %S.ast.Node %t297) + br label %endif5737 +endif5737: + %t298 = load ptr, ptr %a1 + %t299 = icmp eq ptr %t298, null + br i1 %t299, label %panic5738, label %ok5739 +panic5738: + call void @finch_panic(ptr @.str.3695, i64 3029, ptr @.str.3696) + unreachable +ok5739: + %t300 = getelementptr inbounds %S.gen.Gen, ptr %t298, i32 0, i32 9 + %t301 = load i1, ptr %t300 + %t302 = xor i1 %t301, true + br i1 %t302, label %then5740, label %endif5742 +then5740: + store i1 true, ptr %a53 + br label %endif5742 +endif5742: + %t303 = load ptr, ptr %a1 + %t304 = load { ptr, i64, i64 }, ptr %a51 + call void @finch.gen.br(ptr %t303, { ptr, i64, i64 } %t304) + br label %endif5720 +endif5720: + %t305 = getelementptr inbounds %S.ast.Node, ptr %a80, i32 0, i32 6 + %t306 = load i1, ptr %t305 + %t307 = xor i1 %t306, true + br i1 %t307, label %then5743, label %endif5745 +then5743: %t308 = load ptr, ptr %a1 - %t309 = icmp eq ptr %t308, null - br i1 %t309, label %panic5385, label %ok5386 -panic5385: - call void @finch_panic(ptr @.str.3532, i64 2791, ptr @.str.3533) - unreachable -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 - %t313 = load { ptr, i64, i64 }, ptr %t312 - %t314 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 2 + %t309 = load { ptr, i64, i64 }, ptr %a89 + call void @finch.gen.label(ptr %t308, { ptr, i64, i64 } %t309) + br label %endif5745 +endif5745: + call void @finch.drop.S_ast_Node(ptr %a211) + call void @finch_str_drop(ptr %a89) + call void @finch_str_drop(ptr %a86) + call void @finch.drop.S_ast_Node(ptr %a80) + br label %for.step5679 +for.step5679: + %t310 = load i64, ptr %a65 + %t311 = add i64 %t310, 1 + store i64 %t311, ptr %a65 + br label %for.cond5677 +for.end5680: + %t312 = load i1, ptr %a52 + %t313 = xor i1 %t312, true + br i1 %t313, label %then5746, label %endif5748 +then5746: + %t314 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 0 %t315 = load { ptr, i64, i64 }, ptr %t314 - %t316 = call i64 @finch.gen.findEnum(ptr %t311, { ptr, i64, i64 } %t313, { ptr, i64, i64 } %t315) - %t317 = load { ptr, i64, i64 }, ptr %t310 - %t318 = extractvalue { ptr, i64, i64 } %t317, 1 - %t319 = icmp uge i64 %t316, %t318 - br i1 %t319, label %range5387, label %inrange5388 -range5387: - call void @finch_panic_index(ptr @.str.3534, i64 2791, i64 %t316, i64 %t318) + store { ptr, i64, i64 } %t315, ptr %a316 + store { ptr, i64, i64 } { ptr @.str.3697, i64 4, i64 0 }, ptr %a317 + %t318 = call i32 @finch_str_eq(ptr %a316, ptr %a317) + %t319 = icmp ne i32 %t318, 0 + br i1 %t319, label %then5749, label %else5750 +then5749: + %t320 = load ptr, ptr %a1 + %t321 = icmp eq ptr %t320, null + br i1 %t321, label %panic5752, label %ok5753 +panic5752: + call void @finch_panic(ptr @.str.3698, i64 3040, ptr @.str.3699) unreachable -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 - store %S.gen.EnumDef %t322, ptr %a323 - call void @finch.copy.S_gen_EnumDef(ptr %a324, ptr %a323) - %t325 = load %S.gen.EnumDef, ptr %a324 - store %S.gen.EnumDef %t325, ptr %a326 - store { ptr, i64, i64 } zeroinitializer, ptr %a327 - %t328 = getelementptr inbounds %S.gen.EnumDef, ptr %a326, i32 0, i32 2 - %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.cond5389 -for.cond5389: - %t332 = load i64, ptr %a331 - %t333 = icmp slt i64 %t332, %t330 - 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 %range5393, label %inrange5394 -range5393: - call void @finch_panic_index(ptr @.str.3535, i64 2794, i64 %t336, i64 %t338) +ok5753: + %t322 = getelementptr inbounds %S.gen.Gen, ptr %t320, i32 0, i32 21 + %t323 = load ptr, ptr %a1 + %t324 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 3 + %t325 = load { ptr, i64, i64 }, ptr %t324 + %t326 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 2 + %t327 = load { ptr, i64, i64 }, ptr %t326 + %t328 = call i64 @finch.gen.findEnum(ptr %t323, { ptr, i64, i64 } %t325, { ptr, i64, i64 } %t327) + %t329 = load { ptr, i64, i64 }, ptr %t322 + %t330 = extractvalue { ptr, i64, i64 } %t329, 1 + %t331 = icmp uge i64 %t328, %t330 + br i1 %t331, label %range5754, label %inrange5755 +range5754: + call void @finch_panic_index(ptr @.str.3700, i64 3040, i64 %t328, i64 %t330) unreachable -inrange5394: - %t340 = extractvalue { ptr, i64, i64 } %t337, 0 - %t341 = getelementptr inbounds i64, ptr %t340, i64 %t336 +inrange5755: + %t332 = extractvalue { ptr, i64, i64 } %t329, 0 + %t333 = getelementptr inbounds %S.gen.EnumDef, ptr %t332, i64 %t328 + %t334 = load %S.gen.EnumDef, ptr %t333 + store %S.gen.EnumDef %t334, ptr %a335 + call void @finch.copy.S_gen_EnumDef(ptr %a336, ptr %a335) + %t337 = load %S.gen.EnumDef, ptr %a336 + store %S.gen.EnumDef %t337, ptr %a338 + store { ptr, i64, i64 } zeroinitializer, ptr %a339 + %t340 = getelementptr inbounds %S.gen.EnumDef, ptr %a338, i32 0, i32 2 + %t341 = getelementptr inbounds { ptr, i64, i64 }, ptr %t340, i32 0, i32 1 %t342 = load i64, ptr %t341 - call void @finch_str_from_int(ptr %a343, i64 %t342) - %t344 = load { ptr, i64, i64 }, ptr %a343 - store i64 -1, ptr %a345 - %t346 = load i64, ptr %t334 - %t347 = load ptr, ptr %a46 - store i64 0, ptr %a348 - br label %find.cond5395 -find.cond5395: - %t349 = load i64, ptr %a348 - %t350 = icmp slt i64 %t349, %t346 - 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.hit5397, label %find.next5398 -find.hit5397: - store i64 %t349, ptr %a345 - br label %find.end5399 -find.next5398: - %t357 = add i64 %t349, 1 - store i64 %t357, ptr %a348 - 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 %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 %range5403, label %inrange5404 -range5403: - call void @finch_panic_index(ptr @.str.3536, i64 2795, i64 %t363, i64 %t365) + store i64 0, ptr %a343 + br label %for.cond5756 +for.cond5756: + %t344 = load i64, ptr %a343 + %t345 = icmp slt i64 %t344, %t342 + br i1 %t345, label %for.body5757, label %for.end5759 +for.body5757: + %t346 = getelementptr inbounds { ptr, i64, i64 }, ptr %a54, i32 0, i32 1 + %t347 = getelementptr inbounds %S.gen.EnumDef, ptr %a338, i32 0, i32 3 + %t348 = load i64, ptr %a343 + %t349 = load { ptr, i64, i64 }, ptr %t347 + %t350 = extractvalue { ptr, i64, i64 } %t349, 1 + %t351 = icmp uge i64 %t348, %t350 + br i1 %t351, label %range5760, label %inrange5761 +range5760: + call void @finch_panic_index(ptr @.str.3701, i64 3043, i64 %t348, i64 %t350) unreachable -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 - store { ptr, i64, i64 } %t369, ptr %a370 - call void @finch_str_copy(ptr %a371, ptr %a370) - %t372 = load { ptr, i64, i64 }, ptr %a371 - %t373 = load i64, ptr %t361 - %t374 = add i64 %t373, 1 - call void @finch_arr_reserve(ptr %a327, i64 %t374, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t375 = load ptr, ptr %a327 - %t376 = getelementptr inbounds { ptr, i64, i64 }, ptr %t375, i64 %t373 - store { ptr, i64, i64 } %t372, ptr %t376 - store i64 %t374, ptr %t361 - 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.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 %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.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.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.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 %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.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.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 %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.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.3544, i64 11, i64 0 }) - %t411 = load ptr, ptr %a1 - %t412 = icmp eq ptr %t411, null - br i1 %t412, label %panic5408, label %ok5409 -panic5408: - call void @finch_panic(ptr @.str.3545, i64 2807, ptr @.str.3546) +inrange5761: + %t352 = extractvalue { ptr, i64, i64 } %t349, 0 + %t353 = getelementptr inbounds i64, ptr %t352, i64 %t348 + %t354 = load i64, ptr %t353 + call void @finch_str_from_int(ptr %a355, i64 %t354) + %t356 = load { ptr, i64, i64 }, ptr %a355 + store i64 -1, ptr %a357 + %t358 = load i64, ptr %t346 + %t359 = load ptr, ptr %a54 + store i64 0, ptr %a360 + br label %find.cond5762 +find.cond5762: + %t361 = load i64, ptr %a360 + %t362 = icmp slt i64 %t361, %t358 + br i1 %t362, label %find.body5763, label %find.end5766 +find.body5763: + %t363 = getelementptr inbounds { ptr, i64, i64 }, ptr %t359, i64 %t361 + %t364 = load { ptr, i64, i64 }, ptr %t363 + store { ptr, i64, i64 } %t364, ptr %a365 + store { ptr, i64, i64 } %t356, ptr %a366 + %t367 = call i32 @finch_str_eq(ptr %a365, ptr %a366) + %t368 = icmp ne i32 %t367, 0 + br i1 %t368, label %find.hit5764, label %find.next5765 +find.hit5764: + store i64 %t361, ptr %a357 + br label %find.end5766 +find.next5765: + %t369 = add i64 %t361, 1 + store i64 %t369, ptr %a360 + br label %find.cond5762 +find.end5766: + store { ptr, i64, i64 } %t356, ptr %a370 + call void @finch_str_drop(ptr %a370) + %t371 = load i64, ptr %a357 + %t372 = icmp sge i64 %t371, 0 + %t373 = xor i1 %t372, true + br i1 %t373, label %then5767, label %endif5769 +then5767: + %t374 = getelementptr inbounds { ptr, i64, i64 }, ptr %a339, i32 0, i32 1 + %t375 = getelementptr inbounds %S.gen.EnumDef, ptr %a338, i32 0, i32 2 + %t376 = load i64, ptr %a343 + %t377 = load { ptr, i64, i64 }, ptr %t375 + %t378 = extractvalue { ptr, i64, i64 } %t377, 1 + %t379 = icmp uge i64 %t376, %t378 + br i1 %t379, label %range5770, label %inrange5771 +range5770: + call void @finch_panic_index(ptr @.str.3702, i64 3044, i64 %t376, i64 %t378) unreachable -ok5409: - %t413 = getelementptr inbounds %S.gen.Gen, ptr %t411, i32 0, i32 9 - store i1 true, ptr %t413 - 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 %then5410, label %endif5412 -then5410: - %t418 = load ptr, ptr %a1 - 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 %panic5413, label %ok5414 -panic5413: - call void @finch_panic(ptr @.str.3548, i64 2812, ptr @.str.3549) +inrange5771: + %t380 = extractvalue { ptr, i64, i64 } %t377, 0 + %t381 = getelementptr inbounds { ptr, i64, i64 }, ptr %t380, i64 %t376 + %t382 = load { ptr, i64, i64 }, ptr %t381 + store { ptr, i64, i64 } %t382, ptr %a383 + call void @finch_str_copy(ptr %a384, ptr %a383) + %t385 = load { ptr, i64, i64 }, ptr %a384 + %t386 = load i64, ptr %t374 + %t387 = add i64 %t386, 1 + call void @finch_arr_reserve(ptr %a339, i64 %t387, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t388 = load ptr, ptr %a339 + %t389 = getelementptr inbounds { ptr, i64, i64 }, ptr %t388, i64 %t386 + store { ptr, i64, i64 } %t385, ptr %t389 + store i64 %t387, ptr %t374 + br label %endif5769 +endif5769: + br label %for.step5758 +for.step5758: + %t390 = load i64, ptr %a343 + %t391 = add i64 %t390, 1 + store i64 %t391, ptr %a343 + br label %for.cond5756 +for.end5759: + %t392 = getelementptr inbounds { ptr, i64, i64 }, ptr %a339, i32 0, i32 1 + %t393 = load i64, ptr %t392 + %t394 = icmp sgt i64 %t393, 0 + br i1 %t394, label %then5772, label %endif5774 +then5772: + %t395 = load ptr, ptr %a1 + %t396 = load %S.ast.Node, ptr %a2 + %t397 = getelementptr inbounds { ptr, i64, i64 }, ptr %a339, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.3704, i64 2, i64 0 }, ptr %a398 + call void @finch_str_join(ptr %a399, ptr %a339, ptr %a398) + %t400 = load { ptr, i64, i64 }, ptr %a399 + store { ptr, i64, i64 } { ptr @.str.3703, i64 26, i64 0 }, ptr %a402 + store { ptr, i64, i64 } %t400, ptr %a403 + call void @finch_str_concat(ptr %a401, ptr %a402, ptr %a403) + store { ptr, i64, i64 } %t400, ptr %a404 + call void @finch_str_drop(ptr %a404) + %t405 = load { ptr, i64, i64 }, ptr %a401 + store { ptr, i64, i64 } %t405, ptr %a407 + store { ptr, i64, i64 } { ptr @.str.3705, i64 29, i64 0 }, ptr %a408 + call void @finch_str_concat(ptr %a406, ptr %a407, ptr %a408) + store { ptr, i64, i64 } %t405, ptr %a409 + call void @finch_str_drop(ptr %a409) + %t410 = load { ptr, i64, i64 }, ptr %a406 + call void @finch.gen.fail(ptr %t395, %S.ast.Node %t396, { ptr, i64, i64 } %t410) + store { ptr, i64, i64 } %t410, ptr %a411 + call void @finch_str_drop(ptr %a411) + br label %endif5774 +endif5774: + call void @finch.drop.arr_str(ptr %a339) + call void @finch.drop.S_gen_EnumDef(ptr %a338) + br label %endif5751 +else5750: + %t412 = load ptr, ptr %a1 + %t413 = load %S.ast.Node, ptr %a2 + %t414 = load %S.ast.Type, ptr %a19 + %t415 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t414) + store { ptr, i64, i64 } { ptr @.str.3706, i64 11, i64 0 }, ptr %a417 + store { ptr, i64, i64 } %t415, ptr %a418 + call void @finch_str_concat(ptr %a416, ptr %a417, ptr %a418) + store { ptr, i64, i64 } %t415, ptr %a419 + call void @finch_str_drop(ptr %a419) + %t420 = load { ptr, i64, i64 }, ptr %a416 + store { ptr, i64, i64 } %t420, ptr %a422 + store { ptr, i64, i64 } { ptr @.str.3707, i64 54, i64 0 }, ptr %a423 + call void @finch_str_concat(ptr %a421, ptr %a422, ptr %a423) + store { ptr, i64, i64 } %t420, ptr %a424 + call void @finch_str_drop(ptr %a424) + %t425 = load { ptr, i64, i64 }, ptr %a421 + call void @finch.gen.fail(ptr %t412, %S.ast.Node %t413, { ptr, i64, i64 } %t425) + store { ptr, i64, i64 } %t425, ptr %a426 + call void @finch_str_drop(ptr %a426) + br label %endif5751 +endif5751: + %t427 = load ptr, ptr %a1 + %t428 = load %S.ast.Node, ptr %a2 + call void @finch.gen.panicIf(ptr %t427, { ptr, i64, i64 } { ptr @.str.3708, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.3709, i64 35, i64 0 }, %S.ast.Node %t428) + %t429 = load ptr, ptr %a1 + call void @finch.gen.emit(ptr %t429, { ptr, i64, i64 } { ptr @.str.3710, i64 11, i64 0 }) + %t430 = load ptr, ptr %a1 + %t431 = icmp eq ptr %t430, null + br i1 %t431, label %panic5775, label %ok5776 +panic5775: + call void @finch_panic(ptr @.str.3711, i64 3056, ptr @.str.3712) unreachable -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.3550, i64 4, i64 0 }) - %t423 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t422, 1 - ret %S.gen.Val %t423 -endif5412: - %t424 = load i1, ptr %a3 - 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.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.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 - %t438 = load { ptr, i64, i64 }, ptr %a48 - %t439 = call { ptr, i64, i64 } @finch.gen.phiList({ ptr, i64, i64 } %t437, { ptr, i64, i64 } %t438) - store { ptr, i64, i64 } %t436, 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 - %t444 = call { ptr, i64, i64 } @finch.gen.op(ptr %t425, { ptr, i64, i64 } %t443) - %t445 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t444, 0 - %t446 = load %S.ast.Type, ptr %a50 - store %S.ast.Type %t446, ptr %a447 - call void @finch.copy.S_ast_Type(ptr %a448, ptr %a447) - %t449 = load %S.ast.Type, ptr %a448 - %t450 = insertvalue %S.gen.Val %t445, %S.ast.Type %t449, 1 - %t451 = load ptr, ptr %a1 - %t452 = load %S.ast.Type, ptr %a50 - %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 -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 +ok5776: + %t432 = getelementptr inbounds %S.gen.Gen, ptr %t430, i32 0, i32 9 + store i1 true, ptr %t432 + br label %endif5748 +endif5748: + %t433 = load ptr, ptr %a1 + %t434 = load i64, ptr %a46 + call void @finch.gen.heldEnd(ptr %t433, i64 %t434) + %t435 = load ptr, ptr %a1 + %t436 = load { ptr, i64, i64 }, ptr %a51 + call void @finch.gen.label(ptr %t435, { ptr, i64, i64 } %t436) + %t437 = load i1, ptr %a53 + %t438 = xor i1 %t437, true + br i1 %t438, label %then5777, label %endif5779 +then5777: + %t439 = load ptr, ptr %a1 + call void @finch.gen.emit(ptr %t439, { ptr, i64, i64 } { ptr @.str.3713, i64 11, i64 0 }) + %t440 = load ptr, ptr %a1 + %t441 = icmp eq ptr %t440, null + br i1 %t441, label %panic5780, label %ok5781 +panic5780: + call void @finch_panic(ptr @.str.3714, i64 3062, ptr @.str.3715) + unreachable +ok5781: + %t442 = getelementptr inbounds %S.gen.Gen, ptr %t440, i32 0, i32 9 + store i1 true, ptr %t442 + %t443 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3716, i64 4, i64 0 }) + %t444 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t443, 1 + call void @finch.drop.S_ast_Type(ptr %a58) + call void @finch.drop.arr_str(ptr %a56) + call void @finch.drop.arr_str(ptr %a55) + call void @finch.drop.arr_str(ptr %a54) + call void @finch_str_drop(ptr %a51) + call void @finch.drop.S_ast_Type(ptr %a19) + call void @finch.drop.S_gen_Val(ptr %a13) + ret %S.gen.Val %t444 +endif5779: + %t445 = load i1, ptr %a3 + br i1 %t445, label %then5782, label %endif5784 +then5782: + %t446 = load ptr, ptr %a1 + %t447 = load ptr, ptr %a1 + %t448 = load %S.ast.Type, ptr %a58 + %t449 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t447, %S.ast.Type %t448) + store { ptr, i64, i64 } { ptr @.str.3717, i64 4, i64 0 }, ptr %a451 + store { ptr, i64, i64 } %t449, ptr %a452 + call void @finch_str_concat(ptr %a450, ptr %a451, ptr %a452) + store { ptr, i64, i64 } %t449, ptr %a453 + call void @finch_str_drop(ptr %a453) + %t454 = load { ptr, i64, i64 }, ptr %a450 + store { ptr, i64, i64 } %t454, ptr %a456 + store { ptr, i64, i64 } { ptr @.str.3718, i64 1, i64 0 }, ptr %a457 + call void @finch_str_concat(ptr %a455, ptr %a456, ptr %a457) + store { ptr, i64, i64 } %t454, ptr %a458 + call void @finch_str_drop(ptr %a458) + %t459 = load { ptr, i64, i64 }, ptr %a455 + %t460 = load { ptr, i64, i64 }, ptr %a55 + %t461 = load { ptr, i64, i64 }, ptr %a56 + %t462 = call { ptr, i64, i64 } @finch.gen.phiList({ ptr, i64, i64 } %t460, { ptr, i64, i64 } %t461) + store { ptr, i64, i64 } %t459, ptr %a464 + store { ptr, i64, i64 } %t462, ptr %a465 + call void @finch_str_concat(ptr %a463, ptr %a464, ptr %a465) + store { ptr, i64, i64 } %t459, ptr %a466 + call void @finch_str_drop(ptr %a466) + store { ptr, i64, i64 } %t462, ptr %a467 + call void @finch_str_drop(ptr %a467) + %t468 = load { ptr, i64, i64 }, ptr %a463 + %t469 = call { ptr, i64, i64 } @finch.gen.op(ptr %t446, { ptr, i64, i64 } %t468) + store { ptr, i64, i64 } %t468, ptr %a470 + call void @finch_str_drop(ptr %a470) + %t471 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t469, 0 + %t472 = load %S.ast.Type, ptr %a58 + store %S.ast.Type %t472, ptr %a473 + call void @finch.copy.S_ast_Type(ptr %a474, ptr %a473) + %t475 = load %S.ast.Type, ptr %a474 + %t476 = insertvalue %S.gen.Val %t471, %S.ast.Type %t475, 1 + %t477 = load ptr, ptr %a1 + %t478 = load %S.ast.Type, ptr %a58 + %t479 = call i1 @finch.gen.owning(ptr %t477, %S.ast.Type %t478) + %t480 = insertvalue %S.gen.Val %t476, i1 %t479, 2 + store %S.gen.Val %t480, ptr %a481 + %t482 = load ptr, ptr %a1 + %t483 = load %S.gen.Val, ptr %a13 + call void @finch.gen.release(ptr %t482, %S.gen.Val %t483) + %t484 = load %S.gen.Val, ptr %a481 + call void @finch.drop.S_ast_Type(ptr %a58) + call void @finch.drop.arr_str(ptr %a56) + call void @finch.drop.arr_str(ptr %a55) + call void @finch.drop.arr_str(ptr %a54) + call void @finch_str_drop(ptr %a51) + call void @finch.drop.S_ast_Type(ptr %a19) + call void @finch.drop.S_gen_Val(ptr %a13) + ret %S.gen.Val %t484 +endif5784: + %t485 = load ptr, ptr %a1 + %t486 = load %S.gen.Val, ptr %a13 + call void @finch.gen.release(ptr %t485, %S.gen.Val %t486) + %t487 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3719, i64 4, i64 0 }) + %t488 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t487, 1 + call void @finch.drop.S_ast_Type(ptr %a58) + call void @finch.drop.arr_str(ptr %a56) + call void @finch.drop.arr_str(ptr %a55) + call void @finch.drop.arr_str(ptr %a54) + call void @finch_str_drop(ptr %a51) + call void @finch.drop.S_ast_Type(ptr %a19) + call void @finch.drop.S_gen_Val(ptr %a13) + ret %S.gen.Val %t488 } define internal { ptr, i64, i64 } @finch.gen.phiList({ ptr, i64, i64 } %p0, { ptr, i64, i64 } %p1) { @@ -49785,103 +59073,96 @@ entry: %a21 = alloca { ptr, i64, i64 }, align 16 %a22 = alloca { ptr, i64, i64 }, align 16 %a23 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 + %a24 = 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 %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 %a38 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = 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 + %a50 = alloca { ptr, i64, i64 }, align 16 + %a51 = alloca { ptr, i64, i64 }, align 16 store { ptr, i64, i64 } %p0, ptr %a1 store { ptr, i64, i64 } %p1, ptr %a2 store { ptr, i64, i64 } zeroinitializer, ptr %a3 %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.cond5418 -for.cond5418: + br label %for.cond5785 +for.cond5785: %t7 = load i64, ptr %a6 %t8 = icmp slt i64 %t7, %t5 - br i1 %t8, label %for.body5419, label %for.end5421 -for.body5419: + br i1 %t8, label %for.body5786, label %for.end5788 +for.body5786: %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 %range5422, label %inrange5423 -range5422: - call void @finch_panic_index(ptr @.str.3555, i64 2824, i64 %t10, i64 %t12) + br i1 %t13, label %range5789, label %inrange5790 +range5789: + call void @finch_panic_index(ptr @.str.3721, i64 3077, i64 %t10, i64 %t12) unreachable -inrange5423: +inrange5790: %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.3554, i64 2, i64 0 }, ptr %a18 + store { ptr, i64, i64 } { ptr @.str.3720, 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.3556, i64 3, i64 0 }, ptr %a23 + store { ptr, i64, i64 } { ptr @.str.3722, 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 %range5424, label %inrange5425 -range5424: - call void @finch_panic_index(ptr @.str.3557, i64 2824, i64 %t25, i64 %t27) + store { ptr, i64, i64 } %t20, ptr %a24 + call void @finch_str_drop(ptr %a24) + %t25 = load { ptr, i64, i64 }, ptr %a21 + %t26 = load i64, ptr %a6 + %t27 = load { ptr, i64, i64 }, ptr %a2 + %t28 = extractvalue { ptr, i64, i64 } %t27, 1 + %t29 = icmp uge i64 %t26, %t28 + br i1 %t29, label %range5791, label %inrange5792 +range5791: + call void @finch_panic_index(ptr @.str.3723, i64 3077, i64 %t26, i64 %t28) unreachable -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 - store { ptr, i64, i64 } %t24, 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.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 - %t41 = add i64 %t40, 1 - call void @finch_arr_reserve(ptr %a3, i64 %t41, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t42 = load ptr, ptr %a3 - %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.step5420 -for.step5420: - %t44 = load i64, ptr %a6 - %t45 = add i64 %t44, 1 - store i64 %t45, ptr %a6 - br label %for.cond5418 -for.end5421: - %t46 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - 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 -} - -define internal void @finch.copy.S_gen_Fallible(ptr %dst, ptr %src) { -entry: - - %t1 = load %S.gen.Fallible, ptr %src - store %S.gen.Fallible %t1, ptr %dst - %t2 = getelementptr inbounds %S.gen.Fallible, ptr %dst, i32 0, i32 0 - %t3 = getelementptr inbounds %S.gen.Fallible, ptr %src, i32 0, i32 0 - call void @finch.copy.S_gen_Val(ptr %t2, ptr %t3) - %t4 = getelementptr inbounds %S.gen.Fallible, ptr %dst, i32 0, i32 1 - %t5 = getelementptr inbounds %S.gen.Fallible, ptr %src, i32 0, i32 1 - call void @finch_str_copy(ptr %t4, ptr %t5) - %t6 = getelementptr inbounds %S.gen.Fallible, ptr %dst, i32 0, i32 2 - %t7 = getelementptr inbounds %S.gen.Fallible, ptr %src, i32 0, i32 2 - call void @finch_str_copy(ptr %t6, ptr %t7) - ret void +inrange5792: + %t30 = extractvalue { ptr, i64, i64 } %t27, 0 + %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t30, i64 %t26 + %t32 = load { ptr, i64, i64 }, ptr %t31 + store { ptr, i64, i64 } %t25, ptr %a34 + store { ptr, i64, i64 } %t32, ptr %a35 + call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) + store { ptr, i64, i64 } %t25, ptr %a36 + call void @finch_str_drop(ptr %a36) + %t37 = load { ptr, i64, i64 }, ptr %a33 + store { ptr, i64, i64 } %t37, ptr %a39 + store { ptr, i64, i64 } { ptr @.str.3724, i64 2, i64 0 }, ptr %a40 + call void @finch_str_concat(ptr %a38, ptr %a39, ptr %a40) + store { ptr, i64, i64 } %t37, ptr %a41 + call void @finch_str_drop(ptr %a41) + %t42 = load { ptr, i64, i64 }, ptr %a38 + %t43 = load i64, ptr %t9 + %t44 = add i64 %t43, 1 + call void @finch_arr_reserve(ptr %a3, i64 %t44, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t45 = load ptr, ptr %a3 + %t46 = getelementptr inbounds { ptr, i64, i64 }, ptr %t45, i64 %t43 + store { ptr, i64, i64 } %t42, ptr %t46 + store i64 %t44, ptr %t9 + br label %for.step5787 +for.step5787: + %t47 = load i64, ptr %a6 + %t48 = add i64 %t47, 1 + store i64 %t48, ptr %a6 + br label %for.cond5785 +for.end5788: + %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.3725, i64 2, i64 0 }, ptr %a50 + call void @finch_str_join(ptr %a51, ptr %a3, ptr %a50) + %t52 = load { ptr, i64, i64 }, ptr %a51 + call void @finch.drop.arr_str(ptr %a3) + ret { ptr, i64, i64 } %t52 } define internal %S.gen.Fallible @finch.gen.fallibleCall(ptr %p0, %S.ast.Node %p1) { @@ -49901,60 +59182,64 @@ entry: %a38 = alloca { ptr, i64, i64 }, align 16 %a39 = alloca { ptr, i64, i64 }, align 16 %a41 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca %S.gen.Val, align 16 - %a58 = alloca %S.gen.Val, align 16 - %a59 = alloca %S.gen.Val, align 16 - %a66 = 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 - %a78 = alloca %S.gen.Fallible, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 + %a48 = alloca { ptr, i64, i64 }, align 16 + %a53 = alloca { ptr, i64, i64 }, align 16 + %a58 = alloca { ptr, i64, i64 }, align 16 + %a62 = alloca %S.gen.Val, align 16 + %a64 = alloca %S.gen.Val, align 16 + %a65 = alloca %S.gen.Val, align 16 + %a72 = alloca { ptr, i64, i64 }, align 16 + %a73 = alloca { ptr, i64, i64 }, align 16 + %a80 = alloca { ptr, i64, i64 }, align 16 + %a81 = alloca { ptr, i64, i64 }, align 16 + %a84 = alloca %S.gen.Fallible, align 16 + %a89 = alloca { ptr, i64, i64 }, align 16 %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 + %a93 = alloca { ptr, i64, i64 }, align 16 %a98 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca %S.gen.Fallible, align 16 - %a108 = alloca %S.gen.Fallible, align 16 + %a99 = 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 + %a111 = 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 0 %t4 = load { ptr, i64, i64 }, ptr %t3 store { ptr, i64, i64 } %t4, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.3560, i64 4, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.3726, 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.from5426 -logic.from5426: - br i1 %t8, label %logic.rhs5427, label %logic.end5428 -logic.rhs5427: + br label %logic.from5793 +logic.from5793: + br i1 %t8, label %logic.rhs5794, label %logic.end5795 +logic.rhs5794: %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.3561, i64 6, i64 0 }, ptr %a12 + store { ptr, i64, i64 } { ptr @.str.3727, 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.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: + br label %logic.rend5796 +logic.rend5796: + br label %logic.end5795 +logic.end5795: + %t15 = phi i1 [ false, %logic.from5793 ], [ %t14, %logic.rend5796 ] + br i1 %t15, label %then5797, label %endif5799 +then5797: %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.3562, i64 80, i64 0 }) - br label %endif5432 -endif5432: + call void @finch.gen.fail(ptr %t16, %S.ast.Node %t17, { ptr, i64, i64 } { ptr @.str.3728, i64 80, i64 0 }) + br label %endif5799 +endif5799: %t18 = load ptr, ptr %a1 %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic5433, label %ok5434 -panic5433: - call void @finch_panic(ptr @.str.3563, i64 2842, ptr @.str.3564) + br i1 %t19, label %panic5800, label %ok5801 +panic5800: + call void @finch_panic(ptr @.str.3729, i64 3095, ptr @.str.3730) unreachable -ok5434: - %t20 = getelementptr inbounds %S.gen.Gen, ptr %t18, i32 0, i32 39 +ok5801: + %t20 = getelementptr inbounds %S.gen.Gen, ptr %t18, i32 0, i32 40 %t21 = load { ptr, i64, i64 }, ptr %t20 store { ptr, i64, i64 } %t21, ptr %a22 call void @finch_str_copy(ptr %a23, ptr %a22) @@ -49962,12 +59247,12 @@ ok5434: store { ptr, i64, i64 } %t24, ptr %a25 %t26 = load ptr, ptr %a1 %t27 = icmp eq ptr %t26, null - br i1 %t27, label %panic5435, label %ok5436 -panic5435: - call void @finch_panic(ptr @.str.3565, i64 2843, ptr @.str.3566) + br i1 %t27, label %panic5802, label %ok5803 +panic5802: + call void @finch_panic(ptr @.str.3731, i64 3096, ptr @.str.3732) unreachable -ok5436: - %t28 = getelementptr inbounds %S.gen.Gen, ptr %t26, i32 0, i32 40 +ok5803: + %t28 = getelementptr inbounds %S.gen.Gen, ptr %t26, i32 0, i32 41 %t29 = load { ptr, i64, i64 }, ptr %t28 store { ptr, i64, i64 } %t29, ptr %a30 call void @finch_str_copy(ptr %a31, ptr %a30) @@ -49975,12 +59260,12 @@ ok5436: store { ptr, i64, i64 } %t32, ptr %a33 %t34 = load ptr, ptr %a1 %t35 = icmp eq ptr %t34, null - br i1 %t35, label %panic5437, label %ok5438 -panic5437: - call void @finch_panic(ptr @.str.3567, i64 2844, ptr @.str.3568) + br i1 %t35, label %panic5804, label %ok5805 +panic5804: + call void @finch_panic(ptr @.str.3733, i64 3097, ptr @.str.3734) unreachable -ok5438: - %t36 = getelementptr inbounds %S.gen.Gen, ptr %t34, i32 0, i32 41 +ok5805: + %t36 = getelementptr inbounds %S.gen.Gen, ptr %t34, i32 0, i32 42 %t37 = load { ptr, i64, i64 }, ptr %t36 store { ptr, i64, i64 } %t37, ptr %a38 call void @finch_str_copy(ptr %a39, ptr %a38) @@ -49990,122 +59275,153 @@ ok5438: %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 %panic5439, label %ok5440 -panic5439: - call void @finch_panic(ptr @.str.3569, i64 2845, ptr @.str.3570) + br i1 %t45, label %panic5806, label %ok5807 +panic5806: + call void @finch_panic(ptr @.str.3735, i64 3098, ptr @.str.3736) unreachable -ok5440: - %t46 = getelementptr inbounds %S.gen.Gen, ptr %t44, i32 0, i32 39 +ok5807: + %t46 = getelementptr inbounds %S.gen.Gen, ptr %t44, i32 0, i32 40 + %t47 = load { ptr, i64, i64 }, ptr %t46 store { ptr, i64, i64 } %t43, ptr %t46 - %t47 = load ptr, ptr %a1 - %t48 = icmp eq ptr %t47, null - br i1 %t48, label %panic5441, label %ok5442 -panic5441: - call void @finch_panic(ptr @.str.3572, i64 2846, ptr @.str.3573) + store { ptr, i64, i64 } %t47, ptr %a48 + call void @finch_str_drop(ptr %a48) + %t49 = load ptr, ptr %a1 + %t50 = icmp eq ptr %t49, null + br i1 %t50, label %panic5808, label %ok5809 +panic5808: + call void @finch_panic(ptr @.str.3738, i64 3099, ptr @.str.3739) unreachable -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 %panic5443, label %ok5444 -panic5443: - call void @finch_panic(ptr @.str.3575, i64 2847, ptr @.str.3576) +ok5809: + %t51 = getelementptr inbounds %S.gen.Gen, ptr %t49, i32 0, i32 41 + %t52 = load { ptr, i64, i64 }, ptr %t51 + store { ptr, i64, i64 } { ptr @.str.3737, i64 0, i64 0 }, ptr %t51 + store { ptr, i64, i64 } %t52, ptr %a53 + call void @finch_str_drop(ptr %a53) + %t54 = load ptr, ptr %a1 + %t55 = icmp eq ptr %t54, null + br i1 %t55, label %panic5810, label %ok5811 +panic5810: + call void @finch_panic(ptr @.str.3741, i64 3100, ptr @.str.3742) unreachable -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) - store %S.gen.Val %t55, ptr %a56 - %t57 = load %S.gen.Val, ptr %a56 - store %S.gen.Val %t57, ptr %a58 - call void @finch.copy.S_gen_Val(ptr %a59, ptr %a58) - %t60 = load %S.gen.Val, ptr %a59 - %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 %panic5445, label %ok5446 -panic5445: - call void @finch_panic(ptr @.str.3577, i64 2849, ptr @.str.3578) +ok5811: + %t56 = getelementptr inbounds %S.gen.Gen, ptr %t54, i32 0, i32 42 + %t57 = load { ptr, i64, i64 }, ptr %t56 + store { ptr, i64, i64 } { ptr @.str.3740, i64 0, i64 0 }, ptr %t56 + store { ptr, i64, i64 } %t57, ptr %a58 + call void @finch_str_drop(ptr %a58) + %t59 = load ptr, ptr %a1 + %t60 = load %S.ast.Node, ptr %a2 + %t61 = call %S.gen.Val @finch.gen.expr(ptr %t59, %S.ast.Node %t60) + store %S.gen.Val %t61, ptr %a62 + %t63 = load %S.gen.Val, ptr %a62 + store %S.gen.Val %t63, ptr %a64 + call void @finch.copy.S_gen_Val(ptr %a65, ptr %a64) + %t66 = load %S.gen.Val, ptr %a65 + %t67 = insertvalue %S.gen.Fallible zeroinitializer, %S.gen.Val %t66, 0 + %t68 = load ptr, ptr %a1 + %t69 = icmp eq ptr %t68, null + br i1 %t69, label %panic5812, label %ok5813 +panic5812: + call void @finch_panic(ptr @.str.3743, i64 3102, ptr @.str.3744) unreachable -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) - %t68 = load { ptr, i64, i64 }, ptr %a67 - %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 %panic5447, label %ok5448 -panic5447: - call void @finch_panic(ptr @.str.3579, i64 2849, ptr @.str.3580) +ok5813: + %t70 = getelementptr inbounds %S.gen.Gen, ptr %t68, i32 0, i32 41 + %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 = insertvalue %S.gen.Fallible %t67, { ptr, i64, i64 } %t74, 1 + %t76 = load ptr, ptr %a1 + %t77 = icmp eq ptr %t76, null + br i1 %t77, label %panic5814, label %ok5815 +panic5814: + call void @finch_panic(ptr @.str.3745, i64 3102, ptr @.str.3746) unreachable -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) - %t76 = load { ptr, i64, i64 }, ptr %a75 - %t77 = insertvalue %S.gen.Fallible %t69, { ptr, i64, i64 } %t76, 2 - store %S.gen.Fallible %t77, ptr %a78 - %t79 = load { ptr, i64, i64 }, ptr %a25 - %t80 = load ptr, ptr %a1 - %t81 = icmp eq ptr %t80, null - br i1 %t81, label %panic5449, label %ok5450 -panic5449: - call void @finch_panic(ptr @.str.3581, i64 2850, ptr @.str.3582) +ok5815: + %t78 = getelementptr inbounds %S.gen.Gen, ptr %t76, i32 0, i32 42 + %t79 = load { ptr, i64, i64 }, ptr %t78 + store { ptr, i64, i64 } %t79, ptr %a80 + call void @finch_str_copy(ptr %a81, ptr %a80) + %t82 = load { ptr, i64, i64 }, ptr %a81 + %t83 = insertvalue %S.gen.Fallible %t75, { ptr, i64, i64 } %t82, 2 + store %S.gen.Fallible %t83, ptr %a84 + %t85 = load { ptr, i64, i64 }, ptr %a25 + %t86 = load ptr, ptr %a1 + %t87 = icmp eq ptr %t86, null + br i1 %t87, label %panic5816, label %ok5817 +panic5816: + call void @finch_panic(ptr @.str.3747, i64 3103, ptr @.str.3748) unreachable -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 - store { ptr, i64, i64 } %t85, ptr %t82 - %t86 = load { ptr, i64, i64 }, ptr %a33 - %t87 = load ptr, ptr %a1 - %t88 = icmp eq ptr %t87, null - br i1 %t88, label %panic5451, label %ok5452 -panic5451: - call void @finch_panic(ptr @.str.3583, i64 2851, ptr @.str.3584) +ok5817: + %t88 = getelementptr inbounds %S.gen.Gen, ptr %t86, i32 0, i32 40 + store { ptr, i64, i64 } %t85, ptr %a89 + call void @finch_str_copy(ptr %a90, ptr %a89) + %t91 = load { ptr, i64, i64 }, ptr %a90 + %t92 = load { ptr, i64, i64 }, ptr %t88 + store { ptr, i64, i64 } %t91, ptr %t88 + store { ptr, i64, i64 } %t92, ptr %a93 + call void @finch_str_drop(ptr %a93) + %t94 = load { ptr, i64, i64 }, ptr %a33 + %t95 = load ptr, ptr %a1 + %t96 = icmp eq ptr %t95, null + br i1 %t96, label %panic5818, label %ok5819 +panic5818: + call void @finch_panic(ptr @.str.3749, i64 3104, ptr @.str.3750) unreachable -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 - store { ptr, i64, i64 } %t92, ptr %t89 - %t93 = load { ptr, i64, i64 }, ptr %a41 - %t94 = load ptr, ptr %a1 - %t95 = icmp eq ptr %t94, null - br i1 %t95, label %panic5453, label %ok5454 -panic5453: - call void @finch_panic(ptr @.str.3585, i64 2852, ptr @.str.3586) - unreachable -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 - store { ptr, i64, i64 } %t99, ptr %t96 - %t100 = getelementptr inbounds %S.gen.Fallible, ptr %a78, i32 0, i32 1 - %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 %then5455, label %endif5457 -then5455: +ok5819: + %t97 = getelementptr inbounds %S.gen.Gen, ptr %t95, i32 0, i32 41 + store { ptr, i64, i64 } %t94, ptr %a98 + call void @finch_str_copy(ptr %a99, ptr %a98) + %t100 = load { ptr, i64, i64 }, ptr %a99 + %t101 = load { ptr, i64, i64 }, ptr %t97 + store { ptr, i64, i64 } %t100, ptr %t97 + store { ptr, i64, i64 } %t101, ptr %a102 + call void @finch_str_drop(ptr %a102) + %t103 = load { ptr, i64, i64 }, ptr %a41 %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.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) - %t109 = load %S.gen.Fallible, ptr %a108 - ret %S.gen.Fallible %t109 + %t105 = icmp eq ptr %t104, null + br i1 %t105, label %panic5820, label %ok5821 +panic5820: + call void @finch_panic(ptr @.str.3751, i64 3105, ptr @.str.3752) + unreachable +ok5821: + %t106 = getelementptr inbounds %S.gen.Gen, ptr %t104, i32 0, i32 42 + store { ptr, i64, i64 } %t103, ptr %a107 + call void @finch_str_copy(ptr %a108, ptr %a107) + %t109 = load { ptr, i64, i64 }, ptr %a108 + %t110 = load { ptr, i64, i64 }, ptr %t106 + store { ptr, i64, i64 } %t109, ptr %t106 + store { ptr, i64, i64 } %t110, ptr %a111 + call void @finch_str_drop(ptr %a111) + %t112 = getelementptr inbounds %S.gen.Fallible, ptr %a84, i32 0, i32 1 + %t113 = getelementptr inbounds { ptr, i64, i64 }, ptr %t112, i32 0, i32 1 + %t114 = load i64, ptr %t113 + %t115 = icmp eq i64 %t114, 0 + br i1 %t115, label %then5822, label %endif5824 +then5822: + %t116 = load ptr, ptr %a1 + %t117 = load %S.ast.Node, ptr %a2 + call void @finch.gen.fail(ptr %t116, %S.ast.Node %t117, { ptr, i64, i64 } { ptr @.str.3753, i64 50, i64 0 }) + br label %endif5824 +endif5824: + %t118 = load %S.gen.Fallible, ptr %a84 + call void @finch.drop.S_gen_Val(ptr %a62) + call void @finch_str_drop(ptr %a41) + call void @finch_str_drop(ptr %a33) + call void @finch_str_drop(ptr %a25) + ret %S.gen.Fallible %t118 +} + +define internal void @finch.drop.S_gen_Fallible(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.gen.Fallible, ptr %a, i32 0, i32 0 + call void @finch.drop.S_gen_Val(ptr %t1) + %t2 = getelementptr inbounds %S.gen.Fallible, ptr %a, i32 0, i32 1 + call void @finch_str_drop(ptr %t2) + %t3 = getelementptr inbounds %S.gen.Fallible, ptr %a, i32 0, i32 2 + call void @finch_str_drop(ptr %t3) + ret void } define internal %S.gen.Val @finch.gen.tryExpr(ptr %p0, %S.ast.Node %p1) { @@ -50118,250 +59434,305 @@ entry: %a33 = alloca { ptr, i64, 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 - %a46 = alloca { ptr, i64, i64 }, align 16 + %a36 = alloca { ptr, i64, i64 }, align 16 + %a39 = 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 - %a50 = 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 %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 %a57 = alloca { ptr, i64, i64 }, align 16 %a58 = alloca { ptr, i64, i64 }, align 16 %a59 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca %S.gen.Fallible, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a76 = 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 + %a60 = alloca { ptr, i64, i64 }, align 16 + %a62 = 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 + %a77 = alloca %S.gen.Fallible, align 16 + %a80 = alloca { ptr, i64, i64 }, align 16 + %a83 = 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 + %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 %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 %a117 = 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 + %a120 = alloca { ptr, i64, i64 }, align 16 %a122 = alloca { ptr, i64, i64 }, align 16 %a123 = 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 - %a137 = alloca %S.gen.Val, align 16 - %a138 = alloca %S.gen.Val, align 16 + %a124 = alloca { ptr, i64, i64 }, align 16 + %a125 = 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 + %a132 = 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 + %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 + %a143 = alloca { ptr, i64, i64 }, align 16 + %a144 = alloca { ptr, i64, i64 }, align 16 + %a145 = alloca { ptr, i64, i64 }, align 16 + %a147 = alloca { ptr, i64, i64 }, align 16 + %a155 = alloca %S.gen.Val, align 16 + %a156 = alloca %S.gen.Val, align 16 store ptr %p0, ptr %a1 store %S.ast.Node %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic5458, label %ok5459 -panic5458: - call void @finch_panic(ptr @.str.3588, i64 2861, ptr @.str.3589) + br i1 %t4, label %panic5825, label %ok5826 +panic5825: + call void @finch_panic(ptr @.str.3754, i64 3114, ptr @.str.3755) unreachable -ok5459: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 44 +ok5826: + %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 45 %t6 = load i64, ptr %t5 %t7 = icmp sgt i64 %t6, 0 - br i1 %t7, label %then5460, label %endif5462 -then5460: + br i1 %t7, label %then5827, label %endif5829 +then5827: %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.3590, i64 30, i64 0 }) - br label %endif5462 -endif5462: + call void @finch.gen.fail(ptr %t8, %S.ast.Node %t9, { ptr, i64, i64 } { ptr @.str.3756, i64 30, i64 0 }) + br label %endif5829 +endif5829: %t10 = load ptr, ptr %a1 %t11 = icmp eq ptr %t10, null - br i1 %t11, label %panic5463, label %ok5464 -panic5463: - call void @finch_panic(ptr @.str.3591, i64 2864, ptr @.str.3592) + br i1 %t11, label %panic5830, label %ok5831 +panic5830: + call void @finch_panic(ptr @.str.3757, i64 3117, ptr @.str.3758) unreachable -ok5464: - %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 12 +ok5831: + %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 13 %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 %then5465, label %endif5467 -then5465: - store { ptr, i64, i64 } { ptr @.str.3593, i64 1, i64 0 }, ptr %a16 + br i1 %t15, label %then5832, label %endif5834 +then5832: + store { ptr, i64, i64 } { ptr @.str.3759, i64 1, i64 0 }, ptr %a16 %t17 = load ptr, ptr %a1 %t18 = icmp eq ptr %t17, null - br i1 %t18, label %panic5468, label %ok5469 -panic5468: - call void @finch_panic(ptr @.str.3594, i64 2866, ptr @.str.3595) + br i1 %t18, label %panic5835, label %ok5836 +panic5835: + call void @finch_panic(ptr @.str.3760, i64 3119, ptr @.str.3761) unreachable -ok5469: - %t19 = getelementptr inbounds %S.gen.Gen, ptr %t17, i32 0, i32 12 +ok5836: + %t19 = getelementptr inbounds %S.gen.Gen, ptr %t17, i32 0, i32 13 %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.3596, i64 4, i64 0 }, ptr %a24 + store { ptr, i64, i64 } { ptr @.str.3762, 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 %then5470, label %endif5472 -then5470: + br i1 %t26, label %then5837, label %endif5839 +then5837: %t27 = load ptr, ptr %a1 %t28 = icmp eq ptr %t27, null - br i1 %t28, label %panic5473, label %ok5474 -panic5473: - call void @finch_panic(ptr @.str.3597, i64 2867, ptr @.str.3598) + br i1 %t28, label %panic5840, label %ok5841 +panic5840: + call void @finch_panic(ptr @.str.3763, i64 3120, ptr @.str.3764) unreachable -ok5474: - %t29 = getelementptr inbounds %S.gen.Gen, ptr %t27, i32 0, i32 12 +ok5841: + %t29 = getelementptr inbounds %S.gen.Gen, ptr %t27, i32 0, i32 13 %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.3599, i64 1, i64 0 }, ptr %a35 + store { ptr, i64, i64 } { ptr @.str.3765, 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 %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 %panic5475, label %ok5476 -panic5475: - call void @finch_panic(ptr @.str.3601, i64 2869, ptr @.str.3602) + store { ptr, i64, i64 } %t32, ptr %a36 + call void @finch_str_drop(ptr %a36) + %t37 = load { ptr, i64, i64 }, ptr %a33 + %t38 = load { ptr, i64, i64 }, ptr %a16 + store { ptr, i64, i64 } %t37, ptr %a16 + store { ptr, i64, i64 } %t38, ptr %a39 + call void @finch_str_drop(ptr %a39) + br label %endif5839 +endif5839: + %t40 = load ptr, ptr %a1 + %t41 = load %S.ast.Node, ptr %a2 + %t42 = load ptr, ptr %a1 + %t43 = icmp eq ptr %t42, null + br i1 %t43, label %panic5842, label %ok5843 +panic5842: + call void @finch_panic(ptr @.str.3767, i64 3122, ptr @.str.3768) unreachable -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.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.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 - store { ptr, i64, i64 } %t51, ptr %a54 - store { ptr, i64, i64 } %t52, ptr %a55 - 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.3604, i64 55, i64 0 }, ptr %a59 +ok5843: + %t44 = getelementptr inbounds %S.gen.Gen, ptr %t42, i32 0, i32 13 + %t45 = getelementptr inbounds %S.gen.FnSig, ptr %t44, i32 0, i32 1 + %t46 = load { ptr, i64, i64 }, ptr %t45 + store { ptr, i64, i64 } { ptr @.str.3766, i64 29, 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.3769, i64 31, i64 0 }, ptr %a53 + call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) + store { ptr, i64, i64 } %t50, ptr %a54 + call void @finch_str_drop(ptr %a54) + %t55 = load { ptr, i64, i64 }, ptr %a51 + %t56 = load { ptr, i64, i64 }, ptr %a16 + store { ptr, i64, i64 } %t55, ptr %a58 + store { ptr, i64, i64 } %t56, 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 %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 %range5477, label %inrange5478 -range5477: - call void @finch_panic_index(ptr @.str.3605, i64 2871, i64 0, i64 %t64) + store { ptr, i64, i64 } %t55, ptr %a60 + call void @finch_str_drop(ptr %a60) + %t61 = load { ptr, i64, i64 }, ptr %a57 + store { ptr, i64, i64 } %t61, ptr %a63 + store { ptr, i64, i64 } { ptr @.str.3770, i64 55, i64 0 }, ptr %a64 + call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) + store { ptr, i64, i64 } %t61, ptr %a65 + call void @finch_str_drop(ptr %a65) + %t66 = load { ptr, i64, i64 }, ptr %a62 + call void @finch.gen.fail(ptr %t40, %S.ast.Node %t41, { ptr, i64, i64 } %t66) + store { ptr, i64, i64 } %t66, ptr %a67 + call void @finch_str_drop(ptr %a67) + call void @finch_str_drop(ptr %a16) + br label %endif5834 +endif5834: + %t68 = load ptr, ptr %a1 + %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 0, %t71 + br i1 %t72, label %range5844, label %inrange5845 +range5844: + call void @finch_panic_index(ptr @.str.3771, i64 3124, i64 0, i64 %t71) unreachable -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.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.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 - %t79 = load { ptr, i64, i64 }, ptr %t78 - %t80 = load { ptr, i64, i64 }, ptr %a73 - %t81 = load { ptr, i64, i64 }, ptr %a76 - call void @finch.gen.condBr(ptr %t77, { ptr, i64, i64 } %t79, { ptr, i64, i64 } %t80, { ptr, i64, i64 } %t81) - %t82 = load ptr, ptr %a1 - %t83 = load { ptr, i64, i64 }, ptr %a73 - call void @finch.gen.label(ptr %t82, { ptr, i64, i64 } %t83) +inrange5845: + %t73 = extractvalue { ptr, i64, i64 } %t70, 0 + %t74 = getelementptr inbounds %S.ast.Node, ptr %t73, i64 0 + %t75 = load %S.ast.Node, ptr %t74 + %t76 = call %S.gen.Fallible @finch.gen.fallibleCall(ptr %t68, %S.ast.Node %t75) + store %S.gen.Fallible %t76, ptr %a77 + %t78 = load ptr, ptr %a1 + %t79 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t78, { ptr, i64, i64 } { ptr @.str.3772, i64 10, i64 0 }) + store { ptr, i64, i64 } %t79, ptr %a80 + %t81 = load ptr, ptr %a1 + %t82 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t81, { ptr, i64, i64 } { ptr @.str.3773, i64 6, i64 0 }) + store { ptr, i64, i64 } %t82, ptr %a83 %t84 = load ptr, ptr %a1 - call void @finch.gen.unwind(ptr %t84, i64 0) - %t85 = load ptr, ptr %a1 - %t86 = load ptr, ptr %a1 - %t87 = load ptr, ptr %a1 - %t88 = icmp eq ptr %t87, null - br i1 %t88, label %panic5479, label %ok5480 -panic5479: - call void @finch_panic(ptr @.str.3609, i64 2877, ptr @.str.3610) + %t85 = getelementptr inbounds %S.gen.Fallible, ptr %a77, i32 0, i32 1 + %t86 = load { ptr, i64, i64 }, ptr %t85 + %t87 = load { ptr, i64, i64 }, ptr %a80 + %t88 = load { ptr, i64, i64 }, ptr %a83 + call void @finch.gen.condBr(ptr %t84, { ptr, i64, i64 } %t86, { ptr, i64, i64 } %t87, { ptr, i64, i64 } %t88) + %t89 = load ptr, ptr %a1 + %t90 = load { ptr, i64, i64 }, ptr %a80 + call void @finch.gen.label(ptr %t89, { ptr, i64, i64 } %t90) + %t91 = load ptr, ptr %a1 + call void @finch.gen.dropPending(ptr %t91, i64 0) + %t92 = load ptr, ptr %a1 + call void @finch.gen.unwind(ptr %t92, i64 0) + %t93 = load ptr, ptr %a1 + %t94 = load ptr, ptr %a1 + %t95 = load ptr, ptr %a1 + %t96 = icmp eq ptr %t95, null + br i1 %t96, label %panic5846, label %ok5847 +panic5846: + call void @finch_panic(ptr @.str.3775, i64 3131, ptr @.str.3776) unreachable -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.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.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 %panic5481, label %ok5482 -panic5481: - call void @finch_panic(ptr @.str.3613, i64 2877, ptr @.str.3614) +ok5847: + %t97 = getelementptr inbounds %S.gen.Gen, ptr %t95, i32 0, i32 13 + %t98 = load %S.gen.FnSig, ptr %t97 + %t99 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t94, %S.gen.FnSig %t98) + store { ptr, i64, i64 } { ptr @.str.3774, i64 4, i64 0 }, ptr %a101 + store { ptr, i64, i64 } %t99, ptr %a102 + call void @finch_str_concat(ptr %a100, ptr %a101, ptr %a102) + store { ptr, i64, i64 } %t99, ptr %a103 + call void @finch_str_drop(ptr %a103) + %t104 = load { ptr, i64, i64 }, ptr %a100 + store { ptr, i64, i64 } %t104, ptr %a106 + store { ptr, i64, i64 } { ptr @.str.3777, i64 1, i64 0 }, ptr %a107 + call void @finch_str_concat(ptr %a105, ptr %a106, ptr %a107) + store { ptr, i64, i64 } %t104, ptr %a108 + call void @finch_str_drop(ptr %a108) + %t109 = load { ptr, i64, i64 }, ptr %a105 + %t110 = load ptr, ptr %a1 + %t111 = load ptr, ptr %a1 + %t112 = load ptr, ptr %a1 + %t113 = icmp eq ptr %t112, null + br i1 %t113, label %panic5848, label %ok5849 +panic5848: + call void @finch_panic(ptr @.str.3779, i64 3131, ptr @.str.3780) unreachable -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.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.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 - %t116 = load { ptr, i64, i64 }, ptr %t115 - store { ptr, i64, i64 } %t114, ptr %a118 +ok5849: + %t114 = getelementptr inbounds %S.gen.Gen, ptr %t112, i32 0, i32 13 + %t115 = load %S.gen.FnSig, ptr %t114 + %t116 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t111, %S.gen.FnSig %t115) + store { ptr, i64, i64 } { ptr @.str.3778, i64 12, 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.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) - store { ptr, i64, i64 } %t99, 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 - 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 %panic5483, label %ok5484 -panic5483: - call void @finch_panic(ptr @.str.3617, i64 2878, ptr @.str.3618) + store { ptr, i64, i64 } %t116, ptr %a120 + call void @finch_str_drop(ptr %a120) + %t121 = load { ptr, i64, i64 }, ptr %a117 + store { ptr, i64, i64 } %t121, ptr %a123 + store { ptr, i64, i64 } { ptr @.str.3781, i64 36, i64 0 }, ptr %a124 + call void @finch_str_concat(ptr %a122, ptr %a123, ptr %a124) + store { ptr, i64, i64 } %t121, ptr %a125 + call void @finch_str_drop(ptr %a125) + %t126 = load { ptr, i64, i64 }, ptr %a122 + %t127 = getelementptr inbounds %S.gen.Fallible, ptr %a77, i32 0, i32 2 + %t128 = load { ptr, i64, i64 }, ptr %t127 + store { ptr, i64, i64 } %t126, ptr %a130 + store { ptr, i64, i64 } %t128, ptr %a131 + call void @finch_str_concat(ptr %a129, ptr %a130, ptr %a131) + store { ptr, i64, i64 } %t126, ptr %a132 + call void @finch_str_drop(ptr %a132) + %t133 = load { ptr, i64, i64 }, ptr %a129 + store { ptr, i64, i64 } %t133, ptr %a135 + store { ptr, i64, i64 } { ptr @.str.3782, i64 3, i64 0 }, ptr %a136 + call void @finch_str_concat(ptr %a134, ptr %a135, ptr %a136) + store { ptr, i64, i64 } %t133, ptr %a137 + call void @finch_str_drop(ptr %a137) + %t138 = load { ptr, i64, i64 }, ptr %a134 + %t139 = call { ptr, i64, i64 } @finch.gen.op(ptr %t110, { ptr, i64, i64 } %t138) + store { ptr, i64, i64 } %t138, ptr %a140 + call void @finch_str_drop(ptr %a140) + store { ptr, i64, i64 } %t109, ptr %a142 + store { ptr, i64, i64 } %t139, ptr %a143 + call void @finch_str_concat(ptr %a141, ptr %a142, ptr %a143) + store { ptr, i64, i64 } %t109, ptr %a144 + call void @finch_str_drop(ptr %a144) + store { ptr, i64, i64 } %t139, ptr %a145 + call void @finch_str_drop(ptr %a145) + %t146 = load { ptr, i64, i64 }, ptr %a141 + call void @finch.gen.emit(ptr %t93, { ptr, i64, i64 } %t146) + store { ptr, i64, i64 } %t146, ptr %a147 + call void @finch_str_drop(ptr %a147) + %t148 = load ptr, ptr %a1 + %t149 = icmp eq ptr %t148, null + br i1 %t149, label %panic5850, label %ok5851 +panic5850: + call void @finch_panic(ptr @.str.3783, i64 3132, ptr @.str.3784) unreachable -ok5484: - %t132 = getelementptr inbounds %S.gen.Gen, ptr %t130, i32 0, i32 9 - store i1 true, ptr %t132 - %t133 = load ptr, ptr %a1 - %t134 = load { ptr, i64, i64 }, ptr %a76 - call void @finch.gen.label(ptr %t133, { ptr, i64, i64 } %t134) - %t135 = getelementptr inbounds %S.gen.Fallible, ptr %a70, i32 0, i32 0 - %t136 = load %S.gen.Val, ptr %t135 - store %S.gen.Val %t136, ptr %a137 - call void @finch.copy.S_gen_Val(ptr %a138, ptr %a137) - %t139 = load %S.gen.Val, ptr %a138 - ret %S.gen.Val %t139 +ok5851: + %t150 = getelementptr inbounds %S.gen.Gen, ptr %t148, i32 0, i32 9 + store i1 true, ptr %t150 + %t151 = load ptr, ptr %a1 + %t152 = load { ptr, i64, i64 }, ptr %a83 + call void @finch.gen.label(ptr %t151, { ptr, i64, i64 } %t152) + %t153 = getelementptr inbounds %S.gen.Fallible, ptr %a77, i32 0, i32 0 + %t154 = load %S.gen.Val, ptr %t153 + store %S.gen.Val %t154, ptr %a155 + call void @finch.copy.S_gen_Val(ptr %a156, ptr %a155) + %t157 = load %S.gen.Val, ptr %a156 + call void @finch_str_drop(ptr %a83) + call void @finch_str_drop(ptr %a80) + call void @finch.drop.S_gen_Fallible(ptr %a77) + ret %S.gen.Val %t157 } define internal %S.gen.Val @finch.gen.orElse(ptr %p0, %S.ast.Node %p1, i1 %p2) { @@ -50375,52 +59746,66 @@ entry: %a19 = alloca %S.gen.Val, align 16 %a22 = alloca { ptr, i64, i64 }, align 16 %a25 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca i1, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca %S.gen.Val, align 16 - %a105 = alloca %S.gen.Val, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 + %a42 = alloca %S.ast.Type, align 16 + %a43 = alloca { ptr, i64, i64 }, align 16 + %a56 = alloca i1, align 16 + %a63 = alloca { ptr, i64, i64 }, align 16 + %a64 = alloca { ptr, i64, i64 }, align 16 + %a83 = alloca { ptr, i64, i64 }, align 16 + %a84 = alloca { ptr, i64, i64 }, align 16 + %a90 = alloca { ptr, i64, i64 }, align 16 %a111 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca %S.gen.Val, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 + %a112 = alloca { ptr, i64, i64 }, align 16 + %a130 = alloca %S.ast.Type, align 16 + %a131 = alloca { ptr, i64, i64 }, align 16 + %a154 = alloca %S.gen.Val, align 16 + %a155 = alloca %S.gen.Val, align 16 %a159 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 + %a163 = alloca { ptr, i64, i64 }, align 16 + %a166 = 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 + %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 + %a192 = 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 %a198 = alloca { ptr, i64, i64 }, align 16 - %a199 = 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 %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 + %a206 = 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 - %a210 = 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 %a214 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 %a218 = 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 - %a222 = alloca { ptr, i64, i64 }, align 16 %a223 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca %S.ast.Type, align 16 - %a230 = alloca %S.ast.Type, align 16 + %a224 = alloca { ptr, i64, i64 }, align 16 + %a225 = alloca { ptr, i64, i64 }, align 16 + %a226 = alloca { ptr, i64, i64 }, align 16 + %a229 = 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 + %a237 = alloca { ptr, i64, i64 }, align 16 + %a240 = alloca { ptr, i64, i64 }, align 16 + %a244 = alloca %S.ast.Type, align 16 + %a245 = alloca %S.ast.Type, align 16 store ptr %p0, ptr %a1 store %S.ast.Node %p1, ptr %a2 store i1 %p2, ptr %a3 @@ -50429,11 +59814,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 %range5485, label %inrange5486 -range5485: - call void @finch_panic_index(ptr @.str.3619, i64 2885, i64 0, i64 %t7) + br i1 %t8, label %range5852, label %inrange5853 +range5852: + call void @finch_panic_index(ptr @.str.3785, i64 3139, i64 0, i64 %t7) unreachable -inrange5486: +inrange5853: %t9 = extractvalue { ptr, i64, i64 } %t6, 0 %t10 = getelementptr inbounds %S.ast.Node, ptr %t9, i64 0 %t11 = load %S.ast.Node, ptr %t10 @@ -50446,10 +59831,10 @@ inrange5486: %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.3620, i64 9, i64 0 }) + %t21 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t20, { ptr, i64, i64 } { ptr @.str.3786, 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.3621, i64 5, i64 0 }) + %t24 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t23, { ptr, i64, i64 } { ptr @.str.3787, 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 @@ -50462,299 +59847,347 @@ inrange5486: 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 %then5487, label %endif5489 -then5487: + br i1 %t34, label %then5854, label %endif5856 +then5854: %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.3623, i64 3, i64 0 }) + %t38 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3789, 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.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 %range5490, label %inrange5491 -range5490: - call void @finch_panic_index(ptr @.str.3624, i64 2894, i64 1, i64 %t45) + %t41 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t36, %S.ast.Node %t37, { ptr, i64, i64 } { ptr @.str.3788, i64 3, i64 0 }, %S.ast.Type %t38, { ptr, i64, i64 } %t40, i1 true, i1 true) + store %S.ast.Type %t38, ptr %a42 + call void @finch.drop.S_ast_Type(ptr %a42) + store { ptr, i64, i64 } %t41, ptr %a43 + call void @finch_str_drop(ptr %a43) + %t44 = load ptr, ptr %a1 + %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 %range5857, label %inrange5858 +range5857: + call void @finch_panic_index(ptr @.str.3790, i64 3148, i64 1, i64 %t47) unreachable -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 %panic5492, label %ok5493 -panic5492: - call void @finch_panic(ptr @.str.3625, i64 2895, ptr @.str.3626) +inrange5858: + %t49 = extractvalue { ptr, i64, i64 } %t46, 0 + %t50 = getelementptr inbounds %S.ast.Node, ptr %t49, i64 1 + %t51 = load %S.ast.Node, ptr %t50 + call void @finch.gen.block(ptr %t44, %S.ast.Node %t51, i1 true) + %t52 = load ptr, ptr %a1 + %t53 = icmp eq ptr %t52, null + br i1 %t53, label %panic5859, label %ok5860 +panic5859: + call void @finch_panic(ptr @.str.3791, i64 3149, ptr @.str.3792) unreachable -ok5493: - %t52 = getelementptr inbounds %S.gen.Gen, ptr %t50, i32 0, i32 9 - %t53 = load i1, ptr %t52 - store i1 %t53, ptr %a54 - %t55 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t55) - %t56 = load i1, ptr %a54 - %t57 = xor i1 %t56, true - 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.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.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.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 %range5505, label %inrange5506 -range5505: - call void @finch_panic_index(ptr @.str.3628, i64 2898, i64 1, i64 %t72) +ok5860: + %t54 = getelementptr inbounds %S.gen.Gen, ptr %t52, i32 0, i32 9 + %t55 = load i1, ptr %t54 + store i1 %t55, ptr %a56 + %t57 = load ptr, ptr %a1 + call void @finch.gen.popScope(ptr %t57) + %t58 = load i1, ptr %a56 + %t59 = xor i1 %t58, true + br label %logic.from5861 +logic.from5861: + br i1 %t59, label %logic.rhs5862, label %logic.end5863 +logic.rhs5862: + %t60 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 + %t61 = getelementptr inbounds %S.ast.Type, ptr %t60, i32 0, i32 0 + %t62 = load { ptr, i64, i64 }, ptr %t61 + store { ptr, i64, i64 } %t62, ptr %a63 + store { ptr, i64, i64 } { ptr @.str.3793, i64 4, i64 0 }, ptr %a64 + %t65 = call i32 @finch_str_eq(ptr %a63, ptr %a64) + %t66 = icmp eq i32 %t65, 0 + br label %logic.rend5864 +logic.rend5864: + br label %logic.end5863 +logic.end5863: + %t67 = phi i1 [ false, %logic.from5861 ], [ %t66, %logic.rend5864 ] + br label %logic.from5865 +logic.from5865: + br i1 %t67, label %logic.rhs5866, label %logic.end5867 +logic.rhs5866: + %t68 = load i1, ptr %a3 + %t69 = xor i1 %t68, true + br label %logic.rend5868 +logic.rend5868: + br label %logic.end5867 +logic.end5867: + %t70 = phi i1 [ false, %logic.from5865 ], [ %t69, %logic.rend5868 ] + br i1 %t70, label %then5869, label %endif5871 +then5869: + %t71 = load ptr, ptr %a1 + %t72 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t73 = load { ptr, i64, i64 }, ptr %t72 + %t74 = extractvalue { ptr, i64, i64 } %t73, 1 + %t75 = icmp uge i64 1, %t74 + br i1 %t75, label %range5872, label %inrange5873 +range5872: + call void @finch_panic_index(ptr @.str.3794, i64 3152, i64 1, i64 %t74) unreachable -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.3629, i64 142, i64 0 }) - br label %endif5504 -endif5504: - %t77 = load i1, ptr %a3 - 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.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.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.3631, i64 6, i64 0 }) - store { ptr, i64, i64 } %t87, ptr %a88 - %t89 = load ptr, ptr %a1 - %t90 = load { ptr, i64, i64 }, ptr %a88 - call void @finch.gen.br(ptr %t89, { ptr, i64, i64 } %t90) +inrange5873: + %t76 = extractvalue { ptr, i64, i64 } %t73, 0 + %t77 = getelementptr inbounds %S.ast.Node, ptr %t76, i64 1 + %t78 = load %S.ast.Node, ptr %t77 + call void @finch.gen.fail(ptr %t71, %S.ast.Node %t78, { ptr, i64, i64 } { ptr @.str.3795, i64 142, i64 0 }) + br label %endif5871 +endif5871: + %t79 = load i1, ptr %a3 + br label %logic.from5874 +logic.from5874: + br i1 %t79, label %logic.rhs5875, label %logic.end5876 +logic.rhs5875: + %t80 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 + %t81 = getelementptr inbounds %S.ast.Type, ptr %t80, i32 0, i32 0 + %t82 = load { ptr, i64, i64 }, ptr %t81 + store { ptr, i64, i64 } %t82, ptr %a83 + store { ptr, i64, i64 } { ptr @.str.3796, i64 4, i64 0 }, ptr %a84 + %t85 = call i32 @finch_str_eq(ptr %a83, ptr %a84) + %t86 = icmp eq i32 %t85, 0 + br label %logic.rend5877 +logic.rend5877: + br label %logic.end5876 +logic.end5876: + %t87 = phi i1 [ false, %logic.from5874 ], [ %t86, %logic.rend5877 ] + br i1 %t87, label %then5878, label %endif5880 +then5878: + %t88 = load ptr, ptr %a1 + %t89 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t88, { ptr, i64, i64 } { ptr @.str.3797, i64 6, i64 0 }) + store { ptr, i64, i64 } %t89, ptr %a90 %t91 = load ptr, ptr %a1 - %t92 = load { ptr, i64, i64 }, ptr %a25 - call void @finch.gen.label(ptr %t91, { ptr, i64, i64 } %t92) + %t92 = load { ptr, i64, i64 }, ptr %a90 + call void @finch.gen.br(ptr %t91, { ptr, i64, i64 } %t92) %t93 = load ptr, ptr %a1 - %t94 = load { ptr, i64, i64 }, ptr %a88 - call void @finch.gen.br(ptr %t93, { ptr, i64, i64 } %t94) + %t94 = load { ptr, i64, i64 }, ptr %a25 + call void @finch.gen.label(ptr %t93, { ptr, i64, i64 } %t94) %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.3632, i64 4, i64 0 }) - %t98 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t97, 1 - ret %S.gen.Val %t98 -endif5513: + %t96 = load %S.gen.Val, ptr %a19 + call void @finch.gen.release(ptr %t95, %S.gen.Val %t96) + %t97 = load ptr, ptr %a1 + %t98 = load { ptr, i64, i64 }, ptr %a90 + call void @finch.gen.br(ptr %t97, { ptr, i64, i64 } %t98) %t99 = load ptr, ptr %a1 - %t100 = load { ptr, i64, i64 }, ptr %a25 - call void @finch.gen.br(ptr %t99, { ptr, i64, i64 } %t100) - %t101 = load ptr, ptr %a1 - %t102 = load { ptr, i64, i64 }, ptr %a25 - call void @finch.gen.label(ptr %t101, { ptr, i64, i64 } %t102) - %t103 = load %S.gen.Val, ptr %a19 - store %S.gen.Val %t103, ptr %a104 - call void @finch.copy.S_gen_Val(ptr %a105, ptr %a104) - %t106 = load %S.gen.Val, ptr %a105 - ret %S.gen.Val %t106 -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.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 %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 %range5517, label %inrange5518 -range5517: - call void @finch_panic_index(ptr @.str.3634, i64 2913, i64 1, i64 %t117) + %t100 = load { ptr, i64, i64 }, ptr %a90 + call void @finch.gen.label(ptr %t99, { ptr, i64, i64 } %t100) + %t101 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3798, i64 4, i64 0 }) + %t102 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t101, 1 + call void @finch_str_drop(ptr %a90) + call void @finch_str_drop(ptr %a25) + call void @finch_str_drop(ptr %a22) + call void @finch.drop.S_gen_Val(ptr %a19) + call void @finch.drop.S_gen_Fallible(ptr %a13) + ret %S.gen.Val %t102 +endif5880: + %t103 = load ptr, ptr %a1 + %t104 = load { ptr, i64, i64 }, ptr %a25 + call void @finch.gen.br(ptr %t103, { ptr, i64, i64 } %t104) + %t105 = load ptr, ptr %a1 + %t106 = load { ptr, i64, i64 }, ptr %a25 + call void @finch.gen.label(ptr %t105, { ptr, i64, i64 } %t106) + %t107 = load %S.gen.Val, ptr %a19 + call void @finch_str_drop(ptr %a25) + call void @finch_str_drop(ptr %a22) + call void @finch.drop.S_gen_Fallible(ptr %a13) + ret %S.gen.Val %t107 +endif5856: + %t108 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 + %t109 = getelementptr inbounds %S.ast.Type, ptr %t108, i32 0, i32 0 + %t110 = load { ptr, i64, i64 }, ptr %t109 + store { ptr, i64, i64 } %t110, ptr %a111 + store { ptr, i64, i64 } { ptr @.str.3799, 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 %then5881, label %endif5883 +then5881: + %t115 = load ptr, ptr %a1 + %t116 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t117 = load { ptr, i64, i64 }, ptr %t116 + %t118 = extractvalue { ptr, i64, i64 } %t117, 1 + %t119 = icmp uge i64 1, %t118 + br i1 %t119, label %range5884, label %inrange5885 +range5884: + call void @finch_panic_index(ptr @.str.3800, i64 3168, i64 1, i64 %t118) unreachable -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.3635, i64 98, i64 0 }) - br label %endif5516 -endif5516: - %t122 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t122) +inrange5885: + %t120 = extractvalue { ptr, i64, i64 } %t117, 0 + %t121 = getelementptr inbounds %S.ast.Node, ptr %t120, i64 1 + %t122 = load %S.ast.Node, ptr %t121 + call void @finch.gen.fail(ptr %t115, %S.ast.Node %t122, { ptr, i64, i64 } { ptr @.str.3801, i64 98, i64 0 }) + br label %endif5883 +endif5883: %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.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.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 %range5519, label %inrange5520 -range5519: - call void @finch_panic_index(ptr @.str.3638, i64 2917, i64 1, i64 %t133) + call void @finch.gen.pushScope(ptr %t123) + %t124 = load ptr, ptr %a1 + %t125 = load %S.ast.Node, ptr %a2 + %t126 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3803, i64 3, i64 0 }) + %t127 = getelementptr inbounds %S.gen.Fallible, ptr %a13, i32 0, i32 2 + %t128 = load { ptr, i64, i64 }, ptr %t127 + %t129 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t124, %S.ast.Node %t125, { ptr, i64, i64 } { ptr @.str.3802, i64 3, i64 0 }, %S.ast.Type %t126, { ptr, i64, i64 } %t128, i1 true, i1 true) + store %S.ast.Type %t126, ptr %a130 + call void @finch.drop.S_ast_Type(ptr %a130) + store { ptr, i64, i64 } %t129, ptr %a131 + call void @finch_str_drop(ptr %a131) + %t132 = load ptr, ptr %a1 + %t133 = load ptr, ptr %a1 + %t134 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t135 = load { ptr, i64, i64 }, ptr %t134 + %t136 = extractvalue { ptr, i64, i64 } %t135, 1 + %t137 = icmp uge i64 1, %t136 + br i1 %t137, label %range5886, label %inrange5887 +range5886: + call void @finch_panic_index(ptr @.str.3804, i64 3172, i64 1, i64 %t136) unreachable -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 - %t138 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 - %t139 = load %S.ast.Type, ptr %t138 - %t140 = call %S.gen.Val @finch.gen.exprWant(ptr %t130, %S.ast.Node %t137, %S.ast.Type %t139) +inrange5887: + %t138 = extractvalue { ptr, i64, i64 } %t135, 0 + %t139 = getelementptr inbounds %S.ast.Node, ptr %t138, i64 1 + %t140 = load %S.ast.Node, ptr %t139 %t141 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 %t142 = load %S.ast.Type, ptr %t141 - %t143 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t144 = load { ptr, i64, i64 }, ptr %t143 - %t145 = extractvalue { ptr, i64, i64 } %t144, 1 - %t146 = icmp uge i64 1, %t145 - br i1 %t146, label %range5521, label %inrange5522 -range5521: - call void @finch_panic_index(ptr @.str.3639, i64 2917, i64 1, i64 %t145) + %t143 = call %S.gen.Val @finch.gen.exprWant(ptr %t133, %S.ast.Node %t140, %S.ast.Type %t142) + %t144 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 + %t145 = load %S.ast.Type, ptr %t144 + %t146 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t147 = load { ptr, i64, i64 }, ptr %t146 + %t148 = extractvalue { ptr, i64, i64 } %t147, 1 + %t149 = icmp uge i64 1, %t148 + br i1 %t149, label %range5888, label %inrange5889 +range5888: + call void @finch_panic_index(ptr @.str.3805, i64 3172, i64 1, i64 %t148) unreachable -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.3640, i64 20, i64 0 }) - store %S.gen.Val %t150, ptr %a151 - %t152 = load ptr, ptr %a1 - %t153 = load %S.gen.Val, ptr %a151 - %t154 = call { ptr, i64, i64 } @finch.gen.own(ptr %t152, %S.gen.Val %t153) - store { ptr, i64, i64 } %t154, ptr %a155 +inrange5889: + %t150 = extractvalue { ptr, i64, i64 } %t147, 0 + %t151 = getelementptr inbounds %S.ast.Node, ptr %t150, i64 1 + %t152 = load %S.ast.Node, ptr %t151 + %t153 = call %S.gen.Val @finch.gen.coerce(ptr %t132, %S.gen.Val %t143, %S.ast.Type %t145, %S.ast.Node %t152, { ptr, i64, i64 } { ptr @.str.3806, i64 20, i64 0 }) + store %S.gen.Val %t143, ptr %a154 + call void @finch.drop.S_gen_Val(ptr %a154) + store %S.gen.Val %t153, ptr %a155 %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.3641, i64 7, i64 0 }) + %t157 = load %S.gen.Val, ptr %a155 + %t158 = call { ptr, i64, i64 } @finch.gen.own(ptr %t156, %S.gen.Val %t157) 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.3642, i64 6, i64 0 }) - store { ptr, i64, i64 } %t161, ptr %a162 - %t163 = load ptr, ptr %a1 - %t164 = load { ptr, i64, i64 }, ptr %a159 - call void @finch.gen.br(ptr %t163, { ptr, i64, i64 } %t164) - %t165 = load ptr, ptr %a1 - %t166 = load { ptr, i64, i64 }, ptr %a159 - call void @finch.gen.label(ptr %t165, { ptr, i64, i64 } %t166) + call void @finch.gen.popScope(ptr %t160) + %t161 = load ptr, ptr %a1 + %t162 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t161, { ptr, i64, i64 } { ptr @.str.3807, i64 7, i64 0 }) + store { ptr, i64, i64 } %t162, ptr %a163 + %t164 = load ptr, ptr %a1 + %t165 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t164, { ptr, i64, i64 } { ptr @.str.3808, i64 6, i64 0 }) + store { ptr, i64, i64 } %t165, ptr %a166 %t167 = load ptr, ptr %a1 - %t168 = load { ptr, i64, i64 }, ptr %a162 + %t168 = load { ptr, i64, i64 }, ptr %a163 call void @finch.gen.br(ptr %t167, { ptr, i64, i64 } %t168) %t169 = load ptr, ptr %a1 - %t170 = load { ptr, i64, i64 }, ptr %a25 + %t170 = load { ptr, i64, i64 }, ptr %a163 call void @finch.gen.label(ptr %t169, { ptr, i64, i64 } %t170) %t171 = load ptr, ptr %a1 - %t172 = load { ptr, i64, i64 }, ptr %a162 + %t172 = load { ptr, i64, i64 }, ptr %a166 call void @finch.gen.br(ptr %t171, { ptr, i64, i64 } %t172) %t173 = load ptr, ptr %a1 - %t174 = load { ptr, i64, i64 }, ptr %a162 + %t174 = load { ptr, i64, i64 }, ptr %a25 call void @finch.gen.label(ptr %t173, { ptr, i64, i64 } %t174) %t175 = load ptr, ptr %a1 - %t176 = load ptr, ptr %a1 - %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.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.3644, i64 3, i64 0 }, ptr %a186 + %t176 = load { ptr, i64, i64 }, ptr %a166 + call void @finch.gen.br(ptr %t175, { ptr, i64, i64 } %t176) + %t177 = load ptr, ptr %a1 + %t178 = load { ptr, i64, i64 }, ptr %a166 + call void @finch.gen.label(ptr %t177, { ptr, i64, i64 } %t178) + %t179 = load ptr, ptr %a1 + %t180 = load ptr, ptr %a1 + %t181 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 + %t182 = load %S.ast.Type, ptr %t181 + %t183 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t180, %S.ast.Type %t182) + store { ptr, i64, i64 } { ptr @.str.3809, i64 4, 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 - %t188 = load { ptr, i64, i64 }, ptr %a155 - store { ptr, i64, i64 } %t187, ptr %a190 - store { ptr, i64, i64 } %t188, ptr %a191 + store { ptr, i64, i64 } %t183, ptr %a187 + call void @finch_str_drop(ptr %a187) + %t188 = load { ptr, i64, i64 }, ptr %a184 + store { ptr, i64, i64 } %t188, ptr %a190 + store { ptr, i64, i64 } { ptr @.str.3810, i64 3, i64 0 }, 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.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 - store { ptr, i64, i64 } %t196, 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.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 - %t207 = load { ptr, i64, i64 }, ptr %t206 - store { ptr, i64, i64 } %t205, ptr %a209 - store { ptr, i64, i64 } %t207, ptr %a210 - 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.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 - store { ptr, i64, i64 } %t215, 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.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) - %t226 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t225, 0 - %t227 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 - %t228 = load %S.ast.Type, ptr %t227 - store %S.ast.Type %t228, ptr %a229 - call void @finch.copy.S_ast_Type(ptr %a230, ptr %a229) - %t231 = load %S.ast.Type, ptr %a230 - %t232 = insertvalue %S.gen.Val %t226, %S.ast.Type %t231, 1 - %t233 = load ptr, ptr %a1 - %t234 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 - %t235 = load %S.ast.Type, ptr %t234 - %t236 = call i1 @finch.gen.owning(ptr %t233, %S.ast.Type %t235) - %t237 = insertvalue %S.gen.Val %t232, i1 %t236, 2 - ret %S.gen.Val %t237 + store { ptr, i64, i64 } %t188, ptr %a192 + call void @finch_str_drop(ptr %a192) + %t193 = load { ptr, i64, i64 }, ptr %a189 + %t194 = load { ptr, i64, i64 }, ptr %a159 + store { ptr, i64, i64 } %t193, ptr %a196 + store { ptr, i64, i64 } %t194, ptr %a197 + call void @finch_str_concat(ptr %a195, ptr %a196, ptr %a197) + store { ptr, i64, i64 } %t193, ptr %a198 + call void @finch_str_drop(ptr %a198) + %t199 = load { ptr, i64, i64 }, ptr %a195 + store { ptr, i64, i64 } %t199, ptr %a201 + store { ptr, i64, i64 } { ptr @.str.3811, i64 3, i64 0 }, ptr %a202 + call void @finch_str_concat(ptr %a200, ptr %a201, ptr %a202) + store { ptr, i64, i64 } %t199, ptr %a203 + call void @finch_str_drop(ptr %a203) + %t204 = load { ptr, i64, i64 }, ptr %a200 + %t205 = load { ptr, i64, i64 }, ptr %a163 + 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) + store { ptr, i64, i64 } %t204, ptr %a209 + call void @finch_str_drop(ptr %a209) + %t210 = load { ptr, i64, i64 }, ptr %a206 + store { ptr, i64, i64 } %t210, ptr %a212 + store { ptr, i64, i64 } { ptr @.str.3812, i64 6, i64 0 }, ptr %a213 + call void @finch_str_concat(ptr %a211, ptr %a212, ptr %a213) + store { ptr, i64, i64 } %t210, ptr %a214 + call void @finch_str_drop(ptr %a214) + %t215 = load { ptr, i64, i64 }, ptr %a211 + %t216 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 0 + %t217 = load { ptr, i64, i64 }, ptr %t216 + store { ptr, i64, i64 } %t215, ptr %a219 + store { ptr, i64, i64 } %t217, ptr %a220 + call void @finch_str_concat(ptr %a218, ptr %a219, ptr %a220) + store { ptr, i64, i64 } %t215, ptr %a221 + call void @finch_str_drop(ptr %a221) + %t222 = load { ptr, i64, i64 }, ptr %a218 + store { ptr, i64, i64 } %t222, ptr %a224 + store { ptr, i64, i64 } { ptr @.str.3813, i64 3, i64 0 }, ptr %a225 + call void @finch_str_concat(ptr %a223, ptr %a224, ptr %a225) + store { ptr, i64, i64 } %t222, ptr %a226 + call void @finch_str_drop(ptr %a226) + %t227 = load { ptr, i64, i64 }, ptr %a223 + %t228 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t227, ptr %a230 + store { ptr, i64, i64 } %t228, ptr %a231 + call void @finch_str_concat(ptr %a229, ptr %a230, ptr %a231) + store { ptr, i64, i64 } %t227, ptr %a232 + call void @finch_str_drop(ptr %a232) + %t233 = load { ptr, i64, i64 }, ptr %a229 + store { ptr, i64, i64 } %t233, ptr %a235 + store { ptr, i64, i64 } { ptr @.str.3814, i64 2, i64 0 }, ptr %a236 + call void @finch_str_concat(ptr %a234, ptr %a235, ptr %a236) + store { ptr, i64, i64 } %t233, ptr %a237 + call void @finch_str_drop(ptr %a237) + %t238 = load { ptr, i64, i64 }, ptr %a234 + %t239 = call { ptr, i64, i64 } @finch.gen.op(ptr %t179, { ptr, i64, i64 } %t238) + store { ptr, i64, i64 } %t238, ptr %a240 + call void @finch_str_drop(ptr %a240) + %t241 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t239, 0 + %t242 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 + %t243 = load %S.ast.Type, ptr %t242 + store %S.ast.Type %t243, ptr %a244 + call void @finch.copy.S_ast_Type(ptr %a245, ptr %a244) + %t246 = load %S.ast.Type, ptr %a245 + %t247 = insertvalue %S.gen.Val %t241, %S.ast.Type %t246, 1 + %t248 = load ptr, ptr %a1 + %t249 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 + %t250 = load %S.ast.Type, ptr %t249 + %t251 = call i1 @finch.gen.owning(ptr %t248, %S.ast.Type %t250) + %t252 = insertvalue %S.gen.Val %t247, i1 %t251, 2 + call void @finch_str_drop(ptr %a166) + call void @finch_str_drop(ptr %a163) + call void @finch_str_drop(ptr %a159) + call void @finch.drop.S_gen_Val(ptr %a155) + call void @finch_str_drop(ptr %a25) + call void @finch_str_drop(ptr %a22) + call void @finch.drop.S_gen_Val(ptr %a19) + call void @finch.drop.S_gen_Fallible(ptr %a13) + ret %S.gen.Val %t252 } define internal %S.gen.Val @finch.gen.exprWant(ptr %p0, %S.ast.Node %p1, %S.ast.Type %p2) { @@ -50772,31 +60205,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.3649, i64 5, i64 0 }, ptr %a7 + store { ptr, i64, i64 } { ptr @.str.3815, 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 %then5523, label %endif5525 -then5523: + br i1 %t9, label %then5890, label %endif5892 +then5890: %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 -endif5525: +endif5892: %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.3650, i64 3, i64 0 }, ptr %a17 + store { ptr, i64, i64 } { ptr @.str.3816, 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 %then5526, label %endif5528 -then5526: + br i1 %t19, label %then5893, label %endif5895 +then5893: %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 -endif5528: +endif5895: %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) @@ -50853,29 +60286,33 @@ entry: %a180 = alloca %S.gen.Ref, align 16 %a186 = alloca %S.gen.Val, align 16 %a187 = alloca %S.gen.Val, align 16 - %a203 = alloca %S.ast.Type, align 16 + %a199 = alloca { ptr, i64, i64 }, align 16 %a204 = alloca %S.ast.Type, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 + %a205 = alloca %S.ast.Type, align 16 %a209 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 + %a210 = alloca { ptr, i64, i64 }, align 16 %a217 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 + %a218 = alloca { ptr, i64, i64 }, align 16 %a225 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 + %a226 = alloca { ptr, i64, i64 }, align 16 %a233 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 + %a234 = alloca { ptr, i64, i64 }, align 16 %a241 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 + %a242 = alloca { ptr, i64, i64 }, align 16 %a249 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 + %a250 = alloca { ptr, i64, i64 }, align 16 %a257 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 + %a258 = alloca { ptr, i64, i64 }, align 16 %a265 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a274 = 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 + %a266 = alloca { ptr, i64, i64 }, align 16 + %a273 = alloca %S.ast.Type, align 16 + %a275 = alloca { ptr, i64, i64 }, align 16 + %a276 = alloca { ptr, i64, i64 }, align 16 + %a283 = alloca %S.ast.Type, align 16 + %a287 = alloca { ptr, i64, i64 }, align 16 + %a288 = alloca { ptr, i64, i64 }, align 16 + %a289 = alloca { ptr, i64, i64 }, align 16 + %a291 = 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 0 @@ -50886,34 +60323,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.3651, i64 3, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.3817, 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 %then5529, label %endif5531 -then5529: + br i1 %t13, label %then5896, label %endif5898 +then5896: %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.3653, i64 2, i64 0 }, ptr %a18 + store { ptr, i64, i64 } { ptr @.str.3819, 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.from5532 -logic.from5532: - br i1 %t20, label %logic.end5534, label %logic.rhs5533 -logic.rhs5533: + br label %logic.from5899 +logic.from5899: + br i1 %t20, label %logic.end5901, label %logic.rhs5900 +logic.rhs5900: %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.3655, i64 2, i64 0 }, ptr %a25 + store { ptr, i64, i64 } { ptr @.str.3821, 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.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: + br label %logic.rend5902 +logic.rend5902: + br label %logic.end5901 +logic.end5901: + %t28 = phi i1 [ true, %logic.from5899 ], [ %t27, %logic.rend5902 ] + br i1 %t28, label %then5903, label %endif5905 +then5903: store i64 0, ptr %a29 %t30 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 %t31 = load { ptr, i64, i64 }, ptr %t30 @@ -50921,18 +60358,18 @@ then5536: %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.3656, i64 2946) + call void @finch_str_sub(ptr %a33, ptr %a32, i64 2, i64 %t36, ptr @.str.3822, i64 3201) %t37 = load { ptr, i64, i64 }, ptr %a33 store { ptr, i64, i64 } %t37, ptr %a38 store i64 0, ptr %a39 - br label %each.cond5539 -each.cond5539: + br label %each.cond5906 +each.cond5906: %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.body5540, label %each.end5542 -each.body5540: + br i1 %t43, label %each.body5907, label %each.end5909 +each.body5907: %t44 = load ptr, ptr %a38 %t45 = getelementptr inbounds i8, ptr %t44, i64 %t42 %t46 = load i8, ptr %t45 @@ -50944,134 +60381,139 @@ each.body5540: store i64 %t51, ptr %a52 %t53 = load i8, ptr %a47 %t54 = icmp uge i8 %t53, 97 - br label %logic.from5543 -logic.from5543: - br i1 %t54, label %logic.rhs5544, label %logic.end5545 -logic.rhs5544: + br label %logic.from5910 +logic.from5910: + br i1 %t54, label %logic.rhs5911, label %logic.end5912 +logic.rhs5911: %t55 = load i8, ptr %a47 %t56 = icmp ule i8 %t55, 102 - 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: + br label %logic.rend5913 +logic.rend5913: + br label %logic.end5912 +logic.end5912: + %t57 = phi i1 [ false, %logic.from5910 ], [ %t56, %logic.rend5913 ] + br i1 %t57, label %then5914, label %endif5916 +then5914: %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 %endif5549 -endif5549: + br label %endif5916 +endif5916: %t63 = load i8, ptr %a47 %t64 = icmp uge i8 %t63, 65 - br label %logic.from5550 -logic.from5550: - br i1 %t64, label %logic.rhs5551, label %logic.end5552 -logic.rhs5551: + br label %logic.from5917 +logic.from5917: + br i1 %t64, label %logic.rhs5918, label %logic.end5919 +logic.rhs5918: %t65 = load i8, ptr %a47 %t66 = icmp ule i8 %t65, 70 - 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: + br label %logic.rend5920 +logic.rend5920: + br label %logic.end5919 +logic.end5919: + %t67 = phi i1 [ false, %logic.from5917 ], [ %t66, %logic.rend5920 ] + br i1 %t67, label %then5921, label %endif5923 +then5921: %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 %endif5556 -endif5556: + br label %endif5923 +endif5923: %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.step5541 -each.step5541: + br label %each.step5908 +each.step5908: %t77 = load i64, ptr %a39 %t78 = add i64 %t77, 1 store i64 %t78, ptr %a39 - br label %each.cond5539 -each.end5542: + br label %each.cond5906 +each.end5909: + call void @finch_str_drop(ptr %a38) %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.3657, i64 3, i64 0 }) + %t83 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3823, i64 3, i64 0 }) %t84 = insertvalue %S.gen.Val %t82, %S.ast.Type %t83, 1 %t85 = insertvalue %S.gen.Val %t84, i1 true, 3 + call void @finch_str_drop(ptr %a8) ret %S.gen.Val %t85 -endif5538: +endif5905: %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.3658, i64 2958) + %t89 = call i64 @finch_str_to_int(ptr %a88, ptr @.str.3824, i64 3213) 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.3659, i64 3, i64 0 }) + %t93 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3825, i64 3, i64 0 }) %t94 = insertvalue %S.gen.Val %t92, %S.ast.Type %t93, 1 %t95 = insertvalue %S.gen.Val %t94, i1 true, 3 + call void @finch_str_drop(ptr %a8) ret %S.gen.Val %t95 -endif5531: +endif5898: %t96 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t96, ptr %a97 - store { ptr, i64, i64 } { ptr @.str.3660, i64 5, i64 0 }, ptr %a98 + store { ptr, i64, i64 } { ptr @.str.3826, 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 %then5557, label %endif5559 -then5557: + br i1 %t100, label %then5924, label %endif5926 +then5924: %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.3661, i64 5, i64 0 }) + %t107 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3827, i64 5, i64 0 }) %t108 = insertvalue %S.gen.Val %t106, %S.ast.Type %t107, 1 %t109 = insertvalue %S.gen.Val %t108, i1 true, 3 + call void @finch_str_drop(ptr %a8) ret %S.gen.Val %t109 -endif5559: +endif5926: %t110 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t110, ptr %a111 - store { ptr, i64, i64 } { ptr @.str.3662, i64 4, i64 0 }, ptr %a112 + store { ptr, i64, i64 } { ptr @.str.3828, 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 %then5560, label %endif5562 -then5560: + br i1 %t114, label %then5927, label %endif5929 +then5927: %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.3663, i64 4, i64 0 }) + %t121 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3829, i64 4, i64 0 }) %t122 = insertvalue %S.gen.Val %t120, %S.ast.Type %t121, 1 + call void @finch_str_drop(ptr %a8) ret %S.gen.Val %t122 -endif5562: +endif5929: %t123 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t123, ptr %a124 - store { ptr, i64, i64 } { ptr @.str.3664, i64 4, i64 0 }, ptr %a125 + store { ptr, i64, i64 } { ptr @.str.3830, 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 %then5563, label %endif5565 -then5563: + br i1 %t127, label %then5930, label %endif5932 +then5930: %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 %range5566, label %inrange5567 -range5566: - call void @finch_panic_index(ptr @.str.3665, i64 2967, i64 0, i64 %t130) + br i1 %t131, label %range5933, label %inrange5934 +range5933: + call void @finch_panic_index(ptr @.str.3831, i64 3222, i64 0, i64 %t130) unreachable -inrange5567: +inrange5934: %t132 = extractvalue { ptr, i64, i64 } %t129, 0 %t133 = getelementptr inbounds i8, ptr %t132, i64 0 %t134 = load i8, ptr %t133 @@ -51081,70 +60523,73 @@ inrange5567: 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.3666, i64 4, i64 0 }) + %t141 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3832, i64 4, i64 0 }) %t142 = insertvalue %S.gen.Val %t140, %S.ast.Type %t141, 1 + call void @finch_str_drop(ptr %a8) ret %S.gen.Val %t142 -endif5565: +endif5932: %t143 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t143, ptr %a144 - store { ptr, i64, i64 } { ptr @.str.3667, i64 3, i64 0 }, ptr %a145 + store { ptr, i64, i64 } { ptr @.str.3833, 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 %then5568, label %endif5570 -then5568: + br i1 %t147, label %then5935, label %endif5937 +then5935: %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) + call void @finch_str_drop(ptr %a8) ret %S.gen.Val %t151 -endif5570: +endif5937: %t152 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t152, ptr %a153 - store { ptr, i64, i64 } { ptr @.str.3668, i64 4, i64 0 }, ptr %a154 + store { ptr, i64, i64 } { ptr @.str.3834, 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 %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 }) + br i1 %t156, label %then5938, label %endif5940 +then5938: + %t157 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } { ptr @.str.3835, i64 4, i64 0 }, 0 + %t158 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3836, i64 4, i64 0 }) %t159 = insertvalue %S.gen.Val %t157, %S.ast.Type %t158, 1 + call void @finch_str_drop(ptr %a8) ret %S.gen.Val %t159 -endif5573: +endif5940: %t160 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t160, ptr %a161 - store { ptr, i64, i64 } { ptr @.str.3671, i64 3, i64 0 }, ptr %a162 + store { ptr, i64, i64 } { ptr @.str.3837, 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.from5574 -logic.from5574: - br i1 %t164, label %logic.end5576, label %logic.rhs5575 -logic.rhs5575: + br label %logic.from5941 +logic.from5941: + br i1 %t164, label %logic.end5943, label %logic.rhs5942 +logic.rhs5942: %t165 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t165, ptr %a166 - store { ptr, i64, i64 } { ptr @.str.3672, i64 6, i64 0 }, ptr %a167 + store { ptr, i64, i64 } { ptr @.str.3838, 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.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: + br label %logic.rend5944 +logic.rend5944: + br label %logic.end5943 +logic.end5943: + %t170 = phi i1 [ true, %logic.from5941 ], [ %t169, %logic.rend5944 ] + br label %logic.from5945 +logic.from5945: + br i1 %t170, label %logic.end5947, label %logic.rhs5946 +logic.rhs5946: %t171 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t171, ptr %a172 - store { ptr, i64, i64 } { ptr @.str.3673, i64 5, i64 0 }, ptr %a173 + store { ptr, i64, i64 } { ptr @.str.3839, 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.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: + br label %logic.rend5948 +logic.rend5948: + br label %logic.end5947 +logic.end5947: + %t176 = phi i1 [ true, %logic.from5945 ], [ %t175, %logic.rend5948 ] + br i1 %t176, label %then5949, label %endif5951 +then5949: %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) @@ -51152,15 +60597,17 @@ then5582: %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 %then5585, label %endif5587 -then5585: + br i1 %t183, label %then5952, label %endif5954 +then5952: %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 + call void @finch.drop.S_gen_Ref(ptr %a180) + call void @finch_str_drop(ptr %a8) ret %S.gen.Val %t188 -endif5587: +endif5954: %t189 = load ptr, ptr %a1 %t190 = load ptr, ptr %a1 %t191 = getelementptr inbounds %S.gen.Ref, ptr %a180, i32 0, i32 1 @@ -51171,134 +60618,154 @@ endif5587: %t196 = getelementptr inbounds %S.gen.Place, ptr %t195, i32 0, i32 0 %t197 = load { ptr, i64, i64 }, ptr %t196 %t198 = call { ptr, i64, i64 } @finch.gen.load(ptr %t189, { ptr, i64, i64 } %t194, { ptr, i64, i64 } %t197) - %t199 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t198, 0 - %t200 = getelementptr inbounds %S.gen.Ref, ptr %a180, i32 0, i32 1 - %t201 = getelementptr inbounds %S.gen.Place, ptr %t200, i32 0, i32 1 - %t202 = load %S.ast.Type, ptr %t201 - store %S.ast.Type %t202, ptr %a203 - call void @finch.copy.S_ast_Type(ptr %a204, ptr %a203) - %t205 = load %S.ast.Type, ptr %a204 - %t206 = insertvalue %S.gen.Val %t199, %S.ast.Type %t205, 1 - ret %S.gen.Val %t206 -endif5584: - %t207 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t207, ptr %a208 - 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 %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 -endif5590: - %t215 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t215, ptr %a216 - 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 %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 -endif5593: - %t223 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t223, ptr %a224 - 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 %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 -endif5596: - %t231 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t231, ptr %a232 - 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 %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 -endif5599: - %t239 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t239, ptr %a240 - 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 %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 -endif5602: - %t247 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t247, ptr %a248 - 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 %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 -endif5605: - %t255 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t255, ptr %a256 - 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 %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 -endif5608: - %t263 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t263, ptr %a264 - 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 %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.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 -endif5611: - %t272 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t272, ptr %a273 - 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 %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.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 -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.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 - call void @finch.gen.fail(ptr %t281, %S.ast.Node %t282, { ptr, i64, i64 } %t287) + store { ptr, i64, i64 } %t194, ptr %a199 + call void @finch_str_drop(ptr %a199) + %t200 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t198, 0 + %t201 = getelementptr inbounds %S.gen.Ref, ptr %a180, i32 0, i32 1 + %t202 = getelementptr inbounds %S.gen.Place, ptr %t201, i32 0, i32 1 + %t203 = load %S.ast.Type, ptr %t202 + store %S.ast.Type %t203, ptr %a204 + call void @finch.copy.S_ast_Type(ptr %a205, ptr %a204) + %t206 = load %S.ast.Type, ptr %a205 + %t207 = insertvalue %S.gen.Val %t200, %S.ast.Type %t206, 1 + call void @finch.drop.S_gen_Ref(ptr %a180) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t207 +endif5951: + %t208 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t208, ptr %a209 + store { ptr, i64, i64 } { ptr @.str.3840, i64 5, i64 0 }, ptr %a210 + %t211 = call i32 @finch_str_eq(ptr %a209, ptr %a210) + %t212 = icmp ne i32 %t211, 0 + br i1 %t212, label %then5955, label %endif5957 +then5955: + %t213 = load ptr, ptr %a1 + %t214 = load %S.ast.Node, ptr %a2 + %t215 = call %S.gen.Val @finch.gen.matchGen(ptr %t213, %S.ast.Node %t214, i1 true) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t215 +endif5957: + %t216 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t216, ptr %a217 + store { ptr, i64, i64 } { ptr @.str.3841, i64 3, i64 0 }, ptr %a218 + %t219 = call i32 @finch_str_eq(ptr %a217, ptr %a218) + %t220 = icmp ne i32 %t219, 0 + br i1 %t220, label %then5958, label %endif5960 +then5958: + %t221 = load ptr, ptr %a1 + %t222 = load %S.ast.Node, ptr %a2 + %t223 = call %S.gen.Val @finch.gen.tryExpr(ptr %t221, %S.ast.Node %t222) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t223 +endif5960: + %t224 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t224, ptr %a225 + store { ptr, i64, i64 } { ptr @.str.3842, i64 2, i64 0 }, ptr %a226 + %t227 = call i32 @finch_str_eq(ptr %a225, ptr %a226) + %t228 = icmp ne i32 %t227, 0 + br i1 %t228, label %then5961, label %endif5963 +then5961: + %t229 = load ptr, ptr %a1 + %t230 = load %S.ast.Node, ptr %a2 + %t231 = call %S.gen.Val @finch.gen.orElse(ptr %t229, %S.ast.Node %t230, i1 false) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t231 +endif5963: + %t232 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t232, ptr %a233 + store { ptr, i64, i64 } { ptr @.str.3843, i64 5, i64 0 }, ptr %a234 + %t235 = call i32 @finch_str_eq(ptr %a233, ptr %a234) + %t236 = icmp ne i32 %t235, 0 + br i1 %t236, label %then5964, label %endif5966 +then5964: + %t237 = load ptr, ptr %a1 + %t238 = load %S.ast.Node, ptr %a2 + %t239 = call %S.gen.Val @finch.gen.unary(ptr %t237, %S.ast.Node %t238) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t239 +endif5966: + %t240 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t240, ptr %a241 + store { ptr, i64, i64 } { ptr @.str.3844, i64 6, i64 0 }, ptr %a242 + %t243 = call i32 @finch_str_eq(ptr %a241, ptr %a242) + %t244 = icmp ne i32 %t243, 0 + br i1 %t244, label %then5967, label %endif5969 +then5967: + %t245 = load ptr, ptr %a1 + %t246 = load %S.ast.Node, ptr %a2 + %t247 = call %S.gen.Val @finch.gen.binary(ptr %t245, %S.ast.Node %t246) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t247 +endif5969: + %t248 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t248, ptr %a249 + store { ptr, i64, i64 } { ptr @.str.3845, i64 4, i64 0 }, ptr %a250 + %t251 = call i32 @finch_str_eq(ptr %a249, ptr %a250) + %t252 = icmp ne i32 %t251, 0 + br i1 %t252, label %then5970, label %endif5972 +then5970: + %t253 = load ptr, ptr %a1 + %t254 = load %S.ast.Node, ptr %a2 + %t255 = call %S.gen.Val @finch.gen.call(ptr %t253, %S.ast.Node %t254) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t255 +endif5972: + %t256 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t256, ptr %a257 + store { ptr, i64, i64 } { ptr @.str.3846, i64 6, i64 0 }, ptr %a258 + %t259 = call i32 @finch_str_eq(ptr %a257, ptr %a258) + %t260 = icmp ne i32 %t259, 0 + br i1 %t260, label %then5973, label %endif5975 +then5973: + %t261 = load ptr, ptr %a1 + %t262 = load %S.ast.Node, ptr %a2 + %t263 = call %S.gen.Val @finch.gen.method(ptr %t261, %S.ast.Node %t262) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t263 +endif5975: + %t264 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t264, ptr %a265 + store { ptr, i64, i64 } { ptr @.str.3847, i64 5, i64 0 }, ptr %a266 + %t267 = call i32 @finch_str_eq(ptr %a265, ptr %a266) + %t268 = icmp ne i32 %t267, 0 + br i1 %t268, label %then5976, label %endif5978 +then5976: + %t269 = load ptr, ptr %a1 + %t270 = load %S.ast.Node, ptr %a2 + %t271 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3848, i64 4, i64 0 }) + %t272 = call %S.gen.Val @finch.gen.arrayLit(ptr %t269, %S.ast.Node %t270, %S.ast.Type %t271) + store %S.ast.Type %t271, ptr %a273 + call void @finch.drop.S_ast_Type(ptr %a273) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t272 +endif5978: + %t274 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t274, ptr %a275 + store { ptr, i64, i64 } { ptr @.str.3849, i64 3, i64 0 }, ptr %a276 + %t277 = call i32 @finch_str_eq(ptr %a275, ptr %a276) + %t278 = icmp ne i32 %t277, 0 + br i1 %t278, label %then5979, label %endif5981 +then5979: + %t279 = load ptr, ptr %a1 + %t280 = load %S.ast.Node, ptr %a2 + %t281 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3850, i64 4, i64 0 }) + %t282 = call %S.gen.Val @finch.gen.mapLit(ptr %t279, %S.ast.Node %t280, %S.ast.Type %t281) + store %S.ast.Type %t281, ptr %a283 + call void @finch.drop.S_ast_Type(ptr %a283) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t282 +endif5981: + %t284 = load ptr, ptr %a1 + %t285 = load %S.ast.Node, ptr %a2 + %t286 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.3851, i64 19, i64 0 }, ptr %a288 + store { ptr, i64, i64 } %t286, ptr %a289 + call void @finch_str_concat(ptr %a287, ptr %a288, ptr %a289) + %t290 = load { ptr, i64, i64 }, ptr %a287 + call void @finch.gen.fail(ptr %t284, %S.ast.Node %t285, { ptr, i64, i64 } %t290) + store { ptr, i64, i64 } %t290, ptr %a291 + call void @finch_str_drop(ptr %a291) + call void @finch_str_drop(ptr %a8) ret %S.gen.Val zeroinitializer } @@ -51309,74 +60776,94 @@ entry: %a12 = alloca %S.gen.Val, align 16 %a15 = alloca { ptr, i64, i64 }, align 16 %a16 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca %S.gen.Val, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 + %a30 = alloca %S.ast.Type, align 16 + %a31 = alloca %S.gen.Val, align 16 %a35 = alloca { ptr, i64, i64 }, align 16 %a36 = alloca { ptr, i64, i64 }, align 16 - %a38 = 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 - %a48 = 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 - %a63 = 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 - %a74 = alloca { ptr, i64, i64 }, align 16 + %a41 = alloca { ptr, i64, i64 }, align 16 + %a42 = alloca { ptr, i64, i64 }, align 16 + %a45 = alloca { ptr, i64, i64 }, align 16 + %a51 = alloca { ptr, i64, i64 }, align 16 + %a52 = 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 + %a67 = alloca { ptr, i64, i64 }, align 16 + %a69 = 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 + %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 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca %S.ast.Type, align 16 - %a93 = alloca %S.ast.Type, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = 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 + %a90 = 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 + %a98 = alloca { ptr, i64, i64 }, align 16 + %a102 = alloca %S.ast.Type, align 16 + %a103 = alloca %S.ast.Type, align 16 + %a114 = 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 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca %S.ast.Type, align 16 - %a132 = alloca %S.ast.Type, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca %S.ast.Type, align 16 - %a146 = alloca %S.ast.Type, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = 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 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 + %a119 = 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 + %a134 = alloca { ptr, i64, i64 }, align 16 + %a135 = alloca { ptr, i64, i64 }, align 16 + %a143 = alloca %S.ast.Type, align 16 + %a144 = alloca %S.ast.Type, align 16 + %a150 = alloca { ptr, i64, i64 }, align 16 + %a151 = alloca { ptr, i64, i64 }, align 16 + %a152 = alloca { ptr, i64, i64 }, align 16 + %a157 = alloca %S.ast.Type, align 16 + %a158 = alloca %S.ast.Type, align 16 %a167 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca %S.ast.Type, align 16 - %a174 = alloca %S.ast.Type, align 16 + %a168 = alloca { ptr, i64, i64 }, align 16 + %a169 = 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 + %a175 = 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 + %a182 = 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 - %a189 = 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 - %a203 = alloca %S.ast.Type, align 16 - %a204 = alloca %S.ast.Type, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 + %a189 = alloca %S.ast.Type, align 16 + %a190 = alloca %S.ast.Type, align 16 + %a201 = alloca { ptr, i64, i64 }, align 16 + %a202 = alloca { ptr, i64, i64 }, align 16 + %a203 = alloca { ptr, i64, i64 }, align 16 + %a204 = alloca { ptr, i64, i64 }, align 16 + %a206 = 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 %a213 = alloca { ptr, i64, i64 }, align 16 %a214 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca %S.gen.Val, align 16 - %a218 = alloca %S.gen.Val, align 16 + %a215 = alloca { ptr, i64, i64 }, align 16 + %a216 = alloca { ptr, i64, i64 }, align 16 + %a219 = alloca { ptr, i64, i64 }, align 16 + %a223 = alloca %S.ast.Type, align 16 + %a224 = alloca %S.ast.Type, align 16 + %a232 = 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 + %a237 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store %S.ast.Node %p1, ptr %a2 %t3 = load ptr, ptr %a1 @@ -51384,11 +60871,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 %range5615, label %inrange5616 -range5615: - call void @finch_panic_index(ptr @.str.3686, i64 3015, i64 0, i64 %t6) + br i1 %t7, label %range5982, label %inrange5983 +range5982: + call void @finch_panic_index(ptr @.str.3852, i64 3270, i64 0, i64 %t6) unreachable -inrange5616: +inrange5983: %t8 = extractvalue { ptr, i64, i64 } %t5, 0 %t9 = getelementptr inbounds %S.ast.Node, ptr %t8, i64 0 %t10 = load %S.ast.Node, ptr %t9 @@ -51397,250 +60884,298 @@ inrange5616: %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.3687, i64 1, i64 0 }, ptr %a16 + store { ptr, i64, i64 } { ptr @.str.3853, 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 %then5617, label %endif5619 -then5617: + br i1 %t18, label %then5984, label %endif5986 +then5984: %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.3688, i64 4, i64 0 }) + %t21 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3854, 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 %range5620, label %inrange5621 -range5620: - call void @finch_panic_index(ptr @.str.3689, i64 3017, i64 0, i64 %t24) + br i1 %t25, label %range5987, label %inrange5988 +range5987: + call void @finch_panic_index(ptr @.str.3855, i64 3272, i64 0, i64 %t24) unreachable -inrange5621: +inrange5988: %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.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.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.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.3693, i64 4, i64 0 }) - %t45 = insertvalue %S.gen.Val %t43, %S.ast.Type %t44, 1 - ret %S.gen.Val %t45 -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.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 %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 %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.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 %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.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.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 - %t79 = load { ptr, i64, i64 }, ptr %t78 - store { ptr, i64, i64 } %t77, ptr %a81 - store { ptr, i64, i64 } %t79, ptr %a82 + %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.3856, i64 19, i64 0 }) + store %S.ast.Type %t21, ptr %a30 + call void @finch.drop.S_ast_Type(ptr %a30) + store %S.gen.Val %t29, ptr %a31 + %t32 = load ptr, ptr %a1 + %t33 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 0 + %t34 = load { ptr, i64, i64 }, ptr %t33 + store { ptr, i64, i64 } { ptr @.str.3857, 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.3858, i64 6, i64 0 }, ptr %a41 + call void @finch_str_concat(ptr %a39, ptr %a40, ptr %a41) + store { ptr, i64, i64 } %t38, ptr %a42 + call void @finch_str_drop(ptr %a42) + %t43 = load { ptr, i64, i64 }, ptr %a39 + %t44 = call { ptr, i64, i64 } @finch.gen.op(ptr %t32, { ptr, i64, i64 } %t43) + store { ptr, i64, i64 } %t43, ptr %a45 + call void @finch_str_drop(ptr %a45) + %t46 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t44, 0 + %t47 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3859, i64 4, i64 0 }) + %t48 = insertvalue %S.gen.Val %t46, %S.ast.Type %t47, 1 + call void @finch.drop.S_gen_Val(ptr %a31) + call void @finch.drop.S_gen_Val(ptr %a12) + ret %S.gen.Val %t48 +endif5986: + %t49 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t50 = load { ptr, i64, i64 }, ptr %t49 + store { ptr, i64, i64 } %t50, ptr %a51 + store { ptr, i64, i64 } { ptr @.str.3860, i64 1, i64 0 }, ptr %a52 + %t53 = call i32 @finch_str_eq(ptr %a51, ptr %a52) + %t54 = icmp ne i32 %t53, 0 + br i1 %t54, label %then5989, label %endif5991 +then5989: + %t55 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 + %t56 = load %S.ast.Type, ptr %t55 + %t57 = call i1 @finch.gen.isInt(%S.ast.Type %t56) + %t58 = xor i1 %t57, true + br i1 %t58, label %then5992, label %endif5994 +then5992: + %t59 = load ptr, ptr %a1 + %t60 = load %S.ast.Node, ptr %a2 + %t61 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 + %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.3861, i64 45, i64 0 }, ptr %a65 + store { ptr, i64, i64 } %t63, ptr %a66 + call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) + store { ptr, i64, i64 } %t63, ptr %a67 + call void @finch_str_drop(ptr %a67) + %t68 = load { ptr, i64, i64 }, ptr %a64 + call void @finch.gen.fail(ptr %t59, %S.ast.Node %t60, { ptr, i64, i64 } %t68) + store { ptr, i64, i64 } %t68, ptr %a69 + call void @finch_str_drop(ptr %a69) + br label %endif5994 +endif5994: + %t70 = load ptr, ptr %a1 + %t71 = load ptr, ptr %a1 + %t72 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 + %t73 = load %S.ast.Type, ptr %t72 + %t74 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t71, %S.ast.Type %t73) + store { ptr, i64, i64 } { ptr @.str.3862, i64 4, i64 0 }, ptr %a76 + store { ptr, i64, i64 } %t74, ptr %a77 + call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77) + store { ptr, i64, i64 } %t74, ptr %a78 + call void @finch_str_drop(ptr %a78) + %t79 = load { ptr, i64, i64 }, ptr %a75 + store { ptr, i64, i64 } %t79, ptr %a81 + store { ptr, i64, i64 } { ptr @.str.3863, 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 %a85 - 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) - %t89 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t88, 0 - %t90 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t91 = load %S.ast.Type, ptr %t90 - store %S.ast.Type %t91, ptr %a92 - call void @finch.copy.S_ast_Type(ptr %a93, ptr %a92) - %t94 = load %S.ast.Type, ptr %a93 - %t95 = insertvalue %S.gen.Val %t89, %S.ast.Type %t94, 1 - ret %S.gen.Val %t95 -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 %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.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 %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 %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 %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.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 %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.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 - %t130 = load %S.ast.Type, ptr %t129 - store %S.ast.Type %t130, ptr %a131 - call void @finch.copy.S_ast_Type(ptr %a132, ptr %a131) - %t133 = load %S.ast.Type, ptr %a132 - %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 -endif5639: + store { ptr, i64, i64 } %t79, ptr %a83 + call void @finch_str_drop(ptr %a83) + %t84 = load { ptr, i64, i64 }, ptr %a80 + %t85 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0 + %t86 = load { ptr, i64, i64 }, ptr %t85 + store { ptr, i64, i64 } %t84, ptr %a88 + store { ptr, i64, i64 } %t86, ptr %a89 + call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89) + store { ptr, i64, i64 } %t84, ptr %a90 + call void @finch_str_drop(ptr %a90) + %t91 = load { ptr, i64, i64 }, ptr %a87 + store { ptr, i64, i64 } %t91, ptr %a93 + store { ptr, i64, i64 } { ptr @.str.3864, i64 4, i64 0 }, ptr %a94 + call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) + store { ptr, i64, i64 } %t91, ptr %a95 + call void @finch_str_drop(ptr %a95) + %t96 = load { ptr, i64, i64 }, ptr %a92 + %t97 = call { ptr, i64, i64 } @finch.gen.op(ptr %t70, { ptr, i64, i64 } %t96) + store { ptr, i64, i64 } %t96, ptr %a98 + call void @finch_str_drop(ptr %a98) + %t99 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t97, 0 + %t100 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 + %t101 = load %S.ast.Type, ptr %t100 + store %S.ast.Type %t101, ptr %a102 + call void @finch.copy.S_ast_Type(ptr %a103, ptr %a102) + %t104 = load %S.ast.Type, ptr %a103 + %t105 = insertvalue %S.gen.Val %t99, %S.ast.Type %t104, 1 + call void @finch.drop.S_gen_Val(ptr %a12) + ret %S.gen.Val %t105 +endif5991: + %t106 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 + %t107 = load %S.ast.Type, ptr %t106 + %t108 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t107) + br i1 %t108, label %then5995, label %endif5997 +then5995: + %t109 = load ptr, ptr %a1 + %t110 = load %S.ast.Node, ptr %a2 + %t111 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 + %t112 = load %S.ast.Type, ptr %t111 + %t113 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t112) + store { ptr, i64, i64 } %t113, ptr %a115 + store { ptr, i64, i64 } { ptr @.str.3865, i64 34, i64 0 }, ptr %a116 + call void @finch_str_concat(ptr %a114, ptr %a115, ptr %a116) + store { ptr, i64, i64 } %t113, ptr %a117 + call void @finch_str_drop(ptr %a117) + %t118 = load { ptr, i64, i64 }, ptr %a114 + call void @finch.gen.fail(ptr %t109, %S.ast.Node %t110, { ptr, i64, i64 } %t118) + store { ptr, i64, i64 } %t118, ptr %a119 + call void @finch_str_drop(ptr %a119) + br label %endif5997 +endif5997: + %t120 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 + %t121 = load %S.ast.Type, ptr %t120 + %t122 = call i1 @finch.gen.isSigned(%S.ast.Type %t121) + br i1 %t122, label %then5998, label %endif6000 +then5998: + %t123 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 3 + %t124 = load i1, ptr %t123 + br i1 %t124, label %then6001, label %endif6003 +then6001: + %t125 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0 + %t126 = load { ptr, i64, i64 }, ptr %t125 + store { ptr, i64, i64 } %t126, ptr %a127 + store { ptr, i64, i64 } { ptr @.str.3867, i64 1, i64 0 }, ptr %a129 + %t130 = call i32 @finch_str_starts(ptr %a127, ptr %a129) + %t131 = icmp ne i32 %t130, 0 + br i1 %t131, label %then6004, label %endif6006 +then6004: + %t132 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0 + %t133 = load { ptr, i64, i64 }, ptr %t132 + store { ptr, i64, i64 } %t133, ptr %a134 %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.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 - %t142 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t141, 0 - %t143 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t144 = load %S.ast.Type, ptr %t143 - store %S.ast.Type %t144, ptr %a145 - call void @finch.copy.S_ast_Type(ptr %a146, ptr %a145) - %t147 = load %S.ast.Type, ptr %a146 - %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 -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.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.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 - %t164 = load { ptr, i64, i64 }, ptr %t163 - store { ptr, i64, i64 } %t162, 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 - %t169 = call { ptr, i64, i64 } @finch.gen.op(ptr %t150, { ptr, i64, i64 } %t168) - %t170 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t169, 0 - %t171 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t172 = load %S.ast.Type, ptr %t171 - store %S.ast.Type %t172, ptr %a173 - call void @finch.copy.S_ast_Type(ptr %a174, ptr %a173) - %t175 = load %S.ast.Type, ptr %a174 - %t176 = insertvalue %S.gen.Val %t170, %S.ast.Type %t175, 1 - ret %S.gen.Val %t176 -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 %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.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.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 - %t194 = load { ptr, i64, i64 }, ptr %t193 - store { ptr, i64, i64 } %t192, 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 - %t199 = call { ptr, i64, i64 } @finch.gen.op(ptr %t180, { ptr, i64, i64 } %t198) - %t200 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t199, 0 - %t201 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t202 = load %S.ast.Type, ptr %t201 - store %S.ast.Type %t202, ptr %a203 - call void @finch.copy.S_ast_Type(ptr %a204, ptr %a203) - %t205 = load %S.ast.Type, ptr %a204 - %t206 = insertvalue %S.gen.Val %t200, %S.ast.Type %t205, 1 - ret %S.gen.Val %t206 -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.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 - call void @finch.gen.fail(ptr %t207, %S.ast.Node %t208, { ptr, i64, i64 } %t215) - %t216 = load %S.gen.Val, ptr %a12 - store %S.gen.Val %t216, ptr %a217 - call void @finch.copy.S_gen_Val(ptr %a218, ptr %a217) - %t219 = load %S.gen.Val, ptr %a218 - ret %S.gen.Val %t219 + %t137 = getelementptr inbounds { ptr, i64, i64 }, ptr %t136, i32 0, i32 1 + %t138 = load i64, ptr %t137 + call void @finch_str_sub(ptr %a135, ptr %a134, i64 1, i64 %t138, ptr @.str.3868, i64 3287) + %t139 = load { ptr, i64, i64 }, ptr %a135 + %t140 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t139, 0 + %t141 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 + %t142 = load %S.ast.Type, ptr %t141 + store %S.ast.Type %t142, ptr %a143 + call void @finch.copy.S_ast_Type(ptr %a144, ptr %a143) + %t145 = load %S.ast.Type, ptr %a144 + %t146 = insertvalue %S.gen.Val %t140, %S.ast.Type %t145, 1 + %t147 = insertvalue %S.gen.Val %t146, i1 true, 3 + call void @finch.drop.S_gen_Val(ptr %a12) + ret %S.gen.Val %t147 +endif6006: + %t148 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0 + %t149 = load { ptr, i64, i64 }, ptr %t148 + store { ptr, i64, i64 } { ptr @.str.3869, i64 1, i64 0 }, ptr %a151 + store { ptr, i64, i64 } %t149, ptr %a152 + call void @finch_str_concat(ptr %a150, ptr %a151, ptr %a152) + %t153 = load { ptr, i64, i64 }, ptr %a150 + %t154 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t153, 0 + %t155 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 + %t156 = load %S.ast.Type, ptr %t155 + store %S.ast.Type %t156, ptr %a157 + call void @finch.copy.S_ast_Type(ptr %a158, ptr %a157) + %t159 = load %S.ast.Type, ptr %a158 + %t160 = insertvalue %S.gen.Val %t154, %S.ast.Type %t159, 1 + %t161 = insertvalue %S.gen.Val %t160, i1 true, 3 + call void @finch.drop.S_gen_Val(ptr %a12) + ret %S.gen.Val %t161 +endif6003: + %t162 = load ptr, ptr %a1 + %t163 = load ptr, ptr %a1 + %t164 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 + %t165 = load %S.ast.Type, ptr %t164 + %t166 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t163, %S.ast.Type %t165) + store { ptr, i64, i64 } { ptr @.str.3870, i64 4, i64 0 }, ptr %a168 + store { ptr, i64, i64 } %t166, ptr %a169 + call void @finch_str_concat(ptr %a167, ptr %a168, ptr %a169) + store { ptr, i64, i64 } %t166, ptr %a170 + call void @finch_str_drop(ptr %a170) + %t171 = load { ptr, i64, i64 }, ptr %a167 + store { ptr, i64, i64 } %t171, ptr %a173 + store { ptr, i64, i64 } { ptr @.str.3871, i64 4, i64 0 }, ptr %a174 + call void @finch_str_concat(ptr %a172, ptr %a173, ptr %a174) + store { ptr, i64, i64 } %t171, ptr %a175 + call void @finch_str_drop(ptr %a175) + %t176 = load { ptr, i64, i64 }, ptr %a172 + %t177 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0 + %t178 = load { ptr, i64, i64 }, ptr %t177 + store { ptr, i64, i64 } %t176, ptr %a180 + store { ptr, i64, i64 } %t178, ptr %a181 + call void @finch_str_concat(ptr %a179, ptr %a180, ptr %a181) + store { ptr, i64, i64 } %t176, ptr %a182 + call void @finch_str_drop(ptr %a182) + %t183 = load { ptr, i64, i64 }, ptr %a179 + %t184 = call { ptr, i64, i64 } @finch.gen.op(ptr %t162, { ptr, i64, i64 } %t183) + store { ptr, i64, i64 } %t183, ptr %a185 + call void @finch_str_drop(ptr %a185) + %t186 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t184, 0 + %t187 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 + %t188 = load %S.ast.Type, ptr %t187 + store %S.ast.Type %t188, ptr %a189 + call void @finch.copy.S_ast_Type(ptr %a190, ptr %a189) + %t191 = load %S.ast.Type, ptr %a190 + %t192 = insertvalue %S.gen.Val %t186, %S.ast.Type %t191, 1 + call void @finch.drop.S_gen_Val(ptr %a12) + ret %S.gen.Val %t192 +endif6000: + %t193 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 + %t194 = load %S.ast.Type, ptr %t193 + %t195 = call i1 @finch.gen.isFloat(%S.ast.Type %t194) + br i1 %t195, label %then6007, label %endif6009 +then6007: + %t196 = load ptr, ptr %a1 + %t197 = load ptr, ptr %a1 + %t198 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 + %t199 = load %S.ast.Type, ptr %t198 + %t200 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t197, %S.ast.Type %t199) + store { ptr, i64, i64 } { ptr @.str.3872, i64 5, i64 0 }, ptr %a202 + store { ptr, i64, i64 } %t200, ptr %a203 + call void @finch_str_concat(ptr %a201, ptr %a202, ptr %a203) + store { ptr, i64, i64 } %t200, ptr %a204 + call void @finch_str_drop(ptr %a204) + %t205 = load { ptr, i64, i64 }, ptr %a201 + store { ptr, i64, i64 } %t205, ptr %a207 + store { ptr, i64, i64 } { ptr @.str.3873, i64 1, i64 0 }, ptr %a208 + call void @finch_str_concat(ptr %a206, ptr %a207, ptr %a208) + store { ptr, i64, i64 } %t205, ptr %a209 + call void @finch_str_drop(ptr %a209) + %t210 = load { ptr, i64, i64 }, ptr %a206 + %t211 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0 + %t212 = load { ptr, i64, i64 }, ptr %t211 + store { ptr, i64, i64 } %t210, ptr %a214 + store { ptr, i64, i64 } %t212, ptr %a215 + call void @finch_str_concat(ptr %a213, ptr %a214, ptr %a215) + store { ptr, i64, i64 } %t210, ptr %a216 + call void @finch_str_drop(ptr %a216) + %t217 = load { ptr, i64, i64 }, ptr %a213 + %t218 = call { ptr, i64, i64 } @finch.gen.op(ptr %t196, { ptr, i64, i64 } %t217) + store { ptr, i64, i64 } %t217, ptr %a219 + call void @finch_str_drop(ptr %a219) + %t220 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t218, 0 + %t221 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 + %t222 = load %S.ast.Type, ptr %t221 + store %S.ast.Type %t222, ptr %a223 + call void @finch.copy.S_ast_Type(ptr %a224, ptr %a223) + %t225 = load %S.ast.Type, ptr %a224 + %t226 = insertvalue %S.gen.Val %t220, %S.ast.Type %t225, 1 + call void @finch.drop.S_gen_Val(ptr %a12) + ret %S.gen.Val %t226 +endif6009: + %t227 = load ptr, ptr %a1 + %t228 = load %S.ast.Node, ptr %a2 + %t229 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 + %t230 = load %S.ast.Type, ptr %t229 + %t231 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t230) + store { ptr, i64, i64 } { ptr @.str.3874, i64 26, i64 0 }, ptr %a233 + store { ptr, i64, i64 } %t231, ptr %a234 + call void @finch_str_concat(ptr %a232, ptr %a233, ptr %a234) + store { ptr, i64, i64 } %t231, ptr %a235 + call void @finch_str_drop(ptr %a235) + %t236 = load { ptr, i64, i64 }, ptr %a232 + call void @finch.gen.fail(ptr %t227, %S.ast.Node %t228, { ptr, i64, i64 } %t236) + store { ptr, i64, i64 } %t236, ptr %a237 + call void @finch_str_drop(ptr %a237) + %t238 = load %S.gen.Val, ptr %a12 + ret %S.gen.Val %t238 } define internal void @finch.gen.badOperands(ptr %p0, { ptr, i64, i64 } %p1, %S.gen.Val %p2, %S.gen.Val %p3, %S.ast.Node %p4) { @@ -51656,355 +61191,395 @@ entry: %a11 = alloca { ptr, i64, i64 }, align 16 %a12 = alloca { ptr, i64, i64 }, align 16 %a13 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 + %a14 = alloca { ptr, i64, i64 }, align 16 %a19 = 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 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 + %a23 = alloca { ptr, i64, i64 }, align 16 + %a25 = 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 + %a40 = 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 + %a44 = alloca { ptr, i64, i64 }, align 16 + %a47 = alloca { ptr, i64, i64 }, align 16 %a49 = alloca { ptr, i64, i64 }, align 16 %a50 = alloca { ptr, i64, i64 }, align 16 %a56 = alloca { ptr, i64, i64 }, align 16 %a57 = 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 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a81 = 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 + %a75 = alloca { ptr, i64, i64 }, align 16 + %a77 = alloca { ptr, i64, i64 }, align 16 + %a78 = alloca { ptr, i64, i64 }, align 16 %a82 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = 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 + %a83 = 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 - %a99 = 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 - %a107 = alloca { ptr, i64, i64 }, align 16 + %a106 = 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 %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 + %a115 = alloca { ptr, i64, i64 }, align 16 + %a116 = alloca { ptr, i64, i64 }, align 16 %a120 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 + %a121 = alloca { ptr, i64, i64 }, align 16 %a126 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 + %a127 = alloca { ptr, i64, i64 }, align 16 %a132 = alloca { ptr, i64, i64 }, align 16 %a133 = alloca { ptr, i64, i64 }, align 16 %a138 = alloca { ptr, i64, i64 }, align 16 %a139 = 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 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = 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 + %a149 = alloca { ptr, i64, i64 }, align 16 + %a153 = alloca { ptr, i64, i64 }, align 16 + %a154 = alloca { ptr, i64, i64 }, align 16 + %a160 = alloca { ptr, i64, i64 }, align 16 + %a161 = alloca { ptr, i64, i64 }, align 16 + %a166 = alloca { ptr, i64, i64 }, align 16 + %a167 = alloca { ptr, i64, i64 }, align 16 + %a171 = alloca { ptr, i64, i64 }, align 16 + %a172 = alloca { ptr, i64, i64 }, align 16 + %a178 = alloca { ptr, i64, i64 }, align 16 + %a179 = alloca { ptr, i64, i64 }, align 16 + %a180 = alloca { ptr, i64, i64 }, align 16 + %a183 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store { ptr, i64, i64 } %p1, ptr %a2 store %S.gen.Val %p2, ptr %a3 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.3709, i64 11, i64 0 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.3875, 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.3710, i64 5, i64 0 }, ptr %a13 + store { ptr, i64, i64 } { ptr @.str.3876, 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 - %t16 = load %S.ast.Type, ptr %t15 - %t17 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t16) - store { ptr, i64, i64 } %t14, 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 %a22 - %t23 = getelementptr inbounds %S.gen.Val, ptr %a3, i32 0, i32 1 - %t24 = load %S.ast.Type, ptr %t23 - %t25 = getelementptr inbounds %S.gen.Val, ptr %a4, i32 0, i32 1 - %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 %then5643, label %endif5645 -then5643: - %t29 = load { ptr, i64, i64 }, ptr %a22 - store { ptr, i64, i64 } %t29, ptr %a31 - 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 - %t35 = load %S.ast.Type, ptr %t34 - %t36 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t35) - store { ptr, i64, i64 } %t33, 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 %a22 - br label %endif5645 -endif5645: - %t41 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t41, ptr %a42 - 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.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 } %t10, ptr %a14 + call void @finch_str_drop(ptr %a14) + %t15 = load { ptr, i64, i64 }, ptr %a11 + %t16 = getelementptr inbounds %S.gen.Val, ptr %a3, i32 0, i32 1 + %t17 = load %S.ast.Type, ptr %t16 + %t18 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t17) + store { ptr, i64, i64 } %t15, ptr %a20 + store { ptr, i64, i64 } %t18, ptr %a21 + call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) + store { ptr, i64, i64 } %t15, ptr %a22 + call void @finch_str_drop(ptr %a22) + store { ptr, i64, i64 } %t18, ptr %a23 + call void @finch_str_drop(ptr %a23) + %t24 = load { ptr, i64, i64 }, ptr %a19 + store { ptr, i64, i64 } %t24, ptr %a25 + %t26 = getelementptr inbounds %S.gen.Val, ptr %a3, i32 0, i32 1 + %t27 = load %S.ast.Type, ptr %t26 + %t28 = getelementptr inbounds %S.gen.Val, ptr %a4, i32 0, i32 1 + %t29 = load %S.ast.Type, ptr %t28 + %t30 = call i1 @finch.ast.same(%S.ast.Type %t27, %S.ast.Type %t29) + %t31 = xor i1 %t30, true + br i1 %t31, label %then6010, label %endif6012 +then6010: + %t32 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t32, ptr %a34 + store { ptr, i64, i64 } { ptr @.str.3877, i64 5, 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.gen.Val, ptr %a4, i32 0, i32 1 + %t38 = load %S.ast.Type, ptr %t37 + %t39 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t38) + store { ptr, i64, i64 } %t36, ptr %a41 + store { ptr, i64, i64 } %t39, ptr %a42 + call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) + store { ptr, i64, i64 } %t36, ptr %a43 + call void @finch_str_drop(ptr %a43) + store { ptr, i64, i64 } %t39, ptr %a44 + call void @finch_str_drop(ptr %a44) + %t45 = load { ptr, i64, i64 }, ptr %a40 + %t46 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t45, ptr %a25 + store { ptr, i64, i64 } %t46, ptr %a47 + call void @finch_str_drop(ptr %a47) + br label %endif6012 +endif6012: + %t48 = load { ptr, i64, i64 }, ptr %a2 store { ptr, i64, i64 } %t48, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.3713, i64 3, i64 0 }, ptr %a50 + store { ptr, i64, i64 } { ptr @.str.3878, i64 1, i64 0 }, ptr %a50 %t51 = call i32 @finch_str_eq(ptr %a49, ptr %a50) %t52 = icmp ne i32 %t51, 0 - 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 + br label %logic.from6013 +logic.from6013: + br i1 %t52, label %logic.rhs6014, label %logic.end6015 +logic.rhs6014: + %t53 = getelementptr inbounds %S.gen.Val, ptr %a3, 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.3714, i64 3, i64 0 }, ptr %a57 + store { ptr, i64, i64 } { ptr @.str.3879, 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.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.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 %endif5656 -endif5656: - %t67 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t67, ptr %a68 - 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.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.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.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.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.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.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 %then5668, label %else5669 -then5668: - %t91 = load { ptr, i64, i64 }, ptr %a22 - store { ptr, i64, i64 } %t91, ptr %a93 - 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 %endif5670 -else5669: - %t96 = load { ptr, i64, i64 }, ptr %a22 - store { ptr, i64, i64 } %t96, ptr %a98 - 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 %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.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.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.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.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 + br label %logic.from6016 +logic.from6016: + br i1 %t59, label %logic.end6018, label %logic.rhs6017 +logic.rhs6017: + %t60 = getelementptr inbounds %S.gen.Val, ptr %a4, i32 0, i32 1 + %t61 = getelementptr inbounds %S.ast.Type, ptr %t60, i32 0, i32 0 + %t62 = load { ptr, i64, i64 }, ptr %t61 + store { ptr, i64, i64 } %t62, ptr %a63 + store { ptr, i64, i64 } { ptr @.str.3880, i64 3, i64 0 }, ptr %a64 + %t65 = call i32 @finch_str_eq(ptr %a63, ptr %a64) + %t66 = icmp ne i32 %t65, 0 + br label %logic.rend6019 +logic.rend6019: + br label %logic.end6018 +logic.end6018: + %t67 = phi i1 [ true, %logic.from6016 ], [ %t66, %logic.rend6019 ] + br label %logic.rend6020 +logic.rend6020: + br label %logic.end6015 +logic.end6015: + %t68 = phi i1 [ false, %logic.from6013 ], [ %t67, %logic.rend6020 ] + br i1 %t68, label %then6021, label %endif6023 +then6021: + %t69 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t69, ptr %a71 + store { ptr, i64, i64 } { ptr @.str.3881, i64 48, i64 0 }, ptr %a72 + call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) + %t73 = load { ptr, i64, i64 }, ptr %a70 + %t74 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t73, ptr %a25 + store { ptr, i64, i64 } %t74, ptr %a75 + call void @finch_str_drop(ptr %a75) + br label %endif6023 +endif6023: + %t76 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t76, ptr %a77 + store { ptr, i64, i64 } { ptr @.str.3882, i64 1, i64 0 }, ptr %a78 + %t79 = call i32 @finch_str_eq(ptr %a77, ptr %a78) + %t80 = icmp ne i32 %t79, 0 + br label %logic.from6024 +logic.from6024: + br i1 %t80, label %logic.end6026, label %logic.rhs6025 +logic.rhs6025: + %t81 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t81, ptr %a82 + store { ptr, i64, i64 } { ptr @.str.3883, 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.rend6027 +logic.rend6027: + br label %logic.end6026 +logic.end6026: + %t86 = phi i1 [ true, %logic.from6024 ], [ %t85, %logic.rend6027 ] + br label %logic.from6028 +logic.from6028: + br i1 %t86, label %logic.rhs6029, label %logic.end6030 +logic.rhs6029: + %t87 = getelementptr inbounds %S.gen.Val, ptr %a3, i32 0, i32 1 + %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.3884, i64 4, i64 0 }, ptr %a91 + %t92 = call i32 @finch_str_eq(ptr %a90, ptr %a91) + %t93 = icmp ne i32 %t92, 0 + br label %logic.rend6031 +logic.rend6031: + br label %logic.end6030 +logic.end6030: + %t94 = phi i1 [ false, %logic.from6028 ], [ %t93, %logic.rend6031 ] + br i1 %t94, label %then6032, label %else6033 +then6032: + %t95 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t95, ptr %a96 + store { ptr, i64, i64 } { ptr @.str.3885, i64 1, i64 0 }, ptr %a97 + %t98 = call i32 @finch_str_eq(ptr %a96, ptr %a97) + %t99 = icmp ne i32 %t98, 0 + br i1 %t99, label %then6035, label %else6036 +then6035: + %t100 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t100, ptr %a102 + store { ptr, i64, i64 } { ptr @.str.3886, i64 26, i64 0 }, ptr %a103 + call void @finch_str_concat(ptr %a101, ptr %a102, ptr %a103) + %t104 = load { ptr, i64, i64 }, ptr %a101 + %t105 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t104, ptr %a25 + store { ptr, i64, i64 } %t105, ptr %a106 + call void @finch_str_drop(ptr %a106) + br label %endif6037 +else6036: + %t107 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t107, ptr %a109 + store { ptr, i64, i64 } { ptr @.str.3887, i64 26, i64 0 }, ptr %a110 + call void @finch_str_concat(ptr %a108, ptr %a109, ptr %a110) + %t111 = load { ptr, i64, i64 }, ptr %a108 + %t112 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t111, ptr %a25 store { ptr, i64, i64 } %t112, ptr %a113 - 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.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.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.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.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.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.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 %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 + call void @finch_str_drop(ptr %a113) + br label %endif6037 +endif6037: + br label %endif6034 +else6033: + %t114 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t114, ptr %a115 + store { ptr, i64, i64 } { ptr @.str.3888, i64 1, i64 0 }, ptr %a116 + %t117 = call i32 @finch_str_eq(ptr %a115, ptr %a116) + %t118 = icmp ne i32 %t117, 0 + br label %logic.from6038 +logic.from6038: + br i1 %t118, label %logic.end6040, label %logic.rhs6039 +logic.rhs6039: + %t119 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t119, ptr %a120 + store { ptr, i64, i64 } { ptr @.str.3889, i64 1, i64 0 }, ptr %a121 + %t122 = call i32 @finch_str_eq(ptr %a120, ptr %a121) + %t123 = icmp ne i32 %t122, 0 + br label %logic.rend6041 +logic.rend6041: + br label %logic.end6040 +logic.end6040: + %t124 = phi i1 [ true, %logic.from6038 ], [ %t123, %logic.rend6041 ] + br label %logic.from6042 +logic.from6042: + br i1 %t124, label %logic.end6044, label %logic.rhs6043 +logic.rhs6043: + %t125 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t125, ptr %a126 + store { ptr, i64, i64 } { ptr @.str.3890, i64 1, i64 0 }, ptr %a127 + %t128 = call i32 @finch_str_eq(ptr %a126, ptr %a127) + %t129 = icmp ne i32 %t128, 0 + br label %logic.rend6045 +logic.rend6045: + br label %logic.end6044 +logic.end6044: + %t130 = phi i1 [ true, %logic.from6042 ], [ %t129, %logic.rend6045 ] + br label %logic.from6046 +logic.from6046: + br i1 %t130, label %logic.end6048, label %logic.rhs6047 +logic.rhs6047: + %t131 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t131, ptr %a132 + store { ptr, i64, i64 } { ptr @.str.3891, i64 2, i64 0 }, ptr %a133 + %t134 = call i32 @finch_str_eq(ptr %a132, ptr %a133) + %t135 = icmp ne i32 %t134, 0 + br label %logic.rend6049 +logic.rend6049: + br label %logic.end6048 +logic.end6048: + %t136 = phi i1 [ true, %logic.from6046 ], [ %t135, %logic.rend6049 ] + br label %logic.from6050 +logic.from6050: + br i1 %t136, label %logic.end6052, label %logic.rhs6051 +logic.rhs6051: + %t137 = load { ptr, i64, i64 }, ptr %a2 store { ptr, i64, i64 } %t137, ptr %a138 - store { ptr, i64, i64 } { ptr @.str.3728, i64 6, i64 0 }, ptr %a139 + store { ptr, i64, i64 } { ptr @.str.3892, i64 2, i64 0 }, ptr %a139 %t140 = call i32 @finch_str_eq(ptr %a138, ptr %a139) %t141 = icmp ne i32 %t140, 0 - 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.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.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.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.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.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.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.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 %endif5704 -endif5704: - %t167 = load ptr, ptr %a1 - %t168 = load %S.ast.Node, ptr %a5 - %t169 = load { ptr, i64, i64 }, ptr %a22 - call void @finch.gen.fail(ptr %t167, %S.ast.Node %t168, { ptr, i64, i64 } %t169) + br label %logic.rend6053 +logic.rend6053: + br label %logic.end6052 +logic.end6052: + %t142 = phi i1 [ true, %logic.from6050 ], [ %t141, %logic.rend6053 ] + br i1 %t142, label %then6054, label %endif6056 +then6054: + %t143 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t143, ptr %a145 + store { ptr, i64, i64 } { ptr @.str.3893, i64 43, 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 %a25 + store { ptr, i64, i64 } %t147, ptr %a25 + store { ptr, i64, i64 } %t148, ptr %a149 + call void @finch_str_drop(ptr %a149) + br label %endif6056 +endif6056: + br label %endif6034 +endif6034: + %t150 = getelementptr inbounds %S.gen.Val, ptr %a3, i32 0, i32 1 + %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.3894, i64 6, i64 0 }, ptr %a154 + %t155 = call i32 @finch_str_eq(ptr %a153, ptr %a154) + %t156 = icmp ne i32 %t155, 0 + br label %logic.from6057 +logic.from6057: + br i1 %t156, label %logic.end6059, label %logic.rhs6058 +logic.rhs6058: + %t157 = getelementptr inbounds %S.gen.Val, ptr %a3, i32 0, i32 1 + %t158 = getelementptr inbounds %S.ast.Type, ptr %t157, i32 0, i32 0 + %t159 = load { ptr, i64, i64 }, ptr %t158 + store { ptr, i64, i64 } %t159, ptr %a160 + store { ptr, i64, i64 } { ptr @.str.3895, 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.rend6060 +logic.rend6060: + br label %logic.end6059 +logic.end6059: + %t164 = phi i1 [ true, %logic.from6057 ], [ %t163, %logic.rend6060 ] + br label %logic.from6061 +logic.from6061: + br i1 %t164, label %logic.rhs6062, label %logic.end6063 +logic.rhs6062: + %t165 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t165, ptr %a166 + store { ptr, i64, i64 } { ptr @.str.3896, 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.from6064 +logic.from6064: + br i1 %t169, label %logic.end6066, label %logic.rhs6065 +logic.rhs6065: + %t170 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t170, ptr %a171 + store { ptr, i64, i64 } { ptr @.str.3897, i64 2, i64 0 }, ptr %a172 + %t173 = call i32 @finch_str_eq(ptr %a171, ptr %a172) + %t174 = icmp ne i32 %t173, 0 + br label %logic.rend6067 +logic.rend6067: + br label %logic.end6066 +logic.end6066: + %t175 = phi i1 [ true, %logic.from6064 ], [ %t174, %logic.rend6067 ] + br label %logic.rend6068 +logic.rend6068: + br label %logic.end6063 +logic.end6063: + %t176 = phi i1 [ false, %logic.from6061 ], [ %t175, %logic.rend6068 ] + br i1 %t176, label %then6069, label %endif6071 +then6069: + %t177 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t177, ptr %a179 + store { ptr, i64, i64 } { ptr @.str.3898, i64 31, i64 0 }, ptr %a180 + call void @finch_str_concat(ptr %a178, ptr %a179, ptr %a180) + %t181 = load { ptr, i64, i64 }, ptr %a178 + %t182 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t181, ptr %a25 + store { ptr, i64, i64 } %t182, ptr %a183 + call void @finch_str_drop(ptr %a183) + br label %endif6071 +endif6071: + %t184 = load ptr, ptr %a1 + %t185 = load %S.ast.Node, ptr %a5 + %t186 = load { ptr, i64, i64 }, ptr %a25 + call void @finch.gen.fail(ptr %t184, %S.ast.Node %t185, { ptr, i64, i64 } %t186) + call void @finch_str_drop(ptr %a25) ret void } @@ -52017,149 +61592,161 @@ entry: %a53 = alloca { ptr, i64, i64 }, align 16 %a60 = alloca %S.ast.Type, align 16 %a61 = alloca %S.ast.Type, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca %S.ast.Type, align 16 - %a104 = alloca %S.ast.Type, align 16 - %a138 = alloca %S.ast.Type, align 16 - %a139 = alloca %S.ast.Type, align 16 - %a172 = alloca %S.ast.Type, align 16 - %a173 = alloca %S.ast.Type, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 + %a68 = alloca %S.gen.Val, align 16 + %a97 = alloca { ptr, i64, i64 }, align 16 + %a98 = alloca { ptr, i64, i64 }, align 16 + %a105 = alloca %S.ast.Type, align 16 + %a106 = alloca %S.ast.Type, align 16 + %a113 = alloca %S.gen.Val, align 16 + %a142 = alloca %S.ast.Type, align 16 + %a143 = alloca %S.ast.Type, align 16 + %a149 = alloca %S.gen.Val, align 16 + %a178 = alloca %S.ast.Type, align 16 + %a179 = alloca %S.ast.Type, align 16 + %a185 = alloca %S.gen.Val, align 16 + %a207 = alloca %S.ast.Node, align 16 + %a211 = alloca %S.gen.Val, align 16 + %a233 = alloca %S.ast.Node, align 16 + %a237 = alloca %S.gen.Val, align 16 + %a254 = alloca { ptr, i64, i64 }, align 16 + %a255 = alloca { ptr, i64, i64 }, align 16 + %a269 = alloca %S.ast.Type, align 16 + %a276 = alloca %S.gen.Val, align 16 + %a282 = alloca { ptr, i64, i64 }, align 16 + %a283 = alloca { ptr, i64, i64 }, align 16 + %a297 = alloca %S.ast.Type, align 16 + %a304 = alloca %S.gen.Val, align 16 store ptr %p0, ptr %a1 store ptr %p1, ptr %a2 store ptr %p2, ptr %a3 %t4 = load ptr, ptr %a2 %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic5705, label %ok5706 -panic5705: - call void @finch_panic(ptr @.str.3733, i64 3069, ptr @.str.3734) + br i1 %t5, label %panic6072, label %ok6073 +panic6072: + call void @finch_panic(ptr @.str.3899, i64 3324, ptr @.str.3900) unreachable -ok5706: +ok6073: %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 %panic5707, label %ok5708 -panic5707: - call void @finch_panic(ptr @.str.3735, i64 3069, ptr @.str.3736) + br i1 %t9, label %panic6074, label %ok6075 +panic6074: + call void @finch_panic(ptr @.str.3901, i64 3324, ptr @.str.3902) unreachable -ok5708: +ok6075: %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 %then5709, label %endif5711 -then5709: + br i1 %t12, label %then6076, label %endif6078 +then6076: ret i1 true -endif5711: +endif6078: %t13 = load ptr, ptr %a2 %t14 = icmp eq ptr %t13, null - br i1 %t14, label %panic5712, label %ok5713 -panic5712: - call void @finch_panic(ptr @.str.3737, i64 3072, ptr @.str.3738) + br i1 %t14, label %panic6079, label %ok6080 +panic6079: + call void @finch_panic(ptr @.str.3903, i64 3327, ptr @.str.3904) unreachable -ok5713: +ok6080: %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.from5714 -logic.from5714: - br i1 %t17, label %logic.rhs5715, label %logic.end5716 -logic.rhs5715: + br label %logic.from6081 +logic.from6081: + br i1 %t17, label %logic.rhs6082, label %logic.end6083 +logic.rhs6082: %t18 = load ptr, ptr %a3 %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic5717, label %ok5718 -panic5717: - call void @finch_panic(ptr @.str.3739, i64 3072, ptr @.str.3740) + br i1 %t19, label %panic6084, label %ok6085 +panic6084: + call void @finch_panic(ptr @.str.3905, i64 3327, ptr @.str.3906) unreachable -ok5718: +ok6085: %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.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: + br label %logic.rend6086 +logic.rend6086: + br label %logic.end6083 +logic.end6083: + %t23 = phi i1 [ false, %logic.from6081 ], [ %t22, %logic.rend6086 ] + br i1 %t23, label %then6087, label %endif6089 +then6087: %t24 = load ptr, ptr %a2 %t25 = icmp eq ptr %t24, null - br i1 %t25, label %panic5723, label %ok5724 -panic5723: - call void @finch_panic(ptr @.str.3741, i64 3075, ptr @.str.3742) + br i1 %t25, label %panic6090, label %ok6091 +panic6090: + call void @finch_panic(ptr @.str.3907, i64 3330, ptr @.str.3908) unreachable -ok5724: +ok6091: %t26 = getelementptr inbounds %S.gen.Val, ptr %t24, i32 0, i32 3 %t27 = load i1, ptr %t26 - br label %logic.from5725 -logic.from5725: - br i1 %t27, label %logic.rhs5726, label %logic.end5727 -logic.rhs5726: + br label %logic.from6092 +logic.from6092: + br i1 %t27, label %logic.rhs6093, label %logic.end6094 +logic.rhs6093: %t28 = load ptr, ptr %a3 %t29 = icmp eq ptr %t28, null - br i1 %t29, label %panic5728, label %ok5729 -panic5728: - call void @finch_panic(ptr @.str.3743, i64 3075, ptr @.str.3744) + br i1 %t29, label %panic6095, label %ok6096 +panic6095: + call void @finch_panic(ptr @.str.3909, i64 3330, ptr @.str.3910) unreachable -ok5729: +ok6096: %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.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: + br label %logic.rend6097 +logic.rend6097: + br label %logic.end6094 +logic.end6094: + %t33 = phi i1 [ false, %logic.from6092 ], [ %t32, %logic.rend6097 ] + br label %logic.from6098 +logic.from6098: + br i1 %t33, label %logic.rhs6099, label %logic.end6100 +logic.rhs6099: %t34 = load ptr, ptr %a2 %t35 = icmp eq ptr %t34, null - br i1 %t35, label %panic5734, label %ok5735 -panic5734: - call void @finch_panic(ptr @.str.3745, i64 3075, ptr @.str.3746) + br i1 %t35, label %panic6101, label %ok6102 +panic6101: + call void @finch_panic(ptr @.str.3911, i64 3330, ptr @.str.3912) unreachable -ok5735: +ok6102: %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 %panic5736, label %ok5737 -panic5736: - call void @finch_panic(ptr @.str.3747, i64 3075, ptr @.str.3748) + br i1 %t39, label %panic6103, label %ok6104 +panic6103: + call void @finch_panic(ptr @.str.3913, i64 3330, ptr @.str.3914) unreachable -ok5737: +ok6104: %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 %panic5738, label %ok5739 -panic5738: - call void @finch_panic(ptr @.str.3749, i64 3075, ptr @.str.3750) + br i1 %t43, label %panic6105, label %ok6106 +panic6105: + call void @finch_panic(ptr @.str.3915, i64 3330, ptr @.str.3916) unreachable -ok5739: +ok6106: %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.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: + br label %logic.rend6107 +logic.rend6107: + br label %logic.end6100 +logic.end6100: + %t47 = phi i1 [ false, %logic.from6098 ], [ %t46, %logic.rend6107 ] + br i1 %t47, label %then6108, label %endif6110 +then6108: %t48 = load ptr, ptr %a2 %t49 = icmp eq ptr %t48, null - br i1 %t49, label %panic5744, label %ok5745 -panic5744: - call void @finch_panic(ptr @.str.3751, i64 3076, ptr @.str.3752) + br i1 %t49, label %panic6111, label %ok6112 +panic6111: + call void @finch_panic(ptr @.str.3917, i64 3331, ptr @.str.3918) unreachable -ok5745: +ok6112: %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 @@ -52168,11 +61755,11 @@ ok5745: %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 %panic5746, label %ok5747 -panic5746: - call void @finch_panic(ptr @.str.3753, i64 3076, ptr @.str.3754) + br i1 %t57, label %panic6113, label %ok6114 +panic6113: + call void @finch_panic(ptr @.str.3919, i64 3331, ptr @.str.3920) unreachable -ok5747: +ok6114: %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 @@ -52182,523 +61769,555 @@ ok5747: %t64 = insertvalue %S.gen.Val %t63, i1 true, 3 %t65 = load ptr, ptr %a2 %t66 = icmp eq ptr %t65, null - br i1 %t66, label %panic5748, label %ok5749 -panic5748: - call void @finch_panic(ptr @.str.3755, i64 3076, ptr @.str.3756) + br i1 %t66, label %panic6115, label %ok6116 +panic6115: + call void @finch_panic(ptr @.str.3921, i64 3331, ptr @.str.3922) unreachable -ok5749: +ok6116: + %t67 = load %S.gen.Val, ptr %t65 store %S.gen.Val %t64, ptr %t65 + store %S.gen.Val %t67, ptr %a68 + call void @finch.drop.S_gen_Val(ptr %a68) ret i1 true -endif5743: - %t67 = load ptr, ptr %a3 - %t68 = icmp eq ptr %t67, null - br i1 %t68, label %panic5750, label %ok5751 -panic5750: - call void @finch_panic(ptr @.str.3757, i64 3079, ptr @.str.3758) +endif6110: + %t69 = load ptr, ptr %a3 + %t70 = icmp eq ptr %t69, null + br i1 %t70, label %panic6117, label %ok6118 +panic6117: + call void @finch_panic(ptr @.str.3923, i64 3334, ptr @.str.3924) unreachable -ok5751: - %t69 = getelementptr inbounds %S.gen.Val, ptr %t67, i32 0, i32 3 - %t70 = load i1, ptr %t69 - 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 %panic5755, label %ok5756 -panic5755: - call void @finch_panic(ptr @.str.3759, i64 3079, ptr @.str.3760) +ok6118: + %t71 = getelementptr inbounds %S.gen.Val, ptr %t69, i32 0, i32 3 + %t72 = load i1, ptr %t71 + br label %logic.from6119 +logic.from6119: + br i1 %t72, label %logic.rhs6120, label %logic.end6121 +logic.rhs6120: + %t73 = load ptr, ptr %a2 + %t74 = icmp eq ptr %t73, null + br i1 %t74, label %panic6122, label %ok6123 +panic6122: + call void @finch_panic(ptr @.str.3925, i64 3334, ptr @.str.3926) unreachable -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.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 %panic5761, label %ok5762 -panic5761: - call void @finch_panic(ptr @.str.3761, i64 3079, ptr @.str.3762) +ok6123: + %t75 = getelementptr inbounds %S.gen.Val, ptr %t73, i32 0, i32 3 + %t76 = load i1, ptr %t75 + %t77 = xor i1 %t76, true + br label %logic.rend6124 +logic.rend6124: + br label %logic.end6121 +logic.end6121: + %t78 = phi i1 [ false, %logic.from6119 ], [ %t77, %logic.rend6124 ] + br label %logic.from6125 +logic.from6125: + br i1 %t78, label %logic.rhs6126, label %logic.end6127 +logic.rhs6126: + %t79 = load ptr, ptr %a3 + %t80 = icmp eq ptr %t79, null + br i1 %t80, label %panic6128, label %ok6129 +panic6128: + call void @finch_panic(ptr @.str.3927, i64 3334, ptr @.str.3928) unreachable -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 %panic5763, label %ok5764 -panic5763: - call void @finch_panic(ptr @.str.3763, i64 3079, ptr @.str.3764) +ok6129: + %t81 = getelementptr inbounds %S.gen.Val, ptr %t79, i32 0, i32 0 + %t82 = load { ptr, i64, i64 }, ptr %t81 + %t83 = load ptr, ptr %a3 + %t84 = icmp eq ptr %t83, null + br i1 %t84, label %panic6130, label %ok6131 +panic6130: + call void @finch_panic(ptr @.str.3929, i64 3334, ptr @.str.3930) unreachable -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 %panic5765, label %ok5766 -panic5765: - call void @finch_panic(ptr @.str.3765, i64 3079, ptr @.str.3766) +ok6131: + %t85 = getelementptr inbounds %S.gen.Val, ptr %t83, i32 0, i32 1 + %t86 = load %S.ast.Type, ptr %t85 + %t87 = load ptr, ptr %a2 + %t88 = icmp eq ptr %t87, null + br i1 %t88, label %panic6132, label %ok6133 +panic6132: + call void @finch_panic(ptr @.str.3931, i64 3334, ptr @.str.3932) unreachable -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.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 %panic5771, label %ok5772 -panic5771: - call void @finch_panic(ptr @.str.3767, i64 3080, ptr @.str.3768) +ok6133: + %t89 = getelementptr inbounds %S.gen.Val, ptr %t87, i32 0, i32 1 + %t90 = load %S.ast.Type, ptr %t89 + %t91 = call i1 @finch.gen.fits({ ptr, i64, i64 } %t82, %S.ast.Type %t86, %S.ast.Type %t90) + br label %logic.rend6134 +logic.rend6134: + br label %logic.end6127 +logic.end6127: + %t92 = phi i1 [ false, %logic.from6125 ], [ %t91, %logic.rend6134 ] + br i1 %t92, label %then6135, label %endif6137 +then6135: + %t93 = load ptr, ptr %a3 + %t94 = icmp eq ptr %t93, null + br i1 %t94, label %panic6138, label %ok6139 +panic6138: + call void @finch_panic(ptr @.str.3933, i64 3335, ptr @.str.3934) unreachable -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 - call void @finch_str_copy(ptr %a96, ptr %a95) - %t97 = load { ptr, i64, i64 }, ptr %a96 - %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 %panic5773, label %ok5774 -panic5773: - call void @finch_panic(ptr @.str.3769, i64 3080, ptr @.str.3770) +ok6139: + %t95 = getelementptr inbounds %S.gen.Val, ptr %t93, i32 0, i32 0 + %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 + %t100 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t99, 0 + %t101 = load ptr, ptr %a2 + %t102 = icmp eq ptr %t101, null + br i1 %t102, label %panic6140, label %ok6141 +panic6140: + call void @finch_panic(ptr @.str.3935, i64 3335, ptr @.str.3936) unreachable -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 - call void @finch.copy.S_ast_Type(ptr %a104, ptr %a103) - %t105 = load %S.ast.Type, ptr %a104 - %t106 = insertvalue %S.gen.Val %t98, %S.ast.Type %t105, 1 - %t107 = insertvalue %S.gen.Val %t106, i1 true, 3 - %t108 = load ptr, ptr %a3 - %t109 = icmp eq ptr %t108, null - br i1 %t109, label %panic5775, label %ok5776 -panic5775: - call void @finch_panic(ptr @.str.3771, i64 3080, ptr @.str.3772) - unreachable -ok5776: - store %S.gen.Val %t107, ptr %t108 - ret i1 true -endif5770: - %t110 = load ptr, ptr %a2 +ok6141: + %t103 = getelementptr inbounds %S.gen.Val, ptr %t101, i32 0, i32 1 + %t104 = load %S.ast.Type, ptr %t103 + store %S.ast.Type %t104, ptr %a105 + call void @finch.copy.S_ast_Type(ptr %a106, ptr %a105) + %t107 = load %S.ast.Type, ptr %a106 + %t108 = insertvalue %S.gen.Val %t100, %S.ast.Type %t107, 1 + %t109 = insertvalue %S.gen.Val %t108, i1 true, 3 + %t110 = load ptr, ptr %a3 %t111 = icmp eq ptr %t110, null - br i1 %t111, label %panic5777, label %ok5778 -panic5777: - call void @finch_panic(ptr @.str.3773, i64 3083, ptr @.str.3774) + br i1 %t111, label %panic6142, label %ok6143 +panic6142: + call void @finch_panic(ptr @.str.3937, i64 3335, ptr @.str.3938) unreachable -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 +ok6143: + %t112 = load %S.gen.Val, ptr %t110 + store %S.gen.Val %t109, ptr %t110 + store %S.gen.Val %t112, ptr %a113 + call void @finch.drop.S_gen_Val(ptr %a113) + ret i1 true +endif6137: + %t114 = load ptr, ptr %a2 %t115 = icmp eq ptr %t114, null - br i1 %t115, label %panic5779, label %ok5780 -panic5779: - call void @finch_panic(ptr @.str.3775, i64 3083, ptr @.str.3776) + br i1 %t115, label %panic6144, label %ok6145 +panic6144: + call void @finch_panic(ptr @.str.3939, i64 3338, ptr @.str.3940) unreachable -ok5780: +ok6145: %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 %then5781, label %endif5783 -then5781: - %t119 = load ptr, ptr %a1 - %t120 = load ptr, ptr %a2 - %t121 = icmp eq ptr %t120, null - br i1 %t121, label %panic5784, label %ok5785 -panic5784: - call void @finch_panic(ptr @.str.3777, i64 3084, ptr @.str.3778) + %t118 = load ptr, ptr %a3 + %t119 = icmp eq ptr %t118, null + br i1 %t119, label %panic6146, label %ok6147 +panic6146: + call void @finch_panic(ptr @.str.3941, i64 3338, ptr @.str.3942) unreachable -ok5785: - %t122 = getelementptr inbounds %S.gen.Val, ptr %t120, i32 0, i32 0 - %t123 = load { ptr, i64, i64 }, ptr %t122 +ok6147: + %t120 = getelementptr inbounds %S.gen.Val, ptr %t118, i32 0, i32 1 + %t121 = load %S.ast.Type, ptr %t120 + %t122 = call i1 @finch.gen.widens(%S.ast.Type %t117, %S.ast.Type %t121) + br i1 %t122, label %then6148, label %endif6150 +then6148: + %t123 = load ptr, ptr %a1 %t124 = load ptr, ptr %a2 %t125 = icmp eq ptr %t124, null - br i1 %t125, label %panic5786, label %ok5787 -panic5786: - call void @finch_panic(ptr @.str.3779, i64 3084, ptr @.str.3780) + br i1 %t125, label %panic6151, label %ok6152 +panic6151: + call void @finch_panic(ptr @.str.3943, i64 3339, ptr @.str.3944) unreachable -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 +ok6152: + %t126 = getelementptr inbounds %S.gen.Val, ptr %t124, i32 0, i32 0 + %t127 = load { ptr, i64, i64 }, ptr %t126 + %t128 = load ptr, ptr %a2 %t129 = icmp eq ptr %t128, null - br i1 %t129, label %panic5788, label %ok5789 -panic5788: - call void @finch_panic(ptr @.str.3781, i64 3084, ptr @.str.3782) + br i1 %t129, label %panic6153, label %ok6154 +panic6153: + call void @finch_panic(ptr @.str.3945, i64 3339, ptr @.str.3946) unreachable -ok5789: +ok6154: %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 %panic5790, label %ok5791 -panic5790: - call void @finch_panic(ptr @.str.3783, i64 3084, ptr @.str.3784) + %t132 = load ptr, ptr %a3 + %t133 = icmp eq ptr %t132, null + br i1 %t133, label %panic6155, label %ok6156 +panic6155: + call void @finch_panic(ptr @.str.3947, i64 3339, ptr @.str.3948) unreachable -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 - call void @finch.copy.S_ast_Type(ptr %a139, ptr %a138) - %t140 = load %S.ast.Type, ptr %a139 - %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 %panic5792, label %ok5793 -panic5792: - call void @finch_panic(ptr @.str.3785, i64 3084, ptr @.str.3786) +ok6156: + %t134 = getelementptr inbounds %S.gen.Val, ptr %t132, i32 0, i32 1 + %t135 = load %S.ast.Type, ptr %t134 + %t136 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t123, { ptr, i64, i64 } %t127, %S.ast.Type %t131, %S.ast.Type %t135) + %t137 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t136, 0 + %t138 = load ptr, ptr %a3 + %t139 = icmp eq ptr %t138, null + br i1 %t139, label %panic6157, label %ok6158 +panic6157: + call void @finch_panic(ptr @.str.3949, i64 3339, ptr @.str.3950) unreachable -ok5793: - store %S.gen.Val %t141, ptr %t142 +ok6158: + %t140 = getelementptr inbounds %S.gen.Val, ptr %t138, i32 0, i32 1 + %t141 = load %S.ast.Type, ptr %t140 + store %S.ast.Type %t141, ptr %a142 + call void @finch.copy.S_ast_Type(ptr %a143, ptr %a142) + %t144 = load %S.ast.Type, ptr %a143 + %t145 = insertvalue %S.gen.Val %t137, %S.ast.Type %t144, 1 + %t146 = load ptr, ptr %a2 + %t147 = icmp eq ptr %t146, null + br i1 %t147, label %panic6159, label %ok6160 +panic6159: + call void @finch_panic(ptr @.str.3951, i64 3339, ptr @.str.3952) + unreachable +ok6160: + %t148 = load %S.gen.Val, ptr %t146 + store %S.gen.Val %t145, ptr %t146 + store %S.gen.Val %t148, ptr %a149 + call void @finch.drop.S_gen_Val(ptr %a149) ret i1 true -endif5783: - %t144 = load ptr, ptr %a3 - %t145 = icmp eq ptr %t144, null - br i1 %t145, label %panic5794, label %ok5795 -panic5794: - call void @finch_panic(ptr @.str.3787, i64 3087, ptr @.str.3788) +endif6150: + %t150 = load ptr, ptr %a3 + %t151 = icmp eq ptr %t150, null + br i1 %t151, label %panic6161, label %ok6162 +panic6161: + call void @finch_panic(ptr @.str.3953, i64 3342, ptr @.str.3954) unreachable -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 %panic5796, label %ok5797 -panic5796: - call void @finch_panic(ptr @.str.3789, i64 3087, ptr @.str.3790) - unreachable -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 %then5798, label %endif5800 -then5798: - %t153 = load ptr, ptr %a1 - %t154 = load ptr, ptr %a3 +ok6162: + %t152 = getelementptr inbounds %S.gen.Val, ptr %t150, i32 0, i32 1 + %t153 = load %S.ast.Type, ptr %t152 + %t154 = load ptr, ptr %a2 %t155 = icmp eq ptr %t154, null - br i1 %t155, label %panic5801, label %ok5802 -panic5801: - call void @finch_panic(ptr @.str.3791, i64 3088, ptr @.str.3792) + br i1 %t155, label %panic6163, label %ok6164 +panic6163: + call void @finch_panic(ptr @.str.3955, i64 3342, ptr @.str.3956) unreachable -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 %panic5803, label %ok5804 -panic5803: - call void @finch_panic(ptr @.str.3793, i64 3088, ptr @.str.3794) +ok6164: + %t156 = getelementptr inbounds %S.gen.Val, ptr %t154, i32 0, i32 1 + %t157 = load %S.ast.Type, ptr %t156 + %t158 = call i1 @finch.gen.widens(%S.ast.Type %t153, %S.ast.Type %t157) + br i1 %t158, label %then6165, label %endif6167 +then6165: + %t159 = load ptr, ptr %a1 + %t160 = load ptr, ptr %a3 + %t161 = icmp eq ptr %t160, null + br i1 %t161, label %panic6168, label %ok6169 +panic6168: + call void @finch_panic(ptr @.str.3957, i64 3343, ptr @.str.3958) unreachable -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 %panic5805, label %ok5806 -panic5805: - call void @finch_panic(ptr @.str.3795, i64 3088, ptr @.str.3796) +ok6169: + %t162 = getelementptr inbounds %S.gen.Val, ptr %t160, i32 0, i32 0 + %t163 = load { ptr, i64, i64 }, ptr %t162 + %t164 = load ptr, ptr %a3 + %t165 = icmp eq ptr %t164, null + br i1 %t165, label %panic6170, label %ok6171 +panic6170: + call void @finch_panic(ptr @.str.3959, i64 3343, ptr @.str.3960) unreachable -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 +ok6171: + %t166 = getelementptr inbounds %S.gen.Val, ptr %t164, i32 0, i32 1 + %t167 = load %S.ast.Type, ptr %t166 %t168 = load ptr, ptr %a2 %t169 = icmp eq ptr %t168, null - br i1 %t169, label %panic5807, label %ok5808 -panic5807: - call void @finch_panic(ptr @.str.3797, i64 3088, ptr @.str.3798) + br i1 %t169, label %panic6172, label %ok6173 +panic6172: + call void @finch_panic(ptr @.str.3961, i64 3343, ptr @.str.3962) unreachable -ok5808: +ok6173: %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 - call void @finch.copy.S_ast_Type(ptr %a173, ptr %a172) - %t174 = load %S.ast.Type, ptr %a173 - %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 %panic5809, label %ok5810 -panic5809: - call void @finch_panic(ptr @.str.3799, i64 3088, ptr @.str.3800) + %t172 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t159, { ptr, i64, i64 } %t163, %S.ast.Type %t167, %S.ast.Type %t171) + %t173 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t172, 0 + %t174 = load ptr, ptr %a2 + %t175 = icmp eq ptr %t174, null + br i1 %t175, label %panic6174, label %ok6175 +panic6174: + call void @finch_panic(ptr @.str.3963, i64 3343, ptr @.str.3964) unreachable -ok5810: - store %S.gen.Val %t175, ptr %t176 +ok6175: + %t176 = getelementptr inbounds %S.gen.Val, ptr %t174, i32 0, i32 1 + %t177 = load %S.ast.Type, ptr %t176 + store %S.ast.Type %t177, ptr %a178 + call void @finch.copy.S_ast_Type(ptr %a179, ptr %a178) + %t180 = load %S.ast.Type, ptr %a179 + %t181 = insertvalue %S.gen.Val %t173, %S.ast.Type %t180, 1 + %t182 = load ptr, ptr %a3 + %t183 = icmp eq ptr %t182, null + br i1 %t183, label %panic6176, label %ok6177 +panic6176: + call void @finch_panic(ptr @.str.3965, i64 3343, ptr @.str.3966) + unreachable +ok6177: + %t184 = load %S.gen.Val, ptr %t182 + store %S.gen.Val %t181, ptr %t182 + store %S.gen.Val %t184, ptr %a185 + call void @finch.drop.S_gen_Val(ptr %a185) ret i1 true -endif5800: +endif6167: ret i1 false -endif5722: - %t178 = load ptr, ptr %a2 - %t179 = icmp eq ptr %t178, null - br i1 %t179, label %panic5811, label %ok5812 -panic5811: - call void @finch_panic(ptr @.str.3801, i64 3093, ptr @.str.3802) +endif6089: + %t186 = load ptr, ptr %a2 + %t187 = icmp eq ptr %t186, null + br i1 %t187, label %panic6178, label %ok6179 +panic6178: + call void @finch_panic(ptr @.str.3967, i64 3348, ptr @.str.3968) unreachable -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.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 %panic5816, label %ok5817 -panic5816: - call void @finch_panic(ptr @.str.3803, i64 3093, ptr @.str.3804) +ok6179: + %t188 = getelementptr inbounds %S.gen.Val, ptr %t186, i32 0, i32 1 + %t189 = load %S.ast.Type, ptr %t188 + %t190 = call i1 @finch.gen.isInt(%S.ast.Type %t189) + br label %logic.from6180 +logic.from6180: + br i1 %t190, label %logic.rhs6181, label %logic.end6182 +logic.rhs6181: + %t191 = load ptr, ptr %a3 + %t192 = icmp eq ptr %t191, null + br i1 %t192, label %panic6183, label %ok6184 +panic6183: + call void @finch_panic(ptr @.str.3969, i64 3348, ptr @.str.3970) unreachable -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.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 %panic5822, label %ok5823 -panic5822: - call void @finch_panic(ptr @.str.3805, i64 3094, ptr @.str.3806) +ok6184: + %t193 = getelementptr inbounds %S.gen.Val, ptr %t191, i32 0, i32 1 + %t194 = load %S.ast.Type, ptr %t193 + %t195 = call i1 @finch.gen.isFloat(%S.ast.Type %t194) + br label %logic.rend6185 +logic.rend6185: + br label %logic.end6182 +logic.end6182: + %t196 = phi i1 [ false, %logic.from6180 ], [ %t195, %logic.rend6185 ] + br i1 %t196, label %then6186, label %endif6188 +then6186: + %t197 = load ptr, ptr %a1 + %t198 = load ptr, ptr %a2 + %t199 = icmp eq ptr %t198, null + br i1 %t199, label %panic6189, label %ok6190 +panic6189: + call void @finch_panic(ptr @.str.3971, i64 3349, ptr @.str.3972) unreachable -ok5823: - %t192 = load %S.gen.Val, ptr %t190 - %t193 = load ptr, ptr %a3 - %t194 = icmp eq ptr %t193, null - br i1 %t194, label %panic5824, label %ok5825 -panic5824: - call void @finch_panic(ptr @.str.3807, i64 3094, ptr @.str.3808) - unreachable -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.3809, i64 0, i64 0 }) - %t199 = load ptr, ptr %a2 - %t200 = icmp eq ptr %t199, null - br i1 %t200, label %panic5826, label %ok5827 -panic5826: - call void @finch_panic(ptr @.str.3810, i64 3094, ptr @.str.3811) - unreachable -ok5827: - store %S.gen.Val %t198, ptr %t199 - ret i1 true -endif5821: - %t201 = load ptr, ptr %a2 +ok6190: + %t200 = load %S.gen.Val, ptr %t198 + %t201 = load ptr, ptr %a3 %t202 = icmp eq ptr %t201, null - br i1 %t202, label %panic5828, label %ok5829 -panic5828: - call void @finch_panic(ptr @.str.3812, i64 3097, ptr @.str.3813) + br i1 %t202, label %panic6191, label %ok6192 +panic6191: + call void @finch_panic(ptr @.str.3973, i64 3349, ptr @.str.3974) unreachable -ok5829: +ok6192: %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.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 %panic5833, label %ok5834 -panic5833: - call void @finch_panic(ptr @.str.3814, i64 3097, ptr @.str.3815) + %t205 = call %S.ast.Node @finch.gen.Node0() + %t206 = call %S.gen.Val @finch.gen.coerce(ptr %t197, %S.gen.Val %t200, %S.ast.Type %t204, %S.ast.Node %t205, { ptr, i64, i64 } { ptr @.str.3975, i64 0, i64 0 }) + store %S.ast.Node %t205, ptr %a207 + call void @finch.drop.S_ast_Node(ptr %a207) + %t208 = load ptr, ptr %a2 + %t209 = icmp eq ptr %t208, null + br i1 %t209, label %panic6193, label %ok6194 +panic6193: + call void @finch_panic(ptr @.str.3976, i64 3349, ptr @.str.3977) unreachable -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.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 %panic5839, label %ok5840 -panic5839: - call void @finch_panic(ptr @.str.3816, i64 3098, ptr @.str.3817) - unreachable -ok5840: - %t215 = load %S.gen.Val, ptr %t213 - %t216 = load ptr, ptr %a2 - %t217 = icmp eq ptr %t216, null - br i1 %t217, label %panic5841, label %ok5842 -panic5841: - call void @finch_panic(ptr @.str.3818, i64 3098, ptr @.str.3819) - unreachable -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.3820, i64 0, i64 0 }) - %t222 = load ptr, ptr %a3 - %t223 = icmp eq ptr %t222, null - br i1 %t223, label %panic5843, label %ok5844 -panic5843: - call void @finch_panic(ptr @.str.3821, i64 3098, ptr @.str.3822) - unreachable -ok5844: - store %S.gen.Val %t221, ptr %t222 +ok6194: + %t210 = load %S.gen.Val, ptr %t208 + store %S.gen.Val %t206, ptr %t208 + store %S.gen.Val %t210, ptr %a211 + call void @finch.drop.S_gen_Val(ptr %a211) ret i1 true -endif5838: - %t224 = load ptr, ptr %a2 +endif6188: + %t212 = load ptr, ptr %a2 + %t213 = icmp eq ptr %t212, null + br i1 %t213, label %panic6195, label %ok6196 +panic6195: + call void @finch_panic(ptr @.str.3978, i64 3352, ptr @.str.3979) + unreachable +ok6196: + %t214 = getelementptr inbounds %S.gen.Val, ptr %t212, i32 0, i32 1 + %t215 = load %S.ast.Type, ptr %t214 + %t216 = call i1 @finch.gen.isFloat(%S.ast.Type %t215) + br label %logic.from6197 +logic.from6197: + br i1 %t216, label %logic.rhs6198, label %logic.end6199 +logic.rhs6198: + %t217 = load ptr, ptr %a3 + %t218 = icmp eq ptr %t217, null + br i1 %t218, label %panic6200, label %ok6201 +panic6200: + call void @finch_panic(ptr @.str.3980, i64 3352, ptr @.str.3981) + unreachable +ok6201: + %t219 = getelementptr inbounds %S.gen.Val, ptr %t217, i32 0, i32 1 + %t220 = load %S.ast.Type, ptr %t219 + %t221 = call i1 @finch.gen.isInt(%S.ast.Type %t220) + br label %logic.rend6202 +logic.rend6202: + br label %logic.end6199 +logic.end6199: + %t222 = phi i1 [ false, %logic.from6197 ], [ %t221, %logic.rend6202 ] + br i1 %t222, label %then6203, label %endif6205 +then6203: + %t223 = load ptr, ptr %a1 + %t224 = load ptr, ptr %a3 %t225 = icmp eq ptr %t224, null - br i1 %t225, label %panic5845, label %ok5846 -panic5845: - call void @finch_panic(ptr @.str.3823, i64 3101, ptr @.str.3824) + br i1 %t225, label %panic6206, label %ok6207 +panic6206: + call void @finch_panic(ptr @.str.3982, i64 3353, ptr @.str.3983) unreachable -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.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 %panic5850, label %ok5851 -panic5850: - call void @finch_panic(ptr @.str.3825, i64 3101, ptr @.str.3826) +ok6207: + %t226 = load %S.gen.Val, ptr %t224 + %t227 = load ptr, ptr %a2 + %t228 = icmp eq ptr %t227, null + br i1 %t228, label %panic6208, label %ok6209 +panic6208: + call void @finch_panic(ptr @.str.3984, i64 3353, ptr @.str.3985) unreachable -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.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 %panic5856, label %ok5857 -panic5856: - call void @finch_panic(ptr @.str.3827, i64 3102, ptr @.str.3828) +ok6209: + %t229 = getelementptr inbounds %S.gen.Val, ptr %t227, i32 0, i32 1 + %t230 = load %S.ast.Type, ptr %t229 + %t231 = call %S.ast.Node @finch.gen.Node0() + %t232 = call %S.gen.Val @finch.gen.coerce(ptr %t223, %S.gen.Val %t226, %S.ast.Type %t230, %S.ast.Node %t231, { ptr, i64, i64 } { ptr @.str.3986, i64 0, i64 0 }) + store %S.ast.Node %t231, ptr %a233 + call void @finch.drop.S_ast_Node(ptr %a233) + %t234 = load ptr, ptr %a3 + %t235 = icmp eq ptr %t234, null + br i1 %t235, label %panic6210, label %ok6211 +panic6210: + call void @finch_panic(ptr @.str.3987, i64 3353, ptr @.str.3988) unreachable -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.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 %then5858, label %endif5860 -then5858: - %t244 = load ptr, ptr %a1 - %t245 = load ptr, ptr %a2 - %t246 = icmp eq ptr %t245, null - br i1 %t246, label %panic5861, label %ok5862 -panic5861: - call void @finch_panic(ptr @.str.3830, i64 3103, ptr @.str.3831) +ok6211: + %t236 = load %S.gen.Val, ptr %t234 + store %S.gen.Val %t232, ptr %t234 + store %S.gen.Val %t236, ptr %a237 + call void @finch.drop.S_gen_Val(ptr %a237) + ret i1 true +endif6205: + %t238 = load ptr, ptr %a2 + %t239 = icmp eq ptr %t238, null + br i1 %t239, label %panic6212, label %ok6213 +panic6212: + call void @finch_panic(ptr @.str.3989, i64 3356, ptr @.str.3990) unreachable -ok5862: - %t247 = getelementptr inbounds %S.gen.Val, ptr %t245, i32 0, i32 0 - %t248 = load { ptr, i64, i64 }, ptr %t247 +ok6213: + %t240 = getelementptr inbounds %S.gen.Val, ptr %t238, i32 0, i32 1 + %t241 = load %S.ast.Type, ptr %t240 + %t242 = call i1 @finch.gen.isFloat(%S.ast.Type %t241) + br label %logic.from6214 +logic.from6214: + br i1 %t242, label %logic.rhs6215, label %logic.end6216 +logic.rhs6215: + %t243 = load ptr, ptr %a3 + %t244 = icmp eq ptr %t243, null + br i1 %t244, label %panic6217, label %ok6218 +panic6217: + call void @finch_panic(ptr @.str.3991, i64 3356, ptr @.str.3992) + unreachable +ok6218: + %t245 = getelementptr inbounds %S.gen.Val, ptr %t243, i32 0, i32 1 + %t246 = load %S.ast.Type, ptr %t245 + %t247 = call i1 @finch.gen.isFloat(%S.ast.Type %t246) + br label %logic.rend6219 +logic.rend6219: + br label %logic.end6216 +logic.end6216: + %t248 = phi i1 [ false, %logic.from6214 ], [ %t247, %logic.rend6219 ] + br i1 %t248, label %then6220, label %endif6222 +then6220: %t249 = load ptr, ptr %a2 %t250 = icmp eq ptr %t249, null - br i1 %t250, label %panic5863, label %ok5864 -panic5863: - call void @finch_panic(ptr @.str.3832, i64 3103, ptr @.str.3833) + br i1 %t250, label %panic6223, label %ok6224 +panic6223: + call void @finch_panic(ptr @.str.3993, i64 3357, ptr @.str.3994) unreachable -ok5864: +ok6224: %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.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.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 %panic5865, label %ok5866 -panic5865: - call void @finch_panic(ptr @.str.3836, i64 3103, ptr @.str.3837) + %t252 = getelementptr inbounds %S.ast.Type, ptr %t251, i32 0, i32 0 + %t253 = load { ptr, i64, i64 }, ptr %t252 + store { ptr, i64, i64 } %t253, ptr %a254 + store { ptr, i64, i64 } { ptr @.str.3995, i64 3, i64 0 }, ptr %a255 + %t256 = call i32 @finch_str_eq(ptr %a254, ptr %a255) + %t257 = icmp ne i32 %t256, 0 + br i1 %t257, label %then6225, label %endif6227 +then6225: + %t258 = load ptr, ptr %a1 + %t259 = load ptr, ptr %a2 + %t260 = icmp eq ptr %t259, null + br i1 %t260, label %panic6228, label %ok6229 +panic6228: + call void @finch_panic(ptr @.str.3996, i64 3358, ptr @.str.3997) unreachable -ok5866: - store %S.gen.Val %t257, ptr %t258 - br label %endif5860 -endif5860: - %t260 = load ptr, ptr %a3 - %t261 = icmp eq ptr %t260, null - br i1 %t261, label %panic5867, label %ok5868 -panic5867: - call void @finch_panic(ptr @.str.3838, i64 3105, ptr @.str.3839) +ok6229: + %t261 = getelementptr inbounds %S.gen.Val, ptr %t259, i32 0, i32 0 + %t262 = load { ptr, i64, i64 }, ptr %t261 + %t263 = load ptr, ptr %a2 + %t264 = icmp eq ptr %t263, null + br i1 %t264, label %panic6230, label %ok6231 +panic6230: + call void @finch_panic(ptr @.str.3998, i64 3358, ptr @.str.3999) unreachable -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.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 %then5869, label %endif5871 -then5869: - %t269 = load ptr, ptr %a1 - %t270 = load ptr, ptr %a3 - %t271 = icmp eq ptr %t270, null - br i1 %t271, label %panic5872, label %ok5873 -panic5872: - call void @finch_panic(ptr @.str.3841, i64 3106, ptr @.str.3842) +ok6231: + %t265 = getelementptr inbounds %S.gen.Val, ptr %t263, i32 0, i32 1 + %t266 = load %S.ast.Type, ptr %t265 + %t267 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4000, i64 5, i64 0 }) + %t268 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t258, { ptr, i64, i64 } %t262, %S.ast.Type %t266, %S.ast.Type %t267) + store %S.ast.Type %t267, ptr %a269 + call void @finch.drop.S_ast_Type(ptr %a269) + %t270 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t268, 0 + %t271 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4001, i64 5, i64 0 }) + %t272 = insertvalue %S.gen.Val %t270, %S.ast.Type %t271, 1 + %t273 = load ptr, ptr %a2 + %t274 = icmp eq ptr %t273, null + br i1 %t274, label %panic6232, label %ok6233 +panic6232: + call void @finch_panic(ptr @.str.4002, i64 3358, ptr @.str.4003) unreachable -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 %panic5874, label %ok5875 -panic5874: - call void @finch_panic(ptr @.str.3843, i64 3106, ptr @.str.3844) +ok6233: + %t275 = load %S.gen.Val, ptr %t273 + store %S.gen.Val %t272, ptr %t273 + store %S.gen.Val %t275, ptr %a276 + call void @finch.drop.S_gen_Val(ptr %a276) + br label %endif6227 +endif6227: + %t277 = load ptr, ptr %a3 + %t278 = icmp eq ptr %t277, null + br i1 %t278, label %panic6234, label %ok6235 +panic6234: + call void @finch_panic(ptr @.str.4004, i64 3360, ptr @.str.4005) unreachable -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.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.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 %panic5876, label %ok5877 -panic5876: - call void @finch_panic(ptr @.str.3847, i64 3106, ptr @.str.3848) +ok6235: + %t279 = getelementptr inbounds %S.gen.Val, ptr %t277, i32 0, i32 1 + %t280 = getelementptr inbounds %S.ast.Type, ptr %t279, i32 0, i32 0 + %t281 = load { ptr, i64, i64 }, ptr %t280 + store { ptr, i64, i64 } %t281, ptr %a282 + store { ptr, i64, i64 } { ptr @.str.4006, i64 3, i64 0 }, ptr %a283 + %t284 = call i32 @finch_str_eq(ptr %a282, ptr %a283) + %t285 = icmp ne i32 %t284, 0 + br i1 %t285, label %then6236, label %endif6238 +then6236: + %t286 = load ptr, ptr %a1 + %t287 = load ptr, ptr %a3 + %t288 = icmp eq ptr %t287, null + br i1 %t288, label %panic6239, label %ok6240 +panic6239: + call void @finch_panic(ptr @.str.4007, i64 3361, ptr @.str.4008) unreachable -ok5877: - store %S.gen.Val %t282, ptr %t283 - br label %endif5871 -endif5871: +ok6240: + %t289 = getelementptr inbounds %S.gen.Val, ptr %t287, i32 0, i32 0 + %t290 = load { ptr, i64, i64 }, ptr %t289 + %t291 = load ptr, ptr %a3 + %t292 = icmp eq ptr %t291, null + br i1 %t292, label %panic6241, label %ok6242 +panic6241: + call void @finch_panic(ptr @.str.4009, i64 3361, ptr @.str.4010) + unreachable +ok6242: + %t293 = getelementptr inbounds %S.gen.Val, ptr %t291, i32 0, i32 1 + %t294 = load %S.ast.Type, ptr %t293 + %t295 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4011, i64 5, i64 0 }) + %t296 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t286, { ptr, i64, i64 } %t290, %S.ast.Type %t294, %S.ast.Type %t295) + store %S.ast.Type %t295, ptr %a297 + call void @finch.drop.S_ast_Type(ptr %a297) + %t298 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t296, 0 + %t299 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4012, i64 5, i64 0 }) + %t300 = insertvalue %S.gen.Val %t298, %S.ast.Type %t299, 1 + %t301 = load ptr, ptr %a3 + %t302 = icmp eq ptr %t301, null + br i1 %t302, label %panic6243, label %ok6244 +panic6243: + call void @finch_panic(ptr @.str.4013, i64 3361, ptr @.str.4014) + unreachable +ok6244: + %t303 = load %S.gen.Val, ptr %t301 + store %S.gen.Val %t300, ptr %t301 + store %S.gen.Val %t303, ptr %a304 + call void @finch.drop.S_gen_Val(ptr %a304) + br label %endif6238 +endif6238: ret i1 true -endif5855: +endif6222: ret i1 false } @@ -52732,93 +62351,118 @@ entry: %a42 = alloca { ptr, i64, i64 }, align 16 %a43 = alloca { ptr, i64, i64 }, align 16 %a44 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 + %a45 = 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 %a53 = alloca { ptr, i64, i64 }, align 16 %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = 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 + %a56 = alloca { ptr, i64, i64 }, align 16 + %a57 = 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 %a65 = alloca { ptr, i64, i64 }, align 16 %a66 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca i64, align 16 - %a141 = alloca i64, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a147 = 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 + %a73 = alloca { ptr, i64, i64 }, align 16 + %a75 = alloca { ptr, i64, i64 }, align 16 + %a113 = alloca { ptr, i64, i64 }, align 16 + %a129 = alloca { ptr, i64, i64 }, align 16 + %a149 = alloca { ptr, i64, i64 }, align 16 %a152 = alloca i64, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 + %a155 = alloca i64, align 16 + %a160 = alloca { ptr, i64, i64 }, align 16 + %a161 = alloca { ptr, i64, i64 }, align 16 + %a166 = alloca i64, align 16 + %a178 = alloca { ptr, i64, i64 }, align 16 %a180 = alloca { ptr, i64, i64 }, align 16 %a181 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 + %a185 = alloca { ptr, i64, i64 }, align 16 + %a186 = alloca { ptr, i64, i64 }, align 16 %a194 = alloca { ptr, i64, i64 }, align 16 %a195 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a205 = 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 + %a214 = alloca { ptr, i64, i64 }, align 16 + %a218 = 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 - %a222 = 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 %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 + %a229 = 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 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = 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 + %a245 = 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 - %a254 = alloca %S.ast.Type, align 16 - %a255 = alloca %S.ast.Type, align 16 + %a250 = 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 + %a257 = alloca { ptr, i64, i64 }, align 16 + %a258 = alloca { ptr, i64, i64 }, align 16 + %a259 = alloca { ptr, i64, i64 }, align 16 + %a260 = alloca { ptr, i64, i64 }, align 16 + %a262 = alloca { ptr, i64, i64 }, align 16 + %a263 = alloca { ptr, i64, i64 }, align 16 + %a264 = alloca { ptr, i64, i64 }, align 16 + %a265 = 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 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a285 = alloca i64, align 16 - %a288 = alloca i64, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca i64, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = 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 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a334 = alloca { ptr, i64, i64 }, align 16 - %a335 = 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 - %a343 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a345 = alloca { ptr, i64, i64 }, align 16 - %a351 = alloca %S.ast.Type, align 16 - %a352 = alloca %S.ast.Type, align 16 - %a361 = alloca %S.gen.Val, align 16 - %a362 = alloca %S.gen.Val, align 16 + %a272 = alloca { ptr, i64, i64 }, align 16 + %a275 = alloca { ptr, i64, i64 }, align 16 + %a279 = alloca %S.ast.Type, align 16 + %a280 = alloca %S.ast.Type, align 16 + %a296 = alloca { ptr, i64, i64 }, align 16 + %a307 = alloca { ptr, i64, i64 }, align 16 + %a310 = alloca i64, align 16 + %a313 = alloca i64, align 16 + %a318 = alloca { ptr, i64, i64 }, align 16 + %a319 = alloca { ptr, i64, i64 }, align 16 + %a324 = 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 + %a348 = 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 + %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 + %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 + %a366 = 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 + %a373 = alloca { ptr, i64, i64 }, align 16 + %a374 = alloca { ptr, i64, i64 }, align 16 + %a375 = alloca { ptr, i64, i64 }, align 16 + %a376 = alloca { ptr, i64, i64 }, align 16 + %a379 = alloca { ptr, i64, i64 }, align 16 + %a383 = alloca %S.ast.Type, align 16 + %a384 = alloca %S.ast.Type, align 16 store ptr %p0, ptr %a1 store { ptr, i64, i64 } %p1, ptr %a2 store %S.gen.Val %p2, ptr %a3 @@ -52832,511 +62476,582 @@ 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.3849, i64 1, i64 0 }, ptr %a14 + store { ptr, i64, i64 } { ptr @.str.4015, 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.from5878 -logic.from5878: - br i1 %t16, label %logic.rhs5879, label %logic.end5880 -logic.rhs5879: + br label %logic.from6245 +logic.from6245: + br i1 %t16, label %logic.rhs6246, label %logic.end6247 +logic.rhs6246: %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.3850, i64 3, i64 0 }, ptr %a21 + store { ptr, i64, i64 } { ptr @.str.4016, 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.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: + br label %logic.rend6248 +logic.rend6248: + br label %logic.end6247 +logic.end6247: + %t24 = phi i1 [ false, %logic.from6245 ], [ %t23, %logic.rend6248 ] + br label %logic.from6249 +logic.from6249: + br i1 %t24, label %logic.rhs6250, label %logic.end6251 +logic.rhs6250: %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.3851, i64 3, i64 0 }, ptr %a29 + store { ptr, i64, i64 } { ptr @.str.4017, 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.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: + br label %logic.rend6252 +logic.rend6252: + br label %logic.end6251 +logic.end6251: + %t32 = phi i1 [ false, %logic.from6249 ], [ %t31, %logic.rend6252 ] + br i1 %t32, label %then6253, label %endif6255 +then6253: %t33 = load ptr, ptr %a1 - %t34 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t33, { ptr, i64, i64 } { ptr @.str.3852, i64 17, i64 0 }) + %t34 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t33, { ptr, i64, i64 } { ptr @.str.4018, 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.3853, i64 32, i64 0 }, ptr %a39 + store { ptr, i64, i64 } { ptr @.str.4019, 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.3854, i64 6, i64 0 }, ptr %a44 + store { ptr, i64, i64 } { ptr @.str.4020, 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 - %t47 = load %S.gen.Val, ptr %a6 - %t48 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t46, %S.gen.Val %t47) - store { ptr, i64, i64 } %t45, 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.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 - %t58 = load %S.gen.Val, ptr %a10 - %t59 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t57, %S.gen.Val %t58) - 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.3856, i64 1, i64 0 }, ptr %a66 + store { ptr, i64, i64 } %t41, ptr %a45 + call void @finch_str_drop(ptr %a45) + %t46 = load { ptr, i64, i64 }, ptr %a42 + %t47 = load ptr, ptr %a1 + %t48 = load %S.gen.Val, ptr %a6 + %t49 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t47, %S.gen.Val %t48) + 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) + store { ptr, i64, i64 } %t46, ptr %a53 + call void @finch_str_drop(ptr %a53) + store { ptr, i64, i64 } %t49, ptr %a54 + call void @finch_str_drop(ptr %a54) + %t55 = load { ptr, i64, i64 }, ptr %a50 + store { ptr, i64, i64 } %t55, ptr %a57 + store { ptr, i64, i64 } { ptr @.str.4021, i64 6, i64 0 }, ptr %a58 + call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) + store { ptr, i64, i64 } %t55, ptr %a59 + call void @finch_str_drop(ptr %a59) + %t60 = load { ptr, i64, i64 }, ptr %a56 + %t61 = load ptr, ptr %a1 + %t62 = load %S.gen.Val, ptr %a10 + %t63 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t61, %S.gen.Val %t62) + store { ptr, i64, i64 } %t60, 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 - 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.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.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 -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 %then5889, label %endif5891 -then5889: + store { ptr, i64, i64 } %t60, ptr %a67 + call void @finch_str_drop(ptr %a67) + store { ptr, i64, i64 } %t63, ptr %a68 + call void @finch_str_drop(ptr %a68) + %t69 = load { ptr, i64, i64 }, ptr %a64 + store { ptr, i64, i64 } %t69, ptr %a71 + store { ptr, i64, i64 } { ptr @.str.4022, i64 1, i64 0 }, ptr %a72 + call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) + store { ptr, i64, i64 } %t69, ptr %a73 + call void @finch_str_drop(ptr %a73) + %t74 = load { ptr, i64, i64 }, ptr %a70 + call void @finch.gen.emit(ptr %t36, { ptr, i64, i64 } %t74) + store { ptr, i64, i64 } %t74, ptr %a75 + call void @finch_str_drop(ptr %a75) + %t76 = load ptr, ptr %a1 + %t77 = load %S.gen.Val, ptr %a6 + call void @finch.gen.release(ptr %t76, %S.gen.Val %t77) %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 %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 %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.3859, i64 1, i64 0 }, ptr %t88 - %t89 = getelementptr inbounds { ptr, i64, i64 }, ptr %t87, i64 1 - 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.3861, i64 1, i64 0 }, ptr %t90 - %t91 = getelementptr inbounds { ptr, i64, i64 }, ptr %t87, i64 3 - 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.3863, i64 1, i64 0 }, ptr %t92 - %t93 = getelementptr inbounds { ptr, i64, i64 }, ptr %t87, i64 5 - 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.3865, i64 1, i64 0 }, ptr %t94 - %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %t87, i64 7 - 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.3867, i64 2, i64 0 }, ptr %t96 - %t97 = getelementptr inbounds { ptr, i64, i64 }, ptr %t87, i64 9 - 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 - store { ptr, i64, i64 } %t100, ptr %a101 - %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.3869, i64 3, i64 0 }, ptr %t104 - %t105 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i64 1 - 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.3871, i64 3, i64 0 }, ptr %t106 - %t107 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i64 3 - 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.3873, i64 4, i64 0 }, ptr %t108 - %t109 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i64 5 - 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.3875, i64 2, i64 0 }, ptr %t110 - %t111 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i64 7 - 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.3877, i64 3, i64 0 }, ptr %t112 - %t113 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i64 9 - 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 - store { ptr, i64, i64 } %t116, ptr %a117 - %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 %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.3879, i64 3, i64 0 }, ptr %t123 - %t124 = getelementptr inbounds { ptr, i64, i64 }, ptr %t122, i64 1 - 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.3881, i64 3, i64 0 }, ptr %t125 - %t126 = getelementptr inbounds { ptr, i64, i64 }, ptr %t122, i64 3 - 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.3883, i64 4, i64 0 }, ptr %t127 - %t128 = getelementptr inbounds { ptr, i64, i64 }, ptr %t122, i64 5 - 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.3885, i64 2, i64 0 }, ptr %t129 - %t130 = getelementptr inbounds { ptr, i64, i64 }, ptr %t122, i64 7 - 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.3887, i64 3, i64 0 }, ptr %t131 - %t132 = getelementptr inbounds { ptr, i64, i64 }, ptr %t122, i64 9 - 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 %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.cond5898 -find.cond5898: - %t142 = load i64, ptr %a141 - %t143 = icmp slt i64 %t142, %t139 - 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.hit5900, label %find.next5901 -find.hit5900: - store i64 %t142, ptr %a138 - br label %find.end5902 -find.next5901: - %t150 = add i64 %t142, 1 - store i64 %t150, ptr %a141 - 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 %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 %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 - %t163 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t160, %S.ast.Type %t162) - 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.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.from5906 -logic.from5906: - br i1 %t169, label %logic.end5908, label %logic.rhs5907 -logic.rhs5907: + %t79 = load %S.gen.Val, ptr %a10 + call void @finch.gen.release(ptr %t78, %S.gen.Val %t79) + %t80 = load ptr, ptr %a1 + %t81 = load { ptr, i64, i64 }, ptr %a35 + %t82 = call { ptr, i64, i64 } @finch.gen.load(ptr %t80, { ptr, i64, i64 } { ptr @.str.4023, i64 17, i64 0 }, { ptr, i64, i64 } %t81) + %t83 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t82, 0 + %t84 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4024, i64 3, i64 0 }) + %t85 = insertvalue %S.gen.Val %t83, %S.ast.Type %t84, 1 + %t86 = insertvalue %S.gen.Val %t85, i1 true, 2 + call void @finch_str_drop(ptr %a35) + call void @finch.drop.S_gen_Val(ptr %a10) + call void @finch.drop.S_gen_Val(ptr %a6) + ret %S.gen.Val %t86 +endif6255: + %t87 = load ptr, ptr %a1 + %t88 = call i1 @finch.gen.unify(ptr %t87, ptr %a6, ptr %a10) + %t89 = xor i1 %t88, true + br i1 %t89, label %then6256, label %endif6258 +then6256: + %t90 = load ptr, ptr %a1 + %t91 = load { ptr, i64, i64 }, ptr %a2 + %t92 = load %S.gen.Val, ptr %a6 + %t93 = load %S.gen.Val, ptr %a10 + %t94 = load %S.ast.Node, ptr %a11 + call void @finch.gen.badOperands(ptr %t90, { ptr, i64, i64 } %t91, %S.gen.Val %t92, %S.gen.Val %t93, %S.ast.Node %t94) + br label %endif6258 +endif6258: + %t95 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 + %t96 = load %S.ast.Type, ptr %t95 + %t97 = call i1 @finch.gen.isInt(%S.ast.Type %t96) + br i1 %t97, label %then6259, label %endif6261 +then6259: + %t98 = mul i64 10, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) + %t99 = call ptr @finch_alloc(i64 %t98) + %t100 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 0 + store { ptr, i64, i64 } { ptr @.str.4025, i64 1, i64 0 }, ptr %t100 + %t101 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 1 + store { ptr, i64, i64 } { ptr @.str.4026, i64 1, i64 0 }, ptr %t101 + %t102 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 2 + store { ptr, i64, i64 } { ptr @.str.4027, i64 1, i64 0 }, ptr %t102 + %t103 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 3 + store { ptr, i64, i64 } { ptr @.str.4028, i64 1, i64 0 }, ptr %t103 + %t104 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 4 + store { ptr, i64, i64 } { ptr @.str.4029, i64 1, i64 0 }, ptr %t104 + %t105 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 5 + store { ptr, i64, i64 } { ptr @.str.4030, i64 1, i64 0 }, ptr %t105 + %t106 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 6 + store { ptr, i64, i64 } { ptr @.str.4031, i64 1, i64 0 }, ptr %t106 + %t107 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 7 + store { ptr, i64, i64 } { ptr @.str.4032, i64 1, i64 0 }, ptr %t107 + %t108 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 8 + store { ptr, i64, i64 } { ptr @.str.4033, i64 2, i64 0 }, ptr %t108 + %t109 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 9 + store { ptr, i64, i64 } { ptr @.str.4034, i64 2, i64 0 }, ptr %t109 + %t110 = insertvalue { ptr, i64, i64 } undef, ptr %t99, 0 + %t111 = insertvalue { ptr, i64, i64 } %t110, i64 10, 1 + %t112 = insertvalue { ptr, i64, i64 } %t111, i64 10, 2 + store { ptr, i64, i64 } %t112, ptr %a113 + %t114 = mul i64 10, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) + %t115 = call ptr @finch_alloc(i64 %t114) + %t116 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 0 + store { ptr, i64, i64 } { ptr @.str.4035, i64 3, i64 0 }, ptr %t116 + %t117 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 1 + store { ptr, i64, i64 } { ptr @.str.4036, i64 3, i64 0 }, ptr %t117 + %t118 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 2 + store { ptr, i64, i64 } { ptr @.str.4037, i64 3, i64 0 }, ptr %t118 + %t119 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 3 + store { ptr, i64, i64 } { ptr @.str.4038, i64 4, i64 0 }, ptr %t119 + %t120 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 4 + store { ptr, i64, i64 } { ptr @.str.4039, i64 4, i64 0 }, ptr %t120 + %t121 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 5 + store { ptr, i64, i64 } { ptr @.str.4040, i64 3, i64 0 }, ptr %t121 + %t122 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 6 + store { ptr, i64, i64 } { ptr @.str.4041, i64 2, i64 0 }, ptr %t122 + %t123 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 7 + store { ptr, i64, i64 } { ptr @.str.4042, i64 3, i64 0 }, ptr %t123 + %t124 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 8 + store { ptr, i64, i64 } { ptr @.str.4043, i64 3, i64 0 }, ptr %t124 + %t125 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 9 + store { ptr, i64, i64 } { ptr @.str.4044, i64 4, i64 0 }, ptr %t125 + %t126 = insertvalue { ptr, i64, i64 } undef, ptr %t115, 0 + %t127 = insertvalue { ptr, i64, i64 } %t126, i64 10, 1 + %t128 = insertvalue { ptr, i64, i64 } %t127, i64 10, 2 + store { ptr, i64, i64 } %t128, ptr %a129 + %t130 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 + %t131 = load %S.ast.Type, ptr %t130 + %t132 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t131) + br i1 %t132, label %then6262, label %endif6264 +then6262: + %t133 = mul i64 10, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) + %t134 = call ptr @finch_alloc(i64 %t133) + %t135 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 0 + store { ptr, i64, i64 } { ptr @.str.4045, i64 3, i64 0 }, ptr %t135 + %t136 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 1 + store { ptr, i64, i64 } { ptr @.str.4046, i64 3, i64 0 }, ptr %t136 + %t137 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 2 + store { ptr, i64, i64 } { ptr @.str.4047, i64 3, i64 0 }, ptr %t137 + %t138 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 3 + store { ptr, i64, i64 } { ptr @.str.4048, i64 4, i64 0 }, ptr %t138 + %t139 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 4 + store { ptr, i64, i64 } { ptr @.str.4049, i64 4, i64 0 }, ptr %t139 + %t140 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 5 + store { ptr, i64, i64 } { ptr @.str.4050, i64 3, i64 0 }, ptr %t140 + %t141 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 6 + store { ptr, i64, i64 } { ptr @.str.4051, i64 2, i64 0 }, ptr %t141 + %t142 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 7 + store { ptr, i64, i64 } { ptr @.str.4052, i64 3, i64 0 }, ptr %t142 + %t143 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 8 + store { ptr, i64, i64 } { ptr @.str.4053, i64 3, i64 0 }, ptr %t143 + %t144 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 9 + store { ptr, i64, i64 } { ptr @.str.4054, i64 4, i64 0 }, ptr %t144 + %t145 = insertvalue { ptr, i64, i64 } undef, ptr %t134, 0 + %t146 = insertvalue { ptr, i64, i64 } %t145, i64 10, 1 + %t147 = insertvalue { ptr, i64, i64 } %t146, i64 10, 2 + %t148 = load { ptr, i64, i64 }, ptr %a129 + store { ptr, i64, i64 } %t147, ptr %a129 + store { ptr, i64, i64 } %t148, ptr %a149 + call void @finch.drop.arr_str(ptr %a149) + br label %endif6264 +endif6264: + %t150 = getelementptr inbounds { ptr, i64, i64 }, ptr %a113, i32 0, i32 1 + %t151 = load { ptr, i64, i64 }, ptr %a2 + store i64 -1, ptr %a152 + %t153 = load i64, ptr %t150 + %t154 = load ptr, ptr %a113 + store i64 0, ptr %a155 + br label %find.cond6265 +find.cond6265: + %t156 = load i64, ptr %a155 + %t157 = icmp slt i64 %t156, %t153 + br i1 %t157, label %find.body6266, label %find.end6269 +find.body6266: + %t158 = getelementptr inbounds { ptr, i64, i64 }, ptr %t154, i64 %t156 + %t159 = load { ptr, i64, i64 }, ptr %t158 + store { ptr, i64, i64 } %t159, ptr %a160 + store { ptr, i64, i64 } %t151, ptr %a161 + %t162 = call i32 @finch_str_eq(ptr %a160, ptr %a161) + %t163 = icmp ne i32 %t162, 0 + br i1 %t163, label %find.hit6267, label %find.next6268 +find.hit6267: + store i64 %t156, ptr %a152 + br label %find.end6269 +find.next6268: + %t164 = add i64 %t156, 1 + store i64 %t164, ptr %a155 + br label %find.cond6265 +find.end6269: + %t165 = load i64, ptr %a152 + store i64 %t165, ptr %a166 + %t167 = load i64, ptr %a166 + %t168 = icmp slt i64 %t167, 0 + br i1 %t168, label %then6270, label %endif6272 +then6270: + %t169 = load ptr, ptr %a1 %t170 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t170, ptr %a171 - 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.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.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 + %t171 = load %S.gen.Val, ptr %a6 + %t172 = load %S.gen.Val, ptr %a10 + %t173 = load %S.ast.Node, ptr %a11 + call void @finch.gen.badOperands(ptr %t169, { ptr, i64, i64 } %t170, %S.gen.Val %t171, %S.gen.Val %t172, %S.ast.Node %t173) + br label %endif6272 +endif6272: + %t174 = load ptr, ptr %a1 + %t175 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 + %t176 = load %S.ast.Type, ptr %t175 + %t177 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t174, %S.ast.Type %t176) + store { ptr, i64, i64 } %t177, ptr %a178 + %t179 = load { ptr, i64, i64 }, ptr %a2 store { ptr, i64, i64 } %t179, ptr %a180 - store { ptr, i64, i64 } { ptr @.str.3891, i64 1, i64 0 }, ptr %a181 + store { ptr, i64, i64 } { ptr @.str.4055, 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.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.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 %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.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.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 - %t202 = load { ptr, i64, i64 }, ptr %t201 - store { ptr, i64, i64 } %t200, 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.3895, i64 3, i64 0 }, ptr %a209 + br label %logic.from6273 +logic.from6273: + br i1 %t183, label %logic.end6275, label %logic.rhs6274 +logic.rhs6274: + %t184 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t184, ptr %a185 + store { ptr, i64, i64 } { ptr @.str.4056, i64 1, i64 0 }, ptr %a186 + %t187 = call i32 @finch_str_eq(ptr %a185, ptr %a186) + %t188 = icmp ne i32 %t187, 0 + br label %logic.rend6276 +logic.rend6276: + br label %logic.end6275 +logic.end6275: + %t189 = phi i1 [ true, %logic.from6273 ], [ %t188, %logic.rend6276 ] + br i1 %t189, label %then6277, label %endif6279 +then6277: + %t190 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 3 + %t191 = load i1, ptr %t190 + br label %logic.from6280 +logic.from6280: + br i1 %t191, label %logic.rhs6281, label %logic.end6282 +logic.rhs6281: + %t192 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 + %t193 = load { ptr, i64, i64 }, ptr %t192 + store { ptr, i64, i64 } %t193, ptr %a194 + store { ptr, i64, i64 } { ptr @.str.4057, i64 1, i64 0 }, ptr %a195 + %t196 = call i32 @finch_str_eq(ptr %a194, ptr %a195) + %t197 = icmp ne i32 %t196, 0 + br label %logic.rend6283 +logic.rend6283: + br label %logic.end6282 +logic.end6282: + %t198 = phi i1 [ false, %logic.from6280 ], [ %t197, %logic.rend6283 ] + br i1 %t198, label %then6284, label %endif6286 +then6284: + %t199 = load ptr, ptr %a1 + %t200 = load %S.ast.Node, ptr %a11 + call void @finch.gen.fail(ptr %t199, %S.ast.Node %t200, { ptr, i64, i64 } { ptr @.str.4058, i64 16, i64 0 }) + br label %endif6286 +endif6286: + %t201 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 3 + %t202 = load i1, ptr %t201 + %t203 = xor i1 %t202, true + br i1 %t203, label %then6287, label %endif6289 +then6287: + %t204 = load ptr, ptr %a1 + %t205 = load ptr, ptr %a1 + %t206 = load { ptr, i64, i64 }, ptr %a178 + store { ptr, i64, i64 } { ptr @.str.4059, i64 8, i64 0 }, 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 - %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.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 %range5923, label %inrange5924 -range5923: - call void @finch_panic_index(ptr @.str.3897, i64 3145, i64 %t214, i64 %t216) + store { ptr, i64, i64 } %t210, ptr %a212 + store { ptr, i64, i64 } { ptr @.str.4060, i64 1, i64 0 }, ptr %a213 + call void @finch_str_concat(ptr %a211, ptr %a212, ptr %a213) + store { ptr, i64, i64 } %t210, ptr %a214 + call void @finch_str_drop(ptr %a214) + %t215 = load { ptr, i64, i64 }, ptr %a211 + %t216 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 + %t217 = load { ptr, i64, i64 }, ptr %t216 + store { ptr, i64, i64 } %t215, ptr %a219 + store { ptr, i64, i64 } %t217, ptr %a220 + call void @finch_str_concat(ptr %a218, ptr %a219, ptr %a220) + store { ptr, i64, i64 } %t215, ptr %a221 + call void @finch_str_drop(ptr %a221) + %t222 = load { ptr, i64, i64 }, ptr %a218 + store { ptr, i64, i64 } %t222, ptr %a224 + store { ptr, i64, i64 } { ptr @.str.4061, i64 3, i64 0 }, ptr %a225 + call void @finch_str_concat(ptr %a223, ptr %a224, ptr %a225) + store { ptr, i64, i64 } %t222, ptr %a226 + call void @finch_str_drop(ptr %a226) + %t227 = load { ptr, i64, i64 }, ptr %a223 + %t228 = call { ptr, i64, i64 } @finch.gen.op(ptr %t205, { ptr, i64, i64 } %t227) + store { ptr, i64, i64 } %t227, ptr %a229 + call void @finch_str_drop(ptr %a229) + %t230 = load %S.ast.Node, ptr %a11 + call void @finch.gen.panicIf(ptr %t204, { ptr, i64, i64 } %t228, { ptr, i64, i64 } { ptr @.str.4062, i64 16, i64 0 }, %S.ast.Node %t230) + store { ptr, i64, i64 } %t228, ptr %a231 + call void @finch_str_drop(ptr %a231) + br label %endif6289 +endif6289: + br label %endif6279 +endif6279: + %t232 = load ptr, ptr %a1 + %t233 = load i64, ptr %a166 + %t234 = load { ptr, i64, i64 }, ptr %a129 + %t235 = extractvalue { ptr, i64, i64 } %t234, 1 + %t236 = icmp uge i64 %t233, %t235 + br i1 %t236, label %range6290, label %inrange6291 +range6290: + call void @finch_panic_index(ptr @.str.4063, i64 3402, i64 %t233, i64 %t235) unreachable -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.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 - store { ptr, i64, i64 } %t224, 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.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 - %t235 = load { ptr, i64, i64 }, ptr %t234 - store { ptr, i64, i64 } %t233, ptr %a237 - store { ptr, i64, i64 } %t235, ptr %a238 - call void @finch_str_concat(ptr %a236, ptr %a237, ptr %a238) - %t239 = load { ptr, i64, i64 }, ptr %a236 +inrange6291: + %t237 = extractvalue { ptr, i64, i64 } %t234, 0 + %t238 = getelementptr inbounds { ptr, i64, i64 }, ptr %t237, i64 %t233 + %t239 = load { ptr, i64, i64 }, ptr %t238 store { ptr, i64, i64 } %t239, ptr %a241 - store { ptr, i64, i64 } { ptr @.str.3900, i64 2, i64 0 }, ptr %a242 + store { ptr, i64, i64 } { ptr @.str.4064, i64 1, 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 - %t245 = load { ptr, i64, i64 }, ptr %t244 - store { ptr, i64, i64 } %t243, ptr %a247 - store { ptr, i64, i64 } %t245, ptr %a248 - call void @finch_str_concat(ptr %a246, ptr %a247, ptr %a248) - %t249 = load { ptr, i64, i64 }, ptr %a246 - %t250 = call { ptr, i64, i64 } @finch.gen.op(ptr %t213, { ptr, i64, i64 } %t249) - %t251 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t250, 0 - %t252 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t253 = load %S.ast.Type, ptr %t252 - store %S.ast.Type %t253, ptr %a254 - call void @finch.copy.S_ast_Type(ptr %a255, ptr %a254) - %t256 = load %S.ast.Type, ptr %a255 - %t257 = insertvalue %S.gen.Val %t251, %S.ast.Type %t256, 1 - ret %S.gen.Val %t257 -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 %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.3901, i64 1, i64 0 }, ptr %t263 - %t264 = getelementptr inbounds { ptr, i64, i64 }, ptr %t262, i64 1 - 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.3903, i64 1, i64 0 }, ptr %t265 - %t266 = getelementptr inbounds { ptr, i64, i64 }, ptr %t262, i64 3 - 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.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 - store { ptr, i64, i64 } %t270, ptr %a271 - %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.3906, i64 4, i64 0 }, ptr %t274 - %t275 = getelementptr inbounds { ptr, i64, i64 }, ptr %t273, i64 1 - 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.3908, i64 4, i64 0 }, ptr %t276 - %t277 = getelementptr inbounds { ptr, i64, i64 }, ptr %t273, i64 3 - 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.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 - store { ptr, i64, i64 } %t281, ptr %a282 - %t283 = getelementptr inbounds { ptr, i64, i64 }, ptr %a271, i32 0, i32 1 - %t284 = load { ptr, i64, i64 }, ptr %a2 - store i64 -1, ptr %a285 - %t286 = load i64, ptr %t283 - %t287 = load ptr, ptr %a271 - store i64 0, ptr %a288 - br label %find.cond5928 -find.cond5928: - %t289 = load i64, ptr %a288 - %t290 = icmp slt i64 %t289, %t286 - 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.hit5930, label %find.next5931 -find.hit5930: - store i64 %t289, ptr %a285 - br label %find.end5932 -find.next5931: - %t297 = add i64 %t289, 1 - store i64 %t297, ptr %a288 - 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 %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 %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 %range5936, label %inrange5937 -range5936: - call void @finch_panic_index(ptr @.str.3911, i64 3154, i64 %t308, i64 %t310) + %t244 = load { ptr, i64, i64 }, ptr %a178 + store { ptr, i64, i64 } %t243, ptr %a246 + store { ptr, i64, i64 } %t244, ptr %a247 + call void @finch_str_concat(ptr %a245, ptr %a246, ptr %a247) + store { ptr, i64, i64 } %t243, ptr %a248 + call void @finch_str_drop(ptr %a248) + %t249 = load { ptr, i64, i64 }, ptr %a245 + store { ptr, i64, i64 } %t249, ptr %a251 + store { ptr, i64, i64 } { ptr @.str.4065, i64 1, i64 0 }, ptr %a252 + call void @finch_str_concat(ptr %a250, ptr %a251, ptr %a252) + store { ptr, i64, i64 } %t249, ptr %a253 + call void @finch_str_drop(ptr %a253) + %t254 = load { ptr, i64, i64 }, ptr %a250 + %t255 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 0 + %t256 = load { ptr, i64, i64 }, ptr %t255 + store { ptr, i64, i64 } %t254, ptr %a258 + store { ptr, i64, i64 } %t256, ptr %a259 + call void @finch_str_concat(ptr %a257, ptr %a258, ptr %a259) + store { ptr, i64, i64 } %t254, ptr %a260 + call void @finch_str_drop(ptr %a260) + %t261 = load { ptr, i64, i64 }, ptr %a257 + store { ptr, i64, i64 } %t261, ptr %a263 + store { ptr, i64, i64 } { ptr @.str.4066, i64 2, i64 0 }, ptr %a264 + call void @finch_str_concat(ptr %a262, ptr %a263, ptr %a264) + store { ptr, i64, i64 } %t261, ptr %a265 + call void @finch_str_drop(ptr %a265) + %t266 = load { ptr, i64, i64 }, ptr %a262 + %t267 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 + %t268 = load { ptr, i64, i64 }, ptr %t267 + store { ptr, i64, i64 } %t266, ptr %a270 + store { ptr, i64, i64 } %t268, ptr %a271 + call void @finch_str_concat(ptr %a269, ptr %a270, ptr %a271) + store { ptr, i64, i64 } %t266, ptr %a272 + call void @finch_str_drop(ptr %a272) + %t273 = load { ptr, i64, i64 }, ptr %a269 + %t274 = call { ptr, i64, i64 } @finch.gen.op(ptr %t232, { ptr, i64, i64 } %t273) + store { ptr, i64, i64 } %t273, ptr %a275 + call void @finch_str_drop(ptr %a275) + %t276 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t274, 0 + %t277 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 + %t278 = load %S.ast.Type, ptr %t277 + store %S.ast.Type %t278, ptr %a279 + call void @finch.copy.S_ast_Type(ptr %a280, ptr %a279) + %t281 = load %S.ast.Type, ptr %a280 + %t282 = insertvalue %S.gen.Val %t276, %S.ast.Type %t281, 1 + call void @finch_str_drop(ptr %a178) + call void @finch.drop.arr_str(ptr %a129) + call void @finch.drop.arr_str(ptr %a113) + call void @finch.drop.S_gen_Val(ptr %a10) + call void @finch.drop.S_gen_Val(ptr %a6) + ret %S.gen.Val %t282 +endif6261: + %t283 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 + %t284 = load %S.ast.Type, ptr %t283 + %t285 = call i1 @finch.gen.isFloat(%S.ast.Type %t284) + br i1 %t285, label %then6292, label %endif6294 +then6292: + %t286 = mul i64 5, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) + %t287 = call ptr @finch_alloc(i64 %t286) + %t288 = getelementptr inbounds { ptr, i64, i64 }, ptr %t287, i64 0 + store { ptr, i64, i64 } { ptr @.str.4067, i64 1, i64 0 }, ptr %t288 + %t289 = getelementptr inbounds { ptr, i64, i64 }, ptr %t287, i64 1 + store { ptr, i64, i64 } { ptr @.str.4068, i64 1, i64 0 }, ptr %t289 + %t290 = getelementptr inbounds { ptr, i64, i64 }, ptr %t287, i64 2 + store { ptr, i64, i64 } { ptr @.str.4069, i64 1, i64 0 }, ptr %t290 + %t291 = getelementptr inbounds { ptr, i64, i64 }, ptr %t287, i64 3 + store { ptr, i64, i64 } { ptr @.str.4070, i64 1, i64 0 }, ptr %t291 + %t292 = getelementptr inbounds { ptr, i64, i64 }, ptr %t287, i64 4 + store { ptr, i64, i64 } { ptr @.str.4071, i64 1, i64 0 }, ptr %t292 + %t293 = insertvalue { ptr, i64, i64 } undef, ptr %t287, 0 + %t294 = insertvalue { ptr, i64, i64 } %t293, i64 5, 1 + %t295 = insertvalue { ptr, i64, i64 } %t294, i64 5, 2 + store { ptr, i64, i64 } %t295, ptr %a296 + %t297 = mul i64 5, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) + %t298 = call ptr @finch_alloc(i64 %t297) + %t299 = getelementptr inbounds { ptr, i64, i64 }, ptr %t298, i64 0 + store { ptr, i64, i64 } { ptr @.str.4072, i64 4, i64 0 }, ptr %t299 + %t300 = getelementptr inbounds { ptr, i64, i64 }, ptr %t298, i64 1 + store { ptr, i64, i64 } { ptr @.str.4073, i64 4, i64 0 }, ptr %t300 + %t301 = getelementptr inbounds { ptr, i64, i64 }, ptr %t298, i64 2 + store { ptr, i64, i64 } { ptr @.str.4074, i64 4, i64 0 }, ptr %t301 + %t302 = getelementptr inbounds { ptr, i64, i64 }, ptr %t298, i64 3 + store { ptr, i64, i64 } { ptr @.str.4075, i64 4, i64 0 }, ptr %t302 + %t303 = getelementptr inbounds { ptr, i64, i64 }, ptr %t298, i64 4 + store { ptr, i64, i64 } { ptr @.str.4076, i64 4, i64 0 }, ptr %t303 + %t304 = insertvalue { ptr, i64, i64 } undef, ptr %t298, 0 + %t305 = insertvalue { ptr, i64, i64 } %t304, i64 5, 1 + %t306 = insertvalue { ptr, i64, i64 } %t305, i64 5, 2 + store { ptr, i64, i64 } %t306, ptr %a307 + %t308 = getelementptr inbounds { ptr, i64, i64 }, ptr %a296, i32 0, i32 1 + %t309 = load { ptr, i64, i64 }, ptr %a2 + store i64 -1, ptr %a310 + %t311 = load i64, ptr %t308 + %t312 = load ptr, ptr %a296 + store i64 0, ptr %a313 + br label %find.cond6295 +find.cond6295: + %t314 = load i64, ptr %a313 + %t315 = icmp slt i64 %t314, %t311 + br i1 %t315, label %find.body6296, label %find.end6299 +find.body6296: + %t316 = getelementptr inbounds { ptr, i64, i64 }, ptr %t312, i64 %t314 + %t317 = load { ptr, i64, i64 }, ptr %t316 + store { ptr, i64, i64 } %t317, ptr %a318 + store { ptr, i64, i64 } %t309, ptr %a319 + %t320 = call i32 @finch_str_eq(ptr %a318, ptr %a319) + %t321 = icmp ne i32 %t320, 0 + br i1 %t321, label %find.hit6297, label %find.next6298 +find.hit6297: + store i64 %t314, ptr %a310 + br label %find.end6299 +find.next6298: + %t322 = add i64 %t314, 1 + store i64 %t322, ptr %a313 + br label %find.cond6295 +find.end6299: + %t323 = load i64, ptr %a310 + store i64 %t323, ptr %a324 + %t325 = load i64, ptr %a324 + %t326 = icmp slt i64 %t325, 0 + br i1 %t326, label %then6300, label %endif6302 +then6300: + %t327 = load ptr, ptr %a1 + %t328 = load { ptr, i64, i64 }, ptr %a2 + %t329 = load %S.gen.Val, ptr %a6 + %t330 = load %S.gen.Val, ptr %a10 + %t331 = load %S.ast.Node, ptr %a11 + call void @finch.gen.badOperands(ptr %t327, { ptr, i64, i64 } %t328, %S.gen.Val %t329, %S.gen.Val %t330, %S.ast.Node %t331) + br label %endif6302 +endif6302: + %t332 = load ptr, ptr %a1 + %t333 = load i64, ptr %a324 + %t334 = load { ptr, i64, i64 }, ptr %a307 + %t335 = extractvalue { ptr, i64, i64 } %t334, 1 + %t336 = icmp uge i64 %t333, %t335 + br i1 %t336, label %range6303, label %inrange6304 +range6303: + call void @finch_panic_index(ptr @.str.4077, i64 3411, i64 %t333, i64 %t335) unreachable -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.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 - %t320 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t321 = load %S.ast.Type, ptr %t320 - %t322 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t319, %S.ast.Type %t321) - store { ptr, i64, i64 } %t318, 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.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 - %t332 = load { ptr, i64, i64 }, ptr %t331 - store { ptr, i64, i64 } %t330, ptr %a334 - store { ptr, i64, i64 } %t332, 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 %a338 - 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 - %t342 = load { ptr, i64, i64 }, ptr %t341 - store { ptr, i64, i64 } %t340, 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 - %t347 = call { ptr, i64, i64 } @finch.gen.op(ptr %t307, { ptr, i64, i64 } %t346) - %t348 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t347, 0 - %t349 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t350 = load %S.ast.Type, ptr %t349 - store %S.ast.Type %t350, ptr %a351 - call void @finch.copy.S_ast_Type(ptr %a352, ptr %a351) - %t353 = load %S.ast.Type, ptr %a352 - %t354 = insertvalue %S.gen.Val %t348, %S.ast.Type %t353, 1 - ret %S.gen.Val %t354 -endif5927: - %t355 = load ptr, ptr %a1 - %t356 = load { ptr, i64, i64 }, ptr %a2 - %t357 = load %S.gen.Val, ptr %a6 - %t358 = load %S.gen.Val, ptr %a10 - %t359 = load %S.ast.Node, ptr %a11 - call void @finch.gen.badOperands(ptr %t355, { ptr, i64, i64 } %t356, %S.gen.Val %t357, %S.gen.Val %t358, %S.ast.Node %t359) - %t360 = load %S.gen.Val, ptr %a6 - store %S.gen.Val %t360, ptr %a361 - call void @finch.copy.S_gen_Val(ptr %a362, ptr %a361) - %t363 = load %S.gen.Val, ptr %a362 - ret %S.gen.Val %t363 +inrange6304: + %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 } %t339, ptr %a341 + store { ptr, i64, i64 } { ptr @.str.4078, i64 1, 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, ptr %a1 + %t345 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 + %t346 = load %S.ast.Type, ptr %t345 + %t347 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t344, %S.ast.Type %t346) + store { ptr, i64, i64 } %t343, ptr %a349 + store { ptr, i64, i64 } %t347, ptr %a350 + call void @finch_str_concat(ptr %a348, ptr %a349, ptr %a350) + store { ptr, i64, i64 } %t343, ptr %a351 + call void @finch_str_drop(ptr %a351) + store { ptr, i64, i64 } %t347, ptr %a352 + call void @finch_str_drop(ptr %a352) + %t353 = load { ptr, i64, i64 }, ptr %a348 + store { ptr, i64, i64 } %t353, ptr %a355 + store { ptr, i64, i64 } { ptr @.str.4079, i64 1, i64 0 }, ptr %a356 + call void @finch_str_concat(ptr %a354, ptr %a355, ptr %a356) + store { ptr, i64, i64 } %t353, ptr %a357 + call void @finch_str_drop(ptr %a357) + %t358 = load { ptr, i64, i64 }, ptr %a354 + %t359 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 0 + %t360 = load { ptr, i64, i64 }, ptr %t359 + store { ptr, i64, i64 } %t358, ptr %a362 + store { ptr, i64, i64 } %t360, ptr %a363 + call void @finch_str_concat(ptr %a361, ptr %a362, ptr %a363) + store { ptr, i64, i64 } %t358, ptr %a364 + call void @finch_str_drop(ptr %a364) + %t365 = load { ptr, i64, i64 }, ptr %a361 + store { ptr, i64, i64 } %t365, ptr %a367 + store { ptr, i64, i64 } { ptr @.str.4080, i64 2, i64 0 }, ptr %a368 + call void @finch_str_concat(ptr %a366, ptr %a367, ptr %a368) + store { ptr, i64, i64 } %t365, ptr %a369 + call void @finch_str_drop(ptr %a369) + %t370 = load { ptr, i64, i64 }, ptr %a366 + %t371 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 + %t372 = load { ptr, i64, i64 }, ptr %t371 + store { ptr, i64, i64 } %t370, ptr %a374 + store { ptr, i64, i64 } %t372, ptr %a375 + call void @finch_str_concat(ptr %a373, ptr %a374, ptr %a375) + store { ptr, i64, i64 } %t370, ptr %a376 + call void @finch_str_drop(ptr %a376) + %t377 = load { ptr, i64, i64 }, ptr %a373 + %t378 = call { ptr, i64, i64 } @finch.gen.op(ptr %t332, { ptr, i64, i64 } %t377) + store { ptr, i64, i64 } %t377, ptr %a379 + call void @finch_str_drop(ptr %a379) + %t380 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t378, 0 + %t381 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 + %t382 = load %S.ast.Type, ptr %t381 + store %S.ast.Type %t382, ptr %a383 + call void @finch.copy.S_ast_Type(ptr %a384, ptr %a383) + %t385 = load %S.ast.Type, ptr %a384 + %t386 = insertvalue %S.gen.Val %t380, %S.ast.Type %t385, 1 + call void @finch.drop.arr_str(ptr %a307) + call void @finch.drop.arr_str(ptr %a296) + call void @finch.drop.S_gen_Val(ptr %a10) + call void @finch.drop.S_gen_Val(ptr %a6) + ret %S.gen.Val %t386 +endif6294: + %t387 = load ptr, ptr %a1 + %t388 = load { ptr, i64, i64 }, ptr %a2 + %t389 = load %S.gen.Val, ptr %a6 + %t390 = load %S.gen.Val, ptr %a10 + %t391 = load %S.ast.Node, ptr %a11 + call void @finch.gen.badOperands(ptr %t387, { ptr, i64, i64 } %t388, %S.gen.Val %t389, %S.gen.Val %t390, %S.ast.Node %t391) + %t392 = load %S.gen.Val, ptr %a6 + call void @finch.drop.S_gen_Val(ptr %a10) + ret %S.gen.Val %t392 } define internal %S.gen.Val @finch.gen.compare(ptr %p0, { ptr, i64, i64 } %p1, %S.gen.Val %p2, %S.gen.Val %p3, %S.ast.Node %p4) { @@ -53370,155 +63085,212 @@ entry: %a79 = alloca { ptr, i64, i64 }, align 16 %a81 = alloca { ptr, i64, i64 }, align 16 %a82 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 + %a86 = alloca { ptr, i64, i64 }, align 16 %a89 = 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 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = 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 + %a100 = 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 %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = 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 + %a115 = alloca { ptr, i64, i64 }, align 16 %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 %a125 = alloca { ptr, i64, i64 }, align 16 %a126 = 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 - %a146 = alloca { ptr, i64, i64 }, align 16 + %a132 = alloca { ptr, i64, i64 }, align 16 + %a133 = alloca { ptr, i64, i64 }, align 16 + %a142 = alloca { ptr, i64, i64 }, align 16 + %a143 = alloca { ptr, i64, i64 }, align 16 + %a144 = alloca { ptr, i64, i64 }, align 16 + %a145 = alloca { ptr, i64, i64 }, align 16 %a147 = alloca { ptr, i64, i64 }, align 16 %a148 = 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 - %a152 = alloca { ptr, i64, i64 }, align 16 %a155 = 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 %a159 = 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 %a164 = 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 %a168 = alloca { ptr, i64, i64 }, align 16 %a169 = alloca { ptr, i64, i64 }, align 16 - %a170 = 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 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = 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 %a179 = alloca { ptr, i64, i64 }, align 16 + %a180 = 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 %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 + %a192 = alloca { ptr, i64, i64 }, align 16 %a194 = 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 %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 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 + %a207 = alloca { ptr, i64, i64 }, align 16 + %a208 = alloca { ptr, i64, i64 }, align 16 %a217 = alloca { ptr, i64, i64 }, align 16 %a218 = alloca { ptr, i64, i64 }, align 16 %a219 = alloca { ptr, i64, i64 }, align 16 + %a220 = alloca { ptr, i64, i64 }, align 16 %a222 = alloca { ptr, i64, i64 }, align 16 %a223 = alloca { ptr, i64, i64 }, align 16 %a224 = 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 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 + %a225 = 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 + %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 + %a239 = alloca { ptr, i64, i64 }, align 16 + %a242 = alloca { ptr, i64, i64 }, align 16 + %a243 = 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 + %a250 = alloca { ptr, i64, i64 }, align 16 + %a252 = 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 + %a258 = 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 %a263 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca i64, align 16 - %a282 = alloca i64, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = 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 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a305 = 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 + %a276 = alloca { ptr, i64, i64 }, align 16 + %a277 = alloca { ptr, i64, i64 }, align 16 + %a293 = alloca { ptr, i64, i64 }, align 16 + %a294 = alloca { ptr, i64, i64 }, align 16 + %a296 = 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 - %a315 = 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 - %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 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 + %a327 = alloca i64, align 16 + %a330 = alloca i64, align 16 + %a335 = alloca { ptr, i64, i64 }, align 16 + %a336 = alloca { ptr, i64, i64 }, align 16 + %a347 = alloca { ptr, i64, i64 }, align 16 %a348 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 + %a349 = alloca { ptr, i64, i64 }, align 16 %a351 = 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 + %a352 = alloca { ptr, i64, i64 }, align 16 + %a353 = alloca { ptr, i64, i64 }, align 16 + %a354 = 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 %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 + %a369 = alloca { ptr, i64, i64 }, align 16 + %a373 = alloca { ptr, i64, i64 }, align 16 + %a374 = 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 %a378 = 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 %a385 = alloca { ptr, i64, i64 }, align 16 %a386 = alloca { ptr, i64, i64 }, align 16 - %a402 = alloca { ptr, i64, i64 }, align 16 - %a403 = alloca { ptr, i64, i64 }, align 16 - %a408 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a424 = 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 + %a396 = alloca { ptr, i64, i64 }, align 16 + %a397 = 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 + %a411 = 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 + %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 %a425 = alloca { ptr, i64, i64 }, align 16 %a426 = alloca { ptr, i64, i64 }, align 16 + %a427 = 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 - %a436 = alloca { ptr, i64, i64 }, align 16 + %a431 = alloca { ptr, i64, i64 }, align 16 + %a432 = alloca { ptr, i64, i64 }, align 16 + %a433 = 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 %a440 = alloca { ptr, i64, i64 }, align 16 - %a441 = alloca { ptr, i64, i64 }, align 16 - %a442 = alloca { ptr, i64, i64 }, align 16 - %a446 = alloca { ptr, i64, i64 }, align 16 - %a447 = alloca { ptr, i64, i64 }, align 16 + %a443 = 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 - %a456 = alloca { ptr, i64, i64 }, align 16 - %a457 = alloca { ptr, i64, i64 }, align 16 - %a458 = alloca { ptr, i64, i64 }, align 16 + %a449 = 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 + %a487 = alloca { ptr, i64, i64 }, align 16 + %a488 = alloca { ptr, i64, i64 }, align 16 + %a489 = alloca { ptr, i64, i64 }, align 16 + %a490 = alloca { ptr, i64, i64 }, align 16 + %a492 = 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 + %a501 = alloca { ptr, i64, i64 }, align 16 + %a502 = alloca { ptr, i64, i64 }, align 16 + %a503 = alloca { ptr, i64, i64 }, align 16 + %a504 = alloca { ptr, i64, i64 }, align 16 + %a505 = alloca { ptr, i64, i64 }, align 16 + %a507 = alloca { ptr, i64, i64 }, align 16 + %a508 = 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 + %a516 = alloca { ptr, i64, i64 }, align 16 + %a517 = alloca { ptr, i64, i64 }, align 16 + %a519 = alloca { ptr, i64, i64 }, align 16 + %a520 = alloca { ptr, i64, i64 }, align 16 + %a521 = alloca { ptr, i64, i64 }, align 16 + %a522 = alloca { ptr, i64, i64 }, align 16 + %a526 = 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 + %a532 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store { ptr, i64, i64 } %p1, ptr %a2 store %S.gen.Val %p2, ptr %a3 @@ -53532,623 +63304,774 @@ 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.3915, i64 2, i64 0 }, ptr %a14 + store { ptr, i64, i64 } { ptr @.str.4081, 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.from5938 -logic.from5938: - br i1 %t16, label %logic.end5940, label %logic.rhs5939 -logic.rhs5939: + br label %logic.from6305 +logic.from6305: + br i1 %t16, label %logic.end6307, label %logic.rhs6306 +logic.rhs6306: %t17 = load { ptr, i64, i64 }, ptr %a2 store { ptr, i64, i64 } %t17, ptr %a18 - store { ptr, i64, i64 } { ptr @.str.3916, i64 2, i64 0 }, ptr %a19 + store { ptr, i64, i64 } { ptr @.str.4082, 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.rend5941 -logic.rend5941: - br label %logic.end5940 -logic.end5940: - %t22 = phi i1 [ true, %logic.from5938 ], [ %t21, %logic.rend5941 ] + br label %logic.rend6308 +logic.rend6308: + br label %logic.end6307 +logic.end6307: + %t22 = phi i1 [ true, %logic.from6305 ], [ %t21, %logic.rend6308 ] 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.3917, i64 3, i64 0 }, ptr %a28 + store { ptr, i64, i64 } { ptr @.str.4083, 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.from5942 -logic.from5942: - br i1 %t30, label %logic.end5944, label %logic.rhs5943 -logic.rhs5943: + br label %logic.from6309 +logic.from6309: + br i1 %t30, label %logic.end6311, label %logic.rhs6310 +logic.rhs6310: %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.3918, i64 3, i64 0 }, ptr %a35 + store { ptr, i64, i64 } { ptr @.str.4084, 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.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: + br label %logic.rend6312 +logic.rend6312: + br label %logic.end6311 +logic.end6311: + %t38 = phi i1 [ true, %logic.from6309 ], [ %t37, %logic.rend6312 ] + br label %logic.from6313 +logic.from6313: + br i1 %t38, label %logic.end6315, label %logic.rhs6314 +logic.rhs6314: %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.3919, i64 4, i64 0 }, ptr %a43 + store { ptr, i64, i64 } { ptr @.str.4085, 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.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: + br label %logic.rend6316 +logic.rend6316: + br label %logic.end6315 +logic.end6315: + %t46 = phi i1 [ true, %logic.from6313 ], [ %t45, %logic.rend6316 ] + br label %logic.from6317 +logic.from6317: + br i1 %t46, label %logic.end6319, label %logic.rhs6318 +logic.rhs6318: %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.3920, i64 4, i64 0 }, ptr %a51 + store { ptr, i64, i64 } { ptr @.str.4086, 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.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: + br label %logic.rend6320 +logic.rend6320: + br label %logic.end6319 +logic.end6319: + %t54 = phi i1 [ true, %logic.from6317 ], [ %t53, %logic.rend6320 ] + br i1 %t54, label %then6321, label %endif6323 +then6321: %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.3921, i64 3, i64 0 }, ptr %a59 + store { ptr, i64, i64 } { ptr @.str.4087, 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.from5957 -logic.from5957: - br i1 %t61, label %logic.end5959, label %logic.rhs5958 -logic.rhs5958: + br label %logic.from6324 +logic.from6324: + br i1 %t61, label %logic.end6326, label %logic.rhs6325 +logic.rhs6325: %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.3922, i64 3, i64 0 }, ptr %a66 + store { ptr, i64, i64 } { ptr @.str.4088, 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.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: + br label %logic.rend6327 +logic.rend6327: + br label %logic.end6326 +logic.end6326: + %t69 = phi i1 [ true, %logic.from6324 ], [ %t68, %logic.rend6327 ] + br i1 %t69, label %then6328, label %endif6330 +then6328: %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.3923, i64 59, i64 0 }) - br label %endif5963 -endif5963: + call void @finch.gen.fail(ptr %t70, %S.ast.Node %t71, { ptr, i64, i64 } { ptr @.str.4089, i64 59, i64 0 }) + br label %endif6330 +endif6330: %t72 = load i1, ptr %a23 %t73 = xor i1 %t72, true - br i1 %t73, label %then5964, label %endif5966 -then5964: + br i1 %t73, label %then6331, label %endif6333 +then6331: %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 %endif5966 -endif5966: - store { ptr, i64, i64 } { ptr @.str.3924, i64 2, i64 0 }, ptr %a79 + br label %endif6333 +endif6333: + store { ptr, i64, i64 } { ptr @.str.4090, 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.3925, i64 2, i64 0 }, ptr %a82 + store { ptr, i64, i64 } { ptr @.str.4091, 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 %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.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.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 - %t96 = load { ptr, i64, i64 }, ptr %t95 - store { ptr, i64, i64 } %t94, 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.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 - %t106 = load { ptr, i64, i64 }, ptr %t105 + br i1 %t84, label %then6334, label %endif6336 +then6334: + %t85 = load { ptr, i64, i64 }, ptr %a79 + store { ptr, i64, i64 } { ptr @.str.4092, i64 2, i64 0 }, ptr %a79 + store { ptr, i64, i64 } %t85, ptr %a86 + call void @finch_str_drop(ptr %a86) + br label %endif6336 +endif6336: + %t87 = load ptr, ptr %a1 + %t88 = load { ptr, i64, i64 }, ptr %a79 + store { ptr, i64, i64 } { ptr @.str.4093, i64 5, i64 0 }, ptr %a90 + store { ptr, i64, i64 } %t88, ptr %a91 + call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) + %t92 = load { ptr, i64, i64 }, ptr %a89 + store { ptr, i64, i64 } %t92, ptr %a94 + store { ptr, i64, i64 } { ptr @.str.4094, i64 5, i64 0 }, ptr %a95 + call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) + store { ptr, i64, i64 } %t92, ptr %a96 + call void @finch_str_drop(ptr %a96) + %t97 = load { ptr, i64, i64 }, ptr %a93 + %t98 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 0 + %t99 = load { ptr, i64, i64 }, ptr %t98 + store { ptr, i64, i64 } %t97, ptr %a101 + store { ptr, i64, i64 } %t99, ptr %a102 + call void @finch_str_concat(ptr %a100, ptr %a101, ptr %a102) + store { ptr, i64, i64 } %t97, ptr %a103 + call void @finch_str_drop(ptr %a103) + %t104 = load { ptr, i64, i64 }, ptr %a100 + store { ptr, i64, i64 } %t104, ptr %a106 + store { ptr, i64, i64 } { ptr @.str.4095, i64 2, i64 0 }, ptr %a107 + call void @finch_str_concat(ptr %a105, ptr %a106, ptr %a107) store { ptr, i64, i64 } %t104, 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 - %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.3930, i64 4, i64 0 }) - %t114 = insertvalue %S.gen.Val %t112, %S.ast.Type %t113, 1 - ret %S.gen.Val %t114 -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.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.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 + call void @finch_str_drop(ptr %a108) + %t109 = load { ptr, i64, i64 }, ptr %a105 + %t110 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 + %t111 = load { ptr, i64, i64 }, ptr %t110 + store { ptr, i64, i64 } %t109, ptr %a113 + store { ptr, i64, i64 } %t111, ptr %a114 + call void @finch_str_concat(ptr %a112, ptr %a113, ptr %a114) + store { ptr, i64, i64 } %t109, ptr %a115 + call void @finch_str_drop(ptr %a115) + %t116 = load { ptr, i64, i64 }, ptr %a112 + %t117 = call { ptr, i64, i64 } @finch.gen.op(ptr %t87, { ptr, i64, i64 } %t116) + store { ptr, i64, i64 } %t116, ptr %a118 + call void @finch_str_drop(ptr %a118) + %t119 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t117, 0 + %t120 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4096, i64 4, i64 0 }) + %t121 = insertvalue %S.gen.Val %t119, %S.ast.Type %t120, 1 + call void @finch_str_drop(ptr %a79) + call void @finch.drop.S_gen_Val(ptr %a10) + call void @finch.drop.S_gen_Val(ptr %a6) + ret %S.gen.Val %t121 +endif6323: + %t122 = getelementptr inbounds %S.gen.Val, ptr %a6, 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.3932, i64 3, i64 0 }, ptr %a126 + store { ptr, i64, i64 } { ptr @.str.4097, 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.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 %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.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.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 - %t144 = load %S.gen.Val, ptr %a10 - %t145 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t143, %S.gen.Val %t144) - 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 - store { ptr, i64, i64 } %t149, ptr %a151 - 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.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.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 %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.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.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 - store { ptr, i64, i64 } %t171, 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 - store { ptr, i64, i64 } %t176, ptr %a178 - 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.3942, i64 4, i64 0 }) - %t184 = insertvalue %S.gen.Val %t182, %S.ast.Type %t183, 1 - ret %S.gen.Val %t184 -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.3943, i64 28, i64 0 }, ptr %a190 + br label %logic.from6337 +logic.from6337: + br i1 %t128, label %logic.rhs6338, label %logic.end6339 +logic.rhs6338: + %t129 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 1 + %t130 = getelementptr inbounds %S.ast.Type, ptr %t129, i32 0, i32 0 + %t131 = load { ptr, i64, i64 }, ptr %t130 + store { ptr, i64, i64 } %t131, ptr %a132 + store { ptr, i64, i64 } { ptr @.str.4098, i64 3, i64 0 }, ptr %a133 + %t134 = call i32 @finch_str_eq(ptr %a132, ptr %a133) + %t135 = icmp ne i32 %t134, 0 + br label %logic.rend6340 +logic.rend6340: + br label %logic.end6339 +logic.end6339: + %t136 = phi i1 [ false, %logic.from6337 ], [ %t135, %logic.rend6340 ] + br i1 %t136, label %then6341, label %endif6343 +then6341: + %t137 = load i1, ptr %a23 + br i1 %t137, label %then6344, label %endif6346 +then6344: + %t138 = load ptr, ptr %a1 + %t139 = load ptr, ptr %a1 + %t140 = load %S.gen.Val, ptr %a6 + %t141 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t139, %S.gen.Val %t140) + store { ptr, i64, i64 } { ptr @.str.4099, i64 27, i64 0 }, ptr %a143 + store { ptr, i64, i64 } %t141, ptr %a144 + call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144) + store { ptr, i64, i64 } %t141, ptr %a145 + call void @finch_str_drop(ptr %a145) + %t146 = load { ptr, i64, i64 }, ptr %a142 + store { ptr, i64, i64 } %t146, ptr %a148 + store { ptr, i64, i64 } { ptr @.str.4100, i64 6, i64 0 }, ptr %a149 + call void @finch_str_concat(ptr %a147, ptr %a148, ptr %a149) + store { ptr, i64, i64 } %t146, ptr %a150 + call void @finch_str_drop(ptr %a150) + %t151 = load { ptr, i64, i64 }, ptr %a147 + %t152 = load ptr, ptr %a1 + %t153 = load %S.gen.Val, ptr %a10 + %t154 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t152, %S.gen.Val %t153) + store { ptr, i64, i64 } %t151, ptr %a156 + store { ptr, i64, i64 } %t154, ptr %a157 + call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) + store { ptr, i64, i64 } %t151, ptr %a158 + call void @finch_str_drop(ptr %a158) + store { ptr, i64, i64 } %t154, ptr %a159 + call void @finch_str_drop(ptr %a159) + %t160 = load { ptr, i64, i64 }, ptr %a155 + store { ptr, i64, i64 } %t160, ptr %a162 + store { ptr, i64, i64 } { ptr @.str.4101, i64 1, i64 0 }, ptr %a163 + call void @finch_str_concat(ptr %a161, ptr %a162, ptr %a163) + store { ptr, i64, i64 } %t160, ptr %a164 + call void @finch_str_drop(ptr %a164) + %t165 = load { ptr, i64, i64 }, ptr %a161 + %t166 = call { ptr, i64, i64 } @finch.gen.op(ptr %t138, { ptr, i64, i64 } %t165) + store { ptr, i64, i64 } %t165, ptr %a167 + call void @finch_str_drop(ptr %a167) + store { ptr, i64, i64 } %t166, ptr %a168 + store { ptr, i64, i64 } { ptr @.str.4102, i64 2, i64 0 }, ptr %a169 + %t170 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t170, ptr %a171 + store { ptr, i64, i64 } { ptr @.str.4103, i64 2, i64 0 }, ptr %a172 + %t173 = call i32 @finch_str_eq(ptr %a171, ptr %a172) + %t174 = icmp ne i32 %t173, 0 + br i1 %t174, label %then6347, label %endif6349 +then6347: + %t175 = load { ptr, i64, i64 }, ptr %a169 + store { ptr, i64, i64 } { ptr @.str.4104, i64 2, i64 0 }, ptr %a169 + store { ptr, i64, i64 } %t175, ptr %a176 + call void @finch_str_drop(ptr %a176) + br label %endif6349 +endif6349: + %t177 = load ptr, ptr %a1 + %t178 = load { ptr, i64, i64 }, ptr %a169 + store { ptr, i64, i64 } { ptr @.str.4105, i64 5, 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 + store { ptr, i64, i64 } %t182, ptr %a184 + store { ptr, i64, i64 } { ptr @.str.4106, i64 5, i64 0 }, ptr %a185 + call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) + store { ptr, i64, i64 } %t182, ptr %a186 + call void @finch_str_drop(ptr %a186) + %t187 = load { ptr, i64, i64 }, ptr %a183 + %t188 = load { ptr, i64, i64 }, ptr %a168 + store { ptr, i64, i64 } %t187, 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.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 - %t198 = load %S.gen.Val, ptr %a10 - %t199 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t197, %S.gen.Val %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.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) - store { ptr, i64, i64 } %t208, ptr %a209 - %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.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.3947, i64 5, i64 0 }, ptr %a219 + store { ptr, i64, i64 } %t187, ptr %a192 + call void @finch_str_drop(ptr %a192) + %t193 = load { ptr, i64, i64 }, ptr %a189 + store { ptr, i64, i64 } %t193, ptr %a195 + store { ptr, i64, i64 } { ptr @.str.4107, i64 3, i64 0 }, ptr %a196 + call void @finch_str_concat(ptr %a194, ptr %a195, ptr %a196) + store { ptr, i64, i64 } %t193, ptr %a197 + call void @finch_str_drop(ptr %a197) + %t198 = load { ptr, i64, i64 }, ptr %a194 + %t199 = call { ptr, i64, i64 } @finch.gen.op(ptr %t177, { ptr, i64, i64 } %t198) + store { ptr, i64, i64 } %t198, ptr %a200 + call void @finch_str_drop(ptr %a200) + store { ptr, i64, i64 } %t199, ptr %a201 + %t202 = load ptr, ptr %a1 + %t203 = load %S.gen.Val, ptr %a6 + call void @finch.gen.release(ptr %t202, %S.gen.Val %t203) + %t204 = load ptr, ptr %a1 + %t205 = load %S.gen.Val, ptr %a10 + call void @finch.gen.release(ptr %t204, %S.gen.Val %t205) + %t206 = load { ptr, i64, i64 }, ptr %a201 + store { ptr, i64, i64 } %t206, ptr %a207 + call void @finch_str_copy(ptr %a208, ptr %a207) + %t209 = load { ptr, i64, i64 }, ptr %a208 + %t210 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t209, 0 + %t211 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4108, i64 4, i64 0 }) + %t212 = insertvalue %S.gen.Val %t210, %S.ast.Type %t211, 1 + call void @finch_str_drop(ptr %a201) + call void @finch_str_drop(ptr %a169) + call void @finch_str_drop(ptr %a168) + call void @finch.drop.S_gen_Val(ptr %a10) + call void @finch.drop.S_gen_Val(ptr %a6) + ret %S.gen.Val %t212 +endif6346: + %t213 = load ptr, ptr %a1 + %t214 = load ptr, ptr %a1 + %t215 = load %S.gen.Val, ptr %a6 + %t216 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t214, %S.gen.Val %t215) + store { ptr, i64, i64 } { ptr @.str.4109, i64 28, 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 - %t221 = load { ptr, i64, i64 }, ptr %a209 - store { ptr, i64, i64 } %t220, ptr %a223 - store { ptr, i64, i64 } %t221, ptr %a224 + store { ptr, i64, i64 } %t216, ptr %a220 + call void @finch_str_drop(ptr %a220) + %t221 = load { ptr, i64, i64 }, ptr %a217 + store { ptr, i64, i64 } %t221, ptr %a223 + store { ptr, i64, i64 } { ptr @.str.4110, i64 6, i64 0 }, ptr %a224 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.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.3949, i64 4, i64 0 }) - %t233 = insertvalue %S.gen.Val %t231, %S.ast.Type %t232, 1 - ret %S.gen.Val %t233 -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 %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 %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 - store { ptr, i64, i64 } %t244, ptr %a245 - call void @finch_str_copy(ptr %a246, ptr %a245) - %t247 = load { ptr, i64, i64 }, ptr %a246 - store { ptr, i64, i64 } %t247, ptr %a248 - %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 %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.3950, i64 2, i64 0 }, ptr %t254 - %t255 = getelementptr inbounds { ptr, i64, i64 }, ptr %t253, i64 1 - 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.3952, i64 1, i64 0 }, ptr %t256 - %t257 = getelementptr inbounds { ptr, i64, i64 }, ptr %t253, i64 3 - 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.3954, i64 1, i64 0 }, ptr %t258 - %t259 = getelementptr inbounds { ptr, i64, i64 }, ptr %t253, i64 5 - 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 - store { ptr, i64, i64 } %t262, ptr %a263 - %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.3956, i64 3, i64 0 }, ptr %t266 - %t267 = getelementptr inbounds { ptr, i64, i64 }, ptr %t265, i64 1 - 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.3958, i64 3, i64 0 }, ptr %t268 - %t269 = getelementptr inbounds { ptr, i64, i64 }, ptr %t265, i64 3 - 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.3960, i64 3, i64 0 }, ptr %t270 - %t271 = getelementptr inbounds { ptr, i64, i64 }, ptr %t265, i64 5 - 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 - store { ptr, i64, i64 } %t274, ptr %a275 - %t276 = load ptr, ptr %a1 - %t277 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 - %t278 = load { ptr, i64, i64 }, ptr %a2 - store i64 -1, ptr %a279 - %t280 = load i64, ptr %t277 - %t281 = load ptr, ptr %a263 - store i64 0, ptr %a282 - br label %find.cond5989 -find.cond5989: - %t283 = load i64, ptr %a282 - %t284 = icmp slt i64 %t283, %t280 - 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.hit5991, label %find.next5992 -find.hit5991: - store i64 %t283, ptr %a279 - br label %find.end5993 -find.next5992: - %t291 = add i64 %t283, 1 - store i64 %t291, ptr %a282 - 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 %range5994, label %inrange5995 -range5994: - call void @finch_panic_index(ptr @.str.3963, i64 3194, i64 %t292, i64 %t294) + store { ptr, i64, i64 } %t221, ptr %a225 + call void @finch_str_drop(ptr %a225) + %t226 = load { ptr, i64, i64 }, ptr %a222 + %t227 = load ptr, ptr %a1 + %t228 = load %S.gen.Val, ptr %a10 + %t229 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t227, %S.gen.Val %t228) + store { ptr, i64, i64 } %t226, ptr %a231 + store { ptr, i64, i64 } %t229, ptr %a232 + call void @finch_str_concat(ptr %a230, ptr %a231, ptr %a232) + store { ptr, i64, i64 } %t226, ptr %a233 + call void @finch_str_drop(ptr %a233) + store { ptr, i64, i64 } %t229, ptr %a234 + call void @finch_str_drop(ptr %a234) + %t235 = load { ptr, i64, i64 }, ptr %a230 + store { ptr, i64, i64 } %t235, ptr %a237 + store { ptr, i64, i64 } { ptr @.str.4111, i64 1, i64 0 }, ptr %a238 + call void @finch_str_concat(ptr %a236, ptr %a237, ptr %a238) + store { ptr, i64, i64 } %t235, ptr %a239 + call void @finch_str_drop(ptr %a239) + %t240 = load { ptr, i64, i64 }, ptr %a236 + %t241 = call { ptr, i64, i64 } @finch.gen.op(ptr %t213, { ptr, i64, i64 } %t240) + store { ptr, i64, i64 } %t240, ptr %a242 + call void @finch_str_drop(ptr %a242) + store { ptr, i64, i64 } %t241, ptr %a243 + %t244 = load ptr, ptr %a1 + %t245 = load { ptr, i64, i64 }, ptr %a2 + %t246 = call { ptr, i64, i64 } @finch.gen.intPred({ ptr, i64, i64 } %t245, i1 true) + store { ptr, i64, i64 } { ptr @.str.4112, i64 5, i64 0 }, ptr %a248 + store { ptr, i64, i64 } %t246, ptr %a249 + call void @finch_str_concat(ptr %a247, ptr %a248, ptr %a249) + store { ptr, i64, i64 } %t246, ptr %a250 + call void @finch_str_drop(ptr %a250) + %t251 = load { ptr, i64, i64 }, ptr %a247 + store { ptr, i64, i64 } %t251, ptr %a253 + store { ptr, i64, i64 } { ptr @.str.4113, i64 5, i64 0 }, ptr %a254 + call void @finch_str_concat(ptr %a252, ptr %a253, ptr %a254) + store { ptr, i64, i64 } %t251, ptr %a255 + call void @finch_str_drop(ptr %a255) + %t256 = load { ptr, i64, i64 }, ptr %a252 + %t257 = load { ptr, i64, i64 }, ptr %a243 + store { ptr, i64, i64 } %t256, ptr %a259 + store { ptr, i64, i64 } %t257, ptr %a260 + call void @finch_str_concat(ptr %a258, ptr %a259, ptr %a260) + store { ptr, i64, i64 } %t256, ptr %a261 + call void @finch_str_drop(ptr %a261) + %t262 = load { ptr, i64, i64 }, ptr %a258 + store { ptr, i64, i64 } %t262, ptr %a264 + store { ptr, i64, i64 } { ptr @.str.4114, i64 3, i64 0 }, ptr %a265 + call void @finch_str_concat(ptr %a263, ptr %a264, ptr %a265) + store { ptr, i64, i64 } %t262, ptr %a266 + call void @finch_str_drop(ptr %a266) + %t267 = load { ptr, i64, i64 }, ptr %a263 + %t268 = call { ptr, i64, i64 } @finch.gen.op(ptr %t244, { ptr, i64, i64 } %t267) + store { ptr, i64, i64 } %t267, ptr %a269 + call void @finch_str_drop(ptr %a269) + store { ptr, i64, i64 } %t268, ptr %a270 + %t271 = load ptr, ptr %a1 + %t272 = load %S.gen.Val, ptr %a6 + call void @finch.gen.release(ptr %t271, %S.gen.Val %t272) + %t273 = load ptr, ptr %a1 + %t274 = load %S.gen.Val, ptr %a10 + call void @finch.gen.release(ptr %t273, %S.gen.Val %t274) + %t275 = load { ptr, i64, i64 }, ptr %a270 + store { ptr, i64, i64 } %t275, ptr %a276 + call void @finch_str_copy(ptr %a277, ptr %a276) + %t278 = load { ptr, i64, i64 }, ptr %a277 + %t279 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t278, 0 + %t280 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4115, i64 4, i64 0 }) + %t281 = insertvalue %S.gen.Val %t279, %S.ast.Type %t280, 1 + call void @finch_str_drop(ptr %a270) + call void @finch_str_drop(ptr %a243) + call void @finch.drop.S_gen_Val(ptr %a10) + call void @finch.drop.S_gen_Val(ptr %a6) + ret %S.gen.Val %t281 +endif6343: + %t282 = load ptr, ptr %a1 + %t283 = call i1 @finch.gen.unify(ptr %t282, ptr %a6, ptr %a10) + %t284 = xor i1 %t283, true + br i1 %t284, label %then6350, label %endif6352 +then6350: + %t285 = load ptr, ptr %a1 + %t286 = load { ptr, i64, i64 }, ptr %a2 + %t287 = load %S.gen.Val, ptr %a6 + %t288 = load %S.gen.Val, ptr %a10 + %t289 = load %S.ast.Node, ptr %a11 + call void @finch.gen.badOperands(ptr %t285, { ptr, i64, i64 } %t286, %S.gen.Val %t287, %S.gen.Val %t288, %S.ast.Node %t289) + br label %endif6352 +endif6352: + %t290 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 + %t291 = getelementptr inbounds %S.ast.Type, ptr %t290, i32 0, i32 0 + %t292 = load { ptr, i64, i64 }, ptr %t291 + store { ptr, i64, i64 } %t292, ptr %a293 + call void @finch_str_copy(ptr %a294, ptr %a293) + %t295 = load { ptr, i64, i64 }, ptr %a294 + store { ptr, i64, i64 } %t295, ptr %a296 + %t297 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 + %t298 = load %S.ast.Type, ptr %t297 + %t299 = call i1 @finch.gen.isFloat(%S.ast.Type %t298) + br i1 %t299, label %then6353, label %endif6355 +then6353: + %t300 = mul i64 6, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) + %t301 = call ptr @finch_alloc(i64 %t300) + %t302 = getelementptr inbounds { ptr, i64, i64 }, ptr %t301, i64 0 + store { ptr, i64, i64 } { ptr @.str.4116, i64 2, i64 0 }, ptr %t302 + %t303 = getelementptr inbounds { ptr, i64, i64 }, ptr %t301, i64 1 + store { ptr, i64, i64 } { ptr @.str.4117, i64 2, i64 0 }, ptr %t303 + %t304 = getelementptr inbounds { ptr, i64, i64 }, ptr %t301, i64 2 + store { ptr, i64, i64 } { ptr @.str.4118, i64 1, i64 0 }, ptr %t304 + %t305 = getelementptr inbounds { ptr, i64, i64 }, ptr %t301, i64 3 + store { ptr, i64, i64 } { ptr @.str.4119, i64 2, i64 0 }, ptr %t305 + %t306 = getelementptr inbounds { ptr, i64, i64 }, ptr %t301, i64 4 + store { ptr, i64, i64 } { ptr @.str.4120, i64 1, i64 0 }, ptr %t306 + %t307 = getelementptr inbounds { ptr, i64, i64 }, ptr %t301, i64 5 + store { ptr, i64, i64 } { ptr @.str.4121, i64 2, i64 0 }, ptr %t307 + %t308 = insertvalue { ptr, i64, i64 } undef, ptr %t301, 0 + %t309 = insertvalue { ptr, i64, i64 } %t308, i64 6, 1 + %t310 = insertvalue { ptr, i64, i64 } %t309, i64 6, 2 + store { ptr, i64, i64 } %t310, ptr %a311 + %t312 = mul i64 6, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) + %t313 = call ptr @finch_alloc(i64 %t312) + %t314 = getelementptr inbounds { ptr, i64, i64 }, ptr %t313, i64 0 + store { ptr, i64, i64 } { ptr @.str.4122, i64 3, i64 0 }, ptr %t314 + %t315 = getelementptr inbounds { ptr, i64, i64 }, ptr %t313, i64 1 + store { ptr, i64, i64 } { ptr @.str.4123, i64 3, i64 0 }, ptr %t315 + %t316 = getelementptr inbounds { ptr, i64, i64 }, ptr %t313, i64 2 + store { ptr, i64, i64 } { ptr @.str.4124, i64 3, i64 0 }, ptr %t316 + %t317 = getelementptr inbounds { ptr, i64, i64 }, ptr %t313, i64 3 + store { ptr, i64, i64 } { ptr @.str.4125, i64 3, i64 0 }, ptr %t317 + %t318 = getelementptr inbounds { ptr, i64, i64 }, ptr %t313, i64 4 + store { ptr, i64, i64 } { ptr @.str.4126, i64 3, i64 0 }, ptr %t318 + %t319 = getelementptr inbounds { ptr, i64, i64 }, ptr %t313, i64 5 + store { ptr, i64, i64 } { ptr @.str.4127, i64 3, i64 0 }, ptr %t319 + %t320 = insertvalue { ptr, i64, i64 } undef, ptr %t313, 0 + %t321 = insertvalue { ptr, i64, i64 } %t320, i64 6, 1 + %t322 = insertvalue { ptr, i64, i64 } %t321, i64 6, 2 + store { ptr, i64, i64 } %t322, ptr %a323 + %t324 = load ptr, ptr %a1 + %t325 = getelementptr inbounds { ptr, i64, i64 }, ptr %a311, i32 0, i32 1 + %t326 = load { ptr, i64, i64 }, ptr %a2 + store i64 -1, ptr %a327 + %t328 = load i64, ptr %t325 + %t329 = load ptr, ptr %a311 + store i64 0, ptr %a330 + br label %find.cond6356 +find.cond6356: + %t331 = load i64, ptr %a330 + %t332 = icmp slt i64 %t331, %t328 + br i1 %t332, label %find.body6357, label %find.end6360 +find.body6357: + %t333 = getelementptr inbounds { ptr, i64, i64 }, ptr %t329, i64 %t331 + %t334 = load { ptr, i64, i64 }, ptr %t333 + store { ptr, i64, i64 } %t334, ptr %a335 + store { ptr, i64, i64 } %t326, ptr %a336 + %t337 = call i32 @finch_str_eq(ptr %a335, ptr %a336) + %t338 = icmp ne i32 %t337, 0 + br i1 %t338, label %find.hit6358, label %find.next6359 +find.hit6358: + store i64 %t331, ptr %a327 + br label %find.end6360 +find.next6359: + %t339 = add i64 %t331, 1 + store i64 %t339, ptr %a330 + br label %find.cond6356 +find.end6360: + %t340 = load i64, ptr %a327 + %t341 = load { ptr, i64, i64 }, ptr %a323 + %t342 = extractvalue { ptr, i64, i64 } %t341, 1 + %t343 = icmp uge i64 %t340, %t342 + br i1 %t343, label %range6361, label %inrange6362 +range6361: + call void @finch_panic_index(ptr @.str.4129, i64 3457, i64 %t340, i64 %t342) unreachable -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.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.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 - %t308 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t309 = load %S.ast.Type, ptr %t308 - %t310 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t307, %S.ast.Type %t309) - store { ptr, i64, i64 } %t306, 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.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 - %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.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 - %t330 = load { ptr, i64, i64 }, ptr %t329 - store { ptr, i64, i64 } %t328, 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 = 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.3967, i64 4, i64 0 }) - %t338 = insertvalue %S.gen.Val %t336, %S.ast.Type %t337, 1 - ret %S.gen.Val %t338 -endif5988: - %t339 = load { ptr, i64, i64 }, ptr %a248 - store { ptr, i64, i64 } %t339, ptr %a340 - 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 %then5996, label %endif5998 -then5996: - %t344 = load i1, ptr %a23 - %t345 = xor i1 %t344, true - 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.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.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 %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.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.3974, i64 5, i64 0 }, ptr %a362 +inrange6362: + %t344 = extractvalue { ptr, i64, i64 } %t341, 0 + %t345 = getelementptr inbounds { ptr, i64, i64 }, ptr %t344, i64 %t340 + %t346 = load { ptr, i64, i64 }, ptr %t345 + store { ptr, i64, i64 } { ptr @.str.4128, i64 5, 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.4130, i64 1, i64 0 }, ptr %a353 + call void @finch_str_concat(ptr %a351, ptr %a352, ptr %a353) + store { ptr, i64, i64 } %t350, ptr %a354 + call void @finch_str_drop(ptr %a354) + %t355 = load { ptr, i64, i64 }, ptr %a351 + %t356 = load ptr, ptr %a1 + %t357 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 + %t358 = load %S.ast.Type, ptr %t357 + %t359 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t356, %S.ast.Type %t358) + store { ptr, i64, i64 } %t355, 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 - %t364 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 0 - %t365 = load { ptr, i64, i64 }, ptr %t364 - store { ptr, i64, i64 } %t363, ptr %a367 - store { ptr, i64, i64 } %t365, ptr %a368 + store { ptr, i64, i64 } %t355, ptr %a363 + call void @finch_str_drop(ptr %a363) + store { ptr, i64, i64 } %t359, ptr %a364 + call void @finch_str_drop(ptr %a364) + %t365 = load { ptr, i64, i64 }, ptr %a360 + store { ptr, i64, i64 } %t365, ptr %a367 + store { ptr, i64, i64 } { ptr @.str.4131, i64 1, i64 0 }, 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.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 - %t375 = load { ptr, i64, i64 }, ptr %t374 - store { ptr, i64, i64 } %t373, ptr %a377 - store { ptr, i64, i64 } %t375, ptr %a378 - call void @finch_str_concat(ptr %a376, ptr %a377, ptr %a378) - %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.3976, i64 4, i64 0 }) - %t383 = insertvalue %S.gen.Val %t381, %S.ast.Type %t382, 1 - ret %S.gen.Val %t383 -endif5998: - %t384 = load { ptr, i64, i64 }, ptr %a248 - store { ptr, i64, i64 } %t384, ptr %a385 - 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.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.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 %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.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.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.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.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.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 %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.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.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 - %t433 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t434 = load %S.ast.Type, ptr %t433 - %t435 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t432, %S.ast.Type %t434) - store { ptr, i64, i64 } %t431, 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.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 - %t445 = load { ptr, i64, i64 }, ptr %t444 - store { ptr, i64, i64 } %t443, 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.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 - %t455 = load { ptr, i64, i64 }, ptr %t454 - store { ptr, i64, i64 } %t453, ptr %a457 - store { ptr, i64, i64 } %t455, ptr %a458 - call void @finch_str_concat(ptr %a456, ptr %a457, ptr %a458) - %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.3984, i64 4, i64 0 }) - %t463 = insertvalue %S.gen.Val %t461, %S.ast.Type %t462, 1 - ret %S.gen.Val %t463 + store { ptr, i64, i64 } %t365, ptr %a369 + call void @finch_str_drop(ptr %a369) + %t370 = load { ptr, i64, i64 }, ptr %a366 + %t371 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 0 + %t372 = load { ptr, i64, i64 }, ptr %t371 + store { ptr, i64, i64 } %t370, ptr %a374 + store { ptr, i64, i64 } %t372, ptr %a375 + call void @finch_str_concat(ptr %a373, ptr %a374, ptr %a375) + store { ptr, i64, i64 } %t370, ptr %a376 + call void @finch_str_drop(ptr %a376) + %t377 = load { ptr, i64, i64 }, ptr %a373 + store { ptr, i64, i64 } %t377, ptr %a379 + store { ptr, i64, i64 } { ptr @.str.4132, i64 2, i64 0 }, ptr %a380 + call void @finch_str_concat(ptr %a378, ptr %a379, ptr %a380) + store { ptr, i64, i64 } %t377, ptr %a381 + call void @finch_str_drop(ptr %a381) + %t382 = load { ptr, i64, i64 }, ptr %a378 + %t383 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 + %t384 = load { ptr, i64, i64 }, ptr %t383 + store { ptr, i64, i64 } %t382, ptr %a386 + store { ptr, i64, i64 } %t384, ptr %a387 + call void @finch_str_concat(ptr %a385, ptr %a386, ptr %a387) + store { ptr, i64, i64 } %t382, ptr %a388 + call void @finch_str_drop(ptr %a388) + %t389 = load { ptr, i64, i64 }, ptr %a385 + %t390 = call { ptr, i64, i64 } @finch.gen.op(ptr %t324, { ptr, i64, i64 } %t389) + store { ptr, i64, i64 } %t389, ptr %a391 + call void @finch_str_drop(ptr %a391) + %t392 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t390, 0 + %t393 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4133, i64 4, i64 0 }) + %t394 = insertvalue %S.gen.Val %t392, %S.ast.Type %t393, 1 + call void @finch.drop.arr_str(ptr %a323) + call void @finch.drop.arr_str(ptr %a311) + call void @finch_str_drop(ptr %a296) + call void @finch.drop.S_gen_Val(ptr %a10) + call void @finch.drop.S_gen_Val(ptr %a6) + ret %S.gen.Val %t394 +endif6355: + %t395 = load { ptr, i64, i64 }, ptr %a296 + store { ptr, i64, i64 } %t395, ptr %a396 + store { ptr, i64, i64 } { ptr @.str.4134, i64 4, i64 0 }, ptr %a397 + %t398 = call i32 @finch_str_eq(ptr %a396, ptr %a397) + %t399 = icmp ne i32 %t398, 0 + br i1 %t399, label %then6363, label %endif6365 +then6363: + %t400 = load i1, ptr %a23 + %t401 = xor i1 %t400, true + br i1 %t401, label %then6366, label %endif6368 +then6366: + %t402 = load ptr, ptr %a1 + %t403 = load %S.ast.Node, ptr %a11 + call void @finch.gen.fail(ptr %t402, %S.ast.Node %t403, { ptr, i64, i64 } { ptr @.str.4135, i64 115, i64 0 }) + br label %endif6368 +endif6368: + store { ptr, i64, i64 } { ptr @.str.4136, i64 2, i64 0 }, ptr %a404 + %t405 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t405, ptr %a406 + store { ptr, i64, i64 } { ptr @.str.4137, i64 2, i64 0 }, ptr %a407 + %t408 = call i32 @finch_str_eq(ptr %a406, ptr %a407) + %t409 = icmp ne i32 %t408, 0 + br i1 %t409, label %then6369, label %endif6371 +then6369: + %t410 = load { ptr, i64, i64 }, ptr %a404 + store { ptr, i64, i64 } { ptr @.str.4138, i64 2, i64 0 }, ptr %a404 + store { ptr, i64, i64 } %t410, ptr %a411 + call void @finch_str_drop(ptr %a411) + br label %endif6371 +endif6371: + %t412 = load ptr, ptr %a1 + %t413 = load { ptr, i64, i64 }, ptr %a404 + store { ptr, i64, i64 } { ptr @.str.4139, i64 5, i64 0 }, ptr %a415 + store { ptr, i64, i64 } %t413, ptr %a416 + 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.4140, i64 5, i64 0 }, ptr %a420 + call void @finch_str_concat(ptr %a418, ptr %a419, ptr %a420) + store { ptr, i64, i64 } %t417, ptr %a421 + call void @finch_str_drop(ptr %a421) + %t422 = load { ptr, i64, i64 }, ptr %a418 + %t423 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 0 + %t424 = load { ptr, i64, i64 }, ptr %t423 + store { ptr, i64, i64 } %t422, ptr %a426 + store { ptr, i64, i64 } %t424, ptr %a427 + call void @finch_str_concat(ptr %a425, ptr %a426, ptr %a427) + store { ptr, i64, i64 } %t422, ptr %a428 + call void @finch_str_drop(ptr %a428) + %t429 = load { ptr, i64, i64 }, ptr %a425 + store { ptr, i64, i64 } %t429, ptr %a431 + store { ptr, i64, i64 } { ptr @.str.4141, i64 2, i64 0 }, ptr %a432 + call void @finch_str_concat(ptr %a430, ptr %a431, ptr %a432) + store { ptr, i64, i64 } %t429, ptr %a433 + call void @finch_str_drop(ptr %a433) + %t434 = load { ptr, i64, i64 }, ptr %a430 + %t435 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 + %t436 = load { ptr, i64, i64 }, ptr %t435 + store { ptr, i64, i64 } %t434, ptr %a438 + store { ptr, i64, i64 } %t436, ptr %a439 + call void @finch_str_concat(ptr %a437, ptr %a438, ptr %a439) + store { ptr, i64, i64 } %t434, ptr %a440 + call void @finch_str_drop(ptr %a440) + %t441 = load { ptr, i64, i64 }, ptr %a437 + %t442 = call { ptr, i64, i64 } @finch.gen.op(ptr %t412, { ptr, i64, i64 } %t441) + store { ptr, i64, i64 } %t441, ptr %a443 + call void @finch_str_drop(ptr %a443) + %t444 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t442, 0 + %t445 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4142, i64 4, i64 0 }) + %t446 = insertvalue %S.gen.Val %t444, %S.ast.Type %t445, 1 + call void @finch_str_drop(ptr %a404) + call void @finch_str_drop(ptr %a296) + call void @finch.drop.S_gen_Val(ptr %a10) + call void @finch.drop.S_gen_Val(ptr %a6) + ret %S.gen.Val %t446 +endif6365: + %t447 = load { ptr, i64, i64 }, ptr %a296 + store { ptr, i64, i64 } %t447, ptr %a448 + store { ptr, i64, i64 } { ptr @.str.4143, i64 4, i64 0 }, ptr %a449 + %t450 = call i32 @finch_str_eq(ptr %a448, ptr %a449) + %t451 = icmp ne i32 %t450, 0 + br label %logic.from6372 +logic.from6372: + br i1 %t451, label %logic.rhs6373, label %logic.end6374 +logic.rhs6373: + %t452 = load i1, ptr %a23 + %t453 = xor i1 %t452, true + br label %logic.rend6375 +logic.rend6375: + br label %logic.end6374 +logic.end6374: + %t454 = phi i1 [ false, %logic.from6372 ], [ %t453, %logic.rend6375 ] + br i1 %t454, label %then6376, label %endif6378 +then6376: + %t455 = load ptr, ptr %a1 + %t456 = load { ptr, i64, i64 }, ptr %a2 + %t457 = load %S.gen.Val, ptr %a6 + %t458 = load %S.gen.Val, ptr %a10 + %t459 = load %S.ast.Node, ptr %a11 + call void @finch.gen.badOperands(ptr %t455, { ptr, i64, i64 } %t456, %S.gen.Val %t457, %S.gen.Val %t458, %S.ast.Node %t459) + br label %endif6378 +endif6378: + %t460 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 + %t461 = load %S.ast.Type, ptr %t460 + %t462 = call i1 @finch.gen.isInt(%S.ast.Type %t461) + %t463 = xor i1 %t462, true + br label %logic.from6379 +logic.from6379: + br i1 %t463, label %logic.rhs6380, label %logic.end6381 +logic.rhs6380: + %t464 = load { ptr, i64, i64 }, ptr %a296 + store { ptr, i64, i64 } %t464, ptr %a465 + store { ptr, i64, i64 } { ptr @.str.4144, i64 4, i64 0 }, ptr %a466 + %t467 = call i32 @finch_str_eq(ptr %a465, ptr %a466) + %t468 = icmp eq i32 %t467, 0 + br label %logic.rend6382 +logic.rend6382: + br label %logic.end6381 +logic.end6381: + %t469 = phi i1 [ false, %logic.from6379 ], [ %t468, %logic.rend6382 ] + br label %logic.from6383 +logic.from6383: + br i1 %t469, label %logic.rhs6384, label %logic.end6385 +logic.rhs6384: + %t470 = load { ptr, i64, i64 }, ptr %a296 + store { ptr, i64, i64 } %t470, ptr %a471 + store { ptr, i64, i64 } { ptr @.str.4145, i64 4, i64 0 }, ptr %a472 + %t473 = call i32 @finch_str_eq(ptr %a471, ptr %a472) + %t474 = icmp eq i32 %t473, 0 + br label %logic.rend6386 +logic.rend6386: + br label %logic.end6385 +logic.end6385: + %t475 = phi i1 [ false, %logic.from6383 ], [ %t474, %logic.rend6386 ] + br i1 %t475, label %then6387, label %endif6389 +then6387: + %t476 = load ptr, ptr %a1 + %t477 = load { ptr, i64, i64 }, ptr %a2 + %t478 = load %S.gen.Val, ptr %a6 + %t479 = load %S.gen.Val, ptr %a10 + %t480 = load %S.ast.Node, ptr %a11 + call void @finch.gen.badOperands(ptr %t476, { ptr, i64, i64 } %t477, %S.gen.Val %t478, %S.gen.Val %t479, %S.ast.Node %t480) + br label %endif6389 +endif6389: + %t481 = load ptr, ptr %a1 + %t482 = load { ptr, i64, i64 }, ptr %a2 + %t483 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 + %t484 = load %S.ast.Type, ptr %t483 + %t485 = call i1 @finch.gen.isSigned(%S.ast.Type %t484) + %t486 = call { ptr, i64, i64 } @finch.gen.intPred({ ptr, i64, i64 } %t482, i1 %t485) + store { ptr, i64, i64 } { ptr @.str.4146, i64 5, i64 0 }, ptr %a488 + store { ptr, i64, i64 } %t486, ptr %a489 + call void @finch_str_concat(ptr %a487, ptr %a488, ptr %a489) + store { ptr, i64, i64 } %t486, ptr %a490 + call void @finch_str_drop(ptr %a490) + %t491 = load { ptr, i64, i64 }, ptr %a487 + store { ptr, i64, i64 } %t491, ptr %a493 + store { ptr, i64, i64 } { ptr @.str.4147, i64 1, i64 0 }, ptr %a494 + call void @finch_str_concat(ptr %a492, ptr %a493, ptr %a494) + store { ptr, i64, i64 } %t491, ptr %a495 + call void @finch_str_drop(ptr %a495) + %t496 = load { ptr, i64, i64 }, ptr %a492 + %t497 = load ptr, ptr %a1 + %t498 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 + %t499 = load %S.ast.Type, ptr %t498 + %t500 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t497, %S.ast.Type %t499) + store { ptr, i64, i64 } %t496, ptr %a502 + store { ptr, i64, i64 } %t500, ptr %a503 + call void @finch_str_concat(ptr %a501, ptr %a502, ptr %a503) + store { ptr, i64, i64 } %t496, ptr %a504 + call void @finch_str_drop(ptr %a504) + store { ptr, i64, i64 } %t500, ptr %a505 + call void @finch_str_drop(ptr %a505) + %t506 = load { ptr, i64, i64 }, ptr %a501 + store { ptr, i64, i64 } %t506, ptr %a508 + store { ptr, i64, i64 } { ptr @.str.4148, i64 1, i64 0 }, ptr %a509 + call void @finch_str_concat(ptr %a507, ptr %a508, ptr %a509) + store { ptr, i64, i64 } %t506, ptr %a510 + call void @finch_str_drop(ptr %a510) + %t511 = load { ptr, i64, i64 }, ptr %a507 + %t512 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 0 + %t513 = load { ptr, i64, i64 }, ptr %t512 + store { ptr, i64, i64 } %t511, ptr %a515 + store { ptr, i64, i64 } %t513, ptr %a516 + call void @finch_str_concat(ptr %a514, ptr %a515, ptr %a516) + store { ptr, i64, i64 } %t511, ptr %a517 + call void @finch_str_drop(ptr %a517) + %t518 = load { ptr, i64, i64 }, ptr %a514 + store { ptr, i64, i64 } %t518, ptr %a520 + store { ptr, i64, i64 } { ptr @.str.4149, i64 2, i64 0 }, ptr %a521 + call void @finch_str_concat(ptr %a519, ptr %a520, ptr %a521) + store { ptr, i64, i64 } %t518, ptr %a522 + call void @finch_str_drop(ptr %a522) + %t523 = load { ptr, i64, i64 }, ptr %a519 + %t524 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 + %t525 = load { ptr, i64, i64 }, ptr %t524 + store { ptr, i64, i64 } %t523, ptr %a527 + store { ptr, i64, i64 } %t525, ptr %a528 + call void @finch_str_concat(ptr %a526, ptr %a527, ptr %a528) + store { ptr, i64, i64 } %t523, ptr %a529 + call void @finch_str_drop(ptr %a529) + %t530 = load { ptr, i64, i64 }, ptr %a526 + %t531 = call { ptr, i64, i64 } @finch.gen.op(ptr %t481, { ptr, i64, i64 } %t530) + store { ptr, i64, i64 } %t530, ptr %a532 + call void @finch_str_drop(ptr %a532) + %t533 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t531, 0 + %t534 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4150, i64 4, i64 0 }) + %t535 = insertvalue %S.gen.Val %t533, %S.ast.Type %t534, 1 + call void @finch_str_drop(ptr %a296) + call void @finch.drop.S_gen_Val(ptr %a10) + call void @finch.drop.S_gen_Val(ptr %a6) + ret %S.gen.Val %t535 } define internal { ptr, i64, i64 } @finch.gen.intPred({ ptr, i64, i64 } %p0, i1 %p1) { @@ -54157,28 +64080,29 @@ entry: %a2 = alloca i1, align 16 %a14 = alloca { ptr, i64, i64 }, align 16 %a26 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca i64, align 16 - %a44 = alloca i64, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 + %a40 = alloca { ptr, i64, i64 }, align 16 + %a43 = alloca i64, align 16 + %a46 = alloca i64, align 16 + %a51 = alloca { ptr, i64, i64 }, align 16 + %a52 = alloca { ptr, i64, i64 }, align 16 + %a63 = alloca { ptr, i64, i64 }, align 16 + %a64 = alloca { ptr, i64, i64 }, align 16 store { ptr, i64, i64 } %p0, ptr %a1 store i1 %p1, ptr %a2 %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.3985, i64 2, i64 0 }, ptr %t5 + store { ptr, i64, i64 } { ptr @.str.4151, i64 2, i64 0 }, ptr %t5 %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 1 - store { ptr, i64, i64 } { ptr @.str.3986, i64 2, i64 0 }, ptr %t6 + store { ptr, i64, i64 } { ptr @.str.4152, i64 2, i64 0 }, ptr %t6 %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 2 - store { ptr, i64, i64 } { ptr @.str.3987, i64 1, i64 0 }, ptr %t7 + store { ptr, i64, i64 } { ptr @.str.4153, i64 1, i64 0 }, ptr %t7 %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 3 - store { ptr, i64, i64 } { ptr @.str.3988, i64 2, i64 0 }, ptr %t8 + store { ptr, i64, i64 } { ptr @.str.4154, i64 2, i64 0 }, ptr %t8 %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 4 - store { ptr, i64, i64 } { ptr @.str.3989, i64 1, i64 0 }, ptr %t9 + store { ptr, i64, i64 } { ptr @.str.4155, i64 1, i64 0 }, ptr %t9 %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 5 - store { ptr, i64, i64 } { ptr @.str.3990, i64 2, i64 0 }, ptr %t10 + store { ptr, i64, i64 } { ptr @.str.4156, 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 @@ -54186,87 +64110,92 @@ 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.3991, i64 2, i64 0 }, ptr %t17 + store { ptr, i64, i64 } { ptr @.str.4157, i64 2, i64 0 }, ptr %t17 %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 1 - store { ptr, i64, i64 } { ptr @.str.3992, i64 2, i64 0 }, ptr %t18 + store { ptr, i64, i64 } { ptr @.str.4158, i64 2, i64 0 }, ptr %t18 %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 2 - store { ptr, i64, i64 } { ptr @.str.3993, i64 3, i64 0 }, ptr %t19 + store { ptr, i64, i64 } { ptr @.str.4159, i64 3, i64 0 }, ptr %t19 %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 3 - store { ptr, i64, i64 } { ptr @.str.3994, i64 3, i64 0 }, ptr %t20 + store { ptr, i64, i64 } { ptr @.str.4160, i64 3, i64 0 }, ptr %t20 %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 4 - store { ptr, i64, i64 } { ptr @.str.3995, i64 3, i64 0 }, ptr %t21 + store { ptr, i64, i64 } { ptr @.str.4161, i64 3, i64 0 }, ptr %t21 %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 5 - store { ptr, i64, i64 } { ptr @.str.3996, i64 3, i64 0 }, ptr %t22 + store { ptr, i64, i64 } { ptr @.str.4162, 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 %then6023, label %endif6025 -then6023: + br i1 %t27, label %then6390, label %endif6392 +then6390: %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.3997, i64 2, i64 0 }, ptr %t30 + store { ptr, i64, i64 } { ptr @.str.4163, i64 2, i64 0 }, ptr %t30 %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 1 - store { ptr, i64, i64 } { ptr @.str.3998, i64 2, i64 0 }, ptr %t31 + store { ptr, i64, i64 } { ptr @.str.4164, i64 2, i64 0 }, ptr %t31 %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 2 - store { ptr, i64, i64 } { ptr @.str.3999, i64 3, i64 0 }, ptr %t32 + store { ptr, i64, i64 } { ptr @.str.4165, i64 3, i64 0 }, ptr %t32 %t33 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 3 - store { ptr, i64, i64 } { ptr @.str.4000, i64 3, i64 0 }, ptr %t33 + store { ptr, i64, i64 } { ptr @.str.4166, i64 3, i64 0 }, ptr %t33 %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 4 - store { ptr, i64, i64 } { ptr @.str.4001, i64 3, i64 0 }, ptr %t34 + store { ptr, i64, i64 } { ptr @.str.4167, i64 3, i64 0 }, ptr %t34 %t35 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 5 - store { ptr, i64, i64 } { ptr @.str.4002, i64 3, i64 0 }, ptr %t35 + store { ptr, i64, i64 } { ptr @.str.4168, 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 + %t39 = load { ptr, i64, i64 }, ptr %a26 store { ptr, i64, i64 } %t38, ptr %a26 - 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.cond6026 -find.cond6026: - %t45 = load i64, ptr %a44 - %t46 = icmp slt i64 %t45, %t42 - 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.hit6028, label %find.next6029 -find.hit6028: - store i64 %t45, ptr %a41 - br label %find.end6030 -find.next6029: - %t53 = add i64 %t45, 1 - store i64 %t53, ptr %a44 - 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 %range6031, label %inrange6032 -range6031: - call void @finch_panic_index(ptr @.str.4003, i64 3221, i64 %t54, i64 %t56) + store { ptr, i64, i64 } %t39, ptr %a40 + call void @finch.drop.arr_str(ptr %a40) + br label %endif6392 +endif6392: + %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 + %t42 = load { ptr, i64, i64 }, ptr %a1 + store i64 -1, ptr %a43 + %t44 = load i64, ptr %t41 + %t45 = load ptr, ptr %a14 + store i64 0, ptr %a46 + br label %find.cond6393 +find.cond6393: + %t47 = load i64, ptr %a46 + %t48 = icmp slt i64 %t47, %t44 + br i1 %t48, label %find.body6394, label %find.end6397 +find.body6394: + %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %t45, i64 %t47 + %t50 = load { ptr, i64, i64 }, ptr %t49 + store { ptr, i64, i64 } %t50, ptr %a51 + store { ptr, i64, i64 } %t42, ptr %a52 + %t53 = call i32 @finch_str_eq(ptr %a51, ptr %a52) + %t54 = icmp ne i32 %t53, 0 + br i1 %t54, label %find.hit6395, label %find.next6396 +find.hit6395: + store i64 %t47, ptr %a43 + br label %find.end6397 +find.next6396: + %t55 = add i64 %t47, 1 + store i64 %t55, ptr %a46 + br label %find.cond6393 +find.end6397: + %t56 = load i64, ptr %a43 + %t57 = load { ptr, i64, i64 }, ptr %a26 + %t58 = extractvalue { ptr, i64, i64 } %t57, 1 + %t59 = icmp uge i64 %t56, %t58 + br i1 %t59, label %range6398, label %inrange6399 +range6398: + call void @finch_panic_index(ptr @.str.4169, i64 3484, i64 %t56, i64 %t58) unreachable -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 - 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 +inrange6399: + %t60 = extractvalue { ptr, i64, i64 } %t57, 0 + %t61 = getelementptr inbounds { ptr, i64, i64 }, ptr %t60, i64 %t56 + %t62 = load { ptr, i64, i64 }, ptr %t61 + store { ptr, i64, i64 } %t62, ptr %a63 + call void @finch_str_copy(ptr %a64, ptr %a63) + %t65 = load { ptr, i64, i64 }, ptr %a64 + call void @finch.drop.arr_str(ptr %a26) + call void @finch.drop.arr_str(ptr %a14) + ret { ptr, i64, i64 } %t65 } define internal %S.gen.Val @finch.gen.binary(ptr %p0, %S.ast.Node %p1) { @@ -54291,44 +64220,54 @@ entry: %a79 = alloca { ptr, i64, i64 }, align 16 %a81 = alloca { ptr, i64, i64 }, align 16 %a82 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 + %a86 = alloca { ptr, i64, i64 }, align 16 %a89 = 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 + %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 - %a98 = 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 %a102 = 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 %a107 = 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 - %a114 = alloca { ptr, i64, i64 }, align 16 + %a112 = alloca { ptr, i64, i64 }, align 16 + %a113 = 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 %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca %S.gen.Val, align 16 + %a121 = 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 + %a129 = alloca { ptr, i64, i64 }, align 16 + %a132 = alloca { ptr, i64, i64 }, align 16 %a145 = alloca %S.gen.Val, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = 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 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 + %a151 = alloca i64, align 16 + %a163 = alloca %S.gen.Val, align 16 + %a167 = alloca { ptr, i64, i64 }, align 16 + %a168 = alloca { ptr, i64, i64 }, align 16 + %a172 = alloca { ptr, i64, i64 }, align 16 + %a173 = alloca { ptr, i64, i64 }, align 16 + %a178 = alloca { ptr, i64, i64 }, align 16 + %a179 = alloca { ptr, i64, i64 }, align 16 + %a184 = alloca { ptr, i64, i64 }, align 16 + %a185 = alloca { ptr, i64, i64 }, align 16 + %a190 = alloca { ptr, i64, i64 }, align 16 + %a191 = alloca { ptr, i64, i64 }, align 16 + %a196 = alloca { ptr, i64, i64 }, align 16 + %a197 = 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 @@ -54339,48 +64278,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.4004, i64 2, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.4170, 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.from6033 -logic.from6033: - br i1 %t13, label %logic.end6035, label %logic.rhs6034 -logic.rhs6034: + br label %logic.from6400 +logic.from6400: + br i1 %t13, label %logic.end6402, label %logic.rhs6401 +logic.rhs6401: %t14 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t14, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.4005, i64 2, i64 0 }, ptr %a16 + store { ptr, i64, i64 } { ptr @.str.4171, 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.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: + br label %logic.rend6403 +logic.rend6403: + br label %logic.end6402 +logic.end6402: + %t19 = phi i1 [ true, %logic.from6400 ], [ %t18, %logic.rend6403 ] + br i1 %t19, label %then6404, label %endif6406 +then6404: %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 %range6040, label %inrange6041 -range6040: - call void @finch_panic_index(ptr @.str.4006, i64 3227, i64 0, i64 %t23) + br i1 %t24, label %range6407, label %inrange6408 +range6407: + call void @finch_panic_index(ptr @.str.4172, i64 3490, i64 0, i64 %t23) unreachable -inrange6041: +inrange6408: %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.4007, i64 10, i64 0 }) + %t31 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t30, { ptr, i64, i64 } { ptr @.str.4173, 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.4008, i64 9, i64 0 }) + %t34 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t33, { ptr, i64, i64 } { ptr @.str.4174, 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.4009, i64 9, i64 0 }) + %t37 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t36, { ptr, i64, i64 } { ptr @.str.4175, i64 9, i64 0 }) store { ptr, i64, i64 } %t37, ptr %a38 %t39 = load ptr, ptr %a1 %t40 = load { ptr, i64, i64 }, ptr %a32 @@ -54390,25 +64329,25 @@ inrange6041: 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.4010, i64 2, i64 0 }, ptr %a45 + store { ptr, i64, i64 } { ptr @.str.4176, 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 %then6042, label %else6043 -then6042: + br i1 %t47, label %then6409, label %else6410 +then6409: %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 %endif6044 -else6043: + br label %endif6411 +else6410: %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 %endif6044 -endif6044: + br label %endif6411 +endif6411: %t56 = load ptr, ptr %a1 %t57 = load { ptr, i64, i64 }, ptr %a35 call void @finch.gen.label(ptr %t56, { ptr, i64, i64 } %t57) @@ -54417,18 +64356,18 @@ endif6044: %t60 = load { ptr, i64, i64 }, ptr %t59 %t61 = extractvalue { ptr, i64, i64 } %t60, 1 %t62 = icmp uge i64 1, %t61 - br i1 %t62, label %range6045, label %inrange6046 -range6045: - call void @finch_panic_index(ptr @.str.4011, i64 3239, i64 1, i64 %t61) + br i1 %t62, label %range6412, label %inrange6413 +range6412: + call void @finch_panic_index(ptr @.str.4177, i64 3502, i64 1, i64 %t61) unreachable -inrange6046: +inrange6413: %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.4012, i64 10, i64 0 }) + %t69 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t68, { ptr, i64, i64 } { ptr @.str.4178, i64 10, i64 0 }) store { ptr, i64, i64 } %t69, ptr %a70 %t71 = load ptr, ptr %a1 %t72 = load { ptr, i64, i64 }, ptr %a70 @@ -54442,182 +64381,232 @@ inrange6046: %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.4013, i64 4, i64 0 }, ptr %a79 + store { ptr, i64, i64 } { ptr @.str.4179, 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.4014, i64 2, i64 0 }, ptr %a82 + store { ptr, i64, i64 } { ptr @.str.4180, 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 %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.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.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 - store { ptr, i64, i64 } %t94, 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.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 - store { ptr, i64, i64 } %t103, ptr %a106 - store { ptr, i64, i64 } %t104, 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 %a110 - 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 - store { ptr, i64, i64 } %t112, 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.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.4021, i64 4, i64 0 }) - %t125 = insertvalue %S.gen.Val %t123, %S.ast.Type %t124, 1 - ret %S.gen.Val %t125 -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 %range6050, label %inrange6051 -range6050: - call void @finch_panic_index(ptr @.str.4022, i64 3251, i64 0, i64 %t129) - unreachable -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 - %t134 = call %S.gen.Val @finch.gen.expr(ptr %t126, %S.ast.Node %t133) - store %S.gen.Val %t134, ptr %a135 + br i1 %t84, label %then6414, label %endif6416 +then6414: + %t85 = load { ptr, i64, i64 }, ptr %a79 + store { ptr, i64, i64 } { ptr @.str.4181, i64 5, i64 0 }, ptr %a79 + store { ptr, i64, i64 } %t85, ptr %a86 + call void @finch_str_drop(ptr %a86) + br label %endif6416 +endif6416: + %t87 = load ptr, ptr %a1 + %t88 = load { ptr, i64, i64 }, ptr %a79 + store { ptr, i64, i64 } { ptr @.str.4182, i64 9, i64 0 }, ptr %a90 + store { ptr, i64, i64 } %t88, ptr %a91 + call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) + %t92 = load { ptr, i64, i64 }, ptr %a89 + store { ptr, i64, i64 } %t92, ptr %a94 + store { ptr, i64, i64 } { ptr @.str.4183, i64 3, i64 0 }, ptr %a95 + call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) + store { ptr, i64, i64 } %t92, ptr %a96 + call void @finch_str_drop(ptr %a96) + %t97 = load { ptr, i64, i64 }, ptr %a93 + %t98 = load { ptr, i64, i64 }, ptr %a32 + store { ptr, i64, i64 } %t97, ptr %a100 + store { ptr, i64, i64 } %t98, ptr %a101 + call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) + store { ptr, i64, i64 } %t97, ptr %a102 + call void @finch_str_drop(ptr %a102) + %t103 = load { ptr, i64, i64 }, ptr %a99 + store { ptr, i64, i64 } %t103, ptr %a105 + store { ptr, i64, i64 } { ptr @.str.4184, i64 6, i64 0 }, ptr %a106 + call void @finch_str_concat(ptr %a104, ptr %a105, ptr %a106) + store { ptr, i64, i64 } %t103, ptr %a107 + call void @finch_str_drop(ptr %a107) + %t108 = load { ptr, i64, i64 }, ptr %a104 + %t109 = load { ptr, i64, i64 }, ptr %a67 + store { ptr, i64, i64 } %t108, ptr %a111 + store { ptr, i64, i64 } %t109, ptr %a112 + call void @finch_str_concat(ptr %a110, ptr %a111, ptr %a112) + store { ptr, i64, i64 } %t108, ptr %a113 + call void @finch_str_drop(ptr %a113) + %t114 = load { ptr, i64, i64 }, ptr %a110 + store { ptr, i64, i64 } %t114, ptr %a116 + store { ptr, i64, i64 } { ptr @.str.4185, i64 3, i64 0 }, ptr %a117 + call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) + store { ptr, i64, i64 } %t114, ptr %a118 + call void @finch_str_drop(ptr %a118) + %t119 = load { ptr, i64, i64 }, ptr %a115 + %t120 = load { ptr, i64, i64 }, ptr %a70 + store { ptr, i64, i64 } %t119, ptr %a122 + store { ptr, i64, i64 } %t120, ptr %a123 + call void @finch_str_concat(ptr %a121, ptr %a122, ptr %a123) + store { ptr, i64, i64 } %t119, ptr %a124 + call void @finch_str_drop(ptr %a124) + %t125 = load { ptr, i64, i64 }, ptr %a121 + store { ptr, i64, i64 } %t125, ptr %a127 + store { ptr, i64, i64 } { ptr @.str.4186, i64 2, i64 0 }, ptr %a128 + call void @finch_str_concat(ptr %a126, ptr %a127, ptr %a128) + store { ptr, i64, i64 } %t125, ptr %a129 + call void @finch_str_drop(ptr %a129) + %t130 = load { ptr, i64, i64 }, ptr %a126 + %t131 = call { ptr, i64, i64 } @finch.gen.op(ptr %t87, { ptr, i64, i64 } %t130) + store { ptr, i64, i64 } %t130, ptr %a132 + call void @finch_str_drop(ptr %a132) + %t133 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t131, 0 + %t134 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4187, i64 4, i64 0 }) + %t135 = insertvalue %S.gen.Val %t133, %S.ast.Type %t134, 1 + call void @finch_str_drop(ptr %a79) + call void @finch_str_drop(ptr %a70) + call void @finch_str_drop(ptr %a67) + call void @finch_str_drop(ptr %a38) + call void @finch_str_drop(ptr %a35) + call void @finch_str_drop(ptr %a32) + call void @finch_str_drop(ptr %a29) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t135 +endif6406: %t136 = load ptr, ptr %a1 %t137 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t138 = load { ptr, i64, i64 }, ptr %t137 %t139 = extractvalue { ptr, i64, i64 } %t138, 1 - %t140 = icmp uge i64 1, %t139 - br i1 %t140, label %range6052, label %inrange6053 -range6052: - call void @finch_panic_index(ptr @.str.4023, i64 3252, i64 1, i64 %t139) + %t140 = icmp uge i64 0, %t139 + br i1 %t140, label %range6417, label %inrange6418 +range6417: + call void @finch_panic_index(ptr @.str.4188, i64 3514, i64 0, i64 %t139) unreachable -inrange6053: +inrange6418: %t141 = extractvalue { ptr, i64, i64 } %t138, 0 - %t142 = getelementptr inbounds %S.ast.Node, ptr %t141, i64 1 + %t142 = getelementptr inbounds %S.ast.Node, ptr %t141, i64 0 %t143 = load %S.ast.Node, ptr %t142 %t144 = call %S.gen.Val @finch.gen.expr(ptr %t136, %S.ast.Node %t143) 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.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.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.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.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.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.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.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.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.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.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.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.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 - %t184 = load %S.gen.Val, ptr %a145 - %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 -endif6076: - %t187 = load ptr, ptr %a1 - %t188 = load { ptr, i64, i64 }, ptr %a8 - %t189 = load %S.gen.Val, ptr %a135 - %t190 = load %S.gen.Val, ptr %a145 - %t191 = load %S.ast.Node, ptr %a2 - %t192 = call %S.gen.Val @finch.gen.arith(ptr %t187, { ptr, i64, i64 } %t188, %S.gen.Val %t189, %S.gen.Val %t190, %S.ast.Node %t191) - ret %S.gen.Val %t192 + %t146 = load ptr, ptr %a1 + %t147 = icmp eq ptr %t146, null + br i1 %t147, label %panic6419, label %ok6420 +panic6419: + call void @finch_panic(ptr @.str.4189, i64 3515, ptr @.str.4190) + unreachable +ok6420: + %t148 = getelementptr inbounds %S.gen.Gen, ptr %t146, i32 0, i32 11 + %t149 = getelementptr inbounds { ptr, i64, i64 }, ptr %t148, i32 0, i32 1 + %t150 = load i64, ptr %t149 + store i64 %t150, ptr %a151 + %t152 = load ptr, ptr %a1 + %t153 = load %S.gen.Val, ptr %a145 + call void @finch.gen.hold(ptr %t152, %S.gen.Val %t153) + %t154 = load ptr, ptr %a1 + %t155 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t156 = load { ptr, i64, i64 }, ptr %t155 + %t157 = extractvalue { ptr, i64, i64 } %t156, 1 + %t158 = icmp uge i64 1, %t157 + br i1 %t158, label %range6421, label %inrange6422 +range6421: + call void @finch_panic_index(ptr @.str.4191, i64 3517, i64 1, i64 %t157) + unreachable +inrange6422: + %t159 = extractvalue { ptr, i64, i64 } %t156, 0 + %t160 = getelementptr inbounds %S.ast.Node, ptr %t159, i64 1 + %t161 = load %S.ast.Node, ptr %t160 + %t162 = call %S.gen.Val @finch.gen.expr(ptr %t154, %S.ast.Node %t161) + store %S.gen.Val %t162, ptr %a163 + %t164 = load ptr, ptr %a1 + %t165 = load i64, ptr %a151 + call void @finch.gen.heldEnd(ptr %t164, i64 %t165) + %t166 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t166, ptr %a167 + store { ptr, i64, i64 } { ptr @.str.4192, i64 2, i64 0 }, ptr %a168 + %t169 = call i32 @finch_str_eq(ptr %a167, ptr %a168) + %t170 = icmp ne i32 %t169, 0 + br label %logic.from6423 +logic.from6423: + br i1 %t170, label %logic.end6425, label %logic.rhs6424 +logic.rhs6424: + %t171 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t171, ptr %a172 + store { ptr, i64, i64 } { ptr @.str.4193, i64 2, i64 0 }, ptr %a173 + %t174 = call i32 @finch_str_eq(ptr %a172, ptr %a173) + %t175 = icmp ne i32 %t174, 0 + br label %logic.rend6426 +logic.rend6426: + br label %logic.end6425 +logic.end6425: + %t176 = phi i1 [ true, %logic.from6423 ], [ %t175, %logic.rend6426 ] + br label %logic.from6427 +logic.from6427: + br i1 %t176, label %logic.end6429, label %logic.rhs6428 +logic.rhs6428: + %t177 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t177, ptr %a178 + store { ptr, i64, i64 } { ptr @.str.4194, i64 1, i64 0 }, ptr %a179 + %t180 = call i32 @finch_str_eq(ptr %a178, ptr %a179) + %t181 = icmp ne i32 %t180, 0 + br label %logic.rend6430 +logic.rend6430: + br label %logic.end6429 +logic.end6429: + %t182 = phi i1 [ true, %logic.from6427 ], [ %t181, %logic.rend6430 ] + br label %logic.from6431 +logic.from6431: + br i1 %t182, label %logic.end6433, label %logic.rhs6432 +logic.rhs6432: + %t183 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t183, ptr %a184 + store { ptr, i64, i64 } { ptr @.str.4195, i64 2, i64 0 }, ptr %a185 + %t186 = call i32 @finch_str_eq(ptr %a184, ptr %a185) + %t187 = icmp ne i32 %t186, 0 + br label %logic.rend6434 +logic.rend6434: + br label %logic.end6433 +logic.end6433: + %t188 = phi i1 [ true, %logic.from6431 ], [ %t187, %logic.rend6434 ] + br label %logic.from6435 +logic.from6435: + br i1 %t188, label %logic.end6437, label %logic.rhs6436 +logic.rhs6436: + %t189 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t189, ptr %a190 + store { ptr, i64, i64 } { ptr @.str.4196, i64 1, i64 0 }, ptr %a191 + %t192 = call i32 @finch_str_eq(ptr %a190, ptr %a191) + %t193 = icmp ne i32 %t192, 0 + br label %logic.rend6438 +logic.rend6438: + br label %logic.end6437 +logic.end6437: + %t194 = phi i1 [ true, %logic.from6435 ], [ %t193, %logic.rend6438 ] + br label %logic.from6439 +logic.from6439: + br i1 %t194, label %logic.end6441, label %logic.rhs6440 +logic.rhs6440: + %t195 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t195, ptr %a196 + store { ptr, i64, i64 } { ptr @.str.4197, i64 2, i64 0 }, ptr %a197 + %t198 = call i32 @finch_str_eq(ptr %a196, ptr %a197) + %t199 = icmp ne i32 %t198, 0 + br label %logic.rend6442 +logic.rend6442: + br label %logic.end6441 +logic.end6441: + %t200 = phi i1 [ true, %logic.from6439 ], [ %t199, %logic.rend6442 ] + br i1 %t200, label %then6443, label %endif6445 +then6443: + %t201 = load ptr, ptr %a1 + %t202 = load { ptr, i64, i64 }, ptr %a8 + %t203 = load %S.gen.Val, ptr %a145 + %t204 = load %S.gen.Val, ptr %a163 + %t205 = load %S.ast.Node, ptr %a2 + %t206 = call %S.gen.Val @finch.gen.compare(ptr %t201, { ptr, i64, i64 } %t202, %S.gen.Val %t203, %S.gen.Val %t204, %S.ast.Node %t205) + call void @finch.drop.S_gen_Val(ptr %a163) + call void @finch.drop.S_gen_Val(ptr %a145) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t206 +endif6445: + %t207 = load ptr, ptr %a1 + %t208 = load { ptr, i64, i64 }, ptr %a8 + %t209 = load %S.gen.Val, ptr %a145 + %t210 = load %S.gen.Val, ptr %a163 + %t211 = load %S.ast.Node, ptr %a2 + %t212 = call %S.gen.Val @finch.gen.arith(ptr %t207, { ptr, i64, i64 } %t208, %S.gen.Val %t209, %S.gen.Val %t210, %S.ast.Node %t211) + call void @finch.drop.S_gen_Val(ptr %a163) + call void @finch.drop.S_gen_Val(ptr %a145) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t212 } define internal %S.gen.Val @finch.gen.arrayLit(ptr %p0, %S.ast.Node %p1, %S.ast.Type %p2) { @@ -54630,377 +64619,532 @@ entry: %a9 = alloca { ptr, i64, i64 }, align 16 %a19 = alloca %S.ast.Type, align 16 %a20 = alloca %S.ast.Type, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca i64, align 16 - %a38 = alloca %S.ast.Node, align 16 - %a39 = alloca %S.gen.Val, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca %S.ast.Type, align 16 - %a52 = alloca %S.ast.Type, align 16 - %a75 = alloca %S.ast.Type, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = 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 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 + %a23 = alloca %S.ast.Type, align 16 + %a30 = alloca { ptr, i64, i64 }, align 16 + %a36 = alloca i64, align 16 + %a38 = alloca i64, align 16 + %a46 = alloca %S.ast.Node, align 16 + %a47 = alloca %S.gen.Val, align 16 + %a50 = alloca { ptr, i64, i64 }, align 16 + %a51 = alloca { ptr, i64, i64 }, align 16 + %a58 = alloca %S.gen.Val, align 16 + %a61 = alloca %S.ast.Type, align 16 + %a62 = alloca %S.ast.Type, align 16 + %a65 = alloca %S.ast.Type, align 16 + %a71 = alloca %S.gen.Val, align 16 + %a78 = alloca %S.gen.Val, align 16 + %a97 = 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 - %a103 = 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 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca i64, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 + %a102 = alloca %S.ast.Type, align 16 + %a103 = alloca %S.ast.Type, align 16 + %a107 = alloca %S.gen.Val, align 16 + %a114 = alloca %S.ast.Type, align 16 + %a117 = alloca { ptr, i64, i64 }, align 16 + %a119 = alloca { ptr, i64, i64 }, align 16 + %a120 = 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 + %a132 = alloca { ptr, i64, i64 }, align 16 %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a137 = 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 + %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 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a170 = 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 + %a156 = alloca { ptr, i64, i64 }, align 16 + %a159 = alloca { ptr, i64, i64 }, align 16 + %a161 = alloca { ptr, i64, i64 }, align 16 + %a164 = alloca i64, align 16 %a171 = alloca { ptr, i64, i64 }, align 16 %a172 = alloca { ptr, i64, i64 }, align 16 - %a175 = 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 %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 %a182 = 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 %a187 = alloca { ptr, i64, i64 }, align 16 %a188 = alloca { ptr, i64, i64 }, align 16 %a189 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 + %a190 = alloca { ptr, i64, i64 }, align 16 %a193 = 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 + %a198 = alloca { ptr, i64, i64 }, align 16 %a199 = 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 %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a205 = 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 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca %S.ast.Type, align 16 - %a225 = alloca %S.ast.Type, align 16 + %a216 = alloca { ptr, i64, i64 }, align 16 + %a221 = alloca { ptr, i64, i64 }, align 16 + %a222 = alloca { ptr, i64, i64 }, align 16 + %a223 = alloca { ptr, i64, i64 }, align 16 + %a225 = 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 + %a231 = alloca { ptr, i64, i64 }, align 16 + %a232 = alloca { ptr, i64, i64 }, align 16 + %a235 = alloca { ptr, i64, i64 }, align 16 + %a236 = alloca { ptr, i64, i64 }, align 16 + %a237 = alloca { ptr, i64, i64 }, align 16 + %a239 = 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 + %a245 = 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 + %a250 = 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 + %a256 = alloca { ptr, i64, i64 }, align 16 + %a257 = 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 + %a267 = 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 + %a273 = 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 + %a278 = alloca { ptr, i64, i64 }, align 16 + %a281 = alloca { ptr, i64, i64 }, align 16 + %a282 = alloca { ptr, i64, i64 }, align 16 + %a284 = alloca { ptr, i64, i64 }, align 16 + %a285 = alloca { ptr, i64, i64 }, align 16 + %a289 = alloca %S.ast.Type, align 16 + %a290 = alloca %S.ast.Type, align 16 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.4030, i64 4, i64 0 }) + %t4 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4198, 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.4031, i64 5, i64 0 }, ptr %a9 + store { ptr, i64, i64 } { ptr @.str.4199, 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 %then6077, label %else6078 -then6077: + br i1 %t11, label %then6446, label %else6447 +then6446: %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 %range6080, label %inrange6081 -range6080: - call void @finch_panic_index(ptr @.str.4032, i64 3262, i64 0, i64 %t14) + br i1 %t15, label %range6449, label %inrange6450 +range6449: + call void @finch_panic_index(ptr @.str.4200, i64 3528, i64 0, i64 %t14) unreachable -inrange6081: +inrange6450: %t16 = extractvalue { ptr, i64, i64 } %t13, 0 %t17 = getelementptr inbounds %S.ast.Type, ptr %t16, i64 0 %t18 = load %S.ast.Type, ptr %t17 store %S.ast.Type %t18, ptr %a19 call void @finch.copy.S_ast_Type(ptr %a20, ptr %a19) %t21 = load %S.ast.Type, ptr %a20 + %t22 = load %S.ast.Type, ptr %a5 store %S.ast.Type %t21, ptr %a5 - 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 %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.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.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.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 - store %S.ast.Node %t37, ptr %a38 - store %S.gen.Val zeroinitializer, ptr %a39 - %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.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 %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) - store %S.gen.Val %t48, ptr %a39 - %t49 = getelementptr inbounds %S.gen.Val, ptr %a39, i32 0, i32 1 - %t50 = load %S.ast.Type, ptr %t49 - store %S.ast.Type %t50, ptr %a51 - 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 %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 %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.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 - %t65 = load %S.gen.Val, ptr %a39 - %t66 = call { ptr, i64, i64 } @finch.gen.own(ptr %t64, %S.gen.Val %t65) - %t67 = load i64, ptr %t63 - %t68 = add i64 %t67, 1 - call void @finch_arr_reserve(ptr %a28, i64 %t68, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t69 = load ptr, ptr %a28 - %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.step6087 -each.step6087: - %t71 = load i64, ptr %a30 - %t72 = add i64 %t71, 1 - store i64 %t72, ptr %a30 - 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 - %t76 = getelementptr inbounds { ptr, i64, i64 }, ptr %a28, i32 0, i32 1 - %t77 = load i64, ptr %t76 - 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.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 %then6092, label %endif6094 -then6092: - %t85 = load ptr, ptr %a1 - %t86 = load { ptr, i64, i64 }, ptr %a80 - 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.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 - %t96 = load %S.ast.Type, ptr %a5 - %t97 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t95, %S.ast.Type %t96) - store { ptr, i64, i64 } %t94, 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 = call { ptr, i64, i64 } @finch.gen.op(ptr %t85, { ptr, i64, i64 } %t101) - 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.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.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 %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.cond6095 -for.cond6095: - %t118 = load i64, ptr %a117 - %t119 = icmp slt i64 %t118, %t116 - 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.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.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 - store { ptr, i64, i64 } %t131, 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.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 - call void @finch_str_from_int(ptr %a142, i64 %t141) - %t143 = load { ptr, i64, i64 }, ptr %a142 - store { ptr, i64, i64 } %t140, ptr %a145 - store { ptr, i64, i64 } %t143, ptr %a146 - call void @finch_str_concat(ptr %a144, ptr %a145, ptr %a146) - %t147 = load { ptr, i64, i64 }, ptr %a144 - %t148 = call { ptr, i64, i64 } @finch.gen.op(ptr %t120, { ptr, i64, i64 } %t147) - store { ptr, i64, i64 } %t148, ptr %a149 - %t150 = load ptr, ptr %a1 - %t151 = load ptr, ptr %a1 - %t152 = load %S.ast.Type, ptr %a5 - %t153 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t151, %S.ast.Type %t152) - %t154 = load i64, ptr %a117 - %t155 = load { ptr, i64, i64 }, ptr %a28 - %t156 = extractvalue { ptr, i64, i64 } %t155, 1 - %t157 = icmp uge i64 %t154, %t156 - br i1 %t157, label %range6099, label %inrange6100 -range6099: - call void @finch_panic_index(ptr @.str.4044, i64 3287, i64 %t154, i64 %t156) + store %S.ast.Type %t22, ptr %a23 + call void @finch.drop.S_ast_Type(ptr %a23) + br label %endif6448 +else6447: + %t24 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t25 = getelementptr inbounds { ptr, i64, i64 }, ptr %t24, i32 0, i32 1 + %t26 = load i64, ptr %t25 + %t27 = icmp eq i64 %t26, 0 + br i1 %t27, label %then6451, label %endif6453 +then6451: + %t28 = load ptr, ptr %a1 + %t29 = load %S.ast.Node, ptr %a2 + call void @finch.gen.fail(ptr %t28, %S.ast.Node %t29, { ptr, i64, i64 } { ptr @.str.4201, i64 47, i64 0 }) + br label %endif6453 +endif6453: + br label %endif6448 +endif6448: + store { ptr, i64, i64 } zeroinitializer, ptr %a30 + %t31 = load ptr, ptr %a1 + %t32 = icmp eq ptr %t31, null + br i1 %t32, label %panic6454, label %ok6455 +panic6454: + call void @finch_panic(ptr @.str.4202, i64 3533, ptr @.str.4203) unreachable -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.step6097 -for.step6097: - %t162 = load i64, ptr %a117 - %t163 = add i64 %t162, 1 - store i64 %t163, ptr %a117 - br label %for.cond6095 -for.end6098: - %t164 = load ptr, ptr %a1 - %t165 = load { ptr, i64, i64 }, ptr %a81 - 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.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.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.4048, i64 6, i64 0 }, ptr %a184 +ok6455: + %t33 = getelementptr inbounds %S.gen.Gen, ptr %t31, i32 0, i32 11 + %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t33, i32 0, i32 1 + %t35 = load i64, ptr %t34 + store i64 %t35, ptr %a36 + %t37 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + store i64 0, ptr %a38 + br label %each.cond6456 +each.cond6456: + %t39 = getelementptr inbounds { ptr, i64, i64 }, ptr %t37, i32 0, i32 1 + %t40 = load i64, ptr %t39 + %t41 = load i64, ptr %a38 + %t42 = icmp slt i64 %t41, %t40 + br i1 %t42, label %each.body6457, label %each.end6459 +each.body6457: + %t43 = load ptr, ptr %t37 + %t44 = getelementptr inbounds %S.ast.Node, ptr %t43, i64 %t41 + %t45 = load %S.ast.Node, ptr %t44 + store %S.ast.Node %t45, ptr %a46 + store %S.gen.Val zeroinitializer, ptr %a47 + %t48 = getelementptr inbounds %S.ast.Type, ptr %a5, i32 0, i32 0 + %t49 = load { ptr, i64, i64 }, ptr %t48 + store { ptr, i64, i64 } %t49, ptr %a50 + store { ptr, i64, i64 } { ptr @.str.4204, i64 4, i64 0 }, ptr %a51 + %t52 = call i32 @finch_str_eq(ptr %a50, ptr %a51) + %t53 = icmp ne i32 %t52, 0 + br i1 %t53, label %then6460, label %else6461 +then6460: + %t54 = load ptr, ptr %a1 + %t55 = load %S.ast.Node, ptr %a46 + %t56 = call %S.gen.Val @finch.gen.expr(ptr %t54, %S.ast.Node %t55) + %t57 = load %S.gen.Val, ptr %a47 + store %S.gen.Val %t56, ptr %a47 + store %S.gen.Val %t57, ptr %a58 + call void @finch.drop.S_gen_Val(ptr %a58) + %t59 = getelementptr inbounds %S.gen.Val, ptr %a47, i32 0, i32 1 + %t60 = load %S.ast.Type, ptr %t59 + store %S.ast.Type %t60, ptr %a61 + call void @finch.copy.S_ast_Type(ptr %a62, ptr %a61) + %t63 = load %S.ast.Type, ptr %a62 + %t64 = load %S.ast.Type, ptr %a5 + store %S.ast.Type %t63, ptr %a5 + store %S.ast.Type %t64, ptr %a65 + call void @finch.drop.S_ast_Type(ptr %a65) + br label %endif6462 +else6461: + %t66 = load ptr, ptr %a1 + %t67 = load %S.ast.Node, ptr %a46 + %t68 = load %S.ast.Type, ptr %a5 + %t69 = call %S.gen.Val @finch.gen.exprWant(ptr %t66, %S.ast.Node %t67, %S.ast.Type %t68) + %t70 = load %S.gen.Val, ptr %a47 + store %S.gen.Val %t69, ptr %a47 + store %S.gen.Val %t70, ptr %a71 + call void @finch.drop.S_gen_Val(ptr %a71) + br label %endif6462 +endif6462: + %t72 = load ptr, ptr %a1 + %t73 = load %S.gen.Val, ptr %a47 + %t74 = load %S.ast.Type, ptr %a5 + %t75 = load %S.ast.Node, ptr %a46 + %t76 = call %S.gen.Val @finch.gen.coerce(ptr %t72, %S.gen.Val %t73, %S.ast.Type %t74, %S.ast.Node %t75, { ptr, i64, i64 } { ptr @.str.4205, i64 27, i64 0 }) + %t77 = load %S.gen.Val, ptr %a47 + store %S.gen.Val %t76, ptr %a47 + store %S.gen.Val %t77, ptr %a78 + call void @finch.drop.S_gen_Val(ptr %a78) + %t79 = getelementptr inbounds { ptr, i64, i64 }, ptr %a30, i32 0, i32 1 + %t80 = load ptr, ptr %a1 + %t81 = load %S.gen.Val, ptr %a47 + %t82 = call { ptr, i64, i64 } @finch.gen.own(ptr %t80, %S.gen.Val %t81) + %t83 = load i64, ptr %t79 + %t84 = add i64 %t83, 1 + call void @finch_arr_reserve(ptr %a30, i64 %t84, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t85 = load ptr, ptr %a30 + %t86 = getelementptr inbounds { ptr, i64, i64 }, ptr %t85, i64 %t83 + store { ptr, i64, i64 } %t82, ptr %t86 + store i64 %t84, ptr %t79 + %t87 = load ptr, ptr %a1 + %t88 = getelementptr inbounds { ptr, i64, i64 }, ptr %a30, i32 0, i32 1 + %t89 = load i64, ptr %t88 + %t90 = sub i64 %t89, 1 + %t91 = load { ptr, i64, i64 }, ptr %a30 + %t92 = extractvalue { ptr, i64, i64 } %t91, 1 + %t93 = icmp uge i64 %t90, %t92 + br i1 %t93, label %range6463, label %inrange6464 +range6463: + call void @finch_panic_index(ptr @.str.4206, i64 3544, i64 %t90, i64 %t92) + unreachable +inrange6464: + %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 + %t100 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t99, 0 + %t101 = load %S.ast.Type, ptr %a5 + store %S.ast.Type %t101, ptr %a102 + call void @finch.copy.S_ast_Type(ptr %a103, ptr %a102) + %t104 = load %S.ast.Type, ptr %a103 + %t105 = insertvalue %S.gen.Val %t100, %S.ast.Type %t104, 1 + %t106 = insertvalue %S.gen.Val %t105, i1 true, 2 + call void @finch.gen.hold(ptr %t87, %S.gen.Val %t106) + store %S.gen.Val %t106, ptr %a107 + call void @finch.drop.S_gen_Val(ptr %a107) + call void @finch.drop.S_gen_Val(ptr %a47) + br label %each.step6458 +each.step6458: + %t108 = load i64, ptr %a38 + %t109 = add i64 %t108, 1 + store i64 %t109, ptr %a38 + br label %each.cond6456 +each.end6459: + %t110 = load ptr, ptr %a1 + %t111 = load i64, ptr %a36 + call void @finch.gen.heldEnd(ptr %t110, i64 %t111) + %t112 = load %S.ast.Type, ptr %a5 + %t113 = call %S.ast.Type @finch.ast.arrayOf(%S.ast.Type %t112) + store %S.ast.Type %t113, ptr %a114 + %t115 = getelementptr inbounds { ptr, i64, i64 }, ptr %a30, i32 0, i32 1 + %t116 = load i64, ptr %t115 + call void @finch_str_from_int(ptr %a117, i64 %t116) + %t118 = load { ptr, i64, i64 }, ptr %a117 + store { ptr, i64, i64 } %t118, ptr %a119 + store { ptr, i64, i64 } { ptr @.str.4207, i64 4, i64 0 }, ptr %a120 + %t121 = getelementptr inbounds { ptr, i64, i64 }, ptr %a30, i32 0, i32 1 + %t122 = load i64, ptr %t121 + %t123 = icmp sgt i64 %t122, 0 + br i1 %t123, label %then6465, label %endif6467 +then6465: + %t124 = load ptr, ptr %a1 + %t125 = load { ptr, i64, i64 }, ptr %a119 + store { ptr, i64, i64 } { ptr @.str.4208, i64 8, 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.4209, i64 2, i64 0 }, ptr %a132 + call void @finch_str_concat(ptr %a130, ptr %a131, ptr %a132) + store { ptr, i64, i64 } %t129, ptr %a133 + call void @finch_str_drop(ptr %a133) + %t134 = load { ptr, i64, i64 }, ptr %a130 + %t135 = load ptr, ptr %a1 + %t136 = load %S.ast.Type, ptr %a5 + %t137 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t135, %S.ast.Type %t136) + store { ptr, i64, i64 } %t134, ptr %a139 + store { ptr, i64, i64 } %t137, ptr %a140 + call void @finch_str_concat(ptr %a138, ptr %a139, ptr %a140) + store { ptr, i64, i64 } %t134, ptr %a141 + call void @finch_str_drop(ptr %a141) + store { ptr, i64, i64 } %t137, ptr %a142 + call void @finch_str_drop(ptr %a142) + %t143 = load { ptr, i64, i64 }, ptr %a138 + %t144 = call { ptr, i64, i64 } @finch.gen.op(ptr %t124, { ptr, i64, i64 } %t143) + store { ptr, i64, i64 } %t143, ptr %a145 + call void @finch_str_drop(ptr %a145) + store { ptr, i64, i64 } %t144, ptr %a146 + %t147 = load ptr, ptr %a1 + %t148 = load { ptr, i64, i64 }, ptr %a146 + store { ptr, i64, i64 } { ptr @.str.4210, i64 26, i64 0 }, 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.4211, i64 1, i64 0 }, ptr %a155 + call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155) + store { ptr, i64, i64 } %t152, ptr %a156 + call void @finch_str_drop(ptr %a156) + %t157 = load { ptr, i64, i64 }, ptr %a153 + %t158 = call { ptr, i64, i64 } @finch.gen.op(ptr %t147, { ptr, i64, i64 } %t157) + store { ptr, i64, i64 } %t157, ptr %a159 + call void @finch_str_drop(ptr %a159) + %t160 = load { ptr, i64, i64 }, ptr %a120 + store { ptr, i64, i64 } %t158, ptr %a120 + store { ptr, i64, i64 } %t160, ptr %a161 + call void @finch_str_drop(ptr %a161) + call void @finch_str_drop(ptr %a146) + br label %endif6467 +endif6467: + %t162 = getelementptr inbounds { ptr, i64, i64 }, ptr %a30, i32 0, i32 1 + %t163 = load i64, ptr %t162 + store i64 0, ptr %a164 + br label %for.cond6468 +for.cond6468: + %t165 = load i64, ptr %a164 + %t166 = icmp slt i64 %t165, %t163 + br i1 %t166, label %for.body6469, label %for.end6471 +for.body6469: + %t167 = load ptr, ptr %a1 + %t168 = load ptr, ptr %a1 + %t169 = load %S.ast.Type, ptr %a5 + %t170 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t168, %S.ast.Type %t169) + store { ptr, i64, i64 } { ptr @.str.4212, i64 23, i64 0 }, ptr %a172 + store { ptr, i64, i64 } %t170, ptr %a173 + call void @finch_str_concat(ptr %a171, ptr %a172, ptr %a173) + store { ptr, i64, i64 } %t170, ptr %a174 + call void @finch_str_drop(ptr %a174) + %t175 = load { ptr, i64, i64 }, ptr %a171 + store { ptr, i64, i64 } %t175, ptr %a177 + store { ptr, i64, i64 } { ptr @.str.4213, i64 6, i64 0 }, ptr %a178 + call void @finch_str_concat(ptr %a176, ptr %a177, ptr %a178) + store { ptr, i64, i64 } %t175, ptr %a179 + call void @finch_str_drop(ptr %a179) + %t180 = load { ptr, i64, i64 }, ptr %a176 + %t181 = load { ptr, i64, i64 }, ptr %a120 + store { ptr, i64, i64 } %t180, ptr %a183 + store { ptr, i64, i64 } %t181, 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 - store { ptr, i64, i64 } %t185, ptr %a188 - store { ptr, i64, i64 } %t186, ptr %a189 + store { ptr, i64, i64 } %t180, ptr %a185 + call void @finch_str_drop(ptr %a185) + %t186 = load { ptr, i64, i64 }, ptr %a182 + store { ptr, i64, i64 } %t186, ptr %a188 + store { ptr, i64, i64 } { ptr @.str.4214, i64 6, i64 0 }, ptr %a189 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.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.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.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 - store { ptr, i64, i64 } %t206, ptr %a209 - store { ptr, i64, i64 } %t207, ptr %a210 - 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.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) - store { ptr, i64, i64 } %t216, ptr %a217 - %t218 = load { ptr, i64, i64 }, ptr %a217 - store { ptr, i64, i64 } %t218, ptr %a219 - call void @finch_str_copy(ptr %a220, ptr %a219) - %t221 = load { ptr, i64, i64 }, ptr %a220 - %t222 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t221, 0 - %t223 = load %S.ast.Type, ptr %a75 - store %S.ast.Type %t223, ptr %a224 - call void @finch.copy.S_ast_Type(ptr %a225, ptr %a224) - %t226 = load %S.ast.Type, ptr %a225 - %t227 = insertvalue %S.gen.Val %t222, %S.ast.Type %t226, 1 - %t228 = insertvalue %S.gen.Val %t227, i1 true, 2 - ret %S.gen.Val %t228 + store { ptr, i64, i64 } %t186, ptr %a190 + call void @finch_str_drop(ptr %a190) + %t191 = load { ptr, i64, i64 }, ptr %a187 + %t192 = load i64, ptr %a164 + call void @finch_str_from_int(ptr %a193, i64 %t192) + %t194 = load { ptr, i64, i64 }, ptr %a193 + store { ptr, i64, i64 } %t191, ptr %a196 + store { ptr, i64, i64 } %t194, ptr %a197 + call void @finch_str_concat(ptr %a195, ptr %a196, ptr %a197) + store { ptr, i64, i64 } %t191, ptr %a198 + call void @finch_str_drop(ptr %a198) + store { ptr, i64, i64 } %t194, ptr %a199 + call void @finch_str_drop(ptr %a199) + %t200 = load { ptr, i64, i64 }, ptr %a195 + %t201 = call { ptr, i64, i64 } @finch.gen.op(ptr %t167, { ptr, i64, i64 } %t200) + store { ptr, i64, i64 } %t200, ptr %a202 + call void @finch_str_drop(ptr %a202) + store { ptr, i64, i64 } %t201, ptr %a203 + %t204 = load ptr, ptr %a1 + %t205 = load ptr, ptr %a1 + %t206 = load %S.ast.Type, ptr %a5 + %t207 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t205, %S.ast.Type %t206) + %t208 = load i64, ptr %a164 + %t209 = load { ptr, i64, i64 }, ptr %a30 + %t210 = extractvalue { ptr, i64, i64 } %t209, 1 + %t211 = icmp uge i64 %t208, %t210 + br i1 %t211, label %range6472, label %inrange6473 +range6472: + call void @finch_panic_index(ptr @.str.4215, i64 3556, i64 %t208, i64 %t210) + unreachable +inrange6473: + %t212 = extractvalue { ptr, i64, i64 } %t209, 0 + %t213 = getelementptr inbounds { ptr, i64, i64 }, ptr %t212, i64 %t208 + %t214 = load { ptr, i64, i64 }, ptr %t213 + %t215 = load { ptr, i64, i64 }, ptr %a203 + call void @finch.gen.store(ptr %t204, { ptr, i64, i64 } %t207, { ptr, i64, i64 } %t214, { ptr, i64, i64 } %t215) + store { ptr, i64, i64 } %t207, ptr %a216 + call void @finch_str_drop(ptr %a216) + call void @finch_str_drop(ptr %a203) + br label %for.step6470 +for.step6470: + %t217 = load i64, ptr %a164 + %t218 = add i64 %t217, 1 + store i64 %t218, ptr %a164 + br label %for.cond6468 +for.end6471: + %t219 = load ptr, ptr %a1 + %t220 = load { ptr, i64, i64 }, ptr %a120 + store { ptr, i64, i64 } { ptr @.str.4216, i64 41, i64 0 }, ptr %a222 + store { ptr, i64, i64 } %t220, ptr %a223 + call void @finch_str_concat(ptr %a221, ptr %a222, ptr %a223) + %t224 = load { ptr, i64, i64 }, ptr %a221 + store { ptr, i64, i64 } %t224, ptr %a226 + store { ptr, i64, i64 } { ptr @.str.4217, i64 3, i64 0 }, ptr %a227 + call void @finch_str_concat(ptr %a225, ptr %a226, ptr %a227) + store { ptr, i64, i64 } %t224, ptr %a228 + call void @finch_str_drop(ptr %a228) + %t229 = load { ptr, i64, i64 }, ptr %a225 + %t230 = call { ptr, i64, i64 } @finch.gen.op(ptr %t219, { ptr, i64, i64 } %t229) + store { ptr, i64, i64 } %t229, ptr %a231 + call void @finch_str_drop(ptr %a231) + store { ptr, i64, i64 } %t230, ptr %a232 + %t233 = load ptr, ptr %a1 + %t234 = load { ptr, i64, i64 }, ptr %a232 + store { ptr, i64, i64 } { ptr @.str.4218, i64 30, i64 0 }, ptr %a236 + store { ptr, i64, i64 } %t234, ptr %a237 + call void @finch_str_concat(ptr %a235, ptr %a236, ptr %a237) + %t238 = load { ptr, i64, i64 }, ptr %a235 + store { ptr, i64, i64 } %t238, ptr %a240 + store { ptr, i64, i64 } { ptr @.str.4219, i64 6, i64 0 }, ptr %a241 + call void @finch_str_concat(ptr %a239, ptr %a240, ptr %a241) + store { ptr, i64, i64 } %t238, ptr %a242 + call void @finch_str_drop(ptr %a242) + %t243 = load { ptr, i64, i64 }, ptr %a239 + %t244 = load { ptr, i64, i64 }, ptr %a119 + store { ptr, i64, i64 } %t243, ptr %a246 + store { ptr, i64, i64 } %t244, ptr %a247 + call void @finch_str_concat(ptr %a245, ptr %a246, ptr %a247) + store { ptr, i64, i64 } %t243, ptr %a248 + call void @finch_str_drop(ptr %a248) + %t249 = load { ptr, i64, i64 }, ptr %a245 + store { ptr, i64, i64 } %t249, ptr %a251 + store { ptr, i64, i64 } { ptr @.str.4220, i64 3, i64 0 }, ptr %a252 + call void @finch_str_concat(ptr %a250, ptr %a251, ptr %a252) + store { ptr, i64, i64 } %t249, ptr %a253 + call void @finch_str_drop(ptr %a253) + %t254 = load { ptr, i64, i64 }, ptr %a250 + %t255 = call { ptr, i64, i64 } @finch.gen.op(ptr %t233, { ptr, i64, i64 } %t254) + store { ptr, i64, i64 } %t254, ptr %a256 + call void @finch_str_drop(ptr %a256) + store { ptr, i64, i64 } %t255, ptr %a257 + %t258 = load ptr, ptr %a1 + %t259 = load { ptr, i64, i64 }, ptr %a257 + store { ptr, i64, i64 } { ptr @.str.4221, i64 30, 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.4222, i64 6, i64 0 }, ptr %a266 + call void @finch_str_concat(ptr %a264, ptr %a265, ptr %a266) + store { ptr, i64, i64 } %t263, ptr %a267 + call void @finch_str_drop(ptr %a267) + %t268 = load { ptr, i64, i64 }, ptr %a264 + %t269 = load { ptr, i64, i64 }, ptr %a119 + store { ptr, i64, i64 } %t268, ptr %a271 + store { ptr, i64, i64 } %t269, ptr %a272 + call void @finch_str_concat(ptr %a270, ptr %a271, ptr %a272) + store { ptr, i64, i64 } %t268, ptr %a273 + call void @finch_str_drop(ptr %a273) + %t274 = load { ptr, i64, i64 }, ptr %a270 + store { ptr, i64, i64 } %t274, ptr %a276 + store { ptr, i64, i64 } { ptr @.str.4223, i64 3, i64 0 }, ptr %a277 + call void @finch_str_concat(ptr %a275, ptr %a276, ptr %a277) + store { ptr, i64, i64 } %t274, ptr %a278 + call void @finch_str_drop(ptr %a278) + %t279 = load { ptr, i64, i64 }, ptr %a275 + %t280 = call { ptr, i64, i64 } @finch.gen.op(ptr %t258, { ptr, i64, i64 } %t279) + store { ptr, i64, i64 } %t279, ptr %a281 + call void @finch_str_drop(ptr %a281) + store { ptr, i64, i64 } %t280, ptr %a282 + %t283 = load { ptr, i64, i64 }, ptr %a282 + store { ptr, i64, i64 } %t283, ptr %a284 + call void @finch_str_copy(ptr %a285, ptr %a284) + %t286 = load { ptr, i64, i64 }, ptr %a285 + %t287 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t286, 0 + %t288 = load %S.ast.Type, ptr %a114 + store %S.ast.Type %t288, ptr %a289 + call void @finch.copy.S_ast_Type(ptr %a290, ptr %a289) + %t291 = load %S.ast.Type, ptr %a290 + %t292 = insertvalue %S.gen.Val %t287, %S.ast.Type %t291, 1 + %t293 = insertvalue %S.gen.Val %t292, i1 true, 2 + call void @finch_str_drop(ptr %a282) + call void @finch_str_drop(ptr %a257) + call void @finch_str_drop(ptr %a232) + call void @finch_str_drop(ptr %a120) + call void @finch_str_drop(ptr %a119) + call void @finch.drop.S_ast_Type(ptr %a114) + call void @finch.drop.arr_str(ptr %a30) + call void @finch.drop.S_ast_Type(ptr %a5) + ret %S.gen.Val %t293 } define internal void @finch.copy.S_gen_Place(ptr %dst, ptr %src) { @@ -55030,70 +65174,77 @@ entry: %a24 = alloca { ptr, i64, i64 }, align 16 %a25 = alloca { ptr, i64, i64 }, align 16 %a26 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca %S.gen.Ref, align 16 - %a40 = alloca %S.gen.Place, align 16 - %a41 = alloca %S.gen.Place, align 16 + %a27 = alloca { ptr, i64, i64 }, align 16 + %a29 = alloca { ptr, i64, i64 }, align 16 + %a34 = alloca %S.gen.Ref, align 16 + %a42 = alloca %S.gen.Place, align 16 + %a43 = alloca %S.gen.Place, 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.4053, i64 3, i64 0 }, ptr %a7 + store { ptr, i64, i64 } { ptr @.str.4224, 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.from6101 -logic.from6101: - br i1 %t9, label %logic.rhs6102, label %logic.end6103 -logic.rhs6102: + br label %logic.from6474 +logic.from6474: + br i1 %t9, label %logic.rhs6475, label %logic.end6476 +logic.rhs6475: %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.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: + br label %logic.rend6477 +logic.rend6477: + br label %logic.end6476 +logic.end6476: + %t15 = phi i1 [ false, %logic.from6474 ], [ %t14, %logic.rend6477 ] + br i1 %t15, label %then6478, label %endif6480 +then6478: %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.4054, i64 28, i64 0 }, ptr %a21 + store { ptr, i64, i64 } { ptr @.str.4225, 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.4055, i64 1, i64 0 }, ptr %a26 + store { ptr, i64, i64 } { ptr @.str.4226, 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 %endif6107 -endif6107: - %t28 = load ptr, ptr %a1 - %t29 = load %S.ast.Node, ptr %a2 - %t30 = load i1, ptr %a3 - %t31 = call %S.gen.Ref @finch.gen.ref(ptr %t28, %S.ast.Node %t29, i1 %t30) - store %S.gen.Ref %t31, ptr %a32 - %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 %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.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 - call void @finch.copy.S_gen_Place(ptr %a41, ptr %a40) - %t42 = load %S.gen.Place, ptr %a41 - ret %S.gen.Place %t42 + store { ptr, i64, i64 } %t23, ptr %a27 + call void @finch_str_drop(ptr %a27) + %t28 = load { ptr, i64, i64 }, ptr %a24 + call void @finch.gen.fail(ptr %t16, %S.ast.Node %t17, { ptr, i64, i64 } %t28) + store { ptr, i64, i64 } %t28, ptr %a29 + call void @finch_str_drop(ptr %a29) + br label %endif6480 +endif6480: + %t30 = load ptr, ptr %a1 + %t31 = load %S.ast.Node, ptr %a2 + %t32 = load i1, ptr %a3 + %t33 = call %S.gen.Ref @finch.gen.ref(ptr %t30, %S.ast.Node %t31, i1 %t32) + store %S.gen.Ref %t33, ptr %a34 + %t35 = getelementptr inbounds %S.gen.Ref, ptr %a34, i32 0, i32 0 + %t36 = load i1, ptr %t35 + %t37 = xor i1 %t36, true + br i1 %t37, label %then6481, label %endif6483 +then6481: + %t38 = load ptr, ptr %a1 + %t39 = load %S.ast.Node, ptr %a2 + call void @finch.gen.fail(ptr %t38, %S.ast.Node %t39, { ptr, i64, i64 } { ptr @.str.4227, i64 60, i64 0 }) + br label %endif6483 +endif6483: + %t40 = getelementptr inbounds %S.gen.Ref, ptr %a34, i32 0, i32 1 + %t41 = load %S.gen.Place, ptr %t40 + store %S.gen.Place %t41, ptr %a42 + call void @finch.copy.S_gen_Place(ptr %a43, ptr %a42) + %t44 = load %S.gen.Place, ptr %a43 + call void @finch.drop.S_gen_Ref(ptr %a34) + ret %S.gen.Place %t44 } define internal void @finch.copy.S_cimport_CConst(ptr %dst, ptr %src) { @@ -55134,93 +65285,112 @@ entry: %a110 = alloca { ptr, i64, i64 }, align 16 %a113 = alloca { ptr, i64, i64 }, align 16 %a114 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 + %a118 = alloca { ptr, i64, i64 }, align 16 + %a121 = 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 - %a128 = 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 - %a147 = 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 - %a170 = alloca %S.ast.Type, 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 i64, align 16 - %a184 = alloca i64, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a223 = 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 + %a137 = alloca { ptr, i64, i64 }, align 16 + %a140 = alloca { ptr, i64, i64 }, align 16 + %a153 = 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 + %a176 = alloca %S.ast.Type, align 16 + %a183 = alloca { ptr, i64, i64 }, align 16 + %a184 = alloca { ptr, i64, i64 }, align 16 + %a185 = alloca { ptr, i64, i64 }, align 16 + %a187 = alloca i64, align 16 + %a190 = alloca i64, align 16 + %a195 = alloca { ptr, i64, i64 }, align 16 + %a196 = alloca { ptr, i64, i64 }, align 16 + %a200 = alloca { ptr, i64, i64 }, align 16 + %a210 = alloca { ptr, i64, i64 }, align 16 + %a211 = alloca { ptr, i64, i64 }, align 16 + %a212 = 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 %a228 = alloca { ptr, i64, i64 }, align 16 %a229 = alloca { ptr, i64, i64 }, align 16 %a230 = alloca { ptr, i64, i64 }, align 16 + %a231 = 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 %a239 = alloca { ptr, i64, i64 }, align 16 %a240 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca %S.ast.Type, align 16 - %a246 = alloca %S.ast.Type, 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 + %a249 = alloca { ptr, i64, i64 }, align 16 + %a250 = alloca { ptr, i64, i64 }, align 16 + %a251 = alloca { ptr, i64, i64 }, align 16 + %a255 = alloca %S.ast.Type, align 16 + %a256 = alloca %S.ast.Type, 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 + %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 %a286 = alloca { ptr, i64, i64 }, align 16 %a287 = alloca { ptr, i64, i64 }, align 16 %a288 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca %S.gen.Var, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 + %a289 = alloca { ptr, i64, i64 }, align 16 + %a291 = alloca { ptr, i64, i64 }, align 16 + %a296 = alloca { ptr, i64, i64 }, align 16 + %a297 = alloca { ptr, i64, i64 }, align 16 + %a298 = 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 %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 - %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 + %a309 = alloca %S.gen.Var, align 16 %a320 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 + %a321 = 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 + %a328 = 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 + %a333 = alloca { ptr, i64, i64 }, align 16 + %a334 = alloca { ptr, i64, i64 }, align 16 + %a335 = 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 + %a348 = alloca { ptr, i64, i64 }, align 16 + %a352 = alloca { ptr, i64, i64 }, align 16 + %a353 = alloca { ptr, i64, i64 }, align 16 + %a358 = alloca %S.ast.Type, align 16 + %a359 = alloca %S.ast.Type, 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 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.4057, i64 3, i64 0 }, ptr %a7 + store { ptr, i64, i64 } { ptr @.str.4228, 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 %then6111, label %endif6113 -then6111: + br i1 %t9, label %then6484, label %endif6486 +then6484: %t10 = load ptr, ptr %a1 %t11 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 %t12 = load { ptr, i64, i64 }, ptr %t11 @@ -55228,53 +65398,53 @@ then6111: store i64 %t13, ptr %a14 %t15 = load i64, ptr %a14 %t16 = icmp slt i64 %t15, 0 - br label %logic.from6114 -logic.from6114: - br i1 %t16, label %logic.rhs6115, label %logic.end6116 -logic.rhs6115: + br label %logic.from6487 +logic.from6487: + br i1 %t16, label %logic.rhs6488, label %logic.end6489 +logic.rhs6488: %t17 = load ptr, ptr %a1 %t18 = icmp eq ptr %t17, null - br i1 %t18, label %panic6117, label %ok6118 -panic6117: - call void @finch_panic(ptr @.str.4058, i64 3311, ptr @.str.4059) + br i1 %t18, label %panic6490, label %ok6491 +panic6490: + call void @finch_panic(ptr @.str.4229, i64 3580, ptr @.str.4230) unreachable -ok6118: - %t19 = getelementptr inbounds %S.gen.Gen, ptr %t17, i32 0, i32 24 +ok6491: + %t19 = getelementptr inbounds %S.gen.Gen, ptr %t17, i32 0, i32 25 %t20 = getelementptr inbounds %S.cimport.CImports, ptr %t19, i32 0, i32 1 %t21 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 %t22 = load { ptr, i64, i64 }, ptr %t21 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.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: + br label %logic.rend6492 +logic.rend6492: + br label %logic.end6489 +logic.end6489: + %t26 = phi i1 [ false, %logic.from6487 ], [ %t25, %logic.rend6492 ] + br i1 %t26, label %then6493, label %endif6495 +then6493: %t27 = load ptr, ptr %a1 %t28 = icmp eq ptr %t27, null - br i1 %t28, label %panic6123, label %ok6124 -panic6123: - call void @finch_panic(ptr @.str.4060, i64 3312, ptr @.str.4061) + br i1 %t28, label %panic6496, label %ok6497 +panic6496: + call void @finch_panic(ptr @.str.4231, i64 3581, ptr @.str.4232) unreachable -ok6124: - %t29 = getelementptr inbounds %S.gen.Gen, ptr %t27, i32 0, i32 24 +ok6497: + %t29 = getelementptr inbounds %S.gen.Gen, ptr %t27, i32 0, i32 25 %t30 = getelementptr inbounds %S.cimport.CImports, ptr %t29, i32 0, i32 1 %t31 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 %t32 = load { ptr, i64, i64 }, ptr %t31 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.missing6125, label %map.found6126 -map.missing6125: + br i1 %t35, label %map.missing6498, label %map.found6499 +map.missing6498: 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.4062, i64 3312, ptr %a36) + call void @finch_map_missing(ptr @.str.4233, i64 3581, ptr %a36) unreachable -map.found6126: +map.found6499: %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 @@ -55286,45 +65456,47 @@ map.found6126: 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 %then6127, label %endif6129 -then6127: + br i1 %t48, label %then6500, label %endif6502 +then6500: %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.4063, i64 5, i64 0 }) + %t54 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4234, 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 + call void @finch.drop.S_cimport_CConst(ptr %a46) ret %S.gen.Ref %t57 -endif6129: +endif6502: %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.4064, i64 3, i64 0 }) + %t64 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4235, 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 + call void @finch.drop.S_cimport_CConst(ptr %a46) ret %S.gen.Ref %t67 -endif6122: +endif6495: %t68 = load i64, ptr %a14 %t69 = icmp slt i64 %t68, 0 - br label %logic.from6130 -logic.from6130: - br i1 %t69, label %logic.rhs6131, label %logic.end6132 -logic.rhs6131: + br label %logic.from6503 +logic.from6503: + br i1 %t69, label %logic.rhs6504, label %logic.end6505 +logic.rhs6504: %t70 = load ptr, ptr %a1 %t71 = icmp eq ptr %t70, null - br i1 %t71, label %panic6133, label %ok6134 -panic6133: - call void @finch_panic(ptr @.str.4065, i64 3319, ptr @.str.4066) + br i1 %t71, label %panic6506, label %ok6507 +panic6506: + call void @finch_panic(ptr @.str.4236, i64 3588, ptr @.str.4237) unreachable -ok6134: - %t72 = getelementptr inbounds %S.gen.Gen, ptr %t70, i32 0, i32 24 +ok6507: + %t72 = getelementptr inbounds %S.gen.Gen, ptr %t70, i32 0, i32 25 %t73 = getelementptr inbounds %S.cimport.CImports, ptr %t72, i32 0, i32 2 %t74 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 %t75 = load { ptr, i64, i64 }, ptr %t74 @@ -55332,437 +65504,480 @@ ok6134: %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.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: + br label %logic.rend6508 +logic.rend6508: + br label %logic.end6505 +logic.end6505: + %t80 = phi i1 [ false, %logic.from6503 ], [ %t79, %logic.rend6508 ] + br label %logic.from6509 +logic.from6509: + br i1 %t80, label %logic.rhs6510, label %logic.end6511 +logic.rhs6510: %t81 = load ptr, ptr %a1 %t82 = icmp eq ptr %t81, null - br i1 %t82, label %panic6139, label %ok6140 -panic6139: - call void @finch_panic(ptr @.str.4067, i64 3319, ptr @.str.4068) + br i1 %t82, label %panic6512, label %ok6513 +panic6512: + call void @finch_panic(ptr @.str.4238, i64 3588, ptr @.str.4239) unreachable -ok6140: - %t83 = getelementptr inbounds %S.gen.Gen, ptr %t81, i32 0, i32 24 +ok6513: + %t83 = getelementptr inbounds %S.gen.Gen, ptr %t81, i32 0, i32 25 %t84 = getelementptr inbounds %S.cimport.CImports, ptr %t83, i32 0, i32 0 - store { ptr, i64, i64 } { ptr @.str.4069, i64 7, i64 0 }, ptr %a85 + store { ptr, i64, i64 } { ptr @.str.4240, 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.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: + br label %logic.rend6514 +logic.rend6514: + br label %logic.end6511 +logic.end6511: + %t88 = phi i1 [ false, %logic.from6509 ], [ %t87, %logic.rend6514 ] + br label %logic.from6515 +logic.from6515: + br i1 %t88, label %logic.rhs6516, label %logic.end6517 +logic.rhs6516: %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.4070, i64 5, i64 0 }, ptr %a92 + store { ptr, i64, i64 } { ptr @.str.4241, 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.from6145 -logic.from6145: - br i1 %t94, label %logic.end6147, label %logic.rhs6146 -logic.rhs6146: + br label %logic.from6518 +logic.from6518: + br i1 %t94, label %logic.end6520, label %logic.rhs6519 +logic.rhs6519: %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.4071, i64 6, i64 0 }, ptr %a98 + store { ptr, i64, i64 } { ptr @.str.4242, 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.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: + br label %logic.rend6521 +logic.rend6521: + br label %logic.end6520 +logic.end6520: + %t101 = phi i1 [ true, %logic.from6518 ], [ %t100, %logic.rend6521 ] + br label %logic.from6522 +logic.from6522: + br i1 %t101, label %logic.end6524, label %logic.rhs6523 +logic.rhs6523: %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.4072, i64 6, i64 0 }, ptr %a105 + store { ptr, i64, i64 } { ptr @.str.4243, 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.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 + br label %logic.rend6525 +logic.rend6525: + br label %logic.end6524 +logic.end6524: + %t108 = phi i1 [ true, %logic.from6522 ], [ %t107, %logic.rend6525 ] + br label %logic.rend6526 +logic.rend6526: + br label %logic.end6517 +logic.end6517: + %t109 = phi i1 [ false, %logic.from6515 ], [ %t108, %logic.rend6526 ] + br i1 %t109, label %then6527, label %endif6529 +then6527: + store { ptr, i64, i64 } { ptr @.str.4244, 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.4074, i64 5, i64 0 }, ptr %a114 + store { ptr, i64, i64 } { ptr @.str.4245, 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 %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.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 %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 + br i1 %t116, label %then6530, label %else6531 +then6530: + %t117 = load { ptr, i64, i64 }, ptr %a110 + store { ptr, i64, i64 } { ptr @.str.4246, i64 1, i64 0 }, ptr %a110 + store { ptr, i64, i64 } %t117, ptr %a118 + call void @finch_str_drop(ptr %a118) + br label %endif6532 +else6531: + %t119 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t120 = load { ptr, i64, i64 }, ptr %t119 + store { ptr, i64, i64 } %t120, ptr %a121 + store { ptr, i64, i64 } { ptr @.str.4247, i64 6, i64 0 }, ptr %a122 + %t123 = call i32 @finch_str_eq(ptr %a121, ptr %a122) + %t124 = icmp ne i32 %t123, 0 + br i1 %t124, label %then6533, label %endif6535 +then6533: %t125 = load { ptr, i64, i64 }, ptr %a110 - 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.4079, i64 1, i64 0 }, ptr %a132 + store { ptr, i64, i64 } { ptr @.str.4248, i64 1, i64 0 }, ptr %a110 + store { ptr, i64, i64 } %t125, ptr %a126 + call void @finch_str_drop(ptr %a126) + br label %endif6535 +endif6535: + br label %endif6532 +endif6532: + %t127 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 + %t128 = load ptr, ptr %a1 + %t129 = load { ptr, i64, i64 }, ptr %a110 + store { ptr, i64, i64 } { ptr @.str.4249, i64 31, i64 0 }, 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 - %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.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 -endif6156: - %t139 = load i64, ptr %a14 - %t140 = icmp slt i64 %t139, 0 - 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 %panic6166, label %ok6167 -panic6166: - call void @finch_panic(ptr @.str.4081, i64 3328, ptr @.str.4082) + store { ptr, i64, i64 } %t133, ptr %a135 + store { ptr, i64, i64 } { ptr @.str.4250, i64 1, i64 0 }, ptr %a136 + call void @finch_str_concat(ptr %a134, ptr %a135, ptr %a136) + store { ptr, i64, i64 } %t133, ptr %a137 + call void @finch_str_drop(ptr %a137) + %t138 = load { ptr, i64, i64 }, ptr %a134 + %t139 = call { ptr, i64, i64 } @finch.gen.op(ptr %t128, { ptr, i64, i64 } %t138) + store { ptr, i64, i64 } %t138, ptr %a140 + call void @finch_str_drop(ptr %a140) + %t141 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t139, 0 + %t142 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4251, i64 3, i64 0 }) + %t143 = insertvalue %S.gen.Val %t141, %S.ast.Type %t142, 1 + %t144 = insertvalue %S.gen.Ref %t127, %S.gen.Val %t143, 2 + call void @finch_str_drop(ptr %a110) + ret %S.gen.Ref %t144 +endif6529: + %t145 = load i64, ptr %a14 + %t146 = icmp slt i64 %t145, 0 + br label %logic.from6536 +logic.from6536: + br i1 %t146, label %logic.rhs6537, label %logic.end6538 +logic.rhs6537: + %t147 = load ptr, ptr %a1 + %t148 = icmp eq ptr %t147, null + br i1 %t148, label %panic6539, label %ok6540 +panic6539: + call void @finch_panic(ptr @.str.4252, i64 3597, ptr @.str.4253) unreachable -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 - %t146 = load { ptr, i64, i64 }, ptr %t145 - 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.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 %panic6172, label %ok6173 -panic6172: - call void @finch_panic(ptr @.str.4083, i64 3329, ptr @.str.4084) +ok6540: + %t149 = getelementptr inbounds %S.gen.Gen, ptr %t147, i32 0, i32 25 + %t150 = getelementptr inbounds %S.cimport.CImports, ptr %t149, i32 0, i32 2 + %t151 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t152 = load { ptr, i64, i64 }, ptr %t151 + store { ptr, i64, i64 } %t152, ptr %a153 + %t154 = call i64 @finch_map_find(ptr %t150, ptr %a153, 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) + %t155 = icmp sge i64 %t154, 0 + br label %logic.rend6541 +logic.rend6541: + br label %logic.end6538 +logic.end6538: + %t156 = phi i1 [ false, %logic.from6536 ], [ %t155, %logic.rend6541 ] + br i1 %t156, label %then6542, label %endif6544 +then6542: + %t157 = load ptr, ptr %a1 + %t158 = load ptr, ptr %a1 + %t159 = icmp eq ptr %t158, null + br i1 %t159, label %panic6545, label %ok6546 +panic6545: + call void @finch_panic(ptr @.str.4254, i64 3598, ptr @.str.4255) unreachable -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 - %t157 = load { ptr, i64, i64 }, ptr %t156 - 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.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.4085, i64 3329, ptr %a161) +ok6546: + %t160 = getelementptr inbounds %S.gen.Gen, ptr %t158, i32 0, i32 25 + %t161 = getelementptr inbounds %S.cimport.CImports, ptr %t160, i32 0, i32 2 + %t162 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t163 = load { ptr, i64, i64 }, ptr %t162 + store { ptr, i64, i64 } %t163, ptr %a164 + %t165 = call i64 @finch_map_find(ptr %t161, ptr %a164, 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) + %t166 = icmp slt i64 %t165, 0 + br i1 %t166, label %map.missing6547, label %map.found6548 +map.missing6547: + store { ptr, i64, i64 } zeroinitializer, ptr %a167 + store { ptr, i64, i64 } %t163, ptr %a168 + call void @finch_buf_str(ptr %a167, ptr %a168, i32 1) + call void @finch_map_missing(ptr @.str.4256, i64 3598, ptr %a167) unreachable -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 - %t166 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t165, i32 0, i32 2 - %t167 = load %S.ast.Type, ptr %t166 - %t168 = load %S.ast.Node, ptr %a2 - %t169 = call %S.ast.Type @finch.gen.resolve(ptr %t151, %S.ast.Type %t167, %S.ast.Node %t168) - store %S.ast.Type %t169, ptr %a170 - %t171 = load ptr, ptr %a1 - %t172 = icmp eq ptr %t171, null - br i1 %t172, label %panic6176, label %ok6177 -panic6176: - call void @finch_panic(ptr @.str.4086, i64 3330, ptr @.str.4087) +map.found6548: + %t169 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t161, i32 0, i32 0 + %t170 = load ptr, ptr %t169 + %t171 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t170, i64 %t165 + %t172 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t171, i32 0, i32 2 + %t173 = load %S.ast.Type, ptr %t172 + %t174 = load %S.ast.Node, ptr %a2 + %t175 = call %S.ast.Type @finch.gen.resolve(ptr %t157, %S.ast.Type %t173, %S.ast.Node %t174) + store %S.ast.Type %t175, ptr %a176 + %t177 = load ptr, ptr %a1 + %t178 = icmp eq ptr %t177, null + br i1 %t178, label %panic6549, label %ok6550 +panic6549: + call void @finch_panic(ptr @.str.4257, i64 3599, ptr @.str.4258) unreachable -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.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 - store i64 -1, ptr %a181 - %t182 = load i64, ptr %t174 - %t183 = load ptr, ptr %t173 - store i64 0, ptr %a184 - br label %find.cond6178 -find.cond6178: - %t185 = load i64, ptr %a184 - %t186 = icmp slt i64 %t185, %t182 - 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.hit6180, label %find.next6181 -find.hit6180: - store i64 %t185, ptr %a181 - br label %find.end6182 -find.next6181: - %t193 = add i64 %t185, 1 - store i64 %t193, ptr %a184 - 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 %then6183, label %endif6185 -then6183: - %t197 = load ptr, ptr %a1 - %t198 = icmp eq ptr %t197, null - br i1 %t198, label %panic6186, label %ok6187 -panic6186: - call void @finch_panic(ptr @.str.4089, i64 3331, ptr @.str.4090) +ok6550: + %t179 = getelementptr inbounds %S.gen.Gen, ptr %t177, i32 0, i32 39 + %t180 = getelementptr inbounds { ptr, i64, i64 }, ptr %t179, i32 0, i32 1 + %t181 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t182 = load { ptr, i64, i64 }, ptr %t181 + store { ptr, i64, i64 } { ptr @.str.4259, i64 2, 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 i64 -1, ptr %a187 + %t188 = load i64, ptr %t180 + %t189 = load ptr, ptr %t179 + store i64 0, ptr %a190 + br label %find.cond6551 +find.cond6551: + %t191 = load i64, ptr %a190 + %t192 = icmp slt i64 %t191, %t188 + br i1 %t192, label %find.body6552, label %find.end6555 +find.body6552: + %t193 = getelementptr inbounds { ptr, i64, i64 }, ptr %t189, i64 %t191 + %t194 = load { ptr, i64, i64 }, ptr %t193 + store { ptr, i64, i64 } %t194, ptr %a195 + store { ptr, i64, i64 } %t186, ptr %a196 + %t197 = call i32 @finch_str_eq(ptr %a195, ptr %a196) + %t198 = icmp ne i32 %t197, 0 + br i1 %t198, label %find.hit6553, label %find.next6554 +find.hit6553: + store i64 %t191, ptr %a187 + br label %find.end6555 +find.next6554: + %t199 = add i64 %t191, 1 + store i64 %t199, ptr %a190 + br label %find.cond6551 +find.end6555: + store { ptr, i64, i64 } %t186, ptr %a200 + call void @finch_str_drop(ptr %a200) + %t201 = load i64, ptr %a187 + %t202 = icmp sge i64 %t201, 0 + %t203 = xor i1 %t202, true + br i1 %t203, label %then6556, label %endif6558 +then6556: + %t204 = load ptr, ptr %a1 + %t205 = icmp eq ptr %t204, null + br i1 %t205, label %panic6559, label %ok6560 +panic6559: + call void @finch_panic(ptr @.str.4260, i64 3600, ptr @.str.4261) unreachable -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.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 - %t207 = load i64, ptr %t200 - %t208 = add i64 %t207, 1 - call void @finch_arr_reserve(ptr %t199, i64 %t208, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t209 = load ptr, ptr %t199 - %t210 = getelementptr inbounds { ptr, i64, i64 }, ptr %t209, i64 %t207 - store { ptr, i64, i64 } %t206, ptr %t210 - store i64 %t208, ptr %t200 - %t211 = load ptr, ptr %a1 - %t212 = icmp eq ptr %t211, null - br i1 %t212, label %panic6188, label %ok6189 -panic6188: - call void @finch_panic(ptr @.str.4092, i64 3332, ptr @.str.4093) +ok6560: + %t206 = getelementptr inbounds %S.gen.Gen, ptr %t204, i32 0, i32 39 + %t207 = getelementptr inbounds { ptr, i64, i64 }, ptr %t206, i32 0, i32 1 + %t208 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t209 = load { ptr, i64, i64 }, ptr %t208 + store { ptr, i64, i64 } { ptr @.str.4262, i64 2, i64 0 }, ptr %a211 + store { ptr, i64, i64 } %t209, ptr %a212 + call void @finch_str_concat(ptr %a210, ptr %a211, ptr %a212) + %t213 = load { ptr, i64, i64 }, ptr %a210 + %t214 = load i64, ptr %t207 + %t215 = add i64 %t214, 1 + call void @finch_arr_reserve(ptr %t206, i64 %t215, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t216 = load ptr, ptr %t206 + %t217 = getelementptr inbounds { ptr, i64, i64 }, ptr %t216, i64 %t214 + store { ptr, i64, i64 } %t213, ptr %t217 + store i64 %t215, ptr %t207 + %t218 = load ptr, ptr %a1 + %t219 = icmp eq ptr %t218, null + br i1 %t219, label %panic6561, label %ok6562 +panic6561: + call void @finch_panic(ptr @.str.4263, i64 3601, ptr @.str.4264) unreachable -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.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.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 - %t226 = load %S.ast.Type, ptr %a170 - %t227 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t225, %S.ast.Type %t226) - store { ptr, i64, i64 } %t224, ptr %a229 - store { ptr, i64, i64 } %t227, ptr %a230 +ok6562: + %t220 = getelementptr inbounds %S.gen.Gen, ptr %t218, i32 0, i32 2 + %t221 = getelementptr inbounds { ptr, i64, i64 }, ptr %t220, i32 0, i32 1 + %t222 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t223 = load { ptr, i64, i64 }, ptr %t222 + store { ptr, i64, i64 } { ptr @.str.4265, i64 1, 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.4266, i64 19, i64 0 }, ptr %a230 call void @finch_str_concat(ptr %a228, ptr %a229, ptr %a230) - %t231 = load { ptr, i64, i64 }, ptr %a228 - %t232 = load i64, ptr %t214 - %t233 = add i64 %t232, 1 - call void @finch_arr_reserve(ptr %t213, i64 %t233, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t234 = load ptr, ptr %t213 - %t235 = getelementptr inbounds { ptr, i64, i64 }, ptr %t234, i64 %t232 - store { ptr, i64, i64 } %t231, ptr %t235 - store i64 %t233, ptr %t214 - 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.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 - %t243 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t242, 0 - %t244 = load %S.ast.Type, ptr %a170 - store %S.ast.Type %t244, ptr %a245 - call void @finch.copy.S_ast_Type(ptr %a246, ptr %a245) - %t247 = load %S.ast.Type, ptr %a246 - %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 -endif6171: - %t250 = load i64, ptr %a14 - %t251 = icmp slt i64 %t250, 0 - 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 %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.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.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 + store { ptr, i64, i64 } %t227, ptr %a231 + call void @finch_str_drop(ptr %a231) + %t232 = load { ptr, i64, i64 }, ptr %a228 + %t233 = load ptr, ptr %a1 + %t234 = load %S.ast.Type, ptr %a176 + %t235 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t233, %S.ast.Type %t234) + store { ptr, i64, i64 } %t232, ptr %a237 + store { ptr, i64, i64 } %t235, ptr %a238 + call void @finch_str_concat(ptr %a236, ptr %a237, ptr %a238) + store { ptr, i64, i64 } %t232, ptr %a239 + call void @finch_str_drop(ptr %a239) + store { ptr, i64, i64 } %t235, ptr %a240 + call void @finch_str_drop(ptr %a240) + %t241 = load { ptr, i64, i64 }, ptr %a236 + %t242 = load i64, ptr %t221 + %t243 = add i64 %t242, 1 + call void @finch_arr_reserve(ptr %t220, i64 %t243, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t244 = load ptr, ptr %t220 + %t245 = getelementptr inbounds { ptr, i64, i64 }, ptr %t244, i64 %t242 + store { ptr, i64, i64 } %t241, ptr %t245 + store i64 %t243, ptr %t221 + br label %endif6558 +endif6558: + %t246 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 + %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.4267, i64 1, 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 + %t253 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t252, 0 + %t254 = load %S.ast.Type, ptr %a176 + store %S.ast.Type %t254, ptr %a255 + call void @finch.copy.S_ast_Type(ptr %a256, ptr %a255) + %t257 = load %S.ast.Type, ptr %a256 + %t258 = insertvalue %S.gen.Place %t253, %S.ast.Type %t257, 1 + %t259 = insertvalue %S.gen.Ref %t246, %S.gen.Place %t258, 1 + call void @finch.drop.S_ast_Type(ptr %a176) + ret %S.gen.Ref %t259 +endif6544: + %t260 = load i64, ptr %a14 + %t261 = icmp slt i64 %t260, 0 + br i1 %t261, label %then6563, label %endif6565 +then6563: + %t262 = load ptr, ptr %a1 + %t263 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t264 = load { ptr, i64, i64 }, ptr %t263 + %t265 = call i1 @finch.gen.imports(ptr %t262, { ptr, i64, i64 } %t264) + br i1 %t265, label %then6566, label %endif6568 +then6566: + %t266 = load ptr, ptr %a1 + %t267 = load %S.ast.Node, ptr %a2 %t268 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 %t269 = load { ptr, i64, i64 }, ptr %t268 - store { ptr, i64, i64 } %t267, ptr %a271 + store { ptr, i64, i64 } { ptr @.str.4268, i64 1, i64 0 }, 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.4099, i64 10, i64 0 }, ptr %a276 + store { ptr, i64, i64 } { ptr @.str.4269, i64 43, 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 %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.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 } %t273, ptr %a277 + call void @finch_str_drop(ptr %a277) + %t278 = load { ptr, i64, i64 }, ptr %a274 + %t279 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t280 = load { ptr, i64, i64 }, ptr %t279 + store { ptr, i64, i64 } %t278, ptr %a282 + store { ptr, i64, i64 } %t280, ptr %a283 + call void @finch_str_concat(ptr %a281, ptr %a282, ptr %a283) + store { ptr, i64, i64 } %t278, ptr %a284 + call void @finch_str_drop(ptr %a284) + %t285 = load { ptr, i64, i64 }, ptr %a281 store { ptr, i64, i64 } %t285, ptr %a287 - store { ptr, i64, i64 } { ptr @.str.4101, i64 1, i64 0 }, ptr %a288 + store { ptr, i64, i64 } { ptr @.str.4270, i64 10, 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 %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 = 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 - %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 + store { ptr, i64, i64 } %t285, ptr %a289 + call void @finch_str_drop(ptr %a289) + %t290 = load { ptr, i64, i64 }, ptr %a286 + call void @finch.gen.fail(ptr %t266, %S.ast.Node %t267, { ptr, i64, i64 } %t290) + store { ptr, i64, i64 } %t290, ptr %a291 + call void @finch_str_drop(ptr %a291) + br label %endif6568 +endif6568: + %t292 = load ptr, ptr %a1 + %t293 = load %S.ast.Node, ptr %a2 + %t294 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t295 = load { ptr, i64, i64 }, ptr %t294 + store { ptr, i64, i64 } { ptr @.str.4271, i64 28, i64 0 }, ptr %a297 + store { ptr, i64, i64 } %t295, ptr %a298 + call void @finch_str_concat(ptr %a296, ptr %a297, ptr %a298) + %t299 = load { ptr, i64, i64 }, ptr %a296 + store { ptr, i64, i64 } %t299, ptr %a301 + store { ptr, i64, i64 } { ptr @.str.4272, i64 1, i64 0 }, ptr %a302 + call void @finch_str_concat(ptr %a300, ptr %a301, ptr %a302) + store { ptr, i64, i64 } %t299, ptr %a303 + call void @finch_str_drop(ptr %a303) + %t304 = load { ptr, i64, i64 }, ptr %a300 + call void @finch.gen.fail(ptr %t292, %S.ast.Node %t293, { ptr, i64, i64 } %t304) + store { ptr, i64, i64 } %t304, ptr %a305 + call void @finch_str_drop(ptr %a305) + br label %endif6565 +endif6565: + %t306 = load ptr, ptr %a1 + %t307 = load i64, ptr %a14 + %t308 = call %S.gen.Var @finch.gen.varAt(ptr %t306, i64 %t307) + store %S.gen.Var %t308, ptr %a309 + %t310 = load ptr, ptr %a1 + %t311 = load %S.ast.Node, ptr %a2 + %t312 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 + %t313 = load i64, ptr %t312 + %t314 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t315 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i32 0, i32 1 + %t316 = load i64, ptr %t315 + %t317 = getelementptr inbounds %S.gen.Var, ptr %a309, i32 0, i32 1 + %t318 = load %S.ast.Type, ptr %t317 + %t319 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t318) + store { ptr, i64, i64 } { ptr @.str.4273, i64 9, i64 0 }, ptr %a321 + store { ptr, i64, i64 } %t319, ptr %a322 + call void @finch_str_concat(ptr %a320, ptr %a321, ptr %a322) + store { ptr, i64, i64 } %t319, ptr %a323 + call void @finch_str_drop(ptr %a323) + %t324 = load { ptr, i64, i64 }, ptr %a320 + store { ptr, i64, i64 } %t324, ptr %a326 + store { ptr, i64, i64 } { ptr @.str.4274, i64 1, i64 0 }, ptr %a327 + call void @finch_str_concat(ptr %a325, ptr %a326, ptr %a327) + store { ptr, i64, i64 } %t324, ptr %a328 + call void @finch_str_drop(ptr %a328) + %t329 = load { ptr, i64, i64 }, ptr %a325 + %t330 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t331 = load { ptr, i64, i64 }, ptr %t330 + store { ptr, i64, i64 } %t329, ptr %a333 + store { ptr, i64, i64 } %t331, ptr %a334 + call void @finch_str_concat(ptr %a332, ptr %a333, ptr %a334) + store { ptr, i64, i64 } %t329, ptr %a335 + call void @finch_str_drop(ptr %a335) + %t336 = load { ptr, i64, i64 }, ptr %a332 + store { ptr, i64, i64 } %t336, ptr %a338 + store { ptr, i64, i64 } { ptr @.str.4275, i64 4, i64 0 }, ptr %a339 + call void @finch_str_concat(ptr %a337, ptr %a338, ptr %a339) + store { ptr, i64, i64 } %t336, ptr %a340 + call void @finch_str_drop(ptr %a340) + %t341 = load { ptr, i64, i64 }, ptr %a337 + %t342 = getelementptr inbounds %S.gen.Var, ptr %a309, i32 0, i32 7 %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 + %t344 = getelementptr inbounds %S.gen.Var, ptr %a309, i32 0, i32 8 + %t345 = load i64, ptr %t344 + %t346 = getelementptr inbounds %S.gen.Var, ptr %a309, i32 0, i32 9 + %t347 = load i64, ptr %t346 + call void @finch.gen.noteRef(ptr %t310, %S.ast.Node %t311, i64 %t313, i64 %t316, { ptr, i64, i64 } %t341, { ptr, i64, i64 } %t343, i64 %t345, i64 %t347) + store { ptr, i64, i64 } %t341, ptr %a348 + call void @finch_str_drop(ptr %a348) + %t349 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 + %t350 = getelementptr inbounds %S.gen.Var, ptr %a309, i32 0, i32 2 + %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 + %t355 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t354, 0 + %t356 = getelementptr inbounds %S.gen.Var, ptr %a309, i32 0, i32 1 + %t357 = load %S.ast.Type, ptr %t356 + 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 + %t361 = insertvalue %S.gen.Place %t355, %S.ast.Type %t360, 1 + %t362 = insertvalue %S.gen.Ref %t349, %S.gen.Place %t361, 1 + call void @finch.drop.S_gen_Var(ptr %a309) + ret %S.gen.Ref %t362 +endif6486: + %t363 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 + %t364 = load { ptr, i64, i64 }, ptr %t363 + store { ptr, i64, i64 } %t364, ptr %a365 + store { ptr, i64, i64 } { ptr @.str.4276, i64 6, i64 0 }, ptr %a366 + %t367 = call i32 @finch_str_eq(ptr %a365, ptr %a366) + %t368 = icmp ne i32 %t367, 0 + br i1 %t368, label %then6569, label %endif6571 +then6569: + %t369 = load ptr, ptr %a1 + %t370 = load %S.ast.Node, ptr %a2 + %t371 = load i1, ptr %a3 + %t372 = call %S.gen.Ref @finch.gen.member(ptr %t369, %S.ast.Node %t370, i1 %t371) + ret %S.gen.Ref %t372 +endif6571: + %t373 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 + %t374 = load { ptr, i64, i64 }, ptr %t373 + store { ptr, i64, i64 } %t374, ptr %a375 + store { ptr, i64, i64 } { ptr @.str.4277, i64 5, i64 0 }, ptr %a376 + %t377 = call i32 @finch_str_eq(ptr %a375, ptr %a376) + %t378 = icmp ne i32 %t377, 0 + br i1 %t378, label %then6572, label %endif6574 +then6572: + %t379 = load ptr, ptr %a1 + %t380 = load %S.ast.Node, ptr %a2 + %t381 = load i1, ptr %a3 + %t382 = call %S.gen.Ref @finch.gen.index(ptr %t379, %S.ast.Node %t380, i1 %t381) + ret %S.gen.Ref %t382 +endif6574: + %t383 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 + %t384 = load ptr, ptr %a1 + %t385 = load %S.ast.Node, ptr %a2 + %t386 = call %S.gen.Val @finch.gen.expr(ptr %t384, %S.ast.Node %t385) + %t387 = insertvalue %S.gen.Ref %t383, %S.gen.Val %t386, 2 + ret %S.gen.Ref %t387 } define internal { ptr, i64, i64 } @finch.gen.llFloat({ ptr, i64, i64 } %p0) { @@ -55778,30 +65993,32 @@ entry: %a15 = alloca { ptr, i64, i64 }, align 16 %a16 = alloca { ptr, i64, i64 }, align 16 %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 %a21 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 + %a22 = alloca { ptr, i64, i64 }, align 16 + %a23 = alloca { ptr, i64, i64 }, align 16 %a28 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca i64, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 + %a29 = alloca { ptr, i64, i64 }, align 16 + %a30 = alloca { ptr, i64, i64 }, align 16 + %a32 = alloca i64, align 16 %a36 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 + %a37 = alloca { ptr, i64, i64 }, align 16 + %a38 = alloca { ptr, i64, i64 }, align 16 %a43 = 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 - %a51 = 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 + %a49 = 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 %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = 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 + %a65 = 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 store { ptr, i64, i64 } %p0, ptr %a1 %t2 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t2, ptr %a3 @@ -55810,81 +66027,89 @@ 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.4108, i64 1, i64 0 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.4279, 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 %then6202, label %endif6204 -then6202: + br i1 %t12, label %then6575, label %endif6577 +then6575: %t13 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.4109, i64 1, i64 0 }, ptr %a15 + store { ptr, i64, i64 } { ptr @.str.4280, 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 %endif6204 -endif6204: %t18 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t17, ptr %a6 store { ptr, i64, i64 } %t18, ptr %a19 - 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 %then6205, label %endif6207 -then6205: - %t25 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t25, ptr %a26 - 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 %then6208, label %endif6210 -then6208: - %t33 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t33, ptr %a34 - 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 %endif6210 -endif6210: - %t38 = load i64, ptr %a30 - %t39 = icmp slt i64 %t38, 0 - 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.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 -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.4117, i64 3369) - %t49 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } %t49, ptr %a51 - 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 - store { ptr, i64, i64 } %t54, ptr %a55 - %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.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 -endif6207: - %t65 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t65, ptr %a66 - call void @finch_str_copy(ptr %a67, ptr %a66) - %t68 = load { ptr, i64, i64 }, ptr %a67 - ret { ptr, i64, i64 } %t68 + call void @finch_str_drop(ptr %a19) + br label %endif6577 +endif6577: + %t20 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t20, ptr %a21 + store { ptr, i64, i64 } { ptr @.str.4282, i64 1, i64 0 }, ptr %a23 + %t24 = call i64 @finch_str_find(ptr %a21, ptr %a23) + %t25 = icmp sge i64 %t24, 0 + %t26 = xor i1 %t25, true + br i1 %t26, label %then6578, label %endif6580 +then6578: + %t27 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t27, ptr %a28 + store { ptr, i64, i64 } { ptr @.str.4284, i64 1, i64 0 }, ptr %a30 + %t31 = call i64 @finch_str_find(ptr %a28, ptr %a30) + store i64 %t31, ptr %a32 + %t33 = load i64, ptr %a32 + %t34 = icmp slt i64 %t33, 0 + br i1 %t34, label %then6581, label %endif6583 +then6581: + %t35 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t35, ptr %a36 + store { ptr, i64, i64 } { ptr @.str.4286, i64 1, i64 0 }, ptr %a38 + %t39 = call i64 @finch_str_find(ptr %a36, ptr %a38) + store i64 %t39, ptr %a32 + br label %endif6583 +endif6583: + %t40 = load i64, ptr %a32 + %t41 = icmp slt i64 %t40, 0 + br i1 %t41, label %then6584, label %endif6586 +then6584: + %t42 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t42, ptr %a44 + store { ptr, i64, i64 } { ptr @.str.4287, i64 2, 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_str_drop(ptr %a6) + ret { ptr, i64, i64 } %t46 +endif6586: + %t47 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t47, ptr %a48 + %t50 = load i64, ptr %a32 + call void @finch_str_sub(ptr %a49, ptr %a48, i64 0, i64 %t50, ptr @.str.4288, i64 3638) + %t51 = load { ptr, i64, i64 }, ptr %a49 + store { ptr, i64, i64 } %t51, ptr %a53 + store { ptr, i64, i64 } { ptr @.str.4289, i64 2, i64 0 }, ptr %a54 + call void @finch_str_concat(ptr %a52, ptr %a53, ptr %a54) + store { ptr, i64, i64 } %t51, ptr %a55 + call void @finch_str_drop(ptr %a55) + %t56 = load { ptr, i64, i64 }, ptr %a52 + %t57 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t57, ptr %a58 + %t60 = load i64, ptr %a32 + %t61 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 + %t62 = load i64, ptr %t61 + call void @finch_str_sub(ptr %a59, ptr %a58, i64 %t60, i64 %t62, ptr @.str.4290, i64 3638) + %t63 = load { ptr, i64, i64 }, ptr %a59 + store { ptr, i64, i64 } %t56, ptr %a65 + store { ptr, i64, i64 } %t63, ptr %a66 + call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) + store { ptr, i64, i64 } %t56, ptr %a67 + call void @finch_str_drop(ptr %a67) + store { ptr, i64, i64 } %t63, ptr %a68 + call void @finch_str_drop(ptr %a68) + %t69 = load { ptr, i64, i64 }, ptr %a64 + call void @finch_str_drop(ptr %a6) + ret { ptr, i64, i64 } %t69 +endif6580: + %t70 = load { ptr, i64, i64 }, ptr %a6 + ret { ptr, i64, i64 } %t70 } define internal i64 @finch.gen.enumNamed(ptr %p0, %S.ast.Node %p1) { @@ -55902,133 +66127,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.4120, i64 3, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.4291, 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.from6214 -logic.from6214: - br i1 %t8, label %logic.rhs6215, label %logic.end6216 -logic.rhs6215: + br label %logic.from6587 +logic.from6587: + br i1 %t8, label %logic.rhs6588, label %logic.end6589 +logic.rhs6588: %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.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: + br label %logic.rend6590 +logic.rend6590: + br label %logic.end6589 +logic.end6589: + %t14 = phi i1 [ false, %logic.from6587 ], [ %t13, %logic.rend6590 ] + br i1 %t14, label %then6591, label %endif6593 +then6591: %t15 = load ptr, ptr %a1 %t16 = load ptr, ptr %a1 %t17 = icmp eq ptr %t16, null - br i1 %t17, label %panic6221, label %ok6222 -panic6221: - call void @finch_panic(ptr @.str.4121, i64 3377, ptr @.str.4122) + br i1 %t17, label %panic6594, label %ok6595 +panic6594: + call void @finch_panic(ptr @.str.4292, i64 3646, ptr @.str.4293) unreachable -ok6222: - %t18 = getelementptr inbounds %S.gen.Gen, ptr %t16, i32 0, i32 13 +ok6595: + %t18 = getelementptr inbounds %S.gen.Gen, ptr %t16, i32 0, i32 14 %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 -endif6220: +endif6593: %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.4123, i64 6, i64 0 }, ptr %a26 + store { ptr, i64, i64 } { ptr @.str.4294, 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.from6223 -logic.from6223: - br i1 %t28, label %logic.rhs6224, label %logic.end6225 -logic.rhs6224: + br label %logic.from6596 +logic.from6596: + br i1 %t28, label %logic.rhs6597, label %logic.end6598 +logic.rhs6597: %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 %range6226, label %inrange6227 -range6226: - call void @finch_panic_index(ptr @.str.4124, i64 3379, i64 0, i64 %t31) + br i1 %t32, label %range6599, label %inrange6600 +range6599: + call void @finch_panic_index(ptr @.str.4295, i64 3648, i64 0, i64 %t31) unreachable -inrange6227: +inrange6600: %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.4125, i64 3, i64 0 }, ptr %a38 + store { ptr, i64, i64 } { ptr @.str.4296, 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.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: + br label %logic.rend6601 +logic.rend6601: + br label %logic.end6598 +logic.end6598: + %t41 = phi i1 [ false, %logic.from6596 ], [ %t40, %logic.rend6601 ] + br label %logic.from6602 +logic.from6602: + br i1 %t41, label %logic.rhs6603, label %logic.end6604 +logic.rhs6603: %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 %range6232, label %inrange6233 -range6232: - call void @finch_panic_index(ptr @.str.4126, i64 3379, i64 0, i64 %t45) + br i1 %t46, label %range6605, label %inrange6606 +range6605: + call void @finch_panic_index(ptr @.str.4297, i64 3648, i64 0, i64 %t45) unreachable -inrange6233: +inrange6606: %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.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: + br label %logic.rend6607 +logic.rend6607: + br label %logic.end6604 +logic.end6604: + %t53 = phi i1 [ false, %logic.from6602 ], [ %t52, %logic.rend6607 ] + br label %logic.from6608 +logic.from6608: + br i1 %t53, label %logic.rhs6609, label %logic.end6610 +logic.rhs6609: %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 %range6238, label %inrange6239 -range6238: - call void @finch_panic_index(ptr @.str.4127, i64 3379, i64 0, i64 %t57) + br i1 %t58, label %range6611, label %inrange6612 +range6611: + call void @finch_panic_index(ptr @.str.4298, i64 3648, i64 0, i64 %t57) unreachable -inrange6239: +inrange6612: %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.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: + br label %logic.rend6613 +logic.rend6613: + br label %logic.end6610 +logic.end6610: + %t64 = phi i1 [ false, %logic.from6608 ], [ %t63, %logic.rend6613 ] + br i1 %t64, label %then6614, label %endif6616 +then6614: %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 %range6244, label %inrange6245 -range6244: - call void @finch_panic_index(ptr @.str.4128, i64 3380, i64 0, i64 %t68) + br i1 %t69, label %range6617, label %inrange6618 +range6617: + call void @finch_panic_index(ptr @.str.4299, i64 3649, i64 0, i64 %t68) unreachable -inrange6245: +inrange6618: %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 @@ -56037,7 +66262,7 @@ inrange6245: %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 -endif6243: +endif6616: ret i64 -1 } @@ -56060,64 +66285,78 @@ entry: %a47 = alloca { ptr, i64, i64 }, align 16 %a48 = alloca { ptr, i64, i64 }, align 16 %a49 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 + %a50 = alloca { ptr, i64, i64 }, align 16 %a54 = alloca { ptr, i64, i64 }, align 16 %a55 = 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 %a59 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = 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 + %a69 = 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 - %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 + %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 + %a78 = alloca { ptr, i64, i64 }, align 16 + %a80 = 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 %a95 = 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 - %a99 = 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 { ptr, i64, i64 }, align 16 + %a105 = 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 %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 + %a120 = 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 + %a125 = alloca { ptr, i64, i64 }, align 16 + %a126 = 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 + %a129 = alloca { ptr, i64, i64 }, align 16 + %a130 = alloca { ptr, i64, i64 }, align 16 + %a131 = alloca { ptr, i64, i64 }, align 16 + %a133 = alloca { ptr, i64, i64 }, align 16 + %a142 = alloca { ptr, i64, i64 }, align 16 + %a148 = alloca { ptr, i64, i64 }, align 16 + %a149 = alloca { ptr, i64, i64 }, align 16 + %a154 = alloca { ptr, i64, i64 }, align 16 + %a155 = 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 %panic6246, label %ok6247 -panic6246: - call void @finch_panic(ptr @.str.4129, i64 3387, ptr @.str.4130) + br i1 %t5, label %panic6619, label %ok6620 +panic6619: + call void @finch_panic(ptr @.str.4300, i64 3656, ptr @.str.4301) unreachable -ok6247: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 20 +ok6620: + %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 21 %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 %range6248, label %inrange6249 -range6248: - call void @finch_panic_index(ptr @.str.4131, i64 3387, i64 %t7, i64 %t9) + br i1 %t10, label %range6621, label %inrange6622 +range6621: + call void @finch_panic_index(ptr @.str.4302, i64 3656, i64 %t7, i64 %t9) unreachable -inrange6249: +inrange6622: %t11 = extractvalue { ptr, i64, i64 } %t8, 0 %t12 = getelementptr inbounds %S.gen.EnumDef, ptr %t11, i64 %t7 %t13 = load %S.gen.EnumDef, ptr %t12 @@ -56133,154 +66372,183 @@ inrange6249: %t23 = load i64, ptr %t19 %t24 = load ptr, ptr %t18 store i64 0, ptr %a25 - br label %find.cond6250 -find.cond6250: + br label %find.cond6623 +find.cond6623: %t26 = load i64, ptr %a25 %t27 = icmp slt i64 %t26, %t23 - br i1 %t27, label %find.body6251, label %find.end6254 -find.body6251: + br i1 %t27, label %find.body6624, label %find.end6627 +find.body6624: %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.hit6252, label %find.next6253 -find.hit6252: + br i1 %t33, label %find.hit6625, label %find.next6626 +find.hit6625: store i64 %t26, ptr %a22 - br label %find.end6254 -find.next6253: + br label %find.end6627 +find.next6626: %t34 = add i64 %t26, 1 store i64 %t34, ptr %a25 - br label %find.cond6250 -find.end6254: + br label %find.cond6623 +find.end6627: %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 %then6255, label %endif6257 -then6255: + br i1 %t38, label %then6628, label %endif6630 +then6628: %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.4132, i64 9, i64 0 }, ptr %a44 + store { ptr, i64, i64 } { ptr @.str.4303, 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.4133, i64 17, i64 0 }, ptr %a49 + store { ptr, i64, i64 } { ptr @.str.4304, 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 - %t52 = load { ptr, i64, i64 }, ptr %t51 - store { ptr, i64, i64 } %t50, ptr %a54 - store { ptr, i64, i64 } %t52, ptr %a55 - 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.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.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 - 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.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 %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 - %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 } %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) + store { ptr, i64, i64 } %t46, ptr %a50 + call void @finch_str_drop(ptr %a50) + %t51 = load { ptr, i64, i64 }, ptr %a47 + %t52 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t53 = load { ptr, i64, i64 }, ptr %t52 + store { ptr, i64, i64 } %t51, ptr %a55 + store { ptr, i64, i64 } %t53, ptr %a56 + call void @finch_str_concat(ptr %a54, ptr %a55, ptr %a56) + store { ptr, i64, i64 } %t51, ptr %a57 + call void @finch_str_drop(ptr %a57) + %t58 = load { ptr, i64, i64 }, ptr %a54 + store { ptr, i64, i64 } %t58, ptr %a60 + store { ptr, i64, i64 } { ptr @.str.4305, i64 11, i64 0 }, ptr %a61 + call void @finch_str_concat(ptr %a59, ptr %a60, ptr %a61) + store { ptr, i64, i64 } %t58, ptr %a62 + call void @finch_str_drop(ptr %a62) + %t63 = load { ptr, i64, i64 }, ptr %a59 + %t64 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 2 + %t65 = getelementptr inbounds { ptr, i64, i64 }, ptr %t64, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.4306, i64 2, i64 0 }, ptr %a66 + call void @finch_str_join(ptr %a67, ptr %t64, ptr %a66) + %t68 = load { ptr, i64, i64 }, ptr %a67 + store { ptr, i64, i64 } %t63, ptr %a70 + store { ptr, i64, i64 } %t68, ptr %a71 + call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) + store { ptr, i64, i64 } %t63, ptr %a72 + call void @finch_str_drop(ptr %a72) + store { ptr, i64, i64 } %t68, ptr %a73 + call void @finch_str_drop(ptr %a73) + %t74 = load { ptr, i64, i64 }, ptr %a69 + store { ptr, i64, i64 } %t74, ptr %a76 + store { ptr, i64, i64 } { ptr @.str.4307, i64 1, i64 0 }, ptr %a77 + call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77) + store { ptr, i64, i64 } %t74, ptr %a78 + call void @finch_str_drop(ptr %a78) + %t79 = load { ptr, i64, i64 }, ptr %a75 + call void @finch.gen.fail(ptr %t39, %S.ast.Node %t40, { ptr, i64, i64 } %t79) + store { ptr, i64, i64 } %t79, ptr %a80 + call void @finch_str_drop(ptr %a80) + br label %endif6630 +endif6630: + %t81 = load ptr, ptr %a1 + %t82 = load %S.ast.Node, ptr %a2 + %t83 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 + %t84 = load i64, ptr %t83 + %t85 = add i64 %t84, 1 + %t86 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t87 = getelementptr inbounds { ptr, i64, i64 }, ptr %t86, i32 0, i32 1 + %t88 = load i64, ptr %t87 + %t89 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 1 + %t90 = load { ptr, i64, i64 }, ptr %t89 + store { ptr, i64, i64 } { ptr @.str.4308, i64 9, 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.4309, i64 1, i64 0 }, ptr %a97 + call void @finch_str_concat(ptr %a95, ptr %a96, ptr %a97) + store { ptr, i64, i64 } %t94, ptr %a98 + call void @finch_str_drop(ptr %a98) + %t99 = load { ptr, i64, i64 }, ptr %a95 + %t100 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t101 = load { ptr, i64, i64 }, ptr %t100 + store { ptr, i64, i64 } %t99, ptr %a103 + store { ptr, i64, i64 } %t101, ptr %a104 + call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104) + store { ptr, i64, i64 } %t99, ptr %a105 + call void @finch_str_drop(ptr %a105) + %t106 = load { ptr, i64, i64 }, ptr %a102 + store { ptr, i64, i64 } %t106, ptr %a108 + store { ptr, i64, i64 } { ptr @.str.4310, i64 3, i64 0 }, ptr %a109 + call void @finch_str_concat(ptr %a107, ptr %a108, ptr %a109) + store { ptr, i64, i64 } %t106, ptr %a110 + call void @finch_str_drop(ptr %a110) + %t111 = load { ptr, i64, i64 }, ptr %a107 + %t112 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 3 + %t113 = load i64, ptr %a36 + %t114 = load { ptr, i64, i64 }, ptr %t112 + %t115 = extractvalue { ptr, i64, i64 } %t114, 1 + %t116 = icmp uge i64 %t113, %t115 + br i1 %t116, label %range6631, label %inrange6632 +range6631: + call void @finch_panic_index(ptr @.str.4311, i64 3661, i64 %t113, i64 %t115) 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) +inrange6632: + %t117 = extractvalue { ptr, i64, i64 } %t114, 0 + %t118 = getelementptr inbounds i64, ptr %t117, i64 %t113 + %t119 = load i64, ptr %t118 + call void @finch_str_from_int(ptr %a120, i64 %t119) + %t121 = load { ptr, i64, i64 }, ptr %a120 + store { ptr, i64, i64 } %t111, ptr %a123 + store { ptr, i64, i64 } %t121, ptr %a124 + call void @finch_str_concat(ptr %a122, ptr %a123, ptr %a124) + store { ptr, i64, i64 } %t111, ptr %a125 + call void @finch_str_drop(ptr %a125) + store { ptr, i64, i64 } %t121, ptr %a126 + call void @finch_str_drop(ptr %a126) + %t127 = load { ptr, i64, i64 }, ptr %a122 + store { ptr, i64, i64 } %t127, ptr %a129 + store { ptr, i64, i64 } { ptr @.str.4312, i64 4, i64 0 }, ptr %a130 + call void @finch_str_concat(ptr %a128, ptr %a129, ptr %a130) + store { ptr, i64, i64 } %t127, ptr %a131 + call void @finch_str_drop(ptr %a131) + %t132 = load { ptr, i64, i64 }, ptr %a128 + call void @finch.gen.noteRef(ptr %t81, %S.ast.Node %t82, i64 %t85, i64 %t88, { ptr, i64, i64 } %t132, { ptr, i64, i64 } { ptr @.str.4313, i64 0, i64 0 }, i64 0, i64 0) + store { ptr, i64, i64 } %t132, ptr %a133 + call void @finch_str_drop(ptr %a133) + %t134 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 3 + %t135 = load i64, ptr %a36 + %t136 = load { ptr, i64, i64 }, ptr %t134 + %t137 = extractvalue { ptr, i64, i64 } %t136, 1 + %t138 = icmp uge i64 %t135, %t137 + br i1 %t138, label %range6633, label %inrange6634 +range6633: + call void @finch_panic_index(ptr @.str.4314, i64 3662, i64 %t135, i64 %t137) 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 +inrange6634: + %t139 = extractvalue { ptr, i64, i64 } %t136, 0 + %t140 = getelementptr inbounds i64, ptr %t139, i64 %t135 + %t141 = load i64, ptr %t140 + call void @finch_str_from_int(ptr %a142, i64 %t141) + %t143 = load { ptr, i64, i64 }, ptr %a142 + %t144 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t143, 0 + %t145 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.4315, i64 4, i64 0 }, 0 + %t146 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 1 + %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.ast.Type %t145, { ptr, i64, i64 } %t150, 2 + %t152 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 0 + %t153 = load { ptr, i64, i64 }, ptr %t152 + store { ptr, i64, i64 } %t153, ptr %a154 + call void @finch_str_copy(ptr %a155, ptr %a154) + %t156 = load { ptr, i64, i64 }, ptr %a155 + %t157 = insertvalue %S.ast.Type %t151, { ptr, i64, i64 } %t156, 3 + %t158 = insertvalue %S.gen.Val %t144, %S.ast.Type %t157, 1 + call void @finch.drop.S_gen_EnumDef(ptr %a17) + ret %S.gen.Val %t158 } define internal %S.gen.Ref @finch.gen.member(ptr %p0, %S.ast.Node %p1, i1 %p2) { @@ -56295,234 +66563,302 @@ entry: %a42 = alloca %S.ast.Type, align 16 %a48 = alloca %S.ast.Type, align 16 %a49 = alloca %S.ast.Type, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 + %a52 = alloca %S.ast.Type, align 16 + %a55 = alloca { ptr, i64, i64 }, align 16 + %a56 = alloca { ptr, i64, i64 }, align 16 + %a62 = alloca { ptr, i64, i64 }, align 16 %a63 = 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 + %a65 = alloca { ptr, i64, i64 }, align 16 + %a74 = 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 %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 + %a94 = alloca { ptr, i64, i64 }, align 16 %a97 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca %S.ast.Type, align 16 - %a108 = alloca %S.ast.Type, align 16 - %a110 = alloca %S.ast.Type, align 16 - %a111 = alloca i1, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca i64, align 16 - %a137 = alloca i64, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 + %a98 = alloca { ptr, i64, i64 }, align 16 + %a99 = 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 + %a104 = alloca { ptr, i64, i64 }, align 16 + %a107 = alloca { ptr, i64, i64 }, align 16 + %a108 = alloca { ptr, i64, i64 }, align 16 + %a116 = alloca %S.ast.Type, align 16 + %a117 = alloca %S.ast.Type, align 16 + %a119 = alloca %S.ast.Type, align 16 + %a120 = alloca i1, align 16 + %a123 = alloca { ptr, i64, i64 }, align 16 + %a124 = alloca { ptr, i64, i64 }, align 16 + %a143 = alloca i64, align 16 + %a146 = alloca i64, align 16 %a151 = alloca { ptr, i64, i64 }, align 16 %a152 = alloca { ptr, i64, i64 }, align 16 %a160 = alloca { ptr, i64, i64 }, align 16 %a161 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca %S.ast.Type, align 16 - %a166 = alloca %S.ast.Type, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 + %a169 = alloca { ptr, i64, i64 }, align 16 + %a170 = alloca { ptr, i64, i64 }, align 16 + %a174 = alloca %S.ast.Type, align 16 + %a175 = alloca %S.ast.Type, align 16 %a181 = alloca { ptr, i64, i64 }, align 16 %a182 = 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 + %a189 = alloca { ptr, i64, i64 }, align 16 %a190 = alloca { ptr, i64, i64 }, align 16 %a191 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca %S.ast.Type, align 16 - %a196 = alloca %S.ast.Type, align 16 - %a201 = alloca %S.ast.Type, align 16 - %a202 = alloca %S.ast.Type, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a217 = 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 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 + %a192 = alloca { ptr, i64, i64 }, align 16 + %a194 = 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 + %a199 = alloca { ptr, i64, i64 }, align 16 + %a202 = alloca { ptr, i64, i64 }, align 16 + %a203 = alloca { ptr, i64, i64 }, align 16 + %a207 = alloca %S.ast.Type, align 16 + %a208 = alloca %S.ast.Type, align 16 + %a213 = alloca %S.gen.Ref, align 16 + %a215 = alloca %S.ast.Type, align 16 + %a216 = alloca %S.ast.Type, align 16 + %a219 = alloca %S.ast.Type, align 16 + %a222 = alloca { ptr, i64, i64 }, align 16 + %a223 = alloca { ptr, i64, i64 }, align 16 + %a231 = alloca { ptr, i64, i64 }, align 16 %a232 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 + %a233 = alloca { ptr, i64, i64 }, align 16 + %a235 = 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 + %a240 = alloca { ptr, i64, i64 }, align 16 + %a243 = alloca { ptr, i64, i64 }, align 16 + %a244 = 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 - %a266 = alloca { ptr, i64, i64 }, align 16 + %a259 = alloca { ptr, i64, i64 }, align 16 + %a260 = alloca { ptr, i64, i64 }, align 16 %a267 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 + %a268 = alloca { ptr, i64, i64 }, align 16 + %a269 = alloca { ptr, i64, i64 }, align 16 + %a271 = 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 + %a276 = alloca { ptr, i64, i64 }, align 16 + %a286 = alloca { ptr, i64, i64 }, align 16 + %a287 = alloca { ptr, i64, i64 }, align 16 + %a302 = alloca { ptr, i64, i64 }, align 16 + %a303 = alloca { ptr, i64, i64 }, align 16 + %a308 = alloca { ptr, i64, i64 }, align 16 + %a309 = alloca { ptr, i64, i64 }, align 16 %a315 = 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 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a356 = alloca { ptr, i64, i64 }, align 16 - %a357 = alloca { ptr, i64, i64 }, align 16 + %a316 = 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 + %a344 = alloca { ptr, i64, i64 }, align 16 + %a345 = alloca { ptr, i64, i64 }, align 16 + %a347 = alloca { ptr, i64, i64 }, align 16 %a358 = 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 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 + %a363 = alloca { ptr, i64, i64 }, align 16 + %a364 = alloca { ptr, i64, i64 }, align 16 + %a374 = alloca %S.ast.Type, align 16 + %a380 = alloca { ptr, i64, i64 }, align 16 + %a381 = alloca { ptr, i64, i64 }, align 16 + %a382 = alloca { ptr, i64, i64 }, align 16 %a384 = alloca { ptr, i64, i64 }, align 16 %a385 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %a399 = 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 + %a386 = alloca { ptr, i64, i64 }, align 16 + %a387 = alloca { ptr, i64, i64 }, align 16 + %a390 = alloca { ptr, i64, i64 }, align 16 + %a404 = alloca { ptr, i64, i64 }, align 16 + %a405 = alloca { ptr, i64, i64 }, align 16 %a410 = alloca { ptr, i64, i64 }, align 16 %a411 = alloca { ptr, i64, i64 }, align 16 - %a412 = alloca { ptr, i64, i64 }, align 16 - %a423 = alloca { ptr, i64, i64 }, align 16 + %a417 = alloca { ptr, i64, i64 }, align 16 + %a418 = alloca { ptr, i64, i64 }, align 16 %a424 = alloca { ptr, i64, i64 }, align 16 %a425 = alloca { ptr, i64, i64 }, align 16 - %a427 = alloca { ptr, i64, i64 }, align 16 - %a428 = alloca { ptr, i64, i64 }, align 16 - %a429 = 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 %a436 = 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 - %a440 = alloca { ptr, i64, i64 }, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 + %a441 = alloca { ptr, i64, i64 }, align 16 + %a451 = alloca { ptr, i64, i64 }, align 16 + %a452 = alloca { ptr, i64, i64 }, align 16 + %a453 = alloca { ptr, i64, i64 }, align 16 + %a454 = alloca { ptr, i64, i64 }, align 16 + %a456 = 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 - %a461 = alloca { ptr, i64, i64 }, align 16 - %a462 = alloca { ptr, i64, i64 }, align 16 - %a463 = alloca { ptr, i64, i64 }, align 16 - %a468 = alloca { ptr, i64, i64 }, align 16 + %a464 = alloca { ptr, i64, i64 }, align 16 + %a465 = alloca { ptr, i64, i64 }, align 16 + %a466 = alloca { ptr, i64, i64 }, align 16 + %a467 = 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 %a472 = alloca { ptr, i64, i64 }, align 16 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a474 = alloca { ptr, i64, i64 }, align 16 - %a483 = alloca { ptr, i64, i64 }, align 16 - %a484 = alloca { ptr, i64, i64 }, align 16 + %a475 = alloca { ptr, i64, i64 }, align 16 + %a476 = alloca { ptr, i64, i64 }, align 16 + %a489 = alloca { ptr, i64, i64 }, align 16 + %a490 = 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 + %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 - %a498 = alloca { ptr, i64, i64 }, align 16 - %a499 = alloca { ptr, i64, i64 }, align 16 - %a501 = alloca { ptr, i64, i64 }, align 16 %a502 = alloca { ptr, i64, i64 }, align 16 %a503 = alloca { ptr, i64, i64 }, align 16 - %a520 = alloca %S.gen.StructDef, align 16 - %a521 = alloca %S.gen.StructDef, align 16 - %a523 = alloca %S.gen.StructDef, align 16 - %a528 = alloca i64, align 16 - %a531 = alloca i64, align 16 - %a536 = alloca { ptr, i64, i64 }, align 16 + %a504 = alloca { ptr, i64, i64 }, align 16 + %a505 = alloca { ptr, i64, i64 }, align 16 + %a507 = alloca { ptr, i64, i64 }, align 16 + %a508 = alloca { ptr, i64, i64 }, align 16 + %a509 = alloca { ptr, i64, i64 }, align 16 + %a510 = alloca { ptr, i64, i64 }, align 16 + %a513 = alloca { ptr, i64, i64 }, align 16 + %a514 = alloca { ptr, i64, i64 }, align 16 + %a520 = alloca { ptr, i64, i64 }, align 16 + %a521 = alloca { ptr, i64, i64 }, align 16 + %a529 = alloca { ptr, i64, i64 }, align 16 + %a530 = alloca { ptr, i64, i64 }, align 16 %a537 = alloca { ptr, i64, i64 }, align 16 - %a542 = alloca i64, align 16 + %a538 = alloca { ptr, i64, i64 }, align 16 + %a539 = alloca { ptr, i64, i64 }, align 16 + %a540 = alloca { ptr, i64, i64 }, align 16 + %a544 = 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 %a549 = alloca { ptr, i64, i64 }, align 16 %a550 = alloca { ptr, i64, i64 }, align 16 %a551 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 + %a552 = alloca { ptr, i64, i64 }, align 16 %a554 = alloca { ptr, i64, i64 }, align 16 - %a555 = alloca { ptr, i64, i64 }, align 16 - %a559 = alloca { ptr, i64, i64 }, align 16 - %a560 = alloca { ptr, i64, i64 }, align 16 - %a561 = 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 - %a569 = alloca { ptr, i64, i64 }, align 16 - %a570 = 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 - %a576 = alloca { ptr, i64, i64 }, align 16 - %a577 = alloca { ptr, i64, i64 }, align 16 - %a578 = alloca { ptr, i64, i64 }, align 16 - %a588 = alloca %S.ast.Type, align 16 - %a589 = alloca %S.ast.Type, align 16 - %a591 = alloca %S.ast.Type, align 16 + %a570 = alloca %S.gen.StructDef, align 16 + %a571 = alloca %S.gen.StructDef, align 16 + %a573 = alloca %S.gen.StructDef, align 16 + %a578 = alloca i64, align 16 + %a581 = alloca i64, align 16 + %a586 = alloca { ptr, i64, i64 }, align 16 + %a587 = alloca { ptr, i64, i64 }, align 16 + %a592 = alloca i64, align 16 + %a599 = 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 - %a603 = alloca { ptr, i64, i64 }, align 16 %a604 = 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 - %a608 = 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 %a616 = 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 + %a623 = alloca { ptr, i64, i64 }, align 16 + %a624 = 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 + %a633 = alloca { ptr, i64, i64 }, align 16 + %a634 = alloca { ptr, i64, i64 }, align 16 + %a635 = 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 - %a655 = alloca { ptr, i64, i64 }, align 16 - %a656 = alloca { ptr, i64, i64 }, align 16 - %a657 = alloca { ptr, i64, i64 }, align 16 + %a646 = alloca %S.ast.Type, align 16 + %a647 = alloca %S.ast.Type, align 16 + %a649 = alloca %S.ast.Type, 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 - %a668 = alloca %S.ast.Type, align 16 - %a669 = alloca %S.ast.Type, 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 + %a672 = alloca { ptr, i64, i64 }, align 16 + %a673 = alloca { ptr, i64, i64 }, align 16 + %a674 = alloca { ptr, i64, i64 }, align 16 + %a675 = alloca { ptr, i64, i64 }, align 16 %a677 = alloca { ptr, i64, i64 }, align 16 %a678 = alloca { ptr, i64, i64 }, align 16 %a679 = alloca { ptr, i64, i64 }, align 16 - %a681 = 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 - %a688 = alloca { ptr, i64, i64 }, align 16 %a689 = 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 + %a697 = alloca { ptr, i64, i64 }, align 16 + %a702 = alloca { ptr, i64, i64 }, align 16 + %a703 = alloca { ptr, i64, i64 }, align 16 %a704 = alloca { ptr, i64, i64 }, align 16 - %a706 = alloca { ptr, i64, i64 }, align 16 + %a705 = 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 + %a709 = alloca { ptr, i64, i64 }, align 16 + %a710 = alloca { ptr, i64, i64 }, align 16 + %a720 = alloca { ptr, i64, i64 }, align 16 + %a722 = alloca { ptr, i64, i64 }, align 16 + %a723 = 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 + %a729 = alloca { ptr, i64, i64 }, align 16 + %a730 = alloca { ptr, i64, i64 }, align 16 + %a733 = alloca { ptr, i64, i64 }, align 16 + %a734 = alloca { ptr, i64, i64 }, align 16 + %a738 = alloca %S.ast.Type, align 16 + %a739 = alloca %S.ast.Type, align 16 + %a747 = 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 + %a752 = 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 + %a760 = 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 + %a765 = 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 + %a778 = 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 + %a783 = alloca { ptr, i64, i64 }, align 16 + %a784 = 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 + %a795 = alloca %S.ast.Type, align 16 + %a796 = alloca %S.ast.Type, align 16 + %a799 = alloca %S.gen.Val, align 16 + %a813 = alloca %S.ast.Type, align 16 + %a814 = alloca %S.ast.Type, align 16 + %a819 = alloca %S.gen.Val, align 16 + %a825 = alloca %S.gen.Val, align 16 + %a826 = alloca %S.gen.Val, align 16 store ptr %p0, ptr %a1 store %S.ast.Node %p1, ptr %a2 store i1 %p2, ptr %a3 @@ -56531,11 +66867,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 %range6262, label %inrange6263 -range6262: - call void @finch_panic_index(ptr @.str.4145, i64 3397, i64 0, i64 %t7) + br i1 %t8, label %range6635, label %inrange6636 +range6635: + call void @finch_panic_index(ptr @.str.4316, i64 3666, i64 0, i64 %t7) unreachable -inrange6263: +inrange6636: %t9 = extractvalue { ptr, i64, i64 } %t6, 0 %t10 = getelementptr inbounds %S.ast.Node, ptr %t9, i64 0 %t11 = load %S.ast.Node, ptr %t10 @@ -56543,16 +66879,16 @@ inrange6263: store i64 %t12, ptr %a13 %t14 = load i64, ptr %a13 %t15 = icmp sge i64 %t14, 0 - br i1 %t15, label %then6264, label %endif6266 -then6264: + br i1 %t15, label %then6637, label %endif6639 +then6637: %t16 = load i1, ptr %a3 - br i1 %t16, label %then6267, label %endif6269 -then6267: + br i1 %t16, label %then6640, label %endif6642 +then6640: %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.4146, i64 37, i64 0 }) - br label %endif6269 -endif6269: + call void @finch.gen.fail(ptr %t17, %S.ast.Node %t18, { ptr, i64, i64 } { ptr @.str.4317, i64 37, i64 0 }) + br label %endif6642 +endif6642: %t19 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 %t20 = load ptr, ptr %a1 %t21 = load %S.ast.Node, ptr %a2 @@ -56560,17 +66896,17 @@ endif6269: %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 -endif6266: +endif6639: %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 %range6270, label %inrange6271 -range6270: - call void @finch_panic_index(ptr @.str.4147, i64 3404, i64 0, i64 %t28) + br i1 %t29, label %range6643, label %inrange6644 +range6643: + call void @finch_panic_index(ptr @.str.4318, i64 3673, i64 0, i64 %t28) unreachable -inrange6271: +inrange6644: %t30 = extractvalue { ptr, i64, i64 } %t27, 0 %t31 = getelementptr inbounds %S.ast.Node, ptr %t30, i64 0 %t32 = load %S.ast.Node, ptr %t31 @@ -56586,966 +66922,1148 @@ inrange6271: 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 %then6272, label %endif6274 -then6272: + br i1 %t44, label %then6645, label %endif6647 +then6645: %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 store %S.ast.Type %t47, ptr %a48 call void @finch.copy.S_ast_Type(ptr %a49, ptr %a48) %t50 = load %S.ast.Type, ptr %a49 + %t51 = load %S.ast.Type, ptr %a42 store %S.ast.Type %t50, ptr %a42 - 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.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 %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 - store { ptr, i64, i64 } %t59, ptr %a60 - call void @finch_str_copy(ptr %a61, ptr %a60) - %t62 = load { ptr, i64, i64 }, ptr %a61 - 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 %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.4149, i64 3, i64 0 }, { ptr, i64, i64 } %t69) - store { ptr, i64, i64 } %t70, ptr %a63 - 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 %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.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.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.4152, i64 6, i64 0 }, ptr %a86 + store %S.ast.Type %t51, ptr %a52 + call void @finch.drop.S_ast_Type(ptr %a52) + br label %endif6647 +endif6647: + %t53 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 0 + %t54 = load { ptr, i64, i64 }, ptr %t53 + store { ptr, i64, i64 } %t54, ptr %a55 + store { ptr, i64, i64 } { ptr @.str.4319, i64 3, i64 0 }, ptr %a56 + %t57 = call i32 @finch_str_eq(ptr %a55, ptr %a56) + %t58 = icmp ne i32 %t57, 0 + br i1 %t58, label %then6648, label %endif6650 +then6648: + %t59 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 2 + %t60 = getelementptr inbounds %S.gen.Val, ptr %t59, i32 0, i32 0 + %t61 = load { ptr, i64, i64 }, ptr %t60 + store { ptr, i64, i64 } %t61, ptr %a62 + call void @finch_str_copy(ptr %a63, ptr %a62) + %t64 = load { ptr, i64, i64 }, ptr %a63 + store { ptr, i64, i64 } %t64, ptr %a65 + %t66 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 0 + %t67 = load i1, ptr %t66 + br i1 %t67, label %then6651, label %endif6653 +then6651: + %t68 = load ptr, ptr %a1 + %t69 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 1 + %t70 = getelementptr inbounds %S.gen.Place, ptr %t69, i32 0, i32 0 + %t71 = load { ptr, i64, i64 }, ptr %t70 + %t72 = call { ptr, i64, i64 } @finch.gen.load(ptr %t68, { ptr, i64, i64 } { ptr @.str.4320, i64 3, i64 0 }, { ptr, i64, i64 } %t71) + %t73 = load { ptr, i64, i64 }, ptr %a65 + store { ptr, i64, i64 } %t72, ptr %a65 + store { ptr, i64, i64 } %t73, ptr %a74 + call void @finch_str_drop(ptr %a74) + br label %endif6653 +endif6653: + %t75 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 1 + %t76 = getelementptr inbounds { ptr, i64, i64 }, ptr %t75, i32 0, i32 1 + %t77 = load i64, ptr %t76 + %t78 = icmp eq i64 %t77, 0 + br i1 %t78, label %then6654, label %endif6656 +then6654: + %t79 = load ptr, ptr %a1 + %t80 = load %S.ast.Node, ptr %a2 + call void @finch.gen.fail(ptr %t79, %S.ast.Node %t80, { ptr, i64, i64 } { ptr @.str.4321, i64 57, i64 0 }) + br label %endif6656 +endif6656: + %t81 = load ptr, ptr %a1 + %t82 = load ptr, ptr %a1 + %t83 = load { ptr, i64, i64 }, ptr %a65 + store { ptr, i64, i64 } { ptr @.str.4322, i64 12, 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 - %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.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.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 - call void @finch.gen.panicIf(ptr %t77, { ptr, i64, i64 } %t88, { ptr, i64, i64 } %t98, %S.ast.Node %t99) - %t100 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 1 - %t101 = load { ptr, i64, i64 }, ptr %t100 - %t102 = extractvalue { ptr, i64, i64 } %t101, 1 - %t103 = icmp uge i64 0, %t102 - br i1 %t103, label %range6284, label %inrange6285 -range6284: - call void @finch_panic_index(ptr @.str.4155, i64 3418, i64 0, i64 %t102) + store { ptr, i64, i64 } %t87, ptr %a89 + store { ptr, i64, i64 } { ptr @.str.4323, i64 6, i64 0 }, ptr %a90 + call void @finch_str_concat(ptr %a88, ptr %a89, ptr %a90) + store { ptr, i64, i64 } %t87, ptr %a91 + call void @finch_str_drop(ptr %a91) + %t92 = load { ptr, i64, i64 }, ptr %a88 + %t93 = call { ptr, i64, i64 } @finch.gen.op(ptr %t82, { ptr, i64, i64 } %t92) + store { ptr, i64, i64 } %t92, ptr %a94 + call void @finch_str_drop(ptr %a94) + %t95 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t96 = load { ptr, i64, i64 }, ptr %t95 + store { ptr, i64, i64 } { ptr @.str.4324, i64 6, 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.4325, i64 18, i64 0 }, ptr %a103 + call void @finch_str_concat(ptr %a101, ptr %a102, ptr %a103) + store { ptr, i64, i64 } %t100, ptr %a104 + call void @finch_str_drop(ptr %a104) + %t105 = load { ptr, i64, i64 }, ptr %a101 + %t106 = load %S.ast.Node, ptr %a2 + call void @finch.gen.panicIf(ptr %t81, { ptr, i64, i64 } %t93, { ptr, i64, i64 } %t105, %S.ast.Node %t106) + store { ptr, i64, i64 } %t93, ptr %a107 + call void @finch_str_drop(ptr %a107) + store { ptr, i64, i64 } %t105, ptr %a108 + call void @finch_str_drop(ptr %a108) + %t109 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 1 + %t110 = load { ptr, i64, i64 }, ptr %t109 + %t111 = extractvalue { ptr, i64, i64 } %t110, 1 + %t112 = icmp uge i64 0, %t111 + br i1 %t112, label %range6657, label %inrange6658 +range6657: + call void @finch_panic_index(ptr @.str.4326, i64 3687, i64 0, i64 %t111) unreachable -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 - store %S.ast.Type %t106, ptr %a107 - call void @finch.copy.S_ast_Type(ptr %a108, ptr %a107) - %t109 = load %S.ast.Type, ptr %a108 - store %S.ast.Type %t109, ptr %a110 - store i1 false, ptr %a111 - %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.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 %then6286, label %endif6288 -then6286: - %t118 = load ptr, ptr %a1 - %t119 = icmp eq ptr %t118, null - br i1 %t119, label %panic6289, label %ok6290 -panic6289: - call void @finch_panic(ptr @.str.4157, i64 3421, ptr @.str.4158) +inrange6658: + %t113 = extractvalue { ptr, i64, i64 } %t110, 0 + %t114 = getelementptr inbounds %S.ast.Type, ptr %t113, i64 0 + %t115 = load %S.ast.Type, ptr %t114 + store %S.ast.Type %t115, ptr %a116 + call void @finch.copy.S_ast_Type(ptr %a117, ptr %a116) + %t118 = load %S.ast.Type, ptr %a117 + store %S.ast.Type %t118, ptr %a119 + store i1 false, ptr %a120 + %t121 = getelementptr inbounds %S.ast.Type, ptr %a119, i32 0, i32 0 + %t122 = load { ptr, i64, i64 }, ptr %t121 + store { ptr, i64, i64 } %t122, ptr %a123 + store { ptr, i64, i64 } { ptr @.str.4327, i64 6, i64 0 }, ptr %a124 + %t125 = call i32 @finch_str_eq(ptr %a123, ptr %a124) + %t126 = icmp ne i32 %t125, 0 + br i1 %t126, label %then6659, label %endif6661 +then6659: + %t127 = load ptr, ptr %a1 + %t128 = icmp eq ptr %t127, null + br i1 %t128, label %panic6662, label %ok6663 +panic6662: + call void @finch_panic(ptr @.str.4328, i64 3690, ptr @.str.4329) unreachable -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 - %t123 = load { ptr, i64, i64 }, ptr %t122 - %t124 = getelementptr inbounds %S.ast.Type, ptr %a110, i32 0, i32 2 - %t125 = load { ptr, i64, i64 }, ptr %t124 - %t126 = call i64 @finch.gen.findStruct(ptr %t121, { ptr, i64, i64 } %t123, { ptr, i64, i64 } %t125) - %t127 = load { ptr, i64, i64 }, ptr %t120 - %t128 = extractvalue { ptr, i64, i64 } %t127, 1 - %t129 = icmp uge i64 %t126, %t128 - br i1 %t129, label %range6291, label %inrange6292 -range6291: - call void @finch_panic_index(ptr @.str.4159, i64 3421, i64 %t126, i64 %t128) +ok6663: + %t129 = getelementptr inbounds %S.gen.Gen, ptr %t127, i32 0, i32 16 + %t130 = load ptr, ptr %a1 + %t131 = getelementptr inbounds %S.ast.Type, ptr %a119, i32 0, i32 3 + %t132 = load { ptr, i64, i64 }, ptr %t131 + %t133 = getelementptr inbounds %S.ast.Type, ptr %a119, i32 0, i32 2 + %t134 = load { ptr, i64, i64 }, ptr %t133 + %t135 = call i64 @finch.gen.findStruct(ptr %t130, { ptr, i64, i64 } %t132, { ptr, i64, i64 } %t134) + %t136 = load { ptr, i64, i64 }, ptr %t129 + %t137 = extractvalue { ptr, i64, i64 } %t136, 1 + %t138 = icmp uge i64 %t135, %t137 + br i1 %t138, label %range6664, label %inrange6665 +range6664: + call void @finch_panic_index(ptr @.str.4330, i64 3690, i64 %t135, i64 %t137) unreachable -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 - %t133 = getelementptr inbounds { ptr, i64, i64 }, ptr %t132, i32 0, i32 1 - store i64 -1, ptr %a134 - %t135 = load i64, ptr %t133 - %t136 = load ptr, ptr %t132 - store i64 0, ptr %a137 - br label %find.cond6293 -find.cond6293: - %t138 = load i64, ptr %a137 - %t139 = icmp slt i64 %t138, %t135 - 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.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.hit6295, label %find.next6296 -find.hit6295: - store i64 %t138, ptr %a134 - br label %find.end6297 -find.next6296: - %t146 = add i64 %t138, 1 - store i64 %t146, ptr %a137 - br label %find.cond6293 -find.end6297: - %t147 = load i64, ptr %a134 - %t148 = icmp sge i64 %t147, 0 - store i1 %t148, ptr %a111 - br label %endif6288 -endif6288: - %t149 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 +inrange6665: + %t139 = extractvalue { ptr, i64, i64 } %t136, 0 + %t140 = getelementptr inbounds %S.gen.StructDef, ptr %t139, i64 %t135 + %t141 = getelementptr inbounds %S.gen.StructDef, ptr %t140, i32 0, i32 11 + %t142 = getelementptr inbounds { ptr, i64, i64 }, ptr %t141, i32 0, i32 1 + store i64 -1, ptr %a143 + %t144 = load i64, ptr %t142 + %t145 = load ptr, ptr %t141 + store i64 0, ptr %a146 + br label %find.cond6666 +find.cond6666: + %t147 = load i64, ptr %a146 + %t148 = icmp slt i64 %t147, %t144 + br i1 %t148, label %find.body6667, label %find.end6670 +find.body6667: + %t149 = getelementptr inbounds { ptr, i64, i64 }, ptr %t145, i64 %t147 %t150 = load { ptr, i64, i64 }, ptr %t149 store { ptr, i64, i64 } %t150, ptr %a151 - store { ptr, i64, i64 } { ptr @.str.4161, i64 5, i64 0 }, ptr %a152 + store { ptr, i64, i64 } { ptr @.str.4331, 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.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.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 + br i1 %t154, label %find.hit6668, label %find.next6669 +find.hit6668: + store i64 %t147, ptr %a143 + br label %find.end6670 +find.next6669: + %t155 = add i64 %t147, 1 + store i64 %t155, ptr %a146 + br label %find.cond6666 +find.end6670: + %t156 = load i64, ptr %a143 + %t157 = icmp sge i64 %t156, 0 + store i1 %t157, ptr %a120 + br label %endif6661 +endif6661: + %t158 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t159 = load { ptr, i64, i64 }, ptr %t158 store { ptr, i64, i64 } %t159, ptr %a160 - call void @finch_str_copy(ptr %a161, ptr %a160) - %t162 = load { ptr, i64, i64 }, ptr %a161 - %t163 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t162, 0 - %t164 = load %S.ast.Type, ptr %a110 - store %S.ast.Type %t164, ptr %a165 - call void @finch.copy.S_ast_Type(ptr %a166, ptr %a165) - %t167 = load %S.ast.Type, ptr %a166 - %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 -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.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 %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.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.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 %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 - call void @finch_str_copy(ptr %a191, ptr %a190) - %t192 = load { ptr, i64, i64 }, ptr %a191 - %t193 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t192, 0 - %t194 = load %S.ast.Type, ptr %a110 - store %S.ast.Type %t194, ptr %a195 - call void @finch.copy.S_ast_Type(ptr %a196, ptr %a195) - %t197 = load %S.ast.Type, ptr %a196 - %t198 = insertvalue %S.gen.Place %t193, %S.ast.Type %t197, 1 - %t199 = insertvalue %S.gen.Ref %t188, %S.gen.Place %t198, 1 - store %S.gen.Ref %t199, ptr %a35 - %t200 = load %S.ast.Type, ptr %a110 - store %S.ast.Type %t200, ptr %a201 - 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 %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.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 %then6308, label %endif6310 -then6308: - %t210 = load i1, ptr %a3 - 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.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.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 %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.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 %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.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 -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.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 %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.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.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 %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 %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.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 - %t265 = load { ptr, i64, i64 }, ptr %t264 - store { ptr, i64, i64 } %t265, ptr %a266 - call void @finch_str_copy(ptr %a267, ptr %a266) - %t268 = load { ptr, i64, i64 }, ptr %a267 - %t269 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t268, 0 - %t270 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 1 - %t271 = load { ptr, i64, i64 }, ptr %t270 - %t272 = extractvalue { ptr, i64, i64 } %t271, 1 - %t273 = icmp uge i64 0, %t272 - br i1 %t273, label %range6323, label %inrange6324 -range6323: - call void @finch_panic_index(ptr @.str.4174, i64 3445, i64 0, i64 %t272) + store { ptr, i64, i64 } { ptr @.str.4332, 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.from6671 +logic.from6671: + br i1 %t163, label %logic.rhs6672, label %logic.end6673 +logic.rhs6672: + %t164 = load i1, ptr %a120 + %t165 = xor i1 %t164, true + br label %logic.rend6674 +logic.rend6674: + br label %logic.end6673 +logic.end6673: + %t166 = phi i1 [ false, %logic.from6671 ], [ %t165, %logic.rend6674 ] + br i1 %t166, label %then6675, label %endif6677 +then6675: + %t167 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 + %t168 = load { ptr, i64, i64 }, ptr %a65 + store { ptr, i64, i64 } %t168, ptr %a169 + call void @finch_str_copy(ptr %a170, ptr %a169) + %t171 = load { ptr, i64, i64 }, ptr %a170 + %t172 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t171, 0 + %t173 = load %S.ast.Type, ptr %a119 + store %S.ast.Type %t173, ptr %a174 + call void @finch.copy.S_ast_Type(ptr %a175, ptr %a174) + %t176 = load %S.ast.Type, ptr %a175 + %t177 = insertvalue %S.gen.Place %t172, %S.ast.Type %t176, 1 + %t178 = insertvalue %S.gen.Ref %t167, %S.gen.Place %t177, 1 + call void @finch.drop.S_ast_Type(ptr %a119) + call void @finch_str_drop(ptr %a65) + call void @finch.drop.S_ast_Type(ptr %a42) + call void @finch.drop.S_gen_Ref(ptr %a35) + ret %S.gen.Ref %t178 +endif6677: + %t179 = getelementptr inbounds %S.ast.Type, ptr %a119, i32 0, i32 0 + %t180 = load { ptr, i64, i64 }, ptr %t179 + store { ptr, i64, i64 } %t180, ptr %a181 + store { ptr, i64, i64 } { ptr @.str.4333, i64 6, i64 0 }, ptr %a182 + %t183 = call i32 @finch_str_eq(ptr %a181, ptr %a182) + %t184 = icmp eq i32 %t183, 0 + br i1 %t184, label %then6678, label %endif6680 +then6678: + %t185 = load ptr, ptr %a1 + %t186 = load %S.ast.Node, ptr %a2 + %t187 = load %S.ast.Type, ptr %a42 + %t188 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t187) + store { ptr, i64, i64 } { ptr @.str.4334, i64 2, i64 0 }, ptr %a190 + store { ptr, i64, i64 } %t188, ptr %a191 + call void @finch_str_concat(ptr %a189, ptr %a190, ptr %a191) + store { ptr, i64, i64 } %t188, ptr %a192 + call void @finch_str_drop(ptr %a192) + %t193 = load { ptr, i64, i64 }, ptr %a189 + store { ptr, i64, i64 } %t193, ptr %a195 + store { ptr, i64, i64 } { ptr @.str.4335, i64 43, i64 0 }, ptr %a196 + call void @finch_str_concat(ptr %a194, ptr %a195, ptr %a196) + store { ptr, i64, i64 } %t193, ptr %a197 + call void @finch_str_drop(ptr %a197) + %t198 = load { ptr, i64, i64 }, ptr %a194 + call void @finch.gen.fail(ptr %t185, %S.ast.Node %t186, { ptr, i64, i64 } %t198) + store { ptr, i64, i64 } %t198, ptr %a199 + call void @finch_str_drop(ptr %a199) + br label %endif6680 +endif6680: + %t200 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 + %t201 = load { ptr, i64, i64 }, ptr %a65 + store { ptr, i64, i64 } %t201, ptr %a202 + call void @finch_str_copy(ptr %a203, ptr %a202) + %t204 = load { ptr, i64, i64 }, ptr %a203 + %t205 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t204, 0 + %t206 = load %S.ast.Type, ptr %a119 + store %S.ast.Type %t206, ptr %a207 + call void @finch.copy.S_ast_Type(ptr %a208, ptr %a207) + %t209 = load %S.ast.Type, ptr %a208 + %t210 = insertvalue %S.gen.Place %t205, %S.ast.Type %t209, 1 + %t211 = insertvalue %S.gen.Ref %t200, %S.gen.Place %t210, 1 + %t212 = load %S.gen.Ref, ptr %a35 + store %S.gen.Ref %t211, ptr %a35 + store %S.gen.Ref %t212, ptr %a213 + call void @finch.drop.S_gen_Ref(ptr %a213) + %t214 = load %S.ast.Type, ptr %a119 + store %S.ast.Type %t214, ptr %a215 + call void @finch.copy.S_ast_Type(ptr %a216, ptr %a215) + %t217 = load %S.ast.Type, ptr %a216 + %t218 = load %S.ast.Type, ptr %a42 + store %S.ast.Type %t217, ptr %a42 + store %S.ast.Type %t218, ptr %a219 + call void @finch.drop.S_ast_Type(ptr %a219) + call void @finch.drop.S_ast_Type(ptr %a119) + call void @finch_str_drop(ptr %a65) + br label %endif6650 +endif6650: + %t220 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 0 + %t221 = load { ptr, i64, i64 }, ptr %t220 + store { ptr, i64, i64 } %t221, ptr %a222 + store { ptr, i64, i64 } { ptr @.str.4336, i64 5, i64 0 }, ptr %a223 + %t224 = call i32 @finch_str_eq(ptr %a222, ptr %a223) + %t225 = icmp ne i32 %t224, 0 + br i1 %t225, label %then6681, label %endif6683 +then6681: + %t226 = load i1, ptr %a3 + br i1 %t226, label %then6684, label %endif6686 +then6684: + %t227 = load ptr, ptr %a1 + %t228 = load %S.ast.Node, ptr %a2 + %t229 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t230 = load { ptr, i64, i64 }, ptr %t229 + store { ptr, i64, i64 } { ptr @.str.4337, i64 1, i64 0 }, ptr %a232 + store { ptr, i64, i64 } %t230, ptr %a233 + call void @finch_str_concat(ptr %a231, ptr %a232, ptr %a233) + %t234 = load { ptr, i64, i64 }, ptr %a231 + store { ptr, i64, i64 } %t234, ptr %a236 + store { ptr, i64, i64 } { ptr @.str.4338, i64 26, i64 0 }, ptr %a237 + call void @finch_str_concat(ptr %a235, ptr %a236, ptr %a237) + store { ptr, i64, i64 } %t234, ptr %a238 + call void @finch_str_drop(ptr %a238) + %t239 = load { ptr, i64, i64 }, ptr %a235 + call void @finch.gen.fail(ptr %t227, %S.ast.Node %t228, { ptr, i64, i64 } %t239) + store { ptr, i64, i64 } %t239, ptr %a240 + call void @finch_str_drop(ptr %a240) + br label %endif6686 +endif6686: + %t241 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t242 = load { ptr, i64, i64 }, ptr %t241 + store { ptr, i64, i64 } %t242, ptr %a243 + store { ptr, i64, i64 } { ptr @.str.4339, i64 3, i64 0 }, ptr %a244 + %t245 = call i32 @finch_str_eq(ptr %a243, ptr %a244) + %t246 = icmp ne i32 %t245, 0 + br i1 %t246, label %then6687, label %endif6689 +then6687: + %t247 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 + %t248 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 4 + %t249 = load i64, ptr %t248 + call void @finch_str_from_int(ptr %a250, i64 %t249) + %t251 = load { ptr, i64, i64 }, ptr %a250 + %t252 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t251, 0 + %t253 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4340, i64 3, i64 0 }) + %t254 = insertvalue %S.gen.Val %t252, %S.ast.Type %t253, 1 + %t255 = insertvalue %S.gen.Val %t254, i1 true, 3 + %t256 = insertvalue %S.gen.Ref %t247, %S.gen.Val %t255, 2 + call void @finch.drop.S_ast_Type(ptr %a42) + call void @finch.drop.S_gen_Ref(ptr %a35) + ret %S.gen.Ref %t256 +endif6689: + %t257 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t258 = load { ptr, i64, i64 }, ptr %t257 + store { ptr, i64, i64 } %t258, ptr %a259 + store { ptr, i64, i64 } { ptr @.str.4341, i64 3, i64 0 }, ptr %a260 + %t261 = call i32 @finch_str_eq(ptr %a259, ptr %a260) + %t262 = icmp eq i32 %t261, 0 + br i1 %t262, label %then6690, label %endif6692 +then6690: + %t263 = load ptr, ptr %a1 + %t264 = load %S.ast.Node, ptr %a2 + %t265 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t266 = load { ptr, i64, i64 }, ptr %t265 + store { ptr, i64, i64 } { ptr @.str.4342, i64 34, i64 0 }, ptr %a268 + store { ptr, i64, i64 } %t266, 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 %a272 + store { ptr, i64, i64 } { ptr @.str.4343, i64 1, i64 0 }, ptr %a273 + call void @finch_str_concat(ptr %a271, ptr %a272, ptr %a273) + store { ptr, i64, i64 } %t270, ptr %a274 + call void @finch_str_drop(ptr %a274) + %t275 = load { ptr, i64, i64 }, ptr %a271 + call void @finch.gen.fail(ptr %t263, %S.ast.Node %t264, { ptr, i64, i64 } %t275) + store { ptr, i64, i64 } %t275, ptr %a276 + call void @finch_str_drop(ptr %a276) + br label %endif6692 +endif6692: + %t277 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 0 + %t278 = load i1, ptr %t277 + %t279 = xor i1 %t278, true + br i1 %t279, label %then6693, label %endif6695 +then6693: + %t280 = load ptr, ptr %a1 + %t281 = load %S.ast.Node, ptr %a2 + call void @finch.gen.fail(ptr %t280, %S.ast.Node %t281, { ptr, i64, i64 } { ptr @.str.4344, i64 48, i64 0 }) + br label %endif6695 +endif6695: + %t282 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 + %t283 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 1 + %t284 = getelementptr inbounds %S.gen.Place, ptr %t283, i32 0, i32 0 + %t285 = load { ptr, i64, i64 }, ptr %t284 + store { ptr, i64, i64 } %t285, ptr %a286 + call void @finch_str_copy(ptr %a287, ptr %a286) + %t288 = load { ptr, i64, i64 }, ptr %a287 + %t289 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t288, 0 + %t290 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 1 + %t291 = load { ptr, i64, i64 }, ptr %t290 + %t292 = extractvalue { ptr, i64, i64 } %t291, 1 + %t293 = icmp uge i64 0, %t292 + br i1 %t293, label %range6696, label %inrange6697 +range6696: + call void @finch_panic_index(ptr @.str.4345, i64 3714, i64 0, i64 %t292) unreachable -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 - %t277 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t276) - %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 -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.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.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.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.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.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.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 %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.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.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.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.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.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.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 - store { ptr, i64, i64 } %t323, ptr %a324 - call void @finch_str_copy(ptr %a325, ptr %a324) - %t326 = load { ptr, i64, i64 }, ptr %a325 - 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 %then6350, label %endif6352 -then6350: - %t330 = load ptr, ptr %a1 - %t331 = load ptr, ptr %a1 - %t332 = load %S.ast.Type, ptr %a42 - %t333 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t331, %S.ast.Type %t332) - %t334 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 1 - %t335 = getelementptr inbounds %S.gen.Place, ptr %t334, i32 0, i32 0 - %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 %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.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 %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.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 -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.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.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) - %t365 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t364, 0 - %t366 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 1 - %t367 = load { ptr, i64, i64 }, ptr %t366 - %t368 = extractvalue { ptr, i64, i64 } %t367, 1 - %t369 = icmp uge i64 0, %t368 - br i1 %t369, label %range6356, label %inrange6357 -range6356: - call void @finch_panic_index(ptr @.str.4186, i64 3463, i64 0, i64 %t368) - unreachable -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 +inrange6697: + %t294 = extractvalue { ptr, i64, i64 } %t291, 0 + %t295 = getelementptr inbounds %S.ast.Type, ptr %t294, i64 0 + %t296 = load %S.ast.Type, ptr %t295 + %t297 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t296) + %t298 = insertvalue %S.gen.Val %t289, %S.ast.Type %t297, 1 + %t299 = insertvalue %S.gen.Ref %t282, %S.gen.Val %t298, 2 + call void @finch.drop.S_ast_Type(ptr %a42) + call void @finch.drop.S_gen_Ref(ptr %a35) + ret %S.gen.Ref %t299 +endif6683: + %t300 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 0 + %t301 = load { ptr, i64, i64 }, ptr %t300 + store { ptr, i64, i64 } %t301, ptr %a302 + store { ptr, i64, i64 } { ptr @.str.4346, i64 5, i64 0 }, ptr %a303 + %t304 = call i32 @finch_str_eq(ptr %a302, ptr %a303) + %t305 = icmp ne i32 %t304, 0 + br label %logic.from6698 +logic.from6698: + br i1 %t305, label %logic.end6700, label %logic.rhs6699 +logic.rhs6699: + %t306 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 0 + %t307 = load { ptr, i64, i64 }, ptr %t306 + store { ptr, i64, i64 } %t307, ptr %a308 + store { ptr, i64, i64 } { ptr @.str.4347, i64 3, i64 0 }, ptr %a309 + %t310 = call i32 @finch_str_eq(ptr %a308, ptr %a309) + %t311 = icmp ne i32 %t310, 0 + br label %logic.rend6701 +logic.rend6701: + br label %logic.end6700 +logic.end6700: + %t312 = phi i1 [ true, %logic.from6698 ], [ %t311, %logic.rend6701 ] + br label %logic.from6702 +logic.from6702: + br i1 %t312, label %logic.rhs6703, label %logic.end6704 +logic.rhs6703: + %t313 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t314 = load { ptr, i64, i64 }, ptr %t313 + store { ptr, i64, i64 } %t314, ptr %a315 + store { ptr, i64, i64 } { ptr @.str.4348, i64 3, i64 0 }, ptr %a316 + %t317 = call i32 @finch_str_eq(ptr %a315, ptr %a316) + %t318 = icmp ne i32 %t317, 0 + br label %logic.rend6705 +logic.rend6705: + br label %logic.end6704 +logic.end6704: + %t319 = phi i1 [ false, %logic.from6702 ], [ %t318, %logic.rend6705 ] + br i1 %t319, label %then6706, label %endif6708 +then6706: + %t320 = load i1, ptr %a3 + br i1 %t320, label %then6709, label %endif6711 +then6709: + %t321 = load ptr, ptr %a1 + %t322 = load %S.ast.Node, ptr %a2 + call void @finch.gen.fail(ptr %t321, %S.ast.Node %t322, { ptr, i64, i64 } { ptr @.str.4349, i64 30, i64 0 }) + br label %endif6711 +endif6711: + %t323 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 0 + %t324 = load i1, ptr %t323 + %t325 = xor i1 %t324, true + br label %logic.from6712 +logic.from6712: + br i1 %t325, label %logic.rhs6713, label %logic.end6714 +logic.rhs6713: + %t326 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 2 + %t327 = getelementptr inbounds %S.gen.Val, ptr %t326, i32 0, i32 2 + %t328 = load i1, ptr %t327 + br label %logic.rend6715 +logic.rend6715: + br label %logic.end6714 +logic.end6714: + %t329 = phi i1 [ false, %logic.from6712 ], [ %t328, %logic.rend6715 ] + br label %logic.from6716 +logic.from6716: + br i1 %t329, label %logic.rhs6717, label %logic.end6718 +logic.rhs6717: + %t330 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 2 + %t331 = getelementptr inbounds %S.gen.Val, ptr %t330, i32 0, i32 0 + %t332 = load { ptr, i64, i64 }, ptr %t331 + store { ptr, i64, i64 } %t332, ptr %a333 + store { ptr, i64, i64 } { ptr @.str.4351, i64 1, i64 0 }, ptr %a335 + %t336 = call i32 @finch_str_starts(ptr %a333, ptr %a335) + %t337 = icmp ne i32 %t336, 0 + br label %logic.rend6719 +logic.rend6719: + br label %logic.end6718 +logic.end6718: + %t338 = phi i1 [ false, %logic.from6716 ], [ %t337, %logic.rend6719 ] + br i1 %t338, label %then6720, label %endif6722 +then6720: + %t339 = load ptr, ptr %a1 + %t340 = load %S.ast.Node, ptr %a2 + call void @finch.gen.fail(ptr %t339, %S.ast.Node %t340, { ptr, i64, i64 } { ptr @.str.4352, i64 53, i64 0 }) + br label %endif6722 +endif6722: + %t341 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 2 + %t342 = getelementptr inbounds %S.gen.Val, ptr %t341, i32 0, i32 0 + %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 + store { ptr, i64, i64 } %t346, ptr %a347 + %t348 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 0 + %t349 = load i1, ptr %t348 + br i1 %t349, label %then6723, label %endif6725 +then6723: + %t350 = load ptr, ptr %a1 + %t351 = load ptr, ptr %a1 + %t352 = load %S.ast.Type, ptr %a42 + %t353 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t351, %S.ast.Type %t352) + %t354 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 1 + %t355 = getelementptr inbounds %S.gen.Place, ptr %t354, i32 0, i32 0 + %t356 = load { ptr, i64, i64 }, ptr %t355 + %t357 = call { ptr, i64, i64 } @finch.gen.load(ptr %t350, { ptr, i64, i64 } %t353, { ptr, i64, i64 } %t356) + store { ptr, i64, i64 } %t353, ptr %a358 + call void @finch_str_drop(ptr %a358) + %t359 = load { ptr, i64, i64 }, ptr %a347 + store { ptr, i64, i64 } %t357, ptr %a347 + store { ptr, i64, i64 } %t359, ptr %a360 + call void @finch_str_drop(ptr %a360) + br label %endif6725 +endif6725: + %t361 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 0 + %t362 = load { ptr, i64, i64 }, ptr %t361 + store { ptr, i64, i64 } %t362, ptr %a363 + store { ptr, i64, i64 } { ptr @.str.4353, i64 3, i64 0 }, ptr %a364 + %t365 = call i32 @finch_str_eq(ptr %a363, ptr %a364) + %t366 = icmp ne i32 %t365, 0 + br i1 %t366, label %then6726, label %endif6728 +then6726: + %t367 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 + %t368 = load ptr, ptr %a1 + %t369 = load { ptr, i64, i64 }, ptr %a347 + %t370 = call { ptr, i64, i64 } @finch.gen.cstr(ptr %t368, { ptr, i64, i64 } %t369) + %t371 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t370, 0 + %t372 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4354, i64 4, i64 0 }) %t373 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t372) - %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 -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.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.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.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.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.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.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.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 %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.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.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 %endif6371 -endif6371: - %t414 = load i1, ptr %a3 - 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.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 %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.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.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 - %t432 = getelementptr inbounds %S.gen.Place, ptr %t431, i32 0, i32 0 - %t433 = load { ptr, i64, i64 }, ptr %t432 - store { ptr, i64, i64 } %t430, 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.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) - store { ptr, i64, i64 } %t442, ptr %a443 - %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.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.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 -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.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.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 - %t466 = getelementptr inbounds %S.gen.Val, ptr %t465, i32 0, i32 0 - %t467 = load { ptr, i64, i64 }, ptr %t466 - store { ptr, i64, i64 } %t464, ptr %a469 - store { ptr, i64, i64 } %t467, ptr %a470 - 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.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.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 -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.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 %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.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 - %t496 = load { ptr, i64, i64 }, ptr %t495 - store { ptr, i64, i64 } %t494, ptr %a498 - store { ptr, i64, i64 } %t496, ptr %a499 - 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.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 %endif6380 -endif6380: - %t505 = load ptr, ptr %a1 - %t506 = icmp eq ptr %t505, null - br i1 %t506, label %panic6381, label %ok6382 -panic6381: - call void @finch_panic(ptr @.str.4206, i64 3481, ptr @.str.4207) + store %S.ast.Type %t372, ptr %a374 + call void @finch.drop.S_ast_Type(ptr %a374) + %t375 = insertvalue %S.gen.Val %t371, %S.ast.Type %t373, 1 + %t376 = insertvalue %S.gen.Ref %t367, %S.gen.Val %t375, 2 + call void @finch_str_drop(ptr %a347) + call void @finch.drop.S_ast_Type(ptr %a42) + call void @finch.drop.S_gen_Ref(ptr %a35) + ret %S.gen.Ref %t376 +endif6728: + %t377 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 + %t378 = load ptr, ptr %a1 + %t379 = load { ptr, i64, i64 }, ptr %a347 + store { ptr, i64, i64 } { ptr @.str.4355, i64 31, i64 0 }, ptr %a381 + store { ptr, i64, i64 } %t379, ptr %a382 + call void @finch_str_concat(ptr %a380, ptr %a381, ptr %a382) + %t383 = load { ptr, i64, i64 }, ptr %a380 + store { ptr, i64, i64 } %t383, ptr %a385 + store { ptr, i64, i64 } { ptr @.str.4356, i64 3, i64 0 }, ptr %a386 + call void @finch_str_concat(ptr %a384, ptr %a385, ptr %a386) + store { ptr, i64, i64 } %t383, ptr %a387 + call void @finch_str_drop(ptr %a387) + %t388 = load { ptr, i64, i64 }, ptr %a384 + %t389 = call { ptr, i64, i64 } @finch.gen.op(ptr %t378, { ptr, i64, i64 } %t388) + store { ptr, i64, i64 } %t388, ptr %a390 + call void @finch_str_drop(ptr %a390) + %t391 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t389, 0 + %t392 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 1 + %t393 = load { ptr, i64, i64 }, ptr %t392 + %t394 = extractvalue { ptr, i64, i64 } %t393, 1 + %t395 = icmp uge i64 0, %t394 + br i1 %t395, label %range6729, label %inrange6730 +range6729: + call void @finch_panic_index(ptr @.str.4357, i64 3732, i64 0, i64 %t394) unreachable -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 - %t510 = load { ptr, i64, i64 }, ptr %t509 - %t511 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 2 - %t512 = load { ptr, i64, i64 }, ptr %t511 - %t513 = call i64 @finch.gen.findStruct(ptr %t508, { ptr, i64, i64 } %t510, { ptr, i64, i64 } %t512) - %t514 = load { ptr, i64, i64 }, ptr %t507 - %t515 = extractvalue { ptr, i64, i64 } %t514, 1 - %t516 = icmp uge i64 %t513, %t515 - br i1 %t516, label %range6383, label %inrange6384 -range6383: - call void @finch_panic_index(ptr @.str.4208, i64 3481, i64 %t513, i64 %t515) - unreachable -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 - store %S.gen.StructDef %t519, ptr %a520 - call void @finch.copy.S_gen_StructDef(ptr %a521, ptr %a520) - %t522 = load %S.gen.StructDef, ptr %a521 - store %S.gen.StructDef %t522, ptr %a523 - %t524 = getelementptr inbounds %S.gen.StructDef, ptr %a523, i32 0, i32 11 - %t525 = getelementptr inbounds { ptr, i64, i64 }, ptr %t524, i32 0, i32 1 - %t526 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t527 = load { ptr, i64, i64 }, ptr %t526 - store i64 -1, ptr %a528 - %t529 = load i64, ptr %t525 - %t530 = load ptr, ptr %t524 - store i64 0, ptr %a531 - br label %find.cond6385 -find.cond6385: - %t532 = load i64, ptr %a531 - %t533 = icmp slt i64 %t532, %t529 - 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.hit6387, label %find.next6388 -find.hit6387: - store i64 %t532, ptr %a528 - br label %find.end6389 -find.next6388: - %t540 = add i64 %t532, 1 - store i64 %t540, ptr %a531 - 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 %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.4209, i64 11, i64 0 }, ptr %a550 - store { ptr, i64, i64 } %t548, ptr %a551 +inrange6730: + %t396 = extractvalue { ptr, i64, i64 } %t393, 0 + %t397 = getelementptr inbounds %S.ast.Type, ptr %t396, i64 0 + %t398 = load %S.ast.Type, ptr %t397 + %t399 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t398) + %t400 = insertvalue %S.gen.Val %t391, %S.ast.Type %t399, 1 + %t401 = insertvalue %S.gen.Ref %t377, %S.gen.Val %t400, 2 + call void @finch_str_drop(ptr %a347) + call void @finch.drop.S_ast_Type(ptr %a42) + call void @finch.drop.S_gen_Ref(ptr %a35) + ret %S.gen.Ref %t401 +endif6708: + %t402 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 0 + %t403 = load { ptr, i64, i64 }, ptr %t402 + store { ptr, i64, i64 } %t403, ptr %a404 + store { ptr, i64, i64 } { ptr @.str.4358, i64 5, i64 0 }, ptr %a405 + %t406 = call i32 @finch_str_eq(ptr %a404, ptr %a405) + %t407 = icmp ne i32 %t406, 0 + br label %logic.from6731 +logic.from6731: + br i1 %t407, label %logic.end6733, label %logic.rhs6732 +logic.rhs6732: + %t408 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 0 + %t409 = load { ptr, i64, i64 }, ptr %t408 + store { ptr, i64, i64 } %t409, ptr %a410 + store { ptr, i64, i64 } { ptr @.str.4359, i64 3, i64 0 }, ptr %a411 + %t412 = call i32 @finch_str_eq(ptr %a410, ptr %a411) + %t413 = icmp ne i32 %t412, 0 + br label %logic.rend6734 +logic.rend6734: + br label %logic.end6733 +logic.end6733: + %t414 = phi i1 [ true, %logic.from6731 ], [ %t413, %logic.rend6734 ] + br label %logic.from6735 +logic.from6735: + br i1 %t414, label %logic.end6737, label %logic.rhs6736 +logic.rhs6736: + %t415 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 0 + %t416 = load { ptr, i64, i64 }, ptr %t415 + store { ptr, i64, i64 } %t416, ptr %a417 + store { ptr, i64, i64 } { ptr @.str.4360, i64 3, i64 0 }, ptr %a418 + %t419 = call i32 @finch_str_eq(ptr %a417, ptr %a418) + %t420 = icmp ne i32 %t419, 0 + br label %logic.rend6738 +logic.rend6738: + br label %logic.end6737 +logic.end6737: + %t421 = phi i1 [ true, %logic.from6735 ], [ %t420, %logic.rend6738 ] + br i1 %t421, label %then6739, label %endif6741 +then6739: + %t422 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t423 = load { ptr, i64, i64 }, ptr %t422 + store { ptr, i64, i64 } %t423, ptr %a424 + store { ptr, i64, i64 } { ptr @.str.4361, i64 3, i64 0 }, ptr %a425 + %t426 = call i32 @finch_str_eq(ptr %a424, ptr %a425) + %t427 = icmp eq i32 %t426, 0 + br i1 %t427, label %then6742, label %endif6744 +then6742: + %t428 = load ptr, ptr %a1 + %t429 = load %S.ast.Node, ptr %a2 + %t430 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t431 = load { ptr, i64, i64 }, ptr %t430 + store { ptr, i64, i64 } { ptr @.str.4362, i64 37, 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.4363, i64 1, i64 0 }, ptr %a438 + call void @finch_str_concat(ptr %a436, ptr %a437, ptr %a438) + store { ptr, i64, i64 } %t435, ptr %a439 + call void @finch_str_drop(ptr %a439) + %t440 = load { ptr, i64, i64 }, ptr %a436 + call void @finch.gen.fail(ptr %t428, %S.ast.Node %t429, { ptr, i64, i64 } %t440) + store { ptr, i64, i64 } %t440, ptr %a441 + call void @finch_str_drop(ptr %a441) + br label %endif6744 +endif6744: + %t442 = load i1, ptr %a3 + br i1 %t442, label %then6745, label %endif6747 +then6745: + %t443 = load ptr, ptr %a1 + %t444 = load %S.ast.Node, ptr %a2 + call void @finch.gen.fail(ptr %t443, %S.ast.Node %t444, { ptr, i64, i64 } { ptr @.str.4364, i64 48, i64 0 }) + br label %endif6747 +endif6747: + %t445 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 0 + %t446 = load i1, ptr %t445 + br i1 %t446, label %then6748, label %endif6750 +then6748: + %t447 = load ptr, ptr %a1 + %t448 = load ptr, ptr %a1 + %t449 = load %S.ast.Type, ptr %a42 + %t450 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t448, %S.ast.Type %t449) + store { ptr, i64, i64 } { ptr @.str.4365, i64 23, i64 0 }, ptr %a452 + store { ptr, i64, i64 } %t450, ptr %a453 + call void @finch_str_concat(ptr %a451, ptr %a452, ptr %a453) + store { ptr, i64, i64 } %t450, ptr %a454 + call void @finch_str_drop(ptr %a454) + %t455 = load { ptr, i64, i64 }, ptr %a451 + store { ptr, i64, i64 } %t455, ptr %a457 + store { ptr, i64, i64 } { ptr @.str.4366, i64 6, i64 0 }, ptr %a458 + call void @finch_str_concat(ptr %a456, ptr %a457, ptr %a458) + store { ptr, i64, i64 } %t455, ptr %a459 + call void @finch_str_drop(ptr %a459) + %t460 = load { ptr, i64, i64 }, ptr %a456 + %t461 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 1 + %t462 = getelementptr inbounds %S.gen.Place, ptr %t461, i32 0, i32 0 + %t463 = load { ptr, i64, i64 }, ptr %t462 + store { ptr, i64, i64 } %t460, ptr %a465 + store { ptr, i64, i64 } %t463, ptr %a466 + call void @finch_str_concat(ptr %a464, ptr %a465, ptr %a466) + store { ptr, i64, i64 } %t460, ptr %a467 + call void @finch_str_drop(ptr %a467) + %t468 = load { ptr, i64, i64 }, ptr %a464 + store { ptr, i64, i64 } %t468, ptr %a470 + store { ptr, i64, i64 } { ptr @.str.4367, i64 14, i64 0 }, ptr %a471 + call void @finch_str_concat(ptr %a469, ptr %a470, ptr %a471) + store { ptr, i64, i64 } %t468, ptr %a472 + call void @finch_str_drop(ptr %a472) + %t473 = load { ptr, i64, i64 }, ptr %a469 + %t474 = call { ptr, i64, i64 } @finch.gen.op(ptr %t447, { ptr, i64, i64 } %t473) + store { ptr, i64, i64 } %t473, ptr %a475 + call void @finch_str_drop(ptr %a475) + store { ptr, i64, i64 } %t474, ptr %a476 + %t477 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 + %t478 = load ptr, ptr %a1 + %t479 = load { ptr, i64, i64 }, ptr %a476 + %t480 = call { ptr, i64, i64 } @finch.gen.load(ptr %t478, { ptr, i64, i64 } { ptr @.str.4368, i64 3, i64 0 }, { ptr, i64, i64 } %t479) + %t481 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t480, 0 + %t482 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4369, i64 3, i64 0 }) + %t483 = insertvalue %S.gen.Val %t481, %S.ast.Type %t482, 1 + %t484 = insertvalue %S.gen.Ref %t477, %S.gen.Val %t483, 2 + call void @finch_str_drop(ptr %a476) + call void @finch.drop.S_ast_Type(ptr %a42) + call void @finch.drop.S_gen_Ref(ptr %a35) + ret %S.gen.Ref %t484 +endif6750: + %t485 = load ptr, ptr %a1 + %t486 = load ptr, ptr %a1 + %t487 = load %S.ast.Type, ptr %a42 + %t488 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t486, %S.ast.Type %t487) + store { ptr, i64, i64 } { ptr @.str.4370, i64 13, i64 0 }, ptr %a490 + store { ptr, i64, i64 } %t488, ptr %a491 + call void @finch_str_concat(ptr %a489, ptr %a490, ptr %a491) + store { ptr, i64, i64 } %t488, ptr %a492 + call void @finch_str_drop(ptr %a492) + %t493 = load { ptr, i64, i64 }, ptr %a489 + store { ptr, i64, i64 } %t493, ptr %a495 + store { ptr, i64, i64 } { ptr @.str.4371, i64 1, i64 0 }, ptr %a496 + call void @finch_str_concat(ptr %a494, ptr %a495, ptr %a496) + store { ptr, i64, i64 } %t493, ptr %a497 + call void @finch_str_drop(ptr %a497) + %t498 = load { ptr, i64, i64 }, ptr %a494 + %t499 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 2 + %t500 = getelementptr inbounds %S.gen.Val, ptr %t499, i32 0, i32 0 + %t501 = load { ptr, i64, i64 }, ptr %t500 + store { ptr, i64, i64 } %t498, ptr %a503 + store { ptr, i64, i64 } %t501, ptr %a504 + call void @finch_str_concat(ptr %a502, ptr %a503, ptr %a504) + store { ptr, i64, i64 } %t498, ptr %a505 + call void @finch_str_drop(ptr %a505) + %t506 = load { ptr, i64, i64 }, ptr %a502 + store { ptr, i64, i64 } %t506, ptr %a508 + store { ptr, i64, i64 } { ptr @.str.4372, i64 3, i64 0 }, ptr %a509 + call void @finch_str_concat(ptr %a507, ptr %a508, ptr %a509) + store { ptr, i64, i64 } %t506, ptr %a510 + call void @finch_str_drop(ptr %a510) + %t511 = load { ptr, i64, i64 }, ptr %a507 + %t512 = call { ptr, i64, i64 } @finch.gen.op(ptr %t485, { ptr, i64, i64 } %t511) + store { ptr, i64, i64 } %t511, ptr %a513 + call void @finch_str_drop(ptr %a513) + store { ptr, i64, i64 } %t512, ptr %a514 + %t515 = load ptr, ptr %a1 + %t516 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 2 + %t517 = load %S.gen.Val, ptr %t516 + call void @finch.gen.release(ptr %t515, %S.gen.Val %t517) + %t518 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 + %t519 = load { ptr, i64, i64 }, ptr %a514 + store { ptr, i64, i64 } %t519, ptr %a520 + call void @finch_str_copy(ptr %a521, ptr %a520) + %t522 = load { ptr, i64, i64 }, ptr %a521 + %t523 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t522, 0 + %t524 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4373, i64 3, i64 0 }) + %t525 = insertvalue %S.gen.Val %t523, %S.ast.Type %t524, 1 + %t526 = insertvalue %S.gen.Ref %t518, %S.gen.Val %t525, 2 + call void @finch_str_drop(ptr %a514) + call void @finch.drop.S_ast_Type(ptr %a42) + call void @finch.drop.S_gen_Ref(ptr %a35) + ret %S.gen.Ref %t526 +endif6741: + %t527 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 0 + %t528 = load { ptr, i64, i64 }, ptr %t527 + store { ptr, i64, i64 } %t528, ptr %a529 + store { ptr, i64, i64 } { ptr @.str.4374, i64 6, i64 0 }, ptr %a530 + %t531 = call i32 @finch_str_eq(ptr %a529, ptr %a530) + %t532 = icmp eq i32 %t531, 0 + br i1 %t532, label %then6751, label %endif6753 +then6751: + %t533 = load ptr, ptr %a1 + %t534 = load %S.ast.Node, ptr %a2 + %t535 = load %S.ast.Type, ptr %a42 + %t536 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t535) + store { ptr, i64, i64 } %t536, ptr %a538 + store { ptr, i64, i64 } { ptr @.str.4375, i64 21, i64 0 }, ptr %a539 + call void @finch_str_concat(ptr %a537, ptr %a538, ptr %a539) + store { ptr, i64, i64 } %t536, ptr %a540 + call void @finch_str_drop(ptr %a540) + %t541 = load { ptr, i64, i64 }, ptr %a537 + %t542 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t543 = load { ptr, i64, i64 }, ptr %t542 + store { ptr, i64, i64 } %t541, ptr %a545 + store { ptr, i64, i64 } %t543, ptr %a546 + call void @finch_str_concat(ptr %a544, ptr %a545, ptr %a546) + store { ptr, i64, i64 } %t541, ptr %a547 + call void @finch_str_drop(ptr %a547) + %t548 = load { ptr, i64, i64 }, ptr %a544 + store { ptr, i64, i64 } %t548, ptr %a550 + store { ptr, i64, i64 } { ptr @.str.4376, i64 2, i64 0 }, 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.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 - %t558 = load { ptr, i64, i64 }, ptr %t557 - store { ptr, i64, i64 } %t556, ptr %a560 - store { ptr, i64, i64 } %t558, ptr %a561 - 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.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.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 - 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 - store { ptr, i64, i64 } %t575, ptr %a577 - 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 %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 %range6393, label %inrange6394 -range6393: - call void @finch_panic_index(ptr @.str.4214, i64 3486, i64 %t581, i64 %t583) + store { ptr, i64, i64 } %t548, ptr %a552 + call void @finch_str_drop(ptr %a552) + %t553 = load { ptr, i64, i64 }, ptr %a549 + call void @finch.gen.fail(ptr %t533, %S.ast.Node %t534, { ptr, i64, i64 } %t553) + store { ptr, i64, i64 } %t553, ptr %a554 + call void @finch_str_drop(ptr %a554) + br label %endif6753 +endif6753: + %t555 = load ptr, ptr %a1 + %t556 = icmp eq ptr %t555, null + br i1 %t556, label %panic6754, label %ok6755 +panic6754: + call void @finch_panic(ptr @.str.4377, i64 3752, ptr @.str.4378) unreachable -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 - store %S.ast.Type %t587, ptr %a588 - 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 = 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 - 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 +ok6755: + %t557 = getelementptr inbounds %S.gen.Gen, ptr %t555, i32 0, i32 16 + %t558 = load ptr, ptr %a1 + %t559 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 3 + %t560 = load { ptr, i64, i64 }, ptr %t559 + %t561 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 2 + %t562 = load { ptr, i64, i64 }, ptr %t561 + %t563 = call i64 @finch.gen.findStruct(ptr %t558, { ptr, i64, i64 } %t560, { ptr, i64, i64 } %t562) + %t564 = load { ptr, i64, i64 }, ptr %t557 + %t565 = extractvalue { ptr, i64, i64 } %t564, 1 + %t566 = icmp uge i64 %t563, %t565 + br i1 %t566, label %range6756, label %inrange6757 +range6756: + call void @finch_panic_index(ptr @.str.4379, i64 3752, i64 %t563, i64 %t565) + unreachable +inrange6757: + %t567 = extractvalue { ptr, i64, i64 } %t564, 0 + %t568 = getelementptr inbounds %S.gen.StructDef, ptr %t567, i64 %t563 + %t569 = load %S.gen.StructDef, ptr %t568 + store %S.gen.StructDef %t569, ptr %a570 + call void @finch.copy.S_gen_StructDef(ptr %a571, ptr %a570) + %t572 = load %S.gen.StructDef, ptr %a571 + store %S.gen.StructDef %t572, ptr %a573 + %t574 = getelementptr inbounds %S.gen.StructDef, ptr %a573, i32 0, i32 11 + %t575 = getelementptr inbounds { ptr, i64, i64 }, ptr %t574, i32 0, i32 1 + %t576 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t577 = load { ptr, i64, i64 }, ptr %t576 + store i64 -1, ptr %a578 + %t579 = load i64, ptr %t575 + %t580 = load ptr, ptr %t574 + store i64 0, ptr %a581 + br label %find.cond6758 +find.cond6758: + %t582 = load i64, ptr %a581 + %t583 = icmp slt i64 %t582, %t579 + br i1 %t583, label %find.body6759, label %find.end6762 +find.body6759: + %t584 = getelementptr inbounds { ptr, i64, i64 }, ptr %t580, i64 %t582 + %t585 = load { ptr, i64, i64 }, ptr %t584 + store { ptr, i64, i64 } %t585, ptr %a586 + store { ptr, i64, i64 } %t577, ptr %a587 + %t588 = call i32 @finch_str_eq(ptr %a586, ptr %a587) + %t589 = icmp ne i32 %t588, 0 + br i1 %t589, label %find.hit6760, label %find.next6761 +find.hit6760: + store i64 %t582, ptr %a578 + br label %find.end6762 +find.next6761: + %t590 = add i64 %t582, 1 + store i64 %t590, ptr %a581 + br label %find.cond6758 +find.end6762: + %t591 = load i64, ptr %a578 + store i64 %t591, ptr %a592 + %t593 = load i64, ptr %a592 + %t594 = icmp slt i64 %t593, 0 + br i1 %t594, label %then6763, label %endif6765 +then6763: + %t595 = load ptr, ptr %a1 + %t596 = load %S.ast.Node, ptr %a2 + %t597 = load %S.ast.Type, ptr %a42 + %t598 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t597) + store { ptr, i64, i64 } { ptr @.str.4380, i64 11, i64 0 }, ptr %a600 + store { ptr, i64, i64 } %t598, ptr %a601 + call void @finch_str_concat(ptr %a599, ptr %a600, ptr %a601) + store { ptr, i64, i64 } %t598, ptr %a602 + call void @finch_str_drop(ptr %a602) + %t603 = load { ptr, i64, i64 }, ptr %a599 + store { ptr, i64, i64 } %t603, ptr %a605 + store { ptr, i64, i64 } { ptr @.str.4381, i64 15, i64 0 }, ptr %a606 + call void @finch_str_concat(ptr %a604, ptr %a605, ptr %a606) + store { ptr, i64, i64 } %t603, ptr %a607 + call void @finch_str_drop(ptr %a607) + %t608 = load { ptr, i64, i64 }, ptr %a604 + %t609 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t610 = load { ptr, i64, i64 }, ptr %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) + store { ptr, i64, i64 } %t608, ptr %a614 + call void @finch_str_drop(ptr %a614) + %t615 = load { ptr, i64, i64 }, ptr %a611 store { ptr, i64, i64 } %t615, ptr %a617 - store { ptr, i64, i64 } { ptr @.str.4217, i64 4, i64 0 }, ptr %a618 + store { ptr, i64, i64 } { ptr @.str.4382, i64 11, 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 } %t615, ptr %a619 + call void @finch_str_drop(ptr %a619) + %t620 = load { ptr, i64, i64 }, ptr %a616 + %t621 = getelementptr inbounds %S.gen.StructDef, ptr %a573, i32 0, i32 11 + %t622 = getelementptr inbounds { ptr, i64, i64 }, ptr %t621, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.4383, i64 2, i64 0 }, ptr %a623 + call void @finch_str_join(ptr %a624, ptr %t621, ptr %a623) + %t625 = load { ptr, i64, i64 }, ptr %a624 + store { ptr, i64, i64 } %t620, 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) + store { ptr, i64, i64 } %t620, ptr %a629 + call void @finch_str_drop(ptr %a629) + store { ptr, i64, i64 } %t625, ptr %a630 + call void @finch_str_drop(ptr %a630) + %t631 = load { ptr, i64, i64 }, ptr %a626 + store { ptr, i64, i64 } %t631, ptr %a633 + store { ptr, i64, i64 } { ptr @.str.4384, i64 1, i64 0 }, ptr %a634 + call void @finch_str_concat(ptr %a632, ptr %a633, ptr %a634) + store { ptr, i64, i64 } %t631, ptr %a635 + call void @finch_str_drop(ptr %a635) + %t636 = load { ptr, i64, i64 }, ptr %a632 + call void @finch.gen.fail(ptr %t595, %S.ast.Node %t596, { ptr, i64, i64 } %t636) + store { ptr, i64, i64 } %t636, ptr %a637 + call void @finch_str_drop(ptr %a637) + br label %endif6765 +endif6765: + %t638 = getelementptr inbounds %S.gen.StructDef, ptr %a573, i32 0, i32 12 + %t639 = load i64, ptr %a592 + %t640 = load { ptr, i64, i64 }, ptr %t638 + %t641 = extractvalue { ptr, i64, i64 } %t640, 1 + %t642 = icmp uge i64 %t639, %t641 + br i1 %t642, label %range6766, label %inrange6767 +range6766: + call void @finch_panic_index(ptr @.str.4385, i64 3757, i64 %t639, i64 %t641) unreachable -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 +inrange6767: + %t643 = extractvalue { ptr, i64, i64 } %t640, 0 + %t644 = getelementptr inbounds %S.ast.Type, ptr %t643, i64 %t639 + %t645 = load %S.ast.Type, ptr %t644 + store %S.ast.Type %t645, ptr %a646 + call void @finch.copy.S_ast_Type(ptr %a647, ptr %a646) + %t648 = load %S.ast.Type, ptr %a647 + store %S.ast.Type %t648, ptr %a649 + %t650 = load ptr, ptr %a1 + %t651 = load %S.ast.Node, ptr %a2 + %t652 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 + %t653 = load i64, ptr %t652 + %t654 = add i64 %t653, 1 + %t655 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t656 = getelementptr inbounds { ptr, i64, i64 }, ptr %t655, i32 0, i32 1 + %t657 = load i64, ptr %t656 + %t658 = load %S.ast.Type, ptr %a649 + %t659 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t658) + store { ptr, i64, i64 } { ptr @.str.4386, i64 9, i64 0 }, ptr %a661 + store { ptr, i64, i64 } %t659, ptr %a662 + call void @finch_str_concat(ptr %a660, ptr %a661, ptr %a662) + store { ptr, i64, i64 } %t659, ptr %a663 + call void @finch_str_drop(ptr %a663) + %t664 = load { ptr, i64, i64 }, ptr %a660 + store { ptr, i64, i64 } %t664, ptr %a666 + store { ptr, i64, i64 } { ptr @.str.4387, i64 1, i64 0 }, ptr %a667 + call void @finch_str_concat(ptr %a665, ptr %a666, ptr %a667) + store { ptr, i64, i64 } %t664, ptr %a668 + call void @finch_str_drop(ptr %a668) + %t669 = load { ptr, i64, i64 }, ptr %a665 + %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) + store { ptr, i64, i64 } %t669, ptr %a675 + call void @finch_str_drop(ptr %a675) + %t676 = load { ptr, i64, i64 }, ptr %a672 + store { ptr, i64, i64 } %t676, ptr %a678 + store { ptr, i64, i64 } { ptr @.str.4388, i64 4, i64 0 }, 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) + store { ptr, i64, i64 } %t676, ptr %a680 + call void @finch_str_drop(ptr %a680) + %t681 = load { ptr, i64, i64 }, ptr %a677 + call void @finch.gen.noteRef(ptr %t650, %S.ast.Node %t651, i64 %t654, i64 %t657, { ptr, i64, i64 } %t681, { ptr, i64, i64 } { ptr @.str.4389, i64 0, i64 0 }, i64 0, i64 0) + store { ptr, i64, i64 } %t681, ptr %a682 + call void @finch_str_drop(ptr %a682) + %t683 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 0 + %t684 = load i1, ptr %t683 + br i1 %t684, label %then6768, label %endif6770 +then6768: + %t685 = load ptr, ptr %a1 + %t686 = load ptr, ptr %a1 + %t687 = load %S.ast.Type, ptr %a42 + %t688 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t686, %S.ast.Type %t687) + store { ptr, i64, i64 } { ptr @.str.4390, i64 23, i64 0 }, ptr %a690 + store { ptr, i64, i64 } %t688, ptr %a691 + call void @finch_str_concat(ptr %a689, ptr %a690, ptr %a691) + store { ptr, i64, i64 } %t688, ptr %a692 + call void @finch_str_drop(ptr %a692) + %t693 = load { ptr, i64, i64 }, ptr %a689 + store { ptr, i64, i64 } %t693, ptr %a695 + store { ptr, i64, i64 } { ptr @.str.4391, i64 6, i64 0 }, ptr %a696 + call void @finch_str_concat(ptr %a694, ptr %a695, ptr %a696) + store { ptr, i64, i64 } %t693, ptr %a697 + call void @finch_str_drop(ptr %a697) + %t698 = load { ptr, i64, i64 }, ptr %a694 + %t699 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 1 + %t700 = getelementptr inbounds %S.gen.Place, ptr %t699, i32 0, i32 0 + %t701 = load { ptr, i64, i64 }, ptr %t700 + store { ptr, i64, i64 } %t698, ptr %a703 + store { ptr, i64, i64 } %t701, ptr %a704 + call void @finch_str_concat(ptr %a702, ptr %a703, ptr %a704) + store { ptr, i64, i64 } %t698, ptr %a705 + call void @finch_str_drop(ptr %a705) + %t706 = load { ptr, i64, i64 }, ptr %a702 + store { ptr, i64, i64 } %t706, ptr %a708 + store { ptr, i64, i64 } { ptr @.str.4392, i64 13, i64 0 }, ptr %a709 + call void @finch_str_concat(ptr %a707, ptr %a708, ptr %a709) + store { ptr, i64, i64 } %t706, ptr %a710 + call void @finch_str_drop(ptr %a710) + %t711 = load { ptr, i64, i64 }, ptr %a707 + %t712 = getelementptr inbounds %S.gen.StructDef, ptr %a573, i32 0, i32 3 + %t713 = load i64, ptr %a592 + %t714 = load { ptr, i64, i64 }, ptr %t712 + %t715 = extractvalue { ptr, i64, i64 } %t714, 1 + %t716 = icmp uge i64 %t713, %t715 + br i1 %t716, label %range6771, label %inrange6772 +range6771: + call void @finch_panic_index(ptr @.str.4393, i64 3760, i64 %t713, i64 %t715) unreachable -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 +inrange6772: + %t717 = extractvalue { ptr, i64, i64 } %t714, 0 + %t718 = getelementptr inbounds i64, ptr %t717, i64 %t713 + %t719 = load i64, ptr %t718 + call void @finch_str_from_int(ptr %a720, i64 %t719) + %t721 = load { ptr, i64, i64 }, ptr %a720 + store { ptr, i64, i64 } %t711, ptr %a723 + store { ptr, i64, i64 } %t721, ptr %a724 + call void @finch_str_concat(ptr %a722, ptr %a723, ptr %a724) + store { ptr, i64, i64 } %t711, ptr %a725 + call void @finch_str_drop(ptr %a725) + store { ptr, i64, i64 } %t721, ptr %a726 + call void @finch_str_drop(ptr %a726) + %t727 = load { ptr, i64, i64 }, ptr %a722 + %t728 = call { ptr, i64, i64 } @finch.gen.op(ptr %t685, { ptr, i64, i64 } %t727) + store { ptr, i64, i64 } %t727, ptr %a729 + call void @finch_str_drop(ptr %a729) + store { ptr, i64, i64 } %t728, ptr %a730 + %t731 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 + %t732 = load { ptr, i64, i64 }, ptr %a730 + store { ptr, i64, i64 } %t732, ptr %a733 + call void @finch_str_copy(ptr %a734, ptr %a733) + %t735 = load { ptr, i64, i64 }, ptr %a734 + %t736 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t735, 0 + %t737 = load %S.ast.Type, ptr %a649 + store %S.ast.Type %t737, ptr %a738 + call void @finch.copy.S_ast_Type(ptr %a739, ptr %a738) + %t740 = load %S.ast.Type, ptr %a739 + %t741 = insertvalue %S.gen.Place %t736, %S.ast.Type %t740, 1 + %t742 = insertvalue %S.gen.Ref %t731, %S.gen.Place %t741, 1 + call void @finch_str_drop(ptr %a730) + call void @finch.drop.S_ast_Type(ptr %a649) + call void @finch.drop.S_gen_StructDef(ptr %a573) + call void @finch.drop.S_ast_Type(ptr %a42) + call void @finch.drop.S_gen_Ref(ptr %a35) + ret %S.gen.Ref %t742 +endif6770: + %t743 = load ptr, ptr %a1 + %t744 = load ptr, ptr %a1 + %t745 = load %S.ast.Type, ptr %a42 + %t746 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t744, %S.ast.Type %t745) + store { ptr, i64, i64 } { ptr @.str.4394, i64 13, i64 0 }, ptr %a748 + store { ptr, i64, i64 } %t746, ptr %a749 + call void @finch_str_concat(ptr %a747, ptr %a748, ptr %a749) + store { ptr, i64, i64 } %t746, ptr %a750 + call void @finch_str_drop(ptr %a750) + %t751 = load { ptr, i64, i64 }, ptr %a747 + store { ptr, i64, i64 } %t751, ptr %a753 + store { ptr, i64, i64 } { ptr @.str.4395, i64 1, i64 0 }, ptr %a754 + call void @finch_str_concat(ptr %a752, ptr %a753, ptr %a754) + store { ptr, i64, i64 } %t751, ptr %a755 + call void @finch_str_drop(ptr %a755) + %t756 = load { ptr, i64, i64 }, ptr %a752 + %t757 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 2 + %t758 = getelementptr inbounds %S.gen.Val, ptr %t757, i32 0, i32 0 + %t759 = load { ptr, i64, i64 }, ptr %t758 + store { ptr, i64, i64 } %t756, ptr %a761 + store { ptr, i64, i64 } %t759, ptr %a762 + call void @finch_str_concat(ptr %a760, ptr %a761, ptr %a762) + store { ptr, i64, i64 } %t756, ptr %a763 + call void @finch_str_drop(ptr %a763) + %t764 = load { ptr, i64, i64 }, ptr %a760 + store { ptr, i64, i64 } %t764, ptr %a766 + store { ptr, i64, i64 } { ptr @.str.4396, i64 2, i64 0 }, ptr %a767 + call void @finch_str_concat(ptr %a765, ptr %a766, ptr %a767) + store { ptr, i64, i64 } %t764, ptr %a768 + call void @finch_str_drop(ptr %a768) + %t769 = load { ptr, i64, i64 }, ptr %a765 + %t770 = getelementptr inbounds %S.gen.StructDef, ptr %a573, i32 0, i32 3 + %t771 = load i64, ptr %a592 + %t772 = load { ptr, i64, i64 }, ptr %t770 + %t773 = extractvalue { ptr, i64, i64 } %t772, 1 + %t774 = icmp uge i64 %t771, %t773 + br i1 %t774, label %range6773, label %inrange6774 +range6773: + call void @finch_panic_index(ptr @.str.4397, i64 3763, i64 %t771, i64 %t773) + unreachable +inrange6774: + %t775 = extractvalue { ptr, i64, i64 } %t772, 0 + %t776 = getelementptr inbounds i64, ptr %t775, i64 %t771 + %t777 = load i64, ptr %t776 + call void @finch_str_from_int(ptr %a778, i64 %t777) + %t779 = load { ptr, i64, i64 }, ptr %a778 + store { ptr, i64, i64 } %t769, ptr %a781 + store { ptr, i64, i64 } %t779, ptr %a782 + call void @finch_str_concat(ptr %a780, ptr %a781, ptr %a782) + store { ptr, i64, i64 } %t769, ptr %a783 + call void @finch_str_drop(ptr %a783) + store { ptr, i64, i64 } %t779, ptr %a784 + call void @finch_str_drop(ptr %a784) + %t785 = load { ptr, i64, i64 }, ptr %a780 + %t786 = call { ptr, i64, i64 } @finch.gen.op(ptr %t743, { ptr, i64, i64 } %t785) + store { ptr, i64, i64 } %t785, ptr %a787 + call void @finch_str_drop(ptr %a787) + store { ptr, i64, i64 } %t786, ptr %a788 + %t789 = load { ptr, i64, i64 }, ptr %a788 + store { ptr, i64, i64 } %t789, ptr %a790 + call void @finch_str_copy(ptr %a791, ptr %a790) + %t792 = load { ptr, i64, i64 }, ptr %a791 + %t793 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t792, 0 + %t794 = load %S.ast.Type, ptr %a649 + store %S.ast.Type %t794, ptr %a795 + call void @finch.copy.S_ast_Type(ptr %a796, ptr %a795) + %t797 = load %S.ast.Type, ptr %a796 + %t798 = insertvalue %S.gen.Val %t793, %S.ast.Type %t797, 1 + store %S.gen.Val %t798, ptr %a799 + %t800 = load ptr, ptr %a1 + %t801 = load %S.ast.Type, ptr %a649 + %t802 = call i1 @finch.gen.owning(ptr %t800, %S.ast.Type %t801) + br label %logic.from6775 +logic.from6775: + br i1 %t802, label %logic.rhs6776, label %logic.end6777 +logic.rhs6776: + %t803 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 2 + %t804 = getelementptr inbounds %S.gen.Val, ptr %t803, i32 0, i32 2 + %t805 = load i1, ptr %t804 + br label %logic.rend6778 +logic.rend6778: + br label %logic.end6777 +logic.end6777: + %t806 = phi i1 [ false, %logic.from6775 ], [ %t805, %logic.rend6778 ] + br i1 %t806, label %then6779, label %endif6781 +then6779: + %t807 = load ptr, ptr %a1 + %t808 = load { ptr, i64, i64 }, ptr %a788 + %t809 = load %S.ast.Type, ptr %a649 + %t810 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t807, { ptr, i64, i64 } %t808, %S.ast.Type %t809) + %t811 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t810, 0 + %t812 = load %S.ast.Type, ptr %a649 + store %S.ast.Type %t812, ptr %a813 + call void @finch.copy.S_ast_Type(ptr %a814, ptr %a813) + %t815 = load %S.ast.Type, ptr %a814 + %t816 = insertvalue %S.gen.Val %t811, %S.ast.Type %t815, 1 + %t817 = insertvalue %S.gen.Val %t816, i1 true, 2 + %t818 = load %S.gen.Val, ptr %a799 + store %S.gen.Val %t817, ptr %a799 + store %S.gen.Val %t818, ptr %a819 + call void @finch.drop.S_gen_Val(ptr %a819) + br label %endif6781 +endif6781: + %t820 = load ptr, ptr %a1 + %t821 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 2 + %t822 = load %S.gen.Val, ptr %t821 + call void @finch.gen.release(ptr %t820, %S.gen.Val %t822) + %t823 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 + %t824 = load %S.gen.Val, ptr %a799 + store %S.gen.Val %t824, ptr %a825 + call void @finch.copy.S_gen_Val(ptr %a826, ptr %a825) + %t827 = load %S.gen.Val, ptr %a826 + %t828 = insertvalue %S.gen.Ref %t823, %S.gen.Val %t827, 2 + call void @finch.drop.S_gen_Val(ptr %a799) + call void @finch_str_drop(ptr %a788) + call void @finch.drop.S_ast_Type(ptr %a649) + call void @finch.drop.S_gen_StructDef(ptr %a573) + call void @finch.drop.S_ast_Type(ptr %a42) + call void @finch.drop.S_gen_Ref(ptr %a35) + ret %S.gen.Ref %t828 } define internal %S.gen.Ref @finch.gen.index(ptr %p0, %S.ast.Node %p1, i1 %p2) { @@ -57554,134 +68072,8 @@ entry: %a2 = alloca %S.ast.Node, align 16 %a3 = alloca i1, align 16 %a14 = alloca %S.gen.Ref, align 16 - %a18 = alloca %S.ast.Type, align 16 - %a19 = alloca %S.ast.Type, align 16 - %a21 = alloca %S.ast.Type, align 16 - %a27 = alloca %S.ast.Type, align 16 - %a28 = alloca %S.ast.Type, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a65 = 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 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a89 = 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 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = 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 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = 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 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca %S.ast.Type, align 16 - %a134 = alloca %S.ast.Type, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca %S.ast.Type, align 16 - %a172 = alloca %S.ast.Type, align 16 - %a174 = alloca %S.ast.Type, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = 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 - %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 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca %S.ast.Type, align 16 - %a206 = alloca %S.ast.Type, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca %S.ast.Type, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca %S.ast.Type, align 16 - %a247 = alloca %S.ast.Type, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a268 = 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 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a280 = 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 - %a299 = 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 - %a310 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a315 = 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 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca { ptr, i64, i64 }, align 16 - %a326 = 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 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a343 = alloca { ptr, i64, i64 }, align 16 - %a348 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca %S.ast.Type, align 16 - %a354 = alloca %S.ast.Type, align 16 - %a364 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca %S.ast.Type, align 16 - %a372 = alloca %S.ast.Type, align 16 - %a375 = alloca %S.gen.Val, align 16 - %a389 = alloca %S.ast.Type, align 16 - %a390 = alloca %S.ast.Type, align 16 - %a396 = alloca %S.gen.Val, align 16 - %a397 = alloca %S.gen.Val, align 16 + %a20 = alloca i64, align 16 + %a32 = alloca %S.gen.Ref, align 16 store ptr %p0, ptr %a1 store %S.ast.Node %p1, ptr %a2 store i1 %p2, ptr %a3 @@ -57690,523 +68082,847 @@ 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 %range6409, label %inrange6410 -range6409: - call void @finch_panic_index(ptr @.str.4227, i64 3501, i64 0, i64 %t7) + br i1 %t8, label %range6782, label %inrange6783 +range6782: + call void @finch_panic_index(ptr @.str.4398, i64 3773, i64 0, i64 %t7) unreachable -inrange6410: +inrange6783: %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 = load i1, ptr %a3 %t13 = call %S.gen.Ref @finch.gen.ref(ptr %t4, %S.ast.Node %t11, i1 %t12) store %S.gen.Ref %t13, ptr %a14 - %t15 = getelementptr inbounds %S.gen.Ref, ptr %a14, i32 0, i32 2 - %t16 = getelementptr inbounds %S.gen.Val, ptr %t15, i32 0, i32 1 - %t17 = load %S.ast.Type, ptr %t16 - store %S.ast.Type %t17, ptr %a18 - call void @finch.copy.S_ast_Type(ptr %a19, ptr %a18) - %t20 = load %S.ast.Type, ptr %a19 + %t15 = load ptr, ptr %a1 + %t16 = icmp eq ptr %t15, null + br i1 %t16, label %panic6784, label %ok6785 +panic6784: + call void @finch_panic(ptr @.str.4399, i64 3774, ptr @.str.4400) + unreachable +ok6785: + %t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 11 + %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t17, i32 0, i32 1 + %t19 = load i64, ptr %t18 + store i64 %t19, ptr %a20 + %t21 = getelementptr inbounds %S.gen.Ref, ptr %a14, i32 0, i32 0 + %t22 = load i1, ptr %t21 + %t23 = xor i1 %t22, true + br i1 %t23, label %then6786, label %endif6788 +then6786: + %t24 = load ptr, ptr %a1 + %t25 = getelementptr inbounds %S.gen.Ref, ptr %a14, i32 0, i32 2 + %t26 = load %S.gen.Val, ptr %t25 + call void @finch.gen.hold(ptr %t24, %S.gen.Val %t26) + br label %endif6788 +endif6788: + %t27 = load ptr, ptr %a1 + %t28 = load %S.ast.Node, ptr %a2 + %t29 = load %S.gen.Ref, ptr %a14 + %t30 = load i1, ptr %a3 + %t31 = call %S.gen.Ref @finch.gen.indexOf(ptr %t27, %S.ast.Node %t28, %S.gen.Ref %t29, i1 %t30) + store %S.gen.Ref %t31, ptr %a32 + %t33 = load ptr, ptr %a1 + %t34 = load i64, ptr %a20 + call void @finch.gen.heldEnd(ptr %t33, i64 %t34) + %t35 = load %S.gen.Ref, ptr %a32 + call void @finch.drop.S_gen_Ref(ptr %a14) + ret %S.gen.Ref %t35 +} + +define internal %S.gen.Ref @finch.gen.indexOf(ptr %p0, %S.ast.Node %p1, %S.gen.Ref %p2, i1 %p3) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Node, align 16 + %a3 = alloca %S.gen.Ref, align 16 + %a4 = alloca i1, align 16 + %a8 = alloca %S.ast.Type, align 16 + %a9 = alloca %S.ast.Type, align 16 + %a11 = alloca %S.ast.Type, align 16 + %a17 = alloca %S.ast.Type, align 16 + %a18 = alloca %S.ast.Type, align 16 + %a21 = alloca %S.ast.Type, align 16 + %a24 = alloca { ptr, i64, i64 }, align 16 + %a25 = alloca { ptr, i64, i64 }, align 16 + %a53 = alloca %S.gen.Val, align 16 + %a54 = alloca %S.ast.Type, align 16 + %a56 = alloca { ptr, i64, i64 }, align 16 + %a57 = alloca { ptr, i64, i64 }, align 16 + %a59 = alloca %S.gen.Val, align 16 + %a60 = alloca { ptr, i64, i64 }, align 16 + %a63 = alloca { ptr, i64, i64 }, align 16 + %a64 = alloca { ptr, i64, i64 }, align 16 + %a67 = alloca { ptr, i64, i64 }, align 16 + %a73 = alloca { ptr, i64, i64 }, align 16 + %a74 = alloca { ptr, i64, i64 }, align 16 + %a77 = alloca { ptr, i64, i64 }, align 16 + %a83 = alloca { ptr, i64, i64 }, align 16 + %a88 = 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 + %a99 = 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 + %a104 = 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 + %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 + %a115 = 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 + %a121 = alloca { ptr, i64, i64 }, align 16 + %a124 = alloca { ptr, i64, i64 }, align 16 + %a125 = alloca { ptr, i64, i64 }, align 16 + %a128 = alloca { ptr, i64, i64 }, align 16 + %a129 = alloca { ptr, i64, i64 }, align 16 + %a139 = alloca %S.ast.Type, align 16 + %a140 = alloca %S.ast.Type, align 16 + %a146 = alloca { ptr, i64, i64 }, align 16 + %a147 = alloca { ptr, i64, i64 }, align 16 + %a159 = alloca { ptr, i64, i64 }, align 16 + %a160 = alloca { ptr, i64, i64 }, align 16 + %a162 = alloca { ptr, i64, i64 }, align 16 + %a171 = alloca { ptr, i64, i64 }, align 16 + %a179 = alloca %S.ast.Type, align 16 + %a180 = alloca %S.ast.Type, align 16 + %a182 = alloca %S.ast.Type, align 16 + %a188 = 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 + %a196 = alloca { ptr, i64, i64 }, align 16 + %a199 = 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 + %a207 = alloca { ptr, i64, i64 }, align 16 + %a210 = 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 + %a216 = alloca { ptr, i64, i64 }, align 16 + %a219 = alloca %S.ast.Type, align 16 + %a220 = alloca %S.ast.Type, align 16 + %a226 = alloca { ptr, i64, i64 }, align 16 + %a227 = alloca { ptr, i64, i64 }, align 16 + %a232 = alloca { ptr, i64, i64 }, align 16 + %a233 = alloca { ptr, i64, i64 }, align 16 + %a241 = 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 + %a248 = alloca %S.ast.Type, align 16 + %a251 = alloca { ptr, i64, i64 }, align 16 + %a252 = alloca { ptr, i64, i64 }, align 16 + %a262 = alloca %S.ast.Type, align 16 + %a263 = alloca %S.ast.Type, align 16 + %a266 = alloca %S.ast.Type, align 16 + %a269 = alloca { ptr, i64, i64 }, align 16 + %a270 = 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 + %a288 = alloca { ptr, i64, i64 }, align 16 + %a289 = alloca { ptr, i64, i64 }, align 16 + %a290 = alloca { ptr, i64, i64 }, align 16 + %a291 = alloca { ptr, i64, i64 }, align 16 + %a293 = alloca { ptr, i64, i64 }, align 16 + %a297 = alloca { ptr, i64, i64 }, align 16 + %a298 = alloca { ptr, i64, i64 }, align 16 + %a300 = alloca { ptr, i64, i64 }, align 16 + %a309 = 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 + %a316 = alloca { ptr, i64, i64 }, align 16 + %a317 = alloca { ptr, i64, i64 }, align 16 + %a318 = alloca { ptr, i64, i64 }, align 16 + %a319 = alloca { ptr, i64, i64 }, align 16 + %a322 = alloca { ptr, i64, i64 }, align 16 + %a323 = alloca { ptr, i64, i64 }, align 16 + %a330 = alloca { ptr, i64, i64 }, align 16 + %a331 = alloca { ptr, i64, i64 }, align 16 + %a332 = alloca { ptr, i64, i64 }, align 16 + %a334 = 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 + %a340 = alloca { ptr, i64, i64 }, align 16 + %a341 = alloca { ptr, i64, i64 }, align 16 + %a346 = 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 + %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 + %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 + %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 + %a368 = alloca { ptr, i64, i64 }, align 16 + %a369 = alloca { ptr, i64, i64 }, align 16 + %a370 = alloca { ptr, i64, i64 }, align 16 + %a371 = alloca { ptr, i64, i64 }, align 16 + %a374 = alloca { ptr, i64, i64 }, align 16 + %a375 = alloca { ptr, i64, i64 }, align 16 + %a380 = alloca { ptr, i64, i64 }, align 16 + %a381 = alloca { ptr, i64, i64 }, align 16 + %a385 = alloca %S.ast.Type, align 16 + %a386 = alloca %S.ast.Type, align 16 + %a396 = alloca { ptr, i64, i64 }, align 16 + %a397 = alloca { ptr, i64, i64 }, align 16 + %a399 = alloca { ptr, i64, i64 }, align 16 + %a400 = alloca { ptr, i64, i64 }, align 16 + %a404 = alloca %S.ast.Type, align 16 + %a405 = alloca %S.ast.Type, align 16 + %a408 = alloca %S.gen.Val, align 16 + %a422 = alloca %S.ast.Type, align 16 + %a423 = alloca %S.ast.Type, align 16 + %a428 = alloca %S.gen.Val, align 16 + %a434 = alloca %S.gen.Val, align 16 + %a435 = alloca %S.gen.Val, align 16 + store ptr %p0, ptr %a1 + store %S.ast.Node %p1, ptr %a2 + store %S.gen.Ref %p2, ptr %a3 + store i1 %p3, ptr %a4 + %t5 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 + %t6 = getelementptr inbounds %S.gen.Val, ptr %t5, i32 0, i32 1 + %t7 = load %S.ast.Type, ptr %t6 + store %S.ast.Type %t7, ptr %a8 + call void @finch.copy.S_ast_Type(ptr %a9, ptr %a8) + %t10 = load %S.ast.Type, ptr %a9 + store %S.ast.Type %t10, ptr %a11 + %t12 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 + %t13 = load i1, ptr %t12 + br i1 %t13, label %then6789, label %endif6791 +then6789: + %t14 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 1 + %t15 = getelementptr inbounds %S.gen.Place, ptr %t14, i32 0, i32 1 + %t16 = load %S.ast.Type, ptr %t15 + store %S.ast.Type %t16, ptr %a17 + call void @finch.copy.S_ast_Type(ptr %a18, ptr %a17) + %t19 = load %S.ast.Type, ptr %a18 + %t20 = load %S.ast.Type, ptr %a11 + store %S.ast.Type %t19, ptr %a11 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 %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 - store %S.ast.Type %t26, ptr %a27 - 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 %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.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 %then6414, label %endif6416 -then6414: - %t36 = load ptr, ptr %a1 - %t37 = load %S.ast.Node, ptr %a2 - %t38 = load %S.gen.Ref, ptr %a14 - %t39 = load %S.ast.Type, ptr %a21 - %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 -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 %range6417, label %inrange6418 -range6417: - call void @finch_panic_index(ptr @.str.4229, i64 3509, i64 1, i64 %t46) + call void @finch.drop.S_ast_Type(ptr %a21) + br label %endif6791 +endif6791: + %t22 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 0 + %t23 = load { ptr, i64, i64 }, ptr %t22 + store { ptr, i64, i64 } %t23, ptr %a24 + store { ptr, i64, i64 } { ptr @.str.4401, i64 3, i64 0 }, ptr %a25 + %t26 = call i32 @finch_str_eq(ptr %a24, ptr %a25) + %t27 = icmp ne i32 %t26, 0 + br i1 %t27, label %then6792, label %endif6794 +then6792: + %t28 = load ptr, ptr %a1 + %t29 = load %S.ast.Node, ptr %a2 + %t30 = load %S.gen.Ref, ptr %a3 + %t31 = load %S.ast.Type, ptr %a11 + %t32 = load i1, ptr %a4 + %t33 = call %S.gen.Ref @finch.gen.mapIndex(ptr %t28, %S.ast.Node %t29, %S.gen.Ref %t30, %S.ast.Type %t31, i1 %t32) + call void @finch.drop.S_ast_Type(ptr %a11) + ret %S.gen.Ref %t33 +endif6794: + %t34 = load ptr, ptr %a1 + %t35 = load ptr, ptr %a1 + %t36 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t37 = load { ptr, i64, i64 }, ptr %t36 + %t38 = extractvalue { ptr, i64, i64 } %t37, 1 + %t39 = icmp uge i64 1, %t38 + br i1 %t39, label %range6795, label %inrange6796 +range6795: + call void @finch_panic_index(ptr @.str.4402, i64 3791, i64 1, i64 %t38) unreachable -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.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 %range6419, label %inrange6420 -range6419: - call void @finch_panic_index(ptr @.str.4231, i64 3509, i64 1, i64 %t55) +inrange6796: + %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.4403, 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 %range6797, label %inrange6798 +range6797: + call void @finch_panic_index(ptr @.str.4404, i64 3791, i64 1, i64 %t47) unreachable -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.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) - %t64 = load { ptr, i64, i64 }, ptr %a63 - store { ptr, i64, i64 } %t64, ptr %a65 - %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.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 %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 %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 - store { ptr, i64, i64 } %t77, ptr %a78 - 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 %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 %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 - %t88 = load i64, ptr %t87 - call void @finch_str_from_int(ptr %a89, i64 %t88) - %t90 = load { ptr, i64, i64 }, ptr %a89 - %t91 = load %S.ast.Node, ptr %a2 - call void @finch.gen.boundsCheck(ptr %t85, { ptr, i64, i64 } %t86, { ptr, i64, i64 } %t90, %S.ast.Node %t91) +inrange6798: + %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.4405, i64 8, i64 0 }) + store %S.gen.Val %t43, ptr %a53 + call void @finch.drop.S_gen_Val(ptr %a53) + store %S.ast.Type %t44, ptr %a54 + call void @finch.drop.S_ast_Type(ptr %a54) + %t55 = extractvalue %S.gen.Val %t52, 0 + store { ptr, i64, i64 } %t55, ptr %a56 + call void @finch_str_copy(ptr %a57, ptr %a56) + %t58 = load { ptr, i64, i64 }, ptr %a57 + store %S.gen.Val %t52, ptr %a59 + call void @finch.drop.S_gen_Val(ptr %a59) + store { ptr, i64, i64 } %t58, ptr %a60 + %t61 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 0 + %t62 = load { ptr, i64, i64 }, ptr %t61 + store { ptr, i64, i64 } %t62, ptr %a63 + store { ptr, i64, i64 } { ptr @.str.4406, i64 5, i64 0 }, ptr %a64 + %t65 = call i32 @finch_str_eq(ptr %a63, ptr %a64) + %t66 = icmp ne i32 %t65, 0 + br i1 %t66, label %then6799, label %endif6801 +then6799: + store { ptr, i64, i64 } { ptr @.str.4407, i64 0, i64 0 }, ptr %a67 + %t68 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 + %t69 = load i1, ptr %t68 + br i1 %t69, label %then6802, label %else6803 +then6802: + %t70 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 1 + %t71 = getelementptr inbounds %S.gen.Place, ptr %t70, i32 0, i32 0 + %t72 = load { ptr, i64, i64 }, ptr %t71 + store { ptr, i64, i64 } %t72, ptr %a73 + call void @finch_str_copy(ptr %a74, ptr %a73) + %t75 = load { ptr, i64, i64 }, ptr %a74 + %t76 = load { ptr, i64, i64 }, ptr %a67 + store { ptr, i64, i64 } %t75, ptr %a67 + store { ptr, i64, i64 } %t76, ptr %a77 + call void @finch_str_drop(ptr %a77) + br label %endif6804 +else6803: + %t78 = load ptr, ptr %a1 + %t79 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 + %t80 = load %S.gen.Val, ptr %t79 + %t81 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t78, %S.gen.Val %t80) + %t82 = load { ptr, i64, i64 }, ptr %a67 + store { ptr, i64, i64 } %t81, ptr %a67 + store { ptr, i64, i64 } %t82, ptr %a83 + call void @finch_str_drop(ptr %a83) + br label %endif6804 +endif6804: + %t84 = load ptr, ptr %a1 + %t85 = load { ptr, i64, i64 }, ptr %a60 + %t86 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 4 + %t87 = load i64, ptr %t86 + call void @finch_str_from_int(ptr %a88, i64 %t87) + %t89 = load { ptr, i64, i64 }, ptr %a88 + %t90 = load %S.ast.Node, ptr %a2 + call void @finch.gen.boundsCheck(ptr %t84, { ptr, i64, i64 } %t85, { ptr, i64, i64 } %t89, %S.ast.Node %t90) + store { ptr, i64, i64 } %t89, ptr %a91 + call void @finch_str_drop(ptr %a91) %t92 = load ptr, ptr %a1 %t93 = load ptr, ptr %a1 - %t94 = load %S.ast.Type, ptr %a21 + %t94 = load %S.ast.Type, ptr %a11 %t95 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t93, %S.ast.Type %t94) - store { ptr, i64, i64 } { ptr @.str.4235, i64 23, i64 0 }, ptr %a97 + store { ptr, i64, i64 } { ptr @.str.4408, 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.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 - store { ptr, i64, i64 } %t103, ptr %a106 - store { ptr, i64, i64 } %t104, 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 %a110 - 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 - store { ptr, i64, i64 } %t112, 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 - %t118 = call { ptr, i64, i64 } @finch.gen.op(ptr %t92, { ptr, i64, i64 } %t117) - store { ptr, i64, i64 } %t118, ptr %a119 - %t120 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t121 = load { ptr, i64, i64 }, ptr %a119 - store { ptr, i64, i64 } %t121, ptr %a122 - call void @finch_str_copy(ptr %a123, ptr %a122) - %t124 = load { ptr, i64, i64 }, ptr %a123 - %t125 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t124, 0 - %t126 = getelementptr inbounds %S.ast.Type, ptr %a21, i32 0, i32 1 - %t127 = load { ptr, i64, i64 }, ptr %t126 - %t128 = extractvalue { ptr, i64, i64 } %t127, 1 - %t129 = icmp uge i64 0, %t128 - br i1 %t129, label %range6427, label %inrange6428 -range6427: - call void @finch_panic_index(ptr @.str.4238, i64 3519, i64 0, i64 %t128) + store { ptr, i64, i64 } %t95, ptr %a99 + call void @finch_str_drop(ptr %a99) + %t100 = load { ptr, i64, i64 }, ptr %a96 + store { ptr, i64, i64 } %t100, ptr %a102 + store { ptr, i64, i64 } { ptr @.str.4409, i64 6, i64 0 }, ptr %a103 + call void @finch_str_concat(ptr %a101, ptr %a102, ptr %a103) + store { ptr, i64, i64 } %t100, ptr %a104 + call void @finch_str_drop(ptr %a104) + %t105 = load { ptr, i64, i64 }, ptr %a101 + %t106 = load { ptr, i64, i64 }, ptr %a67 + store { ptr, i64, i64 } %t105, ptr %a108 + store { ptr, i64, i64 } %t106, ptr %a109 + call void @finch_str_concat(ptr %a107, ptr %a108, ptr %a109) + store { ptr, i64, i64 } %t105, ptr %a110 + call void @finch_str_drop(ptr %a110) + %t111 = load { ptr, i64, i64 }, ptr %a107 + store { ptr, i64, i64 } %t111, ptr %a113 + store { ptr, i64, i64 } { ptr @.str.4410, i64 13, i64 0 }, ptr %a114 + call void @finch_str_concat(ptr %a112, ptr %a113, ptr %a114) + store { ptr, i64, i64 } %t111, ptr %a115 + call void @finch_str_drop(ptr %a115) + %t116 = load { ptr, i64, i64 }, ptr %a112 + %t117 = load { ptr, i64, i64 }, ptr %a60 + store { ptr, i64, i64 } %t116, ptr %a119 + store { ptr, i64, i64 } %t117, ptr %a120 + call void @finch_str_concat(ptr %a118, ptr %a119, ptr %a120) + store { ptr, i64, i64 } %t116, ptr %a121 + call void @finch_str_drop(ptr %a121) + %t122 = load { ptr, i64, i64 }, ptr %a118 + %t123 = call { ptr, i64, i64 } @finch.gen.op(ptr %t92, { ptr, i64, i64 } %t122) + store { ptr, i64, i64 } %t122, ptr %a124 + call void @finch_str_drop(ptr %a124) + store { ptr, i64, i64 } %t123, ptr %a125 + %t126 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 + %t127 = load { ptr, i64, i64 }, ptr %a125 + store { ptr, i64, i64 } %t127, ptr %a128 + call void @finch_str_copy(ptr %a129, ptr %a128) + %t130 = load { ptr, i64, i64 }, ptr %a129 + %t131 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t130, 0 + %t132 = getelementptr inbounds %S.ast.Type, ptr %a11, 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 %range6805, label %inrange6806 +range6805: + call void @finch_panic_index(ptr @.str.4411, i64 3801, i64 0, i64 %t134) unreachable -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 - store %S.ast.Type %t132, ptr %a133 - call void @finch.copy.S_ast_Type(ptr %a134, ptr %a133) - %t135 = load %S.ast.Type, ptr %a134 - %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 -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.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 %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 %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.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 - store { ptr, i64, i64 } %t152, ptr %a153 - call void @finch_str_copy(ptr %a154, ptr %a153) - %t155 = load { ptr, i64, i64 }, ptr %a154 - 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 %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.4241, i64 3, i64 0 }, { ptr, i64, i64 } %t162) - store { ptr, i64, i64 } %t163, ptr %a156 - 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 %range6438, label %inrange6439 -range6438: - call void @finch_panic_index(ptr @.str.4242, i64 3529, i64 0, i64 %t166) +inrange6806: + %t136 = extractvalue { ptr, i64, i64 } %t133, 0 + %t137 = getelementptr inbounds %S.ast.Type, ptr %t136, i64 0 + %t138 = load %S.ast.Type, ptr %t137 + store %S.ast.Type %t138, ptr %a139 + call void @finch.copy.S_ast_Type(ptr %a140, ptr %a139) + %t141 = load %S.ast.Type, ptr %a140 + %t142 = insertvalue %S.gen.Place %t131, %S.ast.Type %t141, 1 + %t143 = insertvalue %S.gen.Ref %t126, %S.gen.Place %t142, 1 + call void @finch_str_drop(ptr %a125) + call void @finch_str_drop(ptr %a67) + call void @finch_str_drop(ptr %a60) + call void @finch.drop.S_ast_Type(ptr %a11) + ret %S.gen.Ref %t143 +endif6801: + %t144 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 0 + %t145 = load { ptr, i64, i64 }, ptr %t144 + store { ptr, i64, i64 } %t145, ptr %a146 + store { ptr, i64, i64 } { ptr @.str.4412, i64 3, i64 0 }, ptr %a147 + %t148 = call i32 @finch_str_eq(ptr %a146, ptr %a147) + %t149 = icmp ne i32 %t148, 0 + br i1 %t149, label %then6807, label %endif6809 +then6807: + %t150 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 1 + %t151 = getelementptr inbounds { ptr, i64, i64 }, ptr %t150, i32 0, i32 1 + %t152 = load i64, ptr %t151 + %t153 = icmp eq i64 %t152, 0 + br i1 %t153, label %then6810, label %endif6812 +then6810: + %t154 = load ptr, ptr %a1 + %t155 = load %S.ast.Node, ptr %a2 + call void @finch.gen.fail(ptr %t154, %S.ast.Node %t155, { ptr, i64, i64 } { ptr @.str.4413, i64 57, i64 0 }) + br label %endif6812 +endif6812: + %t156 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 + %t157 = getelementptr inbounds %S.gen.Val, ptr %t156, i32 0, i32 0 + %t158 = load { ptr, i64, i64 }, ptr %t157 + store { ptr, i64, i64 } %t158, ptr %a159 + call void @finch_str_copy(ptr %a160, ptr %a159) + %t161 = load { ptr, i64, i64 }, ptr %a160 + store { ptr, i64, i64 } %t161, ptr %a162 + %t163 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 + %t164 = load i1, ptr %t163 + br i1 %t164, label %then6813, label %endif6815 +then6813: + %t165 = load ptr, ptr %a1 + %t166 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 1 + %t167 = getelementptr inbounds %S.gen.Place, ptr %t166, i32 0, i32 0 + %t168 = load { ptr, i64, i64 }, ptr %t167 + %t169 = call { ptr, i64, i64 } @finch.gen.load(ptr %t165, { ptr, i64, i64 } { ptr @.str.4414, i64 3, i64 0 }, { ptr, i64, i64 } %t168) + %t170 = load { ptr, i64, i64 }, ptr %a162 + store { ptr, i64, i64 } %t169, ptr %a162 + store { ptr, i64, i64 } %t170, ptr %a171 + call void @finch_str_drop(ptr %a171) + br label %endif6815 +endif6815: + %t172 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 1 + %t173 = load { ptr, i64, i64 }, ptr %t172 + %t174 = extractvalue { ptr, i64, i64 } %t173, 1 + %t175 = icmp uge i64 0, %t174 + br i1 %t175, label %range6816, label %inrange6817 +range6816: + call void @finch_panic_index(ptr @.str.4415, i64 3811, i64 0, i64 %t174) unreachable -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 - store %S.ast.Type %t170, ptr %a171 - call void @finch.copy.S_ast_Type(ptr %a172, ptr %a171) - %t173 = load %S.ast.Type, ptr %a172 - store %S.ast.Type %t173, ptr %a174 - %t175 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t176 = load ptr, ptr %a1 - %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.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.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 +inrange6817: + %t176 = extractvalue { ptr, i64, i64 } %t173, 0 + %t177 = getelementptr inbounds %S.ast.Type, ptr %t176, i64 0 + %t178 = load %S.ast.Type, ptr %t177 + store %S.ast.Type %t178, ptr %a179 + call void @finch.copy.S_ast_Type(ptr %a180, ptr %a179) + %t181 = load %S.ast.Type, ptr %a180 + store %S.ast.Type %t181, ptr %a182 + %t183 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 + %t184 = load ptr, ptr %a1 + %t185 = load ptr, ptr %a1 + %t186 = load %S.ast.Type, ptr %a182 + %t187 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t185, %S.ast.Type %t186) + store { ptr, i64, i64 } { ptr @.str.4416, i64 23, i64 0 }, ptr %a189 store { ptr, i64, i64 } %t187, 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 + call void @finch_str_concat(ptr %a188, ptr %a189, ptr %a190) + store { ptr, i64, i64 } %t187, ptr %a191 + call void @finch_str_drop(ptr %a191) + %t192 = load { ptr, i64, i64 }, ptr %a188 store { ptr, i64, i64 } %t192, ptr %a194 - store { ptr, i64, i64 } { ptr @.str.4245, i64 6, i64 0 }, ptr %a195 + store { ptr, i64, i64 } { ptr @.str.4417, 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 - store { ptr, i64, i64 } %t196, ptr %a199 + store { ptr, i64, i64 } %t192, ptr %a196 + call void @finch_str_drop(ptr %a196) + %t197 = load { ptr, i64, i64 }, ptr %a193 + %t198 = load { ptr, i64, i64 }, ptr %a162 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 - %t202 = call { ptr, i64, i64 } @finch.gen.op(ptr %t176, { ptr, i64, i64 } %t201) - %t203 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t202, 0 - %t204 = load %S.ast.Type, ptr %a174 - store %S.ast.Type %t204, ptr %a205 - call void @finch.copy.S_ast_Type(ptr %a206, ptr %a205) - %t207 = load %S.ast.Type, ptr %a206 - %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 -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.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.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.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.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.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 %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.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 %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 %range6450, label %inrange6451 -range6450: - call void @finch_panic_index(ptr @.str.4251, i64 3537, i64 0, i64 %t241) - unreachable -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 - store %S.ast.Type %t245, ptr %a246 - 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 %endif6449 -endif6449: - %t249 = getelementptr inbounds %S.ast.Type, ptr %a21, i32 0, i32 0 + store { ptr, i64, i64 } %t198, ptr %a201 + call void @finch_str_concat(ptr %a199, ptr %a200, ptr %a201) + store { ptr, i64, i64 } %t197, ptr %a202 + call void @finch_str_drop(ptr %a202) + %t203 = load { ptr, i64, i64 }, ptr %a199 + store { ptr, i64, i64 } %t203, ptr %a205 + store { ptr, i64, i64 } { ptr @.str.4418, i64 6, i64 0 }, ptr %a206 + call void @finch_str_concat(ptr %a204, ptr %a205, ptr %a206) + store { ptr, i64, i64 } %t203, ptr %a207 + call void @finch_str_drop(ptr %a207) + %t208 = load { ptr, i64, i64 }, ptr %a204 + %t209 = load { ptr, i64, i64 }, ptr %a60 + store { ptr, i64, i64 } %t208, ptr %a211 + store { ptr, i64, i64 } %t209, ptr %a212 + call void @finch_str_concat(ptr %a210, ptr %a211, ptr %a212) + store { ptr, i64, i64 } %t208, ptr %a213 + call void @finch_str_drop(ptr %a213) + %t214 = load { ptr, i64, i64 }, ptr %a210 + %t215 = call { ptr, i64, i64 } @finch.gen.op(ptr %t184, { ptr, i64, i64 } %t214) + store { ptr, i64, i64 } %t214, ptr %a216 + call void @finch_str_drop(ptr %a216) + %t217 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t215, 0 + %t218 = load %S.ast.Type, ptr %a182 + 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 + %t222 = insertvalue %S.gen.Place %t217, %S.ast.Type %t221, 1 + %t223 = insertvalue %S.gen.Ref %t183, %S.gen.Place %t222, 1 + call void @finch.drop.S_ast_Type(ptr %a182) + call void @finch_str_drop(ptr %a162) + call void @finch_str_drop(ptr %a60) + call void @finch.drop.S_ast_Type(ptr %a11) + ret %S.gen.Ref %t223 +endif6809: + %t224 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 0 + %t225 = load { ptr, i64, i64 }, ptr %t224 + store { ptr, i64, i64 } %t225, ptr %a226 + store { ptr, i64, i64 } { ptr @.str.4419, i64 5, i64 0 }, ptr %a227 + %t228 = call i32 @finch_str_eq(ptr %a226, ptr %a227) + %t229 = icmp eq i32 %t228, 0 + br label %logic.from6818 +logic.from6818: + br i1 %t229, label %logic.rhs6819, label %logic.end6820 +logic.rhs6819: + %t230 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 0 + %t231 = load { ptr, i64, i64 }, ptr %t230 + store { ptr, i64, i64 } %t231, ptr %a232 + store { ptr, i64, i64 } { ptr @.str.4420, i64 3, i64 0 }, ptr %a233 + %t234 = call i32 @finch_str_eq(ptr %a232, ptr %a233) + %t235 = icmp eq i32 %t234, 0 + br label %logic.rend6821 +logic.rend6821: + br label %logic.end6820 +logic.end6820: + %t236 = phi i1 [ false, %logic.from6818 ], [ %t235, %logic.rend6821 ] + br i1 %t236, label %then6822, label %endif6824 +then6822: + %t237 = load ptr, ptr %a1 + %t238 = load %S.ast.Node, ptr %a2 + %t239 = load %S.ast.Type, ptr %a11 + %t240 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t239) + store { ptr, i64, i64 } { ptr @.str.4421, i64 46, i64 0 }, ptr %a242 + store { ptr, i64, i64 } %t240, ptr %a243 + call void @finch_str_concat(ptr %a241, ptr %a242, ptr %a243) + store { ptr, i64, i64 } %t240, ptr %a244 + call void @finch_str_drop(ptr %a244) + %t245 = load { ptr, i64, i64 }, ptr %a241 + call void @finch.gen.fail(ptr %t237, %S.ast.Node %t238, { ptr, i64, i64 } %t245) + store { ptr, i64, i64 } %t245, ptr %a246 + call void @finch_str_drop(ptr %a246) + br label %endif6824 +endif6824: + %t247 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4422, i64 4, i64 0 }) + store %S.ast.Type %t247, ptr %a248 + %t249 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 0 %t250 = load { ptr, i64, i64 }, ptr %t249 store { ptr, i64, i64 } %t250, ptr %a251 - store { ptr, i64, i64 } { ptr @.str.4252, i64 3, i64 0 }, ptr %a252 + store { ptr, i64, i64 } { ptr @.str.4423, i64 5, i64 0 }, ptr %a252 %t253 = call i32 @finch_str_eq(ptr %a251, ptr %a252) %t254 = icmp ne i32 %t253, 0 - 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.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 %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.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.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.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 %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 - store { ptr, i64, i64 } %t276, ptr %a277 - call void @finch_str_copy(ptr %a278, ptr %a277) - %t279 = load { ptr, i64, i64 }, ptr %a278 - 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 %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.4256, i64 17, i64 0 }, { ptr, i64, i64 } %t286) - store { ptr, i64, i64 } %t287, ptr %a280 - br label %endif6464 -endif6464: - %t288 = load ptr, ptr %a1 - %t289 = load { ptr, i64, i64 }, ptr %a280 - 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.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) - store { ptr, i64, i64 } %t298, ptr %a299 - %t300 = load ptr, ptr %a1 - %t301 = load { ptr, i64, i64 }, ptr %a65 - %t302 = load { ptr, i64, i64 }, ptr %a299 - %t303 = load %S.ast.Node, ptr %a2 - 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.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.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) - store { ptr, i64, i64 } %t314, ptr %a315 - %t316 = load ptr, ptr %a1 - %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.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.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 - 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.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 - store { ptr, i64, i64 } %t336, ptr %a339 - store { ptr, i64, i64 } %t337, ptr %a340 - call void @finch_str_concat(ptr %a338, ptr %a339, ptr %a340) - %t341 = load { ptr, i64, i64 }, ptr %a338 - %t342 = call { ptr, i64, i64 } @finch.gen.op(ptr %t316, { ptr, i64, i64 } %t341) - 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 %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 - call void @finch_str_copy(ptr %a349, ptr %a348) - %t350 = load { ptr, i64, i64 }, ptr %a349 - %t351 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t350, 0 - %t352 = load %S.ast.Type, ptr %a232 - store %S.ast.Type %t352, ptr %a353 - call void @finch.copy.S_ast_Type(ptr %a354, ptr %a353) - %t355 = load %S.ast.Type, ptr %a354 - %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 -endif6467: - %t358 = load ptr, ptr %a1 - %t359 = load ptr, ptr %a1 - %t360 = load %S.ast.Type, ptr %a232 - %t361 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t359, %S.ast.Type %t360) - %t362 = load { ptr, i64, i64 }, ptr %a343 - %t363 = call { ptr, i64, i64 } @finch.gen.load(ptr %t358, { ptr, i64, i64 } %t361, { ptr, i64, i64 } %t362) - store { ptr, i64, i64 } %t363, ptr %a364 - %t365 = load { ptr, i64, i64 }, ptr %a364 - store { ptr, i64, i64 } %t365, ptr %a366 - call void @finch_str_copy(ptr %a367, ptr %a366) - %t368 = load { ptr, i64, i64 }, ptr %a367 - %t369 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t368, 0 - %t370 = load %S.ast.Type, ptr %a232 - store %S.ast.Type %t370, ptr %a371 - call void @finch.copy.S_ast_Type(ptr %a372, ptr %a371) - %t373 = load %S.ast.Type, ptr %a372 - %t374 = insertvalue %S.gen.Val %t369, %S.ast.Type %t373, 1 - store %S.gen.Val %t374, ptr %a375 - %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.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.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 - %t386 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t383, { ptr, i64, i64 } %t384, %S.ast.Type %t385) - %t387 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t386, 0 - %t388 = load %S.ast.Type, ptr %a232 - store %S.ast.Type %t388, ptr %a389 - call void @finch.copy.S_ast_Type(ptr %a390, ptr %a389) - %t391 = load %S.ast.Type, ptr %a390 - %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 %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 - call void @finch.copy.S_gen_Val(ptr %a397, ptr %a396) - %t398 = load %S.gen.Val, ptr %a397 - %t399 = insertvalue %S.gen.Ref %t394, %S.gen.Val %t398, 2 - ret %S.gen.Ref %t399 + br i1 %t254, label %then6825, label %endif6827 +then6825: + %t255 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 1 + %t256 = load { ptr, i64, i64 }, ptr %t255 + %t257 = extractvalue { ptr, i64, i64 } %t256, 1 + %t258 = icmp uge i64 0, %t257 + br i1 %t258, label %range6828, label %inrange6829 +range6828: + call void @finch_panic_index(ptr @.str.4424, i64 3819, i64 0, i64 %t257) + unreachable +inrange6829: + %t259 = extractvalue { ptr, i64, i64 } %t256, 0 + %t260 = getelementptr inbounds %S.ast.Type, ptr %t259, i64 0 + %t261 = load %S.ast.Type, ptr %t260 + store %S.ast.Type %t261, ptr %a262 + call void @finch.copy.S_ast_Type(ptr %a263, ptr %a262) + %t264 = load %S.ast.Type, ptr %a263 + %t265 = load %S.ast.Type, ptr %a248 + store %S.ast.Type %t264, ptr %a248 + store %S.ast.Type %t265, ptr %a266 + call void @finch.drop.S_ast_Type(ptr %a266) + br label %endif6827 +endif6827: + %t267 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 0 + %t268 = load { ptr, i64, i64 }, ptr %t267 + store { ptr, i64, i64 } %t268, ptr %a269 + store { ptr, i64, i64 } { ptr @.str.4425, i64 3, i64 0 }, ptr %a270 + %t271 = call i32 @finch_str_eq(ptr %a269, ptr %a270) + %t272 = icmp ne i32 %t271, 0 + br label %logic.from6830 +logic.from6830: + br i1 %t272, label %logic.rhs6831, label %logic.end6832 +logic.rhs6831: + %t273 = load i1, ptr %a4 + br label %logic.rend6833 +logic.rend6833: + br label %logic.end6832 +logic.end6832: + %t274 = phi i1 [ false, %logic.from6830 ], [ %t273, %logic.rend6833 ] + br i1 %t274, label %then6834, label %endif6836 +then6834: + %t275 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 + %t276 = load i1, ptr %t275 + %t277 = xor i1 %t276, true + br i1 %t277, label %then6837, label %endif6839 +then6837: + %t278 = load ptr, ptr %a1 + %t279 = load %S.ast.Node, ptr %a2 + call void @finch.gen.fail(ptr %t278, %S.ast.Node %t279, { ptr, i64, i64 } { ptr @.str.4426, i64 44, i64 0 }) + br label %endif6839 +endif6839: + %t280 = load ptr, ptr %a1 + %t281 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 1 + %t282 = getelementptr inbounds %S.gen.Place, ptr %t281, i32 0, i32 0 + %t283 = load { ptr, i64, i64 }, ptr %t282 + store { ptr, i64, i64 } { ptr @.str.4427, i64 29, 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 + store { ptr, i64, i64 } %t287, ptr %a289 + store { ptr, i64, i64 } { ptr @.str.4428, i64 1, i64 0 }, ptr %a290 + call void @finch_str_concat(ptr %a288, ptr %a289, ptr %a290) + store { ptr, i64, i64 } %t287, ptr %a291 + call void @finch_str_drop(ptr %a291) + %t292 = load { ptr, i64, i64 }, ptr %a288 + call void @finch.gen.emit(ptr %t280, { ptr, i64, i64 } %t292) + store { ptr, i64, i64 } %t292, ptr %a293 + call void @finch_str_drop(ptr %a293) + br label %endif6836 +endif6836: + %t294 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 + %t295 = getelementptr inbounds %S.gen.Val, ptr %t294, i32 0, i32 0 + %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 + store { ptr, i64, i64 } %t299, ptr %a300 + %t301 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 + %t302 = load i1, ptr %t301 + br i1 %t302, label %then6840, label %endif6842 +then6840: + %t303 = load ptr, ptr %a1 + %t304 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 1 + %t305 = getelementptr inbounds %S.gen.Place, ptr %t304, i32 0, i32 0 + %t306 = load { ptr, i64, i64 }, ptr %t305 + %t307 = call { ptr, i64, i64 } @finch.gen.load(ptr %t303, { ptr, i64, i64 } { ptr @.str.4429, i64 17, i64 0 }, { ptr, i64, i64 } %t306) + %t308 = load { ptr, i64, i64 }, ptr %a300 + store { ptr, i64, i64 } %t307, ptr %a300 + store { ptr, i64, i64 } %t308, ptr %a309 + call void @finch_str_drop(ptr %a309) + br label %endif6842 +endif6842: + %t310 = load ptr, ptr %a1 + %t311 = load { ptr, i64, i64 }, ptr %a300 + store { ptr, i64, i64 } { ptr @.str.4430, i64 31, i64 0 }, ptr %a313 + store { ptr, i64, i64 } %t311, ptr %a314 + call void @finch_str_concat(ptr %a312, ptr %a313, ptr %a314) + %t315 = load { ptr, i64, i64 }, ptr %a312 + store { ptr, i64, i64 } %t315, ptr %a317 + store { ptr, i64, i64 } { ptr @.str.4431, i64 3, i64 0 }, ptr %a318 + call void @finch_str_concat(ptr %a316, ptr %a317, ptr %a318) + store { ptr, i64, i64 } %t315, ptr %a319 + call void @finch_str_drop(ptr %a319) + %t320 = load { ptr, i64, i64 }, ptr %a316 + %t321 = call { ptr, i64, i64 } @finch.gen.op(ptr %t310, { ptr, i64, i64 } %t320) + store { ptr, i64, i64 } %t320, ptr %a322 + call void @finch_str_drop(ptr %a322) + store { ptr, i64, i64 } %t321, ptr %a323 + %t324 = load ptr, ptr %a1 + %t325 = load { ptr, i64, i64 }, ptr %a60 + %t326 = load { ptr, i64, i64 }, ptr %a323 + %t327 = load %S.ast.Node, ptr %a2 + call void @finch.gen.boundsCheck(ptr %t324, { ptr, i64, i64 } %t325, { ptr, i64, i64 } %t326, %S.ast.Node %t327) + %t328 = load ptr, ptr %a1 + %t329 = load { ptr, i64, i64 }, ptr %a300 + store { ptr, i64, i64 } { ptr @.str.4432, i64 31, i64 0 }, ptr %a331 + store { ptr, i64, i64 } %t329, ptr %a332 + call void @finch_str_concat(ptr %a330, ptr %a331, ptr %a332) + %t333 = load { ptr, i64, i64 }, ptr %a330 + store { ptr, i64, i64 } %t333, ptr %a335 + store { ptr, i64, i64 } { ptr @.str.4433, i64 3, i64 0 }, ptr %a336 + call void @finch_str_concat(ptr %a334, ptr %a335, ptr %a336) + store { ptr, i64, i64 } %t333, ptr %a337 + call void @finch_str_drop(ptr %a337) + %t338 = load { ptr, i64, i64 }, ptr %a334 + %t339 = call { ptr, i64, i64 } @finch.gen.op(ptr %t328, { ptr, i64, i64 } %t338) + store { ptr, i64, i64 } %t338, ptr %a340 + call void @finch_str_drop(ptr %a340) + store { ptr, i64, i64 } %t339, ptr %a341 + %t342 = load ptr, ptr %a1 + %t343 = load ptr, ptr %a1 + %t344 = load %S.ast.Type, ptr %a248 + %t345 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t343, %S.ast.Type %t344) + store { ptr, i64, i64 } { ptr @.str.4434, i64 23, i64 0 }, ptr %a347 + store { ptr, i64, i64 } %t345, ptr %a348 + call void @finch_str_concat(ptr %a346, ptr %a347, ptr %a348) + store { ptr, i64, i64 } %t345, ptr %a349 + call void @finch_str_drop(ptr %a349) + %t350 = load { ptr, i64, i64 }, ptr %a346 + store { ptr, i64, i64 } %t350, ptr %a352 + store { ptr, i64, i64 } { ptr @.str.4435, i64 6, i64 0 }, ptr %a353 + call void @finch_str_concat(ptr %a351, ptr %a352, ptr %a353) + store { ptr, i64, i64 } %t350, ptr %a354 + call void @finch_str_drop(ptr %a354) + %t355 = load { ptr, i64, i64 }, ptr %a351 + %t356 = load { ptr, i64, i64 }, ptr %a341 + store { ptr, i64, i64 } %t355, ptr %a358 + store { ptr, i64, i64 } %t356, ptr %a359 + call void @finch_str_concat(ptr %a357, ptr %a358, ptr %a359) + store { ptr, i64, i64 } %t355, ptr %a360 + call void @finch_str_drop(ptr %a360) + %t361 = load { ptr, i64, i64 }, ptr %a357 + store { ptr, i64, i64 } %t361, ptr %a363 + store { ptr, i64, i64 } { ptr @.str.4436, i64 6, i64 0 }, ptr %a364 + call void @finch_str_concat(ptr %a362, ptr %a363, ptr %a364) + store { ptr, i64, i64 } %t361, ptr %a365 + call void @finch_str_drop(ptr %a365) + %t366 = load { ptr, i64, i64 }, ptr %a362 + %t367 = load { ptr, i64, i64 }, ptr %a60 + store { ptr, i64, i64 } %t366, ptr %a369 + store { ptr, i64, i64 } %t367, ptr %a370 + call void @finch_str_concat(ptr %a368, ptr %a369, ptr %a370) + store { ptr, i64, i64 } %t366, ptr %a371 + call void @finch_str_drop(ptr %a371) + %t372 = load { ptr, i64, i64 }, ptr %a368 + %t373 = call { ptr, i64, i64 } @finch.gen.op(ptr %t342, { ptr, i64, i64 } %t372) + store { ptr, i64, i64 } %t372, ptr %a374 + call void @finch_str_drop(ptr %a374) + store { ptr, i64, i64 } %t373, ptr %a375 + %t376 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 + %t377 = load i1, ptr %t376 + br i1 %t377, label %then6843, label %endif6845 +then6843: + %t378 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 + %t379 = load { ptr, i64, i64 }, ptr %a375 + store { ptr, i64, i64 } %t379, ptr %a380 + call void @finch_str_copy(ptr %a381, ptr %a380) + %t382 = load { ptr, i64, i64 }, ptr %a381 + %t383 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t382, 0 + %t384 = load %S.ast.Type, ptr %a248 + store %S.ast.Type %t384, ptr %a385 + call void @finch.copy.S_ast_Type(ptr %a386, ptr %a385) + %t387 = load %S.ast.Type, ptr %a386 + %t388 = insertvalue %S.gen.Place %t383, %S.ast.Type %t387, 1 + %t389 = insertvalue %S.gen.Ref %t378, %S.gen.Place %t388, 1 + call void @finch_str_drop(ptr %a375) + call void @finch_str_drop(ptr %a341) + call void @finch_str_drop(ptr %a323) + call void @finch_str_drop(ptr %a300) + call void @finch.drop.S_ast_Type(ptr %a248) + call void @finch_str_drop(ptr %a60) + call void @finch.drop.S_ast_Type(ptr %a11) + ret %S.gen.Ref %t389 +endif6845: + %t390 = load ptr, ptr %a1 + %t391 = load ptr, ptr %a1 + %t392 = load %S.ast.Type, ptr %a248 + %t393 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t391, %S.ast.Type %t392) + %t394 = load { ptr, i64, i64 }, ptr %a375 + %t395 = call { ptr, i64, i64 } @finch.gen.load(ptr %t390, { ptr, i64, i64 } %t393, { ptr, i64, i64 } %t394) + store { ptr, i64, i64 } %t393, ptr %a396 + call void @finch_str_drop(ptr %a396) + store { ptr, i64, i64 } %t395, ptr %a397 + %t398 = load { ptr, i64, i64 }, ptr %a397 + store { ptr, i64, i64 } %t398, ptr %a399 + call void @finch_str_copy(ptr %a400, ptr %a399) + %t401 = load { ptr, i64, i64 }, ptr %a400 + %t402 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t401, 0 + %t403 = load %S.ast.Type, ptr %a248 + store %S.ast.Type %t403, ptr %a404 + call void @finch.copy.S_ast_Type(ptr %a405, ptr %a404) + %t406 = load %S.ast.Type, ptr %a405 + %t407 = insertvalue %S.gen.Val %t402, %S.ast.Type %t406, 1 + store %S.gen.Val %t407, ptr %a408 + %t409 = load ptr, ptr %a1 + %t410 = load %S.ast.Type, ptr %a248 + %t411 = call i1 @finch.gen.owning(ptr %t409, %S.ast.Type %t410) + br label %logic.from6846 +logic.from6846: + br i1 %t411, label %logic.rhs6847, label %logic.end6848 +logic.rhs6847: + %t412 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 + %t413 = getelementptr inbounds %S.gen.Val, ptr %t412, i32 0, i32 2 + %t414 = load i1, ptr %t413 + br label %logic.rend6849 +logic.rend6849: + br label %logic.end6848 +logic.end6848: + %t415 = phi i1 [ false, %logic.from6846 ], [ %t414, %logic.rend6849 ] + br i1 %t415, label %then6850, label %endif6852 +then6850: + %t416 = load ptr, ptr %a1 + %t417 = load { ptr, i64, i64 }, ptr %a397 + %t418 = load %S.ast.Type, ptr %a248 + %t419 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t416, { ptr, i64, i64 } %t417, %S.ast.Type %t418) + %t420 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t419, 0 + %t421 = load %S.ast.Type, ptr %a248 + store %S.ast.Type %t421, ptr %a422 + call void @finch.copy.S_ast_Type(ptr %a423, ptr %a422) + %t424 = load %S.ast.Type, ptr %a423 + %t425 = insertvalue %S.gen.Val %t420, %S.ast.Type %t424, 1 + %t426 = insertvalue %S.gen.Val %t425, i1 true, 2 + %t427 = load %S.gen.Val, ptr %a408 + store %S.gen.Val %t426, ptr %a408 + store %S.gen.Val %t427, ptr %a428 + call void @finch.drop.S_gen_Val(ptr %a428) + br label %endif6852 +endif6852: + %t429 = load ptr, ptr %a1 + %t430 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 + %t431 = load %S.gen.Val, ptr %t430 + call void @finch.gen.release(ptr %t429, %S.gen.Val %t431) + %t432 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 + %t433 = load %S.gen.Val, ptr %a408 + store %S.gen.Val %t433, ptr %a434 + call void @finch.copy.S_gen_Val(ptr %a435, ptr %a434) + %t436 = load %S.gen.Val, ptr %a435 + %t437 = insertvalue %S.gen.Ref %t432, %S.gen.Val %t436, 2 + call void @finch.drop.S_gen_Val(ptr %a408) + call void @finch_str_drop(ptr %a397) + call void @finch_str_drop(ptr %a375) + call void @finch_str_drop(ptr %a341) + call void @finch_str_drop(ptr %a323) + call void @finch_str_drop(ptr %a300) + call void @finch.drop.S_ast_Type(ptr %a248) + call void @finch_str_drop(ptr %a60) + call void @finch.drop.S_ast_Type(ptr %a11) + ret %S.gen.Ref %t437 } define internal void @finch.gen.checkArgs(ptr %p0, %S.ast.Node %p1, i64 %p2, i64 %p3, { ptr, i64, i64 } %p4) { @@ -58225,23 +68941,32 @@ entry: %a32 = alloca { ptr, i64, i64 }, align 16 %a33 = alloca { ptr, i64, i64 }, align 16 %a34 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 + %a35 = alloca { ptr, i64, i64 }, align 16 + %a37 = alloca { ptr, i64, i64 }, align 16 %a46 = 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 %a50 = 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 - %a55 = 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 %a59 = 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 %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 + %a70 = 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 + %a75 = alloca { ptr, i64, i64 }, align 16 + %a76 = alloca { ptr, i64, i64 }, align 16 + %a78 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store %S.ast.Node %p1, ptr %a2 store i64 %p2, ptr %a3 @@ -58255,14 +68980,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.cond6475 -each.cond6475: + br label %each.cond6853 +each.cond6853: %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.body6476, label %each.end6478 -each.body6476: + br i1 %t17, label %each.body6854, label %each.end6856 +each.body6854: %t18 = load ptr, ptr %t12 %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t18, i64 %t16 %t20 = load { ptr, i64, i64 }, ptr %t19 @@ -58270,66 +68995,84 @@ each.body6476: %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 %then6479, label %endif6481 -then6479: + br i1 %t24, label %then6857, label %endif6859 +then6857: %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.4264, i64 17, i64 0 }, ptr %a29 + store { ptr, i64, i64 } { ptr @.str.4437, 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.4265, i64 36, i64 0 }, ptr %a34 + store { ptr, i64, i64 } { ptr @.str.4438, 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 %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.cond6475 -each.end6478: - %t38 = load i64, ptr %a11 - %t39 = load i64, ptr %a4 - %t40 = icmp ne i64 %t38, %t39 - 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.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.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 - call void @finch_str_from_int(ptr %a53, i64 %t52) - %t54 = load { ptr, i64, i64 }, ptr %a53 - 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.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 - call void @finch_str_from_int(ptr %a64, i64 %t63) - %t65 = load { ptr, i64, i64 }, ptr %a64 - store { ptr, i64, i64 } %t62, 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 - call void @finch.gen.fail(ptr %t41, %S.ast.Node %t42, { ptr, i64, i64 } %t69) - br label %endif6484 -endif6484: + store { ptr, i64, i64 } %t31, ptr %a35 + call void @finch_str_drop(ptr %a35) + %t36 = load { ptr, i64, i64 }, ptr %a32 + call void @finch.gen.fail(ptr %t25, %S.ast.Node %t26, { ptr, i64, i64 } %t36) + store { ptr, i64, i64 } %t36, ptr %a37 + call void @finch_str_drop(ptr %a37) + br label %endif6859 +endif6859: + br label %each.step6855 +each.step6855: + %t38 = load i64, ptr %a13 + %t39 = add i64 %t38, 1 + store i64 %t39, ptr %a13 + br label %each.cond6853 +each.end6856: + %t40 = load i64, ptr %a11 + %t41 = load i64, ptr %a4 + %t42 = icmp ne i64 %t40, %t41 + br i1 %t42, label %then6860, label %endif6862 +then6860: + %t43 = load ptr, ptr %a1 + %t44 = load %S.ast.Node, ptr %a2 + %t45 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.4439, i64 1, i64 0 }, ptr %a47 + store { ptr, i64, i64 } %t45, ptr %a48 + 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.4440, i64 8, i64 0 }, ptr %a52 + call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) + store { ptr, i64, i64 } %t49, ptr %a53 + call void @finch_str_drop(ptr %a53) + %t54 = load { ptr, i64, i64 }, ptr %a50 + %t55 = load i64, ptr %a4 + call void @finch_str_from_int(ptr %a56, i64 %t55) + %t57 = load { ptr, i64, i64 }, ptr %a56 + store { ptr, i64, i64 } %t54, ptr %a59 + store { ptr, i64, i64 } %t57, ptr %a60 + call void @finch_str_concat(ptr %a58, ptr %a59, ptr %a60) + store { ptr, i64, i64 } %t54, ptr %a61 + call void @finch_str_drop(ptr %a61) + store { ptr, i64, i64 } %t57, ptr %a62 + call void @finch_str_drop(ptr %a62) + %t63 = load { ptr, i64, i64 }, ptr %a58 + store { ptr, i64, i64 } %t63, ptr %a65 + store { ptr, i64, i64 } { ptr @.str.4441, i64 22, i64 0 }, ptr %a66 + call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) + store { ptr, i64, i64 } %t63, ptr %a67 + call void @finch_str_drop(ptr %a67) + %t68 = load { ptr, i64, i64 }, ptr %a64 + %t69 = load i64, ptr %a11 + call void @finch_str_from_int(ptr %a70, i64 %t69) + %t71 = load { ptr, i64, i64 }, ptr %a70 + store { ptr, i64, i64 } %t68, ptr %a73 + store { ptr, i64, i64 } %t71, ptr %a74 + call void @finch_str_concat(ptr %a72, ptr %a73, ptr %a74) + store { ptr, i64, i64 } %t68, ptr %a75 + call void @finch_str_drop(ptr %a75) + store { ptr, i64, i64 } %t71, ptr %a76 + call void @finch_str_drop(ptr %a76) + %t77 = load { ptr, i64, i64 }, ptr %a72 + call void @finch.gen.fail(ptr %t43, %S.ast.Node %t44, { ptr, i64, i64 } %t77) + store { ptr, i64, i64 } %t77, ptr %a78 + call void @finch_str_drop(ptr %a78) + br label %endif6862 +endif6862: ret void } @@ -58338,6 +69081,8 @@ entry: %a1 = alloca ptr, align 16 %a2 = alloca %S.ast.Node, align 16 %a3 = alloca { ptr, i64, i64 }, align 16 + %a12 = alloca %S.gen.Val, align 16 + %a13 = alloca %S.ast.Type, align 16 store ptr %p0, ptr %a1 store %S.ast.Node %p1, ptr %a2 store { ptr, i64, i64 } %p2, ptr %a3 @@ -58345,10 +69090,14 @@ 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.4269, i64 3, i64 0 }) + %t8 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4442, 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) + store %S.gen.Val %t7, ptr %a12 + call void @finch.drop.S_gen_Val(ptr %a12) + store %S.ast.Type %t8, ptr %a13 + call void @finch.drop.S_ast_Type(ptr %a13) ret %S.gen.Val %t11 } @@ -58357,7 +69106,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.4270, i64 17, i64 0 }) + %t3 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t2, { ptr, i64, i64 } { ptr @.str.4443, i64 17, i64 0 }) ret { ptr, i64, i64 } %t3 } @@ -58378,50 +69127,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.4271, i64 3, i64 0 }, ptr %a4 + store { ptr, i64, i64 } { ptr @.str.4444, 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 %then6485, label %endif6487 -then6485: - ret { ptr, i64, i64 } { ptr @.str.4272, i64 3, i64 0 } -endif6487: + br i1 %t6, label %then6863, label %endif6865 +then6863: + ret { ptr, i64, i64 } { ptr @.str.4445, i64 3, i64 0 } +endif6865: %t7 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t7, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.4273, i64 3, i64 0 }, ptr %a9 + store { ptr, i64, i64 } { ptr @.str.4446, 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 %then6488, label %endif6490 -then6488: - ret { ptr, i64, i64 } { ptr @.str.4274, i64 5, i64 0 } -endif6490: + br i1 %t11, label %then6866, label %endif6868 +then6866: + ret { ptr, i64, i64 } { ptr @.str.4447, i64 5, i64 0 } +endif6868: %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.4275, i64 3, i64 0 }, ptr %t14 + store { ptr, i64, i64 } { ptr @.str.4448, i64 3, i64 0 }, ptr %t14 %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 1 - store { ptr, i64, i64 } { ptr @.str.4276, i64 5, i64 0 }, ptr %t15 + store { ptr, i64, i64 } { ptr @.str.4449, i64 5, i64 0 }, ptr %t15 %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 2 - store { ptr, i64, i64 } { ptr @.str.4277, i64 4, i64 0 }, ptr %t16 + store { ptr, i64, i64 } { ptr @.str.4450, i64 4, i64 0 }, ptr %t16 %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 3 - store { ptr, i64, i64 } { ptr @.str.4278, i64 4, i64 0 }, ptr %t17 + store { ptr, i64, i64 } { ptr @.str.4451, i64 4, i64 0 }, ptr %t17 %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 4 - store { ptr, i64, i64 } { ptr @.str.4279, i64 2, i64 0 }, ptr %t18 + store { ptr, i64, i64 } { ptr @.str.4452, i64 2, i64 0 }, ptr %t18 %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 5 - store { ptr, i64, i64 } { ptr @.str.4280, i64 3, i64 0 }, ptr %t19 + store { ptr, i64, i64 } { ptr @.str.4453, i64 3, i64 0 }, ptr %t19 %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 6 - store { ptr, i64, i64 } { ptr @.str.4281, i64 3, i64 0 }, ptr %t20 + store { ptr, i64, i64 } { ptr @.str.4454, i64 3, i64 0 }, ptr %t20 %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 7 - store { ptr, i64, i64 } { ptr @.str.4282, i64 2, i64 0 }, ptr %t21 + store { ptr, i64, i64 } { ptr @.str.4455, i64 2, i64 0 }, ptr %t21 %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 8 - store { ptr, i64, i64 } { ptr @.str.4283, i64 3, i64 0 }, ptr %t22 + store { ptr, i64, i64 } { ptr @.str.4456, i64 3, i64 0 }, ptr %t22 %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 9 - store { ptr, i64, i64 } { ptr @.str.4284, i64 3, i64 0 }, ptr %t23 + store { ptr, i64, i64 } { ptr @.str.4457, i64 3, i64 0 }, ptr %t23 %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 10 - store { ptr, i64, i64 } { ptr @.str.4285, i64 3, i64 0 }, ptr %t24 + store { ptr, i64, i64 } { ptr @.str.4458, i64 3, i64 0 }, ptr %t24 %t25 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 11 - store { ptr, i64, i64 } { ptr @.str.4286, i64 3, i64 0 }, ptr %t25 + store { ptr, i64, i64 } { ptr @.str.4459, i64 3, i64 0 }, ptr %t25 %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 12 - store { ptr, i64, i64 } { ptr @.str.4287, i64 3, i64 0 }, ptr %t26 + store { ptr, i64, i64 } { ptr @.str.4460, 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 @@ -58432,38 +69181,40 @@ endif6490: %t34 = load i64, ptr %t31 %t35 = load ptr, ptr %a30 store i64 0, ptr %a36 - br label %find.cond6491 -find.cond6491: + br label %find.cond6869 +find.cond6869: %t37 = load i64, ptr %a36 %t38 = icmp slt i64 %t37, %t34 - br i1 %t38, label %find.body6492, label %find.end6495 -find.body6492: + br i1 %t38, label %find.body6870, label %find.end6873 +find.body6870: %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.hit6493, label %find.next6494 -find.hit6493: + br i1 %t44, label %find.hit6871, label %find.next6872 +find.hit6871: store i64 %t37, ptr %a33 - br label %find.end6495 -find.next6494: + br label %find.end6873 +find.next6872: %t45 = add i64 %t37, 1 store i64 %t45, ptr %a36 - br label %find.cond6491 -find.end6495: + br label %find.cond6869 +find.end6873: %t46 = load i64, ptr %a33 %t47 = icmp sge i64 %t46, 0 - br i1 %t47, label %then6496, label %endif6498 -then6496: + br i1 %t47, label %then6874, label %endif6876 +then6874: %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 + call void @finch.drop.arr_str(ptr %a30) ret { ptr, i64, i64 } %t51 -endif6498: - ret { ptr, i64, i64 } { ptr @.str.4288, i64 0, i64 0 } +endif6876: + call void @finch.drop.arr_str(ptr %a30) + ret { ptr, i64, i64 } { ptr @.str.4461, i64 0, i64 0 } } define internal %S.gen.Val @finch.gen.convert(ptr %p0, %S.ast.Node %p1, %S.ast.Type %p2) { @@ -58475,228 +69226,300 @@ entry: %a20 = alloca %S.ast.Type, align 16 %a21 = alloca %S.ast.Type, align 16 %a23 = alloca %S.ast.Type, align 16 - %a28 = alloca %S.gen.Val, align 16 - %a29 = alloca %S.gen.Val, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 + %a30 = alloca { ptr, i64, i64 }, align 16 + %a31 = alloca { ptr, i64, i64 }, align 16 + %a43 = alloca { ptr, i64, i64 }, align 16 + %a44 = alloca { ptr, i64, i64 }, align 16 %a47 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 + %a51 = alloca { ptr, i64, i64 }, align 16 + %a58 = 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 %a68 = 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 %a72 = 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 %a78 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 + %a79 = alloca { ptr, i64, i64 }, align 16 %a81 = alloca { ptr, i64, i64 }, align 16 %a82 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 + %a83 = alloca { ptr, i64, i64 }, align 16 + %a84 = 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 %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 %a94 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 + %a95 = alloca { ptr, i64, i64 }, align 16 %a98 = alloca { ptr, i64, i64 }, align 16 %a99 = 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 - %a124 = alloca %S.ast.Type, align 16 - %a125 = alloca %S.ast.Type, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = 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 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 + %a104 = 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 + %a109 = alloca { ptr, i64, i64 }, align 16 + %a112 = alloca { ptr, i64, i64 }, align 16 + %a117 = alloca { ptr, i64, i64 }, align 16 + %a125 = alloca { ptr, i64, i64 }, align 16 + %a135 = alloca { ptr, i64, i64 }, align 16 + %a136 = alloca %S.ast.Type, align 16 + %a139 = alloca %S.ast.Type, align 16 + %a140 = alloca %S.ast.Type, align 16 + %a145 = alloca { ptr, i64, i64 }, align 16 %a152 = 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 - %a156 = 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 %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 - %a167 = alloca { ptr, i64, i64 }, align 16 + %a165 = alloca { ptr, i64, i64 }, align 16 + %a166 = alloca { ptr, i64, i64 }, align 16 %a168 = 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 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca %S.ast.Type, align 16 - %a195 = alloca %S.ast.Type, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, 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 + %a174 = alloca { ptr, i64, i64 }, align 16 + %a175 = 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 + %a180 = alloca { ptr, i64, i64 }, align 16 + %a181 = alloca { ptr, i64, i64 }, align 16 + %a182 = alloca { ptr, i64, i64 }, align 16 + %a185 = alloca { ptr, i64, i64 }, align 16 + %a186 = 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 + %a196 = alloca { ptr, i64, i64 }, align 16 + %a199 = alloca { ptr, i64, i64 }, align 16 + %a204 = alloca { ptr, i64, i64 }, align 16 + %a212 = alloca { ptr, i64, i64 }, align 16 + %a222 = alloca { ptr, i64, i64 }, align 16 + %a223 = alloca %S.ast.Type, align 16 + %a226 = alloca %S.ast.Type, align 16 + %a227 = alloca %S.ast.Type, align 16 %a232 = alloca { ptr, i64, i64 }, align 16 %a233 = 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 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca %S.ast.Type, align 16 - %a266 = alloca %S.ast.Type, 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 + %a267 = 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 %a273 = 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 %a278 = alloca { ptr, i64, i64 }, align 16 - %a279 = 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 %a288 = 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 + %a293 = alloca { ptr, i64, i64 }, align 16 %a296 = 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 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca %S.ast.Type, align 16 - %a312 = alloca %S.ast.Type, align 16 + %a297 = alloca { ptr, i64, i64 }, align 16 + %a305 = alloca %S.ast.Type, align 16 + %a308 = alloca %S.ast.Type, align 16 + %a309 = alloca %S.ast.Type, align 16 + %a316 = alloca { ptr, i64, i64 }, align 16 + %a317 = 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 - %a332 = alloca %S.ast.Type, align 16 - %a333 = alloca %S.ast.Type, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 + %a321 = 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 + %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 + %a335 = alloca { ptr, i64, i64 }, align 16 + %a339 = 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 + %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 %a350 = alloca { ptr, i64, i64 }, align 16 + %a353 = alloca { ptr, i64, i64 }, align 16 + %a354 = alloca { ptr, i64, i64 }, align 16 %a362 = alloca %S.ast.Type, align 16 - %a363 = alloca %S.ast.Type, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a369 = 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 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca { ptr, i64, i64 }, align 16 - %a393 = alloca %S.ast.Type, align 16 - %a394 = alloca %S.ast.Type, 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 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a415 = 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 + %a365 = alloca %S.ast.Type, align 16 + %a366 = alloca %S.ast.Type, align 16 + %a373 = alloca { ptr, i64, i64 }, align 16 + %a374 = alloca { ptr, i64, i64 }, align 16 + %a384 = alloca %S.ast.Type, align 16 + %a387 = alloca %S.ast.Type, align 16 + %a388 = alloca %S.ast.Type, align 16 + %a395 = alloca { ptr, i64, i64 }, align 16 + %a396 = alloca { ptr, i64, i64 }, align 16 + %a404 = alloca { ptr, i64, i64 }, align 16 + %a405 = alloca { ptr, i64, i64 }, align 16 + %a417 = alloca %S.ast.Type, align 16 + %a418 = alloca %S.ast.Type, 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 { ptr, i64, i64 }, align 16 %a430 = alloca { ptr, i64, i64 }, align 16 + %a431 = alloca { ptr, i64, i64 }, align 16 + %a432 = alloca { ptr, i64, i64 }, align 16 + %a434 = alloca { ptr, i64, i64 }, align 16 %a435 = alloca { ptr, i64, i64 }, align 16 %a436 = alloca { ptr, i64, i64 }, align 16 %a437 = alloca { ptr, i64, i64 }, align 16 - %a442 = alloca %S.ast.Type, align 16 - %a443 = alloca %S.ast.Type, align 16 - %a458 = alloca %S.ast.Type, align 16 - %a459 = alloca %S.ast.Type, align 16 - %a472 = alloca %S.ast.Type, align 16 - %a473 = alloca %S.ast.Type, align 16 + %a442 = 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 + %a446 = alloca { ptr, i64, i64 }, align 16 + %a449 = alloca { ptr, i64, i64 }, align 16 + %a452 = alloca %S.ast.Type, align 16 + %a453 = alloca %S.ast.Type, align 16 + %a461 = alloca { ptr, i64, i64 }, align 16 + %a465 = alloca { ptr, i64, i64 }, align 16 + %a468 = 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 + %a477 = alloca { ptr, i64, i64 }, align 16 %a478 = 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 + %a484 = alloca { ptr, i64, i64 }, align 16 + %a488 = alloca { ptr, i64, i64 }, align 16 %a489 = alloca { ptr, i64, i64 }, align 16 %a490 = 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 - %a499 = alloca { ptr, i64, i64 }, align 16 - %a500 = alloca { ptr, i64, i64 }, align 16 + %a496 = alloca { ptr, i64, i64 }, align 16 %a501 = alloca { ptr, i64, i64 }, align 16 + %a502 = alloca { ptr, i64, i64 }, align 16 %a503 = alloca { ptr, i64, i64 }, align 16 %a504 = alloca { ptr, i64, i64 }, align 16 %a505 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca %S.ast.Type, align 16 + %a508 = alloca { ptr, i64, i64 }, align 16 %a511 = alloca %S.ast.Type, align 16 - %a516 = alloca { ptr, i64, i64 }, align 16 - %a517 = alloca { ptr, i64, i64 }, align 16 - %a522 = alloca { ptr, i64, i64 }, align 16 - %a523 = alloca { ptr, i64, i64 }, align 16 - %a528 = alloca { ptr, i64, i64 }, align 16 - %a529 = alloca { ptr, i64, i64 }, align 16 - %a536 = alloca { ptr, i64, i64 }, align 16 - %a537 = alloca { ptr, i64, i64 }, align 16 + %a512 = alloca %S.ast.Type, align 16 + %a527 = alloca %S.ast.Type, align 16 + %a528 = alloca %S.ast.Type, align 16 %a541 = alloca %S.ast.Type, align 16 %a542 = alloca %S.ast.Type, align 16 %a547 = alloca { ptr, i64, i64 }, align 16 %a548 = alloca { ptr, i64, i64 }, align 16 + %a558 = alloca { ptr, i64, i64 }, align 16 + %a559 = alloca { ptr, i64, i64 }, align 16 + %a560 = alloca { ptr, i64, i64 }, align 16 %a561 = alloca { ptr, i64, i64 }, align 16 - %a562 = 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 %a566 = alloca { ptr, i64, i64 }, align 16 - %a567 = alloca { ptr, i64, i64 }, align 16 - %a572 = alloca %S.ast.Type, align 16 - %a573 = alloca %S.ast.Type, align 16 - %a580 = alloca { ptr, i64, i64 }, align 16 + %a570 = alloca { ptr, i64, i64 }, align 16 + %a571 = alloca { ptr, i64, i64 }, align 16 + %a572 = alloca { ptr, i64, i64 }, align 16 + %a573 = alloca { ptr, i64, i64 }, align 16 + %a575 = 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 %a581 = alloca { ptr, i64, i64 }, align 16 - %a588 = alloca { ptr, i64, i64 }, align 16 - %a589 = alloca { ptr, i64, i64 }, align 16 + %a584 = alloca %S.ast.Type, align 16 + %a585 = alloca %S.ast.Type, align 16 %a590 = alloca { ptr, i64, i64 }, align 16 - %a592 = alloca { ptr, i64, i64 }, align 16 - %a593 = alloca { ptr, i64, i64 }, align 16 - %a594 = alloca { ptr, i64, i64 }, align 16 - %a599 = alloca { ptr, i64, i64 }, align 16 - %a600 = alloca { ptr, i64, i64 }, align 16 - %a601 = alloca { ptr, i64, i64 }, align 16 - %a606 = alloca %S.ast.Type, align 16 - %a607 = alloca %S.ast.Type, align 16 - %a612 = alloca { ptr, i64, i64 }, align 16 - %a613 = alloca { ptr, i64, i64 }, align 16 - %a618 = alloca { ptr, i64, i64 }, align 16 - %a619 = alloca { ptr, i64, i64 }, align 16 + %a591 = alloca { ptr, i64, i64 }, align 16 + %a596 = alloca { ptr, i64, i64 }, align 16 + %a597 = alloca { ptr, i64, i64 }, align 16 + %a602 = 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 + %a615 = alloca %S.ast.Type, align 16 + %a616 = alloca %S.ast.Type, align 16 + %a621 = alloca { ptr, i64, i64 }, align 16 + %a622 = alloca { ptr, i64, i64 }, align 16 + %a635 = alloca %S.ast.Type, align 16 + %a636 = 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 - %a645 = alloca { ptr, i64, i64 }, align 16 - %a646 = alloca { ptr, i64, i64 }, align 16 + %a644 = 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 - %a656 = alloca %S.gen.Val, align 16 - %a657 = alloca %S.gen.Val, align 16 + %a650 = alloca %S.ast.Type, align 16 + %a651 = alloca %S.ast.Type, align 16 + %a658 = alloca { ptr, i64, i64 }, align 16 + %a659 = 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 + %a670 = 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 + %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 + %a685 = alloca { ptr, i64, i64 }, align 16 + %a688 = alloca %S.ast.Type, align 16 + %a689 = alloca %S.ast.Type, align 16 + %a694 = alloca { ptr, i64, i64 }, align 16 + %a695 = alloca { ptr, i64, i64 }, align 16 + %a700 = alloca { ptr, i64, i64 }, align 16 + %a701 = alloca { ptr, i64, i64 }, align 16 + %a723 = 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 + %a728 = 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 + %a735 = alloca { ptr, i64, i64 }, align 16 + %a736 = alloca { ptr, i64, i64 }, align 16 + %a737 = alloca { ptr, i64, i64 }, align 16 + %a738 = alloca { ptr, i64, i64 }, align 16 + %a740 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store %S.ast.Node %p1, ptr %a2 store %S.ast.Type %p2, ptr %a3 @@ -58710,11 +69533,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 %range6499, label %inrange6500 -range6499: - call void @finch_panic_index(ptr @.str.4289, i64 3606, i64 0, i64 %t11) + br i1 %t12, label %range6877, label %inrange6878 +range6877: + call void @finch_panic_index(ptr @.str.4462, i64 3889, i64 0, i64 %t11) unreachable -inrange6500: +inrange6878: %t13 = extractvalue { ptr, i64, i64 } %t10, 0 %t14 = getelementptr inbounds %S.ast.Node, ptr %t13, i64 0 %t15 = load %S.ast.Node, ptr %t14 @@ -58729,874 +69552,1078 @@ inrange6500: %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 %then6501, label %endif6503 -then6501: + br i1 %t26, label %then6879, label %endif6881 +then6879: %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 -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.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.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.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 %panic6511, label %ok6512 -panic6511: - call void @finch_panic(ptr @.str.4291, i64 3611, ptr @.str.4292) + call void @finch.drop.S_ast_Type(ptr %a23) + ret %S.gen.Val %t27 +endif6881: + %t28 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 + %t29 = load { ptr, i64, i64 }, ptr %t28 + store { ptr, i64, i64 } %t29, ptr %a30 + store { ptr, i64, i64 } { ptr @.str.4463, 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.from6882 +logic.from6882: + br i1 %t33, label %logic.rhs6883, label %logic.end6884 +logic.rhs6883: + %t34 = load %S.ast.Type, ptr %a3 + %t35 = call i1 @finch.gen.isNumber(%S.ast.Type %t34) + br label %logic.rend6885 +logic.rend6885: + br label %logic.end6884 +logic.end6884: + %t36 = phi i1 [ false, %logic.from6882 ], [ %t35, %logic.rend6885 ] + br label %logic.from6886 +logic.from6886: + br i1 %t36, label %logic.rhs6887, label %logic.end6888 +logic.rhs6887: + %t37 = load ptr, ptr %a1 + %t38 = icmp eq ptr %t37, null + br i1 %t38, label %panic6889, label %ok6890 +panic6889: + call void @finch_panic(ptr @.str.4464, i64 3894, ptr @.str.4465) unreachable -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) - store { ptr, i64, i64 } %t43, ptr %a46 - 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.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.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.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 %then6517, label %endif6519 -then6517: - %t58 = load ptr, ptr %a1 - %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 +ok6890: + %t39 = getelementptr inbounds %S.gen.Gen, ptr %t37, i32 0, i32 40 + %t40 = load { ptr, i64, i64 }, ptr %t39 + %t41 = load %S.ast.Node, ptr %a2 + %t42 = call { ptr, i64, i64 } @finch.gen.nodeKey(%S.ast.Node %t41) + store { ptr, i64, i64 } %t40, 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 + store { ptr, i64, i64 } %t42, ptr %a47 + call void @finch_str_drop(ptr %a47) + br label %logic.rend6891 +logic.rend6891: + br label %logic.end6888 +logic.end6888: + %t48 = phi i1 [ false, %logic.from6886 ], [ %t46, %logic.rend6891 ] + br i1 %t48, label %then6892, label %endif6894 +then6892: + %t49 = load ptr, ptr %a1 + %t50 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t49, { ptr, i64, i64 } { ptr @.str.4466, i64 17, i64 0 }) + store { ptr, i64, i64 } %t50, ptr %a51 + %t52 = load ptr, ptr %a1 + %t53 = load { ptr, i64, i64 }, ptr %a51 + call void @finch.gen.store(ptr %t52, { ptr, i64, i64 } { ptr @.str.4467, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4468, i64 15, i64 0 }, { ptr, i64, i64 } %t53) + %t54 = load %S.ast.Type, ptr %a3 + %t55 = call i1 @finch.gen.isInt(%S.ast.Type %t54) + br i1 %t55, label %then6895, label %endif6897 +then6895: + %t56 = load ptr, ptr %a1 + %t57 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t56, { ptr, i64, i64 } { ptr @.str.4469, i64 3, i64 0 }) + store { ptr, i64, i64 } %t57, ptr %a58 + %t59 = load ptr, ptr %a1 + %t60 = load { ptr, i64, i64 }, ptr %a58 + call void @finch.gen.store(ptr %t59, { ptr, i64, i64 } { ptr @.str.4470, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.4471, i64 1, i64 0 }, { ptr, i64, i64 } %t60) %t61 = load ptr, ptr %a1 - %t62 = load { ptr, i64, i64 }, ptr %a60 - 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.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.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 + %t62 = load ptr, ptr %a1 + %t63 = load %S.gen.Val, ptr %a17 + %t64 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t62, %S.gen.Val %t63) + store { ptr, i64, i64 } { ptr @.str.4472, i64 32, i64 0 }, ptr %a66 + store { ptr, i64, i64 } %t64, ptr %a67 + call void @finch_str_concat(ptr %a65, ptr %a66, ptr %a67) + store { ptr, i64, i64 } %t64, ptr %a68 + call void @finch_str_drop(ptr %a68) + %t69 = load { ptr, i64, i64 }, ptr %a65 + store { ptr, i64, i64 } %t69, ptr %a71 + store { ptr, i64, i64 } { ptr @.str.4473, i64 6, i64 0 }, ptr %a72 + call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) + store { ptr, i64, i64 } %t69, ptr %a73 + call void @finch_str_drop(ptr %a73) + %t74 = load { ptr, i64, i64 }, ptr %a70 + %t75 = load { ptr, i64, i64 }, ptr %a58 store { ptr, i64, i64 } %t74, 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.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 - store { ptr, i64, i64 } %t83, 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.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.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.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 %panic6520, label %ok6521 -panic6520: - call void @finch_panic(ptr @.str.4305, i64 3619, ptr @.str.4306) + store { ptr, i64, i64 } %t74, ptr %a79 + call void @finch_str_drop(ptr %a79) + %t80 = load { ptr, i64, i64 }, ptr %a76 + store { ptr, i64, i64 } %t80, ptr %a82 + store { ptr, i64, i64 } { ptr @.str.4474, i64 6, i64 0 }, ptr %a83 + call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) + store { ptr, i64, i64 } %t80, ptr %a84 + call void @finch_str_drop(ptr %a84) + %t85 = load { ptr, i64, i64 }, ptr %a81 + %t86 = load { ptr, i64, i64 }, ptr %a51 + store { ptr, i64, i64 } %t85, ptr %a88 + store { ptr, i64, i64 } %t86, ptr %a89 + call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89) + store { ptr, i64, i64 } %t85, ptr %a90 + call void @finch_str_drop(ptr %a90) + %t91 = load { ptr, i64, i64 }, ptr %a87 + store { ptr, i64, i64 } %t91, ptr %a93 + store { ptr, i64, i64 } { ptr @.str.4475, i64 1, i64 0 }, ptr %a94 + call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) + store { ptr, i64, i64 } %t91, ptr %a95 + call void @finch_str_drop(ptr %a95) + %t96 = load { ptr, i64, i64 }, ptr %a92 + %t97 = call { ptr, i64, i64 } @finch.gen.op(ptr %t61, { ptr, i64, i64 } %t96) + store { ptr, i64, i64 } %t96, ptr %a98 + call void @finch_str_drop(ptr %a98) + store { ptr, i64, i64 } %t97, ptr %a99 + %t100 = load ptr, ptr %a1 + %t101 = load { ptr, i64, i64 }, ptr %a99 + store { ptr, i64, i64 } { ptr @.str.4476, i64 12, 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.4477, i64 3, i64 0 }, ptr %a108 + call void @finch_str_concat(ptr %a106, ptr %a107, ptr %a108) + store { ptr, i64, i64 } %t105, ptr %a109 + call void @finch_str_drop(ptr %a109) + %t110 = load { ptr, i64, i64 }, ptr %a106 + %t111 = call { ptr, i64, i64 } @finch.gen.op(ptr %t100, { ptr, i64, i64 } %t110) + store { ptr, i64, i64 } %t110, ptr %a112 + call void @finch_str_drop(ptr %a112) + %t113 = load ptr, ptr %a1 + %t114 = icmp eq ptr %t113, null + br i1 %t114, label %panic6898, label %ok6899 +panic6898: + call void @finch_panic(ptr @.str.4478, i64 3902, ptr @.str.4479) unreachable -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.4307, i64 17, i64 0 }, { ptr, i64, i64 } %t110) - %t112 = load ptr, ptr %a1 - %t113 = icmp eq ptr %t112, null - br i1 %t113, label %panic6522, label %ok6523 -panic6522: - call void @finch_panic(ptr @.str.4308, i64 3620, ptr @.str.4309) +ok6899: + %t115 = getelementptr inbounds %S.gen.Gen, ptr %t113, i32 0, i32 41 + %t116 = load { ptr, i64, i64 }, ptr %t115 + store { ptr, i64, i64 } %t111, ptr %t115 + store { ptr, i64, i64 } %t116, ptr %a117 + call void @finch_str_drop(ptr %a117) + %t118 = load ptr, ptr %a1 + %t119 = load { ptr, i64, i64 }, ptr %a51 + %t120 = call { ptr, i64, i64 } @finch.gen.load(ptr %t118, { ptr, i64, i64 } { ptr @.str.4480, i64 17, i64 0 }, { ptr, i64, i64 } %t119) + %t121 = load ptr, ptr %a1 + %t122 = icmp eq ptr %t121, null + br i1 %t122, label %panic6900, label %ok6901 +panic6900: + call void @finch_panic(ptr @.str.4481, i64 3903, ptr @.str.4482) unreachable -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.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 - %t123 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t123, ptr %a124 - call void @finch.copy.S_ast_Type(ptr %a125, ptr %a124) - %t126 = load %S.ast.Type, ptr %a125 - %t127 = insertvalue %S.gen.Val %t122, %S.ast.Type %t126, 1 - ret %S.gen.Val %t127 -endif6519: +ok6901: + %t123 = getelementptr inbounds %S.gen.Gen, ptr %t121, i32 0, i32 42 + %t124 = load { ptr, i64, i64 }, ptr %t123 + store { ptr, i64, i64 } %t120, ptr %t123 + store { ptr, i64, i64 } %t124, ptr %a125 + call void @finch_str_drop(ptr %a125) + %t126 = load ptr, ptr %a1 + %t127 = load %S.gen.Val, ptr %a17 + call void @finch.gen.release(ptr %t126, %S.gen.Val %t127) %t128 = load ptr, ptr %a1 - %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.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.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.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 - store { ptr, i64, i64 } %t144, 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.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 - store { ptr, i64, i64 } %t153, 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.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.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.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 %panic6524, label %ok6525 -panic6524: - call void @finch_panic(ptr @.str.4321, i64 3626, ptr @.str.4322) + %t129 = load ptr, ptr %a1 + %t130 = load { ptr, i64, i64 }, ptr %a58 + %t131 = call { ptr, i64, i64 } @finch.gen.load(ptr %t129, { ptr, i64, i64 } { ptr @.str.4483, i64 3, i64 0 }, { ptr, i64, i64 } %t130) + %t132 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4484, i64 3, i64 0 }) + %t133 = load %S.ast.Type, ptr %a3 + %t134 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t128, { ptr, i64, i64 } %t131, %S.ast.Type %t132, %S.ast.Type %t133) + store { ptr, i64, i64 } %t131, ptr %a135 + call void @finch_str_drop(ptr %a135) + store %S.ast.Type %t132, ptr %a136 + call void @finch.drop.S_ast_Type(ptr %a136) + %t137 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t134, 0 + %t138 = load %S.ast.Type, ptr %a3 + store %S.ast.Type %t138, ptr %a139 + call void @finch.copy.S_ast_Type(ptr %a140, ptr %a139) + %t141 = load %S.ast.Type, ptr %a140 + %t142 = insertvalue %S.gen.Val %t137, %S.ast.Type %t141, 1 + call void @finch_str_drop(ptr %a99) + call void @finch_str_drop(ptr %a58) + call void @finch_str_drop(ptr %a51) + call void @finch.drop.S_ast_Type(ptr %a23) + call void @finch.drop.S_gen_Val(ptr %a17) + ret %S.gen.Val %t142 +endif6897: + %t143 = load ptr, ptr %a1 + %t144 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t143, { ptr, i64, i64 } { ptr @.str.4485, i64 6, i64 0 }) + store { ptr, i64, i64 } %t144, ptr %a145 + %t146 = load ptr, ptr %a1 + %t147 = load { ptr, i64, i64 }, ptr %a145 + call void @finch.gen.store(ptr %t146, { ptr, i64, i64 } { ptr @.str.4486, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.4487, i64 3, i64 0 }, { ptr, i64, i64 } %t147) + %t148 = load ptr, ptr %a1 + %t149 = load ptr, ptr %a1 + %t150 = load %S.gen.Val, ptr %a17 + %t151 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t149, %S.gen.Val %t150) + store { ptr, i64, i64 } { ptr @.str.4488, i64 34, i64 0 }, ptr %a153 + store { ptr, i64, i64 } %t151, ptr %a154 + call void @finch_str_concat(ptr %a152, ptr %a153, ptr %a154) + store { ptr, i64, i64 } %t151, ptr %a155 + call void @finch_str_drop(ptr %a155) + %t156 = load { ptr, i64, i64 }, ptr %a152 + store { ptr, i64, i64 } %t156, ptr %a158 + store { ptr, i64, i64 } { ptr @.str.4489, i64 6, i64 0 }, ptr %a159 + call void @finch_str_concat(ptr %a157, ptr %a158, ptr %a159) + store { ptr, i64, i64 } %t156, ptr %a160 + call void @finch_str_drop(ptr %a160) + %t161 = load { ptr, i64, i64 }, ptr %a157 + %t162 = load { ptr, i64, i64 }, ptr %a145 + store { ptr, i64, i64 } %t161, ptr %a164 + store { ptr, i64, i64 } %t162, ptr %a165 + call void @finch_str_concat(ptr %a163, ptr %a164, ptr %a165) + store { ptr, i64, i64 } %t161, ptr %a166 + call void @finch_str_drop(ptr %a166) + %t167 = load { ptr, i64, i64 }, ptr %a163 + store { ptr, i64, i64 } %t167, ptr %a169 + store { ptr, i64, i64 } { ptr @.str.4490, i64 6, i64 0 }, ptr %a170 + call void @finch_str_concat(ptr %a168, ptr %a169, ptr %a170) + store { ptr, i64, i64 } %t167, ptr %a171 + call void @finch_str_drop(ptr %a171) + %t172 = load { ptr, i64, i64 }, ptr %a168 + %t173 = load { ptr, i64, i64 }, ptr %a51 + store { ptr, i64, i64 } %t172, ptr %a175 + store { ptr, i64, i64 } %t173, ptr %a176 + call void @finch_str_concat(ptr %a174, ptr %a175, ptr %a176) + store { ptr, i64, i64 } %t172, ptr %a177 + call void @finch_str_drop(ptr %a177) + %t178 = load { ptr, i64, i64 }, ptr %a174 + store { ptr, i64, i64 } %t178, ptr %a180 + store { ptr, i64, i64 } { ptr @.str.4491, i64 1, i64 0 }, ptr %a181 + call void @finch_str_concat(ptr %a179, ptr %a180, ptr %a181) + store { ptr, i64, i64 } %t178, ptr %a182 + call void @finch_str_drop(ptr %a182) + %t183 = load { ptr, i64, i64 }, ptr %a179 + %t184 = call { ptr, i64, i64 } @finch.gen.op(ptr %t148, { ptr, i64, i64 } %t183) + store { ptr, i64, i64 } %t183, ptr %a185 + call void @finch_str_drop(ptr %a185) + store { ptr, i64, i64 } %t184, ptr %a186 + %t187 = load ptr, ptr %a1 + %t188 = load { ptr, i64, i64 }, ptr %a186 + store { ptr, i64, i64 } { ptr @.str.4492, i64 12, 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.4493, i64 3, i64 0 }, ptr %a195 + call void @finch_str_concat(ptr %a193, ptr %a194, ptr %a195) + store { ptr, i64, i64 } %t192, ptr %a196 + call void @finch_str_drop(ptr %a196) + %t197 = load { ptr, i64, i64 }, ptr %a193 + %t198 = call { ptr, i64, i64 } @finch.gen.op(ptr %t187, { ptr, i64, i64 } %t197) + store { ptr, i64, i64 } %t197, ptr %a199 + call void @finch_str_drop(ptr %a199) + %t200 = load ptr, ptr %a1 + %t201 = icmp eq ptr %t200, null + br i1 %t201, label %panic6902, label %ok6903 +panic6902: + call void @finch_panic(ptr @.str.4494, i64 3910, ptr @.str.4495) unreachable -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.4323, i64 17, i64 0 }, { ptr, i64, i64 } %t180) - %t182 = load ptr, ptr %a1 - %t183 = icmp eq ptr %t182, null - br i1 %t183, label %panic6526, label %ok6527 -panic6526: - call void @finch_panic(ptr @.str.4324, i64 3627, ptr @.str.4325) - unreachable -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.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 - %t193 = load %S.ast.Type, ptr %a3 - 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 %t192, %S.ast.Type %t196, 1 - ret %S.gen.Val %t197 -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.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.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.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 +ok6903: + %t202 = getelementptr inbounds %S.gen.Gen, ptr %t200, i32 0, i32 41 + %t203 = load { ptr, i64, i64 }, ptr %t202 + store { ptr, i64, i64 } %t198, ptr %t202 + store { ptr, i64, i64 } %t203, ptr %a204 + call void @finch_str_drop(ptr %a204) + %t205 = load ptr, ptr %a1 + %t206 = load { ptr, i64, i64 }, ptr %a51 + %t207 = call { ptr, i64, i64 } @finch.gen.load(ptr %t205, { ptr, i64, i64 } { ptr @.str.4496, i64 17, i64 0 }, { ptr, i64, i64 } %t206) %t208 = load ptr, ptr %a1 %t209 = icmp eq ptr %t208, null - br i1 %t209, label %panic6535, label %ok6536 -panic6535: - call void @finch_panic(ptr @.str.4329, i64 3631, ptr @.str.4330) + br i1 %t209, label %panic6904, label %ok6905 +panic6904: + call void @finch_panic(ptr @.str.4497, i64 3911, ptr @.str.4498) unreachable -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 %range6537, label %inrange6538 -range6537: - call void @finch_panic_index(ptr @.str.4331, i64 3631, i64 %t212, i64 %t214) +ok6905: + %t210 = getelementptr inbounds %S.gen.Gen, ptr %t208, i32 0, i32 42 + %t211 = load { ptr, i64, i64 }, ptr %t210 + store { ptr, i64, i64 } %t207, ptr %t210 + store { ptr, i64, i64 } %t211, ptr %a212 + call void @finch_str_drop(ptr %a212) + %t213 = load ptr, ptr %a1 + %t214 = load %S.gen.Val, ptr %a17 + call void @finch.gen.release(ptr %t213, %S.gen.Val %t214) + %t215 = load ptr, ptr %a1 + %t216 = load ptr, ptr %a1 + %t217 = load { ptr, i64, i64 }, ptr %a145 + %t218 = call { ptr, i64, i64 } @finch.gen.load(ptr %t216, { ptr, i64, i64 } { ptr @.str.4499, i64 6, i64 0 }, { ptr, i64, i64 } %t217) + %t219 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4500, i64 5, i64 0 }) + %t220 = load %S.ast.Type, ptr %a3 + %t221 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t215, { ptr, i64, i64 } %t218, %S.ast.Type %t219, %S.ast.Type %t220) + store { ptr, i64, i64 } %t218, ptr %a222 + call void @finch_str_drop(ptr %a222) + store %S.ast.Type %t219, ptr %a223 + call void @finch.drop.S_ast_Type(ptr %a223) + %t224 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t221, 0 + %t225 = load %S.ast.Type, ptr %a3 + 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.Val %t224, %S.ast.Type %t228, 1 + call void @finch_str_drop(ptr %a186) + call void @finch_str_drop(ptr %a145) + call void @finch_str_drop(ptr %a51) + call void @finch.drop.S_ast_Type(ptr %a23) + call void @finch.drop.S_gen_Val(ptr %a17) + ret %S.gen.Val %t229 +endif6894: + %t230 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 + %t231 = load { ptr, i64, i64 }, ptr %t230 + store { ptr, i64, i64 } %t231, ptr %a232 + store { ptr, i64, i64 } { ptr @.str.4501, i64 3, i64 0 }, ptr %a233 + %t234 = call i32 @finch_str_eq(ptr %a232, ptr %a233) + %t235 = icmp ne i32 %t234, 0 + br label %logic.from6906 +logic.from6906: + br i1 %t235, label %logic.rhs6907, label %logic.end6908 +logic.rhs6907: + %t236 = load %S.ast.Type, ptr %a3 + %t237 = call i1 @finch.gen.isNumber(%S.ast.Type %t236) + br label %logic.rend6909 +logic.rend6909: + br label %logic.end6908 +logic.end6908: + %t238 = phi i1 [ false, %logic.from6906 ], [ %t237, %logic.rend6909 ] + br i1 %t238, label %then6910, label %endif6912 +then6910: + %t239 = load ptr, ptr %a1 + %t240 = load ptr, ptr %a1 + %t241 = icmp eq ptr %t240, null + br i1 %t241, label %panic6913, label %ok6914 +panic6913: + call void @finch_panic(ptr @.str.4502, i64 3916, ptr @.str.4503) unreachable -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 - %t219 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t207, { ptr, i64, i64 } %t218) - 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 %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.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.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 - store { ptr, i64, i64 } %t234, ptr %a237 - store { ptr, i64, i64 } %t235, ptr %a238 - 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.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 - %t245 = load i64, ptr %t244 - call void @finch_str_from_int(ptr %a246, i64 %t245) - %t247 = load { ptr, i64, i64 }, ptr %a246 - store { ptr, i64, i64 } %t243, ptr %a249 - store { ptr, i64, i64 } %t247, ptr %a250 - 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.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.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 - %t264 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t264, ptr %a265 - call void @finch.copy.S_ast_Type(ptr %a266, ptr %a265) - %t267 = load %S.ast.Type, ptr %a266 - %t268 = insertvalue %S.gen.Val %t263, %S.ast.Type %t267, 1 - ret %S.gen.Val %t268 -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.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.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 - store { ptr, i64, i64 } %t280, 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.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 - %t291 = load i64, ptr %t290 - call void @finch_str_from_int(ptr %a292, i64 %t291) - %t293 = load { ptr, i64, i64 }, ptr %a292 - store { ptr, i64, i64 } %t289, ptr %a295 - store { ptr, i64, i64 } %t293, ptr %a296 - 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.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.4341, i64 5, i64 0 }) +ok6914: + %t242 = getelementptr inbounds %S.gen.Gen, ptr %t240, i32 0, i32 1 + %t243 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 + %t244 = load i64, ptr %t243 + %t245 = load { ptr, i64, i64 }, ptr %t242 + %t246 = extractvalue { ptr, i64, i64 } %t245, 1 + %t247 = icmp uge i64 %t244, %t246 + br i1 %t247, label %range6915, label %inrange6916 +range6915: + call void @finch_panic_index(ptr @.str.4504, i64 3916, i64 %t244, i64 %t246) + unreachable +inrange6916: + %t248 = extractvalue { ptr, i64, i64 } %t245, 0 + %t249 = getelementptr inbounds { ptr, i64, i64 }, ptr %t248, i64 %t244 + %t250 = load { ptr, i64, i64 }, ptr %t249 + %t251 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t239, { ptr, i64, i64 } %t250) + store { ptr, i64, i64 } %t251, ptr %a252 + %t253 = load %S.ast.Type, ptr %a3 + %t254 = call i1 @finch.gen.isInt(%S.ast.Type %t253) + br i1 %t254, label %then6917, label %endif6919 +then6917: + %t255 = load ptr, ptr %a1 + %t256 = load ptr, ptr %a1 + %t257 = load %S.gen.Val, ptr %a17 + %t258 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t256, %S.gen.Val %t257) + store { ptr, i64, i64 } { ptr @.str.4505, i64 31, i64 0 }, ptr %a260 + store { ptr, i64, i64 } %t258, ptr %a261 + call void @finch_str_concat(ptr %a259, ptr %a260, ptr %a261) + store { ptr, i64, i64 } %t258, ptr %a262 + call void @finch_str_drop(ptr %a262) + %t263 = load { ptr, i64, i64 }, ptr %a259 + store { ptr, i64, i64 } %t263, ptr %a265 + store { ptr, i64, i64 } { ptr @.str.4506, i64 6, i64 0 }, ptr %a266 + call void @finch_str_concat(ptr %a264, ptr %a265, ptr %a266) + store { ptr, i64, i64 } %t263, ptr %a267 + call void @finch_str_drop(ptr %a267) + %t268 = load { ptr, i64, i64 }, ptr %a264 + %t269 = load { ptr, i64, i64 }, ptr %a252 + store { ptr, i64, i64 } %t268, ptr %a271 + store { ptr, i64, i64 } %t269, ptr %a272 + call void @finch_str_concat(ptr %a270, ptr %a271, ptr %a272) + store { ptr, i64, i64 } %t268, ptr %a273 + call void @finch_str_drop(ptr %a273) + %t274 = load { ptr, i64, i64 }, ptr %a270 + store { ptr, i64, i64 } %t274, ptr %a276 + store { ptr, i64, i64 } { ptr @.str.4507, i64 6, i64 0 }, ptr %a277 + call void @finch_str_concat(ptr %a275, ptr %a276, ptr %a277) + store { ptr, i64, i64 } %t274, ptr %a278 + call void @finch_str_drop(ptr %a278) + %t279 = load { ptr, i64, i64 }, ptr %a275 + %t280 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 + %t281 = load i64, ptr %t280 + call void @finch_str_from_int(ptr %a282, i64 %t281) + %t283 = load { ptr, i64, i64 }, ptr %a282 + store { ptr, i64, i64 } %t279, ptr %a285 + store { ptr, i64, i64 } %t283, ptr %a286 + call void @finch_str_concat(ptr %a284, ptr %a285, ptr %a286) + store { ptr, i64, i64 } %t279, ptr %a287 + call void @finch_str_drop(ptr %a287) + store { ptr, i64, i64 } %t283, ptr %a288 + call void @finch_str_drop(ptr %a288) + %t289 = load { ptr, i64, i64 }, ptr %a284 + store { ptr, i64, i64 } %t289, ptr %a291 + store { ptr, i64, i64 } { ptr @.str.4508, i64 1, i64 0 }, ptr %a292 + call void @finch_str_concat(ptr %a290, ptr %a291, ptr %a292) + store { ptr, i64, i64 } %t289, ptr %a293 + call void @finch_str_drop(ptr %a293) + %t294 = load { ptr, i64, i64 }, ptr %a290 + %t295 = call { ptr, i64, i64 } @finch.gen.op(ptr %t255, { ptr, i64, i64 } %t294) + store { ptr, i64, i64 } %t294, ptr %a296 + call void @finch_str_drop(ptr %a296) + store { ptr, i64, i64 } %t295, ptr %a297 + %t298 = load ptr, ptr %a1 + %t299 = load %S.gen.Val, ptr %a17 + call void @finch.gen.release(ptr %t298, %S.gen.Val %t299) + %t300 = load ptr, ptr %a1 + %t301 = load { ptr, i64, i64 }, ptr %a297 + %t302 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4509, i64 3, i64 0 }) + %t303 = load %S.ast.Type, ptr %a3 + %t304 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t300, { ptr, i64, i64 } %t301, %S.ast.Type %t302, %S.ast.Type %t303) + store %S.ast.Type %t302, ptr %a305 + call void @finch.drop.S_ast_Type(ptr %a305) + %t306 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t304, 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 - %t310 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t310, ptr %a311 - call void @finch.copy.S_ast_Type(ptr %a312, ptr %a311) - %t313 = load %S.ast.Type, ptr %a312 - %t314 = insertvalue %S.gen.Val %t309, %S.ast.Type %t313, 1 - ret %S.gen.Val %t314 -endif6534: - %t315 = load %S.ast.Type, ptr %a3 - %t316 = call i1 @finch.gen.isInt(%S.ast.Type %t315) - 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.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.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.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 - %t331 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t331, ptr %a332 - call void @finch.copy.S_ast_Type(ptr %a333, ptr %a332) - %t334 = load %S.ast.Type, ptr %a333 - %t335 = insertvalue %S.gen.Val %t330, %S.ast.Type %t334, 1 - ret %S.gen.Val %t335 -endif6548: - %t336 = load %S.ast.Type, ptr %a3 - %t337 = call i1 @finch.gen.isInt(%S.ast.Type %t336) - 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.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.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.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.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.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 - %t357 = load %S.ast.Type, ptr %a23 - %t358 = load %S.ast.Type, ptr %a3 - %t359 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t354, { ptr, i64, i64 } %t356, %S.ast.Type %t357, %S.ast.Type %t358) - %t360 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t359, 0 - %t361 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t361, ptr %a362 - call void @finch.copy.S_ast_Type(ptr %a363, ptr %a362) - %t364 = load %S.ast.Type, ptr %a363 - %t365 = insertvalue %S.gen.Val %t360, %S.ast.Type %t364, 1 - ret %S.gen.Val %t365 -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.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 %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.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.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 - %t384 = load %S.ast.Type, ptr %a3 - %t385 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t383, %S.ast.Type %t384) - store { ptr, i64, i64 } %t382, 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 - %t390 = call { ptr, i64, i64 } @finch.gen.op(ptr %t372, { ptr, i64, i64 } %t389) - %t391 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t390, 0 - %t392 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t392, ptr %a393 - call void @finch.copy.S_ast_Type(ptr %a394, ptr %a393) - %t395 = load %S.ast.Type, ptr %a394 - %t396 = insertvalue %S.gen.Val %t391, %S.ast.Type %t395, 1 - ret %S.gen.Val %t396 -endif6565: - %t397 = load %S.ast.Type, ptr %a23 - %t398 = call i1 @finch.gen.isFloat(%S.ast.Type %t397) - 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.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 %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.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 + store %S.ast.Type %t307, ptr %a308 + call void @finch.copy.S_ast_Type(ptr %a309, ptr %a308) + %t310 = load %S.ast.Type, ptr %a309 + %t311 = insertvalue %S.gen.Val %t306, %S.ast.Type %t310, 1 + call void @finch_str_drop(ptr %a297) + call void @finch_str_drop(ptr %a252) + call void @finch.drop.S_ast_Type(ptr %a23) + call void @finch.drop.S_gen_Val(ptr %a17) + ret %S.gen.Val %t311 +endif6919: + %t312 = load ptr, ptr %a1 + %t313 = load ptr, ptr %a1 + %t314 = load %S.gen.Val, ptr %a17 + %t315 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t313, %S.gen.Val %t314) + store { ptr, i64, i64 } { ptr @.str.4510, i64 36, i64 0 }, ptr %a317 + store { ptr, i64, i64 } %t315, ptr %a318 + call void @finch_str_concat(ptr %a316, ptr %a317, ptr %a318) + store { ptr, i64, i64 } %t315, ptr %a319 + call void @finch_str_drop(ptr %a319) + %t320 = load { ptr, i64, i64 }, ptr %a316 + store { ptr, i64, i64 } %t320, ptr %a322 + store { ptr, i64, i64 } { ptr @.str.4511, i64 6, i64 0 }, ptr %a323 + call void @finch_str_concat(ptr %a321, ptr %a322, ptr %a323) + store { ptr, i64, i64 } %t320, ptr %a324 + call void @finch_str_drop(ptr %a324) + %t325 = load { ptr, i64, i64 }, ptr %a321 + %t326 = load { ptr, i64, i64 }, ptr %a252 + store { ptr, i64, i64 } %t325, ptr %a328 + store { ptr, i64, i64 } %t326, ptr %a329 + call void @finch_str_concat(ptr %a327, ptr %a328, ptr %a329) + store { ptr, i64, i64 } %t325, ptr %a330 + call void @finch_str_drop(ptr %a330) + %t331 = load { ptr, i64, i64 }, ptr %a327 + store { ptr, i64, i64 } %t331, ptr %a333 + store { ptr, i64, i64 } { ptr @.str.4512, i64 6, i64 0 }, ptr %a334 + call void @finch_str_concat(ptr %a332, ptr %a333, ptr %a334) + store { ptr, i64, i64 } %t331, ptr %a335 + call void @finch_str_drop(ptr %a335) + %t336 = load { ptr, i64, i64 }, ptr %a332 + %t337 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 + %t338 = load i64, ptr %t337 + call void @finch_str_from_int(ptr %a339, i64 %t338) + %t340 = load { ptr, i64, i64 }, ptr %a339 + store { ptr, i64, i64 } %t336, ptr %a342 + store { ptr, i64, i64 } %t340, ptr %a343 + call void @finch_str_concat(ptr %a341, ptr %a342, ptr %a343) + store { ptr, i64, i64 } %t336, ptr %a344 + call void @finch_str_drop(ptr %a344) + store { ptr, i64, i64 } %t340, ptr %a345 + call void @finch_str_drop(ptr %a345) + %t346 = load { ptr, i64, i64 }, ptr %a341 + store { ptr, i64, i64 } %t346, ptr %a348 + store { ptr, i64, i64 } { ptr @.str.4513, i64 1, i64 0 }, ptr %a349 + call void @finch_str_concat(ptr %a347, ptr %a348, ptr %a349) + store { ptr, i64, i64 } %t346, ptr %a350 + call void @finch_str_drop(ptr %a350) + %t351 = load { ptr, i64, i64 }, ptr %a347 + %t352 = call { ptr, i64, i64 } @finch.gen.op(ptr %t312, { ptr, i64, i64 } %t351) + store { ptr, i64, i64 } %t351, ptr %a353 + call void @finch_str_drop(ptr %a353) + store { ptr, i64, i64 } %t352, ptr %a354 + %t355 = load ptr, ptr %a1 + %t356 = load %S.gen.Val, ptr %a17 + call void @finch.gen.release(ptr %t355, %S.gen.Val %t356) + %t357 = load ptr, ptr %a1 + %t358 = load { ptr, i64, i64 }, ptr %a354 + %t359 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4514, i64 5, i64 0 }) + %t360 = load %S.ast.Type, ptr %a3 + %t361 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t357, { ptr, i64, i64 } %t358, %S.ast.Type %t359, %S.ast.Type %t360) + store %S.ast.Type %t359, ptr %a362 + call void @finch.drop.S_ast_Type(ptr %a362) + %t363 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t361, 0 + %t364 = load %S.ast.Type, ptr %a3 + store %S.ast.Type %t364, ptr %a365 + call void @finch.copy.S_ast_Type(ptr %a366, ptr %a365) + %t367 = load %S.ast.Type, ptr %a366 + %t368 = insertvalue %S.gen.Val %t363, %S.ast.Type %t367, 1 + call void @finch_str_drop(ptr %a354) + call void @finch_str_drop(ptr %a252) + call void @finch.drop.S_ast_Type(ptr %a23) + call void @finch.drop.S_gen_Val(ptr %a17) + ret %S.gen.Val %t368 +endif6912: + %t369 = load %S.ast.Type, ptr %a3 + %t370 = call i1 @finch.gen.isInt(%S.ast.Type %t369) + br label %logic.from6920 +logic.from6920: + br i1 %t370, label %logic.rhs6921, label %logic.end6922 +logic.rhs6921: + %t371 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 + %t372 = load { ptr, i64, i64 }, ptr %t371 + store { ptr, i64, i64 } %t372, ptr %a373 + store { ptr, i64, i64 } { ptr @.str.4515, i64 4, i64 0 }, ptr %a374 + %t375 = call i32 @finch_str_eq(ptr %a373, ptr %a374) + %t376 = icmp ne i32 %t375, 0 + br label %logic.rend6923 +logic.rend6923: + br label %logic.end6922 +logic.end6922: + %t377 = phi i1 [ false, %logic.from6920 ], [ %t376, %logic.rend6923 ] + br i1 %t377, label %then6924, label %endif6926 +then6924: + %t378 = load ptr, ptr %a1 + %t379 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 + %t380 = load { ptr, i64, i64 }, ptr %t379 + %t381 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4516, i64 3, i64 0 }) + %t382 = load %S.ast.Type, ptr %a3 + %t383 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t378, { ptr, i64, i64 } %t380, %S.ast.Type %t381, %S.ast.Type %t382) + store %S.ast.Type %t381, ptr %a384 + call void @finch.drop.S_ast_Type(ptr %a384) + %t385 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t383, 0 + %t386 = load %S.ast.Type, ptr %a3 + store %S.ast.Type %t386, ptr %a387 + call void @finch.copy.S_ast_Type(ptr %a388, ptr %a387) + %t389 = load %S.ast.Type, ptr %a388 + %t390 = insertvalue %S.gen.Val %t385, %S.ast.Type %t389, 1 + call void @finch.drop.S_ast_Type(ptr %a23) + call void @finch.drop.S_gen_Val(ptr %a17) + ret %S.gen.Val %t390 +endif6926: + %t391 = load %S.ast.Type, ptr %a3 + %t392 = call i1 @finch.gen.isInt(%S.ast.Type %t391) + br label %logic.from6927 +logic.from6927: + br i1 %t392, label %logic.end6929, label %logic.rhs6928 +logic.rhs6928: + %t393 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 + %t394 = load { ptr, i64, i64 }, ptr %t393 + store { ptr, i64, i64 } %t394, ptr %a395 + store { ptr, i64, i64 } { ptr @.str.4517, i64 4, i64 0 }, ptr %a396 + %t397 = call i32 @finch_str_eq(ptr %a395, ptr %a396) + %t398 = icmp ne i32 %t397, 0 + br label %logic.rend6930 +logic.rend6930: + br label %logic.end6929 +logic.end6929: + %t399 = phi i1 [ true, %logic.from6927 ], [ %t398, %logic.rend6930 ] + br i1 %t399, label %then6931, label %endif6933 +then6931: + %t400 = load %S.ast.Type, ptr %a23 + %t401 = call i1 @finch.gen.isInt(%S.ast.Type %t400) + br label %logic.from6934 +logic.from6934: + br i1 %t401, label %logic.end6936, label %logic.rhs6935 +logic.rhs6935: + %t402 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 + %t403 = load { ptr, i64, i64 }, ptr %t402 + store { ptr, i64, i64 } %t403, ptr %a404 + store { ptr, i64, i64 } { ptr @.str.4518, i64 4, i64 0 }, ptr %a405 + %t406 = call i32 @finch_str_eq(ptr %a404, ptr %a405) + %t407 = icmp ne i32 %t406, 0 + br label %logic.rend6937 +logic.rend6937: + br label %logic.end6936 +logic.end6936: + %t408 = phi i1 [ true, %logic.from6934 ], [ %t407, %logic.rend6937 ] + br i1 %t408, label %then6938, label %endif6940 +then6938: + %t409 = load ptr, ptr %a1 + %t410 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 + %t411 = load { ptr, i64, i64 }, ptr %t410 %t412 = load %S.ast.Type, ptr %a23 - %t413 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t411, %S.ast.Type %t412) - store { ptr, i64, i64 } %t410, ptr %a415 - store { ptr, i64, i64 } %t413, ptr %a416 - 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.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 - %t423 = load { ptr, i64, i64 }, ptr %t422 - store { ptr, i64, i64 } %t421, 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.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 - %t433 = load %S.ast.Type, ptr %a3 - %t434 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t432, %S.ast.Type %t433) - store { ptr, i64, i64 } %t431, ptr %a436 - store { ptr, i64, i64 } %t434, ptr %a437 - call void @finch_str_concat(ptr %a435, ptr %a436, ptr %a437) - %t438 = load { ptr, i64, i64 }, ptr %a435 - %t439 = call { ptr, i64, i64 } @finch.gen.op(ptr %t405, { ptr, i64, i64 } %t438) - %t440 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t439, 0 - %t441 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t441, ptr %a442 - call void @finch.copy.S_ast_Type(ptr %a443, ptr %a442) - %t444 = load %S.ast.Type, ptr %a443 - %t445 = insertvalue %S.gen.Val %t440, %S.ast.Type %t444, 1 - ret %S.gen.Val %t445 -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 %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 %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 - %t453 = load %S.ast.Type, ptr %a23 - %t454 = load %S.ast.Type, ptr %a3 - %t455 = call { ptr, i64, i64 } @finch.gen.intToFloat(ptr %t450, { ptr, i64, i64 } %t452, %S.ast.Type %t453, %S.ast.Type %t454) - %t456 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t455, 0 - %t457 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t457, ptr %a458 - call void @finch.copy.S_ast_Type(ptr %a459, ptr %a458) - %t460 = load %S.ast.Type, ptr %a459 - %t461 = insertvalue %S.gen.Val %t456, %S.ast.Type %t460, 1 - ret %S.gen.Val %t461 -endif6581: - %t462 = load %S.ast.Type, ptr %a23 - %t463 = call i1 @finch.gen.isFloat(%S.ast.Type %t462) - 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 - %t467 = load %S.ast.Type, ptr %a23 - %t468 = load %S.ast.Type, ptr %a3 - %t469 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t464, { ptr, i64, i64 } %t466, %S.ast.Type %t467, %S.ast.Type %t468) - %t470 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t469, 0 - %t471 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t471, ptr %a472 - call void @finch.copy.S_ast_Type(ptr %a473, ptr %a472) - %t474 = load %S.ast.Type, ptr %a473 - %t475 = insertvalue %S.gen.Val %t470, %S.ast.Type %t474, 1 - ret %S.gen.Val %t475 -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.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.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.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.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 + %t413 = load %S.ast.Type, ptr %a3 + %t414 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t409, { ptr, i64, i64 } %t411, %S.ast.Type %t412, %S.ast.Type %t413) + %t415 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t414, 0 + %t416 = load %S.ast.Type, ptr %a3 + store %S.ast.Type %t416, ptr %a417 + call void @finch.copy.S_ast_Type(ptr %a418, ptr %a417) + %t419 = load %S.ast.Type, ptr %a418 + %t420 = insertvalue %S.gen.Val %t415, %S.ast.Type %t419, 1 + call void @finch.drop.S_ast_Type(ptr %a23) + call void @finch.drop.S_gen_Val(ptr %a17) + ret %S.gen.Val %t420 +endif6940: + %t421 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 + %t422 = load { ptr, i64, i64 }, ptr %t421 + store { ptr, i64, i64 } %t422, ptr %a423 + store { ptr, i64, i64 } { ptr @.str.4519, i64 4, i64 0 }, ptr %a424 + %t425 = call i32 @finch_str_eq(ptr %a423, ptr %a424) + %t426 = icmp ne i32 %t425, 0 + br i1 %t426, label %then6941, label %endif6943 +then6941: + %t427 = load ptr, ptr %a1 + %t428 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 + %t429 = load { ptr, i64, i64 }, ptr %t428 + store { ptr, i64, i64 } { ptr @.str.4520, i64 8, i64 0 }, ptr %a431 + store { ptr, i64, i64 } %t429, ptr %a432 + call void @finch_str_concat(ptr %a430, ptr %a431, ptr %a432) + %t433 = load { ptr, i64, i64 }, ptr %a430 + store { ptr, i64, i64 } %t433, ptr %a435 + store { ptr, i64, i64 } { ptr @.str.4521, i64 4, i64 0 }, ptr %a436 + call void @finch_str_concat(ptr %a434, ptr %a435, ptr %a436) + store { ptr, i64, i64 } %t433, ptr %a437 + call void @finch_str_drop(ptr %a437) + %t438 = load { ptr, i64, i64 }, ptr %a434 + %t439 = load ptr, ptr %a1 + %t440 = load %S.ast.Type, ptr %a3 + %t441 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t439, %S.ast.Type %t440) + store { ptr, i64, i64 } %t438, ptr %a443 + store { ptr, i64, i64 } %t441, ptr %a444 + call void @finch_str_concat(ptr %a442, ptr %a443, ptr %a444) + store { ptr, i64, i64 } %t438, ptr %a445 + call void @finch_str_drop(ptr %a445) + store { ptr, i64, i64 } %t441, ptr %a446 + call void @finch_str_drop(ptr %a446) + %t447 = load { ptr, i64, i64 }, ptr %a442 + %t448 = call { ptr, i64, i64 } @finch.gen.op(ptr %t427, { ptr, i64, i64 } %t447) + store { ptr, i64, i64 } %t447, ptr %a449 + call void @finch_str_drop(ptr %a449) + %t450 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t448, 0 + %t451 = load %S.ast.Type, ptr %a3 + store %S.ast.Type %t451, ptr %a452 + call void @finch.copy.S_ast_Type(ptr %a453, ptr %a452) + %t454 = load %S.ast.Type, ptr %a453 + %t455 = insertvalue %S.gen.Val %t450, %S.ast.Type %t454, 1 + call void @finch.drop.S_ast_Type(ptr %a23) + call void @finch.drop.S_gen_Val(ptr %a17) + ret %S.gen.Val %t455 +endif6943: + %t456 = load %S.ast.Type, ptr %a23 + %t457 = call i1 @finch.gen.isFloat(%S.ast.Type %t456) + br label %logic.from6944 +logic.from6944: + br i1 %t457, label %logic.rhs6945, label %logic.end6946 +logic.rhs6945: + %t458 = load %S.ast.Type, ptr %a3 + %t459 = call i1 @finch.gen.isInt(%S.ast.Type %t458) + br label %logic.rend6947 +logic.rend6947: + br label %logic.end6946 +logic.end6946: + %t460 = phi i1 [ false, %logic.from6944 ], [ %t459, %logic.rend6947 ] + br i1 %t460, label %then6948, label %endif6950 +then6948: + store { ptr, i64, i64 } { ptr @.str.4522, i64 6, i64 0 }, ptr %a461 + %t462 = load %S.ast.Type, ptr %a3 + %t463 = call i1 @finch.gen.isSigned(%S.ast.Type %t462) + br i1 %t463, label %then6951, label %endif6953 +then6951: + %t464 = load { ptr, i64, i64 }, ptr %a461 + store { ptr, i64, i64 } { ptr @.str.4523, i64 6, i64 0 }, ptr %a461 + store { ptr, i64, i64 } %t464, ptr %a465 + call void @finch_str_drop(ptr %a465) + br label %endif6953 +endif6953: + %t466 = load ptr, ptr %a1 + %t467 = load { ptr, i64, i64 }, ptr %a461 + store { ptr, i64, i64 } %t467, ptr %a469 + store { ptr, i64, i64 } { ptr @.str.4524, i64 1, 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, ptr %a1 + %t473 = load %S.ast.Type, ptr %a23 + %t474 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t472, %S.ast.Type %t473) + store { ptr, i64, i64 } %t471, ptr %a476 + store { ptr, i64, i64 } %t474, ptr %a477 + call void @finch_str_concat(ptr %a475, ptr %a476, ptr %a477) + store { ptr, i64, i64 } %t471, ptr %a478 + call void @finch_str_drop(ptr %a478) + store { ptr, i64, i64 } %t474, ptr %a479 + call void @finch_str_drop(ptr %a479) + %t480 = load { ptr, i64, i64 }, ptr %a475 + store { ptr, i64, i64 } %t480, ptr %a482 + store { ptr, i64, i64 } { ptr @.str.4525, i64 1, i64 0 }, ptr %a483 + call void @finch_str_concat(ptr %a481, ptr %a482, ptr %a483) + store { ptr, i64, i64 } %t480, ptr %a484 + call void @finch_str_drop(ptr %a484) + %t485 = load { ptr, i64, i64 }, ptr %a481 + %t486 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 + %t487 = load { ptr, i64, i64 }, ptr %t486 + store { ptr, i64, i64 } %t485, ptr %a489 + store { ptr, i64, i64 } %t487, ptr %a490 + call void @finch_str_concat(ptr %a488, ptr %a489, ptr %a490) + store { ptr, i64, i64 } %t485, ptr %a491 + call void @finch_str_drop(ptr %a491) + %t492 = load { ptr, i64, i64 }, ptr %a488 store { ptr, i64, i64 } %t492, ptr %a494 - store { ptr, i64, i64 } { ptr @.str.4356, i64 1, i64 0 }, ptr %a495 + store { ptr, i64, i64 } { ptr @.str.4526, i64 4, 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 - %t498 = load { ptr, i64, i64 }, ptr %t497 - store { ptr, i64, i64 } %t496, 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 - store { ptr, i64, i64 } %t502, ptr %a504 - 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) - %t508 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t507, 0 - %t509 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t509, ptr %a510 - call void @finch.copy.S_ast_Type(ptr %a511, ptr %a510) - %t512 = load %S.ast.Type, ptr %a511 - %t513 = insertvalue %S.gen.Val %t508, %S.ast.Type %t512, 1 - ret %S.gen.Val %t513 -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.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.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 + store { ptr, i64, i64 } %t492, ptr %a496 + call void @finch_str_drop(ptr %a496) + %t497 = load { ptr, i64, i64 }, ptr %a493 + %t498 = load ptr, ptr %a1 + %t499 = load %S.ast.Type, ptr %a3 + %t500 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t498, %S.ast.Type %t499) + store { ptr, i64, i64 } %t497, ptr %a502 + store { ptr, i64, i64 } %t500, ptr %a503 + call void @finch_str_concat(ptr %a501, ptr %a502, ptr %a503) + store { ptr, i64, i64 } %t497, ptr %a504 + call void @finch_str_drop(ptr %a504) + store { ptr, i64, i64 } %t500, ptr %a505 + call void @finch_str_drop(ptr %a505) + %t506 = load { ptr, i64, i64 }, ptr %a501 + %t507 = call { ptr, i64, i64 } @finch.gen.op(ptr %t466, { ptr, i64, i64 } %t506) + store { ptr, i64, i64 } %t506, ptr %a508 + call void @finch_str_drop(ptr %a508) + %t509 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t507, 0 + %t510 = load %S.ast.Type, ptr %a3 + store %S.ast.Type %t510, ptr %a511 + call void @finch.copy.S_ast_Type(ptr %a512, ptr %a511) + %t513 = load %S.ast.Type, ptr %a512 + %t514 = insertvalue %S.gen.Val %t509, %S.ast.Type %t513, 1 + call void @finch_str_drop(ptr %a461) + call void @finch.drop.S_ast_Type(ptr %a23) + call void @finch.drop.S_gen_Val(ptr %a17) + ret %S.gen.Val %t514 +endif6950: + br label %endif6933 +endif6933: + %t515 = load %S.ast.Type, ptr %a3 + %t516 = call i1 @finch.gen.isFloat(%S.ast.Type %t515) + br i1 %t516, label %then6954, label %endif6956 +then6954: + %t517 = load %S.ast.Type, ptr %a23 + %t518 = call i1 @finch.gen.isInt(%S.ast.Type %t517) + br i1 %t518, label %then6957, label %endif6959 +then6957: + %t519 = load ptr, ptr %a1 + %t520 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 %t521 = load { ptr, i64, i64 }, ptr %t520 - store { ptr, i64, i64 } %t521, ptr %a522 - 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.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.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.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: + %t522 = load %S.ast.Type, ptr %a23 + %t523 = load %S.ast.Type, ptr %a3 + %t524 = call { ptr, i64, i64 } @finch.gen.intToFloat(ptr %t519, { ptr, i64, i64 } %t521, %S.ast.Type %t522, %S.ast.Type %t523) + %t525 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t524, 0 + %t526 = load %S.ast.Type, ptr %a3 + store %S.ast.Type %t526, ptr %a527 + call void @finch.copy.S_ast_Type(ptr %a528, ptr %a527) + %t529 = load %S.ast.Type, ptr %a528 + %t530 = insertvalue %S.gen.Val %t525, %S.ast.Type %t529, 1 + call void @finch.drop.S_ast_Type(ptr %a23) + call void @finch.drop.S_gen_Val(ptr %a17) + ret %S.gen.Val %t530 +endif6959: + %t531 = load %S.ast.Type, ptr %a23 + %t532 = call i1 @finch.gen.isFloat(%S.ast.Type %t531) + br i1 %t532, label %then6960, label %endif6962 +then6960: + %t533 = load ptr, ptr %a1 %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 - call void @finch_str_copy(ptr %a537, ptr %a536) - %t538 = load { ptr, i64, i64 }, ptr %a537 + %t536 = load %S.ast.Type, ptr %a23 + %t537 = load %S.ast.Type, ptr %a3 + %t538 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t533, { ptr, i64, i64 } %t535, %S.ast.Type %t536, %S.ast.Type %t537) %t539 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t538, 0 %t540 = load %S.ast.Type, ptr %a3 store %S.ast.Type %t540, ptr %a541 call void @finch.copy.S_ast_Type(ptr %a542, ptr %a541) %t543 = load %S.ast.Type, ptr %a542 %t544 = insertvalue %S.gen.Val %t539, %S.ast.Type %t543, 1 + call void @finch.drop.S_ast_Type(ptr %a23) + call void @finch.drop.S_gen_Val(ptr %a17) ret %S.gen.Val %t544 -endif6602: +endif6962: + br label %endif6956 +endif6956: %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.4361, i64 3, i64 0 }, ptr %a548 + store { ptr, i64, i64 } { ptr @.str.4527, i64 4, i64 0 }, ptr %a548 %t549 = call i32 @finch_str_eq(ptr %a547, ptr %a548) %t550 = icmp ne i32 %t549, 0 - br label %logic.from6603 -logic.from6603: - br i1 %t550, label %logic.rhs6604, label %logic.end6605 -logic.rhs6604: + br label %logic.from6963 +logic.from6963: + br i1 %t550, label %logic.rhs6964, label %logic.end6965 +logic.rhs6964: %t551 = load %S.ast.Type, ptr %a23 %t552 = call i1 @finch.gen.isInt(%S.ast.Type %t551) - 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: + br label %logic.rend6966 +logic.rend6966: + br label %logic.end6965 +logic.end6965: + %t553 = phi i1 [ false, %logic.from6963 ], [ %t552, %logic.rend6966 ] + br i1 %t553, label %then6967, label %endif6969 +then6967: %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.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.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.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) - %t570 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t569, 0 - %t571 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t571, ptr %a572 - call void @finch.copy.S_ast_Type(ptr %a573, ptr %a572) - %t574 = load %S.ast.Type, ptr %a573 - %t575 = insertvalue %S.gen.Val %t570, %S.ast.Type %t574, 1 - ret %S.gen.Val %t575 -endif6609: - %t576 = load %S.ast.Type, ptr %a3 - %t577 = call i1 @finch.gen.isInt(%S.ast.Type %t576) - 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.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.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.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.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 - %t597 = load %S.ast.Type, ptr %a3 - %t598 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t596, %S.ast.Type %t597) - store { ptr, i64, i64 } %t595, ptr %a600 - store { ptr, i64, i64 } %t598, ptr %a601 - call void @finch_str_concat(ptr %a599, ptr %a600, ptr %a601) - %t602 = load { ptr, i64, i64 }, ptr %a599 - %t603 = call { ptr, i64, i64 } @finch.gen.op(ptr %t585, { ptr, i64, i64 } %t602) - %t604 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t603, 0 - %t605 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t605, ptr %a606 - call void @finch.copy.S_ast_Type(ptr %a607, ptr %a606) - %t608 = load %S.ast.Type, ptr %a607 - %t609 = insertvalue %S.gen.Val %t604, %S.ast.Type %t608, 1 - ret %S.gen.Val %t609 -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.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.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.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.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 %range6624, label %inrange6625 -range6624: - call void @finch_panic_index(ptr @.str.4370, i64 3678, i64 0, i64 %t626) - unreachable -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.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 %range6626, label %inrange6627 -range6626: - call void @finch_panic_index(ptr @.str.4372, i64 3680, i64 0, i64 %t634) - unreachable -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.4373, i64 11, i64 0 }, ptr %a642 - store { ptr, i64, i64 } %t640, ptr %a643 + %t556 = load %S.ast.Type, ptr %a23 + %t557 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t555, %S.ast.Type %t556) + store { ptr, i64, i64 } { ptr @.str.4528, i64 8, i64 0 }, ptr %a559 + store { ptr, i64, i64 } %t557, ptr %a560 + call void @finch_str_concat(ptr %a558, ptr %a559, ptr %a560) + store { ptr, i64, i64 } %t557, ptr %a561 + call void @finch_str_drop(ptr %a561) + %t562 = load { ptr, i64, i64 }, ptr %a558 + store { ptr, i64, i64 } %t562, ptr %a564 + store { ptr, i64, i64 } { ptr @.str.4529, i64 1, i64 0 }, ptr %a565 + call void @finch_str_concat(ptr %a563, ptr %a564, ptr %a565) + store { ptr, i64, i64 } %t562, ptr %a566 + call void @finch_str_drop(ptr %a566) + %t567 = load { ptr, i64, i64 }, ptr %a563 + %t568 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 + %t569 = load { ptr, i64, i64 }, ptr %t568 + store { ptr, i64, i64 } %t567, ptr %a571 + store { ptr, i64, i64 } %t569, ptr %a572 + call void @finch_str_concat(ptr %a570, ptr %a571, ptr %a572) + store { ptr, i64, i64 } %t567, ptr %a573 + call void @finch_str_drop(ptr %a573) + %t574 = load { ptr, i64, i64 }, ptr %a570 + store { ptr, i64, i64 } %t574, ptr %a576 + store { ptr, i64, i64 } { ptr @.str.4530, i64 3, i64 0 }, ptr %a577 + call void @finch_str_concat(ptr %a575, ptr %a576, ptr %a577) + store { ptr, i64, i64 } %t574, ptr %a578 + call void @finch_str_drop(ptr %a578) + %t579 = load { ptr, i64, i64 }, ptr %a575 + %t580 = call { ptr, i64, i64 } @finch.gen.op(ptr %t554, { ptr, i64, i64 } %t579) + store { ptr, i64, i64 } %t579, ptr %a581 + call void @finch_str_drop(ptr %a581) + %t582 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t580, 0 + %t583 = load %S.ast.Type, ptr %a3 + store %S.ast.Type %t583, ptr %a584 + call void @finch.copy.S_ast_Type(ptr %a585, ptr %a584) + %t586 = load %S.ast.Type, ptr %a585 + %t587 = insertvalue %S.gen.Val %t582, %S.ast.Type %t586, 1 + call void @finch.drop.S_ast_Type(ptr %a23) + call void @finch.drop.S_gen_Val(ptr %a17) + ret %S.gen.Val %t587 +endif6969: + %t588 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 + %t589 = load { ptr, i64, i64 }, ptr %t588 + store { ptr, i64, i64 } %t589, ptr %a590 + store { ptr, i64, i64 } { ptr @.str.4531, i64 3, i64 0 }, ptr %a591 + %t592 = call i32 @finch_str_eq(ptr %a590, ptr %a591) + %t593 = icmp ne i32 %t592, 0 + br label %logic.from6970 +logic.from6970: + br i1 %t593, label %logic.rhs6971, label %logic.end6972 +logic.rhs6971: + %t594 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 + %t595 = load { ptr, i64, i64 }, ptr %t594 + store { ptr, i64, i64 } %t595, ptr %a596 + store { ptr, i64, i64 } { ptr @.str.4532, i64 3, i64 0 }, ptr %a597 + %t598 = call i32 @finch_str_eq(ptr %a596, ptr %a597) + %t599 = icmp ne i32 %t598, 0 + br label %logic.from6973 +logic.from6973: + br i1 %t599, label %logic.end6975, label %logic.rhs6974 +logic.rhs6974: + %t600 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 + %t601 = load { ptr, i64, i64 }, ptr %t600 + store { ptr, i64, i64 } %t601, ptr %a602 + store { ptr, i64, i64 } { ptr @.str.4533, i64 4, i64 0 }, ptr %a603 + %t604 = call i32 @finch_str_eq(ptr %a602, ptr %a603) + %t605 = icmp ne i32 %t604, 0 + br label %logic.rend6976 +logic.rend6976: + br label %logic.end6975 +logic.end6975: + %t606 = phi i1 [ true, %logic.from6973 ], [ %t605, %logic.rend6976 ] + br label %logic.rend6977 +logic.rend6977: + br label %logic.end6972 +logic.end6972: + %t607 = phi i1 [ false, %logic.from6970 ], [ %t606, %logic.rend6977 ] + br i1 %t607, label %then6978, label %endif6980 +then6978: + %t608 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 + %t609 = load { ptr, i64, i64 }, ptr %t608 + store { ptr, i64, i64 } %t609, ptr %a610 + call void @finch_str_copy(ptr %a611, ptr %a610) + %t612 = load { ptr, i64, i64 }, ptr %a611 + %t613 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t612, 0 + %t614 = load %S.ast.Type, ptr %a3 + store %S.ast.Type %t614, ptr %a615 + call void @finch.copy.S_ast_Type(ptr %a616, ptr %a615) + %t617 = load %S.ast.Type, ptr %a616 + %t618 = insertvalue %S.gen.Val %t613, %S.ast.Type %t617, 1 + call void @finch.drop.S_ast_Type(ptr %a23) + call void @finch.drop.S_gen_Val(ptr %a17) + ret %S.gen.Val %t618 +endif6980: + %t619 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 + %t620 = load { ptr, i64, i64 }, ptr %t619 + store { ptr, i64, i64 } %t620, ptr %a621 + store { ptr, i64, i64 } { ptr @.str.4534, i64 3, i64 0 }, ptr %a622 + %t623 = call i32 @finch_str_eq(ptr %a621, ptr %a622) + %t624 = icmp ne i32 %t623, 0 + br label %logic.from6981 +logic.from6981: + br i1 %t624, label %logic.rhs6982, label %logic.end6983 +logic.rhs6982: + %t625 = load %S.ast.Type, ptr %a23 + %t626 = call i1 @finch.gen.isInt(%S.ast.Type %t625) + br label %logic.rend6984 +logic.rend6984: + br label %logic.end6983 +logic.end6983: + %t627 = phi i1 [ false, %logic.from6981 ], [ %t626, %logic.rend6984 ] + br i1 %t627, label %then6985, label %endif6987 +then6985: + %t628 = load ptr, ptr %a1 + %t629 = load ptr, ptr %a1 + %t630 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 + %t631 = load { ptr, i64, i64 }, ptr %t630 + %t632 = load %S.ast.Type, ptr %a23 + %t633 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4536, i64 3, i64 0 }) + %t634 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t629, { ptr, i64, i64 } %t631, %S.ast.Type %t632, %S.ast.Type %t633) + store %S.ast.Type %t633, ptr %a635 + call void @finch.drop.S_ast_Type(ptr %a635) + store { ptr, i64, i64 } { ptr @.str.4535, i64 13, i64 0 }, ptr %a637 + store { ptr, i64, i64 } %t634, ptr %a638 + call void @finch_str_concat(ptr %a636, ptr %a637, ptr %a638) + store { ptr, i64, i64 } %t634, ptr %a639 + call void @finch_str_drop(ptr %a639) + %t640 = load { ptr, i64, i64 }, ptr %a636 + store { ptr, i64, i64 } %t640, ptr %a642 + store { ptr, i64, i64 } { ptr @.str.4537, i64 7, i64 0 }, 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.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 - %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 - call void @finch.gen.fail(ptr %t631, %S.ast.Node %t638, { ptr, i64, i64 } %t654) - %t655 = load %S.gen.Val, ptr %a17 - store %S.gen.Val %t655, ptr %a656 - call void @finch.copy.S_gen_Val(ptr %a657, ptr %a656) - %t658 = load %S.gen.Val, ptr %a657 - ret %S.gen.Val %t658 + store { ptr, i64, i64 } %t640, ptr %a644 + call void @finch_str_drop(ptr %a644) + %t645 = load { ptr, i64, i64 }, ptr %a641 + %t646 = call { ptr, i64, i64 } @finch.gen.op(ptr %t628, { ptr, i64, i64 } %t645) + store { ptr, i64, i64 } %t645, ptr %a647 + call void @finch_str_drop(ptr %a647) + %t648 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t646, 0 + %t649 = load %S.ast.Type, ptr %a3 + store %S.ast.Type %t649, ptr %a650 + call void @finch.copy.S_ast_Type(ptr %a651, ptr %a650) + %t652 = load %S.ast.Type, ptr %a651 + %t653 = insertvalue %S.gen.Val %t648, %S.ast.Type %t652, 1 + call void @finch.drop.S_ast_Type(ptr %a23) + call void @finch.drop.S_gen_Val(ptr %a17) + ret %S.gen.Val %t653 +endif6987: + %t654 = load %S.ast.Type, ptr %a3 + %t655 = call i1 @finch.gen.isInt(%S.ast.Type %t654) + br label %logic.from6988 +logic.from6988: + br i1 %t655, label %logic.rhs6989, label %logic.end6990 +logic.rhs6989: + %t656 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 + %t657 = load { ptr, i64, i64 }, ptr %t656 + store { ptr, i64, i64 } %t657, ptr %a658 + store { ptr, i64, i64 } { ptr @.str.4538, i64 3, i64 0 }, ptr %a659 + %t660 = call i32 @finch_str_eq(ptr %a658, ptr %a659) + %t661 = icmp ne i32 %t660, 0 + br label %logic.rend6991 +logic.rend6991: + br label %logic.end6990 +logic.end6990: + %t662 = phi i1 [ false, %logic.from6988 ], [ %t661, %logic.rend6991 ] + br i1 %t662, label %then6992, label %endif6994 +then6992: + %t663 = load ptr, ptr %a1 + %t664 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 + %t665 = load { ptr, i64, i64 }, ptr %t664 + store { ptr, i64, i64 } { ptr @.str.4539, i64 13, i64 0 }, ptr %a667 + store { ptr, i64, i64 } %t665, ptr %a668 + call void @finch_str_concat(ptr %a666, ptr %a667, ptr %a668) + %t669 = load { ptr, i64, i64 }, ptr %a666 + store { ptr, i64, i64 } %t669, ptr %a671 + store { ptr, i64, i64 } { ptr @.str.4540, i64 4, i64 0 }, ptr %a672 + call void @finch_str_concat(ptr %a670, ptr %a671, ptr %a672) + store { ptr, i64, i64 } %t669, ptr %a673 + call void @finch_str_drop(ptr %a673) + %t674 = load { ptr, i64, i64 }, ptr %a670 + %t675 = load ptr, ptr %a1 + %t676 = load %S.ast.Type, ptr %a3 + %t677 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t675, %S.ast.Type %t676) + store { ptr, i64, i64 } %t674, ptr %a679 + store { ptr, i64, i64 } %t677, ptr %a680 + call void @finch_str_concat(ptr %a678, ptr %a679, ptr %a680) + store { ptr, i64, i64 } %t674, ptr %a681 + call void @finch_str_drop(ptr %a681) + store { ptr, i64, i64 } %t677, ptr %a682 + call void @finch_str_drop(ptr %a682) + %t683 = load { ptr, i64, i64 }, ptr %a678 + %t684 = call { ptr, i64, i64 } @finch.gen.op(ptr %t663, { ptr, i64, i64 } %t683) + store { ptr, i64, i64 } %t683, ptr %a685 + call void @finch_str_drop(ptr %a685) + %t686 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t684, 0 + %t687 = load %S.ast.Type, ptr %a3 + store %S.ast.Type %t687, ptr %a688 + call void @finch.copy.S_ast_Type(ptr %a689, ptr %a688) + %t690 = load %S.ast.Type, ptr %a689 + %t691 = insertvalue %S.gen.Val %t686, %S.ast.Type %t690, 1 + call void @finch.drop.S_ast_Type(ptr %a23) + call void @finch.drop.S_gen_Val(ptr %a17) + ret %S.gen.Val %t691 +endif6994: + %t692 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 + %t693 = load { ptr, i64, i64 }, ptr %t692 + store { ptr, i64, i64 } %t693, ptr %a694 + store { ptr, i64, i64 } { ptr @.str.4541, i64 3, i64 0 }, ptr %a695 + %t696 = call i32 @finch_str_eq(ptr %a694, ptr %a695) + %t697 = icmp ne i32 %t696, 0 + br label %logic.from6995 +logic.from6995: + br i1 %t697, label %logic.rhs6996, label %logic.end6997 +logic.rhs6996: + %t698 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 + %t699 = load { ptr, i64, i64 }, ptr %t698 + store { ptr, i64, i64 } %t699, ptr %a700 + store { ptr, i64, i64 } { ptr @.str.4542, i64 3, i64 0 }, ptr %a701 + %t702 = call i32 @finch_str_eq(ptr %a700, ptr %a701) + %t703 = icmp ne i32 %t702, 0 + br label %logic.rend6998 +logic.rend6998: + br label %logic.end6997 +logic.end6997: + %t704 = phi i1 [ false, %logic.from6995 ], [ %t703, %logic.rend6998 ] + br i1 %t704, label %then6999, label %endif7001 +then6999: + %t705 = load ptr, ptr %a1 + %t706 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t707 = load { ptr, i64, i64 }, ptr %t706 + %t708 = extractvalue { ptr, i64, i64 } %t707, 1 + %t709 = icmp uge i64 0, %t708 + br i1 %t709, label %range7002, label %inrange7003 +range7002: + call void @finch_panic_index(ptr @.str.4543, i64 3965, i64 0, i64 %t708) + unreachable +inrange7003: + %t710 = extractvalue { ptr, i64, i64 } %t707, 0 + %t711 = getelementptr inbounds %S.ast.Node, ptr %t710, i64 0 + %t712 = load %S.ast.Node, ptr %t711 + call void @finch.gen.fail(ptr %t705, %S.ast.Node %t712, { ptr, i64, i64 } { ptr @.str.4544, i64 70, i64 0 }) + br label %endif7001 +endif7001: + %t713 = load ptr, ptr %a1 + %t714 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t715 = load { ptr, i64, i64 }, ptr %t714 + %t716 = extractvalue { ptr, i64, i64 } %t715, 1 + %t717 = icmp uge i64 0, %t716 + br i1 %t717, label %range7004, label %inrange7005 +range7004: + call void @finch_panic_index(ptr @.str.4545, i64 3967, i64 0, i64 %t716) + unreachable +inrange7005: + %t718 = extractvalue { ptr, i64, i64 } %t715, 0 + %t719 = getelementptr inbounds %S.ast.Node, ptr %t718, i64 0 + %t720 = load %S.ast.Node, ptr %t719 + %t721 = load %S.ast.Type, ptr %a23 + %t722 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t721) + store { ptr, i64, i64 } { ptr @.str.4546, i64 11, i64 0 }, ptr %a724 + store { ptr, i64, i64 } %t722, ptr %a725 + call void @finch_str_concat(ptr %a723, ptr %a724, ptr %a725) + store { ptr, i64, i64 } %t722, ptr %a726 + call void @finch_str_drop(ptr %a726) + %t727 = load { ptr, i64, i64 }, ptr %a723 + store { ptr, i64, i64 } %t727, ptr %a729 + store { ptr, i64, i64 } { ptr @.str.4547, i64 6, i64 0 }, ptr %a730 + call void @finch_str_concat(ptr %a728, ptr %a729, ptr %a730) + store { ptr, i64, i64 } %t727, ptr %a731 + call void @finch_str_drop(ptr %a731) + %t732 = load { ptr, i64, i64 }, ptr %a728 + %t733 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t734 = load { ptr, i64, i64 }, ptr %t733 + store { ptr, i64, i64 } %t732, ptr %a736 + store { ptr, i64, i64 } %t734, ptr %a737 + call void @finch_str_concat(ptr %a735, ptr %a736, ptr %a737) + store { ptr, i64, i64 } %t732, ptr %a738 + call void @finch_str_drop(ptr %a738) + %t739 = load { ptr, i64, i64 }, ptr %a735 + call void @finch.gen.fail(ptr %t713, %S.ast.Node %t720, { ptr, i64, i64 } %t739) + store { ptr, i64, i64 } %t739, ptr %a740 + call void @finch_str_drop(ptr %a740) + %t741 = load %S.gen.Val, ptr %a17 + call void @finch.drop.S_ast_Type(ptr %a23) + ret %S.gen.Val %t741 } define internal i64 @finch.gen.sizeBytes(ptr %p0, %S.ast.Type %p1) { @@ -59622,19 +70649,19 @@ 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.4375, i64 6, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.4548, 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 %then6628, label %endif6630 -then6628: + br i1 %t8, label %then7006, label %endif7008 +then7006: %t9 = load ptr, ptr %a1 %t10 = icmp eq ptr %t9, null - br i1 %t10, label %panic6631, label %ok6632 -panic6631: - call void @finch_panic(ptr @.str.4376, i64 3713, ptr @.str.4377) + br i1 %t10, label %panic7009, label %ok7010 +panic7009: + call void @finch_panic(ptr @.str.4549, i64 4000, ptr @.str.4550) unreachable -ok6632: - %t11 = getelementptr inbounds %S.gen.Gen, ptr %t9, i32 0, i32 15 +ok7010: + %t11 = getelementptr inbounds %S.gen.Gen, ptr %t9, i32 0, i32 16 %t12 = load ptr, ptr %a1 %t13 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 %t14 = load { ptr, i64, i64 }, ptr %t13 @@ -59644,25 +70671,25 @@ ok6632: %t18 = load { ptr, i64, i64 }, ptr %t11 %t19 = extractvalue { ptr, i64, i64 } %t18, 1 %t20 = icmp uge i64 %t17, %t19 - br i1 %t20, label %range6633, label %inrange6634 -range6633: - call void @finch_panic_index(ptr @.str.4378, i64 3713, i64 %t17, i64 %t19) + br i1 %t20, label %range7011, label %inrange7012 +range7011: + call void @finch_panic_index(ptr @.str.4551, i64 4000, i64 %t17, i64 %t19) unreachable -inrange6634: +inrange7012: %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 -endif6630: +endif7008: %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.4379, i64 5, i64 0 }, ptr %a28 + store { ptr, i64, i64 } { ptr @.str.4552, 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 %then6635, label %endif6637 -then6635: + br i1 %t30, label %then7013, label %endif7015 +then7013: %t31 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 4 %t32 = load i64, ptr %t31 %t33 = load ptr, ptr %a1 @@ -59670,83 +70697,83 @@ then6635: %t35 = load { ptr, i64, i64 }, ptr %t34 %t36 = extractvalue { ptr, i64, i64 } %t35, 1 %t37 = icmp uge i64 0, %t36 - br i1 %t37, label %range6638, label %inrange6639 -range6638: - call void @finch_panic_index(ptr @.str.4380, i64 3716, i64 0, i64 %t36) + br i1 %t37, label %range7016, label %inrange7017 +range7016: + call void @finch_panic_index(ptr @.str.4553, i64 4003, i64 0, i64 %t36) unreachable -inrange6639: +inrange7017: %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 -endif6637: +endif7015: %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.4381, i64 3, i64 0 }, ptr %a46 + store { ptr, i64, i64 } { ptr @.str.4554, 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.from6640 -logic.from6640: - br i1 %t48, label %logic.end6642, label %logic.rhs6641 -logic.rhs6641: + br label %logic.from7018 +logic.from7018: + br i1 %t48, label %logic.end7020, label %logic.rhs7019 +logic.rhs7019: %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.4382, i64 3, i64 0 }, ptr %a52 + store { ptr, i64, i64 } { ptr @.str.4555, 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.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: + br label %logic.rend7021 +logic.rend7021: + br label %logic.end7020 +logic.end7020: + %t55 = phi i1 [ true, %logic.from7018 ], [ %t54, %logic.rend7021 ] + br i1 %t55, label %then7022, label %endif7024 +then7022: ret i64 8 -endif6646: +endif7024: %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.4383, i64 5, i64 0 }, ptr %a59 + store { ptr, i64, i64 } { ptr @.str.4556, 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 %then6647, label %endif6649 -then6647: + br i1 %t61, label %then7025, label %endif7027 +then7025: ret i64 8 -endif6649: +endif7027: %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.4384, i64 3, i64 0 }, ptr %a65 + store { ptr, i64, i64 } { ptr @.str.4557, 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 %then6650, label %endif6652 -then6650: + br i1 %t67, label %then7028, label %endif7030 +then7028: ret i64 4 -endif6652: +endif7030: %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.4385, i64 4, i64 0 }, ptr %a71 + store { ptr, i64, i64 } { ptr @.str.4558, 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 %then6653, label %endif6655 -then6653: + br i1 %t73, label %then7031, label %endif7033 +then7031: ret i64 1 -endif6655: +endif7033: %t74 = load %S.ast.Type, ptr %a2 %t75 = call i64 @finch.gen.bitsOf(%S.ast.Type %t74) %t76 = sdiv i64 %t75, 8 ret i64 %t76 } -define internal void @finch.copy.arr_S_gen_Leaf(ptr %dst, ptr %src) { +define internal void @finch.drop.arr_S_gen_Leaf(ptr %a) { entry: - call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (%S.gen.Leaf, ptr null, i32 1) to i64)) + call void @finch_arr_free(ptr %a) ret void } @@ -59774,8 +70801,6 @@ entry: %a120 = alloca %S.gen.Leaf, align 16 %a143 = alloca { ptr, i64, i64 }, align 16 %a144 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store %S.ast.Type %p1, ptr %a2 store i64 %p2, ptr %a3 @@ -59783,19 +70808,19 @@ 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.4386, i64 6, i64 0 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.4559, 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 %then6656, label %else6657 -then6656: + br i1 %t10, label %then7034, label %else7035 +then7034: %t11 = load ptr, ptr %a1 %t12 = icmp eq ptr %t11, null - br i1 %t12, label %panic6659, label %ok6660 -panic6659: - call void @finch_panic(ptr @.str.4387, i64 3737, ptr @.str.4388) + br i1 %t12, label %panic7037, label %ok7038 +panic7037: + call void @finch_panic(ptr @.str.4560, i64 4024, ptr @.str.4561) unreachable -ok6660: - %t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 15 +ok7038: + %t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 16 %t14 = load ptr, ptr %a1 %t15 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 %t16 = load { ptr, i64, i64 }, ptr %t15 @@ -59805,11 +70830,11 @@ ok6660: %t20 = load { ptr, i64, i64 }, ptr %t13 %t21 = extractvalue { ptr, i64, i64 } %t20, 1 %t22 = icmp uge i64 %t19, %t21 - br i1 %t22, label %range6661, label %inrange6662 -range6661: - call void @finch_panic_index(ptr @.str.4389, i64 3737, i64 %t19, i64 %t21) + br i1 %t22, label %range7039, label %inrange7040 +range7039: + call void @finch_panic_index(ptr @.str.4562, i64 4024, i64 %t19, i64 %t21) unreachable -inrange6662: +inrange7040: %t23 = extractvalue { ptr, i64, i64 } %t20, 0 %t24 = getelementptr inbounds %S.gen.StructDef, ptr %t23, i64 %t19 %t25 = load %S.gen.StructDef, ptr %t24 @@ -59821,23 +70846,23 @@ inrange6662: %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.cond6663 -for.cond6663: + br label %for.cond7041 +for.cond7041: %t34 = load i64, ptr %a33 %t35 = icmp slt i64 %t34, %t32 - br i1 %t35, label %for.body6664, label %for.end6666 -for.body6664: + br i1 %t35, label %for.body7042, label %for.end7044 +for.body7042: %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 %range6667, label %inrange6668 -range6667: - call void @finch_panic_index(ptr @.str.4390, i64 3739, i64 %t38, i64 %t40) + br i1 %t41, label %range7045, label %inrange7046 +range7045: + call void @finch_panic_index(ptr @.str.4563, i64 4026, i64 %t38, i64 %t40) unreachable -inrange6668: +inrange7046: %t42 = extractvalue { ptr, i64, i64 } %t39, 0 %t43 = getelementptr inbounds %S.ast.Type, ptr %t42, i64 %t38 %t44 = load %S.ast.Type, ptr %t43 @@ -59847,11 +70872,11 @@ inrange6668: %t48 = load { ptr, i64, i64 }, ptr %t46 %t49 = extractvalue { ptr, i64, i64 } %t48, 1 %t50 = icmp uge i64 %t47, %t49 - br i1 %t50, label %range6669, label %inrange6670 -range6669: - call void @finch_panic_index(ptr @.str.4391, i64 3739, i64 %t47, i64 %t49) + br i1 %t50, label %range7047, label %inrange7048 +range7047: + call void @finch_panic_index(ptr @.str.4564, i64 4026, i64 %t47, i64 %t49) unreachable -inrange6670: +inrange7048: %t51 = extractvalue { ptr, i64, i64 } %t48, 0 %t52 = getelementptr inbounds i64, ptr %t51, i64 %t47 %t53 = load i64, ptr %t52 @@ -59859,14 +70884,14 @@ inrange6670: %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.cond6671 -each.cond6671: + br label %each.cond7049 +each.cond7049: %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.body6672, label %each.end6674 -each.body6672: + br i1 %t61, label %each.body7050, label %each.end7052 +each.body7050: %t62 = load ptr, ptr %a56 %t63 = getelementptr inbounds %S.gen.Leaf, ptr %t62, i64 %t60 %t64 = load %S.gen.Leaf, ptr %t63 @@ -59880,40 +70905,42 @@ each.body6672: %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.step6673 -each.step6673: + br label %each.step7051 +each.step7051: %t72 = load i64, ptr %a57 %t73 = add i64 %t72, 1 store i64 %t73, ptr %a57 - br label %each.cond6671 -each.end6674: - br label %for.step6665 -for.step6665: + br label %each.cond7049 +each.end7052: + call void @finch.drop.arr_S_gen_Leaf(ptr %a56) + br label %for.step7043 +for.step7043: %t74 = load i64, ptr %a33 %t75 = add i64 %t74, 1 store i64 %t75, ptr %a33 - br label %for.cond6663 -for.end6666: - br label %endif6658 -else6657: + br label %for.cond7041 +for.end7044: + call void @finch.drop.S_gen_StructDef(ptr %a29) + br label %endif7036 +else7035: %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.4392, i64 5, i64 0 }, ptr %a79 + store { ptr, i64, i64 } { ptr @.str.4565, 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 %then6675, label %else6676 -then6675: + br i1 %t81, label %then7053, label %else7054 +then7053: %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 %range6678, label %inrange6679 -range6678: - call void @finch_panic_index(ptr @.str.4393, i64 3744, i64 0, i64 %t85) + br i1 %t86, label %range7056, label %inrange7057 +range7056: + call void @finch_panic_index(ptr @.str.4566, i64 4031, i64 0, i64 %t85) unreachable -inrange6679: +inrange7057: %t87 = extractvalue { ptr, i64, i64 } %t84, 0 %t88 = getelementptr inbounds %S.ast.Type, ptr %t87, i64 0 %t89 = load %S.ast.Type, ptr %t88 @@ -59922,22 +70949,22 @@ inrange6679: %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.cond6680 -for.cond6680: + br label %for.cond7058 +for.cond7058: %t95 = load i64, ptr %a94 %t96 = icmp slt i64 %t95, %t93 - br i1 %t96, label %for.body6681, label %for.end6683 -for.body6681: + br i1 %t96, label %for.body7059, label %for.end7061 +for.body7059: %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 %range6684, label %inrange6685 -range6684: - call void @finch_panic_index(ptr @.str.4394, i64 3746, i64 0, i64 %t100) + br i1 %t101, label %range7062, label %inrange7063 +range7062: + call void @finch_panic_index(ptr @.str.4567, i64 4033, i64 0, i64 %t100) unreachable -inrange6685: +inrange7063: %t102 = extractvalue { ptr, i64, i64 } %t99, 0 %t103 = getelementptr inbounds %S.ast.Type, ptr %t102, i64 0 %t104 = load %S.ast.Type, ptr %t103 @@ -59949,14 +70976,14 @@ inrange6685: %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.cond6686 -each.cond6686: + br label %each.cond7064 +each.cond7064: %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.body6687, label %each.end6689 -each.body6687: + br i1 %t116, label %each.body7065, label %each.end7067 +each.body7065: %t117 = load ptr, ptr %a111 %t118 = getelementptr inbounds %S.gen.Leaf, ptr %t117, i64 %t115 %t119 = load %S.gen.Leaf, ptr %t118 @@ -59970,22 +70997,23 @@ each.body6687: %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.step6688 -each.step6688: + br label %each.step7066 +each.step7066: %t127 = load i64, ptr %a112 %t128 = add i64 %t127, 1 store i64 %t128, ptr %a112 - br label %each.cond6686 -each.end6689: - br label %for.step6682 -for.step6682: + br label %each.cond7064 +each.end7067: + call void @finch.drop.arr_S_gen_Leaf(ptr %a111) + br label %for.step7060 +for.step7060: %t129 = load i64, ptr %a94 %t130 = add i64 %t129, 1 store i64 %t130, ptr %a94 - br label %for.cond6680 -for.end6683: - br label %endif6677 -else6676: + br label %for.cond7058 +for.end7061: + br label %endif7055 +else7054: %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 @@ -59999,7 +71027,7 @@ else6676: %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.4395, i64 5, i64 0 }, ptr %a144 + store { ptr, i64, i64 } { ptr @.str.4568, 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 @@ -60010,15 +71038,12 @@ else6676: %t151 = getelementptr inbounds %S.gen.Leaf, ptr %t150, i64 %t148 store %S.gen.Leaf %t147, ptr %t151 store i64 %t149, ptr %t131 - br label %endif6677 -endif6677: - br label %endif6658 -endif6658: + br label %endif7055 +endif7055: + br label %endif7036 +endif7036: %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) - %t155 = load { ptr, i64, i64 }, ptr %a154 - ret { ptr, i64, i64 } %t155 + ret { ptr, i64, i64 } %t152 } define internal void @finch.copy.S_gen_Abi(ptr %dst, ptr %src) { @@ -60053,42 +71078,51 @@ entry: %a23 = alloca i64, align 16 %a31 = alloca %S.gen.Leaf, align 16 %a49 = 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 + %a58 = alloca { ptr, i64, i64 }, align 16 + %a61 = 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 + %a71 = alloca { ptr, i64, i64 }, align 16 %a73 = 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 + %a76 = 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 + %a84 = alloca { ptr, i64, i64 }, align 16 %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca i64, align 16 - %a94 = alloca %S.gen.Leaf, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = 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 - %a114 = alloca { ptr, i64, i64 }, align 16 + %a86 = alloca { ptr, i64, i64 }, align 16 + %a87 = alloca { ptr, i64, i64 }, align 16 + %a93 = alloca { ptr, i64, i64 }, align 16 + %a94 = alloca i64, align 16 + %a102 = alloca %S.gen.Leaf, align 16 + %a105 = alloca { ptr, i64, i64 }, align 16 + %a106 = alloca { ptr, i64, i64 }, align 16 %a115 = alloca { ptr, i64, i64 }, align 16 %a116 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca %S.gen.Abi, align 16 - %a121 = alloca %S.gen.Abi, align 16 - %a127 = alloca %S.gen.Abi, align 16 - %a128 = alloca %S.gen.Abi, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca %S.gen.Abi, align 16 - %a166 = alloca %S.gen.Abi, align 16 + %a118 = alloca { ptr, i64, i64 }, align 16 + %a119 = alloca { ptr, i64, i64 }, align 16 + %a120 = alloca { ptr, i64, i64 }, align 16 + %a121 = 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 + %a126 = alloca { ptr, i64, i64 }, align 16 + %a130 = alloca { ptr, i64, i64 }, align 16 + %a136 = alloca { ptr, i64, i64 }, align 16 + %a140 = alloca { ptr, i64, i64 }, align 16 + %a151 = alloca { ptr, i64, i64 }, align 16 + %a162 = alloca { ptr, i64, i64 }, align 16 + %a164 = 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 + %a171 = alloca { ptr, i64, i64 }, align 16 + %a180 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store %S.ast.Type %p1, ptr %a2 store %S.gen.Abi %p2, ptr %a3 @@ -60106,28 +71140,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.from6690 -logic.from6690: - br i1 %t17, label %logic.rhs6691, label %logic.end6692 -logic.rhs6691: + br label %logic.from7068 +logic.from7068: + br i1 %t17, label %logic.rhs7069, label %logic.end7070 +logic.rhs7069: %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.rend6693 -logic.rend6693: - br label %logic.end6692 -logic.end6692: - %t21 = phi i1 [ false, %logic.from6690 ], [ %t20, %logic.rend6693 ] + br label %logic.rend7071 +logic.rend7071: + br label %logic.end7070 +logic.end7070: + %t21 = phi i1 [ false, %logic.from7068 ], [ %t20, %logic.rend7071 ] store i1 %t21, ptr %a22 store i64 0, ptr %a23 - br label %each.cond6694 -each.cond6694: + br label %each.cond7072 +each.cond7072: %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.body6695, label %each.end6697 -each.body6695: + br i1 %t27, label %each.body7073, label %each.end7075 +each.body7073: %t28 = load ptr, ptr %a14 %t29 = getelementptr inbounds %S.gen.Leaf, ptr %t28, i64 %t26 %t30 = load %S.gen.Leaf, ptr %t29 @@ -60135,224 +71169,270 @@ each.body6695: %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.from6698 -logic.from6698: - br i1 %t34, label %logic.end6700, label %logic.rhs6699 -logic.rhs6699: + br label %logic.from7076 +logic.from7076: + br i1 %t34, label %logic.end7078, label %logic.rhs7077 +logic.rhs7077: %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 %range6701, label %inrange6702 -range6701: - call void @finch_panic_index(ptr @.str.4396, i64 3763, i64 0, i64 %t38) + br i1 %t39, label %range7079, label %inrange7080 +range7079: + call void @finch_panic_index(ptr @.str.4569, i64 4050, i64 0, i64 %t38) unreachable -inrange6702: +inrange7080: %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.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: + br label %logic.rend7081 +logic.rend7081: + br label %logic.end7078 +logic.end7078: + %t45 = phi i1 [ true, %logic.from7076 ], [ %t44, %logic.rend7081 ] + br i1 %t45, label %then7082, label %endif7084 +then7082: store i1 false, ptr %a22 - br label %endif6706 -endif6706: - br label %each.step6696 -each.step6696: + br label %endif7084 +endif7084: + br label %each.step7074 +each.step7074: %t46 = load i64, ptr %a23 %t47 = add i64 %t46, 1 store i64 %t47, ptr %a23 - br label %each.cond6694 -each.end6697: + br label %each.cond7072 +each.end7075: %t48 = load i1, ptr %a22 - br i1 %t48, label %then6707, label %endif6709 -then6707: - store { ptr, i64, i64 } { ptr @.str.4397, i64 5, i64 0 }, ptr %a49 + br i1 %t48, label %then7085, label %endif7087 +then7085: + store { ptr, i64, i64 } { ptr @.str.4570, 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 %range6710, label %inrange6711 -range6710: - call void @finch_panic_index(ptr @.str.4398, i64 3769, i64 0, i64 %t51) + br i1 %t52, label %range7088, label %inrange7089 +range7088: + call void @finch_panic_index(ptr @.str.4571, i64 4056, i64 0, i64 %t51) unreachable -inrange6711: +inrange7089: %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 %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.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.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.4402, i64 3, i64 0 }, ptr %a70 + br i1 %t56, label %then7090, label %endif7092 +then7090: + %t57 = load { ptr, i64, i64 }, ptr %a49 + store { ptr, i64, i64 } { ptr @.str.4572, i64 6, i64 0 }, ptr %a49 + store { ptr, i64, i64 } %t57, ptr %a58 + call void @finch_str_drop(ptr %a58) + br label %endif7092 +endif7092: + %t59 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 0 + %t60 = load { ptr, i64, i64 }, ptr %t59 + store { ptr, i64, i64 } { ptr @.str.4573, i64 6, i64 0 }, ptr %t59 + store { ptr, i64, i64 } %t60, ptr %a61 + call void @finch_str_drop(ptr %a61) + %t62 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 1 + %t63 = getelementptr inbounds { ptr, i64, i64 }, ptr %t62, i32 0, i32 1 + %t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 + %t65 = load i64, ptr %t64 + call void @finch_str_from_int(ptr %a66, i64 %t65) + %t67 = load { ptr, i64, i64 }, ptr %a66 + store { ptr, i64, i64 } { ptr @.str.4574, 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 { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t71, ptr %a74 - store { ptr, i64, i64 } %t72, ptr %a75 + store { ptr, i64, i64 } %t67, ptr %a71 + call void @finch_str_drop(ptr %a71) + %t72 = load { ptr, i64, i64 }, ptr %a68 + store { ptr, i64, i64 } %t72, ptr %a74 + store { ptr, i64, i64 } { ptr @.str.4575, i64 3, i64 0 }, ptr %a75 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.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 - %t82 = add i64 %t81, 1 - call void @finch_arr_reserve(ptr %t58, i64 %t82, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t83 = load ptr, ptr %t58 - %t84 = getelementptr inbounds { ptr, i64, i64 }, ptr %t83, i64 %t81 - store { ptr, i64, i64 } %t80, ptr %t84 - store i64 %t82, ptr %t59 - store { ptr, i64, i64 } zeroinitializer, ptr %a85 - store i64 0, ptr %a86 - 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.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 - store %S.gen.Leaf %t93, ptr %a94 - %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %a85, i32 0, i32 1 - %t96 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t96, ptr %a97 - call void @finch_str_copy(ptr %a98, ptr %a97) - %t99 = load { ptr, i64, i64 }, ptr %a98 - %t100 = load i64, ptr %t95 - %t101 = add i64 %t100, 1 - call void @finch_arr_reserve(ptr %a85, i64 %t101, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t102 = load ptr, ptr %a85 - %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.step6717 -each.step6717: - %t104 = load i64, ptr %a86 - %t105 = add i64 %t104, 1 - store i64 %t105, ptr %a86 - br label %each.cond6715 -each.end6718: - %t106 = getelementptr inbounds { ptr, i64, i64 }, ptr %a85, i32 0, i32 1 - 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.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.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 - store { ptr, i64, i64 } %t117, ptr %t118 - %t119 = load %S.gen.Abi, ptr %a10 - store %S.gen.Abi %t119, ptr %a120 - call void @finch.copy.S_gen_Abi(ptr %a121, ptr %a120) - %t122 = load %S.gen.Abi, ptr %a121 - ret %S.gen.Abi %t122 -endif6709: - %t123 = load i64, ptr %a4 - %t124 = icmp sgt i64 %t123, 16 - 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.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 -endif6721: - %t130 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 0 - 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 %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 - %t136 = add i64 %t135, 1 - 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.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.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 %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 - %t145 = add i64 %t144, 1 - 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.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.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 %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 - %t160 = add i64 %t159, 1 - 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.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.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) - %t167 = load %S.gen.Abi, ptr %a166 - ret %S.gen.Abi %t167 + store { ptr, i64, i64 } %t72, ptr %a76 + call void @finch_str_drop(ptr %a76) + %t77 = load { ptr, i64, i64 }, ptr %a73 + %t78 = load { ptr, i64, i64 }, ptr %a49 + store { ptr, i64, i64 } %t77, ptr %a80 + store { ptr, i64, i64 } %t78, ptr %a81 + call void @finch_str_concat(ptr %a79, ptr %a80, ptr %a81) + store { ptr, i64, i64 } %t77, ptr %a82 + call void @finch_str_drop(ptr %a82) + %t83 = load { ptr, i64, i64 }, ptr %a79 + store { ptr, i64, i64 } %t83, ptr %a85 + store { ptr, i64, i64 } { ptr @.str.4576, i64 1, i64 0 }, ptr %a86 + call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) + store { ptr, i64, i64 } %t83, ptr %a87 + call void @finch_str_drop(ptr %a87) + %t88 = load { ptr, i64, i64 }, ptr %a84 + %t89 = load i64, ptr %t63 + %t90 = add i64 %t89, 1 + call void @finch_arr_reserve(ptr %t62, i64 %t90, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t91 = load ptr, ptr %t62 + %t92 = getelementptr inbounds { ptr, i64, i64 }, ptr %t91, i64 %t89 + store { ptr, i64, i64 } %t88, ptr %t92 + store i64 %t90, ptr %t63 + store { ptr, i64, i64 } zeroinitializer, ptr %a93 + store i64 0, ptr %a94 + br label %each.cond7093 +each.cond7093: + %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 + %t96 = load i64, ptr %t95 + %t97 = load i64, ptr %a94 + %t98 = icmp slt i64 %t97, %t96 + br i1 %t98, label %each.body7094, label %each.end7096 +each.body7094: + %t99 = load ptr, ptr %a14 + %t100 = getelementptr inbounds %S.gen.Leaf, ptr %t99, i64 %t97 + %t101 = load %S.gen.Leaf, ptr %t100 + store %S.gen.Leaf %t101, ptr %a102 + %t103 = getelementptr inbounds { ptr, i64, i64 }, ptr %a93, i32 0, i32 1 + %t104 = load { ptr, i64, i64 }, ptr %a49 + store { ptr, i64, i64 } %t104, ptr %a105 + call void @finch_str_copy(ptr %a106, ptr %a105) + %t107 = load { ptr, i64, i64 }, ptr %a106 + %t108 = load i64, ptr %t103 + %t109 = add i64 %t108, 1 + call void @finch_arr_reserve(ptr %a93, i64 %t109, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t110 = load ptr, ptr %a93 + %t111 = getelementptr inbounds { ptr, i64, i64 }, ptr %t110, i64 %t108 + store { ptr, i64, i64 } %t107, ptr %t111 + store i64 %t109, ptr %t103 + br label %each.step7095 +each.step7095: + %t112 = load i64, ptr %a94 + %t113 = add i64 %t112, 1 + store i64 %t113, ptr %a94 + br label %each.cond7093 +each.end7096: + %t114 = getelementptr inbounds { ptr, i64, i64 }, ptr %a93, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.4578, i64 2, i64 0 }, ptr %a115 + call void @finch_str_join(ptr %a116, ptr %a93, ptr %a115) + %t117 = load { ptr, i64, i64 }, ptr %a116 + store { ptr, i64, i64 } { ptr @.str.4577, i64 2, i64 0 }, ptr %a119 + store { ptr, i64, i64 } %t117, ptr %a120 + call void @finch_str_concat(ptr %a118, ptr %a119, ptr %a120) + store { ptr, i64, i64 } %t117, ptr %a121 + call void @finch_str_drop(ptr %a121) + %t122 = load { ptr, i64, i64 }, ptr %a118 + store { ptr, i64, i64 } %t122, ptr %a124 + store { ptr, i64, i64 } { ptr @.str.4579, i64 2, i64 0 }, ptr %a125 + call void @finch_str_concat(ptr %a123, ptr %a124, ptr %a125) + store { ptr, i64, i64 } %t122, ptr %a126 + call void @finch_str_drop(ptr %a126) + %t127 = load { ptr, i64, i64 }, ptr %a123 + %t128 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 2 + %t129 = load { ptr, i64, i64 }, ptr %t128 + store { ptr, i64, i64 } %t127, ptr %t128 + store { ptr, i64, i64 } %t129, ptr %a130 + call void @finch_str_drop(ptr %a130) + %t131 = load %S.gen.Abi, ptr %a10 + call void @finch.drop.arr_str(ptr %a93) + call void @finch_str_drop(ptr %a49) + call void @finch.drop.arr_S_gen_Leaf(ptr %a14) + ret %S.gen.Abi %t131 +endif7087: + %t132 = load i64, ptr %a4 + %t133 = icmp sgt i64 %t132, 16 + br i1 %t133, label %then7097, label %endif7099 +then7097: + %t134 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 0 + %t135 = load { ptr, i64, i64 }, ptr %t134 + store { ptr, i64, i64 } { ptr @.str.4580, i64 8, i64 0 }, ptr %t134 + store { ptr, i64, i64 } %t135, ptr %a136 + call void @finch_str_drop(ptr %a136) + %t137 = load %S.gen.Abi, ptr %a10 + call void @finch.drop.arr_S_gen_Leaf(ptr %a14) + ret %S.gen.Abi %t137 +endif7099: + %t138 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 0 + %t139 = load { ptr, i64, i64 }, ptr %t138 + store { ptr, i64, i64 } { ptr @.str.4581, i64 6, i64 0 }, ptr %t138 + store { ptr, i64, i64 } %t139, ptr %a140 + call void @finch_str_drop(ptr %a140) + %t141 = load i64, ptr %a5 + %t142 = icmp sge i64 %t141, 16 + br i1 %t142, label %then7100, label %else7101 +then7100: + %t143 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 1 + %t144 = getelementptr inbounds { ptr, i64, i64 }, ptr %t143, i32 0, i32 1 + %t145 = load i64, ptr %t144 + %t146 = add i64 %t145, 1 + call void @finch_arr_reserve(ptr %t143, i64 %t146, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t147 = load ptr, ptr %t143 + %t148 = getelementptr inbounds { ptr, i64, i64 }, ptr %t147, i64 %t145 + store { ptr, i64, i64 } { ptr @.str.4582, i64 4, i64 0 }, ptr %t148 + store i64 %t146, ptr %t144 + %t149 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 2 + %t150 = load { ptr, i64, i64 }, ptr %t149 + store { ptr, i64, i64 } { ptr @.str.4583, i64 4, i64 0 }, ptr %t149 + store { ptr, i64, i64 } %t150, ptr %a151 + call void @finch_str_drop(ptr %a151) + br label %endif7102 +else7101: + %t152 = load i64, ptr %a4 + %t153 = icmp sle i64 %t152, 8 + br i1 %t153, label %then7103, label %else7104 +then7103: + %t154 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 1 + %t155 = getelementptr inbounds { ptr, i64, i64 }, ptr %t154, i32 0, i32 1 + %t156 = load i64, ptr %t155 + %t157 = add i64 %t156, 1 + call void @finch_arr_reserve(ptr %t154, i64 %t157, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t158 = load ptr, ptr %t154 + %t159 = getelementptr inbounds { ptr, i64, i64 }, ptr %t158, i64 %t156 + store { ptr, i64, i64 } { ptr @.str.4584, i64 3, i64 0 }, ptr %t159 + store i64 %t157, ptr %t155 + %t160 = load i64, ptr %a4 + %t161 = mul i64 %t160, 8 + call void @finch_str_from_int(ptr %a162, i64 %t161) + %t163 = load { ptr, i64, i64 }, ptr %a162 + store { ptr, i64, i64 } { ptr @.str.4585, i64 1, i64 0 }, ptr %a165 + store { ptr, i64, i64 } %t163, ptr %a166 + call void @finch_str_concat(ptr %a164, ptr %a165, ptr %a166) + store { ptr, i64, i64 } %t163, ptr %a167 + call void @finch_str_drop(ptr %a167) + %t168 = load { ptr, i64, i64 }, ptr %a164 + %t169 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 2 + %t170 = load { ptr, i64, i64 }, ptr %t169 + store { ptr, i64, i64 } %t168, ptr %t169 + store { ptr, i64, i64 } %t170, ptr %a171 + call void @finch_str_drop(ptr %a171) + br label %endif7105 +else7104: + %t172 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 1 + %t173 = getelementptr inbounds { ptr, i64, i64 }, ptr %t172, i32 0, i32 1 + %t174 = load i64, ptr %t173 + %t175 = add i64 %t174, 1 + call void @finch_arr_reserve(ptr %t172, i64 %t175, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t176 = load ptr, ptr %t172 + %t177 = getelementptr inbounds { ptr, i64, i64 }, ptr %t176, i64 %t174 + store { ptr, i64, i64 } { ptr @.str.4586, i64 9, i64 0 }, ptr %t177 + store i64 %t175, ptr %t173 + %t178 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 2 + %t179 = load { ptr, i64, i64 }, ptr %t178 + store { ptr, i64, i64 } { ptr @.str.4587, i64 9, i64 0 }, ptr %t178 + store { ptr, i64, i64 } %t179, ptr %a180 + call void @finch_str_drop(ptr %a180) + br label %endif7105 +endif7105: + br label %endif7102 +endif7102: + %t181 = load %S.gen.Abi, ptr %a10 + call void @finch.drop.arr_S_gen_Leaf(ptr %a14) + ret %S.gen.Abi %t181 +} + +define internal void @finch.drop.S_gen_Abi(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.gen.Abi, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.gen.Abi, ptr %a, i32 0, i32 1 + call void @finch.drop.arr_str(ptr %t2) + %t3 = getelementptr inbounds %S.gen.Abi, ptr %a, i32 0, i32 2 + call void @finch_str_drop(ptr %t3) + ret void } define internal %S.gen.Abi @finch.gen.classify(ptr %p0, %S.ast.Type %p1) { @@ -60362,22 +71442,21 @@ entry: %a4 = alloca %S.gen.Abi, align 16 %a7 = alloca { ptr, i64, i64 }, align 16 %a8 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca %S.gen.Abi, align 16 - %a13 = alloca %S.gen.Abi, align 16 + %a27 = alloca %S.gen.StructDef, align 16 + %a28 = alloca %S.gen.StructDef, align 16 %a30 = alloca %S.gen.StructDef, align 16 - %a31 = alloca %S.gen.StructDef, align 16 - %a33 = alloca %S.gen.StructDef, align 16 - %a36 = alloca i64, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 + %a33 = alloca i64, align 16 + %a71 = alloca { ptr, i64, i64 }, align 16 + %a76 = 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 %a95 = alloca { ptr, i64, i64 }, align 16 %a96 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca %S.gen.Abi, align 16 - %a101 = alloca %S.gen.Abi, align 16 - %a110 = alloca %S.gen.Abi, align 16 - %a111 = alloca %S.gen.Abi, align 16 + %a99 = alloca { ptr, i64, i64 }, align 16 + %a102 = alloca { ptr, i64, i64 }, align 16 + %a111 = alloca { ptr, i64, i64 }, align 16 %a116 = alloca { ptr, i64, i64 }, align 16 %a120 = alloca i64, align 16 %a128 = alloca { ptr, i64, i64 }, align 16 @@ -60385,188 +71464,195 @@ entry: %a137 = alloca i64, align 16 %a145 = alloca %S.gen.Leaf, align 16 %a148 = alloca i64, align 16 - %a159 = alloca %S.gen.Abi, align 16 - %a160 = alloca %S.gen.Abi, align 16 - %a165 = alloca i64, align 16 - %a202 = alloca i64, align 16 - %a209 = alloca i64, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 + %a159 = alloca { ptr, i64, i64 }, align 16 + %a164 = alloca i64, align 16 + %a201 = alloca { ptr, i64, i64 }, align 16 + %a203 = alloca i64, align 16 + %a210 = alloca i64, align 16 + %a252 = alloca { ptr, i64, i64 }, align 16 %a254 = alloca { ptr, i64, i64 }, align 16 %a255 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 + %a256 = alloca { ptr, i64, i64 }, align 16 + %a257 = alloca { ptr, i64, i64 }, align 16 + %a277 = alloca { ptr, i64, i64 }, align 16 + %a278 = 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 %a287 = alloca { ptr, i64, i64 }, align 16 %a288 = alloca { ptr, i64, i64 }, align 16 %a289 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca %S.gen.Abi, align 16 - %a294 = alloca %S.gen.Abi, 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 + %a295 = alloca { ptr, i64, i64 }, align 16 + %a299 = alloca { ptr, i64, i64 }, 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.4415, i64 6, i64 0 }, 0 + %t3 = insertvalue %S.gen.Abi zeroinitializer, { ptr, i64, i64 } { ptr @.str.4588, 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.4416, i64 6, i64 0 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.4589, 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 %then6728, label %endif6730 -then6728: + br i1 %t10, label %then7106, label %endif7108 +then7106: %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 -endif6730: + ret %S.gen.Abi %t11 +endif7108: + %t12 = load ptr, ptr %a1 + %t13 = icmp eq ptr %t12, null + br i1 %t13, label %panic7109, label %ok7110 +panic7109: + call void @finch_panic(ptr @.str.4590, i64 4091, ptr @.str.4591) + unreachable +ok7110: + %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 16 %t15 = load ptr, ptr %a1 - %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic6731, label %ok6732 -panic6731: - call void @finch_panic(ptr @.str.4417, i64 3804, ptr @.str.4418) + %t16 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 + %t17 = load { ptr, i64, i64 }, ptr %t16 + %t18 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 + %t19 = load { ptr, i64, i64 }, ptr %t18 + %t20 = call i64 @finch.gen.findStruct(ptr %t15, { ptr, i64, i64 } %t17, { ptr, i64, i64 } %t19) + %t21 = load { ptr, i64, i64 }, ptr %t14 + %t22 = extractvalue { ptr, i64, i64 } %t21, 1 + %t23 = icmp uge i64 %t20, %t22 + br i1 %t23, label %range7111, label %inrange7112 +range7111: + call void @finch_panic_index(ptr @.str.4592, i64 4091, i64 %t20, i64 %t22) unreachable -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 - %t20 = load { ptr, i64, i64 }, ptr %t19 - %t21 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t22 = load { ptr, i64, i64 }, ptr %t21 - %t23 = call i64 @finch.gen.findStruct(ptr %t18, { ptr, i64, i64 } %t20, { ptr, i64, i64 } %t22) - %t24 = load { ptr, i64, i64 }, ptr %t17 - %t25 = extractvalue { ptr, i64, i64 } %t24, 1 - %t26 = icmp uge i64 %t23, %t25 - br i1 %t26, label %range6733, label %inrange6734 -range6733: - call void @finch_panic_index(ptr @.str.4419, i64 3804, i64 %t23, i64 %t25) - unreachable -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 +inrange7112: + %t24 = extractvalue { ptr, i64, i64 } %t21, 0 + %t25 = getelementptr inbounds %S.gen.StructDef, ptr %t24, i64 %t20 + %t26 = load %S.gen.StructDef, ptr %t25 + store %S.gen.StructDef %t26, ptr %a27 + call void @finch.copy.S_gen_StructDef(ptr %a28, ptr %a27) + %t29 = load %S.gen.StructDef, ptr %a28 store %S.gen.StructDef %t29, ptr %a30 - call void @finch.copy.S_gen_StructDef(ptr %a31, ptr %a30) - %t32 = load %S.gen.StructDef, ptr %a31 - store %S.gen.StructDef %t32, ptr %a33 - %t34 = getelementptr inbounds %S.gen.StructDef, ptr %a33, i32 0, i32 9 - %t35 = load i64, ptr %t34 - store i64 %t35, ptr %a36 - %t37 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 3 - store i64 8, ptr %t37 - %t38 = getelementptr inbounds %S.gen.StructDef, ptr %a33, i32 0, i32 10 + %t31 = getelementptr inbounds %S.gen.StructDef, ptr %a30, i32 0, i32 9 + %t32 = load i64, ptr %t31 + store i64 %t32, ptr %a33 + %t34 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 3 + store i64 8, ptr %t34 + %t35 = getelementptr inbounds %S.gen.StructDef, ptr %a30, i32 0, i32 10 + %t36 = load i64, ptr %t35 + %t37 = icmp sgt i64 %t36, 8 + br i1 %t37, label %then7113, label %endif7115 +then7113: + %t38 = getelementptr inbounds %S.gen.StructDef, ptr %a30, i32 0, i32 10 %t39 = load i64, ptr %t38 - %t40 = icmp sgt i64 %t39, 8 - 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 %endif6737 -endif6737: - %t44 = load ptr, ptr %a1 - %t45 = icmp eq ptr %t44, null - br i1 %t45, label %panic6738, label %ok6739 -panic6738: - call void @finch_panic(ptr @.str.4420, i64 3810, ptr @.str.4421) + %t40 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 3 + store i64 %t39, ptr %t40 + br label %endif7115 +endif7115: + %t41 = load ptr, ptr %a1 + %t42 = icmp eq ptr %t41, null + br i1 %t42, label %panic7116, label %ok7117 +panic7116: + call void @finch_panic(ptr @.str.4593, i64 4097, ptr @.str.4594) unreachable -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 %then6740, label %endif6742 -then6740: - %t49 = load ptr, ptr %a1 - %t50 = load %S.ast.Type, ptr %a2 - %t51 = load %S.gen.Abi, ptr %a4 - %t52 = load i64, ptr %a36 - %t53 = getelementptr inbounds %S.gen.StructDef, ptr %a33, i32 0, i32 10 - %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 -endif6742: - %t56 = load ptr, ptr %a1 - %t57 = icmp eq ptr %t56, null - br i1 %t57, label %panic6743, label %ok6744 -panic6743: - call void @finch_panic(ptr @.str.4422, i64 3813, ptr @.str.4423) +ok7117: + %t43 = getelementptr inbounds %S.gen.Gen, ptr %t41, i32 0, i32 30 + %t44 = getelementptr inbounds %S.platform.Target, ptr %t43, i32 0, i32 4 + %t45 = load i1, ptr %t44 + br i1 %t45, label %then7118, label %endif7120 +then7118: + %t46 = load ptr, ptr %a1 + %t47 = load %S.ast.Type, ptr %a2 + %t48 = load %S.gen.Abi, ptr %a4 + %t49 = load i64, ptr %a33 + %t50 = getelementptr inbounds %S.gen.StructDef, ptr %a30, i32 0, i32 10 + %t51 = load i64, ptr %t50 + %t52 = call %S.gen.Abi @finch.gen.classifyArm64(ptr %t46, %S.ast.Type %t47, %S.gen.Abi %t48, i64 %t49, i64 %t51) + call void @finch.drop.S_gen_StructDef(ptr %a30) + call void @finch.drop.S_gen_Abi(ptr %a4) + ret %S.gen.Abi %t52 +endif7120: + %t53 = load ptr, ptr %a1 + %t54 = icmp eq ptr %t53, null + br i1 %t54, label %panic7121, label %ok7122 +panic7121: + call void @finch_panic(ptr @.str.4595, i64 4100, ptr @.str.4596) unreachable -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 %then6745, label %endif6747 -then6745: - %t61 = load i64, ptr %a36 - %t62 = icmp eq i64 %t61, 1 - 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.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.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.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.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.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 - %t83 = load i64, ptr %t74 +ok7122: + %t55 = getelementptr inbounds %S.gen.Gen, ptr %t53, i32 0, i32 30 + %t56 = getelementptr inbounds %S.platform.Target, ptr %t55, i32 0, i32 1 + %t57 = load i1, ptr %t56 + br i1 %t57, label %then7123, label %endif7125 +then7123: + %t58 = load i64, ptr %a33 + %t59 = icmp eq i64 %t58, 1 + br label %logic.from7126 +logic.from7126: + br i1 %t59, label %logic.end7128, label %logic.rhs7127 +logic.rhs7127: + %t60 = load i64, ptr %a33 + %t61 = icmp eq i64 %t60, 2 + br label %logic.rend7129 +logic.rend7129: + br label %logic.end7128 +logic.end7128: + %t62 = phi i1 [ true, %logic.from7126 ], [ %t61, %logic.rend7129 ] + br label %logic.from7130 +logic.from7130: + br i1 %t62, label %logic.end7132, label %logic.rhs7131 +logic.rhs7131: + %t63 = load i64, ptr %a33 + %t64 = icmp eq i64 %t63, 4 + br label %logic.rend7133 +logic.rend7133: + br label %logic.end7132 +logic.end7132: + %t65 = phi i1 [ true, %logic.from7130 ], [ %t64, %logic.rend7133 ] + br label %logic.from7134 +logic.from7134: + br i1 %t65, label %logic.end7136, label %logic.rhs7135 +logic.rhs7135: + %t66 = load i64, ptr %a33 + %t67 = icmp eq i64 %t66, 8 + br label %logic.rend7137 +logic.rend7137: + br label %logic.end7136 +logic.end7136: + %t68 = phi i1 [ true, %logic.from7134 ], [ %t67, %logic.rend7137 ] + br i1 %t68, label %then7138, label %else7139 +then7138: + %t69 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 0 + %t70 = load { ptr, i64, i64 }, ptr %t69 + store { ptr, i64, i64 } { ptr @.str.4597, i64 6, i64 0 }, ptr %t69 + store { ptr, i64, i64 } %t70, ptr %a71 + call void @finch_str_drop(ptr %a71) + %t72 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 + %t73 = getelementptr inbounds { ptr, i64, i64 }, ptr %t72, i32 0, i32 1 + %t74 = load i64, ptr %a33 + %t75 = mul i64 %t74, 8 + call void @finch_str_from_int(ptr %a76, i64 %t75) + %t77 = load { ptr, i64, i64 }, ptr %a76 + store { ptr, i64, i64 } { ptr @.str.4598, i64 1, i64 0 }, ptr %a79 + store { ptr, i64, i64 } %t77, ptr %a80 + call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) + store { ptr, i64, i64 } %t77, ptr %a81 + call void @finch_str_drop(ptr %a81) + %t82 = load { ptr, i64, i64 }, ptr %a78 + %t83 = load i64, ptr %t73 %t84 = add i64 %t83, 1 - call void @finch_arr_reserve(ptr %t73, i64 %t84, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t85 = load ptr, ptr %t73 + call void @finch_arr_reserve(ptr %t72, i64 %t84, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t85 = load ptr, ptr %t72 %t86 = getelementptr inbounds { ptr, i64, i64 }, ptr %t85, i64 %t83 store { ptr, i64, i64 } %t82, ptr %t86 - store i64 %t84, ptr %t74 + store i64 %t84, ptr %t73 %t87 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 %t88 = load { ptr, i64, i64 }, ptr %t87 %t89 = extractvalue { ptr, i64, i64 } %t88, 1 %t90 = icmp uge i64 0, %t89 - br i1 %t90, label %range6763, label %inrange6764 -range6763: - call void @finch_panic_index(ptr @.str.4426, i64 3819, i64 0, i64 %t89) + br i1 %t90, label %range7141, label %inrange7142 +range7141: + call void @finch_panic_index(ptr @.str.4599, i64 4106, i64 0, i64 %t89) unreachable -inrange6764: +inrange7142: %t91 = extractvalue { ptr, i64, i64 } %t88, 0 %t92 = getelementptr inbounds { ptr, i64, i64 }, ptr %t91, i64 0 %t93 = load { ptr, i64, i64 }, ptr %t92 @@ -60574,47 +71660,52 @@ inrange6764: store { ptr, i64, i64 } %t93, ptr %a95 call void @finch_str_copy(ptr %a96, ptr %a95) %t97 = load { ptr, i64, i64 }, ptr %a96 + %t98 = load { ptr, i64, i64 }, ptr %t94 store { ptr, i64, i64 } %t97, ptr %t94 - br label %endif6762 -else6761: - %t98 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 0 - 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 -endif6747: - %t103 = load i64, ptr %a36 - %t104 = icmp sgt i64 %t103, 16 - 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.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.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 + store { ptr, i64, i64 } %t98, ptr %a99 + call void @finch_str_drop(ptr %a99) + br label %endif7140 +else7139: + %t100 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 0 + %t101 = load { ptr, i64, i64 }, ptr %t100 + store { ptr, i64, i64 } { ptr @.str.4600, i64 8, i64 0 }, ptr %t100 + store { ptr, i64, i64 } %t101, ptr %a102 + call void @finch_str_drop(ptr %a102) + br label %endif7140 +endif7140: + %t103 = load %S.gen.Abi, ptr %a4 + call void @finch.drop.S_gen_StructDef(ptr %a30) + ret %S.gen.Abi %t103 +endif7125: + %t104 = load i64, ptr %a33 + %t105 = icmp sgt i64 %t104, 16 + br label %logic.from7143 +logic.from7143: + br i1 %t105, label %logic.end7145, label %logic.rhs7144 +logic.rhs7144: + %t106 = load i64, ptr %a33 + %t107 = icmp eq i64 %t106, 0 + br label %logic.rend7146 +logic.rend7146: + br label %logic.end7145 +logic.end7145: + %t108 = phi i1 [ true, %logic.from7143 ], [ %t107, %logic.rend7146 ] + br i1 %t108, label %then7147, label %endif7149 +then7147: + %t109 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 0 + %t110 = load { ptr, i64, i64 }, ptr %t109 + store { ptr, i64, i64 } { ptr @.str.4601, i64 6, i64 0 }, ptr %t109 + store { ptr, i64, i64 } %t110, ptr %a111 + call void @finch_str_drop(ptr %a111) + %t112 = load %S.gen.Abi, ptr %a4 + call void @finch.drop.S_gen_StructDef(ptr %a30) ret %S.gen.Abi %t112 -endif6771: +endif7149: %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) store { ptr, i64, i64 } %t115, ptr %a116 - %t117 = load i64, ptr %a36 + %t117 = load i64, ptr %a33 %t118 = add i64 %t117, 7 %t119 = sdiv i64 %t118, 8 store i64 %t119, ptr %a120 @@ -60639,14 +71730,14 @@ endif6771: %t135 = insertvalue { ptr, i64, i64 } %t134, i64 2, 2 store { ptr, i64, i64 } %t135, ptr %a136 store i64 0, ptr %a137 - br label %each.cond6772 -each.cond6772: + br label %each.cond7150 +each.cond7150: %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.body6773, label %each.end6775 -each.body6773: + br i1 %t141, label %each.body7151, label %each.end7153 +each.body7151: %t142 = load ptr, ptr %a116 %t143 = getelementptr inbounds %S.gen.Leaf, ptr %t142, i64 %t140 %t144 = load %S.gen.Leaf, ptr %t143 @@ -60656,324 +71747,301 @@ each.body6773: store i64 %t147, ptr %a148 %t149 = load i64, ptr %a148 %t150 = icmp sgt i64 %t149, 8 - br i1 %t150, label %then6776, label %endif6778 -then6776: + br i1 %t150, label %then7154, label %endif7156 +then7154: store i64 8, ptr %a148 - br label %endif6778 -endif6778: + br label %endif7156 +endif7156: %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 %panic6779, label %ok6780 -panic6779: - call void @finch_panic(ptr @.str.4429, i64 3838, ptr @.str.4430) + br i1 %t154, label %panic7157, label %ok7158 +panic7157: + call void @finch_panic(ptr @.str.4602, i64 4125, ptr @.str.4603) unreachable -ok6780: +ok7158: %t155 = srem i64 %t152, %t153 %t156 = icmp ne i64 %t155, 0 - br i1 %t156, label %then6781, label %endif6783 -then6781: + br i1 %t156, label %then7159, label %endif7161 +then7159: %t157 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 0 - 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 -endif6783: - %t162 = getelementptr inbounds %S.gen.Leaf, ptr %a145, i32 0, i32 0 - %t163 = load i64, ptr %t162 - %t164 = sdiv i64 %t163, 8 - store i64 %t164, ptr %a165 - %t166 = load i64, ptr %a165 - %t167 = load { ptr, i64, i64 }, ptr %a128 - %t168 = extractvalue { ptr, i64, i64 } %t167, 1 - %t169 = icmp uge i64 %t166, %t168 - br i1 %t169, label %range6784, label %inrange6785 -range6784: - call void @finch_panic_index(ptr @.str.4432, i64 3843, i64 %t166, i64 %t168) + %t158 = load { ptr, i64, i64 }, ptr %t157 + store { ptr, i64, i64 } { ptr @.str.4604, i64 6, i64 0 }, ptr %t157 + store { ptr, i64, i64 } %t158, ptr %a159 + call void @finch_str_drop(ptr %a159) + %t160 = load %S.gen.Abi, ptr %a4 + call void @finch.drop.arr_bool(ptr %a136) + call void @finch.drop.arr_int(ptr %a128) + call void @finch.drop.arr_S_gen_Leaf(ptr %a116) + call void @finch.drop.S_gen_StructDef(ptr %a30) + ret %S.gen.Abi %t160 +endif7161: + %t161 = getelementptr inbounds %S.gen.Leaf, ptr %a145, i32 0, i32 0 + %t162 = load i64, ptr %t161 + %t163 = sdiv i64 %t162, 8 + store i64 %t163, ptr %a164 + %t165 = load i64, ptr %a164 + %t166 = load { ptr, i64, i64 }, ptr %a128 + %t167 = extractvalue { ptr, i64, i64 } %t166, 1 + %t168 = icmp uge i64 %t165, %t167 + br i1 %t168, label %range7162, label %inrange7163 +range7162: + call void @finch_panic_index(ptr @.str.4605, i64 4130, i64 %t165, i64 %t167) unreachable -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.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.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 %range6793, label %inrange6794 -range6793: - call void @finch_panic_index(ptr @.str.4433, i64 3844, i64 %t178, i64 %t180) +inrange7163: + %t169 = extractvalue { ptr, i64, i64 } %t166, 0 + %t170 = getelementptr inbounds i64, ptr %t169, i64 %t165 + %t171 = load i64, ptr %t170 + %t172 = icmp eq i64 %t171, 1 + br label %logic.from7164 +logic.from7164: + br i1 %t172, label %logic.end7166, label %logic.rhs7165 +logic.rhs7165: + %t173 = getelementptr inbounds %S.gen.Leaf, ptr %a145, i32 0, i32 2 + %t174 = load i1, ptr %t173 + %t175 = xor i1 %t174, true + br label %logic.rend7167 +logic.rend7167: + br label %logic.end7166 +logic.end7166: + %t176 = phi i1 [ true, %logic.from7164 ], [ %t175, %logic.rend7167 ] + br i1 %t176, label %then7168, label %else7169 +then7168: + %t177 = load i64, ptr %a164 + %t178 = load { ptr, i64, i64 }, ptr %a128 + %t179 = extractvalue { ptr, i64, i64 } %t178, 1 + %t180 = icmp uge i64 %t177, %t179 + br i1 %t180, label %range7171, label %inrange7172 +range7171: + call void @finch_panic_index(ptr @.str.4606, i64 4131, i64 %t177, i64 %t179) unreachable -inrange6794: - %t182 = extractvalue { ptr, i64, i64 } %t179, 0 - %t183 = getelementptr inbounds i64, ptr %t182, i64 %t178 - store i64 1, ptr %t183 - 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 %range6795, label %inrange6796 -range6795: - call void @finch_panic_index(ptr @.str.4434, i64 3846, i64 %t184, i64 %t186) +inrange7172: + %t181 = extractvalue { ptr, i64, i64 } %t178, 0 + %t182 = getelementptr inbounds i64, ptr %t181, i64 %t177 + store i64 1, ptr %t182 + br label %endif7170 +else7169: + %t183 = load i64, ptr %a164 + %t184 = load { ptr, i64, i64 }, ptr %a128 + %t185 = extractvalue { ptr, i64, i64 } %t184, 1 + %t186 = icmp uge i64 %t183, %t185 + br i1 %t186, label %range7173, label %inrange7174 +range7173: + call void @finch_panic_index(ptr @.str.4607, i64 4133, i64 %t183, i64 %t185) unreachable -inrange6796: - %t188 = extractvalue { ptr, i64, i64 } %t185, 0 - %t189 = getelementptr inbounds i64, ptr %t188, i64 %t184 - store i64 2, ptr %t189 - 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 %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 %range6800, label %inrange6801 -range6800: - call void @finch_panic_index(ptr @.str.4435, i64 3849, i64 %t192, i64 %t194) +inrange7174: + %t187 = extractvalue { ptr, i64, i64 } %t184, 0 + %t188 = getelementptr inbounds i64, ptr %t187, i64 %t183 + store i64 2, ptr %t188 + br label %endif7170 +endif7170: + %t189 = getelementptr inbounds %S.gen.Leaf, ptr %a145, i32 0, i32 3 + %t190 = load i1, ptr %t189 + br i1 %t190, label %then7175, label %endif7177 +then7175: + %t191 = load i64, ptr %a164 + %t192 = load { ptr, i64, i64 }, ptr %a136 + %t193 = extractvalue { ptr, i64, i64 } %t192, 1 + %t194 = icmp uge i64 %t191, %t193 + br i1 %t194, label %range7178, label %inrange7179 +range7178: + call void @finch_panic_index(ptr @.str.4608, i64 4136, i64 %t191, i64 %t193) unreachable -inrange6801: - %t196 = extractvalue { ptr, i64, i64 } %t193, 0 - %t197 = getelementptr inbounds i1, ptr %t196, i64 %t192 - store i1 true, ptr %t197 - 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.cond6772 -each.end6775: - %t200 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 0 - 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.cond6802 -for.cond6802: - %t203 = load i64, ptr %a202 - %t204 = icmp slt i64 %t203, %t201 - 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 - %t208 = sub i64 %t205, %t207 - store i64 %t208, ptr %a209 - %t210 = load i64, ptr %a209 - %t211 = icmp sgt i64 %t210, 8 - br i1 %t211, label %then6806, label %endif6808 -then6806: - store i64 8, ptr %a209 - 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 %range6809, label %inrange6810 -range6809: - call void @finch_panic_index(ptr @.str.4437, i64 3858, i64 %t212, i64 %t214) +inrange7179: + %t195 = extractvalue { ptr, i64, i64 } %t192, 0 + %t196 = getelementptr inbounds i1, ptr %t195, i64 %t191 + store i1 true, ptr %t196 + br label %endif7177 +endif7177: + br label %each.step7152 +each.step7152: + %t197 = load i64, ptr %a137 + %t198 = add i64 %t197, 1 + store i64 %t198, ptr %a137 + br label %each.cond7150 +each.end7153: + %t199 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 0 + %t200 = load { ptr, i64, i64 }, ptr %t199 + store { ptr, i64, i64 } { ptr @.str.4609, i64 6, i64 0 }, ptr %t199 + store { ptr, i64, i64 } %t200, ptr %a201 + call void @finch_str_drop(ptr %a201) + %t202 = load i64, ptr %a120 + store i64 0, ptr %a203 + br label %for.cond7180 +for.cond7180: + %t204 = load i64, ptr %a203 + %t205 = icmp slt i64 %t204, %t202 + br i1 %t205, label %for.body7181, label %for.end7183 +for.body7181: + %t206 = load i64, ptr %a33 + %t207 = load i64, ptr %a203 + %t208 = mul i64 8, %t207 + %t209 = sub i64 %t206, %t208 + store i64 %t209, ptr %a210 + %t211 = load i64, ptr %a210 + %t212 = icmp sgt i64 %t211, 8 + br i1 %t212, label %then7184, label %endif7186 +then7184: + store i64 8, ptr %a210 + br label %endif7186 +endif7186: + %t213 = load i64, ptr %a203 + %t214 = load { ptr, i64, i64 }, ptr %a128 + %t215 = extractvalue { ptr, i64, i64 } %t214, 1 + %t216 = icmp uge i64 %t213, %t215 + br i1 %t216, label %range7187, label %inrange7188 +range7187: + call void @finch_panic_index(ptr @.str.4610, i64 4145, i64 %t213, i64 %t215) unreachable -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 %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 %range6814, label %inrange6815 -range6814: - call void @finch_panic_index(ptr @.str.4438, i64 3859, i64 %t220, i64 %t222) +inrange7188: + %t217 = extractvalue { ptr, i64, i64 } %t214, 0 + %t218 = getelementptr inbounds i64, ptr %t217, i64 %t213 + %t219 = load i64, ptr %t218 + %t220 = icmp eq i64 %t219, 2 + br i1 %t220, label %then7189, label %else7190 +then7189: + %t221 = load i64, ptr %a203 + %t222 = load { ptr, i64, i64 }, ptr %a136 + %t223 = extractvalue { ptr, i64, i64 } %t222, 1 + %t224 = icmp uge i64 %t221, %t223 + br i1 %t224, label %range7192, label %inrange7193 +range7192: + call void @finch_panic_index(ptr @.str.4611, i64 4146, i64 %t221, i64 %t223) unreachable -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 %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 - %t230 = add i64 %t229, 1 - 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.4439, i64 6, i64 0 }, ptr %t232 - store i64 %t230, ptr %t228 - br label %endif6818 -else6817: - %t233 = load i64, ptr %a209 - %t234 = icmp sgt i64 %t233, 4 - 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 - %t238 = add i64 %t237, 1 - 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.4440, i64 11, i64 0 }, ptr %t240 - store i64 %t238, ptr %t236 - 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 - %t244 = add i64 %t243, 1 - 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.4441, i64 5, i64 0 }, ptr %t246 - store i64 %t244, ptr %t242 - 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.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 - %t257 = load i64, ptr %t248 - %t258 = add i64 %t257, 1 - call void @finch_arr_reserve(ptr %t247, i64 %t258, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t259 = load ptr, ptr %t247 - %t260 = getelementptr inbounds { ptr, i64, i64 }, ptr %t259, i64 %t257 - store { ptr, i64, i64 } %t256, ptr %t260 - store i64 %t258, ptr %t248 - 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.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 %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 %range6825, label %inrange6826 -range6825: - call void @finch_panic_index(ptr @.str.4443, i64 3871, i64 0, i64 %t269) +inrange7193: + %t225 = extractvalue { ptr, i64, i64 } %t222, 0 + %t226 = getelementptr inbounds i1, ptr %t225, i64 %t221 + %t227 = load i1, ptr %t226 + br i1 %t227, label %then7194, label %else7195 +then7194: + %t228 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 + %t229 = getelementptr inbounds { ptr, i64, i64 }, ptr %t228, i32 0, i32 1 + %t230 = load i64, ptr %t229 + %t231 = add i64 %t230, 1 + call void @finch_arr_reserve(ptr %t228, i64 %t231, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t232 = load ptr, ptr %t228 + %t233 = getelementptr inbounds { ptr, i64, i64 }, ptr %t232, i64 %t230 + store { ptr, i64, i64 } { ptr @.str.4612, i64 6, i64 0 }, ptr %t233 + store i64 %t231, ptr %t229 + br label %endif7196 +else7195: + %t234 = load i64, ptr %a210 + %t235 = icmp sgt i64 %t234, 4 + br i1 %t235, label %then7197, label %else7198 +then7197: + %t236 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 + %t237 = getelementptr inbounds { ptr, i64, i64 }, ptr %t236, i32 0, i32 1 + %t238 = load i64, ptr %t237 + %t239 = add i64 %t238, 1 + call void @finch_arr_reserve(ptr %t236, i64 %t239, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t240 = load ptr, ptr %t236 + %t241 = getelementptr inbounds { ptr, i64, i64 }, ptr %t240, i64 %t238 + store { ptr, i64, i64 } { ptr @.str.4613, i64 11, i64 0 }, ptr %t241 + store i64 %t239, ptr %t237 + br label %endif7199 +else7198: + %t242 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 + %t243 = getelementptr inbounds { ptr, i64, i64 }, ptr %t242, i32 0, i32 1 + %t244 = load i64, ptr %t243 + %t245 = add i64 %t244, 1 + call void @finch_arr_reserve(ptr %t242, i64 %t245, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t246 = load ptr, ptr %t242 + %t247 = getelementptr inbounds { ptr, i64, i64 }, ptr %t246, i64 %t244 + store { ptr, i64, i64 } { ptr @.str.4614, i64 5, i64 0 }, ptr %t247 + store i64 %t245, ptr %t243 + br label %endif7199 +endif7199: + br label %endif7196 +endif7196: + br label %endif7191 +else7190: + %t248 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 + %t249 = getelementptr inbounds { ptr, i64, i64 }, ptr %t248, i32 0, i32 1 + %t250 = load i64, ptr %a210 + %t251 = mul i64 %t250, 8 + call void @finch_str_from_int(ptr %a252, i64 %t251) + %t253 = load { ptr, i64, i64 }, ptr %a252 + store { ptr, i64, i64 } { ptr @.str.4615, i64 1, i64 0 }, ptr %a255 + store { ptr, i64, i64 } %t253, ptr %a256 + call void @finch_str_concat(ptr %a254, ptr %a255, ptr %a256) + store { ptr, i64, i64 } %t253, ptr %a257 + call void @finch_str_drop(ptr %a257) + %t258 = load { ptr, i64, i64 }, ptr %a254 + %t259 = load i64, ptr %t249 + %t260 = add i64 %t259, 1 + call void @finch_arr_reserve(ptr %t248, i64 %t260, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t261 = load ptr, ptr %t248 + %t262 = getelementptr inbounds { ptr, i64, i64 }, ptr %t261, i64 %t259 + store { ptr, i64, i64 } %t258, ptr %t262 + store i64 %t260, ptr %t249 + br label %endif7191 +endif7191: + br label %for.step7182 +for.step7182: + %t263 = load i64, ptr %a203 + %t264 = add i64 %t263, 1 + store i64 %t264, ptr %a203 + br label %for.cond7180 +for.end7183: + %t265 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 + %t266 = getelementptr inbounds { ptr, i64, i64 }, ptr %t265, i32 0, i32 1 + %t267 = load i64, ptr %t266 + %t268 = icmp eq i64 %t267, 1 + br i1 %t268, label %then7200, label %else7201 +then7200: + %t269 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 + %t270 = load { ptr, i64, i64 }, ptr %t269 + %t271 = extractvalue { ptr, i64, i64 } %t270, 1 + %t272 = icmp uge i64 0, %t271 + br i1 %t272, label %range7203, label %inrange7204 +range7203: + call void @finch_panic_index(ptr @.str.4616, i64 4158, i64 0, i64 %t271) unreachable -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 - %t274 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 2 - store { ptr, i64, i64 } %t273, ptr %a275 - 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 %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.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.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.4446, i64 2, i64 0 }, ptr %a289 +inrange7204: + %t273 = extractvalue { ptr, i64, i64 } %t270, 0 + %t274 = getelementptr inbounds { ptr, i64, i64 }, ptr %t273, i64 0 + %t275 = load { ptr, i64, i64 }, ptr %t274 + %t276 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 2 + store { ptr, i64, i64 } %t275, ptr %a277 + call void @finch_str_copy(ptr %a278, ptr %a277) + %t279 = load { ptr, i64, i64 }, ptr %a278 + %t280 = load { ptr, i64, i64 }, ptr %t276 + store { ptr, i64, i64 } %t279, ptr %t276 + store { ptr, i64, i64 } %t280, ptr %a281 + call void @finch_str_drop(ptr %a281) + br label %endif7202 +else7201: + %t282 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 + %t283 = getelementptr inbounds { ptr, i64, i64 }, ptr %t282, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.4618, i64 2, i64 0 }, ptr %a284 + call void @finch_str_join(ptr %a285, ptr %t282, ptr %a284) + %t286 = load { ptr, i64, i64 }, ptr %a285 + store { ptr, i64, i64 } { ptr @.str.4617, i64 2, i64 0 }, ptr %a288 + store { ptr, i64, i64 } %t286, 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 %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) - %t295 = load %S.gen.Abi, ptr %a294 - ret %S.gen.Abi %t295 -} - -define internal void @finch.copy.arr_S_gen_Abi(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.gen.Abi, 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.cond6878 -n.cond6878: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - 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.cond6878 -n.end6880: - ret void -} - -define internal void @finch.copy.S_gen_Plan(ptr %dst, ptr %src) { -entry: - - %t1 = load %S.gen.Plan, ptr %src - store %S.gen.Plan %t1, ptr %dst - %t2 = getelementptr inbounds %S.gen.Plan, ptr %dst, i32 0, i32 0 - %t3 = getelementptr inbounds %S.gen.Plan, ptr %src, i32 0, i32 0 - call void @finch.copy.S_gen_Abi(ptr %t2, ptr %t3) - %t4 = getelementptr inbounds %S.gen.Plan, ptr %dst, i32 0, i32 1 - %t5 = getelementptr inbounds %S.gen.Plan, ptr %src, i32 0, i32 1 - call void @finch.copy.arr_S_gen_Abi(ptr %t4, ptr %t5) - %t6 = getelementptr inbounds %S.gen.Plan, ptr %dst, i32 0, i32 2 - %t7 = getelementptr inbounds %S.gen.Plan, ptr %src, i32 0, i32 2 - call void @finch_str_copy(ptr %t6, ptr %t7) - ret void + store { ptr, i64, i64 } %t286, ptr %a290 + call void @finch_str_drop(ptr %a290) + %t291 = load { ptr, i64, i64 }, ptr %a287 + store { ptr, i64, i64 } %t291, ptr %a293 + store { ptr, i64, i64 } { ptr @.str.4619, i64 2, i64 0 }, ptr %a294 + call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) + store { ptr, i64, i64 } %t291, ptr %a295 + call void @finch_str_drop(ptr %a295) + %t296 = load { ptr, i64, i64 }, ptr %a292 + %t297 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 2 + %t298 = load { ptr, i64, i64 }, ptr %t297 + store { ptr, i64, i64 } %t296, ptr %t297 + store { ptr, i64, i64 } %t298, ptr %a299 + call void @finch_str_drop(ptr %a299) + br label %endif7202 +endif7202: + %t300 = load %S.gen.Abi, ptr %a4 + call void @finch.drop.arr_bool(ptr %a136) + call void @finch.drop.arr_int(ptr %a128) + call void @finch.drop.arr_S_gen_Leaf(ptr %a116) + call void @finch.drop.S_gen_StructDef(ptr %a30) + ret %S.gen.Abi %t300 } define internal %S.gen.Plan @finch.gen.makePlan(ptr %p0, %S.ast.Type %p1, { ptr, i64, i64 } %p2) { @@ -60984,34 +72052,39 @@ entry: %a4 = alloca %S.gen.Plan, align 16 %a5 = alloca i64, align 16 %a6 = alloca i64, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 + %a12 = alloca %S.gen.Abi, align 16 %a15 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a45 = 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 i64, align 16 - %a64 = alloca %S.ast.Type, align 16 - %a68 = alloca %S.gen.Abi, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca i64, align 16 - %a76 = alloca i64, align 16 - %a78 = alloca 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 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca %S.gen.Abi, align 16 - %a141 = alloca %S.gen.Abi, align 16 - %a150 = alloca %S.gen.Plan, align 16 - %a151 = alloca %S.gen.Plan, align 16 + %a18 = alloca { ptr, i64, i64 }, align 16 + %a19 = alloca { ptr, i64, i64 }, align 16 + %a27 = alloca { ptr, i64, i64 }, align 16 + %a31 = alloca { ptr, i64, i64 }, align 16 + %a32 = alloca { ptr, i64, i64 }, align 16 + %a38 = alloca { ptr, i64, i64 }, align 16 + %a42 = alloca { ptr, i64, i64 }, align 16 + %a43 = alloca { ptr, i64, i64 }, align 16 + %a49 = alloca { ptr, i64, i64 }, align 16 + %a55 = alloca { ptr, i64, i64 }, align 16 + %a56 = alloca { ptr, i64, i64 }, align 16 + %a63 = alloca { ptr, i64, i64 }, align 16 + %a64 = alloca { ptr, i64, i64 }, align 16 + %a67 = alloca { ptr, i64, i64 }, align 16 + %a68 = alloca i64, align 16 + %a76 = alloca %S.ast.Type, align 16 + %a80 = alloca %S.gen.Abi, align 16 + %a83 = alloca { ptr, i64, i64 }, align 16 + %a84 = alloca { ptr, i64, i64 }, align 16 + %a87 = alloca i64, align 16 + %a88 = alloca i64, align 16 + %a90 = alloca i64, align 16 + %a98 = 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 + %a138 = alloca { ptr, i64, i64 }, align 16 + %a141 = alloca { ptr, i64, i64 }, align 16 + %a142 = alloca { ptr, i64, i64 }, align 16 + %a154 = alloca %S.gen.Abi, align 16 + %a155 = alloca %S.gen.Abi, align 16 store ptr %p0, ptr %a1 store %S.ast.Type %p1, ptr %a2 store { ptr, i64, i64 } %p2, ptr %a3 @@ -61022,264 +72095,283 @@ entry: %t8 = load %S.ast.Type, ptr %a2 %t9 = call %S.gen.Abi @finch.gen.classify(ptr %t7, %S.ast.Type %t8) %t10 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 0 + %t11 = load %S.gen.Abi, ptr %t10 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.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.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 %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 %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.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 %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.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.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 %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.4452, i64 4, i64 0 }, ptr %t39 - %t40 = load i64, ptr %a5 - %t41 = sub i64 %t40, 1 - store i64 %t41, ptr %a5 - 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.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 %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 - %t52 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 2 - store { ptr, i64, i64 } %t51, ptr %a53 - 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 %endif6838 -endif6838: - br label %endif6835 -endif6835: - store i64 0, ptr %a56 - 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.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 - store %S.ast.Type %t63, ptr %a64 - %t65 = load ptr, ptr %a1 - %t66 = load %S.ast.Type, ptr %a64 - %t67 = call %S.gen.Abi @finch.gen.classify(ptr %t65, %S.ast.Type %t66) - store %S.gen.Abi %t67, ptr %a68 - %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.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 %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.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.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.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 %then6850, label %else6851 -then6850: - %t93 = load i64, ptr %a75 - %t94 = add i64 %t93, 1 - store i64 %t94, ptr %a75 - br label %endif6852 -else6851: - %t95 = load i64, ptr %a76 - %t96 = add i64 %t95, 1 - store i64 %t96, ptr %a76 - 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.cond6846 -each.end6849: - %t99 = load ptr, ptr %a1 - %t100 = icmp eq ptr %t99, null - br i1 %t100, label %panic6853, label %ok6854 -panic6853: - call void @finch_panic(ptr @.str.4457, i64 3911, ptr @.str.4458) + store %S.gen.Abi %t11, ptr %a12 + call void @finch.drop.S_gen_Abi(ptr %a12) + %t13 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 2 + %t14 = load { ptr, i64, i64 }, ptr %t13 + store { ptr, i64, i64 } { ptr @.str.4620, i64 4, i64 0 }, ptr %t13 + store { ptr, i64, i64 } %t14, ptr %a15 + call void @finch_str_drop(ptr %a15) + %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.4621, i64 4, i64 0 }, ptr %a19 + %t20 = call i32 @finch_str_eq(ptr %a18, ptr %a19) + %t21 = icmp eq i32 %t20, 0 + br i1 %t21, label %then7205, label %endif7207 +then7205: + %t22 = load ptr, ptr %a1 + %t23 = load %S.ast.Type, ptr %a2 + %t24 = call { ptr, i64, i64 } @finch.gen.cLL(ptr %t22, %S.ast.Type %t23) + %t25 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 2 + %t26 = load { ptr, i64, i64 }, ptr %t25 + store { ptr, i64, i64 } %t24, ptr %t25 + store { ptr, i64, i64 } %t26, ptr %a27 + call void @finch_str_drop(ptr %a27) + br label %endif7207 +endif7207: + %t28 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 0 + %t29 = getelementptr inbounds %S.gen.Abi, ptr %t28, i32 0, i32 0 + %t30 = load { ptr, i64, i64 }, ptr %t29 + store { ptr, i64, i64 } %t30, ptr %a31 + store { ptr, i64, i64 } { ptr @.str.4622, i64 8, i64 0 }, ptr %a32 + %t33 = call i32 @finch_str_eq(ptr %a31, ptr %a32) + %t34 = icmp ne i32 %t33, 0 + br i1 %t34, label %then7208, label %endif7210 +then7208: + %t35 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 0 + %t36 = getelementptr inbounds %S.gen.Abi, ptr %t35, i32 0, i32 0 + %t37 = load { ptr, i64, i64 }, ptr %t36 + store { ptr, i64, i64 } { ptr @.str.4623, i64 6, i64 0 }, ptr %t36 + store { ptr, i64, i64 } %t37, ptr %a38 + call void @finch_str_drop(ptr %a38) + br label %endif7210 +endif7210: + %t39 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 0 + %t40 = getelementptr inbounds %S.gen.Abi, 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.4624, i64 6, i64 0 }, ptr %a43 + %t44 = call i32 @finch_str_eq(ptr %a42, ptr %a43) + %t45 = icmp ne i32 %t44, 0 + br i1 %t45, label %then7211, label %else7212 +then7211: + %t46 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 3 + store i1 true, ptr %t46 + %t47 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 2 + %t48 = load { ptr, i64, i64 }, ptr %t47 + store { ptr, i64, i64 } { ptr @.str.4625, i64 4, i64 0 }, ptr %t47 + store { ptr, i64, i64 } %t48, ptr %a49 + call void @finch_str_drop(ptr %a49) + %t50 = load i64, ptr %a5 + %t51 = sub i64 %t50, 1 + store i64 %t51, ptr %a5 + br label %endif7213 +else7212: + %t52 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 0 + %t53 = getelementptr inbounds %S.gen.Abi, ptr %t52, i32 0, i32 0 + %t54 = load { ptr, i64, i64 }, ptr %t53 + store { ptr, i64, i64 } %t54, ptr %a55 + store { ptr, i64, i64 } { ptr @.str.4626, i64 6, i64 0 }, ptr %a56 + %t57 = call i32 @finch_str_eq(ptr %a55, ptr %a56) + %t58 = icmp ne i32 %t57, 0 + br i1 %t58, label %then7214, label %endif7216 +then7214: + %t59 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 0 + %t60 = getelementptr inbounds %S.gen.Abi, ptr %t59, i32 0, i32 2 + %t61 = load { ptr, i64, i64 }, ptr %t60 + %t62 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 2 + store { ptr, i64, i64 } %t61, ptr %a63 + call void @finch_str_copy(ptr %a64, ptr %a63) + %t65 = load { ptr, i64, i64 }, ptr %a64 + %t66 = load { ptr, i64, i64 }, ptr %t62 + store { ptr, i64, i64 } %t65, ptr %t62 + store { ptr, i64, i64 } %t66, ptr %a67 + call void @finch_str_drop(ptr %a67) + br label %endif7216 +endif7216: + br label %endif7213 +endif7213: + store i64 0, ptr %a68 + br label %each.cond7217 +each.cond7217: + %t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 + %t70 = load i64, ptr %t69 + %t71 = load i64, ptr %a68 + %t72 = icmp slt i64 %t71, %t70 + br i1 %t72, label %each.body7218, label %each.end7220 +each.body7218: + %t73 = load ptr, ptr %a3 + %t74 = getelementptr inbounds %S.ast.Type, ptr %t73, i64 %t71 + %t75 = load %S.ast.Type, ptr %t74 + store %S.ast.Type %t75, ptr %a76 + %t77 = load ptr, ptr %a1 + %t78 = load %S.ast.Type, ptr %a76 + %t79 = call %S.gen.Abi @finch.gen.classify(ptr %t77, %S.ast.Type %t78) + store %S.gen.Abi %t79, ptr %a80 + %t81 = getelementptr inbounds %S.gen.Abi, ptr %a80, i32 0, i32 0 + %t82 = load { ptr, i64, i64 }, ptr %t81 + store { ptr, i64, i64 } %t82, ptr %a83 + store { ptr, i64, i64 } { ptr @.str.4627, i64 6, i64 0 }, ptr %a84 + %t85 = call i32 @finch_str_eq(ptr %a83, ptr %a84) + %t86 = icmp ne i32 %t85, 0 + br i1 %t86, label %then7221, label %else7222 +then7221: + store i64 0, ptr %a87 + store i64 0, ptr %a88 + %t89 = getelementptr inbounds %S.gen.Abi, ptr %a80, i32 0, i32 1 + store i64 0, ptr %a90 + br label %each.cond7224 +each.cond7224: + %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.body7225, label %each.end7227 +each.body7225: + %t95 = load ptr, ptr %t89 + %t96 = getelementptr inbounds { ptr, i64, i64 }, ptr %t95, i64 %t93 + %t97 = load { ptr, i64, i64 }, ptr %t96 + store { ptr, i64, i64 } %t97, ptr %a98 + %t99 = load { ptr, i64, i64 }, ptr %a98 + store { ptr, i64, i64 } %t99, ptr %a100 + store { ptr, i64, i64 } { ptr @.str.4629, i64 1, i64 0 }, ptr %a102 + %t103 = call i32 @finch_str_starts(ptr %a100, ptr %a102) + %t104 = icmp ne i32 %t103, 0 + br i1 %t104, label %then7228, label %else7229 +then7228: + %t105 = load i64, ptr %a87 + %t106 = add i64 %t105, 1 + store i64 %t106, ptr %a87 + br label %endif7230 +else7229: + %t107 = load i64, ptr %a88 + %t108 = add i64 %t107, 1 + store i64 %t108, ptr %a88 + br label %endif7230 +endif7230: + br label %each.step7226 +each.step7226: + %t109 = load i64, ptr %a90 + %t110 = add i64 %t109, 1 + store i64 %t110, ptr %a90 + br label %each.cond7224 +each.end7227: + %t111 = load ptr, ptr %a1 + %t112 = icmp eq ptr %t111, null + br i1 %t112, label %panic7231, label %ok7232 +panic7231: + call void @finch_panic(ptr @.str.4630, i64 4198, ptr @.str.4631) unreachable -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.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 %panic6858, label %ok6859 -panic6858: - call void @finch_panic(ptr @.str.4459, i64 3911, ptr @.str.4460) +ok7232: + %t113 = getelementptr inbounds %S.gen.Gen, ptr %t111, i32 0, i32 30 + %t114 = getelementptr inbounds %S.platform.Target, ptr %t113, i32 0, i32 1 + %t115 = load i1, ptr %t114 + br label %logic.from7233 +logic.from7233: + br i1 %t115, label %logic.end7235, label %logic.rhs7234 +logic.rhs7234: + %t116 = load ptr, ptr %a1 + %t117 = icmp eq ptr %t116, null + br i1 %t117, label %panic7236, label %ok7237 +panic7236: + call void @finch_panic(ptr @.str.4632, i64 4198, ptr @.str.4633) unreachable -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.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.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.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 - store i64 %t120, ptr %a5 - %t121 = load i64, ptr %a76 - %t122 = load i64, ptr %a6 - %t123 = sub i64 %t122, %t121 - store i64 %t123, ptr %a6 - br label %endif6871 -else6870: - %t124 = getelementptr inbounds %S.gen.Abi, ptr %a68, i32 0, i32 0 - 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.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 %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 %then6875, label %else6876 -then6875: - %t133 = load i64, ptr %a6 - %t134 = sub i64 %t133, 1 - store i64 %t134, ptr %a6 - br label %endif6877 -else6876: - %t135 = load i64, ptr %a5 - %t136 = sub i64 %t135, 1 - store i64 %t136, ptr %a5 - 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 - store %S.gen.Abi %t139, ptr %a140 - call void @finch.copy.S_gen_Abi(ptr %a141, ptr %a140) - %t142 = load %S.gen.Abi, ptr %a141 - %t143 = load i64, ptr %t138 - %t144 = add i64 %t143, 1 - call void @finch_arr_reserve(ptr %t137, i64 %t144, i64 ptrtoint (ptr getelementptr (%S.gen.Abi, ptr null, i32 1) to i64)) - %t145 = load ptr, ptr %t137 - %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.step6841 -each.step6841: - %t147 = load i64, ptr %a56 - %t148 = add i64 %t147, 1 - store i64 %t148, ptr %a56 - 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) - %t152 = load %S.gen.Plan, ptr %a151 - ret %S.gen.Plan %t152 +ok7237: + %t118 = getelementptr inbounds %S.gen.Gen, ptr %t116, i32 0, i32 30 + %t119 = getelementptr inbounds %S.platform.Target, ptr %t118, i32 0, i32 4 + %t120 = load i1, ptr %t119 + br label %logic.rend7238 +logic.rend7238: + br label %logic.end7235 +logic.end7235: + %t121 = phi i1 [ true, %logic.from7233 ], [ %t120, %logic.rend7238 ] + br label %logic.from7239 +logic.from7239: + br i1 %t121, label %logic.end7241, label %logic.rhs7240 +logic.rhs7240: + %t122 = load i64, ptr %a87 + %t123 = load i64, ptr %a5 + %t124 = icmp sle i64 %t122, %t123 + br label %logic.from7242 +logic.from7242: + br i1 %t124, label %logic.rhs7243, label %logic.end7244 +logic.rhs7243: + %t125 = load i64, ptr %a88 + %t126 = load i64, ptr %a6 + %t127 = icmp sle i64 %t125, %t126 + br label %logic.rend7245 +logic.rend7245: + br label %logic.end7244 +logic.end7244: + %t128 = phi i1 [ false, %logic.from7242 ], [ %t127, %logic.rend7245 ] + br label %logic.rend7246 +logic.rend7246: + br label %logic.end7241 +logic.end7241: + %t129 = phi i1 [ true, %logic.from7239 ], [ %t128, %logic.rend7246 ] + br i1 %t129, label %then7247, label %else7248 +then7247: + %t130 = load i64, ptr %a87 + %t131 = load i64, ptr %a5 + %t132 = sub i64 %t131, %t130 + store i64 %t132, ptr %a5 + %t133 = load i64, ptr %a88 + %t134 = load i64, ptr %a6 + %t135 = sub i64 %t134, %t133 + store i64 %t135, ptr %a6 + br label %endif7249 +else7248: + %t136 = getelementptr inbounds %S.gen.Abi, ptr %a80, i32 0, i32 0 + %t137 = load { ptr, i64, i64 }, ptr %t136 + store { ptr, i64, i64 } { ptr @.str.4634, i64 6, i64 0 }, ptr %t136 + store { ptr, i64, i64 } %t137, ptr %a138 + call void @finch_str_drop(ptr %a138) + br label %endif7249 +endif7249: + br label %endif7223 +else7222: + %t139 = getelementptr inbounds %S.gen.Abi, ptr %a80, i32 0, i32 0 + %t140 = load { ptr, i64, i64 }, ptr %t139 + store { ptr, i64, i64 } %t140, ptr %a141 + store { ptr, i64, i64 } { ptr @.str.4635, i64 6, i64 0 }, ptr %a142 + %t143 = call i32 @finch_str_eq(ptr %a141, ptr %a142) + %t144 = icmp ne i32 %t143, 0 + br i1 %t144, label %then7250, label %endif7252 +then7250: + %t145 = load %S.ast.Type, ptr %a76 + %t146 = call i1 @finch.gen.isFloat(%S.ast.Type %t145) + br i1 %t146, label %then7253, label %else7254 +then7253: + %t147 = load i64, ptr %a6 + %t148 = sub i64 %t147, 1 + store i64 %t148, ptr %a6 + br label %endif7255 +else7254: + %t149 = load i64, ptr %a5 + %t150 = sub i64 %t149, 1 + store i64 %t150, ptr %a5 + br label %endif7255 +endif7255: + br label %endif7252 +endif7252: + br label %endif7223 +endif7223: + %t151 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 1 + %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %t151, i32 0, i32 1 + %t153 = load %S.gen.Abi, ptr %a80 + store %S.gen.Abi %t153, ptr %a154 + call void @finch.copy.S_gen_Abi(ptr %a155, ptr %a154) + %t156 = load %S.gen.Abi, ptr %a155 + %t157 = load i64, ptr %t152 + %t158 = add i64 %t157, 1 + call void @finch_arr_reserve(ptr %t151, i64 %t158, i64 ptrtoint (ptr getelementptr (%S.gen.Abi, ptr null, i32 1) to i64)) + %t159 = load ptr, ptr %t151 + %t160 = getelementptr inbounds %S.gen.Abi, ptr %t159, i64 %t157 + store %S.gen.Abi %t156, ptr %t160 + store i64 %t158, ptr %t152 + call void @finch.drop.S_gen_Abi(ptr %a80) + br label %each.step7219 +each.step7219: + %t161 = load i64, ptr %a68 + %t162 = add i64 %t161, 1 + store i64 %t162, ptr %a68 + br label %each.cond7217 +each.end7220: + %t163 = load %S.gen.Plan, ptr %a4 + ret %S.gen.Plan %t163 } define internal void @finch.gen.checkByValue(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3, { ptr, i64, i64 } %p4) { @@ -61300,39 +72392,54 @@ entry: %a41 = alloca { ptr, i64, i64 }, align 16 %a42 = alloca { ptr, i64, i64 }, align 16 %a43 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 + %a44 = 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 %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 %a52 = 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 + %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 %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 + %a63 = 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 + %a68 = alloca { ptr, i64, i64 }, align 16 + %a70 = 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 %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 %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 %a100 = 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 + %a104 = 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 + %a109 = 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 + %a116 = alloca { ptr, i64, i64 }, align 16 + %a118 = 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 @@ -61341,21 +72448,21 @@ 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.4463, i64 6, i64 0 }, ptr %a9 + store { ptr, i64, i64 } { ptr @.str.4636, 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 %then6881, label %endif6883 -then6881: + br i1 %t11, label %then7256, label %endif7258 +then7256: ret void -endif6883: +endif7258: %t12 = load ptr, ptr %a1 %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic6884, label %ok6885 -panic6884: - call void @finch_panic(ptr @.str.4464, i64 3933, ptr @.str.4465) + br i1 %t13, label %panic7259, label %ok7260 +panic7259: + call void @finch_panic(ptr @.str.4637, i64 4220, ptr @.str.4638) unreachable -ok6885: - %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 15 +ok7260: + %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 16 %t15 = load ptr, ptr %a1 %t16 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 3 %t17 = load { ptr, i64, i64 }, ptr %t16 @@ -61365,11 +72472,11 @@ ok6885: %t21 = load { ptr, i64, i64 }, ptr %t14 %t22 = extractvalue { ptr, i64, i64 } %t21, 1 %t23 = icmp uge i64 %t20, %t22 - br i1 %t23, label %range6886, label %inrange6887 -range6886: - call void @finch_panic_index(ptr @.str.4466, i64 3933, i64 %t20, i64 %t22) + br i1 %t23, label %range7261, label %inrange7262 +range7261: + call void @finch_panic_index(ptr @.str.4639, i64 4220, i64 %t20, i64 %t22) unreachable -inrange6887: +inrange7262: %t24 = extractvalue { ptr, i64, i64 } %t21, 0 %t25 = getelementptr inbounds %S.gen.StructDef, ptr %t24, i64 %t20 %t26 = load %S.gen.StructDef, ptr %t25 @@ -61380,86 +72487,117 @@ inrange6887: %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 %then6888, label %endif6890 -then6888: + br i1 %t33, label %then7263, label %endif7265 +then7263: %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.4467, i64 16, i64 0 }, ptr %a38 + store { ptr, i64, i64 } { ptr @.str.4640, 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.4468, i64 2, i64 0 }, ptr %a43 + store { ptr, i64, i64 } { ptr @.str.4641, 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 - store { ptr, i64, i64 } %t44, ptr %a47 + store { ptr, i64, i64 } %t40, ptr %a44 + call void @finch_str_drop(ptr %a44) + %t45 = load { ptr, i64, i64 }, ptr %a41 + %t46 = load { ptr, i64, i64 }, ptr %a5 store { ptr, i64, i64 } %t45, ptr %a48 - 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.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 - %t55 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t54) - store { ptr, i64, i64 } %t53, 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.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 %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 %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.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.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 - store { ptr, i64, i64 } %t78, 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.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 - %t89 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t88) - store { ptr, i64, i64 } %t87, 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.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 - %t99 = load { ptr, i64, i64 }, ptr %t98 + store { ptr, i64, i64 } %t46, ptr %a49 + call void @finch_str_concat(ptr %a47, ptr %a48, ptr %a49) + store { ptr, i64, i64 } %t45, ptr %a50 + call void @finch_str_drop(ptr %a50) + %t51 = load { ptr, i64, i64 }, ptr %a47 + store { ptr, i64, i64 } %t51, ptr %a53 + store { ptr, i64, i64 } { ptr @.str.4642, i64 18, i64 0 }, ptr %a54 + call void @finch_str_concat(ptr %a52, ptr %a53, ptr %a54) + store { ptr, i64, i64 } %t51, ptr %a55 + call void @finch_str_drop(ptr %a55) + %t56 = load { ptr, i64, i64 }, ptr %a52 + %t57 = load %S.ast.Type, ptr %a4 + %t58 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %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) + store { ptr, i64, i64 } %t56, ptr %a62 + call void @finch_str_drop(ptr %a62) + store { ptr, i64, i64 } %t58, ptr %a63 + call void @finch_str_drop(ptr %a63) + %t64 = load { ptr, i64, i64 }, ptr %a59 + store { ptr, i64, i64 } %t64, ptr %a66 + store { ptr, i64, i64 } { ptr @.str.4643, i64 20, i64 0 }, ptr %a67 + call void @finch_str_concat(ptr %a65, ptr %a66, ptr %a67) + store { ptr, i64, i64 } %t64, ptr %a68 + call void @finch_str_drop(ptr %a68) + %t69 = load { ptr, i64, i64 }, ptr %a65 + call void @finch.gen.fail(ptr %t34, %S.ast.Node %t35, { ptr, i64, i64 } %t69) + store { ptr, i64, i64 } %t69, ptr %a70 + call void @finch_str_drop(ptr %a70) + br label %endif7265 +endif7265: + %t71 = getelementptr inbounds %S.gen.StructDef, ptr %a30, i32 0, i32 8 + %t72 = getelementptr inbounds { ptr, i64, i64 }, ptr %t71, i32 0, i32 1 + %t73 = load i64, ptr %t72 + %t74 = icmp sgt i64 %t73, 0 + br i1 %t74, label %then7266, label %endif7268 +then7266: + %t75 = load ptr, ptr %a1 + %t76 = load %S.ast.Node, ptr %a2 + %t77 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } { ptr @.str.4644, i64 16, 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.4645, i64 2, i64 0 }, ptr %a84 + call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84) + store { ptr, i64, i64 } %t81, ptr %a85 + call void @finch_str_drop(ptr %a85) + %t86 = load { ptr, i64, i64 }, ptr %a82 + %t87 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } %t86, ptr %a89 + store { ptr, i64, i64 } %t87, ptr %a90 + call void @finch_str_concat(ptr %a88, ptr %a89, ptr %a90) + store { ptr, i64, i64 } %t86, ptr %a91 + call void @finch_str_drop(ptr %a91) + %t92 = load { ptr, i64, i64 }, ptr %a88 + store { ptr, i64, i64 } %t92, ptr %a94 + store { ptr, i64, i64 } { ptr @.str.4646, i64 12, i64 0 }, ptr %a95 + call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) + store { ptr, i64, i64 } %t92, ptr %a96 + call void @finch_str_drop(ptr %a96) + %t97 = load { ptr, i64, i64 }, ptr %a93 + %t98 = load %S.ast.Type, ptr %a4 + %t99 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t98) store { ptr, i64, i64 } %t97, ptr %a101 store { ptr, i64, i64 } %t99, ptr %a102 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 %endif6893 -endif6893: + store { ptr, i64, i64 } %t97, ptr %a103 + call void @finch_str_drop(ptr %a103) + store { ptr, i64, i64 } %t99, ptr %a104 + call void @finch_str_drop(ptr %a104) + %t105 = load { ptr, i64, i64 }, ptr %a100 + store { ptr, i64, i64 } %t105, ptr %a107 + store { ptr, i64, i64 } { ptr @.str.4647, i64 40, i64 0 }, ptr %a108 + call void @finch_str_concat(ptr %a106, ptr %a107, ptr %a108) + store { ptr, i64, i64 } %t105, ptr %a109 + call void @finch_str_drop(ptr %a109) + %t110 = load { ptr, i64, i64 }, ptr %a106 + %t111 = getelementptr inbounds %S.gen.StructDef, ptr %a30, i32 0, i32 8 + %t112 = load { ptr, i64, i64 }, ptr %t111 + store { ptr, i64, i64 } %t110, ptr %a114 + store { ptr, i64, i64 } %t112, ptr %a115 + call void @finch_str_concat(ptr %a113, ptr %a114, ptr %a115) + store { ptr, i64, i64 } %t110, ptr %a116 + call void @finch_str_drop(ptr %a116) + %t117 = load { ptr, i64, i64 }, ptr %a113 + call void @finch.gen.fail(ptr %t75, %S.ast.Node %t76, { ptr, i64, i64 } %t117) + store { ptr, i64, i64 } %t117, ptr %a118 + call void @finch_str_drop(ptr %a118) + br label %endif7268 +endif7268: + call void @finch.drop.S_gen_StructDef(ptr %a30) ret void } @@ -61475,51 +72613,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.from6894 -logic.from6894: - br i1 %t3, label %logic.end6896, label %logic.rhs6895 -logic.rhs6895: + br label %logic.from7269 +logic.from7269: + br i1 %t3, label %logic.end7271, label %logic.rhs7270 +logic.rhs7270: %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.4475, i64 4, i64 0 }, ptr %a7 + store { ptr, i64, i64 } { ptr @.str.4648, 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.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: + br label %logic.rend7272 +logic.rend7272: + br label %logic.end7271 +logic.end7271: + %t10 = phi i1 [ true, %logic.from7269 ], [ %t9, %logic.rend7272 ] + br label %logic.from7273 +logic.from7273: + br i1 %t10, label %logic.end7275, label %logic.rhs7274 +logic.rhs7274: %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.4476, i64 4, i64 0 }, ptr %a14 + store { ptr, i64, i64 } { ptr @.str.4649, 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.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: + br label %logic.rend7276 +logic.rend7276: + br label %logic.end7275 +logic.end7275: + %t17 = phi i1 [ true, %logic.from7273 ], [ %t16, %logic.rend7276 ] + br label %logic.from7277 +logic.from7277: + br i1 %t17, label %logic.end7279, label %logic.rhs7278 +logic.rhs7278: %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.4477, i64 3, i64 0 }, ptr %a21 + store { ptr, i64, i64 } { ptr @.str.4650, 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.rend6905 -logic.rend6905: - br label %logic.end6904 -logic.end6904: - %t24 = phi i1 [ true, %logic.from6902 ], [ %t23, %logic.rend6905 ] + br label %logic.rend7280 +logic.rend7280: + br label %logic.end7279 +logic.end7279: + %t24 = phi i1 [ true, %logic.from7277 ], [ %t23, %logic.rend7280 ] ret i1 %t24 } @@ -61532,27 +72670,35 @@ entry: %a54 = 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 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = 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 + %a61 = alloca { ptr, i64, i64 }, align 16 + %a62 = alloca { ptr, i64, i64 }, align 16 + %a64 = alloca { ptr, i64, i64 }, align 16 + %a70 = alloca { ptr, i64, i64 }, align 16 + %a71 = 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 %a87 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca i64, align 16 - %a100 = alloca %S.gen.FnSig, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = 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 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 + %a89 = 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 + %a94 = alloca { ptr, i64, i64 }, align 16 + %a98 = alloca i64, align 16 + %a106 = alloca %S.gen.FnSig, align 16 + %a113 = alloca { ptr, i64, i64 }, align 16 + %a114 = 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 + %a129 = alloca { ptr, i64, i64 }, align 16 + %a131 = 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 @@ -61560,71 +72706,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 %then6906, label %endif6908 -then6906: + br i1 %t7, label %then7281, label %endif7283 +then7281: %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.4478, i64 59, i64 0 }) - br label %endif6908 -endif6908: + call void @finch.gen.fail(ptr %t8, %S.ast.Node %t9, { ptr, i64, i64 } { ptr @.str.4651, i64 59, i64 0 }) + br label %endif7283 +endif7283: %t10 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 7 %t11 = load i1, ptr %t10 - br i1 %t11, label %then6909, label %endif6911 -then6909: + br i1 %t11, label %then7284, label %endif7286 +then7284: %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.4479, i64 74, i64 0 }) - br label %endif6911 -endif6911: + call void @finch.gen.fail(ptr %t12, %S.ast.Node %t13, { ptr, i64, i64 } { ptr @.str.4652, i64 74, i64 0 }) + br label %endif7286 +endif7286: %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 %then6912, label %endif6914 -then6912: + br i1 %t17, label %then7287, label %endif7289 +then7287: %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.4480, i64 29, i64 0 }) - br label %endif6914 -endif6914: + call void @finch.gen.fail(ptr %t18, %S.ast.Node %t19, { ptr, i64, i64 } { ptr @.str.4653, i64 29, i64 0 }) + br label %endif7289 +endif7289: %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.cond6915 -for.cond6915: + br label %for.cond7290 +for.cond7290: %t24 = load i64, ptr %a23 %t25 = icmp slt i64 %t24, %t22 - br i1 %t25, label %for.body6916, label %for.end6918 -for.body6916: + br i1 %t25, label %for.body7291, label %for.end7293 +for.body7291: %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 %range6919, label %inrange6920 -range6919: - call void @finch_panic_index(ptr @.str.4481, i64 3958, i64 %t27, i64 %t29) + br i1 %t30, label %range7294, label %inrange7295 +range7294: + call void @finch_panic_index(ptr @.str.4654, i64 4245, i64 %t27, i64 %t29) unreachable -inrange6920: +inrange7295: %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 %then6921, label %endif6923 -then6921: + br i1 %t35, label %then7296, label %endif7298 +then7296: %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 %range6924, label %inrange6925 -range6924: - call void @finch_panic_index(ptr @.str.4482, i64 3959, i64 %t38, i64 %t40) + br i1 %t41, label %range7299, label %inrange7300 +range7299: + call void @finch_panic_index(ptr @.str.4655, i64 4246, i64 %t38, i64 %t40) unreachable -inrange6925: +inrange7300: %t42 = extractvalue { ptr, i64, i64 } %t39, 0 %t43 = getelementptr inbounds %S.ast.Node, ptr %t42, i64 %t38 %t44 = load %S.ast.Node, ptr %t43 @@ -61633,135 +72779,151 @@ inrange6925: %t47 = load { ptr, i64, i64 }, ptr %t45 %t48 = extractvalue { ptr, i64, i64 } %t47, 1 %t49 = icmp uge i64 %t46, %t48 - br i1 %t49, label %range6926, label %inrange6927 -range6926: - call void @finch_panic_index(ptr @.str.4484, i64 3959, i64 %t46, i64 %t48) + br i1 %t49, label %range7301, label %inrange7302 +range7301: + call void @finch_panic_index(ptr @.str.4657, i64 4246, i64 %t46, i64 %t48) unreachable -inrange6927: +inrange7302: %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.4483, i64 66, i64 0 }, ptr %a55 + store { ptr, i64, i64 } { ptr @.str.4656, 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.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 %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.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.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.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.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.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.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 %endif6934 -endif6934: - %t89 = load ptr, ptr %a1 - %t90 = icmp eq ptr %t89, null - br i1 %t90, label %panic6935, label %ok6936 -panic6935: - call void @finch_panic(ptr @.str.4489, i64 3965, ptr @.str.4490) + store { ptr, i64, i64 } %t53, ptr %a57 + call void @finch_str_drop(ptr %a57) + %t58 = load { ptr, i64, i64 }, ptr %a54 + store { ptr, i64, i64 } %t58, ptr %a60 + store { ptr, i64, i64 } { ptr @.str.4658, i64 50, i64 0 }, ptr %a61 + call void @finch_str_concat(ptr %a59, ptr %a60, ptr %a61) + store { ptr, i64, i64 } %t58, ptr %a62 + call void @finch_str_drop(ptr %a62) + %t63 = load { ptr, i64, i64 }, ptr %a59 + call void @finch.gen.fail(ptr %t36, %S.ast.Node %t44, { ptr, i64, i64 } %t63) + store { ptr, i64, i64 } %t63, ptr %a64 + call void @finch_str_drop(ptr %a64) + br label %endif7298 +endif7298: + br label %for.step7292 +for.step7292: + %t65 = load i64, ptr %a23 + %t66 = add i64 %t65, 1 + store i64 %t66, ptr %a23 + br label %for.cond7290 +for.end7293: + %t67 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 12 + %t68 = getelementptr inbounds %S.ast.Type, ptr %t67, i32 0, i32 0 + %t69 = load { ptr, i64, i64 }, ptr %t68 + store { ptr, i64, i64 } %t69, ptr %a70 + store { ptr, i64, i64 } { ptr @.str.4659, i64 4, i64 0 }, ptr %a71 + %t72 = call i32 @finch_str_eq(ptr %a70, ptr %a71) + %t73 = icmp eq i32 %t72, 0 + br label %logic.from7303 +logic.from7303: + br i1 %t73, label %logic.rhs7304, label %logic.end7305 +logic.rhs7304: + %t74 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 12 + %t75 = load %S.ast.Type, ptr %t74 + %t76 = call i1 @finch.gen.cPlain(%S.ast.Type %t75) + %t77 = xor i1 %t76, true + br label %logic.rend7306 +logic.rend7306: + br label %logic.end7305 +logic.end7305: + %t78 = phi i1 [ false, %logic.from7303 ], [ %t77, %logic.rend7306 ] + br i1 %t78, label %then7307, label %endif7309 +then7307: + %t79 = load ptr, ptr %a1 + %t80 = load %S.ast.Node, ptr %a2 + %t81 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 12 + %t82 = load %S.ast.Type, ptr %t81 + %t83 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t82) + store { ptr, i64, i64 } { ptr @.str.4660, i64 69, i64 0 }, ptr %a85 + store { ptr, i64, i64 } %t83, ptr %a86 + call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) + store { ptr, i64, i64 } %t83, ptr %a87 + call void @finch_str_drop(ptr %a87) + %t88 = load { ptr, i64, i64 }, ptr %a84 + store { ptr, i64, i64 } %t88, ptr %a90 + store { ptr, i64, i64 } { ptr @.str.4661, i64 1, i64 0 }, ptr %a91 + call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) + store { ptr, i64, i64 } %t88, ptr %a92 + call void @finch_str_drop(ptr %a92) + %t93 = load { ptr, i64, i64 }, ptr %a89 + call void @finch.gen.fail(ptr %t79, %S.ast.Node %t80, { ptr, i64, i64 } %t93) + store { ptr, i64, i64 } %t93, ptr %a94 + call void @finch_str_drop(ptr %a94) + br label %endif7309 +endif7309: + %t95 = load ptr, ptr %a1 + %t96 = icmp eq ptr %t95, null + br i1 %t96, label %panic7310, label %ok7311 +panic7310: + call void @finch_panic(ptr @.str.4662, i64 4252, ptr @.str.4663) unreachable -ok6936: - %t91 = getelementptr inbounds %S.gen.Gen, ptr %t89, i32 0, i32 14 - store i64 0, ptr %a92 - 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.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.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 - %t106 = load { ptr, i64, i64 }, ptr %t105 - store { ptr, i64, i64 } %t104, ptr %a107 - 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.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.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.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 %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.cond6937 -each.end6940: +ok7311: + %t97 = getelementptr inbounds %S.gen.Gen, ptr %t95, i32 0, i32 15 + store i64 0, ptr %a98 + br label %each.cond7312 +each.cond7312: + %t99 = getelementptr inbounds { ptr, i64, i64 }, ptr %t97, i32 0, i32 1 + %t100 = load i64, ptr %t99 + %t101 = load i64, ptr %a98 + %t102 = icmp slt i64 %t101, %t100 + br i1 %t102, label %each.body7313, label %each.end7315 +each.body7313: + %t103 = load ptr, ptr %t97 + %t104 = getelementptr inbounds %S.gen.FnSig, ptr %t103, i64 %t101 + %t105 = load %S.gen.FnSig, ptr %t104 + store %S.gen.FnSig %t105, ptr %a106 + %t107 = getelementptr inbounds %S.gen.FnSig, ptr %a106, i32 0, i32 5 + %t108 = load i1, ptr %t107 + br label %logic.from7316 +logic.from7316: + br i1 %t108, label %logic.rhs7317, label %logic.end7318 +logic.rhs7317: + %t109 = getelementptr inbounds %S.gen.FnSig, ptr %a106, i32 0, i32 1 + %t110 = load { ptr, i64, i64 }, ptr %t109 + %t111 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 1 + %t112 = load { ptr, i64, i64 }, ptr %t111 + store { ptr, i64, i64 } %t110, ptr %a113 + store { ptr, i64, i64 } %t112, ptr %a114 + %t115 = call i32 @finch_str_eq(ptr %a113, ptr %a114) + %t116 = icmp ne i32 %t115, 0 + br label %logic.rend7319 +logic.rend7319: + br label %logic.end7318 +logic.end7318: + %t117 = phi i1 [ false, %logic.from7316 ], [ %t116, %logic.rend7319 ] + br i1 %t117, label %then7320, label %endif7322 +then7320: + %t118 = load ptr, ptr %a1 + %t119 = load %S.ast.Node, ptr %a2 + %t120 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 1 + %t121 = load { ptr, i64, i64 }, ptr %t120 + store { ptr, i64, i64 } { ptr @.str.4664, 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.4665, i64 38, i64 0 }, ptr %a128 + call void @finch_str_concat(ptr %a126, ptr %a127, ptr %a128) + store { ptr, i64, i64 } %t125, ptr %a129 + call void @finch_str_drop(ptr %a129) + %t130 = load { ptr, i64, i64 }, ptr %a126 + call void @finch.gen.fail(ptr %t118, %S.ast.Node %t119, { ptr, i64, i64 } %t130) + store { ptr, i64, i64 } %t130, ptr %a131 + call void @finch_str_drop(ptr %a131) + br label %endif7322 +endif7322: + br label %each.step7314 +each.step7314: + %t132 = load i64, ptr %a98 + %t133 = add i64 %t132, 1 + store i64 %t133, ptr %a98 + br label %each.cond7312 +each.end7315: ret void } @@ -61782,110 +72944,154 @@ entry: %a36 = alloca { ptr, i64, i64 }, align 16 %a37 = alloca { ptr, i64, i64 }, align 16 %a38 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 + %a39 = 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 %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 %a55 = 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 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a73 = 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 + %a61 = alloca { ptr, i64, i64 }, align 16 + %a62 = 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 %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 %a84 = alloca { ptr, i64, i64 }, align 16 %a85 = alloca { ptr, i64, i64 }, align 16 %a86 = alloca { ptr, i64, i64 }, align 16 + %a87 = alloca { ptr, i64, i64 }, align 16 + %a90 = 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 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a101 = 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 + %a106 = 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 + %a112 = 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 %a117 = 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 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = 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 %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 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 + %a138 = alloca { ptr, i64, i64 }, align 16 + %a142 = alloca { ptr, i64, i64 }, align 16 %a143 = alloca { ptr, i64, i64 }, align 16 %a144 = alloca { ptr, i64, i64 }, align 16 %a145 = alloca { ptr, i64, i64 }, align 16 %a147 = alloca { ptr, i64, i64 }, align 16 %a148 = alloca { ptr, i64, i64 }, align 16 %a149 = alloca { ptr, i64, i64 }, align 16 + %a150 = alloca { ptr, i64, i64 }, align 16 %a153 = alloca { ptr, i64, i64 }, align 16 %a154 = 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 + %a159 = alloca { ptr, i64, i64 }, align 16 + %a160 = alloca { ptr, i64, i64 }, align 16 + %a162 = alloca { ptr, i64, i64 }, align 16 %a163 = alloca { ptr, i64, i64 }, align 16 %a164 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 + %a165 = alloca { ptr, i64, i64 }, 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 - %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 - %a182 = alloca { ptr, i64, i64 }, align 16 %a183 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 + %a184 = alloca { ptr, i64, i64 }, align 16 + %a188 = alloca { ptr, i64, i64 }, align 16 + %a190 = alloca { ptr, i64, i64 }, align 16 %a196 = alloca { ptr, i64, i64 }, align 16 %a197 = alloca { ptr, i64, i64 }, align 16 + %a198 = alloca { ptr, i64, i64 }, align 16 %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 %a201 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 + %a202 = alloca { ptr, i64, i64 }, align 16 + %a203 = alloca { ptr, i64, i64 }, align 16 + %a204 = 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 %a210 = alloca { ptr, i64, i64 }, align 16 + %a211 = alloca { ptr, i64, i64 }, align 16 + %a213 = 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 - %a224 = alloca { ptr, i64, i64 }, align 16 %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = 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 + %a232 = 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 - %a237 = 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 + %a241 = 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 - %a245 = 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 - %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 + %a254 = alloca { ptr, i64, i64 }, align 16 + %a258 = 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 + %a263 = 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 + %a268 = 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 + %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 + %a282 = alloca { ptr, i64, i64 }, align 16 + %a286 = 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 + %a291 = 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 + %a297 = alloca { ptr, i64, i64 }, align 16 + %a298 = 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 + %a306 = 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 + %a314 = alloca { ptr, i64, i64 }, align 16 + %a315 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store %S.gen.FnSig %p1, ptr %a2 store { ptr, i64, i64 } zeroinitializer, ptr %a3 @@ -61897,22 +73103,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.cond6948 -for.cond6948: + br label %for.cond7323 +for.cond7323: %t12 = load i64, ptr %a11 %t13 = icmp slt i64 %t12, %t10 - br i1 %t13, label %for.body6949, label %for.end6951 -for.body6949: + br i1 %t13, label %for.body7324, label %for.end7326 +for.body7324: %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 %range6952, label %inrange6953 -range6952: - call void @finch_panic_index(ptr @.str.4493, i64 3978, i64 %t15, i64 %t17) + br i1 %t18, label %range7327, label %inrange7328 +range7327: + call void @finch_panic_index(ptr @.str.4666, i64 4265, i64 %t15, i64 %t17) unreachable -inrange6953: +inrange7328: %t19 = extractvalue { ptr, i64, i64 } %t16, 0 %t20 = getelementptr inbounds %S.ast.Type, ptr %t19, i64 %t15 %t21 = load %S.ast.Type, ptr %t20 @@ -61923,300 +73129,437 @@ inrange6953: %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.4494, i64 4, i64 0 }, ptr %a29 + store { ptr, i64, i64 } { ptr @.str.4667, 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 %then6954, label %else6955 -then6954: + br i1 %t31, label %then7329, label %else7330 +then7329: %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.4495, i64 13, i64 0 }, ptr %a37 + store { ptr, i64, i64 } { ptr @.str.4668, 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 - %t40 = load i64, ptr %t32 - %t41 = add i64 %t40, 1 - call void @finch_arr_reserve(ptr %a3, i64 %t41, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t42 = load ptr, ptr %a3 - %t43 = getelementptr inbounds { ptr, i64, i64 }, ptr %t42, i64 %t40 - store { ptr, i64, i64 } %t39, ptr %t43 - store i64 %t41, ptr %t32 - %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - %t45 = load ptr, ptr %a1 - %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.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.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.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 - %t62 = load i64, ptr %t44 - %t63 = add i64 %t62, 1 - call void @finch_arr_reserve(ptr %a4, i64 %t63, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t64 = load ptr, ptr %a4 - %t65 = getelementptr inbounds { ptr, i64, i64 }, ptr %t64, i64 %t62 - store { ptr, i64, i64 } %t61, ptr %t65 - store i64 %t63, ptr %t44 - 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 - %t69 = call { ptr, i64, i64 } @finch.gen.cLL(ptr %t67, %S.ast.Type %t68) - %t70 = load ptr, ptr %a1 - %t71 = load %S.ast.Type, ptr %a25 - %t72 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t70, %S.ast.Type %t71) - store { ptr, i64, i64 } %t69, 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 - store { ptr, i64, i64 } %t76, ptr %a78 - 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 - call void @finch_str_from_int(ptr %a82, i64 %t81) - %t83 = load { ptr, i64, i64 }, ptr %a82 - store { ptr, i64, i64 } %t80, ptr %a85 - store { ptr, i64, i64 } %t83, ptr %a86 + store { ptr, i64, i64 } %t35, ptr %a39 + call void @finch_str_drop(ptr %a39) + %t40 = load { ptr, i64, i64 }, ptr %a36 + %t41 = load i64, ptr %t32 + %t42 = add i64 %t41, 1 + call void @finch_arr_reserve(ptr %a3, i64 %t42, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t43 = load ptr, ptr %a3 + %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t43, i64 %t41 + store { ptr, i64, i64 } %t40, ptr %t44 + store i64 %t42, ptr %t32 + %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 + %t46 = load ptr, ptr %a1 + %t47 = load i64, ptr %a11 + call void @finch_str_from_int(ptr %a48, i64 %t47) + %t49 = load { ptr, i64, i64 }, ptr %a48 + store { ptr, i64, i64 } { ptr @.str.4670, i64 13, i64 0 }, ptr %a51 + store { ptr, i64, i64 } %t49, ptr %a52 + call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) + store { ptr, i64, i64 } %t49, ptr %a53 + call void @finch_str_drop(ptr %a53) + %t54 = load { ptr, i64, i64 }, ptr %a50 + store { ptr, i64, i64 } %t54, ptr %a56 + store { ptr, i64, i64 } { ptr @.str.4671, i64 3, i64 0 }, ptr %a57 + call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) + store { ptr, i64, i64 } %t54, ptr %a58 + call void @finch_str_drop(ptr %a58) + %t59 = load { ptr, i64, i64 }, ptr %a55 + %t60 = call { ptr, i64, i64 } @finch.gen.op(ptr %t46, { ptr, i64, i64 } %t59) + store { ptr, i64, i64 } %t59, ptr %a61 + call void @finch_str_drop(ptr %a61) + store { ptr, i64, i64 } { ptr @.str.4669, i64 3, i64 0 }, ptr %a63 + store { ptr, i64, i64 } %t60, ptr %a64 + call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) + store { ptr, i64, i64 } %t60, ptr %a65 + call void @finch_str_drop(ptr %a65) + %t66 = load { ptr, i64, i64 }, ptr %a62 + %t67 = load i64, ptr %t45 + %t68 = add i64 %t67, 1 + call void @finch_arr_reserve(ptr %a4, i64 %t68, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t69 = load ptr, ptr %a4 + %t70 = getelementptr inbounds { ptr, i64, i64 }, ptr %t69, i64 %t67 + store { ptr, i64, i64 } %t66, ptr %t70 + store i64 %t68, ptr %t45 + br label %endif7331 +else7330: + %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 + %t72 = load ptr, ptr %a1 + %t73 = load %S.ast.Type, ptr %a25 + %t74 = call { ptr, i64, i64 } @finch.gen.cLL(ptr %t72, %S.ast.Type %t73) + %t75 = load ptr, ptr %a1 + %t76 = load %S.ast.Type, ptr %a25 + %t77 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t75, %S.ast.Type %t76) + store { ptr, i64, i64 } %t74, ptr %a79 + store { ptr, i64, i64 } %t77, ptr %a80 + call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) + store { ptr, i64, i64 } %t74, ptr %a81 + call void @finch_str_drop(ptr %a81) + store { ptr, i64, i64 } %t77, ptr %a82 + call void @finch_str_drop(ptr %a82) + %t83 = load { ptr, i64, i64 }, ptr %a78 + store { ptr, i64, i64 } %t83, ptr %a85 + store { ptr, i64, i64 } { ptr @.str.4672, i64 3, i64 0 }, ptr %a86 call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) - %t87 = load { ptr, i64, i64 }, ptr %a84 - %t88 = load i64, ptr %t66 - %t89 = add i64 %t88, 1 - call void @finch_arr_reserve(ptr %a3, i64 %t89, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t90 = load ptr, ptr %a3 - %t91 = getelementptr inbounds { ptr, i64, i64 }, ptr %t90, i64 %t88 - store { ptr, i64, i64 } %t87, ptr %t91 - store i64 %t89, ptr %t66 - %t92 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - %t93 = load ptr, ptr %a1 - %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.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 - call void @finch_str_from_int(ptr %a101, i64 %t100) - %t102 = load { ptr, i64, i64 }, ptr %a101 - store { ptr, i64, i64 } %t99, 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 - %t107 = load i64, ptr %t92 - %t108 = add i64 %t107, 1 - call void @finch_arr_reserve(ptr %a4, i64 %t108, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t109 = load ptr, ptr %a4 - %t110 = getelementptr inbounds { ptr, i64, i64 }, ptr %t109, i64 %t107 - store { ptr, i64, i64 } %t106, ptr %t110 - store i64 %t108, ptr %t92 - br label %endif6956 -endif6956: - br label %for.step6950 -for.step6950: + store { ptr, i64, i64 } %t83, ptr %a87 + call void @finch_str_drop(ptr %a87) + %t88 = load { ptr, i64, i64 }, ptr %a84 + %t89 = load i64, ptr %a11 + call void @finch_str_from_int(ptr %a90, i64 %t89) + %t91 = load { ptr, i64, i64 }, ptr %a90 + store { ptr, i64, i64 } %t88, ptr %a93 + store { ptr, i64, i64 } %t91, ptr %a94 + call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) + store { ptr, i64, i64 } %t88, ptr %a95 + call void @finch_str_drop(ptr %a95) + store { ptr, i64, i64 } %t91, ptr %a96 + call void @finch_str_drop(ptr %a96) + %t97 = load { ptr, i64, i64 }, ptr %a92 + %t98 = load i64, ptr %t71 + %t99 = add i64 %t98, 1 + call void @finch_arr_reserve(ptr %a3, i64 %t99, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t100 = load ptr, ptr %a3 + %t101 = getelementptr inbounds { ptr, i64, i64 }, ptr %t100, i64 %t98 + store { ptr, i64, i64 } %t97, ptr %t101 + store i64 %t99, ptr %t71 + %t102 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 + %t103 = load ptr, ptr %a1 + %t104 = load %S.ast.Type, ptr %a25 + %t105 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t103, %S.ast.Type %t104) + store { ptr, i64, i64 } %t105, ptr %a107 + store { ptr, i64, i64 } { ptr @.str.4673, i64 3, i64 0 }, ptr %a108 + call void @finch_str_concat(ptr %a106, ptr %a107, ptr %a108) + store { ptr, i64, i64 } %t105, ptr %a109 + call void @finch_str_drop(ptr %a109) + %t110 = load { ptr, i64, i64 }, ptr %a106 %t111 = load i64, ptr %a11 - %t112 = add i64 %t111, 1 - store i64 %t112, ptr %a11 - 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.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.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 - %t126 = load { ptr, i64, i64 }, ptr %t125 - store { ptr, i64, i64 } %t124, 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.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.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 - 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.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.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.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 %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.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.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 %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.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.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.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 %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 - %t188 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t185, %S.ast.Type %t187) - store { ptr, i64, i64 } %t188, ptr %a148 - %t189 = load ptr, ptr %a1 - %t190 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t191 = load %S.ast.Type, ptr %t190 - %t192 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t189, %S.ast.Type %t191) - store { ptr, i64, i64 } %t192, ptr %a149 + call void @finch_str_from_int(ptr %a112, i64 %t111) + %t113 = load { ptr, i64, i64 }, ptr %a112 + store { ptr, i64, i64 } %t110, ptr %a115 + store { ptr, i64, i64 } %t113, ptr %a116 + call void @finch_str_concat(ptr %a114, ptr %a115, ptr %a116) + store { ptr, i64, i64 } %t110, ptr %a117 + call void @finch_str_drop(ptr %a117) + store { ptr, i64, i64 } %t113, ptr %a118 + call void @finch_str_drop(ptr %a118) + %t119 = load { ptr, i64, i64 }, ptr %a114 + %t120 = load i64, ptr %t102 + %t121 = add i64 %t120, 1 + call void @finch_arr_reserve(ptr %a4, i64 %t121, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t122 = load ptr, ptr %a4 + %t123 = getelementptr inbounds { ptr, i64, i64 }, ptr %t122, i64 %t120 + store { ptr, i64, i64 } %t119, ptr %t123 + store i64 %t121, ptr %t102 + br label %endif7331 +endif7331: + call void @finch.drop.S_ast_Type(ptr %a25) + br label %for.step7325 +for.step7325: + %t124 = load i64, ptr %a11 + %t125 = add i64 %t124, 1 + store i64 %t125, ptr %a11 + br label %for.cond7323 +for.end7326: + %t126 = load ptr, ptr %a1 + %t127 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 + %t128 = load %S.ast.Type, ptr %t127 + %t129 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t126, %S.ast.Type %t128) + store { ptr, i64, i64 } { ptr @.str.4674, i64 5, i64 0 }, ptr %a131 + store { ptr, i64, i64 } %t129, ptr %a132 + call void @finch_str_concat(ptr %a130, ptr %a131, ptr %a132) + store { ptr, i64, i64 } %t129, ptr %a133 + call void @finch_str_drop(ptr %a133) + %t134 = load { ptr, i64, i64 }, ptr %a130 + store { ptr, i64, i64 } %t134, ptr %a136 + store { ptr, i64, i64 } { ptr @.str.4675, i64 1, i64 0 }, ptr %a137 + call void @finch_str_concat(ptr %a135, ptr %a136, ptr %a137) + store { ptr, i64, i64 } %t134, ptr %a138 + call void @finch_str_drop(ptr %a138) + %t139 = load { ptr, i64, i64 }, ptr %a135 + %t140 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 11 + %t141 = load { ptr, i64, i64 }, ptr %t140 + store { ptr, i64, i64 } %t139, ptr %a143 + store { ptr, i64, i64 } %t141, ptr %a144 + call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144) + store { ptr, i64, i64 } %t139, ptr %a145 + call void @finch_str_drop(ptr %a145) + %t146 = load { ptr, i64, i64 }, ptr %a142 + store { ptr, i64, i64 } %t146, ptr %a148 + store { ptr, i64, i64 } { ptr @.str.4676, i64 1, i64 0 }, ptr %a149 + call void @finch_str_concat(ptr %a147, ptr %a148, ptr %a149) + store { ptr, i64, i64 } %t146, ptr %a150 + call void @finch_str_drop(ptr %a150) + %t151 = load { ptr, i64, i64 }, ptr %a147 + %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.4677, i64 2, i64 0 }, ptr %a153 + call void @finch_str_join(ptr %a154, ptr %a4, ptr %a153) + %t155 = load { ptr, i64, i64 }, ptr %a154 + store { ptr, i64, i64 } %t151, ptr %a157 + store { ptr, i64, i64 } %t155, ptr %a158 + call void @finch_str_concat(ptr %a156, ptr %a157, ptr %a158) + store { ptr, i64, i64 } %t151, ptr %a159 + call void @finch_str_drop(ptr %a159) + store { ptr, i64, i64 } %t155, ptr %a160 + call void @finch_str_drop(ptr %a160) + %t161 = load { ptr, i64, i64 }, ptr %a156 + store { ptr, i64, i64 } %t161, ptr %a163 + store { ptr, i64, i64 } { ptr @.str.4678, i64 1, i64 0 }, ptr %a164 + call void @finch_str_concat(ptr %a162, ptr %a163, ptr %a164) + store { ptr, i64, i64 } %t161, ptr %a165 + call void @finch_str_drop(ptr %a165) + %t166 = load { ptr, i64, i64 }, ptr %a162 + store { ptr, i64, i64 } %t166, ptr %a167 + store { ptr, i64, i64 } { ptr @.str.4679, i64 4, i64 0 }, ptr %a168 + store { ptr, i64, i64 } { ptr @.str.4680, i64 0, i64 0 }, ptr %a169 + %t170 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 + %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.4681, i64 4, i64 0 }, ptr %a174 + %t175 = call i32 @finch_str_eq(ptr %a173, ptr %a174) + %t176 = icmp ne i32 %t175, 0 + br i1 %t176, label %then7332, label %else7333 +then7332: + %t177 = load ptr, ptr %a1 + %t178 = load { ptr, i64, i64 }, ptr %a167 + call void @finch.gen.emit(ptr %t177, { ptr, i64, i64 } %t178) + %t179 = load ptr, ptr %a1 + call void @finch.gen.emit(ptr %t179, { ptr, i64, i64 } { ptr @.str.4682, i64 8, i64 0 }) + br label %endif7334 +else7333: + %t180 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 + %t181 = getelementptr inbounds %S.ast.Type, ptr %t180, i32 0, i32 0 + %t182 = load { ptr, i64, i64 }, ptr %t181 + store { ptr, i64, i64 } %t182, ptr %a183 + store { ptr, i64, i64 } { ptr @.str.4683, i64 4, i64 0 }, ptr %a184 + %t185 = call i32 @finch_str_eq(ptr %a183, ptr %a184) + %t186 = icmp ne i32 %t185, 0 + br i1 %t186, label %then7335, label %else7336 +then7335: + %t187 = load { ptr, i64, i64 }, ptr %a168 + store { ptr, i64, i64 } { ptr @.str.4684, i64 2, i64 0 }, ptr %a168 + store { ptr, i64, i64 } %t187, ptr %a188 + call void @finch_str_drop(ptr %a188) + %t189 = load { ptr, i64, i64 }, ptr %a169 + store { ptr, i64, i64 } { ptr @.str.4685, i64 8, i64 0 }, ptr %a169 + store { ptr, i64, i64 } %t189, ptr %a190 + call void @finch_str_drop(ptr %a190) + %t191 = load ptr, ptr %a1 + %t192 = load ptr, ptr %a1 %t193 = load ptr, ptr %a1 - %t194 = load { ptr, i64, i64 }, ptr %a148 - 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.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 - %t204 = load { ptr, i64, i64 }, ptr %a147 - %t205 = call { ptr, i64, i64 } @finch.gen.op(ptr %t203, { ptr, i64, i64 } %t204) - store { ptr, i64, i64 } %t202, 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 - call void @finch.gen.emit(ptr %t193, { ptr, i64, i64 } %t209) - 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 %panic6963, label %ok6964 -panic6963: - call void @finch_panic(ptr @.str.4519, i64 4003, ptr @.str.4520) - unreachable -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 %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.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 - %t223 = load { ptr, i64, i64 }, ptr %a149 - store { ptr, i64, i64 } %t222, 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.4523, i64 1, i64 0 }, ptr %a230 + %t194 = load { ptr, i64, i64 }, ptr %a167 + %t195 = call { ptr, i64, i64 } @finch.gen.op(ptr %t193, { ptr, i64, i64 } %t194) + store { ptr, i64, i64 } { ptr @.str.4687, i64 8, i64 0 }, ptr %a197 + store { ptr, i64, i64 } %t195, ptr %a198 + call void @finch_str_concat(ptr %a196, ptr %a197, ptr %a198) + store { ptr, i64, i64 } %t195, ptr %a199 + call void @finch_str_drop(ptr %a199) + %t200 = load { ptr, i64, i64 }, ptr %a196 + store { ptr, i64, i64 } %t200, ptr %a202 + store { ptr, i64, i64 } { ptr @.str.4688, i64 6, i64 0 }, ptr %a203 + call void @finch_str_concat(ptr %a201, ptr %a202, ptr %a203) + store { ptr, i64, i64 } %t200, ptr %a204 + call void @finch_str_drop(ptr %a204) + %t205 = load { ptr, i64, i64 }, ptr %a201 + %t206 = call { ptr, i64, i64 } @finch.gen.op(ptr %t192, { ptr, i64, i64 } %t205) + store { ptr, i64, i64 } %t205, ptr %a207 + call void @finch_str_drop(ptr %a207) + store { ptr, i64, i64 } { ptr @.str.4686, i64 7, i64 0 }, ptr %a209 + store { ptr, i64, i64 } %t206, ptr %a210 + call void @finch_str_concat(ptr %a208, ptr %a209, ptr %a210) + store { ptr, i64, i64 } %t206, ptr %a211 + call void @finch_str_drop(ptr %a211) + %t212 = load { ptr, i64, i64 }, ptr %a208 + call void @finch.gen.emit(ptr %t191, { ptr, i64, i64 } %t212) + store { ptr, i64, i64 } %t212, ptr %a213 + call void @finch_str_drop(ptr %a213) + br label %endif7337 +else7336: + %t214 = load ptr, ptr %a1 + %t215 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 + %t216 = load %S.ast.Type, ptr %t215 + %t217 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t214, %S.ast.Type %t216) + %t218 = load { ptr, i64, i64 }, ptr %a168 + store { ptr, i64, i64 } %t217, ptr %a168 + store { ptr, i64, i64 } %t218, ptr %a219 + call void @finch_str_drop(ptr %a219) + %t220 = load ptr, ptr %a1 + %t221 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 + %t222 = load %S.ast.Type, ptr %t221 + %t223 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t220, %S.ast.Type %t222) + %t224 = load { ptr, i64, i64 }, ptr %a169 + store { ptr, i64, i64 } %t223, ptr %a169 + store { ptr, i64, i64 } %t224, ptr %a225 + call void @finch_str_drop(ptr %a225) + %t226 = load ptr, ptr %a1 + %t227 = load { ptr, i64, i64 }, ptr %a168 + store { ptr, i64, i64 } { ptr @.str.4689, i64 4, i64 0 }, 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 %a148 - 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 - store { ptr, i64, i64 } %t236, ptr %a238 - 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 - %t242 = load { ptr, i64, i64 }, ptr %t241 - store { ptr, i64, i64 } %t240, ptr %a244 - store { ptr, i64, i64 } %t242, ptr %a245 - 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.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.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 - 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.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) - %t263 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 1 - %t264 = load { ptr, i64, i64 }, ptr %t263 - store { ptr, i64, i64 } %t264, ptr %a265 - call void @finch_str_copy(ptr %a266, ptr %a265) - %t267 = load { ptr, i64, i64 }, ptr %a266 - ret { ptr, i64, i64 } %t267 + store { ptr, i64, i64 } %t231, ptr %a233 + store { ptr, i64, i64 } { ptr @.str.4690, i64 1, i64 0 }, ptr %a234 + call void @finch_str_concat(ptr %a232, ptr %a233, ptr %a234) + store { ptr, i64, i64 } %t231, ptr %a235 + call void @finch_str_drop(ptr %a235) + %t236 = load { ptr, i64, i64 }, ptr %a232 + %t237 = load ptr, ptr %a1 + %t238 = load { ptr, i64, i64 }, ptr %a167 + %t239 = call { ptr, i64, i64 } @finch.gen.op(ptr %t237, { ptr, i64, i64 } %t238) + store { ptr, i64, i64 } %t236, ptr %a241 + store { ptr, i64, i64 } %t239, ptr %a242 + call void @finch_str_concat(ptr %a240, ptr %a241, ptr %a242) + store { ptr, i64, i64 } %t236, ptr %a243 + call void @finch_str_drop(ptr %a243) + store { ptr, i64, i64 } %t239, ptr %a244 + call void @finch_str_drop(ptr %a244) + %t245 = load { ptr, i64, i64 }, ptr %a240 + call void @finch.gen.emit(ptr %t226, { ptr, i64, i64 } %t245) + store { ptr, i64, i64 } %t245, ptr %a246 + call void @finch_str_drop(ptr %a246) + br label %endif7337 +endif7337: + br label %endif7334 +endif7334: + store { ptr, i64, i64 } { ptr @.str.4691, i64 0, i64 0 }, ptr %a247 + %t248 = load ptr, ptr %a1 + %t249 = icmp eq ptr %t248, null + br i1 %t249, label %panic7338, label %ok7339 +panic7338: + call void @finch_panic(ptr @.str.4692, i64 4290, ptr @.str.4693) + unreachable +ok7339: + %t250 = getelementptr inbounds %S.gen.Gen, ptr %t248, i32 0, i32 30 + %t251 = getelementptr inbounds %S.platform.Target, ptr %t250, i32 0, i32 1 + %t252 = load i1, ptr %t251 + br i1 %t252, label %then7340, label %endif7342 +then7340: + %t253 = load { ptr, i64, i64 }, ptr %a247 + store { ptr, i64, i64 } { ptr @.str.4694, i64 10, i64 0 }, ptr %a247 + store { ptr, i64, i64 } %t253, ptr %a254 + call void @finch_str_drop(ptr %a254) + br label %endif7342 +endif7342: + %t255 = load ptr, ptr %a1 + %t256 = load %S.gen.Saved, ptr %a7 + %t257 = load { ptr, i64, i64 }, ptr %a247 + store { ptr, i64, i64 } { ptr @.str.4695, i64 6, i64 0 }, ptr %a259 + store { ptr, i64, i64 } %t257, ptr %a260 + call void @finch_str_concat(ptr %a258, ptr %a259, ptr %a260) + %t261 = load { ptr, i64, i64 }, ptr %a258 + %t262 = load { ptr, i64, i64 }, ptr %a169 + store { ptr, i64, i64 } %t261, ptr %a264 + store { ptr, i64, i64 } %t262, ptr %a265 + call void @finch_str_concat(ptr %a263, ptr %a264, ptr %a265) + store { ptr, i64, i64 } %t261, ptr %a266 + call void @finch_str_drop(ptr %a266) + %t267 = load { ptr, i64, i64 }, ptr %a263 + store { ptr, i64, i64 } %t267, ptr %a269 + store { ptr, i64, i64 } { ptr @.str.4696, i64 1, i64 0 }, ptr %a270 + call void @finch_str_concat(ptr %a268, ptr %a269, ptr %a270) + store { ptr, i64, i64 } %t267, ptr %a271 + call void @finch_str_drop(ptr %a271) + %t272 = load { ptr, i64, i64 }, ptr %a268 + %t273 = load { ptr, i64, i64 }, ptr %a168 + 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) + store { ptr, i64, i64 } %t272, ptr %a277 + call void @finch_str_drop(ptr %a277) + %t278 = load { ptr, i64, i64 }, ptr %a274 + store { ptr, i64, i64 } %t278, ptr %a280 + store { ptr, i64, i64 } { ptr @.str.4697, i64 2, i64 0 }, ptr %a281 + call void @finch_str_concat(ptr %a279, ptr %a280, ptr %a281) + store { ptr, i64, i64 } %t278, ptr %a282 + call void @finch_str_drop(ptr %a282) + %t283 = load { ptr, i64, i64 }, ptr %a279 + %t284 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 1 + %t285 = load { ptr, i64, i64 }, ptr %t284 + store { ptr, i64, i64 } %t283, ptr %a287 + store { ptr, i64, i64 } %t285, ptr %a288 + call void @finch_str_concat(ptr %a286, ptr %a287, ptr %a288) + store { ptr, i64, i64 } %t283, ptr %a289 + call void @finch_str_drop(ptr %a289) + %t290 = load { ptr, i64, i64 }, ptr %a286 + store { ptr, i64, i64 } %t290, ptr %a292 + store { ptr, i64, i64 } { ptr @.str.4698, i64 1, i64 0 }, ptr %a293 + call void @finch_str_concat(ptr %a291, ptr %a292, ptr %a293) + store { ptr, i64, i64 } %t290, ptr %a294 + call void @finch_str_drop(ptr %a294) + %t295 = load { ptr, i64, i64 }, ptr %a291 + %t296 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.4699, i64 2, i64 0 }, ptr %a297 + call void @finch_str_join(ptr %a298, ptr %a3, ptr %a297) + %t299 = load { ptr, i64, i64 }, ptr %a298 + store { ptr, i64, i64 } %t295, ptr %a301 + store { ptr, i64, i64 } %t299, ptr %a302 + call void @finch_str_concat(ptr %a300, ptr %a301, ptr %a302) + store { ptr, i64, i64 } %t295, ptr %a303 + call void @finch_str_drop(ptr %a303) + store { ptr, i64, i64 } %t299, ptr %a304 + call void @finch_str_drop(ptr %a304) + %t305 = load { ptr, i64, i64 }, ptr %a300 + store { ptr, i64, i64 } %t305, ptr %a307 + store { ptr, i64, i64 } { ptr @.str.4700, i64 1, i64 0 }, ptr %a308 + call void @finch_str_concat(ptr %a306, ptr %a307, ptr %a308) + store { ptr, i64, i64 } %t305, ptr %a309 + call void @finch_str_drop(ptr %a309) + %t310 = load { ptr, i64, i64 }, ptr %a306 + call void @finch.gen.endHelper(ptr %t255, %S.gen.Saved %t256, { ptr, i64, i64 } %t310) + store { ptr, i64, i64 } %t310, ptr %a311 + call void @finch_str_drop(ptr %a311) + %t312 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 1 + %t313 = load { ptr, i64, i64 }, ptr %t312 + store { ptr, i64, i64 } %t313, ptr %a314 + call void @finch_str_copy(ptr %a315, ptr %a314) + %t316 = load { ptr, i64, i64 }, ptr %a315 + call void @finch_str_drop(ptr %a247) + call void @finch_str_drop(ptr %a169) + call void @finch_str_drop(ptr %a168) + call void @finch_str_drop(ptr %a167) + call void @finch.drop.S_gen_Saved(ptr %a7) + call void @finch.drop.arr_str(ptr %a4) + call void @finch.drop.arr_str(ptr %a3) + ret { ptr, i64, i64 } %t316 +} + +define internal void @finch.drop.arr_S_gen_Abi(ptr %a) { +entry: + %a4 = alloca i64, align 16 + %t1 = load ptr, ptr %a + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 + %t3 = load i64, ptr %t2 + store i64 0, ptr %a4 + br label %n.cond7465 +n.cond7465: + %t5 = load i64, ptr %a4 + %t6 = icmp slt i64 %t5, %t3 + br i1 %t6, label %n.body7466, label %n.end7467 +n.body7466: + %t7 = getelementptr inbounds %S.gen.Abi, ptr %t1, i64 %t5 + call void @finch.drop.S_gen_Abi(ptr %t7) + %t8 = load i64, ptr %a4 + %t9 = add i64 %t8, 1 + store i64 %t9, ptr %a4 + br label %n.cond7465 +n.end7467: + call void @finch_arr_free(ptr %a) + ret void +} + +define internal void @finch.drop.S_gen_Plan(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.gen.Plan, ptr %a, i32 0, i32 0 + call void @finch.drop.S_gen_Abi(ptr %t1) + %t2 = getelementptr inbounds %S.gen.Plan, ptr %a, i32 0, i32 1 + call void @finch.drop.arr_S_gen_Abi(ptr %t2) + %t3 = getelementptr inbounds %S.gen.Plan, ptr %a, i32 0, i32 2 + call void @finch_str_drop(ptr %t3) + ret void } define internal { ptr, i64, i64 } @finch.gen.cThunk(ptr %p0, i64 %p1, %S.ast.Node %p2) { @@ -62230,274 +73573,358 @@ entry: %a21 = alloca { ptr, i64, i64 }, align 16 %a22 = alloca { ptr, i64, i64 }, align 16 %a23 = alloca { ptr, i64, i64 }, align 16 - %a25 = 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 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = 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 + %a34 = alloca { ptr, i64, i64 }, align 16 %a35 = 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 i64, align 16 + %a36 = alloca { ptr, i64, i64 }, align 16 + %a38 = alloca { ptr, i64, i64 }, align 16 + %a44 = alloca { ptr, i64, i64 }, align 16 + %a45 = alloca { ptr, i64, i64 }, align 16 + %a46 = alloca { ptr, i64, i64 }, align 16 %a48 = alloca i64, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 + %a51 = alloca i64, align 16 + %a56 = alloca { ptr, i64, i64 }, align 16 + %a57 = alloca { ptr, i64, i64 }, align 16 %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = 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 - %a88 = alloca { ptr, i64, i64 }, align 16 + %a72 = alloca { ptr, i64, i64 }, align 16 %a89 = alloca { ptr, i64, i64 }, align 16 %a90 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 + %a91 = alloca { ptr, i64, i64 }, align 16 %a93 = alloca { ptr, i64, i64 }, align 16 %a94 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca i64, align 16 - %a105 = alloca %S.ast.Type, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = 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 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = 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 + %a100 = alloca i64, align 16 + %a108 = alloca %S.ast.Type, align 16 + %a113 = alloca { ptr, i64, i64 }, align 16 + %a114 = alloca { ptr, i64, i64 }, align 16 + %a120 = alloca { ptr, i64, i64 }, align 16 + %a121 = alloca { ptr, i64, i64 }, align 16 + %a127 = 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 + %a161 = alloca { ptr, i64, i64 }, align 16 %a162 = 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 + %a166 = alloca { ptr, i64, i64 }, align 16 + %a167 = alloca { ptr, i64, i64 }, align 16 %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = 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 + %a175 = alloca { ptr, i64, i64 }, align 16 + %a176 = alloca { ptr, i64, i64 }, align 16 + %a178 = alloca { ptr, i64, i64 }, align 16 + %a187 = alloca { ptr, i64, i64 }, align 16 %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = 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 + %a203 = alloca { ptr, i64, i64 }, align 16 %a204 = alloca { ptr, i64, i64 }, align 16 - %a205 = 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 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 + %a219 = alloca { ptr, i64, i64 }, align 16 + %a220 = alloca { ptr, i64, i64 }, align 16 + %a248 = alloca { ptr, i64, i64 }, align 16 + %a249 = alloca { ptr, i64, i64 }, align 16 + %a250 = alloca { ptr, i64, i64 }, align 16 %a252 = alloca { ptr, i64, i64 }, align 16 %a253 = alloca { ptr, i64, i64 }, align 16 %a254 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca %S.gen.Plan, align 16 - %a265 = alloca %S.gen.Saved, align 16 + %a255 = 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 + %a263 = alloca { ptr, i64, i64 }, align 16 + %a264 = alloca { ptr, i64, i64 }, align 16 %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca i64, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 + %a273 = alloca %S.gen.Plan, align 16 + %a276 = alloca %S.gen.Saved, align 16 %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = 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 + %a278 = alloca i64, align 16 + %a279 = alloca { ptr, i64, i64 }, align 16 + %a287 = alloca { ptr, i64, i64 }, align 16 %a288 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca i64, align 16 - %a303 = alloca %S.ast.Type, align 16 - %a304 = alloca %S.ast.Type, align 16 - %a306 = alloca %S.ast.Type, align 16 - %a315 = alloca %S.gen.Abi, align 16 - %a316 = alloca %S.gen.Abi, align 16 - %a318 = alloca %S.gen.Abi, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = 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 - %a339 = 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 + %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 + %a295 = alloca { ptr, i64, i64 }, align 16 + %a302 = alloca { ptr, i64, i64 }, align 16 + %a303 = alloca { ptr, i64, i64 }, align 16 + %a307 = alloca i64, align 16 + %a318 = alloca %S.ast.Type, align 16 + %a319 = alloca %S.ast.Type, align 16 + %a321 = alloca %S.ast.Type, align 16 + %a330 = alloca %S.gen.Abi, align 16 + %a331 = alloca %S.gen.Abi, align 16 + %a333 = alloca %S.gen.Abi, align 16 + %a336 = alloca { ptr, i64, i64 }, align 16 + %a337 = 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 %a347 = 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 + %a356 = 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 %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 + %a372 = alloca { ptr, i64, i64 }, align 16 %a373 = alloca { ptr, i64, i64 }, align 16 + %a374 = 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 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca { ptr, i64, i64 }, align 16 - %a382 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca { ptr, i64, i64 }, align 16 - %a393 = 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 + %a389 = alloca { ptr, i64, i64 }, align 16 + %a396 = alloca { ptr, i64, i64 }, align 16 %a398 = alloca { ptr, i64, i64 }, align 16 + %a399 = 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 - %a412 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a414 = 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 + %a407 = 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 + %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 { ptr, i64, i64 }, align 16 %a430 = alloca { ptr, i64, i64 }, align 16 - %a440 = alloca { ptr, i64, i64 }, align 16 + %a431 = alloca { ptr, i64, i64 }, align 16 %a441 = alloca { ptr, i64, i64 }, align 16 - %a446 = alloca { ptr, i64, i64 }, align 16 - %a450 = alloca i64, align 16 + %a442 = alloca { ptr, i64, i64 }, align 16 + %a443 = alloca { ptr, i64, i64 }, align 16 + %a444 = alloca { ptr, i64, i64 }, align 16 + %a451 = alloca { ptr, i64, i64 }, align 16 + %a453 = 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 + %a459 = alloca { ptr, i64, i64 }, align 16 + %a460 = alloca { ptr, i64, i64 }, align 16 + %a461 = alloca { ptr, i64, i64 }, align 16 %a462 = alloca { ptr, i64, i64 }, align 16 %a463 = alloca { ptr, i64, i64 }, align 16 %a464 = alloca { ptr, i64, i64 }, align 16 - %a467 = 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 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a489 = alloca { ptr, i64, i64 }, align 16 - %a490 = alloca { ptr, i64, i64 }, align 16 - %a491 = alloca { ptr, i64, i64 }, align 16 - %a495 = alloca { ptr, i64, i64 }, align 16 - %a496 = alloca { ptr, i64, i64 }, align 16 + %a465 = 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 + %a485 = alloca i64, align 16 %a497 = alloca { ptr, i64, i64 }, align 16 + %a498 = 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 + %a502 = alloca { ptr, i64, i64 }, align 16 + %a504 = 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 %a508 = alloca { ptr, i64, i64 }, align 16 - %a509 = alloca { ptr, i64, i64 }, align 16 - %a520 = alloca { ptr, i64, i64 }, align 16 - %a521 = alloca { ptr, i64, i64 }, align 16 - %a522 = alloca { ptr, i64, i64 }, align 16 - %a530 = alloca { ptr, i64, i64 }, align 16 - %a531 = alloca { ptr, i64, i64 }, align 16 - %a532 = alloca { ptr, i64, i64 }, align 16 - %a545 = alloca { ptr, i64, i64 }, align 16 + %a524 = alloca { ptr, i64, i64 }, align 16 + %a526 = 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 + %a533 = alloca { ptr, i64, i64 }, align 16 + %a534 = alloca { ptr, i64, i64 }, align 16 + %a535 = alloca { ptr, i64, i64 }, align 16 + %a537 = alloca { ptr, i64, i64 }, align 16 + %a538 = alloca { ptr, i64, i64 }, align 16 + %a539 = alloca { ptr, i64, i64 }, align 16 + %a540 = alloca { ptr, i64, i64 }, align 16 + %a544 = alloca { ptr, i64, i64 }, align 16 %a546 = alloca { ptr, i64, i64 }, align 16 %a547 = alloca { ptr, i64, i64 }, align 16 + %a548 = alloca { ptr, i64, i64 }, align 16 %a549 = alloca { ptr, i64, i64 }, align 16 %a550 = alloca { ptr, i64, i64 }, align 16 - %a551 = alloca { ptr, i64, i64 }, align 16 + %a553 = 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 - %a558 = 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 + %a555 = 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 + %a567 = alloca { ptr, i64, i64 }, align 16 %a575 = alloca { ptr, i64, i64 }, align 16 %a576 = alloca { ptr, i64, i64 }, align 16 %a577 = alloca { ptr, i64, i64 }, align 16 - %a591 = alloca { ptr, i64, i64 }, align 16 - %a592 = alloca { ptr, i64, i64 }, align 16 + %a578 = alloca { ptr, i64, i64 }, align 16 + %a579 = alloca { ptr, i64, i64 }, align 16 + %a580 = alloca { ptr, i64, i64 }, align 16 %a593 = alloca { ptr, i64, i64 }, align 16 + %a594 = alloca { ptr, i64, i64 }, align 16 %a595 = alloca { ptr, i64, i64 }, align 16 %a596 = alloca { ptr, i64, i64 }, align 16 %a597 = alloca { ptr, i64, i64 }, align 16 + %a599 = 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 - %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 + %a608 = 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 - %a613 = alloca { ptr, i64, i64 }, align 16 - %a614 = alloca { ptr, i64, i64 }, align 16 - %a615 = 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 %a621 = alloca { ptr, i64, i64 }, align 16 %a622 = alloca { ptr, i64, i64 }, align 16 - %a626 = alloca { ptr, i64, i64 }, align 16 + %a623 = alloca { ptr, i64, i64 }, align 16 + %a624 = alloca { ptr, i64, i64 }, align 16 %a627 = 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 + %a633 = 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 + %a650 = 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 - %a668 = alloca { ptr, i64, i64 }, align 16 - %a669 = alloca { ptr, i64, i64 }, align 16 + %a655 = alloca { ptr, i64, i64 }, align 16 + %a659 = 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 + %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 %a670 = alloca { ptr, i64, i64 }, align 16 - %a672 = alloca { ptr, i64, i64 }, align 16 + %a671 = alloca { ptr, i64, i64 }, align 16 %a673 = 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 + %a677 = 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 %a684 = alloca { ptr, i64, i64 }, align 16 - %a695 = alloca { ptr, i64, i64 }, align 16 - %a696 = alloca { ptr, i64, i64 }, align 16 - %a697 = 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 - %a706 = alloca { ptr, i64, i64 }, align 16 + %a685 = alloca { ptr, i64, i64 }, align 16 + %a689 = alloca { ptr, i64, i64 }, align 16 + %a690 = alloca { ptr, i64, i64 }, align 16 %a707 = alloca { ptr, i64, i64 }, align 16 %a708 = alloca { ptr, i64, i64 }, align 16 %a713 = alloca { ptr, i64, i64 }, align 16 %a714 = alloca { ptr, i64, i64 }, align 16 - %a715 = 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 - %a723 = alloca { ptr, i64, i64 }, align 16 - %a724 = alloca { ptr, i64, i64 }, align 16 - %a725 = alloca { ptr, i64, i64 }, align 16 - %a727 = alloca { ptr, i64, i64 }, align 16 - %a728 = alloca { ptr, i64, i64 }, align 16 %a729 = 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 + %a730 = 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 - %a738 = 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 %a742 = 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 - %a749 = alloca { ptr, i64, i64 }, align 16 %a750 = alloca { ptr, i64, i64 }, align 16 + %a751 = 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 + %a762 = 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 + %a771 = 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 + %a781 = alloca { ptr, i64, i64 }, align 16 + %a782 = alloca { ptr, i64, i64 }, align 16 + %a783 = alloca { ptr, i64, i64 }, align 16 + %a784 = alloca { ptr, i64, i64 }, align 16 + %a785 = alloca { ptr, i64, i64 }, align 16 + %a787 = alloca { ptr, i64, i64 }, align 16 + %a791 = alloca { ptr, i64, i64 }, align 16 + %a792 = alloca { ptr, i64, i64 }, align 16 + %a793 = 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 + %a798 = alloca { ptr, i64, i64 }, align 16 + %a802 = alloca { ptr, i64, i64 }, align 16 + %a803 = alloca { ptr, i64, i64 }, align 16 + %a804 = alloca { ptr, i64, i64 }, align 16 + %a805 = alloca { ptr, i64, i64 }, align 16 + %a807 = 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 + %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 + %a824 = alloca { ptr, i64, i64 }, align 16 + %a825 = 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 + %a833 = alloca { ptr, i64, i64 }, align 16 + %a834 = alloca { ptr, i64, i64 }, align 16 + %a835 = alloca { ptr, i64, i64 }, align 16 + %a836 = alloca { ptr, i64, i64 }, align 16 + %a838 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store i64 %p1, ptr %a2 store %S.ast.Node %p2, ptr %a3 %t4 = load ptr, ptr %a1 %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic6968, label %ok6969 -panic6968: - call void @finch_panic(ptr @.str.4528, i64 4012, ptr @.str.4529) + br i1 %t5, label %panic7343, label %ok7344 +panic7343: + call void @finch_panic(ptr @.str.4701, i64 4299, ptr @.str.4702) unreachable -ok6969: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 14 +ok7344: + %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 15 %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 %range6970, label %inrange6971 -range6970: - call void @finch_panic_index(ptr @.str.4530, i64 4012, i64 %t7, i64 %t9) + br i1 %t10, label %range7345, label %inrange7346 +range7345: + call void @finch_panic_index(ptr @.str.4703, i64 4299, i64 %t7, i64 %t9) unreachable -inrange6971: +inrange7346: %t11 = extractvalue { ptr, i64, i64 } %t8, 0 %t12 = getelementptr inbounds %S.gen.FnSig, ptr %t11, i64 %t7 %t13 = load %S.gen.FnSig, ptr %t12 @@ -62508,1032 +73935,1217 @@ inrange6971: %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.4531, i64 9, i64 0 }, ptr %a22 + store { ptr, i64, i64 } { ptr @.str.4704, 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.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 - %t30 = load { ptr, i64, i64 }, ptr %t29 - store { ptr, i64, i64 } %t28, 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 %a35 - %t36 = load ptr, ptr %a1 - %t37 = icmp eq ptr %t36, null - br i1 %t37, label %panic6972, label %ok6973 -panic6972: - call void @finch_panic(ptr @.str.4533, i64 4014, ptr @.str.4534) + store { ptr, i64, i64 } %t20, ptr %a24 + call void @finch_str_drop(ptr %a24) + %t25 = load { ptr, i64, i64 }, ptr %a21 + store { ptr, i64, i64 } %t25, ptr %a27 + store { ptr, i64, i64 } { ptr @.str.4705, i64 1, i64 0 }, ptr %a28 + call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28) + store { ptr, i64, i64 } %t25, ptr %a29 + call void @finch_str_drop(ptr %a29) + %t30 = load { ptr, i64, i64 }, ptr %a26 + %t31 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 1 + %t32 = load { ptr, i64, i64 }, ptr %t31 + store { ptr, i64, i64 } %t30, ptr %a34 + store { ptr, i64, i64 } %t32, ptr %a35 + call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) + store { ptr, i64, i64 } %t30, ptr %a36 + call void @finch_str_drop(ptr %a36) + %t37 = load { ptr, i64, i64 }, ptr %a33 + store { ptr, i64, i64 } %t37, ptr %a38 + %t39 = load ptr, ptr %a1 + %t40 = icmp eq ptr %t39, null + br i1 %t40, label %panic7347, label %ok7348 +panic7347: + call void @finch_panic(ptr @.str.4706, i64 4301, ptr @.str.4707) unreachable -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.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 - store i64 -1, ptr %a45 - %t46 = load i64, ptr %t39 - %t47 = load ptr, ptr %t38 - store i64 0, ptr %a48 - br label %find.cond6974 -find.cond6974: - %t49 = load i64, ptr %a48 - %t50 = icmp slt i64 %t49, %t46 - 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.hit6976, label %find.next6977 -find.hit6976: - store i64 %t49, ptr %a45 - br label %find.end6978 -find.next6977: - %t57 = add i64 %t49, 1 - store i64 %t57, ptr %a48 - br label %find.cond6974 -find.end6978: - %t58 = load i64, ptr %a45 - %t59 = icmp sge i64 %t58, 0 - 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 -endif6981: - %t64 = load ptr, ptr %a1 - %t65 = icmp eq ptr %t64, null - br i1 %t65, label %panic6982, label %ok6983 -panic6982: - call void @finch_panic(ptr @.str.4536, i64 4017, ptr @.str.4537) +ok7348: + %t41 = getelementptr inbounds %S.gen.Gen, ptr %t39, i32 0, i32 39 + %t42 = getelementptr inbounds { ptr, i64, i64 }, ptr %t41, i32 0, i32 1 + %t43 = load { ptr, i64, i64 }, ptr %a38 + store { ptr, i64, i64 } { ptr @.str.4708, i64 2, 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 i64 -1, ptr %a48 + %t49 = load i64, ptr %t42 + %t50 = load ptr, ptr %t41 + store i64 0, ptr %a51 + br label %find.cond7349 +find.cond7349: + %t52 = load i64, ptr %a51 + %t53 = icmp slt i64 %t52, %t49 + br i1 %t53, label %find.body7350, label %find.end7353 +find.body7350: + %t54 = getelementptr inbounds { ptr, i64, i64 }, ptr %t50, i64 %t52 + %t55 = load { ptr, i64, i64 }, ptr %t54 + store { ptr, i64, i64 } %t55, ptr %a56 + store { ptr, i64, i64 } %t47, ptr %a57 + %t58 = call i32 @finch_str_eq(ptr %a56, ptr %a57) + %t59 = icmp ne i32 %t58, 0 + br i1 %t59, label %find.hit7351, label %find.next7352 +find.hit7351: + store i64 %t52, ptr %a48 + br label %find.end7353 +find.next7352: + %t60 = add i64 %t52, 1 + store i64 %t60, ptr %a51 + br label %find.cond7349 +find.end7353: + store { ptr, i64, i64 } %t47, ptr %a61 + call void @finch_str_drop(ptr %a61) + %t62 = load i64, ptr %a48 + %t63 = icmp sge i64 %t62, 0 + br i1 %t63, label %then7354, label %endif7356 +then7354: + %t64 = load { ptr, i64, i64 }, ptr %a38 + call void @finch.drop.S_gen_FnSig(ptr %a17) + ret { ptr, i64, i64 } %t64 +endif7356: + %t65 = load ptr, ptr %a1 + %t66 = icmp eq ptr %t65, null + br i1 %t66, label %panic7357, label %ok7358 +panic7357: + call void @finch_panic(ptr @.str.4709, i64 4304, ptr @.str.4710) unreachable -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.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 - %t73 = load i64, ptr %t67 - %t74 = add i64 %t73, 1 - call void @finch_arr_reserve(ptr %t66, i64 %t74, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t75 = load ptr, ptr %t66 - %t76 = getelementptr inbounds { ptr, i64, i64 }, ptr %t75, i64 %t73 - store { ptr, i64, i64 } %t72, ptr %t76 - store i64 %t74, ptr %t67 - %t77 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 2 - %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.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.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.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.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 %endif6990 -endif6990: - %t96 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 13 - store i64 0, ptr %a97 - 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.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.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.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.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.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.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.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.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.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.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 %panic7013, label %ok7014 -panic7013: - call void @finch_panic(ptr @.str.4545, i64 4022, ptr @.str.4546) - unreachable -ok7014: - %t137 = getelementptr inbounds %S.gen.Gen, ptr %t135, i32 0, i32 15 +ok7358: + %t67 = getelementptr inbounds %S.gen.Gen, ptr %t65, i32 0, i32 39 + %t68 = getelementptr inbounds { ptr, i64, i64 }, ptr %t67, i32 0, i32 1 + %t69 = load { ptr, i64, i64 }, ptr %a38 + store { ptr, i64, i64 } { ptr @.str.4711, i64 2, 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 + %t74 = load i64, ptr %t68 + %t75 = add i64 %t74, 1 + call void @finch_arr_reserve(ptr %t67, i64 %t75, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t76 = load ptr, ptr %t67 + %t77 = getelementptr inbounds { ptr, i64, i64 }, ptr %t76, i64 %t74 + store { ptr, i64, i64 } %t73, ptr %t77 + store i64 %t75, ptr %t68 + %t78 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 2 + %t79 = getelementptr inbounds { ptr, i64, i64 }, ptr %t78, i32 0, i32 1 + %t80 = load i64, ptr %t79 + %t81 = icmp sgt i64 %t80, 0 + br label %logic.from7359 +logic.from7359: + br i1 %t81, label %logic.end7361, label %logic.rhs7360 +logic.rhs7360: + %t82 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 9 + %t83 = load i1, ptr %t82 + br label %logic.rend7362 +logic.rend7362: + br label %logic.end7361 +logic.end7361: + %t84 = phi i1 [ true, %logic.from7359 ], [ %t83, %logic.rend7362 ] + br i1 %t84, label %then7363, label %endif7365 +then7363: + %t85 = load ptr, ptr %a1 + %t86 = load %S.ast.Node, ptr %a3 + %t87 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 1 + %t88 = load { ptr, i64, i64 }, ptr %t87 + store { ptr, i64, i64 } { ptr @.str.4712, i64 5, i64 0 }, ptr %a90 + store { ptr, i64, i64 } %t88, ptr %a91 + call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) + %t92 = load { ptr, i64, i64 }, ptr %a89 + store { ptr, i64, i64 } %t92, ptr %a94 + store { ptr, i64, i64 } { ptr @.str.4713, i64 81, i64 0 }, ptr %a95 + call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) + store { ptr, i64, i64 } %t92, ptr %a96 + call void @finch_str_drop(ptr %a96) + %t97 = load { ptr, i64, i64 }, ptr %a93 + call void @finch.gen.fail(ptr %t85, %S.ast.Node %t86, { ptr, i64, i64 } %t97) + store { ptr, i64, i64 } %t97, ptr %a98 + call void @finch_str_drop(ptr %a98) + br label %endif7365 +endif7365: + %t99 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 13 + store i64 0, ptr %a100 + br label %each.cond7366 +each.cond7366: + %t101 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i32 0, i32 1 + %t102 = load i64, ptr %t101 + %t103 = load i64, ptr %a100 + %t104 = icmp slt i64 %t103, %t102 + br i1 %t104, label %each.body7367, label %each.end7369 +each.body7367: + %t105 = load ptr, ptr %t99 + %t106 = getelementptr inbounds %S.ast.Type, ptr %t105, i64 %t103 + %t107 = load %S.ast.Type, ptr %t106 + store %S.ast.Type %t107, ptr %a108 + %t109 = load %S.ast.Type, ptr %a108 + %t110 = call i1 @finch.gen.isNumber(%S.ast.Type %t109) + br label %logic.from7370 +logic.from7370: + br i1 %t110, label %logic.end7372, label %logic.rhs7371 +logic.rhs7371: + %t111 = getelementptr inbounds %S.ast.Type, ptr %a108, i32 0, i32 0 + %t112 = load { ptr, i64, i64 }, ptr %t111 + store { ptr, i64, i64 } %t112, ptr %a113 + store { ptr, i64, i64 } { ptr @.str.4714, i64 4, i64 0 }, ptr %a114 + %t115 = call i32 @finch_str_eq(ptr %a113, ptr %a114) + %t116 = icmp ne i32 %t115, 0 + br label %logic.rend7373 +logic.rend7373: + br label %logic.end7372 +logic.end7372: + %t117 = phi i1 [ true, %logic.from7370 ], [ %t116, %logic.rend7373 ] + br label %logic.from7374 +logic.from7374: + br i1 %t117, label %logic.end7376, label %logic.rhs7375 +logic.rhs7375: + %t118 = getelementptr inbounds %S.ast.Type, ptr %a108, i32 0, i32 0 + %t119 = load { ptr, i64, i64 }, ptr %t118 + store { ptr, i64, i64 } %t119, ptr %a120 + store { ptr, i64, i64 } { ptr @.str.4715, i64 4, i64 0 }, ptr %a121 + %t122 = call i32 @finch_str_eq(ptr %a120, ptr %a121) + %t123 = icmp ne i32 %t122, 0 + br label %logic.rend7377 +logic.rend7377: + br label %logic.end7376 +logic.end7376: + %t124 = phi i1 [ true, %logic.from7374 ], [ %t123, %logic.rend7377 ] + br label %logic.from7378 +logic.from7378: + br i1 %t124, label %logic.end7380, label %logic.rhs7379 +logic.rhs7379: + %t125 = getelementptr inbounds %S.ast.Type, ptr %a108, i32 0, i32 0 + %t126 = load { ptr, i64, i64 }, ptr %t125 + store { ptr, i64, i64 } %t126, ptr %a127 + store { ptr, i64, i64 } { ptr @.str.4716, i64 3, i64 0 }, ptr %a128 + %t129 = call i32 @finch_str_eq(ptr %a127, ptr %a128) + %t130 = icmp ne i32 %t129, 0 + br label %logic.rend7381 +logic.rend7381: + br label %logic.end7380 +logic.end7380: + %t131 = phi i1 [ true, %logic.from7378 ], [ %t130, %logic.rend7381 ] + br label %logic.from7382 +logic.from7382: + br i1 %t131, label %logic.end7384, label %logic.rhs7383 +logic.rhs7383: + %t132 = getelementptr inbounds %S.ast.Type, ptr %a108, i32 0, i32 0 + %t133 = load { ptr, i64, i64 }, ptr %t132 + store { ptr, i64, i64 } %t133, ptr %a134 + store { ptr, i64, i64 } { ptr @.str.4717, i64 6, i64 0 }, ptr %a135 + %t136 = call i32 @finch_str_eq(ptr %a134, ptr %a135) + %t137 = icmp ne i32 %t136, 0 + br label %logic.from7385 +logic.from7385: + br i1 %t137, label %logic.rhs7386, label %logic.end7387 +logic.rhs7386: %t138 = load ptr, ptr %a1 - %t139 = getelementptr inbounds %S.ast.Type, ptr %a105, i32 0, i32 3 - %t140 = load { ptr, i64, i64 }, ptr %t139 - %t141 = getelementptr inbounds %S.ast.Type, ptr %a105, i32 0, i32 2 - %t142 = load { ptr, i64, i64 }, ptr %t141 - %t143 = call i64 @finch.gen.findStruct(ptr %t138, { ptr, i64, i64 } %t140, { ptr, i64, i64 } %t142) - %t144 = load { ptr, i64, i64 }, ptr %t137 - %t145 = extractvalue { ptr, i64, i64 } %t144, 1 - %t146 = icmp uge i64 %t143, %t145 - br i1 %t146, label %range7015, label %inrange7016 -range7015: - call void @finch_panic_index(ptr @.str.4547, i64 4022, i64 %t143, i64 %t145) + %t139 = icmp eq ptr %t138, null + br i1 %t139, label %panic7388, label %ok7389 +panic7388: + call void @finch_panic(ptr @.str.4718, i64 4309, ptr @.str.4719) unreachable -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.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 %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.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.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 - %t167 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t166) - store { ptr, i64, i64 } %t165, 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 - call void @finch.gen.fail(ptr %t154, %S.ast.Node %t155, { ptr, i64, i64 } %t171) - 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.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.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.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.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.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.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.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.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.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.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.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.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 %panic7044, label %ok7045 -panic7044: - call void @finch_panic(ptr @.str.4555, i64 4026, ptr @.str.4556) +ok7389: + %t140 = getelementptr inbounds %S.gen.Gen, ptr %t138, i32 0, i32 16 + %t141 = load ptr, ptr %a1 + %t142 = getelementptr inbounds %S.ast.Type, ptr %a108, i32 0, i32 3 + %t143 = load { ptr, i64, i64 }, ptr %t142 + %t144 = getelementptr inbounds %S.ast.Type, ptr %a108, i32 0, i32 2 + %t145 = load { ptr, i64, i64 }, ptr %t144 + %t146 = call i64 @finch.gen.findStruct(ptr %t141, { ptr, i64, i64 } %t143, { ptr, i64, i64 } %t145) + %t147 = load { ptr, i64, i64 }, ptr %t140 + %t148 = extractvalue { ptr, i64, i64 } %t147, 1 + %t149 = icmp uge i64 %t146, %t148 + br i1 %t149, label %range7390, label %inrange7391 +range7390: + call void @finch_panic_index(ptr @.str.4720, i64 4309, i64 %t146, i64 %t148) unreachable -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 - %t221 = getelementptr inbounds %S.ast.Type, ptr %t220, i32 0, i32 3 - %t222 = load { ptr, i64, i64 }, ptr %t221 - %t223 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t224 = getelementptr inbounds %S.ast.Type, ptr %t223, i32 0, i32 2 - %t225 = load { ptr, i64, i64 }, ptr %t224 - %t226 = call i64 @finch.gen.findStruct(ptr %t219, { ptr, i64, i64 } %t222, { ptr, i64, i64 } %t225) - %t227 = load { ptr, i64, i64 }, ptr %t218 - %t228 = extractvalue { ptr, i64, i64 } %t227, 1 - %t229 = icmp uge i64 %t226, %t228 - br i1 %t229, label %range7046, label %inrange7047 -range7046: - call void @finch_panic_index(ptr @.str.4557, i64 4026, i64 %t226, i64 %t228) +inrange7391: + %t150 = extractvalue { ptr, i64, i64 } %t147, 0 + %t151 = getelementptr inbounds %S.gen.StructDef, ptr %t150, i64 %t146 + %t152 = getelementptr inbounds %S.gen.StructDef, ptr %t151, i32 0, i32 2 + %t153 = load i1, ptr %t152 + br label %logic.rend7392 +logic.rend7392: + br label %logic.end7387 +logic.end7387: + %t154 = phi i1 [ false, %logic.from7385 ], [ %t153, %logic.rend7392 ] + br label %logic.rend7393 +logic.rend7393: + br label %logic.end7384 +logic.end7384: + %t155 = phi i1 [ true, %logic.from7382 ], [ %t154, %logic.rend7393 ] + %t156 = xor i1 %t155, true + br i1 %t156, label %then7394, label %endif7396 +then7394: + %t157 = load ptr, ptr %a1 + %t158 = load %S.ast.Node, ptr %a3 + %t159 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 1 + %t160 = load { ptr, i64, i64 }, ptr %t159 + store { ptr, i64, i64 } { ptr @.str.4721, i64 5, i64 0 }, ptr %a162 + store { ptr, i64, i64 } %t160, ptr %a163 + call void @finch_str_concat(ptr %a161, ptr %a162, ptr %a163) + %t164 = load { ptr, i64, i64 }, ptr %a161 + store { ptr, i64, i64 } %t164, ptr %a166 + store { ptr, i64, i64 } { ptr @.str.4722, i64 95, i64 0 }, ptr %a167 + call void @finch_str_concat(ptr %a165, ptr %a166, ptr %a167) + store { ptr, i64, i64 } %t164, ptr %a168 + call void @finch_str_drop(ptr %a168) + %t169 = load { ptr, i64, i64 }, ptr %a165 + %t170 = load %S.ast.Type, ptr %a108 + %t171 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t170) + store { ptr, i64, i64 } %t169, ptr %a173 + store { ptr, i64, i64 } %t171, ptr %a174 + call void @finch_str_concat(ptr %a172, ptr %a173, ptr %a174) + store { ptr, i64, i64 } %t169, ptr %a175 + call void @finch_str_drop(ptr %a175) + store { ptr, i64, i64 } %t171, ptr %a176 + call void @finch_str_drop(ptr %a176) + %t177 = load { ptr, i64, i64 }, ptr %a172 + call void @finch.gen.fail(ptr %t157, %S.ast.Node %t158, { ptr, i64, i64 } %t177) + store { ptr, i64, i64 } %t177, ptr %a178 + call void @finch_str_drop(ptr %a178) + br label %endif7396 +endif7396: + br label %each.step7368 +each.step7368: + %t179 = load i64, ptr %a100 + %t180 = add i64 %t179, 1 + store i64 %t180, ptr %a100 + br label %each.cond7366 +each.end7369: + %t181 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 + %t182 = load %S.ast.Type, ptr %t181 + %t183 = call i1 @finch.gen.isNumber(%S.ast.Type %t182) + br label %logic.from7397 +logic.from7397: + br i1 %t183, label %logic.end7399, label %logic.rhs7398 +logic.rhs7398: + %t184 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 + %t185 = getelementptr inbounds %S.ast.Type, ptr %t184, i32 0, i32 0 + %t186 = load { ptr, i64, i64 }, ptr %t185 + store { ptr, i64, i64 } %t186, ptr %a187 + store { ptr, i64, i64 } { ptr @.str.4723, i64 4, i64 0 }, ptr %a188 + %t189 = call i32 @finch_str_eq(ptr %a187, ptr %a188) + %t190 = icmp ne i32 %t189, 0 + br label %logic.rend7400 +logic.rend7400: + br label %logic.end7399 +logic.end7399: + %t191 = phi i1 [ true, %logic.from7397 ], [ %t190, %logic.rend7400 ] + br label %logic.from7401 +logic.from7401: + br i1 %t191, label %logic.end7403, label %logic.rhs7402 +logic.rhs7402: + %t192 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 + %t193 = getelementptr inbounds %S.ast.Type, ptr %t192, i32 0, i32 0 + %t194 = load { ptr, i64, i64 }, ptr %t193 + store { ptr, i64, i64 } %t194, ptr %a195 + store { ptr, i64, i64 } { ptr @.str.4724, i64 4, i64 0 }, ptr %a196 + %t197 = call i32 @finch_str_eq(ptr %a195, ptr %a196) + %t198 = icmp ne i32 %t197, 0 + br label %logic.rend7404 +logic.rend7404: + br label %logic.end7403 +logic.end7403: + %t199 = phi i1 [ true, %logic.from7401 ], [ %t198, %logic.rend7404 ] + br label %logic.from7405 +logic.from7405: + br i1 %t199, label %logic.end7407, label %logic.rhs7406 +logic.rhs7406: + %t200 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 + %t201 = getelementptr inbounds %S.ast.Type, ptr %t200, i32 0, i32 0 + %t202 = load { ptr, i64, i64 }, ptr %t201 + store { ptr, i64, i64 } %t202, ptr %a203 + store { ptr, i64, i64 } { ptr @.str.4725, i64 3, i64 0 }, ptr %a204 + %t205 = call i32 @finch_str_eq(ptr %a203, ptr %a204) + %t206 = icmp ne i32 %t205, 0 + br label %logic.rend7408 +logic.rend7408: + br label %logic.end7407 +logic.end7407: + %t207 = phi i1 [ true, %logic.from7405 ], [ %t206, %logic.rend7408 ] + br label %logic.from7409 +logic.from7409: + br i1 %t207, label %logic.end7411, label %logic.rhs7410 +logic.rhs7410: + %t208 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 + %t209 = getelementptr inbounds %S.ast.Type, ptr %t208, i32 0, i32 0 + %t210 = load { ptr, i64, i64 }, ptr %t209 + store { ptr, i64, i64 } %t210, ptr %a211 + store { ptr, i64, i64 } { ptr @.str.4726, i64 4, i64 0 }, ptr %a212 + %t213 = call i32 @finch_str_eq(ptr %a211, ptr %a212) + %t214 = icmp ne i32 %t213, 0 + br label %logic.rend7412 +logic.rend7412: + br label %logic.end7411 +logic.end7411: + %t215 = phi i1 [ true, %logic.from7409 ], [ %t214, %logic.rend7412 ] + br label %logic.from7413 +logic.from7413: + br i1 %t215, label %logic.end7415, label %logic.rhs7414 +logic.rhs7414: + %t216 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 + %t217 = getelementptr inbounds %S.ast.Type, ptr %t216, i32 0, i32 0 + %t218 = load { ptr, i64, i64 }, ptr %t217 + store { ptr, i64, i64 } %t218, ptr %a219 + store { ptr, i64, i64 } { ptr @.str.4727, i64 6, i64 0 }, ptr %a220 + %t221 = call i32 @finch_str_eq(ptr %a219, ptr %a220) + %t222 = icmp ne i32 %t221, 0 + br label %logic.from7416 +logic.from7416: + br i1 %t222, label %logic.rhs7417, label %logic.end7418 +logic.rhs7417: + %t223 = load ptr, ptr %a1 + %t224 = icmp eq ptr %t223, null + br i1 %t224, label %panic7419, label %ok7420 +panic7419: + call void @finch_panic(ptr @.str.4728, i64 4313, ptr @.str.4729) unreachable -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.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 %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.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.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 - %t250 = load %S.ast.Type, ptr %t249 - %t251 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t250) - store { ptr, i64, i64 } %t248, ptr %a253 - store { ptr, i64, i64 } %t251, ptr %a254 +ok7420: + %t225 = getelementptr inbounds %S.gen.Gen, ptr %t223, i32 0, i32 16 + %t226 = load ptr, ptr %a1 + %t227 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 + %t228 = getelementptr inbounds %S.ast.Type, ptr %t227, i32 0, i32 3 + %t229 = load { ptr, i64, i64 }, ptr %t228 + %t230 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 + %t231 = getelementptr inbounds %S.ast.Type, ptr %t230, i32 0, i32 2 + %t232 = load { ptr, i64, i64 }, ptr %t231 + %t233 = call i64 @finch.gen.findStruct(ptr %t226, { ptr, i64, i64 } %t229, { ptr, i64, i64 } %t232) + %t234 = load { ptr, i64, i64 }, ptr %t225 + %t235 = extractvalue { ptr, i64, i64 } %t234, 1 + %t236 = icmp uge i64 %t233, %t235 + br i1 %t236, label %range7421, label %inrange7422 +range7421: + call void @finch_panic_index(ptr @.str.4730, i64 4313, i64 %t233, i64 %t235) + unreachable +inrange7422: + %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 2 + %t240 = load i1, ptr %t239 + br label %logic.rend7423 +logic.rend7423: + br label %logic.end7418 +logic.end7418: + %t241 = phi i1 [ false, %logic.from7416 ], [ %t240, %logic.rend7423 ] + br label %logic.rend7424 +logic.rend7424: + br label %logic.end7415 +logic.end7415: + %t242 = phi i1 [ true, %logic.from7413 ], [ %t241, %logic.rend7424 ] + %t243 = xor i1 %t242, true + br i1 %t243, label %then7425, label %endif7427 +then7425: + %t244 = load ptr, ptr %a1 + %t245 = load %S.ast.Node, ptr %a3 + %t246 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 1 + %t247 = load { ptr, i64, i64 }, ptr %t246 + store { ptr, i64, i64 } { ptr @.str.4731, i64 5, i64 0 }, ptr %a249 + store { ptr, i64, i64 } %t247, ptr %a250 + 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.4732, i64 38, i64 0 }, ptr %a254 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 %endif7052 -endif7052: - %t256 = load ptr, ptr %a1 + store { ptr, i64, i64 } %t251, ptr %a255 + call void @finch_str_drop(ptr %a255) + %t256 = load { ptr, i64, i64 }, ptr %a252 %t257 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 %t258 = load %S.ast.Type, ptr %t257 - %t259 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 13 - %t260 = load { ptr, i64, i64 }, ptr %t259 - %t261 = call %S.gen.Plan @finch.gen.makePlan(ptr %t256, %S.ast.Type %t258, { ptr, i64, i64 } %t260) - store %S.gen.Plan %t261, ptr %a262 - %t263 = load ptr, ptr %a1 - %t264 = call %S.gen.Saved @finch.gen.beginHelper(ptr %t263) - 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.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 %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.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.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 - %t285 = add i64 %t284, 1 - call void @finch_arr_reserve(ptr %a266, i64 %t285, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t286 = load ptr, ptr %a266 - %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.4563, i64 3, i64 0 }, ptr %a268 - store i64 1, ptr %a267 - 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.cond7056 -for.cond7056: - %t293 = load i64, ptr %a292 - %t294 = icmp slt i64 %t293, %t291 - 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 %range7060, label %inrange7061 -range7060: - call void @finch_panic_index(ptr @.str.4564, i64 4041, i64 %t296, i64 %t298) + %t259 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t258) + store { ptr, i64, i64 } %t256, ptr %a261 + store { ptr, i64, i64 } %t259, ptr %a262 + call void @finch_str_concat(ptr %a260, ptr %a261, ptr %a262) + store { ptr, i64, i64 } %t256, ptr %a263 + call void @finch_str_drop(ptr %a263) + store { ptr, i64, i64 } %t259, ptr %a264 + call void @finch_str_drop(ptr %a264) + %t265 = load { ptr, i64, i64 }, ptr %a260 + call void @finch.gen.fail(ptr %t244, %S.ast.Node %t245, { ptr, i64, i64 } %t265) + store { ptr, i64, i64 } %t265, ptr %a266 + call void @finch_str_drop(ptr %a266) + br label %endif7427 +endif7427: + %t267 = load ptr, ptr %a1 + %t268 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 + %t269 = load %S.ast.Type, ptr %t268 + %t270 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 13 + %t271 = load { ptr, i64, i64 }, ptr %t270 + %t272 = call %S.gen.Plan @finch.gen.makePlan(ptr %t267, %S.ast.Type %t269, { ptr, i64, i64 } %t271) + store %S.gen.Plan %t272, ptr %a273 + %t274 = load ptr, ptr %a1 + %t275 = call %S.gen.Saved @finch.gen.beginHelper(ptr %t274) + store %S.gen.Saved %t275, ptr %a276 + store { ptr, i64, i64 } zeroinitializer, ptr %a277 + store i64 0, ptr %a278 + store { ptr, i64, i64 } { ptr @.str.4733, i64 0, i64 0 }, ptr %a279 + %t280 = getelementptr inbounds %S.gen.Plan, ptr %a273, i32 0, i32 3 + %t281 = load i1, ptr %t280 + br i1 %t281, label %then7428, label %endif7430 +then7428: + %t282 = getelementptr inbounds { ptr, i64, i64 }, ptr %a277, i32 0, i32 1 + %t283 = load ptr, ptr %a1 + %t284 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 + %t285 = load %S.ast.Type, ptr %t284 + %t286 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t283, %S.ast.Type %t285) + store { ptr, i64, i64 } { ptr @.str.4734, i64 9, i64 0 }, ptr %a288 + store { ptr, i64, i64 } %t286, ptr %a289 + call void @finch_str_concat(ptr %a287, ptr %a288, ptr %a289) + store { ptr, i64, i64 } %t286, ptr %a290 + call void @finch_str_drop(ptr %a290) + %t291 = load { ptr, i64, i64 }, ptr %a287 + store { ptr, i64, i64 } %t291, ptr %a293 + store { ptr, i64, i64 } { ptr @.str.4735, i64 14, i64 0 }, ptr %a294 + call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) + store { ptr, i64, i64 } %t291, ptr %a295 + call void @finch_str_drop(ptr %a295) + %t296 = load { ptr, i64, i64 }, ptr %a292 + %t297 = load i64, ptr %t282 + %t298 = add i64 %t297, 1 + call void @finch_arr_reserve(ptr %a277, i64 %t298, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t299 = load ptr, ptr %a277 + %t300 = getelementptr inbounds { ptr, i64, i64 }, ptr %t299, i64 %t297 + store { ptr, i64, i64 } %t296, ptr %t300 + store i64 %t298, ptr %t282 + %t301 = load { ptr, i64, i64 }, ptr %a279 + store { ptr, i64, i64 } { ptr @.str.4736, i64 3, i64 0 }, ptr %a279 + store { ptr, i64, i64 } %t301, ptr %a302 + call void @finch_str_drop(ptr %a302) + store i64 1, ptr %a278 + br label %endif7430 +endif7430: + store { ptr, i64, i64 } zeroinitializer, ptr %a303 + %t304 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 13 + %t305 = getelementptr inbounds { ptr, i64, i64 }, ptr %t304, i32 0, i32 1 + %t306 = load i64, ptr %t305 + store i64 0, ptr %a307 + br label %for.cond7431 +for.cond7431: + %t308 = load i64, ptr %a307 + %t309 = icmp slt i64 %t308, %t306 + br i1 %t309, label %for.body7432, label %for.end7434 +for.body7432: + %t310 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 13 + %t311 = load i64, ptr %a307 + %t312 = load { ptr, i64, i64 }, ptr %t310 + %t313 = extractvalue { ptr, i64, i64 } %t312, 1 + %t314 = icmp uge i64 %t311, %t313 + br i1 %t314, label %range7435, label %inrange7436 +range7435: + call void @finch_panic_index(ptr @.str.4737, i64 4328, i64 %t311, i64 %t313) unreachable -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 - 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 - store %S.ast.Type %t305, ptr %a306 - %t307 = getelementptr inbounds %S.gen.Plan, ptr %a262, i32 0, i32 1 - %t308 = load i64, ptr %a292 - %t309 = load { ptr, i64, i64 }, ptr %t307 - %t310 = extractvalue { ptr, i64, i64 } %t309, 1 - %t311 = icmp uge i64 %t308, %t310 - br i1 %t311, label %range7062, label %inrange7063 -range7062: - call void @finch_panic_index(ptr @.str.4565, i64 4042, i64 %t308, i64 %t310) +inrange7436: + %t315 = extractvalue { ptr, i64, i64 } %t312, 0 + %t316 = getelementptr inbounds %S.ast.Type, ptr %t315, i64 %t311 + %t317 = load %S.ast.Type, ptr %t316 + store %S.ast.Type %t317, ptr %a318 + call void @finch.copy.S_ast_Type(ptr %a319, ptr %a318) + %t320 = load %S.ast.Type, ptr %a319 + store %S.ast.Type %t320, ptr %a321 + %t322 = getelementptr inbounds %S.gen.Plan, ptr %a273, i32 0, i32 1 + %t323 = load i64, ptr %a307 + %t324 = load { ptr, i64, i64 }, ptr %t322 + %t325 = extractvalue { ptr, i64, i64 } %t324, 1 + %t326 = icmp uge i64 %t323, %t325 + br i1 %t326, label %range7437, label %inrange7438 +range7437: + call void @finch_panic_index(ptr @.str.4738, i64 4329, i64 %t323, i64 %t325) unreachable -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 - store %S.gen.Abi %t314, ptr %a315 - call void @finch.copy.S_gen_Abi(ptr %a316, ptr %a315) - %t317 = load %S.gen.Abi, ptr %a316 - store %S.gen.Abi %t317, ptr %a318 - %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.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 %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.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.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 - %t338 = load i64, ptr %t337 - call void @finch_str_from_int(ptr %a339, i64 %t338) - %t340 = load { ptr, i64, i64 }, ptr %a339 - store { ptr, i64, i64 } %t336, 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.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 - call void @finch_str_from_int(ptr %a350, i64 %t349) - %t351 = load { ptr, i64, i64 }, ptr %a350 - store { ptr, i64, i64 } %t348, ptr %a353 - store { ptr, i64, i64 } %t351, ptr %a354 - call void @finch_str_concat(ptr %a352, ptr %a353, ptr %a354) - %t355 = load { ptr, i64, i64 }, ptr %a352 - %t356 = load i64, ptr %t325 - %t357 = add i64 %t356, 1 - call void @finch_arr_reserve(ptr %a266, i64 %t357, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t358 = load ptr, ptr %a266 - %t359 = getelementptr inbounds { ptr, i64, i64 }, ptr %t358, i64 %t356 - store { ptr, i64, i64 } %t355, ptr %t359 - store i64 %t357, ptr %t325 - %t360 = getelementptr inbounds { ptr, i64, i64 }, ptr %a288, i32 0, i32 1 - %t361 = load ptr, ptr %a1 - %t362 = load %S.ast.Type, ptr %a306 - %t363 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t361, %S.ast.Type %t362) +inrange7438: + %t327 = extractvalue { ptr, i64, i64 } %t324, 0 + %t328 = getelementptr inbounds %S.gen.Abi, ptr %t327, i64 %t323 + %t329 = load %S.gen.Abi, ptr %t328 + store %S.gen.Abi %t329, ptr %a330 + call void @finch.copy.S_gen_Abi(ptr %a331, ptr %a330) + %t332 = load %S.gen.Abi, ptr %a331 + store %S.gen.Abi %t332, ptr %a333 + %t334 = getelementptr inbounds %S.gen.Abi, ptr %a333, i32 0, i32 0 + %t335 = load { ptr, i64, i64 }, ptr %t334 + store { ptr, i64, i64 } %t335, ptr %a336 + store { ptr, i64, i64 } { ptr @.str.4739, i64 6, i64 0 }, ptr %a337 + %t338 = call i32 @finch_str_eq(ptr %a336, ptr %a337) + %t339 = icmp ne i32 %t338, 0 + br i1 %t339, label %then7439, label %else7440 +then7439: + %t340 = getelementptr inbounds { ptr, i64, i64 }, ptr %a277, i32 0, i32 1 + %t341 = load ptr, ptr %a1 + %t342 = load %S.ast.Type, ptr %a321 + %t343 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t341, %S.ast.Type %t342) + store { ptr, i64, i64 } { ptr @.str.4740, i64 10, i64 0 }, ptr %a345 + store { ptr, i64, i64 } %t343, ptr %a346 + call void @finch_str_concat(ptr %a344, ptr %a345, ptr %a346) + store { ptr, i64, i64 } %t343, ptr %a347 + call void @finch_str_drop(ptr %a347) + %t348 = load { ptr, i64, i64 }, ptr %a344 + store { ptr, i64, i64 } %t348, ptr %a350 + store { ptr, i64, i64 } { ptr @.str.4741, i64 8, i64 0 }, ptr %a351 + call void @finch_str_concat(ptr %a349, ptr %a350, ptr %a351) + store { ptr, i64, i64 } %t348, ptr %a352 + call void @finch_str_drop(ptr %a352) + %t353 = load { ptr, i64, i64 }, ptr %a349 + %t354 = getelementptr inbounds %S.gen.Abi, ptr %a333, i32 0, i32 3 + %t355 = load i64, ptr %t354 + call void @finch_str_from_int(ptr %a356, i64 %t355) + %t357 = load { ptr, i64, i64 }, ptr %a356 + store { ptr, i64, i64 } %t353, ptr %a359 + store { ptr, i64, i64 } %t357, ptr %a360 + call void @finch_str_concat(ptr %a358, ptr %a359, ptr %a360) + store { ptr, i64, i64 } %t353, ptr %a361 + call void @finch_str_drop(ptr %a361) + store { ptr, i64, i64 } %t357, ptr %a362 + call void @finch_str_drop(ptr %a362) + %t363 = load { ptr, i64, i64 }, ptr %a358 store { ptr, i64, i64 } %t363, ptr %a365 - store { ptr, i64, i64 } { ptr @.str.4570, i64 1, i64 0 }, ptr %a366 + store { ptr, i64, i64 } { ptr @.str.4742, i64 3, 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 - %t369 = load ptr, ptr %a1 - %t370 = load %S.ast.Type, ptr %a306 - %t371 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t369, %S.ast.Type %t370) - %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.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 - %t379 = call { ptr, i64, i64 } @finch.gen.load(ptr %t368, { ptr, i64, i64 } %t371, { ptr, i64, i64 } %t378) - store { ptr, i64, i64 } %t367, ptr %a381 - store { ptr, i64, i64 } %t379, ptr %a382 - call void @finch_str_concat(ptr %a380, ptr %a381, ptr %a382) - %t383 = load { ptr, i64, i64 }, ptr %a380 - %t384 = load i64, ptr %t360 - %t385 = add i64 %t384, 1 - call void @finch_arr_reserve(ptr %a288, i64 %t385, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t386 = load ptr, ptr %a288 - %t387 = getelementptr inbounds { ptr, i64, i64 }, ptr %t386, i64 %t384 - store { ptr, i64, i64 } %t383, ptr %t387 - store i64 %t385, ptr %t360 - %t388 = load i64, ptr %a267 - %t389 = add i64 %t388, 1 - store i64 %t389, ptr %a267 - 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.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 %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.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 - %t404 = load i64, ptr %t396 - %t405 = add i64 %t404, 1 - call void @finch_arr_reserve(ptr %a266, i64 %t405, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t406 = load ptr, ptr %a266 - %t407 = getelementptr inbounds { ptr, i64, i64 }, ptr %t406, i64 %t404 - store { ptr, i64, i64 } %t403, ptr %t407 - store i64 %t405, ptr %t396 - %t408 = getelementptr inbounds { ptr, i64, i64 }, ptr %a288, i32 0, i32 1 - %t409 = load ptr, ptr %a1 - %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.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 - %t417 = load ptr, ptr %a1 - %t418 = load %S.ast.Type, ptr %a306 - %t419 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t417, %S.ast.Type %t418) - %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.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 - %t427 = call { ptr, i64, i64 } @finch.gen.load(ptr %t416, { ptr, i64, i64 } %t419, { ptr, i64, i64 } %t426) - store { ptr, i64, i64 } %t415, ptr %a429 + store { ptr, i64, i64 } %t363, ptr %a367 + call void @finch_str_drop(ptr %a367) + %t368 = load { ptr, i64, i64 }, ptr %a364 + %t369 = load i64, ptr %a278 + call void @finch_str_from_int(ptr %a370, i64 %t369) + %t371 = load { ptr, i64, i64 }, ptr %a370 + store { ptr, i64, i64 } %t368, ptr %a373 + store { ptr, i64, i64 } %t371, ptr %a374 + call void @finch_str_concat(ptr %a372, ptr %a373, ptr %a374) + store { ptr, i64, i64 } %t368, ptr %a375 + call void @finch_str_drop(ptr %a375) + store { ptr, i64, i64 } %t371, ptr %a376 + call void @finch_str_drop(ptr %a376) + %t377 = load { ptr, i64, i64 }, ptr %a372 + %t378 = load i64, ptr %t340 + %t379 = add i64 %t378, 1 + call void @finch_arr_reserve(ptr %a277, i64 %t379, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t380 = load ptr, ptr %a277 + %t381 = getelementptr inbounds { ptr, i64, i64 }, ptr %t380, i64 %t378 + store { ptr, i64, i64 } %t377, ptr %t381 + store i64 %t379, ptr %t340 + %t382 = getelementptr inbounds { ptr, i64, i64 }, ptr %a303, i32 0, i32 1 + %t383 = load ptr, ptr %a1 + %t384 = load %S.ast.Type, ptr %a321 + %t385 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t383, %S.ast.Type %t384) + store { ptr, i64, i64 } %t385, ptr %a387 + store { ptr, i64, i64 } { ptr @.str.4743, i64 1, i64 0 }, ptr %a388 + call void @finch_str_concat(ptr %a386, ptr %a387, ptr %a388) + store { ptr, i64, i64 } %t385, ptr %a389 + call void @finch_str_drop(ptr %a389) + %t390 = load { ptr, i64, i64 }, ptr %a386 + %t391 = load ptr, ptr %a1 + %t392 = load ptr, ptr %a1 + %t393 = load %S.ast.Type, ptr %a321 + %t394 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t392, %S.ast.Type %t393) + %t395 = load i64, ptr %a278 + call void @finch_str_from_int(ptr %a396, i64 %t395) + %t397 = load { ptr, i64, i64 }, ptr %a396 + store { ptr, i64, i64 } { ptr @.str.4744, i64 2, i64 0 }, ptr %a399 + store { ptr, i64, i64 } %t397, ptr %a400 + call void @finch_str_concat(ptr %a398, ptr %a399, ptr %a400) + store { ptr, i64, i64 } %t397, ptr %a401 + call void @finch_str_drop(ptr %a401) + %t402 = load { ptr, i64, i64 }, ptr %a398 + %t403 = call { ptr, i64, i64 } @finch.gen.load(ptr %t391, { ptr, i64, i64 } %t394, { ptr, i64, i64 } %t402) + store { ptr, i64, i64 } %t394, ptr %a404 + call void @finch_str_drop(ptr %a404) + store { ptr, i64, i64 } %t402, ptr %a405 + call void @finch_str_drop(ptr %a405) + store { ptr, i64, i64 } %t390, ptr %a407 + store { ptr, i64, i64 } %t403, ptr %a408 + call void @finch_str_concat(ptr %a406, ptr %a407, ptr %a408) + store { ptr, i64, i64 } %t390, ptr %a409 + call void @finch_str_drop(ptr %a409) + store { ptr, i64, i64 } %t403, ptr %a410 + call void @finch_str_drop(ptr %a410) + %t411 = load { ptr, i64, i64 }, ptr %a406 + %t412 = load i64, ptr %t382 + %t413 = add i64 %t412, 1 + call void @finch_arr_reserve(ptr %a303, i64 %t413, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t414 = load ptr, ptr %a303 + %t415 = getelementptr inbounds { ptr, i64, i64 }, ptr %t414, i64 %t412 + store { ptr, i64, i64 } %t411, ptr %t415 + store i64 %t413, ptr %t382 + %t416 = load i64, ptr %a278 + %t417 = add i64 %t416, 1 + store i64 %t417, ptr %a278 + br label %endif7441 +else7440: + %t418 = getelementptr inbounds %S.gen.Abi, ptr %a333, i32 0, i32 0 + %t419 = load { ptr, i64, i64 }, ptr %t418 + store { ptr, i64, i64 } %t419, ptr %a420 + store { ptr, i64, i64 } { ptr @.str.4745, i64 8, i64 0 }, ptr %a421 + %t422 = call i32 @finch_str_eq(ptr %a420, ptr %a421) + %t423 = icmp ne i32 %t422, 0 + br i1 %t423, label %then7442, label %else7443 +then7442: + %t424 = getelementptr inbounds { ptr, i64, i64 }, ptr %a277, i32 0, i32 1 + %t425 = load i64, ptr %a278 + call void @finch_str_from_int(ptr %a426, i64 %t425) + %t427 = load { ptr, i64, i64 }, ptr %a426 + store { ptr, i64, i64 } { ptr @.str.4746, i64 6, 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 - %t432 = load i64, ptr %t408 - %t433 = add i64 %t432, 1 - call void @finch_arr_reserve(ptr %a288, i64 %t433, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t434 = load ptr, ptr %a288 - %t435 = getelementptr inbounds { ptr, i64, i64 }, ptr %t434, i64 %t432 - store { ptr, i64, i64 } %t431, ptr %t435 - store i64 %t433, ptr %t408 - %t436 = load i64, ptr %a267 - %t437 = add i64 %t436, 1 - store i64 %t437, ptr %a267 - 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.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 %then7070, label %else7071 -then7070: - %t444 = load ptr, ptr %a1 - %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.cond7073 -for.cond7073: - %t451 = load i64, ptr %a450 - %t452 = icmp slt i64 %t451, %t449 - 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 %range7077, label %inrange7078 -range7077: - call void @finch_panic_index(ptr @.str.4578, i64 4054, i64 %t455, i64 %t457) + store { ptr, i64, i64 } %t427, ptr %a431 + call void @finch_str_drop(ptr %a431) + %t432 = load { ptr, i64, i64 }, ptr %a428 + %t433 = load i64, ptr %t424 + %t434 = add i64 %t433, 1 + call void @finch_arr_reserve(ptr %a277, i64 %t434, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t435 = load ptr, ptr %a277 + %t436 = getelementptr inbounds { ptr, i64, i64 }, ptr %t435, i64 %t433 + store { ptr, i64, i64 } %t432, ptr %t436 + store i64 %t434, ptr %t424 + %t437 = getelementptr inbounds { ptr, i64, i64 }, ptr %a303, i32 0, i32 1 + %t438 = load ptr, ptr %a1 + %t439 = load %S.ast.Type, ptr %a321 + %t440 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t438, %S.ast.Type %t439) + store { ptr, i64, i64 } %t440, ptr %a442 + store { ptr, i64, i64 } { ptr @.str.4747, i64 1, i64 0 }, ptr %a443 + call void @finch_str_concat(ptr %a441, ptr %a442, ptr %a443) + store { ptr, i64, i64 } %t440, ptr %a444 + call void @finch_str_drop(ptr %a444) + %t445 = load { ptr, i64, i64 }, ptr %a441 + %t446 = load ptr, ptr %a1 + %t447 = load ptr, ptr %a1 + %t448 = load %S.ast.Type, ptr %a321 + %t449 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t447, %S.ast.Type %t448) + %t450 = load i64, ptr %a278 + call void @finch_str_from_int(ptr %a451, i64 %t450) + %t452 = load { ptr, i64, i64 }, ptr %a451 + store { ptr, i64, i64 } { ptr @.str.4748, i64 2, i64 0 }, ptr %a454 + store { ptr, i64, i64 } %t452, ptr %a455 + call void @finch_str_concat(ptr %a453, ptr %a454, ptr %a455) + store { ptr, i64, i64 } %t452, ptr %a456 + call void @finch_str_drop(ptr %a456) + %t457 = load { ptr, i64, i64 }, ptr %a453 + %t458 = call { ptr, i64, i64 } @finch.gen.load(ptr %t446, { ptr, i64, i64 } %t449, { ptr, i64, i64 } %t457) + store { ptr, i64, i64 } %t449, ptr %a459 + call void @finch_str_drop(ptr %a459) + store { ptr, i64, i64 } %t457, ptr %a460 + call void @finch_str_drop(ptr %a460) + store { ptr, i64, i64 } %t445, ptr %a462 + store { ptr, i64, i64 } %t458, ptr %a463 + call void @finch_str_concat(ptr %a461, ptr %a462, ptr %a463) + store { ptr, i64, i64 } %t445, ptr %a464 + call void @finch_str_drop(ptr %a464) + store { ptr, i64, i64 } %t458, ptr %a465 + call void @finch_str_drop(ptr %a465) + %t466 = load { ptr, i64, i64 }, ptr %a461 + %t467 = load i64, ptr %t437 + %t468 = add i64 %t467, 1 + call void @finch_arr_reserve(ptr %a303, i64 %t468, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t469 = load ptr, ptr %a303 + %t470 = getelementptr inbounds { ptr, i64, i64 }, ptr %t469, i64 %t467 + store { ptr, i64, i64 } %t466, ptr %t470 + store i64 %t468, ptr %t437 + %t471 = load i64, ptr %a278 + %t472 = add i64 %t471, 1 + store i64 %t472, ptr %a278 + br label %endif7444 +else7443: + %t473 = getelementptr inbounds %S.gen.Abi, ptr %a333, i32 0, i32 0 + %t474 = load { ptr, i64, i64 }, ptr %t473 + store { ptr, i64, i64 } %t474, ptr %a475 + store { ptr, i64, i64 } { ptr @.str.4749, i64 6, i64 0 }, ptr %a476 + %t477 = call i32 @finch_str_eq(ptr %a475, ptr %a476) + %t478 = icmp ne i32 %t477, 0 + br i1 %t478, label %then7445, label %else7446 +then7445: + %t479 = load ptr, ptr %a1 + %t480 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t479, { ptr, i64, i64 } { ptr @.str.4750, i64 9, i64 0 }) + store { ptr, i64, i64 } %t480, ptr %a481 + %t482 = getelementptr inbounds %S.gen.Abi, ptr %a333, i32 0, i32 1 + %t483 = getelementptr inbounds { ptr, i64, i64 }, ptr %t482, i32 0, i32 1 + %t484 = load i64, ptr %t483 + store i64 0, ptr %a485 + br label %for.cond7448 +for.cond7448: + %t486 = load i64, ptr %a485 + %t487 = icmp slt i64 %t486, %t484 + br i1 %t487, label %for.body7449, label %for.end7451 +for.body7449: + %t488 = getelementptr inbounds { ptr, i64, i64 }, ptr %a277, i32 0, i32 1 + %t489 = getelementptr inbounds %S.gen.Abi, ptr %a333, i32 0, i32 1 + %t490 = load i64, ptr %a485 + %t491 = load { ptr, i64, i64 }, ptr %t489 + %t492 = extractvalue { ptr, i64, i64 } %t491, 1 + %t493 = icmp uge i64 %t490, %t492 + br i1 %t493, label %range7452, label %inrange7453 +range7452: + call void @finch_panic_index(ptr @.str.4751, i64 4341, i64 %t490, i64 %t492) unreachable -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.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 - call void @finch_str_from_int(ptr %a467, i64 %t466) - %t468 = load { ptr, i64, i64 }, ptr %a467 - store { ptr, i64, i64 } %t465, 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 - %t473 = load i64, ptr %t453 - %t474 = add i64 %t473, 1 - call void @finch_arr_reserve(ptr %a266, i64 %t474, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t475 = load ptr, ptr %a266 - %t476 = getelementptr inbounds { ptr, i64, i64 }, ptr %t475, i64 %t473 - store { ptr, i64, i64 } %t472, ptr %t476 - store i64 %t474, ptr %t453 - %t477 = load ptr, ptr %a1 - %t478 = getelementptr inbounds %S.gen.Abi, ptr %a318, i32 0, i32 1 - %t479 = load i64, ptr %a450 - %t480 = load { ptr, i64, i64 }, ptr %t478 - %t481 = extractvalue { ptr, i64, i64 } %t480, 1 - %t482 = icmp uge i64 %t479, %t481 - br i1 %t482, label %range7079, label %inrange7080 -range7079: - call void @finch_panic_index(ptr @.str.4580, i64 4055, i64 %t479, i64 %t481) +inrange7453: + %t494 = extractvalue { ptr, i64, i64 } %t491, 0 + %t495 = getelementptr inbounds { ptr, i64, i64 }, ptr %t494, i64 %t490 + %t496 = load { ptr, i64, i64 }, ptr %t495 + store { ptr, i64, i64 } %t496, ptr %a498 + store { ptr, i64, i64 } { ptr @.str.4752, i64 3, i64 0 }, ptr %a499 + call void @finch_str_concat(ptr %a497, ptr %a498, ptr %a499) + %t500 = load { ptr, i64, i64 }, ptr %a497 + %t501 = load i64, ptr %a278 + call void @finch_str_from_int(ptr %a502, i64 %t501) + %t503 = load { ptr, i64, i64 }, ptr %a502 + store { ptr, i64, i64 } %t500, ptr %a505 + store { ptr, i64, i64 } %t503, ptr %a506 + call void @finch_str_concat(ptr %a504, ptr %a505, ptr %a506) + store { ptr, i64, i64 } %t500, ptr %a507 + call void @finch_str_drop(ptr %a507) + store { ptr, i64, i64 } %t503, ptr %a508 + call void @finch_str_drop(ptr %a508) + %t509 = load { ptr, i64, i64 }, ptr %a504 + %t510 = load i64, ptr %t488 + %t511 = add i64 %t510, 1 + call void @finch_arr_reserve(ptr %a277, i64 %t511, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t512 = load ptr, ptr %a277 + %t513 = getelementptr inbounds { ptr, i64, i64 }, ptr %t512, i64 %t510 + store { ptr, i64, i64 } %t509, ptr %t513 + store i64 %t511, ptr %t488 + %t514 = load ptr, ptr %a1 + %t515 = getelementptr inbounds %S.gen.Abi, ptr %a333, i32 0, i32 1 + %t516 = load i64, ptr %a485 + %t517 = load { ptr, i64, i64 }, ptr %t515 + %t518 = extractvalue { ptr, i64, i64 } %t517, 1 + %t519 = icmp uge i64 %t516, %t518 + br i1 %t519, label %range7454, label %inrange7455 +range7454: + call void @finch_panic_index(ptr @.str.4753, i64 4342, i64 %t516, i64 %t518) unreachable -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.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.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.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 - %t504 = mul i64 8, %t503 - call void @finch_str_from_int(ptr %a505, i64 %t504) - %t506 = load { ptr, i64, i64 }, ptr %a505 - store { ptr, i64, i64 } %t502, ptr %a508 - store { ptr, i64, i64 } %t506, ptr %a509 - call void @finch_str_concat(ptr %a507, ptr %a508, ptr %a509) - %t510 = load { ptr, i64, i64 }, ptr %a507 - %t511 = call { ptr, i64, i64 } @finch.gen.op(ptr %t493, { ptr, i64, i64 } %t510) - call void @finch.gen.store(ptr %t477, { ptr, i64, i64 } %t485, { ptr, i64, i64 } %t492, { ptr, i64, i64 } %t511) - %t512 = load i64, ptr %a267 - %t513 = add i64 %t512, 1 - store i64 %t513, ptr %a267 - br label %for.step7075 -for.step7075: - %t514 = load i64, ptr %a450 - %t515 = add i64 %t514, 1 - store i64 %t515, ptr %a450 - 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.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 - %t525 = load ptr, ptr %a1 - %t526 = load %S.ast.Type, ptr %a306 - %t527 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t525, %S.ast.Type %t526) - %t528 = load { ptr, i64, i64 }, ptr %a446 - %t529 = call { ptr, i64, i64 } @finch.gen.load(ptr %t524, { ptr, i64, i64 } %t527, { ptr, i64, i64 } %t528) - store { ptr, i64, i64 } %t523, 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 - %t534 = load i64, ptr %t516 - %t535 = add i64 %t534, 1 - call void @finch_arr_reserve(ptr %a288, i64 %t535, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t536 = load ptr, ptr %a288 - %t537 = getelementptr inbounds { ptr, i64, i64 }, ptr %t536, i64 %t534 - store { ptr, i64, i64 } %t533, ptr %t537 - store i64 %t535, ptr %t516 - 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 - %t541 = call { ptr, i64, i64 } @finch.gen.cLL(ptr %t539, %S.ast.Type %t540) - %t542 = load ptr, ptr %a1 - %t543 = load %S.ast.Type, ptr %a306 - %t544 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t542, %S.ast.Type %t543) - store { ptr, i64, i64 } %t541, 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.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 - call void @finch_str_from_int(ptr %a554, i64 %t553) - %t555 = load { ptr, i64, i64 }, ptr %a554 - store { ptr, i64, i64 } %t552, 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 %t538 - %t561 = add i64 %t560, 1 - call void @finch_arr_reserve(ptr %a266, i64 %t561, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t562 = load ptr, ptr %a266 - %t563 = getelementptr inbounds { ptr, i64, i64 }, ptr %t562, i64 %t560 - store { ptr, i64, i64 } %t559, ptr %t563 - store i64 %t561, ptr %t538 - %t564 = getelementptr inbounds { ptr, i64, i64 }, ptr %a288, i32 0, i32 1 - %t565 = load ptr, ptr %a1 - %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.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 - call void @finch_str_from_int(ptr %a573, i64 %t572) - %t574 = load { ptr, i64, i64 }, ptr %a573 - store { ptr, i64, i64 } %t571, ptr %a576 - store { ptr, i64, i64 } %t574, ptr %a577 - call void @finch_str_concat(ptr %a575, ptr %a576, ptr %a577) - %t578 = load { ptr, i64, i64 }, ptr %a575 - %t579 = load i64, ptr %t564 - %t580 = add i64 %t579, 1 - call void @finch_arr_reserve(ptr %a288, i64 %t580, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t581 = load ptr, ptr %a288 - %t582 = getelementptr inbounds { ptr, i64, i64 }, ptr %t581, i64 %t579 - store { ptr, i64, i64 } %t578, ptr %t582 - store i64 %t580, ptr %t564 - %t583 = load i64, ptr %a267 - %t584 = add i64 %t583, 1 - store i64 %t584, ptr %a267 - 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.cond7056 -for.end7059: +inrange7455: + %t520 = extractvalue { ptr, i64, i64 } %t517, 0 + %t521 = getelementptr inbounds { ptr, i64, i64 }, ptr %t520, i64 %t516 + %t522 = load { ptr, i64, i64 }, ptr %t521 + %t523 = load i64, ptr %a278 + call void @finch_str_from_int(ptr %a524, i64 %t523) + %t525 = load { ptr, i64, i64 }, ptr %a524 + store { ptr, i64, i64 } { ptr @.str.4754, i64 2, i64 0 }, ptr %a527 + store { ptr, i64, i64 } %t525, ptr %a528 + call void @finch_str_concat(ptr %a526, ptr %a527, ptr %a528) + store { ptr, i64, i64 } %t525, ptr %a529 + call void @finch_str_drop(ptr %a529) + %t530 = load { ptr, i64, i64 }, ptr %a526 + %t531 = load ptr, ptr %a1 + %t532 = load { ptr, i64, i64 }, ptr %a481 + store { ptr, i64, i64 } { ptr @.str.4755, i64 31, 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 + store { ptr, i64, i64 } { ptr @.str.4756, i64 6, i64 0 }, ptr %a539 + call void @finch_str_concat(ptr %a537, ptr %a538, ptr %a539) + store { ptr, i64, i64 } %t536, ptr %a540 + call void @finch_str_drop(ptr %a540) + %t541 = load { ptr, i64, i64 }, ptr %a537 + %t542 = load i64, ptr %a485 + %t543 = mul i64 8, %t542 + call void @finch_str_from_int(ptr %a544, i64 %t543) + %t545 = load { ptr, i64, i64 }, ptr %a544 + store { ptr, i64, i64 } %t541, ptr %a547 + store { ptr, i64, i64 } %t545, ptr %a548 + call void @finch_str_concat(ptr %a546, ptr %a547, ptr %a548) + store { ptr, i64, i64 } %t541, ptr %a549 + call void @finch_str_drop(ptr %a549) + store { ptr, i64, i64 } %t545, ptr %a550 + call void @finch_str_drop(ptr %a550) + %t551 = load { ptr, i64, i64 }, ptr %a546 + %t552 = call { ptr, i64, i64 } @finch.gen.op(ptr %t531, { ptr, i64, i64 } %t551) + store { ptr, i64, i64 } %t551, ptr %a553 + call void @finch_str_drop(ptr %a553) + call void @finch.gen.store(ptr %t514, { ptr, i64, i64 } %t522, { ptr, i64, i64 } %t530, { ptr, i64, i64 } %t552) + store { ptr, i64, i64 } %t530, ptr %a554 + call void @finch_str_drop(ptr %a554) + store { ptr, i64, i64 } %t552, ptr %a555 + call void @finch_str_drop(ptr %a555) + %t556 = load i64, ptr %a278 + %t557 = add i64 %t556, 1 + store i64 %t557, ptr %a278 + br label %for.step7450 +for.step7450: + %t558 = load i64, ptr %a485 + %t559 = add i64 %t558, 1 + store i64 %t559, ptr %a485 + br label %for.cond7448 +for.end7451: + %t560 = getelementptr inbounds { ptr, i64, i64 }, ptr %a303, i32 0, i32 1 + %t561 = load ptr, ptr %a1 + %t562 = load %S.ast.Type, ptr %a321 + %t563 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t561, %S.ast.Type %t562) + store { ptr, i64, i64 } %t563, ptr %a565 + store { ptr, i64, i64 } { ptr @.str.4757, i64 1, i64 0 }, ptr %a566 + call void @finch_str_concat(ptr %a564, ptr %a565, ptr %a566) + store { ptr, i64, i64 } %t563, ptr %a567 + call void @finch_str_drop(ptr %a567) + %t568 = load { ptr, i64, i64 }, ptr %a564 + %t569 = load ptr, ptr %a1 + %t570 = load ptr, ptr %a1 + %t571 = load %S.ast.Type, ptr %a321 + %t572 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t570, %S.ast.Type %t571) + %t573 = load { ptr, i64, i64 }, ptr %a481 + %t574 = call { ptr, i64, i64 } @finch.gen.load(ptr %t569, { ptr, i64, i64 } %t572, { ptr, i64, i64 } %t573) + store { ptr, i64, i64 } %t572, ptr %a575 + call void @finch_str_drop(ptr %a575) + store { ptr, i64, i64 } %t568, ptr %a577 + store { ptr, i64, i64 } %t574, ptr %a578 + call void @finch_str_concat(ptr %a576, ptr %a577, ptr %a578) + store { ptr, i64, i64 } %t568, ptr %a579 + call void @finch_str_drop(ptr %a579) + store { ptr, i64, i64 } %t574, ptr %a580 + call void @finch_str_drop(ptr %a580) + %t581 = load { ptr, i64, i64 }, ptr %a576 + %t582 = load i64, ptr %t560 + %t583 = add i64 %t582, 1 + call void @finch_arr_reserve(ptr %a303, i64 %t583, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t584 = load ptr, ptr %a303 + %t585 = getelementptr inbounds { ptr, i64, i64 }, ptr %t584, i64 %t582 + store { ptr, i64, i64 } %t581, ptr %t585 + store i64 %t583, ptr %t560 + call void @finch_str_drop(ptr %a481) + br label %endif7447 +else7446: + %t586 = getelementptr inbounds { ptr, i64, i64 }, ptr %a277, i32 0, i32 1 %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.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.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 - %t600 = load { ptr, i64, i64 }, ptr %t599 + %t588 = load %S.ast.Type, ptr %a321 + %t589 = call { ptr, i64, i64 } @finch.gen.cLL(ptr %t587, %S.ast.Type %t588) + %t590 = load ptr, ptr %a1 + %t591 = load %S.ast.Type, ptr %a321 + %t592 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t590, %S.ast.Type %t591) + store { ptr, i64, i64 } %t589, ptr %a594 + store { ptr, i64, i64 } %t592, ptr %a595 + call void @finch_str_concat(ptr %a593, ptr %a594, ptr %a595) + store { ptr, i64, i64 } %t589, ptr %a596 + call void @finch_str_drop(ptr %a596) + store { ptr, i64, i64 } %t592, ptr %a597 + call void @finch_str_drop(ptr %a597) + %t598 = load { ptr, i64, i64 }, ptr %a593 + store { ptr, i64, i64 } %t598, ptr %a600 + store { ptr, i64, i64 } { ptr @.str.4758, i64 3, i64 0 }, ptr %a601 + call void @finch_str_concat(ptr %a599, ptr %a600, ptr %a601) store { ptr, i64, i64 } %t598, 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.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.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 - store { ptr, i64, i64 } %t612, ptr %a615 - 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.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.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.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 %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.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 %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 - %t638 = load %S.ast.Type, ptr %t637 - %t639 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t636, %S.ast.Type %t638) - %t640 = load ptr, ptr %a1 - %t641 = load { ptr, i64, i64 }, ptr %a621 - %t642 = call { ptr, i64, i64 } @finch.gen.op(ptr %t640, { ptr, i64, i64 } %t641) - %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.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.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 %then7087, label %else7088 -then7087: - %t652 = load ptr, ptr %a1 - %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 - %t657 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t658 = load %S.ast.Type, ptr %t657 - %t659 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t656, %S.ast.Type %t658) - %t660 = load ptr, ptr %a1 - %t661 = load { ptr, i64, i64 }, ptr %a621 - %t662 = call { ptr, i64, i64 } @finch.gen.op(ptr %t660, { ptr, i64, i64 } %t661) - %t663 = load { ptr, i64, i64 }, ptr %a654 - call void @finch.gen.store(ptr %t655, { ptr, i64, i64 } %t659, { ptr, i64, i64 } %t662, { ptr, i64, i64 } %t663) - %t664 = load ptr, ptr %a1 - %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.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.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 - %t677 = getelementptr inbounds %S.gen.Plan, ptr %a262, i32 0, i32 0 - %t678 = getelementptr inbounds %S.gen.Abi, ptr %t677, i32 0, i32 2 - %t679 = load { ptr, i64, i64 }, ptr %t678 - %t680 = load { ptr, i64, i64 }, ptr %a654 - %t681 = call { ptr, i64, i64 } @finch.gen.load(ptr %t676, { ptr, i64, i64 } %t679, { ptr, i64, i64 } %t680) - store { ptr, i64, i64 } %t675, 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 - call void @finch.gen.emit(ptr %t664, { ptr, i64, i64 } %t685) - 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 - %t689 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t686, %S.ast.Type %t688) - store { ptr, i64, i64 } %t689, ptr %a622 - %t690 = load ptr, ptr %a1 - %t691 = load ptr, ptr %a1 - %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.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.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 + call void @finch_str_drop(ptr %a602) + %t603 = load { ptr, i64, i64 }, ptr %a599 + %t604 = load i64, ptr %a278 + call void @finch_str_from_int(ptr %a605, i64 %t604) + %t606 = load { ptr, i64, i64 }, ptr %a605 + store { ptr, i64, i64 } %t603, ptr %a608 + store { ptr, i64, i64 } %t606, ptr %a609 + call void @finch_str_concat(ptr %a607, ptr %a608, ptr %a609) + store { ptr, i64, i64 } %t603, ptr %a610 + call void @finch_str_drop(ptr %a610) + store { ptr, i64, i64 } %t606, ptr %a611 + call void @finch_str_drop(ptr %a611) + %t612 = load { ptr, i64, i64 }, ptr %a607 + %t613 = load i64, ptr %t586 + %t614 = add i64 %t613, 1 + call void @finch_arr_reserve(ptr %a277, i64 %t614, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t615 = load ptr, ptr %a277 + %t616 = getelementptr inbounds { ptr, i64, i64 }, ptr %t615, i64 %t613 + store { ptr, i64, i64 } %t612, ptr %t616 + store i64 %t614, ptr %t586 + %t617 = getelementptr inbounds { ptr, i64, i64 }, ptr %a303, i32 0, i32 1 + %t618 = load ptr, ptr %a1 + %t619 = load %S.ast.Type, ptr %a321 + %t620 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t618, %S.ast.Type %t619) + store { ptr, i64, i64 } %t620, ptr %a622 + store { ptr, i64, i64 } { ptr @.str.4759, i64 3, i64 0 }, ptr %a623 + call void @finch_str_concat(ptr %a621, ptr %a622, ptr %a623) + store { ptr, i64, i64 } %t620, ptr %a624 + call void @finch_str_drop(ptr %a624) + %t625 = load { ptr, i64, i64 }, ptr %a621 + %t626 = load i64, ptr %a278 + call void @finch_str_from_int(ptr %a627, i64 %t626) + %t628 = load { ptr, i64, i64 }, ptr %a627 + store { ptr, i64, i64 } %t625, ptr %a630 + store { ptr, i64, i64 } %t628, ptr %a631 + call void @finch_str_concat(ptr %a629, ptr %a630, ptr %a631) + store { ptr, i64, i64 } %t625, ptr %a632 + call void @finch_str_drop(ptr %a632) + store { ptr, i64, i64 } %t628, ptr %a633 + call void @finch_str_drop(ptr %a633) + %t634 = load { ptr, i64, i64 }, ptr %a629 + %t635 = load i64, ptr %t617 + %t636 = add i64 %t635, 1 + call void @finch_arr_reserve(ptr %a303, i64 %t636, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t637 = load ptr, ptr %a303 + %t638 = getelementptr inbounds { ptr, i64, i64 }, ptr %t637, i64 %t635 + store { ptr, i64, i64 } %t634, ptr %t638 + store i64 %t636, ptr %t617 + %t639 = load i64, ptr %a278 + %t640 = add i64 %t639, 1 + store i64 %t640, ptr %a278 + br label %endif7447 +endif7447: + br label %endif7444 +endif7444: + br label %endif7441 +endif7441: + call void @finch.drop.S_gen_Abi(ptr %a333) + call void @finch.drop.S_ast_Type(ptr %a321) + br label %for.step7433 +for.step7433: + %t641 = load i64, ptr %a307 + %t642 = add i64 %t641, 1 + store i64 %t642, ptr %a307 + br label %for.cond7431 +for.end7434: + %t643 = load ptr, ptr %a1 + %t644 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 + %t645 = load %S.ast.Type, ptr %t644 + %t646 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t643, %S.ast.Type %t645) + store { ptr, i64, i64 } { ptr @.str.4760, i64 5, i64 0 }, ptr %a648 + store { ptr, i64, i64 } %t646, ptr %a649 + call void @finch_str_concat(ptr %a647, ptr %a648, ptr %a649) + store { ptr, i64, i64 } %t646, ptr %a650 + call void @finch_str_drop(ptr %a650) + %t651 = load { ptr, i64, i64 }, ptr %a647 + store { ptr, i64, i64 } %t651, ptr %a653 + store { ptr, i64, i64 } { ptr @.str.4761, i64 1, i64 0 }, ptr %a654 + call void @finch_str_concat(ptr %a652, ptr %a653, ptr %a654) + store { ptr, i64, i64 } %t651, ptr %a655 + call void @finch_str_drop(ptr %a655) + %t656 = load { ptr, i64, i64 }, ptr %a652 + %t657 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 11 + %t658 = load { ptr, i64, i64 }, ptr %t657 + store { ptr, i64, i64 } %t656, ptr %a660 + store { ptr, i64, i64 } %t658, ptr %a661 + call void @finch_str_concat(ptr %a659, ptr %a660, ptr %a661) + store { ptr, i64, i64 } %t656, ptr %a662 + call void @finch_str_drop(ptr %a662) + %t663 = load { ptr, i64, i64 }, ptr %a659 + store { ptr, i64, i64 } %t663, ptr %a665 + store { ptr, i64, i64 } { ptr @.str.4762, i64 1, i64 0 }, ptr %a666 + call void @finch_str_concat(ptr %a664, ptr %a665, ptr %a666) + store { ptr, i64, i64 } %t663, ptr %a667 + call void @finch_str_drop(ptr %a667) + %t668 = load { ptr, i64, i64 }, ptr %a664 + %t669 = getelementptr inbounds { ptr, i64, i64 }, ptr %a303, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.4763, i64 2, i64 0 }, ptr %a670 + call void @finch_str_join(ptr %a671, ptr %a303, ptr %a670) + %t672 = load { ptr, i64, i64 }, ptr %a671 + store { ptr, i64, i64 } %t668, ptr %a674 + store { ptr, i64, i64 } %t672, ptr %a675 + call void @finch_str_concat(ptr %a673, ptr %a674, ptr %a675) + store { ptr, i64, i64 } %t668, ptr %a676 + call void @finch_str_drop(ptr %a676) + store { ptr, i64, i64 } %t672, ptr %a677 + call void @finch_str_drop(ptr %a677) + %t678 = load { ptr, i64, i64 }, ptr %a673 + store { ptr, i64, i64 } %t678, ptr %a680 + store { ptr, i64, i64 } { ptr @.str.4764, i64 1, i64 0 }, ptr %a681 + call void @finch_str_concat(ptr %a679, ptr %a680, ptr %a681) + store { ptr, i64, i64 } %t678, ptr %a682 + call void @finch_str_drop(ptr %a682) + %t683 = load { ptr, i64, i64 }, ptr %a679 + store { ptr, i64, i64 } %t683, ptr %a684 + store { ptr, i64, i64 } { ptr @.str.4765, i64 0, i64 0 }, ptr %a685 + %t686 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 + %t687 = getelementptr inbounds %S.ast.Type, ptr %t686, i32 0, i32 0 + %t688 = load { ptr, i64, i64 }, ptr %t687 + store { ptr, i64, i64 } %t688, ptr %a689 + store { ptr, i64, i64 } { ptr @.str.4766, 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 %then7456, label %else7457 +then7456: + %t693 = load ptr, ptr %a1 + %t694 = load { ptr, i64, i64 }, ptr %a684 + call void @finch.gen.emit(ptr %t693, { ptr, i64, i64 } %t694) + %t695 = load ptr, ptr %a1 + call void @finch.gen.emit(ptr %t695, { ptr, i64, i64 } { ptr @.str.4767, i64 8, i64 0 }) + br label %endif7458 +else7457: + %t696 = getelementptr inbounds %S.gen.Plan, ptr %a273, i32 0, i32 3 + %t697 = load i1, ptr %t696 + br i1 %t697, label %then7459, label %else7460 +then7459: + %t698 = load ptr, ptr %a1 + %t699 = load ptr, ptr %a1 + %t700 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 + %t701 = load %S.ast.Type, ptr %t700 + %t702 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t699, %S.ast.Type %t701) %t703 = load ptr, ptr %a1 - %t704 = load { ptr, i64, i64 }, ptr %a621 + %t704 = load { ptr, i64, i64 }, ptr %a684 %t705 = call { ptr, i64, i64 } @finch.gen.op(ptr %t703, { ptr, i64, i64 } %t704) + %t706 = load { ptr, i64, i64 }, ptr %a279 + call void @finch.gen.store(ptr %t698, { ptr, i64, i64 } %t702, { ptr, i64, i64 } %t705, { ptr, i64, i64 } %t706) store { ptr, i64, i64 } %t702, ptr %a707 + call void @finch_str_drop(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 - call void @finch.gen.emit(ptr %t690, { ptr, i64, i64 } %t709) - 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.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.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 - %t722 = load { ptr, i64, i64 }, ptr %t721 - store { ptr, i64, i64 } %t720, ptr %a724 - store { ptr, i64, i64 } %t722, ptr %a725 - 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.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 - store { ptr, i64, i64 } %t730, ptr %a733 - store { ptr, i64, i64 } %t731, 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 %a737 - 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.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 - 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.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) - %t752 = load { ptr, i64, i64 }, ptr %a35 - store { ptr, i64, i64 } %t752, ptr %a753 - call void @finch_str_copy(ptr %a754, ptr %a753) - %t755 = load { ptr, i64, i64 }, ptr %a754 - ret { ptr, i64, i64 } %t755 + call void @finch_str_drop(ptr %a708) + %t709 = load ptr, ptr %a1 + call void @finch.gen.emit(ptr %t709, { ptr, i64, i64 } { ptr @.str.4768, i64 8, i64 0 }) + br label %endif7461 +else7460: + %t710 = getelementptr inbounds %S.gen.Plan, ptr %a273, i32 0, i32 0 + %t711 = getelementptr inbounds %S.gen.Abi, ptr %t710, i32 0, i32 0 + %t712 = load { ptr, i64, i64 }, ptr %t711 + store { ptr, i64, i64 } %t712, ptr %a713 + store { ptr, i64, i64 } { ptr @.str.4769, i64 6, i64 0 }, ptr %a714 + %t715 = call i32 @finch_str_eq(ptr %a713, ptr %a714) + %t716 = icmp ne i32 %t715, 0 + br i1 %t716, label %then7462, label %else7463 +then7462: + %t717 = load ptr, ptr %a1 + %t718 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t717, { ptr, i64, i64 } { ptr @.str.4770, i64 9, i64 0 }) + store { ptr, i64, i64 } %t718, ptr %a719 + %t720 = load ptr, ptr %a1 + %t721 = load ptr, ptr %a1 + %t722 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 + %t723 = load %S.ast.Type, ptr %t722 + %t724 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t721, %S.ast.Type %t723) + %t725 = load ptr, ptr %a1 + %t726 = load { ptr, i64, i64 }, ptr %a684 + %t727 = call { ptr, i64, i64 } @finch.gen.op(ptr %t725, { ptr, i64, i64 } %t726) + %t728 = load { ptr, i64, i64 }, ptr %a719 + call void @finch.gen.store(ptr %t720, { ptr, i64, i64 } %t724, { ptr, i64, i64 } %t727, { ptr, i64, i64 } %t728) + store { ptr, i64, i64 } %t724, ptr %a729 + call void @finch_str_drop(ptr %a729) + store { ptr, i64, i64 } %t727, ptr %a730 + call void @finch_str_drop(ptr %a730) + %t731 = load ptr, ptr %a1 + %t732 = getelementptr inbounds %S.gen.Plan, ptr %a273, i32 0, i32 0 + %t733 = getelementptr inbounds %S.gen.Abi, ptr %t732, i32 0, i32 2 + %t734 = load { ptr, i64, i64 }, ptr %t733 + store { ptr, i64, i64 } { ptr @.str.4771, i64 4, 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.4772, i64 1, i64 0 }, ptr %a741 + call void @finch_str_concat(ptr %a739, ptr %a740, ptr %a741) + store { ptr, i64, i64 } %t738, ptr %a742 + call void @finch_str_drop(ptr %a742) + %t743 = load { ptr, i64, i64 }, ptr %a739 + %t744 = load ptr, ptr %a1 + %t745 = getelementptr inbounds %S.gen.Plan, ptr %a273, i32 0, i32 0 + %t746 = getelementptr inbounds %S.gen.Abi, ptr %t745, i32 0, i32 2 + %t747 = load { ptr, i64, i64 }, ptr %t746 + %t748 = load { ptr, i64, i64 }, ptr %a719 + %t749 = call { ptr, i64, i64 } @finch.gen.load(ptr %t744, { ptr, i64, i64 } %t747, { ptr, i64, i64 } %t748) + store { ptr, i64, i64 } %t743, ptr %a751 + store { ptr, i64, i64 } %t749, ptr %a752 + call void @finch_str_concat(ptr %a750, ptr %a751, ptr %a752) + store { ptr, i64, i64 } %t743, ptr %a753 + call void @finch_str_drop(ptr %a753) + store { ptr, i64, i64 } %t749, ptr %a754 + call void @finch_str_drop(ptr %a754) + %t755 = load { ptr, i64, i64 }, ptr %a750 + call void @finch.gen.emit(ptr %t731, { ptr, i64, i64 } %t755) + store { ptr, i64, i64 } %t755, ptr %a756 + call void @finch_str_drop(ptr %a756) + call void @finch_str_drop(ptr %a719) + br label %endif7464 +else7463: + %t757 = load ptr, ptr %a1 + %t758 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 + %t759 = load %S.ast.Type, ptr %t758 + %t760 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t757, %S.ast.Type %t759) + %t761 = load { ptr, i64, i64 }, ptr %a685 + store { ptr, i64, i64 } %t760, ptr %a685 + store { ptr, i64, i64 } %t761, ptr %a762 + call void @finch_str_drop(ptr %a762) + %t763 = load ptr, ptr %a1 + %t764 = load ptr, ptr %a1 + %t765 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 + %t766 = load %S.ast.Type, ptr %t765 + %t767 = call { ptr, i64, i64 } @finch.gen.cLL(ptr %t764, %S.ast.Type %t766) + store { ptr, i64, i64 } { ptr @.str.4773, i64 4, i64 0 }, ptr %a769 + store { ptr, i64, i64 } %t767, ptr %a770 + call void @finch_str_concat(ptr %a768, ptr %a769, ptr %a770) + store { ptr, i64, i64 } %t767, ptr %a771 + call void @finch_str_drop(ptr %a771) + %t772 = load { ptr, i64, i64 }, ptr %a768 + store { ptr, i64, i64 } %t772, ptr %a774 + store { ptr, i64, i64 } { ptr @.str.4774, i64 1, i64 0 }, ptr %a775 + call void @finch_str_concat(ptr %a773, ptr %a774, ptr %a775) + store { ptr, i64, i64 } %t772, ptr %a776 + call void @finch_str_drop(ptr %a776) + %t777 = load { ptr, i64, i64 }, ptr %a773 + %t778 = load ptr, ptr %a1 + %t779 = load { ptr, i64, i64 }, ptr %a684 + %t780 = call { ptr, i64, i64 } @finch.gen.op(ptr %t778, { ptr, i64, i64 } %t779) + store { ptr, i64, i64 } %t777, ptr %a782 + store { ptr, i64, i64 } %t780, ptr %a783 + call void @finch_str_concat(ptr %a781, ptr %a782, ptr %a783) + store { ptr, i64, i64 } %t777, ptr %a784 + call void @finch_str_drop(ptr %a784) + store { ptr, i64, i64 } %t780, ptr %a785 + call void @finch_str_drop(ptr %a785) + %t786 = load { ptr, i64, i64 }, ptr %a781 + call void @finch.gen.emit(ptr %t763, { ptr, i64, i64 } %t786) + store { ptr, i64, i64 } %t786, ptr %a787 + call void @finch_str_drop(ptr %a787) + br label %endif7464 +endif7464: + br label %endif7461 +endif7461: + br label %endif7458 +endif7458: + %t788 = load ptr, ptr %a1 + %t789 = load %S.gen.Saved, ptr %a276 + %t790 = load { ptr, i64, i64 }, ptr %a685 + store { ptr, i64, i64 } { ptr @.str.4775, i64 15, i64 0 }, ptr %a792 + store { ptr, i64, i64 } %t790, ptr %a793 + call void @finch_str_concat(ptr %a791, ptr %a792, ptr %a793) + %t794 = load { ptr, i64, i64 }, ptr %a791 + store { ptr, i64, i64 } %t794, ptr %a796 + store { ptr, i64, i64 } { ptr @.str.4776, i64 1, i64 0 }, ptr %a797 + call void @finch_str_concat(ptr %a795, ptr %a796, ptr %a797) + store { ptr, i64, i64 } %t794, ptr %a798 + call void @finch_str_drop(ptr %a798) + %t799 = load { ptr, i64, i64 }, ptr %a795 + %t800 = getelementptr inbounds %S.gen.Plan, ptr %a273, i32 0, i32 2 + %t801 = load { ptr, i64, i64 }, ptr %t800 + store { ptr, i64, i64 } %t799, ptr %a803 + store { ptr, i64, i64 } %t801, ptr %a804 + call void @finch_str_concat(ptr %a802, ptr %a803, ptr %a804) + store { ptr, i64, i64 } %t799, ptr %a805 + call void @finch_str_drop(ptr %a805) + %t806 = load { ptr, i64, i64 }, ptr %a802 + store { ptr, i64, i64 } %t806, ptr %a808 + store { ptr, i64, i64 } { ptr @.str.4777, i64 1, i64 0 }, ptr %a809 + call void @finch_str_concat(ptr %a807, ptr %a808, ptr %a809) + store { ptr, i64, i64 } %t806, ptr %a810 + call void @finch_str_drop(ptr %a810) + %t811 = load { ptr, i64, i64 }, ptr %a807 + %t812 = load { ptr, i64, i64 }, ptr %a38 + 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) + store { ptr, i64, i64 } %t811, ptr %a816 + call void @finch_str_drop(ptr %a816) + %t817 = load { ptr, i64, i64 }, ptr %a813 + store { ptr, i64, i64 } %t817, ptr %a819 + store { ptr, i64, i64 } { ptr @.str.4778, i64 1, i64 0 }, ptr %a820 + call void @finch_str_concat(ptr %a818, ptr %a819, ptr %a820) + store { ptr, i64, i64 } %t817, ptr %a821 + call void @finch_str_drop(ptr %a821) + %t822 = load { ptr, i64, i64 }, ptr %a818 + %t823 = getelementptr inbounds { ptr, i64, i64 }, ptr %a277, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.4779, i64 2, i64 0 }, ptr %a824 + call void @finch_str_join(ptr %a825, ptr %a277, ptr %a824) + %t826 = load { ptr, i64, i64 }, ptr %a825 + store { ptr, i64, i64 } %t822, ptr %a828 + store { ptr, i64, i64 } %t826, ptr %a829 + call void @finch_str_concat(ptr %a827, ptr %a828, ptr %a829) + store { ptr, i64, i64 } %t822, ptr %a830 + call void @finch_str_drop(ptr %a830) + store { ptr, i64, i64 } %t826, ptr %a831 + call void @finch_str_drop(ptr %a831) + %t832 = load { ptr, i64, i64 }, ptr %a827 + store { ptr, i64, i64 } %t832, ptr %a834 + store { ptr, i64, i64 } { ptr @.str.4780, i64 1, i64 0 }, ptr %a835 + call void @finch_str_concat(ptr %a833, ptr %a834, ptr %a835) + store { ptr, i64, i64 } %t832, ptr %a836 + call void @finch_str_drop(ptr %a836) + %t837 = load { ptr, i64, i64 }, ptr %a833 + call void @finch.gen.endHelper(ptr %t788, %S.gen.Saved %t789, { ptr, i64, i64 } %t837) + store { ptr, i64, i64 } %t837, ptr %a838 + call void @finch_str_drop(ptr %a838) + %t839 = load { ptr, i64, i64 }, ptr %a38 + call void @finch_str_drop(ptr %a685) + call void @finch_str_drop(ptr %a684) + call void @finch.drop.arr_str(ptr %a303) + call void @finch_str_drop(ptr %a279) + call void @finch.drop.arr_str(ptr %a277) + call void @finch.drop.S_gen_Saved(ptr %a276) + call void @finch.drop.S_gen_Plan(ptr %a273) + call void @finch.drop.S_gen_FnSig(ptr %a17) + ret { ptr, i64, i64 } %t839 } define internal %S.gen.Val @finch.gen.enumFrom(ptr %p0, %S.ast.Node %p1, i64 %p2) { @@ -63551,86 +75163,107 @@ entry: %a53 = alloca { ptr, i64, i64 }, align 16 %a54 = alloca { ptr, i64, i64 }, align 16 %a55 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca %S.ast.Type, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca i64, align 16 + %a56 = alloca { ptr, i64, i64 }, align 16 + %a57 = 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 + %a73 = alloca %S.ast.Type, align 16 + %a80 = alloca { ptr, i64, i64 }, align 16 %a82 = alloca i64, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = 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 + %a85 = alloca i64, align 16 + %a105 = alloca { ptr, i64, i64 }, align 16 + %a106 = alloca { ptr, i64, i64 }, align 16 + %a107 = 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 %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca %S.ast.Type, align 16 - %a120 = alloca %S.ast.Type, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca 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 + %a116 = alloca { ptr, i64, i64 }, align 16 + %a119 = alloca { ptr, i64, i64 }, align 16 + %a120 = alloca { ptr, i64, i64 }, align 16 + %a124 = alloca %S.ast.Type, align 16 + %a125 = alloca %S.ast.Type, align 16 + %a135 = alloca %S.ast.Type, align 16 + %a136 = alloca { ptr, i64, i64 }, align 16 + %a137 = alloca { ptr, i64, i64 }, align 16 + %a141 = alloca i64, align 16 %a146 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 + %a147 = alloca { ptr, i64, i64 }, align 16 + %a148 = alloca { ptr, i64, i64 }, align 16 + %a150 = 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 %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 %a168 = alloca { ptr, i64, i64 }, align 16 + %a169 = 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 - %a182 = 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 %a191 = alloca { ptr, i64, i64 }, align 16 - %a192 = 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 %a196 = alloca { ptr, i64, i64 }, align 16 %a197 = alloca { ptr, i64, i64 }, align 16 + %a200 = alloca { ptr, i64, i64 }, align 16 %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = 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 - %a211 = 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 %a215 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca %S.ast.Type, align 16 - %a221 = alloca %S.ast.Type, align 16 + %a218 = alloca { ptr, i64, i64 }, align 16 + %a221 = alloca { ptr, i64, i64 }, align 16 + %a222 = alloca { ptr, i64, i64 }, align 16 + %a223 = alloca { ptr, i64, i64 }, align 16 + %a226 = alloca { ptr, i64, i64 }, align 16 + %a227 = 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 + %a237 = alloca { ptr, i64, i64 }, align 16 + %a240 = alloca { ptr, i64, i64 }, align 16 + %a243 = alloca %S.ast.Type, align 16 + %a244 = alloca %S.ast.Type, 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 %panic7090, label %ok7091 -panic7090: - call void @finch_panic(ptr @.str.4608, i64 4087, ptr @.str.4609) + br i1 %t5, label %panic7468, label %ok7469 +panic7468: + call void @finch_panic(ptr @.str.4781, i64 4374, ptr @.str.4782) unreachable -ok7091: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 20 +ok7469: + %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 21 %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 %range7092, label %inrange7093 -range7092: - call void @finch_panic_index(ptr @.str.4610, i64 4087, i64 %t7, i64 %t9) + br i1 %t10, label %range7470, label %inrange7471 +range7470: + call void @finch_panic_index(ptr @.str.4783, i64 4374, i64 %t7, i64 %t9) unreachable -inrange7093: +inrange7471: %t11 = extractvalue { ptr, i64, i64 } %t8, 0 %t12 = getelementptr inbounds %S.gen.EnumDef, ptr %t11, i64 %t7 %t13 = load %S.gen.EnumDef, ptr %t12 @@ -63648,11 +75281,11 @@ inrange7093: %t24 = load { ptr, i64, i64 }, ptr %t23 %t25 = extractvalue { ptr, i64, i64 } %t24, 1 %t26 = icmp uge i64 0, %t25 - br i1 %t26, label %range7094, label %inrange7095 -range7094: - call void @finch_panic_index(ptr @.str.4611, i64 4089, i64 0, i64 %t25) + br i1 %t26, label %range7472, label %inrange7473 +range7472: + call void @finch_panic_index(ptr @.str.4784, i64 4376, i64 0, i64 %t25) unreachable -inrange7095: +inrange7473: %t27 = extractvalue { ptr, i64, i64 } %t24, 0 %t28 = getelementptr inbounds %S.ast.Node, ptr %t27, i64 0 %t29 = load %S.ast.Node, ptr %t28 @@ -63662,25 +75295,25 @@ inrange7095: %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 %then7096, label %endif7098 -then7096: + br i1 %t35, label %then7474, label %endif7476 +then7474: %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 %range7099, label %inrange7100 -range7099: - call void @finch_panic_index(ptr @.str.4612, i64 4091, i64 0, i64 %t39) + br i1 %t40, label %range7477, label %inrange7478 +range7477: + call void @finch_panic_index(ptr @.str.4785, i64 4378, i64 0, i64 %t39) unreachable -inrange7100: +inrange7478: %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.4613, i64 54, i64 0 }, ptr %a48 + store { ptr, i64, i64 } { ptr @.str.4786, 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 @@ -63689,227 +75322,280 @@ inrange7100: store { ptr, i64, i64 } %t49, ptr %a54 store { ptr, i64, i64 } %t52, 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 %t36, %S.ast.Node %t43, { ptr, i64, i64 } %t56) - 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 - call void @finch_str_copy(ptr %a61, ptr %a60) - %t62 = load { ptr, i64, i64 }, ptr %a61 - %t63 = insertvalue %S.ast.Type %t57, { ptr, i64, i64 } %t62, 2 - %t64 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 0 - %t65 = load { ptr, i64, i64 }, ptr %t64 - store { ptr, i64, i64 } %t65, ptr %a66 - call void @finch_str_copy(ptr %a67, ptr %a66) - %t68 = load { ptr, i64, i64 }, ptr %a67 - %t69 = insertvalue %S.ast.Type %t63, { ptr, i64, i64 } %t68, 3 - 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 %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.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.cond7104 -find.cond7104: - %t83 = load i64, ptr %a82 - %t84 = icmp slt i64 %t83, %t80 - 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.hit7106, label %find.next7107 -find.hit7106: - store i64 %t83, ptr %a79 - br label %find.end7108 -find.next7107: - %t88 = add i64 %t83, 1 - store i64 %t88, ptr %a82 - 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 %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 %range7112, label %inrange7113 -range7112: - call void @finch_panic_index(ptr @.str.4616, i64 4096, i64 0, i64 %t95) + store { ptr, i64, i64 } %t49, ptr %a56 + call void @finch_str_drop(ptr %a56) + store { ptr, i64, i64 } %t52, ptr %a57 + call void @finch_str_drop(ptr %a57) + %t58 = load { ptr, i64, i64 }, ptr %a53 + call void @finch.gen.fail(ptr %t36, %S.ast.Node %t43, { ptr, i64, i64 } %t58) + store { ptr, i64, i64 } %t58, ptr %a59 + call void @finch_str_drop(ptr %a59) + br label %endif7476 +endif7476: + %t60 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.4787, i64 4, i64 0 }, 0 + %t61 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 1 + %t62 = load { ptr, i64, i64 }, ptr %t61 + store { ptr, i64, i64 } %t62, ptr %a63 + call void @finch_str_copy(ptr %a64, ptr %a63) + %t65 = load { ptr, i64, i64 }, ptr %a64 + %t66 = insertvalue %S.ast.Type %t60, { ptr, i64, i64 } %t65, 2 + %t67 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 0 + %t68 = load { ptr, i64, i64 }, ptr %t67 + store { ptr, i64, i64 } %t68, ptr %a69 + call void @finch_str_copy(ptr %a70, ptr %a69) + %t71 = load { ptr, i64, i64 }, ptr %a70 + %t72 = insertvalue %S.ast.Type %t66, { ptr, i64, i64 } %t71, 3 + store %S.ast.Type %t72, ptr %a73 + %t74 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 3 + %t75 = load i1, ptr %t74 + br i1 %t75, label %then7479, label %endif7481 +then7479: + %t76 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 3 + %t77 = getelementptr inbounds { ptr, i64, i64 }, ptr %t76, i32 0, i32 1 + %t78 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 0 + %t79 = load { ptr, i64, i64 }, ptr %t78 + store { ptr, i64, i64 } %t79, ptr %a80 + %t81 = call i64 @finch_str_to_int(ptr %a80, ptr @.str.4788, i64 4382) + store i64 -1, ptr %a82 + %t83 = load i64, ptr %t77 + %t84 = load ptr, ptr %t76 + store i64 0, ptr %a85 + br label %find.cond7482 +find.cond7482: + %t86 = load i64, ptr %a85 + %t87 = icmp slt i64 %t86, %t83 + br i1 %t87, label %find.body7483, label %find.end7486 +find.body7483: + %t88 = getelementptr inbounds i64, ptr %t84, i64 %t86 + %t89 = load i64, ptr %t88 + %t90 = icmp eq i64 %t89, %t81 + br i1 %t90, label %find.hit7484, label %find.next7485 +find.hit7484: + store i64 %t86, ptr %a82 + br label %find.end7486 +find.next7485: + %t91 = add i64 %t86, 1 + store i64 %t91, ptr %a85 + br label %find.cond7482 +find.end7486: + %t92 = load i64, ptr %a82 + %t93 = icmp sge i64 %t92, 0 + %t94 = xor i1 %t93, true + br i1 %t94, label %then7487, label %endif7489 +then7487: + %t95 = load ptr, ptr %a1 + %t96 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t97 = load { ptr, i64, i64 }, ptr %t96 + %t98 = extractvalue { ptr, i64, i64 } %t97, 1 + %t99 = icmp uge i64 0, %t98 + br i1 %t99, label %range7490, label %inrange7491 +range7490: + call void @finch_panic_index(ptr @.str.4789, i64 4383, i64 0, i64 %t98) unreachable -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.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 - %t107 = load { ptr, i64, i64 }, ptr %t106 - store { ptr, i64, i64 } %t105, 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 - call void @finch.gen.fail(ptr %t92, %S.ast.Node %t99, { ptr, i64, i64 } %t111) - 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 - call void @finch_str_copy(ptr %a115, ptr %a114) - %t116 = load { ptr, i64, i64 }, ptr %a115 - %t117 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t116, 0 - %t118 = load %S.ast.Type, ptr %a70 - store %S.ast.Type %t118, ptr %a119 - call void @finch.copy.S_ast_Type(ptr %a120, ptr %a119) - %t121 = load %S.ast.Type, ptr %a120 - %t122 = insertvalue %S.gen.Val %t117, %S.ast.Type %t121, 1 - ret %S.gen.Val %t122 -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.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.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.cond7114 -for.cond7114: - %t136 = load i64, ptr %a135 - %t137 = icmp slt i64 %t136, %t134 - 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.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.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 - %t149 = load i64, ptr %a135 - %t150 = load { ptr, i64, i64 }, ptr %t148 - %t151 = extractvalue { ptr, i64, i64 } %t150, 1 - %t152 = icmp uge i64 %t149, %t151 - br i1 %t152, label %range7118, label %inrange7119 -range7118: - call void @finch_panic_index(ptr @.str.4622, i64 4103, i64 %t149, i64 %t151) +inrange7491: + %t100 = extractvalue { ptr, i64, i64 } %t97, 0 + %t101 = getelementptr inbounds %S.ast.Node, ptr %t100, i64 0 + %t102 = load %S.ast.Node, ptr %t101 + %t103 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 0 + %t104 = load { ptr, i64, i64 }, ptr %t103 + store { ptr, i64, i64 } %t104, ptr %a106 + store { ptr, i64, i64 } { ptr @.str.4790, i64 37, i64 0 }, ptr %a107 + call void @finch_str_concat(ptr %a105, ptr %a106, ptr %a107) + %t108 = load { ptr, i64, i64 }, ptr %a105 + %t109 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 1 + %t110 = load { ptr, i64, i64 }, ptr %t109 + store { ptr, i64, i64 } %t108, ptr %a112 + store { ptr, i64, i64 } %t110, ptr %a113 + call void @finch_str_concat(ptr %a111, ptr %a112, ptr %a113) + store { ptr, i64, i64 } %t108, ptr %a114 + call void @finch_str_drop(ptr %a114) + %t115 = load { ptr, i64, i64 }, ptr %a111 + call void @finch.gen.fail(ptr %t95, %S.ast.Node %t102, { ptr, i64, i64 } %t115) + store { ptr, i64, i64 } %t115, ptr %a116 + call void @finch_str_drop(ptr %a116) + br label %endif7489 +endif7489: + %t117 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 0 + %t118 = load { ptr, i64, i64 }, ptr %t117 + store { ptr, i64, i64 } %t118, ptr %a119 + call void @finch_str_copy(ptr %a120, ptr %a119) + %t121 = load { ptr, i64, i64 }, ptr %a120 + %t122 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t121, 0 + %t123 = load %S.ast.Type, ptr %a73 + store %S.ast.Type %t123, ptr %a124 + call void @finch.copy.S_ast_Type(ptr %a125, ptr %a124) + %t126 = load %S.ast.Type, ptr %a125 + %t127 = insertvalue %S.gen.Val %t122, %S.ast.Type %t126, 1 + call void @finch.drop.S_ast_Type(ptr %a73) + call void @finch.drop.S_gen_Val(ptr %a31) + call void @finch.drop.S_gen_EnumDef(ptr %a17) + ret %S.gen.Val %t127 +endif7481: + %t128 = load ptr, ptr %a1 + %t129 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 0 + %t130 = load { ptr, i64, i64 }, ptr %t129 + %t131 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 1 + %t132 = load %S.ast.Type, ptr %t131 + %t133 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4791, i64 3, i64 0 }) + %t134 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t128, { ptr, i64, i64 } %t130, %S.ast.Type %t132, %S.ast.Type %t133) + store %S.ast.Type %t133, ptr %a135 + call void @finch.drop.S_ast_Type(ptr %a135) + store { ptr, i64, i64 } %t134, ptr %a136 + store { ptr, i64, i64 } { ptr @.str.4792, i64 0, i64 0 }, ptr %a137 + %t138 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 3 + %t139 = getelementptr inbounds { ptr, i64, i64 }, ptr %t138, i32 0, i32 1 + %t140 = load i64, ptr %t139 + store i64 0, ptr %a141 + br label %for.cond7492 +for.cond7492: + %t142 = load i64, ptr %a141 + %t143 = icmp slt i64 %t142, %t140 + br i1 %t143, label %for.body7493, label %for.end7495 +for.body7493: + %t144 = load ptr, ptr %a1 + %t145 = load { ptr, i64, i64 }, ptr %a136 + store { ptr, i64, i64 } { ptr @.str.4793, i64 12, 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.4794, i64 2, i64 0 }, ptr %a152 + call void @finch_str_concat(ptr %a150, ptr %a151, ptr %a152) + store { ptr, i64, i64 } %t149, ptr %a153 + call void @finch_str_drop(ptr %a153) + %t154 = load { ptr, i64, i64 }, ptr %a150 + %t155 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 3 + %t156 = load i64, ptr %a141 + %t157 = load { ptr, i64, i64 }, ptr %t155 + %t158 = extractvalue { ptr, i64, i64 } %t157, 1 + %t159 = icmp uge i64 %t156, %t158 + br i1 %t159, label %range7496, label %inrange7497 +range7496: + call void @finch_panic_index(ptr @.str.4795, i64 4390, i64 %t156, i64 %t158) unreachable -inrange7119: - %t153 = extractvalue { ptr, i64, i64 } %t150, 0 - %t154 = getelementptr inbounds i64, ptr %t153, i64 %t149 - %t155 = load i64, ptr %t154 - call void @finch_str_from_int(ptr %a156, i64 %t155) - %t157 = load { ptr, i64, i64 }, ptr %a156 - store { ptr, i64, i64 } %t147, 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 - %t162 = call { ptr, i64, i64 } @finch.gen.op(ptr %t138, { ptr, i64, i64 } %t161) - store { ptr, i64, i64 } %t162, ptr %a163 - %t164 = load i64, ptr %a135 - %t165 = icmp eq i64 %t164, 0 - 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 %endif7122 -else7121: - %t170 = load ptr, ptr %a1 - %t171 = load { ptr, i64, i64 }, ptr %a131 - 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.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 - store { ptr, i64, i64 } %t179, 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 - %t185 = call { ptr, i64, i64 } @finch.gen.op(ptr %t170, { ptr, i64, i64 } %t184) - store { ptr, i64, i64 } %t185, ptr %a131 - 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.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.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.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.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 - %t206 = load %S.ast.Node, ptr %a2 - 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.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.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) - %t218 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t217, 0 - %t219 = load %S.ast.Type, ptr %a70 - store %S.ast.Type %t219, ptr %a220 - call void @finch.copy.S_ast_Type(ptr %a221, ptr %a220) - %t222 = load %S.ast.Type, ptr %a221 - %t223 = insertvalue %S.gen.Val %t218, %S.ast.Type %t222, 1 - ret %S.gen.Val %t223 +inrange7497: + %t160 = extractvalue { ptr, i64, i64 } %t157, 0 + %t161 = getelementptr inbounds i64, ptr %t160, i64 %t156 + %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 } %t154, ptr %a166 + store { ptr, i64, i64 } %t164, ptr %a167 + call void @finch_str_concat(ptr %a165, ptr %a166, ptr %a167) + store { ptr, i64, i64 } %t154, ptr %a168 + call void @finch_str_drop(ptr %a168) + store { ptr, i64, i64 } %t164, ptr %a169 + call void @finch_str_drop(ptr %a169) + %t170 = load { ptr, i64, i64 }, ptr %a165 + %t171 = call { ptr, i64, i64 } @finch.gen.op(ptr %t144, { ptr, i64, i64 } %t170) + store { ptr, i64, i64 } %t170, ptr %a172 + call void @finch_str_drop(ptr %a172) + store { ptr, i64, i64 } %t171, ptr %a173 + %t174 = load i64, ptr %a141 + %t175 = icmp eq i64 %t174, 0 + br i1 %t175, label %then7498, label %else7499 +then7498: + %t176 = load { ptr, i64, i64 }, ptr %a173 + store { ptr, i64, i64 } %t176, ptr %a177 + call void @finch_str_copy(ptr %a178, ptr %a177) + %t179 = load { ptr, i64, i64 }, ptr %a178 + %t180 = load { ptr, i64, i64 }, ptr %a137 + store { ptr, i64, i64 } %t179, ptr %a137 + store { ptr, i64, i64 } %t180, ptr %a181 + call void @finch_str_drop(ptr %a181) + br label %endif7500 +else7499: + %t182 = load ptr, ptr %a1 + %t183 = load { ptr, i64, i64 }, ptr %a137 + store { ptr, i64, i64 } { ptr @.str.4796, i64 6, 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.4797, i64 2, i64 0 }, ptr %a190 + call void @finch_str_concat(ptr %a188, ptr %a189, ptr %a190) + store { ptr, i64, i64 } %t187, ptr %a191 + call void @finch_str_drop(ptr %a191) + %t192 = load { ptr, i64, i64 }, ptr %a188 + %t193 = load { ptr, i64, i64 }, ptr %a173 + store { ptr, i64, i64 } %t192, ptr %a195 + store { ptr, i64, i64 } %t193, ptr %a196 + call void @finch_str_concat(ptr %a194, ptr %a195, ptr %a196) + store { ptr, i64, i64 } %t192, ptr %a197 + call void @finch_str_drop(ptr %a197) + %t198 = load { ptr, i64, i64 }, ptr %a194 + %t199 = call { ptr, i64, i64 } @finch.gen.op(ptr %t182, { ptr, i64, i64 } %t198) + store { ptr, i64, i64 } %t198, ptr %a200 + call void @finch_str_drop(ptr %a200) + %t201 = load { ptr, i64, i64 }, ptr %a137 + store { ptr, i64, i64 } %t199, ptr %a137 + store { ptr, i64, i64 } %t201, ptr %a202 + call void @finch_str_drop(ptr %a202) + br label %endif7500 +endif7500: + call void @finch_str_drop(ptr %a173) + br label %for.step7494 +for.step7494: + %t203 = load i64, ptr %a141 + %t204 = add i64 %t203, 1 + store i64 %t204, ptr %a141 + br label %for.cond7492 +for.end7495: + %t205 = load ptr, ptr %a1 + %t206 = load ptr, ptr %a1 + %t207 = load { ptr, i64, i64 }, ptr %a137 + store { ptr, i64, i64 } { ptr @.str.4798, i64 7, i64 0 }, ptr %a209 + store { ptr, i64, i64 } %t207, ptr %a210 + 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.4799, i64 6, i64 0 }, ptr %a214 + call void @finch_str_concat(ptr %a212, ptr %a213, ptr %a214) + store { ptr, i64, i64 } %t211, ptr %a215 + call void @finch_str_drop(ptr %a215) + %t216 = load { ptr, i64, i64 }, ptr %a212 + %t217 = call { ptr, i64, i64 } @finch.gen.op(ptr %t206, { ptr, i64, i64 } %t216) + store { ptr, i64, i64 } %t216, ptr %a218 + call void @finch_str_drop(ptr %a218) + %t219 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 1 + %t220 = load { ptr, i64, i64 }, ptr %t219 + store { ptr, i64, i64 } { ptr @.str.4800, i64 32, i64 0 }, ptr %a222 + store { ptr, i64, i64 } %t220, ptr %a223 + call void @finch_str_concat(ptr %a221, ptr %a222, ptr %a223) + %t224 = load { ptr, i64, i64 }, ptr %a221 + %t225 = load %S.ast.Node, ptr %a2 + call void @finch.gen.panicIf(ptr %t205, { ptr, i64, i64 } %t217, { ptr, i64, i64 } %t224, %S.ast.Node %t225) + store { ptr, i64, i64 } %t217, ptr %a226 + call void @finch_str_drop(ptr %a226) + store { ptr, i64, i64 } %t224, ptr %a227 + call void @finch_str_drop(ptr %a227) + %t228 = load ptr, ptr %a1 + %t229 = load { ptr, i64, i64 }, ptr %a136 + store { ptr, i64, i64 } { ptr @.str.4801, i64 10, 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.4802, i64 7, i64 0 }, ptr %a236 + call void @finch_str_concat(ptr %a234, ptr %a235, ptr %a236) + store { ptr, i64, i64 } %t233, ptr %a237 + call void @finch_str_drop(ptr %a237) + %t238 = load { ptr, i64, i64 }, ptr %a234 + %t239 = call { ptr, i64, i64 } @finch.gen.op(ptr %t228, { ptr, i64, i64 } %t238) + store { ptr, i64, i64 } %t238, ptr %a240 + call void @finch_str_drop(ptr %a240) + %t241 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t239, 0 + %t242 = load %S.ast.Type, ptr %a73 + store %S.ast.Type %t242, ptr %a243 + call void @finch.copy.S_ast_Type(ptr %a244, ptr %a243) + %t245 = load %S.ast.Type, ptr %a244 + %t246 = insertvalue %S.gen.Val %t241, %S.ast.Type %t245, 1 + call void @finch_str_drop(ptr %a137) + call void @finch_str_drop(ptr %a136) + call void @finch.drop.S_ast_Type(ptr %a73) + call void @finch.drop.S_gen_Val(ptr %a31) + call void @finch.drop.S_gen_EnumDef(ptr %a17) + ret %S.gen.Val %t246 } define internal { ptr, i64, i64 } @finch.gen.cExt(ptr %p0, %S.ast.Type %p1) { @@ -63927,106 +75613,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.4630, i64 4, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.4803, 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.from7123 -logic.from7123: - br i1 %t8, label %logic.end7125, label %logic.rhs7124 -logic.rhs7124: + br label %logic.from7501 +logic.from7501: + br i1 %t8, label %logic.end7503, label %logic.rhs7502 +logic.rhs7502: %t9 = load %S.ast.Type, ptr %a2 %t10 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t9) - 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: + br label %logic.rend7504 +logic.rend7504: + br label %logic.end7503 +logic.end7503: + %t11 = phi i1 [ true, %logic.from7501 ], [ %t10, %logic.rend7504 ] + br i1 %t11, label %then7505, label %endif7507 +then7505: %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 %then7130, label %endif7132 -then7130: - ret { ptr, i64, i64 } { ptr @.str.4631, i64 8, i64 0 } -endif7132: - br label %endif7129 -endif7129: + br i1 %t14, label %then7508, label %endif7510 +then7508: + ret { ptr, i64, i64 } { ptr @.str.4804, i64 8, i64 0 } +endif7510: + br label %endif7507 +endif7507: %t15 = load %S.ast.Type, ptr %a2 %t16 = call i1 @finch.gen.isSigned(%S.ast.Type %t15) - br label %logic.from7133 -logic.from7133: - br i1 %t16, label %logic.end7135, label %logic.rhs7134 -logic.rhs7134: + br label %logic.from7511 +logic.from7511: + br i1 %t16, label %logic.end7513, label %logic.rhs7512 +logic.rhs7512: %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.4632, i64 4, i64 0 }, ptr %a20 + store { ptr, i64, i64 } { ptr @.str.4805, 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.from7136 -logic.from7136: - br i1 %t22, label %logic.rhs7137, label %logic.end7138 -logic.rhs7137: + br label %logic.from7514 +logic.from7514: + br i1 %t22, label %logic.rhs7515, label %logic.end7516 +logic.rhs7515: %t23 = load ptr, ptr %a1 %t24 = icmp eq ptr %t23, null - br i1 %t24, label %panic7139, label %ok7140 -panic7139: - call void @finch_panic(ptr @.str.4633, i64 4123, ptr @.str.4634) + br i1 %t24, label %panic7517, label %ok7518 +panic7517: + call void @finch_panic(ptr @.str.4806, i64 4410, ptr @.str.4807) unreachable -ok7140: - %t25 = getelementptr inbounds %S.gen.Gen, ptr %t23, i32 0, i32 29 +ok7518: + %t25 = getelementptr inbounds %S.gen.Gen, ptr %t23, i32 0, i32 30 %t26 = load %S.platform.Target, ptr %t25 %t27 = call i1 @finch.platform.charIsSigned(%S.platform.Target %t26) - 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: + br label %logic.rend7519 +logic.rend7519: + br label %logic.end7516 +logic.end7516: + %t28 = phi i1 [ false, %logic.from7514 ], [ %t27, %logic.rend7519 ] + br label %logic.rend7520 +logic.rend7520: + br label %logic.end7513 +logic.end7513: + %t29 = phi i1 [ true, %logic.from7511 ], [ %t28, %logic.rend7520 ] + br label %logic.from7521 +logic.from7521: + br i1 %t29, label %logic.rhs7522, label %logic.end7523 +logic.rhs7522: %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.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: + br label %logic.rend7524 +logic.rend7524: + br label %logic.end7523 +logic.end7523: + %t33 = phi i1 [ false, %logic.from7521 ], [ %t32, %logic.rend7524 ] + br i1 %t33, label %then7525, label %endif7527 +then7525: + ret { ptr, i64, i64 } { ptr @.str.4808, i64 8, i64 0 } +endif7527: %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.4636, i64 4, i64 0 }, ptr %a37 + store { ptr, i64, i64 } { ptr @.str.4809, 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.from7150 -logic.from7150: - br i1 %t39, label %logic.rhs7151, label %logic.end7152 -logic.rhs7151: + br label %logic.from7528 +logic.from7528: + br i1 %t39, label %logic.rhs7529, label %logic.end7530 +logic.rhs7529: %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.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 } + br label %logic.rend7531 +logic.rend7531: + br label %logic.end7530 +logic.end7530: + %t43 = phi i1 [ false, %logic.from7528 ], [ %t42, %logic.rend7531 ] + br i1 %t43, label %then7532, label %endif7534 +then7532: + ret { ptr, i64, i64 } { ptr @.str.4810, i64 8, i64 0 } +endif7534: + ret { ptr, i64, i64 } { ptr @.str.4811, i64 0, i64 0 } } define internal { ptr, i64, i64 } @finch.gen.cLL(ptr %p0, %S.ast.Type %p1) { @@ -64040,13 +75726,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.4639, i64 3, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.4812, 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 %then7157, label %endif7159 -then7157: - ret { ptr, i64, i64 } { ptr @.str.4640, i64 3, i64 0 } -endif7159: + br i1 %t8, label %then7535, label %endif7537 +then7535: + ret { ptr, i64, i64 } { ptr @.str.4813, i64 3, i64 0 } +endif7537: %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) @@ -64067,361 +75753,475 @@ entry: %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 + %a51 = 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 %a59 = 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 + %a63 = 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 - %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 + %a72 = alloca { ptr, i64, i64 }, align 16 %a74 = 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 - %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 - %a93 = 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 + %a87 = alloca { ptr, i64, i64 }, align 16 + %a89 = 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 %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a97 = 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 %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 + %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 + %a114 = 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 + %a123 = alloca 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 + %a142 = 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 + %a149 = alloca { ptr, i64, i64 }, align 16 + %a150 = 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 + %a155 = 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 %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 + %a166 = alloca { ptr, i64, i64 }, align 16 + %a167 = alloca { ptr, i64, i64 }, align 16 + %a169 = 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 %a183 = alloca { ptr, i64, i64 }, align 16 %a184 = alloca { ptr, i64, i64 }, align 16 %a185 = alloca { ptr, i64, i64 }, 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 - %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 + %a186 = 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 + %a196 = alloca { ptr, i64, i64 }, align 16 + %a197 = alloca { ptr, i64, i64 }, align 16 + %a199 = 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 + %a205 = 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 + %a210 = alloca { ptr, i64, i64 }, align 16 + %a211 = alloca { ptr, i64, i64 }, align 16 + %a213 = alloca { ptr, i64, i64 }, align 16 + %a219 = alloca %S.ast.Type, align 16 + %a225 = alloca { ptr, i64, i64 }, align 16 + %a227 = alloca i64, align 16 + %a235 = alloca %S.ast.Type, align 16 + %a240 = alloca %S.ast.Type, align 16 + %a248 = alloca %S.ast.Type, align 16 + %a249 = alloca %S.ast.Type, align 16 + %a261 = alloca %S.gen.Plan, align 16 + %a262 = alloca { ptr, i64, i64 }, align 16 + %a263 = alloca { ptr, i64, i64 }, align 16 + %a264 = 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 - %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 - %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 + %a279 = 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 + %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 + %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 + %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 + %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 + %a317 = alloca { ptr, i64, i64 }, align 16 + %a323 = alloca i64, align 16 + %a327 = alloca i64, align 16 + %a342 = alloca %S.ast.Type, align 16 + %a343 = alloca %S.ast.Type, align 16 + %a345 = alloca %S.ast.Type, align 16 + %a354 = alloca %S.gen.Abi, align 16 + %a355 = alloca %S.gen.Abi, align 16 + %a357 = alloca %S.gen.Abi, align 16 %a381 = 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 + %a386 = alloca { ptr, i64, i64 }, align 16 + %a388 = 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 - %a392 = alloca { ptr, i64, i64 }, align 16 - %a393 = 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 %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 - %a409 = 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 - %a422 = alloca { ptr, i64, i64 }, align 16 - %a423 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 + %a401 = alloca %S.gen.Val, align 16 + %a402 = alloca { ptr, i64, i64 }, align 16 + %a403 = alloca %S.gen.Val, align 16 + %a406 = alloca %S.gen.Val, align 16 + %a407 = alloca %S.gen.Val, align 16 + %a417 = alloca { ptr, i64, i64 }, align 16 + %a418 = alloca { ptr, i64, i64 }, align 16 + %a426 = alloca { ptr, i64, i64 }, align 16 + %a427 = alloca { ptr, i64, i64 }, align 16 + %a435 = alloca { ptr, i64, i64 }, align 16 + %a439 = alloca { ptr, i64, i64 }, 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 %a447 = alloca { ptr, i64, i64 }, align 16 - %a448 = alloca { ptr, i64, i64 }, align 16 + %a451 = alloca { ptr, i64, i64 }, align 16 + %a453 = 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 %a457 = alloca { ptr, i64, i64 }, align 16 + %a459 = alloca { ptr, i64, i64 }, align 16 %a462 = alloca { ptr, i64, i64 }, align 16 - %a473 = alloca i64, align 16 + %a463 = alloca { ptr, i64, i64 }, align 16 + %a471 = alloca { ptr, i64, i64 }, align 16 + %a472 = alloca { ptr, i64, i64 }, align 16 + %a473 = alloca { ptr, i64, i64 }, align 16 + %a476 = alloca { ptr, i64, i64 }, align 16 + %a477 = alloca { ptr, i64, i64 }, align 16 + %a478 = alloca { ptr, i64, i64 }, align 16 + %a479 = alloca { ptr, i64, 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 + %a496 = 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 + %a513 = alloca { ptr, i64, i64 }, align 16 + %a514 = alloca { ptr, i64, i64 }, align 16 %a515 = alloca { ptr, i64, i64 }, align 16 - %a516 = 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 + %a523 = alloca { ptr, i64, i64 }, align 16 + %a524 = alloca { ptr, i64, i64 }, align 16 + %a529 = 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 + %a541 = alloca i64, align 16 %a555 = alloca { ptr, i64, i64 }, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a564 = 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 + %a560 = alloca { ptr, i64, i64 }, align 16 + %a561 = alloca { ptr, i64, i64 }, align 16 + %a562 = 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 + %a571 = 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 + %a575 = alloca { ptr, i64, i64 }, align 16 + %a577 = alloca { ptr, i64, i64 }, align 16 + %a578 = 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 - %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 + %a604 = alloca { ptr, i64, i64 }, align 16 + %a605 = alloca { ptr, i64, i64 }, align 16 + %a606 = 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 + %a612 = 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 %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 + %a648 = alloca { ptr, i64, i64 }, align 16 + %a649 = alloca { ptr, i64, i64 }, align 16 + %a650 = alloca { ptr, i64, i64 }, align 16 + %a651 = 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 + %a670 = 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 + %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 - %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 + %a696 = alloca %S.gen.Val, align 16 + %a699 = alloca %S.ast.Type, align 16 + %a700 = alloca %S.ast.Type, align 16 + %a702 = alloca %S.ast.Type, align 16 + %a705 = alloca { ptr, i64, i64 }, align 16 + %a706 = alloca { ptr, i64, i64 }, align 16 + %a720 = alloca %S.gen.Val, align 16 + %a721 = alloca %S.gen.Val, 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 - %a746 = 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 + %a732 = alloca { ptr, i64, i64 }, align 16 + %a737 = alloca { ptr, i64, i64 }, align 16 + %a738 = 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 - %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 - %a777 = alloca i64, align 16 - %a780 = alloca i64, align 16 - %a785 = alloca { ptr, i64, i64 }, align 16 - %a786 = alloca { ptr, i64, i64 }, align 16 + %a756 = alloca { ptr, i64, i64 }, align 16 + %a759 = alloca { ptr, i64, i64 }, align 16 + %a760 = alloca { ptr, i64, i64 }, align 16 + %a768 = alloca %S.ast.Type, align 16 + %a770 = alloca { ptr, i64, i64 }, align 16 + %a773 = alloca %S.ast.Type, align 16 + %a776 = alloca { ptr, i64, i64 }, align 16 + %a777 = alloca { ptr, i64, i64 }, align 16 + %a784 = alloca { ptr, i64, i64 }, align 16 + %a787 = alloca %S.ast.Type, align 16 + %a790 = alloca { ptr, i64, i64 }, align 16 + %a791 = 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 - %a800 = alloca { ptr, i64, i64 }, align 16 %a801 = alloca { ptr, i64, i64 }, align 16 - %a816 = alloca { ptr, i64, i64 }, align 16 + %a802 = alloca { ptr, i64, i64 }, align 16 + %a803 = alloca { ptr, i64, i64 }, align 16 + %a804 = alloca { ptr, i64, i64 }, align 16 + %a807 = alloca { ptr, i64, i64 }, align 16 + %a809 = alloca { ptr, i64, i64 }, align 16 + %a812 = alloca %S.ast.Type, align 16 %a817 = alloca { ptr, i64, i64 }, align 16 %a818 = 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 - %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 - %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 - %a839 = alloca { ptr, i64, i64 }, align 16 - %a840 = alloca { ptr, i64, i64 }, align 16 + %a831 = alloca %S.ast.Type, align 16 + %a833 = alloca { ptr, i64, i64 }, align 16 + %a836 = alloca %S.ast.Type, align 16 %a841 = alloca { ptr, i64, i64 }, align 16 + %a842 = alloca { ptr, i64, i64 }, align 16 + %a843 = alloca { ptr, i64, i64 }, align 16 %a844 = alloca { ptr, i64, i64 }, align 16 - %a845 = alloca { ptr, i64, i64 }, align 16 %a847 = alloca { ptr, i64, i64 }, align 16 %a848 = alloca { ptr, i64, i64 }, align 16 %a849 = 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 - %a856 = alloca { ptr, i64, i64 }, align 16 - %a857 = alloca { ptr, i64, i64 }, align 16 - %a858 = alloca { ptr, i64, i64 }, align 16 + %a850 = alloca { ptr, i64, i64 }, align 16 + %a860 = alloca { ptr, i64, i64 }, align 16 + %a861 = alloca { ptr, i64, i64 }, align 16 + %a863 = 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 + %a893 = 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 + %a897 = alloca i64, align 16 + %a900 = alloca i64, align 16 %a905 = alloca { ptr, i64, i64 }, align 16 - %a909 = alloca { ptr, i64, i64 }, align 16 + %a906 = 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 + %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 - %a925 = alloca { ptr, i64, i64 }, align 16 - %a926 = alloca { ptr, i64, i64 }, align 16 - %a927 = 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 - %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 + %a937 = alloca { ptr, i64, i64 }, align 16 + %a938 = alloca { ptr, i64, i64 }, align 16 + %a939 = alloca { ptr, i64, i64 }, align 16 + %a941 = alloca { ptr, i64, i64 }, align 16 + %a942 = alloca { ptr, i64, i64 }, align 16 + %a943 = alloca { ptr, i64, i64 }, align 16 + %a944 = alloca { ptr, i64, i64 }, align 16 + %a947 = alloca { ptr, i64, i64 }, align 16 + %a948 = alloca { ptr, i64, i64 }, align 16 + %a949 = alloca { ptr, i64, i64 }, align 16 + %a950 = alloca { ptr, i64, i64 }, align 16 + %a952 = alloca { ptr, i64, i64 }, align 16 + %a953 = alloca { ptr, i64, i64 }, align 16 + %a954 = alloca { ptr, i64, i64 }, align 16 + %a955 = alloca { ptr, i64, i64 }, align 16 + %a959 = alloca { ptr, i64, i64 }, align 16 + %a960 = alloca { ptr, i64, i64 }, align 16 + %a961 = alloca { ptr, i64, i64 }, align 16 %a962 = alloca { ptr, i64, i64 }, align 16 + %a964 = alloca { ptr, i64, i64 }, align 16 + %a965 = 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 + %a970 = alloca { ptr, i64, i64 }, align 16 + %a971 = alloca { ptr, i64, i64 }, align 16 + %a973 = 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 + %a977 = alloca { ptr, i64, i64 }, align 16 + %a980 = alloca { ptr, i64, i64 }, align 16 + %a981 = alloca { ptr, i64, i64 }, align 16 + %a982 = alloca { ptr, i64, i64 }, align 16 + %a983 = alloca { ptr, i64, i64 }, align 16 + %a985 = alloca { ptr, i64, i64 }, align 16 + %a986 = alloca { ptr, i64, i64 }, align 16 + %a987 = alloca { ptr, i64, i64 }, align 16 + %a988 = alloca { ptr, i64, i64 }, align 16 %a994 = 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 %a1004 = alloca { ptr, i64, i64 }, align 16 - %a1005 = alloca { ptr, i64, i64 }, align 16 - %a1006 = alloca { ptr, i64, i64 }, align 16 + %a1007 = 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 + %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 - %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 + %a1020 = alloca { ptr, i64, i64 }, align 16 + %a1021 = 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 + %a1027 = 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 - %a1036 = alloca %S.ast.Type, align 16 - %a1037 = alloca %S.ast.Type, align 16 + %a1033 = alloca { ptr, i64, i64 }, align 16 + %a1036 = alloca { ptr, i64, i64 }, align 16 + %a1037 = alloca { ptr, i64, i64 }, align 16 + %a1038 = alloca { ptr, i64, i64 }, align 16 + %a1039 = alloca { ptr, i64, i64 }, align 16 + %a1041 = alloca { ptr, i64, i64 }, align 16 + %a1042 = alloca { ptr, i64, i64 }, align 16 + %a1043 = alloca { ptr, i64, i64 }, align 16 + %a1044 = alloca { ptr, i64, i64 }, align 16 + %a1048 = alloca { ptr, i64, i64 }, align 16 + %a1049 = alloca { ptr, i64, i64 }, align 16 + %a1050 = alloca { ptr, i64, i64 }, align 16 + %a1051 = alloca { ptr, i64, i64 }, align 16 + %a1053 = 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 + %a1060 = alloca { ptr, i64, i64 }, align 16 + %a1062 = alloca { ptr, i64, i64 }, align 16 + %a1063 = alloca { ptr, i64, i64 }, align 16 + %a1064 = alloca { ptr, i64, i64 }, align 16 + %a1065 = alloca { ptr, i64, i64 }, align 16 + %a1066 = alloca { ptr, i64, i64 }, align 16 + %a1068 = 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 + %a1073 = alloca { ptr, i64, i64 }, align 16 + %a1076 = alloca { ptr, i64, i64 }, align 16 + %a1077 = alloca { ptr, i64, i64 }, align 16 + %a1086 = alloca %S.ast.Type, align 16 + %a1087 = alloca %S.ast.Type, align 16 + %a1103 = alloca { ptr, i64, i64 }, align 16 + %a1106 = alloca %S.ast.Type, align 16 + %a1107 = alloca %S.ast.Type, align 16 + %a1113 = alloca { ptr, i64, i64 }, align 16 + %a1120 = alloca { ptr, i64, i64 }, align 16 + %a1121 = alloca { ptr, i64, i64 }, align 16 + %a1126 = alloca { ptr, i64, i64 }, align 16 + %a1139 = alloca { ptr, i64, i64 }, align 16 + %a1142 = alloca %S.ast.Type, align 16 + %a1143 = alloca %S.ast.Type, align 16 + %a1148 = alloca { ptr, i64, i64 }, align 16 + %a1149 = alloca { ptr, i64, i64 }, align 16 + %a1154 = alloca { ptr, i64, i64 }, align 16 + %a1159 = alloca { ptr, i64, i64 }, align 16 + %a1160 = alloca { ptr, i64, i64 }, align 16 + %a1161 = alloca { ptr, i64, i64 }, align 16 + %a1163 = alloca { ptr, i64, i64 }, align 16 + %a1164 = alloca { ptr, i64, i64 }, align 16 + %a1165 = alloca { ptr, i64, i64 }, align 16 + %a1166 = alloca { ptr, i64, i64 }, align 16 + %a1169 = alloca { ptr, i64, i64 }, align 16 + %a1170 = alloca { ptr, i64, i64 }, align 16 + %a1171 = alloca { ptr, i64, i64 }, align 16 + %a1172 = alloca { ptr, i64, i64 }, align 16 + %a1174 = alloca { ptr, i64, i64 }, align 16 + %a1175 = alloca { ptr, i64, i64 }, align 16 + %a1176 = alloca { ptr, i64, i64 }, align 16 + %a1177 = alloca { ptr, i64, i64 }, align 16 + %a1179 = alloca { ptr, i64, i64 }, align 16 + %a1185 = alloca %S.ast.Type, align 16 + %a1186 = alloca %S.ast.Type, align 16 + %a1190 = alloca { ptr, i64, i64 }, align 16 + %a1191 = alloca { ptr, i64, i64 }, align 16 + %a1195 = alloca %S.ast.Type, align 16 + %a1196 = 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 = 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) + br i1 %t5, label %panic7538, label %ok7539 +panic7538: + call void @finch_panic(ptr @.str.4814, i64 4427, ptr @.str.4815) unreachable -ok7161: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 26 +ok7539: + %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 27 %t7 = load i1, ptr %t6 - br i1 %t7, label %then7162, label %endif7164 -then7162: + br i1 %t7, label %then7540, label %endif7542 +then7540: 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: + br label %each.cond7543 +each.cond7543: %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: + br i1 %t14, label %each.body7544, label %each.end7546 +each.body7544: %t15 = load ptr, ptr %t9 %t16 = getelementptr inbounds %S.ast.Type, ptr %t15, i64 %t13 %t17 = load %S.ast.Type, ptr %t16 @@ -64436,27 +76236,27 @@ each.body7166: %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: + br label %each.step7545 +each.step7545: %t26 = load i64, ptr %a10 %t27 = add i64 %t26, 1 store i64 %t27, ptr %a10 - br label %each.cond7165 -each.end7168: + br label %each.cond7543 +each.end7546: %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: + br i1 %t29, label %then7547, label %endif7549 +then7547: %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 { ptr, i64, i64 } { ptr @.str.4816, i64 3, i64 0 }, ptr %t34 store i64 %t32, ptr %t30 - br label %endif7171 -endif7171: + br label %endif7549 +endif7549: %t35 = load ptr, ptr %a1 %t36 = load %S.ast.Node, ptr %a2 %t37 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 @@ -64466,1327 +76266,1727 @@ endif7171: %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 } { ptr @.str.4817, 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 + store { ptr, i64, i64 } { ptr @.str.4818, 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 - store { ptr, i64, i64 } %t68, ptr %a70 - store { ptr, i64, i64 } { ptr @.str.4647, i64 1, i64 0 }, ptr %a71 + store { ptr, i64, i64 } %t47, ptr %a51 + call void @finch_str_drop(ptr %a51) + %t52 = load { ptr, i64, i64 }, ptr %a48 + %t53 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 2 + %t54 = load %S.ast.Type, ptr %t53 + %t55 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t54) + store { ptr, i64, i64 } %t52, ptr %a57 + store { ptr, i64, i64 } %t55, ptr %a58 + call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) + store { ptr, i64, i64 } %t52, ptr %a59 + call void @finch_str_drop(ptr %a59) + store { ptr, i64, i64 } %t55, ptr %a60 + call void @finch_str_drop(ptr %a60) + %t61 = load { ptr, i64, i64 }, ptr %a56 + store { ptr, i64, i64 } %t61, ptr %a63 + store { ptr, i64, i64 } { ptr @.str.4819, i64 1, i64 0 }, ptr %a64 + call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) + store { ptr, i64, i64 } %t61, ptr %a65 + call void @finch_str_drop(ptr %a65) + %t66 = load { ptr, i64, i64 }, ptr %a62 + %t67 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 + %t68 = load { ptr, i64, i64 }, ptr %t67 + store { ptr, i64, i64 } %t66, 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 = 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 + store { ptr, i64, i64 } %t66, ptr %a72 + call void @finch_str_drop(ptr %a72) + %t73 = load { ptr, i64, i64 }, ptr %a69 + store { ptr, i64, i64 } %t73, ptr %a75 + store { ptr, i64, i64 } { ptr @.str.4820, i64 1, i64 0 }, ptr %a76 + call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) + store { ptr, i64, i64 } %t73, ptr %a77 + call void @finch_str_drop(ptr %a77) + %t78 = load { ptr, i64, i64 }, ptr %a74 + %t79 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.4821, i64 2, i64 0 }, ptr %a80 + call void @finch_str_join(ptr %a81, ptr %a8, ptr %a80) + %t82 = load { ptr, i64, i64 }, ptr %a81 + store { ptr, i64, i64 } %t78, ptr %a84 + store { ptr, i64, i64 } %t82, ptr %a85 + call void @finch_str_concat(ptr %a83, ptr %a84, ptr %a85) + store { ptr, i64, i64 } %t78, ptr %a86 + call void @finch_str_drop(ptr %a86) + store { ptr, i64, i64 } %t82, ptr %a87 + call void @finch_str_drop(ptr %a87) + %t88 = load { ptr, i64, i64 }, ptr %a83 + store { ptr, i64, i64 } %t88, ptr %a90 + store { ptr, i64, i64 } { ptr @.str.4822, i64 5, i64 0 }, ptr %a91 + call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) + store { ptr, i64, i64 } %t88, ptr %a92 + call void @finch_str_drop(ptr %a92) + %t93 = load { ptr, i64, i64 }, ptr %a89 + call void @finch.gen.noteRef(ptr %t35, %S.ast.Node %t36, i64 %t38, i64 %t41, { ptr, i64, i64 } %t93, { ptr, i64, i64 } { ptr @.str.4823, i64 0, i64 0 }, i64 0, i64 0) + store { ptr, i64, i64 } %t93, ptr %a94 + call void @finch_str_drop(ptr %a94) + call void @finch.drop.arr_str(ptr %a8) + br label %endif7542 +endif7542: + %t95 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 5 + %t96 = getelementptr inbounds { ptr, i64, i64 }, ptr %t95, i32 0, i32 1 + %t97 = load i64, ptr %t96 + %t98 = icmp sgt i64 %t97, 0 + br i1 %t98, label %then7550, label %endif7552 +then7550: + %t99 = load ptr, ptr %a1 + %t100 = load %S.ast.Node, ptr %a2 + %t101 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 %t102 = load { ptr, i64, i64 }, ptr %t101 - store { ptr, i64, i64 } %t100, ptr %a104 + store { ptr, i64, i64 } { ptr @.str.4824, i64 16, 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 - 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 } %t106, ptr %a108 + store { ptr, i64, i64 } { ptr @.str.4825, i64 35, i64 0 }, ptr %a109 + call void @finch_str_concat(ptr %a107, ptr %a108, ptr %a109) + store { ptr, i64, i64 } %t106, ptr %a110 + call void @finch_str_drop(ptr %a110) + %t111 = load { ptr, i64, i64 }, ptr %a107 + %t112 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 5 + %t113 = load { ptr, i64, i64 }, ptr %t112 + store { ptr, i64, i64 } %t111, ptr %a115 + store { ptr, i64, i64 } %t113, ptr %a116 + call void @finch_str_concat(ptr %a114, ptr %a115, ptr %a116) + store { ptr, i64, i64 } %t111, ptr %a117 + call void @finch_str_drop(ptr %a117) + %t118 = load { ptr, i64, i64 }, ptr %a114 + call void @finch.gen.fail(ptr %t99, %S.ast.Node %t100, { ptr, i64, i64 } %t118) + store { ptr, i64, i64 } %t118, ptr %a119 + call void @finch_str_drop(ptr %a119) + br label %endif7552 +endif7552: + %t120 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t121 = getelementptr inbounds { ptr, i64, i64 }, ptr %t120, i32 0, i32 1 + %t122 = load i64, ptr %t121 + store i64 %t122, ptr %a123 + %t124 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 4 + %t125 = load i1, ptr %t124 + br i1 %t125, label %then7553, label %else7554 +then7553: + %t126 = load i64, ptr %a123 + %t127 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 + %t128 = getelementptr inbounds { ptr, i64, i64 }, ptr %t127, i32 0, i32 1 + %t129 = load i64, ptr %t128 + %t130 = icmp slt i64 %t126, %t129 + br i1 %t130, label %then7556, label %endif7558 +then7556: + %t131 = load ptr, ptr %a1 + %t132 = load %S.ast.Node, ptr %a2 + %t133 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 + %t134 = load { ptr, i64, i64 }, ptr %t133 + store { ptr, i64, i64 } { ptr @.str.4826, i64 1, 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.4655, i64 22, i64 0 }, ptr %a141 + store { ptr, i64, i64 } { ptr @.str.4827, i64 17, 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 + store { ptr, i64, i64 } %t138, ptr %a142 + call void @finch_str_drop(ptr %a142) + %t143 = load { ptr, i64, i64 }, ptr %a139 + %t144 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 + %t145 = getelementptr inbounds { ptr, i64, i64 }, ptr %t144, i32 0, i32 1 + %t146 = load i64, ptr %t145 + call void @finch_str_from_int(ptr %a147, i64 %t146) + %t148 = load { ptr, i64, i64 }, ptr %a147 + store { ptr, i64, i64 } %t143, ptr %a150 + store { ptr, i64, i64 } %t148, ptr %a151 + call void @finch_str_concat(ptr %a149, ptr %a150, ptr %a151) + store { ptr, i64, i64 } %t143, ptr %a152 + call void @finch_str_drop(ptr %a152) + store { ptr, i64, i64 } %t148, ptr %a153 + call void @finch_str_drop(ptr %a153) + %t154 = load { ptr, i64, i64 }, ptr %a149 + store { ptr, i64, i64 } %t154, ptr %a156 + store { ptr, i64, i64 } { ptr @.str.4828, i64 22, i64 0 }, ptr %a157 + call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) + store { ptr, i64, i64 } %t154, ptr %a158 + call void @finch_str_drop(ptr %a158) + %t159 = load { ptr, i64, i64 }, ptr %a155 + %t160 = load i64, ptr %a123 + call void @finch_str_from_int(ptr %a161, i64 %t160) + %t162 = load { ptr, i64, i64 }, ptr %a161 + store { ptr, i64, i64 } %t159, 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 - %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 - 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 + store { ptr, i64, i64 } %t159, ptr %a166 + call void @finch_str_drop(ptr %a166) + store { ptr, i64, i64 } %t162, ptr %a167 + call void @finch_str_drop(ptr %a167) + %t168 = load { ptr, i64, i64 }, ptr %a163 + call void @finch.gen.fail(ptr %t131, %S.ast.Node %t132, { ptr, i64, i64 } %t168) + store { ptr, i64, i64 } %t168, ptr %a169 + call void @finch_str_drop(ptr %a169) + br label %endif7558 +endif7558: + br label %endif7555 +else7554: + %t170 = load i64, ptr %a123 + %t171 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 + %t172 = getelementptr inbounds { ptr, i64, i64 }, ptr %t171, i32 0, i32 1 + %t173 = load i64, ptr %t172 + %t174 = icmp ne i64 %t170, %t173 + br i1 %t174, label %then7559, label %endif7561 +then7559: + %t175 = load ptr, ptr %a1 + %t176 = load %S.ast.Node, ptr %a2 + %t177 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 + %t178 = load { ptr, i64, i64 }, ptr %t177 + store { ptr, i64, i64 } { ptr @.str.4829, 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 + store { ptr, i64, i64 } %t182, ptr %a184 + store { ptr, i64, i64 } { ptr @.str.4830, i64 8, 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.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 + store { ptr, i64, i64 } %t182, ptr %a186 + call void @finch_str_drop(ptr %a186) + %t187 = load { ptr, i64, i64 }, ptr %a183 + %t188 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 + %t189 = getelementptr inbounds { ptr, i64, i64 }, ptr %t188, i32 0, i32 1 + %t190 = load i64, ptr %t189 + call void @finch_str_from_int(ptr %a191, i64 %t190) + %t192 = load { ptr, i64, i64 }, ptr %a191 + store { ptr, i64, i64 } %t187, ptr %a194 + store { ptr, i64, i64 } %t192, ptr %a195 + call void @finch_str_concat(ptr %a193, ptr %a194, ptr %a195) + store { ptr, i64, i64 } %t187, ptr %a196 + call void @finch_str_drop(ptr %a196) + store { ptr, i64, i64 } %t192, ptr %a197 + call void @finch_str_drop(ptr %a197) + %t198 = load { ptr, i64, i64 }, ptr %a193 + store { ptr, i64, i64 } %t198, ptr %a200 + store { ptr, i64, i64 } { ptr @.str.4831, i64 22, i64 0 }, ptr %a201 + call void @finch_str_concat(ptr %a199, ptr %a200, ptr %a201) + store { ptr, i64, i64 } %t198, ptr %a202 + call void @finch_str_drop(ptr %a202) + %t203 = load { ptr, i64, i64 }, ptr %a199 + %t204 = load i64, ptr %a123 + call void @finch_str_from_int(ptr %a205, i64 %t204) + %t206 = load { ptr, i64, i64 }, ptr %a205 + store { ptr, i64, i64 } %t203, ptr %a208 + store { ptr, i64, i64 } %t206, ptr %a209 + call void @finch_str_concat(ptr %a207, ptr %a208, ptr %a209) + store { ptr, i64, i64 } %t203, ptr %a210 + call void @finch_str_drop(ptr %a210) + store { ptr, i64, i64 } %t206, ptr %a211 + call void @finch_str_drop(ptr %a211) + %t212 = load { ptr, i64, i64 }, ptr %a207 + call void @finch.gen.fail(ptr %t175, %S.ast.Node %t176, { ptr, i64, i64 } %t212) + store { ptr, i64, i64 } %t212, ptr %a213 + call void @finch_str_drop(ptr %a213) + br label %endif7561 +endif7561: + br label %endif7555 +endif7555: %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 + %t215 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 2 + %t216 = load %S.ast.Type, ptr %t215 + %t217 = load %S.ast.Node, ptr %a2 + %t218 = call %S.ast.Type @finch.gen.resolve(ptr %t214, %S.ast.Type %t216, %S.ast.Node %t217) + store %S.ast.Type %t218, ptr %a219 + %t220 = load ptr, ptr %a1 + %t221 = load %S.ast.Node, ptr %a2 + %t222 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 + %t223 = load { ptr, i64, i64 }, ptr %t222 + %t224 = load %S.ast.Type, ptr %a219 + call void @finch.gen.checkByValue(ptr %t220, %S.ast.Node %t221, { ptr, i64, i64 } %t223, %S.ast.Type %t224, { ptr, i64, i64 } { ptr @.str.4832, i64 7, i64 0 }) + store { ptr, i64, i64 } zeroinitializer, ptr %a225 + %t226 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 + store i64 0, ptr %a227 + br label %each.cond7562 +each.cond7562: + %t228 = getelementptr inbounds { ptr, i64, i64 }, ptr %t226, i32 0, i32 1 + %t229 = load i64, ptr %t228 + %t230 = load i64, ptr %a227 + %t231 = icmp slt i64 %t230, %t229 + br i1 %t231, label %each.body7563, label %each.end7565 +each.body7563: + %t232 = load ptr, ptr %t226 + %t233 = getelementptr inbounds %S.ast.Type, ptr %t232, i64 %t230 + %t234 = load %S.ast.Type, ptr %t233 + store %S.ast.Type %t234, ptr %a235 + %t236 = load ptr, ptr %a1 + %t237 = load %S.ast.Type, ptr %a235 + %t238 = load %S.ast.Node, ptr %a2 + %t239 = call %S.ast.Type @finch.gen.resolve(ptr %t236, %S.ast.Type %t237, %S.ast.Node %t238) + store %S.ast.Type %t239, ptr %a240 %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) + %t242 = load %S.ast.Node, ptr %a2 + %t243 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 + %t244 = load { ptr, i64, i64 }, ptr %t243 + %t245 = load %S.ast.Type, ptr %a240 + call void @finch.gen.checkByValue(ptr %t241, %S.ast.Node %t242, { ptr, i64, i64 } %t244, %S.ast.Type %t245, { ptr, i64, i64 } { ptr @.str.4833, i64 5, i64 0 }) + %t246 = getelementptr inbounds { ptr, i64, i64 }, ptr %a225, i32 0, i32 1 + %t247 = load %S.ast.Type, ptr %a240 + store %S.ast.Type %t247, ptr %a248 + call void @finch.copy.S_ast_Type(ptr %a249, ptr %a248) + %t250 = load %S.ast.Type, ptr %a249 + %t251 = load i64, ptr %t246 + %t252 = add i64 %t251, 1 + call void @finch_arr_reserve(ptr %a225, i64 %t252, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) + %t253 = load ptr, ptr %a225 + %t254 = getelementptr inbounds %S.ast.Type, ptr %t253, i64 %t251 + store %S.ast.Type %t250, ptr %t254 + store i64 %t252, ptr %t246 + call void @finch.drop.S_ast_Type(ptr %a240) + br label %each.step7564 +each.step7564: + %t255 = load i64, ptr %a227 + %t256 = add i64 %t255, 1 + store i64 %t256, ptr %a227 + br label %each.cond7562 +each.end7565: + %t257 = load ptr, ptr %a1 + %t258 = load %S.ast.Type, ptr %a219 + %t259 = load { ptr, i64, i64 }, ptr %a225 + %t260 = call %S.gen.Plan @finch.gen.makePlan(ptr %t257, %S.ast.Type %t258, { ptr, i64, i64 } %t259) + store %S.gen.Plan %t260, ptr %a261 + store { ptr, i64, i64 } zeroinitializer, ptr %a262 + store { ptr, i64, i64 } zeroinitializer, ptr %a263 + store { ptr, i64, i64 } { ptr @.str.4834, i64 0, i64 0 }, ptr %a264 + %t265 = getelementptr inbounds %S.gen.Plan, ptr %a261, i32 0, i32 3 + %t266 = load i1, ptr %t265 + br i1 %t266, label %then7566, label %endif7568 +then7566: + %t267 = load ptr, ptr %a1 + %t268 = load ptr, ptr %a1 + %t269 = load %S.ast.Type, ptr %a219 + %t270 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t268, %S.ast.Type %t269) + %t271 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t267, { ptr, i64, i64 } %t270) + store { ptr, i64, i64 } %t270, ptr %a272 + call void @finch_str_drop(ptr %a272) + %t273 = load { ptr, i64, i64 }, ptr %a264 + store { ptr, i64, i64 } %t271, ptr %a264 + store { ptr, i64, i64 } %t273, ptr %a274 + call void @finch_str_drop(ptr %a274) + %t275 = getelementptr inbounds { ptr, i64, i64 }, ptr %a262, i32 0, i32 1 + %t276 = load ptr, ptr %a1 + %t277 = load %S.ast.Type, ptr %a219 + %t278 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t276, %S.ast.Type %t277) + store { ptr, i64, i64 } { ptr @.str.4835, i64 9, i64 0 }, ptr %a280 + store { ptr, i64, i64 } %t278, ptr %a281 + call void @finch_str_concat(ptr %a279, ptr %a280, ptr %a281) + store { ptr, i64, i64 } %t278, ptr %a282 + call void @finch_str_drop(ptr %a282) + %t283 = load { ptr, i64, i64 }, ptr %a279 + store { ptr, i64, i64 } %t283, ptr %a285 + store { ptr, i64, i64 } { ptr @.str.4836, i64 10, i64 0 }, ptr %a286 + call void @finch_str_concat(ptr %a284, ptr %a285, ptr %a286) + store { ptr, i64, i64 } %t283, ptr %a287 + call void @finch_str_drop(ptr %a287) + %t288 = load { ptr, i64, i64 }, ptr %a284 + %t289 = load i64, ptr %t275 + %t290 = add i64 %t289, 1 + call void @finch_arr_reserve(ptr %a262, i64 %t290, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t291 = load ptr, ptr %a262 + %t292 = getelementptr inbounds { ptr, i64, i64 }, ptr %t291, i64 %t289 + store { ptr, i64, i64 } %t288, ptr %t292 + store i64 %t290, ptr %t275 + %t293 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 + %t294 = load ptr, ptr %a1 + %t295 = load %S.ast.Type, ptr %a219 + %t296 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t294, %S.ast.Type %t295) + store { ptr, i64, i64 } { ptr @.str.4837, i64 9, i64 0 }, ptr %a298 + store { ptr, i64, i64 } %t296, ptr %a299 + call void @finch_str_concat(ptr %a297, ptr %a298, ptr %a299) + store { ptr, i64, i64 } %t296, ptr %a300 + call void @finch_str_drop(ptr %a300) + %t301 = load { ptr, i64, i64 }, ptr %a297 + store { ptr, i64, i64 } %t301, ptr %a303 + store { ptr, i64, i64 } { ptr @.str.4838, i64 11, i64 0 }, ptr %a304 + call void @finch_str_concat(ptr %a302, ptr %a303, ptr %a304) + store { ptr, i64, i64 } %t301, ptr %a305 + call void @finch_str_drop(ptr %a305) + %t306 = load { ptr, i64, i64 }, ptr %a302 + %t307 = load { ptr, i64, i64 }, ptr %a264 + store { ptr, i64, i64 } %t306, ptr %a309 + store { ptr, i64, i64 } %t307, ptr %a310 + call void @finch_str_concat(ptr %a308, ptr %a309, ptr %a310) + store { ptr, i64, i64 } %t306, ptr %a311 + call void @finch_str_drop(ptr %a311) + %t312 = load { ptr, i64, i64 }, ptr %a308 + %t313 = load i64, ptr %t293 + %t314 = add i64 %t313, 1 + call void @finch_arr_reserve(ptr %a263, i64 %t314, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t315 = load ptr, ptr %a263 + %t316 = getelementptr inbounds { ptr, i64, i64 }, ptr %t315, i64 %t313 + store { ptr, i64, i64 } %t312, ptr %t316 + store i64 %t314, ptr %t293 + br label %endif7568 +endif7568: + store { ptr, i64, i64 } zeroinitializer, ptr %a317 + %t318 = load ptr, ptr %a1 + %t319 = icmp eq ptr %t318, null + br i1 %t319, label %panic7569, label %ok7570 +panic7569: + call void @finch_panic(ptr @.str.4839, i64 4466, ptr @.str.4840) unreachable -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) +ok7570: + %t320 = getelementptr inbounds %S.gen.Gen, ptr %t318, i32 0, i32 11 + %t321 = getelementptr inbounds { ptr, i64, i64 }, ptr %t320, i32 0, i32 1 + %t322 = load i64, ptr %t321 + store i64 %t322, ptr %a323 + %t324 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t325 = getelementptr inbounds { ptr, i64, i64 }, ptr %t324, i32 0, i32 1 + %t326 = load i64, ptr %t325 + store i64 0, ptr %a327 + br label %for.cond7571 +for.cond7571: + %t328 = load i64, ptr %a327 + %t329 = icmp slt i64 %t328, %t326 + br i1 %t329, label %for.body7572, label %for.end7574 +for.body7572: + %t330 = load i64, ptr %a327 + %t331 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 + %t332 = getelementptr inbounds { ptr, i64, i64 }, ptr %t331, i32 0, i32 1 + %t333 = load i64, ptr %t332 + %t334 = icmp slt i64 %t330, %t333 + br i1 %t334, label %then7575, label %endif7577 +then7575: + %t335 = load i64, ptr %a327 + %t336 = load { ptr, i64, i64 }, ptr %a225 + %t337 = extractvalue { ptr, i64, i64 } %t336, 1 + %t338 = icmp uge i64 %t335, %t337 + br i1 %t338, label %range7578, label %inrange7579 +range7578: + call void @finch_panic_index(ptr @.str.4841, i64 4469, i64 %t335, i64 %t337) unreachable -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) +inrange7579: + %t339 = extractvalue { ptr, i64, i64 } %t336, 0 + %t340 = getelementptr inbounds %S.ast.Type, ptr %t339, i64 %t335 + %t341 = load %S.ast.Type, ptr %t340 + store %S.ast.Type %t341, ptr %a342 + call void @finch.copy.S_ast_Type(ptr %a343, ptr %a342) + %t344 = load %S.ast.Type, ptr %a343 + store %S.ast.Type %t344, ptr %a345 + %t346 = getelementptr inbounds %S.gen.Plan, ptr %a261, i32 0, i32 1 + %t347 = load i64, ptr %a327 + %t348 = load { ptr, i64, i64 }, ptr %t346 + %t349 = extractvalue { ptr, i64, i64 } %t348, 1 + %t350 = icmp uge i64 %t347, %t349 + br i1 %t350, label %range7580, label %inrange7581 +range7580: + call void @finch_panic_index(ptr @.str.4842, i64 4470, i64 %t347, i64 %t349) unreachable -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) +inrange7581: + %t351 = extractvalue { ptr, i64, i64 } %t348, 0 + %t352 = getelementptr inbounds %S.gen.Abi, ptr %t351, i64 %t347 + %t353 = load %S.gen.Abi, ptr %t352 + store %S.gen.Abi %t353, ptr %a354 + call void @finch.copy.S_gen_Abi(ptr %a355, ptr %a354) + %t356 = load %S.gen.Abi, ptr %a355 + store %S.gen.Abi %t356, ptr %a357 + %t358 = load ptr, ptr %a1 + %t359 = load ptr, ptr %a1 + %t360 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t361 = load i64, ptr %a327 + %t362 = load { ptr, i64, i64 }, ptr %t360 + %t363 = extractvalue { ptr, i64, i64 } %t362, 1 + %t364 = icmp uge i64 %t361, %t363 + br i1 %t364, label %range7582, label %inrange7583 +range7582: + call void @finch_panic_index(ptr @.str.4843, i64 4471, i64 %t361, i64 %t363) unreachable -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 - %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 +inrange7583: + %t365 = extractvalue { ptr, i64, i64 } %t362, 0 + %t366 = getelementptr inbounds %S.ast.Node, ptr %t365, i64 %t361 + %t367 = load %S.ast.Node, ptr %t366 + %t368 = load %S.ast.Type, ptr %a345 + %t369 = call %S.gen.Val @finch.gen.exprWant(ptr %t359, %S.ast.Node %t367, %S.ast.Type %t368) + %t370 = load %S.ast.Type, ptr %a345 + %t371 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t372 = load i64, ptr %a327 + %t373 = load { ptr, i64, i64 }, ptr %t371 + %t374 = extractvalue { ptr, i64, i64 } %t373, 1 + %t375 = icmp uge i64 %t372, %t374 + br i1 %t375, label %range7584, label %inrange7585 +range7584: + call void @finch_panic_index(ptr @.str.4844, i64 4471, i64 %t372, i64 %t374) + unreachable +inrange7585: + %t376 = extractvalue { ptr, i64, i64 } %t373, 0 + %t377 = getelementptr inbounds %S.ast.Node, ptr %t376, i64 %t372 + %t378 = load %S.ast.Node, ptr %t377 + %t379 = load i64, ptr %a327 + %t380 = add i64 %t379, 1 + call void @finch_str_from_int(ptr %a381, i64 %t380) + %t382 = load { ptr, i64, i64 }, ptr %a381 + store { ptr, i64, i64 } { ptr @.str.4845, i64 9, 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.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 } %t382, ptr %a386 + call void @finch_str_drop(ptr %a386) + %t387 = load { ptr, i64, i64 }, ptr %a383 + store { ptr, i64, i64 } %t387, ptr %a389 + store { ptr, i64, i64 } { ptr @.str.4846, i64 4, i64 0 }, ptr %a390 + call void @finch_str_concat(ptr %a388, ptr %a389, ptr %a390) + store { ptr, i64, i64 } %t387, ptr %a391 + call void @finch_str_drop(ptr %a391) + %t392 = load { ptr, i64, i64 }, ptr %a388 + %t393 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 + %t394 = load { ptr, i64, i64 }, ptr %t393 + store { ptr, i64, i64 } %t392, ptr %a396 + store { ptr, i64, i64 } %t394, ptr %a397 + call void @finch_str_concat(ptr %a395, ptr %a396, ptr %a397) + store { ptr, i64, i64 } %t392, ptr %a398 + call void @finch_str_drop(ptr %a398) + %t399 = load { ptr, i64, i64 }, ptr %a395 + %t400 = call %S.gen.Val @finch.gen.coerce(ptr %t358, %S.gen.Val %t369, %S.ast.Type %t370, %S.ast.Node %t378, { ptr, i64, i64 } %t399) + store %S.gen.Val %t369, ptr %a401 + call void @finch.drop.S_gen_Val(ptr %a401) + store { ptr, i64, i64 } %t399, ptr %a402 + call void @finch_str_drop(ptr %a402) + store %S.gen.Val %t400, ptr %a403 + %t404 = getelementptr inbounds { ptr, i64, i64 }, ptr %a317, i32 0, i32 1 + %t405 = load %S.gen.Val, ptr %a403 + store %S.gen.Val %t405, ptr %a406 + call void @finch.copy.S_gen_Val(ptr %a407, ptr %a406) + %t408 = load %S.gen.Val, ptr %a407 + %t409 = load i64, ptr %t404 + %t410 = add i64 %t409, 1 + call void @finch_arr_reserve(ptr %a317, i64 %t410, i64 ptrtoint (ptr getelementptr (%S.gen.Val, ptr null, i32 1) to i64)) + %t411 = load ptr, ptr %a317 + %t412 = getelementptr inbounds %S.gen.Val, ptr %t411, i64 %t409 + store %S.gen.Val %t408, ptr %t412 + store i64 %t410, ptr %t404 + %t413 = load ptr, ptr %a1 + %t414 = load %S.gen.Val, ptr %a403 + call void @finch.gen.hold(ptr %t413, %S.gen.Val %t414) + %t415 = getelementptr inbounds %S.gen.Abi, ptr %a357, i32 0, i32 0 + %t416 = load { ptr, i64, i64 }, ptr %t415 + store { ptr, i64, i64 } %t416, ptr %a417 + store { ptr, i64, i64 } { ptr @.str.4847, i64 6, i64 0 }, ptr %a418 + %t419 = call i32 @finch_str_eq(ptr %a417, ptr %a418) + %t420 = icmp ne i32 %t419, 0 + br i1 %t420, label %then7586, label %else7587 +then7586: + %t421 = load ptr, ptr %a1 + %t422 = load ptr, ptr %a1 + %t423 = load %S.ast.Type, ptr %a345 + %t424 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t422, %S.ast.Type %t423) + %t425 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t421, { ptr, i64, i64 } %t424) + store { ptr, i64, i64 } %t424, ptr %a426 + call void @finch_str_drop(ptr %a426) + store { ptr, i64, i64 } %t425, ptr %a427 + %t428 = load ptr, ptr %a1 + %t429 = load ptr, ptr %a1 + %t430 = load %S.ast.Type, ptr %a345 + %t431 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t429, %S.ast.Type %t430) + %t432 = getelementptr inbounds %S.gen.Val, ptr %a403, i32 0, i32 0 + %t433 = load { ptr, i64, i64 }, ptr %t432 + %t434 = load { ptr, i64, i64 }, ptr %a427 + call void @finch.gen.store(ptr %t428, { ptr, i64, i64 } %t431, { ptr, i64, i64 } %t433, { ptr, i64, i64 } %t434) + store { ptr, i64, i64 } %t431, ptr %a435 + call void @finch_str_drop(ptr %a435) + %t436 = load ptr, ptr %a1 + %t437 = load %S.ast.Type, ptr %a345 + %t438 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t436, %S.ast.Type %t437) + store { ptr, i64, i64 } { ptr @.str.4848, i64 10, i64 0 }, ptr %a440 + store { ptr, i64, i64 } %t438, ptr %a441 + call void @finch_str_concat(ptr %a439, ptr %a440, ptr %a441) + store { ptr, i64, i64 } %t438, ptr %a442 + call void @finch_str_drop(ptr %a442) + %t443 = load { ptr, i64, i64 }, ptr %a439 + store { ptr, i64, i64 } %t443, ptr %a445 + store { ptr, i64, i64 } { ptr @.str.4849, i64 8, i64 0 }, ptr %a446 + call void @finch_str_concat(ptr %a444, ptr %a445, ptr %a446) + store { ptr, i64, i64 } %t443, ptr %a447 + call void @finch_str_drop(ptr %a447) + %t448 = load { ptr, i64, i64 }, ptr %a444 + %t449 = getelementptr inbounds %S.gen.Abi, ptr %a357, i32 0, i32 3 + %t450 = load i64, ptr %t449 + call void @finch_str_from_int(ptr %a451, i64 %t450) + %t452 = load { ptr, i64, i64 }, ptr %a451 + store { ptr, i64, i64 } %t448, ptr %a454 + store { ptr, i64, i64 } %t452, ptr %a455 + call void @finch_str_concat(ptr %a453, ptr %a454, ptr %a455) + store { ptr, i64, i64 } %t448, ptr %a456 + call void @finch_str_drop(ptr %a456) + store { ptr, i64, i64 } %t452, ptr %a457 + call void @finch_str_drop(ptr %a457) + %t458 = load { ptr, i64, i64 }, ptr %a453 + store { ptr, i64, i64 } %t458, ptr %a459 + %t460 = getelementptr inbounds { ptr, i64, i64 }, ptr %a262, i32 0, i32 1 + %t461 = load { ptr, i64, i64 }, ptr %a459 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) + call void @finch_str_copy(ptr %a463, ptr %a462) + %t464 = load { ptr, i64, i64 }, ptr %a463 + %t465 = load i64, ptr %t460 + %t466 = add i64 %t465, 1 + call void @finch_arr_reserve(ptr %a262, i64 %t466, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t467 = load ptr, ptr %a262 + %t468 = getelementptr inbounds { ptr, i64, i64 }, ptr %t467, i64 %t465 + store { ptr, i64, i64 } %t464, ptr %t468 + store i64 %t466, ptr %t460 + %t469 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 + %t470 = load { ptr, i64, i64 }, ptr %a459 + store { ptr, i64, i64 } %t470, ptr %a472 + store { ptr, i64, i64 } { ptr @.str.4850, i64 1, i64 0 }, ptr %a473 + call void @finch_str_concat(ptr %a471, ptr %a472, ptr %a473) + %t474 = load { ptr, i64, i64 }, ptr %a471 + %t475 = load { ptr, i64, i64 }, ptr %a427 + store { ptr, i64, i64 } %t474, ptr %a477 + store { ptr, i64, i64 } %t475, ptr %a478 + call void @finch_str_concat(ptr %a476, ptr %a477, ptr %a478) + store { ptr, i64, i64 } %t474, ptr %a479 + call void @finch_str_drop(ptr %a479) + %t480 = load { ptr, i64, i64 }, ptr %a476 + %t481 = load i64, ptr %t469 + %t482 = add i64 %t481, 1 + call void @finch_arr_reserve(ptr %a263, i64 %t482, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t483 = load ptr, ptr %a263 + %t484 = getelementptr inbounds { ptr, i64, i64 }, ptr %t483, i64 %t481 + store { ptr, i64, i64 } %t480, ptr %t484 + store i64 %t482, ptr %t469 + call void @finch_str_drop(ptr %a459) + call void @finch_str_drop(ptr %a427) + br label %endif7588 +else7587: + %t485 = getelementptr inbounds %S.gen.Abi, ptr %a357, i32 0, i32 0 + %t486 = load { ptr, i64, i64 }, ptr %t485 + store { ptr, i64, i64 } %t486, ptr %a487 + store { ptr, i64, i64 } { ptr @.str.4851, i64 8, i64 0 }, ptr %a488 + %t489 = call i32 @finch_str_eq(ptr %a487, ptr %a488) + %t490 = icmp ne i32 %t489, 0 + br i1 %t490, label %then7589, label %else7590 +then7589: + %t491 = load ptr, ptr %a1 + %t492 = load ptr, ptr %a1 + %t493 = load %S.ast.Type, ptr %a345 + %t494 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t492, %S.ast.Type %t493) + %t495 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t491, { ptr, i64, i64 } %t494) + store { ptr, i64, i64 } %t494, ptr %a496 + call void @finch_str_drop(ptr %a496) + store { ptr, i64, i64 } %t495, ptr %a497 + %t498 = load ptr, ptr %a1 + %t499 = load ptr, ptr %a1 + %t500 = load %S.ast.Type, ptr %a345 + %t501 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t499, %S.ast.Type %t500) + %t502 = getelementptr inbounds %S.gen.Val, ptr %a403, i32 0, i32 0 + %t503 = load { ptr, i64, i64 }, ptr %t502 + %t504 = load { ptr, i64, i64 }, ptr %a497 + call void @finch.gen.store(ptr %t498, { ptr, i64, i64 } %t501, { ptr, i64, i64 } %t503, { ptr, i64, i64 } %t504) + store { ptr, i64, i64 } %t501, ptr %a505 + call void @finch_str_drop(ptr %a505) + %t506 = getelementptr inbounds { ptr, i64, i64 }, ptr %a262, i32 0, i32 1 + %t507 = load i64, ptr %t506 + %t508 = add i64 %t507, 1 + call void @finch_arr_reserve(ptr %a262, i64 %t508, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t509 = load ptr, ptr %a262 + %t510 = getelementptr inbounds { ptr, i64, i64 }, ptr %t509, i64 %t507 + store { ptr, i64, i64 } { ptr @.str.4852, i64 3, i64 0 }, ptr %t510 + store i64 %t508, ptr %t506 + %t511 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 + %t512 = load { ptr, i64, i64 }, ptr %a497 + store { ptr, i64, i64 } { ptr @.str.4853, 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 + %t517 = load i64, ptr %t511 + %t518 = add i64 %t517, 1 + call void @finch_arr_reserve(ptr %a263, i64 %t518, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t519 = load ptr, ptr %a263 + %t520 = getelementptr inbounds { ptr, i64, i64 }, ptr %t519, i64 %t517 + store { ptr, i64, i64 } %t516, ptr %t520 + store i64 %t518, ptr %t511 + call void @finch_str_drop(ptr %a497) + br label %endif7591 +else7590: + %t521 = getelementptr inbounds %S.gen.Abi, ptr %a357, i32 0, i32 0 + %t522 = load { ptr, i64, i64 }, ptr %t521 + store { ptr, i64, i64 } %t522, ptr %a523 + store { ptr, i64, i64 } { ptr @.str.4854, i64 6, i64 0 }, ptr %a524 + %t525 = call i32 @finch_str_eq(ptr %a523, ptr %a524) + %t526 = icmp ne i32 %t525, 0 + br i1 %t526, label %then7592, label %else7593 +then7592: + %t527 = load ptr, ptr %a1 + %t528 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t527, { ptr, i64, i64 } { ptr @.str.4855, i64 9, i64 0 }) + store { ptr, i64, i64 } %t528, ptr %a529 + %t530 = load ptr, ptr %a1 + %t531 = load ptr, ptr %a1 + %t532 = load %S.ast.Type, ptr %a345 + %t533 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t531, %S.ast.Type %t532) + %t534 = getelementptr inbounds %S.gen.Val, ptr %a403, i32 0, i32 0 + %t535 = load { ptr, i64, i64 }, ptr %t534 + %t536 = load { ptr, i64, i64 }, ptr %a529 + call void @finch.gen.store(ptr %t530, { ptr, i64, i64 } %t533, { ptr, i64, i64 } %t535, { ptr, i64, i64 } %t536) + store { ptr, i64, i64 } %t533, ptr %a537 + call void @finch_str_drop(ptr %a537) + %t538 = getelementptr inbounds %S.gen.Abi, ptr %a357, i32 0, i32 1 + %t539 = getelementptr inbounds { ptr, i64, i64 }, ptr %t538, i32 0, i32 1 + %t540 = load i64, ptr %t539 + store i64 0, ptr %a541 + br label %for.cond7595 +for.cond7595: + %t542 = load i64, ptr %a541 + %t543 = icmp slt i64 %t542, %t540 + br i1 %t543, label %for.body7596, label %for.end7598 +for.body7596: + %t544 = load ptr, ptr %a1 + %t545 = getelementptr inbounds %S.gen.Abi, ptr %a357, i32 0, i32 1 + %t546 = load i64, ptr %a541 + %t547 = load { ptr, i64, i64 }, ptr %t545 + %t548 = extractvalue { ptr, i64, i64 } %t547, 1 + %t549 = icmp uge i64 %t546, %t548 + br i1 %t549, label %range7599, label %inrange7600 +range7599: + call void @finch_panic_index(ptr @.str.4856, i64 4489, i64 %t546, i64 %t548) unreachable -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 %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) +inrange7600: + %t550 = extractvalue { ptr, i64, i64 } %t547, 0 + %t551 = getelementptr inbounds { ptr, i64, i64 }, ptr %t550, i64 %t546 + %t552 = load { ptr, i64, i64 }, ptr %t551 + %t553 = load ptr, ptr %a1 + %t554 = load { ptr, i64, i64 }, ptr %a529 + store { ptr, i64, i64 } { ptr @.str.4857, i64 31, i64 0 }, ptr %a556 + store { ptr, i64, i64 } %t554, ptr %a557 + call void @finch_str_concat(ptr %a555, ptr %a556, ptr %a557) + %t558 = load { ptr, i64, i64 }, ptr %a555 + store { ptr, i64, i64 } %t558, ptr %a560 + store { ptr, i64, i64 } { ptr @.str.4858, i64 6, i64 0 }, ptr %a561 + call void @finch_str_concat(ptr %a559, ptr %a560, ptr %a561) + store { ptr, i64, i64 } %t558, ptr %a562 + call void @finch_str_drop(ptr %a562) + %t563 = load { ptr, i64, i64 }, ptr %a559 + %t564 = load i64, ptr %a541 + %t565 = mul i64 8, %t564 + call void @finch_str_from_int(ptr %a566, i64 %t565) + %t567 = load { ptr, i64, i64 }, ptr %a566 + store { ptr, i64, i64 } %t563, ptr %a569 + store { ptr, i64, i64 } %t567, ptr %a570 + call void @finch_str_concat(ptr %a568, ptr %a569, ptr %a570) + store { ptr, i64, i64 } %t563, ptr %a571 + call void @finch_str_drop(ptr %a571) + store { ptr, i64, i64 } %t567, ptr %a572 + call void @finch_str_drop(ptr %a572) + %t573 = load { ptr, i64, i64 }, ptr %a568 + %t574 = call { ptr, i64, i64 } @finch.gen.op(ptr %t553, { ptr, i64, i64 } %t573) + store { ptr, i64, i64 } %t573, ptr %a575 + call void @finch_str_drop(ptr %a575) + %t576 = call { ptr, i64, i64 } @finch.gen.load(ptr %t544, { ptr, i64, i64 } %t552, { ptr, i64, i64 } %t574) + store { ptr, i64, i64 } %t574, ptr %a577 + call void @finch_str_drop(ptr %a577) + store { ptr, i64, i64 } %t576, ptr %a578 + %t579 = getelementptr inbounds { ptr, i64, i64 }, ptr %a262, i32 0, i32 1 + %t580 = getelementptr inbounds %S.gen.Abi, ptr %a357, i32 0, i32 1 + %t581 = load i64, ptr %a541 + %t582 = load { ptr, i64, i64 }, ptr %t580 + %t583 = extractvalue { ptr, i64, i64 } %t582, 1 + %t584 = icmp uge i64 %t581, %t583 + br i1 %t584, label %range7601, label %inrange7602 +range7601: + call void @finch_panic_index(ptr @.str.4859, i64 4490, i64 %t581, i64 %t583) unreachable -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) +inrange7602: + %t585 = extractvalue { ptr, i64, i64 } %t582, 0 + %t586 = getelementptr inbounds { ptr, i64, i64 }, ptr %t585, i64 %t581 + %t587 = load { ptr, i64, i64 }, ptr %t586 + store { ptr, i64, i64 } %t587, ptr %a588 + call void @finch_str_copy(ptr %a589, ptr %a588) + %t590 = load { ptr, i64, i64 }, ptr %a589 + %t591 = load i64, ptr %t579 + %t592 = add i64 %t591, 1 + call void @finch_arr_reserve(ptr %a262, i64 %t592, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t593 = load ptr, ptr %a262 + %t594 = getelementptr inbounds { ptr, i64, i64 }, ptr %t593, i64 %t591 + store { ptr, i64, i64 } %t590, ptr %t594 + store i64 %t592, ptr %t579 + %t595 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 + %t596 = getelementptr inbounds %S.gen.Abi, ptr %a357, i32 0, i32 1 + %t597 = load i64, ptr %a541 + %t598 = load { ptr, i64, i64 }, ptr %t596 + %t599 = extractvalue { ptr, i64, i64 } %t598, 1 + %t600 = icmp uge i64 %t597, %t599 + br i1 %t600, label %range7603, label %inrange7604 +range7603: + call void @finch_panic_index(ptr @.str.4860, i64 4491, i64 %t597, i64 %t599) 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 = 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 -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 -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 +inrange7604: + %t601 = extractvalue { ptr, i64, i64 } %t598, 0 + %t602 = getelementptr inbounds { ptr, i64, i64 }, ptr %t601, i64 %t597 + %t603 = load { ptr, i64, i64 }, ptr %t602 + store { ptr, i64, i64 } %t603, ptr %a605 + store { ptr, i64, i64 } { ptr @.str.4861, i64 1, i64 0 }, ptr %a606 + call void @finch_str_concat(ptr %a604, ptr %a605, ptr %a606) + %t607 = load { ptr, i64, i64 }, ptr %a604 + %t608 = load { ptr, i64, i64 }, ptr %a578 + store { ptr, i64, i64 } %t607, ptr %a610 + store { ptr, i64, i64 } %t608, ptr %a611 + call void @finch_str_concat(ptr %a609, ptr %a610, ptr %a611) + store { ptr, i64, i64 } %t607, ptr %a612 + call void @finch_str_drop(ptr %a612) + %t613 = load { ptr, i64, i64 }, ptr %a609 + %t614 = load i64, ptr %t595 + %t615 = add i64 %t614, 1 + call void @finch_arr_reserve(ptr %a263, i64 %t615, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t616 = load ptr, ptr %a263 + %t617 = getelementptr inbounds { ptr, i64, i64 }, ptr %t616, i64 %t614 + store { ptr, i64, i64 } %t613, ptr %t617 + store i64 %t615, ptr %t595 + call void @finch_str_drop(ptr %a578) + br label %for.step7597 +for.step7597: + %t618 = load i64, ptr %a541 + %t619 = add i64 %t618, 1 + store i64 %t619, ptr %a541 + br label %for.cond7595 +for.end7598: + call void @finch_str_drop(ptr %a529) + br label %endif7594 +else7593: + %t620 = getelementptr inbounds { ptr, i64, i64 }, ptr %a262, i32 0, i32 1 + %t621 = load ptr, ptr %a1 + %t622 = load %S.ast.Type, ptr %a345 + %t623 = call { ptr, i64, i64 } @finch.gen.cLL(ptr %t621, %S.ast.Type %t622) + %t624 = load ptr, ptr %a1 + %t625 = load %S.ast.Type, ptr %a345 + %t626 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t624, %S.ast.Type %t625) + store { ptr, i64, i64 } %t623, ptr %a628 + store { ptr, i64, i64 } %t626, ptr %a629 + call void @finch_str_concat(ptr %a627, ptr %a628, ptr %a629) + store { ptr, i64, i64 } %t623, ptr %a630 + call void @finch_str_drop(ptr %a630) + store { ptr, i64, i64 } %t626, ptr %a631 + call void @finch_str_drop(ptr %a631) + %t632 = load { ptr, i64, i64 }, ptr %a627 + %t633 = load i64, ptr %t620 + %t634 = add i64 %t633, 1 + call void @finch_arr_reserve(ptr %a262, i64 %t634, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t635 = load ptr, ptr %a262 + %t636 = getelementptr inbounds { ptr, i64, i64 }, ptr %t635, i64 %t633 + store { ptr, i64, i64 } %t632, ptr %t636 + store i64 %t634, ptr %t620 + %t637 = getelementptr inbounds %S.ast.Type, ptr %a345, 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 + store { ptr, i64, i64 } { ptr @.str.4862, i64 3, 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) + br i1 %t642, label %then7605, label %else7606 +then7605: + %t643 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 + %t644 = load ptr, ptr %a1 + %t645 = getelementptr inbounds %S.gen.Val, ptr %a403, i32 0, i32 0 + %t646 = load { ptr, i64, i64 }, ptr %t645 + %t647 = call { ptr, i64, i64 } @finch.gen.cstr(ptr %t644, { ptr, i64, i64 } %t646) + store { ptr, i64, i64 } { ptr @.str.4863, i64 4, i64 0 }, ptr %a649 + store { ptr, i64, i64 } %t647, ptr %a650 + call void @finch_str_concat(ptr %a648, ptr %a649, ptr %a650) + store { ptr, i64, i64 } %t647, ptr %a651 + call void @finch_str_drop(ptr %a651) + %t652 = load { ptr, i64, i64 }, ptr %a648 + %t653 = load i64, ptr %t643 + %t654 = add i64 %t653, 1 + call void @finch_arr_reserve(ptr %a263, i64 %t654, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t655 = load ptr, ptr %a263 + %t656 = getelementptr inbounds { ptr, i64, i64 }, ptr %t655, i64 %t653 + store { ptr, i64, i64 } %t652, ptr %t656 + store i64 %t654, ptr %t643 + br label %endif7607 +else7606: + %t657 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 + %t658 = load ptr, ptr %a1 + %t659 = load %S.ast.Type, ptr %a345 + %t660 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t658, %S.ast.Type %t659) + %t661 = load ptr, ptr %a1 + %t662 = load %S.ast.Type, ptr %a345 + %t663 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t661, %S.ast.Type %t662) + store { ptr, i64, i64 } %t660, ptr %a665 + store { ptr, i64, i64 } %t663, ptr %a666 + call void @finch_str_concat(ptr %a664, ptr %a665, ptr %a666) + store { ptr, i64, i64 } %t660, ptr %a667 + call void @finch_str_drop(ptr %a667) + store { ptr, i64, i64 } %t663, ptr %a668 + call void @finch_str_drop(ptr %a668) + %t669 = load { ptr, i64, i64 }, ptr %a664 + store { ptr, i64, i64 } %t669, ptr %a671 + store { ptr, i64, i64 } { ptr @.str.4864, i64 1, i64 0 }, ptr %a672 + call void @finch_str_concat(ptr %a670, ptr %a671, ptr %a672) + store { ptr, i64, i64 } %t669, ptr %a673 + call void @finch_str_drop(ptr %a673) + %t674 = load { ptr, i64, i64 }, ptr %a670 + %t675 = getelementptr inbounds %S.gen.Val, ptr %a403, i32 0, i32 0 + %t676 = load { ptr, i64, i64 }, ptr %t675 + store { ptr, i64, i64 } %t674, ptr %a678 + store { ptr, i64, i64 } %t676, ptr %a679 + call void @finch_str_concat(ptr %a677, ptr %a678, ptr %a679) + store { ptr, i64, i64 } %t674, ptr %a680 + call void @finch_str_drop(ptr %a680) + %t681 = load { ptr, i64, i64 }, ptr %a677 + %t682 = load i64, ptr %t657 + %t683 = add i64 %t682, 1 + call void @finch_arr_reserve(ptr %a263, i64 %t683, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t684 = load ptr, ptr %a263 + %t685 = getelementptr inbounds { ptr, i64, i64 }, ptr %t684, i64 %t682 + store { ptr, i64, i64 } %t681, ptr %t685 + store i64 %t683, ptr %t657 + br label %endif7607 +endif7607: + br label %endif7594 +endif7594: + br label %endif7591 +endif7591: + br label %endif7588 +endif7588: + call void @finch.drop.S_gen_Val(ptr %a403) + call void @finch.drop.S_gen_Abi(ptr %a357) + call void @finch.drop.S_ast_Type(ptr %a345) + br label %for.step7573 +endif7577: + %t686 = load ptr, ptr %a1 + %t687 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t688 = load i64, ptr %a327 + %t689 = load { ptr, i64, i64 }, ptr %t687 + %t690 = extractvalue { ptr, i64, i64 } %t689, 1 + %t691 = icmp uge i64 %t688, %t690 + br i1 %t691, label %range7608, label %inrange7609 +range7608: + call void @finch_panic_index(ptr @.str.4865, i64 4504, i64 %t688, i64 %t690) unreachable -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 } %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) +inrange7609: + %t692 = extractvalue { ptr, i64, i64 } %t689, 0 + %t693 = getelementptr inbounds %S.ast.Node, ptr %t692, i64 %t688 + %t694 = load %S.ast.Node, ptr %t693 + %t695 = call %S.gen.Val @finch.gen.expr(ptr %t686, %S.ast.Node %t694) + store %S.gen.Val %t695, ptr %a696 + %t697 = getelementptr inbounds %S.gen.Val, ptr %a696, i32 0, i32 1 + %t698 = load %S.ast.Type, ptr %t697 + store %S.ast.Type %t698, ptr %a699 + call void @finch.copy.S_ast_Type(ptr %a700, ptr %a699) + %t701 = load %S.ast.Type, ptr %a700 + store %S.ast.Type %t701, ptr %a702 + %t703 = getelementptr inbounds %S.ast.Type, ptr %a702, i32 0, i32 0 + %t704 = load { ptr, i64, i64 }, ptr %t703 + store { ptr, i64, i64 } %t704, ptr %a705 + store { ptr, i64, i64 } { ptr @.str.4866, i64 4, i64 0 }, ptr %a706 + %t707 = call i32 @finch_str_eq(ptr %a705, ptr %a706) + %t708 = icmp ne i32 %t707, 0 + br i1 %t708, label %then7610, label %endif7612 +then7610: + %t709 = load ptr, ptr %a1 + %t710 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t711 = load i64, ptr %a327 + %t712 = load { ptr, i64, i64 }, ptr %t710 + %t713 = extractvalue { ptr, i64, i64 } %t712, 1 + %t714 = icmp uge i64 %t711, %t713 + br i1 %t714, label %range7613, label %inrange7614 +range7613: + call void @finch_panic_index(ptr @.str.4867, i64 4507, i64 %t711, i64 %t713) 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) +inrange7614: + %t715 = extractvalue { ptr, i64, i64 } %t712, 0 + %t716 = getelementptr inbounds %S.ast.Node, ptr %t715, i64 %t711 + %t717 = load %S.ast.Node, ptr %t716 + call void @finch.gen.fail(ptr %t709, %S.ast.Node %t717, { ptr, i64, i64 } { ptr @.str.4868, i64 23, i64 0 }) + br label %endif7612 +endif7612: + %t718 = getelementptr inbounds { ptr, i64, i64 }, ptr %a317, i32 0, i32 1 + %t719 = load %S.gen.Val, ptr %a696 + store %S.gen.Val %t719, ptr %a720 + call void @finch.copy.S_gen_Val(ptr %a721, ptr %a720) + %t722 = load %S.gen.Val, ptr %a721 + %t723 = load i64, ptr %t718 + %t724 = add i64 %t723, 1 + call void @finch_arr_reserve(ptr %a317, i64 %t724, i64 ptrtoint (ptr getelementptr (%S.gen.Val, ptr null, i32 1) to i64)) + %t725 = load ptr, ptr %a317 + %t726 = getelementptr inbounds %S.gen.Val, ptr %t725, i64 %t723 + store %S.gen.Val %t722, ptr %t726 + store i64 %t724, ptr %t718 + %t727 = load ptr, ptr %a1 + %t728 = load %S.gen.Val, ptr %a696 + call void @finch.gen.hold(ptr %t727, %S.gen.Val %t728) + %t729 = getelementptr inbounds %S.ast.Type, ptr %a702, i32 0, i32 0 + %t730 = load { ptr, i64, i64 }, ptr %t729 + store { ptr, i64, i64 } %t730, ptr %a731 + store { ptr, i64, i64 } { ptr @.str.4869, i64 6, i64 0 }, ptr %a732 + %t733 = call i32 @finch_str_eq(ptr %a731, ptr %a732) + %t734 = icmp ne i32 %t733, 0 + br label %logic.from7615 +logic.from7615: + br i1 %t734, label %logic.end7617, label %logic.rhs7616 +logic.rhs7616: + %t735 = getelementptr inbounds %S.ast.Type, ptr %a702, i32 0, i32 0 + %t736 = load { ptr, i64, i64 }, ptr %t735 + store { ptr, i64, i64 } %t736, ptr %a737 + store { ptr, i64, i64 } { ptr @.str.4870, i64 5, i64 0 }, ptr %a738 + %t739 = call i32 @finch_str_eq(ptr %a737, ptr %a738) + %t740 = icmp ne i32 %t739, 0 + br label %logic.rend7618 +logic.rend7618: + br label %logic.end7617 +logic.end7617: + %t741 = phi i1 [ true, %logic.from7615 ], [ %t740, %logic.rend7618 ] + br i1 %t741, label %then7619, label %endif7621 +then7619: + %t742 = load ptr, ptr %a1 + %t743 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t744 = load i64, ptr %a327 + %t745 = load { ptr, i64, i64 }, ptr %t743 + %t746 = extractvalue { ptr, i64, i64 } %t745, 1 + %t747 = icmp uge i64 %t744, %t746 + br i1 %t747, label %range7622, label %inrange7623 +range7622: + call void @finch_panic_index(ptr @.str.4871, i64 4512, i64 %t744, i64 %t746) 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 - %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 +inrange7623: + %t748 = extractvalue { ptr, i64, i64 } %t745, 0 + %t749 = getelementptr inbounds %S.ast.Node, ptr %t748, i64 %t744 + %t750 = load %S.ast.Node, ptr %t749 + call void @finch.gen.fail(ptr %t742, %S.ast.Node %t750, { ptr, i64, i64 } { ptr @.str.4872, i64 68, i64 0 }) + br label %endif7621 +endif7621: + %t751 = getelementptr inbounds %S.gen.Val, ptr %a696, i32 0, i32 0 + %t752 = load { ptr, i64, i64 }, ptr %t751 + store { ptr, i64, i64 } %t752, ptr %a753 + call void @finch_str_copy(ptr %a754, ptr %a753) + %t755 = load { ptr, i64, i64 }, ptr %a754 + store { ptr, i64, i64 } %t755, ptr %a756 + %t757 = getelementptr inbounds %S.ast.Type, ptr %a702, i32 0, i32 0 + %t758 = load { ptr, i64, i64 }, ptr %t757 + store { ptr, i64, i64 } %t758, ptr %a759 + store { ptr, i64, i64 } { ptr @.str.4873, i64 3, i64 0 }, ptr %a760 + %t761 = call i32 @finch_str_eq(ptr %a759, ptr %a760) + %t762 = icmp ne i32 %t761, 0 + br i1 %t762, label %then7624, label %else7625 +then7624: + %t763 = load ptr, ptr %a1 + %t764 = load { ptr, i64, i64 }, ptr %a756 + %t765 = load %S.ast.Type, ptr %a702 + %t766 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4874, i64 5, i64 0 }) + %t767 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t763, { ptr, i64, i64 } %t764, %S.ast.Type %t765, %S.ast.Type %t766) + store %S.ast.Type %t766, ptr %a768 + call void @finch.drop.S_ast_Type(ptr %a768) + %t769 = load { ptr, i64, i64 }, ptr %a756 + store { ptr, i64, i64 } %t767, ptr %a756 + store { ptr, i64, i64 } %t769, ptr %a770 + call void @finch_str_drop(ptr %a770) + %t771 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4875, i64 5, i64 0 }) + %t772 = load %S.ast.Type, ptr %a702 + store %S.ast.Type %t771, ptr %a702 + store %S.ast.Type %t772, ptr %a773 + call void @finch.drop.S_ast_Type(ptr %a773) + br label %endif7626 +else7625: + %t774 = getelementptr inbounds %S.ast.Type, ptr %a702, i32 0, i32 0 + %t775 = load { ptr, i64, i64 }, ptr %t774 + store { ptr, i64, i64 } %t775, ptr %a776 + store { ptr, i64, i64 } { ptr @.str.4876, i64 3, i64 0 }, ptr %a777 + %t778 = call i32 @finch_str_eq(ptr %a776, ptr %a777) + %t779 = icmp ne i32 %t778, 0 + br i1 %t779, label %then7627, label %else7628 +then7627: + %t780 = load ptr, ptr %a1 + %t781 = load { ptr, i64, i64 }, ptr %a756 + %t782 = call { ptr, i64, i64 } @finch.gen.cstr(ptr %t780, { ptr, i64, i64 } %t781) + %t783 = load { ptr, i64, i64 }, ptr %a756 + store { ptr, i64, i64 } %t782, ptr %a756 + store { ptr, i64, i64 } %t783, ptr %a784 + call void @finch_str_drop(ptr %a784) + %t785 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4877, i64 3, i64 0 }) + %t786 = load %S.ast.Type, ptr %a702 + store %S.ast.Type %t785, ptr %a702 + store %S.ast.Type %t786, ptr %a787 + call void @finch.drop.S_ast_Type(ptr %a787) + br label %endif7629 +else7628: + %t788 = getelementptr inbounds %S.ast.Type, ptr %a702, i32 0, i32 0 + %t789 = load { ptr, i64, i64 }, ptr %t788 + store { ptr, i64, i64 } %t789, ptr %a790 + store { ptr, i64, i64 } { ptr @.str.4878, i64 4, i64 0 }, ptr %a791 + %t792 = call i32 @finch_str_eq(ptr %a790, ptr %a791) + %t793 = icmp ne i32 %t792, 0 + br i1 %t793, label %then7630, label %else7631 +then7630: + %t794 = load ptr, ptr %a1 + %t795 = getelementptr inbounds %S.gen.Val, ptr %a696, i32 0, i32 0 + %t796 = load { ptr, i64, i64 }, ptr %t795 + store { ptr, i64, i64 } { ptr @.str.4879, i64 8, i64 0 }, ptr %a798 + store { ptr, i64, i64 } %t796, ptr %a799 + call void @finch_str_concat(ptr %a797, ptr %a798, ptr %a799) + %t800 = load { ptr, i64, i64 }, ptr %a797 + store { ptr, i64, i64 } %t800, ptr %a802 + store { ptr, i64, i64 } { ptr @.str.4880, i64 7, i64 0 }, ptr %a803 + call void @finch_str_concat(ptr %a801, ptr %a802, ptr %a803) + store { ptr, i64, i64 } %t800, ptr %a804 + call void @finch_str_drop(ptr %a804) + %t805 = load { ptr, i64, i64 }, ptr %a801 + %t806 = call { ptr, i64, i64 } @finch.gen.op(ptr %t794, { ptr, i64, i64 } %t805) + store { ptr, i64, i64 } %t805, ptr %a807 + call void @finch_str_drop(ptr %a807) + %t808 = load { ptr, i64, i64 }, ptr %a756 + store { ptr, i64, i64 } %t806, ptr %a756 + store { ptr, i64, i64 } %t808, ptr %a809 + call void @finch_str_drop(ptr %a809) + %t810 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4881, i64 3, i64 0 }) + %t811 = load %S.ast.Type, ptr %a702 + store %S.ast.Type %t810, ptr %a702 + store %S.ast.Type %t811, ptr %a812 + call void @finch.drop.S_ast_Type(ptr %a812) + br label %endif7632 +else7631: + %t813 = load %S.ast.Type, ptr %a702 + %t814 = call i1 @finch.gen.isInt(%S.ast.Type %t813) + br label %logic.from7633 +logic.from7633: + br i1 %t814, label %logic.end7635, label %logic.rhs7634 +logic.rhs7634: + %t815 = getelementptr inbounds %S.ast.Type, ptr %a702, i32 0, i32 0 + %t816 = load { ptr, i64, i64 }, ptr %t815 + store { ptr, i64, i64 } %t816, ptr %a817 + store { ptr, i64, i64 } { ptr @.str.4882, i64 4, i64 0 }, ptr %a818 + %t819 = call i32 @finch_str_eq(ptr %a817, ptr %a818) + %t820 = icmp ne i32 %t819, 0 + br label %logic.rend7636 +logic.rend7636: + br label %logic.end7635 +logic.end7635: + %t821 = phi i1 [ true, %logic.from7633 ], [ %t820, %logic.rend7636 ] + br label %logic.from7637 +logic.from7637: + br i1 %t821, label %logic.rhs7638, label %logic.end7639 +logic.rhs7638: + %t822 = load %S.ast.Type, ptr %a702 + %t823 = call i64 @finch.gen.bitsOf(%S.ast.Type %t822) + %t824 = icmp slt i64 %t823, 32 + br label %logic.rend7640 +logic.rend7640: + br label %logic.end7639 +logic.end7639: + %t825 = phi i1 [ false, %logic.from7637 ], [ %t824, %logic.rend7640 ] + br i1 %t825, label %then7641, label %endif7643 +then7641: + %t826 = load ptr, ptr %a1 + %t827 = load { ptr, i64, i64 }, ptr %a756 + %t828 = load %S.ast.Type, ptr %a702 + %t829 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4883, i64 3, i64 0 }) + %t830 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t826, { ptr, i64, i64 } %t827, %S.ast.Type %t828, %S.ast.Type %t829) + store %S.ast.Type %t829, ptr %a831 + call void @finch.drop.S_ast_Type(ptr %a831) + %t832 = load { ptr, i64, i64 }, ptr %a756 + store { ptr, i64, i64 } %t830, ptr %a756 + store { ptr, i64, i64 } %t832, ptr %a833 + call void @finch_str_drop(ptr %a833) + %t834 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4884, i64 3, i64 0 }) + %t835 = load %S.ast.Type, ptr %a702 + store %S.ast.Type %t834, ptr %a702 + store %S.ast.Type %t835, ptr %a836 + call void @finch.drop.S_ast_Type(ptr %a836) + br label %endif7643 +endif7643: + br label %endif7632 +endif7632: + br label %endif7629 +endif7629: + br label %endif7626 +endif7626: + %t837 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 + %t838 = load ptr, ptr %a1 + %t839 = load %S.ast.Type, ptr %a702 + %t840 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t838, %S.ast.Type %t839) + store { ptr, i64, i64 } %t840, ptr %a842 + store { ptr, i64, i64 } { ptr @.str.4885, i64 1, i64 0 }, ptr %a843 + call void @finch_str_concat(ptr %a841, ptr %a842, ptr %a843) + store { ptr, i64, i64 } %t840, ptr %a844 + call void @finch_str_drop(ptr %a844) + %t845 = load { ptr, i64, i64 }, ptr %a841 + %t846 = load { ptr, i64, i64 }, ptr %a756 + store { ptr, i64, i64 } %t845, 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 } %t845, ptr %a850 + call void @finch_str_drop(ptr %a850) + %t851 = load { ptr, i64, i64 }, ptr %a847 + %t852 = load i64, ptr %t837 + %t853 = add i64 %t852, 1 + call void @finch_arr_reserve(ptr %a263, i64 %t853, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t854 = load ptr, ptr %a263 + %t855 = getelementptr inbounds { ptr, i64, i64 }, ptr %t854, i64 %t852 + store { ptr, i64, i64 } %t851, ptr %t855 + store i64 %t853, ptr %t837 + call void @finch_str_drop(ptr %a756) + call void @finch.drop.S_ast_Type(ptr %a702) + call void @finch.drop.S_gen_Val(ptr %a696) + br label %for.step7573 +for.step7573: + %t856 = load i64, ptr %a327 + %t857 = add i64 %t856, 1 + store i64 %t857, ptr %a327 + br label %for.cond7571 +for.end7574: + %t858 = getelementptr inbounds %S.gen.Plan, ptr %a261, i32 0, i32 2 + %t859 = load { ptr, i64, i64 }, ptr %t858 + store { ptr, i64, i64 } %t859, ptr %a860 + call void @finch_str_copy(ptr %a861, ptr %a860) + %t862 = load { ptr, i64, i64 }, ptr %a861 + store { ptr, i64, i64 } %t862, ptr %a863 + store { ptr, i64, i64 } { ptr @.str.4886, i64 0, i64 0 }, ptr %a864 + %t865 = getelementptr inbounds %S.gen.Plan, ptr %a261, i32 0, i32 0 + %t866 = getelementptr inbounds %S.gen.Abi, ptr %t865, i32 0, i32 0 + %t867 = load { ptr, i64, i64 }, ptr %t866 + store { ptr, i64, i64 } %t867, ptr %a868 + store { ptr, i64, i64 } { ptr @.str.4887, i64 6, i64 0 }, ptr %a869 + %t870 = call i32 @finch_str_eq(ptr %a868, ptr %a869) + %t871 = icmp ne i32 %t870, 0 + br i1 %t871, label %then7644, label %endif7646 +then7644: + %t872 = load ptr, ptr %a1 + %t873 = load %S.ast.Type, ptr %a219 + %t874 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t872, %S.ast.Type %t873) + %t875 = load { ptr, i64, i64 }, ptr %a864 + store { ptr, i64, i64 } %t874, ptr %a864 + store { ptr, i64, i64 } %t875, ptr %a876 + call void @finch_str_drop(ptr %a876) + br label %endif7646 +endif7646: + store { ptr, i64, i64 } { ptr @.str.4888, i64 0, i64 0 }, ptr %a877 + %t878 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 4 + %t879 = load i1, ptr %t878 + br i1 %t879, label %then7647, label %endif7649 +then7647: + %t880 = load { ptr, i64, i64 }, ptr %a877 + store { ptr, i64, i64 } { ptr @.str.4889, i64 5, i64 0 }, ptr %a877 + store { ptr, i64, i64 } %t880, ptr %a881 + call void @finch_str_drop(ptr %a881) + %t882 = getelementptr inbounds { ptr, i64, i64 }, ptr %a262, i32 0, i32 1 + %t883 = load i64, ptr %t882 + %t884 = icmp eq i64 %t883, 0 + br i1 %t884, label %then7650, label %endif7652 +then7650: + %t885 = load { ptr, i64, i64 }, ptr %a877 + store { ptr, i64, i64 } { ptr @.str.4890, i64 3, i64 0 }, ptr %a877 + store { ptr, i64, i64 } %t885, ptr %a886 + call void @finch_str_drop(ptr %a886) + br label %endif7652 +endif7652: + br label %endif7649 +endif7649: + %t887 = load ptr, ptr %a1 + %t888 = icmp eq ptr %t887, null + br i1 %t888, label %panic7653, label %ok7654 +panic7653: + call void @finch_panic(ptr @.str.4891, i64 4543, ptr @.str.4892) + unreachable +ok7654: + %t889 = getelementptr inbounds %S.gen.Gen, ptr %t887, i32 0, i32 39 + %t890 = getelementptr inbounds { ptr, i64, i64 }, ptr %t889, i32 0, i32 1 + %t891 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 + %t892 = load { ptr, i64, i64 }, ptr %t891 + store { ptr, i64, i64 } { ptr @.str.4893, i64 2, i64 0 }, ptr %a894 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 %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 + call void @finch_str_concat(ptr %a893, ptr %a894, ptr %a895) + %t896 = load { ptr, i64, i64 }, ptr %a893 + store i64 -1, ptr %a897 + %t898 = load i64, ptr %t890 + %t899 = load ptr, ptr %t889 + store i64 0, ptr %a900 + br label %find.cond7655 +find.cond7655: + %t901 = load i64, ptr %a900 + %t902 = icmp slt i64 %t901, %t898 + br i1 %t902, label %find.body7656, label %find.end7659 +find.body7656: + %t903 = getelementptr inbounds { ptr, i64, i64 }, ptr %t899, i64 %t901 + %t904 = load { ptr, i64, i64 }, ptr %t903 + store { ptr, i64, i64 } %t904, ptr %a905 + store { ptr, i64, i64 } %t896, ptr %a906 + %t907 = call i32 @finch_str_eq(ptr %a905, ptr %a906) + %t908 = icmp ne i32 %t907, 0 + br i1 %t908, label %find.hit7657, label %find.next7658 +find.hit7657: + store i64 %t901, ptr %a897 + br label %find.end7659 +find.next7658: + %t909 = add i64 %t901, 1 + store i64 %t909, ptr %a900 + br label %find.cond7655 +find.end7659: + store { ptr, i64, i64 } %t896, ptr %a910 + call void @finch_str_drop(ptr %a910) + %t911 = load i64, ptr %a897 + %t912 = icmp sge i64 %t911, 0 + %t913 = xor i1 %t912, true + br i1 %t913, label %then7660, label %endif7662 +then7660: + %t914 = load ptr, ptr %a1 + %t915 = icmp eq ptr %t914, null + br i1 %t915, label %panic7663, label %ok7664 +panic7663: + call void @finch_panic(ptr @.str.4894, i64 4544, ptr @.str.4895) + unreachable +ok7664: + %t916 = getelementptr inbounds %S.gen.Gen, ptr %t914, i32 0, i32 39 + %t917 = getelementptr inbounds { ptr, i64, i64 }, ptr %t916, i32 0, i32 1 + %t918 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 + %t919 = load { ptr, i64, i64 }, ptr %t918 + store { ptr, i64, i64 } { ptr @.str.4896, i64 2, 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 + %t924 = load i64, ptr %t917 + %t925 = add i64 %t924, 1 + call void @finch_arr_reserve(ptr %t916, i64 %t925, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t926 = load ptr, ptr %t916 + %t927 = getelementptr inbounds { ptr, i64, i64 }, ptr %t926, i64 %t924 + store { ptr, i64, i64 } %t923, ptr %t927 + store i64 %t925, ptr %t917 + %t928 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 + %t929 = load { ptr, i64, i64 }, ptr %t928 + %t930 = call i1 @finch.gen.runtimeDeclares({ ptr, i64, i64 } %t929) + %t931 = xor i1 %t930, true + br i1 %t931, label %then7665, label %endif7667 +then7665: + %t932 = load ptr, ptr %a1 + %t933 = icmp eq ptr %t932, null + br i1 %t933, label %panic7668, label %ok7669 +panic7668: + call void @finch_panic(ptr @.str.4897, i64 4546, ptr @.str.4898) + unreachable +ok7669: + %t934 = getelementptr inbounds %S.gen.Gen, ptr %t932, i32 0, i32 2 + %t935 = getelementptr inbounds { ptr, i64, i64 }, ptr %t934, i32 0, i32 1 + %t936 = load { ptr, i64, i64 }, ptr %a864 + store { ptr, i64, i64 } { ptr @.str.4899, i64 7, i64 0 }, ptr %a938 + store { ptr, i64, i64 } %t936, ptr %a939 + call void @finch_str_concat(ptr %a937, ptr %a938, ptr %a939) + %t940 = load { ptr, i64, i64 }, ptr %a937 + store { ptr, i64, i64 } %t940, ptr %a942 + store { ptr, i64, i64 } { ptr @.str.4900, i64 1, i64 0 }, ptr %a943 + call void @finch_str_concat(ptr %a941, ptr %a942, ptr %a943) + store { ptr, i64, i64 } %t940, ptr %a944 + call void @finch_str_drop(ptr %a944) + %t945 = load { ptr, i64, i64 }, ptr %a941 + %t946 = load { ptr, i64, i64 }, ptr %a863 + store { ptr, i64, i64 } %t945, ptr %a948 + store { ptr, i64, i64 } %t946, ptr %a949 + call void @finch_str_concat(ptr %a947, ptr %a948, ptr %a949) + store { ptr, i64, i64 } %t945, ptr %a950 + call void @finch_str_drop(ptr %a950) + %t951 = load { ptr, i64, i64 }, ptr %a947 + store { ptr, i64, i64 } %t951, ptr %a953 + store { ptr, i64, i64 } { ptr @.str.4901, i64 2, i64 0 }, ptr %a954 + call void @finch_str_concat(ptr %a952, ptr %a953, ptr %a954) + store { ptr, i64, i64 } %t951, ptr %a955 + call void @finch_str_drop(ptr %a955) + %t956 = load { ptr, i64, i64 }, ptr %a952 + %t957 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 + %t958 = load { ptr, i64, i64 }, ptr %t957 + store { ptr, i64, i64 } %t956, ptr %a960 + store { ptr, i64, i64 } %t958, ptr %a961 + call void @finch_str_concat(ptr %a959, ptr %a960, ptr %a961) + store { ptr, i64, i64 } %t956, ptr %a962 + call void @finch_str_drop(ptr %a962) + %t963 = load { ptr, i64, i64 }, ptr %a959 + store { ptr, i64, i64 } %t963, ptr %a965 + store { ptr, i64, i64 } { ptr @.str.4902, i64 1, i64 0 }, ptr %a966 + call void @finch_str_concat(ptr %a964, ptr %a965, ptr %a966) + store { ptr, i64, i64 } %t963, ptr %a967 + call void @finch_str_drop(ptr %a967) + %t968 = load { ptr, i64, i64 }, ptr %a964 + %t969 = getelementptr inbounds { ptr, i64, i64 }, ptr %a262, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.4903, i64 2, i64 0 }, ptr %a970 + call void @finch_str_join(ptr %a971, ptr %a262, ptr %a970) + %t972 = load { ptr, i64, i64 }, ptr %a971 + store { ptr, i64, i64 } %t968, ptr %a974 + store { ptr, i64, i64 } %t972, ptr %a975 + call void @finch_str_concat(ptr %a973, ptr %a974, ptr %a975) + store { ptr, i64, i64 } %t968, ptr %a976 + call void @finch_str_drop(ptr %a976) + store { ptr, i64, i64 } %t972, ptr %a977 + call void @finch_str_drop(ptr %a977) + %t978 = load { ptr, i64, i64 }, ptr %a973 + %t979 = load { ptr, i64, i64 }, ptr %a877 + store { ptr, i64, i64 } %t978, ptr %a981 + store { ptr, i64, i64 } %t979, ptr %a982 + call void @finch_str_concat(ptr %a980, ptr %a981, ptr %a982) + store { ptr, i64, i64 } %t978, ptr %a983 + call void @finch_str_drop(ptr %a983) + %t984 = load { ptr, i64, i64 }, ptr %a980 + store { ptr, i64, i64 } %t984, ptr %a986 + store { ptr, i64, i64 } { ptr @.str.4904, i64 1, i64 0 }, ptr %a987 + call void @finch_str_concat(ptr %a985, ptr %a986, ptr %a987) + store { ptr, i64, i64 } %t984, ptr %a988 + call void @finch_str_drop(ptr %a988) + %t989 = load { ptr, i64, i64 }, ptr %a985 + %t990 = load i64, ptr %t935 + %t991 = add i64 %t990, 1 + call void @finch_arr_reserve(ptr %t934, i64 %t991, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t992 = load ptr, ptr %t934 + %t993 = getelementptr inbounds { ptr, i64, i64 }, ptr %t992, i64 %t990 + store { ptr, i64, i64 } %t989, ptr %t993 + store i64 %t991, ptr %t935 + br label %endif7667 +endif7667: + br label %endif7662 +endif7662: + store { ptr, i64, i64 } { ptr @.str.4905, i64 0, i64 0 }, ptr %a994 + %t995 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 4 + %t996 = load i1, ptr %t995 + br i1 %t996, label %then7670, label %endif7672 +then7670: + %t997 = getelementptr inbounds { ptr, i64, i64 }, ptr %a262, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.4907, i64 2, i64 0 }, ptr %a998 + call void @finch_str_join(ptr %a999, ptr %a262, ptr %a998) + %t1000 = load { ptr, i64, i64 }, ptr %a999 + store { ptr, i64, i64 } { ptr @.str.4906, i64 2, i64 0 }, ptr %a1002 + store { ptr, i64, i64 } %t1000, ptr %a1003 + call void @finch_str_concat(ptr %a1001, ptr %a1002, ptr %a1003) + store { ptr, i64, i64 } %t1000, ptr %a1004 + call void @finch_str_drop(ptr %a1004) + %t1005 = load { ptr, i64, i64 }, ptr %a1001 + %t1006 = load { ptr, i64, i64 }, ptr %a877 + store { ptr, i64, i64 } %t1005, ptr %a1008 + store { ptr, i64, i64 } %t1006, ptr %a1009 + call void @finch_str_concat(ptr %a1007, ptr %a1008, ptr %a1009) + store { ptr, i64, i64 } %t1005, ptr %a1010 + call void @finch_str_drop(ptr %a1010) + %t1011 = load { ptr, i64, i64 }, ptr %a1007 + store { ptr, i64, i64 } %t1011, ptr %a1013 + store { ptr, i64, i64 } { ptr @.str.4908, i64 1, i64 0 }, ptr %a1014 + call void @finch_str_concat(ptr %a1012, ptr %a1013, ptr %a1014) + store { ptr, i64, i64 } %t1011, ptr %a1015 + call void @finch_str_drop(ptr %a1015) + %t1016 = load { ptr, i64, i64 }, ptr %a1012 + %t1017 = load { ptr, i64, i64 }, ptr %a994 + store { ptr, i64, i64 } %t1016, ptr %a994 + store { ptr, i64, i64 } %t1017, ptr %a1018 + call void @finch_str_drop(ptr %a1018) + br label %endif7672 +endif7672: + %t1019 = load { ptr, i64, i64 }, ptr %a864 + store { ptr, i64, i64 } { ptr @.str.4909, i64 4, i64 0 }, 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.4910, i64 1, i64 0 }, ptr %a1026 + call void @finch_str_concat(ptr %a1024, ptr %a1025, ptr %a1026) + store { ptr, i64, i64 } %t1023, ptr %a1027 + call void @finch_str_drop(ptr %a1027) + %t1028 = load { ptr, i64, i64 }, ptr %a1024 + %t1029 = load { ptr, i64, i64 }, ptr %a863 + store { ptr, i64, i64 } %t1028, ptr %a1031 + store { ptr, i64, i64 } %t1029, ptr %a1032 + call void @finch_str_concat(ptr %a1030, ptr %a1031, ptr %a1032) + store { ptr, i64, i64 } %t1028, ptr %a1033 + call void @finch_str_drop(ptr %a1033) + %t1034 = load { ptr, i64, i64 }, ptr %a1030 + %t1035 = load { ptr, i64, i64 }, ptr %a994 + store { ptr, i64, i64 } %t1034, ptr %a1037 + store { ptr, i64, i64 } %t1035, ptr %a1038 + call void @finch_str_concat(ptr %a1036, ptr %a1037, ptr %a1038) + store { ptr, i64, i64 } %t1034, ptr %a1039 + call void @finch_str_drop(ptr %a1039) + %t1040 = load { ptr, i64, i64 }, ptr %a1036 + store { ptr, i64, i64 } %t1040, ptr %a1042 + store { ptr, i64, i64 } { ptr @.str.4911, i64 2, i64 0 }, ptr %a1043 + call void @finch_str_concat(ptr %a1041, ptr %a1042, ptr %a1043) + store { ptr, i64, i64 } %t1040, ptr %a1044 + call void @finch_str_drop(ptr %a1044) + %t1045 = load { ptr, i64, i64 }, ptr %a1041 + %t1046 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 + %t1047 = load { ptr, i64, i64 }, ptr %t1046 + store { ptr, i64, i64 } %t1045, ptr %a1049 + store { ptr, i64, i64 } %t1047, ptr %a1050 + call void @finch_str_concat(ptr %a1048, ptr %a1049, ptr %a1050) + store { ptr, i64, i64 } %t1045, ptr %a1051 + call void @finch_str_drop(ptr %a1051) + %t1052 = load { ptr, i64, i64 }, ptr %a1048 + store { ptr, i64, i64 } %t1052, ptr %a1054 + store { ptr, i64, i64 } { ptr @.str.4912, i64 1, i64 0 }, ptr %a1055 + call void @finch_str_concat(ptr %a1053, ptr %a1054, ptr %a1055) + store { ptr, i64, i64 } %t1052, ptr %a1056 + call void @finch_str_drop(ptr %a1056) + %t1057 = load { ptr, i64, i64 }, ptr %a1053 + %t1058 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.4913, i64 2, i64 0 }, ptr %a1059 + call void @finch_str_join(ptr %a1060, ptr %a263, ptr %a1059) + %t1061 = load { ptr, i64, i64 }, ptr %a1060 + store { ptr, i64, i64 } %t1057, ptr %a1063 + store { ptr, i64, i64 } %t1061, ptr %a1064 + call void @finch_str_concat(ptr %a1062, ptr %a1063, ptr %a1064) + store { ptr, i64, i64 } %t1057, ptr %a1065 + call void @finch_str_drop(ptr %a1065) + store { ptr, i64, i64 } %t1061, ptr %a1066 + call void @finch_str_drop(ptr %a1066) + %t1067 = load { ptr, i64, i64 }, ptr %a1062 + store { ptr, i64, i64 } %t1067, ptr %a1069 + store { ptr, i64, i64 } { ptr @.str.4914, i64 1, i64 0 }, ptr %a1070 + call void @finch_str_concat(ptr %a1068, ptr %a1069, ptr %a1070) + store { ptr, i64, i64 } %t1067, ptr %a1071 + call void @finch_str_drop(ptr %a1071) + %t1072 = load { ptr, i64, i64 }, ptr %a1068 + store { ptr, i64, i64 } %t1072, ptr %a1073 + %t1074 = getelementptr inbounds %S.ast.Type, ptr %a219, i32 0, i32 0 + %t1075 = load { ptr, i64, i64 }, ptr %t1074 + store { ptr, i64, i64 } %t1075, ptr %a1076 + store { ptr, i64, i64 } { ptr @.str.4915, i64 4, i64 0 }, ptr %a1077 + %t1078 = call i32 @finch_str_eq(ptr %a1076, ptr %a1077) + %t1079 = icmp ne i32 %t1078, 0 + br i1 %t1079, label %then7673, label %endif7675 +then7673: + %t1080 = load ptr, ptr %a1 + %t1081 = load { ptr, i64, i64 }, ptr %a1073 + call void @finch.gen.emit(ptr %t1080, { ptr, i64, i64 } %t1081) + %t1082 = load ptr, ptr %a1 + %t1083 = load { ptr, i64, i64 }, ptr %a317 + %t1084 = load i64, ptr %a323 + call void @finch.gen.releaseAll(ptr %t1082, { ptr, i64, i64 } %t1083, i64 %t1084) + %t1085 = load %S.ast.Type, ptr %a219 + store %S.ast.Type %t1085, ptr %a1086 + call void @finch.copy.S_ast_Type(ptr %a1087, ptr %a1086) + %t1088 = load %S.ast.Type, ptr %a1087 + %t1089 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t1088, 1 + call void @finch_str_drop(ptr %a1073) + call void @finch_str_drop(ptr %a994) + call void @finch_str_drop(ptr %a877) + call void @finch_str_drop(ptr %a864) + call void @finch_str_drop(ptr %a863) + call void @finch.drop.arr_S_gen_Val(ptr %a317) + call void @finch_str_drop(ptr %a264) + call void @finch.drop.arr_str(ptr %a263) + call void @finch.drop.arr_str(ptr %a262) + call void @finch.drop.S_gen_Plan(ptr %a261) + call void @finch.drop.arr_S_ast_Type(ptr %a225) + call void @finch.drop.S_ast_Type(ptr %a219) + ret %S.gen.Val %t1089 +endif7675: + %t1090 = getelementptr inbounds %S.gen.Plan, ptr %a261, i32 0, i32 3 + %t1091 = load i1, ptr %t1090 + br i1 %t1091, label %then7676, label %endif7678 +then7676: + %t1092 = load ptr, ptr %a1 + %t1093 = load { ptr, i64, i64 }, ptr %a1073 + call void @finch.gen.emit(ptr %t1092, { ptr, i64, i64 } %t1093) + %t1094 = load ptr, ptr %a1 + %t1095 = load { ptr, i64, i64 }, ptr %a317 + %t1096 = load i64, ptr %a323 + call void @finch.gen.releaseAll(ptr %t1094, { ptr, i64, i64 } %t1095, i64 %t1096) + %t1097 = load ptr, ptr %a1 + %t1098 = load ptr, ptr %a1 + %t1099 = load %S.ast.Type, ptr %a219 + %t1100 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t1098, %S.ast.Type %t1099) + %t1101 = load { ptr, i64, i64 }, ptr %a264 + %t1102 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1097, { ptr, i64, i64 } %t1100, { ptr, i64, i64 } %t1101) + store { ptr, i64, i64 } %t1100, ptr %a1103 + call void @finch_str_drop(ptr %a1103) + %t1104 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1102, 0 + %t1105 = load %S.ast.Type, ptr %a219 + store %S.ast.Type %t1105, ptr %a1106 + call void @finch.copy.S_ast_Type(ptr %a1107, ptr %a1106) + %t1108 = load %S.ast.Type, ptr %a1107 + %t1109 = insertvalue %S.gen.Val %t1104, %S.ast.Type %t1108, 1 + call void @finch_str_drop(ptr %a1073) + call void @finch_str_drop(ptr %a994) + call void @finch_str_drop(ptr %a877) + call void @finch_str_drop(ptr %a864) + call void @finch_str_drop(ptr %a863) + call void @finch.drop.arr_S_gen_Val(ptr %a317) + call void @finch_str_drop(ptr %a264) + call void @finch.drop.arr_str(ptr %a263) + call void @finch.drop.arr_str(ptr %a262) + call void @finch.drop.S_gen_Plan(ptr %a261) + call void @finch.drop.arr_S_ast_Type(ptr %a225) + call void @finch.drop.S_ast_Type(ptr %a219) + ret %S.gen.Val %t1109 +endif7678: + %t1110 = load ptr, ptr %a1 + %t1111 = load { ptr, i64, i64 }, ptr %a1073 + %t1112 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1110, { ptr, i64, i64 } %t1111) + store { ptr, i64, i64 } %t1112, ptr %a1113 + %t1114 = load ptr, ptr %a1 + %t1115 = load { ptr, i64, i64 }, ptr %a317 + %t1116 = load i64, ptr %a323 + call void @finch.gen.releaseAll(ptr %t1114, { ptr, i64, i64 } %t1115, i64 %t1116) + %t1117 = getelementptr inbounds %S.gen.Plan, ptr %a261, i32 0, i32 0 + %t1118 = getelementptr inbounds %S.gen.Abi, ptr %t1117, i32 0, i32 0 + %t1119 = load { ptr, i64, i64 }, ptr %t1118 + store { ptr, i64, i64 } %t1119, ptr %a1120 + store { ptr, i64, i64 } { ptr @.str.4916, i64 6, i64 0 }, ptr %a1121 + %t1122 = call i32 @finch_str_eq(ptr %a1120, ptr %a1121) + %t1123 = icmp ne i32 %t1122, 0 + br i1 %t1123, label %then7679, label %endif7681 +then7679: + %t1124 = load ptr, ptr %a1 + %t1125 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t1124, { ptr, i64, i64 } { ptr @.str.4917, i64 9, i64 0 }) + store { ptr, i64, i64 } %t1125, ptr %a1126 + %t1127 = load ptr, ptr %a1 + %t1128 = getelementptr inbounds %S.gen.Plan, ptr %a261, i32 0, i32 0 + %t1129 = getelementptr inbounds %S.gen.Abi, ptr %t1128, i32 0, i32 2 + %t1130 = load { ptr, i64, i64 }, ptr %t1129 + %t1131 = load { ptr, i64, i64 }, ptr %a1113 + %t1132 = load { ptr, i64, i64 }, ptr %a1126 + call void @finch.gen.store(ptr %t1127, { ptr, i64, i64 } %t1130, { ptr, i64, i64 } %t1131, { ptr, i64, i64 } %t1132) + %t1133 = load ptr, ptr %a1 + %t1134 = load ptr, ptr %a1 + %t1135 = load %S.ast.Type, ptr %a219 + %t1136 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t1134, %S.ast.Type %t1135) + %t1137 = load { ptr, i64, i64 }, ptr %a1126 + %t1138 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1133, { ptr, i64, i64 } %t1136, { ptr, i64, i64 } %t1137) + store { ptr, i64, i64 } %t1136, ptr %a1139 + call void @finch_str_drop(ptr %a1139) + %t1140 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1138, 0 + %t1141 = load %S.ast.Type, ptr %a219 + store %S.ast.Type %t1141, ptr %a1142 + call void @finch.copy.S_ast_Type(ptr %a1143, ptr %a1142) + %t1144 = load %S.ast.Type, ptr %a1143 + %t1145 = insertvalue %S.gen.Val %t1140, %S.ast.Type %t1144, 1 + call void @finch_str_drop(ptr %a1126) + call void @finch_str_drop(ptr %a1113) + call void @finch_str_drop(ptr %a1073) + call void @finch_str_drop(ptr %a994) + call void @finch_str_drop(ptr %a877) + call void @finch_str_drop(ptr %a864) + call void @finch_str_drop(ptr %a863) + call void @finch.drop.arr_S_gen_Val(ptr %a317) + call void @finch_str_drop(ptr %a264) + call void @finch.drop.arr_str(ptr %a263) + call void @finch.drop.arr_str(ptr %a262) + call void @finch.drop.S_gen_Plan(ptr %a261) + call void @finch.drop.arr_S_ast_Type(ptr %a225) + call void @finch.drop.S_ast_Type(ptr %a219) + ret %S.gen.Val %t1145 +endif7681: + %t1146 = getelementptr inbounds %S.ast.Type, ptr %a219, i32 0, i32 0 + %t1147 = load { ptr, i64, i64 }, ptr %t1146 + store { ptr, i64, i64 } %t1147, ptr %a1148 + store { ptr, i64, i64 } { ptr @.str.4918, i64 3, i64 0 }, ptr %a1149 + %t1150 = call i32 @finch_str_eq(ptr %a1148, ptr %a1149) + %t1151 = icmp ne i32 %t1150, 0 + br i1 %t1151, label %then7682, label %endif7684 +then7682: + %t1152 = load ptr, ptr %a1 + %t1153 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t1152) + store { ptr, i64, i64 } %t1153, ptr %a1154 + %t1155 = load ptr, ptr %a1 + %t1156 = load { ptr, i64, i64 }, ptr %a1154 + call void @finch.gen.store(ptr %t1155, { ptr, i64, i64 } { ptr @.str.4919, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4920, i64 15, i64 0 }, { ptr, i64, i64 } %t1156) + %t1157 = load ptr, ptr %a1 + %t1158 = load { ptr, i64, i64 }, ptr %a1154 + store { ptr, i64, i64 } { ptr @.str.4921, i64 32, i64 0 }, ptr %a1160 + store { ptr, i64, i64 } %t1158, ptr %a1161 + call void @finch_str_concat(ptr %a1159, ptr %a1160, ptr %a1161) + %t1162 = load { ptr, i64, i64 }, ptr %a1159 + store { ptr, i64, i64 } %t1162, ptr %a1164 + store { ptr, i64, i64 } { ptr @.str.4922, i64 6, i64 0 }, ptr %a1165 + call void @finch_str_concat(ptr %a1163, ptr %a1164, ptr %a1165) + store { ptr, i64, i64 } %t1162, ptr %a1166 + call void @finch_str_drop(ptr %a1166) + %t1167 = load { ptr, i64, i64 }, ptr %a1163 + %t1168 = load { ptr, i64, i64 }, ptr %a1113 + store { ptr, i64, i64 } %t1167, ptr %a1170 + store { ptr, i64, i64 } %t1168, ptr %a1171 + call void @finch_str_concat(ptr %a1169, ptr %a1170, ptr %a1171) + store { ptr, i64, i64 } %t1167, ptr %a1172 + call void @finch_str_drop(ptr %a1172) + %t1173 = load { ptr, i64, i64 }, ptr %a1169 + store { ptr, i64, i64 } %t1173, ptr %a1175 + store { ptr, i64, i64 } { ptr @.str.4923, i64 1, i64 0 }, ptr %a1176 + call void @finch_str_concat(ptr %a1174, ptr %a1175, ptr %a1176) + store { ptr, i64, i64 } %t1173, ptr %a1177 + call void @finch_str_drop(ptr %a1177) + %t1178 = load { ptr, i64, i64 }, ptr %a1174 + call void @finch.gen.emit(ptr %t1157, { ptr, i64, i64 } %t1178) + store { ptr, i64, i64 } %t1178, ptr %a1179 + call void @finch_str_drop(ptr %a1179) + %t1180 = load ptr, ptr %a1 + %t1181 = load { ptr, i64, i64 }, ptr %a1154 + %t1182 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1180, { ptr, i64, i64 } { ptr @.str.4924, i64 17, i64 0 }, { ptr, i64, i64 } %t1181) + %t1183 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1182, 0 + %t1184 = load %S.ast.Type, ptr %a219 + store %S.ast.Type %t1184, ptr %a1185 + call void @finch.copy.S_ast_Type(ptr %a1186, ptr %a1185) + %t1187 = load %S.ast.Type, ptr %a1186 + %t1188 = insertvalue %S.gen.Val %t1183, %S.ast.Type %t1187, 1 + call void @finch_str_drop(ptr %a1154) + call void @finch_str_drop(ptr %a1113) + call void @finch_str_drop(ptr %a1073) + call void @finch_str_drop(ptr %a994) + call void @finch_str_drop(ptr %a877) + call void @finch_str_drop(ptr %a864) + call void @finch_str_drop(ptr %a863) + call void @finch.drop.arr_S_gen_Val(ptr %a317) + call void @finch_str_drop(ptr %a264) + call void @finch.drop.arr_str(ptr %a263) + call void @finch.drop.arr_str(ptr %a262) + call void @finch.drop.S_gen_Plan(ptr %a261) + call void @finch.drop.arr_S_ast_Type(ptr %a225) + call void @finch.drop.S_ast_Type(ptr %a219) + ret %S.gen.Val %t1188 +endif7684: + %t1189 = load { ptr, i64, i64 }, ptr %a1113 + store { ptr, i64, i64 } %t1189, ptr %a1190 + call void @finch_str_copy(ptr %a1191, ptr %a1190) + %t1192 = load { ptr, i64, i64 }, ptr %a1191 + %t1193 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1192, 0 + %t1194 = load %S.ast.Type, ptr %a219 + store %S.ast.Type %t1194, ptr %a1195 + call void @finch.copy.S_ast_Type(ptr %a1196, ptr %a1195) + %t1197 = load %S.ast.Type, ptr %a1196 + %t1198 = insertvalue %S.gen.Val %t1193, %S.ast.Type %t1197, 1 + call void @finch_str_drop(ptr %a1113) + call void @finch_str_drop(ptr %a1073) + call void @finch_str_drop(ptr %a994) + call void @finch_str_drop(ptr %a877) + call void @finch_str_drop(ptr %a864) + call void @finch_str_drop(ptr %a863) + call void @finch.drop.arr_S_gen_Val(ptr %a317) + call void @finch_str_drop(ptr %a264) + call void @finch.drop.arr_str(ptr %a263) + call void @finch.drop.arr_str(ptr %a262) + call void @finch.drop.S_gen_Plan(ptr %a261) + call void @finch.drop.arr_S_ast_Type(ptr %a225) + call void @finch.drop.S_ast_Type(ptr %a219) + ret %S.gen.Val %t1198 +} + +define internal void @finch.gen.releaseAll(ptr %p0, { ptr, i64, i64 } %p1, i64 %p2) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca i64, align 16 + %a4 = alloca i64, align 16 + %a12 = alloca %S.gen.Val, align 16 + store ptr %p0, ptr %a1 + store { ptr, i64, i64 } %p1, ptr %a2 + store i64 %p2, ptr %a3 + store i64 0, ptr %a4 + br label %each.cond7685 +each.cond7685: + %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t6 = load i64, ptr %t5 + %t7 = load i64, ptr %a4 + %t8 = icmp slt i64 %t7, %t6 + br i1 %t8, label %each.body7686, label %each.end7688 +each.body7686: + %t9 = load ptr, ptr %a2 + %t10 = getelementptr inbounds %S.gen.Val, ptr %t9, i64 %t7 + %t11 = load %S.gen.Val, ptr %t10 + store %S.gen.Val %t11, ptr %a12 + %t13 = load ptr, ptr %a1 + %t14 = load %S.gen.Val, ptr %a12 + call void @finch.gen.release(ptr %t13, %S.gen.Val %t14) + br label %each.step7687 +each.step7687: + %t15 = load i64, ptr %a4 + %t16 = add i64 %t15, 1 + store i64 %t16, ptr %a4 + br label %each.cond7685 +each.end7688: + %t17 = load ptr, ptr %a1 + %t18 = load i64, ptr %a3 + call void @finch.gen.heldEnd(ptr %t17, i64 %t18) + ret void } define internal i1 @finch.gen.runtimeDeclares({ ptr, i64, i64 } %p0) { @@ -65801,15 +78001,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.4750, i64 6, i64 0 }, ptr %t4 + store { ptr, i64, i64 } { ptr @.str.4925, i64 6, i64 0 }, ptr %t4 %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 - store { ptr, i64, i64 } { ptr @.str.4751, i64 6, i64 0 }, ptr %t5 + store { ptr, i64, i64 } { ptr @.str.4926, i64 6, i64 0 }, ptr %t5 %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2 - store { ptr, i64, i64 } { ptr @.str.4752, i64 4, i64 0 }, ptr %t6 + store { ptr, i64, i64 } { ptr @.str.4927, i64 4, i64 0 }, ptr %t6 %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 3 - store { ptr, i64, i64 } { ptr @.str.4753, i64 4, i64 0 }, ptr %t7 + store { ptr, i64, i64 } { ptr @.str.4928, i64 4, i64 0 }, ptr %t7 %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4 - store { ptr, i64, i64 } { ptr @.str.4754, i64 5, i64 0 }, ptr %t8 + store { ptr, i64, i64 } { ptr @.str.4929, 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 @@ -65820,29 +78020,30 @@ entry: %t16 = load i64, ptr %t13 %t17 = load ptr, ptr %a12 store i64 0, ptr %a18 - br label %find.cond7305 -find.cond7305: + br label %find.cond7689 +find.cond7689: %t19 = load i64, ptr %a18 %t20 = icmp slt i64 %t19, %t16 - br i1 %t20, label %find.body7306, label %find.end7309 -find.body7306: + br i1 %t20, label %find.body7690, label %find.end7693 +find.body7690: %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.hit7307, label %find.next7308 -find.hit7307: + br i1 %t26, label %find.hit7691, label %find.next7692 +find.hit7691: store i64 %t19, ptr %a15 - br label %find.end7309 -find.next7308: + br label %find.end7693 +find.next7692: %t27 = add i64 %t19, 1 store i64 %t27, ptr %a18 - br label %find.cond7305 -find.end7309: + br label %find.cond7689 +find.end7693: %t28 = load i64, ptr %a15 %t29 = icmp sge i64 %t28, 0 + call void @finch.drop.arr_str(ptr %a12) ret i1 %t29 } @@ -65862,55 +78063,56 @@ entry: %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 store { ptr, i64, i64 } %p0, ptr %a1 %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.4755, i64 6, i64 0 }, ptr %t4 + store { ptr, i64, i64 } { ptr @.str.4930, i64 6, i64 0 }, ptr %t4 %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 - store { ptr, i64, i64 } { ptr @.str.4756, i64 4, i64 0 }, ptr %t5 + store { ptr, i64, i64 } { ptr @.str.4931, i64 4, i64 0 }, ptr %t5 %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2 - store { ptr, i64, i64 } { ptr @.str.4757, i64 7, i64 0 }, ptr %t6 + store { ptr, i64, i64 } { ptr @.str.4932, i64 7, i64 0 }, ptr %t6 %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 3 - store { ptr, i64, i64 } { ptr @.str.4758, i64 5, i64 0 }, ptr %t7 + store { ptr, i64, i64 } { ptr @.str.4933, i64 5, i64 0 }, ptr %t7 %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4 - store { ptr, i64, i64 } { ptr @.str.4759, i64 5, i64 0 }, ptr %t8 + store { ptr, i64, i64 } { ptr @.str.4934, i64 5, i64 0 }, ptr %t8 %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 5 - store { ptr, i64, i64 } { ptr @.str.4760, i64 7, i64 0 }, ptr %t9 + store { ptr, i64, i64 } { ptr @.str.4935, i64 7, i64 0 }, ptr %t9 %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 6 - store { ptr, i64, i64 } { ptr @.str.4761, i64 4, i64 0 }, ptr %t10 + store { ptr, i64, i64 } { ptr @.str.4936, i64 4, i64 0 }, ptr %t10 %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 7 - store { ptr, i64, i64 } { ptr @.str.4762, i64 3, i64 0 }, ptr %t11 + store { ptr, i64, i64 } { ptr @.str.4937, i64 3, i64 0 }, ptr %t11 %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 8 - store { ptr, i64, i64 } { ptr @.str.4763, i64 3, i64 0 }, ptr %t12 + store { ptr, i64, i64 } { ptr @.str.4938, i64 3, i64 0 }, ptr %t12 %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 9 - store { ptr, i64, i64 } { ptr @.str.4764, i64 3, i64 0 }, ptr %t13 + store { ptr, i64, i64 } { ptr @.str.4939, i64 3, i64 0 }, ptr %t13 %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 10 - store { ptr, i64, i64 } { ptr @.str.4765, i64 5, i64 0 }, ptr %t14 + store { ptr, i64, i64 } { ptr @.str.4940, i64 5, i64 0 }, ptr %t14 %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 11 - store { ptr, i64, i64 } { ptr @.str.4766, i64 4, i64 0 }, ptr %t15 + store { ptr, i64, i64 } { ptr @.str.4941, i64 4, i64 0 }, ptr %t15 %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 12 - store { ptr, i64, i64 } { ptr @.str.4767, i64 6, i64 0 }, ptr %t16 + store { ptr, i64, i64 } { ptr @.str.4942, i64 6, i64 0 }, ptr %t16 %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 13 - store { ptr, i64, i64 } { ptr @.str.4768, i64 4, i64 0 }, ptr %t17 + store { ptr, i64, i64 } { ptr @.str.4943, i64 4, i64 0 }, ptr %t17 %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 14 - store { ptr, i64, i64 } { ptr @.str.4769, i64 5, i64 0 }, ptr %t18 + store { ptr, i64, i64 } { ptr @.str.4944, i64 5, i64 0 }, ptr %t18 %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 15 - store { ptr, i64, i64 } { ptr @.str.4770, i64 3, i64 0 }, ptr %t19 + store { ptr, i64, i64 } { ptr @.str.4945, i64 3, i64 0 }, ptr %t19 %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 16 - store { ptr, i64, i64 } { ptr @.str.4771, i64 4, i64 0 }, ptr %t20 + store { ptr, i64, i64 } { ptr @.str.4946, i64 4, i64 0 }, ptr %t20 %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 17 - store { ptr, i64, i64 } { ptr @.str.4772, i64 6, i64 0 }, ptr %t21 + store { ptr, i64, i64 } { ptr @.str.4947, i64 6, i64 0 }, ptr %t21 %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 18 - store { ptr, i64, i64 } { ptr @.str.4773, i64 6, i64 0 }, ptr %t22 + store { ptr, i64, i64 } { ptr @.str.4948, i64 6, i64 0 }, ptr %t22 %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 19 - store { ptr, i64, i64 } { ptr @.str.4774, i64 6, i64 0 }, ptr %t23 + store { ptr, i64, i64 } { ptr @.str.4949, i64 6, i64 0 }, ptr %t23 %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 20 - store { ptr, i64, i64 } { ptr @.str.4775, i64 4, i64 0 }, ptr %t24 + store { ptr, i64, i64 } { ptr @.str.4950, i64 4, i64 0 }, ptr %t24 %t25 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 21 - store { ptr, i64, i64 } { ptr @.str.4776, i64 5, i64 0 }, ptr %t25 + store { ptr, i64, i64 } { ptr @.str.4951, i64 5, i64 0 }, ptr %t25 %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 22 - store { ptr, i64, i64 } { ptr @.str.4777, i64 6, i64 0 }, ptr %t26 + store { ptr, i64, i64 } { ptr @.str.4952, 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 @@ -65918,51 +78120,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.4778, i64 7, i64 0 }, ptr %t33 + store { ptr, i64, i64 } { ptr @.str.4953, i64 7, i64 0 }, ptr %t33 %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 1 - store { ptr, i64, i64 } { ptr @.str.4779, i64 7, i64 0 }, ptr %t34 + store { ptr, i64, i64 } { ptr @.str.4954, i64 7, i64 0 }, ptr %t34 %t35 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 2 - store { ptr, i64, i64 } { ptr @.str.4780, i64 7, i64 0 }, ptr %t35 + store { ptr, i64, i64 } { ptr @.str.4955, i64 7, i64 0 }, ptr %t35 %t36 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 3 - store { ptr, i64, i64 } { ptr @.str.4781, i64 7, i64 0 }, ptr %t36 + store { ptr, i64, i64 } { ptr @.str.4956, i64 7, i64 0 }, ptr %t36 %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 4 - store { ptr, i64, i64 } { ptr @.str.4782, i64 7, i64 0 }, ptr %t37 + store { ptr, i64, i64 } { ptr @.str.4957, i64 7, i64 0 }, ptr %t37 %t38 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 5 - store { ptr, i64, i64 } { ptr @.str.4783, i64 7, i64 0 }, ptr %t38 + store { ptr, i64, i64 } { ptr @.str.4958, i64 7, i64 0 }, ptr %t38 %t39 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 6 - store { ptr, i64, i64 } { ptr @.str.4784, i64 6, i64 0 }, ptr %t39 + store { ptr, i64, i64 } { ptr @.str.4959, i64 6, i64 0 }, ptr %t39 %t40 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 7 - store { ptr, i64, i64 } { ptr @.str.4785, i64 6, i64 0 }, ptr %t40 + store { ptr, i64, i64 } { ptr @.str.4960, i64 6, i64 0 }, ptr %t40 %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 8 - store { ptr, i64, i64 } { ptr @.str.4786, i64 6, i64 0 }, ptr %t41 + store { ptr, i64, i64 } { ptr @.str.4961, i64 6, i64 0 }, ptr %t41 %t42 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 9 - store { ptr, i64, i64 } { ptr @.str.4787, i64 6, i64 0 }, ptr %t42 + store { ptr, i64, i64 } { ptr @.str.4962, i64 6, i64 0 }, ptr %t42 %t43 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 10 - store { ptr, i64, i64 } { ptr @.str.4788, i64 6, i64 0 }, ptr %t43 + store { ptr, i64, i64 } { ptr @.str.4963, i64 6, i64 0 }, ptr %t43 %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 11 - store { ptr, i64, i64 } { ptr @.str.4789, i64 6, i64 0 }, ptr %t44 + store { ptr, i64, i64 } { ptr @.str.4964, i64 6, i64 0 }, ptr %t44 %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 12 - store { ptr, i64, i64 } { ptr @.str.4790, i64 8, i64 0 }, ptr %t45 + store { ptr, i64, i64 } { ptr @.str.4965, i64 8, i64 0 }, ptr %t45 %t46 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 13 - store { ptr, i64, i64 } { ptr @.str.4791, i64 8, i64 0 }, ptr %t46 + store { ptr, i64, i64 } { ptr @.str.4966, i64 8, i64 0 }, ptr %t46 %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 14 - store { ptr, i64, i64 } { ptr @.str.4792, i64 8, i64 0 }, ptr %t47 + store { ptr, i64, i64 } { ptr @.str.4967, i64 8, i64 0 }, ptr %t47 %t48 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 15 - store { ptr, i64, i64 } { ptr @.str.4793, i64 8, i64 0 }, ptr %t48 + store { ptr, i64, i64 } { ptr @.str.4968, i64 8, i64 0 }, ptr %t48 %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 16 - store { ptr, i64, i64 } { ptr @.str.4794, i64 8, i64 0 }, ptr %t49 + store { ptr, i64, i64 } { ptr @.str.4969, i64 8, i64 0 }, ptr %t49 %t50 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 17 - store { ptr, i64, i64 } { ptr @.str.4795, i64 8, i64 0 }, ptr %t50 + store { ptr, i64, i64 } { ptr @.str.4970, i64 8, i64 0 }, ptr %t50 %t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 18 - store { ptr, i64, i64 } { ptr @.str.4796, i64 8, i64 0 }, ptr %t51 + store { ptr, i64, i64 } { ptr @.str.4971, i64 8, i64 0 }, ptr %t51 %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 19 - store { ptr, i64, i64 } { ptr @.str.4797, i64 8, i64 0 }, ptr %t52 + store { ptr, i64, i64 } { ptr @.str.4972, i64 8, i64 0 }, ptr %t52 %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 20 - store { ptr, i64, i64 } { ptr @.str.4798, i64 6, i64 0 }, ptr %t53 + store { ptr, i64, i64 } { ptr @.str.4973, i64 6, i64 0 }, ptr %t53 %t54 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 21 - store { ptr, i64, i64 } { ptr @.str.4799, i64 8, i64 0 }, ptr %t54 + store { ptr, i64, i64 } { ptr @.str.4974, i64 8, i64 0 }, ptr %t54 %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 22 - store { ptr, i64, i64 } { ptr @.str.4800, i64 8, i64 0 }, ptr %t55 + store { ptr, i64, i64 } { ptr @.str.4975, 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 @@ -65973,56 +78175,98 @@ entry: %t63 = load i64, ptr %t60 %t64 = load ptr, ptr %a30 store i64 0, ptr %a65 - br label %find.cond7310 -find.cond7310: + br label %find.cond7694 +find.cond7694: %t66 = load i64, ptr %a65 %t67 = icmp slt i64 %t66, %t63 - br i1 %t67, label %find.body7311, label %find.end7314 -find.body7311: + br i1 %t67, label %find.body7695, label %find.end7698 +find.body7695: %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.hit7312, label %find.next7313 -find.hit7312: + br i1 %t73, label %find.hit7696, label %find.next7697 +find.hit7696: store i64 %t66, ptr %a62 - br label %find.end7314 -find.next7313: + br label %find.end7698 +find.next7697: %t74 = add i64 %t66, 1 store i64 %t74, ptr %a65 - br label %find.cond7310 -find.end7314: + br label %find.cond7694 +find.end7698: %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 %then7315, label %endif7317 -then7315: - ret { ptr, i64, i64 } { ptr @.str.4801, i64 0, i64 0 } -endif7317: + br i1 %t78, label %then7699, label %endif7701 +then7699: + call void @finch.drop.arr_str(ptr %a59) + call void @finch.drop.arr_str(ptr %a30) + ret { ptr, i64, i64 } { ptr @.str.4976, i64 0, i64 0 } +endif7701: %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 %range7318, label %inrange7319 -range7318: - call void @finch_panic_index(ptr @.str.4803, i64 4299, i64 %t79, i64 %t81) + br i1 %t82, label %range7702, label %inrange7703 +range7702: + call void @finch_panic_index(ptr @.str.4978, i64 4603, i64 %t79, i64 %t81) unreachable -inrange7319: +inrange7703: %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.4802, i64 28, i64 0 }, ptr %a87 + store { ptr, i64, i64 } { ptr @.str.4977, 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.4804, i64 14, i64 0 }, ptr %a92 + store { ptr, i64, i64 } { ptr @.str.4979, 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 + store { ptr, i64, i64 } %t89, ptr %a93 + call void @finch_str_drop(ptr %a93) + %t94 = load { ptr, i64, i64 }, ptr %a90 + call void @finch.drop.arr_str(ptr %a59) + call void @finch.drop.arr_str(ptr %a30) + ret { ptr, i64, i64 } %t94 +} + +define internal void @finch.drop.S_docs_Doc(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.docs.Doc, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.docs.Doc, ptr %a, i32 0, i32 1 + call void @finch_str_drop(ptr %t2) + %t3 = getelementptr inbounds %S.docs.Doc, ptr %a, i32 0, i32 2 + call void @finch_str_drop(ptr %t3) + ret void +} + +define internal void @finch.drop.arr_S_docs_Doc(ptr %a) { +entry: + %a4 = alloca i64, align 16 + %t1 = load ptr, ptr %a + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 + %t3 = load i64, ptr %t2 + store i64 0, ptr %a4 + br label %n.cond7713 +n.cond7713: + %t5 = load i64, ptr %a4 + %t6 = icmp slt i64 %t5, %t3 + br i1 %t6, label %n.body7714, label %n.end7715 +n.body7714: + %t7 = getelementptr inbounds %S.docs.Doc, ptr %t1, i64 %t5 + call void @finch.drop.S_docs_Doc(ptr %t7) + %t8 = load i64, ptr %a4 + %t9 = add i64 %t8, 1 + store i64 %t9, ptr %a4 + br label %n.cond7713 +n.end7715: + call void @finch_arr_free(ptr %a) + ret void } define internal %S.gen.Val @finch.gen.call(ptr %p0, %S.ast.Node %p1) { @@ -66032,485 +78276,652 @@ entry: %a5 = alloca { ptr, i64, i64 }, align 16 %a6 = alloca { ptr, i64, i64 }, align 16 %a8 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca %S.docs.Doc, align 16 + %a19 = alloca { ptr, i64, i64 }, align 16 + %a20 = 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 - %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 - %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 - %a192 = alloca %S.gen.Val, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 + %a35 = alloca { ptr, i64, i64 }, align 16 + %a36 = alloca { ptr, i64, i64 }, align 16 + %a42 = alloca { ptr, i64, i64 }, align 16 + %a43 = alloca { ptr, i64, i64 }, align 16 + %a49 = alloca i64, align 16 + %a62 = alloca %S.gen.Val, align 16 + %a66 = alloca { ptr, i64, i64 }, align 16 + %a67 = alloca { ptr, i64, i64 }, align 16 + %a95 = alloca { ptr, i64, i64 }, align 16 + %a96 = alloca { ptr, i64, i64 }, align 16 + %a109 = alloca %S.ast.Node, align 16 + %a110 = alloca %S.ast.Node, align 16 + %a112 = alloca %S.ast.Node, align 16 + %a115 = alloca { ptr, i64, i64 }, align 16 + %a116 = alloca { ptr, i64, i64 }, align 16 + %a133 = alloca i64, align 16 + %a145 = alloca { ptr, i64, i64 }, align 16 + %a146 = alloca { ptr, i64, i64 }, align 16 + %a151 = alloca { ptr, i64, i64 }, align 16 + %a152 = alloca { ptr, i64, i64 }, align 16 + %a158 = alloca { ptr, i64, i64 }, align 16 + %a159 = alloca { ptr, i64, i64 }, align 16 + %a168 = alloca %S.gen.Place, align 16 + %a171 = alloca { ptr, i64, i64 }, align 16 + %a172 = alloca { ptr, i64, i64 }, align 16 + %a180 = alloca { ptr, i64, i64 }, align 16 + %a181 = alloca { ptr, i64, i64 }, align 16 + %a196 = alloca %S.gen.Val, align 16 %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 + %a203 = alloca { ptr, i64, i64 }, align 16 %a204 = alloca { ptr, i64, i64 }, align 16 - %a205 = 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 + %a206 = alloca { ptr, i64, i64 }, align 16 + %a207 = alloca i1, align 16 + %a209 = alloca { ptr, i64, i64 }, align 16 + %a210 = alloca { ptr, i64, i64 }, align 16 + %a219 = alloca %S.ast.Type, align 16 + %a220 = alloca %S.ast.Type, align 16 %a229 = 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 %a233 = 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 + %a234 = alloca { ptr, i64, i64 }, align 16 + %a235 = alloca { ptr, i64, i64 }, align 16 + %a236 = alloca { ptr, i64, i64 }, align 16 + %a245 = alloca %S.ast.Type, 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 + %a250 = alloca { ptr, i64, i64 }, align 16 + %a252 = 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 - %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 + %a263 = alloca { ptr, i64, i64 }, align 16 + %a264 = alloca { ptr, i64, i64 }, align 16 + %a265 = alloca { ptr, i64, i64 }, align 16 + %a267 = alloca { ptr, i64, i64 }, align 16 + %a268 = 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 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 + %a279 = alloca %S.ast.Type, 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 %a288 = alloca { ptr, i64, i64 }, align 16 %a289 = alloca { ptr, i64, i64 }, align 16 + %a291 = 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 + %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 - %a307 = alloca { ptr, i64, i64 }, align 16 - %a308 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 + %a313 = alloca %S.ast.Type, align 16 %a314 = alloca { ptr, i64, i64 }, align 16 %a315 = 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 - %a319 = 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 %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 - %a332 = 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 + %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 - %a343 = 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 + %a346 = alloca { ptr, i64, i64 }, align 16 + %a347 = 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 - %a355 = alloca { ptr, i64, i64 }, align 16 + %a354 = alloca { ptr, i64, i64 }, align 16 %a356 = 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 + %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 + %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 %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 %a387 = 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 + %a390 = 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 + %a394 = alloca { ptr, i64, i64 }, align 16 + %a395 = alloca { ptr, i64, i64 }, align 16 %a397 = alloca { ptr, i64, i64 }, align 16 + %a399 = alloca { ptr, i64, i64 }, align 16 + %a400 = 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 - %a410 = alloca { ptr, i64, i64 }, align 16 - %a422 = 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 + %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 %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 - %a436 = alloca { ptr, i64, i64 }, align 16 - %a437 = alloca { ptr, i64, i64 }, align 16 - %a438 = 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 + %a430 = alloca { ptr, i64, i64 }, align 16 + %a431 = 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 + %a456 = alloca { ptr, i64, i64 }, align 16 %a457 = alloca { ptr, i64, i64 }, align 16 - %a458 = 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 + %a466 = alloca { ptr, i64, i64 }, align 16 + %a467 = alloca { ptr, i64, i64 }, align 16 + %a468 = 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 + %a471 = alloca { ptr, i64, i64 }, align 16 + %a472 = alloca { ptr, i64, i64 }, align 16 + %a473 = alloca { ptr, i64, i64 }, align 16 + %a478 = alloca { ptr, i64, i64 }, align 16 + %a479 = alloca { ptr, i64, i64 }, align 16 + %a480 = alloca { ptr, i64, i64 }, align 16 %a481 = alloca { ptr, i64, i64 }, align 16 %a482 = alloca { ptr, i64, i64 }, align 16 + %a484 = 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 + %a489 = alloca { ptr, i64, i64 }, align 16 + %a493 = alloca { ptr, i64, i64 }, align 16 + %a494 = alloca { ptr, i64, i64 }, align 16 + %a498 = alloca { ptr, i64, i64 }, align 16 + %a499 = alloca { ptr, i64, i64 }, align 16 + %a504 = 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 %a511 = alloca { ptr, i64, i64 }, align 16 + %a516 = alloca { ptr, i64, i64 }, align 16 + %a517 = 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 - %a537 = alloca { ptr, i64, i64 }, align 16 - %a538 = alloca { ptr, i64, i64 }, align 16 + %a523 = alloca { ptr, i64, i64 }, align 16 + %a548 = alloca { ptr, i64, i64 }, align 16 + %a549 = alloca { ptr, i64, i64 }, align 16 + %a550 = alloca { ptr, i64, i64 }, align 16 + %a551 = 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 %a556 = alloca { ptr, i64, i64 }, align 16 %a558 = alloca { ptr, i64, i64 }, align 16 - %a559 = 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 + %a579 = alloca %S.ast.Type, 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 - %a603 = alloca { ptr, i64, i64 }, align 16 + %a586 = alloca { ptr, i64, i64 }, align 16 + %a587 = alloca { ptr, i64, i64 }, align 16 + %a603 = alloca %S.gen.Val, align 16 + %a607 = 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 - %a612 = 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 %a619 = alloca { ptr, i64, i64 }, align 16 %a620 = alloca { ptr, i64, i64 }, align 16 %a621 = alloca { ptr, i64, i64 }, align 16 - %a623 = alloca { ptr, i64, i64 }, align 16 - %a624 = alloca { ptr, i64, i64 }, align 16 + %a622 = 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 + %a626 = 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 - %a640 = alloca { ptr, i64, i64 }, align 16 + %a638 = 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 + %a647 = alloca { ptr, i64, i64 }, align 16 + %a654 = alloca { ptr, i64, i64 }, align 16 + %a655 = alloca { ptr, i64, i64 }, align 16 + %a658 = alloca { ptr, i64, i64 }, align 16 + %a661 = alloca { ptr, i64, i64 }, align 16 + %a668 = alloca { ptr, i64, i64 }, align 16 + %a669 = alloca { ptr, i64, i64 }, align 16 + %a670 = alloca { ptr, i64, i64 }, align 16 + %a672 = alloca { ptr, i64, i64 }, align 16 + %a673 = alloca { ptr, i64, i64 }, align 16 + %a674 = alloca { ptr, i64, i64 }, align 16 + %a675 = 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 + %a684 = alloca { ptr, i64, i64 }, align 16 %a685 = alloca { ptr, i64, i64 }, align 16 %a686 = alloca { ptr, i64, i64 }, align 16 - %a687 = alloca { ptr, i64, i64 }, align 16 + %a689 = 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 %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 + %a697 = 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 + %a706 = alloca { ptr, i64, i64 }, align 16 + %a708 = alloca { ptr, i64, i64 }, align 16 %a709 = alloca { ptr, i64, i64 }, align 16 + %a710 = 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 + %a714 = alloca { ptr, i64, i64 }, align 16 + %a719 = 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 + %a750 = 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 %a757 = 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 %a765 = alloca { ptr, i64, i64 }, align 16 + %a766 = 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 + %a771 = 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 %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 + %a782 = alloca { ptr, i64, i64 }, align 16 %a786 = alloca { ptr, i64, i64 }, align 16 %a788 = 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 + %a791 = alloca { ptr, i64, i64 }, align 16 + %a792 = alloca { ptr, i64, i64 }, align 16 %a794 = 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 - %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 - %a807 = alloca { ptr, i64, i64 }, align 16 - %a809 = alloca { ptr, i64, i64 }, align 16 %a810 = 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 - %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 - %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 + %a826 = alloca %S.gen.Val, align 16 + %a832 = alloca i64, align 16 + %a844 = alloca %S.gen.Val, 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 - %a877 = alloca %S.gen.Val, align 16 + %a865 = alloca { ptr, i64, i64 }, align 16 + %a868 = alloca { ptr, i64, i64 }, align 16 + %a873 = alloca { ptr, i64, i64 }, align 16 + %a874 = alloca { ptr, i64, i64 }, align 16 + %a875 = alloca { ptr, i64, i64 }, align 16 + %a877 = alloca { ptr, i64, i64 }, align 16 + %a878 = alloca { ptr, i64, i64 }, align 16 + %a879 = alloca { ptr, i64, i64 }, 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 - %a887 = alloca { ptr, i64, i64 }, align 16 + %a886 = alloca { ptr, i64, i64 }, align 16 %a888 = 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 %a894 = alloca { ptr, i64, i64 }, align 16 %a895 = alloca { ptr, i64, i64 }, align 16 %a896 = alloca { ptr, i64, i64 }, align 16 - %a898 = alloca { ptr, i64, i64 }, align 16 + %a897 = alloca { ptr, i64, i64 }, align 16 %a899 = alloca { ptr, i64, i64 }, align 16 %a900 = alloca { ptr, i64, i64 }, align 16 - %a908 = 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 %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 + %a916 = 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 - %a923 = 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 %a942 = alloca { ptr, i64, i64 }, align 16 - %a944 = alloca { ptr, i64, i64 }, align 16 + %a943 = alloca { ptr, i64, i64 }, align 16 %a945 = alloca { ptr, i64, i64 }, align 16 %a946 = alloca { ptr, i64, i64 }, align 16 + %a947 = 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 + %a954 = alloca { ptr, i64, i64 }, align 16 + %a956 = alloca { ptr, i64, i64 }, align 16 + %a957 = alloca { ptr, i64, i64 }, align 16 + %a958 = alloca { ptr, i64, i64 }, align 16 + %a959 = 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 - %a966 = alloca { ptr, i64, i64 }, align 16 - %a967 = alloca { ptr, i64, i64 }, align 16 - %a968 = alloca { ptr, i64, i64 }, align 16 + %a970 = alloca { ptr, i64, i64 }, align 16 %a971 = alloca { ptr, i64, i64 }, align 16 + %a972 = 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 + %a977 = 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 - %a1003 = alloca %S.gen.Val, align 16 - %a1006 = alloca { ptr, i64, i64 }, align 16 + %a985 = alloca { ptr, i64, i64 }, align 16 + %a986 = alloca { ptr, i64, i64 }, align 16 + %a1001 = alloca %S.gen.Val, align 16 + %a1004 = alloca { ptr, i64, i64 }, align 16 + %a1007 = 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 %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 + %a1019 = alloca { ptr, i64, i64 }, align 16 %a1020 = alloca { ptr, i64, i64 }, align 16 %a1021 = alloca { ptr, i64, i64 }, align 16 %a1022 = alloca { ptr, i64, i64 }, align 16 - %a1024 = alloca { ptr, i64, i64 }, align 16 + %a1023 = alloca { ptr, i64, i64 }, align 16 %a1025 = alloca { ptr, i64, i64 }, align 16 %a1026 = alloca { ptr, i64, i64 }, align 16 + %a1027 = alloca { ptr, i64, i64 }, align 16 + %a1028 = 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 + %a1037 = alloca { ptr, i64, i64 }, align 16 + %a1038 = alloca { ptr, i64, i64 }, align 16 + %a1041 = 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 + %a1049 = alloca { ptr, i64, i64 }, align 16 + %a1050 = alloca { ptr, i64, i64 }, align 16 + %a1051 = alloca { ptr, i64, i64 }, align 16 + %a1053 = 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 + %a1060 = alloca { ptr, i64, i64 }, align 16 + %a1061 = alloca { ptr, i64, i64 }, align 16 + %a1062 = alloca { ptr, i64, i64 }, align 16 + %a1064 = 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 + %a1070 = alloca { ptr, i64, i64 }, align 16 + %a1071 = 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 + %a1076 = 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 + %a1080 = alloca { ptr, i64, i64 }, align 16 + %a1081 = alloca { ptr, i64, i64 }, align 16 + %a1084 = 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 + %a1097 = alloca { ptr, i64, i64 }, align 16 + %a1101 = alloca %S.ast.Type, align 16 + %a1108 = alloca { ptr, i64, i64 }, align 16 + %a1109 = alloca { ptr, i64, i64 }, align 16 + %a1110 = alloca { ptr, i64, i64 }, align 16 + %a1112 = alloca { ptr, i64, i64 }, align 16 + %a1113 = alloca { ptr, i64, i64 }, align 16 + %a1114 = alloca { ptr, i64, i64 }, align 16 + %a1115 = alloca { ptr, i64, i64 }, align 16 + %a1118 = alloca { ptr, i64, i64 }, align 16 + %a1119 = alloca { ptr, i64, i64 }, align 16 + %a1123 = alloca %S.ast.Type, align 16 %a1128 = alloca { ptr, i64, i64 }, align 16 %a1129 = alloca { ptr, i64, i64 }, align 16 - %a1131 = alloca { ptr, i64, i64 }, align 16 + %a1130 = alloca { ptr, i64, i64 }, align 16 %a1132 = alloca { ptr, i64, i64 }, align 16 %a1133 = alloca { ptr, i64, i64 }, align 16 + %a1134 = alloca { ptr, i64, i64 }, align 16 + %a1135 = 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 - %a1170 = alloca %S.gen.Val, align 16 - %a1176 = alloca { ptr, i64, i64 }, align 16 + %a1159 = alloca %S.gen.Val, align 16 + %a1162 = alloca { ptr, i64, i64 }, align 16 + %a1165 = alloca { ptr, i64, i64 }, align 16 + %a1166 = alloca { ptr, i64, i64 }, align 16 + %a1167 = alloca { ptr, i64, i64 }, align 16 + %a1169 = alloca { ptr, i64, i64 }, align 16 + %a1170 = alloca { ptr, i64, i64 }, align 16 + %a1171 = alloca { ptr, i64, i64 }, align 16 + %a1172 = alloca { ptr, i64, i64 }, align 16 %a1177 = alloca { ptr, i64, i64 }, align 16 %a1178 = alloca { ptr, i64, i64 }, align 16 + %a1179 = 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 + %a1184 = alloca { ptr, i64, i64 }, align 16 %a1185 = alloca { ptr, i64, i64 }, align 16 + %a1186 = alloca { ptr, i64, i64 }, align 16 + %a1188 = alloca { ptr, i64, i64 }, align 16 + %a1191 = alloca { ptr, i64, i64 }, align 16 + %a1192 = alloca { ptr, i64, i64 }, align 16 + %a1193 = alloca { ptr, i64, i64 }, align 16 + %a1195 = 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 - %a1257 = alloca i64, align 16 + %a1198 = alloca { ptr, i64, i64 }, align 16 + %a1201 = alloca { ptr, i64, i64 }, align 16 + %a1202 = alloca { ptr, i64, i64 }, align 16 + %a1206 = alloca %S.ast.Type, align 16 + %a1210 = alloca { ptr, i64, i64 }, align 16 + %a1211 = alloca { ptr, i64, i64 }, align 16 + %a1217 = alloca { ptr, i64, i64 }, align 16 + %a1218 = alloca { ptr, i64, i64 }, align 16 + %a1243 = alloca %S.gen.Val, align 16 + %a1244 = alloca %S.ast.Type, align 16 + %a1245 = alloca %S.gen.Val, align 16 + %a1249 = alloca { ptr, i64, i64 }, align 16 + %a1250 = alloca { ptr, i64, i64 }, align 16 + %a1251 = alloca { ptr, i64, i64 }, align 16 + %a1253 = alloca { ptr, i64, i64 }, align 16 + %a1254 = alloca { ptr, i64, i64 }, align 16 + %a1255 = alloca { ptr, i64, i64 }, align 16 + %a1256 = alloca { ptr, i64, i64 }, align 16 + %a1259 = alloca { ptr, i64, i64 }, align 16 + %a1260 = alloca { ptr, i64, i64 }, align 16 + %a1263 = alloca { ptr, i64, i64 }, align 16 + %a1266 = alloca { ptr, i64, i64 }, align 16 + %a1267 = alloca { ptr, i64, i64 }, align 16 %a1268 = alloca { ptr, i64, i64 }, align 16 - %a1269 = alloca { ptr, i64, i64 }, align 16 %a1270 = alloca { ptr, i64, i64 }, align 16 + %a1271 = 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 + %a1275 = alloca { ptr, i64, i64 }, align 16 + %a1279 = alloca { ptr, i64, i64 }, align 16 + %a1280 = alloca { ptr, i64, i64 }, align 16 + %a1285 = alloca %S.gen.Val, align 16 + %a1303 = alloca %S.gen.Val, align 16 + %a1306 = alloca { ptr, i64, i64 }, align 16 + %a1309 = alloca { ptr, i64, i64 }, align 16 + %a1310 = alloca { ptr, i64, i64 }, align 16 + %a1311 = alloca { ptr, i64, i64 }, align 16 %a1313 = alloca { ptr, i64, i64 }, align 16 %a1314 = alloca { ptr, i64, i64 }, align 16 + %a1315 = 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 + %a1324 = 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 + %a1328 = 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 - %a1444 = alloca { ptr, i64, i64 }, align 16 - %a1448 = alloca { ptr, i64, i64 }, align 16 + %a1330 = alloca { ptr, i64, i64 }, align 16 + %a1332 = alloca { ptr, i64, i64 }, align 16 + %a1343 = alloca { ptr, i64, i64 }, align 16 + %a1344 = alloca { ptr, i64, i64 }, align 16 + %a1359 = alloca %S.gen.Val, align 16 + %a1365 = alloca { ptr, i64, i64 }, align 16 + %a1366 = alloca { ptr, i64, i64 }, align 16 + %a1367 = alloca { ptr, i64, i64 }, align 16 + %a1368 = alloca { ptr, i64, i64 }, align 16 + %a1370 = alloca { ptr, i64, i64 }, align 16 + %a1371 = alloca { ptr, i64, i64 }, align 16 + %a1372 = alloca { ptr, i64, i64 }, align 16 + %a1373 = alloca { ptr, i64, i64 }, align 16 + %a1376 = alloca { ptr, i64, i64 }, align 16 + %a1377 = alloca { ptr, i64, i64 }, align 16 + %a1387 = alloca { ptr, i64, i64 }, align 16 + %a1388 = alloca { ptr, i64, i64 }, align 16 + %a1390 = alloca { ptr, i64, i64 }, align 16 + %a1391 = alloca { ptr, i64, i64 }, align 16 + %a1399 = alloca { ptr, i64, i64 }, align 16 + %a1400 = alloca { ptr, i64, i64 }, align 16 + %a1415 = alloca %S.gen.Val, align 16 + %a1419 = alloca { ptr, i64, i64 }, align 16 + %a1420 = 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 + %a1458 = alloca { ptr, i64, i64 }, align 16 + %a1459 = alloca { ptr, i64, i64 }, align 16 + %a1461 = alloca { ptr, i64, i64 }, align 16 + %a1462 = alloca { ptr, i64, i64 }, align 16 + %a1463 = alloca { ptr, i64, i64 }, align 16 + %a1464 = alloca { ptr, i64, i64 }, align 16 + %a1467 = alloca { ptr, i64, i64 }, align 16 + %a1470 = alloca { ptr, i64, i64 }, align 16 + %a1491 = alloca { ptr, i64, i64 }, align 16 + %a1492 = alloca { ptr, i64, i64 }, align 16 + %a1493 = alloca { ptr, i64, i64 }, align 16 + %a1495 = alloca { ptr, i64, i64 }, align 16 + %a1496 = alloca { ptr, i64, i64 }, align 16 + %a1497 = alloca { ptr, i64, i64 }, align 16 + %a1498 = alloca { ptr, i64, i64 }, align 16 + %a1500 = alloca { ptr, i64, i64 }, align 16 + %a1510 = alloca i64, align 16 + %a1521 = alloca { ptr, i64, i64 }, align 16 + %a1522 = alloca { ptr, i64, i64 }, align 16 + %a1523 = alloca { ptr, i64, i64 }, align 16 + %a1525 = alloca { ptr, i64, i64 }, align 16 + %a1526 = alloca { ptr, i64, i64 }, align 16 + %a1527 = alloca { ptr, i64, i64 }, align 16 + %a1528 = alloca { ptr, i64, i64 }, align 16 + %a1530 = alloca { ptr, i64, i64 }, align 16 + %a1543 = alloca i64, align 16 + %a1567 = alloca { ptr, i64, i64 }, align 16 + %a1568 = alloca { ptr, i64, i64 }, align 16 + %a1569 = alloca { ptr, i64, i64 }, align 16 + %a1571 = alloca { ptr, i64, i64 }, align 16 + %a1572 = alloca { ptr, i64, i64 }, align 16 + %a1573 = alloca { ptr, i64, i64 }, align 16 + %a1574 = alloca { ptr, i64, i64 }, align 16 + %a1577 = alloca { ptr, i64, i64 }, align 16 + %a1578 = alloca { ptr, i64, i64 }, align 16 + %a1579 = alloca { ptr, i64, i64 }, align 16 + %a1580 = alloca { ptr, i64, i64 }, align 16 + %a1582 = alloca { ptr, i64, i64 }, align 16 + %a1583 = alloca { ptr, i64, i64 }, align 16 + %a1584 = alloca { ptr, i64, i64 }, align 16 + %a1585 = alloca { ptr, i64, i64 }, align 16 + %a1587 = alloca { ptr, i64, i64 }, align 16 + %a1588 = alloca { ptr, i64, i64 }, align 16 + %a1591 = alloca i64, align 16 + %a1599 = alloca %S.ast.Type, align 16 + %a1620 = alloca %S.ast.Type, align 16 + %a1641 = alloca i64, align 16 + %a1654 = alloca %S.gen.StructDef, align 16 + %a1655 = alloca %S.gen.StructDef, align 16 + %a1657 = alloca %S.gen.StructDef, align 16 + %a1685 = alloca %S.ast.Node, align 16 + %a1686 = alloca %S.ast.Node, align 16 + %a1688 = alloca %S.ast.Node, align 16 + %a1697 = alloca { ptr, i64, i64 }, align 16 + %a1698 = alloca { ptr, i64, i64 }, align 16 + %a1699 = alloca { ptr, i64, i64 }, align 16 + %a1701 = alloca { ptr, i64, i64 }, align 16 + %a1702 = alloca { ptr, i64, i64 }, align 16 + %a1703 = alloca { ptr, i64, i64 }, align 16 + %a1704 = alloca { ptr, i64, i64 }, align 16 + %a1708 = alloca { ptr, i64, i64 }, align 16 + %a1709 = alloca { ptr, i64, i64 }, align 16 + %a1711 = alloca { ptr, i64, i64 }, align 16 + %a1712 = alloca { ptr, i64, i64 }, align 16 + %a1713 = alloca { ptr, i64, i64 }, align 16 + %a1714 = alloca { ptr, i64, i64 }, align 16 + %a1715 = alloca { ptr, i64, i64 }, align 16 + %a1717 = alloca { ptr, i64, i64 }, align 16 + %a1718 = alloca { ptr, i64, i64 }, align 16 + %a1719 = alloca { ptr, i64, i64 }, align 16 + %a1720 = alloca { ptr, i64, i64 }, align 16 + %a1737 = alloca { ptr, i64, i64 }, align 16 + %a1753 = alloca i64, align 16 + %a1765 = alloca { ptr, i64, i64 }, align 16 + %a1775 = alloca { ptr, i64, i64 }, align 16 + %a1778 = alloca { ptr, i64, i64 }, align 16 + %a1779 = alloca { ptr, i64, i64 }, align 16 + %a1806 = alloca { ptr, i64, i64 }, align 16 + %a1807 = alloca { ptr, i64, i64 }, align 16 + %a1808 = alloca { ptr, i64, i64 }, align 16 + %a1810 = alloca { ptr, i64, i64 }, align 16 + %a1811 = alloca { ptr, i64, i64 }, align 16 + %a1812 = alloca { ptr, i64, i64 }, align 16 + %a1813 = alloca { ptr, i64, i64 }, align 16 + %a1815 = alloca { ptr, i64, i64 }, align 16 + %a1819 = alloca { ptr, i64, i64 }, align 16 + %a1820 = alloca { ptr, i64, i64 }, align 16 + %a1821 = alloca { ptr, i64, i64 }, align 16 + %a1823 = alloca { ptr, i64, i64 }, align 16 + %a1824 = alloca { ptr, i64, i64 }, align 16 + %a1825 = alloca { ptr, i64, i64 }, align 16 + %a1826 = alloca { ptr, i64, i64 }, align 16 + %a1830 = alloca { ptr, i64, i64 }, align 16 + %a1831 = alloca { ptr, i64, i64 }, align 16 + %a1832 = alloca { ptr, i64, i64 }, align 16 + %a1833 = alloca { ptr, i64, i64 }, align 16 + %a1834 = alloca { ptr, i64, i64 }, align 16 + %a1836 = 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 @@ -66521,2184 +78932,2763 @@ entry: store { ptr, i64, i64 } %t7, ptr %a8 %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) + br i1 %t10, label %panic7704, label %ok7705 +panic7704: + call void @finch_panic(ptr @.str.4980, i64 4608, ptr @.str.4981) unreachable -ok7321: - %t11 = getelementptr inbounds %S.gen.Gen, ptr %t9, i32 0, i32 26 +ok7705: + %t11 = getelementptr inbounds %S.gen.Gen, ptr %t9, i32 0, i32 27 %t12 = load i1, ptr %t11 - br label %logic.from7322 -logic.from7322: - br i1 %t12, label %logic.rhs7323, label %logic.end7324 -logic.rhs7323: + br label %logic.from7706 +logic.from7706: + br i1 %t12, label %logic.rhs7707, label %logic.end7708 +logic.rhs7707: %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: + br label %logic.rend7709 +logic.rend7709: + br label %logic.end7708 +logic.end7708: + %t15 = phi i1 [ false, %logic.from7706 ], [ %t14, %logic.rend7709 ] + br i1 %t15, label %then7710, label %endif7712 +then7710: %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 } %t16, ptr %a19 + call void @finch.drop.arr_S_docs_Doc(ptr %a19) + store %S.docs.Doc %t18, ptr %a20 + %t21 = getelementptr inbounds %S.docs.Doc, ptr %a20, i32 0, i32 0 + %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t21, i32 0, i32 1 + %t23 = load i64, ptr %t22 + %t24 = icmp sgt i64 %t23, 0 + br i1 %t24, label %then7716, label %endif7718 +then7716: + %t25 = load ptr, ptr %a1 + %t26 = load %S.ast.Node, ptr %a2 + %t27 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 + %t28 = load i64, ptr %t27 + %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 + %t30 = load i64, ptr %t29 + %t31 = load %S.docs.Doc, ptr %a20 + %t32 = call { ptr, i64, i64 } @finch.docs.hover(%S.docs.Doc %t31) + call void @finch.gen.noteRef(ptr %t25, %S.ast.Node %t26, i64 %t28, i64 %t30, { ptr, i64, i64 } %t32, { ptr, i64, i64 } { ptr @.str.4982, i64 0, i64 0 }, i64 0, i64 0) 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) + call void @finch_str_drop(ptr %a33) + br label %endif7718 +endif7718: + call void @finch.drop.S_docs_Doc(ptr %a20) + br label %endif7712 +endif7712: + %t34 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t34, ptr %a35 + store { ptr, i64, i64 } { ptr @.str.4983, i64 5, i64 0 }, ptr %a36 + %t37 = call i32 @finch_str_eq(ptr %a35, ptr %a36) + %t38 = icmp ne i32 %t37, 0 + br i1 %t38, label %then7719, label %endif7721 +then7719: + %t39 = load ptr, ptr %a1 + %t40 = load %S.ast.Node, ptr %a2 + call void @finch.gen.fail(ptr %t39, %S.ast.Node %t40, { ptr, i64, i64 } { ptr @.str.4984, i64 86, i64 0 }) + br label %endif7721 +endif7721: + %t41 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t41, ptr %a42 + store { ptr, i64, i64 } { ptr @.str.4985, i64 5, i64 0 }, ptr %a43 + %t44 = call i32 @finch_str_eq(ptr %a42, ptr %a43) + %t45 = icmp ne i32 %t44, 0 + br i1 %t45, label %then7722, label %endif7724 +then7722: + %t46 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %t46, i32 0, i32 1 + %t48 = load i64, ptr %t47 + store i64 0, ptr %a49 + br label %for.cond7725 +for.cond7725: + %t50 = load i64, ptr %a49 + %t51 = icmp slt i64 %t50, %t48 + br i1 %t51, label %for.body7726, label %for.end7728 +for.body7726: + %t52 = load ptr, ptr %a1 + %t53 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t54 = load i64, ptr %a49 + %t55 = load { ptr, i64, i64 }, ptr %t53 + %t56 = extractvalue { ptr, i64, i64 } %t55, 1 + %t57 = icmp uge i64 %t54, %t56 + br i1 %t57, label %range7729, label %inrange7730 +range7729: + call void @finch_panic_index(ptr @.str.4986, i64 4619, i64 %t54, i64 %t56) unreachable -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) +inrange7730: + %t58 = extractvalue { ptr, i64, i64 } %t55, 0 + %t59 = getelementptr inbounds %S.ast.Node, ptr %t58, i64 %t54 + %t60 = load %S.ast.Node, ptr %t59 + %t61 = call %S.gen.Val @finch.gen.expr(ptr %t52, %S.ast.Node %t60) + store %S.gen.Val %t61, ptr %a62 + %t63 = getelementptr inbounds %S.gen.Val, ptr %a62, i32 0, i32 1 + %t64 = getelementptr inbounds %S.ast.Type, ptr %t63, i32 0, i32 0 + %t65 = load { ptr, i64, i64 }, ptr %t64 + store { ptr, i64, i64 } %t65, ptr %a66 + store { ptr, i64, i64 } { ptr @.str.4987, i64 4, i64 0 }, ptr %a67 + %t68 = call i32 @finch_str_eq(ptr %a66, ptr %a67) + %t69 = icmp ne i32 %t68, 0 + br i1 %t69, label %then7731, label %endif7733 +then7731: + %t70 = load ptr, ptr %a1 + %t71 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t72 = load i64, ptr %a49 + %t73 = load { ptr, i64, i64 }, ptr %t71 + %t74 = extractvalue { ptr, i64, i64 } %t73, 1 + %t75 = icmp uge i64 %t72, %t74 + br i1 %t75, label %range7734, label %inrange7735 +range7734: + call void @finch_panic_index(ptr @.str.4988, i64 4621, i64 %t72, i64 %t74) unreachable -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: +inrange7735: + %t76 = extractvalue { ptr, i64, i64 } %t73, 0 + %t77 = getelementptr inbounds %S.ast.Node, ptr %t76, i64 %t72 + %t78 = load %S.ast.Node, ptr %t77 + call void @finch.gen.fail(ptr %t70, %S.ast.Node %t78, { ptr, i64, i64 } { ptr @.str.4989, i64 53, i64 0 }) + br label %endif7733 +endif7733: + %t79 = load i64, ptr %a49 + %t80 = icmp sgt i64 %t79, 0 + br i1 %t80, label %then7736, label %endif7738 +then7736: + %t81 = load ptr, ptr %a1 + call void @finch.gen.printf(ptr %t81, { ptr, i64, i64 } { ptr @.str.4990, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.4991, i64 0, i64 0 }) + br label %endif7738 +endif7738: + %t82 = load ptr, ptr %a1 + %t83 = getelementptr inbounds %S.gen.Val, ptr %a62, i32 0, i32 0 + %t84 = load { ptr, i64, i64 }, ptr %t83 + %t85 = getelementptr inbounds %S.gen.Val, ptr %a62, i32 0, i32 1 + %t86 = load %S.ast.Type, ptr %t85 + call void @finch.gen.emitPrint(ptr %t82, { ptr, i64, i64 } %t84, %S.ast.Type %t86, i1 false) %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) + %t88 = load %S.gen.Val, ptr %a62 + call void @finch.gen.release(ptr %t87, %S.gen.Val %t88) + call void @finch.drop.S_gen_Val(ptr %a62) + br label %for.step7727 +for.step7727: + %t89 = load i64, ptr %a49 + %t90 = add i64 %t89, 1 + store i64 %t90, ptr %a49 + br label %for.cond7725 +for.end7728: + %t91 = load ptr, ptr %a1 + call void @finch.gen.printf(ptr %t91, { ptr, i64, i64 } { ptr @.str.4992, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.4993, i64 0, i64 0 }) + %t92 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4994, i64 4, i64 0 }) + %t93 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t92, 1 + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t93 +endif7724: + %t94 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t94, ptr %a95 + store { ptr, i64, i64 } { ptr @.str.4995, i64 4, i64 0 }, ptr %a96 + %t97 = call i32 @finch_str_eq(ptr %a95, ptr %a96) + %t98 = icmp ne i32 %t97, 0 + br i1 %t98, label %then7739, label %endif7741 +then7739: + %t99 = load ptr, ptr %a1 + %t100 = load %S.ast.Node, ptr %a2 + %t101 = load { ptr, i64, i64 }, ptr %a8 + call void @finch.gen.checkArgs(ptr %t99, %S.ast.Node %t100, i64 0, i64 1, { ptr, i64, i64 } %t101) + %t102 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t103 = load { ptr, i64, i64 }, ptr %t102 + %t104 = extractvalue { ptr, i64, i64 } %t103, 1 + %t105 = icmp uge i64 0, %t104 + br i1 %t105, label %range7742, label %inrange7743 +range7742: + call void @finch_panic_index(ptr @.str.4996, i64 4634, i64 0, i64 %t104) unreachable -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 - %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) +inrange7743: + %t106 = extractvalue { ptr, i64, i64 } %t103, 0 + %t107 = getelementptr inbounds %S.ast.Node, ptr %t106, i64 0 + %t108 = load %S.ast.Node, ptr %t107 + store %S.ast.Node %t108, ptr %a109 + call void @finch.copy.S_ast_Node(ptr %a110, ptr %a109) + %t111 = load %S.ast.Node, ptr %a110 + store %S.ast.Node %t111, ptr %a112 + %t113 = getelementptr inbounds %S.ast.Node, ptr %a112, i32 0, i32 0 + %t114 = load { ptr, i64, i64 }, ptr %t113 + store { ptr, i64, i64 } %t114, ptr %a115 + store { ptr, i64, i64 } { ptr @.str.4997, i64 3, i64 0 }, ptr %a116 + %t117 = call i32 @finch_str_eq(ptr %a115, ptr %a116) + %t118 = icmp ne i32 %t117, 0 + br label %logic.from7744 +logic.from7744: + br i1 %t118, label %logic.rhs7745, label %logic.end7746 +logic.rhs7745: + %t119 = load ptr, ptr %a1 + %t120 = getelementptr inbounds %S.ast.Node, ptr %a112, i32 0, i32 1 + %t121 = load { ptr, i64, i64 }, ptr %t120 + %t122 = call i64 @finch.gen.lookup(ptr %t119, { ptr, i64, i64 } %t121) + %t123 = icmp slt i64 %t122, 0 + br label %logic.rend7747 +logic.rend7747: + br label %logic.end7746 +logic.end7746: + %t124 = phi i1 [ false, %logic.from7744 ], [ %t123, %logic.rend7747 ] + br i1 %t124, label %then7748, label %endif7750 +then7748: + %t125 = load ptr, ptr %a1 + %t126 = load ptr, ptr %a1 + %t127 = icmp eq ptr %t126, null + br i1 %t127, label %panic7751, label %ok7752 +panic7751: + call void @finch_panic(ptr @.str.4998, i64 4636, ptr @.str.4999) unreachable -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 - 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) +ok7752: + %t128 = getelementptr inbounds %S.gen.Gen, ptr %t126, i32 0, i32 14 + %t129 = load { ptr, i64, i64 }, ptr %t128 + %t130 = getelementptr inbounds %S.ast.Node, ptr %a112, i32 0, i32 1 + %t131 = load { ptr, i64, i64 }, ptr %t130 + %t132 = call i64 @finch.gen.findFn(ptr %t125, { ptr, i64, i64 } %t129, { ptr, i64, i64 } %t131) + store i64 %t132, ptr %a133 + %t134 = load i64, ptr %a133 + %t135 = icmp sge i64 %t134, 0 + br i1 %t135, label %then7753, label %endif7755 +then7753: + %t136 = load ptr, ptr %a1 + %t137 = load i64, ptr %a133 + %t138 = load %S.ast.Node, ptr %a112 + %t139 = call { ptr, i64, i64 } @finch.gen.cThunk(ptr %t136, i64 %t137, %S.ast.Node %t138) + %t140 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t139, 0 + %t141 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5000, i64 3, i64 0 }) + %t142 = insertvalue %S.gen.Val %t140, %S.ast.Type %t141, 1 + call void @finch.drop.S_ast_Node(ptr %a112) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t142 +endif7755: + br label %endif7750 +endif7750: + %t143 = getelementptr inbounds %S.ast.Node, ptr %a112, i32 0, i32 0 + %t144 = load { ptr, i64, i64 }, ptr %t143 + store { ptr, i64, i64 } %t144, ptr %a145 + store { ptr, i64, i64 } { ptr @.str.5001, i64 3, i64 0 }, ptr %a146 + %t147 = call i32 @finch_str_eq(ptr %a145, ptr %a146) + %t148 = icmp eq i32 %t147, 0 + br label %logic.from7756 +logic.from7756: + br i1 %t148, label %logic.rhs7757, label %logic.end7758 +logic.rhs7757: + %t149 = getelementptr inbounds %S.ast.Node, ptr %a112, i32 0, i32 0 + %t150 = load { ptr, i64, i64 }, ptr %t149 + store { ptr, i64, i64 } %t150, ptr %a151 + store { ptr, i64, i64 } { ptr @.str.5002, i64 6, i64 0 }, ptr %a152 + %t153 = call i32 @finch_str_eq(ptr %a151, ptr %a152) + %t154 = icmp eq i32 %t153, 0 + br label %logic.rend7759 +logic.rend7759: + br label %logic.end7758 +logic.end7758: + %t155 = phi i1 [ false, %logic.from7756 ], [ %t154, %logic.rend7759 ] + br label %logic.from7760 +logic.from7760: + br i1 %t155, label %logic.rhs7761, label %logic.end7762 +logic.rhs7761: + %t156 = getelementptr inbounds %S.ast.Node, ptr %a112, i32 0, i32 0 + %t157 = load { ptr, i64, i64 }, ptr %t156 + store { ptr, i64, i64 } %t157, ptr %a158 + store { ptr, i64, i64 } { ptr @.str.5003, i64 5, i64 0 }, ptr %a159 + %t160 = call i32 @finch_str_eq(ptr %a158, ptr %a159) + %t161 = icmp eq i32 %t160, 0 + br label %logic.rend7763 +logic.rend7763: + br label %logic.end7762 +logic.end7762: + %t162 = phi i1 [ false, %logic.from7760 ], [ %t161, %logic.rend7763 ] + br i1 %t162, label %then7764, label %endif7766 +then7764: + %t163 = load ptr, ptr %a1 + %t164 = load %S.ast.Node, ptr %a112 + call void @finch.gen.fail(ptr %t163, %S.ast.Node %t164, { ptr, i64, i64 } { ptr @.str.5004, i64 63, i64 0 }) + br label %endif7766 +endif7766: + %t165 = load ptr, ptr %a1 + %t166 = load %S.ast.Node, ptr %a112 + %t167 = call %S.gen.Place @finch.gen.place(ptr %t165, %S.ast.Node %t166, i1 true) + store %S.gen.Place %t167, ptr %a168 + %t169 = getelementptr inbounds %S.gen.Place, ptr %a168, i32 0, i32 0 + %t170 = load { ptr, i64, i64 }, ptr %t169 + store { ptr, i64, i64 } %t170, ptr %a171 + call void @finch_str_copy(ptr %a172, ptr %a171) + %t173 = load { ptr, i64, i64 }, ptr %a172 + %t174 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t173, 0 + %t175 = getelementptr inbounds %S.gen.Place, ptr %a168, i32 0, i32 1 + %t176 = load %S.ast.Type, ptr %t175 + %t177 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t176) + %t178 = insertvalue %S.gen.Val %t174, %S.ast.Type %t177, 1 + call void @finch.drop.S_gen_Place(ptr %a168) + call void @finch.drop.S_ast_Node(ptr %a112) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t178 +endif7741: + %t179 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t179, ptr %a180 + store { ptr, i64, i64 } { ptr @.str.5005, i64 3, i64 0 }, ptr %a181 + %t182 = call i32 @finch_str_eq(ptr %a180, ptr %a181) + %t183 = icmp ne i32 %t182, 0 + br i1 %t183, label %then7767, label %endif7769 +then7767: + %t184 = load ptr, ptr %a1 + %t185 = load %S.ast.Node, ptr %a2 + %t186 = load { ptr, i64, i64 }, ptr %a8 + call void @finch.gen.checkArgs(ptr %t184, %S.ast.Node %t185, i64 0, i64 1, { ptr, i64, i64 } %t186) + %t187 = load ptr, ptr %a1 + %t188 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t189 = load { ptr, i64, i64 }, ptr %t188 + %t190 = extractvalue { ptr, i64, i64 } %t189, 1 + %t191 = icmp uge i64 0, %t190 + br i1 %t191, label %range7770, label %inrange7771 +range7770: + call void @finch_panic_index(ptr @.str.5006, i64 4649, i64 0, i64 %t190) 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 +inrange7771: + %t192 = extractvalue { ptr, i64, i64 } %t189, 0 + %t193 = getelementptr inbounds %S.ast.Node, ptr %t192, i64 0 + %t194 = load %S.ast.Node, ptr %t193 + %t195 = call %S.gen.Val @finch.gen.expr(ptr %t187, %S.ast.Node %t194) + store %S.gen.Val %t195, ptr %a196 + %t197 = load ptr, ptr %a1 + %t198 = call { ptr, i64, i64 } @finch.gen.strOut(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 - 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 + %t200 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 + %t201 = getelementptr inbounds %S.ast.Type, ptr %t200, i32 0, i32 0 + %t202 = load { ptr, i64, i64 }, ptr %t201 + store { ptr, i64, i64 } %t202, ptr %a203 + call void @finch_str_copy(ptr %a204, ptr %a203) + %t205 = load { ptr, i64, i64 }, ptr %a204 + store { ptr, i64, i64 } %t205, ptr %a206 + store i1 false, ptr %a207 + %t208 = load { ptr, i64, i64 }, ptr %a206 + store { ptr, i64, i64 } %t208, ptr %a209 + store { ptr, i64, i64 } { ptr @.str.5007, i64 3, i64 0 }, ptr %a210 + %t211 = call i32 @finch_str_eq(ptr %a209, ptr %a210) + %t212 = icmp ne i32 %t211, 0 + br i1 %t212, label %then7772, label %else7773 +then7772: + %t213 = load ptr, ptr %a1 + %t214 = load %S.gen.Val, ptr %a196 + %t215 = call { ptr, i64, i64 } @finch.gen.own(ptr %t213, %S.gen.Val %t214) + %t216 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t215, 0 + %t217 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 + %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 + %t222 = insertvalue %S.gen.Val %t216, %S.ast.Type %t221, 1 + %t223 = insertvalue %S.gen.Val %t222, i1 true, 2 + call void @finch_str_drop(ptr %a206) + call void @finch_str_drop(ptr %a199) + call void @finch.drop.S_gen_Val(ptr %a196) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t223 +else7773: + %t224 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 + %t225 = load %S.ast.Type, ptr %t224 + %t226 = call i1 @finch.gen.isSigned(%S.ast.Type %t225) + br i1 %t226, label %then7775, label %else7776 +then7775: + %t227 = load ptr, ptr %a1 + %t228 = load { ptr, i64, i64 }, ptr %a199 + store { ptr, i64, i64 } { ptr @.str.5008, i64 34, i64 0 }, ptr %a230 + store { ptr, i64, i64 } %t228, ptr %a231 + call void @finch_str_concat(ptr %a229, ptr %a230, ptr %a231) + %t232 = load { ptr, i64, i64 }, ptr %a229 + store { ptr, i64, i64 } %t232, ptr %a234 + store { ptr, i64, i64 } { ptr @.str.5009, i64 6, i64 0 }, ptr %a235 + call void @finch_str_concat(ptr %a233, ptr %a234, ptr %a235) + store { ptr, i64, i64 } %t232, ptr %a236 + call void @finch_str_drop(ptr %a236) + %t237 = load { ptr, i64, i64 }, ptr %a233 + %t238 = load ptr, ptr %a1 + %t239 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 0 + %t240 = load { ptr, i64, i64 }, ptr %t239 + %t241 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 + %t242 = load %S.ast.Type, ptr %t241 + %t243 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5010, i64 3, i64 0 }) + %t244 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t238, { ptr, i64, i64 } %t240, %S.ast.Type %t242, %S.ast.Type %t243) + store %S.ast.Type %t243, ptr %a245 + call void @finch.drop.S_ast_Type(ptr %a245) + store { ptr, i64, i64 } %t237, ptr %a247 + store { ptr, i64, i64 } %t244, 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 - 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) + store { ptr, i64, i64 } %t237, ptr %a249 + call void @finch_str_drop(ptr %a249) + store { ptr, i64, i64 } %t244, ptr %a250 + call void @finch_str_drop(ptr %a250) + %t251 = load { ptr, i64, i64 }, ptr %a246 + store { ptr, i64, i64 } %t251, ptr %a253 + store { ptr, i64, i64 } { ptr @.str.5011, i64 1, i64 0 }, ptr %a254 + call void @finch_str_concat(ptr %a252, ptr %a253, ptr %a254) + store { ptr, i64, i64 } %t251, ptr %a255 + call void @finch_str_drop(ptr %a255) + %t256 = load { ptr, i64, i64 }, ptr %a252 + call void @finch.gen.emit(ptr %t227, { ptr, i64, i64 } %t256) + store { ptr, i64, i64 } %t256, ptr %a257 + call void @finch_str_drop(ptr %a257) + br label %endif7777 +else7776: + %t258 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 + %t259 = load %S.ast.Type, ptr %t258 + %t260 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t259) + br i1 %t260, label %then7778, label %else7779 +then7778: + %t261 = load ptr, ptr %a1 + %t262 = load { ptr, i64, i64 }, ptr %a199 + store { ptr, i64, i64 } { ptr @.str.5012, i64 35, 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.5013, i64 6, i64 0 }, ptr %a269 + call void @finch_str_concat(ptr %a267, ptr %a268, ptr %a269) + store { ptr, i64, i64 } %t266, ptr %a270 + call void @finch_str_drop(ptr %a270) + %t271 = load { ptr, i64, i64 }, ptr %a267 + %t272 = load ptr, ptr %a1 + %t273 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 0 + %t274 = load { ptr, i64, i64 }, ptr %t273 + %t275 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 + %t276 = load %S.ast.Type, ptr %t275 + %t277 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5014, i64 3, i64 0 }) + %t278 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t272, { ptr, i64, i64 } %t274, %S.ast.Type %t276, %S.ast.Type %t277) + store %S.ast.Type %t277, ptr %a279 + call void @finch.drop.S_ast_Type(ptr %a279) + store { ptr, i64, i64 } %t271, ptr %a281 + store { ptr, i64, i64 } %t278, ptr %a282 + call void @finch_str_concat(ptr %a280, ptr %a281, ptr %a282) + store { ptr, i64, i64 } %t271, ptr %a283 + call void @finch_str_drop(ptr %a283) + store { ptr, i64, i64 } %t278, ptr %a284 + call void @finch_str_drop(ptr %a284) + %t285 = load { ptr, i64, i64 }, ptr %a280 + store { ptr, i64, i64 } %t285, ptr %a287 + store { ptr, i64, i64 } { ptr @.str.5015, i64 1, i64 0 }, ptr %a288 + call void @finch_str_concat(ptr %a286, ptr %a287, ptr %a288) + store { ptr, i64, i64 } %t285, ptr %a289 + call void @finch_str_drop(ptr %a289) + %t290 = load { ptr, i64, i64 }, ptr %a286 + call void @finch.gen.emit(ptr %t261, { ptr, i64, i64 } %t290) + store { ptr, i64, i64 } %t290, ptr %a291 + call void @finch_str_drop(ptr %a291) + br label %endif7780 +else7779: + %t292 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 + %t293 = load %S.ast.Type, ptr %t292 + %t294 = call i1 @finch.gen.isFloat(%S.ast.Type %t293) + br i1 %t294, label %then7781, label %else7782 +then7781: + %t295 = load ptr, ptr %a1 + %t296 = load { ptr, i64, i64 }, ptr %a199 + store { ptr, i64, i64 } { ptr @.str.5016, i64 36, i64 0 }, ptr %a298 + store { ptr, i64, i64 } %t296, ptr %a299 + 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.5017, i64 9, i64 0 }, ptr %a303 + call void @finch_str_concat(ptr %a301, ptr %a302, ptr %a303) + store { ptr, i64, i64 } %t300, ptr %a304 + call void @finch_str_drop(ptr %a304) + %t305 = load { ptr, i64, i64 }, ptr %a301 + %t306 = load ptr, ptr %a1 + %t307 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 0 + %t308 = load { ptr, i64, i64 }, ptr %t307 + %t309 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 + %t310 = load %S.ast.Type, ptr %t309 + %t311 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5018, i64 5, i64 0 }) + %t312 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t306, { ptr, i64, i64 } %t308, %S.ast.Type %t310, %S.ast.Type %t311) + store %S.ast.Type %t311, ptr %a313 + call void @finch.drop.S_ast_Type(ptr %a313) + store { ptr, i64, i64 } %t305, ptr %a315 + store { ptr, i64, i64 } %t312, ptr %a316 + call void @finch_str_concat(ptr %a314, ptr %a315, ptr %a316) + store { ptr, i64, i64 } %t305, ptr %a317 + call void @finch_str_drop(ptr %a317) + store { ptr, i64, i64 } %t312, ptr %a318 + call void @finch_str_drop(ptr %a318) + %t319 = load { ptr, i64, i64 }, ptr %a314 + store { ptr, i64, i64 } %t319, ptr %a321 + store { ptr, i64, i64 } { ptr @.str.5019, i64 1, i64 0 }, ptr %a322 + call void @finch_str_concat(ptr %a320, ptr %a321, ptr %a322) + store { ptr, i64, i64 } %t319, ptr %a323 + call void @finch_str_drop(ptr %a323) + %t324 = load { ptr, i64, i64 }, ptr %a320 + call void @finch.gen.emit(ptr %t295, { ptr, i64, i64 } %t324) + store { ptr, i64, i64 } %t324, ptr %a325 + call void @finch_str_drop(ptr %a325) + br label %endif7783 +else7782: + %t326 = load { ptr, i64, i64 }, ptr %a206 + store { ptr, i64, i64 } %t326, ptr %a327 + store { ptr, i64, i64 } { ptr @.str.5020, i64 4, i64 0 }, ptr %a328 + %t329 = call i32 @finch_str_eq(ptr %a327, ptr %a328) + %t330 = icmp ne i32 %t329, 0 + br i1 %t330, label %then7784, label %else7785 +then7784: + %t331 = load ptr, ptr %a1 + %t332 = load { ptr, i64, i64 }, ptr %a199 + store { ptr, i64, i64 } { ptr @.str.5021, i64 35, i64 0 }, ptr %a334 + store { ptr, i64, i64 } %t332, 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 %a338 + store { ptr, i64, i64 } { ptr @.str.5022, i64 13, i64 0 }, ptr %a339 + call void @finch_str_concat(ptr %a337, ptr %a338, ptr %a339) + store { ptr, i64, i64 } %t336, ptr %a340 + call void @finch_str_drop(ptr %a340) + %t341 = load { ptr, i64, i64 }, ptr %a337 + %t342 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 0 + %t343 = load { ptr, i64, i64 }, ptr %t342 + store { ptr, i64, i64 } %t341, ptr %a345 + store { ptr, i64, i64 } %t343, ptr %a346 + call void @finch_str_concat(ptr %a344, ptr %a345, ptr %a346) + store { ptr, i64, i64 } %t341, ptr %a347 + call void @finch_str_drop(ptr %a347) + %t348 = load { ptr, i64, i64 }, ptr %a344 + store { ptr, i64, i64 } %t348, ptr %a350 + store { ptr, i64, i64 } { ptr @.str.5023, i64 1, i64 0 }, ptr %a351 + call void @finch_str_concat(ptr %a349, ptr %a350, ptr %a351) + store { ptr, i64, i64 } %t348, ptr %a352 + call void @finch_str_drop(ptr %a352) + %t353 = load { ptr, i64, i64 }, ptr %a349 + call void @finch.gen.emit(ptr %t331, { ptr, i64, i64 } %t353) + store { ptr, i64, i64 } %t353, ptr %a354 + call void @finch_str_drop(ptr %a354) + br label %endif7786 +else7785: + %t355 = load { ptr, i64, i64 }, ptr %a206 + store { ptr, i64, i64 } %t355, ptr %a356 + store { ptr, i64, i64 } { ptr @.str.5024, i64 4, i64 0 }, ptr %a357 + %t358 = call i32 @finch_str_eq(ptr %a356, ptr %a357) + %t359 = icmp ne i32 %t358, 0 + br i1 %t359, label %then7787, label %else7788 +then7787: + %t360 = load ptr, ptr %a1 + %t361 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 0 + %t362 = load { ptr, i64, i64 }, ptr %t361 + store { ptr, i64, i64 } { ptr @.str.5025, i64 8, i64 0 }, ptr %a364 + store { ptr, i64, i64 } %t362, 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 %a368 + store { ptr, i64, i64 } { ptr @.str.5026, i64 7, i64 0 }, ptr %a369 + call void @finch_str_concat(ptr %a367, ptr %a368, ptr %a369) + store { ptr, i64, i64 } %t366, ptr %a370 + call void @finch_str_drop(ptr %a370) + %t371 = load { ptr, i64, i64 }, ptr %a367 + %t372 = call { ptr, i64, i64 } @finch.gen.op(ptr %t360, { ptr, i64, i64 } %t371) + store { ptr, i64, i64 } %t371, ptr %a373 + call void @finch_str_drop(ptr %a373) + store { ptr, i64, i64 } %t372, ptr %a374 %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 + %t376 = load { ptr, i64, i64 }, ptr %a199 + store { ptr, i64, i64 } { ptr @.str.5027, i64 35, 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 + store { ptr, i64, i64 } { ptr @.str.5028, 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 } %t380, ptr %a384 + call void @finch_str_drop(ptr %a384) + %t385 = load { ptr, i64, i64 }, ptr %a381 + %t386 = load { ptr, i64, i64 }, ptr %a374 + store { ptr, i64, i64 } %t385, 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) + store { ptr, i64, i64 } %t385, ptr %a390 + call void @finch_str_drop(ptr %a390) + %t391 = load { ptr, i64, i64 }, ptr %a387 + store { ptr, i64, i64 } %t391, ptr %a393 + store { ptr, i64, i64 } { ptr @.str.5029, i64 1, i64 0 }, ptr %a394 + call void @finch_str_concat(ptr %a392, ptr %a393, ptr %a394) + store { ptr, i64, i64 } %t391, ptr %a395 + call void @finch_str_drop(ptr %a395) + %t396 = load { ptr, i64, i64 }, ptr %a392 + call void @finch.gen.emit(ptr %t375, { ptr, i64, i64 } %t396) + store { ptr, i64, i64 } %t396, ptr %a397 + call void @finch_str_drop(ptr %a397) + call void @finch_str_drop(ptr %a374) + br label %endif7789 +else7788: + %t398 = load { ptr, i64, i64 }, ptr %a206 + store { ptr, i64, i64 } %t398, ptr %a399 + store { ptr, i64, i64 } { ptr @.str.5030, i64 3, i64 0 }, ptr %a400 + %t401 = call i32 @finch_str_eq(ptr %a399, ptr %a400) + %t402 = icmp ne i32 %t401, 0 + br i1 %t402, label %then7790, label %else7791 +then7790: + %t403 = load ptr, ptr %a1 + %t404 = load { ptr, i64, i64 }, ptr %a199 + call void @finch.gen.store(ptr %t403, { ptr, i64, i64 } { ptr @.str.5031, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5032, i64 15, i64 0 }, { ptr, i64, i64 } %t404) + %t405 = load ptr, ptr %a1 + %t406 = load { ptr, i64, i64 }, ptr %a199 + store { ptr, i64, i64 } { ptr @.str.5033, i64 32, 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.5034, i64 6, i64 0 }, ptr %a413 + call void @finch_str_concat(ptr %a411, ptr %a412, ptr %a413) + store { ptr, i64, i64 } %t410, ptr %a414 + call void @finch_str_drop(ptr %a414) + %t415 = load { ptr, i64, i64 }, ptr %a411 + %t416 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 0 + %t417 = load { ptr, i64, i64 }, ptr %t416 + store { ptr, i64, i64 } %t415, ptr %a419 + store { ptr, i64, i64 } %t417, ptr %a420 + call void @finch_str_concat(ptr %a418, ptr %a419, ptr %a420) + store { ptr, i64, i64 } %t415, ptr %a421 + call void @finch_str_drop(ptr %a421) + %t422 = load { ptr, i64, i64 }, ptr %a418 + store { ptr, i64, i64 } %t422, ptr %a424 + store { ptr, i64, i64 } { ptr @.str.5035, i64 1, i64 0 }, ptr %a425 + call void @finch_str_concat(ptr %a423, ptr %a424, ptr %a425) + store { ptr, i64, i64 } %t422, ptr %a426 + call void @finch_str_drop(ptr %a426) + %t427 = load { ptr, i64, i64 }, ptr %a423 + call void @finch.gen.emit(ptr %t405, { ptr, i64, i64 } %t427) + store { ptr, i64, i64 } %t427, ptr %a428 + call void @finch_str_drop(ptr %a428) + store i1 true, ptr %a207 + br label %endif7792 +else7791: + %t429 = load { ptr, i64, i64 }, ptr %a206 + store { ptr, i64, i64 } %t429, ptr %a430 + store { ptr, i64, i64 } { ptr @.str.5036, i64 5, i64 0 }, ptr %a431 + %t432 = call i32 @finch_str_eq(ptr %a430, ptr %a431) + %t433 = icmp ne i32 %t432, 0 + br label %logic.from7793 +logic.from7793: + br i1 %t433, label %logic.rhs7794, label %logic.end7795 +logic.rhs7794: + %t434 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 + %t435 = getelementptr inbounds %S.ast.Type, ptr %t434, i32 0, i32 1 + %t436 = load { ptr, i64, i64 }, ptr %t435 + %t437 = extractvalue { ptr, i64, i64 } %t436, 1 + %t438 = icmp uge i64 0, %t437 + br i1 %t438, label %range7796, label %inrange7797 +range7796: + call void @finch_panic_index(ptr @.str.5037, i64 4671, i64 0, i64 %t437) unreachable -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) +inrange7797: + %t439 = extractvalue { ptr, i64, i64 } %t436, 0 + %t440 = getelementptr inbounds %S.ast.Type, ptr %t439, i64 0 + %t441 = getelementptr inbounds %S.ast.Type, ptr %t440, i32 0, i32 0 + %t442 = load { ptr, i64, i64 }, ptr %t441 + store { ptr, i64, i64 } %t442, ptr %a443 + store { ptr, i64, i64 } { ptr @.str.5038, i64 2, i64 0 }, ptr %a444 + %t445 = call i32 @finch_str_eq(ptr %a443, ptr %a444) + %t446 = icmp ne i32 %t445, 0 + br label %logic.from7798 +logic.from7798: + br i1 %t446, label %logic.end7800, label %logic.rhs7799 +logic.rhs7799: + %t447 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 + %t448 = getelementptr inbounds %S.ast.Type, ptr %t447, i32 0, i32 1 + %t449 = load { ptr, i64, i64 }, ptr %t448 + %t450 = extractvalue { ptr, i64, i64 } %t449, 1 + %t451 = icmp uge i64 0, %t450 + br i1 %t451, label %range7801, label %inrange7802 +range7801: + call void @finch_panic_index(ptr @.str.5039, i64 4671, i64 0, i64 %t450) unreachable -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.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.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 -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) +inrange7802: + %t452 = extractvalue { ptr, i64, i64 } %t449, 0 + %t453 = getelementptr inbounds %S.ast.Type, ptr %t452, i64 0 + %t454 = getelementptr inbounds %S.ast.Type, ptr %t453, i32 0, i32 0 + %t455 = load { ptr, i64, i64 }, ptr %t454 + store { ptr, i64, i64 } %t455, ptr %a456 + store { ptr, i64, i64 } { ptr @.str.5040, i64 4, i64 0 }, ptr %a457 + %t458 = call i32 @finch_str_eq(ptr %a456, ptr %a457) + %t459 = icmp ne i32 %t458, 0 + br label %logic.rend7803 +logic.rend7803: + br label %logic.end7800 +logic.end7800: + %t460 = phi i1 [ true, %logic.from7798 ], [ %t459, %logic.rend7803 ] + br label %logic.rend7804 +logic.rend7804: + br label %logic.end7795 +logic.end7795: + %t461 = phi i1 [ false, %logic.from7793 ], [ %t460, %logic.rend7804 ] + br i1 %t461, label %then7805, label %else7806 +then7805: + %t462 = load ptr, ptr %a1 + %t463 = load { ptr, i64, i64 }, ptr %a199 + call void @finch.gen.store(ptr %t462, { ptr, i64, i64 } { ptr @.str.5041, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5042, i64 15, i64 0 }, { ptr, i64, i64 } %t463) + %t464 = load ptr, ptr %a1 + %t465 = load { ptr, i64, i64 }, ptr %a199 + store { ptr, i64, i64 } { ptr @.str.5043, i64 36, i64 0 }, ptr %a467 + store { ptr, i64, i64 } %t465, ptr %a468 + 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.5044, i64 6, i64 0 }, ptr %a472 + call void @finch_str_concat(ptr %a470, ptr %a471, ptr %a472) + store { ptr, i64, i64 } %t469, ptr %a473 + call void @finch_str_drop(ptr %a473) + %t474 = load { ptr, i64, i64 }, ptr %a470 + %t475 = load ptr, ptr %a1 + %t476 = load %S.gen.Val, ptr %a196 + %t477 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t475, %S.gen.Val %t476) + store { ptr, i64, i64 } %t474, ptr %a479 + store { ptr, i64, i64 } %t477, ptr %a480 + call void @finch_str_concat(ptr %a478, ptr %a479, ptr %a480) + store { ptr, i64, i64 } %t474, ptr %a481 + call void @finch_str_drop(ptr %a481) + store { ptr, i64, i64 } %t477, ptr %a482 + call void @finch_str_drop(ptr %a482) + %t483 = load { ptr, i64, i64 }, ptr %a478 + store { ptr, i64, i64 } %t483, ptr %a485 + store { ptr, i64, i64 } { ptr @.str.5045, i64 1, i64 0 }, ptr %a486 + call void @finch_str_concat(ptr %a484, ptr %a485, ptr %a486) + store { ptr, i64, i64 } %t483, ptr %a487 + call void @finch_str_drop(ptr %a487) + %t488 = load { ptr, i64, i64 }, ptr %a484 + call void @finch.gen.emit(ptr %t464, { ptr, i64, i64 } %t488) + store { ptr, i64, i64 } %t488, ptr %a489 + call void @finch_str_drop(ptr %a489) + %t490 = load ptr, ptr %a1 + %t491 = load %S.gen.Val, ptr %a196 + call void @finch.gen.release(ptr %t490, %S.gen.Val %t491) + br label %endif7807 +else7806: + %t492 = load { ptr, i64, i64 }, ptr %a206 + store { ptr, i64, i64 } %t492, ptr %a493 + store { ptr, i64, i64 } { ptr @.str.5046, i64 4, i64 0 }, ptr %a494 + %t495 = call i32 @finch_str_eq(ptr %a493, ptr %a494) + %t496 = icmp ne i32 %t495, 0 + br label %logic.from7808 +logic.from7808: + br i1 %t496, label %logic.end7810, label %logic.rhs7809 +logic.rhs7809: + %t497 = load { ptr, i64, i64 }, ptr %a206 + store { ptr, i64, i64 } %t497, ptr %a498 + store { ptr, i64, i64 } { ptr @.str.5047, i64 4, i64 0 }, ptr %a499 + %t500 = call i32 @finch_str_eq(ptr %a498, ptr %a499) + %t501 = icmp ne i32 %t500, 0 + br label %logic.rend7811 +logic.rend7811: + br label %logic.end7810 +logic.end7810: + %t502 = phi i1 [ true, %logic.from7808 ], [ %t501, %logic.rend7811 ] + br label %logic.from7812 +logic.from7812: + br i1 %t502, label %logic.end7814, label %logic.rhs7813 +logic.rhs7813: + %t503 = load { ptr, i64, i64 }, ptr %a206 + store { ptr, i64, i64 } %t503, ptr %a504 + store { ptr, i64, i64 } { ptr @.str.5048, i64 5, i64 0 }, ptr %a505 + %t506 = call i32 @finch_str_eq(ptr %a504, ptr %a505) + %t507 = icmp ne i32 %t506, 0 + br label %logic.rend7815 +logic.rend7815: + br label %logic.end7814 +logic.end7814: + %t508 = phi i1 [ true, %logic.from7812 ], [ %t507, %logic.rend7815 ] + br label %logic.from7816 +logic.from7816: + br i1 %t508, label %logic.end7818, label %logic.rhs7817 +logic.rhs7817: + %t509 = load { ptr, i64, i64 }, ptr %a206 + store { ptr, i64, i64 } %t509, ptr %a510 + store { ptr, i64, i64 } { ptr @.str.5049, i64 3, i64 0 }, ptr %a511 + %t512 = call i32 @finch_str_eq(ptr %a510, ptr %a511) + %t513 = icmp ne i32 %t512, 0 + br label %logic.rend7819 +logic.rend7819: + br label %logic.end7818 +logic.end7818: + %t514 = phi i1 [ true, %logic.from7816 ], [ %t513, %logic.rend7819 ] + br label %logic.from7820 +logic.from7820: + br i1 %t514, label %logic.end7822, label %logic.rhs7821 +logic.rhs7821: + %t515 = load { ptr, i64, i64 }, ptr %a206 + store { ptr, i64, i64 } %t515, ptr %a516 + store { ptr, i64, i64 } { ptr @.str.5050, i64 6, i64 0 }, ptr %a517 + %t518 = call i32 @finch_str_eq(ptr %a516, ptr %a517) + %t519 = icmp ne i32 %t518, 0 + br label %logic.rend7823 +logic.rend7823: + br label %logic.end7822 +logic.end7822: + %t520 = phi i1 [ true, %logic.from7820 ], [ %t519, %logic.rend7823 ] + br label %logic.from7824 +logic.from7824: + br i1 %t520, label %logic.end7826, label %logic.rhs7825 +logic.rhs7825: + %t521 = load { ptr, i64, i64 }, ptr %a206 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) + store { ptr, i64, i64 } { ptr @.str.5051, i64 4, i64 0 }, ptr %a523 + %t524 = call i32 @finch_str_eq(ptr %a522, ptr %a523) + %t525 = icmp ne i32 %t524, 0 + br label %logic.rend7827 +logic.rend7827: + br label %logic.end7826 +logic.end7826: + %t526 = phi i1 [ true, %logic.from7824 ], [ %t525, %logic.rend7827 ] + br i1 %t526, label %then7828, label %else7829 +then7828: + %t527 = load ptr, ptr %a1 + %t528 = load { ptr, i64, i64 }, ptr %a199 + call void @finch.gen.store(ptr %t527, { ptr, i64, i64 } { ptr @.str.5052, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5053, i64 15, i64 0 }, { ptr, i64, i64 } %t528) + %t529 = load ptr, ptr %a1 + %t530 = load { ptr, i64, i64 }, ptr %a199 + %t531 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 0 + %t532 = load { ptr, i64, i64 }, ptr %t531 + %t533 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 + %t534 = load %S.ast.Type, ptr %t533 + call void @finch.gen.emitFormat(ptr %t529, { ptr, i64, i64 } %t530, { ptr, i64, i64 } %t532, %S.ast.Type %t534, i1 false) + %t535 = load ptr, ptr %a1 + %t536 = load %S.gen.Val, ptr %a196 + call void @finch.gen.release(ptr %t535, %S.gen.Val %t536) + br label %endif7830 +else7829: + %t537 = load ptr, ptr %a1 + %t538 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t539 = load { ptr, i64, i64 }, ptr %t538 + %t540 = extractvalue { ptr, i64, i64 } %t539, 1 + %t541 = icmp uge i64 0, %t540 + br i1 %t541, label %range7831, label %inrange7832 +range7831: + call void @finch_panic_index(ptr @.str.5054, i64 4681, i64 0, i64 %t540) unreachable -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 +inrange7832: + %t542 = extractvalue { ptr, i64, i64 } %t539, 0 + %t543 = getelementptr inbounds %S.ast.Node, ptr %t542, i64 0 + %t544 = load %S.ast.Node, ptr %t543 + %t545 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 + %t546 = load %S.ast.Type, ptr %t545 + %t547 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t546) + store { ptr, i64, i64 } { ptr @.str.5055, i64 11, i64 0 }, ptr %a549 + store { ptr, i64, i64 } %t547, ptr %a550 + call void @finch_str_concat(ptr %a548, ptr %a549, ptr %a550) + store { ptr, i64, i64 } %t547, ptr %a551 + call void @finch_str_drop(ptr %a551) + %t552 = load { ptr, i64, i64 }, ptr %a548 + store { ptr, i64, i64 } %t552, ptr %a554 + store { ptr, i64, i64 } { ptr @.str.5056, i64 9, i64 0 }, ptr %a555 + call void @finch_str_concat(ptr %a553, ptr %a554, ptr %a555) + store { ptr, i64, i64 } %t552, ptr %a556 + call void @finch_str_drop(ptr %a556) + %t557 = load { ptr, i64, i64 }, ptr %a553 + call void @finch.gen.fail(ptr %t537, %S.ast.Node %t544, { ptr, i64, i64 } %t557) 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 + call void @finch_str_drop(ptr %a558) + br label %endif7830 +endif7830: + br label %endif7807 +endif7807: + br label %endif7792 +endif7792: + br label %endif7789 +endif7789: + br label %endif7786 +endif7786: + br label %endif7783 +endif7783: + br label %endif7780 +endif7780: + br label %endif7777 +endif7777: + br label %endif7774 +endif7774: + %t559 = load ptr, ptr %a1 + %t560 = load { ptr, i64, i64 }, ptr %a199 + %t561 = call { ptr, i64, i64 } @finch.gen.load(ptr %t559, { ptr, i64, i64 } { ptr @.str.5057, i64 17, i64 0 }, { 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.5058, i64 3, i64 0 }) + %t564 = insertvalue %S.gen.Val %t562, %S.ast.Type %t563, 1 + %t565 = load i1, ptr %a207 + %t566 = xor i1 %t565, true + %t567 = insertvalue %S.gen.Val %t564, i1 %t566, 2 + call void @finch_str_drop(ptr %a206) + call void @finch_str_drop(ptr %a199) + call void @finch.drop.S_gen_Val(ptr %a196) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t567 +endif7769: + %t568 = load { ptr, i64, i64 }, ptr %a8 + %t569 = call { ptr, i64, i64 } @finch.gen.numType({ ptr, i64, i64 } %t568) + store { ptr, i64, i64 } %t569, ptr %a570 + %t571 = getelementptr inbounds { ptr, i64, i64 }, ptr %a570, i32 0, i32 1 + %t572 = load i64, ptr %t571 + %t573 = icmp sgt i64 %t572, 0 + br i1 %t573, label %then7833, label %endif7835 +then7833: %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 + %t575 = load %S.ast.Node, ptr %a2 + %t576 = load { ptr, i64, i64 }, ptr %a570 + %t577 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } %t576) + %t578 = call %S.gen.Val @finch.gen.convert(ptr %t574, %S.ast.Node %t575, %S.ast.Type %t577) + store %S.ast.Type %t577, ptr %a579 + call void @finch.drop.S_ast_Type(ptr %a579) + call void @finch_str_drop(ptr %a570) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t578 +endif7835: + %t580 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t580, ptr %a581 + store { ptr, i64, i64 } { ptr @.str.5059, i64 9, i64 0 }, ptr %a582 + %t583 = call i32 @finch_str_eq(ptr %a581, ptr %a582) + %t584 = icmp ne i32 %t583, 0 + br label %logic.from7836 +logic.from7836: + br i1 %t584, label %logic.end7838, label %logic.rhs7837 +logic.rhs7837: + %t585 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t585, ptr %a586 + store { ptr, i64, i64 } { ptr @.str.5060, i64 11, i64 0 }, ptr %a587 + %t588 = call i32 @finch_str_eq(ptr %a586, ptr %a587) + %t589 = icmp ne i32 %t588, 0 + br label %logic.rend7839 +logic.rend7839: + br label %logic.end7838 +logic.end7838: + %t590 = phi i1 [ true, %logic.from7836 ], [ %t589, %logic.rend7839 ] + br i1 %t590, label %then7840, label %endif7842 +then7840: %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) + %t592 = load %S.ast.Node, ptr %a2 + %t593 = load { ptr, i64, i64 }, ptr %a8 + call void @finch.gen.checkArgs(ptr %t591, %S.ast.Node %t592, i64 0, i64 1, { ptr, i64, i64 } %t593) + %t594 = load ptr, ptr %a1 + %t595 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t596 = load { ptr, i64, i64 }, ptr %t595 + %t597 = extractvalue { ptr, i64, i64 } %t596, 1 + %t598 = icmp uge i64 0, %t597 + br i1 %t598, label %range7843, label %inrange7844 +range7843: + call void @finch_panic_index(ptr @.str.5061, i64 4691, i64 0, i64 %t597) unreachable -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 } %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 +inrange7844: + %t599 = extractvalue { ptr, i64, i64 } %t596, 0 + %t600 = getelementptr inbounds %S.ast.Node, ptr %t599, i64 0 + %t601 = load %S.ast.Node, ptr %t600 + %t602 = call %S.gen.Val @finch.gen.strArg(ptr %t594, %S.ast.Node %t601, { ptr, i64, i64 } { ptr @.str.5062, i64 13, i64 0 }) + store %S.gen.Val %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 + %t605 = load %S.gen.Val, ptr %a603 + %t606 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t604, %S.gen.Val %t605) + store { ptr, i64, i64 } %t606, ptr %a607 + %t608 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t608, ptr %a609 + store { ptr, i64, i64 } { ptr @.str.5063, i64 11, i64 0 }, ptr %a610 + %t611 = call i32 @finch_str_eq(ptr %a609, ptr %a610) + %t612 = icmp ne i32 %t611, 0 + br i1 %t612, label %then7845, label %endif7847 +then7845: + %t613 = load ptr, ptr %a1 + %t614 = load { ptr, i64, i64 }, ptr %a607 + store { ptr, i64, i64 } { ptr @.str.5064, i64 32, 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.5065, i64 1, i64 0 }, 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) + store { ptr, i64, i64 } %t618, ptr %a622 + call void @finch_str_drop(ptr %a622) + %t623 = load { ptr, i64, i64 }, ptr %a619 + %t624 = call { ptr, i64, i64 } @finch.gen.op(ptr %t613, { ptr, i64, i64 } %t623) + store { ptr, i64, i64 } %t623, ptr %a625 + call void @finch_str_drop(ptr %a625) + store { ptr, i64, i64 } %t624, ptr %a626 + %t627 = load ptr, ptr %a1 + %t628 = load %S.gen.Val, ptr %a603 + call void @finch.gen.release(ptr %t627, %S.gen.Val %t628) + %t629 = load ptr, ptr %a1 + %t630 = load { ptr, i64, i64 }, ptr %a626 + store { ptr, i64, i64 } { ptr @.str.5066, i64 12, i64 0 }, 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.5067, i64 3, i64 0 }, ptr %a637 + call void @finch_str_concat(ptr %a635, ptr %a636, ptr %a637) + store { ptr, i64, i64 } %t634, ptr %a638 + call void @finch_str_drop(ptr %a638) + %t639 = load { ptr, i64, i64 }, ptr %a635 + %t640 = call { ptr, i64, i64 } @finch.gen.op(ptr %t629, { ptr, i64, i64 } %t639) + store { ptr, i64, i64 } %t639, ptr %a641 + call void @finch_str_drop(ptr %a641) + %t642 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t640, 0 + %t643 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5068, i64 4, i64 0 }) + %t644 = insertvalue %S.gen.Val %t642, %S.ast.Type %t643, 1 + call void @finch_str_drop(ptr %a626) + call void @finch_str_drop(ptr %a607) + call void @finch.drop.S_gen_Val(ptr %a603) + call void @finch_str_drop(ptr %a570) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t644 +endif7847: + %t645 = load ptr, ptr %a1 + %t646 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t645) + store { ptr, i64, i64 } %t646, ptr %a647 + %t648 = load ptr, ptr %a1 + %t649 = icmp eq ptr %t648, null + br i1 %t649, label %panic7848, label %ok7849 +panic7848: + call void @finch_panic(ptr @.str.5069, i64 4699, ptr @.str.5070) unreachable -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 -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 +ok7849: + %t650 = getelementptr inbounds %S.gen.Gen, ptr %t648, i32 0, i32 40 + %t651 = load { ptr, i64, i64 }, ptr %t650 + %t652 = load %S.ast.Node, ptr %a2 + %t653 = call { ptr, i64, i64 } @finch.gen.nodeKey(%S.ast.Node %t652) + store { ptr, i64, i64 } %t651, ptr %a654 + store { ptr, i64, i64 } %t653, ptr %a655 + %t656 = call i32 @finch_str_eq(ptr %a654, ptr %a655) + %t657 = icmp ne i32 %t656, 0 + store { ptr, i64, i64 } %t653, ptr %a658 + call void @finch_str_drop(ptr %a658) + br i1 %t657, label %then7850, label %endif7852 +then7850: + %t659 = load ptr, ptr %a1 + %t660 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t659, { ptr, i64, i64 } { ptr @.str.5071, i64 17, i64 0 }) + store { ptr, i64, i64 } %t660, ptr %a661 + %t662 = load ptr, ptr %a1 + %t663 = load { ptr, i64, i64 }, ptr %a647 + call void @finch.gen.store(ptr %t662, { ptr, i64, i64 } { ptr @.str.5072, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5073, i64 15, i64 0 }, { ptr, i64, i64 } %t663) + %t664 = load ptr, ptr %a1 + %t665 = load { ptr, i64, i64 }, ptr %a661 + call void @finch.gen.store(ptr %t664, { ptr, i64, i64 } { ptr @.str.5074, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5075, i64 15, i64 0 }, { ptr, i64, i64 } %t665) %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 -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 -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 + %t667 = load { ptr, i64, i64 }, ptr %a647 + store { ptr, i64, i64 } { ptr @.str.5076, i64 34, 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.5077, i64 6, i64 0 }, ptr %a674 + call void @finch_str_concat(ptr %a672, ptr %a673, ptr %a674) + store { ptr, i64, i64 } %t671, ptr %a675 + call void @finch_str_drop(ptr %a675) + %t676 = load { ptr, i64, i64 }, ptr %a672 + %t677 = load { ptr, i64, i64 }, ptr %a607 + store { ptr, i64, i64 } %t676, ptr %a679 + store { ptr, i64, i64 } %t677, ptr %a680 + call void @finch_str_concat(ptr %a678, ptr %a679, ptr %a680) + store { ptr, i64, i64 } %t676, ptr %a681 + call void @finch_str_drop(ptr %a681) + %t682 = load { ptr, i64, i64 }, ptr %a678 + store { ptr, i64, i64 } %t682, ptr %a684 + store { ptr, i64, i64 } { ptr @.str.5078, i64 6, i64 0 }, ptr %a685 + call void @finch_str_concat(ptr %a683, ptr %a684, ptr %a685) + store { ptr, i64, i64 } %t682, ptr %a686 + call void @finch_str_drop(ptr %a686) + %t687 = load { ptr, i64, i64 }, ptr %a683 + %t688 = load { ptr, i64, i64 }, ptr %a661 + store { ptr, i64, i64 } %t687, ptr %a690 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 + call void @finch_str_concat(ptr %a689, ptr %a690, ptr %a691) + store { ptr, i64, i64 } %t687, ptr %a692 + call void @finch_str_drop(ptr %a692) + %t693 = load { ptr, i64, i64 }, ptr %a689 store { ptr, i64, i64 } %t693, ptr %a695 - store { ptr, i64, i64 } { ptr @.str.4919, i64 6, i64 0 }, ptr %a696 + store { ptr, i64, i64 } { ptr @.str.5079, i64 1, 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 } %t693, ptr %a697 + call void @finch_str_drop(ptr %a697) + %t698 = load { ptr, i64, i64 }, ptr %a694 + %t699 = call { ptr, i64, i64 } @finch.gen.op(ptr %t666, { ptr, i64, i64 } %t698) + store { ptr, i64, i64 } %t698, ptr %a700 + call void @finch_str_drop(ptr %a700) + store { ptr, i64, i64 } %t699, ptr %a701 + %t702 = load ptr, ptr %a1 + %t703 = load { ptr, i64, i64 }, ptr %a701 + store { ptr, i64, i64 } { ptr @.str.5080, i64 12, i64 0 }, ptr %a705 + store { ptr, i64, i64 } %t703, ptr %a706 + call void @finch_str_concat(ptr %a704, ptr %a705, ptr %a706) + %t707 = load { ptr, i64, i64 }, ptr %a704 + store { ptr, i64, i64 } %t707, ptr %a709 + store { ptr, i64, i64 } { ptr @.str.5081, i64 3, i64 0 }, ptr %a710 + call void @finch_str_concat(ptr %a708, ptr %a709, ptr %a710) + store { ptr, i64, i64 } %t707, ptr %a711 + call void @finch_str_drop(ptr %a711) + %t712 = load { ptr, i64, i64 }, ptr %a708 + %t713 = call { ptr, i64, i64 } @finch.gen.op(ptr %t702, { ptr, i64, i64 } %t712) + store { ptr, i64, i64 } %t712, ptr %a714 + call void @finch_str_drop(ptr %a714) + %t715 = load ptr, ptr %a1 + %t716 = icmp eq ptr %t715, null + br i1 %t716, label %panic7853, label %ok7854 +panic7853: + call void @finch_panic(ptr @.str.5082, i64 4704, ptr @.str.5083) + unreachable +ok7854: + %t717 = getelementptr inbounds %S.gen.Gen, ptr %t715, i32 0, i32 41 + %t718 = load { ptr, i64, i64 }, ptr %t717 + store { ptr, i64, i64 } %t713, ptr %t717 + store { ptr, i64, i64 } %t718, ptr %a719 + call void @finch_str_drop(ptr %a719) + %t720 = load ptr, ptr %a1 + %t721 = load { ptr, i64, i64 }, ptr %a661 + %t722 = call { ptr, i64, i64 } @finch.gen.load(ptr %t720, { ptr, i64, i64 } { ptr @.str.5084, i64 17, i64 0 }, { ptr, i64, i64 } %t721) + %t723 = load ptr, ptr %a1 + %t724 = icmp eq ptr %t723, null + br i1 %t724, label %panic7855, label %ok7856 +panic7855: + call void @finch_panic(ptr @.str.5085, i64 4705, ptr @.str.5086) + unreachable +ok7856: + %t725 = getelementptr inbounds %S.gen.Gen, ptr %t723, i32 0, i32 42 + %t726 = load { ptr, i64, i64 }, ptr %t725 + store { ptr, i64, i64 } %t722, ptr %t725 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 = 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) + call void @finch_str_drop(ptr %a727) + %t728 = load ptr, ptr %a1 + %t729 = load %S.gen.Val, ptr %a603 + call void @finch.gen.release(ptr %t728, %S.gen.Val %t729) + %t730 = load ptr, ptr %a1 + %t731 = load { ptr, i64, i64 }, ptr %a647 + %t732 = call { ptr, i64, i64 } @finch.gen.load(ptr %t730, { ptr, i64, i64 } { ptr @.str.5087, i64 17, i64 0 }, { ptr, i64, i64 } %t731) + %t733 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t732, 0 + %t734 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5088, i64 3, i64 0 }) + %t735 = insertvalue %S.gen.Val %t733, %S.ast.Type %t734, 1 + %t736 = insertvalue %S.gen.Val %t735, i1 true, 2 + call void @finch_str_drop(ptr %a701) + call void @finch_str_drop(ptr %a661) + call void @finch_str_drop(ptr %a647) + call void @finch_str_drop(ptr %a607) + call void @finch.drop.S_gen_Val(ptr %a603) + call void @finch_str_drop(ptr %a570) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t736 +endif7852: + %t737 = load ptr, ptr %a1 + %t738 = load ptr, ptr %a1 + %t739 = icmp eq ptr %t738, null + br i1 %t739, label %panic7857, label %ok7858 +panic7857: + call void @finch_panic(ptr @.str.5089, i64 4709, ptr @.str.5090) unreachable -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) +ok7858: + %t740 = getelementptr inbounds %S.gen.Gen, ptr %t738, i32 0, i32 1 + %t741 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 + %t742 = load i64, ptr %t741 + %t743 = load { ptr, i64, i64 }, ptr %t740 + %t744 = extractvalue { ptr, i64, i64 } %t743, 1 + %t745 = icmp uge i64 %t742, %t744 + br i1 %t745, label %range7859, label %inrange7860 +range7859: + call void @finch_panic_index(ptr @.str.5091, i64 4709, i64 %t742, i64 %t744) unreachable -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 -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) +inrange7860: + %t746 = extractvalue { ptr, i64, i64 } %t743, 0 + %t747 = getelementptr inbounds { ptr, i64, i64 }, ptr %t746, i64 %t742 + %t748 = load { ptr, i64, i64 }, ptr %t747 + %t749 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t737, { ptr, i64, i64 } %t748) + store { ptr, i64, i64 } %t749, ptr %a750 + %t751 = load ptr, ptr %a1 + %t752 = load { ptr, i64, i64 }, ptr %a647 + store { ptr, i64, i64 } { ptr @.str.5092, i64 31, i64 0 }, ptr %a754 + store { ptr, i64, i64 } %t752, ptr %a755 + call void @finch_str_concat(ptr %a753, ptr %a754, ptr %a755) + %t756 = load { ptr, i64, i64 }, ptr %a753 + store { ptr, i64, i64 } %t756, ptr %a758 + store { ptr, i64, i64 } { ptr @.str.5093, i64 6, i64 0 }, ptr %a759 + call void @finch_str_concat(ptr %a757, ptr %a758, ptr %a759) + store { ptr, i64, i64 } %t756, ptr %a760 + call void @finch_str_drop(ptr %a760) + %t761 = load { ptr, i64, i64 }, ptr %a757 + %t762 = load { ptr, i64, i64 }, ptr %a607 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 } %t762, ptr %a765 + call void @finch_str_concat(ptr %a763, ptr %a764, ptr %a765) + store { ptr, i64, i64 } %t761, ptr %a766 + call void @finch_str_drop(ptr %a766) + %t767 = load { ptr, i64, i64 }, ptr %a763 + store { ptr, i64, i64 } %t767, ptr %a769 + store { ptr, i64, i64 } { ptr @.str.5094, i64 6, i64 0 }, ptr %a770 + call void @finch_str_concat(ptr %a768, ptr %a769, ptr %a770) + store { ptr, i64, i64 } %t767, ptr %a771 + call void @finch_str_drop(ptr %a771) + %t772 = load { ptr, i64, i64 }, ptr %a768 + %t773 = load { ptr, i64, i64 }, ptr %a750 + store { ptr, i64, i64 } %t772, ptr %a775 + store { ptr, i64, i64 } %t773, ptr %a776 + call void @finch_str_concat(ptr %a774, ptr %a775, ptr %a776) + store { ptr, i64, i64 } %t772, ptr %a777 + call void @finch_str_drop(ptr %a777) + %t778 = load { ptr, i64, i64 }, ptr %a774 store { ptr, i64, i64 } %t778, ptr %a780 - store { ptr, i64, i64 } { ptr @.str.4935, i64 6, i64 0 }, ptr %a781 + store { ptr, i64, i64 } { ptr @.str.5095, 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 + store { ptr, i64, i64 } %t778, ptr %a782 + call void @finch_str_drop(ptr %a782) + %t783 = load { ptr, i64, i64 }, ptr %a779 + %t784 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 + %t785 = load i64, ptr %t784 + call void @finch_str_from_int(ptr %a786, i64 %t785) + %t787 = load { ptr, i64, i64 }, ptr %a786 + store { ptr, i64, i64 } %t783, ptr %a789 + store { ptr, i64, i64 } %t787, 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) + store { ptr, i64, i64 } %t783, ptr %a791 + call void @finch_str_drop(ptr %a791) + store { ptr, i64, i64 } %t787, ptr %a792 + call void @finch_str_drop(ptr %a792) + %t793 = load { ptr, i64, i64 }, ptr %a788 + store { ptr, i64, i64 } %t793, ptr %a795 + store { ptr, i64, i64 } { ptr @.str.5096, i64 1, i64 0 }, ptr %a796 + call void @finch_str_concat(ptr %a794, ptr %a795, ptr %a796) + store { ptr, i64, i64 } %t793, ptr %a797 + call void @finch_str_drop(ptr %a797) + %t798 = load { ptr, i64, i64 }, ptr %a794 + call void @finch.gen.emit(ptr %t751, { ptr, i64, i64 } %t798) + store { ptr, i64, i64 } %t798, ptr %a799 + call void @finch_str_drop(ptr %a799) + %t800 = load ptr, ptr %a1 + %t801 = load %S.gen.Val, ptr %a603 + call void @finch.gen.release(ptr %t800, %S.gen.Val %t801) + %t802 = load ptr, ptr %a1 + %t803 = load { ptr, i64, i64 }, ptr %a647 + %t804 = call { ptr, i64, i64 } @finch.gen.load(ptr %t802, { ptr, i64, i64 } { ptr @.str.5097, i64 17, i64 0 }, { ptr, i64, i64 } %t803) + %t805 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t804, 0 + %t806 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5098, i64 3, i64 0 }) + %t807 = insertvalue %S.gen.Val %t805, %S.ast.Type %t806, 1 + %t808 = insertvalue %S.gen.Val %t807, i1 true, 2 + call void @finch_str_drop(ptr %a750) + call void @finch_str_drop(ptr %a647) + call void @finch_str_drop(ptr %a607) + call void @finch.drop.S_gen_Val(ptr %a603) + call void @finch_str_drop(ptr %a570) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t808 +endif7842: + %t809 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t809, ptr %a810 + store { ptr, i64, i64 } { ptr @.str.5099, i64 10, i64 0 }, ptr %a811 + %t812 = call i32 @finch_str_eq(ptr %a810, ptr %a811) + %t813 = icmp ne i32 %t812, 0 + br i1 %t813, label %then7861, label %endif7863 +then7861: %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 -ok7487: - %t816 = getelementptr inbounds %S.gen.Gen, ptr %t814, i32 0, i32 40 - store { ptr, i64, i64 } %t813, ptr %t816 + %t815 = load %S.ast.Node, ptr %a2 + %t816 = load { ptr, i64, i64 }, ptr %a8 + call void @finch.gen.checkArgs(ptr %t814, %S.ast.Node %t815, i64 0, i64 2, { ptr, i64, i64 } %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) + %t818 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t819 = load { ptr, i64, i64 }, ptr %t818 + %t820 = extractvalue { ptr, i64, i64 } %t819, 1 + %t821 = icmp uge i64 0, %t820 + br i1 %t821, label %range7864, label %inrange7865 +range7864: + call void @finch_panic_index(ptr @.str.5100, i64 4716, i64 0, i64 %t820) 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 +inrange7865: + %t822 = extractvalue { ptr, i64, i64 } %t819, 0 + %t823 = getelementptr inbounds %S.ast.Node, ptr %t822, i64 0 + %t824 = load %S.ast.Node, ptr %t823 + %t825 = call %S.gen.Val @finch.gen.strArg(ptr %t817, %S.ast.Node %t824, { ptr, i64, i64 } { ptr @.str.5101, i64 13, i64 0 }) + store %S.gen.Val %t825, ptr %a826 + %t827 = load ptr, ptr %a1 + %t828 = icmp eq ptr %t827, null + br i1 %t828, label %panic7866, label %ok7867 +panic7866: + call void @finch_panic(ptr @.str.5102, i64 4717, ptr @.str.5103) + unreachable +ok7867: + %t829 = getelementptr inbounds %S.gen.Gen, ptr %t827, i32 0, i32 11 + %t830 = getelementptr inbounds { ptr, i64, i64 }, ptr %t829, i32 0, i32 1 + %t831 = load i64, ptr %t830 + store i64 %t831, ptr %a832 + %t833 = load ptr, ptr %a1 + %t834 = load %S.gen.Val, ptr %a826 + call void @finch.gen.hold(ptr %t833, %S.gen.Val %t834) + %t835 = load ptr, ptr %a1 + %t836 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t837 = load { ptr, i64, i64 }, ptr %t836 + %t838 = extractvalue { ptr, i64, i64 } %t837, 1 + %t839 = icmp uge i64 1, %t838 + br i1 %t839, label %range7868, label %inrange7869 +range7868: + call void @finch_panic_index(ptr @.str.5104, i64 4719, i64 1, i64 %t838) + unreachable +inrange7869: + %t840 = extractvalue { ptr, i64, i64 } %t837, 0 + %t841 = getelementptr inbounds %S.ast.Node, ptr %t840, i64 1 + %t842 = load %S.ast.Node, ptr %t841 + %t843 = call %S.gen.Val @finch.gen.strArg(ptr %t835, %S.ast.Node %t842, { ptr, i64, i64 } { ptr @.str.5105, i64 8, i64 0 }) + store %S.gen.Val %t843, ptr %a844 + %t845 = load ptr, ptr %a1 + %t846 = load i64, ptr %a832 + call void @finch.gen.heldEnd(ptr %t845, i64 %t846) + %t847 = load ptr, ptr %a1 + %t848 = load %S.gen.Val, ptr %a826 + %t849 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t847, %S.gen.Val %t848) + store { ptr, i64, i64 } %t849, ptr %a850 + %t851 = load ptr, ptr %a1 + %t852 = load %S.gen.Val, ptr %a844 + %t853 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t851, %S.gen.Val %t852) + store { ptr, i64, i64 } %t853, ptr %a854 + %t855 = load ptr, ptr %a1 + %t856 = icmp eq ptr %t855, null + br i1 %t856, label %panic7870, label %ok7871 +panic7870: + call void @finch_panic(ptr @.str.5106, i64 4723, ptr @.str.5107) + unreachable +ok7871: + %t857 = getelementptr inbounds %S.gen.Gen, ptr %t855, i32 0, i32 40 + %t858 = load { ptr, i64, i64 }, ptr %t857 + %t859 = load %S.ast.Node, ptr %a2 + %t860 = call { ptr, i64, i64 } @finch.gen.nodeKey(%S.ast.Node %t859) + store { ptr, i64, i64 } %t858, ptr %a861 + store { ptr, i64, i64 } %t860, 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 = 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 -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 } %t860, ptr %a865 + call void @finch_str_drop(ptr %a865) + br i1 %t864, label %then7872, label %endif7874 +then7872: + %t866 = load ptr, ptr %a1 + %t867 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t866, { ptr, i64, i64 } { ptr @.str.5108, i64 17, i64 0 }) + store { ptr, i64, i64 } %t867, ptr %a868 + %t869 = load ptr, ptr %a1 + %t870 = load { ptr, i64, i64 }, ptr %a868 + call void @finch.gen.store(ptr %t869, { ptr, i64, i64 } { ptr @.str.5109, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5110, i64 15, i64 0 }, { ptr, i64, i64 } %t870) + %t871 = load ptr, ptr %a1 + %t872 = load { ptr, i64, i64 }, ptr %a850 + store { ptr, i64, i64 } { ptr @.str.5111, i64 35, i64 0 }, ptr %a874 + store { ptr, i64, i64 } %t872, ptr %a875 + call void @finch_str_concat(ptr %a873, ptr %a874, ptr %a875) + %t876 = load { ptr, i64, i64 }, ptr %a873 + store { ptr, i64, i64 } %t876, ptr %a878 + store { ptr, i64, i64 } { ptr @.str.5112, i64 6, i64 0 }, ptr %a879 + call void @finch_str_concat(ptr %a877, ptr %a878, ptr %a879) + store { ptr, i64, i64 } %t876, ptr %a880 + call void @finch_str_drop(ptr %a880) + %t881 = load { ptr, i64, i64 }, ptr %a877 + %t882 = load { ptr, i64, i64 }, ptr %a854 + store { ptr, i64, i64 } %t881, ptr %a884 store { ptr, i64, i64 } %t882, 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 %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 } %t881, ptr %a886 + call void @finch_str_drop(ptr %a886) + %t887 = load { ptr, i64, i64 }, ptr %a883 + store { ptr, i64, i64 } %t887, ptr %a889 + store { ptr, i64, i64 } { ptr @.str.5113, i64 6, i64 0 }, ptr %a890 + call void @finch_str_concat(ptr %a888, ptr %a889, ptr %a890) + store { ptr, i64, i64 } %t887, ptr %a891 + call void @finch_str_drop(ptr %a891) + %t892 = load { ptr, i64, i64 }, ptr %a888 + %t893 = load { ptr, i64, i64 }, ptr %a868 + 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 - 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) + store { ptr, i64, i64 } %t892, ptr %a897 + call void @finch_str_drop(ptr %a897) + %t898 = load { ptr, i64, i64 }, ptr %a894 + store { ptr, i64, i64 } %t898, ptr %a900 + store { ptr, i64, i64 } { ptr @.str.5114, i64 1, i64 0 }, ptr %a901 + call void @finch_str_concat(ptr %a899, ptr %a900, ptr %a901) + store { ptr, i64, i64 } %t898, ptr %a902 + call void @finch_str_drop(ptr %a902) + %t903 = load { ptr, i64, i64 }, ptr %a899 + %t904 = call { ptr, i64, i64 } @finch.gen.op(ptr %t871, { ptr, i64, i64 } %t903) + store { ptr, i64, i64 } %t903, ptr %a905 + call void @finch_str_drop(ptr %a905) + store { ptr, i64, i64 } %t904, ptr %a906 + %t907 = load ptr, ptr %a1 + %t908 = load { ptr, i64, i64 }, ptr %a906 + store { ptr, i64, i64 } { ptr @.str.5115, i64 12, i64 0 }, 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.5116, i64 3, i64 0 }, ptr %a915 + call void @finch_str_concat(ptr %a913, ptr %a914, ptr %a915) + store { ptr, i64, i64 } %t912, ptr %a916 + call void @finch_str_drop(ptr %a916) + %t917 = load { ptr, i64, i64 }, ptr %a913 + %t918 = call { ptr, i64, i64 } @finch.gen.op(ptr %t907, { ptr, i64, i64 } %t917) + store { ptr, i64, i64 } %t917, ptr %a919 + call void @finch_str_drop(ptr %a919) + %t920 = load ptr, ptr %a1 + %t921 = icmp eq ptr %t920, null + br i1 %t921, label %panic7875, label %ok7876 +panic7875: + call void @finch_panic(ptr @.str.5117, i64 4727, ptr @.str.5118) 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 - 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 = 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) +ok7876: + %t922 = getelementptr inbounds %S.gen.Gen, ptr %t920, i32 0, i32 41 + %t923 = load { ptr, i64, i64 }, ptr %t922 + store { ptr, i64, i64 } %t918, ptr %t922 + store { ptr, i64, i64 } %t923, ptr %a924 + call void @finch_str_drop(ptr %a924) + %t925 = load ptr, ptr %a1 + %t926 = load { ptr, i64, i64 }, ptr %a868 + %t927 = call { ptr, i64, i64 } @finch.gen.load(ptr %t925, { ptr, i64, i64 } { ptr @.str.5119, i64 17, i64 0 }, { ptr, i64, i64 } %t926) + %t928 = load ptr, ptr %a1 + %t929 = icmp eq ptr %t928, null + br i1 %t929, label %panic7877, label %ok7878 +panic7877: + call void @finch_panic(ptr @.str.5120, i64 4728, ptr @.str.5121) unreachable -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 +ok7878: + %t930 = getelementptr inbounds %S.gen.Gen, ptr %t928, i32 0, i32 42 + %t931 = load { ptr, i64, i64 }, ptr %t930 + store { ptr, i64, i64 } %t927, ptr %t930 + store { ptr, i64, i64 } %t931, ptr %a932 + call void @finch_str_drop(ptr %a932) + %t933 = load ptr, ptr %a1 + %t934 = load %S.gen.Val, ptr %a826 + call void @finch.gen.release(ptr %t933, %S.gen.Val %t934) + %t935 = load ptr, ptr %a1 + %t936 = load %S.gen.Val, ptr %a844 + call void @finch.gen.release(ptr %t935, %S.gen.Val %t936) + %t937 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5122, i64 4, i64 0 }) + %t938 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t937, 1 + call void @finch_str_drop(ptr %a906) + call void @finch_str_drop(ptr %a868) + call void @finch_str_drop(ptr %a854) + call void @finch_str_drop(ptr %a850) + call void @finch.drop.S_gen_Val(ptr %a844) + call void @finch.drop.S_gen_Val(ptr %a826) + call void @finch_str_drop(ptr %a570) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t938 +endif7874: + %t939 = load ptr, ptr %a1 + %t940 = load { ptr, i64, i64 }, ptr %a850 + store { ptr, i64, i64 } { ptr @.str.5123, i64 31, i64 0 }, ptr %a942 + store { ptr, i64, i64 } %t940, ptr %a943 + call void @finch_str_concat(ptr %a941, ptr %a942, ptr %a943) + %t944 = load { ptr, i64, i64 }, ptr %a941 + store { ptr, i64, i64 } %t944, ptr %a946 + store { ptr, i64, i64 } { ptr @.str.5124, i64 6, i64 0 }, ptr %a947 + call void @finch_str_concat(ptr %a945, ptr %a946, ptr %a947) + store { ptr, i64, i64 } %t944, ptr %a948 + call void @finch_str_drop(ptr %a948) + %t949 = load { ptr, i64, i64 }, ptr %a945 + %t950 = load { ptr, i64, i64 }, ptr %a854 + store { ptr, i64, i64 } %t949, ptr %a952 + store { ptr, i64, i64 } %t950, ptr %a953 + call void @finch_str_concat(ptr %a951, ptr %a952, ptr %a953) + store { ptr, i64, i64 } %t949, ptr %a954 + call void @finch_str_drop(ptr %a954) + %t955 = load { ptr, i64, i64 }, ptr %a951 + store { ptr, i64, i64 } %t955, ptr %a957 + store { ptr, i64, i64 } { ptr @.str.5125, i64 1, i64 0 }, ptr %a958 + call void @finch_str_concat(ptr %a956, ptr %a957, ptr %a958) + store { ptr, i64, i64 } %t955, ptr %a959 + call void @finch_str_drop(ptr %a959) + %t960 = load { ptr, i64, i64 }, ptr %a956 + %t961 = call { ptr, i64, i64 } @finch.gen.op(ptr %t939, { ptr, i64, i64 } %t960) + store { ptr, i64, i64 } %t960, ptr %a962 + call void @finch_str_drop(ptr %a962) + store { ptr, i64, i64 } %t961, ptr %a963 + %t964 = load ptr, ptr %a1 + %t965 = load %S.gen.Val, ptr %a826 + call void @finch.gen.release(ptr %t964, %S.gen.Val %t965) + %t966 = load ptr, ptr %a1 + %t967 = load %S.gen.Val, ptr %a844 + call void @finch.gen.release(ptr %t966, %S.gen.Val %t967) + %t968 = load ptr, ptr %a1 + %t969 = load { ptr, i64, i64 }, ptr %a963 + store { ptr, i64, i64 } { ptr @.str.5126, i64 12, i64 0 }, ptr %a971 + store { ptr, i64, i64 } %t969, ptr %a972 + call void @finch_str_concat(ptr %a970, ptr %a971, ptr %a972) + %t973 = load { ptr, i64, i64 }, ptr %a970 + store { ptr, i64, i64 } %t973, ptr %a975 + store { ptr, i64, i64 } { ptr @.str.5127, i64 3, i64 0 }, 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 = 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) + store { ptr, i64, i64 } %t973, ptr %a977 + call void @finch_str_drop(ptr %a977) + %t978 = load { ptr, i64, i64 }, ptr %a974 + %t979 = call { ptr, i64, i64 } @finch.gen.op(ptr %t968, { ptr, i64, i64 } %t978) + store { ptr, i64, i64 } %t978, ptr %a980 + call void @finch_str_drop(ptr %a980) + %t981 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t979, 0 + %t982 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5128, i64 4, i64 0 }) + %t983 = insertvalue %S.gen.Val %t981, %S.ast.Type %t982, 1 + call void @finch_str_drop(ptr %a963) + call void @finch_str_drop(ptr %a854) + call void @finch_str_drop(ptr %a850) + call void @finch.drop.S_gen_Val(ptr %a844) + call void @finch.drop.S_gen_Val(ptr %a826) + call void @finch_str_drop(ptr %a570) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t983 +endif7863: + %t984 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t984, ptr %a985 + store { ptr, i64, i64 } { ptr @.str.5129, i64 11, i64 0 }, ptr %a986 + %t987 = call i32 @finch_str_eq(ptr %a985, ptr %a986) + %t988 = icmp ne i32 %t987, 0 + br i1 %t988, label %then7879, label %endif7881 +then7879: + %t989 = load ptr, ptr %a1 + %t990 = load %S.ast.Node, ptr %a2 + %t991 = load { ptr, i64, i64 }, ptr %a8 + call void @finch.gen.checkArgs(ptr %t989, %S.ast.Node %t990, i64 0, i64 1, { ptr, i64, i64 } %t991) + %t992 = load ptr, ptr %a1 + %t993 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t994 = load { ptr, i64, i64 }, ptr %t993 + %t995 = extractvalue { ptr, i64, i64 } %t994, 1 + %t996 = icmp uge i64 0, %t995 + br i1 %t996, label %range7882, label %inrange7883 +range7882: + call void @finch_panic_index(ptr @.str.5130, i64 4740, i64 0, i64 %t995) 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 = 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: +inrange7883: + %t997 = extractvalue { ptr, i64, i64 } %t994, 0 + %t998 = getelementptr inbounds %S.ast.Node, ptr %t997, i64 0 + %t999 = load %S.ast.Node, ptr %t998 + %t1000 = call %S.gen.Val @finch.gen.strArg(ptr %t992, %S.ast.Node %t999, { ptr, i64, i64 } { ptr @.str.5131, i64 13, i64 0 }) + store %S.gen.Val %t1000, ptr %a1001 + %t1002 = load ptr, ptr %a1 + %t1003 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t1002) + store { ptr, i64, i64 } %t1003, ptr %a1004 + %t1005 = load ptr, ptr %a1 + %t1006 = load { ptr, i64, i64 }, ptr %a1004 + store { ptr, i64, i64 } { ptr @.str.5132, i64 30, 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.5133, i64 6, i64 0 }, ptr %a1013 + call void @finch_str_concat(ptr %a1011, ptr %a1012, ptr %a1013) + store { ptr, i64, i64 } %t1010, ptr %a1014 + call void @finch_str_drop(ptr %a1014) + %t1015 = load { ptr, i64, i64 }, ptr %a1011 + %t1016 = load ptr, ptr %a1 + %t1017 = load %S.gen.Val, ptr %a1001 + %t1018 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t1016, %S.gen.Val %t1017) + store { ptr, i64, i64 } %t1015, ptr %a1020 + store { ptr, i64, i64 } %t1018, ptr %a1021 + call void @finch_str_concat(ptr %a1019, ptr %a1020, ptr %a1021) + store { ptr, i64, i64 } %t1015, ptr %a1022 + call void @finch_str_drop(ptr %a1022) + store { ptr, i64, i64 } %t1018, ptr %a1023 + call void @finch_str_drop(ptr %a1023) + %t1024 = load { ptr, i64, i64 }, ptr %a1019 + store { ptr, i64, i64 } %t1024, ptr %a1026 + store { ptr, i64, i64 } { ptr @.str.5134, i64 1, i64 0 }, ptr %a1027 + call void @finch_str_concat(ptr %a1025, ptr %a1026, ptr %a1027) + store { ptr, i64, i64 } %t1024, ptr %a1028 + call void @finch_str_drop(ptr %a1028) + %t1029 = load { ptr, i64, i64 }, ptr %a1025 + call void @finch.gen.emit(ptr %t1005, { ptr, i64, i64 } %t1029) + store { ptr, i64, i64 } %t1029, ptr %a1030 + call void @finch_str_drop(ptr %a1030) + %t1031 = load ptr, ptr %a1 + %t1032 = icmp eq ptr %t1031, null + br i1 %t1032, label %panic7884, label %ok7885 +panic7884: + call void @finch_panic(ptr @.str.5135, i64 4743, ptr @.str.5136) + unreachable +ok7885: + %t1033 = getelementptr inbounds %S.gen.Gen, ptr %t1031, i32 0, i32 40 + %t1034 = load { ptr, i64, i64 }, ptr %t1033 + %t1035 = load %S.ast.Node, ptr %a2 + %t1036 = call { ptr, i64, i64 } @finch.gen.nodeKey(%S.ast.Node %t1035) + store { ptr, i64, i64 } %t1034, ptr %a1037 + store { ptr, i64, i64 } %t1036, ptr %a1038 + %t1039 = call i32 @finch_str_eq(ptr %a1037, ptr %a1038) + %t1040 = icmp ne i32 %t1039, 0 + store { ptr, i64, i64 } %t1036, ptr %a1041 + call void @finch_str_drop(ptr %a1041) + br i1 %t1040, label %then7886, label %endif7888 +then7886: + %t1042 = load ptr, ptr %a1 + %t1043 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t1042, { ptr, i64, i64 } { ptr @.str.5137, i64 17, i64 0 }) + store { ptr, i64, i64 } %t1043, ptr %a1044 + %t1045 = load ptr, ptr %a1 + %t1046 = load { ptr, i64, i64 }, ptr %a1044 + call void @finch.gen.store(ptr %t1045, { ptr, i64, i64 } { ptr @.str.5138, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5139, i64 15, i64 0 }, { ptr, i64, i64 } %t1046) %t1047 = load ptr, ptr %a1 - %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) + %t1048 = load { ptr, i64, i64 }, ptr %a1004 + store { ptr, i64, i64 } { ptr @.str.5140, i64 36, 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.5141, i64 6, i64 0 }, ptr %a1055 + call void @finch_str_concat(ptr %a1053, ptr %a1054, ptr %a1055) + store { ptr, i64, i64 } %t1052, ptr %a1056 + call void @finch_str_drop(ptr %a1056) + %t1057 = load { ptr, i64, i64 }, ptr %a1053 + %t1058 = load { ptr, i64, i64 }, ptr %a1044 + store { ptr, i64, i64 } %t1057, ptr %a1060 + store { ptr, i64, i64 } %t1058, ptr %a1061 + call void @finch_str_concat(ptr %a1059, ptr %a1060, ptr %a1061) + store { ptr, i64, i64 } %t1057, ptr %a1062 + call void @finch_str_drop(ptr %a1062) + %t1063 = load { ptr, i64, i64 }, ptr %a1059 + store { ptr, i64, i64 } %t1063, ptr %a1065 + store { ptr, i64, i64 } { ptr @.str.5142, i64 1, i64 0 }, ptr %a1066 + call void @finch_str_concat(ptr %a1064, ptr %a1065, ptr %a1066) + store { ptr, i64, i64 } %t1063, ptr %a1067 + call void @finch_str_drop(ptr %a1067) + %t1068 = load { ptr, i64, i64 }, ptr %a1064 + %t1069 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1047, { ptr, i64, i64 } %t1068) + store { ptr, i64, i64 } %t1068, ptr %a1070 + call void @finch_str_drop(ptr %a1070) + store { ptr, i64, i64 } %t1069, ptr %a1071 + %t1072 = load ptr, ptr %a1 + %t1073 = load { ptr, i64, i64 }, ptr %a1071 + store { ptr, i64, i64 } { ptr @.str.5143, i64 12, i64 0 }, ptr %a1075 + store { ptr, i64, i64 } %t1073, ptr %a1076 + call void @finch_str_concat(ptr %a1074, ptr %a1075, ptr %a1076) + %t1077 = load { ptr, i64, i64 }, ptr %a1074 + store { ptr, i64, i64 } %t1077, ptr %a1079 + store { ptr, i64, i64 } { ptr @.str.5144, i64 3, i64 0 }, ptr %a1080 + call void @finch_str_concat(ptr %a1078, ptr %a1079, ptr %a1080) + store { ptr, i64, i64 } %t1077, ptr %a1081 + call void @finch_str_drop(ptr %a1081) + %t1082 = load { ptr, i64, i64 }, ptr %a1078 + %t1083 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1072, { ptr, i64, i64 } %t1082) + store { ptr, i64, i64 } %t1082, ptr %a1084 + call void @finch_str_drop(ptr %a1084) + %t1085 = load ptr, ptr %a1 + %t1086 = icmp eq ptr %t1085, null + br i1 %t1086, label %panic7889, label %ok7890 +panic7889: + call void @finch_panic(ptr @.str.5145, i64 4747, ptr @.str.5146) unreachable -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) +ok7890: + %t1087 = getelementptr inbounds %S.gen.Gen, ptr %t1085, i32 0, i32 41 + %t1088 = load { ptr, i64, i64 }, ptr %t1087 + store { ptr, i64, i64 } %t1083, ptr %t1087 + store { ptr, i64, i64 } %t1088, ptr %a1089 + call void @finch_str_drop(ptr %a1089) + %t1090 = load ptr, ptr %a1 + %t1091 = load { ptr, i64, i64 }, ptr %a1044 + %t1092 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1090, { ptr, i64, i64 } { ptr @.str.5147, i64 17, i64 0 }, { ptr, i64, i64 } %t1091) + %t1093 = load ptr, ptr %a1 + %t1094 = icmp eq ptr %t1093, null + br i1 %t1094, label %panic7891, label %ok7892 +panic7891: + call void @finch_panic(ptr @.str.5148, i64 4748, ptr @.str.5149) 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) +ok7892: + %t1095 = getelementptr inbounds %S.gen.Gen, ptr %t1093, i32 0, i32 42 + %t1096 = load { ptr, i64, i64 }, ptr %t1095 + store { ptr, i64, i64 } %t1092, ptr %t1095 + store { ptr, i64, i64 } %t1096, ptr %a1097 + call void @finch_str_drop(ptr %a1097) + %t1098 = load ptr, ptr %a1 + %t1099 = load { ptr, i64, i64 }, ptr %a1004 + %t1100 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5150, i64 3, i64 0 }) + call void @finch.gen.dropAt(ptr %t1098, { ptr, i64, i64 } %t1099, %S.ast.Type %t1100) + store %S.ast.Type %t1100, ptr %a1101 + call void @finch.drop.S_ast_Type(ptr %a1101) + %t1102 = load ptr, ptr %a1 + %t1103 = load %S.gen.Val, ptr %a1001 + call void @finch.gen.release(ptr %t1102, %S.gen.Val %t1103) + %t1104 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5151, i64 4, i64 0 }) + %t1105 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t1104, 1 + call void @finch_str_drop(ptr %a1071) + call void @finch_str_drop(ptr %a1044) + call void @finch_str_drop(ptr %a1004) + call void @finch.drop.S_gen_Val(ptr %a1001) + call void @finch_str_drop(ptr %a570) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t1105 +endif7888: + %t1106 = load ptr, ptr %a1 + %t1107 = load { ptr, i64, i64 }, ptr %a1004 + store { ptr, i64, i64 } { ptr @.str.5152, i64 32, i64 0 }, ptr %a1109 + store { ptr, i64, i64 } %t1107, ptr %a1110 + call void @finch_str_concat(ptr %a1108, ptr %a1109, ptr %a1110) + %t1111 = load { ptr, i64, i64 }, ptr %a1108 + store { ptr, i64, i64 } %t1111, ptr %a1113 + store { ptr, i64, i64 } { ptr @.str.5153, i64 1, i64 0 }, ptr %a1114 + call void @finch_str_concat(ptr %a1112, ptr %a1113, ptr %a1114) + store { ptr, i64, i64 } %t1111, ptr %a1115 + call void @finch_str_drop(ptr %a1115) + %t1116 = load { ptr, i64, i64 }, ptr %a1112 + %t1117 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1106, { ptr, i64, i64 } %t1116) + store { ptr, i64, i64 } %t1116, ptr %a1118 + call void @finch_str_drop(ptr %a1118) + store { ptr, i64, i64 } %t1117, ptr %a1119 + %t1120 = load ptr, ptr %a1 + %t1121 = load { ptr, i64, i64 }, ptr %a1004 + %t1122 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5154, i64 3, i64 0 }) + call void @finch.gen.dropAt(ptr %t1120, { ptr, i64, i64 } %t1121, %S.ast.Type %t1122) + store %S.ast.Type %t1122, ptr %a1123 + call void @finch.drop.S_ast_Type(ptr %a1123) + %t1124 = load ptr, ptr %a1 + %t1125 = load %S.gen.Val, ptr %a1001 + call void @finch.gen.release(ptr %t1124, %S.gen.Val %t1125) + %t1126 = load ptr, ptr %a1 + %t1127 = load { ptr, i64, i64 }, ptr %a1119 + store { ptr, i64, i64 } { ptr @.str.5155, i64 12, 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.5156, i64 3, i64 0 }, ptr %a1134 + call void @finch_str_concat(ptr %a1132, ptr %a1133, ptr %a1134) + store { ptr, i64, i64 } %t1131, ptr %a1135 + call void @finch_str_drop(ptr %a1135) + %t1136 = load { ptr, i64, i64 }, ptr %a1132 + %t1137 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1126, { ptr, i64, i64 } %t1136) + store { ptr, i64, i64 } %t1136, ptr %a1138 + call void @finch_str_drop(ptr %a1138) + %t1139 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1137, 0 + %t1140 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5157, i64 4, i64 0 }) + %t1141 = insertvalue %S.gen.Val %t1139, %S.ast.Type %t1140, 1 + call void @finch_str_drop(ptr %a1119) + call void @finch_str_drop(ptr %a1004) + call void @finch.drop.S_gen_Val(ptr %a1001) + call void @finch_str_drop(ptr %a570) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t1141 +endif7881: + %t1142 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t1142, ptr %a1143 + store { ptr, i64, i64 } { ptr @.str.5158, i64 5, i64 0 }, ptr %a1144 + %t1145 = call i32 @finch_str_eq(ptr %a1143, ptr %a1144) + %t1146 = icmp ne i32 %t1145, 0 + br i1 %t1146, label %then7893, label %endif7895 +then7893: + %t1147 = load ptr, ptr %a1 + %t1148 = load %S.ast.Node, ptr %a2 + %t1149 = load { ptr, i64, i64 }, ptr %a8 + call void @finch.gen.checkArgs(ptr %t1147, %S.ast.Node %t1148, i64 0, i64 1, { ptr, i64, i64 } %t1149) + %t1150 = load ptr, ptr %a1 + %t1151 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t1152 = load { ptr, i64, i64 }, ptr %t1151 + %t1153 = extractvalue { ptr, i64, i64 } %t1152, 1 + %t1154 = icmp uge i64 0, %t1153 + br i1 %t1154, label %range7896, label %inrange7897 +range7896: + call void @finch_panic_index(ptr @.str.5159, i64 4760, i64 0, i64 %t1153) 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.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) +inrange7897: + %t1155 = extractvalue { ptr, i64, i64 } %t1152, 0 + %t1156 = getelementptr inbounds %S.ast.Node, ptr %t1155, i64 0 + %t1157 = load %S.ast.Node, ptr %t1156 + %t1158 = call %S.gen.Val @finch.gen.strArg(ptr %t1150, %S.ast.Node %t1157, { ptr, i64, i64 } { ptr @.str.5160, i64 11, i64 0 }) + store %S.gen.Val %t1158, ptr %a1159 + %t1160 = load ptr, ptr %a1 + %t1161 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t1160) + store { ptr, i64, i64 } %t1161, ptr %a1162 + %t1163 = load ptr, ptr %a1 + %t1164 = load { ptr, i64, i64 }, ptr %a1162 + store { ptr, i64, i64 } { ptr @.str.5161, i64 30, i64 0 }, ptr %a1166 + store { ptr, i64, i64 } %t1164, ptr %a1167 + call void @finch_str_concat(ptr %a1165, ptr %a1166, ptr %a1167) + %t1168 = load { ptr, i64, i64 }, ptr %a1165 + store { ptr, i64, i64 } %t1168, ptr %a1170 + store { ptr, i64, i64 } { ptr @.str.5162, i64 6, i64 0 }, ptr %a1171 + call void @finch_str_concat(ptr %a1169, ptr %a1170, ptr %a1171) + store { ptr, i64, i64 } %t1168, ptr %a1172 + call void @finch_str_drop(ptr %a1172) + %t1173 = load { ptr, i64, i64 }, ptr %a1169 + %t1174 = load ptr, ptr %a1 + %t1175 = load %S.gen.Val, ptr %a1159 + %t1176 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t1174, %S.gen.Val %t1175) + store { ptr, i64, i64 } %t1173, ptr %a1178 + store { ptr, i64, i64 } %t1176, ptr %a1179 + call void @finch_str_concat(ptr %a1177, ptr %a1178, ptr %a1179) + store { ptr, i64, i64 } %t1173, ptr %a1180 + call void @finch_str_drop(ptr %a1180) + store { ptr, i64, i64 } %t1176, ptr %a1181 + call void @finch_str_drop(ptr %a1181) + %t1182 = load { ptr, i64, i64 }, ptr %a1177 + store { ptr, i64, i64 } %t1182, ptr %a1184 + store { ptr, i64, i64 } { ptr @.str.5163, i64 1, i64 0 }, ptr %a1185 + call void @finch_str_concat(ptr %a1183, ptr %a1184, ptr %a1185) + store { ptr, i64, i64 } %t1182, ptr %a1186 + call void @finch_str_drop(ptr %a1186) + %t1187 = load { ptr, i64, i64 }, ptr %a1183 + call void @finch.gen.emit(ptr %t1163, { ptr, i64, i64 } %t1187) + store { ptr, i64, i64 } %t1187, ptr %a1188 + call void @finch_str_drop(ptr %a1188) + %t1189 = load ptr, ptr %a1 + %t1190 = load { ptr, i64, i64 }, ptr %a1162 + store { ptr, i64, i64 } { ptr @.str.5164, i64 26, i64 0 }, ptr %a1192 + store { ptr, i64, i64 } %t1190, ptr %a1193 + call void @finch_str_concat(ptr %a1191, ptr %a1192, ptr %a1193) + %t1194 = load { ptr, i64, i64 }, ptr %a1191 + store { ptr, i64, i64 } %t1194, ptr %a1196 + store { ptr, i64, i64 } { ptr @.str.5165, i64 1, i64 0 }, ptr %a1197 + call void @finch_str_concat(ptr %a1195, ptr %a1196, ptr %a1197) + store { ptr, i64, i64 } %t1194, ptr %a1198 + call void @finch_str_drop(ptr %a1198) + %t1199 = load { ptr, i64, i64 }, ptr %a1195 + %t1200 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1189, { ptr, i64, i64 } %t1199) + store { ptr, i64, i64 } %t1199, ptr %a1201 + call void @finch_str_drop(ptr %a1201) + store { ptr, i64, i64 } %t1200, ptr %a1202 + %t1203 = load ptr, ptr %a1 + %t1204 = load { ptr, i64, i64 }, ptr %a1162 + %t1205 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5166, i64 3, i64 0 }) + call void @finch.gen.dropAt(ptr %t1203, { ptr, i64, i64 } %t1204, %S.ast.Type %t1205) + store %S.ast.Type %t1205, ptr %a1206 + call void @finch.drop.S_ast_Type(ptr %a1206) + %t1207 = load ptr, ptr %a1 + %t1208 = load %S.gen.Val, ptr %a1159 + call void @finch.gen.release(ptr %t1207, %S.gen.Val %t1208) + %t1209 = load { ptr, i64, i64 }, ptr %a1202 + store { ptr, i64, i64 } %t1209, ptr %a1210 + call void @finch_str_copy(ptr %a1211, ptr %a1210) + %t1212 = load { ptr, i64, i64 }, ptr %a1211 + %t1213 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1212, 0 + %t1214 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5167, i64 3, i64 0 }) + %t1215 = insertvalue %S.gen.Val %t1213, %S.ast.Type %t1214, 1 + call void @finch_str_drop(ptr %a1202) + call void @finch_str_drop(ptr %a1162) + call void @finch.drop.S_gen_Val(ptr %a1159) + call void @finch_str_drop(ptr %a570) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t1215 +endif7895: + %t1216 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t1216, ptr %a1217 + store { ptr, i64, i64 } { ptr @.str.5168, i64 4, i64 0 }, ptr %a1218 + %t1219 = call i32 @finch_str_eq(ptr %a1217, ptr %a1218) + %t1220 = icmp ne i32 %t1219, 0 + br i1 %t1220, label %then7898, label %endif7900 +then7898: + %t1221 = load ptr, ptr %a1 + %t1222 = load %S.ast.Node, ptr %a2 + %t1223 = load { ptr, i64, i64 }, ptr %a8 + call void @finch.gen.checkArgs(ptr %t1221, %S.ast.Node %t1222, i64 0, i64 1, { ptr, i64, i64 } %t1223) + %t1224 = load ptr, ptr %a1 + %t1225 = load ptr, ptr %a1 + %t1226 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t1227 = load { ptr, i64, i64 }, ptr %t1226 + %t1228 = extractvalue { ptr, i64, i64 } %t1227, 1 + %t1229 = icmp uge i64 0, %t1228 + br i1 %t1229, label %range7901, label %inrange7902 +range7901: + call void @finch_panic_index(ptr @.str.5169, i64 4770, i64 0, i64 %t1228) unreachable -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 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) +inrange7902: + %t1230 = extractvalue { ptr, i64, i64 } %t1227, 0 + %t1231 = getelementptr inbounds %S.ast.Node, ptr %t1230, i64 0 + %t1232 = load %S.ast.Node, ptr %t1231 + %t1233 = call %S.gen.Val @finch.gen.expr(ptr %t1225, %S.ast.Node %t1232) + %t1234 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5170, i64 3, i64 0 }) + %t1235 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t1236 = load { ptr, i64, i64 }, ptr %t1235 + %t1237 = extractvalue { ptr, i64, i64 } %t1236, 1 + %t1238 = icmp uge i64 0, %t1237 + br i1 %t1238, label %range7903, label %inrange7904 +range7903: + call void @finch_panic_index(ptr @.str.5171, i64 4770, i64 0, i64 %t1237) unreachable -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 = 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) +inrange7904: + %t1239 = extractvalue { ptr, i64, i64 } %t1236, 0 + %t1240 = getelementptr inbounds %S.ast.Node, ptr %t1239, i64 0 + %t1241 = load %S.ast.Node, ptr %t1240 + %t1242 = call %S.gen.Val @finch.gen.coerce(ptr %t1224, %S.gen.Val %t1233, %S.ast.Type %t1234, %S.ast.Node %t1241, { ptr, i64, i64 } { ptr @.str.5172, i64 13, i64 0 }) + store %S.gen.Val %t1233, ptr %a1243 + call void @finch.drop.S_gen_Val(ptr %a1243) + store %S.ast.Type %t1234, ptr %a1244 + call void @finch.drop.S_ast_Type(ptr %a1244) + store %S.gen.Val %t1242, ptr %a1245 + %t1246 = load ptr, ptr %a1 + %t1247 = getelementptr inbounds %S.gen.Val, ptr %a1245, i32 0, i32 0 + %t1248 = load { ptr, i64, i64 }, ptr %t1247 + store { ptr, i64, i64 } { ptr @.str.5173, i64 10, i64 0 }, ptr %a1250 + store { ptr, i64, i64 } %t1248, ptr %a1251 + call void @finch_str_concat(ptr %a1249, ptr %a1250, ptr %a1251) + %t1252 = load { ptr, i64, i64 }, ptr %a1249 + store { ptr, i64, i64 } %t1252, ptr %a1254 + store { ptr, i64, i64 } { ptr @.str.5174, i64 7, i64 0 }, ptr %a1255 + call void @finch_str_concat(ptr %a1253, ptr %a1254, ptr %a1255) + store { ptr, i64, i64 } %t1252, ptr %a1256 + call void @finch_str_drop(ptr %a1256) + %t1257 = load { ptr, i64, i64 }, ptr %a1253 + %t1258 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1246, { ptr, i64, i64 } %t1257) + store { ptr, i64, i64 } %t1257, ptr %a1259 + call void @finch_str_drop(ptr %a1259) + store { ptr, i64, i64 } %t1258, ptr %a1260 + %t1261 = load ptr, ptr %a1 + %t1262 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1261, { ptr, i64, i64 } { ptr @.str.5175, i64 26, i64 0 }) + store { ptr, i64, i64 } %t1262, ptr %a1263 + %t1264 = load ptr, ptr %a1 + %t1265 = load { ptr, i64, i64 }, ptr %a1260 + store { ptr, i64, i64 } { ptr @.str.5176, i64 20, i64 0 }, ptr %a1267 + store { ptr, i64, i64 } %t1265, ptr %a1268 + call void @finch_str_concat(ptr %a1266, ptr %a1267, ptr %a1268) + %t1269 = load { ptr, i64, i64 }, ptr %a1266 + store { ptr, i64, i64 } %t1269, ptr %a1271 + store { ptr, i64, i64 } { ptr @.str.5177, i64 1, i64 0 }, ptr %a1272 + call void @finch_str_concat(ptr %a1270, ptr %a1271, ptr %a1272) + store { ptr, i64, i64 } %t1269, ptr %a1273 + call void @finch_str_drop(ptr %a1273) + %t1274 = load { ptr, i64, i64 }, ptr %a1270 + call void @finch.gen.emit(ptr %t1264, { ptr, i64, i64 } %t1274) + store { ptr, i64, i64 } %t1274, ptr %a1275 + call void @finch_str_drop(ptr %a1275) + %t1276 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5178, i64 4, i64 0 }) + %t1277 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t1276, 1 + call void @finch_str_drop(ptr %a1263) + call void @finch_str_drop(ptr %a1260) + call void @finch.drop.S_gen_Val(ptr %a1245) + call void @finch_str_drop(ptr %a570) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t1277 +endif7900: + %t1278 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t1278, ptr %a1279 + store { ptr, i64, i64 } { ptr @.str.5179, i64 5, i64 0 }, ptr %a1280 + %t1281 = call i32 @finch_str_eq(ptr %a1279, ptr %a1280) + %t1282 = icmp ne i32 %t1281, 0 + br i1 %t1282, label %then7905, label %endif7907 +then7905: + %t1283 = load ptr, ptr %a1 + %t1284 = call %S.gen.Val @finch.gen.strConst(ptr %t1283, { ptr, i64, i64 } { ptr @.str.5180, i64 0, i64 0 }) + store %S.gen.Val %t1284, ptr %a1285 + %t1286 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t1287 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1286, i32 0, i32 1 + %t1288 = load i64, ptr %t1287 + %t1289 = icmp sgt i64 %t1288, 0 + br i1 %t1289, label %then7908, label %endif7910 +then7908: + %t1290 = load ptr, ptr %a1 + %t1291 = load %S.ast.Node, ptr %a2 + %t1292 = load { ptr, i64, i64 }, ptr %a8 + call void @finch.gen.checkArgs(ptr %t1290, %S.ast.Node %t1291, i64 0, i64 1, { ptr, i64, i64 } %t1292) + %t1293 = load ptr, ptr %a1 + %t1294 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t1295 = load { ptr, i64, i64 }, ptr %t1294 + %t1296 = extractvalue { ptr, i64, i64 } %t1295, 1 + %t1297 = icmp uge i64 0, %t1296 + br i1 %t1297, label %range7911, label %inrange7912 +range7911: + call void @finch_panic_index(ptr @.str.5181, i64 4780, i64 0, i64 %t1296) unreachable -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 -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 -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 +inrange7912: + %t1298 = extractvalue { ptr, i64, i64 } %t1295, 0 + %t1299 = getelementptr inbounds %S.ast.Node, ptr %t1298, i64 0 + %t1300 = load %S.ast.Node, ptr %t1299 + %t1301 = call %S.gen.Val @finch.gen.strArg(ptr %t1293, %S.ast.Node %t1300, { ptr, i64, i64 } { ptr @.str.5182, i64 12, i64 0 }) + %t1302 = load %S.gen.Val, ptr %a1285 + store %S.gen.Val %t1301, ptr %a1285 + store %S.gen.Val %t1302, ptr %a1303 + call void @finch.drop.S_gen_Val(ptr %a1303) + br label %endif7910 +endif7910: + %t1304 = load ptr, ptr %a1 + %t1305 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t1304) + store { ptr, i64, i64 } %t1305, ptr %a1306 + %t1307 = load ptr, ptr %a1 + %t1308 = load { ptr, i64, i64 }, ptr %a1306 + store { ptr, i64, i64 } { ptr @.str.5183, i64 27, i64 0 }, ptr %a1310 + store { ptr, i64, i64 } %t1308, ptr %a1311 + call void @finch_str_concat(ptr %a1309, ptr %a1310, ptr %a1311) + %t1312 = load { ptr, i64, i64 }, ptr %a1309 + store { ptr, i64, i64 } %t1312, ptr %a1314 + store { ptr, i64, i64 } { ptr @.str.5184, i64 6, i64 0 }, ptr %a1315 + call void @finch_str_concat(ptr %a1313, ptr %a1314, ptr %a1315) + store { ptr, i64, i64 } %t1312, ptr %a1316 + call void @finch_str_drop(ptr %a1316) + %t1317 = load { ptr, i64, i64 }, ptr %a1313 + %t1318 = load ptr, ptr %a1 + %t1319 = load %S.gen.Val, ptr %a1285 + %t1320 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t1318, %S.gen.Val %t1319) + store { ptr, i64, i64 } %t1317, 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 %panic7564, label %ok7565 -panic7564: - call void @finch_panic(ptr @.str.5035, i64 4493, ptr @.str.5036) + store { ptr, i64, i64 } %t1317, ptr %a1324 + call void @finch_str_drop(ptr %a1324) + store { ptr, i64, i64 } %t1320, ptr %a1325 + call void @finch_str_drop(ptr %a1325) + %t1326 = load { ptr, i64, i64 }, ptr %a1321 + store { ptr, i64, i64 } %t1326, ptr %a1328 + store { ptr, i64, i64 } { ptr @.str.5185, i64 1, i64 0 }, ptr %a1329 + call void @finch_str_concat(ptr %a1327, ptr %a1328, ptr %a1329) + store { ptr, i64, i64 } %t1326, ptr %a1330 + call void @finch_str_drop(ptr %a1330) + %t1331 = load { ptr, i64, i64 }, ptr %a1327 + call void @finch.gen.emit(ptr %t1307, { ptr, i64, i64 } %t1331) + store { ptr, i64, i64 } %t1331, ptr %a1332 + call void @finch_str_drop(ptr %a1332) + %t1333 = load ptr, ptr %a1 + %t1334 = load %S.gen.Val, ptr %a1285 + call void @finch.gen.release(ptr %t1333, %S.gen.Val %t1334) + %t1335 = load ptr, ptr %a1 + %t1336 = load { ptr, i64, i64 }, ptr %a1306 + %t1337 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1335, { ptr, i64, i64 } { ptr @.str.5186, i64 17, i64 0 }, { ptr, i64, i64 } %t1336) + %t1338 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1337, 0 + %t1339 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5187, i64 3, i64 0 }) + %t1340 = insertvalue %S.gen.Val %t1338, %S.ast.Type %t1339, 1 + %t1341 = insertvalue %S.gen.Val %t1340, i1 true, 2 + call void @finch_str_drop(ptr %a1306) + call void @finch.drop.S_gen_Val(ptr %a1285) + call void @finch_str_drop(ptr %a570) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t1341 +endif7907: + %t1342 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t1342, ptr %a1343 + store { ptr, i64, i64 } { ptr @.str.5188, i64 3, i64 0 }, ptr %a1344 + %t1345 = call i32 @finch_str_eq(ptr %a1343, ptr %a1344) + %t1346 = icmp ne i32 %t1345, 0 + br i1 %t1346, label %then7913, label %endif7915 +then7913: + %t1347 = load ptr, ptr %a1 + %t1348 = load %S.ast.Node, ptr %a2 + %t1349 = load { ptr, i64, i64 }, ptr %a8 + call void @finch.gen.checkArgs(ptr %t1347, %S.ast.Node %t1348, i64 0, i64 1, { ptr, i64, i64 } %t1349) + %t1350 = load ptr, ptr %a1 + %t1351 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t1352 = load { ptr, i64, i64 }, ptr %t1351 + %t1353 = extractvalue { ptr, i64, i64 } %t1352, 1 + %t1354 = icmp uge i64 0, %t1353 + br i1 %t1354, label %range7916, label %inrange7917 +range7916: + call void @finch_panic_index(ptr @.str.5189, i64 4789, i64 0, i64 %t1353) unreachable -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 = 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 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.Type, ptr %a1361, i32 0, i32 2 - %t1367 = load { ptr, i64, i64 }, ptr %t1366 - %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) +inrange7917: + %t1355 = extractvalue { ptr, i64, i64 } %t1352, 0 + %t1356 = getelementptr inbounds %S.ast.Node, ptr %t1355, i64 0 + %t1357 = load %S.ast.Node, ptr %t1356 + %t1358 = call %S.gen.Val @finch.gen.expr(ptr %t1350, %S.ast.Node %t1357) + store %S.gen.Val %t1358, ptr %a1359 + %t1360 = load ptr, ptr %a1 + %t1361 = load ptr, ptr %a1 + %t1362 = getelementptr inbounds %S.gen.Val, ptr %a1359, i32 0, i32 1 + %t1363 = load %S.ast.Type, ptr %t1362 + %t1364 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t1361, %S.ast.Type %t1363) + store { ptr, i64, i64 } { ptr @.str.5190, i64 26, i64 0 }, ptr %a1366 + store { ptr, i64, i64 } %t1364, ptr %a1367 + call void @finch_str_concat(ptr %a1365, ptr %a1366, ptr %a1367) + store { ptr, i64, i64 } %t1364, ptr %a1368 + call void @finch_str_drop(ptr %a1368) + %t1369 = load { ptr, i64, i64 }, ptr %a1365 + store { ptr, i64, i64 } %t1369, ptr %a1371 + store { ptr, i64, i64 } { ptr @.str.5191, i64 1, i64 0 }, ptr %a1372 + call void @finch_str_concat(ptr %a1370, ptr %a1371, ptr %a1372) + store { ptr, i64, i64 } %t1369, ptr %a1373 + call void @finch_str_drop(ptr %a1373) + %t1374 = load { ptr, i64, i64 }, ptr %a1370 + %t1375 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1360, { ptr, i64, i64 } %t1374) + store { ptr, i64, i64 } %t1374, ptr %a1376 + call void @finch_str_drop(ptr %a1376) + store { ptr, i64, i64 } %t1375, ptr %a1377 + %t1378 = load ptr, ptr %a1 + %t1379 = load ptr, ptr %a1 + %t1380 = getelementptr inbounds %S.gen.Val, ptr %a1359, i32 0, i32 1 + %t1381 = load %S.ast.Type, ptr %t1380 + %t1382 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t1379, %S.ast.Type %t1381) + %t1383 = load ptr, ptr %a1 + %t1384 = load %S.gen.Val, ptr %a1359 + %t1385 = call { ptr, i64, i64 } @finch.gen.own(ptr %t1383, %S.gen.Val %t1384) + %t1386 = load { ptr, i64, i64 }, ptr %a1377 + call void @finch.gen.store(ptr %t1378, { ptr, i64, i64 } %t1382, { ptr, i64, i64 } %t1385, { ptr, i64, i64 } %t1386) + store { ptr, i64, i64 } %t1382, ptr %a1387 + call void @finch_str_drop(ptr %a1387) + store { ptr, i64, i64 } %t1385, ptr %a1388 + call void @finch_str_drop(ptr %a1388) + %t1389 = load { ptr, i64, i64 }, ptr %a1377 + store { ptr, i64, i64 } %t1389, ptr %a1390 + call void @finch_str_copy(ptr %a1391, ptr %a1390) + %t1392 = load { ptr, i64, i64 }, ptr %a1391 + %t1393 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1392, 0 + %t1394 = getelementptr inbounds %S.gen.Val, ptr %a1359, i32 0, i32 1 + %t1395 = load %S.ast.Type, ptr %t1394 + %t1396 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t1395) + %t1397 = insertvalue %S.gen.Val %t1393, %S.ast.Type %t1396, 1 + call void @finch_str_drop(ptr %a1377) + call void @finch.drop.S_gen_Val(ptr %a1359) + call void @finch_str_drop(ptr %a570) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t1397 +endif7915: + %t1398 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t1398, ptr %a1399 + store { ptr, i64, i64 } { ptr @.str.5192, i64 4, i64 0 }, ptr %a1400 + %t1401 = call i32 @finch_str_eq(ptr %a1399, ptr %a1400) + %t1402 = icmp ne i32 %t1401, 0 + br i1 %t1402, label %then7918, label %endif7920 +then7918: + %t1403 = load ptr, ptr %a1 + %t1404 = load %S.ast.Node, ptr %a2 + %t1405 = load { ptr, i64, i64 }, ptr %a8 + call void @finch.gen.checkArgs(ptr %t1403, %S.ast.Node %t1404, i64 0, i64 1, { ptr, i64, i64 } %t1405) + %t1406 = load ptr, ptr %a1 + %t1407 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t1408 = load { ptr, i64, i64 }, ptr %t1407 + %t1409 = extractvalue { ptr, i64, i64 } %t1408, 1 + %t1410 = icmp uge i64 0, %t1409 + br i1 %t1410, label %range7921, label %inrange7922 +range7921: + call void @finch_panic_index(ptr @.str.5193, i64 4796, i64 0, i64 %t1409) unreachable -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) +inrange7922: + %t1411 = extractvalue { ptr, i64, i64 } %t1408, 0 + %t1412 = getelementptr inbounds %S.ast.Node, ptr %t1411, i64 0 + %t1413 = load %S.ast.Node, ptr %t1412 + %t1414 = call %S.gen.Val @finch.gen.expr(ptr %t1406, %S.ast.Node %t1413) + store %S.gen.Val %t1414, ptr %a1415 + %t1416 = getelementptr inbounds %S.gen.Val, ptr %a1415, i32 0, i32 1 + %t1417 = getelementptr inbounds %S.ast.Type, ptr %t1416, i32 0, i32 0 + %t1418 = load { ptr, i64, i64 }, ptr %t1417 + store { ptr, i64, i64 } %t1418, ptr %a1419 + store { ptr, i64, i64 } { ptr @.str.5194, i64 3, i64 0 }, ptr %a1420 + %t1421 = call i32 @finch_str_eq(ptr %a1419, ptr %a1420) + %t1422 = icmp eq i32 %t1421, 0 + br i1 %t1422, label %then7923, label %endif7925 +then7923: + %t1423 = load ptr, ptr %a1 + %t1424 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t1425 = load { ptr, i64, i64 }, ptr %t1424 + %t1426 = extractvalue { ptr, i64, i64 } %t1425, 1 + %t1427 = icmp uge i64 0, %t1426 + br i1 %t1427, label %range7926, label %inrange7927 +range7926: + call void @finch_panic_index(ptr @.str.5195, i64 4798, i64 0, i64 %t1426) unreachable -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) +inrange7927: + %t1428 = extractvalue { ptr, i64, i64 } %t1425, 0 + %t1429 = getelementptr inbounds %S.ast.Node, ptr %t1428, i64 0 + %t1430 = load %S.ast.Node, ptr %t1429 + call void @finch.gen.fail(ptr %t1423, %S.ast.Node %t1430, { ptr, i64, i64 } { ptr @.str.5196, i64 119, i64 0 }) + br label %endif7925 +endif7925: + %t1431 = getelementptr inbounds %S.gen.Val, ptr %a1415, i32 0, i32 1 + %t1432 = getelementptr inbounds %S.ast.Type, ptr %t1431, i32 0, i32 1 + %t1433 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1432, i32 0, i32 1 + %t1434 = load i64, ptr %t1433 + %t1435 = icmp sgt i64 %t1434, 0 + br label %logic.from7928 +logic.from7928: + br i1 %t1435, label %logic.rhs7929, label %logic.end7930 +logic.rhs7929: + %t1436 = load ptr, ptr %a1 + %t1437 = getelementptr inbounds %S.gen.Val, ptr %a1415, i32 0, i32 1 + %t1438 = getelementptr inbounds %S.ast.Type, ptr %t1437, i32 0, i32 1 + %t1439 = load { ptr, i64, i64 }, ptr %t1438 + %t1440 = extractvalue { ptr, i64, i64 } %t1439, 1 + %t1441 = icmp uge i64 0, %t1440 + br i1 %t1441, label %range7931, label %inrange7932 +range7931: + call void @finch_panic_index(ptr @.str.5197, i64 4800, i64 0, i64 %t1440) unreachable -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) +inrange7932: + %t1442 = extractvalue { ptr, i64, i64 } %t1439, 0 + %t1443 = getelementptr inbounds %S.ast.Type, ptr %t1442, i64 0 + %t1444 = load %S.ast.Type, ptr %t1443 + %t1445 = call i1 @finch.gen.owning(ptr %t1436, %S.ast.Type %t1444) + br label %logic.rend7933 +logic.rend7933: + br label %logic.end7930 +logic.end7930: + %t1446 = phi i1 [ false, %logic.from7928 ], [ %t1445, %logic.rend7933 ] + br i1 %t1446, label %then7934, label %endif7936 +then7934: + %t1447 = load ptr, ptr %a1 + %t1448 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t1447, { ptr, i64, i64 } { ptr @.str.5198, i64 9, i64 0 }) + store { ptr, i64, i64 } %t1448, ptr %a1449 + %t1450 = load ptr, ptr %a1 + %t1451 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t1450, { ptr, i64, i64 } { ptr @.str.5199, i64 9, i64 0 }) + store { ptr, i64, i64 } %t1451, ptr %a1452 + %t1453 = load ptr, ptr %a1 + %t1454 = load ptr, ptr %a1 + %t1455 = getelementptr inbounds %S.gen.Val, ptr %a1415, i32 0, i32 0 + %t1456 = load { ptr, i64, i64 }, ptr %t1455 + store { ptr, i64, i64 } { ptr @.str.5200, i64 12, i64 0 }, ptr %a1458 + store { ptr, i64, i64 } %t1456, ptr %a1459 + call void @finch_str_concat(ptr %a1457, ptr %a1458, ptr %a1459) + %t1460 = load { ptr, i64, i64 }, ptr %a1457 + store { ptr, i64, i64 } %t1460, ptr %a1462 + store { ptr, i64, i64 } { ptr @.str.5201, i64 6, i64 0 }, ptr %a1463 + call void @finch_str_concat(ptr %a1461, ptr %a1462, ptr %a1463) + store { ptr, i64, i64 } %t1460, ptr %a1464 + call void @finch_str_drop(ptr %a1464) + %t1465 = load { ptr, i64, i64 }, ptr %a1461 + %t1466 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1454, { ptr, i64, i64 } %t1465) + store { ptr, i64, i64 } %t1465, ptr %a1467 + call void @finch_str_drop(ptr %a1467) + %t1468 = load { ptr, i64, i64 }, ptr %a1452 + %t1469 = load { ptr, i64, i64 }, ptr %a1449 + call void @finch.gen.condBr(ptr %t1453, { ptr, i64, i64 } %t1466, { ptr, i64, i64 } %t1468, { ptr, i64, i64 } %t1469) + store { ptr, i64, i64 } %t1466, ptr %a1470 + call void @finch_str_drop(ptr %a1470) + %t1471 = load ptr, ptr %a1 + %t1472 = load { ptr, i64, i64 }, ptr %a1449 + call void @finch.gen.label(ptr %t1471, { ptr, i64, i64 } %t1472) + %t1473 = load ptr, ptr %a1 + %t1474 = getelementptr inbounds %S.gen.Val, ptr %a1415, i32 0, i32 0 + %t1475 = load { ptr, i64, i64 }, ptr %t1474 + %t1476 = getelementptr inbounds %S.gen.Val, ptr %a1415, i32 0, i32 1 + %t1477 = getelementptr inbounds %S.ast.Type, ptr %t1476, i32 0, i32 1 + %t1478 = load { ptr, i64, i64 }, ptr %t1477 + %t1479 = extractvalue { ptr, i64, i64 } %t1478, 1 + %t1480 = icmp uge i64 0, %t1479 + br i1 %t1480, label %range7937, label %inrange7938 +range7937: + call void @finch_panic_index(ptr @.str.5202, i64 4805, i64 0, i64 %t1479) unreachable -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 - 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: +inrange7938: + %t1481 = extractvalue { ptr, i64, i64 } %t1478, 0 + %t1482 = getelementptr inbounds %S.ast.Type, ptr %t1481, i64 0 + %t1483 = load %S.ast.Type, ptr %t1482 + call void @finch.gen.dropAt(ptr %t1473, { ptr, i64, i64 } %t1475, %S.ast.Type %t1483) + %t1484 = load ptr, ptr %a1 + %t1485 = load { ptr, i64, i64 }, ptr %a1452 + call void @finch.gen.br(ptr %t1484, { ptr, i64, i64 } %t1485) + %t1486 = load ptr, ptr %a1 + %t1487 = load { ptr, i64, i64 }, ptr %a1452 + call void @finch.gen.label(ptr %t1486, { ptr, i64, i64 } %t1487) + call void @finch_str_drop(ptr %a1452) + call void @finch_str_drop(ptr %a1449) + br label %endif7936 +endif7936: + %t1488 = load ptr, ptr %a1 + %t1489 = getelementptr inbounds %S.gen.Val, ptr %a1415, i32 0, i32 0 + %t1490 = load { ptr, i64, i64 }, ptr %t1489 + store { ptr, i64, i64 } { ptr @.str.5203, i64 20, i64 0 }, ptr %a1492 + store { ptr, i64, i64 } %t1490, ptr %a1493 + call void @finch_str_concat(ptr %a1491, ptr %a1492, ptr %a1493) + %t1494 = load { ptr, i64, i64 }, ptr %a1491 + store { ptr, i64, i64 } %t1494, ptr %a1496 + store { ptr, i64, i64 } { ptr @.str.5204, i64 1, i64 0 }, ptr %a1497 + call void @finch_str_concat(ptr %a1495, ptr %a1496, ptr %a1497) + store { ptr, i64, i64 } %t1494, ptr %a1498 + call void @finch_str_drop(ptr %a1498) + %t1499 = load { ptr, i64, i64 }, ptr %a1495 + call void @finch.gen.emit(ptr %t1488, { ptr, i64, i64 } %t1499) + store { ptr, i64, i64 } %t1499, ptr %a1500 + call void @finch_str_drop(ptr %a1500) + %t1501 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5205, i64 4, i64 0 }) + %t1502 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t1501, 1 + call void @finch.drop.S_gen_Val(ptr %a1415) + call void @finch_str_drop(ptr %a570) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t1502 +endif7920: + %t1503 = load ptr, ptr %a1 %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) + %t1505 = icmp eq ptr %t1504, null + br i1 %t1505, label %panic7939, label %ok7940 +panic7939: + call void @finch_panic(ptr @.str.5206, i64 4812, ptr @.str.5207) 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 +ok7940: + %t1506 = getelementptr inbounds %S.gen.Gen, ptr %t1504, i32 0, i32 14 + %t1507 = load { ptr, i64, i64 }, ptr %t1506 + %t1508 = load { ptr, i64, i64 }, ptr %a8 + %t1509 = call i64 @finch.gen.findFn(ptr %t1503, { ptr, i64, i64 } %t1507, { ptr, i64, i64 } %t1508) + store i64 %t1509, ptr %a1510 + %t1511 = load i64, ptr %a1510 + %t1512 = icmp sge i64 %t1511, 0 + br i1 %t1512, label %then7941, label %endif7943 +then7941: + %t1513 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5 + %t1514 = getelementptr inbounds %S.ast.Type, ptr %t1513, i32 0, i32 1 + %t1515 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1514, i32 0, i32 1 + %t1516 = load i64, ptr %t1515 + %t1517 = icmp sgt i64 %t1516, 0 + br i1 %t1517, label %then7944, label %endif7946 +then7944: + %t1518 = load ptr, ptr %a1 + %t1519 = load %S.ast.Node, ptr %a2 + %t1520 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.5208, i64 1, i64 0 }, ptr %a1522 + store { ptr, i64, i64 } %t1520, ptr %a1523 + call void @finch_str_concat(ptr %a1521, ptr %a1522, ptr %a1523) + %t1524 = load { ptr, i64, i64 }, ptr %a1521 + store { ptr, i64, i64 } %t1524, ptr %a1526 + store { ptr, i64, i64 } { ptr @.str.5209, i64 47, i64 0 }, ptr %a1527 + call void @finch_str_concat(ptr %a1525, ptr %a1526, ptr %a1527) + store { ptr, i64, i64 } %t1524, ptr %a1528 + call void @finch_str_drop(ptr %a1528) + %t1529 = load { ptr, i64, i64 }, ptr %a1525 + call void @finch.gen.fail(ptr %t1518, %S.ast.Node %t1519, { ptr, i64, i64 } %t1529) + store { ptr, i64, i64 } %t1529, ptr %a1530 + call void @finch_str_drop(ptr %a1530) + br label %endif7946 +endif7946: + %t1531 = load ptr, ptr %a1 + %t1532 = load i64, ptr %a1510 %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 + %t1534 = load { ptr, i64, i64 }, ptr %a8 + %t1535 = call %S.gen.Val @finch.gen.callFn(ptr %t1531, i64 %t1532, %S.ast.Node %t1533, i64 0, { ptr, i64, i64 } %t1534, { ptr, i64, i64 } { ptr @.str.5210, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.5211, i64 0, i64 0 }) + call void @finch_str_drop(ptr %a570) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t1535 +endif7943: + %t1536 = load ptr, ptr %a1 + %t1537 = load ptr, ptr %a1 + %t1538 = icmp eq ptr %t1537, null + br i1 %t1538, label %panic7947, label %ok7948 +panic7947: + call void @finch_panic(ptr @.str.5212, i64 4819, ptr @.str.5213) + unreachable +ok7948: + %t1539 = getelementptr inbounds %S.gen.Gen, ptr %t1537, i32 0, i32 14 + %t1540 = load { ptr, i64, i64 }, ptr %t1539 %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) + %t1542 = call i64 @finch.gen.findTemplate(ptr %t1536, { ptr, i64, i64 } %t1540, { ptr, i64, i64 } %t1541, { ptr, i64, i64 } { ptr @.str.5214, i64 0, i64 0 }, i1 false) + store i64 %t1542, ptr %a1543 + %t1544 = load i64, ptr %a1543 + %t1545 = icmp sge i64 %t1544, 0 + br i1 %t1545, label %then7949, label %endif7951 +then7949: + %t1546 = load ptr, ptr %a1 + %t1547 = load %S.ast.Node, ptr %a2 + %t1548 = load i64, ptr %a1543 + %t1549 = load { ptr, i64, i64 }, ptr %a8 + %t1550 = call %S.gen.Val @finch.gen.genericCall(ptr %t1546, %S.ast.Node %t1547, i64 %t1548, i64 0, { ptr, i64, i64 } %t1549) + call void @finch_str_drop(ptr %a570) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t1550 +endif7951: + %t1551 = load ptr, ptr %a1 + %t1552 = load ptr, ptr %a1 + %t1553 = icmp eq ptr %t1552, null + br i1 %t1553, label %panic7952, label %ok7953 +panic7952: + call void @finch_panic(ptr @.str.5215, i64 4823, ptr @.str.5216) + unreachable +ok7953: + %t1554 = getelementptr inbounds %S.gen.Gen, ptr %t1552, i32 0, i32 14 + %t1555 = load { ptr, i64, i64 }, ptr %t1554 + %t1556 = load { ptr, i64, i64 }, ptr %a8 + %t1557 = call i64 @finch.gen.findTemplate(ptr %t1551, { ptr, i64, i64 } %t1555, { ptr, i64, i64 } %t1556, { ptr, i64, i64 } { ptr @.str.5217, i64 0, i64 0 }, i1 true) + %t1558 = icmp sge i64 %t1557, 0 + br i1 %t1558, label %then7954, label %endif7956 +then7954: + %t1559 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5 + %t1560 = getelementptr inbounds %S.ast.Type, ptr %t1559, i32 0, i32 1 + %t1561 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1560, i32 0, i32 1 + %t1562 = load i64, ptr %t1561 + %t1563 = icmp eq i64 %t1562, 0 + br i1 %t1563, label %then7957, label %endif7959 +then7957: + %t1564 = load ptr, ptr %a1 + %t1565 = load %S.ast.Node, ptr %a2 + %t1566 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.5218, i64 1, i64 0 }, ptr %a1568 + store { ptr, i64, i64 } %t1566, ptr %a1569 + call void @finch_str_concat(ptr %a1567, ptr %a1568, ptr %a1569) + %t1570 = load { ptr, i64, i64 }, ptr %a1567 + store { ptr, i64, i64 } %t1570, ptr %a1572 + store { ptr, i64, i64 } { ptr @.str.5219, i64 42, i64 0 }, ptr %a1573 + call void @finch_str_concat(ptr %a1571, ptr %a1572, ptr %a1573) + store { ptr, i64, i64 } %t1570, ptr %a1574 + call void @finch_str_drop(ptr %a1574) + %t1575 = load { ptr, i64, i64 }, ptr %a1571 + %t1576 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t1575, ptr %a1578 + store { ptr, i64, i64 } %t1576, ptr %a1579 + call void @finch_str_concat(ptr %a1577, ptr %a1578, ptr %a1579) + store { ptr, i64, i64 } %t1575, ptr %a1580 + call void @finch_str_drop(ptr %a1580) + %t1581 = load { ptr, i64, i64 }, ptr %a1577 + store { ptr, i64, i64 } %t1581, ptr %a1583 + store { ptr, i64, i64 } { ptr @.str.5220, i64 10, i64 0 }, ptr %a1584 + call void @finch_str_concat(ptr %a1582, ptr %a1583, ptr %a1584) + store { ptr, i64, i64 } %t1581, ptr %a1585 + call void @finch_str_drop(ptr %a1585) + %t1586 = load { ptr, i64, i64 }, ptr %a1582 + call void @finch.gen.fail(ptr %t1564, %S.ast.Node %t1565, { ptr, i64, i64 } %t1586) + store { ptr, i64, i64 } %t1586, ptr %a1587 + call void @finch_str_drop(ptr %a1587) + br label %endif7959 +endif7959: + store { ptr, i64, i64 } zeroinitializer, ptr %a1588 + %t1589 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5 + %t1590 = getelementptr inbounds %S.ast.Type, ptr %t1589, i32 0, i32 1 + store i64 0, ptr %a1591 + br label %each.cond7960 +each.cond7960: + %t1592 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1590, i32 0, i32 1 + %t1593 = load i64, ptr %t1592 + %t1594 = load i64, ptr %a1591 + %t1595 = icmp slt i64 %t1594, %t1593 + br i1 %t1595, label %each.body7961, label %each.end7963 +each.body7961: + %t1596 = load ptr, ptr %t1590 + %t1597 = getelementptr inbounds %S.ast.Type, ptr %t1596, i64 %t1594 + %t1598 = load %S.ast.Type, ptr %t1597 + store %S.ast.Type %t1598, ptr %a1599 + %t1600 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1588, i32 0, i32 1 + %t1601 = load ptr, ptr %a1 + %t1602 = load %S.ast.Type, ptr %a1599 + %t1603 = load %S.ast.Node, ptr %a2 + %t1604 = call %S.ast.Type @finch.gen.resolve(ptr %t1601, %S.ast.Type %t1602, %S.ast.Node %t1603) + %t1605 = load i64, ptr %t1600 + %t1606 = add i64 %t1605, 1 + call void @finch_arr_reserve(ptr %a1588, i64 %t1606, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) + %t1607 = load ptr, ptr %a1588 + %t1608 = getelementptr inbounds %S.ast.Type, ptr %t1607, i64 %t1605 + store %S.ast.Type %t1604, ptr %t1608 + store i64 %t1606, ptr %t1600 + br label %each.step7962 +each.step7962: + %t1609 = load i64, ptr %a1591 + %t1610 = add i64 %t1609, 1 + store i64 %t1610, ptr %a1591 + br label %each.cond7960 +each.end7963: + %t1611 = load ptr, ptr %a1 + %t1612 = load ptr, ptr %a1 + %t1613 = icmp eq ptr %t1612, null + br i1 %t1613, label %panic7964, label %ok7965 +panic7964: + call void @finch_panic(ptr @.str.5221, i64 4832, ptr @.str.5222) + unreachable +ok7965: + %t1614 = getelementptr inbounds %S.gen.Gen, ptr %t1612, i32 0, i32 14 + %t1615 = load { ptr, i64, i64 }, ptr %t1614 + %t1616 = load { ptr, i64, i64 }, ptr %a8 + %t1617 = load { ptr, i64, i64 }, ptr %a1588 + %t1618 = load %S.ast.Node, ptr %a2 + %t1619 = call %S.ast.Type @finch.gen.instStruct(ptr %t1611, { ptr, i64, i64 } %t1615, { ptr, i64, i64 } %t1616, { ptr, i64, i64 } %t1617, %S.ast.Node %t1618) + store %S.ast.Type %t1619, ptr %a1620 + %t1621 = load ptr, ptr %a1 + %t1622 = load ptr, ptr %a1 + %t1623 = getelementptr inbounds %S.ast.Type, ptr %a1620, i32 0, i32 3 + %t1624 = load { ptr, i64, i64 }, ptr %t1623 + %t1625 = getelementptr inbounds %S.ast.Type, ptr %a1620, i32 0, i32 2 + %t1626 = load { ptr, i64, i64 }, ptr %t1625 + %t1627 = call i64 @finch.gen.findStruct(ptr %t1622, { ptr, i64, i64 } %t1624, { ptr, i64, i64 } %t1626) + %t1628 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t1629 = load { ptr, i64, i64 }, ptr %t1628 + %t1630 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 10 + %t1631 = load { ptr, i64, i64 }, ptr %t1630 + %t1632 = load %S.ast.Node, ptr %a2 + %t1633 = call %S.gen.Val @finch.gen.construct(ptr %t1621, i64 %t1627, { ptr, i64, i64 } %t1629, { ptr, i64, i64 } %t1631, %S.ast.Node %t1632) + call void @finch.drop.S_ast_Type(ptr %a1620) + call void @finch.drop.arr_S_ast_Type(ptr %a1588) + call void @finch_str_drop(ptr %a570) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t1633 +endif7956: + %t1634 = load ptr, ptr %a1 + %t1635 = load ptr, ptr %a1 + %t1636 = icmp eq ptr %t1635, null + br i1 %t1636, label %panic7966, label %ok7967 +panic7966: + call void @finch_panic(ptr @.str.5223, i64 4835, ptr @.str.5224) + unreachable +ok7967: + %t1637 = getelementptr inbounds %S.gen.Gen, ptr %t1635, i32 0, i32 14 + %t1638 = load { ptr, i64, i64 }, ptr %t1637 + %t1639 = load { ptr, i64, i64 }, ptr %a8 + %t1640 = call i64 @finch.gen.findStruct(ptr %t1634, { ptr, i64, i64 } %t1638, { ptr, i64, i64 } %t1639) + store i64 %t1640, ptr %a1641 + %t1642 = load i64, ptr %a1641 + %t1643 = icmp sge i64 %t1642, 0 + br i1 %t1643, label %then7968, label %endif7970 +then7968: + %t1644 = load ptr, ptr %a1 + %t1645 = icmp eq ptr %t1644, null + br i1 %t1645, label %panic7971, label %ok7972 +panic7971: + call void @finch_panic(ptr @.str.5225, i64 4837, ptr @.str.5226) + unreachable +ok7972: + %t1646 = getelementptr inbounds %S.gen.Gen, ptr %t1644, i32 0, i32 16 + %t1647 = load i64, ptr %a1641 + %t1648 = load { ptr, i64, i64 }, ptr %t1646 + %t1649 = extractvalue { ptr, i64, i64 } %t1648, 1 + %t1650 = icmp uge i64 %t1647, %t1649 + br i1 %t1650, label %range7973, label %inrange7974 +range7973: + call void @finch_panic_index(ptr @.str.5227, i64 4837, i64 %t1647, i64 %t1649) + unreachable +inrange7974: + %t1651 = extractvalue { ptr, i64, i64 } %t1648, 0 + %t1652 = getelementptr inbounds %S.gen.StructDef, ptr %t1651, i64 %t1647 + %t1653 = load %S.gen.StructDef, ptr %t1652 + store %S.gen.StructDef %t1653, ptr %a1654 + call void @finch.copy.S_gen_StructDef(ptr %a1655, ptr %a1654) + %t1656 = load %S.gen.StructDef, ptr %a1655 + store %S.gen.StructDef %t1656, ptr %a1657 + %t1658 = load ptr, ptr %a1 + %t1659 = icmp eq ptr %t1658, null + br i1 %t1659, label %panic7975, label %ok7976 +panic7975: + call void @finch_panic(ptr @.str.5228, i64 4838, ptr @.str.5229) + unreachable +ok7976: + %t1660 = getelementptr inbounds %S.gen.Gen, ptr %t1658, i32 0, i32 27 + %t1661 = load i1, ptr %t1660 + br label %logic.from7977 +logic.from7977: + br i1 %t1661, label %logic.rhs7978, label %logic.end7979 +logic.rhs7978: + %t1662 = getelementptr inbounds %S.gen.StructDef, ptr %a1657, i32 0, i32 2 + %t1663 = load i1, ptr %t1662 + %t1664 = xor i1 %t1663, true + br label %logic.rend7980 +logic.rend7980: + br label %logic.end7979 +logic.end7979: + %t1665 = phi i1 [ false, %logic.from7977 ], [ %t1664, %logic.rend7980 ] + br i1 %t1665, label %then7981, label %endif7983 +then7981: + %t1666 = load ptr, ptr %a1 + %t1667 = icmp eq ptr %t1666, null + br i1 %t1667, label %panic7984, label %ok7985 +panic7984: + call void @finch_panic(ptr @.str.5230, i64 4839, ptr @.str.5231) + unreachable +ok7985: + %t1668 = getelementptr inbounds %S.gen.Gen, ptr %t1666, i32 0, i32 0 + %t1669 = getelementptr inbounds %S.gen.StructDef, ptr %a1657, i32 0, i32 13 + %t1670 = load i64, ptr %t1669 + %t1671 = load { ptr, i64, i64 }, ptr %t1668 + %t1672 = extractvalue { ptr, i64, i64 } %t1671, 1 + %t1673 = icmp uge i64 %t1670, %t1672 + br i1 %t1673, label %range7986, label %inrange7987 +range7986: + call void @finch_panic_index(ptr @.str.5232, i64 4839, i64 %t1670, i64 %t1672) + unreachable +inrange7987: + %t1674 = extractvalue { ptr, i64, i64 } %t1671, 0 + %t1675 = getelementptr inbounds %S.ast.Program, ptr %t1674, i64 %t1670 + %t1676 = getelementptr inbounds %S.ast.Program, ptr %t1675, i32 0, i32 6 + %t1677 = getelementptr inbounds %S.gen.StructDef, ptr %a1657, i32 0, i32 14 + %t1678 = load i64, ptr %t1677 + %t1679 = load { ptr, i64, i64 }, ptr %t1676 + %t1680 = extractvalue { ptr, i64, i64 } %t1679, 1 + %t1681 = icmp uge i64 %t1678, %t1680 + br i1 %t1681, label %range7988, label %inrange7989 +range7988: + call void @finch_panic_index(ptr @.str.5233, i64 4839, i64 %t1678, i64 %t1680) + unreachable +inrange7989: + %t1682 = extractvalue { ptr, i64, i64 } %t1679, 0 + %t1683 = getelementptr inbounds %S.ast.Node, ptr %t1682, i64 %t1678 + %t1684 = load %S.ast.Node, ptr %t1683 + store %S.ast.Node %t1684, ptr %a1685 + call void @finch.copy.S_ast_Node(ptr %a1686, ptr %a1685) + %t1687 = load %S.ast.Node, ptr %a1686 + store %S.ast.Node %t1687, ptr %a1688 + %t1689 = load ptr, ptr %a1 + %t1690 = load %S.ast.Node, ptr %a2 + %t1691 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 + %t1692 = load i64, ptr %t1691 + %t1693 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 + %t1694 = load i64, ptr %t1693 + %t1695 = getelementptr inbounds %S.gen.StructDef, ptr %a1657, i32 0, i32 1 + %t1696 = load { ptr, i64, i64 }, ptr %t1695 + store { ptr, i64, i64 } { ptr @.str.5234, i64 16, i64 0 }, ptr %a1698 + store { ptr, i64, i64 } %t1696, ptr %a1699 + call void @finch_str_concat(ptr %a1697, ptr %a1698, ptr %a1699) + %t1700 = load { ptr, i64, i64 }, ptr %a1697 + store { ptr, i64, i64 } %t1700, ptr %a1702 + store { ptr, i64, i64 } { ptr @.str.5235, i64 3, i64 0 }, ptr %a1703 + call void @finch_str_concat(ptr %a1701, ptr %a1702, ptr %a1703) + store { ptr, i64, i64 } %t1700, ptr %a1704 + call void @finch_str_drop(ptr %a1704) + %t1705 = load { ptr, i64, i64 }, ptr %a1701 + %t1706 = getelementptr inbounds %S.gen.StructDef, ptr %a1657, i32 0, i32 11 + %t1707 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1706, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.5236, i64 2, i64 0 }, ptr %a1708 + call void @finch_str_join(ptr %a1709, ptr %t1706, ptr %a1708) + %t1710 = load { ptr, i64, i64 }, ptr %a1709 + store { ptr, i64, i64 } %t1705, ptr %a1712 + store { ptr, i64, i64 } %t1710, ptr %a1713 + call void @finch_str_concat(ptr %a1711, ptr %a1712, ptr %a1713) + store { ptr, i64, i64 } %t1705, ptr %a1714 + call void @finch_str_drop(ptr %a1714) + store { ptr, i64, i64 } %t1710, ptr %a1715 + call void @finch_str_drop(ptr %a1715) + %t1716 = load { ptr, i64, i64 }, ptr %a1711 + store { ptr, i64, i64 } %t1716, ptr %a1718 + store { ptr, i64, i64 } { ptr @.str.5237, i64 6, i64 0 }, ptr %a1719 + call void @finch_str_concat(ptr %a1717, ptr %a1718, ptr %a1719) + store { ptr, i64, i64 } %t1716, ptr %a1720 + call void @finch_str_drop(ptr %a1720) + %t1721 = load { ptr, i64, i64 }, ptr %a1717 + %t1722 = load ptr, ptr %a1 + %t1723 = icmp eq ptr %t1722, null + br i1 %t1723, label %panic7990, label %ok7991 +panic7990: + call void @finch_panic(ptr @.str.5238, i64 4840, ptr @.str.5239) + unreachable +ok7991: + %t1724 = getelementptr inbounds %S.gen.Gen, ptr %t1722, i32 0, i32 1 + %t1725 = getelementptr inbounds %S.ast.Node, ptr %a1688, i32 0, i32 13 + %t1726 = load i64, ptr %t1725 + %t1727 = load { ptr, i64, i64 }, ptr %t1724 + %t1728 = extractvalue { ptr, i64, i64 } %t1727, 1 + %t1729 = icmp uge i64 %t1726, %t1728 + br i1 %t1729, label %range7992, label %inrange7993 +range7992: + call void @finch_panic_index(ptr @.str.5240, i64 4840, i64 %t1726, i64 %t1728) + unreachable +inrange7993: + %t1730 = extractvalue { ptr, i64, i64 } %t1727, 0 + %t1731 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1730, i64 %t1726 + %t1732 = load { ptr, i64, i64 }, ptr %t1731 + %t1733 = getelementptr inbounds %S.ast.Node, ptr %a1688, i32 0, i32 11 + %t1734 = load i64, ptr %t1733 + %t1735 = getelementptr inbounds %S.ast.Node, ptr %a1688, i32 0, i32 12 + %t1736 = load i64, ptr %t1735 + call void @finch.gen.noteRef(ptr %t1689, %S.ast.Node %t1690, i64 %t1692, i64 %t1694, { ptr, i64, i64 } %t1721, { ptr, i64, i64 } %t1732, i64 %t1734, i64 %t1736) + store { ptr, i64, i64 } %t1721, ptr %a1737 + call void @finch_str_drop(ptr %a1737) + call void @finch.drop.S_ast_Node(ptr %a1688) + br label %endif7983 +endif7983: + %t1738 = load ptr, ptr %a1 + %t1739 = load i64, ptr %a1641 + %t1740 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t1741 = load { ptr, i64, i64 }, ptr %t1740 + %t1742 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 10 + %t1743 = load { ptr, i64, i64 }, ptr %t1742 + %t1744 = load %S.ast.Node, ptr %a2 + %t1745 = call %S.gen.Val @finch.gen.construct(ptr %t1738, i64 %t1739, { ptr, i64, i64 } %t1741, { ptr, i64, i64 } %t1743, %S.ast.Node %t1744) + call void @finch.drop.S_gen_StructDef(ptr %a1657) + call void @finch_str_drop(ptr %a570) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t1745 +endif7970: + %t1746 = load ptr, ptr %a1 + %t1747 = load ptr, ptr %a1 + %t1748 = icmp eq ptr %t1747, null + br i1 %t1748, label %panic7994, label %ok7995 +panic7994: + call void @finch_panic(ptr @.str.5241, i64 4844, ptr @.str.5242) + unreachable +ok7995: + %t1749 = getelementptr inbounds %S.gen.Gen, ptr %t1747, i32 0, i32 14 + %t1750 = load { ptr, i64, i64 }, ptr %t1749 + %t1751 = load { ptr, i64, i64 }, ptr %a8 + %t1752 = call i64 @finch.gen.findEnum(ptr %t1746, { ptr, i64, i64 } %t1750, { ptr, i64, i64 } %t1751) + store i64 %t1752, ptr %a1753 + %t1754 = load i64, ptr %a1753 + %t1755 = icmp sge i64 %t1754, 0 + br i1 %t1755, label %then7996, label %endif7998 +then7996: + %t1756 = load ptr, ptr %a1 + %t1757 = load %S.ast.Node, ptr %a2 + %t1758 = load i64, ptr %a1753 + %t1759 = call %S.gen.Val @finch.gen.enumFrom(ptr %t1756, %S.ast.Node %t1757, i64 %t1758) + call void @finch_str_drop(ptr %a570) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t1759 +endif7998: + %t1760 = load ptr, ptr %a1 + %t1761 = icmp eq ptr %t1760, null + br i1 %t1761, label %panic7999, label %ok8000 +panic7999: + call void @finch_panic(ptr @.str.5243, i64 4848, ptr @.str.5244) + unreachable +ok8000: + %t1762 = getelementptr inbounds %S.gen.Gen, ptr %t1760, i32 0, i32 25 + %t1763 = getelementptr inbounds %S.cimport.CImports, ptr %t1762, i32 0, i32 0 + %t1764 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t1764, ptr %a1765 + %t1766 = call i64 @finch_map_find(ptr %t1763, ptr %a1765, 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) + %t1767 = icmp sge i64 %t1766, 0 + br i1 %t1767, label %then8001, label %endif8003 +then8001: + %t1768 = load ptr, ptr %a1 + %t1769 = load %S.ast.Node, ptr %a2 + %t1770 = load ptr, ptr %a1 + %t1771 = icmp eq ptr %t1770, null + br i1 %t1771, label %panic8004, label %ok8005 +panic8004: + call void @finch_panic(ptr @.str.5245, i64 4849, ptr @.str.5246) + unreachable +ok8005: + %t1772 = getelementptr inbounds %S.gen.Gen, ptr %t1770, i32 0, i32 25 + %t1773 = getelementptr inbounds %S.cimport.CImports, ptr %t1772, i32 0, i32 0 + %t1774 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t1774, ptr %a1775 + %t1776 = call i64 @finch_map_find(ptr %t1773, ptr %a1775, 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) + %t1777 = icmp slt i64 %t1776, 0 + br i1 %t1777, label %map.missing8006, label %map.found8007 +map.missing8006: + store { ptr, i64, i64 } zeroinitializer, ptr %a1778 + store { ptr, i64, i64 } %t1774, ptr %a1779 + call void @finch_buf_str(ptr %a1778, ptr %a1779, i32 1) + call void @finch_map_missing(ptr @.str.5247, i64 4849, ptr %a1778) + unreachable +map.found8007: + %t1780 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t1773, i32 0, i32 0 + %t1781 = load ptr, ptr %t1780 + %t1782 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t1781, i64 %t1776 + %t1783 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t1782, i32 0, i32 2 + %t1784 = load %S.cimport.CFunc, ptr %t1783 + %t1785 = call %S.gen.Val @finch.gen.callC(ptr %t1768, %S.ast.Node %t1769, %S.cimport.CFunc %t1784) + call void @finch_str_drop(ptr %a570) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t1785 +endif8003: + %t1786 = load ptr, ptr %a1 + %t1787 = load { ptr, i64, i64 }, ptr %a8 + %t1788 = call i64 @finch.gen.findStruct(ptr %t1786, { ptr, i64, i64 } { ptr @.str.5248, i64 1, i64 0 }, { ptr, i64, i64 } %t1787) + store i64 %t1788, ptr %a1641 + %t1789 = load i64, ptr %a1641 + %t1790 = icmp sge i64 %t1789, 0 + br i1 %t1790, label %then8008, label %endif8010 +then8008: + %t1791 = load ptr, ptr %a1 + %t1792 = load i64, ptr %a1641 + %t1793 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t1794 = load { ptr, i64, i64 }, ptr %t1793 + %t1795 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 10 + %t1796 = load { ptr, i64, i64 }, ptr %t1795 + %t1797 = load %S.ast.Node, ptr %a2 + %t1798 = call %S.gen.Val @finch.gen.construct(ptr %t1791, i64 %t1792, { ptr, i64, i64 } %t1794, { ptr, i64, i64 } %t1796, %S.ast.Node %t1797) + call void @finch_str_drop(ptr %a570) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t1798 +endif8010: + %t1799 = load ptr, ptr %a1 + %t1800 = load { ptr, i64, i64 }, ptr %a8 + %t1801 = call i64 @finch.gen.lookup(ptr %t1799, { ptr, i64, i64 } %t1800) + %t1802 = icmp sge i64 %t1801, 0 + br i1 %t1802, label %then8011, label %endif8013 +then8011: + %t1803 = load ptr, ptr %a1 + %t1804 = load %S.ast.Node, ptr %a2 + %t1805 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.5249, i64 1, i64 0 }, ptr %a1807 + store { ptr, i64, i64 } %t1805, ptr %a1808 + call void @finch_str_concat(ptr %a1806, ptr %a1807, ptr %a1808) + %t1809 = load { ptr, i64, i64 }, ptr %a1806 + store { ptr, i64, i64 } %t1809, ptr %a1811 + store { ptr, i64, i64 } { ptr @.str.5250, i64 31, i64 0 }, ptr %a1812 + call void @finch_str_concat(ptr %a1810, ptr %a1811, ptr %a1812) + store { ptr, i64, i64 } %t1809, ptr %a1813 + call void @finch_str_drop(ptr %a1813) + %t1814 = load { ptr, i64, i64 }, ptr %a1810 + call void @finch.gen.fail(ptr %t1803, %S.ast.Node %t1804, { ptr, i64, i64 } %t1814) + store { ptr, i64, i64 } %t1814, ptr %a1815 + call void @finch_str_drop(ptr %a1815) + br label %endif8013 +endif8013: + %t1816 = load ptr, ptr %a1 + %t1817 = load %S.ast.Node, ptr %a2 + %t1818 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.5251, i64 28, i64 0 }, ptr %a1820 + store { ptr, i64, i64 } %t1818, ptr %a1821 + call void @finch_str_concat(ptr %a1819, ptr %a1820, ptr %a1821) + %t1822 = load { ptr, i64, i64 }, ptr %a1819 + store { ptr, i64, i64 } %t1822, ptr %a1824 + store { ptr, i64, i64 } { ptr @.str.5252, i64 1, i64 0 }, ptr %a1825 + call void @finch_str_concat(ptr %a1823, ptr %a1824, ptr %a1825) + store { ptr, i64, i64 } %t1822, ptr %a1826 + call void @finch_str_drop(ptr %a1826) + %t1827 = load { ptr, i64, i64 }, ptr %a1823 + %t1828 = load { ptr, i64, i64 }, ptr %a8 + %t1829 = call { ptr, i64, i64 } @finch.gen.headerHint({ ptr, i64, i64 } %t1828) + store { ptr, i64, i64 } %t1827, ptr %a1831 + store { ptr, i64, i64 } %t1829, ptr %a1832 + call void @finch_str_concat(ptr %a1830, ptr %a1831, ptr %a1832) + store { ptr, i64, i64 } %t1827, ptr %a1833 + call void @finch_str_drop(ptr %a1833) + store { ptr, i64, i64 } %t1829, ptr %a1834 + call void @finch_str_drop(ptr %a1834) + %t1835 = load { ptr, i64, i64 }, ptr %a1830 + call void @finch.gen.fail(ptr %t1816, %S.ast.Node %t1817, { ptr, i64, i64 } %t1835) + store { ptr, i64, i64 } %t1835, ptr %a1836 + call void @finch_str_drop(ptr %a1836) + call void @finch_str_drop(ptr %a570) + call void @finch_str_drop(ptr %a8) ret %S.gen.Val zeroinitializer } @@ -68720,27 +81710,41 @@ entry: %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 - %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 - %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 + %a60 = alloca { ptr, i64, i64 }, align 16 + %a66 = alloca i64, align 16 + %a70 = alloca i64, align 16 + %a83 = alloca %S.ast.Node, align 16 + %a84 = alloca %S.ast.Node, align 16 + %a86 = alloca %S.ast.Node, align 16 + %a116 = alloca { ptr, i64, i64 }, align 16 + %a117 = alloca { ptr, i64, i64 }, align 16 + %a118 = alloca { ptr, i64, i64 }, align 16 + %a120 = alloca { ptr, i64, i64 }, align 16 + %a121 = alloca { ptr, i64, i64 }, align 16 + %a122 = alloca { ptr, i64, i64 }, align 16 + %a123 = alloca { ptr, i64, i64 }, align 16 + %a126 = alloca %S.gen.Val, align 16 + %a127 = alloca { ptr, i64, i64 }, align 16 + %a128 = alloca %S.gen.Val, align 16 + %a150 = alloca { ptr, i64, i64 }, align 16 + %a151 = alloca { ptr, i64, i64 }, align 16 + %a154 = alloca { ptr, i64, i64 }, align 16 + %a165 = alloca %S.ast.Type, align 16 + %a166 = alloca %S.ast.Type, align 16 + %a171 = alloca %S.gen.Val, 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 + %a190 = alloca { ptr, i64, i64 }, align 16 + %a191 = alloca { ptr, i64, i64 }, align 16 + %a192 = alloca { ptr, i64, i64 }, align 16 + %a193 = alloca { ptr, i64, i64 }, align 16 + %a203 = alloca %S.gen.Val, align 16 + %a204 = alloca %S.gen.Val, align 16 + %a220 = alloca %S.gen.Val, align 16 + %a221 = alloca i64, align 16 + %a229 = alloca %S.gen.Val, align 16 store ptr %p0, ptr %a1 store i64 %p1, ptr %a2 store %S.ast.Node %p2, ptr %a3 @@ -68750,21 +81754,21 @@ entry: store { ptr, i64, i64 } %p6, ptr %a7 %t8 = load ptr, ptr %a1 %t9 = icmp eq ptr %t8, null - br i1 %t9, label %panic7614, label %ok7615 -panic7614: - call void @finch_panic(ptr @.str.5067, i64 4524, ptr @.str.5068) + br i1 %t9, label %panic8014, label %ok8015 +panic8014: + call void @finch_panic(ptr @.str.5253, i64 4863, ptr @.str.5254) unreachable -ok7615: - %t10 = getelementptr inbounds %S.gen.Gen, ptr %t8, i32 0, i32 14 +ok8015: + %t10 = getelementptr inbounds %S.gen.Gen, ptr %t8, i32 0, i32 15 %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 %range7616, label %inrange7617 -range7616: - call void @finch_panic_index(ptr @.str.5069, i64 4524, i64 %t11, i64 %t13) + br i1 %t14, label %range8016, label %inrange8017 +range8016: + call void @finch_panic_index(ptr @.str.5255, i64 4863, i64 %t11, i64 %t13) unreachable -inrange7617: +inrange8017: %t15 = extractvalue { ptr, i64, i64 } %t12, 0 %t16 = getelementptr inbounds %S.gen.FnSig, ptr %t15, i64 %t11 %t17 = load %S.gen.FnSig, ptr %t16 @@ -68776,28 +81780,28 @@ inrange7617: %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.from7618 -logic.from7618: - br i1 %t25, label %logic.rhs7619, label %logic.end7620 -logic.rhs7619: + br label %logic.from8018 +logic.from8018: + br i1 %t25, label %logic.rhs8019, label %logic.end8020 +logic.rhs8019: %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.5070, i64 4, i64 0 }, ptr %a29 + store { ptr, i64, i64 } { ptr @.str.5256, 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.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: + br label %logic.rend8021 +logic.rend8021: + br label %logic.end8020 +logic.end8020: + %t32 = phi i1 [ false, %logic.from8018 ], [ %t31, %logic.rend8021 ] + br i1 %t32, label %then8022, label %endif8024 +then8022: %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.5071, i64 52, i64 0 }) - br label %endif7624 -endif7624: + call void @finch.gen.fail(ptr %t33, %S.ast.Node %t34, { ptr, i64, i64 } { ptr @.str.5257, i64 52, i64 0 }) + br label %endif8024 +endif8024: %t35 = load ptr, ptr %a1 %t36 = load %S.ast.Node, ptr %a3 %t37 = load %S.gen.FnSig, ptr %a21 @@ -68815,11 +81819,11 @@ endif7624: %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: + br i1 %t49, label %then8025, label %endif8027 +then8025: %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 } { ptr @.str.5258, 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 @@ -68830,212 +81834,293 @@ then7625: %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) + br label %endif8027 +endif8027: + store { ptr, i64, i64 } zeroinitializer, ptr %a60 + %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.5259, i64 4874, ptr @.str.5260) unreachable -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 - 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) +ok8029: + %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 i64, ptr %t64 + store i64 %t65, ptr %a66 + %t67 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 13 + %t68 = getelementptr inbounds { ptr, i64, i64 }, ptr %t67, i32 0, i32 1 + %t69 = load i64, ptr %t68 + store i64 0, ptr %a70 + br label %for.cond8030 +for.cond8030: + %t71 = load i64, ptr %a70 + %t72 = icmp slt i64 %t71, %t69 + br i1 %t72, label %for.body8031, label %for.end8033 +for.body8031: + %t73 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 9 + %t74 = load i64, ptr %a4 + %t75 = load i64, ptr %a70 + %t76 = add i64 %t74, %t75 + %t77 = load { ptr, i64, i64 }, ptr %t73 + %t78 = extractvalue { ptr, i64, i64 } %t77, 1 + %t79 = icmp uge i64 %t76, %t78 + br i1 %t79, label %range8034, label %inrange8035 +range8034: + call void @finch_panic_index(ptr @.str.5261, i64 4876, i64 %t76, i64 %t78) unreachable -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) +inrange8035: + %t80 = extractvalue { ptr, i64, i64 } %t77, 0 + %t81 = getelementptr inbounds %S.ast.Node, ptr %t80, i64 %t76 + %t82 = load %S.ast.Node, ptr %t81 + store %S.ast.Node %t82, ptr %a83 + call void @finch.copy.S_ast_Node(ptr %a84, ptr %a83) + %t85 = load %S.ast.Node, ptr %a84 + store %S.ast.Node %t85, ptr %a86 + %t87 = load ptr, ptr %a1 + %t88 = load ptr, ptr %a1 + %t89 = load %S.ast.Node, ptr %a86 + %t90 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 13 + %t91 = load i64, ptr %a70 + %t92 = load { ptr, i64, i64 }, ptr %t90 + %t93 = extractvalue { ptr, i64, i64 } %t92, 1 + %t94 = icmp uge i64 %t91, %t93 + br i1 %t94, label %range8036, label %inrange8037 +range8036: + call void @finch_panic_index(ptr @.str.5262, i64 4877, i64 %t91, i64 %t93) unreachable -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) +inrange8037: + %t95 = extractvalue { ptr, i64, i64 } %t92, 0 + %t96 = getelementptr inbounds %S.ast.Type, ptr %t95, i64 %t91 + %t97 = load %S.ast.Type, ptr %t96 + %t98 = call %S.gen.Val @finch.gen.exprWant(ptr %t88, %S.ast.Node %t89, %S.ast.Type %t97) + %t99 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 13 + %t100 = load i64, ptr %a70 + %t101 = load { ptr, i64, i64 }, ptr %t99 + %t102 = extractvalue { ptr, i64, i64 } %t101, 1 + %t103 = icmp uge i64 %t100, %t102 + br i1 %t103, label %range8038, label %inrange8039 +range8038: + call void @finch_panic_index(ptr @.str.5263, i64 4877, i64 %t100, i64 %t102) unreachable -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) +inrange8039: + %t104 = extractvalue { ptr, i64, i64 } %t101, 0 + %t105 = getelementptr inbounds %S.ast.Type, ptr %t104, i64 %t100 + %t106 = load %S.ast.Type, ptr %t105 + %t107 = load %S.ast.Node, ptr %a86 + %t108 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 14 + %t109 = load i64, ptr %a70 + %t110 = load { ptr, i64, i64 }, ptr %t108 + %t111 = extractvalue { ptr, i64, i64 } %t110, 1 + %t112 = icmp uge i64 %t109, %t111 + br i1 %t112, label %range8040, label %inrange8041 +range8040: + call void @finch_panic_index(ptr @.str.5265, i64 4877, i64 %t109, i64 %t111) unreachable -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) +inrange8041: + %t113 = extractvalue { ptr, i64, i64 } %t110, 0 + %t114 = getelementptr inbounds { ptr, i64, i64 }, ptr %t113, i64 %t109 + %t115 = load { ptr, i64, i64 }, ptr %t114 + store { ptr, i64, i64 } { ptr @.str.5264, i64 10, 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.5266, i64 1, i64 0 }, ptr %a122 + call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122) + store { ptr, i64, i64 } %t119, ptr %a123 + call void @finch_str_drop(ptr %a123) + %t124 = load { ptr, i64, i64 }, ptr %a120 + %t125 = call %S.gen.Val @finch.gen.coerce(ptr %t87, %S.gen.Val %t98, %S.ast.Type %t106, %S.ast.Node %t107, { ptr, i64, i64 } %t124) + store %S.gen.Val %t98, ptr %a126 + call void @finch.drop.S_gen_Val(ptr %a126) + store { ptr, i64, i64 } %t124, ptr %a127 + call void @finch_str_drop(ptr %a127) + store %S.gen.Val %t125, ptr %a128 + %t129 = load ptr, ptr %a1 + %t130 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 13 + %t131 = load i64, ptr %a70 + %t132 = load { ptr, i64, i64 }, ptr %t130 + %t133 = extractvalue { ptr, i64, i64 } %t132, 1 + %t134 = icmp uge i64 %t131, %t133 + br i1 %t134, label %range8042, label %inrange8043 +range8042: + call void @finch_panic_index(ptr @.str.5267, i64 4879, i64 %t131, i64 %t133) unreachable -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 +inrange8043: + %t135 = extractvalue { ptr, i64, i64 } %t132, 0 + %t136 = getelementptr inbounds %S.ast.Type, ptr %t135, i64 %t131 + %t137 = load %S.ast.Type, ptr %t136 + %t138 = call i1 @finch.gen.owning(ptr %t129, %S.ast.Type %t137) + br label %logic.from8044 +logic.from8044: + br i1 %t138, label %logic.rhs8045, label %logic.end8046 +logic.rhs8045: + %t139 = getelementptr inbounds %S.gen.Val, ptr %a128, i32 0, i32 2 + %t140 = load i1, ptr %t139 + %t141 = xor i1 %t140, true + br label %logic.rend8047 +logic.rend8047: + br label %logic.end8046 +logic.end8046: + %t142 = phi i1 [ false, %logic.from8044 ], [ %t141, %logic.rend8047 ] + br label %logic.from8048 +logic.from8048: + br i1 %t142, label %logic.rhs8049, label %logic.end8050 +logic.rhs8049: + %t143 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 + %t144 = load i64, ptr %t143 + %t145 = icmp sgt i64 %t144, 0 + br label %logic.rend8051 +logic.rend8051: + br label %logic.end8050 +logic.end8050: + %t146 = phi i1 [ false, %logic.from8048 ], [ %t145, %logic.rend8051 ] + br label %logic.from8052 +logic.from8052: + br i1 %t146, label %logic.rhs8053, label %logic.end8054 +logic.rhs8053: + %t147 = load %S.ast.Node, ptr %a86 + %t148 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t147) + %t149 = load { ptr, i64, i64 }, ptr %a7 + store { ptr, i64, i64 } %t148, ptr %a150 + store { ptr, i64, i64 } %t149, ptr %a151 + %t152 = call i32 @finch_str_eq(ptr %a150, ptr %a151) + %t153 = icmp ne i32 %t152, 0 + store { ptr, i64, i64 } %t148, ptr %a154 + call void @finch_str_drop(ptr %a154) + br label %logic.rend8055 +logic.rend8055: + br label %logic.end8054 +logic.end8054: + %t155 = phi i1 [ false, %logic.from8052 ], [ %t153, %logic.rend8055 ] + br i1 %t155, label %then8056, label %endif8058 +then8056: + %t156 = load ptr, ptr %a1 + %t157 = getelementptr inbounds %S.gen.Val, ptr %a128, i32 0, i32 0 + %t158 = load { ptr, i64, i64 }, ptr %t157 + %t159 = getelementptr inbounds %S.gen.Val, ptr %a128, i32 0, i32 1 + %t160 = load %S.ast.Type, ptr %t159 + %t161 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t156, { ptr, i64, i64 } %t158, %S.ast.Type %t160) + %t162 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t161, 0 + %t163 = getelementptr inbounds %S.gen.Val, ptr %a128, i32 0, i32 1 + %t164 = load %S.ast.Type, ptr %t163 + store %S.ast.Type %t164, ptr %a165 + call void @finch.copy.S_ast_Type(ptr %a166, ptr %a165) + %t167 = load %S.ast.Type, ptr %a166 + %t168 = insertvalue %S.gen.Val %t162, %S.ast.Type %t167, 1 + %t169 = insertvalue %S.gen.Val %t168, i1 true, 2 + %t170 = load %S.gen.Val, ptr %a128 + store %S.gen.Val %t169, ptr %a128 + store %S.gen.Val %t170, ptr %a171 + call void @finch.drop.S_gen_Val(ptr %a171) + br label %endif8058 +endif8058: + %t172 = getelementptr inbounds { ptr, i64, i64 }, ptr %a45, i32 0, i32 1 + %t173 = load ptr, ptr %a1 + %t174 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 13 + %t175 = load i64, ptr %a70 + %t176 = load { ptr, i64, i64 }, ptr %t174 + %t177 = extractvalue { ptr, i64, i64 } %t176, 1 + %t178 = icmp uge i64 %t175, %t177 + br i1 %t178, label %range8059, label %inrange8060 +range8059: + call void @finch_panic_index(ptr @.str.5268, i64 4882, i64 %t175, i64 %t177) + unreachable +inrange8060: + %t179 = extractvalue { ptr, i64, i64 } %t176, 0 + %t180 = getelementptr inbounds %S.ast.Type, ptr %t179, i64 %t175 + %t181 = load %S.ast.Type, ptr %t180 + %t182 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t173, %S.ast.Type %t181) + store { ptr, i64, i64 } %t182, ptr %a184 + store { ptr, i64, i64 } { ptr @.str.5269, i64 1, i64 0 }, ptr %a185 + call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) + store { ptr, i64, i64 } %t182, ptr %a186 + call void @finch_str_drop(ptr %a186) + %t187 = load { ptr, i64, i64 }, ptr %a183 + %t188 = getelementptr inbounds %S.gen.Val, ptr %a128, i32 0, i32 0 + %t189 = load { ptr, i64, i64 }, ptr %t188 + store { ptr, i64, i64 } %t187, ptr %a191 + store { ptr, i64, i64 } %t189, ptr %a192 + call void @finch_str_concat(ptr %a190, ptr %a191, ptr %a192) + store { ptr, i64, i64 } %t187, ptr %a193 + call void @finch_str_drop(ptr %a193) + %t194 = load { ptr, i64, i64 }, ptr %a190 + %t195 = load i64, ptr %t172 + %t196 = add i64 %t195, 1 + call void @finch_arr_reserve(ptr %a45, i64 %t196, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t197 = load ptr, ptr %a45 + %t198 = getelementptr inbounds { ptr, i64, i64 }, ptr %t197, i64 %t195 + store { ptr, i64, i64 } %t194, ptr %t198 + store i64 %t196, ptr %t172 + %t199 = getelementptr inbounds %S.gen.Val, ptr %a128, i32 0, i32 2 + %t200 = load i1, ptr %t199 + br i1 %t200, label %then8061, label %endif8063 +then8061: + %t201 = getelementptr inbounds { ptr, i64, i64 }, ptr %a60, i32 0, i32 1 + %t202 = load %S.gen.Val, ptr %a128 + store %S.gen.Val %t202, ptr %a203 + call void @finch.copy.S_gen_Val(ptr %a204, ptr %a203) + %t205 = load %S.gen.Val, ptr %a204 + %t206 = load i64, ptr %t201 + %t207 = add i64 %t206, 1 + call void @finch_arr_reserve(ptr %a60, i64 %t207, i64 ptrtoint (ptr getelementptr (%S.gen.Val, ptr null, i32 1) to i64)) + %t208 = load ptr, ptr %a60 + %t209 = getelementptr inbounds %S.gen.Val, ptr %t208, i64 %t206 + store %S.gen.Val %t205, ptr %t209 + store i64 %t207, ptr %t201 + br label %endif8063 +endif8063: + %t210 = load ptr, ptr %a1 + %t211 = load %S.gen.Val, ptr %a128 + call void @finch.gen.hold(ptr %t210, %S.gen.Val %t211) + call void @finch.drop.S_gen_Val(ptr %a128) + call void @finch.drop.S_ast_Node(ptr %a86) + br label %for.step8032 +for.step8032: + %t212 = load i64, ptr %a70 + %t213 = add i64 %t212, 1 + store i64 %t213, ptr %a70 + br label %for.cond8030 +for.end8033: + %t214 = load ptr, ptr %a1 + %t215 = load %S.gen.FnSig, ptr %a21 + %t216 = load %S.ast.Node, ptr %a3 + %t217 = load { ptr, i64, i64 }, ptr %a45 + %t218 = load { ptr, i64, i64 }, ptr %a5 + %t219 = call %S.gen.Val @finch.gen.emitCall(ptr %t214, %S.gen.FnSig %t215, %S.ast.Node %t216, { ptr, i64, i64 } %t217, { ptr, i64, i64 } %t218) + store %S.gen.Val %t219, ptr %a220 + store i64 0, ptr %a221 + br label %each.cond8064 +each.cond8064: + %t222 = getelementptr inbounds { ptr, i64, i64 }, ptr %a60, i32 0, i32 1 + %t223 = load i64, ptr %t222 + %t224 = load i64, ptr %a221 + %t225 = icmp slt i64 %t224, %t223 + br i1 %t225, label %each.body8065, label %each.end8067 +each.body8065: + %t226 = load ptr, ptr %a60 + %t227 = getelementptr inbounds %S.gen.Val, ptr %t226, i64 %t224 + %t228 = load %S.gen.Val, ptr %t227 + store %S.gen.Val %t228, ptr %a229 + %t230 = load ptr, ptr %a1 + %t231 = load %S.gen.Val, ptr %a229 + call void @finch.gen.release(ptr %t230, %S.gen.Val %t231) + br label %each.step8066 +each.step8066: + %t232 = load i64, ptr %a221 + %t233 = add i64 %t232, 1 + store i64 %t233, ptr %a221 + br label %each.cond8064 +each.end8067: + %t234 = load ptr, ptr %a1 + %t235 = load i64, ptr %a66 + call void @finch.gen.heldEnd(ptr %t234, i64 %t235) + %t236 = load %S.gen.Val, ptr %a220 + call void @finch.drop.arr_S_gen_Val(ptr %a60) + call void @finch.drop.arr_str(ptr %a45) + call void @finch.drop.S_gen_FnSig(ptr %a21) + ret %S.gen.Val %t236 } 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) { @@ -69047,107 +82132,142 @@ entry: %a5 = alloca { ptr, i64, i64 }, align 16 %a14 = alloca { ptr, i64, i64 }, align 16 %a15 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 + %a18 = 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 + %a25 = alloca { ptr, i64, i64 }, align 16 %a27 = alloca { ptr, i64, i64 }, align 16 %a28 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 + %a29 = alloca { ptr, i64, i64 }, align 16 + %a30 = 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 %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 + %a38 = 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 - %a42 = alloca { ptr, i64, i64 }, 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 %a49 = alloca { ptr, i64, i64 }, align 16 %a50 = alloca { ptr, i64, i64 }, align 16 %a51 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 + %a52 = alloca { ptr, i64, i64 }, align 16 %a55 = 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 - %a64 = alloca { ptr, i64, i64 }, align 16 + %a63 = 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 %a72 = alloca { ptr, i64, i64 }, align 16 %a74 = alloca { ptr, i64, i64 }, align 16 %a75 = alloca { ptr, i64, i64 }, align 16 %a76 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 + %a77 = 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 %a86 = alloca { ptr, i64, i64 }, align 16 %a87 = alloca { ptr, i64, i64 }, align 16 %a88 = alloca { ptr, i64, i64 }, align 16 - %a90 = 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 + %a95 = 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 + %a99 = 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 + %a104 = alloca { ptr, i64, i64 }, align 16 %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = 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 - %a114 = 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 + %a118 = alloca { ptr, i64, i64 }, align 16 %a119 = alloca { ptr, i64, i64 }, align 16 + %a120 = 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 + %a125 = alloca { ptr, i64, i64 }, align 16 %a128 = alloca { ptr, i64, i64 }, align 16 - %a138 = 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 + %a133 = 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 %a139 = alloca { ptr, i64, i64 }, align 16 %a140 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 %a143 = alloca { ptr, i64, i64 }, align 16 %a144 = alloca { ptr, i64, i64 }, align 16 + %a145 = alloca { ptr, i64, i64 }, align 16 %a147 = alloca { ptr, i64, i64 }, align 16 %a148 = 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 + %a150 = alloca { ptr, i64, i64 }, align 16 %a153 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 + %a158 = alloca { ptr, i64, i64 }, align 16 %a163 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca %S.ast.Type, align 16 - %a169 = alloca %S.ast.Type, align 16 + %a164 = alloca { ptr, i64, i64 }, align 16 + %a165 = alloca { ptr, i64, i64 }, align 16 + %a166 = alloca { ptr, i64, i64 }, align 16 + %a168 = 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 + %a174 = alloca { ptr, i64, i64 }, align 16 + %a175 = 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 + %a179 = alloca { ptr, i64, i64 }, align 16 %a180 = alloca { ptr, i64, i64 }, align 16 %a181 = alloca { ptr, i64, i64 }, align 16 %a182 = 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 - %a189 = alloca { ptr, i64, i64 }, align 16 %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca %S.ast.Type, align 16 - %a198 = alloca %S.ast.Type, align 16 + %a194 = alloca { ptr, i64, i64 }, align 16 + %a195 = alloca { ptr, i64, i64 }, align 16 + %a200 = alloca %S.ast.Type, align 16 + %a201 = alloca %S.ast.Type, align 16 + %a208 = alloca { ptr, i64, i64 }, align 16 %a209 = alloca { ptr, i64, i64 }, align 16 %a210 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca %S.ast.Type, align 16 - %a218 = alloca %S.ast.Type, align 16 - %a227 = alloca %S.ast.Type, align 16 - %a228 = alloca %S.ast.Type, align 16 + %a211 = 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 + %a216 = 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 + %a222 = 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 + %a227 = alloca { ptr, i64, i64 }, align 16 + %a230 = alloca { ptr, i64, i64 }, align 16 + %a234 = alloca %S.ast.Type, align 16 + %a235 = alloca %S.ast.Type, align 16 + %a246 = alloca { ptr, i64, i64 }, align 16 + %a247 = alloca { ptr, i64, i64 }, align 16 + %a254 = alloca %S.ast.Type, align 16 + %a255 = alloca %S.ast.Type, align 16 + %a264 = alloca %S.ast.Type, align 16 + %a265 = alloca %S.ast.Type, align 16 store ptr %p0, ptr %a1 store %S.gen.FnSig %p1, ptr %a2 store %S.ast.Node %p2, ptr %a3 @@ -69155,18 +82275,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.from7659 -logic.from7659: - br i1 %t7, label %logic.rhs7660, label %logic.end7661 -logic.rhs7660: + br label %logic.from8068 +logic.from8068: + br i1 %t7, label %logic.rhs8069, label %logic.end8070 +logic.rhs8069: %t8 = load ptr, ptr %a1 %t9 = icmp eq ptr %t8, null - br i1 %t9, label %panic7662, label %ok7663 -panic7662: - call void @finch_panic(ptr @.str.5082, i64 4548, ptr @.str.5083) + br i1 %t9, label %panic8071, label %ok8072 +panic8071: + call void @finch_panic(ptr @.str.5270, i64 4898, ptr @.str.5271) unreachable -ok7663: - %t10 = getelementptr inbounds %S.gen.Gen, ptr %t8, i32 0, i32 39 +ok8072: + %t10 = getelementptr inbounds %S.gen.Gen, ptr %t8, i32 0, i32 40 %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) @@ -69174,259 +82294,339 @@ ok7663: 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.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.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.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 - store { ptr, i64, i64 } %t29, 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.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 - store { ptr, i64, i64 } %t38, 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.5087, i64 27, i64 0 }, ptr %a46 + store { ptr, i64, i64 } %t13, ptr %a18 + call void @finch_str_drop(ptr %a18) + br label %logic.rend8073 +logic.rend8073: + br label %logic.end8070 +logic.end8070: + %t19 = phi i1 [ false, %logic.from8068 ], [ %t17, %logic.rend8073 ] + br i1 %t19, label %then8074, label %endif8076 +then8074: + %t20 = load ptr, ptr %a1 + %t21 = load %S.ast.Node, ptr %a3 + %t22 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.5272, i64 1, 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.5273, i64 39, i64 0 }, ptr %a29 + call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) + store { ptr, i64, i64 } %t26, ptr %a30 + call void @finch_str_drop(ptr %a30) + %t31 = load { ptr, i64, i64 }, ptr %a27 + %t32 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } %t31, ptr %a34 + store { ptr, i64, i64 } %t32, ptr %a35 + call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) + store { ptr, i64, i64 } %t31, ptr %a36 + call void @finch_str_drop(ptr %a36) + %t37 = load { ptr, i64, i64 }, ptr %a33 + store { ptr, i64, i64 } %t37, ptr %a39 + store { ptr, i64, i64 } { ptr @.str.5274, i64 19, i64 0 }, ptr %a40 + call void @finch_str_concat(ptr %a38, ptr %a39, ptr %a40) + store { ptr, i64, i64 } %t37, ptr %a41 + call void @finch_str_drop(ptr %a41) + %t42 = load { ptr, i64, i64 }, ptr %a38 + %t43 = load { ptr, i64, i64 }, ptr %a5 + 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, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t47, ptr %a50 - store { ptr, i64, i64 } %t48, ptr %a51 + store { ptr, i64, i64 } %t42, ptr %a47 + call void @finch_str_drop(ptr %a47) + %t48 = load { ptr, i64, i64 }, ptr %a44 + store { ptr, i64, i64 } %t48, ptr %a50 + store { ptr, i64, i64 } { ptr @.str.5275, i64 27, i64 0 }, 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.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 %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.5089, i64 5, i64 0 }, ptr %a61 - store { ptr, i64, i64 } %t59, ptr %a62 + store { ptr, i64, i64 } %t48, ptr %a52 + call void @finch_str_drop(ptr %a52) + %t53 = load { ptr, i64, i64 }, ptr %a49 + %t54 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } %t53, ptr %a56 + store { ptr, i64, i64 } %t54, ptr %a57 + call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) + store { ptr, i64, i64 } %t53, ptr %a58 + call void @finch_str_drop(ptr %a58) + %t59 = load { ptr, i64, i64 }, ptr %a55 + store { ptr, i64, i64 } %t59, ptr %a61 + store { ptr, i64, i64 } { ptr @.str.5276, i64 5, i64 0 }, 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.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 - %t69 = load { ptr, i64, i64 }, ptr %t68 - store { ptr, i64, i64 } %t67, 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 } %t59, ptr %a63 + call void @finch_str_drop(ptr %a63) + %t64 = load { ptr, i64, i64 }, ptr %a60 + call void @finch.gen.fail(ptr %t20, %S.ast.Node %t21, { ptr, i64, i64 } %t64) + store { ptr, i64, i64 } %t64, ptr %a65 + call void @finch_str_drop(ptr %a65) + br label %endif8076 +endif8076: + %t66 = load ptr, ptr %a1 + %t67 = load %S.gen.FnSig, ptr %a2 + %t68 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t66, %S.gen.FnSig %t67) + store { ptr, i64, i64 } { ptr @.str.5277, i64 5, i64 0 }, ptr %a70 + store { ptr, i64, i64 } %t68, ptr %a71 + call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) + store { ptr, i64, i64 } %t68, ptr %a72 + call void @finch_str_drop(ptr %a72) + %t73 = load { ptr, i64, i64 }, ptr %a69 store { ptr, i64, i64 } %t73, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.5091, i64 1, i64 0 }, ptr %a76 + store { ptr, i64, i64 } { ptr @.str.5278, 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.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 - 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 } %t73, ptr %a77 + call void @finch_str_drop(ptr %a77) + %t78 = load { ptr, i64, i64 }, ptr %a74 + %t79 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 11 + %t80 = load { ptr, i64, i64 }, ptr %t79 + store { ptr, i64, i64 } %t78, ptr %a82 + store { ptr, i64, i64 } %t80, ptr %a83 + call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) + store { ptr, i64, i64 } %t78, ptr %a84 + call void @finch_str_drop(ptr %a84) + %t85 = load { ptr, i64, i64 }, ptr %a81 store { ptr, i64, i64 } %t85, ptr %a87 - store { ptr, i64, i64 } { ptr @.str.5093, i64 1, i64 0 }, ptr %a88 + store { ptr, i64, i64 } { ptr @.str.5279, 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 %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) - store { ptr, i64, i64 } %t95, ptr %a96 - %t97 = load ptr, ptr %a1 - %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.5094, i64 13, i64 0 }, ptr %a102 - store { ptr, i64, i64 } %t100, ptr %a103 + store { ptr, i64, i64 } %t85, ptr %a89 + call void @finch_str_drop(ptr %a89) + %t90 = load { ptr, i64, i64 }, ptr %a86 + %t91 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.5280, i64 2, i64 0 }, ptr %a92 + call void @finch_str_join(ptr %a93, ptr %a4, ptr %a92) + %t94 = load { ptr, i64, i64 }, ptr %a93 + store { ptr, i64, i64 } %t90, ptr %a96 + store { ptr, i64, i64 } %t94, ptr %a97 + call void @finch_str_concat(ptr %a95, ptr %a96, ptr %a97) + store { ptr, i64, i64 } %t90, ptr %a98 + call void @finch_str_drop(ptr %a98) + store { ptr, i64, i64 } %t94, ptr %a99 + call void @finch_str_drop(ptr %a99) + %t100 = load { ptr, i64, i64 }, ptr %a95 + store { ptr, i64, i64 } %t100, ptr %a102 + store { ptr, i64, i64 } { ptr @.str.5281, i64 1, i64 0 }, 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.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 - store { ptr, i64, i64 } %t108, 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.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.5097, i64 7, i64 0 }, ptr %a123 - store { ptr, i64, i64 } %t121, ptr %a124 + store { ptr, i64, i64 } %t100, ptr %a104 + call void @finch_str_drop(ptr %a104) + %t105 = load { ptr, i64, i64 }, ptr %a101 + store { ptr, i64, i64 } %t105, ptr %a106 + %t107 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 9 + %t108 = load i1, ptr %t107 + br i1 %t108, label %then8077, label %endif8079 +then8077: + %t109 = load ptr, ptr %a1 + %t110 = load { ptr, i64, i64 }, ptr %a106 + %t111 = call { ptr, i64, i64 } @finch.gen.op(ptr %t109, { ptr, i64, i64 } %t110) + store { ptr, i64, i64 } %t111, ptr %a112 + %t113 = load ptr, ptr %a1 + %t114 = load ptr, ptr %a1 + %t115 = load %S.gen.FnSig, ptr %a2 + %t116 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t114, %S.gen.FnSig %t115) + store { ptr, i64, i64 } { ptr @.str.5282, i64 13, i64 0 }, ptr %a118 + store { ptr, i64, i64 } %t116, ptr %a119 + call void @finch_str_concat(ptr %a117, ptr %a118, ptr %a119) + store { ptr, i64, i64 } %t116, ptr %a120 + call void @finch_str_drop(ptr %a120) + %t121 = load { ptr, i64, i64 }, ptr %a117 + store { ptr, i64, i64 } %t121, ptr %a123 + store { ptr, i64, i64 } { ptr @.str.5283, i64 1, i64 0 }, 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.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 %panic7671, label %ok7672 -panic7671: - call void @finch_panic(ptr @.str.5099, i64 4555, ptr @.str.5100) - unreachable -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.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.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 - store { ptr, i64, i64 } %t145, ptr %a148 - store { ptr, i64, i64 } %t146, ptr %a149 + store { ptr, i64, i64 } %t121, ptr %a125 + call void @finch_str_drop(ptr %a125) + %t126 = load { ptr, i64, i64 }, ptr %a122 + %t127 = load { ptr, i64, i64 }, ptr %a112 + store { ptr, i64, i64 } %t126, ptr %a129 + store { ptr, i64, i64 } %t127, ptr %a130 + call void @finch_str_concat(ptr %a128, ptr %a129, ptr %a130) + store { ptr, i64, i64 } %t126, ptr %a131 + call void @finch_str_drop(ptr %a131) + %t132 = load { ptr, i64, i64 }, ptr %a128 + store { ptr, i64, i64 } %t132, ptr %a134 + store { ptr, i64, i64 } { ptr @.str.5284, i64 3, i64 0 }, ptr %a135 + call void @finch_str_concat(ptr %a133, ptr %a134, ptr %a135) + store { ptr, i64, i64 } %t132, ptr %a136 + call void @finch_str_drop(ptr %a136) + %t137 = load { ptr, i64, i64 }, ptr %a133 + %t138 = call { ptr, i64, i64 } @finch.gen.op(ptr %t113, { ptr, i64, i64 } %t137) + store { ptr, i64, i64 } %t137, ptr %a139 + call void @finch_str_drop(ptr %a139) + store { ptr, i64, i64 } %t138, ptr %a140 + %t141 = load ptr, ptr %a1 + %t142 = load { ptr, i64, i64 }, ptr %a140 + store { ptr, i64, i64 } { ptr @.str.5285, i64 7, i64 0 }, ptr %a144 + store { ptr, i64, i64 } %t142, 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 %a148 + store { ptr, i64, i64 } { ptr @.str.5286, i64 6, i64 0 }, ptr %a149 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.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 %panic7673, label %ok7674 -panic7673: - call void @finch_panic(ptr @.str.5104, i64 4556, ptr @.str.5105) + store { ptr, i64, i64 } %t146, ptr %a150 + call void @finch_str_drop(ptr %a150) + %t151 = load { ptr, i64, i64 }, ptr %a147 + %t152 = call { ptr, i64, i64 } @finch.gen.op(ptr %t141, { ptr, i64, i64 } %t151) + store { ptr, i64, i64 } %t151, ptr %a153 + call void @finch_str_drop(ptr %a153) + %t154 = load ptr, ptr %a1 + %t155 = icmp eq ptr %t154, null + br i1 %t155, label %panic8080, label %ok8081 +panic8080: + call void @finch_panic(ptr @.str.5287, i64 4905, ptr @.str.5288) unreachable -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.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 %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 - call void @finch.copy.S_ast_Type(ptr %a169, ptr %a168) - %t170 = load %S.ast.Type, ptr %a169 - %t171 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t170, 1 - ret %S.gen.Val %t171 -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.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.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 - store { ptr, i64, i64 } %t183, 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.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) - %t194 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t193, 0 - %t195 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t196 = load %S.ast.Type, ptr %t195 - store %S.ast.Type %t196, ptr %a197 - call void @finch.copy.S_ast_Type(ptr %a198, ptr %a197) - %t199 = load %S.ast.Type, ptr %a198 - %t200 = insertvalue %S.gen.Val %t194, %S.ast.Type %t199, 1 - %t201 = load ptr, ptr %a1 - %t202 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t203 = load %S.ast.Type, ptr %t202 - %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 -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.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 %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) - %t215 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t216 = load %S.ast.Type, ptr %t215 - 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 zeroinitializer, %S.ast.Type %t219, 1 - ret %S.gen.Val %t220 -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) - %t224 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t223, 0 - %t225 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t226 = load %S.ast.Type, ptr %t225 - store %S.ast.Type %t226, ptr %a227 - call void @finch.copy.S_ast_Type(ptr %a228, ptr %a227) - %t229 = load %S.ast.Type, ptr %a228 - %t230 = insertvalue %S.gen.Val %t224, %S.ast.Type %t229, 1 - %t231 = load ptr, ptr %a1 +ok8081: + %t156 = getelementptr inbounds %S.gen.Gen, ptr %t154, i32 0, i32 41 + %t157 = load { ptr, i64, i64 }, ptr %t156 + store { ptr, i64, i64 } %t152, ptr %t156 + store { ptr, i64, i64 } %t157, ptr %a158 + call void @finch_str_drop(ptr %a158) + %t159 = load ptr, ptr %a1 + %t160 = load ptr, ptr %a1 + %t161 = load %S.gen.FnSig, ptr %a2 + %t162 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t160, %S.gen.FnSig %t161) + store { ptr, i64, i64 } { ptr @.str.5289, i64 13, i64 0 }, ptr %a164 + store { ptr, i64, i64 } %t162, ptr %a165 + call void @finch_str_concat(ptr %a163, ptr %a164, ptr %a165) + store { ptr, i64, i64 } %t162, ptr %a166 + call void @finch_str_drop(ptr %a166) + %t167 = load { ptr, i64, i64 }, ptr %a163 + store { ptr, i64, i64 } %t167, ptr %a169 + store { ptr, i64, i64 } { ptr @.str.5290, i64 1, i64 0 }, ptr %a170 + call void @finch_str_concat(ptr %a168, ptr %a169, ptr %a170) + store { ptr, i64, i64 } %t167, ptr %a171 + call void @finch_str_drop(ptr %a171) + %t172 = load { ptr, i64, i64 }, ptr %a168 + %t173 = load { ptr, i64, i64 }, ptr %a112 + store { ptr, i64, i64 } %t172, ptr %a175 + store { ptr, i64, i64 } %t173, ptr %a176 + call void @finch_str_concat(ptr %a174, ptr %a175, ptr %a176) + store { ptr, i64, i64 } %t172, ptr %a177 + call void @finch_str_drop(ptr %a177) + %t178 = load { ptr, i64, i64 }, ptr %a174 + store { ptr, i64, i64 } %t178, ptr %a180 + store { ptr, i64, i64 } { ptr @.str.5291, i64 3, i64 0 }, ptr %a181 + call void @finch_str_concat(ptr %a179, ptr %a180, ptr %a181) + store { ptr, i64, i64 } %t178, ptr %a182 + call void @finch_str_drop(ptr %a182) + %t183 = load { ptr, i64, i64 }, ptr %a179 + %t184 = call { ptr, i64, i64 } @finch.gen.op(ptr %t159, { ptr, i64, i64 } %t183) + store { ptr, i64, i64 } %t183, ptr %a185 + call void @finch_str_drop(ptr %a185) + %t186 = load ptr, ptr %a1 + %t187 = icmp eq ptr %t186, null + br i1 %t187, label %panic8082, label %ok8083 +panic8082: + call void @finch_panic(ptr @.str.5292, i64 4906, ptr @.str.5293) + unreachable +ok8083: + %t188 = getelementptr inbounds %S.gen.Gen, ptr %t186, i32 0, i32 42 + %t189 = load { ptr, i64, i64 }, ptr %t188 + store { ptr, i64, i64 } %t184, ptr %t188 + store { ptr, i64, i64 } %t189, ptr %a190 + call void @finch_str_drop(ptr %a190) + %t191 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 + %t192 = getelementptr inbounds %S.ast.Type, ptr %t191, i32 0, i32 0 + %t193 = load { ptr, i64, i64 }, ptr %t192 + store { ptr, i64, i64 } %t193, ptr %a194 + store { ptr, i64, i64 } { ptr @.str.5294, i64 4, i64 0 }, ptr %a195 + %t196 = call i32 @finch_str_eq(ptr %a194, ptr %a195) + %t197 = icmp ne i32 %t196, 0 + br i1 %t197, label %then8084, label %endif8086 +then8084: + %t198 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 + %t199 = load %S.ast.Type, ptr %t198 + store %S.ast.Type %t199, ptr %a200 + call void @finch.copy.S_ast_Type(ptr %a201, ptr %a200) + %t202 = load %S.ast.Type, ptr %a201 + %t203 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t202, 1 + call void @finch_str_drop(ptr %a140) + call void @finch_str_drop(ptr %a112) + call void @finch_str_drop(ptr %a106) + ret %S.gen.Val %t203 +endif8086: + %t204 = load ptr, ptr %a1 + %t205 = load ptr, ptr %a1 + %t206 = load %S.gen.FnSig, ptr %a2 + %t207 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t205, %S.gen.FnSig %t206) + store { ptr, i64, i64 } { ptr @.str.5295, i64 13, i64 0 }, ptr %a209 + store { ptr, i64, i64 } %t207, ptr %a210 + call void @finch_str_concat(ptr %a208, ptr %a209, ptr %a210) + store { ptr, i64, i64 } %t207, ptr %a211 + call void @finch_str_drop(ptr %a211) + %t212 = load { ptr, i64, i64 }, ptr %a208 + store { ptr, i64, i64 } %t212, ptr %a214 + store { ptr, i64, i64 } { ptr @.str.5296, i64 1, i64 0 }, ptr %a215 + call void @finch_str_concat(ptr %a213, ptr %a214, ptr %a215) + store { ptr, i64, i64 } %t212, ptr %a216 + call void @finch_str_drop(ptr %a216) + %t217 = load { ptr, i64, i64 }, ptr %a213 + %t218 = load { ptr, i64, i64 }, ptr %a112 + store { ptr, i64, i64 } %t217, ptr %a220 + store { ptr, i64, i64 } %t218, ptr %a221 + call void @finch_str_concat(ptr %a219, ptr %a220, ptr %a221) + store { ptr, i64, i64 } %t217, ptr %a222 + call void @finch_str_drop(ptr %a222) + %t223 = load { ptr, i64, i64 }, ptr %a219 + store { ptr, i64, i64 } %t223, ptr %a225 + store { ptr, i64, i64 } { ptr @.str.5297, i64 3, i64 0 }, ptr %a226 + call void @finch_str_concat(ptr %a224, ptr %a225, ptr %a226) + store { ptr, i64, i64 } %t223, ptr %a227 + call void @finch_str_drop(ptr %a227) + %t228 = load { ptr, i64, i64 }, ptr %a224 + %t229 = call { ptr, i64, i64 } @finch.gen.op(ptr %t204, { ptr, i64, i64 } %t228) + store { ptr, i64, i64 } %t228, ptr %a230 + call void @finch_str_drop(ptr %a230) + %t231 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t229, 0 %t232 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 %t233 = load %S.ast.Type, ptr %t232 - %t234 = call i1 @finch.gen.owning(ptr %t231, %S.ast.Type %t233) - %t235 = insertvalue %S.gen.Val %t230, i1 %t234, 2 - ret %S.gen.Val %t235 + store %S.ast.Type %t233, ptr %a234 + call void @finch.copy.S_ast_Type(ptr %a235, ptr %a234) + %t236 = load %S.ast.Type, ptr %a235 + %t237 = insertvalue %S.gen.Val %t231, %S.ast.Type %t236, 1 + %t238 = load ptr, ptr %a1 + %t239 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 + %t240 = load %S.ast.Type, ptr %t239 + %t241 = call i1 @finch.gen.owning(ptr %t238, %S.ast.Type %t240) + %t242 = insertvalue %S.gen.Val %t237, i1 %t241, 2 + call void @finch_str_drop(ptr %a140) + call void @finch_str_drop(ptr %a112) + call void @finch_str_drop(ptr %a106) + ret %S.gen.Val %t242 +endif8079: + %t243 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 + %t244 = getelementptr inbounds %S.ast.Type, ptr %t243, i32 0, i32 0 + %t245 = load { ptr, i64, i64 }, ptr %t244 + store { ptr, i64, i64 } %t245, ptr %a246 + store { ptr, i64, i64 } { ptr @.str.5298, i64 4, i64 0 }, ptr %a247 + %t248 = call i32 @finch_str_eq(ptr %a246, ptr %a247) + %t249 = icmp ne i32 %t248, 0 + br i1 %t249, label %then8087, label %endif8089 +then8087: + %t250 = load ptr, ptr %a1 + %t251 = load { ptr, i64, i64 }, ptr %a106 + call void @finch.gen.emit(ptr %t250, { ptr, i64, i64 } %t251) + %t252 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 + %t253 = load %S.ast.Type, ptr %t252 + store %S.ast.Type %t253, ptr %a254 + call void @finch.copy.S_ast_Type(ptr %a255, ptr %a254) + %t256 = load %S.ast.Type, ptr %a255 + %t257 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t256, 1 + call void @finch_str_drop(ptr %a106) + ret %S.gen.Val %t257 +endif8089: + %t258 = load ptr, ptr %a1 + %t259 = load { ptr, i64, i64 }, ptr %a106 + %t260 = call { ptr, i64, i64 } @finch.gen.op(ptr %t258, { ptr, i64, i64 } %t259) + %t261 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t260, 0 + %t262 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 + %t263 = load %S.ast.Type, ptr %t262 + store %S.ast.Type %t263, ptr %a264 + call void @finch.copy.S_ast_Type(ptr %a265, ptr %a264) + %t266 = load %S.ast.Type, ptr %a265 + %t267 = insertvalue %S.gen.Val %t261, %S.ast.Type %t266, 1 + %t268 = load ptr, ptr %a1 + %t269 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 + %t270 = load %S.ast.Type, ptr %t269 + %t271 = call i1 @finch.gen.owning(ptr %t268, %S.ast.Type %t270) + %t272 = insertvalue %S.gen.Val %t267, i1 %t271, 2 + call void @finch_str_drop(ptr %a106) + ret %S.gen.Val %t272 } define internal %S.gen.Val @finch.gen.construct(ptr %p0, i64 %p1, { ptr, i64, i64 } %p2, { ptr, i64, i64 } %p3, %S.ast.Node %p4) { @@ -69442,138 +82642,188 @@ entry: %a20 = alloca %S.ast.Node, align 16 %a43 = alloca %S.ast.Node, align 16 %a44 = alloca %S.ast.Node, 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 - %a59 = alloca %S.ast.Type, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca i1, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca i64, align 16 - %a93 = alloca i64, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 + %a47 = alloca %S.ast.Node, align 16 + %a51 = alloca { ptr, i64, i64 }, align 16 + %a52 = alloca { ptr, i64, i64 }, align 16 + %a57 = alloca { ptr, i64, i64 }, align 16 + %a58 = alloca { ptr, i64, i64 }, align 16 + %a61 = alloca %S.ast.Type, align 16 + %a65 = alloca { ptr, i64, i64 }, align 16 + %a78 = alloca i1, align 16 + %a79 = alloca { ptr, i64, i64 }, align 16 + %a83 = alloca i64, align 16 + %a95 = alloca i64, align 16 %a129 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 + %a130 = alloca { ptr, i64, i64 }, align 16 + %a131 = alloca { ptr, i64, i64 }, align 16 %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = 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 %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 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 + %a147 = 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 - %a158 = alloca { ptr, i64, i64 }, align 16 + %a155 = alloca { ptr, i64, i64 }, align 16 + %a156 = alloca { ptr, i64, i64 }, align 16 + %a157 = 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 %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca i64, align 16 - %a185 = alloca i64, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 + %a166 = alloca { ptr, i64, i64 }, align 16 + %a167 = alloca { ptr, i64, i64 }, align 16 + %a168 = alloca { ptr, i64, i64 }, align 16 + %a169 = alloca { ptr, i64, i64 }, align 16 + %a171 = 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 + %a193 = alloca i64, align 16 %a196 = alloca i64, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 + %a201 = alloca { ptr, i64, i64 }, align 16 + %a202 = alloca { ptr, i64, i64 }, align 16 + %a207 = alloca i64, align 16 %a220 = alloca { ptr, i64, i64 }, align 16 %a221 = alloca { ptr, i64, i64 }, align 16 %a222 = 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 - %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 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca i64, align 16 - %a283 = alloca %S.ast.Type, align 16 - %a284 = alloca %S.ast.Type, align 16 - %a286 = alloca %S.ast.Type, align 16 - %a287 = alloca %S.gen.Val, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a337 = 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 + %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 + %a239 = alloca { ptr, i64, i64 }, align 16 + %a241 = 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 + %a274 = alloca { ptr, i64, i64 }, align 16 + %a284 = alloca { ptr, i64, i64 }, align 16 + %a290 = alloca i64, align 16 + %a294 = alloca i64, align 16 + %a305 = alloca %S.ast.Type, align 16 + %a306 = alloca %S.ast.Type, align 16 + %a308 = alloca %S.ast.Type, align 16 + %a309 = alloca %S.gen.Val, align 16 + %a357 = alloca { ptr, i64, i64 }, align 16 + %a358 = alloca { ptr, i64, i64 }, align 16 + %a359 = 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 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a382 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca { ptr, i64, i64 }, align 16 + %a367 = alloca %S.gen.Val, align 16 + %a368 = alloca { ptr, i64, i64 }, align 16 + %a370 = alloca %S.gen.Val, align 16 %a390 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a404 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca { ptr, i64, i64 }, align 16 + %a391 = alloca { ptr, i64, i64 }, align 16 + %a393 = alloca { ptr, i64, i64 }, align 16 + %a398 = alloca { ptr, i64, i64 }, align 16 + %a399 = alloca { ptr, i64, i64 }, align 16 + %a401 = alloca { ptr, i64, i64 }, align 16 + %a406 = alloca { ptr, i64, i64 }, align 16 %a407 = alloca { ptr, i64, i64 }, align 16 - %a412 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a421 = alloca { ptr, i64, i64 }, align 16 - %a422 = alloca { ptr, i64, i64 }, align 16 - %a465 = alloca { ptr, i64, i64 }, align 16 - %a466 = alloca { ptr, i64, i64 }, align 16 - %a467 = 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 - %a478 = alloca { ptr, i64, i64 }, align 16 - %a479 = alloca { ptr, i64, i64 }, align 16 - %a485 = alloca { ptr, i64, i64 }, align 16 - %a486 = alloca { ptr, i64, i64 }, align 16 - %a492 = alloca { ptr, i64, i64 }, align 16 - %a493 = alloca { ptr, i64, i64 }, align 16 - %a499 = alloca { ptr, i64, i64 }, align 16 + %a409 = alloca { ptr, i64, i64 }, align 16 + %a414 = alloca { ptr, i64, i64 }, align 16 + %a415 = alloca { ptr, i64, i64 }, align 16 + %a417 = alloca { ptr, i64, i64 }, align 16 + %a423 = alloca { ptr, i64, i64 }, align 16 + %a424 = alloca { ptr, i64, i64 }, align 16 + %a427 = alloca { ptr, i64, i64 }, align 16 + %a433 = alloca { ptr, i64, i64 }, align 16 + %a434 = 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 + %a447 = alloca { ptr, i64, i64 }, align 16 + %a454 = alloca { ptr, i64, i64 }, align 16 + %a455 = alloca { ptr, i64, i64 }, align 16 + %a458 = alloca { ptr, i64, i64 }, align 16 %a500 = alloca { ptr, i64, i64 }, align 16 + %a501 = alloca { ptr, i64, i64 }, align 16 + %a502 = alloca { ptr, i64, i64 }, align 16 %a504 = alloca { ptr, i64, i64 }, align 16 %a505 = alloca { ptr, i64, i64 }, align 16 %a506 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a509 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca { ptr, i64, 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 + %a507 = alloca { ptr, i64, i64 }, align 16 + %a510 = alloca %S.gen.Val, align 16 + %a511 = alloca { ptr, i64, i64 }, align 16 + %a513 = alloca %S.gen.Val, align 16 %a518 = alloca { ptr, i64, i64 }, align 16 %a519 = alloca { ptr, i64, i64 }, align 16 - %a524 = alloca { ptr, i64, i64 }, align 16 - %a525 = alloca { ptr, i64, i64 }, align 16 - %a526 = alloca { ptr, i64, i64 }, align 16 + %a522 = 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 - %a530 = alloca { ptr, i64, i64 }, align 16 - %a535 = alloca { ptr, i64, i64 }, align 16 + %a531 = alloca { ptr, i64, i64 }, align 16 %a536 = alloca { ptr, i64, i64 }, align 16 %a537 = 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 - %a551 = alloca { ptr, i64, i64 }, align 16 + %a545 = alloca { ptr, i64, i64 }, align 16 + %a546 = alloca { ptr, i64, i64 }, align 16 + %a549 = 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 { ptr, i64, i64 }, align 16 - %a562 = alloca { ptr, i64, i64 }, align 16 - %a566 = alloca %S.ast.Type, align 16 - %a567 = alloca %S.ast.Type, align 16 + %a556 = alloca { ptr, i64, i64 }, align 16 + %a557 = alloca { ptr, i64, i64 }, align 16 + %a561 = alloca %S.ast.Type, align 16 + %a562 = alloca %S.ast.Type, align 16 + %a566 = alloca %S.gen.Val, align 16 + %a569 = alloca { ptr, i64, i64 }, align 16 + %a570 = alloca { ptr, i64, i64 }, align 16 + %a571 = alloca { ptr, i64, i64 }, align 16 + %a573 = alloca { ptr, i64, i64 }, align 16 + %a574 = alloca { ptr, i64, i64 }, align 16 + %a575 = alloca { ptr, i64, i64 }, align 16 + %a576 = alloca { ptr, i64, i64 }, align 16 + %a579 = alloca { ptr, i64, i64 }, align 16 + %a580 = alloca { ptr, i64, i64 }, align 16 + %a581 = alloca { ptr, i64, i64 }, align 16 + %a582 = alloca { ptr, i64, i64 }, align 16 + %a584 = alloca { ptr, i64, i64 }, align 16 + %a585 = alloca { ptr, i64, i64 }, align 16 + %a586 = alloca { ptr, i64, i64 }, align 16 + %a587 = alloca { ptr, i64, i64 }, align 16 + %a592 = alloca { ptr, i64, i64 }, align 16 + %a593 = alloca { ptr, i64, i64 }, align 16 + %a594 = alloca { ptr, i64, i64 }, align 16 + %a595 = alloca { ptr, i64, i64 }, align 16 + %a596 = alloca { ptr, i64, i64 }, align 16 + %a598 = alloca { ptr, i64, i64 }, align 16 + %a599 = alloca { ptr, i64, i64 }, align 16 + %a600 = alloca { ptr, i64, i64 }, align 16 + %a601 = alloca { ptr, i64, i64 }, align 16 + %a604 = 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 + %a610 = alloca { ptr, i64, i64 }, align 16 + %a611 = alloca { ptr, i64, i64 }, align 16 + %a612 = alloca { ptr, i64, i64 }, align 16 + %a622 = 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 + %a628 = alloca { ptr, i64, i64 }, align 16 + %a631 = alloca { ptr, i64, i64 }, align 16 + %a633 = alloca { ptr, i64, i64 }, align 16 + %a639 = alloca { ptr, i64, i64 }, align 16 + %a640 = alloca { ptr, i64, i64 }, align 16 + %a644 = alloca %S.ast.Type, align 16 + %a645 = alloca %S.ast.Type, align 16 store ptr %p0, ptr %a1 store i64 %p1, ptr %a2 store { ptr, i64, i64 } %p2, ptr %a3 @@ -69581,21 +82831,21 @@ entry: store %S.ast.Node %p4, ptr %a5 %t6 = load ptr, ptr %a1 %t7 = icmp eq ptr %t6, null - br i1 %t7, label %panic7681, label %ok7682 -panic7681: - call void @finch_panic(ptr @.str.5111, i64 4570, ptr @.str.5112) + br i1 %t7, label %panic8090, label %ok8091 +panic8090: + call void @finch_panic(ptr @.str.5299, i64 4920, ptr @.str.5300) unreachable -ok7682: - %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 15 +ok8091: + %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 %range7683, label %inrange7684 -range7683: - call void @finch_panic_index(ptr @.str.5113, i64 4570, i64 %t9, i64 %t11) + br i1 %t12, label %range8092, label %inrange8093 +range8092: + call void @finch_panic_index(ptr @.str.5301, i64 4920, i64 %t9, i64 %t11) unreachable -inrange7684: +inrange8093: %t13 = extractvalue { ptr, i64, i64 } %t10, 0 %t14 = getelementptr inbounds %S.gen.StructDef, ptr %t13, i64 %t9 %t15 = load %S.gen.StructDef, ptr %t14 @@ -69607,26 +82857,26 @@ inrange7684: %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 %then7685, label %endif7687 -then7685: + br i1 %t23, label %then8094, label %endif8096 +then8094: %t24 = load ptr, ptr %a1 %t25 = icmp eq ptr %t24, null - br i1 %t25, label %panic7688, label %ok7689 -panic7688: - call void @finch_panic(ptr @.str.5114, i64 4573, ptr @.str.5115) + br i1 %t25, label %panic8097, label %ok8098 +panic8097: + call void @finch_panic(ptr @.str.5302, i64 4923, ptr @.str.5303) unreachable -ok7689: +ok8098: %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 %range7690, label %inrange7691 -range7690: - call void @finch_panic_index(ptr @.str.5116, i64 4573, i64 %t28, i64 %t30) + br i1 %t31, label %range8099, label %inrange8100 +range8099: + call void @finch_panic_index(ptr @.str.5304, i64 4923, i64 %t28, i64 %t30) unreachable -inrange7691: +inrange8100: %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 @@ -69635,842 +82885,987 @@ inrange7691: %t37 = load { ptr, i64, i64 }, ptr %t34 %t38 = extractvalue { ptr, i64, i64 } %t37, 1 %t39 = icmp uge i64 %t36, %t38 - br i1 %t39, label %range7692, label %inrange7693 -range7692: - call void @finch_panic_index(ptr @.str.5117, i64 4573, i64 %t36, i64 %t38) + br i1 %t39, label %range8101, label %inrange8102 +range8101: + call void @finch_panic_index(ptr @.str.5305, i64 4923, i64 %t36, i64 %t38) unreachable -inrange7693: +inrange8102: %t40 = extractvalue { ptr, i64, i64 } %t37, 0 %t41 = getelementptr inbounds %S.ast.Node, ptr %t40, i64 %t36 %t42 = load %S.ast.Node, ptr %t41 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 + %t46 = load %S.ast.Node, ptr %a20 store %S.ast.Node %t45, ptr %a20 - 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 - call void @finch_str_copy(ptr %a50, ptr %a49) - %t51 = load { ptr, i64, i64 }, ptr %a50 - %t52 = insertvalue %S.ast.Type %t46, { ptr, i64, i64 } %t51, 2 - %t53 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 0 - %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.ast.Type %t52, { ptr, i64, i64 } %t57, 3 - store %S.ast.Type %t58, ptr %a59 - %t60 = load ptr, ptr %a1 - %t61 = load %S.ast.Type, ptr %a59 - %t62 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t60, %S.ast.Type %t61) - store { ptr, i64, i64 } %t62, ptr %a63 - %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.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 %range7697, label %inrange7698 -range7697: - call void @finch_panic_index(ptr @.str.5119, i64 4577, i64 0, i64 %t68) + store %S.ast.Node %t46, ptr %a47 + call void @finch.drop.S_ast_Node(ptr %a47) + br label %endif8096 +endif8096: + %t48 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.5306, i64 6, i64 0 }, 0 + %t49 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 1 + %t50 = load { ptr, i64, i64 }, ptr %t49 + store { ptr, i64, i64 } %t50, ptr %a51 + call void @finch_str_copy(ptr %a52, ptr %a51) + %t53 = load { ptr, i64, i64 }, ptr %a52 + %t54 = insertvalue %S.ast.Type %t48, { ptr, i64, i64 } %t53, 2 + %t55 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 0 + %t56 = load { ptr, i64, i64 }, ptr %t55 + store { ptr, i64, i64 } %t56, ptr %a57 + call void @finch_str_copy(ptr %a58, ptr %a57) + %t59 = load { ptr, i64, i64 }, ptr %a58 + %t60 = insertvalue %S.ast.Type %t54, { ptr, i64, i64 } %t59, 3 + store %S.ast.Type %t60, ptr %a61 + %t62 = load ptr, ptr %a1 + %t63 = load %S.ast.Type, ptr %a61 + %t64 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t62, %S.ast.Type %t63) + store { ptr, i64, i64 } %t64, ptr %a65 + %t66 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 + %t67 = load i64, ptr %t66 + %t68 = icmp sgt i64 %t67, 0 + br label %logic.from8103 +logic.from8103: + br i1 %t68, label %logic.rhs8104, label %logic.end8105 +logic.rhs8104: + %t69 = load { ptr, i64, i64 }, ptr %a4 + %t70 = extractvalue { ptr, i64, i64 } %t69, 1 + %t71 = icmp uge i64 0, %t70 + br i1 %t71, label %range8106, label %inrange8107 +range8106: + call void @finch_panic_index(ptr @.str.5307, i64 4927, i64 0, i64 %t70) unreachable -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.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.cond7700 -for.cond7700: - %t82 = load i64, ptr %a81 - %t83 = icmp slt i64 %t82, %t80 - 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 - call void @finch_arr_reserve(ptr %a77, i64 %t86, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t87 = load ptr, ptr %a77 - %t88 = getelementptr inbounds i64, ptr %t87, i64 %t85 - store i64 -1, ptr %t88 - store i64 %t86, ptr %t84 - br label %for.step7702 -for.step7702: - %t89 = load i64, ptr %a81 - %t90 = add i64 %t89, 1 - store i64 %t90, ptr %a81 - 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.cond7704 -for.cond7704: - %t94 = load i64, ptr %a93 - %t95 = icmp slt i64 %t94, %t92 - 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 %range7708, label %inrange7709 -range7708: - call void @finch_panic_index(ptr @.str.5120, i64 4583, i64 %t96, i64 %t98) +inrange8107: + %t72 = extractvalue { ptr, i64, i64 } %t69, 0 + %t73 = getelementptr inbounds { ptr, i64, i64 }, ptr %t72, i64 0 + %t74 = getelementptr inbounds { ptr, i64, i64 }, ptr %t73, i32 0, i32 1 + %t75 = load i64, ptr %t74 + %t76 = icmp sgt i64 %t75, 0 + br label %logic.rend8108 +logic.rend8108: + br label %logic.end8105 +logic.end8105: + %t77 = phi i1 [ false, %logic.from8103 ], [ %t76, %logic.rend8108 ] + store i1 %t77, ptr %a78 + store { ptr, i64, i64 } zeroinitializer, ptr %a79 + %t80 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 + %t81 = getelementptr inbounds { ptr, i64, i64 }, ptr %t80, i32 0, i32 1 + %t82 = load i64, ptr %t81 + store i64 0, ptr %a83 + br label %for.cond8109 +for.cond8109: + %t84 = load i64, ptr %a83 + %t85 = icmp slt i64 %t84, %t82 + br i1 %t85, label %for.body8110, label %for.end8112 +for.body8110: + %t86 = getelementptr inbounds { ptr, i64, i64 }, ptr %a79, i32 0, i32 1 + %t87 = load i64, ptr %t86 + %t88 = add i64 %t87, 1 + call void @finch_arr_reserve(ptr %a79, i64 %t88, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) + %t89 = load ptr, ptr %a79 + %t90 = getelementptr inbounds i64, ptr %t89, i64 %t87 + store i64 -1, ptr %t90 + store i64 %t88, ptr %t86 + br label %for.step8111 +for.step8111: + %t91 = load i64, ptr %a83 + %t92 = add i64 %t91, 1 + store i64 %t92, ptr %a83 + br label %for.cond8109 +for.end8112: + %t93 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 + %t94 = load i64, ptr %t93 + store i64 0, ptr %a95 + br label %for.cond8113 +for.cond8113: + %t96 = load i64, ptr %a95 + %t97 = icmp slt i64 %t96, %t94 + br i1 %t97, label %for.body8114, label %for.end8116 +for.body8114: + %t98 = load i64, ptr %a95 + %t99 = load { ptr, i64, i64 }, ptr %a4 + %t100 = extractvalue { ptr, i64, i64 } %t99, 1 + %t101 = icmp uge i64 %t98, %t100 + br i1 %t101, label %range8117, label %inrange8118 +range8117: + call void @finch_panic_index(ptr @.str.5308, i64 4933, i64 %t98, i64 %t100) unreachable -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 - %t103 = load i64, ptr %t102 - %t104 = icmp sgt i64 %t103, 0 - %t105 = load i1, ptr %a76 - %t106 = icmp ne i1 %t104, %t105 - 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 %range7713, label %inrange7714 -range7713: - call void @finch_panic_index(ptr @.str.5121, i64 4584, i64 %t108, i64 %t110) +inrange8118: + %t102 = extractvalue { ptr, i64, i64 } %t99, 0 + %t103 = getelementptr inbounds { ptr, i64, i64 }, ptr %t102, i64 %t98 + %t104 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i32 0, i32 1 + %t105 = load i64, ptr %t104 + %t106 = icmp sgt i64 %t105, 0 + %t107 = load i1, ptr %a78 + %t108 = icmp ne i1 %t106, %t107 + br i1 %t108, label %then8119, label %endif8121 +then8119: + %t109 = load ptr, ptr %a1 + %t110 = load i64, ptr %a95 + %t111 = load { ptr, i64, i64 }, ptr %a3 + %t112 = extractvalue { ptr, i64, i64 } %t111, 1 + %t113 = icmp uge i64 %t110, %t112 + br i1 %t113, label %range8122, label %inrange8123 +range8122: + call void @finch_panic_index(ptr @.str.5309, i64 4934, i64 %t110, i64 %t112) unreachable -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.5122, i64 69, i64 0 }) - br label %endif7712 -endif7712: - %t115 = load i1, ptr %a76 - %t116 = xor i1 %t115, true - 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 %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.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 - %t132 = getelementptr inbounds { ptr, i64, i64 }, ptr %t131, i32 0, i32 1 - %t133 = load i64, ptr %t132 - call void @finch_str_from_int(ptr %a134, i64 %t133) - %t135 = load { ptr, i64, i64 }, ptr %a134 - store { ptr, i64, i64 } %t130, 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.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 - %t145 = load i64, ptr %t144 - call void @finch_str_from_int(ptr %a146, i64 %t145) - %t147 = load { ptr, i64, i64 }, ptr %a146 - store { ptr, i64, i64 } %t143, ptr %a149 - store { ptr, i64, i64 } %t147, ptr %a150 - 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.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 - %t157 = load { ptr, i64, i64 }, ptr %t156 - store { ptr, i64, i64 } %t155, 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.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 %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 %range7721, label %inrange7722 -range7721: - call void @finch_panic_index(ptr @.str.5127, i64 4590, i64 %t167, i64 %t169) +inrange8123: + %t114 = extractvalue { ptr, i64, i64 } %t111, 0 + %t115 = getelementptr inbounds %S.ast.Node, ptr %t114, i64 %t110 + %t116 = load %S.ast.Node, ptr %t115 + call void @finch.gen.fail(ptr %t109, %S.ast.Node %t116, { ptr, i64, i64 } { ptr @.str.5310, i64 69, i64 0 }) + br label %endif8121 +endif8121: + %t117 = load i1, ptr %a78 + %t118 = xor i1 %t117, true + br i1 %t118, label %then8124, label %endif8126 +then8124: + %t119 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 + %t120 = load i64, ptr %t119 + %t121 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 + %t122 = getelementptr inbounds { ptr, i64, i64 }, ptr %t121, i32 0, i32 1 + %t123 = load i64, ptr %t122 + %t124 = icmp ne i64 %t120, %t123 + br i1 %t124, label %then8127, label %endif8129 +then8127: + %t125 = load ptr, ptr %a1 + %t126 = load %S.ast.Node, ptr %a5 + %t127 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 1 + %t128 = load { ptr, i64, i64 }, ptr %t127 + store { ptr, i64, i64 } %t128, ptr %a130 + store { ptr, i64, i64 } { ptr @.str.5311, i64 5, i64 0 }, ptr %a131 + call void @finch_str_concat(ptr %a129, ptr %a130, ptr %a131) + %t132 = load { ptr, i64, i64 }, ptr %a129 + %t133 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 + %t134 = getelementptr inbounds { ptr, i64, i64 }, ptr %t133, i32 0, i32 1 + %t135 = load i64, ptr %t134 + call void @finch_str_from_int(ptr %a136, i64 %t135) + %t137 = load { ptr, i64, i64 }, ptr %a136 + store { ptr, i64, i64 } %t132, ptr %a139 + store { ptr, i64, i64 } %t137, ptr %a140 + call void @finch_str_concat(ptr %a138, ptr %a139, ptr %a140) + store { ptr, i64, i64 } %t132, ptr %a141 + call void @finch_str_drop(ptr %a141) + store { ptr, i64, i64 } %t137, ptr %a142 + call void @finch_str_drop(ptr %a142) + %t143 = load { ptr, i64, i64 }, ptr %a138 + store { ptr, i64, i64 } %t143, ptr %a145 + store { ptr, i64, i64 } { ptr @.str.5312, i64 17, i64 0 }, ptr %a146 + call void @finch_str_concat(ptr %a144, ptr %a145, ptr %a146) + store { ptr, i64, i64 } %t143, ptr %a147 + call void @finch_str_drop(ptr %a147) + %t148 = load { ptr, i64, i64 }, ptr %a144 + %t149 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 + %t150 = load i64, ptr %t149 + call void @finch_str_from_int(ptr %a151, i64 %t150) + %t152 = load { ptr, i64, i64 }, ptr %a151 + store { ptr, i64, i64 } %t148, ptr %a154 + store { ptr, i64, i64 } %t152, ptr %a155 + call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155) + store { ptr, i64, i64 } %t148, ptr %a156 + call void @finch_str_drop(ptr %a156) + store { ptr, i64, i64 } %t152, ptr %a157 + call void @finch_str_drop(ptr %a157) + %t158 = load { ptr, i64, i64 }, ptr %a153 + store { ptr, i64, i64 } %t158, ptr %a160 + store { ptr, i64, i64 } { ptr @.str.5313, i64 23, i64 0 }, ptr %a161 + call void @finch_str_concat(ptr %a159, ptr %a160, ptr %a161) + store { ptr, i64, i64 } %t158, ptr %a162 + call void @finch_str_drop(ptr %a162) + %t163 = load { ptr, i64, i64 }, ptr %a159 + %t164 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 1 + %t165 = load { ptr, i64, i64 }, ptr %t164 + store { ptr, i64, i64 } %t163, ptr %a167 + store { ptr, i64, i64 } %t165, ptr %a168 + call void @finch_str_concat(ptr %a166, ptr %a167, ptr %a168) + store { ptr, i64, i64 } %t163, ptr %a169 + call void @finch_str_drop(ptr %a169) + %t170 = load { ptr, i64, i64 }, ptr %a166 + store { ptr, i64, i64 } %t170, ptr %a172 + store { ptr, i64, i64 } { ptr @.str.5314, i64 15, i64 0 }, ptr %a173 + call void @finch_str_concat(ptr %a171, ptr %a172, ptr %a173) + store { ptr, i64, i64 } %t170, ptr %a174 + call void @finch_str_drop(ptr %a174) + %t175 = load { ptr, i64, i64 }, ptr %a171 + call void @finch.gen.fail(ptr %t125, %S.ast.Node %t126, { ptr, i64, i64 } %t175) + store { ptr, i64, i64 } %t175, ptr %a176 + call void @finch_str_drop(ptr %a176) + br label %endif8129 +endif8129: + %t177 = load i64, ptr %a95 + %t178 = load i64, ptr %a95 + %t179 = load { ptr, i64, i64 }, ptr %a79 + %t180 = extractvalue { ptr, i64, i64 } %t179, 1 + %t181 = icmp uge i64 %t178, %t180 + br i1 %t181, label %range8130, label %inrange8131 +range8130: + call void @finch_panic_index(ptr @.str.5315, i64 4940, i64 %t178, i64 %t180) unreachable -inrange7722: - %t171 = extractvalue { ptr, i64, i64 } %t168, 0 - %t172 = getelementptr inbounds i64, ptr %t171, i64 %t167 - store i64 %t166, ptr %t172 - 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 %range7723, label %inrange7724 -range7723: - call void @finch_panic_index(ptr @.str.5128, i64 4593, i64 %t175, i64 %t177) +inrange8131: + %t182 = extractvalue { ptr, i64, i64 } %t179, 0 + %t183 = getelementptr inbounds i64, ptr %t182, i64 %t178 + store i64 %t177, ptr %t183 + br label %for.step8115 +endif8126: + %t184 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 + %t185 = getelementptr inbounds { ptr, i64, i64 }, ptr %t184, i32 0, i32 1 + %t186 = load i64, ptr %a95 + %t187 = load { ptr, i64, i64 }, ptr %a4 + %t188 = extractvalue { ptr, i64, i64 } %t187, 1 + %t189 = icmp uge i64 %t186, %t188 + br i1 %t189, label %range8132, label %inrange8133 +range8132: + call void @finch_panic_index(ptr @.str.5316, i64 4943, i64 %t186, i64 %t188) unreachable -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 - store i64 -1, ptr %a182 - %t183 = load i64, ptr %t174 - %t184 = load ptr, ptr %t173 - store i64 0, ptr %a185 - br label %find.cond7725 -find.cond7725: - %t186 = load i64, ptr %a185 - %t187 = icmp slt i64 %t186, %t183 - 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.hit7727, label %find.next7728 -find.hit7727: - store i64 %t186, ptr %a182 - br label %find.end7729 -find.next7728: - %t194 = add i64 %t186, 1 - store i64 %t194, ptr %a185 - br label %find.cond7725 -find.end7729: - %t195 = load i64, ptr %a182 - store i64 %t195, ptr %a196 +inrange8133: + %t190 = extractvalue { ptr, i64, i64 } %t187, 0 + %t191 = getelementptr inbounds { ptr, i64, i64 }, ptr %t190, i64 %t186 + %t192 = load { ptr, i64, i64 }, ptr %t191 + store i64 -1, ptr %a193 + %t194 = load i64, ptr %t185 + %t195 = load ptr, ptr %t184 + store i64 0, ptr %a196 + br label %find.cond8134 +find.cond8134: %t197 = load i64, ptr %a196 - %t198 = icmp slt i64 %t197, 0 - 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 %range7733, label %inrange7734 -range7733: - call void @finch_panic_index(ptr @.str.5129, i64 4595, i64 %t200, i64 %t202) + %t198 = icmp slt i64 %t197, %t194 + br i1 %t198, label %find.body8135, label %find.end8138 +find.body8135: + %t199 = getelementptr inbounds { ptr, i64, i64 }, ptr %t195, i64 %t197 + %t200 = load { ptr, i64, i64 }, ptr %t199 + store { ptr, i64, i64 } %t200, ptr %a201 + store { ptr, i64, i64 } %t192, ptr %a202 + %t203 = call i32 @finch_str_eq(ptr %a201, ptr %a202) + %t204 = icmp ne i32 %t203, 0 + br i1 %t204, label %find.hit8136, label %find.next8137 +find.hit8136: + store i64 %t197, ptr %a193 + br label %find.end8138 +find.next8137: + %t205 = add i64 %t197, 1 + store i64 %t205, ptr %a196 + br label %find.cond8134 +find.end8138: + %t206 = load i64, ptr %a193 + store i64 %t206, ptr %a207 + %t208 = load i64, ptr %a207 + %t209 = icmp slt i64 %t208, 0 + br i1 %t209, label %then8139, label %endif8141 +then8139: + %t210 = load ptr, ptr %a1 + %t211 = load i64, ptr %a95 + %t212 = load { ptr, i64, i64 }, ptr %a3 + %t213 = extractvalue { ptr, i64, i64 } %t212, 1 + %t214 = icmp uge i64 %t211, %t213 + br i1 %t214, label %range8142, label %inrange8143 +range8142: + call void @finch_panic_index(ptr @.str.5317, i64 4945, i64 %t211, i64 %t213) unreachable -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.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 %range7735, label %inrange7736 -range7735: - call void @finch_panic_index(ptr @.str.5131, i64 4595, i64 %t213, i64 %t215) - unreachable -inrange7736: - %t217 = extractvalue { ptr, i64, i64 } %t214, 0 - %t218 = getelementptr inbounds { ptr, i64, i64 }, ptr %t217, i64 %t213 +inrange8143: + %t215 = extractvalue { ptr, i64, i64 } %t212, 0 + %t216 = getelementptr inbounds %S.ast.Node, ptr %t215, i64 %t211 + %t217 = load %S.ast.Node, ptr %t216 + %t218 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 1 %t219 = load { ptr, i64, i64 }, ptr %t218 - store { ptr, i64, i64 } %t212, ptr %a221 - store { ptr, i64, i64 } %t219, ptr %a222 + store { ptr, i64, i64 } %t219, ptr %a221 + store { ptr, i64, i64 } { ptr @.str.5318, i64 15, i64 0 }, ptr %a222 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.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 %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 %range7737, label %inrange7738 -range7737: - call void @finch_panic_index(ptr @.str.5133, i64 4597, i64 %t228, i64 %t230) + %t224 = load i64, ptr %a95 + %t225 = load { ptr, i64, i64 }, ptr %a4 + %t226 = extractvalue { ptr, i64, i64 } %t225, 1 + %t227 = icmp uge i64 %t224, %t226 + br i1 %t227, label %range8144, label %inrange8145 +range8144: + call void @finch_panic_index(ptr @.str.5319, i64 4945, i64 %t224, i64 %t226) unreachable -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 %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 %range7742, label %inrange7743 -range7742: - call void @finch_panic_index(ptr @.str.5134, i64 4598, i64 %t237, i64 %t239) +inrange8145: + %t228 = extractvalue { ptr, i64, i64 } %t225, 0 + %t229 = getelementptr inbounds { ptr, i64, i64 }, ptr %t228, i64 %t224 + %t230 = load { ptr, i64, i64 }, ptr %t229 + store { ptr, i64, i64 } %t223, ptr %a232 + store { ptr, i64, i64 } %t230, ptr %a233 + call void @finch_str_concat(ptr %a231, ptr %a232, ptr %a233) + store { ptr, i64, i64 } %t223, ptr %a234 + call void @finch_str_drop(ptr %a234) + %t235 = load { ptr, i64, i64 }, ptr %a231 + store { ptr, i64, i64 } %t235, ptr %a237 + store { ptr, i64, i64 } { ptr @.str.5320, i64 1, i64 0 }, ptr %a238 + call void @finch_str_concat(ptr %a236, ptr %a237, ptr %a238) + store { ptr, i64, i64 } %t235, ptr %a239 + call void @finch_str_drop(ptr %a239) + %t240 = load { ptr, i64, i64 }, ptr %a236 + call void @finch.gen.fail(ptr %t210, %S.ast.Node %t217, { ptr, i64, i64 } %t240) + store { ptr, i64, i64 } %t240, ptr %a241 + call void @finch_str_drop(ptr %a241) + br label %endif8141 +endif8141: + %t242 = load i64, ptr %a207 + %t243 = load { ptr, i64, i64 }, ptr %a79 + %t244 = extractvalue { ptr, i64, i64 } %t243, 1 + %t245 = icmp uge i64 %t242, %t244 + br i1 %t245, label %range8146, label %inrange8147 +range8146: + call void @finch_panic_index(ptr @.str.5321, i64 4947, i64 %t242, i64 %t244) unreachable -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 - %t244 = load i64, ptr %a93 - %t245 = load { ptr, i64, i64 }, ptr %a4 - %t246 = extractvalue { ptr, i64, i64 } %t245, 1 - %t247 = icmp uge i64 %t244, %t246 - br i1 %t247, label %range7744, label %inrange7745 -range7744: - call void @finch_panic_index(ptr @.str.5136, i64 4598, i64 %t244, i64 %t246) +inrange8147: + %t246 = extractvalue { ptr, i64, i64 } %t243, 0 + %t247 = getelementptr inbounds i64, ptr %t246, i64 %t242 + %t248 = load i64, ptr %t247 + %t249 = icmp sge i64 %t248, 0 + br i1 %t249, label %then8148, label %endif8150 +then8148: + %t250 = load ptr, ptr %a1 + %t251 = load i64, ptr %a95 + %t252 = load { ptr, i64, i64 }, ptr %a3 + %t253 = extractvalue { ptr, i64, i64 } %t252, 1 + %t254 = icmp uge i64 %t251, %t253 + br i1 %t254, label %range8151, label %inrange8152 +range8151: + call void @finch_panic_index(ptr @.str.5322, i64 4948, i64 %t251, i64 %t253) unreachable -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.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.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 %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 %range7746, label %inrange7747 -range7746: - call void @finch_panic_index(ptr @.str.5138, i64 4600, i64 %t260, i64 %t262) +inrange8152: + %t255 = extractvalue { ptr, i64, i64 } %t252, 0 + %t256 = getelementptr inbounds %S.ast.Node, ptr %t255, i64 %t251 + %t257 = load %S.ast.Node, ptr %t256 + %t258 = load i64, ptr %a95 + %t259 = load { ptr, i64, i64 }, ptr %a4 + %t260 = extractvalue { ptr, i64, i64 } %t259, 1 + %t261 = icmp uge i64 %t258, %t260 + br i1 %t261, label %range8153, label %inrange8154 +range8153: + call void @finch_panic_index(ptr @.str.5324, i64 4948, i64 %t258, i64 %t260) unreachable -inrange7747: - %t264 = extractvalue { ptr, i64, i64 } %t261, 0 - %t265 = getelementptr inbounds i64, ptr %t264, i64 %t260 - store i64 %t259, ptr %t265 - br label %for.step7706 -for.step7706: - %t266 = load i64, ptr %a93 - %t267 = add i64 %t266, 1 - store i64 %t267, ptr %a93 - 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.cond7748 -for.cond7748: - %t273 = load i64, ptr %a272 - %t274 = icmp slt i64 %t273, %t271 - 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 +inrange8154: + %t262 = extractvalue { ptr, i64, i64 } %t259, 0 + %t263 = getelementptr inbounds { ptr, i64, i64 }, ptr %t262, i64 %t258 + %t264 = load { ptr, i64, i64 }, ptr %t263 + store { ptr, i64, i64 } { ptr @.str.5323, i64 11, 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.5325, i64 16, i64 0 }, ptr %a271 + call void @finch_str_concat(ptr %a269, ptr %a270, ptr %a271) + store { ptr, i64, i64 } %t268, ptr %a272 + call void @finch_str_drop(ptr %a272) + %t273 = load { ptr, i64, i64 }, ptr %a269 + call void @finch.gen.fail(ptr %t250, %S.ast.Node %t257, { ptr, i64, i64 } %t273) + store { ptr, i64, i64 } %t273, ptr %a274 + call void @finch_str_drop(ptr %a274) + br label %endif8150 +endif8150: + %t275 = load i64, ptr %a95 + %t276 = load i64, ptr %a207 + %t277 = load { ptr, i64, i64 }, ptr %a79 %t278 = extractvalue { ptr, i64, i64 } %t277, 1 %t279 = icmp uge i64 %t276, %t278 - br i1 %t279, label %range7752, label %inrange7753 -range7752: - call void @finch_panic_index(ptr @.str.5140, i64 4604, i64 %t276, i64 %t278) + br i1 %t279, label %range8155, label %inrange8156 +range8155: + call void @finch_panic_index(ptr @.str.5326, i64 4950, i64 %t276, i64 %t278) unreachable -inrange7753: +inrange8156: %t280 = extractvalue { ptr, i64, i64 } %t277, 0 - %t281 = getelementptr inbounds %S.ast.Type, ptr %t280, i64 %t276 - %t282 = load %S.ast.Type, ptr %t281 - store %S.ast.Type %t282, ptr %a283 - call void @finch.copy.S_ast_Type(ptr %a284, ptr %a283) - %t285 = load %S.ast.Type, ptr %a284 - store %S.ast.Type %t285, ptr %a286 - store %S.gen.Val zeroinitializer, ptr %a287 - %t288 = load i64, ptr %a272 - %t289 = load { ptr, i64, i64 }, ptr %a77 - %t290 = extractvalue { ptr, i64, i64 } %t289, 1 - %t291 = icmp uge i64 %t288, %t290 - br i1 %t291, label %range7754, label %inrange7755 -range7754: - call void @finch_panic_index(ptr @.str.5141, i64 4606, i64 %t288, i64 %t290) + %t281 = getelementptr inbounds i64, ptr %t280, i64 %t276 + store i64 %t275, ptr %t281 + br label %for.step8115 +for.step8115: + %t282 = load i64, ptr %a95 + %t283 = add i64 %t282, 1 + store i64 %t283, ptr %a95 + br label %for.cond8113 +for.end8116: + store { ptr, i64, i64 } { ptr @.str.5327, i64 15, i64 0 }, ptr %a284 + %t285 = load ptr, ptr %a1 + %t286 = icmp eq ptr %t285, null + br i1 %t286, label %panic8157, label %ok8158 +panic8157: + call void @finch_panic(ptr @.str.5328, i64 4953, ptr @.str.5329) unreachable -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 %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 +ok8158: + %t287 = getelementptr inbounds %S.gen.Gen, ptr %t285, i32 0, i32 11 + %t288 = getelementptr inbounds { ptr, i64, i64 }, ptr %t287, i32 0, i32 1 + %t289 = load i64, ptr %t288 + store i64 %t289, ptr %a290 + %t291 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 + %t292 = getelementptr inbounds { ptr, i64, i64 }, ptr %t291, i32 0, i32 1 + %t293 = load i64, ptr %t292 + store i64 0, ptr %a294 + br label %for.cond8159 +for.cond8159: + %t295 = load i64, ptr %a294 + %t296 = icmp slt i64 %t295, %t293 + br i1 %t296, label %for.body8160, label %for.end8162 +for.body8160: + %t297 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 12 + %t298 = load i64, ptr %a294 + %t299 = load { ptr, i64, i64 }, ptr %t297 %t300 = extractvalue { ptr, i64, i64 } %t299, 1 %t301 = icmp uge i64 %t298, %t300 - br i1 %t301, label %range7759, label %inrange7760 -range7759: - call void @finch_panic_index(ptr @.str.5142, i64 4607, i64 %t298, i64 %t300) + br i1 %t301, label %range8163, label %inrange8164 +range8163: + call void @finch_panic_index(ptr @.str.5330, i64 4955, i64 %t298, i64 %t300) unreachable -inrange7760: +inrange8164: %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 %range7761, label %inrange7762 -range7761: - call void @finch_panic_index(ptr @.str.5143, i64 4607, i64 %t304, i64 %t306) + %t303 = getelementptr inbounds %S.ast.Type, ptr %t302, i64 %t298 + %t304 = load %S.ast.Type, ptr %t303 + store %S.ast.Type %t304, ptr %a305 + call void @finch.copy.S_ast_Type(ptr %a306, ptr %a305) + %t307 = load %S.ast.Type, ptr %a306 + store %S.ast.Type %t307, ptr %a308 + store %S.gen.Val zeroinitializer, ptr %a309 + %t310 = load i64, ptr %a294 + %t311 = load { ptr, i64, i64 }, ptr %a79 + %t312 = extractvalue { ptr, i64, i64 } %t311, 1 + %t313 = icmp uge i64 %t310, %t312 + br i1 %t313, label %range8165, label %inrange8166 +range8165: + call void @finch_panic_index(ptr @.str.5331, i64 4957, i64 %t310, i64 %t312) unreachable -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 - %t311 = load %S.ast.Type, ptr %a286 - %t312 = call %S.gen.Val @finch.gen.exprWant(ptr %t297, %S.ast.Node %t310, %S.ast.Type %t311) - %t313 = load %S.ast.Type, ptr %a286 - %t314 = load i64, ptr %a272 - %t315 = load { ptr, i64, i64 }, ptr %a77 - %t316 = extractvalue { ptr, i64, i64 } %t315, 1 - %t317 = icmp uge i64 %t314, %t316 - br i1 %t317, label %range7763, label %inrange7764 -range7763: - call void @finch_panic_index(ptr @.str.5144, i64 4607, i64 %t314, i64 %t316) - unreachable -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 +inrange8166: + %t314 = extractvalue { ptr, i64, i64 } %t311, 0 + %t315 = getelementptr inbounds i64, ptr %t314, i64 %t310 + %t316 = load i64, ptr %t315 + %t317 = icmp sge i64 %t316, 0 + br i1 %t317, label %then8167, label %else8168 +then8167: + %t318 = load ptr, ptr %a1 + %t319 = load ptr, ptr %a1 + %t320 = load i64, ptr %a294 + %t321 = load { ptr, i64, i64 }, ptr %a79 %t322 = extractvalue { ptr, i64, i64 } %t321, 1 %t323 = icmp uge i64 %t320, %t322 - br i1 %t323, label %range7765, label %inrange7766 -range7765: - call void @finch_panic_index(ptr @.str.5145, i64 4607, i64 %t320, i64 %t322) + br i1 %t323, label %range8170, label %inrange8171 +range8170: + call void @finch_panic_index(ptr @.str.5332, i64 4958, i64 %t320, i64 %t322) unreachable -inrange7766: +inrange8171: %t324 = extractvalue { ptr, i64, i64 } %t321, 0 - %t325 = getelementptr inbounds %S.ast.Node, ptr %t324, i64 %t320 - %t326 = load %S.ast.Node, ptr %t325 - %t327 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 - %t328 = load i64, ptr %a272 - %t329 = load { ptr, i64, i64 }, ptr %t327 - %t330 = extractvalue { ptr, i64, i64 } %t329, 1 - %t331 = icmp uge i64 %t328, %t330 - br i1 %t331, label %range7767, label %inrange7768 -range7767: - call void @finch_panic_index(ptr @.str.5147, i64 4607, i64 %t328, i64 %t330) + %t325 = getelementptr inbounds i64, ptr %t324, i64 %t320 + %t326 = load i64, ptr %t325 + %t327 = load { ptr, i64, i64 }, ptr %a3 + %t328 = extractvalue { ptr, i64, i64 } %t327, 1 + %t329 = icmp uge i64 %t326, %t328 + br i1 %t329, label %range8172, label %inrange8173 +range8172: + call void @finch_panic_index(ptr @.str.5333, i64 4958, i64 %t326, i64 %t328) unreachable -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.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.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 %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.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 %range7772, label %inrange7773 -range7772: - call void @finch_panic_index(ptr @.str.5149, i64 4608, i64 %t348, i64 %t350) +inrange8173: + %t330 = extractvalue { ptr, i64, i64 } %t327, 0 + %t331 = getelementptr inbounds %S.ast.Node, ptr %t330, i64 %t326 + %t332 = load %S.ast.Node, ptr %t331 + %t333 = load %S.ast.Type, ptr %a308 + %t334 = call %S.gen.Val @finch.gen.exprWant(ptr %t319, %S.ast.Node %t332, %S.ast.Type %t333) + %t335 = load %S.ast.Type, ptr %a308 + %t336 = load i64, ptr %a294 + %t337 = load { ptr, i64, i64 }, ptr %a79 + %t338 = extractvalue { ptr, i64, i64 } %t337, 1 + %t339 = icmp uge i64 %t336, %t338 + br i1 %t339, label %range8174, label %inrange8175 +range8174: + call void @finch_panic_index(ptr @.str.5334, i64 4958, i64 %t336, i64 %t338) unreachable -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.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 %panic7778, label %ok7779 -panic7778: - call void @finch_panic(ptr @.str.5150, i64 4610, ptr @.str.5151) +inrange8175: + %t340 = extractvalue { ptr, i64, i64 } %t337, 0 + %t341 = getelementptr inbounds i64, ptr %t340, i64 %t336 + %t342 = load i64, ptr %t341 + %t343 = load { ptr, i64, i64 }, ptr %a3 + %t344 = extractvalue { ptr, i64, i64 } %t343, 1 + %t345 = icmp uge i64 %t342, %t344 + br i1 %t345, label %range8176, label %inrange8177 +range8176: + call void @finch_panic_index(ptr @.str.5335, i64 4958, i64 %t342, i64 %t344) unreachable -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 - call void @finch.copy.arr_S_gen_Scope(ptr %a364, ptr %a363) - %t365 = load { ptr, i64, i64 }, ptr %a364 - store { ptr, i64, i64 } %t365, ptr %a366 - %t367 = load ptr, ptr %a1 - %t368 = icmp eq ptr %t367, null - br i1 %t368, label %panic7780, label %ok7781 -panic7780: - call void @finch_panic(ptr @.str.5152, i64 4611, ptr @.str.5153) +inrange8177: + %t346 = extractvalue { ptr, i64, i64 } %t343, 0 + %t347 = getelementptr inbounds %S.ast.Node, ptr %t346, i64 %t342 + %t348 = load %S.ast.Node, ptr %t347 + %t349 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 + %t350 = load i64, ptr %a294 + %t351 = load { ptr, i64, i64 }, ptr %t349 + %t352 = extractvalue { ptr, i64, i64 } %t351, 1 + %t353 = icmp uge i64 %t350, %t352 + br i1 %t353, label %range8178, label %inrange8179 +range8178: + call void @finch_panic_index(ptr @.str.5337, i64 4958, i64 %t350, i64 %t352) unreachable -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 - call void @finch_str_copy(ptr %a372, ptr %a371) - %t373 = load { ptr, i64, i64 }, ptr %a372 - store { ptr, i64, i64 } %t373, ptr %a374 - %t375 = load ptr, ptr %a1 - %t376 = icmp eq ptr %t375, null - br i1 %t376, label %panic7782, label %ok7783 -panic7782: - call void @finch_panic(ptr @.str.5154, i64 4612, ptr @.str.5155) +inrange8179: + %t354 = extractvalue { ptr, i64, i64 } %t351, 0 + %t355 = getelementptr inbounds { ptr, i64, i64 }, ptr %t354, i64 %t350 + %t356 = load { ptr, i64, i64 }, ptr %t355 + store { ptr, i64, i64 } { ptr @.str.5336, i64 11, 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.5338, i64 1, i64 0 }, ptr %a363 + call void @finch_str_concat(ptr %a361, ptr %a362, ptr %a363) + store { ptr, i64, i64 } %t360, ptr %a364 + call void @finch_str_drop(ptr %a364) + %t365 = load { ptr, i64, i64 }, ptr %a361 + %t366 = call %S.gen.Val @finch.gen.coerce(ptr %t318, %S.gen.Val %t334, %S.ast.Type %t335, %S.ast.Node %t348, { ptr, i64, i64 } %t365) + store %S.gen.Val %t334, ptr %a367 + call void @finch.drop.S_gen_Val(ptr %a367) + store { ptr, i64, i64 } %t365, ptr %a368 + call void @finch_str_drop(ptr %a368) + %t369 = load %S.gen.Val, ptr %a309 + store %S.gen.Val %t366, ptr %a309 + store %S.gen.Val %t369, ptr %a370 + call void @finch.drop.S_gen_Val(ptr %a370) + br label %endif8169 +else8168: + %t371 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 2 + %t372 = load i1, ptr %t371 + %t373 = xor i1 %t372, true + br label %logic.from8180 +logic.from8180: + br i1 %t373, label %logic.rhs8181, label %logic.end8182 +logic.rhs8181: + %t374 = getelementptr inbounds %S.ast.Node, ptr %a20, i32 0, i32 9 + %t375 = load i64, ptr %a294 + %t376 = load { ptr, i64, i64 }, ptr %t374 + %t377 = extractvalue { ptr, i64, i64 } %t376, 1 + %t378 = icmp uge i64 %t375, %t377 + br i1 %t378, label %range8183, label %inrange8184 +range8183: + call void @finch_panic_index(ptr @.str.5339, i64 4959, i64 %t375, i64 %t377) unreachable -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 - call void @finch.copy.arr_str(ptr %a380, ptr %a379) - %t381 = load { ptr, i64, i64 }, ptr %a380 - store { ptr, i64, i64 } %t381, ptr %a382 - %t383 = load ptr, ptr %a1 - %t384 = icmp eq ptr %t383, null - br i1 %t384, label %panic7784, label %ok7785 -panic7784: - call void @finch_panic(ptr @.str.5156, i64 4613, ptr @.str.5157) +inrange8184: + %t379 = extractvalue { ptr, i64, i64 } %t376, 0 + %t380 = getelementptr inbounds %S.ast.Node, ptr %t379, i64 %t375 + %t381 = getelementptr inbounds %S.ast.Node, ptr %t380, i32 0, i32 9 + %t382 = getelementptr inbounds { ptr, i64, i64 }, ptr %t381, i32 0, i32 1 + %t383 = load i64, ptr %t382 + %t384 = icmp sgt i64 %t383, 0 + br label %logic.rend8185 +logic.rend8185: + br label %logic.end8182 +logic.end8182: + %t385 = phi i1 [ false, %logic.from8180 ], [ %t384, %logic.rend8185 ] + br i1 %t385, label %then8186, label %else8187 +then8186: + %t386 = load ptr, ptr %a1 + %t387 = icmp eq ptr %t386, null + br i1 %t387, label %panic8189, label %ok8190 +panic8189: + call void @finch_panic(ptr @.str.5340, i64 4961, ptr @.str.5341) unreachable -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 - call void @finch.copy.arr_S_ast_Type(ptr %a388, ptr %a387) - %t389 = load { ptr, i64, i64 }, ptr %a388 +ok8190: + %t388 = getelementptr inbounds %S.gen.Gen, ptr %t386, i32 0, i32 10 + %t389 = load { ptr, i64, i64 }, ptr %t388 store { ptr, i64, i64 } %t389, ptr %a390 - %t391 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 6 - %t392 = load { ptr, i64, i64 }, ptr %t391 - %t393 = load ptr, ptr %a1 - %t394 = icmp eq ptr %t393, null - br i1 %t394, label %panic7786, label %ok7787 -panic7786: - call void @finch_panic(ptr @.str.5158, i64 4614, ptr @.str.5159) + call void @finch.copy.arr_S_gen_Scope(ptr %a391, ptr %a390) + %t392 = load { ptr, i64, i64 }, ptr %a391 + store { ptr, i64, i64 } %t392, ptr %a393 + %t394 = load ptr, ptr %a1 + %t395 = icmp eq ptr %t394, null + br i1 %t395, label %panic8191, label %ok8192 +panic8191: + call void @finch_panic(ptr @.str.5342, i64 4962, ptr @.str.5343) unreachable -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) - %t398 = load { ptr, i64, i64 }, ptr %a397 - store { ptr, i64, i64 } %t398, ptr %t395 - %t399 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 7 - %t400 = load { ptr, i64, i64 }, ptr %t399 - %t401 = load ptr, ptr %a1 - %t402 = icmp eq ptr %t401, null - br i1 %t402, label %panic7788, label %ok7789 -panic7788: - call void @finch_panic(ptr @.str.5160, i64 4615, ptr @.str.5161) +ok8192: + %t396 = getelementptr inbounds %S.gen.Gen, ptr %t394, i32 0, i32 14 + %t397 = load { ptr, i64, i64 }, ptr %t396 + store { ptr, i64, i64 } %t397, ptr %a398 + call void @finch_str_copy(ptr %a399, ptr %a398) + %t400 = load { ptr, i64, i64 }, ptr %a399 + store { ptr, i64, i64 } %t400, ptr %a401 + %t402 = load ptr, ptr %a1 + %t403 = icmp eq ptr %t402, null + br i1 %t403, label %panic8193, label %ok8194 +panic8193: + call void @finch_panic(ptr @.str.5344, i64 4963, ptr @.str.5345) unreachable -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) - %t406 = load { ptr, i64, i64 }, ptr %a405 - store { ptr, i64, i64 } %t406, ptr %t403 - store { ptr, i64, i64 } zeroinitializer, ptr %a407 +ok8194: + %t404 = getelementptr inbounds %S.gen.Gen, ptr %t402, i32 0, i32 18 + %t405 = load { ptr, i64, i64 }, ptr %t404 + store { ptr, i64, i64 } %t405, ptr %a406 + call void @finch.copy.arr_str(ptr %a407, ptr %a406) %t408 = load { ptr, i64, i64 }, ptr %a407 - %t409 = load ptr, ptr %a1 - %t410 = icmp eq ptr %t409, null - br i1 %t410, label %panic7790, label %ok7791 -panic7790: - call void @finch_panic(ptr @.str.5162, i64 4617, ptr @.str.5163) + store { ptr, i64, i64 } %t408, ptr %a409 + %t410 = load ptr, ptr %a1 + %t411 = icmp eq ptr %t410, null + br i1 %t411, label %panic8195, label %ok8196 +panic8195: + call void @finch_panic(ptr @.str.5346, i64 4964, ptr @.str.5347) unreachable -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) - %t414 = load { ptr, i64, i64 }, ptr %a413 - store { ptr, i64, i64 } %t414, ptr %t411 - %t415 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t415) - %t416 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 0 - %t417 = load { ptr, i64, i64 }, ptr %t416 - %t418 = load ptr, ptr %a1 - %t419 = icmp eq ptr %t418, null - br i1 %t419, label %panic7792, label %ok7793 -panic7792: - call void @finch_panic(ptr @.str.5164, i64 4619, ptr @.str.5165) +ok8196: + %t412 = getelementptr inbounds %S.gen.Gen, ptr %t410, i32 0, i32 19 + %t413 = load { ptr, i64, i64 }, ptr %t412 + store { ptr, i64, i64 } %t413, ptr %a414 + call void @finch.copy.arr_S_ast_Type(ptr %a415, ptr %a414) + %t416 = load { ptr, i64, i64 }, ptr %a415 + store { ptr, i64, i64 } %t416, ptr %a417 + %t418 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 6 + %t419 = load { ptr, i64, i64 }, ptr %t418 + %t420 = load ptr, ptr %a1 + %t421 = icmp eq ptr %t420, null + br i1 %t421, label %panic8197, label %ok8198 +panic8197: + call void @finch_panic(ptr @.str.5348, i64 4965, ptr @.str.5349) unreachable -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) - %t423 = load { ptr, i64, i64 }, ptr %a422 - store { ptr, i64, i64 } %t423, ptr %t420 - %t424 = load ptr, ptr %a1 - %t425 = load ptr, ptr %a1 - %t426 = getelementptr inbounds %S.ast.Node, ptr %a20, i32 0, i32 9 - %t427 = load i64, ptr %a272 - %t428 = load { ptr, i64, i64 }, ptr %t426 - %t429 = extractvalue { ptr, i64, i64 } %t428, 1 - %t430 = icmp uge i64 %t427, %t429 - br i1 %t430, label %range7794, label %inrange7795 -range7794: - call void @finch_panic_index(ptr @.str.5166, i64 4620, i64 %t427, i64 %t429) +ok8198: + %t422 = getelementptr inbounds %S.gen.Gen, ptr %t420, i32 0, i32 18 + store { ptr, i64, i64 } %t419, ptr %a423 + call void @finch.copy.arr_str(ptr %a424, ptr %a423) + %t425 = load { ptr, i64, i64 }, ptr %a424 + %t426 = load { ptr, i64, i64 }, ptr %t422 + store { ptr, i64, i64 } %t425, ptr %t422 + store { ptr, i64, i64 } %t426, ptr %a427 + call void @finch.drop.arr_str(ptr %a427) + %t428 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 7 + %t429 = load { ptr, i64, i64 }, ptr %t428 + %t430 = load ptr, ptr %a1 + %t431 = icmp eq ptr %t430, null + br i1 %t431, label %panic8199, label %ok8200 +panic8199: + call void @finch_panic(ptr @.str.5350, i64 4966, ptr @.str.5351) unreachable -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 %range7796, label %inrange7797 -range7796: - call void @finch_panic_index(ptr @.str.5167, i64 4620, i64 0, i64 %t435) +ok8200: + %t432 = getelementptr inbounds %S.gen.Gen, ptr %t430, i32 0, i32 19 + store { ptr, i64, i64 } %t429, ptr %a433 + call void @finch.copy.arr_S_ast_Type(ptr %a434, ptr %a433) + %t435 = load { ptr, i64, i64 }, ptr %a434 + %t436 = load { ptr, i64, i64 }, ptr %t432 + store { ptr, i64, i64 } %t435, ptr %t432 + store { ptr, i64, i64 } %t436, ptr %a437 + call void @finch.drop.arr_S_ast_Type(ptr %a437) + store { ptr, i64, i64 } zeroinitializer, ptr %a438 + %t439 = load { ptr, i64, i64 }, ptr %a438 + %t440 = load ptr, ptr %a1 + %t441 = icmp eq ptr %t440, null + br i1 %t441, label %panic8201, label %ok8202 +panic8201: + call void @finch_panic(ptr @.str.5352, i64 4968, ptr @.str.5353) unreachable -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 - %t440 = load %S.ast.Type, ptr %a286 - %t441 = call %S.gen.Val @finch.gen.exprWant(ptr %t425, %S.ast.Node %t439, %S.ast.Type %t440) - %t442 = load %S.ast.Type, ptr %a286 - %t443 = getelementptr inbounds %S.ast.Node, ptr %a20, i32 0, i32 9 - %t444 = load i64, ptr %a272 - %t445 = load { ptr, i64, i64 }, ptr %t443 - %t446 = extractvalue { ptr, i64, i64 } %t445, 1 - %t447 = icmp uge i64 %t444, %t446 - br i1 %t447, label %range7798, label %inrange7799 -range7798: - call void @finch_panic_index(ptr @.str.5168, i64 4620, i64 %t444, i64 %t446) +ok8202: + %t442 = getelementptr inbounds %S.gen.Gen, ptr %t440, i32 0, i32 10 + store { ptr, i64, i64 } %t439, ptr %a443 + call void @finch.copy.arr_S_gen_Scope(ptr %a444, ptr %a443) + %t445 = load { ptr, i64, i64 }, ptr %a444 + %t446 = load { ptr, i64, i64 }, ptr %t442 + store { ptr, i64, i64 } %t445, ptr %t442 + store { ptr, i64, i64 } %t446, ptr %a447 + call void @finch.drop.arr_S_gen_Scope(ptr %a447) + %t448 = load ptr, ptr %a1 + call void @finch.gen.pushScope(ptr %t448) + %t449 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 0 + %t450 = load { ptr, i64, i64 }, ptr %t449 + %t451 = load ptr, ptr %a1 + %t452 = icmp eq ptr %t451, null + br i1 %t452, label %panic8203, label %ok8204 +panic8203: + call void @finch_panic(ptr @.str.5354, i64 4970, ptr @.str.5355) unreachable -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 %range7800, label %inrange7801 -range7800: - call void @finch_panic_index(ptr @.str.5169, i64 4620, i64 0, i64 %t452) +ok8204: + %t453 = getelementptr inbounds %S.gen.Gen, ptr %t451, i32 0, i32 14 + store { ptr, i64, i64 } %t450, ptr %a454 + call void @finch_str_copy(ptr %a455, ptr %a454) + %t456 = load { ptr, i64, i64 }, ptr %a455 + %t457 = load { ptr, i64, i64 }, ptr %t453 + store { ptr, i64, i64 } %t456, ptr %t453 + store { ptr, i64, i64 } %t457, ptr %a458 + call void @finch_str_drop(ptr %a458) + %t459 = load ptr, ptr %a1 + %t460 = load ptr, ptr %a1 + %t461 = getelementptr inbounds %S.ast.Node, ptr %a20, i32 0, i32 9 + %t462 = load i64, ptr %a294 + %t463 = load { ptr, i64, i64 }, ptr %t461 + %t464 = extractvalue { ptr, i64, i64 } %t463, 1 + %t465 = icmp uge i64 %t462, %t464 + br i1 %t465, label %range8205, label %inrange8206 +range8205: + call void @finch_panic_index(ptr @.str.5356, i64 4971, i64 %t462, i64 %t464) unreachable -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 - %t457 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 - %t458 = load i64, ptr %a272 - %t459 = load { ptr, i64, i64 }, ptr %t457 - %t460 = extractvalue { ptr, i64, i64 } %t459, 1 - %t461 = icmp uge i64 %t458, %t460 - br i1 %t461, label %range7802, label %inrange7803 -range7802: - call void @finch_panic_index(ptr @.str.5171, i64 4620, i64 %t458, i64 %t460) +inrange8206: + %t466 = extractvalue { ptr, i64, i64 } %t463, 0 + %t467 = getelementptr inbounds %S.ast.Node, ptr %t466, i64 %t462 + %t468 = getelementptr inbounds %S.ast.Node, ptr %t467, i32 0, i32 9 + %t469 = load { ptr, i64, i64 }, ptr %t468 + %t470 = extractvalue { ptr, i64, i64 } %t469, 1 + %t471 = icmp uge i64 0, %t470 + br i1 %t471, label %range8207, label %inrange8208 +range8207: + call void @finch_panic_index(ptr @.str.5357, i64 4971, i64 0, i64 %t470) unreachable -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.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.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) - store %S.gen.Val %t473, ptr %a287 - %t474 = load { ptr, i64, i64 }, ptr %a374 - %t475 = load ptr, ptr %a1 - %t476 = icmp eq ptr %t475, null - br i1 %t476, label %panic7804, label %ok7805 -panic7804: - call void @finch_panic(ptr @.str.5173, i64 4621, ptr @.str.5174) +inrange8208: + %t472 = extractvalue { ptr, i64, i64 } %t469, 0 + %t473 = getelementptr inbounds %S.ast.Node, ptr %t472, i64 0 + %t474 = load %S.ast.Node, ptr %t473 + %t475 = load %S.ast.Type, ptr %a308 + %t476 = call %S.gen.Val @finch.gen.exprWant(ptr %t460, %S.ast.Node %t474, %S.ast.Type %t475) + %t477 = load %S.ast.Type, ptr %a308 + %t478 = getelementptr inbounds %S.ast.Node, ptr %a20, i32 0, i32 9 + %t479 = load i64, ptr %a294 + %t480 = load { ptr, i64, i64 }, ptr %t478 + %t481 = extractvalue { ptr, i64, i64 } %t480, 1 + %t482 = icmp uge i64 %t479, %t481 + br i1 %t482, label %range8209, label %inrange8210 +range8209: + call void @finch_panic_index(ptr @.str.5358, i64 4971, i64 %t479, i64 %t481) unreachable -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) - %t480 = load { ptr, i64, i64 }, ptr %a479 - store { ptr, i64, i64 } %t480, ptr %t477 - %t481 = load { ptr, i64, i64 }, ptr %a382 - %t482 = load ptr, ptr %a1 - %t483 = icmp eq ptr %t482, null - br i1 %t483, label %panic7806, label %ok7807 -panic7806: - call void @finch_panic(ptr @.str.5175, i64 4622, ptr @.str.5176) +inrange8210: + %t483 = extractvalue { ptr, i64, i64 } %t480, 0 + %t484 = getelementptr inbounds %S.ast.Node, ptr %t483, i64 %t479 + %t485 = getelementptr inbounds %S.ast.Node, ptr %t484, i32 0, i32 9 + %t486 = load { ptr, i64, i64 }, ptr %t485 + %t487 = extractvalue { ptr, i64, i64 } %t486, 1 + %t488 = icmp uge i64 0, %t487 + br i1 %t488, label %range8211, label %inrange8212 +range8211: + call void @finch_panic_index(ptr @.str.5359, i64 4971, i64 0, i64 %t487) unreachable -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) - %t487 = load { ptr, i64, i64 }, ptr %a486 - store { ptr, i64, i64 } %t487, ptr %t484 - %t488 = load { ptr, i64, i64 }, ptr %a390 - %t489 = load ptr, ptr %a1 - %t490 = icmp eq ptr %t489, null - br i1 %t490, label %panic7808, label %ok7809 -panic7808: - call void @finch_panic(ptr @.str.5177, i64 4623, ptr @.str.5178) +inrange8212: + %t489 = extractvalue { ptr, i64, i64 } %t486, 0 + %t490 = getelementptr inbounds %S.ast.Node, ptr %t489, i64 0 + %t491 = load %S.ast.Node, ptr %t490 + %t492 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 + %t493 = load i64, ptr %a294 + %t494 = load { ptr, i64, i64 }, ptr %t492 + %t495 = extractvalue { ptr, i64, i64 } %t494, 1 + %t496 = icmp uge i64 %t493, %t495 + br i1 %t496, label %range8213, label %inrange8214 +range8213: + call void @finch_panic_index(ptr @.str.5361, i64 4971, i64 %t493, i64 %t495) unreachable -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) - %t494 = load { ptr, i64, i64 }, ptr %a493 - store { ptr, i64, i64 } %t494, ptr %t491 - %t495 = load { ptr, i64, i64 }, ptr %a366 - %t496 = load ptr, ptr %a1 - %t497 = icmp eq ptr %t496, null - br i1 %t497, label %panic7810, label %ok7811 -panic7810: - call void @finch_panic(ptr @.str.5179, i64 4624, ptr @.str.5180) - unreachable -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 %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.5181, i64 12, i64 0 }, ptr %a505 - store { ptr, i64, i64 } %t503, ptr %a506 +inrange8214: + %t497 = extractvalue { ptr, i64, i64 } %t494, 0 + %t498 = getelementptr inbounds { ptr, i64, i64 }, ptr %t497, i64 %t493 + %t499 = load { ptr, i64, i64 }, ptr %t498 + store { ptr, i64, i64 } { ptr @.str.5360, i64 16, i64 0 }, ptr %a501 + store { ptr, i64, i64 } %t499, ptr %a502 + call void @finch_str_concat(ptr %a500, ptr %a501, ptr %a502) + %t503 = load { ptr, i64, i64 }, ptr %a500 + store { ptr, i64, i64 } %t503, ptr %a505 + store { ptr, i64, i64 } { ptr @.str.5362, i64 1, i64 0 }, 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.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 - store { ptr, i64, i64 } %t511, 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.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 - %t522 = load %S.ast.Type, ptr %a286 - %t523 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t521, %S.ast.Type %t522) - store { ptr, i64, i64 } %t520, ptr %a525 - store { ptr, i64, i64 } %t523, ptr %a526 - 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.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 - %t533 = load %S.gen.Val, ptr %a287 - %t534 = call { ptr, i64, i64 } @finch.gen.own(ptr %t532, %S.gen.Val %t533) - store { ptr, i64, i64 } %t531, 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.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 - %t544 = load i64, ptr %a272 - %t545 = load { ptr, i64, i64 }, ptr %t543 - %t546 = extractvalue { ptr, i64, i64 } %t545, 1 - %t547 = icmp uge i64 %t544, %t546 - br i1 %t547, label %range7812, label %inrange7813 -range7812: - call void @finch_panic_index(ptr @.str.5186, i64 4628, i64 %t544, i64 %t546) + store { ptr, i64, i64 } %t503, ptr %a507 + call void @finch_str_drop(ptr %a507) + %t508 = load { ptr, i64, i64 }, ptr %a504 + %t509 = call %S.gen.Val @finch.gen.coerce(ptr %t459, %S.gen.Val %t476, %S.ast.Type %t477, %S.ast.Node %t491, { ptr, i64, i64 } %t508) + store %S.gen.Val %t476, ptr %a510 + call void @finch.drop.S_gen_Val(ptr %a510) + store { ptr, i64, i64 } %t508, ptr %a511 + call void @finch_str_drop(ptr %a511) + %t512 = load %S.gen.Val, ptr %a309 + store %S.gen.Val %t509, ptr %a309 + store %S.gen.Val %t512, ptr %a513 + call void @finch.drop.S_gen_Val(ptr %a513) + %t514 = load { ptr, i64, i64 }, ptr %a401 + %t515 = load ptr, ptr %a1 + %t516 = icmp eq ptr %t515, null + br i1 %t516, label %panic8215, label %ok8216 +panic8215: + call void @finch_panic(ptr @.str.5363, i64 4972, ptr @.str.5364) unreachable -inrange7813: - %t548 = extractvalue { ptr, i64, i64 } %t545, 0 - %t549 = getelementptr inbounds i64, ptr %t548, i64 %t544 - %t550 = load i64, ptr %t549 - call void @finch_str_from_int(ptr %a551, i64 %t550) - %t552 = load { ptr, i64, i64 }, ptr %a551 - store { ptr, i64, i64 } %t542, 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 { ptr, i64, i64 } @finch.gen.op(ptr %t502, { ptr, i64, i64 } %t556) - store { ptr, i64, i64 } %t557, ptr %a268 - br label %for.step7750 -for.step7750: - %t558 = load i64, ptr %a272 - %t559 = add i64 %t558, 1 - store i64 %t559, ptr %a272 - 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) - %t563 = load { ptr, i64, i64 }, ptr %a562 - %t564 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t563, 0 - %t565 = load %S.ast.Type, ptr %a59 - store %S.ast.Type %t565, ptr %a566 - call void @finch.copy.S_ast_Type(ptr %a567, ptr %a566) - %t568 = load %S.ast.Type, ptr %a567 - %t569 = insertvalue %S.gen.Val %t564, %S.ast.Type %t568, 1 - %t570 = load ptr, ptr %a1 - %t571 = load %S.ast.Type, ptr %a59 - %t572 = call i1 @finch.gen.owning(ptr %t570, %S.ast.Type %t571) - %t573 = insertvalue %S.gen.Val %t569, i1 %t572, 2 - ret %S.gen.Val %t573 +ok8216: + %t517 = getelementptr inbounds %S.gen.Gen, ptr %t515, i32 0, i32 14 + store { ptr, i64, i64 } %t514, ptr %a518 + call void @finch_str_copy(ptr %a519, ptr %a518) + %t520 = load { ptr, i64, i64 }, ptr %a519 + %t521 = load { ptr, i64, i64 }, ptr %t517 + store { ptr, i64, i64 } %t520, ptr %t517 + store { ptr, i64, i64 } %t521, ptr %a522 + call void @finch_str_drop(ptr %a522) + %t523 = load { ptr, i64, i64 }, ptr %a409 + %t524 = load ptr, ptr %a1 + %t525 = icmp eq ptr %t524, null + br i1 %t525, label %panic8217, label %ok8218 +panic8217: + call void @finch_panic(ptr @.str.5365, i64 4973, ptr @.str.5366) + unreachable +ok8218: + %t526 = getelementptr inbounds %S.gen.Gen, ptr %t524, i32 0, i32 18 + store { ptr, i64, i64 } %t523, ptr %a527 + call void @finch.copy.arr_str(ptr %a528, ptr %a527) + %t529 = load { ptr, i64, i64 }, ptr %a528 + %t530 = load { ptr, i64, i64 }, ptr %t526 + store { ptr, i64, i64 } %t529, ptr %t526 + store { ptr, i64, i64 } %t530, ptr %a531 + call void @finch.drop.arr_str(ptr %a531) + %t532 = load { ptr, i64, i64 }, ptr %a417 + %t533 = load ptr, ptr %a1 + %t534 = icmp eq ptr %t533, null + br i1 %t534, label %panic8219, label %ok8220 +panic8219: + call void @finch_panic(ptr @.str.5367, i64 4974, ptr @.str.5368) + unreachable +ok8220: + %t535 = getelementptr inbounds %S.gen.Gen, ptr %t533, i32 0, i32 19 + store { ptr, i64, i64 } %t532, ptr %a536 + call void @finch.copy.arr_S_ast_Type(ptr %a537, ptr %a536) + %t538 = load { ptr, i64, i64 }, ptr %a537 + %t539 = load { ptr, i64, i64 }, ptr %t535 + store { ptr, i64, i64 } %t538, ptr %t535 + store { ptr, i64, i64 } %t539, ptr %a540 + call void @finch.drop.arr_S_ast_Type(ptr %a540) + %t541 = load { ptr, i64, i64 }, ptr %a393 + %t542 = load ptr, ptr %a1 + %t543 = icmp eq ptr %t542, null + br i1 %t543, label %panic8221, label %ok8222 +panic8221: + call void @finch_panic(ptr @.str.5369, i64 4975, ptr @.str.5370) + unreachable +ok8222: + %t544 = getelementptr inbounds %S.gen.Gen, ptr %t542, i32 0, i32 10 + store { ptr, i64, i64 } %t541, ptr %a545 + call void @finch.copy.arr_S_gen_Scope(ptr %a546, ptr %a545) + %t547 = load { ptr, i64, i64 }, ptr %a546 + %t548 = load { ptr, i64, i64 }, ptr %t544 + store { ptr, i64, i64 } %t547, ptr %t544 + store { ptr, i64, i64 } %t548, ptr %a549 + call void @finch.drop.arr_S_gen_Scope(ptr %a549) + call void @finch.drop.arr_S_gen_Scope(ptr %a438) + call void @finch.drop.arr_S_ast_Type(ptr %a417) + call void @finch.drop.arr_str(ptr %a409) + call void @finch_str_drop(ptr %a401) + call void @finch.drop.arr_S_gen_Scope(ptr %a393) + br label %endif8188 +else8187: + call void @finch.drop.S_gen_Val(ptr %a309) + call void @finch.drop.S_ast_Type(ptr %a308) + br label %for.step8161 +endif8188: + br label %endif8169 +endif8169: + %t550 = load ptr, ptr %a1 + %t551 = load %S.gen.Val, ptr %a309 + %t552 = call { ptr, i64, i64 } @finch.gen.own(ptr %t550, %S.gen.Val %t551) + store { ptr, i64, i64 } %t552, ptr %a553 + %t554 = load ptr, ptr %a1 + %t555 = load { ptr, i64, i64 }, ptr %a553 + store { ptr, i64, i64 } %t555, ptr %a556 + call void @finch_str_copy(ptr %a557, ptr %a556) + %t558 = load { ptr, i64, i64 }, ptr %a557 + %t559 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t558, 0 + %t560 = load %S.ast.Type, ptr %a308 + store %S.ast.Type %t560, ptr %a561 + call void @finch.copy.S_ast_Type(ptr %a562, ptr %a561) + %t563 = load %S.ast.Type, ptr %a562 + %t564 = insertvalue %S.gen.Val %t559, %S.ast.Type %t563, 1 + %t565 = insertvalue %S.gen.Val %t564, i1 true, 2 + call void @finch.gen.hold(ptr %t554, %S.gen.Val %t565) + store %S.gen.Val %t565, ptr %a566 + call void @finch.drop.S_gen_Val(ptr %a566) + %t567 = load ptr, ptr %a1 + %t568 = load { ptr, i64, i64 }, ptr %a65 + store { ptr, i64, i64 } { ptr @.str.5371, i64 12, i64 0 }, ptr %a570 + store { ptr, i64, i64 } %t568, ptr %a571 + call void @finch_str_concat(ptr %a569, ptr %a570, ptr %a571) + %t572 = load { ptr, i64, i64 }, ptr %a569 + store { ptr, i64, i64 } %t572, ptr %a574 + store { ptr, i64, i64 } { ptr @.str.5372, i64 1, i64 0 }, ptr %a575 + call void @finch_str_concat(ptr %a573, ptr %a574, ptr %a575) + store { ptr, i64, i64 } %t572, ptr %a576 + call void @finch_str_drop(ptr %a576) + %t577 = load { ptr, i64, i64 }, ptr %a573 + %t578 = load { ptr, i64, i64 }, ptr %a284 + store { ptr, i64, i64 } %t577, ptr %a580 + store { ptr, i64, i64 } %t578, ptr %a581 + call void @finch_str_concat(ptr %a579, ptr %a580, ptr %a581) + store { ptr, i64, i64 } %t577, ptr %a582 + call void @finch_str_drop(ptr %a582) + %t583 = load { ptr, i64, i64 }, ptr %a579 + store { ptr, i64, i64 } %t583, ptr %a585 + store { ptr, i64, i64 } { ptr @.str.5373, i64 2, i64 0 }, ptr %a586 + call void @finch_str_concat(ptr %a584, ptr %a585, ptr %a586) + store { ptr, i64, i64 } %t583, ptr %a587 + call void @finch_str_drop(ptr %a587) + %t588 = load { ptr, i64, i64 }, ptr %a584 + %t589 = load ptr, ptr %a1 + %t590 = load %S.ast.Type, ptr %a308 + %t591 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t589, %S.ast.Type %t590) + store { ptr, i64, i64 } %t588, ptr %a593 + store { ptr, i64, i64 } %t591, ptr %a594 + call void @finch_str_concat(ptr %a592, ptr %a593, ptr %a594) + store { ptr, i64, i64 } %t588, ptr %a595 + call void @finch_str_drop(ptr %a595) + store { ptr, i64, i64 } %t591, ptr %a596 + call void @finch_str_drop(ptr %a596) + %t597 = load { ptr, i64, i64 }, ptr %a592 + store { ptr, i64, i64 } %t597, ptr %a599 + store { ptr, i64, i64 } { ptr @.str.5374, i64 1, i64 0 }, ptr %a600 + call void @finch_str_concat(ptr %a598, ptr %a599, ptr %a600) + store { ptr, i64, i64 } %t597, ptr %a601 + call void @finch_str_drop(ptr %a601) + %t602 = load { ptr, i64, i64 }, ptr %a598 + %t603 = load { ptr, i64, i64 }, ptr %a553 + store { ptr, i64, i64 } %t602, ptr %a605 + store { ptr, i64, i64 } %t603, ptr %a606 + call void @finch_str_concat(ptr %a604, ptr %a605, ptr %a606) + store { ptr, i64, i64 } %t602, ptr %a607 + call void @finch_str_drop(ptr %a607) + %t608 = load { ptr, i64, i64 }, ptr %a604 + store { ptr, i64, i64 } %t608, ptr %a610 + store { ptr, i64, i64 } { ptr @.str.5375, i64 2, i64 0 }, ptr %a611 + call void @finch_str_concat(ptr %a609, ptr %a610, ptr %a611) + store { ptr, i64, i64 } %t608, ptr %a612 + call void @finch_str_drop(ptr %a612) + %t613 = load { ptr, i64, i64 }, ptr %a609 + %t614 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 3 + %t615 = load i64, ptr %a294 + %t616 = load { ptr, i64, i64 }, ptr %t614 + %t617 = extractvalue { ptr, i64, i64 } %t616, 1 + %t618 = icmp uge i64 %t615, %t617 + br i1 %t618, label %range8223, label %inrange8224 +range8223: + call void @finch_panic_index(ptr @.str.5376, i64 4981, i64 %t615, i64 %t617) + unreachable +inrange8224: + %t619 = extractvalue { ptr, i64, i64 } %t616, 0 + %t620 = getelementptr inbounds i64, ptr %t619, i64 %t615 + %t621 = load i64, ptr %t620 + call void @finch_str_from_int(ptr %a622, i64 %t621) + %t623 = load { ptr, i64, i64 }, ptr %a622 + store { ptr, i64, i64 } %t613, ptr %a625 + store { ptr, i64, i64 } %t623, ptr %a626 + call void @finch_str_concat(ptr %a624, ptr %a625, ptr %a626) + store { ptr, i64, i64 } %t613, ptr %a627 + call void @finch_str_drop(ptr %a627) + store { ptr, i64, i64 } %t623, ptr %a628 + call void @finch_str_drop(ptr %a628) + %t629 = load { ptr, i64, i64 }, ptr %a624 + %t630 = call { ptr, i64, i64 } @finch.gen.op(ptr %t567, { ptr, i64, i64 } %t629) + store { ptr, i64, i64 } %t629, ptr %a631 + call void @finch_str_drop(ptr %a631) + %t632 = load { ptr, i64, i64 }, ptr %a284 + store { ptr, i64, i64 } %t630, ptr %a284 + store { ptr, i64, i64 } %t632, ptr %a633 + call void @finch_str_drop(ptr %a633) + call void @finch_str_drop(ptr %a553) + call void @finch.drop.S_gen_Val(ptr %a309) + call void @finch.drop.S_ast_Type(ptr %a308) + br label %for.step8161 +for.step8161: + %t634 = load i64, ptr %a294 + %t635 = add i64 %t634, 1 + store i64 %t635, ptr %a294 + br label %for.cond8159 +for.end8162: + %t636 = load ptr, ptr %a1 + %t637 = load i64, ptr %a290 + call void @finch.gen.heldEnd(ptr %t636, i64 %t637) + %t638 = load { ptr, i64, i64 }, ptr %a284 + store { ptr, i64, i64 } %t638, ptr %a639 + call void @finch_str_copy(ptr %a640, ptr %a639) + %t641 = load { ptr, i64, i64 }, ptr %a640 + %t642 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t641, 0 + %t643 = load %S.ast.Type, ptr %a61 + store %S.ast.Type %t643, ptr %a644 + call void @finch.copy.S_ast_Type(ptr %a645, ptr %a644) + %t646 = load %S.ast.Type, ptr %a645 + %t647 = insertvalue %S.gen.Val %t642, %S.ast.Type %t646, 1 + %t648 = load ptr, ptr %a1 + %t649 = load %S.ast.Type, ptr %a61 + %t650 = call i1 @finch.gen.owning(ptr %t648, %S.ast.Type %t649) + %t651 = insertvalue %S.gen.Val %t647, i1 %t650, 2 + call void @finch_str_drop(ptr %a284) + call void @finch.drop.arr_int(ptr %a79) + call void @finch_str_drop(ptr %a65) + call void @finch.drop.S_ast_Type(ptr %a61) + call void @finch.drop.S_ast_Node(ptr %a20) + call void @finch.drop.S_gen_StructDef(ptr %a19) + ret %S.gen.Val %t651 } define internal void @finch.gen.noteMethod(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2) { @@ -70479,23 +83874,24 @@ entry: %a2 = alloca %S.ast.Node, align 16 %a3 = alloca { ptr, i64, i64 }, align 16 %a13 = alloca %S.docs.Doc, align 16 + %a28 = 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 %panic7814, label %ok7815 -panic7814: - call void @finch_panic(ptr @.str.5187, i64 4637, ptr @.str.5188) + br i1 %t5, label %panic8225, label %ok8226 +panic8225: + call void @finch_panic(ptr @.str.5377, i64 4991, ptr @.str.5378) unreachable -ok7815: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 26 +ok8226: + %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 27 %t7 = load i1, ptr %t6 %t8 = xor i1 %t7, true - br i1 %t8, label %then7816, label %endif7818 -then7816: + br i1 %t8, label %then8227, label %endif8229 +then8227: ret void -endif7818: +endif8229: %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 @@ -70505,8 +83901,8 @@ endif7818: %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: + br i1 %t17, label %then8230, label %endif8232 +then8230: %t18 = load ptr, ptr %a1 %t19 = load %S.ast.Node, ptr %a2 %t20 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 @@ -70517,9 +83913,12 @@ then7819: %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: + call void @finch.gen.noteRef(ptr %t18, %S.ast.Node %t19, i64 %t22, i64 %t25, { ptr, i64, i64 } %t27, { ptr, i64, i64 } { ptr @.str.5379, i64 0, i64 0 }, i64 0, i64 0) + store { ptr, i64, i64 } %t27, ptr %a28 + call void @finch_str_drop(ptr %a28) + br label %endif8232 +endif8232: + call void @finch.drop.S_docs_Doc(ptr %a13) ret void } @@ -70541,228 +83940,300 @@ entry: %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 + %a46 = 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 %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 %a54 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca i64, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 + %a55 = 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 + %a72 = alloca { ptr, i64, i64 }, align 16 + %a73 = alloca { ptr, i64, i64 }, align 16 %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca i64, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = 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 + %a84 = alloca { ptr, i64, i64 }, align 16 + %a90 = alloca i64, align 16 %a97 = alloca { ptr, i64, i64 }, align 16 %a98 = alloca { ptr, i64, i64 }, align 16 %a99 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca i64, align 16 - %a119 = alloca i64, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca i64, align 16 - %a138 = alloca %S.ast.Node, align 16 - %a139 = alloca %S.ast.Node, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = 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 + %a103 = 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 + %a109 = alloca { ptr, i64, i64 }, align 16 + %a115 = alloca i64, align 16 + %a127 = alloca i64, align 16 + %a130 = alloca { ptr, i64, i64 }, align 16 + %a134 = alloca i64, align 16 + %a146 = alloca %S.ast.Node, align 16 + %a147 = alloca %S.ast.Node, align 16 + %a165 = alloca { ptr, i64, i64 }, align 16 + %a166 = alloca { ptr, i64, i64 }, align 16 %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = 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 %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca i64, align 16 - %a197 = alloca i64, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca %S.gen.Ref, align 16 - %a214 = alloca %S.ast.Type, align 16 - %a215 = alloca %S.ast.Type, align 16 - %a217 = alloca %S.ast.Type, align 16 - %a223 = alloca %S.ast.Type, align 16 - %a224 = alloca %S.ast.Type, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca i64, align 16 - %a247 = alloca i64, align 16 + %a176 = 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 + %a184 = alloca { ptr, i64, i64 }, align 16 + %a186 = alloca { ptr, i64, i64 }, align 16 + %a200 = alloca { ptr, i64, i64 }, align 16 + %a206 = alloca i64, align 16 + %a209 = alloca i64, align 16 + %a214 = alloca { ptr, i64, i64 }, align 16 + %a215 = alloca { ptr, i64, i64 }, align 16 + %a222 = alloca %S.gen.Ref, align 16 + %a228 = alloca i64, align 16 + %a232 = alloca %S.ast.Type, align 16 + %a233 = alloca %S.ast.Type, align 16 + %a235 = alloca %S.ast.Type, align 16 + %a241 = alloca %S.ast.Type, align 16 + %a242 = alloca %S.ast.Type, align 16 + %a245 = alloca %S.ast.Type, align 16 + %a248 = alloca { ptr, i64, i64 }, align 16 + %a249 = alloca { ptr, i64, i64 }, align 16 %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca %S.gen.Val, 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 - %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 - %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 + %a258 = alloca { ptr, i64, i64 }, align 16 + %a259 = alloca { ptr, i64, i64 }, align 16 + %a262 = alloca { ptr, i64, i64 }, align 16 + %a266 = alloca i64, align 16 + %a269 = alloca i64, align 16 + %a274 = alloca { ptr, i64, i64 }, align 16 + %a275 = 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 + %a289 = alloca { ptr, i64, i64 }, align 16 + %a295 = alloca { ptr, i64, i64 }, align 16 + %a305 = alloca { ptr, i64, i64 }, align 16 + %a311 = alloca %S.gen.Val, align 16 + %a327 = alloca { ptr, i64, i64 }, align 16 + %a328 = alloca { ptr, i64, i64 }, align 16 + %a333 = alloca %S.gen.Val, align 16 + %a334 = alloca %S.gen.Val, align 16 + %a336 = alloca %S.gen.Val, align 16 + %a346 = alloca %S.ast.Type, align 16 + %a347 = alloca %S.ast.Type, align 16 + %a351 = alloca %S.gen.Val, align 16 + %a355 = alloca { ptr, i64, i64 }, align 16 + %a367 = alloca { ptr, i64, i64 }, align 16 + %a368 = alloca %S.gen.Val, align 16 + %a379 = alloca { ptr, i64, i64 }, align 16 + %a380 = alloca { ptr, i64, i64 }, align 16 + %a383 = alloca { ptr, i64, i64 }, align 16 + %a389 = alloca { ptr, i64, i64 }, align 16 + %a390 = alloca { ptr, i64, i64 }, align 16 + %a393 = alloca { ptr, i64, i64 }, align 16 + %a397 = alloca i64, align 16 + %a400 = alloca i64, align 16 + %a405 = alloca { ptr, i64, i64 }, align 16 + %a406 = 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 - %a424 = alloca { ptr, i64, i64 }, align 16 - %a425 = alloca { ptr, i64, i64 }, align 16 + %a420 = 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 - %a465 = alloca { ptr, i64, i64 }, align 16 - %a466 = 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 + %a436 = alloca { ptr, i64, i64 }, align 16 + %a442 = alloca %S.gen.Val, align 16 + %a459 = alloca %S.ast.Type, align 16 + %a460 = alloca %S.ast.Type, align 16 + %a462 = alloca %S.ast.Type, align 16 + %a463 = alloca { ptr, i64, i64 }, align 16 + %a464 = alloca i1, align 16 + %a467 = alloca { ptr, i64, i64 }, align 16 + %a468 = alloca { ptr, i64, i64 }, align 16 + %a484 = alloca { ptr, i64, i64 }, align 16 + %a485 = alloca { ptr, i64, i64 }, align 16 + %a492 = alloca { ptr, i64, i64 }, align 16 + %a493 = alloca { ptr, i64, i64 }, align 16 + %a495 = 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 + %a510 = alloca { ptr, i64, i64 }, align 16 + %a512 = alloca { ptr, i64, i64 }, align 16 + %a513 = alloca { ptr, i64, i64 }, align 16 + %a514 = alloca { ptr, i64, i64 }, align 16 + %a515 = alloca { ptr, i64, i64 }, align 16 + %a518 = alloca { ptr, i64, i64 }, align 16 + %a521 = alloca { ptr, i64, i64 }, align 16 + %a522 = alloca { ptr, i64, i64 }, align 16 + %a523 = alloca { ptr, i64, i64 }, align 16 + %a525 = alloca { ptr, i64, i64 }, align 16 + %a526 = alloca { ptr, i64, i64 }, align 16 + %a527 = alloca { ptr, i64, i64 }, align 16 + %a528 = alloca { ptr, i64, i64 }, align 16 + %a531 = alloca { ptr, i64, i64 }, align 16 + %a532 = alloca { ptr, i64, i64 }, align 16 + %a540 = alloca %S.ast.Type, align 16 + %a541 = alloca %S.ast.Type, align 16 + %a544 = alloca %S.ast.Type, 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 + %a559 = alloca { ptr, i64, i64 }, align 16 + %a560 = 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 %a579 = alloca { ptr, i64, i64 }, align 16 - %a586 = 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 - %a614 = alloca { ptr, i64, i64 }, align 16 - %a615 = alloca { ptr, i64, i64 }, align 16 - %a616 = 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 - %a624 = alloca { ptr, i64, i64 }, align 16 - %a625 = alloca { ptr, i64, i64 }, align 16 - %a626 = 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 - %a634 = alloca { ptr, i64, i64 }, align 16 - %a635 = alloca { ptr, i64, i64 }, align 16 - %a636 = 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 - %a652 = alloca { ptr, i64, i64 }, align 16 - %a653 = alloca { ptr, i64, i64 }, align 16 - %a654 = 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 - %a662 = alloca { ptr, i64, i64 }, align 16 - %a663 = alloca { ptr, i64, i64 }, align 16 - %a664 = 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 - %a672 = alloca { ptr, i64, i64 }, align 16 - %a673 = 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 - %a678 = alloca { ptr, i64, i64 }, align 16 - %a681 = 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 + %a582 = alloca { ptr, i64, i64 }, align 16 + %a583 = alloca { ptr, i64, i64 }, align 16 + %a588 = alloca { ptr, i64, i64 }, align 16 + %a589 = alloca { ptr, i64, i64 }, align 16 + %a601 = alloca i64, align 16 + %a606 = alloca { ptr, i64, i64 }, align 16 + %a607 = alloca { ptr, i64, i64 }, align 16 + %a617 = alloca i64, align 16 + %a648 = alloca i64, align 16 + %a669 = alloca { ptr, i64, i64 }, align 16 + %a673 = alloca i64, align 16 + %a681 = alloca %S.gen.FnSig, 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 + %a687 = alloca { ptr, i64, i64 }, align 16 + %a694 = alloca { ptr, i64, i64 }, align 16 + %a695 = alloca { ptr, i64, i64 }, align 16 + %a702 = alloca { ptr, i64, i64 }, align 16 + %a703 = 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 + %a722 = alloca { ptr, i64, i64 }, align 16 + %a723 = 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 + %a729 = alloca { ptr, i64, i64 }, align 16 %a730 = alloca { ptr, i64, i64 }, align 16 %a731 = alloca { ptr, i64, i64 }, align 16 %a732 = alloca { ptr, i64, i64 }, align 16 - %a734 = alloca { ptr, i64, i64 }, align 16 + %a733 = 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 + %a737 = alloca { ptr, i64, i64 }, align 16 + %a738 = alloca { ptr, i64, i64 }, align 16 + %a742 = alloca { ptr, i64, i64 }, align 16 + %a743 = alloca { ptr, i64, i64 }, align 16 + %a744 = alloca { ptr, i64, i64 }, align 16 + %a745 = alloca { ptr, i64, i64 }, align 16 + %a747 = 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 + %a754 = alloca { ptr, i64, i64 }, align 16 + %a755 = alloca { ptr, i64, i64 }, align 16 + %a756 = alloca { ptr, i64, i64 }, align 16 + %a757 = alloca { ptr, i64, i64 }, align 16 %a759 = alloca { ptr, i64, i64 }, align 16 %a760 = 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 + %a769 = 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 %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 + %a774 = alloca { ptr, i64, i64 }, align 16 + %a775 = alloca { ptr, i64, i64 }, align 16 + %a776 = 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 + %a783 = alloca { ptr, i64, i64 }, align 16 + %a784 = 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 %a789 = alloca { ptr, i64, i64 }, align 16 - %a790 = alloca { ptr, i64, i64 }, align 16 - %a791 = 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 + %a796 = alloca { ptr, i64, i64 }, align 16 + %a798 = 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 + %a807 = 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 + %a811 = 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 + %a818 = alloca { ptr, i64, i64 }, align 16 + %a832 = alloca { ptr, i64, i64 }, align 16 + %a833 = alloca { ptr, i64, i64 }, align 16 + %a838 = alloca { ptr, i64, i64 }, align 16 + %a839 = alloca { ptr, i64, i64 }, align 16 + %a851 = alloca { ptr, i64, i64 }, align 16 + %a852 = alloca { ptr, i64, i64 }, align 16 + %a853 = alloca { ptr, i64, i64 }, align 16 + %a857 = alloca { ptr, i64, i64 }, align 16 + %a858 = alloca { ptr, i64, i64 }, align 16 + %a859 = alloca { ptr, i64, i64 }, align 16 + %a860 = alloca { ptr, i64, i64 }, align 16 + %a861 = alloca { ptr, i64, i64 }, align 16 + %a863 = 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 + %a868 = alloca { ptr, i64, i64 }, align 16 + %a871 = alloca { ptr, i64, i64 }, align 16 + %a878 = alloca i64, align 16 + %a885 = alloca %S.gen.Var, align 16 + %a890 = alloca { ptr, i64, i64 }, align 16 + %a891 = alloca { ptr, i64, i64 }, align 16 + %a892 = 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 + %a899 = 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 + %a916 = 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 + %a929 = alloca { ptr, i64, i64 }, align 16 + %a930 = alloca { ptr, i64, i64 }, align 16 + %a931 = alloca %S.gen.Val, align 16 + %a951 = alloca { ptr, i64, i64 }, align 16 + %a952 = alloca { ptr, i64, i64 }, align 16 + %a953 = alloca { ptr, i64, i64 }, align 16 + %a954 = alloca { ptr, i64, i64 }, align 16 + %a956 = 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 %range7822, label %inrange7823 -range7822: - call void @finch_panic_index(ptr @.str.5190, i64 4647, i64 0, i64 %t5) + br i1 %t6, label %range8233, label %inrange8234 +range8233: + call void @finch_panic_index(ptr @.str.5380, i64 5001, i64 0, i64 %t5) unreachable -inrange7823: +inrange8234: %t7 = extractvalue { ptr, i64, i64 } %t4, 0 %t8 = getelementptr inbounds %S.ast.Node, ptr %t7, i64 0 %t9 = load %S.ast.Node, ptr %t8 @@ -70773,25 +84244,25 @@ inrange7823: %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.5191, i64 3, i64 0 }, ptr %a17 + store { ptr, i64, i64 } { ptr @.str.5381, 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.from7824 -logic.from7824: - br i1 %t19, label %logic.rhs7825, label %logic.end7826 -logic.rhs7825: + br label %logic.from8235 +logic.from8235: + br i1 %t19, label %logic.rhs8236, label %logic.end8237 +logic.rhs8236: %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.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: + br label %logic.rend8238 +logic.rend8238: + br label %logic.end8237 +logic.end8237: + %t25 = phi i1 [ false, %logic.from8235 ], [ %t24, %logic.rend8238 ] + br i1 %t25, label %then8239, label %endif8241 +then8239: %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 @@ -70802,1114 +84273,1475 @@ then7828: %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 %then7831, label %endif7833 -then7831: + br i1 %t35, label %then8242, label %endif8244 +then8242: %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.5192, i64 38, i64 0 }, ptr %a40 + store { ptr, i64, i64 } { ptr @.str.5382, 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.5193, i64 32, i64 0 }, ptr %a45 + store { ptr, i64, i64 } { ptr @.str.5383, 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 - store { ptr, i64, i64 } %t46, ptr %a49 + store { ptr, i64, i64 } %t42, ptr %a46 + call void @finch_str_drop(ptr %a46) + %t47 = load { ptr, i64, i64 }, ptr %a43 + %t48 = load { ptr, i64, i64 }, ptr %a31 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.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 %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 - %t59 = load { ptr, i64, i64 }, ptr %t58 - %t60 = call i64 @finch.gen.findFn(ptr %t56, { ptr, i64, i64 } %t57, { ptr, i64, i64 } %t59) - store i64 %t60, ptr %a61 - %t62 = load i64, ptr %a61 - %t63 = icmp sge i64 %t62, 0 - 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.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 - %t73 = load { ptr, i64, i64 }, ptr %t72 - store { ptr, i64, i64 } %t71, 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 - %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 -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.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 %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.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 - %t96 = load { ptr, i64, i64 }, ptr %t95 - store { ptr, i64, i64 } %t94, ptr %a98 - store { ptr, i64, i64 } %t96, ptr %a99 + store { ptr, i64, i64 } %t48, ptr %a51 + call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) + store { ptr, i64, i64 } %t47, ptr %a52 + call void @finch_str_drop(ptr %a52) + %t53 = load { ptr, i64, i64 }, ptr %a49 + store { ptr, i64, i64 } %t53, ptr %a55 + store { ptr, i64, i64 } { ptr @.str.5384, i64 13, i64 0 }, ptr %a56 + call void @finch_str_concat(ptr %a54, ptr %a55, ptr %a56) + store { ptr, i64, i64 } %t53, ptr %a57 + call void @finch_str_drop(ptr %a57) + %t58 = load { ptr, i64, i64 }, ptr %a54 + call void @finch.gen.fail(ptr %t36, %S.ast.Node %t37, { ptr, i64, i64 } %t58) + store { ptr, i64, i64 } %t58, ptr %a59 + call void @finch_str_drop(ptr %a59) + br label %endif8244 +endif8244: + %t60 = load ptr, ptr %a1 + %t61 = load { ptr, i64, i64 }, ptr %a31 + %t62 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t63 = load { ptr, i64, i64 }, ptr %t62 + %t64 = call i64 @finch.gen.findFn(ptr %t60, { ptr, i64, i64 } %t61, { ptr, i64, i64 } %t63) + store i64 %t64, ptr %a65 + %t66 = load i64, ptr %a65 + %t67 = icmp sge i64 %t66, 0 + br i1 %t67, label %then8245, label %endif8247 +then8245: + %t68 = load ptr, ptr %a1 + %t69 = load i64, ptr %a65 + %t70 = load %S.ast.Node, ptr %a2 + %t71 = load { ptr, i64, i64 }, ptr %a31 + store { ptr, i64, i64 } %t71, ptr %a73 + store { ptr, i64, i64 } { ptr @.str.5385, i64 1, i64 0 }, ptr %a74 + call void @finch_str_concat(ptr %a72, ptr %a73, ptr %a74) + %t75 = load { ptr, i64, i64 }, ptr %a72 + %t76 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t77 = load { ptr, i64, i64 }, ptr %t76 + store { ptr, i64, i64 } %t75, ptr %a79 + store { ptr, i64, i64 } %t77, ptr %a80 + call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) + store { ptr, i64, i64 } %t75, ptr %a81 + call void @finch_str_drop(ptr %a81) + %t82 = load { ptr, i64, i64 }, ptr %a78 + %t83 = call %S.gen.Val @finch.gen.callFn(ptr %t68, i64 %t69, %S.ast.Node %t70, i64 1, { ptr, i64, i64 } %t82, { ptr, i64, i64 } { ptr @.str.5386, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.5387, i64 0, i64 0 }) + store { ptr, i64, i64 } %t82, ptr %a84 + call void @finch_str_drop(ptr %a84) + call void @finch_str_drop(ptr %a31) + call void @finch.drop.S_ast_Node(ptr %a13) + ret %S.gen.Val %t83 +endif8247: + %t85 = load ptr, ptr %a1 + %t86 = load { ptr, i64, i64 }, ptr %a31 + %t87 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t88 = load { ptr, i64, i64 }, ptr %t87 + %t89 = call i64 @finch.gen.findTemplate(ptr %t85, { ptr, i64, i64 } %t86, { ptr, i64, i64 } %t88, { ptr, i64, i64 } { ptr @.str.5388, i64 0, i64 0 }, i1 false) + store i64 %t89, ptr %a90 + %t91 = load i64, ptr %a90 + %t92 = icmp sge i64 %t91, 0 + br i1 %t92, label %then8248, label %endif8250 +then8248: + %t93 = load ptr, ptr %a1 + %t94 = load %S.ast.Node, ptr %a2 + %t95 = load i64, ptr %a90 + %t96 = load { ptr, i64, i64 }, ptr %a31 + store { ptr, i64, i64 } %t96, ptr %a98 + store { ptr, i64, i64 } { ptr @.str.5389, i64 1, i64 0 }, ptr %a99 call void @finch_str_concat(ptr %a97, ptr %a98, ptr %a99) %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 -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 - %t105 = load { ptr, i64, i64 }, ptr %t104 - %t106 = call i64 @finch.gen.findEnum(ptr %t102, { ptr, i64, i64 } %t103, { ptr, i64, i64 } %t105) - store i64 %t106, ptr %a107 - %t108 = load i64, ptr %a107 - %t109 = icmp sge i64 %t108, 0 - br i1 %t109, label %then7840, label %endif7842 -then7840: + %t101 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %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) + store { ptr, i64, i64 } %t100, ptr %a106 + call void @finch_str_drop(ptr %a106) + %t107 = load { ptr, i64, i64 }, ptr %a103 + %t108 = call %S.gen.Val @finch.gen.genericCall(ptr %t93, %S.ast.Node %t94, i64 %t95, i64 1, { ptr, i64, i64 } %t107) + store { ptr, i64, i64 } %t107, ptr %a109 + call void @finch_str_drop(ptr %a109) + call void @finch_str_drop(ptr %a31) + call void @finch.drop.S_ast_Node(ptr %a13) + ret %S.gen.Val %t108 +endif8250: %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 -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 - %t117 = load { ptr, i64, i64 }, ptr %t116 - %t118 = call i64 @finch.gen.findStruct(ptr %t114, { ptr, i64, i64 } %t115, { ptr, i64, i64 } %t117) - store i64 %t118, ptr %a119 - %t120 = load i64, ptr %a119 - %t121 = icmp sge i64 %t120, 0 - 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.cond7846 -for.cond7846: - %t127 = load i64, ptr %a126 - %t128 = icmp slt i64 %t127, %t125 - 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 %range7850, label %inrange7851 -range7850: - call void @finch_panic_index(ptr @.str.5200, i64 4669, i64 %t131, i64 %t133) + %t111 = load { ptr, i64, i64 }, ptr %a31 + %t112 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t113 = load { ptr, i64, i64 }, ptr %t112 + %t114 = call i64 @finch.gen.findEnum(ptr %t110, { ptr, i64, i64 } %t111, { ptr, i64, i64 } %t113) + store i64 %t114, ptr %a115 + %t116 = load i64, ptr %a115 + %t117 = icmp sge i64 %t116, 0 + br i1 %t117, label %then8251, label %endif8253 +then8251: + %t118 = load ptr, ptr %a1 + %t119 = load %S.ast.Node, ptr %a2 + %t120 = load i64, ptr %a115 + %t121 = call %S.gen.Val @finch.gen.enumFrom(ptr %t118, %S.ast.Node %t119, i64 %t120) + call void @finch_str_drop(ptr %a31) + call void @finch.drop.S_ast_Node(ptr %a13) + ret %S.gen.Val %t121 +endif8253: + %t122 = load ptr, ptr %a1 + %t123 = load { ptr, i64, i64 }, ptr %a31 + %t124 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t125 = load { ptr, i64, i64 }, ptr %t124 + %t126 = call i64 @finch.gen.findStruct(ptr %t122, { ptr, i64, i64 } %t123, { ptr, i64, i64 } %t125) + store i64 %t126, ptr %a127 + %t128 = load i64, ptr %a127 + %t129 = icmp sge i64 %t128, 0 + br i1 %t129, label %then8254, label %endif8256 +then8254: + store { ptr, i64, i64 } zeroinitializer, ptr %a130 + %t131 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t132 = getelementptr inbounds { ptr, i64, i64 }, ptr %t131, i32 0, i32 1 + %t133 = load i64, ptr %t132 + store i64 1, ptr %a134 + br label %for.cond8257 +for.cond8257: + %t135 = load i64, ptr %a134 + %t136 = icmp slt i64 %t135, %t133 + br i1 %t136, label %for.body8258, label %for.end8260 +for.body8258: + %t137 = getelementptr inbounds { ptr, i64, i64 }, ptr %a130, i32 0, i32 1 + %t138 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t139 = load i64, ptr %a134 + %t140 = load { ptr, i64, i64 }, ptr %t138 + %t141 = extractvalue { ptr, i64, i64 } %t140, 1 + %t142 = icmp uge i64 %t139, %t141 + br i1 %t142, label %range8261, label %inrange8262 +range8261: + call void @finch_panic_index(ptr @.str.5390, i64 5023, i64 %t139, i64 %t141) unreachable -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 - store %S.ast.Node %t137, ptr %a138 - call void @finch.copy.S_ast_Node(ptr %a139, ptr %a138) - %t140 = load %S.ast.Node, ptr %a139 - %t141 = load i64, ptr %t129 - %t142 = add i64 %t141, 1 - call void @finch_arr_reserve(ptr %a122, i64 %t142, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t143 = load ptr, ptr %a122 - %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.step7848 -for.step7848: - %t145 = load i64, ptr %a126 - %t146 = add i64 %t145, 1 - store i64 %t146, ptr %a126 - br label %for.cond7846 -for.end7849: - %t147 = load ptr, ptr %a1 - %t148 = load i64, ptr %a119 - %t149 = load { ptr, i64, i64 }, ptr %a122 - %t150 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 10 - %t151 = load { ptr, i64, i64 }, ptr %t150 - %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 -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.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.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 - %t166 = load { ptr, i64, i64 }, ptr %t165 - store { ptr, i64, i64 } %t164, 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.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 %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.5204, i64 4, i64 0 }, ptr %t177 - %t178 = getelementptr inbounds { ptr, i64, i64 }, ptr %t176, i64 1 - 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.5206, i64 6, i64 0 }, ptr %t179 - %t180 = getelementptr inbounds { ptr, i64, i64 }, ptr %t176, i64 3 - 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.5208, i64 5, i64 0 }, ptr %t181 - %t182 = getelementptr inbounds { ptr, i64, i64 }, ptr %t176, i64 5 - 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.5210, i64 4, i64 0 }, ptr %t183 - %t184 = getelementptr inbounds { ptr, i64, i64 }, ptr %t176, i64 7 - 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 - store { ptr, i64, i64 } %t187, ptr %a188 - %t189 = load ptr, ptr %a1 - %t190 = load %S.ast.Node, ptr %a13 - %t191 = getelementptr inbounds { ptr, i64, i64 }, ptr %a188, i32 0, i32 1 - %t192 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t193 = load { ptr, i64, i64 }, ptr %t192 - store i64 -1, ptr %a194 - %t195 = load i64, ptr %t191 - %t196 = load ptr, ptr %a188 - store i64 0, ptr %a197 - br label %find.cond7852 -find.cond7852: - %t198 = load i64, ptr %a197 - %t199 = icmp slt i64 %t198, %t195 - 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.hit7854, label %find.next7855 -find.hit7854: - store i64 %t198, ptr %a194 - br label %find.end7856 -find.next7855: - %t206 = add i64 %t198, 1 - store i64 %t206, ptr %a197 - 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) - store %S.gen.Ref %t209, ptr %a210 - %t211 = getelementptr inbounds %S.gen.Ref, ptr %a210, i32 0, i32 2 - %t212 = getelementptr inbounds %S.gen.Val, ptr %t211, i32 0, i32 1 - %t213 = load %S.ast.Type, ptr %t212 - store %S.ast.Type %t213, ptr %a214 - call void @finch.copy.S_ast_Type(ptr %a215, ptr %a214) - %t216 = load %S.ast.Type, ptr %a215 - 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 %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 - store %S.ast.Type %t222, ptr %a223 - 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 %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.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 %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 %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 - store { ptr, i64, i64 } %t237, ptr %a238 - 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 %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 - store i64 -1, ptr %a244 - %t245 = load i64, ptr %t241 - %t246 = load ptr, ptr %a188 - store i64 0, ptr %a247 - br label %find.cond7866 -find.cond7866: - %t248 = load i64, ptr %a247 - %t249 = icmp slt i64 %t248, %t245 - 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.hit7868, label %find.next7869 -find.hit7868: - store i64 %t248, ptr %a244 - br label %find.end7870 -find.next7869: - %t256 = add i64 %t248, 1 - store i64 %t256, ptr %a247 - br label %find.cond7866 -find.end7870: - %t257 = load i64, ptr %a244 - %t258 = icmp sge i64 %t257, 0 - 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.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 %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 %endif7865 -endif7865: - %t271 = load ptr, ptr %a1 - %t272 = load %S.ast.Node, ptr %a2 - %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 - 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 { 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) +inrange8262: + %t143 = extractvalue { ptr, i64, i64 } %t140, 0 + %t144 = getelementptr inbounds %S.ast.Node, ptr %t143, i64 %t139 + %t145 = load %S.ast.Node, ptr %t144 + store %S.ast.Node %t145, ptr %a146 + call void @finch.copy.S_ast_Node(ptr %a147, ptr %a146) + %t148 = load %S.ast.Node, ptr %a147 + %t149 = load i64, ptr %t137 + %t150 = add i64 %t149, 1 + call void @finch_arr_reserve(ptr %a130, i64 %t150, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t151 = load ptr, ptr %a130 + %t152 = getelementptr inbounds %S.ast.Node, ptr %t151, i64 %t149 + store %S.ast.Node %t148, ptr %t152 + store i64 %t150, ptr %t137 + br label %for.step8259 +for.step8259: + %t153 = load i64, ptr %a134 + %t154 = add i64 %t153, 1 + store i64 %t154, ptr %a134 + br label %for.cond8257 +for.end8260: + %t155 = load ptr, ptr %a1 + %t156 = load i64, ptr %a127 + %t157 = load { ptr, i64, i64 }, ptr %a130 + %t158 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 10 + %t159 = load { ptr, i64, i64 }, ptr %t158 + %t160 = load %S.ast.Node, ptr %a2 + %t161 = call %S.gen.Val @finch.gen.construct(ptr %t155, i64 %t156, { ptr, i64, i64 } %t157, { ptr, i64, i64 } %t159, %S.ast.Node %t160) + call void @finch.drop.arr_S_ast_Node(ptr %a130) + call void @finch_str_drop(ptr %a31) + call void @finch.drop.S_ast_Node(ptr %a13) + ret %S.gen.Val %t161 +endif8256: + %t162 = load ptr, ptr %a1 + %t163 = load %S.ast.Node, ptr %a2 + %t164 = load { ptr, i64, i64 }, ptr %a31 + store { ptr, i64, i64 } { ptr @.str.5391, 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.5392, i64 35, i64 0 }, ptr %a171 + call void @finch_str_concat(ptr %a169, ptr %a170, ptr %a171) + store { ptr, i64, i64 } %t168, ptr %a172 + call void @finch_str_drop(ptr %a172) + %t173 = load { ptr, i64, i64 }, ptr %a169 + %t174 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %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) + store { ptr, i64, i64 } %t173, ptr %a179 + call void @finch_str_drop(ptr %a179) + %t180 = load { ptr, i64, i64 }, ptr %a176 + store { ptr, i64, i64 } %t180, ptr %a182 + store { ptr, i64, i64 } { ptr @.str.5393, i64 1, i64 0 }, ptr %a183 + call void @finch_str_concat(ptr %a181, ptr %a182, ptr %a183) + store { ptr, i64, i64 } %t180, ptr %a184 + call void @finch_str_drop(ptr %a184) + %t185 = load { ptr, i64, i64 }, ptr %a181 + call void @finch.gen.fail(ptr %t162, %S.ast.Node %t163, { ptr, i64, i64 } %t185) + store { ptr, i64, i64 } %t185, ptr %a186 + call void @finch_str_drop(ptr %a186) + call void @finch_str_drop(ptr %a31) + br label %endif8241 +endif8241: + %t187 = mul i64 8, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) + %t188 = call ptr @finch_alloc(i64 %t187) + %t189 = getelementptr inbounds { ptr, i64, i64 }, ptr %t188, i64 0 + store { ptr, i64, i64 } { ptr @.str.5394, i64 4, i64 0 }, ptr %t189 + %t190 = getelementptr inbounds { ptr, i64, i64 }, ptr %t188, i64 1 + store { ptr, i64, i64 } { ptr @.str.5395, i64 3, i64 0 }, ptr %t190 + %t191 = getelementptr inbounds { ptr, i64, i64 }, ptr %t188, i64 2 + store { ptr, i64, i64 } { ptr @.str.5396, i64 6, i64 0 }, ptr %t191 + %t192 = getelementptr inbounds { ptr, i64, i64 }, ptr %t188, i64 3 + store { ptr, i64, i64 } { ptr @.str.5397, i64 6, i64 0 }, ptr %t192 + %t193 = getelementptr inbounds { ptr, i64, i64 }, ptr %t188, i64 4 + store { ptr, i64, i64 } { ptr @.str.5398, i64 5, i64 0 }, ptr %t193 + %t194 = getelementptr inbounds { ptr, i64, i64 }, ptr %t188, i64 5 + store { ptr, i64, i64 } { ptr @.str.5399, i64 6, i64 0 }, ptr %t194 + %t195 = getelementptr inbounds { ptr, i64, i64 }, ptr %t188, i64 6 + store { ptr, i64, i64 } { ptr @.str.5400, i64 4, i64 0 }, ptr %t195 + %t196 = getelementptr inbounds { ptr, i64, i64 }, ptr %t188, i64 7 + store { ptr, i64, i64 } { ptr @.str.5401, i64 7, i64 0 }, ptr %t196 + %t197 = insertvalue { ptr, i64, i64 } undef, ptr %t188, 0 + %t198 = insertvalue { ptr, i64, i64 } %t197, i64 8, 1 + %t199 = insertvalue { ptr, i64, i64 } %t198, i64 8, 2 + store { ptr, i64, i64 } %t199, ptr %a200 + %t201 = load ptr, ptr %a1 + %t202 = load %S.ast.Node, ptr %a13 + %t203 = getelementptr inbounds { ptr, i64, i64 }, ptr %a200, i32 0, i32 1 + %t204 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t205 = load { ptr, i64, i64 }, ptr %t204 + store i64 -1, ptr %a206 + %t207 = load i64, ptr %t203 + %t208 = load ptr, ptr %a200 + store i64 0, ptr %a209 + br label %find.cond8263 +find.cond8263: + %t210 = load i64, ptr %a209 + %t211 = icmp slt i64 %t210, %t207 + br i1 %t211, label %find.body8264, label %find.end8267 +find.body8264: + %t212 = getelementptr inbounds { ptr, i64, i64 }, ptr %t208, i64 %t210 + %t213 = load { ptr, i64, i64 }, ptr %t212 + store { ptr, i64, i64 } %t213, ptr %a214 + store { ptr, i64, i64 } %t205, ptr %a215 + %t216 = call i32 @finch_str_eq(ptr %a214, ptr %a215) + %t217 = icmp ne i32 %t216, 0 + br i1 %t217, label %find.hit8265, label %find.next8266 +find.hit8265: + store i64 %t210, ptr %a206 + br label %find.end8267 +find.next8266: + %t218 = add i64 %t210, 1 + store i64 %t218, ptr %a209 + br label %find.cond8263 +find.end8267: + %t219 = load i64, ptr %a206 + %t220 = icmp sge i64 %t219, 0 + %t221 = call %S.gen.Ref @finch.gen.ref(ptr %t201, %S.ast.Node %t202, i1 %t220) + store %S.gen.Ref %t221, ptr %a222 + %t223 = load ptr, ptr %a1 + %t224 = icmp eq ptr %t223, null + br i1 %t224, label %panic8268, label %ok8269 +panic8268: + call void @finch_panic(ptr @.str.5402, i64 5031, ptr @.str.5403) + unreachable +ok8269: + %t225 = getelementptr inbounds %S.gen.Gen, ptr %t223, i32 0, i32 11 + %t226 = getelementptr inbounds { ptr, i64, i64 }, ptr %t225, i32 0, i32 1 + %t227 = load i64, ptr %t226 + store i64 %t227, ptr %a228 + %t229 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 2 + %t230 = getelementptr inbounds %S.gen.Val, ptr %t229, i32 0, i32 1 + %t231 = load %S.ast.Type, ptr %t230 + store %S.ast.Type %t231, ptr %a232 + call void @finch.copy.S_ast_Type(ptr %a233, ptr %a232) + %t234 = load %S.ast.Type, ptr %a233 + store %S.ast.Type %t234, ptr %a235 + %t236 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 0 + %t237 = load i1, ptr %t236 + br i1 %t237, label %then8270, label %endif8272 +then8270: + %t238 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 1 + %t239 = getelementptr inbounds %S.gen.Place, ptr %t238, i32 0, i32 1 + %t240 = load %S.ast.Type, ptr %t239 + store %S.ast.Type %t240, ptr %a241 + call void @finch.copy.S_ast_Type(ptr %a242, ptr %a241) + %t243 = load %S.ast.Type, ptr %a242 + %t244 = load %S.ast.Type, ptr %a235 + store %S.ast.Type %t243, ptr %a235 + store %S.ast.Type %t244, ptr %a245 + call void @finch.drop.S_ast_Type(ptr %a245) + br label %endif8272 +endif8272: + %t246 = getelementptr inbounds %S.ast.Type, ptr %a235, i32 0, i32 0 + %t247 = load { ptr, i64, i64 }, ptr %t246 + store { ptr, i64, i64 } %t247, ptr %a248 + store { ptr, i64, i64 } { ptr @.str.5404, i64 5, i64 0 }, ptr %a249 + %t250 = call i32 @finch_str_eq(ptr %a248, ptr %a249) + %t251 = icmp ne i32 %t250, 0 + br i1 %t251, label %then8273, label %endif8275 +then8273: + store { ptr, i64, i64 } { ptr @.str.5405, i64 0, i64 0 }, ptr %a252 + %t253 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 0 + %t254 = load i1, ptr %t253 + br i1 %t254, label %then8276, label %else8277 +then8276: + %t255 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 1 + %t256 = getelementptr inbounds %S.gen.Place, ptr %t255, i32 0, i32 0 + %t257 = load { ptr, i64, i64 }, ptr %t256 + store { ptr, i64, i64 } %t257, ptr %a258 + call void @finch_str_copy(ptr %a259, ptr %a258) + %t260 = load { ptr, i64, i64 }, ptr %a259 + %t261 = load { ptr, i64, i64 }, ptr %a252 + store { ptr, i64, i64 } %t260, ptr %a252 + store { ptr, i64, i64 } %t261, ptr %a262 + call void @finch_str_drop(ptr %a262) + br label %endif8278 +else8277: + %t263 = getelementptr inbounds { ptr, i64, i64 }, ptr %a200, i32 0, i32 1 + %t264 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t265 = load { ptr, i64, i64 }, ptr %t264 + store i64 -1, ptr %a266 + %t267 = load i64, ptr %t263 + %t268 = load ptr, ptr %a200 + store i64 0, ptr %a269 + br label %find.cond8279 +find.cond8279: + %t270 = load i64, ptr %a269 + %t271 = icmp slt i64 %t270, %t267 + br i1 %t271, label %find.body8280, label %find.end8283 +find.body8280: + %t272 = getelementptr inbounds { ptr, i64, i64 }, ptr %t268, i64 %t270 + %t273 = load { ptr, i64, i64 }, ptr %t272 + store { ptr, i64, i64 } %t273, ptr %a274 + store { ptr, i64, i64 } %t265, ptr %a275 + %t276 = call i32 @finch_str_eq(ptr %a274, ptr %a275) + %t277 = icmp ne i32 %t276, 0 + br i1 %t277, label %find.hit8281, label %find.next8282 +find.hit8281: + store i64 %t270, ptr %a266 + br label %find.end8283 +find.next8282: + %t278 = add i64 %t270, 1 + store i64 %t278, ptr %a269 + br label %find.cond8279 +find.end8283: + %t279 = load i64, ptr %a266 + %t280 = icmp sge i64 %t279, 0 + br i1 %t280, label %then8284, label %endif8286 +then8284: + %t281 = load ptr, ptr %a1 + %t282 = load %S.ast.Node, ptr %a2 + %t283 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t284 = load { ptr, i64, i64 }, ptr %t283 + store { ptr, i64, i64 } %t284, ptr %a286 + store { ptr, i64, i64 } { ptr @.str.5406, i64 63, i64 0 }, ptr %a287 + call void @finch_str_concat(ptr %a285, ptr %a286, ptr %a287) + %t288 = load { ptr, i64, i64 }, ptr %a285 + call void @finch.gen.fail(ptr %t281, %S.ast.Node %t282, { ptr, i64, i64 } %t288) + store { ptr, i64, i64 } %t288, ptr %a289 + call void @finch_str_drop(ptr %a289) + br label %endif8286 +endif8286: + %t290 = load ptr, ptr %a1 + %t291 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 2 + %t292 = load %S.gen.Val, ptr %t291 + %t293 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t290, %S.gen.Val %t292) + %t294 = load { ptr, i64, i64 }, ptr %a252 + store { ptr, i64, i64 } %t293, ptr %a252 + store { ptr, i64, i64 } %t294, ptr %a295 + call void @finch_str_drop(ptr %a295) + %t296 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 2 + %t297 = getelementptr inbounds %S.gen.Val, ptr %t296, i32 0, i32 2 + %t298 = load i1, ptr %t297 + br i1 %t298, label %then8287, label %endif8289 +then8287: + %t299 = load ptr, ptr %a1 + %t300 = load { ptr, i64, i64 }, ptr %a252 + %t301 = load %S.ast.Type, ptr %a235 + call void @finch.gen.holdAddr(ptr %t299, { ptr, i64, i64 } %t300, %S.ast.Type %t301) + br label %endif8289 +endif8289: + br label %endif8278 +endif8278: + %t302 = load ptr, ptr %a1 + %t303 = load %S.ast.Node, ptr %a2 + %t304 = call { ptr, i64, i64 } @finch.docs.arrayMethods() + call void @finch.gen.noteMethod(ptr %t302, %S.ast.Node %t303, { ptr, i64, i64 } %t304) + store { ptr, i64, i64 } %t304, ptr %a305 + call void @finch.drop.arr_S_docs_Doc(ptr %a305) + %t306 = load ptr, ptr %a1 + %t307 = load %S.ast.Node, ptr %a2 + %t308 = load { ptr, i64, i64 }, ptr %a252 + %t309 = load %S.ast.Type, ptr %a235 + %t310 = call %S.gen.Val @finch.gen.arrayMethod(ptr %t306, %S.ast.Node %t307, { ptr, i64, i64 } %t308, %S.ast.Type %t309) + store %S.gen.Val %t310, ptr %a311 + %t312 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 0 + %t313 = load i1, ptr %t312 + %t314 = xor i1 %t313, true + br label %logic.from8290 +logic.from8290: + br i1 %t314, label %logic.rhs8291, label %logic.end8292 +logic.rhs8291: + %t315 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 2 + %t316 = getelementptr inbounds %S.gen.Val, ptr %t315, i32 0, i32 2 + %t317 = load i1, ptr %t316 + br label %logic.rend8293 +logic.rend8293: + br label %logic.end8292 +logic.end8292: + %t318 = phi i1 [ false, %logic.from8290 ], [ %t317, %logic.rend8293 ] + br i1 %t318, label %then8294, label %endif8296 +then8294: + %t319 = load ptr, ptr %a1 + %t320 = load { ptr, i64, i64 }, ptr %a252 + %t321 = load %S.ast.Type, ptr %a235 + call void @finch.gen.dropAt(ptr %t319, { ptr, i64, i64 } %t320, %S.ast.Type %t321) + br label %endif8296 +endif8296: + %t322 = load ptr, ptr %a1 + %t323 = load i64, ptr %a228 + call void @finch.gen.heldEnd(ptr %t322, i64 %t323) + %t324 = load %S.gen.Val, ptr %a311 + call void @finch_str_drop(ptr %a252) + call void @finch.drop.S_ast_Type(ptr %a235) + call void @finch.drop.S_gen_Ref(ptr %a222) + call void @finch.drop.arr_str(ptr %a200) + call void @finch.drop.S_ast_Node(ptr %a13) + ret %S.gen.Val %t324 +endif8275: + %t325 = getelementptr inbounds %S.ast.Type, ptr %a235, i32 0, i32 0 + %t326 = load { ptr, i64, i64 }, ptr %t325 + store { ptr, i64, i64 } %t326, ptr %a327 + store { ptr, i64, i64 } { ptr @.str.5407, i64 3, i64 0 }, ptr %a328 + %t329 = call i32 @finch_str_eq(ptr %a327, ptr %a328) + %t330 = icmp ne i32 %t329, 0 + br i1 %t330, label %then8297, label %endif8299 +then8297: + %t331 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 2 + %t332 = load %S.gen.Val, ptr %t331 + store %S.gen.Val %t332, ptr %a333 + call void @finch.copy.S_gen_Val(ptr %a334, ptr %a333) + %t335 = load %S.gen.Val, ptr %a334 + store %S.gen.Val %t335, ptr %a336 + %t337 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 0 + %t338 = load i1, ptr %t337 + br i1 %t338, label %then8300, label %endif8302 +then8300: + %t339 = load ptr, ptr %a1 + %t340 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 1 + %t341 = getelementptr inbounds %S.gen.Place, ptr %t340, i32 0, i32 0 + %t342 = load { ptr, i64, i64 }, ptr %t341 + %t343 = call { ptr, i64, i64 } @finch.gen.load(ptr %t339, { ptr, i64, i64 } { ptr @.str.5408, i64 17, i64 0 }, { ptr, i64, i64 } %t342) + %t344 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t343, 0 + %t345 = load %S.ast.Type, ptr %a235 + store %S.ast.Type %t345, ptr %a346 + call void @finch.copy.S_ast_Type(ptr %a347, ptr %a346) + %t348 = load %S.ast.Type, ptr %a347 + %t349 = insertvalue %S.gen.Val %t344, %S.ast.Type %t348, 1 + %t350 = load %S.gen.Val, ptr %a336 + store %S.gen.Val %t349, ptr %a336 + store %S.gen.Val %t350, ptr %a351 + call void @finch.drop.S_gen_Val(ptr %a351) + br label %endif8302 +endif8302: + %t352 = load ptr, ptr %a1 + %t353 = load %S.ast.Node, ptr %a2 + %t354 = call { ptr, i64, i64 } @finch.docs.strMethods() + call void @finch.gen.noteMethod(ptr %t352, %S.ast.Node %t353, { ptr, i64, i64 } %t354) + store { ptr, i64, i64 } %t354, ptr %a355 + call void @finch.drop.arr_S_docs_Doc(ptr %a355) + %t356 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 0 + %t357 = load i1, ptr %t356 + %t358 = xor i1 %t357, true + br i1 %t358, label %then8303, label %endif8305 +then8303: + %t359 = load ptr, ptr %a1 + %t360 = load %S.gen.Val, ptr %a336 + call void @finch.gen.hold(ptr %t359, %S.gen.Val %t360) + br label %endif8305 +endif8305: %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) + %t363 = load ptr, ptr %a1 + %t364 = load %S.gen.Val, ptr %a336 + %t365 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t363, %S.gen.Val %t364) + %t366 = call %S.gen.Val @finch.gen.strMethod(ptr %t361, %S.ast.Node %t362, { ptr, i64, i64 } %t365) + store { ptr, i64, i64 } %t365, ptr %a367 + call void @finch_str_drop(ptr %a367) + store %S.gen.Val %t366, ptr %a368 + %t369 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 0 + %t370 = load i1, ptr %t369 + %t371 = xor i1 %t370, true + br i1 %t371, label %then8306, label %endif8308 +then8306: + %t372 = load ptr, ptr %a1 + %t373 = load %S.gen.Val, ptr %a336 + call void @finch.gen.release(ptr %t372, %S.gen.Val %t373) + br label %endif8308 +endif8308: + %t374 = load ptr, ptr %a1 + %t375 = load i64, ptr %a228 + call void @finch.gen.heldEnd(ptr %t374, i64 %t375) + %t376 = load %S.gen.Val, ptr %a368 + call void @finch.drop.S_gen_Val(ptr %a336) + call void @finch.drop.S_ast_Type(ptr %a235) + call void @finch.drop.S_gen_Ref(ptr %a222) + call void @finch.drop.arr_str(ptr %a200) + call void @finch.drop.S_ast_Node(ptr %a13) + ret %S.gen.Val %t376 +endif8299: + %t377 = getelementptr inbounds %S.ast.Type, ptr %a235, i32 0, i32 0 + %t378 = load { ptr, i64, i64 }, ptr %t377 + store { ptr, i64, i64 } %t378, ptr %a379 + store { ptr, i64, i64 } { ptr @.str.5409, i64 3, i64 0 }, ptr %a380 + %t381 = call i32 @finch_str_eq(ptr %a379, ptr %a380) + %t382 = icmp ne i32 %t381, 0 + br i1 %t382, label %then8309, label %endif8311 +then8309: + store { ptr, i64, i64 } { ptr @.str.5410, i64 0, i64 0 }, ptr %a383 + %t384 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 0 + %t385 = load i1, ptr %t384 + br i1 %t385, label %then8312, label %else8313 +then8312: + %t386 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 1 + %t387 = getelementptr inbounds %S.gen.Place, ptr %t386, i32 0, i32 0 + %t388 = load { ptr, i64, i64 }, ptr %t387 + store { ptr, i64, i64 } %t388, ptr %a389 + call void @finch_str_copy(ptr %a390, ptr %a389) + %t391 = load { ptr, i64, i64 }, ptr %a390 + %t392 = load { ptr, i64, i64 }, ptr %a383 + store { ptr, i64, i64 } %t391, ptr %a383 + store { ptr, i64, i64 } %t392, ptr %a393 + call void @finch_str_drop(ptr %a393) + br label %endif8314 +else8313: + %t394 = getelementptr inbounds { ptr, i64, i64 }, ptr %a200, i32 0, i32 1 + %t395 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t396 = load { ptr, i64, i64 }, ptr %t395 + store i64 -1, ptr %a397 + %t398 = load i64, ptr %t394 + %t399 = load ptr, ptr %a200 + store i64 0, ptr %a400 + br label %find.cond8315 +find.cond8315: + %t401 = load i64, ptr %a400 + %t402 = icmp slt i64 %t401, %t398 + br i1 %t402, label %find.body8316, label %find.end8319 +find.body8316: + %t403 = getelementptr inbounds { ptr, i64, i64 }, ptr %t399, i64 %t401 + %t404 = load { ptr, i64, i64 }, ptr %t403 + store { ptr, i64, i64 } %t404, ptr %a405 + store { ptr, i64, i64 } %t396, ptr %a406 + %t407 = call i32 @finch_str_eq(ptr %a405, ptr %a406) + %t408 = icmp ne i32 %t407, 0 + br i1 %t408, label %find.hit8317, label %find.next8318 +find.hit8317: + store i64 %t401, ptr %a397 + br label %find.end8319 +find.next8318: + %t409 = add i64 %t401, 1 + store i64 %t409, ptr %a400 + br label %find.cond8315 +find.end8319: + %t410 = load i64, ptr %a397 + %t411 = icmp sge i64 %t410, 0 + br i1 %t411, label %then8320, label %endif8322 +then8320: + %t412 = load ptr, ptr %a1 + %t413 = load %S.ast.Node, ptr %a2 + %t414 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t415 = load { ptr, i64, i64 }, ptr %t414 + store { ptr, i64, i64 } %t415, ptr %a417 + store { ptr, i64, i64 } { ptr @.str.5411, i64 61, 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.fail(ptr %t412, %S.ast.Node %t413, { ptr, i64, i64 } %t419) + store { ptr, i64, i64 } %t419, ptr %a420 + call void @finch_str_drop(ptr %a420) + br label %endif8322 +endif8322: + %t421 = load ptr, ptr %a1 + %t422 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 2 + %t423 = load %S.gen.Val, ptr %t422 + %t424 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t421, %S.gen.Val %t423) + %t425 = load { ptr, i64, i64 }, ptr %a383 + store { ptr, i64, i64 } %t424, ptr %a383 + store { ptr, i64, i64 } %t425, ptr %a426 + call void @finch_str_drop(ptr %a426) + %t427 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 2 + %t428 = getelementptr inbounds %S.gen.Val, ptr %t427, i32 0, i32 2 + %t429 = load i1, ptr %t428 + br i1 %t429, label %then8323, label %endif8325 +then8323: + %t430 = load ptr, ptr %a1 + %t431 = load { ptr, i64, i64 }, ptr %a383 + %t432 = load %S.ast.Type, ptr %a235 + call void @finch.gen.holdAddr(ptr %t430, { ptr, i64, i64 } %t431, %S.ast.Type %t432) + br label %endif8325 +endif8325: + br label %endif8314 +endif8314: + %t433 = load ptr, ptr %a1 + %t434 = load %S.ast.Node, ptr %a2 + %t435 = call { ptr, i64, i64 } @finch.docs.mapMethods() + call void @finch.gen.noteMethod(ptr %t433, %S.ast.Node %t434, { ptr, i64, i64 } %t435) + store { ptr, i64, i64 } %t435, ptr %a436 + call void @finch.drop.arr_S_docs_Doc(ptr %a436) + %t437 = load ptr, ptr %a1 + %t438 = load %S.ast.Node, ptr %a2 + %t439 = load { ptr, i64, i64 }, ptr %a383 + %t440 = load %S.ast.Type, ptr %a235 + %t441 = call %S.gen.Val @finch.gen.mapMethod(ptr %t437, %S.ast.Node %t438, { ptr, i64, i64 } %t439, %S.ast.Type %t440) + store %S.gen.Val %t441, ptr %a442 + %t443 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 0 + %t444 = load i1, ptr %t443 + %t445 = xor i1 %t444, true + br label %logic.from8326 +logic.from8326: + br i1 %t445, label %logic.rhs8327, label %logic.end8328 +logic.rhs8327: + %t446 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 2 + %t447 = getelementptr inbounds %S.gen.Val, ptr %t446, i32 0, i32 2 + %t448 = load i1, ptr %t447 + br label %logic.rend8329 +logic.rend8329: + br label %logic.end8328 +logic.end8328: + %t449 = phi i1 [ false, %logic.from8326 ], [ %t448, %logic.rend8329 ] + br i1 %t449, label %then8330, label %endif8332 +then8330: + %t450 = load ptr, ptr %a1 + %t451 = load { ptr, i64, i64 }, ptr %a383 + %t452 = load %S.ast.Type, ptr %a235 + call void @finch.gen.dropAt(ptr %t450, { ptr, i64, i64 } %t451, %S.ast.Type %t452) + br label %endif8332 +endif8332: + %t453 = load ptr, ptr %a1 + %t454 = load i64, ptr %a228 + call void @finch.gen.heldEnd(ptr %t453, i64 %t454) + %t455 = load %S.gen.Val, ptr %a442 + call void @finch_str_drop(ptr %a383) + call void @finch.drop.S_ast_Type(ptr %a235) + call void @finch.drop.S_gen_Ref(ptr %a222) + call void @finch.drop.arr_str(ptr %a200) + call void @finch.drop.S_ast_Node(ptr %a13) + ret %S.gen.Val %t455 +endif8311: + %t456 = load ptr, ptr %a1 + %t457 = load i64, ptr %a228 + call void @finch.gen.heldEnd(ptr %t456, i64 %t457) + %t458 = load %S.ast.Type, ptr %a235 + store %S.ast.Type %t458, ptr %a459 + call void @finch.copy.S_ast_Type(ptr %a460, ptr %a459) + %t461 = load %S.ast.Type, ptr %a460 + store %S.ast.Type %t461, ptr %a462 + store { ptr, i64, i64 } { ptr @.str.5412, i64 0, i64 0 }, ptr %a463 + store i1 false, ptr %a464 + %t465 = getelementptr inbounds %S.ast.Type, ptr %a235, i32 0, i32 0 + %t466 = load { ptr, i64, i64 }, ptr %t465 + store { ptr, i64, i64 } %t466, ptr %a467 + store { ptr, i64, i64 } { ptr @.str.5413, i64 3, i64 0 }, ptr %a468 + %t469 = call i32 @finch_str_eq(ptr %a467, ptr %a468) + %t470 = icmp ne i32 %t469, 0 + br label %logic.from8333 +logic.from8333: + br i1 %t470, label %logic.rhs8334, label %logic.end8335 +logic.rhs8334: + %t471 = getelementptr inbounds %S.ast.Type, ptr %a235, i32 0, i32 1 + %t472 = getelementptr inbounds { ptr, i64, i64 }, ptr %t471, i32 0, i32 1 + %t473 = load i64, ptr %t472 + %t474 = icmp sgt i64 %t473, 0 + br label %logic.rend8336 +logic.rend8336: + br label %logic.end8335 +logic.end8335: + %t475 = phi i1 [ false, %logic.from8333 ], [ %t474, %logic.rend8336 ] + br label %logic.from8337 +logic.from8337: + br i1 %t475, label %logic.rhs8338, label %logic.end8339 +logic.rhs8338: + %t476 = getelementptr inbounds %S.ast.Type, ptr %a235, i32 0, i32 1 + %t477 = load { ptr, i64, i64 }, ptr %t476 + %t478 = extractvalue { ptr, i64, i64 } %t477, 1 + %t479 = icmp uge i64 0, %t478 + br i1 %t479, label %range8340, label %inrange8341 +range8340: + call void @finch_panic_index(ptr @.str.5414, i64 5098, i64 0, i64 %t478) unreachable -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 -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 - 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 +inrange8341: + %t480 = extractvalue { ptr, i64, i64 } %t477, 0 + %t481 = getelementptr inbounds %S.ast.Type, ptr %t480, i64 0 + %t482 = getelementptr inbounds %S.ast.Type, ptr %t481, i32 0, i32 0 + %t483 = load { ptr, i64, i64 }, ptr %t482 + store { ptr, i64, i64 } %t483, ptr %a484 + store { ptr, i64, i64 } { ptr @.str.5415, i64 6, i64 0 }, ptr %a485 + %t486 = call i32 @finch_str_eq(ptr %a484, ptr %a485) + %t487 = icmp ne i32 %t486, 0 + br label %logic.rend8342 +logic.rend8342: + br label %logic.end8339 +logic.end8339: + %t488 = phi i1 [ false, %logic.from8337 ], [ %t487, %logic.rend8342 ] + br i1 %t488, label %then8343, label %else8344 +then8343: + %t489 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 2 + %t490 = getelementptr inbounds %S.gen.Val, ptr %t489, i32 0, i32 0 %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) + store { ptr, i64, i64 } %t491, ptr %a492 + call void @finch_str_copy(ptr %a493, ptr %a492) + %t494 = load { ptr, i64, i64 }, ptr %a493 + store { ptr, i64, i64 } %t494, ptr %a495 + %t496 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 0 + %t497 = load i1, ptr %t496 + br i1 %t497, label %then8346, label %endif8348 +then8346: + %t498 = load ptr, ptr %a1 + %t499 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 1 + %t500 = getelementptr inbounds %S.gen.Place, ptr %t499, i32 0, i32 0 + %t501 = load { ptr, i64, i64 }, ptr %t500 + %t502 = call { ptr, i64, i64 } @finch.gen.load(ptr %t498, { ptr, i64, i64 } { ptr @.str.5416, i64 3, i64 0 }, { ptr, i64, i64 } %t501) + %t503 = load { ptr, i64, i64 }, ptr %a495 + store { ptr, i64, i64 } %t502, ptr %a495 + store { ptr, i64, i64 } %t503, ptr %a504 + call void @finch_str_drop(ptr %a504) + br label %endif8348 +endif8348: + %t505 = load ptr, ptr %a1 + %t506 = load ptr, ptr %a1 + %t507 = load { ptr, i64, i64 }, ptr %a495 + store { ptr, i64, i64 } { ptr @.str.5417, i64 12, i64 0 }, ptr %a509 + store { ptr, i64, i64 } %t507, ptr %a510 + call void @finch_str_concat(ptr %a508, ptr %a509, ptr %a510) + %t511 = load { ptr, i64, i64 }, ptr %a508 + store { ptr, i64, i64 } %t511, ptr %a513 + store { ptr, i64, i64 } { ptr @.str.5418, i64 6, i64 0 }, ptr %a514 + call void @finch_str_concat(ptr %a512, ptr %a513, ptr %a514) + store { ptr, i64, i64 } %t511, ptr %a515 + call void @finch_str_drop(ptr %a515) + %t516 = load { ptr, i64, i64 }, ptr %a512 + %t517 = call { ptr, i64, i64 } @finch.gen.op(ptr %t506, { ptr, i64, i64 } %t516) + store { ptr, i64, i64 } %t516, ptr %a518 + call void @finch_str_drop(ptr %a518) + %t519 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t520 = load { ptr, i64, i64 }, ptr %t519 + store { ptr, i64, i64 } { ptr @.str.5419, i64 8, i64 0 }, ptr %a522 + store { ptr, i64, i64 } %t520, ptr %a523 + call void @finch_str_concat(ptr %a521, ptr %a522, ptr %a523) + %t524 = load { ptr, i64, i64 }, ptr %a521 + store { ptr, i64, i64 } %t524, ptr %a526 + store { ptr, i64, i64 } { ptr @.str.5420, i64 20, i64 0 }, ptr %a527 + call void @finch_str_concat(ptr %a525, ptr %a526, ptr %a527) + store { ptr, i64, i64 } %t524, ptr %a528 + call void @finch_str_drop(ptr %a528) + %t529 = load { ptr, i64, i64 }, ptr %a525 + %t530 = load %S.ast.Node, ptr %a2 + call void @finch.gen.panicIf(ptr %t505, { ptr, i64, i64 } %t517, { ptr, i64, i64 } %t529, %S.ast.Node %t530) + store { ptr, i64, i64 } %t517, ptr %a531 + call void @finch_str_drop(ptr %a531) + store { ptr, i64, i64 } %t529, ptr %a532 + call void @finch_str_drop(ptr %a532) + %t533 = getelementptr inbounds %S.ast.Type, ptr %a235, i32 0, i32 1 + %t534 = load { ptr, i64, i64 }, ptr %t533 + %t535 = extractvalue { ptr, i64, i64 } %t534, 1 + %t536 = icmp uge i64 0, %t535 + br i1 %t536, label %range8349, label %inrange8350 +range8349: + call void @finch_panic_index(ptr @.str.5421, i64 5104, i64 0, i64 %t535) unreachable -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) +inrange8350: + %t537 = extractvalue { ptr, i64, i64 } %t534, 0 + %t538 = getelementptr inbounds %S.ast.Type, ptr %t537, i64 0 + %t539 = load %S.ast.Type, ptr %t538 + store %S.ast.Type %t539, ptr %a540 + call void @finch.copy.S_ast_Type(ptr %a541, ptr %a540) + %t542 = load %S.ast.Type, ptr %a541 + %t543 = load %S.ast.Type, ptr %a462 + store %S.ast.Type %t542, ptr %a462 + store %S.ast.Type %t543, ptr %a544 + call void @finch.drop.S_ast_Type(ptr %a544) + %t545 = load { ptr, i64, i64 }, ptr %a495 + store { ptr, i64, i64 } %t545, ptr %a546 + call void @finch_str_copy(ptr %a547, ptr %a546) + %t548 = load { ptr, i64, i64 }, ptr %a547 + %t549 = load { ptr, i64, i64 }, ptr %a463 + store { ptr, i64, i64 } %t548, ptr %a463 + store { ptr, i64, i64 } %t549, ptr %a550 + call void @finch_str_drop(ptr %a550) + call void @finch_str_drop(ptr %a495) + br label %endif8345 +else8344: + %t551 = getelementptr inbounds %S.ast.Type, ptr %a235, i32 0, i32 0 + %t552 = load { ptr, i64, i64 }, ptr %t551 + store { ptr, i64, i64 } %t552, ptr %a553 + store { ptr, i64, i64 } { ptr @.str.5422, i64 6, i64 0 }, ptr %a554 + %t555 = call i32 @finch_str_eq(ptr %a553, ptr %a554) + %t556 = icmp ne i32 %t555, 0 + br label %logic.from8351 +logic.from8351: + br i1 %t556, label %logic.end8353, label %logic.rhs8352 +logic.rhs8352: + %t557 = getelementptr inbounds %S.ast.Type, ptr %a235, i32 0, i32 0 + %t558 = load { ptr, i64, i64 }, ptr %t557 + store { ptr, i64, i64 } %t558, ptr %a559 + store { ptr, i64, i64 } { ptr @.str.5423, i64 4, i64 0 }, ptr %a560 + %t561 = call i32 @finch_str_eq(ptr %a559, ptr %a560) + %t562 = icmp ne i32 %t561, 0 + br label %logic.rend8354 +logic.rend8354: + br label %logic.end8353 +logic.end8353: + %t563 = phi i1 [ true, %logic.from8351 ], [ %t562, %logic.rend8354 ] + br i1 %t563, label %then8355, label %endif8357 +then8355: + %t564 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 0 + %t565 = load i1, ptr %t564 + br i1 %t565, label %then8358, label %else8359 +then8358: + %t566 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 1 + %t567 = getelementptr inbounds %S.gen.Place, ptr %t566, i32 0, i32 0 + %t568 = load { ptr, i64, i64 }, ptr %t567 + store { ptr, i64, i64 } %t568, ptr %a569 + call void @finch_str_copy(ptr %a570, ptr %a569) + %t571 = load { ptr, i64, i64 }, ptr %a570 + %t572 = load { ptr, i64, i64 }, ptr %a463 + store { ptr, i64, i64 } %t571, ptr %a463 + store { ptr, i64, i64 } %t572, ptr %a573 + call void @finch_str_drop(ptr %a573) + br label %endif8360 +else8359: + %t574 = load ptr, ptr %a1 + %t575 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 2 + %t576 = load %S.gen.Val, ptr %t575 + %t577 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t574, %S.gen.Val %t576) + %t578 = load { ptr, i64, i64 }, ptr %a463 + store { ptr, i64, i64 } %t577, ptr %a463 + store { ptr, i64, i64 } %t578, ptr %a579 + call void @finch_str_drop(ptr %a579) + store i1 true, ptr %a464 + br label %endif8360 +endif8360: + br label %endif8357 +endif8357: + br label %endif8345 +endif8345: + %t580 = getelementptr inbounds %S.ast.Type, ptr %a462, i32 0, i32 0 + %t581 = load { ptr, i64, i64 }, ptr %t580 + store { ptr, i64, i64 } %t581, ptr %a582 + store { ptr, i64, i64 } { ptr @.str.5424, i64 6, i64 0 }, ptr %a583 + %t584 = call i32 @finch_str_eq(ptr %a582, ptr %a583) + %t585 = icmp ne i32 %t584, 0 + br label %logic.from8361 +logic.from8361: + br i1 %t585, label %logic.end8363, label %logic.rhs8362 +logic.rhs8362: + %t586 = getelementptr inbounds %S.ast.Type, ptr %a462, i32 0, i32 0 + %t587 = load { ptr, i64, i64 }, ptr %t586 + store { ptr, i64, i64 } %t587, ptr %a588 + store { ptr, i64, i64 } { ptr @.str.5425, i64 4, i64 0 }, ptr %a589 + %t590 = call i32 @finch_str_eq(ptr %a588, ptr %a589) + %t591 = icmp ne i32 %t590, 0 + br label %logic.rend8364 +logic.rend8364: + br label %logic.end8363 +logic.end8363: + %t592 = phi i1 [ true, %logic.from8361 ], [ %t591, %logic.rend8364 ] + br i1 %t592, label %then8365, label %endif8367 +then8365: + %t593 = load ptr, ptr %a1 + %t594 = getelementptr inbounds %S.ast.Type, ptr %a462, i32 0, i32 3 + %t595 = load { ptr, i64, i64 }, ptr %t594 + %t596 = getelementptr inbounds %S.ast.Type, ptr %a462, i32 0, i32 2 + %t597 = load { ptr, i64, i64 }, ptr %t596 + %t598 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t599 = load { ptr, i64, i64 }, ptr %t598 + %t600 = call i64 @finch.gen.findMethod(ptr %t593, { ptr, i64, i64 } %t595, { ptr, i64, i64 } %t597, { ptr, i64, i64 } %t599) + store i64 %t600, ptr %a601 + %t602 = load i64, ptr %a601 + %t603 = icmp slt i64 %t602, 0 + br label %logic.from8368 +logic.from8368: + br i1 %t603, label %logic.rhs8369, label %logic.end8370 +logic.rhs8369: + %t604 = getelementptr inbounds %S.ast.Type, ptr %a462, i32 0, i32 0 + %t605 = load { ptr, i64, i64 }, ptr %t604 + store { ptr, i64, i64 } %t605, ptr %a606 + store { ptr, i64, i64 } { ptr @.str.5426, i64 6, i64 0 }, ptr %a607 + %t608 = call i32 @finch_str_eq(ptr %a606, ptr %a607) + %t609 = icmp ne i32 %t608, 0 + br label %logic.rend8371 +logic.rend8371: + br label %logic.end8370 +logic.end8370: + %t610 = phi i1 [ false, %logic.from8368 ], [ %t609, %logic.rend8371 ] + br i1 %t610, label %then8372, label %endif8374 +then8372: + %t611 = load ptr, ptr %a1 + %t612 = getelementptr inbounds %S.ast.Type, ptr %a462, i32 0, i32 3 + %t613 = load { ptr, i64, i64 }, ptr %t612 + %t614 = getelementptr inbounds %S.ast.Type, ptr %a462, i32 0, i32 2 + %t615 = load { ptr, i64, i64 }, ptr %t614 + %t616 = call i64 @finch.gen.findStruct(ptr %t611, { ptr, i64, i64 } %t613, { ptr, i64, i64 } %t615) + store i64 %t616, ptr %a617 + %t618 = load ptr, ptr %a1 + %t619 = icmp eq ptr %t618, null + br i1 %t619, label %panic8375, label %ok8376 +panic8375: + call void @finch_panic(ptr @.str.5427, i64 5118, ptr @.str.5428) unreachable -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) +ok8376: + %t620 = getelementptr inbounds %S.gen.Gen, ptr %t618, i32 0, i32 16 + %t621 = load i64, ptr %a617 + %t622 = load { ptr, i64, i64 }, ptr %t620 + %t623 = extractvalue { ptr, i64, i64 } %t622, 1 + %t624 = icmp uge i64 %t621, %t623 + br i1 %t624, label %range8377, label %inrange8378 +range8377: + call void @finch_panic_index(ptr @.str.5429, i64 5118, i64 %t621, i64 %t623) unreachable -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) +inrange8378: + %t625 = extractvalue { ptr, i64, i64 } %t622, 0 + %t626 = getelementptr inbounds %S.gen.StructDef, ptr %t625, i64 %t621 + %t627 = getelementptr inbounds %S.gen.StructDef, ptr %t626, i32 0, i32 5 + %t628 = getelementptr inbounds { ptr, i64, i64 }, ptr %t627, i32 0, i32 1 + %t629 = load i64, ptr %t628 + %t630 = icmp sgt i64 %t629, 0 + br i1 %t630, label %then8379, label %endif8381 +then8379: + %t631 = load ptr, ptr %a1 + %t632 = getelementptr inbounds %S.ast.Type, ptr %a462, i32 0, i32 3 + %t633 = load { ptr, i64, i64 }, ptr %t632 + %t634 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t635 = load { ptr, i64, i64 }, ptr %t634 + %t636 = load ptr, ptr %a1 + %t637 = icmp eq ptr %t636, null + br i1 %t637, label %panic8382, label %ok8383 +panic8382: + call void @finch_panic(ptr @.str.5430, i64 5119, ptr @.str.5431) unreachable -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) +ok8383: + %t638 = getelementptr inbounds %S.gen.Gen, ptr %t636, i32 0, i32 16 + %t639 = load i64, ptr %a617 + %t640 = load { ptr, i64, i64 }, ptr %t638 + %t641 = extractvalue { ptr, i64, i64 } %t640, 1 + %t642 = icmp uge i64 %t639, %t641 + br i1 %t642, label %range8384, label %inrange8385 +range8384: + call void @finch_panic_index(ptr @.str.5432, i64 5119, i64 %t639, i64 %t641) unreachable -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) +inrange8385: + %t643 = extractvalue { ptr, i64, i64 } %t640, 0 + %t644 = getelementptr inbounds %S.gen.StructDef, ptr %t643, i64 %t639 + %t645 = getelementptr inbounds %S.gen.StructDef, ptr %t644, i32 0, i32 5 + %t646 = load { ptr, i64, i64 }, ptr %t645 + %t647 = call i64 @finch.gen.findTemplate(ptr %t631, { ptr, i64, i64 } %t633, { ptr, i64, i64 } %t635, { ptr, i64, i64 } %t646, i1 false) + store i64 %t647, ptr %a648 + %t649 = load i64, ptr %a648 + %t650 = icmp sge i64 %t649, 0 + br i1 %t650, label %then8386, label %endif8388 +then8386: + %t651 = load ptr, ptr %a1 + %t652 = load i64, ptr %a648 + %t653 = load ptr, ptr %a1 + %t654 = icmp eq ptr %t653, null + br i1 %t654, label %panic8389, label %ok8390 +panic8389: + call void @finch_panic(ptr @.str.5433, i64 5121, ptr @.str.5434) unreachable -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) +ok8390: + %t655 = getelementptr inbounds %S.gen.Gen, ptr %t653, i32 0, i32 16 + %t656 = load i64, ptr %a617 + %t657 = load { ptr, i64, i64 }, ptr %t655 + %t658 = extractvalue { ptr, i64, i64 } %t657, 1 + %t659 = icmp uge i64 %t656, %t658 + br i1 %t659, label %range8391, label %inrange8392 +range8391: + call void @finch_panic_index(ptr @.str.5435, i64 5121, i64 %t656, i64 %t658) unreachable -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 +inrange8392: + %t660 = extractvalue { ptr, i64, i64 } %t657, 0 + %t661 = getelementptr inbounds %S.gen.StructDef, ptr %t660, i64 %t656 + %t662 = getelementptr inbounds %S.gen.StructDef, ptr %t661, i32 0, i32 7 + %t663 = load { ptr, i64, i64 }, ptr %t662 + %t664 = load %S.ast.Type, ptr %a462 + %t665 = load %S.ast.Node, ptr %a2 + %t666 = call i64 @finch.gen.instFn(ptr %t651, i64 %t652, { ptr, i64, i64 } %t663, %S.ast.Type %t664, %S.ast.Node %t665) + store i64 %t666, ptr %a601 + br label %endif8388 +endif8388: + br label %endif8381 +endif8381: + br label %endif8374 +endif8374: + %t667 = load i64, ptr %a601 + %t668 = icmp slt i64 %t667, 0 + br i1 %t668, label %then8393, label %endif8395 +then8393: + store { ptr, i64, i64 } zeroinitializer, ptr %a669 + %t670 = load ptr, ptr %a1 + %t671 = icmp eq ptr %t670, null + br i1 %t671, label %panic8396, label %ok8397 +panic8396: + call void @finch_panic(ptr @.str.5436, i64 5127, ptr @.str.5437) + unreachable +ok8397: + %t672 = getelementptr inbounds %S.gen.Gen, ptr %t670, i32 0, i32 15 + store i64 0, ptr %a673 + br label %each.cond8398 +each.cond8398: + %t674 = getelementptr inbounds { ptr, i64, i64 }, ptr %t672, i32 0, i32 1 + %t675 = load i64, ptr %t674 + %t676 = load i64, ptr %a673 + %t677 = icmp slt i64 %t676, %t675 + br i1 %t677, label %each.body8399, label %each.end8401 +each.body8399: + %t678 = load ptr, ptr %t672 + %t679 = getelementptr inbounds %S.gen.FnSig, ptr %t678, i64 %t676 + %t680 = load %S.gen.FnSig, ptr %t679 + store %S.gen.FnSig %t680, ptr %a681 + %t682 = getelementptr inbounds %S.gen.FnSig, ptr %a681, i32 0, i32 2 + %t683 = load { ptr, i64, i64 }, ptr %t682 + %t684 = getelementptr inbounds %S.ast.Type, ptr %a462, i32 0, i32 2 + %t685 = load { ptr, i64, i64 }, ptr %t684 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) + store { ptr, i64, i64 } %t685, ptr %a687 + %t688 = call i32 @finch_str_eq(ptr %a686, ptr %a687) + %t689 = icmp ne i32 %t688, 0 + br label %logic.from8402 +logic.from8402: + br i1 %t689, label %logic.rhs8403, label %logic.end8404 +logic.rhs8403: + %t690 = getelementptr inbounds %S.gen.FnSig, ptr %a681, i32 0, i32 3 + %t691 = load { ptr, i64, i64 }, ptr %t690 + %t692 = getelementptr inbounds %S.ast.Type, ptr %a462, i32 0, i32 3 + %t693 = load { ptr, i64, i64 }, ptr %t692 + store { ptr, i64, i64 } %t691, ptr %a694 + store { ptr, i64, i64 } %t693, ptr %a695 + %t696 = call i32 @finch_str_eq(ptr %a694, ptr %a695) + %t697 = icmp ne i32 %t696, 0 + br label %logic.rend8405 +logic.rend8405: + br label %logic.end8404 +logic.end8404: + %t698 = phi i1 [ false, %logic.from8402 ], [ %t697, %logic.rend8405 ] + br i1 %t698, label %then8406, label %endif8408 +then8406: + %t699 = getelementptr inbounds { ptr, i64, i64 }, ptr %a669, i32 0, i32 1 + %t700 = getelementptr inbounds %S.gen.FnSig, ptr %a681, i32 0, i32 1 + %t701 = load { ptr, i64, i64 }, ptr %t700 + store { ptr, i64, i64 } %t701, ptr %a702 + call void @finch_str_copy(ptr %a703, ptr %a702) + %t704 = load { ptr, i64, i64 }, ptr %a703 + %t705 = load i64, ptr %t699 + %t706 = add i64 %t705, 1 + call void @finch_arr_reserve(ptr %a669, i64 %t706, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t707 = load ptr, ptr %a669 + %t708 = getelementptr inbounds { ptr, i64, i64 }, ptr %t707, i64 %t705 + store { ptr, i64, i64 } %t704, ptr %t708 + store i64 %t706, ptr %t699 + br label %endif8408 +endif8408: + br label %each.step8400 +each.step8400: + %t709 = load i64, ptr %a673 + %t710 = add i64 %t709, 1 + store i64 %t710, ptr %a673 + br label %each.cond8398 +each.end8401: + %t711 = getelementptr inbounds { ptr, i64, i64 }, ptr %a669, i32 0, i32 1 + %t712 = load i64, ptr %t711 + %t713 = icmp eq i64 %t712, 0 + br i1 %t713, label %then8409, label %endif8411 +then8409: + %t714 = load ptr, ptr %a1 + %t715 = load %S.ast.Node, ptr %a2 + %t716 = getelementptr inbounds %S.ast.Type, ptr %a462, i32 0, i32 0 + %t717 = load { ptr, i64, i64 }, ptr %t716 + store { ptr, i64, i64 } { ptr @.str.5438, i64 4, 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 + store { ptr, i64, i64 } %t721, ptr %a723 + store { ptr, i64, i64 } { ptr @.str.5439, i64 1, i64 0 }, ptr %a724 + call void @finch_str_concat(ptr %a722, ptr %a723, ptr %a724) + store { ptr, i64, i64 } %t721, ptr %a725 + call void @finch_str_drop(ptr %a725) + %t726 = load { ptr, i64, i64 }, ptr %a722 + %t727 = load %S.ast.Type, ptr %a462 + %t728 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t727) + store { ptr, i64, i64 } %t726, ptr %a730 + store { ptr, i64, i64 } %t728, ptr %a731 + call void @finch_str_concat(ptr %a729, ptr %a730, ptr %a731) + store { ptr, i64, i64 } %t726, ptr %a732 + call void @finch_str_drop(ptr %a732) + store { ptr, i64, i64 } %t728, ptr %a733 + call void @finch_str_drop(ptr %a733) + %t734 = load { ptr, i64, i64 }, ptr %a729 + store { ptr, i64, i64 } %t734, ptr %a736 + store { ptr, i64, i64 } { ptr @.str.5440, i64 34, i64 0 }, ptr %a737 + call void @finch_str_concat(ptr %a735, ptr %a736, ptr %a737) + store { ptr, i64, i64 } %t734, ptr %a738 + call void @finch_str_drop(ptr %a738) + %t739 = load { ptr, i64, i64 }, ptr %a735 + %t740 = getelementptr inbounds %S.ast.Type, ptr %a462, i32 0, i32 2 + %t741 = load { ptr, i64, i64 }, ptr %t740 + store { ptr, i64, i64 } %t739, ptr %a743 + store { ptr, i64, i64 } %t741, ptr %a744 + call void @finch_str_concat(ptr %a742, ptr %a743, ptr %a744) + store { ptr, i64, i64 } %t739, ptr %a745 + call void @finch_str_drop(ptr %a745) + %t746 = load { ptr, i64, i64 }, ptr %a742 + store { ptr, i64, i64 } %t746, ptr %a748 + store { ptr, i64, i64 } { ptr @.str.5441, i64 1, i64 0 }, ptr %a749 + call void @finch_str_concat(ptr %a747, ptr %a748, ptr %a749) + store { ptr, i64, i64 } %t746, ptr %a750 + call void @finch_str_drop(ptr %a750) + %t751 = load { ptr, i64, i64 }, ptr %a747 + %t752 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %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) + store { ptr, i64, i64 } %t751, ptr %a757 + call void @finch_str_drop(ptr %a757) + %t758 = load { ptr, i64, i64 }, ptr %a754 + store { ptr, i64, i64 } %t758, ptr %a760 + store { ptr, i64, i64 } { ptr @.str.5442, i64 13, i64 0 }, ptr %a761 + call void @finch_str_concat(ptr %a759, ptr %a760, ptr %a761) + store { ptr, i64, i64 } %t758, ptr %a762 + call void @finch_str_drop(ptr %a762) + %t763 = load { ptr, i64, i64 }, ptr %a759 + call void @finch.gen.fail(ptr %t714, %S.ast.Node %t715, { ptr, i64, i64 } %t763) + store { ptr, i64, i64 } %t763, ptr %a764 + call void @finch_str_drop(ptr %a764) + br label %endif8411 +endif8411: + %t765 = load ptr, ptr %a1 + %t766 = load %S.ast.Node, ptr %a2 + %t767 = getelementptr inbounds %S.ast.Type, ptr %a462, i32 0, i32 0 + %t768 = load { ptr, i64, i64 }, ptr %t767 + store { ptr, i64, i64 } { ptr @.str.5443, i64 4, i64 0 }, ptr %a770 + store { ptr, i64, i64 } %t768, ptr %a771 + call void @finch_str_concat(ptr %a769, ptr %a770, ptr %a771) + %t772 = load { ptr, i64, i64 }, ptr %a769 + store { ptr, i64, i64 } %t772, ptr %a774 + store { ptr, i64, i64 } { ptr @.str.5444, i64 1, i64 0 }, ptr %a775 + call void @finch_str_concat(ptr %a773, ptr %a774, ptr %a775) + store { ptr, i64, i64 } %t772, ptr %a776 + call void @finch_str_drop(ptr %a776) + %t777 = load { ptr, i64, i64 }, ptr %a773 + %t778 = load %S.ast.Type, ptr %a462 + %t779 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t778) + store { ptr, i64, i64 } %t777, ptr %a781 + store { ptr, i64, i64 } %t779, ptr %a782 + call void @finch_str_concat(ptr %a780, ptr %a781, ptr %a782) + store { ptr, i64, i64 } %t777, ptr %a783 + call void @finch_str_drop(ptr %a783) + store { ptr, i64, i64 } %t779, ptr %a784 + call void @finch_str_drop(ptr %a784) + %t785 = load { ptr, i64, i64 }, ptr %a780 + store { ptr, i64, i64 } %t785, ptr %a787 + store { ptr, i64, i64 } { ptr @.str.5445, i64 16, i64 0 }, ptr %a788 + call void @finch_str_concat(ptr %a786, ptr %a787, ptr %a788) + store { ptr, i64, i64 } %t785, ptr %a789 + call void @finch_str_drop(ptr %a789) + %t790 = load { ptr, i64, i64 }, ptr %a786 + %t791 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t792 = load { ptr, i64, i64 }, ptr %t791 + store { ptr, i64, i64 } %t790, ptr %a794 + store { ptr, i64, i64 } %t792, ptr %a795 + call void @finch_str_concat(ptr %a793, ptr %a794, ptr %a795) + store { ptr, i64, i64 } %t790, ptr %a796 + call void @finch_str_drop(ptr %a796) + %t797 = load { ptr, i64, i64 }, ptr %a793 + store { ptr, i64, i64 } %t797, ptr %a799 + store { ptr, i64, i64 } { ptr @.str.5446, i64 11, i64 0 }, ptr %a800 + call void @finch_str_concat(ptr %a798, ptr %a799, ptr %a800) + store { ptr, i64, i64 } %t797, ptr %a801 + call void @finch_str_drop(ptr %a801) + %t802 = load { ptr, i64, i64 }, ptr %a798 + %t803 = getelementptr inbounds { ptr, i64, i64 }, ptr %a669, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.5447, i64 2, i64 0 }, ptr %a804 + call void @finch_str_join(ptr %a805, ptr %a669, ptr %a804) + %t806 = load { ptr, i64, i64 }, ptr %a805 + store { ptr, i64, i64 } %t802, ptr %a808 + store { ptr, i64, i64 } %t806, ptr %a809 + call void @finch_str_concat(ptr %a807, ptr %a808, ptr %a809) + store { ptr, i64, i64 } %t802, ptr %a810 + call void @finch_str_drop(ptr %a810) + store { ptr, i64, i64 } %t806, ptr %a811 + call void @finch_str_drop(ptr %a811) + %t812 = load { ptr, i64, i64 }, ptr %a807 + store { ptr, i64, i64 } %t812, ptr %a814 + store { ptr, i64, i64 } { ptr @.str.5448, i64 1, i64 0 }, ptr %a815 + call void @finch_str_concat(ptr %a813, ptr %a814, ptr %a815) + store { ptr, i64, i64 } %t812, ptr %a816 + call void @finch_str_drop(ptr %a816) + %t817 = load { ptr, i64, i64 }, ptr %a813 + call void @finch.gen.fail(ptr %t765, %S.ast.Node %t766, { ptr, i64, i64 } %t817) + store { ptr, i64, i64 } %t817, ptr %a818 + call void @finch_str_drop(ptr %a818) + call void @finch.drop.arr_str(ptr %a669) + br label %endif8395 +endif8395: + %t819 = load ptr, ptr %a1 + %t820 = icmp eq ptr %t819, null + br i1 %t820, label %panic8412, label %ok8413 +panic8412: + call void @finch_panic(ptr @.str.5449, i64 5138, ptr @.str.5450) unreachable -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) +ok8413: + %t821 = getelementptr inbounds %S.gen.Gen, ptr %t819, i32 0, i32 15 + %t822 = load i64, ptr %a601 + %t823 = load { ptr, i64, i64 }, ptr %t821 + %t824 = extractvalue { ptr, i64, i64 } %t823, 1 + %t825 = icmp uge i64 %t822, %t824 + br i1 %t825, label %range8414, label %inrange8415 +range8414: + call void @finch_panic_index(ptr @.str.5451, i64 5138, i64 %t822, i64 %t824) unreachable -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.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 - 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) +inrange8415: + %t826 = extractvalue { ptr, i64, i64 } %t823, 0 + %t827 = getelementptr inbounds %S.gen.FnSig, ptr %t826, i64 %t822 + %t828 = getelementptr inbounds %S.gen.FnSig, ptr %t827, i32 0, i32 10 + %t829 = load i1, ptr %t828 + br label %logic.from8416 +logic.from8416: + br i1 %t829, label %logic.rhs8417, label %logic.end8418 +logic.rhs8417: + %t830 = getelementptr inbounds %S.ast.Type, ptr %a235, i32 0, i32 0 + %t831 = load { ptr, i64, i64 }, ptr %t830 + store { ptr, i64, i64 } %t831, ptr %a832 + store { ptr, i64, i64 } { ptr @.str.5452, i64 6, i64 0 }, ptr %a833 + %t834 = call i32 @finch_str_eq(ptr %a832, ptr %a833) + %t835 = icmp ne i32 %t834, 0 + br label %logic.from8419 +logic.from8419: + br i1 %t835, label %logic.end8421, label %logic.rhs8420 +logic.rhs8420: + %t836 = getelementptr inbounds %S.ast.Type, ptr %a235, i32 0, i32 0 + %t837 = load { ptr, i64, i64 }, ptr %t836 + store { ptr, i64, i64 } %t837, ptr %a838 + store { ptr, i64, i64 } { ptr @.str.5453, i64 4, i64 0 }, ptr %a839 + %t840 = call i32 @finch_str_eq(ptr %a838, ptr %a839) + %t841 = icmp ne i32 %t840, 0 + br label %logic.rend8422 +logic.rend8422: + br label %logic.end8421 +logic.end8421: + %t842 = phi i1 [ true, %logic.from8419 ], [ %t841, %logic.rend8422 ] + br label %logic.rend8423 +logic.rend8423: + br label %logic.end8418 +logic.end8418: + %t843 = phi i1 [ false, %logic.from8416 ], [ %t842, %logic.rend8423 ] + br i1 %t843, label %then8424, label %endif8426 +then8424: + %t844 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 0 + %t845 = load i1, ptr %t844 + %t846 = xor i1 %t845, true + br i1 %t846, label %then8427, label %endif8429 +then8427: + %t847 = load ptr, ptr %a1 + %t848 = load %S.ast.Node, ptr %a2 + %t849 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t850 = load { ptr, i64, i64 }, ptr %t849 + store { ptr, i64, i64 } %t850, ptr %a852 + store { ptr, i64, i64 } { ptr @.str.5454, i64 28, i64 0 }, ptr %a853 + call void @finch_str_concat(ptr %a851, ptr %a852, ptr %a853) + %t854 = load { ptr, i64, i64 }, ptr %a851 + %t855 = load %S.ast.Type, ptr %a462 + %t856 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t855) + store { ptr, i64, i64 } %t854, ptr %a858 + store { ptr, i64, i64 } %t856, ptr %a859 + call void @finch_str_concat(ptr %a857, ptr %a858, ptr %a859) + store { ptr, i64, i64 } %t854, ptr %a860 + call void @finch_str_drop(ptr %a860) + store { ptr, i64, i64 } %t856, ptr %a861 + call void @finch_str_drop(ptr %a861) + %t862 = load { ptr, i64, i64 }, ptr %a857 + store { ptr, i64, i64 } %t862, ptr %a864 + store { ptr, i64, i64 } { ptr @.str.5455, i64 30, i64 0 }, ptr %a865 + call void @finch_str_concat(ptr %a863, ptr %a864, ptr %a865) + store { ptr, i64, i64 } %t862, ptr %a866 + call void @finch_str_drop(ptr %a866) + %t867 = load { ptr, i64, i64 }, ptr %a863 + call void @finch.gen.fail(ptr %t847, %S.ast.Node %t848, { ptr, i64, i64 } %t867) + store { ptr, i64, i64 } %t867, ptr %a868 + call void @finch_str_drop(ptr %a868) + br label %endif8429 +endif8429: + %t869 = load %S.ast.Node, ptr %a13 + %t870 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t869) + store { ptr, i64, i64 } %t870, ptr %a871 + %t872 = getelementptr inbounds { ptr, i64, i64 }, ptr %a871, i32 0, i32 1 + %t873 = load i64, ptr %t872 + %t874 = icmp sgt i64 %t873, 0 + br i1 %t874, label %then8430, label %endif8432 +then8430: + %t875 = load ptr, ptr %a1 + %t876 = load { ptr, i64, i64 }, ptr %a871 + %t877 = call i64 @finch.gen.lookup(ptr %t875, { ptr, i64, i64 } %t876) + store i64 %t877, ptr %a878 + %t879 = load i64, ptr %a878 + %t880 = icmp sge i64 %t879, 0 + br label %logic.from8433 +logic.from8433: + br i1 %t880, label %logic.rhs8434, label %logic.end8435 +logic.rhs8434: + %t881 = load ptr, ptr %a1 + %t882 = load i64, ptr %a878 + %t883 = call %S.gen.Var @finch.gen.varAt(ptr %t881, i64 %t882) + %t884 = extractvalue %S.gen.Var %t883, 3 + store %S.gen.Var %t883, ptr %a885 + call void @finch.drop.S_gen_Var(ptr %a885) + br label %logic.rend8436 +logic.rend8436: + br label %logic.end8435 +logic.end8435: + %t886 = phi i1 [ false, %logic.from8433 ], [ %t884, %logic.rend8436 ] + br i1 %t886, label %then8437, label %endif8439 +then8437: + %t887 = load ptr, ptr %a1 + %t888 = load %S.ast.Node, ptr %a2 + %t889 = load { ptr, i64, i64 }, ptr %a871 + store { ptr, i64, i64 } { ptr @.str.5456, i64 19, i64 0 }, ptr %a891 + store { ptr, i64, i64 } %t889, ptr %a892 + call void @finch_str_concat(ptr %a890, ptr %a891, ptr %a892) + %t893 = load { ptr, i64, i64 }, ptr %a890 + store { ptr, i64, i64 } %t893, ptr %a895 + store { ptr, i64, i64 } { ptr @.str.5457, i64 18, i64 0 }, ptr %a896 + call void @finch_str_concat(ptr %a894, ptr %a895, ptr %a896) + store { ptr, i64, i64 } %t893, ptr %a897 + call void @finch_str_drop(ptr %a897) + %t898 = load { ptr, i64, i64 }, ptr %a894 + call void @finch.gen.fail(ptr %t887, %S.ast.Node %t888, { ptr, i64, i64 } %t898) + store { ptr, i64, i64 } %t898, ptr %a899 + call void @finch_str_drop(ptr %a899) + br label %endif8439 +endif8439: + br label %endif8432 +endif8432: + call void @finch_str_drop(ptr %a871) + br label %endif8426 +endif8426: + %t900 = load i1, ptr %a464 + br label %logic.from8440 +logic.from8440: + br i1 %t900, label %logic.rhs8441, label %logic.end8442 +logic.rhs8441: + %t901 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 2 + %t902 = getelementptr inbounds %S.gen.Val, ptr %t901, i32 0, i32 2 + %t903 = load i1, ptr %t902 + br label %logic.rend8443 +logic.rend8443: + br label %logic.end8442 +logic.end8442: + %t904 = phi i1 [ false, %logic.from8440 ], [ %t903, %logic.rend8443 ] + br i1 %t904, label %then8444, label %endif8446 +then8444: + %t905 = load ptr, ptr %a1 + %t906 = load { ptr, i64, i64 }, ptr %a463 + %t907 = load %S.ast.Type, ptr %a462 + call void @finch.gen.holdAddr(ptr %t905, { ptr, i64, i64 } %t906, %S.ast.Type %t907) + br label %endif8446 +endif8446: + %t908 = load ptr, ptr %a1 + %t909 = load i64, ptr %a601 + %t910 = load %S.ast.Node, ptr %a2 + %t911 = load %S.ast.Type, ptr %a462 + %t912 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t911) + store { ptr, i64, i64 } %t912, ptr %a914 + store { ptr, i64, i64 } { ptr @.str.5458, i64 1, i64 0 }, ptr %a915 + call void @finch_str_concat(ptr %a913, ptr %a914, ptr %a915) + store { ptr, i64, i64 } %t912, ptr %a916 + call void @finch_str_drop(ptr %a916) + %t917 = load { ptr, i64, i64 }, ptr %a913 + %t918 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t919 = load { ptr, i64, i64 }, ptr %t918 + store { ptr, i64, i64 } %t917, ptr %a921 + store { ptr, i64, i64 } %t919, ptr %a922 + call void @finch_str_concat(ptr %a920, ptr %a921, ptr %a922) + store { ptr, i64, i64 } %t917, ptr %a923 + call void @finch_str_drop(ptr %a923) + %t924 = load { ptr, i64, i64 }, ptr %a920 + %t925 = load { ptr, i64, i64 }, ptr %a463 + %t926 = load %S.ast.Node, ptr %a13 + %t927 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t926) + %t928 = call %S.gen.Val @finch.gen.callFn(ptr %t908, i64 %t909, %S.ast.Node %t910, i64 1, { ptr, i64, i64 } %t924, { ptr, i64, i64 } %t925, { ptr, i64, i64 } %t927) + store { ptr, i64, i64 } %t924, ptr %a929 + call void @finch_str_drop(ptr %a929) + store { ptr, i64, i64 } %t927, ptr %a930 + call void @finch_str_drop(ptr %a930) + store %S.gen.Val %t928, ptr %a931 + %t932 = load i1, ptr %a464 + br label %logic.from8447 +logic.from8447: + br i1 %t932, label %logic.rhs8448, label %logic.end8449 +logic.rhs8448: + %t933 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 2 + %t934 = getelementptr inbounds %S.gen.Val, ptr %t933, i32 0, i32 2 + %t935 = load i1, ptr %t934 + br label %logic.rend8450 +logic.rend8450: + br label %logic.end8449 +logic.end8449: + %t936 = phi i1 [ false, %logic.from8447 ], [ %t935, %logic.rend8450 ] + br label %logic.from8451 +logic.from8451: + br i1 %t936, label %logic.rhs8452, label %logic.end8453 +logic.rhs8452: + %t937 = load ptr, ptr %a1 + %t938 = load %S.ast.Type, ptr %a462 + %t939 = call i1 @finch.gen.owning(ptr %t937, %S.ast.Type %t938) + br label %logic.rend8454 +logic.rend8454: + br label %logic.end8453 +logic.end8453: + %t940 = phi i1 [ false, %logic.from8451 ], [ %t939, %logic.rend8454 ] + br i1 %t940, label %then8455, label %endif8457 +then8455: + %t941 = load ptr, ptr %a1 + %t942 = load { ptr, i64, i64 }, ptr %a463 + %t943 = load %S.ast.Type, ptr %a462 + call void @finch.gen.dropAt(ptr %t941, { ptr, i64, i64 } %t942, %S.ast.Type %t943) + br label %endif8457 +endif8457: + %t944 = load ptr, ptr %a1 + %t945 = load i64, ptr %a228 + call void @finch.gen.heldEnd(ptr %t944, i64 %t945) + %t946 = load %S.gen.Val, ptr %a931 + call void @finch_str_drop(ptr %a463) + call void @finch.drop.S_ast_Type(ptr %a462) + call void @finch.drop.S_ast_Type(ptr %a235) + call void @finch.drop.S_gen_Ref(ptr %a222) + call void @finch.drop.arr_str(ptr %a200) + call void @finch.drop.S_ast_Node(ptr %a13) + ret %S.gen.Val %t946 +endif8367: + %t947 = load ptr, ptr %a1 + %t948 = load %S.ast.Node, ptr %a2 + %t949 = load %S.ast.Type, ptr %a235 + %t950 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t949) + store { ptr, i64, i64 } %t950, ptr %a952 + store { ptr, i64, i64 } { ptr @.str.5459, i64 15, i64 0 }, ptr %a953 + call void @finch_str_concat(ptr %a951, ptr %a952, ptr %a953) + store { ptr, i64, i64 } %t950, ptr %a954 + call void @finch_str_drop(ptr %a954) + %t955 = load { ptr, i64, i64 }, ptr %a951 + call void @finch.gen.fail(ptr %t947, %S.ast.Node %t948, { ptr, i64, i64 } %t955) + store { ptr, i64, i64 } %t955, ptr %a956 + call void @finch_str_drop(ptr %a956) + call void @finch_str_drop(ptr %a463) + call void @finch.drop.S_ast_Type(ptr %a462) + call void @finch.drop.S_ast_Type(ptr %a235) + call void @finch.drop.S_gen_Ref(ptr %a222) + call void @finch.drop.arr_str(ptr %a200) + call void @finch.drop.S_ast_Node(ptr %a13) ret %S.gen.Val zeroinitializer } @@ -71949,121 +85781,136 @@ entry: %a32 = alloca { ptr, i64, i64 }, align 16 %a33 = alloca { ptr, i64, i64 }, align 16 %a34 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 + %a35 = alloca { ptr, i64, i64 }, align 16 + %a38 = alloca { ptr, i64, i64 }, align 16 %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 + %a41 = alloca { ptr, i64, i64 }, align 16 + %a42 = alloca { ptr, i64, i64 }, align 16 + %a68 = alloca %S.gen.Val, align 16 + %a70 = alloca %S.gen.Val, align 16 %a71 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = 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 + %a82 = alloca { ptr, i64, i64 }, align 16 %a83 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 + %a84 = alloca { ptr, i64, i64 }, align 16 + %a85 = alloca { ptr, i64, i64 }, align 16 %a88 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 + %a89 = alloca { ptr, i64, i64 }, align 16 %a92 = alloca { ptr, i64, i64 }, align 16 - %a95 = 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 %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a106 = 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 %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 + %a115 = 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 + %a119 = alloca { ptr, i64, i64 }, align 16 + %a121 = 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 - %a125 = 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 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 + %a126 = alloca { ptr, i64, i64 }, align 16 + %a130 = alloca { ptr, i64, i64 }, align 16 %a136 = alloca { ptr, i64, i64 }, align 16 %a137 = alloca { ptr, i64, i64 }, align 16 %a138 = 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 %a143 = 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 + %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 - %a161 = 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 + %a154 = 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 + %a160 = alloca { ptr, i64, i64 }, align 16 + %a163 = alloca { ptr, i64, i64 }, align 16 + %a164 = alloca { ptr, i64, i64 }, align 16 %a171 = 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 + %a172 = 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 + %a188 = alloca { ptr, i64, i64 }, align 16 + %a189 = alloca { ptr, i64, i64 }, align 16 %a190 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 + %a191 = alloca { ptr, i64, i64 }, align 16 + %a194 = alloca { ptr, i64, i64 }, align 16 %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 %a199 = alloca { ptr, i64, i64 }, align 16 %a200 = alloca { ptr, i64, i64 }, align 16 %a201 = alloca { ptr, i64, i64 }, align 16 + %a203 = 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 - %a213 = alloca { ptr, i64, i64 }, align 16 %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = 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 - %a229 = alloca %S.ast.Type, align 16 - %a230 = alloca %S.ast.Type, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 + %a226 = alloca { ptr, i64, i64 }, align 16 + %a229 = 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 + %a237 = 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 + %a243 = alloca { ptr, i64, i64 }, align 16 + %a246 = alloca { ptr, i64, i64 }, align 16 + %a248 = alloca { ptr, i64, i64 }, align 16 %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 %a254 = alloca { ptr, i64, i64 }, align 16 %a255 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca %S.gen.Val, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a308 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a322 = 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 + %a259 = alloca %S.ast.Type, align 16 + %a260 = alloca %S.ast.Type, align 16 + %a268 = alloca { ptr, i64, i64 }, align 16 + %a269 = alloca { ptr, i64, i64 }, align 16 + %a282 = alloca { ptr, i64, i64 }, align 16 + %a283 = alloca { ptr, i64, i64 }, align 16 + %a287 = alloca { ptr, i64, i64 }, align 16 + %a288 = alloca { ptr, i64, i64 }, align 16 + %a314 = alloca %S.gen.Val, align 16 + %a315 = alloca %S.gen.Val, align 16 + %a318 = alloca { ptr, i64, i64 }, align 16 + %a324 = alloca { ptr, i64, i64 }, align 16 + %a328 = alloca { ptr, i64, i64 }, align 16 %a331 = alloca { ptr, i64, i64 }, align 16 - %a334 = alloca { ptr, i64, i64 }, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 %a336 = alloca { ptr, i64, i64 }, align 16 %a339 = 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 - %a354 = alloca { ptr, i64, i64 }, align 16 - %a355 = alloca { ptr, i64, i64 }, align 16 + %a342 = alloca { ptr, i64, i64 }, align 16 + %a345 = alloca { ptr, i64, i64 }, align 16 + %a348 = alloca { ptr, i64, i64 }, align 16 %a356 = alloca { ptr, i64, i64 }, align 16 %a359 = alloca { ptr, i64, i64 }, align 16 %a360 = alloca { ptr, i64, i64 }, align 16 @@ -72071,410 +85918,578 @@ entry: %a363 = alloca { ptr, i64, i64 }, align 16 %a364 = alloca { ptr, i64, i64 }, align 16 %a365 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 + %a366 = alloca { ptr, i64, i64 }, align 16 %a369 = alloca { ptr, i64, i64 }, align 16 %a370 = alloca { ptr, i64, i64 }, align 16 - %a376 = alloca %S.ast.Type, align 16 - %a377 = alloca %S.ast.Type, align 16 - %a380 = alloca %S.gen.Val, 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 %a387 = alloca { ptr, i64, i64 }, align 16 %a388 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a407 = 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 + %a394 = alloca { ptr, i64, i64 }, align 16 + %a397 = alloca { ptr, i64, i64 }, align 16 + %a398 = 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 + %a403 = alloca { ptr, i64, i64 }, align 16 + %a404 = alloca { ptr, i64, i64 }, align 16 + %a405 = 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 %a411 = alloca { ptr, i64, i64 }, align 16 - %a412 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a424 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a427 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a432 = alloca { ptr, i64, i64 }, align 16 - %a439 = alloca { ptr, i64, i64 }, align 16 - %a440 = alloca { ptr, i64, i64 }, align 16 - %a441 = alloca { ptr, i64, i64 }, align 16 + %a414 = alloca { ptr, i64, i64 }, align 16 + %a416 = alloca { ptr, i64, i64 }, align 16 + %a419 = alloca %S.ast.Type, align 16 + %a420 = alloca %S.ast.Type, align 16 + %a423 = alloca %S.gen.Val, align 16 + %a428 = alloca { ptr, i64, i64 }, align 16 + %a429 = alloca { ptr, i64, i64 }, align 16 + %a434 = alloca %S.ast.Type, align 16 + %a435 = alloca %S.ast.Type, align 16 + %a440 = alloca %S.gen.Val, align 16 + %a442 = 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 - %a452 = alloca { ptr, i64, i64 }, align 16 - %a453 = alloca { ptr, i64, i64 }, align 16 - %a460 = alloca { ptr, i64, i64 }, align 16 - %a461 = alloca { ptr, i64, i64 }, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a480 = alloca { ptr, i64, i64 }, align 16 - %a483 = alloca { ptr, i64, i64 }, align 16 - %a484 = alloca { ptr, i64, i64 }, align 16 + %a445 = alloca %S.gen.Val, align 16 + %a446 = alloca { ptr, i64, i64 }, align 16 + %a463 = alloca { ptr, i64, i64 }, align 16 + %a464 = alloca { ptr, i64, i64 }, align 16 + %a465 = alloca { ptr, i64, i64 }, align 16 + %a467 = alloca { ptr, i64, i64 }, align 16 + %a468 = alloca { ptr, i64, i64 }, align 16 + %a469 = alloca { ptr, i64, i64 }, align 16 + %a470 = alloca { ptr, i64, i64 }, align 16 + %a473 = alloca { ptr, i64, i64 }, align 16 + %a475 = alloca { ptr, i64, i64 }, align 16 %a485 = alloca { ptr, i64, i64 }, align 16 %a487 = alloca { ptr, i64, i64 }, align 16 %a488 = alloca { ptr, i64, i64 }, align 16 - %a489 = alloca { ptr, i64, i64 }, align 16 %a492 = alloca { ptr, i64, i64 }, align 16 %a493 = alloca { ptr, i64, i64 }, align 16 - %a494 = alloca { ptr, i64, i64 }, align 16 - %a496 = alloca { ptr, i64, i64 }, align 16 - %a497 = alloca { ptr, i64, i64 }, align 16 - %a498 = alloca { ptr, i64, i64 }, align 16 + %a500 = alloca { ptr, i64, i64 }, align 16 %a501 = alloca { ptr, i64, i64 }, align 16 %a502 = alloca { ptr, i64, i64 }, align 16 - %a503 = alloca { ptr, i64, i64 }, align 16 + %a504 = 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 - %a517 = alloca { ptr, i64, i64 }, align 16 - %a518 = alloca { ptr, i64, i64 }, align 16 - %a543 = alloca { ptr, i64, i64 }, align 16 - %a544 = alloca { ptr, i64, i64 }, align 16 - %a546 = alloca { ptr, i64, i64 }, align 16 + %a510 = alloca { ptr, i64, i64 }, align 16 + %a515 = alloca { ptr, i64, i64 }, align 16 + %a516 = alloca { ptr, i64, i64 }, align 16 + %a523 = alloca { ptr, i64, i64 }, align 16 + %a524 = alloca { ptr, i64, i64 }, align 16 + %a538 = alloca %S.gen.Val, align 16 + %a542 = alloca { ptr, i64, i64 }, align 16 + %a545 = alloca { ptr, i64, i64 }, align 16 + %a548 = alloca { ptr, i64, i64 }, align 16 + %a549 = alloca { ptr, i64, i64 }, align 16 + %a550 = alloca { ptr, i64, i64 }, align 16 + %a552 = 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 + %a558 = alloca { ptr, i64, i64 }, align 16 + %a559 = alloca { ptr, i64, i64 }, align 16 + %a560 = alloca { ptr, i64, i64 }, align 16 + %a561 = 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 + %a566 = alloca { ptr, i64, i64 }, align 16 %a569 = alloca { ptr, i64, i64 }, align 16 - %a583 = alloca { ptr, i64, i64 }, align 16 - %a586 = alloca { ptr, i64, i64 }, align 16 - %a587 = alloca { ptr, i64, i64 }, align 16 - %a588 = alloca { ptr, i64, i64 }, align 16 + %a570 = alloca { ptr, i64, i64 }, align 16 + %a571 = alloca { ptr, i64, i64 }, align 16 + %a572 = alloca { ptr, i64, i64 }, align 16 + %a574 = alloca { ptr, i64, i64 }, align 16 + %a575 = alloca { ptr, i64, i64 }, align 16 + %a576 = alloca { ptr, i64, i64 }, align 16 + %a577 = alloca { ptr, i64, i64 }, align 16 + %a579 = alloca { ptr, i64, i64 }, align 16 %a590 = alloca { ptr, i64, i64 }, align 16 %a591 = alloca { ptr, i64, i64 }, align 16 - %a592 = alloca { ptr, i64, i64 }, align 16 - %a595 = alloca { ptr, i64, i64 }, align 16 - %a596 = alloca { ptr, i64, i64 }, align 16 - %a597 = alloca { ptr, i64, i64 }, align 16 - %a599 = alloca { ptr, i64, i64 }, align 16 - %a600 = alloca { ptr, i64, i64 }, align 16 - %a601 = 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 - %a610 = alloca { ptr, i64, i64 }, align 16 - %a611 = alloca { ptr, i64, i64 }, align 16 - %a612 = 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 + %a615 = alloca %S.gen.Val, align 16 + %a616 = alloca %S.ast.Type, align 16 + %a618 = 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 - %a625 = 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 - %a631 = alloca { ptr, i64, i64 }, align 16 - %a632 = alloca { ptr, i64, i64 }, align 16 - %a633 = alloca { ptr, i64, i64 }, align 16 - %a638 = 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 - %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 - %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 + %a621 = alloca %S.gen.Val, align 16 + %a622 = alloca { ptr, i64, i64 }, align 16 + %a644 = alloca %S.gen.Val, align 16 + %a646 = alloca %S.gen.Val, align 16 + %a647 = alloca { ptr, i64, i64 }, align 16 + %a661 = 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 + %a668 = alloca { ptr, i64, i64 }, align 16 + %a669 = alloca { ptr, i64, i64 }, align 16 %a670 = alloca { ptr, i64, i64 }, align 16 %a671 = 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 + %a677 = 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 + %a687 = 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 + %a691 = 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 - %a697 = alloca { ptr, i64, i64 }, align 16 %a699 = alloca { ptr, i64, i64 }, align 16 - %a709 = 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 + %a704 = alloca { ptr, i64, i64 }, align 16 + %a705 = alloca { ptr, i64, i64 }, align 16 + %a706 = alloca { ptr, i64, i64 }, align 16 + %a707 = 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 %a715 = alloca { ptr, i64, i64 }, align 16 %a716 = alloca { ptr, i64, i64 }, align 16 - %a718 = alloca { ptr, i64, i64 }, align 16 + %a717 = alloca { ptr, i64, i64 }, align 16 %a719 = alloca { ptr, i64, i64 }, align 16 %a720 = alloca { ptr, i64, i64 }, align 16 - %a723 = alloca { ptr, i64, i64 }, align 16 + %a721 = alloca { ptr, i64, i64 }, align 16 + %a722 = alloca { ptr, i64, i64 }, align 16 %a724 = alloca { ptr, i64, i64 }, align 16 - %a725 = alloca { ptr, i64, i64 }, align 16 - %a727 = alloca { ptr, i64, i64 }, align 16 %a728 = alloca { ptr, i64, i64 }, align 16 - %a729 = 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 + %a735 = alloca { ptr, i64, i64 }, align 16 + %a736 = alloca { ptr, i64, i64 }, align 16 %a738 = 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 - %a742 = alloca { ptr, i64, i64 }, align 16 - %a743 = 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 %a747 = alloca { ptr, i64, i64 }, align 16 + %a749 = alloca { ptr, i64, i64 }, align 16 %a750 = alloca { ptr, i64, i64 }, align 16 %a751 = alloca { ptr, i64, i64 }, align 16 %a752 = 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 + %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 - %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 - %a775 = alloca %S.ast.Type, align 16 - %a776 = alloca %S.ast.Type, align 16 - %a784 = alloca { ptr, i64, i64 }, align 16 - %a785 = alloca { ptr, i64, i64 }, align 16 - %a810 = alloca { ptr, i64, i64 }, align 16 - %a811 = alloca { ptr, i64, i64 }, align 16 - %a813 = alloca { ptr, i64, i64 }, align 16 + %a791 = alloca %S.gen.Val, align 16 + %a792 = alloca %S.ast.Type, align 16 + %a794 = alloca { ptr, i64, i64 }, align 16 + %a795 = alloca { ptr, i64, i64 }, align 16 + %a797 = alloca %S.gen.Val, align 16 + %a798 = alloca { ptr, i64, i64 }, align 16 + %a805 = alloca { ptr, i64, i64 }, align 16 + %a809 = 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 + %a824 = 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 %a831 = alloca { ptr, i64, i64 }, align 16 + %a832 = 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 - %a840 = alloca { ptr, i64, i64 }, align 16 %a841 = alloca { ptr, i64, i64 }, align 16 - %a842 = alloca { ptr, i64, i64 }, align 16 + %a843 = alloca { ptr, i64, i64 }, align 16 + %a844 = alloca { ptr, i64, i64 }, align 16 %a847 = alloca { ptr, i64, i64 }, align 16 %a848 = alloca { ptr, i64, i64 }, align 16 - %a856 = alloca { ptr, i64, i64 }, align 16 + %a849 = alloca { ptr, i64, i64 }, align 16 + %a851 = 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 + %a857 = alloca { ptr, i64, i64 }, align 16 + %a858 = alloca { ptr, i64, i64 }, align 16 + %a859 = alloca { ptr, i64, i64 }, align 16 %a860 = alloca { ptr, i64, i64 }, align 16 + %a862 = alloca { ptr, i64, i64 }, align 16 %a863 = alloca { ptr, i64, i64 }, align 16 %a864 = alloca { ptr, i64, i64 }, align 16 %a865 = alloca { ptr, i64, i64 }, align 16 - %a867 = alloca { ptr, i64, i64 }, align 16 - %a868 = alloca { ptr, i64, i64 }, align 16 - %a869 = alloca { ptr, i64, i64 }, align 16 + %a870 = 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 + %a874 = 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 %a879 = alloca { ptr, i64, i64 }, align 16 - %a880 = alloca { ptr, i64, i64 }, align 16 %a881 = 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 - %a890 = alloca { ptr, i64, i64 }, align 16 - %a892 = alloca { ptr, i64, i64 }, align 16 - %a893 = alloca { ptr, i64, i64 }, align 16 - %a894 = alloca { ptr, i64, i64 }, align 16 - %a902 = alloca { ptr, i64, i64 }, align 16 - %a903 = alloca { ptr, i64, i64 }, align 16 - %a904 = alloca { ptr, i64, i64 }, align 16 - %a907 = alloca { ptr, i64, i64 }, align 16 - %a911 = alloca { ptr, i64, i64 }, align 16 - %a912 = alloca { ptr, i64, i64 }, align 16 - %a913 = alloca { ptr, i64, i64 }, align 16 - %a915 = alloca { ptr, i64, i64 }, align 16 - %a916 = alloca { ptr, i64, i64 }, align 16 - %a917 = 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 - %a924 = alloca { ptr, i64, i64 }, align 16 + %a888 = alloca %S.ast.Type, align 16 + %a889 = alloca %S.ast.Type, align 16 + %a897 = alloca { ptr, i64, i64 }, align 16 + %a898 = alloca { ptr, i64, i64 }, align 16 + %a922 = alloca %S.gen.Val, align 16 + %a923 = alloca %S.ast.Type, align 16 %a925 = alloca { ptr, i64, i64 }, align 16 %a926 = alloca { ptr, i64, i64 }, align 16 - %a934 = alloca { ptr, i64, i64 }, align 16 - %a935 = alloca { ptr, i64, i64 }, align 16 + %a928 = alloca %S.gen.Val, align 16 + %a929 = alloca { ptr, i64, i64 }, align 16 %a936 = alloca { ptr, i64, i64 }, align 16 - %a939 = alloca { ptr, i64, i64 }, align 16 + %a937 = alloca { ptr, i64, i64 }, align 16 + %a938 = alloca { ptr, i64, i64 }, align 16 + %a940 = alloca { ptr, i64, i64 }, align 16 + %a941 = alloca { ptr, i64, i64 }, align 16 %a942 = alloca { ptr, i64, i64 }, align 16 %a943 = alloca { ptr, i64, i64 }, align 16 - %a944 = alloca { ptr, i64, i64 }, align 16 %a946 = alloca { ptr, i64, i64 }, align 16 %a947 = alloca { ptr, i64, i64 }, align 16 %a948 = alloca { ptr, i64, i64 }, align 16 + %a949 = 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 + %a954 = alloca { ptr, i64, i64 }, align 16 + %a959 = alloca { ptr, i64, i64 }, align 16 %a960 = alloca { ptr, i64, i64 }, align 16 %a961 = alloca { ptr, i64, i64 }, align 16 %a962 = alloca { ptr, i64, i64 }, align 16 + %a963 = alloca { ptr, i64, i64 }, align 16 %a965 = 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 %a970 = alloca { ptr, i64, i64 }, align 16 + %a974 = alloca { ptr, i64, i64 }, align 16 %a975 = alloca { ptr, i64, i64 }, align 16 - %a989 = alloca { ptr, i64, i64 }, align 16 + %a983 = alloca { ptr, i64, i64 }, align 16 + %a987 = 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 + %a994 = alloca { ptr, i64, i64 }, align 16 + %a995 = alloca { ptr, i64, i64 }, align 16 + %a996 = alloca { ptr, i64, i64 }, align 16 + %a997 = alloca { ptr, i64, i64 }, align 16 + %a1000 = alloca { ptr, i64, i64 }, align 16 + %a1001 = alloca { ptr, i64, i64 }, align 16 + %a1005 = 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 + %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 - %a1016 = alloca { ptr, i64, i64 }, align 16 %a1018 = alloca { ptr, i64, i64 }, align 16 - %a1039 = alloca { ptr, i64, i64 }, align 16 + %a1019 = alloca { ptr, i64, i64 }, align 16 + %a1020 = alloca { ptr, i64, i64 }, align 16 + %a1021 = alloca { ptr, i64, i64 }, align 16 + %a1023 = 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 + %a1034 = alloca { ptr, i64, i64 }, align 16 + %a1035 = alloca { ptr, i64, i64 }, align 16 + %a1036 = alloca { ptr, i64, i64 }, align 16 + %a1037 = alloca { ptr, i64, i64 }, align 16 %a1040 = alloca { ptr, i64, i64 }, align 16 - %a1042 = alloca { ptr, i64, i64 }, align 16 + %a1041 = alloca { ptr, i64, i64 }, align 16 + %a1045 = alloca { ptr, i64, i64 }, align 16 %a1046 = alloca { ptr, i64, i64 }, align 16 + %a1047 = alloca { ptr, i64, i64 }, align 16 %a1049 = alloca { ptr, i64, i64 }, align 16 %a1050 = alloca { ptr, i64, i64 }, align 16 %a1051 = alloca { ptr, i64, i64 }, align 16 - %a1053 = alloca { ptr, i64, i64 }, align 16 - %a1054 = alloca { ptr, i64, i64 }, align 16 + %a1052 = alloca { ptr, i64, i64 }, align 16 %a1055 = alloca { ptr, i64, i64 }, align 16 + %a1056 = alloca { ptr, i64, i64 }, align 16 + %a1057 = alloca { ptr, i64, i64 }, align 16 %a1058 = alloca { ptr, i64, i64 }, align 16 + %a1059 = alloca { ptr, i64, i64 }, align 16 %a1061 = alloca { ptr, i64, i64 }, align 16 %a1062 = alloca { ptr, i64, i64 }, align 16 %a1063 = 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 - %a1070 = alloca { ptr, i64, i64 }, align 16 - %a1071 = alloca { ptr, i64, i64 }, align 16 + %a1064 = alloca { ptr, i64, i64 }, align 16 %a1072 = alloca { ptr, i64, i64 }, align 16 + %a1073 = alloca { ptr, i64, i64 }, align 16 + %a1074 = alloca { ptr, i64, i64 }, align 16 %a1075 = alloca { ptr, i64, i64 }, align 16 %a1078 = alloca { ptr, i64, i64 }, align 16 %a1079 = alloca { ptr, i64, i64 }, align 16 - %a1080 = alloca { ptr, i64, i64 }, align 16 %a1082 = alloca { ptr, i64, i64 }, align 16 %a1083 = alloca { ptr, i64, i64 }, align 16 %a1084 = alloca { ptr, i64, i64 }, align 16 + %a1086 = alloca { ptr, i64, i64 }, align 16 %a1087 = alloca { ptr, i64, i64 }, align 16 %a1088 = alloca { ptr, i64, i64 }, align 16 %a1089 = 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 + %a1095 = alloca { ptr, i64, i64 }, align 16 %a1097 = alloca { ptr, i64, i64 }, align 16 %a1098 = alloca { ptr, i64, i64 }, align 16 %a1099 = alloca { ptr, i64, i64 }, align 16 - %a1101 = alloca { ptr, i64, i64 }, align 16 - %a1102 = alloca { ptr, i64, i64 }, align 16 + %a1100 = alloca { ptr, i64, i64 }, align 16 %a1103 = 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 - %a1107 = alloca { ptr, i64, i64 }, align 16 - %a1108 = alloca { ptr, i64, i64 }, align 16 - %a1111 = alloca { ptr, i64, i64 }, align 16 - %a1112 = alloca { ptr, i64, i64 }, align 16 - %a1113 = 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 %a1120 = alloca { ptr, i64, i64 }, align 16 - %a1121 = alloca { ptr, i64, i64 }, align 16 - %a1122 = alloca { ptr, i64, i64 }, align 16 - %a1128 = alloca { ptr, i64, i64 }, align 16 - %a1129 = alloca { ptr, i64, i64 }, align 16 - %a1130 = alloca { ptr, i64, i64 }, align 16 - %a1132 = alloca { ptr, i64, i64 }, align 16 - %a1133 = alloca { ptr, i64, i64 }, align 16 %a1134 = alloca { ptr, i64, i64 }, align 16 - %a1137 = alloca { ptr, i64, i64 }, align 16 - %a1138 = alloca { ptr, i64, i64 }, align 16 - %a1139 = alloca { ptr, i64, i64 }, align 16 - %a1142 = alloca { ptr, i64, i64 }, align 16 - %a1145 = alloca { ptr, i64, i64 }, align 16 - %a1148 = alloca { ptr, i64, i64 }, align 16 - %a1149 = alloca { ptr, i64, i64 }, align 16 - %a1150 = alloca { ptr, i64, i64 }, align 16 - %a1152 = alloca { ptr, i64, i64 }, align 16 - %a1153 = alloca { ptr, i64, i64 }, align 16 - %a1154 = 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 - %a1161 = alloca { ptr, i64, i64 }, align 16 + %a1135 = alloca { ptr, i64, i64 }, align 16 + %a1159 = alloca %S.gen.Val, align 16 + %a1160 = alloca %S.ast.Type, align 16 %a1162 = alloca { ptr, i64, i64 }, align 16 %a1163 = alloca { ptr, i64, i64 }, align 16 - %a1168 = alloca { ptr, i64, i64 }, align 16 - %a1169 = alloca { ptr, i64, i64 }, align 16 - %a1170 = alloca { ptr, i64, i64 }, align 16 - %a1172 = alloca { ptr, i64, i64 }, align 16 - %a1173 = alloca { ptr, i64, i64 }, align 16 - %a1174 = alloca { ptr, i64, i64 }, align 16 - %a1179 = alloca { ptr, i64, i64 }, align 16 - %a1183 = alloca { ptr, i64, i64 }, align 16 - %a1187 = alloca { ptr, i64, i64 }, align 16 + %a1165 = alloca %S.gen.Val, align 16 + %a1166 = alloca { ptr, i64, i64 }, align 16 + %a1186 = alloca %S.gen.Val, align 16 + %a1187 = alloca %S.ast.Type, align 16 + %a1189 = alloca { ptr, i64, i64 }, align 16 %a1190 = alloca { ptr, i64, i64 }, align 16 - %a1191 = alloca { ptr, i64, i64 }, align 16 - %a1192 = alloca { ptr, i64, i64 }, align 16 - %a1194 = alloca { ptr, i64, i64 }, align 16 - %a1195 = alloca { ptr, i64, i64 }, align 16 - %a1196 = alloca { ptr, i64, i64 }, align 16 - %a1199 = alloca { ptr, i64, i64 }, align 16 + %a1192 = alloca %S.gen.Val, align 16 + %a1193 = alloca { ptr, i64, i64 }, align 16 + %a1197 = alloca { ptr, i64, i64 }, align 16 %a1200 = alloca { ptr, i64, i64 }, align 16 %a1201 = alloca { ptr, i64, i64 }, align 16 - %a1203 = alloca { ptr, i64, i64 }, align 16 + %a1202 = alloca { ptr, i64, i64 }, align 16 %a1204 = alloca { ptr, i64, i64 }, align 16 %a1205 = alloca { ptr, i64, i64 }, align 16 - %a1213 = alloca { ptr, i64, i64 }, align 16 + %a1206 = alloca { ptr, i64, i64 }, align 16 + %a1207 = alloca { ptr, i64, i64 }, align 16 + %a1210 = alloca { ptr, i64, i64 }, align 16 + %a1211 = alloca { ptr, i64, i64 }, align 16 %a1214 = alloca { ptr, i64, i64 }, align 16 %a1215 = alloca { ptr, i64, i64 }, align 16 + %a1216 = alloca { ptr, i64, i64 }, align 16 %a1218 = alloca { ptr, i64, i64 }, align 16 + %a1219 = alloca { ptr, i64, i64 }, align 16 + %a1220 = 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 + %a1224 = alloca { ptr, i64, i64 }, align 16 %a1225 = alloca { ptr, i64, i64 }, align 16 %a1226 = alloca { ptr, i64, i64 }, align 16 %a1227 = alloca { ptr, i64, i64 }, align 16 %a1230 = alloca { ptr, i64, i64 }, align 16 %a1231 = alloca { ptr, i64, i64 }, align 16 - %a1232 = alloca { ptr, i64, i64 }, align 16 %a1234 = alloca { ptr, i64, i64 }, align 16 %a1235 = alloca { ptr, i64, i64 }, align 16 %a1236 = alloca { ptr, i64, i64 }, align 16 + %a1238 = alloca { ptr, i64, i64 }, align 16 + %a1239 = 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 - %a1254 = alloca { ptr, i64, i64 }, align 16 - %a1255 = alloca { ptr, i64, i64 }, align 16 + %a1247 = alloca { ptr, i64, i64 }, align 16 + %a1250 = alloca { ptr, i64, i64 }, align 16 + %a1251 = alloca { ptr, i64, i64 }, align 16 %a1256 = alloca { ptr, i64, i64 }, align 16 - %a1259 = alloca { ptr, i64, i64 }, align 16 + %a1257 = alloca { ptr, i64, i64 }, align 16 + %a1258 = alloca { ptr, i64, i64 }, align 16 %a1260 = alloca { ptr, i64, i64 }, align 16 %a1261 = alloca { ptr, i64, i64 }, align 16 - %a1264 = alloca { ptr, i64, i64 }, align 16 - %a1276 = alloca %S.ast.Type, align 16 - %a1277 = alloca %S.ast.Type, align 16 - %a1282 = alloca { ptr, i64, i64 }, align 16 - %a1283 = alloca { ptr, i64, i64 }, align 16 + %a1262 = alloca { ptr, i64, i64 }, align 16 + %a1263 = alloca { ptr, i64, i64 }, align 16 + %a1266 = alloca { ptr, i64, i64 }, align 16 + %a1267 = alloca { ptr, i64, i64 }, align 16 + %a1268 = alloca { ptr, i64, i64 }, align 16 + %a1269 = 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 + %a1275 = alloca { ptr, i64, i64 }, align 16 + %a1276 = alloca { ptr, i64, i64 }, align 16 + %a1278 = alloca { ptr, i64, i64 }, align 16 + %a1279 = alloca { ptr, i64, i64 }, align 16 + %a1280 = alloca { ptr, i64, i64 }, align 16 + %a1281 = alloca { ptr, i64, i64 }, align 16 + %a1284 = alloca { ptr, i64, i64 }, align 16 + %a1285 = alloca { ptr, i64, i64 }, align 16 + %a1286 = alloca { ptr, i64, i64 }, align 16 + %a1287 = 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 - %a1298 = alloca { ptr, i64, i64 }, align 16 + %a1292 = alloca { ptr, i64, i64 }, align 16 + %a1295 = alloca { ptr, i64, i64 }, align 16 + %a1296 = alloca { ptr, i64, i64 }, align 16 + %a1297 = alloca { ptr, i64, i64 }, align 16 %a1299 = alloca { ptr, i64, i64 }, align 16 - %a1304 = alloca { ptr, i64, i64 }, align 16 + %a1300 = alloca { ptr, i64, i64 }, align 16 + %a1301 = alloca { ptr, i64, i64 }, align 16 + %a1302 = alloca { ptr, i64, i64 }, align 16 %a1305 = alloca { ptr, i64, i64 }, align 16 - %a1314 = alloca { ptr, i64, i64 }, align 16 + %a1306 = alloca { ptr, i64, i64 }, align 16 + %a1307 = alloca { ptr, i64, i64 }, align 16 + %a1308 = alloca { ptr, i64, i64 }, align 16 + %a1311 = alloca { ptr, i64, i64 }, align 16 + %a1312 = alloca { ptr, i64, i64 }, align 16 + %a1315 = alloca { ptr, i64, i64 }, align 16 %a1318 = alloca { ptr, i64, i64 }, align 16 + %a1319 = alloca { ptr, i64, i64 }, align 16 + %a1320 = alloca { ptr, i64, i64 }, align 16 %a1322 = alloca { ptr, i64, i64 }, align 16 + %a1323 = alloca { ptr, i64, i64 }, align 16 + %a1324 = 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 + %a1328 = alloca { ptr, i64, i64 }, align 16 %a1329 = alloca { ptr, i64, i64 }, align 16 %a1330 = alloca { ptr, i64, i64 }, align 16 %a1331 = alloca { ptr, i64, i64 }, align 16 + %a1333 = alloca { ptr, i64, i64 }, align 16 %a1334 = alloca { ptr, i64, i64 }, align 16 %a1335 = alloca { ptr, i64, i64 }, align 16 %a1336 = alloca { ptr, i64, i64 }, align 16 - %a1338 = alloca { ptr, i64, i64 }, align 16 - %a1339 = alloca { ptr, i64, i64 }, align 16 - %a1340 = alloca { ptr, i64, i64 }, align 16 + %a1341 = alloca { ptr, i64, i64 }, align 16 + %a1342 = alloca { ptr, i64, i64 }, align 16 + %a1343 = alloca { ptr, i64, i64 }, align 16 + %a1344 = alloca { ptr, i64, i64 }, align 16 %a1345 = alloca { ptr, i64, i64 }, align 16 - %a1346 = alloca { ptr, i64, i64 }, align 16 %a1347 = alloca { ptr, i64, i64 }, align 16 + %a1348 = alloca { ptr, i64, i64 }, align 16 %a1349 = alloca { ptr, i64, i64 }, align 16 %a1350 = alloca { ptr, i64, i64 }, align 16 - %a1351 = alloca { ptr, i64, i64 }, align 16 - %a1354 = alloca { ptr, i64, i64 }, align 16 - %a1355 = alloca { ptr, i64, i64 }, align 16 + %a1352 = alloca { ptr, i64, i64 }, align 16 %a1356 = alloca { ptr, i64, i64 }, align 16 - %a1358 = alloca { ptr, i64, i64 }, align 16 - %a1359 = alloca { ptr, i64, i64 }, align 16 %a1360 = alloca { ptr, i64, i64 }, align 16 + %a1364 = alloca { ptr, i64, i64 }, align 16 %a1367 = alloca { ptr, i64, i64 }, align 16 %a1368 = alloca { ptr, i64, i64 }, align 16 %a1369 = alloca { ptr, i64, i64 }, align 16 %a1371 = alloca { ptr, i64, i64 }, align 16 %a1372 = alloca { ptr, i64, i64 }, align 16 %a1373 = alloca { ptr, i64, i64 }, align 16 + %a1374 = alloca { ptr, i64, i64 }, align 16 + %a1377 = alloca { ptr, i64, i64 }, align 16 + %a1378 = alloca { ptr, i64, i64 }, align 16 + %a1379 = alloca { ptr, i64, i64 }, align 16 + %a1380 = alloca { ptr, i64, i64 }, align 16 + %a1382 = alloca { ptr, i64, i64 }, align 16 + %a1383 = alloca { ptr, i64, i64 }, align 16 + %a1384 = alloca { ptr, i64, i64 }, align 16 + %a1385 = alloca { ptr, i64, i64 }, align 16 + %a1393 = alloca { ptr, i64, i64 }, align 16 + %a1394 = alloca { ptr, i64, i64 }, align 16 + %a1395 = alloca { ptr, i64, i64 }, align 16 + %a1396 = alloca { ptr, i64, i64 }, align 16 + %a1399 = alloca { ptr, i64, i64 }, align 16 + %a1400 = alloca { ptr, i64, i64 }, align 16 + %a1403 = alloca { ptr, i64, i64 }, align 16 + %a1404 = alloca { ptr, i64, i64 }, align 16 + %a1405 = alloca { ptr, i64, i64 }, align 16 + %a1407 = alloca { ptr, i64, i64 }, align 16 + %a1408 = alloca { ptr, i64, i64 }, align 16 + %a1409 = alloca { ptr, i64, i64 }, align 16 + %a1410 = alloca { ptr, i64, i64 }, align 16 + %a1413 = alloca { ptr, i64, i64 }, align 16 + %a1414 = alloca { ptr, i64, i64 }, align 16 + %a1415 = alloca { ptr, i64, i64 }, align 16 + %a1416 = alloca { ptr, i64, i64 }, align 16 + %a1418 = alloca { ptr, i64, i64 }, align 16 + %a1419 = alloca { ptr, i64, i64 }, align 16 + %a1420 = alloca { ptr, i64, i64 }, align 16 + %a1421 = alloca { ptr, i64, i64 }, align 16 + %a1425 = alloca { ptr, i64, i64 }, align 16 + %a1426 = alloca { ptr, i64, i64 }, align 16 + %a1427 = alloca { ptr, i64, i64 }, align 16 + %a1429 = 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 + %a1440 = alloca { ptr, i64, i64 }, align 16 + %a1441 = alloca { ptr, i64, i64 }, align 16 + %a1442 = alloca { ptr, i64, i64 }, align 16 + %a1443 = alloca { ptr, i64, i64 }, align 16 + %a1446 = alloca { ptr, i64, i64 }, align 16 + %a1447 = alloca { ptr, i64, i64 }, align 16 + %a1448 = alloca { ptr, i64, i64 }, align 16 + %a1449 = alloca { ptr, i64, i64 }, align 16 + %a1450 = alloca { ptr, i64, i64 }, align 16 + %a1451 = alloca { ptr, i64, i64 }, align 16 + %a1454 = alloca { ptr, i64, i64 }, align 16 + %a1455 = alloca { ptr, i64, i64 }, align 16 + %a1467 = alloca %S.ast.Type, align 16 + %a1468 = alloca %S.ast.Type, align 16 + %a1473 = alloca { ptr, i64, i64 }, align 16 + %a1474 = alloca { ptr, i64, i64 }, align 16 + %a1481 = alloca { ptr, i64, i64 }, align 16 + %a1482 = alloca { ptr, i64, i64 }, align 16 + %a1484 = alloca { ptr, i64, i64 }, align 16 + %a1489 = alloca { ptr, i64, i64 }, align 16 + %a1490 = alloca { ptr, i64, i64 }, align 16 + %a1495 = alloca { ptr, i64, i64 }, align 16 + %a1496 = alloca { ptr, i64, i64 }, align 16 + %a1505 = alloca { ptr, i64, i64 }, align 16 + %a1509 = alloca { ptr, i64, i64 }, align 16 + %a1513 = alloca { ptr, i64, i64 }, align 16 + %a1516 = alloca { ptr, i64, i64 }, align 16 + %a1517 = alloca { ptr, i64, i64 }, align 16 + %a1518 = alloca { ptr, i64, i64 }, align 16 + %a1520 = alloca { ptr, i64, i64 }, align 16 + %a1521 = alloca { ptr, i64, i64 }, align 16 + %a1522 = alloca { ptr, i64, i64 }, align 16 + %a1523 = alloca { ptr, i64, i64 }, align 16 + %a1526 = alloca { ptr, i64, i64 }, align 16 + %a1527 = alloca { ptr, i64, i64 }, align 16 + %a1528 = alloca { ptr, i64, i64 }, align 16 + %a1529 = alloca { ptr, i64, i64 }, align 16 + %a1531 = alloca { ptr, i64, i64 }, align 16 + %a1532 = alloca { ptr, i64, i64 }, align 16 + %a1533 = alloca { ptr, i64, i64 }, align 16 + %a1534 = alloca { ptr, i64, i64 }, align 16 + %a1539 = alloca { ptr, i64, i64 }, align 16 + %a1540 = alloca { ptr, i64, i64 }, align 16 + %a1541 = alloca { ptr, i64, i64 }, align 16 + %a1542 = alloca { ptr, i64, i64 }, align 16 + %a1543 = alloca { ptr, i64, i64 }, align 16 + %a1545 = 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 + %a1551 = alloca { ptr, i64, i64 }, align 16 + %a1552 = alloca { ptr, i64, i64 }, align 16 + %a1553 = alloca { ptr, i64, i64 }, align 16 + %a1554 = alloca { ptr, i64, i64 }, align 16 + %a1556 = 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 + %a1561 = alloca { ptr, i64, i64 }, align 16 + %a1567 = alloca { ptr, i64, i64 }, align 16 + %a1568 = alloca { ptr, i64, i64 }, align 16 + %a1569 = alloca { ptr, i64, i64 }, align 16 + %a1571 = alloca { ptr, i64, i64 }, align 16 + %a1572 = alloca { ptr, i64, i64 }, align 16 + %a1573 = alloca { ptr, i64, i64 }, align 16 + %a1574 = alloca { ptr, i64, i64 }, align 16 + %a1576 = 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 @@ -72483,11 +86498,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 %range8001, label %inrange8002 -range8001: - call void @finch_panic_index(ptr @.str.5268, i64 4779, i64 0, i64 %t7) + br i1 %t8, label %range8458, label %inrange8459 +range8458: + call void @finch_panic_index(ptr @.str.5460, i64 5169, i64 0, i64 %t7) unreachable -inrange8002: +inrange8459: %t9 = extractvalue { ptr, i64, i64 } %t6, 0 %t10 = getelementptr inbounds %S.ast.Type, ptr %t9, i64 0 %t11 = load %S.ast.Type, ptr %t10 @@ -72507,1599 +86522,2505 @@ inrange8002: 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.5269, i64 46, i64 0 }, ptr %a29 + store { ptr, i64, i64 } { ptr @.str.5461, 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.5270, i64 14, i64 0 }, ptr %a34 + store { ptr, i64, i64 } { ptr @.str.5462, 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.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 %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) + store { ptr, i64, i64 } %t31, ptr %a35 + call void @finch_str_drop(ptr %a35) + %t36 = load { ptr, i64, i64 }, ptr %a32 + %t37 = call { ptr, i64, i64 } @finch.gen.op(ptr %t26, { ptr, i64, i64 } %t36) + store { ptr, i64, i64 } %t36, ptr %a38 + call void @finch_str_drop(ptr %a38) + store { ptr, i64, i64 } %t37, ptr %a39 + %t40 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t40, ptr %a41 + store { ptr, i64, i64 } { ptr @.str.5463, 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 %then8460, label %endif8462 +then8460: %t45 = load ptr, ptr %a1 - %t46 = load ptr, ptr %a1 + %t46 = load %S.ast.Node, ptr %a2 + call void @finch.gen.need(ptr %t45, %S.ast.Node %t46, i64 1) %t47 = load ptr, ptr %a1 - %t48 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t49 = load { ptr, i64, i64 }, ptr %t48 - %t50 = extractvalue { ptr, i64, i64 } %t49, 1 - %t51 = icmp uge i64 1, %t50 - br i1 %t51, label %range8006, label %inrange8007 -range8006: - call void @finch_panic_index(ptr @.str.5272, i64 4785, i64 1, i64 %t50) + %t48 = load ptr, ptr %a1 + %t49 = load ptr, ptr %a1 + %t50 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t51 = load { ptr, i64, i64 }, ptr %t50 + %t52 = extractvalue { ptr, i64, i64 } %t51, 1 + %t53 = icmp uge i64 1, %t52 + br i1 %t53, label %range8463, label %inrange8464 +range8463: + call void @finch_panic_index(ptr @.str.5464, i64 5175, i64 1, i64 %t52) unreachable -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 - %t55 = load %S.ast.Type, ptr %a15 - %t56 = call %S.gen.Val @finch.gen.exprWant(ptr %t47, %S.ast.Node %t54, %S.ast.Type %t55) +inrange8464: + %t54 = extractvalue { ptr, i64, i64 } %t51, 0 + %t55 = getelementptr inbounds %S.ast.Node, ptr %t54, i64 1 + %t56 = load %S.ast.Node, ptr %t55 %t57 = load %S.ast.Type, ptr %a15 - %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 1, %t60 - br i1 %t61, label %range8008, label %inrange8009 -range8008: - call void @finch_panic_index(ptr @.str.5273, i64 4785, i64 1, i64 %t60) + %t58 = call %S.gen.Val @finch.gen.exprWant(ptr %t49, %S.ast.Node %t56, %S.ast.Type %t57) + %t59 = load %S.ast.Type, ptr %a15 + %t60 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t61 = load { ptr, i64, i64 }, ptr %t60 + %t62 = extractvalue { ptr, i64, i64 } %t61, 1 + %t63 = icmp uge i64 1, %t62 + br i1 %t63, label %range8465, label %inrange8466 +range8465: + call void @finch_panic_index(ptr @.str.5465, i64 5175, i64 1, i64 %t62) unreachable -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.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.5275, i64 3, i64 0 }, { ptr, i64, i64 } %t69) - store { ptr, i64, i64 } %t70, ptr %a71 +inrange8466: + %t64 = extractvalue { ptr, i64, i64 } %t61, 0 + %t65 = getelementptr inbounds %S.ast.Node, ptr %t64, i64 1 + %t66 = load %S.ast.Node, ptr %t65 + %t67 = call %S.gen.Val @finch.gen.coerce(ptr %t48, %S.gen.Val %t58, %S.ast.Type %t59, %S.ast.Node %t66, { ptr, i64, i64 } { ptr @.str.5466, i64 11, i64 0 }) + store %S.gen.Val %t58, ptr %a68 + call void @finch.drop.S_gen_Val(ptr %a68) + %t69 = call { ptr, i64, i64 } @finch.gen.own(ptr %t47, %S.gen.Val %t67) + store %S.gen.Val %t67, ptr %a70 + call void @finch.drop.S_gen_Val(ptr %a70) + store { ptr, i64, i64 } %t69, ptr %a71 %t72 = load ptr, ptr %a1 - %t73 = load { ptr, i64, i64 }, ptr %a71 - 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.5277, i64 3, i64 0 }, ptr %a80 + %t73 = load { ptr, i64, i64 }, ptr %a39 + %t74 = call { ptr, i64, i64 } @finch.gen.load(ptr %t72, { ptr, i64, i64 } { ptr @.str.5467, i64 3, i64 0 }, { ptr, i64, i64 } %t73) + store { ptr, i64, i64 } %t74, ptr %a75 + %t76 = load ptr, ptr %a1 + %t77 = load { ptr, i64, i64 }, ptr %a75 + store { ptr, i64, i64 } { ptr @.str.5468, i64 8, 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 - %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.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.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 - store { ptr, i64, i64 } %t93, ptr %a96 - store { ptr, i64, i64 } %t94, 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 %a100 - 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 - %t104 = load %S.ast.Type, ptr %a15 - %t105 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t103, %S.ast.Type %t104) - store { ptr, i64, i64 } %t102, 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.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.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.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.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 - store { ptr, i64, i64 } %t130, ptr %a133 - store { ptr, i64, i64 } %t131, ptr %a134 - 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.5285, i64 6, i64 0 }, ptr %a138 + store { ptr, i64, i64 } %t81, ptr %a83 + store { ptr, i64, i64 } { ptr @.str.5469, i64 3, i64 0 }, ptr %a84 + call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84) + store { ptr, i64, i64 } %t81, ptr %a85 + call void @finch_str_drop(ptr %a85) + %t86 = load { ptr, i64, i64 }, ptr %a82 + %t87 = call { ptr, i64, i64 } @finch.gen.op(ptr %t76, { ptr, i64, i64 } %t86) + store { ptr, i64, i64 } %t86, ptr %a88 + call void @finch_str_drop(ptr %a88) + store { ptr, i64, i64 } %t87, ptr %a89 + %t90 = load ptr, ptr %a1 + %t91 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } { ptr @.str.5470, i64 33, 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.5471, i64 6, i64 0 }, ptr %a98 + call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) + store { ptr, i64, i64 } %t95, ptr %a99 + call void @finch_str_drop(ptr %a99) + %t100 = load { ptr, i64, i64 }, ptr %a96 + %t101 = load { ptr, i64, i64 }, ptr %a89 + store { ptr, i64, i64 } %t100, ptr %a103 + store { ptr, i64, i64 } %t101, ptr %a104 + call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104) + store { ptr, i64, i64 } %t100, ptr %a105 + call void @finch_str_drop(ptr %a105) + %t106 = load { ptr, i64, i64 }, ptr %a102 + store { ptr, i64, i64 } %t106, ptr %a108 + store { ptr, i64, i64 } { ptr @.str.5472, i64 6, i64 0 }, ptr %a109 + call void @finch_str_concat(ptr %a107, ptr %a108, ptr %a109) + store { ptr, i64, i64 } %t106, ptr %a110 + call void @finch_str_drop(ptr %a110) + %t111 = load { ptr, i64, i64 }, ptr %a107 + %t112 = load ptr, ptr %a1 + %t113 = load %S.ast.Type, ptr %a15 + %t114 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t112, %S.ast.Type %t113) + store { ptr, i64, i64 } %t111, ptr %a116 + store { ptr, i64, i64 } %t114, ptr %a117 + call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) + store { ptr, i64, i64 } %t111, ptr %a118 + call void @finch_str_drop(ptr %a118) + store { ptr, i64, i64 } %t114, ptr %a119 + call void @finch_str_drop(ptr %a119) + %t120 = load { ptr, i64, i64 }, ptr %a115 + store { ptr, i64, i64 } %t120, ptr %a122 + store { ptr, i64, i64 } { ptr @.str.5473, i64 1, i64 0 }, ptr %a123 + call void @finch_str_concat(ptr %a121, ptr %a122, ptr %a123) + store { ptr, i64, i64 } %t120, ptr %a124 + call void @finch_str_drop(ptr %a124) + %t125 = load { ptr, i64, i64 }, ptr %a121 + call void @finch.gen.emit(ptr %t90, { ptr, i64, i64 } %t125) + store { ptr, i64, i64 } %t125, ptr %a126 + call void @finch_str_drop(ptr %a126) + %t127 = load ptr, ptr %a1 + %t128 = load { ptr, i64, i64 }, ptr %a3 + %t129 = call { ptr, i64, i64 } @finch.gen.load(ptr %t127, { ptr, i64, i64 } { ptr @.str.5474, i64 3, i64 0 }, { ptr, i64, i64 } %t128) + store { ptr, i64, i64 } %t129, ptr %a130 + %t131 = load ptr, ptr %a1 + %t132 = load { ptr, i64, i64 }, ptr %a19 + %t133 = load { ptr, i64, i64 }, ptr %a71 + %t134 = load ptr, ptr %a1 + %t135 = load { ptr, i64, i64 }, ptr %a19 + store { ptr, i64, i64 } { ptr @.str.5475, i64 23, 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 - %t140 = load { ptr, i64, i64 }, ptr %a71 - store { ptr, i64, i64 } %t139, ptr %a142 - store { ptr, i64, i64 } %t140, ptr %a143 - call void @finch_str_concat(ptr %a141, ptr %a142, ptr %a143) - %t144 = load { ptr, i64, i64 }, ptr %a141 - %t145 = call { ptr, i64, i64 } @finch.gen.op(ptr %t121, { ptr, i64, i64 } %t144) - call void @finch.gen.store(ptr %t118, { ptr, i64, i64 } %t119, { ptr, i64, i64 } %t120, { ptr, i64, i64 } %t145) - %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.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 -endif8005: - %t151 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t151, ptr %a152 - 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 %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.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.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.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.5292, i64 23, i64 0 }, %S.ast.Node %t174) + store { ptr, i64, i64 } %t139, ptr %a141 + store { ptr, i64, i64 } { ptr @.str.5476, i64 6, i64 0 }, ptr %a142 + call void @finch_str_concat(ptr %a140, ptr %a141, ptr %a142) + store { ptr, i64, i64 } %t139, ptr %a143 + call void @finch_str_drop(ptr %a143) + %t144 = load { ptr, i64, i64 }, ptr %a140 + %t145 = load { ptr, i64, i64 }, ptr %a130 + store { ptr, i64, i64 } %t144, ptr %a147 + store { ptr, i64, i64 } %t145, ptr %a148 + call void @finch_str_concat(ptr %a146, ptr %a147, ptr %a148) + store { ptr, i64, i64 } %t144, ptr %a149 + call void @finch_str_drop(ptr %a149) + %t150 = load { ptr, i64, i64 }, ptr %a146 + store { ptr, i64, i64 } %t150, ptr %a152 + store { ptr, i64, i64 } { ptr @.str.5477, i64 6, i64 0 }, ptr %a153 + call void @finch_str_concat(ptr %a151, ptr %a152, ptr %a153) + store { ptr, i64, i64 } %t150, ptr %a154 + call void @finch_str_drop(ptr %a154) + %t155 = load { ptr, i64, i64 }, ptr %a151 + %t156 = load { ptr, i64, i64 }, ptr %a75 + store { ptr, i64, i64 } %t155, ptr %a158 + store { ptr, i64, i64 } %t156, ptr %a159 + call void @finch_str_concat(ptr %a157, ptr %a158, ptr %a159) + store { ptr, i64, i64 } %t155, ptr %a160 + call void @finch_str_drop(ptr %a160) + %t161 = load { ptr, i64, i64 }, ptr %a157 + %t162 = call { ptr, i64, i64 } @finch.gen.op(ptr %t134, { ptr, i64, i64 } %t161) + store { ptr, i64, i64 } %t161, ptr %a163 + call void @finch_str_drop(ptr %a163) + call void @finch.gen.store(ptr %t131, { ptr, i64, i64 } %t132, { ptr, i64, i64 } %t133, { ptr, i64, i64 } %t162) + store { ptr, i64, i64 } %t162, ptr %a164 + call void @finch_str_drop(ptr %a164) + %t165 = load ptr, ptr %a1 + %t166 = load { ptr, i64, i64 }, ptr %a89 + %t167 = load { ptr, i64, i64 }, ptr %a39 + call void @finch.gen.store(ptr %t165, { ptr, i64, i64 } { ptr @.str.5478, i64 3, i64 0 }, { ptr, i64, i64 } %t166, { ptr, i64, i64 } %t167) + %t168 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5479, i64 4, i64 0 }) + %t169 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t168, 1 + call void @finch_str_drop(ptr %a130) + call void @finch_str_drop(ptr %a89) + call void @finch_str_drop(ptr %a75) + call void @finch_str_drop(ptr %a71) + call void @finch_str_drop(ptr %a39) + call void @finch_str_drop(ptr %a25) + call void @finch_str_drop(ptr %a19) + call void @finch.drop.S_ast_Type(ptr %a15) + ret %S.gen.Val %t169 +endif8462: + %t170 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t170, ptr %a171 + store { ptr, i64, i64 } { ptr @.str.5480, i64 3, i64 0 }, ptr %a172 + %t173 = call i32 @finch_str_eq(ptr %a171, ptr %a172) + %t174 = icmp ne i32 %t173, 0 + br i1 %t174, label %then8467, label %endif8469 +then8467: %t175 = load ptr, ptr %a1 - %t176 = load { ptr, i64, i64 }, ptr %a161 - 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.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.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.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.5297, i64 6, i64 0 }, ptr %a201 + %t176 = load %S.ast.Node, ptr %a2 + call void @finch.gen.need(ptr %t175, %S.ast.Node %t176, i64 0) + %t177 = load ptr, ptr %a1 + %t178 = load { ptr, i64, i64 }, ptr %a39 + %t179 = call { ptr, i64, i64 } @finch.gen.load(ptr %t177, { ptr, i64, i64 } { ptr @.str.5481, i64 3, i64 0 }, { ptr, i64, i64 } %t178) + store { ptr, i64, i64 } %t179, ptr %a180 + %t181 = load ptr, ptr %a1 + %t182 = load ptr, ptr %a1 + %t183 = load { ptr, i64, i64 }, ptr %a180 + store { ptr, i64, i64 } { ptr @.str.5482, i64 12, 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.5483, i64 3, i64 0 }, ptr %a190 + call void @finch_str_concat(ptr %a188, ptr %a189, ptr %a190) + store { ptr, i64, i64 } %t187, ptr %a191 + call void @finch_str_drop(ptr %a191) + %t192 = load { ptr, i64, i64 }, ptr %a188 + %t193 = call { ptr, i64, i64 } @finch.gen.op(ptr %t182, { ptr, i64, i64 } %t192) + store { ptr, i64, i64 } %t192, ptr %a194 + call void @finch_str_drop(ptr %a194) + %t195 = load %S.ast.Node, ptr %a2 + call void @finch.gen.panicIf(ptr %t181, { ptr, i64, i64 } %t193, { ptr, i64, i64 } { ptr @.str.5484, i64 23, i64 0 }, %S.ast.Node %t195) + store { ptr, i64, i64 } %t193, ptr %a196 + call void @finch_str_drop(ptr %a196) + %t197 = load ptr, ptr %a1 + %t198 = load { ptr, i64, i64 }, ptr %a180 + store { ptr, i64, i64 } { ptr @.str.5485, i64 8, 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 - %t203 = load { ptr, i64, i64 }, ptr %a190 - store { ptr, i64, i64 } %t202, 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 } %t202, ptr %a204 + store { ptr, i64, i64 } { ptr @.str.5486, i64 3, i64 0 }, ptr %a205 + call void @finch_str_concat(ptr %a203, ptr %a204, ptr %a205) + store { ptr, i64, i64 } %t202, ptr %a206 + call void @finch_str_drop(ptr %a206) + %t207 = load { ptr, i64, i64 }, ptr %a203 + %t208 = call { ptr, i64, i64 } @finch.gen.op(ptr %t197, { ptr, i64, i64 } %t207) store { ptr, i64, i64 } %t207, ptr %a209 - 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 - store { ptr, i64, i64 } %t211, 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 { ptr, i64, i64 } @finch.gen.op(ptr %t193, { ptr, i64, i64 } %t216) - %t218 = call { ptr, i64, i64 } @finch.gen.load(ptr %t191, { ptr, i64, i64 } %t192, { ptr, i64, i64 } %t217) - store { ptr, i64, i64 } %t218, ptr %a219 - %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.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) - %t226 = load { ptr, i64, i64 }, ptr %a225 - %t227 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t226, 0 - %t228 = load %S.ast.Type, ptr %a15 - store %S.ast.Type %t228, ptr %a229 - call void @finch.copy.S_ast_Type(ptr %a230, ptr %a229) - %t231 = load %S.ast.Type, ptr %a230 - %t232 = insertvalue %S.gen.Val %t227, %S.ast.Type %t231, 1 - %t233 = load ptr, ptr %a1 - %t234 = load %S.ast.Type, ptr %a15 - %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 -endif8012: - %t237 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t237, ptr %a238 - 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 %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.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 -endif8015: - %t248 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t248, ptr %a249 - 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.from8016 -logic.from8016: - br i1 %t252, label %logic.end8018, label %logic.rhs8017 -logic.rhs8017: - %t253 = load { ptr, i64, i64 }, ptr %a25 + call void @finch_str_drop(ptr %a209) + store { ptr, i64, i64 } %t208, ptr %a210 + %t211 = load ptr, ptr %a1 + %t212 = load { ptr, i64, i64 }, ptr %a3 + %t213 = call { ptr, i64, i64 } @finch.gen.load(ptr %t211, { ptr, i64, i64 } { ptr @.str.5487, i64 3, i64 0 }, { ptr, i64, i64 } %t212) + store { ptr, i64, i64 } %t213, ptr %a214 + %t215 = load ptr, ptr %a1 + %t216 = load { ptr, i64, i64 }, ptr %a19 + %t217 = load ptr, ptr %a1 + %t218 = load { ptr, i64, i64 }, ptr %a19 + store { ptr, i64, i64 } { ptr @.str.5488, i64 23, 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.5489, i64 6, i64 0 }, ptr %a225 + call void @finch_str_concat(ptr %a223, ptr %a224, ptr %a225) + store { ptr, i64, i64 } %t222, ptr %a226 + call void @finch_str_drop(ptr %a226) + %t227 = load { ptr, i64, i64 }, ptr %a223 + %t228 = load { ptr, i64, i64 }, ptr %a214 + store { ptr, i64, i64 } %t227, ptr %a230 + store { ptr, i64, i64 } %t228, ptr %a231 + call void @finch_str_concat(ptr %a229, ptr %a230, ptr %a231) + store { ptr, i64, i64 } %t227, ptr %a232 + call void @finch_str_drop(ptr %a232) + %t233 = load { ptr, i64, i64 }, ptr %a229 + store { ptr, i64, i64 } %t233, ptr %a235 + store { ptr, i64, i64 } { ptr @.str.5490, i64 6, i64 0 }, ptr %a236 + call void @finch_str_concat(ptr %a234, ptr %a235, ptr %a236) + store { ptr, i64, i64 } %t233, ptr %a237 + call void @finch_str_drop(ptr %a237) + %t238 = load { ptr, i64, i64 }, ptr %a234 + %t239 = load { ptr, i64, i64 }, ptr %a210 + store { ptr, i64, i64 } %t238, ptr %a241 + store { ptr, i64, i64 } %t239, ptr %a242 + call void @finch_str_concat(ptr %a240, ptr %a241, ptr %a242) + store { ptr, i64, i64 } %t238, ptr %a243 + call void @finch_str_drop(ptr %a243) + %t244 = load { ptr, i64, i64 }, ptr %a240 + %t245 = call { ptr, i64, i64 } @finch.gen.op(ptr %t217, { ptr, i64, i64 } %t244) + store { ptr, i64, i64 } %t244, ptr %a246 + call void @finch_str_drop(ptr %a246) + %t247 = call { ptr, i64, i64 } @finch.gen.load(ptr %t215, { ptr, i64, i64 } %t216, { ptr, i64, i64 } %t245) + store { ptr, i64, i64 } %t245, ptr %a248 + call void @finch_str_drop(ptr %a248) + store { ptr, i64, i64 } %t247, ptr %a249 + %t250 = load ptr, ptr %a1 + %t251 = load { ptr, i64, i64 }, ptr %a210 + %t252 = load { ptr, i64, i64 }, ptr %a39 + call void @finch.gen.store(ptr %t250, { ptr, i64, i64 } { ptr @.str.5491, i64 3, i64 0 }, { ptr, i64, i64 } %t251, { ptr, i64, i64 } %t252) + %t253 = load { ptr, i64, i64 }, ptr %a249 store { ptr, i64, i64 } %t253, ptr %a254 - 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.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) - %t261 = load ptr, ptr %a1 - %t262 = load ptr, ptr %a1 - %t263 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t264 = load { ptr, i64, i64 }, ptr %t263 - %t265 = extractvalue { ptr, i64, i64 } %t264, 1 - %t266 = icmp uge i64 1, %t265 - br i1 %t266, label %range8023, label %inrange8024 -range8023: - call void @finch_panic_index(ptr @.str.5306, i64 4811, i64 1, i64 %t265) - unreachable -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 - %t270 = load %S.ast.Type, ptr %a15 - %t271 = call %S.gen.Val @finch.gen.exprWant(ptr %t262, %S.ast.Node %t269, %S.ast.Type %t270) - %t272 = load %S.ast.Type, ptr %a15 - %t273 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t274 = load { ptr, i64, i64 }, ptr %t273 - %t275 = extractvalue { ptr, i64, i64 } %t274, 1 - %t276 = icmp uge i64 1, %t275 - br i1 %t276, label %range8025, label %inrange8026 -range8025: - call void @finch_panic_index(ptr @.str.5307, i64 4811, i64 1, i64 %t275) - unreachable -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.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.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.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.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.5313, i64 3, i64 0 }, { ptr, i64, i64 } %t292) - store { ptr, i64, i64 } %t293, ptr %a294 + call void @finch_str_copy(ptr %a255, ptr %a254) + %t256 = load { ptr, i64, i64 }, ptr %a255 + %t257 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t256, 0 + %t258 = load %S.ast.Type, ptr %a15 + store %S.ast.Type %t258, ptr %a259 + call void @finch.copy.S_ast_Type(ptr %a260, ptr %a259) + %t261 = load %S.ast.Type, ptr %a260 + %t262 = insertvalue %S.gen.Val %t257, %S.ast.Type %t261, 1 + %t263 = load ptr, ptr %a1 + %t264 = load %S.ast.Type, ptr %a15 + %t265 = call i1 @finch.gen.owning(ptr %t263, %S.ast.Type %t264) + %t266 = insertvalue %S.gen.Val %t262, i1 %t265, 2 + call void @finch_str_drop(ptr %a249) + call void @finch_str_drop(ptr %a214) + call void @finch_str_drop(ptr %a210) + call void @finch_str_drop(ptr %a180) + call void @finch_str_drop(ptr %a39) + call void @finch_str_drop(ptr %a25) + call void @finch_str_drop(ptr %a19) + call void @finch.drop.S_ast_Type(ptr %a15) + ret %S.gen.Val %t266 +endif8469: + %t267 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t267, ptr %a268 + store { ptr, i64, i64 } { ptr @.str.5492, i64 5, i64 0 }, ptr %a269 + %t270 = call i32 @finch_str_eq(ptr %a268, ptr %a269) + %t271 = icmp ne i32 %t270, 0 + br i1 %t271, label %then8470, label %endif8472 +then8470: + %t272 = load ptr, ptr %a1 + %t273 = load %S.ast.Node, ptr %a2 + call void @finch.gen.need(ptr %t272, %S.ast.Node %t273, i64 0) + %t274 = load ptr, ptr %a1 + %t275 = load { ptr, i64, i64 }, ptr %a3 + %t276 = load %S.ast.Type, ptr %a4 + call void @finch.gen.dropFrom(ptr %t274, { ptr, i64, i64 } %t275, %S.ast.Type %t276, { ptr, i64, i64 } { ptr @.str.5493, i64 1, i64 0 }) + %t277 = load ptr, ptr %a1 + %t278 = load { ptr, i64, i64 }, ptr %a39 + call void @finch.gen.store(ptr %t277, { ptr, i64, i64 } { ptr @.str.5494, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5495, i64 1, i64 0 }, { ptr, i64, i64 } %t278) + %t279 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5496, i64 4, i64 0 }) + %t280 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t279, 1 + call void @finch_str_drop(ptr %a39) + call void @finch_str_drop(ptr %a25) + call void @finch_str_drop(ptr %a19) + call void @finch.drop.S_ast_Type(ptr %a15) + ret %S.gen.Val %t280 +endif8472: + %t281 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t281, ptr %a282 + store { ptr, i64, i64 } { ptr @.str.5497, i64 4, i64 0 }, ptr %a283 + %t284 = call i32 @finch_str_eq(ptr %a282, ptr %a283) + %t285 = icmp ne i32 %t284, 0 + br label %logic.from8473 +logic.from8473: + br i1 %t285, label %logic.end8475, label %logic.rhs8474 +logic.rhs8474: + %t286 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t286, ptr %a287 + store { ptr, i64, i64 } { ptr @.str.5498, i64 8, i64 0 }, ptr %a288 + %t289 = call i32 @finch_str_eq(ptr %a287, ptr %a288) + %t290 = icmp ne i32 %t289, 0 + br label %logic.rend8476 +logic.rend8476: + br label %logic.end8475 +logic.end8475: + %t291 = phi i1 [ true, %logic.from8473 ], [ %t290, %logic.rend8476 ] + br i1 %t291, label %then8477, label %endif8479 +then8477: + %t292 = load ptr, ptr %a1 + %t293 = load %S.ast.Node, ptr %a2 + call void @finch.gen.need(ptr %t292, %S.ast.Node %t293, i64 1) + %t294 = load ptr, ptr %a1 %t295 = load ptr, ptr %a1 - %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.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.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.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.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.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.5321, i64 8, i64 0 }) - store { ptr, i64, i64 } %t313, ptr %a314 - %t315 = load ptr, ptr %a1 - %t316 = load { ptr, i64, i64 }, ptr %a302 - call void @finch.gen.br(ptr %t315, { ptr, i64, i64 } %t316) - %t317 = load ptr, ptr %a1 - %t318 = load { ptr, i64, i64 }, ptr %a302 - call void @finch.gen.label(ptr %t317, { ptr, i64, i64 } %t318) + %t296 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t297 = load { ptr, i64, i64 }, ptr %t296 + %t298 = extractvalue { ptr, i64, i64 } %t297, 1 + %t299 = icmp uge i64 1, %t298 + br i1 %t299, label %range8480, label %inrange8481 +range8480: + call void @finch_panic_index(ptr @.str.5499, i64 5202, i64 1, i64 %t298) + unreachable +inrange8481: + %t300 = extractvalue { ptr, i64, i64 } %t297, 0 + %t301 = getelementptr inbounds %S.ast.Node, ptr %t300, i64 1 + %t302 = load %S.ast.Node, ptr %t301 + %t303 = load %S.ast.Type, ptr %a15 + %t304 = call %S.gen.Val @finch.gen.exprWant(ptr %t295, %S.ast.Node %t302, %S.ast.Type %t303) + %t305 = load %S.ast.Type, ptr %a15 + %t306 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t307 = load { ptr, i64, i64 }, ptr %t306 + %t308 = extractvalue { ptr, i64, i64 } %t307, 1 + %t309 = icmp uge i64 1, %t308 + br i1 %t309, label %range8482, label %inrange8483 +range8482: + call void @finch_panic_index(ptr @.str.5500, i64 5202, i64 1, i64 %t308) + unreachable +inrange8483: + %t310 = extractvalue { ptr, i64, i64 } %t307, 0 + %t311 = getelementptr inbounds %S.ast.Node, ptr %t310, i64 1 + %t312 = load %S.ast.Node, ptr %t311 + %t313 = call %S.gen.Val @finch.gen.coerce(ptr %t294, %S.gen.Val %t304, %S.ast.Type %t305, %S.ast.Node %t312, { ptr, i64, i64 } { ptr @.str.5501, i64 21, i64 0 }) + store %S.gen.Val %t304, ptr %a314 + call void @finch.drop.S_gen_Val(ptr %a314) + store %S.gen.Val %t313, ptr %a315 + %t316 = load ptr, ptr %a1 + %t317 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t316, { ptr, i64, i64 } { ptr @.str.5502, i64 3, i64 0 }) + store { ptr, i64, i64 } %t317, ptr %a318 %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.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.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.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 - store { ptr, i64, i64 } %t332, ptr %a335 - store { ptr, i64, i64 } %t333, ptr %a336 - call void @finch_str_concat(ptr %a334, ptr %a335, ptr %a336) - %t337 = load { ptr, i64, i64 }, ptr %a334 - %t338 = call { ptr, i64, i64 } @finch.gen.op(ptr %t323, { ptr, i64, i64 } %t337) + %t320 = load { ptr, i64, i64 }, ptr %a318 + call void @finch.gen.store(ptr %t319, { ptr, i64, i64 } { ptr @.str.5503, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5504, i64 2, i64 0 }, { ptr, i64, i64 } %t320) + %t321 = load ptr, ptr %a1 + %t322 = load { ptr, i64, i64 }, ptr %a39 + %t323 = call { ptr, i64, i64 } @finch.gen.load(ptr %t321, { ptr, i64, i64 } { ptr @.str.5505, i64 3, i64 0 }, { ptr, i64, i64 } %t322) + store { ptr, i64, i64 } %t323, ptr %a324 + %t325 = load ptr, ptr %a1 + %t326 = load { ptr, i64, i64 }, ptr %a3 + %t327 = call { ptr, i64, i64 } @finch.gen.load(ptr %t325, { ptr, i64, i64 } { ptr @.str.5506, i64 3, i64 0 }, { ptr, i64, i64 } %t326) + store { ptr, i64, i64 } %t327, ptr %a328 + %t329 = load ptr, ptr %a1 + %t330 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t329, { ptr, i64, i64 } { ptr @.str.5507, i64 3, 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.5508, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5509, i64 1, i64 0 }, { ptr, i64, i64 } %t333) + %t334 = load ptr, ptr %a1 + %t335 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t334, { ptr, i64, i64 } { ptr @.str.5510, i64 9, i64 0 }) + store { ptr, i64, i64 } %t335, ptr %a336 + %t337 = load ptr, ptr %a1 + %t338 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t337, { ptr, i64, i64 } { ptr @.str.5511, i64 9, i64 0 }) store { ptr, i64, i64 } %t338, ptr %a339 %t340 = load ptr, ptr %a1 - %t341 = load { ptr, i64, i64 }, ptr %a339 - %t342 = load { ptr, i64, i64 }, ptr %a305 - %t343 = load { ptr, i64, i64 }, ptr %a314 - call void @finch.gen.condBr(ptr %t340, { ptr, i64, i64 } %t341, { ptr, i64, i64 } %t342, { ptr, i64, i64 } %t343) - %t344 = load ptr, ptr %a1 - %t345 = load { ptr, i64, i64 }, ptr %a305 - call void @finch.gen.label(ptr %t344, { ptr, i64, i64 } %t345) + %t341 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t340, { ptr, i64, i64 } { ptr @.str.5512, i64 8, i64 0 }) + store { ptr, i64, i64 } %t341, ptr %a342 + %t343 = load ptr, ptr %a1 + %t344 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t343, { ptr, i64, i64 } { ptr @.str.5513, i64 9, i64 0 }) + store { ptr, i64, i64 } %t344, ptr %a345 %t346 = load ptr, ptr %a1 - %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.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.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 - store { ptr, i64, i64 } %t357, ptr %a360 + %t347 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t346, { ptr, i64, i64 } { ptr @.str.5514, i64 8, i64 0 }) + store { ptr, i64, i64 } %t347, ptr %a348 + %t349 = load ptr, ptr %a1 + %t350 = load { ptr, i64, i64 }, ptr %a336 + call void @finch.gen.br(ptr %t349, { ptr, i64, i64 } %t350) + %t351 = load ptr, ptr %a1 + %t352 = load { ptr, i64, i64 }, ptr %a336 + call void @finch.gen.label(ptr %t351, { ptr, i64, i64 } %t352) + %t353 = load ptr, ptr %a1 + %t354 = load { ptr, i64, i64 }, ptr %a331 + %t355 = call { ptr, i64, i64 } @finch.gen.load(ptr %t353, { ptr, i64, i64 } { ptr @.str.5515, i64 3, i64 0 }, { ptr, i64, i64 } %t354) + store { ptr, i64, i64 } %t355, ptr %a356 + %t357 = load ptr, ptr %a1 + %t358 = load { ptr, i64, i64 }, ptr %a356 + store { ptr, i64, i64 } { ptr @.str.5516, i64 13, i64 0 }, 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.5327, i64 6, i64 0 }, ptr %a365 + store { ptr, i64, i64 } { ptr @.str.5517, i64 2, 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 - store { ptr, i64, i64 } %t366, ptr %a369 + store { ptr, i64, i64 } %t362, ptr %a366 + call void @finch_str_drop(ptr %a366) + %t367 = load { ptr, i64, i64 }, ptr %a363 + %t368 = load { ptr, i64, i64 }, ptr %a324 store { ptr, i64, i64 } %t367, ptr %a370 - call void @finch_str_concat(ptr %a368, ptr %a369, ptr %a370) - %t371 = load { ptr, i64, i64 }, ptr %a368 - %t372 = call { ptr, i64, i64 } @finch.gen.op(ptr %t348, { ptr, i64, i64 } %t371) - %t373 = call { ptr, i64, i64 } @finch.gen.load(ptr %t346, { ptr, i64, i64 } %t347, { ptr, i64, i64 } %t372) - %t374 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t373, 0 - %t375 = load %S.ast.Type, ptr %a15 - store %S.ast.Type %t375, ptr %a376 - call void @finch.copy.S_ast_Type(ptr %a377, ptr %a376) - %t378 = load %S.ast.Type, ptr %a377 - %t379 = insertvalue %S.gen.Val %t374, %S.ast.Type %t378, 1 - store %S.gen.Val %t379, ptr %a380 + store { ptr, i64, i64 } %t368, ptr %a371 + call void @finch_str_concat(ptr %a369, ptr %a370, ptr %a371) + store { ptr, i64, i64 } %t367, ptr %a372 + call void @finch_str_drop(ptr %a372) + %t373 = load { ptr, i64, i64 }, ptr %a369 + %t374 = call { ptr, i64, i64 } @finch.gen.op(ptr %t357, { ptr, i64, i64 } %t373) + store { ptr, i64, i64 } %t373, ptr %a375 + call void @finch_str_drop(ptr %a375) + store { ptr, i64, i64 } %t374, ptr %a376 + %t377 = load ptr, ptr %a1 + %t378 = load { ptr, i64, i64 }, ptr %a376 + %t379 = load { ptr, i64, i64 }, ptr %a339 + %t380 = load { ptr, i64, i64 }, ptr %a348 + call void @finch.gen.condBr(ptr %t377, { ptr, i64, i64 } %t378, { ptr, i64, i64 } %t379, { ptr, i64, i64 } %t380) %t381 = load ptr, ptr %a1 - %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.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) - %t389 = load { ptr, i64, i64 }, ptr %a388 - store { ptr, i64, i64 } %t389, ptr %a390 - %t391 = load ptr, ptr %a1 - %t392 = load { ptr, i64, i64 }, ptr %a390 - %t393 = load { ptr, i64, i64 }, ptr %a308 - %t394 = load { ptr, i64, i64 }, ptr %a311 - call void @finch.gen.condBr(ptr %t391, { ptr, i64, i64 } %t392, { ptr, i64, i64 } %t393, { ptr, i64, i64 } %t394) - %t395 = load ptr, ptr %a1 - %t396 = load { ptr, i64, i64 }, ptr %a308 - call void @finch.gen.label(ptr %t395, { ptr, i64, i64 } %t396) - %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.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) - %t402 = load ptr, ptr %a1 - %t403 = load { ptr, i64, i64 }, ptr %a311 - call void @finch.gen.label(ptr %t402, { ptr, i64, i64 } %t403) - %t404 = load ptr, ptr %a1 - %t405 = load ptr, ptr %a1 - %t406 = load { ptr, i64, i64 }, ptr %a322 - store { ptr, i64, i64 } { ptr @.str.5331, i64 8, i64 0 }, ptr %a408 + %t382 = load { ptr, i64, i64 }, ptr %a339 + call void @finch.gen.label(ptr %t381, { ptr, i64, i64 } %t382) + %t383 = load ptr, ptr %a1 + %t384 = load { ptr, i64, i64 }, ptr %a19 + %t385 = load ptr, ptr %a1 + %t386 = load { ptr, i64, i64 }, ptr %a19 + store { ptr, i64, i64 } { ptr @.str.5518, i64 23, i64 0 }, 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.5519, i64 6, i64 0 }, ptr %a393 + call void @finch_str_concat(ptr %a391, ptr %a392, ptr %a393) + store { ptr, i64, i64 } %t390, ptr %a394 + call void @finch_str_drop(ptr %a394) + %t395 = load { ptr, i64, i64 }, ptr %a391 + %t396 = load { ptr, i64, i64 }, ptr %a328 + store { ptr, i64, i64 } %t395, ptr %a398 + store { ptr, i64, i64 } %t396, ptr %a399 + call void @finch_str_concat(ptr %a397, ptr %a398, ptr %a399) + store { ptr, i64, i64 } %t395, ptr %a400 + call void @finch_str_drop(ptr %a400) + %t401 = load { ptr, i64, i64 }, ptr %a397 + store { ptr, i64, i64 } %t401, ptr %a403 + store { ptr, i64, i64 } { ptr @.str.5520, i64 6, i64 0 }, ptr %a404 + call void @finch_str_concat(ptr %a402, ptr %a403, ptr %a404) + store { ptr, i64, i64 } %t401, ptr %a405 + call void @finch_str_drop(ptr %a405) + %t406 = load { ptr, i64, i64 }, ptr %a402 + %t407 = load { ptr, i64, i64 }, ptr %a356 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.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.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) - %t419 = load ptr, ptr %a1 - %t420 = load { ptr, i64, i64 }, ptr %a314 - 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.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.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 %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.5335, i64 3, i64 0 }) - %t436 = insertvalue %S.gen.Val %t434, %S.ast.Type %t435, 1 - ret %S.gen.Val %t436 -endif8029: - %t437 = load ptr, ptr %a1 - %t438 = load { ptr, i64, i64 }, ptr %a424 - 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.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.5338, i64 4, i64 0 }) - %t450 = insertvalue %S.gen.Val %t448, %S.ast.Type %t449, 1 - ret %S.gen.Val %t450 -endif8022: - %t451 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t451, ptr %a452 - 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 %then8030, label %endif8032 -then8030: + store { ptr, i64, i64 } %t407, ptr %a410 + call void @finch_str_concat(ptr %a408, ptr %a409, ptr %a410) + store { ptr, i64, i64 } %t406, ptr %a411 + call void @finch_str_drop(ptr %a411) + %t412 = load { ptr, i64, i64 }, ptr %a408 + %t413 = call { ptr, i64, i64 } @finch.gen.op(ptr %t385, { ptr, i64, i64 } %t412) + store { ptr, i64, i64 } %t412, ptr %a414 + call void @finch_str_drop(ptr %a414) + %t415 = call { ptr, i64, i64 } @finch.gen.load(ptr %t383, { ptr, i64, i64 } %t384, { ptr, i64, i64 } %t413) + store { ptr, i64, i64 } %t413, ptr %a416 + call void @finch_str_drop(ptr %a416) + %t417 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t415, 0 + %t418 = load %S.ast.Type, ptr %a15 + store %S.ast.Type %t418, ptr %a419 + call void @finch.copy.S_ast_Type(ptr %a420, ptr %a419) + %t421 = load %S.ast.Type, ptr %a420 + %t422 = insertvalue %S.gen.Val %t417, %S.ast.Type %t421, 1 + store %S.gen.Val %t422, ptr %a423 + %t424 = load ptr, ptr %a1 + %t425 = load %S.gen.Val, ptr %a423 + %t426 = getelementptr inbounds %S.gen.Val, ptr %a315, i32 0, i32 0 + %t427 = load { ptr, i64, i64 }, ptr %t426 + store { ptr, i64, i64 } %t427, ptr %a428 + call void @finch_str_copy(ptr %a429, ptr %a428) + %t430 = load { ptr, i64, i64 }, ptr %a429 + %t431 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t430, 0 + %t432 = getelementptr inbounds %S.gen.Val, ptr %a315, i32 0, i32 1 + %t433 = load %S.ast.Type, ptr %t432 + store %S.ast.Type %t433, ptr %a434 + call void @finch.copy.S_ast_Type(ptr %a435, ptr %a434) + %t436 = load %S.ast.Type, ptr %a435 + %t437 = insertvalue %S.gen.Val %t431, %S.ast.Type %t436, 1 + %t438 = load %S.ast.Node, ptr %a2 + %t439 = call %S.gen.Val @finch.gen.compare(ptr %t424, { ptr, i64, i64 } { ptr @.str.5521, i64 2, i64 0 }, %S.gen.Val %t425, %S.gen.Val %t437, %S.ast.Node %t438) + store %S.gen.Val %t437, ptr %a440 + call void @finch.drop.S_gen_Val(ptr %a440) + %t441 = extractvalue %S.gen.Val %t439, 0 + store { ptr, i64, i64 } %t441, ptr %a442 + call void @finch_str_copy(ptr %a443, ptr %a442) + %t444 = load { ptr, i64, i64 }, ptr %a443 + store %S.gen.Val %t439, ptr %a445 + call void @finch.drop.S_gen_Val(ptr %a445) + store { ptr, i64, i64 } %t444, ptr %a446 + %t447 = load ptr, ptr %a1 + %t448 = load { ptr, i64, i64 }, ptr %a446 + %t449 = load { ptr, i64, i64 }, ptr %a342 + %t450 = load { ptr, i64, i64 }, ptr %a345 + call void @finch.gen.condBr(ptr %t447, { ptr, i64, i64 } %t448, { ptr, i64, i64 } %t449, { ptr, i64, i64 } %t450) + %t451 = load ptr, ptr %a1 + %t452 = load { ptr, i64, i64 }, ptr %a342 + call void @finch.gen.label(ptr %t451, { ptr, i64, i64 } %t452) + %t453 = load ptr, ptr %a1 + %t454 = load { ptr, i64, i64 }, ptr %a356 + %t455 = load { ptr, i64, i64 }, ptr %a318 + call void @finch.gen.store(ptr %t453, { ptr, i64, i64 } { ptr @.str.5522, i64 3, i64 0 }, { ptr, i64, i64 } %t454, { ptr, i64, i64 } %t455) %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.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 %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.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 %range8036, label %inrange8037 -range8036: - call void @finch_panic_index(ptr @.str.5342, i64 4850, i64 1, i64 %t470) - unreachable -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.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 + %t457 = load { ptr, i64, i64 }, ptr %a348 + call void @finch.gen.br(ptr %t456, { ptr, i64, i64 } %t457) + %t458 = load ptr, ptr %a1 + %t459 = load { ptr, i64, i64 }, ptr %a345 + call void @finch.gen.label(ptr %t458, { ptr, i64, i64 } %t459) + %t460 = load ptr, ptr %a1 + %t461 = load ptr, ptr %a1 + %t462 = load { ptr, i64, i64 }, ptr %a356 + store { ptr, i64, i64 } { ptr @.str.5524, i64 8, i64 0 }, ptr %a464 + store { ptr, i64, i64 } %t462, ptr %a465 + call void @finch_str_concat(ptr %a463, ptr %a464, ptr %a465) + %t466 = load { ptr, i64, i64 }, ptr %a463 + store { ptr, i64, i64 } %t466, ptr %a468 + store { ptr, i64, i64 } { ptr @.str.5525, i64 3, i64 0 }, ptr %a469 + call void @finch_str_concat(ptr %a467, ptr %a468, ptr %a469) + store { ptr, i64, i64 } %t466, ptr %a470 + call void @finch_str_drop(ptr %a470) + %t471 = load { ptr, i64, i64 }, ptr %a467 + %t472 = call { ptr, i64, i64 } @finch.gen.op(ptr %t461, { ptr, i64, i64 } %t471) + store { ptr, i64, i64 } %t471, ptr %a473 + call void @finch_str_drop(ptr %a473) + %t474 = load { ptr, i64, i64 }, ptr %a331 + call void @finch.gen.store(ptr %t460, { ptr, i64, i64 } { ptr @.str.5523, i64 3, i64 0 }, { ptr, i64, i64 } %t472, { ptr, i64, i64 } %t474) + store { ptr, i64, i64 } %t472, ptr %a475 + call void @finch_str_drop(ptr %a475) + %t476 = load ptr, ptr %a1 + %t477 = load { ptr, i64, i64 }, ptr %a336 + call void @finch.gen.br(ptr %t476, { ptr, i64, i64 } %t477) %t478 = load ptr, ptr %a1 - %t479 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t478) - 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.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.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 - store { ptr, i64, i64 } %t490, ptr %a493 - store { ptr, i64, i64 } %t491, ptr %a494 - 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.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 + %t479 = load { ptr, i64, i64 }, ptr %a348 + call void @finch.gen.label(ptr %t478, { ptr, i64, i64 } %t479) + %t480 = load ptr, ptr %a1 + %t481 = load %S.gen.Val, ptr %a315 + call void @finch.gen.release(ptr %t480, %S.gen.Val %t481) + %t482 = load ptr, ptr %a1 + %t483 = load { ptr, i64, i64 }, ptr %a318 + %t484 = call { ptr, i64, i64 } @finch.gen.load(ptr %t482, { ptr, i64, i64 } { ptr @.str.5526, i64 3, i64 0 }, { ptr, i64, i64 } %t483) + store { ptr, i64, i64 } %t484, ptr %a485 + %t486 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t486, ptr %a487 + store { ptr, i64, i64 } { ptr @.str.5527, i64 4, i64 0 }, ptr %a488 + %t489 = call i32 @finch_str_eq(ptr %a487, ptr %a488) + %t490 = icmp ne i32 %t489, 0 + br i1 %t490, label %then8484, label %endif8486 +then8484: + %t491 = load { ptr, i64, i64 }, ptr %a485 + store { ptr, i64, i64 } %t491, ptr %a492 + call void @finch_str_copy(ptr %a493, ptr %a492) + %t494 = load { ptr, i64, i64 }, ptr %a493 + %t495 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t494, 0 + %t496 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5528, i64 3, i64 0 }) + %t497 = insertvalue %S.gen.Val %t495, %S.ast.Type %t496, 1 + call void @finch_str_drop(ptr %a485) + call void @finch_str_drop(ptr %a446) + call void @finch.drop.S_gen_Val(ptr %a423) + call void @finch_str_drop(ptr %a376) + call void @finch_str_drop(ptr %a356) + call void @finch_str_drop(ptr %a348) + call void @finch_str_drop(ptr %a345) + call void @finch_str_drop(ptr %a342) + call void @finch_str_drop(ptr %a339) + call void @finch_str_drop(ptr %a336) + call void @finch_str_drop(ptr %a331) + call void @finch_str_drop(ptr %a328) + call void @finch_str_drop(ptr %a324) + call void @finch_str_drop(ptr %a318) + call void @finch.drop.S_gen_Val(ptr %a315) + call void @finch_str_drop(ptr %a39) + call void @finch_str_drop(ptr %a25) + call void @finch_str_drop(ptr %a19) + call void @finch.drop.S_ast_Type(ptr %a15) + ret %S.gen.Val %t497 +endif8486: + %t498 = load ptr, ptr %a1 + %t499 = load { ptr, i64, i64 }, ptr %a485 + store { ptr, i64, i64 } { ptr @.str.5529, i64 13, i64 0 }, ptr %a501 store { ptr, i64, i64 } %t499, ptr %a502 - store { ptr, i64, i64 } %t500, ptr %a503 - 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.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.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.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 -endif8032: - %t516 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t516, ptr %a517 - 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 %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) - %t523 = load ptr, ptr %a1 - %t524 = load ptr, ptr %a1 - %t525 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t526 = load { ptr, i64, i64 }, ptr %t525 - %t527 = extractvalue { ptr, i64, i64 } %t526, 1 - %t528 = icmp uge i64 1, %t527 - br i1 %t528, label %range8041, label %inrange8042 -range8041: - call void @finch_panic_index(ptr @.str.5351, i64 4857, i64 1, i64 %t527) + call void @finch_str_concat(ptr %a500, ptr %a501, ptr %a502) + %t503 = load { ptr, i64, i64 }, ptr %a500 + store { ptr, i64, i64 } %t503, ptr %a505 + store { ptr, i64, i64 } { ptr @.str.5530, i64 3, i64 0 }, ptr %a506 + call void @finch_str_concat(ptr %a504, ptr %a505, ptr %a506) + store { ptr, i64, i64 } %t503, ptr %a507 + call void @finch_str_drop(ptr %a507) + %t508 = load { ptr, i64, i64 }, ptr %a504 + %t509 = call { ptr, i64, i64 } @finch.gen.op(ptr %t498, { ptr, i64, i64 } %t508) + store { ptr, i64, i64 } %t508, ptr %a510 + call void @finch_str_drop(ptr %a510) + %t511 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t509, 0 + %t512 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5531, i64 4, i64 0 }) + %t513 = insertvalue %S.gen.Val %t511, %S.ast.Type %t512, 1 + call void @finch_str_drop(ptr %a485) + call void @finch_str_drop(ptr %a446) + call void @finch.drop.S_gen_Val(ptr %a423) + call void @finch_str_drop(ptr %a376) + call void @finch_str_drop(ptr %a356) + call void @finch_str_drop(ptr %a348) + call void @finch_str_drop(ptr %a345) + call void @finch_str_drop(ptr %a342) + call void @finch_str_drop(ptr %a339) + call void @finch_str_drop(ptr %a336) + call void @finch_str_drop(ptr %a331) + call void @finch_str_drop(ptr %a328) + call void @finch_str_drop(ptr %a324) + call void @finch_str_drop(ptr %a318) + call void @finch.drop.S_gen_Val(ptr %a315) + call void @finch_str_drop(ptr %a39) + call void @finch_str_drop(ptr %a25) + call void @finch_str_drop(ptr %a19) + call void @finch.drop.S_ast_Type(ptr %a15) + ret %S.gen.Val %t513 +endif8479: + %t514 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t514, ptr %a515 + store { ptr, i64, i64 } { ptr @.str.5532, i64 4, i64 0 }, ptr %a516 + %t517 = call i32 @finch_str_eq(ptr %a515, ptr %a516) + %t518 = icmp ne i32 %t517, 0 + br i1 %t518, label %then8487, label %endif8489 +then8487: + %t519 = load ptr, ptr %a1 + %t520 = load %S.ast.Node, ptr %a2 + call void @finch.gen.need(ptr %t519, %S.ast.Node %t520, i64 1) + %t521 = getelementptr inbounds %S.ast.Type, ptr %a15, i32 0, i32 0 + %t522 = load { ptr, i64, i64 }, ptr %t521 + store { ptr, i64, i64 } %t522, ptr %a523 + store { ptr, i64, i64 } { ptr @.str.5533, i64 3, i64 0 }, ptr %a524 + %t525 = call i32 @finch_str_eq(ptr %a523, ptr %a524) + %t526 = icmp eq i32 %t525, 0 + br i1 %t526, label %then8490, label %endif8492 +then8490: + %t527 = load ptr, ptr %a1 + %t528 = load %S.ast.Node, ptr %a2 + call void @finch.gen.fail(ptr %t527, %S.ast.Node %t528, { ptr, i64, i64 } { ptr @.str.5534, i64 31, i64 0 }) + br label %endif8492 +endif8492: + %t529 = load ptr, ptr %a1 + %t530 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t531 = load { ptr, i64, i64 }, ptr %t530 + %t532 = extractvalue { ptr, i64, i64 } %t531, 1 + %t533 = icmp uge i64 1, %t532 + br i1 %t533, label %range8493, label %inrange8494 +range8493: + call void @finch_panic_index(ptr @.str.5535, i64 5242, i64 1, i64 %t532) unreachable -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.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 %range8043, label %inrange8044 -range8043: - call void @finch_panic_index(ptr @.str.5353, i64 4857, i64 1, i64 %t536) +inrange8494: + %t534 = extractvalue { ptr, i64, i64 } %t531, 0 + %t535 = getelementptr inbounds %S.ast.Node, ptr %t534, i64 1 + %t536 = load %S.ast.Node, ptr %t535 + %t537 = call %S.gen.Val @finch.gen.strArg(ptr %t529, %S.ast.Node %t536, { ptr, i64, i64 } { ptr @.str.5536, i64 13, i64 0 }) + store %S.gen.Val %t537, ptr %a538 + %t539 = load ptr, ptr %a1 + %t540 = load %S.gen.Val, ptr %a538 + %t541 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t539, %S.gen.Val %t540) + store { ptr, i64, i64 } %t541, ptr %a542 + %t543 = load ptr, ptr %a1 + %t544 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t543) + store { ptr, i64, i64 } %t544, ptr %a545 + %t546 = load ptr, ptr %a1 + %t547 = load { ptr, i64, i64 }, ptr %a545 + store { ptr, i64, i64 } { ptr @.str.5537, i64 30, i64 0 }, ptr %a549 + store { ptr, i64, i64 } %t547, ptr %a550 + call void @finch_str_concat(ptr %a548, ptr %a549, ptr %a550) + %t551 = load { ptr, i64, i64 }, ptr %a548 + store { ptr, i64, i64 } %t551, ptr %a553 + store { ptr, i64, i64 } { ptr @.str.5538, i64 6, i64 0 }, ptr %a554 + call void @finch_str_concat(ptr %a552, ptr %a553, ptr %a554) + store { ptr, i64, i64 } %t551, ptr %a555 + call void @finch_str_drop(ptr %a555) + %t556 = load { ptr, i64, i64 }, ptr %a552 + %t557 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t556, ptr %a559 + store { ptr, i64, i64 } %t557, ptr %a560 + call void @finch_str_concat(ptr %a558, ptr %a559, ptr %a560) + store { ptr, i64, i64 } %t556, ptr %a561 + call void @finch_str_drop(ptr %a561) + %t562 = load { ptr, i64, i64 }, ptr %a558 + store { ptr, i64, i64 } %t562, ptr %a564 + store { ptr, i64, i64 } { ptr @.str.5539, i64 6, i64 0 }, ptr %a565 + call void @finch_str_concat(ptr %a563, ptr %a564, ptr %a565) + store { ptr, i64, i64 } %t562, ptr %a566 + call void @finch_str_drop(ptr %a566) + %t567 = load { ptr, i64, i64 }, ptr %a563 + %t568 = load { ptr, i64, i64 }, ptr %a542 + store { ptr, i64, i64 } %t567, ptr %a570 + store { ptr, i64, i64 } %t568, ptr %a571 + call void @finch_str_concat(ptr %a569, ptr %a570, ptr %a571) + store { ptr, i64, i64 } %t567, ptr %a572 + call void @finch_str_drop(ptr %a572) + %t573 = load { ptr, i64, i64 }, ptr %a569 + store { ptr, i64, i64 } %t573, ptr %a575 + store { ptr, i64, i64 } { ptr @.str.5540, i64 1, i64 0 }, ptr %a576 + call void @finch_str_concat(ptr %a574, ptr %a575, ptr %a576) + store { ptr, i64, i64 } %t573, ptr %a577 + call void @finch_str_drop(ptr %a577) + %t578 = load { ptr, i64, i64 }, ptr %a574 + call void @finch.gen.emit(ptr %t546, { ptr, i64, i64 } %t578) + store { ptr, i64, i64 } %t578, ptr %a579 + call void @finch_str_drop(ptr %a579) + %t580 = load ptr, ptr %a1 + %t581 = load %S.gen.Val, ptr %a538 + call void @finch.gen.release(ptr %t580, %S.gen.Val %t581) + %t582 = load ptr, ptr %a1 + %t583 = load { ptr, i64, i64 }, ptr %a545 + %t584 = call { ptr, i64, i64 } @finch.gen.load(ptr %t582, { ptr, i64, i64 } { ptr @.str.5541, i64 17, i64 0 }, { 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.5542, i64 3, i64 0 }) + %t587 = insertvalue %S.gen.Val %t585, %S.ast.Type %t586, 1 + %t588 = insertvalue %S.gen.Val %t587, i1 true, 2 + call void @finch_str_drop(ptr %a545) + call void @finch_str_drop(ptr %a542) + call void @finch.drop.S_gen_Val(ptr %a538) + call void @finch_str_drop(ptr %a39) + call void @finch_str_drop(ptr %a25) + call void @finch_str_drop(ptr %a19) + call void @finch.drop.S_ast_Type(ptr %a15) + ret %S.gen.Val %t588 +endif8489: + %t589 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t589, ptr %a590 + store { ptr, i64, i64 } { ptr @.str.5543, 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 %then8495, label %endif8497 +then8495: + %t594 = load ptr, ptr %a1 + %t595 = load %S.ast.Node, ptr %a2 + call void @finch.gen.need(ptr %t594, %S.ast.Node %t595, i64 2) + %t596 = load ptr, ptr %a1 + %t597 = load ptr, ptr %a1 + %t598 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t599 = load { ptr, i64, i64 }, ptr %t598 + %t600 = extractvalue { ptr, i64, i64 } %t599, 1 + %t601 = icmp uge i64 1, %t600 + br i1 %t601, label %range8498, label %inrange8499 +range8498: + call void @finch_panic_index(ptr @.str.5544, i64 5251, i64 1, i64 %t600) unreachable -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.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) - %t545 = load { ptr, i64, i64 }, ptr %a544 - store { ptr, i64, i64 } %t545, ptr %a546 - %t547 = load ptr, ptr %a1 - %t548 = load ptr, ptr %a1 - %t549 = load ptr, ptr %a1 - %t550 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t551 = load { ptr, i64, i64 }, ptr %t550 - %t552 = extractvalue { ptr, i64, i64 } %t551, 1 - %t553 = icmp uge i64 2, %t552 - br i1 %t553, label %range8045, label %inrange8046 -range8045: - call void @finch_panic_index(ptr @.str.5355, i64 4858, i64 2, i64 %t552) +inrange8499: + %t602 = extractvalue { ptr, i64, i64 } %t599, 0 + %t603 = getelementptr inbounds %S.ast.Node, ptr %t602, i64 1 + %t604 = load %S.ast.Node, ptr %t603 + %t605 = call %S.gen.Val @finch.gen.expr(ptr %t597, %S.ast.Node %t604) + %t606 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5545, i64 3, i64 0 }) + %t607 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t608 = load { ptr, i64, i64 }, ptr %t607 + %t609 = extractvalue { ptr, i64, i64 } %t608, 1 + %t610 = icmp uge i64 1, %t609 + br i1 %t610, label %range8500, label %inrange8501 +range8500: + call void @finch_panic_index(ptr @.str.5546, i64 5251, i64 1, i64 %t609) unreachable -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 - %t557 = load %S.ast.Type, ptr %a15 - %t558 = call %S.gen.Val @finch.gen.exprWant(ptr %t549, %S.ast.Node %t556, %S.ast.Type %t557) - %t559 = load %S.ast.Type, ptr %a15 - %t560 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t561 = load { ptr, i64, i64 }, ptr %t560 - %t562 = extractvalue { ptr, i64, i64 } %t561, 1 - %t563 = icmp uge i64 2, %t562 - br i1 %t563, label %range8047, label %inrange8048 -range8047: - call void @finch_panic_index(ptr @.str.5356, i64 4858, i64 2, i64 %t562) +inrange8501: + %t611 = extractvalue { ptr, i64, i64 } %t608, 0 + %t612 = getelementptr inbounds %S.ast.Node, ptr %t611, i64 1 + %t613 = load %S.ast.Node, ptr %t612 + %t614 = call %S.gen.Val @finch.gen.coerce(ptr %t596, %S.gen.Val %t605, %S.ast.Type %t606, %S.ast.Node %t613, { ptr, i64, i64 } { ptr @.str.5547, i64 12, i64 0 }) + store %S.gen.Val %t605, ptr %a615 + call void @finch.drop.S_gen_Val(ptr %a615) + store %S.ast.Type %t606, ptr %a616 + call void @finch.drop.S_ast_Type(ptr %a616) + %t617 = extractvalue %S.gen.Val %t614, 0 + store { ptr, i64, i64 } %t617, ptr %a618 + call void @finch_str_copy(ptr %a619, ptr %a618) + %t620 = load { ptr, i64, i64 }, ptr %a619 + store %S.gen.Val %t614, ptr %a621 + call void @finch.drop.S_gen_Val(ptr %a621) + store { ptr, i64, i64 } %t620, ptr %a622 + %t623 = load ptr, ptr %a1 + %t624 = load ptr, ptr %a1 + %t625 = load ptr, ptr %a1 + %t626 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t627 = load { ptr, i64, i64 }, ptr %t626 + %t628 = extractvalue { ptr, i64, i64 } %t627, 1 + %t629 = icmp uge i64 2, %t628 + br i1 %t629, label %range8502, label %inrange8503 +range8502: + call void @finch_panic_index(ptr @.str.5548, i64 5252, i64 2, i64 %t628) unreachable -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.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 %panic8049, label %ok8050 -panic8049: - call void @finch_panic(ptr @.str.5358, i64 4859, ptr @.str.5359) +inrange8503: + %t630 = extractvalue { ptr, i64, i64 } %t627, 0 + %t631 = getelementptr inbounds %S.ast.Node, ptr %t630, i64 2 + %t632 = load %S.ast.Node, ptr %t631 + %t633 = load %S.ast.Type, ptr %a15 + %t634 = call %S.gen.Val @finch.gen.exprWant(ptr %t625, %S.ast.Node %t632, %S.ast.Type %t633) + %t635 = load %S.ast.Type, ptr %a15 + %t636 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t637 = load { ptr, i64, i64 }, ptr %t636 + %t638 = extractvalue { ptr, i64, i64 } %t637, 1 + %t639 = icmp uge i64 2, %t638 + br i1 %t639, label %range8504, label %inrange8505 +range8504: + call void @finch_panic_index(ptr @.str.5549, i64 5252, i64 2, i64 %t638) unreachable -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 %range8051, label %inrange8052 -range8051: - call void @finch_panic_index(ptr @.str.5360, i64 4859, i64 %t575, i64 %t577) +inrange8505: + %t640 = extractvalue { ptr, i64, i64 } %t637, 0 + %t641 = getelementptr inbounds %S.ast.Node, ptr %t640, i64 2 + %t642 = load %S.ast.Node, ptr %t641 + %t643 = call %S.gen.Val @finch.gen.coerce(ptr %t624, %S.gen.Val %t634, %S.ast.Type %t635, %S.ast.Node %t642, { ptr, i64, i64 } { ptr @.str.5550, i64 11, i64 0 }) + store %S.gen.Val %t634, ptr %a644 + call void @finch.drop.S_gen_Val(ptr %a644) + %t645 = call { ptr, i64, i64 } @finch.gen.own(ptr %t623, %S.gen.Val %t643) + store %S.gen.Val %t643, ptr %a646 + call void @finch.drop.S_gen_Val(ptr %a646) + store { ptr, i64, i64 } %t645, ptr %a647 + %t648 = load ptr, ptr %a1 + %t649 = load ptr, ptr %a1 + %t650 = icmp eq ptr %t649, null + br i1 %t650, label %panic8506, label %ok8507 +panic8506: + call void @finch_panic(ptr @.str.5551, i64 5253, ptr @.str.5552) unreachable -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 - %t582 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t570, { ptr, i64, i64 } %t581) - 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.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.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 - store { ptr, i64, i64 } %t593, 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.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 - %t604 = load %S.ast.Type, ptr %a15 - %t605 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t603, %S.ast.Type %t604) - store { ptr, i64, i64 } %t602, ptr %a607 - store { ptr, i64, i64 } %t605, ptr %a608 - 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.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 - store { ptr, i64, i64 } %t613, 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.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 - %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 } %t622, 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 - store { ptr, i64, i64 } %t630, ptr %a632 - 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.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.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.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 - 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 - store { ptr, i64, i64 } %t656, ptr %a658 - 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 - store { ptr, i64, i64 } %t660, 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 - %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.5371, i64 4, i64 0 }) - %t668 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t667, 1 - ret %S.gen.Val %t668 -endif8040: - %t669 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t669, ptr %a670 - 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 %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) - %t676 = load ptr, ptr %a1 - %t677 = load ptr, ptr %a1 - %t678 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t679 = load { ptr, i64, i64 }, ptr %t678 - %t680 = extractvalue { ptr, i64, i64 } %t679, 1 - %t681 = icmp uge i64 1, %t680 - br i1 %t681, label %range8056, label %inrange8057 -range8056: - call void @finch_panic_index(ptr @.str.5373, i64 4867, i64 1, i64 %t680) +ok8507: + %t651 = getelementptr inbounds %S.gen.Gen, ptr %t649, i32 0, i32 1 + %t652 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 + %t653 = load i64, ptr %t652 + %t654 = load { ptr, i64, i64 }, ptr %t651 + %t655 = extractvalue { ptr, i64, i64 } %t654, 1 + %t656 = icmp uge i64 %t653, %t655 + br i1 %t656, label %range8508, label %inrange8509 +range8508: + call void @finch_panic_index(ptr @.str.5553, i64 5253, i64 %t653, i64 %t655) unreachable -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.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 %range8058, label %inrange8059 -range8058: - call void @finch_panic_index(ptr @.str.5375, i64 4867, i64 1, i64 %t689) +inrange8509: + %t657 = extractvalue { ptr, i64, i64 } %t654, 0 + %t658 = getelementptr inbounds { ptr, i64, i64 }, ptr %t657, i64 %t653 + %t659 = load { ptr, i64, i64 }, ptr %t658 + %t660 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t648, { ptr, i64, i64 } %t659) + store { ptr, i64, i64 } %t660, ptr %a661 + %t662 = load ptr, ptr %a1 + %t663 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } { ptr @.str.5554, i64 36, i64 0 }, ptr %a665 + store { ptr, i64, i64 } %t663, ptr %a666 + call void @finch_str_concat(ptr %a664, ptr %a665, ptr %a666) + %t667 = load { ptr, i64, i64 }, ptr %a664 + store { ptr, i64, i64 } %t667, ptr %a669 + store { ptr, i64, i64 } { ptr @.str.5555, i64 6, i64 0 }, ptr %a670 + call void @finch_str_concat(ptr %a668, ptr %a669, ptr %a670) + store { ptr, i64, i64 } %t667, ptr %a671 + call void @finch_str_drop(ptr %a671) + %t672 = load { ptr, i64, i64 }, ptr %a668 + %t673 = load { ptr, i64, i64 }, ptr %a622 + store { ptr, i64, i64 } %t672, ptr %a675 + store { ptr, i64, i64 } %t673, ptr %a676 + call void @finch_str_concat(ptr %a674, ptr %a675, ptr %a676) + store { ptr, i64, i64 } %t672, ptr %a677 + call void @finch_str_drop(ptr %a677) + %t678 = load { ptr, i64, i64 }, ptr %a674 + store { ptr, i64, i64 } %t678, ptr %a680 + store { ptr, i64, i64 } { ptr @.str.5556, i64 6, i64 0 }, ptr %a681 + call void @finch_str_concat(ptr %a679, ptr %a680, ptr %a681) + store { ptr, i64, i64 } %t678, ptr %a682 + call void @finch_str_drop(ptr %a682) + %t683 = load { ptr, i64, i64 }, ptr %a679 + %t684 = load ptr, ptr %a1 + %t685 = load %S.ast.Type, ptr %a15 + %t686 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t684, %S.ast.Type %t685) + store { ptr, i64, i64 } %t683, ptr %a688 + store { ptr, i64, i64 } %t686, ptr %a689 + call void @finch_str_concat(ptr %a687, ptr %a688, ptr %a689) + store { ptr, i64, i64 } %t683, ptr %a690 + call void @finch_str_drop(ptr %a690) + store { ptr, i64, i64 } %t686, ptr %a691 + call void @finch_str_drop(ptr %a691) + %t692 = load { ptr, i64, i64 }, ptr %a687 + store { ptr, i64, i64 } %t692, ptr %a694 + store { ptr, i64, i64 } { ptr @.str.5557, i64 6, i64 0 }, ptr %a695 + call void @finch_str_concat(ptr %a693, ptr %a694, ptr %a695) + store { ptr, i64, i64 } %t692, ptr %a696 + call void @finch_str_drop(ptr %a696) + %t697 = load { ptr, i64, i64 }, ptr %a693 + %t698 = load { ptr, i64, i64 }, ptr %a661 + 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) + store { ptr, i64, i64 } %t697, ptr %a702 + call void @finch_str_drop(ptr %a702) + %t703 = load { ptr, i64, i64 }, ptr %a699 + store { ptr, i64, i64 } %t703, ptr %a705 + store { ptr, i64, i64 } { ptr @.str.5558, i64 6, i64 0 }, ptr %a706 + call void @finch_str_concat(ptr %a704, ptr %a705, ptr %a706) + store { ptr, i64, i64 } %t703, ptr %a707 + call void @finch_str_drop(ptr %a707) + %t708 = load { ptr, i64, i64 }, ptr %a704 + %t709 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 + %t710 = load i64, ptr %t709 + call void @finch_str_from_int(ptr %a711, i64 %t710) + %t712 = load { ptr, i64, i64 }, ptr %a711 + store { ptr, i64, i64 } %t708, ptr %a714 + store { ptr, i64, i64 } %t712, ptr %a715 + call void @finch_str_concat(ptr %a713, ptr %a714, ptr %a715) + store { ptr, i64, i64 } %t708, ptr %a716 + call void @finch_str_drop(ptr %a716) + store { ptr, i64, i64 } %t712, ptr %a717 + call void @finch_str_drop(ptr %a717) + %t718 = load { ptr, i64, i64 }, ptr %a713 + store { ptr, i64, i64 } %t718, ptr %a720 + store { ptr, i64, i64 } { ptr @.str.5559, i64 1, i64 0 }, ptr %a721 + call void @finch_str_concat(ptr %a719, ptr %a720, ptr %a721) + store { ptr, i64, i64 } %t718, ptr %a722 + call void @finch_str_drop(ptr %a722) + %t723 = load { ptr, i64, i64 }, ptr %a719 + call void @finch.gen.emit(ptr %t662, { ptr, i64, i64 } %t723) + store { ptr, i64, i64 } %t723, ptr %a724 + call void @finch_str_drop(ptr %a724) + %t725 = load ptr, ptr %a1 + %t726 = load { ptr, i64, i64 }, ptr %a3 + %t727 = call { ptr, i64, i64 } @finch.gen.load(ptr %t725, { ptr, i64, i64 } { ptr @.str.5560, i64 3, i64 0 }, { ptr, i64, i64 } %t726) + store { ptr, i64, i64 } %t727, ptr %a728 + %t729 = load ptr, ptr %a1 + %t730 = load { ptr, i64, i64 }, ptr %a19 + %t731 = load { ptr, i64, i64 }, ptr %a647 + %t732 = load ptr, ptr %a1 + %t733 = load { ptr, i64, i64 }, ptr %a19 + store { ptr, i64, i64 } { ptr @.str.5561, i64 23, i64 0 }, 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 + store { ptr, i64, i64 } %t737, ptr %a739 + store { ptr, i64, i64 } { ptr @.str.5562, i64 6, i64 0 }, ptr %a740 + call void @finch_str_concat(ptr %a738, ptr %a739, ptr %a740) + store { ptr, i64, i64 } %t737, ptr %a741 + call void @finch_str_drop(ptr %a741) + %t742 = load { ptr, i64, i64 }, ptr %a738 + %t743 = load { ptr, i64, i64 }, ptr %a728 + 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) + store { ptr, i64, i64 } %t742, ptr %a747 + call void @finch_str_drop(ptr %a747) + %t748 = load { ptr, i64, i64 }, ptr %a744 + store { ptr, i64, i64 } %t748, ptr %a750 + store { ptr, i64, i64 } { ptr @.str.5563, i64 6, i64 0 }, ptr %a751 + call void @finch_str_concat(ptr %a749, ptr %a750, ptr %a751) + store { ptr, i64, i64 } %t748, ptr %a752 + call void @finch_str_drop(ptr %a752) + %t753 = load { ptr, i64, i64 }, ptr %a749 + %t754 = load { ptr, i64, i64 }, ptr %a622 + store { ptr, i64, i64 } %t753, ptr %a756 + store { ptr, i64, i64 } %t754, ptr %a757 + call void @finch_str_concat(ptr %a755, ptr %a756, ptr %a757) + store { ptr, i64, i64 } %t753, ptr %a758 + call void @finch_str_drop(ptr %a758) + %t759 = load { ptr, i64, i64 }, ptr %a755 + %t760 = call { ptr, i64, i64 } @finch.gen.op(ptr %t732, { ptr, i64, i64 } %t759) + store { ptr, i64, i64 } %t759, ptr %a761 + call void @finch_str_drop(ptr %a761) + call void @finch.gen.store(ptr %t729, { ptr, i64, i64 } %t730, { ptr, i64, i64 } %t731, { ptr, i64, i64 } %t760) + store { ptr, i64, i64 } %t760, ptr %a762 + call void @finch_str_drop(ptr %a762) + %t763 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5564, i64 4, i64 0 }) + %t764 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t763, 1 + call void @finch_str_drop(ptr %a728) + call void @finch_str_drop(ptr %a661) + call void @finch_str_drop(ptr %a647) + call void @finch_str_drop(ptr %a622) + call void @finch_str_drop(ptr %a39) + call void @finch_str_drop(ptr %a25) + call void @finch_str_drop(ptr %a19) + call void @finch.drop.S_ast_Type(ptr %a15) + ret %S.gen.Val %t764 +endif8497: + %t765 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t765, ptr %a766 + store { ptr, i64, i64 } { ptr @.str.5565, i64 6, i64 0 }, ptr %a767 + %t768 = call i32 @finch_str_eq(ptr %a766, ptr %a767) + %t769 = icmp ne i32 %t768, 0 + br i1 %t769, label %then8510, label %endif8512 +then8510: + %t770 = load ptr, ptr %a1 + %t771 = load %S.ast.Node, ptr %a2 + call void @finch.gen.need(ptr %t770, %S.ast.Node %t771, i64 1) + %t772 = load ptr, ptr %a1 + %t773 = load ptr, ptr %a1 + %t774 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t775 = load { ptr, i64, i64 }, ptr %t774 + %t776 = extractvalue { ptr, i64, i64 } %t775, 1 + %t777 = icmp uge i64 1, %t776 + br i1 %t777, label %range8513, label %inrange8514 +range8513: + call void @finch_panic_index(ptr @.str.5566, i64 5261, i64 1, i64 %t776) unreachable -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.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) - %t698 = load { ptr, i64, i64 }, ptr %a697 - store { ptr, i64, i64 } %t698, ptr %a699 - %t700 = load ptr, ptr %a1 - %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.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.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.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.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 - store { ptr, i64, i64 } %t721, ptr %a724 - store { ptr, i64, i64 } %t722, ptr %a725 - 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.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 - store { ptr, i64, i64 } %t730, ptr %a733 - store { ptr, i64, i64 } %t731, ptr %a734 - call void @finch_str_concat(ptr %a732, ptr %a733, ptr %a734) - %t735 = load { ptr, i64, i64 }, ptr %a732 - %t736 = call { ptr, i64, i64 } @finch.gen.op(ptr %t712, { ptr, i64, i64 } %t735) - %t737 = call { ptr, i64, i64 } @finch.gen.load(ptr %t710, { ptr, i64, i64 } %t711, { ptr, i64, i64 } %t736) - 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.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.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 - store { ptr, i64, i64 } %t748, ptr %a751 - store { ptr, i64, i64 } %t749, ptr %a752 - 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.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 - %t759 = load %S.ast.Type, ptr %a15 - %t760 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t758, %S.ast.Type %t759) - store { ptr, i64, i64 } %t757, 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.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) - %t769 = load { ptr, i64, i64 }, ptr %a738 - store { ptr, i64, i64 } %t769, ptr %a770 - call void @finch_str_copy(ptr %a771, ptr %a770) - %t772 = load { ptr, i64, i64 }, ptr %a771 - %t773 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t772, 0 - %t774 = load %S.ast.Type, ptr %a15 - store %S.ast.Type %t774, ptr %a775 - call void @finch.copy.S_ast_Type(ptr %a776, ptr %a775) - %t777 = load %S.ast.Type, ptr %a776 - %t778 = insertvalue %S.gen.Val %t773, %S.ast.Type %t777, 1 - %t779 = load ptr, ptr %a1 - %t780 = load %S.ast.Type, ptr %a15 - %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 -endif8055: - %t783 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t783, ptr %a784 - 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 %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) - %t790 = load ptr, ptr %a1 - %t791 = load ptr, ptr %a1 - %t792 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t793 = load { ptr, i64, i64 }, ptr %t792 - %t794 = extractvalue { ptr, i64, i64 } %t793, 1 - %t795 = icmp uge i64 1, %t794 - br i1 %t795, label %range8063, label %inrange8064 -range8063: - call void @finch_panic_index(ptr @.str.5387, i64 4876, i64 1, i64 %t794) +inrange8514: + %t778 = extractvalue { ptr, i64, i64 } %t775, 0 + %t779 = getelementptr inbounds %S.ast.Node, ptr %t778, i64 1 + %t780 = load %S.ast.Node, ptr %t779 + %t781 = call %S.gen.Val @finch.gen.expr(ptr %t773, %S.ast.Node %t780) + %t782 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5567, i64 3, i64 0 }) + %t783 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t784 = load { ptr, i64, i64 }, ptr %t783 + %t785 = extractvalue { ptr, i64, i64 } %t784, 1 + %t786 = icmp uge i64 1, %t785 + br i1 %t786, label %range8515, label %inrange8516 +range8515: + call void @finch_panic_index(ptr @.str.5568, i64 5261, i64 1, i64 %t785) unreachable -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.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 %range8065, label %inrange8066 -range8065: - call void @finch_panic_index(ptr @.str.5389, i64 4876, i64 1, i64 %t803) - unreachable -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.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) - %t812 = load { ptr, i64, i64 }, ptr %a811 - 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.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.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 +inrange8516: + %t787 = extractvalue { ptr, i64, i64 } %t784, 0 + %t788 = getelementptr inbounds %S.ast.Node, ptr %t787, i64 1 + %t789 = load %S.ast.Node, ptr %t788 + %t790 = call %S.gen.Val @finch.gen.coerce(ptr %t772, %S.gen.Val %t781, %S.ast.Type %t782, %S.ast.Node %t789, { ptr, i64, i64 } { ptr @.str.5569, i64 12, i64 0 }) + store %S.gen.Val %t781, ptr %a791 + call void @finch.drop.S_gen_Val(ptr %a791) + store %S.ast.Type %t782, ptr %a792 + call void @finch.drop.S_ast_Type(ptr %a792) + %t793 = extractvalue %S.gen.Val %t790, 0 + store { ptr, i64, i64 } %t793, ptr %a794 + call void @finch_str_copy(ptr %a795, ptr %a794) + %t796 = load { ptr, i64, i64 }, ptr %a795 + store %S.gen.Val %t790, ptr %a797 + call void @finch.drop.S_gen_Val(ptr %a797) + store { ptr, i64, i64 } %t796, ptr %a798 + %t799 = load ptr, ptr %a1 + %t800 = load { ptr, i64, i64 }, ptr %a798 + %t801 = load ptr, ptr %a1 + %t802 = load { ptr, i64, i64 }, ptr %a39 + %t803 = call { ptr, i64, i64 } @finch.gen.load(ptr %t801, { ptr, i64, i64 } { ptr @.str.5570, i64 3, i64 0 }, { ptr, i64, i64 } %t802) + %t804 = load %S.ast.Node, ptr %a2 + call void @finch.gen.boundsCheck(ptr %t799, { ptr, i64, i64 } %t800, { ptr, i64, i64 } %t803, %S.ast.Node %t804) + store { ptr, i64, i64 } %t803, ptr %a805 + call void @finch_str_drop(ptr %a805) + %t806 = load ptr, ptr %a1 + %t807 = load { ptr, i64, i64 }, ptr %a3 + %t808 = call { ptr, i64, i64 } @finch.gen.load(ptr %t806, { ptr, i64, i64 } { ptr @.str.5571, i64 3, i64 0 }, { ptr, i64, i64 } %t807) + store { ptr, i64, i64 } %t808, ptr %a809 + %t810 = load ptr, ptr %a1 + %t811 = load { ptr, i64, i64 }, ptr %a19 + %t812 = load ptr, ptr %a1 + %t813 = load { ptr, i64, i64 }, ptr %a19 + store { ptr, i64, i64 } { ptr @.str.5572, i64 23, i64 0 }, ptr %a815 + store { ptr, i64, i64 } %t813, ptr %a816 + call void @finch_str_concat(ptr %a814, ptr %a815, ptr %a816) + %t817 = load { ptr, i64, i64 }, ptr %a814 + store { ptr, i64, i64 } %t817, ptr %a819 + store { ptr, i64, i64 } { ptr @.str.5573, i64 6, i64 0 }, ptr %a820 + call void @finch_str_concat(ptr %a818, ptr %a819, ptr %a820) + store { ptr, i64, i64 } %t817, ptr %a821 + call void @finch_str_drop(ptr %a821) + %t822 = load { ptr, i64, i64 }, ptr %a818 + %t823 = load { ptr, i64, i64 }, ptr %a809 + store { ptr, i64, i64 } %t822, ptr %a825 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 + call void @finch_str_concat(ptr %a824, ptr %a825, ptr %a826) + store { ptr, i64, i64 } %t822, ptr %a827 + call void @finch_str_drop(ptr %a827) + %t828 = load { ptr, i64, i64 }, ptr %a824 store { ptr, i64, i64 } %t828, ptr %a830 - store { ptr, i64, i64 } { ptr @.str.5393, i64 6, i64 0 }, ptr %a831 + store { ptr, i64, i64 } { ptr @.str.5574, 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 - %t834 = load %S.ast.Type, ptr %a15 - %t835 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t833, %S.ast.Type %t834) - store { ptr, i64, i64 } %t832, 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 } %t828, ptr %a832 + call void @finch_str_drop(ptr %a832) + %t833 = load { ptr, i64, i64 }, ptr %a829 + %t834 = load { ptr, i64, i64 }, ptr %a798 + store { ptr, i64, i64 } %t833, ptr %a836 + store { ptr, i64, i64 } %t834, ptr %a837 + call void @finch_str_concat(ptr %a835, ptr %a836, ptr %a837) + store { ptr, i64, i64 } %t833, ptr %a838 + call void @finch_str_drop(ptr %a838) + %t839 = load { ptr, i64, i64 }, ptr %a835 + %t840 = call { ptr, i64, i64 } @finch.gen.op(ptr %t812, { ptr, i64, i64 } %t839) store { ptr, i64, i64 } %t839, ptr %a841 - 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.5395, i64 4, i64 0 }) - %t845 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t844, 1 - ret %S.gen.Val %t845 -endif8062: - %t846 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t846, ptr %a847 - 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 %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.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.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.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.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) - store { ptr, i64, i64 } %t871, ptr %a872 - %t873 = load ptr, ptr %a1 - %t874 = load { ptr, i64, i64 }, ptr %a872 - %t875 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t873, { ptr, i64, i64 } %t874) - 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.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.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 - store { ptr, i64, i64 } %t886, ptr %a889 - store { ptr, i64, i64 } %t887, ptr %a890 - 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.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 %range8070, label %inrange8071 -range8070: - call void @finch_panic_index(ptr @.str.5404, i64 4886, i64 3, i64 %t897) + call void @finch_str_drop(ptr %a841) + %t842 = call { ptr, i64, i64 } @finch.gen.load(ptr %t810, { ptr, i64, i64 } %t811, { ptr, i64, i64 } %t840) + store { ptr, i64, i64 } %t840, ptr %a843 + call void @finch_str_drop(ptr %a843) + store { ptr, i64, i64 } %t842, ptr %a844 + %t845 = load ptr, ptr %a1 + %t846 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } { ptr @.str.5575, i64 36, i64 0 }, 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 + store { ptr, i64, i64 } %t850, ptr %a852 + store { ptr, i64, i64 } { ptr @.str.5576, i64 6, i64 0 }, ptr %a853 + call void @finch_str_concat(ptr %a851, ptr %a852, ptr %a853) + store { ptr, i64, i64 } %t850, ptr %a854 + call void @finch_str_drop(ptr %a854) + %t855 = load { ptr, i64, i64 }, ptr %a851 + %t856 = load { ptr, i64, i64 }, ptr %a798 + store { ptr, i64, i64 } %t855, ptr %a858 + store { ptr, i64, i64 } %t856, ptr %a859 + call void @finch_str_concat(ptr %a857, ptr %a858, ptr %a859) + store { ptr, i64, i64 } %t855, ptr %a860 + call void @finch_str_drop(ptr %a860) + %t861 = load { ptr, i64, i64 }, ptr %a857 + store { ptr, i64, i64 } %t861, ptr %a863 + store { ptr, i64, i64 } { ptr @.str.5577, i64 6, i64 0 }, ptr %a864 + call void @finch_str_concat(ptr %a862, ptr %a863, ptr %a864) + store { ptr, i64, i64 } %t861, ptr %a865 + call void @finch_str_drop(ptr %a865) + %t866 = load { ptr, i64, i64 }, ptr %a862 + %t867 = load ptr, ptr %a1 + %t868 = load %S.ast.Type, ptr %a15 + %t869 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t867, %S.ast.Type %t868) + store { ptr, i64, i64 } %t866, ptr %a871 + store { ptr, i64, i64 } %t869, ptr %a872 + call void @finch_str_concat(ptr %a870, ptr %a871, ptr %a872) + store { ptr, i64, i64 } %t866, ptr %a873 + call void @finch_str_drop(ptr %a873) + store { ptr, i64, i64 } %t869, ptr %a874 + call void @finch_str_drop(ptr %a874) + %t875 = load { ptr, i64, i64 }, ptr %a870 + store { ptr, i64, i64 } %t875, ptr %a877 + store { ptr, i64, i64 } { ptr @.str.5578, i64 1, i64 0 }, ptr %a878 + call void @finch_str_concat(ptr %a876, ptr %a877, ptr %a878) + store { ptr, i64, i64 } %t875, ptr %a879 + call void @finch_str_drop(ptr %a879) + %t880 = load { ptr, i64, i64 }, ptr %a876 + call void @finch.gen.emit(ptr %t845, { ptr, i64, i64 } %t880) + store { ptr, i64, i64 } %t880, ptr %a881 + call void @finch_str_drop(ptr %a881) + %t882 = load { ptr, i64, i64 }, ptr %a844 + store { ptr, i64, i64 } %t882, ptr %a883 + call void @finch_str_copy(ptr %a884, ptr %a883) + %t885 = load { ptr, i64, i64 }, ptr %a884 + %t886 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t885, 0 + %t887 = load %S.ast.Type, ptr %a15 + store %S.ast.Type %t887, ptr %a888 + call void @finch.copy.S_ast_Type(ptr %a889, ptr %a888) + %t890 = load %S.ast.Type, ptr %a889 + %t891 = insertvalue %S.gen.Val %t886, %S.ast.Type %t890, 1 + %t892 = load ptr, ptr %a1 + %t893 = load %S.ast.Type, ptr %a15 + %t894 = call i1 @finch.gen.owning(ptr %t892, %S.ast.Type %t893) + %t895 = insertvalue %S.gen.Val %t891, i1 %t894, 2 + call void @finch_str_drop(ptr %a844) + call void @finch_str_drop(ptr %a809) + call void @finch_str_drop(ptr %a798) + call void @finch_str_drop(ptr %a39) + call void @finch_str_drop(ptr %a25) + call void @finch_str_drop(ptr %a19) + call void @finch.drop.S_ast_Type(ptr %a15) + ret %S.gen.Val %t895 +endif8512: + %t896 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t896, ptr %a897 + store { ptr, i64, i64 } { ptr @.str.5579, i64 6, i64 0 }, ptr %a898 + %t899 = call i32 @finch_str_eq(ptr %a897, ptr %a898) + %t900 = icmp ne i32 %t899, 0 + br i1 %t900, label %then8517, label %endif8519 +then8517: + %t901 = load ptr, ptr %a1 + %t902 = load %S.ast.Node, ptr %a2 + call void @finch.gen.need(ptr %t901, %S.ast.Node %t902, i64 1) + %t903 = load ptr, ptr %a1 + %t904 = load ptr, ptr %a1 + %t905 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t906 = load { ptr, i64, i64 }, ptr %t905 + %t907 = extractvalue { ptr, i64, i64 } %t906, 1 + %t908 = icmp uge i64 1, %t907 + br i1 %t908, label %range8520, label %inrange8521 +range8520: + call void @finch_panic_index(ptr @.str.5580, i64 5270, i64 1, i64 %t907) unreachable -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 - store { ptr, i64, i64 } %t895, ptr %a903 - store { ptr, i64, i64 } %t901, ptr %a904 - call void @finch_str_concat(ptr %a902, ptr %a903, ptr %a904) - %t905 = load { ptr, i64, i64 }, ptr %a902 - %t906 = call { ptr, i64, i64 } @finch.gen.op(ptr %t877, { ptr, i64, i64 } %t905) - store { ptr, i64, i64 } %t906, ptr %a907 - %t908 = load ptr, ptr %a1 - %t909 = load ptr, ptr %a1 - %t910 = load { ptr, i64, i64 }, ptr %a856 - 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.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.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.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 %range8072, label %inrange8073 -range8072: - call void @finch_panic_index(ptr @.str.5409, i64 4887, i64 3, i64 %t929) +inrange8521: + %t909 = extractvalue { ptr, i64, i64 } %t906, 0 + %t910 = getelementptr inbounds %S.ast.Node, ptr %t909, i64 1 + %t911 = load %S.ast.Node, ptr %t910 + %t912 = call %S.gen.Val @finch.gen.expr(ptr %t904, %S.ast.Node %t911) + %t913 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5581, i64 3, i64 0 }) + %t914 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t915 = load { ptr, i64, i64 }, ptr %t914 + %t916 = extractvalue { ptr, i64, i64 } %t915, 1 + %t917 = icmp uge i64 1, %t916 + br i1 %t917, label %range8522, label %inrange8523 +range8522: + call void @finch_panic_index(ptr @.str.5582, i64 5270, i64 1, i64 %t916) unreachable -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 - store { ptr, i64, i64 } %t927, ptr %a935 - store { ptr, i64, i64 } %t933, ptr %a936 - call void @finch_str_concat(ptr %a934, ptr %a935, ptr %a936) - %t937 = load { ptr, i64, i64 }, ptr %a934 - %t938 = call { ptr, i64, i64 } @finch.gen.op(ptr %t908, { ptr, i64, i64 } %t937) - 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.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.5411, i64 6, i64 0 }, ptr %a948 +inrange8523: + %t918 = extractvalue { ptr, i64, i64 } %t915, 0 + %t919 = getelementptr inbounds %S.ast.Node, ptr %t918, i64 1 + %t920 = load %S.ast.Node, ptr %t919 + %t921 = call %S.gen.Val @finch.gen.coerce(ptr %t903, %S.gen.Val %t912, %S.ast.Type %t913, %S.ast.Node %t920, { ptr, i64, i64 } { ptr @.str.5583, i64 14, i64 0 }) + store %S.gen.Val %t912, ptr %a922 + call void @finch.drop.S_gen_Val(ptr %a922) + store %S.ast.Type %t913, ptr %a923 + call void @finch.drop.S_ast_Type(ptr %a923) + %t924 = extractvalue %S.gen.Val %t921, 0 + store { ptr, i64, i64 } %t924, ptr %a925 + call void @finch_str_copy(ptr %a926, ptr %a925) + %t927 = load { ptr, i64, i64 }, ptr %a926 + store %S.gen.Val %t921, ptr %a928 + call void @finch.drop.S_gen_Val(ptr %a928) + store { ptr, i64, i64 } %t927, ptr %a929 + %t930 = load ptr, ptr %a1 + %t931 = load { ptr, i64, i64 }, ptr %a3 + %t932 = load %S.ast.Type, ptr %a4 + %t933 = load { ptr, i64, i64 }, ptr %a929 + call void @finch.gen.dropFrom(ptr %t930, { ptr, i64, i64 } %t931, %S.ast.Type %t932, { ptr, i64, i64 } %t933) + %t934 = load ptr, ptr %a1 + %t935 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } { ptr @.str.5584, i64 32, i64 0 }, ptr %a937 + store { ptr, i64, i64 } %t935, ptr %a938 + call void @finch_str_concat(ptr %a936, ptr %a937, ptr %a938) + %t939 = load { ptr, i64, i64 }, ptr %a936 + store { ptr, i64, i64 } %t939, ptr %a941 + store { ptr, i64, i64 } { ptr @.str.5585, i64 6, i64 0 }, ptr %a942 + call void @finch_str_concat(ptr %a940, ptr %a941, ptr %a942) + store { ptr, i64, i64 } %t939, ptr %a943 + call void @finch_str_drop(ptr %a943) + %t944 = load { ptr, i64, i64 }, ptr %a940 + %t945 = load { ptr, i64, i64 }, ptr %a929 + store { ptr, i64, i64 } %t944, ptr %a947 + store { ptr, i64, i64 } %t945, 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 - store { ptr, i64, i64 } %t949, ptr %a952 - store { ptr, i64, i64 } %t950, ptr %a953 + store { ptr, i64, i64 } %t944, ptr %a949 + call void @finch_str_drop(ptr %a949) + %t950 = load { ptr, i64, i64 }, ptr %a946 + store { ptr, i64, i64 } %t950, ptr %a952 + store { ptr, i64, i64 } { ptr @.str.5586, i64 6, i64 0 }, 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.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 + store { ptr, i64, i64 } %t950, ptr %a954 + call void @finch_str_drop(ptr %a954) + %t955 = load { ptr, i64, i64 }, ptr %a951 + %t956 = load ptr, ptr %a1 + %t957 = load %S.ast.Type, ptr %a15 + %t958 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t956, %S.ast.Type %t957) + store { ptr, i64, i64 } %t955, ptr %a960 store { ptr, i64, i64 } %t958, ptr %a961 - store { ptr, i64, i64 } %t959, ptr %a962 - call void @finch_str_concat(ptr %a960, ptr %a961, ptr %a962) - %t963 = load { ptr, i64, i64 }, ptr %a960 - %t964 = call { ptr, i64, i64 } @finch.gen.op(ptr %t940, { ptr, i64, i64 } %t963) - store { ptr, i64, i64 } %t964, ptr %a965 - %t966 = load ptr, ptr %a1 - %t967 = load { ptr, i64, i64 }, ptr %a19 - %t968 = load { ptr, i64, i64 }, ptr %a907 - %t969 = call { ptr, i64, i64 } @finch.gen.load(ptr %t966, { ptr, i64, i64 } %t967, { ptr, i64, i64 } %t968) + call void @finch_str_concat(ptr %a959, ptr %a960, ptr %a961) + store { ptr, i64, i64 } %t955, ptr %a962 + call void @finch_str_drop(ptr %a962) + store { ptr, i64, i64 } %t958, ptr %a963 + call void @finch_str_drop(ptr %a963) + %t964 = load { ptr, i64, i64 }, ptr %a959 + store { ptr, i64, i64 } %t964, ptr %a966 + store { ptr, i64, i64 } { ptr @.str.5587, i64 1, i64 0 }, ptr %a967 + call void @finch_str_concat(ptr %a965, ptr %a966, ptr %a967) + store { ptr, i64, i64 } %t964, ptr %a968 + call void @finch_str_drop(ptr %a968) + %t969 = load { ptr, i64, i64 }, ptr %a965 + call void @finch.gen.emit(ptr %t934, { ptr, i64, i64 } %t969) store { ptr, i64, i64 } %t969, ptr %a970 - %t971 = load ptr, ptr %a1 - %t972 = load { ptr, i64, i64 }, ptr %a19 - %t973 = load { ptr, i64, i64 }, ptr %a965 - %t974 = call { ptr, i64, i64 } @finch.gen.load(ptr %t971, { ptr, i64, i64 } %t972, { ptr, i64, i64 } %t973) - store { ptr, i64, i64 } %t974, ptr %a975 - %t976 = load ptr, ptr %a1 - %t977 = load { ptr, i64, i64 }, ptr %a19 - %t978 = load { ptr, i64, i64 }, ptr %a975 - %t979 = load { ptr, i64, i64 }, ptr %a907 - call void @finch.gen.store(ptr %t976, { ptr, i64, i64 } %t977, { ptr, i64, i64 } %t978, { ptr, i64, i64 } %t979) + call void @finch_str_drop(ptr %a970) + %t971 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5588, i64 4, i64 0 }) + %t972 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t971, 1 + call void @finch_str_drop(ptr %a929) + call void @finch_str_drop(ptr %a39) + call void @finch_str_drop(ptr %a25) + call void @finch_str_drop(ptr %a19) + call void @finch.drop.S_ast_Type(ptr %a15) + ret %S.gen.Val %t972 +endif8519: + %t973 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t973, ptr %a974 + store { ptr, i64, i64 } { ptr @.str.5589, i64 7, i64 0 }, ptr %a975 + %t976 = call i32 @finch_str_eq(ptr %a974, ptr %a975) + %t977 = icmp ne i32 %t976, 0 + br i1 %t977, label %then8524, label %endif8526 +then8524: + %t978 = load ptr, ptr %a1 + %t979 = load %S.ast.Node, ptr %a2 + call void @finch.gen.need(ptr %t978, %S.ast.Node %t979, i64 0) %t980 = load ptr, ptr %a1 - %t981 = load { ptr, i64, i64 }, ptr %a19 - %t982 = load { ptr, i64, i64 }, ptr %a970 - %t983 = load { ptr, i64, i64 }, ptr %a965 - call void @finch.gen.store(ptr %t980, { ptr, i64, i64 } %t981, { ptr, i64, i64 } %t982, { ptr, i64, i64 } %t983) + %t981 = load { ptr, i64, i64 }, ptr %a39 + %t982 = call { ptr, i64, i64 } @finch.gen.load(ptr %t980, { ptr, i64, i64 } { ptr @.str.5590, i64 3, i64 0 }, { ptr, i64, i64 } %t981) + store { ptr, i64, i64 } %t982, ptr %a983 %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.5413, i64 4, i64 0 }) - %t987 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t986, 1 - ret %S.gen.Val %t987 -endif8069: - %t988 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t988, ptr %a989 - 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 %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) - %t995 = load ptr, ptr %a1 - %t996 = load ptr, ptr %a1 - %t997 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t998 = load { ptr, i64, i64 }, ptr %t997 - %t999 = extractvalue { ptr, i64, i64 } %t998, 1 - %t1000 = icmp uge i64 1, %t999 - br i1 %t1000, label %range8077, label %inrange8078 -range8077: - call void @finch_panic_index(ptr @.str.5415, i64 4898, i64 1, i64 %t999) + %t985 = load { ptr, i64, i64 }, ptr %a3 + %t986 = call { ptr, i64, i64 } @finch.gen.load(ptr %t984, { ptr, i64, i64 } { ptr @.str.5591, i64 3, i64 0 }, { ptr, i64, i64 } %t985) + store { ptr, i64, i64 } %t986, ptr %a987 + %t988 = load ptr, ptr %a1 + %t989 = load { ptr, i64, i64 }, ptr %a983 + store { ptr, i64, i64 } { ptr @.str.5592, i64 9, i64 0 }, ptr %a991 + store { ptr, i64, i64 } %t989, ptr %a992 + call void @finch_str_concat(ptr %a990, ptr %a991, ptr %a992) + %t993 = load { ptr, i64, i64 }, ptr %a990 + store { ptr, i64, i64 } %t993, ptr %a995 + store { ptr, i64, i64 } { ptr @.str.5593, i64 3, i64 0 }, ptr %a996 + call void @finch_str_concat(ptr %a994, ptr %a995, ptr %a996) + store { ptr, i64, i64 } %t993, ptr %a997 + call void @finch_str_drop(ptr %a997) + %t998 = load { ptr, i64, i64 }, ptr %a994 + %t999 = call { ptr, i64, i64 } @finch.gen.op(ptr %t988, { ptr, i64, i64 } %t998) + store { ptr, i64, i64 } %t998, ptr %a1000 + call void @finch_str_drop(ptr %a1000) + store { ptr, i64, i64 } %t999, ptr %a1001 + %t1002 = load ptr, ptr %a1 + %t1003 = load { ptr, i64, i64 }, ptr %a1001 + %t1004 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t1002, { ptr, i64, i64 } %t1003) + store { ptr, i64, i64 } %t1004, ptr %a1005 + %t1006 = load ptr, ptr %a1 + %t1007 = load { ptr, i64, i64 }, ptr %a19 + store { ptr, i64, i64 } { ptr @.str.5594, i64 23, i64 0 }, ptr %a1009 + store { ptr, i64, i64 } %t1007, ptr %a1010 + call void @finch_str_concat(ptr %a1008, ptr %a1009, ptr %a1010) + %t1011 = load { ptr, i64, i64 }, ptr %a1008 + store { ptr, i64, i64 } %t1011, ptr %a1013 + store { ptr, i64, i64 } { ptr @.str.5595, i64 6, i64 0 }, ptr %a1014 + call void @finch_str_concat(ptr %a1012, ptr %a1013, ptr %a1014) + store { ptr, i64, i64 } %t1011, ptr %a1015 + call void @finch_str_drop(ptr %a1015) + %t1016 = load { ptr, i64, i64 }, ptr %a1012 + %t1017 = load { ptr, i64, i64 }, ptr %a987 + store { ptr, i64, i64 } %t1016, ptr %a1019 + store { ptr, i64, i64 } %t1017, ptr %a1020 + call void @finch_str_concat(ptr %a1018, ptr %a1019, ptr %a1020) + store { ptr, i64, i64 } %t1016, ptr %a1021 + call void @finch_str_drop(ptr %a1021) + %t1022 = load { ptr, i64, i64 }, ptr %a1018 + store { ptr, i64, i64 } %t1022, ptr %a1024 + store { ptr, i64, i64 } { ptr @.str.5596, i64 6, i64 0 }, ptr %a1025 + call void @finch_str_concat(ptr %a1023, ptr %a1024, ptr %a1025) + store { ptr, i64, i64 } %t1022, ptr %a1026 + call void @finch_str_drop(ptr %a1026) + %t1027 = load { ptr, i64, i64 }, ptr %a1023 + %t1028 = load { ptr, i64, i64 }, ptr %a1005 + %t1029 = extractvalue { ptr, i64, i64 } %t1028, 1 + %t1030 = icmp uge i64 3, %t1029 + br i1 %t1030, label %range8527, label %inrange8528 +range8527: + call void @finch_panic_index(ptr @.str.5597, i64 5281, i64 3, i64 %t1029) unreachable -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.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 %range8079, label %inrange8080 -range8079: - call void @finch_panic_index(ptr @.str.5417, i64 4898, i64 1, i64 %t1008) - unreachable -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.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) - %t1017 = load { ptr, i64, i64 }, ptr %a1016 - store { ptr, i64, i64 } %t1017, ptr %a1018 - %t1019 = load ptr, ptr %a1 - %t1020 = load ptr, ptr %a1 - %t1021 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1022 = load { ptr, i64, i64 }, ptr %t1021 - %t1023 = extractvalue { ptr, i64, i64 } %t1022, 1 - %t1024 = icmp uge i64 2, %t1023 - br i1 %t1024, label %range8081, label %inrange8082 -range8081: - call void @finch_panic_index(ptr @.str.5419, i64 4899, i64 2, i64 %t1023) - unreachable -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.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 %range8083, label %inrange8084 -range8083: - call void @finch_panic_index(ptr @.str.5421, i64 4899, i64 2, i64 %t1032) - unreachable -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.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) - %t1041 = load { ptr, i64, i64 }, ptr %a1040 - store { ptr, i64, i64 } %t1041, ptr %a1042 +inrange8528: + %t1031 = extractvalue { ptr, i64, i64 } %t1028, 0 + %t1032 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1031, i64 3 + %t1033 = load { ptr, i64, i64 }, ptr %t1032 + store { ptr, i64, i64 } %t1027, ptr %a1035 + store { ptr, i64, i64 } %t1033, ptr %a1036 + call void @finch_str_concat(ptr %a1034, ptr %a1035, ptr %a1036) + store { ptr, i64, i64 } %t1027, ptr %a1037 + call void @finch_str_drop(ptr %a1037) + %t1038 = load { ptr, i64, i64 }, ptr %a1034 + %t1039 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1006, { ptr, i64, i64 } %t1038) + store { ptr, i64, i64 } %t1038, ptr %a1040 + call void @finch_str_drop(ptr %a1040) + store { ptr, i64, i64 } %t1039, ptr %a1041 + %t1042 = load ptr, ptr %a1 %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.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.5424, i64 13, i64 0 }, ptr %a1050 - store { ptr, i64, i64 } %t1048, ptr %a1051 + %t1044 = load { ptr, i64, i64 }, ptr %a983 + store { ptr, i64, i64 } { ptr @.str.5599, i64 8, i64 0 }, ptr %a1046 + store { ptr, i64, i64 } %t1044, ptr %a1047 + call void @finch_str_concat(ptr %a1045, ptr %a1046, ptr %a1047) + %t1048 = load { ptr, i64, i64 }, ptr %a1045 + store { ptr, i64, i64 } %t1048, ptr %a1050 + store { ptr, i64, i64 } { ptr @.str.5600, i64 3, i64 0 }, 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.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.5426, i64 13, i64 0 }, ptr %a1062 - store { ptr, i64, i64 } %t1060, ptr %a1063 + store { ptr, i64, i64 } %t1048, ptr %a1052 + call void @finch_str_drop(ptr %a1052) + %t1053 = load { ptr, i64, i64 }, ptr %a1049 + %t1054 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1043, { ptr, i64, i64 } %t1053) + store { ptr, i64, i64 } %t1053, ptr %a1055 + call void @finch_str_drop(ptr %a1055) + store { ptr, i64, i64 } { ptr @.str.5598, i64 8, i64 0 }, ptr %a1057 + store { ptr, i64, i64 } %t1054, ptr %a1058 + call void @finch_str_concat(ptr %a1056, ptr %a1057, ptr %a1058) + store { ptr, i64, i64 } %t1054, ptr %a1059 + call void @finch_str_drop(ptr %a1059) + %t1060 = load { ptr, i64, i64 }, ptr %a1056 + store { ptr, i64, i64 } %t1060, ptr %a1062 + store { ptr, i64, i64 } { ptr @.str.5601, i64 2, i64 0 }, 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.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 - store { ptr, i64, i64 } %t1068, ptr %a1071 - store { ptr, i64, i64 } %t1069, ptr %a1072 - call void @finch_str_concat(ptr %a1070, ptr %a1071, ptr %a1072) - %t1073 = load { ptr, i64, i64 }, ptr %a1070 - %t1074 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1059, { ptr, i64, i64 } %t1073) - 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.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.5429, i64 2, i64 0 }, ptr %a1084 + store { ptr, i64, i64 } %t1060, ptr %a1064 + call void @finch_str_drop(ptr %a1064) + %t1065 = load { ptr, i64, i64 }, ptr %a1061 + %t1066 = load { ptr, i64, i64 }, ptr %a1005 + %t1067 = extractvalue { ptr, i64, i64 } %t1066, 1 + %t1068 = icmp uge i64 3, %t1067 + br i1 %t1068, label %range8529, label %inrange8530 +range8529: + call void @finch_panic_index(ptr @.str.5602, i64 5282, i64 3, i64 %t1067) + unreachable +inrange8530: + %t1069 = extractvalue { ptr, i64, i64 } %t1066, 0 + %t1070 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1069, i64 3 + %t1071 = load { ptr, i64, i64 }, ptr %t1070 + store { ptr, i64, i64 } %t1065, ptr %a1073 + store { ptr, i64, i64 } %t1071, ptr %a1074 + call void @finch_str_concat(ptr %a1072, ptr %a1073, ptr %a1074) + store { ptr, i64, i64 } %t1065, ptr %a1075 + call void @finch_str_drop(ptr %a1075) + %t1076 = load { ptr, i64, i64 }, ptr %a1072 + %t1077 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1042, { ptr, i64, i64 } %t1076) + store { ptr, i64, i64 } %t1076, ptr %a1078 + call void @finch_str_drop(ptr %a1078) + store { ptr, i64, i64 } %t1077, ptr %a1079 + %t1080 = load ptr, ptr %a1 + %t1081 = load { ptr, i64, i64 }, ptr %a19 + store { ptr, i64, i64 } { ptr @.str.5603, i64 23, i64 0 }, ptr %a1083 + store { ptr, i64, i64 } %t1081, 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 - store { ptr, i64, i64 } %t1085, ptr %a1088 - store { ptr, i64, i64 } %t1086, ptr %a1089 - call void @finch_str_concat(ptr %a1087, ptr %a1088, ptr %a1089) - %t1090 = load { ptr, i64, i64 }, ptr %a1087 - %t1091 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1076, { ptr, i64, i64 } %t1090) - store { ptr, i64, i64 } %t1091, ptr %a1092 - %t1093 = load ptr, ptr %a1 - %t1094 = load ptr, ptr %a1 - %t1095 = load ptr, ptr %a1 - %t1096 = load { ptr, i64, i64 }, ptr %a1058 - store { ptr, i64, i64 } { ptr @.str.5431, i64 6, i64 0 }, ptr %a1098 - store { ptr, i64, i64 } %t1096, ptr %a1099 + store { ptr, i64, i64 } %t1085, ptr %a1087 + store { ptr, i64, i64 } { ptr @.str.5604, i64 6, i64 0 }, ptr %a1088 + call void @finch_str_concat(ptr %a1086, ptr %a1087, ptr %a1088) + store { ptr, i64, i64 } %t1085, ptr %a1089 + call void @finch_str_drop(ptr %a1089) + %t1090 = load { ptr, i64, i64 }, ptr %a1086 + %t1091 = load { ptr, i64, i64 }, ptr %a987 + store { ptr, i64, i64 } %t1090, ptr %a1093 + store { ptr, i64, i64 } %t1091, ptr %a1094 + call void @finch_str_concat(ptr %a1092, ptr %a1093, ptr %a1094) + store { ptr, i64, i64 } %t1090, ptr %a1095 + call void @finch_str_drop(ptr %a1095) + %t1096 = load { ptr, i64, i64 }, ptr %a1092 + store { ptr, i64, i64 } %t1096, ptr %a1098 + store { ptr, i64, i64 } { ptr @.str.5605, i64 6, i64 0 }, 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.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 - store { ptr, i64, i64 } %t1104, ptr %a1107 - store { ptr, i64, i64 } %t1105, ptr %a1108 - 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.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.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 - store { ptr, i64, i64 } %t1118, ptr %a1121 - store { ptr, i64, i64 } %t1119, ptr %a1122 - call void @finch_str_concat(ptr %a1120, ptr %a1121, ptr %a1122) + store { ptr, i64, i64 } %t1096, ptr %a1100 + call void @finch_str_drop(ptr %a1100) + %t1101 = load { ptr, i64, i64 }, ptr %a1097 + %t1102 = load { ptr, i64, i64 }, ptr %a1079 + store { ptr, i64, i64 } %t1101, ptr %a1104 + store { ptr, i64, i64 } %t1102, ptr %a1105 + call void @finch_str_concat(ptr %a1103, ptr %a1104, ptr %a1105) + store { ptr, i64, i64 } %t1101, ptr %a1106 + call void @finch_str_drop(ptr %a1106) + %t1107 = load { ptr, i64, i64 }, ptr %a1103 + %t1108 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1080, { ptr, i64, i64 } %t1107) + store { ptr, i64, i64 } %t1107, ptr %a1109 + call void @finch_str_drop(ptr %a1109) + store { ptr, i64, i64 } %t1108, ptr %a1110 + %t1111 = load ptr, ptr %a1 + %t1112 = load { ptr, i64, i64 }, ptr %a19 + %t1113 = load { ptr, i64, i64 }, ptr %a1041 + %t1114 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1111, { ptr, i64, i64 } %t1112, { ptr, i64, i64 } %t1113) + store { ptr, i64, i64 } %t1114, ptr %a1115 + %t1116 = load ptr, ptr %a1 + %t1117 = load { ptr, i64, i64 }, ptr %a19 + %t1118 = load { ptr, i64, i64 }, ptr %a1110 + %t1119 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1116, { ptr, i64, i64 } %t1117, { ptr, i64, i64 } %t1118) + store { ptr, i64, i64 } %t1119, ptr %a1120 + %t1121 = load ptr, ptr %a1 + %t1122 = load { ptr, i64, i64 }, ptr %a19 %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.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.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.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 - store { ptr, i64, i64 } %t1135, ptr %a1138 - store { ptr, i64, i64 } %t1136, ptr %a1139 - call void @finch_str_concat(ptr %a1137, ptr %a1138, ptr %a1139) - %t1140 = load { ptr, i64, i64 }, ptr %a1137 - %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.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.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.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 - store { ptr, i64, i64 } %t1155, ptr %a1158 - store { ptr, i64, i64 } %t1156, ptr %a1159 - 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.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 - %t1166 = load %S.ast.Type, ptr %a15 - %t1167 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t1165, %S.ast.Type %t1166) - store { ptr, i64, i64 } %t1164, ptr %a1169 - store { ptr, i64, i64 } %t1167, ptr %a1170 - 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.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.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.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 - %t1186 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t1184, { ptr, i64, i64 } %t1185) - 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.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.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 - store { ptr, i64, i64 } %t1197, ptr %a1200 - store { ptr, i64, i64 } %t1198, ptr %a1201 - 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.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 %range8085, label %inrange8086 -range8085: - call void @finch_panic_index(ptr @.str.5447, i64 4911, i64 3, i64 %t1208) + %t1124 = load { ptr, i64, i64 }, ptr %a1041 + call void @finch.gen.store(ptr %t1121, { ptr, i64, i64 } %t1122, { ptr, i64, i64 } %t1123, { ptr, i64, i64 } %t1124) + %t1125 = load ptr, ptr %a1 + %t1126 = load { ptr, i64, i64 }, ptr %a19 + %t1127 = load { ptr, i64, i64 }, ptr %a1115 + %t1128 = load { ptr, i64, i64 }, ptr %a1110 + call void @finch.gen.store(ptr %t1125, { ptr, i64, i64 } %t1126, { ptr, i64, i64 } %t1127, { ptr, i64, i64 } %t1128) + %t1129 = load ptr, ptr %a1 + %t1130 = load { ptr, i64, i64 }, ptr %a1005 + call void @finch.gen.loopEnd(ptr %t1129, { ptr, i64, i64 } %t1130) + %t1131 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5606, i64 4, i64 0 }) + %t1132 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t1131, 1 + call void @finch_str_drop(ptr %a1120) + call void @finch_str_drop(ptr %a1115) + call void @finch_str_drop(ptr %a1110) + call void @finch_str_drop(ptr %a1079) + call void @finch_str_drop(ptr %a1041) + call void @finch.drop.arr_str(ptr %a1005) + call void @finch_str_drop(ptr %a1001) + call void @finch_str_drop(ptr %a987) + call void @finch_str_drop(ptr %a983) + call void @finch_str_drop(ptr %a39) + call void @finch_str_drop(ptr %a25) + call void @finch_str_drop(ptr %a19) + call void @finch.drop.S_ast_Type(ptr %a15) + ret %S.gen.Val %t1132 +endif8526: + %t1133 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t1133, ptr %a1134 + store { ptr, i64, i64 } { ptr @.str.5607, i64 5, i64 0 }, ptr %a1135 + %t1136 = call i32 @finch_str_eq(ptr %a1134, ptr %a1135) + %t1137 = icmp ne i32 %t1136, 0 + br i1 %t1137, label %then8531, label %endif8533 +then8531: + %t1138 = load ptr, ptr %a1 + %t1139 = load %S.ast.Node, ptr %a2 + call void @finch.gen.need(ptr %t1138, %S.ast.Node %t1139, i64 2) + %t1140 = load ptr, ptr %a1 + %t1141 = load ptr, ptr %a1 + %t1142 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t1143 = load { ptr, i64, i64 }, ptr %t1142 + %t1144 = extractvalue { ptr, i64, i64 } %t1143, 1 + %t1145 = icmp uge i64 1, %t1144 + br i1 %t1145, label %range8534, label %inrange8535 +range8534: + call void @finch_panic_index(ptr @.str.5608, i64 5293, i64 1, i64 %t1144) unreachable -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 - store { ptr, i64, i64 } %t1206, ptr %a1214 - store { ptr, i64, i64 } %t1212, ptr %a1215 - call void @finch_str_concat(ptr %a1213, ptr %a1214, ptr %a1215) - %t1216 = load { ptr, i64, i64 }, ptr %a1213 - %t1217 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1188, { ptr, i64, i64 } %t1216) - 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.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.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 - store { ptr, i64, i64 } %t1228, ptr %a1231 - store { ptr, i64, i64 } %t1229, ptr %a1232 - 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.5450, i64 6, i64 0 }, ptr %a1236 +inrange8535: + %t1146 = extractvalue { ptr, i64, i64 } %t1143, 0 + %t1147 = getelementptr inbounds %S.ast.Node, ptr %t1146, i64 1 + %t1148 = load %S.ast.Node, ptr %t1147 + %t1149 = call %S.gen.Val @finch.gen.expr(ptr %t1141, %S.ast.Node %t1148) + %t1150 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5609, i64 3, i64 0 }) + %t1151 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t1152 = load { ptr, i64, i64 }, ptr %t1151 + %t1153 = extractvalue { ptr, i64, i64 } %t1152, 1 + %t1154 = icmp uge i64 1, %t1153 + br i1 %t1154, label %range8536, label %inrange8537 +range8536: + call void @finch_panic_index(ptr @.str.5610, i64 5293, i64 1, i64 %t1153) + unreachable +inrange8537: + %t1155 = extractvalue { ptr, i64, i64 } %t1152, 0 + %t1156 = getelementptr inbounds %S.ast.Node, ptr %t1155, i64 1 + %t1157 = load %S.ast.Node, ptr %t1156 + %t1158 = call %S.gen.Val @finch.gen.coerce(ptr %t1140, %S.gen.Val %t1149, %S.ast.Type %t1150, %S.ast.Node %t1157, { ptr, i64, i64 } { ptr @.str.5611, i64 9, i64 0 }) + store %S.gen.Val %t1149, ptr %a1159 + call void @finch.drop.S_gen_Val(ptr %a1159) + store %S.ast.Type %t1150, ptr %a1160 + call void @finch.drop.S_ast_Type(ptr %a1160) + %t1161 = extractvalue %S.gen.Val %t1158, 0 + store { ptr, i64, i64 } %t1161, ptr %a1162 + call void @finch_str_copy(ptr %a1163, ptr %a1162) + %t1164 = load { ptr, i64, i64 }, ptr %a1163 + store %S.gen.Val %t1158, ptr %a1165 + call void @finch.drop.S_gen_Val(ptr %a1165) + store { ptr, i64, i64 } %t1164, ptr %a1166 + %t1167 = load ptr, ptr %a1 + %t1168 = load ptr, ptr %a1 + %t1169 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t1170 = load { ptr, i64, i64 }, ptr %t1169 + %t1171 = extractvalue { ptr, i64, i64 } %t1170, 1 + %t1172 = icmp uge i64 2, %t1171 + br i1 %t1172, label %range8538, label %inrange8539 +range8538: + call void @finch_panic_index(ptr @.str.5612, i64 5294, i64 2, i64 %t1171) + unreachable +inrange8539: + %t1173 = extractvalue { ptr, i64, i64 } %t1170, 0 + %t1174 = getelementptr inbounds %S.ast.Node, ptr %t1173, i64 2 + %t1175 = load %S.ast.Node, ptr %t1174 + %t1176 = call %S.gen.Val @finch.gen.expr(ptr %t1168, %S.ast.Node %t1175) + %t1177 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5613, i64 3, i64 0 }) + %t1178 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t1179 = load { ptr, i64, i64 }, ptr %t1178 + %t1180 = extractvalue { ptr, i64, i64 } %t1179, 1 + %t1181 = icmp uge i64 2, %t1180 + br i1 %t1181, label %range8540, label %inrange8541 +range8540: + call void @finch_panic_index(ptr @.str.5614, i64 5294, i64 2, i64 %t1180) + unreachable +inrange8541: + %t1182 = extractvalue { ptr, i64, i64 } %t1179, 0 + %t1183 = getelementptr inbounds %S.ast.Node, ptr %t1182, i64 2 + %t1184 = load %S.ast.Node, ptr %t1183 + %t1185 = call %S.gen.Val @finch.gen.coerce(ptr %t1167, %S.gen.Val %t1176, %S.ast.Type %t1177, %S.ast.Node %t1184, { ptr, i64, i64 } { ptr @.str.5615, i64 7, i64 0 }) + store %S.gen.Val %t1176, ptr %a1186 + call void @finch.drop.S_gen_Val(ptr %a1186) + store %S.ast.Type %t1177, ptr %a1187 + call void @finch.drop.S_ast_Type(ptr %a1187) + %t1188 = extractvalue %S.gen.Val %t1185, 0 + store { ptr, i64, i64 } %t1188, ptr %a1189 + call void @finch_str_copy(ptr %a1190, ptr %a1189) + %t1191 = load { ptr, i64, i64 }, ptr %a1190 + store %S.gen.Val %t1185, ptr %a1192 + call void @finch.drop.S_gen_Val(ptr %a1192) + store { ptr, i64, i64 } %t1191, ptr %a1193 + %t1194 = load ptr, ptr %a1 + %t1195 = load { ptr, i64, i64 }, ptr %a39 + %t1196 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1194, { ptr, i64, i64 } { ptr @.str.5616, i64 3, i64 0 }, { ptr, i64, i64 } %t1195) + store { ptr, i64, i64 } %t1196, ptr %a1197 + %t1198 = load ptr, ptr %a1 + %t1199 = load { ptr, i64, i64 }, ptr %a1166 + store { ptr, i64, i64 } { ptr @.str.5617, i64 13, i64 0 }, ptr %a1201 + store { ptr, i64, i64 } %t1199, ptr %a1202 + call void @finch_str_concat(ptr %a1200, ptr %a1201, ptr %a1202) + %t1203 = load { ptr, i64, i64 }, ptr %a1200 + store { ptr, i64, i64 } %t1203, ptr %a1205 + store { ptr, i64, i64 } { ptr @.str.5618, i64 3, i64 0 }, ptr %a1206 + call void @finch_str_concat(ptr %a1204, ptr %a1205, ptr %a1206) + store { ptr, i64, i64 } %t1203, ptr %a1207 + call void @finch_str_drop(ptr %a1207) + %t1208 = load { ptr, i64, i64 }, ptr %a1204 + %t1209 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1198, { ptr, i64, i64 } %t1208) + store { ptr, i64, i64 } %t1208, ptr %a1210 + call void @finch_str_drop(ptr %a1210) + store { ptr, i64, i64 } %t1209, ptr %a1211 + %t1212 = load ptr, ptr %a1 + %t1213 = load { ptr, i64, i64 }, ptr %a1193 + store { ptr, i64, i64 } { ptr @.str.5619, i64 13, i64 0 }, ptr %a1215 + store { ptr, i64, i64 } %t1213, ptr %a1216 + call void @finch_str_concat(ptr %a1214, ptr %a1215, ptr %a1216) + %t1217 = load { ptr, i64, i64 }, ptr %a1214 + store { ptr, i64, i64 } %t1217, ptr %a1219 + store { ptr, i64, i64 } { ptr @.str.5620, i64 2, i64 0 }, ptr %a1220 + call void @finch_str_concat(ptr %a1218, ptr %a1219, ptr %a1220) + store { ptr, i64, i64 } %t1217, ptr %a1221 + call void @finch_str_drop(ptr %a1221) + %t1222 = load { ptr, i64, i64 }, ptr %a1218 + %t1223 = load { ptr, i64, i64 }, ptr %a1197 + store { ptr, i64, i64 } %t1222, ptr %a1225 + store { ptr, i64, i64 } %t1223, ptr %a1226 + call void @finch_str_concat(ptr %a1224, ptr %a1225, ptr %a1226) + store { ptr, i64, i64 } %t1222, ptr %a1227 + call void @finch_str_drop(ptr %a1227) + %t1228 = load { ptr, i64, i64 }, ptr %a1224 + %t1229 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1212, { ptr, i64, i64 } %t1228) + store { ptr, i64, i64 } %t1228, ptr %a1230 + call void @finch_str_drop(ptr %a1230) + store { ptr, i64, i64 } %t1229, ptr %a1231 + %t1232 = load ptr, ptr %a1 + %t1233 = load { ptr, i64, i64 }, ptr %a1166 + store { ptr, i64, i64 } { ptr @.str.5621, i64 13, i64 0 }, ptr %a1235 + store { ptr, i64, i64 } %t1233, 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.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.5452, i64 2, i64 0 }, ptr %a1246 + store { ptr, i64, i64 } %t1237, ptr %a1239 + store { ptr, i64, i64 } { ptr @.str.5622, i64 2, i64 0 }, ptr %a1240 + call void @finch_str_concat(ptr %a1238, ptr %a1239, ptr %a1240) + store { ptr, i64, i64 } %t1237, ptr %a1241 + call void @finch_str_drop(ptr %a1241) + %t1242 = load { ptr, i64, i64 }, ptr %a1238 + %t1243 = load { ptr, i64, i64 }, ptr %a1193 + store { ptr, i64, i64 } %t1242, ptr %a1245 + store { ptr, i64, i64 } %t1243, 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 %range8087, label %inrange8088 -range8087: - call void @finch_panic_index(ptr @.str.5453, i64 4912, i64 3, i64 %t1249) - unreachable -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 - store { ptr, i64, i64 } %t1247, ptr %a1255 - store { ptr, i64, i64 } %t1253, ptr %a1256 - call void @finch_str_concat(ptr %a1254, ptr %a1255, ptr %a1256) - %t1257 = load { ptr, i64, i64 }, ptr %a1254 - %t1258 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1238, { ptr, i64, i64 } %t1257) - store { ptr, i64, i64 } %t1237, ptr %a1260 - store { ptr, i64, i64 } %t1258, ptr %a1261 - call void @finch_str_concat(ptr %a1259, ptr %a1260, ptr %a1261) - %t1262 = load { ptr, i64, i64 }, ptr %a1259 - %t1263 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1219, { ptr, i64, i64 } %t1262) - store { ptr, i64, i64 } %t1263, ptr %a1264 - %t1265 = load ptr, ptr %a1 - %t1266 = load { ptr, i64, i64 }, ptr %a1218 - %t1267 = load { ptr, i64, i64 }, ptr %a1264 - %t1268 = load %S.ast.Type, ptr %a15 - call void @finch.gen.copyAt(ptr %t1265, { ptr, i64, i64 } %t1266, { ptr, i64, i64 } %t1267, %S.ast.Type %t1268) - %t1269 = load ptr, ptr %a1 - %t1270 = load { ptr, i64, i64 }, ptr %a1187 - 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.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 - call void @finch.copy.S_ast_Type(ptr %a1277, ptr %a1276) - %t1278 = load %S.ast.Type, ptr %a1277 - %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 -endif8076: - %t1281 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t1281, ptr %a1282 - 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 %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) - %t1288 = getelementptr inbounds %S.ast.Type, ptr %a15, i32 0, i32 0 - %t1289 = load { ptr, i64, i64 }, ptr %t1288 - store { ptr, i64, i64 } %t1289, ptr %a1290 - call void @finch_str_copy(ptr %a1291, ptr %a1290) - %t1292 = load { ptr, i64, i64 }, ptr %a1291 - store { ptr, i64, i64 } %t1292, ptr %a1293 - %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.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.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.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.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.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.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.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.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.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.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 - store { ptr, i64, i64 } %t1332, ptr %a1335 - store { ptr, i64, i64 } %t1333, ptr %a1336 - 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.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 - %t1343 = load %S.ast.Type, ptr %a15 - %t1344 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t1342, %S.ast.Type %t1343) - store { ptr, i64, i64 } %t1341, ptr %a1346 - store { ptr, i64, i64 } %t1344, ptr %a1347 - 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.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 - store { ptr, i64, i64 } %t1352, ptr %a1355 - store { ptr, i64, i64 } %t1353, ptr %a1356 - 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.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.5466, i64 4, i64 0 }) - %t1363 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t1362, 1 - ret %S.gen.Val %t1363 -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.5467, i64 24, i64 0 }, ptr %a1368 + store { ptr, i64, i64 } %t1242, ptr %a1247 + call void @finch_str_drop(ptr %a1247) + %t1248 = load { ptr, i64, i64 }, ptr %a1244 + %t1249 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1232, { ptr, i64, i64 } %t1248) + store { ptr, i64, i64 } %t1248, ptr %a1250 + call void @finch_str_drop(ptr %a1250) + store { ptr, i64, i64 } %t1249, ptr %a1251 + %t1252 = load ptr, ptr %a1 + %t1253 = load ptr, ptr %a1 + %t1254 = load ptr, ptr %a1 + %t1255 = load { ptr, i64, i64 }, ptr %a1211 + store { ptr, i64, i64 } { ptr @.str.5624, i64 6, i64 0 }, ptr %a1257 + store { ptr, i64, i64 } %t1255, ptr %a1258 + call void @finch_str_concat(ptr %a1256, ptr %a1257, ptr %a1258) + %t1259 = load { ptr, i64, i64 }, ptr %a1256 + store { ptr, i64, i64 } %t1259, ptr %a1261 + store { ptr, i64, i64 } { ptr @.str.5625, i64 2, i64 0 }, ptr %a1262 + call void @finch_str_concat(ptr %a1260, ptr %a1261, ptr %a1262) + store { ptr, i64, i64 } %t1259, ptr %a1263 + call void @finch_str_drop(ptr %a1263) + %t1264 = load { ptr, i64, i64 }, ptr %a1260 + %t1265 = load { ptr, i64, i64 }, ptr %a1231 + store { ptr, i64, i64 } %t1264, ptr %a1267 + store { ptr, i64, i64 } %t1265, ptr %a1268 + call void @finch_str_concat(ptr %a1266, ptr %a1267, ptr %a1268) + store { ptr, i64, i64 } %t1264, ptr %a1269 + call void @finch_str_drop(ptr %a1269) + %t1270 = load { ptr, i64, i64 }, ptr %a1266 + %t1271 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1254, { ptr, i64, i64 } %t1270) + store { ptr, i64, i64 } %t1270, ptr %a1272 + call void @finch_str_drop(ptr %a1272) + store { ptr, i64, i64 } { ptr @.str.5623, i64 6, i64 0 }, ptr %a1274 + store { ptr, i64, i64 } %t1271, ptr %a1275 + call void @finch_str_concat(ptr %a1273, ptr %a1274, ptr %a1275) + store { ptr, i64, i64 } %t1271, ptr %a1276 + call void @finch_str_drop(ptr %a1276) + %t1277 = load { ptr, i64, i64 }, ptr %a1273 + store { ptr, i64, i64 } %t1277, ptr %a1279 + store { ptr, i64, i64 } { ptr @.str.5626, i64 2, i64 0 }, ptr %a1280 + call void @finch_str_concat(ptr %a1278, ptr %a1279, ptr %a1280) + store { ptr, i64, i64 } %t1277, ptr %a1281 + call void @finch_str_drop(ptr %a1281) + %t1282 = load { ptr, i64, i64 }, ptr %a1278 + %t1283 = load { ptr, i64, i64 }, ptr %a1251 + store { ptr, i64, i64 } %t1282, ptr %a1285 + store { ptr, i64, i64 } %t1283, ptr %a1286 + call void @finch_str_concat(ptr %a1284, ptr %a1285, ptr %a1286) + store { ptr, i64, i64 } %t1282, ptr %a1287 + call void @finch_str_drop(ptr %a1287) + %t1288 = load { ptr, i64, i64 }, ptr %a1284 + %t1289 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1253, { ptr, i64, i64 } %t1288) + store { ptr, i64, i64 } %t1288, ptr %a1290 + call void @finch_str_drop(ptr %a1290) + %t1291 = load %S.ast.Node, ptr %a2 + call void @finch.gen.panicIf(ptr %t1252, { ptr, i64, i64 } %t1289, { ptr, i64, i64 } { ptr @.str.5627, i64 33, i64 0 }, %S.ast.Node %t1291) + store { ptr, i64, i64 } %t1289, ptr %a1292 + call void @finch_str_drop(ptr %a1292) + %t1293 = load ptr, ptr %a1 + %t1294 = load { ptr, i64, i64 }, ptr %a1193 + store { ptr, i64, i64 } { ptr @.str.5628, i64 8, i64 0 }, ptr %a1296 + store { ptr, i64, i64 } %t1294, ptr %a1297 + call void @finch_str_concat(ptr %a1295, ptr %a1296, ptr %a1297) + %t1298 = load { ptr, i64, i64 }, ptr %a1295 + store { ptr, i64, i64 } %t1298, ptr %a1300 + store { ptr, i64, i64 } { ptr @.str.5629, i64 2, i64 0 }, ptr %a1301 + call void @finch_str_concat(ptr %a1299, ptr %a1300, ptr %a1301) + store { ptr, i64, i64 } %t1298, ptr %a1302 + call void @finch_str_drop(ptr %a1302) + %t1303 = load { ptr, i64, i64 }, ptr %a1299 + %t1304 = load { ptr, i64, i64 }, ptr %a1166 + store { ptr, i64, i64 } %t1303, ptr %a1306 + store { ptr, i64, i64 } %t1304, ptr %a1307 + call void @finch_str_concat(ptr %a1305, ptr %a1306, ptr %a1307) + store { ptr, i64, i64 } %t1303, ptr %a1308 + call void @finch_str_drop(ptr %a1308) + %t1309 = load { ptr, i64, i64 }, ptr %a1305 + %t1310 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1293, { ptr, i64, i64 } %t1309) + store { ptr, i64, i64 } %t1309, ptr %a1311 + call void @finch_str_drop(ptr %a1311) + store { ptr, i64, i64 } %t1310, ptr %a1312 + %t1313 = load ptr, ptr %a1 + %t1314 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t1313, { ptr, i64, i64 } { ptr @.str.5630, i64 17, i64 0 }) + store { ptr, i64, i64 } %t1314, ptr %a1315 + %t1316 = load ptr, ptr %a1 + %t1317 = load { ptr, i64, i64 }, ptr %a1315 + store { ptr, i64, i64 } { ptr @.str.5631, i64 30, i64 0 }, ptr %a1319 + store { ptr, i64, i64 } %t1317, ptr %a1320 + call void @finch_str_concat(ptr %a1318, ptr %a1319, ptr %a1320) + %t1321 = load { ptr, i64, i64 }, ptr %a1318 + store { ptr, i64, i64 } %t1321, ptr %a1323 + store { ptr, i64, i64 } { ptr @.str.5632, i64 6, i64 0 }, ptr %a1324 + call void @finch_str_concat(ptr %a1322, ptr %a1323, ptr %a1324) + store { ptr, i64, i64 } %t1321, ptr %a1325 + call void @finch_str_drop(ptr %a1325) + %t1326 = load { ptr, i64, i64 }, ptr %a1322 + %t1327 = load { ptr, i64, i64 }, ptr %a1312 + store { ptr, i64, i64 } %t1326, ptr %a1329 + store { ptr, i64, i64 } %t1327, ptr %a1330 + call void @finch_str_concat(ptr %a1328, ptr %a1329, ptr %a1330) + store { ptr, i64, i64 } %t1326, ptr %a1331 + call void @finch_str_drop(ptr %a1331) + %t1332 = load { ptr, i64, i64 }, ptr %a1328 + store { ptr, i64, i64 } %t1332, ptr %a1334 + store { ptr, i64, i64 } { ptr @.str.5633, i64 6, i64 0 }, ptr %a1335 + call void @finch_str_concat(ptr %a1333, ptr %a1334, ptr %a1335) + store { ptr, i64, i64 } %t1332, ptr %a1336 + call void @finch_str_drop(ptr %a1336) + %t1337 = load { ptr, i64, i64 }, ptr %a1333 + %t1338 = load ptr, ptr %a1 + %t1339 = load %S.ast.Type, ptr %a15 + %t1340 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t1338, %S.ast.Type %t1339) + store { ptr, i64, i64 } %t1337, ptr %a1342 + store { ptr, i64, i64 } %t1340, ptr %a1343 + call void @finch_str_concat(ptr %a1341, ptr %a1342, ptr %a1343) + store { ptr, i64, i64 } %t1337, ptr %a1344 + call void @finch_str_drop(ptr %a1344) + store { ptr, i64, i64 } %t1340, ptr %a1345 + call void @finch_str_drop(ptr %a1345) + %t1346 = load { ptr, i64, i64 }, ptr %a1341 + store { ptr, i64, i64 } %t1346, ptr %a1348 + store { ptr, i64, i64 } { ptr @.str.5634, i64 1, i64 0 }, ptr %a1349 + call void @finch_str_concat(ptr %a1347, ptr %a1348, ptr %a1349) + store { ptr, i64, i64 } %t1346, ptr %a1350 + call void @finch_str_drop(ptr %a1350) + %t1351 = load { ptr, i64, i64 }, ptr %a1347 + call void @finch.gen.emit(ptr %t1316, { ptr, i64, i64 } %t1351) + store { ptr, i64, i64 } %t1351, ptr %a1352 + call void @finch_str_drop(ptr %a1352) + %t1353 = load ptr, ptr %a1 + %t1354 = load { ptr, i64, i64 }, ptr %a3 + %t1355 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1353, { ptr, i64, i64 } { ptr @.str.5635, i64 3, i64 0 }, { ptr, i64, i64 } %t1354) + store { ptr, i64, i64 } %t1355, ptr %a1356 + %t1357 = load ptr, ptr %a1 + %t1358 = load { ptr, i64, i64 }, ptr %a1315 + %t1359 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1357, { ptr, i64, i64 } { ptr @.str.5636, i64 3, i64 0 }, { ptr, i64, i64 } %t1358) + store { ptr, i64, i64 } %t1359, ptr %a1360 + %t1361 = load ptr, ptr %a1 + %t1362 = load { ptr, i64, i64 }, ptr %a1312 + %t1363 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t1361, { ptr, i64, i64 } %t1362) + store { ptr, i64, i64 } %t1363, ptr %a1364 + %t1365 = load ptr, ptr %a1 + %t1366 = load { ptr, i64, i64 }, ptr %a19 + store { ptr, i64, i64 } { ptr @.str.5637, i64 23, 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.5468, i64 96, i64 0 }, ptr %a1373 + store { ptr, i64, i64 } { ptr @.str.5638, i64 6, 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) + store { ptr, i64, i64 } %t1370, ptr %a1374 + call void @finch_str_drop(ptr %a1374) + %t1375 = load { ptr, i64, i64 }, ptr %a1371 + %t1376 = load { ptr, i64, i64 }, ptr %a1360 + store { ptr, i64, i64 } %t1375, ptr %a1378 + store { ptr, i64, i64 } %t1376, ptr %a1379 + call void @finch_str_concat(ptr %a1377, ptr %a1378, ptr %a1379) + store { ptr, i64, i64 } %t1375, ptr %a1380 + call void @finch_str_drop(ptr %a1380) + %t1381 = load { ptr, i64, i64 }, ptr %a1377 + store { ptr, i64, i64 } %t1381, ptr %a1383 + store { ptr, i64, i64 } { ptr @.str.5639, i64 6, i64 0 }, ptr %a1384 + call void @finch_str_concat(ptr %a1382, ptr %a1383, ptr %a1384) + store { ptr, i64, i64 } %t1381, ptr %a1385 + call void @finch_str_drop(ptr %a1385) + %t1386 = load { ptr, i64, i64 }, ptr %a1382 + %t1387 = load { ptr, i64, i64 }, ptr %a1364 + %t1388 = extractvalue { ptr, i64, i64 } %t1387, 1 + %t1389 = icmp uge i64 3, %t1388 + br i1 %t1389, label %range8542, label %inrange8543 +range8542: + call void @finch_panic_index(ptr @.str.5640, i64 5306, i64 3, i64 %t1388) + unreachable +inrange8543: + %t1390 = extractvalue { ptr, i64, i64 } %t1387, 0 + %t1391 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1390, i64 3 + %t1392 = load { ptr, i64, i64 }, ptr %t1391 + store { ptr, i64, i64 } %t1386, ptr %a1394 + store { ptr, i64, i64 } %t1392, ptr %a1395 + call void @finch_str_concat(ptr %a1393, ptr %a1394, ptr %a1395) + store { ptr, i64, i64 } %t1386, ptr %a1396 + call void @finch_str_drop(ptr %a1396) + %t1397 = load { ptr, i64, i64 }, ptr %a1393 + %t1398 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1365, { ptr, i64, i64 } %t1397) + store { ptr, i64, i64 } %t1397, ptr %a1399 + call void @finch_str_drop(ptr %a1399) + store { ptr, i64, i64 } %t1398, ptr %a1400 + %t1401 = load ptr, ptr %a1 + %t1402 = load { ptr, i64, i64 }, ptr %a19 + store { ptr, i64, i64 } { ptr @.str.5641, i64 23, i64 0 }, ptr %a1404 + store { ptr, i64, i64 } %t1402, ptr %a1405 + call void @finch_str_concat(ptr %a1403, ptr %a1404, ptr %a1405) + %t1406 = load { ptr, i64, i64 }, ptr %a1403 + store { ptr, i64, i64 } %t1406, ptr %a1408 + store { ptr, i64, i64 } { ptr @.str.5642, i64 6, i64 0 }, ptr %a1409 + call void @finch_str_concat(ptr %a1407, ptr %a1408, ptr %a1409) + store { ptr, i64, i64 } %t1406, ptr %a1410 + call void @finch_str_drop(ptr %a1410) + %t1411 = load { ptr, i64, i64 }, ptr %a1407 + %t1412 = load { ptr, i64, i64 }, ptr %a1356 + store { ptr, i64, i64 } %t1411, ptr %a1414 + store { ptr, i64, i64 } %t1412, ptr %a1415 + call void @finch_str_concat(ptr %a1413, ptr %a1414, ptr %a1415) + store { ptr, i64, i64 } %t1411, ptr %a1416 + call void @finch_str_drop(ptr %a1416) + %t1417 = load { ptr, i64, i64 }, ptr %a1413 + store { ptr, i64, i64 } %t1417, ptr %a1419 + store { ptr, i64, i64 } { ptr @.str.5643, i64 6, i64 0 }, ptr %a1420 + call void @finch_str_concat(ptr %a1418, ptr %a1419, ptr %a1420) + store { ptr, i64, i64 } %t1417, ptr %a1421 + call void @finch_str_drop(ptr %a1421) + %t1422 = load { ptr, i64, i64 }, ptr %a1418 + %t1423 = load ptr, ptr %a1 + %t1424 = load { ptr, i64, i64 }, ptr %a1166 + store { ptr, i64, i64 } { ptr @.str.5644, i64 8, i64 0 }, ptr %a1426 + store { ptr, i64, i64 } %t1424, ptr %a1427 + call void @finch_str_concat(ptr %a1425, ptr %a1426, ptr %a1427) + %t1428 = load { ptr, i64, i64 }, ptr %a1425 + store { ptr, i64, i64 } %t1428, ptr %a1430 + store { ptr, i64, i64 } { ptr @.str.5645, i64 2, i64 0 }, ptr %a1431 + call void @finch_str_concat(ptr %a1429, ptr %a1430, ptr %a1431) + store { ptr, i64, i64 } %t1428, ptr %a1432 + call void @finch_str_drop(ptr %a1432) + %t1433 = load { ptr, i64, i64 }, ptr %a1429 + %t1434 = load { ptr, i64, i64 }, ptr %a1364 + %t1435 = extractvalue { ptr, i64, i64 } %t1434, 1 + %t1436 = icmp uge i64 3, %t1435 + br i1 %t1436, label %range8544, label %inrange8545 +range8544: + call void @finch_panic_index(ptr @.str.5646, i64 5307, i64 3, i64 %t1435) + unreachable +inrange8545: + %t1437 = extractvalue { ptr, i64, i64 } %t1434, 0 + %t1438 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1437, i64 3 + %t1439 = load { ptr, i64, i64 }, ptr %t1438 + store { ptr, i64, i64 } %t1433, ptr %a1441 + store { ptr, i64, i64 } %t1439, ptr %a1442 + call void @finch_str_concat(ptr %a1440, ptr %a1441, ptr %a1442) + store { ptr, i64, i64 } %t1433, ptr %a1443 + call void @finch_str_drop(ptr %a1443) + %t1444 = load { ptr, i64, i64 }, ptr %a1440 + %t1445 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1423, { ptr, i64, i64 } %t1444) + store { ptr, i64, i64 } %t1444, ptr %a1446 + call void @finch_str_drop(ptr %a1446) + store { ptr, i64, i64 } %t1422, ptr %a1448 + store { ptr, i64, i64 } %t1445, ptr %a1449 + call void @finch_str_concat(ptr %a1447, ptr %a1448, ptr %a1449) + store { ptr, i64, i64 } %t1422, ptr %a1450 + call void @finch_str_drop(ptr %a1450) + store { ptr, i64, i64 } %t1445, ptr %a1451 + call void @finch_str_drop(ptr %a1451) + %t1452 = load { ptr, i64, i64 }, ptr %a1447 + %t1453 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1401, { ptr, i64, i64 } %t1452) + store { ptr, i64, i64 } %t1452, ptr %a1454 + call void @finch_str_drop(ptr %a1454) + store { ptr, i64, i64 } %t1453, ptr %a1455 + %t1456 = load ptr, ptr %a1 + %t1457 = load { ptr, i64, i64 }, ptr %a1400 + %t1458 = load { ptr, i64, i64 }, ptr %a1455 + %t1459 = load %S.ast.Type, ptr %a15 + call void @finch.gen.copyAt(ptr %t1456, { ptr, i64, i64 } %t1457, { ptr, i64, i64 } %t1458, %S.ast.Type %t1459) + %t1460 = load ptr, ptr %a1 + %t1461 = load { ptr, i64, i64 }, ptr %a1364 + call void @finch.gen.loopEnd(ptr %t1460, { ptr, i64, i64 } %t1461) + %t1462 = load ptr, ptr %a1 + %t1463 = load { ptr, i64, i64 }, ptr %a1315 + %t1464 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1462, { ptr, i64, i64 } { ptr @.str.5647, i64 17, i64 0 }, { ptr, i64, i64 } %t1463) + %t1465 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1464, 0 + %t1466 = load %S.ast.Type, ptr %a4 + store %S.ast.Type %t1466, ptr %a1467 + call void @finch.copy.S_ast_Type(ptr %a1468, ptr %a1467) + %t1469 = load %S.ast.Type, ptr %a1468 + %t1470 = insertvalue %S.gen.Val %t1465, %S.ast.Type %t1469, 1 + %t1471 = insertvalue %S.gen.Val %t1470, i1 true, 2 + call void @finch_str_drop(ptr %a1455) + call void @finch_str_drop(ptr %a1400) + call void @finch.drop.arr_str(ptr %a1364) + call void @finch_str_drop(ptr %a1360) + call void @finch_str_drop(ptr %a1356) + call void @finch_str_drop(ptr %a1315) + call void @finch_str_drop(ptr %a1312) + call void @finch_str_drop(ptr %a1251) + call void @finch_str_drop(ptr %a1231) + call void @finch_str_drop(ptr %a1211) + call void @finch_str_drop(ptr %a1197) + call void @finch_str_drop(ptr %a1193) + call void @finch_str_drop(ptr %a1166) + call void @finch_str_drop(ptr %a39) + call void @finch_str_drop(ptr %a25) + call void @finch_str_drop(ptr %a19) + call void @finch.drop.S_ast_Type(ptr %a15) + ret %S.gen.Val %t1471 +endif8533: + %t1472 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t1472, ptr %a1473 + store { ptr, i64, i64 } { ptr @.str.5648, i64 4, i64 0 }, ptr %a1474 + %t1475 = call i32 @finch_str_eq(ptr %a1473, ptr %a1474) + %t1476 = icmp ne i32 %t1475, 0 + br i1 %t1476, label %then8546, label %endif8548 +then8546: + %t1477 = load ptr, ptr %a1 + %t1478 = load %S.ast.Node, ptr %a2 + call void @finch.gen.need(ptr %t1477, %S.ast.Node %t1478, i64 0) + %t1479 = getelementptr inbounds %S.ast.Type, ptr %a15, i32 0, i32 0 + %t1480 = load { ptr, i64, i64 }, ptr %t1479 + store { ptr, i64, i64 } %t1480, ptr %a1481 + call void @finch_str_copy(ptr %a1482, ptr %a1481) + %t1483 = load { ptr, i64, i64 }, ptr %a1482 + store { ptr, i64, i64 } %t1483, ptr %a1484 + %t1485 = load %S.ast.Type, ptr %a15 + %t1486 = call i1 @finch.gen.isNumber(%S.ast.Type %t1485) + %t1487 = xor i1 %t1486, true + br label %logic.from8549 +logic.from8549: + br i1 %t1487, label %logic.rhs8550, label %logic.end8551 +logic.rhs8550: + %t1488 = load { ptr, i64, i64 }, ptr %a1484 + store { ptr, i64, i64 } %t1488, ptr %a1489 + store { ptr, i64, i64 } { ptr @.str.5649, i64 4, i64 0 }, ptr %a1490 + %t1491 = call i32 @finch_str_eq(ptr %a1489, ptr %a1490) + %t1492 = icmp eq i32 %t1491, 0 + br label %logic.rend8552 +logic.rend8552: + br label %logic.end8551 +logic.end8551: + %t1493 = phi i1 [ false, %logic.from8549 ], [ %t1492, %logic.rend8552 ] + br label %logic.from8553 +logic.from8553: + br i1 %t1493, label %logic.rhs8554, label %logic.end8555 +logic.rhs8554: + %t1494 = load { ptr, i64, i64 }, ptr %a1484 + store { ptr, i64, i64 } %t1494, ptr %a1495 + store { ptr, i64, i64 } { ptr @.str.5650, i64 3, i64 0 }, ptr %a1496 + %t1497 = call i32 @finch_str_eq(ptr %a1495, ptr %a1496) + %t1498 = icmp eq i32 %t1497, 0 + br label %logic.rend8556 +logic.rend8556: + br label %logic.end8555 +logic.end8555: + %t1499 = phi i1 [ false, %logic.from8553 ], [ %t1498, %logic.rend8556 ] + br i1 %t1499, label %then8557, label %endif8559 +then8557: + %t1500 = load ptr, ptr %a1 + %t1501 = load %S.ast.Node, ptr %a2 + call void @finch.gen.fail(ptr %t1500, %S.ast.Node %t1501, { ptr, i64, i64 } { ptr @.str.5651, i64 47, i64 0 }) + br label %endif8559 +endif8559: + %t1502 = load ptr, ptr %a1 + %t1503 = load %S.ast.Type, ptr %a15 + %t1504 = call { ptr, i64, i64 } @finch.gen.cmpFn(ptr %t1502, %S.ast.Type %t1503) + store { ptr, i64, i64 } %t1504, ptr %a1505 + %t1506 = load ptr, ptr %a1 + %t1507 = load { ptr, i64, i64 }, ptr %a39 + %t1508 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1506, { ptr, i64, i64 } { ptr @.str.5652, i64 3, i64 0 }, { ptr, i64, i64 } %t1507) + store { ptr, i64, i64 } %t1508, ptr %a1509 + %t1510 = load ptr, ptr %a1 + %t1511 = load { ptr, i64, i64 }, ptr %a3 + %t1512 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1510, { ptr, i64, i64 } { ptr @.str.5653, i64 3, i64 0 }, { ptr, i64, i64 } %t1511) + store { ptr, i64, i64 } %t1512, ptr %a1513 + %t1514 = load ptr, ptr %a1 + %t1515 = load { ptr, i64, i64 }, ptr %a1513 + store { ptr, i64, i64 } { ptr @.str.5654, i64 21, i64 0 }, ptr %a1517 + store { ptr, i64, i64 } %t1515, ptr %a1518 + call void @finch_str_concat(ptr %a1516, ptr %a1517, ptr %a1518) + %t1519 = load { ptr, i64, i64 }, ptr %a1516 + store { ptr, i64, i64 } %t1519, ptr %a1521 + store { ptr, i64, i64 } { ptr @.str.5655, i64 6, i64 0 }, ptr %a1522 + call void @finch_str_concat(ptr %a1520, ptr %a1521, ptr %a1522) + store { ptr, i64, i64 } %t1519, ptr %a1523 + call void @finch_str_drop(ptr %a1523) + %t1524 = load { ptr, i64, i64 }, ptr %a1520 + %t1525 = load { ptr, i64, i64 }, ptr %a1509 + store { ptr, i64, i64 } %t1524, ptr %a1527 + store { ptr, i64, i64 } %t1525, ptr %a1528 + call void @finch_str_concat(ptr %a1526, ptr %a1527, ptr %a1528) + store { ptr, i64, i64 } %t1524, ptr %a1529 + call void @finch_str_drop(ptr %a1529) + %t1530 = load { ptr, i64, i64 }, ptr %a1526 + store { ptr, i64, i64 } %t1530, ptr %a1532 + store { ptr, i64, i64 } { ptr @.str.5656, i64 6, i64 0 }, ptr %a1533 + call void @finch_str_concat(ptr %a1531, ptr %a1532, ptr %a1533) + store { ptr, i64, i64 } %t1530, ptr %a1534 + call void @finch_str_drop(ptr %a1534) + %t1535 = load { ptr, i64, i64 }, ptr %a1531 + %t1536 = load ptr, ptr %a1 + %t1537 = load %S.ast.Type, ptr %a15 + %t1538 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t1536, %S.ast.Type %t1537) + store { ptr, i64, i64 } %t1535, ptr %a1540 + store { ptr, i64, i64 } %t1538, ptr %a1541 + call void @finch_str_concat(ptr %a1539, ptr %a1540, ptr %a1541) + store { ptr, i64, i64 } %t1535, ptr %a1542 + call void @finch_str_drop(ptr %a1542) + store { ptr, i64, i64 } %t1538, ptr %a1543 + call void @finch_str_drop(ptr %a1543) + %t1544 = load { ptr, i64, i64 }, ptr %a1539 + store { ptr, i64, i64 } %t1544, ptr %a1546 + store { ptr, i64, i64 } { ptr @.str.5657, i64 6, i64 0 }, ptr %a1547 + call void @finch_str_concat(ptr %a1545, ptr %a1546, ptr %a1547) + store { ptr, i64, i64 } %t1544, ptr %a1548 + call void @finch_str_drop(ptr %a1548) + %t1549 = load { ptr, i64, i64 }, ptr %a1545 + %t1550 = load { ptr, i64, i64 }, ptr %a1505 + store { ptr, i64, i64 } %t1549, ptr %a1552 + store { ptr, i64, i64 } %t1550, ptr %a1553 + call void @finch_str_concat(ptr %a1551, ptr %a1552, ptr %a1553) + store { ptr, i64, i64 } %t1549, ptr %a1554 + call void @finch_str_drop(ptr %a1554) + %t1555 = load { ptr, i64, i64 }, ptr %a1551 + store { ptr, i64, i64 } %t1555, ptr %a1557 + store { ptr, i64, i64 } { ptr @.str.5658, i64 1, i64 0 }, ptr %a1558 + call void @finch_str_concat(ptr %a1556, ptr %a1557, ptr %a1558) + store { ptr, i64, i64 } %t1555, ptr %a1559 + call void @finch_str_drop(ptr %a1559) + %t1560 = load { ptr, i64, i64 }, ptr %a1556 + call void @finch.gen.emit(ptr %t1514, { ptr, i64, i64 } %t1560) + store { ptr, i64, i64 } %t1560, ptr %a1561 + call void @finch_str_drop(ptr %a1561) + %t1562 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5659, i64 4, i64 0 }) + %t1563 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t1562, 1 + call void @finch_str_drop(ptr %a1513) + call void @finch_str_drop(ptr %a1509) + call void @finch_str_drop(ptr %a1505) + call void @finch_str_drop(ptr %a1484) + call void @finch_str_drop(ptr %a39) + call void @finch_str_drop(ptr %a25) + call void @finch_str_drop(ptr %a19) + call void @finch.drop.S_ast_Type(ptr %a15) + ret %S.gen.Val %t1563 +endif8548: + %t1564 = load ptr, ptr %a1 + %t1565 = load %S.ast.Node, ptr %a2 + %t1566 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } { ptr @.str.5660, i64 24, i64 0 }, ptr %a1568 + store { ptr, i64, i64 } %t1566, ptr %a1569 + call void @finch_str_concat(ptr %a1567, ptr %a1568, ptr %a1569) + %t1570 = load { ptr, i64, i64 }, ptr %a1567 + store { ptr, i64, i64 } %t1570, ptr %a1572 + store { ptr, i64, i64 } { ptr @.str.5661, i64 96, i64 0 }, ptr %a1573 + call void @finch_str_concat(ptr %a1571, ptr %a1572, ptr %a1573) + store { ptr, i64, i64 } %t1570, ptr %a1574 + call void @finch_str_drop(ptr %a1574) + %t1575 = load { ptr, i64, i64 }, ptr %a1571 + call void @finch.gen.fail(ptr %t1564, %S.ast.Node %t1565, { ptr, i64, i64 } %t1575) + store { ptr, i64, i64 } %t1575, ptr %a1576 + call void @finch_str_drop(ptr %a1576) + call void @finch_str_drop(ptr %a39) + call void @finch_str_drop(ptr %a25) + call void @finch_str_drop(ptr %a19) + call void @finch.drop.S_ast_Type(ptr %a15) ret %S.gen.Val zeroinitializer } +define internal void @finch.gen.dropFrom(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, { ptr, i64, i64 } %p3) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca %S.ast.Type, align 16 + %a4 = alloca { ptr, i64, i64 }, align 16 + %a12 = alloca %S.ast.Type, align 16 + %a13 = alloca %S.ast.Type, align 16 + %a15 = alloca %S.ast.Type, align 16 + %a23 = 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 + %a32 = alloca { ptr, i64, i64 }, align 16 + %a33 = alloca { ptr, i64, i64 }, align 16 + %a34 = 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 + %a44 = 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 + %a54 = alloca { ptr, i64, i64 }, align 16 + %a57 = alloca { ptr, i64, i64 }, align 16 + %a58 = 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 + %a64 = 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 + %a71 = 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 + %a77 = alloca { ptr, i64, i64 }, align 16 + %a78 = 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 + %a85 = alloca { ptr, i64, i64 }, align 16 + %a86 = alloca { ptr, i64, i64 }, align 16 + %a87 = alloca { ptr, i64, i64 }, align 16 + %a88 = 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 + %a99 = 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 + %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 + %a115 = 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 + %a121 = 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 + %a127 = alloca { ptr, i64, i64 }, align 16 + %a128 = alloca { ptr, i64, i64 }, align 16 + %a132 = alloca { ptr, i64, i64 }, align 16 + %a133 = alloca { ptr, i64, i64 }, align 16 + %a134 = alloca { ptr, i64, i64 }, align 16 + %a136 = alloca { ptr, i64, i64 }, align 16 + %a137 = alloca { ptr, i64, i64 }, align 16 + %a138 = alloca { ptr, i64, i64 }, align 16 + %a139 = alloca { ptr, i64, i64 }, align 16 + %a142 = alloca { ptr, i64, i64 }, align 16 + %a143 = alloca { ptr, i64, i64 }, align 16 + %a144 = alloca { ptr, i64, i64 }, align 16 + %a145 = alloca { ptr, i64, i64 }, align 16 + %a148 = alloca { ptr, i64, i64 }, align 16 + %a150 = alloca { ptr, i64, i64 }, align 16 + %a151 = alloca { ptr, i64, i64 }, align 16 + %a154 = alloca { ptr, i64, i64 }, align 16 + %a155 = alloca { ptr, i64, i64 }, align 16 + %a156 = alloca { ptr, i64, i64 }, align 16 + %a158 = 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 + %a164 = 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 + %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 + %a180 = 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 + %a191 = alloca { ptr, i64, i64 }, align 16 + %a192 = alloca { ptr, i64, i64 }, align 16 + %a193 = alloca { ptr, i64, i64 }, align 16 + %a194 = alloca { ptr, i64, i64 }, align 16 + %a197 = alloca { ptr, i64, i64 }, align 16 + %a198 = alloca { ptr, i64, i64 }, align 16 + %a199 = 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 + %a205 = alloca { ptr, i64, i64 }, align 16 + %a206 = alloca { ptr, i64, i64 }, align 16 + store ptr %p0, ptr %a1 + store { ptr, i64, i64 } %p1, ptr %a2 + store %S.ast.Type %p2, ptr %a3 + store { ptr, i64, i64 } %p3, ptr %a4 + %t5 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 + %t6 = load { ptr, i64, i64 }, ptr %t5 + %t7 = extractvalue { ptr, i64, i64 } %t6, 1 + %t8 = icmp uge i64 0, %t7 + br i1 %t8, label %range8560, label %inrange8561 +range8560: + call void @finch_panic_index(ptr @.str.5662, i64 5330, i64 0, i64 %t7) + unreachable +inrange8561: + %t9 = extractvalue { ptr, i64, i64 } %t6, 0 + %t10 = getelementptr inbounds %S.ast.Type, ptr %t9, i64 0 + %t11 = load %S.ast.Type, ptr %t10 + store %S.ast.Type %t11, ptr %a12 + call void @finch.copy.S_ast_Type(ptr %a13, ptr %a12) + %t14 = load %S.ast.Type, ptr %a13 + store %S.ast.Type %t14, ptr %a15 + %t16 = load ptr, ptr %a1 + %t17 = load %S.ast.Type, ptr %a15 + %t18 = call i1 @finch.gen.owning(ptr %t16, %S.ast.Type %t17) + %t19 = xor i1 %t18, true + br i1 %t19, label %then8562, label %endif8564 +then8562: + call void @finch.drop.S_ast_Type(ptr %a15) + ret void +endif8564: + %t20 = load ptr, ptr %a1 + %t21 = load %S.ast.Type, ptr %a15 + %t22 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t20, %S.ast.Type %t21) + store { ptr, i64, i64 } %t22, ptr %a23 + %t24 = load ptr, ptr %a1 + %t25 = load ptr, ptr %a1 + %t26 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } { ptr @.str.5664, i64 46, 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.5665, i64 14, i64 0 }, ptr %a33 + call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) + store { ptr, i64, i64 } %t30, ptr %a34 + call void @finch_str_drop(ptr %a34) + %t35 = load { ptr, i64, i64 }, ptr %a31 + %t36 = call { ptr, i64, i64 } @finch.gen.op(ptr %t25, { ptr, i64, i64 } %t35) + store { ptr, i64, i64 } %t35, ptr %a37 + call void @finch_str_drop(ptr %a37) + %t38 = call { ptr, i64, i64 } @finch.gen.load(ptr %t24, { ptr, i64, i64 } { ptr @.str.5663, i64 3, i64 0 }, { ptr, i64, i64 } %t36) + store { ptr, i64, i64 } %t36, ptr %a39 + call void @finch_str_drop(ptr %a39) + store { ptr, i64, i64 } %t38, ptr %a40 + %t41 = load ptr, ptr %a1 + %t42 = load { ptr, i64, i64 }, ptr %a2 + %t43 = call { ptr, i64, i64 } @finch.gen.load(ptr %t41, { ptr, i64, i64 } { ptr @.str.5666, i64 3, i64 0 }, { ptr, i64, i64 } %t42) + store { ptr, i64, i64 } %t43, ptr %a44 + %t45 = load ptr, ptr %a1 + %t46 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } { ptr @.str.5667, 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.5668, i64 2, i64 0 }, ptr %a53 + call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) + store { ptr, i64, i64 } %t50, ptr %a54 + call void @finch_str_drop(ptr %a54) + %t55 = load { ptr, i64, i64 }, ptr %a51 + %t56 = load { ptr, i64, i64 }, ptr %a40 + store { ptr, i64, i64 } %t55, ptr %a58 + store { ptr, i64, i64 } %t56, ptr %a59 + call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) + store { ptr, i64, i64 } %t55, ptr %a60 + call void @finch_str_drop(ptr %a60) + %t61 = load { ptr, i64, i64 }, ptr %a57 + %t62 = call { ptr, i64, i64 } @finch.gen.op(ptr %t45, { ptr, i64, i64 } %t61) + store { ptr, i64, i64 } %t61, ptr %a63 + call void @finch_str_drop(ptr %a63) + store { ptr, i64, i64 } %t62, ptr %a64 + %t65 = load ptr, ptr %a1 + %t66 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } { ptr @.str.5669, i64 13, 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.5670, i64 3, i64 0 }, ptr %a73 + call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73) + store { ptr, i64, i64 } %t70, ptr %a74 + call void @finch_str_drop(ptr %a74) + %t75 = load { ptr, i64, i64 }, ptr %a71 + %t76 = call { ptr, i64, i64 } @finch.gen.op(ptr %t65, { ptr, i64, i64 } %t75) + store { ptr, i64, i64 } %t75, ptr %a77 + call void @finch_str_drop(ptr %a77) + store { ptr, i64, i64 } %t76, ptr %a78 + %t79 = load ptr, ptr %a1 + %t80 = load { ptr, i64, i64 }, ptr %a64 + store { ptr, i64, i64 } { ptr @.str.5671, i64 10, 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.5672, i64 6, i64 0 }, ptr %a87 + call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) + store { ptr, i64, i64 } %t84, ptr %a88 + call void @finch_str_drop(ptr %a88) + %t89 = load { ptr, i64, i64 }, ptr %a85 + %t90 = load ptr, ptr %a1 + %t91 = load { ptr, i64, i64 }, ptr %a78 + store { ptr, i64, i64 } { ptr @.str.5673, i64 10, 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.5674, i64 13, i64 0 }, ptr %a98 + call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) + store { ptr, i64, i64 } %t95, ptr %a99 + call void @finch_str_drop(ptr %a99) + %t100 = load { ptr, i64, i64 }, ptr %a96 + %t101 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t100, ptr %a103 + store { ptr, i64, i64 } %t101, ptr %a104 + call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104) + store { ptr, i64, i64 } %t100, ptr %a105 + call void @finch_str_drop(ptr %a105) + %t106 = load { ptr, i64, i64 }, ptr %a102 + %t107 = call { ptr, i64, i64 } @finch.gen.op(ptr %t90, { ptr, i64, i64 } %t106) + store { ptr, i64, i64 } %t106, ptr %a108 + call void @finch_str_drop(ptr %a108) + store { ptr, i64, i64 } %t89, ptr %a110 + store { ptr, i64, i64 } %t107, ptr %a111 + call void @finch_str_concat(ptr %a109, ptr %a110, ptr %a111) + store { ptr, i64, i64 } %t89, ptr %a112 + call void @finch_str_drop(ptr %a112) + store { ptr, i64, i64 } %t107, ptr %a113 + call void @finch_str_drop(ptr %a113) + %t114 = load { ptr, i64, i64 }, ptr %a109 + store { ptr, i64, i64 } %t114, ptr %a116 + store { ptr, i64, i64 } { ptr @.str.5675, i64 6, i64 0 }, ptr %a117 + call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) + store { ptr, i64, i64 } %t114, ptr %a118 + call void @finch_str_drop(ptr %a118) + %t119 = load { ptr, i64, i64 }, ptr %a115 + %t120 = load { ptr, i64, i64 }, ptr %a40 + store { ptr, i64, i64 } %t119, ptr %a122 + store { ptr, i64, i64 } %t120, ptr %a123 + call void @finch_str_concat(ptr %a121, ptr %a122, ptr %a123) + store { ptr, i64, i64 } %t119, ptr %a124 + call void @finch_str_drop(ptr %a124) + %t125 = load { ptr, i64, i64 }, ptr %a121 + %t126 = call { ptr, i64, i64 } @finch.gen.op(ptr %t79, { ptr, i64, i64 } %t125) + store { ptr, i64, i64 } %t125, ptr %a127 + call void @finch_str_drop(ptr %a127) + store { ptr, i64, i64 } %t126, ptr %a128 + %t129 = load ptr, ptr %a1 + %t130 = load ptr, ptr %a1 + %t131 = load { ptr, i64, i64 }, ptr %a40 + store { ptr, i64, i64 } { ptr @.str.5676, i64 8, i64 0 }, ptr %a133 + store { ptr, i64, i64 } %t131, ptr %a134 + 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.5677, i64 2, i64 0 }, ptr %a138 + call void @finch_str_concat(ptr %a136, ptr %a137, ptr %a138) + store { ptr, i64, i64 } %t135, ptr %a139 + call void @finch_str_drop(ptr %a139) + %t140 = load { ptr, i64, i64 }, ptr %a136 + %t141 = load { ptr, i64, i64 }, ptr %a128 + store { ptr, i64, i64 } %t140, ptr %a143 + store { ptr, i64, i64 } %t141, ptr %a144 + call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144) + store { ptr, i64, i64 } %t140, ptr %a145 + call void @finch_str_drop(ptr %a145) + %t146 = load { ptr, i64, i64 }, ptr %a142 + %t147 = call { ptr, i64, i64 } @finch.gen.op(ptr %t130, { ptr, i64, i64 } %t146) + store { ptr, i64, i64 } %t146, ptr %a148 + call void @finch_str_drop(ptr %a148) + %t149 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t129, { ptr, i64, i64 } %t147) + store { ptr, i64, i64 } %t147, ptr %a150 + call void @finch_str_drop(ptr %a150) + store { ptr, i64, i64 } %t149, ptr %a151 + %t152 = load ptr, ptr %a1 + %t153 = load { ptr, i64, i64 }, ptr %a23 + store { ptr, i64, i64 } { ptr @.str.5678, i64 23, i64 0 }, ptr %a155 + store { ptr, i64, i64 } %t153, 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 + store { ptr, i64, i64 } { ptr @.str.5679, i64 6, i64 0 }, ptr %a160 + call void @finch_str_concat(ptr %a158, ptr %a159, ptr %a160) + store { ptr, i64, i64 } %t157, ptr %a161 + call void @finch_str_drop(ptr %a161) + %t162 = load { ptr, i64, i64 }, ptr %a158 + %t163 = load { ptr, i64, i64 }, ptr %a44 + store { ptr, i64, i64 } %t162, ptr %a165 + store { ptr, i64, i64 } %t163, ptr %a166 + call void @finch_str_concat(ptr %a164, ptr %a165, ptr %a166) + store { ptr, i64, i64 } %t162, ptr %a167 + call void @finch_str_drop(ptr %a167) + %t168 = load { ptr, i64, i64 }, ptr %a164 + store { ptr, i64, i64 } %t168, ptr %a170 + store { ptr, i64, i64 } { ptr @.str.5680, i64 6, i64 0 }, ptr %a171 + call void @finch_str_concat(ptr %a169, ptr %a170, ptr %a171) + store { ptr, i64, i64 } %t168, ptr %a172 + call void @finch_str_drop(ptr %a172) + %t173 = load { ptr, i64, i64 }, ptr %a169 + %t174 = load ptr, ptr %a1 + %t175 = load { ptr, i64, i64 }, ptr %a128 + store { ptr, i64, i64 } { ptr @.str.5681, i64 8, 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.5682, i64 2, i64 0 }, ptr %a182 + call void @finch_str_concat(ptr %a180, ptr %a181, ptr %a182) + store { ptr, i64, i64 } %t179, ptr %a183 + call void @finch_str_drop(ptr %a183) + %t184 = load { ptr, i64, i64 }, ptr %a180 + %t185 = load { ptr, i64, i64 }, ptr %a151 + %t186 = extractvalue { ptr, i64, i64 } %t185, 1 + %t187 = icmp uge i64 3, %t186 + br i1 %t187, label %range8565, label %inrange8566 +range8565: + call void @finch_panic_index(ptr @.str.5683, i64 5341, i64 3, i64 %t186) + unreachable +inrange8566: + %t188 = extractvalue { ptr, i64, i64 } %t185, 0 + %t189 = getelementptr inbounds { ptr, i64, i64 }, ptr %t188, i64 3 + %t190 = load { ptr, i64, i64 }, ptr %t189 + store { ptr, i64, i64 } %t184, ptr %a192 + store { ptr, i64, i64 } %t190, ptr %a193 + call void @finch_str_concat(ptr %a191, ptr %a192, ptr %a193) + store { ptr, i64, i64 } %t184, ptr %a194 + call void @finch_str_drop(ptr %a194) + %t195 = load { ptr, i64, i64 }, ptr %a191 + %t196 = call { ptr, i64, i64 } @finch.gen.op(ptr %t174, { ptr, i64, i64 } %t195) + store { ptr, i64, i64 } %t195, ptr %a197 + call void @finch_str_drop(ptr %a197) + store { ptr, i64, i64 } %t173, ptr %a199 + store { ptr, i64, i64 } %t196, ptr %a200 + call void @finch_str_concat(ptr %a198, ptr %a199, ptr %a200) + store { ptr, i64, i64 } %t173, ptr %a201 + call void @finch_str_drop(ptr %a201) + store { ptr, i64, i64 } %t196, ptr %a202 + call void @finch_str_drop(ptr %a202) + %t203 = load { ptr, i64, i64 }, ptr %a198 + %t204 = call { ptr, i64, i64 } @finch.gen.op(ptr %t152, { ptr, i64, i64 } %t203) + store { ptr, i64, i64 } %t203, ptr %a205 + call void @finch_str_drop(ptr %a205) + store { ptr, i64, i64 } %t204, ptr %a206 + %t207 = load ptr, ptr %a1 + %t208 = load { ptr, i64, i64 }, ptr %a206 + %t209 = load %S.ast.Type, ptr %a15 + call void @finch.gen.dropAt(ptr %t207, { ptr, i64, i64 } %t208, %S.ast.Type %t209) + %t210 = load ptr, ptr %a1 + %t211 = load { ptr, i64, i64 }, ptr %a151 + call void @finch.gen.loopEnd(ptr %t210, { ptr, i64, i64 } %t211) + call void @finch_str_drop(ptr %a206) + call void @finch.drop.arr_str(ptr %a151) + call void @finch_str_drop(ptr %a128) + call void @finch_str_drop(ptr %a78) + call void @finch_str_drop(ptr %a64) + call void @finch_str_drop(ptr %a44) + call void @finch_str_drop(ptr %a40) + call void @finch_str_drop(ptr %a23) + call void @finch.drop.S_ast_Type(ptr %a15) + ret void +} + define internal { ptr, i64, i64 } @finch.gen.cmpFn(ptr %p0, %S.ast.Type %p1) { entry: %a1 = alloca ptr, align 16 @@ -74107,47 +89028,49 @@ entry: %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 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca %S.gen.Saved, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 + %a8 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca { ptr, i64, i64 }, align 16 + %a23 = alloca { ptr, i64, i64 }, align 16 + %a24 = alloca { ptr, i64, i64 }, align 16 + %a32 = alloca %S.gen.Saved, align 16 + %a33 = alloca { ptr, i64, i64 }, align 16 + %a36 = alloca { ptr, i64, i64 }, align 16 + %a37 = alloca { ptr, i64, i64 }, align 16 + %a42 = 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 - %a48 = 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 %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 + %a55 = alloca { ptr, i64, i64 }, align 16 + %a57 = alloca { ptr, i64, i64 }, align 16 + %a61 = alloca { ptr, i64, i64 }, align 16 + %a65 = alloca { ptr, i64, i64 }, align 16 %a69 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 + %a70 = alloca { ptr, i64, i64 }, align 16 + %a71 = 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 - %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 { ptr, i64, i64 }, align 16 + %a86 = 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 + %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 + %a97 = 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 - %a101 = 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 %a108 = alloca { ptr, i64, i64 }, align 16 %a109 = alloca { ptr, i64, i64 }, align 16 @@ -74155,371 +89078,514 @@ entry: %a112 = alloca { ptr, i64, i64 }, align 16 %a113 = alloca { ptr, i64, i64 }, align 16 %a114 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 + %a115 = 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 + %a121 = 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 %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 %a132 = 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 + %a142 = alloca { ptr, i64, i64 }, align 16 + %a143 = 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 + %a147 = alloca { ptr, i64, i64 }, align 16 %a148 = alloca { ptr, i64, i64 }, align 16 %a149 = alloca { ptr, i64, i64 }, align 16 %a150 = 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 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 + %a156 = alloca { ptr, i64, i64 }, align 16 + %a158 = 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 %a164 = 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 - %a168 = 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 %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 %a175 = alloca { ptr, i64, i64 }, align 16 %a176 = alloca { ptr, i64, i64 }, align 16 %a177 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 + %a178 = alloca { ptr, i64, i64 }, align 16 %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = 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 + %a183 = 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 %a191 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = 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 + %a196 = alloca { ptr, i64, i64 }, align 16 %a199 = 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 - %a203 = 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 %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 %a210 = 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 + %a215 = alloca { ptr, i64, i64 }, align 16 %a216 = alloca { ptr, i64, i64 }, align 16 %a217 = alloca { ptr, i64, i64 }, align 16 %a218 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 %a221 = alloca { ptr, i64, i64 }, align 16 %a222 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 + %a223 = alloca { ptr, i64, i64 }, align 16 + %a224 = alloca { ptr, i64, i64 }, align 16 %a227 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 + %a229 = 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 + %a237 = 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 - %a241 = alloca { ptr, i64, i64 }, align 16 %a243 = alloca { ptr, i64, i64 }, align 16 %a244 = alloca { ptr, i64, i64 }, align 16 %a245 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 + %a246 = alloca { ptr, i64, i64 }, align 16 + %a247 = 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 + %a252 = alloca { ptr, i64, i64 }, align 16 + %a256 = alloca { ptr, i64, i64 }, align 16 + %a257 = alloca { ptr, i64, i64 }, 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 + %a263 = alloca { ptr, i64, i64 }, align 16 + %a266 = alloca { ptr, i64, i64 }, align 16 + %a267 = alloca { ptr, i64, i64 }, align 16 + %a268 = 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 + %a274 = alloca { ptr, i64, i64 }, align 16 + %a276 = 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 + %a287 = alloca { ptr, i64, i64 }, align 16 + %a288 = alloca { ptr, i64, i64 }, align 16 + %a289 = 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 + %a294 = alloca { ptr, i64, i64 }, align 16 + %a296 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 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.5469, i64 11, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.5684, 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 %panic8103, label %ok8104 -panic8103: - call void @finch_panic(ptr @.str.5470, i64 4936, ptr @.str.5471) + store { ptr, i64, i64 } %t4, ptr %a8 + call void @finch_str_drop(ptr %a8) + %t9 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } %t9, ptr %a10 + %t11 = load ptr, ptr %a1 + %t12 = icmp eq ptr %t11, null + br i1 %t12, label %panic8567, label %ok8568 +panic8567: + call void @finch_panic(ptr @.str.5685, i64 5349, ptr @.str.5686) unreachable -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 %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 -endif8107: - %t20 = load ptr, ptr %a1 - %t21 = icmp eq ptr %t20, null - br i1 %t21, label %panic8108, label %ok8109 -panic8108: - call void @finch_panic(ptr @.str.5472, i64 4939, ptr @.str.5473) +ok8568: + %t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 22 + %t14 = load { ptr, i64, i64 }, ptr %t13 + %t15 = load { ptr, i64, i64 }, ptr %a10 + %t16 = call i1 @finch.gen.has({ ptr, i64, i64 } %t14, { ptr, i64, i64 } %t15) + br i1 %t16, label %then8569, label %endif8571 +then8569: + %t17 = load { ptr, i64, i64 }, ptr %a10 + ret { ptr, i64, i64 } %t17 +endif8571: + %t18 = load ptr, ptr %a1 + %t19 = icmp eq ptr %t18, null + br i1 %t19, label %panic8572, label %ok8573 +panic8572: + call void @finch_panic(ptr @.str.5687, i64 5352, ptr @.str.5688) unreachable -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 - store { ptr, i64, i64 } %t24, ptr %a25 - call void @finch_str_copy(ptr %a26, ptr %a25) - %t27 = load { ptr, i64, i64 }, ptr %a26 - %t28 = load i64, ptr %t23 - %t29 = add i64 %t28, 1 - call void @finch_arr_reserve(ptr %t22, i64 %t29, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t30 = load ptr, ptr %t22 - %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t30, i64 %t28 - store { ptr, i64, i64 } %t27, ptr %t31 - store i64 %t29, ptr %t23 - %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.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.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 %then8110, label %else8111 -then8110: - %t42 = load ptr, ptr %a1 - %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.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.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 %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.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.5480, i64 2, i64 0 }) - store { ptr, i64, i64 } %t66, ptr %a67 - 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 %then8113, label %else8114 -then8113: - %t72 = load ptr, ptr %a1 - %t73 = load { ptr, i64, i64 }, ptr %a59 - 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.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 - store { ptr, i64, i64 } %t81, 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.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 - 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 - %t96 = call { ptr, i64, i64 } @finch.gen.op(ptr %t72, { ptr, i64, i64 } %t95) - 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.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.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 - store { ptr, i64, i64 } %t106, ptr %a109 +ok8573: + %t20 = getelementptr inbounds %S.gen.Gen, ptr %t18, i32 0, i32 22 + %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t20, i32 0, i32 1 + %t22 = load { ptr, i64, i64 }, ptr %a10 + 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 + %t30 = load ptr, ptr %a1 + %t31 = call %S.gen.Saved @finch.gen.beginHelper(ptr %t30) + store %S.gen.Saved %t31, ptr %a32 + store { ptr, i64, i64 } { ptr @.str.5689, i64 0, i64 0 }, ptr %a33 + %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.5690, 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 %then8574, label %else8575 +then8574: + %t40 = load ptr, ptr %a1 + %t41 = call { ptr, i64, i64 } @finch.gen.op(ptr %t40, { ptr, i64, i64 } { ptr @.str.5691, i64 39, i64 0 }) + store { ptr, i64, i64 } %t41, ptr %a42 + %t43 = load ptr, ptr %a1 + %t44 = load { ptr, i64, i64 }, ptr %a42 + store { ptr, i64, i64 } { ptr @.str.5692, i64 10, 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 + store { ptr, i64, i64 } %t48, ptr %a50 + store { ptr, i64, i64 } { ptr @.str.5693, i64 7, i64 0 }, ptr %a51 + call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) + store { ptr, i64, i64 } %t48, ptr %a52 + call void @finch_str_drop(ptr %a52) + %t53 = load { ptr, i64, i64 }, ptr %a49 + %t54 = call { ptr, i64, i64 } @finch.gen.op(ptr %t43, { ptr, i64, i64 } %t53) + store { ptr, i64, i64 } %t53, ptr %a55 + call void @finch_str_drop(ptr %a55) + %t56 = load { ptr, i64, i64 }, ptr %a33 + store { ptr, i64, i64 } %t54, ptr %a33 + store { ptr, i64, i64 } %t56, ptr %a57 + call void @finch_str_drop(ptr %a57) + call void @finch_str_drop(ptr %a42) + br label %endif8576 +else8575: + %t58 = load ptr, ptr %a1 + %t59 = load %S.ast.Type, ptr %a2 + %t60 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t58, %S.ast.Type %t59) + store { ptr, i64, i64 } %t60, ptr %a61 + %t62 = load ptr, ptr %a1 + %t63 = load { ptr, i64, i64 }, ptr %a61 + %t64 = call { ptr, i64, i64 } @finch.gen.load(ptr %t62, { ptr, i64, i64 } %t63, { ptr, i64, i64 } { ptr @.str.5694, i64 2, i64 0 }) + store { ptr, i64, i64 } %t64, ptr %a65 + %t66 = load ptr, ptr %a1 + %t67 = load { ptr, i64, i64 }, ptr %a61 + %t68 = call { ptr, i64, i64 } @finch.gen.load(ptr %t66, { ptr, i64, i64 } %t67, { ptr, i64, i64 } { ptr @.str.5695, i64 2, i64 0 }) + store { ptr, i64, i64 } %t68, ptr %a69 + store { ptr, i64, i64 } { ptr @.str.5696, i64 0, i64 0 }, ptr %a70 + store { ptr, i64, i64 } { ptr @.str.5697, i64 0, i64 0 }, ptr %a71 + %t72 = load %S.ast.Type, ptr %a2 + %t73 = call i1 @finch.gen.isFloat(%S.ast.Type %t72) + br i1 %t73, label %then8577, label %else8578 +then8577: + %t74 = load ptr, ptr %a1 + %t75 = load { ptr, i64, i64 }, ptr %a61 + store { ptr, i64, i64 } { ptr @.str.5698, 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.5699, i64 1, i64 0 }, ptr %a82 + call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82) + store { ptr, i64, i64 } %t79, ptr %a83 + call void @finch_str_drop(ptr %a83) + %t84 = load { ptr, i64, i64 }, ptr %a80 + %t85 = load { ptr, i64, i64 }, ptr %a65 + store { ptr, i64, i64 } %t84, ptr %a87 + store { ptr, i64, i64 } %t85, ptr %a88 + call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) + store { ptr, i64, i64 } %t84, ptr %a89 + call void @finch_str_drop(ptr %a89) + %t90 = load { ptr, i64, i64 }, ptr %a86 + store { ptr, i64, i64 } %t90, ptr %a92 + store { ptr, i64, i64 } { ptr @.str.5700, i64 2, i64 0 }, ptr %a93 + call void @finch_str_concat(ptr %a91, ptr %a92, ptr %a93) + store { ptr, i64, i64 } %t90, ptr %a94 + call void @finch_str_drop(ptr %a94) + %t95 = load { ptr, i64, i64 }, ptr %a91 + %t96 = load { ptr, i64, i64 }, ptr %a69 + store { ptr, i64, i64 } %t95, ptr %a98 + store { ptr, i64, i64 } %t96, ptr %a99 + call void @finch_str_concat(ptr %a97, ptr %a98, ptr %a99) + store { ptr, i64, i64 } %t95, ptr %a100 + call void @finch_str_drop(ptr %a100) + %t101 = load { ptr, i64, i64 }, ptr %a97 + %t102 = call { ptr, i64, i64 } @finch.gen.op(ptr %t74, { ptr, i64, i64 } %t101) + store { ptr, i64, i64 } %t101, ptr %a103 + call void @finch_str_drop(ptr %a103) + %t104 = load { ptr, i64, i64 }, ptr %a70 + store { ptr, i64, i64 } %t102, ptr %a70 + store { ptr, i64, i64 } %t104, ptr %a105 + call void @finch_str_drop(ptr %a105) + %t106 = load ptr, ptr %a1 + %t107 = load { ptr, i64, i64 }, ptr %a61 + store { ptr, i64, i64 } { ptr @.str.5701, i64 9, 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.5488, i64 2, i64 0 }, ptr %a114 + store { ptr, i64, i64 } { ptr @.str.5702, i64 1, 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 - store { ptr, i64, i64 } %t115, ptr %a118 + store { ptr, i64, i64 } %t111, ptr %a115 + call void @finch_str_drop(ptr %a115) + %t116 = load { ptr, i64, i64 }, ptr %a112 + %t117 = load { ptr, i64, i64 }, ptr %a65 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 = call { ptr, i64, i64 } @finch.gen.op(ptr %t97, { ptr, i64, i64 } %t120) - store { ptr, i64, i64 } %t121, ptr %a69 - 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.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.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 - store { ptr, i64, i64 } %t133, 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.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 - store { ptr, i64, i64 } %t142, ptr %a145 - store { ptr, i64, i64 } %t143, ptr %a146 - 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.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 + store { ptr, i64, i64 } %t117, ptr %a120 + call void @finch_str_concat(ptr %a118, ptr %a119, ptr %a120) + store { ptr, i64, i64 } %t116, ptr %a121 + call void @finch_str_drop(ptr %a121) + %t122 = load { ptr, i64, i64 }, ptr %a118 + store { ptr, i64, i64 } %t122, ptr %a124 + store { ptr, i64, i64 } { ptr @.str.5703, i64 2, i64 0 }, ptr %a125 + call void @finch_str_concat(ptr %a123, ptr %a124, ptr %a125) + store { ptr, i64, i64 } %t122, ptr %a126 + call void @finch_str_drop(ptr %a126) + %t127 = load { ptr, i64, i64 }, ptr %a123 + %t128 = load { ptr, i64, i64 }, ptr %a69 + store { ptr, i64, i64 } %t127, ptr %a130 + store { ptr, i64, i64 } %t128, ptr %a131 + call void @finch_str_concat(ptr %a129, ptr %a130, ptr %a131) + store { ptr, i64, i64 } %t127, ptr %a132 + call void @finch_str_drop(ptr %a132) + %t133 = load { ptr, i64, i64 }, ptr %a129 + %t134 = call { ptr, i64, i64 } @finch.gen.op(ptr %t106, { ptr, i64, i64 } %t133) + store { ptr, i64, i64 } %t133, ptr %a135 + call void @finch_str_drop(ptr %a135) + %t136 = load { ptr, i64, i64 }, ptr %a71 + store { ptr, i64, i64 } %t134, ptr %a71 + store { ptr, i64, i64 } %t136, ptr %a137 + call void @finch_str_drop(ptr %a137) + br label %endif8579 +else8578: + %t138 = load ptr, ptr %a1 + %t139 = load %S.ast.Type, ptr %a2 + %t140 = call i1 @finch.gen.isSigned(%S.ast.Type %t139) + %t141 = call { ptr, i64, i64 } @finch.gen.intPred({ ptr, i64, i64 } { ptr @.str.5705, i64 1, i64 0 }, i1 %t140) + store { ptr, i64, i64 } { ptr @.str.5704, i64 5, i64 0 }, ptr %a143 + store { ptr, i64, i64 } %t141, ptr %a144 + call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144) + store { ptr, i64, i64 } %t141, ptr %a145 + call void @finch_str_drop(ptr %a145) + %t146 = load { ptr, i64, i64 }, ptr %a142 + store { ptr, i64, i64 } %t146, ptr %a148 + store { ptr, i64, i64 } { ptr @.str.5706, i64 1, i64 0 }, ptr %a149 + call void @finch_str_concat(ptr %a147, ptr %a148, ptr %a149) + store { ptr, i64, i64 } %t146, ptr %a150 + call void @finch_str_drop(ptr %a150) + %t151 = load { ptr, i64, i64 }, ptr %a147 + %t152 = load { ptr, i64, i64 }, ptr %a61 store { ptr, i64, i64 } %t151, 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 - %t157 = call { ptr, i64, i64 } @finch.gen.op(ptr %t122, { ptr, i64, i64 } %t156) - store { ptr, i64, i64 } %t157, ptr %a68 - %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.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.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 - store { ptr, i64, i64 } %t169, 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.5497, i64 1, i64 0 }, ptr %a177 + store { ptr, i64, i64 } %t151, ptr %a156 + call void @finch_str_drop(ptr %a156) + %t157 = load { ptr, i64, i64 }, ptr %a153 + store { ptr, i64, i64 } %t157, ptr %a159 + store { ptr, i64, i64 } { ptr @.str.5707, i64 1, i64 0 }, ptr %a160 + call void @finch_str_concat(ptr %a158, ptr %a159, ptr %a160) + store { ptr, i64, i64 } %t157, ptr %a161 + call void @finch_str_drop(ptr %a161) + %t162 = load { ptr, i64, i64 }, ptr %a158 + %t163 = load { ptr, i64, i64 }, ptr %a65 + store { ptr, i64, i64 } %t162, ptr %a165 + store { ptr, i64, i64 } %t163, ptr %a166 + call void @finch_str_concat(ptr %a164, ptr %a165, ptr %a166) + store { ptr, i64, i64 } %t162, ptr %a167 + call void @finch_str_drop(ptr %a167) + %t168 = load { ptr, i64, i64 }, ptr %a164 + store { ptr, i64, i64 } %t168, ptr %a170 + store { ptr, i64, i64 } { ptr @.str.5708, i64 2, i64 0 }, ptr %a171 + call void @finch_str_concat(ptr %a169, ptr %a170, ptr %a171) + store { ptr, i64, i64 } %t168, ptr %a172 + call void @finch_str_drop(ptr %a172) + %t173 = load { ptr, i64, i64 }, ptr %a169 + %t174 = load { ptr, i64, i64 }, ptr %a69 + store { ptr, i64, i64 } %t173, ptr %a176 + store { ptr, i64, i64 } %t174, 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 - store { ptr, i64, i64 } %t178, 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.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 + store { ptr, i64, i64 } %t173, ptr %a178 + call void @finch_str_drop(ptr %a178) + %t179 = load { ptr, i64, i64 }, ptr %a175 + %t180 = call { ptr, i64, i64 } @finch.gen.op(ptr %t138, { ptr, i64, i64 } %t179) + store { ptr, i64, i64 } %t179, ptr %a181 + call void @finch_str_drop(ptr %a181) + %t182 = load { ptr, i64, i64 }, ptr %a70 + store { ptr, i64, i64 } %t180, ptr %a70 + store { ptr, i64, i64 } %t182, ptr %a183 + call void @finch_str_drop(ptr %a183) + %t184 = load ptr, ptr %a1 + %t185 = load %S.ast.Type, ptr %a2 + %t186 = call i1 @finch.gen.isSigned(%S.ast.Type %t185) + %t187 = call { ptr, i64, i64 } @finch.gen.intPred({ ptr, i64, i64 } { ptr @.str.5710, i64 1, i64 0 }, i1 %t186) + store { ptr, i64, i64 } { ptr @.str.5709, i64 5, i64 0 }, ptr %a189 store { ptr, i64, i64 } %t187, 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 - %t193 = call { ptr, i64, i64 } @finch.gen.op(ptr %t158, { ptr, i64, i64 } %t192) - store { ptr, i64, i64 } %t193, ptr %a69 - 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.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.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.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.5502, i64 2, i64 0 }, ptr %a212 + call void @finch_str_concat(ptr %a188, ptr %a189, ptr %a190) + store { ptr, i64, i64 } %t187, ptr %a191 + call void @finch_str_drop(ptr %a191) + %t192 = load { ptr, i64, i64 }, ptr %a188 + store { ptr, i64, i64 } %t192, ptr %a194 + store { ptr, i64, i64 } { ptr @.str.5711, i64 1, i64 0 }, ptr %a195 + call void @finch_str_concat(ptr %a193, ptr %a194, ptr %a195) + store { ptr, i64, i64 } %t192, ptr %a196 + call void @finch_str_drop(ptr %a196) + %t197 = load { ptr, i64, i64 }, ptr %a193 + %t198 = load { ptr, i64, i64 }, ptr %a61 + store { ptr, i64, i64 } %t197, ptr %a200 + store { ptr, i64, i64 } %t198, ptr %a201 + call void @finch_str_concat(ptr %a199, ptr %a200, ptr %a201) + store { ptr, i64, i64 } %t197, ptr %a202 + call void @finch_str_drop(ptr %a202) + %t203 = load { ptr, i64, i64 }, ptr %a199 + store { ptr, i64, i64 } %t203, ptr %a205 + store { ptr, i64, i64 } { ptr @.str.5712, i64 1, i64 0 }, ptr %a206 + call void @finch_str_concat(ptr %a204, ptr %a205, ptr %a206) + store { ptr, i64, i64 } %t203, ptr %a207 + call void @finch_str_drop(ptr %a207) + %t208 = load { ptr, i64, i64 }, ptr %a204 + %t209 = load { ptr, i64, i64 }, ptr %a65 + store { ptr, i64, i64 } %t208, ptr %a211 + store { ptr, i64, i64 } %t209, 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.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.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) - store { ptr, i64, i64 } %t213, 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 - %t229 = call { ptr, i64, i64 } @finch.gen.op(ptr %t194, { ptr, i64, i64 } %t228) - store { ptr, i64, i64 } %t229, ptr %a35 - br label %endif8112 -endif8112: + store { ptr, i64, i64 } %t208, ptr %a213 + call void @finch_str_drop(ptr %a213) + %t214 = load { ptr, i64, i64 }, ptr %a210 + store { ptr, i64, i64 } %t214, ptr %a216 + store { ptr, i64, i64 } { ptr @.str.5713, i64 2, i64 0 }, ptr %a217 + call void @finch_str_concat(ptr %a215, ptr %a216, ptr %a217) + store { ptr, i64, i64 } %t214, ptr %a218 + call void @finch_str_drop(ptr %a218) + %t219 = load { ptr, i64, i64 }, ptr %a215 + %t220 = load { ptr, i64, i64 }, ptr %a69 + store { ptr, i64, i64 } %t219, ptr %a222 + store { ptr, i64, i64 } %t220, ptr %a223 + call void @finch_str_concat(ptr %a221, ptr %a222, ptr %a223) + store { ptr, i64, i64 } %t219, ptr %a224 + call void @finch_str_drop(ptr %a224) + %t225 = load { ptr, i64, i64 }, ptr %a221 + %t226 = call { ptr, i64, i64 } @finch.gen.op(ptr %t184, { ptr, i64, i64 } %t225) + store { ptr, i64, i64 } %t225, ptr %a227 + call void @finch_str_drop(ptr %a227) + %t228 = load { ptr, i64, i64 }, ptr %a71 + store { ptr, i64, i64 } %t226, ptr %a71 + store { ptr, i64, i64 } %t228, ptr %a229 + call void @finch_str_drop(ptr %a229) + br label %endif8579 +endif8579: %t230 = load ptr, ptr %a1 - %t231 = load { ptr, i64, i64 }, ptr %a35 - 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 - call void @finch.gen.emit(ptr %t230, { ptr, i64, i64 } %t235) - %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.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.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) - %t247 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t247, ptr %a248 - call void @finch_str_copy(ptr %a249, ptr %a248) - %t250 = load { ptr, i64, i64 }, ptr %a249 - ret { ptr, i64, i64 } %t250 + %t231 = load ptr, ptr %a1 + %t232 = load { ptr, i64, i64 }, ptr %a71 + store { ptr, i64, i64 } { ptr @.str.5715, i64 8, 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 + store { ptr, i64, i64 } %t236, ptr %a238 + store { ptr, i64, i64 } { ptr @.str.5716, i64 7, i64 0 }, ptr %a239 + call void @finch_str_concat(ptr %a237, ptr %a238, ptr %a239) + store { ptr, i64, i64 } %t236, ptr %a240 + call void @finch_str_drop(ptr %a240) + %t241 = load { ptr, i64, i64 }, ptr %a237 + %t242 = call { ptr, i64, i64 } @finch.gen.op(ptr %t231, { ptr, i64, i64 } %t241) + store { ptr, i64, i64 } %t241, ptr %a243 + call void @finch_str_drop(ptr %a243) + store { ptr, i64, i64 } { ptr @.str.5714, i64 8, i64 0 }, ptr %a245 + store { ptr, i64, i64 } %t242, ptr %a246 + call void @finch_str_concat(ptr %a244, ptr %a245, ptr %a246) + store { ptr, i64, i64 } %t242, ptr %a247 + call void @finch_str_drop(ptr %a247) + %t248 = load { ptr, i64, i64 }, ptr %a244 + store { ptr, i64, i64 } %t248, ptr %a250 + store { ptr, i64, i64 } { ptr @.str.5717, i64 2, i64 0 }, ptr %a251 + call void @finch_str_concat(ptr %a249, ptr %a250, ptr %a251) + store { ptr, i64, i64 } %t248, ptr %a252 + call void @finch_str_drop(ptr %a252) + %t253 = load { ptr, i64, i64 }, ptr %a249 + %t254 = load ptr, ptr %a1 + %t255 = load { ptr, i64, i64 }, ptr %a70 + store { ptr, i64, i64 } { ptr @.str.5718, i64 8, i64 0 }, ptr %a257 + store { ptr, i64, i64 } %t255, ptr %a258 + call void @finch_str_concat(ptr %a256, ptr %a257, ptr %a258) + %t259 = load { ptr, i64, i64 }, ptr %a256 + store { ptr, i64, i64 } %t259, ptr %a261 + store { ptr, i64, i64 } { ptr @.str.5719, i64 7, i64 0 }, ptr %a262 + call void @finch_str_concat(ptr %a260, ptr %a261, ptr %a262) + store { ptr, i64, i64 } %t259, ptr %a263 + call void @finch_str_drop(ptr %a263) + %t264 = load { ptr, i64, i64 }, ptr %a260 + %t265 = call { ptr, i64, i64 } @finch.gen.op(ptr %t254, { ptr, i64, i64 } %t264) + store { ptr, i64, i64 } %t264, ptr %a266 + call void @finch_str_drop(ptr %a266) + store { ptr, i64, i64 } %t253, ptr %a268 + store { ptr, i64, i64 } %t265, ptr %a269 + call void @finch_str_concat(ptr %a267, ptr %a268, ptr %a269) + store { ptr, i64, i64 } %t253, ptr %a270 + call void @finch_str_drop(ptr %a270) + store { ptr, i64, i64 } %t265, ptr %a271 + call void @finch_str_drop(ptr %a271) + %t272 = load { ptr, i64, i64 }, ptr %a267 + %t273 = call { ptr, i64, i64 } @finch.gen.op(ptr %t230, { ptr, i64, i64 } %t272) + store { ptr, i64, i64 } %t272, ptr %a274 + call void @finch_str_drop(ptr %a274) + %t275 = load { ptr, i64, i64 }, ptr %a33 + store { ptr, i64, i64 } %t273, ptr %a33 + store { ptr, i64, i64 } %t275, ptr %a276 + call void @finch_str_drop(ptr %a276) + call void @finch_str_drop(ptr %a71) + call void @finch_str_drop(ptr %a70) + call void @finch_str_drop(ptr %a69) + call void @finch_str_drop(ptr %a65) + call void @finch_str_drop(ptr %a61) + br label %endif8576 +endif8576: + %t277 = load ptr, ptr %a1 + %t278 = load { ptr, i64, i64 }, ptr %a33 + store { ptr, i64, i64 } { ptr @.str.5720, i64 8, i64 0 }, ptr %a280 + store { ptr, i64, i64 } %t278, 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 %t277, { ptr, i64, i64 } %t282) + store { ptr, i64, i64 } %t282, ptr %a283 + call void @finch_str_drop(ptr %a283) + %t284 = load ptr, ptr %a1 + %t285 = load %S.gen.Saved, ptr %a32 + %t286 = load { ptr, i64, i64 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.5721, i64 20, i64 0 }, ptr %a288 + store { ptr, i64, i64 } %t286, ptr %a289 + call void @finch_str_concat(ptr %a287, ptr %a288, ptr %a289) + %t290 = load { ptr, i64, i64 }, ptr %a287 + store { ptr, i64, i64 } %t290, ptr %a292 + store { ptr, i64, i64 } { ptr @.str.5722, i64 16, i64 0 }, ptr %a293 + call void @finch_str_concat(ptr %a291, ptr %a292, ptr %a293) + store { ptr, i64, i64 } %t290, ptr %a294 + call void @finch_str_drop(ptr %a294) + %t295 = load { ptr, i64, i64 }, ptr %a291 + call void @finch.gen.endHelper(ptr %t284, %S.gen.Saved %t285, { ptr, i64, i64 } %t295) + store { ptr, i64, i64 } %t295, ptr %a296 + call void @finch_str_drop(ptr %a296) + %t297 = load { ptr, i64, i64 }, ptr %a10 + call void @finch_str_drop(ptr %a33) + call void @finch.drop.S_gen_Saved(ptr %a32) + ret { ptr, i64, i64 } %t297 } define internal %S.gen.Val @finch.gen.strMethod(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2) { @@ -74534,239 +89600,328 @@ entry: %a26 = alloca { ptr, i64, i64 }, align 16 %a28 = alloca { ptr, i64, i64 }, align 16 %a29 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 + %a53 = alloca %S.gen.Val, align 16 + %a54 = alloca %S.ast.Type, align 16 + %a56 = alloca { ptr, i64, i64 }, align 16 %a57 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 + %a59 = alloca %S.gen.Val, align 16 + %a60 = alloca { ptr, i64, i64 }, align 16 + %a80 = alloca %S.gen.Val, align 16 + %a81 = alloca %S.ast.Type, align 16 + %a83 = 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 + %a86 = alloca %S.gen.Val, align 16 + %a87 = alloca { ptr, i64, i64 }, align 16 %a90 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 + %a91 = 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 %a97 = 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 + %a101 = 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 %a106 = alloca { ptr, i64, i64 }, align 16 %a107 = alloca { ptr, i64, i64 }, align 16 %a108 = 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 - %a115 = 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 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 + %a118 = 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 %a125 = 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 - %a132 = alloca { ptr, i64, i64 }, align 16 %a133 = 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 - %a137 = 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 + %a141 = alloca { ptr, i64, i64 }, align 16 + %a145 = alloca { ptr, i64, i64 }, align 16 + %a147 = alloca { ptr, i64, i64 }, align 16 %a148 = 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 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 + %a155 = alloca { ptr, i64, i64 }, align 16 + %a156 = alloca { ptr, i64, i64 }, align 16 + %a158 = alloca { ptr, i64, i64 }, align 16 + %a167 = alloca { ptr, i64, i64 }, align 16 + %a168 = alloca { ptr, i64, i64 }, align 16 + %a172 = alloca { ptr, i64, i64 }, align 16 + %a173 = alloca { ptr, i64, i64 }, align 16 + %a178 = alloca { ptr, i64, i64 }, align 16 + %a179 = 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 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a193 = 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 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 + %a200 = alloca %S.gen.Val, align 16 %a204 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 %a206 = alloca { ptr, i64, i64 }, align 16 + %a207 = 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 + %a216 = alloca { ptr, i64, i64 }, align 16 + %a217 = alloca { ptr, i64, i64 }, align 16 + %a218 = 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 + %a222 = 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 + %a227 = 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 - %a232 = alloca { ptr, i64, i64 }, align 16 %a233 = alloca { ptr, i64, i64 }, align 16 %a234 = alloca { ptr, i64, i64 }, align 16 - %a237 = 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 + %a238 = alloca { ptr, i64, i64 }, align 16 + %a239 = 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 { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 + %a253 = alloca { ptr, i64, i64 }, align 16 %a255 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 + %a256 = alloca { ptr, i64, i64 }, align 16 + %a257 = alloca { ptr, i64, i64 }, align 16 + %a258 = alloca { ptr, i64, i64 }, align 16 %a261 = alloca { ptr, i64, i64 }, align 16 %a262 = alloca { ptr, i64, i64 }, align 16 + %a263 = 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 + %a267 = alloca { ptr, i64, i64 }, align 16 + %a268 = 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 %a273 = 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 %a278 = 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 %a282 = alloca { ptr, i64, i64 }, align 16 %a283 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 + %a286 = alloca { ptr, i64, i64 }, align 16 %a287 = 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 - %a303 = 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 %a304 = 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 %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 + %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 %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 - %a332 = 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 %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 + %a339 = alloca { ptr, i64, i64 }, align 16 + %a340 = 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 - %a346 = alloca { ptr, i64, i64 }, align 16 %a347 = alloca { ptr, i64, i64 }, align 16 - %a357 = alloca { ptr, i64, i64 }, align 16 + %a348 = alloca { ptr, i64, i64 }, align 16 + %a349 = alloca { ptr, i64, i64 }, align 16 + %a350 = alloca { ptr, i64, i64 }, align 16 + %a353 = alloca { ptr, i64, i64 }, align 16 + %a354 = alloca { ptr, i64, i64 }, align 16 %a358 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 + %a359 = 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 + %a376 = alloca { ptr, i64, i64 }, align 16 + %a377 = alloca { ptr, i64, i64 }, align 16 + %a385 = alloca { ptr, i64, i64 }, align 16 %a386 = alloca { ptr, i64, i64 }, align 16 + %a387 = 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 - %a393 = alloca { ptr, i64, i64 }, align 16 - %a394 = alloca { ptr, i64, i64 }, align 16 + %a392 = 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 %a398 = alloca { ptr, i64, i64 }, align 16 - %a399 = 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 + %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 - %a432 = alloca { ptr, i64, i64 }, align 16 - %a433 = alloca { ptr, i64, i64 }, align 16 - %a449 = 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 + %a425 = alloca { ptr, i64, i64 }, align 16 + %a426 = alloca { ptr, i64, i64 }, align 16 + %a440 = alloca %S.gen.Val, align 16 + %a446 = alloca i64, align 16 + %a458 = alloca %S.gen.Val, align 16 %a464 = alloca { ptr, i64, i64 }, align 16 - %a465 = alloca { ptr, i64, i64 }, align 16 - %a466 = alloca { ptr, i64, i64 }, align 16 %a468 = 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 + %a472 = 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 + %a476 = alloca { ptr, i64, i64 }, align 16 %a477 = alloca { ptr, i64, i64 }, align 16 %a478 = alloca { ptr, i64, i64 }, align 16 - %a479 = alloca { ptr, i64, i64 }, align 16 - %a490 = alloca { ptr, i64, i64 }, align 16 - %a491 = alloca { ptr, i64, i64 }, align 16 - %a516 = alloca { ptr, i64, i64 }, align 16 - %a517 = alloca { ptr, i64, i64 }, align 16 - %a519 = 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 + %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 + %a489 = alloca { ptr, i64, i64 }, align 16 + %a492 = 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 + %a497 = alloca { ptr, i64, i64 }, align 16 + %a498 = alloca { ptr, i64, i64 }, align 16 + %a499 = alloca { ptr, i64, i64 }, align 16 + %a500 = alloca { ptr, i64, i64 }, align 16 + %a503 = alloca { ptr, i64, i64 }, align 16 + %a504 = alloca { ptr, i64, i64 }, align 16 + %a505 = alloca { ptr, i64, i64 }, align 16 + %a506 = alloca { ptr, i64, i64 }, align 16 + %a508 = alloca { ptr, i64, i64 }, align 16 + %a509 = alloca { ptr, i64, i64 }, align 16 + %a510 = alloca { ptr, i64, i64 }, align 16 + %a511 = alloca { ptr, i64, i64 }, align 16 + %a513 = alloca { ptr, i64, i64 }, align 16 %a526 = alloca { ptr, i64, i64 }, align 16 %a527 = alloca { ptr, i64, i64 }, align 16 - %a528 = 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 - %a535 = alloca { ptr, i64, i64 }, align 16 - %a536 = alloca { ptr, i64, i64 }, align 16 - %a537 = alloca { ptr, i64, i64 }, align 16 - %a540 = alloca { ptr, i64, i64 }, align 16 - %a541 = alloca { ptr, i64, i64 }, align 16 - %a542 = alloca { ptr, i64, i64 }, align 16 - %a544 = alloca { ptr, i64, i64 }, align 16 + %a541 = alloca %S.gen.Val, align 16 %a545 = alloca { ptr, i64, i64 }, align 16 - %a546 = alloca { ptr, i64, i64 }, align 16 + %a548 = alloca { ptr, i64, i64 }, align 16 + %a551 = alloca { ptr, i64, i64 }, align 16 + %a552 = alloca { ptr, i64, i64 }, align 16 + %a553 = alloca { ptr, i64, i64 }, align 16 + %a555 = 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 + %a561 = alloca { ptr, i64, i64 }, align 16 + %a562 = alloca { ptr, i64, i64 }, align 16 + %a563 = alloca { ptr, i64, i64 }, align 16 %a564 = alloca { ptr, i64, i64 }, align 16 + %a566 = alloca { ptr, i64, i64 }, align 16 %a567 = alloca { ptr, i64, i64 }, align 16 %a568 = alloca { ptr, i64, i64 }, align 16 %a569 = alloca { ptr, i64, i64 }, align 16 - %a571 = alloca { ptr, i64, i64 }, align 16 %a572 = alloca { ptr, i64, i64 }, align 16 %a573 = alloca { ptr, i64, i64 }, align 16 - %a576 = alloca { ptr, i64, i64 }, align 16 + %a574 = alloca { ptr, i64, i64 }, align 16 + %a575 = alloca { ptr, i64, i64 }, align 16 %a577 = alloca { ptr, i64, i64 }, align 16 %a578 = alloca { ptr, i64, i64 }, align 16 + %a579 = alloca { ptr, i64, i64 }, align 16 %a580 = alloca { ptr, i64, i64 }, align 16 - %a581 = alloca { ptr, i64, i64 }, align 16 %a582 = alloca { ptr, i64, i64 }, align 16 + %a591 = alloca %S.ast.Type, align 16 %a595 = alloca { ptr, i64, i64 }, align 16 %a596 = alloca { ptr, i64, i64 }, align 16 - %a597 = alloca { ptr, i64, i64 }, align 16 - %a599 = alloca { ptr, i64, i64 }, align 16 - %a600 = alloca { ptr, i64, i64 }, align 16 - %a601 = alloca { ptr, i64, i64 }, align 16 + %a620 = alloca %S.gen.Val, align 16 + %a621 = alloca %S.ast.Type, align 16 + %a623 = alloca { ptr, i64, i64 }, align 16 + %a624 = alloca { ptr, i64, i64 }, align 16 + %a626 = alloca %S.gen.Val, 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 + %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 + %a640 = 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 + %a648 = 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 + %a654 = 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 + %a661 = alloca { ptr, i64, i64 }, align 16 + %a670 = alloca { ptr, i64, i64 }, align 16 + %a671 = alloca { ptr, i64, i64 }, align 16 + %a678 = 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 + %a687 = alloca { ptr, i64, i64 }, align 16 + %a688 = 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 + %a696 = alloca { ptr, i64, i64 }, align 16 + %a697 = alloca { ptr, i64, i64 }, align 16 + %a698 = alloca { ptr, i64, i64 }, align 16 + %a699 = alloca { ptr, i64, i64 }, align 16 + %a701 = alloca { ptr, i64, i64 }, align 16 + %a708 = alloca %S.ast.Type, align 16 + %a714 = alloca { ptr, i64, i64 }, align 16 + %a715 = alloca { ptr, i64, i64 }, align 16 + %a716 = 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 + %a721 = alloca { ptr, i64, i64 }, align 16 + %a723 = 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 @@ -74782,22 +89937,22 @@ entry: %t13 = load ptr, ptr %a1 %t14 = load ptr, ptr %a1 %t15 = icmp eq ptr %t14, null - br i1 %t15, label %panic8116, label %ok8117 -panic8116: - call void @finch_panic(ptr @.str.5508, i64 4968, ptr @.str.5509) + br i1 %t15, label %panic8580, label %ok8581 +panic8580: + call void @finch_panic(ptr @.str.5723, i64 5381, ptr @.str.5724) unreachable -ok8117: +ok8581: %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 %range8118, label %inrange8119 -range8118: - call void @finch_panic_index(ptr @.str.5510, i64 4968, i64 %t18, i64 %t20) + br i1 %t21, label %range8582, label %inrange8583 +range8582: + call void @finch_panic_index(ptr @.str.5725, i64 5381, i64 %t18, i64 %t20) unreachable -inrange8119: +inrange8583: %t22 = extractvalue { ptr, i64, i64 } %t19, 0 %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t22, i64 %t18 %t24 = load { ptr, i64, i64 }, ptr %t23 @@ -74805,11 +89960,11 @@ inrange8119: 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.5511, i64 3, i64 0 }, ptr %a29 + store { ptr, i64, i64 } { ptr @.str.5726, 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 %then8120, label %endif8122 -then8120: + br i1 %t31, label %then8584, label %endif8586 +then8584: %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) @@ -74819,879 +89974,1151 @@ then8120: %t37 = load { ptr, i64, i64 }, ptr %t36 %t38 = extractvalue { ptr, i64, i64 } %t37, 1 %t39 = icmp uge i64 1, %t38 - br i1 %t39, label %range8123, label %inrange8124 -range8123: - call void @finch_panic_index(ptr @.str.5512, i64 4971, i64 1, i64 %t38) + br i1 %t39, label %range8587, label %inrange8588 +range8587: + call void @finch_panic_index(ptr @.str.5727, i64 5384, i64 1, i64 %t38) unreachable -inrange8124: +inrange8588: %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.5513, i64 3, i64 0 }) + %t44 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5728, 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 %range8125, label %inrange8126 -range8125: - call void @finch_panic_index(ptr @.str.5514, i64 4971, i64 1, i64 %t47) + br i1 %t48, label %range8589, label %inrange8590 +range8589: + call void @finch_panic_index(ptr @.str.5729, i64 5384, i64 1, i64 %t47) unreachable -inrange8126: +inrange8590: %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.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) - %t56 = load { ptr, i64, i64 }, ptr %a55 - store { ptr, i64, i64 } %t56, ptr %a57 - %t58 = load ptr, ptr %a1 - %t59 = load ptr, ptr %a1 - %t60 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t61 = load { ptr, i64, i64 }, ptr %t60 - %t62 = extractvalue { ptr, i64, i64 } %t61, 1 - %t63 = icmp uge i64 2, %t62 - br i1 %t63, label %range8127, label %inrange8128 -range8127: - call void @finch_panic_index(ptr @.str.5516, i64 4972, i64 2, i64 %t62) + %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.5730, i64 9, i64 0 }) + store %S.gen.Val %t43, ptr %a53 + call void @finch.drop.S_gen_Val(ptr %a53) + store %S.ast.Type %t44, ptr %a54 + call void @finch.drop.S_ast_Type(ptr %a54) + %t55 = extractvalue %S.gen.Val %t52, 0 + store { ptr, i64, i64 } %t55, ptr %a56 + call void @finch_str_copy(ptr %a57, ptr %a56) + %t58 = load { ptr, i64, i64 }, ptr %a57 + store %S.gen.Val %t52, ptr %a59 + call void @finch.drop.S_gen_Val(ptr %a59) + store { ptr, i64, i64 } %t58, ptr %a60 + %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 2, %t65 + br i1 %t66, label %range8591, label %inrange8592 +range8591: + call void @finch_panic_index(ptr @.str.5731, i64 5385, i64 2, i64 %t65) unreachable -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.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 %range8129, label %inrange8130 -range8129: - call void @finch_panic_index(ptr @.str.5518, i64 4972, i64 2, i64 %t71) +inrange8592: + %t67 = extractvalue { ptr, i64, i64 } %t64, 0 + %t68 = getelementptr inbounds %S.ast.Node, ptr %t67, i64 2 + %t69 = load %S.ast.Node, ptr %t68 + %t70 = call %S.gen.Val @finch.gen.expr(ptr %t62, %S.ast.Node %t69) + %t71 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5732, i64 3, i64 0 }) + %t72 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t73 = load { ptr, i64, i64 }, ptr %t72 + %t74 = extractvalue { ptr, i64, i64 } %t73, 1 + %t75 = icmp uge i64 2, %t74 + br i1 %t75, label %range8593, label %inrange8594 +range8593: + call void @finch_panic_index(ptr @.str.5733, i64 5385, i64 2, i64 %t74) unreachable -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.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) - %t80 = load { ptr, i64, i64 }, ptr %a79 - 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.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.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 - store { ptr, i64, i64 } %t91, 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.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 - store { ptr, i64, i64 } %t100, 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.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 +inrange8594: + %t76 = extractvalue { ptr, i64, i64 } %t73, 0 + %t77 = getelementptr inbounds %S.ast.Node, ptr %t76, i64 2 + %t78 = load %S.ast.Node, ptr %t77 + %t79 = call %S.gen.Val @finch.gen.coerce(ptr %t61, %S.gen.Val %t70, %S.ast.Type %t71, %S.ast.Node %t78, { ptr, i64, i64 } { ptr @.str.5734, i64 7, i64 0 }) + store %S.gen.Val %t70, ptr %a80 + call void @finch.drop.S_gen_Val(ptr %a80) + store %S.ast.Type %t71, ptr %a81 + call void @finch.drop.S_ast_Type(ptr %a81) + %t82 = extractvalue %S.gen.Val %t79, 0 + store { ptr, i64, i64 } %t82, ptr %a83 + call void @finch_str_copy(ptr %a84, ptr %a83) + %t85 = load { ptr, i64, i64 }, ptr %a84 + store %S.gen.Val %t79, ptr %a86 + call void @finch.drop.S_gen_Val(ptr %a86) + store { ptr, i64, i64 } %t85, ptr %a87 + %t88 = load ptr, ptr %a1 + %t89 = load { ptr, i64, i64 }, ptr %a12 + store { ptr, i64, i64 } { ptr @.str.5735, i64 29, 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.5736, i64 6, i64 0 }, ptr %a96 + call void @finch_str_concat(ptr %a94, ptr %a95, ptr %a96) + store { ptr, i64, i64 } %t93, ptr %a97 + call void @finch_str_drop(ptr %a97) + %t98 = load { ptr, i64, i64 }, ptr %a94 + %t99 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t98, ptr %a101 + store { ptr, i64, i64 } %t99, ptr %a102 + call void @finch_str_concat(ptr %a100, ptr %a101, ptr %a102) + store { ptr, i64, i64 } %t98, ptr %a103 + call void @finch_str_drop(ptr %a103) + %t104 = load { ptr, i64, i64 }, ptr %a100 + store { ptr, i64, i64 } %t104, ptr %a106 + store { ptr, i64, i64 } { ptr @.str.5737, i64 6, i64 0 }, ptr %a107 + call void @finch_str_concat(ptr %a105, ptr %a106, ptr %a107) + store { ptr, i64, i64 } %t104, ptr %a108 + call void @finch_str_drop(ptr %a108) + %t109 = load { ptr, i64, i64 }, ptr %a105 + %t110 = load { ptr, i64, i64 }, ptr %a60 store { ptr, i64, i64 } %t109, ptr %a112 store { ptr, i64, i64 } %t110, 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 %a116 - 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 - store { ptr, i64, i64 } %t118, 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.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 - %t129 = load i64, ptr %t128 - call void @finch_str_from_int(ptr %a130, i64 %t129) - %t131 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } %t127, ptr %a133 + store { ptr, i64, i64 } %t109, ptr %a114 + call void @finch_str_drop(ptr %a114) + %t115 = load { ptr, i64, i64 }, ptr %a111 + store { ptr, i64, i64 } %t115, ptr %a117 + store { ptr, i64, i64 } { ptr @.str.5738, i64 6, i64 0 }, ptr %a118 + call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118) + store { ptr, i64, i64 } %t115, ptr %a119 + call void @finch_str_drop(ptr %a119) + %t120 = load { ptr, i64, i64 }, ptr %a116 + %t121 = load { ptr, i64, i64 }, ptr %a87 + store { ptr, i64, i64 } %t120, ptr %a123 + store { ptr, i64, i64 } %t121, ptr %a124 + call void @finch_str_concat(ptr %a122, ptr %a123, ptr %a124) + store { ptr, i64, i64 } %t120, ptr %a125 + call void @finch_str_drop(ptr %a125) + %t126 = load { ptr, i64, i64 }, ptr %a122 + store { ptr, i64, i64 } %t126, ptr %a128 + store { ptr, i64, i64 } { ptr @.str.5739, i64 6, i64 0 }, ptr %a129 + call void @finch_str_concat(ptr %a127, ptr %a128, ptr %a129) + store { ptr, i64, i64 } %t126, ptr %a130 + call void @finch_str_drop(ptr %a130) + %t131 = load { ptr, i64, i64 }, ptr %a127 + %t132 = load { ptr, i64, i64 }, ptr %a26 store { ptr, i64, i64 } %t131, ptr %a134 - 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.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.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.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 -endif8122: - %t147 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t147, ptr %a148 - 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.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.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.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.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.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.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.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) - %t172 = load ptr, ptr %a1 - %t173 = load ptr, ptr %a1 - %t174 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t175 = load { ptr, i64, i64 }, ptr %t174 - %t176 = extractvalue { ptr, i64, i64 } %t175, 1 - %t177 = icmp uge i64 1, %t176 - br i1 %t177, label %range8146, label %inrange8147 -range8146: - call void @finch_panic_index(ptr @.str.5533, i64 4978, i64 1, i64 %t176) - unreachable -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.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.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 %then8148, label %endif8150 -then8148: + store { ptr, i64, i64 } %t132, ptr %a135 + call void @finch_str_concat(ptr %a133, ptr %a134, ptr %a135) + store { ptr, i64, i64 } %t131, ptr %a136 + call void @finch_str_drop(ptr %a136) + %t137 = load { ptr, i64, i64 }, ptr %a133 + store { ptr, i64, i64 } %t137, ptr %a139 + store { ptr, i64, i64 } { ptr @.str.5740, i64 6, i64 0 }, ptr %a140 + call void @finch_str_concat(ptr %a138, ptr %a139, ptr %a140) + store { ptr, i64, i64 } %t137, ptr %a141 + call void @finch_str_drop(ptr %a141) + %t142 = load { ptr, i64, i64 }, ptr %a138 + %t143 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 + %t144 = load i64, ptr %t143 + call void @finch_str_from_int(ptr %a145, i64 %t144) + %t146 = load { ptr, i64, i64 }, ptr %a145 + store { ptr, i64, i64 } %t142, ptr %a148 + store { ptr, i64, i64 } %t146, ptr %a149 + call void @finch_str_concat(ptr %a147, ptr %a148, ptr %a149) + store { ptr, i64, i64 } %t142, ptr %a150 + call void @finch_str_drop(ptr %a150) + store { ptr, i64, i64 } %t146, ptr %a151 + call void @finch_str_drop(ptr %a151) + %t152 = load { ptr, i64, i64 }, ptr %a147 + store { ptr, i64, i64 } %t152, ptr %a154 + store { ptr, i64, i64 } { ptr @.str.5741, i64 1, i64 0 }, ptr %a155 + call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155) + store { ptr, i64, i64 } %t152, ptr %a156 + call void @finch_str_drop(ptr %a156) + %t157 = load { ptr, i64, i64 }, ptr %a153 + call void @finch.gen.emit(ptr %t88, { ptr, i64, i64 } %t157) + store { ptr, i64, i64 } %t157, ptr %a158 + call void @finch_str_drop(ptr %a158) + %t159 = load ptr, ptr %a1 + %t160 = load { ptr, i64, i64 }, ptr %a12 + %t161 = call { ptr, i64, i64 } @finch.gen.load(ptr %t159, { ptr, i64, i64 } { ptr @.str.5742, i64 17, i64 0 }, { ptr, i64, i64 } %t160) + %t162 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t161, 0 + %t163 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5743, i64 3, i64 0 }) + %t164 = insertvalue %S.gen.Val %t162, %S.ast.Type %t163, 1 + %t165 = insertvalue %S.gen.Val %t164, i1 true, 2 + call void @finch_str_drop(ptr %a87) + call void @finch_str_drop(ptr %a60) + call void @finch_str_drop(ptr %a26) + call void @finch_str_drop(ptr %a12) + call void @finch_str_drop(ptr %a9) + ret %S.gen.Val %t165 +endif8586: + %t166 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t166, ptr %a167 + store { ptr, i64, i64 } { ptr @.str.5744, i64 4, i64 0 }, ptr %a168 + %t169 = call i32 @finch_str_eq(ptr %a167, ptr %a168) + %t170 = icmp ne i32 %t169, 0 + br label %logic.from8595 +logic.from8595: + br i1 %t170, label %logic.end8597, label %logic.rhs8596 +logic.rhs8596: + %t171 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t171, ptr %a172 + store { ptr, i64, i64 } { ptr @.str.5745, i64 8, i64 0 }, ptr %a173 + %t174 = call i32 @finch_str_eq(ptr %a172, ptr %a173) + %t175 = icmp ne i32 %t174, 0 + br label %logic.rend8598 +logic.rend8598: + br label %logic.end8597 +logic.end8597: + %t176 = phi i1 [ true, %logic.from8595 ], [ %t175, %logic.rend8598 ] + br label %logic.from8599 +logic.from8599: + br i1 %t176, label %logic.end8601, label %logic.rhs8600 +logic.rhs8600: + %t177 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t177, ptr %a178 + store { ptr, i64, i64 } { ptr @.str.5746, i64 11, i64 0 }, ptr %a179 + %t180 = call i32 @finch_str_eq(ptr %a178, ptr %a179) + %t181 = icmp ne i32 %t180, 0 + br label %logic.rend8602 +logic.rend8602: + br label %logic.end8601 +logic.end8601: + %t182 = phi i1 [ true, %logic.from8599 ], [ %t181, %logic.rend8602 ] + br label %logic.from8603 +logic.from8603: + br i1 %t182, label %logic.end8605, label %logic.rhs8604 +logic.rhs8604: + %t183 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t183, ptr %a184 + store { ptr, i64, i64 } { ptr @.str.5747, i64 9, i64 0 }, ptr %a185 + %t186 = call i32 @finch_str_eq(ptr %a184, ptr %a185) + %t187 = icmp ne i32 %t186, 0 + br label %logic.rend8606 +logic.rend8606: + br label %logic.end8605 +logic.end8605: + %t188 = phi i1 [ true, %logic.from8603 ], [ %t187, %logic.rend8606 ] + br i1 %t188, label %then8607, label %endif8609 +then8607: %t189 = load ptr, ptr %a1 - %t190 = load { ptr, i64, i64 }, ptr %a3 - 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.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 - store { ptr, i64, i64 } %t198, 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.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.5539, i64 3, i64 0 }) - %t211 = insertvalue %S.gen.Val %t209, %S.ast.Type %t210, 1 - ret %S.gen.Val %t211 -endif8150: - %t212 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t212, ptr %a213 - 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 %then8151, label %endif8153 -then8151: - %t217 = load ptr, ptr %a1 - %t218 = load { ptr, i64, i64 }, ptr %a3 - 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.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 - store { ptr, i64, i64 } %t226, 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 + %t190 = load %S.ast.Node, ptr %a2 + call void @finch.gen.need(ptr %t189, %S.ast.Node %t190, i64 1) + %t191 = load ptr, ptr %a1 + %t192 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t193 = load { ptr, i64, i64 }, ptr %t192 + %t194 = extractvalue { ptr, i64, i64 } %t193, 1 + %t195 = icmp uge i64 1, %t194 + br i1 %t195, label %range8610, label %inrange8611 +range8610: + call void @finch_panic_index(ptr @.str.5748, i64 5391, i64 1, i64 %t194) + unreachable +inrange8611: + %t196 = extractvalue { ptr, i64, i64 } %t193, 0 + %t197 = getelementptr inbounds %S.ast.Node, ptr %t196, i64 1 + %t198 = load %S.ast.Node, ptr %t197 + %t199 = call %S.gen.Val @finch.gen.strArg(ptr %t191, %S.ast.Node %t198, { ptr, i64, i64 } { ptr @.str.5749, i64 20, i64 0 }) + store %S.gen.Val %t199, ptr %a200 + %t201 = load ptr, ptr %a1 + %t202 = load %S.gen.Val, ptr %a200 + %t203 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t201, %S.gen.Val %t202) + store { ptr, i64, i64 } %t203, ptr %a204 + %t205 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t205, ptr %a206 + store { ptr, i64, i64 } { ptr @.str.5750, i64 4, i64 0 }, ptr %a207 + %t208 = call i32 @finch_str_eq(ptr %a206, ptr %a207) + %t209 = icmp ne i32 %t208, 0 + br i1 %t209, label %then8612, label %endif8614 +then8612: + %t210 = load ptr, ptr %a1 + %t211 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } { ptr @.str.5751, i64 29, 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.5752, i64 6, i64 0 }, ptr %a218 + call void @finch_str_concat(ptr %a216, ptr %a217, ptr %a218) + store { ptr, i64, i64 } %t215, ptr %a219 + call void @finch_str_drop(ptr %a219) + %t220 = load { ptr, i64, i64 }, ptr %a216 + %t221 = load { ptr, i64, i64 }, ptr %a204 + store { ptr, i64, i64 } %t220, ptr %a223 + store { ptr, i64, i64 } %t221, ptr %a224 + call void @finch_str_concat(ptr %a222, ptr %a223, ptr %a224) + store { ptr, i64, i64 } %t220, ptr %a225 + call void @finch_str_drop(ptr %a225) + %t226 = load { ptr, i64, i64 }, ptr %a222 + store { ptr, i64, i64 } %t226, ptr %a228 + store { ptr, i64, i64 } { ptr @.str.5753, i64 1, i64 0 }, ptr %a229 + call void @finch_str_concat(ptr %a227, ptr %a228, ptr %a229) + store { ptr, i64, i64 } %t226, ptr %a230 + call void @finch_str_drop(ptr %a230) + %t231 = load { ptr, i64, i64 }, ptr %a227 + %t232 = call { ptr, i64, i64 } @finch.gen.op(ptr %t210, { ptr, i64, i64 } %t231) store { ptr, i64, i64 } %t231, ptr %a233 - 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.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.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.5546, i64 4, i64 0 }) - %t251 = insertvalue %S.gen.Val %t249, %S.ast.Type %t250, 1 - ret %S.gen.Val %t251 -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.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 %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.5550, i64 9, i64 0 }, ptr %a261 + call void @finch_str_drop(ptr %a233) + store { ptr, i64, i64 } %t232, ptr %a234 + %t235 = load ptr, ptr %a1 + %t236 = load %S.gen.Val, ptr %a200 + call void @finch.gen.release(ptr %t235, %S.gen.Val %t236) + %t237 = load { ptr, i64, i64 }, ptr %a234 + store { ptr, i64, i64 } %t237, ptr %a238 + call void @finch_str_copy(ptr %a239, ptr %a238) + %t240 = load { ptr, i64, i64 }, ptr %a239 + %t241 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t240, 0 + %t242 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5754, i64 3, i64 0 }) + %t243 = insertvalue %S.gen.Val %t241, %S.ast.Type %t242, 1 + call void @finch_str_drop(ptr %a234) + call void @finch_str_drop(ptr %a204) + call void @finch.drop.S_gen_Val(ptr %a200) + call void @finch_str_drop(ptr %a26) + call void @finch_str_drop(ptr %a12) + call void @finch_str_drop(ptr %a9) + ret %S.gen.Val %t243 +endif8614: + %t244 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t244, ptr %a245 + store { ptr, i64, i64 } { ptr @.str.5755, i64 8, i64 0 }, ptr %a246 + %t247 = call i32 @finch_str_eq(ptr %a245, ptr %a246) + %t248 = icmp ne i32 %t247, 0 + br i1 %t248, label %then8615, label %endif8617 +then8615: + %t249 = load ptr, ptr %a1 + %t250 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } { ptr @.str.5756, i64 29, 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.5757, i64 6, i64 0 }, ptr %a257 + call void @finch_str_concat(ptr %a255, ptr %a256, ptr %a257) + store { ptr, i64, i64 } %t254, ptr %a258 + call void @finch_str_drop(ptr %a258) + %t259 = load { ptr, i64, i64 }, ptr %a255 + %t260 = load { ptr, i64, i64 }, ptr %a204 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.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 - 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 - store { ptr, i64, i64 } %t272, ptr %a274 - 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 - store { ptr, i64, i64 } %t276, 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.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 + store { ptr, i64, i64 } %t260, ptr %a263 + call void @finch_str_concat(ptr %a261, ptr %a262, ptr %a263) + store { ptr, i64, i64 } %t259, ptr %a264 + call void @finch_str_drop(ptr %a264) + %t265 = load { ptr, i64, i64 }, ptr %a261 + store { ptr, i64, i64 } %t265, ptr %a267 + store { ptr, i64, i64 } { ptr @.str.5758, i64 1, i64 0 }, ptr %a268 + call void @finch_str_concat(ptr %a266, ptr %a267, ptr %a268) + store { ptr, i64, i64 } %t265, ptr %a269 + call void @finch_str_drop(ptr %a269) + %t270 = load { ptr, i64, i64 }, ptr %a266 + %t271 = call { ptr, i64, i64 } @finch.gen.op(ptr %t249, { ptr, i64, i64 } %t270) + store { ptr, i64, i64 } %t270, ptr %a272 + call void @finch_str_drop(ptr %a272) + store { ptr, i64, i64 } %t271, ptr %a273 + %t274 = load ptr, ptr %a1 + %t275 = load { ptr, i64, i64 }, ptr %a273 + store { ptr, i64, i64 } { ptr @.str.5759, i64 13, 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.5760, i64 3, i64 0 }, ptr %a282 + call void @finch_str_concat(ptr %a280, ptr %a281, ptr %a282) + store { ptr, i64, i64 } %t279, ptr %a283 + call void @finch_str_drop(ptr %a283) + %t284 = load { ptr, i64, i64 }, ptr %a280 + %t285 = call { ptr, i64, i64 } @finch.gen.op(ptr %t274, { ptr, i64, i64 } %t284) + store { ptr, i64, i64 } %t284, ptr %a286 + call void @finch_str_drop(ptr %a286) + store { ptr, i64, i64 } %t285, ptr %a287 %t288 = load ptr, ptr %a1 - %t289 = load { ptr, i64, i64 }, ptr %a287 - 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.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.5556, i64 4, i64 0 }) - %t301 = insertvalue %S.gen.Val %t299, %S.ast.Type %t300, 1 - ret %S.gen.Val %t301 -endif8145: - %t302 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t302, ptr %a303 - 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.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.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.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.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.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.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.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 - store { ptr, i64, i64 } %t330, 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.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 - store { ptr, i64, i64 } %t339, 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.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.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.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 -endif8167: - %t356 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t356, ptr %a357 - 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 %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) - %t363 = load ptr, ptr %a1 - %t364 = load ptr, ptr %a1 - %t365 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t366 = load { ptr, i64, i64 }, ptr %t365 - %t367 = extractvalue { ptr, i64, i64 } %t366, 1 - %t368 = icmp uge i64 1, %t367 - br i1 %t368, label %range8171, label %inrange8172 -range8171: - call void @finch_panic_index(ptr @.str.5567, i64 5000, i64 1, i64 %t367) - unreachable -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.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 - %t376 = load ptr, ptr %a1 - %t377 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t378 = load { ptr, i64, i64 }, ptr %t377 - %t379 = extractvalue { ptr, i64, i64 } %t378, 1 - %t380 = icmp uge i64 2, %t379 - br i1 %t380, label %range8173, label %inrange8174 -range8173: - call void @finch_panic_index(ptr @.str.5569, i64 5001, i64 2, i64 %t379) - unreachable -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.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.5571, i64 33, i64 0 }, ptr %a390 - store { ptr, i64, i64 } %t388, ptr %a391 + %t289 = load %S.gen.Val, ptr %a200 + call void @finch.gen.release(ptr %t288, %S.gen.Val %t289) + %t290 = load { ptr, i64, i64 }, ptr %a287 + store { ptr, i64, i64 } %t290, ptr %a291 + call void @finch_str_copy(ptr %a292, ptr %a291) + %t293 = load { ptr, i64, i64 }, ptr %a292 + %t294 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t293, 0 + %t295 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5761, i64 4, i64 0 }) + %t296 = insertvalue %S.gen.Val %t294, %S.ast.Type %t295, 1 + call void @finch_str_drop(ptr %a287) + call void @finch_str_drop(ptr %a273) + call void @finch_str_drop(ptr %a204) + call void @finch.drop.S_gen_Val(ptr %a200) + call void @finch_str_drop(ptr %a26) + call void @finch_str_drop(ptr %a12) + call void @finch_str_drop(ptr %a9) + ret %S.gen.Val %t296 +endif8617: + store { ptr, i64, i64 } { ptr @.str.5762, i64 17, i64 0 }, ptr %a297 + %t298 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t298, ptr %a299 + store { ptr, i64, i64 } { ptr @.str.5763, i64 9, i64 0 }, ptr %a300 + %t301 = call i32 @finch_str_eq(ptr %a299, ptr %a300) + %t302 = icmp ne i32 %t301, 0 + br i1 %t302, label %then8618, label %endif8620 +then8618: + %t303 = load { ptr, i64, i64 }, ptr %a297 + store { ptr, i64, i64 } { ptr @.str.5764, i64 15, i64 0 }, ptr %a297 + store { ptr, i64, i64 } %t303, ptr %a304 + call void @finch_str_drop(ptr %a304) + br label %endif8620 +endif8620: + %t305 = load ptr, ptr %a1 + %t306 = load { ptr, i64, i64 }, ptr %a297 + store { ptr, i64, i64 } { ptr @.str.5765, i64 9, i64 0 }, 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.5766, i64 5, i64 0 }, ptr %a313 + call void @finch_str_concat(ptr %a311, ptr %a312, ptr %a313) + store { ptr, i64, i64 } %t310, ptr %a314 + call void @finch_str_drop(ptr %a314) + %t315 = load { ptr, i64, i64 }, ptr %a311 + %t316 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t315, ptr %a318 + store { ptr, i64, i64 } %t316, ptr %a319 + call void @finch_str_concat(ptr %a317, ptr %a318, ptr %a319) + store { ptr, i64, i64 } %t315, ptr %a320 + call void @finch_str_drop(ptr %a320) + %t321 = load { ptr, i64, i64 }, ptr %a317 + store { ptr, i64, i64 } %t321, ptr %a323 + store { ptr, i64, i64 } { ptr @.str.5767, i64 6, i64 0 }, ptr %a324 + call void @finch_str_concat(ptr %a322, ptr %a323, ptr %a324) + store { ptr, i64, i64 } %t321, ptr %a325 + call void @finch_str_drop(ptr %a325) + %t326 = load { ptr, i64, i64 }, ptr %a322 + %t327 = load { ptr, i64, i64 }, ptr %a204 + store { ptr, i64, i64 } %t326, ptr %a329 + store { ptr, i64, i64 } %t327, ptr %a330 + call void @finch_str_concat(ptr %a328, ptr %a329, ptr %a330) + store { ptr, i64, i64 } %t326, ptr %a331 + call void @finch_str_drop(ptr %a331) + %t332 = load { ptr, i64, i64 }, ptr %a328 + store { ptr, i64, i64 } %t332, ptr %a334 + store { ptr, i64, i64 } { ptr @.str.5768, i64 1, i64 0 }, ptr %a335 + call void @finch_str_concat(ptr %a333, ptr %a334, ptr %a335) + store { ptr, i64, i64 } %t332, ptr %a336 + call void @finch_str_drop(ptr %a336) + %t337 = load { ptr, i64, i64 }, ptr %a333 + %t338 = call { ptr, i64, i64 } @finch.gen.op(ptr %t305, { ptr, i64, i64 } %t337) + store { ptr, i64, i64 } %t337, ptr %a339 + call void @finch_str_drop(ptr %a339) + store { ptr, i64, i64 } %t338, ptr %a340 + %t341 = load ptr, ptr %a1 + %t342 = load { ptr, i64, i64 }, ptr %a340 + store { ptr, i64, i64 } { ptr @.str.5769, i64 12, 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.5770, i64 3, i64 0 }, ptr %a349 + call void @finch_str_concat(ptr %a347, ptr %a348, ptr %a349) + store { ptr, i64, i64 } %t346, ptr %a350 + call void @finch_str_drop(ptr %a350) + %t351 = load { ptr, i64, i64 }, ptr %a347 + %t352 = call { ptr, i64, i64 } @finch.gen.op(ptr %t341, { ptr, i64, i64 } %t351) + store { ptr, i64, i64 } %t351, ptr %a353 + call void @finch_str_drop(ptr %a353) + store { ptr, i64, i64 } %t352, ptr %a354 + %t355 = load ptr, ptr %a1 + %t356 = load %S.gen.Val, ptr %a200 + call void @finch.gen.release(ptr %t355, %S.gen.Val %t356) + %t357 = load { ptr, i64, i64 }, ptr %a354 + store { ptr, i64, i64 } %t357, ptr %a358 + call void @finch_str_copy(ptr %a359, ptr %a358) + %t360 = load { ptr, i64, i64 }, ptr %a359 + %t361 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t360, 0 + %t362 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5771, i64 4, i64 0 }) + %t363 = insertvalue %S.gen.Val %t361, %S.ast.Type %t362, 1 + call void @finch_str_drop(ptr %a354) + call void @finch_str_drop(ptr %a340) + call void @finch_str_drop(ptr %a297) + call void @finch_str_drop(ptr %a204) + call void @finch.drop.S_gen_Val(ptr %a200) + call void @finch_str_drop(ptr %a26) + call void @finch_str_drop(ptr %a12) + call void @finch_str_drop(ptr %a9) + ret %S.gen.Val %t363 +endif8609: + %t364 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t364, ptr %a365 + store { ptr, i64, i64 } { ptr @.str.5772, i64 4, i64 0 }, ptr %a366 + %t367 = call i32 @finch_str_eq(ptr %a365, ptr %a366) + %t368 = icmp ne i32 %t367, 0 + br label %logic.from8621 +logic.from8621: + br i1 %t368, label %logic.end8623, label %logic.rhs8622 +logic.rhs8622: + %t369 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t369, ptr %a370 + store { ptr, i64, i64 } { ptr @.str.5773, i64 5, i64 0 }, ptr %a371 + %t372 = call i32 @finch_str_eq(ptr %a370, ptr %a371) + %t373 = icmp ne i32 %t372, 0 + br label %logic.rend8624 +logic.rend8624: + br label %logic.end8623 +logic.end8623: + %t374 = phi i1 [ true, %logic.from8621 ], [ %t373, %logic.rend8624 ] + br label %logic.from8625 +logic.from8625: + br i1 %t374, label %logic.end8627, label %logic.rhs8626 +logic.rhs8626: + %t375 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t375, ptr %a376 + store { ptr, i64, i64 } { ptr @.str.5774, i64 5, i64 0 }, ptr %a377 + %t378 = call i32 @finch_str_eq(ptr %a376, ptr %a377) + %t379 = icmp ne i32 %t378, 0 + br label %logic.rend8628 +logic.rend8628: + br label %logic.end8627 +logic.end8627: + %t380 = phi i1 [ true, %logic.from8625 ], [ %t379, %logic.rend8628 ] + br i1 %t380, label %then8629, label %endif8631 +then8629: + %t381 = load ptr, ptr %a1 + %t382 = load %S.ast.Node, ptr %a2 + call void @finch.gen.need(ptr %t381, %S.ast.Node %t382, i64 0) + %t383 = load ptr, ptr %a1 + %t384 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } { ptr @.str.5775, i64 21, i64 0 }, ptr %a386 + store { ptr, i64, i64 } %t384, ptr %a387 + call void @finch_str_concat(ptr %a385, ptr %a386, ptr %a387) + %t388 = load { ptr, i64, i64 }, ptr %a385 + store { ptr, i64, i64 } %t388, ptr %a390 + store { ptr, i64, i64 } { ptr @.str.5776, i64 5, i64 0 }, 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.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 - store { ptr, i64, i64 } %t396, 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 %a403 - 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 + store { ptr, i64, i64 } %t388, ptr %a392 + call void @finch_str_drop(ptr %a392) + %t393 = load { ptr, i64, i64 }, ptr %a389 + %t394 = load { ptr, i64, i64 }, ptr %a12 + store { ptr, i64, i64 } %t393, ptr %a396 + store { ptr, i64, i64 } %t394, ptr %a397 + call void @finch_str_concat(ptr %a395, ptr %a396, ptr %a397) + store { ptr, i64, i64 } %t393, ptr %a398 + call void @finch_str_drop(ptr %a398) + %t399 = load { ptr, i64, i64 }, ptr %a395 + store { ptr, i64, i64 } %t399, ptr %a401 + store { ptr, i64, i64 } { ptr @.str.5777, i64 6, i64 0 }, ptr %a402 + call void @finch_str_concat(ptr %a400, ptr %a401, ptr %a402) + store { ptr, i64, i64 } %t399, ptr %a403 + call void @finch_str_drop(ptr %a403) + %t404 = load { ptr, i64, i64 }, ptr %a400 + %t405 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t404, ptr %a407 store { ptr, i64, i64 } %t405, 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 + call void @finch_str_concat(ptr %a406, ptr %a407, ptr %a408) + store { ptr, i64, i64 } %t404, ptr %a409 + call void @finch_str_drop(ptr %a409) + %t410 = load { ptr, i64, i64 }, ptr %a406 store { ptr, i64, i64 } %t410, ptr %a412 - store { ptr, i64, i64 } { ptr @.str.5574, i64 6, i64 0 }, ptr %a413 + store { ptr, i64, i64 } { ptr @.str.5778, i64 1, 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 - store { ptr, i64, i64 } %t414, 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.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.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.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 -endif8170: - %t431 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t431, ptr %a432 - 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 %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) - %t438 = load ptr, ptr %a1 - %t439 = load ptr, ptr %a1 - %t440 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t441 = load { ptr, i64, i64 }, ptr %t440 - %t442 = extractvalue { ptr, i64, i64 } %t441, 1 - %t443 = icmp uge i64 1, %t442 - br i1 %t443, label %range8178, label %inrange8179 -range8178: - call void @finch_panic_index(ptr @.str.5579, i64 5007, i64 1, i64 %t442) + store { ptr, i64, i64 } %t410, ptr %a414 + call void @finch_str_drop(ptr %a414) + %t415 = load { ptr, i64, i64 }, ptr %a411 + call void @finch.gen.emit(ptr %t383, { ptr, i64, i64 } %t415) + store { ptr, i64, i64 } %t415, ptr %a416 + call void @finch_str_drop(ptr %a416) + %t417 = load ptr, ptr %a1 + %t418 = load { ptr, i64, i64 }, ptr %a12 + %t419 = call { ptr, i64, i64 } @finch.gen.load(ptr %t417, { ptr, i64, i64 } { ptr @.str.5779, i64 17, i64 0 }, { ptr, i64, i64 } %t418) + %t420 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t419, 0 + %t421 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5780, i64 3, i64 0 }) + %t422 = insertvalue %S.gen.Val %t420, %S.ast.Type %t421, 1 + %t423 = insertvalue %S.gen.Val %t422, i1 true, 2 + call void @finch_str_drop(ptr %a26) + call void @finch_str_drop(ptr %a12) + call void @finch_str_drop(ptr %a9) + ret %S.gen.Val %t423 +endif8631: + %t424 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t424, ptr %a425 + store { ptr, i64, i64 } { ptr @.str.5781, i64 7, i64 0 }, ptr %a426 + %t427 = call i32 @finch_str_eq(ptr %a425, ptr %a426) + %t428 = icmp ne i32 %t427, 0 + br i1 %t428, label %then8632, label %endif8634 +then8632: + %t429 = load ptr, ptr %a1 + %t430 = load %S.ast.Node, ptr %a2 + call void @finch.gen.need(ptr %t429, %S.ast.Node %t430, i64 2) + %t431 = load ptr, ptr %a1 + %t432 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t433 = load { ptr, i64, i64 }, ptr %t432 + %t434 = extractvalue { ptr, i64, i64 } %t433, 1 + %t435 = icmp uge i64 1, %t434 + br i1 %t435, label %range8635, label %inrange8636 +range8635: + call void @finch_panic_index(ptr @.str.5782, i64 5420, i64 1, i64 %t434) unreachable -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.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 - %t451 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t450) - 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.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.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 - store { ptr, i64, i64 } %t462, ptr %a465 - store { ptr, i64, i64 } %t463, ptr %a466 - 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.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 - store { ptr, i64, i64 } %t471, ptr %a474 - store { ptr, i64, i64 } %t472, ptr %a475 - 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.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.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.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 -endif8177: - %t489 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t489, ptr %a490 - 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 %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) - %t496 = load ptr, ptr %a1 - %t497 = load ptr, ptr %a1 - %t498 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t499 = load { ptr, i64, i64 }, ptr %t498 - %t500 = extractvalue { ptr, i64, i64 } %t499, 1 - %t501 = icmp uge i64 1, %t500 - br i1 %t501, label %range8183, label %inrange8184 -range8183: - call void @finch_panic_index(ptr @.str.5588, i64 5014, i64 1, i64 %t500) +inrange8636: + %t436 = extractvalue { ptr, i64, i64 } %t433, 0 + %t437 = getelementptr inbounds %S.ast.Node, ptr %t436, i64 1 + %t438 = load %S.ast.Node, ptr %t437 + %t439 = call %S.gen.Val @finch.gen.strArg(ptr %t431, %S.ast.Node %t438, { ptr, i64, i64 } { ptr @.str.5783, i64 19, i64 0 }) + store %S.gen.Val %t439, ptr %a440 + %t441 = load ptr, ptr %a1 + %t442 = icmp eq ptr %t441, null + br i1 %t442, label %panic8637, label %ok8638 +panic8637: + call void @finch_panic(ptr @.str.5784, i64 5421, ptr @.str.5785) unreachable -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.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 %range8185, label %inrange8186 -range8185: - call void @finch_panic_index(ptr @.str.5590, i64 5014, i64 1, i64 %t509) +ok8638: + %t443 = getelementptr inbounds %S.gen.Gen, ptr %t441, i32 0, i32 11 + %t444 = getelementptr inbounds { ptr, i64, i64 }, ptr %t443, i32 0, i32 1 + %t445 = load i64, ptr %t444 + store i64 %t445, ptr %a446 + %t447 = load ptr, ptr %a1 + %t448 = load %S.gen.Val, ptr %a440 + call void @finch.gen.hold(ptr %t447, %S.gen.Val %t448) + %t449 = load ptr, ptr %a1 + %t450 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t451 = load { ptr, i64, i64 }, ptr %t450 + %t452 = extractvalue { ptr, i64, i64 } %t451, 1 + %t453 = icmp uge i64 2, %t452 + br i1 %t453, label %range8639, label %inrange8640 +range8639: + call void @finch_panic_index(ptr @.str.5786, i64 5423, i64 2, i64 %t452) unreachable -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.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) - %t518 = load { ptr, i64, i64 }, ptr %a517 - 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.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.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 - store { ptr, i64, i64 } %t529, ptr %a532 - store { ptr, i64, i64 } %t530, ptr %a533 - 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.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 - store { ptr, i64, i64 } %t538, ptr %a541 - store { ptr, i64, i64 } %t539, ptr %a542 - 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.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.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.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 -endif8182: - %t555 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t555, ptr %a556 - 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 %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) - %t562 = load ptr, ptr %a1 - %t563 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t562) - 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.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.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 - store { ptr, i64, i64 } %t574, 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.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.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.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 -endif8189: - %t592 = load ptr, ptr %a1 - %t593 = load %S.ast.Node, ptr %a2 +inrange8640: + %t454 = extractvalue { ptr, i64, i64 } %t451, 0 + %t455 = getelementptr inbounds %S.ast.Node, ptr %t454, i64 2 + %t456 = load %S.ast.Node, ptr %t455 + %t457 = call %S.gen.Val @finch.gen.strArg(ptr %t449, %S.ast.Node %t456, { ptr, i64, i64 } { ptr @.str.5787, i64 12, i64 0 }) + store %S.gen.Val %t457, ptr %a458 + %t459 = load ptr, ptr %a1 + %t460 = load i64, ptr %a446 + call void @finch.gen.heldEnd(ptr %t459, i64 %t460) + %t461 = load ptr, ptr %a1 + %t462 = load %S.gen.Val, ptr %a440 + %t463 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t461, %S.gen.Val %t462) + store { ptr, i64, i64 } %t463, ptr %a464 + %t465 = load ptr, ptr %a1 + %t466 = load %S.gen.Val, ptr %a458 + %t467 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t465, %S.gen.Val %t466) + store { ptr, i64, i64 } %t467, ptr %a468 + %t469 = load ptr, ptr %a1 + %t470 = load { ptr, i64, i64 }, ptr %a12 + store { ptr, i64, i64 } { ptr @.str.5788, i64 33, i64 0 }, ptr %a472 + store { ptr, i64, i64 } %t470, ptr %a473 + call void @finch_str_concat(ptr %a471, ptr %a472, ptr %a473) + %t474 = load { ptr, i64, i64 }, ptr %a471 + store { ptr, i64, i64 } %t474, ptr %a476 + store { ptr, i64, i64 } { ptr @.str.5789, i64 6, i64 0 }, ptr %a477 + call void @finch_str_concat(ptr %a475, ptr %a476, ptr %a477) + store { ptr, i64, i64 } %t474, ptr %a478 + call void @finch_str_drop(ptr %a478) + %t479 = load { ptr, i64, i64 }, ptr %a475 + %t480 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t479, ptr %a482 + store { ptr, i64, i64 } %t480, ptr %a483 + call void @finch_str_concat(ptr %a481, ptr %a482, ptr %a483) + store { ptr, i64, i64 } %t479, ptr %a484 + call void @finch_str_drop(ptr %a484) + %t485 = load { ptr, i64, i64 }, ptr %a481 + store { ptr, i64, i64 } %t485, ptr %a487 + store { ptr, i64, i64 } { ptr @.str.5790, i64 6, i64 0 }, ptr %a488 + call void @finch_str_concat(ptr %a486, ptr %a487, ptr %a488) + store { ptr, i64, i64 } %t485, ptr %a489 + call void @finch_str_drop(ptr %a489) + %t490 = load { ptr, i64, i64 }, ptr %a486 + %t491 = load { ptr, i64, i64 }, ptr %a464 + store { ptr, i64, i64 } %t490, ptr %a493 + store { ptr, i64, i64 } %t491, ptr %a494 + call void @finch_str_concat(ptr %a492, ptr %a493, ptr %a494) + store { ptr, i64, i64 } %t490, ptr %a495 + call void @finch_str_drop(ptr %a495) + %t496 = load { ptr, i64, i64 }, ptr %a492 + store { ptr, i64, i64 } %t496, ptr %a498 + store { ptr, i64, i64 } { ptr @.str.5791, i64 6, i64 0 }, ptr %a499 + call void @finch_str_concat(ptr %a497, ptr %a498, ptr %a499) + store { ptr, i64, i64 } %t496, ptr %a500 + call void @finch_str_drop(ptr %a500) + %t501 = load { ptr, i64, i64 }, ptr %a497 + %t502 = load { ptr, i64, i64 }, ptr %a468 + store { ptr, i64, i64 } %t501, ptr %a504 + store { ptr, i64, i64 } %t502, ptr %a505 + call void @finch_str_concat(ptr %a503, ptr %a504, ptr %a505) + store { ptr, i64, i64 } %t501, ptr %a506 + call void @finch_str_drop(ptr %a506) + %t507 = load { ptr, i64, i64 }, ptr %a503 + store { ptr, i64, i64 } %t507, ptr %a509 + store { ptr, i64, i64 } { ptr @.str.5792, i64 1, i64 0 }, ptr %a510 + call void @finch_str_concat(ptr %a508, ptr %a509, ptr %a510) + store { ptr, i64, i64 } %t507, ptr %a511 + call void @finch_str_drop(ptr %a511) + %t512 = load { ptr, i64, i64 }, ptr %a508 + call void @finch.gen.emit(ptr %t469, { ptr, i64, i64 } %t512) + store { ptr, i64, i64 } %t512, ptr %a513 + call void @finch_str_drop(ptr %a513) + %t514 = load ptr, ptr %a1 + %t515 = load %S.gen.Val, ptr %a440 + call void @finch.gen.release(ptr %t514, %S.gen.Val %t515) + %t516 = load ptr, ptr %a1 + %t517 = load %S.gen.Val, ptr %a458 + call void @finch.gen.release(ptr %t516, %S.gen.Val %t517) + %t518 = load ptr, ptr %a1 + %t519 = load { ptr, i64, i64 }, ptr %a12 + %t520 = call { ptr, i64, i64 } @finch.gen.load(ptr %t518, { ptr, i64, i64 } { ptr @.str.5793, i64 17, i64 0 }, { ptr, i64, i64 } %t519) + %t521 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t520, 0 + %t522 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5794, i64 3, i64 0 }) + %t523 = insertvalue %S.gen.Val %t521, %S.ast.Type %t522, 1 + %t524 = insertvalue %S.gen.Val %t523, i1 true, 2 + call void @finch_str_drop(ptr %a468) + call void @finch_str_drop(ptr %a464) + call void @finch.drop.S_gen_Val(ptr %a458) + call void @finch.drop.S_gen_Val(ptr %a440) + call void @finch_str_drop(ptr %a26) + call void @finch_str_drop(ptr %a12) + call void @finch_str_drop(ptr %a9) + ret %S.gen.Val %t524 +endif8634: + %t525 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t525, ptr %a526 + store { ptr, i64, i64 } { ptr @.str.5795, i64 5, i64 0 }, ptr %a527 + %t528 = call i32 @finch_str_eq(ptr %a526, ptr %a527) + %t529 = icmp ne i32 %t528, 0 + br i1 %t529, label %then8641, label %endif8643 +then8641: + %t530 = load ptr, ptr %a1 + %t531 = load %S.ast.Node, ptr %a2 + call void @finch.gen.need(ptr %t530, %S.ast.Node %t531, i64 1) + %t532 = load ptr, ptr %a1 + %t533 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t534 = load { ptr, i64, i64 }, ptr %t533 + %t535 = extractvalue { ptr, i64, i64 } %t534, 1 + %t536 = icmp uge i64 1, %t535 + br i1 %t536, label %range8644, label %inrange8645 +range8644: + call void @finch_panic_index(ptr @.str.5796, i64 5434, i64 1, i64 %t535) + unreachable +inrange8645: + %t537 = extractvalue { ptr, i64, i64 } %t534, 0 + %t538 = getelementptr inbounds %S.ast.Node, ptr %t537, i64 1 + %t539 = load %S.ast.Node, ptr %t538 + %t540 = call %S.gen.Val @finch.gen.strArg(ptr %t532, %S.ast.Node %t539, { ptr, i64, i64 } { ptr @.str.5797, i64 13, i64 0 }) + store %S.gen.Val %t540, ptr %a541 + %t542 = load ptr, ptr %a1 + %t543 = load %S.gen.Val, ptr %a541 + %t544 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t542, %S.gen.Val %t543) + store { ptr, i64, i64 } %t544, ptr %a545 + %t546 = load ptr, ptr %a1 + %t547 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t546) + store { ptr, i64, i64 } %t547, ptr %a548 + %t549 = load ptr, ptr %a1 + %t550 = load { ptr, i64, i64 }, ptr %a548 + store { ptr, i64, i64 } { ptr @.str.5798, i64 31, i64 0 }, ptr %a552 + store { ptr, i64, i64 } %t550, ptr %a553 + call void @finch_str_concat(ptr %a551, ptr %a552, ptr %a553) + %t554 = load { ptr, i64, i64 }, ptr %a551 + store { ptr, i64, i64 } %t554, ptr %a556 + store { ptr, i64, i64 } { ptr @.str.5799, i64 6, i64 0 }, ptr %a557 + call void @finch_str_concat(ptr %a555, ptr %a556, ptr %a557) + store { ptr, i64, i64 } %t554, ptr %a558 + call void @finch_str_drop(ptr %a558) + %t559 = load { ptr, i64, i64 }, ptr %a555 + %t560 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t559, ptr %a562 + store { ptr, i64, i64 } %t560, ptr %a563 + call void @finch_str_concat(ptr %a561, ptr %a562, ptr %a563) + store { ptr, i64, i64 } %t559, ptr %a564 + call void @finch_str_drop(ptr %a564) + %t565 = load { ptr, i64, i64 }, ptr %a561 + store { ptr, i64, i64 } %t565, ptr %a567 + store { ptr, i64, i64 } { ptr @.str.5800, i64 6, i64 0 }, ptr %a568 + call void @finch_str_concat(ptr %a566, ptr %a567, ptr %a568) + store { ptr, i64, i64 } %t565, ptr %a569 + call void @finch_str_drop(ptr %a569) + %t570 = load { ptr, i64, i64 }, ptr %a566 + %t571 = load { ptr, i64, i64 }, ptr %a545 + store { ptr, i64, i64 } %t570, ptr %a573 + store { ptr, i64, i64 } %t571, ptr %a574 + call void @finch_str_concat(ptr %a572, ptr %a573, ptr %a574) + store { ptr, i64, i64 } %t570, ptr %a575 + call void @finch_str_drop(ptr %a575) + %t576 = load { ptr, i64, i64 }, ptr %a572 + store { ptr, i64, i64 } %t576, ptr %a578 + store { ptr, i64, i64 } { ptr @.str.5801, i64 1, i64 0 }, ptr %a579 + call void @finch_str_concat(ptr %a577, ptr %a578, ptr %a579) + store { ptr, i64, i64 } %t576, ptr %a580 + call void @finch_str_drop(ptr %a580) + %t581 = load { ptr, i64, i64 }, ptr %a577 + call void @finch.gen.emit(ptr %t549, { ptr, i64, i64 } %t581) + store { ptr, i64, i64 } %t581, ptr %a582 + call void @finch_str_drop(ptr %a582) + %t583 = load ptr, ptr %a1 + %t584 = load %S.gen.Val, ptr %a541 + call void @finch.gen.release(ptr %t583, %S.gen.Val %t584) + %t585 = load ptr, ptr %a1 + %t586 = load { ptr, i64, i64 }, ptr %a548 + %t587 = call { ptr, i64, i64 } @finch.gen.load(ptr %t585, { ptr, i64, i64 } { ptr @.str.5802, i64 17, i64 0 }, { ptr, i64, i64 } %t586) + %t588 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t587, 0 + %t589 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5803, i64 3, i64 0 }) + %t590 = call %S.ast.Type @finch.ast.arrayOf(%S.ast.Type %t589) + store %S.ast.Type %t589, ptr %a591 + call void @finch.drop.S_ast_Type(ptr %a591) + %t592 = insertvalue %S.gen.Val %t588, %S.ast.Type %t590, 1 + %t593 = insertvalue %S.gen.Val %t592, i1 true, 2 + call void @finch_str_drop(ptr %a548) + call void @finch_str_drop(ptr %a545) + call void @finch.drop.S_gen_Val(ptr %a541) + call void @finch_str_drop(ptr %a26) + call void @finch_str_drop(ptr %a12) + call void @finch_str_drop(ptr %a9) + ret %S.gen.Val %t593 +endif8643: %t594 = load { ptr, i64, i64 }, ptr %a9 - 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.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) + store { ptr, i64, i64 } %t594, ptr %a595 + store { ptr, i64, i64 } { ptr @.str.5804, i64 6, i64 0 }, ptr %a596 + %t597 = call i32 @finch_str_eq(ptr %a595, ptr %a596) + %t598 = icmp ne i32 %t597, 0 + br i1 %t598, label %then8646, label %endif8648 +then8646: + %t599 = load ptr, ptr %a1 + %t600 = load %S.ast.Node, ptr %a2 + call void @finch.gen.need(ptr %t599, %S.ast.Node %t600, i64 1) + %t601 = load ptr, ptr %a1 + %t602 = load ptr, ptr %a1 + %t603 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t604 = load { ptr, i64, i64 }, ptr %t603 + %t605 = extractvalue { ptr, i64, i64 } %t604, 1 + %t606 = icmp uge i64 1, %t605 + br i1 %t606, label %range8649, label %inrange8650 +range8649: + call void @finch_panic_index(ptr @.str.5805, i64 5443, i64 1, i64 %t605) + unreachable +inrange8650: + %t607 = extractvalue { ptr, i64, i64 } %t604, 0 + %t608 = getelementptr inbounds %S.ast.Node, ptr %t607, i64 1 + %t609 = load %S.ast.Node, ptr %t608 + %t610 = call %S.gen.Val @finch.gen.expr(ptr %t602, %S.ast.Node %t609) + %t611 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5806, i64 3, i64 0 }) + %t612 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t613 = load { ptr, i64, i64 }, ptr %t612 + %t614 = extractvalue { ptr, i64, i64 } %t613, 1 + %t615 = icmp uge i64 1, %t614 + br i1 %t615, label %range8651, label %inrange8652 +range8651: + call void @finch_panic_index(ptr @.str.5807, i64 5443, i64 1, i64 %t614) + unreachable +inrange8652: + %t616 = extractvalue { ptr, i64, i64 } %t613, 0 + %t617 = getelementptr inbounds %S.ast.Node, ptr %t616, i64 1 + %t618 = load %S.ast.Node, ptr %t617 + %t619 = call %S.gen.Val @finch.gen.coerce(ptr %t601, %S.gen.Val %t610, %S.ast.Type %t611, %S.ast.Node %t618, { ptr, i64, i64 } { ptr @.str.5808, i64 9, i64 0 }) + store %S.gen.Val %t610, ptr %a620 + call void @finch.drop.S_gen_Val(ptr %a620) + store %S.ast.Type %t611, ptr %a621 + call void @finch.drop.S_ast_Type(ptr %a621) + %t622 = extractvalue %S.gen.Val %t619, 0 + store { ptr, i64, i64 } %t622, ptr %a623 + call void @finch_str_copy(ptr %a624, ptr %a623) + %t625 = load { ptr, i64, i64 }, ptr %a624 + store %S.gen.Val %t619, ptr %a626 + call void @finch.drop.S_gen_Val(ptr %a626) + store { ptr, i64, i64 } %t625, ptr %a627 + %t628 = load ptr, ptr %a1 + %t629 = load { ptr, i64, i64 }, ptr %a12 + store { ptr, i64, i64 } { ptr @.str.5809, i64 32, i64 0 }, 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.5810, i64 6, i64 0 }, ptr %a636 + call void @finch_str_concat(ptr %a634, ptr %a635, ptr %a636) + store { ptr, i64, i64 } %t633, ptr %a637 + call void @finch_str_drop(ptr %a637) + %t638 = load { ptr, i64, i64 }, ptr %a634 + %t639 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t638, ptr %a641 + store { ptr, i64, i64 } %t639, ptr %a642 + call void @finch_str_concat(ptr %a640, ptr %a641, ptr %a642) + store { ptr, i64, i64 } %t638, ptr %a643 + call void @finch_str_drop(ptr %a643) + %t644 = load { ptr, i64, i64 }, ptr %a640 + store { ptr, i64, i64 } %t644, ptr %a646 + store { ptr, i64, i64 } { ptr @.str.5811, i64 6, i64 0 }, ptr %a647 + call void @finch_str_concat(ptr %a645, ptr %a646, ptr %a647) + store { ptr, i64, i64 } %t644, ptr %a648 + call void @finch_str_drop(ptr %a648) + %t649 = load { ptr, i64, i64 }, ptr %a645 + %t650 = load { ptr, i64, i64 }, ptr %a627 + store { ptr, i64, i64 } %t649, ptr %a652 + store { ptr, i64, i64 } %t650, ptr %a653 + call void @finch_str_concat(ptr %a651, ptr %a652, ptr %a653) + store { ptr, i64, i64 } %t649, ptr %a654 + call void @finch_str_drop(ptr %a654) + %t655 = load { ptr, i64, i64 }, ptr %a651 + store { ptr, i64, i64 } %t655, ptr %a657 + store { ptr, i64, i64 } { ptr @.str.5812, i64 1, i64 0 }, ptr %a658 + call void @finch_str_concat(ptr %a656, ptr %a657, ptr %a658) + store { ptr, i64, i64 } %t655, ptr %a659 + call void @finch_str_drop(ptr %a659) + %t660 = load { ptr, i64, i64 }, ptr %a656 + call void @finch.gen.emit(ptr %t628, { ptr, i64, i64 } %t660) + store { ptr, i64, i64 } %t660, ptr %a661 + call void @finch_str_drop(ptr %a661) + %t662 = load ptr, ptr %a1 + %t663 = load { ptr, i64, i64 }, ptr %a12 + %t664 = call { ptr, i64, i64 } @finch.gen.load(ptr %t662, { ptr, i64, i64 } { ptr @.str.5813, i64 17, i64 0 }, { ptr, i64, i64 } %t663) + %t665 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t664, 0 + %t666 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5814, i64 3, i64 0 }) + %t667 = insertvalue %S.gen.Val %t665, %S.ast.Type %t666, 1 + %t668 = insertvalue %S.gen.Val %t667, i1 true, 2 + call void @finch_str_drop(ptr %a627) + call void @finch_str_drop(ptr %a26) + call void @finch_str_drop(ptr %a12) + call void @finch_str_drop(ptr %a9) + ret %S.gen.Val %t668 +endif8648: + %t669 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t669, ptr %a670 + store { ptr, i64, i64 } { ptr @.str.5815, i64 5, i64 0 }, ptr %a671 + %t672 = call i32 @finch_str_eq(ptr %a670, ptr %a671) + %t673 = icmp ne i32 %t672, 0 + br i1 %t673, label %then8653, label %endif8655 +then8653: + %t674 = load ptr, ptr %a1 + %t675 = load %S.ast.Node, ptr %a2 + call void @finch.gen.need(ptr %t674, %S.ast.Node %t675, i64 0) + %t676 = load ptr, ptr %a1 + %t677 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t676) + store { ptr, i64, i64 } %t677, ptr %a678 + %t679 = load ptr, ptr %a1 + %t680 = load { ptr, i64, i64 }, ptr %a678 + store { ptr, i64, i64 } { ptr @.str.5816, i64 36, 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.5817, i64 6, i64 0 }, ptr %a687 + call void @finch_str_concat(ptr %a685, ptr %a686, ptr %a687) + store { ptr, i64, i64 } %t684, ptr %a688 + call void @finch_str_drop(ptr %a688) + %t689 = load { ptr, i64, i64 }, ptr %a685 + %t690 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t689, ptr %a692 + store { ptr, i64, i64 } %t690, ptr %a693 + call void @finch_str_concat(ptr %a691, ptr %a692, ptr %a693) + store { ptr, i64, i64 } %t689, ptr %a694 + call void @finch_str_drop(ptr %a694) + %t695 = load { ptr, i64, i64 }, ptr %a691 + store { ptr, i64, i64 } %t695, ptr %a697 + store { ptr, i64, i64 } { ptr @.str.5818, i64 1, i64 0 }, ptr %a698 + call void @finch_str_concat(ptr %a696, ptr %a697, ptr %a698) + store { ptr, i64, i64 } %t695, ptr %a699 + call void @finch_str_drop(ptr %a699) + %t700 = load { ptr, i64, i64 }, ptr %a696 + call void @finch.gen.emit(ptr %t679, { ptr, i64, i64 } %t700) + store { ptr, i64, i64 } %t700, ptr %a701 + call void @finch_str_drop(ptr %a701) + %t702 = load ptr, ptr %a1 + %t703 = load { ptr, i64, i64 }, ptr %a678 + %t704 = call { ptr, i64, i64 } @finch.gen.load(ptr %t702, { ptr, i64, i64 } { ptr @.str.5819, i64 17, i64 0 }, { ptr, i64, i64 } %t703) + %t705 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t704, 0 + %t706 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5820, i64 2, i64 0 }) + %t707 = call %S.ast.Type @finch.ast.arrayOf(%S.ast.Type %t706) + store %S.ast.Type %t706, ptr %a708 + call void @finch.drop.S_ast_Type(ptr %a708) + %t709 = insertvalue %S.gen.Val %t705, %S.ast.Type %t707, 1 + %t710 = insertvalue %S.gen.Val %t709, i1 true, 2 + call void @finch_str_drop(ptr %a678) + call void @finch_str_drop(ptr %a26) + call void @finch_str_drop(ptr %a12) + call void @finch_str_drop(ptr %a9) + ret %S.gen.Val %t710 +endif8655: + %t711 = load ptr, ptr %a1 + %t712 = load %S.ast.Node, ptr %a2 + %t713 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } { ptr @.str.5821, i64 21, 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.5822, i64 106, i64 0 }, ptr %a720 + call void @finch_str_concat(ptr %a718, ptr %a719, ptr %a720) + store { ptr, i64, i64 } %t717, ptr %a721 + call void @finch_str_drop(ptr %a721) + %t722 = load { ptr, i64, i64 }, ptr %a718 + call void @finch.gen.fail(ptr %t711, %S.ast.Node %t712, { ptr, i64, i64 } %t722) + store { ptr, i64, i64 } %t722, ptr %a723 + call void @finch_str_drop(ptr %a723) + call void @finch_str_drop(ptr %a26) + call void @finch_str_drop(ptr %a12) + call void @finch_str_drop(ptr %a9) ret %S.gen.Val zeroinitializer } define internal { ptr, i64, i64 } @finch.gen.runtimeDecls() { entry: - %a77 = alloca { ptr, i64, i64 }, align 16 - %a79 = 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 - %t1 = mul i64 71, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) + %a85 = alloca { ptr, i64, i64 }, align 16 + %a86 = alloca { ptr, i64, i64 }, align 16 + %a87 = alloca { ptr, i64, i64 }, align 16 + %a88 = alloca { ptr, i64, i64 }, align 16 + %t1 = mul i64 74, 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.5606, i64 54, i64 0 }, ptr %t3 + store { ptr, i64, i64 } { ptr @.str.5823, i64 54, i64 0 }, ptr %t3 %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 1 - store { ptr, i64, i64 } { ptr @.str.5607, i64 65, i64 0 }, ptr %t4 + store { ptr, i64, i64 } { ptr @.str.5824, i64 65, i64 0 }, ptr %t4 %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 2 - store { ptr, i64, i64 } { ptr @.str.5608, i64 29, i64 0 }, ptr %t5 + store { ptr, i64, i64 } { ptr @.str.5825, i64 29, i64 0 }, ptr %t5 %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 3 - store { ptr, i64, i64 } { ptr @.str.5609, i64 38, i64 0 }, ptr %t6 + store { ptr, i64, i64 } { ptr @.str.5826, i64 38, i64 0 }, ptr %t6 %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 4 - store { ptr, i64, i64 } { ptr @.str.5610, i64 32, i64 0 }, ptr %t7 + store { ptr, i64, i64 } { ptr @.str.5827, i64 33, i64 0 }, ptr %t7 %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 5 - store { ptr, i64, i64 } { ptr @.str.5611, i64 45, i64 0 }, ptr %t8 + store { ptr, i64, i64 } { ptr @.str.5828, i64 33, i64 0 }, ptr %t8 %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 6 - store { ptr, i64, i64 } { ptr @.str.5612, i64 35, i64 0 }, ptr %t9 + store { ptr, i64, i64 } { ptr @.str.5829, i64 33, i64 0 }, ptr %t9 %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 7 - store { ptr, i64, i64 } { ptr @.str.5613, i64 36, i64 0 }, ptr %t10 + store { ptr, i64, i64 } { ptr @.str.5830, i64 32, i64 0 }, ptr %t10 %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 8 - store { ptr, i64, i64 } { ptr @.str.5614, i64 42, i64 0 }, ptr %t11 + store { ptr, i64, i64 } { ptr @.str.5831, i64 45, i64 0 }, ptr %t11 %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 9 - store { ptr, i64, i64 } { ptr @.str.5615, i64 37, i64 0 }, ptr %t12 + store { ptr, i64, i64 } { ptr @.str.5832, i64 35, i64 0 }, ptr %t12 %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 10 - store { ptr, i64, i64 } { ptr @.str.5616, i64 38, i64 0 }, ptr %t13 + store { ptr, i64, i64 } { ptr @.str.5833, i64 36, i64 0 }, ptr %t13 %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 11 - store { ptr, i64, i64 } { ptr @.str.5617, i64 42, i64 0 }, ptr %t14 + store { ptr, i64, i64 } { ptr @.str.5834, i64 42, i64 0 }, ptr %t14 %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 12 - store { ptr, i64, i64 } { ptr @.str.5618, i64 38, i64 0 }, ptr %t15 + store { ptr, i64, i64 } { ptr @.str.5835, i64 37, i64 0 }, ptr %t15 %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 13 - store { ptr, i64, i64 } { ptr @.str.5619, i64 37, i64 0 }, ptr %t16 + store { ptr, i64, i64 } { ptr @.str.5836, i64 38, i64 0 }, ptr %t16 %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 14 - store { ptr, i64, i64 } { ptr @.str.5620, i64 42, i64 0 }, ptr %t17 + store { ptr, i64, i64 } { ptr @.str.5837, i64 42, i64 0 }, ptr %t17 %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 15 - store { ptr, i64, i64 } { ptr @.str.5621, i64 42, i64 0 }, ptr %t18 + store { ptr, i64, i64 } { ptr @.str.5838, i64 38, i64 0 }, ptr %t18 %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 16 - store { ptr, i64, i64 } { ptr @.str.5622, i64 34, i64 0 }, ptr %t19 + store { ptr, i64, i64 } { ptr @.str.5839, i64 37, i64 0 }, ptr %t19 %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 17 - store { ptr, i64, i64 } { ptr @.str.5623, i64 42, i64 0 }, ptr %t20 + store { ptr, i64, i64 } { ptr @.str.5840, i64 42, i64 0 }, ptr %t20 %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 18 - store { ptr, i64, i64 } { ptr @.str.5624, i64 43, i64 0 }, ptr %t21 + store { ptr, i64, i64 } { ptr @.str.5841, i64 42, i64 0 }, ptr %t21 %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 19 - store { ptr, i64, i64 } { ptr @.str.5625, i64 47, i64 0 }, ptr %t22 + store { ptr, i64, i64 } { ptr @.str.5842, i64 34, i64 0 }, ptr %t22 %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 20 - store { ptr, i64, i64 } { ptr @.str.5626, i64 50, i64 0 }, ptr %t23 + store { ptr, i64, i64 } { ptr @.str.5843, i64 42, i64 0 }, ptr %t23 %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 21 - store { ptr, i64, i64 } { ptr @.str.5627, i64 43, i64 0 }, ptr %t24 + store { ptr, i64, i64 } { ptr @.str.5844, i64 43, i64 0 }, ptr %t24 %t25 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 22 - store { ptr, i64, i64 } { ptr @.str.5628, i64 44, i64 0 }, ptr %t25 + store { ptr, i64, i64 } { ptr @.str.5845, i64 47, i64 0 }, ptr %t25 %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 23 - store { ptr, i64, i64 } { ptr @.str.5629, i64 49, i64 0 }, ptr %t26 + store { ptr, i64, i64 } { ptr @.str.5846, i64 50, i64 0 }, ptr %t26 %t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 24 - store { ptr, i64, i64 } { ptr @.str.5630, i64 57, i64 0 }, ptr %t27 + store { ptr, i64, i64 } { ptr @.str.5847, i64 43, i64 0 }, ptr %t27 %t28 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 25 - store { ptr, i64, i64 } { ptr @.str.5631, i64 37, i64 0 }, ptr %t28 + store { ptr, i64, i64 } { ptr @.str.5848, i64 44, i64 0 }, ptr %t28 %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 26 - store { ptr, i64, i64 } { ptr @.str.5632, i64 39, i64 0 }, ptr %t29 + store { ptr, i64, i64 } { ptr @.str.5849, i64 49, i64 0 }, ptr %t29 %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 27 - store { ptr, i64, i64 } { ptr @.str.5633, i64 37, i64 0 }, ptr %t30 + store { ptr, i64, i64 } { ptr @.str.5850, i64 57, i64 0 }, ptr %t30 %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 28 - store { ptr, i64, i64 } { ptr @.str.5634, i64 38, i64 0 }, ptr %t31 + store { ptr, i64, i64 } { ptr @.str.5851, i64 37, i64 0 }, ptr %t31 %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 29 - store { ptr, i64, i64 } { ptr @.str.5635, i64 39, i64 0 }, ptr %t32 + store { ptr, i64, i64 } { ptr @.str.5852, i64 39, i64 0 }, ptr %t32 %t33 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 30 - store { ptr, i64, i64 } { ptr @.str.5636, i64 39, i64 0 }, ptr %t33 + store { ptr, i64, i64 } { ptr @.str.5853, i64 37, i64 0 }, ptr %t33 %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 31 - store { ptr, i64, i64 } { ptr @.str.5637, i64 51, i64 0 }, ptr %t34 + store { ptr, i64, i64 } { ptr @.str.5854, i64 38, i64 0 }, ptr %t34 %t35 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 32 - store { ptr, i64, i64 } { ptr @.str.5638, i64 44, i64 0 }, ptr %t35 + store { ptr, i64, i64 } { ptr @.str.5855, i64 39, i64 0 }, ptr %t35 %t36 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 33 - store { ptr, i64, i64 } { ptr @.str.5639, i64 43, i64 0 }, ptr %t36 + store { ptr, i64, i64 } { ptr @.str.5856, i64 39, i64 0 }, ptr %t36 %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 34 - store { ptr, i64, i64 } { ptr @.str.5640, i64 45, i64 0 }, ptr %t37 + store { ptr, i64, i64 } { ptr @.str.5857, i64 51, i64 0 }, ptr %t37 %t38 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 35 - store { ptr, i64, i64 } { ptr @.str.5641, i64 44, i64 0 }, ptr %t38 + store { ptr, i64, i64 } { ptr @.str.5858, i64 44, i64 0 }, ptr %t38 %t39 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 36 - store { ptr, i64, i64 } { ptr @.str.5642, i64 52, i64 0 }, ptr %t39 + store { ptr, i64, i64 } { ptr @.str.5859, i64 43, i64 0 }, ptr %t39 %t40 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 37 - store { ptr, i64, i64 } { ptr @.str.5643, i64 57, i64 0 }, ptr %t40 + store { ptr, i64, i64 } { ptr @.str.5860, i64 45, i64 0 }, ptr %t40 %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 38 - store { ptr, i64, i64 } { ptr @.str.5644, i64 48, i64 0 }, ptr %t41 + store { ptr, i64, i64 } { ptr @.str.5861, i64 44, i64 0 }, ptr %t41 %t42 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 39 - store { ptr, i64, i64 } { ptr @.str.5645, i64 34, i64 0 }, ptr %t42 + store { ptr, i64, i64 } { ptr @.str.5862, i64 52, i64 0 }, ptr %t42 %t43 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 40 - store { ptr, i64, i64 } { ptr @.str.5646, i64 48, i64 0 }, ptr %t43 + store { ptr, i64, i64 } { ptr @.str.5863, i64 57, i64 0 }, ptr %t43 %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 41 - store { ptr, i64, i64 } { ptr @.str.5647, i64 60, i64 0 }, ptr %t44 + store { ptr, i64, i64 } { ptr @.str.5864, i64 48, i64 0 }, ptr %t44 %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 42 - store { ptr, i64, i64 } { ptr @.str.5648, i64 55, i64 0 }, ptr %t45 + store { ptr, i64, i64 } { ptr @.str.5865, i64 34, i64 0 }, ptr %t45 %t46 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 43 - store { ptr, i64, i64 } { ptr @.str.5649, i64 46, i64 0 }, ptr %t46 + store { ptr, i64, i64 } { ptr @.str.5866, i64 48, i64 0 }, ptr %t46 %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 44 - store { ptr, i64, i64 } { ptr @.str.5650, i64 48, i64 0 }, ptr %t47 + store { ptr, i64, i64 } { ptr @.str.5867, i64 60, i64 0 }, ptr %t47 %t48 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 45 - store { ptr, i64, i64 } { ptr @.str.5651, i64 43, i64 0 }, ptr %t48 + store { ptr, i64, i64 } { ptr @.str.5868, i64 55, i64 0 }, ptr %t48 %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 46 - store { ptr, i64, i64 } { ptr @.str.5652, i64 45, i64 0 }, ptr %t49 + store { ptr, i64, i64 } { ptr @.str.5869, i64 46, i64 0 }, ptr %t49 %t50 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 47 - store { ptr, i64, i64 } { ptr @.str.5653, i64 59, i64 0 }, ptr %t50 + store { ptr, i64, i64 } { ptr @.str.5870, i64 48, i64 0 }, ptr %t50 %t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 48 - store { ptr, i64, i64 } { ptr @.str.5654, i64 49, i64 0 }, ptr %t51 + store { ptr, i64, i64 } { ptr @.str.5871, i64 43, i64 0 }, ptr %t51 %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 49 - store { ptr, i64, i64 } { ptr @.str.5655, i64 39, i64 0 }, ptr %t52 + store { ptr, i64, i64 } { ptr @.str.5872, i64 45, i64 0 }, ptr %t52 %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 50 - store { ptr, i64, i64 } { ptr @.str.5656, i64 39, i64 0 }, ptr %t53 + store { ptr, i64, i64 } { ptr @.str.5873, i64 59, i64 0 }, ptr %t53 %t54 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 51 - store { ptr, i64, i64 } { ptr @.str.5657, i64 35, i64 0 }, ptr %t54 + store { ptr, i64, i64 } { ptr @.str.5874, i64 49, i64 0 }, ptr %t54 %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 52 - store { ptr, i64, i64 } { ptr @.str.5658, i64 35, i64 0 }, ptr %t55 + store { ptr, i64, i64 } { ptr @.str.5875, i64 39, i64 0 }, ptr %t55 %t56 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 53 - store { ptr, i64, i64 } { ptr @.str.5659, i64 45, i64 0 }, ptr %t56 + store { ptr, i64, i64 } { ptr @.str.5876, i64 39, i64 0 }, ptr %t56 %t57 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 54 - store { ptr, i64, i64 } { ptr @.str.5660, i64 47, i64 0 }, ptr %t57 + store { ptr, i64, i64 } { ptr @.str.5877, i64 35, i64 0 }, ptr %t57 %t58 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 55 - store { ptr, i64, i64 } { ptr @.str.5661, i64 47, i64 0 }, ptr %t58 + store { ptr, i64, i64 } { ptr @.str.5878, i64 35, i64 0 }, ptr %t58 %t59 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 56 - store { ptr, i64, i64 } { ptr @.str.5662, i64 48, i64 0 }, ptr %t59 + store { ptr, i64, i64 } { ptr @.str.5879, i64 45, i64 0 }, ptr %t59 %t60 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 57 - store { ptr, i64, i64 } { ptr @.str.5663, i64 44, i64 0 }, ptr %t60 + store { ptr, i64, i64 } { ptr @.str.5880, i64 47, i64 0 }, ptr %t60 %t61 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 58 - store { ptr, i64, i64 } { ptr @.str.5664, i64 37, i64 0 }, ptr %t61 + store { ptr, i64, i64 } { ptr @.str.5881, i64 47, i64 0 }, ptr %t61 %t62 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 59 - store { ptr, i64, i64 } { ptr @.str.5665, i64 49, i64 0 }, ptr %t62 + store { ptr, i64, i64 } { ptr @.str.5882, i64 48, i64 0 }, ptr %t62 %t63 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 60 - store { ptr, i64, i64 } { ptr @.str.5666, i64 39, i64 0 }, ptr %t63 + store { ptr, i64, i64 } { ptr @.str.5883, i64 44, i64 0 }, ptr %t63 %t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 61 - store { ptr, i64, i64 } { ptr @.str.5667, i64 29, i64 0 }, ptr %t64 + store { ptr, i64, i64 } { ptr @.str.5884, i64 37, i64 0 }, ptr %t64 %t65 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 62 - store { ptr, i64, i64 } { ptr @.str.5668, i64 35, i64 0 }, ptr %t65 + store { ptr, i64, i64 } { ptr @.str.5885, i64 49, i64 0 }, ptr %t65 %t66 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 63 - store { ptr, i64, i64 } { ptr @.str.5669, i64 29, i64 0 }, ptr %t66 + store { ptr, i64, i64 } { ptr @.str.5886, i64 39, i64 0 }, ptr %t66 %t67 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 64 - store { ptr, i64, i64 } { ptr @.str.5670, i64 24, i64 0 }, ptr %t67 + store { ptr, i64, i64 } { ptr @.str.5887, i64 29, i64 0 }, ptr %t67 %t68 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 65 - store { ptr, i64, i64 } { ptr @.str.5671, i64 40, i64 0 }, ptr %t68 + store { ptr, i64, i64 } { ptr @.str.5888, i64 35, i64 0 }, ptr %t68 %t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 66 - store { ptr, i64, i64 } { ptr @.str.5672, i64 33, i64 0 }, ptr %t69 + store { ptr, i64, i64 } { ptr @.str.5889, i64 29, i64 0 }, ptr %t69 %t70 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 67 - store { ptr, i64, i64 } { ptr @.str.5673, i64 34, i64 0 }, ptr %t70 + store { ptr, i64, i64 } { ptr @.str.5890, i64 24, i64 0 }, ptr %t70 %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 68 - store { ptr, i64, i64 } { ptr @.str.5674, i64 44, i64 0 }, ptr %t71 + store { ptr, i64, i64 } { ptr @.str.5891, i64 40, i64 0 }, ptr %t71 %t72 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 69 - store { ptr, i64, i64 } { ptr @.str.5675, i64 32, i64 0 }, ptr %t72 + store { ptr, i64, i64 } { ptr @.str.5892, i64 33, i64 0 }, ptr %t72 %t73 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 70 - 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.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.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 + store { ptr, i64, i64 } { ptr @.str.5893, i64 34, i64 0 }, ptr %t73 + %t74 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 71 + store { ptr, i64, i64 } { ptr @.str.5894, i64 44, i64 0 }, ptr %t74 + %t75 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 72 + store { ptr, i64, i64 } { ptr @.str.5895, i64 32, i64 0 }, ptr %t75 + %t76 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 73 + store { ptr, i64, i64 } { ptr @.str.5896, i64 23, i64 0 }, ptr %t76 + %t77 = insertvalue { ptr, i64, i64 } undef, ptr %t2, 0 + %t78 = insertvalue { ptr, i64, i64 } %t77, i64 74, 1 + %t79 = insertvalue { ptr, i64, i64 } %t78, i64 74, 2 + store { ptr, i64, i64 } %t79, ptr %a80 + %t81 = getelementptr inbounds { ptr, i64, i64 }, ptr %a80, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.5897, i64 1, i64 0 }, ptr %a82 + call void @finch_str_join(ptr %a83, ptr %a80, ptr %a82) + %t84 = load { ptr, i64, i64 }, ptr %a83 + store { ptr, i64, i64 } %t84, ptr %a86 + store { ptr, i64, i64 } { ptr @.str.5898, i64 1, i64 0 }, ptr %a87 + call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) + store { ptr, i64, i64 } %t84, ptr %a88 + call void @finch_str_drop(ptr %a88) + %t89 = load { ptr, i64, i64 }, ptr %a85 + call void @finch.drop.arr_str(ptr %a80) + ret { ptr, i64, i64 } %t89 } define internal { ptr, i64, i64 } @finch.gen.assemble(ptr %p0) { @@ -75704,177 +91131,222 @@ entry: %a18 = alloca { ptr, i64, i64 }, align 16 %a19 = alloca { ptr, i64, i64 }, align 16 %a20 = alloca { ptr, i64, i64 }, align 16 - %a22 = 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 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 + %a25 = alloca { ptr, i64, i64 }, align 16 + %a26 = alloca { ptr, i64, i64 }, align 16 + %a29 = alloca { ptr, i64, i64 }, align 16 %a35 = alloca { ptr, i64, i64 }, align 16 %a36 = alloca { ptr, i64, i64 }, align 16 %a38 = 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 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 + %a46 = 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 + %a52 = alloca { ptr, i64, i64 }, align 16 + %a53 = alloca { ptr, i64, i64 }, align 16 + %a55 = 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 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 + %a61 = 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 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 + %a72 = alloca { ptr, i64, i64 }, align 16 %a78 = alloca { ptr, i64, i64 }, align 16 %a79 = 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 { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 + %a87 = 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 + %a99 = 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 + %a103 = alloca { ptr, i64, i64 }, align 16 + %a106 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 - store { ptr, i64, i64 } { ptr @.str.5679, i64 52, i64 0 }, ptr %a2 + store { ptr, i64, i64 } { ptr @.str.5899, i64 52, i64 0 }, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic8190, label %ok8191 -panic8190: - call void @finch_panic(ptr @.str.5680, i64 5109, ptr @.str.5681) + br i1 %t4, label %panic8656, label %ok8657 +panic8656: + call void @finch_panic(ptr @.str.5900, i64 5541, ptr @.str.5901) unreachable -ok8191: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 29 +ok8657: + %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 30 %t6 = getelementptr inbounds %S.platform.Target, ptr %t5, i32 0, i32 5 %t7 = load i1, ptr %t6 - br i1 %t7, label %then8192, label %endif8194 -then8192: + br i1 %t7, label %then8658, label %endif8660 +then8658: %t8 = load { ptr, i64, i64 }, ptr %a2 store { ptr, i64, i64 } %t8, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.5682, i64 17, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.5902, 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 %panic8195, label %ok8196 -panic8195: - call void @finch_panic(ptr @.str.5683, i64 5110, ptr @.str.5684) + br i1 %t14, label %panic8661, label %ok8662 +panic8661: + call void @finch_panic(ptr @.str.5903, i64 5542, ptr @.str.5904) unreachable -ok8196: - %t15 = getelementptr inbounds %S.gen.Gen, ptr %t13, i32 0, i32 29 +ok8662: + %t15 = getelementptr inbounds %S.gen.Gen, ptr %t13, i32 0, i32 30 %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 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.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 %endif8194 -endif8194: - %t26 = load { ptr, i64, i64 }, ptr %a2 - %t27 = load ptr, ptr %a1 - %t28 = icmp eq ptr %t27, null - br i1 %t28, label %panic8197, label %ok8198 -panic8197: - call void @finch_panic(ptr @.str.5686, i64 5112, ptr @.str.5687) + store { ptr, i64, i64 } %t12, ptr %a21 + call void @finch_str_drop(ptr %a21) + %t22 = load { ptr, i64, i64 }, ptr %a18 + store { ptr, i64, i64 } %t22, ptr %a24 + store { ptr, i64, i64 } { ptr @.str.5905, i64 3, i64 0 }, ptr %a25 + call void @finch_str_concat(ptr %a23, ptr %a24, ptr %a25) + store { ptr, i64, i64 } %t22, ptr %a26 + call void @finch_str_drop(ptr %a26) + %t27 = load { ptr, i64, i64 }, ptr %a23 + %t28 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t27, ptr %a2 + store { ptr, i64, i64 } %t28, ptr %a29 + call void @finch_str_drop(ptr %a29) + br label %endif8660 +endif8660: + %t30 = load { ptr, i64, i64 }, ptr %a2 + %t31 = load ptr, ptr %a1 + %t32 = icmp eq ptr %t31, null + br i1 %t32, label %panic8663, label %ok8664 +panic8663: + call void @finch_panic(ptr @.str.5906, i64 5544, ptr @.str.5907) unreachable -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.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 - 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.5689, i64 2, i64 0 }, ptr %a40 +ok8664: + %t33 = getelementptr inbounds %S.gen.Gen, ptr %t31, i32 0, i32 2 + %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t33, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.5908, i64 1, i64 0 }, ptr %a35 + call void @finch_str_join(ptr %a36, ptr %t33, ptr %a35) + %t37 = load { ptr, i64, i64 }, ptr %a36 + store { ptr, i64, i64 } %t30, 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 - %t42 = call { ptr, i64, i64 } @finch.gen.runtimeDecls() - store { ptr, i64, i64 } %t41, ptr %a44 - store { ptr, i64, i64 } %t42, ptr %a45 + store { ptr, i64, i64 } %t37, ptr %a41 + call void @finch_str_drop(ptr %a41) + %t42 = load { ptr, i64, i64 }, ptr %a38 + store { ptr, i64, i64 } %t42, ptr %a44 + store { ptr, i64, i64 } { ptr @.str.5909, i64 2, 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 %a48 - 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 %panic8199, label %ok8200 -panic8199: - call void @finch_panic(ptr @.str.5691, i64 5113, ptr @.str.5692) - unreachable -ok8200: - %t53 = getelementptr inbounds %S.gen.Gen, ptr %t51, i32 0, i32 28 - %t54 = load i1, ptr %t53 - 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.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 %endif8203 -endif8203: + store { ptr, i64, i64 } %t42, ptr %a46 + call void @finch_str_drop(ptr %a46) + %t47 = load { ptr, i64, i64 }, ptr %a43 + %t48 = call { ptr, i64, i64 } @finch.gen.runtimeDecls() + store { ptr, i64, i64 } %t47, ptr %a50 + store { ptr, i64, i64 } %t48, ptr %a51 + call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) + store { ptr, i64, i64 } %t47, ptr %a52 + call void @finch_str_drop(ptr %a52) + store { ptr, i64, i64 } %t48, ptr %a53 + call void @finch_str_drop(ptr %a53) + %t54 = load { ptr, i64, i64 }, ptr %a49 + store { ptr, i64, i64 } %t54, ptr %a56 + store { ptr, i64, i64 } { ptr @.str.5910, i64 1, i64 0 }, ptr %a57 + call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) + store { ptr, i64, i64 } %t54, ptr %a58 + call void @finch_str_drop(ptr %a58) + %t59 = load { ptr, i64, i64 }, ptr %a55 %t60 = load { ptr, i64, i64 }, ptr %a2 - %t61 = load ptr, ptr %a1 - %t62 = icmp eq ptr %t61, null - br i1 %t62, label %panic8204, label %ok8205 -panic8204: - call void @finch_panic(ptr @.str.5694, i64 5116, ptr @.str.5695) + store { ptr, i64, i64 } %t59, ptr %a2 + store { ptr, i64, i64 } %t60, ptr %a61 + call void @finch_str_drop(ptr %a61) + %t62 = load ptr, ptr %a1 + %t63 = icmp eq ptr %t62, null + br i1 %t63, label %panic8665, label %ok8666 +panic8665: + call void @finch_panic(ptr @.str.5911, i64 5545, ptr @.str.5912) unreachable -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.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 - 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 %a2 - %t72 = load ptr, ptr %a1 - %t73 = icmp eq ptr %t72, null - br i1 %t73, label %panic8206, label %ok8207 -panic8206: - call void @finch_panic(ptr @.str.5697, i64 5117, ptr @.str.5698) +ok8666: + %t64 = getelementptr inbounds %S.gen.Gen, ptr %t62, i32 0, i32 29 + %t65 = load i1, ptr %t64 + br i1 %t65, label %then8667, label %endif8669 +then8667: + %t66 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t66, ptr %a68 + store { ptr, i64, i64 } { ptr @.str.5913, i64 62, 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 %a2 + store { ptr, i64, i64 } %t70, ptr %a2 + store { ptr, i64, i64 } %t71, ptr %a72 + call void @finch_str_drop(ptr %a72) + br label %endif8669 +endif8669: + %t73 = load { ptr, i64, i64 }, ptr %a2 + %t74 = load ptr, ptr %a1 + %t75 = icmp eq ptr %t74, null + br i1 %t75, label %panic8670, label %ok8671 +panic8670: + call void @finch_panic(ptr @.str.5914, i64 5548, ptr @.str.5915) unreachable -ok8207: - %t74 = getelementptr inbounds %S.gen.Gen, ptr %t72, i32 0, i32 28 - %t75 = load i1, ptr %t74 - 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.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 - %t82 = call { ptr, i64, i64 } @finch.gen.dbgModule(ptr %t81) +ok8671: + %t76 = getelementptr inbounds %S.gen.Gen, ptr %t74, i32 0, i32 3 + %t77 = getelementptr inbounds { ptr, i64, i64 }, ptr %t76, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.5916, i64 1, i64 0 }, ptr %a78 + call void @finch_str_join(ptr %a79, ptr %t76, ptr %a78) + %t80 = load { ptr, i64, i64 }, ptr %a79 + store { ptr, i64, i64 } %t73, ptr %a82 + store { ptr, i64, i64 } %t80, ptr %a83 + call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) store { ptr, i64, i64 } %t80, 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 %a2 - 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) - %t90 = load { ptr, i64, i64 }, ptr %a89 - ret { ptr, i64, i64 } %t90 + call void @finch_str_drop(ptr %a84) + %t85 = load { ptr, i64, i64 }, ptr %a81 + %t86 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t85, ptr %a2 + store { ptr, i64, i64 } %t86, ptr %a87 + call void @finch_str_drop(ptr %a87) + %t88 = load ptr, ptr %a1 + %t89 = icmp eq ptr %t88, null + br i1 %t89, label %panic8672, label %ok8673 +panic8672: + call void @finch_panic(ptr @.str.5917, i64 5549, ptr @.str.5918) + unreachable +ok8673: + %t90 = getelementptr inbounds %S.gen.Gen, ptr %t88, i32 0, i32 29 + %t91 = load i1, ptr %t90 + br i1 %t91, label %then8674, label %endif8676 +then8674: + %t92 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t92, ptr %a94 + store { ptr, i64, i64 } { ptr @.str.5919, i64 1, i64 0 }, ptr %a95 + call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) + %t96 = load { ptr, i64, i64 }, ptr %a93 + %t97 = load ptr, ptr %a1 + %t98 = call { ptr, i64, i64 } @finch.gen.dbgModule(ptr %t97) + store { ptr, i64, i64 } %t96, ptr %a100 + store { ptr, i64, i64 } %t98, ptr %a101 + call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) + store { ptr, i64, i64 } %t96, ptr %a102 + call void @finch_str_drop(ptr %a102) + store { ptr, i64, i64 } %t98, ptr %a103 + call void @finch_str_drop(ptr %a103) + %t104 = load { ptr, i64, i64 }, ptr %a99 + %t105 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t104, ptr %a2 + store { ptr, i64, i64 } %t105, ptr %a106 + call void @finch_str_drop(ptr %a106) + br label %endif8676 +endif8676: + %t107 = load { ptr, i64, i64 }, ptr %a2 + ret { ptr, i64, i64 } %t107 } define internal void @finch.copy.arr_S_ast_Program(ptr %dst, ptr %src) { @@ -75886,20 +91358,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.cond8211 -n.cond8211: + br label %n.cond8677 +n.cond8677: %t6 = load i64, ptr %a5 %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body8212, label %n.end8213 -n.body8212: + br i1 %t7, label %n.body8678, label %n.end8679 +n.body8678: %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.cond8211 -n.end8213: + br label %n.cond8677 +n.end8679: ret void } @@ -75933,12 +91405,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.cond8214 -n.cond8214: + br label %n.cond8680 +n.cond8680: %t4 = load i64, ptr %a3 %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body8215, label %n.end8216 -n.body8215: + br i1 %t5, label %n.body8681, label %n.end8682 +n.body8681: %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 @@ -75948,21 +91420,21 @@ n.body8215: %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.live8217, label %entry.next8218 -entry.live8217: + br i1 %t14, label %entry.live8683, label %entry.next8684 +entry.live8683: %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.next8218 -entry.next8218: + br label %entry.next8684 +entry.next8684: %t19 = load i64, ptr %a3 %t20 = add i64 %t19, 1 store i64 %t20, ptr %a3 - br label %n.cond8214 -n.end8216: + br label %n.cond8680 +n.end8682: ret void } @@ -75973,12 +91445,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.cond8219 -n.cond8219: + br label %n.cond8685 +n.cond8685: %t4 = load i64, ptr %a3 %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body8220, label %n.end8221 -n.body8220: + br i1 %t5, label %n.body8686, label %n.end8687 +n.body8686: %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 @@ -75988,21 +91460,21 @@ n.body8220: %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.live8222, label %entry.next8223 -entry.live8222: + br i1 %t14, label %entry.live8688, label %entry.next8689 +entry.live8688: %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.next8223 -entry.next8223: + br label %entry.next8689 +entry.next8689: %t19 = load i64, ptr %a3 %t20 = add i64 %t19, 1 store i64 %t20, ptr %a3 - br label %n.cond8219 -n.end8221: + br label %n.cond8685 +n.end8687: ret void } @@ -76013,12 +91485,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.cond8224 -n.cond8224: + br label %n.cond8690 +n.cond8690: %t4 = load i64, ptr %a3 %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body8225, label %n.end8226 -n.body8225: + br i1 %t5, label %n.body8691, label %n.end8692 +n.body8691: %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 @@ -76028,21 +91500,21 @@ n.body8225: %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.live8227, label %entry.next8228 -entry.live8227: + br i1 %t14, label %entry.live8693, label %entry.next8694 +entry.live8693: %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.next8228 -entry.next8228: + br label %entry.next8694 +entry.next8694: %t19 = load i64, ptr %a3 %t20 = add i64 %t19, 1 store i64 %t20, ptr %a3 - br label %n.cond8224 -n.end8226: + br label %n.cond8690 +n.end8692: ret void } @@ -76053,12 +91525,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.cond8229 -n.cond8229: + br label %n.cond8695 +n.cond8695: %t4 = load i64, ptr %a3 %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body8230, label %n.end8231 -n.body8230: + br i1 %t5, label %n.body8696, label %n.end8697 +n.body8696: %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 @@ -76068,21 +91540,21 @@ n.body8230: %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.live8232, label %entry.next8233 -entry.live8232: + br i1 %t14, label %entry.live8698, label %entry.next8699 +entry.live8698: %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.next8233 -entry.next8233: + br label %entry.next8699 +entry.next8699: %t19 = load i64, ptr %a3 %t20 = add i64 %t19, 1 store i64 %t20, ptr %a3 - br label %n.cond8229 -n.end8231: + br label %n.cond8695 +n.end8697: ret void } @@ -76109,6 +91581,252 @@ entry: ret void } +define internal void @finch.drop.arr_S_gen_Pending(ptr %a) { +entry: + %a4 = alloca i64, align 16 + %t1 = load ptr, ptr %a + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 + %t3 = load i64, ptr %t2 + store i64 0, ptr %a4 + br label %n.cond8768 +n.cond8768: + %t5 = load i64, ptr %a4 + %t6 = icmp slt i64 %t5, %t3 + br i1 %t6, label %n.body8769, label %n.end8770 +n.body8769: + %t7 = getelementptr inbounds %S.gen.Pending, ptr %t1, i64 %t5 + call void @finch.drop.S_gen_Pending(ptr %t7) + %t8 = load i64, ptr %a4 + %t9 = add i64 %t8, 1 + store i64 %t9, ptr %a4 + br label %n.cond8768 +n.end8770: + call void @finch_arr_free(ptr %a) + ret void +} + +define internal void @finch.drop.arr_S_gen_Loop(ptr %a) { +entry: + %a4 = alloca i64, align 16 + %t1 = load ptr, ptr %a + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 + %t3 = load i64, ptr %t2 + store i64 0, ptr %a4 + br label %n.cond8771 +n.cond8771: + %t5 = load i64, ptr %a4 + %t6 = icmp slt i64 %t5, %t3 + br i1 %t6, label %n.body8772, label %n.end8773 +n.body8772: + %t7 = getelementptr inbounds %S.gen.Loop, ptr %t1, i64 %t5 + call void @finch.drop.S_gen_Loop(ptr %t7) + %t8 = load i64, ptr %a4 + %t9 = add i64 %t8, 1 + store i64 %t9, ptr %a4 + br label %n.cond8771 +n.end8773: + call void @finch_arr_free(ptr %a) + ret void +} + +define internal void @finch.drop.arr_S_gen_FnSig(ptr %a) { +entry: + %a4 = alloca i64, align 16 + %t1 = load ptr, ptr %a + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 + %t3 = load i64, ptr %t2 + store i64 0, ptr %a4 + br label %n.cond8774 +n.cond8774: + %t5 = load i64, ptr %a4 + %t6 = icmp slt i64 %t5, %t3 + br i1 %t6, label %n.body8775, label %n.end8776 +n.body8775: + %t7 = getelementptr inbounds %S.gen.FnSig, ptr %t1, i64 %t5 + call void @finch.drop.S_gen_FnSig(ptr %t7) + %t8 = load i64, ptr %a4 + %t9 = add i64 %t8, 1 + store i64 %t9, ptr %a4 + br label %n.cond8774 +n.end8776: + call void @finch_arr_free(ptr %a) + ret void +} + +define internal void @finch.drop.arr_S_gen_StructDef(ptr %a) { +entry: + %a4 = alloca i64, align 16 + %t1 = load ptr, ptr %a + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 + %t3 = load i64, ptr %t2 + store i64 0, ptr %a4 + br label %n.cond8777 +n.cond8777: + %t5 = load i64, ptr %a4 + %t6 = icmp slt i64 %t5, %t3 + br i1 %t6, label %n.body8778, label %n.end8779 +n.body8778: + %t7 = getelementptr inbounds %S.gen.StructDef, ptr %t1, i64 %t5 + call void @finch.drop.S_gen_StructDef(ptr %t7) + %t8 = load i64, ptr %a4 + %t9 = add i64 %t8, 1 + store i64 %t9, ptr %a4 + br label %n.cond8777 +n.end8779: + call void @finch_arr_free(ptr %a) + ret void +} + +define internal void @finch.drop.arr_S_gen_Template(ptr %a) { +entry: + %a4 = alloca i64, align 16 + %t1 = load ptr, ptr %a + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 + %t3 = load i64, ptr %t2 + store i64 0, ptr %a4 + br label %n.cond8780 +n.cond8780: + %t5 = load i64, ptr %a4 + %t6 = icmp slt i64 %t5, %t3 + br i1 %t6, label %n.body8781, label %n.end8782 +n.body8781: + %t7 = getelementptr inbounds %S.gen.Template, ptr %t1, i64 %t5 + call void @finch.drop.S_gen_Template(ptr %t7) + %t8 = load i64, ptr %a4 + %t9 = add i64 %t8, 1 + store i64 %t9, ptr %a4 + br label %n.cond8780 +n.end8782: + call void @finch_arr_free(ptr %a) + ret void +} + +define internal void @finch.drop.arr_S_gen_EnumDef(ptr %a) { +entry: + %a4 = alloca i64, align 16 + %t1 = load ptr, ptr %a + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 + %t3 = load i64, ptr %t2 + store i64 0, ptr %a4 + br label %n.cond8783 +n.cond8783: + %t5 = load i64, ptr %a4 + %t6 = icmp slt i64 %t5, %t3 + br i1 %t6, label %n.body8784, label %n.end8785 +n.body8784: + %t7 = getelementptr inbounds %S.gen.EnumDef, ptr %t1, i64 %t5 + call void @finch.drop.S_gen_EnumDef(ptr %t7) + %t8 = load i64, ptr %a4 + %t9 = add i64 %t8, 1 + store i64 %t9, ptr %a4 + br label %n.cond8783 +n.end8785: + call void @finch_arr_free(ptr %a) + ret void +} + +define internal void @finch.drop.map_str_int(ptr %a) { +entry: + %a3 = alloca i64, align 16 + %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 2 + %t2 = load i64, ptr %t1 + store i64 0, ptr %a3 + br label %n.cond8786 +n.cond8786: + %t4 = load i64, ptr %a3 + %t5 = icmp slt i64 %t4, %t2 + br i1 %t5, label %n.body8787, label %n.end8788 +n.body8787: + %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 0 + %t7 = load ptr, ptr %t6 + %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t7, i64 %t4 + %t9 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t8, i32 0, i32 0 + %t10 = load i64, ptr %t9 + %t11 = icmp ne i64 %t10, 0 + br i1 %t11, label %entry.live8789, label %entry.next8790 +entry.live8789: + %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t8, i32 0, i32 1 + call void @finch_str_drop(ptr %t12) + %t13 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t8, i32 0, i32 2 + br label %entry.next8790 +entry.next8790: + %t14 = load i64, ptr %a3 + %t15 = add i64 %t14, 1 + store i64 %t15, ptr %a3 + br label %n.cond8786 +n.end8788: + call void @finch_map_free(ptr %a) + ret void +} + +define internal void @finch.drop.S_gen_Gen(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 0 + call void @finch.drop.arr_S_ast_Program(ptr %t1) + %t2 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 1 + call void @finch.drop.arr_str(ptr %t2) + %t3 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 2 + call void @finch.drop.arr_str(ptr %t3) + %t4 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 3 + call void @finch.drop.arr_str(ptr %t4) + %t5 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 4 + call void @finch.drop.arr_str(ptr %t5) + %t6 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 5 + call void @finch.drop.arr_str(ptr %t6) + %t7 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 10 + call void @finch.drop.arr_S_gen_Scope(ptr %t7) + %t8 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 11 + call void @finch.drop.arr_S_gen_Pending(ptr %t8) + %t9 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 12 + call void @finch.drop.arr_S_gen_Loop(ptr %t9) + %t10 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 13 + call void @finch.drop.S_gen_FnSig(ptr %t10) + %t11 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 14 + call void @finch_str_drop(ptr %t11) + %t12 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 15 + call void @finch.drop.arr_S_gen_FnSig(ptr %t12) + %t13 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 16 + call void @finch.drop.arr_S_gen_StructDef(ptr %t13) + %t14 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 17 + call void @finch.drop.arr_S_gen_Template(ptr %t14) + %t15 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 18 + call void @finch.drop.arr_str(ptr %t15) + %t16 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 19 + call void @finch.drop.arr_S_ast_Type(ptr %t16) + %t17 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 20 + call void @finch_str_drop(ptr %t17) + %t18 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 21 + call void @finch.drop.arr_S_gen_EnumDef(ptr %t18) + %t19 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 22 + call void @finch.drop.arr_str(ptr %t19) + %t20 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 23 + call void @finch.drop.arr_str(ptr %t20) + %t21 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 25 + call void @finch.drop.S_cimport_CImports(ptr %t21) + %t22 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 28 + call void @finch.drop.arr_str(ptr %t22) + %t23 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 30 + call void @finch.drop.S_platform_Target(ptr %t23) + %t24 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 31 + call void @finch_str_drop(ptr %t24) + %t25 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 32 + call void @finch.drop.arr_str(ptr %t25) + %t26 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 33 + call void @finch.drop.map_str_int(ptr %t26) + %t27 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 34 + call void @finch.drop.arr_int(ptr %t27) + %t28 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 39 + call void @finch.drop.arr_str(ptr %t28) + %t29 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 40 + call void @finch_str_drop(ptr %t29) + %t30 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 41 + call void @finch_str_drop(ptr %t30) + %t31 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 42 + call void @finch_str_drop(ptr %t31) + ret void +} + define internal { ptr, i64, i64 } @finch.gen.generate({ ptr, i64, i64 } %p0, { ptr, i64, i64 } %p1, %S.cimport.CImports %p2, %S.gen.Options %p3) { entry: %a1 = alloca { ptr, i64, i64 }, align 16 @@ -76136,127 +91854,166 @@ entry: %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 + %a97 = 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 %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 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = 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 + %a114 = alloca { ptr, i64, i64 }, align 16 %a130 = alloca { ptr, i64, i64 }, 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 + %a135 = alloca { ptr, i64, i64 }, align 16 + %a137 = 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 + %a151 = alloca { ptr, i64, i64 }, align 16 + %a155 = alloca i64, align 16 + %a205 = alloca { ptr, i64, i64 }, align 16 + %a206 = alloca { ptr, i64, i64 }, align 16 + %a207 = alloca { ptr, i64, i64 }, align 16 + %a215 = alloca { ptr, i64, i64 }, align 16 + %a219 = alloca i64, align 16 + %a245 = alloca { ptr, i64, i64 }, 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 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a285 = alloca { ptr, i64, i64 }, align 16 + %a248 = alloca { ptr, i64, i64 }, align 16 + %a255 = alloca { ptr, i64, i64 }, align 16 + %a256 = alloca { ptr, i64, i64 }, align 16 + %a261 = alloca i64, align 16 + %a269 = alloca %S.gen.FnSig, align 16 + %a275 = alloca { ptr, i64, i64 }, align 16 + %a279 = alloca { ptr, i64, i64 }, align 16 %a286 = 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 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = 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 + %a296 = 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 + %a317 = alloca %S.gen.FnSig, align 16 + %a318 = alloca %S.gen.FnSig, align 16 + %a320 = alloca %S.gen.FnSig, align 16 + %a324 = 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 + %a332 = 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 + %a339 = 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 - %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 - %a354 = alloca { ptr, i64, i64 }, align 16 + %a344 = alloca { ptr, i64, i64 }, align 16 + %a346 = alloca { ptr, i64, i64 }, align 16 + %a347 = 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 - %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 %a363 = alloca { ptr, i64, i64 }, align 16 %a364 = alloca { ptr, i64, i64 }, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 + %a367 = alloca { ptr, i64, i64 }, align 16 + %a368 = 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 + %a380 = 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 + %a385 = 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 + %a389 = alloca { ptr, i64, i64 }, align 16 + %a390 = 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 - %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 + %a403 = alloca { ptr, i64, i64 }, align 16 + %a404 = alloca { ptr, i64, i64 }, align 16 + %a405 = alloca { ptr, i64, i64 }, align 16 %a408 = alloca { ptr, i64, i64 }, align 16 - %a412 = 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 %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 + %a421 = alloca { ptr, i64, i64 }, align 16 + %a422 = alloca { ptr, i64, i64 }, align 16 %a423 = alloca { ptr, i64, i64 }, align 16 - %a424 = alloca { ptr, i64, i64 }, align 16 + %a426 = alloca { ptr, i64, i64 }, align 16 + %a427 = 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 + %a432 = alloca { ptr, i64, i64 }, align 16 + %a433 = alloca { ptr, i64, i64 }, align 16 + %a434 = 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 + %a440 = 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 + %a444 = 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 + %a449 = alloca { ptr, i64, i64 }, align 16 + %a453 = 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 %a457 = alloca { ptr, i64, i64 }, align 16 + %a458 = 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 + %a463 = alloca { ptr, i64, i64 }, align 16 + %a467 = alloca { ptr, i64, i64 }, align 16 + %a468 = 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 + %a477 = alloca { ptr, i64, i64 }, align 16 + %a479 = 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 + %a489 = alloca { ptr, i64, i64 }, align 16 + %a490 = alloca { ptr, i64, i64 }, align 16 + %a491 = alloca { ptr, i64, i64 }, align 16 + %a492 = 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 + %a498 = alloca { ptr, i64, i64 }, align 16 + %a500 = alloca { ptr, i64, i64 }, align 16 + %a501 = alloca { ptr, i64, i64 }, align 16 + %a502 = alloca { ptr, i64, i64 }, align 16 + %a503 = 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 + %a509 = alloca { ptr, i64, i64 }, align 16 + %a511 = alloca { ptr, i64, i64 }, align 16 + %a512 = alloca { ptr, i64, i64 }, align 16 + %a513 = alloca { ptr, i64, i64 }, align 16 + %a514 = 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 @@ -76278,713 +92035,815 @@ entry: store %S.cimport.CImports %t18, ptr %a19 call void @finch.copy.S_cimport_CImports(ptr %a20, ptr %a19) %t21 = load %S.cimport.CImports, ptr %a20 - %t22 = insertvalue %S.gen.Gen %t17, %S.cimport.CImports %t21, 24 + %t22 = insertvalue %S.gen.Gen %t17, %S.cimport.CImports %t21, 25 %t23 = getelementptr inbounds %S.gen.Options, ptr %a4, i32 0, i32 0 %t24 = load i1, ptr %t23 - %t25 = insertvalue %S.gen.Gen %t22, i1 %t24, 25 + %t25 = insertvalue %S.gen.Gen %t22, i1 %t24, 26 %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 + %t28 = insertvalue %S.gen.Gen %t25, i1 %t27, 27 %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 + %t31 = insertvalue %S.gen.Gen %t28, i1 %t30, 29 %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 + %t37 = insertvalue %S.gen.Gen %t31, %S.platform.Target %t36, 30 %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 + %t43 = insertvalue %S.gen.Gen %t37, { ptr, i64, i64 } %t42, 31 + %t44 = insertvalue %S.gen.Gen %t43, i64 -1, 35 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) + br i1 %t48, label %panic8700, label %ok8701 +panic8700: + call void @finch_panic(ptr @.str.5920, i64 5559, ptr @.str.5921) unreachable -ok8235: - %t49 = getelementptr inbounds %S.gen.Gen, ptr %t47, i32 0, i32 28 +ok8701: + %t49 = getelementptr inbounds %S.gen.Gen, ptr %t47, i32 0, i32 29 %t50 = load i1, ptr %t49 - br i1 %t50, label %then8236, label %endif8238 -then8236: + br i1 %t50, label %then8702, label %endif8704 +then8702: %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) + br i1 %t52, label %panic8705, label %ok8706 +panic8705: + call void @finch_panic(ptr @.str.5922, i64 5561, ptr @.str.5923) unreachable -ok8240: - %t53 = getelementptr inbounds %S.gen.Gen, ptr %t51, i32 0, i32 31 +ok8706: + %t53 = getelementptr inbounds %S.gen.Gen, ptr %t51, i32 0, i32 32 %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 { ptr, i64, i64 } { ptr @.str.5924, 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) + br i1 %t60, label %panic8707, label %ok8708 +panic8707: + call void @finch_panic(ptr @.str.5925, i64 5562, ptr @.str.5926) unreachable -ok8242: - %t61 = getelementptr inbounds %S.gen.Gen, ptr %t59, i32 0, i32 31 +ok8708: + %t61 = getelementptr inbounds %S.gen.Gen, ptr %t59, i32 0, i32 32 %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 { ptr, i64, i64 } { ptr @.str.5927, 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) + br i1 %t68, label %panic8709, label %ok8710 +panic8709: + call void @finch_panic(ptr @.str.5928, i64 5563, ptr @.str.5929) unreachable -ok8244: - %t69 = getelementptr inbounds %S.gen.Gen, ptr %t67, i32 0, i32 31 +ok8710: + %t69 = getelementptr inbounds %S.gen.Gen, ptr %t67, i32 0, i32 32 %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 { ptr, i64, i64 } { ptr @.str.5930, i64 38, i64 0 }, ptr %t74 store i64 %t72, ptr %t70 store i64 0, ptr %a75 - br label %each.cond8245 -each.cond8245: + br label %each.cond8711 +each.cond8711: %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: + br i1 %t79, label %each.body8712, label %each.end8714 +each.body8712: %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) + br i1 %t85, label %panic8715, label %ok8716 +panic8715: + call void @finch_panic(ptr @.str.5931, i64 5565, ptr @.str.5932) unreachable -ok8250: - %t86 = getelementptr inbounds %S.gen.Gen, ptr %t84, i32 0, i32 33 +ok8716: + %t86 = getelementptr inbounds %S.gen.Gen, ptr %t84, i32 0, i32 34 %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 } { ptr @.str.5933, 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 + store { ptr, i64, i64 } { ptr @.str.5934, 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) + store { ptr, i64, i64 } %t93, ptr %a97 + call void @finch_str_drop(ptr %a97) + %t98 = load { ptr, i64, i64 }, ptr %a94 + %t99 = load ptr, ptr %a46 + %t100 = icmp eq ptr %t99, null + br i1 %t100, label %panic8717, label %ok8718 +panic8717: + call void @finch_panic(ptr @.str.5935, i64 5565, ptr @.str.5936) unreachable -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 +ok8718: + %t101 = getelementptr inbounds %S.gen.Gen, ptr %t99, i32 0, i32 31 + %t102 = load { ptr, i64, i64 }, ptr %t101 + store { ptr, i64, i64 } %t98, ptr %a104 + store { ptr, i64, i64 } %t102, ptr %a105 + call void @finch_str_concat(ptr %a103, ptr %a104, ptr %a105) + store { ptr, i64, i64 } %t98, ptr %a106 + call void @finch_str_drop(ptr %a106) + %t107 = load { ptr, i64, i64 }, ptr %a103 + store { ptr, i64, i64 } %t107, ptr %a109 + store { ptr, i64, i64 } { ptr @.str.5937, i64 2, i64 0 }, ptr %a110 + call void @finch_str_concat(ptr %a108, ptr %a109, ptr %a110) + store { ptr, i64, i64 } %t107, ptr %a111 + call void @finch_str_drop(ptr %a111) + %t112 = load { ptr, i64, i64 }, ptr %a108 + %t113 = call i64 @finch.gen.md(ptr %t88, { ptr, i64, i64 } %t112) + store { ptr, i64, i64 } %t112, ptr %a114 + call void @finch_str_drop(ptr %a114) + %t115 = load i64, ptr %t87 %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) + call void @finch_arr_reserve(ptr %t86, i64 %t116, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) + %t117 = load ptr, ptr %t86 + %t118 = getelementptr inbounds i64, ptr %t117, i64 %t115 + store i64 %t113, ptr %t118 + store i64 %t116, ptr %t87 + br label %each.step8713 +each.step8713: + %t119 = load i64, ptr %a75 + %t120 = add i64 %t119, 1 + store i64 %t120, ptr %a75 + br label %each.cond8711 +each.end8714: + %t121 = load ptr, ptr %a46 + %t122 = icmp eq ptr %t121, null + br i1 %t122, label %panic8719, label %ok8720 +panic8719: + call void @finch_panic(ptr @.str.5939, i64 5567, ptr @.str.5940) unreachable -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) +ok8720: + %t123 = getelementptr inbounds %S.gen.Gen, ptr %t121, i32 0, i32 34 + %t124 = load { ptr, i64, i64 }, ptr %t123 + %t125 = extractvalue { ptr, i64, i64 } %t124, 1 + %t126 = icmp uge i64 0, %t125 + br i1 %t126, label %range8721, label %inrange8722 +range8721: + call void @finch_panic_index(ptr @.str.5941, i64 5567, i64 0, i64 %t125) unreachable -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 +inrange8722: + %t127 = extractvalue { ptr, i64, i64 } %t124, 0 + %t128 = getelementptr inbounds i64, ptr %t127, i64 0 + %t129 = load i64, ptr %t128 + call void @finch_str_from_int(ptr %a130, i64 %t129) + %t131 = load { ptr, i64, i64 }, ptr %a130 + store { ptr, i64, i64 } { ptr @.str.5938, i64 52, i64 0 }, ptr %a133 + store { ptr, i64, i64 } %t131, 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) + store { ptr, i64, i64 } %t131, ptr %a135 + call void @finch_str_drop(ptr %a135) + %t136 = load { ptr, i64, i64 }, ptr %a132 + store { ptr, i64, i64 } %t136, ptr %a138 + store { ptr, i64, i64 } { ptr @.str.5942, i64 84, i64 0 }, ptr %a139 + call void @finch_str_concat(ptr %a137, ptr %a138, ptr %a139) + store { ptr, i64, i64 } %t136, ptr %a140 + call void @finch_str_drop(ptr %a140) + %t141 = load { ptr, i64, i64 }, ptr %a137 + %t142 = load ptr, ptr %a46 + %t143 = icmp eq ptr %t142, null + br i1 %t143, label %panic8723, label %ok8724 +panic8723: + call void @finch_panic(ptr @.str.5943, i64 5567, ptr @.str.5944) unreachable -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) +ok8724: + %t144 = getelementptr inbounds %S.gen.Gen, ptr %t142, i32 0, i32 32 + %t145 = load { ptr, i64, i64 }, ptr %t144 + %t146 = extractvalue { ptr, i64, i64 } %t145, 1 + %t147 = icmp uge i64 0, %t146 + br i1 %t147, label %range8725, label %inrange8726 +range8725: + call void @finch_panic_index(ptr @.str.5945, i64 5567, i64 0, i64 %t146) unreachable -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 +inrange8726: + %t148 = extractvalue { ptr, i64, i64 } %t145, 0 + %t149 = getelementptr inbounds { ptr, i64, i64 }, ptr %t148, i64 0 + %t150 = load { ptr, i64, i64 }, ptr %t149 + store { ptr, i64, i64 } %t141, ptr %t149 + store { ptr, i64, i64 } %t150, ptr %a151 + call void @finch_str_drop(ptr %a151) + br label %endif8704 +endif8704: %t152 = load ptr, ptr %a46 - %t153 = icmp eq ptr %t152, null - br i1 %t153, label %panic8267, label %ok8268 -panic8267: - call void @finch_panic(ptr @.str.5728, i64 5141, ptr @.str.5729) + call void @finch.gen.declare(ptr %t152) + %t153 = load ptr, ptr %a46 + %t154 = call i64 @finch.gen.findFn(ptr %t153, { ptr, i64, i64 } { ptr @.str.5946, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.5947, i64 4, i64 0 }) + store i64 %t154, ptr %a155 + %t156 = load i1, ptr %a7 + br i1 %t156, label %then8727, label %else8728 +then8727: + %t157 = load i64, ptr %a155 + %t158 = icmp sge i64 %t157, 0 + br i1 %t158, label %then8730, label %endif8732 +then8730: + %t159 = load ptr, ptr %a46 + %t160 = load ptr, ptr %a46 + %t161 = icmp eq ptr %t160, null + br i1 %t161, label %panic8733, label %ok8734 +panic8733: + call void @finch_panic(ptr @.str.5948, i64 5573, ptr @.str.5949) unreachable -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) +ok8734: + %t162 = getelementptr inbounds %S.gen.Gen, ptr %t160, i32 0, i32 0 + %t163 = load ptr, ptr %a46 + %t164 = icmp eq ptr %t163, null + br i1 %t164, label %panic8735, label %ok8736 +panic8735: + call void @finch_panic(ptr @.str.5950, i64 5573, ptr @.str.5951) unreachable -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) +ok8736: + %t165 = getelementptr inbounds %S.gen.Gen, ptr %t163, i32 0, i32 15 + %t166 = load i64, ptr %a155 + %t167 = load { ptr, i64, i64 }, ptr %t165 + %t168 = extractvalue { ptr, i64, i64 } %t167, 1 + %t169 = icmp uge i64 %t166, %t168 + br i1 %t169, label %range8737, label %inrange8738 +range8737: + call void @finch_panic_index(ptr @.str.5952, i64 5573, i64 %t166, i64 %t168) unreachable -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) +inrange8738: + %t170 = extractvalue { ptr, i64, i64 } %t167, 0 + %t171 = getelementptr inbounds %S.gen.FnSig, ptr %t170, i64 %t166 + %t172 = getelementptr inbounds %S.gen.FnSig, ptr %t171, i32 0, i32 16 + %t173 = load i64, ptr %t172 + %t174 = load { ptr, i64, i64 }, ptr %t162 + %t175 = extractvalue { ptr, i64, i64 } %t174, 1 + %t176 = icmp uge i64 %t173, %t175 + br i1 %t176, label %range8739, label %inrange8740 +range8739: + call void @finch_panic_index(ptr @.str.5953, i64 5573, i64 %t173, i64 %t175) unreachable -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) +inrange8740: + %t177 = extractvalue { ptr, i64, i64 } %t174, 0 + %t178 = getelementptr inbounds %S.ast.Program, ptr %t177, i64 %t173 + %t179 = getelementptr inbounds %S.ast.Program, ptr %t178, i32 0, i32 8 + %t180 = load ptr, ptr %a46 + %t181 = icmp eq ptr %t180, null + br i1 %t181, label %panic8741, label %ok8742 +panic8741: + call void @finch_panic(ptr @.str.5954, i64 5573, ptr @.str.5955) unreachable -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) +ok8742: + %t182 = getelementptr inbounds %S.gen.Gen, ptr %t180, i32 0, i32 15 + %t183 = load i64, ptr %a155 + %t184 = load { ptr, i64, i64 }, ptr %t182 + %t185 = extractvalue { ptr, i64, i64 } %t184, 1 + %t186 = icmp uge i64 %t183, %t185 + br i1 %t186, label %range8743, label %inrange8744 +range8743: + call void @finch_panic_index(ptr @.str.5956, i64 5573, i64 %t183, i64 %t185) unreachable -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 -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 +inrange8744: + %t187 = extractvalue { ptr, i64, i64 } %t184, 0 + %t188 = getelementptr inbounds %S.gen.FnSig, ptr %t187, i64 %t183 + %t189 = getelementptr inbounds %S.gen.FnSig, ptr %t188, i32 0, i32 17 + %t190 = load i64, ptr %t189 + %t191 = load { ptr, i64, i64 }, ptr %t179 %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) + %t193 = icmp uge i64 %t190, %t192 + br i1 %t193, label %range8745, label %inrange8746 +range8745: + call void @finch_panic_index(ptr @.str.5957, i64 5573, i64 %t190, i64 %t192) unreachable -inrange8285: +inrange8746: %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) + %t195 = getelementptr inbounds %S.ast.Node, ptr %t194, i64 %t190 + %t196 = load %S.ast.Node, ptr %t195 + call void @finch.gen.fail(ptr %t159, %S.ast.Node %t196, { ptr, i64, i64 } { ptr @.str.5958, i64 82, i64 0 }) + br label %endif8732 +endif8732: + br label %endif8729 +else8728: + %t197 = load i64, ptr %a155 + %t198 = icmp slt i64 %t197, 0 + br i1 %t198, label %then8747, label %endif8749 +then8747: + %t199 = load { ptr, i64, i64 }, ptr %a2 + %t200 = extractvalue { ptr, i64, i64 } %t199, 1 + %t201 = icmp uge i64 0, %t200 + br i1 %t201, label %range8750, label %inrange8751 +range8750: + call void @finch_panic_index(ptr @.str.5959, i64 5576, i64 0, i64 %t200) unreachable -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) +inrange8751: + %t202 = extractvalue { ptr, i64, i64 } %t199, 0 + %t203 = getelementptr inbounds { ptr, i64, i64 }, ptr %t202, i64 0 + %t204 = load { ptr, i64, i64 }, ptr %t203 + store { ptr, i64, i64 } %t204, ptr %a206 + store { ptr, i64, i64 } { ptr @.str.5960, i64 64, i64 0 }, ptr %a207 + call void @finch_str_concat(ptr %a205, ptr %a206, ptr %a207) + %t208 = load { ptr, i64, i64 }, ptr %a205 + %t209 = extractvalue { ptr, i64, i64 } %t208, 1 + %t210 = trunc i64 %t209 to i32 + %t211 = extractvalue { ptr, i64, i64 } %t208, 0 + %t212 = icmp eq ptr %t211, null + %t213 = select i1 %t212, ptr @.str.5961, ptr %t211 + %t214 = call i32 (ptr, ...) @printf(ptr @.str.5962, i32 %t210, ptr %t213) + store { ptr, i64, i64 } %t208, ptr %a215 + call void @finch_str_drop(ptr %a215) + %t216 = call i32 (ptr, ...) @printf(ptr @.str.5963) + %t217 = trunc i64 1 to i32 + %t218 = call i32 @fflush(ptr null) + call void @exit(i32 %t217) + br label %endif8749 +endif8749: + br label %endif8729 +endif8729: + store i64 0, ptr %a219 + br label %while.cond8752 +while.cond8752: + %t220 = load i64, ptr %a219 + %t221 = load ptr, ptr %a46 + %t222 = icmp eq ptr %t221, null + br i1 %t222, label %panic8755, label %ok8756 +panic8755: + call void @finch_panic(ptr @.str.5964, i64 5581, ptr @.str.5965) unreachable -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) +ok8756: + %t223 = getelementptr inbounds %S.gen.Gen, ptr %t221, i32 0, i32 15 + %t224 = getelementptr inbounds { ptr, i64, i64 }, ptr %t223, i32 0, i32 1 + %t225 = load i64, ptr %t224 + %t226 = icmp slt i64 %t220, %t225 + br i1 %t226, label %while.body8753, label %while.end8754 +while.body8753: + %t227 = load ptr, ptr %a46 + %t228 = load i64, ptr %a219 + call void @finch.gen.define(ptr %t227, i64 %t228) + %t229 = load i64, ptr %a219 + %t230 = add i64 %t229, 1 + store i64 %t230, ptr %a219 + br label %while.cond8752 +while.end8754: + %t231 = load ptr, ptr %a46 + %t232 = icmp eq ptr %t231, null + br i1 %t232, label %panic8757, label %ok8758 +panic8757: + call void @finch_panic(ptr @.str.5966, i64 5585, ptr @.str.5967) unreachable -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) +ok8758: + %t233 = getelementptr inbounds %S.gen.Gen, ptr %t231, i32 0, i32 27 + %t234 = load i1, ptr %t233 + br i1 %t234, label %then8759, label %endif8761 +then8759: + %t235 = load ptr, ptr %a46 + %t236 = icmp eq ptr %t235, null + br i1 %t236, label %panic8762, label %ok8763 +panic8762: + call void @finch_panic(ptr @.str.5968, i64 5586, ptr @.str.5969) unreachable -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) +ok8763: + %t237 = getelementptr inbounds %S.gen.Gen, ptr %t235, i32 0, i32 0 + %t238 = load { ptr, i64, i64 }, ptr %t237 + %t239 = extractvalue { ptr, i64, i64 } %t238, 1 + %t240 = icmp uge i64 0, %t239 + br i1 %t240, label %range8764, label %inrange8765 +range8764: + call void @finch_panic_index(ptr @.str.5970, i64 5586, i64 0, i64 %t239) unreachable -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: +inrange8765: + %t241 = extractvalue { ptr, i64, i64 } %t238, 0 + %t242 = getelementptr inbounds %S.ast.Program, ptr %t241, i64 0 + %t243 = getelementptr inbounds %S.ast.Program, ptr %t242, i32 0, i32 2 + %t244 = load { ptr, i64, i64 }, ptr %t243 + store { ptr, i64, i64 } %t244, 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 %a248 %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) + %t250 = load { ptr, i64, i64 }, ptr %a248 + call void @finch.gen.indexAll(ptr %t249, { ptr, i64, i64 } %t250) + %t251 = load ptr, ptr %a46 + %t252 = icmp eq ptr %t251, null + br i1 %t252, label %panic8766, label %ok8767 +panic8766: + call void @finch_panic(ptr @.str.5971, i64 5588, ptr @.str.5972) 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) +ok8767: + %t253 = getelementptr inbounds %S.gen.Gen, ptr %t251, i32 0, i32 28 + %t254 = getelementptr inbounds { ptr, i64, i64 }, ptr %t253, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.5973, i64 1, i64 0 }, ptr %a255 + call void @finch_str_join(ptr %a256, ptr %t253, ptr %a255) + %t257 = load { ptr, i64, i64 }, ptr %a256 + call void @finch.drop.arr_str(ptr %a248) + call void @finch.drop.S_gen_Gen(ptr %a45) + ret { ptr, i64, i64 } %t257 +endif8761: + %t258 = load ptr, ptr %a46 + %t259 = icmp eq ptr %t258, null + br i1 %t259, label %panic8791, label %ok8792 +panic8791: + call void @finch_panic(ptr @.str.5974, i64 5590, ptr @.str.5975) 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) +ok8792: + %t260 = getelementptr inbounds %S.gen.Gen, ptr %t258, i32 0, i32 15 + store i64 0, ptr %a261 + br label %each.cond8793 +each.cond8793: + %t262 = getelementptr inbounds { ptr, i64, i64 }, ptr %t260, i32 0, i32 1 + %t263 = load i64, ptr %t262 + %t264 = load i64, ptr %a261 + %t265 = icmp slt i64 %t264, %t263 + br i1 %t265, label %each.body8794, label %each.end8796 +each.body8794: + %t266 = load ptr, ptr %t260 + %t267 = getelementptr inbounds %S.gen.FnSig, ptr %t266, i64 %t264 + %t268 = load %S.gen.FnSig, ptr %t267 + store %S.gen.FnSig %t268, ptr %a269 + %t270 = getelementptr inbounds %S.gen.FnSig, ptr %a269, i32 0, i32 5 + %t271 = load i1, ptr %t270 + br i1 %t271, label %then8797, label %endif8799 +then8797: + %t272 = load ptr, ptr %a46 + %t273 = load %S.gen.FnSig, ptr %a269 + %t274 = call { ptr, i64, i64 } @finch.gen.exportWrapper(ptr %t272, %S.gen.FnSig %t273) + store { ptr, i64, i64 } %t274, ptr %a275 + call void @finch_str_drop(ptr %a275) + br label %endif8799 +endif8799: + br label %each.step8795 +each.step8795: + %t276 = load i64, ptr %a261 + %t277 = add i64 %t276, 1 + store i64 %t277, ptr %a261 + br label %each.cond8793 +each.end8796: + %t278 = load i1, ptr %a7 + br i1 %t278, label %then8800, label %endif8802 +then8800: + store { ptr, i64, i64 } { ptr @.str.5976, i64 0, i64 0 }, ptr %a279 + %t280 = load ptr, ptr %a46 + %t281 = icmp eq ptr %t280, null + br i1 %t281, label %panic8803, label %ok8804 +panic8803: + call void @finch_panic(ptr @.str.5977, i64 5598, ptr @.str.5978) 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) +ok8804: + %t282 = getelementptr inbounds %S.gen.Gen, ptr %t280, i32 0, i32 30 + %t283 = getelementptr inbounds %S.platform.Target, ptr %t282, i32 0, i32 1 + %t284 = load i1, ptr %t283 + br i1 %t284, label %then8805, label %endif8807 +then8805: + %t285 = load { ptr, i64, i64 }, ptr %a279 + store { ptr, i64, i64 } { ptr @.str.5979, i64 10, i64 0 }, ptr %a279 + store { ptr, i64, i64 } %t285, ptr %a286 + call void @finch_str_drop(ptr %a286) + br label %endif8807 +endif8807: + %t287 = load ptr, ptr %a46 + %t288 = icmp eq ptr %t287, null + br i1 %t288, label %panic8808, label %ok8809 +panic8808: + call void @finch_panic(ptr @.str.5980, i64 5601, ptr @.str.5981) 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) +ok8809: + %t289 = getelementptr inbounds %S.gen.Gen, ptr %t287, i32 0, i32 3 + %t290 = getelementptr inbounds { ptr, i64, i64 }, ptr %t289, i32 0, i32 1 + %t291 = load { ptr, i64, i64 }, ptr %a279 + store { ptr, i64, i64 } { ptr @.str.5982, i64 6, i64 0 }, ptr %a293 + store { ptr, i64, i64 } %t291, ptr %a294 + 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.5983, i64 107, i64 0 }, ptr %a298 + call void @finch_str_concat(ptr %a296, ptr %a297, ptr %a298) + store { ptr, i64, i64 } %t295, ptr %a299 + call void @finch_str_drop(ptr %a299) + %t300 = load { ptr, i64, i64 }, ptr %a296 + %t301 = load i64, ptr %t290 + %t302 = add i64 %t301, 1 + call void @finch_arr_reserve(ptr %t289, i64 %t302, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t303 = load ptr, ptr %t289 + %t304 = getelementptr inbounds { ptr, i64, i64 }, ptr %t303, i64 %t301 + store { ptr, i64, i64 } %t300, ptr %t304 + store i64 %t302, ptr %t290 + %t305 = load ptr, ptr %a46 + %t306 = call { ptr, i64, i64 } @finch.gen.assemble(ptr %t305) + call void @finch_str_drop(ptr %a279) + call void @finch.drop.S_gen_Gen(ptr %a45) + ret { ptr, i64, i64 } %t306 +endif8802: + %t307 = load ptr, ptr %a46 + %t308 = icmp eq ptr %t307, null + br i1 %t308, label %panic8810, label %ok8811 +panic8810: + call void @finch_panic(ptr @.str.5984, i64 5605, ptr @.str.5985) 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 %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 +ok8811: + %t309 = getelementptr inbounds %S.gen.Gen, ptr %t307, i32 0, i32 15 + %t310 = load i64, ptr %a155 + %t311 = load { ptr, i64, i64 }, ptr %t309 + %t312 = extractvalue { ptr, i64, i64 } %t311, 1 + %t313 = icmp uge i64 %t310, %t312 + br i1 %t313, label %range8812, label %inrange8813 +range8812: + call void @finch_panic_index(ptr @.str.5986, i64 5605, i64 %t310, i64 %t312) + unreachable +inrange8813: + %t314 = extractvalue { ptr, i64, i64 } %t311, 0 + %t315 = getelementptr inbounds %S.gen.FnSig, ptr %t314, i64 %t310 + %t316 = load %S.gen.FnSig, ptr %t315 + store %S.gen.FnSig %t316, ptr %a317 + call void @finch.copy.S_gen_FnSig(ptr %a318, ptr %a317) + %t319 = load %S.gen.FnSig, ptr %a318 + store %S.gen.FnSig %t319, ptr %a320 + %t321 = load ptr, ptr %a46 + %t322 = load %S.gen.FnSig, ptr %a320 + %t323 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t321, %S.gen.FnSig %t322) + store { ptr, i64, i64 } { ptr @.str.5987, i64 5, i64 0 }, ptr %a325 + store { ptr, i64, i64 } %t323, ptr %a326 + call void @finch_str_concat(ptr %a324, ptr %a325, ptr %a326) + store { ptr, i64, i64 } %t323, ptr %a327 + call void @finch_str_drop(ptr %a327) + %t328 = load { ptr, i64, i64 }, ptr %a324 + store { ptr, i64, i64 } %t328, ptr %a330 + store { ptr, i64, i64 } { ptr @.str.5988, i64 1, i64 0 }, ptr %a331 + call void @finch_str_concat(ptr %a329, ptr %a330, ptr %a331) + store { ptr, i64, i64 } %t328, ptr %a332 + call void @finch_str_drop(ptr %a332) + %t333 = load { ptr, i64, i64 }, ptr %a329 + %t334 = getelementptr inbounds %S.gen.FnSig, ptr %a320, i32 0, i32 11 + %t335 = load { ptr, i64, i64 }, ptr %t334 + store { ptr, i64, i64 } %t333, ptr %a337 + store { ptr, i64, i64 } %t335, 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 } %t333, ptr %a339 + call void @finch_str_drop(ptr %a339) + %t340 = load { ptr, i64, i64 }, ptr %a336 store { ptr, i64, i64 } %t340, ptr %a342 - store { ptr, i64, i64 } { ptr @.str.5773, i64 1, i64 0 }, ptr %a343 + store { ptr, i64, i64 } { ptr @.str.5989, 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 + store { ptr, i64, i64 } %t340, ptr %a344 + call void @finch_str_drop(ptr %a344) + %t345 = load { ptr, i64, i64 }, ptr %a341 + store { ptr, i64, i64 } %t345, ptr %a346 + store { ptr, i64, i64 } { ptr @.str.5990, i64 0, i64 0 }, ptr %a347 + %t348 = getelementptr inbounds %S.gen.FnSig, ptr %a320, i32 0, i32 13 + %t349 = getelementptr inbounds { ptr, i64, i64 }, ptr %t348, i32 0, i32 1 + %t350 = load i64, ptr %t349 + %t351 = icmp eq i64 %t350, 1 + br i1 %t351, label %then8814, label %endif8816 +then8814: + %t352 = load { ptr, i64, i64 }, ptr %a347 + store { ptr, i64, i64 } { ptr @.str.5991, i64 133, i64 0 }, ptr %a347 + store { ptr, i64, i64 } %t352, ptr %a353 + call void @finch_str_drop(ptr %a353) + %t354 = load { ptr, i64, i64 }, ptr %a346 + store { ptr, i64, i64 } %t354, ptr %a356 + store { ptr, i64, i64 } { ptr @.str.5992, i64 20, 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 %a346 + store { ptr, i64, i64 } %t358, ptr %a346 + store { ptr, i64, i64 } %t359, ptr %a360 + call void @finch_str_drop(ptr %a360) + br label %endif8816 +endif8816: + %t361 = load { ptr, i64, i64 }, ptr %a346 + store { ptr, i64, i64 } %t361, ptr %a363 + store { ptr, i64, i64 } { ptr @.str.5993, i64 1, i64 0 }, ptr %a364 + call void @finch_str_concat(ptr %a362, ptr %a363, ptr %a364) + %t365 = load { ptr, i64, i64 }, ptr %a362 + %t366 = load { ptr, i64, i64 }, ptr %a346 + store { ptr, i64, i64 } %t365, ptr %a346 + store { ptr, i64, i64 } %t366, ptr %a367 + call void @finch_str_drop(ptr %a367) + store { ptr, i64, i64 } { ptr @.str.5994, i64 12, i64 0 }, ptr %a368 + %t369 = getelementptr inbounds %S.gen.FnSig, ptr %a320, i32 0, i32 9 + %t370 = load i1, ptr %t369 + br i1 %t370, label %then8817, label %else8818 +then8817: + %t371 = load { ptr, i64, i64 }, ptr %a346 + store { ptr, i64, i64 } { ptr @.str.5995, i64 5, i64 0 }, ptr %a373 + store { ptr, i64, i64 } %t371, 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.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 - %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 %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) + %t376 = load { ptr, i64, i64 }, ptr %a346 + store { ptr, i64, i64 } %t375, ptr %a346 + store { ptr, i64, i64 } %t376, ptr %a377 + call void @finch_str_drop(ptr %a377) + %t378 = load { ptr, i64, i64 }, ptr %a347 + store { ptr, i64, i64 } %t378, ptr %a380 + store { ptr, i64, i64 } { ptr @.str.5996, i64 2, 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, i64, i64 }, ptr %a346 + store { ptr, i64, i64 } %t382, ptr %a385 + store { ptr, i64, i64 } %t383, ptr %a386 + call void @finch_str_concat(ptr %a384, ptr %a385, ptr %a386) + store { ptr, i64, i64 } %t382, ptr %a387 + call void @finch_str_drop(ptr %a387) + %t388 = load { ptr, i64, i64 }, ptr %a384 + store { ptr, i64, i64 } %t388, ptr %a390 + store { ptr, i64, i64 } { ptr @.str.5997, i64 1, i64 0 }, ptr %a391 + call void @finch_str_concat(ptr %a389, ptr %a390, ptr %a391) + store { ptr, i64, i64 } %t388, ptr %a392 + call void @finch_str_drop(ptr %a392) + %t393 = load { ptr, i64, i64 }, ptr %a389 + %t394 = load { ptr, i64, i64 }, ptr %a347 + store { ptr, i64, i64 } %t393, ptr %a347 + store { ptr, i64, i64 } %t394, ptr %a395 + call void @finch_str_drop(ptr %a395) + %t396 = load { ptr, i64, i64 }, ptr %a346 + store { ptr, i64, i64 } { ptr @.str.5998, i64 0, i64 0 }, ptr %a346 + store { ptr, i64, i64 } %t396, ptr %a397 + call void @finch_str_drop(ptr %a397) + %t398 = load ptr, ptr %a46 + %t399 = load %S.gen.FnSig, ptr %a320 + %t400 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t398, %S.gen.FnSig %t399) + store { ptr, i64, i64 } %t400, ptr %a401 + %t402 = load { ptr, i64, i64 }, ptr %a347 + store { ptr, i64, i64 } %t402, ptr %a404 + store { ptr, i64, i64 } { ptr @.str.5999, i64 21, i64 0 }, ptr %a405 + call void @finch_str_concat(ptr %a403, ptr %a404, ptr %a405) + %t406 = load { ptr, i64, i64 }, ptr %a403 + %t407 = load { ptr, i64, i64 }, ptr %a401 + store { ptr, i64, i64 } %t406, ptr %a409 + store { ptr, i64, i64 } %t407, ptr %a410 + call void @finch_str_concat(ptr %a408, ptr %a409, ptr %a410) + store { ptr, i64, i64 } %t406, ptr %a411 + call void @finch_str_drop(ptr %a411) + %t412 = load { ptr, i64, i64 }, ptr %a408 + store { ptr, i64, i64 } %t412, ptr %a414 + store { ptr, i64, i64 } { ptr @.str.6000, i64 62, i64 0 }, ptr %a415 + call void @finch_str_concat(ptr %a413, ptr %a414, ptr %a415) + store { ptr, i64, i64 } %t412, ptr %a416 + call void @finch_str_drop(ptr %a416) + %t417 = load { ptr, i64, i64 }, ptr %a413 + %t418 = load { ptr, i64, i64 }, ptr %a347 + store { ptr, i64, i64 } %t417, ptr %a347 + store { ptr, i64, i64 } %t418, ptr %a419 + call void @finch_str_drop(ptr %a419) + %t420 = load { ptr, i64, i64 }, ptr %a347 + store { ptr, i64, i64 } %t420, ptr %a422 + store { ptr, i64, i64 } { ptr @.str.6001, i64 20, i64 0 }, ptr %a423 + call void @finch_str_concat(ptr %a421, ptr %a422, ptr %a423) + %t424 = load { ptr, i64, i64 }, ptr %a421 + %t425 = load { ptr, i64, i64 }, ptr %a401 + store { ptr, i64, i64 } %t424, ptr %a427 + store { ptr, i64, i64 } %t425, ptr %a428 + call void @finch_str_concat(ptr %a426, ptr %a427, ptr %a428) + store { ptr, i64, i64 } %t424, ptr %a429 + call void @finch_str_drop(ptr %a429) + %t430 = load { ptr, i64, i64 }, ptr %a426 + store { ptr, i64, i64 } %t430, ptr %a432 + store { ptr, i64, i64 } { ptr @.str.6002, i64 78, i64 0 }, ptr %a433 + call void @finch_str_concat(ptr %a431, ptr %a432, ptr %a433) + store { ptr, i64, i64 } %t430, ptr %a434 + call void @finch_str_drop(ptr %a434) + %t435 = load { ptr, i64, i64 }, ptr %a431 + %t436 = load { ptr, i64, i64 }, ptr %a347 + store { ptr, i64, i64 } %t435, ptr %a347 + store { ptr, i64, i64 } %t436, ptr %a437 + call void @finch_str_drop(ptr %a437) + %t438 = load { ptr, i64, i64 }, ptr %a347 + store { ptr, i64, i64 } %t438, ptr %a440 + store { ptr, i64, i64 } { ptr @.str.6003, i64 62, i64 0 }, ptr %a441 + call void @finch_str_concat(ptr %a439, ptr %a440, ptr %a441) + %t442 = load { ptr, i64, i64 }, ptr %a439 + %t443 = load { ptr, i64, i64 }, ptr %a347 + store { ptr, i64, i64 } %t442, ptr %a347 + store { ptr, i64, i64 } %t443, ptr %a444 + call void @finch_str_drop(ptr %a444) + %t445 = getelementptr inbounds %S.gen.FnSig, ptr %a320, i32 0, i32 12 + %t446 = getelementptr inbounds %S.ast.Type, ptr %t445, i32 0, i32 0 + %t447 = load { ptr, i64, i64 }, ptr %t446 + store { ptr, i64, i64 } %t447, ptr %a448 + store { ptr, i64, i64 } { ptr @.str.6004, i64 3, i64 0 }, ptr %a449 + %t450 = call i32 @finch_str_eq(ptr %a448, ptr %a449) + %t451 = icmp ne i32 %t450, 0 + br i1 %t451, label %then8820, label %endif8822 +then8820: + %t452 = load { ptr, i64, i64 }, ptr %a401 + store { ptr, i64, i64 } { ptr @.str.6005, i64 20, 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.6006, i64 53, i64 0 }, ptr %a459 + call void @finch_str_concat(ptr %a457, ptr %a458, ptr %a459) + store { ptr, i64, i64 } %t456, ptr %a460 + call void @finch_str_drop(ptr %a460) + %t461 = load { ptr, i64, i64 }, ptr %a457 + %t462 = load { ptr, i64, i64 }, ptr %a368 + store { ptr, i64, i64 } %t461, ptr %a368 + store { ptr, i64, i64 } %t462, ptr %a463 + call void @finch_str_drop(ptr %a463) + br label %endif8822 +endif8822: + call void @finch_str_drop(ptr %a401) + br label %endif8819 +else8818: + %t464 = getelementptr inbounds %S.gen.FnSig, ptr %a320, i32 0, i32 12 + %t465 = getelementptr inbounds %S.ast.Type, ptr %t464, i32 0, i32 0 + %t466 = load { ptr, i64, i64 }, ptr %t465 + store { ptr, i64, i64 } %t466, ptr %a467 + store { ptr, i64, i64 } { ptr @.str.6007, i64 3, i64 0 }, ptr %a468 + %t469 = call i32 @finch_str_eq(ptr %a467, ptr %a468) + %t470 = icmp ne i32 %t469, 0 + br i1 %t470, label %then8823, label %endif8825 +then8823: + %t471 = load { ptr, i64, i64 }, ptr %a346 + store { ptr, i64, i64 } { ptr @.str.6008, i64 5, i64 0 }, 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 { ptr, i64, i64 }, ptr %a346 + store { ptr, i64, i64 } %t475, ptr %a346 + store { ptr, i64, i64 } %t476, ptr %a477 + call void @finch_str_drop(ptr %a477) + %t478 = load { ptr, i64, i64 }, ptr %a368 + store { ptr, i64, i64 } { ptr @.str.6009, i64 46, i64 0 }, ptr %a368 + store { ptr, i64, i64 } %t478, ptr %a479 + call void @finch_str_drop(ptr %a479) + br label %endif8825 +endif8825: + br label %endif8819 +endif8819: + %t480 = load ptr, ptr %a46 + %t481 = icmp eq ptr %t480, null + br i1 %t481, label %panic8826, label %ok8827 +panic8826: + call void @finch_panic(ptr @.str.6010, i64 5630, ptr @.str.6011) 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 +ok8827: + %t482 = getelementptr inbounds %S.gen.Gen, ptr %t480, i32 0, i32 3 + %t483 = getelementptr inbounds { ptr, i64, i64 }, ptr %t482, i32 0, i32 1 + %t484 = load { ptr, i64, i64 }, ptr %a347 + store { ptr, i64, i64 } { ptr @.str.6012, i64 48, i64 0 }, ptr %a486 + store { ptr, i64, i64 } %t484, ptr %a487 + call void @finch_str_concat(ptr %a485, ptr %a486, ptr %a487) + %t488 = load { ptr, i64, i64 }, ptr %a485 + store { ptr, i64, i64 } %t488, ptr %a490 + store { ptr, i64, i64 } { ptr @.str.6013, i64 2, i64 0 }, ptr %a491 + call void @finch_str_concat(ptr %a489, ptr %a490, ptr %a491) + store { ptr, i64, i64 } %t488, ptr %a492 + call void @finch_str_drop(ptr %a492) + %t493 = load { ptr, i64, i64 }, ptr %a489 + %t494 = load { ptr, i64, i64 }, ptr %a346 + store { ptr, i64, i64 } %t493, ptr %a496 + store { ptr, i64, i64 } %t494, ptr %a497 + call void @finch_str_concat(ptr %a495, ptr %a496, ptr %a497) + store { ptr, i64, i64 } %t493, ptr %a498 + call void @finch_str_drop(ptr %a498) + %t499 = load { ptr, i64, i64 }, ptr %a495 + store { ptr, i64, i64 } %t499, ptr %a501 + store { ptr, i64, i64 } { ptr @.str.6014, i64 1, i64 0 }, ptr %a502 + call void @finch_str_concat(ptr %a500, ptr %a501, ptr %a502) + store { ptr, i64, i64 } %t499, ptr %a503 + call void @finch_str_drop(ptr %a503) + %t504 = load { ptr, i64, i64 }, ptr %a500 + %t505 = load { ptr, i64, i64 }, ptr %a368 + store { ptr, i64, i64 } %t504, ptr %a507 + store { ptr, i64, i64 } %t505, ptr %a508 + call void @finch_str_concat(ptr %a506, ptr %a507, ptr %a508) + store { ptr, i64, i64 } %t504, ptr %a509 + call void @finch_str_drop(ptr %a509) + %t510 = load { ptr, i64, i64 }, ptr %a506 + store { ptr, i64, i64 } %t510, ptr %a512 + store { ptr, i64, i64 } { ptr @.str.6015, i64 2, i64 0 }, ptr %a513 + call void @finch_str_concat(ptr %a511, ptr %a512, ptr %a513) + store { ptr, i64, i64 } %t510, ptr %a514 + call void @finch_str_drop(ptr %a514) + %t515 = load { ptr, i64, i64 }, ptr %a511 + %t516 = load i64, ptr %t483 + %t517 = add i64 %t516, 1 + call void @finch_arr_reserve(ptr %t482, i64 %t517, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t518 = load ptr, ptr %t482 + %t519 = getelementptr inbounds { ptr, i64, i64 }, ptr %t518, i64 %t516 + store { ptr, i64, i64 } %t515, ptr %t519 + store i64 %t517, ptr %t483 + %t520 = load ptr, ptr %a46 + %t521 = call { ptr, i64, i64 } @finch.gen.assemble(ptr %t520) + call void @finch_str_drop(ptr %a368) + call void @finch_str_drop(ptr %a347) + call void @finch_str_drop(ptr %a346) + call void @finch.drop.S_gen_FnSig(ptr %a320) + call void @finch.drop.S_gen_Gen(ptr %a45) + ret { ptr, i64, i64 } %t521 } define internal %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2) { @@ -77022,24 +92881,24 @@ entry: 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 }) + %t1 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6016, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6017, i64 16, i64 0 }, { ptr, i64, i64 } { ptr @.str.6018, i64 78, i64 0 }) + %t2 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6019, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6020, i64 31, i64 0 }, { ptr, i64, i64 } { ptr @.str.6021, i64 77, i64 0 }) + %t3 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6022, i64 9, i64 0 }, { ptr, i64, i64 } { ptr @.str.6023, i64 26, i64 0 }, { ptr, i64, i64 } { ptr @.str.6024, i64 121, i64 0 }) + %t4 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6025, i64 10, i64 0 }, { ptr, i64, i64 } { ptr @.str.6026, i64 38, i64 0 }, { ptr, i64, i64 } { ptr @.str.6027, i64 83, i64 0 }) + %t5 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6028, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6029, i64 29, i64 0 }, { ptr, i64, i64 } { ptr @.str.6030, i64 29, i64 0 }) + %t6 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6031, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6032, i64 29, i64 0 }, { ptr, i64, i64 } { ptr @.str.6033, i64 73, i64 0 }) + %t7 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6034, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6035, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.6036, i64 98, i64 0 }) + %t8 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6037, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6038, i64 25, i64 0 }, { ptr, i64, i64 } { ptr @.str.6039, i64 66, i64 0 }) + %t9 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6040, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6041, i64 14, i64 0 }, { ptr, i64, i64 } { ptr @.str.6042, i64 48, i64 0 }) + %t10 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6043, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6044, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.6045, i64 77, i64 0 }) + %t11 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6046, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6047, i64 20, i64 0 }, { ptr, i64, i64 } { ptr @.str.6048, i64 66, i64 0 }) + %t12 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6049, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6050, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6051, i64 73, i64 0 }) + %t13 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6052, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6053, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.6054, i64 61, i64 0 }) + %t14 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6055, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6056, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.6057, i64 130, i64 0 }) + %t15 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6058, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6059, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.6060, i64 75, i64 0 }) + %t16 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6061, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6062, i64 19, i64 0 }, { ptr, i64, i64 } { ptr @.str.6063, i64 29, i64 0 }) + %t17 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6064, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6065, i64 19, i64 0 }, { ptr, i64, i64 } { ptr @.str.6066, i64 26, i64 0 }) + %t18 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6067, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6068, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.6069, 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 @@ -77087,20 +92946,20 @@ entry: 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 }) + %t1 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6070, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6071, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6072, i64 23, i64 0 }) + %t2 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6073, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6074, i64 14, i64 0 }, { ptr, i64, i64 } { ptr @.str.6075, i64 40, i64 0 }) + %t3 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6076, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6077, i64 9, i64 0 }, { ptr, i64, i64 } { ptr @.str.6078, i64 18, i64 0 }) + %t4 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6079, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6080, i64 10, i64 0 }, { ptr, i64, i64 } { ptr @.str.6081, i64 43, i64 0 }) + %t5 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6082, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.6083, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.6084, i64 38, i64 0 }) + %t6 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6085, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.6086, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.6087, i64 37, i64 0 }) + %t7 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6088, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6089, i64 7, i64 0 }, { ptr, i64, i64 } { ptr @.str.6090, i64 19, i64 0 }) + %t8 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6091, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.6092, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.6093, i64 46, i64 0 }) + %t9 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6094, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6095, i64 16, i64 0 }, { ptr, i64, i64 } { ptr @.str.6096, i64 22, i64 0 }) + %t10 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6097, i64 8, i64 0 }, { ptr, i64, i64 } { ptr @.str.6098, i64 21, i64 0 }, { ptr, i64, i64 } { ptr @.str.6099, i64 18, i64 0 }) + %t11 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6100, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6101, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.6102, i64 37, i64 0 }) + %t12 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6103, i64 7, i64 0 }, { ptr, i64, i64 } { ptr @.str.6104, i64 9, i64 0 }, { ptr, i64, i64 } { ptr @.str.6105, i64 18, i64 0 }) + %t13 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6106, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6107, i64 32, i64 0 }, { ptr, i64, i64 } { ptr @.str.6108, i64 45, i64 0 }) + %t14 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6109, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6110, i64 20, i64 0 }, { ptr, i64, i64 } { ptr @.str.6111, 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 @@ -77140,20 +92999,20 @@ entry: 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 }) + %t1 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6112, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6113, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6114, i64 20, i64 0 }) + %t2 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6115, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6116, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.6117, i64 59, i64 0 }) + %t3 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6118, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6119, i64 30, i64 0 }, { ptr, i64, i64 } { ptr @.str.6120, i64 29, i64 0 }) + %t4 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6121, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6122, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.6123, i64 22, i64 0 }) + %t5 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6124, i64 8, i64 0 }, { ptr, i64, i64 } { ptr @.str.6125, i64 23, i64 0 }, { ptr, i64, i64 } { ptr @.str.6126, i64 24, i64 0 }) + %t6 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6127, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6128, i64 26, i64 0 }, { ptr, i64, i64 } { ptr @.str.6129, i64 27, i64 0 }) + %t7 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6130, i64 9, i64 0 }, { ptr, i64, i64 } { ptr @.str.6131, i64 24, i64 0 }, { ptr, i64, i64 } { ptr @.str.6132, i64 25, i64 0 }) + %t8 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6133, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6134, i64 23, i64 0 }, { ptr, i64, i64 } { ptr @.str.6135, i64 62, i64 0 }) + %t9 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6136, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6137, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.6138, i64 41, i64 0 }) + %t10 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6139, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6140, i64 14, i64 0 }, { ptr, i64, i64 } { ptr @.str.6141, i64 24, i64 0 }) + %t11 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6142, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6143, i64 14, i64 0 }, { ptr, i64, i64 } { ptr @.str.6144, i64 24, i64 0 }) + %t12 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6145, i64 7, i64 0 }, { ptr, i64, i64 } { ptr @.str.6146, i64 32, i64 0 }, { ptr, i64, i64 } { ptr @.str.6147, i64 26, i64 0 }) + %t13 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6148, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.6149, i64 20, i64 0 }, { ptr, i64, i64 } { ptr @.str.6150, i64 17, i64 0 }) + %t14 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6151, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6152, i64 15, i64 0 }, { ptr, i64, i64 } { ptr @.str.6153, 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 @@ -77193,13 +93052,13 @@ entry: 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 }) + %t1 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6154, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6155, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6156, i64 19, i64 0 }) + %t2 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6157, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6158, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.6159, i64 22, i64 0 }) + %t3 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6160, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6161, i64 26, i64 0 }, { ptr, i64, i64 } { ptr @.str.6162, i64 53, i64 0 }) + %t4 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6163, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.6164, i64 21, i64 0 }, { ptr, i64, i64 } { ptr @.str.6165, i64 52, i64 0 }) + %t5 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6166, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6167, i64 7, i64 0 }, { ptr, i64, i64 } { ptr @.str.6168, i64 19, i64 0 }) + %t6 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6169, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6170, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.6171, i64 39, i64 0 }) + %t7 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6172, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.6173, i64 15, i64 0 }, { ptr, i64, i64 } { ptr @.str.6174, 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 @@ -77228,49 +93087,49 @@ 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 + store { ptr, i64, i64 } { ptr @.str.6175, 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 + store { ptr, i64, i64 } { ptr @.str.6176, 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 + store { ptr, i64, i64 } { ptr @.str.6177, 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 + store { ptr, i64, i64 } { ptr @.str.6178, 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 + store { ptr, i64, i64 } { ptr @.str.6179, 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 + store { ptr, i64, i64 } { ptr @.str.6180, 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 + store { ptr, i64, i64 } { ptr @.str.6181, 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 + store { ptr, i64, i64 } { ptr @.str.6182, 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 + store { ptr, i64, i64 } { ptr @.str.6183, 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 + store { ptr, i64, i64 } { ptr @.str.6184, 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 + store { ptr, i64, i64 } { ptr @.str.6185, 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 + store { ptr, i64, i64 } { ptr @.str.6186, 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 + store { ptr, i64, i64 } { ptr @.str.6187, 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 + store { ptr, i64, i64 } { ptr @.str.6188, 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 + store { ptr, i64, i64 } { ptr @.str.6189, 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 + store { ptr, i64, i64 } { ptr @.str.6190, 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 + store { ptr, i64, i64 } { ptr @.str.6191, 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 + store { ptr, i64, i64 } { ptr @.str.6192, 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 + store { ptr, i64, i64 } { ptr @.str.6193, 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 + store { ptr, i64, i64 } { ptr @.str.6194, 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 + store { ptr, i64, i64 } { ptr @.str.6195, 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 + store { ptr, i64, i64 } { ptr @.str.6196, 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 @@ -77283,45 +93142,62 @@ 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 + store { ptr, i64, i64 } { ptr @.str.6197, 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 + store { ptr, i64, i64 } { ptr @.str.6198, 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 + store { ptr, i64, i64 } { ptr @.str.6199, 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 + store { ptr, i64, i64 } { ptr @.str.6200, 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 + store { ptr, i64, i64 } { ptr @.str.6201, 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 + store { ptr, i64, i64 } { ptr @.str.6202, 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 + store { ptr, i64, i64 } { ptr @.str.6203, 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 + store { ptr, i64, i64 } { ptr @.str.6204, 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 + store { ptr, i64, i64 } { ptr @.str.6205, 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 + store { ptr, i64, i64 } { ptr @.str.6206, 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 + store { ptr, i64, i64 } { ptr @.str.6207, 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 + store { ptr, i64, i64 } { ptr @.str.6208, 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 + store { ptr, i64, i64 } { ptr @.str.6209, 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 + store { ptr, i64, i64 } { ptr @.str.6210, 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 + store { ptr, i64, i64 } { ptr @.str.6211, 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 + store { ptr, i64, i64 } { ptr @.str.6212, 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 + store { ptr, i64, i64 } { ptr @.str.6213, 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 void @finch.copy.S_docs_Doc(ptr %dst, ptr %src) { +entry: + + %t1 = load %S.docs.Doc, ptr %src + store %S.docs.Doc %t1, ptr %dst + %t2 = getelementptr inbounds %S.docs.Doc, ptr %dst, i32 0, i32 0 + %t3 = getelementptr inbounds %S.docs.Doc, ptr %src, i32 0, i32 0 + call void @finch_str_copy(ptr %t2, ptr %t3) + %t4 = getelementptr inbounds %S.docs.Doc, ptr %dst, i32 0, i32 1 + %t5 = getelementptr inbounds %S.docs.Doc, ptr %src, i32 0, i32 1 + call void @finch_str_copy(ptr %t4, ptr %t5) + %t6 = getelementptr inbounds %S.docs.Doc, ptr %dst, i32 0, i32 2 + %t7 = getelementptr inbounds %S.docs.Doc, ptr %src, i32 0, i32 2 + call void @finch_str_copy(ptr %t6, ptr %t7) + ret void +} + define internal %S.docs.Doc @finch.docs.find({ ptr, i64, i64 } %p0, { ptr, i64, i64 } %p1) { entry: %a1 = alloca { ptr, i64, i64 }, align 16 @@ -77330,17 +93206,19 @@ entry: %a11 = alloca %S.docs.Doc, align 16 %a15 = alloca { ptr, i64, i64 }, align 16 %a16 = alloca { ptr, i64, i64 }, align 16 + %a20 = alloca %S.docs.Doc, align 16 + %a21 = alloca %S.docs.Doc, 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: + br label %each.cond8828 +each.cond8828: %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: + br i1 %t7, label %each.body8829, label %each.end8831 +each.body8829: %t8 = load ptr, ptr %a1 %t9 = getelementptr inbounds %S.docs.Doc, ptr %t8, i64 %t6 %t10 = load %S.docs.Doc, ptr %t9 @@ -77352,18 +93230,21 @@ each.body8340: 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: + br i1 %t18, label %then8832, label %endif8834 +then8832: %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: + store %S.docs.Doc %t19, ptr %a20 + call void @finch.copy.S_docs_Doc(ptr %a21, ptr %a20) + %t22 = load %S.docs.Doc, ptr %a21 + ret %S.docs.Doc %t22 +endif8834: + br label %each.step8830 +each.step8830: + %t23 = load i64, ptr %a3 + %t24 = add i64 %t23, 1 + store i64 %t24, ptr %a3 + br label %each.cond8828 +each.end8831: ret %S.docs.Doc zeroinitializer } @@ -77376,27 +93257,33 @@ entry: %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 + %a11 = 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 + %a18 = 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 } { ptr @.str.6214, 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 + store { ptr, i64, i64 } { ptr @.str.6215, 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 + store { ptr, i64, i64 } %t7, ptr %a11 + call void @finch_str_drop(ptr %a11) + %t12 = load { ptr, i64, i64 }, ptr %a8 + %t13 = getelementptr inbounds %S.docs.Doc, ptr %a1, i32 0, i32 2 + %t14 = load { ptr, i64, i64 }, ptr %t13 + store { ptr, i64, i64 } %t12, ptr %a16 + store { ptr, i64, i64 } %t14, ptr %a17 + call void @finch_str_concat(ptr %a15, ptr %a16, ptr %a17) + store { ptr, i64, i64 } %t12, ptr %a18 + call void @finch_str_drop(ptr %a18) + %t19 = load { ptr, i64, i64 }, ptr %a15 + ret { ptr, i64, i64 } %t19 } define internal { ptr, i64, i64 } @finch.cimport.text(%S.C.CXString %p0) { @@ -77408,8 +93295,6 @@ entry: %a10 = alloca { ptr, i64, i64 }, align 16 %a12 = alloca { ptr, i64, i64 }, align 16 %a14 = alloca [32 x i8], align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 store %S.C.CXString %p0, ptr %a1 %t2 = load %S.C.CXString, ptr %a1 store %S.C.CXString %t2, ptr %a3 @@ -77429,10 +93314,7 @@ entry: %t16 = load [2 x i64], ptr %t15 call void @clang_disposeString([2 x i64] %t16) %t17 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } %t17, ptr %a18 - call void @finch_str_copy(ptr %a19, ptr %a18) - %t20 = load { ptr, i64, i64 }, ptr %a19 - ret { ptr, i64, i64 } %t20 + ret { ptr, i64, i64 } %t17 } define internal %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %p0) { @@ -77472,11 +93354,9 @@ entry: %a6 = alloca %S.ast.Type, align 16 %a10 = alloca %S.ast.Type, align 16 %a11 = alloca %S.ast.Type, align 16 - %a18 = alloca %S.ast.Type, align 16 - %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.5996, i64 5, i64 0 }, 0 + %t3 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.6216, 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 @@ -77494,236 +93374,355 @@ entry: store %S.ast.Type %t12, ptr %t16 store i64 %t14, ptr %t8 %t17 = load %S.ast.Type, ptr %a6 - store %S.ast.Type %t17, ptr %a18 - call void @finch.copy.S_ast_Type(ptr %a19, ptr %a18) - %t20 = load %S.ast.Type, ptr %a19 - ret %S.ast.Type %t20 + ret %S.ast.Type %t17 } define internal { ptr, i64, i64 } @finch.cimport.systemIncludeArgs({ ptr, i64, i64 } %p0) { entry: %a1 = alloca { ptr, i64, i64 }, align 16 %a2 = 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 %a7 = alloca { ptr, i64, i64 }, align 16 %a10 = 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 %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 - %a22 = alloca { ptr, i64, i64 }, align 16 + %a20 = alloca { ptr, i64, i64 }, align 16 + %a21 = alloca { ptr, i64, i64 }, align 16 + %a23 = alloca { ptr, i64, i64 }, align 16 + %a25 = 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 - %a30 = alloca i1, align 16 - %a32 = 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 %a36 = alloca { ptr, i64, i64 }, align 16 %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 + %a39 = alloca { ptr, i64, i64 }, align 16 %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca i64, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 + %a41 = alloca { ptr, i64, i64 }, align 16 + %a42 = alloca { ptr, i64, i64 }, align 16 + %a44 = alloca { ptr, i64, i64 }, align 16 + %a46 = alloca { ptr, i64, i64 }, align 16 + %a47 = alloca { ptr, i64, i64 }, align 16 %a51 = alloca { ptr, i64, i64 }, align 16 %a52 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 + %a53 = alloca { ptr, i64, i64 }, align 16 %a57 = alloca { ptr, i64, i64 }, align 16 %a58 = alloca { ptr, i64, i64 }, align 16 - %a62 = 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 %a63 = 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 + %a70 = 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 %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 %a76 = alloca { ptr, i64, i64 }, align 16 - %a81 = 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 %a82 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = 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 + %a86 = alloca { ptr, i64, i64 }, align 16 %a89 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 + %a92 = alloca { ptr, i64, i64 }, align 16 + %a97 = alloca i1, align 16 %a99 = 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 { ptr, i64, i64 }, align 16 + %a105 = 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 - %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 + %a109 = alloca i64, align 16 %a117 = alloca { ptr, i64, i64 }, align 16 + %a119 = alloca { ptr, i64, i64 }, align 16 %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 + %a122 = 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 + %a130 = alloca { ptr, i64, i64 }, align 16 + %a131 = alloca { ptr, i64, i64 }, align 16 + %a132 = alloca { ptr, i64, i64 }, align 16 + %a142 = alloca { ptr, i64, i64 }, align 16 + %a143 = alloca { ptr, i64, i64 }, align 16 + %a144 = alloca { ptr, i64, i64 }, align 16 + %a149 = alloca { ptr, i64, i64 }, align 16 + %a150 = alloca { ptr, i64, i64 }, align 16 + %a155 = 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 + %a166 = alloca { ptr, i64, i64 }, align 16 + %a167 = alloca { ptr, i64, i64 }, align 16 + %a168 = 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.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.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 - store { ptr, i64, i64 } %t8, 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.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 + %t3 = call { ptr, i64, i64 } @finch.host.tempDir() + store { ptr, i64, i64 } %t3, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.6217, i64 15, i64 0 }, ptr %a6 + call void @finch_str_concat(ptr %a4, ptr %a5, ptr %a6) + store { ptr, i64, i64 } %t3, ptr %a7 + call void @finch_str_drop(ptr %a7) + %t8 = load { ptr, i64, i64 }, ptr %a4 + %t9 = call i64 @finch.host.pid() + call void @finch_str_from_int(ptr %a10, i64 %t9) + %t11 = load { ptr, i64, i64 }, ptr %a10 + store { ptr, i64, i64 } %t8, ptr %a13 + store { ptr, i64, i64 } %t11, ptr %a14 + call void @finch_str_concat(ptr %a12, ptr %a13, ptr %a14) + store { ptr, i64, i64 } %t8, ptr %a15 + call void @finch_str_drop(ptr %a15) + store { ptr, i64, i64 } %t11, ptr %a16 + call void @finch_str_drop(ptr %a16) + %t17 = load { ptr, i64, i64 }, ptr %a12 store { ptr, i64, i64 } %t17, ptr %a19 - call void @finch_str_copy(ptr %a18, ptr %a19) - %t20 = call i64 @finch_shell(ptr %a18) - %t21 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t21, ptr %a22 - %t23 = call i32 @finch_file_exists(ptr %a22) - %t24 = icmp ne i32 %t23, 0 - %t25 = xor i1 %t24, true - 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 -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.6000, i64 110) - %t34 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t34, ptr %a35 - 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.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.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 - store { ptr, i64, i64 } %t48, ptr %a49 - %t50 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t50, ptr %a51 - call void @finch_str_trim(ptr %a52, ptr %a51) - %t53 = load { ptr, i64, i64 }, ptr %a52 - 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.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 %then8353, label %endif8355 -then8353: - store i1 true, ptr %a30 - 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.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 %then8356, label %endif8358 -then8356: - br label %each.end8352 -endif8358: - %t67 = load i1, ptr %a30 - %t68 = xor i1 %t67, true - 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.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.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 %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.6011, i64 124) - %t86 = load { ptr, i64, i64 }, ptr %a82 - 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 - %t91 = load i64, ptr %t79 - %t92 = add i64 %t91, 1 - call void @finch_arr_reserve(ptr %a2, i64 %t92, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t93 = load ptr, ptr %a2 - %t94 = getelementptr inbounds { ptr, i64, i64 }, ptr %t93, i64 %t91 - store { ptr, i64, i64 } %t90, ptr %t94 - store i64 %t92, ptr %t79 - 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.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 - %t101 = load i64, ptr %t95 - %t102 = add i64 %t101, 1 - call void @finch_arr_reserve(ptr %a2, i64 %t102, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t103 = load ptr, ptr %a2 - %t104 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i64 %t101 - store { ptr, i64, i64 } %t100, ptr %t104 - store i64 %t102, ptr %t95 - 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.cond8349 -each.end8352: - %t107 = load { ptr, i64, i64 }, ptr %a3 - 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.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 - call void @finch_str_copy(ptr %a116, ptr %a117) - %t118 = call i64 @finch_shell(ptr %a116) - %t119 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t119, ptr %a120 - call void @finch.copy.arr_str(ptr %a121, ptr %a120) - %t122 = load { ptr, i64, i64 }, ptr %a121 - ret { ptr, i64, i64 } %t122 + store { ptr, i64, i64 } { ptr @.str.6218, i64 4, i64 0 }, ptr %a20 + call void @finch_str_concat(ptr %a18, ptr %a19, ptr %a20) + store { ptr, i64, i64 } %t17, ptr %a21 + call void @finch_str_drop(ptr %a21) + %t22 = load { ptr, i64, i64 }, ptr %a18 + store { ptr, i64, i64 } %t22, ptr %a23 + %t24 = call { ptr, i64, i64 } @finch.host.tempDir() + store { ptr, i64, i64 } %t24, ptr %a26 + store { ptr, i64, i64 } { ptr @.str.6219, i64 13, i64 0 }, ptr %a27 + call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) + store { ptr, i64, i64 } %t24, ptr %a28 + call void @finch_str_drop(ptr %a28) + %t29 = load { ptr, i64, i64 }, ptr %a25 + %t30 = call i64 @finch.host.pid() + call void @finch_str_from_int(ptr %a31, i64 %t30) + %t32 = load { ptr, i64, i64 }, ptr %a31 + store { ptr, i64, i64 } %t29, ptr %a34 + store { ptr, i64, i64 } %t32, ptr %a35 + call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) + store { ptr, i64, i64 } %t29, ptr %a36 + call void @finch_str_drop(ptr %a36) + store { ptr, i64, i64 } %t32, ptr %a37 + call void @finch_str_drop(ptr %a37) + %t38 = load { ptr, i64, i64 }, ptr %a33 + store { ptr, i64, i64 } %t38, ptr %a40 + store { ptr, i64, i64 } { ptr @.str.6220, i64 2, i64 0 }, ptr %a41 + call void @finch_str_concat(ptr %a39, ptr %a40, ptr %a41) + store { ptr, i64, i64 } %t38, ptr %a42 + call void @finch_str_drop(ptr %a42) + %t43 = load { ptr, i64, i64 }, ptr %a39 + store { ptr, i64, i64 } %t43, ptr %a44 + %t45 = load { ptr, i64, i64 }, ptr %a44 + store { ptr, i64, i64 } %t45, ptr %a46 + store { ptr, i64, i64 } { ptr @.str.6221, i64 0, i64 0 }, ptr %a47 + %t48 = call i32 @finch_write_file(ptr %a46, ptr %a47) + %t49 = icmp ne i32 %t48, 0 + %t50 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t50, ptr %a52 + store { ptr, i64, i64 } { ptr @.str.6222, i64 12, 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 %a44 + %t56 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t55) + store { ptr, i64, i64 } %t54, ptr %a58 + store { ptr, i64, i64 } %t56, ptr %a59 + call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) + store { ptr, i64, i64 } %t54, ptr %a60 + call void @finch_str_drop(ptr %a60) + store { ptr, i64, i64 } %t56, ptr %a61 + call void @finch_str_drop(ptr %a61) + %t62 = load { ptr, i64, i64 }, ptr %a57 + store { ptr, i64, i64 } %t62, ptr %a64 + store { ptr, i64, i64 } { ptr @.str.6223, i64 4, i64 0 }, ptr %a65 + call void @finch_str_concat(ptr %a63, ptr %a64, ptr %a65) + store { ptr, i64, i64 } %t62, ptr %a66 + call void @finch_str_drop(ptr %a66) + %t67 = load { ptr, i64, i64 }, ptr %a63 + %t68 = load { ptr, i64, i64 }, ptr %a23 + %t69 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t68) + store { ptr, i64, i64 } %t67, ptr %a71 + store { ptr, i64, i64 } %t69, ptr %a72 + call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) + store { ptr, i64, i64 } %t67, ptr %a73 + call void @finch_str_drop(ptr %a73) + store { ptr, i64, i64 } %t69, ptr %a74 + call void @finch_str_drop(ptr %a74) + %t75 = load { ptr, i64, i64 }, ptr %a70 + store { ptr, i64, i64 } %t75, ptr %a77 + store { ptr, i64, i64 } { ptr @.str.6224, i64 3, i64 0 }, ptr %a78 + call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78) + store { ptr, i64, i64 } %t75, ptr %a79 + call void @finch_str_drop(ptr %a79) + %t80 = load { ptr, i64, i64 }, ptr %a76 + %t81 = call { ptr, i64, i64 } @finch.host.nullDevice() + store { ptr, i64, i64 } %t80, ptr %a83 + store { ptr, i64, i64 } %t81, ptr %a84 + call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84) + store { ptr, i64, i64 } %t80, ptr %a85 + call void @finch_str_drop(ptr %a85) + store { ptr, i64, i64 } %t81, ptr %a86 + call void @finch_str_drop(ptr %a86) + %t87 = load { ptr, i64, i64 }, ptr %a82 + %t88 = call i64 @finch.host.run({ ptr, i64, i64 } %t87) + store { ptr, i64, i64 } %t87, ptr %a89 + call void @finch_str_drop(ptr %a89) + %t90 = load { ptr, i64, i64 }, ptr %a44 + call void @finch.host.remove({ ptr, i64, i64 } %t90) + %t91 = load { ptr, i64, i64 }, ptr %a23 + store { ptr, i64, i64 } %t91, ptr %a92 + %t93 = call i32 @finch_file_exists(ptr %a92) + %t94 = icmp ne i32 %t93, 0 + %t95 = xor i1 %t94, true + br i1 %t95, label %then8835, label %endif8837 +then8835: + %t96 = load { ptr, i64, i64 }, ptr %a2 + call void @finch_str_drop(ptr %a44) + call void @finch_str_drop(ptr %a23) + ret { ptr, i64, i64 } %t96 +endif8837: + store i1 false, ptr %a97 + %t98 = load { ptr, i64, i64 }, ptr %a23 + store { ptr, i64, i64 } %t98, ptr %a99 + call void @finch_read_file(ptr %a100, ptr %a99, ptr @.str.6225, i64 114) + %t101 = load { ptr, i64, i64 }, ptr %a100 + store { ptr, i64, i64 } %t101, ptr %a102 + store { ptr, i64, i64 } { ptr @.str.6227, i64 1, i64 0 }, ptr %a104 + call void @finch_str_split(ptr %a105, ptr %a102, ptr %a104) + %t106 = load { ptr, i64, i64 }, ptr %a105 + store { ptr, i64, i64 } %t101, ptr %a107 + call void @finch_str_drop(ptr %a107) + store { ptr, i64, i64 } %t106, ptr %a108 + store i64 0, ptr %a109 + br label %each.cond8838 +each.cond8838: + %t110 = getelementptr inbounds { ptr, i64, i64 }, ptr %a108, i32 0, i32 1 + %t111 = load i64, ptr %t110 + %t112 = load i64, ptr %a109 + %t113 = icmp slt i64 %t112, %t111 + br i1 %t113, label %each.body8839, label %each.end8841 +each.body8839: + %t114 = load ptr, ptr %a108 + %t115 = getelementptr inbounds { ptr, i64, i64 }, ptr %t114, i64 %t112 + %t116 = load { ptr, i64, i64 }, ptr %t115 + store { ptr, i64, i64 } %t116, ptr %a117 + %t118 = load { ptr, i64, i64 }, ptr %a117 + store { ptr, i64, i64 } %t118, ptr %a119 + call void @finch_str_trim(ptr %a120, ptr %a119) + %t121 = load { ptr, i64, i64 }, ptr %a120 + store { ptr, i64, i64 } %t121, ptr %a122 + %t123 = load { ptr, i64, i64 }, ptr %a122 + store { ptr, i64, i64 } %t123, ptr %a124 + store { ptr, i64, i64 } { ptr @.str.6230, i64 34, i64 0 }, ptr %a126 + %t127 = call i32 @finch_str_starts(ptr %a124, ptr %a126) + %t128 = icmp ne i32 %t127, 0 + br i1 %t128, label %then8842, label %endif8844 +then8842: + store i1 true, ptr %a97 + call void @finch_str_drop(ptr %a122) + br label %each.step8840 +endif8844: + %t129 = load { ptr, i64, i64 }, ptr %a122 + store { ptr, i64, i64 } %t129, ptr %a130 + store { ptr, i64, i64 } { ptr @.str.6232, i64 19, i64 0 }, ptr %a132 + %t133 = call i32 @finch_str_starts(ptr %a130, ptr %a132) + %t134 = icmp ne i32 %t133, 0 + br i1 %t134, label %then8845, label %endif8847 +then8845: + call void @finch_str_drop(ptr %a122) + br label %each.end8841 +endif8847: + %t135 = load i1, ptr %a97 + %t136 = xor i1 %t135, true + br label %logic.from8848 +logic.from8848: + br i1 %t136, label %logic.end8850, label %logic.rhs8849 +logic.rhs8849: + %t137 = getelementptr inbounds { ptr, i64, i64 }, ptr %a122, i32 0, i32 1 + %t138 = load i64, ptr %t137 + %t139 = icmp eq i64 %t138, 0 + br label %logic.rend8851 +logic.rend8851: + br label %logic.end8850 +logic.end8850: + %t140 = phi i1 [ true, %logic.from8848 ], [ %t139, %logic.rend8851 ] + br i1 %t140, label %then8852, label %endif8854 +then8852: + call void @finch_str_drop(ptr %a122) + br label %each.step8840 +endif8854: + %t141 = load { ptr, i64, i64 }, ptr %a122 + store { ptr, i64, i64 } %t141, ptr %a142 + store { ptr, i64, i64 } { ptr @.str.6234, i64 22, i64 0 }, ptr %a144 + %t145 = call i32 @finch_str_ends(ptr %a142, ptr %a144) + %t146 = icmp ne i32 %t145, 0 + br i1 %t146, label %then8855, label %else8856 +then8855: + %t147 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t148 = load { ptr, i64, i64 }, ptr %a122 + store { ptr, i64, i64 } %t148, ptr %a149 + %t151 = getelementptr inbounds { ptr, i64, i64 }, ptr %a122, i32 0, i32 1 + %t152 = load i64, ptr %t151 + %t153 = sub i64 %t152, 22 + call void @finch_str_sub(ptr %a150, ptr %a149, i64 0, i64 %t153, ptr @.str.6236, i64 128) + %t154 = load { ptr, i64, i64 }, ptr %a150 + store { ptr, i64, i64 } { ptr @.str.6235, i64 11, i64 0 }, ptr %a156 + store { ptr, i64, i64 } %t154, ptr %a157 + call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) + store { ptr, i64, i64 } %t154, ptr %a158 + call void @finch_str_drop(ptr %a158) + %t159 = load { ptr, i64, i64 }, ptr %a155 + %t160 = load i64, ptr %t147 + %t161 = add i64 %t160, 1 + call void @finch_arr_reserve(ptr %a2, i64 %t161, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t162 = load ptr, ptr %a2 + %t163 = getelementptr inbounds { ptr, i64, i64 }, ptr %t162, i64 %t160 + store { ptr, i64, i64 } %t159, ptr %t163 + store i64 %t161, ptr %t147 + br label %endif8857 +else8856: + %t164 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t165 = load { ptr, i64, i64 }, ptr %a122 + store { ptr, i64, i64 } { ptr @.str.6237, i64 8, 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 + %t170 = load i64, ptr %t164 + %t171 = add i64 %t170, 1 + call void @finch_arr_reserve(ptr %a2, i64 %t171, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t172 = load ptr, ptr %a2 + %t173 = getelementptr inbounds { ptr, i64, i64 }, ptr %t172, i64 %t170 + store { ptr, i64, i64 } %t169, ptr %t173 + store i64 %t171, ptr %t164 + br label %endif8857 +endif8857: + call void @finch_str_drop(ptr %a122) + br label %each.step8840 +each.step8840: + %t174 = load i64, ptr %a109 + %t175 = add i64 %t174, 1 + store i64 %t175, ptr %a109 + br label %each.cond8838 +each.end8841: + call void @finch.drop.arr_str(ptr %a108) + %t176 = load { ptr, i64, i64 }, ptr %a23 + call void @finch.host.remove({ ptr, i64, i64 } %t176) + %t177 = load { ptr, i64, i64 }, ptr %a2 + call void @finch_str_drop(ptr %a44) + call void @finch_str_drop(ptr %a23) + ret { ptr, i64, i64 } %t177 } define internal { ptr, i64, i64 } @finch.cimport.recordName(ptr %p0, %S.C.CXType %p1) { @@ -77752,12 +93751,13 @@ entry: %a67 = alloca { ptr, i64, i64 }, align 16 %a68 = alloca { ptr, i64, i64 }, align 16 %a69 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca i32, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 + %a70 = alloca { ptr, i64, i64 }, align 16 + %a73 = alloca { ptr, i64, i64 }, align 16 + %a79 = alloca { ptr, i64, i64 }, align 16 + %a80 = alloca i32, align 16 + %a90 = alloca { ptr, i64, i64 }, align 16 %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 + %a94 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store %S.C.CXType %p1, ptr %a2 %t4 = load %S.C.CXType, ptr %a2 @@ -77774,38 +93774,38 @@ entry: store { ptr, i64, i64 } %t13, ptr %a14 %t15 = load ptr, ptr %a1 %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic8369, label %ok8370 -panic8369: - call void @finch_panic(ptr @.str.6015, i64 139, ptr @.str.6016) + br i1 %t16, label %panic8858, label %ok8859 +panic8858: + call void @finch_panic(ptr @.str.6238, i64 143, ptr @.str.6239) unreachable -ok8370: +ok8859: %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 %then8371, label %endif8373 -then8371: + br i1 %t21, label %then8860, label %endif8862 +then8860: %t22 = load ptr, ptr %a1 %t23 = icmp eq ptr %t22, null - br i1 %t23, label %panic8374, label %ok8375 -panic8374: - call void @finch_panic(ptr @.str.6017, i64 140, ptr @.str.6018) + br i1 %t23, label %panic8863, label %ok8864 +panic8863: + call void @finch_panic(ptr @.str.6240, i64 144, ptr @.str.6241) unreachable -ok8375: +ok8864: %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.missing8376, label %map.found8377 -map.missing8376: + br i1 %t28, label %map.missing8865, label %map.found8866 +map.missing8865: 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.6019, i64 140, ptr %a29) + call void @finch_map_missing(ptr @.str.6242, i64 144, ptr %a29) unreachable -map.found8377: +map.found8866: %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 @@ -77814,8 +93814,9 @@ map.found8377: store { ptr, i64, i64 } %t35, ptr %a36 call void @finch_str_copy(ptr %a37, ptr %a36) %t38 = load { ptr, i64, i64 }, ptr %a37 + call void @finch_str_drop(ptr %a14) ret { ptr, i64, i64 } %t38 -endif8373: +endif8862: %t39 = load %S.C.CXCursor, ptr %a7 store %S.C.CXCursor %t39, ptr %a40 %t41 = call [2 x i64] @clang_getCursorSpelling(ptr %a40) @@ -77826,87 +93827,93 @@ endif8373: %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.from8378 -logic.from8378: - br i1 %t48, label %logic.end8380, label %logic.rhs8379 -logic.rhs8379: + br label %logic.from8867 +logic.from8867: + br i1 %t48, label %logic.end8869, label %logic.rhs8868 +logic.rhs8868: %t49 = load { ptr, i64, i64 }, ptr %a45 store { ptr, i64, i64 } %t49, ptr %a50 - store { ptr, i64, i64 } { ptr @.str.6021, i64 1, i64 0 }, ptr %a52 + store { ptr, i64, i64 } { ptr @.str.6244, 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.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: + br label %logic.rend8870 +logic.rend8870: + br label %logic.end8869 +logic.end8869: + %t55 = phi i1 [ true, %logic.from8867 ], [ %t54, %logic.rend8870 ] + br i1 %t55, label %then8871, label %endif8873 +then8871: %t56 = load ptr, ptr %a1 %t57 = icmp eq ptr %t56, null - br i1 %t57, label %panic8385, label %ok8386 -panic8385: - call void @finch_panic(ptr @.str.6022, i64 144, ptr @.str.6023) + br i1 %t57, label %panic8874, label %ok8875 +panic8874: + call void @finch_panic(ptr @.str.6245, i64 148, ptr @.str.6246) unreachable -ok8386: +ok8875: %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 %panic8387, label %ok8388 -panic8387: - call void @finch_panic(ptr @.str.6025, i64 145, ptr @.str.6026) + br i1 %t62, label %panic8876, label %ok8877 +panic8876: + call void @finch_panic(ptr @.str.6248, i64 149, ptr @.str.6249) unreachable -ok8388: +ok8877: %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.6024, i64 12, i64 0 }, ptr %a68 + store { ptr, i64, i64 } { ptr @.str.6247, 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 %endif8384 -endif8384: - %t71 = load { ptr, i64, i64 }, ptr %a45 - %t72 = load ptr, ptr %a1 - %t73 = icmp eq ptr %t72, null - br i1 %t73, label %panic8389, label %ok8390 -panic8389: - call void @finch_panic(ptr @.str.6027, i64 147, ptr @.str.6028) + store { ptr, i64, i64 } %t66, ptr %a70 + call void @finch_str_drop(ptr %a70) + %t71 = load { ptr, i64, i64 }, ptr %a67 + %t72 = load { ptr, i64, i64 }, ptr %a45 + store { ptr, i64, i64 } %t71, ptr %a45 + store { ptr, i64, i64 } %t72, ptr %a73 + call void @finch_str_drop(ptr %a73) + br label %endif8873 +endif8873: + %t74 = load { ptr, i64, i64 }, ptr %a45 + %t75 = load ptr, ptr %a1 + %t76 = icmp eq ptr %t75, null + br i1 %t76, label %panic8878, label %ok8879 +panic8878: + call void @finch_panic(ptr @.str.6250, i64 151, ptr @.str.6251) unreachable -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 - store i32 0, ptr %a77 - %t78 = call i64 @finch_map_slot(ptr %t74, ptr %a76, 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 %a77) - %t79 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t74, i32 0, i32 0 - %t80 = load ptr, ptr %t79 - %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.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.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) - %t89 = load { ptr, i64, i64 }, ptr %a88 - store { ptr, i64, i64 } %t89, ptr %t86 - %t90 = load { ptr, i64, i64 }, ptr %a45 - store { ptr, i64, i64 } %t90, ptr %a91 - call void @finch_str_copy(ptr %a92, ptr %a91) - %t93 = load { ptr, i64, i64 }, ptr %a92 - ret { ptr, i64, i64 } %t93 +ok8879: + %t77 = getelementptr inbounds %S.cimport.Importer, ptr %t75, i32 0, i32 3 + %t78 = load { ptr, i64, i64 }, ptr %a14 + store { ptr, i64, i64 } %t78, ptr %a79 + store i32 0, ptr %a80 + %t81 = call i64 @finch_map_slot(ptr %t77, ptr %a79, 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 %a80) + %t82 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t77, i32 0, i32 0 + %t83 = load ptr, ptr %t82 + %t84 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t83, i64 %t81 + %t85 = load i32, ptr %a80 + %t86 = icmp ne i32 %t85, 0 + br i1 %t86, label %map.new8880, label %map.have8881 +map.new8880: + %t87 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t84, i32 0, i32 1 + call void @finch_str_copy(ptr %t87, ptr %a79) + %t88 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t84, i32 0, i32 2 + store { ptr, i64, i64 } zeroinitializer, ptr %t88 + br label %map.have8881 +map.have8881: + %t89 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t84, i32 0, i32 2 + store { ptr, i64, i64 } %t74, ptr %a90 + call void @finch_str_copy(ptr %a91, ptr %a90) + %t92 = load { ptr, i64, i64 }, ptr %a91 + %t93 = load { ptr, i64, i64 }, ptr %t89 + store { ptr, i64, i64 } %t92, ptr %t89 + store { ptr, i64, i64 } %t93, ptr %a94 + call void @finch_str_drop(ptr %a94) + %t95 = load { ptr, i64, i64 }, ptr %a45 + call void @finch_str_drop(ptr %a14) + ret { ptr, i64, i64 } %t95 } define internal i32 @finch.c.cimport.visitField(ptr %c0, ptr %c1) { @@ -77933,28 +93940,26 @@ entry: %a23 = alloca { ptr, i64, i64 }, align 16 %a29 = alloca { ptr, i64, i64 }, align 16 %a36 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca %S.C.CXType, align 16 - %a47 = alloca i64, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca i32, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca %S.C.CXType, align 16 - %a76 = alloca %S.cimport.CStruct, align 16 - %a78 = alloca %S.C.CXCursor, align 16 - %a85 = alloca %S.cimport.FieldCtx, align 16 - %a87 = alloca %S.C.CXType, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca i32, align 16 - %a113 = alloca %S.cimport.CStruct, align 16 - %a114 = alloca %S.cimport.CStruct, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 + %a42 = alloca %S.C.CXType, align 16 + %a44 = alloca i64, align 16 + %a51 = alloca { ptr, i64, i64 }, align 16 + %a52 = alloca i32, align 16 + %a63 = alloca { ptr, i64, i64 }, align 16 + %a64 = alloca { ptr, i64, i64 }, align 16 + %a70 = alloca %S.C.CXType, align 16 + %a73 = alloca %S.cimport.CStruct, align 16 + %a75 = alloca %S.C.CXCursor, align 16 + %a80 = alloca { ptr, i64, i64 }, align 16 + %a84 = alloca %S.cimport.FieldCtx, align 16 + %a86 = alloca %S.C.CXType, align 16 + %a92 = alloca { ptr, i64, i64 }, align 16 + %a106 = alloca { ptr, i64, i64 }, align 16 + %a107 = alloca i32, align 16 + %a117 = alloca %S.cimport.CStruct, align 16 + %a118 = alloca %S.cimport.CStruct, align 16 + %a121 = alloca %S.cimport.CStruct, align 16 + %a128 = alloca { ptr, i64, i64 }, align 16 + %a129 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store %S.C.CXType %p1, ptr %a2 %t4 = load %S.C.CXType, ptr %a2 @@ -77980,187 +93985,208 @@ entry: store { ptr, i64, i64 } %t22, ptr %a23 %t24 = load ptr, ptr %a1 %t25 = icmp eq ptr %t24, null - br i1 %t25, label %panic8393, label %ok8394 -panic8393: - call void @finch_panic(ptr @.str.6029, i64 157, ptr @.str.6030) + br i1 %t25, label %panic8882, label %ok8883 +panic8882: + call void @finch_panic(ptr @.str.6252, i64 161, ptr @.str.6253) unreachable -ok8394: +ok8883: %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.from8395 -logic.from8395: - br i1 %t31, label %logic.end8397, label %logic.rhs8396 -logic.rhs8396: + br label %logic.from8884 +logic.from8884: + br i1 %t31, label %logic.end8886, label %logic.rhs8885 +logic.rhs8885: %t32 = load ptr, ptr %a1 %t33 = icmp eq ptr %t32, null - br i1 %t33, label %panic8398, label %ok8399 -panic8398: - call void @finch_panic(ptr @.str.6031, i64 157, ptr @.str.6032) + br i1 %t33, label %panic8887, label %ok8888 +panic8887: + call void @finch_panic(ptr @.str.6254, i64 161, ptr @.str.6255) unreachable -ok8399: +ok8888: %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.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: + br label %logic.rend8889 +logic.rend8889: + br label %logic.end8886 +logic.end8886: + %t39 = phi i1 [ true, %logic.from8884 ], [ %t38, %logic.rend8889 ] + br i1 %t39, label %then8890, label %endif8892 +then8890: %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 -endif8403: - %t44 = load %S.C.CXType, ptr %a7 - store %S.C.CXType %t44, ptr %a45 - %t46 = call i64 @clang_Type_getSizeOf(ptr %a45) - store i64 %t46, ptr %a47 - %t48 = load i64, ptr %a47 - %t49 = icmp slt i64 %t48, 0 - 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 %panic8407, label %ok8408 -panic8407: - call void @finch_panic(ptr @.str.6034, i64 164, ptr @.str.6035) + call void @finch_str_drop(ptr %a19) + ret { ptr, i64, i64 } %t40 +endif8892: + %t41 = load %S.C.CXType, ptr %a7 + store %S.C.CXType %t41, ptr %a42 + %t43 = call i64 @clang_Type_getSizeOf(ptr %a42) + store i64 %t43, ptr %a44 + %t45 = load i64, ptr %a44 + %t46 = icmp slt i64 %t45, 0 + br i1 %t46, label %then8893, label %endif8895 +then8893: + call void @finch_str_drop(ptr %a23) + call void @finch_str_drop(ptr %a19) + ret { ptr, i64, i64 } { ptr @.str.6256, i64 0, i64 0 } +endif8895: + %t47 = load ptr, ptr %a1 + %t48 = icmp eq ptr %t47, null + br i1 %t48, label %panic8896, label %ok8897 +panic8896: + call void @finch_panic(ptr @.str.6257, i64 168, ptr @.str.6258) unreachable -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 - store i32 0, ptr %a55 - %t56 = call i64 @finch_map_slot(ptr %t52, ptr %a54, 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, ptr %a55) - %t57 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t52, i32 0, i32 0 - %t58 = load ptr, ptr %t57 - %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.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.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 - store { ptr, i64, i64 } %t65, ptr %a66 - call void @finch_str_copy(ptr %a67, ptr %a66) - %t68 = load { ptr, i64, i64 }, ptr %a67 - %t69 = insertvalue %S.cimport.CStruct zeroinitializer, { ptr, i64, i64 } %t68, 0 - %t70 = load i64, ptr %a47 - %t71 = insertvalue %S.cimport.CStruct %t69, i64 %t70, 2 - %t72 = load %S.C.CXType, ptr %a7 - store %S.C.CXType %t72, ptr %a73 - %t74 = call i64 @clang_Type_getAlignOf(ptr %a73) - %t75 = insertvalue %S.cimport.CStruct %t71, i64 %t74, 3 - store %S.cimport.CStruct %t75, ptr %a76 - %t77 = load %S.C.CXCursor, ptr %a12 - store %S.C.CXCursor %t77, ptr %a78 - %t79 = call i32 @clang_getCursorKind(ptr %a78) - %t80 = icmp eq i32 %t79, 3 - 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.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 - store %S.cimport.FieldCtx %t84, ptr %a85 - %t86 = load %S.C.CXType, ptr %a7 - store %S.C.CXType %t86, ptr %a87 - %t88 = call i32 @clang_Type_visitFields(ptr %a87, ptr @finch.c.cimport.visitField, ptr %a85) - %t89 = load ptr, ptr %a1 - %t90 = icmp eq ptr %t89, null - br i1 %t90, label %panic8414, label %ok8415 -panic8414: - call void @finch_panic(ptr @.str.6037, i64 172, ptr @.str.6038) +ok8897: + %t49 = getelementptr inbounds %S.cimport.Importer, ptr %t47, i32 0, i32 4 + %t50 = load { ptr, i64, i64 }, ptr %a19 + store { ptr, i64, i64 } %t50, ptr %a51 + store i32 0, ptr %a52 + %t53 = call i64 @finch_map_slot(ptr %t49, ptr %a51, 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, ptr %a52) + %t54 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t49, i32 0, i32 0 + %t55 = load ptr, ptr %t54 + %t56 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t55, i64 %t53 + %t57 = load i32, ptr %a52 + %t58 = icmp ne i32 %t57, 0 + br i1 %t58, label %map.new8898, label %map.have8899 +map.new8898: + %t59 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t56, i32 0, i32 1 + call void @finch_str_copy(ptr %t59, ptr %a51) + %t60 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t56, i32 0, i32 2 + store i1 false, ptr %t60 + br label %map.have8899 +map.have8899: + %t61 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t56, i32 0, i32 2 + store i1 true, ptr %t61 + %t62 = load { ptr, i64, i64 }, ptr %a23 + store { ptr, i64, i64 } %t62, ptr %a63 + call void @finch_str_copy(ptr %a64, ptr %a63) + %t65 = load { ptr, i64, i64 }, ptr %a64 + %t66 = insertvalue %S.cimport.CStruct zeroinitializer, { ptr, i64, i64 } %t65, 0 + %t67 = load i64, ptr %a44 + %t68 = insertvalue %S.cimport.CStruct %t66, i64 %t67, 2 + %t69 = load %S.C.CXType, ptr %a7 + store %S.C.CXType %t69, ptr %a70 + %t71 = call i64 @clang_Type_getAlignOf(ptr %a70) + %t72 = insertvalue %S.cimport.CStruct %t68, i64 %t71, 3 + store %S.cimport.CStruct %t72, ptr %a73 + %t74 = load %S.C.CXCursor, ptr %a12 + store %S.C.CXCursor %t74, ptr %a75 + %t76 = call i32 @clang_getCursorKind(ptr %a75) + %t77 = icmp eq i32 %t76, 3 + br i1 %t77, label %then8900, label %endif8902 +then8900: + %t78 = getelementptr inbounds %S.cimport.CStruct, ptr %a73, i32 0, i32 4 + %t79 = load { ptr, i64, i64 }, ptr %t78 + store { ptr, i64, i64 } { ptr @.str.6259, i64 12, i64 0 }, ptr %t78 + store { ptr, i64, i64 } %t79, ptr %a80 + call void @finch_str_drop(ptr %a80) + br label %endif8902 +endif8902: + %t81 = load ptr, ptr %a1 + %t82 = insertvalue %S.cimport.FieldCtx zeroinitializer, ptr %t81, 0 + %t83 = insertvalue %S.cimport.FieldCtx %t82, ptr %a73, 1 + store %S.cimport.FieldCtx %t83, ptr %a84 + %t85 = load %S.C.CXType, ptr %a7 + store %S.C.CXType %t85, ptr %a86 + %t87 = call i32 @clang_Type_visitFields(ptr %a86, ptr @finch.c.cimport.visitField, ptr %a84) + %t88 = load ptr, ptr %a1 + %t89 = icmp eq ptr %t88, null + br i1 %t89, label %panic8903, label %ok8904 +panic8903: + call void @finch_panic(ptr @.str.6260, i64 176, ptr @.str.6261) unreachable -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.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.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 %panic8418, label %ok8419 -panic8418: - call void @finch_panic(ptr @.str.6039, i64 173, ptr @.str.6040) +ok8904: + %t90 = getelementptr inbounds %S.cimport.Importer, ptr %t88, i32 0, i32 4 + %t91 = load { ptr, i64, i64 }, ptr %a19 + store { ptr, i64, i64 } %t91, ptr %a92 + %t93 = call i64 @finch_map_find(ptr %t90, ptr %a92, 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) + %t94 = icmp sge i64 %t93, 0 + br i1 %t94, label %remove.hit8905, label %remove.end8906 +remove.hit8905: + %t95 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t90, i32 0, i32 0 + %t96 = load ptr, ptr %t95 + %t97 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t96, i64 %t93 + %t98 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t97, i32 0, i32 1 + call void @finch_str_drop(ptr %t98) + %t99 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t97, i32 0, i32 2 + call void @finch_map_remove_at(ptr %t90, i64 %t93, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i1 }, ptr null, i32 1) to i64)) + br label %remove.end8906 +remove.end8906: + %t100 = load %S.cimport.CStruct, ptr %a73 + %t101 = load ptr, ptr %a1 + %t102 = icmp eq ptr %t101, null + br i1 %t102, label %panic8907, label %ok8908 +panic8907: + call void @finch_panic(ptr @.str.6262, i64 177, ptr @.str.6263) unreachable -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 - store { ptr, i64, i64 } %t101, ptr %a102 - store i32 0, ptr %a103 - %t104 = call i64 @finch_map_slot(ptr %t100, ptr %a102, 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, ptr %a103) - %t105 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t100, i32 0, i32 0 - %t106 = load ptr, ptr %t105 - %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.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.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) - %t115 = load %S.cimport.CStruct, ptr %a114 - store %S.cimport.CStruct %t115, ptr %t112 - %t116 = load ptr, ptr %a1 - %t117 = icmp eq ptr %t116, null - br i1 %t117, label %panic8422, label %ok8423 -panic8422: - call void @finch_panic(ptr @.str.6041, i64 174, ptr @.str.6042) +ok8908: + %t103 = getelementptr inbounds %S.cimport.Importer, ptr %t101, i32 0, i32 0 + %t104 = getelementptr inbounds %S.cimport.CImports, ptr %t103, i32 0, i32 3 + %t105 = load { ptr, i64, i64 }, ptr %a23 + store { ptr, i64, i64 } %t105, ptr %a106 + store i32 0, ptr %a107 + %t108 = call i64 @finch_map_slot(ptr %t104, ptr %a106, 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, ptr %a107) + %t109 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t104, i32 0, i32 0 + %t110 = load ptr, ptr %t109 + %t111 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t110, i64 %t108 + %t112 = load i32, ptr %a107 + %t113 = icmp ne i32 %t112, 0 + br i1 %t113, label %map.new8909, label %map.have8910 +map.new8909: + %t114 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t111, i32 0, i32 1 + call void @finch_str_copy(ptr %t114, ptr %a106) + %t115 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t111, i32 0, i32 2 + store %S.cimport.CStruct zeroinitializer, ptr %t115 + br label %map.have8910 +map.have8910: + %t116 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t111, i32 0, i32 2 + store %S.cimport.CStruct %t100, ptr %a117 + call void @finch.copy.S_cimport_CStruct(ptr %a118, ptr %a117) + %t119 = load %S.cimport.CStruct, ptr %a118 + %t120 = load %S.cimport.CStruct, ptr %t116 + store %S.cimport.CStruct %t119, ptr %t116 + store %S.cimport.CStruct %t120, ptr %a121 + call void @finch.drop.S_cimport_CStruct(ptr %a121) + %t122 = load ptr, ptr %a1 + %t123 = icmp eq ptr %t122, null + br i1 %t123, label %panic8911, label %ok8912 +panic8911: + call void @finch_panic(ptr @.str.6264, i64 178, ptr @.str.6265) unreachable -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 - %t121 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t121, ptr %a122 - call void @finch_str_copy(ptr %a123, ptr %a122) - %t124 = load { ptr, i64, i64 }, ptr %a123 - %t125 = load i64, ptr %t120 - %t126 = add i64 %t125, 1 - call void @finch_arr_reserve(ptr %t119, i64 %t126, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t127 = load ptr, ptr %t119 - %t128 = getelementptr inbounds { ptr, i64, i64 }, ptr %t127, i64 %t125 - store { ptr, i64, i64 } %t124, ptr %t128 - store i64 %t126, ptr %t120 - %t129 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t129, ptr %a130 - call void @finch_str_copy(ptr %a131, ptr %a130) - %t132 = load { ptr, i64, i64 }, ptr %a131 - ret { ptr, i64, i64 } %t132 +ok8912: + %t124 = getelementptr inbounds %S.cimport.Importer, ptr %t122, i32 0, i32 0 + %t125 = getelementptr inbounds %S.cimport.CImports, ptr %t124, i32 0, i32 4 + %t126 = getelementptr inbounds { ptr, i64, i64 }, ptr %t125, i32 0, i32 1 + %t127 = load { ptr, i64, i64 }, ptr %a23 + store { ptr, i64, i64 } %t127, ptr %a128 + call void @finch_str_copy(ptr %a129, ptr %a128) + %t130 = load { ptr, i64, i64 }, ptr %a129 + %t131 = load i64, ptr %t126 + %t132 = add i64 %t131, 1 + call void @finch_arr_reserve(ptr %t125, i64 %t132, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t133 = load ptr, ptr %t125 + %t134 = getelementptr inbounds { ptr, i64, i64 }, ptr %t133, i64 %t131 + store { ptr, i64, i64 } %t130, ptr %t134 + store i64 %t132, ptr %t126 + %t135 = load { ptr, i64, i64 }, ptr %a23 + call void @finch.drop.S_cimport_CStruct(ptr %a73) + call void @finch_str_drop(ptr %a19) + ret { ptr, i64, i64 } %t135 +} + +define internal void @finch.drop.S_cimport_Mapped(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.cimport.Mapped, ptr %a, i32 0, i32 0 + call void @finch.drop.S_ast_Type(ptr %t1) + %t2 = getelementptr inbounds %S.cimport.Mapped, ptr %a, i32 0, i32 1 + call void @finch_str_drop(ptr %t2) + ret void } define internal i32 @finch.cimport.visitField(%S.C.CXCursor %p0, ptr %p1) { @@ -78180,14 +94206,16 @@ entry: %a27 = alloca %S.C.CXType, align 16 %a31 = alloca %S.C.CXType, align 16 %a35 = alloca %S.C.CXCursor, align 16 - %a48 = alloca %S.C.CXCursor, align 16 - %a50 = alloca %S.C.CXType, align 16 - %a52 = alloca %S.C.CXCursor, align 16 - %a63 = alloca %S.cimport.Mapped, align 16 - %a69 = alloca %S.ast.Type, align 16 - %a70 = alloca %S.ast.Type, align 16 - %a94 = alloca %S.cimport.CField, align 16 - %a95 = alloca %S.cimport.CField, align 16 + %a45 = alloca { ptr, i64, i64 }, align 16 + %a50 = alloca %S.C.CXCursor, align 16 + %a52 = alloca %S.C.CXType, align 16 + %a54 = alloca %S.C.CXCursor, align 16 + %a65 = alloca %S.cimport.Mapped, align 16 + %a71 = alloca %S.ast.Type, align 16 + %a72 = alloca %S.ast.Type, align 16 + %a75 = alloca %S.ast.Type, align 16 + %a98 = alloca %S.cimport.CField, align 16 + %a99 = alloca %S.cimport.CField, align 16 store %S.C.CXCursor %p0, ptr %a1 store ptr %p1, ptr %a2 %t3 = load ptr, ptr %a2 @@ -78228,148 +94256,156 @@ entry: store %S.C.CXCursor %t34, ptr %a35 %t36 = call i32 @clang_Cursor_isBitField(ptr %a35) %t37 = icmp ne i32 %t36, 0 - br i1 %t37, label %then8424, label %else8425 -then8424: + br i1 %t37, label %then8913, label %else8914 +then8913: %t38 = load ptr, ptr %a4 %t39 = icmp eq ptr %t38, null - br i1 %t39, label %panic8427, label %ok8428 -panic8427: - call void @finch_panic(ptr @.str.6044, i64 191, ptr @.str.6045) + br i1 %t39, label %panic8916, label %ok8917 +panic8916: + call void @finch_panic(ptr @.str.6267, i64 195, ptr @.str.6268) unreachable -ok8428: +ok8917: %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 %panic8429, label %ok8430 -panic8429: - call void @finch_panic(ptr @.str.6046, i64 191, ptr @.str.6047) + br i1 %t42, label %panic8918, label %ok8919 +panic8918: + call void @finch_panic(ptr @.str.6269, i64 195, ptr @.str.6270) unreachable -ok8430: +ok8919: %t43 = getelementptr inbounds %S.cimport.CStruct, ptr %t41, i32 0, i32 4 - 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 %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.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 %a50) - %t51 = load %S.C.CXCursor, ptr %a48 - store %S.C.CXCursor %t51, ptr %a52 - %t53 = call i32 @clang_getCursorKind(ptr %a52) - %t54 = icmp eq i32 %t53, 3 - 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 %endif8437 -else8436: - %t57 = load ptr, ptr %a4 - %t58 = icmp eq ptr %t57, null - br i1 %t58, label %panic8438, label %ok8439 -panic8438: - call void @finch_panic(ptr @.str.6048, i64 196, ptr @.str.6049) + %t44 = load { ptr, i64, i64 }, ptr %t43 + store { ptr, i64, i64 } { ptr @.str.6266, i64 14, i64 0 }, ptr %t43 + store { ptr, i64, i64 } %t44, ptr %a45 + call void @finch_str_drop(ptr %a45) + %t46 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 5 + store i1 true, ptr %t46 + br label %endif8915 +else8914: + %t47 = getelementptr inbounds %S.C.CXType, ptr %a20, i32 0, i32 0 + %t48 = load i32, ptr %t47 + %t49 = icmp eq i32 %t48, 105 + br label %logic.from8920 +logic.from8920: + br i1 %t49, label %logic.rhs8921, label %logic.end8922 +logic.rhs8921: + %t51 = load %S.C.CXType, ptr %a20 + store %S.C.CXType %t51, ptr %a52 + call void @clang_getTypeDeclaration(ptr sret(%S.C.CXCursor) align 16 %a50, ptr %a52) + %t53 = load %S.C.CXCursor, ptr %a50 + store %S.C.CXCursor %t53, ptr %a54 + %t55 = call i32 @clang_getCursorKind(ptr %a54) + %t56 = icmp eq i32 %t55, 3 + br label %logic.rend8923 +logic.rend8923: + br label %logic.end8922 +logic.end8922: + %t57 = phi i1 [ false, %logic.from8920 ], [ %t56, %logic.rend8923 ] + br i1 %t57, label %then8924, label %else8925 +then8924: + %t58 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 5 + store i1 true, ptr %t58 + br label %endif8926 +else8925: + %t59 = load ptr, ptr %a4 + %t60 = icmp eq ptr %t59, null + br i1 %t60, label %panic8927, label %ok8928 +panic8927: + call void @finch_panic(ptr @.str.6271, i64 200, ptr @.str.6272) unreachable -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 - %t62 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t60, %S.C.CXType %t61, i1 false, i1 false) - 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 %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 - store %S.ast.Type %t67, ptr %a69 - 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 %endif8442 -else8441: - %t72 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 5 - store i1 true, ptr %t72 - 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 %then8443, label %endif8445 -then8443: - %t75 = load ptr, ptr %a4 - %t76 = icmp eq ptr %t75, null - br i1 %t76, label %panic8446, label %ok8447 -panic8446: - call void @finch_panic(ptr @.str.6050, i64 204, ptr @.str.6051) +ok8928: + %t61 = getelementptr inbounds %S.cimport.FieldCtx, ptr %t59, i32 0, i32 0 + %t62 = load ptr, ptr %t61 + %t63 = load %S.C.CXType, ptr %a20 + %t64 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t62, %S.C.CXType %t63, i1 false, i1 false) + store %S.cimport.Mapped %t64, ptr %a65 + %t66 = getelementptr inbounds %S.cimport.Mapped, ptr %a65, i32 0, i32 2 + %t67 = load i1, ptr %t66 + br i1 %t67, label %then8929, label %else8930 +then8929: + %t68 = getelementptr inbounds %S.cimport.Mapped, ptr %a65, i32 0, i32 0 + %t69 = load %S.ast.Type, ptr %t68 + %t70 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 1 + store %S.ast.Type %t69, ptr %a71 + call void @finch.copy.S_ast_Type(ptr %a72, ptr %a71) + %t73 = load %S.ast.Type, ptr %a72 + %t74 = load %S.ast.Type, ptr %t70 + store %S.ast.Type %t73, ptr %t70 + store %S.ast.Type %t74, ptr %a75 + call void @finch.drop.S_ast_Type(ptr %a75) + br label %endif8931 +else8930: + %t76 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 5 + store i1 true, ptr %t76 + br label %endif8931 +endif8931: + call void @finch.drop.S_cimport_Mapped(ptr %a65) + br label %endif8926 +endif8926: + br label %endif8915 +endif8915: + %t77 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 5 + %t78 = load i1, ptr %t77 + br i1 %t78, label %then8932, label %endif8934 +then8932: + %t79 = load ptr, ptr %a4 + %t80 = icmp eq ptr %t79, null + br i1 %t80, label %panic8935, label %ok8936 +panic8935: + call void @finch_panic(ptr @.str.6273, i64 208, ptr @.str.6274) unreachable -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 %panic8448, label %ok8449 -panic8448: - call void @finch_panic(ptr @.str.6052, i64 204, ptr @.str.6053) +ok8936: + %t81 = getelementptr inbounds %S.cimport.FieldCtx, ptr %t79, i32 0, i32 1 + %t82 = load ptr, ptr %t81 + %t83 = icmp eq ptr %t82, null + br i1 %t83, label %panic8937, label %ok8938 +panic8937: + call void @finch_panic(ptr @.str.6275, i64 208, ptr @.str.6276) unreachable -ok8449: - %t80 = getelementptr inbounds %S.cimport.CStruct, ptr %t78, i32 0, i32 5 - store i1 true, ptr %t80 - 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 %then8450, label %endif8452 -then8450: - %t85 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 5 - store i1 true, ptr %t85 - br label %endif8452 -endif8452: - %t86 = load ptr, ptr %a4 - %t87 = icmp eq ptr %t86, null - br i1 %t87, label %panic8453, label %ok8454 -panic8453: - call void @finch_panic(ptr @.str.6054, i64 209, ptr @.str.6055) +ok8938: + %t84 = getelementptr inbounds %S.cimport.CStruct, ptr %t82, i32 0, i32 5 + store i1 true, ptr %t84 + br label %endif8934 +endif8934: + %t85 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 0 + %t86 = getelementptr inbounds { ptr, i64, i64 }, ptr %t85, i32 0, i32 1 + %t87 = load i64, ptr %t86 + %t88 = icmp eq i64 %t87, 0 + br i1 %t88, label %then8939, label %endif8941 +then8939: + %t89 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 5 + store i1 true, ptr %t89 + br label %endif8941 +endif8941: + %t90 = load ptr, ptr %a4 + %t91 = icmp eq ptr %t90, null + br i1 %t91, label %panic8942, label %ok8943 +panic8942: + call void @finch_panic(ptr @.str.6277, i64 213, ptr @.str.6278) unreachable -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 %panic8455, label %ok8456 -panic8455: - call void @finch_panic(ptr @.str.6056, i64 209, ptr @.str.6057) +ok8943: + %t92 = getelementptr inbounds %S.cimport.FieldCtx, ptr %t90, i32 0, i32 1 + %t93 = load ptr, ptr %t92 + %t94 = icmp eq ptr %t93, null + br i1 %t94, label %panic8944, label %ok8945 +panic8944: + call void @finch_panic(ptr @.str.6279, i64 213, ptr @.str.6280) unreachable -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 - store %S.cimport.CField %t93, ptr %a94 - call void @finch.copy.S_cimport_CField(ptr %a95, ptr %a94) - %t96 = load %S.cimport.CField, ptr %a95 - %t97 = load i64, ptr %t92 - %t98 = add i64 %t97, 1 - call void @finch_arr_reserve(ptr %t91, i64 %t98, i64 ptrtoint (ptr getelementptr (%S.cimport.CField, ptr null, i32 1) to i64)) - %t99 = load ptr, ptr %t91 - %t100 = getelementptr inbounds %S.cimport.CField, ptr %t99, i64 %t97 - store %S.cimport.CField %t96, ptr %t100 - store i64 %t98, ptr %t92 +ok8945: + %t95 = getelementptr inbounds %S.cimport.CStruct, ptr %t93, i32 0, i32 1 + %t96 = getelementptr inbounds { ptr, i64, i64 }, ptr %t95, i32 0, i32 1 + %t97 = load %S.cimport.CField, ptr %a12 + store %S.cimport.CField %t97, ptr %a98 + call void @finch.copy.S_cimport_CField(ptr %a99, ptr %a98) + %t100 = load %S.cimport.CField, ptr %a99 + %t101 = load i64, ptr %t96 + %t102 = add i64 %t101, 1 + call void @finch_arr_reserve(ptr %t95, i64 %t102, i64 ptrtoint (ptr getelementptr (%S.cimport.CField, ptr null, i32 1) to i64)) + %t103 = load ptr, ptr %t95 + %t104 = getelementptr inbounds %S.cimport.CField, ptr %t103, i64 %t101 + store %S.cimport.CField %t100, ptr %t104 + store i64 %t102, ptr %t96 + call void @finch.drop.S_cimport_CField(ptr %a12) ret i32 1 } @@ -78377,89 +94413,122 @@ define internal %S.cimport.Mapped @finch.cimport.sized(i64 %p0, i1 %p1) { entry: %a1 = alloca i64, align 16 %a2 = alloca i1, 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 - %a40 = alloca { ptr, i64, i64 }, align 16 + %a8 = alloca %S.ast.Type, align 16 + %a11 = alloca %S.ast.Type, align 16 + %a17 = alloca %S.ast.Type, align 16 + %a20 = alloca %S.ast.Type, align 16 + %a26 = alloca %S.ast.Type, align 16 + %a29 = alloca %S.ast.Type, align 16 + %a35 = alloca %S.ast.Type, align 16 + %a38 = alloca %S.ast.Type, 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 + %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 + %a51 = alloca { ptr, i64, i64 }, align 16 + %a54 = alloca { ptr, i64, i64 }, align 16 store i64 %p0, ptr %a1 store i1 %p1, ptr %a2 %t3 = load i64, ptr %a1 %t4 = icmp eq i64 %t3, 1 - br i1 %t4, label %then8457, label %endif8459 -then8457: + br i1 %t4, label %then8946, label %endif8948 +then8946: %t5 = load i1, ptr %a2 - 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 }) + br i1 %t5, label %then8949, label %endif8951 +then8949: + %t6 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6281, i64 2, i64 0 }) %t7 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t6) + store %S.ast.Type %t6, ptr %a8 + call void @finch.drop.S_ast_Type(ptr %a8) ret %S.cimport.Mapped %t7 -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 -endif8459: - %t10 = load i64, ptr %a1 - %t11 = icmp eq i64 %t10, 2 - br i1 %t11, label %then8463, label %endif8465 -then8463: - %t12 = load i1, ptr %a2 - 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 -endif8468: - %t15 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6061, i64 3, i64 0 }) +endif8951: + %t9 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6282, i64 2, i64 0 }) + %t10 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t9) + store %S.ast.Type %t9, ptr %a11 + call void @finch.drop.S_ast_Type(ptr %a11) + ret %S.cimport.Mapped %t10 +endif8948: + %t12 = load i64, ptr %a1 + %t13 = icmp eq i64 %t12, 2 + br i1 %t13, label %then8952, label %endif8954 +then8952: + %t14 = load i1, ptr %a2 + br i1 %t14, label %then8955, label %endif8957 +then8955: + %t15 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6283, i64 3, i64 0 }) %t16 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t15) + store %S.ast.Type %t15, ptr %a17 + call void @finch.drop.S_ast_Type(ptr %a17) ret %S.cimport.Mapped %t16 -endif8465: - %t17 = load i64, ptr %a1 - %t18 = icmp eq i64 %t17, 4 - br i1 %t18, label %then8469, label %endif8471 -then8469: - %t19 = load i1, ptr %a2 - 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 -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 -endif8471: - %t24 = load i64, ptr %a1 - %t25 = icmp eq i64 %t24, 8 - br i1 %t25, label %then8475, label %endif8477 -then8475: - %t26 = load i1, ptr %a2 - 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 }) +endif8957: + %t18 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6284, i64 3, i64 0 }) + %t19 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t18) + store %S.ast.Type %t18, ptr %a20 + call void @finch.drop.S_ast_Type(ptr %a20) + ret %S.cimport.Mapped %t19 +endif8954: + %t21 = load i64, ptr %a1 + %t22 = icmp eq i64 %t21, 4 + br i1 %t22, label %then8958, label %endif8960 +then8958: + %t23 = load i1, ptr %a2 + br i1 %t23, label %then8961, label %endif8963 +then8961: + %t24 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6285, i64 3, i64 0 }) + %t25 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t24) + store %S.ast.Type %t24, ptr %a26 + call void @finch.drop.S_ast_Type(ptr %a26) + ret %S.cimport.Mapped %t25 +endif8963: + %t27 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6286, i64 3, i64 0 }) %t28 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t27) + store %S.ast.Type %t27, ptr %a29 + call void @finch.drop.S_ast_Type(ptr %a29) ret %S.cimport.Mapped %t28 -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 -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.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.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) - ret %S.cimport.Mapped %t43 +endif8960: + %t30 = load i64, ptr %a1 + %t31 = icmp eq i64 %t30, 8 + br i1 %t31, label %then8964, label %endif8966 +then8964: + %t32 = load i1, ptr %a2 + br i1 %t32, label %then8967, label %endif8969 +then8967: + %t33 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6287, i64 3, i64 0 }) + %t34 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t33) + store %S.ast.Type %t33, ptr %a35 + call void @finch.drop.S_ast_Type(ptr %a35) + ret %S.cimport.Mapped %t34 +endif8969: + %t36 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6288, i64 3, i64 0 }) + %t37 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t36) + store %S.ast.Type %t36, ptr %a38 + call void @finch.drop.S_ast_Type(ptr %a38) + ret %S.cimport.Mapped %t37 +endif8966: + %t39 = load i64, ptr %a1 + %t40 = mul i64 %t39, 8 + call void @finch_str_from_int(ptr %a41, i64 %t40) + %t42 = load { ptr, i64, i64 }, ptr %a41 + store { ptr, i64, i64 } { ptr @.str.6289, i64 7, i64 0 }, ptr %a44 + store { ptr, i64, i64 } %t42, ptr %a45 + call void @finch_str_concat(ptr %a43, ptr %a44, ptr %a45) + store { ptr, i64, i64 } %t42, ptr %a46 + call void @finch_str_drop(ptr %a46) + %t47 = load { ptr, i64, i64 }, ptr %a43 + store { ptr, i64, i64 } %t47, ptr %a49 + store { ptr, i64, i64 } { ptr @.str.6290, i64 11, i64 0 }, ptr %a50 + call void @finch_str_concat(ptr %a48, ptr %a49, ptr %a50) + store { ptr, i64, i64 } %t47, ptr %a51 + call void @finch_str_drop(ptr %a51) + %t52 = load { ptr, i64, i64 }, ptr %a48 + %t53 = call %S.cimport.Mapped @finch.cimport.no({ ptr, i64, i64 } %t52) + store { ptr, i64, i64 } %t52, ptr %a54 + call void @finch_str_drop(ptr %a54) + ret %S.cimport.Mapped %t53 } define internal %S.cimport.Mapped @finch.cimport.mapType(ptr %p0, %S.C.CXType %p1, i1 %p2, i1 %p3) { @@ -78474,35 +94543,49 @@ entry: %a11 = alloca %S.C.CXType, align 16 %a13 = alloca i64, align 16 %a16 = alloca i32, align 16 - %a78 = alloca %S.C.CXType, align 16 - %a79 = alloca %S.C.CXType, align 16 - %a81 = alloca %S.C.CXType, align 16 + %a21 = alloca %S.ast.Type, align 16 + %a26 = alloca %S.ast.Type, align 16 + %a34 = alloca %S.ast.Type, align 16 + %a75 = alloca %S.ast.Type, align 16 + %a80 = alloca %S.ast.Type, align 16 %a83 = alloca %S.C.CXType, align 16 - %a85 = alloca %S.C.CXType, align 16 - %a98 = alloca %S.C.CXType, align 16 - %a120 = alloca %S.cimport.Mapped, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 + %a84 = alloca %S.C.CXType, align 16 + %a86 = alloca %S.C.CXType, align 16 + %a88 = alloca %S.C.CXType, align 16 + %a90 = alloca %S.C.CXType, align 16 + %a103 = alloca %S.C.CXType, align 16 + %a109 = alloca %S.ast.Type, align 16 + %a123 = alloca %S.ast.Type, align 16 + %a127 = alloca %S.cimport.Mapped, align 16 + %a134 = alloca { ptr, i64, i64 }, align 16 %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca %S.C.CXCursor, align 16 - %a150 = alloca %S.C.CXType, align 16 - %a152 = alloca %S.C.CXCursor, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca %S.C.CXType, align 16 - %a177 = alloca %S.C.CXType, align 16 - %a180 = alloca %S.cimport.Mapped, align 16 - %a188 = alloca %S.C.CXType, align 16 - %a196 = alloca %S.C.CXType, align 16 - %a198 = alloca [32 x i8], align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 + %a142 = alloca { ptr, i64, i64 }, align 16 + %a143 = alloca { ptr, i64, i64 }, align 16 + %a149 = alloca %S.ast.Type, align 16 + %a154 = alloca %S.ast.Type, align 16 + %a157 = alloca %S.C.CXCursor, align 16 + %a159 = alloca %S.C.CXType, align 16 + %a161 = alloca %S.C.CXCursor, align 16 + %a168 = alloca { ptr, i64, i64 }, align 16 + %a175 = alloca { ptr, i64, i64 }, align 16 + %a176 = alloca { ptr, i64, i64 }, align 16 + %a181 = alloca %S.ast.Type, align 16 + %a185 = alloca %S.C.CXType, align 16 + %a187 = alloca %S.C.CXType, align 16 + %a190 = alloca %S.cimport.Mapped, align 16 + %a198 = alloca %S.C.CXType, align 16 + %a202 = alloca %S.ast.Type, align 16 + %a207 = alloca %S.C.CXType, align 16 + %a209 = alloca [32 x i8], align 16 + %a212 = 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 + %a217 = alloca { ptr, i64, i64 }, align 16 + %a218 = alloca { ptr, i64, i64 }, align 16 + %a219 = alloca { ptr, i64, i64 }, align 16 + %a220 = alloca { ptr, i64, i64 }, align 16 + %a223 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store %S.C.CXType %p1, ptr %a2 store i1 %p2, ptr %a3 @@ -78521,402 +94604,435 @@ entry: store i32 %t15, ptr %a16 %t17 = load i32, ptr %a16 %t18 = icmp eq i32 %t17, 2 - 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 }) + br i1 %t18, label %then8970, label %endif8972 +then8970: + %t19 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6291, i64 4, i64 0 }) %t20 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t19) + store %S.ast.Type %t19, ptr %a21 + call void @finch.drop.S_ast_Type(ptr %a21) ret %S.cimport.Mapped %t20 -endif8483: - %t21 = load i32, ptr %a16 - %t22 = icmp eq i32 %t21, 3 - 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 -endif8486: - %t25 = load i32, ptr %a16 - %t26 = icmp eq i32 %t25, 13 - br label %logic.from8487 -logic.from8487: - br i1 %t26, label %logic.end8489, label %logic.rhs8488 -logic.rhs8488: +endif8972: + %t22 = load i32, ptr %a16 + %t23 = icmp eq i32 %t22, 3 + br i1 %t23, label %then8973, label %endif8975 +then8973: + %t24 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6292, i64 4, i64 0 }) + %t25 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t24) + store %S.ast.Type %t24, ptr %a26 + call void @finch.drop.S_ast_Type(ptr %a26) + ret %S.cimport.Mapped %t25 +endif8975: %t27 = load i32, ptr %a16 - %t28 = icmp eq i32 %t27, 4 - 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 -endif8493: - %t32 = load i32, ptr %a16 - %t33 = icmp eq i32 %t32, 14 - 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.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: + %t28 = icmp eq i32 %t27, 13 + br label %logic.from8976 +logic.from8976: + br i1 %t28, label %logic.end8978, label %logic.rhs8977 +logic.rhs8977: + %t29 = load i32, ptr %a16 + %t30 = icmp eq i32 %t29, 4 + br label %logic.rend8979 +logic.rend8979: + br label %logic.end8978 +logic.end8978: + %t31 = phi i1 [ true, %logic.from8976 ], [ %t30, %logic.rend8979 ] + br i1 %t31, label %then8980, label %endif8982 +then8980: + %t32 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6293, i64 4, i64 0 }) + %t33 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t32) + store %S.ast.Type %t32, ptr %a34 + call void @finch.drop.S_ast_Type(ptr %a34) + ret %S.cimport.Mapped %t33 +endif8982: + %t35 = load i32, ptr %a16 + %t36 = icmp eq i32 %t35, 14 + br label %logic.from8983 +logic.from8983: + br i1 %t36, label %logic.end8985, label %logic.rhs8984 +logic.rhs8984: %t37 = load i32, ptr %a16 - %t38 = icmp eq i32 %t37, 17 - 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: + %t38 = icmp eq i32 %t37, 16 + br label %logic.rend8986 +logic.rend8986: + br label %logic.end8985 +logic.end8985: + %t39 = phi i1 [ true, %logic.from8983 ], [ %t38, %logic.rend8986 ] + br label %logic.from8987 +logic.from8987: + br i1 %t39, label %logic.end8989, label %logic.rhs8988 +logic.rhs8988: %t40 = load i32, ptr %a16 - %t41 = icmp eq i32 %t40, 18 - 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: + %t41 = icmp eq i32 %t40, 17 + br label %logic.rend8990 +logic.rend8990: + br label %logic.end8989 +logic.end8989: + %t42 = phi i1 [ true, %logic.from8987 ], [ %t41, %logic.rend8990 ] + br label %logic.from8991 +logic.from8991: + br i1 %t42, label %logic.end8993, label %logic.rhs8992 +logic.rhs8992: %t43 = load i32, ptr %a16 - %t44 = icmp eq i32 %t43, 19 - 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 -endif8512: - %t48 = load i32, ptr %a16 - %t49 = icmp eq i32 %t48, 5 - 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.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: + %t44 = icmp eq i32 %t43, 18 + br label %logic.rend8994 +logic.rend8994: + br label %logic.end8993 +logic.end8993: + %t45 = phi i1 [ true, %logic.from8991 ], [ %t44, %logic.rend8994 ] + br label %logic.from8995 +logic.from8995: + br i1 %t45, label %logic.end8997, label %logic.rhs8996 +logic.rhs8996: + %t46 = load i32, ptr %a16 + %t47 = icmp eq i32 %t46, 19 + br label %logic.rend8998 +logic.rend8998: + br label %logic.end8997 +logic.end8997: + %t48 = phi i1 [ true, %logic.from8995 ], [ %t47, %logic.rend8998 ] + br i1 %t48, label %then8999, label %endif9001 +then8999: + %t49 = load i64, ptr %a13 + %t50 = call %S.cimport.Mapped @finch.cimport.sized(i64 %t49, i1 true) + ret %S.cimport.Mapped %t50 +endif9001: + %t51 = load i32, ptr %a16 + %t52 = icmp eq i32 %t51, 5 + br label %logic.from9002 +logic.from9002: + br i1 %t52, label %logic.end9004, label %logic.rhs9003 +logic.rhs9003: %t53 = load i32, ptr %a16 - %t54 = icmp eq i32 %t53, 9 - 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: + %t54 = icmp eq i32 %t53, 8 + br label %logic.rend9005 +logic.rend9005: + br label %logic.end9004 +logic.end9004: + %t55 = phi i1 [ true, %logic.from9002 ], [ %t54, %logic.rend9005 ] + br label %logic.from9006 +logic.from9006: + br i1 %t55, label %logic.end9008, label %logic.rhs9007 +logic.rhs9007: %t56 = load i32, ptr %a16 - %t57 = icmp eq i32 %t56, 10 - 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: + %t57 = icmp eq i32 %t56, 9 + br label %logic.rend9009 +logic.rend9009: + br label %logic.end9008 +logic.end9008: + %t58 = phi i1 [ true, %logic.from9006 ], [ %t57, %logic.rend9009 ] + br label %logic.from9010 +logic.from9010: + br i1 %t58, label %logic.end9012, label %logic.rhs9011 +logic.rhs9011: %t59 = load i32, ptr %a16 - %t60 = icmp eq i32 %t59, 11 - 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 -endif8531: - %t64 = load i32, ptr %a16 - %t65 = icmp eq i32 %t64, 106 - 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 -endif8534: - %t68 = load i32, ptr %a16 - %t69 = icmp eq i32 %t68, 21 - 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 -endif8537: - %t72 = load i32, ptr %a16 - %t73 = icmp eq i32 %t72, 22 - 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 -endif8540: + %t60 = icmp eq i32 %t59, 10 + br label %logic.rend9013 +logic.rend9013: + br label %logic.end9012 +logic.end9012: + %t61 = phi i1 [ true, %logic.from9010 ], [ %t60, %logic.rend9013 ] + br label %logic.from9014 +logic.from9014: + br i1 %t61, label %logic.end9016, label %logic.rhs9015 +logic.rhs9015: + %t62 = load i32, ptr %a16 + %t63 = icmp eq i32 %t62, 11 + br label %logic.rend9017 +logic.rend9017: + br label %logic.end9016 +logic.end9016: + %t64 = phi i1 [ true, %logic.from9014 ], [ %t63, %logic.rend9017 ] + br i1 %t64, label %then9018, label %endif9020 +then9018: + %t65 = load i64, ptr %a13 + %t66 = call %S.cimport.Mapped @finch.cimport.sized(i64 %t65, i1 false) + ret %S.cimport.Mapped %t66 +endif9020: + %t67 = load i32, ptr %a16 + %t68 = icmp eq i32 %t67, 106 + br i1 %t68, label %then9021, label %endif9023 +then9021: + %t69 = load i64, ptr %a13 + %t70 = call %S.cimport.Mapped @finch.cimport.sized(i64 %t69, i1 true) + ret %S.cimport.Mapped %t70 +endif9023: + %t71 = load i32, ptr %a16 + %t72 = icmp eq i32 %t71, 21 + br i1 %t72, label %then9024, label %endif9026 +then9024: + %t73 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6294, i64 3, i64 0 }) + %t74 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t73) + store %S.ast.Type %t73, ptr %a75 + call void @finch.drop.S_ast_Type(ptr %a75) + ret %S.cimport.Mapped %t74 +endif9026: %t76 = load i32, ptr %a16 - %t77 = icmp eq i32 %t76, 101 - 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 %a81) - %t82 = load %S.C.CXType, ptr %a79 - store %S.C.CXType %t82, ptr %a83 - call void @clang_getCanonicalType(ptr sret(%S.C.CXType) align 16 %a78, ptr %a83) - %t84 = load %S.C.CXType, ptr %a78 - store %S.C.CXType %t84, ptr %a85 - %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.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.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.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.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 %a98) - %t100 = icmp ne i32 %t99, 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 -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.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.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.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 -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) - store %S.cimport.Mapped %t119, ptr %a120 - %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.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.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.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.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.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 -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 -endif8543: - %t146 = load i32, ptr %a16 - %t147 = icmp eq i32 %t146, 105 - 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 %a150) - %t151 = load %S.C.CXCursor, ptr %a148 - store %S.C.CXCursor %t151, ptr %a152 - %t153 = call i32 @clang_getCursorKind(ptr %a152) - %t154 = icmp eq i32 %t153, 3 - 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 -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) - store { ptr, i64, i64 } %t158, ptr %a159 - %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 %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 -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.6081, i64 1, i64 0 }, 3 - %t171 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t170) - ret %S.cimport.Mapped %t171 -endif8586: - %t172 = load i32, ptr %a16 - %t173 = icmp eq i32 %t172, 112 - 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 - call void @clang_getArrayElementType(ptr sret(%S.C.CXType) align 16 %a175, ptr %a177) - %t178 = load %S.C.CXType, ptr %a175 - %t179 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t174, %S.C.CXType %t178, i1 false, i1 false) - store %S.cimport.Mapped %t179, ptr %a180 - %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 %then8596, label %endif8598 -then8596: - %t184 = load %S.cimport.Mapped, ptr %a180 - ret %S.cimport.Mapped %t184 -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 - store %S.C.CXType %t187, ptr %a188 - %t189 = call i64 @clang_getArraySize(ptr %a188) - %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 -endif8595: - %t192 = load i32, ptr %a16 - %t193 = icmp eq i32 %t192, 23 - 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 }) + %t77 = icmp eq i32 %t76, 22 + br i1 %t77, label %then9027, label %endif9029 +then9027: + %t78 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6295, i64 5, i64 0 }) + %t79 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t78) + store %S.ast.Type %t78, ptr %a80 + call void @finch.drop.S_ast_Type(ptr %a80) + ret %S.cimport.Mapped %t79 +endif9029: + %t81 = load i32, ptr %a16 + %t82 = icmp eq i32 %t81, 101 + br i1 %t82, label %then9030, label %endif9032 +then9030: + %t85 = load %S.C.CXType, ptr %a9 + store %S.C.CXType %t85, ptr %a86 + call void @clang_getPointeeType(ptr sret(%S.C.CXType) align 16 %a84, ptr %a86) + %t87 = load %S.C.CXType, ptr %a84 + store %S.C.CXType %t87, ptr %a88 + call void @clang_getCanonicalType(ptr sret(%S.C.CXType) align 16 %a83, ptr %a88) + %t89 = load %S.C.CXType, ptr %a83 + store %S.C.CXType %t89, ptr %a90 + %t91 = getelementptr inbounds %S.C.CXType, ptr %a90, i32 0, i32 0 + %t92 = load i32, ptr %t91 + %t93 = icmp eq i32 %t92, 13 + br label %logic.from9033 +logic.from9033: + br i1 %t93, label %logic.end9035, label %logic.rhs9034 +logic.rhs9034: + %t94 = getelementptr inbounds %S.C.CXType, ptr %a90, i32 0, i32 0 + %t95 = load i32, ptr %t94 + %t96 = icmp eq i32 %t95, 4 + br label %logic.rend9036 +logic.rend9036: + br label %logic.end9035 +logic.end9035: + %t97 = phi i1 [ true, %logic.from9033 ], [ %t96, %logic.rend9036 ] + br label %logic.from9037 +logic.from9037: + br i1 %t97, label %logic.rhs9038, label %logic.end9039 +logic.rhs9038: + %t98 = load i1, ptr %a3 + br label %logic.rend9040 +logic.rend9040: + br label %logic.end9039 +logic.end9039: + %t99 = phi i1 [ false, %logic.from9037 ], [ %t98, %logic.rend9040 ] + br i1 %t99, label %then9041, label %endif9043 +then9041: + %t100 = load i1, ptr %a4 + %t101 = xor i1 %t100, true + br label %logic.from9044 +logic.from9044: + br i1 %t101, label %logic.end9046, label %logic.rhs9045 +logic.rhs9045: + %t102 = load %S.C.CXType, ptr %a90 + store %S.C.CXType %t102, ptr %a103 + %t104 = call i32 @clang_isConstQualifiedType(ptr %a103) + %t105 = icmp ne i32 %t104, 0 + br label %logic.rend9047 +logic.rend9047: + br label %logic.end9046 +logic.end9046: + %t106 = phi i1 [ true, %logic.from9044 ], [ %t105, %logic.rend9047 ] + br i1 %t106, label %then9048, label %endif9050 +then9048: + %t107 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6296, i64 3, i64 0 }) + %t108 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t107) + store %S.ast.Type %t107, ptr %a109 + call void @finch.drop.S_ast_Type(ptr %a109) + ret %S.cimport.Mapped %t108 +endif9050: + br label %endif9043 +endif9043: + %t110 = getelementptr inbounds %S.C.CXType, ptr %a90, i32 0, i32 0 + %t111 = load i32, ptr %t110 + %t112 = icmp eq i32 %t111, 2 + br label %logic.from9051 +logic.from9051: + br i1 %t112, label %logic.end9053, label %logic.rhs9052 +logic.rhs9052: + %t113 = getelementptr inbounds %S.C.CXType, ptr %a90, i32 0, i32 0 + %t114 = load i32, ptr %t113 + %t115 = icmp eq i32 %t114, 111 + br label %logic.rend9054 +logic.rend9054: + br label %logic.end9053 +logic.end9053: + %t116 = phi i1 [ true, %logic.from9051 ], [ %t115, %logic.rend9054 ] + br label %logic.from9055 +logic.from9055: + br i1 %t116, label %logic.end9057, label %logic.rhs9056 +logic.rhs9056: + %t117 = getelementptr inbounds %S.C.CXType, ptr %a90, i32 0, i32 0 + %t118 = load i32, ptr %t117 + %t119 = icmp eq i32 %t118, 110 + br label %logic.rend9058 +logic.rend9058: + br label %logic.end9057 +logic.end9057: + %t120 = phi i1 [ true, %logic.from9055 ], [ %t119, %logic.rend9058 ] + br i1 %t120, label %then9059, label %endif9061 +then9059: + %t121 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6297, i64 3, i64 0 }) + %t122 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t121) + store %S.ast.Type %t121, ptr %a123 + call void @finch.drop.S_ast_Type(ptr %a123) + ret %S.cimport.Mapped %t122 +endif9061: + %t124 = load ptr, ptr %a1 + %t125 = load %S.C.CXType, ptr %a90 + %t126 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t124, %S.C.CXType %t125, i1 false, i1 false) + store %S.cimport.Mapped %t126, ptr %a127 + %t128 = getelementptr inbounds %S.cimport.Mapped, ptr %a127, i32 0, i32 2 + %t129 = load i1, ptr %t128 + %t130 = xor i1 %t129, true + br label %logic.from9062 +logic.from9062: + br i1 %t130, label %logic.end9064, label %logic.rhs9063 +logic.rhs9063: + %t131 = getelementptr inbounds %S.cimport.Mapped, ptr %a127, i32 0, i32 0 + %t132 = getelementptr inbounds %S.ast.Type, ptr %t131, i32 0, i32 0 + %t133 = load { ptr, i64, i64 }, ptr %t132 + store { ptr, i64, i64 } %t133, ptr %a134 + store { ptr, i64, i64 } { ptr @.str.6298, 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.rend9065 +logic.rend9065: + br label %logic.end9064 +logic.end9064: + %t138 = phi i1 [ true, %logic.from9062 ], [ %t137, %logic.rend9065 ] + br label %logic.from9066 +logic.from9066: + br i1 %t138, label %logic.end9068, label %logic.rhs9067 +logic.rhs9067: + %t139 = getelementptr inbounds %S.cimport.Mapped, ptr %a127, i32 0, i32 0 + %t140 = getelementptr inbounds %S.ast.Type, ptr %t139, i32 0, i32 0 + %t141 = load { ptr, i64, i64 }, ptr %t140 + store { ptr, i64, i64 } %t141, ptr %a142 + store { ptr, i64, i64 } { ptr @.str.6299, i64 5, i64 0 }, ptr %a143 + %t144 = call i32 @finch_str_eq(ptr %a142, ptr %a143) + %t145 = icmp ne i32 %t144, 0 + br label %logic.rend9069 +logic.rend9069: + br label %logic.end9068 +logic.end9068: + %t146 = phi i1 [ true, %logic.from9066 ], [ %t145, %logic.rend9069 ] + br i1 %t146, label %then9070, label %endif9072 +then9070: + %t147 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6300, i64 3, i64 0 }) + %t148 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t147) + store %S.ast.Type %t147, ptr %a149 + call void @finch.drop.S_ast_Type(ptr %a149) + call void @finch.drop.S_cimport_Mapped(ptr %a127) + ret %S.cimport.Mapped %t148 +endif9072: + %t150 = getelementptr inbounds %S.cimport.Mapped, ptr %a127, i32 0, i32 0 + %t151 = load %S.ast.Type, ptr %t150 + %t152 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t151) + %t153 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t152) + store %S.ast.Type %t152, ptr %a154 + call void @finch.drop.S_ast_Type(ptr %a154) + call void @finch.drop.S_cimport_Mapped(ptr %a127) + ret %S.cimport.Mapped %t153 +endif9032: + %t155 = load i32, ptr %a16 + %t156 = icmp eq i32 %t155, 105 + br i1 %t156, label %then9073, label %endif9075 +then9073: + %t158 = load %S.C.CXType, ptr %a9 + store %S.C.CXType %t158, ptr %a159 + call void @clang_getTypeDeclaration(ptr sret(%S.C.CXCursor) align 16 %a157, ptr %a159) + %t160 = load %S.C.CXCursor, ptr %a157 + store %S.C.CXCursor %t160, ptr %a161 + %t162 = call i32 @clang_getCursorKind(ptr %a161) + %t163 = icmp eq i32 %t162, 3 + br i1 %t163, label %then9076, label %endif9078 +then9076: + %t164 = call %S.cimport.Mapped @finch.cimport.no({ ptr, i64, i64 } { ptr @.str.6301, i64 23, i64 0 }) + ret %S.cimport.Mapped %t164 +endif9078: + %t165 = load ptr, ptr %a1 + %t166 = load %S.C.CXType, ptr %a9 + %t167 = call { ptr, i64, i64 } @finch.cimport.defineRecord(ptr %t165, %S.C.CXType %t166) + store { ptr, i64, i64 } %t167, ptr %a168 + %t169 = getelementptr inbounds { ptr, i64, i64 }, ptr %a168, i32 0, i32 1 + %t170 = load i64, ptr %t169 + %t171 = icmp eq i64 %t170, 0 + br i1 %t171, label %then9079, label %endif9081 +then9079: + %t172 = call %S.cimport.Mapped @finch.cimport.no({ ptr, i64, i64 } { ptr @.str.6302, i64 36, i64 0 }) + call void @finch_str_drop(ptr %a168) + ret %S.cimport.Mapped %t172 +endif9081: + %t173 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.6303, i64 5, i64 0 }, 0 + %t174 = load { ptr, i64, i64 }, ptr %a168 + store { ptr, i64, i64 } %t174, ptr %a175 + call void @finch_str_copy(ptr %a176, ptr %a175) + %t177 = load { ptr, i64, i64 }, ptr %a176 + %t178 = insertvalue %S.ast.Type %t173, { ptr, i64, i64 } %t177, 2 + %t179 = insertvalue %S.ast.Type %t178, { ptr, i64, i64 } { ptr @.str.6304, i64 1, i64 0 }, 3 + %t180 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t179) + store %S.ast.Type %t179, ptr %a181 + call void @finch.drop.S_ast_Type(ptr %a181) + call void @finch_str_drop(ptr %a168) + ret %S.cimport.Mapped %t180 +endif9075: + %t182 = load i32, ptr %a16 + %t183 = icmp eq i32 %t182, 112 + br i1 %t183, label %then9082, label %endif9084 +then9082: + %t184 = load ptr, ptr %a1 + %t186 = load %S.C.CXType, ptr %a9 + store %S.C.CXType %t186, ptr %a187 + call void @clang_getArrayElementType(ptr sret(%S.C.CXType) align 16 %a185, ptr %a187) + %t188 = load %S.C.CXType, ptr %a185 + %t189 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t184, %S.C.CXType %t188, i1 false, i1 false) + store %S.cimport.Mapped %t189, ptr %a190 + %t191 = getelementptr inbounds %S.cimport.Mapped, ptr %a190, i32 0, i32 2 + %t192 = load i1, ptr %t191 + %t193 = xor i1 %t192, true + br i1 %t193, label %then9085, label %endif9087 +then9085: + %t194 = load %S.cimport.Mapped, ptr %a190 ret %S.cimport.Mapped %t194 -endif8601: - %t195 = load %S.C.CXType, ptr %a9 - store %S.C.CXType %t195, ptr %a196 - %t197 = call [2 x i64] @clang_getTypeSpelling(ptr %a196) - store [2 x 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.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.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) - ret %S.cimport.Mapped %t209 +endif9087: + %t195 = getelementptr inbounds %S.cimport.Mapped, ptr %a190, i32 0, i32 0 + %t196 = load %S.ast.Type, ptr %t195 + %t197 = load %S.C.CXType, ptr %a9 + store %S.C.CXType %t197, ptr %a198 + %t199 = call i64 @clang_getArraySize(ptr %a198) + %t200 = call %S.ast.Type @finch.cimport.fixed(%S.ast.Type %t196, i64 %t199) + %t201 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t200) + store %S.ast.Type %t200, ptr %a202 + call void @finch.drop.S_ast_Type(ptr %a202) + call void @finch.drop.S_cimport_Mapped(ptr %a190) + ret %S.cimport.Mapped %t201 +endif9084: + %t203 = load i32, ptr %a16 + %t204 = icmp eq i32 %t203, 23 + br i1 %t204, label %then9088, label %endif9090 +then9088: + %t205 = call %S.cimport.Mapped @finch.cimport.no({ ptr, i64, i64 } { ptr @.str.6305, i64 16, i64 0 }) + ret %S.cimport.Mapped %t205 +endif9090: + %t206 = load %S.C.CXType, ptr %a9 + store %S.C.CXType %t206, ptr %a207 + %t208 = call [2 x i64] @clang_getTypeSpelling(ptr %a207) + store [2 x i64] %t208, ptr %a209 + %t210 = load %S.C.CXString, ptr %a209 + %t211 = call { ptr, i64, i64 } @finch.cimport.text(%S.C.CXString %t210) + store { ptr, i64, i64 } { ptr @.str.6306, i64 17, i64 0 }, ptr %a213 + store { ptr, i64, i64 } %t211, ptr %a214 + call void @finch_str_concat(ptr %a212, ptr %a213, ptr %a214) + store { ptr, i64, i64 } %t211, ptr %a215 + call void @finch_str_drop(ptr %a215) + %t216 = load { ptr, i64, i64 }, ptr %a212 + store { ptr, i64, i64 } %t216, ptr %a218 + store { ptr, i64, i64 } { ptr @.str.6307, i64 1, i64 0 }, ptr %a219 + call void @finch_str_concat(ptr %a217, ptr %a218, ptr %a219) + store { ptr, i64, i64 } %t216, ptr %a220 + call void @finch_str_drop(ptr %a220) + %t221 = load { ptr, i64, i64 }, ptr %a217 + %t222 = call %S.cimport.Mapped @finch.cimport.no({ ptr, i64, i64 } %t221) + store { ptr, i64, i64 } %t221, ptr %a223 + call void @finch_str_drop(ptr %a223) + ret %S.cimport.Mapped %t222 } define internal %S.cimport.Number @finch.cimport.parseInt({ ptr, i64, i64 } %p0) { @@ -78934,17 +95050,20 @@ entry: %a17 = alloca { ptr, i64, i64 }, align 16 %a22 = alloca { ptr, i64, i64 }, align 16 %a23 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca i64, align 16 - %a45 = alloca i1, align 16 - %a46 = alloca i64, align 16 - %a58 = alloca i8, align 16 - %a59 = alloca i64, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 + %a28 = alloca { ptr, i64, i64 }, align 16 + %a41 = alloca { ptr, i64, i64 }, align 16 + %a42 = alloca { ptr, i64, i64 }, align 16 + %a47 = alloca { ptr, i64, i64 }, align 16 + %a48 = alloca i64, align 16 + %a49 = alloca i1, align 16 + %a50 = alloca i64, align 16 + %a62 = alloca i8, align 16 + %a63 = alloca i64, align 16 + %a107 = alloca { ptr, i64, i64 }, align 16 + %a108 = alloca { ptr, i64, i64 }, align 16 + %a116 = alloca { ptr, i64, i64 }, align 16 + %a118 = alloca { ptr, i64, i64 }, align 16 + %a121 = 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 @@ -78954,258 +95073,258 @@ 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.6086, i64 2, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.6309, 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.from8602 -logic.from8602: - br i1 %t13, label %logic.end8604, label %logic.rhs8603 -logic.rhs8603: + br label %logic.from9091 +logic.from9091: + br i1 %t13, label %logic.end9093, label %logic.rhs9092 +logic.rhs9092: %t14 = load { ptr, i64, i64 }, ptr %a6 store { ptr, i64, i64 } %t14, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.6088, i64 2, i64 0 }, ptr %a17 + store { ptr, i64, i64 } { ptr @.str.6311, 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.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: + br label %logic.rend9094 +logic.rend9094: + br label %logic.end9093 +logic.end9093: + %t20 = phi i1 [ true, %logic.from9091 ], [ %t19, %logic.rend9094 ] + br i1 %t20, label %then9095, label %else9096 +then9095: 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.6089, i64 327) + call void @finch_str_sub(ptr %a23, ptr %a22, i64 2, i64 %t25, ptr @.str.6312, i64 331) %t26 = load { ptr, i64, i64 }, ptr %a23 + %t27 = load { ptr, i64, i64 }, ptr %a6 store { ptr, i64, i64 } %t26, ptr %a6 - 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.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 %range8612, label %inrange8613 -range8612: - call void @finch_panic_index(ptr @.str.6090, i64 328, i64 0, i64 %t31) + store { ptr, i64, i64 } %t27, ptr %a28 + call void @finch_str_drop(ptr %a28) + br label %endif9097 +else9096: + %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 + %t30 = load i64, ptr %t29 + %t31 = icmp sgt i64 %t30, 1 + br label %logic.from9098 +logic.from9098: + br i1 %t31, label %logic.rhs9099, label %logic.end9100 +logic.rhs9099: + %t32 = load { ptr, i64, i64 }, ptr %a6 + %t33 = extractvalue { ptr, i64, i64 } %t32, 1 + %t34 = icmp uge i64 0, %t33 + br i1 %t34, label %range9101, label %inrange9102 +range9101: + call void @finch_panic_index(ptr @.str.6313, i64 332, i64 0, i64 %t33) unreachable -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.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: +inrange9102: + %t35 = extractvalue { ptr, i64, i64 } %t32, 0 + %t36 = getelementptr inbounds i8, ptr %t35, i64 0 + %t37 = load i8, ptr %t36 + %t38 = icmp eq i8 %t37, 48 + br label %logic.rend9103 +logic.rend9103: + br label %logic.end9100 +logic.end9100: + %t39 = phi i1 [ false, %logic.from9098 ], [ %t38, %logic.rend9103 ] + br i1 %t39, label %then9104, label %endif9106 +then9104: 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.6091, i64 330) - %t43 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t43, ptr %a6 - 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.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.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 %range8621, label %inrange8622 -range8621: - call void @finch_panic_index(ptr @.str.6092, i64 336, i64 %t51, i64 %t53) + %t40 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t40, ptr %a41 + %t43 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 + %t44 = load i64, ptr %t43 + call void @finch_str_sub(ptr %a42, ptr %a41, i64 1, i64 %t44, ptr @.str.6314, i64 334) + %t45 = load { ptr, i64, i64 }, ptr %a42 + %t46 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t45, ptr %a6 + store { ptr, i64, i64 } %t46, ptr %a47 + call void @finch_str_drop(ptr %a47) + br label %endif9106 +endif9106: + br label %endif9097 +endif9097: + store i64 0, ptr %a48 + store i1 false, ptr %a49 + store i64 0, ptr %a50 + br label %while.cond9107 +while.cond9107: + %t51 = load i64, ptr %a50 + %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 + %t53 = load i64, ptr %t52 + %t54 = icmp slt i64 %t51, %t53 + br i1 %t54, label %while.body9108, label %while.end9109 +while.body9108: + %t55 = load i64, ptr %a50 + %t56 = load { ptr, i64, i64 }, ptr %a6 + %t57 = extractvalue { ptr, i64, i64 } %t56, 1 + %t58 = icmp uge i64 %t55, %t57 + br i1 %t58, label %range9110, label %inrange9111 +range9110: + call void @finch_panic_index(ptr @.str.6315, i64 340, i64 %t55, i64 %t57) unreachable -inrange8622: - %t55 = extractvalue { ptr, i64, i64 } %t52, 0 - %t56 = getelementptr inbounds i8, ptr %t55, i64 %t51 - %t57 = load i8, ptr %t56 - store i8 %t57, ptr %a58 - store i64 99, ptr %a59 - %t60 = load i8, ptr %a58 - %t61 = icmp uge i8 %t60, 48 - 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.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 %endif8629 -else8628: - %t69 = load i8, ptr %a58 - %t70 = icmp uge i8 %t69, 97 - 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.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 %endif8636 -else8635: - %t79 = load i8, ptr %a58 - %t80 = icmp uge i8 %t79, 65 - 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.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 %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 %then8644, label %endif8646 -then8644: - br label %while.end8620 -endif8646: - %t92 = load i64, ptr %a44 - %t93 = load i64, ptr %a7 - %t94 = mul i64 %t92, %t93 - %t95 = load i64, ptr %a59 - %t96 = add i64 %t94, %t95 - store i64 %t96, ptr %a44 - store i1 true, ptr %a45 - %t97 = load i64, ptr %a46 - %t98 = add i64 %t97, 1 - store i64 %t98, ptr %a46 - 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.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 %range8650, label %inrange8651 -range8650: - call void @finch_panic_index(ptr @.str.6095, i64 354, i64 %t105, i64 %t107) +inrange9111: + %t59 = extractvalue { ptr, i64, i64 } %t56, 0 + %t60 = getelementptr inbounds i8, ptr %t59, i64 %t55 + %t61 = load i8, ptr %t60 + store i8 %t61, ptr %a62 + store i64 99, ptr %a63 + %t64 = load i8, ptr %a62 + %t65 = icmp uge i8 %t64, 48 + br label %logic.from9112 +logic.from9112: + br i1 %t65, label %logic.rhs9113, label %logic.end9114 +logic.rhs9113: + %t66 = load i8, ptr %a62 + %t67 = icmp ule i8 %t66, 57 + br label %logic.rend9115 +logic.rend9115: + br label %logic.end9114 +logic.end9114: + %t68 = phi i1 [ false, %logic.from9112 ], [ %t67, %logic.rend9115 ] + br i1 %t68, label %then9116, label %else9117 +then9116: + %t69 = load i8, ptr %a62 + %t70 = zext i8 %t69 to i64 + %t71 = zext i8 48 to i64 + %t72 = sub i64 %t70, %t71 + store i64 %t72, ptr %a63 + br label %endif9118 +else9117: + %t73 = load i8, ptr %a62 + %t74 = icmp uge i8 %t73, 97 + br label %logic.from9119 +logic.from9119: + br i1 %t74, label %logic.rhs9120, label %logic.end9121 +logic.rhs9120: + %t75 = load i8, ptr %a62 + %t76 = icmp ule i8 %t75, 102 + br label %logic.rend9122 +logic.rend9122: + br label %logic.end9121 +logic.end9121: + %t77 = phi i1 [ false, %logic.from9119 ], [ %t76, %logic.rend9122 ] + br i1 %t77, label %then9123, label %else9124 +then9123: + %t78 = load i8, ptr %a62 + %t79 = zext i8 %t78 to i64 + %t80 = zext i8 97 to i64 + %t81 = sub i64 %t79, %t80 + %t82 = add i64 %t81, 10 + store i64 %t82, ptr %a63 + br label %endif9125 +else9124: + %t83 = load i8, ptr %a62 + %t84 = icmp uge i8 %t83, 65 + br label %logic.from9126 +logic.from9126: + br i1 %t84, label %logic.rhs9127, label %logic.end9128 +logic.rhs9127: + %t85 = load i8, ptr %a62 + %t86 = icmp ule i8 %t85, 70 + br label %logic.rend9129 +logic.rend9129: + br label %logic.end9128 +logic.end9128: + %t87 = phi i1 [ false, %logic.from9126 ], [ %t86, %logic.rend9129 ] + br i1 %t87, label %then9130, label %endif9132 +then9130: + %t88 = load i8, ptr %a62 + %t89 = zext i8 %t88 to i64 + %t90 = zext i8 65 to i64 + %t91 = sub i64 %t89, %t90 + %t92 = add i64 %t91, 10 + store i64 %t92, ptr %a63 + br label %endif9132 +endif9132: + br label %endif9125 +endif9125: + br label %endif9118 +endif9118: + %t93 = load i64, ptr %a63 + %t94 = load i64, ptr %a7 + %t95 = icmp sge i64 %t93, %t94 + br i1 %t95, label %then9133, label %endif9135 +then9133: + br label %while.end9109 +endif9135: + %t96 = load i64, ptr %a48 + %t97 = load i64, ptr %a7 + %t98 = mul i64 %t96, %t97 + %t99 = load i64, ptr %a63 + %t100 = add i64 %t98, %t99 + store i64 %t100, ptr %a48 + store i1 true, ptr %a49 + %t101 = load i64, ptr %a50 + %t102 = add i64 %t101, 1 + store i64 %t102, ptr %a50 + br label %while.cond9107 +while.end9109: + br label %while.cond9136 +while.cond9136: + %t103 = load i64, ptr %a50 + %t104 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 + %t105 = load i64, ptr %t104 + %t106 = icmp slt i64 %t103, %t105 + br i1 %t106, label %while.body9137, label %while.end9138 +while.body9137: + store { ptr, i64, i64 } { ptr @.str.6316, i64 4, i64 0 }, ptr %a107 + %t109 = load i64, ptr %a50 + %t110 = load { ptr, i64, i64 }, ptr %a6 + %t111 = extractvalue { ptr, i64, i64 } %t110, 1 + %t112 = icmp uge i64 %t109, %t111 + br i1 %t112, label %range9139, label %inrange9140 +range9139: + call void @finch_panic_index(ptr @.str.6318, i64 358, i64 %t109, i64 %t111) unreachable -inrange8651: - %t109 = extractvalue { ptr, i64, i64 } %t106, 0 - %t110 = getelementptr inbounds i8, ptr %t109, i64 %t105 - %t111 = load i8, ptr %t110 - call void @finch_str_from_char(ptr %a112, i8 signext %t111) - %t113 = load { ptr, i64, i64 }, ptr %a112 - store { ptr, i64, i64 } %t113, ptr %a114 - %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 %then8652, label %endif8654 -then8652: +inrange9140: + %t113 = extractvalue { ptr, i64, i64 } %t110, 0 + %t114 = getelementptr inbounds i8, ptr %t113, i64 %t109 + %t115 = load i8, ptr %t114 + call void @finch_str_from_char(ptr %a116, i8 signext %t115) + %t117 = load { ptr, i64, i64 }, ptr %a116 + store { ptr, i64, i64 } %t117, ptr %a118 + %t119 = call i64 @finch_str_find(ptr %a107, ptr %a118) + %t120 = icmp sge i64 %t119, 0 + store { ptr, i64, i64 } %t117, ptr %a121 + call void @finch_str_drop(ptr %a121) + %t122 = xor i1 %t120, true + br i1 %t122, label %then9141, label %endif9143 +then9141: + call void @finch_str_drop(ptr %a6) ret %S.cimport.Number zeroinitializer -endif8654: - %t118 = load i64, ptr %a46 - %t119 = add i64 %t118, 1 - store i64 %t119, ptr %a46 - br label %while.cond8647 -while.end8649: - %t120 = load i1, ptr %a45 - %t121 = xor i1 %t120, true - 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.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: +endif9143: + %t123 = load i64, ptr %a50 + %t124 = add i64 %t123, 1 + store i64 %t124, ptr %a50 + br label %while.cond9136 +while.end9138: + %t125 = load i1, ptr %a49 + %t126 = xor i1 %t125, true + br label %logic.from9144 +logic.from9144: + br i1 %t126, label %logic.rhs9145, label %logic.end9146 +logic.rhs9145: + %t127 = load i64, ptr %a7 + %t128 = icmp ne i64 %t127, 8 + br label %logic.rend9147 +logic.rend9147: + br label %logic.end9146 +logic.end9146: + %t129 = phi i1 [ false, %logic.from9144 ], [ %t128, %logic.rend9147 ] + br i1 %t129, label %then9148, label %endif9150 +then9148: + call void @finch_str_drop(ptr %a6) ret %S.cimport.Number zeroinitializer -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 - %t128 = insertvalue %S.cimport.Number %t127, i1 true, 1 - ret %S.cimport.Number %t128 -} - -define internal void @finch.copy.S_cimport_Number(ptr %dst, ptr %src) { -entry: - - %t1 = load %S.cimport.Number, ptr %src - store %S.cimport.Number %t1, ptr %dst - %t2 = getelementptr inbounds %S.cimport.Number, ptr %dst, i32 0, i32 0 - %t3 = getelementptr inbounds %S.cimport.Number, ptr %src, i32 0, i32 0 - call void @finch.copy.S_cimport_CConst(ptr %t2, ptr %t3) - ret void +endif9150: + %t130 = load i64, ptr %a48 + %t131 = insertvalue %S.cimport.CConst zeroinitializer, i64 %t130, 1 + %t132 = insertvalue %S.cimport.Number zeroinitializer, %S.cimport.CConst %t131, 0 + %t133 = insertvalue %S.cimport.Number %t132, i1 true, 1 + call void @finch_str_drop(ptr %a6) + ret %S.cimport.Number %t133 } define internal %S.cimport.Number @finch.cimport.macroValue(ptr %p0, %S.C.CXCursor %p1) { @@ -79226,55 +95345,58 @@ entry: %a63 = alloca { ptr, i64, i64 }, align 16 %a76 = alloca { ptr, i64, i64 }, align 16 %a77 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca i1, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 + %a87 = alloca { ptr, i64, i64 }, align 16 + %a95 = alloca { ptr, i64, i64 }, align 16 + %a96 = alloca i1, align 16 + %a106 = alloca { ptr, i64, i64 }, align 16 + %a107 = alloca { ptr, i64, i64 }, align 16 + %a117 = alloca { ptr, i64, i64 }, align 16 %a127 = 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 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a170 = 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 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca i1, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 + %a128 = alloca { ptr, i64, i64 }, align 16 + %a130 = 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 + %a168 = 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 + %a180 = alloca { ptr, i64, i64 }, align 16 + %a181 = alloca { ptr, i64, i64 }, align 16 + %a182 = alloca { ptr, i64, i64 }, align 16 + %a187 = alloca i1, align 16 %a190 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 + %a191 = alloca { ptr, i64, i64 }, align 16 + %a193 = alloca { ptr, i64, i64 }, align 16 + %a197 = alloca { ptr, i64, i64 }, align 16 + %a198 = alloca { ptr, i64, i64 }, align 16 + %a208 = alloca { ptr, i64, i64 }, align 16 + %a210 = alloca { ptr, i64, i64 }, align 16 %a213 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca double, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca double, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca %S.cimport.Number, align 16 - %a255 = alloca %S.cimport.Number, align 16 - %a256 = alloca %S.cimport.Number, align 16 + %a216 = alloca { ptr, i64, i64 }, align 16 + %a217 = alloca { ptr, i64, i64 }, align 16 + %a223 = alloca { ptr, i64, i64 }, align 16 + %a225 = alloca { ptr, i64, i64 }, align 16 + %a226 = alloca double, align 16 + %a227 = alloca { ptr, i64, i64 }, align 16 + %a232 = alloca { ptr, i64, i64 }, align 16 + %a233 = alloca double, align 16 + %a241 = alloca { ptr, i64, i64 }, align 16 + %a242 = alloca { ptr, i64, i64 }, align 16 + %a249 = alloca %S.cimport.Number, align 16 store ptr %p0, ptr %a1 store %S.C.CXCursor %p1, ptr %a2 store ptr null, ptr %a3 store i32 0, ptr %a4 %t5 = load ptr, ptr %a1 %t6 = icmp eq ptr %t5, null - br i1 %t6, label %panic8662, label %ok8663 -panic8662: - call void @finch_panic(ptr @.str.6096, i64 369, ptr @.str.6097) + br i1 %t6, label %panic9151, label %ok9152 +panic9151: + call void @finch_panic(ptr @.str.6319, i64 373, ptr @.str.6320) unreachable -ok8663: +ok9152: %t7 = getelementptr inbounds %S.cimport.Importer, ptr %t5, i32 0, i32 1 %t8 = load ptr, ptr %t7 %t10 = load %S.C.CXCursor, ptr %a2 @@ -79287,12 +95409,12 @@ ok8663: %t15 = load i32, ptr %a4 %t16 = zext i32 %t15 to i64 store i64 1, ptr %a17 - br label %for.cond8664 -for.cond8664: + br label %for.cond9153 +for.cond9153: %t18 = load i64, ptr %a17 %t19 = icmp slt i64 %t18, %t16 - br i1 %t19, label %for.body8665, label %for.end8667 -for.body8665: + br i1 %t19, label %for.body9154, label %for.end9156 +for.body9154: %t20 = load i64, ptr %a17 %t21 = load ptr, ptr %a3 %t22 = getelementptr inbounds %S.C.CXToken, ptr %t21, i64 %t20 @@ -79300,18 +95422,18 @@ for.body8665: store %S.C.CXToken %t23, ptr %a24 %t25 = call i32 @clang_getTokenKind(ptr %a24) %t26 = icmp eq i32 %t25, 4 - br i1 %t26, label %then8668, label %endif8670 -then8668: - br label %for.step8666 -endif8670: + br i1 %t26, label %then9157, label %endif9159 +then9157: + br label %for.step9155 +endif9159: %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 %panic8671, label %ok8672 -panic8671: - call void @finch_panic(ptr @.str.6098, i64 375, ptr @.str.6099) + br i1 %t29, label %panic9160, label %ok9161 +panic9160: + call void @finch_panic(ptr @.str.6321, i64 379, ptr @.str.6322) unreachable -ok8672: +ok9161: %t30 = getelementptr inbounds %S.cimport.Importer, ptr %t28, i32 0, i32 1 %t31 = load ptr, ptr %t30 %t32 = load i64, ptr %a17 @@ -79330,416 +95452,436 @@ ok8672: %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.step8666 -for.step8666: + br label %for.step9155 +for.step9155: %t45 = load i64, ptr %a17 %t46 = add i64 %t45, 1 store i64 %t46, ptr %a17 - br label %for.cond8664 -for.end8667: + br label %for.cond9153 +for.end9156: %t47 = load ptr, ptr %a1 %t48 = icmp eq ptr %t47, null - br i1 %t48, label %panic8673, label %ok8674 -panic8673: - call void @finch_panic(ptr @.str.6100, i64 377, ptr @.str.6101) + br i1 %t48, label %panic9162, label %ok9163 +panic9162: + call void @finch_panic(ptr @.str.6323, i64 381, ptr @.str.6324) unreachable -ok8674: +ok9163: %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.cond8675 -while.cond8675: + br label %while.cond9164 +while.cond9164: %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.from8678 -logic.from8678: - br i1 %t55, label %logic.rhs8679, label %logic.end8680 -logic.rhs8679: + br label %logic.from9167 +logic.from9167: + br i1 %t55, label %logic.rhs9168, label %logic.end9169 +logic.rhs9168: %t56 = load { ptr, i64, i64 }, ptr %a14 %t57 = extractvalue { ptr, i64, i64 } %t56, 1 %t58 = icmp uge i64 0, %t57 - br i1 %t58, label %range8681, label %inrange8682 -range8681: - call void @finch_panic_index(ptr @.str.6102, i64 379, i64 0, i64 %t57) + br i1 %t58, label %range9170, label %inrange9171 +range9170: + call void @finch_panic_index(ptr @.str.6325, i64 383, i64 0, i64 %t57) unreachable -inrange8682: +inrange9171: %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.6103, i64 1, i64 0 }, ptr %a63 + store { ptr, i64, i64 } { ptr @.str.6326, 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.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: + br label %logic.rend9172 +logic.rend9172: + br label %logic.end9169 +logic.end9169: + %t66 = phi i1 [ false, %logic.from9167 ], [ %t65, %logic.rend9172 ] + br label %logic.from9173 +logic.from9173: + br i1 %t66, label %logic.rhs9174, label %logic.end9175 +logic.rhs9174: %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 %range8687, label %inrange8688 -range8687: - call void @finch_panic_index(ptr @.str.6104, i64 379, i64 %t69, i64 %t71) + br i1 %t72, label %range9176, label %inrange9177 +range9176: + call void @finch_panic_index(ptr @.str.6327, i64 383, i64 %t69, i64 %t71) unreachable -inrange8688: +inrange9177: %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.6105, i64 1, i64 0 }, ptr %a77 + store { ptr, i64, i64 } { ptr @.str.6328, 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.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: + br label %logic.rend9178 +logic.rend9178: + br label %logic.end9175 +logic.end9175: + %t80 = phi i1 [ false, %logic.from9173 ], [ %t79, %logic.rend9178 ] + br i1 %t80, label %while.body9165, label %while.end9166 +while.body9165: %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 %range8690, label %inrange8691 -range8690: - call void @finch_panic_index(ptr @.str.6106, i64 380, i64 0, i64 %t82) + br i1 %t83, label %range9179, label %inrange9180 +range9179: + call void @finch_panic_index(ptr @.str.6329, i64 384, i64 0, i64 %t82) unreachable -inrange8691: +inrange9180: %t84 = load ptr, ptr %a14 %t85 = getelementptr inbounds { ptr, i64, i64 }, ptr %t84, i64 0 %t86 = load { ptr, i64, i64 }, ptr %t85 call void @finch_arr_remove_gap(ptr %a14, i64 0, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %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 %panic8692, label %ok8693 -panic8692: - call void @finch_panic(ptr @.str.6107, i64 381, ptr @.str.6108) + store { ptr, i64, i64 } %t86, ptr %a87 + call void @finch_str_drop(ptr %a87) + %t88 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 + %t89 = load i64, ptr %t88 + %t90 = icmp eq i64 %t89, 0 + br i1 %t90, label %panic9181, label %ok9182 +panic9181: + call void @finch_panic(ptr @.str.6330, i64 385, ptr @.str.6331) unreachable -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.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.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 %range8697, label %inrange8698 -range8697: - call void @finch_panic_index(ptr @.str.6109, i64 384, i64 0, i64 %t99) +ok9182: + %t91 = sub i64 %t89, 1 + %t92 = load ptr, ptr %a14 + %t93 = getelementptr inbounds { ptr, i64, i64 }, ptr %t92, i64 %t91 + %t94 = load { ptr, i64, i64 }, ptr %t93 + store i64 %t91, ptr %t88 + store { ptr, i64, i64 } %t94, ptr %a95 + call void @finch_str_drop(ptr %a95) + br label %while.cond9164 +while.end9166: + store i1 false, ptr %a96 + %t97 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 + %t98 = load i64, ptr %t97 + %t99 = icmp eq i64 %t98, 2 + br label %logic.from9183 +logic.from9183: + br i1 %t99, label %logic.rhs9184, label %logic.end9185 +logic.rhs9184: + %t100 = load { ptr, i64, i64 }, ptr %a14 + %t101 = extractvalue { ptr, i64, i64 } %t100, 1 + %t102 = icmp uge i64 0, %t101 + br i1 %t102, label %range9186, label %inrange9187 +range9186: + call void @finch_panic_index(ptr @.str.6332, i64 388, i64 0, i64 %t101) unreachable -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.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.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 %range8703, label %inrange8704 -range8703: - call void @finch_panic_index(ptr @.str.6111, i64 386, i64 0, i64 %t110) +inrange9187: + %t103 = extractvalue { ptr, i64, i64 } %t100, 0 + %t104 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i64 0 + %t105 = load { ptr, i64, i64 }, ptr %t104 + store { ptr, i64, i64 } %t105, ptr %a106 + store { ptr, i64, i64 } { ptr @.str.6333, i64 1, i64 0 }, ptr %a107 + %t108 = call i32 @finch_str_eq(ptr %a106, ptr %a107) + %t109 = icmp ne i32 %t108, 0 + br label %logic.rend9188 +logic.rend9188: + br label %logic.end9185 +logic.end9185: + %t110 = phi i1 [ false, %logic.from9183 ], [ %t109, %logic.rend9188 ] + br i1 %t110, label %then9189, label %endif9191 +then9189: + store i1 true, ptr %a96 + %t111 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 + %t112 = load i64, ptr %t111 + %t113 = icmp uge i64 0, %t112 + br i1 %t113, label %range9192, label %inrange9193 +range9192: + call void @finch_panic_index(ptr @.str.6334, i64 390, i64 0, i64 %t112) unreachable -inrange8704: - %t112 = load ptr, ptr %a14 - %t113 = getelementptr inbounds { ptr, i64, i64 }, ptr %t112, i64 0 - %t114 = load { ptr, i64, i64 }, ptr %t113 +inrange9193: + %t114 = load ptr, ptr %a14 + %t115 = getelementptr inbounds { ptr, i64, i64 }, ptr %t114, i64 0 + %t116 = load { ptr, i64, i64 }, ptr %t115 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 %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 %then8705, label %endif8707 -then8705: + store { ptr, i64, i64 } %t116, ptr %a117 + call void @finch_str_drop(ptr %a117) + br label %endif9191 +endif9191: + %t118 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 + %t119 = load i64, ptr %t118 + %t120 = icmp ne i64 %t119, 1 + br i1 %t120, label %then9194, label %endif9196 +then9194: + call void @finch.drop.arr_str(ptr %a14) ret %S.cimport.Number zeroinitializer -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 %range8708, label %inrange8709 -range8708: - call void @finch_panic_index(ptr @.str.6112, i64 391, i64 0, i64 %t119) +endif9196: + %t121 = load { ptr, i64, i64 }, ptr %a14 + %t122 = extractvalue { ptr, i64, i64 } %t121, 1 + %t123 = icmp uge i64 0, %t122 + br i1 %t123, label %range9197, label %inrange9198 +range9197: + call void @finch_panic_index(ptr @.str.6335, i64 395, i64 0, i64 %t122) unreachable -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 - store { ptr, i64, i64 } %t123, ptr %a124 - call void @finch_str_copy(ptr %a125, ptr %a124) - %t126 = load { ptr, i64, i64 }, ptr %a125 +inrange9198: + %t124 = extractvalue { ptr, i64, i64 } %t121, 0 + %t125 = getelementptr inbounds { ptr, i64, i64 }, ptr %t124, i64 0 + %t126 = load { ptr, i64, i64 }, ptr %t125 store { ptr, i64, i64 } %t126, ptr %a127 - %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.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 %range8713, label %inrange8714 -range8713: - call void @finch_panic_index(ptr @.str.6113, i64 392, i64 0, i64 %t132) + call void @finch_str_copy(ptr %a128, ptr %a127) + %t129 = load { ptr, i64, i64 }, ptr %a128 + store { ptr, i64, i64 } %t129, ptr %a130 + %t131 = getelementptr inbounds { ptr, i64, i64 }, ptr %a130, i32 0, i32 1 + %t132 = load i64, ptr %t131 + %t133 = icmp eq i64 %t132, 0 + br label %logic.from9199 +logic.from9199: + br i1 %t133, label %logic.end9201, label %logic.rhs9200 +logic.rhs9200: + %t134 = load { ptr, i64, i64 }, ptr %a130 + %t135 = extractvalue { ptr, i64, i64 } %t134, 1 + %t136 = icmp uge i64 0, %t135 + br i1 %t136, label %range9202, label %inrange9203 +range9202: + call void @finch_panic_index(ptr @.str.6336, i64 396, i64 0, i64 %t135) unreachable -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.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 %range8718, label %inrange8719 -range8718: - call void @finch_panic_index(ptr @.str.6114, i64 392, i64 0, i64 %t139) +inrange9203: + %t137 = extractvalue { ptr, i64, i64 } %t134, 0 + %t138 = getelementptr inbounds i8, ptr %t137, i64 0 + %t139 = load i8, ptr %t138 + %t140 = icmp uge i8 %t139, 48 + br label %logic.from9204 +logic.from9204: + br i1 %t140, label %logic.rhs9205, label %logic.end9206 +logic.rhs9205: + %t141 = load { ptr, i64, i64 }, ptr %a130 + %t142 = extractvalue { ptr, i64, i64 } %t141, 1 + %t143 = icmp uge i64 0, %t142 + br i1 %t143, label %range9207, label %inrange9208 +range9207: + call void @finch_panic_index(ptr @.str.6337, i64 396, i64 0, i64 %t142) unreachable -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.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 %range8724, label %inrange8725 -range8724: - call void @finch_panic_index(ptr @.str.6115, i64 392, i64 0, i64 %t147) +inrange9208: + %t144 = extractvalue { ptr, i64, i64 } %t141, 0 + %t145 = getelementptr inbounds i8, ptr %t144, i64 0 + %t146 = load i8, ptr %t145 + %t147 = icmp ule i8 %t146, 57 + br label %logic.rend9209 +logic.rend9209: + br label %logic.end9206 +logic.end9206: + %t148 = phi i1 [ false, %logic.from9204 ], [ %t147, %logic.rend9209 ] + br label %logic.from9210 +logic.from9210: + br i1 %t148, label %logic.end9212, label %logic.rhs9211 +logic.rhs9211: + %t149 = load { ptr, i64, i64 }, ptr %a130 + %t150 = extractvalue { ptr, i64, i64 } %t149, 1 + %t151 = icmp uge i64 0, %t150 + br i1 %t151, label %range9213, label %inrange9214 +range9213: + call void @finch_panic_index(ptr @.str.6338, i64 396, i64 0, i64 %t150) unreachable -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.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.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: +inrange9214: + %t152 = extractvalue { ptr, i64, i64 } %t149, 0 + %t153 = getelementptr inbounds i8, ptr %t152, i64 0 + %t154 = load i8, ptr %t153 + %t155 = icmp eq i8 %t154, 46 + br label %logic.rend9215 +logic.rend9215: + br label %logic.end9212 +logic.end9212: + %t156 = phi i1 [ true, %logic.from9210 ], [ %t155, %logic.rend9215 ] + %t157 = xor i1 %t156, true + br label %logic.rend9216 +logic.rend9216: + br label %logic.end9201 +logic.end9201: + %t158 = phi i1 [ true, %logic.from9199 ], [ %t157, %logic.rend9216 ] + br i1 %t158, label %then9217, label %endif9219 +then9217: + call void @finch_str_drop(ptr %a130) + call void @finch.drop.arr_str(ptr %a14) ret %S.cimport.Number zeroinitializer -endif8730: - %t156 = load { ptr, i64, i64 }, ptr %a127 - store { ptr, i64, i64 } %t156, ptr %a157 - 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.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.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.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.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.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.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.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 %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 +endif9219: + %t159 = load { ptr, i64, i64 }, ptr %a130 + store { ptr, i64, i64 } %t159, ptr %a160 + store { ptr, i64, i64 } { ptr @.str.6340, i64 1, i64 0 }, ptr %a162 + %t163 = call i64 @finch_str_find(ptr %a160, ptr %a162) + %t164 = icmp sge i64 %t163, 0 + br label %logic.from9220 +logic.from9220: + br i1 %t164, label %logic.end9222, label %logic.rhs9221 +logic.rhs9221: + %t165 = load { ptr, i64, i64 }, ptr %a130 + store { ptr, i64, i64 } %t165, ptr %a166 + store { ptr, i64, i64 } { ptr @.str.6342, i64 1, i64 0 }, ptr %a168 + %t169 = call i64 @finch_str_find(ptr %a166, ptr %a168) + %t170 = icmp sge i64 %t169, 0 + br label %logic.rend9223 +logic.rend9223: + br label %logic.end9222 +logic.end9222: + %t171 = phi i1 [ true, %logic.from9220 ], [ %t170, %logic.rend9223 ] + br label %logic.from9224 +logic.from9224: + br i1 %t171, label %logic.end9226, label %logic.rhs9225 +logic.rhs9225: + %t172 = load { ptr, i64, i64 }, ptr %a130 + store { ptr, i64, i64 } %t172, ptr %a173 + store { ptr, i64, i64 } { ptr @.str.6344, i64 1, i64 0 }, ptr %a175 + %t176 = call i64 @finch_str_find(ptr %a173, ptr %a175) + %t177 = icmp sge i64 %t176, 0 + br label %logic.rend9227 +logic.rend9227: + br label %logic.end9226 +logic.end9226: + %t178 = phi i1 [ true, %logic.from9224 ], [ %t177, %logic.rend9227 ] + br label %logic.from9228 +logic.from9228: + br i1 %t178, label %logic.rhs9229, label %logic.end9230 +logic.rhs9229: + %t179 = load { ptr, i64, i64 }, ptr %a130 + store { ptr, i64, i64 } %t179, ptr %a180 + store { ptr, i64, i64 } { ptr @.str.6346, i64 2, i64 0 }, ptr %a182 + %t183 = call i32 @finch_str_starts(ptr %a180, ptr %a182) + %t184 = icmp ne i32 %t183, 0 + %t185 = xor i1 %t184, true + br label %logic.rend9231 +logic.rend9231: + br label %logic.end9230 +logic.end9230: + %t186 = phi i1 [ false, %logic.from9228 ], [ %t185, %logic.rend9231 ] + store i1 %t186, ptr %a187 + %t188 = load i1, ptr %a187 + br i1 %t188, label %then9232, label %endif9234 +then9232: + %t189 = load { ptr, i64, i64 }, ptr %a130 store { ptr, i64, i64 } %t189, ptr %a190 - 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.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 %range8752, label %inrange8753 -range8752: - call void @finch_panic_index(ptr @.str.6126, i64 398, i64 %t198, i64 %t200) + call void @finch_str_copy(ptr %a191, ptr %a190) + %t192 = load { ptr, i64, i64 }, ptr %a191 + store { ptr, i64, i64 } %t192, ptr %a193 + br label %while.cond9235 +while.cond9235: + %t194 = getelementptr inbounds { ptr, i64, i64 }, ptr %a193, i32 0, i32 1 + %t195 = load i64, ptr %t194 + %t196 = icmp sgt i64 %t195, 0 + br label %logic.from9238 +logic.from9238: + br i1 %t196, label %logic.rhs9239, label %logic.end9240 +logic.rhs9239: + store { ptr, i64, i64 } { ptr @.str.6347, i64 4, i64 0 }, ptr %a197 + %t199 = getelementptr inbounds { ptr, i64, i64 }, ptr %a193, i32 0, i32 1 + %t200 = load i64, ptr %t199 + %t201 = sub i64 %t200, 1 + %t202 = load { ptr, i64, i64 }, ptr %a193 + %t203 = extractvalue { ptr, i64, i64 } %t202, 1 + %t204 = icmp uge i64 %t201, %t203 + br i1 %t204, label %range9241, label %inrange9242 +range9241: + call void @finch_panic_index(ptr @.str.6349, i64 402, i64 %t201, i64 %t203) unreachable -inrange8753: - %t202 = extractvalue { ptr, i64, i64 } %t199, 0 - %t203 = getelementptr inbounds i8, ptr %t202, i64 %t198 - %t204 = load i8, ptr %t203 - call void @finch_str_from_char(ptr %a205, i8 signext %t204) - %t206 = load { ptr, i64, i64 }, ptr %a205 - 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.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.6127, i64 399) - %t217 = load { ptr, i64, i64 }, ptr %a213 - store { ptr, i64, i64 } %t217, ptr %a190 - 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 - store { ptr, i64, i64 } %t218, ptr %a221 - %t222 = call i32 @finch_str_try_float(ptr %a221, ptr %a220, ptr %a219) - %t223 = icmp eq i32 %t222, 0 - %t224 = load { ptr, i64, i64 }, ptr %a219 - %t225 = load double, ptr %a220 - br i1 %t223, label %or.failed8755, label %or.ok8756 -or.failed8755: - store { ptr, i64, i64 } %t224, ptr %a226 +inrange9242: + %t205 = extractvalue { ptr, i64, i64 } %t202, 0 + %t206 = getelementptr inbounds i8, ptr %t205, i64 %t201 + %t207 = load i8, ptr %t206 + call void @finch_str_from_char(ptr %a208, i8 signext %t207) + %t209 = load { ptr, i64, i64 }, ptr %a208 + store { ptr, i64, i64 } %t209, ptr %a210 + %t211 = call i64 @finch_str_find(ptr %a197, ptr %a210) + %t212 = icmp sge i64 %t211, 0 + store { ptr, i64, i64 } %t209, ptr %a213 + call void @finch_str_drop(ptr %a213) + br label %logic.rend9243 +logic.rend9243: + br label %logic.end9240 +logic.end9240: + %t214 = phi i1 [ false, %logic.from9238 ], [ %t212, %logic.rend9243 ] + br i1 %t214, label %while.body9236, label %while.end9237 +while.body9236: + %t215 = load { ptr, i64, i64 }, ptr %a193 + store { ptr, i64, i64 } %t215, ptr %a216 + %t218 = getelementptr inbounds { ptr, i64, i64 }, ptr %a193, i32 0, i32 1 + %t219 = load i64, ptr %t218 + %t220 = sub i64 %t219, 1 + call void @finch_str_sub(ptr %a217, ptr %a216, i64 0, i64 %t220, ptr @.str.6350, i64 403) + %t221 = load { ptr, i64, i64 }, ptr %a217 + %t222 = load { ptr, i64, i64 }, ptr %a193 + store { ptr, i64, i64 } %t221, ptr %a193 + store { ptr, i64, i64 } %t222, ptr %a223 + call void @finch_str_drop(ptr %a223) + br label %while.cond9235 +while.end9237: + %t224 = load { ptr, i64, i64 }, ptr %a193 + store { ptr, i64, i64 } zeroinitializer, ptr %a225 + store double 0.0, ptr %a226 + store { ptr, i64, i64 } %t224, ptr %a227 + %t228 = call i32 @finch_str_try_float(ptr %a227, ptr %a226, ptr %a225) + %t229 = icmp eq i32 %t228, 0 + %t230 = load { ptr, i64, i64 }, ptr %a225 + %t231 = load double, ptr %a226 + br i1 %t229, label %or.failed9244, label %or.ok9245 +or.failed9244: + store { ptr, i64, i64 } %t230, ptr %a232 + call void @finch_str_drop(ptr %a232) + call void @finch_str_drop(ptr %a193) + call void @finch_str_drop(ptr %a130) + call void @finch.drop.arr_str(ptr %a14) ret %S.cimport.Number zeroinitializer -or.ok8756: - store double %t225, ptr %a227 - %t228 = load i1, ptr %a94 - 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 %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 - %t234 = load { ptr, i64, i64 }, ptr %a190 - 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.cimport.CConst %t233, { ptr, i64, i64 } %t237, 3 - %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 -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.from8760 -logic.from8760: - br i1 %t245, label %logic.rhs8761, label %logic.end8762 -logic.rhs8761: - %t246 = load i1, ptr %a94 - 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 - %t251 = sub i64 0, %t250 - %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 %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) - %t257 = load %S.cimport.Number, ptr %a256 - ret %S.cimport.Number %t257 +or.ok9245: + store double %t231, ptr %a233 + %t234 = load i1, ptr %a96 + br i1 %t234, label %then9246, label %endif9248 +then9246: + %t235 = load double, ptr %a233 + %t236 = fsub double 0.0, %t235 + store double %t236, ptr %a233 + br label %endif9248 +endif9248: + %t237 = insertvalue %S.cimport.CConst zeroinitializer, i1 true, 0 + %t238 = load double, ptr %a233 + %t239 = insertvalue %S.cimport.CConst %t237, double %t238, 2 + %t240 = load { ptr, i64, i64 }, ptr %a193 + store { ptr, i64, i64 } %t240, ptr %a241 + call void @finch_str_copy(ptr %a242, ptr %a241) + %t243 = load { ptr, i64, i64 }, ptr %a242 + %t244 = insertvalue %S.cimport.CConst %t239, { ptr, i64, i64 } %t243, 3 + %t245 = insertvalue %S.cimport.Number zeroinitializer, %S.cimport.CConst %t244, 0 + %t246 = insertvalue %S.cimport.Number %t245, i1 true, 1 + call void @finch_str_drop(ptr %a193) + call void @finch_str_drop(ptr %a130) + call void @finch.drop.arr_str(ptr %a14) + ret %S.cimport.Number %t246 +endif9234: + %t247 = load { ptr, i64, i64 }, ptr %a130 + %t248 = call %S.cimport.Number @finch.cimport.parseInt({ ptr, i64, i64 } %t247) + store %S.cimport.Number %t248, ptr %a249 + %t250 = getelementptr inbounds %S.cimport.Number, ptr %a249, i32 0, i32 1 + %t251 = load i1, ptr %t250 + br label %logic.from9249 +logic.from9249: + br i1 %t251, label %logic.rhs9250, label %logic.end9251 +logic.rhs9250: + %t252 = load i1, ptr %a96 + br label %logic.rend9252 +logic.rend9252: + br label %logic.end9251 +logic.end9251: + %t253 = phi i1 [ false, %logic.from9249 ], [ %t252, %logic.rend9252 ] + br i1 %t253, label %then9253, label %endif9255 +then9253: + %t254 = getelementptr inbounds %S.cimport.Number, ptr %a249, i32 0, i32 0 + %t255 = getelementptr inbounds %S.cimport.CConst, ptr %t254, i32 0, i32 1 + %t256 = load i64, ptr %t255 + %t257 = sub i64 0, %t256 + %t258 = getelementptr inbounds %S.cimport.Number, ptr %a249, i32 0, i32 0 + %t259 = getelementptr inbounds %S.cimport.CConst, ptr %t258, i32 0, i32 1 + store i64 %t257, ptr %t259 + br label %endif9255 +endif9255: + %t260 = load %S.cimport.Number, ptr %a249 + call void @finch_str_drop(ptr %a130) + call void @finch.drop.arr_str(ptr %a14) + ret %S.cimport.Number %t260 } define internal i32 @finch.cimport.visitTop(%S.C.CXCursor %p0, %S.C.CXCursor %p1, ptr %p2) { @@ -79768,6 +95910,14 @@ entry: ret i32 %t3 } +define internal void @finch.drop.S_cimport_Number(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.cimport.Number, ptr %a, i32 0, i32 0 + call void @finch.drop.S_cimport_CConst(ptr %t1) + ret void +} + define internal void @finch.cimport.visit(ptr %p0, %S.C.CXCursor %p1) { entry: %a1 = alloca ptr, align 16 @@ -79798,82 +95948,95 @@ entry: %a85 = alloca i32, align 16 %a95 = alloca { ptr, i64, i64 }, align 16 %a96 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca %S.cimport.CFunc, align 16 - %a123 = alloca %S.C.CXCursor, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca i32, align 16 - %a144 = alloca %S.cimport.CFunc, align 16 - %a145 = alloca %S.cimport.CFunc, align 16 - %a147 = alloca %S.C.CXType, align 16 - %a148 = alloca %S.C.CXType, align 16 - %a150 = alloca %S.C.CXCursor, align 16 - %a152 = alloca %S.C.CXType, align 16 + %a99 = alloca { ptr, i64, i64 }, align 16 + %a107 = alloca { ptr, i64, i64 }, align 16 + %a111 = alloca { ptr, i64, i64 }, align 16 + %a112 = alloca { ptr, i64, i64 }, align 16 + %a119 = alloca { ptr, i64, i64 }, align 16 + %a120 = alloca { ptr, i64, i64 }, align 16 + %a123 = alloca %S.cimport.CFunc, align 16 + %a125 = alloca %S.C.CXCursor, align 16 + %a130 = alloca { ptr, i64, i64 }, align 16 + %a137 = alloca { ptr, i64, i64 }, align 16 + %a138 = alloca i32, align 16 + %a148 = alloca %S.cimport.CFunc, align 16 + %a149 = alloca %S.cimport.CFunc, align 16 + %a152 = alloca %S.cimport.CFunc, align 16 + %a153 = alloca %S.C.CXType, align 16 %a154 = alloca %S.C.CXType, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca i32, align 16 - %a176 = alloca %S.cimport.CFunc, align 16 - %a177 = alloca %S.cimport.CFunc, align 16 - %a180 = alloca %S.C.CXType, align 16 - %a182 = alloca %S.C.CXType, align 16 - %a185 = alloca %S.cimport.Mapped, align 16 - %a191 = alloca %S.ast.Type, align 16 - %a192 = alloca %S.ast.Type, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca %S.C.CXType, align 16 - %a204 = alloca i64, align 16 - %a206 = alloca i64, align 16 - %a214 = alloca %S.C.CXType, align 16 - %a216 = alloca %S.C.CXType, align 16 - %a221 = alloca %S.cimport.Mapped, align 16 - %a228 = alloca %S.ast.Type, align 16 - %a229 = alloca %S.ast.Type, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca %S.C.CXType, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca i32, align 16 - %a265 = alloca %S.cimport.CFunc, align 16 - %a266 = alloca %S.cimport.CFunc, align 16 - %a271 = alloca %S.C.CXCursor, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca %S.C.CXType, align 16 - %a286 = alloca %S.C.CXCursor, align 16 - %a289 = alloca %S.cimport.Mapped, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca i32, align 16 - %a310 = alloca %S.ast.Type, align 16 - %a311 = alloca %S.ast.Type, align 16 - %a316 = alloca %S.C.CXCursor, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca { ptr, i64, i64 }, align 16 - %a326 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca %S.C.CXCursor, align 16 - %a334 = alloca [32 x i8], align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a351 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca i32, align 16 + %a156 = alloca %S.C.CXCursor, align 16 + %a158 = alloca %S.C.CXType, align 16 + %a160 = alloca %S.C.CXType, align 16 + %a166 = alloca { ptr, i64, i64 }, align 16 + %a173 = alloca { ptr, i64, i64 }, align 16 + %a174 = alloca i32, align 16 + %a184 = alloca %S.cimport.CFunc, align 16 + %a185 = alloca %S.cimport.CFunc, align 16 + %a188 = alloca %S.cimport.CFunc, align 16 + %a190 = alloca %S.C.CXType, align 16 + %a192 = alloca %S.C.CXType, align 16 + %a195 = alloca %S.cimport.Mapped, align 16 + %a201 = alloca %S.ast.Type, align 16 + %a202 = alloca %S.ast.Type, align 16 + %a205 = alloca %S.ast.Type, align 16 + %a209 = alloca { ptr, i64, i64 }, align 16 + %a210 = alloca { ptr, i64, i64 }, align 16 + %a213 = alloca { ptr, i64, i64 }, align 16 + %a215 = alloca %S.C.CXType, align 16 + %a218 = alloca i64, align 16 + %a220 = alloca i64, align 16 + %a228 = alloca %S.C.CXType, align 16 + %a230 = alloca %S.C.CXType, align 16 + %a235 = alloca %S.cimport.Mapped, align 16 + %a242 = alloca %S.ast.Type, align 16 + %a243 = alloca %S.ast.Type, align 16 + %a252 = alloca { ptr, i64, i64 }, align 16 + %a253 = alloca { ptr, i64, i64 }, align 16 + %a256 = alloca { ptr, i64, i64 }, align 16 + %a260 = alloca %S.C.CXType, align 16 + %a270 = alloca { ptr, i64, i64 }, align 16 + %a271 = alloca i32, align 16 + %a281 = alloca %S.cimport.CFunc, align 16 + %a282 = alloca %S.cimport.CFunc, align 16 + %a285 = alloca %S.cimport.CFunc, align 16 + %a289 = alloca %S.C.CXCursor, align 16 + %a297 = alloca { ptr, i64, i64 }, align 16 + %a302 = alloca %S.C.CXType, align 16 + %a304 = alloca %S.C.CXCursor, align 16 + %a307 = alloca %S.cimport.Mapped, align 16 + %a317 = alloca { ptr, i64, i64 }, align 16 + %a318 = alloca i32, align 16 + %a328 = alloca %S.ast.Type, align 16 + %a329 = alloca %S.ast.Type, align 16 + %a332 = alloca %S.ast.Type, align 16 + %a336 = alloca %S.C.CXCursor, align 16 + %a344 = alloca { ptr, i64, i64 }, align 16 + %a345 = alloca { ptr, i64, i64 }, align 16 + %a346 = alloca { ptr, i64, i64 }, align 16 + %a352 = alloca %S.C.CXCursor, align 16 + %a354 = alloca [32 x i8], align 16 + %a357 = alloca { ptr, i64, i64 }, align 16 %a362 = alloca { ptr, i64, i64 }, align 16 - %a363 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca %S.C.CXCursor, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca %S.C.CXCursor, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca i32, align 16 + %a371 = alloca { ptr, i64, i64 }, align 16 + %a372 = alloca i32, align 16 + %a382 = alloca { ptr, i64, i64 }, align 16 + %a383 = alloca { ptr, i64, i64 }, align 16 + %a386 = alloca { ptr, i64, i64 }, align 16 + %a390 = alloca %S.C.CXCursor, align 16 + %a400 = alloca { ptr, i64, i64 }, align 16 %a405 = alloca %S.C.CXCursor, align 16 - %a409 = alloca %S.C.CXCursor, align 16 - %a416 = alloca %S.cimport.Number, align 16 - %a424 = alloca { ptr, i64, i64 }, align 16 - %a436 = alloca { ptr, i64, i64 }, align 16 - %a437 = alloca i32, align 16 - %a447 = alloca %S.cimport.CConst, align 16 - %a448 = alloca %S.cimport.CConst, align 16 + %a413 = alloca { ptr, i64, i64 }, align 16 + %a414 = alloca i32, align 16 + %a425 = alloca %S.cimport.CConst, align 16 + %a429 = alloca %S.C.CXCursor, align 16 + %a433 = alloca %S.C.CXCursor, align 16 + %a440 = alloca %S.cimport.Number, align 16 + %a448 = alloca { ptr, i64, i64 }, align 16 + %a460 = alloca { ptr, i64, i64 }, align 16 + %a461 = alloca i32, align 16 + %a471 = alloca %S.cimport.CConst, align 16 + %a472 = alloca %S.cimport.CConst, align 16 + %a475 = alloca %S.cimport.CConst, align 16 store ptr %p0, ptr %a1 store %S.C.CXCursor %p1, ptr %a2 %t3 = load %S.C.CXCursor, ptr %a2 @@ -79889,8 +96052,8 @@ entry: store i32 %t12, ptr %a13 %t14 = load i32, ptr %a13 %t15 = icmp eq i32 %t14, 20 - br i1 %t15, label %then8767, label %else8768 -then8767: + br i1 %t15, label %then9256, label %else9257 +then9256: %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 %a19) @@ -79902,8 +96065,8 @@ then8767: %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 %then8770, label %endif8772 -then8770: + br i1 %t26, label %then9259, label %endif9261 +then9259: %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 %a29) @@ -79916,49 +96079,49 @@ then8770: store { ptr, i64, i64 } %t35, ptr %a36 %t37 = load ptr, ptr %a1 %t38 = icmp eq ptr %t37, null - br i1 %t38, label %panic8773, label %ok8774 -panic8773: - call void @finch_panic(ptr @.str.6128, i64 433, ptr @.str.6129) + br i1 %t38, label %panic9262, label %ok9263 +panic9262: + call void @finch_panic(ptr @.str.6351, i64 437, ptr @.str.6352) unreachable -ok8774: +ok9263: %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.from8775 -logic.from8775: - br i1 %t43, label %logic.rhs8776, label %logic.end8777 -logic.rhs8776: + br label %logic.from9264 +logic.from9264: + br i1 %t43, label %logic.rhs9265, label %logic.end9266 +logic.rhs9265: %t44 = load ptr, ptr %a1 %t45 = icmp eq ptr %t44, null - br i1 %t45, label %panic8778, label %ok8779 -panic8778: - call void @finch_panic(ptr @.str.6130, i64 433, ptr @.str.6131) + br i1 %t45, label %panic9267, label %ok9268 +panic9267: + call void @finch_panic(ptr @.str.6353, i64 437, ptr @.str.6354) unreachable -ok8779: +ok9268: %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 %panic8780, label %ok8781 -panic8780: - call void @finch_panic(ptr @.str.6132, i64 433, ptr @.str.6133) + br i1 %t49, label %panic9269, label %ok9270 +panic9269: + call void @finch_panic(ptr @.str.6355, i64 437, ptr @.str.6356) unreachable -ok8781: +ok9270: %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.missing8782, label %map.found8783 -map.missing8782: + br i1 %t54, label %map.missing9271, label %map.found9272 +map.missing9271: 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.6134, i64 433, ptr %a55) + call void @finch_map_missing(ptr @.str.6357, i64 437, ptr %a55) unreachable -map.found8783: +map.found9272: %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 @@ -79967,25 +96130,25 @@ map.found8783: 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.rend8784 -logic.rend8784: - br label %logic.end8777 -logic.end8777: - %t65 = phi i1 [ false, %logic.from8775 ], [ %t64, %logic.rend8784 ] + br label %logic.rend9273 +logic.rend9273: + br label %logic.end9266 +logic.end9266: + %t65 = phi i1 [ false, %logic.from9264 ], [ %t64, %logic.rend9273 ] store i1 %t65, ptr %a66 %t67 = load i1, ptr %a66 %t68 = xor i1 %t67, true - br label %logic.from8785 -logic.from8785: - br i1 %t68, label %logic.rhs8786, label %logic.end8787 -logic.rhs8786: + br label %logic.from9274 +logic.from9274: + br i1 %t68, label %logic.rhs9275, label %logic.end9276 +logic.rhs9275: %t69 = load ptr, ptr %a1 %t70 = icmp eq ptr %t69, null - br i1 %t70, label %panic8788, label %ok8789 -panic8788: - call void @finch_panic(ptr @.str.6135, i64 434, ptr @.str.6136) + br i1 %t70, label %panic9277, label %ok9278 +panic9277: + call void @finch_panic(ptr @.str.6358, i64 438, ptr @.str.6359) unreachable -ok8789: +ok9278: %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 @@ -79993,21 +96156,21 @@ ok8789: %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.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: + br label %logic.rend9279 +logic.rend9279: + br label %logic.end9276 +logic.end9276: + %t78 = phi i1 [ false, %logic.from9274 ], [ %t77, %logic.rend9279 ] + br i1 %t78, label %then9280, label %endif9282 +then9280: %t79 = load { ptr, i64, i64 }, ptr %a9 %t80 = load ptr, ptr %a1 %t81 = icmp eq ptr %t80, null - br i1 %t81, label %panic8794, label %ok8795 -panic8794: - call void @finch_panic(ptr @.str.6137, i64 435, ptr @.str.6138) + br i1 %t81, label %panic9283, label %ok9284 +panic9283: + call void @finch_panic(ptr @.str.6360, i64 439, ptr @.str.6361) unreachable -ok8795: +ok9284: %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 @@ -80018,640 +96181,784 @@ ok8795: %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.new8796, label %map.have8797 -map.new8796: + br i1 %t91, label %map.new9285, label %map.have9286 +map.new9285: %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.have8797 -map.have8797: + br label %map.have9286 +map.have9286: %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 + %t98 = load { ptr, i64, i64 }, ptr %t94 store { ptr, i64, i64 } %t97, ptr %t94 - 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 %then8798, label %else8799 -then8798: - %t100 = load ptr, ptr %a1 - %t101 = icmp eq ptr %t100, null - br i1 %t101, label %panic8801, label %ok8802 -panic8801: - call void @finch_panic(ptr @.str.6139, i64 439, ptr @.str.6140) + store { ptr, i64, i64 } %t98, ptr %a99 + call void @finch_str_drop(ptr %a99) + br label %endif9282 +endif9282: + call void @finch_str_drop(ptr %a36) + br label %endif9261 +endif9261: + br label %endif9258 +else9257: + %t100 = load i32, ptr %a13 + %t101 = icmp eq i32 %t100, 8 + br i1 %t101, label %then9287, label %else9288 +then9287: + %t102 = load ptr, ptr %a1 + %t103 = icmp eq ptr %t102, null + br i1 %t103, label %panic9290, label %ok9291 +panic9290: + call void @finch_panic(ptr @.str.6362, i64 443, ptr @.str.6363) unreachable -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 %then8803, label %endif8805 -then8803: +ok9291: + %t104 = getelementptr inbounds %S.cimport.Importer, ptr %t102, i32 0, i32 0 + %t105 = getelementptr inbounds %S.cimport.CImports, ptr %t104, i32 0, i32 0 + %t106 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t106, ptr %a107 + %t108 = call i64 @finch_map_find(ptr %t105, ptr %a107, 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) + %t109 = icmp sge i64 %t108, 0 + br i1 %t109, label %then9292, label %endif9294 +then9292: + call void @finch_str_drop(ptr %a9) ret void -endif8805: - %t108 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t108, ptr %a109 - call void @finch_str_copy(ptr %a110, ptr %a109) - %t111 = load { ptr, i64, i64 }, ptr %a110 - %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 %panic8806, label %ok8807 -panic8806: - call void @finch_panic(ptr @.str.6141, i64 442, ptr @.str.6142) +endif9294: + %t110 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t110, ptr %a111 + call void @finch_str_copy(ptr %a112, ptr %a111) + %t113 = load { ptr, i64, i64 }, ptr %a112 + %t114 = insertvalue %S.cimport.CFunc zeroinitializer, { ptr, i64, i64 } %t113, 0 + %t115 = load ptr, ptr %a1 + %t116 = icmp eq ptr %t115, null + br i1 %t116, label %panic9295, label %ok9296 +panic9295: + call void @finch_panic(ptr @.str.6364, i64 446, ptr @.str.6365) unreachable -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 - call void @finch_str_copy(ptr %a118, ptr %a117) - %t119 = load { ptr, i64, i64 }, ptr %a118 - %t120 = insertvalue %S.cimport.CFunc %t112, { ptr, i64, i64 } %t119, 1 - store %S.cimport.CFunc %t120, ptr %a121 - %t122 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t122, ptr %a123 - %t124 = call i32 @clang_Cursor_getStorageClass(ptr %a123) - %t125 = icmp eq i32 %t124, 3 - 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.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 %panic8811, label %ok8812 -panic8811: - call void @finch_panic(ptr @.str.6144, i64 445, ptr @.str.6145) +ok9296: + %t117 = getelementptr inbounds %S.cimport.Importer, ptr %t115, i32 0, i32 2 + %t118 = load { ptr, i64, i64 }, ptr %t117 + store { ptr, i64, i64 } %t118, ptr %a119 + call void @finch_str_copy(ptr %a120, ptr %a119) + %t121 = load { ptr, i64, i64 }, ptr %a120 + %t122 = insertvalue %S.cimport.CFunc %t114, { ptr, i64, i64 } %t121, 1 + store %S.cimport.CFunc %t122, ptr %a123 + %t124 = load %S.C.CXCursor, ptr %a2 + store %S.C.CXCursor %t124, ptr %a125 + %t126 = call i32 @clang_Cursor_getStorageClass(ptr %a125) + %t127 = icmp eq i32 %t126, 3 + br i1 %t127, label %then9297, label %endif9299 +then9297: + %t128 = getelementptr inbounds %S.cimport.CFunc, ptr %a123, i32 0, i32 5 + %t129 = load { ptr, i64, i64 }, ptr %t128 + store { ptr, i64, i64 } { ptr @.str.6366, i64 62, i64 0 }, ptr %t128 + store { ptr, i64, i64 } %t129, ptr %a130 + call void @finch_str_drop(ptr %a130) + %t131 = load %S.cimport.CFunc, ptr %a123 + %t132 = load ptr, ptr %a1 + %t133 = icmp eq ptr %t132, null + br i1 %t133, label %panic9300, label %ok9301 +panic9300: + call void @finch_panic(ptr @.str.6367, i64 449, ptr @.str.6368) unreachable -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 - store { ptr, i64, i64 } %t132, ptr %a133 - store i32 0, ptr %a134 - %t135 = call i64 @finch_map_slot(ptr %t131, ptr %a133, 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, ptr %a134) - %t136 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t131, i32 0, i32 0 - %t137 = load ptr, ptr %t136 - %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.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.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 +ok9301: + %t134 = getelementptr inbounds %S.cimport.Importer, ptr %t132, i32 0, i32 0 + %t135 = getelementptr inbounds %S.cimport.CImports, ptr %t134, i32 0, i32 0 + %t136 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t136, ptr %a137 + store i32 0, ptr %a138 + %t139 = call i64 @finch_map_slot(ptr %t135, ptr %a137, 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, ptr %a138) + %t140 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t135, i32 0, i32 0 + %t141 = load ptr, ptr %t140 + %t142 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t141, i64 %t139 + %t143 = load i32, ptr %a138 + %t144 = icmp ne i32 %t143, 0 + br i1 %t144, label %map.new9302, label %map.have9303 +map.new9302: + %t145 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t142, i32 0, i32 1 + call void @finch_str_copy(ptr %t145, ptr %a137) + %t146 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t142, i32 0, i32 2 + store %S.cimport.CFunc zeroinitializer, ptr %t146 + br label %map.have9303 +map.have9303: + %t147 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t142, i32 0, i32 2 + store %S.cimport.CFunc %t131, ptr %a148 + call void @finch.copy.S_cimport_CFunc(ptr %a149, ptr %a148) + %t150 = load %S.cimport.CFunc, ptr %a149 + %t151 = load %S.cimport.CFunc, ptr %t147 + store %S.cimport.CFunc %t150, ptr %t147 + store %S.cimport.CFunc %t151, ptr %a152 + call void @finch.drop.S_cimport_CFunc(ptr %a152) + call void @finch.drop.S_cimport_CFunc(ptr %a123) + call void @finch_str_drop(ptr %a9) ret void -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 %a150) - %t151 = load %S.C.CXType, ptr %a148 - store %S.C.CXType %t151, ptr %a152 - call void @clang_getCanonicalType(ptr sret(%S.C.CXType) align 16 %a147, ptr %a152) - %t153 = load %S.C.CXType, ptr %a147 - store %S.C.CXType %t153, ptr %a154 - %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 %then8815, label %endif8817 -then8815: - %t158 = getelementptr inbounds %S.cimport.CFunc, ptr %a121, i32 0, i32 5 - 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 %panic8818, label %ok8819 -panic8818: - call void @finch_panic(ptr @.str.6147, i64 451, ptr @.str.6148) +endif9299: + %t155 = load %S.C.CXCursor, ptr %a2 + store %S.C.CXCursor %t155, ptr %a156 + call void @clang_getCursorType(ptr sret(%S.C.CXType) align 16 %a154, ptr %a156) + %t157 = load %S.C.CXType, ptr %a154 + store %S.C.CXType %t157, ptr %a158 + call void @clang_getCanonicalType(ptr sret(%S.C.CXType) align 16 %a153, ptr %a158) + %t159 = load %S.C.CXType, ptr %a153 + store %S.C.CXType %t159, ptr %a160 + %t161 = getelementptr inbounds %S.C.CXType, ptr %a160, i32 0, i32 0 + %t162 = load i32, ptr %t161 + %t163 = icmp eq i32 %t162, 110 + br i1 %t163, label %then9304, label %endif9306 +then9304: + %t164 = getelementptr inbounds %S.cimport.CFunc, ptr %a123, i32 0, i32 5 + %t165 = load { ptr, i64, i64 }, ptr %t164 + store { ptr, i64, i64 } { ptr @.str.6369, i64 42, i64 0 }, ptr %t164 + store { ptr, i64, i64 } %t165, ptr %a166 + call void @finch_str_drop(ptr %a166) + %t167 = load %S.cimport.CFunc, ptr %a123 + %t168 = load ptr, ptr %a1 + %t169 = icmp eq ptr %t168, null + br i1 %t169, label %panic9307, label %ok9308 +panic9307: + call void @finch_panic(ptr @.str.6370, i64 455, ptr @.str.6371) unreachable -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 - store { ptr, i64, i64 } %t164, ptr %a165 - store i32 0, ptr %a166 - %t167 = call i64 @finch_map_slot(ptr %t163, ptr %a165, 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, ptr %a166) - %t168 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t163, i32 0, i32 0 - %t169 = load ptr, ptr %t168 - %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.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.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 +ok9308: + %t170 = getelementptr inbounds %S.cimport.Importer, ptr %t168, i32 0, i32 0 + %t171 = getelementptr inbounds %S.cimport.CImports, ptr %t170, i32 0, i32 0 + %t172 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t172, ptr %a173 + store i32 0, ptr %a174 + %t175 = call i64 @finch_map_slot(ptr %t171, ptr %a173, 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, ptr %a174) + %t176 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t171, i32 0, i32 0 + %t177 = load ptr, ptr %t176 + %t178 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t177, i64 %t175 + %t179 = load i32, ptr %a174 + %t180 = icmp ne i32 %t179, 0 + br i1 %t180, label %map.new9309, label %map.have9310 +map.new9309: + %t181 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t178, i32 0, i32 1 + call void @finch_str_copy(ptr %t181, ptr %a173) + %t182 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t178, i32 0, i32 2 + store %S.cimport.CFunc zeroinitializer, ptr %t182 + br label %map.have9310 +map.have9310: + %t183 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t178, i32 0, i32 2 + store %S.cimport.CFunc %t167, ptr %a184 + call void @finch.copy.S_cimport_CFunc(ptr %a185, ptr %a184) + %t186 = load %S.cimport.CFunc, ptr %a185 + %t187 = load %S.cimport.CFunc, ptr %t183 + store %S.cimport.CFunc %t186, ptr %t183 + store %S.cimport.CFunc %t187, ptr %a188 + call void @finch.drop.S_cimport_CFunc(ptr %a188) + call void @finch.drop.S_cimport_CFunc(ptr %a123) + call void @finch_str_drop(ptr %a9) ret void -endif8817: - %t179 = load ptr, ptr %a1 - %t181 = load %S.C.CXType, ptr %a154 - store %S.C.CXType %t181, ptr %a182 - call void @clang_getResultType(ptr sret(%S.C.CXType) align 16 %a180, ptr %a182) - %t183 = load %S.C.CXType, ptr %a180 - %t184 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t179, %S.C.CXType %t183, i1 true, i1 false) - 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 %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 - store %S.ast.Type %t189, ptr %a191 - 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 %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 - 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 %endif8824 -endif8824: - %t200 = load %S.C.CXType, ptr %a154 - store %S.C.CXType %t200, ptr %a201 - %t202 = call i32 @clang_getNumArgTypes(ptr %a201) - %t203 = sext i32 %t202 to i64 - store i64 %t203, ptr %a204 - %t205 = load i64, ptr %a204 - store i64 0, ptr %a206 - br label %for.cond8825 -for.cond8825: - %t207 = load i64, ptr %a206 - %t208 = icmp slt i64 %t207, %t205 - 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 %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 - %t217 = load i64, ptr %a206 - %t218 = trunc i64 %t217 to i32 - call void @clang_getArgType(ptr sret(%S.C.CXType) align 16 %a214, ptr %a216, i32 %t218) - %t219 = load %S.C.CXType, ptr %a214 - %t220 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t213, %S.C.CXType %t219, i1 true, i1 true) - 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 %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 - %t227 = load %S.ast.Type, ptr %t226 - store %S.ast.Type %t227, ptr %a228 - call void @finch.copy.S_ast_Type(ptr %a229, ptr %a228) - %t230 = load %S.ast.Type, ptr %a229 - %t231 = load i64, ptr %t225 - %t232 = add i64 %t231, 1 - call void @finch_arr_reserve(ptr %t224, i64 %t232, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t233 = load ptr, ptr %t224 - %t234 = getelementptr inbounds %S.ast.Type, ptr %t233, i64 %t231 - store %S.ast.Type %t230, ptr %t234 - store i64 %t232, ptr %t225 - 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 - store { ptr, i64, i64 } %t236, ptr %a238 - 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 %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.cond8825 -for.end8828: - %t243 = load %S.C.CXType, ptr %a154 - store %S.C.CXType %t243, ptr %a244 - %t245 = call i32 @clang_isFunctionTypeVariadic(ptr %a244) - %t246 = icmp ne i32 %t245, 0 - %t247 = getelementptr inbounds %S.cimport.CFunc, ptr %a121, i32 0, i32 4 - store i1 %t246, ptr %t247 - %t248 = load %S.cimport.CFunc, ptr %a121 - %t249 = load ptr, ptr %a1 - %t250 = icmp eq ptr %t249, null - br i1 %t250, label %panic8835, label %ok8836 -panic8835: - call void @finch_panic(ptr @.str.6149, i64 473, ptr @.str.6150) +endif9306: + %t189 = load ptr, ptr %a1 + %t191 = load %S.C.CXType, ptr %a160 + store %S.C.CXType %t191, ptr %a192 + call void @clang_getResultType(ptr sret(%S.C.CXType) align 16 %a190, ptr %a192) + %t193 = load %S.C.CXType, ptr %a190 + %t194 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t189, %S.C.CXType %t193, i1 true, i1 false) + store %S.cimport.Mapped %t194, ptr %a195 + %t196 = getelementptr inbounds %S.cimport.Mapped, ptr %a195, i32 0, i32 2 + %t197 = load i1, ptr %t196 + br i1 %t197, label %then9311, label %else9312 +then9311: + %t198 = getelementptr inbounds %S.cimport.Mapped, ptr %a195, i32 0, i32 0 + %t199 = load %S.ast.Type, ptr %t198 + %t200 = getelementptr inbounds %S.cimport.CFunc, ptr %a123, i32 0, i32 2 + store %S.ast.Type %t199, ptr %a201 + call void @finch.copy.S_ast_Type(ptr %a202, ptr %a201) + %t203 = load %S.ast.Type, ptr %a202 + %t204 = load %S.ast.Type, ptr %t200 + store %S.ast.Type %t203, ptr %t200 + store %S.ast.Type %t204, ptr %a205 + call void @finch.drop.S_ast_Type(ptr %a205) + br label %endif9313 +else9312: + %t206 = getelementptr inbounds %S.cimport.Mapped, ptr %a195, i32 0, i32 1 + %t207 = load { ptr, i64, i64 }, ptr %t206 + %t208 = getelementptr inbounds %S.cimport.CFunc, ptr %a123, i32 0, i32 5 + store { ptr, i64, i64 } %t207, ptr %a209 + call void @finch_str_copy(ptr %a210, ptr %a209) + %t211 = load { ptr, i64, i64 }, ptr %a210 + %t212 = load { ptr, i64, i64 }, ptr %t208 + store { ptr, i64, i64 } %t211, ptr %t208 + store { ptr, i64, i64 } %t212, ptr %a213 + call void @finch_str_drop(ptr %a213) + br label %endif9313 +endif9313: + %t214 = load %S.C.CXType, ptr %a160 + store %S.C.CXType %t214, ptr %a215 + %t216 = call i32 @clang_getNumArgTypes(ptr %a215) + %t217 = sext i32 %t216 to i64 + store i64 %t217, ptr %a218 + %t219 = load i64, ptr %a218 + store i64 0, ptr %a220 + br label %for.cond9314 +for.cond9314: + %t221 = load i64, ptr %a220 + %t222 = icmp slt i64 %t221, %t219 + br i1 %t222, label %for.body9315, label %for.end9317 +for.body9315: + %t223 = getelementptr inbounds %S.cimport.CFunc, ptr %a123, i32 0, i32 5 + %t224 = getelementptr inbounds { ptr, i64, i64 }, ptr %t223, i32 0, i32 1 + %t225 = load i64, ptr %t224 + %t226 = icmp sgt i64 %t225, 0 + br i1 %t226, label %then9318, label %endif9320 +then9318: + br label %for.end9317 +endif9320: + %t227 = load ptr, ptr %a1 + %t229 = load %S.C.CXType, ptr %a160 + store %S.C.CXType %t229, ptr %a230 + %t231 = load i64, ptr %a220 + %t232 = trunc i64 %t231 to i32 + call void @clang_getArgType(ptr sret(%S.C.CXType) align 16 %a228, ptr %a230, i32 %t232) + %t233 = load %S.C.CXType, ptr %a228 + %t234 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t227, %S.C.CXType %t233, i1 true, i1 true) + store %S.cimport.Mapped %t234, ptr %a235 + %t236 = getelementptr inbounds %S.cimport.Mapped, ptr %a235, i32 0, i32 2 + %t237 = load i1, ptr %t236 + br i1 %t237, label %then9321, label %else9322 +then9321: + %t238 = getelementptr inbounds %S.cimport.CFunc, ptr %a123, i32 0, i32 3 + %t239 = getelementptr inbounds { ptr, i64, i64 }, ptr %t238, i32 0, i32 1 + %t240 = getelementptr inbounds %S.cimport.Mapped, ptr %a235, i32 0, i32 0 + %t241 = load %S.ast.Type, ptr %t240 + store %S.ast.Type %t241, ptr %a242 + call void @finch.copy.S_ast_Type(ptr %a243, ptr %a242) + %t244 = load %S.ast.Type, ptr %a243 + %t245 = load i64, ptr %t239 + %t246 = add i64 %t245, 1 + call void @finch_arr_reserve(ptr %t238, i64 %t246, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) + %t247 = load ptr, ptr %t238 + %t248 = getelementptr inbounds %S.ast.Type, ptr %t247, i64 %t245 + store %S.ast.Type %t244, ptr %t248 + store i64 %t246, ptr %t239 + br label %endif9323 +else9322: + %t249 = getelementptr inbounds %S.cimport.Mapped, ptr %a235, i32 0, i32 1 + %t250 = load { ptr, i64, i64 }, ptr %t249 + %t251 = getelementptr inbounds %S.cimport.CFunc, ptr %a123, i32 0, i32 5 + store { ptr, i64, i64 } %t250, ptr %a252 + call void @finch_str_copy(ptr %a253, ptr %a252) + %t254 = load { ptr, i64, i64 }, ptr %a253 + %t255 = load { ptr, i64, i64 }, ptr %t251 + store { ptr, i64, i64 } %t254, ptr %t251 + store { ptr, i64, i64 } %t255, ptr %a256 + call void @finch_str_drop(ptr %a256) + br label %endif9323 +endif9323: + call void @finch.drop.S_cimport_Mapped(ptr %a235) + br label %for.step9316 +for.step9316: + %t257 = load i64, ptr %a220 + %t258 = add i64 %t257, 1 + store i64 %t258, ptr %a220 + br label %for.cond9314 +for.end9317: + %t259 = load %S.C.CXType, ptr %a160 + store %S.C.CXType %t259, ptr %a260 + %t261 = call i32 @clang_isFunctionTypeVariadic(ptr %a260) + %t262 = icmp ne i32 %t261, 0 + %t263 = getelementptr inbounds %S.cimport.CFunc, ptr %a123, i32 0, i32 4 + store i1 %t262, ptr %t263 + %t264 = load %S.cimport.CFunc, ptr %a123 + %t265 = load ptr, ptr %a1 + %t266 = icmp eq ptr %t265, null + br i1 %t266, label %panic9324, label %ok9325 +panic9324: + call void @finch_panic(ptr @.str.6372, i64 477, ptr @.str.6373) unreachable -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 - store { ptr, i64, i64 } %t253, ptr %a254 - store i32 0, ptr %a255 - %t256 = call i64 @finch_map_slot(ptr %t252, ptr %a254, 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, ptr %a255) - %t257 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t252, i32 0, i32 0 - %t258 = load ptr, ptr %t257 - %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.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.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 %endif8800 -else8799: - %t268 = load i32, ptr %a13 - %t269 = icmp eq i32 %t268, 9 - 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 %a271) - %t273 = icmp ne i32 %t272, 2 - 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 %panic8845, label %ok8846 -panic8845: - call void @finch_panic(ptr @.str.6151, i64 475, ptr @.str.6152) +ok9325: + %t267 = getelementptr inbounds %S.cimport.Importer, ptr %t265, i32 0, i32 0 + %t268 = getelementptr inbounds %S.cimport.CImports, ptr %t267, i32 0, i32 0 + %t269 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t269, ptr %a270 + store i32 0, ptr %a271 + %t272 = call i64 @finch_map_slot(ptr %t268, ptr %a270, 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, ptr %a271) + %t273 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t268, i32 0, i32 0 + %t274 = load ptr, ptr %t273 + %t275 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t274, i64 %t272 + %t276 = load i32, ptr %a271 + %t277 = icmp ne i32 %t276, 0 + br i1 %t277, label %map.new9326, label %map.have9327 +map.new9326: + %t278 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t275, i32 0, i32 1 + call void @finch_str_copy(ptr %t278, ptr %a270) + %t279 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t275, i32 0, i32 2 + store %S.cimport.CFunc zeroinitializer, ptr %t279 + br label %map.have9327 +map.have9327: + %t280 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t275, i32 0, i32 2 + store %S.cimport.CFunc %t264, ptr %a281 + call void @finch.copy.S_cimport_CFunc(ptr %a282, ptr %a281) + %t283 = load %S.cimport.CFunc, ptr %a282 + %t284 = load %S.cimport.CFunc, ptr %t280 + store %S.cimport.CFunc %t283, ptr %t280 + store %S.cimport.CFunc %t284, ptr %a285 + call void @finch.drop.S_cimport_CFunc(ptr %a285) + call void @finch.drop.S_cimport_Mapped(ptr %a195) + call void @finch.drop.S_cimport_CFunc(ptr %a123) + br label %endif9289 +else9288: + %t286 = load i32, ptr %a13 + %t287 = icmp eq i32 %t286, 9 + br i1 %t287, label %then9328, label %else9329 +then9328: + %t288 = load %S.C.CXCursor, ptr %a2 + store %S.C.CXCursor %t288, ptr %a289 + %t290 = call i32 @clang_Cursor_getStorageClass(ptr %a289) + %t291 = icmp ne i32 %t290, 2 + br label %logic.from9331 +logic.from9331: + br i1 %t291, label %logic.end9333, label %logic.rhs9332 +logic.rhs9332: + %t292 = load ptr, ptr %a1 + %t293 = icmp eq ptr %t292, null + br i1 %t293, label %panic9334, label %ok9335 +panic9334: + call void @finch_panic(ptr @.str.6374, i64 479, ptr @.str.6375) unreachable -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.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: +ok9335: + %t294 = getelementptr inbounds %S.cimport.Importer, ptr %t292, i32 0, i32 0 + %t295 = getelementptr inbounds %S.cimport.CImports, ptr %t294, i32 0, i32 2 + %t296 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t296, ptr %a297 + %t298 = call i64 @finch_map_find(ptr %t295, ptr %a297, 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) + %t299 = icmp sge i64 %t298, 0 + br label %logic.rend9336 +logic.rend9336: + br label %logic.end9333 +logic.end9333: + %t300 = phi i1 [ true, %logic.from9331 ], [ %t299, %logic.rend9336 ] + br i1 %t300, label %then9337, label %endif9339 +then9337: + call void @finch_str_drop(ptr %a9) ret void -endif8850: - %t283 = load ptr, ptr %a1 - %t285 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t285, ptr %a286 - call void @clang_getCursorType(ptr sret(%S.C.CXType) align 16 %a284, ptr %a286) - %t287 = load %S.C.CXType, ptr %a284 - %t288 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t283, %S.C.CXType %t287, i1 false, i1 false) - 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 %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 %panic8854, label %ok8855 -panic8854: - call void @finch_panic(ptr @.str.6153, i64 480, ptr @.str.6154) +endif9339: + %t301 = load ptr, ptr %a1 + %t303 = load %S.C.CXCursor, ptr %a2 + store %S.C.CXCursor %t303, ptr %a304 + call void @clang_getCursorType(ptr sret(%S.C.CXType) align 16 %a302, ptr %a304) + %t305 = load %S.C.CXType, ptr %a302 + %t306 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t301, %S.C.CXType %t305, i1 false, i1 false) + store %S.cimport.Mapped %t306, ptr %a307 + %t308 = getelementptr inbounds %S.cimport.Mapped, ptr %a307, i32 0, i32 2 + %t309 = load i1, ptr %t308 + br i1 %t309, label %then9340, label %endif9342 +then9340: + %t310 = getelementptr inbounds %S.cimport.Mapped, ptr %a307, i32 0, i32 0 + %t311 = load %S.ast.Type, ptr %t310 + %t312 = load ptr, ptr %a1 + %t313 = icmp eq ptr %t312, null + br i1 %t313, label %panic9343, label %ok9344 +panic9343: + call void @finch_panic(ptr @.str.6376, i64 484, ptr @.str.6377) unreachable -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 - store { ptr, i64, i64 } %t298, ptr %a299 - store i32 0, ptr %a300 - %t301 = call i64 @finch_map_slot(ptr %t297, ptr %a299, 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, ptr %a300) - %t302 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t297, i32 0, i32 0 - %t303 = load ptr, ptr %t302 - %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.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.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 %endif8853 -endif8853: - br label %endif8841 -else8840: - %t313 = load i32, ptr %a13 - %t314 = icmp eq i32 %t313, 2 - 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 %a316) - %t318 = icmp ne i32 %t317, 0 - 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.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.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.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 [2 x i64] @clang_getCursorUSR(ptr %a332) - store [2 x i64] %t333, ptr %a334 - %t335 = load %S.C.CXString, ptr %a334 - %t336 = call { ptr, i64, i64 } @finch.cimport.text(%S.C.CXString %t335) - store { ptr, i64, i64 } %t336, ptr %a337 - %t338 = load ptr, ptr %a1 - %t339 = icmp eq ptr %t338, null - br i1 %t339, label %panic8872, label %ok8873 -panic8872: - call void @finch_panic(ptr @.str.6157, i64 485, ptr @.str.6158) +ok9344: + %t314 = getelementptr inbounds %S.cimport.Importer, ptr %t312, i32 0, i32 0 + %t315 = getelementptr inbounds %S.cimport.CImports, ptr %t314, i32 0, i32 2 + %t316 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t316, ptr %a317 + store i32 0, ptr %a318 + %t319 = call i64 @finch_map_slot(ptr %t315, ptr %a317, 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, ptr %a318) + %t320 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t315, i32 0, i32 0 + %t321 = load ptr, ptr %t320 + %t322 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t321, i64 %t319 + %t323 = load i32, ptr %a318 + %t324 = icmp ne i32 %t323, 0 + br i1 %t324, label %map.new9345, label %map.have9346 +map.new9345: + %t325 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t322, i32 0, i32 1 + call void @finch_str_copy(ptr %t325, ptr %a317) + %t326 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t322, i32 0, i32 2 + store %S.ast.Type zeroinitializer, ptr %t326 + br label %map.have9346 +map.have9346: + %t327 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t322, i32 0, i32 2 + store %S.ast.Type %t311, ptr %a328 + call void @finch.copy.S_ast_Type(ptr %a329, ptr %a328) + %t330 = load %S.ast.Type, ptr %a329 + %t331 = load %S.ast.Type, ptr %t327 + store %S.ast.Type %t330, ptr %t327 + store %S.ast.Type %t331, ptr %a332 + call void @finch.drop.S_ast_Type(ptr %a332) + br label %endif9342 +endif9342: + call void @finch.drop.S_cimport_Mapped(ptr %a307) + br label %endif9330 +else9329: + %t333 = load i32, ptr %a13 + %t334 = icmp eq i32 %t333, 2 + br i1 %t334, label %then9347, label %else9348 +then9347: + %t335 = load %S.C.CXCursor, ptr %a2 + store %S.C.CXCursor %t335, ptr %a336 + %t337 = call i32 @clang_isCursorDefinition(ptr %a336) + %t338 = icmp ne i32 %t337, 0 + br label %logic.from9350 +logic.from9350: + br i1 %t338, label %logic.rhs9351, label %logic.end9352 +logic.rhs9351: + %t339 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 + %t340 = load i64, ptr %t339 + %t341 = icmp sgt i64 %t340, 0 + br label %logic.rend9353 +logic.rend9353: + br label %logic.end9352 +logic.end9352: + %t342 = phi i1 [ false, %logic.from9350 ], [ %t341, %logic.rend9353 ] + br label %logic.from9354 +logic.from9354: + br i1 %t342, label %logic.rhs9355, label %logic.end9356 +logic.rhs9355: + %t343 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t343, ptr %a344 + store { ptr, i64, i64 } { ptr @.str.6379, i64 1, i64 0 }, ptr %a346 + %t347 = call i64 @finch_str_find(ptr %a344, ptr %a346) + %t348 = icmp sge i64 %t347, 0 + %t349 = xor i1 %t348, true + br label %logic.rend9357 +logic.rend9357: + br label %logic.end9356 +logic.end9356: + %t350 = phi i1 [ false, %logic.from9354 ], [ %t349, %logic.rend9357 ] + br i1 %t350, label %then9358, label %endif9360 +then9358: + %t351 = load %S.C.CXCursor, ptr %a2 + store %S.C.CXCursor %t351, ptr %a352 + %t353 = call [2 x i64] @clang_getCursorUSR(ptr %a352) + store [2 x i64] %t353, ptr %a354 + %t355 = load %S.C.CXString, ptr %a354 + %t356 = call { ptr, i64, i64 } @finch.cimport.text(%S.C.CXString %t355) + store { ptr, i64, i64 } %t356, ptr %a357 + %t358 = load ptr, ptr %a1 + %t359 = icmp eq ptr %t358, null + br i1 %t359, label %panic9361, label %ok9362 +panic9361: + call void @finch_panic(ptr @.str.6380, i64 489, ptr @.str.6381) unreachable -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 %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 %panic8877, label %ok8878 -panic8877: - call void @finch_panic(ptr @.str.6159, i64 486, ptr @.str.6160) +ok9362: + %t360 = getelementptr inbounds %S.cimport.Importer, ptr %t358, i32 0, i32 3 + %t361 = load { ptr, i64, i64 }, ptr %a357 + store { ptr, i64, i64 } %t361, ptr %a362 + %t363 = call i64 @finch_map_find(ptr %t360, ptr %a362, 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) + %t364 = icmp sge i64 %t363, 0 + %t365 = xor i1 %t364, true + br i1 %t365, label %then9363, label %endif9365 +then9363: + %t366 = load { ptr, i64, i64 }, ptr %a9 + %t367 = load ptr, ptr %a1 + %t368 = icmp eq ptr %t367, null + br i1 %t368, label %panic9366, label %ok9367 +panic9366: + call void @finch_panic(ptr @.str.6382, i64 490, ptr @.str.6383) unreachable -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 - store i32 0, ptr %a352 - %t353 = call i64 @finch_map_slot(ptr %t349, ptr %a351, 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 %a352) - %t354 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t349, i32 0, i32 0 - %t355 = load ptr, ptr %t354 - %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.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.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 %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 %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 %a368, ptr @finch.c.cimport.visitTop, ptr %t369) - br label %endif8883 -else8882: - %t371 = load i32, ptr %a13 - %t372 = icmp eq i32 %t371, 7 - br i1 %t372, label %then8884, label %else8885 -then8884: - %t373 = load ptr, ptr %a1 - %t374 = icmp eq ptr %t373, null - br i1 %t374, label %panic8887, label %ok8888 -panic8887: - call void @finch_panic(ptr @.str.6161, i64 492, ptr @.str.6162) +ok9367: + %t369 = getelementptr inbounds %S.cimport.Importer, ptr %t367, i32 0, i32 3 + %t370 = load { ptr, i64, i64 }, ptr %a357 + store { ptr, i64, i64 } %t370, ptr %a371 + store i32 0, ptr %a372 + %t373 = call i64 @finch_map_slot(ptr %t369, ptr %a371, 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 %a372) + %t374 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t369, i32 0, i32 0 + %t375 = load ptr, ptr %t374 + %t376 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t375, i64 %t373 + %t377 = load i32, ptr %a372 + %t378 = icmp ne i32 %t377, 0 + br i1 %t378, label %map.new9368, label %map.have9369 +map.new9368: + %t379 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t376, i32 0, i32 1 + call void @finch_str_copy(ptr %t379, ptr %a371) + %t380 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t376, i32 0, i32 2 + store { ptr, i64, i64 } zeroinitializer, ptr %t380 + br label %map.have9369 +map.have9369: + %t381 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t376, i32 0, i32 2 + store { ptr, i64, i64 } %t366, ptr %a382 + call void @finch_str_copy(ptr %a383, ptr %a382) + %t384 = load { ptr, i64, i64 }, ptr %a383 + %t385 = load { ptr, i64, i64 }, ptr %t381 + store { ptr, i64, i64 } %t384, ptr %t381 + store { ptr, i64, i64 } %t385, ptr %a386 + call void @finch_str_drop(ptr %a386) + br label %endif9365 +endif9365: + call void @finch_str_drop(ptr %a357) + br label %endif9360 +endif9360: + br label %endif9349 +else9348: + %t387 = load i32, ptr %a13 + %t388 = icmp eq i32 %t387, 5 + br i1 %t388, label %then9370, label %else9371 +then9370: + %t389 = load %S.C.CXCursor, ptr %a2 + store %S.C.CXCursor %t389, ptr %a390 + %t391 = load ptr, ptr %a1 + %t392 = call i32 @clang_visitChildren(ptr %a390, ptr @finch.c.cimport.visitTop, ptr %t391) + br label %endif9372 +else9371: + %t393 = load i32, ptr %a13 + %t394 = icmp eq i32 %t393, 7 + br i1 %t394, label %then9373, label %else9374 +then9373: + %t395 = load ptr, ptr %a1 + %t396 = icmp eq ptr %t395, null + br i1 %t396, label %panic9376, label %ok9377 +panic9376: + call void @finch_panic(ptr @.str.6384, i64 496, ptr @.str.6385) unreachable -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 - store { ptr, i64, i64 } %t377, ptr %a378 - %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 %then8889, label %endif8891 -then8889: - %t382 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t382, ptr %a383 - %t384 = call i64 @clang_getEnumConstantDeclValue(ptr %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 %panic8892, label %ok8893 -panic8892: - call void @finch_panic(ptr @.str.6163, i64 493, ptr @.str.6164) - unreachable -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 - store { ptr, i64, i64 } %t390, ptr %a391 - store i32 0, ptr %a392 - %t393 = call i64 @finch_map_slot(ptr %t389, ptr %a391, 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, ptr %a392) - %t394 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t389, i32 0, i32 0 - %t395 = load ptr, ptr %t394 - %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.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.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 %endif8891 -endif8891: - br label %endif8886 -else8885: - %t402 = load i32, ptr %a13 - %t403 = icmp eq i32 %t402, 501 - br i1 %t403, label %then8896, label %endif8898 -then8896: +ok9377: + %t397 = getelementptr inbounds %S.cimport.Importer, ptr %t395, i32 0, i32 0 + %t398 = getelementptr inbounds %S.cimport.CImports, ptr %t397, i32 0, i32 1 + %t399 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t399, ptr %a400 + %t401 = call i64 @finch_map_find(ptr %t398, ptr %a400, 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) + %t402 = icmp sge i64 %t401, 0 + %t403 = xor i1 %t402, true + br i1 %t403, label %then9378, label %endif9380 +then9378: %t404 = load %S.C.CXCursor, ptr %a2 store %S.C.CXCursor %t404, ptr %a405 - %t406 = call i32 @clang_Cursor_isMacroBuiltin(ptr %a405) - %t407 = icmp ne i32 %t406, 0 - 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 %a409) - %t411 = icmp ne i32 %t410, 0 - 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: + %t406 = call i64 @clang_getEnumConstantDeclValue(ptr %a405) + %t407 = insertvalue %S.cimport.CConst zeroinitializer, i64 %t406, 1 + %t408 = load ptr, ptr %a1 + %t409 = icmp eq ptr %t408, null + br i1 %t409, label %panic9381, label %ok9382 +panic9381: + call void @finch_panic(ptr @.str.6386, i64 497, ptr @.str.6387) + unreachable +ok9382: + %t410 = getelementptr inbounds %S.cimport.Importer, ptr %t408, i32 0, i32 0 + %t411 = getelementptr inbounds %S.cimport.CImports, ptr %t410, i32 0, i32 1 + %t412 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t412, ptr %a413 + store i32 0, ptr %a414 + %t415 = call i64 @finch_map_slot(ptr %t411, ptr %a413, 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, ptr %a414) + %t416 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t411, i32 0, i32 0 + %t417 = load ptr, ptr %t416 + %t418 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t417, i64 %t415 + %t419 = load i32, ptr %a414 + %t420 = icmp ne i32 %t419, 0 + br i1 %t420, label %map.new9383, label %map.have9384 +map.new9383: + %t421 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t418, i32 0, i32 1 + call void @finch_str_copy(ptr %t421, ptr %a413) + %t422 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t418, i32 0, i32 2 + store %S.cimport.CConst zeroinitializer, ptr %t422 + br label %map.have9384 +map.have9384: + %t423 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t418, i32 0, i32 2 + %t424 = load %S.cimport.CConst, ptr %t423 + store %S.cimport.CConst %t407, ptr %t423 + store %S.cimport.CConst %t424, ptr %a425 + call void @finch.drop.S_cimport_CConst(ptr %a425) + br label %endif9380 +endif9380: + br label %endif9375 +else9374: + %t426 = load i32, ptr %a13 + %t427 = icmp eq i32 %t426, 501 + br i1 %t427, label %then9385, label %endif9387 +then9385: + %t428 = load %S.C.CXCursor, ptr %a2 + store %S.C.CXCursor %t428, ptr %a429 + %t430 = call i32 @clang_Cursor_isMacroBuiltin(ptr %a429) + %t431 = icmp ne i32 %t430, 0 + br label %logic.from9388 +logic.from9388: + br i1 %t431, label %logic.end9390, label %logic.rhs9389 +logic.rhs9389: + %t432 = load %S.C.CXCursor, ptr %a2 + store %S.C.CXCursor %t432, ptr %a433 + %t434 = call i32 @clang_Cursor_isMacroFunctionLike(ptr %a433) + %t435 = icmp ne i32 %t434, 0 + br label %logic.rend9391 +logic.rend9391: + br label %logic.end9390 +logic.end9390: + %t436 = phi i1 [ true, %logic.from9388 ], [ %t435, %logic.rend9391 ] + br i1 %t436, label %then9392, label %endif9394 +then9392: + call void @finch_str_drop(ptr %a9) ret void -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.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 %panic8909, label %ok8910 -panic8909: - call void @finch_panic(ptr @.str.6165, i64 500, ptr @.str.6166) +endif9394: + %t437 = load ptr, ptr %a1 + %t438 = load %S.C.CXCursor, ptr %a2 + %t439 = call %S.cimport.Number @finch.cimport.macroValue(ptr %t437, %S.C.CXCursor %t438) + store %S.cimport.Number %t439, ptr %a440 + %t441 = getelementptr inbounds %S.cimport.Number, ptr %a440, i32 0, i32 1 + %t442 = load i1, ptr %t441 + br label %logic.from9395 +logic.from9395: + br i1 %t442, label %logic.rhs9396, label %logic.end9397 +logic.rhs9396: + %t443 = load ptr, ptr %a1 + %t444 = icmp eq ptr %t443, null + br i1 %t444, label %panic9398, label %ok9399 +panic9398: + call void @finch_panic(ptr @.str.6388, i64 504, ptr @.str.6389) unreachable -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 - store { ptr, i64, i64 } %t423, ptr %a424 - %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.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 %panic8915, label %ok8916 -panic8915: - call void @finch_panic(ptr @.str.6167, i64 501, ptr @.str.6168) +ok9399: + %t445 = getelementptr inbounds %S.cimport.Importer, ptr %t443, i32 0, i32 0 + %t446 = getelementptr inbounds %S.cimport.CImports, ptr %t445, i32 0, i32 1 + %t447 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t447, ptr %a448 + %t449 = call i64 @finch_map_find(ptr %t446, ptr %a448, 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) + %t450 = icmp sge i64 %t449, 0 + %t451 = xor i1 %t450, true + br label %logic.rend9400 +logic.rend9400: + br label %logic.end9397 +logic.end9397: + %t452 = phi i1 [ false, %logic.from9395 ], [ %t451, %logic.rend9400 ] + br i1 %t452, label %then9401, label %endif9403 +then9401: + %t453 = getelementptr inbounds %S.cimport.Number, ptr %a440, i32 0, i32 0 + %t454 = load %S.cimport.CConst, ptr %t453 + %t455 = load ptr, ptr %a1 + %t456 = icmp eq ptr %t455, null + br i1 %t456, label %panic9404, label %ok9405 +panic9404: + call void @finch_panic(ptr @.str.6390, i64 505, ptr @.str.6391) unreachable -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 - store { ptr, i64, i64 } %t435, ptr %a436 - store i32 0, ptr %a437 - %t438 = call i64 @finch_map_slot(ptr %t434, ptr %a436, 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, ptr %a437) - %t439 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t434, i32 0, i32 0 - %t440 = load ptr, ptr %t439 - %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.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.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 %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: +ok9405: + %t457 = getelementptr inbounds %S.cimport.Importer, ptr %t455, i32 0, i32 0 + %t458 = getelementptr inbounds %S.cimport.CImports, ptr %t457, i32 0, i32 1 + %t459 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t459, ptr %a460 + store i32 0, ptr %a461 + %t462 = call i64 @finch_map_slot(ptr %t458, ptr %a460, 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, ptr %a461) + %t463 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t458, i32 0, i32 0 + %t464 = load ptr, ptr %t463 + %t465 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t464, i64 %t462 + %t466 = load i32, ptr %a461 + %t467 = icmp ne i32 %t466, 0 + br i1 %t467, label %map.new9406, label %map.have9407 +map.new9406: + %t468 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t465, i32 0, i32 1 + call void @finch_str_copy(ptr %t468, ptr %a460) + %t469 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t465, i32 0, i32 2 + store %S.cimport.CConst zeroinitializer, ptr %t469 + br label %map.have9407 +map.have9407: + %t470 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t465, i32 0, i32 2 + store %S.cimport.CConst %t454, ptr %a471 + call void @finch.copy.S_cimport_CConst(ptr %a472, ptr %a471) + %t473 = load %S.cimport.CConst, ptr %a472 + %t474 = load %S.cimport.CConst, ptr %t470 + store %S.cimport.CConst %t473, ptr %t470 + store %S.cimport.CConst %t474, ptr %a475 + call void @finch.drop.S_cimport_CConst(ptr %a475) + br label %endif9403 +endif9403: + call void @finch.drop.S_cimport_Number(ptr %a440) + br label %endif9387 +endif9387: + br label %endif9375 +endif9375: + br label %endif9372 +endif9372: + br label %endif9349 +endif9349: + br label %endif9330 +endif9330: + br label %endif9289 +endif9289: + br label %endif9258 +endif9258: + call void @finch_str_drop(ptr %a9) + ret void +} + +define internal void @finch.drop.map_str_str(ptr %a) { +entry: + %a3 = alloca i64, align 16 + %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 2 + %t2 = load i64, ptr %t1 + store i64 0, ptr %a3 + br label %n.cond9411 +n.cond9411: + %t4 = load i64, ptr %a3 + %t5 = icmp slt i64 %t4, %t2 + br i1 %t5, label %n.body9412, label %n.end9413 +n.body9412: + %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 0 + %t7 = load ptr, ptr %t6 + %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t7, i64 %t4 + %t9 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t8, i32 0, i32 0 + %t10 = load i64, ptr %t9 + %t11 = icmp ne i64 %t10, 0 + br i1 %t11, label %entry.live9414, label %entry.next9415 +entry.live9414: + %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t8, i32 0, i32 1 + call void @finch_str_drop(ptr %t12) + %t13 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t8, i32 0, i32 2 + call void @finch_str_drop(ptr %t13) + br label %entry.next9415 +entry.next9415: + %t14 = load i64, ptr %a3 + %t15 = add i64 %t14, 1 + store i64 %t15, ptr %a3 + br label %n.cond9411 +n.end9413: + call void @finch_map_free(ptr %a) + ret void +} + +define internal void @finch.drop.map_str_bool(ptr %a) { +entry: + %a3 = alloca i64, align 16 + %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 2 + %t2 = load i64, ptr %t1 + store i64 0, ptr %a3 + br label %n.cond9416 +n.cond9416: + %t4 = load i64, ptr %a3 + %t5 = icmp slt i64 %t4, %t2 + br i1 %t5, label %n.body9417, label %n.end9418 +n.body9417: + %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 0 + %t7 = load ptr, ptr %t6 + %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t7, i64 %t4 + %t9 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t8, i32 0, i32 0 + %t10 = load i64, ptr %t9 + %t11 = icmp ne i64 %t10, 0 + br i1 %t11, label %entry.live9419, label %entry.next9420 +entry.live9419: + %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t8, i32 0, i32 1 + call void @finch_str_drop(ptr %t12) + %t13 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t8, i32 0, i32 2 + br label %entry.next9420 +entry.next9420: + %t14 = load i64, ptr %a3 + %t15 = add i64 %t14, 1 + store i64 %t15, ptr %a3 + br label %n.cond9416 +n.end9418: + call void @finch_map_free(ptr %a) + ret void +} + +define internal void @finch.drop.S_cimport_Importer(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.cimport.Importer, ptr %a, i32 0, i32 0 + call void @finch.drop.S_cimport_CImports(ptr %t1) + %t2 = getelementptr inbounds %S.cimport.Importer, ptr %a, i32 0, i32 2 + call void @finch_str_drop(ptr %t2) + %t3 = getelementptr inbounds %S.cimport.Importer, ptr %a, i32 0, i32 3 + call void @finch.drop.map_str_str(ptr %t3) + %t4 = getelementptr inbounds %S.cimport.Importer, ptr %a, i32 0, i32 4 + call void @finch.drop.map_str_bool(ptr %t4) + ret void +} + +define internal void @finch.drop.arr_ptr(ptr %a) { +entry: + + call void @finch_arr_free(ptr %a) ret void } @@ -80690,80 +96997,94 @@ entry: %a129 = alloca { ptr, i64, i64 }, align 16 %a130 = alloca { ptr, i64, i64 }, align 16 %a131 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca %S.C.CXUnsavedFile, align 16 - %a147 = alloca ptr, align 16 - %a149 = alloca i64, align 16 - %a162 = alloca i32, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 + %a132 = alloca { ptr, i64, i64 }, align 16 + %a134 = alloca { ptr, i64, i64 }, align 16 + %a147 = alloca %S.C.CXUnsavedFile, align 16 + %a148 = alloca ptr, align 16 + %a150 = alloca i64, align 16 + %a163 = alloca i32, align 16 %a171 = alloca { ptr, i64, i64 }, align 16 %a172 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 + %a173 = 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 %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 %a182 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca i64, align 16 - %a190 = alloca i64, align 16 - %a197 = alloca ptr, align 16 - %a203 = alloca [32 x i8], align 16 - %a206 = 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 + %a191 = alloca i64, align 16 + %a193 = alloca i64, align 16 + %a200 = alloca ptr, align 16 + %a206 = alloca [32 x i8], align 16 %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = 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 %a218 = alloca { ptr, i64, i64 }, align 16 %a219 = 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 - %a229 = alloca { ptr, i64, i64 }, align 16 + %a221 = alloca { ptr, i64, i64 }, align 16 + %a222 = 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 %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 + %a237 = alloca { ptr, i64, i64 }, align 16 + %a238 = alloca { ptr, i64, i64 }, align 16 + %a243 = 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 - %a247 = 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 + %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 %a257 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 %a262 = alloca { ptr, i64, i64 }, align 16 %a263 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 + %a264 = alloca { ptr, i64, i64 }, align 16 %a267 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, 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 %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 %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 + %a285 = alloca { ptr, i64, i64 }, align 16 + %a286 = alloca { ptr, i64, i64 }, align 16 + %a287 = 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 - %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 + %a301 = 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 %a311 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca %S.C.CXCursor, align 16 - %a316 = alloca %S.C.CXCursor, align 16 - %a324 = alloca %S.cimport.CImports, align 16 - %a325 = alloca %S.cimport.CImports, align 16 + %a312 = 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 %S.C.CXCursor, align 16 + %a331 = alloca %S.C.CXCursor, align 16 + %a339 = alloca %S.cimport.CImports, align 16 + %a340 = alloca %S.cimport.CImports, align 16 store { ptr, i64, i64 } %p0, ptr %a1 store { ptr, i64, i64 } %p1, ptr %a2 store { ptr, i64, i64 } %p2, ptr %a3 @@ -80773,25 +97094,26 @@ 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 %then8919, label %endif8921 -then8919: + br i1 %t9, label %then9408, label %endif9410 +then9408: %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 call void @finch.copy.S_cimport_CImports(ptr %a13, ptr %a12) %t14 = load %S.cimport.CImports, ptr %a13 + call void @finch.drop.S_cimport_Importer(ptr %a6) %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 -endif8921: +endif9410: %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.6169, i64 2, i64 0 }, ptr %t19 + store { ptr, i64, i64 } { ptr @.str.6392, i64 2, i64 0 }, ptr %t19 %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t18, i64 1 - store { ptr, i64, i64 } { ptr @.str.6170, i64 1, i64 0 }, ptr %t20 + store { ptr, i64, i64 } { ptr @.str.6393, i64 1, i64 0 }, ptr %t20 %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t18, i64 2 - store { ptr, i64, i64 } { ptr @.str.6171, i64 10, i64 0 }, ptr %t21 + store { ptr, i64, i64 } { ptr @.str.6394, 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 @@ -80799,11 +97121,11 @@ endif8921: %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 %then8922, label %endif8924 -then8922: + br i1 %t28, label %then9421, label %endif9423 +then9421: %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.6172, i64 9, i64 0 }, ptr %a32 + store { ptr, i64, i64 } { ptr @.str.6395, 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 @@ -80814,37 +97136,37 @@ then8922: %t38 = getelementptr inbounds { ptr, i64, i64 }, ptr %t37, i64 %t35 store { ptr, i64, i64 } %t34, ptr %t38 store i64 %t36, ptr %t29 - br label %endif8924 -endif8924: + br label %endif9423 +endif9423: %t39 = load i1, ptr %a4 - br i1 %t39, label %then8925, label %endif8927 -then8925: + br i1 %t39, label %then9424, label %endif9426 +then9424: %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.6173, i64 19, i64 0 }, ptr %t44 + store { ptr, i64, i64 } { ptr @.str.6396, i64 19, i64 0 }, ptr %t44 store i64 %t42, ptr %t40 - br label %endif8927 -endif8927: + br label %endif9426 +endif9426: store i64 0, ptr %a45 - br label %each.cond8928 -each.cond8928: + br label %each.cond9427 +each.cond9427: %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.body8929, label %each.end8931 -each.body8929: + br i1 %t49, label %each.body9428, label %each.end9430 +each.body9428: %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.6174, i64 2, i64 0 }, ptr %a57 + store { ptr, i64, i64 } { ptr @.str.6397, 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 @@ -80855,25 +97177,25 @@ each.body8929: %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.step8930 -each.step8930: + br label %each.step9429 +each.step9429: %t64 = load i64, ptr %a45 %t65 = add i64 %t64, 1 store i64 %t65, ptr %a45 - br label %each.cond8928 -each.end8931: + br label %each.cond9427 +each.end9430: %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.cond8932 -each.cond8932: + br label %each.cond9431 +each.cond9431: %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.body8933, label %each.end8935 -each.body8933: + br i1 %t73, label %each.body9432, label %each.end9434 +each.body9432: %t74 = load ptr, ptr %a68 %t75 = getelementptr inbounds { ptr, i64, i64 }, ptr %t74, i64 %t72 %t76 = load { ptr, i64, i64 }, ptr %t75 @@ -80890,39 +97212,40 @@ each.body8933: %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.step8934 -each.step8934: + br label %each.step9433 +each.step9433: %t87 = load i64, ptr %a69 %t88 = add i64 %t87, 1 store i64 %t88, ptr %a69 - br label %each.cond8932 -each.end8935: + br label %each.cond9431 +each.end9434: + call void @finch.drop.arr_str(ptr %a68) 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.cond8936 -for.cond8936: + br label %for.cond9435 +for.cond9435: %t93 = load i64, ptr %a92 %t94 = icmp slt i64 %t93, %t91 - br i1 %t94, label %for.body8937, label %for.end8939 -for.body8937: + br i1 %t94, label %for.body9436, label %for.end9438 +for.body9436: %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 %range8940, label %inrange8941 -range8940: - call void @finch_panic_index(ptr @.str.6175, i64 528, i64 %t96, i64 %t98) + br i1 %t99, label %range9439, label %inrange9440 +range9439: + call void @finch_panic_index(ptr @.str.6398, i64 532, i64 %t96, i64 %t98) unreachable -inrange8941: +inrange9440: %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.6176, ptr %t103 + %t105 = select i1 %t104, ptr @.str.6399, 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)) @@ -80930,277 +97253,684 @@ inrange8941: %t109 = getelementptr inbounds ptr, ptr %t108, i64 %t106 store ptr %t105, ptr %t109 store i64 %t107, ptr %t95 - br label %for.step8938 -for.step8938: + br label %for.step9437 +for.step9437: %t110 = load i64, ptr %a92 %t111 = add i64 %t110, 1 store i64 %t111, ptr %a92 - br label %for.cond8936 -for.end8939: + br label %for.cond9435 +for.end9438: %t112 = call ptr @clang_createIndex(i32 0, i32 0) store ptr %t112, ptr %a113 store i64 0, ptr %a114 - br label %each.cond8942 -each.cond8942: + br label %each.cond9441 +each.cond9441: %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.body8943, label %each.end8945 -each.body8943: + br i1 %t118, label %each.body9442, label %each.end9444 +each.body9442: %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.6177, i64 10, i64 0 }, ptr %a126 + store { ptr, i64, i64 } { ptr @.str.6400, 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.6178, i64 2, i64 0 }, ptr %a131 + store { ptr, i64, i64 } { ptr @.str.6401, 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.6179, i64 14, i64 0 }, 0 - %t135 = icmp eq ptr %t134, null - %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.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 - %t145 = insertvalue %S.C.CXUnsavedFile %t142, i64 %t144, 2 - store %S.C.CXUnsavedFile %t145, ptr %a146 - store ptr null, ptr %a147 - %t148 = or i64 1, 64 - store i64 %t148, ptr %a149 - %t150 = load ptr, ptr %a113 - %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.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 - %t157 = load i64, ptr %t156 - %t158 = trunc i64 %t157 to i32 - %t159 = load i64, ptr %a149 - %t160 = trunc i64 %t159 to i32 - %t161 = call i32 @clang_parseTranslationUnit2(ptr %t150, ptr %t153, ptr %t155, i32 %t158, ptr %a146, i32 1, i32 %t160, ptr %a147) - store i32 %t161, ptr %a162 - %t163 = load i32, ptr %a162 - %t164 = icmp ne i32 %t163, 0 - 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.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.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 - %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 - store { ptr, i64, i64 } %t179, ptr %a181 - 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 -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.cond8953 -for.cond8953: - %t191 = load i64, ptr %a190 - %t192 = icmp slt i64 %t191, %t189 - 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 - %t196 = call ptr @clang_getDiagnostic(ptr %t193, i32 %t195) - store ptr %t196, ptr %a197 - %t198 = load ptr, ptr %a197 - %t199 = call i32 @clang_getDiagnosticSeverity(ptr %t198) - %t200 = icmp sge i32 %t199, 3 - br i1 %t200, label %then8957, label %endif8959 -then8957: - %t201 = load ptr, ptr %a197 - %t202 = call [2 x i64] @clang_getDiagnosticSpelling(ptr %t201) - store [2 x i64] %t202, ptr %a203 - %t204 = load %S.C.CXString, ptr %a203 - %t205 = call { ptr, i64, i64 } @finch.cimport.text(%S.C.CXString %t204) - store { ptr, i64, i64 } %t205, ptr %a206 - %t207 = load ptr, ptr %a197 - call void @clang_disposeDiagnostic(ptr %t207) - %t208 = load { ptr, i64, i64 }, ptr %a206 + store { ptr, i64, i64 } %t128, ptr %a132 + call void @finch_str_drop(ptr %a132) + %t133 = load { ptr, i64, i64 }, ptr %a129 + store { ptr, i64, i64 } %t133, ptr %a134 + %t135 = extractvalue { ptr, i64, i64 } { ptr @.str.6402, i64 14, i64 0 }, 0 + %t136 = icmp eq ptr %t135, null + %t137 = select i1 %t136, ptr @.str.6403, ptr %t135 + %t138 = insertvalue %S.C.CXUnsavedFile zeroinitializer, ptr %t137, 0 + %t139 = load { ptr, i64, i64 }, ptr %a134 + %t140 = extractvalue { ptr, i64, i64 } %t139, 0 + %t141 = icmp eq ptr %t140, null + %t142 = select i1 %t141, ptr @.str.6404, ptr %t140 + %t143 = insertvalue %S.C.CXUnsavedFile %t138, ptr %t142, 1 + %t144 = getelementptr inbounds { ptr, i64, i64 }, ptr %a134, i32 0, i32 1 + %t145 = load i64, ptr %t144 + %t146 = insertvalue %S.C.CXUnsavedFile %t143, i64 %t145, 2 + store %S.C.CXUnsavedFile %t146, ptr %a147 + store ptr null, ptr %a148 + %t149 = or i64 1, 64 + store i64 %t149, ptr %a150 + %t151 = load ptr, ptr %a113 + %t152 = extractvalue { ptr, i64, i64 } { ptr @.str.6405, i64 14, i64 0 }, 0 + %t153 = icmp eq ptr %t152, null + %t154 = select i1 %t153, ptr @.str.6406, ptr %t152 + %t155 = load { ptr, i64, i64 }, ptr %a89 + %t156 = extractvalue { ptr, i64, i64 } %t155, 0 + %t157 = getelementptr inbounds { ptr, i64, i64 }, ptr %a89, i32 0, i32 1 + %t158 = load i64, ptr %t157 + %t159 = trunc i64 %t158 to i32 + %t160 = load i64, ptr %a150 + %t161 = trunc i64 %t160 to i32 + %t162 = call i32 @clang_parseTranslationUnit2(ptr %t151, ptr %t154, ptr %t156, i32 %t159, ptr %a147, i32 1, i32 %t161, ptr %a148) + store i32 %t162, ptr %a163 + %t164 = load i32, ptr %a163 + %t165 = icmp ne i32 %t164, 0 + br label %logic.from9445 +logic.from9445: + br i1 %t165, label %logic.end9447, label %logic.rhs9446 +logic.rhs9446: + %t166 = load ptr, ptr %a148 + %t167 = icmp eq ptr %t166, null + br label %logic.rend9448 +logic.rend9448: + br label %logic.end9447 +logic.end9447: + %t168 = phi i1 [ true, %logic.from9445 ], [ %t167, %logic.rend9448 ] + br i1 %t168, label %then9449, label %endif9451 +then9449: + %t169 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 1 + %t170 = load { ptr, i64, i64 }, ptr %t169 + store { ptr, i64, i64 } %t170, ptr %a172 + store { ptr, i64, i64 } { ptr @.str.6407, i64 33, 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.cimport.Header, ptr %a122, i32 0, i32 0 + %t176 = load { ptr, i64, i64 }, ptr %t175 + store { ptr, i64, i64 } %t174, ptr %a178 + store { ptr, i64, i64 } %t176, ptr %a179 + call void @finch_str_concat(ptr %a177, ptr %a178, ptr %a179) + store { ptr, i64, i64 } %t174, ptr %a180 + call void @finch_str_drop(ptr %a180) + %t181 = load { ptr, i64, i64 }, ptr %a177 + store { ptr, i64, i64 } %t181, ptr %a183 + store { ptr, i64, i64 } { ptr @.str.6408, i64 1, i64 0 }, ptr %a184 + call void @finch_str_concat(ptr %a182, ptr %a183, ptr %a184) + store { ptr, i64, i64 } %t181, ptr %a185 + call void @finch_str_drop(ptr %a185) + %t186 = load { ptr, i64, i64 }, ptr %a182 + call void @finch_str_drop(ptr %a134) + call void @finch.drop.arr_ptr(ptr %a89) + call void @finch.drop.arr_str(ptr %a25) + call void @finch.drop.S_cimport_Importer(ptr %a6) + %t187 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t186, 2 + ret { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t187 +endif9451: + %t188 = load ptr, ptr %a148 + %t189 = call i32 @clang_getNumDiagnostics(ptr %t188) + %t190 = zext i32 %t189 to i64 + store i64 %t190, ptr %a191 + %t192 = load i64, ptr %a191 + store i64 0, ptr %a193 + br label %for.cond9452 +for.cond9452: + %t194 = load i64, ptr %a193 + %t195 = icmp slt i64 %t194, %t192 + br i1 %t195, label %for.body9453, label %for.end9455 +for.body9453: + %t196 = load ptr, ptr %a148 + %t197 = load i64, ptr %a193 + %t198 = trunc i64 %t197 to i32 + %t199 = call ptr @clang_getDiagnostic(ptr %t196, i32 %t198) + store ptr %t199, ptr %a200 + %t201 = load ptr, ptr %a200 + %t202 = call i32 @clang_getDiagnosticSeverity(ptr %t201) + %t203 = icmp sge i32 %t202, 3 + br i1 %t203, label %then9456, label %endif9458 +then9456: + %t204 = load ptr, ptr %a200 + %t205 = call [2 x i64] @clang_getDiagnosticSpelling(ptr %t204) + store [2 x i64] %t205, ptr %a206 + %t207 = load %S.C.CXString, ptr %a206 + %t208 = call { ptr, i64, i64 } @finch.cimport.text(%S.C.CXString %t207) store { ptr, i64, i64 } %t208, ptr %a209 - 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 %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 + %t210 = load ptr, ptr %a200 + call void @clang_disposeDiagnostic(ptr %t210) + %t211 = load { ptr, i64, i64 }, ptr %a209 + store { ptr, i64, i64 } %t211, ptr %a212 + store { ptr, i64, i64 } { ptr @.str.6410, i64 14, i64 0 }, ptr %a214 + %t215 = call i64 @finch_str_find(ptr %a212, ptr %a214) + %t216 = icmp sge i64 %t215, 0 + br i1 %t216, label %then9459, label %endif9461 +then9459: + %t217 = load { ptr, i64, i64 }, ptr %a209 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.6189, i64 548) - %t222 = load { ptr, i64, i64 }, ptr %a219 - store { ptr, i64, i64 } %t222, ptr %a223 - 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.6188, i64 548) - %t228 = load { ptr, i64, i64 }, ptr %a216 - store { ptr, i64, i64 } %t228, ptr %a229 - %t230 = load { ptr, i64, i64 }, ptr %a229 - %t231 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 0 - %t232 = load { ptr, i64, i64 }, ptr %t231 - store { ptr, i64, i64 } %t230, ptr %a233 - 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 %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.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 - %t244 = load { ptr, i64, i64 }, ptr %t243 - store { ptr, i64, i64 } %t242, 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.6193, i64 1, i64 0 }, ptr %a251 + %t220 = load { ptr, i64, i64 }, ptr %a209 + store { ptr, i64, i64 } %t220, ptr %a221 + %t223 = getelementptr inbounds { ptr, i64, i64 }, ptr %a209, i32 0, i32 1 + %t224 = load i64, ptr %t223 + call void @finch_str_sub(ptr %a222, ptr %a221, i64 1, i64 %t224, ptr @.str.6412, i64 552) + %t225 = load { ptr, i64, i64 }, ptr %a222 + store { ptr, i64, i64 } %t225, ptr %a226 + store { ptr, i64, i64 } { ptr @.str.6414, i64 1, i64 0 }, ptr %a228 + %t229 = call i64 @finch_str_find(ptr %a226, ptr %a228) + store { ptr, i64, i64 } %t225, ptr %a230 + call void @finch_str_drop(ptr %a230) + %t231 = add i64 %t229, 1 + call void @finch_str_sub(ptr %a219, ptr %a218, i64 1, i64 %t231, ptr @.str.6411, i64 552) + %t232 = load { ptr, i64, i64 }, ptr %a219 + store { ptr, i64, i64 } %t232, ptr %a233 + %t234 = load { ptr, i64, i64 }, ptr %a233 + %t235 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 0 + %t236 = load { ptr, i64, i64 }, ptr %t235 + store { ptr, i64, i64 } %t234, ptr %a237 + store { ptr, i64, i64 } %t236, ptr %a238 + %t239 = call i32 @finch_str_eq(ptr %a237, ptr %a238) + %t240 = icmp ne i32 %t239, 0 + br i1 %t240, label %then9462, label %endif9464 +then9462: + %t241 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 1 + %t242 = load { ptr, i64, i64 }, ptr %t241 + store { ptr, i64, i64 } %t242, ptr %a244 + store { ptr, i64, i64 } { ptr @.str.6415, i64 34, 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.cimport.Header, ptr %a122, i32 0, i32 0 + %t248 = load { ptr, i64, i64 }, ptr %t247 + store { ptr, i64, i64 } %t246, 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 - %t253 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t252, 2 - ret { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t253 -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.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 - store { ptr, i64, i64 } %t259, ptr %a262 - store { ptr, i64, i64 } %t260, ptr %a263 - 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.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 - %t270 = load { ptr, i64, i64 }, ptr %t269 - store { ptr, i64, i64 } %t268, ptr %a272 - store { ptr, i64, i64 } %t270, ptr %a273 - 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.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 -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.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 - %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 } %t246, ptr %a252 + call void @finch_str_drop(ptr %a252) + %t253 = load { ptr, i64, i64 }, ptr %a249 + store { ptr, i64, i64 } %t253, ptr %a255 + store { ptr, i64, i64 } { ptr @.str.6416, i64 1, i64 0 }, ptr %a256 + call void @finch_str_concat(ptr %a254, ptr %a255, ptr %a256) + store { ptr, i64, i64 } %t253, ptr %a257 + call void @finch_str_drop(ptr %a257) + %t258 = load { ptr, i64, i64 }, ptr %a254 + call void @finch_str_drop(ptr %a233) + call void @finch_str_drop(ptr %a209) + call void @finch_str_drop(ptr %a134) + call void @finch.drop.arr_ptr(ptr %a89) + call void @finch.drop.arr_str(ptr %a25) + call void @finch.drop.S_cimport_Importer(ptr %a6) + %t259 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t258, 2 + ret { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t259 +endif9464: + %t260 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 1 + %t261 = load { ptr, i64, i64 }, ptr %t260 + store { ptr, i64, i64 } %t261, ptr %a263 + store { ptr, i64, i64 } { ptr @.str.6417, i64 34, i64 0 }, ptr %a264 + call void @finch_str_concat(ptr %a262, ptr %a263, ptr %a264) + %t265 = load { ptr, i64, i64 }, ptr %a262 + %t266 = load { ptr, i64, i64 }, ptr %a233 + store { ptr, i64, i64 } %t265, ptr %a268 + store { ptr, i64, i64 } %t266, ptr %a269 + call void @finch_str_concat(ptr %a267, ptr %a268, ptr %a269) + store { ptr, i64, i64 } %t265, ptr %a270 + call void @finch_str_drop(ptr %a270) + %t271 = load { ptr, i64, i64 }, ptr %a267 + store { ptr, i64, i64 } %t271, ptr %a273 + store { ptr, i64, i64 } { ptr @.str.6418, i64 10, i64 0 }, ptr %a274 + call void @finch_str_concat(ptr %a272, ptr %a273, ptr %a274) + store { ptr, i64, i64 } %t271, ptr %a275 + call void @finch_str_drop(ptr %a275) + %t276 = load { ptr, i64, i64 }, ptr %a272 + %t277 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 0 + %t278 = load { ptr, i64, i64 }, ptr %t277 + store { ptr, i64, i64 } %t276, ptr %a280 + store { ptr, i64, i64 } %t278, ptr %a281 + call void @finch_str_concat(ptr %a279, ptr %a280, ptr %a281) + store { ptr, i64, i64 } %t276, ptr %a282 + call void @finch_str_drop(ptr %a282) + %t283 = load { ptr, i64, i64 }, ptr %a279 + store { ptr, i64, i64 } %t283, ptr %a285 + store { ptr, i64, i64 } { ptr @.str.6419, i64 60, i64 0 }, ptr %a286 + call void @finch_str_concat(ptr %a284, ptr %a285, ptr %a286) + store { ptr, i64, i64 } %t283, ptr %a287 + call void @finch_str_drop(ptr %a287) + %t288 = load { ptr, i64, i64 }, ptr %a284 + call void @finch_str_drop(ptr %a233) + call void @finch_str_drop(ptr %a209) + call void @finch_str_drop(ptr %a134) + call void @finch.drop.arr_ptr(ptr %a89) + call void @finch.drop.arr_str(ptr %a25) + call void @finch.drop.S_cimport_Importer(ptr %a6) + %t289 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t288, 2 + ret { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t289 +endif9461: + %t290 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 1 + %t291 = load { ptr, i64, i64 }, ptr %t290 store { ptr, i64, i64 } %t291, ptr %a293 - store { ptr, i64, i64 } { ptr @.str.6198, i64 16, i64 0 }, ptr %a294 + store { ptr, i64, i64 } { ptr @.str.6420, i64 19, 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 - store { ptr, i64, i64 } %t295, ptr %a298 - store { ptr, i64, i64 } %t296, ptr %a299 - call void @finch_str_concat(ptr %a297, ptr %a298, ptr %a299) - %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 -endif8959: - %t302 = load ptr, ptr %a197 - call void @clang_disposeDiagnostic(ptr %t302) - br label %for.step8955 -for.step8955: - %t303 = load i64, ptr %a190 - %t304 = add i64 %t303, 1 - store i64 %t304, ptr %a190 - 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 - %t307 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 0 - %t308 = load { ptr, i64, i64 }, ptr %t307 - %t309 = getelementptr inbounds %S.cimport.Importer, ptr %a6, i32 0, i32 2 - store { ptr, i64, i64 } %t308, ptr %a310 - call void @finch_str_copy(ptr %a311, ptr %a310) - %t312 = load { ptr, i64, i64 }, ptr %a311 - store { ptr, i64, i64 } %t312, ptr %t309 - %t314 = load ptr, ptr %a147 - call void @clang_getTranslationUnitCursor(ptr sret(%S.C.CXCursor) align 16 %a313, ptr %t314) - %t315 = load %S.C.CXCursor, ptr %a313 - store %S.C.CXCursor %t315, ptr %a316 - %t317 = call i32 @clang_visitChildren(ptr %a316, ptr @finch.c.cimport.visitTop, ptr %a6) - %t318 = load ptr, ptr %a147 - call void @clang_disposeTranslationUnit(ptr %t318) - br label %each.step8944 -each.step8944: - %t319 = load i64, ptr %a114 - %t320 = add i64 %t319, 1 - store i64 %t320, ptr %a114 - 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 - %t323 = load %S.cimport.CImports, ptr %t322 - store %S.cimport.CImports %t323, ptr %a324 - call void @finch.copy.S_cimport_CImports(ptr %a325, ptr %a324) - %t326 = load %S.cimport.CImports, ptr %a325 - %t327 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t328 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t327, %S.cimport.CImports %t326, 1 - ret { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t328 + %t296 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 0 + %t297 = load { ptr, i64, i64 }, ptr %t296 + store { ptr, i64, i64 } %t295, ptr %a299 + store { ptr, i64, i64 } %t297, ptr %a300 + call void @finch_str_concat(ptr %a298, ptr %a299, ptr %a300) + store { ptr, i64, i64 } %t295, ptr %a301 + call void @finch_str_drop(ptr %a301) + %t302 = load { ptr, i64, i64 }, ptr %a298 + store { ptr, i64, i64 } %t302, ptr %a304 + store { ptr, i64, i64 } { ptr @.str.6421, i64 16, i64 0 }, ptr %a305 + call void @finch_str_concat(ptr %a303, ptr %a304, ptr %a305) + store { ptr, i64, i64 } %t302, ptr %a306 + call void @finch_str_drop(ptr %a306) + %t307 = load { ptr, i64, i64 }, ptr %a303 + %t308 = load { ptr, i64, i64 }, ptr %a209 + store { ptr, i64, i64 } %t307, ptr %a310 + store { ptr, i64, i64 } %t308, ptr %a311 + call void @finch_str_concat(ptr %a309, ptr %a310, ptr %a311) + store { ptr, i64, i64 } %t307, ptr %a312 + call void @finch_str_drop(ptr %a312) + %t313 = load { ptr, i64, i64 }, ptr %a309 + call void @finch_str_drop(ptr %a209) + call void @finch_str_drop(ptr %a134) + call void @finch.drop.arr_ptr(ptr %a89) + call void @finch.drop.arr_str(ptr %a25) + call void @finch.drop.S_cimport_Importer(ptr %a6) + %t314 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t313, 2 + ret { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t314 +endif9458: + %t315 = load ptr, ptr %a200 + call void @clang_disposeDiagnostic(ptr %t315) + br label %for.step9454 +for.step9454: + %t316 = load i64, ptr %a193 + %t317 = add i64 %t316, 1 + store i64 %t317, ptr %a193 + br label %for.cond9452 +for.end9455: + %t318 = load ptr, ptr %a148 + %t319 = getelementptr inbounds %S.cimport.Importer, ptr %a6, i32 0, i32 1 + store ptr %t318, ptr %t319 + %t320 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 0 + %t321 = load { ptr, i64, i64 }, ptr %t320 + %t322 = getelementptr inbounds %S.cimport.Importer, ptr %a6, i32 0, i32 2 + store { ptr, i64, i64 } %t321, ptr %a323 + call void @finch_str_copy(ptr %a324, ptr %a323) + %t325 = load { ptr, i64, i64 }, ptr %a324 + %t326 = load { ptr, i64, i64 }, ptr %t322 + store { ptr, i64, i64 } %t325, ptr %t322 + store { ptr, i64, i64 } %t326, ptr %a327 + call void @finch_str_drop(ptr %a327) + %t329 = load ptr, ptr %a148 + call void @clang_getTranslationUnitCursor(ptr sret(%S.C.CXCursor) align 16 %a328, ptr %t329) + %t330 = load %S.C.CXCursor, ptr %a328 + store %S.C.CXCursor %t330, ptr %a331 + %t332 = call i32 @clang_visitChildren(ptr %a331, ptr @finch.c.cimport.visitTop, ptr %a6) + %t333 = load ptr, ptr %a148 + call void @clang_disposeTranslationUnit(ptr %t333) + call void @finch_str_drop(ptr %a134) + br label %each.step9443 +each.step9443: + %t334 = load i64, ptr %a114 + %t335 = add i64 %t334, 1 + store i64 %t335, ptr %a114 + br label %each.cond9441 +each.end9444: + %t336 = load ptr, ptr %a113 + call void @clang_disposeIndex(ptr %t336) + %t337 = getelementptr inbounds %S.cimport.Importer, ptr %a6, i32 0, i32 0 + %t338 = load %S.cimport.CImports, ptr %t337 + store %S.cimport.CImports %t338, ptr %a339 + call void @finch.copy.S_cimport_CImports(ptr %a340, ptr %a339) + %t341 = load %S.cimport.CImports, ptr %a340 + call void @finch.drop.arr_ptr(ptr %a89) + call void @finch.drop.arr_str(ptr %a25) + call void @finch.drop.S_cimport_Importer(ptr %a6) + %t342 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 + %t343 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t342, %S.cimport.CImports %t341, 1 + ret { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t343 +} + +define internal { ptr, i64, i64 } @finch.host.quote({ 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.6424, i64 1, i64 0 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.6425, 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.6422, i64 1, i64 0 }, ptr %a9 + store { ptr, i64, i64 } %t7, ptr %a10 + call void @finch_str_concat(ptr %a8, ptr %a9, ptr %a10) + store { ptr, i64, i64 } %t7, ptr %a11 + call void @finch_str_drop(ptr %a11) + %t12 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t12, ptr %a14 + store { ptr, i64, i64 } { ptr @.str.6426, i64 1, i64 0 }, ptr %a15 + call void @finch_str_concat(ptr %a13, ptr %a14, ptr %a15) + store { ptr, i64, i64 } %t12, ptr %a16 + call void @finch_str_drop(ptr %a16) + %t17 = load { ptr, i64, i64 }, ptr %a13 + ret { ptr, i64, i64 } %t17 +} + +define internal i64 @finch.host.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 + store { ptr, i64, i64 } %p0, ptr %a1 + %t2 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t2, ptr %a4 + call void @finch_str_copy(ptr %a3, ptr %a4) + %t5 = call i64 @finch_shell(ptr %a3) + call void @finch_str_drop(ptr %a3) + ret i64 %t5 +} + +define internal { ptr, i64, i64 } @finch.host.nullDevice() { +entry: + + ret { ptr, i64, i64 } { ptr @.str.6427, i64 9, i64 0 } +} + +define internal { ptr, i64, i64 } @finch.host.tempDir() { +entry: + %a5 = alloca { ptr, i64, i64 }, align 16 + %a7 = alloca { ptr, i64, i64 }, align 16 + %a8 = alloca { ptr, i64, i64 }, align 16 + %a10 = 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 + %a22 = alloca { ptr, i64, i64 }, align 16 + %t1 = extractvalue { ptr, i64, i64 } { ptr @.str.6428, i64 6, i64 0 }, 0 + %t2 = icmp eq ptr %t1, null + %t3 = select i1 %t2, ptr @.str.6429, 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) + %t6 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } %t6, ptr %a7 + call void @finch_str_copy(ptr %a8, ptr %a7) + %t9 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t9, ptr %a10 + %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 %then9465, label %endif9467 +then9465: + %t14 = load { ptr, i64, i64 }, ptr %a10 + store { ptr, i64, i64 } %t14, ptr %a15 + store { ptr, i64, i64 } { ptr @.str.6431, i64 1, i64 0 }, ptr %a17 + %t18 = call i32 @finch_str_ends(ptr %a15, ptr %a17) + %t19 = icmp ne i32 %t18, 0 + br i1 %t19, label %then9468, label %endif9470 +then9468: + %t20 = load { ptr, i64, i64 }, ptr %a10 + store { ptr, i64, i64 } %t20, ptr %a21 + %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %a10, i32 0, i32 1 + %t24 = load i64, ptr %t23 + %t25 = sub i64 %t24, 1 + call void @finch_str_sub(ptr %a22, ptr %a21, i64 0, i64 %t25, ptr @.str.6432, i64 25) + %t26 = load { ptr, i64, i64 }, ptr %a22 + call void @finch_str_drop(ptr %a10) + ret { ptr, i64, i64 } %t26 +endif9470: + %t27 = load { ptr, i64, i64 }, ptr %a10 + ret { ptr, i64, i64 } %t27 +endif9467: + call void @finch_str_drop(ptr %a10) + ret { ptr, i64, i64 } { ptr @.str.6433, i64 4, i64 0 } +} + +define internal { ptr, i64, i64 } @finch.host.pathSeparator() { +entry: + + ret { ptr, i64, i64 } { ptr @.str.6434, i64 1, i64 0 } +} + +define internal i64 @finch.host.pid() { +entry: + + %t1 = call i32 @getpid() + %t2 = sext i32 %t1 to i64 + ret i64 %t2 +} + +define internal { ptr, i64, i64 } @finch.host.cwd() { +entry: + %a5 = alloca { ptr, i64, i64 }, align 16 + %a7 = alloca { ptr, i64, i64 }, align 16 + %a8 = alloca { ptr, i64, i64 }, align 16 + %t1 = extractvalue { ptr, i64, i64 } { ptr @.str.6435, i64 3, i64 0 }, 0 + %t2 = icmp eq ptr %t1, null + %t3 = select i1 %t2, ptr @.str.6436, 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) + %t6 = load { ptr, i64, i64 }, ptr %a5 + 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 +} + +define internal { ptr, i64, i64 } @finch.host.cacheDir() { +entry: + %a5 = alloca { ptr, i64, i64 }, align 16 + %a7 = alloca { ptr, i64, i64 }, align 16 + %a8 = alloca { ptr, i64, i64 }, align 16 + %a10 = 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 + %a23 = 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 + %a33 = alloca { ptr, i64, i64 }, align 16 + %a34 = alloca { ptr, i64, i64 }, align 16 + %a35 = alloca { ptr, i64, i64 }, align 16 + %a38 = 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 + %t1 = extractvalue { ptr, i64, i64 } { ptr @.str.6437, i64 14, i64 0 }, 0 + %t2 = icmp eq ptr %t1, null + %t3 = select i1 %t2, ptr @.str.6438, 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) + %t6 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } %t6, ptr %a7 + call void @finch_str_copy(ptr %a8, ptr %a7) + %t9 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t9, ptr %a10 + %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 %then9471, label %endif9473 +then9471: + %t14 = load { ptr, i64, i64 }, ptr %a10 + store { ptr, i64, i64 } %t14, ptr %a16 + store { ptr, i64, i64 } { ptr @.str.6439, i64 6, i64 0 }, ptr %a17 + call void @finch_str_concat(ptr %a15, ptr %a16, ptr %a17) + %t18 = load { ptr, i64, i64 }, ptr %a15 + call void @finch_str_drop(ptr %a10) + ret { ptr, i64, i64 } %t18 +endif9473: + %t19 = extractvalue { ptr, i64, i64 } { ptr @.str.6440, i64 4, i64 0 }, 0 + %t20 = icmp eq ptr %t19, null + %t21 = select i1 %t20, ptr @.str.6441, 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) + %t24 = load { ptr, i64, i64 }, ptr %a23 + 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 { ptr, i64, i64 }, ptr %a28, i32 0, i32 1 + %t30 = load i64, ptr %t29 + %t31 = icmp sgt i64 %t30, 0 + br i1 %t31, label %then9474, label %endif9476 +then9474: + %t32 = load { ptr, i64, i64 }, ptr %a28 + store { ptr, i64, i64 } %t32, ptr %a34 + store { ptr, i64, i64 } { ptr @.str.6442, i64 13, 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_str_drop(ptr %a28) + call void @finch_str_drop(ptr %a10) + ret { ptr, i64, i64 } %t36 +endif9476: + %t37 = call { ptr, i64, i64 } @finch.host.tempDir() + store { ptr, i64, i64 } %t37, ptr %a39 + store { ptr, i64, i64 } { ptr @.str.6443, i64 12, i64 0 }, ptr %a40 + call void @finch_str_concat(ptr %a38, ptr %a39, ptr %a40) + store { ptr, i64, i64 } %t37, ptr %a41 + call void @finch_str_drop(ptr %a41) + %t42 = load { ptr, i64, i64 }, ptr %a38 + call void @finch_str_drop(ptr %a28) + call void @finch_str_drop(ptr %a10) + ret { ptr, i64, i64 } %t42 +} + +define internal void @finch.host.binaryStdio() { +entry: + + ret void +} + +define internal void @finch.host.makeDirs({ 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 + %a7 = 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 + store { ptr, i64, i64 } %p0, ptr %a1 + %t2 = load { ptr, i64, i64 }, ptr %a1 + %t3 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t2) + store { ptr, i64, i64 } { ptr @.str.6444, i64 9, i64 0 }, ptr %a5 + store { ptr, i64, i64 } %t3, ptr %a6 + call void @finch_str_concat(ptr %a4, ptr %a5, ptr %a6) + store { ptr, i64, i64 } %t3, ptr %a7 + call void @finch_str_drop(ptr %a7) + %t8 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t8, ptr %a10 + call void @finch_str_copy(ptr %a9, ptr %a10) + %t11 = call i64 @finch_shell(ptr %a9) + call void @finch_str_drop(ptr %a9) + store { ptr, i64, i64 } %t8, ptr %a12 + call void @finch_str_drop(ptr %a12) + ret void +} + +define internal void @finch.host.remove({ 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 + store { ptr, i64, i64 } %p0, ptr %a1 + %t2 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t2, ptr %a4 + call void @finch_str_copy(ptr %a3, ptr %a4) + %t5 = call i32 @finch_delete_file(ptr %a3) + call void @finch_str_drop(ptr %a3) + %t6 = icmp ne i32 %t5, 0 + ret void +} + +define internal void @finch.host.removeTree({ 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 + %a7 = 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 + store { ptr, i64, i64 } %p0, ptr %a1 + %t2 = load { ptr, i64, i64 }, ptr %a1 + %t3 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t2) + store { ptr, i64, i64 } { ptr @.str.6445, i64 7, i64 0 }, ptr %a5 + store { ptr, i64, i64 } %t3, ptr %a6 + call void @finch_str_concat(ptr %a4, ptr %a5, ptr %a6) + store { ptr, i64, i64 } %t3, ptr %a7 + call void @finch_str_drop(ptr %a7) + %t8 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t8, ptr %a10 + call void @finch_str_copy(ptr %a9, ptr %a10) + %t11 = call i64 @finch_shell(ptr %a9) + call void @finch_str_drop(ptr %a9) + store { ptr, i64, i64 } %t8, ptr %a12 + call void @finch_str_drop(ptr %a12) + ret void +} + +define internal void @finch.host.move({ ptr, i64, i64 } %p0, { ptr, i64, i64 } %p1) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a2 = 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 + %a8 = alloca { ptr, i64, i64 }, align 16 + %a10 = 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 + %a17 = 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 + %a21 = 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 + store { ptr, i64, i64 } %p0, ptr %a1 + store { ptr, i64, i64 } %p1, ptr %a2 + %t3 = load { ptr, i64, i64 }, ptr %a1 + %t4 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t3) + store { ptr, i64, i64 } { ptr @.str.6446, i64 3, i64 0 }, ptr %a6 + store { ptr, i64, i64 } %t4, ptr %a7 + call void @finch_str_concat(ptr %a5, ptr %a6, ptr %a7) + store { ptr, i64, i64 } %t4, ptr %a8 + call void @finch_str_drop(ptr %a8) + %t9 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } %t9, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.6447, i64 1, i64 0 }, ptr %a12 + call void @finch_str_concat(ptr %a10, ptr %a11, ptr %a12) + store { ptr, i64, i64 } %t9, ptr %a13 + call void @finch_str_drop(ptr %a13) + %t14 = load { ptr, i64, i64 }, ptr %a10 + %t15 = load { ptr, i64, i64 }, ptr %a2 + %t16 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t15) + store { ptr, i64, i64 } %t14, ptr %a18 + store { ptr, i64, i64 } %t16, ptr %a19 + call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) + store { ptr, i64, i64 } %t14, ptr %a20 + call void @finch_str_drop(ptr %a20) + store { ptr, i64, i64 } %t16, ptr %a21 + call void @finch_str_drop(ptr %a21) + %t22 = load { ptr, i64, i64 }, ptr %a17 + store { ptr, i64, i64 } %t22, ptr %a24 + call void @finch_str_copy(ptr %a23, ptr %a24) + %t25 = call i64 @finch_shell(ptr %a23) + call void @finch_str_drop(ptr %a23) + store { ptr, i64, i64 } %t22, ptr %a26 + call void @finch_str_drop(ptr %a26) + ret void } define internal { ptr, i64, i64 } @finch.platform.firstLine({ ptr, i64, i64 } %p0) { @@ -81213,118 +97943,170 @@ entry: %a8 = alloca { ptr, i64, i64 }, align 16 %a9 = alloca { ptr, i64, i64 }, align 16 %a11 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 + %a12 = alloca { ptr, i64, i64 }, align 16 %a19 = alloca { ptr, i64, i64 }, align 16 + %a20 = 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_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.6201, i64 1, i64 0 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.6450, 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 %range8966, label %inrange8967 -range8966: - call void @finch_panic_index(ptr @.str.6202, i64 20, i64 0, i64 %t13) + store { ptr, i64, i64 } %t5, ptr %a11 + call void @finch_str_drop(ptr %a11) + store { ptr, i64, i64 } %t10, ptr %a12 + %t13 = load { ptr, i64, i64 }, ptr %a12 + %t14 = extractvalue { ptr, i64, i64 } %t13, 1 + %t15 = icmp uge i64 0, %t14 + br i1 %t15, label %range9477, label %inrange9478 +range9477: + call void @finch_panic_index(ptr @.str.6451, i64 21, i64 0, i64 %t14) unreachable -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 - store { ptr, i64, i64 } %t17, ptr %a18 - call void @finch_str_trim(ptr %a19, ptr %a18) - %t20 = load { ptr, i64, i64 }, ptr %a19 - ret { ptr, i64, i64 } %t20 +inrange9478: + %t16 = extractvalue { ptr, i64, i64 } %t13, 0 + %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 0 + %t18 = load { ptr, i64, i64 }, ptr %t17 + store { ptr, i64, i64 } %t18, ptr %a19 + call void @finch_str_trim(ptr %a20, ptr %a19) + %t21 = load { ptr, i64, i64 }, ptr %a20 + call void @finch.drop.arr_str(ptr %a12) + ret { ptr, i64, i64 } %t21 } define internal { ptr, i64, i64 } @finch.platform.hostTriple() { entry: - %a1 = alloca { ptr, i64, i64 }, align 16 + %a2 = 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 { 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 %a12 = alloca { ptr, i64, i64 }, align 16 - %a15 = 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 - %a22 = alloca { ptr, i64, i64 }, align 16 + %a18 = alloca { ptr, i64, i64 }, align 16 + %a19 = alloca { ptr, i64, i64 }, align 16 + %a21 = 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 %a27 = 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 %a31 = alloca { ptr, i64, i64 }, align 16 %a32 = alloca { ptr, i64, i64 }, align 16 - %a34 = 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 %a38 = alloca { ptr, i64, i64 }, align 16 %a39 = alloca { ptr, i64, i64 }, align 16 - 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.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.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 - call void @finch_str_copy(ptr %a11, ptr %a12) - %t13 = call i64 @finch_shell(ptr %a11) - %t14 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t14, ptr %a15 - store { ptr, i64, i64 } zeroinitializer, ptr %a16 - store { ptr, i64, i64 } zeroinitializer, ptr %a17 - %t18 = call i32 @finch_try_read_file(ptr %a16, ptr %a15, ptr %a17) - %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.failed8968, label %or.ok8969 -or.failed8968: - store { ptr, i64, i64 } %t20, ptr %a22 - 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.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.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 - call void @finch_str_copy(ptr %a34, ptr %a35) - %t36 = call i64 @finch_shell(ptr %a34) - %t37 = load { ptr, i64, i64 }, ptr %a24 - store { ptr, i64, i64 } %t37, ptr %a38 - call void @finch_str_trim(ptr %a39, ptr %a38) - %t40 = load { ptr, i64, i64 }, ptr %a39 - %t41 = extractvalue { ptr, i64, i64 } %t40, 1 - %t42 = icmp eq i64 %t41, 0 - 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 + %a42 = alloca { ptr, i64, i64 }, align 16 + %a44 = alloca { ptr, i64, i64 }, align 16 + %a45 = alloca { ptr, i64, i64 }, align 16 + %a46 = alloca { ptr, i64, i64 }, align 16 + %a51 = 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 + %a60 = alloca { ptr, i64, i64 }, align 16 + %t1 = call { ptr, i64, i64 } @finch.host.tempDir() + store { ptr, i64, i64 } %t1, ptr %a3 + store { ptr, i64, i64 } { ptr @.str.6453, i64 14, i64 0 }, ptr %a4 + call void @finch_str_concat(ptr %a2, ptr %a3, ptr %a4) + store { ptr, i64, i64 } %t1, ptr %a5 + call void @finch_str_drop(ptr %a5) + %t6 = load { ptr, i64, i64 }, ptr %a2 + %t7 = call i64 @finch.host.pid() + call void @finch_str_from_int(ptr %a8, i64 %t7) + %t9 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t6, ptr %a11 + store { ptr, i64, i64 } %t9, ptr %a12 + call void @finch_str_concat(ptr %a10, ptr %a11, ptr %a12) + store { ptr, i64, i64 } %t6, ptr %a13 + call void @finch_str_drop(ptr %a13) + store { ptr, i64, i64 } %t9, ptr %a14 + call void @finch_str_drop(ptr %a14) + %t15 = load { ptr, i64, i64 }, ptr %a10 + store { ptr, i64, i64 } %t15, ptr %a17 + store { ptr, i64, i64 } { ptr @.str.6454, i64 4, i64 0 }, ptr %a18 + call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) + store { ptr, i64, i64 } %t15, ptr %a19 + call void @finch_str_drop(ptr %a19) + %t20 = load { ptr, i64, i64 }, ptr %a16 + store { ptr, i64, i64 } %t20, ptr %a21 + %t22 = load { ptr, i64, i64 }, ptr %a21 + %t23 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t22) + store { ptr, i64, i64 } { ptr @.str.6455, i64 21, i64 0 }, ptr %a25 + store { ptr, i64, i64 } %t23, ptr %a26 + call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) + store { ptr, i64, i64 } %t23, ptr %a27 + call void @finch_str_drop(ptr %a27) + %t28 = load { ptr, i64, i64 }, ptr %a24 + store { ptr, i64, i64 } %t28, ptr %a30 + store { ptr, i64, i64 } { ptr @.str.6456, i64 4, i64 0 }, ptr %a31 + call void @finch_str_concat(ptr %a29, ptr %a30, ptr %a31) + store { ptr, i64, i64 } %t28, ptr %a32 + call void @finch_str_drop(ptr %a32) + %t33 = load { ptr, i64, i64 }, ptr %a29 + %t34 = call { ptr, i64, i64 } @finch.host.nullDevice() + store { ptr, i64, i64 } %t33, ptr %a36 + store { ptr, i64, i64 } %t34, ptr %a37 + call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) + store { ptr, i64, i64 } %t33, ptr %a38 + call void @finch_str_drop(ptr %a38) + store { ptr, i64, i64 } %t34, ptr %a39 + call void @finch_str_drop(ptr %a39) + %t40 = load { ptr, i64, i64 }, ptr %a35 + %t41 = call i64 @finch.host.run({ ptr, i64, i64 } %t40) + store { ptr, i64, i64 } %t40, ptr %a42 + call void @finch_str_drop(ptr %a42) + %t43 = load { ptr, i64, i64 }, ptr %a21 + store { ptr, i64, i64 } %t43, ptr %a44 + store { ptr, i64, i64 } zeroinitializer, ptr %a45 + store { ptr, i64, i64 } zeroinitializer, ptr %a46 + %t47 = call i32 @finch_try_read_file(ptr %a45, ptr %a44, ptr %a46) + %t48 = icmp eq i32 %t47, 0 + %t49 = load { ptr, i64, i64 }, ptr %a46 + %t50 = load { ptr, i64, i64 }, ptr %a45 + br i1 %t48, label %or.failed9479, label %or.ok9480 +or.failed9479: + store { ptr, i64, i64 } %t49, ptr %a51 + call void @finch_str_drop(ptr %a51) + br label %or.bend9481 +or.bend9481: + br label %or.end9482 +or.ok9480: + br label %or.end9482 +or.end9482: + %t52 = phi { ptr, i64, i64 } [ { ptr @.str.6457, i64 0, i64 0 }, %or.bend9481 ], [ %t50, %or.ok9480 ] + store { ptr, i64, i64 } %t52, ptr %a53 + %t54 = load { ptr, i64, i64 }, ptr %a21 + call void @finch.host.remove({ ptr, i64, i64 } %t54) + %t55 = load { ptr, i64, i64 }, ptr %a53 + store { ptr, i64, i64 } %t55, ptr %a56 + call void @finch_str_trim(ptr %a57, ptr %a56) + %t58 = load { ptr, i64, i64 }, ptr %a57 + %t59 = extractvalue { ptr, i64, i64 } %t58, 1 + store { ptr, i64, i64 } %t58, ptr %a60 + call void @finch_str_drop(ptr %a60) + %t61 = icmp eq i64 %t59, 0 + br i1 %t61, label %then9483, label %endif9485 +then9483: + call void @finch_str_drop(ptr %a53) + call void @finch_str_drop(ptr %a21) + ret { ptr, i64, i64 } { ptr @.str.6459, i64 24, i64 0 } +endif9485: + %t62 = load { ptr, i64, i64 }, ptr %a53 + %t63 = call { ptr, i64, i64 } @finch.platform.firstLine({ ptr, i64, i64 } %t62) + call void @finch_str_drop(ptr %a53) + call void @finch_str_drop(ptr %a21) + ret { ptr, i64, i64 } %t63 } define internal %S.platform.Target @finch.platform.select({ ptr, i64, i64 } %p0) { @@ -81337,81 +98119,98 @@ entry: %a13 = alloca { ptr, i64, i64 }, align 16 %a14 = 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 + %a19 = alloca { ptr, i64, i64 }, align 16 + %a20 = 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 - %a32 = 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 %a38 = alloca { ptr, i64, i64 }, align 16 %a39 = alloca { ptr, i64, i64 }, align 16 %a44 = alloca { ptr, i64, i64 }, align 16 %a45 = 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 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 + %a52 = alloca { ptr, i64, i64 }, align 16 + %a53 = alloca { ptr, i64, i64 }, align 16 %a57 = alloca { ptr, i64, i64 }, align 16 - %a62 = 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 - %a66 = alloca %S.platform.Target, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 + %a64 = alloca { ptr, i64, i64 }, align 16 + %a65 = alloca { ptr, i64, i64 }, align 16 %a70 = alloca { ptr, i64, i64 }, align 16 + %a72 = alloca { ptr, i64, i64 }, align 16 %a74 = alloca { ptr, i64, i64 }, align 16 %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 + %a78 = alloca %S.platform.Target, 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 + %a86 = 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 - %a90 = 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 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = 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 + %a100 = alloca { ptr, i64, i64 }, align 16 + %a101 = alloca { ptr, i64, i64 }, align 16 + %a102 = 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 + %a115 = 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 - %a124 = 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 + %a123 = 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 - %a132 = alloca { ptr, i64, i64 }, align 16 + %a136 = alloca { ptr, i64, i64 }, align 16 + %a137 = 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 + %a142 = alloca { ptr, i64, i64 }, align 16 + %a143 = 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 - %a150 = alloca i1, align 16 + %a150 = 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 - %a154 = 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 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca i1, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 + %a162 = alloca i1, align 16 + %a164 = alloca { ptr, i64, i64 }, align 16 + %a165 = alloca { ptr, i64, i64 }, align 16 + %a166 = alloca { ptr, i64, i64 }, 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 i1, align 16 + %a192 = alloca { ptr, i64, i64 }, align 16 %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = 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 - %a242 = alloca %S.platform.Target, align 16 - %a243 = alloca %S.platform.Target, align 16 + %a202 = alloca { ptr, i64, i64 }, align 16 + %a204 = alloca { ptr, i64, i64 }, align 16 + %a205 = alloca { ptr, i64, i64 }, align 16 + %a207 = alloca { ptr, i64, i64 }, align 16 + %a213 = alloca { ptr, i64, i64 }, align 16 + %a214 = alloca { ptr, i64, i64 }, align 16 + %a217 = alloca { ptr, i64, i64 }, align 16 + %a225 = alloca { ptr, i64, i64 }, align 16 + %a237 = alloca { ptr, i64, i64 }, align 16 + %a241 = alloca { ptr, i64, i64 }, align 16 + %a242 = alloca { ptr, i64, i64 }, align 16 + %a243 = alloca { ptr, i64, i64 }, align 16 + %a247 = alloca { ptr, i64, i64 }, align 16 + %a249 = alloca { ptr, i64, i64 }, align 16 + %a250 = alloca { ptr, i64, i64 }, align 16 + %a253 = alloca { ptr, i64, i64 }, align 16 + %a256 = alloca { ptr, i64, i64 }, align 16 + %a259 = alloca { ptr, i64, i64 }, align 16 + %a267 = alloca { ptr, i64, i64 }, align 16 + %a279 = alloca { ptr, i64, i64 }, align 16 store { ptr, i64, i64 } %p0, ptr %a1 %t2 = call { ptr, i64, i64 } @finch.platform.hostTriple() store { ptr, i64, i64 } %t2, ptr %a3 @@ -81423,469 +98222,532 @@ 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 %then8975, label %else8976 -then8975: + br i1 %t11, label %then9486, label %else9487 +then9486: %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 + %t16 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t15, ptr %a8 - br label %endif8977 -else8976: - %t16 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t16, ptr %a17 - 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 %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.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 %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.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.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.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.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: + call void @finch_str_drop(ptr %a17) + br label %endif9488 +else9487: + %t18 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t18, ptr %a19 + store { ptr, i64, i64 } { ptr @.str.6460, i64 7, i64 0 }, ptr %a20 + %t21 = call i32 @finch_str_eq(ptr %a19, ptr %a20) + %t22 = icmp ne i32 %t21, 0 + br i1 %t22, label %then9489, label %else9490 +then9489: + %t23 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.6461, i64 18, i64 0 }, ptr %a8 + store { ptr, i64, i64 } %t23, ptr %a24 + call void @finch_str_drop(ptr %a24) + br label %endif9491 +else9490: + %t25 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t25, ptr %a26 + store { ptr, i64, i64 } { ptr @.str.6462, i64 5, i64 0 }, ptr %a27 + %t28 = call i32 @finch_str_eq(ptr %a26, ptr %a27) + %t29 = icmp ne i32 %t28, 0 + br i1 %t29, label %then9492, label %else9493 +then9492: + %t30 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.6463, i64 24, i64 0 }, ptr %a8 + store { ptr, i64, i64 } %t30, ptr %a31 + call void @finch_str_drop(ptr %a31) + br label %endif9494 +else9493: + %t32 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t32, ptr %a33 + store { ptr, i64, i64 } { ptr @.str.6464, i64 5, i64 0 }, ptr %a34 + %t35 = call i32 @finch_str_eq(ptr %a33, ptr %a34) + %t36 = icmp ne i32 %t35, 0 + br label %logic.from9495 +logic.from9495: + br i1 %t36, label %logic.end9497, label %logic.rhs9496 +logic.rhs9496: %t37 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t37, ptr %a38 - store { ptr, i64, i64 } { ptr @.str.6218, i64 11, i64 0 }, ptr %a39 + store { ptr, i64, i64 } { ptr @.str.6465, i64 7, i64 0 }, ptr %a39 %t40 = call i32 @finch_str_eq(ptr %a38, ptr %a39) %t41 = icmp ne i32 %t40, 0 - 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: + br label %logic.rend9498 +logic.rend9498: + br label %logic.end9497 +logic.end9497: + %t42 = phi i1 [ true, %logic.from9495 ], [ %t41, %logic.rend9498 ] + br label %logic.from9499 +logic.from9499: + br i1 %t42, label %logic.end9501, label %logic.rhs9500 +logic.rhs9500: %t43 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t43, ptr %a44 - store { ptr, i64, i64 } { ptr @.str.6220, i64 5, i64 0 }, ptr %a45 + store { ptr, i64, i64 } { ptr @.str.6466, i64 11, i64 0 }, ptr %a45 %t46 = call i32 @finch_str_eq(ptr %a44, ptr %a45) %t47 = icmp ne i32 %t46, 0 - 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.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.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.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.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) - %t64 = load { ptr, i64, i64 }, ptr %a63 - %t65 = insertvalue %S.platform.Target zeroinitializer, { ptr, i64, i64 } %t64, 0 - 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.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.from9005 -logic.from9005: - br i1 %t72, label %logic.end9007, label %logic.rhs9006 -logic.rhs9006: + br label %logic.rend9502 +logic.rend9502: + br label %logic.end9501 +logic.end9501: + %t48 = phi i1 [ true, %logic.from9499 ], [ %t47, %logic.rend9502 ] + br i1 %t48, label %then9503, label %else9504 +then9503: + %t49 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.6467, i64 25, i64 0 }, ptr %a8 + store { ptr, i64, i64 } %t49, ptr %a50 + call void @finch_str_drop(ptr %a50) + br label %endif9505 +else9504: + %t51 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t51, ptr %a52 + store { ptr, i64, i64 } { ptr @.str.6468, i64 5, i64 0 }, ptr %a53 + %t54 = call i32 @finch_str_eq(ptr %a52, ptr %a53) + %t55 = icmp ne i32 %t54, 0 + br i1 %t55, label %then9506, label %endif9508 +then9506: + %t56 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t56, ptr %a57 + store { ptr, i64, i64 } { ptr @.str.6470, i64 7, i64 0 }, ptr %a59 + %t60 = call i32 @finch_str_starts(ptr %a57, ptr %a59) + %t61 = icmp ne i32 %t60, 0 + br label %logic.from9509 +logic.from9509: + br i1 %t61, label %logic.end9511, label %logic.rhs9510 +logic.rhs9510: + %t62 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t62, ptr %a63 + store { ptr, i64, i64 } { ptr @.str.6472, i64 5, i64 0 }, ptr %a65 + %t66 = call i32 @finch_str_starts(ptr %a63, ptr %a65) + %t67 = icmp ne i32 %t66, 0 + br label %logic.rend9512 +logic.rend9512: + br label %logic.end9511 +logic.end9511: + %t68 = phi i1 [ true, %logic.from9509 ], [ %t67, %logic.rend9512 ] + br i1 %t68, label %then9513, label %else9514 +then9513: + %t69 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.6473, i64 24, i64 0 }, ptr %a8 + store { ptr, i64, i64 } %t69, ptr %a70 + call void @finch_str_drop(ptr %a70) + br label %endif9515 +else9514: + %t71 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.6474, i64 25, i64 0 }, ptr %a8 + store { ptr, i64, i64 } %t71, ptr %a72 + call void @finch_str_drop(ptr %a72) + br label %endif9515 +endif9515: + br label %endif9508 +endif9508: + br label %endif9505 +endif9505: + br label %endif9494 +endif9494: + br label %endif9491 +endif9491: + br label %endif9488 +endif9488: %t73 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t73, ptr %a74 - 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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.6255, i64 0, i64 0 }, ptr %t178 - %t179 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 1 + call void @finch_str_copy(ptr %a75, ptr %a74) + %t76 = load { ptr, i64, i64 }, ptr %a75 + %t77 = insertvalue %S.platform.Target zeroinitializer, { ptr, i64, i64 } %t76, 0 + store %S.platform.Target %t77, ptr %a78 + %t79 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t79, ptr %a80 + store { ptr, i64, i64 } { ptr @.str.6476, i64 7, i64 0 }, ptr %a82 + %t83 = call i64 @finch_str_find(ptr %a80, ptr %a82) + %t84 = icmp sge i64 %t83, 0 + br label %logic.from9516 +logic.from9516: + br i1 %t84, label %logic.end9518, label %logic.rhs9517 +logic.rhs9517: + %t85 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t85, ptr %a86 + store { ptr, i64, i64 } { ptr @.str.6478, i64 5, i64 0 }, ptr %a88 + %t89 = call i64 @finch_str_find(ptr %a86, ptr %a88) + %t90 = icmp sge i64 %t89, 0 + br label %logic.rend9519 +logic.rend9519: + br label %logic.end9518 +logic.end9518: + %t91 = phi i1 [ true, %logic.from9516 ], [ %t90, %logic.rend9519 ] + br label %logic.from9520 +logic.from9520: + br i1 %t91, label %logic.end9522, label %logic.rhs9521 +logic.rhs9521: + %t92 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t92, ptr %a93 + store { ptr, i64, i64 } { ptr @.str.6480, i64 4, i64 0 }, ptr %a95 + %t96 = call i64 @finch_str_find(ptr %a93, ptr %a95) + %t97 = icmp sge i64 %t96, 0 + br label %logic.rend9523 +logic.rend9523: + br label %logic.end9522 +logic.end9522: + %t98 = phi i1 [ true, %logic.from9520 ], [ %t97, %logic.rend9523 ] + br label %logic.from9524 +logic.from9524: + br i1 %t98, label %logic.end9526, label %logic.rhs9525 +logic.rhs9525: + %t99 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t99, ptr %a100 + store { ptr, i64, i64 } { ptr @.str.6482, i64 5, i64 0 }, ptr %a102 + %t103 = call i64 @finch_str_find(ptr %a100, ptr %a102) + %t104 = icmp sge i64 %t103, 0 + br label %logic.rend9527 +logic.rend9527: + br label %logic.end9526 +logic.end9526: + %t105 = phi i1 [ true, %logic.from9524 ], [ %t104, %logic.rend9527 ] + %t106 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 1 + store i1 %t105, ptr %t106 + %t107 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t107, ptr %a108 + store { ptr, i64, i64 } { ptr @.str.6484, i64 4, i64 0 }, ptr %a110 + %t111 = call i64 @finch_str_find(ptr %a108, ptr %a110) + %t112 = icmp sge i64 %t111, 0 + %t113 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 2 + store i1 %t112, ptr %t113 + %t114 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t114, ptr %a115 + store { ptr, i64, i64 } { ptr @.str.6486, i64 5, i64 0 }, ptr %a117 + %t118 = call i64 @finch_str_find(ptr %a115, ptr %a117) + %t119 = icmp sge i64 %t118, 0 + br label %logic.from9528 +logic.from9528: + br i1 %t119, label %logic.end9530, label %logic.rhs9529 +logic.rhs9529: + %t120 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t120, ptr %a121 + store { ptr, i64, i64 } { ptr @.str.6488, i64 6, i64 0 }, ptr %a123 + %t124 = call i64 @finch_str_find(ptr %a121, ptr %a123) + %t125 = icmp sge i64 %t124, 0 + br label %logic.rend9531 +logic.rend9531: + br label %logic.end9530 +logic.end9530: + %t126 = phi i1 [ true, %logic.from9528 ], [ %t125, %logic.rend9531 ] + br label %logic.from9532 +logic.from9532: + br i1 %t126, label %logic.end9534, label %logic.rhs9533 +logic.rhs9533: + %t127 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t127, ptr %a128 + store { ptr, i64, i64 } { ptr @.str.6490, i64 5, i64 0 }, ptr %a130 + %t131 = call i64 @finch_str_find(ptr %a128, ptr %a130) + %t132 = icmp sge i64 %t131, 0 + br label %logic.rend9535 +logic.rend9535: + br label %logic.end9534 +logic.end9534: + %t133 = phi i1 [ true, %logic.from9532 ], [ %t132, %logic.rend9535 ] + %t134 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 3 + store i1 %t133, ptr %t134 + %t135 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t135, ptr %a136 + store { ptr, i64, i64 } { ptr @.str.6492, i64 7, i64 0 }, ptr %a138 + %t139 = call i32 @finch_str_starts(ptr %a136, ptr %a138) + %t140 = icmp ne i32 %t139, 0 + br label %logic.from9536 +logic.from9536: + br i1 %t140, label %logic.end9538, label %logic.rhs9537 +logic.rhs9537: + %t141 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t141, ptr %a142 + store { ptr, i64, i64 } { ptr @.str.6494, i64 5, i64 0 }, ptr %a144 + %t145 = call i32 @finch_str_starts(ptr %a142, ptr %a144) + %t146 = icmp ne i32 %t145, 0 + br label %logic.rend9539 +logic.rend9539: + br label %logic.end9538 +logic.end9538: + %t147 = phi i1 [ true, %logic.from9536 ], [ %t146, %logic.rend9539 ] + %t148 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 4 + store i1 %t147, ptr %t148 + %t149 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t149, ptr %a150 + store { ptr, i64, i64 } { ptr @.str.6496, i64 7, i64 0 }, ptr %a152 + %t153 = call i32 @finch_str_starts(ptr %a150, ptr %a152) + %t154 = icmp ne i32 %t153, 0 + br label %logic.from9540 +logic.from9540: + br i1 %t154, label %logic.end9542, label %logic.rhs9541 +logic.rhs9541: + %t155 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t155, ptr %a156 + store { ptr, i64, i64 } { ptr @.str.6498, i64 5, i64 0 }, ptr %a158 + %t159 = call i32 @finch_str_starts(ptr %a156, ptr %a158) + %t160 = icmp ne i32 %t159, 0 + br label %logic.rend9543 +logic.rend9543: + br label %logic.end9542 +logic.end9542: + %t161 = phi i1 [ true, %logic.from9540 ], [ %t160, %logic.rend9543 ] + store i1 %t161, ptr %a162 + %t163 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t163, ptr %a164 + store { ptr, i64, i64 } { ptr @.str.6500, i64 5, i64 0 }, ptr %a166 + %t167 = call i64 @finch_str_find(ptr %a164, ptr %a166) + %t168 = icmp sge i64 %t167, 0 + br label %logic.from9544 +logic.from9544: + br i1 %t168, label %logic.end9546, label %logic.rhs9545 +logic.rhs9545: + %t169 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t169, ptr %a170 + store { ptr, i64, i64 } { ptr @.str.6502, i64 6, i64 0 }, ptr %a172 + %t173 = call i64 @finch_str_find(ptr %a170, ptr %a172) + %t174 = icmp sge i64 %t173, 0 + br label %logic.rend9547 +logic.rend9547: + br label %logic.end9546 +logic.end9546: + %t175 = phi i1 [ true, %logic.from9544 ], [ %t174, %logic.rend9547 ] + store i1 %t175, ptr %a176 + %t177 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 1 + %t178 = load i1, ptr %t177 + br label %logic.from9548 +logic.from9548: + br i1 %t178, label %logic.end9550, label %logic.rhs9549 +logic.rhs9549: + %t179 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 3 %t180 = load i1, ptr %t179 - 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.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.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) - %t187 = load { ptr, i64, i64 }, ptr %a186 - store { ptr, i64, i64 } %t187, ptr %a188 - call void @finch_str_copy(ptr %a189, ptr %a188) - %t190 = load { ptr, i64, i64 }, ptr %a189 - store { ptr, i64, i64 } %t190, ptr %a191 - %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 %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 %endif9050 -else9049: - %t200 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 5 - %t201 = load i1, ptr %t200 - 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.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.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.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.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.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.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 %then9069, label %else9070 -then9069: - %t218 = load { ptr, i64, i64 }, ptr %a8 - 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 %endif9071 -else9070: - %t224 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 7 - 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.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.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.6263, i64 5, i64 0 }, ptr %t230 - br label %endif9078 -else9077: - %t231 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 5 + %t181 = load i1, ptr %a176 + %t182 = icmp ne i1 %t180, %t181 + br label %logic.rend9551 +logic.rend9551: + br label %logic.end9550 +logic.end9550: + %t183 = phi i1 [ true, %logic.from9548 ], [ %t182, %logic.rend9551 ] + br label %logic.from9552 +logic.from9552: + br i1 %t183, label %logic.end9554, label %logic.rhs9553 +logic.rhs9553: + %t184 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 4 + %t185 = load i1, ptr %t184 + %t186 = load i1, ptr %a162 + %t187 = icmp ne i1 %t185, %t186 + br label %logic.rend9555 +logic.rend9555: + br label %logic.end9554 +logic.end9554: + %t188 = phi i1 [ true, %logic.from9552 ], [ %t187, %logic.rend9555 ] + %t189 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 5 + store i1 %t188, ptr %t189 + %t190 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 6 + %t191 = load { ptr, i64, i64 }, ptr %t190 + store { ptr, i64, i64 } { ptr @.str.6503, i64 0, i64 0 }, ptr %t190 + store { ptr, i64, i64 } %t191, ptr %a192 + call void @finch_str_drop(ptr %a192) + %t193 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 1 + %t194 = load i1, ptr %t193 + br i1 %t194, label %then9556, label %endif9558 +then9556: + %t195 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 6 + %t196 = load { ptr, i64, i64 }, ptr %t195 + store { ptr, i64, i64 } { ptr @.str.6504, i64 4, i64 0 }, ptr %t195 + store { ptr, i64, i64 } %t196, ptr %a197 + call void @finch_str_drop(ptr %a197) + br label %endif9558 +endif9558: + %t198 = extractvalue { ptr, i64, i64 } { ptr @.str.6505, i64 8, i64 0 }, 0 + %t199 = icmp eq ptr %t198, null + %t200 = select i1 %t199, ptr @.str.6506, ptr %t198 + %t201 = call ptr @getenv(ptr %t200) + store { ptr, i64, i64 } zeroinitializer, ptr %a202 + call void @finch_str_from_c(ptr %a202, ptr %t201) + %t203 = load { ptr, i64, i64 }, ptr %a202 + store { ptr, i64, i64 } %t203, ptr %a204 + call void @finch_str_copy(ptr %a205, ptr %a204) + %t206 = load { ptr, i64, i64 }, ptr %a205 + store { ptr, i64, i64 } %t206, ptr %a207 + %t208 = getelementptr inbounds { ptr, i64, i64 }, ptr %a207, i32 0, i32 1 + %t209 = load i64, ptr %t208 + %t210 = icmp sgt i64 %t209, 0 + br i1 %t210, label %then9559, label %else9560 +then9559: + %t211 = load { ptr, i64, i64 }, ptr %a207 + %t212 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 7 + store { ptr, i64, i64 } %t211, ptr %a213 + call void @finch_str_copy(ptr %a214, ptr %a213) + %t215 = load { ptr, i64, i64 }, ptr %a214 + %t216 = load { ptr, i64, i64 }, ptr %t212 + store { ptr, i64, i64 } %t215, ptr %t212 + store { ptr, i64, i64 } %t216, ptr %a217 + call void @finch_str_drop(ptr %a217) + br label %endif9561 +else9560: + %t218 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 5 + %t219 = load i1, ptr %t218 + br label %logic.from9562 +logic.from9562: + br i1 %t219, label %logic.rhs9563, label %logic.end9564 +logic.rhs9563: + %t220 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 1 + %t221 = load i1, ptr %t220 + br label %logic.rend9565 +logic.rend9565: + br label %logic.end9564 +logic.end9564: + %t222 = phi i1 [ false, %logic.from9562 ], [ %t221, %logic.rend9565 ] + br i1 %t222, label %then9566, label %else9567 +then9566: + %t223 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 7 + %t224 = load { ptr, i64, i64 }, ptr %t223 + store { ptr, i64, i64 } { ptr @.str.6507, i64 22, i64 0 }, ptr %t223 + store { ptr, i64, i64 } %t224, ptr %a225 + call void @finch_str_drop(ptr %a225) + br label %endif9568 +else9567: + %t226 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 5 + %t227 = load i1, ptr %t226 + br label %logic.from9569 +logic.from9569: + br i1 %t227, label %logic.rhs9570, label %logic.end9571 +logic.rhs9570: + %t228 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 4 + %t229 = load i1, ptr %t228 + br label %logic.rend9572 +logic.rend9572: + br label %logic.end9571 +logic.end9571: + %t230 = phi i1 [ false, %logic.from9569 ], [ %t229, %logic.rend9572 ] + br label %logic.from9573 +logic.from9573: + br i1 %t230, label %logic.rhs9574, label %logic.end9575 +logic.rhs9574: + %t231 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 3 %t232 = load i1, ptr %t231 - 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.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.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.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) - %t244 = load %S.platform.Target, ptr %a243 - ret %S.platform.Target %t244 + %t233 = xor i1 %t232, true + br label %logic.rend9576 +logic.rend9576: + br label %logic.end9575 +logic.end9575: + %t234 = phi i1 [ false, %logic.from9573 ], [ %t233, %logic.rend9576 ] + br i1 %t234, label %then9577, label %else9578 +then9577: + %t235 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 7 + %t236 = load { ptr, i64, i64 }, ptr %t235 + store { ptr, i64, i64 } { ptr @.str.6508, i64 21, i64 0 }, ptr %t235 + store { ptr, i64, i64 } %t236, ptr %a237 + call void @finch_str_drop(ptr %a237) + br label %endif9579 +else9578: + %t238 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 5 + %t239 = load i1, ptr %t238 + br i1 %t239, label %then9580, label %else9581 +then9580: + %t240 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.6509, i64 15, 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 + %t245 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 7 + %t246 = load { ptr, i64, i64 }, ptr %t245 + store { ptr, i64, i64 } %t244, ptr %t245 + store { ptr, i64, i64 } %t246, ptr %a247 + call void @finch_str_drop(ptr %a247) + br label %endif9582 +else9581: + %t248 = call { ptr, i64, i64 } @finch.host.pathSeparator() + store { ptr, i64, i64 } %t248, ptr %a249 + store { ptr, i64, i64 } { ptr @.str.6510, i64 1, i64 0 }, ptr %a250 + %t251 = call i32 @finch_str_eq(ptr %a249, ptr %a250) + %t252 = icmp ne i32 %t251, 0 + store { ptr, i64, i64 } %t248, ptr %a253 + call void @finch_str_drop(ptr %a253) + br i1 %t252, label %then9583, label %else9584 +then9583: + %t254 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 7 + %t255 = load { ptr, i64, i64 }, ptr %t254 + store { ptr, i64, i64 } { ptr @.str.6511, i64 5, i64 0 }, ptr %t254 + store { ptr, i64, i64 } %t255, ptr %a256 + call void @finch_str_drop(ptr %a256) + br label %endif9585 +else9584: + %t257 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 7 + %t258 = load { ptr, i64, i64 }, ptr %t257 + store { ptr, i64, i64 } { ptr @.str.6512, i64 2, i64 0 }, ptr %t257 + store { ptr, i64, i64 } %t258, ptr %a259 + call void @finch_str_drop(ptr %a259) + br label %endif9585 +endif9585: + br label %endif9582 +endif9582: + br label %endif9579 +endif9579: + br label %endif9568 +endif9568: + br label %endif9561 +endif9561: + %t260 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 5 + %t261 = load i1, ptr %t260 + br label %logic.from9586 +logic.from9586: + br i1 %t261, label %logic.rhs9587, label %logic.end9588 +logic.rhs9587: + %t262 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 1 + %t263 = load i1, ptr %t262 + br label %logic.rend9589 +logic.rend9589: + br label %logic.end9588 +logic.end9588: + %t264 = phi i1 [ false, %logic.from9586 ], [ %t263, %logic.rend9589 ] + br i1 %t264, label %then9590, label %else9591 +then9590: + %t265 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 8 + %t266 = load { ptr, i64, i64 }, ptr %t265 + store { ptr, i64, i64 } { ptr @.str.6513, i64 5, i64 0 }, ptr %t265 + store { ptr, i64, i64 } %t266, ptr %a267 + call void @finch_str_drop(ptr %a267) + br label %endif9592 +else9591: + %t268 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 5 + %t269 = load i1, ptr %t268 + br label %logic.from9593 +logic.from9593: + br i1 %t269, label %logic.rhs9594, label %logic.end9595 +logic.rhs9594: + %t270 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 4 + %t271 = load i1, ptr %t270 + br label %logic.rend9596 +logic.rend9596: + br label %logic.end9595 +logic.end9595: + %t272 = phi i1 [ false, %logic.from9593 ], [ %t271, %logic.rend9596 ] + br label %logic.from9597 +logic.from9597: + br i1 %t272, label %logic.rhs9598, label %logic.end9599 +logic.rhs9598: + %t273 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 3 + %t274 = load i1, ptr %t273 + %t275 = xor i1 %t274, true + br label %logic.rend9600 +logic.rend9600: + br label %logic.end9599 +logic.end9599: + %t276 = phi i1 [ false, %logic.from9597 ], [ %t275, %logic.rend9600 ] + br i1 %t276, label %then9601, label %endif9603 +then9601: + %t277 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 8 + %t278 = load { ptr, i64, i64 }, ptr %t277 + store { ptr, i64, i64 } { ptr @.str.6514, i64 13, i64 0 }, ptr %t277 + store { ptr, i64, i64 } %t278, ptr %a279 + call void @finch_str_drop(ptr %a279) + br label %endif9603 +endif9603: + br label %endif9592 +endif9592: + %t280 = load %S.platform.Target, ptr %a78 + call void @finch_str_drop(ptr %a207) + call void @finch_str_drop(ptr %a8) + call void @finch_str_drop(ptr %a3) + ret %S.platform.Target %t280 } define internal i1 @finch.platform.charIsSigned(%S.platform.Target %p0) { @@ -81895,28 +98757,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.from9090 -logic.from9090: - br i1 %t4, label %logic.end9092, label %logic.rhs9091 -logic.rhs9091: + br label %logic.from9604 +logic.from9604: + br i1 %t4, label %logic.end9606, label %logic.rhs9605 +logic.rhs9605: %t5 = getelementptr inbounds %S.platform.Target, ptr %a1, i32 0, i32 3 %t6 = load i1, ptr %t5 - 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: + br label %logic.rend9607 +logic.rend9607: + br label %logic.end9606 +logic.end9606: + %t7 = phi i1 [ true, %logic.from9604 ], [ %t6, %logic.rend9607 ] + br label %logic.from9608 +logic.from9608: + br i1 %t7, label %logic.end9610, label %logic.rhs9609 +logic.rhs9609: %t8 = getelementptr inbounds %S.platform.Target, ptr %a1, i32 0, i32 1 %t9 = load i1, ptr %t8 - br label %logic.rend9097 -logic.rend9097: - br label %logic.end9096 -logic.end9096: - %t10 = phi i1 [ true, %logic.from9094 ], [ %t9, %logic.rend9097 ] + br label %logic.rend9611 +logic.rend9611: + br label %logic.end9610 +logic.end9610: + %t10 = phi i1 [ true, %logic.from9608 ], [ %t9, %logic.rend9611 ] ret i1 %t10 } @@ -81935,14 +98797,14 @@ entry: store { ptr, i64, i64 } %p0, ptr %a1 store i32 2166136261, ptr %a2 store i64 0, ptr %a3 - br label %each.cond9098 -each.cond9098: + br label %each.cond9612 +each.cond9612: %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.body9099, label %each.end9101 -each.body9099: + br i1 %t7, label %each.body9613, label %each.end9615 +each.body9613: %t8 = load ptr, ptr %a1 %t9 = getelementptr inbounds i8, ptr %t8, i64 %t6 %t10 = load i8, ptr %t9 @@ -81953,22 +98815,22 @@ each.body9099: %t15 = xor i32 %t12, %t14 %t16 = mul i32 %t15, 16777619 store i32 %t16, ptr %a2 - br label %each.step9100 -each.step9100: + br label %each.step9614 +each.step9614: %t17 = load i64, ptr %a3 %t18 = add i64 %t17, 1 store i64 %t18, ptr %a3 - br label %each.cond9098 -each.end9101: - store { ptr, i64, i64 } { ptr @.str.6265, i64 16, i64 0 }, ptr %a19 + br label %each.cond9612 +each.end9615: + store { ptr, i64, i64 } { ptr @.str.6515, i64 16, i64 0 }, ptr %a19 store { ptr, i64, i64 } zeroinitializer, ptr %a20 store i64 0, ptr %a21 - br label %for.cond9102 -for.cond9102: + br label %for.cond9616 +for.cond9616: %t22 = load i64, ptr %a21 %t23 = icmp slt i64 %t22, 8 - br i1 %t23, label %for.body9103, label %for.end9105 -for.body9103: + br i1 %t23, label %for.body9617, label %for.end9619 +for.body9617: %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %a20, i32 0, i32 1 %t25 = load i32, ptr %a2 %t26 = load i64, ptr %a21 @@ -81981,11 +98843,11 @@ for.body9103: %t33 = load { ptr, i64, i64 }, ptr %a19 %t34 = extractvalue { ptr, i64, i64 } %t33, 1 %t35 = icmp uge i64 %t32, %t34 - br i1 %t35, label %range9106, label %inrange9107 -range9106: - call void @finch_panic_index(ptr @.str.6266, i64 17, i64 %t32, i64 %t34) + br i1 %t35, label %range9620, label %inrange9621 +range9620: + call void @finch_panic_index(ptr @.str.6516, i64 16, i64 %t32, i64 %t34) unreachable -inrange9107: +inrange9621: %t36 = extractvalue { ptr, i64, i64 } %t33, 0 %t37 = getelementptr inbounds i8, ptr %t36, i64 %t32 %t38 = load i8, ptr %t37 @@ -81998,114 +98860,29 @@ inrange9107: %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.step9104 -for.step9104: + br label %for.step9618 +for.step9618: %t45 = load i64, ptr %a21 %t46 = add i64 %t45, 1 store i64 %t46, ptr %a21 - br label %for.cond9102 -for.end9105: + br label %for.cond9616 +for.end9619: %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %a20, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.6267, i64 0, i64 0 }, ptr %a48 + store { ptr, i64, i64 } { ptr @.str.6517, i64 0, i64 0 }, ptr %a48 call void @finch_str_join(ptr %a49, ptr %a20, ptr %a48) %t50 = load { ptr, i64, i64 }, ptr %a49 + call void @finch.drop.arr_str(ptr %a20) + call void @finch_str_drop(ptr %a19) ret { ptr, i64, i64 } %t50 } define internal { ptr, i64, i64 } @finch.linker.quote({ 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 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a14 = 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.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.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.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 -} - -define internal { ptr, i64, i64 } @finch.linker.cacheDir() { -entry: - %a5 = alloca { ptr, i64, i64 }, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a8 = alloca { ptr, i64, i64 }, align 16 - %a10 = 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 - %a23 = 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 - %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.6273, i64 14, i64 0 }, 0 - %t2 = icmp eq ptr %t1, null - %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) - %t6 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t6, ptr %a7 - call void @finch_str_copy(ptr %a8, ptr %a7) - %t9 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t9, ptr %a10 - %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 %then9108, label %endif9110 -then9108: - %t14 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t14, ptr %a16 - 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 -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.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) - %t24 = load { ptr, i64, i64 }, ptr %a23 - 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 { ptr, i64, i64 }, ptr %a28, i32 0, i32 1 - %t30 = load i64, ptr %t29 - %t31 = icmp sgt i64 %t30, 0 - 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.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 -endif9113: - ret { ptr, i64, i64 } { ptr @.str.6279, i64 16, i64 0 } + %t3 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t2) + ret { ptr, i64, i64 } %t3 } define internal { ptr, i64, i64 } @finch.linker.libFlags({ ptr, i64, i64 } %p0, %S.platform.Target %p1) { @@ -82120,163 +98897,228 @@ entry: %a17 = alloca { ptr, i64, i64 }, align 16 %a18 = alloca { ptr, i64, i64 }, align 16 %a19 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 + %a20 = alloca { ptr, i64, i64 }, align 16 + %a21 = 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 - %a32 = alloca { ptr, i64, i64 }, align 16 + %a30 = 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 %a38 = alloca { ptr, i64, i64 }, align 16 - %a40 = 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 %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca i64, align 16 + %a46 = 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 + %a52 = alloca { ptr, i64, i64 }, align 16 + %a54 = alloca { ptr, i64, i64 }, align 16 + %a55 = 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 + %a62 = 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 - %a66 = 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 %a70 = 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 %a74 = alloca { ptr, i64, i64 }, align 16 %a75 = alloca { ptr, i64, i64 }, align 16 %a76 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 + %a77 = alloca { ptr, i64, i64 }, align 16 + %a80 = alloca { ptr, i64, i64 }, align 16 + %a81 = 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 + %a92 = alloca { ptr, i64, i64 }, align 16 + %a97 = alloca { ptr, i64, i64 }, align 16 + %a99 = 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 + %a110 = alloca { ptr, i64, i64 }, align 16 + %a111 = alloca { ptr, i64, i64 }, align 16 + %a112 = alloca { ptr, i64, i64 }, align 16 + %a115 = alloca { ptr, i64, i64 }, align 16 store { ptr, i64, i64 } %p0, ptr %a1 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.6281, i64 10, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.6519, 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 %then9114, label %endif9116 -then9114: + br i1 %t8, label %then9622, label %endif9624 +then9622: %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.6283, i64 42) + call void @finch_str_sub(ptr %a11, ptr %a10, i64 0, i64 %t14, ptr @.str.6521, i64 28) %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.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 -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 %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.6285, i64 18, i64 0 }, ptr %a28 - store { ptr, i64, i64 } %t26, ptr %a29 + store { ptr, i64, i64 } %t15, ptr %a17 + call void @finch_str_drop(ptr %a17) + store { ptr, i64, i64 } { ptr @.str.6520, i64 11, i64 0 }, ptr %a19 + store { ptr, i64, i64 } %t16, ptr %a20 + call void @finch_str_concat(ptr %a18, ptr %a19, ptr %a20) + store { ptr, i64, i64 } %t16, ptr %a21 + call void @finch_str_drop(ptr %a21) + %t22 = load { ptr, i64, i64 }, ptr %a18 + ret { ptr, i64, i64 } %t22 +endif9624: + %t23 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 5 + %t24 = load i1, ptr %t23 + %t25 = xor i1 %t24, true + br i1 %t25, label %then9625, label %endif9627 +then9625: + %t26 = call { ptr, i64, i64 } @finch.host.tempDir() + store { ptr, i64, i64 } %t26, ptr %a28 + store { ptr, i64, i64 } { ptr @.str.6522, i64 17, i64 0 }, 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.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 + store { ptr, i64, i64 } %t26, ptr %a30 + call void @finch_str_drop(ptr %a30) + %t31 = load { ptr, i64, i64 }, ptr %a27 + %t32 = call i64 @finch.host.pid() + call void @finch_str_from_int(ptr %a33, i64 %t32) + %t34 = load { ptr, i64, i64 }, ptr %a33 + store { ptr, i64, i64 } %t31, ptr %a36 store { ptr, i64, i64 } %t34, 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.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 - call void @finch_str_copy(ptr %a44, ptr %a45) - %t46 = call i64 @finch_shell(ptr %a44) - store i64 %t46, ptr %a47 - %t48 = load i64, ptr %a47 - %t49 = icmp eq i64 %t48, 0 - 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.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 - store { ptr, i64, i64 } zeroinitializer, ptr %a58 - %t59 = call i32 @finch_try_read_file(ptr %a57, ptr %a56, ptr %a58) - %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.failed9127, label %or.ok9128 -or.failed9127: - store { ptr, i64, i64 } %t61, ptr %a63 - 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.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.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 - call void @finch_str_copy(ptr %a78, ptr %a79) - %t80 = call i64 @finch_shell(ptr %a78) - %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 %then9131, label %endif9133 -then9131: - %t84 = load { ptr, i64, i64 }, ptr %a68 - ret { ptr, i64, i64 } %t84 -endif9133: - br label %endif9126 -endif9126: - br label %endif9119 -endif9119: - %t85 = load { ptr, i64, i64 }, ptr %a1 - 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 - %t90 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t89) - ret { ptr, i64, i64 } %t90 + call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) + store { ptr, i64, i64 } %t31, ptr %a38 + call void @finch_str_drop(ptr %a38) + store { ptr, i64, i64 } %t34, ptr %a39 + call void @finch_str_drop(ptr %a39) + %t40 = load { ptr, i64, i64 }, ptr %a35 + store { ptr, i64, i64 } %t40, ptr %a42 + store { ptr, i64, i64 } { ptr @.str.6523, i64 4, i64 0 }, ptr %a43 + call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) + store { ptr, i64, i64 } %t40, ptr %a44 + call void @finch_str_drop(ptr %a44) + %t45 = load { ptr, i64, i64 }, ptr %a41 + store { ptr, i64, i64 } %t45, ptr %a46 + %t47 = load { ptr, i64, i64 }, ptr %a1 + %t48 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t47) + store { ptr, i64, i64 } { ptr @.str.6524, i64 18, i64 0 }, ptr %a50 + store { ptr, i64, i64 } %t48, ptr %a51 + call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) + store { ptr, i64, i64 } %t48, ptr %a52 + call void @finch_str_drop(ptr %a52) + %t53 = load { ptr, i64, i64 }, ptr %a49 + store { ptr, i64, i64 } %t53, ptr %a55 + store { ptr, i64, i64 } { ptr @.str.6525, i64 3, i64 0 }, ptr %a56 + call void @finch_str_concat(ptr %a54, ptr %a55, ptr %a56) + store { ptr, i64, i64 } %t53, ptr %a57 + call void @finch_str_drop(ptr %a57) + %t58 = load { ptr, i64, i64 }, ptr %a54 + %t59 = load { ptr, i64, i64 }, ptr %a46 + %t60 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t59) + store { ptr, i64, i64 } %t58, ptr %a62 + store { ptr, i64, i64 } %t60, ptr %a63 + call void @finch_str_concat(ptr %a61, ptr %a62, ptr %a63) + store { ptr, i64, i64 } %t58, ptr %a64 + call void @finch_str_drop(ptr %a64) + store { ptr, i64, i64 } %t60, ptr %a65 + call void @finch_str_drop(ptr %a65) + %t66 = load { ptr, i64, i64 }, ptr %a61 + store { ptr, i64, i64 } %t66, ptr %a68 + store { ptr, i64, i64 } { ptr @.str.6526, i64 4, i64 0 }, ptr %a69 + call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) + store { ptr, i64, i64 } %t66, ptr %a70 + call void @finch_str_drop(ptr %a70) + %t71 = load { ptr, i64, i64 }, ptr %a67 + %t72 = call { ptr, i64, i64 } @finch.host.nullDevice() + store { ptr, i64, i64 } %t71, ptr %a74 + store { ptr, i64, i64 } %t72, ptr %a75 + call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) + store { ptr, i64, i64 } %t71, ptr %a76 + call void @finch_str_drop(ptr %a76) + store { ptr, i64, i64 } %t72, ptr %a77 + call void @finch_str_drop(ptr %a77) + %t78 = load { ptr, i64, i64 }, ptr %a73 + %t79 = call i64 @finch.host.run({ ptr, i64, i64 } %t78) + store { ptr, i64, i64 } %t78, ptr %a80 + call void @finch_str_drop(ptr %a80) + store i64 %t79, ptr %a81 + %t82 = load i64, ptr %a81 + %t83 = icmp eq i64 %t82, 0 + br label %logic.from9628 +logic.from9628: + br i1 %t83, label %logic.rhs9629, label %logic.end9630 +logic.rhs9629: + %t84 = load { ptr, i64, i64 }, ptr %a46 + store { ptr, i64, i64 } %t84, ptr %a85 + %t86 = call i32 @finch_file_exists(ptr %a85) + %t87 = icmp ne i32 %t86, 0 + br label %logic.rend9631 +logic.rend9631: + br label %logic.end9630 +logic.end9630: + %t88 = phi i1 [ false, %logic.from9628 ], [ %t87, %logic.rend9631 ] + br i1 %t88, label %then9632, label %endif9634 +then9632: + %t89 = load { ptr, i64, i64 }, ptr %a46 + store { ptr, i64, i64 } %t89, ptr %a90 + store { ptr, i64, i64 } zeroinitializer, ptr %a91 + store { ptr, i64, i64 } zeroinitializer, ptr %a92 + %t93 = call i32 @finch_try_read_file(ptr %a91, ptr %a90, ptr %a92) + %t94 = icmp eq i32 %t93, 0 + %t95 = load { ptr, i64, i64 }, ptr %a92 + %t96 = load { ptr, i64, i64 }, ptr %a91 + br i1 %t94, label %or.failed9635, label %or.ok9636 +or.failed9635: + store { ptr, i64, i64 } %t95, ptr %a97 + call void @finch_str_drop(ptr %a97) + br label %or.bend9637 +or.bend9637: + br label %or.end9638 +or.ok9636: + br label %or.end9638 +or.end9638: + %t98 = phi { ptr, i64, i64 } [ { ptr @.str.6527, i64 0, i64 0 }, %or.bend9637 ], [ %t96, %or.ok9636 ] + store { ptr, i64, i64 } %t98, ptr %a99 + call void @finch_str_trim(ptr %a100, ptr %a99) + %t101 = load { ptr, i64, i64 }, ptr %a100 + store { ptr, i64, i64 } %t98, ptr %a102 + call void @finch_str_drop(ptr %a102) + store { ptr, i64, i64 } %t101, ptr %a103 + %t104 = load { ptr, i64, i64 }, ptr %a46 + call void @finch.host.remove({ ptr, i64, i64 } %t104) + %t105 = getelementptr inbounds { ptr, i64, i64 }, ptr %a103, i32 0, i32 1 + %t106 = load i64, ptr %t105 + %t107 = icmp sgt i64 %t106, 0 + br i1 %t107, label %then9639, label %endif9641 +then9639: + %t108 = load { ptr, i64, i64 }, ptr %a103 + call void @finch_str_drop(ptr %a46) + ret { ptr, i64, i64 } %t108 +endif9641: + call void @finch_str_drop(ptr %a103) + br label %endif9634 +endif9634: + call void @finch_str_drop(ptr %a46) + br label %endif9627 +endif9627: + %t109 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } { ptr @.str.6529, 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 + %t114 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t113) + store { ptr, i64, i64 } %t113, ptr %a115 + call void @finch_str_drop(ptr %a115) + ret { ptr, i64, i64 } %t114 } define internal { ptr, i64, i64 } @finch.linker.guessLib({ ptr, i64, i64 } %p0) { @@ -82292,16 +99134,19 @@ entry: %a16 = alloca { ptr, i64, i64 }, align 16 %a17 = 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 - %a30 = alloca i64, align 16 - %a33 = alloca i64, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 + %a27 = alloca { ptr, i64, i64 }, align 16 + %a28 = alloca { ptr, i64, i64 }, align 16 + %a32 = alloca i64, align 16 + %a35 = alloca i64, align 16 + %a50 = alloca { ptr, i64, i64 }, align 16 + %a51 = alloca { ptr, i64, i64 }, align 16 + %a55 = alloca { ptr, i64, i64 }, align 16 + %a82 = alloca { ptr, i64, i64 }, align 16 + %a83 = 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 store { ptr, i64, i64 } %p0, ptr %a1 %t2 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t2, ptr %a3 @@ -82310,145 +99155,155 @@ 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.6294, i64 1, i64 0 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.6531, i64 1, i64 0 }, ptr %a10 %t11 = call i64 @finch_str_find(ptr %a8, ptr %a10) store i64 %t11, ptr %a12 - br label %while.cond9134 -while.cond9134: + br label %while.cond9642 +while.cond9642: %t13 = load i64, ptr %a12 %t14 = icmp sge i64 %t13, 0 - br i1 %t14, label %while.body9135, label %while.end9136 -while.body9135: + br i1 %t14, label %while.body9643, label %while.end9644 +while.body9643: %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.6295, i64 63) + call void @finch_str_sub(ptr %a17, ptr %a16, i64 %t19, i64 %t21, ptr @.str.6532, i64 49) %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 } %t22, ptr %a6 store { ptr, i64, i64 } %t23, ptr %a24 - 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.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.cond9137 -for.cond9137: - %t34 = load i64, ptr %a33 - %t35 = icmp slt i64 %t34, %t32 - 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 %range9141, label %inrange9142 -range9141: - call void @finch_panic_index(ptr @.str.6298, i64 68, i64 %t36, i64 %t38) + call void @finch_str_drop(ptr %a24) + %t25 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t25, ptr %a26 + store { ptr, i64, i64 } { ptr @.str.6534, i64 1, i64 0 }, ptr %a28 + %t29 = call i64 @finch_str_find(ptr %a26, ptr %a28) + store i64 %t29, ptr %a12 + br label %while.cond9642 +while.end9644: + %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 + %t31 = load i64, ptr %t30 + store i64 %t31, ptr %a32 + %t33 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 + %t34 = load i64, ptr %t33 + store i64 0, ptr %a35 + br label %for.cond9645 +for.cond9645: + %t36 = load i64, ptr %a35 + %t37 = icmp slt i64 %t36, %t34 + br i1 %t37, label %for.body9646, label %for.end9648 +for.body9646: + %t38 = load i64, ptr %a35 + %t39 = load { ptr, i64, i64 }, ptr %a6 + %t40 = extractvalue { ptr, i64, i64 } %t39, 1 + %t41 = icmp uge i64 %t38, %t40 + br i1 %t41, label %range9649, label %inrange9650 +range9649: + call void @finch_panic_index(ptr @.str.6535, i64 54, i64 %t38, i64 %t40) unreachable -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 %then9143, label %endif9145 -then9143: - %t44 = load i64, ptr %a33 - store i64 %t44, ptr %a30 - 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.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.6299, i64 72) - %t51 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t51, ptr %a6 - 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.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 %range9152, label %inrange9153 -range9152: - call void @finch_panic_index(ptr @.str.6300, i64 73, i64 %t57, i64 %t59) +inrange9650: + %t42 = extractvalue { ptr, i64, i64 } %t39, 0 + %t43 = getelementptr inbounds i8, ptr %t42, i64 %t38 + %t44 = load i8, ptr %t43 + %t45 = icmp eq i8 %t44, 46 + br i1 %t45, label %then9651, label %endif9653 +then9651: + %t46 = load i64, ptr %a35 + store i64 %t46, ptr %a32 + br label %endif9653 +endif9653: + br label %for.step9647 +for.step9647: + %t47 = load i64, ptr %a35 + %t48 = add i64 %t47, 1 + store i64 %t48, ptr %a35 + br label %for.cond9645 +for.end9648: + %t49 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t49, ptr %a50 + %t52 = load i64, ptr %a32 + call void @finch_str_sub(ptr %a51, ptr %a50, i64 0, i64 %t52, ptr @.str.6536, i64 58) + %t53 = load { ptr, i64, i64 }, ptr %a51 + %t54 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t53, ptr %a6 + store { ptr, i64, i64 } %t54, ptr %a55 + call void @finch_str_drop(ptr %a55) + br label %while.cond9654 +while.cond9654: + %t56 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 + %t57 = load i64, ptr %t56 + %t58 = icmp sgt i64 %t57, 0 + br label %logic.from9657 +logic.from9657: + br i1 %t58, label %logic.rhs9658, label %logic.end9659 +logic.rhs9658: + %t59 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 + %t60 = load i64, ptr %t59 + %t61 = sub i64 %t60, 1 + %t62 = load { ptr, i64, i64 }, ptr %a6 + %t63 = extractvalue { ptr, i64, i64 } %t62, 1 + %t64 = icmp uge i64 %t61, %t63 + br i1 %t64, label %range9660, label %inrange9661 +range9660: + call void @finch_panic_index(ptr @.str.6537, i64 59, i64 %t61, i64 %t63) unreachable -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.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 %range9158, label %inrange9159 -range9158: - call void @finch_panic_index(ptr @.str.6301, i64 73, i64 %t68, i64 %t70) +inrange9661: + %t65 = extractvalue { ptr, i64, i64 } %t62, 0 + %t66 = getelementptr inbounds i8, ptr %t65, i64 %t61 + %t67 = load i8, ptr %t66 + %t68 = icmp uge i8 %t67, 48 + br label %logic.rend9662 +logic.rend9662: + br label %logic.end9659 +logic.end9659: + %t69 = phi i1 [ false, %logic.from9657 ], [ %t68, %logic.rend9662 ] + br label %logic.from9663 +logic.from9663: + br i1 %t69, label %logic.rhs9664, label %logic.end9665 +logic.rhs9664: + %t70 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 + %t71 = load i64, ptr %t70 + %t72 = sub i64 %t71, 1 + %t73 = load { ptr, i64, i64 }, ptr %a6 + %t74 = extractvalue { ptr, i64, i64 } %t73, 1 + %t75 = icmp uge i64 %t72, %t74 + br i1 %t75, label %range9666, label %inrange9667 +range9666: + call void @finch_panic_index(ptr @.str.6538, i64 59, i64 %t72, i64 %t74) unreachable -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.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.6302, i64 74) - %t83 = load { ptr, i64, i64 }, ptr %a79 - store { ptr, i64, i64 } %t83, ptr %a6 - 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) - %t87 = load { ptr, i64, i64 }, ptr %a86 - ret { ptr, i64, i64 } %t87 +inrange9667: + %t76 = extractvalue { ptr, i64, i64 } %t73, 0 + %t77 = getelementptr inbounds i8, ptr %t76, i64 %t72 + %t78 = load i8, ptr %t77 + %t79 = icmp ule i8 %t78, 57 + br label %logic.rend9668 +logic.rend9668: + br label %logic.end9665 +logic.end9665: + %t80 = phi i1 [ false, %logic.from9663 ], [ %t79, %logic.rend9668 ] + br i1 %t80, label %while.body9655, label %while.end9656 +while.body9655: + %t81 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t81, ptr %a82 + %t84 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 + %t85 = load i64, ptr %t84 + %t86 = sub i64 %t85, 1 + call void @finch_str_sub(ptr %a83, ptr %a82, i64 0, i64 %t86, ptr @.str.6539, i64 60) + %t87 = load { ptr, i64, i64 }, ptr %a83 + %t88 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t87, ptr %a6 + store { ptr, i64, i64 } %t88, ptr %a89 + call void @finch_str_drop(ptr %a89) + br label %while.cond9654 +while.end9656: + %t90 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t90, ptr %a91 + call void @finch_str_lower(ptr %a92, ptr %a91) + %t93 = load { ptr, i64, i64 }, ptr %a92 + call void @finch_str_drop(ptr %a6) + ret { ptr, i64, i64 } %t93 } define internal void @finch.linker.Names.add(ptr %self, { ptr, i64, i64 } %p0) { @@ -82464,10 +99319,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.from9161 -logic.from9161: - br i1 %t4, label %logic.rhs9162, label %logic.end9163 -logic.rhs9162: + br label %logic.from9669 +logic.from9669: + br i1 %t4, label %logic.rhs9670, label %logic.end9671 +logic.rhs9670: %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 @@ -82475,37 +99330,37 @@ logic.rhs9162: %t9 = load i64, ptr %t6 %t10 = load ptr, ptr %t5 store i64 0, ptr %a11 - br label %find.cond9164 -find.cond9164: + br label %find.cond9672 +find.cond9672: %t12 = load i64, ptr %a11 %t13 = icmp slt i64 %t12, %t9 - br i1 %t13, label %find.body9165, label %find.end9168 -find.body9165: + br i1 %t13, label %find.body9673, label %find.end9676 +find.body9673: %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.hit9166, label %find.next9167 -find.hit9166: + br i1 %t19, label %find.hit9674, label %find.next9675 +find.hit9674: store i64 %t12, ptr %a8 - br label %find.end9168 -find.next9167: + br label %find.end9676 +find.next9675: %t20 = add i64 %t12, 1 store i64 %t20, ptr %a11 - br label %find.cond9164 -find.end9168: + br label %find.cond9672 +find.end9676: %t21 = load i64, ptr %a8 %t22 = icmp sge i64 %t21, 0 %t23 = xor i1 %t22, true - 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: + br label %logic.rend9677 +logic.rend9677: + br label %logic.end9671 +logic.end9671: + %t24 = phi i1 [ false, %logic.from9669 ], [ %t23, %logic.rend9677 ] + br i1 %t24, label %then9678, label %endif9680 +then9678: %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 @@ -82519,8 +99374,8 @@ then9170: %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t33, i64 %t31 store { ptr, i64, i64 } %t30, ptr %t34 store i64 %t32, ptr %t26 - br label %endif9172 -endif9172: + br label %endif9680 +endif9680: ret void } @@ -82541,8 +99396,9 @@ entry: %a31 = alloca { ptr, i64, i64 }, align 16 %a39 = alloca { ptr, i64, i64 }, align 16 %a41 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 + %a44 = alloca { ptr, i64, i64 }, align 16 %a50 = alloca { ptr, i64, i64 }, align 16 + %a51 = 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 @@ -82554,10 +99410,10 @@ entry: store i64 %t9, ptr %a10 %t11 = load i64, ptr %a10 %t12 = icmp slt i64 %t11, 0 - br i1 %t12, label %then9173, label %endif9175 -then9173: - ret { ptr, i64, i64 } { ptr @.str.6305, i64 0, i64 0 } -endif9175: + br i1 %t12, label %then9681, label %endif9683 +then9681: + ret { ptr, i64, i64 } { ptr @.str.6542, i64 0, i64 0 } +endif9683: %t13 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t13, ptr %a14 %t16 = load i64, ptr %a10 @@ -82566,31 +99422,31 @@ endif9175: %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.6306, i64 95) + call void @finch_str_sub(ptr %a15, ptr %a14, i64 %t19, i64 %t21, ptr @.str.6543, i64 81) %t22 = load { ptr, i64, i64 }, ptr %a15 store { ptr, i64, i64 } %t22, ptr %a23 store i64 0, ptr %a24 - br label %while.cond9176 -while.cond9176: + br label %while.cond9684 +while.cond9684: %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.from9179 -logic.from9179: - br i1 %t28, label %logic.rhs9180, label %logic.end9181 -logic.rhs9180: + br label %logic.from9687 +logic.from9687: + br i1 %t28, label %logic.rhs9688, label %logic.end9689 +logic.rhs9688: %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 %range9182, label %inrange9183 -range9182: - call void @finch_panic_index(ptr @.str.6308, i64 97, i64 %t32, i64 %t34) + br i1 %t35, label %range9690, label %inrange9691 +range9690: + call void @finch_panic_index(ptr @.str.6545, i64 83, i64 %t32, i64 %t34) unreachable -inrange9183: +inrange9691: %t36 = extractvalue { ptr, i64, i64 } %t33, 0 %t37 = getelementptr inbounds i8, ptr %t36, i64 %t32 %t38 = load i8, ptr %t37 @@ -82599,25 +99455,60 @@ inrange9183: store { ptr, i64, i64 } %t40, ptr %a41 %t42 = call i64 @finch_str_find(ptr %a30, ptr %a41) %t43 = icmp sge i64 %t42, 0 - %t44 = xor i1 %t43, true - 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.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.6309, i64 100) - %t52 = load { ptr, i64, i64 }, ptr %a50 - ret { ptr, i64, i64 } %t52 + store { ptr, i64, i64 } %t40, ptr %a44 + call void @finch_str_drop(ptr %a44) + %t45 = xor i1 %t43, true + br label %logic.rend9692 +logic.rend9692: + br label %logic.end9689 +logic.end9689: + %t46 = phi i1 [ false, %logic.from9687 ], [ %t45, %logic.rend9692 ] + br i1 %t46, label %while.body9685, label %while.end9686 +while.body9685: + %t47 = load i64, ptr %a24 + %t48 = add i64 %t47, 1 + store i64 %t48, ptr %a24 + br label %while.cond9684 +while.end9686: + %t49 = load { ptr, i64, i64 }, ptr %a23 + store { ptr, i64, i64 } %t49, ptr %a50 + %t52 = load i64, ptr %a24 + call void @finch_str_sub(ptr %a51, ptr %a50, i64 0, i64 %t52, ptr @.str.6546, i64 86) + %t53 = load { ptr, i64, i64 }, ptr %a51 + call void @finch_str_drop(ptr %a23) + ret { ptr, i64, i64 } %t53 +} + +define internal void @finch.drop.S_linker_Names(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.linker.Names, ptr %a, i32 0, i32 0 + call void @finch.drop.arr_str(ptr %t1) + ret void +} + +define internal void @finch.drop.arr_S_linker_Names(ptr %a) { +entry: + %a4 = alloca i64, align 16 + %t1 = load ptr, ptr %a + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 + %t3 = load i64, ptr %t2 + store i64 0, ptr %a4 + br label %n.cond9796 +n.cond9796: + %t5 = load i64, ptr %a4 + %t6 = icmp slt i64 %t5, %t3 + br i1 %t6, label %n.body9797, label %n.end9798 +n.body9797: + %t7 = getelementptr inbounds %S.linker.Names, ptr %t1, i64 %t5 + call void @finch.drop.S_linker_Names(ptr %t7) + %t8 = load i64, ptr %a4 + %t9 = add i64 %t8, 1 + store i64 %t9, ptr %a4 + br label %n.cond9796 +n.end9798: + call void @finch_arr_free(ptr %a) + ret void } define internal i64 @finch.linker.linkFailed({ ptr, i64, i64 } %p0, %S.cimport.CImports %p1, %S.platform.Target %p2) { @@ -82640,125 +99531,153 @@ entry: %a28 = alloca { ptr, i64, i64 }, align 16 %a29 = alloca { ptr, i64, i64 }, align 16 %a30 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 + %a35 = alloca { ptr, i64, i64 }, align 16 %a37 = alloca { ptr, i64, i64 }, align 16 %a38 = alloca { ptr, i64, i64 }, align 16 + %a39 = alloca { ptr, i64, i64 }, align 16 %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 %a46 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 + %a47 = alloca { ptr, i64, i64 }, align 16 + %a48 = alloca { ptr, i64, i64 }, align 16 %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 + %a55 = alloca { ptr, i64, i64 }, align 16 + %a56 = alloca { ptr, i64, i64 }, align 16 + %a57 = alloca { ptr, i64, i64 }, align 16 %a62 = 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 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = 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 + %a71 = alloca { ptr, i64, i64 }, align 16 + %a73 = alloca { ptr, i64, i64 }, align 16 + %a74 = alloca { ptr, i64, i64 }, align 16 + %a75 = 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 + %a88 = alloca { ptr, i64, i64 }, align 16 + %a89 = 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 - %a95 = 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 + %a99 = 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 - %a108 = alloca { ptr, i64, i64 }, align 16 + %a104 = alloca { ptr, i64, i64 }, align 16 + %a105 = 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 %a116 = alloca { ptr, i64, i64 }, align 16 + %a117 = alloca { ptr, i64, i64 }, align 16 + %a119 = alloca { ptr, i64, i64 }, align 16 %a120 = alloca { ptr, i64, i64 }, align 16 %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 + %a124 = alloca { ptr, i64, i64 }, align 16 %a128 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca i64, align 16 + %a129 = alloca { ptr, i64, i64 }, align 16 + %a130 = alloca { ptr, i64, i64 }, align 16 + %a135 = alloca { ptr, i64, i64 }, align 16 + %a136 = alloca { ptr, i64, i64 }, align 16 + %a141 = alloca { ptr, i64, i64 }, align 16 + %a155 = alloca { ptr, i64, i64 }, align 16 + %a156 = alloca { ptr, i64, i64 }, align 16 + %a157 = alloca { ptr, i64, i64 }, align 16 %a165 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 + %a168 = alloca i64, align 16 + %a176 = alloca { ptr, i64, i64 }, align 16 + %a178 = alloca { ptr, i64, i64 }, align 16 + %a179 = alloca { ptr, i64, i64 }, align 16 + %a180 = alloca { ptr, i64, i64 }, align 16 + %a182 = 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 - %a187 = alloca i64, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 + %a193 = alloca { ptr, i64, i64 }, align 16 + %a197 = alloca { ptr, i64, i64 }, align 16 + %a198 = alloca { ptr, i64, i64 }, align 16 + %a200 = alloca i64, align 16 %a208 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca i64, align 16 - %a223 = alloca i64, align 16 + %a209 = alloca { ptr, i64, i64 }, align 16 + %a212 = alloca { ptr, i64, i64 }, align 16 + %a217 = alloca { ptr, i64, i64 }, align 16 + %a220 = alloca { ptr, i64, i64 }, align 16 + %a221 = alloca { ptr, i64, i64 }, align 16 %a228 = alloca { ptr, i64, i64 }, align 16 %a229 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca i64, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca 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 - %a283 = alloca i64, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a306 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca { ptr, i64, i64 }, align 16 - %a309 = 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 + %a232 = alloca { ptr, i64, i64 }, align 16 + %a235 = alloca i64, align 16 + %a238 = alloca i64, align 16 + %a243 = alloca { ptr, i64, i64 }, align 16 + %a244 = alloca { ptr, i64, i64 }, align 16 + %a249 = alloca i64, align 16 + %a254 = alloca { ptr, i64, i64 }, align 16 + %a255 = alloca { ptr, i64, i64 }, align 16 + %a280 = alloca 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 + %a298 = alloca i64, align 16 + %a311 = alloca { ptr, i64, i64 }, align 16 + %a312 = alloca { ptr, i64, i64 }, align 16 %a321 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 + %a322 = 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 + %a331 = alloca { ptr, i64, i64 }, align 16 + %a336 = 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 - %a352 = 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 + %a344 = 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 + %a350 = 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 - %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 + %a373 = alloca { ptr, i64, i64 }, align 16 + %a378 = alloca { ptr, i64, i64 }, align 16 + %a380 = 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 %a385 = alloca { ptr, i64, i64 }, align 16 %a386 = alloca { ptr, i64, i64 }, align 16 %a387 = 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 - %a429 = alloca { ptr, i64, i64 }, align 16 - %a430 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 + %a390 = 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 + %a396 = alloca { ptr, i64, i64 }, align 16 + %a397 = alloca { ptr, i64, i64 }, align 16 + %a398 = 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 + %a410 = 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 + %a415 = alloca { ptr, i64, i64 }, align 16 + %a423 = 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 + %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 + %a462 = alloca { ptr, i64, i64 }, align 16 + %a470 = alloca { ptr, i64, i64 }, align 16 store { ptr, i64, i64 } %p0, ptr %a1 store %S.cimport.CImports %p1, ptr %a2 store %S.platform.Target %p2, ptr %a3 @@ -82766,19 +99685,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.6311, i64 1, i64 0 }, ptr %a9 + store { ptr, i64, i64 } { ptr @.str.6548, 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.cond9185 -each.cond9185: + br label %each.cond9693 +each.cond9693: %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.body9186, label %each.end9188 -each.body9186: + br i1 %t17, label %each.body9694, label %each.end9696 +each.body9694: %t18 = load ptr, ptr %a12 %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t18, i64 %t16 %t20 = load { ptr, i64, i64 }, ptr %t19 @@ -82790,636 +99709,713 @@ each.body9186: 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.6314, i64 24, i64 0 }, ptr %a30 + store { ptr, i64, i64 } { ptr @.str.6551, 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 %then9189, label %else9190 -then9189: + br i1 %t32, label %then9697, label %else9698 +then9697: %t33 = load { ptr, i64, i64 }, ptr %a26 - %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 }) + %t34 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t33, { ptr, i64, i64 } { ptr @.str.6552, i64 24, i64 0 }, { ptr, i64, i64 } { ptr @.str.6553, i64 1, i64 0 }) call void @finch.linker.Names.add(ptr %a4, { ptr, i64, i64 } %t34) - br label %endif9191 -else9190: - %t35 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t35, ptr %a36 - 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 %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.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 %endif9194 -else9193: - %t43 = load { ptr, i64, i64 }, ptr %a26 + store { ptr, i64, i64 } %t34, ptr %a35 + call void @finch_str_drop(ptr %a35) + br label %endif9699 +else9698: + %t36 = load { ptr, i64, i64 }, ptr %a26 + store { ptr, i64, i64 } %t36, ptr %a37 + store { ptr, i64, i64 } { ptr @.str.6555, i64 18, i64 0 }, ptr %a39 + %t40 = call i64 @finch_str_find(ptr %a37, ptr %a39) + %t41 = icmp sge i64 %t40, 0 + br i1 %t41, label %then9700, label %else9701 +then9700: + %t42 = load { ptr, i64, i64 }, ptr %a26 + %t43 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t42, { ptr, i64, i64 } { ptr @.str.6556, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.6557, i64 2, i64 0 }) + call void @finch.linker.Names.add(ptr %a4, { ptr, i64, i64 } %t43) store { ptr, i64, i64 } %t43, ptr %a44 - 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 %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.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 %endif9197 -else9196: + call void @finch_str_drop(ptr %a44) + br label %endif9702 +else9701: + %t45 = load { ptr, i64, i64 }, ptr %a26 + store { ptr, i64, i64 } %t45, ptr %a46 + store { ptr, i64, i64 } { ptr @.str.6559, i64 27, i64 0 }, ptr %a48 + %t49 = call i64 @finch_str_find(ptr %a46, ptr %a48) + %t50 = icmp sge i64 %t49, 0 + br i1 %t50, label %then9703, label %else9704 +then9703: %t51 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t51, ptr %a52 - 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 %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.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 %endif9200 -else9199: - %t59 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t59, ptr %a60 - 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 %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.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 %endif9203 -else9202: - %t67 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t67, ptr %a68 - 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 %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.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 %endif9206 -else9205: - %t75 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t75, ptr %a76 - 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.from9207 -logic.from9207: - br i1 %t80, label %logic.rhs9208, label %logic.end9209 -logic.rhs9208: + %t52 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t51, { ptr, i64, i64 } { ptr @.str.6560, i64 27, i64 0 }, { ptr, i64, i64 } { ptr @.str.6561, i64 3, i64 0 }) + call void @finch.linker.Names.add(ptr %a4, { ptr, i64, i64 } %t52) + store { ptr, i64, i64 } %t52, ptr %a53 + call void @finch_str_drop(ptr %a53) + br label %endif9705 +else9704: + %t54 = load { ptr, i64, i64 }, ptr %a26 + store { ptr, i64, i64 } %t54, ptr %a55 + store { ptr, i64, i64 } { ptr @.str.6563, i64 14, i64 0 }, ptr %a57 + %t58 = call i64 @finch_str_find(ptr %a55, ptr %a57) + %t59 = icmp sge i64 %t58, 0 + br i1 %t59, label %then9706, label %else9707 +then9706: + %t60 = load { ptr, i64, i64 }, ptr %a26 + %t61 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t60, { ptr, i64, i64 } { ptr @.str.6564, i64 14, i64 0 }, { ptr, i64, i64 } { ptr @.str.6565, i64 4, i64 0 }) + call void @finch.linker.Names.add(ptr %a5, { ptr, i64, i64 } %t61) + store { ptr, i64, i64 } %t61, ptr %a62 + call void @finch_str_drop(ptr %a62) + br label %endif9708 +else9707: + %t63 = load { ptr, i64, i64 }, ptr %a26 + store { ptr, i64, i64 } %t63, ptr %a64 + store { ptr, i64, i64 } { ptr @.str.6567, i64 24, i64 0 }, ptr %a66 + %t67 = call i64 @finch_str_find(ptr %a64, ptr %a66) + %t68 = icmp sge i64 %t67, 0 + br i1 %t68, label %then9709, label %else9710 +then9709: + %t69 = load { ptr, i64, i64 }, ptr %a26 + %t70 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t69, { ptr, i64, i64 } { ptr @.str.6568, i64 24, i64 0 }, { ptr, i64, i64 } { ptr @.str.6569, i64 4, i64 0 }) + call void @finch.linker.Names.add(ptr %a5, { ptr, i64, i64 } %t70) + store { ptr, i64, i64 } %t70, ptr %a71 + call void @finch_str_drop(ptr %a71) + br label %endif9711 +else9710: + %t72 = load { ptr, i64, i64 }, ptr %a26 + store { ptr, i64, i64 } %t72, ptr %a73 + store { ptr, i64, i64 } { ptr @.str.6571, i64 13, i64 0 }, ptr %a75 + %t76 = call i64 @finch_str_find(ptr %a73, ptr %a75) + %t77 = icmp sge i64 %t76, 0 + br i1 %t77, label %then9712, label %else9713 +then9712: + %t78 = load { ptr, i64, i64 }, ptr %a26 + %t79 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t78, { ptr, i64, i64 } { ptr @.str.6572, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.6573, i64 1, i64 0 }) + call void @finch.linker.Names.add(ptr %a5, { ptr, i64, i64 } %t79) + store { ptr, i64, i64 } %t79, ptr %a80 + call void @finch_str_drop(ptr %a80) + br label %endif9714 +else9713: %t81 = load { ptr, i64, i64 }, ptr %a26 store { ptr, i64, i64 } %t81, ptr %a82 - store { ptr, i64, i64 } { ptr @.str.6340, i64 9, i64 0 }, ptr %a84 + store { ptr, i64, i64 } { ptr @.str.6575, i64 11, i64 0 }, ptr %a84 %t85 = call i64 @finch_str_find(ptr %a82, ptr %a84) %t86 = icmp sge i64 %t85, 0 - 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.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.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 %endif9213 -else9212: + br label %logic.from9715 +logic.from9715: + br i1 %t86, label %logic.rhs9716, label %logic.end9717 +logic.rhs9716: + %t87 = load { ptr, i64, i64 }, ptr %a26 + store { ptr, i64, i64 } %t87, ptr %a88 + store { ptr, i64, i64 } { ptr @.str.6577, i64 9, i64 0 }, ptr %a90 + %t91 = call i64 @finch_str_find(ptr %a88, ptr %a90) + %t92 = icmp sge i64 %t91, 0 + br label %logic.rend9718 +logic.rend9718: + br label %logic.end9717 +logic.end9717: + %t93 = phi i1 [ false, %logic.from9715 ], [ %t92, %logic.rend9718 ] + br i1 %t93, label %then9719, label %else9720 +then9719: %t94 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t94, ptr %a95 - 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.from9214 -logic.from9214: - br i1 %t99, label %logic.rhs9215, label %logic.end9216 -logic.rhs9215: - %t100 = load { ptr, i64, i64 }, ptr %a26 + %t95 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t94, { ptr, i64, i64 } { ptr @.str.6578, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6579, i64 1, i64 0 }) + store { ptr, i64, i64 } %t95, ptr %a97 + store { ptr, i64, i64 } { ptr @.str.6580, i64 10, i64 0 }, ptr %a98 + call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) + store { ptr, i64, i64 } %t95, ptr %a99 + call void @finch_str_drop(ptr %a99) + %t100 = load { ptr, i64, i64 }, ptr %a96 + call void @finch.linker.Names.add(ptr %a5, { ptr, i64, i64 } %t100) store { ptr, i64, i64 } %t100, ptr %a101 - 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.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.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.6348, i64 125) - %t115 = load { ptr, i64, i64 }, ptr %a109 + call void @finch_str_drop(ptr %a101) + br label %endif9721 +else9720: + %t102 = load { ptr, i64, i64 }, ptr %a26 + store { ptr, i64, i64 } %t102, ptr %a103 + store { ptr, i64, i64 } { ptr @.str.6582, i64 1, i64 0 }, ptr %a105 + %t106 = call i32 @finch_str_starts(ptr %a103, ptr %a105) + %t107 = icmp ne i32 %t106, 0 + br label %logic.from9722 +logic.from9722: + br i1 %t107, label %logic.rhs9723, label %logic.end9724 +logic.rhs9723: + %t108 = load { ptr, i64, i64 }, ptr %a26 + store { ptr, i64, i64 } %t108, ptr %a109 + store { ptr, i64, i64 } { ptr @.str.6584, i64 19, i64 0 }, ptr %a111 + %t112 = call i64 @finch_str_find(ptr %a109, ptr %a111) + %t113 = icmp sge i64 %t112, 0 + br label %logic.rend9725 +logic.rend9725: + br label %logic.end9724 +logic.end9724: + %t114 = phi i1 [ false, %logic.from9722 ], [ %t113, %logic.rend9725 ] + br i1 %t114, label %then9726, label %endif9728 +then9726: + %t115 = load { ptr, i64, i64 }, ptr %a26 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.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.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.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.6353, i64 127) - %t131 = load { ptr, i64, i64 }, ptr %a128 - store { ptr, i64, i64 } %t131, ptr %a116 - 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 %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.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.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.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.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.6355, ptr %t151 - %t154 = call i32 (ptr, ...) @printf(ptr @.str.6356, i32 %t150, ptr %t153) - %t155 = call i32 (ptr, ...) @printf(ptr @.str.6357) + %t118 = load { ptr, i64, i64 }, ptr %a26 + store { ptr, i64, i64 } %t118, ptr %a119 + store { ptr, i64, i64 } { ptr @.str.6587, i64 19, i64 0 }, ptr %a121 + %t122 = call i64 @finch_str_find(ptr %a119, ptr %a121) + call void @finch_str_sub(ptr %a117, ptr %a116, i64 1, i64 %t122, ptr @.str.6585, i64 111) + %t123 = load { ptr, i64, i64 }, ptr %a117 + store { ptr, i64, i64 } %t123, ptr %a124 + %t125 = getelementptr inbounds %S.platform.Target, ptr %a3, i32 0, i32 3 + %t126 = load i1, ptr %t125 + br label %logic.from9729 +logic.from9729: + br i1 %t126, label %logic.rhs9730, label %logic.end9731 +logic.rhs9730: + %t127 = load { ptr, i64, i64 }, ptr %a124 + store { ptr, i64, i64 } %t127, ptr %a128 + store { ptr, i64, i64 } { ptr @.str.6589, i64 1, i64 0 }, ptr %a130 + %t131 = call i32 @finch_str_starts(ptr %a128, ptr %a130) + %t132 = icmp ne i32 %t131, 0 + br label %logic.rend9732 +logic.rend9732: + br label %logic.end9731 +logic.end9731: + %t133 = phi i1 [ false, %logic.from9729 ], [ %t132, %logic.rend9732 ] + br i1 %t133, label %then9733, label %endif9735 +then9733: + %t134 = load { ptr, i64, i64 }, ptr %a124 + store { ptr, i64, i64 } %t134, ptr %a135 + %t137 = getelementptr inbounds { ptr, i64, i64 }, ptr %a124, i32 0, i32 1 + %t138 = load i64, ptr %t137 + call void @finch_str_sub(ptr %a136, ptr %a135, i64 1, i64 %t138, ptr @.str.6590, i64 113) + %t139 = load { ptr, i64, i64 }, ptr %a136 + %t140 = load { ptr, i64, i64 }, ptr %a124 + store { ptr, i64, i64 } %t139, ptr %a124 + store { ptr, i64, i64 } %t140, ptr %a141 + call void @finch_str_drop(ptr %a141) + br label %endif9735 +endif9735: + %t142 = load { ptr, i64, i64 }, ptr %a124 + call void @finch.linker.Names.add(ptr %a4, { ptr, i64, i64 } %t142) + call void @finch_str_drop(ptr %a124) + br label %endif9728 +endif9728: + br label %endif9721 +endif9721: + br label %endif9714 +endif9714: + br label %endif9711 +endif9711: + br label %endif9708 +endif9708: + br label %endif9705 +endif9705: + br label %endif9702 +endif9702: + br label %endif9699 +endif9699: + call void @finch_str_drop(ptr %a26) + br label %each.step9695 +each.step9695: + %t143 = load i64, ptr %a13 + %t144 = add i64 %t143, 1 + store i64 %t144, ptr %a13 + br label %each.cond9693 +each.end9696: + call void @finch.drop.arr_str(ptr %a12) + %t145 = getelementptr inbounds %S.linker.Names, ptr %a4, i32 0, i32 0 + %t146 = getelementptr inbounds { ptr, i64, i64 }, ptr %t145, i32 0, i32 1 + %t147 = load i64, ptr %t146 + %t148 = icmp eq i64 %t147, 0 + br label %logic.from9736 +logic.from9736: + br i1 %t148, label %logic.rhs9737, label %logic.end9738 +logic.rhs9737: + %t149 = getelementptr inbounds %S.linker.Names, ptr %a5, i32 0, i32 0 + %t150 = getelementptr inbounds { ptr, i64, i64 }, ptr %t149, i32 0, i32 1 + %t151 = load i64, ptr %t150 + %t152 = icmp eq i64 %t151, 0 + br label %logic.rend9739 +logic.rend9739: + br label %logic.end9738 +logic.end9738: + %t153 = phi i1 [ false, %logic.from9736 ], [ %t152, %logic.rend9739 ] + br i1 %t153, label %then9740, label %endif9742 +then9740: + %t154 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t154, ptr %a156 + store { ptr, i64, i64 } { ptr @.str.6591, i64 21, i64 0 }, ptr %a157 + call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) + %t158 = load { ptr, i64, i64 }, ptr %a155 + %t159 = extractvalue { ptr, i64, i64 } %t158, 1 + %t160 = trunc i64 %t159 to i32 + %t161 = extractvalue { ptr, i64, i64 } %t158, 0 + %t162 = icmp eq ptr %t161, null + %t163 = select i1 %t162, ptr @.str.6592, ptr %t161 + %t164 = call i32 (ptr, ...) @printf(ptr @.str.6593, i32 %t160, ptr %t163) + store { ptr, i64, i64 } %t158, ptr %a165 + call void @finch_str_drop(ptr %a165) + %t166 = call i32 (ptr, ...) @printf(ptr @.str.6594) + call void @finch.drop.S_linker_Names(ptr %a5) + call void @finch.drop.S_linker_Names(ptr %a4) ret i64 1 -endif9234: - %t156 = getelementptr inbounds %S.linker.Names, ptr %a5, i32 0, i32 0 - store i64 0, ptr %a157 - 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.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.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.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.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.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.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.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.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 %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.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.6364, i64 145, ptr %a207) +endif9742: + %t167 = getelementptr inbounds %S.linker.Names, ptr %a5, i32 0, i32 0 + store i64 0, ptr %a168 + br label %each.cond9743 +each.cond9743: + %t169 = getelementptr inbounds { ptr, i64, i64 }, ptr %t167, i32 0, i32 1 + %t170 = load i64, ptr %t169 + %t171 = load i64, ptr %a168 + %t172 = icmp slt i64 %t171, %t170 + br i1 %t172, label %each.body9744, label %each.end9746 +each.body9744: + %t173 = load ptr, ptr %t167 + %t174 = getelementptr inbounds { ptr, i64, i64 }, ptr %t173, i64 %t171 + %t175 = load { ptr, i64, i64 }, ptr %t174 + store { ptr, i64, i64 } %t175, ptr %a176 + %t177 = load { ptr, i64, i64 }, ptr %a176 + store { ptr, i64, i64 } { ptr @.str.6595, i64 20, 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.6596, i64 62, i64 0 }, ptr %a184 + call void @finch_str_concat(ptr %a182, ptr %a183, ptr %a184) + store { ptr, i64, i64 } %t181, ptr %a185 + call void @finch_str_drop(ptr %a185) + %t186 = load { ptr, i64, i64 }, ptr %a182 + %t187 = extractvalue { ptr, i64, i64 } %t186, 1 + %t188 = trunc i64 %t187 to i32 + %t189 = extractvalue { ptr, i64, i64 } %t186, 0 + %t190 = icmp eq ptr %t189, null + %t191 = select i1 %t190, ptr @.str.6597, ptr %t189 + %t192 = call i32 (ptr, ...) @printf(ptr @.str.6598, i32 %t188, ptr %t191) + store { ptr, i64, i64 } %t186, ptr %a193 + call void @finch_str_drop(ptr %a193) + %t194 = call i32 (ptr, ...) @printf(ptr @.str.6599) + br label %each.step9745 +each.step9745: + %t195 = load i64, ptr %a168 + %t196 = add i64 %t195, 1 + store i64 %t196, ptr %a168 + br label %each.cond9743 +each.end9746: + store { ptr, i64, i64 } zeroinitializer, ptr %a197 + store { ptr, i64, i64 } zeroinitializer, ptr %a198 + %t199 = getelementptr inbounds %S.linker.Names, ptr %a4, i32 0, i32 0 + store i64 0, ptr %a200 + br label %each.cond9747 +each.cond9747: + %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.body9748, label %each.end9750 +each.body9748: + %t205 = load ptr, ptr %t199 + %t206 = getelementptr inbounds { ptr, i64, i64 }, ptr %t205, i64 %t203 + %t207 = load { ptr, i64, i64 }, ptr %t206 + store { ptr, i64, i64 } %t207, ptr %a208 + store { ptr, i64, i64 } { ptr @.str.6600, i64 0, i64 0 }, ptr %a209 + %t210 = getelementptr inbounds %S.cimport.CImports, ptr %a2, i32 0, i32 0 + %t211 = load { ptr, i64, i64 }, ptr %a208 + store { ptr, i64, i64 } %t211, ptr %a212 + %t213 = call i64 @finch_map_find(ptr %t210, ptr %a212, 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) + %t214 = icmp sge i64 %t213, 0 + br i1 %t214, label %then9751, label %endif9753 +then9751: + %t215 = getelementptr inbounds %S.cimport.CImports, ptr %a2, i32 0, i32 0 + %t216 = load { ptr, i64, i64 }, ptr %a208 + store { ptr, i64, i64 } %t216, ptr %a217 + %t218 = call i64 @finch_map_find(ptr %t215, ptr %a217, 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) + %t219 = icmp slt i64 %t218, 0 + br i1 %t219, label %map.missing9754, label %map.found9755 +map.missing9754: + store { ptr, i64, i64 } zeroinitializer, ptr %a220 + store { ptr, i64, i64 } %t216, ptr %a221 + call void @finch_buf_str(ptr %a220, ptr %a221, i32 1) + call void @finch_map_missing(ptr @.str.6601, i64 131, ptr %a220) unreachable -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 - %t212 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t211, i32 0, i32 2 - %t213 = getelementptr inbounds %S.cimport.CFunc, ptr %t212, i32 0, i32 1 - %t214 = load { ptr, i64, i64 }, ptr %t213 - store { ptr, i64, i64 } %t214, ptr %a215 - 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 %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.cond9248 -find.cond9248: - %t224 = load i64, ptr %a223 - %t225 = icmp slt i64 %t224, %t221 - br i1 %t225, label %find.body9249, label %find.end9252 -find.body9249: - %t226 = getelementptr inbounds { ptr, i64, i64 }, ptr %t222, i64 %t224 +map.found9755: + %t222 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t215, i32 0, i32 0 + %t223 = load ptr, ptr %t222 + %t224 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t223, i64 %t218 + %t225 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t224, i32 0, i32 2 + %t226 = getelementptr inbounds %S.cimport.CFunc, ptr %t225, i32 0, i32 1 %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.hit9250, label %find.next9251 -find.hit9250: - store i64 %t224, ptr %a220 - br label %find.end9252 -find.next9251: - %t232 = add i64 %t224, 1 - store i64 %t232, ptr %a223 - 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 %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 - call void @finch_str_copy(ptr %a240, ptr %a239) - %t241 = load { ptr, i64, i64 }, ptr %a240 - %t242 = load i64, ptr %t237 - %t243 = add i64 %t242, 1 - call void @finch_arr_reserve(ptr %a184, i64 %t243, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t244 = load ptr, ptr %a184 - %t245 = getelementptr inbounds { ptr, i64, i64 }, ptr %t244, i64 %t242 - store { ptr, i64, i64 } %t241, ptr %t245 - store i64 %t243, ptr %t237 - %t246 = getelementptr inbounds { ptr, i64, i64 }, ptr %a185, i32 0, i32 1 - %t247 = load i64, ptr %t246 - %t248 = add i64 %t247, 1 - call void @finch_arr_reserve(ptr %a185, i64 %t248, i64 ptrtoint (ptr getelementptr (%S.linker.Names, ptr null, i32 1) to i64)) - %t249 = load ptr, ptr %a185 - %t250 = getelementptr inbounds %S.linker.Names, ptr %t249, i64 %t247 - store %S.linker.Names zeroinitializer, ptr %t250 - store i64 %t248, ptr %t246 - %t251 = getelementptr inbounds { ptr, i64, i64 }, ptr %a184, i32 0, i32 1 - %t252 = load i64, ptr %t251 - %t253 = sub i64 %t252, 1 - store i64 %t253, ptr %a234 - 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 %range9256, label %inrange9257 -range9256: - call void @finch_panic_index(ptr @.str.6365, i64 153, i64 %t254, i64 %t256) + call void @finch_str_copy(ptr %a229, ptr %a228) + %t230 = load { ptr, i64, i64 }, ptr %a229 + %t231 = load { ptr, i64, i64 }, ptr %a209 + store { ptr, i64, i64 } %t230, ptr %a209 + store { ptr, i64, i64 } %t231, ptr %a232 + call void @finch_str_drop(ptr %a232) + br label %endif9753 +endif9753: + %t233 = getelementptr inbounds { ptr, i64, i64 }, ptr %a197, i32 0, i32 1 + %t234 = load { ptr, i64, i64 }, ptr %a209 + store i64 -1, ptr %a235 + %t236 = load i64, ptr %t233 + %t237 = load ptr, ptr %a197 + store i64 0, ptr %a238 + br label %find.cond9756 +find.cond9756: + %t239 = load i64, ptr %a238 + %t240 = icmp slt i64 %t239, %t236 + br i1 %t240, label %find.body9757, label %find.end9760 +find.body9757: + %t241 = getelementptr inbounds { ptr, i64, i64 }, ptr %t237, i64 %t239 + %t242 = load { ptr, i64, i64 }, ptr %t241 + store { ptr, i64, i64 } %t242, ptr %a243 + store { ptr, i64, i64 } %t234, ptr %a244 + %t245 = call i32 @finch_str_eq(ptr %a243, ptr %a244) + %t246 = icmp ne i32 %t245, 0 + br i1 %t246, label %find.hit9758, label %find.next9759 +find.hit9758: + store i64 %t239, ptr %a235 + br label %find.end9760 +find.next9759: + %t247 = add i64 %t239, 1 + store i64 %t247, ptr %a238 + br label %find.cond9756 +find.end9760: + %t248 = load i64, ptr %a235 + store i64 %t248, ptr %a249 + %t250 = load i64, ptr %a249 + %t251 = icmp slt i64 %t250, 0 + br i1 %t251, label %then9761, label %endif9763 +then9761: + %t252 = getelementptr inbounds { ptr, i64, i64 }, ptr %a197, i32 0, i32 1 + %t253 = load { ptr, i64, i64 }, ptr %a209 + store { ptr, i64, i64 } %t253, ptr %a254 + call void @finch_str_copy(ptr %a255, ptr %a254) + %t256 = load { ptr, i64, i64 }, ptr %a255 + %t257 = load i64, ptr %t252 + %t258 = add i64 %t257, 1 + call void @finch_arr_reserve(ptr %a197, i64 %t258, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t259 = load ptr, ptr %a197 + %t260 = getelementptr inbounds { ptr, i64, i64 }, ptr %t259, i64 %t257 + store { ptr, i64, i64 } %t256, ptr %t260 + store i64 %t258, ptr %t252 + %t261 = getelementptr inbounds { ptr, i64, i64 }, ptr %a198, i32 0, i32 1 + %t262 = load i64, ptr %t261 + %t263 = add i64 %t262, 1 + call void @finch_arr_reserve(ptr %a198, i64 %t263, i64 ptrtoint (ptr getelementptr (%S.linker.Names, ptr null, i32 1) to i64)) + %t264 = load ptr, ptr %a198 + %t265 = getelementptr inbounds %S.linker.Names, ptr %t264, i64 %t262 + store %S.linker.Names zeroinitializer, ptr %t265 + store i64 %t263, ptr %t261 + %t266 = getelementptr inbounds { ptr, i64, i64 }, ptr %a197, i32 0, i32 1 + %t267 = load i64, ptr %t266 + %t268 = sub i64 %t267, 1 + store i64 %t268, ptr %a249 + br label %endif9763 +endif9763: + %t269 = load i64, ptr %a249 + %t270 = load { ptr, i64, i64 }, ptr %a198 + %t271 = extractvalue { ptr, i64, i64 } %t270, 1 + %t272 = icmp uge i64 %t269, %t271 + br i1 %t272, label %range9764, label %inrange9765 +range9764: + call void @finch_panic_index(ptr @.str.6602, i64 139, i64 %t269, i64 %t271) unreachable -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.step9241 -each.step9241: - %t261 = load i64, ptr %a187 - %t262 = add i64 %t261, 1 - store i64 %t262, ptr %a187 - 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.cond9258 -for.cond9258: - %t266 = load i64, ptr %a265 - %t267 = icmp slt i64 %t266, %t264 - 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 %range9262, label %inrange9263 -range9262: - call void @finch_panic_index(ptr @.str.6366, i64 156, i64 %t268, i64 %t270) +inrange9765: + %t273 = extractvalue { ptr, i64, i64 } %t270, 0 + %t274 = getelementptr inbounds %S.linker.Names, ptr %t273, i64 %t269 + %t275 = load { ptr, i64, i64 }, ptr %a208 + call void @finch.linker.Names.add(ptr %t274, { ptr, i64, i64 } %t275) + call void @finch_str_drop(ptr %a209) + br label %each.step9749 +each.step9749: + %t276 = load i64, ptr %a200 + %t277 = add i64 %t276, 1 + store i64 %t277, ptr %a200 + br label %each.cond9747 +each.end9750: + %t278 = getelementptr inbounds { ptr, i64, i64 }, ptr %a197, i32 0, i32 1 + %t279 = load i64, ptr %t278 + store i64 0, ptr %a280 + br label %for.cond9766 +for.cond9766: + %t281 = load i64, ptr %a280 + %t282 = icmp slt i64 %t281, %t279 + br i1 %t282, label %for.body9767, label %for.end9769 +for.body9767: + %t283 = load i64, ptr %a280 + %t284 = load { ptr, i64, i64 }, ptr %a198 + %t285 = extractvalue { ptr, i64, i64 } %t284, 1 + %t286 = icmp uge i64 %t283, %t285 + br i1 %t286, label %range9770, label %inrange9771 +range9770: + call void @finch_panic_index(ptr @.str.6603, i64 142, i64 %t283, i64 %t285) unreachable -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 - %t275 = load { ptr, i64, i64 }, ptr %t274 - store { ptr, i64, i64 } %t275, ptr %a276 - call void @finch.copy.arr_str(ptr %a277, ptr %a276) - %t278 = load { ptr, i64, i64 }, ptr %a277 - store { ptr, i64, i64 } %t278, ptr %a279 - store { ptr, i64, i64 } zeroinitializer, ptr %a280 - %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.cond9264 -for.cond9264: - %t284 = load i64, ptr %a283 - %t285 = icmp slt i64 %t284, %t282 - 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 %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 %range9271, label %inrange9272 -range9271: - call void @finch_panic_index(ptr @.str.6367, i64 160, i64 %t289, i64 %t291) +inrange9771: + %t287 = extractvalue { ptr, i64, i64 } %t284, 0 + %t288 = getelementptr inbounds %S.linker.Names, ptr %t287, i64 %t283 + %t289 = getelementptr inbounds %S.linker.Names, ptr %t288, i32 0, i32 0 + %t290 = load { ptr, i64, i64 }, ptr %t289 + store { ptr, i64, i64 } %t290, ptr %a291 + call void @finch.copy.arr_str(ptr %a292, ptr %a291) + %t293 = load { ptr, i64, i64 }, ptr %a292 + store { ptr, i64, i64 } %t293, ptr %a294 + store { ptr, i64, i64 } zeroinitializer, ptr %a295 + %t296 = getelementptr inbounds { ptr, i64, i64 }, ptr %a294, i32 0, i32 1 + %t297 = load i64, ptr %t296 + store i64 0, ptr %a298 + br label %for.cond9772 +for.cond9772: + %t299 = load i64, ptr %a298 + %t300 = icmp slt i64 %t299, %t297 + br i1 %t300, label %for.body9773, label %for.end9775 +for.body9773: + %t301 = load i64, ptr %a298 + %t302 = icmp slt i64 %t301, 3 + br i1 %t302, label %then9776, label %endif9778 +then9776: + %t303 = getelementptr inbounds { ptr, i64, i64 }, ptr %a295, i32 0, i32 1 + %t304 = load i64, ptr %a298 + %t305 = load { ptr, i64, i64 }, ptr %a294 + %t306 = extractvalue { ptr, i64, i64 } %t305, 1 + %t307 = icmp uge i64 %t304, %t306 + br i1 %t307, label %range9779, label %inrange9780 +range9779: + call void @finch_panic_index(ptr @.str.6604, i64 146, i64 %t304, i64 %t306) unreachable -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 - store { ptr, i64, i64 } %t295, ptr %a296 - call void @finch_str_copy(ptr %a297, ptr %a296) - %t298 = load { ptr, i64, i64 }, ptr %a297 - %t299 = load i64, ptr %t288 - %t300 = add i64 %t299, 1 - call void @finch_arr_reserve(ptr %a280, i64 %t300, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t301 = load ptr, ptr %a280 - %t302 = getelementptr inbounds { ptr, i64, i64 }, ptr %t301, i64 %t299 - store { ptr, i64, i64 } %t298, ptr %t302 - store i64 %t300, ptr %t288 - 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.cond9264 -for.end9267: - %t305 = getelementptr inbounds { ptr, i64, i64 }, ptr %a280, i32 0, i32 1 - 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 %then9273, label %endif9275 -then9273: - %t313 = load { ptr, i64, i64 }, ptr %a309 - store { ptr, i64, i64 } %t313, ptr %a315 - 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 - %t319 = load i64, ptr %t318 - %t320 = sub i64 %t319, 3 - call void @finch_str_from_int(ptr %a321, i64 %t320) - %t322 = load { ptr, i64, i64 }, ptr %a321 - store { ptr, i64, i64 } %t317, 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.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 %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 %range9276, label %inrange9277 -range9276: - call void @finch_panic_index(ptr @.str.6371, i64 167, i64 %t331, i64 %t333) +inrange9780: + %t308 = extractvalue { ptr, i64, i64 } %t305, 0 + %t309 = getelementptr inbounds { ptr, i64, i64 }, ptr %t308, i64 %t304 + %t310 = load { ptr, i64, i64 }, ptr %t309 + store { ptr, i64, i64 } %t310, ptr %a311 + call void @finch_str_copy(ptr %a312, ptr %a311) + %t313 = load { ptr, i64, i64 }, ptr %a312 + %t314 = load i64, ptr %t303 + %t315 = add i64 %t314, 1 + call void @finch_arr_reserve(ptr %a295, i64 %t315, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t316 = load ptr, ptr %a295 + %t317 = getelementptr inbounds { ptr, i64, i64 }, ptr %t316, i64 %t314 + store { ptr, i64, i64 } %t313, ptr %t317 + store i64 %t315, ptr %t303 + br label %endif9778 +endif9778: + br label %for.step9774 +for.step9774: + %t318 = load i64, ptr %a298 + %t319 = add i64 %t318, 1 + store i64 %t319, ptr %a298 + br label %for.cond9772 +for.end9775: + %t320 = getelementptr inbounds { ptr, i64, i64 }, ptr %a295, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.6605, i64 2, i64 0 }, ptr %a321 + call void @finch_str_join(ptr %a322, ptr %a295, ptr %a321) + %t323 = load { ptr, i64, i64 }, ptr %a322 + store { ptr, i64, i64 } %t323, ptr %a324 + %t325 = getelementptr inbounds { ptr, i64, i64 }, ptr %a294, i32 0, i32 1 + %t326 = load i64, ptr %t325 + %t327 = icmp sgt i64 %t326, 3 + br i1 %t327, label %then9781, label %endif9783 +then9781: + %t328 = load { ptr, i64, i64 }, ptr %a324 + store { ptr, i64, i64 } %t328, ptr %a330 + store { ptr, i64, i64 } { ptr @.str.6606, i64 5, i64 0 }, ptr %a331 + call void @finch_str_concat(ptr %a329, ptr %a330, ptr %a331) + %t332 = load { ptr, i64, i64 }, ptr %a329 + %t333 = getelementptr inbounds { ptr, i64, i64 }, ptr %a294, i32 0, i32 1 + %t334 = load i64, ptr %t333 + %t335 = sub i64 %t334, 3 + call void @finch_str_from_int(ptr %a336, i64 %t335) + %t337 = load { ptr, i64, i64 }, ptr %a336 + store { ptr, i64, i64 } %t332, ptr %a339 + store { ptr, i64, i64 } %t337, ptr %a340 + call void @finch_str_concat(ptr %a338, ptr %a339, ptr %a340) + store { ptr, i64, i64 } %t332, ptr %a341 + call void @finch_str_drop(ptr %a341) + store { ptr, i64, i64 } %t337, ptr %a342 + call void @finch_str_drop(ptr %a342) + %t343 = load { ptr, i64, i64 }, ptr %a338 + store { ptr, i64, i64 } %t343, ptr %a345 + store { ptr, i64, i64 } { ptr @.str.6607, i64 5, i64 0 }, ptr %a346 + call void @finch_str_concat(ptr %a344, ptr %a345, ptr %a346) + store { ptr, i64, i64 } %t343, ptr %a347 + call void @finch_str_drop(ptr %a347) + %t348 = load { ptr, i64, i64 }, ptr %a344 + %t349 = load { ptr, i64, i64 }, ptr %a324 + store { ptr, i64, i64 } %t348, ptr %a324 + store { ptr, i64, i64 } %t349, ptr %a350 + call void @finch_str_drop(ptr %a350) + br label %endif9783 +endif9783: + %t351 = load i64, ptr %a280 + %t352 = load { ptr, i64, i64 }, ptr %a197 + %t353 = extractvalue { ptr, i64, i64 } %t352, 1 + %t354 = icmp uge i64 %t351, %t353 + br i1 %t354, label %range9784, label %inrange9785 +range9784: + call void @finch_panic_index(ptr @.str.6608, i64 153, i64 %t351, i64 %t353) unreachable -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 %then9278, label %endif9280 -then9278: - %t340 = load { ptr, i64, i64 }, ptr %a309 - 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 - %t345 = extractvalue { ptr, i64, i64 } %t344, 1 - %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.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 %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.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.6379, i64 1, i64 0 }, ptr %a363 +inrange9785: + %t355 = extractvalue { ptr, i64, i64 } %t352, 0 + %t356 = getelementptr inbounds { ptr, i64, i64 }, ptr %t355, i64 %t351 + %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 %then9786, label %endif9788 +then9786: + %t360 = load { ptr, i64, i64 }, ptr %a324 + store { ptr, i64, i64 } { ptr @.str.6609, i64 25, i64 0 }, 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 - %t365 = load { ptr, i64, i64 }, ptr %a352 - store { ptr, i64, i64 } %t364, 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.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 %range9284, label %inrange9285 -range9284: - call void @finch_panic_index(ptr @.str.6381, i64 175, i64 %t374, i64 %t376) + %t365 = extractvalue { ptr, i64, i64 } %t364, 1 + %t366 = trunc i64 %t365 to i32 + %t367 = extractvalue { ptr, i64, i64 } %t364, 0 + %t368 = icmp eq ptr %t367, null + %t369 = select i1 %t368, ptr @.str.6610, ptr %t367 + %t370 = call i32 (ptr, ...) @printf(ptr @.str.6611, i32 %t366, ptr %t369) + store { ptr, i64, i64 } %t364, ptr %a371 + call void @finch_str_drop(ptr %a371) + %t372 = call i32 (ptr, ...) @printf(ptr @.str.6612) + call void @finch_str_drop(ptr %a324) + call void @finch.drop.arr_str(ptr %a295) + call void @finch.drop.arr_str(ptr %a294) + br label %for.step9768 +endif9788: + store { ptr, i64, i64 } { ptr @.str.6613, i64 4, i64 0 }, ptr %a373 + %t374 = getelementptr inbounds { ptr, i64, i64 }, ptr %a294, i32 0, i32 1 + %t375 = load i64, ptr %t374 + %t376 = icmp eq i64 %t375, 1 + br i1 %t376, label %then9789, label %endif9791 +then9789: + %t377 = load { ptr, i64, i64 }, ptr %a373 + store { ptr, i64, i64 } { ptr @.str.6614, i64 5, i64 0 }, ptr %a373 + store { ptr, i64, i64 } %t377, ptr %a378 + call void @finch_str_drop(ptr %a378) + br label %endif9791 +endif9791: + %t379 = load { ptr, i64, i64 }, ptr %a324 + store { ptr, i64, i64 } { ptr @.str.6615, i64 7, i64 0 }, ptr %a381 + store { ptr, i64, i64 } %t379, ptr %a382 + call void @finch_str_concat(ptr %a380, ptr %a381, ptr %a382) + %t383 = load { ptr, i64, i64 }, ptr %a380 + store { ptr, i64, i64 } %t383, ptr %a385 + store { ptr, i64, i64 } { ptr @.str.6616, i64 1, i64 0 }, ptr %a386 + call void @finch_str_concat(ptr %a384, ptr %a385, ptr %a386) + store { ptr, i64, i64 } %t383, ptr %a387 + call void @finch_str_drop(ptr %a387) + %t388 = load { ptr, i64, i64 }, ptr %a384 + %t389 = load { ptr, i64, i64 }, ptr %a373 + store { ptr, i64, i64 } %t388, ptr %a391 + store { ptr, i64, i64 } %t389, ptr %a392 + call void @finch_str_concat(ptr %a390, ptr %a391, ptr %a392) + store { ptr, i64, i64 } %t388, ptr %a393 + call void @finch_str_drop(ptr %a393) + %t394 = load { ptr, i64, i64 }, ptr %a390 + store { ptr, i64, i64 } %t394, ptr %a396 + store { ptr, i64, i64 } { ptr @.str.6617, i64 7, i64 0 }, ptr %a397 + call void @finch_str_concat(ptr %a395, ptr %a396, ptr %a397) + store { ptr, i64, i64 } %t394, ptr %a398 + call void @finch_str_drop(ptr %a398) + %t399 = load { ptr, i64, i64 }, ptr %a395 + %t400 = load i64, ptr %a280 + %t401 = load { ptr, i64, i64 }, ptr %a197 + %t402 = extractvalue { ptr, i64, i64 } %t401, 1 + %t403 = icmp uge i64 %t400, %t402 + br i1 %t403, label %range9792, label %inrange9793 +range9792: + call void @finch_panic_index(ptr @.str.6618, i64 161, i64 %t400, i64 %t402) unreachable -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 - store { ptr, i64, i64 } %t373, ptr %a382 - store { ptr, i64, i64 } %t380, 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 %a386 - 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.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.6386, i64 74, i64 0 }, 0 - %t399 = icmp eq ptr %t398, null - %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.6390, i64 66, i64 0 }, 0 - %t406 = icmp eq ptr %t405, null - %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.6394, i64 0, i64 0 }, 0 - %t413 = icmp eq ptr %t412, null - %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 %range9286, label %inrange9287 -range9286: - call void @finch_panic_index(ptr @.str.6399, i64 179, i64 %t417, i64 %t419) +inrange9793: + %t404 = extractvalue { ptr, i64, i64 } %t401, 0 + %t405 = getelementptr inbounds { ptr, i64, i64 }, ptr %t404, i64 %t400 + %t406 = load { ptr, i64, i64 }, ptr %t405 + store { ptr, i64, i64 } %t399, ptr %a408 + store { ptr, i64, i64 } %t406, ptr %a409 + call void @finch_str_concat(ptr %a407, ptr %a408, ptr %a409) + store { ptr, i64, i64 } %t399, ptr %a410 + call void @finch_str_drop(ptr %a410) + %t411 = load { ptr, i64, i64 }, ptr %a407 + store { ptr, i64, i64 } %t411, ptr %a413 + store { ptr, i64, i64 } { ptr @.str.6619, i64 31, i64 0 }, ptr %a414 + call void @finch_str_concat(ptr %a412, ptr %a413, ptr %a414) + store { ptr, i64, i64 } %t411, ptr %a415 + call void @finch_str_drop(ptr %a415) + %t416 = load { ptr, i64, i64 }, ptr %a412 + %t417 = extractvalue { ptr, i64, i64 } %t416, 1 + %t418 = trunc i64 %t417 to i32 + %t419 = extractvalue { ptr, i64, i64 } %t416, 0 + %t420 = icmp eq ptr %t419, null + %t421 = select i1 %t420, ptr @.str.6620, ptr %t419 + %t422 = call i32 (ptr, ...) @printf(ptr @.str.6621, i32 %t418, ptr %t421) + store { ptr, i64, i64 } %t416, ptr %a423 + call void @finch_str_drop(ptr %a423) + %t424 = call i32 (ptr, ...) @printf(ptr @.str.6622) + %t425 = extractvalue { ptr, i64, i64 } { ptr @.str.6623, i64 74, i64 0 }, 1 + %t426 = trunc i64 %t425 to i32 + %t427 = extractvalue { ptr, i64, i64 } { ptr @.str.6623, i64 74, i64 0 }, 0 + %t428 = icmp eq ptr %t427, null + %t429 = select i1 %t428, ptr @.str.6624, ptr %t427 + %t430 = call i32 (ptr, ...) @printf(ptr @.str.6625, i32 %t426, ptr %t429) + %t431 = call i32 (ptr, ...) @printf(ptr @.str.6626) + %t432 = extractvalue { ptr, i64, i64 } { ptr @.str.6627, i64 66, i64 0 }, 1 + %t433 = trunc i64 %t432 to i32 + %t434 = extractvalue { ptr, i64, i64 } { ptr @.str.6627, i64 66, i64 0 }, 0 + %t435 = icmp eq ptr %t434, null + %t436 = select i1 %t435, ptr @.str.6628, ptr %t434 + %t437 = call i32 (ptr, ...) @printf(ptr @.str.6629, i32 %t433, ptr %t436) + %t438 = call i32 (ptr, ...) @printf(ptr @.str.6630) + %t439 = extractvalue { ptr, i64, i64 } { ptr @.str.6631, i64 0, i64 0 }, 1 + %t440 = trunc i64 %t439 to i32 + %t441 = extractvalue { ptr, i64, i64 } { ptr @.str.6631, i64 0, i64 0 }, 0 + %t442 = icmp eq ptr %t441, null + %t443 = select i1 %t442, ptr @.str.6632, ptr %t441 + %t444 = call i32 (ptr, ...) @printf(ptr @.str.6633, i32 %t440, ptr %t443) + %t445 = call i32 (ptr, ...) @printf(ptr @.str.6634) + %t446 = load i64, ptr %a280 + %t447 = load { ptr, i64, i64 }, ptr %a197 + %t448 = extractvalue { ptr, i64, i64 } %t447, 1 + %t449 = icmp uge i64 %t446, %t448 + br i1 %t449, label %range9794, label %inrange9795 +range9794: + call void @finch_panic_index(ptr @.str.6636, i64 165, i64 %t446, i64 %t448) unreachable -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.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.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.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.6404, i64 0, i64 0 }, 0 - %t443 = icmp eq ptr %t442, null - %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.cond9258 -for.end9261: +inrange9795: + %t450 = extractvalue { ptr, i64, i64 } %t447, 0 + %t451 = getelementptr inbounds { ptr, i64, i64 }, ptr %t450, i64 %t446 + %t452 = load { ptr, i64, i64 }, ptr %t451 + %t453 = call { ptr, i64, i64 } @finch.linker.guessLib({ ptr, i64, i64 } %t452) + store { ptr, i64, i64 } { ptr @.str.6635, i64 12, i64 0 }, ptr %a455 + store { ptr, i64, i64 } %t453, ptr %a456 + call void @finch_str_concat(ptr %a454, ptr %a455, ptr %a456) + store { ptr, i64, i64 } %t453, ptr %a457 + call void @finch_str_drop(ptr %a457) + %t458 = load { ptr, i64, i64 }, ptr %a454 + store { ptr, i64, i64 } %t458, ptr %a460 + store { ptr, i64, i64 } { ptr @.str.6637, i64 1, i64 0 }, ptr %a461 + call void @finch_str_concat(ptr %a459, ptr %a460, ptr %a461) + store { ptr, i64, i64 } %t458, ptr %a462 + call void @finch_str_drop(ptr %a462) + %t463 = load { ptr, i64, i64 }, ptr %a459 + %t464 = extractvalue { ptr, i64, i64 } %t463, 1 + %t465 = trunc i64 %t464 to i32 + %t466 = extractvalue { ptr, i64, i64 } %t463, 0 + %t467 = icmp eq ptr %t466, null + %t468 = select i1 %t467, ptr @.str.6638, ptr %t466 + %t469 = call i32 (ptr, ...) @printf(ptr @.str.6639, i32 %t465, ptr %t468) + store { ptr, i64, i64 } %t463, ptr %a470 + call void @finch_str_drop(ptr %a470) + %t471 = call i32 (ptr, ...) @printf(ptr @.str.6640) + %t472 = extractvalue { ptr, i64, i64 } { ptr @.str.6641, i64 0, i64 0 }, 1 + %t473 = trunc i64 %t472 to i32 + %t474 = extractvalue { ptr, i64, i64 } { ptr @.str.6641, i64 0, i64 0 }, 0 + %t475 = icmp eq ptr %t474, null + %t476 = select i1 %t475, ptr @.str.6642, ptr %t474 + %t477 = call i32 (ptr, ...) @printf(ptr @.str.6643, i32 %t473, ptr %t476) + %t478 = call i32 (ptr, ...) @printf(ptr @.str.6644) + call void @finch_str_drop(ptr %a373) + call void @finch_str_drop(ptr %a324) + call void @finch.drop.arr_str(ptr %a295) + call void @finch.drop.arr_str(ptr %a294) + br label %for.step9768 +for.step9768: + %t479 = load i64, ptr %a280 + %t480 = add i64 %t479, 1 + store i64 %t480, ptr %a280 + br label %for.cond9766 +for.end9769: + call void @finch.drop.arr_S_linker_Names(ptr %a198) + call void @finch.drop.arr_str(ptr %a197) + call void @finch.drop.S_linker_Names(ptr %a5) + call void @finch.drop.S_linker_Names(ptr %a4) ret i64 1 } @@ -83442,111 +100438,95 @@ entry: %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 + %a32 = alloca { ptr, i64, i64 }, align 16 %a34 = alloca { ptr, i64, i64 }, align 16 %a35 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 + %a36 = alloca { ptr, i64, i64 }, align 16 + %a37 = 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 %a43 = alloca { ptr, i64, i64 }, align 16 %a44 = alloca { ptr, i64, i64 }, align 16 - %a46 = 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 + %a50 = alloca { ptr, i64, i64 }, align 16 %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = 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 + %a54 = alloca { ptr, i64, i64 }, align 16 + %a62 = alloca { ptr, i64, i64 }, align 16 %a63 = alloca { ptr, i64, i64 }, align 16 %a64 = 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 + %a70 = 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 - %a79 = 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 - %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 - %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 + %a98 = 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 %a105 = 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 %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 %a111 = 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 + %a112 = 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 %a120 = alloca { ptr, i64, i64 }, align 16 %a121 = alloca { ptr, i64, i64 }, align 16 + %a122 = 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 %a127 = 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 + %a132 = alloca { ptr, i64, i64 }, align 16 %a133 = alloca { ptr, i64, i64 }, align 16 %a134 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca i64, align 16 + %a135 = alloca { ptr, i64, i64 }, align 16 + %a137 = 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 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 + %a143 = alloca { ptr, i64, i64 }, align 16 + %a144 = alloca i64, align 16 + %a148 = alloca { ptr, i64, i64 }, align 16 %a149 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 + %a150 = 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 - %a164 = alloca { ptr, i64, i64 }, align 16 %a166 = alloca { ptr, i64, i64 }, align 16 %a167 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 + %a168 = alloca { ptr, i64, i64 }, align 16 + %a169 = alloca { ptr, i64, i64 }, align 16 %a171 = alloca { ptr, i64, i64 }, align 16 %a172 = alloca { ptr, i64, i64 }, align 16 - %a175 = 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 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = 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 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 + %a173 = alloca { ptr, i64, i64 }, align 16 + %a174 = alloca { ptr, i64, i64 }, align 16 store { ptr, i64, i64 } %p0, ptr %a1 store %S.platform.Target %p1, ptr %a2 store { ptr, i64, i64 } %p2, ptr %a3 @@ -83558,17 +100538,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.failed9288, label %try.ok9289 -try.failed9288: + br i1 %t9, label %try.failed9799, label %try.ok9800 +try.failed9799: %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.ok9289: +try.ok9800: store { ptr, i64, i64 } %t11, ptr %a13 - %t14 = call { ptr, i64, i64 } @finch.linker.cacheDir() + %t14 = call { ptr, i64, i64 } @finch.host.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.6408, i64 4, i64 0 }, ptr %a19 + store { ptr, i64, i64 } { ptr @.str.6645, 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 @@ -83582,215 +100562,222 @@ try.ok9289: store { ptr, i64, i64 } %t26, 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.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) - store { ptr, i64, i64 } %t20, 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.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 - %t47 = load { ptr, i64, i64 }, ptr %a46 - 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 %then9290, label %endif9292 -then9290: - %t51 = load { ptr, i64, i64 }, ptr %a46 + store { ptr, i64, i64 } %t26, ptr %a32 + call void @finch_str_drop(ptr %a32) + %t33 = load { ptr, i64, i64 }, ptr %a29 + store { ptr, i64, i64 } %t33, ptr %a35 + store { ptr, i64, i64 } { ptr @.str.6646, i64 3, i64 0 }, ptr %a36 + call void @finch_str_concat(ptr %a34, ptr %a35, ptr %a36) + store { ptr, i64, i64 } %t33, ptr %a37 + call void @finch_str_drop(ptr %a37) + %t38 = load { ptr, i64, i64 }, ptr %a34 + %t39 = call { ptr, i64, i64 } @finch.linker.fingerprint({ ptr, i64, i64 } %t38) + store { ptr, i64, i64 } %t38, ptr %a40 + call void @finch_str_drop(ptr %a40) + store { ptr, i64, i64 } %t20, ptr %a42 + store { ptr, i64, i64 } %t39, ptr %a43 + call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) + store { ptr, i64, i64 } %t20, ptr %a44 + call void @finch_str_drop(ptr %a44) + store { ptr, i64, i64 } %t39, ptr %a45 + call void @finch_str_drop(ptr %a45) + %t46 = load { ptr, i64, i64 }, ptr %a41 + store { ptr, i64, i64 } %t46, ptr %a48 + store { ptr, i64, i64 } { ptr @.str.6647, i64 2, i64 0 }, ptr %a49 + call void @finch_str_concat(ptr %a47, ptr %a48, ptr %a49) + store { ptr, i64, i64 } %t46, ptr %a50 + call void @finch_str_drop(ptr %a50) + %t51 = load { ptr, i64, i64 }, ptr %a47 store { ptr, i64, i64 } %t51, ptr %a52 - call void @finch_str_copy(ptr %a53, ptr %a52) - %t54 = load { ptr, i64, i64 }, ptr %a53 - %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 -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.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 - store { ptr, i64, i64 } %t62, ptr %a64 - call void @finch_str_copy(ptr %a63, ptr %a64) - %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.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() - %t72 = sext i32 %t71 to i64 - call void @finch_str_from_int(ptr %a73, i64 %t72) - %t74 = load { ptr, i64, i64 }, ptr %a73 - store { ptr, i64, i64 } %t70, ptr %a76 - store { ptr, i64, i64 } %t74, ptr %a77 - 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.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 %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.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.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 - store { ptr, i64, i64 } %t93, ptr %a96 - store { ptr, i64, i64 } %t94, 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 %a100 - 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 + %t53 = load { ptr, i64, i64 }, ptr %a52 + store { ptr, i64, i64 } %t53, ptr %a54 + %t55 = call i32 @finch_file_exists(ptr %a54) + %t56 = icmp ne i32 %t55, 0 + br i1 %t56, label %then9801, label %endif9803 +then9801: + %t57 = load { ptr, i64, i64 }, ptr %a52 + call void @finch_str_drop(ptr %a15) + call void @finch_str_drop(ptr %a13) + %t58 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 + %t59 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t58, { ptr, i64, i64 } %t57, 1 + ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t59 +endif9803: + %t60 = load { ptr, i64, i64 }, ptr %a15 + call void @finch.host.makeDirs({ ptr, i64, i64 } %t60) + %t61 = load { ptr, i64, i64 }, ptr %a52 + store { ptr, i64, i64 } %t61, ptr %a63 + store { ptr, i64, i64 } { ptr @.str.6648, 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 = call i64 @finch.host.pid() + call void @finch_str_from_int(ptr %a67, i64 %t66) + %t68 = load { ptr, i64, i64 }, ptr %a67 + 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) + store { ptr, i64, i64 } %t65, ptr %a72 + call void @finch_str_drop(ptr %a72) + store { ptr, i64, i64 } %t68, ptr %a73 + call void @finch_str_drop(ptr %a73) + %t74 = load { ptr, i64, i64 }, ptr %a69 + store { ptr, i64, i64 } %t74, ptr %a75 + store { ptr, i64, i64 } { ptr @.str.6649, i64 6, i64 0 }, ptr %a76 + %t77 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 1 + %t78 = load i1, ptr %t77 + br i1 %t78, label %then9804, label %endif9806 +then9804: + %t79 = load { ptr, i64, i64 }, ptr %a76 + store { ptr, i64, i64 } { ptr @.str.6650, i64 0, i64 0 }, ptr %a76 + store { ptr, i64, i64 } %t79, ptr %a80 + call void @finch_str_drop(ptr %a80) + br label %endif9806 +endif9806: + %t81 = load { ptr, i64, i64 }, ptr %a75 + store { ptr, i64, i64 } %t81, ptr %a83 + store { ptr, i64, i64 } { ptr @.str.6651, i64 4, i64 0 }, 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 %a86 + %t87 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t87, ptr %a89 + store { ptr, i64, i64 } { ptr @.str.6652, i64 4, 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 %a76 + store { ptr, i64, i64 } %t91, ptr %a94 + store { ptr, i64, i64 } %t92, ptr %a95 + call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) + store { ptr, i64, i64 } %t91, ptr %a96 + call void @finch_str_drop(ptr %a96) + %t97 = load { ptr, i64, i64 }, ptr %a93 + store { ptr, i64, i64 } %t97, ptr %a99 + store { ptr, i64, i64 } { ptr @.str.6653, i64 4, i64 0 }, ptr %a100 + call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100) + store { ptr, i64, i64 } %t97, ptr %a101 + call void @finch_str_drop(ptr %a101) + %t102 = load { ptr, i64, i64 }, ptr %a98 %t103 = load { ptr, i64, i64 }, ptr %a1 %t104 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t103) store { ptr, i64, i64 } %t102, ptr %a106 store { ptr, i64, i64 } %t104, 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 %a110 - 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 - %t114 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t113) - store { ptr, i64, i64 } %t112, ptr %a116 - store { ptr, i64, i64 } %t114, 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 %a120 - 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 - %t124 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t123) - store { ptr, i64, i64 } %t122, 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.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 - call void @finch_str_copy(ptr %a133, ptr %a134) - %t135 = call i64 @finch_shell(ptr %a133) - store i64 %t135, ptr %a136 - %t137 = load i64, ptr %a136 - %t138 = icmp ne i64 %t137, 0 - 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 - store { ptr, i64, i64 } zeroinitializer, ptr %a142 - %t143 = call i32 @finch_try_read_file(ptr %a141, ptr %a140, ptr %a142) - %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.failed9299, label %or.ok9300 -or.failed9299: - store { ptr, i64, i64 } %t145, ptr %a147 - 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.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.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 - %t161 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t160) - store { ptr, i64, i64 } %t159, 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 - call void @finch_str_copy(ptr %a166, ptr %a167) - %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.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 - store { ptr, i64, i64 } %t173, ptr %a176 - store { ptr, i64, i64 } %t174, ptr %a177 - 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.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 -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.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.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 - %t195 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t194) - store { ptr, i64, i64 } %t193, 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.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 - %t205 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t204) - store { ptr, i64, i64 } %t203, 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 - call void @finch_str_copy(ptr %a210, ptr %a211) - %t212 = call i64 @finch_shell(ptr %a210) - %t213 = load { ptr, i64, i64 }, ptr %a46 - store { ptr, i64, i64 } %t213, ptr %a214 - call void @finch_str_copy(ptr %a215, ptr %a214) - %t216 = load { ptr, i64, i64 }, ptr %a215 - %t217 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t218 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t217, { ptr, i64, i64 } %t216, 1 - ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t218 + store { ptr, i64, i64 } %t102, ptr %a108 + call void @finch_str_drop(ptr %a108) + store { ptr, i64, i64 } %t104, ptr %a109 + call void @finch_str_drop(ptr %a109) + %t110 = load { ptr, i64, i64 }, ptr %a105 + store { ptr, i64, i64 } %t110, ptr %a112 + store { ptr, i64, i64 } { ptr @.str.6654, i64 4, i64 0 }, ptr %a113 + call void @finch_str_concat(ptr %a111, ptr %a112, ptr %a113) + store { ptr, i64, i64 } %t110, ptr %a114 + call void @finch_str_drop(ptr %a114) + %t115 = load { ptr, i64, i64 }, ptr %a111 + %t116 = load { ptr, i64, i64 }, ptr %a75 + %t117 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t116) + store { ptr, i64, i64 } %t115, ptr %a119 + store { ptr, i64, i64 } %t117, ptr %a120 + call void @finch_str_concat(ptr %a118, ptr %a119, ptr %a120) + store { ptr, i64, i64 } %t115, ptr %a121 + call void @finch_str_drop(ptr %a121) + store { ptr, i64, i64 } %t117, ptr %a122 + call void @finch_str_drop(ptr %a122) + %t123 = load { ptr, i64, i64 }, ptr %a118 + store { ptr, i64, i64 } %t123, ptr %a125 + store { ptr, i64, i64 } { ptr @.str.6655, i64 3, i64 0 }, ptr %a126 + call void @finch_str_concat(ptr %a124, ptr %a125, ptr %a126) + store { ptr, i64, i64 } %t123, ptr %a127 + call void @finch_str_drop(ptr %a127) + %t128 = load { ptr, i64, i64 }, ptr %a124 + %t129 = load { ptr, i64, i64 }, ptr %a86 + %t130 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t129) + store { ptr, i64, i64 } %t128, ptr %a132 + store { ptr, i64, i64 } %t130, ptr %a133 + call void @finch_str_concat(ptr %a131, ptr %a132, ptr %a133) + store { ptr, i64, i64 } %t128, ptr %a134 + call void @finch_str_drop(ptr %a134) + store { ptr, i64, i64 } %t130, ptr %a135 + call void @finch_str_drop(ptr %a135) + %t136 = load { ptr, i64, i64 }, ptr %a131 + store { ptr, i64, i64 } %t136, ptr %a138 + store { ptr, i64, i64 } { ptr @.str.6656, i64 5, i64 0 }, ptr %a139 + call void @finch_str_concat(ptr %a137, ptr %a138, ptr %a139) + store { ptr, i64, i64 } %t136, ptr %a140 + call void @finch_str_drop(ptr %a140) + %t141 = load { ptr, i64, i64 }, ptr %a137 + %t142 = call i64 @finch.host.run({ ptr, i64, i64 } %t141) + store { ptr, i64, i64 } %t141, ptr %a143 + call void @finch_str_drop(ptr %a143) + store i64 %t142, ptr %a144 + %t145 = load i64, ptr %a144 + %t146 = icmp ne i64 %t145, 0 + br i1 %t146, label %then9807, label %endif9809 +then9807: + %t147 = load { ptr, i64, i64 }, ptr %a86 + store { ptr, i64, i64 } %t147, ptr %a148 + store { ptr, i64, i64 } zeroinitializer, ptr %a149 + store { ptr, i64, i64 } zeroinitializer, ptr %a150 + %t151 = call i32 @finch_try_read_file(ptr %a149, ptr %a148, ptr %a150) + %t152 = icmp eq i32 %t151, 0 + %t153 = load { ptr, i64, i64 }, ptr %a150 + %t154 = load { ptr, i64, i64 }, ptr %a149 + br i1 %t152, label %or.failed9810, label %or.ok9811 +or.failed9810: + store { ptr, i64, i64 } %t153, ptr %a155 + call void @finch_str_drop(ptr %a155) + br label %or.bend9812 +or.bend9812: + br label %or.end9813 +or.ok9811: + br label %or.end9813 +or.end9813: + %t156 = phi { ptr, i64, i64 } [ { ptr @.str.6657, i64 0, i64 0 }, %or.bend9812 ], [ %t154, %or.ok9811 ] + store { ptr, i64, i64 } %t156, ptr %a157 + %t158 = load { ptr, i64, i64 }, ptr %a75 + call void @finch.host.remove({ ptr, i64, i64 } %t158) + %t159 = load { ptr, i64, i64 }, ptr %a86 + call void @finch.host.remove({ ptr, i64, i64 } %t159) + %t160 = load { ptr, i64, i64 }, ptr %a157 + store { ptr, i64, i64 } %t160, ptr %a162 + store { ptr, i64, i64 } { ptr @.str.6658, i64 46, 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 %a3 + store { ptr, i64, i64 } %t164, ptr %a167 + store { ptr, i64, i64 } %t165, ptr %a168 + call void @finch_str_concat(ptr %a166, ptr %a167, ptr %a168) + store { ptr, i64, i64 } %t164, ptr %a169 + call void @finch_str_drop(ptr %a169) + %t170 = load { ptr, i64, i64 }, ptr %a166 + store { ptr, i64, i64 } %t170, ptr %a172 + store { ptr, i64, i64 } { ptr @.str.6659, i64 30, i64 0 }, ptr %a173 + call void @finch_str_concat(ptr %a171, ptr %a172, ptr %a173) + store { ptr, i64, i64 } %t170, ptr %a174 + call void @finch_str_drop(ptr %a174) + %t175 = load { ptr, i64, i64 }, ptr %a171 + call void @finch_str_drop(ptr %a157) + call void @finch_str_drop(ptr %a86) + call void @finch_str_drop(ptr %a76) + call void @finch_str_drop(ptr %a75) + call void @finch_str_drop(ptr %a52) + call void @finch_str_drop(ptr %a15) + call void @finch_str_drop(ptr %a13) + %t176 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t175, 2 + ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t176 +endif9809: + %t177 = load { ptr, i64, i64 }, ptr %a86 + call void @finch.host.remove({ ptr, i64, i64 } %t177) + %t178 = load { ptr, i64, i64 }, ptr %a75 + %t179 = load { ptr, i64, i64 }, ptr %a52 + call void @finch.host.move({ ptr, i64, i64 } %t178, { ptr, i64, i64 } %t179) + %t180 = load { ptr, i64, i64 }, ptr %a52 + call void @finch_str_drop(ptr %a86) + call void @finch_str_drop(ptr %a76) + call void @finch_str_drop(ptr %a75) + call void @finch_str_drop(ptr %a15) + call void @finch_str_drop(ptr %a13) + %t181 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 + %t182 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t181, { ptr, i64, i64 } %t180, 1 + ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t182 } define internal i64 @finch.linker.build(%S.linker.Build %p0, %S.platform.Target %p1, %S.cimport.CImports %p2) { @@ -83803,266 +100790,275 @@ entry: %a11 = alloca { ptr, i64, i64 }, align 16 %a13 = 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 %a21 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a33 = 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 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a64 = 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 - %a71 = alloca { ptr, i64, i64 }, align 16 + %a23 = alloca { ptr, i64, i64 }, align 16 + %a28 = alloca { ptr, i64, i64 }, align 16 + %a29 = alloca { ptr, i64, i64 }, align 16 + %a32 = alloca { ptr, i64, i64 }, align 16 + %a37 = 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 + %a51 = alloca { ptr, i64, i64 }, align 16 + %a61 = 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 %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 + %a77 = alloca { ptr, i64, i64 }, align 16 %a80 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a91 = 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 + %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 %a97 = alloca { ptr, i64, i64 }, align 16 %a98 = alloca { ptr, i64, i64 }, align 16 %a99 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 + %a102 = alloca { ptr, i64, i64 }, align 16 %a105 = alloca { ptr, i64, i64 }, align 16 %a106 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 + %a107 = alloca { ptr, i64, i64 }, align 16 %a109 = 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 - %a115 = alloca { ptr, i64, i64 }, align 16 %a116 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 + %a117 = 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 %a126 = 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 - %a134 = 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 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 + %a137 = alloca { ptr, i64, i64 }, align 16 + %a138 = alloca { ptr, i64, i64 }, align 16 %a142 = alloca { ptr, i64, i64 }, align 16 + %a143 = 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 + %a148 = 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 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 %a155 = 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 %a159 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca i64, align 16 + %a161 = alloca { ptr, i64, i64 }, align 16 + %a162 = 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 - %a166 = alloca { ptr, i64, i64 }, align 16 %a168 = 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 + %a172 = alloca { ptr, i64, i64 }, align 16 %a174 = alloca { ptr, i64, i64 }, align 16 %a175 = alloca { ptr, i64, i64 }, align 16 %a176 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 + %a177 = alloca { ptr, i64, i64 }, align 16 + %a180 = alloca { ptr, i64, i64 }, align 16 + %a181 = alloca i64, align 16 + %a186 = alloca { ptr, i64, i64 }, align 16 + %a187 = alloca { ptr, i64, i64 }, align 16 + %a188 = alloca { ptr, i64, i64 }, align 16 + %a193 = alloca { ptr, i64, i64 }, align 16 %a201 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 %a213 = alloca { ptr, i64, i64 }, align 16 %a214 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 + %a215 = 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 + %a222 = 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 + %a226 = alloca { ptr, i64, i64 }, align 16 %a227 = alloca { ptr, i64, i64 }, align 16 %a228 = alloca { ptr, i64, i64 }, align 16 - %a229 = 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 %a235 = alloca { ptr, i64, i64 }, align 16 - %a237 = 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 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 + %a240 = alloca { ptr, i64, i64 }, align 16 + %a241 = 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 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 + %a249 = alloca { ptr, i64, i64 }, align 16 + %a250 = alloca { ptr, i64, i64 }, align 16 + %a252 = 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 %a262 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 %a268 = alloca { ptr, i64, i64 }, align 16 %a269 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca i64, align 16 + %a270 = alloca { ptr, i64, i64 }, align 16 + %a273 = 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 + %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 + %a283 = alloca i64, align 16 %a291 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = 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 %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 %a306 = 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 + %a310 = 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 + %a314 = alloca { ptr, i64, i64 }, align 16 + %a315 = 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 + %a319 = 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 + %a324 = 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 - %a330 = 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 + %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 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 + %a339 = 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 %a346 = 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 %a350 = alloca { ptr, i64, i64 }, align 16 %a351 = alloca { ptr, i64, i64 }, align 16 %a352 = alloca { ptr, i64, i64 }, align 16 - %a354 = alloca { ptr, i64, i64 }, align 16 - %a355 = alloca { ptr, i64, i64 }, align 16 - %a357 = alloca i64, align 16 - %a361 = 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 %a362 = alloca { ptr, i64, i64 }, align 16 %a363 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 + %a364 = alloca { ptr, i64, i64 }, align 16 + %a365 = alloca { ptr, i64, i64 }, align 16 + %a369 = 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 %a375 = alloca { ptr, i64, i64 }, align 16 %a376 = alloca { ptr, i64, i64 }, align 16 %a377 = alloca { ptr, i64, i64 }, align 16 + %a378 = alloca { ptr, i64, i64 }, align 16 + %a381 = alloca { ptr, i64, i64 }, align 16 + %a382 = alloca i64, align 16 + %a386 = alloca { ptr, i64, i64 }, align 16 + %a387 = alloca { ptr, i64, i64 }, align 16 %a388 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a390 = 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 + %a395 = alloca { ptr, i64, i64 }, align 16 + %a396 = alloca { ptr, i64, i64 }, align 16 + %a397 = alloca { ptr, i64, i64 }, align 16 %a398 = alloca { ptr, i64, i64 }, align 16 - %a399 = 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 - %a408 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a410 = alloca { ptr, i64, i64 }, align 16 %a412 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a417 = alloca { ptr, i64, i64 }, align 16 - %a418 = alloca { ptr, i64, i64 }, align 16 - %a425 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 + %a419 = alloca { ptr, i64, i64 }, align 16 + %a420 = alloca { ptr, i64, i64 }, align 16 %a427 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a432 = alloca { ptr, i64, i64 }, align 16 + %a428 = alloca { ptr, i64, i64 }, align 16 + %a429 = 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 %a436 = alloca { ptr, i64, i64 }, align 16 %a437 = alloca { ptr, i64, i64 }, align 16 - %a438 = alloca { ptr, i64, i64 }, align 16 + %a440 = alloca { ptr, i64, i64 }, align 16 %a442 = alloca { ptr, i64, i64 }, align 16 %a443 = alloca { ptr, i64, i64 }, align 16 %a444 = alloca { ptr, i64, i64 }, align 16 + %a448 = alloca { ptr, i64, i64 }, align 16 %a449 = alloca { ptr, i64, i64 }, align 16 %a450 = alloca { ptr, i64, i64 }, align 16 - %a451 = 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 - %a460 = alloca { ptr, i64, i64 }, align 16 %a461 = alloca { ptr, i64, i64 }, align 16 %a462 = alloca { ptr, i64, i64 }, align 16 - %a467 = alloca { ptr, i64, i64 }, align 16 + %a463 = alloca { ptr, i64, i64 }, align 16 + %a464 = alloca { ptr, i64, i64 }, align 16 + %a465 = alloca { ptr, i64, i64 }, align 16 %a468 = alloca { ptr, i64, i64 }, align 16 - %a469 = alloca { ptr, i64, i64 }, align 16 - %a474 = alloca { ptr, i64, i64 }, align 16 - %a475 = alloca { ptr, i64, i64 }, align 16 - %a476 = alloca { ptr, i64, i64 }, align 16 + %a470 = alloca { ptr, i64, i64 }, align 16 + %a471 = alloca { ptr, i64, i64 }, align 16 + %a472 = alloca { ptr, i64, i64 }, align 16 + %a477 = alloca { ptr, i64, i64 }, align 16 + %a478 = alloca { ptr, i64, i64 }, align 16 + %a479 = alloca { ptr, i64, i64 }, align 16 %a480 = alloca { ptr, i64, i64 }, align 16 %a481 = alloca { ptr, i64, i64 }, align 16 - %a482 = alloca { ptr, i64, i64 }, align 16 %a484 = alloca { ptr, i64, i64 }, align 16 - %a485 = alloca { ptr, i64, i64 }, align 16 - %a486 = alloca { ptr, i64, i64 }, align 16 %a488 = alloca { ptr, i64, i64 }, align 16 %a489 = alloca { ptr, i64, i64 }, align 16 - %a491 = alloca i64, align 16 - %a493 = alloca { ptr, i64, i64 }, align 16 + %a490 = 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 + %a498 = alloca { ptr, i64, i64 }, align 16 %a500 = alloca { ptr, i64, i64 }, align 16 + %a501 = alloca { ptr, i64, i64 }, align 16 %a502 = alloca { ptr, i64, i64 }, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 + %a503 = alloca { ptr, i64, i64 }, align 16 %a506 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 + %a507 = alloca i64, align 16 %a509 = alloca { ptr, i64, i64 }, align 16 %a510 = alloca { ptr, i64, i64 }, align 16 %a511 = 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 - %a519 = alloca { ptr, i64, i64 }, align 16 - %a520 = alloca { ptr, i64, i64 }, align 16 - %a522 = alloca i64, align 16 - %a530 = alloca { ptr, i64, i64 }, align 16 - %a533 = alloca { ptr, i64, i64 }, align 16 - %a534 = alloca { ptr, i64, i64 }, align 16 - %a535 = alloca { ptr, i64, i64 }, align 16 + %a518 = alloca { ptr, i64, i64 }, align 16 + %a521 = alloca i64, align 16 + %a529 = 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 - %a545 = alloca { ptr, i64, i64 }, align 16 - %a546 = alloca { ptr, i64, i64 }, align 16 - %a547 = alloca { ptr, i64, i64 }, align 16 - %a549 = alloca { ptr, i64, i64 }, align 16 - %a550 = alloca { ptr, i64, i64 }, align 16 + %a540 = 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 %a551 = alloca { ptr, i64, i64 }, align 16 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.6429, i64 11, i64 0 }, 0 + %t4 = extractvalue { ptr, i64, i64 } { ptr @.str.6660, i64 11, i64 0 }, 0 %t5 = icmp eq ptr %t4, null - %t6 = select i1 %t5, ptr @.str.6430, ptr %t4 + %t6 = select i1 %t5, ptr @.str.6661, 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) @@ -84074,701 +101070,823 @@ 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 %then9303, label %endif9305 -then9303: - store { ptr, i64, i64 } { ptr @.str.6431, i64 5, i64 0 }, ptr %a13 - br label %endif9305 -endif9305: + br i1 %t16, label %then9814, label %endif9816 +then9814: %t17 = load { ptr, i64, i64 }, ptr %a13 + store { ptr, i64, i64 } { ptr @.str.6662, i64 5, i64 0 }, ptr %a13 store { ptr, i64, i64 } %t17, ptr %a18 - call void @finch_str_copy(ptr %a19, ptr %a18) - %t20 = load { ptr, i64, i64 }, ptr %a19 - 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 %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 %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.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 %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.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) - %t42 = load { ptr, i64, i64 }, ptr %a41 - 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 %a21 - 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 - %t49 = load { ptr, i64, i64 }, ptr %a21 - %t50 = call { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } @finch.linker.runtimeObject({ ptr, i64, i64 } %t47, %S.platform.Target %t48, { ptr, i64, i64 } %t49) - %t51 = extractvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t50, 0 - %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.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.6436, ptr %t59 - %t62 = call i32 (ptr, ...) @printf(ptr @.str.6437, i32 %t58, ptr %t61) - %t63 = call i32 (ptr, ...) @printf(ptr @.str.6438) + call void @finch_str_drop(ptr %a18) + br label %endif9816 +endif9816: + %t19 = load { ptr, i64, i64 }, ptr %a13 + store { ptr, i64, i64 } %t19, ptr %a20 + call void @finch_str_copy(ptr %a21, ptr %a20) + %t22 = load { ptr, i64, i64 }, ptr %a21 + store { ptr, i64, i64 } %t22, ptr %a23 + %t24 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 5 + %t25 = load i1, ptr %t24 + br i1 %t25, label %then9817, label %else9818 +then9817: + %t26 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 7 + %t27 = load { ptr, i64, i64 }, ptr %t26 + store { ptr, i64, i64 } %t27, ptr %a28 + call void @finch_str_copy(ptr %a29, ptr %a28) + %t30 = load { ptr, i64, i64 }, ptr %a29 + %t31 = load { ptr, i64, i64 }, ptr %a23 + store { ptr, i64, i64 } %t30, ptr %a23 + store { ptr, i64, i64 } %t31, ptr %a32 + call void @finch_str_drop(ptr %a32) + br label %endif9819 +else9818: + %t33 = extractvalue { ptr, i64, i64 } { ptr @.str.6663, i64 8, i64 0 }, 0 + %t34 = icmp eq ptr %t33, null + %t35 = select i1 %t34, ptr @.str.6664, ptr %t33 + %t36 = call ptr @getenv(ptr %t35) + store { ptr, i64, i64 } zeroinitializer, ptr %a37 + call void @finch_str_from_c(ptr %a37, ptr %t36) + %t38 = load { ptr, i64, i64 }, ptr %a37 + %t39 = extractvalue { ptr, i64, i64 } %t38, 1 + %t40 = icmp sgt i64 %t39, 0 + br i1 %t40, label %then9820, label %endif9822 +then9820: + %t41 = extractvalue { ptr, i64, i64 } { ptr @.str.6665, i64 8, i64 0 }, 0 + %t42 = icmp eq ptr %t41, null + %t43 = select i1 %t42, ptr @.str.6666, ptr %t41 + %t44 = call ptr @getenv(ptr %t43) + store { ptr, i64, i64 } zeroinitializer, ptr %a45 + call void @finch_str_from_c(ptr %a45, ptr %t44) + %t46 = load { ptr, i64, i64 }, ptr %a45 + store { ptr, i64, i64 } %t46, ptr %a47 + call void @finch_str_copy(ptr %a48, ptr %a47) + %t49 = load { ptr, i64, i64 }, ptr %a48 + %t50 = load { ptr, i64, i64 }, ptr %a23 + store { ptr, i64, i64 } %t49, ptr %a23 + store { ptr, i64, i64 } %t50, ptr %a51 + call void @finch_str_drop(ptr %a51) + br label %endif9822 +endif9822: + br label %endif9819 +endif9819: + %t52 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 2 + %t53 = load { ptr, i64, i64 }, ptr %t52 + %t54 = load %S.platform.Target, ptr %a2 + %t55 = load { ptr, i64, i64 }, ptr %a23 + %t56 = call { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } @finch.linker.runtimeObject({ ptr, i64, i64 } %t53, %S.platform.Target %t54, { ptr, i64, i64 } %t55) + %t57 = extractvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t56, 0 + %t58 = xor i1 %t57, true + %t59 = extractvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t56, 2 + %t60 = extractvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t56, 1 + br i1 %t58, label %or.failed9823, label %or.ok9824 +or.failed9823: + store { ptr, i64, i64 } %t59, ptr %a61 + %t62 = load { ptr, i64, i64 }, ptr %a61 + %t63 = extractvalue { ptr, i64, i64 } %t62, 1 + %t64 = trunc i64 %t63 to i32 + %t65 = extractvalue { ptr, i64, i64 } %t62, 0 + %t66 = icmp eq ptr %t65, null + %t67 = select i1 %t66, ptr @.str.6667, ptr %t65 + %t68 = call i32 (ptr, ...) @printf(ptr @.str.6668, i32 %t64, ptr %t67) + %t69 = call i32 (ptr, ...) @printf(ptr @.str.6669) + call void @finch_str_drop(ptr %a61) + call void @finch_str_drop(ptr %a23) + call void @finch_str_drop(ptr %a13) ret i64 1 -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.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.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 - %t79 = load { ptr, i64, i64 }, ptr %a71 - store { ptr, i64, i64 } %t79, ptr %a80 - %t81 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 1 - %t82 = load { ptr, i64, i64 }, ptr %t81 - 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.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 %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.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 %endif9316 -endif9316: - %t95 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 0 +or.ok9824: + store { ptr, i64, i64 } %t60, ptr %a70 + %t71 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 0 + %t72 = load { ptr, i64, i64 }, ptr %t71 + store { ptr, i64, i64 } %t72, ptr %a74 + store { ptr, i64, i64 } { ptr @.str.6670, i64 3, i64 0 }, ptr %a75 + call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) + %t76 = load { ptr, i64, i64 }, ptr %a73 + store { ptr, i64, i64 } %t76, ptr %a77 + %t78 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 0 + %t79 = load { ptr, i64, i64 }, ptr %t78 + store { ptr, i64, i64 } %t79, ptr %a81 + store { ptr, i64, i64 } { ptr @.str.6671, i64 2, 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 = load { ptr, i64, i64 }, ptr %a77 + %t86 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 1 + %t87 = load { ptr, i64, i64 }, ptr %t86 + store { ptr, i64, i64 } %t85, ptr %a88 + store { ptr, i64, i64 } %t87, ptr %a89 + %t90 = call i32 @finch_write_file(ptr %a88, ptr %a89) + %t91 = icmp ne i32 %t90, 0 + store { ptr, i64, i64 } { ptr @.str.6672, i64 0, i64 0 }, ptr %a92 + %t93 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 5 + %t94 = load i1, ptr %t93 + br i1 %t94, label %then9825, label %endif9827 +then9825: + %t95 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 0 %t96 = load { ptr, i64, i64 }, ptr %t95 - store { ptr, i64, i64 } %t96, ptr %a98 - store { ptr, i64, i64 } { ptr @.str.6443, i64 4, i64 0 }, ptr %a99 + store { ptr, i64, i64 } { ptr @.str.6673, i64 10, 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 %a101 - %t102 = load { ptr, i64, i64 }, ptr %a13 - %t103 = load { ptr, i64, i64 }, ptr %a86 - store { ptr, i64, i64 } %t102, 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 - store { ptr, i64, i64 } %t107, ptr %a109 - 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 - %t113 = load { ptr, i64, i64 }, ptr %t112 - store { ptr, i64, i64 } %t111, 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 - %t118 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 4 - %t119 = load { ptr, i64, i64 }, ptr %t118 - store { ptr, i64, i64 } %t117, 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.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 - %t129 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t128) + %t101 = load { ptr, i64, i64 }, ptr %a92 + store { ptr, i64, i64 } %t100, ptr %a92 + store { ptr, i64, i64 } %t101, ptr %a102 + call void @finch_str_drop(ptr %a102) + br label %endif9827 +endif9827: + %t103 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 0 + %t104 = load { ptr, i64, i64 }, ptr %t103 + store { ptr, i64, i64 } %t104, ptr %a106 + store { ptr, i64, i64 } { ptr @.str.6674, i64 4, 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 %a109 + %t110 = load { ptr, i64, i64 }, ptr %a13 + %t111 = load { ptr, i64, i64 }, ptr %a92 + store { ptr, i64, i64 } %t110, 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.6675, i64 1, i64 0 }, ptr %a118 + call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118) + store { ptr, i64, i64 } %t115, ptr %a119 + call void @finch_str_drop(ptr %a119) + %t120 = load { ptr, i64, i64 }, ptr %a116 + %t121 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 3 + %t122 = load { ptr, i64, i64 }, ptr %t121 + store { ptr, i64, i64 } %t120, ptr %a124 + store { ptr, i64, i64 } %t122, ptr %a125 + call void @finch_str_concat(ptr %a123, ptr %a124, ptr %a125) + store { ptr, i64, i64 } %t120, ptr %a126 + call void @finch_str_drop(ptr %a126) + %t127 = load { ptr, i64, i64 }, ptr %a123 + %t128 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 4 + %t129 = load { ptr, i64, i64 }, ptr %t128 store { ptr, i64, i64 } %t127, 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 %a135 - 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 - %t139 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t138) - store { ptr, i64, i64 } %t137, 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.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 - %t149 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t148) + store { ptr, i64, i64 } %t127, ptr %a133 + call void @finch_str_drop(ptr %a133) + %t134 = load { ptr, i64, i64 }, ptr %a130 + store { ptr, i64, i64 } %t134, ptr %a136 + store { ptr, i64, i64 } { ptr @.str.6676, i64 7, i64 0 }, ptr %a137 + call void @finch_str_concat(ptr %a135, ptr %a136, ptr %a137) + store { ptr, i64, i64 } %t134, ptr %a138 + call void @finch_str_drop(ptr %a138) + %t139 = load { ptr, i64, i64 }, ptr %a135 + %t140 = load { ptr, i64, i64 }, ptr %a77 + %t141 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t140) + store { ptr, i64, i64 } %t139, ptr %a143 + store { ptr, i64, i64 } %t141, ptr %a144 + call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144) + store { ptr, i64, i64 } %t139, ptr %a145 + call void @finch_str_drop(ptr %a145) + store { ptr, i64, i64 } %t141, ptr %a146 + call void @finch_str_drop(ptr %a146) + %t147 = load { ptr, i64, i64 }, ptr %a142 + store { ptr, i64, i64 } %t147, ptr %a149 + store { ptr, i64, i64 } { ptr @.str.6677, i64 4, i64 0 }, ptr %a150 + call void @finch_str_concat(ptr %a148, ptr %a149, ptr %a150) store { ptr, i64, i64 } %t147, ptr %a151 - store { ptr, i64, i64 } %t149, ptr %a152 - 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.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 - call void @finch_str_copy(ptr %a158, ptr %a159) - %t160 = call i64 @finch_shell(ptr %a158) - 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.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 - store { ptr, i64, i64 } %t167, ptr %a169 - call void @finch_str_copy(ptr %a168, ptr %a169) - %t170 = call i64 @finch_shell(ptr %a168) - %t171 = load i64, ptr %a161 - %t172 = icmp ne i64 %t171, 0 - 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 - store { ptr, i64, i64 } zeroinitializer, ptr %a176 - %t177 = call i32 @finch_try_read_file(ptr %a175, ptr %a174, ptr %a176) - %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.failed9320, label %or.ok9321 -or.failed9320: - store { ptr, i64, i64 } %t179, ptr %a181 - 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.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.6454, i64 46, i64 0 }, 0 - %t193 = icmp eq ptr %t192, null - %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.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.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 - %t208 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t207) - store { ptr, i64, i64 } %t206, 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 - call void @finch_str_copy(ptr %a213, ptr %a214) - %t215 = call i64 @finch_shell(ptr %a213) + call void @finch_str_drop(ptr %a151) + %t152 = load { ptr, i64, i64 }, ptr %a148 + %t153 = load { ptr, i64, i64 }, ptr %a84 + %t154 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t153) + store { ptr, i64, i64 } %t152, ptr %a156 + store { ptr, i64, i64 } %t154, ptr %a157 + call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) + store { ptr, i64, i64 } %t152, ptr %a158 + call void @finch_str_drop(ptr %a158) + store { ptr, i64, i64 } %t154, ptr %a159 + call void @finch_str_drop(ptr %a159) + %t160 = load { ptr, i64, i64 }, ptr %a155 + store { ptr, i64, i64 } %t160, ptr %a162 + store { ptr, i64, i64 } { ptr @.str.6678, i64 3, i64 0 }, ptr %a163 + call void @finch_str_concat(ptr %a161, ptr %a162, ptr %a163) + store { ptr, i64, i64 } %t160, ptr %a164 + call void @finch_str_drop(ptr %a164) + %t165 = load { ptr, i64, i64 }, ptr %a161 + %t166 = load { ptr, i64, i64 }, ptr %a109 + %t167 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t166) + store { ptr, i64, i64 } %t165, ptr %a169 + store { ptr, i64, i64 } %t167, ptr %a170 + call void @finch_str_concat(ptr %a168, ptr %a169, ptr %a170) + store { ptr, i64, i64 } %t165, ptr %a171 + call void @finch_str_drop(ptr %a171) + store { ptr, i64, i64 } %t167, ptr %a172 + call void @finch_str_drop(ptr %a172) + %t173 = load { ptr, i64, i64 }, ptr %a168 + store { ptr, i64, i64 } %t173, ptr %a175 + store { ptr, i64, i64 } { ptr @.str.6679, i64 5, i64 0 }, ptr %a176 + call void @finch_str_concat(ptr %a174, ptr %a175, ptr %a176) + store { ptr, i64, i64 } %t173, ptr %a177 + call void @finch_str_drop(ptr %a177) + %t178 = load { ptr, i64, i64 }, ptr %a174 + %t179 = call i64 @finch.host.run({ ptr, i64, i64 } %t178) + store { ptr, i64, i64 } %t178, ptr %a180 + call void @finch_str_drop(ptr %a180) + store i64 %t179, ptr %a181 + %t182 = load { ptr, i64, i64 }, ptr %a77 + call void @finch.host.remove({ ptr, i64, i64 } %t182) + %t183 = load i64, ptr %a181 + %t184 = icmp ne i64 %t183, 0 + br i1 %t184, label %then9828, label %endif9830 +then9828: + %t185 = load { ptr, i64, i64 }, ptr %a109 + store { ptr, i64, i64 } %t185, ptr %a186 + store { ptr, i64, i64 } zeroinitializer, ptr %a187 + store { ptr, i64, i64 } zeroinitializer, ptr %a188 + %t189 = call i32 @finch_try_read_file(ptr %a187, ptr %a186, ptr %a188) + %t190 = icmp eq i32 %t189, 0 + %t191 = load { ptr, i64, i64 }, ptr %a188 + %t192 = load { ptr, i64, i64 }, ptr %a187 + br i1 %t190, label %or.failed9831, label %or.ok9832 +or.failed9831: + store { ptr, i64, i64 } %t191, ptr %a193 + call void @finch_str_drop(ptr %a193) + br label %or.bend9833 +or.bend9833: + br label %or.end9834 +or.ok9832: + br label %or.end9834 +or.end9834: + %t194 = phi { ptr, i64, i64 } [ { ptr @.str.6680, i64 0, i64 0 }, %or.bend9833 ], [ %t192, %or.ok9832 ] + %t195 = extractvalue { ptr, i64, i64 } %t194, 1 + %t196 = trunc i64 %t195 to i32 + %t197 = extractvalue { ptr, i64, i64 } %t194, 0 + %t198 = icmp eq ptr %t197, null + %t199 = select i1 %t198, ptr @.str.6681, ptr %t197 + %t200 = call i32 (ptr, ...) @printf(ptr @.str.6682, i32 %t196, ptr %t199) + store { ptr, i64, i64 } %t194, ptr %a201 + call void @finch_str_drop(ptr %a201) + %t202 = call i32 (ptr, ...) @printf(ptr @.str.6683) + %t203 = extractvalue { ptr, i64, i64 } { ptr @.str.6684, i64 46, i64 0 }, 1 + %t204 = trunc i64 %t203 to i32 + %t205 = extractvalue { ptr, i64, i64 } { ptr @.str.6684, i64 46, i64 0 }, 0 + %t206 = icmp eq ptr %t205, null + %t207 = select i1 %t206, ptr @.str.6685, ptr %t205 + %t208 = call i32 (ptr, ...) @printf(ptr @.str.6686, i32 %t204, ptr %t207) + %t209 = call i32 (ptr, ...) @printf(ptr @.str.6687) + %t210 = load { ptr, i64, i64 }, ptr %a84 + call void @finch.host.remove({ ptr, i64, i64 } %t210) + %t211 = load { ptr, i64, i64 }, ptr %a109 + call void @finch.host.remove({ ptr, i64, i64 } %t211) + call void @finch_str_drop(ptr %a109) + call void @finch_str_drop(ptr %a92) + call void @finch_str_drop(ptr %a84) + call void @finch_str_drop(ptr %a77) + call void @finch_str_drop(ptr %a70) + call void @finch_str_drop(ptr %a23) + call void @finch_str_drop(ptr %a13) ret i64 1 -endif9319: - %t216 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } %t216, ptr %a218 - 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 - %t222 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t221) - store { ptr, i64, i64 } %t220, ptr %a224 - store { ptr, i64, i64 } %t222, ptr %a225 - 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.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 - %t232 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t231) - store { ptr, i64, i64 } %t230, 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 - store { ptr, i64, i64 } %t236, ptr %a238 - 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 - %t242 = load { ptr, i64, i64 }, ptr %t241 - %t243 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t242) - store { ptr, i64, i64 } %t240, 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 %a248 - %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 %then9324, label %endif9326 -then9324: - %t252 = load { ptr, i64, i64 }, ptr %a248 - store { ptr, i64, i64 } %t252, ptr %a254 - 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 %endif9326 -endif9326: - %t257 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 5 - %t258 = load i1, ptr %t257 - 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 %then9330, label %else9331 -then9330: - %t261 = load { ptr, i64, i64 }, ptr %a248 - store { ptr, i64, i64 } %t261, ptr %a263 - 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 %endif9332 -else9331: - %t266 = load { ptr, i64, i64 }, ptr %a248 - store { ptr, i64, i64 } %t266, ptr %a268 - 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 %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.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.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.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 %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.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 - %t295 = load i64, ptr %t294 - call void @finch_str_from_int(ptr %a296, i64 %t295) - %t297 = load { ptr, i64, i64 }, ptr %a296 - store { ptr, i64, i64 } %t293, 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.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.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 %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.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 - store { ptr, i64, i64 } %t314, 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.6473, i64 4, i64 0 }, ptr %a322 - call void @finch_str_concat(ptr %a320, ptr %a321, ptr %a322) +endif9830: + %t212 = load { ptr, i64, i64 }, ptr %a23 + store { ptr, i64, i64 } %t212, ptr %a214 + store { ptr, i64, i64 } { ptr @.str.6688, i64 1, i64 0 }, ptr %a215 + call void @finch_str_concat(ptr %a213, ptr %a214, ptr %a215) + %t216 = load { ptr, i64, i64 }, ptr %a213 + %t217 = load { ptr, i64, i64 }, ptr %a84 + %t218 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t217) + store { ptr, i64, i64 } %t216, ptr %a220 + store { ptr, i64, i64 } %t218, ptr %a221 + call void @finch_str_concat(ptr %a219, ptr %a220, ptr %a221) + store { ptr, i64, i64 } %t216, ptr %a222 + call void @finch_str_drop(ptr %a222) + store { ptr, i64, i64 } %t218, ptr %a223 + call void @finch_str_drop(ptr %a223) + %t224 = load { ptr, i64, i64 }, ptr %a219 + store { ptr, i64, i64 } %t224, ptr %a226 + store { ptr, i64, i64 } { ptr @.str.6689, i64 1, i64 0 }, ptr %a227 + call void @finch_str_concat(ptr %a225, ptr %a226, ptr %a227) + store { ptr, i64, i64 } %t224, ptr %a228 + call void @finch_str_drop(ptr %a228) + %t229 = load { ptr, i64, i64 }, ptr %a225 + %t230 = load { ptr, i64, i64 }, ptr %a70 + %t231 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t230) + store { ptr, i64, i64 } %t229, ptr %a233 + store { ptr, i64, i64 } %t231, ptr %a234 + call void @finch_str_concat(ptr %a232, ptr %a233, ptr %a234) + store { ptr, i64, i64 } %t229, ptr %a235 + call void @finch_str_drop(ptr %a235) + store { ptr, i64, i64 } %t231, ptr %a236 + call void @finch_str_drop(ptr %a236) + %t237 = load { ptr, i64, i64 }, ptr %a232 + store { ptr, i64, i64 } %t237, ptr %a239 + store { ptr, i64, i64 } { ptr @.str.6690, i64 4, i64 0 }, ptr %a240 + call void @finch_str_concat(ptr %a238, ptr %a239, ptr %a240) + store { ptr, i64, i64 } %t237, ptr %a241 + call void @finch_str_drop(ptr %a241) + %t242 = load { ptr, i64, i64 }, ptr %a238 + %t243 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 0 + %t244 = load { ptr, i64, i64 }, ptr %t243 + %t245 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t244) + store { ptr, i64, i64 } %t242, ptr %a247 + store { ptr, i64, i64 } %t245, ptr %a248 + call void @finch_str_concat(ptr %a246, ptr %a247, ptr %a248) + store { ptr, i64, i64 } %t242, ptr %a249 + call void @finch_str_drop(ptr %a249) + store { ptr, i64, i64 } %t245, ptr %a250 + call void @finch_str_drop(ptr %a250) + %t251 = load { ptr, i64, i64 }, ptr %a246 + store { ptr, i64, i64 } %t251, ptr %a252 + %t253 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 2 + %t254 = load i1, ptr %t253 + %t255 = xor i1 %t254, true + br i1 %t255, label %then9835, label %endif9837 +then9835: + %t256 = load { ptr, i64, i64 }, ptr %a252 + store { ptr, i64, i64 } %t256, ptr %a258 + store { ptr, i64, i64 } { ptr @.str.6691, i64 4, 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 %a252 + store { ptr, i64, i64 } %t260, ptr %a252 + store { ptr, i64, i64 } %t261, ptr %a262 + call void @finch_str_drop(ptr %a262) + br label %endif9837 +endif9837: + %t263 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 5 + %t264 = load i1, ptr %t263 + br i1 %t264, label %then9838, label %endif9840 +then9838: + %t265 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 3 + %t266 = load i1, ptr %t265 + br i1 %t266, label %then9841, label %else9842 +then9841: + %t267 = load { ptr, i64, i64 }, ptr %a252 + store { ptr, i64, i64 } %t267, ptr %a269 + store { ptr, i64, i64 } { ptr @.str.6692, i64 12, 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, i64, i64 }, ptr %a252 + store { ptr, i64, i64 } %t271, ptr %a252 + store { ptr, i64, i64 } %t272, ptr %a273 + call void @finch_str_drop(ptr %a273) + br label %endif9843 +else9842: + %t274 = load { ptr, i64, i64 }, ptr %a252 + store { ptr, i64, i64 } %t274, ptr %a276 + store { ptr, i64, i64 } { ptr @.str.6693, i64 8, 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 %a252 + store { ptr, i64, i64 } %t278, ptr %a252 + store { ptr, i64, i64 } %t279, ptr %a280 + call void @finch_str_drop(ptr %a280) + br label %endif9843 +endif9843: + br label %endif9840 +endif9840: + store { ptr, i64, i64 } zeroinitializer, ptr %a281 + %t282 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 6 + store i64 0, ptr %a283 + br label %each.cond9844 +each.cond9844: + %t284 = getelementptr inbounds { ptr, i64, i64 }, ptr %t282, i32 0, i32 1 + %t285 = load i64, ptr %t284 + %t286 = load i64, ptr %a283 + %t287 = icmp slt i64 %t286, %t285 + br i1 %t287, label %each.body9845, label %each.end9847 +each.body9845: + %t288 = load ptr, ptr %t282 + %t289 = getelementptr inbounds { ptr, i64, i64 }, ptr %t288, i64 %t286 + %t290 = load { ptr, i64, i64 }, ptr %t289 + store { ptr, i64, i64 } %t290, ptr %a291 + %t292 = load { ptr, i64, i64 }, ptr %a291 + store { ptr, i64, i64 } %t292, ptr %a293 + store { ptr, i64, i64 } { ptr @.str.6695, i64 2, i64 0 }, ptr %a295 + %t296 = call i32 @finch_str_ends(ptr %a293, ptr %a295) + %t297 = icmp ne i32 %t296, 0 + br i1 %t297, label %then9848, label %else9849 +then9848: + %t298 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 0 + %t299 = load { ptr, i64, i64 }, ptr %t298 + store { ptr, i64, i64 } %t299, ptr %a301 + store { ptr, i64, i64 } { ptr @.str.6696, i64 1, i64 0 }, ptr %a302 + call void @finch_str_concat(ptr %a300, ptr %a301, ptr %a302) + %t303 = load { ptr, i64, i64 }, ptr %a300 + %t304 = getelementptr inbounds { ptr, i64, i64 }, ptr %a281, i32 0, i32 1 + %t305 = load i64, ptr %t304 + call void @finch_str_from_int(ptr %a306, i64 %t305) + %t307 = load { ptr, i64, i64 }, ptr %a306 + store { ptr, i64, i64 } %t303, ptr %a309 + store { ptr, i64, i64 } %t307, ptr %a310 + call void @finch_str_concat(ptr %a308, ptr %a309, ptr %a310) + store { ptr, i64, i64 } %t303, ptr %a311 + call void @finch_str_drop(ptr %a311) + store { ptr, i64, i64 } %t307, ptr %a312 + call void @finch_str_drop(ptr %a312) + %t313 = load { ptr, i64, i64 }, ptr %a308 + store { ptr, i64, i64 } %t313, ptr %a315 + store { ptr, i64, i64 } { ptr @.str.6697, i64 2, i64 0 }, ptr %a316 + call void @finch_str_concat(ptr %a314, ptr %a315, ptr %a316) + store { ptr, i64, i64 } %t313, ptr %a317 + call void @finch_str_drop(ptr %a317) + %t318 = load { ptr, i64, i64 }, ptr %a314 + store { ptr, i64, i64 } %t318, ptr %a319 + store { ptr, i64, i64 } { ptr @.str.6698, i64 6, i64 0 }, ptr %a320 + %t321 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 1 + %t322 = load i1, ptr %t321 + br i1 %t322, label %then9851, label %endif9853 +then9851: %t323 = load { ptr, i64, i64 }, ptr %a320 - %t324 = load { ptr, i64, i64 }, ptr %a281 - %t325 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t324) - store { ptr, i64, i64 } %t323, ptr %a327 - store { ptr, i64, i64 } %t325, ptr %a328 + store { ptr, i64, i64 } { ptr @.str.6699, i64 0, i64 0 }, ptr %a320 + store { ptr, i64, i64 } %t323, ptr %a324 + call void @finch_str_drop(ptr %a324) + br label %endif9853 +endif9853: + %t325 = load { ptr, i64, i64 }, ptr %a23 + store { ptr, i64, i64 } %t325, ptr %a327 + store { ptr, i64, i64 } { ptr @.str.6700, i64 4, i64 0 }, ptr %a328 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.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 - %t335 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t334) - store { ptr, i64, i64 } %t333, ptr %a337 - store { ptr, i64, i64 } %t335, ptr %a338 + %t330 = load { ptr, i64, i64 }, ptr %a320 + 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) + store { ptr, i64, i64 } %t329, ptr %a334 + call void @finch_str_drop(ptr %a334) + %t335 = load { ptr, i64, i64 }, ptr %a331 + store { ptr, i64, i64 } %t335, ptr %a337 + store { ptr, i64, i64 } { ptr @.str.6701, i64 4, 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 %a341 - 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 - %t345 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t344) - store { ptr, i64, i64 } %t343, ptr %a347 - store { ptr, i64, i64 } %t345, ptr %a348 - 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.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 - call void @finch_str_copy(ptr %a354, ptr %a355) - %t356 = call i64 @finch_shell(ptr %a354) - store i64 %t356, ptr %a357 - %t358 = load i64, ptr %a357 - %t359 = icmp ne i64 %t358, 0 - 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 - store { ptr, i64, i64 } zeroinitializer, ptr %a363 - %t364 = call i32 @finch_try_read_file(ptr %a362, ptr %a361, ptr %a363) - %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.failed9346, label %or.ok9347 -or.failed9346: - store { ptr, i64, i64 } %t366, ptr %a368 - 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.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 - store { ptr, i64, i64 } %t373, ptr %a376 - store { ptr, i64, i64 } %t374, ptr %a377 + store { ptr, i64, i64 } %t335, ptr %a339 + call void @finch_str_drop(ptr %a339) + %t340 = load { ptr, i64, i64 }, ptr %a336 + %t341 = load { ptr, i64, i64 }, ptr %a291 + %t342 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t341) + store { ptr, i64, i64 } %t340, ptr %a344 + store { ptr, i64, i64 } %t342, ptr %a345 + call void @finch_str_concat(ptr %a343, ptr %a344, ptr %a345) + store { ptr, i64, i64 } %t340, ptr %a346 + call void @finch_str_drop(ptr %a346) + store { ptr, i64, i64 } %t342, ptr %a347 + call void @finch_str_drop(ptr %a347) + %t348 = load { ptr, i64, i64 }, ptr %a343 + store { ptr, i64, i64 } %t348, ptr %a350 + store { ptr, i64, i64 } { ptr @.str.6702, i64 4, i64 0 }, ptr %a351 + call void @finch_str_concat(ptr %a349, ptr %a350, ptr %a351) + store { ptr, i64, i64 } %t348, ptr %a352 + call void @finch_str_drop(ptr %a352) + %t353 = load { ptr, i64, i64 }, ptr %a349 + %t354 = load { ptr, i64, i64 }, ptr %a319 + %t355 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t354) + store { ptr, i64, i64 } %t353, ptr %a357 + store { ptr, i64, i64 } %t355, ptr %a358 + call void @finch_str_concat(ptr %a356, ptr %a357, ptr %a358) + store { ptr, i64, i64 } %t353, ptr %a359 + call void @finch_str_drop(ptr %a359) + store { ptr, i64, i64 } %t355, ptr %a360 + call void @finch_str_drop(ptr %a360) + %t361 = load { ptr, i64, i64 }, ptr %a356 + store { ptr, i64, i64 } %t361, ptr %a363 + store { ptr, i64, i64 } { ptr @.str.6703, i64 3, i64 0 }, ptr %a364 + call void @finch_str_concat(ptr %a362, ptr %a363, ptr %a364) + store { ptr, i64, i64 } %t361, ptr %a365 + call void @finch_str_drop(ptr %a365) + %t366 = load { ptr, i64, i64 }, ptr %a362 + %t367 = load { ptr, i64, i64 }, ptr %a109 + %t368 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t367) + store { ptr, i64, i64 } %t366, ptr %a370 + store { ptr, i64, i64 } %t368, ptr %a371 + call void @finch_str_concat(ptr %a369, ptr %a370, ptr %a371) + store { ptr, i64, i64 } %t366, ptr %a372 + call void @finch_str_drop(ptr %a372) + store { ptr, i64, i64 } %t368, ptr %a373 + call void @finch_str_drop(ptr %a373) + %t374 = load { ptr, i64, i64 }, ptr %a369 + store { ptr, i64, i64 } %t374, ptr %a376 + store { ptr, i64, i64 } { ptr @.str.6704, i64 5, i64 0 }, ptr %a377 call void @finch_str_concat(ptr %a375, ptr %a376, ptr %a377) - %t378 = load { ptr, i64, i64 }, ptr %a375 - %t379 = extractvalue { ptr, i64, i64 } %t378, 1 - %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.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.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) + store { ptr, i64, i64 } %t374, ptr %a378 + call void @finch_str_drop(ptr %a378) + %t379 = load { ptr, i64, i64 }, ptr %a375 + %t380 = call i64 @finch.host.run({ ptr, i64, i64 } %t379) + store { ptr, i64, i64 } %t379, ptr %a381 + call void @finch_str_drop(ptr %a381) + store i64 %t380, ptr %a382 + %t383 = load i64, ptr %a382 + %t384 = icmp ne i64 %t383, 0 + br i1 %t384, label %then9854, label %endif9856 +then9854: + %t385 = load { ptr, i64, i64 }, ptr %a109 + store { ptr, i64, i64 } %t385, ptr %a386 + store { ptr, i64, i64 } zeroinitializer, ptr %a387 + store { ptr, i64, i64 } zeroinitializer, ptr %a388 + %t389 = call i32 @finch_try_read_file(ptr %a387, ptr %a386, ptr %a388) + %t390 = icmp eq i32 %t389, 0 %t391 = load { ptr, i64, i64 }, ptr %a388 + %t392 = load { ptr, i64, i64 }, ptr %a387 + br i1 %t390, label %or.failed9857, label %or.ok9858 +or.failed9857: store { ptr, i64, i64 } %t391, ptr %a393 - 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 - %t397 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t396) - store { ptr, i64, i64 } %t395, 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 %a403 - 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 - %t407 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t406) - store { ptr, i64, i64 } %t405, ptr %a409 - store { ptr, i64, i64 } %t407, ptr %a410 - call void @finch_str_concat(ptr %a408, ptr %a409, ptr %a410) - %t411 = load { ptr, i64, i64 }, ptr %a408 - store { ptr, i64, i64 } %t411, ptr %a413 - call void @finch_str_copy(ptr %a412, ptr %a413) - %t414 = call i64 @finch_shell(ptr %a412) + call void @finch_str_drop(ptr %a393) + br label %or.bend9859 +or.bend9859: + br label %or.end9860 +or.ok9858: + br label %or.end9860 +or.end9860: + %t394 = phi { ptr, i64, i64 } [ { ptr @.str.6705, i64 0, i64 0 }, %or.bend9859 ], [ %t392, %or.ok9858 ] + store { ptr, i64, i64 } %t394, ptr %a396 + store { ptr, i64, i64 } { ptr @.str.6706, i64 24, i64 0 }, ptr %a397 + call void @finch_str_concat(ptr %a395, ptr %a396, ptr %a397) + store { ptr, i64, i64 } %t394, ptr %a398 + call void @finch_str_drop(ptr %a398) + %t399 = load { ptr, i64, i64 }, ptr %a395 + %t400 = load { ptr, i64, i64 }, ptr %a291 + store { ptr, i64, i64 } %t399, ptr %a402 + store { ptr, i64, i64 } %t400, ptr %a403 + call void @finch_str_concat(ptr %a401, ptr %a402, ptr %a403) + store { ptr, i64, i64 } %t399, ptr %a404 + call void @finch_str_drop(ptr %a404) + %t405 = load { ptr, i64, i64 }, ptr %a401 + %t406 = extractvalue { ptr, i64, i64 } %t405, 1 + %t407 = trunc i64 %t406 to i32 + %t408 = extractvalue { ptr, i64, i64 } %t405, 0 + %t409 = icmp eq ptr %t408, null + %t410 = select i1 %t409, ptr @.str.6707, ptr %t408 + %t411 = call i32 (ptr, ...) @printf(ptr @.str.6708, i32 %t407, ptr %t410) + store { ptr, i64, i64 } %t405, ptr %a412 + call void @finch_str_drop(ptr %a412) + %t413 = call i32 (ptr, ...) @printf(ptr @.str.6709) + %t414 = load { ptr, i64, i64 }, ptr %a84 + call void @finch.host.remove({ ptr, i64, i64 } %t414) + %t415 = load { ptr, i64, i64 }, ptr %a109 + call void @finch.host.remove({ ptr, i64, i64 } %t415) + %t416 = load { ptr, i64, i64 }, ptr %a319 + call void @finch.host.remove({ ptr, i64, i64 } %t416) + call void @finch_str_drop(ptr %a320) + call void @finch_str_drop(ptr %a319) + call void @finch.drop.arr_str(ptr %a281) + call void @finch_str_drop(ptr %a252) + call void @finch_str_drop(ptr %a109) + call void @finch_str_drop(ptr %a92) + call void @finch_str_drop(ptr %a84) + call void @finch_str_drop(ptr %a77) + call void @finch_str_drop(ptr %a70) + call void @finch_str_drop(ptr %a23) + call void @finch_str_drop(ptr %a13) ret i64 1 -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 - call void @finch_str_copy(ptr %a418, ptr %a417) - %t419 = load { ptr, i64, i64 }, ptr %a418 - %t420 = load i64, ptr %t415 - %t421 = add i64 %t420, 1 - call void @finch_arr_reserve(ptr %a271, i64 %t421, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t422 = load ptr, ptr %a271 - %t423 = getelementptr inbounds { ptr, i64, i64 }, ptr %t422, i64 %t420 - store { ptr, i64, i64 } %t419, ptr %t423 - 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.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 - %t430 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t429) - store { ptr, i64, i64 } %t428, ptr %a432 - store { ptr, i64, i64 } %t430, ptr %a433 - 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 %endif9339 -else9338: - %t435 = load { ptr, i64, i64 }, ptr %a281 - store { ptr, i64, i64 } %t435, ptr %a436 - 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.from9350 -logic.from9350: - br i1 %t440, label %logic.end9352, label %logic.rhs9351 -logic.rhs9351: - %t441 = load { ptr, i64, i64 }, ptr %a281 +endif9856: + %t417 = getelementptr inbounds { ptr, i64, i64 }, ptr %a281, i32 0, i32 1 + %t418 = load { ptr, i64, i64 }, ptr %a319 + store { ptr, i64, i64 } %t418, ptr %a419 + call void @finch_str_copy(ptr %a420, ptr %a419) + %t421 = load { ptr, i64, i64 }, ptr %a420 + %t422 = load i64, ptr %t417 + %t423 = add i64 %t422, 1 + call void @finch_arr_reserve(ptr %a281, i64 %t423, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t424 = load ptr, ptr %a281 + %t425 = getelementptr inbounds { ptr, i64, i64 }, ptr %t424, i64 %t422 + store { ptr, i64, i64 } %t421, ptr %t425 + store i64 %t423, ptr %t417 + %t426 = load { ptr, i64, i64 }, ptr %a252 + store { ptr, i64, i64 } %t426, ptr %a428 + store { ptr, i64, i64 } { ptr @.str.6710, i64 1, i64 0 }, ptr %a429 + call void @finch_str_concat(ptr %a427, ptr %a428, ptr %a429) + %t430 = load { ptr, i64, i64 }, ptr %a427 + %t431 = load { ptr, i64, i64 }, ptr %a319 + %t432 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t431) + store { ptr, i64, i64 } %t430, ptr %a434 + store { ptr, i64, i64 } %t432, ptr %a435 + call void @finch_str_concat(ptr %a433, ptr %a434, ptr %a435) + store { ptr, i64, i64 } %t430, ptr %a436 + call void @finch_str_drop(ptr %a436) + store { ptr, i64, i64 } %t432, ptr %a437 + call void @finch_str_drop(ptr %a437) + %t438 = load { ptr, i64, i64 }, ptr %a433 + %t439 = load { ptr, i64, i64 }, ptr %a252 + store { ptr, i64, i64 } %t438, ptr %a252 + store { ptr, i64, i64 } %t439, ptr %a440 + call void @finch_str_drop(ptr %a440) + call void @finch_str_drop(ptr %a320) + call void @finch_str_drop(ptr %a319) + br label %endif9850 +else9849: + %t441 = load { ptr, i64, i64 }, ptr %a291 store { ptr, i64, i64 } %t441, ptr %a442 - store { ptr, i64, i64 } { ptr @.str.6489, i64 2, i64 0 }, ptr %a444 + store { ptr, i64, i64 } { ptr @.str.6712, 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.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.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 - %t454 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t453) - store { ptr, i64, i64 } %t452, ptr %a456 - store { ptr, i64, i64 } %t454, ptr %a457 + br label %logic.from9861 +logic.from9861: + br i1 %t446, label %logic.end9863, label %logic.rhs9862 +logic.rhs9862: + %t447 = load { ptr, i64, i64 }, ptr %a291 + store { ptr, i64, i64 } %t447, ptr %a448 + store { ptr, i64, i64 } { ptr @.str.6714, i64 2, i64 0 }, ptr %a450 + %t451 = call i32 @finch_str_ends(ptr %a448, ptr %a450) + %t452 = icmp ne i32 %t451, 0 + br label %logic.rend9864 +logic.rend9864: + br label %logic.end9863 +logic.end9863: + %t453 = phi i1 [ true, %logic.from9861 ], [ %t452, %logic.rend9864 ] + br i1 %t453, label %then9865, label %else9866 +then9865: + %t454 = load { ptr, i64, i64 }, ptr %a252 + store { ptr, i64, i64 } %t454, ptr %a456 + store { ptr, i64, i64 } { ptr @.str.6715, i64 1, i64 0 }, 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 %a248 - br label %endif9356 -else9355: - %t459 = load { ptr, i64, i64 }, ptr %a248 - store { ptr, i64, i64 } %t459, ptr %a461 - 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 - %t465 = load %S.platform.Target, ptr %a2 - %t466 = call { ptr, i64, i64 } @finch.linker.libFlags({ ptr, i64, i64 } %t464, %S.platform.Target %t465) - store { ptr, i64, i64 } %t463, ptr %a468 - store { ptr, i64, i64 } %t466, ptr %a469 - 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 %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.cond9333 -each.end9336: - %t473 = load { ptr, i64, i64 }, ptr %a248 - store { ptr, i64, i64 } %t473, ptr %a475 - 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 - %t479 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t478) - store { ptr, i64, i64 } %t477, ptr %a481 - store { ptr, i64, i64 } %t479, ptr %a482 - 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.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 + %t459 = load { ptr, i64, i64 }, ptr %a291 + %t460 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t459) + store { ptr, i64, i64 } %t458, ptr %a462 + store { ptr, i64, i64 } %t460, ptr %a463 + call void @finch_str_concat(ptr %a461, ptr %a462, ptr %a463) + store { ptr, i64, i64 } %t458, ptr %a464 + call void @finch_str_drop(ptr %a464) + store { ptr, i64, i64 } %t460, ptr %a465 + call void @finch_str_drop(ptr %a465) + %t466 = load { ptr, i64, i64 }, ptr %a461 + %t467 = load { ptr, i64, i64 }, ptr %a252 + store { ptr, i64, i64 } %t466, ptr %a252 + store { ptr, i64, i64 } %t467, ptr %a468 + call void @finch_str_drop(ptr %a468) + br label %endif9867 +else9866: + %t469 = load { ptr, i64, i64 }, ptr %a252 + store { ptr, i64, i64 } %t469, ptr %a471 + store { ptr, i64, i64 } { ptr @.str.6716, 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 = load { ptr, i64, i64 }, ptr %a291 + %t475 = load %S.platform.Target, ptr %a2 + %t476 = call { ptr, i64, i64 } @finch.linker.libFlags({ ptr, i64, i64 } %t474, %S.platform.Target %t475) + store { ptr, i64, i64 } %t473, ptr %a478 + store { ptr, i64, i64 } %t476, ptr %a479 + call void @finch_str_concat(ptr %a477, ptr %a478, ptr %a479) + store { ptr, i64, i64 } %t473, ptr %a480 + call void @finch_str_drop(ptr %a480) + store { ptr, i64, i64 } %t476, ptr %a481 + call void @finch_str_drop(ptr %a481) + %t482 = load { ptr, i64, i64 }, ptr %a477 + %t483 = load { ptr, i64, i64 }, ptr %a252 + store { ptr, i64, i64 } %t482, ptr %a252 + store { ptr, i64, i64 } %t483, ptr %a484 + call void @finch_str_drop(ptr %a484) + br label %endif9867 +endif9867: + br label %endif9850 +endif9850: + br label %each.step9846 +each.step9846: + %t485 = load i64, ptr %a283 + %t486 = add i64 %t485, 1 + store i64 %t486, ptr %a283 + br label %each.cond9844 +each.end9847: + %t487 = load { ptr, i64, i64 }, ptr %a252 store { ptr, i64, i64 } %t487, ptr %a489 - call void @finch_str_copy(ptr %a488, ptr %a489) - %t490 = call i64 @finch_shell(ptr %a488) - store i64 %t490, ptr %a491 - %t492 = load { ptr, i64, i64 }, ptr %a101 - store { ptr, i64, i64 } %t492, ptr %a493 - store { ptr, i64, i64 } zeroinitializer, ptr %a494 - store { ptr, i64, i64 } zeroinitializer, ptr %a495 - %t496 = call i32 @finch_try_read_file(ptr %a494, ptr %a493, ptr %a495) - %t497 = icmp eq i32 %t496, 0 - %t498 = load { ptr, i64, i64 }, ptr %a495 + store { ptr, i64, i64 } { ptr @.str.6717, i64 3, i64 0 }, ptr %a490 + call void @finch_str_concat(ptr %a488, ptr %a489, ptr %a490) + %t491 = load { ptr, i64, i64 }, ptr %a488 + %t492 = load { ptr, i64, i64 }, ptr %a109 + %t493 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t492) + store { ptr, i64, i64 } %t491, ptr %a495 + store { ptr, i64, i64 } %t493, ptr %a496 + call void @finch_str_concat(ptr %a494, ptr %a495, ptr %a496) + store { ptr, i64, i64 } %t491, ptr %a497 + call void @finch_str_drop(ptr %a497) + store { ptr, i64, i64 } %t493, ptr %a498 + call void @finch_str_drop(ptr %a498) %t499 = load { ptr, i64, i64 }, ptr %a494 - br i1 %t497, label %or.failed9357, label %or.ok9358 -or.failed9357: - store { ptr, i64, i64 } %t498, ptr %a500 - 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.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.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 - %t514 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t513) - store { ptr, i64, i64 } %t512, ptr %a516 - store { ptr, i64, i64 } %t514, ptr %a517 - call void @finch_str_concat(ptr %a515, ptr %a516, ptr %a517) - %t518 = load { ptr, i64, i64 }, ptr %a515 - store { ptr, i64, i64 } %t518, ptr %a520 - call void @finch_str_copy(ptr %a519, ptr %a520) - %t521 = call i64 @finch_shell(ptr %a519) - store i64 0, ptr %a522 - 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.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.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.step9363 -each.step9363: - %t540 = load i64, ptr %a522 - %t541 = add i64 %t540, 1 - store i64 %t541, ptr %a522 - br label %each.cond9361 -each.end9364: - %t542 = load i64, ptr %a491 - %t543 = icmp eq i64 %t542, 127 - br i1 %t543, label %then9365, label %endif9367 -then9365: - %t544 = load { ptr, i64, i64 }, ptr %a21 - 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.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.6500, ptr %t555 - %t558 = call i32 (ptr, ...) @printf(ptr @.str.6501, i32 %t554, ptr %t557) - %t559 = call i32 (ptr, ...) @printf(ptr @.str.6502) + store { ptr, i64, i64 } %t499, ptr %a501 + store { ptr, i64, i64 } { ptr @.str.6718, i64 5, i64 0 }, ptr %a502 + call void @finch_str_concat(ptr %a500, ptr %a501, ptr %a502) + store { ptr, i64, i64 } %t499, ptr %a503 + call void @finch_str_drop(ptr %a503) + %t504 = load { ptr, i64, i64 }, ptr %a500 + %t505 = call i64 @finch.host.run({ ptr, i64, i64 } %t504) + store { ptr, i64, i64 } %t504, ptr %a506 + call void @finch_str_drop(ptr %a506) + store i64 %t505, ptr %a507 + %t508 = load { ptr, i64, i64 }, ptr %a109 + store { ptr, i64, i64 } %t508, ptr %a509 + store { ptr, i64, i64 } zeroinitializer, ptr %a510 + store { ptr, i64, i64 } zeroinitializer, ptr %a511 + %t512 = call i32 @finch_try_read_file(ptr %a510, ptr %a509, ptr %a511) + %t513 = icmp eq i32 %t512, 0 + %t514 = load { ptr, i64, i64 }, ptr %a511 + %t515 = load { ptr, i64, i64 }, ptr %a510 + br i1 %t513, label %or.failed9868, label %or.ok9869 +or.failed9868: + store { ptr, i64, i64 } %t514, ptr %a516 + call void @finch_str_drop(ptr %a516) + br label %or.bend9870 +or.bend9870: + br label %or.end9871 +or.ok9869: + br label %or.end9871 +or.end9871: + %t517 = phi { ptr, i64, i64 } [ { ptr @.str.6719, i64 0, i64 0 }, %or.bend9870 ], [ %t515, %or.ok9869 ] + store { ptr, i64, i64 } %t517, ptr %a518 + %t519 = load { ptr, i64, i64 }, ptr %a84 + call void @finch.host.remove({ ptr, i64, i64 } %t519) + %t520 = load { ptr, i64, i64 }, ptr %a109 + call void @finch.host.remove({ ptr, i64, i64 } %t520) + store i64 0, ptr %a521 + br label %each.cond9872 +each.cond9872: + %t522 = getelementptr inbounds { ptr, i64, i64 }, ptr %a281, i32 0, i32 1 + %t523 = load i64, ptr %t522 + %t524 = load i64, ptr %a521 + %t525 = icmp slt i64 %t524, %t523 + br i1 %t525, label %each.body9873, label %each.end9875 +each.body9873: + %t526 = load ptr, ptr %a281 + %t527 = getelementptr inbounds { ptr, i64, i64 }, ptr %t526, i64 %t524 + %t528 = load { ptr, i64, i64 }, ptr %t527 + store { ptr, i64, i64 } %t528, ptr %a529 + %t530 = load { ptr, i64, i64 }, ptr %a529 + call void @finch.host.remove({ ptr, i64, i64 } %t530) + br label %each.step9874 +each.step9874: + %t531 = load i64, ptr %a521 + %t532 = add i64 %t531, 1 + store i64 %t532, ptr %a521 + br label %each.cond9872 +each.end9875: + %t533 = load i64, ptr %a507 + %t534 = icmp eq i64 %t533, 127 + br i1 %t534, label %then9876, label %endif9878 +then9876: + %t535 = load { ptr, i64, i64 }, ptr %a23 + store { ptr, i64, i64 } { ptr @.str.6720, i64 42, i64 0 }, 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 + store { ptr, i64, i64 } %t539, ptr %a541 + store { ptr, i64, i64 } { ptr @.str.6721, i64 32, i64 0 }, ptr %a542 + call void @finch_str_concat(ptr %a540, ptr %a541, ptr %a542) + store { ptr, i64, i64 } %t539, ptr %a543 + call void @finch_str_drop(ptr %a543) + %t544 = load { ptr, i64, i64 }, ptr %a540 + %t545 = extractvalue { ptr, i64, i64 } %t544, 1 + %t546 = trunc i64 %t545 to i32 + %t547 = extractvalue { ptr, i64, i64 } %t544, 0 + %t548 = icmp eq ptr %t547, null + %t549 = select i1 %t548, ptr @.str.6722, ptr %t547 + %t550 = call i32 (ptr, ...) @printf(ptr @.str.6723, i32 %t546, ptr %t549) + store { ptr, i64, i64 } %t544, ptr %a551 + call void @finch_str_drop(ptr %a551) + %t552 = call i32 (ptr, ...) @printf(ptr @.str.6724) + call void @finch_str_drop(ptr %a518) + call void @finch.drop.arr_str(ptr %a281) + call void @finch_str_drop(ptr %a252) + call void @finch_str_drop(ptr %a109) + call void @finch_str_drop(ptr %a92) + call void @finch_str_drop(ptr %a84) + call void @finch_str_drop(ptr %a77) + call void @finch_str_drop(ptr %a70) + call void @finch_str_drop(ptr %a23) + call void @finch_str_drop(ptr %a13) ret i64 1 -endif9367: - %t560 = load i64, ptr %a491 - %t561 = icmp ne i64 %t560, 0 - 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 -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 %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.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: +endif9878: + %t553 = load i64, ptr %a507 + %t554 = icmp ne i64 %t553, 0 + br i1 %t554, label %then9879, label %endif9881 +then9879: + %t555 = load { ptr, i64, i64 }, ptr %a518 + %t556 = load %S.cimport.CImports, ptr %a3 + %t557 = load %S.platform.Target, ptr %a2 + %t558 = call i64 @finch.linker.linkFailed({ ptr, i64, i64 } %t555, %S.cimport.CImports %t556, %S.platform.Target %t557) + call void @finch_str_drop(ptr %a518) + call void @finch.drop.arr_str(ptr %a281) + call void @finch_str_drop(ptr %a252) + call void @finch_str_drop(ptr %a109) + call void @finch_str_drop(ptr %a92) + call void @finch_str_drop(ptr %a84) + call void @finch_str_drop(ptr %a77) + call void @finch_str_drop(ptr %a70) + call void @finch_str_drop(ptr %a23) + call void @finch_str_drop(ptr %a13) + ret i64 %t558 +endif9881: + %t559 = getelementptr inbounds { ptr, i64, i64 }, ptr %a518, i32 0, i32 1 + %t560 = load i64, ptr %t559 + %t561 = icmp sgt i64 %t560, 0 + br i1 %t561, label %then9882, label %endif9884 +then9882: + %t562 = load { ptr, i64, i64 }, ptr %a518 + %t563 = extractvalue { ptr, i64, i64 } %t562, 1 + %t564 = trunc i64 %t563 to i32 + %t565 = extractvalue { ptr, i64, i64 } %t562, 0 + %t566 = icmp eq ptr %t565, null + %t567 = select i1 %t566, ptr @.str.6725, ptr %t565 + %t568 = call i32 (ptr, ...) @printf(ptr @.str.6726, i32 %t564, ptr %t567) + %t569 = call i32 (ptr, ...) @printf(ptr @.str.6727) + br label %endif9884 +endif9884: + call void @finch_str_drop(ptr %a518) + call void @finch.drop.arr_str(ptr %a281) + call void @finch_str_drop(ptr %a252) + call void @finch_str_drop(ptr %a109) + call void @finch_str_drop(ptr %a92) + call void @finch_str_drop(ptr %a84) + call void @finch_str_drop(ptr %a77) + call void @finch_str_drop(ptr %a70) + call void @finch_str_drop(ptr %a23) + call void @finch_str_drop(ptr %a13) ret i64 0 } @@ -84778,72 +101896,79 @@ entry: 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: + br label %logic.from9885 +logic.from9885: + br i1 %t3, label %logic.rhs9886, label %logic.end9887 +logic.rhs9886: %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: + br label %logic.rend9888 +logic.rend9888: + br label %logic.end9887 +logic.end9887: + %t6 = phi i1 [ false, %logic.from9885 ], [ %t5, %logic.rend9888 ] + br i1 %t6, label %then9889, label %endif9891 +then9889: %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: +endif9891: %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: + br label %logic.from9892 +logic.from9892: + br i1 %t12, label %logic.rhs9893, label %logic.end9894 +logic.rhs9893: %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: + br label %logic.rend9895 +logic.rend9895: + br label %logic.end9894 +logic.end9894: + %t15 = phi i1 [ false, %logic.from9892 ], [ %t14, %logic.rend9895 ] + br i1 %t15, label %then9896, label %endif9898 +then9896: %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: +endif9898: %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: + br label %logic.from9899 +logic.from9899: + br i1 %t22, label %logic.rhs9900, label %logic.end9901 +logic.rhs9900: %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: + br label %logic.rend9902 +logic.rend9902: + br label %logic.end9901 +logic.end9901: + %t25 = phi i1 [ false, %logic.from9899 ], [ %t24, %logic.rend9902 ] + br i1 %t25, label %then9903, label %endif9905 +then9903: %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: +endif9905: ret i64 -1 } +define internal void @finch.drop.arr_u8(ptr %a) { +entry: + + call void @finch_arr_free(ptr %a) + ret void +} + define internal { ptr, i64, i64 } @finch.lsp.uriToPath({ ptr, i64, i64 } %p0) { entry: %a1 = alloca { ptr, i64, i64 }, align 16 @@ -84855,10 +101980,11 @@ entry: %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 + %a20 = alloca { ptr, i64, i64 }, align 16 + %a21 = alloca { ptr, i64, i64 }, align 16 + %a22 = alloca i64, align 16 + %a107 = alloca { ptr, i64, i64 }, align 16 + %a108 = 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 @@ -84867,185 +101993,190 @@ 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.6507, i64 7, i64 0 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.6729, 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: + br i1 %t12, label %then9906, label %endif9908 +then9906: %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) + call void @finch_str_sub(ptr %a15, ptr %a14, i64 7, i64 %t17, ptr @.str.6730, i64 114) %t18 = load { ptr, i64, i64 }, ptr %a15 + %t19 = load { ptr, i64, i64 }, ptr %a6 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) + store { ptr, i64, i64 } %t19, ptr %a20 + call void @finch_str_drop(ptr %a20) + br label %endif9908 +endif9908: + store { ptr, i64, i64 } zeroinitializer, ptr %a21 + store i64 0, ptr %a22 + br label %while.cond9909 +while.cond9909: + %t23 = load i64, ptr %a22 + %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 + %t25 = load i64, ptr %t24 + %t26 = icmp slt i64 %t23, %t25 + br i1 %t26, label %while.body9910, label %while.end9911 +while.body9910: + %t27 = load i64, ptr %a22 + %t28 = load { ptr, i64, i64 }, ptr %a6 + %t29 = extractvalue { ptr, i64, i64 } %t28, 1 + %t30 = icmp uge i64 %t27, %t29 + br i1 %t30, label %range9912, label %inrange9913 +range9912: + call void @finch_panic_index(ptr @.str.6731, i64 119, i64 %t27, i64 %t29) 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) +inrange9913: + %t31 = extractvalue { ptr, i64, i64 } %t28, 0 + %t32 = getelementptr inbounds i8, ptr %t31, i64 %t27 + %t33 = load i8, ptr %t32 + %t34 = icmp eq i8 %t33, 37 + br label %logic.from9914 +logic.from9914: + br i1 %t34, label %logic.rhs9915, label %logic.end9916 +logic.rhs9915: + %t35 = load i64, ptr %a22 + %t36 = add i64 %t35, 2 + %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 + %t38 = load i64, ptr %t37 + %t39 = add i64 %t38, 0 + %t40 = icmp slt i64 %t36, %t39 + br label %logic.rend9917 +logic.rend9917: + br label %logic.end9916 +logic.end9916: + %t41 = phi i1 [ false, %logic.from9914 ], [ %t40, %logic.rend9917 ] + br label %logic.from9918 +logic.from9918: + br i1 %t41, label %logic.rhs9919, label %logic.end9920 +logic.rhs9919: + %t42 = load i64, ptr %a22 + %t43 = add i64 %t42, 1 + %t44 = load { ptr, i64, i64 }, ptr %a6 + %t45 = extractvalue { ptr, i64, i64 } %t44, 1 + %t46 = icmp uge i64 %t43, %t45 + br i1 %t46, label %range9921, label %inrange9922 +range9921: + call void @finch_panic_index(ptr @.str.6732, i64 119, i64 %t43, i64 %t45) 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) +inrange9922: + %t47 = extractvalue { ptr, i64, i64 } %t44, 0 + %t48 = getelementptr inbounds i8, ptr %t47, i64 %t43 + %t49 = load i8, ptr %t48 + %t50 = call i64 @finch.lsp.hexval(i8 %t49) + %t51 = icmp sge i64 %t50, 0 + br label %logic.rend9923 +logic.rend9923: + br label %logic.end9920 +logic.end9920: + %t52 = phi i1 [ false, %logic.from9918 ], [ %t51, %logic.rend9923 ] + br label %logic.from9924 +logic.from9924: + br i1 %t52, label %logic.rhs9925, label %logic.end9926 +logic.rhs9925: + %t53 = load i64, ptr %a22 + %t54 = add i64 %t53, 2 + %t55 = load { ptr, i64, i64 }, ptr %a6 + %t56 = extractvalue { ptr, i64, i64 } %t55, 1 + %t57 = icmp uge i64 %t54, %t56 + br i1 %t57, label %range9927, label %inrange9928 +range9927: + call void @finch_panic_index(ptr @.str.6733, i64 119, i64 %t54, i64 %t56) 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) +inrange9928: + %t58 = extractvalue { ptr, i64, i64 } %t55, 0 + %t59 = getelementptr inbounds i8, ptr %t58, i64 %t54 + %t60 = load i8, ptr %t59 + %t61 = call i64 @finch.lsp.hexval(i8 %t60) + %t62 = icmp sge i64 %t61, 0 + br label %logic.rend9929 +logic.rend9929: + br label %logic.end9926 +logic.end9926: + %t63 = phi i1 [ false, %logic.from9924 ], [ %t62, %logic.rend9929 ] + br i1 %t63, label %then9930, label %else9931 +then9930: + %t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %a21, i32 0, i32 1 + %t65 = load i64, ptr %a22 + %t66 = add i64 %t65, 1 + %t67 = load { ptr, i64, i64 }, ptr %a6 + %t68 = extractvalue { ptr, i64, i64 } %t67, 1 + %t69 = icmp uge i64 %t66, %t68 + br i1 %t69, label %range9933, label %inrange9934 +range9933: + call void @finch_panic_index(ptr @.str.6734, i64 120, i64 %t66, i64 %t68) 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) +inrange9934: + %t70 = extractvalue { ptr, i64, i64 } %t67, 0 + %t71 = getelementptr inbounds i8, ptr %t70, i64 %t66 + %t72 = load i8, ptr %t71 + %t73 = call i64 @finch.lsp.hexval(i8 %t72) + %t74 = mul i64 %t73, 16 + %t75 = load i64, ptr %a22 + %t76 = add i64 %t75, 2 + %t77 = load { ptr, i64, i64 }, ptr %a6 + %t78 = extractvalue { ptr, i64, i64 } %t77, 1 + %t79 = icmp uge i64 %t76, %t78 + br i1 %t79, label %range9935, label %inrange9936 +range9935: + call void @finch_panic_index(ptr @.str.6735, i64 120, i64 %t76, i64 %t78) 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) +inrange9936: + %t80 = extractvalue { ptr, i64, i64 } %t77, 0 + %t81 = getelementptr inbounds i8, ptr %t80, i64 %t76 + %t82 = load i8, ptr %t81 + %t83 = call i64 @finch.lsp.hexval(i8 %t82) + %t84 = add i64 %t74, %t83 + %t85 = trunc i64 %t84 to i8 + %t86 = load i64, ptr %t64 + %t87 = add i64 %t86, 1 + call void @finch_arr_reserve(ptr %a21, i64 %t87, i64 ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)) + %t88 = load ptr, ptr %a21 + %t89 = getelementptr inbounds i8, ptr %t88, i64 %t86 + store i8 %t85, ptr %t89 + store i64 %t87, ptr %t64 + %t90 = load i64, ptr %a22 + %t91 = add i64 %t90, 3 + store i64 %t91, ptr %a22 + br label %endif9932 +else9931: + %t92 = getelementptr inbounds { ptr, i64, i64 }, ptr %a21, i32 0, i32 1 + %t93 = load i64, ptr %a22 + %t94 = load { ptr, i64, i64 }, ptr %a6 + %t95 = extractvalue { ptr, i64, i64 } %t94, 1 + %t96 = icmp uge i64 %t93, %t95 + br i1 %t96, label %range9937, label %inrange9938 +range9937: + call void @finch_panic_index(ptr @.str.6736, i64 123, i64 %t93, i64 %t95) 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 +inrange9938: + %t97 = extractvalue { ptr, i64, i64 } %t94, 0 + %t98 = getelementptr inbounds i8, ptr %t97, i64 %t93 + %t99 = load i8, ptr %t98 + %t100 = load i64, ptr %t92 + %t101 = add i64 %t100, 1 + call void @finch_arr_reserve(ptr %a21, i64 %t101, i64 ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)) + %t102 = load ptr, ptr %a21 + %t103 = getelementptr inbounds i8, ptr %t102, i64 %t100 + store i8 %t99, ptr %t103 + store i64 %t101, ptr %t92 + %t104 = load i64, ptr %a22 + %t105 = add i64 %t104, 1 + store i64 %t105, ptr %a22 + br label %endif9932 +endif9932: + br label %while.cond9909 +while.end9911: + %t106 = load { ptr, i64, i64 }, ptr %a21 + store { ptr, i64, i64 } zeroinitializer, ptr %a107 + store { ptr, i64, i64 } %t106, ptr %a108 + call void @finch_str_from_bytes(ptr %a107, ptr %a108) + %t109 = load { ptr, i64, i64 }, ptr %a107 + call void @finch.drop.arr_u8(ptr %a21) + call void @finch_str_drop(ptr %a6) + ret { ptr, i64, i64 } %t109 } define internal { ptr, i64, i64 } @finch.lsp.pathToUri({ ptr, i64, i64 } %p0) { @@ -85060,36 +102191,40 @@ entry: %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 + %a47 = alloca { ptr, i64, i64 }, align 16 + %a51 = 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 - %a80 = 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 - %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 + %a85 = alloca { ptr, i64, i64 }, align 16 + %a86 = alloca { ptr, i64, i64 }, align 16 + %a87 = alloca { ptr, i64, i64 }, align 16 + %a88 = alloca { ptr, i64, i64 }, align 16 + %a97 = alloca { ptr, i64, i64 }, align 16 + %a98 = 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 + store { ptr, i64, i64 } { ptr @.str.6737, 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 + store { ptr, i64, i64 } { ptr @.str.6738, 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: + br label %each.cond9939 +each.cond9939: %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: + br i1 %t14, label %each.body9940, label %each.end9942 +each.body9940: %t15 = load ptr, ptr %a1 %t16 = getelementptr inbounds i8, ptr %t15, i64 %t13 %t17 = load i8, ptr %t16 @@ -85099,153 +102234,163 @@ each.body9429: 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: + br label %logic.from9943 +logic.from9943: + br i1 %t23, label %logic.rhs9944, label %logic.end9945 +logic.rhs9944: %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: + br label %logic.rend9946 +logic.rend9946: + br label %logic.end9945 +logic.end9945: + %t26 = phi i1 [ false, %logic.from9943 ], [ %t25, %logic.rend9946 ] + br label %logic.from9947 +logic.from9947: + br i1 %t26, label %logic.end9949, label %logic.rhs9948 +logic.rhs9948: %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: + br label %logic.from9950 +logic.from9950: + br i1 %t28, label %logic.rhs9951, label %logic.end9952 +logic.rhs9951: %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: + br label %logic.rend9953 +logic.rend9953: + br label %logic.end9952 +logic.end9952: + %t31 = phi i1 [ false, %logic.from9950 ], [ %t30, %logic.rend9953 ] + br label %logic.rend9954 +logic.rend9954: + br label %logic.end9949 +logic.end9949: + %t32 = phi i1 [ true, %logic.from9947 ], [ %t31, %logic.rend9954 ] + br label %logic.from9955 +logic.from9955: + br i1 %t32, label %logic.end9957, label %logic.rhs9956 +logic.rhs9956: %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: + br label %logic.from9958 +logic.from9958: + br i1 %t34, label %logic.rhs9959, label %logic.end9960 +logic.rhs9959: %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 + br label %logic.rend9961 +logic.rend9961: + br label %logic.end9960 +logic.end9960: + %t37 = phi i1 [ false, %logic.from9958 ], [ %t36, %logic.rend9961 ] + br label %logic.rend9962 +logic.rend9962: + br label %logic.end9957 +logic.end9957: + %t38 = phi i1 [ true, %logic.from9955 ], [ %t37, %logic.rend9962 ] + br label %logic.from9963 +logic.from9963: + br i1 %t38, label %logic.end9965, label %logic.rhs9964 +logic.rhs9964: + store { ptr, i64, i64 } { ptr @.str.6739, 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) + store { ptr, i64, i64 } %t43, ptr %a47 + call void @finch_str_drop(ptr %a47) + br label %logic.rend9966 +logic.rend9966: + br label %logic.end9965 +logic.end9965: + %t48 = phi i1 [ true, %logic.from9963 ], [ %t46, %logic.rend9966 ] + br i1 %t48, label %then9967, label %else9968 +then9967: + %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 + %t50 = load i8, ptr %a18 + call void @finch_str_from_char(ptr %a51, i8 signext %t50) + %t52 = load { ptr, i64, i64 }, ptr %a51 + %t53 = load i64, ptr %t49 + %t54 = add i64 %t53, 1 + call void @finch_arr_reserve(ptr %a9, i64 %t54, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t55 = load ptr, ptr %a9 + %t56 = getelementptr inbounds { ptr, i64, i64 }, ptr %t55, i64 %t53 + store { ptr, i64, i64 } %t52, ptr %t56 + store i64 %t54, ptr %t49 + br label %endif9969 +else9968: + %t57 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 + %t58 = load i64, ptr %a21 + %t59 = sdiv i64 %t58, 16 + %t60 = srem i64 %t59, 16 + %t61 = load { ptr, i64, i64 }, ptr %a2 + %t62 = extractvalue { ptr, i64, i64 } %t61, 1 + %t63 = icmp uge i64 %t60, %t62 + br i1 %t63, label %range9970, label %inrange9971 +range9970: + call void @finch_panic_index(ptr @.str.6742, i64 138, i64 %t60, i64 %t62) 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) +inrange9971: + %t64 = extractvalue { ptr, i64, i64 } %t61, 0 + %t65 = getelementptr inbounds i8, ptr %t64, i64 %t60 + %t66 = load i8, ptr %t65 + call void @finch_str_from_char(ptr %a67, i8 signext %t66) + %t68 = load { ptr, i64, i64 }, ptr %a67 + store { ptr, i64, i64 } { ptr @.str.6741, i64 1, i64 0 }, ptr %a70 + store { ptr, i64, i64 } %t68, ptr %a71 + call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) + store { ptr, i64, i64 } %t68, ptr %a72 + call void @finch_str_drop(ptr %a72) + %t73 = load { ptr, i64, i64 }, ptr %a69 + %t74 = load i64, ptr %a21 + %t75 = srem i64 %t74, 16 + %t76 = load { ptr, i64, i64 }, ptr %a2 + %t77 = extractvalue { ptr, i64, i64 } %t76, 1 + %t78 = icmp uge i64 %t75, %t77 + br i1 %t78, label %range9972, label %inrange9973 +range9972: + call void @finch_panic_index(ptr @.str.6743, i64 138, i64 %t75, i64 %t77) 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 +inrange9973: + %t79 = extractvalue { ptr, i64, i64 } %t76, 0 + %t80 = getelementptr inbounds i8, ptr %t79, i64 %t75 + %t81 = load i8, ptr %t80 + call void @finch_str_from_char(ptr %a82, i8 signext %t81) + %t83 = load { ptr, i64, i64 }, ptr %a82 + store { ptr, i64, i64 } %t73, ptr %a85 + store { ptr, i64, i64 } %t83, ptr %a86 + call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) + store { ptr, i64, i64 } %t73, ptr %a87 + call void @finch_str_drop(ptr %a87) + store { ptr, i64, i64 } %t83, ptr %a88 + call void @finch_str_drop(ptr %a88) + %t89 = load { ptr, i64, i64 }, ptr %a84 + %t90 = load i64, ptr %t57 %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 + call void @finch_arr_reserve(ptr %a9, i64 %t91, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t92 = load ptr, ptr %a9 + %t93 = getelementptr inbounds { ptr, i64, i64 }, ptr %t92, i64 %t90 + store { ptr, i64, i64 } %t89, ptr %t93 + store i64 %t91, ptr %t57 + br label %endif9969 +endif9969: + br label %each.step9941 +each.step9941: + %t94 = load i64, ptr %a10 + %t95 = add i64 %t94, 1 + store i64 %t95, ptr %a10 + br label %each.cond9939 +each.end9942: + %t96 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.6744, i64 0, i64 0 }, ptr %a97 + call void @finch_str_join(ptr %a98, ptr %a9, ptr %a97) + %t99 = load { ptr, i64, i64 }, ptr %a98 + call void @finch.drop.arr_str(ptr %a9) + call void @finch_str_drop(ptr %a2) + ret { ptr, i64, i64 } %t99 } define internal { ptr, i64, i64 } @finch.lsp.unesc({ ptr, i64, i64 } %p0) { @@ -85260,80 +102405,80 @@ entry: 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: + br label %while.cond9974 +while.cond9974: %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: + br i1 %t7, label %while.body9975, label %while.end9976 +while.body9975: %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) + br i1 %t11, label %range9977, label %inrange9978 +range9977: + call void @finch_panic_index(ptr @.str.6745, i64 149, i64 %t8, i64 %t10) unreachable -inrange9467: +inrange9978: %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: + br label %logic.from9979 +logic.from9979: + br i1 %t15, label %logic.rhs9980, label %logic.end9981 +logic.rhs9980: %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: + br label %logic.rend9982 +logic.rend9982: + br label %logic.end9981 +logic.end9981: + %t21 = phi i1 [ false, %logic.from9979 ], [ %t20, %logic.rend9982 ] + br i1 %t21, label %then9983, label %else9984 +then9983: %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) + br i1 %t26, label %range9986, label %inrange9987 +range9986: + call void @finch_panic_index(ptr @.str.6746, i64 150, i64 %t23, i64 %t25) unreachable -inrange9476: +inrange9987: %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: + br i1 %t30, label %then9988, label %else9989 +then9988: %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 { ptr, i64, i64 } { ptr @.str.6747, i64 1, i64 0 }, ptr %t35 store i64 %t33, ptr %t31 - br label %endif9479 -else9478: + br label %endif9990 +else9989: %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) + br i1 %t41, label %range9991, label %inrange9992 +range9991: + call void @finch_panic_index(ptr @.str.6748, i64 153, i64 %t38, i64 %t40) unreachable -inrange9481: +inrange9992: %t42 = extractvalue { ptr, i64, i64 } %t39, 0 %t43 = getelementptr inbounds i8, ptr %t42, i64 %t38 %t44 = load i8, ptr %t43 @@ -85346,23 +102491,23 @@ inrange9481: %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: + br label %endif9990 +endif9990: %t51 = load i64, ptr %a3 %t52 = add i64 %t51, 2 store i64 %t52, ptr %a3 - br label %endif9474 -else9473: + br label %endif9985 +else9984: %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) + br i1 %t57, label %range9993, label %inrange9994 +range9993: + call void @finch_panic_index(ptr @.str.6749, i64 157, i64 %t54, i64 %t56) unreachable -inrange9483: +inrange9994: %t58 = extractvalue { ptr, i64, i64 } %t55, 0 %t59 = getelementptr inbounds i8, ptr %t58, i64 %t54 %t60 = load i8, ptr %t59 @@ -85378,14 +102523,15 @@ inrange9483: %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: + br label %endif9985 +endif9985: + br label %while.cond9974 +while.end9976: %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 + store { ptr, i64, i64 } { ptr @.str.6750, i64 0, i64 0 }, ptr %a70 call void @finch_str_join(ptr %a71, ptr %a2, ptr %a70) %t72 = load { ptr, i64, i64 }, ptr %a71 + call void @finch.drop.arr_str(ptr %a2) ret { ptr, i64, i64 } %t72 } @@ -85404,46 +102550,48 @@ entry: 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 + store { ptr, i64, i64 } { ptr @.str.6752, 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: + br label %logic.from9995 +logic.from9995: + br i1 %t11, label %logic.rhs9996, label %logic.end9997 +logic.rhs9996: %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: + br label %logic.rend9998 +logic.rend9998: + br label %logic.end9997 +logic.end9997: + %t16 = phi i1 [ false, %logic.from9995 ], [ %t15, %logic.rend9998 ] + br i1 %t16, label %then9999, label %endif10001 +then9999: %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) + br i1 %t21, label %range10002, label %inrange10003 +range10002: + call void @finch_panic_index(ptr @.str.6753, i64 167, i64 %t18, i64 %t20) unreachable -inrange9492: +inrange10003: %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 + call void @finch.drop.arr_str(ptr %a9) ret { ptr, i64, i64 } %t27 -endif9490: - ret { ptr, i64, i64 } { ptr @.str.6532, i64 0, i64 0 } +endif10001: + call void @finch.drop.arr_str(ptr %a9) + ret { ptr, i64, i64 } { ptr @.str.6754, i64 0, i64 0 } } define internal { ptr, i64, i64 } @finch.lsp.readLine() { @@ -85459,26 +102607,26 @@ entry: %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: + br label %while.cond10004 +while.cond10004: + br label %while.body10005 +while.body10005: %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: + br i1 %t5, label %then10007, label %endif10009 +then10007: + call void @finch.drop.arr_u8(ptr %a1) + ret { ptr, i64, i64 } { ptr @.str.6755, i64 0, i64 0 } +endif10009: %t6 = load i32, ptr %a3 %t7 = icmp eq i32 %t6, 10 - br i1 %t7, label %then9499, label %endif9501 -then9499: - br label %while.end9495 -endif9501: + br i1 %t7, label %then10010, label %endif10012 +then10010: + br label %while.end10006 +endif10012: %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 %t9 = load i32, ptr %a3 %t10 = trunc i32 %t9 to i8 @@ -85489,8 +102637,8 @@ endif9501: %t14 = getelementptr inbounds i8, ptr %t13, i64 %t11 store i8 %t10, ptr %t14 store i64 %t12, ptr %t8 - br label %while.cond9493 -while.end9495: + br label %while.cond10004 +while.end10006: %t15 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } zeroinitializer, ptr %a16 store { ptr, i64, i64 } %t15, ptr %a17 @@ -85499,26 +102647,27 @@ while.end9495: 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 + store { ptr, i64, i64 } { ptr @.str.6757, 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: + br i1 %t25, label %then10013, label %endif10015 +then10013: %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) + call void @finch_str_sub(ptr %a28, ptr %a27, i64 0, i64 %t31, ptr @.str.6758, 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 } %t32, 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 + call void @finch_str_drop(ptr %a34) + br label %endif10015 +endif10015: + %t35 = load { ptr, i64, i64 }, ptr %a19 + call void @finch.drop.arr_u8(ptr %a1) + ret { ptr, i64, i64 } %t35 } define internal { i1, %S.json.Json, { ptr, i64, i64 } } @finch.lsp.readMessage() { @@ -85533,133 +102682,150 @@ entry: %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 + %a29 = alloca { ptr, i64, i64 }, align 16 + %a30 = alloca i64, align 16 + %a31 = 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 + %a39 = alloca { ptr, i64, i64 }, align 16 + %a41 = alloca i64, align 16 + %a45 = alloca i32, align 16 + %a59 = alloca { ptr, i64, i64 }, align 16 + %a60 = alloca { ptr, i64, i64 }, align 16 + %a67 = alloca { ptr, i64, i64 }, align 16 store i64 0, ptr %a1 - br label %while.cond9505 -while.cond9505: - br label %while.body9506 -while.body9506: + br label %while.cond10016 +while.cond10016: + br label %while.body10017 +while.body10017: %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: + br i1 %t6, label %then10019, label %endif10021 +then10019: %t7 = load i64, ptr %a1 %t8 = icmp sgt i64 %t7, 0 - br i1 %t8, label %then9511, label %endif9513 -then9511: - br label %while.end9507 -endif9513: + br i1 %t8, label %then10022, label %endif10024 +then10022: + call void @finch_str_drop(ptr %a3) + br label %while.end10018 +endif10024: %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 + br i1 %t11, label %then10025, label %endif10027 +then10025: + call void @finch_str_drop(ptr %a3) + %t12 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } { ptr @.str.6759, i64 32, i64 0 }, 2 ret { i1, %S.json.Json, { ptr, i64, i64 } } %t12 -endif9516: - br label %while.cond9505 -endif9510: +endif10027: + call void @finch_str_drop(ptr %a3) + br label %while.cond10016 +endif10021: %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 + store { ptr, i64, i64 } { ptr @.str.6761, 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: + br i1 %t18, label %then10028, label %endif10030 +then10028: %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) + call void @finch_str_sub(ptr %a21, ptr %a20, i64 15, i64 %t23, ptr @.str.6762, 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 + store { ptr, i64, i64 } %t24, ptr %a28 + call void @finch_str_drop(ptr %a28) + store { ptr, i64, i64 } zeroinitializer, ptr %a29 + store i64 0, ptr %a30 + store { ptr, i64, i64 } %t27, ptr %a31 + %t32 = call i32 @finch_str_try_int(ptr %a31, ptr %a30, ptr %a29) + %t33 = icmp eq i32 %t32, 0 + %t34 = load { ptr, i64, i64 }, ptr %a29 + store { ptr, i64, i64 } %t27, ptr %a35 + call void @finch_str_drop(ptr %a35) + %t36 = load i64, ptr %a30 + br i1 %t33, label %or.failed10031, label %or.ok10032 +or.failed10031: + store { ptr, i64, i64 } %t34, ptr %a37 + call void @finch_str_drop(ptr %a37) + br label %or.bend10033 +or.bend10033: + br label %or.end10034 +or.ok10032: + br label %or.end10034 +or.end10034: + %t38 = phi i64 [ 0, %or.bend10033 ], [ %t36, %or.ok10032 ] + store i64 %t38, ptr %a1 + br label %endif10030 +endif10030: + call void @finch_str_drop(ptr %a3) + br label %while.cond10016 +while.end10018: + store { ptr, i64, i64 } zeroinitializer, ptr %a39 + %t40 = load i64, ptr %a1 + store i64 0, ptr %a41 + br label %for.cond10035 +for.cond10035: + %t42 = load i64, ptr %a41 + %t43 = icmp slt i64 %t42, %t40 + br i1 %t43, label %for.body10036, label %for.end10038 +for.body10036: + %t44 = call i32 @getchar() + store i32 %t44, ptr %a45 + %t46 = load i32, ptr %a45 + %t47 = icmp slt i32 %t46, 0 + br i1 %t47, label %then10039, label %endif10041 +then10039: + call void @finch.drop.arr_u8(ptr %a39) + %t48 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } { ptr @.str.6764, i64 25, i64 0 }, 2 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t48 +endif10041: + %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %a39, i32 0, i32 1 + %t50 = load i32, ptr %a45 + %t51 = trunc i32 %t50 to i8 + %t52 = load i64, ptr %t49 + %t53 = add i64 %t52, 1 + call void @finch_arr_reserve(ptr %a39, i64 %t53, i64 ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)) + %t54 = load ptr, ptr %a39 + %t55 = getelementptr inbounds i8, ptr %t54, i64 %t52 + store i8 %t51, ptr %t55 + store i64 %t53, ptr %t49 + br label %for.step10037 +for.step10037: + %t56 = load i64, ptr %a41 + %t57 = add i64 %t56, 1 + store i64 %t57, ptr %a41 + br label %for.cond10035 +for.end10038: + %t58 = load { ptr, i64, i64 }, ptr %a39 + store { ptr, i64, i64 } zeroinitializer, ptr %a59 + store { ptr, i64, i64 } %t58, ptr %a60 + call void @finch_str_from_bytes(ptr %a59, ptr %a60) + %t61 = load { ptr, i64, i64 }, ptr %a59 + %t62 = call { i1, %S.json.Json, { ptr, i64, i64 } } @finch.json.parse({ ptr, i64, i64 } %t61) + %t63 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t62, 0 + %t64 = xor i1 %t63, true + %t65 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t62, 2 + %t66 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t62, 1 + store { ptr, i64, i64 } %t61, ptr %a67 + call void @finch_str_drop(ptr %a67) + br i1 %t64, label %try.failed10042, label %try.ok10043 +try.failed10042: + call void @finch.drop.arr_u8(ptr %a39) + %t68 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t65, 2 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t68 +try.ok10043: + call void @finch.drop.arr_u8(ptr %a39) + %t69 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 + %t70 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t69, %S.json.Json %t66, 1 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t70 } define internal void @finch.lsp.send(%S.json.Json %p0) { @@ -85670,14 +102836,16 @@ entry: %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 + %a12 = 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 %a17 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 + %a19 = 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 + %a26 = 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) @@ -85686,32 +102854,75 @@ entry: %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 } { ptr @.str.6765, 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) + store { ptr, i64, i64 } %t8, ptr %a12 + call void @finch_str_drop(ptr %a12) + %t13 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t13, ptr %a15 + store { ptr, i64, i64 } { ptr @.str.6766, i64 4, i64 0 }, ptr %a16 + call void @finch_str_concat(ptr %a14, ptr %a15, ptr %a16) + store { ptr, i64, i64 } %t13, ptr %a17 + call void @finch_str_drop(ptr %a17) + %t18 = load { ptr, i64, i64 }, ptr %a14 + store { ptr, i64, i64 } %t18, ptr %a19 + %t20 = load { ptr, i64, i64 }, ptr %a19 + %t21 = load { ptr, i64, i64 }, ptr %a4 + 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 %a26 + %t27 = load { ptr, i64, i64 }, ptr %a26 + %t28 = extractvalue { ptr, i64, i64 } %t27, 0 + %t29 = icmp eq ptr %t28, null + %t30 = select i1 %t29, ptr @.str.6767, ptr %t28 + %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %a26, i32 0, i32 1 + %t32 = load i64, ptr %t31 %t33 = load ptr, ptr @stdout - %t34 = call i32 @fflush(ptr %t33) + %t34 = call i64 @fwrite(ptr %t30, i64 1, i64 %t32, ptr %t33) + %t35 = load ptr, ptr @stdout + %t36 = call i32 @fflush(ptr %t35) + call void @finch_str_drop(ptr %a26) + call void @finch_str_drop(ptr %a19) + call void @finch_str_drop(ptr %a4) + ret void +} + +define internal void @finch.drop.arr_S_json_Json(ptr %a) { +entry: + %a4 = alloca i64, align 16 + %t1 = load ptr, ptr %a + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 + %t3 = load i64, ptr %t2 + store i64 0, ptr %a4 + br label %n.cond10044 +n.cond10044: + %t5 = load i64, ptr %a4 + %t6 = icmp slt i64 %t5, %t3 + br i1 %t6, label %n.body10045, label %n.end10046 +n.body10045: + %t7 = getelementptr inbounds %S.json.Json, ptr %t1, i64 %t5 + call void @finch.drop.S_json_Json(ptr %t7) + %t8 = load i64, ptr %a4 + %t9 = add i64 %t8, 1 + store i64 %t9, ptr %a4 + br label %n.cond10044 +n.end10046: + call void @finch_arr_free(ptr %a) + ret void +} + +define internal void @finch.drop.S_json_Json(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.json.Json, ptr %a, i32 0, i32 3 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.json.Json, ptr %a, i32 0, i32 4 + call void @finch.drop.arr_S_json_Json(ptr %t2) + %t3 = getelementptr inbounds %S.json.Json, ptr %a, i32 0, i32 5 + call void @finch.drop.arr_str(ptr %t3) ret void } @@ -85720,18 +102931,22 @@ entry: %a1 = alloca %S.json.Json, align 16 %a2 = alloca %S.json.Json, align 16 %a4 = alloca %S.json.Json, align 16 + %a6 = 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) + %t5 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.6769, i64 3, i64 0 }) + call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.6768, i64 7, i64 0 }, %S.json.Json %t5) + store %S.json.Json %t5, ptr %a6 + call void @finch.drop.S_json_Json(ptr %a6) + %t7 = load %S.json.Json, ptr %a1 + call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.6770, i64 2, 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.6771, i64 6, i64 0 }, %S.json.Json %t8) + %t9 = load %S.json.Json, ptr %a4 + call void @finch.lsp.send(%S.json.Json %t9) + call void @finch.drop.S_json_Json(ptr %a4) ret void } @@ -85740,19 +102955,26 @@ entry: %a1 = alloca { ptr, i64, i64 }, align 16 %a2 = alloca %S.json.Json, align 16 %a4 = alloca %S.json.Json, align 16 + %a6 = alloca %S.json.Json, align 16 + %a9 = 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) + %t5 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.6773, i64 3, i64 0 }) + call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.6772, i64 7, i64 0 }, %S.json.Json %t5) + store %S.json.Json %t5, ptr %a6 + call void @finch.drop.S_json_Json(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 %a4, { ptr, i64, i64 } { ptr @.str.6774, i64 6, i64 0 }, %S.json.Json %t8) + store %S.json.Json %t8, ptr %a9 + call void @finch.drop.S_json_Json(ptr %a9) + %t10 = load %S.json.Json, ptr %a2 + call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.6775, i64 6, i64 0 }, %S.json.Json %t10) + %t11 = load %S.json.Json, ptr %a4 + call void @finch.lsp.send(%S.json.Json %t11) + call void @finch.drop.S_json_Json(ptr %a4) ret void } @@ -85766,71 +102988,29 @@ entry: 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 + %a7 = 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 + call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.6776, i64 4, i64 0 }, %S.json.Json %t6) + store %S.json.Json %t6, ptr %a7 + call void @finch.drop.S_json_Json(ptr %a7) + %t8 = load i64, ptr %a2 + %t9 = call %S.json.Json @finch.lsp.num(i64 %t8) + call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.6777, i64 9, i64 0 }, %S.json.Json %t9) 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 + call void @finch.drop.S_json_Json(ptr %a10) + %t11 = load %S.json.Json, ptr %a4 + ret %S.json.Json %t11 } define internal %S.json.Json @finch.lsp.range(i64 %p0, i64 %p1, i64 %p2) { @@ -85839,8 +103019,8 @@ entry: %a2 = alloca i64, align 16 %a3 = alloca i64, align 16 %a5 = alloca %S.json.Json, align 16 + %a9 = 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 @@ -85849,16 +103029,17 @@ entry: %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 + call void @finch.json.Json.set(ptr %a5, { ptr, i64, i64 } { ptr @.str.6778, i64 5, i64 0 }, %S.json.Json %t8) + store %S.json.Json %t8, ptr %a9 + call void @finch.drop.S_json_Json(ptr %a9) + %t10 = load i64, ptr %a1 + %t11 = load i64, ptr %a3 + %t12 = call %S.json.Json @finch.lsp.position(i64 %t10, i64 %t11) + call void @finch.json.Json.set(ptr %a5, { ptr, i64, i64 } { ptr @.str.6779, i64 3, i64 0 }, %S.json.Json %t12) 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 + call void @finch.drop.S_json_Json(ptr %a13) + %t14 = load %S.json.Json, ptr %a5 + ret %S.json.Json %t14 } define internal { ptr, i64, i64 } @finch.lsp.splitTabs({ ptr, i64, i64 } %p0) { @@ -85871,7 +103052,7 @@ 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.6559, i64 1, i64 0 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.6781, 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 @@ -85893,16 +103074,17 @@ entry: %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: + br i1 %t7, label %or.failed10047, label %or.ok10048 +or.failed10047: 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 ] + call void @finch_str_drop(ptr %a10) + br label %or.bend10049 +or.bend10049: + br label %or.end10050 +or.ok10048: + br label %or.end10050 +or.end10050: + %t11 = phi i64 [ 0, %or.bend10049 ], [ %t9, %or.ok10048 ] ret i64 %t11 } @@ -85937,19 +103119,19 @@ 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.6561, i64 9, i64 0 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.6783, 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: + br i1 %t9, label %then10051, label %endif10053 +then10051: ret %S.lsp.Diag zeroinitializer -endif9542: +endif10053: %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) + call void @finch_str_sub(ptr %a12, ptr %a11, i64 0, i64 %t13, ptr @.str.6784, i64 280) %t14 = load { ptr, i64, i64 }, ptr %a12 store { ptr, i64, i64 } %t14, ptr %a15 %t16 = load { ptr, i64, i64 }, ptr %a1 @@ -85958,33 +103140,36 @@ endif9542: %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) + call void @finch_str_sub(ptr %a18, ptr %a17, i64 %t20, i64 %t22, ptr @.str.6785, 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 + store { ptr, i64, i64 } { ptr @.str.6787, 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: + br i1 %t34, label %then10054, label %endif10056 +then10054: + call void @finch.drop.arr_str(ptr %a31) + call void @finch_str_drop(ptr %a24) + call void @finch_str_drop(ptr %a15) ret %S.lsp.Diag zeroinitializer -endif9545: +endif10056: %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) + br i1 %t40, label %range10057, label %inrange10058 +range10057: + call void @finch_panic_index(ptr @.str.6788, i64 287, i64 %t37, i64 %t39) unreachable -inrange9547: +inrange10058: %t41 = extractvalue { ptr, i64, i64 } %t38, 0 %t42 = getelementptr inbounds { ptr, i64, i64 }, ptr %t41, i64 %t37 %t43 = load { ptr, i64, i64 }, ptr %t42 @@ -85996,11 +103181,11 @@ inrange9547: %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) + br i1 %t51, label %range10059, label %inrange10060 +range10059: + call void @finch_panic_index(ptr @.str.6789, i64 288, i64 %t48, i64 %t50) unreachable -inrange9549: +inrange10060: %t52 = extractvalue { ptr, i64, i64 } %t49, 0 %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %t52, i64 %t48 %t54 = load { ptr, i64, i64 }, ptr %t53 @@ -86011,22 +103196,22 @@ inrange9549: %t59 = load i64, ptr %t58 %t60 = sub i64 %t59, 2 store i64 0, ptr %a61 - br label %for.cond9550 -for.cond9550: + br label %for.cond10061 +for.cond10061: %t62 = load i64, ptr %a61 %t63 = icmp slt i64 %t62, %t60 - br i1 %t63, label %for.body9551, label %for.end9553 -for.body9551: + br i1 %t63, label %for.body10062, label %for.end10064 +for.body10062: %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) + br i1 %t68, label %range10065, label %inrange10066 +range10065: + call void @finch_panic_index(ptr @.str.6790, i64 291, i64 %t65, i64 %t67) unreachable -inrange9555: +inrange10066: %t69 = extractvalue { ptr, i64, i64 } %t66, 0 %t70 = getelementptr inbounds { ptr, i64, i64 }, ptr %t69, i64 %t65 %t71 = load { ptr, i64, i64 }, ptr %t70 @@ -86040,16 +103225,16 @@ inrange9555: %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: + br label %for.step10063 +for.step10063: %t79 = load i64, ptr %a61 %t80 = add i64 %t79, 1 store i64 %t80, ptr %a61 - br label %for.cond9550 -for.end9553: + br label %for.cond10061 +for.end10064: %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 + store { ptr, i64, i64 } { ptr @.str.6791, 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 @@ -86062,285 +103247,20 @@ for.end9553: 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 + call void @finch.drop.arr_str(ptr %a57) + call void @finch.drop.arr_str(ptr %a31) + call void @finch_str_drop(ptr %a24) + call void @finch_str_drop(ptr %a15) ret %S.lsp.Diag %t95 } -define internal void @finch.copy.S_lsp_Ref(ptr %dst, ptr %src) { +define internal void @finch.drop.S_lsp_Diag(ptr %a) { 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) + %t1 = getelementptr inbounds %S.lsp.Diag, ptr %a, i32 0, i32 1 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.lsp.Diag, ptr %a, i32 0, i32 4 + call void @finch_str_drop(ptr %t2) ret void } @@ -86423,47 +103343,46 @@ entry: %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 + %a536 = alloca %S.lsp.Diag, 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 + store { ptr, i64, i64 } { ptr @.str.6793, 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: + br label %each.cond10067 +each.cond10067: %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: + br i1 %t14, label %each.body10068, label %each.end10070 +each.body10068: %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 + store { ptr, i64, i64 } { ptr @.str.6795, 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: + br i1 %t24, label %then10071, label %else10072 +then10071: %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) + br i1 %t30, label %range10074, label %inrange10075 +range10074: + call void @finch_panic_index(ptr @.str.6796, i64 301, i64 0, i64 %t29) unreachable -inrange9564: +inrange10075: %t31 = extractvalue { ptr, i64, i64 } %t28, 0 %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %t31, i64 0 %t33 = load { ptr, i64, i64 }, ptr %t32 @@ -86473,33 +103392,33 @@ inrange9564: 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 + store { ptr, i64, i64 } { ptr @.str.6797, 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: + br label %logic.from10076 +logic.from10076: + br i1 %t42, label %logic.rhs10077, label %logic.end10078 +logic.rhs10077: %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: + br label %logic.rend10079 +logic.rend10079: + br label %logic.end10078 +logic.end10078: + %t46 = phi i1 [ false, %logic.from10076 ], [ %t45, %logic.rend10079 ] + br i1 %t46, label %then10080, label %else10081 +then10080: %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) + br i1 %t51, label %range10083, label %inrange10084 +range10083: + call void @finch_panic_index(ptr @.str.6798, i64 303, i64 1, i64 %t50) unreachable -inrange9573: +inrange10084: %t52 = extractvalue { ptr, i64, i64 } %t49, 0 %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %t52, i64 1 %t54 = load { ptr, i64, i64 }, ptr %t53 @@ -86510,11 +103429,11 @@ inrange9573: %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) + br i1 %t61, label %range10085, label %inrange10086 +range10085: + call void @finch_panic_index(ptr @.str.6799, i64 303, i64 2, i64 %t60) unreachable -inrange9575: +inrange10086: %t62 = extractvalue { ptr, i64, i64 } %t59, 0 %t63 = getelementptr inbounds { ptr, i64, i64 }, ptr %t62, i64 2 %t64 = load { ptr, i64, i64 }, ptr %t63 @@ -86523,11 +103442,11 @@ inrange9575: %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) + br i1 %t69, label %range10087, label %inrange10088 +range10087: + call void @finch_panic_index(ptr @.str.6800, i64 303, i64 3, i64 %t68) unreachable -inrange9577: +inrange10088: %t70 = extractvalue { ptr, i64, i64 } %t67, 0 %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %t70, i64 3 %t72 = load { ptr, i64, i64 }, ptr %t71 @@ -86536,11 +103455,11 @@ inrange9577: %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) + br i1 %t77, label %range10089, label %inrange10090 +range10089: + call void @finch_panic_index(ptr @.str.6801, i64 303, i64 4, i64 %t76) unreachable -inrange9579: +inrange10090: %t78 = extractvalue { ptr, i64, i64 } %t75, 0 %t79 = getelementptr inbounds { ptr, i64, i64 }, ptr %t78, i64 4 %t80 = load { ptr, i64, i64 }, ptr %t79 @@ -86549,11 +103468,11 @@ inrange9579: %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) + br i1 %t85, label %range10091, label %inrange10092 +range10091: + call void @finch_panic_index(ptr @.str.6802, i64 303, i64 5, i64 %t84) unreachable -inrange9581: +inrange10092: %t86 = extractvalue { ptr, i64, i64 } %t83, 0 %t87 = getelementptr inbounds { ptr, i64, i64 }, ptr %t86, i64 5 %t88 = load { ptr, i64, i64 }, ptr %t87 @@ -86564,11 +103483,11 @@ inrange9581: %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) + br i1 %t95, label %range10093, label %inrange10094 +range10093: + call void @finch_panic_index(ptr @.str.6803, i64 303, i64 6, i64 %t94) unreachable -inrange9583: +inrange10094: %t96 = extractvalue { ptr, i64, i64 } %t93, 0 %t97 = getelementptr inbounds { ptr, i64, i64 }, ptr %t96, i64 6 %t98 = load { ptr, i64, i64 }, ptr %t97 @@ -86577,11 +103496,11 @@ inrange9583: %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) + br i1 %t103, label %range10095, label %inrange10096 +range10095: + call void @finch_panic_index(ptr @.str.6804, i64 303, i64 7, i64 %t102) unreachable -inrange9585: +inrange10096: %t104 = extractvalue { ptr, i64, i64 } %t101, 0 %t105 = getelementptr inbounds { ptr, i64, i64 }, ptr %t104, i64 7 %t106 = load { ptr, i64, i64 }, ptr %t105 @@ -86590,11 +103509,11 @@ inrange9585: %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) + br i1 %t111, label %range10097, label %inrange10098 +range10097: + call void @finch_panic_index(ptr @.str.6805, i64 303, i64 8, i64 %t110) unreachable -inrange9587: +inrange10098: %t112 = extractvalue { ptr, i64, i64 } %t109, 0 %t113 = getelementptr inbounds { ptr, i64, i64 }, ptr %t112, i64 8 %t114 = load { ptr, i64, i64 }, ptr %t113 @@ -86607,37 +103526,37 @@ inrange9587: %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: + br label %endif10082 +else10081: %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 + store { ptr, i64, i64 } { ptr @.str.6806, 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: + br label %logic.from10099 +logic.from10099: + br i1 %t125, label %logic.rhs10100, label %logic.end10101 +logic.rhs10100: %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: + br label %logic.rend10102 +logic.rend10102: + br label %logic.end10101 +logic.end10101: + %t129 = phi i1 [ false, %logic.from10099 ], [ %t128, %logic.rend10102 ] + br i1 %t129, label %then10103, label %else10104 +then10103: %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) + br i1 %t134, label %range10106, label %inrange10107 +range10106: + call void @finch_panic_index(ptr @.str.6807, i64 305, i64 1, i64 %t133) unreachable -inrange9596: +inrange10107: %t135 = extractvalue { ptr, i64, i64 } %t132, 0 %t136 = getelementptr inbounds { ptr, i64, i64 }, ptr %t135, i64 1 %t137 = load { ptr, i64, i64 }, ptr %t136 @@ -86648,11 +103567,11 @@ inrange9596: %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) + br i1 %t144, label %range10108, label %inrange10109 +range10108: + call void @finch_panic_index(ptr @.str.6808, i64 305, i64 2, i64 %t143) unreachable -inrange9598: +inrange10109: %t145 = extractvalue { ptr, i64, i64 } %t142, 0 %t146 = getelementptr inbounds { ptr, i64, i64 }, ptr %t145, i64 2 %t147 = load { ptr, i64, i64 }, ptr %t146 @@ -86663,11 +103582,11 @@ inrange9598: %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) + br i1 %t154, label %range10110, label %inrange10111 +range10110: + call void @finch_panic_index(ptr @.str.6809, i64 305, i64 3, i64 %t153) unreachable -inrange9600: +inrange10111: %t155 = extractvalue { ptr, i64, i64 } %t152, 0 %t156 = getelementptr inbounds { ptr, i64, i64 }, ptr %t155, i64 3 %t157 = load { ptr, i64, i64 }, ptr %t156 @@ -86678,11 +103597,11 @@ inrange9600: %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) + br i1 %t164, label %range10112, label %inrange10113 +range10112: + call void @finch_panic_index(ptr @.str.6810, i64 305, i64 4, i64 %t163) unreachable -inrange9602: +inrange10113: %t165 = extractvalue { ptr, i64, i64 } %t162, 0 %t166 = getelementptr inbounds { ptr, i64, i64 }, ptr %t165, i64 4 %t167 = load { ptr, i64, i64 }, ptr %t166 @@ -86691,11 +103610,11 @@ inrange9602: %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) + br i1 %t172, label %range10114, label %inrange10115 +range10114: + call void @finch_panic_index(ptr @.str.6811, i64 305, i64 5, i64 %t171) unreachable -inrange9604: +inrange10115: %t173 = extractvalue { ptr, i64, i64 } %t170, 0 %t174 = getelementptr inbounds { ptr, i64, i64 }, ptr %t173, i64 5 %t175 = load { ptr, i64, i64 }, ptr %t174 @@ -86704,11 +103623,11 @@ inrange9604: %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) + br i1 %t180, label %range10116, label %inrange10117 +range10116: + call void @finch_panic_index(ptr @.str.6812, i64 305, i64 6, i64 %t179) unreachable -inrange9606: +inrange10117: %t181 = extractvalue { ptr, i64, i64 } %t178, 0 %t182 = getelementptr inbounds { ptr, i64, i64 }, ptr %t181, i64 6 %t183 = load { ptr, i64, i64 }, ptr %t182 @@ -86719,11 +103638,11 @@ inrange9606: %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) + br i1 %t190, label %range10118, label %inrange10119 +range10118: + call void @finch_panic_index(ptr @.str.6813, i64 305, i64 7, i64 %t189) unreachable -inrange9608: +inrange10119: %t191 = extractvalue { ptr, i64, i64 } %t188, 0 %t192 = getelementptr inbounds { ptr, i64, i64 }, ptr %t191, i64 7 %t193 = load { ptr, i64, i64 }, ptr %t192 @@ -86732,11 +103651,11 @@ inrange9608: %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) + br i1 %t198, label %range10120, label %inrange10121 +range10120: + call void @finch_panic_index(ptr @.str.6814, i64 305, i64 8, i64 %t197) unreachable -inrange9610: +inrange10121: %t199 = extractvalue { ptr, i64, i64 } %t196, 0 %t200 = getelementptr inbounds { ptr, i64, i64 }, ptr %t199, i64 8 %t201 = load { ptr, i64, i64 }, ptr %t200 @@ -86749,37 +103668,37 @@ inrange9610: %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: + br label %endif10105 +else10104: %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 + store { ptr, i64, i64 } { ptr @.str.6815, 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: + br label %logic.from10122 +logic.from10122: + br i1 %t212, label %logic.rhs10123, label %logic.end10124 +logic.rhs10123: %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: + br label %logic.rend10125 +logic.rend10125: + br label %logic.end10124 +logic.end10124: + %t216 = phi i1 [ false, %logic.from10122 ], [ %t215, %logic.rend10125 ] + br i1 %t216, label %then10126, label %else10127 +then10126: %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) + br i1 %t221, label %range10129, label %inrange10130 +range10129: + call void @finch_panic_index(ptr @.str.6816, i64 307, i64 1, i64 %t220) unreachable -inrange9619: +inrange10130: %t222 = extractvalue { ptr, i64, i64 } %t219, 0 %t223 = getelementptr inbounds { ptr, i64, i64 }, ptr %t222, i64 1 %t224 = load { ptr, i64, i64 }, ptr %t223 @@ -86790,11 +103709,11 @@ inrange9619: %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) + br i1 %t231, label %range10131, label %inrange10132 +range10131: + call void @finch_panic_index(ptr @.str.6817, i64 307, i64 2, i64 %t230) unreachable -inrange9621: +inrange10132: %t232 = extractvalue { ptr, i64, i64 } %t229, 0 %t233 = getelementptr inbounds { ptr, i64, i64 }, ptr %t232, i64 2 %t234 = load { ptr, i64, i64 }, ptr %t233 @@ -86805,11 +103724,11 @@ inrange9621: %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) + br i1 %t241, label %range10133, label %inrange10134 +range10133: + call void @finch_panic_index(ptr @.str.6818, i64 307, i64 3, i64 %t240) unreachable -inrange9623: +inrange10134: %t242 = extractvalue { ptr, i64, i64 } %t239, 0 %t243 = getelementptr inbounds { ptr, i64, i64 }, ptr %t242, i64 3 %t244 = load { ptr, i64, i64 }, ptr %t243 @@ -86820,11 +103739,11 @@ inrange9623: %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) + br i1 %t251, label %range10135, label %inrange10136 +range10135: + call void @finch_panic_index(ptr @.str.6819, i64 307, i64 4, i64 %t250) unreachable -inrange9625: +inrange10136: %t252 = extractvalue { ptr, i64, i64 } %t249, 0 %t253 = getelementptr inbounds { ptr, i64, i64 }, ptr %t252, i64 4 %t254 = load { ptr, i64, i64 }, ptr %t253 @@ -86835,11 +103754,11 @@ inrange9625: %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) + br i1 %t261, label %range10137, label %inrange10138 +range10137: + call void @finch_panic_index(ptr @.str.6820, i64 307, i64 5, i64 %t260) unreachable -inrange9627: +inrange10138: %t262 = extractvalue { ptr, i64, i64 } %t259, 0 %t263 = getelementptr inbounds { ptr, i64, i64 }, ptr %t262, i64 5 %t264 = load { ptr, i64, i64 }, ptr %t263 @@ -86848,11 +103767,11 @@ inrange9627: %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) + br i1 %t269, label %range10139, label %inrange10140 +range10139: + call void @finch_panic_index(ptr @.str.6821, i64 307, i64 6, i64 %t268) unreachable -inrange9629: +inrange10140: %t270 = extractvalue { ptr, i64, i64 } %t267, 0 %t271 = getelementptr inbounds { ptr, i64, i64 }, ptr %t270, i64 6 %t272 = load { ptr, i64, i64 }, ptr %t271 @@ -86861,11 +103780,11 @@ inrange9629: %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) + br i1 %t277, label %range10141, label %inrange10142 +range10141: + call void @finch_panic_index(ptr @.str.6822, i64 307, i64 7, i64 %t276) unreachable -inrange9631: +inrange10142: %t278 = extractvalue { ptr, i64, i64 } %t275, 0 %t279 = getelementptr inbounds { ptr, i64, i64 }, ptr %t278, i64 7 %t280 = load { ptr, i64, i64 }, ptr %t279 @@ -86874,11 +103793,11 @@ inrange9631: %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) + br i1 %t285, label %range10143, label %inrange10144 +range10143: + call void @finch_panic_index(ptr @.str.6823, i64 307, i64 8, i64 %t284) unreachable -inrange9633: +inrange10144: %t286 = extractvalue { ptr, i64, i64 } %t283, 0 %t287 = getelementptr inbounds { ptr, i64, i64 }, ptr %t286, i64 8 %t288 = load { ptr, i64, i64 }, ptr %t287 @@ -86887,16 +103806,16 @@ inrange9633: %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) + br i1 %t293, label %range10145, label %inrange10146 +range10145: + call void @finch_panic_index(ptr @.str.6824, i64 307, i64 9, i64 %t292) unreachable -inrange9635: +inrange10146: %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 + store { ptr, i64, i64 } { ptr @.str.6826, 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 @@ -86907,37 +103826,37 @@ inrange9635: %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: + br label %endif10128 +else10127: %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 + store { ptr, i64, i64 } { ptr @.str.6827, 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: + br label %logic.from10147 +logic.from10147: + br i1 %t311, label %logic.rhs10148, label %logic.end10149 +logic.rhs10148: %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: + br label %logic.rend10150 +logic.rend10150: + br label %logic.end10149 +logic.end10149: + %t315 = phi i1 [ false, %logic.from10147 ], [ %t314, %logic.rend10150 ] + br i1 %t315, label %then10151, label %else10152 +then10151: %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) + br i1 %t320, label %range10154, label %inrange10155 +range10154: + call void @finch_panic_index(ptr @.str.6828, i64 309, i64 1, i64 %t319) unreachable -inrange9644: +inrange10155: %t321 = extractvalue { ptr, i64, i64 } %t318, 0 %t322 = getelementptr inbounds { ptr, i64, i64 }, ptr %t321, i64 1 %t323 = load { ptr, i64, i64 }, ptr %t322 @@ -86948,11 +103867,11 @@ inrange9644: %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) + br i1 %t330, label %range10156, label %inrange10157 +range10156: + call void @finch_panic_index(ptr @.str.6829, i64 309, i64 2, i64 %t329) unreachable -inrange9646: +inrange10157: %t331 = extractvalue { ptr, i64, i64 } %t328, 0 %t332 = getelementptr inbounds { ptr, i64, i64 }, ptr %t331, i64 2 %t333 = load { ptr, i64, i64 }, ptr %t332 @@ -86963,11 +103882,11 @@ inrange9646: %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) + br i1 %t340, label %range10158, label %inrange10159 +range10158: + call void @finch_panic_index(ptr @.str.6830, i64 309, i64 3, i64 %t339) unreachable -inrange9648: +inrange10159: %t341 = extractvalue { ptr, i64, i64 } %t338, 0 %t342 = getelementptr inbounds { ptr, i64, i64 }, ptr %t341, i64 3 %t343 = load { ptr, i64, i64 }, ptr %t342 @@ -86978,11 +103897,11 @@ inrange9648: %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) + br i1 %t350, label %range10160, label %inrange10161 +range10160: + call void @finch_panic_index(ptr @.str.6831, i64 309, i64 4, i64 %t349) unreachable -inrange9650: +inrange10161: %t351 = extractvalue { ptr, i64, i64 } %t348, 0 %t352 = getelementptr inbounds { ptr, i64, i64 }, ptr %t351, i64 4 %t353 = load { ptr, i64, i64 }, ptr %t352 @@ -86991,11 +103910,11 @@ inrange9650: %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) + br i1 %t358, label %range10162, label %inrange10163 +range10162: + call void @finch_panic_index(ptr @.str.6832, i64 309, i64 5, i64 %t357) unreachable -inrange9652: +inrange10163: %t359 = extractvalue { ptr, i64, i64 } %t356, 0 %t360 = getelementptr inbounds { ptr, i64, i64 }, ptr %t359, i64 5 %t361 = load { ptr, i64, i64 }, ptr %t360 @@ -87008,40 +103927,40 @@ inrange9652: %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: + br label %endif10153 +else10152: %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 + store { ptr, i64, i64 } { ptr @.str.6833, 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: + br label %logic.from10164 +logic.from10164: + br i1 %t372, label %logic.rhs10165, label %logic.end10166 +logic.rhs10165: %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: + br label %logic.rend10167 +logic.rend10167: + br label %logic.end10166 +logic.end10166: + %t376 = phi i1 [ false, %logic.from10164 ], [ %t375, %logic.rend10167 ] + br label %logic.from10168 +logic.from10168: + br i1 %t376, label %logic.rhs10169, label %logic.end10170 +logic.rhs10169: %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: + br label %logic.rend10171 +logic.rend10171: + br label %logic.end10170 +logic.end10170: + %t381 = phi i1 [ false, %logic.from10168 ], [ %t380, %logic.rend10171 ] + br i1 %t381, label %then10172, label %else10173 +then10172: %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 @@ -87052,11 +103971,11 @@ then9661: %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) + br i1 %t391, label %range10175, label %inrange10176 +range10175: + call void @finch_panic_index(ptr @.str.6834, i64 312, i64 %t388, i64 %t390) unreachable -inrange9665: +inrange10176: %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 @@ -87064,11 +103983,11 @@ inrange9665: %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) + br i1 %t398, label %range10177, label %inrange10178 +range10177: + call void @finch_panic_index(ptr @.str.6835, i64 312, i64 3, i64 %t397) unreachable -inrange9667: +inrange10178: %t399 = extractvalue { ptr, i64, i64 } %t396, 0 %t400 = getelementptr inbounds { ptr, i64, i64 }, ptr %t399, i64 3 %t401 = load { ptr, i64, i64 }, ptr %t400 @@ -87087,11 +104006,11 @@ inrange9667: %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) + br i1 %t413, label %range10179, label %inrange10180 +range10179: + call void @finch_panic_index(ptr @.str.6836, i64 313, i64 %t410, i64 %t412) unreachable -inrange9669: +inrange10180: %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 @@ -87099,11 +104018,11 @@ inrange9669: %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) + br i1 %t420, label %range10181, label %inrange10182 +range10181: + call void @finch_panic_index(ptr @.str.6837, i64 313, i64 4, i64 %t419) unreachable -inrange9671: +inrange10182: %t421 = extractvalue { ptr, i64, i64 } %t418, 0 %t422 = getelementptr inbounds { ptr, i64, i64 }, ptr %t421, i64 4 %t423 = load { ptr, i64, i64 }, ptr %t422 @@ -87117,37 +104036,37 @@ inrange9671: %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: + br label %endif10174 +else10173: %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 + store { ptr, i64, i64 } { ptr @.str.6838, 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: + br label %logic.from10183 +logic.from10183: + br i1 %t435, label %logic.rhs10184, label %logic.end10185 +logic.rhs10184: %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: + br label %logic.rend10186 +logic.rend10186: + br label %logic.end10185 +logic.end10185: + %t439 = phi i1 [ false, %logic.from10183 ], [ %t438, %logic.rend10186 ] + br i1 %t439, label %then10187, label %else10188 +then10187: %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) + br i1 %t444, label %range10190, label %inrange10191 +range10190: + call void @finch_panic_index(ptr @.str.6839, i64 315, i64 1, i64 %t443) unreachable -inrange9680: +inrange10191: %t445 = extractvalue { ptr, i64, i64 } %t442, 0 %t446 = getelementptr inbounds { ptr, i64, i64 }, ptr %t445, i64 1 %t447 = load { ptr, i64, i64 }, ptr %t446 @@ -87158,11 +104077,11 @@ inrange9680: %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) + br i1 %t454, label %range10192, label %inrange10193 +range10192: + call void @finch_panic_index(ptr @.str.6840, i64 315, i64 2, i64 %t453) unreachable -inrange9682: +inrange10193: %t455 = extractvalue { ptr, i64, i64 } %t452, 0 %t456 = getelementptr inbounds { ptr, i64, i64 }, ptr %t455, i64 2 %t457 = load { ptr, i64, i64 }, ptr %t456 @@ -87173,11 +104092,11 @@ inrange9682: %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) + br i1 %t464, label %range10194, label %inrange10195 +range10194: + call void @finch_panic_index(ptr @.str.6841, i64 315, i64 3, i64 %t463) unreachable -inrange9684: +inrange10195: %t465 = extractvalue { ptr, i64, i64 } %t462, 0 %t466 = getelementptr inbounds { ptr, i64, i64 }, ptr %t465, i64 3 %t467 = load { ptr, i64, i64 }, ptr %t466 @@ -87188,11 +104107,11 @@ inrange9684: %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) + br i1 %t474, label %range10196, label %inrange10197 +range10196: + call void @finch_panic_index(ptr @.str.6842, i64 315, i64 4, i64 %t473) unreachable -inrange9686: +inrange10197: %t475 = extractvalue { ptr, i64, i64 } %t472, 0 %t476 = getelementptr inbounds { ptr, i64, i64 }, ptr %t475, i64 4 %t477 = load { ptr, i64, i64 }, ptr %t476 @@ -87201,11 +104120,11 @@ inrange9686: %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) + br i1 %t482, label %range10198, label %inrange10199 +range10198: + call void @finch_panic_index(ptr @.str.6843, i64 315, i64 5, i64 %t481) unreachable -inrange9688: +inrange10199: %t483 = extractvalue { ptr, i64, i64 } %t480, 0 %t484 = getelementptr inbounds { ptr, i64, i64 }, ptr %t483, i64 5 %t485 = load { ptr, i64, i64 }, ptr %t484 @@ -87214,16 +104133,16 @@ inrange9688: %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) + br i1 %t490, label %range10200, label %inrange10201 +range10200: + call void @finch_panic_index(ptr @.str.6844, i64 315, i64 6, i64 %t489) unreachable -inrange9690: +inrange10201: %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 + store { ptr, i64, i64 } { ptr @.str.6846, 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 @@ -87234,37 +104153,37 @@ inrange9690: %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: + br label %endif10189 +else10188: %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 + store { ptr, i64, i64 } { ptr @.str.6847, 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: + br label %logic.from10202 +logic.from10202: + br i1 %t508, label %logic.rhs10203, label %logic.end10204 +logic.rhs10203: %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: + br label %logic.rend10205 +logic.rend10205: + br label %logic.end10204 +logic.end10204: + %t512 = phi i1 [ false, %logic.from10202 ], [ %t511, %logic.rend10205 ] + br i1 %t512, label %then10206, label %endif10208 +then10206: %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) + br i1 %t517, label %range10209, label %inrange10210 +range10209: + call void @finch_panic_index(ptr @.str.6848, i64 317, i64 1, i64 %t516) unreachable -inrange9699: +inrange10210: %t518 = extractvalue { ptr, i64, i64 } %t515, 0 %t519 = getelementptr inbounds { ptr, i64, i64 }, ptr %t518, i64 1 %t520 = load { ptr, i64, i64 }, ptr %t519 @@ -87278,139 +104197,635 @@ inrange9699: %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: + br label %endif10208 +endif10208: + br label %endif10189 +endif10189: + br label %endif10174 +endif10174: + br label %endif10153 +endif10153: + br label %endif10128 +endif10128: + br label %endif10105 +endif10105: + br label %endif10082 +endif10082: + call void @finch_str_drop(ptr %a37) + call void @finch.drop.arr_str(ptr %a27) + br label %endif10073 +else10072: %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: + br i1 %t531, label %then10211, label %endif10213 +then10211: %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 + %t535 = load %S.lsp.Diag, ptr %t534 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 + store %S.lsp.Diag %t535, ptr %a536 + call void @finch.drop.S_lsp_Diag(ptr %a536) + br label %endif10213 +endif10213: + br label %endif10073 +endif10073: + br label %each.step10069 +each.step10069: + %t537 = load i64, ptr %a10 + %t538 = add i64 %t537, 1 + store i64 %t538, ptr %a10 + br label %each.cond10067 +each.end10070: + call void @finch.drop.arr_str(ptr %a9) + %t539 = load %S.lsp.Analysis, ptr %a2 + ret %S.lsp.Analysis %t539 +} + +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.cond10234 +n.cond10234: + %t6 = load i64, ptr %a5 + %t7 = icmp slt i64 %t6, %t4 + br i1 %t7, label %n.body10235, label %n.end10236 +n.body10235: + %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.cond10234 +n.end10236: + 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.cond10237 +n.cond10237: + %t6 = load i64, ptr %a5 + %t7 = icmp slt i64 %t6, %t4 + br i1 %t7, label %n.body10238, label %n.end10239 +n.body10238: + %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.cond10237 +n.end10239: + 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.cond10240 +n.cond10240: + %t6 = load i64, ptr %a5 + %t7 = icmp slt i64 %t6, %t4 + br i1 %t7, label %n.body10241, label %n.end10242 +n.body10241: + %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.cond10240 +n.end10242: + 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.cond10243 +n.cond10243: + %t6 = load i64, ptr %a5 + %t7 = icmp slt i64 %t6, %t4 + br i1 %t7, label %n.body10244, label %n.end10245 +n.body10244: + %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.cond10243 +n.end10245: + 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.cond10246 +n.cond10246: + %t6 = load i64, ptr %a5 + %t7 = icmp slt i64 %t6, %t4 + br i1 %t7, label %n.body10247, label %n.end10248 +n.body10247: + %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.cond10246 +n.end10248: + 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 void @finch.drop.S_lsp_Ref(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.lsp.Ref, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.lsp.Ref, ptr %a, i32 0, i32 4 + call void @finch_str_drop(ptr %t2) + %t3 = getelementptr inbounds %S.lsp.Ref, ptr %a, i32 0, i32 7 + call void @finch_str_drop(ptr %t3) + ret void +} + +define internal void @finch.drop.arr_S_lsp_Ref(ptr %a) { +entry: + %a4 = alloca i64, align 16 + %t1 = load ptr, ptr %a + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 + %t3 = load i64, ptr %t2 + store i64 0, ptr %a4 + br label %n.cond10249 +n.cond10249: + %t5 = load i64, ptr %a4 + %t6 = icmp slt i64 %t5, %t3 + br i1 %t6, label %n.body10250, label %n.end10251 +n.body10250: + %t7 = getelementptr inbounds %S.lsp.Ref, ptr %t1, i64 %t5 + call void @finch.drop.S_lsp_Ref(ptr %t7) + %t8 = load i64, ptr %a4 + %t9 = add i64 %t8, 1 + store i64 %t9, ptr %a4 + br label %n.cond10249 +n.end10251: + call void @finch_arr_free(ptr %a) + ret void +} + +define internal void @finch.drop.S_lsp_VarRec(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.lsp.VarRec, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.lsp.VarRec, ptr %a, i32 0, i32 1 + call void @finch_str_drop(ptr %t2) + %t3 = getelementptr inbounds %S.lsp.VarRec, ptr %a, i32 0, i32 2 + call void @finch_str_drop(ptr %t3) + %t4 = getelementptr inbounds %S.lsp.VarRec, ptr %a, i32 0, i32 5 + call void @finch_str_drop(ptr %t4) + ret void +} + +define internal void @finch.drop.arr_S_lsp_VarRec(ptr %a) { +entry: + %a4 = alloca i64, align 16 + %t1 = load ptr, ptr %a + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 + %t3 = load i64, ptr %t2 + store i64 0, ptr %a4 + br label %n.cond10252 +n.cond10252: + %t5 = load i64, ptr %a4 + %t6 = icmp slt i64 %t5, %t3 + br i1 %t6, label %n.body10253, label %n.end10254 +n.body10253: + %t7 = getelementptr inbounds %S.lsp.VarRec, ptr %t1, i64 %t5 + call void @finch.drop.S_lsp_VarRec(ptr %t7) + %t8 = load i64, ptr %a4 + %t9 = add i64 %t8, 1 + store i64 %t9, ptr %a4 + br label %n.cond10252 +n.end10254: + call void @finch_arr_free(ptr %a) + ret void +} + +define internal void @finch.drop.S_lsp_FnRec(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.lsp.FnRec, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.lsp.FnRec, ptr %a, i32 0, i32 1 + call void @finch_str_drop(ptr %t2) + %t3 = getelementptr inbounds %S.lsp.FnRec, ptr %a, i32 0, i32 2 + call void @finch_str_drop(ptr %t3) + %t4 = getelementptr inbounds %S.lsp.FnRec, ptr %a, i32 0, i32 3 + call void @finch_str_drop(ptr %t4) + %t5 = getelementptr inbounds %S.lsp.FnRec, ptr %a, i32 0, i32 7 + call void @finch_str_drop(ptr %t5) + %t6 = getelementptr inbounds %S.lsp.FnRec, ptr %a, i32 0, i32 8 + call void @finch.drop.arr_str(ptr %t6) + ret void +} + +define internal void @finch.drop.arr_S_lsp_FnRec(ptr %a) { +entry: + %a4 = alloca i64, align 16 + %t1 = load ptr, ptr %a + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 + %t3 = load i64, ptr %t2 + store i64 0, ptr %a4 + br label %n.cond10255 +n.cond10255: + %t5 = load i64, ptr %a4 + %t6 = icmp slt i64 %t5, %t3 + br i1 %t6, label %n.body10256, label %n.end10257 +n.body10256: + %t7 = getelementptr inbounds %S.lsp.FnRec, ptr %t1, i64 %t5 + call void @finch.drop.S_lsp_FnRec(ptr %t7) + %t8 = load i64, ptr %a4 + %t9 = add i64 %t8, 1 + store i64 %t9, ptr %a4 + br label %n.cond10255 +n.end10257: + call void @finch_arr_free(ptr %a) + ret void +} + +define internal void @finch.drop.S_lsp_StructRec(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.lsp.StructRec, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.lsp.StructRec, ptr %a, i32 0, i32 1 + call void @finch_str_drop(ptr %t2) + %t3 = getelementptr inbounds %S.lsp.StructRec, ptr %a, i32 0, i32 2 + call void @finch_str_drop(ptr %t3) + %t4 = getelementptr inbounds %S.lsp.StructRec, ptr %a, i32 0, i32 5 + call void @finch.drop.arr_str(ptr %t4) + %t5 = getelementptr inbounds %S.lsp.StructRec, ptr %a, i32 0, i32 6 + call void @finch.drop.arr_str(ptr %t5) + ret void +} + +define internal void @finch.drop.arr_S_lsp_StructRec(ptr %a) { +entry: + %a4 = alloca i64, align 16 + %t1 = load ptr, ptr %a + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 + %t3 = load i64, ptr %t2 + store i64 0, ptr %a4 + br label %n.cond10258 +n.cond10258: + %t5 = load i64, ptr %a4 + %t6 = icmp slt i64 %t5, %t3 + br i1 %t6, label %n.body10259, label %n.end10260 +n.body10259: + %t7 = getelementptr inbounds %S.lsp.StructRec, ptr %t1, i64 %t5 + call void @finch.drop.S_lsp_StructRec(ptr %t7) + %t8 = load i64, ptr %a4 + %t9 = add i64 %t8, 1 + store i64 %t9, ptr %a4 + br label %n.cond10258 +n.end10260: + call void @finch_arr_free(ptr %a) + ret void +} + +define internal void @finch.drop.S_lsp_EnumRec(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.lsp.EnumRec, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.lsp.EnumRec, ptr %a, i32 0, i32 1 + call void @finch_str_drop(ptr %t2) + %t3 = getelementptr inbounds %S.lsp.EnumRec, ptr %a, i32 0, i32 2 + call void @finch_str_drop(ptr %t3) + %t4 = getelementptr inbounds %S.lsp.EnumRec, ptr %a, i32 0, i32 5 + call void @finch.drop.arr_str(ptr %t4) + ret void +} + +define internal void @finch.drop.arr_S_lsp_EnumRec(ptr %a) { +entry: + %a4 = alloca i64, align 16 + %t1 = load ptr, ptr %a + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 + %t3 = load i64, ptr %t2 + store i64 0, ptr %a4 + br label %n.cond10261 +n.cond10261: + %t5 = load i64, ptr %a4 + %t6 = icmp slt i64 %t5, %t3 + br i1 %t6, label %n.body10262, label %n.end10263 +n.body10262: + %t7 = getelementptr inbounds %S.lsp.EnumRec, ptr %t1, i64 %t5 + call void @finch.drop.S_lsp_EnumRec(ptr %t7) + %t8 = load i64, ptr %a4 + %t9 = add i64 %t8, 1 + store i64 %t9, ptr %a4 + br label %n.cond10261 +n.end10263: + call void @finch_arr_free(ptr %a) + ret void +} + +define internal void @finch.drop.S_lsp_Analysis(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.lsp.Analysis, ptr %a, i32 0, i32 0 + call void @finch.drop.arr_S_lsp_Ref(ptr %t1) + %t2 = getelementptr inbounds %S.lsp.Analysis, ptr %a, i32 0, i32 1 + call void @finch.drop.arr_S_lsp_VarRec(ptr %t2) + %t3 = getelementptr inbounds %S.lsp.Analysis, ptr %a, i32 0, i32 2 + call void @finch.drop.arr_S_lsp_FnRec(ptr %t3) + %t4 = getelementptr inbounds %S.lsp.Analysis, ptr %a, i32 0, i32 3 + call void @finch.drop.arr_S_lsp_StructRec(ptr %t4) + %t5 = getelementptr inbounds %S.lsp.Analysis, ptr %a, i32 0, i32 4 + call void @finch.drop.arr_S_lsp_EnumRec(ptr %t5) + %t6 = getelementptr inbounds %S.lsp.Analysis, ptr %a, i32 0, i32 5 + call void @finch.drop.arr_str(ptr %t6) + %t7 = getelementptr inbounds %S.lsp.Analysis, ptr %a, i32 0, i32 6 + call void @finch.drop.S_lsp_Diag(ptr %t7) + ret void } 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 + %a5 = alloca i64, align 16 + %a7 = alloca { ptr, i64, i64 }, align 16 + %a11 = alloca i64, align 16 + %a14 = alloca i64, align 16 + %a30 = alloca { ptr, i64, i64 }, align 16 + %a31 = alloca i64, align 16 + %a39 = alloca { ptr, i64, i64 }, align 16 + %a42 = alloca { ptr, i64, i64 }, align 16 + %a43 = alloca { ptr, i64, i64 }, align 16 + %a44 = alloca { ptr, i64, i64 }, align 16 + %a47 = 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 + %a52 = 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 + %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 %a64 = 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 %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 + %a74 = alloca { ptr, i64, i64 }, align 16 + %a75 = 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 + %a84 = alloca { ptr, i64, i64 }, align 16 + %a85 = alloca { ptr, i64, i64 }, align 16 + %a86 = alloca { ptr, i64, i64 }, align 16 %a89 = 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 - %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 %a98 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 + %a99 = alloca { ptr, i64, i64 }, align 16 + %a100 = 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 + %a110 = alloca { ptr, i64, i64 }, align 16 + %a111 = alloca { ptr, i64, i64 }, align 16 + %a112 = 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 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 + %a120 = alloca { ptr, i64, i64 }, align 16 + %a121 = alloca { ptr, i64, i64 }, align 16 + %a125 = 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 + %a129 = alloca { ptr, i64, i64 }, align 16 %a132 = alloca { ptr, i64, i64 }, align 16 %a133 = 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 %a137 = 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 - %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 + %a147 = alloca { ptr, i64, i64 }, align 16 + %a148 = alloca { ptr, i64, i64 }, align 16 %a150 = 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 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 + %a156 = 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 + %a159 = alloca { ptr, i64, i64 }, align 16 + %a160 = alloca { ptr, i64, i64 }, align 16 + %a165 = 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 + %a169 = alloca %S.lsp.Analysis, align 16 + %a177 = alloca { ptr, i64, i64 }, align 16 + %a178 = alloca i32, align 16 + %a188 = alloca %S.lsp.Analysis, align 16 + %a189 = alloca %S.lsp.Analysis, align 16 + %a192 = 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 @@ -87420,280 +104835,309 @@ entry: %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 + %a221 = alloca { ptr, i64, i64 }, align 16 + %a225 = alloca { ptr, i64, i64 }, align 16 + %a226 = 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 + %a233 = alloca { ptr, i64, i64 }, align 16 + %a234 = alloca { ptr, i64, i64 }, align 16 + %a237 = alloca { ptr, i64, i64 }, align 16 + %a241 = alloca { ptr, i64, i64 }, align 16 + %a242 = 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 + %a253 = alloca { ptr, i64, i64 }, align 16 + %a254 = alloca { ptr, i64, i64 }, align 16 + %a257 = alloca { ptr, i64, i64 }, align 16 + %a261 = alloca { ptr, i64, i64 }, align 16 + %a262 = alloca i32, align 16 + %a272 = alloca %S.lsp.Analysis, align 16 + %a273 = alloca %S.lsp.Analysis, align 16 + %a276 = 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) + call void @finch.host.makeDirs({ ptr, i64, i64 } %t3) + store { ptr, i64, i64 } { ptr @.str.6849, i64 0, i64 0 }, ptr %a4 + store i64 0, ptr %a5 + %t6 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 + store { ptr, i64, i64 } zeroinitializer, ptr %a7 + %t8 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t6, i32 0, i32 1 + %t9 = load i64, ptr %t8 + call void @finch_arr_make(ptr %a7, i64 %t9, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t10 = load ptr, ptr %a7 + store i64 0, ptr %a11 + %t12 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t6, i32 0, i32 2 + %t13 = load i64, ptr %t12 + store i64 0, ptr %a14 + br label %n.cond10214 +n.cond10214: + %t15 = load i64, ptr %a14 + %t16 = icmp slt i64 %t15, %t13 + br i1 %t16, label %n.body10215, label %n.end10216 +n.body10215: + %t17 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t6, i32 0, i32 0 + %t18 = load ptr, ptr %t17 + %t19 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t18, i64 %t15 + %t20 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t19, i32 0, i32 0 + %t21 = load i64, ptr %t20 + %t22 = icmp ne i64 %t21, 0 + br i1 %t22, label %entry.live10217, label %entry.next10218 +entry.live10217: + %t23 = load i64, ptr %a11 + %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t10, i64 %t23 + %t25 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t19, i32 0, i32 1 + call void @finch_str_copy(ptr %t24, ptr %t25) + %t26 = add i64 %t23, 1 + store i64 %t26, ptr %a11 + br label %entry.next10218 +entry.next10218: + %t27 = load i64, ptr %a14 + %t28 = add i64 %t27, 1 + store i64 %t28, ptr %a14 + br label %n.cond10214 +n.end10216: + %t29 = load { ptr, i64, i64 }, ptr %a7 + store { ptr, i64, i64 } %t29, ptr %a30 + store i64 0, ptr %a31 + br label %each.cond10219 +each.cond10219: + %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %a30, i32 0, i32 1 + %t33 = load i64, ptr %t32 + %t34 = load i64, ptr %a31 + %t35 = icmp slt i64 %t34, %t33 + br i1 %t35, label %each.body10220, label %each.end10222 +each.body10220: + %t36 = load ptr, ptr %a30 + %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %t36, i64 %t34 + %t38 = load { ptr, i64, i64 }, ptr %t37 + store { ptr, i64, i64 } %t38, ptr %a39 + %t40 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 1 + %t41 = load { ptr, i64, i64 }, ptr %t40 + store { ptr, i64, i64 } %t41, ptr %a43 + store { ptr, i64, i64 } { ptr @.str.6850, i64 4, i64 0 }, ptr %a44 + call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) + %t45 = load { ptr, i64, i64 }, ptr %a42 + %t46 = load i64, ptr %a5 + call void @finch_str_from_int(ptr %a47, i64 %t46) + %t48 = load { ptr, i64, i64 }, ptr %a47 + store { ptr, i64, i64 } %t45, ptr %a50 + store { ptr, i64, i64 } %t48, ptr %a51 + call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) + store { ptr, i64, i64 } %t45, ptr %a52 + call void @finch_str_drop(ptr %a52) + store { ptr, i64, i64 } %t48, ptr %a53 + call void @finch_str_drop(ptr %a53) + %t54 = load { ptr, i64, i64 }, ptr %a49 + store { ptr, i64, i64 } %t54, ptr %a56 + store { ptr, i64, i64 } { ptr @.str.6851, i64 4, i64 0 }, ptr %a57 + call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) + store { ptr, i64, i64 } %t54, ptr %a58 + call void @finch_str_drop(ptr %a58) + %t59 = load { ptr, i64, i64 }, ptr %a55 + store { ptr, i64, i64 } %t59, ptr %a60 + %t61 = load { ptr, i64, i64 }, ptr %a60 + %t62 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 + %t63 = load { ptr, i64, i64 }, ptr %a39 + store { ptr, i64, i64 } %t63, ptr %a64 + %t65 = call i64 @finch_map_find(ptr %t62, ptr %a64, 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) + %t66 = icmp slt i64 %t65, 0 + br i1 %t66, label %map.missing10223, label %map.found10224 +map.missing10223: + store { ptr, i64, i64 } zeroinitializer, ptr %a67 + store { ptr, i64, i64 } %t63, ptr %a68 + call void @finch_buf_str(ptr %a67, ptr %a68, i32 1) + call void @finch_map_missing(ptr @.str.6852, i64 333, ptr %a67) 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 +map.found10224: + %t69 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t62, i32 0, i32 0 + %t70 = load ptr, ptr %t69 + %t71 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t70, i64 %t65 + %t72 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t71, i32 0, i32 2 + %t73 = load { ptr, i64, i64 }, ptr %t72 + store { ptr, i64, i64 } %t61, ptr %a74 + store { ptr, i64, i64 } %t73, ptr %a75 + %t76 = call i32 @finch_write_file(ptr %a74, ptr %a75) + %t77 = icmp ne i32 %t76, 0 + %t78 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t78, ptr %a80 + store { ptr, i64, i64 } { ptr @.str.6853, i64 11, i64 0 }, ptr %a81 + call void @finch_str_concat(ptr %a79, ptr %a80, ptr %a81) + %t82 = load { ptr, i64, i64 }, ptr %a79 + %t83 = load { ptr, i64, i64 }, ptr %a39 + store { ptr, i64, i64 } %t83, ptr %a85 + store { ptr, i64, i64 } { ptr @.str.6854, i64 1, i64 0 }, ptr %a86 + call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) + %t87 = load { ptr, i64, i64 }, ptr %a84 + %t88 = load { ptr, i64, i64 }, ptr %a60 + store { ptr, i64, i64 } %t87, ptr %a90 + store { ptr, i64, i64 } %t88, ptr %a91 + call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) + store { ptr, i64, i64 } %t87, ptr %a92 + call void @finch_str_drop(ptr %a92) + %t93 = load { ptr, i64, i64 }, ptr %a89 + %t94 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t93) + store { ptr, i64, i64 } %t93, ptr %a95 + call void @finch_str_drop(ptr %a95) + store { ptr, i64, i64 } %t82, ptr %a97 + store { ptr, i64, i64 } %t94, 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 } %t82, ptr %a99 + call void @finch_str_drop(ptr %a99) + store { ptr, i64, i64 } %t94, ptr %a100 + call void @finch_str_drop(ptr %a100) + %t101 = load { ptr, i64, i64 }, ptr %a96 + %t102 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t101, ptr %a4 + store { ptr, i64, i64 } %t102, ptr %a103 + call void @finch_str_drop(ptr %a103) + %t104 = load i64, ptr %a5 + %t105 = add i64 %t104, 1 + store i64 %t105, ptr %a5 + call void @finch_str_drop(ptr %a60) + br label %each.step10221 +each.step10221: + %t106 = load i64, ptr %a31 + %t107 = add i64 %t106, 1 + store i64 %t107, ptr %a31 + br label %each.cond10219 +each.end10222: + call void @finch.drop.arr_str(ptr %a30) + %t108 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 1 + %t109 = load { ptr, i64, i64 }, ptr %t108 + store { ptr, i64, i64 } %t109, ptr %a111 + store { ptr, i64, i64 } { ptr @.str.6855, i64 8, i64 0 }, 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 %a114 + %t115 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 0 + %t116 = load { ptr, i64, i64 }, ptr %t115 + %t117 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t116) + store { ptr, i64, i64 } %t117, ptr %a119 + store { ptr, i64, i64 } { ptr @.str.6856, i64 7, i64 0 }, ptr %a120 + call void @finch_str_concat(ptr %a118, ptr %a119, ptr %a120) + store { ptr, i64, i64 } %t117, ptr %a121 + call void @finch_str_drop(ptr %a121) + %t122 = load { ptr, i64, i64 }, ptr %a118 + %t123 = load { ptr, i64, i64 }, ptr %a1 + %t124 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t123) + store { ptr, i64, i64 } %t122, ptr %a126 + store { ptr, i64, i64 } %t124, ptr %a127 + call void @finch_str_concat(ptr %a125, ptr %a126, ptr %a127) + store { ptr, i64, i64 } %t122, ptr %a128 + call void @finch_str_drop(ptr %a128) + store { ptr, i64, i64 } %t124, ptr %a129 + call void @finch_str_drop(ptr %a129) + %t130 = load { ptr, i64, i64 }, ptr %a125 + %t131 = load { ptr, i64, i64 }, ptr %a4 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 + store { ptr, i64, i64 } %t131, ptr %a134 + call void @finch_str_concat(ptr %a132, ptr %a133, ptr %a134) + store { ptr, i64, i64 } %t130, ptr %a135 + call void @finch_str_drop(ptr %a135) + %t136 = load { ptr, i64, i64 }, ptr %a132 + store { ptr, i64, i64 } %t136, ptr %a138 + store { ptr, i64, i64 } { ptr @.str.6857, i64 3, i64 0 }, ptr %a139 + call void @finch_str_concat(ptr %a137, ptr %a138, ptr %a139) + store { ptr, i64, i64 } %t136, ptr %a140 + call void @finch_str_drop(ptr %a140) + %t141 = load { ptr, i64, i64 }, ptr %a137 + %t142 = load { ptr, i64, i64 }, ptr %a114 + %t143 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t142) + store { ptr, i64, i64 } %t141, ptr %a145 + store { ptr, i64, i64 } %t143, 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 } %t141, ptr %a147 + call void @finch_str_drop(ptr %a147) + store { ptr, i64, i64 } %t143, ptr %a148 + call void @finch_str_drop(ptr %a148) + %t149 = load { ptr, i64, i64 }, ptr %a144 + store { ptr, i64, i64 } %t149, ptr %a151 + store { ptr, i64, i64 } { ptr @.str.6858, i64 5, i64 0 }, ptr %a152 + call void @finch_str_concat(ptr %a150, ptr %a151, ptr %a152) + store { ptr, i64, i64 } %t149, ptr %a153 + call void @finch_str_drop(ptr %a153) + %t154 = load { ptr, i64, i64 }, ptr %a150 + %t155 = call i64 @finch.host.run({ ptr, i64, i64 } %t154) + store { ptr, i64, i64 } %t154, ptr %a156 + call void @finch_str_drop(ptr %a156) + %t157 = load { ptr, i64, i64 }, ptr %a114 + store { ptr, i64, i64 } %t157, ptr %a158 + store { ptr, i64, i64 } zeroinitializer, ptr %a159 + store { ptr, i64, i64 } zeroinitializer, ptr %a160 + %t161 = call i32 @finch_try_read_file(ptr %a159, ptr %a158, ptr %a160) + %t162 = icmp eq i32 %t161, 0 + %t163 = load { ptr, i64, i64 }, ptr %a160 + %t164 = load { ptr, i64, i64 }, ptr %a159 + br i1 %t162, label %or.failed10225, label %or.ok10226 +or.failed10225: + store { ptr, i64, i64 } %t163, ptr %a165 + call void @finch_str_drop(ptr %a165) + br label %or.bend10227 +or.bend10227: + br label %or.end10228 +or.ok10226: + br label %or.end10228 +or.end10228: + %t166 = phi { ptr, i64, i64 } [ { ptr @.str.6859, i64 0, i64 0 }, %or.bend10227 ], [ %t164, %or.ok10226 ] + %t167 = call %S.lsp.Analysis @finch.lsp.parseOutput({ ptr, i64, i64 } %t166) 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: + call void @finch_str_drop(ptr %a168) + store %S.lsp.Analysis %t167, ptr %a169 + %t170 = getelementptr inbounds %S.lsp.Analysis, ptr %a169, i32 0, i32 6 + %t171 = getelementptr inbounds %S.lsp.Diag, ptr %t170, i32 0, i32 0 + %t172 = load i1, ptr %t171 + %t173 = xor i1 %t172, true + br i1 %t173, label %then10229, label %else10230 +then10229: + %t174 = load %S.lsp.Analysis, ptr %a169 + %t175 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 4 + %t176 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t176, ptr %a177 + store i32 0, ptr %a178 + %t179 = call i64 @finch_map_slot(ptr %t175, ptr %a177, 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 %a178) + %t180 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t175, i32 0, i32 0 + %t181 = load ptr, ptr %t180 + %t182 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t181, i64 %t179 + %t183 = load i32, ptr %a178 + %t184 = icmp ne i32 %t183, 0 + br i1 %t184, label %map.new10232, label %map.have10233 +map.new10232: + %t185 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t182, i32 0, i32 1 + call void @finch_str_copy(ptr %t185, ptr %a177) + %t186 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t182, i32 0, i32 2 + store %S.lsp.Analysis zeroinitializer, ptr %t186 + br label %map.have10233 +map.have10233: + %t187 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t182, i32 0, i32 2 + store %S.lsp.Analysis %t174, ptr %a188 + call void @finch.copy.S_lsp_Analysis(ptr %a189, ptr %a188) + %t190 = load %S.lsp.Analysis, ptr %a189 + %t191 = load %S.lsp.Analysis, ptr %t187 + store %S.lsp.Analysis %t190, ptr %t187 + store %S.lsp.Analysis %t191, ptr %a192 + call void @finch.drop.S_lsp_Analysis(ptr %a192) + br label %endif10231 +else10230: %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: + br i1 %t197, label %then10264, label %endif10266 +then10264: %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: + br i1 %t202, label %map.missing10267, label %map.found10268 +map.missing10267: 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) + call void @finch_map_missing(ptr @.str.6860, i64 344, ptr %a203) unreachable -map.found9742: +map.found10268: %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 @@ -87705,78 +105149,100 @@ map.found9742: 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 + %t216 = getelementptr inbounds %S.lsp.Analysis, ptr %a169, 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 + %t220 = load { ptr, i64, i64 }, ptr %t216 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) + store { ptr, i64, i64 } %t220, ptr %a221 + call void @finch.drop.arr_S_lsp_FnRec(ptr %a221) + %t222 = getelementptr inbounds %S.lsp.Analysis, ptr %a213, i32 0, i32 3 + %t223 = load { ptr, i64, i64 }, ptr %t222 + %t224 = getelementptr inbounds %S.lsp.Analysis, ptr %a169, i32 0, i32 3 + store { ptr, i64, i64 } %t223, ptr %a225 + call void @finch.copy.arr_S_lsp_StructRec(ptr %a226, ptr %a225) + %t227 = load { ptr, i64, i64 }, ptr %a226 + %t228 = load { ptr, i64, i64 }, ptr %t224 + store { ptr, i64, i64 } %t227, ptr %t224 + store { ptr, i64, i64 } %t228, ptr %a229 + call void @finch.drop.arr_S_lsp_StructRec(ptr %a229) + %t230 = getelementptr inbounds %S.lsp.Analysis, ptr %a213, i32 0, i32 4 + %t231 = load { ptr, i64, i64 }, ptr %t230 + %t232 = getelementptr inbounds %S.lsp.Analysis, ptr %a169, i32 0, i32 4 + store { ptr, i64, i64 } %t231, ptr %a233 + call void @finch.copy.arr_S_lsp_EnumRec(ptr %a234, ptr %a233) + %t235 = load { ptr, i64, i64 }, ptr %a234 + %t236 = load { ptr, i64, i64 }, ptr %t232 + store { ptr, i64, i64 } %t235, ptr %t232 + store { ptr, i64, i64 } %t236, ptr %a237 + call void @finch.drop.arr_S_lsp_EnumRec(ptr %a237) + %t238 = getelementptr inbounds %S.lsp.Analysis, ptr %a213, i32 0, i32 1 + %t239 = load { ptr, i64, i64 }, ptr %t238 + %t240 = getelementptr inbounds %S.lsp.Analysis, ptr %a169, i32 0, i32 1 + store { ptr, i64, i64 } %t239, ptr %a241 + call void @finch.copy.arr_S_lsp_VarRec(ptr %a242, ptr %a241) + %t243 = load { ptr, i64, i64 }, ptr %a242 + %t244 = load { ptr, i64, i64 }, ptr %t240 + store { ptr, i64, i64 } %t243, ptr %t240 + store { ptr, i64, i64 } %t244, ptr %a245 + call void @finch.drop.arr_S_lsp_VarRec(ptr %a245) + %t246 = getelementptr inbounds %S.lsp.Analysis, ptr %a169, i32 0, i32 5 + %t247 = getelementptr inbounds { ptr, i64, i64 }, ptr %t246, i32 0, i32 1 + %t248 = load i64, ptr %t247 + %t249 = icmp eq i64 %t248, 0 + br i1 %t249, label %then10269, label %endif10271 +then10269: + %t250 = getelementptr inbounds %S.lsp.Analysis, ptr %a213, i32 0, i32 5 + %t251 = load { ptr, i64, i64 }, ptr %t250 + %t252 = getelementptr inbounds %S.lsp.Analysis, ptr %a169, i32 0, i32 5 + store { ptr, i64, i64 } %t251, ptr %a253 + call void @finch.copy.arr_str(ptr %a254, ptr %a253) + %t255 = load { ptr, i64, i64 }, ptr %a254 + %t256 = load { ptr, i64, i64 }, ptr %t252 + store { ptr, i64, i64 } %t255, ptr %t252 + store { ptr, i64, i64 } %t256, ptr %a257 + call void @finch.drop.arr_str(ptr %a257) + br label %endif10271 +endif10271: + call void @finch.drop.S_lsp_Analysis(ptr %a213) + br label %endif10266 +endif10266: + br label %endif10231 +endif10231: + %t258 = load %S.lsp.Analysis, ptr %a169 + %t259 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 3 + %t260 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t260, ptr %a261 + store i32 0, ptr %a262 + %t263 = call i64 @finch_map_slot(ptr %t259, ptr %a261, 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 %a262) + %t264 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t259, i32 0, i32 0 + %t265 = load ptr, ptr %t264 + %t266 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t265, i64 %t263 + %t267 = load i32, ptr %a262 + %t268 = icmp ne i32 %t267, 0 + br i1 %t268, label %map.new10272, label %map.have10273 +map.new10272: + %t269 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t266, i32 0, i32 1 + call void @finch_str_copy(ptr %t269, ptr %a261) + %t270 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t266, i32 0, i32 2 + store %S.lsp.Analysis zeroinitializer, ptr %t270 + br label %map.have10273 +map.have10273: + %t271 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t266, i32 0, i32 2 + store %S.lsp.Analysis %t258, ptr %a272 + call void @finch.copy.S_lsp_Analysis(ptr %a273, ptr %a272) + %t274 = load %S.lsp.Analysis, ptr %a273 + %t275 = load %S.lsp.Analysis, ptr %t271 + store %S.lsp.Analysis %t274, ptr %t271 + store %S.lsp.Analysis %t275, ptr %a276 + call void @finch.drop.S_lsp_Analysis(ptr %a276) + %t277 = load { ptr, i64, i64 }, ptr %a1 + %t278 = load %S.lsp.Analysis, ptr %a169 + call void @finch.lsp.Server.publish(ptr %self, { ptr, i64, i64 } %t277, %S.lsp.Analysis %t278) + call void @finch.drop.S_lsp_Analysis(ptr %a169) + call void @finch_str_drop(ptr %a114) + call void @finch_str_drop(ptr %a4) ret void } @@ -87804,11 +105270,18 @@ entry: %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 + %a98 = alloca %S.json.Json, align 16 + %a100 = alloca %S.json.Json, align 16 + %a102 = alloca %S.json.Json, align 16 + %a107 = alloca %S.json.Json, align 16 + %a111 = alloca { ptr, i64, i64 }, align 16 + %a112 = alloca { ptr, i64, i64 }, align 16 + %a119 = alloca %S.json.Json, align 16 + %a123 = alloca { ptr, i64, i64 }, align 16 + %a124 = alloca %S.json.Json, align 16 + %a131 = alloca { ptr, i64, i64 }, align 16 + %a132 = alloca { ptr, i64, i64 }, align 16 + %a135 = 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 @@ -87825,14 +105298,14 @@ entry: 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: + br label %each.cond10274 +each.cond10274: %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: + br i1 %t19, label %each.body10275, label %each.end10277 +each.body10275: %t20 = load ptr, ptr %t14 %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t20, i64 %t18 %t22 = load { ptr, i64, i64 }, ptr %t21 @@ -87843,32 +105316,32 @@ each.body9749: %t27 = load i64, ptr %t24 %t28 = load ptr, ptr %a13 store i64 0, ptr %a29 - br label %find.cond9752 -find.cond9752: + br label %find.cond10278 +find.cond10278: %t30 = load i64, ptr %a29 %t31 = icmp slt i64 %t30, %t27 - br i1 %t31, label %find.body9753, label %find.end9756 -find.body9753: + br i1 %t31, label %find.body10279, label %find.end10282 +find.body10279: %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: + br i1 %t37, label %find.hit10280, label %find.next10281 +find.hit10280: store i64 %t30, ptr %a26 - br label %find.end9756 -find.next9755: + br label %find.end10282 +find.next10281: %t38 = add i64 %t30, 1 store i64 %t38, ptr %a29 - br label %find.cond9752 -find.end9756: + br label %find.cond10278 +find.end10282: %t39 = load i64, ptr %a26 %t40 = icmp sge i64 %t39, 0 %t41 = xor i1 %t40, true - br i1 %t41, label %then9757, label %endif9759 -then9757: + br i1 %t41, label %then10283, label %endif10285 +then10283: %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 @@ -87881,25 +105354,25 @@ then9757: %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: + br label %endif10285 +endif10285: + br label %each.step10276 +each.step10276: %t51 = load i64, ptr %a15 %t52 = add i64 %t51, 1 store i64 %t52, ptr %a15 - br label %each.cond9748 -each.end9751: + br label %each.cond10274 +each.end10277: store { ptr, i64, i64 } zeroinitializer, ptr %a53 store i64 0, ptr %a54 - br label %each.cond9760 -each.cond9760: + br label %each.cond10286 +each.cond10286: %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: + br i1 %t58, label %each.body10287, label %each.end10289 +each.body10287: %t59 = load ptr, ptr %a13 %t60 = getelementptr inbounds { ptr, i64, i64 }, ptr %t59, i64 %t57 %t61 = load { ptr, i64, i64 }, ptr %t60 @@ -87909,10 +105382,10 @@ each.body9761: %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: + br label %logic.from10290 +logic.from10290: + br i1 %t67, label %logic.rhs10291, label %logic.end10292 +logic.rhs10291: %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 @@ -87921,13 +105394,13 @@ logic.rhs9765: 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: + br label %logic.rend10293 +logic.rend10293: + br label %logic.end10292 +logic.end10292: + %t76 = phi i1 [ false, %logic.from10290 ], [ %t75, %logic.rend10293 ] + br i1 %t76, label %then10294, label %endif10296 +then10294: %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 @@ -87935,11 +105408,11 @@ then9768: store i64 %t80, ptr %a81 %t82 = load i64, ptr %a81 %t83 = icmp slt i64 %t82, 0 - br i1 %t83, label %then9771, label %endif9773 -then9771: + br i1 %t83, label %then10297, label %endif10299 +then10297: store i64 0, ptr %a81 - br label %endif9773 -endif9773: + br label %endif10299 +endif10299: %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 @@ -87947,11 +105420,11 @@ endif9773: store i64 %t87, ptr %a88 %t89 = load i64, ptr %a88 %t90 = icmp slt i64 %t89, 0 - br i1 %t90, label %then9774, label %endif9776 -then9774: + br i1 %t90, label %then10300, label %endif10302 +then10300: store i64 0, ptr %a88 - br label %endif9776 -endif9776: + br label %endif10302 +endif10302: %t91 = call %S.json.Json @finch.json.new_object() store %S.json.Json %t91, ptr %a92 %t93 = load i64, ptr %a81 @@ -87959,55 +105432,75 @@ endif9776: %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 + call void @finch.json.Json.set(ptr %a92, { ptr, i64, i64 } { ptr @.str.6861, i64 5, i64 0 }, %S.json.Json %t97) + store %S.json.Json %t97, ptr %a98 + call void @finch.drop.S_json_Json(ptr %a98) + %t99 = call %S.json.Json @finch.lsp.num(i64 1) + call void @finch.json.Json.set(ptr %a92, { ptr, i64, i64 } { ptr @.str.6862, i64 8, i64 0 }, %S.json.Json %t99) + store %S.json.Json %t99, ptr %a100 + call void @finch.drop.S_json_Json(ptr %a100) + %t101 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.6864, i64 5, i64 0 }) + call void @finch.json.Json.set(ptr %a92, { ptr, i64, i64 } { ptr @.str.6863, i64 6, i64 0 }, %S.json.Json %t101) + store %S.json.Json %t101, ptr %a102 + call void @finch.drop.S_json_Json(ptr %a102) + %t103 = getelementptr inbounds %S.lsp.Analysis, ptr %a2, i32 0, i32 6 + %t104 = getelementptr inbounds %S.lsp.Diag, ptr %t103, i32 0, i32 4 + %t105 = load { ptr, i64, i64 }, ptr %t104 + %t106 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t105) + call void @finch.json.Json.set(ptr %a92, { ptr, i64, i64 } { ptr @.str.6865, i64 7, i64 0 }, %S.json.Json %t106) + store %S.json.Json %t106, ptr %a107 + call void @finch.drop.S_json_Json(ptr %a107) + %t108 = load %S.json.Json, ptr %a92 + call void @finch.json.Json.push(ptr %a64, %S.json.Json %t108) + %t109 = getelementptr inbounds { ptr, i64, i64 }, ptr %a53, i32 0, i32 1 + %t110 = load { ptr, i64, i64 }, ptr %a62 + store { ptr, i64, i64 } %t110, ptr %a111 + call void @finch_str_copy(ptr %a112, ptr %a111) + %t113 = load { ptr, i64, i64 }, ptr %a112 + %t114 = load i64, ptr %t109 + %t115 = add i64 %t114, 1 + call void @finch_arr_reserve(ptr %a53, i64 %t115, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t116 = load ptr, ptr %a53 + %t117 = getelementptr inbounds { ptr, i64, i64 }, ptr %t116, i64 %t114 + store { ptr, i64, i64 } %t113, ptr %t117 + store i64 %t115, ptr %t109 + call void @finch.drop.S_json_Json(ptr %a92) + br label %endif10296 +endif10296: + %t118 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t118, ptr %a119 + %t120 = load { ptr, i64, i64 }, ptr %a62 + %t121 = call { ptr, i64, i64 } @finch.lsp.pathToUri({ ptr, i64, i64 } %t120) + %t122 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t121) + store { ptr, i64, i64 } %t121, ptr %a123 + call void @finch_str_drop(ptr %a123) + call void @finch.json.Json.set(ptr %a119, { ptr, i64, i64 } { ptr @.str.6866, i64 3, i64 0 }, %S.json.Json %t122) + store %S.json.Json %t122, ptr %a124 + call void @finch.drop.S_json_Json(ptr %a124) + %t125 = load %S.json.Json, ptr %a64 + call void @finch.json.Json.set(ptr %a119, { ptr, i64, i64 } { ptr @.str.6867, i64 11, i64 0 }, %S.json.Json %t125) + %t126 = load %S.json.Json, ptr %a119 + call void @finch.lsp.notify({ ptr, i64, i64 } { ptr @.str.6868, i64 31, i64 0 }, %S.json.Json %t126) + call void @finch.drop.S_json_Json(ptr %a119) + call void @finch.drop.S_json_Json(ptr %a64) + br label %each.step10288 +each.step10288: + %t127 = load i64, ptr %a54 + %t128 = add i64 %t127, 1 + store i64 %t128, ptr %a54 + br label %each.cond10286 +each.end10289: + %t129 = load { ptr, i64, i64 }, ptr %a53 + %t130 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 5 + store { ptr, i64, i64 } %t129, ptr %a131 + call void @finch.copy.arr_str(ptr %a132, ptr %a131) + %t133 = load { ptr, i64, i64 }, ptr %a132 + %t134 = load { ptr, i64, i64 }, ptr %t130 + store { ptr, i64, i64 } %t133, ptr %t130 + store { ptr, i64, i64 } %t134, ptr %a135 + call void @finch.drop.arr_str(ptr %a135) + call void @finch.drop.arr_str(ptr %a53) + call void @finch.drop.arr_str(ptr %a13) ret void } @@ -88031,22 +105524,22 @@ entry: %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: + br label %for.cond10303 +for.cond10303: %t9 = load i64, ptr %a8 %t10 = icmp slt i64 %t9, %t7 - br i1 %t10, label %for.body9778, label %for.end9780 -for.body9778: + br i1 %t10, label %for.body10304, label %for.end10306 +for.body10304: %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) + br i1 %t15, label %range10307, label %inrange10308 +range10307: + call void @finch_panic_index(ptr @.str.6869, i64 397, i64 %t12, i64 %t14) unreachable -inrange9782: +inrange10308: %t16 = extractvalue { ptr, i64, i64 } %t13, 0 %t17 = getelementptr inbounds %S.lsp.Ref, ptr %t16, i64 %t12 %t18 = load %S.lsp.Ref, ptr %t17 @@ -88058,23 +105551,23 @@ inrange9782: %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: + br label %logic.from10309 +logic.from10309: + br i1 %t26, label %logic.rhs10310, label %logic.end10311 +logic.rhs10310: %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: + br label %logic.rend10312 +logic.rend10312: + br label %logic.end10311 +logic.end10311: + %t31 = phi i1 [ false, %logic.from10309 ], [ %t30, %logic.rend10312 ] + br label %logic.from10313 +logic.from10313: + br i1 %t31, label %logic.rhs10314, label %logic.end10315 +logic.rhs10314: %t32 = load i64, ptr %a4 %t33 = getelementptr inbounds %S.lsp.Ref, ptr %a22, i32 0, i32 2 %t34 = load i64, ptr %t33 @@ -88082,15 +105575,15 @@ logic.rhs9788: %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: + br label %logic.rend10316 +logic.rend10316: + br label %logic.end10315 +logic.end10315: + %t39 = phi i1 [ false, %logic.from10313 ], [ %t38, %logic.rend10316 ] + br label %logic.from10317 +logic.from10317: + br i1 %t39, label %logic.rhs10318, label %logic.end10319 +logic.rhs10318: %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 @@ -88098,23 +105591,25 @@ logic.rhs9792: 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: + br label %logic.rend10320 +logic.rend10320: + br label %logic.end10319 +logic.end10319: + %t47 = phi i1 [ false, %logic.from10317 ], [ %t46, %logic.rend10320 ] + br i1 %t47, label %then10321, label %endif10323 +then10321: %t48 = load i64, ptr %a8 + call void @finch.drop.S_lsp_Ref(ptr %a22) ret i64 %t48 -endif9797: - br label %for.step9779 -for.step9779: +endif10323: + call void @finch.drop.S_lsp_Ref(ptr %a22) + br label %for.step10305 +for.step10305: %t49 = load i64, ptr %a8 %t50 = add i64 %t49, 1 store i64 %t50, ptr %a8 - br label %for.cond9777 -for.end9780: + br label %for.cond10303 +for.end10306: ret i64 -1 } @@ -88126,9 +105621,9 @@ entry: %a4 = alloca i64, align 16 %a10 = alloca i64, align 16 %a15 = alloca %S.json.Json, align 16 + %a17 = 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 + %a30 = 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 @@ -88141,40 +105636,42 @@ entry: store i64 %t9, ptr %a10 %t11 = load i64, ptr %a10 %t12 = icmp slt i64 %t11, 0 - br i1 %t12, label %then9798, label %endif9800 -then9798: + br i1 %t12, label %then10324, label %endif10326 +then10324: %t13 = call %S.json.Json @finch.json.new_null() ret %S.json.Json %t13 -endif9800: +endif10326: %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) + %t16 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.6871, i64 8, i64 0 }) + call void @finch.json.Json.set(ptr %a15, { ptr, i64, i64 } { ptr @.str.6870, i64 4, i64 0 }, %S.json.Json %t16) + store %S.json.Json %t16, ptr %a17 + call void @finch.drop.S_json_Json(ptr %a17) + %t18 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 0 + %t19 = load i64, ptr %a10 + %t20 = load { ptr, i64, i64 }, ptr %t18 + %t21 = extractvalue { ptr, i64, i64 } %t20, 1 + %t22 = icmp uge i64 %t19, %t21 + br i1 %t22, label %range10327, label %inrange10328 +range10327: + call void @finch_panic_index(ptr @.str.6873, i64 412, i64 %t19, i64 %t21) 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() +inrange10328: + %t23 = extractvalue { ptr, i64, i64 } %t20, 0 + %t24 = getelementptr inbounds %S.lsp.Ref, ptr %t23, i64 %t19 + %t25 = getelementptr inbounds %S.lsp.Ref, ptr %t24, i32 0, i32 7 + %t26 = load { ptr, i64, i64 }, ptr %t25 + %t27 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t26) + call void @finch.json.Json.set(ptr %a15, { ptr, i64, i64 } { ptr @.str.6872, i64 5, i64 0 }, %S.json.Json %t27) 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 + call void @finch.drop.S_json_Json(ptr %a28) + %t29 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t29, ptr %a30 + %t31 = load %S.json.Json, ptr %a15 + call void @finch.json.Json.set(ptr %a30, { ptr, i64, i64 } { ptr @.str.6874, i64 8, i64 0 }, %S.json.Json %t31) + %t32 = load %S.json.Json, ptr %a30 + call void @finch.drop.S_json_Json(ptr %a15) + ret %S.json.Json %t32 } define internal %S.json.Json @finch.lsp.definitionAt(%S.lsp.Analysis %p0, { ptr, i64, i64 } %p1, i64 %p2, i64 %p3) { @@ -88188,7 +105685,8 @@ entry: %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 + %a44 = alloca { ptr, i64, i64 }, align 16 + %a45 = 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 @@ -88202,46 +105700,46 @@ entry: 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: + br label %logic.from10329 +logic.from10329: + br i1 %t12, label %logic.end10331, label %logic.rhs10330 +logic.rhs10330: %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) + br i1 %t17, label %range10332, label %inrange10333 +range10332: + call void @finch_panic_index(ptr @.str.6875, i64 420, i64 %t14, i64 %t16) unreachable -inrange9807: +inrange10333: %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: + br label %logic.rend10334 +logic.rend10334: + br label %logic.end10331 +logic.end10331: + %t24 = phi i1 [ true, %logic.from10329 ], [ %t23, %logic.rend10334 ] + br i1 %t24, label %then10335, label %endif10337 +then10335: %t25 = call %S.json.Json @finch.json.new_null() ret %S.json.Json %t25 -endif9811: +endif10337: %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) + br i1 %t30, label %range10338, label %inrange10339 +range10338: + call void @finch_panic_index(ptr @.str.6876, i64 423, i64 %t27, i64 %t29) unreachable -inrange9813: +inrange10339: %t31 = extractvalue { ptr, i64, i64 } %t28, 0 %t32 = getelementptr inbounds %S.lsp.Ref, ptr %t31, i64 %t27 %t33 = load %S.lsp.Ref, ptr %t32 @@ -88255,22 +105753,26 @@ inrange9813: %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 + store { ptr, i64, i64 } %t42, ptr %a44 + call void @finch_str_drop(ptr %a44) + call void @finch.json.Json.set(ptr %a39, { ptr, i64, i64 } { ptr @.str.6877, i64 3, i64 0 }, %S.json.Json %t43) + store %S.json.Json %t43, ptr %a45 + call void @finch.drop.S_json_Json(ptr %a45) + %t46 = getelementptr inbounds %S.lsp.Ref, ptr %a37, i32 0, i32 5 + %t47 = load i64, ptr %t46 + %t48 = sub i64 %t47, 1 + %t49 = getelementptr inbounds %S.lsp.Ref, ptr %a37, i32 0, i32 6 + %t50 = load i64, ptr %t49 + %t51 = sub i64 %t50, 1 + %t52 = getelementptr inbounds %S.lsp.Ref, ptr %a37, i32 0, i32 6 + %t53 = load i64, ptr %t52 + %t54 = sub i64 %t53, 1 + %t55 = call %S.json.Json @finch.lsp.range(i64 %t48, i64 %t51, i64 %t54) + call void @finch.json.Json.set(ptr %a39, { ptr, i64, i64 } { ptr @.str.6878, i64 5, i64 0 }, %S.json.Json %t55) + store %S.json.Json %t55, ptr %a56 + call void @finch.drop.S_json_Json(ptr %a56) + %t57 = load %S.json.Json, ptr %a39 + call void @finch.drop.S_lsp_Ref(ptr %a37) ret %S.json.Json %t57 } @@ -88293,30 +105795,33 @@ entry: %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 + %a44 = alloca { ptr, i64, i64 }, align 16 + %a47 = alloca { ptr, i64, i64 }, align 16 + %a57 = alloca %S.json.Json, align 16 + %a61 = alloca i64, align 16 + %a69 = alloca %S.lsp.StructRec, align 16 + %a73 = alloca { ptr, i64, i64 }, align 16 + %a74 = alloca { ptr, i64, i64 }, align 16 + %a91 = alloca %S.json.Json, align 16 + %a95 = alloca i64, align 16 + %a103 = alloca %S.lsp.EnumRec, align 16 + %a107 = alloca { ptr, i64, i64 }, align 16 + %a108 = alloca { ptr, i64, i64 }, align 16 + %a125 = 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: + br label %each.cond10340 +each.cond10340: %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: + br i1 %t10, label %each.body10341, label %each.end10343 +each.body10341: %t11 = load ptr, ptr %t5 %t12 = getelementptr inbounds %S.lsp.FnRec, ptr %t11, i64 %t9 %t13 = load %S.lsp.FnRec, ptr %t12 @@ -88328,10 +105833,10 @@ each.body9815: 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: + br i1 %t21, label %then10344, label %endif10346 +then10344: + br label %each.step10342 +endif10346: store i64 12, ptr %a22 %t23 = getelementptr inbounds %S.lsp.FnRec, ptr %a14, i32 0, i32 1 %t24 = load { ptr, i64, i64 }, ptr %t23 @@ -88343,13 +105848,13 @@ endif9820: %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: + br i1 %t32, label %then10347, label %endif10349 +then10347: 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 + store { ptr, i64, i64 } { ptr @.str.6879, 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 @@ -88357,126 +105862,135 @@ then9821: 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 + store { ptr, i64, i64 } %t38, ptr %a44 + call void @finch_str_drop(ptr %a44) + %t45 = load { ptr, i64, i64 }, ptr %a41 + %t46 = load { ptr, i64, i64 }, ptr %a28 + store { ptr, i64, i64 } %t45, ptr %a28 + store { ptr, i64, i64 } %t46, ptr %a47 + call void @finch_str_drop(ptr %a47) + br label %endif10349 +endif10349: + %t48 = load { ptr, i64, i64 }, ptr %a28 + %t49 = load i64, ptr %a22 + %t50 = getelementptr inbounds %S.lsp.FnRec, ptr %a14, i32 0, i32 4 + %t51 = load i64, ptr %t50 + %t52 = getelementptr inbounds %S.lsp.FnRec, ptr %a14, i32 0, i32 5 + %t53 = load i64, ptr %t52 + %t54 = getelementptr inbounds %S.lsp.FnRec, ptr %a14, i32 0, i32 6 + %t55 = load i64, ptr %t54 + %t56 = call %S.json.Json @finch.lsp.symbol({ ptr, i64, i64 } %t48, i64 %t49, i64 %t51, i64 %t53, i64 %t55) + call void @finch.json.Json.push(ptr %a4, %S.json.Json %t56) + store %S.json.Json %t56, ptr %a57 + call void @finch.drop.S_json_Json(ptr %a57) + call void @finch_str_drop(ptr %a28) + br label %each.step10342 +each.step10342: + %t58 = load i64, ptr %a6 + %t59 = add i64 %t58, 1 + store i64 %t59, ptr %a6 + br label %each.cond10340 +each.end10343: + %t60 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 3 + store i64 0, ptr %a61 + br label %each.cond10350 +each.cond10350: + %t62 = getelementptr inbounds { ptr, i64, i64 }, ptr %t60, i32 0, i32 1 + %t63 = load i64, ptr %t62 + %t64 = load i64, ptr %a61 + %t65 = icmp slt i64 %t64, %t63 + br i1 %t65, label %each.body10351, label %each.end10353 +each.body10351: + %t66 = load ptr, ptr %t60 + %t67 = getelementptr inbounds %S.lsp.StructRec, ptr %t66, i64 %t64 + %t68 = load %S.lsp.StructRec, ptr %t67 + store %S.lsp.StructRec %t68, ptr %a69 + %t70 = getelementptr inbounds %S.lsp.StructRec, ptr %a69, i32 0, i32 2 + %t71 = load { ptr, i64, i64 }, ptr %t70 + %t72 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t71, ptr %a73 + store { ptr, i64, i64 } %t72, ptr %a74 + %t75 = call i32 @finch_str_eq(ptr %a73, ptr %a74) + %t76 = icmp ne i32 %t75, 0 + br i1 %t76, label %then10354, label %endif10356 +then10354: + %t77 = getelementptr inbounds %S.lsp.StructRec, ptr %a69, i32 0, i32 1 + %t78 = load { ptr, i64, i64 }, ptr %t77 + %t79 = getelementptr inbounds %S.lsp.StructRec, ptr %a69, 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 + %t81 = getelementptr inbounds %S.lsp.StructRec, ptr %a69, i32 0, i32 4 + %t82 = load i64, ptr %t81 + %t83 = getelementptr inbounds %S.lsp.StructRec, ptr %a69, i32 0, i32 3 + %t84 = load i64, ptr %t83 + %t85 = getelementptr inbounds %S.lsp.StructRec, ptr %a69, i32 0, i32 5 + %t86 = getelementptr inbounds { ptr, i64, i64 }, ptr %t85, i32 0, i32 1 + %t87 = load i64, ptr %t86 + %t88 = add i64 %t84, %t87 + %t89 = add i64 %t88, 1 + %t90 = call %S.json.Json @finch.lsp.symbol({ ptr, i64, i64 } %t78, i64 23, i64 %t80, i64 %t82, i64 %t89) + call void @finch.json.Json.push(ptr %a4, %S.json.Json %t90) + store %S.json.Json %t90, ptr %a91 + call void @finch.drop.S_json_Json(ptr %a91) + br label %endif10356 +endif10356: + br label %each.step10352 +each.step10352: + %t92 = load i64, ptr %a61 + %t93 = add i64 %t92, 1 + store i64 %t93, ptr %a61 + br label %each.cond10350 +each.end10353: + %t94 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 4 + store i64 0, ptr %a95 + br label %each.cond10357 +each.cond10357: + %t96 = getelementptr inbounds { ptr, i64, i64 }, ptr %t94, i32 0, i32 1 + %t97 = load i64, ptr %t96 + %t98 = load i64, ptr %a95 + %t99 = icmp slt i64 %t98, %t97 + br i1 %t99, label %each.body10358, label %each.end10360 +each.body10358: + %t100 = load ptr, ptr %t94 + %t101 = getelementptr inbounds %S.lsp.EnumRec, ptr %t100, i64 %t98 + %t102 = load %S.lsp.EnumRec, ptr %t101 + store %S.lsp.EnumRec %t102, ptr %a103 + %t104 = getelementptr inbounds %S.lsp.EnumRec, ptr %a103, i32 0, i32 2 + %t105 = load { ptr, i64, i64 }, ptr %t104 + %t106 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t105, ptr %a107 + store { ptr, i64, i64 } %t106, ptr %a108 + %t109 = call i32 @finch_str_eq(ptr %a107, ptr %a108) + %t110 = icmp ne i32 %t109, 0 + br i1 %t110, label %then10361, label %endif10363 +then10361: + %t111 = getelementptr inbounds %S.lsp.EnumRec, ptr %a103, i32 0, i32 1 + %t112 = load { ptr, i64, i64 }, ptr %t111 + %t113 = getelementptr inbounds %S.lsp.EnumRec, ptr %a103, i32 0, i32 3 + %t114 = load i64, ptr %t113 + %t115 = getelementptr inbounds %S.lsp.EnumRec, ptr %a103, i32 0, i32 4 %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 + %t117 = getelementptr inbounds %S.lsp.EnumRec, ptr %a103, i32 0, i32 3 + %t118 = load i64, ptr %t117 + %t119 = getelementptr inbounds %S.lsp.EnumRec, ptr %a103, i32 0, i32 5 + %t120 = getelementptr inbounds { ptr, i64, i64 }, ptr %t119, i32 0, i32 1 + %t121 = load i64, ptr %t120 + %t122 = add i64 %t118, %t121 + %t123 = add i64 %t122, 1 + %t124 = call %S.json.Json @finch.lsp.symbol({ ptr, i64, i64 } %t112, i64 10, i64 %t114, i64 %t116, i64 %t123) + call void @finch.json.Json.push(ptr %a4, %S.json.Json %t124) + store %S.json.Json %t124, ptr %a125 + call void @finch.drop.S_json_Json(ptr %a125) + br label %endif10363 +endif10363: + br label %each.step10359 +each.step10359: + %t126 = load i64, ptr %a95 + %t127 = add i64 %t126, 1 + store i64 %t127, ptr %a95 + br label %each.cond10357 +each.end10360: + %t128 = load %S.json.Json, ptr %a4 + ret %S.json.Json %t128 } define internal %S.json.Json @finch.lsp.symbol({ ptr, i64, i64 } %p0, i64 %p1, i64 %p2, i64 %p3, i64 %p4) { @@ -88487,9 +106001,12 @@ entry: %a4 = alloca i64, align 16 %a5 = alloca i64, align 16 %a7 = alloca %S.json.Json, align 16 + %a10 = 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 + %a15 = alloca %S.json.Json, align 16 + %a19 = alloca %S.json.Json, align 16 + %a22 = alloca %S.json.Json, align 16 + %a31 = alloca %S.json.Json, align 16 store { ptr, i64, i64 } %p0, ptr %a1 store i64 %p1, ptr %a2 store i64 %p2, ptr %a3 @@ -88499,34 +106016,42 @@ entry: 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() + call void @finch.json.Json.set(ptr %a7, { ptr, i64, i64 } { ptr @.str.6880, i64 4, i64 0 }, %S.json.Json %t9) + store %S.json.Json %t9, ptr %a10 + call void @finch.drop.S_json_Json(ptr %a10) + %t11 = load i64, ptr %a2 + %t12 = call %S.json.Json @finch.lsp.num(i64 %t11) + call void @finch.json.Json.set(ptr %a7, { ptr, i64, i64 } { ptr @.str.6881, i64 4, i64 0 }, %S.json.Json %t12) 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 + call void @finch.drop.S_json_Json(ptr %a13) + %t14 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t14, ptr %a15 + %t16 = load i64, ptr %a3 + %t17 = sub i64 %t16, 1 %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 + call void @finch.json.Json.set(ptr %a15, { ptr, i64, i64 } { ptr @.str.6882, i64 5, i64 0 }, %S.json.Json %t18) + store %S.json.Json %t18, ptr %a19 + call void @finch.drop.S_json_Json(ptr %a19) + %t20 = load i64, ptr %a5 + %t21 = call %S.json.Json @finch.lsp.position(i64 %t20, i64 0) + call void @finch.json.Json.set(ptr %a15, { ptr, i64, i64 } { ptr @.str.6883, i64 3, i64 0 }, %S.json.Json %t21) + store %S.json.Json %t21, ptr %a22 + call void @finch.drop.S_json_Json(ptr %a22) + %t23 = load %S.json.Json, ptr %a15 + call void @finch.json.Json.set(ptr %a7, { ptr, i64, i64 } { ptr @.str.6884, i64 5, i64 0 }, %S.json.Json %t23) + %t24 = load i64, ptr %a3 %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 + %t26 = load i64, ptr %a4 + %t27 = sub i64 %t26, 1 + %t28 = load i64, ptr %a4 + %t29 = sub i64 %t28, 1 + %t30 = call %S.json.Json @finch.lsp.range(i64 %t25, i64 %t27, i64 %t29) + call void @finch.json.Json.set(ptr %a7, { ptr, i64, i64 } { ptr @.str.6885, i64 14, i64 0 }, %S.json.Json %t30) + store %S.json.Json %t30, ptr %a31 + call void @finch.drop.S_json_Json(ptr %a31) + %t32 = load %S.json.Json, ptr %a7 + call void @finch.drop.S_json_Json(ptr %a15) + ret %S.json.Json %t32 } define internal %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %p0, i64 %p1, { ptr, i64, i64 } %p2, { ptr, i64, i64 } %p3) { @@ -88536,9 +106061,12 @@ entry: %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 + %a9 = alloca %S.json.Json, align 16 + %a12 = alloca %S.json.Json, align 16 + %a18 = alloca %S.json.Json, align 16 + %a23 = alloca %S.json.Json, align 16 + %a25 = alloca %S.json.Json, align 16 + %a28 = 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 @@ -88547,41 +106075,49 @@ entry: 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 + call void @finch.json.Json.set(ptr %a6, { ptr, i64, i64 } { ptr @.str.6886, i64 5, i64 0 }, %S.json.Json %t8) + store %S.json.Json %t8, ptr %a9 + call void @finch.drop.S_json_Json(ptr %a9) + %t10 = load i64, ptr %a2 + %t11 = call %S.json.Json @finch.lsp.num(i64 %t10) + call void @finch.json.Json.set(ptr %a6, { ptr, i64, i64 } { ptr @.str.6887, i64 4, i64 0 }, %S.json.Json %t11) + store %S.json.Json %t11, ptr %a12 + call void @finch.drop.S_json_Json(ptr %a12) + %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 + %t14 = load i64, ptr %t13 + %t15 = icmp sgt i64 %t14, 0 + br i1 %t15, label %then10364, label %endif10366 +then10364: + %t16 = load { ptr, i64, i64 }, ptr %a3 + %t17 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t16) + call void @finch.json.Json.set(ptr %a6, { ptr, i64, i64 } { ptr @.str.6888, i64 6, i64 0 }, %S.json.Json %t17) + store %S.json.Json %t17, ptr %a18 + call void @finch.drop.S_json_Json(ptr %a18) + br label %endif10366 +endif10366: + %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 + %t20 = load i64, ptr %t19 + %t21 = icmp sgt i64 %t20, 0 + br i1 %t21, label %then10367, label %endif10369 +then10367: + %t22 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t22, ptr %a23 + %t24 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.6890, i64 8, i64 0 }) + call void @finch.json.Json.set(ptr %a23, { ptr, i64, i64 } { ptr @.str.6889, i64 4, i64 0 }, %S.json.Json %t24) + store %S.json.Json %t24, ptr %a25 + call void @finch.drop.S_json_Json(ptr %a25) + %t26 = load { ptr, i64, i64 }, ptr %a4 + %t27 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t26) + call void @finch.json.Json.set(ptr %a23, { ptr, i64, i64 } { ptr @.str.6891, i64 5, i64 0 }, %S.json.Json %t27) + store %S.json.Json %t27, ptr %a28 + call void @finch.drop.S_json_Json(ptr %a28) + %t29 = load %S.json.Json, ptr %a23 + call void @finch.json.Json.set(ptr %a6, { ptr, i64, i64 } { ptr @.str.6892, i64 13, i64 0 }, %S.json.Json %t29) + call void @finch.drop.S_json_Json(ptr %a23) + br label %endif10369 +endif10369: + %t30 = load %S.json.Json, ptr %a6 + ret %S.json.Json %t30 } define internal i1 @finch.lsp.isWordChar(i8 %p0) { @@ -88590,72 +106126,72 @@ entry: 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: + br label %logic.from10370 +logic.from10370: + br i1 %t3, label %logic.rhs10371, label %logic.end10372 +logic.rhs10371: %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: + br label %logic.rend10373 +logic.rend10373: + br label %logic.end10372 +logic.end10372: + %t6 = phi i1 [ false, %logic.from10370 ], [ %t5, %logic.rend10373 ] + br label %logic.from10374 +logic.from10374: + br i1 %t6, label %logic.end10376, label %logic.rhs10375 +logic.rhs10375: %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: + br label %logic.from10377 +logic.from10377: + br i1 %t8, label %logic.rhs10378, label %logic.end10379 +logic.rhs10378: %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: + br label %logic.rend10380 +logic.rend10380: + br label %logic.end10379 +logic.end10379: + %t11 = phi i1 [ false, %logic.from10377 ], [ %t10, %logic.rend10380 ] + br label %logic.rend10381 +logic.rend10381: + br label %logic.end10376 +logic.end10376: + %t12 = phi i1 [ true, %logic.from10374 ], [ %t11, %logic.rend10381 ] + br label %logic.from10382 +logic.from10382: + br i1 %t12, label %logic.end10384, label %logic.rhs10383 +logic.rhs10383: %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: + br label %logic.from10385 +logic.from10385: + br i1 %t14, label %logic.rhs10386, label %logic.end10387 +logic.rhs10386: %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: + br label %logic.rend10388 +logic.rend10388: + br label %logic.end10387 +logic.end10387: + %t17 = phi i1 [ false, %logic.from10385 ], [ %t16, %logic.rend10388 ] + br label %logic.rend10389 +logic.rend10389: + br label %logic.end10384 +logic.end10384: + %t18 = phi i1 [ true, %logic.from10382 ], [ %t17, %logic.rend10389 ] + br label %logic.from10390 +logic.from10390: + br i1 %t18, label %logic.end10392, label %logic.rhs10391 +logic.rhs10391: %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 ] + br label %logic.rend10393 +logic.rend10393: + br label %logic.end10392 +logic.end10392: + %t21 = phi i1 [ true, %logic.from10390 ], [ %t20, %logic.rend10393 ] ret i1 %t21 } @@ -88669,17 +106205,18 @@ entry: %a15 = alloca { ptr, i64, i64 }, align 16 %a16 = alloca { ptr, i64, i64 }, align 16 %a17 = alloca { ptr, i64, i64 }, align 16 + %a30 = alloca %S.json.Json, 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: + br label %each.cond10394 +each.cond10394: %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: + br i1 %t7, label %each.body10395, label %each.end10397 +each.body10395: %t8 = load ptr, ptr %a2 %t9 = getelementptr inbounds %S.docs.Doc, ptr %t8, i64 %t6 %t10 = load %S.docs.Doc, ptr %t9 @@ -88688,21 +106225,21 @@ each.body9869: %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 + store { ptr, i64, i64 } { ptr @.str.6894, 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: + br i1 %t19, label %then10398, label %endif10400 +then10398: store i64 5, ptr %a12 - br label %endif9874 -endif9874: + br label %endif10400 +endif10400: %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) + br i1 %t21, label %panic10401, label %ok10402 +panic10401: + call void @finch_panic(ptr @.str.6895, i64 497, ptr @.str.6896) unreachable -ok9876: +ok10402: %t22 = getelementptr inbounds %S.docs.Doc, ptr %a11, i32 0, i32 0 %t23 = load { ptr, i64, i64 }, ptr %t22 %t24 = load i64, ptr %a12 @@ -88712,13 +106249,15 @@ ok9876: %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: + store %S.json.Json %t29, ptr %a30 + call void @finch.drop.S_json_Json(ptr %a30) + br label %each.step10396 +each.step10396: + %t31 = load i64, ptr %a3 + %t32 = add i64 %t31, 1 + store i64 %t32, ptr %a3 + br label %each.cond10394 +each.end10397: ret void } @@ -88737,8 +106276,7 @@ entry: %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 + %a47 = 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 @@ -88746,14 +106284,14 @@ entry: 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: + br label %each.cond10403 +each.cond10403: %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: + br i1 %t11, label %each.body10404, label %each.end10406 +each.body10404: %t12 = load ptr, ptr %t6 %t13 = getelementptr inbounds %S.lsp.VarRec, ptr %t12, i64 %t10 %t14 = load %S.lsp.VarRec, ptr %t13 @@ -88765,37 +106303,37 @@ each.body9878: 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: + br label %logic.from10407 +logic.from10407: + br i1 %t22, label %logic.rhs10408, label %logic.end10409 +logic.rhs10408: %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: + br label %logic.rend10410 +logic.rend10410: + br label %logic.end10409 +logic.end10409: + %t27 = phi i1 [ false, %logic.from10407 ], [ %t26, %logic.rend10410 ] + br label %logic.from10411 +logic.from10411: + br i1 %t27, label %logic.rhs10412, label %logic.end10413 +logic.rhs10412: %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: + br label %logic.rend10414 +logic.rend10414: + br label %logic.end10413 +logic.end10413: + %t33 = phi i1 [ false, %logic.from10411 ], [ %t32, %logic.rend10414 ] + br label %logic.from10415 +logic.from10415: + br i1 %t33, label %logic.rhs10416, label %logic.end10417 +logic.rhs10416: %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 @@ -88803,32 +106341,40 @@ logic.rhs9890: 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: + br label %logic.rend10418 +logic.rend10418: + br label %logic.end10417 +logic.end10417: + %t41 = phi i1 [ false, %logic.from10415 ], [ %t40, %logic.rend10418 ] + br i1 %t41, label %then10419, label %endif10421 +then10419: %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 + %t46 = load %S.lsp.VarRec, ptr %a5 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 + store %S.lsp.VarRec %t46, ptr %a47 + call void @finch.drop.S_lsp_VarRec(ptr %a47) + br label %endif10421 +endif10421: + br label %each.step10405 +each.step10405: + %t48 = load i64, ptr %a7 + %t49 = add i64 %t48, 1 + store i64 %t49, ptr %a7 + br label %each.cond10403 +each.end10406: + %t50 = load %S.lsp.VarRec, ptr %a5 + ret %S.lsp.VarRec %t50 +} + +define internal void @finch.drop.S_lsp_Names(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.lsp.Names, ptr %a, i32 0, i32 0 + call void @finch.drop.arr_str(ptr %t1) + ret void } define internal %S.json.Json @finch.lsp.completionAt(%S.lsp.Analysis %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, i64 %p3, i64 %p4) { @@ -88857,114 +106403,144 @@ entry: %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 + %a118 = alloca { ptr, i64, i64 }, align 16 + %a122 = alloca i64, align 16 + %a125 = alloca i64, align 16 + %a130 = alloca { ptr, i64, i64 }, align 16 + %a131 = alloca { ptr, i64, i64 }, align 16 + %a138 = alloca i64, align 16 + %a146 = alloca %S.lsp.FnRec, align 16 + %a150 = alloca { ptr, i64, i64 }, align 16 + %a151 = alloca { ptr, i64, i64 }, align 16 + %a164 = alloca %S.json.Json, align 16 + %a168 = alloca i64, align 16 + %a176 = alloca %S.lsp.StructRec, align 16 + %a180 = alloca { ptr, i64, i64 }, align 16 + %a181 = 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 %S.json.Json, align 16 + %a198 = alloca i64, align 16 + %a206 = alloca %S.lsp.EnumRec, align 16 + %a210 = alloca { ptr, i64, i64 }, align 16 + %a211 = alloca { ptr, i64, i64 }, align 16 + %a218 = alloca { ptr, i64, i64 }, align 16 + %a219 = alloca { ptr, i64, i64 }, align 16 + %a220 = alloca { ptr, i64, i64 }, align 16 + %a223 = alloca { ptr, i64, i64 }, align 16 + %a224 = alloca %S.json.Json, align 16 + %a230 = alloca i64, align 16 + %a238 = alloca %S.lsp.EnumRec, align 16 + %a242 = alloca { ptr, i64, i64 }, align 16 + %a243 = alloca { ptr, i64, i64 }, align 16 + %a252 = alloca { ptr, i64, i64 }, align 16 + %a253 = alloca { ptr, i64, i64 }, align 16 + %a255 = alloca %S.lsp.VarRec, align 16 + %a257 = alloca { ptr, i64, i64 }, align 16 + %a261 = alloca 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 + %a273 = alloca { ptr, i64, i64 }, align 16 + %a274 = alloca { ptr, i64, i64 }, align 16 + %a275 = 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 + %a281 = alloca { ptr, i64, i64 }, align 16 + %a284 = alloca { ptr, i64, i64 }, align 16 + %a285 = alloca %S.json.Json, 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 %S.lsp.VarRec, align 16 + %a302 = 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 %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 + %a321 = alloca { ptr, i64, i64 }, align 16 + %a322 = 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 + %a335 = alloca { ptr, i64, i64 }, align 16 + %a336 = alloca { ptr, i64, i64 }, align 16 + %a337 = alloca { ptr, i64, i64 }, align 16 + %a342 = alloca { ptr, i64, i64 }, align 16 + %a343 = alloca { ptr, i64, i64 }, align 16 + %a349 = 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 - %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 + %a357 = alloca { ptr, i64, i64 }, align 16 + %a359 = alloca { ptr, i64, i64 }, align 16 + %a360 = 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 + %a372 = alloca { ptr, i64, i64 }, align 16 + %a374 = alloca { ptr, i64, i64 }, align 16 + %a375 = alloca { ptr, i64, i64 }, align 16 + %a377 = alloca { ptr, i64, i64 }, align 16 + %a379 = alloca i64, align 16 + %a387 = alloca %S.lsp.StructRec, align 16 + %a391 = alloca { ptr, i64, i64 }, align 16 + %a392 = alloca { ptr, i64, i64 }, align 16 + %a398 = alloca i64, align 16 + %a418 = alloca %S.json.Json, align 16 + %a424 = alloca i64, align 16 + %a432 = alloca %S.lsp.FnRec, align 16 + %a436 = alloca { ptr, i64, i64 }, align 16 + %a437 = alloca { ptr, i64, i64 }, align 16 + %a445 = alloca %S.json.Json, align 16 + %a450 = alloca %S.lsp.Names, align 16 + %a452 = alloca i64, align 16 + %a460 = alloca %S.lsp.VarRec, align 16 + %a474 = alloca { ptr, i64, i64 }, align 16 + %a475 = alloca { ptr, i64, i64 }, align 16 + %a488 = alloca %S.json.Json, align 16 + %a492 = alloca i64, align 16 + %a500 = alloca %S.lsp.FnRec, align 16 + %a507 = alloca { ptr, i64, i64 }, align 16 + %a508 = alloca { ptr, i64, i64 }, align 16 + %a521 = alloca %S.json.Json, align 16 + %a525 = alloca i64, align 16 + %a533 = alloca %S.lsp.StructRec, align 16 + %a536 = alloca { ptr, i64, i64 }, align 16 + %a537 = alloca { ptr, i64, i64 }, align 16 + %a548 = alloca { ptr, i64, i64 }, align 16 + %a549 = 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 - %a561 = alloca i64, align 16 + %a554 = alloca %S.json.Json, align 16 + %a558 = alloca i64, align 16 + %a566 = alloca %S.lsp.EnumRec, 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 + %a570 = alloca { ptr, i64, i64 }, align 16 + %a581 = alloca { ptr, i64, i64 }, align 16 + %a582 = alloca { ptr, i64, i64 }, align 16 + %a583 = alloca { ptr, i64, i64 }, align 16 + %a586 = alloca { ptr, i64, i64 }, align 16 + %a587 = alloca %S.json.Json, align 16 + %a591 = alloca i64, align 16 + %a599 = alloca { ptr, i64, i64 }, align 16 + %a604 = alloca %S.json.Json, align 16 + %a608 = alloca { ptr, i64, i64 }, align 16 + %a609 = alloca i64, align 16 + %a617 = alloca %S.docs.Doc, align 16 + %a628 = alloca %S.json.Json, align 16 + %a632 = alloca { ptr, i64, i64 }, align 16 + %a633 = alloca i64, align 16 + %a641 = alloca { ptr, i64, i64 }, align 16 + %a646 = alloca %S.json.Json, align 16 + %a650 = alloca { ptr, i64, i64 }, align 16 + %a651 = alloca i64, align 16 + %a659 = alloca { ptr, i64, i64 }, align 16 + %a664 = 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 @@ -88983,1085 +106559,1170 @@ entry: %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: + br i1 %t18, label %then10422, label %endif10424 +then10422: %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: + br label %endif10424 +endif10424: %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) + call void @finch_str_sub(ptr %a23, ptr %a22, i64 0, i64 %t24, ptr @.str.6897, 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: + br label %while.cond10425 +while.cond10425: %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: + br label %logic.from10428 +logic.from10428: + br i1 %t31, label %logic.rhs10429, label %logic.end10430 +logic.rhs10429: %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) + br i1 %t36, label %range10431, label %inrange10432 +range10431: + call void @finch_panic_index(ptr @.str.6898, i64 522, i64 %t33, i64 %t35) unreachable -inrange9906: +inrange10432: %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: + br label %logic.rend10433 +logic.rend10433: + br label %logic.end10430 +logic.end10430: + %t41 = phi i1 [ false, %logic.from10428 ], [ %t40, %logic.rend10433 ] + br i1 %t41, label %while.body10426, label %while.end10427 +while.body10426: %t42 = load i64, ptr %a29 %t43 = sub i64 %t42, 1 store i64 %t43, ptr %a29 - br label %while.cond9899 -while.end9901: + br label %while.cond10425 +while.end10427: %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: + br label %logic.from10434 +logic.from10434: + br i1 %t45, label %logic.rhs10435, label %logic.end10436 +logic.rhs10435: %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) + br i1 %t50, label %range10437, label %inrange10438 +range10437: + call void @finch_panic_index(ptr @.str.6899, i64 525, i64 %t47, i64 %t49) unreachable -inrange9912: +inrange10438: %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 ] + br label %logic.rend10439 +logic.rend10439: + br label %logic.end10436 +logic.end10436: + %t55 = phi i1 [ false, %logic.from10434 ], [ %t54, %logic.rend10439 ] store i1 %t55, ptr %a56 %t57 = load i1, ptr %a56 - br i1 %t57, label %then9914, label %endif9916 -then9914: + br i1 %t57, label %then10440, label %endif10442 +then10440: %t58 = load i64, ptr %a29 %t59 = sub i64 %t58, 1 store i64 %t59, ptr %a60 - br label %while.cond9917 -while.cond9917: + br label %while.cond10443 +while.cond10443: %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: + br label %logic.from10446 +logic.from10446: + br i1 %t62, label %logic.rhs10447, label %logic.end10448 +logic.rhs10447: %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) + br i1 %t67, label %range10449, label %inrange10450 +range10449: + call void @finch_panic_index(ptr @.str.6900, i64 528, i64 %t64, i64 %t66) unreachable -inrange9924: +inrange10450: %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: + br label %logic.from10451 +logic.from10451: + br i1 %t71, label %logic.end10453, label %logic.rhs10452 +logic.rhs10452: %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) + br i1 %t76, label %range10454, label %inrange10455 +range10454: + call void @finch_panic_index(ptr @.str.6901, i64 528, i64 %t73, i64 %t75) unreachable -inrange9929: +inrange10455: %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: + br label %logic.rend10456 +logic.rend10456: + br label %logic.end10453 +logic.end10453: + %t81 = phi i1 [ true, %logic.from10451 ], [ %t80, %logic.rend10456 ] + br label %logic.from10457 +logic.from10457: + br i1 %t81, label %logic.end10459, label %logic.rhs10458 +logic.rhs10458: %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) + br i1 %t86, label %range10460, label %inrange10461 +range10460: + call void @finch_panic_index(ptr @.str.6902, i64 528, i64 %t83, i64 %t85) unreachable -inrange9935: +inrange10461: %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: + br label %logic.rend10462 +logic.rend10462: + br label %logic.end10459 +logic.end10459: + %t91 = phi i1 [ true, %logic.from10457 ], [ %t90, %logic.rend10462 ] + br label %logic.rend10463 +logic.rend10463: + br label %logic.end10448 +logic.end10448: + %t92 = phi i1 [ false, %logic.from10446 ], [ %t91, %logic.rend10463 ] + br i1 %t92, label %while.body10444, label %while.end10445 +while.body10444: %t93 = load i64, ptr %a60 %t94 = sub i64 %t93, 1 store i64 %t94, ptr %a60 - br label %while.cond9917 -while.end9919: + br label %while.cond10443 +while.end10445: %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) + call void @finch_str_sub(ptr %a97, ptr %a96, i64 %t98, i64 %t100, ptr @.str.6903, 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 + store { ptr, i64, i64 } { ptr @.str.6905, 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: + br i1 %t111, label %then10464, label %endif10466 +then10464: %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) + call void @finch_str_sub(ptr %a114, ptr %a113, i64 0, i64 %t115, ptr @.str.6906, i64 535) %t116 = load { ptr, i64, i64 }, ptr %a114 + %t117 = load { ptr, i64, i64 }, ptr %a102 store { ptr, i64, i64 } %t116, ptr %a102 + store { ptr, i64, i64 } %t117, ptr %a118 + call void @finch_str_drop(ptr %a118) 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 + br label %endif10466 +endif10466: + %t119 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 5 + %t120 = getelementptr inbounds { ptr, i64, i64 }, ptr %t119, i32 0, i32 1 + %t121 = load { ptr, i64, i64 }, ptr %a102 + store i64 -1, ptr %a122 + %t123 = load i64, ptr %t120 + %t124 = load ptr, ptr %t119 + store i64 0, ptr %a125 + br label %find.cond10467 +find.cond10467: + %t126 = load i64, ptr %a125 + %t127 = icmp slt i64 %t126, %t123 + br i1 %t127, label %find.body10468, label %find.end10471 +find.body10468: + %t128 = getelementptr inbounds { ptr, i64, i64 }, ptr %t124, i64 %t126 + %t129 = load { ptr, i64, i64 }, ptr %t128 + store { ptr, i64, i64 } %t129, ptr %a130 + store { ptr, i64, i64 } %t121, ptr %a131 + %t132 = call i32 @finch_str_eq(ptr %a130, ptr %a131) + %t133 = icmp ne i32 %t132, 0 + br i1 %t133, label %find.hit10469, label %find.next10470 +find.hit10469: + store i64 %t126, ptr %a122 + br label %find.end10471 +find.next10470: + %t134 = add i64 %t126, 1 + store i64 %t134, ptr %a125 + br label %find.cond10467 +find.end10471: + %t135 = load i64, ptr %a122 + %t136 = icmp sge i64 %t135, 0 + br i1 %t136, label %then10472, label %endif10474 +then10472: + %t137 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 2 + store i64 0, ptr %a138 + br label %each.cond10475 +each.cond10475: + %t139 = getelementptr inbounds { ptr, i64, i64 }, ptr %t137, i32 0, i32 1 + %t140 = load i64, ptr %t139 + %t141 = load i64, ptr %a138 + %t142 = icmp slt i64 %t141, %t140 + br i1 %t142, label %each.body10476, label %each.end10478 +each.body10476: + %t143 = load ptr, ptr %t137 + %t144 = getelementptr inbounds %S.lsp.FnRec, ptr %t143, i64 %t141 + %t145 = load %S.lsp.FnRec, ptr %t144 + store %S.lsp.FnRec %t145, ptr %a146 + %t147 = getelementptr inbounds %S.lsp.FnRec, ptr %a146, i32 0, i32 0 + %t148 = load { ptr, i64, i64 }, ptr %t147 + %t149 = load { ptr, i64, i64 }, ptr %a102 + store { ptr, i64, i64 } %t148, ptr %a150 + store { ptr, i64, i64 } %t149, ptr %a151 + %t152 = call i32 @finch_str_eq(ptr %a150, ptr %a151) + %t153 = icmp ne i32 %t152, 0 + br label %logic.from10479 +logic.from10479: + br i1 %t153, label %logic.rhs10480, label %logic.end10481 +logic.rhs10480: + %t154 = getelementptr inbounds %S.lsp.FnRec, ptr %a146, i32 0, i32 2 + %t155 = getelementptr inbounds { ptr, i64, i64 }, ptr %t154, i32 0, i32 1 + %t156 = load i64, ptr %t155 + %t157 = icmp eq i64 %t156, 0 + br label %logic.rend10482 +logic.rend10482: + br label %logic.end10481 +logic.end10481: + %t158 = phi i1 [ false, %logic.from10479 ], [ %t157, %logic.rend10482 ] + br i1 %t158, label %then10483, label %endif10485 +then10483: + %t159 = getelementptr inbounds %S.lsp.FnRec, ptr %a146, i32 0, i32 1 %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 + %t161 = getelementptr inbounds %S.lsp.FnRec, ptr %a146, i32 0, i32 7 + %t162 = load { ptr, i64, i64 }, ptr %t161 + %t163 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t160, i64 3, { ptr, i64, i64 } %t162, { ptr, i64, i64 } { ptr @.str.6907, i64 0, i64 0 }) + call void @finch.json.Json.push(ptr %a7, %S.json.Json %t163) + store %S.json.Json %t163, ptr %a164 + call void @finch.drop.S_json_Json(ptr %a164) + br label %endif10485 +endif10485: + br label %each.step10477 +each.step10477: + %t165 = load i64, ptr %a138 + %t166 = add i64 %t165, 1 + store i64 %t166, ptr %a138 + br label %each.cond10475 +each.end10478: + %t167 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 3 + store i64 0, ptr %a168 + br label %each.cond10486 +each.cond10486: + %t169 = getelementptr inbounds { ptr, i64, i64 }, ptr %t167, i32 0, i32 1 + %t170 = load i64, ptr %t169 + %t171 = load i64, ptr %a168 + %t172 = icmp slt i64 %t171, %t170 + br i1 %t172, label %each.body10487, label %each.end10489 +each.body10487: + %t173 = load ptr, ptr %t167 + %t174 = getelementptr inbounds %S.lsp.StructRec, ptr %t173, i64 %t171 + %t175 = load %S.lsp.StructRec, ptr %t174 + store %S.lsp.StructRec %t175, ptr %a176 + %t177 = getelementptr inbounds %S.lsp.StructRec, ptr %a176, i32 0, i32 0 + %t178 = load { ptr, i64, i64 }, ptr %t177 + %t179 = load { ptr, i64, i64 }, ptr %a102 + store { ptr, i64, i64 } %t178, ptr %a180 + store { ptr, i64, i64 } %t179, ptr %a181 + %t182 = call i32 @finch_str_eq(ptr %a180, ptr %a181) + %t183 = icmp ne i32 %t182, 0 + br i1 %t183, label %then10490, label %endif10492 +then10490: + %t184 = getelementptr inbounds %S.lsp.StructRec, ptr %a176, i32 0, i32 1 + %t185 = load { ptr, i64, i64 }, ptr %t184 + %t186 = getelementptr inbounds %S.lsp.StructRec, ptr %a176, i32 0, i32 1 + %t187 = load { ptr, i64, i64 }, ptr %t186 + store { ptr, i64, i64 } { ptr @.str.6908, i64 7, i64 0 }, ptr %a189 + store { ptr, i64, i64 } %t187, ptr %a190 + call void @finch_str_concat(ptr %a188, ptr %a189, ptr %a190) + %t191 = load { ptr, i64, i64 }, ptr %a188 + %t192 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t185, i64 22, { ptr, i64, i64 } %t191, { ptr, i64, i64 } { ptr @.str.6909, i64 0, i64 0 }) + store { ptr, i64, i64 } %t191, ptr %a193 + call void @finch_str_drop(ptr %a193) + call void @finch.json.Json.push(ptr %a7, %S.json.Json %t192) + store %S.json.Json %t192, ptr %a194 + call void @finch.drop.S_json_Json(ptr %a194) + br label %endif10492 +endif10492: + br label %each.step10488 +each.step10488: + %t195 = load i64, ptr %a168 + %t196 = add i64 %t195, 1 + store i64 %t196, ptr %a168 + br label %each.cond10486 +each.end10489: + %t197 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 4 + store i64 0, ptr %a198 + br label %each.cond10493 +each.cond10493: + %t199 = getelementptr inbounds { ptr, i64, i64 }, ptr %t197, i32 0, i32 1 + %t200 = load i64, ptr %t199 + %t201 = load i64, ptr %a198 + %t202 = icmp slt i64 %t201, %t200 + br i1 %t202, label %each.body10494, label %each.end10496 +each.body10494: + %t203 = load ptr, ptr %t197 + %t204 = getelementptr inbounds %S.lsp.EnumRec, ptr %t203, i64 %t201 + %t205 = load %S.lsp.EnumRec, ptr %t204 + store %S.lsp.EnumRec %t205, ptr %a206 + %t207 = getelementptr inbounds %S.lsp.EnumRec, ptr %a206, i32 0, i32 0 + %t208 = load { ptr, i64, i64 }, ptr %t207 + %t209 = load { ptr, i64, i64 }, ptr %a102 + store { ptr, i64, i64 } %t208, ptr %a210 + store { ptr, i64, i64 } %t209, ptr %a211 + %t212 = call i32 @finch_str_eq(ptr %a210, ptr %a211) + %t213 = icmp ne i32 %t212, 0 + br i1 %t213, label %then10497, label %endif10499 +then10497: + %t214 = getelementptr inbounds %S.lsp.EnumRec, ptr %a206, i32 0, i32 1 + %t215 = load { ptr, i64, i64 }, ptr %t214 + %t216 = getelementptr inbounds %S.lsp.EnumRec, ptr %a206, i32 0, i32 1 + %t217 = load { ptr, i64, i64 }, ptr %t216 + store { ptr, i64, i64 } { ptr @.str.6910, i64 5, i64 0 }, ptr %a219 + store { ptr, i64, i64 } %t217, ptr %a220 + call void @finch_str_concat(ptr %a218, ptr %a219, ptr %a220) + %t221 = load { ptr, i64, i64 }, ptr %a218 + %t222 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t215, i64 13, { ptr, i64, i64 } %t221, { ptr, i64, i64 } { ptr @.str.6911, i64 0, i64 0 }) + store { ptr, i64, i64 } %t221, ptr %a223 + call void @finch_str_drop(ptr %a223) + call void @finch.json.Json.push(ptr %a7, %S.json.Json %t222) + store %S.json.Json %t222, ptr %a224 + call void @finch.drop.S_json_Json(ptr %a224) + br label %endif10499 +endif10499: + br label %each.step10495 +each.step10495: + %t225 = load i64, ptr %a198 + %t226 = add i64 %t225, 1 + store i64 %t226, ptr %a198 + br label %each.cond10493 +each.end10496: + %t227 = load %S.json.Json, ptr %a7 + %t228 = call %S.json.Json @finch.lsp.completionList(%S.json.Json %t227) + call void @finch_str_drop(ptr %a102) + call void @finch_str_drop(ptr %a26) + call void @finch_str_drop(ptr %a11) + call void @finch.drop.S_json_Json(ptr %a7) + ret %S.json.Json %t228 +endif10474: + %t229 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 4 + store i64 0, ptr %a230 + br label %each.cond10500 +each.cond10500: + %t231 = getelementptr inbounds { ptr, i64, i64 }, ptr %t229, i32 0, i32 1 + %t232 = load i64, ptr %t231 + %t233 = load i64, ptr %a230 + %t234 = icmp slt i64 %t233, %t232 + br i1 %t234, label %each.body10501, label %each.end10503 +each.body10501: + %t235 = load ptr, ptr %t229 + %t236 = getelementptr inbounds %S.lsp.EnumRec, ptr %t235, i64 %t233 + %t237 = load %S.lsp.EnumRec, ptr %t236 + store %S.lsp.EnumRec %t237, ptr %a238 + %t239 = getelementptr inbounds %S.lsp.EnumRec, ptr %a238, i32 0, i32 1 + %t240 = load { ptr, i64, i64 }, ptr %t239 %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) + store { ptr, i64, i64 } %t240, ptr %a242 + store { ptr, i64, i64 } %t241, ptr %a243 + %t244 = call i32 @finch_str_eq(ptr %a242, ptr %a243) + %t245 = icmp ne i32 %t244, 0 + br label %logic.from10504 +logic.from10504: + br i1 %t245, label %logic.rhs10505, label %logic.end10506 +logic.rhs10505: + %t246 = load %S.lsp.Analysis, ptr %a1 + %t247 = load { ptr, i64, i64 }, ptr %a3 + %t248 = load { ptr, i64, i64 }, ptr %a102 + %t249 = load i64, ptr %a4 + %t250 = call %S.lsp.VarRec @finch.lsp.varNamed(%S.lsp.Analysis %t246, { ptr, i64, i64 } %t247, { ptr, i64, i64 } %t248, i64 %t249) + %t251 = extractvalue %S.lsp.VarRec %t250, 0 + store { ptr, i64, i64 } %t251, ptr %a252 + call void @finch_str_copy(ptr %a253, ptr %a252) + %t254 = load { ptr, i64, i64 }, ptr %a253 + store %S.lsp.VarRec %t250, ptr %a255 + call void @finch.drop.S_lsp_VarRec(ptr %a255) + %t256 = extractvalue { ptr, i64, i64 } %t254, 1 + store { ptr, i64, i64 } %t254, ptr %a257 + call void @finch_str_drop(ptr %a257) + %t258 = icmp eq i64 %t256, 0 + br label %logic.rend10507 +logic.rend10507: + br label %logic.end10506 +logic.end10506: + %t259 = phi i1 [ false, %logic.from10504 ], [ %t258, %logic.rend10507 ] + br i1 %t259, label %then10508, label %endif10510 +then10508: + %t260 = getelementptr inbounds %S.lsp.EnumRec, ptr %a238, i32 0, i32 5 + store i64 0, ptr %a261 + br label %each.cond10511 +each.cond10511: + %t262 = getelementptr inbounds { ptr, i64, i64 }, ptr %t260, i32 0, i32 1 + %t263 = load i64, ptr %t262 + %t264 = load i64, ptr %a261 + %t265 = icmp slt i64 %t264, %t263 + br i1 %t265, label %each.body10512, label %each.end10514 +each.body10512: + %t266 = load ptr, ptr %t260 + %t267 = getelementptr inbounds { ptr, i64, i64 }, ptr %t266, i64 %t264 + %t268 = load { ptr, i64, i64 }, ptr %t267 + store { ptr, i64, i64 } %t268, ptr %a269 + %t270 = load { ptr, i64, i64 }, ptr %a269 + %t271 = getelementptr inbounds %S.lsp.EnumRec, ptr %a238, i32 0, i32 1 + %t272 = load { ptr, i64, i64 }, ptr %t271 + store { ptr, i64, i64 } %t272, ptr %a274 + store { ptr, i64, i64 } { ptr @.str.6912, 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 = load { ptr, i64, i64 }, ptr %a269 + store { ptr, i64, i64 } %t276, ptr %a279 + store { ptr, i64, i64 } %t277, ptr %a280 + call void @finch_str_concat(ptr %a278, ptr %a279, ptr %a280) + store { ptr, i64, i64 } %t276, ptr %a281 + call void @finch_str_drop(ptr %a281) + %t282 = load { ptr, i64, i64 }, ptr %a278 + %t283 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t270, i64 20, { ptr, i64, i64 } %t282, { ptr, i64, i64 } { ptr @.str.6913, i64 0, i64 0 }) + store { ptr, i64, i64 } %t282, ptr %a284 + call void @finch_str_drop(ptr %a284) + call void @finch.json.Json.push(ptr %a7, %S.json.Json %t283) + store %S.json.Json %t283, ptr %a285 + call void @finch.drop.S_json_Json(ptr %a285) + br label %each.step10513 +each.step10513: + %t286 = load i64, ptr %a261 + %t287 = add i64 %t286, 1 + store i64 %t287, ptr %a261 + br label %each.cond10511 +each.end10514: + %t288 = load %S.json.Json, ptr %a7 + %t289 = call %S.json.Json @finch.lsp.completionList(%S.json.Json %t288) + call void @finch_str_drop(ptr %a102) + call void @finch_str_drop(ptr %a26) + call void @finch_str_drop(ptr %a11) + call void @finch.drop.S_json_Json(ptr %a7) + ret %S.json.Json %t289 +endif10510: + br label %each.step10502 +each.step10502: + %t290 = load i64, ptr %a230 + %t291 = add i64 %t290, 1 + store i64 %t291, ptr %a230 + br label %each.cond10500 +each.end10503: + %t292 = load %S.lsp.Analysis, ptr %a1 + %t293 = load { ptr, i64, i64 }, ptr %a3 + %t294 = load { ptr, i64, i64 }, ptr %a102 + %t295 = load i64, ptr %a4 + %t296 = call %S.lsp.VarRec @finch.lsp.varNamed(%S.lsp.Analysis %t292, { ptr, i64, i64 } %t293, { ptr, i64, i64 } %t294, i64 %t295) + %t297 = extractvalue %S.lsp.VarRec %t296, 1 + store { ptr, i64, i64 } %t297, ptr %a298 + call void @finch_str_copy(ptr %a299, ptr %a298) + %t300 = load { ptr, i64, i64 }, ptr %a299 + store %S.lsp.VarRec %t296, ptr %a301 + call void @finch.drop.S_lsp_VarRec(ptr %a301) + store { ptr, i64, i64 } %t300, ptr %a302 + %t303 = load i1, ptr %a103 + br label %logic.from10515 +logic.from10515: + br i1 %t303, label %logic.rhs10516, label %logic.end10517 +logic.rhs10516: + %t304 = load { ptr, i64, i64 }, ptr %a302 + store { ptr, i64, i64 } %t304, ptr %a305 + store { ptr, i64, i64 } { ptr @.str.6915, i64 2, i64 0 }, ptr %a307 + %t308 = call i32 @finch_str_starts(ptr %a305, 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 + br label %logic.rend10518 +logic.rend10518: + br label %logic.end10517 +logic.end10517: + %t310 = phi i1 [ false, %logic.from10515 ], [ %t309, %logic.rend10518 ] + br i1 %t310, label %then10519, label %else10520 +then10519: + %t311 = load { ptr, i64, i64 }, ptr %a302 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 + %t314 = getelementptr inbounds { ptr, i64, i64 }, ptr %a302, i32 0, i32 1 + %t315 = load i64, ptr %t314 + call void @finch_str_sub(ptr %a313, ptr %a312, i64 2, i64 %t315, ptr @.str.6916, i64 569) + %t316 = load { ptr, i64, i64 }, ptr %a313 + %t317 = load { ptr, i64, i64 }, ptr %a302 + store { ptr, i64, i64 } %t316, ptr %a302 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) + call void @finch_str_drop(ptr %a318) + br label %endif10521 +else10520: + %t319 = load i1, ptr %a103 + br label %logic.from10522 +logic.from10522: + br i1 %t319, label %logic.rhs10523, label %logic.end10524 +logic.rhs10523: + %t320 = load { ptr, i64, i64 }, ptr %a302 + store { ptr, i64, i64 } %t320, ptr %a321 + store { ptr, i64, i64 } { ptr @.str.6917, i64 3, i64 0 }, ptr %a322 + %t323 = call i32 @finch_str_eq(ptr %a321, ptr %a322) + %t324 = icmp ne i32 %t323, 0 + br label %logic.rend10525 +logic.rend10525: + br label %logic.end10524 +logic.end10524: + %t325 = phi i1 [ false, %logic.from10522 ], [ %t324, %logic.rend10525 ] + br i1 %t325, label %then10526, label %endif10528 +then10526: + %t326 = load { ptr, i64, i64 }, ptr %a302 + store { ptr, i64, i64 } { ptr @.str.6918, i64 4, i64 0 }, ptr %a302 + store { ptr, i64, i64 } %t326, ptr %a327 + call void @finch_str_drop(ptr %a327) + br label %endif10528 +endif10528: + br label %endif10521 +endif10521: + %t328 = load { ptr, i64, i64 }, ptr %a302 + store { ptr, i64, i64 } %t328, ptr %a329 + store { ptr, i64, i64 } { ptr @.str.6920, i64 4, i64 0 }, ptr %a331 + %t332 = call i32 @finch_str_starts(ptr %a329, ptr %a331) + %t333 = icmp ne i32 %t332, 0 + br label %logic.from10529 +logic.from10529: + br i1 %t333, label %logic.rhs10530, label %logic.end10531 +logic.rhs10530: + %t334 = load { ptr, i64, i64 }, ptr %a302 + store { ptr, i64, i64 } %t334, ptr %a335 + store { ptr, i64, i64 } { ptr @.str.6922, i64 1, i64 0 }, ptr %a337 + %t338 = call i32 @finch_str_ends(ptr %a335, ptr %a337) + %t339 = icmp ne i32 %t338, 0 + br label %logic.rend10532 +logic.rend10532: + br label %logic.end10531 +logic.end10531: + %t340 = phi i1 [ false, %logic.from10529 ], [ %t339, %logic.rend10532 ] + br i1 %t340, label %then10533, label %endif10535 +then10533: + %t341 = load { ptr, i64, i64 }, ptr %a302 + store { ptr, i64, i64 } %t341, ptr %a342 + %t344 = getelementptr inbounds { ptr, i64, i64 }, ptr %a302, i32 0, i32 1 + %t345 = load i64, ptr %t344 + %t346 = sub i64 %t345, 1 + call void @finch_str_sub(ptr %a343, ptr %a342, i64 4, i64 %t346, ptr @.str.6923, i64 574) + %t347 = load { ptr, i64, i64 }, ptr %a343 + %t348 = load { ptr, i64, i64 }, ptr %a302 + store { ptr, i64, i64 } %t347, ptr %a302 + store { ptr, i64, i64 } %t348, ptr %a349 + call void @finch_str_drop(ptr %a349) + br label %endif10535 +endif10535: + %t350 = load { ptr, i64, i64 }, ptr %a302 + store { ptr, i64, i64 } %t350, ptr %a351 + store { ptr, i64, i64 } { ptr @.str.6925, i64 2, i64 0 }, ptr %a353 + %t354 = call i32 @finch_str_starts(ptr %a351, ptr %a353) + %t355 = icmp ne i32 %t354, 0 + br i1 %t355, label %then10536, label %else10537 +then10536: + %t356 = call { ptr, i64, i64 } @finch.docs.arrayMethods() + call void @finch.lsp.methodItems(ptr %a7, { ptr, i64, i64 } %t356) + store { ptr, i64, i64 } %t356, ptr %a357 + call void @finch.drop.arr_S_docs_Doc(ptr %a357) + br label %endif10538 +else10537: + %t358 = load { ptr, i64, i64 }, ptr %a302 + store { ptr, i64, i64 } %t358, ptr %a359 + store { ptr, i64, i64 } { ptr @.str.6926, i64 3, i64 0 }, ptr %a360 + %t361 = call i32 @finch_str_eq(ptr %a359, ptr %a360) + %t362 = icmp ne i32 %t361, 0 + br i1 %t362, label %then10539, label %else10540 +then10539: + %t363 = call { ptr, i64, i64 } @finch.docs.strMethods() + call void @finch.lsp.methodItems(ptr %a7, { ptr, i64, i64 } %t363) + store { ptr, i64, i64 } %t363, ptr %a364 + call void @finch.drop.arr_S_docs_Doc(ptr %a364) + br label %endif10541 +else10540: + %t365 = load { ptr, i64, i64 }, ptr %a302 + store { ptr, i64, i64 } %t365, ptr %a366 + store { ptr, i64, i64 } { ptr @.str.6928, i64 4, i64 0 }, ptr %a368 + %t369 = call i32 @finch_str_starts(ptr %a366, ptr %a368) + %t370 = icmp ne i32 %t369, 0 + br i1 %t370, label %then10542, label %else10543 +then10542: + %t371 = call { ptr, i64, i64 } @finch.docs.mapMethods() + call void @finch.lsp.methodItems(ptr %a7, { ptr, i64, i64 } %t371) + store { ptr, i64, i64 } %t371, ptr %a372 + call void @finch.drop.arr_S_docs_Doc(ptr %a372) + br label %endif10544 +else10543: + %t373 = load { ptr, i64, i64 }, ptr %a302 + 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 %a377 + %t378 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 3 + store i64 0, ptr %a379 + br label %each.cond10545 +each.cond10545: + %t380 = getelementptr inbounds { ptr, i64, i64 }, ptr %t378, i32 0, i32 1 + %t381 = load i64, ptr %t380 + %t382 = load i64, ptr %a379 + %t383 = icmp slt i64 %t382, %t381 + br i1 %t383, label %each.body10546, label %each.end10548 +each.body10546: + %t384 = load ptr, ptr %t378 + %t385 = getelementptr inbounds %S.lsp.StructRec, ptr %t384, i64 %t382 + %t386 = load %S.lsp.StructRec, ptr %t385 + store %S.lsp.StructRec %t386, ptr %a387 + %t388 = getelementptr inbounds %S.lsp.StructRec, ptr %a387, i32 0, i32 1 + %t389 = load { ptr, i64, i64 }, ptr %t388 + %t390 = load { ptr, i64, i64 }, ptr %a377 + store { ptr, i64, i64 } %t389, ptr %a391 + store { ptr, i64, i64 } %t390, ptr %a392 + %t393 = call i32 @finch_str_eq(ptr %a391, ptr %a392) + %t394 = icmp ne i32 %t393, 0 + br i1 %t394, label %then10549, label %endif10551 +then10549: + %t395 = getelementptr inbounds %S.lsp.StructRec, ptr %a387, i32 0, i32 5 + %t396 = getelementptr inbounds { ptr, i64, i64 }, ptr %t395, i32 0, i32 1 + %t397 = load i64, ptr %t396 + store i64 0, ptr %a398 + br label %for.cond10552 +for.cond10552: + %t399 = load i64, ptr %a398 + %t400 = icmp slt i64 %t399, %t397 + br i1 %t400, label %for.body10553, label %for.end10555 +for.body10553: + %t401 = getelementptr inbounds %S.lsp.StructRec, ptr %a387, i32 0, i32 5 + %t402 = load i64, ptr %a398 + %t403 = load { ptr, i64, i64 }, ptr %t401 + %t404 = extractvalue { ptr, i64, i64 } %t403, 1 + %t405 = icmp uge i64 %t402, %t404 + br i1 %t405, label %range10556, label %inrange10557 +range10556: + call void @finch_panic_index(ptr @.str.6929, i64 587, i64 %t402, i64 %t404) 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) +inrange10557: + %t406 = extractvalue { ptr, i64, i64 } %t403, 0 + %t407 = getelementptr inbounds { ptr, i64, i64 }, ptr %t406, i64 %t402 + %t408 = load { ptr, i64, i64 }, ptr %t407 + %t409 = getelementptr inbounds %S.lsp.StructRec, ptr %a387, i32 0, i32 6 + %t410 = load i64, ptr %a398 + %t411 = load { ptr, i64, i64 }, ptr %t409 + %t412 = extractvalue { ptr, i64, i64 } %t411, 1 + %t413 = icmp uge i64 %t410, %t412 + br i1 %t413, label %range10558, label %inrange10559 +range10558: + call void @finch_panic_index(ptr @.str.6930, i64 587, i64 %t410, i64 %t412) 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 +inrange10559: + %t414 = extractvalue { ptr, i64, i64 } %t411, 0 + %t415 = getelementptr inbounds { ptr, i64, i64 }, ptr %t414, i64 %t410 + %t416 = load { ptr, i64, i64 }, ptr %t415 + %t417 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t408, i64 5, { ptr, i64, i64 } %t416, { ptr, i64, i64 } { ptr @.str.6931, i64 0, i64 0 }) + call void @finch.json.Json.push(ptr %a7, %S.json.Json %t417) + store %S.json.Json %t417, ptr %a418 + call void @finch.drop.S_json_Json(ptr %a418) + br label %for.step10554 +for.step10554: + %t419 = load i64, ptr %a398 + %t420 = add i64 %t419, 1 + store i64 %t420, ptr %a398 + br label %for.cond10552 +for.end10555: + br label %endif10551 +endif10551: + br label %each.step10547 +each.step10547: + %t421 = load i64, ptr %a379 + %t422 = add i64 %t421, 1 + store i64 %t422, ptr %a379 + br label %each.cond10545 +each.end10548: + %t423 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 2 + store i64 0, ptr %a424 + br label %each.cond10560 +each.cond10560: + %t425 = getelementptr inbounds { ptr, i64, i64 }, ptr %t423, i32 0, i32 1 + %t426 = load i64, ptr %t425 + %t427 = load i64, ptr %a424 + %t428 = icmp slt i64 %t427, %t426 + br i1 %t428, label %each.body10561, label %each.end10563 +each.body10561: + %t429 = load ptr, ptr %t423 + %t430 = getelementptr inbounds %S.lsp.FnRec, ptr %t429, i64 %t427 + %t431 = load %S.lsp.FnRec, ptr %t430 + store %S.lsp.FnRec %t431, ptr %a432 + %t433 = getelementptr inbounds %S.lsp.FnRec, ptr %a432, i32 0, i32 2 + %t434 = load { ptr, i64, i64 }, ptr %t433 + %t435 = load { ptr, i64, i64 }, ptr %a377 + store { ptr, i64, i64 } %t434, ptr %a436 + store { ptr, i64, i64 } %t435, ptr %a437 + %t438 = call i32 @finch_str_eq(ptr %a436, ptr %a437) + %t439 = icmp ne i32 %t438, 0 + br i1 %t439, label %then10564, label %endif10566 +then10564: + %t440 = getelementptr inbounds %S.lsp.FnRec, ptr %a432, i32 0, i32 1 + %t441 = load { ptr, i64, i64 }, ptr %t440 + %t442 = getelementptr inbounds %S.lsp.FnRec, ptr %a432, i32 0, i32 7 + %t443 = load { ptr, i64, i64 }, ptr %t442 + %t444 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t441, i64 2, { ptr, i64, i64 } %t443, { ptr, i64, i64 } { ptr @.str.6932, i64 0, i64 0 }) + call void @finch.json.Json.push(ptr %a7, %S.json.Json %t444) + store %S.json.Json %t444, ptr %a445 + call void @finch.drop.S_json_Json(ptr %a445) + br label %endif10566 +endif10566: + br label %each.step10562 +each.step10562: + %t446 = load i64, ptr %a424 + %t447 = add i64 %t446, 1 + store i64 %t447, ptr %a424 + br label %each.cond10560 +each.end10563: + call void @finch_str_drop(ptr %a377) + br label %endif10544 +endif10544: + br label %endif10541 +endif10541: + br label %endif10538 +endif10538: + %t448 = load %S.json.Json, ptr %a7 + %t449 = call %S.json.Json @finch.lsp.completionList(%S.json.Json %t448) + call void @finch_str_drop(ptr %a302) + call void @finch_str_drop(ptr %a102) + call void @finch_str_drop(ptr %a26) + call void @finch_str_drop(ptr %a11) + call void @finch.drop.S_json_Json(ptr %a7) + ret %S.json.Json %t449 +endif10442: + store %S.lsp.Names zeroinitializer, ptr %a450 + %t451 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 1 + store i64 0, ptr %a452 + br label %each.cond10567 +each.cond10567: + %t453 = getelementptr inbounds { ptr, i64, i64 }, ptr %t451, i32 0, i32 1 + %t454 = load i64, ptr %t453 + %t455 = load i64, ptr %a452 + %t456 = icmp slt i64 %t455, %t454 + br i1 %t456, label %each.body10568, label %each.end10570 +each.body10568: + %t457 = load ptr, ptr %t451 + %t458 = getelementptr inbounds %S.lsp.VarRec, ptr %t457, i64 %t455 + %t459 = load %S.lsp.VarRec, ptr %t458 + store %S.lsp.VarRec %t459, ptr %a460 + %t461 = getelementptr inbounds %S.lsp.VarRec, ptr %a460, i32 0, i32 3 + %t462 = load i64, ptr %t461 + %t463 = load i64, ptr %a4 + %t464 = icmp sle i64 %t462, %t463 + br label %logic.from10571 +logic.from10571: + br i1 %t464, label %logic.rhs10572, label %logic.end10573 +logic.rhs10572: + %t465 = load i64, ptr %a4 + %t466 = getelementptr inbounds %S.lsp.VarRec, ptr %a460, i32 0, i32 7 + %t467 = load i64, ptr %t466 + %t468 = add i64 %t467, 1 + %t469 = icmp sle i64 %t465, %t468 + br label %logic.rend10574 +logic.rend10574: + br label %logic.end10573 +logic.end10573: + %t470 = phi i1 [ false, %logic.from10571 ], [ %t469, %logic.rend10574 ] + br label %logic.from10575 +logic.from10575: + br i1 %t470, label %logic.rhs10576, label %logic.end10577 +logic.rhs10576: + %t471 = getelementptr inbounds %S.lsp.VarRec, ptr %a460, i32 0, i32 5 + %t472 = load { ptr, i64, i64 }, ptr %t471 + %t473 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t472, ptr %a474 + store { ptr, i64, i64 } %t473, ptr %a475 + %t476 = call i32 @finch_str_eq(ptr %a474, ptr %a475) + %t477 = icmp ne i32 %t476, 0 + br label %logic.rend10578 +logic.rend10578: + br label %logic.end10577 +logic.end10577: + %t478 = phi i1 [ false, %logic.from10575 ], [ %t477, %logic.rend10578 ] + br label %logic.from10579 +logic.from10579: + br i1 %t478, label %logic.rhs10580, label %logic.end10581 +logic.rhs10580: + %t479 = getelementptr inbounds %S.lsp.VarRec, ptr %a460, i32 0, i32 0 + %t480 = load { ptr, i64, i64 }, ptr %t479 + %t481 = call i1 @finch.lsp.Names.add(ptr %a450, { ptr, i64, i64 } %t480) + br label %logic.rend10582 +logic.rend10582: + br label %logic.end10581 +logic.end10581: + %t482 = phi i1 [ false, %logic.from10579 ], [ %t481, %logic.rend10582 ] + br i1 %t482, label %then10583, label %endif10585 +then10583: + %t483 = getelementptr inbounds %S.lsp.VarRec, ptr %a460, i32 0, i32 0 + %t484 = load { ptr, i64, i64 }, ptr %t483 + %t485 = getelementptr inbounds %S.lsp.VarRec, ptr %a460, i32 0, i32 1 + %t486 = load { ptr, i64, i64 }, ptr %t485 + %t487 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t484, i64 6, { ptr, i64, i64 } %t486, { ptr, i64, i64 } { ptr @.str.6933, i64 0, i64 0 }) + call void @finch.json.Json.push(ptr %a7, %S.json.Json %t487) + store %S.json.Json %t487, ptr %a488 + call void @finch.drop.S_json_Json(ptr %a488) + br label %endif10585 +endif10585: + br label %each.step10569 +each.step10569: + %t489 = load i64, ptr %a452 + %t490 = add i64 %t489, 1 + store i64 %t490, ptr %a452 + br label %each.cond10567 +each.end10570: + %t491 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 2 + store i64 0, ptr %a492 + br label %each.cond10586 +each.cond10586: + %t493 = getelementptr inbounds { ptr, i64, i64 }, ptr %t491, i32 0, i32 1 + %t494 = load i64, ptr %t493 + %t495 = load i64, ptr %a492 + %t496 = icmp slt i64 %t495, %t494 + br i1 %t496, label %each.body10587, label %each.end10589 +each.body10587: + %t497 = load ptr, ptr %t491 + %t498 = getelementptr inbounds %S.lsp.FnRec, ptr %t497, i64 %t495 + %t499 = load %S.lsp.FnRec, ptr %t498 + store %S.lsp.FnRec %t499, ptr %a500 + %t501 = getelementptr inbounds %S.lsp.FnRec, ptr %a500, i32 0, i32 2 + %t502 = getelementptr inbounds { ptr, i64, i64 }, ptr %t501, i32 0, i32 1 + %t503 = load i64, ptr %t502 + %t504 = icmp eq i64 %t503, 0 + br label %logic.from10590 +logic.from10590: + br i1 %t504, label %logic.rhs10591, label %logic.end10592 +logic.rhs10591: + %t505 = getelementptr inbounds %S.lsp.FnRec, ptr %a500, i32 0, i32 0 + %t506 = load { ptr, i64, i64 }, ptr %t505 + store { ptr, i64, i64 } %t506, ptr %a507 + store { ptr, i64, i64 } { ptr @.str.6934, i64 0, i64 0 }, ptr %a508 + %t509 = call i32 @finch_str_eq(ptr %a507, ptr %a508) + %t510 = icmp ne i32 %t509, 0 + br label %logic.rend10593 +logic.rend10593: + br label %logic.end10592 +logic.end10592: + %t511 = phi i1 [ false, %logic.from10590 ], [ %t510, %logic.rend10593 ] + br label %logic.from10594 +logic.from10594: + br i1 %t511, label %logic.rhs10595, label %logic.end10596 +logic.rhs10595: + %t512 = getelementptr inbounds %S.lsp.FnRec, ptr %a500, i32 0, i32 1 + %t513 = load { ptr, i64, i64 }, ptr %t512 + %t514 = call i1 @finch.lsp.Names.add(ptr %a450, { ptr, i64, i64 } %t513) + br label %logic.rend10597 +logic.rend10597: + br label %logic.end10596 +logic.end10596: + %t515 = phi i1 [ false, %logic.from10594 ], [ %t514, %logic.rend10597 ] + br i1 %t515, label %then10598, label %endif10600 +then10598: + %t516 = getelementptr inbounds %S.lsp.FnRec, ptr %a500, i32 0, i32 1 + %t517 = load { ptr, i64, i64 }, ptr %t516 + %t518 = getelementptr inbounds %S.lsp.FnRec, ptr %a500, i32 0, i32 7 %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 + %t520 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t517, i64 3, { ptr, i64, i64 } %t519, { ptr, i64, i64 } { ptr @.str.6935, i64 0, i64 0 }) + call void @finch.json.Json.push(ptr %a7, %S.json.Json %t520) + store %S.json.Json %t520, ptr %a521 + call void @finch.drop.S_json_Json(ptr %a521) + br label %endif10600 +endif10600: + br label %each.step10588 +each.step10588: + %t522 = load i64, ptr %a492 + %t523 = add i64 %t522, 1 + store i64 %t523, ptr %a492 + br label %each.cond10586 +each.end10589: + %t524 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 3 + store i64 0, ptr %a525 + br label %each.cond10601 +each.cond10601: + %t526 = getelementptr inbounds { ptr, i64, i64 }, ptr %t524, i32 0, i32 1 + %t527 = load i64, ptr %t526 + %t528 = load i64, ptr %a525 + %t529 = icmp slt i64 %t528, %t527 + br i1 %t529, label %each.body10602, label %each.end10604 +each.body10602: + %t530 = load ptr, ptr %t524 + %t531 = getelementptr inbounds %S.lsp.StructRec, ptr %t530, i64 %t528 + %t532 = load %S.lsp.StructRec, ptr %t531 + store %S.lsp.StructRec %t532, ptr %a533 + %t534 = getelementptr inbounds %S.lsp.StructRec, ptr %a533, i32 0, i32 0 + %t535 = load { ptr, i64, i64 }, ptr %t534 + store { ptr, i64, i64 } %t535, ptr %a536 + store { ptr, i64, i64 } { ptr @.str.6936, i64 0, i64 0 }, ptr %a537 + %t538 = call i32 @finch_str_eq(ptr %a536, ptr %a537) + %t539 = icmp ne i32 %t538, 0 + br label %logic.from10605 +logic.from10605: + br i1 %t539, label %logic.rhs10606, label %logic.end10607 +logic.rhs10606: + %t540 = getelementptr inbounds %S.lsp.StructRec, ptr %a533, i32 0, i32 1 + %t541 = load { ptr, i64, i64 }, ptr %t540 + %t542 = call i1 @finch.lsp.Names.add(ptr %a450, { ptr, i64, i64 } %t541) + br label %logic.rend10608 +logic.rend10608: + br label %logic.end10607 +logic.end10607: + %t543 = phi i1 [ false, %logic.from10605 ], [ %t542, %logic.rend10608 ] + br i1 %t543, label %then10609, label %endif10611 +then10609: + %t544 = getelementptr inbounds %S.lsp.StructRec, ptr %a533, i32 0, i32 1 + %t545 = load { ptr, i64, i64 }, ptr %t544 + %t546 = getelementptr inbounds %S.lsp.StructRec, ptr %a533, i32 0, i32 1 + %t547 = load { ptr, i64, i64 }, ptr %t546 + store { ptr, i64, i64 } { ptr @.str.6937, i64 7, i64 0 }, ptr %a549 + store { ptr, i64, i64 } %t547, ptr %a550 + call void @finch_str_concat(ptr %a548, ptr %a549, ptr %a550) + %t551 = load { ptr, i64, i64 }, ptr %a548 + %t552 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t545, i64 22, { ptr, i64, i64 } %t551, { ptr, i64, i64 } { ptr @.str.6938, i64 0, i64 0 }) + store { ptr, i64, i64 } %t551, ptr %a553 + call void @finch_str_drop(ptr %a553) + call void @finch.json.Json.push(ptr %a7, %S.json.Json %t552) + store %S.json.Json %t552, ptr %a554 + call void @finch.drop.S_json_Json(ptr %a554) + br label %endif10611 +endif10611: + br label %each.step10603 +each.step10603: + %t555 = load i64, ptr %a525 + %t556 = add i64 %t555, 1 + store i64 %t556, ptr %a525 + br label %each.cond10601 +each.end10604: + %t557 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 4 + store i64 0, ptr %a558 + br label %each.cond10612 +each.cond10612: + %t559 = getelementptr inbounds { ptr, i64, i64 }, ptr %t557, i32 0, i32 1 + %t560 = load i64, ptr %t559 + %t561 = load i64, ptr %a558 + %t562 = icmp slt i64 %t561, %t560 + br i1 %t562, label %each.body10613, label %each.end10615 +each.body10613: + %t563 = load ptr, ptr %t557 + %t564 = getelementptr inbounds %S.lsp.EnumRec, ptr %t563, i64 %t561 + %t565 = load %S.lsp.EnumRec, ptr %t564 + store %S.lsp.EnumRec %t565, ptr %a566 + %t567 = getelementptr inbounds %S.lsp.EnumRec, ptr %a566, i32 0, i32 0 %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 + store { ptr, i64, i64 } { ptr @.str.6939, i64 0, i64 0 }, ptr %a570 + %t571 = call i32 @finch_str_eq(ptr %a569, ptr %a570) + %t572 = icmp ne i32 %t571, 0 + br label %logic.from10616 +logic.from10616: + br i1 %t572, label %logic.rhs10617, label %logic.end10618 +logic.rhs10617: + %t573 = getelementptr inbounds %S.lsp.EnumRec, ptr %a566, i32 0, i32 1 + %t574 = load { ptr, i64, i64 }, ptr %t573 + %t575 = call i1 @finch.lsp.Names.add(ptr %a450, { ptr, i64, i64 } %t574) + br label %logic.rend10619 +logic.rend10619: + br label %logic.end10618 +logic.end10618: + %t576 = phi i1 [ false, %logic.from10616 ], [ %t575, %logic.rend10619 ] + br i1 %t576, label %then10620, label %endif10622 +then10620: + %t577 = getelementptr inbounds %S.lsp.EnumRec, ptr %a566, i32 0, i32 1 + %t578 = load { ptr, i64, i64 }, ptr %t577 + %t579 = getelementptr inbounds %S.lsp.EnumRec, ptr %a566, i32 0, i32 1 + %t580 = load { ptr, i64, i64 }, ptr %t579 + store { ptr, i64, i64 } { ptr @.str.6940, i64 5, i64 0 }, ptr %a582 + store { ptr, i64, i64 } %t580, ptr %a583 + call void @finch_str_concat(ptr %a581, ptr %a582, ptr %a583) + %t584 = load { ptr, i64, i64 }, ptr %a581 + %t585 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t578, i64 13, { ptr, i64, i64 } %t584, { ptr, i64, i64 } { ptr @.str.6941, i64 0, i64 0 }) + store { ptr, i64, i64 } %t584, ptr %a586 + call void @finch_str_drop(ptr %a586) + call void @finch.json.Json.push(ptr %a7, %S.json.Json %t585) + store %S.json.Json %t585, ptr %a587 + call void @finch.drop.S_json_Json(ptr %a587) + br label %endif10622 +endif10622: + br label %each.step10614 +each.step10614: + %t588 = load i64, ptr %a558 + %t589 = add i64 %t588, 1 + store i64 %t589, ptr %a558 + br label %each.cond10612 +each.end10615: + %t590 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 5 + store i64 0, ptr %a591 + br label %each.cond10623 +each.cond10623: + %t592 = getelementptr inbounds { ptr, i64, i64 }, ptr %t590, i32 0, i32 1 + %t593 = load i64, ptr %t592 + %t594 = load i64, ptr %a591 + %t595 = icmp slt i64 %t594, %t593 + br i1 %t595, label %each.body10624, label %each.end10626 +each.body10624: + %t596 = load ptr, ptr %t590 + %t597 = getelementptr inbounds { ptr, i64, i64 }, ptr %t596, i64 %t594 + %t598 = load { ptr, i64, i64 }, ptr %t597 + store { ptr, i64, i64 } %t598, ptr %a599 + %t600 = load { ptr, i64, i64 }, ptr %a599 + %t601 = call i1 @finch.lsp.Names.add(ptr %a450, { ptr, i64, i64 } %t600) + br i1 %t601, label %then10627, label %endif10629 +then10627: + %t602 = load { ptr, i64, i64 }, ptr %a599 + %t603 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t602, i64 9, { ptr, i64, i64 } { ptr @.str.6942, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.6943, i64 0, i64 0 }) + call void @finch.json.Json.push(ptr %a7, %S.json.Json %t603) + store %S.json.Json %t603, ptr %a604 + call void @finch.drop.S_json_Json(ptr %a604) + br label %endif10629 +endif10629: + br label %each.step10625 +each.step10625: + %t605 = load i64, ptr %a591 + %t606 = add i64 %t605, 1 + store i64 %t606, ptr %a591 + br label %each.cond10623 +each.end10626: + %t607 = call { ptr, i64, i64 } @finch.docs.builtins() + store { ptr, i64, i64 } %t607, ptr %a608 + store i64 0, ptr %a609 + br label %each.cond10630 +each.cond10630: + %t610 = getelementptr inbounds { ptr, i64, i64 }, ptr %a608, i32 0, i32 1 + %t611 = load i64, ptr %t610 + %t612 = load i64, ptr %a609 + %t613 = icmp slt i64 %t612, %t611 + br i1 %t613, label %each.body10631, label %each.end10633 +each.body10631: + %t614 = load ptr, ptr %a608 + %t615 = getelementptr inbounds %S.docs.Doc, ptr %t614, i64 %t612 + %t616 = load %S.docs.Doc, ptr %t615 + store %S.docs.Doc %t616, ptr %a617 + %t618 = getelementptr inbounds %S.docs.Doc, ptr %a617, i32 0, i32 0 + %t619 = load { ptr, i64, i64 }, ptr %t618 + %t620 = call i1 @finch.lsp.Names.add(ptr %a450, { ptr, i64, i64 } %t619) + br i1 %t620, label %then10634, label %endif10636 +then10634: + %t621 = getelementptr inbounds %S.docs.Doc, ptr %a617, i32 0, i32 0 + %t622 = load { ptr, i64, i64 }, ptr %t621 + %t623 = getelementptr inbounds %S.docs.Doc, ptr %a617, i32 0, i32 1 + %t624 = load { ptr, i64, i64 }, ptr %t623 + %t625 = getelementptr inbounds %S.docs.Doc, ptr %a617, i32 0, i32 2 + %t626 = load { ptr, i64, i64 }, ptr %t625 + %t627 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t622, i64 3, { ptr, i64, i64 } %t624, { ptr, i64, i64 } %t626) + call void @finch.json.Json.push(ptr %a7, %S.json.Json %t627) + store %S.json.Json %t627, ptr %a628 + call void @finch.drop.S_json_Json(ptr %a628) + br label %endif10636 +endif10636: + br label %each.step10632 +each.step10632: + %t629 = load i64, ptr %a609 + %t630 = add i64 %t629, 1 + store i64 %t630, ptr %a609 + br label %each.cond10630 +each.end10633: + call void @finch.drop.arr_S_docs_Doc(ptr %a608) + %t631 = call { ptr, i64, i64 } @finch.docs.keywords() + store { ptr, i64, i64 } %t631, ptr %a632 + store i64 0, ptr %a633 + br label %each.cond10637 +each.cond10637: + %t634 = getelementptr inbounds { ptr, i64, i64 }, ptr %a632, i32 0, i32 1 + %t635 = load i64, ptr %t634 + %t636 = load i64, ptr %a633 + %t637 = icmp slt i64 %t636, %t635 + br i1 %t637, label %each.body10638, label %each.end10640 +each.body10638: + %t638 = load ptr, ptr %a632 + %t639 = getelementptr inbounds { ptr, i64, i64 }, ptr %t638, i64 %t636 + %t640 = load { ptr, i64, i64 }, ptr %t639 + store { ptr, i64, i64 } %t640, ptr %a641 + %t642 = load { ptr, i64, i64 }, ptr %a641 + %t643 = call i1 @finch.lsp.Names.add(ptr %a450, { ptr, i64, i64 } %t642) + br i1 %t643, label %then10641, label %endif10643 +then10641: + %t644 = load { ptr, i64, i64 }, ptr %a641 + %t645 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t644, i64 14, { ptr, i64, i64 } { ptr @.str.6944, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.6945, i64 0, i64 0 }) + call void @finch.json.Json.push(ptr %a7, %S.json.Json %t645) + store %S.json.Json %t645, ptr %a646 + call void @finch.drop.S_json_Json(ptr %a646) + br label %endif10643 +endif10643: + br label %each.step10639 +each.step10639: + %t647 = load i64, ptr %a633 + %t648 = add i64 %t647, 1 + store i64 %t648, ptr %a633 + br label %each.cond10637 +each.end10640: + call void @finch.drop.arr_str(ptr %a632) + %t649 = call { ptr, i64, i64 } @finch.docs.typeNames() + store { ptr, i64, i64 } %t649, ptr %a650 + store i64 0, ptr %a651 + br label %each.cond10644 +each.cond10644: + %t652 = getelementptr inbounds { ptr, i64, i64 }, ptr %a650, i32 0, i32 1 + %t653 = load i64, ptr %t652 + %t654 = load i64, ptr %a651 + %t655 = icmp slt i64 %t654, %t653 + br i1 %t655, label %each.body10645, label %each.end10647 +each.body10645: + %t656 = load ptr, ptr %a650 + %t657 = getelementptr inbounds { ptr, i64, i64 }, ptr %t656, i64 %t654 + %t658 = load { ptr, i64, i64 }, ptr %t657 + store { ptr, i64, i64 } %t658, ptr %a659 + %t660 = load { ptr, i64, i64 }, ptr %a659 + %t661 = call i1 @finch.lsp.Names.add(ptr %a450, { ptr, i64, i64 } %t660) + br i1 %t661, label %then10648, label %endif10650 +then10648: + %t662 = load { ptr, i64, i64 }, ptr %a659 + %t663 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t662, i64 25, { ptr, i64, i64 } { ptr @.str.6946, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.6947, i64 0, i64 0 }) + call void @finch.json.Json.push(ptr %a7, %S.json.Json %t663) + store %S.json.Json %t663, ptr %a664 + call void @finch.drop.S_json_Json(ptr %a664) + br label %endif10650 +endif10650: + br label %each.step10646 +each.step10646: + %t665 = load i64, ptr %a651 + %t666 = add i64 %t665, 1 + store i64 %t666, ptr %a651 + br label %each.cond10644 +each.end10647: + call void @finch.drop.arr_str(ptr %a650) + %t667 = load %S.json.Json, ptr %a7 + %t668 = call %S.json.Json @finch.lsp.completionList(%S.json.Json %t667) + call void @finch.drop.S_lsp_Names(ptr %a450) + call void @finch_str_drop(ptr %a26) + call void @finch_str_drop(ptr %a11) + call void @finch.drop.S_json_Json(ptr %a7) + ret %S.json.Json %t668 } define internal i1 @finch.lsp.Names.add(ptr %self, { ptr, i64, i64 } %p0) { @@ -90081,33 +107742,33 @@ entry: %t6 = load i64, ptr %t3 %t7 = load ptr, ptr %t2 store i64 0, ptr %a8 - br label %find.cond10125 -find.cond10125: + br label %find.cond10651 +find.cond10651: %t9 = load i64, ptr %a8 %t10 = icmp slt i64 %t9, %t6 - br i1 %t10, label %find.body10126, label %find.end10129 -find.body10126: + br i1 %t10, label %find.body10652, label %find.end10655 +find.body10652: %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: + br i1 %t16, label %find.hit10653, label %find.next10654 +find.hit10653: store i64 %t9, ptr %a5 - br label %find.end10129 -find.next10128: + br label %find.end10655 +find.next10654: %t17 = add i64 %t9, 1 store i64 %t17, ptr %a8 - br label %find.cond10125 -find.end10129: + br label %find.cond10651 +find.end10655: %t18 = load i64, ptr %a5 %t19 = icmp sge i64 %t18, 0 - br i1 %t19, label %then10130, label %endif10132 -then10130: + br i1 %t19, label %then10656, label %endif10658 +then10656: ret i1 false -endif10132: +endif10658: %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 @@ -90128,20 +107789,18 @@ 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 + %a5 = 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 + call void @finch.json.Json.set(ptr %a3, { ptr, i64, i64 } { ptr @.str.6948, i64 12, i64 0 }, %S.json.Json %t4) + store %S.json.Json %t4, ptr %a5 + call void @finch.drop.S_json_Json(ptr %a5) + %t6 = load %S.json.Json, ptr %a1 + call void @finch.json.Json.set(ptr %a3, { ptr, i64, i64 } { ptr @.str.6949, i64 5, i64 0 }, %S.json.Json %t6) + %t7 = load %S.json.Json, ptr %a3 + ret %S.json.Json %t7 } define internal %S.json.Json @finch.lsp.signatureAt(%S.lsp.Analysis %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, i64 %p3, i64 %p4) { @@ -90173,34 +107832,46 @@ entry: %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 + %a149 = alloca %S.lsp.VarRec, align 16 + %a150 = 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 + %a154 = 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 + %a160 = alloca { ptr, i64, i64 }, align 16 %a165 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 + %a166 = 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 + %a174 = alloca { ptr, i64, i64 }, align 16 + %a175 = alloca { ptr, i64, i64 }, align 16 + %a178 = alloca { ptr, i64, i64 }, align 16 + %a180 = alloca i64, align 16 + %a188 = alloca %S.lsp.FnRec, align 16 + %a192 = alloca { ptr, i64, i64 }, align 16 + %a193 = alloca { ptr, i64, i64 }, align 16 + %a199 = alloca { ptr, i64, i64 }, align 16 + %a200 = alloca { ptr, i64, i64 }, 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 + %a209 = alloca %S.json.Json, align 16 + %a211 = alloca %S.json.Json, align 16 + %a213 = alloca i64, align 16 + %a221 = alloca { ptr, i64, i64 }, align 16 + %a226 = alloca %S.json.Json, align 16 + %a229 = alloca %S.json.Json, align 16 + %a235 = alloca %S.json.Json, align 16 + %a238 = alloca %S.json.Json, align 16 + %a241 = alloca %S.json.Json, align 16 + %a244 = alloca %S.json.Json, align 16 + %a251 = alloca { ptr, i64, i64 }, align 16 + %a252 = alloca %S.docs.Doc, align 16 + %a258 = alloca %S.json.Json, align 16 + %a262 = alloca %S.json.Json, align 16 + %a266 = alloca %S.json.Json, align 16 + %a268 = alloca %S.json.Json, align 16 + %a271 = alloca %S.json.Json, align 16 + %a274 = alloca %S.json.Json, align 16 + %a277 = 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 @@ -90217,17 +107888,17 @@ entry: %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: + br i1 %t16, label %then10659, label %endif10661 +then10659: %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: + br label %endif10661 +endif10661: %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) + call void @finch_str_sub(ptr %a21, ptr %a20, i64 0, i64 %t22, ptr @.str.6950, i64 671) %t23 = load { ptr, i64, i64 }, ptr %a21 store { ptr, i64, i64 } %t23, ptr %a24 store i64 0, ptr %a25 @@ -90237,241 +107908,246 @@ endif10135: %t29 = load i64, ptr %t28 %t30 = sub i64 %t29, 1 store i64 %t30, ptr %a31 - br label %while.cond10136 -while.cond10136: + br label %while.cond10662 +while.cond10662: %t32 = load i64, ptr %a31 %t33 = icmp sge i64 %t32, 0 - br i1 %t33, label %while.body10137, label %while.end10138 -while.body10137: + br i1 %t33, label %while.body10663, label %while.end10664 +while.body10663: %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) + br i1 %t37, label %range10665, label %inrange10666 +range10665: + call void @finch_panic_index(ptr @.str.6951, i64 678, i64 %t34, i64 %t36) unreachable -inrange10140: +inrange10666: %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: + br label %logic.from10667 +logic.from10667: + br i1 %t43, label %logic.end10669, label %logic.rhs10668 +logic.rhs10668: %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: + br label %logic.rend10670 +logic.rend10670: + br label %logic.end10669 +logic.end10669: + %t46 = phi i1 [ true, %logic.from10667 ], [ %t45, %logic.rend10670 ] + br i1 %t46, label %then10671, label %else10672 +then10671: %t47 = load i64, ptr %a25 %t48 = add i64 %t47, 1 store i64 %t48, ptr %a25 - br label %endif10147 -else10146: + br label %endif10673 +else10672: %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: + br label %logic.from10674 +logic.from10674: + br i1 %t50, label %logic.end10676, label %logic.rhs10675 +logic.rhs10675: %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: + br label %logic.rend10677 +logic.rend10677: + br label %logic.end10676 +logic.end10676: + %t53 = phi i1 [ true, %logic.from10674 ], [ %t52, %logic.rend10677 ] + br i1 %t53, label %then10678, label %else10679 +then10678: %t54 = load i64, ptr %a25 %t55 = icmp eq i64 %t54, 0 - br i1 %t55, label %then10155, label %else10156 -then10155: + br i1 %t55, label %then10681, label %else10682 +then10681: %t56 = load i8, ptr %a41 %t57 = icmp eq i8 %t56, 40 - br i1 %t57, label %then10158, label %endif10160 -then10158: + br i1 %t57, label %then10684, label %endif10686 +then10684: %t58 = load i64, ptr %a31 store i64 %t58, ptr %a27 - br label %while.end10138 -endif10160: - br label %endif10157 -else10156: + br label %while.end10664 +endif10686: + br label %endif10683 +else10682: %t59 = load i64, ptr %a25 %t60 = sub i64 %t59, 1 store i64 %t60, ptr %a25 - br label %endif10157 -endif10157: - br label %endif10154 -else10153: + br label %endif10683 +endif10683: + br label %endif10680 +else10679: %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: + br label %logic.from10687 +logic.from10687: + br i1 %t62, label %logic.rhs10688, label %logic.end10689 +logic.rhs10688: %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: + br label %logic.rend10690 +logic.rend10690: + br label %logic.end10689 +logic.end10689: + %t65 = phi i1 [ false, %logic.from10687 ], [ %t64, %logic.rend10690 ] + br i1 %t65, label %then10691, label %endif10693 +then10691: %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: + br label %endif10693 +endif10693: + br label %endif10680 +endif10680: + br label %endif10673 +endif10673: %t68 = load i64, ptr %a31 %t69 = sub i64 %t68, 1 store i64 %t69, ptr %a31 - br label %while.cond10136 -while.end10138: + br label %while.cond10662 +while.end10664: %t70 = load i64, ptr %a27 %t71 = icmp slt i64 %t70, 0 - br i1 %t71, label %then10168, label %endif10170 -then10168: + br i1 %t71, label %then10694, label %endif10696 +then10694: %t72 = call %S.json.Json @finch.json.new_null() + call void @finch_str_drop(ptr %a24) + call void @finch_str_drop(ptr %a9) ret %S.json.Json %t72 -endif10170: +endif10696: %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: + br label %while.cond10697 +while.cond10697: %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: + br label %logic.from10700 +logic.from10700: + br i1 %t78, label %logic.rhs10701, label %logic.end10702 +logic.rhs10701: %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) + br i1 %t83, label %range10703, label %inrange10704 +range10703: + call void @finch_panic_index(ptr @.str.6952, i64 700, i64 %t80, i64 %t82) unreachable -inrange10178: +inrange10704: %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: + br label %logic.rend10705 +logic.rend10705: + br label %logic.end10702 +logic.end10702: + %t88 = phi i1 [ false, %logic.from10700 ], [ %t87, %logic.rend10705 ] + br i1 %t88, label %while.body10698, label %while.end10699 +while.body10698: %t89 = load i64, ptr %a76 %t90 = sub i64 %t89, 1 store i64 %t90, ptr %a76 - br label %while.cond10171 -while.end10173: + br label %while.cond10697 +while.end10699: %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) + call void @finch_str_sub(ptr %a93, ptr %a92, i64 %t94, i64 %t95, ptr @.str.6953, 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: + br i1 %t100, label %then10706, label %endif10708 +then10706: %t101 = call %S.json.Json @finch.json.new_null() + call void @finch_str_drop(ptr %a97) + call void @finch_str_drop(ptr %a24) + call void @finch_str_drop(ptr %a9) ret %S.json.Json %t101 -endif10182: - store { ptr, i64, i64 } { ptr @.str.6737, i64 0, i64 0 }, ptr %a102 +endif10708: + store { ptr, i64, i64 } { ptr @.str.6954, 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: + br label %logic.from10709 +logic.from10709: + br i1 %t104, label %logic.rhs10710, label %logic.end10711 +logic.rhs10710: %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) + br i1 %t109, label %range10712, label %inrange10713 +range10712: + call void @finch_panic_index(ptr @.str.6955, i64 708, i64 %t106, i64 %t108) unreachable -inrange10187: +inrange10713: %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: + br label %logic.rend10714 +logic.rend10714: + br label %logic.end10711 +logic.end10711: + %t114 = phi i1 [ false, %logic.from10709 ], [ %t113, %logic.rend10714 ] + br i1 %t114, label %then10715, label %endif10717 +then10715: %t115 = load i64, ptr %a76 %t116 = sub i64 %t115, 1 store i64 %t116, ptr %a117 - br label %while.cond10192 -while.cond10192: + br label %while.cond10718 +while.cond10718: %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: + br label %logic.from10721 +logic.from10721: + br i1 %t119, label %logic.rhs10722, label %logic.end10723 +logic.rhs10722: %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) + br i1 %t124, label %range10724, label %inrange10725 +range10724: + call void @finch_panic_index(ptr @.str.6956, i64 711, i64 %t121, i64 %t123) unreachable -inrange10199: +inrange10725: %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: + br label %logic.rend10726 +logic.rend10726: + br label %logic.end10723 +logic.end10723: + %t129 = phi i1 [ false, %logic.from10721 ], [ %t128, %logic.rend10726 ] + br i1 %t129, label %while.body10719, label %while.end10720 +while.body10719: %t130 = load i64, ptr %a117 %t131 = sub i64 %t130, 1 store i64 %t131, ptr %a117 - br label %while.cond10192 -while.end10194: + br label %while.cond10718 +while.end10720: %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) + call void @finch_str_sub(ptr %a134, ptr %a133, i64 %t135, i64 %t137, ptr @.str.6957, i64 714) %t138 = load { ptr, i64, i64 }, ptr %a134 store { ptr, i64, i64 } %t138, ptr %a139 %t140 = load %S.lsp.Analysis, ptr %a1 @@ -90483,190 +108159,238 @@ while.end10194: 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.lsp.VarRec %t144, ptr %a149 + call void @finch.drop.S_lsp_VarRec(ptr %a149) + store { ptr, i64, i64 } %t148, ptr %a150 + %t151 = load { ptr, i64, i64 }, ptr %a150 + store { ptr, i64, i64 } %t151, ptr %a152 + store { ptr, i64, i64 } { ptr @.str.6959, i64 4, i64 0 }, ptr %a154 + %t155 = call i32 @finch_str_starts(ptr %a152, ptr %a154) + %t156 = icmp ne i32 %t155, 0 + br label %logic.from10727 +logic.from10727: + br i1 %t156, label %logic.rhs10728, label %logic.end10729 +logic.rhs10728: + %t157 = load { ptr, i64, i64 }, ptr %a150 + store { ptr, i64, i64 } %t157, ptr %a158 + store { ptr, i64, i64 } { ptr @.str.6961, i64 1, i64 0 }, ptr %a160 + %t161 = call i32 @finch_str_ends(ptr %a158, ptr %a160) + %t162 = icmp ne i32 %t161, 0 + br label %logic.rend10730 +logic.rend10730: + br label %logic.end10729 +logic.end10729: + %t163 = phi i1 [ false, %logic.from10727 ], [ %t162, %logic.rend10730 ] + br i1 %t163, label %then10731, label %endif10733 +then10731: + %t164 = load { ptr, i64, i64 }, ptr %a150 + store { ptr, i64, i64 } %t164, ptr %a165 + %t167 = getelementptr inbounds { ptr, i64, i64 }, ptr %a150, i32 0, i32 1 + %t168 = load i64, ptr %t167 + %t169 = sub i64 %t168, 1 + call void @finch_str_sub(ptr %a166, ptr %a165, i64 4, i64 %t169, ptr @.str.6962, i64 717) + %t170 = load { ptr, i64, i64 }, ptr %a166 + %t171 = load { ptr, i64, i64 }, ptr %a150 + store { ptr, i64, i64 } %t170, ptr %a150 + store { ptr, i64, i64 } %t171, ptr %a172 + call void @finch_str_drop(ptr %a172) + br label %endif10733 +endif10733: + %t173 = load { ptr, i64, i64 }, ptr %a150 + store { ptr, i64, i64 } %t173, ptr %a174 + call void @finch_str_copy(ptr %a175, ptr %a174) + %t176 = load { ptr, i64, i64 }, ptr %a175 + %t177 = load { ptr, i64, i64 }, ptr %a102 + store { ptr, i64, i64 } %t176, ptr %a102 + store { ptr, i64, i64 } %t177, ptr %a178 + call void @finch_str_drop(ptr %a178) + call void @finch_str_drop(ptr %a150) + call void @finch_str_drop(ptr %a139) + br label %endif10717 +endif10717: + %t179 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 2 + store i64 0, ptr %a180 + br label %each.cond10734 +each.cond10734: + %t181 = getelementptr inbounds { ptr, i64, i64 }, ptr %t179, i32 0, i32 1 + %t182 = load i64, ptr %t181 + %t183 = load i64, ptr %a180 + %t184 = icmp slt i64 %t183, %t182 + br i1 %t184, label %each.body10735, label %each.end10737 +each.body10735: + %t185 = load ptr, ptr %t179 + %t186 = getelementptr inbounds %S.lsp.FnRec, ptr %t185, i64 %t183 + %t187 = load %S.lsp.FnRec, ptr %t186 + store %S.lsp.FnRec %t187, ptr %a188 + %t189 = getelementptr inbounds %S.lsp.FnRec, ptr %a188, i32 0, i32 1 + %t190 = load { ptr, i64, i64 }, ptr %t189 + %t191 = load { ptr, i64, i64 }, ptr %a97 + store { ptr, i64, i64 } %t190, ptr %a192 + store { ptr, i64, i64 } %t191, ptr %a193 + %t194 = call i32 @finch_str_eq(ptr %a192, ptr %a193) + %t195 = icmp ne i32 %t194, 0 + br label %logic.from10738 +logic.from10738: + br i1 %t195, label %logic.rhs10739, label %logic.end10740 +logic.rhs10739: + %t196 = getelementptr inbounds %S.lsp.FnRec, ptr %a188, i32 0, i32 2 + %t197 = load { ptr, i64, i64 }, ptr %t196 + %t198 = load { ptr, i64, i64 }, ptr %a102 + store { ptr, i64, i64 } %t197, ptr %a199 + store { ptr, i64, i64 } %t198, ptr %a200 + %t201 = call i32 @finch_str_eq(ptr %a199, ptr %a200) + %t202 = icmp ne i32 %t201, 0 + br label %logic.rend10741 +logic.rend10741: + br label %logic.end10740 +logic.end10740: + %t203 = phi i1 [ false, %logic.from10738 ], [ %t202, %logic.rend10741 ] + br i1 %t203, label %then10742, label %endif10744 +then10742: + %t204 = call %S.json.Json @finch.json.new_object() 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 + %t206 = getelementptr inbounds %S.lsp.FnRec, ptr %a188, i32 0, i32 7 + %t207 = load { ptr, i64, i64 }, ptr %t206 + %t208 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t207) + call void @finch.json.Json.set(ptr %a205, { ptr, i64, i64 } { ptr @.str.6963, i64 5, i64 0 }, %S.json.Json %t208) + store %S.json.Json %t208, ptr %a209 + call void @finch.drop.S_json_Json(ptr %a209) + %t210 = call %S.json.Json @finch.json.new_list() + store %S.json.Json %t210, ptr %a211 + %t212 = getelementptr inbounds %S.lsp.FnRec, ptr %a188, i32 0, i32 8 + store i64 0, ptr %a213 + br label %each.cond10745 +each.cond10745: + %t214 = getelementptr inbounds { ptr, i64, i64 }, ptr %t212, i32 0, i32 1 + %t215 = load i64, ptr %t214 + %t216 = load i64, ptr %a213 + %t217 = icmp slt i64 %t216, %t215 + br i1 %t217, label %each.body10746, label %each.end10748 +each.body10746: + %t218 = load ptr, ptr %t212 + %t219 = getelementptr inbounds { ptr, i64, i64 }, ptr %t218, i64 %t216 + %t220 = load { ptr, i64, i64 }, ptr %t219 + store { ptr, i64, i64 } %t220, ptr %a221 + %t222 = getelementptr inbounds { ptr, i64, i64 }, ptr %a221, i32 0, i32 1 + %t223 = load i64, ptr %t222 + %t224 = icmp sgt i64 %t223, 0 + br i1 %t224, label %then10749, label %endif10751 +then10749: + %t225 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t225, ptr %a226 + %t227 = load { ptr, i64, i64 }, ptr %a221 + %t228 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t227) + call void @finch.json.Json.set(ptr %a226, { ptr, i64, i64 } { ptr @.str.6964, i64 5, i64 0 }, %S.json.Json %t228) + store %S.json.Json %t228, ptr %a229 + call void @finch.drop.S_json_Json(ptr %a229) + %t230 = load %S.json.Json, ptr %a226 + call void @finch.json.Json.push(ptr %a211, %S.json.Json %t230) + call void @finch.drop.S_json_Json(ptr %a226) + br label %endif10751 +endif10751: + br label %each.step10747 +each.step10747: + %t231 = load i64, ptr %a213 + %t232 = add i64 %t231, 1 + store i64 %t232, ptr %a213 + br label %each.cond10745 +each.end10748: + %t233 = load %S.json.Json, ptr %a211 + call void @finch.json.Json.set(ptr %a205, { ptr, i64, i64 } { ptr @.str.6965, i64 10, i64 0 }, %S.json.Json %t233) + %t234 = call %S.json.Json @finch.json.new_list() + store %S.json.Json %t234, ptr %a235 + %t236 = load %S.json.Json, ptr %a205 + call void @finch.json.Json.push(ptr %a235, %S.json.Json %t236) + %t237 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t237, ptr %a238 + %t239 = load %S.json.Json, ptr %a235 + call void @finch.json.Json.set(ptr %a238, { ptr, i64, i64 } { ptr @.str.6966, i64 10, i64 0 }, %S.json.Json %t239) + %t240 = call %S.json.Json @finch.lsp.num(i64 0) + call void @finch.json.Json.set(ptr %a238, { ptr, i64, i64 } { ptr @.str.6967, i64 15, i64 0 }, %S.json.Json %t240) + store %S.json.Json %t240, ptr %a241 + call void @finch.drop.S_json_Json(ptr %a241) + %t242 = load i64, ptr %a26 + %t243 = call %S.json.Json @finch.lsp.num(i64 %t242) + call void @finch.json.Json.set(ptr %a238, { ptr, i64, i64 } { ptr @.str.6968, i64 15, i64 0 }, %S.json.Json %t243) + store %S.json.Json %t243, ptr %a244 + call void @finch.drop.S_json_Json(ptr %a244) + %t245 = load %S.json.Json, ptr %a238 + call void @finch.drop.S_json_Json(ptr %a235) + call void @finch.drop.S_json_Json(ptr %a211) + call void @finch.drop.S_json_Json(ptr %a205) + call void @finch_str_drop(ptr %a102) + call void @finch_str_drop(ptr %a97) + call void @finch_str_drop(ptr %a24) + call void @finch_str_drop(ptr %a9) + ret %S.json.Json %t245 +endif10744: + br label %each.step10736 +each.step10736: + %t246 = load i64, ptr %a180 + %t247 = add i64 %t246, 1 + store i64 %t247, ptr %a180 + br label %each.cond10734 +each.end10737: + %t248 = call { ptr, i64, i64 } @finch.docs.builtins() + %t249 = load { ptr, i64, i64 }, ptr %a97 + %t250 = call %S.docs.Doc @finch.docs.find({ ptr, i64, i64 } %t248, { ptr, i64, i64 } %t249) + store { ptr, i64, i64 } %t248, ptr %a251 + call void @finch.drop.arr_S_docs_Doc(ptr %a251) + store %S.docs.Doc %t250, ptr %a252 + %t253 = getelementptr inbounds %S.docs.Doc, ptr %a252, i32 0, i32 0 + %t254 = getelementptr inbounds { ptr, i64, i64 }, ptr %t253, i32 0, i32 1 + %t255 = load i64, ptr %t254 + %t256 = icmp sgt i64 %t255, 0 + br i1 %t256, label %then10752, label %endif10754 +then10752: + %t257 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t257, ptr %a258 + %t259 = getelementptr inbounds %S.docs.Doc, ptr %a252, i32 0, i32 1 + %t260 = load { ptr, i64, i64 }, ptr %t259 + %t261 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t260) + call void @finch.json.Json.set(ptr %a258, { ptr, i64, i64 } { ptr @.str.6969, i64 5, i64 0 }, %S.json.Json %t261) + store %S.json.Json %t261, ptr %a262 + call void @finch.drop.S_json_Json(ptr %a262) + %t263 = getelementptr inbounds %S.docs.Doc, ptr %a252, i32 0, i32 2 + %t264 = load { ptr, i64, i64 }, ptr %t263 + %t265 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t264) + call void @finch.json.Json.set(ptr %a258, { ptr, i64, i64 } { ptr @.str.6970, i64 13, i64 0 }, %S.json.Json %t265) + store %S.json.Json %t265, ptr %a266 + call void @finch.drop.S_json_Json(ptr %a266) + %t267 = call %S.json.Json @finch.json.new_list() + store %S.json.Json %t267, ptr %a268 + %t269 = load %S.json.Json, ptr %a258 + call void @finch.json.Json.push(ptr %a268, %S.json.Json %t269) + %t270 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t270, ptr %a271 + %t272 = load %S.json.Json, ptr %a268 + call void @finch.json.Json.set(ptr %a271, { ptr, i64, i64 } { ptr @.str.6971, i64 10, i64 0 }, %S.json.Json %t272) + %t273 = call %S.json.Json @finch.lsp.num(i64 0) + call void @finch.json.Json.set(ptr %a271, { ptr, i64, i64 } { ptr @.str.6972, i64 15, i64 0 }, %S.json.Json %t273) + store %S.json.Json %t273, ptr %a274 + call void @finch.drop.S_json_Json(ptr %a274) + %t275 = load i64, ptr %a26 + %t276 = call %S.json.Json @finch.lsp.num(i64 %t275) + call void @finch.json.Json.set(ptr %a271, { ptr, i64, i64 } { ptr @.str.6973, i64 15, i64 0 }, %S.json.Json %t276) + store %S.json.Json %t276, ptr %a277 + call void @finch.drop.S_json_Json(ptr %a277) + %t278 = load %S.json.Json, ptr %a271 + call void @finch.drop.S_json_Json(ptr %a268) + call void @finch.drop.S_json_Json(ptr %a258) + call void @finch.drop.S_docs_Doc(ptr %a252) + call void @finch_str_drop(ptr %a102) + call void @finch_str_drop(ptr %a97) + call void @finch_str_drop(ptr %a24) + call void @finch_str_drop(ptr %a9) + ret %S.json.Json %t278 +endif10754: + %t279 = call %S.json.Json @finch.json.new_null() + call void @finch.drop.S_docs_Doc(ptr %a252) + call void @finch_str_drop(ptr %a102) + call void @finch_str_drop(ptr %a97) + call void @finch_str_drop(ptr %a24) + call void @finch_str_drop(ptr %a9) + ret %S.json.Json %t279 } define internal { ptr, i64, i64 } @finch.lsp.textOf(%S.json.Json %p0) { @@ -90675,11 +108399,13 @@ entry: %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 }) + %t2 = call %S.json.Json @finch.json.Json.get(ptr %a1, { ptr, i64, i64 } { ptr @.str.6974, 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 }) + %t4 = call %S.json.Json @finch.json.Json.get(ptr %a3, { ptr, i64, i64 } { ptr @.str.6975, i64 4, i64 0 }) + call void @finch.drop.S_json_Json(ptr %a3) 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 }) + %t6 = call { ptr, i64, i64 } @finch.json.Json.str_or(ptr %a5, { ptr, i64, i64 } { ptr @.str.6976, i64 0, i64 0 }) + call void @finch.drop.S_json_Json(ptr %a5) ret { ptr, i64, i64 } %t6 } @@ -90688,13 +108414,18 @@ entry: %a1 = alloca %S.json.Json, align 16 %a3 = alloca %S.json.Json, align 16 %a5 = alloca %S.json.Json, align 16 + %a8 = 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.6760, i64 12, i64 0 }) + %t2 = call %S.json.Json @finch.json.Json.get(ptr %a1, { ptr, i64, i64 } { ptr @.str.6977, 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 }) + %t4 = call %S.json.Json @finch.json.Json.get(ptr %a3, { ptr, i64, i64 } { ptr @.str.6978, i64 3, i64 0 }) + call void @finch.drop.S_json_Json(ptr %a3) 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 }) + %t6 = call { ptr, i64, i64 } @finch.json.Json.str_or(ptr %a5, { ptr, i64, i64 } { ptr @.str.6979, i64 0, i64 0 }) + call void @finch.drop.S_json_Json(ptr %a5) %t7 = call { ptr, i64, i64 } @finch.lsp.uriToPath({ ptr, i64, i64 } %t6) + store { ptr, i64, i64 } %t6, ptr %a8 + call void @finch_str_drop(ptr %a8) ret { ptr, i64, i64 } %t7 } @@ -90708,277 +108439,314 @@ entry: %a11 = alloca { ptr, i64, i64 }, align 16 %a12 = alloca { ptr, i64, i64 }, align 16 %a16 = alloca %S.json.Json, align 16 + %a18 = alloca %S.json.Json, align 16 + %a20 = 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 + %a26 = alloca %S.json.Json, align 16 + %a28 = alloca %S.json.Json, align 16 + %a30 = alloca %S.json.Json, align 16 + %a34 = alloca %S.json.Json, align 16 + %a36 = alloca %S.json.Json, align 16 + %a38 = 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 + %a44 = alloca %S.json.Json, align 16 + %a47 = alloca %S.json.Json, align 16 + %a49 = alloca %S.json.Json, 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 + %a54 = alloca { ptr, i64, i64 }, align 16 + %a60 = alloca %S.json.Json, align 16 + %a61 = alloca { ptr, i64, i64 }, align 16 + %a62 = alloca { ptr, i64, i64 }, align 16 + %a67 = alloca { ptr, i64, i64 }, align 16 + %a68 = alloca { ptr, i64, i64 }, align 16 + %a73 = alloca { ptr, i64, i64 }, align 16 + %a78 = alloca { ptr, i64, i64 }, align 16 + %a79 = alloca i32, align 16 + %a90 = alloca { ptr, i64, i64 }, align 16 + %a92 = alloca { ptr, i64, i64 }, align 16 + %a93 = alloca { ptr, i64, i64 }, align 16 + %a98 = alloca { ptr, i64, i64 }, align 16 + %a100 = alloca %S.json.Json, align 16 + %a106 = alloca %S.json.Json, align 16 + %a108 = alloca %S.json.Json, align 16 + %a112 = alloca { ptr, i64, i64 }, align 16 + %a113 = alloca i32, align 16 + %a124 = 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 + %a139 = 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 + %a148 = alloca { ptr, i64, i64 }, align 16 + %a158 = 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 + %a177 = alloca %S.json.Json, align 16 + %a181 = alloca { ptr, i64, i64 }, align 16 + %a182 = alloca %S.json.Json, align 16 + %a184 = alloca %S.json.Json, align 16 + %a186 = alloca { ptr, i64, i64 }, align 16 + %a187 = alloca { ptr, i64, i64 }, align 16 + %a190 = alloca { ptr, i64, i64 }, align 16 + %a191 = alloca { ptr, i64, i64 }, align 16 %a194 = alloca { ptr, i64, i64 }, align 16 + %a195 = alloca { ptr, i64, i64 }, align 16 + %a198 = alloca { ptr, i64, i64 }, align 16 + %a199 = 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 + %a203 = alloca { ptr, i64, i64 }, align 16 + %a208 = alloca { ptr, i64, i64 }, align 16 + %a210 = alloca %S.json.Json, align 16 + %a212 = alloca %S.json.Json, align 16 + %a215 = alloca i64, align 16 + %a217 = alloca %S.json.Json, align 16 + %a219 = alloca %S.json.Json, align 16 + %a222 = alloca i64, align 16 + %a225 = alloca { ptr, i64, i64 }, align 16 + %a231 = alloca %S.json.Json, align 16 %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 + %a237 = alloca { ptr, i64, i64 }, align 16 %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 + %a244 = alloca %S.lsp.Analysis, align 16 + %a245 = alloca %S.lsp.Analysis, align 16 + %a247 = alloca %S.lsp.Analysis, align 16 %a248 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 + %a251 = alloca { ptr, i64, i64 }, align 16 + %a256 = alloca { ptr, i64, i64 }, align 16 %a259 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 + %a260 = alloca { ptr, i64, i64 }, align 16 + %a266 = alloca { ptr, i64, i64 }, align 16 + %a267 = 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 + %a282 = alloca %S.json.Json, align 16 + %a283 = alloca { ptr, i64, i64 }, align 16 + %a284 = alloca { ptr, i64, i64 }, align 16 + %a293 = alloca %S.json.Json, align 16 + %a294 = alloca { ptr, i64, i64 }, align 16 + %a295 = alloca { ptr, i64, i64 }, align 16 + %a305 = alloca %S.json.Json, align 16 + %a306 = alloca { ptr, i64, i64 }, align 16 + %a307 = alloca { ptr, i64, i64 }, align 16 + %a314 = alloca %S.json.Json, align 16 + %a322 = alloca %S.json.Json, align 16 + %a328 = 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.6763, i64 6, i64 0 }) + %t2 = call %S.json.Json @finch.json.Json.get(ptr %a1, { ptr, i64, i64 } { ptr @.str.6980, 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 }) + %t4 = call { ptr, i64, i64 } @finch.json.Json.str_or(ptr %a3, { ptr, i64, i64 } { ptr @.str.6981, i64 0, i64 0 }) + call void @finch.drop.S_json_Json(ptr %a3) 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 }) + %t6 = call %S.json.Json @finch.json.Json.get(ptr %a1, { ptr, i64, i64 } { ptr @.str.6982, 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 }) + %t8 = call %S.json.Json @finch.json.Json.get(ptr %a1, { ptr, i64, i64 } { ptr @.str.6983, 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 + store { ptr, i64, i64 } { ptr @.str.6984, 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: + br i1 %t14, label %match.arm10756, label %match.next10757 +match.arm10756: %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) + call void @finch.json.Json.set(ptr %a16, { ptr, i64, i64 } { ptr @.str.6985, i64 16, i64 0 }, %S.json.Json %t17) + store %S.json.Json %t17, ptr %a18 + call void @finch.drop.S_json_Json(ptr %a18) %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() + call void @finch.json.Json.set(ptr %a16, { ptr, i64, i64 } { ptr @.str.6986, i64 13, i64 0 }, %S.json.Json %t19) + store %S.json.Json %t19, ptr %a20 + call void @finch.drop.S_json_Json(ptr %a20) + %t21 = call %S.json.Json @finch.json.new_bool(i1 true) + call void @finch.json.Json.set(ptr %a16, { ptr, i64, i64 } { ptr @.str.6987, i64 18, i64 0 }, %S.json.Json %t21) store %S.json.Json %t21, ptr %a22 - %t23 = call %S.json.Json @finch.json.new_list() + call void @finch.drop.S_json_Json(ptr %a22) + %t23 = call %S.json.Json @finch.json.new_bool(i1 true) + call void @finch.json.Json.set(ptr %a16, { ptr, i64, i64 } { ptr @.str.6988, i64 22, i64 0 }, %S.json.Json %t23) 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() + call void @finch.drop.S_json_Json(ptr %a24) + %t25 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t25, ptr %a26 + %t27 = call %S.json.Json @finch.json.new_list() + store %S.json.Json %t27, ptr %a28 + %t29 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.6989, i64 1, i64 0 }) + call void @finch.json.Json.push(ptr %a28, %S.json.Json %t29) + store %S.json.Json %t29, ptr %a30 + call void @finch.drop.S_json_Json(ptr %a30) + %t31 = load %S.json.Json, ptr %a28 + call void @finch.json.Json.set(ptr %a26, { ptr, i64, i64 } { ptr @.str.6990, i64 17, i64 0 }, %S.json.Json %t31) + %t32 = load %S.json.Json, ptr %a26 + call void @finch.json.Json.set(ptr %a16, { ptr, i64, i64 } { ptr @.str.6991, i64 18, i64 0 }, %S.json.Json %t32) + %t33 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t33, ptr %a34 + %t35 = call %S.json.Json @finch.json.new_list() + store %S.json.Json %t35, ptr %a36 + %t37 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.6992, i64 1, i64 0 }) + call void @finch.json.Json.push(ptr %a36, %S.json.Json %t37) + store %S.json.Json %t37, ptr %a38 + call void @finch.drop.S_json_Json(ptr %a38) + %t39 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.6993, i64 1, i64 0 }) + call void @finch.json.Json.push(ptr %a36, %S.json.Json %t39) 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.drop.S_json_Json(ptr %a40) + %t41 = load %S.json.Json, ptr %a36 + call void @finch.json.Json.set(ptr %a34, { ptr, i64, i64 } { ptr @.str.6994, i64 17, i64 0 }, %S.json.Json %t41) + %t42 = load %S.json.Json, ptr %a34 + call void @finch.json.Json.set(ptr %a16, { ptr, i64, i64 } { ptr @.str.6995, i64 21, i64 0 }, %S.json.Json %t42) + %t43 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t43, ptr %a44 + %t45 = load %S.json.Json, ptr %a16 + call void @finch.json.Json.set(ptr %a44, { ptr, i64, i64 } { ptr @.str.6996, i64 12, i64 0 }, %S.json.Json %t45) + %t46 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t46, ptr %a47 + %t48 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.6998, i64 5, i64 0 }) + call void @finch.json.Json.set(ptr %a47, { ptr, i64, i64 } { ptr @.str.6997, i64 4, i64 0 }, %S.json.Json %t48) + store %S.json.Json %t48, ptr %a49 + call void @finch.drop.S_json_Json(ptr %a49) + %t50 = load %S.json.Json, ptr %a47 + call void @finch.json.Json.set(ptr %a44, { ptr, i64, i64 } { ptr @.str.6999, i64 10, i64 0 }, %S.json.Json %t50) + %t51 = load %S.json.Json, ptr %a9 + %t52 = load %S.json.Json, ptr %a44 + call void @finch.lsp.reply(%S.json.Json %t51, %S.json.Json %t52) + call void @finch.drop.S_json_Json(ptr %a47) + call void @finch.drop.S_json_Json(ptr %a44) + call void @finch.drop.S_json_Json(ptr %a36) + call void @finch.drop.S_json_Json(ptr %a34) + call void @finch.drop.S_json_Json(ptr %a28) + call void @finch.drop.S_json_Json(ptr %a26) + call void @finch.drop.S_json_Json(ptr %a16) + br label %match.end10755 +match.next10757: + store { ptr, i64, i64 } %t10, ptr %a53 + store { ptr, i64, i64 } { ptr @.str.7000, i64 8, i64 0 }, ptr %a54 + %t55 = call i32 @finch_str_eq(ptr %a53, ptr %a54) + %t56 = icmp ne i32 %t55, 0 + br i1 %t56, label %match.arm10758, label %match.next10759 +match.arm10758: + %t57 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 6 + store i1 true, ptr %t57 + %t58 = load %S.json.Json, ptr %a9 + %t59 = call %S.json.Json @finch.json.new_null() + call void @finch.lsp.reply(%S.json.Json %t58, %S.json.Json %t59) + store %S.json.Json %t59, ptr %a60 + call void @finch.drop.S_json_Json(ptr %a60) + br label %match.end10755 +match.next10759: + store { ptr, i64, i64 } %t10, ptr %a61 + store { ptr, i64, i64 } { ptr @.str.7001, i64 4, i64 0 }, ptr %a62 + %t63 = call i32 @finch_str_eq(ptr %a61, ptr %a62) + %t64 = icmp ne i32 %t63, 0 + br i1 %t64, label %match.arm10760, label %match.next10761 +match.arm10760: + %t65 = trunc i64 0 to i32 + %t66 = call i32 @fflush(ptr null) + call void @exit(i32 %t65) + br label %match.end10755 +match.next10761: + store { ptr, i64, i64 } %t10, ptr %a67 + store { ptr, i64, i64 } { ptr @.str.7002, i64 20, i64 0 }, ptr %a68 + %t69 = call i32 @finch_str_eq(ptr %a67, ptr %a68) + %t70 = icmp ne i32 %t69, 0 + br i1 %t70, label %match.arm10762, label %match.next10763 +match.arm10762: + %t71 = load %S.json.Json, ptr %a7 + %t72 = call { ptr, i64, i64 } @finch.lsp.pathOf(%S.json.Json %t71) + store { ptr, i64, i64 } %t72, ptr %a73 + %t74 = load %S.json.Json, ptr %a7 + %t75 = call { ptr, i64, i64 } @finch.lsp.textOf(%S.json.Json %t74) + %t76 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 + %t77 = load { ptr, i64, i64 }, ptr %a73 + store { ptr, i64, i64 } %t77, ptr %a78 + store i32 0, ptr %a79 + %t80 = call i64 @finch_map_slot(ptr %t76, ptr %a78, 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 %a79) + %t81 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t76, i32 0, i32 0 + %t82 = load ptr, ptr %t81 + %t83 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t82, i64 %t80 + %t84 = load i32, ptr %a79 + %t85 = icmp ne i32 %t84, 0 + br i1 %t85, label %map.new10764, label %map.have10765 +map.new10764: + %t86 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t83, i32 0, i32 1 + call void @finch_str_copy(ptr %t86, ptr %a78) + %t87 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t83, i32 0, i32 2 + store { ptr, i64, i64 } zeroinitializer, ptr %t87 + br label %map.have10765 +map.have10765: + %t88 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t83, i32 0, i32 2 + %t89 = load { ptr, i64, i64 }, ptr %t88 + store { ptr, i64, i64 } %t75, ptr %t88 + store { ptr, i64, i64 } %t89, ptr %a90 + call void @finch_str_drop(ptr %a90) + %t91 = load { ptr, i64, i64 }, ptr %a73 + call void @finch.lsp.Server.analyse(ptr %self, { ptr, i64, i64 } %t91) + call void @finch_str_drop(ptr %a73) + br label %match.end10755 +match.next10763: + store { ptr, i64, i64 } %t10, ptr %a92 + store { ptr, i64, i64 } { ptr @.str.7003, i64 22, i64 0 }, ptr %a93 + %t94 = call i32 @finch_str_eq(ptr %a92, ptr %a93) + %t95 = icmp ne i32 %t94, 0 + br i1 %t95, label %match.arm10766, label %match.next10767 +match.arm10766: + %t96 = load %S.json.Json, ptr %a7 + %t97 = call { ptr, i64, i64 } @finch.lsp.pathOf(%S.json.Json %t96) + store { ptr, i64, i64 } %t97, ptr %a98 + %t99 = call %S.json.Json @finch.json.Json.get(ptr %a7, { ptr, i64, i64 } { ptr @.str.7004, i64 14, i64 0 }) + store %S.json.Json %t99, ptr %a100 + %t101 = call i64 @finch.json.Json.len(ptr %a100) + %t102 = icmp sgt i64 %t101, 0 + br i1 %t102, label %then10768, label %endif10770 +then10768: + %t103 = call i64 @finch.json.Json.len(ptr %a100) + %t104 = sub i64 %t103, 1 + %t105 = call %S.json.Json @finch.json.Json.at(ptr %a100, i64 %t104) + store %S.json.Json %t105, ptr %a106 + %t107 = call %S.json.Json @finch.json.Json.get(ptr %a106, { ptr, i64, i64 } { ptr @.str.7005, i64 4, i64 0 }) + call void @finch.drop.S_json_Json(ptr %a106) + store %S.json.Json %t107, ptr %a108 + %t109 = call { ptr, i64, i64 } @finch.json.Json.str_or(ptr %a108, { ptr, i64, i64 } { ptr @.str.7006, i64 0, i64 0 }) + call void @finch.drop.S_json_Json(ptr %a108) + %t110 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 + %t111 = load { ptr, i64, i64 }, ptr %a98 + store { ptr, i64, i64 } %t111, ptr %a112 + store i32 0, ptr %a113 + %t114 = call i64 @finch_map_slot(ptr %t110, ptr %a112, 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 %a113) + %t115 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t110, i32 0, i32 0 + %t116 = load ptr, ptr %t115 + %t117 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t116, i64 %t114 + %t118 = load i32, ptr %a113 + %t119 = icmp ne i32 %t118, 0 + br i1 %t119, label %map.new10771, label %map.have10772 +map.new10771: + %t120 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t117, i32 0, i32 1 + call void @finch_str_copy(ptr %t120, ptr %a112) + %t121 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t117, i32 0, i32 2 + store { ptr, i64, i64 } zeroinitializer, ptr %t121 + br label %map.have10772 +map.have10772: + %t122 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t117, i32 0, i32 2 + %t123 = load { ptr, i64, i64 }, ptr %t122 + store { ptr, i64, i64 } %t109, ptr %t122 + store { ptr, i64, i64 } %t123, ptr %a124 + call void @finch_str_drop(ptr %a124) + %t125 = load { ptr, i64, i64 }, ptr %a98 call void @finch.lsp.Server.analyse(ptr %self, { ptr, i64, i64 } %t125) - br label %endif10251 -endif10251: - br label %match.end10229 -match.next10248: + br label %endif10770 +endif10770: + call void @finch.drop.S_json_Json(ptr %a100) + call void @finch_str_drop(ptr %a98) + br label %match.end10755 +match.next10767: store { ptr, i64, i64 } %t10, ptr %a126 - store { ptr, i64, i64 } { ptr @.str.6791, i64 21, i64 0 }, ptr %a127 + store { ptr, i64, i64 } { ptr @.str.7007, i64 20, 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: + br i1 %t129, label %match.arm10773, label %match.next10774 +match.arm10773: %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 @@ -90987,245 +108755,381 @@ match.arm10252: 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 + br i1 %t137, label %then10775, label %endif10777 +then10775: + %t138 = load { ptr, i64, i64 }, ptr %a132 + call void @finch.lsp.Server.analyse(ptr %self, { ptr, i64, i64 } %t138) + br label %endif10777 +endif10777: + call void @finch_str_drop(ptr %a132) + br label %match.end10755 +match.next10774: + store { ptr, i64, i64 } %t10, ptr %a139 + store { ptr, i64, i64 } { ptr @.str.7008, i64 21, i64 0 }, ptr %a140 + %t141 = call i32 @finch_str_eq(ptr %a139, ptr %a140) + %t142 = icmp ne i32 %t141, 0 + br i1 %t142, label %match.arm10778, label %match.next10779 +match.arm10778: + %t143 = load %S.json.Json, ptr %a7 + %t144 = call { ptr, i64, i64 } @finch.lsp.pathOf(%S.json.Json %t143) 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) + %t146 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 + %t147 = load { ptr, i64, i64 }, ptr %a145 + store { ptr, i64, i64 } %t147, ptr %a148 + %t149 = call i64 @finch_map_find(ptr %t146, ptr %a148, 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) + %t150 = icmp sge i64 %t149, 0 + br i1 %t150, label %remove.hit10780, label %remove.end10781 +remove.hit10780: + %t151 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t146, i32 0, i32 0 + %t152 = load ptr, ptr %t151 + %t153 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t152, i64 %t149 + %t154 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t153, i32 0, i32 1 + call void @finch_str_drop(ptr %t154) + %t155 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t153, i32 0, i32 2 + call void @finch_str_drop(ptr %t155) + call void @finch_map_remove_at(ptr %t146, i64 %t149, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64)) + br label %remove.end10781 +remove.end10781: + %t156 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 3 + %t157 = load { ptr, i64, i64 }, ptr %a145 + store { ptr, i64, i64 } %t157, ptr %a158 + %t159 = call i64 @finch_map_find(ptr %t156, ptr %a158, 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) + %t160 = icmp sge i64 %t159, 0 + br i1 %t160, label %remove.hit10782, label %remove.end10783 +remove.hit10782: + %t161 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t156, i32 0, i32 0 + %t162 = load ptr, ptr %t161 + %t163 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t162, i64 %t159 + %t164 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t163, i32 0, i32 1 + call void @finch_str_drop(ptr %t164) + %t165 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t163, i32 0, i32 2 + call void @finch.drop.S_lsp_Analysis(ptr %t165) + call void @finch_map_remove_at(ptr %t156, i64 %t159, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64)) + br label %remove.end10783 +remove.end10783: + %t166 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 4 + %t167 = load { ptr, i64, i64 }, ptr %a145 + store { ptr, i64, i64 } %t167, ptr %a168 + %t169 = call i64 @finch_map_find(ptr %t166, ptr %a168, 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) + %t170 = icmp sge i64 %t169, 0 + br i1 %t170, label %remove.hit10784, label %remove.end10785 +remove.hit10784: + %t171 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t166, i32 0, i32 0 + %t172 = load ptr, ptr %t171 + %t173 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t172, i64 %t169 + %t174 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t173, i32 0, i32 1 + call void @finch_str_drop(ptr %t174) + %t175 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t173, i32 0, i32 2 + call void @finch.drop.S_lsp_Analysis(ptr %t175) + call void @finch_map_remove_at(ptr %t166, i64 %t169, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64)) + br label %remove.end10785 +remove.end10785: + %t176 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t176, ptr %a177 + %t178 = load { ptr, i64, i64 }, ptr %a145 + %t179 = call { ptr, i64, i64 } @finch.lsp.pathToUri({ ptr, i64, i64 } %t178) + %t180 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t179) + store { ptr, i64, i64 } %t179, ptr %a181 + call void @finch_str_drop(ptr %a181) + call void @finch.json.Json.set(ptr %a177, { ptr, i64, i64 } { ptr @.str.7009, i64 3, i64 0 }, %S.json.Json %t180) + store %S.json.Json %t180, ptr %a182 + call void @finch.drop.S_json_Json(ptr %a182) + %t183 = call %S.json.Json @finch.json.new_list() + call void @finch.json.Json.set(ptr %a177, { ptr, i64, i64 } { ptr @.str.7010, i64 11, i64 0 }, %S.json.Json %t183) + store %S.json.Json %t183, ptr %a184 + call void @finch.drop.S_json_Json(ptr %a184) + %t185 = load %S.json.Json, ptr %a177 + call void @finch.lsp.notify({ ptr, i64, i64 } { ptr @.str.7011, i64 31, i64 0 }, %S.json.Json %t185) + call void @finch.drop.S_json_Json(ptr %a177) + call void @finch_str_drop(ptr %a145) + br label %match.end10755 +match.next10779: + store { ptr, i64, i64 } %t10, ptr %a186 + store { ptr, i64, i64 } { ptr @.str.7012, i64 18, i64 0 }, ptr %a187 + %t188 = call i32 @finch_str_eq(ptr %a186, ptr %a187) + %t189 = icmp ne i32 %t188, 0 + br i1 %t189, label %match.arm10786, label %match.or10788 +match.or10788: + store { ptr, i64, i64 } %t10, ptr %a190 + store { ptr, i64, i64 } { ptr @.str.7013, i64 23, i64 0 }, ptr %a191 + %t192 = call i32 @finch_str_eq(ptr %a190, ptr %a191) + %t193 = icmp ne i32 %t192, 0 + br i1 %t193, label %match.arm10786, label %match.or10789 +match.or10789: + store { ptr, i64, i64 } %t10, ptr %a194 + store { ptr, i64, i64 } { ptr @.str.7014, i64 23, i64 0 }, ptr %a195 + %t196 = call i32 @finch_str_eq(ptr %a194, ptr %a195) + %t197 = icmp ne i32 %t196, 0 + br i1 %t197, label %match.arm10786, label %match.or10790 +match.or10790: + store { ptr, i64, i64 } %t10, ptr %a198 + store { ptr, i64, i64 } { ptr @.str.7015, i64 27, i64 0 }, ptr %a199 + %t200 = call i32 @finch_str_eq(ptr %a198, ptr %a199) + %t201 = icmp ne i32 %t200, 0 + br i1 %t201, label %match.arm10786, label %match.or10791 +match.or10791: + store { ptr, i64, i64 } %t10, ptr %a202 + store { ptr, i64, i64 } { ptr @.str.7016, i64 26, i64 0 }, ptr %a203 + %t204 = call i32 @finch_str_eq(ptr %a202, ptr %a203) + %t205 = icmp ne i32 %t204, 0 + br i1 %t205, label %match.arm10786, label %match.next10787 +match.arm10786: + %t206 = load %S.json.Json, ptr %a7 + %t207 = call { ptr, i64, i64 } @finch.lsp.pathOf(%S.json.Json %t206) + store { ptr, i64, i64 } %t207, ptr %a208 + %t209 = call %S.json.Json @finch.json.Json.get(ptr %a7, { ptr, i64, i64 } { ptr @.str.7017, i64 8, i64 0 }) + store %S.json.Json %t209, ptr %a210 + %t211 = call %S.json.Json @finch.json.Json.get(ptr %a210, { ptr, i64, i64 } { ptr @.str.7018, i64 4, i64 0 }) + call void @finch.drop.S_json_Json(ptr %a210) + store %S.json.Json %t211, ptr %a212 + %t213 = call i64 @finch.json.Json.int_or(ptr %a212, i64 0) + call void @finch.drop.S_json_Json(ptr %a212) + %t214 = add i64 %t213, 1 + store i64 %t214, ptr %a215 + %t216 = call %S.json.Json @finch.json.Json.get(ptr %a7, { ptr, i64, i64 } { ptr @.str.7019, i64 8, i64 0 }) + store %S.json.Json %t216, ptr %a217 + %t218 = call %S.json.Json @finch.json.Json.get(ptr %a217, { ptr, i64, i64 } { ptr @.str.7020, i64 9, i64 0 }) + call void @finch.drop.S_json_Json(ptr %a217) + store %S.json.Json %t218, ptr %a219 + %t220 = call i64 @finch.json.Json.int_or(ptr %a219, i64 0) + call void @finch.drop.S_json_Json(ptr %a219) + %t221 = add i64 %t220, 1 + store i64 %t221, ptr %a222 + %t223 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 3 + %t224 = load { ptr, i64, i64 }, ptr %a208 + store { ptr, i64, i64 } %t224, ptr %a225 + %t226 = call i64 @finch_map_find(ptr %t223, ptr %a225, 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) + %t227 = icmp sge i64 %t226, 0 + %t228 = xor i1 %t227, true + br i1 %t228, label %then10792, label %endif10794 +then10792: + %t229 = load %S.json.Json, ptr %a9 + %t230 = call %S.json.Json @finch.json.new_null() + call void @finch.lsp.reply(%S.json.Json %t229, %S.json.Json %t230) + store %S.json.Json %t230, ptr %a231 + call void @finch.drop.S_json_Json(ptr %a231) + call void @finch_str_drop(ptr %a208) + call void @finch.drop.S_json_Json(ptr %a9) + call void @finch.drop.S_json_Json(ptr %a7) + call void @finch_str_drop(ptr %a5) 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 +endif10794: + %t232 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 3 + %t233 = load { ptr, i64, i64 }, ptr %a208 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 + %t235 = call i64 @finch_map_find(ptr %t232, ptr %a234, 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) + %t236 = icmp slt i64 %t235, 0 + br i1 %t236, label %map.missing10795, label %map.found10796 +map.missing10795: + store { ptr, i64, i64 } zeroinitializer, ptr %a237 + store { ptr, i64, i64 } %t233, ptr %a238 + call void @finch_buf_str(ptr %a237, ptr %a238, i32 1) + call void @finch_map_missing(ptr @.str.7021, i64 842, ptr %a237) + unreachable +map.found10796: + %t239 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t232, i32 0, i32 0 + %t240 = load ptr, ptr %t239 + %t241 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t240, i64 %t235 + %t242 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t241, i32 0, i32 2 + %t243 = load %S.lsp.Analysis, ptr %t242 + store %S.lsp.Analysis %t243, ptr %a244 + call void @finch.copy.S_lsp_Analysis(ptr %a245, ptr %a244) + %t246 = load %S.lsp.Analysis, ptr %a245 + store %S.lsp.Analysis %t246, ptr %a247 + store { ptr, i64, i64 } { ptr @.str.7022, i64 0, i64 0 }, ptr %a248 + %t249 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 + %t250 = load { ptr, i64, i64 }, ptr %a208 + store { ptr, i64, i64 } %t250, ptr %a251 + %t252 = call i64 @finch_map_find(ptr %t249, ptr %a251, 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) + %t253 = icmp sge i64 %t252, 0 + br i1 %t253, label %then10797, label %endif10799 +then10797: + %t254 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 + %t255 = load { ptr, i64, i64 }, ptr %a208 + store { ptr, i64, i64 } %t255, ptr %a256 + %t257 = call i64 @finch_map_find(ptr %t254, ptr %a256, 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) + %t258 = icmp slt i64 %t257, 0 + br i1 %t258, label %map.missing10800, label %map.found10801 +map.missing10800: + store { ptr, i64, i64 } zeroinitializer, ptr %a259 + store { ptr, i64, i64 } %t255, ptr %a260 + call void @finch_buf_str(ptr %a259, ptr %a260, i32 1) + call void @finch_map_missing(ptr @.str.7023, i64 845, ptr %a259) + unreachable +map.found10801: + %t261 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t254, i32 0, i32 0 + %t262 = load ptr, ptr %t261 + %t263 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t262, i64 %t257 + %t264 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t263, i32 0, i32 2 + %t265 = load { ptr, i64, i64 }, ptr %t264 + store { ptr, i64, i64 } %t265, ptr %a266 + call void @finch_str_copy(ptr %a267, ptr %a266) + %t268 = load { ptr, i64, i64 }, ptr %a267 + %t269 = load { ptr, i64, i64 }, ptr %a248 + store { ptr, i64, i64 } %t268, ptr %a248 + store { ptr, i64, i64 } %t269, ptr %a270 + call void @finch_str_drop(ptr %a270) + br label %endif10799 +endif10799: + %t271 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } %t271, ptr %a272 + store { ptr, i64, i64 } { ptr @.str.7024, i64 18, i64 0 }, ptr %a273 + %t274 = call i32 @finch_str_eq(ptr %a272, ptr %a273) + %t275 = icmp ne i32 %t274, 0 + br i1 %t275, label %match.arm10803, label %match.next10804 +match.arm10803: + %t276 = load %S.json.Json, ptr %a9 + %t277 = load %S.lsp.Analysis, ptr %a247 + %t278 = load { ptr, i64, i64 }, ptr %a208 + %t279 = load i64, ptr %a215 + %t280 = load i64, ptr %a222 + %t281 = call %S.json.Json @finch.lsp.hoverAt(%S.lsp.Analysis %t277, { ptr, i64, i64 } %t278, i64 %t279, i64 %t280) + call void @finch.lsp.reply(%S.json.Json %t276, %S.json.Json %t281) + store %S.json.Json %t281, ptr %a282 + call void @finch.drop.S_json_Json(ptr %a282) + br label %match.end10802 +match.next10804: + store { ptr, i64, i64 } %t271, ptr %a283 + store { ptr, i64, i64 } { ptr @.str.7025, i64 23, i64 0 }, ptr %a284 + %t285 = call i32 @finch_str_eq(ptr %a283, ptr %a284) %t286 = icmp ne i32 %t285, 0 - br i1 %t286, label %then10289, label %endif10291 -then10289: + br i1 %t286, label %match.arm10805, label %match.next10806 +match.arm10805: %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: + %t288 = load %S.lsp.Analysis, ptr %a247 + %t289 = load { ptr, i64, i64 }, ptr %a208 + %t290 = load i64, ptr %a215 + %t291 = load i64, ptr %a222 + %t292 = call %S.json.Json @finch.lsp.definitionAt(%S.lsp.Analysis %t288, { ptr, i64, i64 } %t289, i64 %t290, i64 %t291) + call void @finch.lsp.reply(%S.json.Json %t287, %S.json.Json %t292) + store %S.json.Json %t292, ptr %a293 + call void @finch.drop.S_json_Json(ptr %a293) + br label %match.end10802 +match.next10806: + store { ptr, i64, i64 } %t271, ptr %a294 + store { ptr, i64, i64 } { ptr @.str.7026, i64 23, i64 0 }, ptr %a295 + %t296 = call i32 @finch_str_eq(ptr %a294, ptr %a295) + %t297 = icmp ne i32 %t296, 0 + br i1 %t297, label %match.arm10807, label %match.next10808 +match.arm10807: + %t298 = load %S.json.Json, ptr %a9 + %t299 = load %S.lsp.Analysis, ptr %a247 + %t300 = load { ptr, i64, i64 }, ptr %a248 + %t301 = load { ptr, i64, i64 }, ptr %a208 + %t302 = load i64, ptr %a215 + %t303 = load i64, ptr %a222 + %t304 = call %S.json.Json @finch.lsp.completionAt(%S.lsp.Analysis %t299, { ptr, i64, i64 } %t300, { ptr, i64, i64 } %t301, i64 %t302, i64 %t303) + call void @finch.lsp.reply(%S.json.Json %t298, %S.json.Json %t304) + store %S.json.Json %t304, ptr %a305 + call void @finch.drop.S_json_Json(ptr %a305) + br label %match.end10802 +match.next10808: + store { ptr, i64, i64 } %t271, ptr %a306 + store { ptr, i64, i64 } { ptr @.str.7027, i64 27, i64 0 }, ptr %a307 + %t308 = call i32 @finch_str_eq(ptr %a306, ptr %a307) + %t309 = icmp ne i32 %t308, 0 + br i1 %t309, label %match.arm10809, label %match.next10810 +match.arm10809: + %t310 = load %S.json.Json, ptr %a9 + %t311 = load %S.lsp.Analysis, ptr %a247 + %t312 = load { ptr, i64, i64 }, ptr %a208 + %t313 = call %S.json.Json @finch.lsp.symbolsOf(%S.lsp.Analysis %t311, { ptr, i64, i64 } %t312) + call void @finch.lsp.reply(%S.json.Json %t310, %S.json.Json %t313) + store %S.json.Json %t313, ptr %a314 + call void @finch.drop.S_json_Json(ptr %a314) + br label %match.end10802 +match.next10810: + br label %match.arm10811 +match.arm10811: + %t315 = load %S.json.Json, ptr %a9 + %t316 = load %S.lsp.Analysis, ptr %a247 + %t317 = load { ptr, i64, i64 }, ptr %a248 + %t318 = load { ptr, i64, i64 }, ptr %a208 + %t319 = load i64, ptr %a215 + %t320 = load i64, ptr %a222 + %t321 = call %S.json.Json @finch.lsp.signatureAt(%S.lsp.Analysis %t316, { ptr, i64, i64 } %t317, { ptr, i64, i64 } %t318, i64 %t319, i64 %t320) + call void @finch.lsp.reply(%S.json.Json %t315, %S.json.Json %t321) + store %S.json.Json %t321, ptr %a322 + call void @finch.drop.S_json_Json(ptr %a322) + br label %match.end10802 +match.end10802: + call void @finch_str_drop(ptr %a248) + call void @finch.drop.S_lsp_Analysis(ptr %a247) + call void @finch_str_drop(ptr %a208) + br label %match.end10755 +match.next10787: + br label %match.arm10813 +match.arm10813: + %t323 = getelementptr inbounds %S.json.Json, ptr %a9, i32 0, i32 0 + %t324 = load i32, ptr %t323 + %t325 = icmp ne i32 %t324, 0 + br i1 %t325, label %then10815, label %endif10817 +then10815: + %t326 = load %S.json.Json, ptr %a9 + %t327 = call %S.json.Json @finch.json.new_null() + call void @finch.lsp.reply(%S.json.Json %t326, %S.json.Json %t327) + store %S.json.Json %t327, ptr %a328 + call void @finch.drop.S_json_Json(ptr %a328) + br label %endif10817 +endif10817: + br label %match.end10755 +match.end10755: + call void @finch.drop.S_json_Json(ptr %a9) + call void @finch.drop.S_json_Json(ptr %a7) + call void @finch_str_drop(ptr %a5) + ret void +} + +define internal void @finch.drop.map_str_S_lsp_Analysis(ptr %a) { +entry: + %a3 = alloca i64, align 16 + %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 2 + %t2 = load i64, ptr %t1 + store i64 0, ptr %a3 + br label %n.cond10823 +n.cond10823: + %t4 = load i64, ptr %a3 + %t5 = icmp slt i64 %t4, %t2 + br i1 %t5, label %n.body10824, label %n.end10825 +n.body10824: + %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 0 + %t7 = load ptr, ptr %t6 + %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t7, i64 %t4 + %t9 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t8, i32 0, i32 0 + %t10 = load i64, ptr %t9 + %t11 = icmp ne i64 %t10, 0 + br i1 %t11, label %entry.live10826, label %entry.next10827 +entry.live10826: + %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t8, i32 0, i32 1 + call void @finch_str_drop(ptr %t12) + %t13 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t8, i32 0, i32 2 + call void @finch.drop.S_lsp_Analysis(ptr %t13) + br label %entry.next10827 +entry.next10827: + %t14 = load i64, ptr %a3 + %t15 = add i64 %t14, 1 + store i64 %t15, ptr %a3 + br label %n.cond10823 +n.end10825: + call void @finch_map_free(ptr %a) + ret void +} + +define internal void @finch.drop.S_lsp_Server(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.lsp.Server, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.lsp.Server, ptr %a, i32 0, i32 1 + call void @finch_str_drop(ptr %t2) + %t3 = getelementptr inbounds %S.lsp.Server, ptr %a, i32 0, i32 2 + call void @finch.drop.map_str_str(ptr %t3) + %t4 = getelementptr inbounds %S.lsp.Server, ptr %a, i32 0, i32 3 + call void @finch.drop.map_str_S_lsp_Analysis(ptr %t4) + %t5 = getelementptr inbounds %S.lsp.Server, ptr %a, i32 0, i32 4 + call void @finch.drop.map_str_S_lsp_Analysis(ptr %t5) + %t6 = getelementptr inbounds %S.lsp.Server, ptr %a, i32 0, i32 5 + call void @finch.drop.arr_str(ptr %t6) ret void } @@ -91234,69 +109138,71 @@ entry: %a1 = alloca { ptr, i64, i64 }, align 16 %a3 = alloca { ptr, i64, i64 }, align 16 %a4 = 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 - %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 + %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 + %a19 = alloca { ptr, i64, i64 }, align 16 + %a20 = alloca { ptr, i64, i64 }, align 16 + %a23 = alloca %S.lsp.Server, 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 + %a30 = alloca %S.json.Json, align 16 store { ptr, i64, i64 } %p0, ptr %a1 + call void @finch.host.binaryStdio() %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) + %t7 = call { ptr, i64, i64 } @finch.host.tempDir() + store { ptr, i64, i64 } %t7, ptr %a9 + store { ptr, i64, i64 } { ptr @.str.7028, i64 11, i64 0 }, ptr %a10 + call void @finch_str_concat(ptr %a8, ptr %a9, ptr %a10) + store { ptr, i64, i64 } %t7, ptr %a11 + call void @finch_str_drop(ptr %a11) + %t12 = load { ptr, i64, i64 }, ptr %a8 + %t13 = call i64 @finch.host.pid() + call void @finch_str_from_int(ptr %a14, i64 %t13) + %t15 = load { ptr, i64, i64 }, ptr %a14 + store { ptr, i64, i64 } %t12, ptr %a17 + store { ptr, i64, i64 } %t15, ptr %a18 + call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) + store { ptr, i64, i64 } %t12, ptr %a19 + call void @finch_str_drop(ptr %a19) + store { ptr, i64, i64 } %t15, ptr %a20 + call void @finch_str_drop(ptr %a20) + %t21 = load { ptr, i64, i64 }, ptr %a16 + %t22 = insertvalue %S.lsp.Server %t6, { ptr, i64, i64 } %t21, 1 + store %S.lsp.Server %t22, ptr %a23 + br label %while.cond10818 +while.cond10818: + br label %while.body10819 +while.body10819: + %t24 = call { i1, %S.json.Json, { ptr, i64, i64 } } @finch.lsp.readMessage() + %t25 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t24, 0 + %t26 = xor i1 %t25, true + %t27 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t24, 2 + %t28 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t24, 1 + br i1 %t26, label %or.failed10821, label %or.ok10822 +or.failed10821: + store { ptr, i64, i64 } %t27, ptr %a29 + call void @finch_str_drop(ptr %a29) + br label %while.end10820 +or.ok10822: + store %S.json.Json %t28, ptr %a30 + %t31 = load %S.json.Json, ptr %a30 + call void @finch.lsp.Server.answer(ptr %a23, %S.json.Json %t31) + call void @finch.drop.S_json_Json(ptr %a30) + br label %while.cond10818 +while.end10820: + %t32 = getelementptr inbounds %S.lsp.Server, ptr %a23, i32 0, i32 1 + %t33 = load { ptr, i64, i64 }, ptr %t32 + call void @finch.host.removeTree({ ptr, i64, i64 } %t33) + call void @finch.drop.S_lsp_Server(ptr %a23) ret i64 0 } @@ -91371,35 +109277,35 @@ 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: + br i1 %t3, label %match.arm10829, label %match.or10831 +match.or10831: %t4 = icmp eq i32 %t2, 5 - br i1 %t4, label %match.arm10298, label %match.next10299 -match.arm10298: + br i1 %t4, label %match.arm10829, label %match.next10830 +match.arm10829: %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: + br label %match.from10832 +match.from10832: + br label %match.end10828 +match.next10830: %t8 = icmp eq i32 %t2, 3 - br i1 %t8, label %match.arm10302, label %match.next10303 -match.arm10302: + br i1 %t8, label %match.arm10833, label %match.next10834 +match.arm10833: %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 ] + br label %match.from10835 +match.from10835: + br label %match.end10828 +match.next10834: + br label %match.arm10836 +match.arm10836: + br label %match.from10838 +match.from10838: + br label %match.end10828 +match.end10828: + %t12 = phi i64 [ %t7, %match.from10832 ], [ %t11, %match.from10835 ], [ 0, %match.from10838 ] ret i64 %t12 } @@ -91414,10 +109320,10 @@ entry: %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: + br label %logic.from10839 +logic.from10839: + br i1 %t4, label %logic.rhs10840, label %logic.end10841 +logic.rhs10840: %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 @@ -91425,37 +109331,80 @@ logic.rhs10309: %t9 = load i64, ptr %t6 %t10 = load ptr, ptr %t5 store i64 0, ptr %a11 - br label %find.cond10311 -find.cond10311: + br label %find.cond10842 +find.cond10842: %t12 = load i64, ptr %a11 %t13 = icmp slt i64 %t12, %t9 - br i1 %t13, label %find.body10312, label %find.end10315 -find.body10312: + br i1 %t13, label %find.body10843, label %find.end10846 +find.body10843: %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: + br i1 %t19, label %find.hit10844, label %find.next10845 +find.hit10844: store i64 %t12, ptr %a8 - br label %find.end10315 -find.next10314: + br label %find.end10846 +find.next10845: %t20 = add i64 %t12, 1 store i64 %t20, ptr %a11 - br label %find.cond10311 -find.end10315: + br label %find.cond10842 +find.end10846: %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 ] + br label %logic.rend10847 +logic.rend10847: + br label %logic.end10841 +logic.end10841: + %t23 = phi i1 [ false, %logic.from10839 ], [ %t22, %logic.rend10847 ] ret i1 %t23 } +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.cond10861 +n.cond10861: + %t6 = load i64, ptr %a5 + %t7 = icmp slt i64 %t6, %t4 + br i1 %t7, label %n.body10862, label %n.end10863 +n.body10862: + %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.cond10861 +n.end10863: + 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.json.Json.get(ptr %self, { ptr, i64, i64 } %p0) { entry: %a1 = alloca { ptr, i64, i64 }, align 16 @@ -91470,11 +109419,11 @@ entry: %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: + br i1 %t4, label %then10848, label %endif10850 +then10848: %t5 = call %S.json.Json @finch.json.new_null() ret %S.json.Json %t5 -endif10319: +endif10850: %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 @@ -91482,46 +109431,46 @@ endif10319: %t10 = load i64, ptr %t7 %t11 = load ptr, ptr %t6 store i64 0, ptr %a12 - br label %find.cond10320 -find.cond10320: + br label %find.cond10851 +find.cond10851: %t13 = load i64, ptr %a12 %t14 = icmp slt i64 %t13, %t10 - br i1 %t14, label %find.body10321, label %find.end10324 -find.body10321: + br i1 %t14, label %find.body10852, label %find.end10855 +find.body10852: %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: + br i1 %t20, label %find.hit10853, label %find.next10854 +find.hit10853: store i64 %t13, ptr %a9 - br label %find.end10324 -find.next10323: + br label %find.end10855 +find.next10854: %t21 = add i64 %t13, 1 store i64 %t21, ptr %a12 - br label %find.cond10320 -find.end10324: + br label %find.cond10851 +find.end10855: %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: + br i1 %t25, label %then10856, label %endif10858 +then10856: %t26 = call %S.json.Json @finch.json.new_null() ret %S.json.Json %t26 -endif10327: +endif10858: %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) + br i1 %t31, label %range10859, label %inrange10860 +range10859: + call void @finch_panic_index(ptr @.str.7029, i64 84, i64 %t28, i64 %t30) unreachable -inrange10329: +inrange10860: %t32 = extractvalue { ptr, i64, i64 } %t29, 0 %t33 = getelementptr inbounds %S.json.Json, ptr %t32, i64 %t28 %t34 = load %S.json.Json, ptr %t33 @@ -91540,46 +109489,46 @@ entry: %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: + br label %logic.from10864 +logic.from10864: + br i1 %t4, label %logic.end10866, label %logic.rhs10865 +logic.rhs10865: %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: + br label %logic.rend10867 +logic.rend10867: + br label %logic.end10866 +logic.end10866: + %t7 = phi i1 [ true, %logic.from10864 ], [ %t6, %logic.rend10867 ] + br label %logic.from10868 +logic.from10868: + br i1 %t7, label %logic.end10870, label %logic.rhs10869 +logic.rhs10869: %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: + br label %logic.rend10871 +logic.rend10871: + br label %logic.end10870 +logic.end10870: + %t13 = phi i1 [ true, %logic.from10868 ], [ %t12, %logic.rend10871 ] + br i1 %t13, label %then10872, label %endif10874 +then10872: %t14 = call %S.json.Json @finch.json.new_null() ret %S.json.Json %t14 -endif10340: +endif10874: %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) + br i1 %t19, label %range10875, label %inrange10876 +range10875: + call void @finch_panic_index(ptr @.str.7030, i64 92, i64 %t16, i64 %t18) unreachable -inrange10342: +inrange10876: %t20 = extractvalue { ptr, i64, i64 } %t17, 0 %t21 = getelementptr inbounds %S.json.Json, ptr %t20, i64 %t16 %t22 = load %S.json.Json, ptr %t21 @@ -91600,15 +109549,15 @@ entry: %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: + br i1 %t4, label %then10877, label %endif10879 +then10877: %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: +endif10879: %t10 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t10, ptr %a11 call void @finch_str_copy(ptr %a12, ptr %a11) @@ -91623,12 +109572,12 @@ entry: %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: + br i1 %t4, label %then10880, label %endif10882 +then10880: %t5 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 2 %t6 = load double, ptr %t5 ret double %t6 -endif10348: +endif10882: %t7 = load double, ptr %a1 ret double %t7 } @@ -91640,13 +109589,13 @@ entry: %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: + br i1 %t4, label %then10883, label %endif10885 +then10883: %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: +endif10885: %t8 = load i64, ptr %a1 ret i64 %t8 } @@ -91658,12 +109607,12 @@ entry: %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: + br i1 %t4, label %then10886, label %endif10888 +then10886: %t5 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 1 %t6 = load i1, ptr %t5 ret i1 %t6 -endif10354: +endif10888: %t7 = load i1, ptr %a1 ret i1 %t7 } @@ -91713,10 +109662,11 @@ entry: %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 + %a35 = alloca %S.json.Json, align 16 + %a39 = alloca { ptr, i64, i64 }, align 16 + %a40 = alloca { ptr, i64, i64 }, align 16 + %a49 = alloca %S.json.Json, align 16 + %a50 = 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 @@ -91726,78 +109676,81 @@ entry: %t7 = load i64, ptr %t4 %t8 = load ptr, ptr %t3 store i64 0, ptr %a9 - br label %find.cond10355 -find.cond10355: + br label %find.cond10889 +find.cond10889: %t10 = load i64, ptr %a9 %t11 = icmp slt i64 %t10, %t7 - br i1 %t11, label %find.body10356, label %find.end10359 -find.body10356: + br i1 %t11, label %find.body10890, label %find.end10893 +find.body10890: %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: + br i1 %t17, label %find.hit10891, label %find.next10892 +find.hit10891: store i64 %t10, ptr %a6 - br label %find.end10359 -find.next10358: + br label %find.end10893 +find.next10892: %t18 = add i64 %t10, 1 store i64 %t18, ptr %a9 - br label %find.cond10355 -find.end10359: + br label %find.cond10889 +find.end10893: %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: + br i1 %t22, label %then10894, label %endif10896 +then10894: %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) + br i1 %t28, label %range10897, label %inrange10898 +range10897: + call void @finch_panic_index(ptr @.str.7031, i64 140, i64 %t25, i64 %t27) unreachable -inrange10364: +inrange10898: %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 + %t34 = load %S.json.Json, ptr %t30 store %S.json.Json %t33, ptr %t30 + store %S.json.Json %t34, ptr %a35 + call void @finch.drop.S_json_Json(ptr %a35) 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 +endif10896: + %t36 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 5 + %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %t36, i32 0, i32 1 + %t38 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t38, ptr %a39 + call void @finch_str_copy(ptr %a40, ptr %a39) + %t41 = load { ptr, i64, i64 }, ptr %a40 + %t42 = load i64, ptr %t37 + %t43 = add i64 %t42, 1 + call void @finch_arr_reserve(ptr %t36, i64 %t43, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t44 = load ptr, ptr %t36 + %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %t44, i64 %t42 + store { ptr, i64, i64 } %t41, ptr %t45 + store i64 %t43, ptr %t37 + %t46 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 4 + %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %t46, i32 0, i32 1 + %t48 = load %S.json.Json, ptr %a2 + store %S.json.Json %t48, ptr %a49 + call void @finch.copy.S_json_Json(ptr %a50, ptr %a49) + %t51 = load %S.json.Json, ptr %a50 + %t52 = load i64, ptr %t47 + %t53 = add i64 %t52, 1 + call void @finch_arr_reserve(ptr %t46, i64 %t53, i64 ptrtoint (ptr getelementptr (%S.json.Json, ptr null, i32 1) to i64)) + %t54 = load ptr, ptr %t46 + %t55 = getelementptr inbounds %S.json.Json, ptr %t54, i64 %t52 + store %S.json.Json %t51, ptr %t55 + store i64 %t53, ptr %t47 ret void } @@ -91811,30 +109764,33 @@ entry: %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 + %a65 = 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 + %a72 = alloca { ptr, i64, i64 }, align 16 + %a73 = alloca { ptr, i64, i64 }, align 16 + %a74 = alloca { ptr, i64, i64 }, align 16 + %a82 = alloca { ptr, i64, i64 }, align 16 + %a96 = alloca { ptr, i64, i64 }, align 16 + %a97 = 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 + store { ptr, i64, i64 } { ptr @.str.7032, 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: + br label %each.cond10899 +each.cond10899: %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: + br i1 %t13, label %each.body10900, label %each.end10902 +each.body10900: %t14 = load ptr, ptr %a1 %t15 = getelementptr inbounds i8, ptr %t14, i64 %t12 %t16 = load i8, ptr %t15 @@ -91844,145 +109800,152 @@ each.body10366: store i64 %t19, ptr %a20 %t21 = load i8, ptr %a17 %t22 = icmp eq i8 %t21, 34 - br i1 %t22, label %then10369, label %else10370 -then10369: + br i1 %t22, label %then10903, label %else10904 +then10903: %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 { ptr, i64, i64 } { ptr @.str.7033, i64 2, i64 0 }, ptr %t27 store i64 %t25, ptr %t23 - br label %endif10371 -else10370: + br label %endif10905 +else10904: %t28 = load i8, ptr %a17 %t29 = icmp eq i8 %t28, 92 - br i1 %t29, label %then10372, label %else10373 -then10372: + br i1 %t29, label %then10906, label %else10907 +then10906: %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 { ptr, i64, i64 } { ptr @.str.7034, i64 2, i64 0 }, ptr %t34 store i64 %t32, ptr %t30 - br label %endif10374 -else10373: + br label %endif10908 +else10907: %t35 = load i8, ptr %a17 %t36 = icmp eq i8 %t35, 10 - br i1 %t36, label %then10375, label %else10376 -then10375: + br i1 %t36, label %then10909, label %else10910 +then10909: %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 { ptr, i64, i64 } { ptr @.str.7035, i64 2, i64 0 }, ptr %t41 store i64 %t39, ptr %t37 - br label %endif10377 -else10376: + br label %endif10911 +else10910: %t42 = load i8, ptr %a17 %t43 = icmp eq i8 %t42, 13 - br i1 %t43, label %then10378, label %else10379 -then10378: + br i1 %t43, label %then10912, label %else10913 +then10912: %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 { ptr, i64, i64 } { ptr @.str.7036, i64 2, i64 0 }, ptr %t48 store i64 %t46, ptr %t44 - br label %endif10380 -else10379: + br label %endif10914 +else10913: %t49 = load i8, ptr %a17 %t50 = icmp eq i8 %t49, 9 - br i1 %t50, label %then10381, label %else10382 -then10381: + br i1 %t50, label %then10915, label %else10916 +then10915: %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 { ptr, i64, i64 } { ptr @.str.7037, i64 2, i64 0 }, ptr %t55 store i64 %t53, ptr %t51 - br label %endif10383 -else10382: + br label %endif10917 +else10916: %t56 = load i64, ptr %a20 %t57 = icmp slt i64 %t56, 32 - br i1 %t57, label %then10384, label %else10385 -then10384: + br i1 %t57, label %then10918, label %else10919 +then10918: %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 } { ptr @.str.7038, 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 + store { ptr, i64, i64 } %t61, ptr %a65 + call void @finch_str_drop(ptr %a65) + %t66 = load { ptr, i64, i64 }, ptr %a62 + %t67 = load i64, ptr %a20 + %t68 = srem i64 %t67, 16 + %t69 = call { ptr, i64, i64 } @finch.json.hexdigit(i64 %t68) + store { ptr, i64, i64 } %t66, ptr %a71 + store { ptr, i64, i64 } %t69, ptr %a72 + call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) + store { ptr, i64, i64 } %t66, ptr %a73 + call void @finch_str_drop(ptr %a73) + store { ptr, i64, i64 } %t69, ptr %a74 + call void @finch_str_drop(ptr %a74) + %t75 = load { ptr, i64, i64 }, ptr %a70 + %t76 = load i64, ptr %t58 + %t77 = add i64 %t76, 1 + call void @finch_arr_reserve(ptr %a8, i64 %t77, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t78 = load ptr, ptr %a8 + %t79 = getelementptr inbounds { ptr, i64, i64 }, ptr %t78, i64 %t76 + store { ptr, i64, i64 } %t75, ptr %t79 + store i64 %t77, ptr %t58 + br label %endif10920 +else10919: + %t80 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 + %t81 = load i8, ptr %a17 + call void @finch_str_from_char(ptr %a82, i8 signext %t81) + %t83 = load { ptr, i64, i64 }, ptr %a82 + %t84 = load i64, ptr %t80 + %t85 = add i64 %t84, 1 + call void @finch_arr_reserve(ptr %a8, i64 %t85, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t86 = load ptr, ptr %a8 + %t87 = getelementptr inbounds { ptr, i64, i64 }, ptr %t86, i64 %t84 + store { ptr, i64, i64 } %t83, ptr %t87 + store i64 %t85, ptr %t80 + br label %endif10920 +endif10920: + br label %endif10917 +endif10917: + br label %endif10914 +endif10914: + br label %endif10911 +endif10911: + br label %endif10908 +endif10908: + br label %endif10905 +endif10905: + br label %each.step10901 +each.step10901: + %t88 = load i64, ptr %a9 %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 + store i64 %t89, ptr %a9 + br label %each.cond10899 +each.end10902: + %t90 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 + %t91 = load i64, ptr %t90 + %t92 = add i64 %t91, 1 + call void @finch_arr_reserve(ptr %a8, i64 %t92, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t93 = load ptr, ptr %a8 + %t94 = getelementptr inbounds { ptr, i64, i64 }, ptr %t93, i64 %t91 + store { ptr, i64, i64 } { ptr @.str.7039, i64 1, i64 0 }, ptr %t94 + store i64 %t92, ptr %t90 + %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.7040, i64 0, i64 0 }, ptr %a96 + call void @finch_str_join(ptr %a97, ptr %a8, ptr %a96) + %t98 = load { ptr, i64, i64 }, ptr %a97 + call void @finch.drop.arr_str(ptr %a8) + ret { ptr, i64, i64 } %t98 } define internal { ptr, i64, i64 } @finch.json.hexdigit(i64 %p0) { @@ -91991,21 +109954,22 @@ entry: %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 + store { ptr, i64, i64 } { ptr @.str.7041, 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) + br i1 %t6, label %range10921, label %inrange10922 +range10921: + call void @finch_panic_index(ptr @.str.7042, i64 175, i64 %t3, i64 %t5) unreachable -inrange10388: +inrange10922: %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 + call void @finch_str_drop(ptr %a2) ret { ptr, i64, i64 } %t11 } @@ -92020,37 +109984,37 @@ entry: %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: + br label %logic.from10923 +logic.from10923: + br i1 %t6, label %logic.rhs10924, label %logic.end10925 +logic.rhs10924: %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: + br label %logic.rend10926 +logic.rend10926: + br label %logic.end10925 +logic.end10925: + %t10 = phi i1 [ false, %logic.from10923 ], [ %t9, %logic.rend10926 ] + br label %logic.from10927 +logic.from10927: + br i1 %t10, label %logic.rhs10928, label %logic.end10929 +logic.rhs10928: %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: + br label %logic.rend10930 +logic.rend10930: + br label %logic.end10929 +logic.end10929: + %t13 = phi i1 [ false, %logic.from10927 ], [ %t12, %logic.rend10930 ] + br i1 %t13, label %then10931, label %endif10933 +then10931: %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: +endif10933: %t18 = load double, ptr %a1 call void @finch_str_from_float(ptr %a19, double %t18) %t20 = load { ptr, i64, i64 }, ptr %a19 @@ -92067,516 +110031,560 @@ entry: %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 + %a13 = 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 + %a17 = alloca { ptr, i64, i64 }, align 16 + %a18 = alloca { ptr, i64, i64 }, align 16 + %a21 = alloca { ptr, i64, i64 }, align 16 + %a23 = 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 + %a105 = alloca i64, align 16 + %a113 = alloca i64, align 16 + %a114 = alloca %S.json.Json, align 16 + %a123 = alloca { ptr, i64, i64 }, align 16 + %a124 = alloca { ptr, i64, i64 }, align 16 + %a125 = alloca { ptr, i64, i64 }, align 16 + %a136 = alloca { ptr, i64, i64 }, align 16 + %a137 = 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 + %a156 = alloca { ptr, i64, i64 }, align 16 + %a157 = 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 + %a162 = alloca { ptr, i64, i64 }, align 16 + %a186 = alloca { ptr, i64, i64 }, align 16 + %a187 = alloca { ptr, i64, i64 }, align 16 + %a188 = alloca { ptr, i64, i64 }, align 16 + %a195 = alloca i64, align 16 + %a203 = alloca i64, align 16 + %a204 = alloca %S.json.Json, align 16 + %a213 = alloca { ptr, i64, i64 }, align 16 + %a214 = alloca { ptr, i64, i64 }, align 16 + %a215 = 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 + %a236 = alloca { ptr, i64, i64 }, align 16 + %a237 = alloca { ptr, i64, i64 }, align 16 + %a238 = alloca { ptr, i64, i64 }, align 16 + %a241 = 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 + %a262 = alloca { ptr, i64, i64 }, align 16 + %a263 = alloca { ptr, i64, i64 }, align 16 + %a264 = alloca { ptr, i64, i64 }, align 16 + %a266 = alloca { ptr, i64, i64 }, align 16 + %a267 = alloca { ptr, i64, i64 }, align 16 + %a268 = alloca { ptr, i64, i64 }, align 16 + %a269 = 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 + store { ptr, i64, i64 } { ptr @.str.7043, i64 0, i64 0 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.7044, i64 0, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.7045, i64 1, i64 0 }, ptr %a7 + store { ptr, i64, i64 } { ptr @.str.7046, 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) + br i1 %t11, label %then10934, label %endif10936 +then10934: + %t12 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.7047, i64 1, i64 0 }, ptr %a5 + store { ptr, i64, i64 } %t12, ptr %a13 + call void @finch_str_drop(ptr %a13) + %t14 = load { ptr, i64, i64 }, ptr %a3 + %t15 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t14, 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 + %t20 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t19, ptr %a6 + store { ptr, i64, i64 } %t20, ptr %a21 + call void @finch_str_drop(ptr %a21) + %t22 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.7048, i64 2, i64 0 }, ptr %a8 + store { ptr, i64, i64 } %t22, ptr %a23 + call void @finch_str_drop(ptr %a23) + br label %endif10936 +endif10936: + %t24 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 0 + %t25 = load i32, ptr %t24 + %t26 = icmp eq i32 %t25, 0 + br i1 %t26, label %match.arm10938, label %match.next10939 +match.arm10938: + %t27 = load ptr, ptr %a4 + %t28 = icmp eq ptr %t27, null + br i1 %t28, label %panic10940, label %ok10941 +panic10940: + call void @finch_panic(ptr @.str.7049, i64 200, ptr @.str.7050) 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) +ok10941: + %t29 = getelementptr inbounds %S.json.Writer, ptr %t27, i32 0, i32 0 + %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i32 0, i32 1 + %t31 = load i64, ptr %t30 + %t32 = add i64 %t31, 1 + call void @finch_arr_reserve(ptr %t29, i64 %t32, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t33 = load ptr, ptr %t29 + %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t33, i64 %t31 + store { ptr, i64, i64 } { ptr @.str.7051, i64 4, i64 0 }, ptr %t34 + store i64 %t32, ptr %t30 + br label %match.end10937 +match.next10939: + %t35 = icmp eq i32 %t25, 1 + br i1 %t35, label %match.arm10942, label %match.next10943 +match.arm10942: + %t36 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 1 + %t37 = load i1, ptr %t36 + br i1 %t37, label %then10944, label %else10945 +then10944: + %t38 = load ptr, ptr %a4 + %t39 = icmp eq ptr %t38, null + br i1 %t39, label %panic10947, label %ok10948 +panic10947: + call void @finch_panic(ptr @.str.7052, i64 203, ptr @.str.7053) 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) +ok10948: + %t40 = getelementptr inbounds %S.json.Writer, ptr %t38, i32 0, i32 0 + %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i32 0, i32 1 + %t42 = load i64, ptr %t41 + %t43 = add i64 %t42, 1 + call void @finch_arr_reserve(ptr %t40, i64 %t43, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t44 = load ptr, ptr %t40 + %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %t44, i64 %t42 + store { ptr, i64, i64 } { ptr @.str.7054, i64 4, i64 0 }, ptr %t45 + store i64 %t43, ptr %t41 + br label %endif10946 +else10945: + %t46 = load ptr, ptr %a4 + %t47 = icmp eq ptr %t46, null + br i1 %t47, label %panic10949, label %ok10950 +panic10949: + call void @finch_panic(ptr @.str.7055, i64 205, ptr @.str.7056) 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) +ok10950: + %t48 = getelementptr inbounds %S.json.Writer, ptr %t46, i32 0, i32 0 + %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %t48, i32 0, i32 1 + %t50 = load i64, ptr %t49 + %t51 = add i64 %t50, 1 + call void @finch_arr_reserve(ptr %t48, i64 %t51, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t52 = load ptr, ptr %t48 + %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %t52, i64 %t50 + store { ptr, i64, i64 } { ptr @.str.7057, i64 5, i64 0 }, ptr %t53 + store i64 %t51, ptr %t49 + br label %endif10946 +endif10946: + br label %match.end10937 +match.next10943: + %t54 = icmp eq i32 %t25, 2 + br i1 %t54, label %match.arm10951, label %match.next10952 +match.arm10951: + %t55 = load ptr, ptr %a4 + %t56 = icmp eq ptr %t55, null + br i1 %t56, label %panic10953, label %ok10954 +panic10953: + call void @finch_panic(ptr @.str.7058, i64 208, ptr @.str.7059) 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) +ok10954: + %t57 = getelementptr inbounds %S.json.Writer, ptr %t55, i32 0, i32 0 + %t58 = getelementptr inbounds { ptr, i64, i64 }, ptr %t57, i32 0, i32 1 + %t59 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 2 + %t60 = load double, ptr %t59 + %t61 = call { ptr, i64, i64 } @finch.json.number_text(double %t60) + %t62 = load i64, ptr %t58 + %t63 = add i64 %t62, 1 + call void @finch_arr_reserve(ptr %t57, i64 %t63, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t64 = load ptr, ptr %t57 + %t65 = getelementptr inbounds { ptr, i64, i64 }, ptr %t64, i64 %t62 + store { ptr, i64, i64 } %t61, ptr %t65 + store i64 %t63, ptr %t58 + br label %match.end10937 +match.next10952: + %t66 = icmp eq i32 %t25, 3 + br i1 %t66, label %match.arm10955, label %match.next10956 +match.arm10955: + %t67 = load ptr, ptr %a4 + %t68 = icmp eq ptr %t67, null + br i1 %t68, label %panic10957, label %ok10958 +panic10957: + call void @finch_panic(ptr @.str.7060, i64 209, ptr @.str.7061) 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 +ok10958: + %t69 = getelementptr inbounds %S.json.Writer, ptr %t67, i32 0, i32 0 + %t70 = getelementptr inbounds { ptr, i64, i64 }, ptr %t69, i32 0, i32 1 + %t71 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 3 + %t72 = load { ptr, i64, i64 }, ptr %t71 + %t73 = call { ptr, i64, i64 } @finch.json.quote({ ptr, i64, i64 } %t72) + %t74 = load i64, ptr %t70 + %t75 = add i64 %t74, 1 + call void @finch_arr_reserve(ptr %t69, i64 %t75, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t76 = load ptr, ptr %t69 + %t77 = getelementptr inbounds { ptr, i64, i64 }, ptr %t76, i64 %t74 + store { ptr, i64, i64 } %t73, ptr %t77 + store i64 %t75, ptr %t70 + br label %match.end10937 +match.next10956: + %t78 = icmp eq i32 %t25, 4 + br i1 %t78, label %match.arm10959, label %match.next10960 +match.arm10959: + %t79 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 4 %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 + %t82 = icmp eq i64 %t81, 0 + br i1 %t82, label %then10961, label %endif10963 +then10961: + %t83 = load ptr, ptr %a4 + %t84 = icmp eq ptr %t83, null + br i1 %t84, label %panic10964, label %ok10965 +panic10964: + call void @finch_panic(ptr @.str.7062, i64 212, ptr @.str.7063) + unreachable +ok10965: + %t85 = getelementptr inbounds %S.json.Writer, ptr %t83, i32 0, i32 0 + %t86 = getelementptr inbounds { ptr, i64, i64 }, ptr %t85, i32 0, i32 1 + %t87 = load i64, ptr %t86 + %t88 = add i64 %t87, 1 + call void @finch_arr_reserve(ptr %t85, i64 %t88, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t89 = load ptr, ptr %t85 + %t90 = getelementptr inbounds { ptr, i64, i64 }, ptr %t89, i64 %t87 + store { ptr, i64, i64 } { ptr @.str.7064, i64 2, i64 0 }, ptr %t90 + store i64 %t88, ptr %t86 + call void @finch_str_drop(ptr %a8) + call void @finch_str_drop(ptr %a7) + call void @finch_str_drop(ptr %a6) + call void @finch_str_drop(ptr %a5) 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) +endif10963: + %t91 = load ptr, ptr %a4 + %t92 = icmp eq ptr %t91, null + br i1 %t92, label %panic10966, label %ok10967 +panic10966: + call void @finch_panic(ptr @.str.7065, i64 215, ptr @.str.7066) 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) +ok10967: + %t93 = getelementptr inbounds %S.json.Writer, ptr %t91, i32 0, i32 0 + %t94 = getelementptr inbounds { ptr, i64, i64 }, ptr %t93, i32 0, i32 1 + %t95 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.7067, i64 1, 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 + %t100 = load i64, ptr %t94 + %t101 = add i64 %t100, 1 + call void @finch_arr_reserve(ptr %t93, i64 %t101, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t102 = load ptr, ptr %t93 + %t103 = getelementptr inbounds { ptr, i64, i64 }, ptr %t102, i64 %t100 + store { ptr, i64, i64 } %t99, ptr %t103 + store i64 %t101, ptr %t94 + %t104 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 4 + store i64 0, ptr %a105 + br label %each.cond10968 +each.cond10968: + %t106 = getelementptr inbounds { ptr, i64, i64 }, ptr %t104, i32 0, i32 1 + %t107 = load i64, ptr %t106 + %t108 = load i64, ptr %a105 + %t109 = icmp slt i64 %t108, %t107 + br i1 %t109, label %each.body10969, label %each.end10971 +each.body10969: + %t110 = load ptr, ptr %t104 + %t111 = getelementptr inbounds %S.json.Json, ptr %t110, i64 %t108 + %t112 = load %S.json.Json, ptr %t111 + store i64 %t108, ptr %a113 + store %S.json.Json %t112, ptr %a114 + %t115 = load i64, ptr %a113 + %t116 = icmp sgt i64 %t115, 0 + br i1 %t116, label %then10972, label %endif10974 +then10972: + %t117 = load ptr, ptr %a4 + %t118 = icmp eq ptr %t117, null + br i1 %t118, label %panic10975, label %ok10976 +panic10975: + call void @finch_panic(ptr @.str.7068, i64 218, ptr @.str.7069) 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) +ok10976: + %t119 = getelementptr inbounds %S.json.Writer, ptr %t117, i32 0, i32 0 + %t120 = getelementptr inbounds { ptr, i64, i64 }, ptr %t119, i32 0, i32 1 + %t121 = load { ptr, i64, i64 }, ptr %a7 + %t122 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } %t121, 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 + %t127 = load i64, ptr %t120 + %t128 = add i64 %t127, 1 + call void @finch_arr_reserve(ptr %t119, i64 %t128, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t129 = load ptr, ptr %t119 + %t130 = getelementptr inbounds { ptr, i64, i64 }, ptr %t129, i64 %t127 + store { ptr, i64, i64 } %t126, ptr %t130 + store i64 %t128, ptr %t120 + br label %endif10974 +endif10974: + %t131 = load ptr, ptr %a4 + %t132 = icmp eq ptr %t131, null + br i1 %t132, label %panic10977, label %ok10978 +panic10977: + call void @finch_panic(ptr @.str.7070, i64 220, ptr @.str.7071) 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) +ok10978: + %t133 = getelementptr inbounds %S.json.Writer, ptr %t131, i32 0, i32 0 + %t134 = getelementptr inbounds { ptr, i64, i64 }, ptr %t133, i32 0, i32 1 + %t135 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t135, ptr %a136 + call void @finch_str_copy(ptr %a137, ptr %a136) + %t138 = load { ptr, i64, i64 }, ptr %a137 + %t139 = load i64, ptr %t134 + %t140 = add i64 %t139, 1 + call void @finch_arr_reserve(ptr %t133, i64 %t140, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t141 = load ptr, ptr %t133 + %t142 = getelementptr inbounds { ptr, i64, i64 }, ptr %t141, i64 %t139 + store { ptr, i64, i64 } %t138, ptr %t142 + store i64 %t140, ptr %t134 + %t143 = load %S.json.Json, ptr %a114 + %t144 = load { ptr, i64, i64 }, ptr %a2 + %t145 = load { ptr, i64, i64 }, ptr %a6 + %t146 = load ptr, ptr %a4 + call void @finch.json.write(%S.json.Json %t143, { ptr, i64, i64 } %t144, { ptr, i64, i64 } %t145, ptr %t146) + br label %each.step10970 +each.step10970: + %t147 = load i64, ptr %a105 + %t148 = add i64 %t147, 1 + store i64 %t148, ptr %a105 + br label %each.cond10968 +each.end10971: + %t149 = load ptr, ptr %a4 + %t150 = icmp eq ptr %t149, null + br i1 %t150, label %panic10979, label %ok10980 +panic10979: + call void @finch_panic(ptr @.str.7072, i64 223, ptr @.str.7073) 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) +ok10980: + %t151 = getelementptr inbounds %S.json.Writer, ptr %t149, i32 0, i32 0 + %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %t151, i32 0, i32 1 + %t153 = load { ptr, i64, i64 }, ptr %a5 + %t154 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t153, 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.7074, i64 1, i64 0 }, ptr %a161 + call void @finch_str_concat(ptr %a159, ptr %a160, ptr %a161) + store { ptr, i64, i64 } %t158, ptr %a162 + call void @finch_str_drop(ptr %a162) + %t163 = load { ptr, i64, i64 }, ptr %a159 + %t164 = load i64, ptr %t152 + %t165 = add i64 %t164, 1 + call void @finch_arr_reserve(ptr %t151, i64 %t165, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t166 = load ptr, ptr %t151 + %t167 = getelementptr inbounds { ptr, i64, i64 }, ptr %t166, i64 %t164 + store { ptr, i64, i64 } %t163, ptr %t167 + store i64 %t165, ptr %t152 + br label %match.end10937 +match.next10960: + %t168 = icmp eq i32 %t25, 5 + br i1 %t168, label %match.arm10981, label %match.next10982 +match.arm10981: + %t169 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 4 + %t170 = getelementptr inbounds { ptr, i64, i64 }, ptr %t169, i32 0, i32 1 + %t171 = load i64, ptr %t170 + %t172 = icmp eq i64 %t171, 0 + br i1 %t172, label %then10983, label %endif10985 +then10983: + %t173 = load ptr, ptr %a4 + %t174 = icmp eq ptr %t173, null + br i1 %t174, label %panic10986, label %ok10987 +panic10986: + call void @finch_panic(ptr @.str.7075, i64 227, ptr @.str.7076) 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 +ok10987: + %t175 = getelementptr inbounds %S.json.Writer, ptr %t173, i32 0, i32 0 + %t176 = getelementptr inbounds { ptr, i64, i64 }, ptr %t175, i32 0, i32 1 + %t177 = load i64, ptr %t176 + %t178 = add i64 %t177, 1 + call void @finch_arr_reserve(ptr %t175, i64 %t178, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t179 = load ptr, ptr %t175 + %t180 = getelementptr inbounds { ptr, i64, i64 }, ptr %t179, i64 %t177 + store { ptr, i64, i64 } { ptr @.str.7077, i64 2, i64 0 }, ptr %t180 + store i64 %t178, ptr %t176 + call void @finch_str_drop(ptr %a8) + call void @finch_str_drop(ptr %a7) + call void @finch_str_drop(ptr %a6) + call void @finch_str_drop(ptr %a5) 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) +endif10985: + %t181 = load ptr, ptr %a4 + %t182 = icmp eq ptr %t181, null + br i1 %t182, label %panic10988, label %ok10989 +panic10988: + call void @finch_panic(ptr @.str.7078, i64 230, ptr @.str.7079) 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) +ok10989: + %t183 = getelementptr inbounds %S.json.Writer, ptr %t181, i32 0, i32 0 + %t184 = getelementptr inbounds { ptr, i64, i64 }, ptr %t183, i32 0, i32 1 + %t185 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.7080, i64 1, 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 + %t190 = load i64, ptr %t184 + %t191 = add i64 %t190, 1 + call void @finch_arr_reserve(ptr %t183, i64 %t191, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t192 = load ptr, ptr %t183 + %t193 = getelementptr inbounds { ptr, i64, i64 }, ptr %t192, i64 %t190 + store { ptr, i64, i64 } %t189, ptr %t193 + store i64 %t191, ptr %t184 + %t194 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 4 + store i64 0, ptr %a195 + br label %each.cond10990 +each.cond10990: + %t196 = getelementptr inbounds { ptr, i64, i64 }, ptr %t194, i32 0, i32 1 + %t197 = load i64, ptr %t196 + %t198 = load i64, ptr %a195 + %t199 = icmp slt i64 %t198, %t197 + br i1 %t199, label %each.body10991, label %each.end10993 +each.body10991: + %t200 = load ptr, ptr %t194 + %t201 = getelementptr inbounds %S.json.Json, ptr %t200, i64 %t198 + %t202 = load %S.json.Json, ptr %t201 + store i64 %t198, ptr %a203 + store %S.json.Json %t202, ptr %a204 + %t205 = load i64, ptr %a203 + %t206 = icmp sgt i64 %t205, 0 + br i1 %t206, label %then10994, label %endif10996 +then10994: + %t207 = load ptr, ptr %a4 + %t208 = icmp eq ptr %t207, null + br i1 %t208, label %panic10997, label %ok10998 +panic10997: + call void @finch_panic(ptr @.str.7081, i64 233, ptr @.str.7082) 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) +ok10998: + %t209 = getelementptr inbounds %S.json.Writer, ptr %t207, i32 0, i32 0 + %t210 = getelementptr inbounds { ptr, i64, i64 }, ptr %t209, i32 0, i32 1 + %t211 = load { ptr, i64, i64 }, ptr %a7 + %t212 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } %t211, 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 = load i64, ptr %t210 + %t218 = add i64 %t217, 1 + call void @finch_arr_reserve(ptr %t209, i64 %t218, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t219 = load ptr, ptr %t209 + %t220 = getelementptr inbounds { ptr, i64, i64 }, ptr %t219, i64 %t217 + store { ptr, i64, i64 } %t216, ptr %t220 + store i64 %t218, ptr %t210 + br label %endif10996 +endif10996: + %t221 = load ptr, ptr %a4 + %t222 = icmp eq ptr %t221, null + br i1 %t222, label %panic10999, label %ok11000 +panic10999: + call void @finch_panic(ptr @.str.7083, i64 235, ptr @.str.7084) 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) +ok11000: + %t223 = getelementptr inbounds %S.json.Writer, ptr %t221, i32 0, i32 0 + %t224 = getelementptr inbounds { ptr, i64, i64 }, ptr %t223, i32 0, i32 1 + %t225 = load { ptr, i64, i64 }, ptr %a6 + %t226 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 5 + %t227 = load i64, ptr %a203 + %t228 = load { ptr, i64, i64 }, ptr %t226 + %t229 = extractvalue { ptr, i64, i64 } %t228, 1 + %t230 = icmp uge i64 %t227, %t229 + br i1 %t230, label %range11001, label %inrange11002 +range11001: + call void @finch_panic_index(ptr @.str.7085, i64 235, i64 %t227, i64 %t229) 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) +inrange11002: + %t231 = extractvalue { ptr, i64, i64 } %t228, 0 + %t232 = getelementptr inbounds { ptr, i64, i64 }, ptr %t231, i64 %t227 + %t233 = load { ptr, i64, i64 }, ptr %t232 + %t234 = call { ptr, i64, i64 } @finch.json.quote({ ptr, i64, i64 } %t233) + store { ptr, i64, i64 } %t225, ptr %a236 + store { ptr, i64, i64 } %t234, ptr %a237 + call void @finch_str_concat(ptr %a235, ptr %a236, ptr %a237) + store { ptr, i64, i64 } %t234, ptr %a238 + call void @finch_str_drop(ptr %a238) + %t239 = load { ptr, i64, i64 }, ptr %a235 + %t240 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t239, ptr %a242 + store { ptr, i64, i64 } %t240, ptr %a243 + call void @finch_str_concat(ptr %a241, ptr %a242, ptr %a243) + store { ptr, i64, i64 } %t239, ptr %a244 + call void @finch_str_drop(ptr %a244) + %t245 = load { ptr, i64, i64 }, ptr %a241 + %t246 = load i64, ptr %t224 + %t247 = add i64 %t246, 1 + call void @finch_arr_reserve(ptr %t223, i64 %t247, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t248 = load ptr, ptr %t223 + %t249 = getelementptr inbounds { ptr, i64, i64 }, ptr %t248, i64 %t246 + store { ptr, i64, i64 } %t245, ptr %t249 + store i64 %t247, ptr %t224 + %t250 = load %S.json.Json, ptr %a204 + %t251 = load { ptr, i64, i64 }, ptr %a2 + %t252 = load { ptr, i64, i64 }, ptr %a6 + %t253 = load ptr, ptr %a4 + call void @finch.json.write(%S.json.Json %t250, { ptr, i64, i64 } %t251, { ptr, i64, i64 } %t252, ptr %t253) + br label %each.step10992 +each.step10992: + %t254 = load i64, ptr %a195 + %t255 = add i64 %t254, 1 + store i64 %t255, ptr %a195 + br label %each.cond10990 +each.end10993: + %t256 = load ptr, ptr %a4 + %t257 = icmp eq ptr %t256, null + br i1 %t257, label %panic11003, label %ok11004 +panic11003: + call void @finch_panic(ptr @.str.7086, i64 238, ptr @.str.7087) 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) +ok11004: + %t258 = getelementptr inbounds %S.json.Writer, ptr %t256, i32 0, i32 0 + %t259 = getelementptr inbounds { ptr, i64, i64 }, ptr %t258, i32 0, i32 1 + %t260 = load { ptr, i64, i64 }, ptr %a5 + %t261 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t260, ptr %a263 + store { ptr, i64, i64 } %t261, 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 %a267 + store { ptr, i64, i64 } { ptr @.str.7088, i64 1, i64 0 }, ptr %a268 + call void @finch_str_concat(ptr %a266, ptr %a267, ptr %a268) + store { ptr, i64, i64 } %t265, ptr %a269 + call void @finch_str_drop(ptr %a269) + %t270 = load { ptr, i64, i64 }, ptr %a266 + %t271 = load i64, ptr %t259 + %t272 = add i64 %t271, 1 + call void @finch_arr_reserve(ptr %t258, i64 %t272, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t273 = load ptr, ptr %t258 + %t274 = getelementptr inbounds { ptr, i64, i64 }, ptr %t273, i64 %t271 + store { ptr, i64, i64 } %t270, ptr %t274 + store i64 %t272, ptr %t259 + br label %match.end10937 +match.next10982: + br i1 true, label %panic11005, label %ok11006 +panic11005: + call void @finch_panic(ptr @.str.7089, i64 199, ptr @.str.7090) unreachable -ok10472: +ok11006: unreachable -match.end10403: +match.end10937: + call void @finch_str_drop(ptr %a8) + call void @finch_str_drop(ptr %a7) + call void @finch_str_drop(ptr %a6) + call void @finch_str_drop(ptr %a5) + ret void +} + +define internal void @finch.drop.S_json_Writer(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.json.Writer, ptr %a, i32 0, i32 0 + call void @finch.drop.arr_str(ptr %t1) ret void } @@ -92589,12 +110597,13 @@ entry: 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) + call void @finch.json.write(%S.json.Json %t3, { ptr, i64, i64 } { ptr @.str.7091, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.7092, 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 + store { ptr, i64, i64 } { ptr @.str.7093, i64 0, i64 0 }, ptr %a6 call void @finch_str_join(ptr %a7, ptr %t4, ptr %a6) %t8 = load { ptr, i64, i64 }, ptr %a7 + call void @finch.drop.S_json_Writer(ptr %a2) ret { ptr, i64, i64 } %t8 } @@ -92607,12 +110616,13 @@ entry: 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) + call void @finch.json.write(%S.json.Json %t3, { ptr, i64, i64 } { ptr @.str.7094, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.7095, 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 + store { ptr, i64, i64 } { ptr @.str.7096, i64 0, i64 0 }, ptr %a6 call void @finch_str_join(ptr %a7, ptr %t4, ptr %a6) %t8 = load { ptr, i64, i64 }, ptr %a7 + call void @finch.drop.S_json_Writer(ptr %a2) ret { ptr, i64, i64 } %t8 } @@ -92626,113 +110636,125 @@ entry: %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 + %a42 = 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 + %a46 = alloca { ptr, i64, i64 }, align 16 + %a47 = 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 + %a53 = alloca { ptr, i64, i64 }, align 16 + %a54 = alloca { ptr, i64, i64 }, align 16 + %a55 = alloca { ptr, i64, i64 }, align 16 + %a56 = 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) + br i1 %t5, label %panic11007, label %ok11008 +panic11007: + call void @finch_panic(ptr @.str.7097, i64 268, ptr @.str.7098) unreachable -ok10474: +ok11008: %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: + br label %for.cond11009 +for.cond11009: %t9 = load i64, ptr %a8 %t10 = icmp slt i64 %t9, %t7 - br i1 %t10, label %for.body10476, label %for.end10478 -for.body10476: + br i1 %t10, label %for.body11010, label %for.end11012 +for.body11010: %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) + br i1 %t13, label %panic11013, label %ok11014 +panic11013: + call void @finch_panic(ptr @.str.7099, i64 269, ptr @.str.7100) unreachable -ok10480: +ok11014: %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: + br label %logic.from11015 +logic.from11015: + br i1 %t17, label %logic.rhs11016, label %logic.end11017 +logic.rhs11016: %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) + br i1 %t19, label %panic11018, label %ok11019 +panic11018: + call void @finch_panic(ptr @.str.7101, i64 269, ptr @.str.7102) unreachable -ok10485: +ok11019: %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) + br i1 %t24, label %range11020, label %inrange11021 +range11020: + call void @finch_panic_index(ptr @.str.7103, i64 269, i64 %t21, i64 %t23) unreachable -inrange10487: +inrange11021: %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: + br label %logic.rend11022 +logic.rend11022: + br label %logic.end11017 +logic.end11017: + %t29 = phi i1 [ false, %logic.from11015 ], [ %t28, %logic.rend11022 ] + br i1 %t29, label %then11023, label %else11024 +then11023: %t30 = load i64, ptr %a2 %t31 = add i64 %t30, 1 store i64 %t31, ptr %a2 store i64 1, ptr %a3 - br label %endif10491 -else10490: + br label %endif11025 +else11024: %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: + br label %endif11025 +endif11025: + br label %for.step11011 +for.step11011: %t34 = load i64, ptr %a8 %t35 = add i64 %t34, 1 store i64 %t35, ptr %a8 - br label %for.cond10475 -for.end10478: + br label %for.cond11009 +for.end11012: %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 } { ptr @.str.7104, 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 + store { ptr, i64, i64 } %t38, ptr %a42 + call void @finch_str_drop(ptr %a42) + %t43 = load { ptr, i64, i64 }, ptr %a39 + store { ptr, i64, i64 } %t43, ptr %a45 + store { ptr, i64, i64 } { ptr @.str.7105, i64 9, i64 0 }, ptr %a46 + call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46) + store { ptr, i64, i64 } %t43, ptr %a47 + call void @finch_str_drop(ptr %a47) + %t48 = load { ptr, i64, i64 }, ptr %a44 + %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) + store { ptr, i64, i64 } %t48, ptr %a55 + call void @finch_str_drop(ptr %a55) + store { ptr, i64, i64 } %t51, ptr %a56 + call void @finch_str_drop(ptr %a56) + %t57 = load { ptr, i64, i64 }, ptr %a52 + ret { ptr, i64, i64 } %t57 } define internal i8 @finch.json.peek(ptr %p0) { @@ -92741,56 +110763,56 @@ entry: 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) + br i1 %t3, label %panic11026, label %ok11027 +panic11026: + call void @finch_panic(ptr @.str.7106, i64 280, ptr @.str.7107) unreachable -ok10493: +ok11027: %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) + br i1 %t7, label %panic11028, label %ok11029 +panic11028: + call void @finch_panic(ptr @.str.7108, i64 280, ptr @.str.7109) unreachable -ok10495: +ok11029: %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: + br i1 %t11, label %then11030, label %endif11032 +then11030: %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) + br i1 %t13, label %panic11033, label %ok11034 +panic11033: + call void @finch_panic(ptr @.str.7110, i64 281, ptr @.str.7111) unreachable -ok10500: +ok11034: %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) + br i1 %t16, label %panic11035, label %ok11036 +panic11035: + call void @finch_panic(ptr @.str.7112, i64 281, ptr @.str.7113) unreachable -ok10502: +ok11036: %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) + br i1 %t21, label %range11037, label %inrange11038 +range11037: + call void @finch_panic_index(ptr @.str.7114, i64 281, i64 %t18, i64 %t20) unreachable -inrange10504: +inrange11038: %t22 = extractvalue { ptr, i64, i64 } %t19, 0 %t23 = getelementptr inbounds i8, ptr %t22, i64 %t18 %t24 = load i8, ptr %t23 ret i8 %t24 -endif10498: +endif11032: %t25 = trunc i64 0 to i8 ret i8 %t25 } @@ -92799,195 +110821,195 @@ 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: + br label %while.cond11039 +while.cond11039: %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) + br i1 %t3, label %panic11042, label %ok11043 +panic11042: + call void @finch_panic(ptr @.str.7115, i64 287, ptr @.str.7116) unreachable -ok10509: +ok11043: %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) + br i1 %t7, label %panic11044, label %ok11045 +panic11044: + call void @finch_panic(ptr @.str.7117, i64 287, ptr @.str.7118) unreachable -ok10511: +ok11045: %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: + br label %logic.from11046 +logic.from11046: + br i1 %t11, label %logic.rhs11047, label %logic.end11048 +logic.rhs11047: %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) + br i1 %t13, label %panic11049, label %ok11050 +panic11049: + call void @finch_panic(ptr @.str.7119, i64 287, ptr @.str.7120) unreachable -ok10516: +ok11050: %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) + br i1 %t16, label %panic11051, label %ok11052 +panic11051: + call void @finch_panic(ptr @.str.7121, i64 287, ptr @.str.7122) unreachable -ok10518: +ok11052: %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) + br i1 %t21, label %range11053, label %inrange11054 +range11053: + call void @finch_panic_index(ptr @.str.7123, i64 287, i64 %t18, i64 %t20) unreachable -inrange10520: +inrange11054: %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: + br label %logic.from11055 +logic.from11055: + br i1 %t25, label %logic.end11057, label %logic.rhs11056 +logic.rhs11056: %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) + br i1 %t27, label %panic11058, label %ok11059 +panic11058: + call void @finch_panic(ptr @.str.7124, i64 287, ptr @.str.7125) unreachable -ok10525: +ok11059: %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) + br i1 %t30, label %panic11060, label %ok11061 +panic11060: + call void @finch_panic(ptr @.str.7126, i64 287, ptr @.str.7127) unreachable -ok10527: +ok11061: %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) + br i1 %t35, label %range11062, label %inrange11063 +range11062: + call void @finch_panic_index(ptr @.str.7128, i64 287, i64 %t32, i64 %t34) unreachable -inrange10529: +inrange11063: %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: + br label %logic.rend11064 +logic.rend11064: + br label %logic.end11057 +logic.end11057: + %t40 = phi i1 [ true, %logic.from11055 ], [ %t39, %logic.rend11064 ] + br label %logic.from11065 +logic.from11065: + br i1 %t40, label %logic.end11067, label %logic.rhs11066 +logic.rhs11066: %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) + br i1 %t42, label %panic11068, label %ok11069 +panic11068: + call void @finch_panic(ptr @.str.7129, i64 287, ptr @.str.7130) unreachable -ok10535: +ok11069: %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) + br i1 %t45, label %panic11070, label %ok11071 +panic11070: + call void @finch_panic(ptr @.str.7131, i64 287, ptr @.str.7132) unreachable -ok10537: +ok11071: %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) + br i1 %t50, label %range11072, label %inrange11073 +range11072: + call void @finch_panic_index(ptr @.str.7133, i64 287, i64 %t47, i64 %t49) unreachable -inrange10539: +inrange11073: %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: + br label %logic.rend11074 +logic.rend11074: + br label %logic.end11067 +logic.end11067: + %t55 = phi i1 [ true, %logic.from11065 ], [ %t54, %logic.rend11074 ] + br label %logic.from11075 +logic.from11075: + br i1 %t55, label %logic.end11077, label %logic.rhs11076 +logic.rhs11076: %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) + br i1 %t57, label %panic11078, label %ok11079 +panic11078: + call void @finch_panic(ptr @.str.7134, i64 287, ptr @.str.7135) unreachable -ok10545: +ok11079: %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) + br i1 %t60, label %panic11080, label %ok11081 +panic11080: + call void @finch_panic(ptr @.str.7136, i64 287, ptr @.str.7137) unreachable -ok10547: +ok11081: %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) + br i1 %t65, label %range11082, label %inrange11083 +range11082: + call void @finch_panic_index(ptr @.str.7138, i64 287, i64 %t62, i64 %t64) unreachable -inrange10549: +inrange11083: %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: + br label %logic.rend11084 +logic.rend11084: + br label %logic.end11077 +logic.end11077: + %t70 = phi i1 [ true, %logic.from11075 ], [ %t69, %logic.rend11084 ] + br label %logic.rend11085 +logic.rend11085: + br label %logic.end11048 +logic.end11048: + %t71 = phi i1 [ false, %logic.from11046 ], [ %t70, %logic.rend11085 ] + br i1 %t71, label %while.body11040, label %while.end11041 +while.body11040: %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) + br i1 %t73, label %panic11086, label %ok11087 +panic11086: + call void @finch_panic(ptr @.str.7139, i64 288, ptr @.str.7140) unreachable -ok10553: +ok11087: %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: + br label %while.cond11039 +while.end11041: ret void } @@ -93001,134 +111023,167 @@ entry: %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 + %a21 = alloca { ptr, i64, i64 }, align 16 %a25 = 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 - %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 + %a31 = alloca { ptr, i64, i64 }, align 16 + %a32 = alloca { ptr, i64, i64 }, align 16 + %a33 = alloca { ptr, i64, i64 }, align 16 + %a34 = 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 + %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 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 + %a59 = alloca { ptr, i64, i64 }, align 16 %a62 = alloca { ptr, i64, i64 }, align 16 - %a66 = 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 %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 + %a74 = 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 + %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 + %a83 = 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) + br i1 %t4, label %panic11088, label %ok11089 +panic11088: + call void @finch_panic(ptr @.str.7141, i64 293, ptr @.str.7142) unreachable -ok10555: +ok11089: %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) + br i1 %t8, label %panic11090, label %ok11091 +panic11090: + call void @finch_panic(ptr @.str.7143, i64 293, ptr @.str.7144) unreachable -ok10557: +ok11091: %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: + br i1 %t12, label %then11092, label %endif11094 +then11092: %t13 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.6930, i64 26, i64 0 }, ptr %a15 + store { ptr, i64, i64 } { ptr @.str.7145, 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 + store { ptr, i64, i64 } { ptr @.str.7146, 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) + store { ptr, i64, i64 } %t17, ptr %a21 + call void @finch_str_drop(ptr %a21) + %t22 = load { ptr, i64, i64 }, ptr %a18 + %t23 = load ptr, ptr %a1 + %t24 = call { ptr, i64, i64 } @finch.json.where(ptr %t23) + store { ptr, i64, i64 } %t22, ptr %a26 + store { ptr, i64, i64 } %t24, ptr %a27 + call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) + store { ptr, i64, i64 } %t22, ptr %a28 + call void @finch_str_drop(ptr %a28) + store { ptr, i64, i64 } %t24, ptr %a29 + call void @finch_str_drop(ptr %a29) + %t30 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t30, ptr %a32 + store { ptr, i64, i64 } { ptr @.str.7147, i64 1, i64 0 }, ptr %a33 + call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) + store { ptr, i64, i64 } %t30, ptr %a34 + call void @finch_str_drop(ptr %a34) + %t35 = load { ptr, i64, i64 }, ptr %a31 + ret { ptr, i64, i64 } %t35 +endif11094: + %t36 = load ptr, ptr %a1 + %t37 = icmp eq ptr %t36, null + br i1 %t37, label %panic11095, label %ok11096 +panic11095: + call void @finch_panic(ptr @.str.7149, i64 296, ptr @.str.7150) 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) +ok11096: + %t38 = getelementptr inbounds %S.json.Reader, ptr %t36, i32 0, i32 0 + %t39 = load ptr, ptr %a1 + %t40 = icmp eq ptr %t39, null + br i1 %t40, label %panic11097, label %ok11098 +panic11097: + call void @finch_panic(ptr @.str.7151, i64 296, ptr @.str.7152) 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) +ok11098: + %t41 = getelementptr inbounds %S.json.Reader, ptr %t39, i32 0, i32 1 + %t42 = load i64, ptr %t41 + %t43 = load { ptr, i64, i64 }, ptr %t38 + %t44 = extractvalue { ptr, i64, i64 } %t43, 1 + %t45 = icmp uge i64 %t42, %t44 + br i1 %t45, label %range11099, label %inrange11100 +range11099: + call void @finch_panic_index(ptr @.str.7153, i64 296, i64 %t42, i64 %t44) 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 +inrange11100: + %t46 = extractvalue { ptr, i64, i64 } %t43, 0 + %t47 = getelementptr inbounds i8, ptr %t46, i64 %t42 + %t48 = load i8, ptr %t47 + call void @finch_str_from_char(ptr %a49, i8 signext %t48) + %t50 = load { ptr, i64, i64 }, ptr %a49 + store { ptr, i64, i64 } { ptr @.str.7148, i64 13, 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 - %t55 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t54, ptr %a57 - store { ptr, i64, i64 } %t55, ptr %a58 + store { ptr, i64, i64 } %t50, ptr %a54 + call void @finch_str_drop(ptr %a54) + %t55 = load { ptr, i64, i64 }, ptr %a51 + store { ptr, i64, i64 } %t55, ptr %a57 + store { ptr, i64, i64 } { ptr @.str.7154, i64 8, 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 %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 + store { ptr, i64, i64 } %t55, ptr %a59 + call void @finch_str_drop(ptr %a59) + %t60 = load { ptr, i64, i64 }, ptr %a56 + %t61 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t60, ptr %a63 + store { ptr, i64, i64 } %t61, ptr %a64 + call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) + store { ptr, i64, i64 } %t60, ptr %a65 + call void @finch_str_drop(ptr %a65) + %t66 = load { ptr, i64, i64 }, ptr %a62 + store { ptr, i64, i64 } %t66, ptr %a68 + store { ptr, i64, i64 } { ptr @.str.7155, i64 12, i64 0 }, ptr %a69 + call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) + store { ptr, i64, i64 } %t66, ptr %a70 + call void @finch_str_drop(ptr %a70) + %t71 = load { ptr, i64, i64 }, ptr %a67 + %t72 = load ptr, ptr %a1 + %t73 = call { ptr, i64, i64 } @finch.json.where(ptr %t72) + store { ptr, i64, i64 } %t71, ptr %a75 + store { ptr, i64, i64 } %t73, ptr %a76 + call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) + store { ptr, i64, i64 } %t71, ptr %a77 + call void @finch_str_drop(ptr %a77) + store { ptr, i64, i64 } %t73, ptr %a78 + call void @finch_str_drop(ptr %a78) + %t79 = load { ptr, i64, i64 }, ptr %a74 + store { ptr, i64, i64 } %t79, ptr %a81 + store { ptr, i64, i64 } { ptr @.str.7156, i64 1, i64 0 }, ptr %a82 + call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82) + store { ptr, i64, i64 } %t79, ptr %a83 + call void @finch_str_drop(ptr %a83) + %t84 = load { ptr, i64, i64 }, ptr %a80 + ret { ptr, i64, i64 } %t84 } define internal i1 @finch.json.comes(ptr %p0, { ptr, i64, i64 } %p1) { @@ -93139,79 +111194,82 @@ entry: %a21 = alloca { ptr, i64, i64 }, align 16 %a35 = alloca { ptr, i64, i64 }, align 16 %a36 = alloca { ptr, i64, i64 }, align 16 + %a39 = 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) + br i1 %t4, label %panic11101, label %ok11102 +panic11101: + call void @finch_panic(ptr @.str.7157, i64 301, ptr @.str.7158) unreachable -ok10568: +ok11102: %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) + br i1 %t9, label %panic11103, label %ok11104 +panic11103: + call void @finch_panic(ptr @.str.7159, i64 301, ptr @.str.7160) unreachable -ok10570: +ok11104: %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: + br label %logic.from11105 +logic.from11105: + br i1 %t15, label %logic.rhs11106, label %logic.end11107 +logic.rhs11106: %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) + br i1 %t17, label %panic11108, label %ok11109 +panic11108: + call void @finch_panic(ptr @.str.7161, i64 301, ptr @.str.7162) unreachable -ok10575: +ok11109: %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) + br i1 %t23, label %panic11110, label %ok11111 +panic11110: + call void @finch_panic(ptr @.str.7164, i64 301, ptr @.str.7165) unreachable -ok10577: +ok11111: %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) + br i1 %t27, label %panic11112, label %ok11113 +panic11112: + call void @finch_panic(ptr @.str.7166, i64 301, ptr @.str.7167) unreachable -ok10579: +ok11113: %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) + call void @finch_str_sub(ptr %a21, ptr %a20, i64 %t25, i64 %t32, ptr @.str.7163, 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 + store { ptr, i64, i64 } %t33, ptr %a39 + call void @finch_str_drop(ptr %a39) + br label %logic.rend11114 +logic.rend11114: + br label %logic.end11107 +logic.end11107: + %t40 = phi i1 [ false, %logic.from11105 ], [ %t38, %logic.rend11114 ] + ret i1 %t40 } define internal { i1, i8, { ptr, i64, i64 } } @finch.json.expect_word(ptr %p0, { ptr, i64, i64 } %p1) { @@ -93224,41 +111282,47 @@ entry: %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 + %a19 = 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: + br i1 %t6, label %then11115, label %endif11117 +then11115: %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 } { ptr @.str.7168, 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 + store { ptr, i64, i64 } { ptr @.str.7169, 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) + store { ptr, i64, i64 } %t12, ptr %a16 + call void @finch_str_drop(ptr %a16) + %t17 = load { ptr, i64, i64 }, ptr %a13 + %t18 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t7, { ptr, i64, i64 } %t17) + store { ptr, i64, i64 } %t17, ptr %a19 + call void @finch_str_drop(ptr %a19) + %t20 = insertvalue { i1, i8, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t18, 2 + ret { i1, i8, { ptr, i64, i64 } } %t20 +endif11117: + %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t22 = load i64, ptr %t21 + %t23 = load ptr, ptr %a1 + %t24 = icmp eq ptr %t23, null + br i1 %t24, label %panic11118, label %ok11119 +panic11118: + call void @finch_panic(ptr @.str.7170, i64 308, ptr @.str.7171) 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 +ok11119: + %t25 = getelementptr inbounds %S.json.Reader, ptr %t23, i32 0, i32 1 + %t26 = load i64, ptr %t25 + %t27 = add i64 %t26, %t22 + store i64 %t27, ptr %t25 ret { i1, i8, { ptr, i64, i64 } } { i1 true, i8 0, { ptr, i64, i64 } zeroinitializer } } @@ -93268,69 +111332,69 @@ entry: 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: + br label %logic.from11120 +logic.from11120: + br i1 %t3, label %logic.rhs11121, label %logic.end11122 +logic.rhs11121: %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: + br label %logic.rend11123 +logic.rend11123: + br label %logic.end11122 +logic.end11122: + %t6 = phi i1 [ false, %logic.from11120 ], [ %t5, %logic.rend11123 ] + br i1 %t6, label %then11124, label %endif11126 +then11124: %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: +endif11126: %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: + br label %logic.from11127 +logic.from11127: + br i1 %t12, label %logic.rhs11128, label %logic.end11129 +logic.rhs11128: %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: + br label %logic.rend11130 +logic.rend11130: + br label %logic.end11129 +logic.end11129: + %t15 = phi i1 [ false, %logic.from11127 ], [ %t14, %logic.rend11130 ] + br i1 %t15, label %then11131, label %endif11133 +then11131: %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: +endif11133: %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: + br label %logic.from11134 +logic.from11134: + br i1 %t22, label %logic.rhs11135, label %logic.end11136 +logic.rhs11135: %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: + br label %logic.rend11137 +logic.rend11137: + br label %logic.end11136 +logic.end11136: + %t25 = phi i1 [ false, %logic.from11134 ], [ %t24, %logic.rend11137 ] + br i1 %t25, label %then11138, label %endif11140 +then11138: %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: +endif11140: ret i64 -1 } @@ -93344,8 +111408,8 @@ entry: 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: + br i1 %t4, label %then11141, label %else11142 +then11141: %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 %t6 = load i64, ptr %a1 %t7 = trunc i64 %t6 to i8 @@ -93356,12 +111420,12 @@ then10607: %t11 = getelementptr inbounds i8, ptr %t10, i64 %t8 store i8 %t7, ptr %t11 store i64 %t9, ptr %t5 - br label %endif10609 -else10608: + br label %endif11143 +else11142: %t12 = load i64, ptr %a1 %t13 = icmp slt i64 %t12, 2048 - br i1 %t13, label %then10610, label %else10611 -then10610: + br i1 %t13, label %then11144, label %else11145 +then11144: %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 %t15 = load i64, ptr %a1 %t16 = sdiv i64 %t15, 64 @@ -93386,12 +111450,12 @@ then10610: %t31 = getelementptr inbounds i8, ptr %t30, i64 %t28 store i8 %t27, ptr %t31 store i64 %t29, ptr %t23 - br label %endif10612 -else10611: + br label %endif11146 +else11145: %t32 = load i64, ptr %a1 %t33 = icmp slt i64 %t32, 65536 - br i1 %t33, label %then10613, label %else10614 -then10613: + br i1 %t33, label %then11147, label %else11148 +then11147: %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 %t35 = load i64, ptr %a1 %t36 = sdiv i64 %t35, 4096 @@ -93429,8 +111493,8 @@ then10613: %t61 = getelementptr inbounds i8, ptr %t60, i64 %t58 store i8 %t57, ptr %t61 store i64 %t59, ptr %t53 - br label %endif10615 -else10614: + br label %endif11149 +else11148: %t62 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 %t63 = load i64, ptr %a1 %t64 = sdiv i64 %t63, 262144 @@ -93481,17 +111545,18 @@ else10614: %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: + br label %endif11149 +endif11149: + br label %endif11146 +endif11146: + br label %endif11143 +endif11143: %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 + call void @finch.drop.arr_u8(ptr %a2) ret { ptr, i64, i64 } %t103 } @@ -93503,105 +111568,105 @@ entry: store ptr %p0, ptr %a1 store i64 0, ptr %a2 store i64 0, ptr %a3 - br label %for.cond10616 -for.cond10616: + br label %for.cond11150 +for.cond11150: %t4 = load i64, ptr %a3 %t5 = icmp slt i64 %t4, 4 - br i1 %t5, label %for.body10617, label %for.end10619 -for.body10617: + br i1 %t5, label %for.body11151, label %for.end11153 +for.body11151: %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) + br i1 %t7, label %panic11154, label %ok11155 +panic11154: + call void @finch_panic(ptr @.str.7172, i64 348, ptr @.str.7173) unreachable -ok10621: +ok11155: %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) + br i1 %t11, label %panic11156, label %ok11157 +panic11156: + call void @finch_panic(ptr @.str.7174, i64 348, ptr @.str.7175) unreachable -ok10623: +ok11157: %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: + br label %logic.from11158 +logic.from11158: + br i1 %t15, label %logic.end11160, label %logic.rhs11159 +logic.rhs11159: %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) + br i1 %t17, label %panic11161, label %ok11162 +panic11161: + call void @finch_panic(ptr @.str.7176, i64 348, ptr @.str.7177) unreachable -ok10628: +ok11162: %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) + br i1 %t20, label %panic11163, label %ok11164 +panic11163: + call void @finch_panic(ptr @.str.7178, i64 348, ptr @.str.7179) unreachable -ok10630: +ok11164: %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) + br i1 %t25, label %range11165, label %inrange11166 +range11165: + call void @finch_panic_index(ptr @.str.7180, i64 348, i64 %t22, i64 %t24) unreachable -inrange10632: +inrange11166: %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: + br label %logic.rend11167 +logic.rend11167: + br label %logic.end11160 +logic.end11160: + %t31 = phi i1 [ true, %logic.from11158 ], [ %t30, %logic.rend11167 ] + br i1 %t31, label %then11168, label %endif11170 +then11168: %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 }) + %t33 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t32, { ptr, i64, i64 } { ptr @.str.7181, 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: +endif11170: %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) + br i1 %t38, label %panic11171, label %ok11172 +panic11171: + call void @finch_panic(ptr @.str.7182, i64 351, ptr @.str.7183) unreachable -ok10638: +ok11172: %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) + br i1 %t41, label %panic11173, label %ok11174 +panic11173: + call void @finch_panic(ptr @.str.7184, i64 351, ptr @.str.7185) unreachable -ok10640: +ok11174: %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) + br i1 %t46, label %range11175, label %inrange11176 +range11175: + call void @finch_panic_index(ptr @.str.7186, i64 351, i64 %t43, i64 %t45) unreachable -inrange10642: +inrange11176: %t47 = extractvalue { ptr, i64, i64 } %t44, 0 %t48 = getelementptr inbounds i8, ptr %t47, i64 %t43 %t49 = load i8, ptr %t48 @@ -93610,22 +111675,22 @@ inrange10642: 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) + br i1 %t53, label %panic11177, label %ok11178 +panic11177: + call void @finch_panic(ptr @.str.7187, i64 352, ptr @.str.7188) unreachable -ok10644: +ok11178: %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: + br label %for.step11152 +for.step11152: %t57 = load i64, ptr %a3 %t58 = add i64 %t57, 1 store i64 %t58, ptr %a3 - br label %for.cond10616 -for.end10619: + br label %for.cond11150 +for.end11153: %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 @@ -93640,47 +111705,56 @@ entry: %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 + %a28 = 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 + %a32 = alloca { ptr, i64, i64 }, align 16 + %a33 = alloca { ptr, i64, i64 }, align 16 + %a49 = alloca i8, align 16 + %a57 = alloca { ptr, i64, i64 }, align 16 + %a58 = alloca { ptr, i64, i64 }, align 16 + %a75 = alloca { ptr, i64, i64 }, align 16 + %a76 = alloca { ptr, i64, i64 }, align 16 %a85 = alloca { ptr, i64, i64 }, align 16 + %a86 = 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 + %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 + %a108 = alloca { ptr, i64, i64 }, align 16 + %a109 = alloca { ptr, i64, i64 }, align 16 + %a127 = alloca i8, align 16 + %a180 = alloca { ptr, i64, i64 }, align 16 + %a195 = alloca i64, align 16 + %a216 = alloca 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 + %a237 = alloca { ptr, i64, i64 }, align 16 + %a239 = 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 + %a247 = alloca { ptr, i64, i64 }, align 16 + %a248 = alloca { ptr, i64, i64 }, align 16 + %a249 = alloca { ptr, i64, i64 }, align 16 + %a250 = alloca { ptr, i64, i64 }, align 16 + %a252 = 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 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) + br i1 %t3, label %panic11179, label %ok11180 +panic11179: + call void @finch_panic(ptr @.str.7189, i64 358, ptr @.str.7190) unreachable -ok10646: +ok11180: %t4 = getelementptr inbounds %S.json.Reader, ptr %t2, i32 0, i32 1 %t5 = load i64, ptr %t4 %t6 = add i64 %t5, 1 @@ -93688,470 +111762,494 @@ ok10646: 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) + br i1 %t9, label %panic11181, label %ok11182 +panic11181: + call void @finch_panic(ptr @.str.7191, i64 360, ptr @.str.7192) unreachable -ok10648: +ok11182: %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: + br label %while.cond11183 +while.cond11183: + br label %while.body11184 +while.body11184: %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) + br i1 %t14, label %panic11186, label %ok11187 +panic11186: + call void @finch_panic(ptr @.str.7193, i64 362, ptr @.str.7194) unreachable -ok10653: +ok11187: %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) + br i1 %t18, label %panic11188, label %ok11189 +panic11188: + call void @finch_panic(ptr @.str.7195, i64 362, ptr @.str.7196) unreachable -ok10655: +ok11189: %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: + br i1 %t22, label %then11190, label %endif11192 +then11190: %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 } { ptr @.str.7197, 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) + store { ptr, i64, i64 } %t24, ptr %a28 + call void @finch_str_drop(ptr %a28) + %t29 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t29, ptr %a31 + store { ptr, i64, i64 } { ptr @.str.7198, i64 1, i64 0 }, ptr %a32 + call void @finch_str_concat(ptr %a30, ptr %a31, ptr %a32) + store { ptr, i64, i64 } %t29, ptr %a33 + call void @finch_str_drop(ptr %a33) + %t34 = load { ptr, i64, i64 }, ptr %a30 + call void @finch.drop.arr_str(ptr %a7) + %t35 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t34, 2 + ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t35 +endif11192: + %t36 = load ptr, ptr %a1 + %t37 = icmp eq ptr %t36, null + br i1 %t37, label %panic11193, label %ok11194 +panic11193: + call void @finch_panic(ptr @.str.7199, i64 365, ptr @.str.7200) 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) +ok11194: + %t38 = getelementptr inbounds %S.json.Reader, ptr %t36, i32 0, i32 0 + %t39 = load ptr, ptr %a1 + %t40 = icmp eq ptr %t39, null + br i1 %t40, label %panic11195, label %ok11196 +panic11195: + call void @finch_panic(ptr @.str.7201, i64 365, ptr @.str.7202) 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) +ok11196: + %t41 = getelementptr inbounds %S.json.Reader, ptr %t39, i32 0, i32 1 + %t42 = load i64, ptr %t41 + %t43 = load { ptr, i64, i64 }, ptr %t38 + %t44 = extractvalue { ptr, i64, i64 } %t43, 1 + %t45 = icmp uge i64 %t42, %t44 + br i1 %t45, label %range11197, label %inrange11198 +range11197: + call void @finch_panic_index(ptr @.str.7203, i64 365, i64 %t42, i64 %t44) 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) +inrange11198: + %t46 = extractvalue { ptr, i64, i64 } %t43, 0 + %t47 = getelementptr inbounds i8, ptr %t46, i64 %t42 + %t48 = load i8, ptr %t47 + store i8 %t48, ptr %a49 + %t50 = load i8, ptr %a49 + %t51 = icmp eq i8 %t50, 34 + br i1 %t51, label %then11199, label %endif11201 +then11199: + %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 + %t53 = load ptr, ptr %a1 + %t54 = icmp eq ptr %t53, null + br i1 %t54, label %panic11202, label %ok11203 +panic11202: + call void @finch_panic(ptr @.str.7204, i64 367, ptr @.str.7205) 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) +ok11203: + %t55 = getelementptr inbounds %S.json.Reader, ptr %t53, i32 0, i32 0 + %t56 = load { ptr, i64, i64 }, ptr %t55 + store { ptr, i64, i64 } %t56, ptr %a57 + %t59 = load i64, ptr %a12 + %t60 = load ptr, ptr %a1 + %t61 = icmp eq ptr %t60, null + br i1 %t61, label %panic11204, label %ok11205 +panic11204: + call void @finch_panic(ptr @.str.7207, i64 367, ptr @.str.7208) 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) +ok11205: + %t62 = getelementptr inbounds %S.json.Reader, ptr %t60, i32 0, i32 1 + %t63 = load i64, ptr %t62 + call void @finch_str_sub(ptr %a58, ptr %a57, i64 %t59, i64 %t63, ptr @.str.7206, i64 367) + %t64 = load { ptr, i64, i64 }, ptr %a58 + %t65 = load i64, ptr %t52 + %t66 = add i64 %t65, 1 + call void @finch_arr_reserve(ptr %a7, i64 %t66, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t67 = load ptr, ptr %a7 + %t68 = getelementptr inbounds { ptr, i64, i64 }, ptr %t67, i64 %t65 + store { ptr, i64, i64 } %t64, ptr %t68 + store i64 %t66, ptr %t52 + %t69 = load ptr, ptr %a1 + %t70 = icmp eq ptr %t69, null + br i1 %t70, label %panic11206, label %ok11207 +panic11206: + call void @finch_panic(ptr @.str.7209, i64 368, ptr @.str.7210) 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) +ok11207: + %t71 = getelementptr inbounds %S.json.Reader, ptr %t69, i32 0, i32 1 + %t72 = load i64, ptr %t71 + %t73 = add i64 %t72, 1 + store i64 %t73, ptr %t71 + %t74 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.7211, i64 0, i64 0 }, ptr %a75 + call void @finch_str_join(ptr %a76, ptr %a7, ptr %a75) + %t77 = load { ptr, i64, i64 }, ptr %a76 + call void @finch.drop.arr_str(ptr %a7) + %t78 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 + %t79 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t78, { ptr, i64, i64 } %t77, 1 + ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t79 +endif11201: + %t80 = load i8, ptr %a49 + %t81 = zext i8 %t80 to i64 + %t82 = icmp slt i64 %t81, 32 + br i1 %t82, label %then11208, label %endif11210 +then11208: + %t83 = load ptr, ptr %a1 + %t84 = call { ptr, i64, i64 } @finch.json.where(ptr %t83) + store { ptr, i64, i64 } { ptr @.str.7212, i64 55, i64 0 }, ptr %a86 + store { ptr, i64, i64 } %t84, ptr %a87 + call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) + store { ptr, i64, i64 } %t84, ptr %a88 + call void @finch_str_drop(ptr %a88) + %t89 = load { ptr, i64, i64 }, ptr %a85 + store { ptr, i64, i64 } %t89, ptr %a91 + store { ptr, i64, i64 } { ptr @.str.7213, i64 1, i64 0 }, ptr %a92 + call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92) + store { ptr, i64, i64 } %t89, ptr %a93 + call void @finch_str_drop(ptr %a93) + %t94 = load { ptr, i64, i64 }, ptr %a90 + call void @finch.drop.arr_str(ptr %a7) + %t95 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t94, 2 + ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t95 +endif11210: + %t96 = load i8, ptr %a49 + %t97 = icmp ne i8 %t96, 92 + br i1 %t97, label %then11211, label %endif11213 +then11211: + %t98 = load ptr, ptr %a1 + %t99 = icmp eq ptr %t98, null + br i1 %t99, label %panic11214, label %ok11215 +panic11214: + call void @finch_panic(ptr @.str.7214, i64 375, ptr @.str.7215) 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) +ok11215: + %t100 = getelementptr inbounds %S.json.Reader, ptr %t98, i32 0, i32 1 + %t101 = load i64, ptr %t100 + %t102 = add i64 %t101, 1 + store i64 %t102, ptr %t100 + br label %while.cond11183 +endif11213: + %t103 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 + %t104 = load ptr, ptr %a1 + %t105 = icmp eq ptr %t104, null + br i1 %t105, label %panic11216, label %ok11217 +panic11216: + call void @finch_panic(ptr @.str.7216, i64 378, ptr @.str.7217) 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) +ok11217: + %t106 = getelementptr inbounds %S.json.Reader, ptr %t104, i32 0, i32 0 + %t107 = load { ptr, i64, i64 }, ptr %t106 + store { ptr, i64, i64 } %t107, ptr %a108 + %t110 = load i64, ptr %a12 + %t111 = load ptr, ptr %a1 + %t112 = icmp eq ptr %t111, null + br i1 %t112, label %panic11218, label %ok11219 +panic11218: + call void @finch_panic(ptr @.str.7219, i64 378, ptr @.str.7220) 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) +ok11219: + %t113 = getelementptr inbounds %S.json.Reader, ptr %t111, i32 0, i32 1 + %t114 = load i64, ptr %t113 + call void @finch_str_sub(ptr %a109, ptr %a108, i64 %t110, i64 %t114, ptr @.str.7218, i64 378) + %t115 = load { ptr, i64, i64 }, ptr %a109 + %t116 = load i64, ptr %t103 + %t117 = add i64 %t116, 1 + call void @finch_arr_reserve(ptr %a7, i64 %t117, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t118 = load ptr, ptr %a7 + %t119 = getelementptr inbounds { ptr, i64, i64 }, ptr %t118, i64 %t116 + store { ptr, i64, i64 } %t115, ptr %t119 + store i64 %t117, ptr %t103 + %t120 = load ptr, ptr %a1 + %t121 = icmp eq ptr %t120, null + br i1 %t121, label %panic11220, label %ok11221 +panic11220: + call void @finch_panic(ptr @.str.7221, i64 379, ptr @.str.7222) 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) +ok11221: + %t122 = getelementptr inbounds %S.json.Reader, ptr %t120, i32 0, i32 1 + %t123 = load i64, ptr %t122 + %t124 = add i64 %t123, 1 + store i64 %t124, ptr %t122 + %t125 = load ptr, ptr %a1 + %t126 = call i8 @finch.json.peek(ptr %t125) + store i8 %t126, ptr %a127 + %t128 = load ptr, ptr %a1 + %t129 = icmp eq ptr %t128, null + br i1 %t129, label %panic11222, label %ok11223 +panic11222: + call void @finch_panic(ptr @.str.7223, i64 381, ptr @.str.7224) 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) +ok11223: + %t130 = getelementptr inbounds %S.json.Reader, ptr %t128, i32 0, i32 1 + %t131 = load i64, ptr %t130 + %t132 = add i64 %t131, 1 + store i64 %t132, ptr %t130 + %t133 = load i8, ptr %a127 + %t134 = icmp eq i8 %t133, 110 + br i1 %t134, label %then11224, label %else11225 +then11224: + %t135 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 + %t136 = load i64, ptr %t135 + %t137 = add i64 %t136, 1 + call void @finch_arr_reserve(ptr %a7, i64 %t137, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t138 = load ptr, ptr %a7 + %t139 = getelementptr inbounds { ptr, i64, i64 }, ptr %t138, i64 %t136 + store { ptr, i64, i64 } { ptr @.str.7225, i64 1, i64 0 }, ptr %t139 + store i64 %t137, ptr %t135 + br label %endif11226 +else11225: + %t140 = load i8, ptr %a127 + %t141 = icmp eq i8 %t140, 116 + br i1 %t141, label %then11227, label %else11228 +then11227: + %t142 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 + %t143 = load i64, ptr %t142 + %t144 = add i64 %t143, 1 + call void @finch_arr_reserve(ptr %a7, i64 %t144, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t145 = load ptr, ptr %a7 + %t146 = getelementptr inbounds { ptr, i64, i64 }, ptr %t145, i64 %t143 + store { ptr, i64, i64 } { ptr @.str.7226, i64 1, i64 0 }, ptr %t146 + store i64 %t144, ptr %t142 + br label %endif11229 +else11228: + %t147 = load i8, ptr %a127 + %t148 = icmp eq i8 %t147, 114 + br i1 %t148, label %then11230, label %else11231 +then11230: + %t149 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 + %t150 = load i64, ptr %t149 + %t151 = add i64 %t150, 1 + call void @finch_arr_reserve(ptr %a7, i64 %t151, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t152 = load ptr, ptr %a7 + %t153 = getelementptr inbounds { ptr, i64, i64 }, ptr %t152, i64 %t150 + store { ptr, i64, i64 } { ptr @.str.7227, i64 1, i64 0 }, ptr %t153 + store i64 %t151, ptr %t149 + br label %endif11232 +else11231: + %t154 = load i8, ptr %a127 + %t155 = icmp eq i8 %t154, 98 + br i1 %t155, label %then11233, label %else11234 +then11233: + %t156 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 + %t157 = call { ptr, i64, i64 } @finch.json.utf8(i64 8) + %t158 = load i64, ptr %t156 + %t159 = add i64 %t158, 1 + call void @finch_arr_reserve(ptr %a7, i64 %t159, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t160 = load ptr, ptr %a7 + %t161 = getelementptr inbounds { ptr, i64, i64 }, ptr %t160, i64 %t158 + store { ptr, i64, i64 } %t157, ptr %t161 + store i64 %t159, ptr %t156 + br label %endif11235 +else11234: + %t162 = load i8, ptr %a127 + %t163 = icmp eq i8 %t162, 102 + br i1 %t163, label %then11236, label %else11237 +then11236: + %t164 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 + %t165 = call { ptr, i64, i64 } @finch.json.utf8(i64 12) + %t166 = load i64, ptr %t164 + %t167 = add i64 %t166, 1 + call void @finch_arr_reserve(ptr %a7, i64 %t167, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t168 = load ptr, ptr %a7 + %t169 = getelementptr inbounds { ptr, i64, i64 }, ptr %t168, i64 %t166 + store { ptr, i64, i64 } %t165, ptr %t169 + store i64 %t167, ptr %t164 + br label %endif11238 +else11237: + %t170 = load i8, ptr %a127 + %t171 = icmp eq i8 %t170, 34 + br label %logic.from11239 +logic.from11239: + br i1 %t171, label %logic.end11241, label %logic.rhs11240 +logic.rhs11240: + %t172 = load i8, ptr %a127 + %t173 = icmp eq i8 %t172, 92 + br label %logic.rend11242 +logic.rend11242: + br label %logic.end11241 +logic.end11241: + %t174 = phi i1 [ true, %logic.from11239 ], [ %t173, %logic.rend11242 ] + br label %logic.from11243 +logic.from11243: + br i1 %t174, label %logic.end11245, label %logic.rhs11244 +logic.rhs11244: + %t175 = load i8, ptr %a127 + %t176 = icmp eq i8 %t175, 47 + br label %logic.rend11246 +logic.rend11246: + br label %logic.end11245 +logic.end11245: + %t177 = phi i1 [ true, %logic.from11243 ], [ %t176, %logic.rend11246 ] + br i1 %t177, label %then11247, label %else11248 +then11247: + %t178 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 + %t179 = load i8, ptr %a127 + call void @finch_str_from_char(ptr %a180, i8 signext %t179) + %t181 = load { ptr, i64, i64 }, ptr %a180 + %t182 = load i64, ptr %t178 + %t183 = add i64 %t182, 1 + call void @finch_arr_reserve(ptr %a7, i64 %t183, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t184 = load ptr, ptr %a7 + %t185 = getelementptr inbounds { ptr, i64, i64 }, ptr %t184, i64 %t182 + store { ptr, i64, i64 } %t181, ptr %t185 + store i64 %t183, ptr %t178 + br label %endif11249 +else11248: + %t186 = load i8, ptr %a127 + %t187 = icmp eq i8 %t186, 117 + br i1 %t187, label %then11250, label %else11251 +then11250: + %t188 = load ptr, ptr %a1 + %t189 = call { i1, i64, { ptr, i64, i64 } } @finch.json.read_hex4(ptr %t188) + %t190 = extractvalue { i1, i64, { ptr, i64, i64 } } %t189, 0 + %t191 = xor i1 %t190, true + %t192 = extractvalue { i1, i64, { ptr, i64, i64 } } %t189, 2 + %t193 = extractvalue { i1, i64, { ptr, i64, i64 } } %t189, 1 + br i1 %t191, label %try.failed11253, label %try.ok11254 +try.failed11253: + call void @finch.drop.arr_str(ptr %a7) + %t194 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t192, 2 + ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t194 +try.ok11254: + store i64 %t193, ptr %a195 + %t196 = load i64, ptr %a195 + %t197 = icmp sge i64 %t196, 55296 + br label %logic.from11255 +logic.from11255: + br i1 %t197, label %logic.rhs11256, label %logic.end11257 +logic.rhs11256: + %t198 = load i64, ptr %a195 + %t199 = icmp slt i64 %t198, 56320 + br label %logic.rend11258 +logic.rend11258: + br label %logic.end11257 +logic.end11257: + %t200 = phi i1 [ false, %logic.from11255 ], [ %t199, %logic.rend11258 ] + br label %logic.from11259 +logic.from11259: + br i1 %t200, label %logic.rhs11260, label %logic.end11261 +logic.rhs11260: + %t201 = load ptr, ptr %a1 + %t202 = call i1 @finch.json.comes(ptr %t201, { ptr, i64, i64 } { ptr @.str.7228, i64 2, i64 0 }) + br label %logic.rend11262 +logic.rend11262: + br label %logic.end11261 +logic.end11261: + %t203 = phi i1 [ false, %logic.from11259 ], [ %t202, %logic.rend11262 ] + br i1 %t203, label %then11263, label %endif11265 +then11263: + %t204 = load ptr, ptr %a1 + %t205 = icmp eq ptr %t204, null + br i1 %t205, label %panic11266, label %ok11267 +panic11266: + call void @finch_panic(ptr @.str.7229, i64 398, ptr @.str.7230) 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 +ok11267: + %t206 = getelementptr inbounds %S.json.Reader, ptr %t204, i32 0, i32 1 + %t207 = load i64, ptr %t206 + %t208 = add i64 %t207, 2 + store i64 %t208, ptr %t206 + %t209 = load ptr, ptr %a1 + %t210 = call { i1, i64, { ptr, i64, i64 } } @finch.json.read_hex4(ptr %t209) + %t211 = extractvalue { i1, i64, { ptr, i64, i64 } } %t210, 0 + %t212 = xor i1 %t211, true + %t213 = extractvalue { i1, i64, { ptr, i64, i64 } } %t210, 2 + %t214 = extractvalue { i1, i64, { ptr, i64, i64 } } %t210, 1 + br i1 %t212, label %try.failed11268, label %try.ok11269 +try.failed11268: + call void @finch.drop.arr_str(ptr %a7) + %t215 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t213, 2 + ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t215 +try.ok11269: + store i64 %t214, ptr %a216 + %t217 = load i64, ptr %a195 + %t218 = sub i64 %t217, 55296 + %t219 = mul i64 %t218, 1024 + %t220 = add i64 65536, %t219 + %t221 = load i64, ptr %a216 + %t222 = sub i64 %t221, 56320 + %t223 = add i64 %t220, %t222 + store i64 %t223, ptr %a195 + br label %endif11265 +endif11265: + %t224 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 + %t225 = load i64, ptr %a195 + %t226 = call { ptr, i64, i64 } @finch.json.utf8(i64 %t225) + %t227 = load i64, ptr %t224 + %t228 = add i64 %t227, 1 + call void @finch_arr_reserve(ptr %a7, i64 %t228, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t229 = load ptr, ptr %a7 + %t230 = getelementptr inbounds { ptr, i64, i64 }, ptr %t229, i64 %t227 + store { ptr, i64, i64 } %t226, ptr %t230 + store i64 %t228, ptr %t224 + br label %endif11252 +else11251: + %t231 = load i8, ptr %a127 + call void @finch_str_from_char(ptr %a232, i8 signext %t231) + %t233 = load { ptr, i64, i64 }, ptr %a232 + store { ptr, i64, i64 } { ptr @.str.7231, i64 22, 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 - %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) + store { ptr, i64, i64 } %t233, ptr %a237 + call void @finch_str_drop(ptr %a237) + %t238 = load { ptr, i64, i64 }, ptr %a234 + store { ptr, i64, i64 } %t238, ptr %a240 + store { ptr, i64, i64 } { ptr @.str.7232, i64 12, i64 0 }, ptr %a241 + call void @finch_str_concat(ptr %a239, ptr %a240, ptr %a241) + store { ptr, i64, i64 } %t238, ptr %a242 + call void @finch_str_drop(ptr %a242) + %t243 = load { ptr, i64, i64 }, ptr %a239 + %t244 = load ptr, ptr %a1 + %t245 = call { ptr, i64, i64 } @finch.json.where(ptr %t244) + store { ptr, i64, i64 } %t243, ptr %a247 + store { ptr, i64, i64 } %t245, ptr %a248 + call void @finch_str_concat(ptr %a246, ptr %a247, ptr %a248) + store { ptr, i64, i64 } %t243, ptr %a249 + call void @finch_str_drop(ptr %a249) + store { ptr, i64, i64 } %t245, ptr %a250 + call void @finch_str_drop(ptr %a250) + %t251 = load { ptr, i64, i64 }, ptr %a246 + store { ptr, i64, i64 } %t251, ptr %a253 + store { ptr, i64, i64 } { ptr @.str.7233, i64 1, i64 0 }, ptr %a254 + call void @finch_str_concat(ptr %a252, ptr %a253, ptr %a254) + store { ptr, i64, i64 } %t251, ptr %a255 + call void @finch_str_drop(ptr %a255) + %t256 = load { ptr, i64, i64 }, ptr %a252 + call void @finch.drop.arr_str(ptr %a7) + %t257 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t256, 2 + ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t257 +endif11252: + br label %endif11249 +endif11249: + br label %endif11238 +endif11238: + br label %endif11235 +endif11235: + br label %endif11232 +endif11232: + br label %endif11229 +endif11229: + br label %endif11226 +endif11226: + %t258 = load ptr, ptr %a1 + %t259 = icmp eq ptr %t258, null + br i1 %t259, label %panic11270, label %ok11271 +panic11270: + call void @finch_panic(ptr @.str.7234, i64 406, ptr @.str.7235) 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 +ok11271: + %t260 = getelementptr inbounds %S.json.Reader, ptr %t258, i32 0, i32 1 + %t261 = load i64, ptr %t260 + store i64 %t261, ptr %a12 + br label %while.cond11183 } define internal { i1, %S.json.Json, { ptr, i64, i64 } } @finch.json.read_number(ptr %p0) { @@ -94163,361 +112261,362 @@ entry: %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 + %a153 = alloca { ptr, i64, i64 }, align 16 + %a155 = alloca { ptr, i64, i64 }, align 16 + %a163 = 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) + br i1 %t3, label %panic11272, label %ok11273 +panic11272: + call void @finch_panic(ptr @.str.7236, i64 411, ptr @.str.7237) unreachable -ok10739: +ok11273: %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: + br i1 %t9, label %then11274, label %endif11276 +then11274: %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) + br i1 %t11, label %panic11277, label %ok11278 +panic11277: + call void @finch_panic(ptr @.str.7238, i64 413, ptr @.str.7239) unreachable -ok10744: +ok11278: %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: + br label %endif11276 +endif11276: + br label %while.cond11279 +while.cond11279: %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) + br i1 %t16, label %panic11282, label %ok11283 +panic11282: + call void @finch_panic(ptr @.str.7240, i64 415, ptr @.str.7241) unreachable -ok10749: +ok11283: %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) + br i1 %t20, label %panic11284, label %ok11285 +panic11284: + call void @finch_panic(ptr @.str.7242, i64 415, ptr @.str.7243) unreachable -ok10751: +ok11285: %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: + br label %logic.from11286 +logic.from11286: + br i1 %t24, label %logic.rhs11287, label %logic.end11288 +logic.rhs11287: %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) + br i1 %t26, label %panic11289, label %ok11290 +panic11289: + call void @finch_panic(ptr @.str.7244, i64 415, ptr @.str.7245) unreachable -ok10756: +ok11290: %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) + br i1 %t29, label %panic11291, label %ok11292 +panic11291: + call void @finch_panic(ptr @.str.7246, i64 415, ptr @.str.7247) unreachable -ok10758: +ok11292: %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) + br i1 %t34, label %range11293, label %inrange11294 +range11293: + call void @finch_panic_index(ptr @.str.7248, i64 415, i64 %t31, i64 %t33) unreachable -inrange10760: +inrange11294: %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: + br label %logic.from11295 +logic.from11295: + br i1 %t38, label %logic.rhs11296, label %logic.end11297 +logic.rhs11296: %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) + br i1 %t40, label %panic11298, label %ok11299 +panic11298: + call void @finch_panic(ptr @.str.7249, i64 415, ptr @.str.7250) unreachable -ok10765: +ok11299: %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) + br i1 %t43, label %panic11300, label %ok11301 +panic11300: + call void @finch_panic(ptr @.str.7251, i64 415, ptr @.str.7252) unreachable -ok10767: +ok11301: %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) + br i1 %t48, label %range11302, label %inrange11303 +range11302: + call void @finch_panic_index(ptr @.str.7253, i64 415, i64 %t45, i64 %t47) unreachable -inrange10769: +inrange11303: %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: + br label %logic.rend11304 +logic.rend11304: + br label %logic.end11297 +logic.end11297: + %t53 = phi i1 [ false, %logic.from11295 ], [ %t52, %logic.rend11304 ] + br label %logic.from11305 +logic.from11305: + br i1 %t53, label %logic.end11307, label %logic.rhs11306 +logic.rhs11306: %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) + br i1 %t55, label %panic11308, label %ok11309 +panic11308: + call void @finch_panic(ptr @.str.7254, i64 415, ptr @.str.7255) unreachable -ok10775: +ok11309: %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) + br i1 %t58, label %panic11310, label %ok11311 +panic11310: + call void @finch_panic(ptr @.str.7256, i64 415, ptr @.str.7257) unreachable -ok10777: +ok11311: %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) + br i1 %t63, label %range11312, label %inrange11313 +range11312: + call void @finch_panic_index(ptr @.str.7258, i64 415, i64 %t60, i64 %t62) unreachable -inrange10779: +inrange11313: %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: + br label %logic.rend11314 +logic.rend11314: + br label %logic.end11307 +logic.end11307: + %t68 = phi i1 [ true, %logic.from11305 ], [ %t67, %logic.rend11314 ] + br label %logic.from11315 +logic.from11315: + br i1 %t68, label %logic.end11317, label %logic.rhs11316 +logic.rhs11316: %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) + br i1 %t70, label %panic11318, label %ok11319 +panic11318: + call void @finch_panic(ptr @.str.7259, i64 415, ptr @.str.7260) unreachable -ok10785: +ok11319: %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) + br i1 %t73, label %panic11320, label %ok11321 +panic11320: + call void @finch_panic(ptr @.str.7261, i64 415, ptr @.str.7262) unreachable -ok10787: +ok11321: %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) + br i1 %t78, label %range11322, label %inrange11323 +range11322: + call void @finch_panic_index(ptr @.str.7263, i64 415, i64 %t75, i64 %t77) unreachable -inrange10789: +inrange11323: %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: + br label %logic.rend11324 +logic.rend11324: + br label %logic.end11317 +logic.end11317: + %t83 = phi i1 [ true, %logic.from11315 ], [ %t82, %logic.rend11324 ] + br label %logic.from11325 +logic.from11325: + br i1 %t83, label %logic.end11327, label %logic.rhs11326 +logic.rhs11326: %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) + br i1 %t85, label %panic11328, label %ok11329 +panic11328: + call void @finch_panic(ptr @.str.7264, i64 415, ptr @.str.7265) unreachable -ok10795: +ok11329: %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) + br i1 %t88, label %panic11330, label %ok11331 +panic11330: + call void @finch_panic(ptr @.str.7266, i64 415, ptr @.str.7267) unreachable -ok10797: +ok11331: %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) + br i1 %t93, label %range11332, label %inrange11333 +range11332: + call void @finch_panic_index(ptr @.str.7268, i64 415, i64 %t90, i64 %t92) unreachable -inrange10799: +inrange11333: %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: + br label %logic.rend11334 +logic.rend11334: + br label %logic.end11327 +logic.end11327: + %t98 = phi i1 [ true, %logic.from11325 ], [ %t97, %logic.rend11334 ] + br label %logic.from11335 +logic.from11335: + br i1 %t98, label %logic.end11337, label %logic.rhs11336 +logic.rhs11336: %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) + br i1 %t100, label %panic11338, label %ok11339 +panic11338: + call void @finch_panic(ptr @.str.7269, i64 415, ptr @.str.7270) unreachable -ok10805: +ok11339: %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) + br i1 %t103, label %panic11340, label %ok11341 +panic11340: + call void @finch_panic(ptr @.str.7271, i64 415, ptr @.str.7272) unreachable -ok10807: +ok11341: %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) + br i1 %t108, label %range11342, label %inrange11343 +range11342: + call void @finch_panic_index(ptr @.str.7273, i64 415, i64 %t105, i64 %t107) unreachable -inrange10809: +inrange11343: %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: + br label %logic.rend11344 +logic.rend11344: + br label %logic.end11337 +logic.end11337: + %t113 = phi i1 [ true, %logic.from11335 ], [ %t112, %logic.rend11344 ] + br label %logic.from11345 +logic.from11345: + br i1 %t113, label %logic.end11347, label %logic.rhs11346 +logic.rhs11346: %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) + br i1 %t115, label %panic11348, label %ok11349 +panic11348: + call void @finch_panic(ptr @.str.7274, i64 415, ptr @.str.7275) unreachable -ok10815: +ok11349: %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) + br i1 %t118, label %panic11350, label %ok11351 +panic11350: + call void @finch_panic(ptr @.str.7276, i64 415, ptr @.str.7277) unreachable -ok10817: +ok11351: %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) + br i1 %t123, label %range11352, label %inrange11353 +range11352: + call void @finch_panic_index(ptr @.str.7278, i64 415, i64 %t120, i64 %t122) unreachable -inrange10819: +inrange11353: %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: + br label %logic.rend11354 +logic.rend11354: + br label %logic.end11347 +logic.end11347: + %t128 = phi i1 [ true, %logic.from11345 ], [ %t127, %logic.rend11354 ] + br label %logic.rend11355 +logic.rend11355: + br label %logic.end11288 +logic.end11288: + %t129 = phi i1 [ false, %logic.from11286 ], [ %t128, %logic.rend11355 ] + br i1 %t129, label %while.body11280, label %while.end11281 +while.body11280: %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) + br i1 %t131, label %panic11356, label %ok11357 +panic11356: + call void @finch_panic(ptr @.str.7279, i64 416, ptr @.str.7280) unreachable -ok10823: +ok11357: %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: + br label %while.cond11279 +while.end11281: %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) + br i1 %t136, label %panic11358, label %ok11359 +panic11358: + call void @finch_panic(ptr @.str.7281, i64 418, ptr @.str.7282) unreachable -ok10825: +ok11359: %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) + br i1 %t143, label %panic11360, label %ok11361 +panic11360: + call void @finch_panic(ptr @.str.7284, i64 418, ptr @.str.7285) unreachable -ok10827: +ok11361: %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) + call void @finch_str_sub(ptr %a140, ptr %a139, i64 %t141, i64 %t145, ptr @.str.7283, i64 418) %t146 = load { ptr, i64, i64 }, ptr %a140 store { ptr, i64, i64 } zeroinitializer, ptr %a147 store double 0.0, ptr %a148 @@ -94525,31 +112624,34 @@ ok10827: %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) + store { ptr, i64, i64 } %t146, ptr %a153 + call void @finch_str_drop(ptr %a153) + %t154 = load double, ptr %a148 + br i1 %t151, label %or.failed11362, label %or.ok11363 +or.failed11362: + store { ptr, i64, i64 } %t152, ptr %a155 + %t156 = load i64, ptr %a6 + %t157 = load ptr, ptr %a1 + %t158 = icmp eq ptr %t157, null + br i1 %t158, label %panic11364, label %ok11365 +panic11364: + call void @finch_panic(ptr @.str.7286, i64 419, ptr @.str.7287) 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 +ok11365: + %t159 = getelementptr inbounds %S.json.Reader, ptr %t157, i32 0, i32 1 + store i64 %t156, ptr %t159 + %t160 = load ptr, ptr %a1 + %t161 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t160, { ptr, i64, i64 } { ptr @.str.7288, i64 8, i64 0 }) + call void @finch_str_drop(ptr %a155) + %t162 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t161, 2 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t162 +or.ok11363: + store double %t154, ptr %a163 + %t164 = load double, ptr %a163 + %t165 = call %S.json.Json @finch.json.new_number(double %t164) + %t166 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 + %t167 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t166, %S.json.Json %t165, 1 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t167 } define internal { i1, %S.json.Json, { ptr, i64, i64 } } @finch.json.read_value(ptr %p0) { @@ -94570,44 +112672,44 @@ entry: 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) + br i1 %t7, label %panic11366, label %ok11367 +panic11366: + call void @finch_panic(ptr @.str.7289, i64 428, ptr @.str.7290) unreachable -ok10833: +ok11367: %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) + br i1 %t11, label %panic11368, label %ok11369 +panic11368: + call void @finch_panic(ptr @.str.7291, i64 428, ptr @.str.7292) unreachable -ok10835: +ok11369: %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: + br i1 %t15, label %then11370, label %endif11372 +then11370: %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 }) + %t17 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t16, { ptr, i64, i64 } { ptr @.str.7293, 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: +endif11372: %t19 = load i8, ptr %a5 %t20 = icmp eq i8 %t19, 123 - br i1 %t20, label %then10839, label %endif10841 -then10839: + br i1 %t20, label %then11373, label %endif11375 +then11373: %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) + br i1 %t24, label %panic11376, label %ok11377 +panic11376: + call void @finch_panic(ptr @.str.7294, i64 433, ptr @.str.7295) unreachable -ok10843: +ok11377: %t25 = getelementptr inbounds %S.json.Reader, ptr %t23, i32 0, i32 1 %t26 = load i64, ptr %t25 %t27 = add i64 %t26, 1 @@ -94617,15 +112719,15 @@ ok10843: %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: + br i1 %t31, label %then11378, label %endif11380 +then11378: %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) + br i1 %t33, label %panic11381, label %ok11382 +panic11381: + call void @finch_panic(ptr @.str.7296, i64 436, ptr @.str.7297) unreachable -ok10848: +ok11382: %t34 = getelementptr inbounds %S.json.Reader, ptr %t32, i32 0, i32 1 %t35 = load i64, ptr %t34 %t36 = add i64 %t35, 1 @@ -94634,54 +112736,58 @@ ok10848: %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: +endif11380: + br label %while.cond11383 +while.cond11383: + br label %while.body11384 +while.body11384: %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: + br i1 %t43, label %then11386, label %endif11388 +then11386: %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 }) + %t45 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t44, { ptr, i64, i64 } { ptr @.str.7298, i64 15, i64 0 }) + call void @finch.drop.S_json_Json(ptr %a22) %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: +endif11388: %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: + br i1 %t50, label %try.failed11389, label %try.ok11390 +try.failed11389: + call void @finch.drop.S_json_Json(ptr %a22) %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: +try.ok11390: 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: + br i1 %t58, label %then11391, label %endif11393 +then11391: %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 }) + %t60 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t59, { ptr, i64, i64 } { ptr @.str.7299, i64 3, i64 0 }) + call void @finch_str_drop(ptr %a54) + call void @finch.drop.S_json_Json(ptr %a22) %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: +endif11393: %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) + br i1 %t63, label %panic11394, label %ok11395 +panic11394: + call void @finch_panic(ptr @.str.7300, i64 449, ptr @.str.7301) unreachable -ok10861: +ok11395: %t64 = getelementptr inbounds %S.json.Reader, ptr %t62, i32 0, i32 1 %t65 = load i64, ptr %t64 %t66 = add i64 %t65, 1 @@ -94692,11 +112798,13 @@ ok10861: %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: + br i1 %t70, label %try.failed11396, label %try.ok11397 +try.failed11396: + call void @finch_str_drop(ptr %a54) + call void @finch.drop.S_json_Json(ptr %a22) %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: +try.ok11397: store %S.json.Json %t72, ptr %a74 %t75 = load { ptr, i64, i64 }, ptr %a54 %t76 = load %S.json.Json, ptr %a74 @@ -94706,60 +112814,67 @@ try.ok10863: %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: + br i1 %t80, label %then11398, label %endif11400 +then11398: %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) + br i1 %t82, label %panic11401, label %ok11402 +panic11401: + call void @finch_panic(ptr @.str.7302, i64 454, ptr @.str.7303) unreachable -ok10868: +ok11402: %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: + call void @finch.drop.S_json_Json(ptr %a74) + call void @finch_str_drop(ptr %a54) + br label %while.cond11383 +endif11400: %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: + br i1 %t88, label %then11403, label %endif11405 +then11403: %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) + br i1 %t90, label %panic11406, label %ok11407 +panic11406: + call void @finch_panic(ptr @.str.7304, i64 458, ptr @.str.7305) unreachable -ok10873: +ok11407: %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 + call void @finch.drop.S_json_Json(ptr %a74) + call void @finch_str_drop(ptr %a54) %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: +endif11405: %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 }) + %t98 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t97, { ptr, i64, i64 } { ptr @.str.7306, i64 10, i64 0 }) + call void @finch.drop.S_json_Json(ptr %a74) + call void @finch_str_drop(ptr %a54) + call void @finch.drop.S_json_Json(ptr %a22) %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: +endif11375: %t100 = load i8, ptr %a5 %t101 = icmp eq i8 %t100, 91 - br i1 %t101, label %then10874, label %endif10876 -then10874: + br i1 %t101, label %then11408, label %endif11410 +then11408: %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) + br i1 %t105, label %panic11411, label %ok11412 +panic11411: + call void @finch_panic(ptr @.str.7307, i64 466, ptr @.str.7308) unreachable -ok10878: +ok11412: %t106 = getelementptr inbounds %S.json.Reader, ptr %t104, i32 0, i32 1 %t107 = load i64, ptr %t106 %t108 = add i64 %t107, 1 @@ -94769,15 +112884,15 @@ ok10878: %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: + br i1 %t112, label %then11413, label %endif11415 +then11413: %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) + br i1 %t114, label %panic11416, label %ok11417 +panic11416: + call void @finch_panic(ptr @.str.7309, i64 469, ptr @.str.7310) unreachable -ok10883: +ok11417: %t115 = getelementptr inbounds %S.json.Reader, ptr %t113, i32 0, i32 1 %t116 = load i64, ptr %t115 %t117 = add i64 %t116, 1 @@ -94786,22 +112901,23 @@ ok10883: %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: +endif11415: + br label %while.cond11418 +while.cond11418: + br label %while.body11419 +while.body11419: %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: + br i1 %t124, label %try.failed11421, label %try.ok11422 +try.failed11421: + call void @finch.drop.S_json_Json(ptr %a103) %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: +try.ok11422: 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) @@ -94810,173 +112926,186 @@ try.ok10888: %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: + br i1 %t133, label %then11423, label %endif11425 +then11423: %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) + br i1 %t135, label %panic11426, label %ok11427 +panic11426: + call void @finch_panic(ptr @.str.7311, i64 477, ptr @.str.7312) unreachable -ok10893: +ok11427: %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: + call void @finch.drop.S_json_Json(ptr %a128) + br label %while.cond11418 +endif11425: %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: + br i1 %t141, label %then11428, label %endif11430 +then11428: %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) + br i1 %t143, label %panic11431, label %ok11432 +panic11431: + call void @finch_panic(ptr @.str.7313, i64 481, ptr @.str.7314) unreachable -ok10898: +ok11432: %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 + call void @finch.drop.S_json_Json(ptr %a128) %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: +endif11430: %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 }) + %t151 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t150, { ptr, i64, i64 } { ptr @.str.7315, i64 10, i64 0 }) + call void @finch.drop.S_json_Json(ptr %a128) + call void @finch.drop.S_json_Json(ptr %a103) %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: +endif11410: %t153 = load i8, ptr %a5 %t154 = icmp eq i8 %t153, 34 - br i1 %t154, label %then10899, label %endif10901 -then10899: + br i1 %t154, label %then11433, label %endif11435 +then11433: %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: + br i1 %t158, label %try.failed11436, label %try.ok11437 +try.failed11436: %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: +try.ok11437: 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) + call void @finch_str_drop(ptr %a162) %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: +endif11435: %t167 = load i8, ptr %a5 %t168 = icmp eq i8 %t167, 116 - br i1 %t168, label %then10904, label %endif10906 -then10904: + br i1 %t168, label %then11438, label %endif11440 +then11438: %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 }) + %t170 = call { i1, i8, { ptr, i64, i64 } } @finch.json.expect_word(ptr %t169, { ptr, i64, i64 } { ptr @.str.7316, 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: + br i1 %t172, label %try.failed11441, label %try.ok11442 +try.failed11441: %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: +try.ok11442: %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: +endif11440: %t178 = load i8, ptr %a5 %t179 = icmp eq i8 %t178, 102 - br i1 %t179, label %then10909, label %endif10911 -then10909: + br i1 %t179, label %then11443, label %endif11445 +then11443: %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 }) + %t181 = call { i1, i8, { ptr, i64, i64 } } @finch.json.expect_word(ptr %t180, { ptr, i64, i64 } { ptr @.str.7317, 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: + br i1 %t183, label %try.failed11446, label %try.ok11447 +try.failed11446: %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: +try.ok11447: %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: +endif11445: %t189 = load i8, ptr %a5 %t190 = icmp eq i8 %t189, 110 - br i1 %t190, label %then10914, label %endif10916 -then10914: + br i1 %t190, label %then11448, label %endif11450 +then11448: %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 }) + %t192 = call { i1, i8, { ptr, i64, i64 } } @finch.json.expect_word(ptr %t191, { ptr, i64, i64 } { ptr @.str.7318, 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: + br i1 %t194, label %try.failed11451, label %try.ok11452 +try.failed11451: %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: +try.ok11452: %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: +endif11450: %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: + br label %logic.from11453 +logic.from11453: + br i1 %t201, label %logic.end11455, label %logic.rhs11454 +logic.rhs11454: %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: + br label %logic.from11456 +logic.from11456: + br i1 %t203, label %logic.rhs11457, label %logic.end11458 +logic.rhs11457: %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: + br label %logic.rend11459 +logic.rend11459: + br label %logic.end11458 +logic.end11458: + %t206 = phi i1 [ false, %logic.from11456 ], [ %t205, %logic.rend11459 ] + br label %logic.rend11460 +logic.rend11460: + br label %logic.end11455 +logic.end11455: + %t207 = phi i1 [ true, %logic.from11453 ], [ %t206, %logic.rend11460 ] + br i1 %t207, label %then11461, label %endif11463 +then11461: %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: + br i1 %t211, label %try.failed11464, label %try.ok11465 +try.failed11464: %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: +try.ok11465: %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: +endif11463: %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 }) + %t218 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t217, { ptr, i64, i64 } { ptr @.str.7319, 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 void @finch.drop.S_json_Reader(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.json.Reader, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + ret void +} + define internal { i1, %S.json.Json, { ptr, i64, i64 } } @finch.json.parse({ ptr, i64, i64 } %p0) { entry: %a1 = alloca { ptr, i64, i64 }, align 16 @@ -94984,8 +113113,6 @@ entry: %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 @@ -94998,11 +113125,12 @@ entry: %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: + br i1 %t10, label %try.failed11466, label %try.ok11467 +try.failed11466: + call void @finch.drop.S_json_Reader(ptr %a7) %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: +try.ok11467: 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 @@ -95011,19 +113139,163 @@ try.ok10933: %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 }) + br i1 %t20, label %then11468, label %endif11470 +then11468: + %t21 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %a7, { ptr, i64, i64 } { ptr @.str.7320, i64 19, i64 0 }) + call void @finch.drop.S_json_Json(ptr %a14) + call void @finch.drop.S_json_Reader(ptr %a7) %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: +endif11470: %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 + call void @finch.drop.S_json_Reader(ptr %a7) + %t24 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 + %t25 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t24, %S.json.Json %t23, 1 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t25 +} + +define internal { ptr, i64, i64 } @finch.embedded.names() { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + store { ptr, i64, i64 } zeroinitializer, ptr %a1 + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t3 = load i64, ptr %t2 + %t4 = add i64 %t3, 1 + call void @finch_arr_reserve(ptr %a1, i64 %t4, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t5 = load ptr, ptr %a1 + %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 %t3 + store { ptr, i64, i64 } { ptr @.str.7321, i64 18, i64 0 }, ptr %t6 + store i64 %t4, ptr %t2 + %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t8 = load i64, ptr %t7 + %t9 = add i64 %t8, 1 + call void @finch_arr_reserve(ptr %a1, i64 %t9, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t10 = load ptr, ptr %a1 + %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t10, i64 %t8 + store { ptr, i64, i64 } { ptr @.str.7322, i64 12, i64 0 }, ptr %t11 + store i64 %t9, ptr %t7 + %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t13 = load i64, ptr %t12 + %t14 = add i64 %t13, 1 + call void @finch_arr_reserve(ptr %a1, i64 %t14, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t15 = load ptr, ptr %a1 + %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t15, i64 %t13 + store { ptr, i64, i64 } { ptr @.str.7323, i64 12, i64 0 }, ptr %t16 + store i64 %t14, ptr %t12 + %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t18 = load i64, ptr %t17 + %t19 = add i64 %t18, 1 + call void @finch_arr_reserve(ptr %a1, i64 %t19, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t20 = load ptr, ptr %a1 + %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t20, i64 %t18 + store { ptr, i64, i64 } { ptr @.str.7324, i64 12, i64 0 }, ptr %t21 + store i64 %t19, ptr %t17 + %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t23 = load i64, ptr %t22 + %t24 = add i64 %t23, 1 + call void @finch_arr_reserve(ptr %a1, i64 %t24, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t25 = load ptr, ptr %a1 + %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t25, i64 %t23 + store { ptr, i64, i64 } { ptr @.str.7325, i64 20, i64 0 }, ptr %t26 + store i64 %t24, ptr %t22 + %t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t28 = load i64, ptr %t27 + %t29 = add i64 %t28, 1 + call void @finch_arr_reserve(ptr %a1, i64 %t29, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t30 = load ptr, ptr %a1 + %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t30, i64 %t28 + store { ptr, i64, i64 } { ptr @.str.7326, i64 12, i64 0 }, ptr %t31 + store i64 %t29, ptr %t27 + %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t33 = load i64, ptr %t32 + %t34 = add i64 %t33, 1 + call void @finch_arr_reserve(ptr %a1, i64 %t34, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t35 = load ptr, ptr %a1 + %t36 = getelementptr inbounds { ptr, i64, i64 }, ptr %t35, i64 %t33 + store { ptr, i64, i64 } { ptr @.str.7327, i64 20, i64 0 }, ptr %t36 + store i64 %t34, ptr %t32 + %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t38 = load i64, ptr %t37 + %t39 = add i64 %t38, 1 + call void @finch_arr_reserve(ptr %a1, i64 %t39, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t40 = load ptr, ptr %a1 + %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i64 %t38 + store { ptr, i64, i64 } { ptr @.str.7328, i64 15, i64 0 }, ptr %t41 + store i64 %t39, ptr %t37 + %t42 = load { ptr, i64, i64 }, ptr %a1 + ret { ptr, i64, i64 } %t42 +} + +define internal { ptr, i64, i64 } @finch.embedded.texts() { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + store { ptr, i64, i64 } zeroinitializer, ptr %a1 + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t3 = load i64, ptr %t2 + %t4 = add i64 %t3, 1 + call void @finch_arr_reserve(ptr %a1, i64 %t4, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t5 = load ptr, ptr %a1 + %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 %t3 + store { ptr, i64, i64 } { ptr @.str.7329, i64 24981, i64 0 }, ptr %t6 + store i64 %t4, ptr %t2 + %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t8 = load i64, ptr %t7 + %t9 = add i64 %t8, 1 + call void @finch_arr_reserve(ptr %a1, i64 %t9, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t10 = load ptr, ptr %a1 + %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t10, i64 %t8 + store { ptr, i64, i64 } { ptr @.str.7330, i64 12884, i64 0 }, ptr %t11 + store i64 %t9, ptr %t7 + %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t13 = load i64, ptr %t12 + %t14 = add i64 %t13, 1 + call void @finch_arr_reserve(ptr %a1, i64 %t14, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t15 = load ptr, ptr %a1 + %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t15, i64 %t13 + store { ptr, i64, i64 } { ptr @.str.7331, i64 2846, i64 0 }, ptr %t16 + store i64 %t14, ptr %t12 + %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t18 = load i64, ptr %t17 + %t19 = add i64 %t18, 1 + call void @finch_arr_reserve(ptr %a1, i64 %t19, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t20 = load ptr, ptr %a1 + %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t20, i64 %t18 + store { ptr, i64, i64 } { ptr @.str.7332, i64 1406, i64 0 }, ptr %t21 + store i64 %t19, ptr %t17 + %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t23 = load i64, ptr %t22 + %t24 = add i64 %t23, 1 + call void @finch_arr_reserve(ptr %a1, i64 %t24, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t25 = load ptr, ptr %a1 + %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t25, i64 %t23 + store { ptr, i64, i64 } { ptr @.str.7333, i64 995, i64 0 }, ptr %t26 + store i64 %t24, ptr %t22 + %t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t28 = load i64, ptr %t27 + %t29 = add i64 %t28, 1 + call void @finch_arr_reserve(ptr %a1, i64 %t29, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t30 = load ptr, ptr %a1 + %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t30, i64 %t28 + store { ptr, i64, i64 } { ptr @.str.7334, i64 2539, i64 0 }, ptr %t31 + store i64 %t29, ptr %t27 + %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t33 = load i64, ptr %t32 + %t34 = add i64 %t33, 1 + call void @finch_arr_reserve(ptr %a1, i64 %t34, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t35 = load ptr, ptr %a1 + %t36 = getelementptr inbounds { ptr, i64, i64 }, ptr %t35, i64 %t33 + store { ptr, i64, i64 } { ptr @.str.7335, i64 1792, i64 0 }, ptr %t36 + store i64 %t34, ptr %t32 + %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t38 = load i64, ptr %t37 + %t39 = add i64 %t38, 1 + call void @finch_arr_reserve(ptr %a1, i64 %t39, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t40 = load ptr, ptr %a1 + %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i64 %t38 + store { ptr, i64, i64 } { ptr @.str.7336, i64 365, i64 0 }, ptr %t41 + store i64 %t39, ptr %t37 + %t42 = load { ptr, i64, i64 }, ptr %a1 + ret { ptr, i64, i64 } %t42 } define i32 @main(i32 %argc, ptr %argv) { diff --git a/bootstrap/linux-x86_64.ll b/bootstrap/linux-x86_64.ll index 6c23a9c..d64e054 100644 --- a/bootstrap/linux-x86_64.ll +++ b/bootstrap/linux-x86_64.ll @@ -7,21 +7,23 @@ %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, { ptr, i64, i64 }, i64, i64 } +%S.gen.Var = type { { ptr, i64, i64 }, %S.ast.Type, { ptr, i64, i64 }, i1, i64, i1, i1, { 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, 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 } } -%S.gen.Scope = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 } } -%S.gen.Loop = type { { ptr, i64, i64 }, { ptr, i64, i64 }, i64 } +%S.gen.Cleanup = type { i1, i64 } +%S.gen.Scope = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 } } +%S.gen.Pending = type { { ptr, i64, i64 }, %S.ast.Type, i1 } +%S.gen.Loop = type { { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64 } %S.gen.FnSig = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i1, i1, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i1, i1, { ptr, i64, i64 }, %S.ast.Type, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64 } %S.gen.StructDef = type { { ptr, i64, i64 }, { ptr, i64, i64 }, i1, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64, { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64, i64, i1 } %S.gen.Val = type { { ptr, i64, i64 }, %S.ast.Type, i1, i1 } %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, { 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.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 }, { 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 } } @@ -246,271 +248,271 @@ @.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 [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 [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.145 = private unnamed_addr constant [8 x i8] c"/files-\00" +@.str.146 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.147 = private unnamed_addr constant [6 x i8] c"/done\00" +@.str.148 = private unnamed_addr constant [2 x i8] c"/\00" +@.str.149 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.150 = private unnamed_addr constant [2 x i8] c"/\00" +@.str.151 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.152 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.153 = private unnamed_addr constant [6 x i8] c"/done\00" +@.str.154 = private unnamed_addr constant [1 x i8] c"\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.156 = private unnamed_addr constant [8 x i8] c"version\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"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.158 = private unnamed_addr constant [10 x i8] c"--version\00" +@.str.159 = private unnamed_addr constant [47 x i8] c"Finch 2.4.0 (the compiler is written in Finch)\00" +@.str.160 = private unnamed_addr constant [1 x i8] c"\00" +@.str.161 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.162 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.163 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.164 = private unnamed_addr constant [4 x i8] c"lsp\00" +@.str.165 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.166 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.167 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.168 = private unnamed_addr constant [6 x i8] c"build\00" +@.str.169 = private unnamed_addr constant [4 x i8] c"run\00" +@.str.170 = private unnamed_addr constant [3 x i8] c"ir\00" +@.str.171 = private unnamed_addr constant [6 x i8] c"index\00" +@.str.172 = private unnamed_addr constant [1 x i8] c"\00" +@.str.173 = private unnamed_addr constant [4 x i8] c"-O2\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 [2 x i8] c"=\00" +@.str.175 = private unnamed_addr constant [4 x i8] c"run\00" +@.str.176 = private unnamed_addr constant [3 x i8] c"-o\00" +@.str.177 = private unnamed_addr constant [6 x i8] c"build\00" +@.str.178 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.179 = private unnamed_addr constant [9 x i8] c"--shared\00" +@.str.180 = private unnamed_addr constant [6 x i8] c"build\00" +@.str.181 = private unnamed_addr constant [4 x i8] c"-O0\00" +@.str.182 = private unnamed_addr constant [4 x i8] c"-O0\00" +@.str.183 = private unnamed_addr constant [3 x i8] c"-l\00" @.str.184 = private unnamed_addr constant [13 x i8] c"src/main.fch\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 [13 x i8] c"src/main.fch\00" -@.str.205 = private unnamed_addr constant [20 x i8] c"/../share/finch/std\00" -@.str.206 = private unnamed_addr constant [4 x i8] c"std\00" -@.str.207 = private unnamed_addr constant [10 x i8] c"/path.fch\00" -@.str.208 = private unnamed_addr constant [11 x i8] c"FINCH_PATH\00" -@.str.209 = private unnamed_addr constant [1 x i8] c"\00" -declare ptr @getenv(ptr) -@.str.210 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.211 = private unnamed_addr constant [2 x i8] c":\00" -@.str.212 = private unnamed_addr constant [1 x i8] c"\00" +@.str.186 = private unnamed_addr constant [3 x i8] c"-l\00" +@.str.187 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.188 = private unnamed_addr constant [3 x i8] c"-I\00" +@.str.189 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.190 = private unnamed_addr constant [10 x i8] c"--overlay\00" +@.str.191 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.192 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.193 = private unnamed_addr constant [2 x i8] c"=\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 [3 x i8] c"-g\00" +@.str.197 = private unnamed_addr constant [9 x i8] c"--target\00" +@.str.198 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.199 = private unnamed_addr constant [4 x i8] c"run\00" +@.str.200 = private unnamed_addr constant [4 x i8] c"run\00" +@.str.201 = private unnamed_addr constant [12 x i8] c"/finch_run_\00" +@.str.202 = private unnamed_addr constant [2 x i8] c"_\00" +@.str.203 = private unnamed_addr constant [5 x i8] c".dll\00" +@.str.204 = private unnamed_addr constant [4 x i8] c"lib\00" +@.str.205 = private unnamed_addr constant [7 x i8] c".dylib\00" +@.str.206 = private unnamed_addr constant [4 x i8] c"lib\00" +@.str.207 = private unnamed_addr constant [4 x i8] c".so\00" +@.str.208 = private unnamed_addr constant [6 x i8] c"linux\00" +@.str.209 = private unnamed_addr constant [8 x i8] c"windows\00" +@.str.210 = private unnamed_addr constant [6 x i8] c"macos\00" +@.str.211 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.212 = private unnamed_addr constant [8 x i8] c"/../std\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.214 = private unnamed_addr constant [5 x i8] c"/std\00" @.str.215 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.216 = private unnamed_addr constant [13 x i8] c"src/main.fch\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".c\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".o\00" -@.str.221 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.222 = private unnamed_addr constant [3 x i8] c".a\00" -@.str.223 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.224 = private unnamed_addr constant [1 x i8] c"\00" -@.str.225 = private unnamed_addr constant [1 x i8] c"\00" -@.str.226 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.227 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.228 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.229 = private unnamed_addr constant [4 x i8] c"PWD\00" -@.str.230 = private unnamed_addr constant [1 x i8] c"\00" -@.str.231 = private unnamed_addr constant [3 x i8] c"ir\00" -@.str.232 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.233 = private unnamed_addr constant [1 x i8] c"\00" -@.str.234 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.235 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.236 = private unnamed_addr constant [9 x i8] c"FINCH_RT\00" -@.str.237 = private unnamed_addr constant [1 x i8] c"\00" -@.str.238 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.239 = private unnamed_addr constant [23 x i8] c"/../runtime/finch_rt.c\00" -@.str.240 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.241 = private unnamed_addr constant [20 x i8] c"/runtime/finch_rt.c\00" -@.str.242 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.243 = private unnamed_addr constant [35 x i8] c"/../share/finch/runtime/finch_rt.c\00" -@.str.244 = private unnamed_addr constant [19 x i8] c"runtime/finch_rt.c\00" -@.str.245 = private unnamed_addr constant [19 x i8] c"runtime/finch_rt.c\00" -@.str.246 = private unnamed_addr constant [57 x i8] c"error: can't find the Finch runtime (runtime/finch_rt.c)\00" -@.str.247 = private unnamed_addr constant [1 x i8] c"\00" -@.str.248 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.249 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.250 = private unnamed_addr constant [1 x i8] c"\00" -@.str.251 = private unnamed_addr constant [7 x i8] c" -fPIC\00" -@.str.252 = private unnamed_addr constant [4 x i8] c" -g\00" -@.str.253 = private unnamed_addr constant [4 x i8] c"run\00" -@.str.254 = private unnamed_addr constant [2 x i8] c" \00" -@.str.255 = private unnamed_addr constant [2 x i8] c" \00" -@.str.256 = private unnamed_addr constant [7 x i8] c"rm -f \00" -@.str.257 = private unnamed_addr constant [3 x i8] c"fn\00" -@.str.258 = private unnamed_addr constant [7 x i8] c"return\00" -@.str.259 = private unnamed_addr constant [3 x i8] c"if\00" -@.str.260 = private unnamed_addr constant [5 x i8] c"else\00" -@.str.261 = private unnamed_addr constant [6 x i8] c"while\00" -@.str.262 = private unnamed_addr constant [4 x i8] c"for\00" -@.str.263 = private unnamed_addr constant [3 x i8] c"in\00" -@.str.264 = private unnamed_addr constant [6 x i8] c"break\00" -@.str.265 = private unnamed_addr constant [9 x i8] c"continue\00" -@.str.266 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.267 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.268 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.269 = private unnamed_addr constant [7 x i8] c"import\00" -@.str.270 = private unnamed_addr constant [5 x i8] c"link\00" -@.str.271 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.272 = private unnamed_addr constant [6 x i8] c"defer\00" -@.str.273 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.274 = private unnamed_addr constant [4 x i8] c"try\00" -@.str.275 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.276 = private unnamed_addr constant [6 x i8] c"match\00" -@.str.277 = private unnamed_addr constant [7 x i8] c"export\00" -@.str.278 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.279 = private unnamed_addr constant [29 x i8] c"used .path on a null pointer\00" -@.str.280 = private unnamed_addr constant [2 x i8] c":\00" -@.str.281 = private unnamed_addr constant [2 x i8] c":\00" -@.str.282 = private unnamed_addr constant [10 x i8] c": error: \00" -@.str.283 = private unnamed_addr constant [1 x i8] c"\00" -@.str.284 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.285 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.286 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.287 = private unnamed_addr constant [26 x i8] c"used .i 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 [28 x i8] c"used .src 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 [28 x i8] c"used .src on a null pointer\00" -@.str.292 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.293 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.294 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.216 = private unnamed_addr constant [20 x i8] c"/../share/finch/std\00" +@.str.217 = private unnamed_addr constant [4 x i8] c"std\00" +@.str.218 = private unnamed_addr constant [10 x i8] c"/path.fch\00" +@.str.219 = private unnamed_addr constant [5 x i8] c"/std\00" +@.str.220 = private unnamed_addr constant [11 x i8] c"FINCH_PATH\00" +@.str.221 = private unnamed_addr constant [1 x i8] c"\00" +declare ptr @getenv(ptr) +@.str.222 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.223 = private unnamed_addr constant [1 x i8] c"\00" +@.str.224 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.225 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.226 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.227 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.228 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.229 = private unnamed_addr constant [3 x i8] c".c\00" +@.str.230 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.231 = private unnamed_addr constant [3 x i8] c".o\00" +@.str.232 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.233 = private unnamed_addr constant [3 x i8] c".a\00" +@.str.234 = private unnamed_addr constant [2 x i8] c"/\00" +@.str.235 = private unnamed_addr constant [1 x i8] c"\00" +@.str.236 = private unnamed_addr constant [1 x i8] c"\00" +@.str.237 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.238 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.239 = private unnamed_addr constant [6 x i8] c"index\00" +@.str.240 = private unnamed_addr constant [3 x i8] c"ir\00" +@.str.241 = private unnamed_addr constant [6 x i8] c"index\00" +@.str.242 = private unnamed_addr constant [1 x i8] c"\00" +@.str.243 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.244 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.245 = private unnamed_addr constant [9 x i8] c"FINCH_RT\00" +@.str.246 = private unnamed_addr constant [1 x i8] c"\00" +@.str.247 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.248 = private unnamed_addr constant [23 x i8] c"/../runtime/finch_rt.c\00" +@.str.249 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.250 = private unnamed_addr constant [20 x i8] c"/runtime/finch_rt.c\00" +@.str.251 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.252 = private unnamed_addr constant [35 x i8] c"/../share/finch/runtime/finch_rt.c\00" +@.str.253 = private unnamed_addr constant [19 x i8] c"runtime/finch_rt.c\00" +@.str.254 = private unnamed_addr constant [19 x i8] c"runtime/finch_rt.c\00" +@.str.255 = private unnamed_addr constant [20 x i8] c"/runtime/finch_rt.c\00" +@.str.256 = private unnamed_addr constant [1 x i8] c"\00" +@.str.257 = private unnamed_addr constant [7 x i8] c" -fPIC\00" +@.str.258 = private unnamed_addr constant [4 x i8] c" -g\00" +@.str.259 = private unnamed_addr constant [4 x i8] c"run\00" +@.str.260 = private unnamed_addr constant [2 x i8] c" \00" +@.str.261 = private unnamed_addr constant [2 x i8] c" \00" +@.str.262 = private unnamed_addr constant [3 x i8] c"fn\00" +@.str.263 = private unnamed_addr constant [7 x i8] c"return\00" +@.str.264 = private unnamed_addr constant [3 x i8] c"if\00" +@.str.265 = private unnamed_addr constant [5 x i8] c"else\00" +@.str.266 = private unnamed_addr constant [6 x i8] c"while\00" +@.str.267 = private unnamed_addr constant [4 x i8] c"for\00" +@.str.268 = private unnamed_addr constant [3 x i8] c"in\00" +@.str.269 = private unnamed_addr constant [6 x i8] c"break\00" +@.str.270 = private unnamed_addr constant [9 x i8] c"continue\00" +@.str.271 = private unnamed_addr constant [5 x i8] c"true\00" +@.str.272 = private unnamed_addr constant [6 x i8] c"false\00" +@.str.273 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.274 = private unnamed_addr constant [7 x i8] c"import\00" +@.str.275 = private unnamed_addr constant [5 x i8] c"link\00" +@.str.276 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.277 = private unnamed_addr constant [6 x i8] c"defer\00" +@.str.278 = private unnamed_addr constant [3 x i8] c"or\00" +@.str.279 = private unnamed_addr constant [4 x i8] c"try\00" +@.str.280 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.281 = private unnamed_addr constant [6 x i8] c"match\00" +@.str.282 = private unnamed_addr constant [7 x i8] c"export\00" +@.str.283 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.284 = private unnamed_addr constant [29 x i8] c"used .path on a null pointer\00" +@.str.285 = private unnamed_addr constant [2 x i8] c":\00" +@.str.286 = private unnamed_addr constant [2 x i8] c":\00" +@.str.287 = private unnamed_addr constant [10 x i8] c": error: \00" +@.str.288 = private unnamed_addr constant [1 x i8] c"\00" +@.str.289 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.290 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.291 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.292 = private unnamed_addr constant [26 x i8] c"used .i 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 [28 x i8] c"used .src 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 [28 x i8] c"used .src on a null pointer\00" @.str.297 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" @.str.298 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" @.str.299 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" @.str.300 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.301 = private unnamed_addr constant [29 x i8] c"used .line on a null pointer\00" +@.str.301 = private unnamed_addr constant [28 x i8] c"used .src 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 [28 x i8] c"used .col on a null pointer\00" +@.str.303 = private unnamed_addr constant [26 x i8] c"used .i 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 [27 x i8] c"used .nl 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 .col 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 [26 x i8] c"used .i on a null pointer\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 [3 x i8] c"-=\00" -@.str.323 = private unnamed_addr constant [3 x i8] c"*=\00" -@.str.324 = private unnamed_addr constant [3 x i8] c"/=\00" -@.str.325 = private unnamed_addr constant [3 x i8] c"%=\00" -@.str.326 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.327 = private unnamed_addr constant [26 x i8] c"used .i 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 [28 x i8] c"used .src 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.305 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.306 = private unnamed_addr constant [29 x i8] c"used .line on a null pointer\00" +@.str.307 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.308 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00" +@.str.309 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.310 = private unnamed_addr constant [27 x i8] c"used .nl 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 [28 x i8] c"used .col on a null pointer\00" +@.str.313 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.314 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\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 [3 x i8] c"&&\00" +@.str.323 = private unnamed_addr constant [3 x i8] c"||\00" +@.str.324 = private unnamed_addr constant [3 x i8] c"..\00" +@.str.325 = private unnamed_addr constant [3 x i8] c":=\00" +@.str.326 = private unnamed_addr constant [3 x i8] c"+=\00" +@.str.327 = private unnamed_addr constant [3 x i8] c"-=\00" +@.str.328 = private unnamed_addr constant [3 x i8] c"*=\00" +@.str.329 = private unnamed_addr constant [3 x i8] c"/=\00" +@.str.330 = private unnamed_addr constant [3 x i8] c"%=\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 [14 x i8] c"src/lexer.fch\00" -@.str.334 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.334 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" @.str.335 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.336 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.337 = private unnamed_addr constant [23 x i8] c"(){}[],.:+-*/%&|^~<>=!\00" +@.str.336 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.337 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" @.str.338 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.339 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.339 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" @.str.340 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.341 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.342 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.341 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.342 = private unnamed_addr constant [23 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 [28 x i8] c"used .src 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 [1 x i8] c"\00" -@.str.347 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.348 = private unnamed_addr constant [29 x i8] c"used .line on a null pointer\00" -@.str.349 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.350 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00" -@.str.351 = private unnamed_addr constant [17 x i8] c"unknown escape \5C\00" +@.str.346 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.347 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.348 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\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 [1 x i8] c"\00" @.str.352 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.353 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.353 = private unnamed_addr constant [29 x i8] c"used .line 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.356 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.357 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.358 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.359 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.360 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.355 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00" +@.str.356 = private unnamed_addr constant [17 x i8] c"unknown escape \5C\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 [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 [26 x i8] c"used .i on a null pointer\00" +@.str.362 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" @.str.363 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.364 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\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 [28 x i8] c"used .src on a null pointer\00" -@.str.367 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.368 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.369 = 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 [26 x i8] c"used .i 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 .src 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 [29 x i8] c"used .line on a null pointer\00" +@.str.371 = private unnamed_addr constant [28 x i8] c"used .src 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 [28 x i8] c"used .col on a null pointer\00" +@.str.373 = private unnamed_addr constant [26 x i8] c"used .i 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.376 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.377 = private unnamed_addr constant [28 x i8] c"used .src 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 [26 x i8] c"used .i on a null pointer\00" -@.str.382 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.375 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.376 = private unnamed_addr constant [29 x i8] c"used .line on a null pointer\00" +@.str.377 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.378 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\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 [14 x i8] c"src/lexer.fch\00" -@.str.384 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.384 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\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 [37 x i8] c"comment is never closed (missing */)\00" -@.str.388 = private unnamed_addr constant [1 x i8] c"\00" -@.str.389 = private unnamed_addr constant [1 x i8] c"\00" +@.str.386 = private unnamed_addr constant [26 x i8] c"used .i 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 [14 x i8] c"src/lexer.fch\00" +@.str.389 = private unnamed_addr constant [26 x i8] c"used .i 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 [29 x i8] c"used .line 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 [28 x i8] c"used .col 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 [27 x i8] c"used .nl 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 [27 x i8] c"used .nl 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 [26 x i8] c"used .i 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 [26 x i8] c"used .i 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 [28 x i8] c"used .src 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 [28 x i8] c"used .src on a null pointer\00" -@.str.406 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.407 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.408 = 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.392 = private unnamed_addr constant [37 x i8] c"comment is never closed (missing */)\00" +@.str.393 = private unnamed_addr constant [1 x i8] c"\00" +@.str.394 = private unnamed_addr constant [1 x i8] c"\00" +@.str.395 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.396 = private unnamed_addr constant [29 x i8] c"used .line on a null pointer\00" +@.str.397 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.398 = private unnamed_addr constant [28 x i8] c"used .col 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 [27 x i8] c"used .nl 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 [27 x i8] c"used .nl 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.405 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.406 = private unnamed_addr constant [26 x i8] c"used .i 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 [28 x i8] c"used .src 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 [28 x i8] c"used .src on a null pointer\00" @.str.411 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" @@ -519,48 +521,48 @@ declare ptr @getenv(ptr) @.str.414 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" @.str.415 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" @.str.416 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\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 [6 x i8] c"ident\00" -@.str.420 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.417 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.418 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.419 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\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 [26 x i8] c"used .i 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 [28 x i8] c"used .src 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 [28 x i8] c"used .src on a null pointer\00" -@.str.427 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.428 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.429 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\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 [6 x i8] c"ident\00" +@.str.425 = private unnamed_addr constant [4 x i8] c"int\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.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.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.435 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.436 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\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" -@.str.438 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.438 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" @.str.439 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.440 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.441 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.442 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.443 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.440 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.441 = private unnamed_addr constant [26 x i8] c"used .i 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 [28 x i8] c"used .src 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 [28 x i8] c"used .src on a null pointer\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 [6 x i8] c"float\00" -@.str.450 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.451 = private unnamed_addr constant [26 x i8] c"used .i 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 [28 x i8] c"used .src 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 [28 x i8] c"used .src on a null pointer\00" -@.str.456 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.457 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.458 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.449 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.450 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.451 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.452 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.453 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.454 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.455 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.456 = private unnamed_addr constant [26 x i8] c"used .i 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.459 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" @.str.460 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" @.str.461 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" @@ -569,101 +571,101 @@ declare ptr @getenv(ptr) @.str.464 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" @.str.465 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" @.str.466 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.467 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.468 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.467 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.468 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" @.str.469 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.470 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.471 = private unnamed_addr constant [1 x i8] c"\00" -@.str.472 = private unnamed_addr constant [7 x i8] c"string\00" -@.str.473 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.474 = private unnamed_addr constant [35 x i8] c"string is never closed (missing \22)\00" -@.str.475 = private unnamed_addr constant [33 x i8] c"char is never closed (missing ')\00" +@.str.470 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.471 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.472 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.473 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.474 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.475 = private unnamed_addr constant [2 x i8] c"_\00" @.str.476 = private unnamed_addr constant [1 x i8] c"\00" -@.str.477 = private unnamed_addr constant [45 x i8] c"a char holds exactly one character, like 'a'\00" -@.str.478 = private unnamed_addr constant [1 x i8] c"\00" -@.str.479 = 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.480 = private unnamed_addr constant [23 x i8] c"unexpected character '\00" -@.str.481 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.482 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.483 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.484 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.485 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.477 = private unnamed_addr constant [7 x i8] c"string\00" +@.str.478 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.479 = private unnamed_addr constant [35 x i8] c"string is never closed (missing \22)\00" +@.str.480 = private unnamed_addr constant [33 x i8] c"char is never closed (missing ')\00" +@.str.481 = private unnamed_addr constant [1 x i8] c"\00" +@.str.482 = private unnamed_addr constant [45 x i8] c"a char holds exactly one character, like 'a'\00" +@.str.483 = private unnamed_addr constant [1 x i8] c"\00" +@.str.484 = 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.485 = private unnamed_addr constant [23 x i8] c"unexpected character '\00" @.str.486 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.487 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.488 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.489 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.490 = private unnamed_addr constant [1 x i8] c"\00" +@.str.487 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.488 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.489 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.490 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" @.str.491 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.492 = private unnamed_addr constant [29 x i8] c"used .line on a null pointer\00" -@.str.493 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.494 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00" -@.str.495 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.496 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.497 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.498 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.499 = private unnamed_addr constant [6 x i8] c"named\00" -@.str.500 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.501 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.502 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.503 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.504 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.505 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.506 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" -@.str.507 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" -@.str.508 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.509 = private unnamed_addr constant [3 x i8] c"[]\00" -@.str.510 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" -@.str.511 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.512 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.513 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.514 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" -@.str.515 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.516 = private unnamed_addr constant [5 x i8] c"map[\00" -@.str.517 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" +@.str.492 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.493 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.494 = private unnamed_addr constant [4 x i8] c"eof\00" +@.str.495 = private unnamed_addr constant [1 x i8] c"\00" +@.str.496 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.497 = private unnamed_addr constant [29 x i8] c"used .line on a null pointer\00" +@.str.498 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.499 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00" +@.str.500 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.501 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.502 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.503 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.504 = private unnamed_addr constant [6 x i8] c"named\00" +@.str.505 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.506 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str.507 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.508 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.509 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.510 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str.511 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" +@.str.512 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" +@.str.513 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.514 = private unnamed_addr constant [3 x i8] c"[]\00" +@.str.515 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" +@.str.516 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str.517 = private unnamed_addr constant [2 x i8] c"[\00" @.str.518 = private unnamed_addr constant [2 x i8] c"]\00" @.str.519 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" -@.str.520 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.521 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.522 = private unnamed_addr constant [5 x i8] c"ptr[\00" -@.str.523 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" -@.str.524 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.525 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.526 = private unnamed_addr constant [6 x i8] c"named\00" -@.str.527 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.528 = private unnamed_addr constant [2 x i8] c".\00" -@.str.529 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.530 = private unnamed_addr constant [8 x i8] c"nothing\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 .path on a null pointer\00" -@.str.533 = private unnamed_addr constant [2 x i8] c":\00" -@.str.534 = private unnamed_addr constant [2 x i8] c":\00" -@.str.535 = private unnamed_addr constant [10 x i8] c": error: \00" -@.str.536 = private unnamed_addr constant [1 x i8] c"\00" -@.str.537 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.538 = private unnamed_addr constant [2 x i8] c"\0A\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.520 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.521 = private unnamed_addr constant [5 x i8] c"map[\00" +@.str.522 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" +@.str.523 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.524 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" +@.str.525 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.526 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.527 = private unnamed_addr constant [5 x i8] c"ptr[\00" +@.str.528 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" +@.str.529 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.530 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.531 = private unnamed_addr constant [6 x i8] c"named\00" +@.str.532 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.533 = private unnamed_addr constant [2 x i8] c".\00" +@.str.534 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.535 = private unnamed_addr constant [8 x i8] c"nothing\00" +@.str.536 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.537 = private unnamed_addr constant [29 x i8] c"used .path on a null pointer\00" +@.str.538 = private unnamed_addr constant [2 x i8] c":\00" +@.str.539 = private unnamed_addr constant [2 x i8] c":\00" +@.str.540 = private unnamed_addr constant [10 x i8] c": error: \00" +@.str.541 = private unnamed_addr constant [1 x i8] c"\00" +@.str.542 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.543 = private unnamed_addr constant [2 x i8] c"\0A\00" @.str.544 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" @.str.545 = private unnamed_addr constant [29 x i8] c"used .toks 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 [15 x i8] c"src/parser.fch\00" @.str.549 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.550 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\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.552 = private unnamed_addr constant [26 x i8] c"used .i 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 [29 x i8] c"used .toks on a null pointer\00" -@.str.555 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.556 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.557 = 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 [26 x i8] c"used .i 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 [29 x i8] c"used .toks 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 [29 x i8] c"used .toks on a null pointer\00" @.str.560 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.561 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.561 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" @.str.562 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" @.str.563 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" @.str.564 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" @@ -671,1980 +673,1980 @@ declare ptr @getenv(ptr) @.str.566 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" @.str.567 = private unnamed_addr constant [15 x i8] c"src/parser.fch\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.569 = private unnamed_addr constant [29 x i8] c"used .toks 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 [26 x i8] c"used .i on a null pointer\00" -@.str.572 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.573 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.574 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.575 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.576 = private unnamed_addr constant [12 x i8] c"end of file\00" -@.str.577 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.578 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.579 = private unnamed_addr constant [9 x i8] c"a number\00" -@.str.580 = private unnamed_addr constant [7 x i8] c"string\00" -@.str.581 = private unnamed_addr constant [9 x i8] c"a string\00" -@.str.582 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.583 = private unnamed_addr constant [7 x i8] c"a char\00" -@.str.584 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.585 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.586 = private unnamed_addr constant [10 x i8] c"expected \00" -@.str.587 = private unnamed_addr constant [9 x i8] c", found \00" -@.str.588 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.589 = private unnamed_addr constant [30 x i8] c"used .depth 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 [29 x i8] c"used .toks on a null pointer\00" -@.str.592 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.593 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.594 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.572 = private unnamed_addr constant [15 x i8] c"src/parser.fch\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 [26 x i8] c"used .i on a null pointer\00" +@.str.577 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.578 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.579 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.580 = private unnamed_addr constant [4 x i8] c"eof\00" +@.str.581 = private unnamed_addr constant [12 x i8] c"end of file\00" +@.str.582 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.583 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.584 = private unnamed_addr constant [9 x i8] c"a number\00" +@.str.585 = private unnamed_addr constant [7 x i8] c"string\00" +@.str.586 = private unnamed_addr constant [9 x i8] c"a string\00" +@.str.587 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.588 = private unnamed_addr constant [7 x i8] c"a char\00" +@.str.589 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.590 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.591 = private unnamed_addr constant [10 x i8] c"expected \00" +@.str.592 = private unnamed_addr constant [9 x i8] c", found \00" +@.str.593 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.594 = private unnamed_addr constant [30 x i8] c"used .depth 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 [29 x i8] c"used .toks on a null pointer\00" @.str.597 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" @.str.598 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" @.str.599 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" @.str.600 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.601 = private unnamed_addr constant [29 x i8] c"used .file on a null pointer\00" -@.str.602 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.603 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.604 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.605 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.606 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.607 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.608 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.609 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.610 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.611 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.612 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.613 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.614 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.615 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.616 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.617 = private unnamed_addr constant [4 x i8] c"f64\00" -@.str.618 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.619 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.620 = private unnamed_addr constant [37 x i8] c"']' (an array type looks like []int)\00" -@.str.621 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.622 = private unnamed_addr constant [12 x i8] c"unexpected \00" -@.str.623 = private unnamed_addr constant [57 x i8] c" (expected a type like int, str, []int or a struct name)\00" -@.str.624 = private unnamed_addr constant [4 x i8] c"map\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 [40 x i8] c"']' (a map type looks like map[str]int)\00" -@.str.628 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.629 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.630 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.631 = private unnamed_addr constant [4 x i8] c"']'\00" -@.str.632 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.633 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.634 = private unnamed_addr constant [4 x i8] c"f64\00" -@.str.635 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.636 = private unnamed_addr constant [6 x i8] c"named\00" -@.str.637 = private unnamed_addr constant [2 x i8] c".\00" -@.str.638 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.639 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.640 = private unnamed_addr constant [2 x i8] c"]\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 [29 x i8] c"']' after the type arguments\00" -@.str.644 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.645 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.646 = private unnamed_addr constant [2 x i8] c"]\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 [15 x i8] c"src/parser.fch\00" -@.str.650 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.651 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.652 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.653 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.654 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.655 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.601 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" +@.str.602 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.603 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.604 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.605 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.606 = private unnamed_addr constant [29 x i8] c"used .file on a null pointer\00" +@.str.607 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.608 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.609 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.610 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.611 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.612 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.613 = private unnamed_addr constant [3 x i8] c"i8\00" +@.str.614 = private unnamed_addr constant [4 x i8] c"i16\00" +@.str.615 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.616 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.617 = private unnamed_addr constant [3 x i8] c"u8\00" +@.str.618 = private unnamed_addr constant [4 x i8] c"u16\00" +@.str.619 = private unnamed_addr constant [4 x i8] c"u32\00" +@.str.620 = private unnamed_addr constant [4 x i8] c"u64\00" +@.str.621 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.622 = private unnamed_addr constant [4 x i8] c"f64\00" +@.str.623 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.624 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.625 = private unnamed_addr constant [37 x i8] c"']' (an array type looks like []int)\00" +@.str.626 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.627 = private unnamed_addr constant [12 x i8] c"unexpected \00" +@.str.628 = private unnamed_addr constant [57 x i8] c" (expected a type like int, str, []int or a struct name)\00" +@.str.629 = private unnamed_addr constant [4 x i8] c"map\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 [40 x i8] c"']' (a map type looks like map[str]int)\00" +@.str.633 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.634 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.635 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.636 = private unnamed_addr constant [4 x i8] c"']'\00" +@.str.637 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.638 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.639 = private unnamed_addr constant [4 x i8] c"f64\00" +@.str.640 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.641 = private unnamed_addr constant [6 x i8] c"named\00" +@.str.642 = private unnamed_addr constant [2 x i8] c".\00" +@.str.643 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.644 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.645 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.646 = private unnamed_addr constant [2 x i8] c",\00" +@.str.647 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.648 = private unnamed_addr constant [29 x i8] c"']' after the type arguments\00" +@.str.649 = private unnamed_addr constant [6 x i8] c"ident\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.654 = private unnamed_addr constant [15 x i8] c"src/parser.fch\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 [29 x i8] c"used .toks on a null pointer\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 [6 x i8] c"ident\00" -@.str.662 = private unnamed_addr constant [15 x i8] c"src/parser.fch\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 [4 x i8] c"eof\00" -@.str.666 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.667 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.668 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.659 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.660 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.661 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.662 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" +@.str.663 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.664 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" +@.str.665 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.666 = private unnamed_addr constant [6 x i8] c"ident\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 [26 x i8] c"used .i on a null pointer\00" +@.str.670 = private unnamed_addr constant [4 x i8] c"eof\00" @.str.671 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.672 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.673 = private unnamed_addr constant [2 x i8] c"[\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 [15 x i8] c"src/parser.fch\00" -@.str.675 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" +@.str.675 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\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 [2 x i8] c"]\00" -@.str.680 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.681 = private unnamed_addr constant [26 x i8] c"used .i 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 [29 x i8] c"used .toks 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 [2 x i8] c"[\00" -@.str.688 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.678 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.679 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.680 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" +@.str.681 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.682 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.683 = private unnamed_addr constant [15 x i8] c"src/parser.fch\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 [26 x i8] c"used .i 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 [29 x i8] c"used .toks on a null pointer\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 [2 x i8] c"(\00" -@.str.695 = private unnamed_addr constant [15 x i8] c"src/parser.fch\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 [4 x i8] c"eof\00" -@.str.699 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.700 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.701 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.702 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.703 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.704 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.705 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.692 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.693 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.694 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.695 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" +@.str.696 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.697 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" +@.str.698 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.699 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.700 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.701 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" +@.str.702 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.703 = private unnamed_addr constant [4 x i8] c"eof\00" +@.str.704 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.705 = private unnamed_addr constant [29 x i8] c"used .toks 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 [29 x i8] c"used .toks on a null pointer\00" -@.str.708 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.709 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.710 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.711 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.712 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.713 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.714 = private unnamed_addr constant [2 x i8] c".\00" -@.str.715 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.716 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.717 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.718 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.719 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.720 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.721 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.722 = private unnamed_addr constant [2 x i8] c"}\00" -@.str.723 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.724 = private unnamed_addr constant [12 x i8] c"unexpected \00" -@.str.725 = private unnamed_addr constant [38 x i8] c" (put each statement on its own line)\00" -@.str.726 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.727 = private unnamed_addr constant [7 x i8] c"import\00" -@.str.728 = private unnamed_addr constant [7 x i8] c"string\00" -@.str.729 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.730 = private unnamed_addr constant [29 x i8] c"used .path on a null pointer\00" -@.str.731 = private unnamed_addr constant [2 x i8] c":\00" -@.str.732 = private unnamed_addr constant [2 x i8] c":\00" -@.str.733 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.734 = private unnamed_addr constant [52 x i8] c"expected a module name or a C header after 'import'\00" -@.str.735 = private unnamed_addr constant [5 x i8] c"link\00" -@.str.736 = private unnamed_addr constant [7 x i8] c"string\00" -@.str.737 = private unnamed_addr constant [43 x i8] c"a library name in quotes, like link \22glfw\22\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".c\00" -@.str.740 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.741 = private unnamed_addr constant [3 x i8] c".o\00" -@.str.742 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.743 = private unnamed_addr constant [3 x i8] c".a\00" -@.str.744 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.745 = private unnamed_addr constant [4 x i8] c"lib\00" -@.str.746 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.747 = private unnamed_addr constant [4 x i8] c".so\00" -@.str.748 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.749 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.750 = private unnamed_addr constant [66 x i8] c"write just the library's name: for libglfw.so that's link \22glfw\22\00" -@.str.751 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.752 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.753 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.754 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.755 = private unnamed_addr constant [7 x i8] c"'enum'\00" -@.str.756 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.757 = private unnamed_addr constant [13 x i8] c"an enum name\00" -@.str.758 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.759 = private unnamed_addr constant [4 x i8] c"'{'\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"an enum is never closed (missing '}')\00" -@.str.763 = private unnamed_addr constant [8 x i8] c"variant\00" -@.str.764 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.765 = private unnamed_addr constant [25 x i8] c"a variant name, like Red\00" -@.str.766 = private unnamed_addr constant [2 x i8] c"=\00" -@.str.767 = private unnamed_addr constant [1 x i8] c"\00" -@.str.768 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.769 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.770 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.771 = private unnamed_addr constant [31 x i8] c"a whole number, like Ok = 200\00" -@.str.772 = private unnamed_addr constant [2 x i8] c",\00" -@.str.773 = private unnamed_addr constant [10 x i8] c"the enum \00" -@.str.774 = private unnamed_addr constant [17 x i8] c" has no variants\00" -@.str.775 = private unnamed_addr constant [6 x i8] c"match\00" -@.str.776 = private unnamed_addr constant [6 x i8] c"match\00" -@.str.777 = private unnamed_addr constant [8 x i8] c"'match'\00" -@.str.778 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.779 = private unnamed_addr constant [4 x i8] c"'{'\00" -@.str.780 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.781 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.782 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.783 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.784 = private unnamed_addr constant [2 x i8] c"}\00" -@.str.785 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.786 = private unnamed_addr constant [38 x i8] c"a match is never closed (missing '}')\00" -@.str.787 = private unnamed_addr constant [4 x i8] c"arm\00" -@.str.788 = private unnamed_addr constant [9 x i8] c"patterns\00" -@.str.789 = private unnamed_addr constant [5 x i8] c"else\00" -@.str.790 = private unnamed_addr constant [2 x i8] c",\00" -@.str.791 = private unnamed_addr constant [3 x i8] c"->\00" -@.str.792 = private unnamed_addr constant [58 x i8] c"'->' after the value to match, like Red -> print(\22red\22)\00" -@.str.793 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.794 = private unnamed_addr constant [2 x i8] c",\00" -@.str.795 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.796 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.797 = private unnamed_addr constant [31 x i8] c"a match needs at least one arm\00" -@.str.798 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.799 = private unnamed_addr constant [4 x i8] c"'['\00" -@.str.800 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.801 = private unnamed_addr constant [30 x i8] c"a type parameter name, like T\00" -@.str.802 = private unnamed_addr constant [2 x i8] c",\00" -@.str.803 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.804 = private unnamed_addr constant [30 x i8] c"']' after the type parameters\00" -@.str.805 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.806 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.807 = private unnamed_addr constant [9 x i8] c"'struct'\00" -@.str.808 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.809 = private unnamed_addr constant [14 x i8] c"a struct name\00" -@.str.810 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.811 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.812 = private unnamed_addr constant [4 x i8] c"'{'\00" -@.str.813 = private unnamed_addr constant [2 x i8] c"}\00" -@.str.814 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.815 = private unnamed_addr constant [39 x i8] c"a struct is never closed (missing '}')\00" -@.str.816 = private unnamed_addr constant [6 x i8] c"field\00" -@.str.817 = private unnamed_addr constant [12 x i8] c"unexpected \00" -@.str.818 = private unnamed_addr constant [29 x i8] c" (a field looks like: int x)\00" -@.str.819 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.820 = private unnamed_addr constant [13 x i8] c"a field name\00" -@.str.821 = private unnamed_addr constant [2 x i8] c"=\00" -@.str.822 = private unnamed_addr constant [3 x i8] c"fn\00" -@.str.823 = private unnamed_addr constant [7 x i8] c"export\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 [6 x i8] c"ident\00" +@.str.711 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.712 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" +@.str.713 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.714 = private unnamed_addr constant [26 x i8] c"used .i 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 [4 x i8] c"ptr\00" +@.str.717 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.718 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.719 = private unnamed_addr constant [2 x i8] c".\00" +@.str.720 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.721 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.722 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.723 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" +@.str.724 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.725 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.726 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.727 = private unnamed_addr constant [2 x i8] c"}\00" +@.str.728 = private unnamed_addr constant [4 x i8] c"eof\00" +@.str.729 = private unnamed_addr constant [12 x i8] c"unexpected \00" +@.str.730 = private unnamed_addr constant [38 x i8] c" (put each statement on its own line)\00" +@.str.731 = private unnamed_addr constant [4 x i8] c"eof\00" +@.str.732 = private unnamed_addr constant [7 x i8] c"import\00" +@.str.733 = private unnamed_addr constant [7 x i8] c"string\00" +@.str.734 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.735 = private unnamed_addr constant [29 x i8] c"used .path on a null pointer\00" +@.str.736 = private unnamed_addr constant [2 x i8] c":\00" +@.str.737 = private unnamed_addr constant [2 x i8] c":\00" +@.str.738 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.739 = private unnamed_addr constant [52 x i8] c"expected a module name or a C header after 'import'\00" +@.str.740 = private unnamed_addr constant [5 x i8] c"link\00" +@.str.741 = private unnamed_addr constant [7 x i8] c"string\00" +@.str.742 = private unnamed_addr constant [43 x i8] c"a library name in quotes, like link \22glfw\22\00" +@.str.743 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.744 = private unnamed_addr constant [3 x i8] c".c\00" +@.str.745 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.746 = private unnamed_addr constant [3 x i8] c".o\00" +@.str.747 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.748 = private unnamed_addr constant [3 x i8] c".a\00" +@.str.749 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.750 = private unnamed_addr constant [4 x i8] c"lib\00" +@.str.751 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.752 = private unnamed_addr constant [4 x i8] c".so\00" +@.str.753 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.754 = private unnamed_addr constant [2 x i8] c"/\00" +@.str.755 = private unnamed_addr constant [66 x i8] c"write just the library's name: for libglfw.so that's link \22glfw\22\00" +@.str.756 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.757 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.758 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.759 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.760 = private unnamed_addr constant [7 x i8] c"'enum'\00" +@.str.761 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.762 = private unnamed_addr constant [13 x i8] c"an enum name\00" +@.str.763 = private unnamed_addr constant [2 x i8] c"{\00" +@.str.764 = private unnamed_addr constant [4 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"eof\00" +@.str.767 = private unnamed_addr constant [38 x i8] c"an enum is never closed (missing '}')\00" +@.str.768 = private unnamed_addr constant [8 x i8] c"variant\00" +@.str.769 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.770 = private unnamed_addr constant [25 x i8] c"a variant name, like Red\00" +@.str.771 = private unnamed_addr constant [2 x i8] c"=\00" +@.str.772 = private unnamed_addr constant [1 x i8] c"\00" +@.str.773 = private unnamed_addr constant [2 x i8] c"-\00" +@.str.774 = private unnamed_addr constant [2 x i8] c"-\00" +@.str.775 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.776 = private unnamed_addr constant [31 x i8] c"a whole number, like Ok = 200\00" +@.str.777 = private unnamed_addr constant [2 x i8] c",\00" +@.str.778 = private unnamed_addr constant [10 x i8] c"the enum \00" +@.str.779 = private unnamed_addr constant [17 x i8] c" has no variants\00" +@.str.780 = private unnamed_addr constant [6 x i8] c"match\00" +@.str.781 = private unnamed_addr constant [6 x i8] c"match\00" +@.str.782 = private unnamed_addr constant [8 x i8] c"'match'\00" +@.str.783 = private unnamed_addr constant [2 x i8] c"{\00" +@.str.784 = private unnamed_addr constant [4 x i8] c"'{'\00" +@.str.785 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.786 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" +@.str.787 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.788 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\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 [38 x i8] c"a match is never closed (missing '}')\00" +@.str.792 = private unnamed_addr constant [4 x i8] c"arm\00" +@.str.793 = private unnamed_addr constant [9 x i8] c"patterns\00" +@.str.794 = private unnamed_addr constant [5 x i8] c"else\00" +@.str.795 = private unnamed_addr constant [2 x i8] c",\00" +@.str.796 = private unnamed_addr constant [3 x i8] c"->\00" +@.str.797 = private unnamed_addr constant [58 x i8] c"'->' after the value to match, like Red -> print(\22red\22)\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 [15 x i8] c"src/parser.fch\00" +@.str.801 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" +@.str.802 = private unnamed_addr constant [31 x i8] c"a match needs at least one arm\00" +@.str.803 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.804 = private unnamed_addr constant [4 x i8] c"'['\00" +@.str.805 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.806 = private unnamed_addr constant [30 x i8] c"a type parameter name, like T\00" +@.str.807 = private unnamed_addr constant [2 x i8] c",\00" +@.str.808 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.809 = private unnamed_addr constant [30 x i8] c"']' after the type parameters\00" +@.str.810 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.811 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.812 = private unnamed_addr constant [9 x i8] c"'struct'\00" +@.str.813 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.814 = private unnamed_addr constant [14 x i8] c"a struct name\00" +@.str.815 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.816 = private unnamed_addr constant [2 x i8] c"{\00" +@.str.817 = private unnamed_addr constant [4 x i8] c"'{'\00" +@.str.818 = private unnamed_addr constant [2 x i8] c"}\00" +@.str.819 = private unnamed_addr constant [4 x i8] c"eof\00" +@.str.820 = private unnamed_addr constant [39 x i8] c"a struct is never closed (missing '}')\00" +@.str.821 = private unnamed_addr constant [6 x i8] c"field\00" +@.str.822 = private unnamed_addr constant [12 x i8] c"unexpected \00" +@.str.823 = private unnamed_addr constant [29 x i8] c" (a field looks like: int x)\00" @.str.824 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.825 = private unnamed_addr constant [69 x i8] c"functions start with 'fn', like: fn add(int a, int b) -> int { ... }\00" -@.str.826 = private unnamed_addr constant [3 x i8] c"fn\00" -@.str.827 = private unnamed_addr constant [27 x i8] c"'fn', 'struct' or 'import'\00" -@.str.828 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.829 = private unnamed_addr constant [16 x i8] c"a function name\00" -@.str.830 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.831 = private unnamed_addr constant [2 x i8] c".\00" -@.str.832 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.833 = private unnamed_addr constant [14 x i8] c"a method name\00" -@.str.834 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.835 = private unnamed_addr constant [4 x i8] c"'('\00" -@.str.836 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.837 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.838 = private unnamed_addr constant [2 x i8] c")\00" -@.str.839 = private unnamed_addr constant [6 x i8] c"param\00" -@.str.840 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.841 = private unnamed_addr constant [17 x i8] c"a parameter name\00" -@.str.842 = private unnamed_addr constant [2 x i8] c",\00" -@.str.843 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.844 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.845 = private unnamed_addr constant [2 x i8] c")\00" -@.str.846 = private unnamed_addr constant [4 x i8] c"')'\00" -@.str.847 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.848 = private unnamed_addr constant [3 x i8] c"->\00" -@.str.849 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.850 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.851 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.852 = private unnamed_addr constant [12 x i8] c"unexpected \00" -@.str.853 = private unnamed_addr constant [62 x i8] c" (after '->' comes a type, or ! for a function that can fail)\00" -@.str.854 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.855 = private unnamed_addr constant [6 x i8] c"block\00" -@.str.856 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.857 = private unnamed_addr constant [4 x i8] c"'{'\00" -@.str.858 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.859 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.860 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.861 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.862 = private unnamed_addr constant [2 x i8] c"}\00" -@.str.863 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.864 = private unnamed_addr constant [36 x i8] c"a '{' is never closed (missing '}')\00" +@.str.825 = private unnamed_addr constant [13 x i8] c"a field name\00" +@.str.826 = private unnamed_addr constant [2 x i8] c"=\00" +@.str.827 = private unnamed_addr constant [3 x i8] c"fn\00" +@.str.828 = private unnamed_addr constant [7 x i8] c"export\00" +@.str.829 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.830 = private unnamed_addr constant [69 x i8] c"functions start with 'fn', like: fn add(int a, int b) -> int { ... }\00" +@.str.831 = private unnamed_addr constant [3 x i8] c"fn\00" +@.str.832 = private unnamed_addr constant [27 x i8] c"'fn', 'struct' or 'import'\00" +@.str.833 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.834 = private unnamed_addr constant [16 x i8] c"a function name\00" +@.str.835 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.836 = private unnamed_addr constant [2 x i8] c".\00" +@.str.837 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.838 = private unnamed_addr constant [14 x i8] c"a method name\00" +@.str.839 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.840 = private unnamed_addr constant [4 x i8] c"'('\00" +@.str.841 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.842 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" +@.str.843 = private unnamed_addr constant [2 x i8] c")\00" +@.str.844 = private unnamed_addr constant [6 x i8] c"param\00" +@.str.845 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.846 = private unnamed_addr constant [17 x i8] c"a parameter name\00" +@.str.847 = private unnamed_addr constant [2 x i8] c",\00" +@.str.848 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.849 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" +@.str.850 = private unnamed_addr constant [2 x i8] c")\00" +@.str.851 = private unnamed_addr constant [4 x i8] c"')'\00" +@.str.852 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.853 = private unnamed_addr constant [3 x i8] c"->\00" +@.str.854 = private unnamed_addr constant [2 x i8] c"!\00" +@.str.855 = private unnamed_addr constant [2 x i8] c"!\00" +@.str.856 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.857 = private unnamed_addr constant [12 x i8] c"unexpected \00" +@.str.858 = private unnamed_addr constant [62 x i8] c" (after '->' comes a type, or ! for a function that can fail)\00" +@.str.859 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.860 = private unnamed_addr constant [6 x i8] c"block\00" +@.str.861 = private unnamed_addr constant [2 x i8] c"{\00" +@.str.862 = private unnamed_addr constant [4 x i8] c"'{'\00" +@.str.863 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.864 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" @.str.865 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" @.str.866 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.867 = private unnamed_addr constant [3 x i8] c"if\00" -@.str.868 = private unnamed_addr constant [6 x i8] c"while\00" -@.str.869 = private unnamed_addr constant [6 x i8] c"while\00" -@.str.870 = private unnamed_addr constant [4 x i8] c"for\00" -@.str.871 = private unnamed_addr constant [4 x i8] c"for\00" -@.str.872 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.873 = private unnamed_addr constant [21 x i8] c"a loop variable name\00" -@.str.874 = private unnamed_addr constant [2 x i8] c",\00" -@.str.875 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.876 = private unnamed_addr constant [28 x i8] c"a second loop variable name\00" -@.str.877 = private unnamed_addr constant [3 x i8] c"in\00" -@.str.878 = private unnamed_addr constant [5 x i8] c"'in'\00" -@.str.879 = private unnamed_addr constant [3 x i8] c"..\00" -@.str.880 = private unnamed_addr constant [56 x i8] c"a range of numbers has one loop variable: for i in 0..n\00" -@.str.881 = private unnamed_addr constant [5 x i8] c"each\00" -@.str.882 = private unnamed_addr constant [6 x i8] c"match\00" -@.str.883 = private unnamed_addr constant [7 x i8] c"return\00" -@.str.884 = private unnamed_addr constant [7 x i8] c"return\00" -@.str.885 = private unnamed_addr constant [2 x i8] c"}\00" -@.str.886 = private unnamed_addr constant [6 x i8] c"break\00" -@.str.887 = private unnamed_addr constant [9 x i8] c"continue\00" -@.str.888 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.889 = private unnamed_addr constant [6 x i8] c"defer\00" -@.str.890 = private unnamed_addr constant [6 x i8] c"defer\00" -@.str.891 = private unnamed_addr constant [6 x i8] c"defer\00" -@.str.892 = private unnamed_addr constant [34 x i8] c"defer inside defer is not allowed\00" -@.str.893 = private unnamed_addr constant [3 x i8] c"fn\00" -@.str.894 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.895 = private unnamed_addr constant [7 x i8] c"import\00" -@.str.896 = private unnamed_addr constant [5 x i8] c"link\00" -@.str.897 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.898 = private unnamed_addr constant [49 x i8] c"' can't be used here in the self-hosted compiler\00" -@.str.899 = private unnamed_addr constant [5 x i8] c"decl\00" -@.str.900 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.901 = private unnamed_addr constant [16 x i8] c"a variable name\00" -@.str.902 = private unnamed_addr constant [2 x i8] c"=\00" -@.str.903 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.904 = private unnamed_addr constant [3 x i8] c":=\00" -@.str.905 = private unnamed_addr constant [5 x i8] c"decl\00" -@.str.906 = private unnamed_addr constant [2 x i8] c"=\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 [3 x i8] c"%=\00" -@.str.912 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.913 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.914 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.915 = private unnamed_addr constant [67 x i8] c"only a variable, a field, an element or p.value can be assigned to\00" -@.str.916 = private unnamed_addr constant [7 x i8] c"assign\00" -@.str.917 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.918 = private unnamed_addr constant [29 x i8] c"used .file on a null pointer\00" -@.str.919 = private unnamed_addr constant [5 x i8] c"call\00" -@.str.920 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.921 = private unnamed_addr constant [4 x i8] c"try\00" -@.str.922 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.923 = private unnamed_addr constant [38 x i8] c"this value is computed but never used\00" -@.str.924 = private unnamed_addr constant [5 x i8] c"expr\00" -@.str.925 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.926 = private unnamed_addr constant [29 x i8] c"used .file on a null pointer\00" -@.str.927 = private unnamed_addr constant [3 x i8] c"if\00" -@.str.928 = private unnamed_addr constant [3 x i8] c"if\00" -@.str.929 = private unnamed_addr constant [5 x i8] c"'if'\00" -@.str.930 = private unnamed_addr constant [5 x i8] c"else\00" -@.str.931 = private unnamed_addr constant [3 x i8] c"if\00" -@.str.932 = private unnamed_addr constant [3 x i8] c"||\00" -@.str.933 = private unnamed_addr constant [3 x i8] c"&&\00" -@.str.934 = private unnamed_addr constant [3 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 [3 x i8] c"<=\00" -@.str.938 = private unnamed_addr constant [2 x i8] c">\00" -@.str.939 = private unnamed_addr constant [3 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 [2 x i8] c"^\00" -@.str.944 = private unnamed_addr constant [2 x i8] c"*\00" -@.str.945 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.946 = private unnamed_addr constant [2 x i8] c"%\00" -@.str.947 = private unnamed_addr constant [3 x i8] c"<<\00" -@.str.948 = private unnamed_addr constant [3 x i8] c">>\00" -@.str.949 = private unnamed_addr constant [2 x i8] c"&\00" -@.str.950 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.951 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.952 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.953 = private unnamed_addr constant [7 x i8] c"binary\00" -@.str.954 = private unnamed_addr constant [4 x i8] c"try\00" -@.str.955 = private unnamed_addr constant [4 x i8] c"try\00" -@.str.956 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.957 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.958 = private unnamed_addr constant [2 x i8] c"~\00" -@.str.959 = private unnamed_addr constant [6 x i8] c"unary\00" -@.str.960 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.961 = private unnamed_addr constant [4 x i8] c"'('\00" -@.str.962 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.963 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.964 = private unnamed_addr constant [2 x i8] c")\00" -@.str.965 = private unnamed_addr constant [2 x i8] c")\00" -@.str.966 = private unnamed_addr constant [1 x i8] c"\00" -@.str.967 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.968 = private unnamed_addr constant [2 x i8] c":\00" -@.str.969 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.970 = private unnamed_addr constant [30 x i8] c"used .names on a null pointer\00" -@.str.971 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.972 = private unnamed_addr constant [29 x i8] c"used .kids on a null pointer\00" -@.str.973 = private unnamed_addr constant [2 x i8] c",\00" +@.str.867 = private unnamed_addr constant [2 x i8] c"}\00" +@.str.868 = private unnamed_addr constant [4 x i8] c"eof\00" +@.str.869 = private unnamed_addr constant [36 x i8] c"a '{' is never closed (missing '}')\00" +@.str.870 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.871 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" +@.str.872 = private unnamed_addr constant [3 x i8] c"if\00" +@.str.873 = private unnamed_addr constant [6 x i8] c"while\00" +@.str.874 = private unnamed_addr constant [6 x i8] c"while\00" +@.str.875 = private unnamed_addr constant [4 x i8] c"for\00" +@.str.876 = private unnamed_addr constant [4 x i8] c"for\00" +@.str.877 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.878 = private unnamed_addr constant [21 x i8] c"a loop variable name\00" +@.str.879 = private unnamed_addr constant [2 x i8] c",\00" +@.str.880 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.881 = private unnamed_addr constant [28 x i8] c"a second loop variable name\00" +@.str.882 = private unnamed_addr constant [3 x i8] c"in\00" +@.str.883 = private unnamed_addr constant [5 x i8] c"'in'\00" +@.str.884 = private unnamed_addr constant [3 x i8] c"..\00" +@.str.885 = private unnamed_addr constant [56 x i8] c"a range of numbers has one loop variable: for i in 0..n\00" +@.str.886 = private unnamed_addr constant [5 x i8] c"each\00" +@.str.887 = private unnamed_addr constant [6 x i8] c"match\00" +@.str.888 = private unnamed_addr constant [7 x i8] c"return\00" +@.str.889 = private unnamed_addr constant [7 x i8] c"return\00" +@.str.890 = private unnamed_addr constant [2 x i8] c"}\00" +@.str.891 = private unnamed_addr constant [6 x i8] c"break\00" +@.str.892 = private unnamed_addr constant [9 x i8] c"continue\00" +@.str.893 = private unnamed_addr constant [2 x i8] c"{\00" +@.str.894 = private unnamed_addr constant [6 x i8] c"defer\00" +@.str.895 = private unnamed_addr constant [6 x i8] c"defer\00" +@.str.896 = private unnamed_addr constant [6 x i8] c"defer\00" +@.str.897 = private unnamed_addr constant [34 x i8] c"defer inside defer is not allowed\00" +@.str.898 = private unnamed_addr constant [3 x i8] c"fn\00" +@.str.899 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.900 = private unnamed_addr constant [7 x i8] c"import\00" +@.str.901 = private unnamed_addr constant [5 x i8] c"link\00" +@.str.902 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.903 = private unnamed_addr constant [49 x i8] c"' can't be used here in the self-hosted compiler\00" +@.str.904 = private unnamed_addr constant [5 x i8] c"decl\00" +@.str.905 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.906 = private unnamed_addr constant [16 x i8] c"a variable name\00" +@.str.907 = private unnamed_addr constant [2 x i8] c"=\00" +@.str.908 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.909 = private unnamed_addr constant [3 x i8] c":=\00" +@.str.910 = private unnamed_addr constant [5 x i8] c"decl\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 [3 x i8] c"-=\00" +@.str.914 = private unnamed_addr constant [3 x i8] c"*=\00" +@.str.915 = private unnamed_addr constant [3 x i8] c"/=\00" +@.str.916 = private unnamed_addr constant [3 x i8] c"%=\00" +@.str.917 = private unnamed_addr constant [4 x i8] c"var\00" +@.str.918 = private unnamed_addr constant [7 x i8] c"member\00" +@.str.919 = private unnamed_addr constant [6 x i8] c"index\00" +@.str.920 = private unnamed_addr constant [67 x i8] c"only a variable, a field, an element or p.value can be assigned to\00" +@.str.921 = private unnamed_addr constant [7 x i8] c"assign\00" +@.str.922 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.923 = private unnamed_addr constant [29 x i8] c"used .file on a null pointer\00" +@.str.924 = private unnamed_addr constant [5 x i8] c"call\00" +@.str.925 = private unnamed_addr constant [7 x i8] c"method\00" +@.str.926 = private unnamed_addr constant [4 x i8] c"try\00" +@.str.927 = private unnamed_addr constant [3 x i8] c"or\00" +@.str.928 = private unnamed_addr constant [38 x i8] c"this value is computed but never used\00" +@.str.929 = private unnamed_addr constant [5 x i8] c"expr\00" +@.str.930 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.931 = private unnamed_addr constant [29 x i8] c"used .file on a null pointer\00" +@.str.932 = private unnamed_addr constant [3 x i8] c"if\00" +@.str.933 = private unnamed_addr constant [3 x i8] c"if\00" +@.str.934 = private unnamed_addr constant [5 x i8] c"'if'\00" +@.str.935 = private unnamed_addr constant [5 x i8] c"else\00" +@.str.936 = private unnamed_addr constant [3 x i8] c"if\00" +@.str.937 = private unnamed_addr constant [3 x i8] c"||\00" +@.str.938 = private unnamed_addr constant [3 x i8] c"&&\00" +@.str.939 = private unnamed_addr constant [3 x i8] c"==\00" +@.str.940 = private unnamed_addr constant [3 x i8] c"!=\00" +@.str.941 = private unnamed_addr constant [2 x i8] c"<\00" +@.str.942 = private unnamed_addr constant [3 x i8] c"<=\00" +@.str.943 = private unnamed_addr constant [2 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 [2 x i8] c"-\00" +@.str.947 = private unnamed_addr constant [2 x i8] c"|\00" +@.str.948 = private unnamed_addr constant [2 x i8] c"^\00" +@.str.949 = private unnamed_addr constant [2 x i8] c"*\00" +@.str.950 = private unnamed_addr constant [2 x i8] c"/\00" +@.str.951 = private unnamed_addr constant [2 x i8] c"%\00" +@.str.952 = private unnamed_addr constant [3 x i8] c"<<\00" +@.str.953 = private unnamed_addr constant [3 x i8] c">>\00" +@.str.954 = private unnamed_addr constant [2 x i8] c"&\00" +@.str.955 = private unnamed_addr constant [3 x i8] c"or\00" +@.str.956 = private unnamed_addr constant [3 x i8] c"or\00" +@.str.957 = private unnamed_addr constant [2 x i8] c"{\00" +@.str.958 = private unnamed_addr constant [7 x i8] c"binary\00" +@.str.959 = private unnamed_addr constant [4 x i8] c"try\00" +@.str.960 = private unnamed_addr constant [4 x i8] c"try\00" +@.str.961 = private unnamed_addr constant [2 x i8] c"-\00" +@.str.962 = private unnamed_addr constant [2 x i8] c"!\00" +@.str.963 = private unnamed_addr constant [2 x i8] c"~\00" +@.str.964 = private unnamed_addr constant [6 x i8] c"unary\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 [15 x i8] c"src/parser.fch\00" +@.str.968 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" +@.str.969 = private unnamed_addr constant [2 x i8] c")\00" +@.str.970 = private unnamed_addr constant [2 x i8] c")\00" +@.str.971 = private unnamed_addr constant [1 x i8] c"\00" +@.str.972 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.973 = private unnamed_addr constant [2 x i8] c":\00" @.str.974 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.975 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.976 = private unnamed_addr constant [2 x i8] c")\00" -@.str.977 = private unnamed_addr constant [4 x i8] c"')'\00" -@.str.978 = private unnamed_addr constant [2 x i8] c".\00" -@.str.979 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.980 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.981 = private unnamed_addr constant [17 x i8] c"a name after '.'\00" -@.str.982 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.983 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.984 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.985 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.986 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.987 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\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 [4 x i8] c"']'\00" -@.str.992 = private unnamed_addr constant [1 x i8] c"\00" -@.str.993 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.994 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.995 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.996 = private unnamed_addr constant [7 x i8] c"string\00" -@.str.997 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.998 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.999 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.1000 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.1001 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1002 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1003 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.1004 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.1005 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.1006 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.1007 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.1008 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1009 = private unnamed_addr constant [4 x i8] c"')'\00" -@.str.1010 = private unnamed_addr constant [6 x i8] c"match\00" -@.str.1011 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.1012 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1013 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.1014 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.1015 = private unnamed_addr constant [2 x i8] c":\00" -@.str.1016 = private unnamed_addr constant [2 x i8] c"]\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 [2 x i8] c":\00" -@.str.1020 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1021 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1022 = private unnamed_addr constant [2 x i8] c":\00" -@.str.1023 = private unnamed_addr constant [42 x i8] c"':' (a map entry looks like \22key\22: value)\00" -@.str.1024 = private unnamed_addr constant [2 x i8] c",\00" -@.str.1025 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.1026 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.1027 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.1028 = private unnamed_addr constant [4 x i8] c"']'\00" -@.str.1029 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.1030 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.1031 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.1032 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.1033 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.1034 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.1035 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.1036 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.1037 = private unnamed_addr constant [6 x i8] c"targs\00" -@.str.1038 = private unnamed_addr constant [2 x i8] c",\00" -@.str.1039 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.1040 = private unnamed_addr constant [29 x i8] c"']' after the type arguments\00" -@.str.1041 = private unnamed_addr constant [5 x i8] c"call\00" -@.str.1042 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.1043 = private unnamed_addr constant [5 x i8] c"call\00" -@.str.1044 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.1045 = private unnamed_addr constant [12 x i8] c"unexpected \00" -@.str.1046 = private unnamed_addr constant [20 x i8] c" (expected a value)\00" -@.str.1047 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1048 = private unnamed_addr constant [2 x i8] c"\5C\00" -@.str.1049 = private unnamed_addr constant [3 x i8] c"\5C\5C\00" -@.str.1050 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1051 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.1052 = private unnamed_addr constant [3 x i8] c"\5Cn\00" -@.str.1053 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1054 = private unnamed_addr constant [2 x i8] c"\09\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 [30 x i8] c"used .index on a null pointer\00" +@.str.975 = private unnamed_addr constant [30 x i8] c"used .names on a null pointer\00" +@.str.976 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.977 = private unnamed_addr constant [29 x i8] c"used .kids on a null pointer\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 [2 x i8] c")\00" +@.str.982 = private unnamed_addr constant [4 x i8] c"')'\00" +@.str.983 = private unnamed_addr constant [2 x i8] c".\00" +@.str.984 = private unnamed_addr constant [7 x i8] c"member\00" +@.str.985 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.986 = private unnamed_addr constant [17 x i8] c"a name after '.'\00" +@.str.987 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.988 = private unnamed_addr constant [7 x i8] c"method\00" +@.str.989 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.990 = private unnamed_addr constant [6 x i8] c"index\00" +@.str.991 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.992 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" +@.str.993 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.994 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" +@.str.995 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.996 = private unnamed_addr constant [4 x i8] c"']'\00" +@.str.997 = private unnamed_addr constant [1 x i8] c"\00" +@.str.998 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.999 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.1000 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.1001 = private unnamed_addr constant [7 x i8] c"string\00" +@.str.1002 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.1003 = private unnamed_addr constant [5 x i8] c"true\00" +@.str.1004 = private unnamed_addr constant [6 x i8] c"false\00" +@.str.1005 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.1006 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.1007 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.1008 = private unnamed_addr constant [2 x i8] c"(\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 [15 x i8] c"src/parser.fch\00" +@.str.1012 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" +@.str.1013 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1014 = private unnamed_addr constant [4 x i8] c"')'\00" +@.str.1015 = private unnamed_addr constant [6 x i8] c"match\00" +@.str.1016 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.1017 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.1018 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.1019 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" +@.str.1020 = private unnamed_addr constant [2 x i8] c":\00" +@.str.1021 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.1022 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.1023 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.1024 = private unnamed_addr constant [2 x i8] c":\00" +@.str.1025 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.1026 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.1027 = private unnamed_addr constant [2 x i8] c":\00" +@.str.1028 = private unnamed_addr constant [42 x i8] c"':' (a map entry looks like \22key\22: value)\00" +@.str.1029 = private unnamed_addr constant [2 x i8] c",\00" +@.str.1030 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.1031 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" +@.str.1032 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.1033 = private unnamed_addr constant [4 x i8] c"']'\00" +@.str.1034 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.1035 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.1036 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.1037 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" +@.str.1038 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.1039 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.1040 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.1041 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.1042 = private unnamed_addr constant [6 x i8] c"targs\00" +@.str.1043 = private unnamed_addr constant [2 x i8] c",\00" +@.str.1044 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.1045 = private unnamed_addr constant [29 x i8] c"']' after the type arguments\00" +@.str.1046 = private unnamed_addr constant [5 x i8] c"call\00" +@.str.1047 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.1048 = private unnamed_addr constant [5 x i8] c"call\00" +@.str.1049 = private unnamed_addr constant [4 x i8] c"var\00" +@.str.1050 = private unnamed_addr constant [12 x i8] c"unexpected \00" +@.str.1051 = private unnamed_addr constant [20 x i8] c" (expected a value)\00" +@.str.1052 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1053 = private unnamed_addr constant [2 x i8] c"\5C\00" +@.str.1054 = private unnamed_addr constant [3 x i8] c"\5C\5C\00" +@.str.1055 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1056 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.1057 = private unnamed_addr constant [3 x i8] c"\5Cn\00" @.str.1058 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1059 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" -@.str.1060 = private unnamed_addr constant [4 x i8] c"@R\09\00" +@.str.1059 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1060 = private unnamed_addr constant [2 x i8] c" \00" @.str.1061 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1062 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" +@.str.1062 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" @.str.1063 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [2 x i8] c"\09\00" -@.str.1068 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1064 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" +@.str.1065 = private unnamed_addr constant [4 x i8] c"@R\09\00" +@.str.1066 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1067 = private unnamed_addr constant [30 x i8] c"used .files 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 [2 x i8] c"\09\00" @.str.1070 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1071 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1072 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1073 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1074 = private unnamed_addr constant [2 x i8] c".\00" -@.str.1075 = private unnamed_addr constant [4 x i8] c"fn \00" -@.str.1076 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.1077 = private unnamed_addr constant [3 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 [6 x i8] c" -> !\00" -@.str.1081 = private unnamed_addr constant [5 x i8] c" -> \00" -@.str.1082 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.1083 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.1084 = private unnamed_addr constant [5 x i8] c" -> \00" -@.str.1085 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1086 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" -@.str.1087 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.1088 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1089 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.1071 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1072 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1073 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1074 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1075 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1076 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1077 = private unnamed_addr constant [2 x i8] c" \00" +@.str.1078 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1079 = private unnamed_addr constant [2 x i8] c".\00" +@.str.1080 = private unnamed_addr constant [4 x i8] c"fn \00" +@.str.1081 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.1082 = private unnamed_addr constant [3 x i8] c", \00" +@.str.1083 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1084 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.1085 = private unnamed_addr constant [6 x i8] c" -> !\00" +@.str.1086 = private unnamed_addr constant [5 x i8] c" -> \00" +@.str.1087 = private unnamed_addr constant [2 x i8] c"!\00" +@.str.1088 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.1089 = private unnamed_addr constant [5 x i8] c" -> \00" @.str.1090 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1091 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1092 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" -@.str.1093 = private unnamed_addr constant [5 x i8] c"\0A```\00" -@.str.1094 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1095 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" +@.str.1091 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" +@.str.1092 = private unnamed_addr constant [7 x i8] c"method\00" +@.str.1093 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1094 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.1095 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.1096 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1097 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1098 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" -@.str.1099 = private unnamed_addr constant [4 x i8] c"@I\09\00" -@.str.1100 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1101 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.1097 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" +@.str.1098 = private unnamed_addr constant [5 x i8] c"\0A```\00" +@.str.1099 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1100 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\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 [30 x i8] c"used .progs on a null pointer\00" -@.str.1104 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1103 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" +@.str.1104 = private unnamed_addr constant [4 x i8] c"@I\09\00" @.str.1105 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1106 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1107 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1108 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1106 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.1107 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1108 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" @.str.1109 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1110 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" -@.str.1111 = private unnamed_addr constant [4 x i8] c"@F\09\00" -@.str.1112 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1113 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1114 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1115 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1116 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.1117 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1110 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1111 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1112 = private unnamed_addr constant [2 x i8] c" \00" +@.str.1113 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1114 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1115 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" +@.str.1116 = private unnamed_addr constant [4 x i8] c"@F\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"\09\00" -@.str.1120 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1121 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1122 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1123 = private unnamed_addr constant [2 x i8] c"|\00" -@.str.1124 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1125 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" -@.str.1126 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1127 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.1128 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 .files 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 [2 x i8] c"\09\00" +@.str.1124 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1125 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1126 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1127 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1128 = private unnamed_addr constant [2 x i8] c"|\00" @.str.1129 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1130 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1131 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" -@.str.1132 = private unnamed_addr constant [4 x i8] c"@F\09\00" -@.str.1133 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1134 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1135 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1136 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1137 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.1138 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1130 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" +@.str.1131 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1132 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.1133 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1134 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1135 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1136 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" +@.str.1137 = private unnamed_addr constant [4 x i8] c"@F\09\00" +@.str.1138 = private unnamed_addr constant [2 x i8] c"\09\00" @.str.1139 = private unnamed_addr constant [2 x i8] c"\09\00" @.str.1140 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1141 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1142 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1143 = private unnamed_addr constant [4 x i8] c"fn \00" -@.str.1144 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.1145 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1146 = private unnamed_addr constant [7 x i8] c"](...)\00" +@.str.1141 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1142 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" +@.str.1143 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1144 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1145 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1146 = private unnamed_addr constant [2 x i8] c"\09\00" @.str.1147 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1148 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1149 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\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 .progs on a null pointer\00" -@.str.1152 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1148 = private unnamed_addr constant [4 x i8] c"fn \00" +@.str.1149 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.1150 = private unnamed_addr constant [3 x i8] c", \00" +@.str.1151 = private unnamed_addr constant [7 x i8] c"](...)\00" +@.str.1152 = private unnamed_addr constant [2 x i8] c"\09\00" @.str.1153 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1154 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1155 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" -@.str.1156 = private unnamed_addr constant [4 x i8] c"@S\09\00" -@.str.1157 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1158 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1154 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.1155 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1156 = private unnamed_addr constant [30 x i8] c"used .progs 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 [12 x i8] c"src/gen.fch\00" @.str.1159 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1160 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.1161 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1160 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" +@.str.1161 = private unnamed_addr constant [4 x i8] c"@S\09\00" @.str.1162 = private unnamed_addr constant [2 x i8] c"\09\00" @.str.1163 = private unnamed_addr constant [2 x i8] c"\09\00" @.str.1164 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1165 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" -@.str.1166 = private unnamed_addr constant [5 x i8] c"@SF\09\00" +@.str.1165 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" +@.str.1166 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.1167 = private unnamed_addr constant [2 x i8] c"\09\00" @.str.1168 = private unnamed_addr constant [2 x i8] c"\09\00" @.str.1169 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1170 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1171 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1172 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1173 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.1170 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" +@.str.1171 = private unnamed_addr constant [5 x i8] c"@SF\09\00" +@.str.1172 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1173 = private unnamed_addr constant [2 x i8] c"\09\00" @.str.1174 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1175 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.1175 = private unnamed_addr constant [2 x i8] c"\09\00" @.str.1176 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1177 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1178 = private unnamed_addr constant [2 x i8] c",\00" +@.str.1177 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1178 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" @.str.1179 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1180 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" -@.str.1181 = private unnamed_addr constant [4 x i8] c"@E\09\00" -@.str.1182 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1183 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.1180 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.1181 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1182 = private unnamed_addr constant [1 x i8] c"\00" +@.str.1183 = private unnamed_addr constant [2 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"\09\00" -@.str.1186 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1185 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" +@.str.1186 = private unnamed_addr constant [4 x i8] c"@E\09\00" @.str.1187 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1188 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" +@.str.1188 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" @.str.1189 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.1190 = private unnamed_addr constant [2 x i8] c"\09\00" @.str.1191 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1192 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1193 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1194 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" -@.str.1195 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1196 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" -@.str.1197 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1198 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" -@.str.1199 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.1200 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1201 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.1202 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.1203 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1204 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.1205 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1206 = private unnamed_addr constant [2 x i8] c":\00" -@.str.1207 = private unnamed_addr constant [2 x i8] c":\00" -@.str.1208 = private unnamed_addr constant [10 x i8] c": error: \00" -@.str.1209 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1210 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" -@.str.1211 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1212 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.1213 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.1192 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1193 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" +@.str.1194 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1195 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1196 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1197 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1198 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1199 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" +@.str.1200 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1201 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" +@.str.1202 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1203 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" +@.str.1204 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.1205 = private unnamed_addr constant [1 x i8] c"\00" +@.str.1206 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.1207 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.1208 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1209 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" +@.str.1210 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1211 = private unnamed_addr constant [2 x i8] c":\00" +@.str.1212 = private unnamed_addr constant [2 x i8] c":\00" +@.str.1213 = private unnamed_addr constant [10 x i8] c": error: \00" @.str.1214 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1215 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.1216 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1217 = private unnamed_addr constant [6 x i8] c"call \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 [9 x i8] c", !dbg !\00" -@.str.1222 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1223 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" -@.str.1224 = private unnamed_addr constant [3 x i8] c" \00" -@.str.1225 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1226 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" -@.str.1227 = private unnamed_addr constant [3 x i8] c"%t\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 .tmp on a null pointer\00" +@.str.1215 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" +@.str.1216 = private unnamed_addr constant [1 x i8] c"\00" +@.str.1217 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.1218 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.1219 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1220 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" +@.str.1221 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1222 = private unnamed_addr constant [6 x i8] c"call \00" +@.str.1223 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1224 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" +@.str.1225 = private unnamed_addr constant [3 x i8] c" \00" +@.str.1226 = private unnamed_addr constant [9 x i8] c", !dbg !\00" +@.str.1227 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1228 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" +@.str.1229 = private unnamed_addr constant [3 x i8] c" \00" @.str.1230 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1231 = private unnamed_addr constant [28 x i8] c"used .lbl on a null pointer\00" -@.str.1232 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1233 = private unnamed_addr constant [28 x i8] c"used .lbl on a null pointer\00" -@.str.1234 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1235 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" -@.str.1236 = private unnamed_addr constant [2 x i8] c":\00" +@.str.1231 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" +@.str.1232 = private unnamed_addr constant [3 x i8] c"%t\00" +@.str.1233 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1234 = private unnamed_addr constant [28 x i8] c"used .tmp 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 [28 x i8] c"used .lbl on a null pointer\00" @.str.1237 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1238 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.1238 = private unnamed_addr constant [28 x i8] c"used .lbl on a null pointer\00" @.str.1239 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1240 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1241 = private unnamed_addr constant [11 x i8] c"br label %\00" +@.str.1240 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" +@.str.1241 = private unnamed_addr constant [2 x i8] c":\00" @.str.1242 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.1243 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1244 = private unnamed_addr constant [7 x i8] c"br i1 \00" -@.str.1245 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str.1246 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str.1244 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1245 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.1246 = private unnamed_addr constant [11 x i8] c"br label %\00" @.str.1247 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.1248 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1249 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1250 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" -@.str.1251 = private unnamed_addr constant [3 x i8] c"%a\00" +@.str.1249 = private unnamed_addr constant [7 x i8] c"br i1 \00" +@.str.1250 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str.1251 = private unnamed_addr constant [10 x i8] c", label %\00" @.str.1252 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1253 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" +@.str.1253 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" @.str.1254 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1255 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" -@.str.1256 = private unnamed_addr constant [3 x i8] c" \00" -@.str.1257 = private unnamed_addr constant [11 x i8] c" = alloca \00" -@.str.1258 = private unnamed_addr constant [11 x i8] c", align 16\00" -@.str.1259 = private unnamed_addr constant [9 x i8] c" = load \00" -@.str.1260 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1261 = private unnamed_addr constant [7 x i8] c"store \00" -@.str.1262 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1263 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1264 = private unnamed_addr constant [4 x i8] c" = \00" -@.str.1265 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.1266 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.1267 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.1268 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.1269 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.1270 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.1271 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.1272 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.1273 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.1274 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.1275 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.1276 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.1277 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.1278 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.1279 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.1280 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.1281 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.1282 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.1283 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.1284 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1285 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1286 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.1287 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1288 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.1255 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" +@.str.1256 = private unnamed_addr constant [3 x i8] c"%a\00" +@.str.1257 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1258 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" +@.str.1259 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1260 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" +@.str.1261 = private unnamed_addr constant [3 x i8] c" \00" +@.str.1262 = private unnamed_addr constant [11 x i8] c" = alloca \00" +@.str.1263 = private unnamed_addr constant [11 x i8] c", align 16\00" +@.str.1264 = private unnamed_addr constant [9 x i8] c" = load \00" +@.str.1265 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1266 = private unnamed_addr constant [7 x i8] c"store \00" +@.str.1267 = private unnamed_addr constant [2 x i8] c" \00" +@.str.1268 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1269 = private unnamed_addr constant [4 x i8] c" = \00" +@.str.1270 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.1271 = private unnamed_addr constant [3 x i8] c"i8\00" +@.str.1272 = private unnamed_addr constant [4 x i8] c"i16\00" +@.str.1273 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.1274 = private unnamed_addr constant [3 x i8] c"u8\00" +@.str.1275 = private unnamed_addr constant [4 x i8] c"u16\00" +@.str.1276 = private unnamed_addr constant [4 x i8] c"u32\00" +@.str.1277 = private unnamed_addr constant [4 x i8] c"u64\00" +@.str.1278 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.1279 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.1280 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.1281 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.1282 = private unnamed_addr constant [3 x i8] c"i8\00" +@.str.1283 = private unnamed_addr constant [3 x i8] c"u8\00" +@.str.1284 = private unnamed_addr constant [4 x i8] c"i16\00" +@.str.1285 = private unnamed_addr constant [4 x i8] c"u16\00" +@.str.1286 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.1287 = private unnamed_addr constant [4 x i8] c"u32\00" +@.str.1288 = private unnamed_addr constant [4 x i8] c"f32\00" @.str.1289 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.1290 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.1291 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" @.str.1292 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 .enums on a null pointer\00" +@.str.1293 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.1294 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.1295 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1296 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" +@.str.1296 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" @.str.1297 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.1298 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.1299 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" @.str.1300 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1301 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1302 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.1301 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" +@.str.1302 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.1303 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1304 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.1304 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" @.str.1305 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.1306 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.1307 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" @.str.1308 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1309 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.1309 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" @.str.1310 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1311 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1312 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1313 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1314 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1315 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.1316 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.1317 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1318 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.1319 = 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.1320 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1321 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.1322 = private unnamed_addr constant [42 x i8] c"a map value can't have the type 'nothing'\00" -@.str.1323 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.1324 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str.1311 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1312 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.1313 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1314 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.1315 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1316 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.1317 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1318 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.1319 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1320 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.1321 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.1322 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.1323 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.1324 = 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.1325 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1326 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1327 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1328 = private unnamed_addr constant [6 x i8] c"named\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 [30 x i8] c"used .targs on a null pointer\00" -@.str.1333 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1334 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.1335 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1326 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.1327 = private unnamed_addr constant [42 x i8] c"a map value can't have the type 'nothing'\00" +@.str.1328 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str.1329 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str.1330 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1331 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.1332 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1333 = private unnamed_addr constant [6 x i8] c"named\00" +@.str.1334 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1335 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" @.str.1336 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1337 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.1338 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.1339 = private unnamed_addr constant [37 x i8] c"' is not imported here (add: import \00" -@.str.1340 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1341 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.1342 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.1343 = private unnamed_addr constant [29 x i8] c"there is no C struct named '\00" -@.str.1344 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.1345 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.1337 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" +@.str.1338 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1339 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" +@.str.1340 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1341 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1342 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.1343 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.1344 = private unnamed_addr constant [37 x i8] c"' is not imported here (add: import \00" +@.str.1345 = private unnamed_addr constant [2 x i8] c")\00" @.str.1346 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.1347 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1348 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.1347 = private unnamed_addr constant [2 x i8] c"C\00" +@.str.1348 = private unnamed_addr constant [29 x i8] c"there is no C struct named '\00" @.str.1349 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.1350 = private unnamed_addr constant [37 x i8] c"' is not imported here (add: import \00" -@.str.1351 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1352 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.1353 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.1354 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.1355 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.1356 = private unnamed_addr constant [25 x i8] c"there is no type named '\00" -@.str.1357 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.1358 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.1359 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1360 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.1361 = private unnamed_addr constant [2 x i8] c".\00" -@.str.1362 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1363 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.1364 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1365 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1366 = private unnamed_addr constant [2 x i8] c",\00" -@.str.1367 = private unnamed_addr constant [2 x i8] c".\00" -@.str.1368 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1369 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1370 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1371 = private unnamed_addr constant [5 x i8] c"main\00" -@.str.1372 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.1373 = private unnamed_addr constant [3 x i8] c"i1\00" -@.str.1374 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.1375 = private unnamed_addr constant [2 x i8] c"i\00" -@.str.1376 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.1377 = private unnamed_addr constant [7 x i8] c"double\00" -@.str.1378 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.1379 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.1380 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1381 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1382 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.1383 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1384 = private unnamed_addr constant [38 x i8] c"{ ptr, i64, i64, i64, ptr, i64, i64 }\00" -@.str.1385 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.1386 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.1387 = private unnamed_addr constant [4 x i8] c" x \00" -@.str.1388 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1389 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.1390 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.1391 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.1392 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1393 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1394 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1395 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.1396 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.1397 = private unnamed_addr constant [4 x i8] c"%S.\00" -@.str.1398 = private unnamed_addr constant [2 x i8] c".\00" -@.str.1399 = private unnamed_addr constant [3 x i8] c"i8\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 [12 x i8] c"src/gen.fch\00" +@.str.1353 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.1354 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.1355 = private unnamed_addr constant [37 x i8] c"' is not imported here (add: import \00" +@.str.1356 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1357 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.1358 = private unnamed_addr constant [2 x i8] c"C\00" +@.str.1359 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.1360 = private unnamed_addr constant [2 x i8] c"C\00" +@.str.1361 = private unnamed_addr constant [25 x i8] c"there is no type named '\00" +@.str.1362 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.1363 = private unnamed_addr constant [7 x i8] c"struct\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 [2 x i8] c".\00" +@.str.1367 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1368 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.1369 = private unnamed_addr constant [1 x i8] c"\00" +@.str.1370 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1371 = private unnamed_addr constant [2 x i8] c",\00" +@.str.1372 = private unnamed_addr constant [2 x i8] c".\00" +@.str.1373 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1374 = private unnamed_addr constant [2 x i8] c" \00" +@.str.1375 = private unnamed_addr constant [1 x i8] c"\00" +@.str.1376 = private unnamed_addr constant [5 x i8] c"main\00" +@.str.1377 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.1378 = private unnamed_addr constant [3 x i8] c"i1\00" +@.str.1379 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.1380 = private unnamed_addr constant [2 x i8] c"i\00" +@.str.1381 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.1382 = private unnamed_addr constant [7 x i8] c"double\00" +@.str.1383 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.1384 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.1385 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.1386 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.1387 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.1388 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.1389 = private unnamed_addr constant [38 x i8] c"{ ptr, i64, i64, i64, ptr, i64, i64 }\00" +@.str.1390 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str.1391 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.1392 = private unnamed_addr constant [4 x i8] c" x \00" +@.str.1393 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1394 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.1395 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.1396 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.1397 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.1398 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.1399 = private unnamed_addr constant [4 x i8] c"ptr\00" @.str.1400 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.1401 = private unnamed_addr constant [7 x i8] c"{ i1, \00" -@.str.1402 = private unnamed_addr constant [22 x i8] c", { ptr, i64, i64 } }\00" -@.str.1403 = private unnamed_addr constant [2 x i8] c":\00" -@.str.1404 = private unnamed_addr constant [2 x i8] c":\00" -@.str.1405 = private unnamed_addr constant [2 x i8] c":\00" -@.str.1406 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.1407 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.1408 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.1409 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.1410 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.1411 = private unnamed_addr constant [4 x i8] c"0.0\00" -@.str.1412 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1413 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1414 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1415 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.1416 = private unnamed_addr constant [30 x i8] c"ptrtoint (ptr getelementptr (\00" -@.str.1417 = private unnamed_addr constant [27 x i8] c", ptr null, i32 1) to i64)\00" -@.str.1418 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1419 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1420 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1421 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.1422 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1423 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.1424 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1425 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1426 = private unnamed_addr constant [5 x i8] c"arr_\00" +@.str.1401 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.1402 = private unnamed_addr constant [4 x i8] c"%S.\00" +@.str.1403 = private unnamed_addr constant [2 x i8] c".\00" +@.str.1404 = private unnamed_addr constant [3 x i8] c"i8\00" +@.str.1405 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.1406 = private unnamed_addr constant [7 x i8] c"{ i1, \00" +@.str.1407 = private unnamed_addr constant [22 x i8] c", { ptr, i64, i64 } }\00" +@.str.1408 = private unnamed_addr constant [2 x i8] c":\00" +@.str.1409 = private unnamed_addr constant [2 x i8] c":\00" +@.str.1410 = private unnamed_addr constant [2 x i8] c":\00" +@.str.1411 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.1412 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.1413 = private unnamed_addr constant [2 x i8] c"0\00" +@.str.1414 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.1415 = private unnamed_addr constant [6 x i8] c"false\00" +@.str.1416 = private unnamed_addr constant [4 x i8] c"0.0\00" +@.str.1417 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.1418 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.1419 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.1420 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" +@.str.1421 = private unnamed_addr constant [30 x i8] c"ptrtoint (ptr getelementptr (\00" +@.str.1422 = private unnamed_addr constant [27 x i8] c", ptr null, i32 1) to i64)\00" +@.str.1423 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.1424 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.1425 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.1426 = private unnamed_addr constant [7 x i8] c"struct\00" @.str.1427 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1428 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1429 = private unnamed_addr constant [5 x i8] c"map_\00" -@.str.1430 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1431 = private unnamed_addr constant [2 x i8] c"_\00" +@.str.1428 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.1429 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1430 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.1431 = private unnamed_addr constant [5 x i8] c"arr_\00" @.str.1432 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1433 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.1434 = private unnamed_addr constant [3 x i8] c"E_\00" -@.str.1435 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.1436 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.1437 = private unnamed_addr constant [3 x i8] c"S_\00" -@.str.1438 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.1439 = private unnamed_addr constant [17 x i8] c"0123456789ABCDEF\00" -@.str.1440 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1441 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1442 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1443 = private unnamed_addr constant [29 x i8] c"used .nstr on a null pointer\00" -@.str.1444 = private unnamed_addr constant [7 x i8] c"@.str.\00" +@.str.1433 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.1434 = private unnamed_addr constant [5 x i8] c"map_\00" +@.str.1435 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1436 = private unnamed_addr constant [2 x i8] c"_\00" +@.str.1437 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1438 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.1439 = private unnamed_addr constant [3 x i8] c"E_\00" +@.str.1440 = private unnamed_addr constant [2 x i8] c"_\00" +@.str.1441 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.1442 = private unnamed_addr constant [3 x i8] c"S_\00" +@.str.1443 = private unnamed_addr constant [2 x i8] c"_\00" +@.str.1444 = private unnamed_addr constant [17 x i8] c"0123456789ABCDEF\00" @.str.1445 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1446 = private unnamed_addr constant [29 x i8] c"used .nstr on a null pointer\00" -@.str.1447 = private unnamed_addr constant [2 x i8] c"\5C\00" -@.str.1448 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1449 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00" -@.str.1450 = private unnamed_addr constant [35 x i8] c" = private unnamed_addr constant [\00" -@.str.1451 = private unnamed_addr constant [10 x i8] c" x i8] c\22\00" -@.str.1452 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1453 = private unnamed_addr constant [5 x i8] c"\5C00\22\00" -@.str.1454 = private unnamed_addr constant [7 x i8] c"{ ptr \00" -@.str.1455 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1456 = private unnamed_addr constant [10 x i8] c", i64 0 }\00" -@.str.1457 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1458 = private unnamed_addr constant [6 x i8] c"panic\00" -@.str.1459 = private unnamed_addr constant [3 x i8] c"ok\00" -@.str.1460 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1461 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.1462 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1463 = private unnamed_addr constant [28 x i8] c"call void @finch_panic(ptr \00" -@.str.1464 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1465 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1466 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1467 = private unnamed_addr constant [12 x i8] c"unreachable\00" -@.str.1468 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1469 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1470 = private unnamed_addr constant [6 x i8] c"range\00" -@.str.1471 = private unnamed_addr constant [8 x i8] c"inrange\00" -@.str.1472 = private unnamed_addr constant [14 x i8] c"icmp uge i64 \00" -@.str.1473 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1474 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1475 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.1476 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1477 = private unnamed_addr constant [34 x i8] c"call void @finch_panic_index(ptr \00" -@.str.1478 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1479 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1480 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1481 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1482 = private unnamed_addr constant [12 x i8] c"unreachable\00" -@.str.1483 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1484 = private unnamed_addr constant [29 x i8] c"used .term 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 [29 x i8] c"used .body 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 [32 x i8] c"used .allocas 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 [28 x i8] c"used .tmp 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 [29 x i8] c"used .term 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 [33 x i8] c"used .dbgScope 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 [33 x i8] c"used .dbgScope 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 [29 x i8] c"used .body 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 [32 x i8] c"used .allocas 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 .tmp on a null pointer\00" -@.str.1503 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1504 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1505 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1506 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.1507 = private unnamed_addr constant [11 x i8] c" {\0Aentry:\0A\00" +@.str.1446 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1447 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1448 = private unnamed_addr constant [29 x i8] c"used .nstr on a null pointer\00" +@.str.1449 = private unnamed_addr constant [7 x i8] c"@.str.\00" +@.str.1450 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1451 = private unnamed_addr constant [29 x i8] c"used .nstr on a null pointer\00" +@.str.1452 = private unnamed_addr constant [2 x i8] c"\5C\00" +@.str.1453 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1454 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00" +@.str.1455 = private unnamed_addr constant [35 x i8] c" = private unnamed_addr constant [\00" +@.str.1456 = private unnamed_addr constant [10 x i8] c" x i8] c\22\00" +@.str.1457 = private unnamed_addr constant [1 x i8] c"\00" +@.str.1458 = private unnamed_addr constant [5 x i8] c"\5C00\22\00" +@.str.1459 = private unnamed_addr constant [7 x i8] c"{ ptr \00" +@.str.1460 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.1461 = private unnamed_addr constant [10 x i8] c", i64 0 }\00" +@.str.1462 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.1463 = private unnamed_addr constant [6 x i8] c"panic\00" +@.str.1464 = private unnamed_addr constant [3 x i8] c"ok\00" +@.str.1465 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1466 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" +@.str.1467 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1468 = private unnamed_addr constant [28 x i8] c"call void @finch_panic(ptr \00" +@.str.1469 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.1470 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1471 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1472 = private unnamed_addr constant [12 x i8] c"unreachable\00" +@.str.1473 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1474 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.1475 = private unnamed_addr constant [6 x i8] c"range\00" +@.str.1476 = private unnamed_addr constant [8 x i8] c"inrange\00" +@.str.1477 = private unnamed_addr constant [14 x i8] c"icmp uge i64 \00" +@.str.1478 = private unnamed_addr constant [3 x i8] c", \00" +@.str.1479 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1480 = private unnamed_addr constant [30 x i8] c"used .files 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 [34 x i8] c"call void @finch_panic_index(ptr \00" +@.str.1483 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.1484 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.1485 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.1486 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1487 = private unnamed_addr constant [12 x i8] c"unreachable\00" +@.str.1488 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1489 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.1490 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1491 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" +@.str.1492 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1493 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" +@.str.1494 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1495 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" +@.str.1496 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1497 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.1498 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1499 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" +@.str.1500 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1501 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" +@.str.1502 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1503 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\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 [12 x i8] c"src/gen.fch\00" +@.str.1507 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" @.str.1508 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1509 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" -@.str.1510 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.1511 = private unnamed_addr constant [2 x i8] c"\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 [2 x i8] c"\0A\00" -@.str.1515 = private unnamed_addr constant [4 x i8] c"\0A}\0A\00" -@.str.1516 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1517 = private unnamed_addr constant [29 x i8] c"used .body 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 [32 x i8] c"used .allocas 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 [28 x i8] c"used .tmp on a null pointer\00" -@.str.1522 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1523 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1524 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1525 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.1526 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1527 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1528 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.1529 = private unnamed_addr constant [7 x i8] c"n.cond\00" -@.str.1530 = private unnamed_addr constant [7 x i8] c"n.body\00" -@.str.1531 = private unnamed_addr constant [6 x i8] c"n.end\00" +@.str.1509 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.1510 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1511 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.1512 = private unnamed_addr constant [11 x i8] c" {\0Aentry:\0A\00" +@.str.1513 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1514 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" +@.str.1515 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.1516 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.1517 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1518 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" +@.str.1519 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.1520 = private unnamed_addr constant [4 x i8] c"\0A}\0A\00" +@.str.1521 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1522 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" +@.str.1523 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1524 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" +@.str.1525 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1526 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" +@.str.1527 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1528 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.1529 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1530 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" +@.str.1531 = private unnamed_addr constant [4 x i8] c"i64\00" @.str.1532 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1533 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.1534 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1535 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1536 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1533 = private unnamed_addr constant [2 x i8] c"0\00" +@.str.1534 = private unnamed_addr constant [7 x i8] c"n.cond\00" +@.str.1535 = private unnamed_addr constant [7 x i8] c"n.body\00" +@.str.1536 = private unnamed_addr constant [6 x i8] c"n.end\00" @.str.1537 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1538 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.1539 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.1540 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1538 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" +@.str.1539 = private unnamed_addr constant [3 x i8] c", \00" +@.str.1540 = private unnamed_addr constant [4 x i8] c"i64\00" @.str.1541 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1542 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1543 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1544 = private unnamed_addr constant [31 x i8] c"call void @finch_str_copy(ptr \00" -@.str.1545 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1546 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1547 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1548 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1549 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.1550 = private unnamed_addr constant [11 x i8] c"call void \00" -@.str.1551 = private unnamed_addr constant [6 x i8] c"(ptr \00" -@.str.1552 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1553 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1554 = private unnamed_addr constant [13 x i8] c"@finch.copy.\00" -@.str.1555 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1556 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" -@.str.1557 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1558 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" -@.str.1559 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.1542 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.1543 = private unnamed_addr constant [9 x i8] c"add i64 \00" +@.str.1544 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str.1545 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1546 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1547 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1548 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.1549 = private unnamed_addr constant [31 x i8] c"call void @finch_str_copy(ptr \00" +@.str.1550 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1551 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1552 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.1553 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.1554 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.1555 = private unnamed_addr constant [11 x i8] c"call void \00" +@.str.1556 = private unnamed_addr constant [6 x i8] c"(ptr \00" +@.str.1557 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1558 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1559 = private unnamed_addr constant [13 x i8] c"@finch.copy.\00" @.str.1560 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1561 = private unnamed_addr constant [56 x i8] c"call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 \00" -@.str.1562 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1563 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1564 = private unnamed_addr constant [5 x i8] c"%dst\00" -@.str.1565 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1566 = private unnamed_addr constant [5 x i8] c"%src\00" -@.str.1567 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1568 = private unnamed_addr constant [65 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1\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 [24 x i8] c"getelementptr inbounds \00" -@.str.1574 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1575 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1576 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1577 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1578 = private unnamed_addr constant [56 x i8] c"call void @finch_map_clone_raw(ptr %dst, ptr %src, i64 \00" -@.str.1579 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1580 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1561 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" +@.str.1562 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1563 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" +@.str.1564 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.1565 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1566 = private unnamed_addr constant [56 x i8] c"call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 \00" +@.str.1567 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1568 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.1569 = private unnamed_addr constant [5 x i8] c"%dst\00" +@.str.1570 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.1571 = private unnamed_addr constant [5 x i8] c"%src\00" +@.str.1572 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.1573 = private unnamed_addr constant [65 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1\00" +@.str.1574 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.1575 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1576 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.1577 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1578 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.1579 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1580 = private unnamed_addr constant [7 x i8] c", i64 \00" @.str.1581 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1582 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1583 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1584 = private unnamed_addr constant [25 x i8] c", ptr %src, i32 0, i32 2\00" -@.str.1585 = private unnamed_addr constant [5 x i8] c"%src\00" +@.str.1582 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.1583 = private unnamed_addr constant [56 x i8] c"call void @finch_map_clone_raw(ptr %dst, ptr %src, i64 \00" +@.str.1584 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1585 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.1586 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1587 = private unnamed_addr constant [5 x i8] c"%dst\00" -@.str.1588 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1589 = private unnamed_addr constant [11 x i8] c"entry.live\00" -@.str.1590 = private unnamed_addr constant [11 x i8] c"entry.next\00" -@.str.1591 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00" -@.str.1592 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1593 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1594 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1595 = private unnamed_addr constant [15 x i8] c", i32 0, i32 0\00" -@.str.1596 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.1597 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1598 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1599 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1600 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.1601 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1602 = private unnamed_addr constant [5 x i8] c"%src\00" -@.str.1603 = private unnamed_addr constant [5 x i8] c"%dst\00" +@.str.1587 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.1588 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.1589 = private unnamed_addr constant [25 x i8] c", ptr %src, i32 0, i32 2\00" +@.str.1590 = private unnamed_addr constant [5 x i8] c"%src\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"%dst\00" +@.str.1593 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1594 = private unnamed_addr constant [11 x i8] c"entry.live\00" +@.str.1595 = private unnamed_addr constant [11 x i8] c"entry.next\00" +@.str.1596 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00" +@.str.1597 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.1598 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.1599 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1600 = private unnamed_addr constant [15 x i8] c", i32 0, i32 0\00" +@.str.1601 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.1602 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1603 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.1604 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1605 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1606 = private unnamed_addr constant [24 x i8] c", ptr %dst, i32 0, i32 \00" -@.str.1607 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1608 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1609 = private unnamed_addr constant [24 x i8] c", ptr %src, i32 0, i32 \00" -@.str.1610 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1611 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1612 = private unnamed_addr constant [9 x i8] c"ret void\00" -@.str.1613 = private unnamed_addr constant [22 x i8] c"define internal void \00" -@.str.1614 = private unnamed_addr constant [21 x i8] c"(ptr %dst, ptr %src)\00" -@.str.1615 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1616 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1617 = private unnamed_addr constant [36 x i8] c" = call i32 (ptr, ...) @printf(ptr \00" -@.str.1618 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1619 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00" -@.str.1620 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.1621 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00" -@.str.1622 = private unnamed_addr constant [7 x i8] c", null\00" -@.str.1623 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1624 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str.1625 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1626 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1627 = private unnamed_addr constant [5 x i8] c"%lld\00" -@.str.1628 = private unnamed_addr constant [5 x i8] c"i64 \00" -@.str.1629 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.1630 = private unnamed_addr constant [5 x i8] c"%llu\00" -@.str.1631 = private unnamed_addr constant [5 x i8] c"i64 \00" -@.str.1632 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.1633 = private unnamed_addr constant [3 x i8] c"%g\00" -@.str.1634 = private unnamed_addr constant [8 x i8] c"double \00" -@.str.1635 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.1636 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.1637 = private unnamed_addr constant [9 x i8] c"sext i8 \00" -@.str.1638 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.1639 = private unnamed_addr constant [5 x i8] c"'%c'\00" -@.str.1640 = private unnamed_addr constant [5 x i8] c"i32 \00" -@.str.1641 = private unnamed_addr constant [3 x i8] c"%c\00" -@.str.1642 = private unnamed_addr constant [5 x i8] c"i32 \00" -@.str.1643 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.1644 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.1645 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.1646 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str.1647 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1648 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1649 = private unnamed_addr constant [3 x i8] c"%s\00" -@.str.1650 = private unnamed_addr constant [5 x i8] c"ptr \00" -@.str.1651 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1652 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00" -@.str.1653 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.1654 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" -@.str.1655 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.1656 = private unnamed_addr constant [7 x i8] c"\22%.*s\22\00" -@.str.1657 = private unnamed_addr constant [5 x i8] c"i32 \00" -@.str.1658 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1659 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.1660 = private unnamed_addr constant [5 x i8] c"i32 \00" -@.str.1661 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1662 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1663 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00" -@.str.1664 = private unnamed_addr constant [7 x i8] c", null\00" -@.str.1665 = private unnamed_addr constant [9 x i8] c"ptr.null\00" -@.str.1666 = private unnamed_addr constant [9 x i8] c"ptr.addr\00" -@.str.1667 = private unnamed_addr constant [9 x i8] c"ptr.done\00" -@.str.1668 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1669 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1670 = private unnamed_addr constant [7 x i8] c"0x%llx\00" -@.str.1671 = private unnamed_addr constant [5 x i8] c"i64 \00" -@.str.1672 = private unnamed_addr constant [14 x i8] c"ptrtoint ptr \00" -@.str.1673 = private unnamed_addr constant [8 x i8] c" to i64\00" -@.str.1674 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1675 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1676 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1677 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.1678 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.1679 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.1680 = private unnamed_addr constant [32 x i8] c"call void @finch_buf_print(ptr \00" -@.str.1681 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1682 = private unnamed_addr constant [30 x i8] c"call void @finch_buf_add(ptr \00" -@.str.1683 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1684 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1685 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1686 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.1687 = private unnamed_addr constant [2 x i8] c"1\00" -@.str.1688 = private unnamed_addr constant [30 x i8] c"call void @finch_buf_int(ptr \00" -@.str.1689 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1690 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.1691 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1692 = private unnamed_addr constant [31 x i8] c"call void @finch_buf_uint(ptr \00" -@.str.1693 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1694 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.1695 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1696 = private unnamed_addr constant [32 x i8] c"call void @finch_buf_float(ptr \00" -@.str.1697 = private unnamed_addr constant [10 x i8] c", double \00" -@.str.1698 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.1699 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1700 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.1701 = private unnamed_addr constant [31 x i8] c"call void @finch_buf_char(ptr \00" -@.str.1702 = private unnamed_addr constant [6 x i8] c", i8 \00" -@.str.1703 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str.1704 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1705 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.1706 = private unnamed_addr constant [31 x i8] c"call void @finch_buf_bool(ptr \00" -@.str.1707 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str.1708 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str.1709 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.1710 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1711 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1712 = private unnamed_addr constant [30 x i8] c"call void @finch_buf_str(ptr \00" -@.str.1713 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1714 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str.1715 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1716 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1717 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1718 = private unnamed_addr constant [30 x i8] c"call void @finch_buf_ptr(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 [11 x i8] c"call void \00" -@.str.1722 = private unnamed_addr constant [6 x i8] c"(ptr \00" -@.str.1723 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1724 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1725 = private unnamed_addr constant [15 x i8] c"@finch.format.\00" -@.str.1726 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1727 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\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 .done on a null pointer\00" -@.str.1730 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1731 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1732 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1733 = private unnamed_addr constant [3 x i8] c"%a\00" -@.str.1734 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1735 = private unnamed_addr constant [63 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1\00" -@.str.1736 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1737 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.1738 = private unnamed_addr constant [4 x i8] c"sep\00" -@.str.1739 = private unnamed_addr constant [5 x i8] c"item\00" -@.str.1740 = private unnamed_addr constant [14 x i8] c"icmp sgt i64 \00" -@.str.1741 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1742 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.1743 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1744 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1745 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1746 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1747 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1748 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1749 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1750 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1751 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.1752 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.1753 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1754 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" -@.str.1755 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1756 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.1757 = private unnamed_addr constant [3 x i8] c"%a\00" -@.str.1758 = private unnamed_addr constant [11 x i8] c"enum.other\00" -@.str.1759 = private unnamed_addr constant [10 x i8] c"enum.done\00" -@.str.1760 = private unnamed_addr constant [7 x i8] c"enum.v\00" -@.str.1761 = private unnamed_addr constant [5 x i8] c"i32 \00" -@.str.1762 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1763 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str.1764 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1765 = private unnamed_addr constant [12 x i8] c"switch i32 \00" -@.str.1766 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str.1767 = private unnamed_addr constant [4 x i8] c" [ \00" -@.str.1768 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1769 = private unnamed_addr constant [3 x i8] c" ]\00" -@.str.1770 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1771 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1772 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1773 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1774 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1775 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1776 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.1777 = private unnamed_addr constant [40 x i8] c"call void @finch_buf_int(ptr %buf, i64 \00" -@.str.1778 = private unnamed_addr constant [10 x i8] c"sext i32 \00" -@.str.1779 = private unnamed_addr constant [8 x i8] c" to i64\00" -@.str.1780 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1781 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1782 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1783 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1784 = private unnamed_addr constant [3 x i8] c"i1\00" -@.str.1785 = private unnamed_addr constant [3 x i8] c"i1\00" -@.str.1786 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.1787 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1788 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.1789 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1790 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1791 = private unnamed_addr constant [23 x i8] c", ptr %a, i32 0, i32 2\00" -@.str.1792 = private unnamed_addr constant [3 x i8] c"%a\00" -@.str.1793 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1794 = private unnamed_addr constant [11 x i8] c"entry.live\00" -@.str.1795 = private unnamed_addr constant [11 x i8] c"entry.next\00" -@.str.1796 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00" -@.str.1797 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1798 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.1799 = private unnamed_addr constant [4 x i8] c"sep\00" -@.str.1800 = private unnamed_addr constant [5 x i8] c"item\00" -@.str.1801 = private unnamed_addr constant [3 x i8] c"i1\00" -@.str.1802 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1803 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1804 = private unnamed_addr constant [3 x i8] c"i1\00" -@.str.1805 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.1806 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1807 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1808 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1809 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1810 = private unnamed_addr constant [3 x i8] c": \00" -@.str.1811 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1812 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1813 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1814 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1815 = private unnamed_addr constant [2 x i8] c"}\00" -@.str.1816 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1817 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.1818 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1605 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.1606 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1607 = private unnamed_addr constant [5 x i8] c"%src\00" +@.str.1608 = private unnamed_addr constant [5 x i8] c"%dst\00" +@.str.1609 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1610 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.1611 = private unnamed_addr constant [24 x i8] c", ptr %dst, i32 0, i32 \00" +@.str.1612 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1613 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.1614 = private unnamed_addr constant [24 x i8] c", ptr %src, i32 0, i32 \00" +@.str.1615 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1616 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1617 = private unnamed_addr constant [9 x i8] c"ret void\00" +@.str.1618 = private unnamed_addr constant [22 x i8] c"define internal void \00" +@.str.1619 = private unnamed_addr constant [21 x i8] c"(ptr %dst, ptr %src)\00" +@.str.1620 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.1621 = private unnamed_addr constant [31 x i8] c"call void @finch_str_drop(ptr \00" +@.str.1622 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1623 = private unnamed_addr constant [11 x i8] c"call void \00" +@.str.1624 = private unnamed_addr constant [6 x i8] c"(ptr \00" +@.str.1625 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1626 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1627 = private unnamed_addr constant [2 x i8] c"%\00" +@.str.1628 = private unnamed_addr constant [13 x i8] c"@finch.drop.\00" +@.str.1629 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1630 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" +@.str.1631 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1632 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" +@.str.1633 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.1634 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1635 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.1636 = private unnamed_addr constant [3 x i8] c"%a\00" +@.str.1637 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.1638 = private unnamed_addr constant [63 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1\00" +@.str.1639 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.1640 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1641 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.1642 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1643 = private unnamed_addr constant [34 x i8] c"call void @finch_arr_free(ptr %a)\00" +@.str.1644 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.1645 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1646 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1647 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.1648 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.1649 = private unnamed_addr constant [23 x i8] c", ptr %a, i32 0, i32 2\00" +@.str.1650 = private unnamed_addr constant [3 x i8] c"%a\00" +@.str.1651 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1652 = private unnamed_addr constant [11 x i8] c"entry.live\00" +@.str.1653 = private unnamed_addr constant [11 x i8] c"entry.next\00" +@.str.1654 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00" +@.str.1655 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.1656 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.1657 = private unnamed_addr constant [34 x i8] c"call void @finch_map_free(ptr %a)\00" +@.str.1658 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1659 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.1660 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1661 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1662 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.1663 = private unnamed_addr constant [22 x i8] c", ptr %a, i32 0, i32 \00" +@.str.1664 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1665 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1666 = private unnamed_addr constant [9 x i8] c"ret void\00" +@.str.1667 = private unnamed_addr constant [22 x i8] c"define internal void \00" +@.str.1668 = private unnamed_addr constant [9 x i8] c"(ptr %a)\00" +@.str.1669 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1670 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" +@.str.1671 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1672 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" +@.str.1673 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1674 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" +@.str.1675 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1676 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" +@.str.1677 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1678 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1679 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" +@.str.1680 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1681 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" +@.str.1682 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1683 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" +@.str.1684 = private unnamed_addr constant [1 x i8] c"\00" +@.str.1685 = private unnamed_addr constant [3 x i8] c", \00" +@.str.1686 = private unnamed_addr constant [36 x i8] c" = call i32 (ptr, ...) @printf(ptr \00" +@.str.1687 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1688 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00" +@.str.1689 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.1690 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00" +@.str.1691 = private unnamed_addr constant [7 x i8] c", null\00" +@.str.1692 = private unnamed_addr constant [1 x i8] c"\00" +@.str.1693 = private unnamed_addr constant [11 x i8] c"select i1 \00" +@.str.1694 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1695 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1696 = private unnamed_addr constant [5 x i8] c"%lld\00" +@.str.1697 = private unnamed_addr constant [5 x i8] c"i64 \00" +@.str.1698 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.1699 = private unnamed_addr constant [5 x i8] c"%llu\00" +@.str.1700 = private unnamed_addr constant [5 x i8] c"i64 \00" +@.str.1701 = private unnamed_addr constant [4 x i8] c"u64\00" +@.str.1702 = private unnamed_addr constant [3 x i8] c"%g\00" +@.str.1703 = private unnamed_addr constant [8 x i8] c"double \00" +@.str.1704 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.1705 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.1706 = private unnamed_addr constant [9 x i8] c"sext i8 \00" +@.str.1707 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str.1708 = private unnamed_addr constant [5 x i8] c"'%c'\00" +@.str.1709 = private unnamed_addr constant [5 x i8] c"i32 \00" +@.str.1710 = private unnamed_addr constant [3 x i8] c"%c\00" +@.str.1711 = private unnamed_addr constant [5 x i8] c"i32 \00" +@.str.1712 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.1713 = private unnamed_addr constant [5 x i8] c"true\00" +@.str.1714 = private unnamed_addr constant [6 x i8] c"false\00" +@.str.1715 = private unnamed_addr constant [11 x i8] c"select i1 \00" +@.str.1716 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1717 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1718 = private unnamed_addr constant [3 x i8] c"%s\00" +@.str.1719 = private unnamed_addr constant [5 x i8] c"ptr \00" +@.str.1720 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.1721 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00" +@.str.1722 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str.1723 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" +@.str.1724 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str.1725 = private unnamed_addr constant [7 x i8] c"\22%.*s\22\00" +@.str.1726 = private unnamed_addr constant [5 x i8] c"i32 \00" +@.str.1727 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1728 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.1729 = private unnamed_addr constant [5 x i8] c"i32 \00" +@.str.1730 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1731 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.1732 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00" +@.str.1733 = private unnamed_addr constant [7 x i8] c", null\00" +@.str.1734 = private unnamed_addr constant [9 x i8] c"ptr.null\00" +@.str.1735 = private unnamed_addr constant [9 x i8] c"ptr.addr\00" +@.str.1736 = private unnamed_addr constant [9 x i8] c"ptr.done\00" +@.str.1737 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.1738 = private unnamed_addr constant [1 x i8] c"\00" +@.str.1739 = private unnamed_addr constant [7 x i8] c"0x%llx\00" +@.str.1740 = private unnamed_addr constant [5 x i8] c"i64 \00" +@.str.1741 = private unnamed_addr constant [14 x i8] c"ptrtoint ptr \00" +@.str.1742 = private unnamed_addr constant [8 x i8] c" to i64\00" +@.str.1743 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.1744 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.1745 = private unnamed_addr constant [1 x i8] c"\00" +@.str.1746 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.1747 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.1748 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" +@.str.1749 = private unnamed_addr constant [32 x i8] c"call void @finch_buf_print(ptr \00" +@.str.1750 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1751 = private unnamed_addr constant [30 x i8] c"call void @finch_buf_add(ptr \00" +@.str.1752 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1753 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.1754 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1755 = private unnamed_addr constant [2 x i8] c"0\00" +@.str.1756 = private unnamed_addr constant [2 x i8] c"1\00" +@.str.1757 = private unnamed_addr constant [30 x i8] c"call void @finch_buf_int(ptr \00" +@.str.1758 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.1759 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.1760 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1761 = private unnamed_addr constant [31 x i8] c"call void @finch_buf_uint(ptr \00" +@.str.1762 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.1763 = private unnamed_addr constant [4 x i8] c"u64\00" +@.str.1764 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1765 = private unnamed_addr constant [32 x i8] c"call void @finch_buf_float(ptr \00" +@.str.1766 = private unnamed_addr constant [10 x i8] c", double \00" +@.str.1767 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.1768 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1769 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.1770 = private unnamed_addr constant [31 x i8] c"call void @finch_buf_char(ptr \00" +@.str.1771 = private unnamed_addr constant [6 x i8] c", i8 \00" +@.str.1772 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str.1773 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1774 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.1775 = private unnamed_addr constant [31 x i8] c"call void @finch_buf_bool(ptr \00" +@.str.1776 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str.1777 = private unnamed_addr constant [9 x i8] c"zext i1 \00" +@.str.1778 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str.1779 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1780 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.1781 = private unnamed_addr constant [30 x i8] c"call void @finch_buf_str(ptr \00" +@.str.1782 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1783 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str.1784 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1785 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.1786 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.1787 = private unnamed_addr constant [30 x i8] c"call void @finch_buf_ptr(ptr \00" +@.str.1788 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1789 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1790 = private unnamed_addr constant [11 x i8] c"call void \00" +@.str.1791 = private unnamed_addr constant [6 x i8] c"(ptr \00" +@.str.1792 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1793 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1794 = private unnamed_addr constant [15 x i8] c"@finch.format.\00" +@.str.1795 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1796 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" +@.str.1797 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1798 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" +@.str.1799 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.1800 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1801 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.1802 = private unnamed_addr constant [3 x i8] c"%a\00" +@.str.1803 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.1804 = private unnamed_addr constant [63 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1\00" +@.str.1805 = private unnamed_addr constant [5 x i8] c"%buf\00" +@.str.1806 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.1807 = private unnamed_addr constant [4 x i8] c"sep\00" +@.str.1808 = private unnamed_addr constant [5 x i8] c"item\00" +@.str.1809 = private unnamed_addr constant [14 x i8] c"icmp sgt i64 \00" +@.str.1810 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1811 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.1812 = private unnamed_addr constant [5 x i8] c"%buf\00" +@.str.1813 = private unnamed_addr constant [3 x i8] c", \00" +@.str.1814 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.1815 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1816 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.1817 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1818 = private unnamed_addr constant [5 x i8] c"%buf\00" @.str.1819 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1820 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.1821 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1822 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1823 = private unnamed_addr constant [5 x i8] c"%buf\00" +@.str.1820 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.1821 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.1822 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1823 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" @.str.1824 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1825 = private unnamed_addr constant [3 x i8] c": \00" -@.str.1826 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1827 = private unnamed_addr constant [22 x i8] c", ptr %a, i32 0, i32 \00" -@.str.1828 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1829 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1830 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1825 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.1826 = private unnamed_addr constant [3 x i8] c"%a\00" +@.str.1827 = private unnamed_addr constant [11 x i8] c"enum.other\00" +@.str.1828 = private unnamed_addr constant [10 x i8] c"enum.done\00" +@.str.1829 = private unnamed_addr constant [7 x i8] c"enum.v\00" +@.str.1830 = private unnamed_addr constant [5 x i8] c"i32 \00" @.str.1831 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1832 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1833 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1834 = private unnamed_addr constant [9 x i8] c"ret void\00" -@.str.1835 = private unnamed_addr constant [22 x i8] c"define internal void \00" -@.str.1836 = private unnamed_addr constant [19 x i8] c"(ptr %buf, ptr %a)\00" -@.str.1837 = private unnamed_addr constant [7 x i8] c"trunc \00" -@.str.1838 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1839 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.1840 = private unnamed_addr constant [6 x i8] c"sext \00" -@.str.1841 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1842 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.1843 = private unnamed_addr constant [6 x i8] c"zext \00" -@.str.1844 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1845 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.1846 = private unnamed_addr constant [7 x i8] c"fpext \00" -@.str.1847 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1848 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.1849 = private unnamed_addr constant [9 x i8] c"fptrunc \00" -@.str.1850 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1851 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.1852 = private unnamed_addr constant [8 x i8] c"sitofp \00" -@.str.1853 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1854 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.1855 = private unnamed_addr constant [8 x i8] c"uitofp \00" -@.str.1856 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1857 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.1858 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1859 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1860 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1861 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1862 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1863 = private unnamed_addr constant [12 x i8] c"the number \00" -@.str.1864 = private unnamed_addr constant [17 x i8] c" doesn't fit in \00" -@.str.1865 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.1866 = private unnamed_addr constant [3 x i8] c".0\00" -@.str.1867 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.1868 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.1869 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.1870 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.1871 = private unnamed_addr constant [10 x i8] c" must be \00" -@.str.1872 = private unnamed_addr constant [15 x i8] c", but this is \00" -@.str.1873 = private unnamed_addr constant [7 x i8] c" (use \00" -@.str.1874 = private unnamed_addr constant [17 x i8] c"(...) to convert\00" -@.str.1875 = private unnamed_addr constant [27 x i8] c", it cuts off the fraction\00" -@.str.1876 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1877 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1878 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.1879 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.1880 = private unnamed_addr constant [35 x i8] c" (turn it into text with str(...))\00" +@.str.1832 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str.1833 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1834 = private unnamed_addr constant [12 x i8] c"switch i32 \00" +@.str.1835 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str.1836 = private unnamed_addr constant [4 x i8] c" [ \00" +@.str.1837 = private unnamed_addr constant [2 x i8] c" \00" +@.str.1838 = private unnamed_addr constant [3 x i8] c" ]\00" +@.str.1839 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1840 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.1841 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1842 = private unnamed_addr constant [5 x i8] c"%buf\00" +@.str.1843 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1844 = private unnamed_addr constant [5 x i8] c"%buf\00" +@.str.1845 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.1846 = private unnamed_addr constant [40 x i8] c"call void @finch_buf_int(ptr %buf, i64 \00" +@.str.1847 = private unnamed_addr constant [10 x i8] c"sext i32 \00" +@.str.1848 = private unnamed_addr constant [8 x i8] c" to i64\00" +@.str.1849 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1850 = private unnamed_addr constant [5 x i8] c"%buf\00" +@.str.1851 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1852 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.1853 = private unnamed_addr constant [3 x i8] c"i1\00" +@.str.1854 = private unnamed_addr constant [3 x i8] c"i1\00" +@.str.1855 = private unnamed_addr constant [5 x i8] c"true\00" +@.str.1856 = private unnamed_addr constant [5 x i8] c"%buf\00" +@.str.1857 = private unnamed_addr constant [2 x i8] c"{\00" +@.str.1858 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.1859 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.1860 = private unnamed_addr constant [23 x i8] c", ptr %a, i32 0, i32 2\00" +@.str.1861 = private unnamed_addr constant [3 x i8] c"%a\00" +@.str.1862 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1863 = private unnamed_addr constant [11 x i8] c"entry.live\00" +@.str.1864 = private unnamed_addr constant [11 x i8] c"entry.next\00" +@.str.1865 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00" +@.str.1866 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.1867 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.1868 = private unnamed_addr constant [4 x i8] c"sep\00" +@.str.1869 = private unnamed_addr constant [5 x i8] c"item\00" +@.str.1870 = private unnamed_addr constant [3 x i8] c"i1\00" +@.str.1871 = private unnamed_addr constant [5 x i8] c"%buf\00" +@.str.1872 = private unnamed_addr constant [3 x i8] c", \00" +@.str.1873 = private unnamed_addr constant [3 x i8] c"i1\00" +@.str.1874 = private unnamed_addr constant [6 x i8] c"false\00" +@.str.1875 = private unnamed_addr constant [5 x i8] c"%buf\00" +@.str.1876 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1877 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1878 = private unnamed_addr constant [5 x i8] c"%buf\00" +@.str.1879 = private unnamed_addr constant [3 x i8] c": \00" +@.str.1880 = private unnamed_addr constant [5 x i8] c"%buf\00" @.str.1881 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [31 x i8] c"used .scopes on a null pointer\00" +@.str.1882 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1883 = private unnamed_addr constant [5 x i8] c"%buf\00" +@.str.1884 = private unnamed_addr constant [2 x i8] c"}\00" @.str.1885 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1886 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.1886 = private unnamed_addr constant [32 x i8] c"used .structs 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 [31 x i8] c"used .scopes 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 [12 x i8] c"src/gen.fch\00" -@.str.1892 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1893 = private unnamed_addr constant [32 x i8] c"used .deferOn on a null pointer\00" -@.str.1894 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1895 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.1896 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1888 = private unnamed_addr constant [5 x i8] c"%buf\00" +@.str.1889 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.1890 = private unnamed_addr constant [3 x i8] c", \00" +@.str.1891 = private unnamed_addr constant [1 x i8] c"\00" +@.str.1892 = private unnamed_addr constant [5 x i8] c"%buf\00" +@.str.1893 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1894 = private unnamed_addr constant [3 x i8] c": \00" +@.str.1895 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.1896 = private unnamed_addr constant [22 x i8] c", ptr %a, i32 0, i32 \00" @.str.1897 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1898 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1899 = private unnamed_addr constant [35 x i8] c"used .deferLimit on a null pointer\00" +@.str.1898 = private unnamed_addr constant [5 x i8] c"%buf\00" +@.str.1899 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.1900 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1901 = private unnamed_addr constant [31 x i8] c"used .scopes 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 [12 x i8] c"src/gen.fch\00" -@.str.1904 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1905 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.1906 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1907 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.1908 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1909 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1910 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.1911 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1912 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1913 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.1914 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1915 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1916 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.1917 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1918 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.1919 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1920 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1921 = private unnamed_addr constant [29 x i8] c"used .sigs 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 [12 x i8] c"src/gen.fch\00" -@.str.1924 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.1925 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1926 = private unnamed_addr constant [6 x i8] c"print\00" -@.str.1927 = private unnamed_addr constant [5 x i8] c"addr\00" -@.str.1928 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1929 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.1930 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.1931 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.1932 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.1933 = private unnamed_addr constant [10 x i8] c"read_file\00" -@.str.1934 = private unnamed_addr constant [11 x i8] c"write_file\00" -@.str.1935 = private unnamed_addr constant [12 x i8] c"file_exists\00" -@.str.1936 = private unnamed_addr constant [6 x i8] c"shell\00" -@.str.1937 = private unnamed_addr constant [5 x i8] c"exit\00" -@.str.1938 = private unnamed_addr constant [6 x i8] c"input\00" -@.str.1939 = private unnamed_addr constant [4 x i8] c"new\00" -@.str.1940 = private unnamed_addr constant [5 x i8] c"free\00" -@.str.1941 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1942 = private unnamed_addr constant [12 x i8] c"delete_file\00" -@.str.1943 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.1944 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.1945 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.1946 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1947 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.1948 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.1949 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.1950 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.1951 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.1952 = private unnamed_addr constant [4 x i8] c"f64\00" -@.str.1953 = private unnamed_addr constant [6 x i8] c"error\00" -@.str.1954 = private unnamed_addr constant [4 x i8] c"err\00" -@.str.1955 = private unnamed_addr constant [19 x i8] c"a variable named '\00" -@.str.1956 = private unnamed_addr constant [22 x i8] c"' already exists here\00" +@.str.1901 = private unnamed_addr constant [5 x i8] c"%buf\00" +@.str.1902 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1903 = private unnamed_addr constant [9 x i8] c"ret void\00" +@.str.1904 = private unnamed_addr constant [22 x i8] c"define internal void \00" +@.str.1905 = private unnamed_addr constant [19 x i8] c"(ptr %buf, ptr %a)\00" +@.str.1906 = private unnamed_addr constant [7 x i8] c"trunc \00" +@.str.1907 = private unnamed_addr constant [2 x i8] c" \00" +@.str.1908 = private unnamed_addr constant [5 x i8] c" to \00" +@.str.1909 = private unnamed_addr constant [6 x i8] c"sext \00" +@.str.1910 = private unnamed_addr constant [2 x i8] c" \00" +@.str.1911 = private unnamed_addr constant [5 x i8] c" to \00" +@.str.1912 = private unnamed_addr constant [6 x i8] c"zext \00" +@.str.1913 = private unnamed_addr constant [2 x i8] c" \00" +@.str.1914 = private unnamed_addr constant [5 x i8] c" to \00" +@.str.1915 = private unnamed_addr constant [7 x i8] c"fpext \00" +@.str.1916 = private unnamed_addr constant [2 x i8] c" \00" +@.str.1917 = private unnamed_addr constant [5 x i8] c" to \00" +@.str.1918 = private unnamed_addr constant [9 x i8] c"fptrunc \00" +@.str.1919 = private unnamed_addr constant [2 x i8] c" \00" +@.str.1920 = private unnamed_addr constant [5 x i8] c" to \00" +@.str.1921 = private unnamed_addr constant [8 x i8] c"sitofp \00" +@.str.1922 = private unnamed_addr constant [2 x i8] c" \00" +@.str.1923 = private unnamed_addr constant [5 x i8] c" to \00" +@.str.1924 = private unnamed_addr constant [8 x i8] c"uitofp \00" +@.str.1925 = private unnamed_addr constant [2 x i8] c" \00" +@.str.1926 = private unnamed_addr constant [5 x i8] c" to \00" +@.str.1927 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.1928 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.1929 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.1930 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.1931 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.1932 = private unnamed_addr constant [12 x i8] c"the number \00" +@.str.1933 = private unnamed_addr constant [17 x i8] c" doesn't fit in \00" +@.str.1934 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.1935 = private unnamed_addr constant [3 x i8] c".0\00" +@.str.1936 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.1937 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.1938 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.1939 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.1940 = private unnamed_addr constant [10 x i8] c" must be \00" +@.str.1941 = private unnamed_addr constant [15 x i8] c", but this is \00" +@.str.1942 = private unnamed_addr constant [7 x i8] c" (use \00" +@.str.1943 = private unnamed_addr constant [17 x i8] c"(...) to convert\00" +@.str.1944 = private unnamed_addr constant [27 x i8] c", it cuts off the fraction\00" +@.str.1945 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1946 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.1947 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.1948 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.1949 = private unnamed_addr constant [35 x i8] c" (turn it into text with str(...))\00" +@.str.1950 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1951 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.1952 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1953 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\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 .scopes on a null pointer\00" +@.str.1956 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.1957 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1958 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.1959 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.1960 = private unnamed_addr constant [36 x i8] c"' is already the name of a function\00" -@.str.1961 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.1962 = private unnamed_addr constant [39 x i8] c"' is a built-in name, pick another one\00" +@.str.1958 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.1959 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1960 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1961 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1962 = private unnamed_addr constant [32 x i8] c"used .deferOn 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 [31 x i8] c"used .scopes on a null pointer\00" @.str.1965 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1966 = private unnamed_addr constant [31 x i8] c"used .scopes 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"src/gen.fch\00" -@.str.1968 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1969 = private unnamed_addr constant [30 x i8] c"used .nvars on a null pointer\00" -@.str.1970 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1971 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" +@.str.1968 = private unnamed_addr constant [35 x i8] c"used .deferLimit on a null pointer\00" +@.str.1969 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1970 = private unnamed_addr constant [31 x i8] c"used .scopes 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 [12 x i8] c"src/gen.fch\00" @.str.1973 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1974 = private unnamed_addr constant [30 x i8] c"used .nvars on a null pointer\00" +@.str.1974 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" @.str.1975 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1976 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" -@.str.1977 = private unnamed_addr constant [4 x i8] c"err\00" +@.str.1976 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.1977 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.1978 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1979 = private unnamed_addr constant [2 x i8] c"$\00" +@.str.1979 = private unnamed_addr constant [29 x i8] c"used .sigs 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 [30 x i8] c"used .progs on a null pointer\00" -@.str.1982 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1983 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.1981 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1982 = private unnamed_addr constant [29 x i8] c"used .sigs 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 [12 x i8] c"src/gen.fch\00" -@.str.1985 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1986 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.1987 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1985 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.1986 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1987 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" @.str.1988 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1989 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" -@.str.1990 = private unnamed_addr constant [4 x i8] c"@V\09\00" -@.str.1991 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1992 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1993 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1994 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.1995 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1996 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1997 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1998 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1999 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2000 = private unnamed_addr constant [30 x i8] c"used .files 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 [2 x i8] c"\09\00" -@.str.2003 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.2004 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" -@.str.2005 = private unnamed_addr constant [2 x i8] c" \00" -@.str.2006 = private unnamed_addr constant [5 x i8] c"\0A```\00" -@.str.2007 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2008 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2009 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2010 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [24 x i8] c"pop() on an empty array\00" -@.str.2014 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2015 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2016 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2017 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [35 x i8] c"used .deferLimit on a null pointer\00" -@.str.2021 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2022 = private unnamed_addr constant [32 x i8] c"used .deferOn on a null pointer\00" -@.str.2023 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2024 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2025 = private unnamed_addr constant [35 x i8] c"used .deferLimit on a null pointer\00" +@.str.1989 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1990 = private unnamed_addr constant [29 x i8] c"used .sigs 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 [12 x i8] c"src/gen.fch\00" +@.str.1993 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.1994 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1995 = private unnamed_addr constant [6 x i8] c"print\00" +@.str.1996 = private unnamed_addr constant [5 x i8] c"addr\00" +@.str.1997 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.1998 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.1999 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.2000 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.2001 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.2002 = private unnamed_addr constant [10 x i8] c"read_file\00" +@.str.2003 = private unnamed_addr constant [11 x i8] c"write_file\00" +@.str.2004 = private unnamed_addr constant [12 x i8] c"file_exists\00" +@.str.2005 = private unnamed_addr constant [6 x i8] c"shell\00" +@.str.2006 = private unnamed_addr constant [5 x i8] c"exit\00" +@.str.2007 = private unnamed_addr constant [6 x i8] c"input\00" +@.str.2008 = private unnamed_addr constant [4 x i8] c"new\00" +@.str.2009 = private unnamed_addr constant [5 x i8] c"free\00" +@.str.2010 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.2011 = private unnamed_addr constant [12 x i8] c"delete_file\00" +@.str.2012 = private unnamed_addr constant [3 x i8] c"i8\00" +@.str.2013 = private unnamed_addr constant [4 x i8] c"i16\00" +@.str.2014 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.2015 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.2016 = private unnamed_addr constant [3 x i8] c"u8\00" +@.str.2017 = private unnamed_addr constant [4 x i8] c"u16\00" +@.str.2018 = private unnamed_addr constant [4 x i8] c"u32\00" +@.str.2019 = private unnamed_addr constant [4 x i8] c"u64\00" +@.str.2020 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.2021 = private unnamed_addr constant [4 x i8] c"f64\00" +@.str.2022 = private unnamed_addr constant [6 x i8] c"error\00" +@.str.2023 = private unnamed_addr constant [4 x i8] c"err\00" +@.str.2024 = private unnamed_addr constant [19 x i8] c"a variable named '\00" +@.str.2025 = private unnamed_addr constant [22 x i8] c"' already exists here\00" @.str.2026 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2027 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" -@.str.2028 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2029 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2030 = private unnamed_addr constant [32 x i8] c"used .inDefer 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 [32 x i8] c"used .deferOn 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 [35 x i8] c"used .deferLimit 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 [31 x i8] c"used .scopes on a null pointer\00" +@.str.2027 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2028 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.2029 = private unnamed_addr constant [36 x i8] c"' is already the name of a function\00" +@.str.2030 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.2031 = private unnamed_addr constant [39 x i8] c"' is a built-in name, pick another one\00" +@.str.2032 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2033 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.2034 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2035 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.2036 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2037 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2038 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\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 [31 x i8] c"used .scopes 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 [31 x i8] c"used .scopes on a null pointer\00" +@.str.2040 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2041 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.2042 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2043 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2044 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.2045 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.2046 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.2047 = private unnamed_addr constant [6 x i8] c"index\00" +@.str.2044 = private unnamed_addr constant [30 x i8] c"used .nvars 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 [30 x i8] c"used .files 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 [1 x i8] c"\00" -@.str.2050 = private unnamed_addr constant [5 x i8] c"push\00" -@.str.2051 = private unnamed_addr constant [4 x i8] c"pop\00" -@.str.2052 = private unnamed_addr constant [7 x i8] c"insert\00" -@.str.2053 = private unnamed_addr constant [7 x i8] c"remove\00" -@.str.2054 = private unnamed_addr constant [6 x i8] c"clear\00" -@.str.2055 = private unnamed_addr constant [7 x i8] c"resize\00" -@.str.2056 = private unnamed_addr constant [5 x i8] c"sort\00" -@.str.2057 = private unnamed_addr constant [8 x i8] c"reverse\00" -@.str.2058 = private unnamed_addr constant [7 x i8] c"assign\00" +@.str.2049 = private unnamed_addr constant [30 x i8] c"used .nvars on a null pointer\00" +@.str.2050 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2051 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" +@.str.2052 = private unnamed_addr constant [4 x i8] c"err\00" +@.str.2053 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2054 = private unnamed_addr constant [2 x i8] c"$\00" +@.str.2055 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2056 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.2057 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2058 = private unnamed_addr constant [28 x i8] c"used .cur 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 [7 x i8] c"method\00" -@.str.2061 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2062 = private unnamed_addr constant [27 x i8] c"used .mm on a null pointer\00" +@.str.2060 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2061 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\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 [5 x i8] c"call\00" -@.str.2065 = private unnamed_addr constant [5 x i8] c"addr\00" -@.str.2066 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2067 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2068 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2069 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2070 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2071 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2072 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2073 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2064 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" +@.str.2065 = private unnamed_addr constant [4 x i8] c"@V\09\00" +@.str.2066 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.2067 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.2068 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2069 = private unnamed_addr constant [30 x i8] c"used .files 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 [2 x i8] c"\09\00" +@.str.2072 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.2073 = private unnamed_addr constant [2 x i8] c"\09\00" @.str.2074 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2075 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.2075 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\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 [30 x i8] c"used .progs 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 [12 x i8] c"src/gen.fch\00" -@.str.2081 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2082 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2077 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.2078 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.2079 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" +@.str.2080 = private unnamed_addr constant [2 x i8] c" \00" +@.str.2081 = private unnamed_addr constant [5 x i8] c"\0A```\00" +@.str.2082 = private unnamed_addr constant [1 x i8] c"\00" @.str.2083 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2084 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2085 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2086 = private unnamed_addr constant [13 x i8] c"the struct '\00" -@.str.2087 = private unnamed_addr constant [19 x i8] c"' is defined twice\00" -@.str.2088 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2089 = private unnamed_addr constant [34 x i8] c"used .templates 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 [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 [32 x i8] c"used .structs 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 [31 x i8] c"used .module on a null pointer\00" +@.str.2084 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.2085 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2086 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.2087 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2088 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.2089 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2090 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.2091 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2092 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" +@.str.2093 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2094 = private unnamed_addr constant [31 x i8] c"used .scopes 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 [12 x i8] c"src/gen.fch\00" -@.str.2097 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.2097 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\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.2099 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2100 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2101 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2102 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2101 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.2102 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2103 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2104 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2105 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2104 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2105 = private unnamed_addr constant [32 x i8] c"used .deferOn on a null pointer\00" @.str.2106 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2107 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.2107 = private unnamed_addr constant [35 x i8] c"used .deferLimit 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 [12 x i8] c"src/gen.fch\00" +@.str.2109 = private unnamed_addr constant [32 x i8] c"used .deferOn 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 [31 x i8] c"used .module on a null pointer\00" +@.str.2111 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\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 [2 x i8] c"'\00" -@.str.2115 = private unnamed_addr constant [19 x i8] c"' is defined twice\00" +@.str.2113 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2114 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2115 = private unnamed_addr constant [35 x i8] c"used .deferLimit 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 .module on a null pointer\00" +@.str.2117 = private unnamed_addr constant [32 x i8] c"used .inDefer 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 [10 x i8] c"the enum \00" -@.str.2120 = private unnamed_addr constant [18 x i8] c" has the variant \00" -@.str.2121 = private unnamed_addr constant [7 x i8] c" twice\00" -@.str.2122 = private unnamed_addr constant [17 x i8] c"two variants of \00" -@.str.2123 = private unnamed_addr constant [18 x i8] c" have the number \00" -@.str.2124 = private unnamed_addr constant [21 x i8] c" (give each its own)\00" -@.str.2125 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2126 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" -@.str.2127 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2128 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.2129 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2130 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2131 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.2132 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2133 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.2134 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2135 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2136 = private unnamed_addr constant [32 x i8] c"used .structs 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 [30 x i8] c"used .progs 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 [30 x i8] c"used .progs 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 [12 x i8] c"src/gen.fch\00" -@.str.2143 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2119 = private unnamed_addr constant [31 x i8] c"used .scopes 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 [12 x i8] c"src/gen.fch\00" +@.str.2122 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2123 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" +@.str.2124 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2125 = private unnamed_addr constant [32 x i8] c"used .deferOn 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 [35 x i8] c"used .deferLimit on a null pointer\00" +@.str.2128 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2129 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.2130 = private unnamed_addr constant [4 x i8] c"var\00" +@.str.2131 = private unnamed_addr constant [7 x i8] c"member\00" +@.str.2132 = private unnamed_addr constant [6 x i8] c"index\00" +@.str.2133 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2134 = private unnamed_addr constant [1 x i8] c"\00" +@.str.2135 = private unnamed_addr constant [5 x i8] c"push\00" +@.str.2136 = private unnamed_addr constant [4 x i8] c"pop\00" +@.str.2137 = private unnamed_addr constant [7 x i8] c"insert\00" +@.str.2138 = private unnamed_addr constant [7 x i8] c"remove\00" +@.str.2139 = private unnamed_addr constant [6 x i8] c"clear\00" +@.str.2140 = private unnamed_addr constant [7 x i8] c"resize\00" +@.str.2141 = private unnamed_addr constant [5 x i8] c"sort\00" +@.str.2142 = private unnamed_addr constant [8 x i8] c"reverse\00" +@.str.2143 = private unnamed_addr constant [7 x i8] c"assign\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 .progs on a null pointer\00" +@.str.2145 = private unnamed_addr constant [7 x i8] c"method\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 .progs 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.2147 = private unnamed_addr constant [27 x i8] c"used .mm on a null pointer\00" +@.str.2148 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2149 = private unnamed_addr constant [5 x i8] c"call\00" +@.str.2150 = private unnamed_addr constant [5 x i8] c"addr\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 [11 x i8] c"function '\00" -@.str.2154 = private unnamed_addr constant [19 x i8] c"' is defined twice\00" -@.str.2155 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2156 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2157 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2158 = private unnamed_addr constant [35 x i8] c"there is no generic struct named '\00" -@.str.2159 = private unnamed_addr constant [54 x i8] c"' here (a method goes in the same file as its struct)\00" -@.str.2160 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2161 = private unnamed_addr constant [34 x i8] c"used .templates 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 [30 x i8] c"used .progs on a null pointer\00" +@.str.2154 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2155 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\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 [31 x i8] c"used .module on a null pointer\00" +@.str.2159 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2160 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.2161 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2162 = 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.2163 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" @.str.2164 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2165 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2165 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2166 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2167 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2168 = private unnamed_addr constant [12 x i8] c"the method \00" -@.str.2169 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2170 = private unnamed_addr constant [18 x i8] c" is defined twice\00" -@.str.2171 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2172 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2173 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.2174 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.2175 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.2176 = private unnamed_addr constant [27 x i8] c"there is no struct named '\00" -@.str.2177 = 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.2178 = private unnamed_addr constant [12 x i8] c"the method \00" -@.str.2179 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2180 = private unnamed_addr constant [18 x i8] c" is defined twice\00" +@.str.2168 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2169 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2170 = private unnamed_addr constant [1 x i8] c"\00" +@.str.2171 = private unnamed_addr constant [13 x i8] c"the struct '\00" +@.str.2172 = private unnamed_addr constant [19 x i8] c"' is defined twice\00" +@.str.2173 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2174 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" +@.str.2175 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2176 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2177 = 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 [31 x i8] c"used .module on a null pointer\00" @.str.2181 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2182 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2182 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" @.str.2183 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2184 = private unnamed_addr constant [12 x i8] c"the struct \00" -@.str.2185 = private unnamed_addr constant [29 x i8] c" already has a field named '\00" -@.str.2186 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.2187 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2188 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2189 = private unnamed_addr constant [11 x i8] c"function '\00" -@.str.2190 = private unnamed_addr constant [19 x i8] c"' is defined twice\00" -@.str.2191 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.2192 = private unnamed_addr constant [44 x i8] c"' is a built-in function, pick another name\00" +@.str.2184 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.2185 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2186 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2187 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2188 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2189 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.2190 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2191 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2192 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" @.str.2193 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2194 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\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 [8 x i8] c"@finch.\00" -@.str.2200 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2201 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2202 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2203 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2204 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2205 = private unnamed_addr constant [5 x i8] c"self\00" -@.str.2206 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2207 = private unnamed_addr constant [23 x i8] c"'self' is already the \00" -@.str.2208 = private unnamed_addr constant [25 x i8] c" the method is called on\00" -@.str.2209 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2194 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2195 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2196 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2197 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2198 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2199 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.2200 = private unnamed_addr constant [19 x i8] c"' is defined twice\00" +@.str.2201 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2202 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2203 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2204 = private unnamed_addr constant [10 x i8] c"the enum \00" +@.str.2205 = private unnamed_addr constant [18 x i8] c" has the variant \00" +@.str.2206 = private unnamed_addr constant [7 x i8] c" twice\00" +@.str.2207 = private unnamed_addr constant [17 x i8] c"two variants of \00" +@.str.2208 = private unnamed_addr constant [18 x i8] c" have the number \00" +@.str.2209 = private unnamed_addr constant [21 x i8] c" (give each its own)\00" @.str.2210 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2211 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2211 = private unnamed_addr constant [30 x i8] c"used .enums 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.2213 = private unnamed_addr constant [27 x i8] c"used .ci 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 [29 x i8] c"used .sigs on a null pointer\00" -@.str.2216 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2217 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2218 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2215 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2216 = private unnamed_addr constant [2 x i8] c"C\00" +@.str.2217 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2218 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" @.str.2219 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2220 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2221 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2220 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2221 = private unnamed_addr constant [32 x i8] c"used .structs 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 [30 x i8] c"used .progs on a null pointer\00" @.str.2224 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2225 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.2225 = private unnamed_addr constant [30 x i8] c"used .progs 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 [12 x i8] c"src/gen.fch\00" -@.str.2229 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2230 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2228 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2229 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2230 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" @.str.2231 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2232 = private unnamed_addr constant [5 x i8] c"self\00" -@.str.2233 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2232 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2233 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" @.str.2234 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2235 = private unnamed_addr constant [29 x i8] c"used .sigs 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 [12 x i8] c"src/gen.fch\00" -@.str.2237 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2238 = private unnamed_addr constant [27 x i8] c"used .mm on a null pointer\00" -@.str.2239 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2240 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2241 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2242 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2243 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" -@.str.2244 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2245 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" -@.str.2246 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2237 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2238 = private unnamed_addr constant [11 x i8] c"function '\00" +@.str.2239 = private unnamed_addr constant [19 x i8] c"' is defined twice\00" +@.str.2240 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2241 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2242 = private unnamed_addr constant [1 x i8] c"\00" +@.str.2243 = private unnamed_addr constant [35 x i8] c"there is no generic struct named '\00" +@.str.2244 = private unnamed_addr constant [54 x i8] c"' here (a method goes in the same file as its struct)\00" +@.str.2245 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2246 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" @.str.2247 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2248 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.2248 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" @.str.2249 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2250 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2251 = private unnamed_addr constant [5 x i8] c"self\00" -@.str.2252 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2253 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2254 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" -@.str.2255 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2250 = private unnamed_addr constant [31 x i8] c"used .module 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 [31 x i8] c"used .module on a null pointer\00" +@.str.2253 = private unnamed_addr constant [12 x i8] c"the method \00" +@.str.2254 = private unnamed_addr constant [2 x i8] c".\00" +@.str.2255 = private unnamed_addr constant [18 x i8] c" is defined twice\00" @.str.2256 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2257 = private unnamed_addr constant [27 x i8] c"used .mm 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 [30 x i8] c"used .progs on a null pointer\00" -@.str.2262 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.2257 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2258 = private unnamed_addr constant [2 x i8] c"C\00" +@.str.2259 = private unnamed_addr constant [2 x i8] c"C\00" +@.str.2260 = private unnamed_addr constant [2 x i8] c"C\00" +@.str.2261 = private unnamed_addr constant [27 x i8] c"there is no struct named '\00" +@.str.2262 = 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.2263 = private unnamed_addr constant [12 x i8] c"the method \00" +@.str.2264 = private unnamed_addr constant [2 x i8] c".\00" +@.str.2265 = private unnamed_addr constant [18 x i8] c" is defined twice\00" @.str.2266 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2267 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.2267 = private unnamed_addr constant [32 x i8] c"used .structs 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 [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 [12 x i8] c"src/gen.fch\00" -@.str.2272 = private unnamed_addr constant [29 x i8] c"used .sigs 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 [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.2269 = private unnamed_addr constant [12 x i8] c"the struct \00" +@.str.2270 = private unnamed_addr constant [29 x i8] c" already has a field named '\00" +@.str.2271 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.2272 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2273 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2274 = private unnamed_addr constant [11 x i8] c"function '\00" +@.str.2275 = private unnamed_addr constant [19 x i8] c"' is defined twice\00" +@.str.2276 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.2277 = private unnamed_addr constant [44 x i8] c"' is a built-in function, pick another name\00" @.str.2278 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2279 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2280 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2279 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2280 = private unnamed_addr constant [8 x i8] c"@finch.\00" @.str.2281 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2282 = private unnamed_addr constant [29 x i8] c"used .sigs 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 [12 x i8] c"src/gen.fch\00" +@.str.2282 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2283 = private unnamed_addr constant [2 x i8] c".\00" +@.str.2284 = private unnamed_addr constant [8 x i8] c"@finch.\00" @.str.2285 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2286 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" -@.str.2287 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2288 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" +@.str.2286 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2287 = private unnamed_addr constant [2 x i8] c".\00" +@.str.2288 = private unnamed_addr constant [2 x i8] c".\00" @.str.2289 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2290 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2291 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2292 = private unnamed_addr constant [35 x i8] c"there is no generic struct named '\00" -@.str.2293 = private unnamed_addr constant [29 x i8] c"' (a struct written struct \00" -@.str.2294 = private unnamed_addr constant [35 x i8] c"[T] { ... } takes type arguments)\00" +@.str.2290 = private unnamed_addr constant [5 x i8] c"self\00" +@.str.2291 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2292 = private unnamed_addr constant [23 x i8] c"'self' is already the \00" +@.str.2293 = private unnamed_addr constant [25 x i8] c" the method is called on\00" +@.str.2294 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2295 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2296 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" +@.str.2296 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2297 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2298 = private unnamed_addr constant [8 x i8] c" takes \00" -@.str.2299 = private unnamed_addr constant [25 x i8] c" type argument(s), like \00" -@.str.2300 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.2301 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2302 = private unnamed_addr constant [12 x i8] c"], but got \00" -@.str.2303 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.2304 = private unnamed_addr constant [2 x i8] c"]\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.2298 = private unnamed_addr constant [29 x i8] c"used .sigs 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 [29 x i8] c"used .sigs on a null pointer\00" +@.str.2301 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2302 = private unnamed_addr constant [29 x i8] c"used .sigs 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 [29 x i8] c"used .sigs on a null pointer\00" +@.str.2306 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2307 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2308 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2309 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.2310 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2311 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" +@.str.2308 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.2309 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2310 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.2311 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2312 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2313 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.2314 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.2313 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2314 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" @.str.2315 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2316 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2317 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2316 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2317 = private unnamed_addr constant [5 x i8] c"self\00" @.str.2318 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2319 = private unnamed_addr constant [8 x i8] c"@finch.\00" -@.str.2320 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2321 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2322 = private unnamed_addr constant [8 x i8] c"@finch.\00" -@.str.2323 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2324 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2325 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2326 = private unnamed_addr constant [31 x i8] c"used .tnames 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 [29 x i8] c"used .sigs on a null pointer\00" +@.str.2321 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2322 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2323 = private unnamed_addr constant [27 x i8] c"used .mm on a null pointer\00" +@.str.2324 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2325 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.2326 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2327 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2328 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" +@.str.2328 = private unnamed_addr constant [34 x i8] c"used .templates 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 [31 x i8] c"used .module on a null pointer\00" +@.str.2330 = private unnamed_addr constant [34 x i8] c"used .templates 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 [33 x i8] c"used .instNote 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 .tnames on a null pointer\00" +@.str.2332 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2333 = private unnamed_addr constant [30 x i8] c"used .progs 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 [30 x i8] c"used .targs on a null pointer\00" +@.str.2336 = private unnamed_addr constant [5 x i8] c"self\00" @.str.2337 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2338 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2339 = private unnamed_addr constant [18 x i8] c" (while building \00" -@.str.2340 = private unnamed_addr constant [2 x i8] c")\00" +@.str.2338 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2339 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" +@.str.2340 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2341 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2342 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" +@.str.2342 = private unnamed_addr constant [27 x i8] c"used .mm on a null pointer\00" @.str.2343 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2344 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2344 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" @.str.2345 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2346 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2346 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" @.str.2347 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2348 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2349 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" +@.str.2348 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.2349 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2350 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2351 = private unnamed_addr constant [30 x i8] c"used .targs 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 [31 x i8] c"used .module on a null pointer\00" +@.str.2351 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2352 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.2353 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2354 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2355 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" +@.str.2355 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2356 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2357 = private unnamed_addr constant [29 x i8] c"used .sigs 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 [29 x i8] c"used .sigs on a null pointer\00" -@.str.2360 = private unnamed_addr constant [6 x i8] c"named\00" +@.str.2359 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2360 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" @.str.2361 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2362 = private unnamed_addr constant [30 x i8] c"used .bound 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 [12 x i8] c"src/gen.fch\00" -@.str.2364 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2365 = private unnamed_addr constant [30 x i8] c"used .types on a null pointer\00" +@.str.2364 = private unnamed_addr constant [29 x i8] c"used .sigs 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 [12 x i8] c"src/gen.fch\00" -@.str.2367 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2368 = private unnamed_addr constant [30 x i8] c"used .bound on a null pointer\00" +@.str.2367 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.2368 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2369 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2370 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.2371 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.2372 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.2373 = 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 [34 x i8] c"used .templates on a null pointer\00" +@.str.2372 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2373 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" @.str.2374 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2375 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.2376 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.2377 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2378 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2379 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2375 = private unnamed_addr constant [3 x i8] c", \00" +@.str.2376 = private unnamed_addr constant [1 x i8] c"\00" +@.str.2377 = private unnamed_addr constant [35 x i8] c"there is no generic struct named '\00" +@.str.2378 = private unnamed_addr constant [29 x i8] c"' (a struct written struct \00" +@.str.2379 = private unnamed_addr constant [35 x i8] c"[T] { ... } takes type arguments)\00" @.str.2380 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2381 = private unnamed_addr constant [6 x i8] c"named\00" -@.str.2382 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.2383 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2384 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2385 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [12 x i8] c"src/gen.fch\00" -@.str.2389 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" +@.str.2381 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" +@.str.2382 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2383 = private unnamed_addr constant [8 x i8] c" takes \00" +@.str.2384 = private unnamed_addr constant [25 x i8] c" type argument(s), like \00" +@.str.2385 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.2386 = private unnamed_addr constant [3 x i8] c", \00" +@.str.2387 = private unnamed_addr constant [12 x i8] c"], but got \00" +@.str.2388 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.2389 = private unnamed_addr constant [2 x i8] c"]\00" @.str.2390 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2391 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2392 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2393 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2394 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2395 = private unnamed_addr constant [8 x i8] c" takes \00" -@.str.2396 = private unnamed_addr constant [28 x i8] c" type argument(s), but got \00" -@.str.2397 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.2398 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2399 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2400 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.2401 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2402 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.2403 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.2404 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2405 = private unnamed_addr constant [30 x i8] c"this has no type to work out \00" -@.str.2406 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2407 = private unnamed_addr constant [6 x i8] c" from\00" -@.str.2408 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2409 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2410 = private unnamed_addr constant [17 x i8] c"can't tell what \00" -@.str.2411 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2412 = private unnamed_addr constant [25 x i8] c" is here; write it out: \00" -@.str.2413 = private unnamed_addr constant [11 x i8] c"[int](...)\00" -@.str.2414 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.2415 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2416 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2417 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2391 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2392 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2393 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2394 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.2395 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2396 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" +@.str.2397 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2398 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.2399 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.2400 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2401 = private unnamed_addr constant [30 x i8] c"used .progs 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 [8 x i8] c"@finch.\00" +@.str.2405 = private unnamed_addr constant [2 x i8] c".\00" +@.str.2406 = private unnamed_addr constant [2 x i8] c".\00" +@.str.2407 = private unnamed_addr constant [8 x i8] c"@finch.\00" +@.str.2408 = private unnamed_addr constant [2 x i8] c".\00" +@.str.2409 = private unnamed_addr constant [2 x i8] c".\00" +@.str.2410 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2411 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" +@.str.2412 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2413 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" +@.str.2414 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2415 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2416 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2417 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" @.str.2418 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2419 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2419 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" @.str.2420 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2421 = private unnamed_addr constant [11 x i8] c"argument '\00" +@.str.2421 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" @.str.2422 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2423 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.2424 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2425 = private unnamed_addr constant [2 x i8] c" \00" +@.str.2423 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2424 = private unnamed_addr constant [18 x i8] c" (while building \00" +@.str.2425 = private unnamed_addr constant [2 x i8] c")\00" @.str.2426 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2427 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" +@.str.2427 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" @.str.2428 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2429 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2429 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2430 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2431 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2432 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2433 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2434 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2435 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.2436 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.2437 = private unnamed_addr constant [7 x i8] c" x i8]\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 .structs on a null pointer\00" -@.str.2440 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2433 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2434 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" +@.str.2435 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2436 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" +@.str.2437 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2438 = private unnamed_addr constant [31 x i8] c"used .module 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 [33 x i8] c"used .instNote on a null pointer\00" @.str.2441 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2442 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2442 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" @.str.2443 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2444 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2445 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2444 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.2445 = private unnamed_addr constant [6 x i8] c"named\00" @.str.2446 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2447 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2448 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2447 = private unnamed_addr constant [30 x i8] c"used .bound on a null pointer\00" +@.str.2448 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2449 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2450 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.2451 = private unnamed_addr constant [7 x i8] c" x i8]\00" +@.str.2450 = private unnamed_addr constant [30 x i8] c"used .types on a null pointer\00" +@.str.2451 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2452 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2453 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2453 = private unnamed_addr constant [30 x i8] c"used .bound 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 [50 x i8] c"has fields Finch can't see (unions or bit fields)\00" -@.str.2456 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2457 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2455 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.2456 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.2457 = private unnamed_addr constant [6 x i8] c"fixed\00" @.str.2458 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2459 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2460 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2461 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2460 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.2461 = private unnamed_addr constant [4 x i8] c"map\00" @.str.2462 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2463 = 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 [12 x i8] c"src/gen.fch\00" @.str.2465 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2466 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2467 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2466 = private unnamed_addr constant [6 x i8] c"named\00" +@.str.2467 = private unnamed_addr constant [7 x i8] c"struct\00" @.str.2468 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2469 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00" -@.str.2470 = private unnamed_addr constant [6 x i8] c"%S.C.\00" -@.str.2471 = private unnamed_addr constant [11 x i8] c" = type { \00" -@.str.2472 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2473 = private unnamed_addr constant [3 x i8] c" }\00" -@.str.2474 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2475 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2469 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2470 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2471 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [34 x i8] c"used .templates 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 [12 x i8] c"src/gen.fch\00" -@.str.2478 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2477 = private unnamed_addr constant [30 x i8] c"used .progs 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 [12 x i8] c"src/gen.fch\00" -@.str.2480 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2481 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2482 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2483 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2484 = private unnamed_addr constant [31 x i8] c"used .tnames 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 [30 x i8] c"used .targs 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 [33 x i8] c"used .instNote on a null pointer\00" -@.str.2489 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2490 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2480 = private unnamed_addr constant [8 x i8] c" takes \00" +@.str.2481 = private unnamed_addr constant [28 x i8] c" type argument(s), but got \00" +@.str.2482 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.2483 = private unnamed_addr constant [1 x i8] c"\00" +@.str.2484 = private unnamed_addr constant [1 x i8] c"\00" +@.str.2485 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.2486 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2487 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" +@.str.2488 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2489 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.2490 = private unnamed_addr constant [5 x i8] c"null\00" @.str.2491 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2492 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2493 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.2494 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2495 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2492 = private unnamed_addr constant [30 x i8] c"this has no type to work out \00" +@.str.2493 = private unnamed_addr constant [3 x i8] c", \00" +@.str.2494 = private unnamed_addr constant [6 x i8] c" from\00" +@.str.2495 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2496 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2497 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2498 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" -@.str.2499 = private unnamed_addr constant [18 x i8] c" (while building \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.2497 = private unnamed_addr constant [17 x i8] c"can't tell what \00" +@.str.2498 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2499 = private unnamed_addr constant [25 x i8] c" is here; write it out: \00" +@.str.2500 = private unnamed_addr constant [11 x i8] c"[int](...)\00" +@.str.2501 = private unnamed_addr constant [5 x i8] c"void\00" @.str.2502 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2503 = private unnamed_addr constant [2 x i8] c")\00" +@.str.2503 = private unnamed_addr constant [29 x i8] c"used .sigs 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 [33 x i8] c"used .instNote on a null pointer\00" +@.str.2505 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2506 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2507 = private unnamed_addr constant [31 x i8] c"used .tnames 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 .targs 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 [33 x i8] c"used .instNote 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 [30 x i8] c"used .progs on a null pointer\00" -@.str.2514 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.2507 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2508 = private unnamed_addr constant [11 x i8] c"argument '\00" +@.str.2509 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2510 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.2511 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2512 = private unnamed_addr constant [2 x i8] c" \00" +@.str.2513 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2514 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" +@.str.2515 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2516 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\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.2519 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2520 = private unnamed_addr constant [32 x i8] c"used .structs 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 .structs on a null pointer\00" -@.str.2524 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2525 = private unnamed_addr constant [12 x i8] c"the struct \00" -@.str.2526 = private unnamed_addr constant [27 x i8] c" contains itself; use ptr[\00" -@.str.2527 = private unnamed_addr constant [8 x i8] c"] or []\00" -@.str.2528 = private unnamed_addr constant [16 x i8] c" for that field\00" -@.str.2529 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2530 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2522 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.2523 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.2524 = private unnamed_addr constant [7 x i8] c" x i8]\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 .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 [32 x i8] c"used .structs 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 [12 x i8] c"src/gen.fch\00" -@.str.2532 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2533 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2532 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2533 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2534 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2535 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" @.str.2536 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2537 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2538 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2539 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.2540 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2541 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2542 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2537 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.2538 = private unnamed_addr constant [7 x i8] c" x i8]\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 .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 [50 x i8] c"has fields Finch can't see (unions or bit fields)\00" @.str.2543 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2544 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" @.str.2545 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @@ -2658,4615 +2660,4845 @@ declare ptr @getenv(ptr) @.str.2553 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" @.str.2554 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2555 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2556 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2557 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2558 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2559 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2560 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2561 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00" -@.str.2562 = private unnamed_addr constant [4 x i8] c"%S.\00" +@.str.2556 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00" +@.str.2557 = private unnamed_addr constant [6 x i8] c"%S.C.\00" +@.str.2558 = private unnamed_addr constant [11 x i8] c" = type { \00" +@.str.2559 = private unnamed_addr constant [3 x i8] c", \00" +@.str.2560 = private unnamed_addr constant [3 x i8] c" }\00" +@.str.2561 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2562 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\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 [2 x i8] c".\00" +@.str.2564 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2565 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2566 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2567 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2568 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" @.str.2569 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2570 = private unnamed_addr constant [11 x i8] c" = type { \00" -@.str.2571 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2572 = private unnamed_addr constant [3 x i8] c" }\00" -@.str.2573 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2574 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.2575 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2576 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.2577 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.2578 = private unnamed_addr constant [2 x i8] c"!\00" +@.str.2570 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2571 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" +@.str.2572 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2573 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" +@.str.2574 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2575 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" +@.str.2576 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2577 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2578 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2579 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2580 = private unnamed_addr constant [17 x i8] c"division by zero\00" -@.str.2581 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.2582 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.2583 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.2584 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.2585 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.2586 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.2587 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.2588 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.2589 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.2590 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.2591 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.2592 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.2593 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.2594 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str.2580 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" +@.str.2581 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2582 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2583 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2584 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2585 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" +@.str.2586 = private unnamed_addr constant [18 x i8] c" (while building \00" +@.str.2587 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2588 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2589 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2590 = private unnamed_addr constant [2 x i8] c")\00" +@.str.2591 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2592 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" +@.str.2593 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2594 = private unnamed_addr constant [31 x i8] c"used .tnames 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 [7 x i8] c"struct\00" +@.str.2596 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" @.str.2597 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2598 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2598 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" @.str.2599 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2600 = private unnamed_addr constant [43 x i8] c"!DIDerivedType(tag: DW_TAG_member, name: \22\00" -@.str.2601 = private unnamed_addr constant [12 x i8] c"\22, scope: !\00" -@.str.2602 = private unnamed_addr constant [10 x i8] c", file: !\00" -@.str.2603 = private unnamed_addr constant [9 x i8] c", line: \00" -@.str.2604 = private unnamed_addr constant [13 x i8] c", baseType: \00" -@.str.2605 = private unnamed_addr constant [9 x i8] c", size: \00" -@.str.2606 = private unnamed_addr constant [11 x i8] c", offset: \00" -@.str.2607 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2608 = private unnamed_addr constant [21 x i8] c"!DIBasicType(name: \22\00" -@.str.2609 = private unnamed_addr constant [10 x i8] c"\22, size: \00" -@.str.2610 = private unnamed_addr constant [13 x i8] c", encoding: \00" -@.str.2611 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2612 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.2613 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.2614 = private unnamed_addr constant [3 x i8] c"T:\00" -@.str.2615 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2616 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" -@.str.2617 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2618 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" +@.str.2600 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.2601 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2602 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2603 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2604 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2605 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2606 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2607 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2608 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2609 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2610 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2611 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2612 = private unnamed_addr constant [12 x i8] c"the struct \00" +@.str.2613 = private unnamed_addr constant [27 x i8] c" contains itself; use ptr[\00" +@.str.2614 = private unnamed_addr constant [8 x i8] c"] or []\00" +@.str.2615 = private unnamed_addr constant [16 x i8] c" for that field\00" +@.str.2616 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2617 = private unnamed_addr constant [32 x i8] c"used .structs 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 [12 x i8] c"src/gen.fch\00" -@.str.2620 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2621 = private unnamed_addr constant [32 x i8] c"used .mdfiles 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 [5 x i8] c"bool\00" -@.str.2624 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.2625 = private unnamed_addr constant [15 x i8] c"DW_ATE_boolean\00" -@.str.2626 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.2627 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.2628 = private unnamed_addr constant [19 x i8] c"DW_ATE_signed_char\00" -@.str.2629 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.2630 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.2631 = private unnamed_addr constant [14 x i8] c"DW_ATE_signed\00" -@.str.2632 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.2633 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.2634 = private unnamed_addr constant [13 x i8] c"DW_ATE_float\00" -@.str.2635 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.2636 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.2637 = private unnamed_addr constant [13 x i8] c"DW_ATE_float\00" -@.str.2638 = private unnamed_addr constant [16 x i8] c"DW_ATE_unsigned\00" -@.str.2639 = private unnamed_addr constant [14 x i8] c"DW_ATE_signed\00" -@.str.2640 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.2620 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2621 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2622 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2623 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2624 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2625 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2626 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.2627 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2628 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2629 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2630 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2631 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2632 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2633 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2634 = private unnamed_addr constant [32 x i8] c"used .structs 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 [12 x i8] c"src/gen.fch\00" +@.str.2637 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2638 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2639 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2640 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" @.str.2641 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2642 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" -@.str.2643 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2644 = private unnamed_addr constant [22 x i8] c"!DIEnumerator(name: \22\00" -@.str.2645 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2646 = private unnamed_addr constant [11 x i8] c"\22, value: \00" +@.str.2642 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2643 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2644 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2645 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2646 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2647 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2648 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2649 = private unnamed_addr constant [55 x i8] c"!DICompositeType(tag: DW_TAG_enumeration_type, name: \22\00" -@.str.2650 = private unnamed_addr constant [11 x i8] c"\22, file: !\00" -@.str.2651 = private unnamed_addr constant [25 x i8] c", size: 32, elements: !{\00" -@.str.2652 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2653 = private unnamed_addr constant [3 x i8] c"})\00" -@.str.2654 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2655 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2656 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" -@.str.2657 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.2658 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2659 = private unnamed_addr constant [52 x i8] c"!DIDerivedType(tag: DW_TAG_pointer_type, baseType: \00" -@.str.2660 = private unnamed_addr constant [12 x i8] c", size: 64)\00" -@.str.2661 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2662 = private unnamed_addr constant [27 x i8] c"used .md 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 [6 x i8] c"fixed\00" -@.str.2665 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2666 = private unnamed_addr constant [20 x i8] c"!DISubrange(count: \00" -@.str.2667 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2668 = private unnamed_addr constant [52 x i8] c"!DICompositeType(tag: DW_TAG_array_type, baseType: \00" -@.str.2669 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2670 = private unnamed_addr constant [9 x i8] c", size: \00" -@.str.2671 = private unnamed_addr constant [16 x i8] c", elements: !{!\00" -@.str.2672 = private unnamed_addr constant [3 x i8] c"})\00" -@.str.2673 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2674 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.2675 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2676 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.2677 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.2678 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.2648 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00" +@.str.2649 = private unnamed_addr constant [4 x i8] c"%S.\00" +@.str.2650 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2651 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2652 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2653 = private unnamed_addr constant [2 x i8] c".\00" +@.str.2654 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2655 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2656 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2657 = private unnamed_addr constant [11 x i8] c" = type { \00" +@.str.2658 = private unnamed_addr constant [3 x i8] c", \00" +@.str.2659 = private unnamed_addr constant [3 x i8] c" }\00" +@.str.2660 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2661 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" +@.str.2662 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2663 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" +@.str.2664 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.2665 = private unnamed_addr constant [2 x i8] c"!\00" +@.str.2666 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2667 = private unnamed_addr constant [17 x i8] c"division by zero\00" +@.str.2668 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.2669 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.2670 = private unnamed_addr constant [3 x i8] c"i8\00" +@.str.2671 = private unnamed_addr constant [3 x i8] c"u8\00" +@.str.2672 = private unnamed_addr constant [4 x i8] c"i16\00" +@.str.2673 = private unnamed_addr constant [4 x i8] c"u16\00" +@.str.2674 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.2675 = private unnamed_addr constant [4 x i8] c"u32\00" +@.str.2676 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.2677 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.2678 = private unnamed_addr constant [4 x i8] c"str\00" @.str.2679 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.2680 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2681 = private unnamed_addr constant [52 x i8] c"!DIDerivedType(tag: DW_TAG_pointer_type, baseType: \00" -@.str.2682 = private unnamed_addr constant [12 x i8] c", size: 64)\00" -@.str.2683 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.2684 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.2685 = private unnamed_addr constant [4 x i8] c"len\00" -@.str.2686 = private unnamed_addr constant [4 x i8] c"cap\00" -@.str.2687 = private unnamed_addr constant [53 x i8] c"!DICompositeType(tag: DW_TAG_structure_type, name: \22\00" -@.str.2688 = private unnamed_addr constant [11 x i8] c"\22, file: !\00" -@.str.2689 = private unnamed_addr constant [38 x i8] c", size: 192, align: 64, elements: !{!\00" -@.str.2690 = private unnamed_addr constant [4 x i8] c", !\00" -@.str.2691 = private unnamed_addr constant [4 x i8] c", !\00" -@.str.2692 = private unnamed_addr constant [3 x i8] c"})\00" -@.str.2693 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2694 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.2695 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2696 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.2697 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.2698 = private unnamed_addr constant [67 x i8] c"!DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64)\00" -@.str.2699 = private unnamed_addr constant [8 x i8] c"entries\00" -@.str.2700 = private unnamed_addr constant [4 x i8] c"len\00" -@.str.2701 = private unnamed_addr constant [5 x i8] c"used\00" -@.str.2702 = private unnamed_addr constant [4 x i8] c"cap\00" -@.str.2703 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.2704 = private unnamed_addr constant [5 x i8] c"icap\00" -@.str.2705 = private unnamed_addr constant [5 x i8] c"adds\00" -@.str.2706 = private unnamed_addr constant [2 x i8] c"!\00" +@.str.2680 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.2681 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str.2682 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2683 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.2684 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2685 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2686 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2687 = private unnamed_addr constant [43 x i8] c"!DIDerivedType(tag: DW_TAG_member, name: \22\00" +@.str.2688 = private unnamed_addr constant [12 x i8] c"\22, scope: !\00" +@.str.2689 = private unnamed_addr constant [10 x i8] c", file: !\00" +@.str.2690 = private unnamed_addr constant [9 x i8] c", line: \00" +@.str.2691 = private unnamed_addr constant [13 x i8] c", baseType: \00" +@.str.2692 = private unnamed_addr constant [9 x i8] c", size: \00" +@.str.2693 = private unnamed_addr constant [11 x i8] c", offset: \00" +@.str.2694 = private unnamed_addr constant [2 x i8] c")\00" +@.str.2695 = private unnamed_addr constant [21 x i8] c"!DIBasicType(name: \22\00" +@.str.2696 = private unnamed_addr constant [10 x i8] c"\22, size: \00" +@.str.2697 = private unnamed_addr constant [13 x i8] c", encoding: \00" +@.str.2698 = private unnamed_addr constant [2 x i8] c")\00" +@.str.2699 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.2700 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.2701 = private unnamed_addr constant [3 x i8] c"T:\00" +@.str.2702 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2703 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" +@.str.2704 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2705 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" +@.str.2706 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2707 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2708 = private unnamed_addr constant [53 x i8] c"!DICompositeType(tag: DW_TAG_structure_type, name: \22\00" -@.str.2709 = private unnamed_addr constant [11 x i8] c"\22, file: !\00" -@.str.2710 = private unnamed_addr constant [37 x i8] c", size: 448, align: 64, elements: !{\00" -@.str.2711 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2712 = private unnamed_addr constant [3 x i8] c"})\00" -@.str.2713 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2714 = private unnamed_addr constant [27 x i8] c"used .md 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 [7 x i8] c"struct\00" -@.str.2717 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2718 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2719 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2720 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2721 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.2722 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2723 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2724 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2725 = private unnamed_addr constant [53 x i8] c"!DICompositeType(tag: DW_TAG_structure_type, name: \22\00" -@.str.2726 = private unnamed_addr constant [11 x i8] c"\22, file: !\00" -@.str.2727 = private unnamed_addr constant [9 x i8] c", size: \00" -@.str.2728 = private unnamed_addr constant [25 x i8] c", align: 8, elements: !{\00" -@.str.2729 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2730 = private unnamed_addr constant [3 x i8] c"})\00" -@.str.2731 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2732 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.2733 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2734 = private unnamed_addr constant [21 x i8] c"!DIBasicType(name: \22\00" -@.str.2735 = private unnamed_addr constant [40 x i8] c"\22, size: 64, encoding: DW_ATE_unsigned)\00" -@.str.2736 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2737 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.2738 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2739 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2740 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" -@.str.2741 = private unnamed_addr constant [3 x i8] c"L:\00" +@.str.2708 = private unnamed_addr constant [32 x i8] c"used .mdfiles on a null pointer\00" +@.str.2709 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2710 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.2711 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.2712 = private unnamed_addr constant [15 x i8] c"DW_ATE_boolean\00" +@.str.2713 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.2714 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.2715 = private unnamed_addr constant [19 x i8] c"DW_ATE_signed_char\00" +@.str.2716 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.2717 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.2718 = private unnamed_addr constant [14 x i8] c"DW_ATE_signed\00" +@.str.2719 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.2720 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.2721 = private unnamed_addr constant [13 x i8] c"DW_ATE_float\00" +@.str.2722 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.2723 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.2724 = private unnamed_addr constant [13 x i8] c"DW_ATE_float\00" +@.str.2725 = private unnamed_addr constant [16 x i8] c"DW_ATE_unsigned\00" +@.str.2726 = private unnamed_addr constant [14 x i8] c"DW_ATE_signed\00" +@.str.2727 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.2728 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2729 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" +@.str.2730 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2731 = private unnamed_addr constant [22 x i8] c"!DIEnumerator(name: \22\00" +@.str.2732 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2733 = private unnamed_addr constant [11 x i8] c"\22, value: \00" +@.str.2734 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2735 = private unnamed_addr constant [2 x i8] c")\00" +@.str.2736 = private unnamed_addr constant [55 x i8] c"!DICompositeType(tag: DW_TAG_enumeration_type, name: \22\00" +@.str.2737 = private unnamed_addr constant [11 x i8] c"\22, file: !\00" +@.str.2738 = private unnamed_addr constant [25 x i8] c", size: 32, elements: !{\00" +@.str.2739 = private unnamed_addr constant [3 x i8] c", \00" +@.str.2740 = private unnamed_addr constant [3 x i8] c"})\00" +@.str.2741 = private unnamed_addr constant [1 x i8] c"\00" @.str.2742 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2743 = private unnamed_addr constant [32 x i8] c"used .dbgLine on a null pointer\00" -@.str.2744 = private unnamed_addr constant [2 x i8] c":\00" +@.str.2743 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" +@.str.2744 = private unnamed_addr constant [4 x i8] c"ptr\00" @.str.2745 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2746 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00" -@.str.2747 = private unnamed_addr constant [2 x i8] c":\00" +@.str.2746 = private unnamed_addr constant [52 x i8] c"!DIDerivedType(tag: DW_TAG_pointer_type, baseType: \00" +@.str.2747 = private unnamed_addr constant [12 x i8] c", size: 64)\00" @.str.2748 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2749 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" +@.str.2749 = private unnamed_addr constant [27 x i8] c"used .md 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 [32 x i8] c"used .mdcache on a null pointer\00" +@.str.2751 = private unnamed_addr constant [6 x i8] c"fixed\00" @.str.2752 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2753 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" -@.str.2754 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2755 = private unnamed_addr constant [19 x i8] c"!DILocation(line: \00" +@.str.2753 = private unnamed_addr constant [20 x i8] c"!DISubrange(count: \00" +@.str.2754 = private unnamed_addr constant [2 x i8] c")\00" +@.str.2755 = private unnamed_addr constant [52 x i8] c"!DICompositeType(tag: DW_TAG_array_type, baseType: \00" @.str.2756 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2757 = private unnamed_addr constant [32 x i8] c"used .dbgLine on a null pointer\00" -@.str.2758 = private unnamed_addr constant [11 x i8] c", column: \00" -@.str.2759 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2760 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00" -@.str.2761 = private unnamed_addr constant [11 x i8] c", scope: !\00" +@.str.2757 = private unnamed_addr constant [9 x i8] c", size: \00" +@.str.2758 = private unnamed_addr constant [16 x i8] c", elements: !{!\00" +@.str.2759 = private unnamed_addr constant [3 x i8] c"})\00" +@.str.2760 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2761 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" @.str.2762 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2763 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.2764 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2765 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2766 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" +@.str.2763 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.2764 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.2765 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.2766 = private unnamed_addr constant [6 x i8] c"array\00" @.str.2767 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2768 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.2769 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.2770 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2771 = private unnamed_addr constant [32 x i8] c"used .mdfiles on a null pointer\00" -@.str.2772 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2773 = private unnamed_addr constant [28 x i8] c"!DISubroutineType(types: !{\00" -@.str.2774 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2775 = private unnamed_addr constant [3 x i8] c"})\00" -@.str.2776 = private unnamed_addr constant [31 x i8] c"distinct !DISubprogram(name: \22\00" -@.str.2777 = private unnamed_addr constant [18 x i8] c"\22, linkageName: \22\00" -@.str.2778 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2779 = private unnamed_addr constant [12 x i8] c"\22, scope: !\00" -@.str.2780 = private unnamed_addr constant [10 x i8] c", file: !\00" -@.str.2781 = private unnamed_addr constant [9 x i8] c", line: \00" -@.str.2782 = private unnamed_addr constant [10 x i8] c", type: !\00" -@.str.2783 = private unnamed_addr constant [14 x i8] c", scopeLine: \00" -@.str.2784 = private unnamed_addr constant [88 x i8] c", flags: DIFlagPrototyped, spFlags: DISPFlagDefinition | DISPFlagLocalToUnit, unit: !0)\00" -@.str.2785 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2786 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" -@.str.2787 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2788 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.2789 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2790 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2791 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00" -@.str.2792 = private unnamed_addr constant [8 x i8] c", arg: \00" -@.str.2793 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2794 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00" -@.str.2795 = private unnamed_addr constant [25 x i8] c"!DILocalVariable(name: \22\00" -@.str.2796 = private unnamed_addr constant [12 x i8] c"\22, scope: !\00" -@.str.2797 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2798 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.2799 = private unnamed_addr constant [10 x i8] c", file: !\00" +@.str.2768 = private unnamed_addr constant [52 x i8] c"!DIDerivedType(tag: DW_TAG_pointer_type, baseType: \00" +@.str.2769 = private unnamed_addr constant [12 x i8] c", size: 64)\00" +@.str.2770 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.2771 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.2772 = private unnamed_addr constant [4 x i8] c"len\00" +@.str.2773 = private unnamed_addr constant [4 x i8] c"cap\00" +@.str.2774 = private unnamed_addr constant [53 x i8] c"!DICompositeType(tag: DW_TAG_structure_type, name: \22\00" +@.str.2775 = private unnamed_addr constant [11 x i8] c"\22, file: !\00" +@.str.2776 = private unnamed_addr constant [38 x i8] c", size: 192, align: 64, elements: !{!\00" +@.str.2777 = private unnamed_addr constant [4 x i8] c", !\00" +@.str.2778 = private unnamed_addr constant [4 x i8] c", !\00" +@.str.2779 = private unnamed_addr constant [3 x i8] c"})\00" +@.str.2780 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2781 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" +@.str.2782 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2783 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.2784 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.2785 = private unnamed_addr constant [67 x i8] c"!DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64)\00" +@.str.2786 = private unnamed_addr constant [8 x i8] c"entries\00" +@.str.2787 = private unnamed_addr constant [4 x i8] c"len\00" +@.str.2788 = private unnamed_addr constant [5 x i8] c"used\00" +@.str.2789 = private unnamed_addr constant [4 x i8] c"cap\00" +@.str.2790 = private unnamed_addr constant [6 x i8] c"index\00" +@.str.2791 = private unnamed_addr constant [5 x i8] c"icap\00" +@.str.2792 = private unnamed_addr constant [5 x i8] c"adds\00" +@.str.2793 = private unnamed_addr constant [2 x i8] c"!\00" +@.str.2794 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2795 = private unnamed_addr constant [53 x i8] c"!DICompositeType(tag: DW_TAG_structure_type, name: \22\00" +@.str.2796 = private unnamed_addr constant [11 x i8] c"\22, file: !\00" +@.str.2797 = private unnamed_addr constant [37 x i8] c", size: 448, align: 64, elements: !{\00" +@.str.2798 = private unnamed_addr constant [3 x i8] c", \00" +@.str.2799 = private unnamed_addr constant [3 x i8] c"})\00" @.str.2800 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2801 = private unnamed_addr constant [32 x i8] c"used .mdfiles on a null pointer\00" +@.str.2801 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" @.str.2802 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2803 = private unnamed_addr constant [9 x i8] c", line: \00" -@.str.2804 = private unnamed_addr constant [10 x i8] c", type: !\00" -@.str.2805 = private unnamed_addr constant [2 x i8] c")\00" +@.str.2803 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.2804 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2805 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" @.str.2806 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2807 = private unnamed_addr constant [32 x i8] c"used .dbgLine on a null pointer\00" -@.str.2808 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2809 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00" -@.str.2810 = private unnamed_addr constant [42 x i8] c"call void @llvm.dbg.declare(metadata ptr \00" -@.str.2811 = private unnamed_addr constant [13 x i8] c", metadata !\00" -@.str.2812 = private unnamed_addr constant [28 x i8] c", metadata !DIExpression())\00" -@.str.2813 = private unnamed_addr constant [21 x i8] c"!llvm.dbg.cu = !{!0}\00" -@.str.2814 = private unnamed_addr constant [31 x i8] c"!llvm.module.flags = !{!1, !2}\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 [2 x i8] c"!\00" -@.str.2818 = private unnamed_addr constant [4 x i8] c" = \00" -@.str.2819 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2820 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.2821 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2822 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.2823 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.2824 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2825 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.2807 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2808 = private unnamed_addr constant [2 x i8] c"!\00" +@.str.2809 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2810 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2811 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2812 = private unnamed_addr constant [53 x i8] c"!DICompositeType(tag: DW_TAG_structure_type, name: \22\00" +@.str.2813 = private unnamed_addr constant [11 x i8] c"\22, file: !\00" +@.str.2814 = private unnamed_addr constant [9 x i8] c", size: \00" +@.str.2815 = private unnamed_addr constant [25 x i8] c", align: 8, elements: !{\00" +@.str.2816 = private unnamed_addr constant [3 x i8] c", \00" +@.str.2817 = private unnamed_addr constant [3 x i8] c"})\00" +@.str.2818 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2819 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" +@.str.2820 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2821 = private unnamed_addr constant [21 x i8] c"!DIBasicType(name: \22\00" +@.str.2822 = private unnamed_addr constant [40 x i8] c"\22, size: 64, encoding: DW_ATE_unsigned)\00" +@.str.2823 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2824 = private unnamed_addr constant [27 x i8] c"used .md 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 [12 x i8] c"src/gen.fch\00" -@.str.2827 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2828 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2827 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" +@.str.2828 = private unnamed_addr constant [3 x i8] c"L:\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 .module 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.2830 = private unnamed_addr constant [32 x i8] c"used .dbgLine on a null pointer\00" +@.str.2831 = private unnamed_addr constant [2 x i8] c":\00" +@.str.2832 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2833 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00" +@.str.2834 = private unnamed_addr constant [2 x i8] c":\00" @.str.2835 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2836 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" +@.str.2836 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" @.str.2837 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2838 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2838 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" @.str.2839 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2840 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" -@.str.2841 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2842 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2843 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" -@.str.2844 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2845 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.2846 = private unnamed_addr constant [18 x i8] c" (while building \00" -@.str.2847 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2848 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.2849 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2850 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2851 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" +@.str.2840 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" +@.str.2841 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2842 = private unnamed_addr constant [19 x i8] c"!DILocation(line: \00" +@.str.2843 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2844 = private unnamed_addr constant [32 x i8] c"used .dbgLine on a null pointer\00" +@.str.2845 = private unnamed_addr constant [11 x i8] c", column: \00" +@.str.2846 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2847 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00" +@.str.2848 = private unnamed_addr constant [11 x i8] c", scope: !\00" +@.str.2849 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2850 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" +@.str.2851 = private unnamed_addr constant [2 x i8] c")\00" @.str.2852 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2853 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.2853 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" @.str.2854 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2855 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.2856 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2856 = private unnamed_addr constant [5 x i8] c"null\00" @.str.2857 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2858 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2858 = private unnamed_addr constant [32 x i8] c"used .mdfiles on a null pointer\00" @.str.2859 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2860 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2861 = private unnamed_addr constant [29 x i8] c"used .body 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 [32 x i8] c"used .allocas 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 [28 x i8] c"used .tmp 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 [29 x i8] c"used .term 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 .nvars 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.2860 = private unnamed_addr constant [28 x i8] c"!DISubroutineType(types: !{\00" +@.str.2861 = private unnamed_addr constant [3 x i8] c", \00" +@.str.2862 = private unnamed_addr constant [3 x i8] c"})\00" +@.str.2863 = private unnamed_addr constant [31 x i8] c"distinct !DISubprogram(name: \22\00" +@.str.2864 = private unnamed_addr constant [18 x i8] c"\22, linkageName: \22\00" +@.str.2865 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2866 = private unnamed_addr constant [12 x i8] c"\22, scope: !\00" +@.str.2867 = private unnamed_addr constant [10 x i8] c", file: !\00" +@.str.2868 = private unnamed_addr constant [9 x i8] c", line: \00" +@.str.2869 = private unnamed_addr constant [10 x i8] c", type: !\00" +@.str.2870 = private unnamed_addr constant [14 x i8] c", scopeLine: \00" +@.str.2871 = private unnamed_addr constant [88 x i8] c", flags: DIFlagPrototyped, spFlags: DISPFlagDefinition | DISPFlagLocalToUnit, unit: !0)\00" @.str.2872 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2873 = private unnamed_addr constant [30 x i8] c"used .debug 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 [33 x i8] c"used .dbgScope 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 .dbgLine 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 [31 x i8] c"used .dbgCol on a null pointer\00" +@.str.2876 = private unnamed_addr constant [1 x i8] c"\00" +@.str.2877 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2878 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00" +@.str.2879 = private unnamed_addr constant [8 x i8] c", arg: \00" @.str.2880 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2881 = private unnamed_addr constant [32 x i8] c"used .deferOn 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 [32 x i8] c"used .inDefer on a null pointer\00" +@.str.2881 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00" +@.str.2882 = private unnamed_addr constant [25 x i8] c"!DILocalVariable(name: \22\00" +@.str.2883 = private unnamed_addr constant [12 x i8] c"\22, scope: !\00" @.str.2884 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2885 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\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 [10 x i8] c"ptr %self\00" -@.str.2889 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.2890 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2891 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.2892 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.2885 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" +@.str.2886 = private unnamed_addr constant [10 x i8] c", file: !\00" +@.str.2887 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2888 = private unnamed_addr constant [32 x i8] c"used .mdfiles on a null pointer\00" +@.str.2889 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2890 = private unnamed_addr constant [9 x i8] c", line: \00" +@.str.2891 = private unnamed_addr constant [10 x i8] c", type: !\00" +@.str.2892 = private unnamed_addr constant [2 x i8] c")\00" @.str.2893 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2894 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2894 = private unnamed_addr constant [32 x i8] c"used .dbgLine 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 [28 x i8] c"used .cur on a null pointer\00" -@.str.2897 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2898 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2899 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.2896 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00" +@.str.2897 = private unnamed_addr constant [42 x i8] c"call void @llvm.dbg.declare(metadata ptr \00" +@.str.2898 = private unnamed_addr constant [13 x i8] c", metadata !\00" +@.str.2899 = private unnamed_addr constant [28 x i8] c", metadata !DIExpression())\00" +@.str.2900 = private unnamed_addr constant [21 x i8] c"!llvm.dbg.cu = !{!0}\00" +@.str.2901 = private unnamed_addr constant [31 x i8] c"!llvm.module.flags = !{!1, !2}\00" @.str.2902 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2903 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" -@.str.2904 = private unnamed_addr constant [5 x i8] c"self\00" -@.str.2905 = private unnamed_addr constant [6 x i8] c"%self\00" +@.str.2903 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" +@.str.2904 = private unnamed_addr constant [2 x i8] c"!\00" +@.str.2905 = private unnamed_addr constant [4 x i8] c" = \00" @.str.2906 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2907 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2907 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" @.str.2908 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2909 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.2910 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2911 = private unnamed_addr constant [4 x i8] c" %p\00" -@.str.2912 = private unnamed_addr constant [3 x i8] c"%p\00" +@.str.2909 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.2910 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.2911 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2912 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" @.str.2913 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2914 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.2915 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.2917 = private unnamed_addr constant [28 x i8] c"used .cur 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 [28 x i8] c"used .cur on a null pointer\00" +@.str.2919 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" @.str.2920 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2921 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00" +@.str.2921 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" @.str.2922 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2923 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2924 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.2925 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2923 = private unnamed_addr constant [31 x i8] c"used .tnames 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 [28 x i8] c"used .cur on a null pointer\00" @.str.2926 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2927 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00" -@.str.2928 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2927 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" +@.str.2928 = private unnamed_addr constant [1 x i8] c"\00" @.str.2929 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2930 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.2930 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" @.str.2931 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2932 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.2933 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.2934 = private unnamed_addr constant [11 x i8] c"function '\00" -@.str.2935 = private unnamed_addr constant [39 x i8] c"' can reach its end without returning \00" -@.str.2936 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2937 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.2938 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2939 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.2940 = private unnamed_addr constant [5 x i8] c"ret \00" +@.str.2933 = private unnamed_addr constant [18 x i8] c" (while building \00" +@.str.2934 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2935 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2936 = private unnamed_addr constant [2 x i8] c")\00" +@.str.2937 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2938 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" +@.str.2939 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2940 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" @.str.2941 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2942 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.2943 = private unnamed_addr constant [54 x i8] c" { i1 true, i8 0, { ptr, i64, i64 } zeroinitializer }\00" -@.str.2944 = private unnamed_addr constant [9 x i8] c"ret void\00" -@.str.2945 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2946 = 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 [12 x i8] c"src/gen.fch\00" +@.str.2945 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2946 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2947 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2948 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" +@.str.2948 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" @.str.2949 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2950 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.2951 = private unnamed_addr constant [17 x i8] c"define internal \00" -@.str.2952 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2953 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.2954 = private unnamed_addr constant [2 x i8] c" \00" +@.str.2950 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" +@.str.2951 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2952 = private unnamed_addr constant [28 x i8] c"used .tmp 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 [29 x i8] c"used .term on a null pointer\00" @.str.2955 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2956 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.2957 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.2958 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2959 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2960 = private unnamed_addr constant [11 x i8] c" {\0Aentry:\0A\00" +@.str.2956 = private unnamed_addr constant [30 x i8] c"used .nvars on a null pointer\00" +@.str.2957 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2958 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" +@.str.2959 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2960 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" @.str.2961 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2962 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" -@.str.2963 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.2964 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.2962 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" +@.str.2963 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2964 = private unnamed_addr constant [32 x i8] c"used .dbgLine on a null pointer\00" @.str.2965 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2966 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" -@.str.2967 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.2968 = private unnamed_addr constant [4 x i8] c"\0A}\0A\00" +@.str.2966 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00" +@.str.2967 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2968 = private unnamed_addr constant [32 x i8] c"used .deferOn on a null pointer\00" @.str.2969 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2970 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.2971 = private unnamed_addr constant [67 x i8] c"this code can never run (it comes after return, break or continue)\00" -@.str.2972 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2973 = private unnamed_addr constant [32 x i8] c"used .dbgLine on a null pointer\00" -@.str.2974 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2975 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00" -@.str.2976 = private unnamed_addr constant [6 x i8] c"block\00" -@.str.2977 = private unnamed_addr constant [5 x i8] c"decl\00" -@.str.2978 = private unnamed_addr constant [7 x i8] c"assign\00" -@.str.2979 = private unnamed_addr constant [5 x i8] c"expr\00" +@.str.2970 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" +@.str.2971 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2972 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.2973 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2974 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2975 = private unnamed_addr constant [10 x i8] c"ptr %self\00" +@.str.2976 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.2977 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2978 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2979 = private unnamed_addr constant [5 x i8] c"enum\00" @.str.2980 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2981 = private unnamed_addr constant [3 x i8] c"or\00" +@.str.2981 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" @.str.2982 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2983 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2984 = private unnamed_addr constant [6 x i8] c"match\00" -@.str.2985 = private unnamed_addr constant [3 x i8] c"if\00" -@.str.2986 = private unnamed_addr constant [6 x i8] c"while\00" -@.str.2987 = private unnamed_addr constant [4 x i8] c"for\00" -@.str.2988 = private unnamed_addr constant [5 x i8] c"each\00" -@.str.2989 = private unnamed_addr constant [7 x i8] c"return\00" -@.str.2990 = private unnamed_addr constant [6 x i8] c"defer\00" -@.str.2991 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2992 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" -@.str.2993 = private unnamed_addr constant [34 x i8] c"defer inside defer is not allowed\00" -@.str.2994 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2995 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2996 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [12 x i8] c"src/gen.fch\00" +@.str.2983 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2984 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2985 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.2986 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2987 = private unnamed_addr constant [5 x i8] c"self\00" +@.str.2988 = private unnamed_addr constant [6 x i8] c"%self\00" +@.str.2989 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2990 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" +@.str.2991 = private unnamed_addr constant [5 x i8] c"self\00" +@.str.2992 = private unnamed_addr constant [6 x i8] c"%self\00" +@.str.2993 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2994 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2995 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2996 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2997 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2998 = private unnamed_addr constant [4 x i8] c" %p\00" +@.str.2999 = private unnamed_addr constant [3 x i8] c"%p\00" @.str.3000 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3001 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.3001 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" @.str.3002 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.3003 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3004 = private unnamed_addr constant [30 x i8] c"used .nvars on a null pointer\00" -@.str.3005 = private unnamed_addr constant [6 x i8] c"break\00" -@.str.3006 = private unnamed_addr constant [9 x i8] c"continue\00" +@.str.3004 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00" +@.str.3005 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3006 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" @.str.3007 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3008 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" -@.str.3009 = private unnamed_addr constant [28 x i8] c" can't be used inside defer\00" +@.str.3008 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00" +@.str.3009 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.3010 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3011 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3012 = private unnamed_addr constant [32 x i8] c" can only be used inside a loop\00" +@.str.3011 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3012 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.3013 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3014 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" +@.str.3014 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" @.str.3015 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3016 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3017 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3018 = private unnamed_addr constant [6 x i8] c"break\00" -@.str.3019 = private unnamed_addr constant [19 x i8] c"unknown statement \00" -@.str.3020 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3021 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3022 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3023 = private unnamed_addr constant [47 x i8] c"this gives back nothing, so it can't be stored\00" -@.str.3024 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3025 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3026 = private unnamed_addr constant [35 x i8] c"null needs a type, like: ptr[int] \00" -@.str.3027 = private unnamed_addr constant [8 x i8] c" = null\00" -@.str.3028 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.3029 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3030 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3031 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.3032 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.3033 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3034 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\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 [30 x i8] c"used .progs on a null pointer\00" -@.str.3038 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3016 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3017 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00" +@.str.3018 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3019 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3020 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.3021 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3022 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3023 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3024 = private unnamed_addr constant [11 x i8] c"function '\00" +@.str.3025 = private unnamed_addr constant [39 x i8] c"' can reach its end without returning \00" +@.str.3026 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3027 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3028 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3029 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3030 = private unnamed_addr constant [5 x i8] c"ret \00" +@.str.3031 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3032 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3033 = private unnamed_addr constant [54 x i8] c" { i1 true, i8 0, { ptr, i64, i64 } zeroinitializer }\00" +@.str.3034 = private unnamed_addr constant [9 x i8] c"ret void\00" +@.str.3035 = private unnamed_addr constant [1 x i8] c"\00" +@.str.3036 = private unnamed_addr constant [8 x i8] c" !dbg !\00" +@.str.3037 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3038 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" @.str.3039 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3040 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3041 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.3042 = private unnamed_addr constant [29 x i8] c"there is no variable named '\00" -@.str.3043 = private unnamed_addr constant [19 x i8] c"' (create it with \00" -@.str.3044 = private unnamed_addr constant [9 x i8] c" := ...)\00" -@.str.3045 = private unnamed_addr constant [20 x i8] c"the loop variable '\00" -@.str.3046 = private unnamed_addr constant [19 x i8] c"' can't be changed\00" -@.str.3047 = private unnamed_addr constant [10 x i8] c"the value\00" -@.str.3048 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.3049 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.3050 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.3051 = private unnamed_addr constant [2 x i8] c"=\00" -@.str.3052 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3053 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3054 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3040 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.3041 = private unnamed_addr constant [17 x i8] c"define internal \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 [2 x i8] c" \00" +@.str.3045 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3046 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3047 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.3048 = private unnamed_addr constant [3 x i8] c", \00" +@.str.3049 = private unnamed_addr constant [2 x i8] c")\00" +@.str.3050 = private unnamed_addr constant [11 x i8] c" {\0Aentry:\0A\00" +@.str.3051 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3052 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" +@.str.3053 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.3054 = private unnamed_addr constant [2 x i8] c"\0A\00" @.str.3055 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3056 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3057 = private unnamed_addr constant [12 x i8] c"a condition\00" -@.str.3058 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3059 = private unnamed_addr constant [5 x i8] c"then\00" -@.str.3060 = private unnamed_addr constant [5 x i8] c"else\00" -@.str.3061 = private unnamed_addr constant [6 x i8] c"endif\00" +@.str.3056 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" +@.str.3057 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.3058 = private unnamed_addr constant [4 x i8] c"\0A}\0A\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 [67 x i8] c"this code can never run (it comes after return, break or continue)\00" @.str.3062 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3063 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3064 = private unnamed_addr constant [29 x i8] c"used .term 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 [29 x i8] c"used .term on a null pointer\00" -@.str.3068 = private unnamed_addr constant [11 x i8] c"while.cond\00" -@.str.3069 = private unnamed_addr constant [11 x i8] c"while.body\00" -@.str.3070 = private unnamed_addr constant [10 x i8] c"while.end\00" -@.str.3071 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3072 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.3063 = private unnamed_addr constant [32 x i8] c"used .dbgLine on a null pointer\00" +@.str.3064 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3065 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00" +@.str.3066 = private unnamed_addr constant [6 x i8] c"block\00" +@.str.3067 = private unnamed_addr constant [5 x i8] c"decl\00" +@.str.3068 = private unnamed_addr constant [7 x i8] c"assign\00" +@.str.3069 = private unnamed_addr constant [5 x i8] c"expr\00" +@.str.3070 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3071 = private unnamed_addr constant [3 x i8] c"or\00" +@.str.3072 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.3073 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3074 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.3075 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3076 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3077 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3078 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3079 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3080 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3074 = private unnamed_addr constant [6 x i8] c"match\00" +@.str.3075 = private unnamed_addr constant [3 x i8] c"if\00" +@.str.3076 = private unnamed_addr constant [6 x i8] c"while\00" +@.str.3077 = private unnamed_addr constant [4 x i8] c"for\00" +@.str.3078 = private unnamed_addr constant [5 x i8] c"each\00" +@.str.3079 = private unnamed_addr constant [7 x i8] c"return\00" +@.str.3080 = private unnamed_addr constant [6 x i8] c"defer\00" @.str.3081 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3082 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3083 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" +@.str.3082 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" +@.str.3083 = private unnamed_addr constant [34 x i8] c"defer inside defer is not allowed\00" @.str.3084 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3085 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.3086 = private unnamed_addr constant [6 x i8] c"break\00" -@.str.3087 = private unnamed_addr constant [6 x i8] c"while\00" -@.str.3088 = private unnamed_addr constant [4 x i8] c"for\00" -@.str.3089 = private unnamed_addr constant [5 x i8] c"each\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.3085 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.3086 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3087 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.3088 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3089 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3090 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.3091 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.3092 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3093 = private unnamed_addr constant [21 x i8] c"the start of a range\00" +@.str.3093 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" @.str.3094 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3095 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.3095 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.3096 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3097 = private unnamed_addr constant [19 x i8] c"the end of a range\00" -@.str.3098 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.3099 = private unnamed_addr constant [9 x i8] c"for.cond\00" -@.str.3100 = private unnamed_addr constant [9 x i8] c"for.body\00" -@.str.3101 = private unnamed_addr constant [9 x i8] c"for.step\00" -@.str.3102 = private unnamed_addr constant [8 x i8] c"for.end\00" -@.str.3103 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3104 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.3105 = private unnamed_addr constant [3 x i8] c", \00" +@.str.3097 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.3098 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3099 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3100 = private unnamed_addr constant [30 x i8] c"used .nvars on a null pointer\00" +@.str.3101 = private unnamed_addr constant [6 x i8] c"break\00" +@.str.3102 = private unnamed_addr constant [9 x i8] c"continue\00" +@.str.3103 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3104 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" +@.str.3105 = private unnamed_addr constant [28 x i8] c" can't be used inside defer\00" @.str.3106 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.3107 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3108 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3109 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3110 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3108 = private unnamed_addr constant [32 x i8] c" can only be used inside a loop\00" +@.str.3109 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3110 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" @.str.3111 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.3112 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" @.str.3113 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3114 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.3115 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3116 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3117 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.3118 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.3119 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3120 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3114 = private unnamed_addr constant [6 x i8] c"break\00" +@.str.3115 = private unnamed_addr constant [19 x i8] c"unknown statement \00" +@.str.3116 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3117 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3118 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3119 = private unnamed_addr constant [47 x i8] c"this gives back nothing, so it can't be stored\00" +@.str.3120 = private unnamed_addr constant [5 x i8] c"null\00" @.str.3121 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3122 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3123 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3124 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3125 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.3126 = private unnamed_addr constant [1 x i8] c"\00" -@.str.3127 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3128 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3129 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3130 = private unnamed_addr constant [15 x i8] c", i32 0, i32 6\00" -@.str.3131 = private unnamed_addr constant [9 x i8] c"map.cond\00" -@.str.3132 = private unnamed_addr constant [10 x i8] c"map.check\00" -@.str.3133 = private unnamed_addr constant [9 x i8] c"map.body\00" -@.str.3134 = private unnamed_addr constant [9 x i8] c"map.step\00" -@.str.3135 = private unnamed_addr constant [8 x i8] c"map.end\00" -@.str.3136 = private unnamed_addr constant [12 x i8] c"map.changed\00" -@.str.3137 = private unnamed_addr constant [9 x i8] c"map.same\00" -@.str.3138 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3139 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3140 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3141 = private unnamed_addr constant [15 x i8] c", i32 0, i32 6\00" -@.str.3142 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00" -@.str.3143 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3144 = private unnamed_addr constant [34 x i8] c"call void @finch_map_changed(ptr \00" -@.str.3145 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3146 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.3147 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3148 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3149 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3150 = private unnamed_addr constant [12 x i8] c"unreachable\00" +@.str.3122 = private unnamed_addr constant [35 x i8] c"null needs a type, like: ptr[int] \00" +@.str.3123 = private unnamed_addr constant [8 x i8] c" = null\00" +@.str.3124 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.3125 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3126 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3127 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.3128 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.3129 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3130 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.3131 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3132 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3133 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.3134 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3135 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3136 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3137 = private unnamed_addr constant [4 x i8] c"var\00" +@.str.3138 = private unnamed_addr constant [29 x i8] c"there is no variable named '\00" +@.str.3139 = private unnamed_addr constant [19 x i8] c"' (create it with \00" +@.str.3140 = private unnamed_addr constant [9 x i8] c" := ...)\00" +@.str.3141 = private unnamed_addr constant [20 x i8] c"the loop variable '\00" +@.str.3142 = private unnamed_addr constant [19 x i8] c"' can't be changed\00" +@.str.3143 = private unnamed_addr constant [10 x i8] c"the value\00" +@.str.3144 = private unnamed_addr constant [4 x i8] c"var\00" +@.str.3145 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.3146 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.3147 = private unnamed_addr constant [2 x i8] c"=\00" +@.str.3148 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3149 = private unnamed_addr constant [4 x i8] c"var\00" +@.str.3150 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.3151 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3152 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3153 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3154 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3155 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3156 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3157 = private unnamed_addr constant [15 x i8] c", i32 0, i32 2\00" -@.str.3158 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.3159 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3160 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3161 = private unnamed_addr constant [13 x i8] c"icmp eq i64 \00" -@.str.3162 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.3163 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3164 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" +@.str.3152 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3153 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" +@.str.3154 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3155 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3156 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3157 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" +@.str.3158 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3159 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.3160 = private unnamed_addr constant [12 x i8] c"a condition\00" +@.str.3161 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3162 = private unnamed_addr constant [5 x i8] c"then\00" +@.str.3163 = private unnamed_addr constant [5 x i8] c"else\00" +@.str.3164 = private unnamed_addr constant [6 x i8] c"endif\00" @.str.3165 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3166 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3167 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3166 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3167 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" @.str.3168 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3169 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3170 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3171 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.3172 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3173 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3174 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.3175 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str.3169 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3170 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.3171 = private unnamed_addr constant [11 x i8] c"while.cond\00" +@.str.3172 = private unnamed_addr constant [11 x i8] c"while.body\00" +@.str.3173 = private unnamed_addr constant [10 x i8] c"while.end\00" +@.str.3174 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3175 = private unnamed_addr constant [5 x i8] c"bool\00" @.str.3176 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3177 = private unnamed_addr constant [1 x i8] c"\00" -@.str.3178 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3179 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.3180 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.3181 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3182 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3183 = private unnamed_addr constant [56 x i8] c"for ... in needs an array, a str or a map, but this is \00" -@.str.3184 = private unnamed_addr constant [37 x i8] c" (for a range of numbers write 0..n)\00" -@.str.3185 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.3186 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.3177 = private unnamed_addr constant [5 x i8] c"true\00" +@.str.3178 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3179 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3180 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" +@.str.3181 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3182 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.3183 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3184 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" +@.str.3185 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3186 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.3187 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3188 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3188 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" @.str.3189 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3190 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3191 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3192 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.3193 = private unnamed_addr constant [10 x i8] c"each.cond\00" -@.str.3194 = private unnamed_addr constant [10 x i8] c"each.body\00" -@.str.3195 = private unnamed_addr constant [10 x i8] c"each.step\00" -@.str.3196 = private unnamed_addr constant [9 x i8] c"each.end\00" -@.str.3197 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3198 = private unnamed_addr constant [47 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr \00" -@.str.3199 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" -@.str.3200 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3201 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.3202 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3203 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.3204 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3205 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3206 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3207 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3208 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3209 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3210 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3211 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.3212 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3190 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" +@.str.3191 = private unnamed_addr constant [6 x i8] c"break\00" +@.str.3192 = private unnamed_addr constant [6 x i8] c"while\00" +@.str.3193 = private unnamed_addr constant [4 x i8] c"for\00" +@.str.3194 = private unnamed_addr constant [5 x i8] c"each\00" +@.str.3195 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3196 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.3197 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3198 = private unnamed_addr constant [21 x i8] c"the start of a range\00" +@.str.3199 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3200 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.3201 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3202 = private unnamed_addr constant [19 x i8] c"the end of a range\00" +@.str.3203 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.3204 = private unnamed_addr constant [9 x i8] c"for.cond\00" +@.str.3205 = private unnamed_addr constant [9 x i8] c"for.body\00" +@.str.3206 = private unnamed_addr constant [9 x i8] c"for.step\00" +@.str.3207 = private unnamed_addr constant [8 x i8] c"for.end\00" +@.str.3208 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3209 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" +@.str.3210 = private unnamed_addr constant [3 x i8] c", \00" +@.str.3211 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3212 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" @.str.3213 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3214 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" +@.str.3214 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" @.str.3215 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3216 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.3217 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3218 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3219 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.3220 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.3221 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3222 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" -@.str.3223 = private unnamed_addr constant [34 x i8] c"return can't be used inside defer\00" -@.str.3224 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3225 = private unnamed_addr constant [5 x i8] c"call\00" +@.str.3216 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" +@.str.3217 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3218 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3219 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" +@.str.3220 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3221 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" +@.str.3222 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3223 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3224 = private unnamed_addr constant [9 x i8] c"add i64 \00" +@.str.3225 = private unnamed_addr constant [4 x i8] c", 1\00" @.str.3226 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3227 = private unnamed_addr constant [6 x i8] c"error\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"src/gen.fch\00" @.str.3229 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3230 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3231 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.3232 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3233 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3234 = private unnamed_addr constant [5 x i8] c"void\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 [2 x i8] c"!\00" -@.str.3238 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.3239 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3240 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3241 = private unnamed_addr constant [65 x i8] c"' can't fail, so it can't return an error (make it fallible: -> \00" -@.str.3242 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3243 = private unnamed_addr constant [6 x i8] c"error\00" -@.str.3244 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3245 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3246 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3247 = private unnamed_addr constant [18 x i8] c"the error message\00" -@.str.3248 = private unnamed_addr constant [5 x i8] c"ret \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 [2 x i8] c" \00" -@.str.3252 = private unnamed_addr constant [13 x i8] c"insertvalue \00" -@.str.3253 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3254 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3255 = private unnamed_addr constant [37 x i8] c" zeroinitializer, { ptr, i64, i64 } \00" -@.str.3256 = private unnamed_addr constant [4 x i8] c", 2\00" -@.str.3257 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3258 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3259 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3260 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3261 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3262 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3263 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.3264 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3265 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3266 = private unnamed_addr constant [47 x i8] c"' doesn't return a value (it has no '-> type')\00" -@.str.3267 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3268 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3269 = private unnamed_addr constant [5 x i8] c"ret \00" +@.str.3230 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3231 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3232 = private unnamed_addr constant [2 x i8] c"0\00" +@.str.3233 = private unnamed_addr constant [1 x i8] c"\00" +@.str.3234 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3235 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.3236 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.3237 = private unnamed_addr constant [15 x i8] c", i32 0, i32 6\00" +@.str.3238 = private unnamed_addr constant [9 x i8] c"map.cond\00" +@.str.3239 = private unnamed_addr constant [10 x i8] c"map.check\00" +@.str.3240 = private unnamed_addr constant [9 x i8] c"map.body\00" +@.str.3241 = private unnamed_addr constant [9 x i8] c"map.step\00" +@.str.3242 = private unnamed_addr constant [8 x i8] c"map.end\00" +@.str.3243 = private unnamed_addr constant [12 x i8] c"map.changed\00" +@.str.3244 = private unnamed_addr constant [9 x i8] c"map.same\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 6\00" +@.str.3249 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00" +@.str.3250 = private unnamed_addr constant [3 x i8] c", \00" +@.str.3251 = private unnamed_addr constant [34 x i8] c"call void @finch_map_changed(ptr \00" +@.str.3252 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3253 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" +@.str.3254 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3255 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.3256 = private unnamed_addr constant [2 x i8] c")\00" +@.str.3257 = private unnamed_addr constant [12 x i8] c"unreachable\00" +@.str.3258 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3259 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.3260 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3261 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3262 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.3263 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.3264 = private unnamed_addr constant [15 x i8] c", i32 0, i32 2\00" +@.str.3265 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" +@.str.3266 = private unnamed_addr constant [3 x i8] c", \00" +@.str.3267 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3268 = private unnamed_addr constant [13 x i8] c"icmp eq i64 \00" +@.str.3269 = private unnamed_addr constant [4 x i8] c", 0\00" @.str.3270 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3271 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3272 = private unnamed_addr constant [54 x i8] c" { i1 true, i8 0, { ptr, i64, i64 } zeroinitializer }\00" -@.str.3273 = private unnamed_addr constant [9 x i8] c"ret void\00" +@.str.3271 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" +@.str.3272 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3273 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" @.str.3274 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3275 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3276 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.3275 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" +@.str.3276 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.3277 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3278 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3279 = private unnamed_addr constant [15 x i8] c"' must return \00" -@.str.3280 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3281 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3282 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3283 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3284 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3278 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" +@.str.3279 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3280 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" +@.str.3281 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3282 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3283 = private unnamed_addr constant [9 x i8] c"add i64 \00" +@.str.3284 = private unnamed_addr constant [4 x i8] c", 1\00" @.str.3285 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3286 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3287 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3288 = private unnamed_addr constant [19 x i8] c"the returned value\00" +@.str.3286 = private unnamed_addr constant [1 x i8] c"\00" +@.str.3287 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3288 = private unnamed_addr constant [6 x i8] c"$list\00" @.str.3289 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3290 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.3291 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3292 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3293 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\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 [29 x i8] c" zeroinitializer, i1 true, 0\00" -@.str.3298 = private unnamed_addr constant [13 x i8] c"insertvalue \00" +@.str.3290 = private unnamed_addr constant [30 x i8] c"used .nvars on a null pointer\00" +@.str.3291 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.3292 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.3293 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.3294 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3295 = private unnamed_addr constant [56 x i8] c"for ... in needs an array, a str or a map, but this is \00" +@.str.3296 = private unnamed_addr constant [37 x i8] c" (for a range of numbers write 0..n)\00" +@.str.3297 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.3298 = private unnamed_addr constant [6 x i8] c"array\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 [3 x i8] c", \00" -@.str.3303 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3304 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3305 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3306 = private unnamed_addr constant [4 x i8] c", 1\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 [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 [5 x i8] c"ret \00" -@.str.3312 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3313 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3314 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3315 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3316 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3317 = private unnamed_addr constant [8 x i8] c"{ i64, \00" -@.str.3318 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3319 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3320 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3321 = private unnamed_addr constant [3 x i8] c" }\00" -@.str.3322 = private unnamed_addr constant [30 x i8] c"ptrtoint (ptr getelementptr (\00" -@.str.3323 = private unnamed_addr constant [27 x i8] c", ptr null, i32 1) to i64)\00" -@.str.3324 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.3325 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3326 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3327 = private unnamed_addr constant [15 x i8] c", i32 0, i32 0\00" -@.str.3328 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3329 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3330 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3331 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3332 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3333 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" -@.str.3334 = private unnamed_addr constant [2 x i8] c"0\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 [4 x i8] c"i64\00" +@.str.3303 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3304 = private unnamed_addr constant [2 x i8] c"0\00" +@.str.3305 = private unnamed_addr constant [10 x i8] c"each.cond\00" +@.str.3306 = private unnamed_addr constant [10 x i8] c"each.body\00" +@.str.3307 = private unnamed_addr constant [10 x i8] c"each.step\00" +@.str.3308 = private unnamed_addr constant [9 x i8] c"each.end\00" +@.str.3309 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3310 = private unnamed_addr constant [47 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr \00" +@.str.3311 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" +@.str.3312 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3313 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" +@.str.3314 = private unnamed_addr constant [3 x i8] c", \00" +@.str.3315 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.3316 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.3317 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.3318 = private unnamed_addr constant [7 x i8] c", i64 \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 .loops 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 [31 x i8] c"used .scopes on a null pointer\00" +@.str.3323 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3324 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" +@.str.3325 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.3326 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3327 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3328 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" +@.str.3329 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3330 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" +@.str.3331 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3332 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3333 = private unnamed_addr constant [9 x i8] c"add i64 \00" +@.str.3334 = private unnamed_addr constant [4 x i8] c", 1\00" @.str.3335 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3336 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3337 = private unnamed_addr constant [2 x i8] c"1\00" -@.str.3338 = private unnamed_addr constant [5 x i8] c"ptr \00" -@.str.3339 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3340 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3341 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.3336 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" +@.str.3337 = private unnamed_addr constant [34 x i8] c"return can't be used inside defer\00" +@.str.3338 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3339 = private unnamed_addr constant [5 x i8] c"call\00" +@.str.3340 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3341 = private unnamed_addr constant [6 x i8] c"error\00" @.str.3342 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3343 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str.3344 = private unnamed_addr constant [26 x i8] c"call i64 @finch_map_find(\00" -@.str.3345 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3346 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.3347 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.3348 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.3349 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.3350 = private unnamed_addr constant [26 x i8] c"call i64 @finch_map_slot(\00" -@.str.3351 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3352 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3353 = private unnamed_addr constant [8 x i8] c"map.new\00" -@.str.3354 = private unnamed_addr constant [9 x i8] c"map.have\00" -@.str.3355 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str.3356 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.3357 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.3343 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3344 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3345 = private unnamed_addr constant [2 x i8] c"!\00" +@.str.3346 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3347 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3348 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3349 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3350 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3351 = private unnamed_addr constant [2 x i8] c"!\00" +@.str.3352 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.3353 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3354 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3355 = private unnamed_addr constant [65 x i8] c"' can't fail, so it can't return an error (make it fallible: -> \00" +@.str.3356 = private unnamed_addr constant [2 x i8] c")\00" +@.str.3357 = private unnamed_addr constant [6 x i8] c"error\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.3359 = private unnamed_addr constant [4 x i8] c"str\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 [12 x i8] c"src/gen.fch\00" +@.str.3361 = private unnamed_addr constant [18 x i8] c"the error message\00" +@.str.3362 = private unnamed_addr constant [5 x i8] c"ret \00" @.str.3363 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3364 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3365 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3366 = private unnamed_addr constant [8 x i8] c"the key\00" -@.str.3367 = private unnamed_addr constant [45 x i8] c"this is a temporary map, it can't be changed\00" -@.str.3368 = private unnamed_addr constant [1 x i8] c"\00" -@.str.3369 = private unnamed_addr constant [12 x i8] c"map.missing\00" -@.str.3370 = private unnamed_addr constant [10 x i8] c"map.found\00" -@.str.3371 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.3372 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.3373 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.3374 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.3375 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.3376 = private unnamed_addr constant [34 x i8] c"call void @finch_map_missing(ptr \00" -@.str.3377 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3378 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.3379 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3380 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3381 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3382 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3383 = private unnamed_addr constant [12 x i8] c"unreachable\00" +@.str.3364 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3365 = private unnamed_addr constant [2 x i8] c" \00" +@.str.3366 = private unnamed_addr constant [13 x i8] c"insertvalue \00" +@.str.3367 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3368 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3369 = private unnamed_addr constant [37 x i8] c" zeroinitializer, { ptr, i64, i64 } \00" +@.str.3370 = private unnamed_addr constant [4 x i8] c", 2\00" +@.str.3371 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3372 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.3373 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3374 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3375 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3376 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3377 = private unnamed_addr constant [2 x i8] c"'\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 [47 x i8] c"' doesn't return a value (it has no '-> type')\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"ret \00" @.str.3384 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3385 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3386 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.3387 = private unnamed_addr constant [53 x i8] c"an empty [:] needs a type, like: map[str]int m = [:]\00" +@.str.3385 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3386 = private unnamed_addr constant [54 x i8] c" { i1 true, i8 0, { ptr, i64, i64 } zeroinitializer }\00" +@.str.3387 = private unnamed_addr constant [9 x i8] c"ret void\00" @.str.3388 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3389 = private unnamed_addr constant [6 x i8] c"unary\00" -@.str.3390 = private unnamed_addr constant [2 x i8] c"-\00" +@.str.3389 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.3390 = private unnamed_addr constant [2 x i8] c"'\00" @.str.3391 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3392 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.3393 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.3392 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3393 = private unnamed_addr constant [15 x i8] c"' must return \00" @.str.3394 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3395 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.3395 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3396 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3397 = private unnamed_addr constant [4 x i8] c"var\00" @.str.3398 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3399 = private unnamed_addr constant [36 x i8] c"a map key needs a value with a type\00" -@.str.3400 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3401 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3402 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3403 = private unnamed_addr constant [38 x i8] c"a map value needs a value with a type\00" -@.str.3404 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.3405 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" +@.str.3399 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3400 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.3401 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3402 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\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 [31 x i8] c"used .scopes on a null pointer\00" @.str.3406 = 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 [12 x i8] c"src/gen.fch\00" -@.str.3409 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3409 = private unnamed_addr constant [32 x i8] c"used .deferOn on a null pointer\00" @.str.3410 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3411 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3412 = private unnamed_addr constant [22 x i8] c"every key of this map\00" +@.str.3411 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.3412 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [24 x i8] c"every value of this map\00" +@.str.3415 = private unnamed_addr constant [35 x i8] c"used .deferLimit on a null pointer\00" @.str.3416 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3417 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3417 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" @.str.3418 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3419 = private unnamed_addr constant [4 x i8] c"has\00" -@.str.3420 = private unnamed_addr constant [4 x i8] c"get\00" -@.str.3421 = private unnamed_addr constant [7 x i8] c"remove\00" -@.str.3422 = private unnamed_addr constant [4 x i8] c"get\00" -@.str.3423 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [28 x i8] c"used .cur on a null pointer\00" +@.str.3422 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3423 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" @.str.3424 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3425 = private unnamed_addr constant [8 x i8] c"the key\00" -@.str.3426 = private unnamed_addr constant [14 x i8] c"icmp sge i64 \00" -@.str.3427 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.3428 = private unnamed_addr constant [4 x i8] c"has\00" -@.str.3429 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3430 = private unnamed_addr constant [7 x i8] c"remove\00" -@.str.3431 = private unnamed_addr constant [11 x i8] c"remove.hit\00" -@.str.3432 = private unnamed_addr constant [11 x i8] c"remove.end\00" -@.str.3433 = private unnamed_addr constant [36 x i8] c"call void @finch_map_remove_at(ptr \00" -@.str.3434 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3435 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3436 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3437 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3438 = private unnamed_addr constant [10 x i8] c"get.found\00" -@.str.3439 = private unnamed_addr constant [12 x i8] c"get.missing\00" -@.str.3440 = private unnamed_addr constant [9 x i8] c"get.fend\00" -@.str.3441 = private unnamed_addr constant [9 x i8] c"get.mend\00" -@.str.3442 = private unnamed_addr constant [8 x i8] c"get.end\00" -@.str.3443 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [31 x i8] c"used .scopes on a null pointer\00" +@.str.3428 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3429 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3430 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3431 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3432 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3433 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3434 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3435 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3436 = private unnamed_addr constant [19 x i8] c"the returned value\00" +@.str.3437 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3438 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3439 = private unnamed_addr constant [13 x i8] c"insertvalue \00" +@.str.3440 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3441 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3442 = private unnamed_addr constant [29 x i8] c" zeroinitializer, i1 true, 0\00" +@.str.3443 = private unnamed_addr constant [13 x i8] c"insertvalue \00" @.str.3444 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3445 = private unnamed_addr constant [12 x i8] c"the default\00" -@.str.3446 = private unnamed_addr constant [5 x i8] c"phi \00" -@.str.3447 = private unnamed_addr constant [4 x i8] c" [ \00" -@.str.3448 = private unnamed_addr constant [4 x i8] c", %\00" -@.str.3449 = private unnamed_addr constant [7 x i8] c" ], [ \00" -@.str.3450 = private unnamed_addr constant [4 x i8] c", %\00" -@.str.3451 = private unnamed_addr constant [3 x i8] c" ]\00" -@.str.3452 = private unnamed_addr constant [6 x i8] c"clear\00" -@.str.3453 = private unnamed_addr constant [32 x i8] c"call void @finch_map_clear(ptr \00" -@.str.3454 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3455 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3456 = private unnamed_addr constant [5 x i8] c"keys\00" -@.str.3457 = private unnamed_addr constant [7 x i8] c"values\00" -@.str.3458 = private unnamed_addr constant [7 x i8] c"values\00" -@.str.3459 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.3460 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.3461 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.3462 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3463 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3464 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3465 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" -@.str.3466 = private unnamed_addr constant [31 x i8] c"call void @finch_arr_make(ptr \00" -@.str.3467 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3468 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3469 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3470 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.3471 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3472 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3473 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.3474 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3475 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3476 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3477 = private unnamed_addr constant [15 x i8] c", i32 0, i32 2\00" -@.str.3478 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3479 = private unnamed_addr constant [11 x i8] c"entry.live\00" -@.str.3480 = private unnamed_addr constant [11 x i8] c"entry.next\00" -@.str.3481 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00" -@.str.3482 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3483 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.3484 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3485 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3486 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3487 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3488 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3489 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.3490 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.3491 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.3492 = private unnamed_addr constant [22 x i8] c"a map has no method '\00" -@.str.3493 = private unnamed_addr constant [50 x i8] c"' (it has: has, get, remove, clear, keys, values)\00" -@.str.3494 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.3495 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.3496 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3497 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" -@.str.3498 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3499 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.3500 = private unnamed_addr constant [23 x i8] c"' is not a variant of \00" -@.str.3501 = private unnamed_addr constant [11 x i8] c" (it has: \00" -@.str.3502 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3503 = private unnamed_addr constant [2 x i8] c")\00" +@.str.3445 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3446 = private unnamed_addr constant [2 x i8] c" \00" +@.str.3447 = private unnamed_addr constant [3 x i8] c", \00" +@.str.3448 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3449 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3450 = private unnamed_addr constant [2 x i8] c" \00" +@.str.3451 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str.3452 = private unnamed_addr constant [5 x i8] c"ret \00" +@.str.3453 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3454 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3455 = private unnamed_addr constant [2 x i8] c" \00" +@.str.3456 = private unnamed_addr constant [5 x i8] c"ret \00" +@.str.3457 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3458 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3459 = private unnamed_addr constant [2 x i8] c" \00" +@.str.3460 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3461 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.3462 = private unnamed_addr constant [8 x i8] c"{ i64, \00" +@.str.3463 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3464 = private unnamed_addr constant [3 x i8] c", \00" +@.str.3465 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3466 = private unnamed_addr constant [3 x i8] c" }\00" +@.str.3467 = private unnamed_addr constant [30 x i8] c"ptrtoint (ptr getelementptr (\00" +@.str.3468 = private unnamed_addr constant [27 x i8] c", ptr null, i32 1) to i64)\00" +@.str.3469 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.3470 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.3471 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.3472 = private unnamed_addr constant [15 x i8] c", i32 0, i32 0\00" +@.str.3473 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.3474 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.3475 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.3476 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.3477 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.3478 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" +@.str.3479 = private unnamed_addr constant [2 x i8] c"0\00" +@.str.3480 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3481 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.3482 = private unnamed_addr constant [2 x i8] c"1\00" +@.str.3483 = private unnamed_addr constant [5 x i8] c"ptr \00" +@.str.3484 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.3485 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.3486 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.3487 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3488 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str.3489 = private unnamed_addr constant [26 x i8] c"call i64 @finch_map_find(\00" +@.str.3490 = private unnamed_addr constant [2 x i8] c")\00" +@.str.3491 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.3492 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.3493 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.3494 = private unnamed_addr constant [2 x i8] c"0\00" +@.str.3495 = private unnamed_addr constant [26 x i8] c"call i64 @finch_map_slot(\00" +@.str.3496 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.3497 = private unnamed_addr constant [2 x i8] c")\00" +@.str.3498 = private unnamed_addr constant [8 x i8] c"map.new\00" +@.str.3499 = private unnamed_addr constant [9 x i8] c"map.have\00" +@.str.3500 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" +@.str.3501 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.3502 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.3503 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.3504 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3505 = private unnamed_addr constant [13 x i8] c"this pattern\00" +@.str.3505 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.3506 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3507 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3508 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.3507 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3508 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.3509 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3510 = private unnamed_addr constant [31 x i8] c"there is nothing to match here\00" -@.str.3511 = private unnamed_addr constant [10 x i8] c"match.end\00" -@.str.3512 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3513 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3514 = private unnamed_addr constant [73 x i8] c"this arm can never be used: 'else' already takes everything that is left\00" -@.str.3515 = private unnamed_addr constant [10 x i8] c"match.arm\00" -@.str.3516 = private unnamed_addr constant [11 x i8] c"match.next\00" -@.str.3517 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3518 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3519 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.3520 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3521 = private unnamed_addr constant [50 x i8] c"this variant is already handled by an earlier arm\00" -@.str.3522 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.3523 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3524 = private unnamed_addr constant [9 x i8] c"match.or\00" -@.str.3525 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3526 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3527 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3528 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3529 = private unnamed_addr constant [53 x i8] c"an arm of a match that gives a value has to give one\00" -@.str.3530 = private unnamed_addr constant [58 x i8] c"this arm (the arms of a match have to give the same type)\00" -@.str.3531 = private unnamed_addr constant [11 x i8] c"match.from\00" -@.str.3532 = private unnamed_addr constant [6 x i8] c"block\00" +@.str.3510 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3511 = private unnamed_addr constant [8 x i8] c"the key\00" +@.str.3512 = private unnamed_addr constant [45 x i8] c"this is a temporary map, it can't be changed\00" +@.str.3513 = private unnamed_addr constant [1 x i8] c"\00" +@.str.3514 = private unnamed_addr constant [12 x i8] c"map.missing\00" +@.str.3515 = private unnamed_addr constant [10 x i8] c"map.found\00" +@.str.3516 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" +@.str.3517 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.3518 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.3519 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.3520 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" +@.str.3521 = private unnamed_addr constant [34 x i8] c"call void @finch_map_missing(ptr \00" +@.str.3522 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3523 = private unnamed_addr constant [30 x i8] c"used .files 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 [7 x i8] c", i64 \00" +@.str.3526 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.3527 = private unnamed_addr constant [2 x i8] c")\00" +@.str.3528 = private unnamed_addr constant [12 x i8] c"unreachable\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 [4 x i8] c"map\00" +@.str.3532 = private unnamed_addr constant [53 x i8] c"an empty [:] needs a type, like: map[str]int m = [:]\00" @.str.3533 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3534 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3535 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.3534 = private unnamed_addr constant [6 x i8] c"unary\00" +@.str.3535 = private unnamed_addr constant [2 x i8] c"-\00" @.str.3536 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3537 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" -@.str.3538 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3537 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.3538 = private unnamed_addr constant [4 x i8] c"int\00" @.str.3539 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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"this match doesn't handle \00" -@.str.3542 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3543 = private unnamed_addr constant [30 x i8] c" (add them, or an 'else' arm)\00" -@.str.3544 = private unnamed_addr constant [12 x i8] c"a match on \00" -@.str.3545 = private unnamed_addr constant [55 x i8] c" needs an 'else' arm for everything that is not listed\00" -@.str.3546 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.3547 = private unnamed_addr constant [36 x i8] c"no arm of this match fits the value\00" -@.str.3548 = private unnamed_addr constant [12 x i8] c"unreachable\00" -@.str.3549 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3550 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3551 = private unnamed_addr constant [12 x i8] c"unreachable\00" -@.str.3552 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3553 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3554 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3555 = private unnamed_addr constant [5 x i8] c"phi \00" -@.str.3556 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3557 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3558 = private unnamed_addr constant [3 x i8] c"[ \00" -@.str.3559 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3560 = private unnamed_addr constant [4 x i8] c", %\00" +@.str.3541 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3542 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.3543 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3544 = private unnamed_addr constant [36 x i8] c"a map key needs a value with a type\00" +@.str.3545 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3546 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.3547 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3548 = private unnamed_addr constant [38 x i8] c"a map value needs a value with a type\00" +@.str.3549 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.3550 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" +@.str.3551 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3552 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" +@.str.3553 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3554 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" +@.str.3555 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3556 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3557 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3558 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3559 = private unnamed_addr constant [22 x i8] c"every key of this map\00" +@.str.3560 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.3561 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3562 = private unnamed_addr constant [3 x i8] c" ]\00" -@.str.3563 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3564 = private unnamed_addr constant [5 x i8] c"call\00" -@.str.3565 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.3566 = 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.3562 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3563 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3564 = private unnamed_addr constant [24 x i8] c"every value of this map\00" +@.str.3565 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3566 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.3567 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3568 = private unnamed_addr constant [32 x i8] c"used .ftarget 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 .ffailed on a null pointer\00" -@.str.3571 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3572 = private unnamed_addr constant [29 x i8] c"used .fmsg 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 [4 x i8] c"has\00" +@.str.3570 = private unnamed_addr constant [4 x i8] c"get\00" +@.str.3571 = private unnamed_addr constant [7 x i8] c"remove\00" +@.str.3572 = private unnamed_addr constant [4 x i8] c"get\00" @.str.3573 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3574 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" -@.str.3575 = private unnamed_addr constant [1 x i8] c"\00" -@.str.3576 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3577 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.3578 = private unnamed_addr constant [1 x i8] c"\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 .ffailed 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 [29 x i8] c"used .fmsg 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 [32 x i8] c"used .ftarget on a null pointer\00" -@.str.3587 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3588 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.3589 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3590 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.3591 = private unnamed_addr constant [51 x i8] c"this call can't fail, so it needs no 'or' or 'try'\00" -@.str.3592 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3593 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" -@.str.3594 = private unnamed_addr constant [31 x i8] c"try can't be used inside defer\00" -@.str.3595 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3596 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3597 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.3598 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3599 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3600 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3601 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3602 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3603 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.3604 = private unnamed_addr constant [30 x i8] c"try passes the error on, so '\00" -@.str.3605 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3606 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3607 = private unnamed_addr constant [32 x i8] c"' must be able to fail too (-> \00" -@.str.3608 = private unnamed_addr constant [56 x i8] c"); or handle it here: ... or / ... or { ... }\00" -@.str.3609 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3610 = private unnamed_addr constant [11 x i8] c"try.failed\00" -@.str.3611 = private unnamed_addr constant [7 x i8] c"try.ok\00" -@.str.3612 = private unnamed_addr constant [5 x i8] c"ret \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 [2 x i8] c" \00" -@.str.3616 = private unnamed_addr constant [13 x i8] c"insertvalue \00" -@.str.3617 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3618 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3619 = private unnamed_addr constant [37 x i8] c" zeroinitializer, { ptr, i64, i64 } \00" -@.str.3620 = private unnamed_addr constant [4 x i8] c", 2\00" -@.str.3621 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3622 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3623 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3624 = private unnamed_addr constant [10 x i8] c"or.failed\00" -@.str.3625 = private unnamed_addr constant [6 x i8] c"or.ok\00" -@.str.3626 = private unnamed_addr constant [4 x i8] c"err\00" -@.str.3627 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3628 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3629 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3630 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3631 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3632 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3633 = 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.3634 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3635 = private unnamed_addr constant [7 x i8] c"or.end\00" -@.str.3636 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3637 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3574 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3575 = private unnamed_addr constant [8 x i8] c"the key\00" +@.str.3576 = private unnamed_addr constant [14 x i8] c"icmp sge i64 \00" +@.str.3577 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.3578 = private unnamed_addr constant [4 x i8] c"has\00" +@.str.3579 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.3580 = private unnamed_addr constant [7 x i8] c"remove\00" +@.str.3581 = private unnamed_addr constant [11 x i8] c"remove.hit\00" +@.str.3582 = private unnamed_addr constant [11 x i8] c"remove.end\00" +@.str.3583 = private unnamed_addr constant [36 x i8] c"call void @finch_map_remove_at(ptr \00" +@.str.3584 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.3585 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.3586 = private unnamed_addr constant [2 x i8] c")\00" +@.str.3587 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.3588 = private unnamed_addr constant [10 x i8] c"get.found\00" +@.str.3589 = private unnamed_addr constant [12 x i8] c"get.missing\00" +@.str.3590 = private unnamed_addr constant [9 x i8] c"get.fend\00" +@.str.3591 = private unnamed_addr constant [9 x i8] c"get.mend\00" +@.str.3592 = private unnamed_addr constant [8 x i8] c"get.end\00" +@.str.3593 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3594 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3595 = private unnamed_addr constant [12 x i8] c"the default\00" +@.str.3596 = private unnamed_addr constant [5 x i8] c"phi \00" +@.str.3597 = private unnamed_addr constant [4 x i8] c" [ \00" +@.str.3598 = private unnamed_addr constant [4 x i8] c", %\00" +@.str.3599 = private unnamed_addr constant [7 x i8] c" ], [ \00" +@.str.3600 = private unnamed_addr constant [4 x i8] c", %\00" +@.str.3601 = private unnamed_addr constant [3 x i8] c" ]\00" +@.str.3602 = private unnamed_addr constant [6 x i8] c"clear\00" +@.str.3603 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3604 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.3605 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.3606 = private unnamed_addr constant [15 x i8] c", i32 0, i32 2\00" +@.str.3607 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3608 = private unnamed_addr constant [11 x i8] c"entry.live\00" +@.str.3609 = private unnamed_addr constant [11 x i8] c"entry.next\00" +@.str.3610 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00" +@.str.3611 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3612 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.3613 = private unnamed_addr constant [32 x i8] c"call void @finch_map_clear(ptr \00" +@.str.3614 = private unnamed_addr constant [2 x i8] c")\00" +@.str.3615 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3616 = private unnamed_addr constant [5 x i8] c"keys\00" +@.str.3617 = private unnamed_addr constant [7 x i8] c"values\00" +@.str.3618 = private unnamed_addr constant [7 x i8] c"values\00" +@.str.3619 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.3620 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.3621 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" +@.str.3622 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3623 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.3624 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.3625 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" +@.str.3626 = private unnamed_addr constant [31 x i8] c"call void @finch_arr_make(ptr \00" +@.str.3627 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.3628 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.3629 = private unnamed_addr constant [2 x i8] c")\00" +@.str.3630 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.3631 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3632 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3633 = private unnamed_addr constant [2 x i8] c"0\00" +@.str.3634 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3635 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.3636 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.3637 = private unnamed_addr constant [15 x i8] c", i32 0, i32 2\00" @.str.3638 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3639 = 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.3640 = private unnamed_addr constant [4 x i8] c"err\00" -@.str.3641 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3642 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3643 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3644 = private unnamed_addr constant [21 x i8] c"the value after 'or'\00" -@.str.3645 = private unnamed_addr constant [8 x i8] c"or.bend\00" -@.str.3646 = private unnamed_addr constant [7 x i8] c"or.end\00" -@.str.3647 = private unnamed_addr constant [5 x i8] c"phi \00" -@.str.3648 = private unnamed_addr constant [4 x i8] c" [ \00" -@.str.3649 = private unnamed_addr constant [4 x i8] c", %\00" -@.str.3650 = private unnamed_addr constant [7 x i8] c" ], [ \00" -@.str.3651 = private unnamed_addr constant [4 x i8] c", %\00" -@.str.3652 = private unnamed_addr constant [3 x i8] c" ]\00" -@.str.3653 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.3654 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.3655 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.3639 = private unnamed_addr constant [11 x i8] c"entry.live\00" +@.str.3640 = private unnamed_addr constant [11 x i8] c"entry.next\00" +@.str.3641 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00" +@.str.3642 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3643 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.3644 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3645 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.3646 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.3647 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.3648 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3649 = private unnamed_addr constant [9 x i8] c"add i64 \00" +@.str.3650 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str.3651 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.3652 = private unnamed_addr constant [22 x i8] c"a map has no method '\00" +@.str.3653 = private unnamed_addr constant [50 x i8] c"' (it has: has, get, remove, clear, keys, values)\00" +@.str.3654 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.3655 = private unnamed_addr constant [4 x i8] c"var\00" @.str.3656 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3657 = private unnamed_addr constant [3 x i8] c"0x\00" +@.str.3657 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" @.str.3658 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3659 = private unnamed_addr constant [3 x i8] c"0X\00" -@.str.3660 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3661 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.3662 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3663 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.3664 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.3665 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.3666 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3667 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3668 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.3659 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.3660 = private unnamed_addr constant [23 x i8] c"' is not a variant of \00" +@.str.3661 = private unnamed_addr constant [11 x i8] c" (it has: \00" +@.str.3662 = private unnamed_addr constant [3 x i8] c", \00" +@.str.3663 = private unnamed_addr constant [2 x i8] c")\00" +@.str.3664 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3665 = private unnamed_addr constant [13 x i8] c"this pattern\00" +@.str.3666 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3667 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3668 = private unnamed_addr constant [5 x i8] c"null\00" @.str.3669 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3670 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.3671 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3672 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3673 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3674 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3675 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.3676 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.3677 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.3678 = private unnamed_addr constant [6 x i8] c"match\00" -@.str.3679 = private unnamed_addr constant [4 x i8] c"try\00" -@.str.3680 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.3681 = private unnamed_addr constant [6 x i8] c"unary\00" -@.str.3682 = private unnamed_addr constant [7 x i8] c"binary\00" -@.str.3683 = private unnamed_addr constant [5 x i8] c"call\00" -@.str.3684 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.3685 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.3686 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3687 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.3670 = private unnamed_addr constant [31 x i8] c"there is nothing to match here\00" +@.str.3671 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3672 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" +@.str.3673 = private unnamed_addr constant [10 x i8] c"match.end\00" +@.str.3674 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3675 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3676 = private unnamed_addr constant [73 x i8] c"this arm can never be used: 'else' already takes everything that is left\00" +@.str.3677 = private unnamed_addr constant [10 x i8] c"match.arm\00" +@.str.3678 = private unnamed_addr constant [11 x i8] c"match.next\00" +@.str.3679 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3680 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3681 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.3682 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3683 = private unnamed_addr constant [50 x i8] c"this variant is already handled by an earlier arm\00" +@.str.3684 = private unnamed_addr constant [3 x i8] c"==\00" +@.str.3685 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3686 = private unnamed_addr constant [9 x i8] c"match.or\00" +@.str.3687 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.3688 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3689 = private unnamed_addr constant [20 x i8] c"unknown expression \00" -@.str.3690 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3691 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.3692 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3693 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3694 = private unnamed_addr constant [20 x i8] c"the value after '!'\00" -@.str.3695 = private unnamed_addr constant [8 x i8] c"xor i1 \00" -@.str.3696 = private unnamed_addr constant [7 x i8] c", true\00" -@.str.3697 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3698 = private unnamed_addr constant [2 x i8] c"~\00" -@.str.3699 = private unnamed_addr constant [46 x i8] c"'~' flips the bits of a whole number, not of \00" -@.str.3700 = private unnamed_addr constant [5 x i8] c"xor \00" -@.str.3701 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3702 = private unnamed_addr constant [5 x i8] c", -1\00" -@.str.3703 = private unnamed_addr constant [35 x i8] c" can't be negative (it's unsigned)\00" -@.str.3704 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3705 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.3706 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3707 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.3708 = private unnamed_addr constant [5 x i8] c"sub \00" -@.str.3709 = private unnamed_addr constant [5 x i8] c" 0, \00" -@.str.3710 = private unnamed_addr constant [6 x i8] c"fneg \00" -@.str.3711 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3712 = private unnamed_addr constant [27 x i8] c"can't put '-' in front of \00" -@.str.3713 = private unnamed_addr constant [12 x i8] c"can't use '\00" -@.str.3714 = private unnamed_addr constant [6 x i8] c"' on \00" -@.str.3715 = private unnamed_addr constant [6 x i8] c" and \00" -@.str.3716 = private unnamed_addr constant [2 x i8] c"+\00" -@.str.3717 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3718 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3719 = private unnamed_addr constant [49 x i8] c" (turn the other side into text first: str(...))\00" -@.str.3720 = private unnamed_addr constant [2 x i8] c"&\00" -@.str.3721 = private unnamed_addr constant [2 x i8] c"|\00" -@.str.3722 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3723 = private unnamed_addr constant [2 x i8] c"&\00" -@.str.3724 = private unnamed_addr constant [27 x i8] c" (for true/false use '&&')\00" -@.str.3725 = private unnamed_addr constant [27 x i8] c" (for true/false use '||')\00" -@.str.3726 = private unnamed_addr constant [2 x i8] c"&\00" -@.str.3727 = private unnamed_addr constant [2 x i8] c"|\00" -@.str.3728 = private unnamed_addr constant [2 x i8] c"^\00" -@.str.3729 = private unnamed_addr constant [3 x i8] c"<<\00" -@.str.3730 = private unnamed_addr constant [3 x i8] c">>\00" -@.str.3731 = private unnamed_addr constant [44 x i8] c" (bit operators work on whole numbers only)\00" -@.str.3732 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.3733 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.3734 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.3735 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.3736 = private unnamed_addr constant [32 x i8] c" (compare the parts one by one)\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.3689 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3690 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.3691 = private unnamed_addr constant [53 x i8] c"an arm of a match that gives a value has to give one\00" +@.str.3692 = private unnamed_addr constant [58 x i8] c"this arm (the arms of a match have to give the same type)\00" +@.str.3693 = private unnamed_addr constant [11 x i8] c"match.from\00" +@.str.3694 = private unnamed_addr constant [6 x i8] c"block\00" +@.str.3695 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3696 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.3697 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.3698 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3699 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" +@.str.3700 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3701 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3702 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3703 = private unnamed_addr constant [27 x i8] c"this match doesn't handle \00" +@.str.3704 = private unnamed_addr constant [3 x i8] c", \00" +@.str.3705 = private unnamed_addr constant [30 x i8] c" (add them, or an 'else' arm)\00" +@.str.3706 = private unnamed_addr constant [12 x i8] c"a match on \00" +@.str.3707 = private unnamed_addr constant [55 x i8] c" needs an 'else' arm for everything that is not listed\00" +@.str.3708 = private unnamed_addr constant [5 x i8] c"true\00" +@.str.3709 = private unnamed_addr constant [36 x i8] c"no arm of this match fits the value\00" +@.str.3710 = private unnamed_addr constant [12 x i8] c"unreachable\00" +@.str.3711 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3712 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.3713 = private unnamed_addr constant [12 x i8] c"unreachable\00" +@.str.3714 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3715 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.3716 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3717 = private unnamed_addr constant [5 x i8] c"phi \00" +@.str.3718 = private unnamed_addr constant [2 x i8] c" \00" +@.str.3719 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3720 = private unnamed_addr constant [3 x i8] c"[ \00" +@.str.3721 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3722 = private unnamed_addr constant [4 x i8] c", %\00" +@.str.3723 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3724 = private unnamed_addr constant [3 x i8] c" ]\00" +@.str.3725 = private unnamed_addr constant [3 x i8] c", \00" +@.str.3726 = private unnamed_addr constant [5 x i8] c"call\00" +@.str.3727 = private unnamed_addr constant [7 x i8] c"method\00" +@.str.3728 = 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.3729 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3730 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" +@.str.3731 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3732 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" +@.str.3733 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3734 = private unnamed_addr constant [29 x i8] c"used .fmsg 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 [32 x i8] c"used .ftarget on a null pointer\00" +@.str.3737 = private unnamed_addr constant [1 x i8] c"\00" +@.str.3738 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3739 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" +@.str.3740 = private unnamed_addr constant [1 x i8] c"\00" @.str.3741 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3742 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3742 = private unnamed_addr constant [29 x i8] c"used .fmsg 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 [27 x i8] c"used .ty on a null pointer\00" +@.str.3744 = private unnamed_addr constant [32 x i8] c"used .ffailed 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 [28 x i8] c"used .lit on a null pointer\00" +@.str.3746 = private unnamed_addr constant [29 x i8] c"used .fmsg 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 [28 x i8] c"used .lit on a null pointer\00" +@.str.3748 = private unnamed_addr constant [32 x i8] c"used .ftarget 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 [26 x i8] c"used .v on a null pointer\00" +@.str.3750 = private unnamed_addr constant [32 x i8] c"used .ffailed 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 [27 x i8] c"used .ty 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 [26 x i8] c"used .v on a null pointer\00" +@.str.3752 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" +@.str.3753 = private unnamed_addr constant [51 x i8] c"this call can't fail, so it needs no 'or' or 'try'\00" +@.str.3754 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3755 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" +@.str.3756 = private unnamed_addr constant [31 x i8] c"try can't be used inside defer\00" @.str.3757 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3758 = private unnamed_addr constant [27 x i8] c"used .ty 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 [30 x i8] c"used .value 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 [28 x i8] c"used .lit on a null pointer\00" +@.str.3758 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3759 = private unnamed_addr constant [2 x i8] c"!\00" +@.str.3760 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3761 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3762 = private unnamed_addr constant [5 x i8] c"void\00" @.str.3763 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3764 = private unnamed_addr constant [28 x i8] c"used .lit 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 [26 x i8] c"used .v on a null pointer\00" +@.str.3764 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3765 = private unnamed_addr constant [2 x i8] c"!\00" +@.str.3766 = private unnamed_addr constant [30 x i8] c"try passes the error on, so '\00" @.str.3767 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3768 = private unnamed_addr constant [27 x i8] c"used .ty 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.3768 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3769 = private unnamed_addr constant [32 x i8] c"' must be able to fail too (-> \00" +@.str.3770 = private unnamed_addr constant [56 x i8] c"); or handle it here: ... or / ... or { ... }\00" @.str.3771 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3772 = private unnamed_addr constant [26 x i8] c"used .v 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.3772 = private unnamed_addr constant [11 x i8] c"try.failed\00" +@.str.3773 = private unnamed_addr constant [7 x i8] c"try.ok\00" +@.str.3774 = private unnamed_addr constant [5 x i8] c"ret \00" @.str.3775 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3776 = private unnamed_addr constant [30 x i8] c"used .value 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 [27 x i8] c"used .ty on a null pointer\00" +@.str.3776 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3777 = private unnamed_addr constant [2 x i8] c" \00" +@.str.3778 = private unnamed_addr constant [13 x i8] c"insertvalue \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 [26 x i8] c"used .v on a null pointer\00" +@.str.3780 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3781 = private unnamed_addr constant [37 x i8] c" zeroinitializer, { ptr, i64, i64 } \00" +@.str.3782 = private unnamed_addr constant [4 x i8] c", 2\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.3784 = private unnamed_addr constant [29 x i8] c"used .term 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 [27 x i8] c"used .ty 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 [30 x i8] c"used .value on a null pointer\00" +@.str.3786 = private unnamed_addr constant [10 x i8] c"or.failed\00" +@.str.3787 = private unnamed_addr constant [6 x i8] c"or.ok\00" +@.str.3788 = private unnamed_addr constant [4 x i8] c"err\00" +@.str.3789 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.3790 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.3791 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3792 = private unnamed_addr constant [27 x i8] c"used .ty 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 [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 [26 x i8] c"used .v 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 [27 x i8] c"used .ty 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 [30 x i8] c"used .value on a null pointer\00" +@.str.3792 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.3793 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3794 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3795 = 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.3796 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3797 = private unnamed_addr constant [7 x i8] c"or.end\00" +@.str.3798 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3799 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3800 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3801 = 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.3802 = private unnamed_addr constant [4 x i8] c"err\00" +@.str.3803 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.3804 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.3805 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3806 = private unnamed_addr constant [27 x i8] c"used .ty 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 [12 x i8] c"src/gen.fch\00" -@.str.3810 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" -@.str.3811 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3812 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.3813 = private unnamed_addr constant [1 x i8] c"\00" -@.str.3814 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3815 = private unnamed_addr constant [30 x i8] c"used .value 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 [27 x i8] c"used .ty on a null pointer\00" +@.str.3806 = private unnamed_addr constant [21 x i8] c"the value after 'or'\00" +@.str.3807 = private unnamed_addr constant [8 x i8] c"or.bend\00" +@.str.3808 = private unnamed_addr constant [7 x i8] c"or.end\00" +@.str.3809 = private unnamed_addr constant [5 x i8] c"phi \00" +@.str.3810 = private unnamed_addr constant [4 x i8] c" [ \00" +@.str.3811 = private unnamed_addr constant [4 x i8] c", %\00" +@.str.3812 = private unnamed_addr constant [7 x i8] c" ], [ \00" +@.str.3813 = private unnamed_addr constant [4 x i8] c", %\00" +@.str.3814 = private unnamed_addr constant [3 x i8] c" ]\00" +@.str.3815 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.3816 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.3817 = private unnamed_addr constant [4 x i8] c"int\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.3819 = private unnamed_addr constant [3 x i8] c"0x\00" @.str.3820 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3821 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" +@.str.3821 = private unnamed_addr constant [3 x i8] c"0X\00" @.str.3822 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3823 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.3824 = private unnamed_addr constant [1 x i8] c"\00" -@.str.3825 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3826 = private unnamed_addr constant [30 x i8] c"used .value 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 [12 x i8] c"src/gen.fch\00" -@.str.3830 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3823 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.3824 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3825 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.3826 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.3827 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.3828 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.3829 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.3830 = private unnamed_addr constant [5 x i8] c"char\00" @.str.3831 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3832 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.3833 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.3834 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3835 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" -@.str.3836 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3837 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.3838 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.3839 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.3840 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3841 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" -@.str.3842 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3843 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.3844 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.3845 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3846 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\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 .ty on a null pointer\00" -@.str.3849 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.3850 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.3851 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3852 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" -@.str.3853 = private unnamed_addr constant [2 x i8] c"+\00" -@.str.3854 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3855 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3856 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.3857 = private unnamed_addr constant [33 x i8] c"call void @finch_str_concat(ptr \00" -@.str.3858 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3859 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3860 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3861 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.3862 = private unnamed_addr constant [4 x i8] c"str\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 [2 x i8] c"%\00" -@.str.3868 = private unnamed_addr constant [2 x i8] c"&\00" -@.str.3869 = private unnamed_addr constant [2 x i8] c"|\00" -@.str.3870 = private unnamed_addr constant [2 x i8] c"^\00" -@.str.3871 = private unnamed_addr constant [3 x i8] c"<<\00" -@.str.3872 = private unnamed_addr constant [3 x i8] c">>\00" -@.str.3873 = private unnamed_addr constant [4 x i8] c"add\00" -@.str.3874 = private unnamed_addr constant [4 x i8] c"sub\00" -@.str.3875 = private unnamed_addr constant [4 x i8] c"mul\00" -@.str.3876 = private unnamed_addr constant [5 x i8] c"sdiv\00" -@.str.3877 = private unnamed_addr constant [5 x i8] c"srem\00" -@.str.3878 = private unnamed_addr constant [4 x i8] c"and\00" -@.str.3879 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.3880 = private unnamed_addr constant [4 x i8] c"xor\00" -@.str.3881 = private unnamed_addr constant [4 x i8] c"shl\00" -@.str.3882 = private unnamed_addr constant [5 x i8] c"ashr\00" -@.str.3883 = private unnamed_addr constant [4 x i8] c"add\00" -@.str.3884 = private unnamed_addr constant [4 x i8] c"sub\00" -@.str.3885 = private unnamed_addr constant [4 x i8] c"mul\00" -@.str.3886 = private unnamed_addr constant [5 x i8] c"udiv\00" -@.str.3887 = private unnamed_addr constant [5 x i8] c"urem\00" -@.str.3888 = private unnamed_addr constant [4 x i8] c"and\00" -@.str.3889 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.3890 = private unnamed_addr constant [4 x i8] c"xor\00" -@.str.3891 = private unnamed_addr constant [4 x i8] c"shl\00" -@.str.3892 = private unnamed_addr constant [5 x i8] c"lshr\00" -@.str.3893 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.3894 = private unnamed_addr constant [2 x i8] c"%\00" -@.str.3895 = private unnamed_addr constant [2 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 [9 x i8] c"icmp eq \00" -@.str.3898 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3899 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.3900 = private unnamed_addr constant [17 x i8] c"division by zero\00" +@.str.3832 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.3833 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.3834 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.3835 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.3836 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.3837 = private unnamed_addr constant [4 x i8] c"var\00" +@.str.3838 = private unnamed_addr constant [7 x i8] c"member\00" +@.str.3839 = private unnamed_addr constant [6 x i8] c"index\00" +@.str.3840 = private unnamed_addr constant [6 x i8] c"match\00" +@.str.3841 = private unnamed_addr constant [4 x i8] c"try\00" +@.str.3842 = private unnamed_addr constant [3 x i8] c"or\00" +@.str.3843 = private unnamed_addr constant [6 x i8] c"unary\00" +@.str.3844 = private unnamed_addr constant [7 x i8] c"binary\00" +@.str.3845 = private unnamed_addr constant [5 x i8] c"call\00" +@.str.3846 = private unnamed_addr constant [7 x i8] c"method\00" +@.str.3847 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.3848 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3849 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.3850 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3851 = private unnamed_addr constant [20 x i8] c"unknown expression \00" +@.str.3852 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3853 = private unnamed_addr constant [2 x i8] c"!\00" +@.str.3854 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.3855 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3856 = private unnamed_addr constant [20 x i8] c"the value after '!'\00" +@.str.3857 = private unnamed_addr constant [8 x i8] c"xor i1 \00" +@.str.3858 = private unnamed_addr constant [7 x i8] c", true\00" +@.str.3859 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.3860 = private unnamed_addr constant [2 x i8] c"~\00" +@.str.3861 = private unnamed_addr constant [46 x i8] c"'~' flips the bits of a whole number, not of \00" +@.str.3862 = private unnamed_addr constant [5 x i8] c"xor \00" +@.str.3863 = private unnamed_addr constant [2 x i8] c" \00" +@.str.3864 = private unnamed_addr constant [5 x i8] c", -1\00" +@.str.3865 = private unnamed_addr constant [35 x i8] c" can't be negative (it's unsigned)\00" +@.str.3866 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3867 = private unnamed_addr constant [2 x i8] c"-\00" +@.str.3868 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3869 = private unnamed_addr constant [2 x i8] c"-\00" +@.str.3870 = private unnamed_addr constant [5 x i8] c"sub \00" +@.str.3871 = private unnamed_addr constant [5 x i8] c" 0, \00" +@.str.3872 = private unnamed_addr constant [6 x i8] c"fneg \00" +@.str.3873 = private unnamed_addr constant [2 x i8] c" \00" +@.str.3874 = private unnamed_addr constant [27 x i8] c"can't put '-' in front of \00" +@.str.3875 = private unnamed_addr constant [12 x i8] c"can't use '\00" +@.str.3876 = private unnamed_addr constant [6 x i8] c"' on \00" +@.str.3877 = private unnamed_addr constant [6 x i8] c" and \00" +@.str.3878 = private unnamed_addr constant [2 x i8] c"+\00" +@.str.3879 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.3880 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.3881 = private unnamed_addr constant [49 x i8] c" (turn the other side into text first: str(...))\00" +@.str.3882 = private unnamed_addr constant [2 x i8] c"&\00" +@.str.3883 = private unnamed_addr constant [2 x i8] c"|\00" +@.str.3884 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.3885 = private unnamed_addr constant [2 x i8] c"&\00" +@.str.3886 = private unnamed_addr constant [27 x i8] c" (for true/false use '&&')\00" +@.str.3887 = private unnamed_addr constant [27 x i8] c" (for true/false use '||')\00" +@.str.3888 = private unnamed_addr constant [2 x i8] c"&\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 [3 x i8] c"<<\00" +@.str.3892 = private unnamed_addr constant [3 x i8] c">>\00" +@.str.3893 = private unnamed_addr constant [44 x i8] c" (bit operators work on whole numbers only)\00" +@.str.3894 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.3895 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.3896 = private unnamed_addr constant [3 x i8] c"==\00" +@.str.3897 = private unnamed_addr constant [3 x i8] c"!=\00" +@.str.3898 = private unnamed_addr constant [32 x i8] c" (compare the parts one by one)\00" +@.str.3899 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3900 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" @.str.3901 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [3 x i8] c", \00" -@.str.3905 = private unnamed_addr constant [2 x i8] c"+\00" -@.str.3906 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.3907 = private unnamed_addr constant [2 x i8] c"*\00" -@.str.3908 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.3909 = private unnamed_addr constant [2 x i8] c"%\00" -@.str.3910 = private unnamed_addr constant [5 x i8] c"fadd\00" -@.str.3911 = private unnamed_addr constant [5 x i8] c"fsub\00" -@.str.3912 = private unnamed_addr constant [5 x i8] c"fmul\00" -@.str.3913 = private unnamed_addr constant [5 x i8] c"fdiv\00" -@.str.3914 = private unnamed_addr constant [5 x i8] c"frem\00" +@.str.3902 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3903 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3904 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3905 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3906 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3907 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3908 = private unnamed_addr constant [28 x i8] c"used .lit on a null pointer\00" +@.str.3909 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3910 = private unnamed_addr constant [28 x i8] c"used .lit on a null pointer\00" +@.str.3911 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3912 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" +@.str.3913 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3914 = private unnamed_addr constant [27 x i8] c"used .ty 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 [2 x i8] c" \00" -@.str.3917 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3918 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3919 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.3920 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.3921 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.3922 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.3923 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3924 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3925 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3926 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3927 = private unnamed_addr constant [60 x i8] c"a str is never null; to check for empty text use s.len == 0\00" -@.str.3928 = private unnamed_addr constant [3 x i8] c"eq\00" -@.str.3929 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.3930 = private unnamed_addr constant [3 x i8] c"ne\00" -@.str.3931 = private unnamed_addr constant [6 x i8] c"icmp \00" -@.str.3932 = private unnamed_addr constant [6 x i8] c" ptr \00" -@.str.3933 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3934 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3935 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3936 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3937 = private unnamed_addr constant [28 x i8] c"call i32 @finch_str_eq(ptr \00" -@.str.3938 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3939 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3940 = private unnamed_addr constant [3 x i8] c"ne\00" -@.str.3941 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.3942 = private unnamed_addr constant [3 x i8] c"eq\00" -@.str.3943 = private unnamed_addr constant [6 x i8] c"icmp \00" -@.str.3944 = private unnamed_addr constant [6 x i8] c" i32 \00" -@.str.3945 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.3946 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3947 = private unnamed_addr constant [29 x i8] c"call i64 @finch_str_cmp(ptr \00" -@.str.3948 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3949 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3950 = private unnamed_addr constant [6 x i8] c"icmp \00" -@.str.3951 = private unnamed_addr constant [6 x i8] c" i64 \00" -@.str.3952 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.3953 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3954 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.3955 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.3956 = private unnamed_addr constant [2 x i8] c"<\00" -@.str.3957 = private unnamed_addr constant [3 x i8] c"<=\00" -@.str.3958 = private unnamed_addr constant [2 x i8] c">\00" -@.str.3959 = private unnamed_addr constant [3 x i8] c">=\00" -@.str.3960 = private unnamed_addr constant [4 x i8] c"oeq\00" -@.str.3961 = private unnamed_addr constant [4 x i8] c"une\00" -@.str.3962 = private unnamed_addr constant [4 x i8] c"olt\00" -@.str.3963 = private unnamed_addr constant [4 x i8] c"ole\00" -@.str.3964 = private unnamed_addr constant [4 x i8] c"ogt\00" -@.str.3965 = private unnamed_addr constant [4 x i8] c"oge\00" -@.str.3966 = private unnamed_addr constant [6 x i8] c"fcmp \00" +@.str.3916 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3917 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3918 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" +@.str.3919 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3920 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3921 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3922 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" +@.str.3923 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3924 = private unnamed_addr constant [28 x i8] c"used .lit on a null pointer\00" +@.str.3925 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3926 = private unnamed_addr constant [28 x i8] c"used .lit on a null pointer\00" +@.str.3927 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3928 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" +@.str.3929 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3930 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3931 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3932 = private unnamed_addr constant [27 x i8] c"used .ty 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 [26 x i8] c"used .v on a null pointer\00" +@.str.3935 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3936 = private unnamed_addr constant [27 x i8] c"used .ty 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 [30 x i8] c"used .value on a null pointer\00" +@.str.3939 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3940 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3941 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3942 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3943 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3944 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" +@.str.3945 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3946 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3947 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3948 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3949 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3950 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3951 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3952 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" +@.str.3953 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3954 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3955 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3956 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3957 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3958 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" +@.str.3959 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3960 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3961 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3962 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3963 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3964 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3965 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3966 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" @.str.3967 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3968 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3969 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3970 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3971 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3972 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.3973 = 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.3974 = private unnamed_addr constant [3 x i8] c"eq\00" -@.str.3975 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.3976 = private unnamed_addr constant [3 x i8] c"ne\00" -@.str.3977 = private unnamed_addr constant [6 x i8] c"icmp \00" -@.str.3978 = private unnamed_addr constant [6 x i8] c" i32 \00" -@.str.3979 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3980 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3981 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3982 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.3983 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3984 = private unnamed_addr constant [6 x i8] c"icmp \00" -@.str.3985 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3986 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3987 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3988 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3989 = private unnamed_addr constant [3 x i8] c"==\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 [3 x i8] c"<=\00" -@.str.3993 = private unnamed_addr constant [2 x i8] c">\00" -@.str.3994 = private unnamed_addr constant [3 x i8] c">=\00" -@.str.3995 = private unnamed_addr constant [3 x i8] c"eq\00" -@.str.3996 = private unnamed_addr constant [3 x i8] c"ne\00" -@.str.3997 = private unnamed_addr constant [4 x i8] c"ult\00" -@.str.3998 = private unnamed_addr constant [4 x i8] c"ule\00" -@.str.3999 = private unnamed_addr constant [4 x i8] c"ugt\00" -@.str.4000 = private unnamed_addr constant [4 x i8] c"uge\00" -@.str.4001 = private unnamed_addr constant [3 x i8] c"eq\00" -@.str.4002 = private unnamed_addr constant [3 x i8] c"ne\00" -@.str.4003 = private unnamed_addr constant [4 x i8] c"slt\00" -@.str.4004 = private unnamed_addr constant [4 x i8] c"sle\00" -@.str.4005 = private unnamed_addr constant [4 x i8] c"sgt\00" -@.str.4006 = private unnamed_addr constant [4 x i8] c"sge\00" +@.str.3968 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3969 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3970 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3971 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3972 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" +@.str.3973 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3974 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3975 = private unnamed_addr constant [1 x i8] c"\00" +@.str.3976 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3977 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" +@.str.3978 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3979 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3980 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3981 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3982 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3983 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" +@.str.3984 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3985 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3986 = private unnamed_addr constant [1 x i8] c"\00" +@.str.3987 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3988 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" +@.str.3989 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3990 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3991 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3992 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3993 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3994 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3995 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.3996 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3997 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" +@.str.3998 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3999 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.4000 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.4001 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.4002 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4003 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" +@.str.4004 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4005 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.4006 = private unnamed_addr constant [4 x i8] c"f32\00" @.str.4007 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4008 = private unnamed_addr constant [3 x i8] c"&&\00" -@.str.4009 = private unnamed_addr constant [3 x i8] c"||\00" -@.str.4010 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4011 = private unnamed_addr constant [11 x i8] c"logic.from\00" -@.str.4012 = private unnamed_addr constant [10 x i8] c"logic.rhs\00" -@.str.4013 = private unnamed_addr constant [10 x i8] c"logic.end\00" -@.str.4014 = private unnamed_addr constant [3 x i8] c"&&\00" -@.str.4015 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4016 = private unnamed_addr constant [11 x i8] c"logic.rend\00" -@.str.4017 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.4018 = private unnamed_addr constant [3 x i8] c"&&\00" -@.str.4019 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.4020 = private unnamed_addr constant [10 x i8] c"phi i1 [ \00" -@.str.4021 = private unnamed_addr constant [4 x i8] c", %\00" -@.str.4022 = private unnamed_addr constant [7 x i8] c" ], [ \00" -@.str.4023 = private unnamed_addr constant [4 x i8] c", %\00" -@.str.4024 = private unnamed_addr constant [3 x i8] c" ]\00" -@.str.4025 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4026 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4027 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4028 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.4029 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.4030 = private unnamed_addr constant [2 x i8] c"<\00" -@.str.4031 = private unnamed_addr constant [3 x i8] c"<=\00" -@.str.4032 = private unnamed_addr constant [2 x i8] c">\00" -@.str.4033 = private unnamed_addr constant [3 x i8] c">=\00" -@.str.4034 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4035 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.4036 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4037 = private unnamed_addr constant [48 x i8] c"an empty [] needs a type, like: []int nums = []\00" -@.str.4038 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4039 = private unnamed_addr constant [28 x i8] c"every element of this array\00" -@.str.4040 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.4041 = private unnamed_addr constant [9 x i8] c"mul i64 \00" -@.str.4042 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4043 = private unnamed_addr constant [27 x i8] c"call ptr @finch_alloc(i64 \00" -@.str.4044 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4045 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.4046 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4047 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4048 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4049 = private unnamed_addr constant [42 x i8] c"insertvalue { ptr, i64, i64 } undef, ptr \00" -@.str.4050 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4051 = private unnamed_addr constant [31 x i8] c"insertvalue { ptr, i64, i64 } \00" -@.str.4052 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4053 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.4054 = private unnamed_addr constant [31 x i8] c"insertvalue { ptr, i64, i64 } \00" -@.str.4055 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4056 = private unnamed_addr constant [4 x i8] c", 2\00" -@.str.4057 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.4058 = private unnamed_addr constant [29 x i8] c"there is no variable named '\00" -@.str.4059 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4060 = private unnamed_addr constant [61 x i8] c"this is a temporary value, it can't be changed or pointed to\00" -@.str.4061 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.4062 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4063 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.4064 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4065 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.4066 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4067 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4068 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4069 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4070 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.4071 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4072 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.4073 = private unnamed_addr constant [8 x i8] c"fprintf\00" -@.str.4074 = private unnamed_addr constant [6 x i8] c"stdin\00" -@.str.4075 = private unnamed_addr constant [7 x i8] c"stdout\00" -@.str.4076 = private unnamed_addr constant [7 x i8] c"stderr\00" -@.str.4077 = private unnamed_addr constant [2 x i8] c"2\00" -@.str.4078 = private unnamed_addr constant [6 x i8] c"stdin\00" -@.str.4079 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.4080 = private unnamed_addr constant [7 x i8] c"stdout\00" -@.str.4081 = private unnamed_addr constant [2 x i8] c"1\00" -@.str.4082 = private unnamed_addr constant [32 x i8] c"call ptr @finch_std_stream(i32 \00" -@.str.4083 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4008 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" +@.str.4009 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4010 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.4011 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.4012 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.4013 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4014 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" +@.str.4015 = private unnamed_addr constant [2 x i8] c"+\00" +@.str.4016 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4017 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4018 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.4019 = private unnamed_addr constant [33 x i8] c"call void @finch_str_concat(ptr \00" +@.str.4020 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4021 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4022 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4023 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.4024 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4025 = private unnamed_addr constant [2 x i8] c"+\00" +@.str.4026 = private unnamed_addr constant [2 x i8] c"-\00" +@.str.4027 = private unnamed_addr constant [2 x i8] c"*\00" +@.str.4028 = private unnamed_addr constant [2 x i8] c"/\00" +@.str.4029 = private unnamed_addr constant [2 x i8] c"%\00" +@.str.4030 = private unnamed_addr constant [2 x i8] c"&\00" +@.str.4031 = private unnamed_addr constant [2 x i8] c"|\00" +@.str.4032 = private unnamed_addr constant [2 x i8] c"^\00" +@.str.4033 = private unnamed_addr constant [3 x i8] c"<<\00" +@.str.4034 = private unnamed_addr constant [3 x i8] c">>\00" +@.str.4035 = private unnamed_addr constant [4 x i8] c"add\00" +@.str.4036 = private unnamed_addr constant [4 x i8] c"sub\00" +@.str.4037 = private unnamed_addr constant [4 x i8] c"mul\00" +@.str.4038 = private unnamed_addr constant [5 x i8] c"sdiv\00" +@.str.4039 = private unnamed_addr constant [5 x i8] c"srem\00" +@.str.4040 = private unnamed_addr constant [4 x i8] c"and\00" +@.str.4041 = private unnamed_addr constant [3 x i8] c"or\00" +@.str.4042 = private unnamed_addr constant [4 x i8] c"xor\00" +@.str.4043 = private unnamed_addr constant [4 x i8] c"shl\00" +@.str.4044 = private unnamed_addr constant [5 x i8] c"ashr\00" +@.str.4045 = private unnamed_addr constant [4 x i8] c"add\00" +@.str.4046 = private unnamed_addr constant [4 x i8] c"sub\00" +@.str.4047 = private unnamed_addr constant [4 x i8] c"mul\00" +@.str.4048 = private unnamed_addr constant [5 x i8] c"udiv\00" +@.str.4049 = private unnamed_addr constant [5 x i8] c"urem\00" +@.str.4050 = private unnamed_addr constant [4 x i8] c"and\00" +@.str.4051 = private unnamed_addr constant [3 x i8] c"or\00" +@.str.4052 = private unnamed_addr constant [4 x i8] c"xor\00" +@.str.4053 = private unnamed_addr constant [4 x i8] c"shl\00" +@.str.4054 = private unnamed_addr constant [5 x i8] c"lshr\00" +@.str.4055 = private unnamed_addr constant [2 x i8] c"/\00" +@.str.4056 = private unnamed_addr constant [2 x i8] c"%\00" +@.str.4057 = private unnamed_addr constant [2 x i8] c"0\00" +@.str.4058 = private unnamed_addr constant [17 x i8] c"division by zero\00" +@.str.4059 = private unnamed_addr constant [9 x i8] c"icmp eq \00" +@.str.4060 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4061 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.4062 = private unnamed_addr constant [17 x i8] c"division by zero\00" +@.str.4063 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4064 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4065 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4066 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4067 = private unnamed_addr constant [2 x i8] c"+\00" +@.str.4068 = private unnamed_addr constant [2 x i8] c"-\00" +@.str.4069 = private unnamed_addr constant [2 x i8] c"*\00" +@.str.4070 = private unnamed_addr constant [2 x i8] c"/\00" +@.str.4071 = private unnamed_addr constant [2 x i8] c"%\00" +@.str.4072 = private unnamed_addr constant [5 x i8] c"fadd\00" +@.str.4073 = private unnamed_addr constant [5 x i8] c"fsub\00" +@.str.4074 = private unnamed_addr constant [5 x i8] c"fmul\00" +@.str.4075 = private unnamed_addr constant [5 x i8] c"fdiv\00" +@.str.4076 = private unnamed_addr constant [5 x i8] c"frem\00" +@.str.4077 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4078 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4079 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4080 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4081 = private unnamed_addr constant [3 x i8] c"==\00" +@.str.4082 = private unnamed_addr constant [3 x i8] c"!=\00" +@.str.4083 = private unnamed_addr constant [4 x i8] c"ptr\00" @.str.4084 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4085 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4086 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.4087 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4088 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.4089 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4090 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4091 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" -@.str.4092 = private unnamed_addr constant [3 x i8] c"g:\00" -@.str.4093 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4094 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" -@.str.4095 = private unnamed_addr constant [3 x i8] c"g:\00" -@.str.4096 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4097 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00" -@.str.4098 = private unnamed_addr constant [2 x i8] c"@\00" -@.str.4099 = private unnamed_addr constant [20 x i8] c" = external global \00" -@.str.4100 = private unnamed_addr constant [2 x i8] c"@\00" -@.str.4101 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4102 = private unnamed_addr constant [44 x i8] c"' is a module; use something from it, like \00" -@.str.4103 = private unnamed_addr constant [11 x i8] c".name(...)\00" -@.str.4104 = private unnamed_addr constant [29 x i8] c"there is no variable named '\00" -@.str.4105 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4106 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" -@.str.4107 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4108 = private unnamed_addr constant [5 x i8] c"\0A```\00" -@.str.4109 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.4110 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.4111 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4112 = private unnamed_addr constant [2 x i8] c".\00" -@.str.4113 = private unnamed_addr constant [2 x i8] c"0\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".\00" -@.str.4116 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4117 = private unnamed_addr constant [2 x i8] c"e\00" -@.str.4118 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4119 = private unnamed_addr constant [2 x i8] c"E\00" -@.str.4120 = private unnamed_addr constant [3 x i8] c".0\00" -@.str.4121 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4122 = private unnamed_addr constant [3 x i8] c".0\00" -@.str.4123 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4124 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.4125 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4126 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.4127 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.4128 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4129 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.4130 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4131 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4132 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4133 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4134 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" -@.str.4135 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4136 = private unnamed_addr constant [10 x i8] c"the enum \00" -@.str.4137 = private unnamed_addr constant [18 x i8] c" has no variant '\00" -@.str.4138 = private unnamed_addr constant [12 x i8] c"' (it has: \00" -@.str.4139 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4140 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4141 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" -@.str.4142 = private unnamed_addr constant [2 x i8] c".\00" -@.str.4143 = private unnamed_addr constant [4 x i8] c" = \00" -@.str.4144 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4145 = private unnamed_addr constant [5 x i8] c"\0A```\00" -@.str.4146 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4147 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4148 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.4149 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4150 = private unnamed_addr constant [38 x i8] c"a variant of an enum can't be changed\00" -@.str.4151 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4152 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4153 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4154 = private unnamed_addr constant [58 x i8] c"this ptr has no type, so Finch doesn't know what's inside\00" -@.str.4155 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00" -@.str.4156 = private unnamed_addr constant [7 x i8] c", null\00" -@.str.4157 = private unnamed_addr constant [7 x i8] c"used .\00" -@.str.4158 = private unnamed_addr constant [19 x i8] c" 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 [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 [6 x i8] c"value\00" -@.str.4165 = private unnamed_addr constant [6 x i8] c"value\00" -@.str.4166 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4167 = private unnamed_addr constant [3 x i8] c"a \00" -@.str.4168 = private unnamed_addr constant [44 x i8] c" only has '.value' (the thing it points to)\00" -@.str.4169 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.4170 = private unnamed_addr constant [2 x i8] c".\00" -@.str.4171 = private unnamed_addr constant [27 x i8] c" can't be changed directly\00" -@.str.4172 = private unnamed_addr constant [4 x i8] c"len\00" -@.str.4173 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4174 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4175 = private unnamed_addr constant [35 x i8] c"an array has .len and .ptr, not '.\00" -@.str.4176 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4177 = private unnamed_addr constant [49 x i8] c".ptr of a temporary value would point to nothing\00" -@.str.4178 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4179 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.4180 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4181 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4182 = private unnamed_addr constant [31 x i8] c".ptr can't be changed directly\00" -@.str.4183 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4184 = private unnamed_addr constant [2 x i8] c"%\00" -@.str.4185 = private unnamed_addr constant [54 x i8] c".ptr of a temporary value would point to freed memory\00" -@.str.4186 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4187 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4188 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00" -@.str.4189 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4190 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4191 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.4192 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4193 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.4194 = private unnamed_addr constant [4 x i8] c"len\00" -@.str.4195 = private unnamed_addr constant [38 x i8] c"an array, map or str has .len, not '.\00" -@.str.4196 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4197 = private unnamed_addr constant [49 x i8] c".len can't be changed directly (use push or pop)\00" -@.str.4198 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.4199 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4200 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" -@.str.4201 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.4202 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4203 = private unnamed_addr constant [14 x i8] c"extractvalue \00" -@.str.4204 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4205 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.4206 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4207 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4208 = private unnamed_addr constant [22 x i8] c" has no fields (no '.\00" -@.str.4209 = private unnamed_addr constant [3 x i8] c"')\00" -@.str.4210 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4211 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.4212 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4213 = private unnamed_addr constant [12 x i8] c"the struct \00" -@.str.4214 = private unnamed_addr constant [16 x i8] c" has no field '\00" -@.str.4215 = private unnamed_addr constant [12 x i8] c"' (it has: \00" -@.str.4216 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4217 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4218 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4219 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" -@.str.4220 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4221 = private unnamed_addr constant [5 x i8] c"\0A```\00" -@.str.4222 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4223 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.4224 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4225 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" -@.str.4226 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4227 = private unnamed_addr constant [14 x i8] c"extractvalue \00" -@.str.4228 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4229 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4230 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4085 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.4086 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.4087 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4088 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4089 = private unnamed_addr constant [60 x i8] c"a str is never null; to check for empty text use s.len == 0\00" +@.str.4090 = private unnamed_addr constant [3 x i8] c"eq\00" +@.str.4091 = private unnamed_addr constant [3 x i8] c"!=\00" +@.str.4092 = private unnamed_addr constant [3 x i8] c"ne\00" +@.str.4093 = private unnamed_addr constant [6 x i8] c"icmp \00" +@.str.4094 = private unnamed_addr constant [6 x i8] c" ptr \00" +@.str.4095 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4096 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4097 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4098 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4099 = private unnamed_addr constant [28 x i8] c"call i32 @finch_str_eq(ptr \00" +@.str.4100 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4101 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4102 = private unnamed_addr constant [3 x i8] c"ne\00" +@.str.4103 = private unnamed_addr constant [3 x i8] c"!=\00" +@.str.4104 = private unnamed_addr constant [3 x i8] c"eq\00" +@.str.4105 = private unnamed_addr constant [6 x i8] c"icmp \00" +@.str.4106 = private unnamed_addr constant [6 x i8] c" i32 \00" +@.str.4107 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.4108 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4109 = private unnamed_addr constant [29 x i8] c"call i64 @finch_str_cmp(ptr \00" +@.str.4110 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4111 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4112 = private unnamed_addr constant [6 x i8] c"icmp \00" +@.str.4113 = private unnamed_addr constant [6 x i8] c" i64 \00" +@.str.4114 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.4115 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4116 = private unnamed_addr constant [3 x i8] c"==\00" +@.str.4117 = private unnamed_addr constant [3 x i8] c"!=\00" +@.str.4118 = private unnamed_addr constant [2 x i8] c"<\00" +@.str.4119 = private unnamed_addr constant [3 x i8] c"<=\00" +@.str.4120 = private unnamed_addr constant [2 x i8] c">\00" +@.str.4121 = private unnamed_addr constant [3 x i8] c">=\00" +@.str.4122 = private unnamed_addr constant [4 x i8] c"oeq\00" +@.str.4123 = private unnamed_addr constant [4 x i8] c"une\00" +@.str.4124 = private unnamed_addr constant [4 x i8] c"olt\00" +@.str.4125 = private unnamed_addr constant [4 x i8] c"ole\00" +@.str.4126 = private unnamed_addr constant [4 x i8] c"ogt\00" +@.str.4127 = private unnamed_addr constant [4 x i8] c"oge\00" +@.str.4128 = private unnamed_addr constant [6 x i8] c"fcmp \00" +@.str.4129 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4130 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4131 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4132 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4133 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4134 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.4135 = 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.4136 = private unnamed_addr constant [3 x i8] c"eq\00" +@.str.4137 = private unnamed_addr constant [3 x i8] c"!=\00" +@.str.4138 = private unnamed_addr constant [3 x i8] c"ne\00" +@.str.4139 = private unnamed_addr constant [6 x i8] c"icmp \00" +@.str.4140 = private unnamed_addr constant [6 x i8] c" i32 \00" +@.str.4141 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4142 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4143 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4144 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.4145 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4146 = private unnamed_addr constant [6 x i8] c"icmp \00" +@.str.4147 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4148 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4149 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4150 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4151 = private unnamed_addr constant [3 x i8] c"==\00" +@.str.4152 = private unnamed_addr constant [3 x i8] c"!=\00" +@.str.4153 = private unnamed_addr constant [2 x i8] c"<\00" +@.str.4154 = private unnamed_addr constant [3 x i8] c"<=\00" +@.str.4155 = private unnamed_addr constant [2 x i8] c">\00" +@.str.4156 = private unnamed_addr constant [3 x i8] c">=\00" +@.str.4157 = private unnamed_addr constant [3 x i8] c"eq\00" +@.str.4158 = private unnamed_addr constant [3 x i8] c"ne\00" +@.str.4159 = private unnamed_addr constant [4 x i8] c"ult\00" +@.str.4160 = private unnamed_addr constant [4 x i8] c"ule\00" +@.str.4161 = private unnamed_addr constant [4 x i8] c"ugt\00" +@.str.4162 = private unnamed_addr constant [4 x i8] c"uge\00" +@.str.4163 = private unnamed_addr constant [3 x i8] c"eq\00" +@.str.4164 = private unnamed_addr constant [3 x i8] c"ne\00" +@.str.4165 = private unnamed_addr constant [4 x i8] c"slt\00" +@.str.4166 = private unnamed_addr constant [4 x i8] c"sle\00" +@.str.4167 = private unnamed_addr constant [4 x i8] c"sgt\00" +@.str.4168 = private unnamed_addr constant [4 x i8] c"sge\00" +@.str.4169 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4170 = private unnamed_addr constant [3 x i8] c"&&\00" +@.str.4171 = private unnamed_addr constant [3 x i8] c"||\00" +@.str.4172 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4173 = private unnamed_addr constant [11 x i8] c"logic.from\00" +@.str.4174 = private unnamed_addr constant [10 x i8] c"logic.rhs\00" +@.str.4175 = private unnamed_addr constant [10 x i8] c"logic.end\00" +@.str.4176 = private unnamed_addr constant [3 x i8] c"&&\00" +@.str.4177 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4178 = private unnamed_addr constant [11 x i8] c"logic.rend\00" +@.str.4179 = private unnamed_addr constant [5 x i8] c"true\00" +@.str.4180 = private unnamed_addr constant [3 x i8] c"&&\00" +@.str.4181 = private unnamed_addr constant [6 x i8] c"false\00" +@.str.4182 = private unnamed_addr constant [10 x i8] c"phi i1 [ \00" +@.str.4183 = private unnamed_addr constant [4 x i8] c", %\00" +@.str.4184 = private unnamed_addr constant [7 x i8] c" ], [ \00" +@.str.4185 = private unnamed_addr constant [4 x i8] c", %\00" +@.str.4186 = private unnamed_addr constant [3 x i8] c" ]\00" +@.str.4187 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4188 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4189 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4190 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" +@.str.4191 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4192 = private unnamed_addr constant [3 x i8] c"==\00" +@.str.4193 = private unnamed_addr constant [3 x i8] c"!=\00" +@.str.4194 = private unnamed_addr constant [2 x i8] c"<\00" +@.str.4195 = private unnamed_addr constant [3 x i8] c"<=\00" +@.str.4196 = private unnamed_addr constant [2 x i8] c">\00" +@.str.4197 = private unnamed_addr constant [3 x i8] c">=\00" +@.str.4198 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.4199 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.4200 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4201 = private unnamed_addr constant [48 x i8] c"an empty [] needs a type, like: []int nums = []\00" +@.str.4202 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4203 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" +@.str.4204 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.4205 = private unnamed_addr constant [28 x i8] c"every element of this array\00" +@.str.4206 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4207 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.4208 = private unnamed_addr constant [9 x i8] c"mul i64 \00" +@.str.4209 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4210 = private unnamed_addr constant [27 x i8] c"call ptr @finch_alloc(i64 \00" +@.str.4211 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4212 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.4213 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4214 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.4215 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4216 = private unnamed_addr constant [42 x i8] c"insertvalue { ptr, i64, i64 } undef, ptr \00" +@.str.4217 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.4218 = private unnamed_addr constant [31 x i8] c"insertvalue { ptr, i64, i64 } \00" +@.str.4219 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.4220 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str.4221 = private unnamed_addr constant [31 x i8] c"insertvalue { ptr, i64, i64 } \00" +@.str.4222 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.4223 = private unnamed_addr constant [4 x i8] c", 2\00" +@.str.4224 = private unnamed_addr constant [4 x i8] c"var\00" +@.str.4225 = private unnamed_addr constant [29 x i8] c"there is no variable named '\00" +@.str.4226 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.4227 = private unnamed_addr constant [61 x i8] c"this is a temporary value, it can't be changed or pointed to\00" +@.str.4228 = private unnamed_addr constant [4 x i8] c"var\00" +@.str.4229 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4230 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" @.str.4231 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4232 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.4232 = private unnamed_addr constant [27 x i8] c"used .ci 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 [4 x i8] c"int\00" -@.str.4235 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4236 = private unnamed_addr constant [9 x i8] c"an index\00" -@.str.4237 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.4238 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4239 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.4240 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4241 = private unnamed_addr constant [14 x i8] c", i64 0, i64 \00" -@.str.4242 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4243 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4244 = private unnamed_addr constant [58 x i8] c"this ptr has no type, so Finch doesn't know what's inside\00" -@.str.4245 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4246 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4247 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.4248 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4249 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4250 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.4251 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4252 = private unnamed_addr constant [47 x i8] c"[ ] works on arrays, str and pointers, not on \00" -@.str.4253 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4254 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.4255 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4256 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4257 = private unnamed_addr constant [45 x i8] c"this is a temporary str, it can't be changed\00" -@.str.4258 = private unnamed_addr constant [30 x i8] c"call void @finch_str_own(ptr \00" -@.str.4259 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4260 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4261 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00" -@.str.4262 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.4263 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00" -@.str.4264 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4265 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.4266 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4267 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4268 = private unnamed_addr constant [18 x i8] c"named arguments (\00" -@.str.4269 = private unnamed_addr constant [37 x i8] c": ...) are only for creating structs\00" -@.str.4270 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4271 = private unnamed_addr constant [9 x i8] c"' takes \00" -@.str.4272 = private unnamed_addr constant [23 x i8] c" argument(s), but got \00" -@.str.4273 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4274 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4275 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.4276 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4277 = private unnamed_addr constant [4 x i8] c"f64\00" -@.str.4278 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4279 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4280 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4281 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4282 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4283 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.4284 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.4285 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.4286 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.4287 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.4288 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.4289 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.4290 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.4291 = private unnamed_addr constant [4 x i8] c"ptr\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 [4 x i8] c"str\00" +@.str.4234 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.4235 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.4236 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4237 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" +@.str.4238 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4239 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" +@.str.4240 = private unnamed_addr constant [8 x i8] c"fprintf\00" +@.str.4241 = private unnamed_addr constant [6 x i8] c"stdin\00" +@.str.4242 = private unnamed_addr constant [7 x i8] c"stdout\00" +@.str.4243 = private unnamed_addr constant [7 x i8] c"stderr\00" +@.str.4244 = private unnamed_addr constant [2 x i8] c"2\00" +@.str.4245 = private unnamed_addr constant [6 x i8] c"stdin\00" +@.str.4246 = private unnamed_addr constant [2 x i8] c"0\00" +@.str.4247 = private unnamed_addr constant [7 x i8] c"stdout\00" +@.str.4248 = private unnamed_addr constant [2 x i8] c"1\00" +@.str.4249 = private unnamed_addr constant [32 x i8] c"call ptr @finch_std_stream(i32 \00" +@.str.4250 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4251 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4252 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4253 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" +@.str.4254 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4255 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" +@.str.4256 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4257 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4258 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" +@.str.4259 = private unnamed_addr constant [3 x i8] c"g:\00" +@.str.4260 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4261 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" +@.str.4262 = private unnamed_addr constant [3 x i8] c"g:\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 .head on a null pointer\00" +@.str.4265 = private unnamed_addr constant [2 x i8] c"@\00" +@.str.4266 = private unnamed_addr constant [20 x i8] c" = external global \00" +@.str.4267 = private unnamed_addr constant [2 x i8] c"@\00" +@.str.4268 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.4269 = private unnamed_addr constant [44 x i8] c"' is a module; use something from it, like \00" +@.str.4270 = private unnamed_addr constant [11 x i8] c".name(...)\00" +@.str.4271 = private unnamed_addr constant [29 x i8] c"there is no variable named '\00" +@.str.4272 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.4273 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" +@.str.4274 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4275 = private unnamed_addr constant [5 x i8] c"\0A```\00" +@.str.4276 = private unnamed_addr constant [7 x i8] c"member\00" +@.str.4277 = private unnamed_addr constant [6 x i8] c"index\00" +@.str.4278 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4279 = private unnamed_addr constant [2 x i8] c".\00" +@.str.4280 = private unnamed_addr constant [2 x i8] c"0\00" +@.str.4281 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4282 = private unnamed_addr constant [2 x i8] c".\00" +@.str.4283 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4284 = private unnamed_addr constant [2 x i8] c"e\00" +@.str.4285 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4286 = private unnamed_addr constant [2 x i8] c"E\00" +@.str.4287 = private unnamed_addr constant [3 x i8] c".0\00" +@.str.4288 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4289 = private unnamed_addr constant [3 x i8] c".0\00" +@.str.4290 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4291 = private unnamed_addr constant [4 x i8] c"var\00" +@.str.4292 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4293 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.4294 = private unnamed_addr constant [7 x i8] c"member\00" @.str.4295 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4296 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" -@.str.4297 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4298 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4299 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.4300 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.4301 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.4302 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.4303 = private unnamed_addr constant [33 x i8] c"call i32 @finch_str_try_int(ptr \00" -@.str.4304 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4305 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4306 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4307 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str.4308 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4309 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4310 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.4311 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4312 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4313 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.4314 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.4315 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4316 = private unnamed_addr constant [7 x i8] c"double\00" -@.str.4317 = private unnamed_addr constant [7 x i8] c"double\00" -@.str.4318 = private unnamed_addr constant [4 x i8] c"0.0\00" -@.str.4319 = private unnamed_addr constant [35 x i8] c"call i32 @finch_str_try_float(ptr \00" -@.str.4320 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4321 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4322 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4323 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str.4324 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4325 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4326 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.4327 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.4296 = private unnamed_addr constant [4 x i8] c"var\00" +@.str.4297 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4298 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4299 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4300 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4301 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" +@.str.4302 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4303 = private unnamed_addr constant [10 x i8] c"the enum \00" +@.str.4304 = private unnamed_addr constant [18 x i8] c" has no variant '\00" +@.str.4305 = private unnamed_addr constant [12 x i8] c"' (it has: \00" +@.str.4306 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4307 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4308 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" +@.str.4309 = private unnamed_addr constant [2 x i8] c".\00" +@.str.4310 = private unnamed_addr constant [4 x i8] c" = \00" +@.str.4311 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4312 = private unnamed_addr constant [5 x i8] c"\0A```\00" +@.str.4313 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4314 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4315 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.4316 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4317 = private unnamed_addr constant [38 x i8] c"a variant of an enum can't be changed\00" +@.str.4318 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4319 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4320 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4321 = private unnamed_addr constant [58 x i8] c"this ptr has no type, so Finch doesn't know what's inside\00" +@.str.4322 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00" +@.str.4323 = private unnamed_addr constant [7 x i8] c", null\00" +@.str.4324 = private unnamed_addr constant [7 x i8] c"used .\00" +@.str.4325 = private unnamed_addr constant [19 x i8] c" on a null pointer\00" +@.str.4326 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4327 = private unnamed_addr constant [7 x i8] c"struct\00" @.str.4328 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4329 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.4330 = private unnamed_addr constant [7 x i8] c"double\00" -@.str.4331 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4332 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4333 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4334 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.4335 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4336 = private unnamed_addr constant [32 x i8] c"call i64 @finch_str_to_int(ptr \00" -@.str.4337 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4338 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4339 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4329 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.4330 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4331 = private unnamed_addr constant [6 x i8] c"value\00" +@.str.4332 = private unnamed_addr constant [6 x i8] c"value\00" +@.str.4333 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.4334 = private unnamed_addr constant [3 x i8] c"a \00" +@.str.4335 = private unnamed_addr constant [44 x i8] c" only has '.value' (the thing it points to)\00" +@.str.4336 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str.4337 = private unnamed_addr constant [2 x i8] c".\00" +@.str.4338 = private unnamed_addr constant [27 x i8] c" can't be changed directly\00" +@.str.4339 = private unnamed_addr constant [4 x i8] c"len\00" @.str.4340 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4341 = private unnamed_addr constant [37 x i8] c"call double @finch_str_to_float(ptr \00" -@.str.4342 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4343 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4344 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4345 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4346 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.4347 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.4348 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4349 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4350 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4351 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str.4352 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.4353 = private unnamed_addr constant [7 x i8] c"fptoui\00" -@.str.4354 = private unnamed_addr constant [7 x i8] c"fptosi\00" -@.str.4355 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4356 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4357 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.4358 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4359 = private unnamed_addr constant [9 x i8] c"icmp ne \00" -@.str.4360 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4361 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4362 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4363 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4364 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.4365 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4366 = private unnamed_addr constant [14 x i8] c"inttoptr i64 \00" -@.str.4367 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.4368 = private unnamed_addr constant [8 x i8] c" to ptr\00" -@.str.4369 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4370 = private unnamed_addr constant [14 x i8] c"ptrtoint ptr \00" -@.str.4371 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.4372 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4373 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4374 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4375 = 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.4376 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4377 = private unnamed_addr constant [12 x i8] c"can't turn \00" -@.str.4378 = private unnamed_addr constant [7 x i8] c" into \00" -@.str.4379 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4380 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4381 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.4382 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4383 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.4384 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4385 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4386 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4387 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4388 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.4389 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4390 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4391 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4392 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.4341 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4342 = private unnamed_addr constant [35 x i8] c"an array has .len and .ptr, not '.\00" +@.str.4343 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.4344 = private unnamed_addr constant [49 x i8] c".ptr of a temporary value would point to nothing\00" +@.str.4345 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4346 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.4347 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4348 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4349 = private unnamed_addr constant [31 x i8] c".ptr can't be changed directly\00" +@.str.4350 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4351 = private unnamed_addr constant [2 x i8] c"%\00" +@.str.4352 = private unnamed_addr constant [54 x i8] c".ptr of a temporary value would point to freed memory\00" +@.str.4353 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4354 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.4355 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00" +@.str.4356 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.4357 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4358 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.4359 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4360 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.4361 = private unnamed_addr constant [4 x i8] c"len\00" +@.str.4362 = private unnamed_addr constant [38 x i8] c"an array, map or str has .len, not '.\00" +@.str.4363 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.4364 = private unnamed_addr constant [49 x i8] c".len can't be changed directly (use push or pop)\00" +@.str.4365 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.4366 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4367 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" +@.str.4368 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.4369 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.4370 = private unnamed_addr constant [14 x i8] c"extractvalue \00" +@.str.4371 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4372 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str.4373 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.4374 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.4375 = private unnamed_addr constant [22 x i8] c" has no fields (no '.\00" +@.str.4376 = private unnamed_addr constant [3 x i8] c"')\00" +@.str.4377 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4378 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.4379 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4380 = private unnamed_addr constant [12 x i8] c"the struct \00" +@.str.4381 = private unnamed_addr constant [16 x i8] c" has no field '\00" +@.str.4382 = private unnamed_addr constant [12 x i8] c"' (it has: \00" +@.str.4383 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4384 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4385 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4386 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" +@.str.4387 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4388 = private unnamed_addr constant [5 x i8] c"\0A```\00" +@.str.4389 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4390 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.4391 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4392 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \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 [12 x i8] c"src/gen.fch\00" -@.str.4396 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str.4394 = private unnamed_addr constant [14 x i8] c"extractvalue \00" +@.str.4395 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4396 = private unnamed_addr constant [3 x i8] c", \00" @.str.4397 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.4398 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4399 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4400 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4401 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.4399 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4400 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" +@.str.4401 = private unnamed_addr constant [4 x i8] c"map\00" @.str.4402 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4403 = private unnamed_addr constant [7 x i8] c"double\00" -@.str.4404 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4405 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.4406 = private unnamed_addr constant [4 x i8] c" x \00" -@.str.4407 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.4408 = private unnamed_addr constant [3 x i8] c"{ \00" -@.str.4409 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4410 = private unnamed_addr constant [3 x i8] c" }\00" -@.str.4411 = private unnamed_addr constant [9 x i8] c"indirect\00" -@.str.4412 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4413 = private unnamed_addr constant [5 x i8] c"i128\00" -@.str.4414 = private unnamed_addr constant [5 x i8] c"i128\00" -@.str.4415 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.4416 = private unnamed_addr constant [2 x i8] c"i\00" -@.str.4417 = private unnamed_addr constant [10 x i8] c"[2 x i64]\00" -@.str.4418 = private unnamed_addr constant [10 x i8] c"[2 x i64]\00" -@.str.4419 = private unnamed_addr constant [7 x i8] c"direct\00" -@.str.4420 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4421 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4422 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.4423 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4403 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.4404 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4405 = private unnamed_addr constant [9 x i8] c"an index\00" +@.str.4406 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str.4407 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4408 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.4409 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4410 = private unnamed_addr constant [14 x i8] c", i64 0, i64 \00" +@.str.4411 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4412 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4413 = private unnamed_addr constant [58 x i8] c"this ptr has no type, so Finch doesn't know what's inside\00" +@.str.4414 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4415 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4416 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.4417 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4418 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.4419 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.4420 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4421 = private unnamed_addr constant [47 x i8] c"[ ] works on arrays, str and pointers, not on \00" +@.str.4422 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.4423 = private unnamed_addr constant [6 x i8] c"array\00" @.str.4424 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4425 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.4426 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4427 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.4428 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4429 = private unnamed_addr constant [2 x i8] c"i\00" -@.str.4430 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4431 = private unnamed_addr constant [9 x i8] c"indirect\00" -@.str.4432 = private unnamed_addr constant [7 x i8] c"memory\00" -@.str.4433 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4434 = private unnamed_addr constant [17 x i8] c"division by zero\00" -@.str.4435 = private unnamed_addr constant [7 x i8] c"memory\00" -@.str.4436 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [12 x i8] c"src/gen.fch\00" -@.str.4440 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4441 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4442 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4443 = private unnamed_addr constant [7 x i8] c"double\00" -@.str.4444 = private unnamed_addr constant [12 x i8] c"<2 x float>\00" -@.str.4445 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4446 = private unnamed_addr constant [2 x i8] c"i\00" -@.str.4447 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4448 = private unnamed_addr constant [3 x i8] c"{ \00" -@.str.4449 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4450 = private unnamed_addr constant [3 x i8] c" }\00" -@.str.4451 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4452 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4453 = private unnamed_addr constant [9 x i8] c"indirect\00" -@.str.4454 = private unnamed_addr constant [7 x i8] c"memory\00" -@.str.4455 = private unnamed_addr constant [7 x i8] c"memory\00" -@.str.4456 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4457 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4458 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4459 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4460 = private unnamed_addr constant [2 x i8] c"i\00" -@.str.4461 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4462 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.4463 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4464 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.4465 = private unnamed_addr constant [7 x i8] c"memory\00" -@.str.4466 = private unnamed_addr constant [7 x i8] c"direct\00" -@.str.4467 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4468 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4469 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.4470 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [19 x i8] c" the Finch struct \00" -@.str.4474 = private unnamed_addr constant [21 x i8] c", which C can't take\00" -@.str.4475 = private unnamed_addr constant [17 x i8] c"the C function '\00" -@.str.4476 = private unnamed_addr constant [3 x i8] c"' \00" -@.str.4477 = private unnamed_addr constant [13 x i8] c" the struct \00" -@.str.4478 = private unnamed_addr constant [41 x i8] c" by value, which Finch can't do yet: it \00" -@.str.4479 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4480 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4481 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4482 = private unnamed_addr constant [60 x i8] c"methods can't be exported (export a plain fn that calls it)\00" -@.str.4483 = 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.4484 = private unnamed_addr constant [30 x i8] c"an export fn can't be generic\00" -@.str.4485 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4486 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4487 = private unnamed_addr constant [67 x i8] c"an export fn takes numbers, bool, char and pointers only (this is \00" -@.str.4488 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4489 = private unnamed_addr constant [51 x i8] c"; pass text as ptr[char] and make it a str inside)\00" -@.str.4490 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4491 = private unnamed_addr constant [70 x i8] c"an export fn returns nothing, a number, bool, char or a pointer (not \00" -@.str.4492 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4493 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4494 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.4495 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4496 = private unnamed_addr constant [39 x i8] c"' is exported twice (from two modules)\00" +@.str.4425 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4426 = private unnamed_addr constant [45 x i8] c"this is a temporary str, it can't be changed\00" +@.str.4427 = private unnamed_addr constant [30 x i8] c"call void @finch_str_own(ptr \00" +@.str.4428 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4429 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.4430 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00" +@.str.4431 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str.4432 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00" +@.str.4433 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.4434 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.4435 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4436 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.4437 = private unnamed_addr constant [18 x i8] c"named arguments (\00" +@.str.4438 = private unnamed_addr constant [37 x i8] c": ...) are only for creating structs\00" +@.str.4439 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.4440 = private unnamed_addr constant [9 x i8] c"' takes \00" +@.str.4441 = private unnamed_addr constant [23 x i8] c" argument(s), but got \00" +@.str.4442 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4443 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.4444 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.4445 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.4446 = private unnamed_addr constant [4 x i8] c"f64\00" +@.str.4447 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.4448 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.4449 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.4450 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.4451 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4452 = private unnamed_addr constant [3 x i8] c"i8\00" +@.str.4453 = private unnamed_addr constant [4 x i8] c"i16\00" +@.str.4454 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.4455 = private unnamed_addr constant [3 x i8] c"u8\00" +@.str.4456 = private unnamed_addr constant [4 x i8] c"u16\00" +@.str.4457 = private unnamed_addr constant [4 x i8] c"u32\00" +@.str.4458 = private unnamed_addr constant [4 x i8] c"u64\00" +@.str.4459 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.4460 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4461 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4462 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4463 = private unnamed_addr constant [4 x i8] c"str\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 .ftarget on a null pointer\00" +@.str.4466 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.4467 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.4468 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" +@.str.4469 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.4470 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.4471 = private unnamed_addr constant [2 x i8] c"0\00" +@.str.4472 = private unnamed_addr constant [33 x i8] c"call i32 @finch_str_try_int(ptr \00" +@.str.4473 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4474 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4475 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4476 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" +@.str.4477 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.4478 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4479 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" +@.str.4480 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.4481 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4482 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" +@.str.4483 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.4484 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.4485 = private unnamed_addr constant [7 x i8] c"double\00" +@.str.4486 = private unnamed_addr constant [7 x i8] c"double\00" +@.str.4487 = private unnamed_addr constant [4 x i8] c"0.0\00" +@.str.4488 = private unnamed_addr constant [35 x i8] c"call i32 @finch_str_try_float(ptr \00" +@.str.4489 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4490 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4491 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4492 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" +@.str.4493 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.4494 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4495 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" +@.str.4496 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" @.str.4497 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4498 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4499 = private unnamed_addr constant [14 x i8] c"i8 zeroext %e\00" -@.str.4500 = private unnamed_addr constant [4 x i8] c"i1 \00" -@.str.4501 = private unnamed_addr constant [14 x i8] c"icmp ne i8 %e\00" -@.str.4502 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4503 = private unnamed_addr constant [4 x i8] c" %e\00" -@.str.4504 = private unnamed_addr constant [4 x i8] c" %e\00" -@.str.4505 = private unnamed_addr constant [6 x i8] c"call \00" -@.str.4506 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4507 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.4508 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4509 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4510 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4511 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4512 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4513 = private unnamed_addr constant [9 x i8] c"ret void\00" -@.str.4514 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4515 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.4516 = private unnamed_addr constant [9 x i8] c" zeroext\00" -@.str.4517 = private unnamed_addr constant [8 x i8] c"ret i8 \00" -@.str.4518 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str.4519 = private unnamed_addr constant [7 x i8] c" to i8\00" -@.str.4520 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.4521 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4522 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4523 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4524 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.4525 = private unnamed_addr constant [11 x i8] c" dllexport\00" -@.str.4526 = private unnamed_addr constant [7 x i8] c"define\00" -@.str.4527 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4528 = private unnamed_addr constant [3 x i8] c" @\00" -@.str.4529 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.4530 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4531 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4532 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4533 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.4534 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4535 = private unnamed_addr constant [10 x i8] c"@finch.c.\00" -@.str.4536 = private unnamed_addr constant [2 x i8] c".\00" -@.str.4537 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4538 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" -@.str.4539 = private unnamed_addr constant [3 x i8] c"t:\00" -@.str.4540 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4541 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" -@.str.4542 = private unnamed_addr constant [3 x i8] c"t:\00" -@.str.4543 = private unnamed_addr constant [6 x i8] c"addr(\00" -@.str.4544 = 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.4545 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4546 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4547 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4498 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" +@.str.4499 = private unnamed_addr constant [7 x i8] c"double\00" +@.str.4500 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.4501 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4502 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4503 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" +@.str.4504 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4505 = private unnamed_addr constant [32 x i8] c"call i64 @finch_str_to_int(ptr \00" +@.str.4506 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4507 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.4508 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4509 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.4510 = private unnamed_addr constant [37 x i8] c"call double @finch_str_to_float(ptr \00" +@.str.4511 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4512 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.4513 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4514 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.4515 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.4516 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.4517 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.4518 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.4519 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4520 = private unnamed_addr constant [9 x i8] c"zext i1 \00" +@.str.4521 = private unnamed_addr constant [5 x i8] c" to \00" +@.str.4522 = private unnamed_addr constant [7 x i8] c"fptoui\00" +@.str.4523 = private unnamed_addr constant [7 x i8] c"fptosi\00" +@.str.4524 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4525 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4526 = private unnamed_addr constant [5 x i8] c" to \00" +@.str.4527 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4528 = private unnamed_addr constant [9 x i8] c"icmp ne \00" +@.str.4529 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4530 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.4531 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4532 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4533 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.4534 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4535 = private unnamed_addr constant [14 x i8] c"inttoptr i64 \00" +@.str.4536 = private unnamed_addr constant [4 x i8] c"u64\00" +@.str.4537 = private unnamed_addr constant [8 x i8] c" to ptr\00" +@.str.4538 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4539 = private unnamed_addr constant [14 x i8] c"ptrtoint ptr \00" +@.str.4540 = private unnamed_addr constant [5 x i8] c" to \00" +@.str.4541 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4542 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4543 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4544 = 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.4545 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4546 = private unnamed_addr constant [12 x i8] c"can't turn \00" +@.str.4547 = private unnamed_addr constant [7 x i8] c" into \00" @.str.4548 = private unnamed_addr constant [7 x i8] c"struct\00" @.str.4549 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.4550 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" @.str.4551 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4552 = private unnamed_addr constant [6 x i8] c"addr(\00" -@.str.4553 = 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.4554 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4555 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4556 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4557 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4558 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4559 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4560 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.4561 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4562 = private unnamed_addr constant [6 x i8] c"addr(\00" -@.str.4563 = private unnamed_addr constant [39 x i8] c"): a function given to C can't return \00" -@.str.4564 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4565 = private unnamed_addr constant [10 x i8] c"ptr sret(\00" -@.str.4566 = private unnamed_addr constant [15 x i8] c") align 16 %c0\00" -@.str.4567 = private unnamed_addr constant [4 x i8] c"%c0\00" -@.str.4568 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4552 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str.4553 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4554 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4555 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4556 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.4557 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.4558 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4559 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.4560 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4561 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.4562 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4563 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4564 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4565 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str.4566 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4567 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4568 = private unnamed_addr constant [6 x i8] c"float\00" @.str.4569 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4570 = private unnamed_addr constant [7 x i8] c"memory\00" -@.str.4571 = private unnamed_addr constant [11 x i8] c"ptr byval(\00" -@.str.4572 = private unnamed_addr constant [9 x i8] c") align \00" -@.str.4573 = private unnamed_addr constant [4 x i8] c" %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 [9 x i8] c"indirect\00" -@.str.4577 = private unnamed_addr constant [7 x i8] c"ptr %c\00" -@.str.4578 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4579 = private unnamed_addr constant [3 x i8] c"%c\00" -@.str.4580 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4581 = private unnamed_addr constant [10 x i8] c"[32 x i8]\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" %c\00" -@.str.4584 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4585 = private unnamed_addr constant [3 x i8] c"%c\00" -@.str.4586 = private unnamed_addr constant [32 x i8] c"getelementptr inbounds i8, ptr \00" -@.str.4587 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4588 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4589 = private unnamed_addr constant [4 x i8] c" %c\00" -@.str.4590 = private unnamed_addr constant [4 x i8] c" %c\00" -@.str.4591 = private unnamed_addr constant [6 x i8] c"call \00" -@.str.4592 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4593 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.4594 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4595 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4596 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4597 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4598 = private unnamed_addr constant [9 x i8] c"ret void\00" -@.str.4599 = private unnamed_addr constant [9 x i8] c"ret void\00" -@.str.4600 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4601 = private unnamed_addr constant [10 x i8] c"[32 x i8]\00" -@.str.4602 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.4603 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4604 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.4605 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4606 = private unnamed_addr constant [16 x i8] c"define internal\00" -@.str.4607 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4608 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4609 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.4610 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4611 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4612 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4613 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" -@.str.4614 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4615 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4570 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.4571 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4572 = private unnamed_addr constant [7 x i8] c"double\00" +@.str.4573 = private unnamed_addr constant [7 x i8] c"expand\00" +@.str.4574 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.4575 = private unnamed_addr constant [4 x i8] c" x \00" +@.str.4576 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.4577 = private unnamed_addr constant [3 x i8] c"{ \00" +@.str.4578 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4579 = private unnamed_addr constant [3 x i8] c" }\00" +@.str.4580 = private unnamed_addr constant [9 x i8] c"indirect\00" +@.str.4581 = private unnamed_addr constant [7 x i8] c"expand\00" +@.str.4582 = private unnamed_addr constant [5 x i8] c"i128\00" +@.str.4583 = private unnamed_addr constant [5 x i8] c"i128\00" +@.str.4584 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.4585 = private unnamed_addr constant [2 x i8] c"i\00" +@.str.4586 = private unnamed_addr constant [10 x i8] c"[2 x i64]\00" +@.str.4587 = private unnamed_addr constant [10 x i8] c"[2 x i64]\00" +@.str.4588 = private unnamed_addr constant [7 x i8] c"direct\00" +@.str.4589 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.4590 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4591 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.4592 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4593 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4594 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" +@.str.4595 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4596 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" +@.str.4597 = private unnamed_addr constant [7 x i8] c"expand\00" +@.str.4598 = private unnamed_addr constant [2 x i8] c"i\00" +@.str.4599 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4600 = private unnamed_addr constant [9 x i8] c"indirect\00" +@.str.4601 = private unnamed_addr constant [7 x i8] c"memory\00" +@.str.4602 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4603 = private unnamed_addr constant [17 x i8] c"division by zero\00" +@.str.4604 = private unnamed_addr constant [7 x i8] c"memory\00" +@.str.4605 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4606 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4607 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4608 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4609 = private unnamed_addr constant [7 x i8] c"expand\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 [7 x i8] c"double\00" +@.str.4613 = private unnamed_addr constant [12 x i8] c"<2 x float>\00" +@.str.4614 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.4615 = private unnamed_addr constant [2 x i8] c"i\00" @.str.4616 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4617 = private unnamed_addr constant [55 x i8] c"(...) turns a whole number into the enum, but this is \00" -@.str.4618 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.4619 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4620 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4621 = private unnamed_addr constant [38 x i8] c" is not the number of any variant of \00" -@.str.4622 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4623 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4624 = private unnamed_addr constant [13 x i8] c"icmp eq i64 \00" -@.str.4625 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4626 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4627 = private unnamed_addr constant [7 x i8] c"or i1 \00" -@.str.4628 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4629 = private unnamed_addr constant [8 x i8] c"xor i1 \00" -@.str.4630 = private unnamed_addr constant [7 x i8] c", true\00" -@.str.4631 = private unnamed_addr constant [33 x i8] c"this number is not a variant of \00" -@.str.4632 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" -@.str.4633 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.4634 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4635 = private unnamed_addr constant [9 x i8] c" zeroext\00" -@.str.4636 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.4617 = private unnamed_addr constant [3 x i8] c"{ \00" +@.str.4618 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4619 = private unnamed_addr constant [3 x i8] c" }\00" +@.str.4620 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.4621 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.4622 = private unnamed_addr constant [9 x i8] c"indirect\00" +@.str.4623 = private unnamed_addr constant [7 x i8] c"memory\00" +@.str.4624 = private unnamed_addr constant [7 x i8] c"memory\00" +@.str.4625 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.4626 = private unnamed_addr constant [7 x i8] c"expand\00" +@.str.4627 = private unnamed_addr constant [7 x i8] c"expand\00" +@.str.4628 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4629 = private unnamed_addr constant [2 x i8] c"i\00" +@.str.4630 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4631 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" +@.str.4632 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4633 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" +@.str.4634 = private unnamed_addr constant [7 x i8] c"memory\00" +@.str.4635 = private unnamed_addr constant [7 x i8] c"direct\00" +@.str.4636 = private unnamed_addr constant [7 x i8] c"struct\00" @.str.4637 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4638 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.4639 = private unnamed_addr constant [9 x i8] c" signext\00" -@.str.4640 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4641 = private unnamed_addr constant [9 x i8] c" zeroext\00" -@.str.4642 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4643 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4644 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4645 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4646 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" -@.str.4647 = private unnamed_addr constant [4 x i8] c"...\00" -@.str.4648 = private unnamed_addr constant [18 x i8] c"C function from `\00" -@.str.4649 = private unnamed_addr constant [8 x i8] c"`\0A```c\0A\00" -@.str.4650 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4651 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.4652 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4653 = private unnamed_addr constant [6 x i8] c")\0A```\00" -@.str.4654 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4655 = private unnamed_addr constant [17 x i8] c"the C function '\00" -@.str.4656 = private unnamed_addr constant [36 x i8] c"' can't be used from Finch yet: it \00" -@.str.4657 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4658 = private unnamed_addr constant [18 x i8] c"' takes at least \00" -@.str.4659 = private unnamed_addr constant [23 x i8] c" argument(s), but got \00" -@.str.4660 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4661 = private unnamed_addr constant [9 x i8] c"' takes \00" -@.str.4662 = private unnamed_addr constant [23 x i8] c" argument(s), but got \00" -@.str.4663 = private unnamed_addr constant [8 x i8] c"returns\00" -@.str.4664 = private unnamed_addr constant [6 x i8] c"takes\00" -@.str.4665 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4666 = private unnamed_addr constant [10 x i8] c"ptr sret(\00" -@.str.4667 = private unnamed_addr constant [11 x i8] c") align 16\00" -@.str.4668 = private unnamed_addr constant [10 x i8] c"ptr sret(\00" -@.str.4669 = private unnamed_addr constant [12 x i8] c") align 16 \00" -@.str.4670 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4671 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4672 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4673 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4674 = private unnamed_addr constant [10 x i8] c"argument \00" -@.str.4675 = private unnamed_addr constant [5 x i8] c" of \00" -@.str.4676 = private unnamed_addr constant [7 x i8] c"memory\00" -@.str.4677 = private unnamed_addr constant [11 x i8] c"ptr byval(\00" -@.str.4678 = private unnamed_addr constant [9 x i8] c") align \00" -@.str.4679 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4680 = private unnamed_addr constant [9 x i8] c"indirect\00" -@.str.4681 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4682 = private unnamed_addr constant [5 x i8] c"ptr \00" -@.str.4683 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4684 = private unnamed_addr constant [10 x i8] c"[32 x i8]\00" -@.str.4685 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4686 = private unnamed_addr constant [32 x i8] c"getelementptr inbounds i8, ptr \00" -@.str.4687 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4688 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4689 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4638 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.4639 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4640 = private unnamed_addr constant [17 x i8] c"the C function '\00" +@.str.4641 = private unnamed_addr constant [3 x i8] c"' \00" +@.str.4642 = private unnamed_addr constant [19 x i8] c" the Finch struct \00" +@.str.4643 = private unnamed_addr constant [21 x i8] c", which C can't take\00" +@.str.4644 = private unnamed_addr constant [17 x i8] c"the C function '\00" +@.str.4645 = private unnamed_addr constant [3 x i8] c"' \00" +@.str.4646 = private unnamed_addr constant [13 x i8] c" the struct \00" +@.str.4647 = private unnamed_addr constant [41 x i8] c" by value, which Finch can't do yet: it \00" +@.str.4648 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4649 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.4650 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4651 = private unnamed_addr constant [60 x i8] c"methods can't be exported (export a plain fn that calls it)\00" +@.str.4652 = 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.4653 = private unnamed_addr constant [30 x i8] c"an export fn can't be generic\00" +@.str.4654 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4655 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4656 = private unnamed_addr constant [67 x i8] c"an export fn takes numbers, bool, char and pointers only (this is \00" +@.str.4657 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4658 = private unnamed_addr constant [51 x i8] c"; pass text as ptr[char] and make it a str inside)\00" +@.str.4659 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.4660 = private unnamed_addr constant [70 x i8] c"an export fn returns nothing, a number, bool, char or a pointer (not \00" +@.str.4661 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4662 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4663 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.4664 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.4665 = private unnamed_addr constant [39 x i8] c"' is exported twice (from two modules)\00" +@.str.4666 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4667 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4668 = private unnamed_addr constant [14 x i8] c"i8 zeroext %e\00" +@.str.4669 = private unnamed_addr constant [4 x i8] c"i1 \00" +@.str.4670 = private unnamed_addr constant [14 x i8] c"icmp ne i8 %e\00" +@.str.4671 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.4672 = private unnamed_addr constant [4 x i8] c" %e\00" +@.str.4673 = private unnamed_addr constant [4 x i8] c" %e\00" +@.str.4674 = private unnamed_addr constant [6 x i8] c"call \00" +@.str.4675 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4676 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.4677 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4678 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4679 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.4680 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4681 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.4682 = private unnamed_addr constant [9 x i8] c"ret void\00" +@.str.4683 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4684 = private unnamed_addr constant [3 x i8] c"i8\00" +@.str.4685 = private unnamed_addr constant [9 x i8] c" zeroext\00" +@.str.4686 = private unnamed_addr constant [8 x i8] c"ret i8 \00" +@.str.4687 = private unnamed_addr constant [9 x i8] c"zext i1 \00" +@.str.4688 = private unnamed_addr constant [7 x i8] c" to i8\00" +@.str.4689 = private unnamed_addr constant [5 x i8] c"ret \00" @.str.4690 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4691 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4692 = private unnamed_addr constant [5 x i8] c"ptr \00" -@.str.4693 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4694 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4695 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4696 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4697 = private unnamed_addr constant [24 x i8] c"this gives back nothing\00" -@.str.4698 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4699 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.4700 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4701 = private unnamed_addr constant [69 x i8] c"structs and arrays can't be passed to the '...' part of a C function\00" -@.str.4702 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.4703 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4704 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4705 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4706 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4707 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4708 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str.4709 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.4710 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.4711 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4712 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.4713 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.4714 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4715 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4716 = private unnamed_addr constant [7 x i8] c"direct\00" -@.str.4717 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4718 = private unnamed_addr constant [6 x i8] c", ...\00" -@.str.4719 = private unnamed_addr constant [4 x i8] c"...\00" +@.str.4691 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4692 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4693 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" +@.str.4694 = private unnamed_addr constant [11 x i8] c" dllexport\00" +@.str.4695 = private unnamed_addr constant [7 x i8] c"define\00" +@.str.4696 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4697 = private unnamed_addr constant [3 x i8] c" @\00" +@.str.4698 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.4699 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4700 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4701 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4702 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.4703 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4704 = private unnamed_addr constant [10 x i8] c"@finch.c.\00" +@.str.4705 = private unnamed_addr constant [2 x i8] c".\00" +@.str.4706 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4707 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" +@.str.4708 = private unnamed_addr constant [3 x i8] c"t:\00" +@.str.4709 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4710 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" +@.str.4711 = private unnamed_addr constant [3 x i8] c"t:\00" +@.str.4712 = private unnamed_addr constant [6 x i8] c"addr(\00" +@.str.4713 = 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.4714 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4715 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.4716 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4717 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.4718 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4719 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" @.str.4720 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4721 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" -@.str.4722 = private unnamed_addr constant [3 x i8] c"f:\00" -@.str.4723 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4724 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" -@.str.4725 = private unnamed_addr constant [3 x i8] c"f:\00" -@.str.4726 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4727 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00" -@.str.4728 = private unnamed_addr constant [8 x i8] c"declare\00" -@.str.4729 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4730 = private unnamed_addr constant [3 x i8] c" @\00" -@.str.4731 = private unnamed_addr constant [2 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 [1 x i8] c"\00" -@.str.4735 = private unnamed_addr constant [3 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 [5 x i8] c"call\00" -@.str.4739 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4740 = private unnamed_addr constant [3 x i8] c" @\00" -@.str.4741 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.4742 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4743 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4744 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4745 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4746 = private unnamed_addr constant [10 x i8] c"[32 x i8]\00" -@.str.4747 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4748 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4749 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.4750 = private unnamed_addr constant [33 x i8] c"call void @finch_str_from_c(ptr \00" -@.str.4751 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4752 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4753 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4754 = private unnamed_addr constant [7 x i8] c"printf\00" -@.str.4755 = private unnamed_addr constant [7 x i8] c"fflush\00" -@.str.4756 = private unnamed_addr constant [5 x i8] c"exit\00" -@.str.4757 = private unnamed_addr constant [5 x i8] c"free\00" -@.str.4758 = private unnamed_addr constant [6 x i8] c"qsort\00" -@.str.4759 = private unnamed_addr constant [7 x i8] c"printf\00" -@.str.4760 = private unnamed_addr constant [5 x i8] c"puts\00" -@.str.4761 = private unnamed_addr constant [8 x i8] c"putchar\00" -@.str.4762 = private unnamed_addr constant [6 x i8] c"scanf\00" -@.str.4763 = private unnamed_addr constant [6 x i8] c"fopen\00" -@.str.4764 = private unnamed_addr constant [8 x i8] c"getchar\00" -@.str.4765 = private unnamed_addr constant [5 x i8] c"sqrt\00" -@.str.4766 = private unnamed_addr constant [4 x i8] c"pow\00" -@.str.4767 = private unnamed_addr constant [4 x i8] c"sin\00" -@.str.4768 = private unnamed_addr constant [4 x i8] c"cos\00" -@.str.4769 = private unnamed_addr constant [6 x i8] c"floor\00" -@.str.4770 = private unnamed_addr constant [5 x i8] c"fabs\00" -@.str.4771 = private unnamed_addr constant [7 x i8] c"malloc\00" -@.str.4772 = private unnamed_addr constant [5 x i8] c"rand\00" -@.str.4773 = private unnamed_addr constant [6 x i8] c"srand\00" -@.str.4774 = private unnamed_addr constant [4 x i8] c"abs\00" -@.str.4775 = private unnamed_addr constant [5 x i8] c"atoi\00" -@.str.4776 = private unnamed_addr constant [7 x i8] c"strlen\00" -@.str.4777 = private unnamed_addr constant [7 x i8] c"strcpy\00" -@.str.4778 = private unnamed_addr constant [7 x i8] c"memcpy\00" -@.str.4779 = private unnamed_addr constant [5 x i8] c"time\00" -@.str.4780 = private unnamed_addr constant [6 x i8] c"sleep\00" -@.str.4781 = private unnamed_addr constant [7 x i8] c"usleep\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 [8 x i8] c"stdio.h\00" -@.str.4785 = private unnamed_addr constant [8 x i8] c"stdio.h\00" -@.str.4786 = private unnamed_addr constant [8 x i8] c"stdio.h\00" -@.str.4787 = private unnamed_addr constant [8 x i8] c"stdio.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 [7 x i8] c"math.h\00" -@.str.4791 = private unnamed_addr constant [7 x i8] c"math.h\00" -@.str.4792 = private unnamed_addr constant [7 x i8] c"math.h\00" -@.str.4793 = private unnamed_addr constant [7 x i8] c"math.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"stdlib.h\00" -@.str.4796 = private unnamed_addr constant [9 x i8] c"stdlib.h\00" -@.str.4797 = private unnamed_addr constant [9 x i8] c"stdlib.h\00" -@.str.4798 = private unnamed_addr constant [9 x i8] c"stdlib.h\00" -@.str.4799 = private unnamed_addr constant [9 x i8] c"string.h\00" -@.str.4800 = private unnamed_addr constant [9 x i8] c"string.h\00" -@.str.4801 = private unnamed_addr constant [9 x i8] c"string.h\00" -@.str.4802 = private unnamed_addr constant [7 x i8] c"time.h\00" -@.str.4803 = private unnamed_addr constant [9 x i8] c"unistd.h\00" -@.str.4804 = private unnamed_addr constant [9 x i8] c"unistd.h\00" -@.str.4805 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4806 = private unnamed_addr constant [29 x i8] c" (it's from C: add import \22\00" -@.str.4807 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4808 = private unnamed_addr constant [15 x i8] c"\22 at the top)\00" -@.str.4809 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4810 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" +@.str.4721 = private unnamed_addr constant [6 x i8] c"addr(\00" +@.str.4722 = 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.4723 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4724 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.4725 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4726 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.4727 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.4728 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4729 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.4730 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4731 = private unnamed_addr constant [6 x i8] c"addr(\00" +@.str.4732 = private unnamed_addr constant [39 x i8] c"): a function given to C can't return \00" +@.str.4733 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4734 = private unnamed_addr constant [10 x i8] c"ptr sret(\00" +@.str.4735 = private unnamed_addr constant [15 x i8] c") align 16 %c0\00" +@.str.4736 = private unnamed_addr constant [4 x i8] c"%c0\00" +@.str.4737 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4738 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4739 = private unnamed_addr constant [7 x i8] c"memory\00" +@.str.4740 = private unnamed_addr constant [11 x i8] c"ptr byval(\00" +@.str.4741 = private unnamed_addr constant [9 x i8] c") align \00" +@.str.4742 = private unnamed_addr constant [4 x i8] c" %c\00" +@.str.4743 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4744 = private unnamed_addr constant [3 x i8] c"%c\00" +@.str.4745 = private unnamed_addr constant [9 x i8] c"indirect\00" +@.str.4746 = private unnamed_addr constant [7 x i8] c"ptr %c\00" +@.str.4747 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4748 = private unnamed_addr constant [3 x i8] c"%c\00" +@.str.4749 = private unnamed_addr constant [7 x i8] c"expand\00" +@.str.4750 = private unnamed_addr constant [10 x i8] c"[32 x i8]\00" +@.str.4751 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4752 = private unnamed_addr constant [4 x i8] c" %c\00" +@.str.4753 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4754 = private unnamed_addr constant [3 x i8] c"%c\00" +@.str.4755 = private unnamed_addr constant [32 x i8] c"getelementptr inbounds i8, ptr \00" +@.str.4756 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.4757 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4758 = private unnamed_addr constant [4 x i8] c" %c\00" +@.str.4759 = private unnamed_addr constant [4 x i8] c" %c\00" +@.str.4760 = private unnamed_addr constant [6 x i8] c"call \00" +@.str.4761 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4762 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.4763 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4764 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4765 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4766 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.4767 = private unnamed_addr constant [9 x i8] c"ret void\00" +@.str.4768 = private unnamed_addr constant [9 x i8] c"ret void\00" +@.str.4769 = private unnamed_addr constant [7 x i8] c"expand\00" +@.str.4770 = private unnamed_addr constant [10 x i8] c"[32 x i8]\00" +@.str.4771 = private unnamed_addr constant [5 x i8] c"ret \00" +@.str.4772 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4773 = private unnamed_addr constant [5 x i8] c"ret \00" +@.str.4774 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4775 = private unnamed_addr constant [16 x i8] c"define internal\00" +@.str.4776 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4777 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4778 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.4779 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4780 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4781 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4782 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" +@.str.4783 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4784 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4785 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4786 = private unnamed_addr constant [55 x i8] c"(...) turns a whole number into the enum, but this is \00" +@.str.4787 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.4788 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4789 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4790 = private unnamed_addr constant [38 x i8] c" is not the number of any variant of \00" +@.str.4791 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.4792 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4793 = private unnamed_addr constant [13 x i8] c"icmp eq i64 \00" +@.str.4794 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4795 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4796 = private unnamed_addr constant [7 x i8] c"or i1 \00" +@.str.4797 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4798 = private unnamed_addr constant [8 x i8] c"xor i1 \00" +@.str.4799 = private unnamed_addr constant [7 x i8] c", true\00" +@.str.4800 = private unnamed_addr constant [33 x i8] c"this number is not a variant of \00" +@.str.4801 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" +@.str.4802 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str.4803 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4804 = private unnamed_addr constant [9 x i8] c" zeroext\00" +@.str.4805 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.4806 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4807 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" +@.str.4808 = private unnamed_addr constant [9 x i8] c" signext\00" +@.str.4809 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.4810 = private unnamed_addr constant [9 x i8] c" zeroext\00" @.str.4811 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4812 = private unnamed_addr constant [6 x i8] c"error\00" -@.str.4813 = 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.4814 = private unnamed_addr constant [6 x i8] c"print\00" -@.str.4815 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4816 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4817 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4818 = private unnamed_addr constant [54 x i8] c"this gives back nothing, so there is nothing to print\00" +@.str.4812 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4813 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4814 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4815 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" +@.str.4816 = private unnamed_addr constant [4 x i8] c"...\00" +@.str.4817 = private unnamed_addr constant [18 x i8] c"C function from `\00" +@.str.4818 = private unnamed_addr constant [8 x i8] c"`\0A```c\0A\00" @.str.4819 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4820 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4821 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.4822 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4823 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4824 = private unnamed_addr constant [5 x i8] c"addr\00" -@.str.4825 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4826 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.4827 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4828 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.4829 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4830 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.4831 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.4832 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.4833 = private unnamed_addr constant [64 x i8] c"addr(...) needs a variable, a field or an element, like addr(x)\00" -@.str.4834 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4835 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4836 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4837 = private unnamed_addr constant [35 x i8] c"call void @finch_str_from_int(ptr \00" -@.str.4838 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4839 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4840 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4841 = private unnamed_addr constant [36 x i8] c"call void @finch_str_from_uint(ptr \00" -@.str.4842 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4843 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.4844 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4845 = private unnamed_addr constant [37 x i8] c"call void @finch_str_from_float(ptr \00" -@.str.4846 = private unnamed_addr constant [10 x i8] c", double \00" -@.str.4847 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4848 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4849 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4850 = private unnamed_addr constant [36 x i8] c"call void @finch_str_from_char(ptr \00" -@.str.4851 = private unnamed_addr constant [14 x i8] c", i8 signext \00" -@.str.4852 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4853 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4854 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str.4855 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.4856 = private unnamed_addr constant [36 x i8] c"call void @finch_str_from_bool(ptr \00" -@.str.4857 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str.4858 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4859 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4860 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4861 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.4862 = private unnamed_addr constant [33 x i8] c"call void @finch_str_from_c(ptr \00" -@.str.4863 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4864 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4865 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.4866 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4867 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.4868 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4869 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4870 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4871 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.4872 = private unnamed_addr constant [37 x i8] c"call void @finch_str_from_bytes(ptr \00" -@.str.4873 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4874 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4875 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4876 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4877 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.4878 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.4879 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4880 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.4881 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4882 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.4883 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4884 = private unnamed_addr constant [12 x i8] c"can't turn \00" -@.str.4885 = private unnamed_addr constant [10 x i8] c" into str\00" -@.str.4886 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4887 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4888 = private unnamed_addr constant [10 x i8] c"read_file\00" -@.str.4889 = private unnamed_addr constant [12 x i8] c"file_exists\00" -@.str.4890 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4891 = private unnamed_addr constant [14 x i8] c"the file name\00" -@.str.4892 = private unnamed_addr constant [12 x i8] c"file_exists\00" -@.str.4893 = private unnamed_addr constant [33 x i8] c"call i32 @finch_file_exists(ptr \00" -@.str.4894 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4895 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str.4896 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4897 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4898 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4899 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" -@.str.4900 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4901 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4902 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.4903 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4904 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.4905 = private unnamed_addr constant [35 x i8] c"call i32 @finch_try_read_file(ptr \00" -@.str.4906 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4907 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4820 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.4821 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4822 = private unnamed_addr constant [6 x i8] c")\0A```\00" +@.str.4823 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4824 = private unnamed_addr constant [17 x i8] c"the C function '\00" +@.str.4825 = private unnamed_addr constant [36 x i8] c"' can't be used from Finch yet: it \00" +@.str.4826 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.4827 = private unnamed_addr constant [18 x i8] c"' takes at least \00" +@.str.4828 = private unnamed_addr constant [23 x i8] c" argument(s), but got \00" +@.str.4829 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.4830 = private unnamed_addr constant [9 x i8] c"' takes \00" +@.str.4831 = private unnamed_addr constant [23 x i8] c" argument(s), but got \00" +@.str.4832 = private unnamed_addr constant [8 x i8] c"returns\00" +@.str.4833 = private unnamed_addr constant [6 x i8] c"takes\00" +@.str.4834 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4835 = private unnamed_addr constant [10 x i8] c"ptr sret(\00" +@.str.4836 = private unnamed_addr constant [11 x i8] c") align 16\00" +@.str.4837 = private unnamed_addr constant [10 x i8] c"ptr sret(\00" +@.str.4838 = private unnamed_addr constant [12 x i8] c") align 16 \00" +@.str.4839 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4840 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" +@.str.4841 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4842 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4843 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4844 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4845 = private unnamed_addr constant [10 x i8] c"argument \00" +@.str.4846 = private unnamed_addr constant [5 x i8] c" of \00" +@.str.4847 = private unnamed_addr constant [7 x i8] c"memory\00" +@.str.4848 = private unnamed_addr constant [11 x i8] c"ptr byval(\00" +@.str.4849 = private unnamed_addr constant [9 x i8] c") align \00" +@.str.4850 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4851 = private unnamed_addr constant [9 x i8] c"indirect\00" +@.str.4852 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4853 = private unnamed_addr constant [5 x i8] c"ptr \00" +@.str.4854 = private unnamed_addr constant [7 x i8] c"expand\00" +@.str.4855 = private unnamed_addr constant [10 x i8] c"[32 x i8]\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"getelementptr inbounds i8, ptr \00" +@.str.4858 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.4859 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4860 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4861 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4862 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4863 = private unnamed_addr constant [5 x i8] c"ptr \00" +@.str.4864 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4865 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4866 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.4867 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4868 = private unnamed_addr constant [24 x i8] c"this gives back nothing\00" +@.str.4869 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.4870 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.4871 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4872 = private unnamed_addr constant [69 x i8] c"structs and arrays can't be passed to the '...' part of a C function\00" +@.str.4873 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.4874 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.4875 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.4876 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4877 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4878 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4879 = private unnamed_addr constant [9 x i8] c"zext i1 \00" +@.str.4880 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str.4881 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.4882 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.4883 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.4884 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.4885 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4886 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4887 = private unnamed_addr constant [7 x i8] c"direct\00" +@.str.4888 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4889 = private unnamed_addr constant [6 x i8] c", ...\00" +@.str.4890 = private unnamed_addr constant [4 x i8] c"...\00" +@.str.4891 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4892 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" +@.str.4893 = private unnamed_addr constant [3 x i8] c"f:\00" +@.str.4894 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4895 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" +@.str.4896 = private unnamed_addr constant [3 x i8] c"f:\00" +@.str.4897 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4898 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00" +@.str.4899 = private unnamed_addr constant [8 x i8] c"declare\00" +@.str.4900 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4901 = private unnamed_addr constant [3 x i8] c" @\00" +@.str.4902 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.4903 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4904 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4905 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4906 = private unnamed_addr constant [3 x i8] c" (\00" +@.str.4907 = private unnamed_addr constant [3 x i8] c", \00" @.str.4908 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4909 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str.4910 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4911 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4912 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.4913 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4914 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4915 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.4916 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4917 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4918 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4919 = private unnamed_addr constant [30 x i8] c"used .files 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 [32 x i8] c"call void @finch_read_file(ptr \00" +@.str.4909 = private unnamed_addr constant [5 x i8] c"call\00" +@.str.4910 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4911 = private unnamed_addr constant [3 x i8] c" @\00" +@.str.4912 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.4913 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4914 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4915 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.4916 = private unnamed_addr constant [7 x i8] c"expand\00" +@.str.4917 = private unnamed_addr constant [10 x i8] c"[32 x i8]\00" +@.str.4918 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4919 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.4920 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" +@.str.4921 = private unnamed_addr constant [33 x i8] c"call void @finch_str_from_c(ptr \00" @.str.4922 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4923 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4924 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4925 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4926 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4927 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4928 = private unnamed_addr constant [11 x i8] c"write_file\00" -@.str.4929 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4930 = private unnamed_addr constant [14 x i8] c"the file name\00" -@.str.4931 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4932 = private unnamed_addr constant [9 x i8] c"the text\00" -@.str.4933 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4934 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" -@.str.4935 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4936 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4937 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.4938 = private unnamed_addr constant [36 x i8] c"call i32 @finch_try_write_file(ptr \00" -@.str.4939 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4940 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4941 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4942 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str.4943 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4944 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4945 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.4946 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4947 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4948 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.4949 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4950 = private unnamed_addr constant [32 x i8] c"call i32 @finch_write_file(ptr \00" -@.str.4951 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4952 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4953 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str.4954 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4955 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4956 = private unnamed_addr constant [12 x i8] c"delete_file\00" -@.str.4957 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4958 = private unnamed_addr constant [14 x i8] c"the file name\00" -@.str.4959 = private unnamed_addr constant [31 x i8] c"call void @finch_str_copy(ptr \00" -@.str.4960 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4961 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4962 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4963 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" -@.str.4964 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4965 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4966 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.4967 = private unnamed_addr constant [37 x i8] c"call i32 @finch_try_delete_file(ptr \00" -@.str.4968 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4969 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4970 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str.4971 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4972 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4973 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.4974 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4975 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4976 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.4977 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4978 = private unnamed_addr constant [33 x i8] c"call i32 @finch_delete_file(ptr \00" -@.str.4979 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4980 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str.4981 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4982 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4983 = private unnamed_addr constant [6 x i8] c"shell\00" -@.str.4984 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4985 = private unnamed_addr constant [12 x i8] c"the command\00" -@.str.4986 = private unnamed_addr constant [31 x i8] c"call void @finch_str_copy(ptr \00" -@.str.4987 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4988 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4989 = private unnamed_addr constant [27 x i8] c"call i64 @finch_shell(ptr \00" -@.str.4990 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4991 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4992 = private unnamed_addr constant [5 x i8] c"exit\00" -@.str.4993 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4994 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4995 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4996 = private unnamed_addr constant [14 x i8] c"the exit code\00" -@.str.4997 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" -@.str.4998 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.4999 = private unnamed_addr constant [27 x i8] c"call i32 @fflush(ptr null)\00" -@.str.5000 = private unnamed_addr constant [21 x i8] c"call void @exit(i32 \00" -@.str.5001 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5002 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5003 = private unnamed_addr constant [6 x i8] c"input\00" -@.str.5004 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5005 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5006 = private unnamed_addr constant [13 x i8] c"the question\00" -@.str.5007 = private unnamed_addr constant [28 x i8] c"call void @finch_input(ptr \00" -@.str.5008 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5009 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5010 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5011 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5012 = private unnamed_addr constant [4 x i8] c"new\00" -@.str.5013 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5014 = private unnamed_addr constant [27 x i8] c"call ptr @finch_alloc(i64 \00" +@.str.4923 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4924 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.4925 = private unnamed_addr constant [7 x i8] c"printf\00" +@.str.4926 = private unnamed_addr constant [7 x i8] c"fflush\00" +@.str.4927 = private unnamed_addr constant [5 x i8] c"exit\00" +@.str.4928 = private unnamed_addr constant [5 x i8] c"free\00" +@.str.4929 = private unnamed_addr constant [6 x i8] c"qsort\00" +@.str.4930 = private unnamed_addr constant [7 x i8] c"printf\00" +@.str.4931 = private unnamed_addr constant [5 x i8] c"puts\00" +@.str.4932 = private unnamed_addr constant [8 x i8] c"putchar\00" +@.str.4933 = private unnamed_addr constant [6 x i8] c"scanf\00" +@.str.4934 = private unnamed_addr constant [6 x i8] c"fopen\00" +@.str.4935 = private unnamed_addr constant [8 x i8] c"getchar\00" +@.str.4936 = private unnamed_addr constant [5 x i8] c"sqrt\00" +@.str.4937 = private unnamed_addr constant [4 x i8] c"pow\00" +@.str.4938 = private unnamed_addr constant [4 x i8] c"sin\00" +@.str.4939 = private unnamed_addr constant [4 x i8] c"cos\00" +@.str.4940 = private unnamed_addr constant [6 x i8] c"floor\00" +@.str.4941 = private unnamed_addr constant [5 x i8] c"fabs\00" +@.str.4942 = private unnamed_addr constant [7 x i8] c"malloc\00" +@.str.4943 = private unnamed_addr constant [5 x i8] c"rand\00" +@.str.4944 = private unnamed_addr constant [6 x i8] c"srand\00" +@.str.4945 = private unnamed_addr constant [4 x i8] c"abs\00" +@.str.4946 = private unnamed_addr constant [5 x i8] c"atoi\00" +@.str.4947 = private unnamed_addr constant [7 x i8] c"strlen\00" +@.str.4948 = private unnamed_addr constant [7 x i8] c"strcpy\00" +@.str.4949 = private unnamed_addr constant [7 x i8] c"memcpy\00" +@.str.4950 = private unnamed_addr constant [5 x i8] c"time\00" +@.str.4951 = private unnamed_addr constant [6 x i8] c"sleep\00" +@.str.4952 = private unnamed_addr constant [7 x i8] c"usleep\00" +@.str.4953 = private unnamed_addr constant [8 x i8] c"stdio.h\00" +@.str.4954 = private unnamed_addr constant [8 x i8] c"stdio.h\00" +@.str.4955 = private unnamed_addr constant [8 x i8] c"stdio.h\00" +@.str.4956 = private unnamed_addr constant [8 x i8] c"stdio.h\00" +@.str.4957 = private unnamed_addr constant [8 x i8] c"stdio.h\00" +@.str.4958 = private unnamed_addr constant [8 x i8] c"stdio.h\00" +@.str.4959 = private unnamed_addr constant [7 x i8] c"math.h\00" +@.str.4960 = private unnamed_addr constant [7 x i8] c"math.h\00" +@.str.4961 = private unnamed_addr constant [7 x i8] c"math.h\00" +@.str.4962 = private unnamed_addr constant [7 x i8] c"math.h\00" +@.str.4963 = private unnamed_addr constant [7 x i8] c"math.h\00" +@.str.4964 = private unnamed_addr constant [7 x i8] c"math.h\00" +@.str.4965 = private unnamed_addr constant [9 x i8] c"stdlib.h\00" +@.str.4966 = private unnamed_addr constant [9 x i8] c"stdlib.h\00" +@.str.4967 = private unnamed_addr constant [9 x i8] c"stdlib.h\00" +@.str.4968 = private unnamed_addr constant [9 x i8] c"stdlib.h\00" +@.str.4969 = private unnamed_addr constant [9 x i8] c"stdlib.h\00" +@.str.4970 = private unnamed_addr constant [9 x i8] c"string.h\00" +@.str.4971 = private unnamed_addr constant [9 x i8] c"string.h\00" +@.str.4972 = private unnamed_addr constant [9 x i8] c"string.h\00" +@.str.4973 = private unnamed_addr constant [7 x i8] c"time.h\00" +@.str.4974 = private unnamed_addr constant [9 x i8] c"unistd.h\00" +@.str.4975 = private unnamed_addr constant [9 x i8] c"unistd.h\00" +@.str.4976 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4977 = private unnamed_addr constant [29 x i8] c" (it's from C: add import \22\00" +@.str.4978 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4979 = private unnamed_addr constant [15 x i8] c"\22 at the top)\00" +@.str.4980 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4981 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" +@.str.4982 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4983 = private unnamed_addr constant [6 x i8] c"error\00" +@.str.4984 = 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.4985 = private unnamed_addr constant [6 x i8] c"print\00" +@.str.4986 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4987 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.4988 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4989 = private unnamed_addr constant [54 x i8] c"this gives back nothing, so there is nothing to print\00" +@.str.4990 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4991 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4992 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.4993 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4994 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.4995 = private unnamed_addr constant [5 x i8] c"addr\00" +@.str.4996 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4997 = private unnamed_addr constant [4 x i8] c"var\00" +@.str.4998 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4999 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.5000 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5001 = private unnamed_addr constant [4 x i8] c"var\00" +@.str.5002 = private unnamed_addr constant [7 x i8] c"member\00" +@.str.5003 = private unnamed_addr constant [6 x i8] c"index\00" +@.str.5004 = private unnamed_addr constant [64 x i8] c"addr(...) needs a variable, a field or an element, like addr(x)\00" +@.str.5005 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5006 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5007 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5008 = private unnamed_addr constant [35 x i8] c"call void @finch_str_from_int(ptr \00" +@.str.5009 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5010 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.5011 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5012 = private unnamed_addr constant [36 x i8] c"call void @finch_str_from_uint(ptr \00" +@.str.5013 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5014 = private unnamed_addr constant [4 x i8] c"u64\00" @.str.5015 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5016 = private unnamed_addr constant [5 x i8] c"free\00" -@.str.5017 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5018 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5019 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5020 = 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.5021 = private unnamed_addr constant [21 x i8] c"call void @free(ptr \00" -@.str.5022 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5023 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5024 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5025 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.5026 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5027 = private unnamed_addr constant [48 x i8] c"' is not generic, so it takes no type arguments\00" -@.str.5028 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5029 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5030 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5031 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.5032 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5033 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5034 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.5035 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5036 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5037 = private unnamed_addr constant [43 x i8] c"' is generic, so say which type it holds: \00" -@.str.5038 = private unnamed_addr constant [11 x i8] c"[int](...)\00" +@.str.5016 = private unnamed_addr constant [37 x i8] c"call void @finch_str_from_float(ptr \00" +@.str.5017 = private unnamed_addr constant [10 x i8] c", double \00" +@.str.5018 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.5019 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5020 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.5021 = private unnamed_addr constant [36 x i8] c"call void @finch_str_from_char(ptr \00" +@.str.5022 = private unnamed_addr constant [14 x i8] c", i8 signext \00" +@.str.5023 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5024 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.5025 = private unnamed_addr constant [9 x i8] c"zext i1 \00" +@.str.5026 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str.5027 = private unnamed_addr constant [36 x i8] c"call void @finch_str_from_bool(ptr \00" +@.str.5028 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str.5029 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5030 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5031 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5032 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" +@.str.5033 = private unnamed_addr constant [33 x i8] c"call void @finch_str_from_c(ptr \00" +@.str.5034 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5035 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5036 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.5037 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5038 = private unnamed_addr constant [3 x i8] c"u8\00" @.str.5039 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5040 = private unnamed_addr constant [31 x i8] c"used .module 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 [31 x i8] c"used .module on a null pointer\00" -@.str.5043 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5044 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.5045 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5046 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5047 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" -@.str.5048 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5049 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.5050 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5051 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5052 = private unnamed_addr constant [17 x i8] c"```finch\0Astruct \00" -@.str.5053 = private unnamed_addr constant [4 x i8] c" { \00" -@.str.5054 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5055 = private unnamed_addr constant [7 x i8] c" }\0A```\00" -@.str.5056 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5057 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.5058 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5059 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5060 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.5040 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.5041 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5042 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" +@.str.5043 = private unnamed_addr constant [37 x i8] c"call void @finch_str_from_bytes(ptr \00" +@.str.5044 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5045 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5046 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.5047 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.5048 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.5049 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.5050 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.5051 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.5052 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5053 = private unnamed_addr constant [16 x i8] c"zeroinitializer\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"can't turn \00" +@.str.5056 = private unnamed_addr constant [10 x i8] c" into str\00" +@.str.5057 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5058 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5059 = private unnamed_addr constant [10 x i8] c"read_file\00" +@.str.5060 = private unnamed_addr constant [12 x i8] c"file_exists\00" @.str.5061 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5062 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.5063 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5064 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.5065 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5066 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.5067 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5068 = private unnamed_addr constant [32 x i8] c"' is a variable, not a function\00" -@.str.5069 = private unnamed_addr constant [29 x i8] c"there is no function named '\00" -@.str.5070 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5071 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5072 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.5073 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5074 = private unnamed_addr constant [5 x i8] c"main\00" -@.str.5075 = private unnamed_addr constant [53 x i8] c"main can't be called, it is where the program starts\00" -@.str.5076 = private unnamed_addr constant [5 x i8] c"ptr \00" -@.str.5077 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5078 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5079 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5080 = private unnamed_addr constant [11 x i8] c"argument '\00" -@.str.5081 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5082 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5083 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5084 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5085 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5086 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5087 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" -@.str.5088 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5089 = private unnamed_addr constant [40 x i8] c"' can fail, so say what happens then: \00" -@.str.5090 = private unnamed_addr constant [20 x i8] c"(...) or , \00" -@.str.5091 = private unnamed_addr constant [28 x i8] c"(...) or { ... }, or try \00" -@.str.5092 = private unnamed_addr constant [6 x i8] c"(...)\00" -@.str.5093 = private unnamed_addr constant [6 x i8] c"call \00" -@.str.5094 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5095 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.5096 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5097 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5098 = private unnamed_addr constant [14 x i8] c"extractvalue \00" -@.str.5099 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5100 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5101 = private unnamed_addr constant [8 x i8] c"xor i1 \00" -@.str.5102 = private unnamed_addr constant [7 x i8] c", true\00" -@.str.5103 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5104 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.5105 = private unnamed_addr constant [14 x i8] c"extractvalue \00" -@.str.5106 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5107 = private unnamed_addr constant [4 x i8] c", 2\00" -@.str.5108 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5109 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.5110 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5111 = private unnamed_addr constant [14 x i8] c"extractvalue \00" -@.str.5112 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5113 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.5114 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5115 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5116 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.5062 = private unnamed_addr constant [14 x i8] c"the file name\00" +@.str.5063 = private unnamed_addr constant [12 x i8] c"file_exists\00" +@.str.5064 = private unnamed_addr constant [33 x i8] c"call i32 @finch_file_exists(ptr \00" +@.str.5065 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5066 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" +@.str.5067 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.5068 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.5069 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5070 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" +@.str.5071 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5072 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5073 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" +@.str.5074 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5075 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" +@.str.5076 = private unnamed_addr constant [35 x i8] c"call i32 @finch_try_read_file(ptr \00" +@.str.5077 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5078 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5079 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5080 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" +@.str.5081 = private unnamed_addr constant [4 x i8] c", 0\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 .ffailed on a null pointer\00" +@.str.5084 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5085 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5086 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" +@.str.5087 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5088 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5089 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5090 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" +@.str.5091 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5092 = private unnamed_addr constant [32 x i8] c"call void @finch_read_file(ptr \00" +@.str.5093 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5094 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5095 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5096 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5097 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5098 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5099 = private unnamed_addr constant [11 x i8] c"write_file\00" +@.str.5100 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5101 = private unnamed_addr constant [14 x i8] c"the file name\00" +@.str.5102 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5103 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" +@.str.5104 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5105 = private unnamed_addr constant [9 x i8] c"the text\00" +@.str.5106 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5107 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" +@.str.5108 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5109 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5110 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" +@.str.5111 = private unnamed_addr constant [36 x i8] c"call i32 @finch_try_write_file(ptr \00" +@.str.5112 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5113 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5114 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5115 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" +@.str.5116 = private unnamed_addr constant [4 x i8] c", 0\00" @.str.5117 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5118 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5119 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.5118 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" +@.str.5119 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\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 [7 x i8] c"struct\00" -@.str.5123 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5124 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5125 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5126 = 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.5127 = private unnamed_addr constant [6 x i8] c" has \00" -@.str.5128 = private unnamed_addr constant [18 x i8] c" fields, but got \00" -@.str.5129 = private unnamed_addr constant [24 x i8] c" values (or name them: \00" -@.str.5130 = private unnamed_addr constant [16 x i8] c"(field: value))\00" -@.str.5131 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5132 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5133 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5134 = private unnamed_addr constant [16 x i8] c" has no field '\00" +@.str.5121 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" +@.str.5122 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.5123 = private unnamed_addr constant [32 x i8] c"call i32 @finch_write_file(ptr \00" +@.str.5124 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5125 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5126 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" +@.str.5127 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.5128 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.5129 = private unnamed_addr constant [12 x i8] c"delete_file\00" +@.str.5130 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5131 = private unnamed_addr constant [14 x i8] c"the file name\00" +@.str.5132 = private unnamed_addr constant [31 x i8] c"call void @finch_str_copy(ptr \00" +@.str.5133 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5134 = private unnamed_addr constant [2 x i8] c")\00" @.str.5135 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5136 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5137 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5138 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5139 = private unnamed_addr constant [12 x i8] c"the field '\00" -@.str.5140 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5141 = private unnamed_addr constant [17 x i8] c"' is given twice\00" -@.str.5142 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5143 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.5144 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5136 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" +@.str.5137 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5138 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5139 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" +@.str.5140 = private unnamed_addr constant [37 x i8] c"call i32 @finch_try_delete_file(ptr \00" +@.str.5141 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5142 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5143 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" +@.str.5144 = private unnamed_addr constant [4 x i8] c", 0\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"src/gen.fch\00" -@.str.5147 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5146 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" +@.str.5147 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" @.str.5148 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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"the field '\00" -@.str.5151 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5152 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5153 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 .scopes 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 [31 x i8] c"used .module 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 .tnames 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 [30 x i8] c"used .targs 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 [31 x i8] c"used .scopes on a null pointer\00" -@.str.5168 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5169 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.5170 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5149 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" +@.str.5150 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5151 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.5152 = private unnamed_addr constant [33 x i8] c"call i32 @finch_delete_file(ptr \00" +@.str.5153 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5154 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5155 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" +@.str.5156 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.5157 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.5158 = private unnamed_addr constant [6 x i8] c"shell\00" +@.str.5159 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5160 = private unnamed_addr constant [12 x i8] c"the command\00" +@.str.5161 = private unnamed_addr constant [31 x i8] c"call void @finch_str_copy(ptr \00" +@.str.5162 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5163 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5164 = private unnamed_addr constant [27 x i8] c"call i64 @finch_shell(ptr \00" +@.str.5165 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5166 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5167 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.5168 = private unnamed_addr constant [5 x i8] c"exit\00" +@.str.5169 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5170 = private unnamed_addr constant [4 x i8] c"int\00" @.str.5171 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5172 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5173 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5174 = private unnamed_addr constant [17 x i8] c"the default of '\00" -@.str.5175 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5176 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5177 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5178 = private unnamed_addr constant [31 x i8] c"used .module 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 .tnames on a null pointer\00" +@.str.5172 = private unnamed_addr constant [14 x i8] c"the exit code\00" +@.str.5173 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" +@.str.5174 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str.5175 = private unnamed_addr constant [27 x i8] c"call i32 @fflush(ptr null)\00" +@.str.5176 = private unnamed_addr constant [21 x i8] c"call void @exit(i32 \00" +@.str.5177 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5178 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.5179 = private unnamed_addr constant [6 x i8] c"input\00" +@.str.5180 = private unnamed_addr constant [1 x i8] c"\00" @.str.5181 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5182 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" -@.str.5183 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5184 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.5185 = private unnamed_addr constant [13 x i8] c"insertvalue \00" -@.str.5186 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5187 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5188 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5189 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5190 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5191 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5192 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" -@.str.5193 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5194 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5195 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.5196 = private unnamed_addr constant [39 x i8] c"there is no variable or module named '\00" -@.str.5197 = private unnamed_addr constant [33 x i8] c"' (to use a module, add import \00" -@.str.5198 = private unnamed_addr constant [14 x i8] c" at the top)\00" -@.str.5199 = private unnamed_addr constant [2 x i8] c".\00" -@.str.5200 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5201 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5202 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5203 = private unnamed_addr constant [2 x i8] c".\00" -@.str.5204 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5205 = private unnamed_addr constant [13 x i8] c"the module '\00" -@.str.5206 = private unnamed_addr constant [36 x i8] c"' has no function or struct named '\00" -@.str.5207 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5208 = private unnamed_addr constant [5 x i8] c"push\00" -@.str.5209 = private unnamed_addr constant [4 x i8] c"pop\00" -@.str.5210 = private unnamed_addr constant [7 x i8] c"insert\00" -@.str.5211 = private unnamed_addr constant [7 x i8] c"remove\00" -@.str.5212 = private unnamed_addr constant [6 x i8] c"clear\00" -@.str.5213 = private unnamed_addr constant [7 x i8] c"resize\00" -@.str.5214 = private unnamed_addr constant [5 x i8] c"sort\00" -@.str.5215 = private unnamed_addr constant [8 x i8] c"reverse\00" -@.str.5216 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.5182 = private unnamed_addr constant [13 x i8] c"the question\00" +@.str.5183 = private unnamed_addr constant [28 x i8] c"call void @finch_input(ptr \00" +@.str.5184 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5185 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5186 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5187 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5188 = private unnamed_addr constant [4 x i8] c"new\00" +@.str.5189 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5190 = private unnamed_addr constant [27 x i8] c"call ptr @finch_alloc(i64 \00" +@.str.5191 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5192 = private unnamed_addr constant [5 x i8] c"free\00" +@.str.5193 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5194 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5195 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5196 = 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.5197 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5198 = private unnamed_addr constant [10 x i8] c"free.drop\00" +@.str.5199 = private unnamed_addr constant [10 x i8] c"free.done\00" +@.str.5200 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00" +@.str.5201 = private unnamed_addr constant [7 x i8] c", null\00" +@.str.5202 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5203 = private unnamed_addr constant [21 x i8] c"call void @free(ptr \00" +@.str.5204 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5205 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.5206 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5207 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.5208 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.5209 = private unnamed_addr constant [48 x i8] c"' is not generic, so it takes no type arguments\00" +@.str.5210 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5211 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5212 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5213 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.5214 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5215 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5216 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" @.str.5217 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5218 = private unnamed_addr constant [64 x i8] c"() would change a temporary array; store it in a variable first\00" -@.str.5219 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5220 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5221 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.5222 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5223 = private unnamed_addr constant [62 x i8] c"() would change a temporary map; store it in a variable first\00" -@.str.5224 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5225 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5226 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5227 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.5228 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5229 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00" -@.str.5230 = private unnamed_addr constant [7 x i8] c", null\00" -@.str.5231 = private unnamed_addr constant [9 x i8] c"called .\00" -@.str.5232 = private unnamed_addr constant [21 x i8] c"() on a null pointer\00" +@.str.5218 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.5219 = private unnamed_addr constant [43 x i8] c"' is generic, so say which type it holds: \00" +@.str.5220 = private unnamed_addr constant [11 x i8] c"[int](...)\00" +@.str.5221 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5222 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.5223 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5224 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.5225 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5226 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.5227 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5228 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5229 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" +@.str.5230 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5231 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.5232 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.5233 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5234 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.5235 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.5236 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.5237 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.5238 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.5239 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5240 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.5234 = private unnamed_addr constant [17 x i8] c"```finch\0Astruct \00" +@.str.5235 = private unnamed_addr constant [4 x i8] c" { \00" +@.str.5236 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5237 = private unnamed_addr constant [7 x i8] c" }\0A```\00" +@.str.5238 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5239 = private unnamed_addr constant [30 x i8] c"used .files 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 [12 x i8] c"src/gen.fch\00" -@.str.5243 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.5244 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5242 = private unnamed_addr constant [31 x i8] c"used .module 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 [27 x i8] c"used .ci on a null pointer\00" @.str.5245 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5246 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.5246 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" @.str.5247 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5248 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5249 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.5250 = private unnamed_addr constant [5 x i8] c"the \00" -@.str.5251 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5252 = private unnamed_addr constant [35 x i8] c" has no methods; add one with fn \00" -@.str.5253 = private unnamed_addr constant [2 x i8] c".\00" -@.str.5254 = private unnamed_addr constant [14 x i8] c"(...) { ... }\00" -@.str.5255 = private unnamed_addr constant [5 x i8] c"the \00" -@.str.5256 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5257 = private unnamed_addr constant [17 x i8] c" has no method '\00" -@.str.5258 = private unnamed_addr constant [12 x i8] c"' (it has: \00" -@.str.5259 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5260 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5248 = private unnamed_addr constant [2 x i8] c"C\00" +@.str.5249 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.5250 = private unnamed_addr constant [32 x i8] c"' is a variable, not a function\00" +@.str.5251 = private unnamed_addr constant [29 x i8] c"there is no function named '\00" +@.str.5252 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.5253 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5254 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.5255 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5256 = private unnamed_addr constant [5 x i8] c"main\00" +@.str.5257 = private unnamed_addr constant [53 x i8] c"main can't be called, it is where the program starts\00" +@.str.5258 = private unnamed_addr constant [5 x i8] c"ptr \00" +@.str.5259 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5260 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" @.str.5261 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5262 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.5262 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.5263 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5264 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.5265 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.5266 = private unnamed_addr constant [29 x i8] c"() would change a temporary \00" -@.str.5267 = private unnamed_addr constant [31 x i8] c"; store it in a variable first\00" -@.str.5268 = private unnamed_addr constant [20 x i8] c"the loop variable '\00" -@.str.5269 = private unnamed_addr constant [19 x i8] c"' can't be changed\00" -@.str.5270 = private unnamed_addr constant [2 x i8] c".\00" -@.str.5271 = private unnamed_addr constant [16 x i8] c" has no methods\00" -@.str.5272 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5273 = private unnamed_addr constant [47 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr \00" -@.str.5274 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" -@.str.5275 = private unnamed_addr constant [5 x i8] c"push\00" -@.str.5276 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5277 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5278 = private unnamed_addr constant [12 x i8] c"the element\00" -@.str.5279 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5280 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.5281 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.5282 = private unnamed_addr constant [34 x i8] c"call void @finch_arr_reserve(ptr \00" -@.str.5283 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5284 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5285 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5286 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5287 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5288 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5289 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5290 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5291 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5292 = private unnamed_addr constant [4 x i8] c"pop\00" -@.str.5293 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5294 = private unnamed_addr constant [13 x i8] c"icmp eq i64 \00" -@.str.5295 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5296 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.5297 = private unnamed_addr constant [9 x i8] c"sub i64 \00" -@.str.5298 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.5299 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5300 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5301 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5302 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5303 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5304 = private unnamed_addr constant [6 x i8] c"clear\00" -@.str.5305 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5306 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.5307 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5308 = private unnamed_addr constant [5 x i8] c"find\00" -@.str.5309 = private unnamed_addr constant [9 x i8] c"contains\00" -@.str.5310 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5311 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5312 = private unnamed_addr constant [22 x i8] c"the value to look for\00" -@.str.5313 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5314 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5315 = private unnamed_addr constant [3 x i8] c"-1\00" -@.str.5316 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5317 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5318 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5319 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5320 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.5321 = private unnamed_addr constant [10 x i8] c"find.cond\00" -@.str.5322 = private unnamed_addr constant [10 x i8] c"find.body\00" -@.str.5323 = private unnamed_addr constant [9 x i8] c"find.hit\00" -@.str.5324 = private unnamed_addr constant [10 x i8] c"find.next\00" -@.str.5325 = private unnamed_addr constant [9 x i8] c"find.end\00" -@.str.5326 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5327 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.5328 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5329 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5330 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5331 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5332 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.5333 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5334 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5335 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.5336 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.5337 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5338 = private unnamed_addr constant [5 x i8] c"find\00" -@.str.5339 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5340 = private unnamed_addr constant [14 x i8] c"icmp sge i64 \00" -@.str.5341 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5342 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5343 = private unnamed_addr constant [5 x i8] c"join\00" -@.str.5344 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5345 = private unnamed_addr constant [32 x i8] c"join() works on an array of str\00" +@.str.5264 = private unnamed_addr constant [11 x i8] c"argument '\00" +@.str.5265 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5266 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.5267 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5268 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5269 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5270 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5271 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" +@.str.5272 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.5273 = private unnamed_addr constant [40 x i8] c"' can fail, so say what happens then: \00" +@.str.5274 = private unnamed_addr constant [20 x i8] c"(...) or , \00" +@.str.5275 = private unnamed_addr constant [28 x i8] c"(...) or { ... }, or try \00" +@.str.5276 = private unnamed_addr constant [6 x i8] c"(...)\00" +@.str.5277 = private unnamed_addr constant [6 x i8] c"call \00" +@.str.5278 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5279 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.5280 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5281 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5282 = private unnamed_addr constant [14 x i8] c"extractvalue \00" +@.str.5283 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5284 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.5285 = private unnamed_addr constant [8 x i8] c"xor i1 \00" +@.str.5286 = private unnamed_addr constant [7 x i8] c", true\00" +@.str.5287 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5288 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" +@.str.5289 = private unnamed_addr constant [14 x i8] c"extractvalue \00" +@.str.5290 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5291 = private unnamed_addr constant [4 x i8] c", 2\00" +@.str.5292 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5293 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" +@.str.5294 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.5295 = private unnamed_addr constant [14 x i8] c"extractvalue \00" +@.str.5296 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5297 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str.5298 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.5299 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5300 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.5301 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5302 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5303 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.5304 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5305 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5306 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.5307 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5308 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5309 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5310 = 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.5311 = private unnamed_addr constant [6 x i8] c" has \00" +@.str.5312 = private unnamed_addr constant [18 x i8] c" fields, but got \00" +@.str.5313 = private unnamed_addr constant [24 x i8] c" values (or name them: \00" +@.str.5314 = private unnamed_addr constant [16 x i8] c"(field: value))\00" +@.str.5315 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5316 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5317 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5318 = private unnamed_addr constant [16 x i8] c" has no field '\00" +@.str.5319 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5320 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.5321 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5322 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5323 = private unnamed_addr constant [12 x i8] c"the field '\00" +@.str.5324 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5325 = private unnamed_addr constant [17 x i8] c"' is given twice\00" +@.str.5326 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5327 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" +@.str.5328 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5329 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" +@.str.5330 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5331 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5332 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5333 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5334 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5335 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5336 = private unnamed_addr constant [12 x i8] c"the field '\00" +@.str.5337 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5338 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.5339 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5340 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5341 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.5342 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5343 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.5344 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5345 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" @.str.5346 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5347 = private unnamed_addr constant [14 x i8] c"the separator\00" -@.str.5348 = private unnamed_addr constant [31 x i8] c"call void @finch_str_join(ptr \00" -@.str.5349 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5350 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5351 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5352 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5353 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5354 = private unnamed_addr constant [7 x i8] c"insert\00" -@.str.5355 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5356 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.5347 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" +@.str.5348 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5349 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" +@.str.5350 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5351 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" +@.str.5352 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5353 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.5354 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5355 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\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"src/gen.fch\00" -@.str.5358 = private unnamed_addr constant [13 x i8] c"the position\00" +@.str.5358 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.5359 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5360 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5361 = private unnamed_addr constant [12 x i8] c"the element\00" -@.str.5362 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5363 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.5364 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5365 = private unnamed_addr constant [37 x i8] c"call void @finch_arr_insert_gap(ptr \00" -@.str.5366 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5367 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5368 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5369 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5370 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5371 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5372 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5373 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5374 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5375 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5376 = private unnamed_addr constant [7 x i8] c"remove\00" +@.str.5360 = private unnamed_addr constant [17 x i8] c"the default of '\00" +@.str.5361 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5362 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.5363 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5364 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.5365 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5366 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" +@.str.5367 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5368 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" +@.str.5369 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5370 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.5371 = private unnamed_addr constant [13 x i8] c"insertvalue \00" +@.str.5372 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5373 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5374 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5375 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5376 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.5377 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5378 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5379 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5380 = private unnamed_addr constant [13 x i8] c"the position\00" -@.str.5381 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5382 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5383 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5384 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5385 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5386 = private unnamed_addr constant [37 x i8] c"call void @finch_arr_remove_gap(ptr \00" -@.str.5387 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5388 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5389 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5390 = private unnamed_addr constant [7 x i8] c"resize\00" -@.str.5391 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5392 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5393 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5394 = private unnamed_addr constant [15 x i8] c"the new length\00" -@.str.5395 = private unnamed_addr constant [33 x i8] c"call void @finch_arr_resize(ptr \00" -@.str.5396 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5397 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5398 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5399 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5400 = private unnamed_addr constant [8 x i8] c"reverse\00" -@.str.5401 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5402 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5403 = private unnamed_addr constant [10 x i8] c"sdiv i64 \00" -@.str.5404 = private unnamed_addr constant [4 x i8] c", 2\00" -@.str.5405 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5406 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5407 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5408 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5409 = private unnamed_addr constant [9 x i8] c"sub i64 \00" -@.str.5410 = private unnamed_addr constant [9 x i8] c"sub i64 \00" -@.str.5411 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.5412 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5413 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5414 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5415 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5416 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5417 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5418 = private unnamed_addr constant [6 x i8] c"slice\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.5378 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" +@.str.5379 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5380 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5381 = private unnamed_addr constant [4 x i8] c"var\00" +@.str.5382 = private unnamed_addr constant [39 x i8] c"there is no variable or module named '\00" +@.str.5383 = private unnamed_addr constant [33 x i8] c"' (to use a module, add import \00" +@.str.5384 = private unnamed_addr constant [14 x i8] c" at the top)\00" +@.str.5385 = private unnamed_addr constant [2 x i8] c".\00" +@.str.5386 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5387 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5388 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5389 = private unnamed_addr constant [2 x i8] c".\00" +@.str.5390 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5391 = private unnamed_addr constant [13 x i8] c"the module '\00" +@.str.5392 = private unnamed_addr constant [36 x i8] c"' has no function or struct named '\00" +@.str.5393 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.5394 = private unnamed_addr constant [5 x i8] c"push\00" +@.str.5395 = private unnamed_addr constant [4 x i8] c"pop\00" +@.str.5396 = private unnamed_addr constant [7 x i8] c"insert\00" +@.str.5397 = private unnamed_addr constant [7 x i8] c"remove\00" +@.str.5398 = private unnamed_addr constant [6 x i8] c"clear\00" +@.str.5399 = private unnamed_addr constant [7 x i8] c"resize\00" +@.str.5400 = private unnamed_addr constant [5 x i8] c"sort\00" +@.str.5401 = private unnamed_addr constant [8 x i8] c"reverse\00" +@.str.5402 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5403 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" +@.str.5404 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.5405 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5406 = private unnamed_addr constant [64 x i8] c"() would change a temporary array; store it in a variable first\00" +@.str.5407 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5408 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5409 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.5410 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5411 = private unnamed_addr constant [62 x i8] c"() would change a temporary map; store it in a variable first\00" +@.str.5412 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5413 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5414 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5415 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.5416 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5417 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00" +@.str.5418 = private unnamed_addr constant [7 x i8] c", null\00" +@.str.5419 = private unnamed_addr constant [9 x i8] c"called .\00" +@.str.5420 = private unnamed_addr constant [21 x i8] c"() on a null pointer\00" @.str.5421 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5422 = private unnamed_addr constant [10 x i8] c"the start\00" -@.str.5423 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5424 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5425 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5426 = private unnamed_addr constant [8 x i8] c"the end\00" -@.str.5427 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5428 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.5429 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5430 = private unnamed_addr constant [14 x i8] c"icmp sgt i64 \00" -@.str.5431 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5432 = private unnamed_addr constant [14 x i8] c"icmp sgt i64 \00" -@.str.5433 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5434 = private unnamed_addr constant [7 x i8] c"or i1 \00" -@.str.5435 = private unnamed_addr constant [7 x i8] c"or i1 \00" -@.str.5436 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5437 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5438 = private unnamed_addr constant [34 x i8] c"slice(start, end) is out of range\00" -@.str.5439 = private unnamed_addr constant [9 x i8] c"sub i64 \00" -@.str.5440 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5441 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5442 = private unnamed_addr constant [31 x i8] c"call void @finch_arr_make(ptr \00" -@.str.5443 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5444 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5445 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5446 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5447 = private unnamed_addr constant [4 x i8] c"ptr\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.5422 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.5423 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.5424 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.5425 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.5426 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.5427 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5428 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.5429 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5430 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5431 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.5432 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5433 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5434 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.5435 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5436 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5437 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.5438 = private unnamed_addr constant [5 x i8] c"the \00" +@.str.5439 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5440 = private unnamed_addr constant [35 x i8] c" has no methods; add one with fn \00" +@.str.5441 = private unnamed_addr constant [2 x i8] c".\00" +@.str.5442 = private unnamed_addr constant [14 x i8] c"(...) { ... }\00" +@.str.5443 = private unnamed_addr constant [5 x i8] c"the \00" +@.str.5444 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5445 = private unnamed_addr constant [17 x i8] c" has no method '\00" +@.str.5446 = private unnamed_addr constant [12 x i8] c"' (it has: \00" +@.str.5447 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5448 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5449 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5450 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" @.str.5451 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5452 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5453 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5454 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5455 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.5456 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5457 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5458 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5459 = private unnamed_addr constant [5 x i8] c"sort\00" -@.str.5460 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.5461 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5462 = private unnamed_addr constant [48 x i8] c"sort() works on arrays of numbers, chars or str\00" -@.str.5463 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5464 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5465 = private unnamed_addr constant [22 x i8] c"call void @qsort(ptr \00" -@.str.5466 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5467 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5468 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5469 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5470 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5471 = private unnamed_addr constant [25 x i8] c"an array has no method '\00" -@.str.5472 = private unnamed_addr constant [97 x i8] c"' (it has: push, pop, insert, remove, clear, resize, find, contains, join, slice, reverse, sort)\00" -@.str.5473 = private unnamed_addr constant [12 x i8] c"@finch.cmp.\00" -@.str.5474 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5475 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\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 .done on a null pointer\00" -@.str.5478 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5479 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5480 = private unnamed_addr constant [40 x i8] c"call i64 @finch_str_cmp(ptr %x, ptr %y)\00" -@.str.5481 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" -@.str.5482 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.5483 = private unnamed_addr constant [3 x i8] c"%x\00" -@.str.5484 = private unnamed_addr constant [3 x i8] c"%y\00" -@.str.5485 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5486 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5487 = private unnamed_addr constant [10 x i8] c"fcmp olt \00" -@.str.5488 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5489 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5490 = private unnamed_addr constant [10 x i8] c"fcmp ogt \00" -@.str.5491 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5492 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5493 = private unnamed_addr constant [6 x i8] c"icmp \00" -@.str.5494 = private unnamed_addr constant [2 x i8] c"<\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 [3 x i8] c", \00" -@.str.5498 = private unnamed_addr constant [6 x i8] c"icmp \00" -@.str.5499 = private unnamed_addr constant [2 x i8] c">\00" -@.str.5500 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5501 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5502 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5503 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str.5504 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str.5505 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.5506 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5507 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str.5508 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.5509 = private unnamed_addr constant [9 x i8] c"ret i32 \00" -@.str.5510 = private unnamed_addr constant [21 x i8] c"define internal i32 \00" -@.str.5511 = private unnamed_addr constant [17 x i8] c"(ptr %x, ptr %y)\00" -@.str.5512 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5513 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.5514 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5515 = private unnamed_addr constant [4 x i8] c"sub\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 [10 x i8] c"the start\00" -@.str.5520 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5521 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5522 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5523 = private unnamed_addr constant [8 x i8] c"the end\00" -@.str.5524 = private unnamed_addr constant [30 x i8] c"call void @finch_str_sub(ptr \00" -@.str.5525 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5526 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5527 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5528 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5529 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5530 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5531 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5532 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5533 = private unnamed_addr constant [5 x i8] c"find\00" -@.str.5534 = private unnamed_addr constant [9 x i8] c"contains\00" -@.str.5535 = private unnamed_addr constant [12 x i8] c"starts_with\00" -@.str.5536 = private unnamed_addr constant [10 x i8] c"ends_with\00" -@.str.5537 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5538 = private unnamed_addr constant [21 x i8] c"the text to look for\00" -@.str.5539 = private unnamed_addr constant [5 x i8] c"find\00" -@.str.5540 = private unnamed_addr constant [30 x i8] c"call i64 @finch_str_find(ptr \00" -@.str.5541 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5542 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5543 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5544 = private unnamed_addr constant [9 x i8] c"contains\00" -@.str.5545 = private unnamed_addr constant [30 x i8] c"call i64 @finch_str_find(ptr \00" -@.str.5546 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5547 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5548 = private unnamed_addr constant [14 x i8] c"icmp sge i64 \00" -@.str.5549 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5550 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5551 = private unnamed_addr constant [18 x i8] c"@finch_str_starts\00" -@.str.5552 = private unnamed_addr constant [10 x i8] c"ends_with\00" -@.str.5553 = private unnamed_addr constant [16 x i8] c"@finch_str_ends\00" -@.str.5554 = private unnamed_addr constant [10 x i8] c"call i32 \00" -@.str.5555 = private unnamed_addr constant [6 x i8] c"(ptr \00" -@.str.5556 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5557 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5558 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str.5559 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5560 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5561 = private unnamed_addr constant [5 x i8] c"trim\00" -@.str.5562 = private unnamed_addr constant [6 x i8] c"upper\00" -@.str.5563 = private unnamed_addr constant [6 x i8] c"lower\00" -@.str.5564 = private unnamed_addr constant [22 x i8] c"call void @finch_str_\00" -@.str.5565 = private unnamed_addr constant [6 x i8] c"(ptr \00" -@.str.5566 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5567 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5568 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5569 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5570 = private unnamed_addr constant [8 x i8] c"replace\00" -@.str.5571 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5572 = private unnamed_addr constant [20 x i8] c"the text to replace\00" -@.str.5573 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5574 = private unnamed_addr constant [13 x i8] c"the new text\00" -@.str.5575 = private unnamed_addr constant [34 x i8] c"call void @finch_str_replace(ptr \00" -@.str.5576 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5577 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5578 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5579 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5580 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5581 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5582 = private unnamed_addr constant [6 x i8] c"split\00" -@.str.5583 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5584 = private unnamed_addr constant [14 x i8] c"the separator\00" -@.str.5585 = private unnamed_addr constant [32 x i8] c"call void @finch_str_split(ptr \00" -@.str.5586 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5587 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5588 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5589 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5590 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5591 = private unnamed_addr constant [7 x i8] c"repeat\00" -@.str.5592 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5593 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5594 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5595 = private unnamed_addr constant [10 x i8] c"the count\00" -@.str.5596 = private unnamed_addr constant [33 x i8] c"call void @finch_str_repeat(ptr \00" -@.str.5597 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5598 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5599 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5600 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5601 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5602 = private unnamed_addr constant [6 x i8] c"bytes\00" -@.str.5603 = private unnamed_addr constant [37 x i8] c"call void @finch_bytes_from_str(ptr \00" +@.str.5452 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.5453 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.5454 = private unnamed_addr constant [29 x i8] c"() would change a temporary \00" +@.str.5455 = private unnamed_addr constant [31 x i8] c"; store it in a variable first\00" +@.str.5456 = private unnamed_addr constant [20 x i8] c"the loop variable '\00" +@.str.5457 = private unnamed_addr constant [19 x i8] c"' can't be changed\00" +@.str.5458 = private unnamed_addr constant [2 x i8] c".\00" +@.str.5459 = private unnamed_addr constant [16 x i8] c" has no methods\00" +@.str.5460 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5461 = private unnamed_addr constant [47 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr \00" +@.str.5462 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" +@.str.5463 = private unnamed_addr constant [5 x i8] c"push\00" +@.str.5464 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5465 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5466 = private unnamed_addr constant [12 x i8] c"the element\00" +@.str.5467 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5468 = private unnamed_addr constant [9 x i8] c"add i64 \00" +@.str.5469 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str.5470 = private unnamed_addr constant [34 x i8] c"call void @finch_arr_reserve(ptr \00" +@.str.5471 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5472 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5473 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5474 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5475 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.5476 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5477 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5478 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5479 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.5480 = private unnamed_addr constant [4 x i8] c"pop\00" +@.str.5481 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5482 = private unnamed_addr constant [13 x i8] c"icmp eq i64 \00" +@.str.5483 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.5484 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" +@.str.5485 = private unnamed_addr constant [9 x i8] c"sub i64 \00" +@.str.5486 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str.5487 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5488 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.5489 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5490 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5491 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5492 = private unnamed_addr constant [6 x i8] c"clear\00" +@.str.5493 = private unnamed_addr constant [2 x i8] c"0\00" +@.str.5494 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5495 = private unnamed_addr constant [2 x i8] c"0\00" +@.str.5496 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.5497 = private unnamed_addr constant [5 x i8] c"find\00" +@.str.5498 = private unnamed_addr constant [9 x i8] c"contains\00" +@.str.5499 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5500 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5501 = private unnamed_addr constant [22 x i8] c"the value to look for\00" +@.str.5502 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5503 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5504 = private unnamed_addr constant [3 x i8] c"-1\00" +@.str.5505 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5506 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5507 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5508 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5509 = private unnamed_addr constant [2 x i8] c"0\00" +@.str.5510 = private unnamed_addr constant [10 x i8] c"find.cond\00" +@.str.5511 = private unnamed_addr constant [10 x i8] c"find.body\00" +@.str.5512 = private unnamed_addr constant [9 x i8] c"find.hit\00" +@.str.5513 = private unnamed_addr constant [10 x i8] c"find.next\00" +@.str.5514 = private unnamed_addr constant [9 x i8] c"find.end\00" +@.str.5515 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5516 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" +@.str.5517 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5518 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.5519 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5520 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5521 = private unnamed_addr constant [3 x i8] c"==\00" +@.str.5522 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5523 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5524 = private unnamed_addr constant [9 x i8] c"add i64 \00" +@.str.5525 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str.5526 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5527 = private unnamed_addr constant [5 x i8] c"find\00" +@.str.5528 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.5529 = private unnamed_addr constant [14 x i8] c"icmp sge i64 \00" +@.str.5530 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.5531 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.5532 = private unnamed_addr constant [5 x i8] c"join\00" +@.str.5533 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5534 = private unnamed_addr constant [32 x i8] c"join() works on an array of str\00" +@.str.5535 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5536 = private unnamed_addr constant [14 x i8] c"the separator\00" +@.str.5537 = private unnamed_addr constant [31 x i8] c"call void @finch_str_join(ptr \00" +@.str.5538 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5539 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5540 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5541 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5542 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5543 = private unnamed_addr constant [7 x i8] c"insert\00" +@.str.5544 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5545 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.5546 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5547 = private unnamed_addr constant [13 x i8] c"the position\00" +@.str.5548 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5549 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5550 = private unnamed_addr constant [12 x i8] c"the element\00" +@.str.5551 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5552 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" +@.str.5553 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5554 = private unnamed_addr constant [37 x i8] c"call void @finch_arr_insert_gap(ptr \00" +@.str.5555 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5556 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5557 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5558 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5559 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5560 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5561 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.5562 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5563 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5564 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.5565 = private unnamed_addr constant [7 x i8] c"remove\00" +@.str.5566 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5567 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.5568 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5569 = private unnamed_addr constant [13 x i8] c"the position\00" +@.str.5570 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5571 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5572 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.5573 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5574 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5575 = private unnamed_addr constant [37 x i8] c"call void @finch_arr_remove_gap(ptr \00" +@.str.5576 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5577 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5578 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5579 = private unnamed_addr constant [7 x i8] c"resize\00" +@.str.5580 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5581 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.5582 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5583 = private unnamed_addr constant [15 x i8] c"the new length\00" +@.str.5584 = private unnamed_addr constant [33 x i8] c"call void @finch_arr_resize(ptr \00" +@.str.5585 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5586 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5587 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5588 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.5589 = private unnamed_addr constant [8 x i8] c"reverse\00" +@.str.5590 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5591 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5592 = private unnamed_addr constant [10 x i8] c"sdiv i64 \00" +@.str.5593 = private unnamed_addr constant [4 x i8] c", 2\00" +@.str.5594 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.5595 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5596 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5597 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5598 = private unnamed_addr constant [9 x i8] c"sub i64 \00" +@.str.5599 = private unnamed_addr constant [9 x i8] c"sub i64 \00" +@.str.5600 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str.5601 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5602 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5603 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" @.str.5604 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5605 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5606 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5607 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.5608 = private unnamed_addr constant [22 x i8] c"a str has no method '\00" -@.str.5609 = 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.5610 = private unnamed_addr constant [55 x i8] c"declare void @finch_panic(ptr, i64, ptr) noreturn cold\00" -@.str.5611 = private unnamed_addr constant [66 x i8] c"declare void @finch_panic_index(ptr, i64, i64, i64) noreturn cold\00" -@.str.5612 = private unnamed_addr constant [30 x i8] c"declare ptr @finch_alloc(i64)\00" -@.str.5613 = private unnamed_addr constant [39 x i8] c"declare void @finch_str_copy(ptr, ptr)\00" -@.str.5614 = private unnamed_addr constant [33 x i8] c"declare void @finch_str_own(ptr)\00" -@.str.5615 = private unnamed_addr constant [46 x i8] c"declare void @finch_str_concat(ptr, ptr, ptr)\00" -@.str.5616 = private unnamed_addr constant [36 x i8] c"declare i32 @finch_str_eq(ptr, ptr)\00" -@.str.5617 = private unnamed_addr constant [37 x i8] c"declare i64 @finch_str_cmp(ptr, ptr)\00" -@.str.5618 = private unnamed_addr constant [43 x i8] c"declare void @finch_buf_add(ptr, ptr, i64)\00" -@.str.5619 = private unnamed_addr constant [38 x i8] c"declare void @finch_buf_int(ptr, i64)\00" -@.str.5620 = private unnamed_addr constant [39 x i8] c"declare void @finch_buf_uint(ptr, i64)\00" -@.str.5621 = private unnamed_addr constant [43 x i8] c"declare void @finch_buf_float(ptr, double)\00" -@.str.5622 = private unnamed_addr constant [39 x i8] c"declare void @finch_buf_bool(ptr, i32)\00" -@.str.5623 = private unnamed_addr constant [38 x i8] c"declare void @finch_buf_ptr(ptr, ptr)\00" -@.str.5624 = private unnamed_addr constant [43 x i8] c"declare void @finch_buf_char(ptr, i8, i32)\00" -@.str.5625 = private unnamed_addr constant [43 x i8] c"declare void @finch_buf_str(ptr, ptr, i32)\00" -@.str.5626 = private unnamed_addr constant [35 x i8] c"declare void @finch_buf_print(ptr)\00" -@.str.5627 = private unnamed_addr constant [43 x i8] c"declare void @finch_str_from_int(ptr, i64)\00" -@.str.5628 = private unnamed_addr constant [44 x i8] c"declare void @finch_str_from_uint(ptr, i64)\00" -@.str.5629 = private unnamed_addr constant [48 x i8] c"declare void @finch_str_from_float(ptr, double)\00" -@.str.5630 = private unnamed_addr constant [51 x i8] c"declare void @finch_str_from_char(ptr, i8 signext)\00" -@.str.5631 = private unnamed_addr constant [44 x i8] c"declare void @finch_str_from_bool(ptr, i32)\00" -@.str.5632 = private unnamed_addr constant [45 x i8] c"declare i64 @finch_str_to_int(ptr, ptr, i64)\00" -@.str.5633 = private unnamed_addr constant [50 x i8] c"declare double @finch_str_to_float(ptr, ptr, i64)\00" -@.str.5634 = private unnamed_addr constant [58 x i8] c"declare void @finch_str_sub(ptr, ptr, i64, i64, ptr, i64)\00" -@.str.5635 = private unnamed_addr constant [38 x i8] c"declare i64 @finch_str_find(ptr, ptr)\00" -@.str.5636 = private unnamed_addr constant [40 x i8] c"declare i32 @finch_str_starts(ptr, ptr)\00" -@.str.5637 = private unnamed_addr constant [38 x i8] c"declare i32 @finch_str_ends(ptr, ptr)\00" -@.str.5638 = private unnamed_addr constant [39 x i8] c"declare void @finch_str_trim(ptr, ptr)\00" -@.str.5639 = private unnamed_addr constant [40 x i8] c"declare void @finch_str_upper(ptr, ptr)\00" -@.str.5640 = private unnamed_addr constant [40 x i8] c"declare void @finch_str_lower(ptr, ptr)\00" -@.str.5641 = private unnamed_addr constant [52 x i8] c"declare void @finch_str_replace(ptr, ptr, ptr, ptr)\00" -@.str.5642 = private unnamed_addr constant [45 x i8] c"declare void @finch_str_split(ptr, ptr, ptr)\00" -@.str.5643 = private unnamed_addr constant [44 x i8] c"declare void @finch_str_join(ptr, ptr, ptr)\00" -@.str.5644 = private unnamed_addr constant [46 x i8] c"declare void @finch_str_repeat(ptr, ptr, i64)\00" -@.str.5645 = private unnamed_addr constant [45 x i8] c"declare void @finch_bytes_from_str(ptr, ptr)\00" -@.str.5646 = private unnamed_addr constant [53 x i8] c"declare i64 @finch_map_find(ptr, ptr, i64, i64, i32)\00" -@.str.5647 = private unnamed_addr constant [58 x i8] c"declare i64 @finch_map_slot(ptr, ptr, i64, i64, i32, ptr)\00" -@.str.5648 = private unnamed_addr constant [49 x i8] c"declare void @finch_map_remove_at(ptr, i64, i64)\00" -@.str.5649 = private unnamed_addr constant [35 x i8] c"declare void @finch_map_clear(ptr)\00" -@.str.5650 = private unnamed_addr constant [49 x i8] c"declare void @finch_map_clone_raw(ptr, ptr, i64)\00" -@.str.5651 = private unnamed_addr constant [61 x i8] c"declare void @finch_map_missing(ptr, i64, ptr) noreturn cold\00" -@.str.5652 = private unnamed_addr constant [56 x i8] c"declare void @finch_map_changed(ptr, i64) noreturn cold\00" -@.str.5653 = private unnamed_addr constant [47 x i8] c"declare void @finch_arr_reserve(ptr, i64, i64)\00" -@.str.5654 = private unnamed_addr constant [49 x i8] c"declare void @finch_arr_clone_raw(ptr, ptr, i64)\00" -@.str.5655 = private unnamed_addr constant [44 x i8] c"declare void @finch_arr_make(ptr, i64, i64)\00" -@.str.5656 = private unnamed_addr constant [46 x i8] c"declare void @finch_arr_resize(ptr, i64, i64)\00" -@.str.5657 = private unnamed_addr constant [60 x i8] c"declare void @finch_arr_insert_gap(ptr, i64, i64, ptr, i64)\00" -@.str.5658 = private unnamed_addr constant [50 x i8] c"declare void @finch_arr_remove_gap(ptr, i64, i64)\00" -@.str.5659 = private unnamed_addr constant [40 x i8] c"declare void @qsort(ptr, i64, i64, ptr)\00" -@.str.5660 = private unnamed_addr constant [40 x i8] c"declare void @finch_args(ptr, i32, ptr)\00" -@.str.5661 = private unnamed_addr constant [36 x i8] c"declare void @finch_input(ptr, ptr)\00" -@.str.5662 = private unnamed_addr constant [36 x i8] c"declare i32 @finch_file_exists(ptr)\00" -@.str.5663 = private unnamed_addr constant [46 x i8] c"declare i32 @finch_str_try_int(ptr, ptr, ptr)\00" -@.str.5664 = private unnamed_addr constant [48 x i8] c"declare i32 @finch_str_try_float(ptr, ptr, ptr)\00" -@.str.5665 = private unnamed_addr constant [48 x i8] c"declare i32 @finch_try_read_file(ptr, ptr, ptr)\00" -@.str.5666 = private unnamed_addr constant [49 x i8] c"declare i32 @finch_try_write_file(ptr, ptr, ptr)\00" -@.str.5667 = private unnamed_addr constant [45 x i8] c"declare i32 @finch_try_delete_file(ptr, ptr)\00" -@.str.5668 = private unnamed_addr constant [38 x i8] c"declare void @finch_report_error(ptr)\00" -@.str.5669 = private unnamed_addr constant [50 x i8] c"declare void @finch_read_file(ptr, ptr, ptr, i64)\00" -@.str.5670 = private unnamed_addr constant [40 x i8] c"declare i32 @finch_write_file(ptr, ptr)\00" -@.str.5671 = private unnamed_addr constant [30 x i8] c"declare i64 @finch_shell(ptr)\00" -@.str.5672 = private unnamed_addr constant [36 x i8] c"declare i32 @finch_delete_file(ptr)\00" -@.str.5673 = private unnamed_addr constant [30 x i8] c"declare i32 @printf(ptr, ...)\00" -@.str.5674 = private unnamed_addr constant [25 x i8] c"declare i32 @fflush(ptr)\00" -@.str.5675 = private unnamed_addr constant [41 x i8] c"declare void @finch_str_from_c(ptr, ptr)\00" -@.str.5676 = private unnamed_addr constant [34 x i8] c"declare void @finch_on_fatal(ptr)\00" -@.str.5677 = private unnamed_addr constant [35 x i8] c"declare ptr @finch_std_stream(i32)\00" -@.str.5678 = private unnamed_addr constant [45 x i8] c"declare void @finch_str_from_bytes(ptr, ptr)\00" -@.str.5679 = private unnamed_addr constant [33 x i8] c"declare void @exit(i32) noreturn\00" -@.str.5680 = private unnamed_addr constant [24 x i8] c"declare void @free(ptr)\00" -@.str.5681 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.5682 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.5683 = private unnamed_addr constant [53 x i8] c"; generated by the Finch compiler written in Finch\0A\0A\00" -@.str.5684 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5685 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.5686 = private unnamed_addr constant [18 x i8] c"target triple = \22\00" +@.str.5605 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5606 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.5607 = private unnamed_addr constant [6 x i8] c"slice\00" +@.str.5608 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5609 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.5610 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5611 = private unnamed_addr constant [10 x i8] c"the start\00" +@.str.5612 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5613 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.5614 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5615 = private unnamed_addr constant [8 x i8] c"the end\00" +@.str.5616 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5617 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" +@.str.5618 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.5619 = private unnamed_addr constant [14 x i8] c"icmp sgt i64 \00" +@.str.5620 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5621 = private unnamed_addr constant [14 x i8] c"icmp sgt i64 \00" +@.str.5622 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5623 = private unnamed_addr constant [7 x i8] c"or i1 \00" +@.str.5624 = private unnamed_addr constant [7 x i8] c"or i1 \00" +@.str.5625 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5626 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5627 = private unnamed_addr constant [34 x i8] c"slice(start, end) is out of range\00" +@.str.5628 = private unnamed_addr constant [9 x i8] c"sub i64 \00" +@.str.5629 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5630 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5631 = private unnamed_addr constant [31 x i8] c"call void @finch_arr_make(ptr \00" +@.str.5632 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5633 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5634 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5635 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5636 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5637 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.5638 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5639 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5640 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5641 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.5642 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5643 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5644 = private unnamed_addr constant [9 x i8] c"add i64 \00" +@.str.5645 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5646 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5647 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5648 = private unnamed_addr constant [5 x i8] c"sort\00" +@.str.5649 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.5650 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5651 = private unnamed_addr constant [48 x i8] c"sort() works on arrays of numbers, chars or str\00" +@.str.5652 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5653 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5654 = private unnamed_addr constant [22 x i8] c"call void @qsort(ptr \00" +@.str.5655 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5656 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5657 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5658 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5659 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.5660 = private unnamed_addr constant [25 x i8] c"an array has no method '\00" +@.str.5661 = private unnamed_addr constant [97 x i8] c"' (it has: push, pop, insert, remove, clear, resize, find, contains, join, slice, reverse, sort)\00" +@.str.5662 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5663 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5664 = private unnamed_addr constant [47 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr \00" +@.str.5665 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" +@.str.5666 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5667 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" +@.str.5668 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5669 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" +@.str.5670 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.5671 = private unnamed_addr constant [11 x i8] c"select i1 \00" +@.str.5672 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5673 = private unnamed_addr constant [11 x i8] c"select i1 \00" +@.str.5674 = private unnamed_addr constant [14 x i8] c", i64 0, i64 \00" +@.str.5675 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5676 = private unnamed_addr constant [9 x i8] c"sub i64 \00" +@.str.5677 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5678 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.5679 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5680 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5681 = private unnamed_addr constant [9 x i8] c"add i64 \00" +@.str.5682 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5683 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5684 = private unnamed_addr constant [12 x i8] c"@finch.cmp.\00" +@.str.5685 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5686 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" @.str.5687 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5688 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.5689 = private unnamed_addr constant [4 x i8] c"\22\0A\0A\00" -@.str.5690 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5691 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00" -@.str.5692 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.5693 = private unnamed_addr constant [3 x i8] c"\0A\0A\00" -@.str.5694 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.5695 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5696 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" -@.str.5697 = private unnamed_addr constant [63 x i8] c"declare void @llvm.dbg.declare(metadata, metadata, metadata)\0A\0A\00" -@.str.5698 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5699 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.5700 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.5701 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5702 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" -@.str.5703 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.5704 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5705 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" -@.str.5706 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5707 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.5708 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5709 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5710 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.5711 = private unnamed_addr constant [34 x i8] c"!{i32 7, !\22Dwarf Version\22, i32 4}\00" -@.str.5712 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5713 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.5714 = private unnamed_addr constant [39 x i8] c"!{i32 2, !\22Debug Info Version\22, i32 3}\00" -@.str.5715 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5716 = private unnamed_addr constant [32 x i8] c"used .mdfiles on a null pointer\00" -@.str.5717 = private unnamed_addr constant [20 x i8] c"!DIFile(filename: \22\00" -@.str.5718 = private unnamed_addr constant [16 x i8] c"\22, directory: \22\00" -@.str.5719 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5720 = private unnamed_addr constant [28 x i8] c"used .cwd on a null pointer\00" -@.str.5721 = private unnamed_addr constant [3 x i8] c"\22)\00" -@.str.5722 = private unnamed_addr constant [53 x i8] c"distinct !DICompileUnit(language: DW_LANG_C, file: !\00" +@.str.5688 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" +@.str.5689 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5690 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5691 = private unnamed_addr constant [40 x i8] c"call i64 @finch_str_cmp(ptr %x, ptr %y)\00" +@.str.5692 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" +@.str.5693 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str.5694 = private unnamed_addr constant [3 x i8] c"%x\00" +@.str.5695 = private unnamed_addr constant [3 x i8] c"%y\00" +@.str.5696 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5697 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5698 = private unnamed_addr constant [10 x i8] c"fcmp olt \00" +@.str.5699 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5700 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5701 = private unnamed_addr constant [10 x i8] c"fcmp ogt \00" +@.str.5702 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5703 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5704 = private unnamed_addr constant [6 x i8] c"icmp \00" +@.str.5705 = private unnamed_addr constant [2 x i8] c"<\00" +@.str.5706 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5707 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5708 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5709 = private unnamed_addr constant [6 x i8] c"icmp \00" +@.str.5710 = private unnamed_addr constant [2 x i8] c">\00" +@.str.5711 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5712 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5713 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5714 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str.5715 = private unnamed_addr constant [9 x i8] c"zext i1 \00" +@.str.5716 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str.5717 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5718 = private unnamed_addr constant [9 x i8] c"zext i1 \00" +@.str.5719 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str.5720 = private unnamed_addr constant [9 x i8] c"ret i32 \00" +@.str.5721 = private unnamed_addr constant [21 x i8] c"define internal i32 \00" +@.str.5722 = private unnamed_addr constant [17 x i8] c"(ptr %x, ptr %y)\00" @.str.5723 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5724 = private unnamed_addr constant [32 x i8] c"used .mdfiles on a null pointer\00" +@.str.5724 = private unnamed_addr constant [30 x i8] c"used .files 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 [85 x i8] c", producer: \22finch\22, isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug)\00" +@.str.5726 = private unnamed_addr constant [4 x i8] c"sub\00" @.str.5727 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5728 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" +@.str.5728 = private unnamed_addr constant [4 x i8] c"int\00" @.str.5729 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5730 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5731 = private unnamed_addr constant [5 x i8] c"main\00" -@.str.5732 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5733 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\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 [12 x i8] c"src/gen.fch\00" -@.str.5739 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.5740 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5741 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5742 = 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.5743 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5744 = private unnamed_addr constant [65 x i8] c":1:1: error: there is no main function (add 'fn main() { ... }')\00" -@.str.5745 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5746 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.5747 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.5730 = private unnamed_addr constant [10 x i8] c"the start\00" +@.str.5731 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5732 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.5733 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5734 = private unnamed_addr constant [8 x i8] c"the end\00" +@.str.5735 = private unnamed_addr constant [30 x i8] c"call void @finch_str_sub(ptr \00" +@.str.5736 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5737 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5738 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5739 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5740 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5741 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5742 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5743 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5744 = private unnamed_addr constant [5 x i8] c"find\00" +@.str.5745 = private unnamed_addr constant [9 x i8] c"contains\00" +@.str.5746 = private unnamed_addr constant [12 x i8] c"starts_with\00" +@.str.5747 = private unnamed_addr constant [10 x i8] c"ends_with\00" @.str.5748 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5749 = private unnamed_addr constant [29 x i8] c"used .sigs 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 [30 x i8] c"used .index on a null pointer\00" -@.str.5752 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5753 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.5754 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5755 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5756 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" -@.str.5757 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.5758 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5759 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.5760 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5761 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5762 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.5763 = private unnamed_addr constant [11 x i8] c" dllexport\00" -@.str.5764 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5765 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.5766 = private unnamed_addr constant [7 x i8] c"define\00" -@.str.5767 = 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.5768 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5769 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.5770 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5771 = private unnamed_addr constant [6 x i8] c"call \00" -@.str.5772 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5773 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.5774 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5775 = 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.5776 = private unnamed_addr constant [21 x i8] c"{ ptr, i64, i64 } %a\00" -@.str.5777 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5778 = private unnamed_addr constant [13 x i8] c" ret i32 0\0A\00" -@.str.5779 = private unnamed_addr constant [6 x i8] c"%r = \00" -@.str.5780 = private unnamed_addr constant [3 x i8] c" \00" -@.str.5781 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.5782 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5783 = private unnamed_addr constant [22 x i8] c" %ok = extractvalue \00" -@.str.5784 = 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.5785 = private unnamed_addr constant [21 x i8] c" %m = extractvalue \00" -@.str.5786 = 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.5787 = private unnamed_addr constant [63 x i8] c" call void @finch_report_error(ptr %mp)\0A ret i32 1\0Amain.ok:\0A\00" -@.str.5788 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5789 = private unnamed_addr constant [21 x i8] c" %v = extractvalue \00" -@.str.5790 = private unnamed_addr constant [54 x i8] c" %r, 1\0A %code = trunc i64 %v to i32\0A ret i32 %code\0A\00" -@.str.5791 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5792 = private unnamed_addr constant [6 x i8] c"%r = \00" -@.str.5793 = private unnamed_addr constant [47 x i8] c" %code = trunc i64 %r to i32\0A ret i32 %code\0A\00" -@.str.5794 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5795 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.5796 = private unnamed_addr constant [49 x i8] c"define i32 @main(i32 %argc, ptr %argv) {\0Aentry:\0A\00" -@.str.5797 = private unnamed_addr constant [3 x i8] c" \00" -@.str.5798 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.5799 = private unnamed_addr constant [3 x i8] c"}\0A\00" -@.str.5800 = private unnamed_addr constant [6 x i8] c"print\00" -@.str.5801 = private unnamed_addr constant [17 x i8] c"print(a, b, ...)\00" -@.str.5802 = private unnamed_addr constant [79 x i8] c"Prints the values separated by spaces, then a new line. Works with every type.\00" -@.str.5803 = private unnamed_addr constant [6 x i8] c"input\00" -@.str.5804 = private unnamed_addr constant [32 x i8] c"input(str question = \22\22) -> str\00" -@.str.5805 = private unnamed_addr constant [78 x i8] c"Shows the question and reads one line typed by the user, without the newline.\00" -@.str.5806 = private unnamed_addr constant [10 x i8] c"read_file\00" -@.str.5807 = private unnamed_addr constant [27 x i8] c"read_file(str path) -> str\00" -@.str.5808 = 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.5809 = private unnamed_addr constant [11 x i8] c"write_file\00" -@.str.5810 = private unnamed_addr constant [39 x i8] c"write_file(str path, str text) -> bool\00" -@.str.5811 = 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.5812 = private unnamed_addr constant [12 x i8] c"file_exists\00" -@.str.5813 = private unnamed_addr constant [30 x i8] c"file_exists(str path) -> bool\00" -@.str.5814 = private unnamed_addr constant [30 x i8] c"Is there a file at this path?\00" -@.str.5815 = private unnamed_addr constant [12 x i8] c"delete_file\00" -@.str.5816 = private unnamed_addr constant [30 x i8] c"delete_file(str path) -> bool\00" -@.str.5817 = 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.5818 = private unnamed_addr constant [6 x i8] c"error\00" -@.str.5819 = private unnamed_addr constant [19 x i8] c"error(str message)\00" -@.str.5820 = 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.5821 = private unnamed_addr constant [6 x i8] c"shell\00" -@.str.5822 = private unnamed_addr constant [26 x i8] c"shell(str command) -> int\00" -@.str.5823 = private unnamed_addr constant [67 x i8] c"Runs a command in the system's shell and gives back its exit code.\00" -@.str.5824 = private unnamed_addr constant [5 x i8] c"exit\00" -@.str.5825 = private unnamed_addr constant [15 x i8] c"exit(int code)\00" -@.str.5826 = private unnamed_addr constant [49 x i8] c"Ends the program right away with this exit code.\00" -@.str.5827 = private unnamed_addr constant [5 x i8] c"addr\00" -@.str.5828 = private unnamed_addr constant [18 x i8] c"addr(x) -> ptr[T]\00" -@.str.5829 = private unnamed_addr constant [78 x i8] c"A pointer to a variable, field or element. addr(function) gives C a callback.\00" -@.str.5830 = private unnamed_addr constant [4 x i8] c"new\00" -@.str.5831 = private unnamed_addr constant [21 x i8] c"new(value) -> ptr[T]\00" -@.str.5832 = private unnamed_addr constant [67 x i8] c"Puts a copy of the value on the heap. Give it back with free(...).\00" -@.str.5833 = private unnamed_addr constant [5 x i8] c"free\00" -@.str.5834 = private unnamed_addr constant [12 x i8] c"free(ptr p)\00" -@.str.5835 = private unnamed_addr constant [74 x i8] c"Gives back memory from new(...) (or from C), freeing what the value owns.\00" -@.str.5836 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5837 = private unnamed_addr constant [14 x i8] c"str(x) -> str\00" -@.str.5838 = private unnamed_addr constant [62 x i8] c"Turns a number, bool, char, []u8 or C char pointer into text.\00" -@.str.5839 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5840 = private unnamed_addr constant [14 x i8] c"int(x) -> int\00" -@.str.5841 = 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.5842 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.5843 = private unnamed_addr constant [18 x i8] c"float(x) -> float\00" -@.str.5844 = 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.5845 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.5846 = private unnamed_addr constant [20 x i8] c"char(int n) -> char\00" -@.str.5847 = private unnamed_addr constant [30 x i8] c"The character with this code.\00" -@.str.5848 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5849 = private unnamed_addr constant [20 x i8] c"bool(int n) -> bool\00" -@.str.5850 = private unnamed_addr constant [27 x i8] c"true for any number but 0.\00" -@.str.5851 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5852 = private unnamed_addr constant [14 x i8] c"ptr(x) -> ptr\00" -@.str.5853 = 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.5854 = private unnamed_addr constant [4 x i8] c"len\00" -@.str.5855 = private unnamed_addr constant [12 x i8] c".len -> int\00" -@.str.5856 = private unnamed_addr constant [24 x i8] c"The number of elements.\00" -@.str.5857 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5858 = private unnamed_addr constant [15 x i8] c".ptr -> ptr[T]\00" -@.str.5859 = private unnamed_addr constant [41 x i8] c"The address of the first element, for C.\00" -@.str.5860 = private unnamed_addr constant [5 x i8] c"push\00" -@.str.5861 = private unnamed_addr constant [10 x i8] c"push(T x)\00" -@.str.5862 = private unnamed_addr constant [19 x i8] c"Adds x at the end.\00" -@.str.5863 = private unnamed_addr constant [4 x i8] c"pop\00" -@.str.5864 = private unnamed_addr constant [11 x i8] c"pop() -> T\00" -@.str.5865 = private unnamed_addr constant [44 x i8] c"Removes the last element and gives it back.\00" -@.str.5866 = private unnamed_addr constant [7 x i8] c"insert\00" -@.str.5867 = private unnamed_addr constant [19 x i8] c"insert(int i, T x)\00" -@.str.5868 = private unnamed_addr constant [39 x i8] c"Puts x at position i, moving the rest.\00" -@.str.5869 = private unnamed_addr constant [7 x i8] c"remove\00" -@.str.5870 = private unnamed_addr constant [19 x i8] c"remove(int i) -> T\00" -@.str.5871 = private unnamed_addr constant [38 x i8] c"Removes position i and gives it back.\00" -@.str.5872 = private unnamed_addr constant [6 x i8] c"clear\00" -@.str.5873 = private unnamed_addr constant [8 x i8] c"clear()\00" -@.str.5874 = private unnamed_addr constant [20 x i8] c"Removes everything.\00" -@.str.5875 = private unnamed_addr constant [7 x i8] c"resize\00" -@.str.5876 = private unnamed_addr constant [14 x i8] c"resize(int n)\00" -@.str.5877 = private unnamed_addr constant [47 x i8] c"Makes the array n long; new elements are zero.\00" -@.str.5878 = private unnamed_addr constant [5 x i8] c"find\00" -@.str.5879 = private unnamed_addr constant [17 x i8] c"find(T x) -> int\00" -@.str.5880 = private unnamed_addr constant [23 x i8] c"The index of x, or -1.\00" -@.str.5881 = private unnamed_addr constant [9 x i8] c"contains\00" -@.str.5882 = private unnamed_addr constant [22 x i8] c"contains(T x) -> bool\00" -@.str.5883 = private unnamed_addr constant [19 x i8] c"Is x in the array?\00" -@.str.5884 = private unnamed_addr constant [5 x i8] c"sort\00" -@.str.5885 = private unnamed_addr constant [7 x i8] c"sort()\00" -@.str.5886 = private unnamed_addr constant [38 x i8] c"Sorts in place (numbers, chars, str).\00" -@.str.5887 = private unnamed_addr constant [8 x i8] c"reverse\00" -@.str.5888 = private unnamed_addr constant [10 x i8] c"reverse()\00" -@.str.5889 = private unnamed_addr constant [19 x i8] c"Reverses in place.\00" -@.str.5890 = private unnamed_addr constant [6 x i8] c"slice\00" -@.str.5891 = private unnamed_addr constant [33 x i8] c"slice(int start, int end) -> []T\00" -@.str.5892 = private unnamed_addr constant [46 x i8] c"A new array with the elements start to end-1.\00" -@.str.5893 = private unnamed_addr constant [5 x i8] c"join\00" -@.str.5894 = private unnamed_addr constant [21 x i8] c"join(str sep) -> str\00" -@.str.5895 = private unnamed_addr constant [48 x i8] c"For []str: one text with sep between the parts.\00" -@.str.5896 = private unnamed_addr constant [4 x i8] c"len\00" -@.str.5897 = private unnamed_addr constant [12 x i8] c".len -> int\00" -@.str.5898 = private unnamed_addr constant [21 x i8] c"The number of bytes.\00" -@.str.5899 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5900 = private unnamed_addr constant [18 x i8] c".ptr -> ptr[char]\00" -@.str.5901 = private unnamed_addr constant [60 x i8] c"The address of the text, for C (valid while the str lives).\00" -@.str.5902 = private unnamed_addr constant [4 x i8] c"sub\00" -@.str.5903 = private unnamed_addr constant [31 x i8] c"sub(int start, int end) -> str\00" -@.str.5904 = private unnamed_addr constant [30 x i8] c"The part from start to end-1.\00" -@.str.5905 = private unnamed_addr constant [5 x i8] c"find\00" -@.str.5906 = private unnamed_addr constant [19 x i8] c"find(str t) -> int\00" -@.str.5907 = private unnamed_addr constant [23 x i8] c"Where t starts, or -1.\00" -@.str.5908 = private unnamed_addr constant [9 x i8] c"contains\00" -@.str.5909 = private unnamed_addr constant [24 x i8] c"contains(str t) -> bool\00" -@.str.5910 = private unnamed_addr constant [25 x i8] c"Does the text contain t?\00" -@.str.5911 = private unnamed_addr constant [12 x i8] c"starts_with\00" -@.str.5912 = private unnamed_addr constant [27 x i8] c"starts_with(str t) -> bool\00" -@.str.5913 = private unnamed_addr constant [28 x i8] c"Does the text start with t?\00" -@.str.5914 = private unnamed_addr constant [10 x i8] c"ends_with\00" -@.str.5915 = private unnamed_addr constant [25 x i8] c"ends_with(str t) -> bool\00" -@.str.5916 = private unnamed_addr constant [26 x i8] c"Does the text end with t?\00" -@.str.5917 = private unnamed_addr constant [6 x i8] c"split\00" -@.str.5918 = private unnamed_addr constant [24 x i8] c"split(str sep) -> []str\00" -@.str.5919 = private unnamed_addr constant [63 x i8] c"The parts between each sep; split(\22\22) gives single characters.\00" -@.str.5920 = private unnamed_addr constant [5 x i8] c"trim\00" -@.str.5921 = private unnamed_addr constant [14 x i8] c"trim() -> str\00" -@.str.5922 = private unnamed_addr constant [42 x i8] c"Without spaces and newlines at both ends.\00" -@.str.5923 = private unnamed_addr constant [6 x i8] c"upper\00" -@.str.5924 = private unnamed_addr constant [15 x i8] c"upper() -> str\00" -@.str.5925 = private unnamed_addr constant [25 x i8] c"With a-z changed to A-Z.\00" -@.str.5926 = private unnamed_addr constant [6 x i8] c"lower\00" -@.str.5927 = private unnamed_addr constant [15 x i8] c"lower() -> str\00" -@.str.5928 = private unnamed_addr constant [25 x i8] c"With A-Z changed to a-z.\00" -@.str.5929 = private unnamed_addr constant [8 x i8] c"replace\00" -@.str.5930 = private unnamed_addr constant [33 x i8] c"replace(str from, str to) -> str\00" -@.str.5931 = private unnamed_addr constant [27 x i8] c"Every from replaced by to.\00" -@.str.5932 = private unnamed_addr constant [7 x i8] c"repeat\00" -@.str.5933 = private unnamed_addr constant [21 x i8] c"repeat(int n) -> str\00" -@.str.5934 = private unnamed_addr constant [18 x i8] c"The text n times.\00" -@.str.5935 = private unnamed_addr constant [6 x i8] c"bytes\00" -@.str.5936 = private unnamed_addr constant [16 x i8] c"bytes() -> []u8\00" -@.str.5937 = private unnamed_addr constant [23 x i8] c"The bytes of the text.\00" -@.str.5938 = private unnamed_addr constant [4 x i8] c"len\00" -@.str.5939 = private unnamed_addr constant [12 x i8] c".len -> int\00" -@.str.5940 = private unnamed_addr constant [20 x i8] c"The number of keys.\00" -@.str.5941 = private unnamed_addr constant [4 x i8] c"has\00" -@.str.5942 = private unnamed_addr constant [19 x i8] c"has(K key) -> bool\00" -@.str.5943 = private unnamed_addr constant [23 x i8] c"Is the key in the map?\00" -@.str.5944 = private unnamed_addr constant [4 x i8] c"get\00" -@.str.5945 = private unnamed_addr constant [27 x i8] c"get(K key, V default) -> V\00" -@.str.5946 = private unnamed_addr constant [54 x i8] c"The value for key, or default if the key isn't there.\00" -@.str.5947 = private unnamed_addr constant [7 x i8] c"remove\00" -@.str.5948 = private unnamed_addr constant [22 x i8] c"remove(K key) -> bool\00" -@.str.5949 = private unnamed_addr constant [53 x i8] c"Removes the key and its value; true if it was there.\00" -@.str.5950 = private unnamed_addr constant [6 x i8] c"clear\00" -@.str.5951 = private unnamed_addr constant [8 x i8] c"clear()\00" -@.str.5952 = private unnamed_addr constant [20 x i8] c"Removes everything.\00" -@.str.5953 = private unnamed_addr constant [5 x i8] c"keys\00" -@.str.5954 = private unnamed_addr constant [14 x i8] c"keys() -> []K\00" -@.str.5955 = private unnamed_addr constant [40 x i8] c"The keys, in the order they were added.\00" -@.str.5956 = private unnamed_addr constant [7 x i8] c"values\00" -@.str.5957 = private unnamed_addr constant [16 x i8] c"values() -> []V\00" -@.str.5958 = private unnamed_addr constant [48 x i8] c"The values, in the order their keys were added.\00" -@.str.5959 = private unnamed_addr constant [3 x i8] c"fn\00" -@.str.5960 = private unnamed_addr constant [7 x i8] c"return\00" -@.str.5961 = private unnamed_addr constant [3 x i8] c"if\00" -@.str.5962 = private unnamed_addr constant [5 x i8] c"else\00" -@.str.5963 = private unnamed_addr constant [6 x i8] c"while\00" -@.str.5964 = private unnamed_addr constant [4 x i8] c"for\00" -@.str.5965 = private unnamed_addr constant [3 x i8] c"in\00" -@.str.5966 = private unnamed_addr constant [6 x i8] c"break\00" -@.str.5967 = private unnamed_addr constant [9 x i8] c"continue\00" -@.str.5968 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.5969 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.5970 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.5971 = private unnamed_addr constant [7 x i8] c"import\00" -@.str.5972 = private unnamed_addr constant [5 x i8] c"link\00" -@.str.5973 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.5974 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.5975 = private unnamed_addr constant [6 x i8] c"match\00" -@.str.5976 = private unnamed_addr constant [7 x i8] c"export\00" -@.str.5977 = private unnamed_addr constant [6 x i8] c"defer\00" -@.str.5978 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.5979 = private unnamed_addr constant [4 x i8] c"try\00" -@.str.5980 = private unnamed_addr constant [5 x i8] c"self\00" -@.str.5981 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5982 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.5983 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5984 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.5985 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5986 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5987 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.5988 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.5989 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.5990 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.5991 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5992 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.5993 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.5994 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.5995 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.5996 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.5997 = private unnamed_addr constant [4 x i8] c"f64\00" -@.str.5998 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" -@.str.5999 = private unnamed_addr constant [6 x i8] c"\0A```\0A\00" +@.str.5749 = private unnamed_addr constant [21 x i8] c"the text to look for\00" +@.str.5750 = private unnamed_addr constant [5 x i8] c"find\00" +@.str.5751 = private unnamed_addr constant [30 x i8] c"call i64 @finch_str_find(ptr \00" +@.str.5752 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5753 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5754 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.5755 = private unnamed_addr constant [9 x i8] c"contains\00" +@.str.5756 = private unnamed_addr constant [30 x i8] c"call i64 @finch_str_find(ptr \00" +@.str.5757 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5758 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5759 = private unnamed_addr constant [14 x i8] c"icmp sge i64 \00" +@.str.5760 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.5761 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.5762 = private unnamed_addr constant [18 x i8] c"@finch_str_starts\00" +@.str.5763 = private unnamed_addr constant [10 x i8] c"ends_with\00" +@.str.5764 = private unnamed_addr constant [16 x i8] c"@finch_str_ends\00" +@.str.5765 = private unnamed_addr constant [10 x i8] c"call i32 \00" +@.str.5766 = private unnamed_addr constant [6 x i8] c"(ptr \00" +@.str.5767 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5768 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5769 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" +@.str.5770 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.5771 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.5772 = private unnamed_addr constant [5 x i8] c"trim\00" +@.str.5773 = private unnamed_addr constant [6 x i8] c"upper\00" +@.str.5774 = private unnamed_addr constant [6 x i8] c"lower\00" +@.str.5775 = private unnamed_addr constant [22 x i8] c"call void @finch_str_\00" +@.str.5776 = private unnamed_addr constant [6 x i8] c"(ptr \00" +@.str.5777 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5778 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5779 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5780 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5781 = private unnamed_addr constant [8 x i8] c"replace\00" +@.str.5782 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5783 = private unnamed_addr constant [20 x i8] c"the text to replace\00" +@.str.5784 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5785 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" +@.str.5786 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5787 = private unnamed_addr constant [13 x i8] c"the new text\00" +@.str.5788 = private unnamed_addr constant [34 x i8] c"call void @finch_str_replace(ptr \00" +@.str.5789 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5790 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5791 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5792 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5793 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5794 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5795 = private unnamed_addr constant [6 x i8] c"split\00" +@.str.5796 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5797 = private unnamed_addr constant [14 x i8] c"the separator\00" +@.str.5798 = private unnamed_addr constant [32 x i8] c"call void @finch_str_split(ptr \00" +@.str.5799 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5800 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5801 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5802 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5803 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5804 = private unnamed_addr constant [7 x i8] c"repeat\00" +@.str.5805 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5806 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.5807 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5808 = private unnamed_addr constant [10 x i8] c"the count\00" +@.str.5809 = private unnamed_addr constant [33 x i8] c"call void @finch_str_repeat(ptr \00" +@.str.5810 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5811 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5812 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5813 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5814 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5815 = private unnamed_addr constant [6 x i8] c"bytes\00" +@.str.5816 = private unnamed_addr constant [37 x i8] c"call void @finch_bytes_from_str(ptr \00" +@.str.5817 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5818 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5819 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5820 = private unnamed_addr constant [3 x i8] c"u8\00" +@.str.5821 = private unnamed_addr constant [22 x i8] c"a str has no method '\00" +@.str.5822 = 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.5823 = private unnamed_addr constant [55 x i8] c"declare void @finch_panic(ptr, i64, ptr) noreturn cold\00" +@.str.5824 = private unnamed_addr constant [66 x i8] c"declare void @finch_panic_index(ptr, i64, i64, i64) noreturn cold\00" +@.str.5825 = private unnamed_addr constant [30 x i8] c"declare ptr @finch_alloc(i64)\00" +@.str.5826 = private unnamed_addr constant [39 x i8] c"declare void @finch_str_copy(ptr, ptr)\00" +@.str.5827 = private unnamed_addr constant [34 x i8] c"declare void @finch_str_drop(ptr)\00" +@.str.5828 = private unnamed_addr constant [34 x i8] c"declare void @finch_arr_free(ptr)\00" +@.str.5829 = private unnamed_addr constant [34 x i8] c"declare void @finch_map_free(ptr)\00" +@.str.5830 = private unnamed_addr constant [33 x i8] c"declare void @finch_str_own(ptr)\00" +@.str.5831 = private unnamed_addr constant [46 x i8] c"declare void @finch_str_concat(ptr, ptr, ptr)\00" +@.str.5832 = private unnamed_addr constant [36 x i8] c"declare i32 @finch_str_eq(ptr, ptr)\00" +@.str.5833 = private unnamed_addr constant [37 x i8] c"declare i64 @finch_str_cmp(ptr, ptr)\00" +@.str.5834 = private unnamed_addr constant [43 x i8] c"declare void @finch_buf_add(ptr, ptr, i64)\00" +@.str.5835 = private unnamed_addr constant [38 x i8] c"declare void @finch_buf_int(ptr, i64)\00" +@.str.5836 = private unnamed_addr constant [39 x i8] c"declare void @finch_buf_uint(ptr, i64)\00" +@.str.5837 = private unnamed_addr constant [43 x i8] c"declare void @finch_buf_float(ptr, double)\00" +@.str.5838 = private unnamed_addr constant [39 x i8] c"declare void @finch_buf_bool(ptr, i32)\00" +@.str.5839 = private unnamed_addr constant [38 x i8] c"declare void @finch_buf_ptr(ptr, ptr)\00" +@.str.5840 = private unnamed_addr constant [43 x i8] c"declare void @finch_buf_char(ptr, i8, i32)\00" +@.str.5841 = private unnamed_addr constant [43 x i8] c"declare void @finch_buf_str(ptr, ptr, i32)\00" +@.str.5842 = private unnamed_addr constant [35 x i8] c"declare void @finch_buf_print(ptr)\00" +@.str.5843 = private unnamed_addr constant [43 x i8] c"declare void @finch_str_from_int(ptr, i64)\00" +@.str.5844 = private unnamed_addr constant [44 x i8] c"declare void @finch_str_from_uint(ptr, i64)\00" +@.str.5845 = private unnamed_addr constant [48 x i8] c"declare void @finch_str_from_float(ptr, double)\00" +@.str.5846 = private unnamed_addr constant [51 x i8] c"declare void @finch_str_from_char(ptr, i8 signext)\00" +@.str.5847 = private unnamed_addr constant [44 x i8] c"declare void @finch_str_from_bool(ptr, i32)\00" +@.str.5848 = private unnamed_addr constant [45 x i8] c"declare i64 @finch_str_to_int(ptr, ptr, i64)\00" +@.str.5849 = private unnamed_addr constant [50 x i8] c"declare double @finch_str_to_float(ptr, ptr, i64)\00" +@.str.5850 = private unnamed_addr constant [58 x i8] c"declare void @finch_str_sub(ptr, ptr, i64, i64, ptr, i64)\00" +@.str.5851 = private unnamed_addr constant [38 x i8] c"declare i64 @finch_str_find(ptr, ptr)\00" +@.str.5852 = private unnamed_addr constant [40 x i8] c"declare i32 @finch_str_starts(ptr, ptr)\00" +@.str.5853 = private unnamed_addr constant [38 x i8] c"declare i32 @finch_str_ends(ptr, ptr)\00" +@.str.5854 = private unnamed_addr constant [39 x i8] c"declare void @finch_str_trim(ptr, ptr)\00" +@.str.5855 = private unnamed_addr constant [40 x i8] c"declare void @finch_str_upper(ptr, ptr)\00" +@.str.5856 = private unnamed_addr constant [40 x i8] c"declare void @finch_str_lower(ptr, ptr)\00" +@.str.5857 = private unnamed_addr constant [52 x i8] c"declare void @finch_str_replace(ptr, ptr, ptr, ptr)\00" +@.str.5858 = private unnamed_addr constant [45 x i8] c"declare void @finch_str_split(ptr, ptr, ptr)\00" +@.str.5859 = private unnamed_addr constant [44 x i8] c"declare void @finch_str_join(ptr, ptr, ptr)\00" +@.str.5860 = private unnamed_addr constant [46 x i8] c"declare void @finch_str_repeat(ptr, ptr, i64)\00" +@.str.5861 = private unnamed_addr constant [45 x i8] c"declare void @finch_bytes_from_str(ptr, ptr)\00" +@.str.5862 = private unnamed_addr constant [53 x i8] c"declare i64 @finch_map_find(ptr, ptr, i64, i64, i32)\00" +@.str.5863 = private unnamed_addr constant [58 x i8] c"declare i64 @finch_map_slot(ptr, ptr, i64, i64, i32, ptr)\00" +@.str.5864 = private unnamed_addr constant [49 x i8] c"declare void @finch_map_remove_at(ptr, i64, i64)\00" +@.str.5865 = private unnamed_addr constant [35 x i8] c"declare void @finch_map_clear(ptr)\00" +@.str.5866 = private unnamed_addr constant [49 x i8] c"declare void @finch_map_clone_raw(ptr, ptr, i64)\00" +@.str.5867 = private unnamed_addr constant [61 x i8] c"declare void @finch_map_missing(ptr, i64, ptr) noreturn cold\00" +@.str.5868 = private unnamed_addr constant [56 x i8] c"declare void @finch_map_changed(ptr, i64) noreturn cold\00" +@.str.5869 = private unnamed_addr constant [47 x i8] c"declare void @finch_arr_reserve(ptr, i64, i64)\00" +@.str.5870 = private unnamed_addr constant [49 x i8] c"declare void @finch_arr_clone_raw(ptr, ptr, i64)\00" +@.str.5871 = private unnamed_addr constant [44 x i8] c"declare void @finch_arr_make(ptr, i64, i64)\00" +@.str.5872 = private unnamed_addr constant [46 x i8] c"declare void @finch_arr_resize(ptr, i64, i64)\00" +@.str.5873 = private unnamed_addr constant [60 x i8] c"declare void @finch_arr_insert_gap(ptr, i64, i64, ptr, i64)\00" +@.str.5874 = private unnamed_addr constant [50 x i8] c"declare void @finch_arr_remove_gap(ptr, i64, i64)\00" +@.str.5875 = private unnamed_addr constant [40 x i8] c"declare void @qsort(ptr, i64, i64, ptr)\00" +@.str.5876 = private unnamed_addr constant [40 x i8] c"declare void @finch_args(ptr, i32, ptr)\00" +@.str.5877 = private unnamed_addr constant [36 x i8] c"declare void @finch_input(ptr, ptr)\00" +@.str.5878 = private unnamed_addr constant [36 x i8] c"declare i32 @finch_file_exists(ptr)\00" +@.str.5879 = private unnamed_addr constant [46 x i8] c"declare i32 @finch_str_try_int(ptr, ptr, ptr)\00" +@.str.5880 = private unnamed_addr constant [48 x i8] c"declare i32 @finch_str_try_float(ptr, ptr, ptr)\00" +@.str.5881 = private unnamed_addr constant [48 x i8] c"declare i32 @finch_try_read_file(ptr, ptr, ptr)\00" +@.str.5882 = private unnamed_addr constant [49 x i8] c"declare i32 @finch_try_write_file(ptr, ptr, ptr)\00" +@.str.5883 = private unnamed_addr constant [45 x i8] c"declare i32 @finch_try_delete_file(ptr, ptr)\00" +@.str.5884 = private unnamed_addr constant [38 x i8] c"declare void @finch_report_error(ptr)\00" +@.str.5885 = private unnamed_addr constant [50 x i8] c"declare void @finch_read_file(ptr, ptr, ptr, i64)\00" +@.str.5886 = private unnamed_addr constant [40 x i8] c"declare i32 @finch_write_file(ptr, ptr)\00" +@.str.5887 = private unnamed_addr constant [30 x i8] c"declare i64 @finch_shell(ptr)\00" +@.str.5888 = private unnamed_addr constant [36 x i8] c"declare i32 @finch_delete_file(ptr)\00" +@.str.5889 = private unnamed_addr constant [30 x i8] c"declare i32 @printf(ptr, ...)\00" +@.str.5890 = private unnamed_addr constant [25 x i8] c"declare i32 @fflush(ptr)\00" +@.str.5891 = private unnamed_addr constant [41 x i8] c"declare void @finch_str_from_c(ptr, ptr)\00" +@.str.5892 = private unnamed_addr constant [34 x i8] c"declare void @finch_on_fatal(ptr)\00" +@.str.5893 = private unnamed_addr constant [35 x i8] c"declare ptr @finch_std_stream(i32)\00" +@.str.5894 = private unnamed_addr constant [45 x i8] c"declare void @finch_str_from_bytes(ptr, ptr)\00" +@.str.5895 = private unnamed_addr constant [33 x i8] c"declare void @exit(i32) noreturn\00" +@.str.5896 = private unnamed_addr constant [24 x i8] c"declare void @free(ptr)\00" +@.str.5897 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.5898 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.5899 = private unnamed_addr constant [53 x i8] c"; generated by the Finch compiler written in Finch\0A\0A\00" +@.str.5900 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5901 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" +@.str.5902 = private unnamed_addr constant [18 x i8] c"target triple = \22\00" +@.str.5903 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5904 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" +@.str.5905 = private unnamed_addr constant [4 x i8] c"\22\0A\0A\00" +@.str.5906 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5907 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00" +@.str.5908 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.5909 = private unnamed_addr constant [3 x i8] c"\0A\0A\00" +@.str.5910 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.5911 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5912 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" +@.str.5913 = private unnamed_addr constant [63 x i8] c"declare void @llvm.dbg.declare(metadata, metadata, metadata)\0A\0A\00" +@.str.5914 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5915 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.5916 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.5917 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5918 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" +@.str.5919 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.5920 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5921 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" +@.str.5922 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5923 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" +@.str.5924 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5925 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5926 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" +@.str.5927 = private unnamed_addr constant [34 x i8] c"!{i32 7, !\22Dwarf Version\22, i32 4}\00" +@.str.5928 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5929 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" +@.str.5930 = private unnamed_addr constant [39 x i8] c"!{i32 2, !\22Debug Info Version\22, i32 3}\00" +@.str.5931 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5932 = private unnamed_addr constant [32 x i8] c"used .mdfiles on a null pointer\00" +@.str.5933 = private unnamed_addr constant [20 x i8] c"!DIFile(filename: \22\00" +@.str.5934 = private unnamed_addr constant [16 x i8] c"\22, directory: \22\00" +@.str.5935 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5936 = private unnamed_addr constant [28 x i8] c"used .cwd on a null pointer\00" +@.str.5937 = private unnamed_addr constant [3 x i8] c"\22)\00" +@.str.5938 = private unnamed_addr constant [53 x i8] c"distinct !DICompileUnit(language: DW_LANG_C, file: !\00" +@.str.5939 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5940 = private unnamed_addr constant [32 x i8] c"used .mdfiles on a null pointer\00" +@.str.5941 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5942 = private unnamed_addr constant [85 x i8] c", producer: \22finch\22, isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug)\00" +@.str.5943 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5944 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" +@.str.5945 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5946 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5947 = private unnamed_addr constant [5 x i8] c"main\00" +@.str.5948 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5949 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.5950 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5951 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.5952 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5953 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5954 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5955 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.5956 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5957 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5958 = 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.5959 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5960 = private unnamed_addr constant [65 x i8] c":1:1: error: there is no main function (add 'fn main() { ... }')\00" +@.str.5961 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5962 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.5963 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.5964 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5965 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.5966 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5967 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" +@.str.5968 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5969 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.5970 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5971 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5972 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" +@.str.5973 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.5974 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5975 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.5976 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5977 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5978 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" +@.str.5979 = private unnamed_addr constant [11 x i8] c" dllexport\00" +@.str.5980 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5981 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.5982 = private unnamed_addr constant [7 x i8] c"define\00" +@.str.5983 = 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.5984 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5985 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.5986 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5987 = private unnamed_addr constant [6 x i8] c"call \00" +@.str.5988 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5989 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.5990 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5991 = 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.5992 = private unnamed_addr constant [21 x i8] c"{ ptr, i64, i64 } %a\00" +@.str.5993 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5994 = private unnamed_addr constant [13 x i8] c" ret i32 0\0A\00" +@.str.5995 = private unnamed_addr constant [6 x i8] c"%r = \00" +@.str.5996 = private unnamed_addr constant [3 x i8] c" \00" +@.str.5997 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.5998 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5999 = private unnamed_addr constant [22 x i8] c" %ok = extractvalue \00" +@.str.6000 = 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.6001 = private unnamed_addr constant [21 x i8] c" %m = extractvalue \00" +@.str.6002 = 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.6003 = private unnamed_addr constant [63 x i8] c" call void @finch_report_error(ptr %mp)\0A ret i32 1\0Amain.ok:\0A\00" +@.str.6004 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.6005 = private unnamed_addr constant [21 x i8] c" %v = extractvalue \00" +@.str.6006 = private unnamed_addr constant [54 x i8] c" %r, 1\0A %code = trunc i64 %v to i32\0A ret i32 %code\0A\00" +@.str.6007 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.6008 = private unnamed_addr constant [6 x i8] c"%r = \00" +@.str.6009 = private unnamed_addr constant [47 x i8] c" %code = trunc i64 %r to i32\0A ret i32 %code\0A\00" +@.str.6010 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.6011 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6012 = private unnamed_addr constant [49 x i8] c"define i32 @main(i32 %argc, ptr %argv) {\0Aentry:\0A\00" +@.str.6013 = private unnamed_addr constant [3 x i8] c" \00" +@.str.6014 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6015 = private unnamed_addr constant [3 x i8] c"}\0A\00" +@.str.6016 = private unnamed_addr constant [6 x i8] c"print\00" +@.str.6017 = private unnamed_addr constant [17 x i8] c"print(a, b, ...)\00" +@.str.6018 = private unnamed_addr constant [79 x i8] c"Prints the values separated by spaces, then a new line. Works with every type.\00" +@.str.6019 = private unnamed_addr constant [6 x i8] c"input\00" +@.str.6020 = private unnamed_addr constant [32 x i8] c"input(str question = \22\22) -> str\00" +@.str.6021 = private unnamed_addr constant [78 x i8] c"Shows the question and reads one line typed by the user, without the newline.\00" +@.str.6022 = private unnamed_addr constant [10 x i8] c"read_file\00" +@.str.6023 = private unnamed_addr constant [27 x i8] c"read_file(str path) -> str\00" +@.str.6024 = 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.6025 = private unnamed_addr constant [11 x i8] c"write_file\00" +@.str.6026 = private unnamed_addr constant [39 x i8] c"write_file(str path, str text) -> bool\00" +@.str.6027 = 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.6028 = private unnamed_addr constant [12 x i8] c"file_exists\00" +@.str.6029 = private unnamed_addr constant [30 x i8] c"file_exists(str path) -> bool\00" +@.str.6030 = private unnamed_addr constant [30 x i8] c"Is there a file at this path?\00" +@.str.6031 = private unnamed_addr constant [12 x i8] c"delete_file\00" +@.str.6032 = private unnamed_addr constant [30 x i8] c"delete_file(str path) -> bool\00" +@.str.6033 = 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.6034 = private unnamed_addr constant [6 x i8] c"error\00" +@.str.6035 = private unnamed_addr constant [19 x i8] c"error(str message)\00" +@.str.6036 = 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.6037 = private unnamed_addr constant [6 x i8] c"shell\00" +@.str.6038 = private unnamed_addr constant [26 x i8] c"shell(str command) -> int\00" +@.str.6039 = private unnamed_addr constant [67 x i8] c"Runs a command in the system's shell and gives back its exit code.\00" +@.str.6040 = private unnamed_addr constant [5 x i8] c"exit\00" +@.str.6041 = private unnamed_addr constant [15 x i8] c"exit(int code)\00" +@.str.6042 = private unnamed_addr constant [49 x i8] c"Ends the program right away with this exit code.\00" +@.str.6043 = private unnamed_addr constant [5 x i8] c"addr\00" +@.str.6044 = private unnamed_addr constant [18 x i8] c"addr(x) -> ptr[T]\00" +@.str.6045 = private unnamed_addr constant [78 x i8] c"A pointer to a variable, field or element. addr(function) gives C a callback.\00" +@.str.6046 = private unnamed_addr constant [4 x i8] c"new\00" +@.str.6047 = private unnamed_addr constant [21 x i8] c"new(value) -> ptr[T]\00" +@.str.6048 = private unnamed_addr constant [67 x i8] c"Puts a copy of the value on the heap. Give it back with free(...).\00" +@.str.6049 = private unnamed_addr constant [5 x i8] c"free\00" +@.str.6050 = private unnamed_addr constant [12 x i8] c"free(ptr p)\00" +@.str.6051 = private unnamed_addr constant [74 x i8] c"Gives back memory from new(...) (or from C), freeing what the value owns.\00" +@.str.6052 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.6053 = private unnamed_addr constant [14 x i8] c"str(x) -> str\00" +@.str.6054 = private unnamed_addr constant [62 x i8] c"Turns a number, bool, char, []u8 or C char pointer into text.\00" +@.str.6055 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.6056 = private unnamed_addr constant [14 x i8] c"int(x) -> int\00" +@.str.6057 = 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.6058 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.6059 = private unnamed_addr constant [18 x i8] c"float(x) -> float\00" +@.str.6060 = 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.6061 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.6062 = private unnamed_addr constant [20 x i8] c"char(int n) -> char\00" +@.str.6063 = private unnamed_addr constant [30 x i8] c"The character with this code.\00" +@.str.6064 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.6065 = private unnamed_addr constant [20 x i8] c"bool(int n) -> bool\00" +@.str.6066 = private unnamed_addr constant [27 x i8] c"true for any number but 0.\00" +@.str.6067 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.6068 = private unnamed_addr constant [14 x i8] c"ptr(x) -> ptr\00" +@.str.6069 = 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.6070 = private unnamed_addr constant [4 x i8] c"len\00" +@.str.6071 = private unnamed_addr constant [12 x i8] c".len -> int\00" +@.str.6072 = private unnamed_addr constant [24 x i8] c"The number of elements.\00" +@.str.6073 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.6074 = private unnamed_addr constant [15 x i8] c".ptr -> ptr[T]\00" +@.str.6075 = private unnamed_addr constant [41 x i8] c"The address of the first element, for C.\00" +@.str.6076 = private unnamed_addr constant [5 x i8] c"push\00" +@.str.6077 = private unnamed_addr constant [10 x i8] c"push(T x)\00" +@.str.6078 = private unnamed_addr constant [19 x i8] c"Adds x at the end.\00" +@.str.6079 = private unnamed_addr constant [4 x i8] c"pop\00" +@.str.6080 = private unnamed_addr constant [11 x i8] c"pop() -> T\00" +@.str.6081 = private unnamed_addr constant [44 x i8] c"Removes the last element and gives it back.\00" +@.str.6082 = private unnamed_addr constant [7 x i8] c"insert\00" +@.str.6083 = private unnamed_addr constant [19 x i8] c"insert(int i, T x)\00" +@.str.6084 = private unnamed_addr constant [39 x i8] c"Puts x at position i, moving the rest.\00" +@.str.6085 = private unnamed_addr constant [7 x i8] c"remove\00" +@.str.6086 = private unnamed_addr constant [19 x i8] c"remove(int i) -> T\00" +@.str.6087 = private unnamed_addr constant [38 x i8] c"Removes position i and gives it back.\00" +@.str.6088 = private unnamed_addr constant [6 x i8] c"clear\00" +@.str.6089 = private unnamed_addr constant [8 x i8] c"clear()\00" +@.str.6090 = private unnamed_addr constant [20 x i8] c"Removes everything.\00" +@.str.6091 = private unnamed_addr constant [7 x i8] c"resize\00" +@.str.6092 = private unnamed_addr constant [14 x i8] c"resize(int n)\00" +@.str.6093 = private unnamed_addr constant [47 x i8] c"Makes the array n long; new elements are zero.\00" +@.str.6094 = private unnamed_addr constant [5 x i8] c"find\00" +@.str.6095 = private unnamed_addr constant [17 x i8] c"find(T x) -> int\00" +@.str.6096 = private unnamed_addr constant [23 x i8] c"The index of x, or -1.\00" +@.str.6097 = private unnamed_addr constant [9 x i8] c"contains\00" +@.str.6098 = private unnamed_addr constant [22 x i8] c"contains(T x) -> bool\00" +@.str.6099 = private unnamed_addr constant [19 x i8] c"Is x in the array?\00" +@.str.6100 = private unnamed_addr constant [5 x i8] c"sort\00" +@.str.6101 = private unnamed_addr constant [7 x i8] c"sort()\00" +@.str.6102 = private unnamed_addr constant [38 x i8] c"Sorts in place (numbers, chars, str).\00" +@.str.6103 = private unnamed_addr constant [8 x i8] c"reverse\00" +@.str.6104 = private unnamed_addr constant [10 x i8] c"reverse()\00" +@.str.6105 = private unnamed_addr constant [19 x i8] c"Reverses in place.\00" +@.str.6106 = private unnamed_addr constant [6 x i8] c"slice\00" +@.str.6107 = private unnamed_addr constant [33 x i8] c"slice(int start, int end) -> []T\00" +@.str.6108 = private unnamed_addr constant [46 x i8] c"A new array with the elements start to end-1.\00" +@.str.6109 = private unnamed_addr constant [5 x i8] c"join\00" +@.str.6110 = private unnamed_addr constant [21 x i8] c"join(str sep) -> str\00" +@.str.6111 = private unnamed_addr constant [48 x i8] c"For []str: one text with sep between the parts.\00" +@.str.6112 = private unnamed_addr constant [4 x i8] c"len\00" +@.str.6113 = private unnamed_addr constant [12 x i8] c".len -> int\00" +@.str.6114 = private unnamed_addr constant [21 x i8] c"The number of bytes.\00" +@.str.6115 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.6116 = private unnamed_addr constant [18 x i8] c".ptr -> ptr[char]\00" +@.str.6117 = private unnamed_addr constant [60 x i8] c"The address of the text, for C (valid while the str lives).\00" +@.str.6118 = private unnamed_addr constant [4 x i8] c"sub\00" +@.str.6119 = private unnamed_addr constant [31 x i8] c"sub(int start, int end) -> str\00" +@.str.6120 = private unnamed_addr constant [30 x i8] c"The part from start to end-1.\00" +@.str.6121 = private unnamed_addr constant [5 x i8] c"find\00" +@.str.6122 = private unnamed_addr constant [19 x i8] c"find(str t) -> int\00" +@.str.6123 = private unnamed_addr constant [23 x i8] c"Where t starts, or -1.\00" +@.str.6124 = private unnamed_addr constant [9 x i8] c"contains\00" +@.str.6125 = private unnamed_addr constant [24 x i8] c"contains(str t) -> bool\00" +@.str.6126 = private unnamed_addr constant [25 x i8] c"Does the text contain t?\00" +@.str.6127 = private unnamed_addr constant [12 x i8] c"starts_with\00" +@.str.6128 = private unnamed_addr constant [27 x i8] c"starts_with(str t) -> bool\00" +@.str.6129 = private unnamed_addr constant [28 x i8] c"Does the text start with t?\00" +@.str.6130 = private unnamed_addr constant [10 x i8] c"ends_with\00" +@.str.6131 = private unnamed_addr constant [25 x i8] c"ends_with(str t) -> bool\00" +@.str.6132 = private unnamed_addr constant [26 x i8] c"Does the text end with t?\00" +@.str.6133 = private unnamed_addr constant [6 x i8] c"split\00" +@.str.6134 = private unnamed_addr constant [24 x i8] c"split(str sep) -> []str\00" +@.str.6135 = private unnamed_addr constant [63 x i8] c"The parts between each sep; split(\22\22) gives single characters.\00" +@.str.6136 = private unnamed_addr constant [5 x i8] c"trim\00" +@.str.6137 = private unnamed_addr constant [14 x i8] c"trim() -> str\00" +@.str.6138 = private unnamed_addr constant [42 x i8] c"Without spaces and newlines at both ends.\00" +@.str.6139 = private unnamed_addr constant [6 x i8] c"upper\00" +@.str.6140 = private unnamed_addr constant [15 x i8] c"upper() -> str\00" +@.str.6141 = private unnamed_addr constant [25 x i8] c"With a-z changed to A-Z.\00" +@.str.6142 = private unnamed_addr constant [6 x i8] c"lower\00" +@.str.6143 = private unnamed_addr constant [15 x i8] c"lower() -> str\00" +@.str.6144 = private unnamed_addr constant [25 x i8] c"With A-Z changed to a-z.\00" +@.str.6145 = private unnamed_addr constant [8 x i8] c"replace\00" +@.str.6146 = private unnamed_addr constant [33 x i8] c"replace(str from, str to) -> str\00" +@.str.6147 = private unnamed_addr constant [27 x i8] c"Every from replaced by to.\00" +@.str.6148 = private unnamed_addr constant [7 x i8] c"repeat\00" +@.str.6149 = private unnamed_addr constant [21 x i8] c"repeat(int n) -> str\00" +@.str.6150 = private unnamed_addr constant [18 x i8] c"The text n times.\00" +@.str.6151 = private unnamed_addr constant [6 x i8] c"bytes\00" +@.str.6152 = private unnamed_addr constant [16 x i8] c"bytes() -> []u8\00" +@.str.6153 = private unnamed_addr constant [23 x i8] c"The bytes of the text.\00" +@.str.6154 = private unnamed_addr constant [4 x i8] c"len\00" +@.str.6155 = private unnamed_addr constant [12 x i8] c".len -> int\00" +@.str.6156 = private unnamed_addr constant [20 x i8] c"The number of keys.\00" +@.str.6157 = private unnamed_addr constant [4 x i8] c"has\00" +@.str.6158 = private unnamed_addr constant [19 x i8] c"has(K key) -> bool\00" +@.str.6159 = private unnamed_addr constant [23 x i8] c"Is the key in the map?\00" +@.str.6160 = private unnamed_addr constant [4 x i8] c"get\00" +@.str.6161 = private unnamed_addr constant [27 x i8] c"get(K key, V default) -> V\00" +@.str.6162 = private unnamed_addr constant [54 x i8] c"The value for key, or default if the key isn't there.\00" +@.str.6163 = private unnamed_addr constant [7 x i8] c"remove\00" +@.str.6164 = private unnamed_addr constant [22 x i8] c"remove(K key) -> bool\00" +@.str.6165 = private unnamed_addr constant [53 x i8] c"Removes the key and its value; true if it was there.\00" +@.str.6166 = private unnamed_addr constant [6 x i8] c"clear\00" +@.str.6167 = private unnamed_addr constant [8 x i8] c"clear()\00" +@.str.6168 = private unnamed_addr constant [20 x i8] c"Removes everything.\00" +@.str.6169 = private unnamed_addr constant [5 x i8] c"keys\00" +@.str.6170 = private unnamed_addr constant [14 x i8] c"keys() -> []K\00" +@.str.6171 = private unnamed_addr constant [40 x i8] c"The keys, in the order they were added.\00" +@.str.6172 = private unnamed_addr constant [7 x i8] c"values\00" +@.str.6173 = private unnamed_addr constant [16 x i8] c"values() -> []V\00" +@.str.6174 = private unnamed_addr constant [48 x i8] c"The values, in the order their keys were added.\00" +@.str.6175 = private unnamed_addr constant [3 x i8] c"fn\00" +@.str.6176 = private unnamed_addr constant [7 x i8] c"return\00" +@.str.6177 = private unnamed_addr constant [3 x i8] c"if\00" +@.str.6178 = private unnamed_addr constant [5 x i8] c"else\00" +@.str.6179 = private unnamed_addr constant [6 x i8] c"while\00" +@.str.6180 = private unnamed_addr constant [4 x i8] c"for\00" +@.str.6181 = private unnamed_addr constant [3 x i8] c"in\00" +@.str.6182 = private unnamed_addr constant [6 x i8] c"break\00" +@.str.6183 = private unnamed_addr constant [9 x i8] c"continue\00" +@.str.6184 = private unnamed_addr constant [5 x i8] c"true\00" +@.str.6185 = private unnamed_addr constant [6 x i8] c"false\00" +@.str.6186 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.6187 = private unnamed_addr constant [7 x i8] c"import\00" +@.str.6188 = private unnamed_addr constant [5 x i8] c"link\00" +@.str.6189 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.6190 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.6191 = private unnamed_addr constant [6 x i8] c"match\00" +@.str.6192 = private unnamed_addr constant [7 x i8] c"export\00" +@.str.6193 = private unnamed_addr constant [6 x i8] c"defer\00" +@.str.6194 = private unnamed_addr constant [3 x i8] c"or\00" +@.str.6195 = private unnamed_addr constant [4 x i8] c"try\00" +@.str.6196 = private unnamed_addr constant [5 x i8] c"self\00" +@.str.6197 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.6198 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.6199 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.6200 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.6201 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.6202 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.6203 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.6204 = private unnamed_addr constant [3 x i8] c"i8\00" +@.str.6205 = private unnamed_addr constant [4 x i8] c"i16\00" +@.str.6206 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.6207 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.6208 = private unnamed_addr constant [3 x i8] c"u8\00" +@.str.6209 = private unnamed_addr constant [4 x i8] c"u16\00" +@.str.6210 = private unnamed_addr constant [4 x i8] c"u32\00" +@.str.6211 = private unnamed_addr constant [4 x i8] c"u64\00" +@.str.6212 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.6213 = private unnamed_addr constant [4 x i8] c"f64\00" +@.str.6214 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" +@.str.6215 = private unnamed_addr constant [6 x i8] c"\0A```\0A\00" declare ptr @clang_getCString(i64, i64) declare void @clang_disposeString(i64, i64) -@.str.6000 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.6001 = private unnamed_addr constant [23 x i8] c"/tmp/finch_cc_dirs.txt\00" -@.str.6002 = private unnamed_addr constant [27 x i8] c" -E -v -x c /dev/null 2> '\00" -@.str.6003 = private unnamed_addr constant [14 x i8] c"' > /dev/null\00" -@.str.6004 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6005 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6006 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6007 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6008 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6009 = private unnamed_addr constant [35 x i8] c"#include <...> search starts here:\00" -@.str.6010 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6011 = private unnamed_addr constant [20 x i8] c"End of search list.\00" -@.str.6012 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6013 = private unnamed_addr constant [23 x i8] c" (framework directory)\00" -@.str.6014 = private unnamed_addr constant [12 x i8] c"-iframework\00" -@.str.6015 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6016 = private unnamed_addr constant [9 x i8] c"-isystem\00" -@.str.6017 = private unnamed_addr constant [8 x i8] c"rm -f '\00" -@.str.6018 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.6216 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str.6217 = private unnamed_addr constant [16 x i8] c"/finch_cc_dirs_\00" +@.str.6218 = private unnamed_addr constant [5 x i8] c".txt\00" +@.str.6219 = private unnamed_addr constant [14 x i8] c"/finch_empty_\00" +@.str.6220 = private unnamed_addr constant [3 x i8] c".c\00" +@.str.6221 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6222 = private unnamed_addr constant [13 x i8] c" -E -v -x c \00" +@.str.6223 = private unnamed_addr constant [5 x i8] c" 2> \00" +@.str.6224 = private unnamed_addr constant [4 x i8] c" > \00" +@.str.6225 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6226 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6227 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6228 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6229 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6230 = private unnamed_addr constant [35 x i8] c"#include <...> search starts here:\00" +@.str.6231 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6232 = private unnamed_addr constant [20 x i8] c"End of search list.\00" +@.str.6233 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6234 = private unnamed_addr constant [23 x i8] c" (framework directory)\00" +@.str.6235 = private unnamed_addr constant [12 x i8] c"-iframework\00" +@.str.6236 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6237 = private unnamed_addr constant [9 x i8] c"-isystem\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.6019 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6020 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" -@.str.6021 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6022 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" -@.str.6023 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6238 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6239 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" +@.str.6240 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6241 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" +@.str.6242 = 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.6024 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6025 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6026 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6027 = private unnamed_addr constant [29 x i8] c"used .anon on a null pointer\00" -@.str.6028 = private unnamed_addr constant [13 x i8] c"anon_struct_\00" -@.str.6029 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6030 = private unnamed_addr constant [29 x i8] c"used .anon 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 [36 x i8] c"used .recordNames on a null pointer\00" +@.str.6243 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6244 = private unnamed_addr constant [2 x i8] c" \00" +@.str.6245 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6246 = private unnamed_addr constant [29 x i8] c"used .anon on a null pointer\00" +@.str.6247 = private unnamed_addr constant [13 x i8] c"anon_struct_\00" +@.str.6248 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6249 = private unnamed_addr constant [29 x i8] c"used .anon on a null pointer\00" +@.str.6250 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6251 = 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.6033 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6034 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6035 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6036 = private unnamed_addr constant [33 x i8] c"used .defining on a null pointer\00" +@.str.6252 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6253 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6254 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6255 = 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.6037 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6038 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6039 = private unnamed_addr constant [33 x i8] c"used .defining on a null pointer\00" +@.str.6256 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6257 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6258 = 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.6040 = private unnamed_addr constant [13 x i8] c"is a C union\00" +@.str.6259 = 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.6041 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6042 = private unnamed_addr constant [33 x i8] c"used .defining on a null pointer\00" -@.str.6043 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6044 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6045 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6046 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6260 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6261 = private unnamed_addr constant [33 x i8] c"used .defining on a null pointer\00" +@.str.6262 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6263 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6264 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6265 = 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.6047 = private unnamed_addr constant [15 x i8] c"has bit fields\00" -@.str.6048 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6049 = private unnamed_addr constant [26 x i8] c"used .s 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 [36 x i8] c"used .unsupported 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 [28 x i8] c"used .imp 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 [34 x i8] c"used .hasHidden on a null pointer\00" -@.str.6058 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6059 = private unnamed_addr constant [26 x i8] c"used .s on a null pointer\00" -@.str.6060 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6061 = private unnamed_addr constant [31 x i8] c"used .fields on a null pointer\00" -@.str.6062 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.6063 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.6064 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.6065 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.6066 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.6067 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.6068 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.6069 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.6070 = private unnamed_addr constant [8 x i8] c"uses a \00" -@.str.6071 = private unnamed_addr constant [12 x i8] c"-bit number\00" -@.str.6072 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.6073 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.6074 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.6075 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.6076 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.6266 = private unnamed_addr constant [15 x i8] c"has bit fields\00" +@.str.6267 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6268 = private unnamed_addr constant [26 x i8] c"used .s on a null pointer\00" +@.str.6269 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6270 = private unnamed_addr constant [36 x i8] c"used .unsupported on a null pointer\00" +@.str.6271 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6272 = private unnamed_addr constant [28 x i8] c"used .imp on a null pointer\00" +@.str.6273 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6274 = private unnamed_addr constant [26 x i8] c"used .s on a null pointer\00" +@.str.6275 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6276 = private unnamed_addr constant [34 x i8] c"used .hasHidden on a null pointer\00" +@.str.6277 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6278 = private unnamed_addr constant [26 x i8] c"used .s on a null pointer\00" +@.str.6279 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6280 = private unnamed_addr constant [31 x i8] c"used .fields on a null pointer\00" +@.str.6281 = private unnamed_addr constant [3 x i8] c"i8\00" +@.str.6282 = private unnamed_addr constant [3 x i8] c"u8\00" +@.str.6283 = private unnamed_addr constant [4 x i8] c"i16\00" +@.str.6284 = private unnamed_addr constant [4 x i8] c"u16\00" +@.str.6285 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.6286 = private unnamed_addr constant [4 x i8] c"u32\00" +@.str.6287 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.6288 = private unnamed_addr constant [4 x i8] c"u64\00" +@.str.6289 = private unnamed_addr constant [8 x i8] c"uses a \00" +@.str.6290 = private unnamed_addr constant [12 x i8] c"-bit number\00" +@.str.6291 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.6292 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.6293 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.6294 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.6295 = 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.6077 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.6078 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.6079 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.6080 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.6081 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.6082 = private unnamed_addr constant [24 x i8] c"uses a C union by value\00" -@.str.6083 = private unnamed_addr constant [37 x i8] c"uses an incomplete C struct by value\00" -@.str.6084 = private unnamed_addr constant [6 x i8] c"named\00" -@.str.6085 = private unnamed_addr constant [2 x i8] c"C\00" +@.str.6296 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.6297 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.6298 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.6299 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str.6300 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.6301 = private unnamed_addr constant [24 x i8] c"uses a C union by value\00" +@.str.6302 = private unnamed_addr constant [37 x i8] c"uses an incomplete C struct by value\00" +@.str.6303 = private unnamed_addr constant [6 x i8] c"named\00" +@.str.6304 = 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.6086 = private unnamed_addr constant [17 x i8] c"uses long double\00" -@.str.6087 = private unnamed_addr constant [18 x i8] c"uses the C type '\00" +@.str.6305 = private unnamed_addr constant [17 x i8] c"uses long double\00" +@.str.6306 = 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.6088 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6089 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6090 = private unnamed_addr constant [3 x i8] c"0x\00" -@.str.6091 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6092 = private unnamed_addr constant [3 x i8] c"0X\00" -@.str.6093 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\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 [5 x i8] c"uUlL\00" -@.str.6098 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6099 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\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" +@.str.6307 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.6308 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6309 = private unnamed_addr constant [3 x i8] c"0x\00" +@.str.6310 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6311 = private unnamed_addr constant [3 x i8] c"0X\00" +@.str.6312 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6313 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6314 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6315 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6316 = private unnamed_addr constant [5 x i8] c"uUlL\00" +@.str.6317 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6318 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6319 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6320 = 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.6102 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6103 = private unnamed_addr constant [27 x i8] c"used .tu on a null pointer\00" +@.str.6321 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6322 = 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.6104 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6105 = private unnamed_addr constant [27 x i8] c"used .tu on a null pointer\00" +@.str.6323 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6324 = private unnamed_addr constant [27 x i8] c"used .tu on a null pointer\00" declare void @clang_disposeTokens(ptr, ptr, i32) -@.str.6106 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6107 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.6108 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6109 = private unnamed_addr constant [2 x i8] c")\00" -@.str.6110 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6111 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6112 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.6113 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6114 = private unnamed_addr constant [2 x i8] c"-\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 [16 x i8] c"src/cimport.fch\00" -@.str.6118 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6119 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\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".\00" -@.str.6122 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6123 = private unnamed_addr constant [2 x i8] c"e\00" -@.str.6124 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6125 = private unnamed_addr constant [2 x i8] c"E\00" -@.str.6126 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6127 = private unnamed_addr constant [3 x i8] c"0x\00" -@.str.6128 = private unnamed_addr constant [5 x i8] c"fFlL\00" -@.str.6129 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6130 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6131 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6325 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6326 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.6327 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6328 = private unnamed_addr constant [2 x i8] c")\00" +@.str.6329 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6330 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6331 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" +@.str.6332 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6333 = private unnamed_addr constant [2 x i8] c"-\00" +@.str.6334 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6335 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6336 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6337 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6338 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6339 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6340 = private unnamed_addr constant [2 x i8] c".\00" +@.str.6341 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6342 = private unnamed_addr constant [2 x i8] c"e\00" +@.str.6343 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6344 = private unnamed_addr constant [2 x i8] c"E\00" +@.str.6345 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6346 = private unnamed_addr constant [3 x i8] c"0x\00" +@.str.6347 = private unnamed_addr constant [5 x i8] c"fFlL\00" +@.str.6348 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6349 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6350 = 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.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 [28 x i8] c"used .out on a null pointer\00" -@.str.6136 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6137 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" -@.str.6138 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\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 [36 x i8] c"used .recordNames on a null pointer\00" -@.str.6143 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6144 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6145 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6146 = private unnamed_addr constant [31 x i8] c"used .header on a null pointer\00" +@.str.6351 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6352 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" +@.str.6353 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6354 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6355 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6356 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" +@.str.6357 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6358 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6359 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6360 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6361 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" +@.str.6362 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6363 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6364 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6365 = 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.6147 = private unnamed_addr constant [63 x i8] c"is a static inline C function (it has no code to link against)\00" -@.str.6148 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6149 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6150 = private unnamed_addr constant [43 x i8] c"has no parameter list in its C declaration\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.6366 = private unnamed_addr constant [63 x i8] c"is a static inline C function (it has no code to link against)\00" +@.str.6367 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6368 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6369 = private unnamed_addr constant [43 x i8] c"has no parameter list in its C declaration\00" +@.str.6370 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6371 = 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.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" -@.str.6155 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6156 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6157 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6158 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6372 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6373 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6374 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6375 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6376 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6377 = 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.6159 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6160 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6161 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6162 = private unnamed_addr constant [36 x i8] c"used .recordNames 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 [36 x i8] c"used .recordNames on a null pointer\00" +@.str.6378 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6379 = private unnamed_addr constant [2 x i8] c" \00" +@.str.6380 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6381 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" +@.str.6382 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6383 = 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.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.6384 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6385 = 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.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.6386 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6387 = 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.6169 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6170 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6171 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6172 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6173 = private unnamed_addr constant [3 x i8] c"-x\00" -@.str.6174 = private unnamed_addr constant [2 x i8] c"c\00" -@.str.6175 = private unnamed_addr constant [11 x i8] c"-std=gnu11\00" -@.str.6176 = private unnamed_addr constant [10 x i8] c"--target=\00" -@.str.6177 = private unnamed_addr constant [20 x i8] c"-D_USE_MATH_DEFINES\00" -@.str.6178 = private unnamed_addr constant [3 x i8] c"-I\00" -@.str.6179 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6180 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6388 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6389 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6390 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6391 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6392 = private unnamed_addr constant [3 x i8] c"-x\00" +@.str.6393 = private unnamed_addr constant [2 x i8] c"c\00" +@.str.6394 = private unnamed_addr constant [11 x i8] c"-std=gnu11\00" +@.str.6395 = private unnamed_addr constant [10 x i8] c"--target=\00" +@.str.6396 = private unnamed_addr constant [20 x i8] c"-D_USE_MATH_DEFINES\00" +@.str.6397 = private unnamed_addr constant [3 x i8] c"-I\00" +@.str.6398 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6399 = private unnamed_addr constant [1 x i8] c"\00" declare ptr @clang_createIndex(i32, i32) -@.str.6181 = private unnamed_addr constant [11 x i8] c"#include \22\00" -@.str.6182 = private unnamed_addr constant [3 x i8] c"\22\0A\00" -@.str.6183 = private unnamed_addr constant [15 x i8] c"finch_import.c\00" -@.str.6184 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6185 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6186 = private unnamed_addr constant [15 x i8] c"finch_import.c\00" -@.str.6187 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6400 = private unnamed_addr constant [11 x i8] c"#include \22\00" +@.str.6401 = private unnamed_addr constant [3 x i8] c"\22\0A\00" +@.str.6402 = private unnamed_addr constant [15 x i8] c"finch_import.c\00" +@.str.6403 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6404 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6405 = private unnamed_addr constant [15 x i8] c"finch_import.c\00" +@.str.6406 = private unnamed_addr constant [1 x i8] c"\00" declare i32 @clang_parseTranslationUnit2(ptr, ptr, ptr, i32, ptr, i32, i32, ptr) -@.str.6188 = private unnamed_addr constant [34 x i8] c": error: couldn't read C header '\00" -@.str.6189 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.6407 = private unnamed_addr constant [34 x i8] c": error: couldn't read C header '\00" +@.str.6408 = 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.6190 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6191 = private unnamed_addr constant [15 x i8] c"file not found\00" -@.str.6192 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6193 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6194 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6195 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6196 = private unnamed_addr constant [35 x i8] c": error: can't find the C header '\00" -@.str.6197 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6198 = private unnamed_addr constant [35 x i8] c": error: can't find the C header '\00" -@.str.6199 = private unnamed_addr constant [11 x i8] c"', which '\00" -@.str.6200 = private unnamed_addr constant [61 x i8] c"' includes (is its library's development package installed?)\00" -@.str.6201 = private unnamed_addr constant [20 x i8] c": error: C header '\00" -@.str.6202 = private unnamed_addr constant [17 x i8] c"' has an error: \00" +@.str.6409 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6410 = private unnamed_addr constant [15 x i8] c"file not found\00" +@.str.6411 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6412 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6413 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6414 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.6415 = private unnamed_addr constant [35 x i8] c": error: can't find the C header '\00" +@.str.6416 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.6417 = private unnamed_addr constant [35 x i8] c": error: can't find the C header '\00" +@.str.6418 = private unnamed_addr constant [11 x i8] c"', which '\00" +@.str.6419 = private unnamed_addr constant [61 x i8] c"' includes (is its library's development package installed?)\00" +@.str.6420 = private unnamed_addr constant [20 x i8] c": error: C header '\00" +@.str.6421 = 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.6203 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6204 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6205 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6206 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6207 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6208 = private unnamed_addr constant [22 x i8] c"/tmp/finch_triple.txt\00" -@.str.6209 = private unnamed_addr constant [23 x i8] c"clang -dumpmachine > '\00" -@.str.6210 = private unnamed_addr constant [15 x i8] c"' 2> /dev/null\00" -@.str.6211 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6212 = private unnamed_addr constant [8 x i8] c"rm -f '\00" -@.str.6213 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6214 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6215 = private unnamed_addr constant [25 x i8] c"x86_64-unknown-linux-gnu\00" -@.str.6216 = private unnamed_addr constant [8 x i8] c"windows\00" -@.str.6217 = private unnamed_addr constant [19 x i8] c"x86_64-w64-mingw32\00" -@.str.6218 = private unnamed_addr constant [6 x i8] c"linux\00" -@.str.6219 = private unnamed_addr constant [25 x i8] c"x86_64-unknown-linux-gnu\00" -@.str.6220 = private unnamed_addr constant [6 x i8] c"arm64\00" -@.str.6221 = private unnamed_addr constant [8 x i8] c"aarch64\00" -@.str.6222 = private unnamed_addr constant [12 x i8] c"linux-arm64\00" -@.str.6223 = private unnamed_addr constant [26 x i8] c"aarch64-unknown-linux-gnu\00" -@.str.6224 = private unnamed_addr constant [6 x i8] c"macos\00" -@.str.6225 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6226 = private unnamed_addr constant [8 x i8] c"aarch64\00" -@.str.6227 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6228 = private unnamed_addr constant [6 x i8] c"arm64\00" -@.str.6229 = private unnamed_addr constant [25 x i8] c"arm64-apple-macosx14.0.0\00" -@.str.6230 = private unnamed_addr constant [26 x i8] c"x86_64-apple-macosx14.0.0\00" -@.str.6231 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6232 = private unnamed_addr constant [8 x i8] c"windows\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"mingw\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"win32\00" -@.str.6239 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6240 = private unnamed_addr constant [5 x i8] c"msvc\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"apple\00" -@.str.6243 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6244 = private unnamed_addr constant [7 x i8] c"darwin\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"macos\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 [8 x i8] c"aarch64\00" -@.str.6253 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6254 = private unnamed_addr constant [6 x i8] c"arm64\00" -@.str.6255 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6256 = private unnamed_addr constant [6 x i8] c"apple\00" -@.str.6257 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6258 = private unnamed_addr constant [7 x i8] c"darwin\00" -@.str.6259 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6260 = private unnamed_addr constant [5 x i8] c".exe\00" -@.str.6261 = private unnamed_addr constant [9 x i8] c"FINCH_CC\00" -@.str.6262 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6263 = private unnamed_addr constant [23 x i8] c"x86_64-w64-mingw32-gcc\00" -@.str.6264 = private unnamed_addr constant [22 x i8] c"aarch64-linux-gnu-gcc\00" -@.str.6265 = private unnamed_addr constant [16 x i8] c"clang --target=\00" -@.str.6266 = private unnamed_addr constant [3 x i8] c"cc\00" -@.str.6267 = private unnamed_addr constant [6 x i8] c"wine \00" -@.str.6268 = private unnamed_addr constant [14 x i8] c"qemu-aarch64 \00" -@.str.6269 = private unnamed_addr constant [17 x i8] c"0123456789abcdef\00" -@.str.6270 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6271 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6272 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6273 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6274 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6275 = private unnamed_addr constant [5 x i8] c"'\5C''\00" -@.str.6276 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6277 = private unnamed_addr constant [15 x i8] c"XDG_CACHE_HOME\00" -@.str.6278 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6279 = private unnamed_addr constant [7 x i8] c"/finch\00" -@.str.6280 = private unnamed_addr constant [5 x i8] c"HOME\00" -@.str.6281 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6282 = private unnamed_addr constant [14 x i8] c"/.cache/finch\00" -@.str.6283 = private unnamed_addr constant [17 x i8] c"/tmp/finch-cache\00" -@.str.6284 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6285 = private unnamed_addr constant [11 x i8] c".framework\00" -@.str.6286 = private unnamed_addr constant [12 x i8] c"-framework \00" -@.str.6287 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6288 = private unnamed_addr constant [25 x i8] c"/tmp/finch_pkg_flags.txt\00" -@.str.6289 = private unnamed_addr constant [19 x i8] c"pkg-config --libs \00" -@.str.6290 = private unnamed_addr constant [5 x i8] c" > '\00" -@.str.6291 = private unnamed_addr constant [15 x i8] c"' 2> /dev/null\00" -@.str.6292 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6293 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6294 = private unnamed_addr constant [8 x i8] c"rm -f '\00" -@.str.6295 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6296 = private unnamed_addr constant [3 x i8] c"-l\00" -@.str.6297 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6298 = private unnamed_addr constant [2 x i8] c"/\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 [2 x i8] c"/\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 [15 x i8] c"src/linker.fch\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 [1 x i8] c"\00" -@.str.6310 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6311 = private unnamed_addr constant [15 x i8] c"src/linker.fch\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 [15 x i8] c"src/linker.fch\00" -@.str.6315 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6316 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6317 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6318 = private unnamed_addr constant [25 x i8] c"undefined reference to `\00" -@.str.6319 = private unnamed_addr constant [25 x i8] c"undefined reference to `\00" -@.str.6320 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6321 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6322 = private unnamed_addr constant [19 x i8] c"undefined symbol: \00" -@.str.6323 = private unnamed_addr constant [19 x i8] c"undefined symbol: \00" -@.str.6324 = private unnamed_addr constant [3 x i8] c" \0A\00" -@.str.6325 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6326 = private unnamed_addr constant [28 x i8] c"unresolved external symbol \00" -@.str.6327 = private unnamed_addr constant [28 x i8] c"unresolved external symbol \00" -@.str.6328 = private unnamed_addr constant [4 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 [15 x i8] c"cannot find -l\00" -@.str.6331 = private unnamed_addr constant [15 x i8] c"cannot find -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 [25 x i8] c"library not found for -l\00" -@.str.6335 = private unnamed_addr constant [25 x i8] c"library not found for -l\00" -@.str.6336 = private unnamed_addr constant [5 x i8] c": \0A\0D\00" -@.str.6337 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6338 = private unnamed_addr constant [14 x i8] c"ld: library '\00" -@.str.6339 = private unnamed_addr constant [14 x i8] c"ld: library '\00" -@.str.6340 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6341 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6342 = private unnamed_addr constant [12 x i8] c"framework '\00" -@.str.6343 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6344 = private unnamed_addr constant [10 x i8] c"not found\00" -@.str.6345 = private unnamed_addr constant [12 x i8] c"framework '\00" -@.str.6346 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6347 = private unnamed_addr constant [11 x i8] c".framework\00" -@.str.6348 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6349 = private unnamed_addr constant [2 x i8] c"\22\00" -@.str.6350 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6351 = private unnamed_addr constant [20 x i8] c"\22, referenced from:\00" -@.str.6352 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6353 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6354 = private unnamed_addr constant [20 x i8] c"\22, referenced from:\00" -@.str.6355 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6356 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.6357 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6358 = private unnamed_addr constant [22 x i8] c"error: linking failed\00" -@.str.6359 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6360 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6361 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6362 = private unnamed_addr constant [21 x i8] c"error: the library '\00" -@.str.6363 = private unnamed_addr constant [63 x i8] c"' wasn't found. Is it installed? (on Nix: add it to shell.nix)\00" -@.str.6364 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6365 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6366 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6367 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6368 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6369 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6370 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6371 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6372 = private unnamed_addr constant [3 x i8] c", \00" -@.str.6373 = private unnamed_addr constant [6 x i8] c" and \00" -@.str.6374 = private unnamed_addr constant [6 x i8] c" more\00" -@.str.6375 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6376 = private unnamed_addr constant [26 x i8] c"error: no code found for \00" -@.str.6377 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6378 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6379 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6380 = private unnamed_addr constant [5 x i8] c"come\00" -@.str.6381 = private unnamed_addr constant [6 x i8] c"comes\00" -@.str.6382 = private unnamed_addr constant [8 x i8] c"error: \00" -@.str.6383 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6384 = private unnamed_addr constant [8 x i8] c" from \22\00" -@.str.6385 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6386 = private unnamed_addr constant [32 x i8] c"\22, but its library isn't linked\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 [75 x i8] c" the header only says the functions exist; their code lives in a library.\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 [67 x i8] c" add this at the top of your file (with the library's real name):\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 [1 x i8] c"\00" -@.str.6399 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6400 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6401 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6402 = private unnamed_addr constant [13 x i8] c" link \22\00" -@.str.6403 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6404 = private unnamed_addr constant [2 x i8] c"\22\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 [1 x i8] c"\00" -@.str.6409 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6410 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6411 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6412 = private unnamed_addr constant [5 x i8] c"/rt-\00" -@.str.6413 = private unnamed_addr constant [4 x i8] c"2.5\00" -@.str.6414 = private unnamed_addr constant [3 x i8] c".o\00" -@.str.6415 = private unnamed_addr constant [10 x i8] c"mkdir -p \00" -@.str.6416 = private unnamed_addr constant [6 x i8] c".part\00" +@.str.6422 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.6423 = private unnamed_addr constant [13 x i8] c"src/host.fch\00" +@.str.6424 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.6425 = private unnamed_addr constant [5 x i8] c"'\5C''\00" +@.str.6426 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.6427 = private unnamed_addr constant [10 x i8] c"/dev/null\00" +@.str.6428 = private unnamed_addr constant [7 x i8] c"TMPDIR\00" +@.str.6429 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6430 = private unnamed_addr constant [13 x i8] c"src/host.fch\00" +@.str.6431 = private unnamed_addr constant [2 x i8] c"/\00" +@.str.6432 = private unnamed_addr constant [13 x i8] c"src/host.fch\00" +@.str.6433 = private unnamed_addr constant [5 x i8] c"/tmp\00" +@.str.6434 = private unnamed_addr constant [2 x i8] c":\00" declare i32 @getpid() -@.str.6417 = private unnamed_addr constant [7 x i8] c" -fPIC\00" -@.str.6418 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6419 = private unnamed_addr constant [5 x i8] c".log\00" -@.str.6420 = private unnamed_addr constant [5 x i8] c" -O2\00" -@.str.6421 = private unnamed_addr constant [5 x i8] c" -c \00" -@.str.6422 = private unnamed_addr constant [5 x i8] c" -o \00" -@.str.6423 = private unnamed_addr constant [4 x i8] c" > \00" -@.str.6424 = private unnamed_addr constant [6 x i8] c" 2>&1\00" -@.str.6425 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6426 = private unnamed_addr constant [7 x i8] c"rm -f \00" -@.str.6427 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6428 = private unnamed_addr constant [47 x i8] c"error: couldn't build the Finch runtime with '\00" -@.str.6429 = private unnamed_addr constant [31 x i8] c"' (is a C compiler installed?)\00" -@.str.6430 = private unnamed_addr constant [7 x i8] c"rm -f \00" -@.str.6431 = private unnamed_addr constant [8 x i8] c" && mv \00" -@.str.6432 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6433 = private unnamed_addr constant [12 x i8] c"FINCH_CLANG\00" -@.str.6434 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6435 = private unnamed_addr constant [6 x i8] c"clang\00" -@.str.6436 = private unnamed_addr constant [9 x i8] c"FINCH_CC\00" -@.str.6437 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6438 = private unnamed_addr constant [9 x i8] c"FINCH_CC\00" -@.str.6439 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6440 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6441 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6442 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6443 = private unnamed_addr constant [4 x i8] c".ll\00" -@.str.6444 = private unnamed_addr constant [3 x i8] c".o\00" -@.str.6445 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6446 = private unnamed_addr constant [11 x i8] c" --target=\00" -@.str.6447 = private unnamed_addr constant [5 x i8] c".log\00" -@.str.6448 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6449 = private unnamed_addr constant [8 x i8] c" -w -c \00" -@.str.6450 = private unnamed_addr constant [5 x i8] c" -o \00" -@.str.6451 = private unnamed_addr constant [4 x i8] c" > \00" -@.str.6452 = private unnamed_addr constant [6 x i8] c" 2>&1\00" -@.str.6453 = private unnamed_addr constant [7 x i8] c"rm -f \00" -@.str.6454 = private unnamed_addr constant [1 x i8] c"\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 [47 x i8] c"error: clang couldn't compile the program's IR\00" -@.str.6459 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6460 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6461 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6462 = private unnamed_addr constant [7 x i8] c"rm -f \00" -@.str.6463 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6464 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6465 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6466 = private unnamed_addr constant [5 x i8] c" -o \00" -@.str.6467 = private unnamed_addr constant [5 x i8] c" -lm\00" -@.str.6468 = private unnamed_addr constant [13 x i8] c" -dynamiclib\00" -@.str.6469 = private unnamed_addr constant [9 x i8] c" -shared\00" -@.str.6470 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6471 = private unnamed_addr constant [3 x i8] c".c\00" -@.str.6472 = private unnamed_addr constant [2 x i8] c".\00" -@.str.6473 = private unnamed_addr constant [3 x i8] c".o\00" -@.str.6474 = private unnamed_addr constant [7 x i8] c" -fPIC\00" -@.str.6475 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6476 = private unnamed_addr constant [5 x i8] c" -O2\00" -@.str.6477 = private unnamed_addr constant [5 x i8] c" -c \00" -@.str.6478 = private unnamed_addr constant [5 x i8] c" -o \00" -@.str.6479 = private unnamed_addr constant [4 x i8] c" > \00" -@.str.6480 = private unnamed_addr constant [6 x i8] c" 2>&1\00" -@.str.6481 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6482 = private unnamed_addr constant [25 x i8] c"error: couldn't compile \00" -@.str.6483 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6484 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6485 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6486 = private unnamed_addr constant [7 x i8] c"rm -f \00" -@.str.6487 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6488 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6489 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6490 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6491 = private unnamed_addr constant [3 x i8] c".o\00" -@.str.6492 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6493 = private unnamed_addr constant [3 x i8] c".a\00" -@.str.6494 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6495 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6496 = private unnamed_addr constant [4 x i8] c" > \00" -@.str.6497 = private unnamed_addr constant [6 x i8] c" 2>&1\00" -@.str.6498 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6499 = private unnamed_addr constant [7 x i8] c"rm -f \00" -@.str.6500 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6501 = private unnamed_addr constant [7 x i8] c"rm -f \00" -@.str.6502 = private unnamed_addr constant [43 x i8] c"error: no C compiler found to link with ('\00" -@.str.6503 = private unnamed_addr constant [33 x i8] c"'; install one, or set FINCH_CC)\00" -@.str.6504 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6505 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6506 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6507 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6508 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6509 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6510 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6511 = private unnamed_addr constant [8 x i8] c"file://\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 [12 x i8] c"src/lsp.fch\00" -@.str.6516 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6517 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6518 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6519 = private unnamed_addr constant [17 x i8] c"0123456789ABCDEF\00" -@.str.6520 = private unnamed_addr constant [8 x i8] c"file://\00" -@.str.6521 = private unnamed_addr constant [6 x i8] c"/-_.~\00" -@.str.6522 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6523 = private unnamed_addr constant [2 x i8] c"%\00" -@.str.6524 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6525 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6526 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6527 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6528 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6529 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6530 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\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" -@.str.6533 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6534 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6535 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6536 = private unnamed_addr constant [1 x i8] c"\00" -declare i32 @getchar() -@.str.6537 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6538 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6539 = private unnamed_addr constant [2 x i8] c"\0D\00" -@.str.6540 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@stdin = external global ptr -declare i32 @feof(ptr) -@.str.6541 = private unnamed_addr constant [33 x i8] c"the editor closed the connection\00" -@.str.6542 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6543 = private unnamed_addr constant [16 x i8] c"Content-Length:\00" -@.str.6544 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6545 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6546 = private unnamed_addr constant [26 x i8] c"the message was cut short\00" -@.str.6547 = private unnamed_addr constant [17 x i8] c"Content-Length: \00" -@.str.6548 = private unnamed_addr constant [5 x i8] c"\0D\0A\0D\0A\00" -@.str.6549 = private unnamed_addr constant [1 x i8] c"\00" -@stdout = external global ptr -declare i64 @fwrite(ptr, i64, i64, ptr) -@.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 [3 x i8] c"id\00" -@.str.6553 = private unnamed_addr constant [7 x i8] c"result\00" -@.str.6554 = private unnamed_addr constant [8 x i8] c"jsonrpc\00" -@.str.6555 = private unnamed_addr constant [4 x i8] c"2.0\00" -@.str.6556 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.6557 = private unnamed_addr constant [7 x i8] c"params\00" -@.str.6558 = private unnamed_addr constant [5 x i8] c"line\00" -@.str.6559 = private unnamed_addr constant [10 x i8] c"character\00" -@.str.6560 = private unnamed_addr constant [6 x i8] c"start\00" -@.str.6561 = private unnamed_addr constant [4 x i8] c"end\00" -@.str.6562 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6563 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.6564 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6565 = private unnamed_addr constant [10 x i8] c": error: \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 [12 x i8] c"src/lsp.fch\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 [2 x i8] c"\0A\00" -@.str.6576 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6577 = private unnamed_addr constant [2 x i8] c"@\00" -@.str.6578 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6579 = private unnamed_addr constant [3 x i8] c"@R\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 [12 x i8] c"src/lsp.fch\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 [3 x i8] c"@V\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 [12 x i8] c"src/lsp.fch\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 [3 x i8] c"@F\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 [12 x i8] c"src/lsp.fch\00" -@.str.6605 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\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 [2 x i8] c"|\00" -@.str.6609 = private unnamed_addr constant [3 x i8] c"@S\00" -@.str.6610 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6611 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\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 [4 x i8] c"@SF\00" -@.str.6616 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\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 [3 x i8] c"@E\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 [12 x i8] c"src/lsp.fch\00" -@.str.6625 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6626 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6627 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6628 = private unnamed_addr constant [2 x i8] c",\00" -@.str.6629 = private unnamed_addr constant [3 x i8] c"@I\00" -@.str.6630 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6631 = private unnamed_addr constant [11 x i8] c"mkdir -p '\00" -@.str.6632 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6633 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6634 = private unnamed_addr constant [5 x i8] c"/doc\00" -@.str.6635 = private unnamed_addr constant [5 x i8] c".fch\00" -@.str.6636 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6637 = private unnamed_addr constant [13 x i8] c" --overlay '\00" -@.str.6638 = private unnamed_addr constant [2 x i8] c"=\00" -@.str.6639 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6640 = private unnamed_addr constant [9 x i8] c"/out.txt\00" -@.str.6641 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6642 = private unnamed_addr constant [10 x i8] c"' index '\00" -@.str.6643 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6644 = private unnamed_addr constant [5 x i8] c" > '\00" -@.str.6645 = private unnamed_addr constant [7 x i8] c"' 2>&1\00" -@.str.6646 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6647 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6648 = private unnamed_addr constant [6 x i8] c"range\00" -@.str.6649 = private unnamed_addr constant [9 x i8] c"severity\00" -@.str.6650 = private unnamed_addr constant [7 x i8] c"source\00" -@.str.6651 = private unnamed_addr constant [6 x i8] c"finch\00" -@.str.6652 = private unnamed_addr constant [8 x i8] c"message\00" -@.str.6653 = private unnamed_addr constant [4 x i8] c"uri\00" -@.str.6654 = private unnamed_addr constant [12 x i8] c"diagnostics\00" -@.str.6655 = private unnamed_addr constant [32 x i8] c"textDocument/publishDiagnostics\00" -@.str.6656 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6657 = private unnamed_addr constant [5 x i8] c"kind\00" -@.str.6658 = private unnamed_addr constant [9 x i8] c"markdown\00" -@.str.6659 = private unnamed_addr constant [6 x i8] c"value\00" -@.str.6660 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6661 = private unnamed_addr constant [9 x i8] c"contents\00" -@.str.6662 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6663 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6664 = private unnamed_addr constant [4 x i8] c"uri\00" -@.str.6665 = private unnamed_addr constant [6 x i8] c"range\00" -@.str.6666 = private unnamed_addr constant [2 x i8] c".\00" -@.str.6667 = private unnamed_addr constant [5 x i8] c"name\00" -@.str.6668 = private unnamed_addr constant [5 x i8] c"kind\00" -@.str.6669 = private unnamed_addr constant [6 x i8] c"start\00" -@.str.6670 = private unnamed_addr constant [4 x i8] c"end\00" -@.str.6671 = private unnamed_addr constant [6 x i8] c"range\00" -@.str.6672 = private unnamed_addr constant [15 x i8] c"selectionRange\00" -@.str.6673 = private unnamed_addr constant [6 x i8] c"label\00" -@.str.6674 = private unnamed_addr constant [5 x i8] c"kind\00" -@.str.6675 = private unnamed_addr constant [7 x i8] c"detail\00" -@.str.6676 = private unnamed_addr constant [5 x i8] c"kind\00" -@.str.6677 = private unnamed_addr constant [9 x i8] c"markdown\00" -@.str.6678 = private unnamed_addr constant [6 x i8] c"value\00" -@.str.6679 = private unnamed_addr constant [14 x i8] c"documentation\00" -@.str.6680 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6681 = private unnamed_addr constant [2 x i8] c".\00" -@.str.6682 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6683 = private unnamed_addr constant [33 x i8] c"called .push() on a null pointer\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 [12 x i8] c"src/lsp.fch\00" -@.str.6689 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6690 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6691 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6692 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.6693 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6694 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6695 = private unnamed_addr constant [8 x i8] c"struct \00" -@.str.6696 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6697 = private unnamed_addr constant [6 x i8] c"enum \00" -@.str.6698 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6699 = private unnamed_addr constant [2 x i8] c".\00" -@.str.6700 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6701 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6702 = private unnamed_addr constant [3 x i8] c"[]\00" -@.str.6703 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6704 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.6705 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.6706 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6707 = private unnamed_addr constant [5 x i8] c"ptr[\00" -@.str.6708 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6709 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.6710 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6711 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6712 = private unnamed_addr constant [3 x i8] c"[]\00" -@.str.6713 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.6714 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6715 = private unnamed_addr constant [5 x i8] c"map[\00" -@.str.6716 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6717 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6718 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6435 = private unnamed_addr constant [4 x i8] c"PWD\00" +@.str.6436 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6437 = private unnamed_addr constant [15 x i8] c"XDG_CACHE_HOME\00" +@.str.6438 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6439 = private unnamed_addr constant [7 x i8] c"/finch\00" +@.str.6440 = private unnamed_addr constant [5 x i8] c"HOME\00" +@.str.6441 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6442 = private unnamed_addr constant [14 x i8] c"/.cache/finch\00" +@.str.6443 = private unnamed_addr constant [13 x i8] c"/finch-cache\00" +@.str.6444 = private unnamed_addr constant [10 x i8] c"mkdir -p \00" +@.str.6445 = private unnamed_addr constant [8 x i8] c"rm -rf \00" +@.str.6446 = private unnamed_addr constant [4 x i8] c"mv \00" +@.str.6447 = private unnamed_addr constant [2 x i8] c" \00" +@.str.6448 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6449 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6450 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6451 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6452 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6453 = private unnamed_addr constant [15 x i8] c"/finch_triple_\00" +@.str.6454 = private unnamed_addr constant [5 x i8] c".txt\00" +@.str.6455 = private unnamed_addr constant [22 x i8] c"clang -dumpmachine > \00" +@.str.6456 = private unnamed_addr constant [5 x i8] c" 2> \00" +@.str.6457 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6458 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6459 = private unnamed_addr constant [25 x i8] c"x86_64-unknown-linux-gnu\00" +@.str.6460 = private unnamed_addr constant [8 x i8] c"windows\00" +@.str.6461 = private unnamed_addr constant [19 x i8] c"x86_64-w64-mingw32\00" +@.str.6462 = private unnamed_addr constant [6 x i8] c"linux\00" +@.str.6463 = private unnamed_addr constant [25 x i8] c"x86_64-unknown-linux-gnu\00" +@.str.6464 = private unnamed_addr constant [6 x i8] c"arm64\00" +@.str.6465 = private unnamed_addr constant [8 x i8] c"aarch64\00" +@.str.6466 = private unnamed_addr constant [12 x i8] c"linux-arm64\00" +@.str.6467 = private unnamed_addr constant [26 x i8] c"aarch64-unknown-linux-gnu\00" +@.str.6468 = private unnamed_addr constant [6 x i8] c"macos\00" +@.str.6469 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6470 = private unnamed_addr constant [8 x i8] c"aarch64\00" +@.str.6471 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6472 = private unnamed_addr constant [6 x i8] c"arm64\00" +@.str.6473 = private unnamed_addr constant [25 x i8] c"arm64-apple-macosx14.0.0\00" +@.str.6474 = private unnamed_addr constant [26 x i8] c"x86_64-apple-macosx14.0.0\00" +@.str.6475 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6476 = private unnamed_addr constant [8 x i8] c"windows\00" +@.str.6477 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6478 = private unnamed_addr constant [6 x i8] c"mingw\00" +@.str.6479 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6480 = private unnamed_addr constant [5 x i8] c"msvc\00" +@.str.6481 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6482 = private unnamed_addr constant [6 x i8] c"win32\00" +@.str.6483 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6484 = private unnamed_addr constant [5 x i8] c"msvc\00" +@.str.6485 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6486 = private unnamed_addr constant [6 x i8] c"apple\00" +@.str.6487 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6488 = private unnamed_addr constant [7 x i8] c"darwin\00" +@.str.6489 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6490 = private unnamed_addr constant [6 x i8] c"macos\00" +@.str.6491 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6492 = private unnamed_addr constant [8 x i8] c"aarch64\00" +@.str.6493 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6494 = private unnamed_addr constant [6 x i8] c"arm64\00" +@.str.6495 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6496 = private unnamed_addr constant [8 x i8] c"aarch64\00" +@.str.6497 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6498 = private unnamed_addr constant [6 x i8] c"arm64\00" +@.str.6499 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6500 = private unnamed_addr constant [6 x i8] c"apple\00" +@.str.6501 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6502 = private unnamed_addr constant [7 x i8] c"darwin\00" +@.str.6503 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6504 = private unnamed_addr constant [5 x i8] c".exe\00" +@.str.6505 = private unnamed_addr constant [9 x i8] c"FINCH_CC\00" +@.str.6506 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6507 = private unnamed_addr constant [23 x i8] c"x86_64-w64-mingw32-gcc\00" +@.str.6508 = private unnamed_addr constant [22 x i8] c"aarch64-linux-gnu-gcc\00" +@.str.6509 = private unnamed_addr constant [16 x i8] c"clang --target=\00" +@.str.6510 = private unnamed_addr constant [2 x i8] c";\00" +@.str.6511 = private unnamed_addr constant [6 x i8] c"clang\00" +@.str.6512 = private unnamed_addr constant [3 x i8] c"cc\00" +@.str.6513 = private unnamed_addr constant [6 x i8] c"wine \00" +@.str.6514 = private unnamed_addr constant [14 x i8] c"qemu-aarch64 \00" +@.str.6515 = private unnamed_addr constant [17 x i8] c"0123456789abcdef\00" +@.str.6516 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6517 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6518 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6519 = private unnamed_addr constant [11 x i8] c".framework\00" +@.str.6520 = private unnamed_addr constant [12 x i8] c"-framework \00" +@.str.6521 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6522 = private unnamed_addr constant [18 x i8] c"/finch_pkg_flags_\00" +@.str.6523 = private unnamed_addr constant [5 x i8] c".txt\00" +@.str.6524 = private unnamed_addr constant [19 x i8] c"pkg-config --libs \00" +@.str.6525 = private unnamed_addr constant [4 x i8] c" > \00" +@.str.6526 = private unnamed_addr constant [5 x i8] c" 2> \00" +@.str.6527 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6528 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6529 = private unnamed_addr constant [3 x i8] c"-l\00" +@.str.6530 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6531 = private unnamed_addr constant [2 x i8] c"/\00" +@.str.6532 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6533 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6534 = private unnamed_addr constant [2 x i8] c"/\00" +@.str.6535 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6536 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6537 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6538 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6539 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6540 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6541 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6542 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6543 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6544 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6545 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6546 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6547 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6548 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6549 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6550 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6551 = private unnamed_addr constant [25 x i8] c"undefined reference to `\00" +@.str.6552 = private unnamed_addr constant [25 x i8] c"undefined reference to `\00" +@.str.6553 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.6554 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6555 = private unnamed_addr constant [19 x i8] c"undefined symbol: \00" +@.str.6556 = private unnamed_addr constant [19 x i8] c"undefined symbol: \00" +@.str.6557 = private unnamed_addr constant [3 x i8] c" \0A\00" +@.str.6558 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6559 = private unnamed_addr constant [28 x i8] c"unresolved external symbol \00" +@.str.6560 = private unnamed_addr constant [28 x i8] c"unresolved external symbol \00" +@.str.6561 = private unnamed_addr constant [4 x i8] c" \0A\0D\00" +@.str.6562 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6563 = private unnamed_addr constant [15 x i8] c"cannot find -l\00" +@.str.6564 = private unnamed_addr constant [15 x i8] c"cannot find -l\00" +@.str.6565 = private unnamed_addr constant [5 x i8] c": \0A\0D\00" +@.str.6566 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6567 = private unnamed_addr constant [25 x i8] c"library not found for -l\00" +@.str.6568 = private unnamed_addr constant [25 x i8] c"library not found for -l\00" +@.str.6569 = private unnamed_addr constant [5 x i8] c": \0A\0D\00" +@.str.6570 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6571 = private unnamed_addr constant [14 x i8] c"ld: library '\00" +@.str.6572 = private unnamed_addr constant [14 x i8] c"ld: library '\00" +@.str.6573 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.6574 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6575 = private unnamed_addr constant [12 x i8] c"framework '\00" +@.str.6576 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6577 = private unnamed_addr constant [10 x i8] c"not found\00" +@.str.6578 = private unnamed_addr constant [12 x i8] c"framework '\00" +@.str.6579 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.6580 = private unnamed_addr constant [11 x i8] c".framework\00" +@.str.6581 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6582 = private unnamed_addr constant [2 x i8] c"\22\00" +@.str.6583 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6584 = private unnamed_addr constant [20 x i8] c"\22, referenced from:\00" +@.str.6585 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6586 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6587 = private unnamed_addr constant [20 x i8] c"\22, referenced from:\00" +@.str.6588 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6589 = private unnamed_addr constant [2 x i8] c"_\00" +@.str.6590 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6591 = private unnamed_addr constant [22 x i8] c"error: linking failed\00" +@.str.6592 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6593 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.6594 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6595 = private unnamed_addr constant [21 x i8] c"error: the library '\00" +@.str.6596 = private unnamed_addr constant [63 x i8] c"' wasn't found. Is it installed? (on Nix: add it to shell.nix)\00" +@.str.6597 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6598 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.6599 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6600 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6601 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6602 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6603 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6604 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6605 = private unnamed_addr constant [3 x i8] c", \00" +@.str.6606 = private unnamed_addr constant [6 x i8] c" and \00" +@.str.6607 = private unnamed_addr constant [6 x i8] c" more\00" +@.str.6608 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6609 = private unnamed_addr constant [26 x i8] c"error: no code found for \00" +@.str.6610 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6611 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.6612 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6613 = private unnamed_addr constant [5 x i8] c"come\00" +@.str.6614 = private unnamed_addr constant [6 x i8] c"comes\00" +@.str.6615 = private unnamed_addr constant [8 x i8] c"error: \00" +@.str.6616 = private unnamed_addr constant [2 x i8] c" \00" +@.str.6617 = private unnamed_addr constant [8 x i8] c" from \22\00" +@.str.6618 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6619 = private unnamed_addr constant [32 x i8] c"\22, but its library isn't linked\00" +@.str.6620 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6621 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.6622 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6623 = private unnamed_addr constant [75 x i8] c" the header only says the functions exist; their code lives in a library.\00" +@.str.6624 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6625 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.6626 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6627 = private unnamed_addr constant [67 x i8] c" add this at the top of your file (with the library's real name):\00" +@.str.6628 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6629 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.6630 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6631 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6632 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6633 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.6634 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6635 = private unnamed_addr constant [13 x i8] c" link \22\00" +@.str.6636 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6637 = private unnamed_addr constant [2 x i8] c"\22\00" +@.str.6638 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6639 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.6640 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6641 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6642 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6643 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.6644 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6645 = private unnamed_addr constant [5 x i8] c"/rt-\00" +@.str.6646 = private unnamed_addr constant [4 x i8] c"2.5\00" +@.str.6647 = private unnamed_addr constant [3 x i8] c".o\00" +@.str.6648 = private unnamed_addr constant [6 x i8] c".part\00" +@.str.6649 = private unnamed_addr constant [7 x i8] c" -fPIC\00" +@.str.6650 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6651 = private unnamed_addr constant [5 x i8] c".log\00" +@.str.6652 = private unnamed_addr constant [5 x i8] c" -O2\00" +@.str.6653 = private unnamed_addr constant [5 x i8] c" -c \00" +@.str.6654 = private unnamed_addr constant [5 x i8] c" -o \00" +@.str.6655 = private unnamed_addr constant [4 x i8] c" > \00" +@.str.6656 = private unnamed_addr constant [6 x i8] c" 2>&1\00" +@.str.6657 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6658 = private unnamed_addr constant [47 x i8] c"error: couldn't build the Finch runtime with '\00" +@.str.6659 = private unnamed_addr constant [31 x i8] c"' (is a C compiler installed?)\00" +@.str.6660 = private unnamed_addr constant [12 x i8] c"FINCH_CLANG\00" +@.str.6661 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6662 = private unnamed_addr constant [6 x i8] c"clang\00" +@.str.6663 = private unnamed_addr constant [9 x i8] c"FINCH_CC\00" +@.str.6664 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6665 = private unnamed_addr constant [9 x i8] c"FINCH_CC\00" +@.str.6666 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6667 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6668 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.6669 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6670 = private unnamed_addr constant [4 x i8] c".ll\00" +@.str.6671 = private unnamed_addr constant [3 x i8] c".o\00" +@.str.6672 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6673 = private unnamed_addr constant [11 x i8] c" --target=\00" +@.str.6674 = private unnamed_addr constant [5 x i8] c".log\00" +@.str.6675 = private unnamed_addr constant [2 x i8] c" \00" +@.str.6676 = private unnamed_addr constant [8 x i8] c" -w -c \00" +@.str.6677 = private unnamed_addr constant [5 x i8] c" -o \00" +@.str.6678 = private unnamed_addr constant [4 x i8] c" > \00" +@.str.6679 = private unnamed_addr constant [6 x i8] c" 2>&1\00" +@.str.6680 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6681 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6682 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.6683 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6684 = private unnamed_addr constant [47 x i8] c"error: clang couldn't compile the program's IR\00" +@.str.6685 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6686 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.6687 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6688 = private unnamed_addr constant [2 x i8] c" \00" +@.str.6689 = private unnamed_addr constant [2 x i8] c" \00" +@.str.6690 = private unnamed_addr constant [5 x i8] c" -o \00" +@.str.6691 = private unnamed_addr constant [5 x i8] c" -lm\00" +@.str.6692 = private unnamed_addr constant [13 x i8] c" -dynamiclib\00" +@.str.6693 = private unnamed_addr constant [9 x i8] c" -shared\00" +@.str.6694 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6695 = private unnamed_addr constant [3 x i8] c".c\00" +@.str.6696 = private unnamed_addr constant [2 x i8] c".\00" +@.str.6697 = private unnamed_addr constant [3 x i8] c".o\00" +@.str.6698 = private unnamed_addr constant [7 x i8] c" -fPIC\00" +@.str.6699 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6700 = private unnamed_addr constant [5 x i8] c" -O2\00" +@.str.6701 = private unnamed_addr constant [5 x i8] c" -c \00" +@.str.6702 = private unnamed_addr constant [5 x i8] c" -o \00" +@.str.6703 = private unnamed_addr constant [4 x i8] c" > \00" +@.str.6704 = private unnamed_addr constant [6 x i8] c" 2>&1\00" +@.str.6705 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6706 = private unnamed_addr constant [25 x i8] c"error: couldn't compile \00" +@.str.6707 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6708 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.6709 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6710 = private unnamed_addr constant [2 x i8] c" \00" +@.str.6711 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6712 = private unnamed_addr constant [3 x i8] c".o\00" +@.str.6713 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6714 = private unnamed_addr constant [3 x i8] c".a\00" +@.str.6715 = private unnamed_addr constant [2 x i8] c" \00" +@.str.6716 = private unnamed_addr constant [2 x i8] c" \00" +@.str.6717 = private unnamed_addr constant [4 x i8] c" > \00" +@.str.6718 = private unnamed_addr constant [6 x i8] c" 2>&1\00" @.str.6719 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6720 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6721 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6720 = private unnamed_addr constant [43 x i8] c"error: no C compiler found to link with ('\00" +@.str.6721 = private unnamed_addr constant [33 x i8] c"'; install one, or set FINCH_CC)\00" @.str.6722 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6723 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6724 = private unnamed_addr constant [8 x i8] c"struct \00" +@.str.6723 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.6724 = private unnamed_addr constant [2 x i8] c"\0A\00" @.str.6725 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6726 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6727 = private unnamed_addr constant [6 x i8] c"enum \00" -@.str.6728 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6729 = private unnamed_addr constant [7 x i8] c"module\00" -@.str.6730 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6731 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6732 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6733 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6734 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6735 = private unnamed_addr constant [13 x i8] c"isIncomplete\00" -@.str.6736 = private unnamed_addr constant [6 x i8] c"items\00" -@.str.6737 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\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.6726 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.6727 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6728 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6729 = private unnamed_addr constant [8 x i8] c"file://\00" +@.str.6730 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6731 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6732 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\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 [17 x i8] c"0123456789ABCDEF\00" +@.str.6738 = private unnamed_addr constant [8 x i8] c"file://\00" +@.str.6739 = private unnamed_addr constant [6 x i8] c"/-_.~\00" @.str.6740 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6741 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6741 = private unnamed_addr constant [2 x i8] c"%\00" @.str.6742 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" @.str.6743 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6744 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6744 = private unnamed_addr constant [1 x i8] c"\00" @.str.6745 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6746 = private unnamed_addr constant [5 x i8] c"ptr[\00" -@.str.6747 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6748 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.6746 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6747 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6748 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" @.str.6749 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6750 = private unnamed_addr constant [6 x i8] c"label\00" -@.str.6751 = private unnamed_addr constant [6 x i8] c"label\00" -@.str.6752 = private unnamed_addr constant [11 x i8] c"parameters\00" -@.str.6753 = private unnamed_addr constant [11 x i8] c"signatures\00" -@.str.6754 = private unnamed_addr constant [16 x i8] c"activeSignature\00" -@.str.6755 = private unnamed_addr constant [16 x i8] c"activeParameter\00" -@.str.6756 = private unnamed_addr constant [6 x i8] c"label\00" -@.str.6757 = private unnamed_addr constant [14 x i8] c"documentation\00" -@.str.6758 = private unnamed_addr constant [11 x i8] c"signatures\00" -@.str.6759 = private unnamed_addr constant [16 x i8] c"activeSignature\00" -@.str.6760 = private unnamed_addr constant [16 x i8] c"activeParameter\00" -@.str.6761 = private unnamed_addr constant [13 x i8] c"textDocument\00" -@.str.6762 = private unnamed_addr constant [5 x i8] c"text\00" -@.str.6763 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6764 = private unnamed_addr constant [13 x i8] c"textDocument\00" -@.str.6765 = private unnamed_addr constant [4 x i8] c"uri\00" -@.str.6766 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6767 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.6768 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6769 = private unnamed_addr constant [7 x i8] c"params\00" +@.str.6750 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6751 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6752 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6753 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6754 = private unnamed_addr constant [1 x i8] c"\00" +declare i32 @getchar() +@.str.6755 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6756 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6757 = private unnamed_addr constant [2 x i8] c"\0D\00" +@.str.6758 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@stdin = external global ptr +declare i32 @feof(ptr) +@.str.6759 = private unnamed_addr constant [33 x i8] c"the editor closed the connection\00" +@.str.6760 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6761 = private unnamed_addr constant [16 x i8] c"Content-Length:\00" +@.str.6762 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6763 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6764 = private unnamed_addr constant [26 x i8] c"the message was cut short\00" +@.str.6765 = private unnamed_addr constant [17 x i8] c"Content-Length: \00" +@.str.6766 = private unnamed_addr constant [5 x i8] c"\0D\0A\0D\0A\00" +@.str.6767 = private unnamed_addr constant [1 x i8] c"\00" +@stdout = external global ptr +declare i64 @fwrite(ptr, i64, i64, ptr) +@.str.6768 = private unnamed_addr constant [8 x i8] c"jsonrpc\00" +@.str.6769 = private unnamed_addr constant [4 x i8] c"2.0\00" @.str.6770 = private unnamed_addr constant [3 x i8] c"id\00" -@.str.6771 = private unnamed_addr constant [11 x i8] c"initialize\00" -@.str.6772 = private unnamed_addr constant [17 x i8] c"textDocumentSync\00" -@.str.6773 = private unnamed_addr constant [14 x i8] c"hoverProvider\00" -@.str.6774 = private unnamed_addr constant [19 x i8] c"definitionProvider\00" -@.str.6775 = private unnamed_addr constant [23 x i8] c"documentSymbolProvider\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 [19 x i8] c"completionProvider\00" -@.str.6779 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.6780 = private unnamed_addr constant [2 x i8] c",\00" -@.str.6781 = private unnamed_addr constant [18 x i8] c"triggerCharacters\00" -@.str.6782 = private unnamed_addr constant [22 x i8] c"signatureHelpProvider\00" -@.str.6783 = private unnamed_addr constant [13 x i8] c"capabilities\00" -@.str.6784 = private unnamed_addr constant [5 x i8] c"name\00" -@.str.6785 = private unnamed_addr constant [6 x i8] c"finch\00" -@.str.6786 = private unnamed_addr constant [11 x i8] c"serverInfo\00" -@.str.6787 = private unnamed_addr constant [9 x i8] c"shutdown\00" -@.str.6788 = private unnamed_addr constant [5 x i8] c"exit\00" -@.str.6789 = private unnamed_addr constant [21 x i8] c"textDocument/didOpen\00" -@.str.6790 = private unnamed_addr constant [23 x i8] c"textDocument/didChange\00" -@.str.6791 = private unnamed_addr constant [15 x i8] c"contentChanges\00" -@.str.6792 = private unnamed_addr constant [5 x i8] c"text\00" -@.str.6793 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6794 = private unnamed_addr constant [21 x i8] c"textDocument/didSave\00" -@.str.6795 = private unnamed_addr constant [22 x i8] c"textDocument/didClose\00" -@.str.6796 = private unnamed_addr constant [4 x i8] c"uri\00" -@.str.6797 = private unnamed_addr constant [12 x i8] c"diagnostics\00" -@.str.6798 = private unnamed_addr constant [32 x i8] c"textDocument/publishDiagnostics\00" -@.str.6799 = private unnamed_addr constant [19 x i8] c"textDocument/hover\00" -@.str.6800 = private unnamed_addr constant [24 x i8] c"textDocument/definition\00" -@.str.6801 = private unnamed_addr constant [24 x i8] c"textDocument/completion\00" -@.str.6802 = private unnamed_addr constant [28 x i8] c"textDocument/documentSymbol\00" -@.str.6803 = private unnamed_addr constant [27 x i8] c"textDocument/signatureHelp\00" -@.str.6804 = private unnamed_addr constant [9 x i8] c"position\00" -@.str.6805 = private unnamed_addr constant [5 x i8] c"line\00" -@.str.6806 = private unnamed_addr constant [9 x i8] c"position\00" -@.str.6807 = private unnamed_addr constant [10 x i8] c"character\00" +@.str.6771 = private unnamed_addr constant [7 x i8] c"result\00" +@.str.6772 = private unnamed_addr constant [8 x i8] c"jsonrpc\00" +@.str.6773 = private unnamed_addr constant [4 x i8] c"2.0\00" +@.str.6774 = private unnamed_addr constant [7 x i8] c"method\00" +@.str.6775 = private unnamed_addr constant [7 x i8] c"params\00" +@.str.6776 = private unnamed_addr constant [5 x i8] c"line\00" +@.str.6777 = private unnamed_addr constant [10 x i8] c"character\00" +@.str.6778 = private unnamed_addr constant [6 x i8] c"start\00" +@.str.6779 = private unnamed_addr constant [4 x i8] c"end\00" +@.str.6780 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6781 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.6782 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6783 = private unnamed_addr constant [10 x i8] c": error: \00" +@.str.6784 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6785 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6786 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6787 = private unnamed_addr constant [2 x i8] c":\00" +@.str.6788 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6789 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6790 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6791 = private unnamed_addr constant [2 x i8] c":\00" +@.str.6792 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6793 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6794 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6795 = private unnamed_addr constant [2 x i8] c"@\00" +@.str.6796 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6797 = private unnamed_addr constant [3 x i8] c"@R\00" +@.str.6798 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6799 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6800 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6801 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6802 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6803 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6804 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6805 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6806 = private unnamed_addr constant [3 x i8] c"@V\00" +@.str.6807 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" @.str.6808 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6809 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6809 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" @.str.6810 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6811 = private unnamed_addr constant [19 x i8] c"textDocument/hover\00" -@.str.6812 = private unnamed_addr constant [24 x i8] c"textDocument/definition\00" -@.str.6813 = private unnamed_addr constant [24 x i8] c"textDocument/completion\00" -@.str.6814 = private unnamed_addr constant [28 x i8] c"textDocument/documentSymbol\00" -@.str.6815 = private unnamed_addr constant [16 x i8] c"/tmp/finch_lsp_\00" -@.str.6816 = private unnamed_addr constant [9 x i8] c"rm -rf '\00" -@.str.6817 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6818 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6819 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6820 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6821 = private unnamed_addr constant [2 x i8] c"\22\00" -@.str.6822 = private unnamed_addr constant [3 x i8] c"\5C\22\00" -@.str.6823 = private unnamed_addr constant [3 x i8] c"\5C\5C\00" -@.str.6824 = private unnamed_addr constant [3 x i8] c"\5Cn\00" -@.str.6825 = private unnamed_addr constant [3 x i8] c"\5Cr\00" -@.str.6826 = private unnamed_addr constant [3 x i8] c"\5Ct\00" -@.str.6827 = private unnamed_addr constant [5 x i8] c"\5Cu00\00" -@.str.6828 = private unnamed_addr constant [2 x i8] c"\22\00" -@.str.6829 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6830 = private unnamed_addr constant [17 x i8] c"0123456789abcdef\00" -@.str.6831 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6832 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6833 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6834 = private unnamed_addr constant [2 x i8] c",\00" -@.str.6835 = private unnamed_addr constant [2 x i8] c":\00" -@.str.6836 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6837 = private unnamed_addr constant [3 x i8] c": \00" -@.str.6838 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6839 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6840 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.6841 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6842 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6843 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.6844 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6845 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6846 = private unnamed_addr constant [6 x i8] c"false\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 [22 x i8] c"build/../std/json.fch\00" -@.str.6850 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6851 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6852 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6853 = private unnamed_addr constant [3 x i8] c"[]\00" -@.str.6854 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6855 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6856 = private unnamed_addr constant [2 x i8] c"[\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 [22 x i8] c"build/../std/json.fch\00" -@.str.6860 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6861 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6862 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6863 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.6864 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6865 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6866 = private unnamed_addr constant [3 x i8] c"{}\00" -@.str.6867 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6868 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6869 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.6870 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6871 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6872 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6873 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6874 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6875 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6876 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6877 = private unnamed_addr constant [2 x i8] c"}\00" -@.str.6878 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6879 = private unnamed_addr constant [36 x i8] c"no arm of this match fits the value\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 [1 x i8] c"\00" -@.str.6883 = private unnamed_addr constant [3 x i8] c" \00" -@.str.6884 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6885 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6886 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6887 = private unnamed_addr constant [26 x i8] c"used .i 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 [28 x i8] c"used .src on a null pointer\00" -@.str.6890 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6891 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.6892 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6893 = private unnamed_addr constant [6 x i8] c"line \00" -@.str.6894 = private unnamed_addr constant [10 x i8] c", column \00" -@.str.6895 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6896 = private unnamed_addr constant [26 x i8] c"used .i 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 [28 x i8] c"used .src 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 [28 x i8] c"used .src on a null pointer\00" -@.str.6901 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6902 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.6903 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6904 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6905 = private unnamed_addr constant [26 x i8] c"used .i 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 [28 x i8] c"used .src 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 [28 x i8] c"used .src on a null pointer\00" -@.str.6910 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6911 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.6912 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6913 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6914 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.6915 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6916 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.6917 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6918 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6919 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.6920 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6921 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.6922 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6923 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6924 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.6925 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6926 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.6927 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6928 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6929 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.6930 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6931 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.6932 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6933 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.6934 = private unnamed_addr constant [27 x i8] c"json: the text ends where \00" -@.str.6935 = private unnamed_addr constant [13 x i8] c" should be (\00" -@.str.6936 = private unnamed_addr constant [2 x i8] c")\00" -@.str.6937 = private unnamed_addr constant [14 x i8] c"json: found '\00" -@.str.6938 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6939 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.6940 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6941 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.6942 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6943 = private unnamed_addr constant [9 x i8] c"' where \00" -@.str.6944 = private unnamed_addr constant [13 x i8] c" should be (\00" -@.str.6945 = private unnamed_addr constant [2 x i8] c")\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 [26 x i8] c"used .i on a null pointer\00" -@.str.6950 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6951 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.6952 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6953 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6954 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\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 [2 x i8] c"'\00" -@.str.6958 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6959 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6960 = private unnamed_addr constant [26 x i8] c"used .i 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 [26 x i8] c"used .i 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 [28 x i8] c"used .src 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 [28 x i8] c"used .src on a null pointer\00" -@.str.6967 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6968 = private unnamed_addr constant [26 x i8] c"used .i 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 [20 x i8] c"a hexadecimal digit\00" -@.str.6971 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6972 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.6973 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6974 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.6975 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\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 [26 x i8] c"used .i on a null pointer\00" -@.str.6982 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6983 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\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 [31 x i8] c"json: a text is never closed (\00" -@.str.6987 = private unnamed_addr constant [2 x i8] c")\00" -@.str.6988 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6989 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.6990 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6991 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.6992 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6993 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6994 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.6995 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6996 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6997 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.6998 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6999 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7000 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7001 = private unnamed_addr constant [56 x i8] c"json: a line break or control character inside a text (\00" -@.str.7002 = private unnamed_addr constant [2 x i8] c")\00" -@.str.7003 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7004 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7005 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7006 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7007 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\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 [22 x i8] c"build/../std/json.fch\00" -@.str.7011 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7012 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7013 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7014 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.7015 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.7016 = private unnamed_addr constant [2 x i8] c"\0D\00" -@.str.7017 = private unnamed_addr constant [3 x i8] c"\5Cu\00" -@.str.7018 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7019 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7020 = private unnamed_addr constant [23 x i8] c"json: unknown escape \5C\00" -@.str.7021 = private unnamed_addr constant [13 x i8] c" in a text (\00" -@.str.7022 = private unnamed_addr constant [2 x i8] c")\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 [26 x i8] c"used .i on a null pointer\00" +@.str.6811 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6812 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6813 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6814 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6815 = private unnamed_addr constant [3 x i8] c"@F\00" +@.str.6816 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6817 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6818 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6819 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6820 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6821 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6822 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6823 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6824 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6825 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6826 = private unnamed_addr constant [2 x i8] c"|\00" +@.str.6827 = private unnamed_addr constant [3 x i8] c"@S\00" +@.str.6828 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6829 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6830 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6831 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6832 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6833 = private unnamed_addr constant [4 x i8] c"@SF\00" +@.str.6834 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6835 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6836 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6837 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6838 = private unnamed_addr constant [3 x i8] c"@E\00" +@.str.6839 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6840 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6841 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6842 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6843 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6844 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6845 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6846 = private unnamed_addr constant [2 x i8] c",\00" +@.str.6847 = private unnamed_addr constant [3 x i8] c"@I\00" +@.str.6848 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6849 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6850 = private unnamed_addr constant [5 x i8] c"/doc\00" +@.str.6851 = private unnamed_addr constant [5 x i8] c".fch\00" +@.str.6852 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6853 = private unnamed_addr constant [12 x i8] c" --overlay \00" +@.str.6854 = private unnamed_addr constant [2 x i8] c"=\00" +@.str.6855 = private unnamed_addr constant [9 x i8] c"/out.txt\00" +@.str.6856 = private unnamed_addr constant [8 x i8] c" index \00" +@.str.6857 = private unnamed_addr constant [4 x i8] c" > \00" +@.str.6858 = private unnamed_addr constant [6 x i8] c" 2>&1\00" +@.str.6859 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6860 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6861 = private unnamed_addr constant [6 x i8] c"range\00" +@.str.6862 = private unnamed_addr constant [9 x i8] c"severity\00" +@.str.6863 = private unnamed_addr constant [7 x i8] c"source\00" +@.str.6864 = private unnamed_addr constant [6 x i8] c"finch\00" +@.str.6865 = private unnamed_addr constant [8 x i8] c"message\00" +@.str.6866 = private unnamed_addr constant [4 x i8] c"uri\00" +@.str.6867 = private unnamed_addr constant [12 x i8] c"diagnostics\00" +@.str.6868 = private unnamed_addr constant [32 x i8] c"textDocument/publishDiagnostics\00" +@.str.6869 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6870 = private unnamed_addr constant [5 x i8] c"kind\00" +@.str.6871 = private unnamed_addr constant [9 x i8] c"markdown\00" +@.str.6872 = private unnamed_addr constant [6 x i8] c"value\00" +@.str.6873 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6874 = private unnamed_addr constant [9 x i8] c"contents\00" +@.str.6875 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6876 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6877 = private unnamed_addr constant [4 x i8] c"uri\00" +@.str.6878 = private unnamed_addr constant [6 x i8] c"range\00" +@.str.6879 = private unnamed_addr constant [2 x i8] c".\00" +@.str.6880 = private unnamed_addr constant [5 x i8] c"name\00" +@.str.6881 = private unnamed_addr constant [5 x i8] c"kind\00" +@.str.6882 = private unnamed_addr constant [6 x i8] c"start\00" +@.str.6883 = private unnamed_addr constant [4 x i8] c"end\00" +@.str.6884 = private unnamed_addr constant [6 x i8] c"range\00" +@.str.6885 = private unnamed_addr constant [15 x i8] c"selectionRange\00" +@.str.6886 = private unnamed_addr constant [6 x i8] c"label\00" +@.str.6887 = private unnamed_addr constant [5 x i8] c"kind\00" +@.str.6888 = private unnamed_addr constant [7 x i8] c"detail\00" +@.str.6889 = private unnamed_addr constant [5 x i8] c"kind\00" +@.str.6890 = private unnamed_addr constant [9 x i8] c"markdown\00" +@.str.6891 = private unnamed_addr constant [6 x i8] c"value\00" +@.str.6892 = private unnamed_addr constant [14 x i8] c"documentation\00" +@.str.6893 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6894 = private unnamed_addr constant [2 x i8] c".\00" +@.str.6895 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6896 = private unnamed_addr constant [33 x i8] c"called .push() on a null pointer\00" +@.str.6897 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6898 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6899 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6900 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6901 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6902 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6903 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6904 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6905 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.6906 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6907 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6908 = private unnamed_addr constant [8 x i8] c"struct \00" +@.str.6909 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6910 = private unnamed_addr constant [6 x i8] c"enum \00" +@.str.6911 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6912 = private unnamed_addr constant [2 x i8] c".\00" +@.str.6913 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6914 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6915 = private unnamed_addr constant [3 x i8] c"[]\00" +@.str.6916 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6917 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.6918 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.6919 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6920 = private unnamed_addr constant [5 x i8] c"ptr[\00" +@.str.6921 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6922 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.6923 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6924 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6925 = private unnamed_addr constant [3 x i8] c"[]\00" +@.str.6926 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.6927 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6928 = private unnamed_addr constant [5 x i8] c"map[\00" +@.str.6929 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6930 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6931 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6932 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6933 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6934 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6935 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6936 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6937 = private unnamed_addr constant [8 x i8] c"struct \00" +@.str.6938 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6939 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6940 = private unnamed_addr constant [6 x i8] c"enum \00" +@.str.6941 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6942 = private unnamed_addr constant [7 x i8] c"module\00" +@.str.6943 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6944 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6945 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6946 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6947 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6948 = private unnamed_addr constant [13 x i8] c"isIncomplete\00" +@.str.6949 = private unnamed_addr constant [6 x i8] c"items\00" +@.str.6950 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6951 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6952 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6953 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6954 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6955 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6956 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6957 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6958 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6959 = private unnamed_addr constant [5 x i8] c"ptr[\00" +@.str.6960 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6961 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.6962 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6963 = private unnamed_addr constant [6 x i8] c"label\00" +@.str.6964 = private unnamed_addr constant [6 x i8] c"label\00" +@.str.6965 = private unnamed_addr constant [11 x i8] c"parameters\00" +@.str.6966 = private unnamed_addr constant [11 x i8] c"signatures\00" +@.str.6967 = private unnamed_addr constant [16 x i8] c"activeSignature\00" +@.str.6968 = private unnamed_addr constant [16 x i8] c"activeParameter\00" +@.str.6969 = private unnamed_addr constant [6 x i8] c"label\00" +@.str.6970 = private unnamed_addr constant [14 x i8] c"documentation\00" +@.str.6971 = private unnamed_addr constant [11 x i8] c"signatures\00" +@.str.6972 = private unnamed_addr constant [16 x i8] c"activeSignature\00" +@.str.6973 = private unnamed_addr constant [16 x i8] c"activeParameter\00" +@.str.6974 = private unnamed_addr constant [13 x i8] c"textDocument\00" +@.str.6975 = private unnamed_addr constant [5 x i8] c"text\00" +@.str.6976 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6977 = private unnamed_addr constant [13 x i8] c"textDocument\00" +@.str.6978 = private unnamed_addr constant [4 x i8] c"uri\00" +@.str.6979 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6980 = private unnamed_addr constant [7 x i8] c"method\00" +@.str.6981 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6982 = private unnamed_addr constant [7 x i8] c"params\00" +@.str.6983 = private unnamed_addr constant [3 x i8] c"id\00" +@.str.6984 = private unnamed_addr constant [11 x i8] c"initialize\00" +@.str.6985 = private unnamed_addr constant [17 x i8] c"textDocumentSync\00" +@.str.6986 = private unnamed_addr constant [14 x i8] c"hoverProvider\00" +@.str.6987 = private unnamed_addr constant [19 x i8] c"definitionProvider\00" +@.str.6988 = private unnamed_addr constant [23 x i8] c"documentSymbolProvider\00" +@.str.6989 = private unnamed_addr constant [2 x i8] c".\00" +@.str.6990 = private unnamed_addr constant [18 x i8] c"triggerCharacters\00" +@.str.6991 = private unnamed_addr constant [19 x i8] c"completionProvider\00" +@.str.6992 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.6993 = private unnamed_addr constant [2 x i8] c",\00" +@.str.6994 = private unnamed_addr constant [18 x i8] c"triggerCharacters\00" +@.str.6995 = private unnamed_addr constant [22 x i8] c"signatureHelpProvider\00" +@.str.6996 = private unnamed_addr constant [13 x i8] c"capabilities\00" +@.str.6997 = private unnamed_addr constant [5 x i8] c"name\00" +@.str.6998 = private unnamed_addr constant [6 x i8] c"finch\00" +@.str.6999 = private unnamed_addr constant [11 x i8] c"serverInfo\00" +@.str.7000 = private unnamed_addr constant [9 x i8] c"shutdown\00" +@.str.7001 = private unnamed_addr constant [5 x i8] c"exit\00" +@.str.7002 = private unnamed_addr constant [21 x i8] c"textDocument/didOpen\00" +@.str.7003 = private unnamed_addr constant [23 x i8] c"textDocument/didChange\00" +@.str.7004 = private unnamed_addr constant [15 x i8] c"contentChanges\00" +@.str.7005 = private unnamed_addr constant [5 x i8] c"text\00" +@.str.7006 = private unnamed_addr constant [1 x i8] c"\00" +@.str.7007 = private unnamed_addr constant [21 x i8] c"textDocument/didSave\00" +@.str.7008 = private unnamed_addr constant [22 x i8] c"textDocument/didClose\00" +@.str.7009 = private unnamed_addr constant [4 x i8] c"uri\00" +@.str.7010 = private unnamed_addr constant [12 x i8] c"diagnostics\00" +@.str.7011 = private unnamed_addr constant [32 x i8] c"textDocument/publishDiagnostics\00" +@.str.7012 = private unnamed_addr constant [19 x i8] c"textDocument/hover\00" +@.str.7013 = private unnamed_addr constant [24 x i8] c"textDocument/definition\00" +@.str.7014 = private unnamed_addr constant [24 x i8] c"textDocument/completion\00" +@.str.7015 = private unnamed_addr constant [28 x i8] c"textDocument/documentSymbol\00" +@.str.7016 = private unnamed_addr constant [27 x i8] c"textDocument/signatureHelp\00" +@.str.7017 = private unnamed_addr constant [9 x i8] c"position\00" +@.str.7018 = private unnamed_addr constant [5 x i8] c"line\00" +@.str.7019 = private unnamed_addr constant [9 x i8] c"position\00" +@.str.7020 = private unnamed_addr constant [10 x i8] c"character\00" +@.str.7021 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.7022 = private unnamed_addr constant [1 x i8] c"\00" +@.str.7023 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.7024 = private unnamed_addr constant [19 x i8] c"textDocument/hover\00" +@.str.7025 = private unnamed_addr constant [24 x i8] c"textDocument/definition\00" +@.str.7026 = private unnamed_addr constant [24 x i8] c"textDocument/completion\00" +@.str.7027 = private unnamed_addr constant [28 x i8] c"textDocument/documentSymbol\00" +@.str.7028 = private unnamed_addr constant [12 x i8] c"/finch_lsp_\00" @.str.7029 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7030 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7030 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" @.str.7031 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7032 = private unnamed_addr constant [28 x i8] c"used .src 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 [28 x i8] c"used .src on a null pointer\00" -@.str.7035 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7036 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7037 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7038 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7039 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7040 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7041 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7032 = private unnamed_addr constant [2 x i8] c"\22\00" +@.str.7033 = private unnamed_addr constant [3 x i8] c"\5C\22\00" +@.str.7034 = private unnamed_addr constant [3 x i8] c"\5C\5C\00" +@.str.7035 = private unnamed_addr constant [3 x i8] c"\5Cn\00" +@.str.7036 = private unnamed_addr constant [3 x i8] c"\5Cr\00" +@.str.7037 = private unnamed_addr constant [3 x i8] c"\5Ct\00" +@.str.7038 = private unnamed_addr constant [5 x i8] c"\5Cu00\00" +@.str.7039 = private unnamed_addr constant [2 x i8] c"\22\00" +@.str.7040 = private unnamed_addr constant [1 x i8] c"\00" +@.str.7041 = private unnamed_addr constant [17 x i8] c"0123456789abcdef\00" @.str.7042 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7043 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7044 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7045 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7046 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7047 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7048 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7049 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7050 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7051 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7043 = private unnamed_addr constant [1 x i8] c"\00" +@.str.7044 = private unnamed_addr constant [1 x i8] c"\00" +@.str.7045 = private unnamed_addr constant [2 x i8] c",\00" +@.str.7046 = private unnamed_addr constant [2 x i8] c":\00" +@.str.7047 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.7048 = private unnamed_addr constant [3 x i8] c": \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 .out on a null pointer\00" +@.str.7051 = private unnamed_addr constant [5 x i8] c"null\00" @.str.7052 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7053 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7054 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7053 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.7054 = private unnamed_addr constant [5 x i8] c"true\00" @.str.7055 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7056 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7057 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7056 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.7057 = private unnamed_addr constant [6 x i8] c"false\00" @.str.7058 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7059 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7059 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" @.str.7060 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7061 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7061 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" @.str.7062 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7063 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7064 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7063 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.7064 = private unnamed_addr constant [3 x i8] c"[]\00" @.str.7065 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7066 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7067 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7066 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.7067 = private unnamed_addr constant [2 x i8] c"[\00" @.str.7068 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7069 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7069 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" @.str.7070 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7071 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7071 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" @.str.7072 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7073 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7074 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7073 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.7074 = private unnamed_addr constant [2 x i8] c"]\00" @.str.7075 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7076 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7077 = private unnamed_addr constant [9 x i8] c"a number\00" +@.str.7076 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.7077 = private unnamed_addr constant [3 x i8] c"{}\00" @.str.7078 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7079 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7080 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7081 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7082 = private unnamed_addr constant [8 x i8] c"a value\00" +@.str.7079 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.7080 = private unnamed_addr constant [2 x i8] c"{\00" +@.str.7081 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7082 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" @.str.7083 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7084 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7084 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\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 [16 x i8] c"a key in quotes\00" -@.str.7088 = private unnamed_addr constant [4 x i8] c"':'\00" +@.str.7086 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7087 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.7088 = private unnamed_addr constant [2 x i8] c"}\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 [22 x i8] c"build/../std/json.fch\00" -@.str.7092 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7093 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7094 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7095 = private unnamed_addr constant [11 x i8] c"',' or '}'\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 [22 x i8] c"build/../std/json.fch\00" -@.str.7101 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7102 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7103 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7104 = private unnamed_addr constant [11 x i8] c"',' or ']'\00" -@.str.7105 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.7106 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.7107 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.7108 = private unnamed_addr constant [8 x i8] c"a value\00" -@.str.7109 = private unnamed_addr constant [20 x i8] c"the end of the text\00" +@.str.7090 = private unnamed_addr constant [36 x i8] c"no arm of this match fits the value\00" +@.str.7091 = private unnamed_addr constant [1 x i8] c"\00" +@.str.7092 = private unnamed_addr constant [1 x i8] c"\00" +@.str.7093 = private unnamed_addr constant [1 x i8] c"\00" +@.str.7094 = private unnamed_addr constant [3 x i8] c" \00" +@.str.7095 = private unnamed_addr constant [1 x i8] c"\00" +@.str.7096 = private unnamed_addr constant [1 x i8] c"\00" +@.str.7097 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7098 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7099 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7100 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7101 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7102 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7103 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7104 = private unnamed_addr constant [6 x i8] c"line \00" +@.str.7105 = private unnamed_addr constant [10 x i8] c", column \00" +@.str.7106 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7107 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7108 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7109 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7110 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7111 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7112 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7113 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7114 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7115 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7116 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7117 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7118 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7119 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7120 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7121 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7122 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7123 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7124 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7125 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7126 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7127 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7128 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7129 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7130 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7131 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7132 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7133 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7134 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7135 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7136 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7137 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7138 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7139 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7140 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7141 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7142 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7143 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7144 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7145 = private unnamed_addr constant [27 x i8] c"json: the text ends where \00" +@.str.7146 = private unnamed_addr constant [13 x i8] c" should be (\00" +@.str.7147 = private unnamed_addr constant [2 x i8] c")\00" +@.str.7148 = private unnamed_addr constant [14 x i8] c"json: found '\00" +@.str.7149 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7150 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7151 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7152 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7153 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7154 = private unnamed_addr constant [9 x i8] c"' where \00" +@.str.7155 = private unnamed_addr constant [13 x i8] c" should be (\00" +@.str.7156 = private unnamed_addr constant [2 x i8] c")\00" +@.str.7157 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7158 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7159 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7160 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7161 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7162 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7163 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7164 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7165 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7166 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7167 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7168 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.7169 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.7170 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7171 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7172 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7173 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7174 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7175 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7176 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7177 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7178 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7179 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7180 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7181 = private unnamed_addr constant [20 x i8] c"a hexadecimal digit\00" +@.str.7182 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7183 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7184 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7185 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7186 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7187 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7188 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7189 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7190 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7191 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7192 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7193 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7194 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7195 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7196 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7197 = private unnamed_addr constant [31 x i8] c"json: a text is never closed (\00" +@.str.7198 = private unnamed_addr constant [2 x i8] c")\00" +@.str.7199 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7200 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7201 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7202 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7203 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7204 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7205 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7206 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7207 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7208 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7209 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7210 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7211 = private unnamed_addr constant [1 x i8] c"\00" +@.str.7212 = private unnamed_addr constant [56 x i8] c"json: a line break or control character inside a text (\00" +@.str.7213 = private unnamed_addr constant [2 x i8] c")\00" +@.str.7214 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7215 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7216 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7217 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7218 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7219 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7220 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7221 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7222 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7223 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7224 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7225 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.7226 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.7227 = private unnamed_addr constant [2 x i8] c"\0D\00" +@.str.7228 = private unnamed_addr constant [3 x i8] c"\5Cu\00" +@.str.7229 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7230 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7231 = private unnamed_addr constant [23 x i8] c"json: unknown escape \5C\00" +@.str.7232 = private unnamed_addr constant [13 x i8] c" in a text (\00" +@.str.7233 = private unnamed_addr constant [2 x i8] c")\00" +@.str.7234 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7235 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7236 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7237 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7238 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7239 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7240 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7241 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7242 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7243 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7244 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7245 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7246 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7247 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7248 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7249 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7250 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7251 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7252 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7253 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7254 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7255 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7256 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7257 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7258 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7259 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7260 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7261 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7262 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7263 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7264 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7265 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7266 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7267 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7268 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7269 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7270 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7271 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7272 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7273 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7274 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7275 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7276 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7277 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7278 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7279 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7280 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7281 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7282 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7283 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7284 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7285 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7286 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7287 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7288 = private unnamed_addr constant [9 x i8] c"a number\00" +@.str.7289 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7290 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7291 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7292 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7293 = private unnamed_addr constant [8 x i8] c"a value\00" +@.str.7294 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7295 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7296 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7297 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7298 = private unnamed_addr constant [16 x i8] c"a key in quotes\00" +@.str.7299 = private unnamed_addr constant [4 x i8] c"':'\00" +@.str.7300 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7301 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7302 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7303 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7304 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7305 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7306 = private unnamed_addr constant [11 x i8] c"',' or '}'\00" +@.str.7307 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7308 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7309 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7310 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7311 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7312 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7313 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7314 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7315 = private unnamed_addr constant [11 x i8] c"',' or ']'\00" +@.str.7316 = private unnamed_addr constant [5 x i8] c"true\00" +@.str.7317 = private unnamed_addr constant [6 x i8] c"false\00" +@.str.7318 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.7319 = private unnamed_addr constant [8 x i8] c"a value\00" +@.str.7320 = private unnamed_addr constant [20 x i8] c"the end of the text\00" +@.str.7321 = private unnamed_addr constant [19 x i8] c"runtime/finch_rt.c\00" +@.str.7322 = private unnamed_addr constant [13 x i8] c"std/json.fch\00" +@.str.7323 = private unnamed_addr constant [13 x i8] c"std/path.fch\00" +@.str.7324 = private unnamed_addr constant [13 x i8] c"std/proc.fch\00" +@.str.7325 = private unnamed_addr constant [21 x i8] c"std/proc_windows.fch\00" +@.str.7326 = private unnamed_addr constant [13 x i8] c"std/time.fch\00" +@.str.7327 = private unnamed_addr constant [21 x i8] c"std/time_windows.fch\00" +@.str.7328 = private unnamed_addr constant [16 x i8] c"std/finch_win.h\00" +@.str.7329 = private unnamed_addr constant [24982 x i8] c"// The Finch runtime: string and array helpers, input, files and runtime errors.\0A// It is embedded in the compiler, compiled once into a cache folder, and linked\0A// statically into every Finch program. Everything here is plain C with no state.\0A//\0A// Layout shared with the compiler (src/codegen.cpp):\0A// str = { char *ptr; int64 len; int64 cap } ptr is always NUL-terminated\0A// cap > 0 : heap memory owned by the value (cap bytes allocated)\0A// cap == 0 : a string literal, valid forever, never written to\0A// cap == -1: borrowed from C, must be copied before it is kept\0A// []T = { T *ptr; int64 len; int64 cap } owns ptr when cap > 0\0A// map[K]V: see \22maps\22 below\0A\0A#include \0A#include \0A#include \0A#include \0A#include \0A#include \0A#include \0A#ifndef _WIN32\0A#include \0A#endif\0A\0Atypedef struct {\0A char *ptr;\0A int64_t len;\0A int64_t cap;\0A} FStr;\0A\0Atypedef struct {\0A void *ptr;\0A int64_t len;\0A int64_t cap;\0A} FArr;\0A\0Astatic char empty[1] = \22\22;\0A\0A// ---------- runtime errors ----------\0A\0A// A program that loads Finch libraries (finch build --shared) can take runtime errors over\0A// instead of the process exiting: finch_module_on_fatal(handler) in each library. The handler\0A// gets the message and must not return (longjmp out, or exit itself).\0Astatic void (*fatal_hook)(const char *msg);\0Avoid finch_on_fatal(void (*hook)(const char *msg)) { fatal_hook = hook; }\0A\0Astatic __attribute__((noreturn)) void fatal(const char *msg) {\0A if (fatal_hook) fatal_hook(msg);\0A fflush(stdout);\0A fprintf(stderr, \22%s\5Cn\22, msg);\0A exit(1);\0A}\0A\0A__attribute__((noreturn, cold)) void finch_panic(const char *file, int64_t line, const char *msg) {\0A char full[1024];\0A snprintf(full, sizeof full, \22%s:%lld: runtime error: %s\22, file, (long long)line, msg);\0A fflush(stdout);\0A fatal(full);\0A}\0A\0A__attribute__((noreturn, cold)) void finch_panic_index(const char *file, int64_t line, int64_t i, int64_t len) {\0A char msg[128];\0A snprintf(msg, sizeof msg, \22index %lld is out of range (the length is %lld)\22, (long long)i, (long long)len);\0A finch_panic(file, line, msg);\0A}\0A\0Astatic void *must(void *p) {\0A if (!p) {\0A fflush(stdout);\0A fatal(\22runtime error: out of memory\22);\0A }\0A return p;\0A}\0A\0Avoid *finch_alloc(int64_t n) { return must(malloc(n ? (size_t)n : 1)); }\0Avoid *finch_zalloc(int64_t n) { return must(calloc(1, n ? (size_t)n : 1)); }\0A\0A// ---------- strings ----------\0A\0Astatic void str_heap(FStr *out, const char *p, int64_t len) {\0A char *m = finch_alloc(len + 1);\0A if (len) memcpy(m, p, (size_t)len);\0A m[len] = 0;\0A out->ptr = m;\0A out->len = len;\0A out->cap = len + 1;\0A}\0A\0Astatic void str_static(FStr *out, const char *lit) {\0A out->ptr = (char *)lit;\0A out->len = (int64_t)strlen(lit);\0A out->cap = 0;\0A}\0A\0A// A copy that can be kept: literals are shared, everything else is duplicated.\0Avoid finch_str_copy(FStr *out, const FStr *s) {\0A if (s->cap == 0) *out = *s;\0A else str_heap(out, s->ptr, s->len);\0A}\0A\0A// Make `s` writable (before s[i] = c).\0Avoid finch_str_own(FStr *s) {\0A if (s->cap > 0) return;\0A FStr t;\0A str_heap(&t, s->ptr, s->len);\0A *s = t;\0A}\0A\0Avoid finch_str_drop(FStr *s) {\0A if (s->cap > 0) free(s->ptr);\0A}\0A\0Avoid finch_str_from_c(FStr *out, const char *p) {\0A if (!p) {\0A str_static(out, empty);\0A return;\0A }\0A out->ptr = (char *)p;\0A out->len = (int64_t)strlen(p);\0A out->cap = -1;\0A}\0A\0Avoid finch_str_concat(FStr *out, const FStr *a, const FStr *b) {\0A int64_t len = a->len + b->len;\0A char *m = finch_alloc(len + 1);\0A memcpy(m, a->ptr, (size_t)a->len);\0A memcpy(m + a->len, b->ptr, (size_t)b->len);\0A m[len] = 0;\0A out->ptr = m;\0A out->len = len;\0A out->cap = len + 1;\0A}\0A\0Aint finch_str_eq(const FStr *a, const FStr *b) {\0A return a->len == b->len && memcmp(a->ptr, b->ptr, (size_t)a->len) == 0;\0A}\0A\0Aint64_t finch_str_cmp(const FStr *a, const FStr *b) {\0A int64_t n = a->len < b->len ? a->len : b->len;\0A int c = memcmp(a->ptr, b->ptr, (size_t)n);\0A if (c) return c < 0 ? -1 : 1;\0A return a->len < b->len ? -1 : a->len > b->len;\0A}\0A\0Avoid finch_str_from_int(FStr *out, int64_t v) {\0A char buf[32];\0A int n = snprintf(buf, sizeof buf, \22%lld\22, (long long)v);\0A str_heap(out, buf, n);\0A}\0A\0Avoid finch_str_from_uint(FStr *out, uint64_t v) {\0A char buf[32];\0A int n = snprintf(buf, sizeof buf, \22%llu\22, (unsigned long long)v);\0A str_heap(out, buf, n);\0A}\0A\0Avoid finch_str_from_float(FStr *out, double v) {\0A char buf[64];\0A int n = snprintf(buf, sizeof buf, \22%g\22, v);\0A str_heap(out, buf, n);\0A}\0A\0Avoid finch_str_from_char(FStr *out, char c) { str_heap(out, &c, 1); }\0A\0Avoid finch_str_from_bool(FStr *out, int b) { str_static(out, b ? \22true\22 : \22false\22); }\0A\0Astatic void number_error(char *msg, size_t size, const FStr *s, const char *kind) {\0A snprintf(msg, size, \22can't turn \5C\22%.*s\5C\22 into %s\22, (int)(s->len > 100 ? 100 : s->len), s->ptr ? s->ptr : \22\22, kind);\0A}\0A\0Astatic int parse_int(const FStr *s, int64_t *out) {\0A const char *p = s->ptr ? s->ptr : \22\22;\0A while (isspace((unsigned char)*p)) p++;\0A char *end;\0A errno = 0;\0A long long v = strtoll(p, &end, 10);\0A while (isspace((unsigned char)*end)) end++;\0A *out = v;\0A return !(end == p || *end || errno == ERANGE);\0A}\0A\0Astatic int parse_float(const FStr *s, double *out) {\0A const char *p = s->ptr ? s->ptr : \22\22;\0A while (isspace((unsigned char)*p)) p++;\0A char *end;\0A double v = strtod(p, &end);\0A while (isspace((unsigned char)*end)) end++;\0A *out = v;\0A return !(end == p || *end);\0A}\0A\0Aint64_t finch_str_to_int(const FStr *s, const char *file, int64_t line) {\0A int64_t v;\0A if (!parse_int(s, &v)) {\0A char msg[200];\0A number_error(msg, sizeof msg, s, \22int\22);\0A finch_panic(file, line, msg);\0A }\0A return v;\0A}\0A\0Adouble finch_str_to_float(const FStr *s, const char *file, int64_t line) {\0A double v;\0A if (!parse_float(s, &v)) {\0A char msg[200];\0A number_error(msg, sizeof msg, s, \22float\22);\0A finch_panic(file, line, msg);\0A }\0A return v;\0A}\0A\0A// ---------- errors as values: int(s) or 0, try read_file(p) ... ----------\0A// Each gives back 1 on success; on failure 0, with the message in *err.\0A\0Astatic void set_error(FStr *err, const char *msg) { str_heap(err, msg, (int64_t)strlen(msg)); }\0A\0Aint finch_str_try_int(const FStr *s, int64_t *out, FStr *err) {\0A if (parse_int(s, out)) return 1;\0A char msg[200];\0A number_error(msg, sizeof msg, s, \22int\22);\0A set_error(err, msg);\0A *out = 0;\0A return 0;\0A}\0A\0Aint finch_str_try_float(const FStr *s, double *out, FStr *err) {\0A if (parse_float(s, out)) return 1;\0A char msg[200];\0A number_error(msg, sizeof msg, s, \22float\22);\0A set_error(err, msg);\0A *out = 0;\0A return 0;\0A}\0A\0Astatic void file_error(FStr *err, const char *what, const FStr *path) {\0A char msg[300];\0A snprintf(msg, sizeof msg, \22can't %s the file \5C\22%.*s\5C\22: %s\22, what, (int)(path->len > 200 ? 200 : path->len),\0A path->ptr ? path->ptr : \22\22, strerror(errno));\0A set_error(err, msg);\0A}\0A\0A// when `fn main() -> !` fails\0Avoid finch_report_error(const FStr *msg) {\0A fflush(stdout);\0A fprintf(stderr, \22error: %.*s\5Cn\22, (int)msg->len, msg->ptr ? msg->ptr : \22\22);\0A}\0A\0Avoid finch_str_sub(FStr *out, const FStr *s, int64_t start, int64_t end, const char *file, int64_t line) {\0A if (start < 0 || end > s->len || start > end) {\0A char msg[160];\0A snprintf(msg, sizeof msg, \22sub(%lld, %lld) is out of range (the length is %lld)\22, (long long)start,\0A (long long)end, (long long)s->len);\0A finch_panic(file, line, msg);\0A }\0A str_heap(out, s->ptr + start, end - start);\0A}\0A\0Aint64_t finch_str_find(const FStr *s, const FStr *t) {\0A if (t->len == 0) return 0;\0A for (int64_t i = 0; i + t->len <= s->len; i++)\0A if (s->ptr[i] == t->ptr[0] && memcmp(s->ptr + i, t->ptr, (size_t)t->len) == 0) return i;\0A return -1;\0A}\0A\0Aint finch_str_starts(const FStr *s, const FStr *t) {\0A return t->len <= s->len && memcmp(s->ptr, t->ptr, (size_t)t->len) == 0;\0A}\0A\0Aint finch_str_ends(const FStr *s, const FStr *t) {\0A return t->len <= s->len && memcmp(s->ptr + s->len - t->len, t->ptr, (size_t)t->len) == 0;\0A}\0A\0Avoid finch_str_trim(FStr *out, const FStr *s) {\0A int64_t a = 0, b = s->len;\0A while (a < b && isspace((unsigned char)s->ptr[a])) a++;\0A while (b > a && isspace((unsigned char)s->ptr[b - 1])) b--;\0A str_heap(out, s->ptr + a, b - a);\0A}\0A\0Avoid finch_str_upper(FStr *out, const FStr *s) {\0A str_heap(out, s->ptr, s->len);\0A for (int64_t i = 0; i < out->len; i++) out->ptr[i] = (char)toupper((unsigned char)out->ptr[i]);\0A}\0A\0Avoid finch_str_lower(FStr *out, const FStr *s) {\0A str_heap(out, s->ptr, s->len);\0A for (int64_t i = 0; i < out->len; i++) out->ptr[i] = (char)tolower((unsigned char)out->ptr[i]);\0A}\0A\0Avoid finch_str_replace(FStr *out, const FStr *s, const FStr *from, const FStr *to) {\0A if (from->len == 0) {\0A str_heap(out, s->ptr, s->len);\0A return;\0A }\0A int64_t count = 0;\0A for (int64_t i = 0; i + from->len <= s->len;) {\0A if (memcmp(s->ptr + i, from->ptr, (size_t)from->len) == 0) {\0A count++;\0A i += from->len;\0A } else {\0A i++;\0A }\0A }\0A int64_t len = s->len + count * (to->len - from->len);\0A char *m = finch_alloc(len + 1), *w = m;\0A for (int64_t i = 0; i < s->len;) {\0A if (i + from->len <= s->len && memcmp(s->ptr + i, from->ptr, (size_t)from->len) == 0) {\0A memcpy(w, to->ptr, (size_t)to->len);\0A w += to->len;\0A i += from->len;\0A } else {\0A *w++ = s->ptr[i++];\0A }\0A }\0A *w = 0;\0A out->ptr = m;\0A out->len = len;\0A out->cap = len + 1;\0A}\0A\0Astatic void arr_push_str(FArr *a, const char *p, int64_t len);\0A\0A// \22a,b,,c\22.split(\22,\22) -> [\22a\22, \22b\22, \22\22, \22c\22]; split(\22\22) gives single characters.\0Avoid finch_str_split(FArr *out, const FStr *s, const FStr *sep) {\0A out->ptr = NULL;\0A out->len = out->cap = 0;\0A if (sep->len == 0) {\0A for (int64_t i = 0; i < s->len; i++) arr_push_str(out, s->ptr + i, 1);\0A return;\0A }\0A int64_t start = 0;\0A for (int64_t i = 0; i + sep->len <= s->len;) {\0A if (memcmp(s->ptr + i, sep->ptr, (size_t)sep->len) == 0) {\0A arr_push_str(out, s->ptr + start, i - start);\0A i += sep->len;\0A start = i;\0A } else {\0A i++;\0A }\0A }\0A arr_push_str(out, s->ptr + start, s->len - start);\0A}\0A\0Avoid finch_str_join(FStr *out, const FArr *parts, const FStr *sep) {\0A const FStr *p = parts->ptr;\0A int64_t len = 0;\0A for (int64_t i = 0; i < parts->len; i++) len += p[i].len + (i ? sep->len : 0);\0A char *m = finch_alloc(len + 1), *w = m;\0A for (int64_t i = 0; i < parts->len; i++) {\0A if (i) {\0A memcpy(w, sep->ptr, (size_t)sep->len);\0A w += sep->len;\0A }\0A memcpy(w, p[i].ptr, (size_t)p[i].len);\0A w += p[i].len;\0A }\0A *w = 0;\0A out->ptr = m;\0A out->len = len;\0A out->cap = len + 1;\0A}\0A\0Avoid finch_str_repeat(FStr *out, const FStr *s, int64_t n) {\0A if (n < 0) n = 0;\0A int64_t len = s->len * n;\0A char *m = finch_alloc(len + 1);\0A for (int64_t i = 0; i < n; i++) memcpy(m + i * s->len, s->ptr, (size_t)s->len);\0A m[len] = 0;\0A out->ptr = m;\0A out->len = len;\0A out->cap = len + 1;\0A}\0A\0Avoid finch_str_from_bytes(FStr *out, const FArr *bytes) { str_heap(out, bytes->ptr, bytes->len); }\0A\0A// ---------- building text: print(x) and str(x) of arrays, maps and structs ----------\0A// A buffer starts as an empty str and grows on the heap.\0A\0Avoid finch_buf_add(FStr *b, const char *p, int64_t n) {\0A if (b->len + n + 1 > b->cap) {\0A int64_t cap = b->cap > 0 ? b->cap * 2 : 32;\0A while (cap < b->len + n + 1) cap *= 2;\0A b->ptr = must(realloc(b->cap > 0 ? b->ptr : NULL, (size_t)cap));\0A b->cap = cap;\0A }\0A if (n) memcpy(b->ptr + b->len, p, (size_t)n);\0A b->len += n;\0A b->ptr[b->len] = 0;\0A}\0A\0Astatic void buf_fmt(FStr *b, const char *fmt, ...) __attribute__((format(printf, 2, 3)));\0Astatic void buf_fmt(FStr *b, const char *fmt, ...) {\0A char t[64];\0A va_list ap;\0A va_start(ap, fmt);\0A int n = vsnprintf(t, sizeof t, fmt, ap);\0A va_end(ap);\0A finch_buf_add(b, t, n);\0A}\0A\0Avoid finch_buf_int(FStr *b, int64_t v) { buf_fmt(b, \22%lld\22, (long long)v); }\0Avoid finch_buf_uint(FStr *b, uint64_t v) { buf_fmt(b, \22%llu\22, (unsigned long long)v); }\0Avoid finch_buf_float(FStr *b, double v) { buf_fmt(b, \22%g\22, v); }\0Avoid finch_buf_bool(FStr *b, int v) { finch_buf_add(b, v ? \22true\22 : \22false\22, v ? 4 : 5); }\0Avoid finch_buf_ptr(FStr *b, const void *p) {\0A if (p) buf_fmt(b, \220x%llx\22, (unsigned long long)(uintptr_t)p);\0A else finch_buf_add(b, \22null\22, 4);\0A}\0A\0Avoid finch_buf_char(FStr *b, char c, int quoted) {\0A if (quoted) finch_buf_add(b, \22'\22, 1);\0A finch_buf_add(b, &c, 1);\0A if (quoted) finch_buf_add(b, \22'\22, 1);\0A}\0A\0Avoid finch_buf_str(FStr *b, const FStr *s, int quoted) {\0A if (quoted) finch_buf_add(b, \22\5C\22\22, 1);\0A finch_buf_add(b, s->ptr, s->len);\0A if (quoted) finch_buf_add(b, \22\5C\22\22, 1);\0A}\0A\0A// print the buffer and free it\0Avoid finch_buf_print(FStr *b) {\0A if (b->len) fwrite(b->ptr, 1, (size_t)b->len, stdout);\0A if (b->cap > 0) free(b->ptr);\0A}\0A\0A// ---------- arrays ----------\0A\0Avoid finch_arr_reserve(FArr *a, int64_t need, int64_t es) {\0A if (need <= a->cap) return;\0A int64_t cap = a->cap * 2;\0A if (cap < 4) cap = 4;\0A if (cap < need) cap = need;\0A a->ptr = must(realloc(a->cap > 0 ? a->ptr : NULL, (size_t)(cap * es)));\0A a->cap = cap;\0A}\0A\0Avoid finch_arr_make(FArr *out, int64_t len, int64_t es) {\0A if (len < 0) len = 0;\0A out->ptr = len ? finch_zalloc(len * es) : NULL;\0A out->len = len;\0A out->cap = len;\0A}\0A\0A// grow or shrink to `len`; new elements are zero\0Avoid finch_arr_resize(FArr *a, int64_t len, int64_t es) {\0A if (len < 0) len = 0;\0A finch_arr_reserve(a, len, es);\0A if (len > a->len) memset((char *)a->ptr + a->len * es, 0, (size_t)((len - a->len) * es));\0A a->len = len;\0A}\0A\0A// a byte-for-byte copy of the elements (the compiler deep-copies owning elements afterwards)\0Avoid finch_arr_clone_raw(FArr *out, const FArr *a, int64_t es) {\0A out->len = a->len;\0A out->cap = a->len;\0A out->ptr = a->len ? finch_alloc(a->len * es) : NULL;\0A if (a->len) memcpy(out->ptr, a->ptr, (size_t)(a->len * es));\0A}\0A\0Avoid finch_arr_free(FArr *a) {\0A if (a->cap > 0) free(a->ptr);\0A}\0A\0A// open a hole at i (0 <= i <= len), len grows by one\0Avoid finch_arr_insert_gap(FArr *a, int64_t i, int64_t es, const char *file, int64_t line) {\0A if (i < 0 || i > a->len) finch_panic_index(file, line, i, a->len);\0A finch_arr_reserve(a, a->len + 1, es);\0A char *p = a->ptr;\0A memmove(p + (i + 1) * es, p + i * es, (size_t)((a->len - i) * es));\0A a->len++;\0A}\0A\0A// close the hole at i (the element was already moved out), len shrinks by one\0Avoid finch_arr_remove_gap(FArr *a, int64_t i, int64_t es) {\0A char *p = a->ptr;\0A memmove(p + i * es, p + (i + 1) * es, (size_t)((a->len - i - 1) * es));\0A a->len--;\0A}\0A\0Astatic void arr_push_str(FArr *a, const char *p, int64_t len) {\0A finch_arr_reserve(a, a->len + 1, (int64_t)sizeof(FStr));\0A str_heap((FStr *)a->ptr + a->len, p, len);\0A a->len++;\0A}\0A\0Avoid finch_bytes_from_str(FArr *out, const FStr *s) {\0A out->len = out->cap = s->len;\0A out->ptr = s->len ? finch_alloc(s->len) : NULL;\0A if (s->len) memcpy(out->ptr, s->ptr, (size_t)s->len);\0A}\0A\0A// ---------- program arguments, input and files ----------\0A\0Avoid finch_args(FArr *out, int argc, char **argv) {\0A out->len = out->cap = argc;\0A out->ptr = finch_alloc((int64_t)sizeof(FStr) * (argc ? argc : 1));\0A for (int i = 0; i < argc; i++) str_heap((FStr *)out->ptr + i, argv[i], (int64_t)strlen(argv[i]));\0A}\0A\0A// input(\22Name? \22) prints the prompt and reads one line, without the newline.\0Avoid finch_input(FStr *out, const FStr *prompt) {\0A if (prompt->len) fwrite(prompt->ptr, 1, (size_t)prompt->len, stdout);\0A fflush(stdout);\0A // read one line of any length (getline isn't available everywhere)\0A size_t size = 128, n = 0;\0A char *line = finch_alloc((int64_t)size);\0A int c, got = 0;\0A while ((c = fgetc(stdin)) != EOF) {\0A got = 1;\0A if (c == '\5Cn') break;\0A if (n + 1 >= size) line = must(realloc(line, size *= 2));\0A line[n++] = (char)c;\0A }\0A if (!got) {\0A free(line);\0A str_static(out, empty);\0A return;\0A }\0A while (n > 0 && line[n - 1] == '\5Cr') n--;\0A line[n] = 0;\0A out->ptr = line;\0A out->len = (int64_t)n;\0A out->cap = (int64_t)size;\0A}\0A\0Aint finch_file_exists(const FStr *path) {\0A FILE *f = fopen(path->ptr, \22rb\22);\0A if (f) fclose(f);\0A return f != NULL;\0A}\0A\0Aint finch_try_read_file(FStr *out, const FStr *path, FStr *err) {\0A FILE *f = fopen(path->ptr ? path->ptr : \22\22, \22rb\22);\0A if (!f) {\0A file_error(err, \22read\22, path);\0A return 0;\0A }\0A fseek(f, 0, SEEK_END);\0A long size = ftell(f);\0A fseek(f, 0, SEEK_SET);\0A char *m = finch_alloc(size + 1);\0A size_t got = fread(m, 1, (size_t)size, f);\0A fclose(f);\0A m[got] = 0;\0A out->ptr = m;\0A out->len = (int64_t)got;\0A out->cap = size + 1;\0A return 1;\0A}\0A\0Avoid finch_read_file(FStr *out, const FStr *path, const char *file, int64_t line) {\0A FILE *f = fopen(path->ptr ? path->ptr : \22\22, \22rb\22);\0A if (!f) {\0A char msg[300];\0A snprintf(msg, sizeof msg, \22can't read the file \5C\22%.*s\5C\22: %s\22, (int)(path->len > 200 ? 200 : path->len),\0A path->ptr, strerror(errno));\0A finch_panic(file, line, msg);\0A }\0A fseek(f, 0, SEEK_END);\0A long size = ftell(f);\0A fseek(f, 0, SEEK_SET);\0A char *m = finch_alloc(size + 1);\0A size_t got = fread(m, 1, (size_t)size, f);\0A fclose(f);\0A m[got] = 0;\0A out->ptr = m;\0A out->len = (int64_t)got;\0A out->cap = size + 1;\0A}\0A\0A// shell(\22ls -l\22): run a command, give back its exit code\0Aint64_t finch_shell(const FStr *cmd) {\0A fflush(stdout);\0A int status = system(cmd->ptr ? cmd->ptr : \22\22);\0A#ifdef _WIN32\0A return status; // Windows gives the exit code directly\0A#else\0A if (status == -1) return -1;\0A if (WIFEXITED(status)) return WEXITSTATUS(status);\0A return 128 + (WIFSIGNALED(status) ? WTERMSIG(status) : 0);\0A#endif\0A}\0A\0Aint finch_delete_file(const FStr *path) { return remove(path->ptr ? path->ptr : \22\22) == 0; }\0A\0Aint finch_try_delete_file(const FStr *path, FStr *err) {\0A if (remove(path->ptr ? path->ptr : \22\22) == 0) return 1;\0A file_error(err, \22delete\22, path);\0A return 0;\0A}\0A\0A// stdin/stdout/stderr are macros on some systems (Windows), so Finch asks for them here\0Avoid *finch_std_stream(int i) { return i == 0 ? (void *)stdin : i == 1 ? (void *)stdout : (void *)stderr; }\0A\0Aint finch_write_file(const FStr *path, const FStr *text) {\0A FILE *f = fopen(path->ptr ? path->ptr : \22\22, \22wb\22);\0A if (!f) return 0;\0A size_t put = text->len ? fwrite(text->ptr, 1, (size_t)text->len, f) : 0;\0A return fclose(f) == 0 && put == (size_t)text->len;\0A}\0A\0Aint finch_try_write_file(const FStr *path, const FStr *text, FStr *err) {\0A errno = 0;\0A if (finch_write_file(path, text)) return 1;\0A if (!errno) errno = EIO;\0A file_error(err, \22write\22, path);\0A return 0;\0A}\0A\0A// ---------- maps ----------\0A// map[K]V = { entries; len; used; cap; index; icap; adds }\0A// entries: `used` slots of es bytes, each { uint64 hash; K key; V value }, in insertion order.\0A// A removed entry keeps its slot (hash 0) until the next resize packs the slots.\0A// index: icap slots (a power of two, at least 2 * cap): -1 empty, -2 removed, else an entry number.\0A// adds: how many keys were ever added; a `for` over the map stops with an error if it changes.\0A// The compiler stores, copies and drops keys and values; the runtime only finds and places entries.\0A// Keys are compared byte for byte (numbers, chars, bools) or as text (kstr).\0A\0Atypedef struct {\0A char *entries;\0A int64_t len, used, cap;\0A int64_t *index;\0A int64_t icap;\0A int64_t adds;\0A} FMap;\0A\0Astatic uint64_t map_hash(const void *key, int64_t ks, int kstr) {\0A const unsigned char *p;\0A size_t n;\0A if (kstr) {\0A const FStr *s = key;\0A p = (const unsigned char *)s->ptr;\0A n = (size_t)s->len;\0A } else {\0A p = key;\0A n = (size_t)ks;\0A }\0A uint64_t h = 1469598103934665603ULL; // FNV-1a, then mixed so the low bits spread well\0A for (size_t i = 0; i < n; i++) {\0A h ^= p[i];\0A h *= 1099511628211ULL;\0A }\0A h ^= h >> 31;\0A h *= 0xbf58476d1ce4e5b9ULL;\0A h ^= h >> 29;\0A return h | 1; // 0 marks a removed entry\0A}\0A\0Astatic int map_key_eq(const char *a, const void *b, int64_t ks, int kstr) {\0A if (!kstr) return memcmp(a, b, (size_t)ks) == 0;\0A const FStr *x = (const FStr *)a, *y = b;\0A return x->len == y->len && (x->len == 0 || memcmp(x->ptr, y->ptr, (size_t)x->len) == 0);\0A}\0A\0Astatic void map_reindex(FMap *m, int64_t es) {\0A if (m->len != m->used) { // pack the slots of removed entries away\0A int64_t j = 0;\0A for (int64_t i = 0; i < m->used; i++) {\0A char *e = m->entries + i * es;\0A if (*(uint64_t *)e == 0) continue;\0A if (i != j) memmove(m->entries + j * es, e, (size_t)es);\0A j++;\0A }\0A m->used = j;\0A }\0A int64_t icap = 16;\0A while (icap < m->cap * 2) icap *= 2;\0A free(m->index);\0A m->index = finch_alloc(icap * (int64_t)sizeof(int64_t));\0A memset(m->index, 0xff, (size_t)icap * sizeof(int64_t));\0A m->icap = icap;\0A for (int64_t i = 0; i < m->used; i++) {\0A uint64_t h = *(uint64_t *)(m->entries + i * es);\0A int64_t s = (int64_t)(h & (uint64_t)(icap - 1));\0A while (m->index[s] != -1) s = (s + 1) & (icap - 1);\0A m->index[s] = i;\0A }\0A}\0A\0A// the entry number of `key`, or -1\0Aint64_t finch_map_find(const FMap *m, const void *key, int64_t es, int64_t ks, int32_t kstr) {\0A if (m->len == 0) return -1;\0A uint64_t h = map_hash(key, ks, kstr);\0A for (int64_t s = (int64_t)(h & (uint64_t)(m->icap - 1));; s = (s + 1) & (m->icap - 1)) {\0A int64_t i = m->index[s];\0A if (i == -1) return -1;\0A if (i < 0) continue;\0A char *e = m->entries + i * es;\0A if (*(uint64_t *)e == h && map_key_eq(e + 8, key, ks, kstr)) return i;\0A }\0A}\0A\0A// The entry for `key`. A new one is zeroed except its hash (*added = 1); the compiler then stores the key.\0Aint64_t finch_map_slot(FMap *m, const void *key, int64_t es, int64_t ks, int32_t kstr, int32_t *added) {\0A int64_t i = finch_map_find(m, key, es, ks, kstr);\0A *added = i < 0;\0A if (i >= 0) return i;\0A if (m->used == m->cap) {\0A if (m->len * 4 < m->cap * 3) { // many removed slots: pack them instead of growing\0A map_reindex(m, es);\0A } else {\0A m->cap = m->cap ? m->cap * 2 : 8;\0A m->entries = must(realloc(m->entries, (size_t)(m->cap * es)));\0A map_reindex(m, es);\0A }\0A }\0A uint64_t h = map_hash(key, ks, kstr);\0A i = m->used++;\0A char *e = m->entries + i * es;\0A memset(e, 0, (size_t)es);\0A *(uint64_t *)e = h;\0A int64_t s = (int64_t)(h & (uint64_t)(m->icap - 1));\0A while (m->index[s] >= 0) s = (s + 1) & (m->icap - 1);\0A m->index[s] = i;\0A m->len++;\0A m->adds++;\0A return i;\0A}\0A\0A// Forget entry i (its key and value were already dropped by the compiler).\0Avoid finch_map_remove_at(FMap *m, int64_t i, int64_t es) {\0A char *e = m->entries + i * es;\0A uint64_t h = *(uint64_t *)e;\0A int64_t s = (int64_t)(h & (uint64_t)(m->icap - 1));\0A while (m->index[s] != i) s = (s + 1) & (m->icap - 1);\0A m->index[s] = -2;\0A *(uint64_t *)e = 0;\0A if (--m->len == 0) {\0A m->used = 0;\0A memset(m->index, 0xff, (size_t)m->icap * sizeof(int64_t));\0A }\0A}\0A\0Avoid finch_map_clear(FMap *m) {\0A m->len = m->used = 0;\0A if (m->index) memset(m->index, 0xff, (size_t)m->icap * sizeof(int64_t));\0A}\0A\0Avoid finch_map_free(FMap *m) {\0A free(m->entries);\0A free(m->index);\0A}\0A\0A// A copy of the slots and the index; the compiler then copies the keys and values that own memory.\0Avoid finch_map_clone_raw(FMap *out, const FMap *m, int64_t es) {\0A *out = *m;\0A if (!m->cap) return;\0A out->entries = finch_alloc(m->cap * es);\0A memcpy(out->entries, m->entries, (size_t)(m->used * es));\0A out->index = finch_alloc(m->icap * (int64_t)sizeof(int64_t));\0A memcpy(out->index, m->index, (size_t)m->icap * sizeof(int64_t));\0A}\0A\0A__attribute__((noreturn, cold)) void finch_map_changed(const char *file, int64_t line) {\0A finch_panic(file, line, \22a key was added to the map while looping over it (collect the new keys, and add them after the loop)\22);\0A}\0A\0A__attribute__((noreturn, cold)) void finch_map_missing(const char *file, int64_t line, const FStr *key) {\0A char msg[200];\0A snprintf(msg, sizeof msg, \22the key %.*s is not in the map (check with .has(key), or use .get(key, default))\22,\0A (int)(key->len > 100 ? 100 : key->len), key->ptr ? key->ptr : \22\22);\0A finch_panic(file, line, msg);\0A}\0A\00" +@.str.7330 = private unnamed_addr constant [12885 x i8] c"// JSON: read it, build it, write it.\0A//\0A// import json\0A//\0A// doc := try json.parse(\22{\5C\22name\5C\22: \5C\22Finch\5C\22, \5C\22tags\5C\22: [\5C\22fast\5C\22, \5C\22small\5C\22], \5C\22stars\5C\22: 5}\22)\0A// print(doc.get(\22name\22).str_or(\22\22)) Finch\0A// print(doc.get(\22tags\22).at(1).str_or(\22\22)) small\0A// print(doc.get(\22stars\22).int_or(0)) 5\0A// print(doc.get(\22missing\22).is_null()) true (a missing key is null, so chains never fail)\0A//\0A// out := json.new_object()\0A// out.set(\22ok\22, json.new_bool(true))\0A// list := json.new_list()\0A// list.push(json.new_number(1.5))\0A// out.set(\22values\22, list)\0A// print(json.stringify(out)) {\22ok\22:true,\22values\22:[1.5]}\0A// print(json.pretty(out)) the same, over several lines\0A\0Aenum Kind { Null, Bool, Number, Text, List, Object }\0A\0A// One JSON value. `kind` says which of the other fields it uses: flag for Bool, num for Number,\0A// text for Text, items for List, and items with keys (the same length, in the same order) for Object.\0Astruct Json {\0A Kind kind\0A bool flag\0A float num\0A str text\0A []Json items\0A []str keys\0A}\0A\0Afn new_null() -> Json {\0A return Json(kind: Kind.Null)\0A}\0A\0Afn new_bool(bool b) -> Json {\0A return Json(kind: Kind.Bool, flag: b)\0A}\0A\0Afn new_number(float n) -> Json {\0A return Json(kind: Kind.Number, num: n)\0A}\0A\0Afn new_text(str s) -> Json {\0A return Json(kind: Kind.Text, text: s)\0A}\0A\0Afn new_list() -> Json {\0A return Json(kind: Kind.List)\0A}\0A\0Afn new_object() -> Json {\0A return Json(kind: Kind.Object)\0A}\0A\0A// ---------- looking inside ----------\0A\0Afn Json.is_null() -> bool {\0A return self.kind == Kind.Null\0A}\0A\0A// the number of elements of a list, of keys of an object, of bytes of a text; 0 for the rest\0Afn Json.len() -> int {\0A return match self.kind {\0A List, Object -> self.items.len\0A Text -> self.text.len\0A else -> 0\0A }\0A}\0A\0Afn Json.has(str key) -> bool {\0A return self.kind == Kind.Object && self.keys.contains(key)\0A}\0A\0A// the value of a key of an object; null if there is none (or this is not an object)\0Afn Json.get(str key) -> Json {\0A if self.kind != Kind.Object {\0A return new_null()\0A }\0A i := self.keys.find(key)\0A if i < 0 {\0A return new_null()\0A }\0A return self.items[i]\0A}\0A\0A// the element of a list; null if there is none\0Afn Json.at(int i) -> Json {\0A if self.kind != Kind.List || i < 0 || i >= self.items.len {\0A return new_null()\0A }\0A return self.items[i]\0A}\0A\0A// the value if it is of that kind, else what was given\0Afn Json.str_or(str fallback) -> str {\0A if self.kind == Kind.Text {\0A return self.text\0A }\0A return fallback\0A}\0A\0Afn Json.float_or(float fallback) -> float {\0A if self.kind == Kind.Number {\0A return self.num\0A }\0A return fallback\0A}\0A\0Afn Json.int_or(int fallback) -> int {\0A if self.kind == Kind.Number {\0A return int(self.num)\0A }\0A return fallback\0A}\0A\0Afn Json.bool_or(bool fallback) -> bool {\0A if self.kind == Kind.Bool {\0A return self.flag\0A }\0A return fallback\0A}\0A\0A// the keys of an object, in the order they were written\0Afn Json.names() -> []str {\0A return self.keys\0A}\0A\0A// ---------- building ----------\0A\0A// add to the end of a list\0Afn Json.push(Json v) {\0A self.items.push(v)\0A}\0A\0A// give a key a value in an object; a key that is already there is replaced\0Afn Json.set(str key, Json v) {\0A i := self.keys.find(key)\0A if i >= 0 {\0A self.items[i] = v\0A return\0A }\0A self.keys.push(key)\0A self.items.push(v)\0A}\0A\0A// ---------- writing ----------\0A\0Afn quote(str s) -> str {\0A []str parts = [\22\5C\22\22]\0A for c in s {\0A n := int(c)\0A if c == '\22' {\0A parts.push(\22\5C\5C\5C\22\22)\0A } else if c == '\5C\5C' {\0A parts.push(\22\5C\5C\5C\5C\22)\0A } else if c == '\5Cn' {\0A parts.push(\22\5C\5Cn\22)\0A } else if c == '\5Cr' {\0A parts.push(\22\5C\5Cr\22)\0A } else if c == '\5Ct' {\0A parts.push(\22\5C\5Ct\22)\0A } else if n < 32 {\0A parts.push(\22\5C\5Cu00\22 + hexdigit(n / 16) + hexdigit(n % 16))\0A } else {\0A parts.push(str(c))\0A }\0A }\0A parts.push(\22\5C\22\22)\0A return parts.join(\22\22)\0A}\0A\0Afn hexdigit(int n) -> str {\0A digits := \220123456789abcdef\22\0A return str(digits[n])\0A}\0A\0Afn number_text(float n) -> str {\0A if n == float(int(n)) && n > -1000000000000000.0 && n < 1000000000000000.0 {\0A return str(int(n))\0A }\0A return str(n)\0A}\0A\0Astruct Writer {\0A []str out\0A}\0A\0Afn write(Json j, str indent, str pad, ptr[Writer] w) {\0A nl := \22\22\0A inner := \22\22\0A sep := \22,\22\0A colon := \22:\22\0A if indent.len > 0 {\0A nl = \22\5Cn\22\0A inner = pad + indent\0A colon = \22: \22\0A }\0A match j.kind {\0A Null -> w.out.push(\22null\22)\0A Bool -> {\0A if j.flag {\0A w.out.push(\22true\22)\0A } else {\0A w.out.push(\22false\22)\0A }\0A }\0A Number -> w.out.push(number_text(j.num))\0A Text -> w.out.push(quote(j.text))\0A List -> {\0A if j.items.len == 0 {\0A w.out.push(\22[]\22)\0A return\0A }\0A w.out.push(\22[\22 + nl)\0A for i, item in j.items {\0A if i > 0 {\0A w.out.push(sep + nl)\0A }\0A w.out.push(inner)\0A write(item, indent, inner, w)\0A }\0A w.out.push(nl + pad + \22]\22)\0A }\0A Object -> {\0A if j.items.len == 0 {\0A w.out.push(\22{}\22)\0A return\0A }\0A w.out.push(\22{\22 + nl)\0A for i, item in j.items {\0A if i > 0 {\0A w.out.push(sep + nl)\0A }\0A w.out.push(inner + quote(j.keys[i]) + colon)\0A write(item, indent, inner, w)\0A }\0A w.out.push(nl + pad + \22}\22)\0A }\0A }\0A}\0A\0A// the value as text on one line\0Afn stringify(Json j) -> str {\0A w := Writer()\0A write(j, \22\22, \22\22, addr(w))\0A return w.out.join(\22\22)\0A}\0A\0A// the value as text over several lines, indented by two spaces\0Afn pretty(Json j) -> str {\0A w := Writer()\0A write(j, \22 \22, \22\22, addr(w))\0A return w.out.join(\22\22)\0A}\0A\0A// ---------- reading ----------\0A\0Astruct Reader {\0A str src\0A int i\0A}\0A\0A// the line and column of a position, for a message\0Afn where(ptr[Reader] r) -> str {\0A line := 1\0A col := 1\0A for k in 0..r.i {\0A if k < r.src.len && r.src[k] == '\5Cn' {\0A line += 1\0A col = 1\0A } else {\0A col += 1\0A }\0A }\0A return \22line \22 + str(line) + \22, column \22 + str(col)\0A}\0A\0Afn peek(ptr[Reader] r) -> char {\0A if r.i < r.src.len {\0A return r.src[r.i]\0A }\0A return char(0)\0A}\0A\0Afn skip_space(ptr[Reader] r) {\0A while r.i < r.src.len && (r.src[r.i] == ' ' || r.src[r.i] == '\5Cn' || r.src[r.i] == '\5Ct' || r.src[r.i] == '\5Cr') {\0A r.i += 1\0A }\0A}\0A\0Afn unexpected(ptr[Reader] r, str wanted) -> str {\0A if r.i >= r.src.len {\0A return \22json: the text ends where \22 + wanted + \22 should be (\22 + where(r) + \22)\22\0A }\0A return \22json: found '\22 + str(r.src[r.i]) + \22' where \22 + wanted + \22 should be (\22 + where(r) + \22)\22\0A}\0A\0A// does `word` come next?\0Afn comes(ptr[Reader] r, str word) -> bool {\0A return r.src.len - r.i >= word.len && r.src.sub(r.i, r.i + word.len) == word\0A}\0A\0Afn expect_word(ptr[Reader] r, str word) -> ! {\0A if !comes(r, word) {\0A return error(unexpected(r, \22'\22 + word + \22'\22))\0A }\0A r.i += word.len\0A}\0A\0Afn hex_value(char c) -> int {\0A if c >= '0' && c <= '9' {\0A return int(c) - int('0')\0A }\0A if c >= 'a' && c <= 'f' {\0A return int(c) - int('a') + 10\0A }\0A if c >= 'A' && c <= 'F' {\0A return int(c) - int('A') + 10\0A }\0A return -1\0A}\0A\0A// a code point as UTF-8\0Afn utf8(int cp) -> str {\0A []u8 b\0A if cp < 128 {\0A b.push(u8(cp))\0A } else if cp < 2048 {\0A b.push(u8(192 + cp / 64))\0A b.push(u8(128 + cp % 64))\0A } else if cp < 65536 {\0A b.push(u8(224 + cp / 4096))\0A b.push(u8(128 + (cp / 64) % 64))\0A b.push(u8(128 + cp % 64))\0A } else {\0A b.push(u8(240 + cp / 262144))\0A b.push(u8(128 + (cp / 4096) % 64))\0A b.push(u8(128 + (cp / 64) % 64))\0A b.push(u8(128 + cp % 64))\0A }\0A return str(b)\0A}\0A\0Afn read_hex4(ptr[Reader] r) -> int! {\0A n := 0\0A for k in 0..4 {\0A if r.i >= r.src.len || hex_value(r.src[r.i]) < 0 {\0A return error(unexpected(r, \22a hexadecimal digit\22))\0A }\0A n = n * 16 + hex_value(r.src[r.i])\0A r.i += 1\0A }\0A return n\0A}\0A\0Afn read_string(ptr[Reader] r) -> str! {\0A r.i += 1 // the opening quote\0A []str parts\0A start := r.i\0A while true {\0A if r.i >= r.src.len {\0A return error(\22json: a text is never closed (\22 + where(r) + \22)\22)\0A }\0A c := r.src[r.i]\0A if c == '\22' {\0A parts.push(r.src.sub(start, r.i))\0A r.i += 1\0A return parts.join(\22\22)\0A }\0A if int(c) < 32 {\0A return error(\22json: a line break or control character inside a text (\22 + where(r) + \22)\22)\0A }\0A if c != '\5C\5C' {\0A r.i += 1\0A continue\0A }\0A parts.push(r.src.sub(start, r.i))\0A r.i += 1\0A e := peek(r)\0A r.i += 1\0A if e == 'n' {\0A parts.push(\22\5Cn\22)\0A } else if e == 't' {\0A parts.push(\22\5Ct\22)\0A } else if e == 'r' {\0A parts.push(\22\5Cr\22)\0A } else if e == 'b' {\0A parts.push(utf8(8))\0A } else if e == 'f' {\0A parts.push(utf8(12))\0A } else if e == '\22' || e == '\5C\5C' || e == '/' {\0A parts.push(str(e))\0A } else if e == 'u' {\0A cp := try read_hex4(r)\0A // a pair of \F0\9F\98\80 stands for one character above U+FFFF\0A if cp >= 55296 && cp < 56320 && comes(r, \22\5C\5Cu\22) {\0A r.i += 2\0A low := try read_hex4(r)\0A cp = 65536 + (cp - 55296) * 1024 + (low - 56320)\0A }\0A parts.push(utf8(cp))\0A } else {\0A return error(\22json: unknown escape \5C\5C\22 + str(e) + \22 in a text (\22 + where(r) + \22)\22)\0A }\0A start = r.i\0A }\0A}\0A\0Afn read_number(ptr[Reader] r) -> Json! {\0A start := r.i\0A if peek(r) == '-' {\0A r.i += 1\0A }\0A while r.i < r.src.len && ((r.src[r.i] >= '0' && r.src[r.i] <= '9') || r.src[r.i] == '.' || r.src[r.i] == 'e' || r.src[r.i] == 'E' || r.src[r.i] == '+' || r.src[r.i] == '-') {\0A r.i += 1\0A }\0A n := float(r.src.sub(start, r.i)) or {\0A r.i = start\0A return error(unexpected(r, \22a number\22))\0A }\0A return new_number(n)\0A}\0A\0Afn read_value(ptr[Reader] r) -> Json! {\0A skip_space(r)\0A c := peek(r)\0A if r.i >= r.src.len {\0A return error(unexpected(r, \22a value\22))\0A }\0A if c == '{' {\0A obj := new_object()\0A r.i += 1\0A skip_space(r)\0A if peek(r) == '}' {\0A r.i += 1\0A return obj\0A }\0A while true {\0A skip_space(r)\0A if peek(r) != '\22' {\0A return error(unexpected(r, \22a key in quotes\22))\0A }\0A key := try read_string(r)\0A skip_space(r)\0A if peek(r) != ':' {\0A return error(unexpected(r, \22':'\22))\0A }\0A r.i += 1\0A v := try read_value(r)\0A obj.set(key, v)\0A skip_space(r)\0A if peek(r) == ',' {\0A r.i += 1\0A continue\0A }\0A if peek(r) == '}' {\0A r.i += 1\0A return obj\0A }\0A return error(unexpected(r, \22',' or '}'\22))\0A }\0A }\0A if c == '[' {\0A list := new_list()\0A r.i += 1\0A skip_space(r)\0A if peek(r) == ']' {\0A r.i += 1\0A return list\0A }\0A while true {\0A v := try read_value(r)\0A list.push(v)\0A skip_space(r)\0A if peek(r) == ',' {\0A r.i += 1\0A continue\0A }\0A if peek(r) == ']' {\0A r.i += 1\0A return list\0A }\0A return error(unexpected(r, \22',' or ']'\22))\0A }\0A }\0A if c == '\22' {\0A s := try read_string(r)\0A return new_text(s)\0A }\0A if c == 't' {\0A try expect_word(r, \22true\22)\0A return new_bool(true)\0A }\0A if c == 'f' {\0A try expect_word(r, \22false\22)\0A return new_bool(false)\0A }\0A if c == 'n' {\0A try expect_word(r, \22null\22)\0A return new_null()\0A }\0A if c == '-' || (c >= '0' && c <= '9') {\0A return try read_number(r)\0A }\0A return error(unexpected(r, \22a value\22))\0A}\0A\0A// the JSON in `text`; an error with the line and column where it went wrong\0Afn parse(str text) -> Json! {\0A r := Reader(src: text)\0A v := try read_value(addr(r))\0A skip_space(addr(r))\0A if r.i < r.src.len {\0A return error(unexpected(addr(r), \22the end of the text\22))\0A }\0A return v\0A}\0A\00" +@.str.7331 = private unnamed_addr constant [2847 x i8] c"// Paths, as text. Elements are separated by \22/\22.\0A//\0A// import path\0A// path.join(\22a\22, \22b.txt\22) a/b.txt\0A// path.base(\22/tmp/x/a.tar.gz\22) a.tar.gz path.stem(...) a.tar path.ext(...) .gz\0A// path.dir(\22/tmp/x/a.txt\22) /tmp/x\0A// path.clean(\22a//b/../c/./d\22) a/c/d\0A\0A// a and b with one separator between; an absolute b replaces a\0Afn join(str a, str b) -> str {\0A if a.len == 0 {\0A return b\0A }\0A if b.len == 0 {\0A return a\0A }\0A if b[0] == '/' {\0A return b\0A }\0A if a[a.len - 1] == '/' {\0A return a + b\0A }\0A return a + \22/\22 + b\0A}\0A\0Afn is_abs(str p) -> bool {\0A return p.len > 0 && p[0] == '/'\0A}\0A\0A// the last element: \22a/b.txt\22 -> \22b.txt\22, \22a/b/\22 -> \22b\22, \22\22 -> \22.\22, \22/\22 -> \22/\22\0Afn base(str p) -> str {\0A if p.len == 0 {\0A return \22.\22\0A }\0A end := p.len\0A while end > 1 && p[end - 1] == '/' {\0A end -= 1\0A }\0A if end == 1 && p[0] == '/' {\0A return \22/\22\0A }\0A start := end\0A while start > 0 && p[start - 1] != '/' {\0A start -= 1\0A }\0A return p.sub(start, end)\0A}\0A\0A// everything before the last element: \22a/b.txt\22 -> \22a\22, \22b.txt\22 -> \22.\22, \22/b\22 -> \22/\22\0Afn dir(str p) -> str {\0A end := p.len\0A while end > 1 && p[end - 1] == '/' {\0A end -= 1\0A }\0A i := end\0A while i > 0 && p[i - 1] != '/' {\0A i -= 1\0A }\0A if i == 0 {\0A return \22.\22\0A }\0A while i > 1 && p[i - 1] == '/' {\0A i -= 1\0A }\0A return p.sub(0, i)\0A}\0A\0A// the part of the last element from its last dot: \22a.tar.gz\22 -> \22.gz\22; \22\22 when there is none\0Afn ext(str p) -> str {\0A b := base(p)\0A i := b.len\0A while i > 0 && b[i - 1] != '.' {\0A i -= 1\0A }\0A if i <= 1 { // no dot, or a name that only starts with one (.bashrc)\0A return \22\22\0A }\0A return b.sub(i - 1, b.len)\0A}\0A\0A// the last element without its extension\0Afn stem(str p) -> str {\0A b := base(p)\0A e := ext(p)\0A return b.sub(0, b.len - e.len)\0A}\0A\0A// the elements of a path: \22/a/b/c\22 -> [\22a\22, \22b\22, \22c\22]\0Afn parts(str p) -> []str {\0A []str out\0A for piece in p.split(\22/\22) {\0A if piece.len > 0 {\0A out.push(piece)\0A }\0A }\0A return out\0A}\0A\0A// the shortest path with the same meaning: no \22//\22, no \22.\22, and \22..\22 resolved where it can be\0Afn clean(str p) -> str {\0A if p.len == 0 {\0A return \22.\22\0A }\0A abs := is_abs(p)\0A []str out\0A for piece in parts(p) {\0A if piece == \22.\22 {\0A continue\0A }\0A if piece == \22..\22 {\0A if out.len > 0 && out[out.len - 1] != \22..\22 {\0A out.pop()\0A } else if !abs {\0A out.push(\22..\22)\0A }\0A continue\0A }\0A out.push(piece)\0A }\0A joined := out.join(\22/\22)\0A if abs {\0A return \22/\22 + joined\0A }\0A if joined.len == 0 {\0A return \22.\22\0A }\0A return joined\0A}\0A\00" +@.str.7332 = private unnamed_addr constant [1407 x i8] c"// Programs: run a command, read what it printed, look at the environment.\0A//\0A// import proc\0A// code := proc.run(\22make\22) the exit code; what the command prints goes to the screen\0A// text := try proc.output(\22git describe\22) what the command printed; an error if it failed\0A// proc.env(\22HOME\22, \22/\22) an environment variable, or the second value if it is not set\0Aimport \22stdlib.h\22\0Aimport \22unistd.h\22\0Aimport \22time.h\22\0A\0A// run a command; its output goes to the screen. Gives its exit code.\0Afn run(str command) -> int {\0A return shell(command)\0A}\0A\0A// run a command and give what it printed. Fails, with its output as the message, if it exits with an error.\0Afn output(str command) -> str! {\0A tmp := \22/tmp/finch_out_\22 + str(getpid()) + \22_\22 + str(int(time(null)))\0A code := shell(\22(\22 + command + \22) > '\22 + tmp + \22' 2>&1\22)\0A text := read_file(tmp) or \22\22\0A delete_file(tmp)\0A if code != 0 {\0A return error(\22'\22 + command + \22' exited with code \22 + str(code) + \22: \22 + text.trim())\0A }\0A return text\0A}\0A\0Afn env(str name, str fallback) -> str {\0A v := getenv(name)\0A if v.len == 0 {\0A return fallback\0A }\0A return v\0A}\0A\0Afn pid() -> int {\0A return int(getpid())\0A}\0A\0A// the folder the program is running in\0Afn cwd() -> str {\0A []char buf\0A for i in 0..4096 {\0A buf.push(char(0))\0A }\0A getcwd(buf.ptr, 4096)\0A return str(buf.ptr)\0A}\0A\00" +@.str.7333 = private unnamed_addr constant [996 x i8] c"// Programs, for Windows. The same functions as proc.fch (that file is for Linux and macOS).\0Aimport \22stdlib.h\22\0Aimport \22process.h\22\0Aimport \22direct.h\22\0Aimport \22time.h\22\0A\0Afn run(str command) -> int {\0A return shell(command)\0A}\0A\0Afn output(str command) -> str! {\0A tmp := proc_env(\22TEMP\22, \22.\22) + \22\5C\5Cfinch_out_\22 + str(getpid()) + \22_\22 + str(int(time(null)))\0A code := shell(command + \22 > \5C\22\22 + tmp + \22\5C\22 2>&1\22)\0A text := read_file(tmp) or \22\22\0A delete_file(tmp)\0A if code != 0 {\0A return error(\22'\22 + command + \22' exited with code \22 + str(code) + \22: \22 + text.trim())\0A }\0A return text\0A}\0A\0Afn proc_env(str name, str fallback) -> str {\0A v := getenv(name)\0A if v.len == 0 {\0A return fallback\0A }\0A return v\0A}\0A\0Afn env(str name, str fallback) -> str {\0A return proc_env(name, fallback)\0A}\0A\0Afn pid() -> int {\0A return int(getpid())\0A}\0A\0Afn cwd() -> str {\0A []char buf\0A for i in 0..4096 {\0A buf.push(char(0))\0A }\0A getcwd(buf.ptr, 4096)\0A return str(buf.ptr)\0A}\0A\00" +@.str.7334 = private unnamed_addr constant [2540 x i8] c"// Time: the clock, sleeping, and dates.\0A//\0A// import time\0A// start := time.millis() milliseconds from a clock that only goes forward (to measure with)\0A// time.sleep(250) wait a quarter of a second\0A// time.now() seconds since 1970-01-01 00:00 UTC\0A// d := time.date(time.now()) the parts: d.year, d.month, d.day, d.hour, d.minute, d.second\0A// time.format(time.now(), \22%Y-%m-%d %H:%M\22) as text, in the computer's time zone\0Aimport \22time.h\22\0A\0Astruct Date {\0A int year\0A int month // 1 to 12\0A int day // 1 to 31\0A int hour\0A int minute\0A int second\0A int weekday // 0 is Sunday\0A int yearday // 1 to 366\0A}\0A\0A// seconds since 1970-01-01 00:00 UTC\0Afn now() -> int {\0A return int(time(null))\0A}\0A\0A// milliseconds on a clock that only goes forward: for measuring how long something took\0Afn millis() -> int {\0A timespec ts\0A clock_gettime(CLOCK_MONOTONIC, addr(ts))\0A return int(ts.tv_sec) * 1000 + int(ts.tv_nsec) / 1000000\0A}\0A\0Afn sleep(int ms) {\0A timespec ts\0A ts.tv_sec = ms / 1000\0A ts.tv_nsec = (ms % 1000) * 1000000\0A nanosleep(addr(ts), null)\0A}\0A\0Afn parts(tm t) -> Date {\0A return Date(year: int(t.tm_year) + 1900, month: int(t.tm_mon) + 1, day: int(t.tm_mday), hour: int(t.tm_hour),\0A minute: int(t.tm_min), second: int(t.tm_sec), weekday: int(t.tm_wday), yearday: int(t.tm_yday) + 1)\0A}\0A\0A// the date and time of a moment, in UTC\0Afn date(int unix) -> Date {\0A tm t\0A i64 stamp = unix\0A gmtime_r(addr(stamp), addr(t))\0A return parts(t)\0A}\0A\0A// the date and time of a moment, in the computer's time zone\0Afn local(int unix) -> Date {\0A tm t\0A i64 stamp = unix\0A localtime_r(addr(stamp), addr(t))\0A return parts(t)\0A}\0A\0A// a moment as text, in the computer's time zone: %Y year, %m month, %d day, %H hour, %M minute, %S second\0A// (the rest of C's strftime works too: %A weekday name, %B month name, ...)\0Afn format(int unix, str pattern) -> str {\0A tm t\0A i64 stamp = unix\0A localtime_r(addr(stamp), addr(t))\0A []char buf\0A for i in 0..256 {\0A buf.push(char(0))\0A }\0A strftime(buf.ptr, 256, pattern, addr(t))\0A return str(buf.ptr)\0A}\0A\0A// the number of days in a month (month is 1 to 12)\0Afn days_in_month(int year, int month) -> int {\0A if month == 2 {\0A if year % 4 == 0 && (year % 100 != 0 || year % 400 == 0) {\0A return 29\0A }\0A return 28\0A }\0A if month == 4 || month == 6 || month == 9 || month == 11 {\0A return 30\0A }\0A return 31\0A}\0A\00" +@.str.7335 = private unnamed_addr constant [1793 x i8] c"// Time, for Windows. The same functions as time.fch (that file is for Linux and macOS).\0Aimport \22time.h\22\0Aimport \22finch_win.h\22\0A\0Astruct Date {\0A int year\0A int month // 1 to 12\0A int day // 1 to 31\0A int hour\0A int minute\0A int second\0A int weekday // 0 is Sunday\0A int yearday // 1 to 366\0A}\0A\0Afn now() -> int {\0A return int(time(null))\0A}\0A\0A// milliseconds on a clock that only goes forward (the performance counter: GetTickCount64 ticks every 15 ms)\0Afn millis() -> int {\0A i64 count = 0\0A i64 freq = 1\0A QueryPerformanceFrequency(addr(freq))\0A QueryPerformanceCounter(addr(count))\0A return int(count / freq) * 1000 + int(count % freq) * 1000 / int(freq)\0A}\0A\0Afn sleep(int ms) {\0A Sleep(u32(ms))\0A}\0A\0Afn parts(tm t) -> Date {\0A return Date(year: int(t.tm_year) + 1900, month: int(t.tm_mon) + 1, day: int(t.tm_mday), hour: int(t.tm_hour),\0A minute: int(t.tm_min), second: int(t.tm_sec), weekday: int(t.tm_wday), yearday: int(t.tm_yday) + 1)\0A}\0A\0Afn date(int unix) -> Date {\0A tm t\0A i64 stamp = unix\0A _gmtime64_s(addr(t), addr(stamp))\0A return parts(t)\0A}\0A\0Afn local(int unix) -> Date {\0A tm t\0A i64 stamp = unix\0A _localtime64_s(addr(t), addr(stamp))\0A return parts(t)\0A}\0A\0Afn format(int unix, str pattern) -> str {\0A tm t\0A i64 stamp = unix\0A _localtime64_s(addr(t), addr(stamp))\0A []char buf\0A for i in 0..256 {\0A buf.push(char(0))\0A }\0A strftime(buf.ptr, 256, pattern, addr(t))\0A return str(buf.ptr)\0A}\0A\0Afn days_in_month(int year, int month) -> int {\0A if month == 2 {\0A if year % 4 == 0 && (year % 100 != 0 || year % 400 == 0) {\0A return 29\0A }\0A return 28\0A }\0A if month == 4 || month == 6 || month == 9 || month == 11 {\0A return 30\0A }\0A return 31\0A}\0A\00" +@.str.7336 = private unnamed_addr constant [366 x i8] c"/* The Windows functions std/time_windows.fch needs. Declared here, not by including :\0A libclang can't parse that header with MinGW's intrinsics. Both are in kernel32. */\0Aunsigned long long GetTickCount64(void);\0Avoid Sleep(unsigned long milliseconds);\0Aint QueryPerformanceCounter(long long *count);\0Aint QueryPerformanceFrequency(long long *frequency);\0A\00" declare void @finch_panic(ptr, i64, ptr) noreturn cold declare void @finch_panic_index(ptr, i64, i64, i64) noreturn cold declare ptr @finch_alloc(i64) declare void @finch_str_copy(ptr, ptr) +declare void @finch_str_drop(ptr) +declare void @finch_arr_free(ptr) +declare void @finch_map_free(ptr) declare void @finch_str_own(ptr) declare void @finch_str_concat(ptr, ptr, ptr) declare i32 @finch_str_eq(ptr, ptr) @@ -7360,7 +7592,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 20, i64 %t8, i64 %t10) + call void @finch_panic_index(ptr @.str.1, i64 22, i64 %t8, i64 %t10) unreachable inrange8: %t12 = extractvalue { ptr, i64, i64 } %t9, 0 @@ -7388,7 +7620,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 26) + call void @finch_str_sub(ptr %a23, ptr %a22, i64 0, i64 %t24, ptr @.str.3, i64 28) %t25 = load { ptr, i64, i64 }, ptr %a23 ret { ptr, i64, i64 } %t25 } @@ -7398,85 +7630,91 @@ entry: %a1 = alloca { ptr, i64, i64 }, align 16 %a3 = alloca { ptr, i64, i64 }, align 16 %a4 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 + %a8 = alloca { ptr, i64, i64 }, align 16 + %a13 = alloca { ptr, i64, i64 }, align 16 %a16 = 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 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 + %a23 = alloca { ptr, i64, i64 }, align 16 + %a24 = alloca { ptr, i64, i64 }, align 16 + %a30 = alloca { ptr, i64, i64 }, align 16 + %a31 = alloca { ptr, i64, i64 }, align 16 %a34 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca i64, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 + %a36 = alloca { ptr, i64, i64 }, align 16 + %a37 = alloca { ptr, i64, i64 }, align 16 + %a38 = alloca { ptr, i64, i64 }, align 16 + %a40 = alloca i64, align 16 + %a44 = alloca { ptr, i64, i64 }, align 16 %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = 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 %t5 = load { ptr, i64, i64 }, ptr %a1 %t6 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t5) %t7 = extractvalue { ptr, i64, i64 } %t6, 1 - %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 30) - %t11 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t11, ptr %a12 - %t13 = load { ptr, i64, i64 }, ptr %a1 - %t14 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t13) - store { ptr, i64, i64 } %t14, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.5, i64 1, i64 0 }, ptr %a16 - %t17 = call i32 @finch_str_eq(ptr %a15, ptr %a16) - %t18 = icmp ne i32 %t17, 0 + store { ptr, i64, i64 } %t6, ptr %a8 + call void @finch_str_drop(ptr %a8) + %t9 = add i64 %t7, 1 + %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t11 = load i64, ptr %t10 + call void @finch_str_sub(ptr %a4, ptr %a3, i64 %t9, i64 %t11, ptr @.str.4, i64 32) + %t12 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t12, ptr %a13 + %t14 = load { ptr, i64, i64 }, ptr %a1 + %t15 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t14) + store { ptr, i64, i64 } %t15, ptr %a16 + store { ptr, i64, i64 } { ptr @.str.5, i64 1, i64 0 }, ptr %a17 + %t18 = call i32 @finch_str_eq(ptr %a16, ptr %a17) + %t19 = icmp ne i32 %t18, 0 + store { ptr, i64, i64 } %t15, ptr %a20 + call void @finch_str_drop(ptr %a20) br label %logic.from13 logic.from13: - br i1 %t18, label %logic.rhs14, label %logic.end15 + br i1 %t19, label %logic.rhs14, label %logic.end15 logic.rhs14: - %t19 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t19, ptr %a20 - store { ptr, i64, i64 } { ptr @.str.7, i64 2, i64 0 }, ptr %a22 - %t23 = call i32 @finch_str_starts(ptr %a20, ptr %a22) - %t24 = icmp ne i32 %t23, 0 - %t25 = xor i1 %t24, true + %t21 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t21, ptr %a22 + store { ptr, i64, i64 } { ptr @.str.7, i64 2, i64 0 }, ptr %a24 + %t25 = call i32 @finch_str_starts(ptr %a22, ptr %a24) + %t26 = icmp ne i32 %t25, 0 + %t27 = xor i1 %t26, true br label %logic.rend16 logic.rend16: br label %logic.end15 logic.end15: - %t26 = phi i1 [ false, %logic.from13 ], [ %t25, %logic.rend16 ] - br i1 %t26, label %then17, label %endif19 + %t28 = phi i1 [ false, %logic.from13 ], [ %t27, %logic.rend16 ] + br i1 %t28, label %then17, label %endif19 then17: - %t27 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t27, ptr %a28 - call void @finch_str_copy(ptr %a29, ptr %a28) - %t30 = load { ptr, i64, i64 }, ptr %a29 - store { ptr, i64, i64 } %t30, ptr %a12 + %t29 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t29, ptr %a30 + call void @finch_str_copy(ptr %a31, ptr %a30) + %t32 = load { ptr, i64, i64 }, ptr %a31 + %t33 = load { ptr, i64, i64 }, ptr %a13 + store { ptr, i64, i64 } %t32, ptr %a13 + store { ptr, i64, i64 } %t33, ptr %a34 + call void @finch_str_drop(ptr %a34) br label %endif19 endif19: - %t31 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } %t31, ptr %a32 - store { ptr, i64, i64 } { ptr @.str.9, i64 1, i64 0 }, ptr %a34 - %t35 = call i64 @finch_str_find(ptr %a32, ptr %a34) - store i64 %t35, ptr %a36 - %t37 = load i64, ptr %a36 - %t38 = icmp sgt i64 %t37, 0 - br i1 %t38, label %then20, label %endif22 + %t35 = load { ptr, i64, i64 }, ptr %a13 + store { ptr, i64, i64 } %t35, ptr %a36 + store { ptr, i64, i64 } { ptr @.str.9, i64 1, i64 0 }, ptr %a38 + %t39 = call i64 @finch_str_find(ptr %a36, ptr %a38) + store i64 %t39, ptr %a40 + %t41 = load i64, ptr %a40 + %t42 = icmp sgt i64 %t41, 0 + br i1 %t42, label %then20, label %endif22 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 36) - %t43 = load { ptr, i64, i64 }, ptr %a41 - ret { ptr, i64, i64 } %t43 -endif22: - %t44 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } %t44, ptr %a45 - call void @finch_str_copy(ptr %a46, ptr %a45) - %t47 = load { ptr, i64, i64 }, ptr %a46 + %t43 = load { ptr, i64, i64 }, ptr %a13 + store { ptr, i64, i64 } %t43, ptr %a44 + %t46 = load i64, ptr %a40 + call void @finch_str_sub(ptr %a45, ptr %a44, i64 0, i64 %t46, ptr @.str.10, i64 38) + %t47 = load { ptr, i64, i64 }, ptr %a45 + call void @finch_str_drop(ptr %a13) ret { ptr, i64, i64 } %t47 +endif22: + %t48 = load { ptr, i64, i64 }, ptr %a13 + ret { ptr, i64, i64 } %t48 } define internal { ptr, i64, i64 } @finch.main.textOfFile(ptr %p0, { ptr, i64, i64 } %p1) { @@ -7498,7 +7736,7 @@ entry: %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) + call void @finch_panic(ptr @.str.11, i64 55, ptr @.str.12) unreachable ok24: %t5 = getelementptr inbounds %S.main.Loader, ptr %t3, i32 0, i32 6 @@ -7539,7 +7777,7 @@ then30: %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) + call void @finch_panic(ptr @.str.13, i64 57, ptr @.str.14) unreachable ok34: %t27 = getelementptr inbounds %S.main.Loader, ptr %t25, i32 0, i32 7 @@ -7549,20 +7787,20 @@ ok34: %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) + call void @finch_panic_index(ptr @.str.15, i64 57, 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) + call void @finch_read_file(ptr %a36, ptr %a35, ptr @.str.16, i64 57) %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) + call void @finch_read_file(ptr %a40, ptr %a39, ptr @.str.17, i64 59) %t41 = load { ptr, i64, i64 }, ptr %a40 ret { ptr, i64, i64 } %t41 } @@ -7575,151 +7813,189 @@ entry: %a6 = 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 + %a9 = alloca { ptr, i64, i64 }, align 16 %a12 = 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 %a17 = 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 %a22 = 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 + %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 %a32 = alloca { ptr, i64, i64 }, align 16 %a33 = alloca { ptr, i64, i64 }, align 16 + %a34 = alloca { ptr, i64, i64 }, align 16 + %a36 = alloca { ptr, i64, i64 }, align 16 + %a37 = alloca { ptr, i64, i64 }, align 16 + %a38 = 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 + %a46 = alloca { ptr, i64, i64 }, align 16 %a47 = 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 %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 + %a55 = alloca { ptr, i64, i64 }, align 16 %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 %a61 = alloca { ptr, i64, i64 }, align 16 %a62 = alloca { ptr, i64, i64 }, align 16 %a63 = alloca { ptr, i64, i64 }, align 16 + %a64 = 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 %a70 = 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 %a74 = alloca { ptr, i64, i64 }, align 16 %a75 = alloca { ptr, i64, i64 }, align 16 - %a78 = 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 - %a88 = alloca 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 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 + %a84 = alloca { ptr, i64, i64 }, align 16 + %a86 = 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 + %a99 = alloca i64, 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 + %a114 = 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 %a120 = alloca { ptr, i64, i64 }, align 16 %a121 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 + %a122 = alloca { ptr, i64, i64 }, align 16 %a128 = alloca { ptr, i64, i64 }, align 16 %a129 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 + %a130 = alloca { ptr, i64, i64 }, align 16 + %a131 = alloca { ptr, i64, i64 }, align 16 %a133 = 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 - %a137 = alloca { ptr, i64, i64 }, align 16 %a138 = alloca { ptr, i64, i64 }, align 16 + %a140 = alloca { ptr, i64, i64 }, align 16 + %a143 = 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 %a148 = 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 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 + %a156 = alloca { ptr, i64, i64 }, align 16 %a162 = alloca { ptr, i64, i64 }, align 16 %a163 = alloca { ptr, i64, i64 }, align 16 %a164 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 + %a165 = alloca { ptr, i64, i64 }, align 16 + %a167 = alloca { ptr, i64, i64 }, align 16 + %a168 = 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 - %a172 = 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 - %a176 = 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 %a180 = 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 + %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 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 + %a198 = alloca { ptr, i64, i64 }, align 16 + %a199 = 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 + %a203 = 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 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 %a220 = alloca { ptr, i64, i64 }, align 16 + %a221 = alloca { ptr, i64, i64 }, align 16 + %a222 = alloca { ptr, i64, i64 }, align 16 + %a225 = 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 - %a229 = 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 %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 + %a239 = 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 - %a248 = alloca { ptr, i64, i64 }, align 16 + %a247 = alloca { ptr, i64, i64 }, align 16 %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 + %a251 = alloca { ptr, i64, i64 }, align 16 %a257 = alloca { ptr, i64, i64 }, align 16 %a258 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 + %a259 = alloca { ptr, i64, i64 }, align 16 %a262 = alloca { ptr, i64, i64 }, align 16 %a263 = 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 %a267 = alloca { ptr, i64, i64 }, align 16 + %a268 = alloca { ptr, i64, i64 }, align 16 %a269 = alloca { ptr, i64, i64 }, align 16 + %a270 = alloca { ptr, i64, i64 }, align 16 %a276 = alloca { ptr, i64, i64 }, align 16 %a277 = alloca { ptr, i64, i64 }, align 16 %a278 = 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 + %a284 = 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 + %a295 = alloca { ptr, i64, i64 }, align 16 + %a296 = alloca { ptr, i64, i64 }, align 16 + %a297 = alloca { ptr, i64, i64 }, align 16 + %a298 = 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 + %a305 = alloca { ptr, i64, i64 }, align 16 + %a307 = 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 + %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 + %a326 = 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 @@ -7728,388 +8004,505 @@ entry: store { ptr, i64, i64 } %t5, ptr %a7 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 - store { ptr, i64, i64 } %t9, ptr %a12 + store { ptr, i64, i64 } %t5, ptr %a9 + call void @finch_str_drop(ptr %a9) + %t10 = load { ptr, i64, i64 }, ptr %a6 + %t11 = load { ptr, i64, i64 }, ptr %a3 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.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.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 - store { ptr, i64, i64 } %t25, 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.21, i64 1, i64 0 }, ptr %a33 + store { ptr, i64, i64 } %t11, ptr %a14 + call void @finch_str_concat(ptr %a12, ptr %a13, ptr %a14) + store { ptr, i64, i64 } %t10, ptr %a15 + call void @finch_str_drop(ptr %a15) + %t16 = load { ptr, i64, i64 }, ptr %a12 + store { ptr, i64, i64 } %t16, ptr %a18 + store { ptr, i64, i64 } { ptr @.str.19, i64 4, i64 0 }, ptr %a19 + call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) + store { ptr, i64, i64 } %t16, ptr %a20 + call void @finch_str_drop(ptr %a20) + %t21 = load { ptr, i64, i64 }, ptr %a17 + store { ptr, i64, i64 } %t21, ptr %a22 + %t23 = load { ptr, i64, i64 }, ptr %a2 + %t24 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t23) + store { ptr, i64, i64 } %t24, ptr %a26 + store { ptr, i64, i64 } { ptr @.str.20, i64 1, i64 0 }, ptr %a27 + call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) + store { ptr, i64, i64 } %t24, ptr %a28 + call void @finch_str_drop(ptr %a28) + %t29 = load { ptr, i64, i64 }, ptr %a25 + %t30 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t29, 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 ptr, ptr %a1 - %t36 = icmp eq ptr %t35, null - br i1 %t36, label %panic37, label %ok38 + store { ptr, i64, i64 } %t29, ptr %a34 + call void @finch_str_drop(ptr %a34) + %t35 = load { ptr, i64, i64 }, ptr %a31 + store { ptr, i64, i64 } %t35, ptr %a37 + store { ptr, i64, i64 } { ptr @.str.21, i64 1, i64 0 }, ptr %a38 + call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) + store { ptr, i64, i64 } %t35, ptr %a39 + call void @finch_str_drop(ptr %a39) + %t40 = load { ptr, i64, i64 }, ptr %a36 + %t41 = load ptr, ptr %a1 + %t42 = icmp eq ptr %t41, null + br i1 %t42, label %panic37, label %ok38 panic37: - call void @finch_panic(ptr @.str.22, i64 65, ptr @.str.23) + call void @finch_panic(ptr @.str.22, i64 67, ptr @.str.23) unreachable 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 - 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.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 %then39, label %endif41 + %t43 = getelementptr inbounds %S.main.Loader, ptr %t41, i32 0, i32 3 + %t44 = load { ptr, i64, i64 }, ptr %t43 + store { ptr, i64, i64 } %t40, ptr %a46 + store { ptr, i64, i64 } %t44, ptr %a47 + call void @finch_str_concat(ptr %a45, ptr %a46, ptr %a47) + store { ptr, i64, i64 } %t40, ptr %a48 + call void @finch_str_drop(ptr %a48) + %t49 = load { ptr, i64, i64 }, ptr %a45 + store { ptr, i64, i64 } %t49, ptr %a51 + store { ptr, i64, i64 } { ptr @.str.24, i64 4, i64 0 }, ptr %a52 + call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) + store { ptr, i64, i64 } %t49, ptr %a53 + call void @finch_str_drop(ptr %a53) + %t54 = load { ptr, i64, i64 }, ptr %a50 + store { ptr, i64, i64 } %t54, ptr %a55 + %t56 = call i32 @finch_file_exists(ptr %a55) + store { ptr, i64, i64 } %t54, ptr %a57 + call void @finch_str_drop(ptr %a57) + %t58 = icmp ne i32 %t56, 0 + br i1 %t58, 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.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 - store { ptr, i64, i64 } %t55, ptr %a58 - store { ptr, i64, i64 } %t56, ptr %a59 - call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) - %t60 = load { ptr, i64, i64 }, ptr %a57 + %t59 = load { ptr, i64, i64 }, ptr %a2 + %t60 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t59) store { ptr, i64, i64 } %t60, ptr %a62 - store { ptr, i64, i64 } { ptr @.str.26, i64 1, i64 0 }, ptr %a63 + store { ptr, i64, i64 } { ptr @.str.25, 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 %panic42, label %ok43 + store { ptr, i64, i64 } %t60, ptr %a64 + call void @finch_str_drop(ptr %a64) + %t65 = load { ptr, i64, i64 }, ptr %a61 + %t66 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t65, ptr %a68 + store { ptr, i64, i64 } %t66, ptr %a69 + call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) + store { ptr, i64, i64 } %t65, ptr %a70 + call void @finch_str_drop(ptr %a70) + %t71 = load { ptr, i64, i64 }, ptr %a67 + store { ptr, i64, i64 } %t71, ptr %a73 + store { ptr, i64, i64 } { ptr @.str.26, i64 1, i64 0 }, ptr %a74 + call void @finch_str_concat(ptr %a72, ptr %a73, ptr %a74) + store { ptr, i64, i64 } %t71, ptr %a75 + call void @finch_str_drop(ptr %a75) + %t76 = load { ptr, i64, i64 }, ptr %a72 + %t77 = load ptr, ptr %a1 + %t78 = icmp eq ptr %t77, null + br i1 %t78, label %panic42, label %ok43 panic42: - call void @finch_panic(ptr @.str.27, i64 66, ptr @.str.28) + call void @finch_panic(ptr @.str.27, i64 68, ptr @.str.28) unreachable 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 - 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.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 + %t79 = getelementptr inbounds %S.main.Loader, ptr %t77, i32 0, i32 3 + %t80 = load { ptr, i64, i64 }, ptr %t79 + store { ptr, i64, i64 } %t76, ptr %a82 + store { ptr, i64, i64 } %t80, ptr %a83 + call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) + store { ptr, i64, i64 } %t76, ptr %a84 + call void @finch_str_drop(ptr %a84) + %t85 = load { ptr, i64, i64 }, ptr %a81 + store { ptr, i64, i64 } %t85, ptr %a87 + store { ptr, i64, i64 } { ptr @.str.29, i64 4, i64 0 }, ptr %a88 + call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) + store { ptr, i64, i64 } %t85, ptr %a89 + call void @finch_str_drop(ptr %a89) + %t90 = load { ptr, i64, i64 }, ptr %a86 + call void @finch_str_drop(ptr %a22) + ret { ptr, i64, i64 } %t90 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 %then44, label %endif46 + %t91 = load { ptr, i64, i64 }, ptr %a22 + store { ptr, i64, i64 } %t91, ptr %a92 + %t93 = call i32 @finch_file_exists(ptr %a92) + %t94 = icmp ne i32 %t93, 0 + br i1 %t94, 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 + %t95 = load { ptr, i64, i64 }, ptr %a22 + ret { ptr, i64, i64 } %t95 endif46: - %t85 = load ptr, ptr %a1 - %t86 = icmp eq ptr %t85, null - br i1 %t86, label %panic47, label %ok48 + %t96 = load ptr, ptr %a1 + %t97 = icmp eq ptr %t96, null + br i1 %t97, label %panic47, label %ok48 panic47: - call void @finch_panic(ptr @.str.30, i64 71, ptr @.str.31) + call void @finch_panic(ptr @.str.30, i64 73, ptr @.str.31) unreachable ok48: - %t87 = getelementptr inbounds %S.main.Loader, ptr %t85, i32 0, i32 5 - store i64 0, ptr %a88 + %t98 = getelementptr inbounds %S.main.Loader, ptr %t96, i32 0, i32 5 + store i64 0, ptr %a99 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.body50, label %each.end52 + %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.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.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 - store { ptr, i64, i64 } %t101, 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.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 %panic53, label %ok54 + %t104 = load ptr, ptr %t98 + %t105 = getelementptr inbounds { ptr, i64, i64 }, ptr %t104, i64 %t102 + %t106 = load { ptr, i64, i64 }, ptr %t105 + store { ptr, i64, i64 } %t106, ptr %a107 + %t108 = load { ptr, i64, i64 }, ptr %a107 + store { ptr, i64, i64 } %t108, ptr %a110 + store { ptr, i64, i64 } { ptr @.str.32, i64 1, 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 %a3 + store { ptr, i64, i64 } %t112, ptr %a115 + store { ptr, i64, i64 } %t113, ptr %a116 + call void @finch_str_concat(ptr %a114, ptr %a115, ptr %a116) + store { ptr, i64, i64 } %t112, ptr %a117 + call void @finch_str_drop(ptr %a117) + %t118 = load { ptr, i64, i64 }, ptr %a114 + store { ptr, i64, i64 } %t118, ptr %a120 + store { ptr, i64, i64 } { ptr @.str.33, i64 1, i64 0 }, ptr %a121 + call void @finch_str_concat(ptr %a119, ptr %a120, ptr %a121) + store { ptr, i64, i64 } %t118, ptr %a122 + call void @finch_str_drop(ptr %a122) + %t123 = load { ptr, i64, i64 }, ptr %a119 + %t124 = load ptr, ptr %a1 + %t125 = icmp eq ptr %t124, null + br i1 %t125, label %panic53, label %ok54 panic53: - call void @finch_panic(ptr @.str.34, i64 72, ptr @.str.35) + call void @finch_panic(ptr @.str.34, i64 74, ptr @.str.35) unreachable 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 - store { ptr, i64, i64 } %t114, 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 %a120 - 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 %then55, label %endif57 + %t126 = getelementptr inbounds %S.main.Loader, ptr %t124, i32 0, i32 3 + %t127 = load { ptr, i64, i64 }, ptr %t126 + store { ptr, i64, i64 } %t123, ptr %a129 + store { ptr, i64, i64 } %t127, ptr %a130 + call void @finch_str_concat(ptr %a128, ptr %a129, ptr %a130) + store { ptr, i64, i64 } %t123, ptr %a131 + call void @finch_str_drop(ptr %a131) + %t132 = load { ptr, i64, i64 }, ptr %a128 + store { ptr, i64, i64 } %t132, ptr %a134 + store { ptr, i64, i64 } { ptr @.str.36, i64 4, i64 0 }, ptr %a135 + call void @finch_str_concat(ptr %a133, ptr %a134, ptr %a135) + store { ptr, i64, i64 } %t132, ptr %a136 + call void @finch_str_drop(ptr %a136) + %t137 = load { ptr, i64, i64 }, ptr %a133 + store { ptr, i64, i64 } %t137, ptr %a138 + %t139 = call i32 @finch_file_exists(ptr %a138) + store { ptr, i64, i64 } %t137, ptr %a140 + call void @finch_str_drop(ptr %a140) + %t141 = icmp ne i32 %t139, 0 + br i1 %t141, 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.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 - store { ptr, i64, i64 } %t130, ptr %a133 - store { ptr, i64, i64 } %t131, ptr %a134 - 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.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 %panic58, label %ok59 + %t142 = load { ptr, i64, i64 }, ptr %a107 + store { ptr, i64, i64 } %t142, ptr %a144 + store { ptr, i64, i64 } { ptr @.str.37, i64 1, i64 0 }, ptr %a145 + call void @finch_str_concat(ptr %a143, ptr %a144, ptr %a145) + %t146 = load { ptr, i64, i64 }, ptr %a143 + %t147 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t146, ptr %a149 + store { ptr, i64, i64 } %t147, ptr %a150 + call void @finch_str_concat(ptr %a148, ptr %a149, ptr %a150) + store { ptr, i64, i64 } %t146, ptr %a151 + call void @finch_str_drop(ptr %a151) + %t152 = load { ptr, i64, i64 }, ptr %a148 + store { ptr, i64, i64 } %t152, ptr %a154 + store { ptr, i64, i64 } { ptr @.str.38, i64 1, i64 0 }, ptr %a155 + call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155) + store { ptr, i64, i64 } %t152, ptr %a156 + call void @finch_str_drop(ptr %a156) + %t157 = load { ptr, i64, i64 }, ptr %a153 + %t158 = load ptr, ptr %a1 + %t159 = icmp eq ptr %t158, null + br i1 %t159, label %panic58, label %ok59 panic58: - call void @finch_panic(ptr @.str.39, i64 73, ptr @.str.40) + call void @finch_panic(ptr @.str.39, i64 75, ptr @.str.40) unreachable 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 - store { ptr, i64, i64 } %t143, ptr %a146 - 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.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 -endif57: - %t152 = load { ptr, i64, i64 }, ptr %a96 - store { ptr, i64, i64 } %t152, ptr %a154 - 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 - store { ptr, i64, i64 } %t156, 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.43, i64 4, i64 0 }, ptr %a164 + %t160 = getelementptr inbounds %S.main.Loader, ptr %t158, i32 0, i32 3 + %t161 = load { ptr, i64, i64 }, ptr %t160 + store { ptr, i64, i64 } %t157, 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 %a166 - %t167 = call i32 @finch_file_exists(ptr %a166) - %t168 = icmp ne i32 %t167, 0 - br i1 %t168, label %then60, label %endif62 + store { ptr, i64, i64 } %t157, ptr %a165 + call void @finch_str_drop(ptr %a165) + %t166 = load { ptr, i64, i64 }, ptr %a162 + store { ptr, i64, i64 } %t166, ptr %a168 + store { ptr, i64, i64 } { ptr @.str.41, i64 4, i64 0 }, ptr %a169 + call void @finch_str_concat(ptr %a167, ptr %a168, ptr %a169) + store { ptr, i64, i64 } %t166, ptr %a170 + call void @finch_str_drop(ptr %a170) + %t171 = load { ptr, i64, i64 }, ptr %a167 + call void @finch_str_drop(ptr %a22) + ret { ptr, i64, i64 } %t171 +endif57: + %t172 = load { ptr, i64, i64 }, ptr %a107 + store { ptr, i64, i64 } %t172, ptr %a174 + store { ptr, i64, i64 } { ptr @.str.42, i64 1, 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 %a3 + store { ptr, i64, i64 } %t176, ptr %a179 + store { ptr, i64, i64 } %t177, ptr %a180 + call void @finch_str_concat(ptr %a178, ptr %a179, ptr %a180) + store { ptr, i64, i64 } %t176, ptr %a181 + call void @finch_str_drop(ptr %a181) + %t182 = load { ptr, i64, i64 }, ptr %a178 + store { ptr, i64, i64 } %t182, ptr %a184 + store { ptr, i64, i64 } { ptr @.str.43, i64 4, i64 0 }, ptr %a185 + call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) + store { ptr, i64, i64 } %t182, ptr %a186 + call void @finch_str_drop(ptr %a186) + %t187 = load { ptr, i64, i64 }, ptr %a183 + store { ptr, i64, i64 } %t187, ptr %a188 + %t189 = call i32 @finch_file_exists(ptr %a188) + store { ptr, i64, i64 } %t187, ptr %a190 + call void @finch_str_drop(ptr %a190) + %t191 = icmp ne i32 %t189, 0 + br i1 %t191, 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.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 - store { ptr, i64, i64 } %t173, ptr %a176 - store { ptr, i64, i64 } %t174, ptr %a177 - 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.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 + %t192 = load { ptr, i64, i64 }, ptr %a107 + store { ptr, i64, i64 } %t192, ptr %a194 + store { ptr, i64, i64 } { ptr @.str.44, 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 { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t196, ptr %a199 + store { ptr, i64, i64 } %t197, ptr %a200 + call void @finch_str_concat(ptr %a198, ptr %a199, ptr %a200) + store { ptr, i64, i64 } %t196, ptr %a201 + call void @finch_str_drop(ptr %a201) + %t202 = load { ptr, i64, i64 }, ptr %a198 + store { ptr, i64, i64 } %t202, ptr %a204 + store { ptr, i64, i64 } { ptr @.str.45, i64 4, i64 0 }, ptr %a205 + call void @finch_str_concat(ptr %a203, ptr %a204, ptr %a205) + store { ptr, i64, i64 } %t202, ptr %a206 + call void @finch_str_drop(ptr %a206) + %t207 = load { ptr, i64, i64 }, ptr %a203 + call void @finch_str_drop(ptr %a22) + ret { ptr, i64, i64 } %t207 endif62: br label %each.step51 each.step51: - %t183 = load i64, ptr %a88 - %t184 = add i64 %t183, 1 - store i64 %t184, ptr %a88 + %t208 = load i64, ptr %a99 + %t209 = add i64 %t208, 1 + store i64 %t209, ptr %a99 br label %each.cond49 each.end52: - %t185 = load ptr, ptr %a1 - %t186 = icmp eq ptr %t185, null - br i1 %t186, label %panic63, label %ok64 + %t210 = load ptr, ptr %a1 + %t211 = icmp eq ptr %t210, null + br i1 %t211, label %panic63, label %ok64 panic63: - call void @finch_panic(ptr @.str.46, i64 79, ptr @.str.47) + call void @finch_panic(ptr @.str.46, i64 81, ptr @.str.47) unreachable 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 %then65, label %endif67 + %t212 = getelementptr inbounds %S.main.Loader, ptr %t210, i32 0, i32 4 + %t213 = getelementptr inbounds { ptr, i64, i64 }, ptr %t212, i32 0, i32 1 + %t214 = load i64, ptr %t213 + %t215 = icmp sgt i64 %t214, 0 + br i1 %t215, label %then65, label %endif67 then65: - %t191 = load ptr, ptr %a1 - %t192 = icmp eq ptr %t191, null - br i1 %t192, label %panic68, label %ok69 + %t216 = load ptr, ptr %a1 + %t217 = icmp eq ptr %t216, null + br i1 %t217, label %panic68, label %ok69 panic68: - call void @finch_panic(ptr @.str.48, i64 80, ptr @.str.49) + call void @finch_panic(ptr @.str.48, i64 82, ptr @.str.49) unreachable 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.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 - store { ptr, i64, i64 } %t198, 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.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 %panic70, label %ok71 + %t218 = getelementptr inbounds %S.main.Loader, ptr %t216, i32 0, i32 4 + %t219 = load { ptr, i64, i64 }, ptr %t218 + store { ptr, i64, i64 } %t219, ptr %a221 + store { ptr, i64, i64 } { ptr @.str.50, i64 1, i64 0 }, ptr %a222 + call void @finch_str_concat(ptr %a220, ptr %a221, ptr %a222) + %t223 = load { ptr, i64, i64 }, ptr %a220 + %t224 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t223, ptr %a226 + store { ptr, i64, i64 } %t224, ptr %a227 + call void @finch_str_concat(ptr %a225, ptr %a226, ptr %a227) + store { ptr, i64, i64 } %t223, ptr %a228 + call void @finch_str_drop(ptr %a228) + %t229 = load { ptr, i64, i64 }, ptr %a225 + store { ptr, i64, i64 } %t229, ptr %a231 + store { ptr, i64, i64 } { ptr @.str.51, i64 1, i64 0 }, ptr %a232 + call void @finch_str_concat(ptr %a230, ptr %a231, ptr %a232) + store { ptr, i64, i64 } %t229, ptr %a233 + call void @finch_str_drop(ptr %a233) + %t234 = load { ptr, i64, i64 }, ptr %a230 + %t235 = load ptr, ptr %a1 + %t236 = icmp eq ptr %t235, null + br i1 %t236, label %panic70, label %ok71 panic70: - call void @finch_panic(ptr @.str.52, i64 80, ptr @.str.53) + call void @finch_panic(ptr @.str.52, i64 82, ptr @.str.53) unreachable 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 - 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.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 %then72, label %endif74 + %t237 = getelementptr inbounds %S.main.Loader, ptr %t235, i32 0, i32 3 + %t238 = load { ptr, i64, i64 }, ptr %t237 + store { ptr, i64, i64 } %t234, ptr %a240 + store { ptr, i64, i64 } %t238, ptr %a241 + call void @finch_str_concat(ptr %a239, ptr %a240, ptr %a241) + store { ptr, i64, i64 } %t234, ptr %a242 + call void @finch_str_drop(ptr %a242) + %t243 = load { ptr, i64, i64 }, ptr %a239 + store { ptr, i64, i64 } %t243, ptr %a245 + store { ptr, i64, i64 } { ptr @.str.54, i64 4, i64 0 }, ptr %a246 + call void @finch_str_concat(ptr %a244, ptr %a245, ptr %a246) + store { ptr, i64, i64 } %t243, ptr %a247 + call void @finch_str_drop(ptr %a247) + %t248 = load { ptr, i64, i64 }, ptr %a244 + store { ptr, i64, i64 } %t248, ptr %a249 + %t250 = call i32 @finch_file_exists(ptr %a249) + store { ptr, i64, i64 } %t248, ptr %a251 + call void @finch_str_drop(ptr %a251) + %t252 = icmp ne i32 %t250, 0 + br i1 %t252, label %then72, label %endif74 then72: - %t223 = load ptr, ptr %a1 - %t224 = icmp eq ptr %t223, null - br i1 %t224, label %panic75, label %ok76 + %t253 = load ptr, ptr %a1 + %t254 = icmp eq ptr %t253, null + br i1 %t254, label %panic75, label %ok76 panic75: - call void @finch_panic(ptr @.str.55, i64 81, ptr @.str.56) + call void @finch_panic(ptr @.str.55, i64 83, ptr @.str.56) unreachable 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.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 - store { ptr, i64, i64 } %t230, 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.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 %panic77, label %ok78 -panic77: - call void @finch_panic(ptr @.str.59, i64 81, ptr @.str.60) - unreachable -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 - 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.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 -endif74: - %t252 = load ptr, ptr %a1 - %t253 = icmp eq ptr %t252, null - br i1 %t253, label %panic79, label %ok80 -panic79: - call void @finch_panic(ptr @.str.62, i64 83, ptr @.str.63) - unreachable -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.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 - store { ptr, i64, i64 } %t259, ptr %a262 + %t255 = getelementptr inbounds %S.main.Loader, ptr %t253, i32 0, i32 4 + %t256 = load { ptr, i64, i64 }, ptr %t255 + store { ptr, i64, i64 } %t256, ptr %a258 + store { ptr, i64, i64 } { ptr @.str.57, 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 { ptr, i64, i64 }, ptr %a3 store { ptr, i64, i64 } %t260, ptr %a263 - 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.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 %then81, label %endif83 -then81: + store { ptr, i64, i64 } %t261, ptr %a264 + call void @finch_str_concat(ptr %a262, ptr %a263, ptr %a264) + store { ptr, i64, i64 } %t260, ptr %a265 + call void @finch_str_drop(ptr %a265) + %t266 = load { ptr, i64, i64 }, ptr %a262 + store { ptr, i64, i64 } %t266, ptr %a268 + store { ptr, i64, i64 } { ptr @.str.58, i64 1, i64 0 }, ptr %a269 + call void @finch_str_concat(ptr %a267, ptr %a268, ptr %a269) + store { ptr, i64, i64 } %t266, ptr %a270 + call void @finch_str_drop(ptr %a270) + %t271 = load { ptr, i64, i64 }, ptr %a267 %t272 = load ptr, ptr %a1 %t273 = icmp eq ptr %t272, null - br i1 %t273, label %panic84, label %ok85 + br i1 %t273, label %panic77, label %ok78 +panic77: + call void @finch_panic(ptr @.str.59, i64 83, ptr @.str.60) + unreachable +ok78: + %t274 = getelementptr inbounds %S.main.Loader, ptr %t272, i32 0, i32 3 + %t275 = load { ptr, i64, i64 }, ptr %t274 + store { ptr, i64, i64 } %t271, ptr %a277 + store { ptr, i64, i64 } %t275, ptr %a278 + call void @finch_str_concat(ptr %a276, ptr %a277, ptr %a278) + store { ptr, i64, i64 } %t271, ptr %a279 + call void @finch_str_drop(ptr %a279) + %t280 = load { ptr, i64, i64 }, ptr %a276 + store { ptr, i64, i64 } %t280, ptr %a282 + store { ptr, i64, i64 } { ptr @.str.61, i64 4, i64 0 }, ptr %a283 + call void @finch_str_concat(ptr %a281, ptr %a282, ptr %a283) + store { ptr, i64, i64 } %t280, ptr %a284 + call void @finch_str_drop(ptr %a284) + %t285 = load { ptr, i64, i64 }, ptr %a281 + call void @finch_str_drop(ptr %a22) + ret { ptr, i64, i64 } %t285 +endif74: + %t286 = load ptr, ptr %a1 + %t287 = icmp eq ptr %t286, null + br i1 %t287, label %panic79, label %ok80 +panic79: + call void @finch_panic(ptr @.str.62, i64 85, ptr @.str.63) + unreachable +ok80: + %t288 = getelementptr inbounds %S.main.Loader, ptr %t286, i32 0, i32 4 + %t289 = load { ptr, i64, i64 }, ptr %t288 + store { ptr, i64, i64 } %t289, ptr %a291 + store { ptr, i64, i64 } { ptr @.str.64, 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 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t293, ptr %a296 + store { ptr, i64, i64 } %t294, ptr %a297 + call void @finch_str_concat(ptr %a295, ptr %a296, ptr %a297) + store { ptr, i64, i64 } %t293, ptr %a298 + call void @finch_str_drop(ptr %a298) + %t299 = load { ptr, i64, i64 }, ptr %a295 + store { ptr, i64, i64 } %t299, ptr %a301 + store { ptr, i64, i64 } { ptr @.str.65, i64 4, i64 0 }, ptr %a302 + call void @finch_str_concat(ptr %a300, ptr %a301, ptr %a302) + store { ptr, i64, i64 } %t299, ptr %a303 + call void @finch_str_drop(ptr %a303) + %t304 = load { ptr, i64, i64 }, ptr %a300 + store { ptr, i64, i64 } %t304, ptr %a305 + %t306 = call i32 @finch_file_exists(ptr %a305) + store { ptr, i64, i64 } %t304, ptr %a307 + call void @finch_str_drop(ptr %a307) + %t308 = icmp ne i32 %t306, 0 + br i1 %t308, label %then81, label %endif83 +then81: + %t309 = load ptr, ptr %a1 + %t310 = icmp eq ptr %t309, null + br i1 %t310, label %panic84, label %ok85 panic84: - call void @finch_panic(ptr @.str.66, i64 84, ptr @.str.67) + call void @finch_panic(ptr @.str.66, i64 86, ptr @.str.67) unreachable 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.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 - store { ptr, i64, i64 } %t279, 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.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 + %t311 = getelementptr inbounds %S.main.Loader, ptr %t309, i32 0, i32 4 + %t312 = load { ptr, i64, i64 }, ptr %t311 + store { ptr, i64, i64 } %t312, ptr %a314 + store { ptr, i64, i64 } { ptr @.str.68, 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) + store { ptr, i64, i64 } %t316, ptr %a321 + call void @finch_str_drop(ptr %a321) + %t322 = load { ptr, i64, i64 }, ptr %a318 + store { ptr, i64, i64 } %t322, ptr %a324 + store { ptr, i64, i64 } { ptr @.str.69, i64 4, i64 0 }, ptr %a325 + call void @finch_str_concat(ptr %a323, ptr %a324, ptr %a325) + store { ptr, i64, i64 } %t322, ptr %a326 + call void @finch_str_drop(ptr %a326) + %t327 = load { ptr, i64, i64 }, ptr %a323 + call void @finch_str_drop(ptr %a22) + ret { ptr, i64, i64 } %t327 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) - %t292 = load { ptr, i64, i64 }, ptr %a291 - ret { ptr, i64, i64 } %t292 + %t328 = load { ptr, i64, i64 }, ptr %a22 + ret { ptr, i64, i64 } %t328 +} + +define internal void @finch.drop.S_lexer_Token(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.lexer.Token, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.lexer.Token, ptr %a, i32 0, i32 1 + call void @finch_str_drop(ptr %t2) + ret void +} + +define internal void @finch.drop.arr_S_lexer_Token(ptr %a) { +entry: + %a4 = alloca i64, align 16 + %t1 = load ptr, ptr %a + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 + %t3 = load i64, ptr %t2 + store i64 0, ptr %a4 + br label %n.cond107 +n.cond107: + %t5 = load i64, ptr %a4 + %t6 = icmp slt i64 %t5, %t3 + br i1 %t6, label %n.body108, label %n.end109 +n.body108: + %t7 = getelementptr inbounds %S.lexer.Token, ptr %t1, i64 %t5 + call void @finch.drop.S_lexer_Token(ptr %t7) + %t8 = load i64, ptr %a4 + %t9 = add i64 %t8, 1 + store i64 %t9, ptr %a4 + br label %n.cond107 +n.end109: + call void @finch_arr_free(ptr %a) + ret void } define internal void @finch.copy.arr_str(ptr %dst, ptr %src) { @@ -8121,20 +8514,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.cond107 -n.cond107: + br label %n.cond110 +n.cond110: %t6 = load i64, ptr %a5 %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body108, label %n.end109 -n.body108: + br i1 %t7, label %n.body111, label %n.end112 +n.body111: %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.cond107 -n.end109: + br label %n.cond110 +n.end112: ret void } @@ -8147,20 +8540,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.cond115 -n.cond115: + br label %n.cond118 +n.cond118: %t6 = load i64, ptr %a5 %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body116, label %n.end117 -n.body116: + br i1 %t7, label %n.body119, label %n.end120 +n.body119: %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.cond115 -n.end117: + br label %n.cond118 +n.end120: ret void } @@ -8225,20 +8618,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.cond112 -n.cond112: + br label %n.cond115 +n.cond115: %t6 = load i64, ptr %a5 %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body113, label %n.end114 -n.body113: + br i1 %t7, label %n.body116, label %n.end117 +n.body116: %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.cond112 -n.end114: + br label %n.cond115 +n.end117: ret void } @@ -8277,6 +8670,138 @@ entry: ret void } +define internal void @finch.drop.arr_str(ptr %a) { +entry: + %a4 = alloca i64, align 16 + %t1 = load ptr, ptr %a + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 + %t3 = load i64, ptr %t2 + store i64 0, ptr %a4 + br label %n.cond137 +n.cond137: + %t5 = load i64, ptr %a4 + %t6 = icmp slt i64 %t5, %t3 + br i1 %t6, label %n.body138, label %n.end139 +n.body138: + %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1, i64 %t5 + call void @finch_str_drop(ptr %t7) + %t8 = load i64, ptr %a4 + %t9 = add i64 %t8, 1 + store i64 %t9, ptr %a4 + br label %n.cond137 +n.end139: + call void @finch_arr_free(ptr %a) + ret void +} + +define internal void @finch.drop.arr_S_ast_Type(ptr %a) { +entry: + %a4 = alloca i64, align 16 + %t1 = load ptr, ptr %a + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 + %t3 = load i64, ptr %t2 + store i64 0, ptr %a4 + br label %n.cond143 +n.cond143: + %t5 = load i64, ptr %a4 + %t6 = icmp slt i64 %t5, %t3 + br i1 %t6, label %n.body144, label %n.end145 +n.body144: + %t7 = getelementptr inbounds %S.ast.Type, ptr %t1, i64 %t5 + call void @finch.drop.S_ast_Type(ptr %t7) + %t8 = load i64, ptr %a4 + %t9 = add i64 %t8, 1 + store i64 %t9, ptr %a4 + br label %n.cond143 +n.end145: + call void @finch_arr_free(ptr %a) + ret void +} + +define internal void @finch.drop.S_ast_Type(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.ast.Type, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.ast.Type, ptr %a, i32 0, i32 1 + call void @finch.drop.arr_S_ast_Type(ptr %t2) + %t3 = getelementptr inbounds %S.ast.Type, ptr %a, i32 0, i32 2 + call void @finch_str_drop(ptr %t3) + %t4 = getelementptr inbounds %S.ast.Type, ptr %a, i32 0, i32 3 + call void @finch_str_drop(ptr %t4) + ret void +} + +define internal void @finch.drop.S_ast_Node(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.ast.Node, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.ast.Node, ptr %a, i32 0, i32 1 + call void @finch_str_drop(ptr %t2) + %t3 = getelementptr inbounds %S.ast.Node, ptr %a, i32 0, i32 2 + call void @finch_str_drop(ptr %t3) + %t4 = getelementptr inbounds %S.ast.Node, ptr %a, i32 0, i32 3 + call void @finch.drop.arr_str(ptr %t4) + %t5 = getelementptr inbounds %S.ast.Node, ptr %a, i32 0, i32 4 + call void @finch_str_drop(ptr %t5) + %t6 = getelementptr inbounds %S.ast.Node, ptr %a, i32 0, i32 5 + call void @finch.drop.S_ast_Type(ptr %t6) + %t7 = getelementptr inbounds %S.ast.Node, ptr %a, i32 0, i32 9 + call void @finch.drop.arr_S_ast_Node(ptr %t7) + %t8 = getelementptr inbounds %S.ast.Node, ptr %a, i32 0, i32 10 + call void @finch.drop.arr_str(ptr %t8) + ret void +} + +define internal void @finch.drop.arr_S_ast_Node(ptr %a) { +entry: + %a4 = alloca i64, align 16 + %t1 = load ptr, ptr %a + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 + %t3 = load i64, ptr %t2 + store i64 0, ptr %a4 + br label %n.cond140 +n.cond140: + %t5 = load i64, ptr %a4 + %t6 = icmp slt i64 %t5, %t3 + br i1 %t6, label %n.body141, label %n.end142 +n.body141: + %t7 = getelementptr inbounds %S.ast.Node, ptr %t1, i64 %t5 + call void @finch.drop.S_ast_Node(ptr %t7) + %t8 = load i64, ptr %a4 + %t9 = add i64 %t8, 1 + store i64 %t9, ptr %a4 + br label %n.cond140 +n.end142: + call void @finch_arr_free(ptr %a) + ret void +} + +define internal void @finch.drop.S_ast_Program(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 1 + call void @finch_str_drop(ptr %t2) + %t3 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 2 + call void @finch.drop.arr_str(ptr %t3) + %t4 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 3 + call void @finch.drop.arr_str(ptr %t4) + %t5 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 4 + call void @finch.drop.arr_str(ptr %t5) + %t6 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 5 + call void @finch.drop.arr_str(ptr %t6) + %t7 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 6 + call void @finch.drop.arr_S_ast_Node(ptr %t7) + %t8 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 7 + call void @finch.drop.arr_S_ast_Node(ptr %t8) + %t9 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 8 + call void @finch.drop.arr_S_ast_Node(ptr %t9) + ret void +} + define internal void @finch.main.load(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2) { entry: %a1 = alloca ptr, align 16 @@ -8293,40 +8818,50 @@ entry: %a39 = 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 + %a42 = 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 %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 + %a51 = alloca { ptr, i64, i64 }, align 16 + %a52 = alloca { ptr, i64, i64 }, align 16 + %a53 = 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 - %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 + %a68 = 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 + %a86 = alloca { ptr, i64, i64 }, align 16 + %a92 = alloca i64, align 16 + %a98 = alloca { ptr, i64, i64 }, align 16 + %a99 = alloca { ptr, i64, i64 }, align 16 + %a111 = alloca { ptr, i64, i64 }, align 16 + %a112 = alloca %S.ast.Program, align 16 + %a115 = alloca { ptr, i64, i64 }, align 16 + %a116 = alloca { ptr, i64, i64 }, align 16 %a119 = alloca { ptr, i64, i64 }, align 16 - %a121 = 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 + %a122 = alloca { ptr, i64, i64 }, align 16 + %a123 = alloca { ptr, i64, i64 }, align 16 + %a126 = alloca { ptr, i64, i64 }, align 16 + %a129 = alloca { ptr, i64, i64 }, align 16 + %a130 = alloca { ptr, i64, i64 }, align 16 + %a132 = alloca { ptr, i64, i64 }, align 16 + %a138 = alloca %S.ast.Program, align 16 + %a139 = alloca %S.ast.Program, align 16 + %a145 = alloca i64, align 16 + %a153 = alloca { ptr, i64, i64 }, align 16 + %a159 = alloca i64, align 16 + %a162 = alloca i64, align 16 + %a167 = alloca { ptr, i64, i64 }, align 16 + %a168 = alloca { ptr, i64, i64 }, align 16 + %a180 = alloca { ptr, i64, i64 }, align 16 + %a181 = alloca { ptr, i64, i64 }, align 16 + %a193 = 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 @@ -8343,7 +8878,7 @@ logic.rhs87: %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) + call void @finch_panic(ptr @.str.70, i64 93, ptr @.str.71) unreachable ok90: %t11 = getelementptr inbounds %S.main.Loader, ptr %t9, i32 0, i32 6 @@ -8397,217 +8932,242 @@ then100: 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 } %t38, ptr %a42 + call void @finch_str_drop(ptr %a42) + %t43 = load { ptr, i64, i64 }, ptr %a39 + %t44 = load { ptr, i64, i64 }, ptr %a2 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) + store { ptr, i64, i64 } %t44, ptr %a47 + call void @finch_str_concat(ptr %a45, ptr %a46, ptr %a47) + store { ptr, i64, i64 } %t43, ptr %a48 + call void @finch_str_drop(ptr %a48) + %t49 = load { ptr, i64, i64 }, ptr %a45 + store { ptr, i64, i64 } %t49, ptr %a51 + store { ptr, i64, i64 } { ptr @.str.74, i64 1, i64 0 }, ptr %a52 + call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) + store { ptr, i64, i64 } %t49, ptr %a53 + call void @finch_str_drop(ptr %a53) + %t54 = load { ptr, i64, i64 }, ptr %a50 + %t55 = extractvalue { ptr, i64, i64 } %t54, 1 + %t56 = trunc i64 %t55 to i32 + %t57 = extractvalue { ptr, i64, i64 } %t54, 0 + %t58 = icmp eq ptr %t57, null + %t59 = select i1 %t58, ptr @.str.75, ptr %t57 + %t60 = call i32 (ptr, ...) @printf(ptr @.str.76, i32 %t56, ptr %t59) + store { ptr, i64, i64 } %t54, ptr %a61 + call void @finch_str_drop(ptr %a61) + %t62 = 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 + %t63 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } { ptr @.str.78, i64 19, 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 - %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) + store { ptr, i64, i64 } %t67, ptr %a69 + store { ptr, i64, i64 } { ptr @.str.79, i64 1, i64 0 }, ptr %a70 + call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70) + store { ptr, i64, i64 } %t67, ptr %a71 + call void @finch_str_drop(ptr %a71) + %t72 = load { ptr, i64, i64 }, ptr %a68 + %t73 = extractvalue { ptr, i64, i64 } %t72, 1 + %t74 = trunc i64 %t73 to i32 + %t75 = extractvalue { ptr, i64, i64 } %t72, 0 + %t76 = icmp eq ptr %t75, null + %t77 = select i1 %t76, ptr @.str.80, ptr %t75 + %t78 = call i32 (ptr, ...) @printf(ptr @.str.81, i32 %t74, ptr %t77) + store { ptr, i64, i64 } %t72, ptr %a79 + call void @finch_str_drop(ptr %a79) + %t80 = 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) + %t81 = trunc i64 1 to i32 + %t82 = call i32 @fflush(ptr null) + call void @exit(i32 %t81) 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 -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 + %t83 = load ptr, ptr %a1 + %t84 = load { ptr, i64, i64 }, ptr %a2 + %t85 = call { ptr, i64, i64 } @finch.main.textOfFile(ptr %t83, { ptr, i64, i64 } %t84) + store { ptr, i64, 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) + br i1 %t88, label %panic103, label %ok104 +panic103: + call void @finch_panic(ptr @.str.83, i64 102, ptr @.str.84) unreachable -ok106: +ok104: %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 - %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 %panic110, label %ok111 -panic110: - call void @finch_panic(ptr @.str.87, i64 106, ptr @.str.88) + %t91 = load i64, ptr %t90 + store i64 %t91, ptr %a92 + %t93 = load ptr, ptr %a1 + %t94 = icmp eq ptr %t93, null + br i1 %t94, label %panic105, label %ok106 +panic105: + call void @finch_panic(ptr @.str.85, i64 103, ptr @.str.86) unreachable -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 %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 %panic122, label %ok123 -panic122: - call void @finch_panic(ptr @.str.89, i64 108, ptr @.str.90) +ok106: + %t95 = getelementptr inbounds %S.main.Loader, ptr %t93, i32 0, i32 1 + %t96 = getelementptr inbounds { ptr, i64, i64 }, ptr %t95, i32 0, i32 1 + %t97 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t97, ptr %a98 + call void @finch_str_copy(ptr %a99, ptr %a98) + %t100 = load { ptr, i64, i64 }, ptr %a99 + %t101 = load i64, ptr %t96 + %t102 = add i64 %t101, 1 + call void @finch_arr_reserve(ptr %t95, i64 %t102, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t103 = load ptr, ptr %t95 + %t104 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i64 %t101 + store { ptr, i64, i64 } %t100, ptr %t104 + store i64 %t102, ptr %t96 + %t105 = load { ptr, i64, i64 }, ptr %a86 + %t106 = load { ptr, i64, i64 }, ptr %a2 + %t107 = call { ptr, i64, i64 } @finch.lexer.lex({ ptr, i64, i64 } %t105, { ptr, i64, i64 } %t106) + %t108 = load i64, ptr %a92 + %t109 = load { ptr, i64, i64 }, ptr %a2 + %t110 = call %S.ast.Program @finch.parser.parse({ ptr, i64, i64 } %t107, i64 %t108, { ptr, i64, i64 } %t109) + store { ptr, i64, i64 } %t107, ptr %a111 + call void @finch.drop.arr_S_lexer_Token(ptr %a111) + store %S.ast.Program %t110, ptr %a112 + %t113 = load { ptr, i64, i64 }, ptr %a3 + %t114 = getelementptr inbounds %S.ast.Program, ptr %a112, i32 0, i32 0 + store { ptr, i64, i64 } %t113, ptr %a115 + call void @finch_str_copy(ptr %a116, ptr %a115) + %t117 = load { ptr, i64, i64 }, ptr %a116 + %t118 = load { ptr, i64, i64 }, ptr %t114 + store { ptr, i64, i64 } %t117, ptr %t114 + store { ptr, i64, i64 } %t118, ptr %a119 + call void @finch_str_drop(ptr %a119) + %t120 = load { ptr, i64, i64 }, ptr %a2 + %t121 = getelementptr inbounds %S.ast.Program, ptr %a112, i32 0, i32 1 + store { ptr, i64, i64 } %t120, ptr %a122 + call void @finch_str_copy(ptr %a123, ptr %a122) + %t124 = load { ptr, i64, i64 }, ptr %a123 + %t125 = load { ptr, i64, i64 }, ptr %t121 + store { ptr, i64, i64 } %t124, ptr %t121 + store { ptr, i64, i64 } %t125, ptr %a126 + call void @finch_str_drop(ptr %a126) + %t127 = getelementptr inbounds %S.ast.Program, ptr %a112, i32 0, i32 2 + %t128 = load { ptr, i64, i64 }, ptr %t127 + store { ptr, i64, i64 } %t128, ptr %a129 + call void @finch.copy.arr_str(ptr %a130, ptr %a129) + %t131 = load { ptr, i64, i64 }, ptr %a130 + store { ptr, i64, i64 } %t131, ptr %a132 + %t133 = load ptr, ptr %a1 + %t134 = icmp eq ptr %t133, null + br i1 %t134, label %panic113, label %ok114 +panic113: + call void @finch_panic(ptr @.str.87, i64 108, ptr @.str.88) unreachable -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 %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) +ok114: + %t135 = getelementptr inbounds %S.main.Loader, ptr %t133, i32 0, i32 0 + %t136 = getelementptr inbounds { ptr, i64, i64 }, ptr %t135, i32 0, i32 1 + %t137 = load %S.ast.Program, ptr %a112 + store %S.ast.Program %t137, ptr %a138 + call void @finch.copy.S_ast_Program(ptr %a139, ptr %a138) + %t140 = load %S.ast.Program, ptr %a139 + %t141 = load i64, ptr %t136 + %t142 = add i64 %t141, 1 + call void @finch_arr_reserve(ptr %t135, i64 %t142, i64 ptrtoint (ptr getelementptr (%S.ast.Program, ptr null, i32 1) to i64)) + %t143 = load ptr, ptr %t135 + %t144 = getelementptr inbounds %S.ast.Program, ptr %t143, i64 %t141 + store %S.ast.Program %t140, ptr %t144 + store i64 %t142, ptr %t136 + store i64 0, ptr %a145 + br label %each.cond121 +each.cond121: + %t146 = getelementptr inbounds { ptr, i64, i64 }, ptr %a132, i32 0, i32 1 + %t147 = load i64, ptr %t146 + %t148 = load i64, ptr %a145 + %t149 = icmp slt i64 %t148, %t147 + br i1 %t149, label %each.body122, label %each.end124 +each.body122: + %t150 = load ptr, ptr %a132 + %t151 = getelementptr inbounds { ptr, i64, i64 }, ptr %t150, i64 %t148 + %t152 = load { ptr, i64, i64 }, ptr %t151 + store { ptr, i64, i64 } %t152, ptr %a153 + %t154 = load ptr, ptr %a1 + %t155 = icmp eq ptr %t154, null + br i1 %t155, label %panic125, label %ok126 +panic125: + call void @finch_panic(ptr @.str.89, i64 110, ptr @.str.90) 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: +ok126: + %t156 = getelementptr inbounds %S.main.Loader, ptr %t154, i32 0, i32 2 + %t157 = getelementptr inbounds { ptr, i64, i64 }, ptr %t156, i32 0, i32 1 + %t158 = load { ptr, i64, i64 }, ptr %a153 + store i64 -1, ptr %a159 + %t160 = load i64, ptr %t157 + %t161 = load ptr, ptr %t156 + store i64 0, ptr %a162 + br label %find.cond127 +find.cond127: + %t163 = load i64, ptr %a162 + %t164 = icmp slt i64 %t163, %t160 + br i1 %t164, label %find.body128, label %find.end131 +find.body128: + %t165 = getelementptr inbounds { ptr, i64, i64 }, ptr %t161, i64 %t163 + %t166 = load { ptr, i64, i64 }, ptr %t165 + store { ptr, i64, i64 } %t166, ptr %a167 + store { ptr, i64, i64 } %t158, ptr %a168 + %t169 = call i32 @finch_str_eq(ptr %a167, ptr %a168) + %t170 = icmp ne i32 %t169, 0 + br i1 %t170, label %find.hit129, label %find.next130 +find.hit129: + store i64 %t163, ptr %a159 + br label %find.end131 +find.next130: + %t171 = add i64 %t163, 1 + store i64 %t171, ptr %a162 + br label %find.cond127 +find.end131: + %t172 = load i64, ptr %a159 + %t173 = icmp sge i64 %t172, 0 + %t174 = xor i1 %t173, true + br i1 %t174, label %then132, label %endif134 +then132: + %t175 = load ptr, ptr %a1 + %t176 = icmp eq ptr %t175, null + br i1 %t176, label %panic135, label %ok136 +panic135: + call void @finch_panic(ptr @.str.91, i64 111, ptr @.str.92) + unreachable +ok136: + %t177 = getelementptr inbounds %S.main.Loader, ptr %t175, i32 0, i32 2 + %t178 = getelementptr inbounds { ptr, i64, i64 }, ptr %t177, i32 0, i32 1 + %t179 = load { ptr, i64, i64 }, ptr %a153 + store { ptr, i64, i64 } %t179, ptr %a180 + call void @finch_str_copy(ptr %a181, ptr %a180) + %t182 = load { ptr, i64, i64 }, ptr %a181 + %t183 = load i64, ptr %t178 + %t184 = add i64 %t183, 1 + call void @finch_arr_reserve(ptr %t177, i64 %t184, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t185 = load ptr, ptr %t177 + %t186 = getelementptr inbounds { ptr, i64, i64 }, ptr %t185, i64 %t183 + store { ptr, i64, i64 } %t182, ptr %t186 + store i64 %t184, ptr %t178 + %t187 = load ptr, ptr %a1 + %t188 = load ptr, ptr %a1 + %t189 = load { ptr, i64, i64 }, ptr %a2 + %t190 = load { ptr, i64, i64 }, ptr %a153 + %t191 = call { ptr, i64, i64 } @finch.main.findModule(ptr %t188, { ptr, i64, i64 } %t189, { ptr, i64, i64 } %t190) + %t192 = load { ptr, i64, i64 }, ptr %a153 + call void @finch.main.load(ptr %t187, { ptr, i64, i64 } %t191, { ptr, i64, i64 } %t192) + store { ptr, i64, i64 } %t191, ptr %a193 + call void @finch_str_drop(ptr %a193) + br label %endif134 +endif134: + br label %each.step123 +each.step123: + %t194 = load i64, ptr %a145 + %t195 = add i64 %t194, 1 + store i64 %t195, ptr %a145 + br label %each.cond121 +each.end124: + call void @finch.drop.arr_str(ptr %a132) + call void @finch.drop.S_ast_Program(ptr %a112) + call void @finch_str_drop(ptr %a86) ret void } @@ -8711,6 +9271,298 @@ entry: ret void } +define internal { ptr, i64, i64 } @finch.main.unpack() { +entry: + %a2 = 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 + %a7 = 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 + %a16 = 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 + %a20 = alloca { ptr, i64, i64 }, align 16 + %a21 = alloca { ptr, i64, i64 }, align 16 + %a23 = alloca { ptr, i64, 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 + %a31 = alloca { ptr, i64, i64 }, align 16 + %a35 = alloca { ptr, i64, i64 }, align 16 + %a38 = alloca i64, align 16 + %a42 = alloca { ptr, i64, i64 }, align 16 + %a43 = alloca { ptr, i64, i64 }, align 16 + %a44 = 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 + %a56 = alloca { ptr, i64, i64 }, align 16 + %a59 = alloca { ptr, i64, i64 }, align 16 + %a60 = alloca { ptr, i64, i64 }, align 16 + %a62 = alloca { ptr, i64, i64 }, align 16 + %a63 = alloca { ptr, i64, i64 }, align 16 + %a64 = alloca { ptr, i64, i64 }, align 16 + %a73 = alloca { ptr, i64, i64 }, align 16 + %a74 = alloca { ptr, i64, i64 }, align 16 + %a75 = alloca { ptr, i64, i64 }, align 16 + %a76 = 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 + %a93 = alloca { ptr, i64, i64 }, align 16 + %a94 = alloca { ptr, i64, i64 }, align 16 + %a95 = 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 + %t1 = call { ptr, i64, i64 } @finch.embedded.names() + store { ptr, i64, i64 } %t1, ptr %a2 + %t3 = call { ptr, i64, i64 } @finch.host.cacheDir() + store { ptr, i64, i64 } %t3, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.145, i64 7, i64 0 }, ptr %a6 + call void @finch_str_concat(ptr %a4, ptr %a5, ptr %a6) + store { ptr, i64, i64 } %t3, ptr %a7 + call void @finch_str_drop(ptr %a7) + %t8 = load { ptr, i64, i64 }, ptr %a4 + %t9 = call { ptr, i64, i64 } @finch.embedded.texts() + store { ptr, i64, i64 } %t9, ptr %a10 + %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %a10, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.146, i64 1, i64 0 }, ptr %a12 + call void @finch_str_join(ptr %a13, ptr %a10, ptr %a12) + %t14 = load { ptr, i64, i64 }, ptr %a13 + call void @finch.drop.arr_str(ptr %a10) + %t15 = call { ptr, i64, i64 } @finch.linker.fingerprint({ ptr, i64, i64 } %t14) + store { ptr, i64, i64 } %t14, ptr %a16 + call void @finch_str_drop(ptr %a16) + store { ptr, i64, i64 } %t8, ptr %a18 + store { ptr, i64, i64 } %t15, ptr %a19 + call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) + store { ptr, i64, i64 } %t8, ptr %a20 + call void @finch_str_drop(ptr %a20) + store { ptr, i64, i64 } %t15, ptr %a21 + call void @finch_str_drop(ptr %a21) + %t22 = load { ptr, i64, i64 }, ptr %a17 + store { ptr, i64, i64 } %t22, ptr %a23 + %t24 = load { ptr, i64, i64 }, ptr %a23 + store { ptr, i64, i64 } %t24, ptr %a26 + store { ptr, i64, i64 } { ptr @.str.147, i64 5, i64 0 }, 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 %a29 + %t30 = call i32 @finch_file_exists(ptr %a29) + store { ptr, i64, i64 } %t28, ptr %a31 + call void @finch_str_drop(ptr %a31) + %t32 = icmp ne i32 %t30, 0 + br i1 %t32, label %then146, label %endif148 +then146: + %t33 = load { ptr, i64, i64 }, ptr %a23 + call void @finch.drop.arr_str(ptr %a2) + ret { ptr, i64, i64 } %t33 +endif148: + %t34 = call { ptr, i64, i64 } @finch.embedded.texts() + store { ptr, i64, i64 } %t34, ptr %a35 + %t36 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t37 = load i64, ptr %t36 + store i64 0, ptr %a38 + br label %for.cond149 +for.cond149: + %t39 = load i64, ptr %a38 + %t40 = icmp slt i64 %t39, %t37 + br i1 %t40, label %for.body150, label %for.end152 +for.body150: + %t41 = load { ptr, i64, i64 }, ptr %a23 + store { ptr, i64, i64 } %t41, ptr %a43 + store { ptr, i64, i64 } { ptr @.str.148, 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 = load i64, ptr %a38 + %t47 = load { ptr, i64, i64 }, ptr %a2 + %t48 = extractvalue { ptr, i64, i64 } %t47, 1 + %t49 = icmp uge i64 %t46, %t48 + br i1 %t49, label %range153, label %inrange154 +range153: + call void @finch_panic_index(ptr @.str.149, i64 144, i64 %t46, i64 %t48) + unreachable +inrange154: + %t50 = extractvalue { ptr, i64, i64 } %t47, 0 + %t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %t50, i64 %t46 + %t52 = load { ptr, i64, i64 }, ptr %t51 + store { ptr, i64, i64 } %t45, ptr %a54 + store { ptr, i64, i64 } %t52, ptr %a55 + call void @finch_str_concat(ptr %a53, ptr %a54, ptr %a55) + store { ptr, i64, i64 } %t45, ptr %a56 + call void @finch_str_drop(ptr %a56) + %t57 = load { ptr, i64, i64 }, ptr %a53 + %t58 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t57) + store { ptr, i64, i64 } %t57, ptr %a59 + call void @finch_str_drop(ptr %a59) + call void @finch.host.makeDirs({ ptr, i64, i64 } %t58) + store { ptr, i64, i64 } %t58, ptr %a60 + call void @finch_str_drop(ptr %a60) + %t61 = load { ptr, i64, i64 }, ptr %a23 + store { ptr, i64, i64 } %t61, ptr %a63 + store { ptr, i64, i64 } { ptr @.str.150, i64 1, i64 0 }, ptr %a64 + call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) + %t65 = load { ptr, i64, i64 }, ptr %a62 + %t66 = load i64, ptr %a38 + %t67 = load { ptr, i64, i64 }, ptr %a2 + %t68 = extractvalue { ptr, i64, i64 } %t67, 1 + %t69 = icmp uge i64 %t66, %t68 + br i1 %t69, label %range155, label %inrange156 +range155: + call void @finch_panic_index(ptr @.str.151, i64 145, i64 %t66, i64 %t68) + unreachable +inrange156: + %t70 = extractvalue { ptr, i64, i64 } %t67, 0 + %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %t70, i64 %t66 + %t72 = load { ptr, i64, i64 }, ptr %t71 + store { ptr, i64, i64 } %t65, ptr %a74 + store { ptr, i64, i64 } %t72, ptr %a75 + call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) + store { ptr, i64, i64 } %t65, ptr %a76 + call void @finch_str_drop(ptr %a76) + %t77 = load { ptr, i64, i64 }, ptr %a73 + %t78 = load i64, ptr %a38 + %t79 = load { ptr, i64, i64 }, ptr %a35 + %t80 = extractvalue { ptr, i64, i64 } %t79, 1 + %t81 = icmp uge i64 %t78, %t80 + br i1 %t81, label %range157, label %inrange158 +range157: + call void @finch_panic_index(ptr @.str.152, i64 145, i64 %t78, i64 %t80) + unreachable +inrange158: + %t82 = extractvalue { ptr, i64, i64 } %t79, 0 + %t83 = getelementptr inbounds { ptr, i64, i64 }, ptr %t82, i64 %t78 + %t84 = load { ptr, i64, i64 }, ptr %t83 + store { ptr, i64, i64 } %t77, ptr %a85 + store { ptr, i64, i64 } %t84, ptr %a86 + %t87 = call i32 @finch_write_file(ptr %a85, ptr %a86) + store { ptr, i64, i64 } %t77, ptr %a88 + call void @finch_str_drop(ptr %a88) + %t89 = icmp ne i32 %t87, 0 + br label %for.step151 +for.step151: + %t90 = load i64, ptr %a38 + %t91 = add i64 %t90, 1 + store i64 %t91, ptr %a38 + br label %for.cond149 +for.end152: + %t92 = load { ptr, i64, i64 }, ptr %a23 + store { ptr, i64, i64 } %t92, ptr %a94 + store { ptr, i64, i64 } { ptr @.str.153, i64 5, i64 0 }, 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 %a97 + store { ptr, i64, i64 } { ptr @.str.154, i64 0, i64 0 }, ptr %a98 + %t99 = call i32 @finch_write_file(ptr %a97, ptr %a98) + store { ptr, i64, i64 } %t96, ptr %a100 + call void @finch_str_drop(ptr %a100) + %t101 = icmp ne i32 %t99, 0 + %t102 = load { ptr, i64, i64 }, ptr %a23 + call void @finch.drop.arr_str(ptr %a35) + call void @finch.drop.arr_str(ptr %a2) + ret { ptr, i64, i64 } %t102 +} + +define internal void @finch.drop.S_cimport_Header(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.cimport.Header, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.cimport.Header, ptr %a, i32 0, i32 1 + call void @finch_str_drop(ptr %t2) + ret void +} + +define internal void @finch.drop.arr_S_cimport_Header(ptr %a) { +entry: + %a4 = alloca i64, align 16 + %t1 = load ptr, ptr %a + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 + %t3 = load i64, ptr %t2 + store i64 0, ptr %a4 + br label %n.cond399 +n.cond399: + %t5 = load i64, ptr %a4 + %t6 = icmp slt i64 %t5, %t3 + br i1 %t6, label %n.body400, label %n.end401 +n.body400: + %t7 = getelementptr inbounds %S.cimport.Header, ptr %t1, i64 %t5 + call void @finch.drop.S_cimport_Header(ptr %t7) + %t8 = load i64, ptr %a4 + %t9 = add i64 %t8, 1 + store i64 %t9, ptr %a4 + br label %n.cond399 +n.end401: + call void @finch_arr_free(ptr %a) + ret void +} + +define internal void @finch.drop.arr_S_ast_Program(ptr %a) { +entry: + %a4 = alloca i64, align 16 + %t1 = load ptr, ptr %a + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 + %t3 = load i64, ptr %t2 + store i64 0, ptr %a4 + br label %n.cond402 +n.cond402: + %t5 = load i64, ptr %a4 + %t6 = icmp slt i64 %t5, %t3 + br i1 %t6, label %n.body403, label %n.end404 +n.body403: + %t7 = getelementptr inbounds %S.ast.Program, ptr %t1, i64 %t5 + call void @finch.drop.S_ast_Program(ptr %t7) + %t8 = load i64, ptr %a4 + %t9 = add i64 %t8, 1 + store i64 %t9, ptr %a4 + br label %n.cond402 +n.end404: + call void @finch_arr_free(ptr %a) + ret void +} + +define internal void @finch.drop.S_main_Loader(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.main.Loader, ptr %a, i32 0, i32 0 + call void @finch.drop.arr_S_ast_Program(ptr %t1) + %t2 = getelementptr inbounds %S.main.Loader, ptr %a, i32 0, i32 1 + call void @finch.drop.arr_str(ptr %t2) + %t3 = getelementptr inbounds %S.main.Loader, ptr %a, i32 0, i32 2 + call void @finch.drop.arr_str(ptr %t3) + %t4 = getelementptr inbounds %S.main.Loader, ptr %a, i32 0, i32 3 + call void @finch_str_drop(ptr %t4) + %t5 = getelementptr inbounds %S.main.Loader, ptr %a, i32 0, i32 4 + call void @finch_str_drop(ptr %t5) + %t6 = getelementptr inbounds %S.main.Loader, ptr %a, i32 0, i32 5 + call void @finch.drop.arr_str(ptr %t6) + %t7 = getelementptr inbounds %S.main.Loader, ptr %a, i32 0, i32 6 + call void @finch.drop.arr_str(ptr %t7) + %t8 = getelementptr inbounds %S.main.Loader, ptr %a, i32 0, i32 7 + call void @finch.drop.arr_str(ptr %t8) + ret void +} + +define internal void @finch.drop.S_platform_Target(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.platform.Target, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.platform.Target, ptr %a, i32 0, i32 6 + call void @finch_str_drop(ptr %t2) + %t3 = getelementptr inbounds %S.platform.Target, ptr %a, i32 0, i32 7 + call void @finch_str_drop(ptr %t3) + %t4 = getelementptr inbounds %S.platform.Target, ptr %a, i32 0, i32 8 + call void @finch_str_drop(ptr %t4) + ret void +} + define internal void @finch.copy.S_platform_Target(ptr %dst, ptr %src) { entry: @@ -8731,6 +9583,260 @@ entry: ret void } +define internal void @finch.drop.S_gen_Options(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.gen.Options, ptr %a, i32 0, i32 3 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.gen.Options, ptr %a, i32 0, i32 4 + call void @finch.drop.S_platform_Target(ptr %t2) + ret void +} + +define internal void @finch.drop.S_cimport_CFunc(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.cimport.CFunc, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.cimport.CFunc, ptr %a, i32 0, i32 1 + call void @finch_str_drop(ptr %t2) + %t3 = getelementptr inbounds %S.cimport.CFunc, ptr %a, i32 0, i32 2 + call void @finch.drop.S_ast_Type(ptr %t3) + %t4 = getelementptr inbounds %S.cimport.CFunc, ptr %a, i32 0, i32 3 + call void @finch.drop.arr_S_ast_Type(ptr %t4) + %t5 = getelementptr inbounds %S.cimport.CFunc, ptr %a, i32 0, i32 5 + call void @finch_str_drop(ptr %t5) + ret void +} + +define internal void @finch.drop.map_str_S_cimport_CFunc(ptr %a) { +entry: + %a3 = alloca i64, align 16 + %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 2 + %t2 = load i64, ptr %t1 + store i64 0, ptr %a3 + br label %n.cond412 +n.cond412: + %t4 = load i64, ptr %a3 + %t5 = icmp slt i64 %t4, %t2 + br i1 %t5, label %n.body413, label %n.end414 +n.body413: + %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 0 + %t7 = load ptr, ptr %t6 + %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t7, i64 %t4 + %t9 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t8, i32 0, i32 0 + %t10 = load i64, ptr %t9 + %t11 = icmp ne i64 %t10, 0 + br i1 %t11, label %entry.live415, label %entry.next416 +entry.live415: + %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t8, i32 0, i32 1 + call void @finch_str_drop(ptr %t12) + %t13 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t8, i32 0, i32 2 + call void @finch.drop.S_cimport_CFunc(ptr %t13) + br label %entry.next416 +entry.next416: + %t14 = load i64, ptr %a3 + %t15 = add i64 %t14, 1 + store i64 %t15, ptr %a3 + br label %n.cond412 +n.end414: + call void @finch_map_free(ptr %a) + ret void +} + +define internal void @finch.drop.S_cimport_CConst(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.cimport.CConst, ptr %a, i32 0, i32 3 + call void @finch_str_drop(ptr %t1) + ret void +} + +define internal void @finch.drop.map_str_S_cimport_CConst(ptr %a) { +entry: + %a3 = alloca i64, align 16 + %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 2 + %t2 = load i64, ptr %t1 + store i64 0, ptr %a3 + br label %n.cond417 +n.cond417: + %t4 = load i64, ptr %a3 + %t5 = icmp slt i64 %t4, %t2 + br i1 %t5, label %n.body418, label %n.end419 +n.body418: + %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 0 + %t7 = load ptr, ptr %t6 + %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t7, i64 %t4 + %t9 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t8, i32 0, i32 0 + %t10 = load i64, ptr %t9 + %t11 = icmp ne i64 %t10, 0 + br i1 %t11, label %entry.live420, label %entry.next421 +entry.live420: + %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t8, i32 0, i32 1 + call void @finch_str_drop(ptr %t12) + %t13 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t8, i32 0, i32 2 + call void @finch.drop.S_cimport_CConst(ptr %t13) + br label %entry.next421 +entry.next421: + %t14 = load i64, ptr %a3 + %t15 = add i64 %t14, 1 + store i64 %t15, ptr %a3 + br label %n.cond417 +n.end419: + call void @finch_map_free(ptr %a) + ret void +} + +define internal void @finch.drop.map_str_S_ast_Type(ptr %a) { +entry: + %a3 = alloca i64, align 16 + %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 2 + %t2 = load i64, ptr %t1 + store i64 0, ptr %a3 + br label %n.cond422 +n.cond422: + %t4 = load i64, ptr %a3 + %t5 = icmp slt i64 %t4, %t2 + br i1 %t5, label %n.body423, label %n.end424 +n.body423: + %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 0 + %t7 = load ptr, ptr %t6 + %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t7, i64 %t4 + %t9 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t8, i32 0, i32 0 + %t10 = load i64, ptr %t9 + %t11 = icmp ne i64 %t10, 0 + br i1 %t11, label %entry.live425, label %entry.next426 +entry.live425: + %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t8, i32 0, i32 1 + call void @finch_str_drop(ptr %t12) + %t13 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t8, i32 0, i32 2 + call void @finch.drop.S_ast_Type(ptr %t13) + br label %entry.next426 +entry.next426: + %t14 = load i64, ptr %a3 + %t15 = add i64 %t14, 1 + store i64 %t15, ptr %a3 + br label %n.cond422 +n.end424: + call void @finch_map_free(ptr %a) + ret void +} + +define internal void @finch.drop.S_cimport_CField(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.cimport.CField, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.cimport.CField, ptr %a, i32 0, i32 1 + call void @finch.drop.S_ast_Type(ptr %t2) + ret void +} + +define internal void @finch.drop.arr_S_cimport_CField(ptr %a) { +entry: + %a4 = alloca i64, align 16 + %t1 = load ptr, ptr %a + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 + %t3 = load i64, ptr %t2 + store i64 0, ptr %a4 + br label %n.cond432 +n.cond432: + %t5 = load i64, ptr %a4 + %t6 = icmp slt i64 %t5, %t3 + br i1 %t6, label %n.body433, label %n.end434 +n.body433: + %t7 = getelementptr inbounds %S.cimport.CField, ptr %t1, i64 %t5 + call void @finch.drop.S_cimport_CField(ptr %t7) + %t8 = load i64, ptr %a4 + %t9 = add i64 %t8, 1 + store i64 %t9, ptr %a4 + br label %n.cond432 +n.end434: + call void @finch_arr_free(ptr %a) + ret void +} + +define internal void @finch.drop.S_cimport_CStruct(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.cimport.CStruct, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.cimport.CStruct, ptr %a, i32 0, i32 1 + call void @finch.drop.arr_S_cimport_CField(ptr %t2) + %t3 = getelementptr inbounds %S.cimport.CStruct, ptr %a, i32 0, i32 4 + call void @finch_str_drop(ptr %t3) + ret void +} + +define internal void @finch.drop.map_str_S_cimport_CStruct(ptr %a) { +entry: + %a3 = alloca i64, align 16 + %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 2 + %t2 = load i64, ptr %t1 + store i64 0, ptr %a3 + br label %n.cond427 +n.cond427: + %t4 = load i64, ptr %a3 + %t5 = icmp slt i64 %t4, %t2 + br i1 %t5, label %n.body428, label %n.end429 +n.body428: + %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 0 + %t7 = load ptr, ptr %t6 + %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t7, i64 %t4 + %t9 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t8, i32 0, i32 0 + %t10 = load i64, ptr %t9 + %t11 = icmp ne i64 %t10, 0 + br i1 %t11, label %entry.live430, label %entry.next431 +entry.live430: + %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t8, i32 0, i32 1 + call void @finch_str_drop(ptr %t12) + %t13 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t8, i32 0, i32 2 + call void @finch.drop.S_cimport_CStruct(ptr %t13) + br label %entry.next431 +entry.next431: + %t14 = load i64, ptr %a3 + %t15 = add i64 %t14, 1 + store i64 %t15, ptr %a3 + br label %n.cond427 +n.end429: + call void @finch_map_free(ptr %a) + ret void +} + +define internal void @finch.drop.S_cimport_CImports(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.cimport.CImports, ptr %a, i32 0, i32 0 + call void @finch.drop.map_str_S_cimport_CFunc(ptr %t1) + %t2 = getelementptr inbounds %S.cimport.CImports, ptr %a, i32 0, i32 1 + call void @finch.drop.map_str_S_cimport_CConst(ptr %t2) + %t3 = getelementptr inbounds %S.cimport.CImports, ptr %a, i32 0, i32 2 + call void @finch.drop.map_str_S_ast_Type(ptr %t3) + %t4 = getelementptr inbounds %S.cimport.CImports, ptr %a, i32 0, i32 3 + call void @finch.drop.map_str_S_cimport_CStruct(ptr %t4) + %t5 = getelementptr inbounds %S.cimport.CImports, ptr %a, i32 0, i32 4 + call void @finch.drop.arr_str(ptr %t5) + ret void +} + +define internal void @finch.drop.S_linker_Build(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.linker.Build, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.linker.Build, ptr %a, i32 0, i32 1 + call void @finch_str_drop(ptr %t2) + %t3 = getelementptr inbounds %S.linker.Build, ptr %a, i32 0, i32 2 + call void @finch_str_drop(ptr %t3) + %t4 = getelementptr inbounds %S.linker.Build, ptr %a, i32 0, i32 3 + call void @finch_str_drop(ptr %t4) + %t5 = getelementptr inbounds %S.linker.Build, ptr %a, i32 0, i32 4 + call void @finch_str_drop(ptr %t5) + %t6 = getelementptr inbounds %S.linker.Build, ptr %a, i32 0, i32 6 + call void @finch.drop.arr_str(ptr %t6) + ret void +} + define internal i64 @finch.main.main({ ptr, i64, i64 } %p0) { entry: %a1 = alloca { ptr, i64, i64 }, align 16 @@ -8779,350 +9885,406 @@ entry: %a161 = 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 - %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 - %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 - %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 - %a292 = 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 + %a177 = alloca { ptr, i64, i64 }, align 16 + %a181 = alloca { ptr, i64, i64 }, align 16 + %a182 = alloca { ptr, i64, i64 }, align 16 + %a186 = alloca { ptr, i64, i64 }, align 16 + %a187 = alloca { ptr, i64, i64 }, align 16 + %a192 = alloca { ptr, i64, i64 }, align 16 + %a193 = alloca { ptr, i64, i64 }, align 16 + %a197 = alloca { ptr, i64, i64 }, align 16 + %a199 = alloca { ptr, i64, i64 }, align 16 + %a200 = alloca { ptr, i64, i64 }, align 16 + %a218 = alloca { ptr, i64, i64 }, align 16 + %a219 = 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 + %a239 = alloca { ptr, i64, i64 }, align 16 + %a240 = alloca { ptr, i64, i64 }, align 16 + %a249 = alloca { ptr, i64, i64 }, align 16 + %a250 = alloca { ptr, i64, i64 }, align 16 + %a268 = alloca { ptr, i64, i64 }, align 16 + %a269 = alloca { ptr, i64, i64 }, align 16 + %a278 = alloca { ptr, i64, i64 }, align 16 + %a279 = alloca { ptr, i64, i64 }, align 16 + %a296 = 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 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a320 = alloca { ptr, i64, i64 }, align 16 - %a329 = alloca { ptr, i64, i64 }, align 16 - %a330 = alloca { ptr, i64, i64 }, align 16 + %a298 = alloca { ptr, i64, i64 }, align 16 + %a299 = alloca { ptr, i64, i64 }, align 16 + %a301 = alloca { ptr, i64, i64 }, align 16 + %a309 = alloca { ptr, i64, i64 }, align 16 + %a310 = alloca { ptr, i64, i64 }, align 16 + %a323 = alloca { ptr, i64, i64 }, align 16 + %a324 = 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 - %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 + %a338 = alloca { ptr, i64, i64 }, align 16 + %a339 = alloca { ptr, i64, i64 }, align 16 + %a356 = alloca { ptr, i64, i64 }, align 16 + %a357 = alloca { ptr, i64, i64 }, align 16 + %a360 = alloca { ptr, i64, i64 }, align 16 %a364 = alloca { ptr, i64, i64 }, align 16 %a365 = alloca { ptr, i64, i64 }, align 16 - %a375 = alloca %S.platform.Target, align 16 - %a377 = alloca { ptr, i64, i64 }, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 + %a370 = alloca { ptr, i64, i64 }, align 16 + %a371 = alloca { ptr, i64, i64 }, align 16 + %a381 = alloca %S.platform.Target, align 16 %a383 = alloca { ptr, i64, i64 }, align 16 %a384 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 + %a388 = 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 + %a394 = alloca { ptr, i64, i64 }, align 16 + %a396 = alloca { ptr, i64, i64 }, align 16 + %a397 = alloca { ptr, i64, i64 }, align 16 + %a398 = alloca { ptr, i64, i64 }, align 16 + %a399 = 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 + %a403 = alloca { ptr, i64, i64 }, align 16 + %a404 = alloca { ptr, i64, i64 }, align 16 + %a405 = 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 %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 + %a419 = 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 - %a429 = alloca { ptr, i64, i64 }, align 16 - %a430 = alloca { ptr, i64, i64 }, align 16 + %a423 = 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 + %a432 = alloca { ptr, i64, i64 }, align 16 + %a433 = 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 + %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 + %a447 = alloca { ptr, i64, i64 }, align 16 %a450 = alloca { ptr, i64, i64 }, align 16 + %a452 = alloca { ptr, i64, i64 }, align 16 + %a453 = alloca { ptr, i64, i64 }, align 16 + %a454 = alloca { ptr, i64, i64 }, align 16 + %a456 = 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 - %a460 = alloca { ptr, i64, i64 }, align 16 - %a461 = alloca { ptr, i64, i64 }, align 16 + %a462 = alloca { ptr, i64, i64 }, align 16 + %a468 = 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 - %a472 = alloca { ptr, i64, i64 }, align 16 - %a483 = alloca { ptr, i64, i64 }, align 16 - %a484 = alloca i64, align 16 - %a492 = alloca { ptr, i64, i64 }, align 16 + %a473 = alloca { ptr, i64, i64 }, align 16 + %a474 = alloca %S.main.Loader, align 16 + %a477 = alloca { ptr, i64, i64 }, align 16 + %a482 = alloca { ptr, i64, i64 }, align 16 + %a487 = 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 %a498 = alloca { ptr, i64, i64 }, align 16 - %a499 = alloca { ptr, i64, i64 }, align 16 - %a500 = alloca { ptr, i64, i64 }, align 16 - %a502 = alloca { ptr, i64, i64 }, align 16 + %a507 = 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 - %a516 = alloca { ptr, i64, i64 }, align 16 + %a510 = alloca { ptr, i64, i64 }, align 16 + %a519 = alloca { ptr, i64, i64 }, align 16 %a520 = alloca { ptr, i64, i64 }, align 16 %a521 = alloca { ptr, i64, i64 }, align 16 - %a527 = alloca { ptr, i64, i64 }, align 16 - %a529 = alloca { ptr, i64, i64 }, align 16 - %a530 = alloca { ptr, i64, i64 }, align 16 - %a531 = alloca { ptr, i64, i64 }, align 16 - %a532 = alloca { ptr, i64, i64 }, align 16 - %a534 = alloca { ptr, i64, i64 }, align 16 - %a535 = alloca i64, align 16 - %a543 = alloca { ptr, i64, i64 }, align 16 + %a522 = alloca { ptr, i64, i64 }, align 16 + %a533 = alloca { ptr, i64, i64 }, align 16 + %a534 = alloca i64, align 16 + %a542 = alloca { ptr, i64, i64 }, align 16 + %a548 = alloca { ptr, i64, i64 }, align 16 + %a549 = alloca { ptr, i64, i64 }, align 16 %a550 = 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 + %a559 = alloca { ptr, i64, i64 }, align 16 %a560 = alloca { ptr, i64, i64 }, align 16 - %a561 = alloca { ptr, i64, i64 }, align 16 %a563 = alloca { ptr, i64, i64 }, align 16 - %a564 = 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 %a571 = alloca { ptr, i64, i64 }, align 16 - %a573 = alloca i64, align 16 - %a581 = alloca %S.ast.Program, align 16 + %a572 = alloca { ptr, i64, i64 }, align 16 + %a573 = alloca { ptr, i64, i64 }, align 16 + %a574 = alloca { ptr, i64, i64 }, align 16 + %a578 = alloca { ptr, i64, i64 }, align 16 + %a581 = alloca { ptr, i64, i64 }, align 16 + %a582 = alloca { ptr, i64, i64 }, align 16 %a585 = alloca { ptr, i64, i64 }, align 16 - %a588 = alloca i64, align 16 - %a591 = alloca i64, align 16 - %a596 = alloca { ptr, i64, i64 }, align 16 + %a588 = alloca { ptr, i64, i64 }, align 16 + %a589 = alloca { ptr, i64, i64 }, align 16 + %a592 = alloca { ptr, i64, i64 }, align 16 %a597 = 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 %a606 = alloca { ptr, i64, i64 }, align 16 - %a607 = alloca { ptr, i64, i64 }, align 16 - %a616 = alloca i64, align 16 - %a628 = alloca i64, align 16 - %a631 = alloca i64, align 16 + %a607 = alloca i64, align 16 + %a615 = alloca { ptr, i64, i64 }, align 16 + %a622 = alloca { ptr, i64, i64 }, align 16 + %a623 = alloca { ptr, i64, i64 }, align 16 + %a632 = alloca { ptr, i64, i64 }, align 16 + %a633 = 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 - %a653 = alloca { ptr, i64, i64 }, align 16 - %a654 = alloca { ptr, i64, i64 }, align 16 + %a638 = alloca { ptr, i64, i64 }, align 16 + %a640 = alloca { ptr, i64, i64 }, align 16 + %a641 = alloca { ptr, i64, i64 }, align 16 + %a643 = alloca { ptr, i64, i64 }, align 16 + %a645 = alloca i64, align 16 + %a653 = alloca %S.ast.Program, align 16 + %a657 = alloca { ptr, i64, i64 }, align 16 + %a660 = alloca i64, align 16 + %a663 = alloca i64, align 16 + %a668 = alloca { ptr, i64, i64 }, align 16 %a669 = alloca { ptr, i64, i64 }, align 16 - %a670 = alloca { ptr, i64, i64 }, align 16 - %a681 = alloca { ptr, i64, i64 }, align 16 - %a682 = alloca { ptr, i64, i64 }, align 16 - %a692 = alloca i64, align 16 - %a700 = alloca { ptr, i64, i64 }, align 16 - %a702 = alloca { ptr, i64, i64 }, align 16 - %a703 = alloca { ptr, i64, i64 }, align 16 - %a704 = alloca { ptr, i64, i64 }, align 16 + %a678 = alloca { ptr, i64, i64 }, align 16 + %a679 = alloca { ptr, i64, i64 }, align 16 + %a688 = alloca i64, align 16 + %a700 = alloca i64, align 16 + %a703 = alloca i64, align 16 %a708 = alloca { ptr, i64, i64 }, align 16 %a709 = alloca { ptr, i64, i64 }, align 16 - %a710 = 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 - %a723 = alloca { ptr, i64, i64 }, align 16 - %a724 = alloca { ptr, i64, i64 }, align 16 %a725 = alloca { ptr, i64, i64 }, align 16 - %a728 = alloca { ptr, i64, i64 }, align 16 - %a729 = alloca { ptr, i64, i64 }, align 16 - %a730 = alloca { ptr, i64, i64 }, align 16 - %a738 = alloca { ptr, i64, i64 }, align 16 - %a739 = alloca { ptr, i64, i64 }, align 16 - %a749 = alloca { ptr, i64, i64 }, align 16 + %a726 = alloca { ptr, i64, i64 }, align 16 + %a741 = alloca { ptr, i64, i64 }, align 16 + %a742 = 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 - %a769 = alloca { ptr, i64, i64 }, align 16 - %a778 = alloca %S.cimport.CImports, align 16 + %a764 = alloca 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 + %a780 = alloca { ptr, i64, i64 }, align 16 + %a781 = alloca { ptr, i64, i64 }, align 16 + %a782 = alloca { ptr, i64, i64 }, align 16 %a787 = alloca { ptr, i64, i64 }, align 16 %a788 = alloca { ptr, i64, i64 }, align 16 - %a798 = alloca { ptr, i64, i64 }, align 16 + %a789 = 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 %a800 = alloca { ptr, i64, i64 }, align 16 %a801 = alloca { ptr, i64, i64 }, align 16 - %a805 = alloca %S.platform.Target, align 16 - %a806 = alloca %S.platform.Target, align 16 - %a810 = alloca { ptr, i64, i64 }, align 16 + %a802 = alloca { ptr, i64, i64 }, align 16 + %a803 = alloca { ptr, i64, i64 }, align 16 + %a811 = alloca { ptr, i64, i64 }, align 16 %a812 = alloca { ptr, i64, i64 }, align 16 - %a813 = alloca { ptr, i64, i64 }, align 16 - %a817 = alloca { ptr, i64, i64 }, align 16 - %a818 = alloca { ptr, i64, i64 }, align 16 - %a834 = alloca { ptr, i64, i64 }, align 16 - %a836 = alloca { ptr, i64, i64 }, align 16 - %a837 = alloca { ptr, i64, i64 }, align 16 - %a839 = alloca { ptr, i64, i64 }, align 16 - %a850 = alloca { ptr, i64, i64 }, align 16 - %a851 = alloca { ptr, i64, i64 }, align 16 - %a852 = alloca { ptr, i64, i64 }, align 16 - %a855 = alloca { ptr, i64, i64 }, align 16 - %a866 = alloca { ptr, i64, i64 }, align 16 - %a867 = alloca { ptr, i64, i64 }, align 16 - %a868 = alloca { ptr, i64, i64 }, align 16 - %a871 = alloca { ptr, i64, i64 }, align 16 - %a882 = alloca { ptr, i64, i64 }, align 16 - %a883 = alloca { ptr, i64, i64 }, align 16 - %a884 = alloca { ptr, i64, i64 }, align 16 - %a887 = alloca { ptr, i64, i64 }, align 16 - %a891 = alloca { ptr, i64, i64 }, align 16 - %a896 = alloca { ptr, i64, i64 }, align 16 + %a822 = alloca { ptr, i64, i64 }, align 16 + %a827 = alloca { ptr, i64, i64 }, align 16 + %a828 = alloca { ptr, i64, i64 }, align 16 + %a831 = alloca { ptr, i64, i64 }, align 16 + %a844 = alloca { ptr, i64, i64 }, align 16 + %a853 = alloca %S.cimport.CImports, align 16 + %a862 = alloca { ptr, i64, i64 }, align 16 + %a863 = alloca { ptr, i64, i64 }, align 16 + %a872 = alloca %S.platform.Target, align 16 + %a873 = alloca %S.platform.Target, align 16 + %a877 = alloca %S.gen.Options, align 16 + %a878 = alloca { ptr, i64, i64 }, align 16 + %a880 = alloca { ptr, i64, i64 }, align 16 + %a881 = alloca { ptr, i64, i64 }, align 16 + %a885 = alloca { ptr, i64, i64 }, align 16 + %a886 = alloca { ptr, i64, i64 }, align 16 + %a902 = alloca { ptr, i64, i64 }, align 16 + %a904 = alloca { ptr, i64, i64 }, align 16 + %a905 = alloca { ptr, i64, i64 }, align 16 %a907 = alloca { ptr, i64, i64 }, align 16 - %a911 = alloca { ptr, i64, i64 }, align 16 - %a912 = alloca { ptr, i64, i64 }, align 16 - %a913 = alloca { ptr, i64, i64 }, align 16 - %a916 = 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 + %a924 = alloca { ptr, i64, i64 }, align 16 %a926 = alloca { ptr, i64, i64 }, align 16 - %a927 = alloca { ptr, i64, i64 }, align 16 - %a931 = alloca { ptr, i64, i64 }, align 16 - %a932 = 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 + %a939 = alloca { ptr, i64, i64 }, align 16 + %a940 = alloca { ptr, i64, i64 }, align 16 %a943 = alloca { ptr, i64, i64 }, align 16 - %a944 = alloca { ptr, i64, i64 }, align 16 - %a952 = alloca { ptr, i64, i64 }, align 16 - %a953 = alloca { ptr, i64, i64 }, align 16 + %a945 = alloca { ptr, i64, i64 }, align 16 %a956 = alloca { ptr, i64, i64 }, align 16 - %a957 = alloca i64, align 16 - %a965 = alloca { ptr, i64, i64 }, align 16 - %a979 = alloca { ptr, i64, i64 }, align 16 + %a957 = alloca { ptr, i64, i64 }, align 16 + %a958 = alloca { ptr, i64, i64 }, align 16 + %a959 = alloca { ptr, i64, i64 }, align 16 + %a962 = alloca { ptr, i64, i64 }, align 16 + %a964 = alloca { ptr, i64, i64 }, align 16 + %a968 = alloca { ptr, i64, i64 }, align 16 + %a973 = alloca { ptr, i64, i64 }, align 16 + %a975 = alloca { ptr, i64, i64 }, align 16 %a980 = alloca { ptr, i64, i64 }, align 16 %a981 = alloca { ptr, i64, i64 }, align 16 + %a982 = alloca { ptr, i64, i64 }, align 16 %a983 = alloca { ptr, i64, i64 }, align 16 - %a984 = alloca { ptr, i64, i64 }, align 16 - %a985 = alloca { ptr, i64, i64 }, align 16 - %a988 = alloca { ptr, i64, i64 }, align 16 - %a989 = alloca { ptr, i64, i64 }, align 16 - %a991 = alloca { ptr, i64, i64 }, align 16 - %a992 = alloca { ptr, i64, i64 }, align 16 + %a986 = alloca { ptr, i64, i64 }, align 16 + %a987 = alloca { ptr, i64, i64 }, align 16 + %a990 = alloca { ptr, i64, i64 }, align 16 %a993 = alloca { ptr, i64, i64 }, align 16 + %a994 = alloca { ptr, i64, i64 }, align 16 %a995 = alloca { ptr, i64, i64 }, align 16 - %a996 = alloca { ptr, i64, i64 }, align 16 - %a998 = alloca i64, align 16 + %a998 = alloca { ptr, i64, i64 }, align 16 + %a1000 = 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 %a1005 = alloca { ptr, i64, i64 }, align 16 %a1006 = alloca { ptr, i64, i64 }, align 16 + %a1010 = alloca { ptr, i64, i64 }, align 16 + %a1011 = alloca { ptr, i64, i64 }, align 16 + %a1015 = alloca { ptr, i64, i64 }, align 16 + %a1016 = alloca { ptr, i64, i64 }, align 16 + %a1020 = alloca { ptr, i64, i64 }, align 16 + %a1021 = alloca { ptr, i64, i64 }, align 16 + %a1027 = alloca { ptr, i64, i64 }, align 16 + %a1028 = alloca { ptr, i64, i64 }, align 16 + %a1034 = alloca %S.linker.Build, align 16 + %a1037 = alloca { ptr, i64, i64 }, align 16 + %a1038 = alloca { ptr, i64, i64 }, align 16 + %a1041 = alloca { ptr, i64, i64 }, align 16 + %a1042 = alloca i64, align 16 + %a1050 = alloca { ptr, i64, i64 }, align 16 + %a1064 = 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 + %a1072 = alloca { ptr, i64, i64 }, align 16 + %a1075 = alloca { ptr, i64, i64 }, align 16 + %a1076 = alloca { ptr, i64, i64 }, align 16 + %a1078 = alloca { ptr, i64, i64 }, align 16 + %a1079 = alloca { ptr, i64, i64 }, align 16 + %a1080 = alloca { ptr, i64, i64 }, align 16 + %a1081 = alloca { ptr, i64, i64 }, align 16 + %a1082 = alloca { ptr, i64, i64 }, align 16 + %a1085 = alloca { ptr, i64, i64 }, align 16 + %a1086 = alloca 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.from134 -logic.from134: - br i1 %t4, label %logic.rhs135, label %logic.end136 -logic.rhs135: + br label %logic.from159 +logic.from159: + br i1 %t4, label %logic.rhs160, label %logic.end161 +logic.rhs160: %t5 = load { ptr, i64, i64 }, ptr %a1 %t6 = extractvalue { ptr, i64, i64 } %t5, 1 %t7 = icmp uge i64 1, %t6 - br i1 %t7, label %range137, label %inrange138 -range137: - call void @finch_panic_index(ptr @.str.145, i64 133, i64 1, i64 %t6) + br i1 %t7, label %range162, label %inrange163 +range162: + call void @finch_panic_index(ptr @.str.155, i64 152, i64 1, i64 %t6) unreachable -inrange138: +inrange163: %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.146, i64 7, i64 0 }, ptr %a12 + store { ptr, i64, i64 } { ptr @.str.156, 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.from139 -logic.from139: - br i1 %t14, label %logic.end141, label %logic.rhs140 -logic.rhs140: + br label %logic.from164 +logic.from164: + br i1 %t14, label %logic.end166, label %logic.rhs165 +logic.rhs165: %t15 = load { ptr, i64, i64 }, ptr %a1 %t16 = extractvalue { ptr, i64, i64 } %t15, 1 %t17 = icmp uge i64 1, %t16 - br i1 %t17, label %range142, label %inrange143 -range142: - call void @finch_panic_index(ptr @.str.147, i64 133, i64 1, i64 %t16) + br i1 %t17, label %range167, label %inrange168 +range167: + call void @finch_panic_index(ptr @.str.157, i64 152, i64 1, i64 %t16) unreachable -inrange143: +inrange168: %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.148, i64 9, i64 0 }, ptr %a22 + store { ptr, i64, i64 } { ptr @.str.158, 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.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 + br label %logic.rend169 +logic.rend169: + br label %logic.end166 +logic.end166: + %t25 = phi i1 [ true, %logic.from164 ], [ %t24, %logic.rend169 ] + br label %logic.rend170 +logic.rend170: + br label %logic.end161 +logic.end161: + %t26 = phi i1 [ false, %logic.from159 ], [ %t25, %logic.rend170 ] + br i1 %t26, label %then171, label %endif173 +then171: + %t27 = extractvalue { ptr, i64, i64 } { ptr @.str.159, i64 46, i64 0 }, 1 %t28 = trunc i64 %t27 to i32 - %t29 = extractvalue { ptr, i64, i64 } { ptr @.str.149, i64 46, i64 0 }, 0 + %t29 = extractvalue { ptr, i64, i64 } { ptr @.str.159, i64 46, i64 0 }, 0 %t30 = icmp eq ptr %t29, null - %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) + %t31 = select i1 %t30, ptr @.str.160, ptr %t29 + %t32 = call i32 (ptr, ...) @printf(ptr @.str.161, i32 %t28, ptr %t31) + %t33 = call i32 (ptr, ...) @printf(ptr @.str.162) ret i64 0 -endif148: +endif173: %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 %t35 = load i64, ptr %t34 %t36 = icmp eq i64 %t35, 2 - br label %logic.from149 -logic.from149: - br i1 %t36, label %logic.rhs150, label %logic.end151 -logic.rhs150: + br label %logic.from174 +logic.from174: + br i1 %t36, label %logic.rhs175, label %logic.end176 +logic.rhs175: %t37 = load { ptr, i64, i64 }, ptr %a1 %t38 = extractvalue { ptr, i64, i64 } %t37, 1 %t39 = icmp uge i64 1, %t38 - br i1 %t39, label %range152, label %inrange153 -range152: - call void @finch_panic_index(ptr @.str.153, i64 137, i64 1, i64 %t38) + br i1 %t39, label %range177, label %inrange178 +range177: + call void @finch_panic_index(ptr @.str.163, i64 156, i64 1, i64 %t38) unreachable -inrange153: +inrange178: %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 - store { ptr, i64, i64 } { ptr @.str.154, i64 3, i64 0 }, ptr %a44 + store { ptr, i64, i64 } { ptr @.str.164, 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: + br label %logic.rend179 +logic.rend179: + br label %logic.end176 +logic.end176: + %t47 = phi i1 [ false, %logic.from174 ], [ %t46, %logic.rend179 ] + br i1 %t47, label %then180, label %endif182 +then180: %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) + br i1 %t50, label %range183, label %inrange184 +range183: + call void @finch_panic_index(ptr @.str.165, i64 157, i64 0, i64 %t49) unreachable -inrange159: +inrange184: %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: +endif182: %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: + br i1 %t57, label %then185, label %endif187 +then185: call void @finch.main.usage() - br label %endif162 -endif162: + br label %endif187 +endif187: %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) + br i1 %t60, label %range188, label %inrange189 +range188: + call void @finch_panic_index(ptr @.str.166, i64 162, i64 1, i64 %t59) unreachable -inrange164: +inrange189: %t61 = extractvalue { ptr, i64, i64 } %t58, 0 %t62 = getelementptr inbounds { ptr, i64, i64 }, ptr %t61, i64 1 %t63 = load { ptr, i64, i64 }, ptr %t62 @@ -9133,11 +10295,11 @@ inrange164: %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.157, i64 144, i64 2, i64 %t69) + br i1 %t70, label %range190, label %inrange191 +range190: + call void @finch_panic_index(ptr @.str.167, i64 163, i64 2, i64 %t69) unreachable -inrange166: +inrange191: %t71 = extractvalue { ptr, i64, i64 } %t68, 0 %t72 = getelementptr inbounds { ptr, i64, i64 }, ptr %t71, i64 2 %t73 = load { ptr, i64, i64 }, ptr %t72 @@ -9147,87 +10309,87 @@ inrange166: 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 + store { ptr, i64, i64 } { ptr @.str.168, 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 %t82, label %logic.rhs168, label %logic.end169 -logic.rhs168: + br label %logic.from192 +logic.from192: + br i1 %t82, label %logic.rhs193, label %logic.end194 +logic.rhs193: %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 + store { ptr, i64, i64 } { ptr @.str.169, 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: - %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: + br label %logic.rend195 +logic.rend195: + br label %logic.end194 +logic.end194: + %t88 = phi i1 [ false, %logic.from192 ], [ %t87, %logic.rend195 ] + br label %logic.from196 +logic.from196: + br i1 %t88, label %logic.rhs197, label %logic.end198 +logic.rhs197: %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 + store { ptr, i64, i64 } { ptr @.str.170, 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: + br label %logic.rend199 +logic.rend199: + br label %logic.end198 +logic.end198: + %t94 = phi i1 [ false, %logic.from196 ], [ %t93, %logic.rend199 ] + br label %logic.from200 +logic.from200: + br i1 %t94, label %logic.rhs201, label %logic.end202 +logic.rhs201: %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 + store { ptr, i64, i64 } { ptr @.str.171, 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: + br label %logic.rend203 +logic.rend203: + br label %logic.end202 +logic.end202: + %t100 = phi i1 [ false, %logic.from200 ], [ %t99, %logic.rend203 ] + br i1 %t100, label %then204, label %endif206 +then204: call void @finch.main.usage() - br label %endif181 -endif181: + br label %endif206 +endif206: %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 } { ptr @.str.172, i64 0, i64 0 }, ptr %a107 + store { ptr, i64, i64 } { ptr @.str.173, 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: + br label %while.cond207 +while.cond207: %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: + br i1 %t118, label %while.body208, label %while.end209 +while.body208: %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) + br i1 %t122, label %range210, label %inrange211 +range210: + call void @finch_panic_index(ptr @.str.174, i64 180, i64 %t119, i64 %t121) unreachable -inrange186: +inrange211: %t123 = extractvalue { ptr, i64, i64 } %t120, 0 %t124 = getelementptr inbounds { ptr, i64, i64 }, ptr %t123, i64 %t119 %t125 = load { ptr, i64, i64 }, ptr %t124 @@ -9237,23 +10399,23 @@ inrange186: 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 + store { ptr, i64, i64 } { ptr @.str.175, 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: + br label %logic.from212 +logic.from212: + br i1 %t134, label %logic.rhs213, label %logic.end214 +logic.rhs213: %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: + br label %logic.rend215 +logic.rend215: + br label %logic.end214 +logic.end214: + %t138 = phi i1 [ false, %logic.from212 ], [ %t137, %logic.rend215 ] + br i1 %t138, label %then216, label %else217 +then216: %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 @@ -9266,1388 +10428,1630 @@ then191: %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: + br label %endif218 +else217: %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 + store { ptr, i64, i64 } { ptr @.str.176, 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: + br label %logic.from219 +logic.from219: + br i1 %t152, label %logic.rhs220, label %logic.end221 +logic.rhs220: %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: + br label %logic.rend222 +logic.rend222: + br label %logic.end221 +logic.end221: + %t158 = phi i1 [ false, %logic.from219 ], [ %t157, %logic.rend222 ] + br label %logic.from223 +logic.from223: + br i1 %t158, label %logic.rhs224, label %logic.end225 +logic.rhs224: %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 + store { ptr, i64, i64 } { ptr @.str.177, 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: + br label %logic.rend226 +logic.rend226: + br label %logic.end225 +logic.end225: + %t164 = phi i1 [ false, %logic.from223 ], [ %t163, %logic.rend226 ] + br i1 %t164, label %then227, label %else228 +then227: %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) + br i1 %t169, label %range230, label %inrange231 +range230: + call void @finch_panic_index(ptr @.str.178, i64 184, i64 %t166, i64 %t168) unreachable -inrange206: +inrange231: %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 + %t176 = load { ptr, i64, i64 }, ptr %a103 store { ptr, i64, i64 } %t175, ptr %a103 + store { ptr, i64, i64 } %t176, ptr %a177 + call void @finch_str_drop(ptr %a177) store i1 true, ptr %a104 - %t176 = load i64, ptr %a114 - %t177 = add i64 %t176, 1 - store i64 %t177, ptr %a114 - br label %endif204 -else203: - %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: + %t178 = load i64, ptr %a114 + %t179 = add i64 %t178, 1 + store i64 %t179, ptr %a114 + br label %endif229 +else228: + %t180 = load { ptr, i64, i64 }, ptr %a129 + store { ptr, i64, i64 } %t180, ptr %a181 + store { ptr, i64, i64 } { ptr @.str.179, i64 8, i64 0 }, ptr %a182 + %t183 = call i32 @finch_str_eq(ptr %a181, ptr %a182) + %t184 = icmp ne i32 %t183, 0 + br label %logic.from232 +logic.from232: + br i1 %t184, label %logic.rhs233, label %logic.end234 +logic.rhs233: + %t185 = load { ptr, i64, i64 }, ptr %a67 + store { ptr, i64, i64 } %t185, ptr %a186 + store { ptr, i64, i64 } { ptr @.str.180, i64 5, i64 0 }, ptr %a187 + %t188 = call i32 @finch_str_eq(ptr %a186, ptr %a187) + %t189 = icmp ne i32 %t188, 0 + br label %logic.rend235 +logic.rend235: + br label %logic.end234 +logic.end234: + %t190 = phi i1 [ false, %logic.from232 ], [ %t189, %logic.rend235 ] + br i1 %t190, label %then236, label %else237 +then236: 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: - store { ptr, i64, i64 } { ptr @.str.172, i64 3, i64 0 }, ptr %a108 - br label %endif216 -else215: - %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: - %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: - %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 %endif238 +else237: + %t191 = load { ptr, i64, i64 }, ptr %a129 + store { ptr, i64, i64 } %t191, ptr %a192 + store { ptr, i64, i64 } { ptr @.str.181, i64 3, i64 0 }, ptr %a193 + %t194 = call i32 @finch_str_eq(ptr %a192, ptr %a193) + %t195 = icmp ne i32 %t194, 0 + br i1 %t195, label %then239, label %else240 +then239: + %t196 = load { ptr, i64, i64 }, ptr %a108 + store { ptr, i64, i64 } { ptr @.str.182, i64 3, i64 0 }, ptr %a108 + store { ptr, i64, i64 } %t196, ptr %a197 + call void @finch_str_drop(ptr %a197) + br label %endif241 +else240: + %t198 = load { ptr, i64, i64 }, ptr %a129 + store { ptr, i64, i64 } %t198, ptr %a199 + store { ptr, i64, i64 } { ptr @.str.183, i64 2, i64 0 }, ptr %a200 + %t201 = call i32 @finch_str_eq(ptr %a199, ptr %a200) + %t202 = icmp ne i32 %t201, 0 br label %logic.from242 logic.from242: - br i1 %t277, label %logic.rhs243, label %logic.end244 + br i1 %t202, 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 + %t203 = load i64, ptr %a114 + %t204 = add i64 %t203, 1 + %t205 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t206 = load i64, ptr %t205 + %t207 = icmp slt i64 %t204, %t206 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 + %t208 = phi i1 [ false, %logic.from242 ], [ %t207, %logic.rend245 ] + br i1 %t208, 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 + %t209 = getelementptr inbounds { ptr, i64, i64 }, ptr %a109, i32 0, i32 1 + %t210 = load i64, ptr %a114 + %t211 = add i64 %t210, 1 + %t212 = load { ptr, i64, i64 }, ptr %a1 + %t213 = extractvalue { ptr, i64, i64 } %t212, 1 + %t214 = icmp uge i64 %t211, %t213 + br i1 %t214, label %range249, label %inrange250 range249: - call void @finch_panic_index(ptr @.str.181, i64 181, i64 %t285, i64 %t287) + call void @finch_panic_index(ptr @.str.184, i64 192, i64 %t211, i64 %t213) 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 + %t215 = extractvalue { ptr, i64, i64 } %t212, 0 + %t216 = getelementptr inbounds { ptr, i64, i64 }, ptr %t215, i64 %t211 + %t217 = load { ptr, i64, i64 }, ptr %t216 + store { ptr, i64, i64 } %t217, ptr %a218 + call void @finch_str_copy(ptr %a219, ptr %a218) + %t220 = load { ptr, i64, i64 }, ptr %a219 + %t221 = load i64, ptr %t209 + %t222 = add i64 %t221, 1 + call void @finch_arr_reserve(ptr %a109, i64 %t222, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t223 = load ptr, ptr %a109 + %t224 = getelementptr inbounds { ptr, i64, i64 }, ptr %t223, i64 %t221 + store { ptr, i64, i64 } %t220, ptr %t224 + store i64 %t222, ptr %t209 + %t225 = load i64, ptr %a114 + %t226 = add i64 %t225, 1 + store i64 %t226, 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 + %t227 = load { ptr, i64, i64 }, ptr %a129 + store { ptr, i64, i64 } %t227, ptr %a228 + store { ptr, i64, i64 } { ptr @.str.186, i64 2, i64 0 }, ptr %a230 + %t231 = call i32 @finch_str_starts(ptr %a228, ptr %a230) + %t232 = icmp ne i32 %t231, 0 + br label %logic.from251 +logic.from251: + br i1 %t232, label %logic.rhs252, label %logic.end253 +logic.rhs252: + %t233 = getelementptr inbounds { ptr, i64, i64 }, ptr %a129, i32 0, i32 1 + %t234 = load i64, ptr %t233 + %t235 = icmp sgt i64 %t234, 2 + br label %logic.rend254 +logic.rend254: + br label %logic.end253 +logic.end253: + %t236 = phi i1 [ false, %logic.from251 ], [ %t235, %logic.rend254 ] + br i1 %t236, label %then255, label %else256 then255: - store i1 true, ptr %a106 + %t237 = getelementptr inbounds { ptr, i64, i64 }, ptr %a109, i32 0, i32 1 + %t238 = load { ptr, i64, i64 }, ptr %a129 + store { ptr, i64, i64 } %t238, ptr %a239 + %t241 = getelementptr inbounds { ptr, i64, i64 }, ptr %a129, i32 0, i32 1 + %t242 = load i64, ptr %t241 + call void @finch_str_sub(ptr %a240, ptr %a239, i64 2, i64 %t242, ptr @.str.187, i64 195) + %t243 = load { ptr, i64, i64 }, ptr %a240 + %t244 = load i64, ptr %t237 + %t245 = add i64 %t244, 1 + call void @finch_arr_reserve(ptr %a109, i64 %t245, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t246 = load ptr, ptr %a109 + %t247 = getelementptr inbounds { ptr, i64, i64 }, ptr %t246, i64 %t244 + store { ptr, i64, i64 } %t243, ptr %t247 + store i64 %t245, ptr %t237 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 + %t248 = load { ptr, i64, i64 }, ptr %a129 + store { ptr, i64, i64 } %t248, ptr %a249 + store { ptr, i64, i64 } { ptr @.str.188, i64 2, i64 0 }, ptr %a250 + %t251 = call i32 @finch_str_eq(ptr %a249, ptr %a250) + %t252 = icmp ne i32 %t251, 0 br label %logic.from258 logic.from258: - br i1 %t337, label %logic.rhs259, label %logic.end260 + br i1 %t252, 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 + %t253 = load i64, ptr %a114 + %t254 = add i64 %t253, 1 + %t255 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t256 = load i64, ptr %t255 + %t257 = icmp slt i64 %t254, %t256 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 + %t258 = phi i1 [ false, %logic.from258 ], [ %t257, %logic.rend261 ] + br i1 %t258, 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 + %t259 = getelementptr inbounds { ptr, i64, i64 }, ptr %a110, i32 0, i32 1 + %t260 = load i64, ptr %a114 + %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 %range265, label %inrange266 range265: - call void @finch_panic_index(ptr @.str.188, i64 188, i64 %t345, i64 %t347) + call void @finch_panic_index(ptr @.str.189, i64 197, i64 %t261, i64 %t263) 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 + %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 + %t271 = load i64, ptr %t259 + %t272 = add i64 %t271, 1 + call void @finch_arr_reserve(ptr %a110, i64 %t272, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t273 = load ptr, ptr %a110 + %t274 = getelementptr inbounds { ptr, i64, i64 }, ptr %t273, i64 %t271 + store { ptr, i64, i64 } %t270, ptr %t274 + store i64 %t272, ptr %t259 + %t275 = load i64, ptr %a114 + %t276 = add i64 %t275, 1 + store i64 %t276, 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 + %t277 = load { ptr, i64, i64 }, ptr %a129 + store { ptr, i64, i64 } %t277, ptr %a278 + store { ptr, i64, i64 } { ptr @.str.190, i64 9, i64 0 }, ptr %a279 + %t280 = call i32 @finch_str_eq(ptr %a278, ptr %a279) + %t281 = icmp ne i32 %t280, 0 + br label %logic.from267 +logic.from267: + br i1 %t281, label %logic.rhs268, label %logic.end269 +logic.rhs268: + %t282 = load i64, ptr %a114 + %t283 = add i64 %t282, 1 + %t284 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t285 = load i64, ptr %t284 + %t286 = icmp slt i64 %t283, %t285 + br label %logic.rend270 +logic.rend270: + br label %logic.end269 +logic.end269: + %t287 = phi i1 [ false, %logic.from267 ], [ %t286, %logic.rend270 ] + br i1 %t287, label %then271, label %else272 +then271: + %t288 = load i64, ptr %a114 + %t289 = add i64 %t288, 1 + %t290 = load { ptr, i64, i64 }, ptr %a1 + %t291 = extractvalue { ptr, i64, i64 } %t290, 1 + %t292 = icmp uge i64 %t289, %t291 + br i1 %t292, label %range274, label %inrange275 +range274: + call void @finch_panic_index(ptr @.str.191, i64 200, i64 %t289, i64 %t291) + unreachable +inrange275: + %t293 = extractvalue { ptr, i64, i64 } %t290, 0 + %t294 = getelementptr inbounds { ptr, i64, i64 }, ptr %t293, i64 %t289 + %t295 = load { ptr, i64, i64 }, ptr %t294 + store { ptr, i64, i64 } %t295, ptr %a296 + store { ptr, i64, i64 } { ptr @.str.193, i64 1, i64 0 }, ptr %a298 + call void @finch_str_split(ptr %a299, ptr %a296, ptr %a298) + %t300 = load { ptr, i64, i64 }, ptr %a299 + store { ptr, i64, i64 } %t300, ptr %a301 + %t302 = getelementptr inbounds { ptr, i64, i64 }, ptr %a111, i32 0, i32 1 + %t303 = load { ptr, i64, i64 }, ptr %a301 + %t304 = extractvalue { ptr, i64, i64 } %t303, 1 + %t305 = icmp uge i64 0, %t304 + br i1 %t305, label %range276, label %inrange277 +range276: + call void @finch_panic_index(ptr @.str.194, i64 201, i64 0, i64 %t304) + unreachable +inrange277: + %t306 = extractvalue { ptr, i64, i64 } %t303, 0 + %t307 = getelementptr inbounds { ptr, i64, i64 }, ptr %t306, i64 0 + %t308 = load { ptr, i64, i64 }, ptr %t307 + store { ptr, i64, i64 } %t308, ptr %a309 + call void @finch_str_copy(ptr %a310, ptr %a309) + %t311 = load { ptr, i64, i64 }, ptr %a310 + %t312 = load i64, ptr %t302 + %t313 = add i64 %t312, 1 + call void @finch_arr_reserve(ptr %a111, i64 %t313, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t314 = load ptr, ptr %a111 + %t315 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i64 %t312 + store { ptr, i64, i64 } %t311, ptr %t315 + store i64 %t313, ptr %t302 + %t316 = getelementptr inbounds { ptr, i64, i64 }, ptr %a112, i32 0, i32 1 + %t317 = load { ptr, i64, i64 }, ptr %a301 + %t318 = extractvalue { ptr, i64, i64 } %t317, 1 + %t319 = icmp uge i64 1, %t318 + br i1 %t319, label %range278, label %inrange279 +range278: + call void @finch_panic_index(ptr @.str.195, i64 202, i64 1, i64 %t318) + unreachable +inrange279: + %t320 = extractvalue { ptr, i64, i64 } %t317, 0 + %t321 = getelementptr inbounds { ptr, i64, i64 }, ptr %t320, i64 1 + %t322 = load { ptr, i64, i64 }, ptr %t321 + store { ptr, i64, i64 } %t322, ptr %a323 + call void @finch_str_copy(ptr %a324, ptr %a323) + %t325 = load { ptr, i64, i64 }, ptr %a324 + %t326 = load i64, ptr %t316 + %t327 = add i64 %t326, 1 + call void @finch_arr_reserve(ptr %a112, i64 %t327, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t328 = load ptr, ptr %a112 + %t329 = getelementptr inbounds { ptr, i64, i64 }, ptr %t328, i64 %t326 + store { ptr, i64, i64 } %t325, ptr %t329 + store i64 %t327, ptr %t316 + %t330 = load i64, ptr %a114 + %t331 = add i64 %t330, 1 + store i64 %t331, ptr %a114 + call void @finch.drop.arr_str(ptr %a301) + br label %endif273 +else272: + %t332 = load { ptr, i64, i64 }, ptr %a129 + store { ptr, i64, i64 } %t332, ptr %a333 + store { ptr, i64, i64 } { ptr @.str.196, i64 2, i64 0 }, ptr %a334 + %t335 = call i32 @finch_str_eq(ptr %a333, ptr %a334) + %t336 = icmp ne i32 %t335, 0 + br i1 %t336, label %then280, label %else281 +then280: + store i1 true, ptr %a106 + br label %endif282 +else281: + %t337 = load { ptr, i64, i64 }, ptr %a129 + store { ptr, i64, i64 } %t337, ptr %a338 + store { ptr, i64, i64 } { ptr @.str.197, i64 8, i64 0 }, ptr %a339 + %t340 = call i32 @finch_str_eq(ptr %a338, ptr %a339) + %t341 = icmp ne i32 %t340, 0 + br label %logic.from283 +logic.from283: + br i1 %t341, label %logic.rhs284, label %logic.end285 +logic.rhs284: + %t342 = load i64, ptr %a114 + %t343 = add i64 %t342, 1 + %t344 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t345 = load i64, ptr %t344 + %t346 = icmp slt i64 %t343, %t345 + br label %logic.rend286 +logic.rend286: + br label %logic.end285 +logic.end285: + %t347 = phi i1 [ false, %logic.from283 ], [ %t346, %logic.rend286 ] + br i1 %t347, label %then287, label %else288 +then287: + %t348 = load i64, ptr %a114 + %t349 = add i64 %t348, 1 + %t350 = load { ptr, i64, i64 }, ptr %a1 + %t351 = extractvalue { ptr, i64, i64 } %t350, 1 + %t352 = icmp uge i64 %t349, %t351 + br i1 %t352, label %range290, label %inrange291 +range290: + call void @finch_panic_index(ptr @.str.198, i64 207, i64 %t349, i64 %t351) + unreachable +inrange291: + %t353 = extractvalue { ptr, i64, i64 } %t350, 0 + %t354 = getelementptr inbounds { ptr, i64, i64 }, ptr %t353, i64 %t349 + %t355 = load { ptr, i64, i64 }, ptr %t354 + store { ptr, i64, i64 } %t355, ptr %a356 + call void @finch_str_copy(ptr %a357, ptr %a356) + %t358 = load { ptr, i64, i64 }, ptr %a357 + %t359 = load { ptr, i64, i64 }, ptr %a107 + store { ptr, i64, i64 } %t358, ptr %a107 + store { ptr, i64, i64 } %t359, ptr %a360 + call void @finch_str_drop(ptr %a360) + %t361 = load i64, ptr %a114 + %t362 = add i64 %t361, 1 + store i64 %t362, ptr %a114 + br label %endif289 +else288: + %t363 = load { ptr, i64, i64 }, ptr %a67 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: + store { ptr, i64, i64 } { ptr @.str.199, i64 3, i64 0 }, ptr %a365 + %t366 = call i32 @finch_str_eq(ptr %a364, ptr %a365) + %t367 = icmp ne i32 %t366, 0 + br i1 %t367, label %then292, label %else293 +then292: + %t368 = getelementptr inbounds { ptr, i64, i64 }, ptr %a113, i32 0, i32 1 + %t369 = load { ptr, i64, i64 }, ptr %a129 + store { ptr, i64, i64 } %t369, ptr %a370 + call void @finch_str_copy(ptr %a371, ptr %a370) + %t372 = load { ptr, i64, i64 }, ptr %a371 + %t373 = load i64, ptr %t368 + %t374 = add i64 %t373, 1 + call void @finch_arr_reserve(ptr %a113, i64 %t374, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t375 = load ptr, ptr %a113 + %t376 = getelementptr inbounds { ptr, i64, i64 }, ptr %t375, i64 %t373 + store { ptr, i64, i64 } %t372, ptr %t376 + store i64 %t374, ptr %t368 + br label %endif294 +else293: call void @finch.main.usage() - br label %endif269 -endif269: + br label %endif294 +endif294: + br label %endif289 +endif289: + br label %endif282 +endif282: + br label %endif273 +endif273: br label %endif264 endif264: br label %endif257 endif257: br label %endif248 endif248: - br label %endif239 -endif239: - br label %endif232 -endif232: - 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 - 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) + br label %endif241 +endif241: + br label %endif238 +endif238: + br label %endif229 +endif229: + br label %endif218 +endif218: + %t377 = load i64, ptr %a114 + %t378 = add i64 %t377, 1 + store i64 %t378, ptr %a114 + call void @finch_str_drop(ptr %a129) + br label %while.cond207 +while.end209: + %t379 = load { ptr, i64, i64 }, ptr %a107 + %t380 = call %S.platform.Target @finch.platform.select({ ptr, i64, i64 } %t379) + store %S.platform.Target %t380, ptr %a381 + %t382 = load { ptr, i64, i64 }, ptr %a67 + store { ptr, i64, i64 } %t382, ptr %a383 + store { ptr, i64, i64 } { ptr @.str.200, i64 3, i64 0 }, ptr %a384 + %t385 = call i32 @finch_str_eq(ptr %a383, ptr %a384) + %t386 = icmp ne i32 %t385, 0 + br i1 %t386, label %then295, label %else296 +then295: + %t387 = call { ptr, i64, i64 } @finch.host.tempDir() + store { ptr, i64, i64 } %t387, ptr %a389 + store { ptr, i64, i64 } { ptr @.str.201, i64 11, i64 0 }, ptr %a390 + call void @finch_str_concat(ptr %a388, ptr %a389, ptr %a390) + store { ptr, i64, i64 } %t387, ptr %a391 + call void @finch_str_drop(ptr %a391) + %t392 = load { ptr, i64, i64 }, ptr %a388 + %t393 = call i64 @finch.host.pid() + call void @finch_str_from_int(ptr %a394, i64 %t393) + %t395 = load { ptr, i64, i64 }, ptr %a394 + store { ptr, i64, i64 } %t392, ptr %a397 + store { ptr, i64, i64 } %t395, ptr %a398 + call void @finch_str_concat(ptr %a396, ptr %a397, ptr %a398) + store { ptr, i64, i64 } %t392, ptr %a399 + call void @finch_str_drop(ptr %a399) + store { ptr, i64, i64 } %t395, ptr %a400 + call void @finch_str_drop(ptr %a400) + %t401 = load { ptr, i64, i64 }, ptr %a396 + store { ptr, i64, i64 } %t401, ptr %a403 + store { ptr, i64, i64 } { ptr @.str.202, i64 1, i64 0 }, ptr %a404 + call void @finch_str_concat(ptr %a402, ptr %a403, ptr %a404) + store { ptr, i64, i64 } %t401, ptr %a405 + call void @finch_str_drop(ptr %a405) + %t406 = load { ptr, i64, i64 }, ptr %a402 + %t407 = load { ptr, i64, i64 }, ptr %a77 + %t408 = call { ptr, i64, i64 } @finch.main.stem({ ptr, i64, i64 } %t407) + store { ptr, i64, i64 } %t406, ptr %a410 + store { ptr, i64, i64 } %t408, ptr %a411 + call void @finch_str_concat(ptr %a409, ptr %a410, ptr %a411) + store { ptr, i64, i64 } %t406, ptr %a412 + call void @finch_str_drop(ptr %a412) + store { ptr, i64, i64 } %t408, ptr %a413 + call void @finch_str_drop(ptr %a413) + %t414 = load { ptr, i64, i64 }, ptr %a409 + %t415 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 6 + %t416 = load { ptr, i64, i64 }, ptr %t415 + store { ptr, i64, i64 } %t414, ptr %a418 + store { ptr, i64, i64 } %t416, ptr %a419 + call void @finch_str_concat(ptr %a417, ptr %a418, ptr %a419) + store { ptr, i64, i64 } %t414, ptr %a420 + call void @finch_str_drop(ptr %a420) + %t421 = load { ptr, i64, i64 }, ptr %a417 + %t422 = load { ptr, i64, i64 }, ptr %a103 + store { ptr, i64, i64 } %t421, ptr %a103 + store { ptr, i64, i64 } %t422, ptr %a423 + call void @finch_str_drop(ptr %a423) + br label %endif297 +else296: + %t424 = load i1, ptr %a105 + br label %logic.from298 +logic.from298: + br i1 %t424, label %logic.rhs299, label %logic.end300 +logic.rhs299: + %t425 = load i1, ptr %a104 + %t426 = xor i1 %t425, true + br label %logic.rend301 +logic.rend301: + br label %logic.end300 +logic.end300: + %t427 = phi i1 [ false, %logic.from298 ], [ %t426, %logic.rend301 ] + br i1 %t427, label %then302, label %else303 +then302: + %t428 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 1 + %t429 = load i1, ptr %t428 + br i1 %t429, label %then305, label %else306 +then305: + %t430 = load { ptr, i64, i64 }, ptr %a103 + store { ptr, i64, i64 } %t430, ptr %a432 + store { ptr, i64, i64 } { ptr @.str.203, i64 4, i64 0 }, ptr %a433 + call void @finch_str_concat(ptr %a431, ptr %a432, ptr %a433) + %t434 = load { ptr, i64, i64 }, ptr %a431 + %t435 = load { ptr, i64, i64 }, ptr %a103 + store { ptr, i64, i64 } %t434, ptr %a103 + store { ptr, i64, i64 } %t435, ptr %a436 + call void @finch_str_drop(ptr %a436) + br label %endif307 +else306: + %t437 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 3 + %t438 = load i1, ptr %t437 + br i1 %t438, label %then308, label %else309 +then308: + %t439 = load { ptr, i64, i64 }, ptr %a103 + store { ptr, i64, i64 } { ptr @.str.204, 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.205, i64 6, i64 0 }, ptr %a446 + call void @finch_str_concat(ptr %a444, ptr %a445, ptr %a446) + store { ptr, i64, i64 } %t443, ptr %a447 + call void @finch_str_drop(ptr %a447) + %t448 = load { ptr, i64, i64 }, ptr %a444 + %t449 = load { ptr, i64, i64 }, ptr %a103 + store { ptr, i64, i64 } %t448, ptr %a103 + store { ptr, i64, i64 } %t449, ptr %a450 + call void @finch_str_drop(ptr %a450) + br label %endif310 +else309: + %t451 = load { ptr, i64, i64 }, ptr %a103 + store { ptr, i64, i64 } { ptr @.str.206, i64 3, i64 0 }, ptr %a453 + store { ptr, i64, i64 } %t451, ptr %a454 + call void @finch_str_concat(ptr %a452, ptr %a453, ptr %a454) + %t455 = load { ptr, i64, i64 }, ptr %a452 + store { ptr, i64, i64 } %t455, ptr %a457 + store { ptr, i64, i64 } { ptr @.str.207, i64 3, i64 0 }, ptr %a458 + call void @finch_str_concat(ptr %a456, ptr %a457, ptr %a458) + store { ptr, i64, i64 } %t455, ptr %a459 + call void @finch_str_drop(ptr %a459) + %t460 = load { ptr, i64, i64 }, ptr %a456 + %t461 = load { ptr, i64, i64 }, ptr %a103 + store { ptr, i64, i64 } %t460, ptr %a103 + store { ptr, i64, i64 } %t461, ptr %a462 + call void @finch_str_drop(ptr %a462) + br label %endif310 +endif310: + br label %endif307 +endif307: + br label %endif304 +else303: + %t463 = load i1, ptr %a104 + %t464 = xor i1 %t463, true + br i1 %t464, label %then311, label %endif313 +then311: + %t465 = load { ptr, i64, i64 }, ptr %a103 + %t466 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 6 + %t467 = load { ptr, i64, i64 }, ptr %t466 + store { ptr, i64, i64 } %t465, ptr %a469 + store { ptr, i64, i64 } %t467, 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 %a103 + store { ptr, i64, i64 } %t471, ptr %a103 + store { ptr, i64, i64 } %t472, ptr %a473 + call void @finch_str_drop(ptr %a473) + br label %endif313 +endif313: + br label %endif304 +endif304: + br label %endif297 +endif297: + store %S.main.Loader zeroinitializer, ptr %a474 + %t475 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 3 + %t476 = load { ptr, i64, i64 }, ptr %t475 + store { ptr, i64, i64 } { ptr @.str.208, i64 5, i64 0 }, ptr %t475 + store { ptr, i64, i64 } %t476, ptr %a477 + call void @finch_str_drop(ptr %a477) + %t478 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 1 + %t479 = load i1, ptr %t478 + br i1 %t479, label %then314, label %else315 +then314: + %t480 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 3 + %t481 = load { ptr, i64, i64 }, ptr %t480 + store { ptr, i64, i64 } { ptr @.str.209, i64 7, i64 0 }, ptr %t480 + store { ptr, i64, i64 } %t481, ptr %a482 + call void @finch_str_drop(ptr %a482) + br label %endif316 +else315: + %t483 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 3 + %t484 = load i1, ptr %t483 + br i1 %t484, label %then317, label %endif319 +then317: + %t485 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 3 + %t486 = load { ptr, i64, i64 }, ptr %t485 + store { ptr, i64, i64 } { ptr @.str.210, i64 5, i64 0 }, ptr %t485 + store { ptr, i64, i64 } %t486, ptr %a487 + call void @finch_str_drop(ptr %a487) + br label %endif319 +endif319: + br label %endif316 +endif316: + %t488 = load { ptr, i64, i64 }, ptr %a1 + %t489 = extractvalue { ptr, i64, i64 } %t488, 1 + %t490 = icmp uge i64 0, %t489 + br i1 %t490, label %range320, label %inrange321 +range320: + call void @finch_panic_index(ptr @.str.211, i64 238, i64 0, i64 %t489) 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) +inrange321: + %t491 = extractvalue { ptr, i64, i64 } %t488, 0 + %t492 = getelementptr inbounds { ptr, i64, i64 }, ptr %t491, i64 0 + %t493 = load { ptr, i64, i64 }, ptr %t492 + %t494 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t493) + store { ptr, i64, i64 } %t494, ptr %a496 + store { ptr, i64, i64 } { ptr @.str.212, i64 7, i64 0 }, ptr %a497 + call void @finch_str_concat(ptr %a495, ptr %a496, ptr %a497) + store { ptr, i64, i64 } %t494, ptr %a498 + call void @finch_str_drop(ptr %a498) + %t499 = load { ptr, i64, i64 }, ptr %a495 + %t500 = load { ptr, i64, i64 }, ptr %a1 + %t501 = extractvalue { ptr, i64, i64 } %t500, 1 + %t502 = icmp uge i64 0, %t501 + br i1 %t502, label %range322, label %inrange323 +range322: + call void @finch_panic_index(ptr @.str.213, i64 238, i64 0, i64 %t501) 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 = load { ptr, i64, i64 }, ptr %a1 - %t464 = extractvalue { ptr, i64, i64 } %t463, 1 - %t465 = icmp uge i64 0, %t464 - br i1 %t465, label %range299, label %inrange300 -range299: - call void @finch_panic_index(ptr @.str.204, i64 219, i64 0, i64 %t464) - unreachable -inrange300: - %t466 = extractvalue { ptr, i64, i64 } %t463, 0 - %t467 = getelementptr inbounds { ptr, i64, i64 }, ptr %t466, i64 0 - %t468 = load { ptr, i64, i64 }, ptr %t467 - %t469 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t468) - store { ptr, i64, i64 } %t469, ptr %a471 - store { ptr, i64, i64 } { ptr @.str.205, i64 19, i64 0 }, ptr %a472 - call void @finch_str_concat(ptr %a470, ptr %a471, ptr %a472) - %t473 = load { ptr, i64, i64 }, ptr %a470 - %t474 = mul i64 4, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t475 = call ptr @finch_alloc(i64 %t474) - %t476 = getelementptr inbounds { ptr, i64, i64 }, ptr %t475, i64 0 - store { ptr, i64, i64 } %t451, ptr %t476 - %t477 = getelementptr inbounds { ptr, i64, i64 }, ptr %t475, i64 1 - store { ptr, i64, i64 } %t462, ptr %t477 - %t478 = getelementptr inbounds { ptr, i64, i64 }, ptr %t475, i64 2 - store { ptr, i64, i64 } %t473, ptr %t478 - %t479 = getelementptr inbounds { ptr, i64, i64 }, ptr %t475, i64 3 - store { ptr, i64, i64 } { ptr @.str.206, i64 3, i64 0 }, ptr %t479 - %t480 = insertvalue { ptr, i64, i64 } undef, ptr %t475, 0 - %t481 = insertvalue { ptr, i64, i64 } %t480, i64 4, 1 - %t482 = insertvalue { ptr, i64, i64 } %t481, i64 4, 2 - store { ptr, i64, i64 } %t482, ptr %a483 - store i64 0, ptr %a484 - br label %each.cond301 -each.cond301: - %t485 = getelementptr inbounds { ptr, i64, i64 }, ptr %a483, i32 0, i32 1 - %t486 = load i64, ptr %t485 - %t487 = load i64, ptr %a484 - %t488 = icmp slt i64 %t487, %t486 - br i1 %t488, label %each.body302, label %each.end304 -each.body302: - %t489 = load ptr, ptr %a483 - %t490 = getelementptr inbounds { ptr, i64, i64 }, ptr %t489, i64 %t487 - %t491 = load { ptr, i64, i64 }, ptr %t490 - store { ptr, i64, i64 } %t491, ptr %a492 - %t493 = getelementptr inbounds %S.main.Loader, ptr %a433, i32 0, i32 4 - %t494 = getelementptr inbounds { ptr, i64, i64 }, ptr %t493, i32 0, i32 1 - %t495 = load i64, ptr %t494 - %t496 = icmp eq i64 %t495, 0 - br label %logic.from305 -logic.from305: - br i1 %t496, label %logic.rhs306, label %logic.end307 -logic.rhs306: - %t497 = load { ptr, i64, i64 }, ptr %a492 - store { ptr, i64, i64 } %t497, ptr %a499 - store { ptr, i64, i64 } { ptr @.str.207, i64 9, i64 0 }, ptr %a500 - call void @finch_str_concat(ptr %a498, ptr %a499, ptr %a500) - %t501 = load { ptr, i64, i64 }, ptr %a498 - store { ptr, i64, i64 } %t501, ptr %a502 - %t503 = call i32 @finch_file_exists(ptr %a502) - %t504 = icmp ne i32 %t503, 0 - br label %logic.rend308 -logic.rend308: - br label %logic.end307 -logic.end307: - %t505 = phi i1 [ false, %logic.from305 ], [ %t504, %logic.rend308 ] - br i1 %t505, label %then309, label %endif311 -then309: - %t506 = load { ptr, i64, i64 }, ptr %a492 - %t507 = getelementptr inbounds %S.main.Loader, ptr %a433, i32 0, i32 4 +inrange323: + %t503 = extractvalue { ptr, i64, i64 } %t500, 0 + %t504 = getelementptr inbounds { ptr, i64, i64 }, ptr %t503, i64 0 + %t505 = load { ptr, i64, i64 }, ptr %t504 + %t506 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t505) store { ptr, i64, i64 } %t506, ptr %a508 - call void @finch_str_copy(ptr %a509, ptr %a508) - %t510 = load { ptr, i64, i64 }, ptr %a509 - store { ptr, i64, i64 } %t510, ptr %t507 - br label %endif311 -endif311: - br label %each.step303 -each.step303: - %t511 = load i64, ptr %a484 - %t512 = add i64 %t511, 1 - store i64 %t512, ptr %a484 - br label %each.cond301 -each.end304: - %t513 = load { ptr, i64, i64 }, ptr %a111 - %t514 = getelementptr inbounds %S.main.Loader, ptr %a433, i32 0, i32 6 - store { ptr, i64, i64 } %t513, ptr %a515 - call void @finch.copy.arr_str(ptr %a516, ptr %a515) - %t517 = load { ptr, i64, i64 }, ptr %a516 - store { ptr, i64, i64 } %t517, ptr %t514 - %t518 = load { ptr, i64, i64 }, ptr %a112 - %t519 = getelementptr inbounds %S.main.Loader, ptr %a433, i32 0, i32 7 + store { ptr, i64, i64 } { ptr @.str.214, i64 4, i64 0 }, ptr %a509 + call void @finch_str_concat(ptr %a507, ptr %a508, ptr %a509) + store { ptr, i64, i64 } %t506, ptr %a510 + call void @finch_str_drop(ptr %a510) + %t511 = load { ptr, i64, i64 }, ptr %a507 + %t512 = load { ptr, i64, i64 }, ptr %a1 + %t513 = extractvalue { ptr, i64, i64 } %t512, 1 + %t514 = icmp uge i64 0, %t513 + br i1 %t514, label %range324, label %inrange325 +range324: + call void @finch_panic_index(ptr @.str.215, i64 238, i64 0, i64 %t513) + unreachable +inrange325: + %t515 = extractvalue { ptr, i64, i64 } %t512, 0 + %t516 = getelementptr inbounds { ptr, i64, i64 }, ptr %t515, i64 0 + %t517 = load { ptr, i64, i64 }, ptr %t516 + %t518 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t517) store { ptr, i64, i64 } %t518, ptr %a520 - call void @finch.copy.arr_str(ptr %a521, ptr %a520) - %t522 = load { ptr, i64, i64 }, ptr %a521 - store { ptr, i64, i64 } %t522, ptr %t519 - %t523 = extractvalue { ptr, i64, i64 } { ptr @.str.208, i64 10, i64 0 }, 0 - %t524 = icmp eq ptr %t523, null - %t525 = select i1 %t524, ptr @.str.209, ptr %t523 - %t526 = call ptr @getenv(ptr %t525) - store { ptr, i64, i64 } zeroinitializer, ptr %a527 - call void @finch_str_from_c(ptr %a527, ptr %t526) - %t528 = load { ptr, i64, i64 }, ptr %a527 - store { ptr, i64, i64 } %t528, ptr %a529 - store { ptr, i64, i64 } { ptr @.str.211, i64 1, i64 0 }, ptr %a531 - call void @finch_str_split(ptr %a532, ptr %a529, ptr %a531) - %t533 = load { ptr, i64, i64 }, ptr %a532 - store { ptr, i64, i64 } %t533, ptr %a534 - store i64 0, ptr %a535 - br label %each.cond312 -each.cond312: - %t536 = getelementptr inbounds { ptr, i64, i64 }, ptr %a534, i32 0, i32 1 - %t537 = load i64, ptr %t536 - %t538 = load i64, ptr %a535 - %t539 = icmp slt i64 %t538, %t537 - br i1 %t539, label %each.body313, label %each.end315 -each.body313: - %t540 = load ptr, ptr %a534 - %t541 = getelementptr inbounds { ptr, i64, i64 }, ptr %t540, i64 %t538 - %t542 = load { ptr, i64, i64 }, ptr %t541 - store { ptr, i64, i64 } %t542, ptr %a543 - %t544 = getelementptr inbounds { ptr, i64, i64 }, ptr %a543, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.216, i64 19, i64 0 }, ptr %a521 + call void @finch_str_concat(ptr %a519, ptr %a520, ptr %a521) + store { ptr, i64, i64 } %t518, ptr %a522 + call void @finch_str_drop(ptr %a522) + %t523 = load { ptr, i64, i64 }, ptr %a519 + %t524 = mul i64 4, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) + %t525 = call ptr @finch_alloc(i64 %t524) + %t526 = getelementptr inbounds { ptr, i64, i64 }, ptr %t525, i64 0 + store { ptr, i64, i64 } %t499, ptr %t526 + %t527 = getelementptr inbounds { ptr, i64, i64 }, ptr %t525, i64 1 + store { ptr, i64, i64 } %t511, ptr %t527 + %t528 = getelementptr inbounds { ptr, i64, i64 }, ptr %t525, i64 2 + store { ptr, i64, i64 } %t523, ptr %t528 + %t529 = getelementptr inbounds { ptr, i64, i64 }, ptr %t525, i64 3 + store { ptr, i64, i64 } { ptr @.str.217, i64 3, i64 0 }, ptr %t529 + %t530 = insertvalue { ptr, i64, i64 } undef, ptr %t525, 0 + %t531 = insertvalue { ptr, i64, i64 } %t530, i64 4, 1 + %t532 = insertvalue { ptr, i64, i64 } %t531, i64 4, 2 + store { ptr, i64, i64 } %t532, ptr %a533 + store i64 0, ptr %a534 + br label %each.cond326 +each.cond326: + %t535 = getelementptr inbounds { ptr, i64, i64 }, ptr %a533, i32 0, i32 1 + %t536 = load i64, ptr %t535 + %t537 = load i64, ptr %a534 + %t538 = icmp slt i64 %t537, %t536 + br i1 %t538, label %each.body327, label %each.end329 +each.body327: + %t539 = load ptr, ptr %a533 + %t540 = getelementptr inbounds { ptr, i64, i64 }, ptr %t539, i64 %t537 + %t541 = load { ptr, i64, i64 }, ptr %t540 + store { ptr, i64, i64 } %t541, ptr %a542 + %t543 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 4 + %t544 = getelementptr inbounds { ptr, i64, i64 }, ptr %t543, i32 0, i32 1 %t545 = load i64, ptr %t544 - %t546 = icmp sgt i64 %t545, 0 - br i1 %t546, label %then316, label %endif318 -then316: - %t547 = getelementptr inbounds %S.main.Loader, ptr %a433, i32 0, i32 5 - %t548 = getelementptr inbounds { ptr, i64, i64 }, ptr %t547, i32 0, i32 1 - %t549 = load { ptr, i64, i64 }, ptr %a543 - store { ptr, i64, i64 } %t549, ptr %a550 - call void @finch_str_copy(ptr %a551, ptr %a550) - %t552 = load { ptr, i64, i64 }, ptr %a551 - %t553 = load i64, ptr %t548 - %t554 = add i64 %t553, 1 - call void @finch_arr_reserve(ptr %t547, i64 %t554, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t555 = load ptr, ptr %t547 - %t556 = getelementptr inbounds { ptr, i64, i64 }, ptr %t555, i64 %t553 - store { ptr, i64, i64 } %t552, ptr %t556 - store i64 %t554, ptr %t548 - br label %endif318 -endif318: - br label %each.step314 -each.step314: - %t557 = load i64, ptr %a535 - %t558 = add i64 %t557, 1 - store i64 %t558, ptr %a535 - br label %each.cond312 -each.end315: - %t559 = load { ptr, i64, i64 }, ptr %a77 - call void @finch.main.load(ptr %a433, { ptr, i64, i64 } %t559, { ptr, i64, i64 } { ptr @.str.212, i64 0, i64 0 }) - store { ptr, i64, i64 } zeroinitializer, ptr %a560 - store { ptr, i64, i64 } zeroinitializer, ptr %a561 - %t562 = load { ptr, i64, i64 }, ptr %a110 + %t546 = icmp eq i64 %t545, 0 + br label %logic.from330 +logic.from330: + br i1 %t546, label %logic.rhs331, label %logic.end332 +logic.rhs331: + %t547 = load { ptr, i64, i64 }, ptr %a542 + store { ptr, i64, i64 } %t547, ptr %a549 + store { ptr, i64, i64 } { ptr @.str.218, i64 9, i64 0 }, ptr %a550 + call void @finch_str_concat(ptr %a548, ptr %a549, ptr %a550) + %t551 = load { ptr, i64, i64 }, ptr %a548 + store { ptr, i64, i64 } %t551, ptr %a552 + %t553 = call i32 @finch_file_exists(ptr %a552) + store { ptr, i64, i64 } %t551, ptr %a554 + call void @finch_str_drop(ptr %a554) + %t555 = icmp ne i32 %t553, 0 + br label %logic.rend333 +logic.rend333: + br label %logic.end332 +logic.end332: + %t556 = phi i1 [ false, %logic.from330 ], [ %t555, %logic.rend333 ] + br i1 %t556, label %then334, label %endif336 +then334: + %t557 = load { ptr, i64, i64 }, ptr %a542 + %t558 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 4 + store { ptr, i64, i64 } %t557, ptr %a559 + call void @finch_str_copy(ptr %a560, ptr %a559) + %t561 = load { ptr, i64, i64 }, ptr %a560 + %t562 = load { ptr, i64, i64 }, ptr %t558 + store { ptr, i64, i64 } %t561, ptr %t558 store { ptr, i64, i64 } %t562, ptr %a563 - call void @finch.copy.arr_str(ptr %a564, ptr %a563) - %t565 = load { ptr, i64, i64 }, ptr %a564 - store { ptr, i64, i64 } %t565, ptr %a566 - %t567 = load { ptr, i64, i64 }, ptr %a109 - store { ptr, i64, i64 } %t567, ptr %a568 - call void @finch.copy.arr_str(ptr %a569, ptr %a568) - %t570 = load { ptr, i64, i64 }, ptr %a569 - store { ptr, i64, i64 } %t570, ptr %a571 - %t572 = getelementptr inbounds %S.main.Loader, ptr %a433, i32 0, i32 0 - store i64 0, ptr %a573 - br label %each.cond319 -each.cond319: - %t574 = getelementptr inbounds { ptr, i64, i64 }, ptr %t572, i32 0, i32 1 - %t575 = load i64, ptr %t574 - %t576 = load i64, ptr %a573 - %t577 = icmp slt i64 %t576, %t575 - br i1 %t577, label %each.body320, label %each.end322 -each.body320: - %t578 = load ptr, ptr %t572 - %t579 = getelementptr inbounds %S.ast.Program, ptr %t578, i64 %t576 - %t580 = load %S.ast.Program, ptr %t579 - store %S.ast.Program %t580, ptr %a581 - %t582 = getelementptr inbounds %S.ast.Program, ptr %a581, i32 0, i32 1 - %t583 = load { ptr, i64, i64 }, ptr %t582 - %t584 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t583) + call void @finch_str_drop(ptr %a563) + br label %endif336 +endif336: + br label %each.step328 +each.step328: + %t564 = load i64, ptr %a534 + %t565 = add i64 %t564, 1 + store i64 %t565, ptr %a534 + br label %each.cond326 +each.end329: + call void @finch.drop.arr_str(ptr %a533) + %t566 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 4 + %t567 = getelementptr inbounds { ptr, i64, i64 }, ptr %t566, i32 0, i32 1 + %t568 = load i64, ptr %t567 + %t569 = icmp eq i64 %t568, 0 + br i1 %t569, label %then337, label %endif339 +then337: + %t570 = call { ptr, i64, i64 } @finch.main.unpack() + store { ptr, i64, i64 } %t570, ptr %a572 + store { ptr, i64, i64 } { ptr @.str.219, i64 4, i64 0 }, ptr %a573 + call void @finch_str_concat(ptr %a571, ptr %a572, ptr %a573) + store { ptr, i64, i64 } %t570, ptr %a574 + call void @finch_str_drop(ptr %a574) + %t575 = load { ptr, i64, i64 }, ptr %a571 + %t576 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 4 + %t577 = load { ptr, i64, i64 }, ptr %t576 + store { ptr, i64, i64 } %t575, ptr %t576 + store { ptr, i64, i64 } %t577, ptr %a578 + call void @finch_str_drop(ptr %a578) + br label %endif339 +endif339: + %t579 = load { ptr, i64, i64 }, ptr %a111 + %t580 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 6 + store { ptr, i64, i64 } %t579, ptr %a581 + call void @finch.copy.arr_str(ptr %a582, ptr %a581) + %t583 = load { ptr, i64, i64 }, ptr %a582 + %t584 = load { ptr, i64, i64 }, ptr %t580 + store { ptr, i64, i64 } %t583, ptr %t580 store { ptr, i64, i64 } %t584, ptr %a585 - %t586 = getelementptr inbounds { ptr, i64, i64 }, ptr %a566, i32 0, i32 1 - %t587 = load { ptr, i64, i64 }, ptr %a585 - store i64 -1, ptr %a588 - %t589 = load i64, ptr %t586 - %t590 = load ptr, ptr %a566 - store i64 0, ptr %a591 - br label %find.cond323 -find.cond323: - %t592 = load i64, ptr %a591 - %t593 = icmp slt i64 %t592, %t589 - br i1 %t593, label %find.body324, label %find.end327 -find.body324: - %t594 = getelementptr inbounds { ptr, i64, i64 }, ptr %t590, i64 %t592 - %t595 = load { ptr, i64, i64 }, ptr %t594 - store { ptr, i64, i64 } %t595, ptr %a596 - store { ptr, i64, i64 } %t587, ptr %a597 - %t598 = call i32 @finch_str_eq(ptr %a596, ptr %a597) - %t599 = icmp ne i32 %t598, 0 - br i1 %t599, label %find.hit325, label %find.next326 -find.hit325: - store i64 %t592, ptr %a588 - br label %find.end327 -find.next326: - %t600 = add i64 %t592, 1 - store i64 %t600, ptr %a591 - br label %find.cond323 -find.end327: - %t601 = load i64, ptr %a588 - %t602 = icmp sge i64 %t601, 0 - %t603 = xor i1 %t602, true - br i1 %t603, label %then328, label %endif330 -then328: - %t604 = getelementptr inbounds { ptr, i64, i64 }, ptr %a566, i32 0, i32 1 - %t605 = load { ptr, i64, i64 }, ptr %a585 + call void @finch.drop.arr_str(ptr %a585) + %t586 = load { ptr, i64, i64 }, ptr %a112 + %t587 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 7 + store { ptr, i64, i64 } %t586, ptr %a588 + call void @finch.copy.arr_str(ptr %a589, ptr %a588) + %t590 = load { ptr, i64, i64 }, ptr %a589 + %t591 = load { ptr, i64, i64 }, ptr %t587 + store { ptr, i64, i64 } %t590, ptr %t587 + store { ptr, i64, i64 } %t591, ptr %a592 + call void @finch.drop.arr_str(ptr %a592) + %t593 = extractvalue { ptr, i64, i64 } { ptr @.str.220, i64 10, i64 0 }, 0 + %t594 = icmp eq ptr %t593, null + %t595 = select i1 %t594, ptr @.str.221, ptr %t593 + %t596 = call ptr @getenv(ptr %t595) + store { ptr, i64, i64 } zeroinitializer, ptr %a597 + call void @finch_str_from_c(ptr %a597, ptr %t596) + %t598 = load { ptr, i64, i64 }, ptr %a597 + store { ptr, i64, i64 } %t598, ptr %a599 + %t601 = call { ptr, i64, i64 } @finch.host.pathSeparator() + store { ptr, i64, i64 } %t601, ptr %a602 + call void @finch_str_split(ptr %a603, ptr %a599, ptr %a602) + store { ptr, i64, i64 } %t601, ptr %a604 + call void @finch_str_drop(ptr %a604) + %t605 = load { ptr, i64, i64 }, ptr %a603 store { ptr, i64, i64 } %t605, ptr %a606 - call void @finch_str_copy(ptr %a607, ptr %a606) - %t608 = load { ptr, i64, i64 }, ptr %a607 - %t609 = load i64, ptr %t604 - %t610 = add i64 %t609, 1 - call void @finch_arr_reserve(ptr %a566, i64 %t610, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t611 = load ptr, ptr %a566 - %t612 = getelementptr inbounds { ptr, i64, i64 }, ptr %t611, i64 %t609 - store { ptr, i64, i64 } %t608, ptr %t612 - store i64 %t610, ptr %t604 - br label %endif330 -endif330: - %t613 = getelementptr inbounds %S.ast.Program, ptr %a581, i32 0, i32 3 - %t614 = getelementptr inbounds { ptr, i64, i64 }, ptr %t613, i32 0, i32 1 - %t615 = load i64, ptr %t614 - store i64 0, ptr %a616 - br label %for.cond331 -for.cond331: - %t617 = load i64, ptr %a616 - %t618 = icmp slt i64 %t617, %t615 - br i1 %t618, label %for.body332, label %for.end334 -for.body332: - %t619 = getelementptr inbounds { ptr, i64, i64 }, ptr %a561, i32 0, i32 1 - %t620 = getelementptr inbounds %S.ast.Program, ptr %a581, i32 0, i32 3 - %t621 = load i64, ptr %a616 - %t622 = load { ptr, i64, i64 }, ptr %t620 - %t623 = extractvalue { ptr, i64, i64 } %t622, 1 - %t624 = icmp uge i64 %t621, %t623 - br i1 %t624, label %range335, label %inrange336 -range335: - call void @finch_panic_index(ptr @.str.213, i64 244, i64 %t621, i64 %t623) + store i64 0, ptr %a607 + br label %each.cond340 +each.cond340: + %t608 = getelementptr inbounds { ptr, i64, i64 }, ptr %a606, i32 0, i32 1 + %t609 = load i64, ptr %t608 + %t610 = load i64, ptr %a607 + %t611 = icmp slt i64 %t610, %t609 + br i1 %t611, label %each.body341, label %each.end343 +each.body341: + %t612 = load ptr, ptr %a606 + %t613 = getelementptr inbounds { ptr, i64, i64 }, ptr %t612, i64 %t610 + %t614 = load { ptr, i64, i64 }, ptr %t613 + store { ptr, i64, i64 } %t614, ptr %a615 + %t616 = getelementptr inbounds { ptr, i64, i64 }, ptr %a615, i32 0, i32 1 + %t617 = load i64, ptr %t616 + %t618 = icmp sgt i64 %t617, 0 + br i1 %t618, label %then344, label %endif346 +then344: + %t619 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 5 + %t620 = getelementptr inbounds { ptr, i64, i64 }, ptr %t619, i32 0, i32 1 + %t621 = load { ptr, i64, i64 }, ptr %a615 + store { ptr, i64, i64 } %t621, ptr %a622 + call void @finch_str_copy(ptr %a623, ptr %a622) + %t624 = load { ptr, i64, i64 }, ptr %a623 + %t625 = load i64, ptr %t620 + %t626 = add i64 %t625, 1 + call void @finch_arr_reserve(ptr %t619, i64 %t626, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t627 = load ptr, ptr %t619 + %t628 = getelementptr inbounds { ptr, i64, i64 }, ptr %t627, i64 %t625 + store { ptr, i64, i64 } %t624, ptr %t628 + store i64 %t626, ptr %t620 + br label %endif346 +endif346: + br label %each.step342 +each.step342: + %t629 = load i64, ptr %a607 + %t630 = add i64 %t629, 1 + store i64 %t630, ptr %a607 + br label %each.cond340 +each.end343: + call void @finch.drop.arr_str(ptr %a606) + %t631 = load { ptr, i64, i64 }, ptr %a77 + call void @finch.main.load(ptr %a474, { ptr, i64, i64 } %t631, { ptr, i64, i64 } { ptr @.str.223, i64 0, i64 0 }) + store { ptr, i64, i64 } zeroinitializer, ptr %a632 + store { ptr, i64, i64 } zeroinitializer, ptr %a633 + %t634 = load { ptr, i64, i64 }, ptr %a110 + store { ptr, i64, i64 } %t634, ptr %a635 + call void @finch.copy.arr_str(ptr %a636, ptr %a635) + %t637 = load { ptr, i64, i64 }, ptr %a636 + store { ptr, i64, i64 } %t637, ptr %a638 + %t639 = load { ptr, i64, i64 }, ptr %a109 + store { ptr, i64, i64 } %t639, ptr %a640 + call void @finch.copy.arr_str(ptr %a641, ptr %a640) + %t642 = load { ptr, i64, i64 }, ptr %a641 + store { ptr, i64, i64 } %t642, ptr %a643 + %t644 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 0 + store i64 0, ptr %a645 + br label %each.cond347 +each.cond347: + %t646 = getelementptr inbounds { ptr, i64, i64 }, ptr %t644, i32 0, i32 1 + %t647 = load i64, ptr %t646 + %t648 = load i64, ptr %a645 + %t649 = icmp slt i64 %t648, %t647 + br i1 %t649, label %each.body348, label %each.end350 +each.body348: + %t650 = load ptr, ptr %t644 + %t651 = getelementptr inbounds %S.ast.Program, ptr %t650, i64 %t648 + %t652 = load %S.ast.Program, ptr %t651 + store %S.ast.Program %t652, ptr %a653 + %t654 = getelementptr inbounds %S.ast.Program, ptr %a653, i32 0, i32 1 + %t655 = load { ptr, i64, i64 }, ptr %t654 + %t656 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t655) + store { ptr, i64, i64 } %t656, ptr %a657 + %t658 = getelementptr inbounds { ptr, i64, i64 }, ptr %a638, i32 0, i32 1 + %t659 = load { ptr, i64, i64 }, ptr %a657 + store i64 -1, ptr %a660 + %t661 = load i64, ptr %t658 + %t662 = load ptr, ptr %a638 + store i64 0, ptr %a663 + br label %find.cond351 +find.cond351: + %t664 = load i64, ptr %a663 + %t665 = icmp slt i64 %t664, %t661 + br i1 %t665, label %find.body352, label %find.end355 +find.body352: + %t666 = getelementptr inbounds { ptr, i64, i64 }, ptr %t662, i64 %t664 + %t667 = load { ptr, i64, i64 }, ptr %t666 + store { ptr, i64, i64 } %t667, ptr %a668 + store { ptr, i64, i64 } %t659, ptr %a669 + %t670 = call i32 @finch_str_eq(ptr %a668, ptr %a669) + %t671 = icmp ne i32 %t670, 0 + br i1 %t671, label %find.hit353, label %find.next354 +find.hit353: + store i64 %t664, ptr %a660 + br label %find.end355 +find.next354: + %t672 = add i64 %t664, 1 + store i64 %t672, ptr %a663 + br label %find.cond351 +find.end355: + %t673 = load i64, ptr %a660 + %t674 = icmp sge i64 %t673, 0 + %t675 = xor i1 %t674, true + br i1 %t675, label %then356, label %endif358 +then356: + %t676 = getelementptr inbounds { ptr, i64, i64 }, ptr %a638, i32 0, i32 1 + %t677 = load { ptr, i64, i64 }, ptr %a657 + store { ptr, i64, i64 } %t677, ptr %a678 + call void @finch_str_copy(ptr %a679, ptr %a678) + %t680 = load { ptr, i64, i64 }, ptr %a679 + %t681 = load i64, ptr %t676 + %t682 = add i64 %t681, 1 + call void @finch_arr_reserve(ptr %a638, i64 %t682, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t683 = load ptr, ptr %a638 + %t684 = getelementptr inbounds { ptr, i64, i64 }, ptr %t683, i64 %t681 + store { ptr, i64, i64 } %t680, ptr %t684 + store i64 %t682, ptr %t676 + br label %endif358 +endif358: + %t685 = getelementptr inbounds %S.ast.Program, ptr %a653, i32 0, i32 3 + %t686 = getelementptr inbounds { ptr, i64, i64 }, ptr %t685, i32 0, i32 1 + %t687 = load i64, ptr %t686 + store i64 0, ptr %a688 + br label %for.cond359 +for.cond359: + %t689 = load i64, ptr %a688 + %t690 = icmp slt i64 %t689, %t687 + br i1 %t690, label %for.body360, label %for.end362 +for.body360: + %t691 = getelementptr inbounds { ptr, i64, i64 }, ptr %a633, i32 0, i32 1 + %t692 = getelementptr inbounds %S.ast.Program, ptr %a653, i32 0, i32 3 + %t693 = load i64, ptr %a688 + %t694 = load { ptr, i64, i64 }, ptr %t692 + %t695 = extractvalue { ptr, i64, i64 } %t694, 1 + %t696 = icmp uge i64 %t693, %t695 + br i1 %t696, label %range363, label %inrange364 +range363: + call void @finch_panic_index(ptr @.str.224, i64 266, i64 %t693, i64 %t695) unreachable -inrange336: - %t625 = extractvalue { ptr, i64, i64 } %t622, 0 - %t626 = getelementptr inbounds { ptr, i64, i64 }, ptr %t625, i64 %t621 - %t627 = load { ptr, i64, i64 }, ptr %t626 - store i64 -1, ptr %a628 - %t629 = load i64, ptr %t619 - %t630 = load ptr, ptr %a561 - store i64 0, ptr %a631 - br label %find.cond337 -find.cond337: - %t632 = load i64, ptr %a631 - %t633 = icmp slt i64 %t632, %t629 - br i1 %t633, label %find.body338, label %find.end341 -find.body338: - %t634 = getelementptr inbounds { ptr, i64, i64 }, ptr %t630, i64 %t632 - %t635 = load { ptr, i64, i64 }, ptr %t634 - store { ptr, i64, i64 } %t635, ptr %a636 - store { ptr, i64, i64 } %t627, ptr %a637 - %t638 = call i32 @finch_str_eq(ptr %a636, ptr %a637) - %t639 = icmp ne i32 %t638, 0 - br i1 %t639, label %find.hit339, label %find.next340 -find.hit339: - store i64 %t632, ptr %a628 - br label %find.end341 -find.next340: - %t640 = add i64 %t632, 1 - store i64 %t640, ptr %a631 - br label %find.cond337 -find.end341: - %t641 = load i64, ptr %a628 - %t642 = icmp sge i64 %t641, 0 - %t643 = xor i1 %t642, true - br i1 %t643, label %then342, label %endif344 -then342: - %t644 = getelementptr inbounds { ptr, i64, i64 }, ptr %a561, i32 0, i32 1 - %t645 = getelementptr inbounds %S.ast.Program, ptr %a581, i32 0, i32 3 - %t646 = load i64, ptr %a616 - %t647 = load { ptr, i64, i64 }, ptr %t645 - %t648 = extractvalue { ptr, i64, i64 } %t647, 1 - %t649 = icmp uge i64 %t646, %t648 - br i1 %t649, label %range345, label %inrange346 -range345: - call void @finch_panic_index(ptr @.str.214, i64 245, i64 %t646, i64 %t648) - unreachable -inrange346: - %t650 = extractvalue { ptr, i64, i64 } %t647, 0 - %t651 = getelementptr inbounds { ptr, i64, i64 }, ptr %t650, i64 %t646 - %t652 = load { ptr, i64, i64 }, ptr %t651 - store { ptr, i64, i64 } %t652, ptr %a653 - call void @finch_str_copy(ptr %a654, ptr %a653) - %t655 = load { ptr, i64, i64 }, ptr %a654 - %t656 = load i64, ptr %t644 - %t657 = add i64 %t656, 1 - call void @finch_arr_reserve(ptr %a561, i64 %t657, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t658 = load ptr, ptr %a561 - %t659 = getelementptr inbounds { ptr, i64, i64 }, ptr %t658, i64 %t656 - store { ptr, i64, i64 } %t655, ptr %t659 - store i64 %t657, ptr %t644 - %t660 = getelementptr inbounds { ptr, i64, i64 }, ptr %a560, i32 0, i32 1 - %t661 = getelementptr inbounds %S.ast.Program, ptr %a581, i32 0, i32 3 - %t662 = load i64, ptr %a616 - %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.215, 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 zeroinitializer, { ptr, i64, i64 } %t671, 0 - %t673 = getelementptr inbounds %S.ast.Program, ptr %a581, i32 0, i32 4 - %t674 = load i64, ptr %a616 - %t675 = load { ptr, i64, i64 }, ptr %t673 - %t676 = extractvalue { ptr, i64, i64 } %t675, 1 - %t677 = icmp uge i64 %t674, %t676 - br i1 %t677, label %range349, label %inrange350 -range349: - call void @finch_panic_index(ptr @.str.216, i64 246, i64 %t674, i64 %t676) - unreachable -inrange350: - %t678 = extractvalue { ptr, i64, i64 } %t675, 0 - %t679 = getelementptr inbounds { ptr, i64, i64 }, ptr %t678, i64 %t674 - %t680 = load { ptr, i64, i64 }, ptr %t679 - store { ptr, i64, i64 } %t680, ptr %a681 - call void @finch_str_copy(ptr %a682, ptr %a681) - %t683 = load { ptr, i64, i64 }, ptr %a682 - %t684 = insertvalue %S.cimport.Header %t672, { ptr, i64, i64 } %t683, 1 - %t685 = load i64, ptr %t660 - %t686 = add i64 %t685, 1 - call void @finch_arr_reserve(ptr %a560, i64 %t686, i64 ptrtoint (ptr getelementptr (%S.cimport.Header, ptr null, i32 1) to i64)) - %t687 = load ptr, ptr %a560 - %t688 = getelementptr inbounds %S.cimport.Header, ptr %t687, i64 %t685 - store %S.cimport.Header %t684, ptr %t688 - store i64 %t686, ptr %t660 - br label %endif344 -endif344: - br label %for.step333 -for.step333: - %t689 = load i64, ptr %a616 - %t690 = add i64 %t689, 1 - store i64 %t690, ptr %a616 - br label %for.cond331 -for.end334: - %t691 = getelementptr inbounds %S.ast.Program, ptr %a581, i32 0, i32 5 - store i64 0, ptr %a692 - br label %each.cond351 -each.cond351: - %t693 = getelementptr inbounds { ptr, i64, i64 }, ptr %t691, i32 0, i32 1 - %t694 = load i64, ptr %t693 - %t695 = load i64, ptr %a692 - %t696 = icmp slt i64 %t695, %t694 - br i1 %t696, label %each.body352, label %each.end354 -each.body352: - %t697 = load ptr, ptr %t691 - %t698 = getelementptr inbounds { ptr, i64, i64 }, ptr %t697, i64 %t695 +inrange364: + %t697 = extractvalue { ptr, i64, i64 } %t694, 0 + %t698 = getelementptr inbounds { ptr, i64, i64 }, ptr %t697, i64 %t693 %t699 = load { ptr, i64, i64 }, ptr %t698 - store { ptr, i64, i64 } %t699, ptr %a700 - %t701 = load { ptr, i64, i64 }, ptr %a700 - store { ptr, i64, i64 } %t701, ptr %a702 - store { ptr, i64, i64 } { ptr @.str.218, i64 2, i64 0 }, ptr %a704 - %t705 = call i32 @finch_str_ends(ptr %a702, ptr %a704) - %t706 = icmp ne i32 %t705, 0 - br label %logic.from355 -logic.from355: - br i1 %t706, label %logic.end357, label %logic.rhs356 -logic.rhs356: - %t707 = load { ptr, i64, i64 }, ptr %a700 + store i64 -1, ptr %a700 + %t701 = load i64, ptr %t691 + %t702 = load ptr, ptr %a633 + store i64 0, ptr %a703 + br label %find.cond365 +find.cond365: + %t704 = load i64, ptr %a703 + %t705 = icmp slt i64 %t704, %t701 + br i1 %t705, label %find.body366, label %find.end369 +find.body366: + %t706 = getelementptr inbounds { ptr, i64, i64 }, ptr %t702, i64 %t704 + %t707 = load { ptr, i64, i64 }, ptr %t706 store { ptr, i64, i64 } %t707, ptr %a708 - store { ptr, i64, i64 } { ptr @.str.220, i64 2, i64 0 }, ptr %a710 - %t711 = call i32 @finch_str_ends(ptr %a708, ptr %a710) - %t712 = icmp ne i32 %t711, 0 - br label %logic.rend358 -logic.rend358: - br label %logic.end357 -logic.end357: - %t713 = phi i1 [ true, %logic.from355 ], [ %t712, %logic.rend358 ] - br label %logic.from359 -logic.from359: - br i1 %t713, label %logic.end361, label %logic.rhs360 -logic.rhs360: - %t714 = load { ptr, i64, i64 }, ptr %a700 - store { ptr, i64, i64 } %t714, ptr %a715 - store { ptr, i64, i64 } { ptr @.str.222, i64 2, i64 0 }, ptr %a717 - %t718 = call i32 @finch_str_ends(ptr %a715, ptr %a717) - %t719 = icmp ne i32 %t718, 0 - br label %logic.rend362 -logic.rend362: - br label %logic.end361 -logic.end361: - %t720 = phi i1 [ true, %logic.from359 ], [ %t719, %logic.rend362 ] - br i1 %t720, label %then363, label %else364 -then363: - %t721 = getelementptr inbounds { ptr, i64, i64 }, ptr %a571, i32 0, i32 1 - %t722 = load { ptr, i64, i64 }, ptr %a585 - store { ptr, i64, i64 } %t722, ptr %a724 - store { ptr, i64, i64 } { ptr @.str.223, i64 1, i64 0 }, ptr %a725 - call void @finch_str_concat(ptr %a723, ptr %a724, ptr %a725) - %t726 = load { ptr, i64, i64 }, ptr %a723 - %t727 = load { ptr, i64, i64 }, ptr %a700 - store { ptr, i64, i64 } %t726, ptr %a729 - store { ptr, i64, i64 } %t727, ptr %a730 - call void @finch_str_concat(ptr %a728, ptr %a729, ptr %a730) - %t731 = load { ptr, i64, i64 }, ptr %a728 - %t732 = load i64, ptr %t721 - %t733 = add i64 %t732, 1 - call void @finch_arr_reserve(ptr %a571, i64 %t733, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t734 = load ptr, ptr %a571 - %t735 = getelementptr inbounds { ptr, i64, i64 }, ptr %t734, i64 %t732 - store { ptr, i64, i64 } %t731, ptr %t735 - store i64 %t733, ptr %t721 - br label %endif365 -else364: - %t736 = getelementptr inbounds { ptr, i64, i64 }, ptr %a571, i32 0, i32 1 - %t737 = load { ptr, i64, i64 }, ptr %a700 - store { ptr, i64, i64 } %t737, ptr %a738 - call void @finch_str_copy(ptr %a739, ptr %a738) - %t740 = load { ptr, i64, i64 }, ptr %a739 - %t741 = load i64, ptr %t736 - %t742 = add i64 %t741, 1 - call void @finch_arr_reserve(ptr %a571, i64 %t742, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t743 = load ptr, ptr %a571 - %t744 = getelementptr inbounds { ptr, i64, i64 }, ptr %t743, i64 %t741 - store { ptr, i64, i64 } %t740, ptr %t744 - store i64 %t742, ptr %t736 - br label %endif365 -endif365: - br label %each.step353 -each.step353: - %t745 = load i64, ptr %a692 - %t746 = add i64 %t745, 1 - store i64 %t746, ptr %a692 - br label %each.cond351 -each.end354: - br label %each.step321 -each.step321: - %t747 = load i64, ptr %a573 - %t748 = add i64 %t747, 1 - store i64 %t748, ptr %a573 - br label %each.cond319 -each.end322: - store { ptr, i64, i64 } { ptr @.str.224, i64 0, i64 0 }, ptr %a749 - %t750 = getelementptr inbounds %S.platform.Target, ptr %a375, i32 0, i32 5 - %t751 = load i1, ptr %t750 - br i1 %t751, label %then366, label %endif368 -then366: - %t752 = getelementptr inbounds %S.platform.Target, ptr %a375, i32 0, i32 0 - %t753 = load { ptr, i64, i64 }, ptr %t752 - store { ptr, i64, i64 } %t753, ptr %a754 - call void @finch_str_copy(ptr %a755, ptr %a754) - %t756 = load { ptr, i64, i64 }, ptr %a755 - store { ptr, i64, i64 } %t756, ptr %a749 - br label %endif368 -endif368: - %t757 = load { ptr, i64, i64 }, ptr %a560 - %t758 = load { ptr, i64, i64 }, ptr %a566 - %t759 = load { ptr, i64, i64 }, ptr %a749 - %t760 = getelementptr inbounds %S.platform.Target, ptr %a375, i32 0, i32 1 - %t761 = load i1, ptr %t760 - %t762 = getelementptr inbounds %S.platform.Target, ptr %a375, i32 0, i32 7 - %t763 = load { ptr, i64, i64 }, ptr %t762 - %t764 = call { i1, %S.cimport.CImports, { ptr, i64, i64 } } @finch.cimport.importHeaders({ ptr, i64, i64 } %t757, { ptr, i64, i64 } %t758, { ptr, i64, i64 } %t759, i1 %t761, { ptr, i64, i64 } %t763) - %t765 = extractvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t764, 0 - %t766 = xor i1 %t765, true - %t767 = extractvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t764, 2 - %t768 = extractvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t764, 1 - br i1 %t766, label %or.failed369, label %or.ok370 -or.failed369: - store { ptr, i64, i64 } %t767, ptr %a769 - %t770 = load { ptr, i64, i64 }, ptr %a769 - %t771 = extractvalue { ptr, i64, i64 } %t770, 1 - %t772 = trunc i64 %t771 to i32 - %t773 = extractvalue { ptr, i64, i64 } %t770, 0 - %t774 = icmp eq ptr %t773, null - %t775 = select i1 %t774, ptr @.str.225, ptr %t773 - %t776 = call i32 (ptr, ...) @printf(ptr @.str.226, i32 %t772, ptr %t775) - %t777 = call i32 (ptr, ...) @printf(ptr @.str.227) - ret i64 1 -or.ok370: - store %S.cimport.CImports %t768, ptr %a778 - %t779 = getelementptr inbounds %S.main.Loader, ptr %a433, i32 0, i32 0 - %t780 = load { ptr, i64, i64 }, ptr %t779 - %t781 = getelementptr inbounds %S.main.Loader, ptr %a433, i32 0, i32 1 - %t782 = load { ptr, i64, i64 }, ptr %t781 - %t783 = load %S.cimport.CImports, ptr %a778 - %t784 = load i1, ptr %a105 - %t785 = insertvalue %S.gen.Options zeroinitializer, i1 %t784, 0 - %t786 = load { ptr, i64, i64 }, ptr %a67 + store { ptr, i64, i64 } %t699, ptr %a709 + %t710 = call i32 @finch_str_eq(ptr %a708, ptr %a709) + %t711 = icmp ne i32 %t710, 0 + br i1 %t711, label %find.hit367, label %find.next368 +find.hit367: + store i64 %t704, ptr %a700 + br label %find.end369 +find.next368: + %t712 = add i64 %t704, 1 + store i64 %t712, ptr %a703 + br label %find.cond365 +find.end369: + %t713 = load i64, ptr %a700 + %t714 = icmp sge i64 %t713, 0 + %t715 = xor i1 %t714, true + br i1 %t715, label %then370, label %endif372 +then370: + %t716 = getelementptr inbounds { ptr, i64, i64 }, ptr %a633, i32 0, i32 1 + %t717 = getelementptr inbounds %S.ast.Program, ptr %a653, i32 0, i32 3 + %t718 = load i64, ptr %a688 + %t719 = load { ptr, i64, i64 }, ptr %t717 + %t720 = extractvalue { ptr, i64, i64 } %t719, 1 + %t721 = icmp uge i64 %t718, %t720 + br i1 %t721, label %range373, label %inrange374 +range373: + call void @finch_panic_index(ptr @.str.225, i64 267, i64 %t718, i64 %t720) + unreachable +inrange374: + %t722 = extractvalue { ptr, i64, i64 } %t719, 0 + %t723 = getelementptr inbounds { ptr, i64, i64 }, ptr %t722, i64 %t718 + %t724 = load { ptr, i64, i64 }, ptr %t723 + store { ptr, i64, i64 } %t724, ptr %a725 + call void @finch_str_copy(ptr %a726, ptr %a725) + %t727 = load { ptr, i64, i64 }, ptr %a726 + %t728 = load i64, ptr %t716 + %t729 = add i64 %t728, 1 + call void @finch_arr_reserve(ptr %a633, i64 %t729, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t730 = load ptr, ptr %a633 + %t731 = getelementptr inbounds { ptr, i64, i64 }, ptr %t730, i64 %t728 + store { ptr, i64, i64 } %t727, ptr %t731 + store i64 %t729, ptr %t716 + %t732 = getelementptr inbounds { ptr, i64, i64 }, ptr %a632, i32 0, i32 1 + %t733 = getelementptr inbounds %S.ast.Program, ptr %a653, i32 0, i32 3 + %t734 = load i64, ptr %a688 + %t735 = load { ptr, i64, i64 }, ptr %t733 + %t736 = extractvalue { ptr, i64, i64 } %t735, 1 + %t737 = icmp uge i64 %t734, %t736 + br i1 %t737, label %range375, label %inrange376 +range375: + call void @finch_panic_index(ptr @.str.226, i64 268, i64 %t734, i64 %t736) + unreachable +inrange376: + %t738 = extractvalue { ptr, i64, i64 } %t735, 0 + %t739 = getelementptr inbounds { ptr, i64, i64 }, ptr %t738, i64 %t734 + %t740 = load { ptr, i64, i64 }, ptr %t739 + store { ptr, i64, i64 } %t740, ptr %a741 + call void @finch_str_copy(ptr %a742, ptr %a741) + %t743 = load { ptr, i64, i64 }, ptr %a742 + %t744 = insertvalue %S.cimport.Header zeroinitializer, { ptr, i64, i64 } %t743, 0 + %t745 = getelementptr inbounds %S.ast.Program, ptr %a653, i32 0, i32 4 + %t746 = load i64, ptr %a688 + %t747 = load { ptr, i64, i64 }, ptr %t745 + %t748 = extractvalue { ptr, i64, i64 } %t747, 1 + %t749 = icmp uge i64 %t746, %t748 + br i1 %t749, label %range377, label %inrange378 +range377: + call void @finch_panic_index(ptr @.str.227, i64 268, i64 %t746, i64 %t748) + unreachable +inrange378: + %t750 = extractvalue { ptr, i64, i64 } %t747, 0 + %t751 = getelementptr inbounds { ptr, i64, i64 }, ptr %t750, i64 %t746 + %t752 = load { ptr, i64, i64 }, ptr %t751 + store { ptr, i64, i64 } %t752, ptr %a753 + call void @finch_str_copy(ptr %a754, ptr %a753) + %t755 = load { ptr, i64, i64 }, ptr %a754 + %t756 = insertvalue %S.cimport.Header %t744, { ptr, i64, i64 } %t755, 1 + %t757 = load i64, ptr %t732 + %t758 = add i64 %t757, 1 + call void @finch_arr_reserve(ptr %a632, i64 %t758, i64 ptrtoint (ptr getelementptr (%S.cimport.Header, ptr null, i32 1) to i64)) + %t759 = load ptr, ptr %a632 + %t760 = getelementptr inbounds %S.cimport.Header, ptr %t759, i64 %t757 + store %S.cimport.Header %t756, ptr %t760 + store i64 %t758, ptr %t732 + br label %endif372 +endif372: + br label %for.step361 +for.step361: + %t761 = load i64, ptr %a688 + %t762 = add i64 %t761, 1 + store i64 %t762, ptr %a688 + br label %for.cond359 +for.end362: + %t763 = getelementptr inbounds %S.ast.Program, ptr %a653, i32 0, i32 5 + store i64 0, ptr %a764 + br label %each.cond379 +each.cond379: + %t765 = getelementptr inbounds { ptr, i64, i64 }, ptr %t763, i32 0, i32 1 + %t766 = load i64, ptr %t765 + %t767 = load i64, ptr %a764 + %t768 = icmp slt i64 %t767, %t766 + br i1 %t768, label %each.body380, label %each.end382 +each.body380: + %t769 = load ptr, ptr %t763 + %t770 = getelementptr inbounds { ptr, i64, i64 }, ptr %t769, i64 %t767 + %t771 = load { ptr, i64, i64 }, ptr %t770 + store { ptr, i64, i64 } %t771, ptr %a772 + %t773 = load { ptr, i64, i64 }, ptr %a772 + store { ptr, i64, i64 } %t773, ptr %a774 + store { ptr, i64, i64 } { ptr @.str.229, i64 2, i64 0 }, ptr %a776 + %t777 = call i32 @finch_str_ends(ptr %a774, ptr %a776) + %t778 = icmp ne i32 %t777, 0 + br label %logic.from383 +logic.from383: + br i1 %t778, label %logic.end385, label %logic.rhs384 +logic.rhs384: + %t779 = load { ptr, i64, i64 }, ptr %a772 + store { ptr, i64, i64 } %t779, ptr %a780 + store { ptr, i64, i64 } { ptr @.str.231, i64 2, i64 0 }, ptr %a782 + %t783 = call i32 @finch_str_ends(ptr %a780, ptr %a782) + %t784 = icmp ne i32 %t783, 0 + br label %logic.rend386 +logic.rend386: + br label %logic.end385 +logic.end385: + %t785 = phi i1 [ true, %logic.from383 ], [ %t784, %logic.rend386 ] + br label %logic.from387 +logic.from387: + br i1 %t785, label %logic.end389, label %logic.rhs388 +logic.rhs388: + %t786 = load { ptr, i64, i64 }, ptr %a772 store { ptr, i64, i64 } %t786, ptr %a787 - store { ptr, i64, i64 } { ptr @.str.228, i64 5, i64 0 }, ptr %a788 - %t789 = call i32 @finch_str_eq(ptr %a787, ptr %a788) - %t790 = icmp ne i32 %t789, 0 - %t791 = insertvalue %S.gen.Options %t785, i1 %t790, 1 - %t792 = load i1, ptr %a106 - %t793 = insertvalue %S.gen.Options %t791, i1 %t792, 2 - %t794 = extractvalue { ptr, i64, i64 } { ptr @.str.229, i64 3, i64 0 }, 0 - %t795 = icmp eq ptr %t794, null - %t796 = select i1 %t795, ptr @.str.230, ptr %t794 - %t797 = call ptr @getenv(ptr %t796) - store { ptr, i64, i64 } zeroinitializer, ptr %a798 - call void @finch_str_from_c(ptr %a798, ptr %t797) - %t799 = load { ptr, i64, i64 }, ptr %a798 - store { ptr, i64, i64 } %t799, ptr %a800 - call void @finch_str_copy(ptr %a801, ptr %a800) - %t802 = load { ptr, i64, i64 }, ptr %a801 - %t803 = insertvalue %S.gen.Options %t793, { ptr, i64, i64 } %t802, 3 - %t804 = load %S.platform.Target, ptr %a375 - store %S.platform.Target %t804, ptr %a805 - call void @finch.copy.S_platform_Target(ptr %a806, ptr %a805) - %t807 = load %S.platform.Target, ptr %a806 - %t808 = insertvalue %S.gen.Options %t803, %S.platform.Target %t807, 4 - %t809 = call { ptr, i64, i64 } @finch.gen.generate({ ptr, i64, i64 } %t780, { ptr, i64, i64 } %t782, %S.cimport.CImports %t783, %S.gen.Options %t808) - store { ptr, i64, i64 } %t809, ptr %a810 - %t811 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t811, ptr %a812 - store { ptr, i64, i64 } { ptr @.str.231, i64 2, i64 0 }, ptr %a813 - %t814 = call i32 @finch_str_eq(ptr %a812, ptr %a813) - %t815 = icmp ne i32 %t814, 0 - br label %logic.from371 -logic.from371: - br i1 %t815, label %logic.end373, label %logic.rhs372 -logic.rhs372: - %t816 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t816, ptr %a817 - store { ptr, i64, i64 } { ptr @.str.232, i64 5, i64 0 }, ptr %a818 - %t819 = call i32 @finch_str_eq(ptr %a817, ptr %a818) - %t820 = icmp ne i32 %t819, 0 - br label %logic.rend374 -logic.rend374: - br label %logic.end373 -logic.end373: - %t821 = phi i1 [ true, %logic.from371 ], [ %t820, %logic.rend374 ] - br i1 %t821, label %then375, label %endif377 -then375: - %t822 = load { ptr, i64, i64 }, ptr %a810 - %t823 = extractvalue { ptr, i64, i64 } %t822, 1 - %t824 = trunc i64 %t823 to i32 - %t825 = extractvalue { ptr, i64, i64 } %t822, 0 - %t826 = icmp eq ptr %t825, null - %t827 = select i1 %t826, ptr @.str.233, ptr %t825 - %t828 = call i32 (ptr, ...) @printf(ptr @.str.234, i32 %t824, ptr %t827) - %t829 = call i32 (ptr, ...) @printf(ptr @.str.235) - ret i64 0 -endif377: - %t830 = extractvalue { ptr, i64, i64 } { ptr @.str.236, i64 8, i64 0 }, 0 - %t831 = icmp eq ptr %t830, null - %t832 = select i1 %t831, ptr @.str.237, ptr %t830 - %t833 = call ptr @getenv(ptr %t832) - store { ptr, i64, i64 } zeroinitializer, ptr %a834 - call void @finch_str_from_c(ptr %a834, ptr %t833) - %t835 = load { ptr, i64, i64 }, ptr %a834 - store { ptr, i64, i64 } %t835, ptr %a836 - call void @finch_str_copy(ptr %a837, ptr %a836) - %t838 = load { ptr, i64, i64 }, ptr %a837 - store { ptr, i64, i64 } %t838, ptr %a839 - %t840 = getelementptr inbounds { ptr, i64, i64 }, ptr %a839, i32 0, i32 1 - %t841 = load i64, ptr %t840 - %t842 = icmp eq i64 %t841, 0 - br i1 %t842, label %then378, label %endif380 -then378: - %t843 = load { ptr, i64, i64 }, ptr %a1 - %t844 = extractvalue { ptr, i64, i64 } %t843, 1 - %t845 = icmp uge i64 0, %t844 - br i1 %t845, label %range381, label %inrange382 -range381: - call void @finch_panic_index(ptr @.str.238, i64 274, i64 0, i64 %t844) - unreachable -inrange382: - %t846 = extractvalue { ptr, i64, i64 } %t843, 0 - %t847 = getelementptr inbounds { ptr, i64, i64 }, ptr %t846, i64 0 - %t848 = load { ptr, i64, i64 }, ptr %t847 - %t849 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t848) - store { ptr, i64, i64 } %t849, ptr %a851 - store { ptr, i64, i64 } { ptr @.str.239, i64 22, i64 0 }, ptr %a852 - call void @finch_str_concat(ptr %a850, ptr %a851, ptr %a852) - %t853 = load { ptr, i64, i64 }, ptr %a850 - store { ptr, i64, i64 } %t853, ptr %a839 - br label %endif380 -endif380: - %t854 = load { ptr, i64, i64 }, ptr %a839 - store { ptr, i64, i64 } %t854, ptr %a855 - %t856 = call i32 @finch_file_exists(ptr %a855) - %t857 = icmp ne i32 %t856, 0 - %t858 = xor i1 %t857, true - br i1 %t858, label %then383, label %endif385 -then383: - %t859 = load { ptr, i64, i64 }, ptr %a1 - %t860 = extractvalue { ptr, i64, i64 } %t859, 1 - %t861 = icmp uge i64 0, %t860 - br i1 %t861, label %range386, label %inrange387 -range386: - call void @finch_panic_index(ptr @.str.240, i64 277, i64 0, i64 %t860) - unreachable -inrange387: - %t862 = extractvalue { ptr, i64, i64 } %t859, 0 - %t863 = getelementptr inbounds { ptr, i64, i64 }, ptr %t862, i64 0 - %t864 = load { ptr, i64, i64 }, ptr %t863 - %t865 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t864) - store { ptr, i64, i64 } %t865, ptr %a867 - store { ptr, i64, i64 } { ptr @.str.241, i64 19, i64 0 }, ptr %a868 - call void @finch_str_concat(ptr %a866, ptr %a867, ptr %a868) - %t869 = load { ptr, i64, i64 }, ptr %a866 - store { ptr, i64, i64 } %t869, ptr %a839 - br label %endif385 -endif385: - %t870 = load { ptr, i64, i64 }, ptr %a839 - store { ptr, i64, i64 } %t870, ptr %a871 - %t872 = call i32 @finch_file_exists(ptr %a871) - %t873 = icmp ne i32 %t872, 0 - %t874 = xor i1 %t873, true - br i1 %t874, label %then388, label %endif390 -then388: - %t875 = load { ptr, i64, i64 }, ptr %a1 - %t876 = extractvalue { ptr, i64, i64 } %t875, 1 - %t877 = icmp uge i64 0, %t876 - br i1 %t877, label %range391, label %inrange392 -range391: - call void @finch_panic_index(ptr @.str.242, i64 280, i64 0, i64 %t876) - unreachable -inrange392: - %t878 = extractvalue { ptr, i64, i64 } %t875, 0 - %t879 = getelementptr inbounds { ptr, i64, i64 }, ptr %t878, i64 0 - %t880 = load { ptr, i64, i64 }, ptr %t879 - %t881 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t880) - store { ptr, i64, i64 } %t881, ptr %a883 - store { ptr, i64, i64 } { ptr @.str.243, i64 34, i64 0 }, 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 %a839 - br label %endif390 -endif390: - %t886 = load { ptr, i64, i64 }, ptr %a839 - store { ptr, i64, i64 } %t886, ptr %a887 - %t888 = call i32 @finch_file_exists(ptr %a887) - %t889 = icmp ne i32 %t888, 0 - %t890 = xor i1 %t889, true - br label %logic.from393 -logic.from393: - br i1 %t890, label %logic.rhs394, label %logic.end395 -logic.rhs394: - store { ptr, i64, i64 } { ptr @.str.244, i64 18, i64 0 }, ptr %a891 - %t892 = call i32 @finch_file_exists(ptr %a891) - %t893 = icmp ne i32 %t892, 0 - br label %logic.rend396 -logic.rend396: - br label %logic.end395 -logic.end395: - %t894 = phi i1 [ false, %logic.from393 ], [ %t893, %logic.rend396 ] - br i1 %t894, label %then397, label %endif399 -then397: - store { ptr, i64, i64 } { ptr @.str.245, i64 18, i64 0 }, ptr %a839 - br label %endif399 -endif399: - %t895 = load { ptr, i64, i64 }, ptr %a839 - store { ptr, i64, i64 } %t895, ptr %a896 - %t897 = call i32 @finch_file_exists(ptr %a896) - %t898 = icmp ne i32 %t897, 0 - %t899 = xor i1 %t898, true - br i1 %t899, label %then400, label %endif402 -then400: - %t900 = extractvalue { ptr, i64, i64 } { ptr @.str.246, i64 56, i64 0 }, 1 - %t901 = trunc i64 %t900 to i32 - %t902 = extractvalue { ptr, i64, i64 } { ptr @.str.246, i64 56, i64 0 }, 0 - %t903 = icmp eq ptr %t902, null - %t904 = select i1 %t903, ptr @.str.247, ptr %t902 - %t905 = call i32 (ptr, ...) @printf(ptr @.str.248, i32 %t901, ptr %t904) - %t906 = call i32 (ptr, ...) @printf(ptr @.str.249) + store { ptr, i64, i64 } { ptr @.str.233, i64 2, i64 0 }, ptr %a789 + %t790 = call i32 @finch_str_ends(ptr %a787, ptr %a789) + %t791 = icmp ne i32 %t790, 0 + br label %logic.rend390 +logic.rend390: + br label %logic.end389 +logic.end389: + %t792 = phi i1 [ true, %logic.from387 ], [ %t791, %logic.rend390 ] + br i1 %t792, label %then391, label %else392 +then391: + %t793 = getelementptr inbounds { ptr, i64, i64 }, ptr %a643, i32 0, i32 1 + %t794 = load { ptr, i64, i64 }, ptr %a657 + store { ptr, i64, i64 } %t794, ptr %a796 + store { ptr, i64, i64 } { ptr @.str.234, i64 1, i64 0 }, ptr %a797 + call void @finch_str_concat(ptr %a795, ptr %a796, ptr %a797) + %t798 = load { ptr, i64, i64 }, ptr %a795 + %t799 = load { ptr, i64, i64 }, ptr %a772 + store { ptr, i64, i64 } %t798, ptr %a801 + store { ptr, i64, i64 } %t799, ptr %a802 + call void @finch_str_concat(ptr %a800, ptr %a801, ptr %a802) + store { ptr, i64, i64 } %t798, ptr %a803 + call void @finch_str_drop(ptr %a803) + %t804 = load { ptr, i64, i64 }, ptr %a800 + %t805 = load i64, ptr %t793 + %t806 = add i64 %t805, 1 + call void @finch_arr_reserve(ptr %a643, i64 %t806, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t807 = load ptr, ptr %a643 + %t808 = getelementptr inbounds { ptr, i64, i64 }, ptr %t807, i64 %t805 + store { ptr, i64, i64 } %t804, ptr %t808 + store i64 %t806, ptr %t793 + br label %endif393 +else392: + %t809 = getelementptr inbounds { ptr, i64, i64 }, ptr %a643, i32 0, i32 1 + %t810 = load { ptr, i64, i64 }, ptr %a772 + store { ptr, i64, i64 } %t810, ptr %a811 + call void @finch_str_copy(ptr %a812, ptr %a811) + %t813 = load { ptr, i64, i64 }, ptr %a812 + %t814 = load i64, ptr %t809 + %t815 = add i64 %t814, 1 + call void @finch_arr_reserve(ptr %a643, i64 %t815, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t816 = load ptr, ptr %a643 + %t817 = getelementptr inbounds { ptr, i64, i64 }, ptr %t816, i64 %t814 + store { ptr, i64, i64 } %t813, ptr %t817 + store i64 %t815, ptr %t809 + br label %endif393 +endif393: + br label %each.step381 +each.step381: + %t818 = load i64, ptr %a764 + %t819 = add i64 %t818, 1 + store i64 %t819, ptr %a764 + br label %each.cond379 +each.end382: + call void @finch_str_drop(ptr %a657) + br label %each.step349 +each.step349: + %t820 = load i64, ptr %a645 + %t821 = add i64 %t820, 1 + store i64 %t821, ptr %a645 + br label %each.cond347 +each.end350: + store { ptr, i64, i64 } { ptr @.str.235, i64 0, i64 0 }, ptr %a822 + %t823 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 5 + %t824 = load i1, ptr %t823 + br i1 %t824, label %then394, label %endif396 +then394: + %t825 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 0 + %t826 = load { ptr, i64, i64 }, ptr %t825 + store { ptr, i64, i64 } %t826, ptr %a827 + call void @finch_str_copy(ptr %a828, ptr %a827) + %t829 = load { ptr, i64, i64 }, ptr %a828 + %t830 = load { ptr, i64, i64 }, ptr %a822 + store { ptr, i64, i64 } %t829, ptr %a822 + store { ptr, i64, i64 } %t830, ptr %a831 + call void @finch_str_drop(ptr %a831) + br label %endif396 +endif396: + %t832 = load { ptr, i64, i64 }, ptr %a632 + %t833 = load { ptr, i64, i64 }, ptr %a638 + %t834 = load { ptr, i64, i64 }, ptr %a822 + %t835 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 1 + %t836 = load i1, ptr %t835 + %t837 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 7 + %t838 = load { ptr, i64, i64 }, ptr %t837 + %t839 = call { i1, %S.cimport.CImports, { ptr, i64, i64 } } @finch.cimport.importHeaders({ ptr, i64, i64 } %t832, { ptr, i64, i64 } %t833, { ptr, i64, i64 } %t834, i1 %t836, { ptr, i64, i64 } %t838) + %t840 = extractvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t839, 0 + %t841 = xor i1 %t840, true + %t842 = extractvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t839, 2 + %t843 = extractvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t839, 1 + br i1 %t841, label %or.failed397, label %or.ok398 +or.failed397: + store { ptr, i64, i64 } %t842, ptr %a844 + %t845 = load { ptr, i64, i64 }, ptr %a844 + %t846 = extractvalue { ptr, i64, i64 } %t845, 1 + %t847 = trunc i64 %t846 to i32 + %t848 = extractvalue { ptr, i64, i64 } %t845, 0 + %t849 = icmp eq ptr %t848, null + %t850 = select i1 %t849, ptr @.str.236, ptr %t848 + %t851 = call i32 (ptr, ...) @printf(ptr @.str.237, i32 %t847, ptr %t850) + %t852 = call i32 (ptr, ...) @printf(ptr @.str.238) + call void @finch_str_drop(ptr %a844) + call void @finch_str_drop(ptr %a822) + call void @finch.drop.arr_str(ptr %a643) + call void @finch.drop.arr_str(ptr %a638) + call void @finch.drop.arr_str(ptr %a633) + call void @finch.drop.arr_S_cimport_Header(ptr %a632) + call void @finch.drop.S_main_Loader(ptr %a474) + call void @finch.drop.S_platform_Target(ptr %a381) + call void @finch.drop.arr_str(ptr %a113) + call void @finch.drop.arr_str(ptr %a112) + call void @finch.drop.arr_str(ptr %a111) + call void @finch.drop.arr_str(ptr %a110) + call void @finch.drop.arr_str(ptr %a109) + call void @finch_str_drop(ptr %a108) + call void @finch_str_drop(ptr %a107) + call void @finch_str_drop(ptr %a103) + call void @finch_str_drop(ptr %a77) + call void @finch_str_drop(ptr %a67) ret i64 1 -endif402: - store { ptr, i64, i64 } { ptr @.str.250, i64 0, i64 0 }, ptr %a907 - %t908 = load i1, ptr %a105 - br i1 %t908, label %then403, label %endif405 -then403: - store { ptr, i64, i64 } { ptr @.str.251, i64 6, i64 0 }, ptr %a907 - br label %endif405 -endif405: - %t909 = load i1, ptr %a106 - br i1 %t909, label %then406, label %endif408 -then406: - %t910 = load { ptr, i64, i64 }, ptr %a907 - store { ptr, i64, i64 } %t910, ptr %a912 - store { ptr, i64, i64 } { ptr @.str.252, i64 3, i64 0 }, 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 %a907 - br label %endif408 -endif408: - %t915 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t915, ptr %a916 - call void @finch_str_copy(ptr %a917, ptr %a916) - %t918 = load { ptr, i64, i64 }, ptr %a917 - %t919 = insertvalue %S.linker.Build zeroinitializer, { ptr, i64, i64 } %t918, 0 - %t920 = load { ptr, i64, i64 }, ptr %a810 - store { ptr, i64, i64 } %t920, ptr %a921 - call void @finch_str_copy(ptr %a922, ptr %a921) - %t923 = load { ptr, i64, i64 }, ptr %a922 - %t924 = insertvalue %S.linker.Build %t919, { ptr, i64, i64 } %t923, 1 - %t925 = load { ptr, i64, i64 }, ptr %a839 - store { ptr, i64, i64 } %t925, ptr %a926 - call void @finch_str_copy(ptr %a927, ptr %a926) - %t928 = load { ptr, i64, i64 }, ptr %a927 - %t929 = insertvalue %S.linker.Build %t924, { ptr, i64, i64 } %t928, 2 - %t930 = load { ptr, i64, i64 }, ptr %a108 - store { ptr, i64, i64 } %t930, ptr %a931 - call void @finch_str_copy(ptr %a932, ptr %a931) - %t933 = load { ptr, i64, i64 }, ptr %a932 - %t934 = insertvalue %S.linker.Build %t929, { ptr, i64, i64 } %t933, 3 - %t935 = load { ptr, i64, i64 }, ptr %a907 - store { ptr, i64, i64 } %t935, ptr %a936 - call void @finch_str_copy(ptr %a937, ptr %a936) - %t938 = load { ptr, i64, i64 }, ptr %a937 - %t939 = insertvalue %S.linker.Build %t934, { ptr, i64, i64 } %t938, 4 - %t940 = load i1, ptr %a105 - %t941 = insertvalue %S.linker.Build %t939, i1 %t940, 5 - %t942 = load { ptr, i64, i64 }, ptr %a571 - store { ptr, i64, i64 } %t942, ptr %a943 - call void @finch.copy.arr_str(ptr %a944, ptr %a943) - %t945 = load { ptr, i64, i64 }, ptr %a944 - %t946 = insertvalue %S.linker.Build %t941, { ptr, i64, i64 } %t945, 6 - %t947 = load %S.platform.Target, ptr %a375 - %t948 = load %S.cimport.CImports, ptr %a778 - %t949 = call i64 @finch.linker.build(%S.linker.Build %t946, %S.platform.Target %t947, %S.cimport.CImports %t948) - %t950 = icmp ne i64 %t949, 0 - br i1 %t950, label %then409, label %endif411 +or.ok398: + store %S.cimport.CImports %t843, ptr %a853 + %t854 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 0 + %t855 = load { ptr, i64, i64 }, ptr %t854 + %t856 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 1 + %t857 = load { ptr, i64, i64 }, ptr %t856 + %t858 = load %S.cimport.CImports, ptr %a853 + %t859 = load i1, ptr %a105 + %t860 = insertvalue %S.gen.Options zeroinitializer, i1 %t859, 0 + %t861 = load { ptr, i64, i64 }, ptr %a67 + store { ptr, i64, i64 } %t861, ptr %a862 + store { ptr, i64, i64 } { ptr @.str.239, i64 5, i64 0 }, ptr %a863 + %t864 = call i32 @finch_str_eq(ptr %a862, ptr %a863) + %t865 = icmp ne i32 %t864, 0 + %t866 = insertvalue %S.gen.Options %t860, i1 %t865, 1 + %t867 = load i1, ptr %a106 + %t868 = insertvalue %S.gen.Options %t866, i1 %t867, 2 + %t869 = call { ptr, i64, i64 } @finch.host.cwd() + %t870 = insertvalue %S.gen.Options %t868, { ptr, i64, i64 } %t869, 3 + %t871 = load %S.platform.Target, ptr %a381 + store %S.platform.Target %t871, ptr %a872 + call void @finch.copy.S_platform_Target(ptr %a873, ptr %a872) + %t874 = load %S.platform.Target, ptr %a873 + %t875 = insertvalue %S.gen.Options %t870, %S.platform.Target %t874, 4 + %t876 = call { ptr, i64, i64 } @finch.gen.generate({ ptr, i64, i64 } %t855, { ptr, i64, i64 } %t857, %S.cimport.CImports %t858, %S.gen.Options %t875) + store %S.gen.Options %t875, ptr %a877 + call void @finch.drop.S_gen_Options(ptr %a877) + store { ptr, i64, i64 } %t876, ptr %a878 + %t879 = load { ptr, i64, i64 }, ptr %a67 + store { ptr, i64, i64 } %t879, ptr %a880 + store { ptr, i64, i64 } { ptr @.str.240, i64 2, i64 0 }, ptr %a881 + %t882 = call i32 @finch_str_eq(ptr %a880, ptr %a881) + %t883 = icmp ne i32 %t882, 0 + br label %logic.from405 +logic.from405: + br i1 %t883, label %logic.end407, label %logic.rhs406 +logic.rhs406: + %t884 = load { ptr, i64, i64 }, ptr %a67 + store { ptr, i64, i64 } %t884, ptr %a885 + store { ptr, i64, i64 } { ptr @.str.241, i64 5, i64 0 }, ptr %a886 + %t887 = call i32 @finch_str_eq(ptr %a885, ptr %a886) + %t888 = icmp ne i32 %t887, 0 + br label %logic.rend408 +logic.rend408: + br label %logic.end407 +logic.end407: + %t889 = phi i1 [ true, %logic.from405 ], [ %t888, %logic.rend408 ] + br i1 %t889, label %then409, label %endif411 then409: - ret i64 1 + %t890 = load { ptr, i64, i64 }, ptr %a878 + %t891 = extractvalue { ptr, i64, i64 } %t890, 1 + %t892 = trunc i64 %t891 to i32 + %t893 = extractvalue { ptr, i64, i64 } %t890, 0 + %t894 = icmp eq ptr %t893, null + %t895 = select i1 %t894, ptr @.str.242, ptr %t893 + %t896 = call i32 (ptr, ...) @printf(ptr @.str.243, i32 %t892, ptr %t895) + %t897 = call i32 (ptr, ...) @printf(ptr @.str.244) + call void @finch_str_drop(ptr %a878) + call void @finch.drop.S_cimport_CImports(ptr %a853) + call void @finch_str_drop(ptr %a822) + call void @finch.drop.arr_str(ptr %a643) + call void @finch.drop.arr_str(ptr %a638) + call void @finch.drop.arr_str(ptr %a633) + call void @finch.drop.arr_S_cimport_Header(ptr %a632) + call void @finch.drop.S_main_Loader(ptr %a474) + call void @finch.drop.S_platform_Target(ptr %a381) + call void @finch.drop.arr_str(ptr %a113) + call void @finch.drop.arr_str(ptr %a112) + call void @finch.drop.arr_str(ptr %a111) + call void @finch.drop.arr_str(ptr %a110) + call void @finch.drop.arr_str(ptr %a109) + call void @finch_str_drop(ptr %a108) + call void @finch_str_drop(ptr %a107) + call void @finch_str_drop(ptr %a103) + call void @finch_str_drop(ptr %a77) + call void @finch_str_drop(ptr %a67) + ret i64 0 endif411: - %t951 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t951, ptr %a952 - store { ptr, i64, i64 } { ptr @.str.253, i64 3, i64 0 }, ptr %a953 - %t954 = call i32 @finch_str_eq(ptr %a952, ptr %a953) - %t955 = icmp ne i32 %t954, 0 - br i1 %t955, label %then412, label %endif414 -then412: - store { ptr, i64, i64 } zeroinitializer, ptr %a956 - store i64 0, ptr %a957 - br label %each.cond415 -each.cond415: - %t958 = getelementptr inbounds { ptr, i64, i64 }, ptr %a113, i32 0, i32 1 - %t959 = load i64, ptr %t958 - %t960 = load i64, ptr %a957 - %t961 = icmp slt i64 %t960, %t959 - br i1 %t961, label %each.body416, label %each.end418 -each.body416: - %t962 = load ptr, ptr %a113 - %t963 = getelementptr inbounds { ptr, i64, i64 }, ptr %t962, i64 %t960 - %t964 = load { ptr, i64, i64 }, ptr %t963 - store { ptr, i64, i64 } %t964, ptr %a965 - %t966 = getelementptr inbounds { ptr, i64, i64 }, ptr %a956, i32 0, i32 1 - %t967 = load { ptr, i64, i64 }, ptr %a965 - %t968 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t967) - %t969 = load i64, ptr %t966 - %t970 = add i64 %t969, 1 - call void @finch_arr_reserve(ptr %a956, i64 %t970, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t971 = load ptr, ptr %a956 - %t972 = getelementptr inbounds { ptr, i64, i64 }, ptr %t971, i64 %t969 - store { ptr, i64, i64 } %t968, ptr %t972 - store i64 %t970, ptr %t966 - br label %each.step417 -each.step417: - %t973 = load i64, ptr %a957 - %t974 = add i64 %t973, 1 - store i64 %t974, ptr %a957 - br label %each.cond415 -each.end418: - %t975 = getelementptr inbounds %S.platform.Target, ptr %a375, i32 0, i32 8 - %t976 = load { ptr, i64, i64 }, ptr %t975 - %t977 = load { ptr, i64, i64 }, ptr %a103 - %t978 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t977) - store { ptr, i64, i64 } %t976, ptr %a980 - store { ptr, i64, i64 } %t978, ptr %a981 - call void @finch_str_concat(ptr %a979, ptr %a980, ptr %a981) - %t982 = load { ptr, i64, i64 }, ptr %a979 - store { ptr, i64, i64 } %t982, ptr %a984 - store { ptr, i64, i64 } { ptr @.str.254, i64 1, i64 0 }, ptr %a985 - call void @finch_str_concat(ptr %a983, ptr %a984, ptr %a985) - %t986 = load { ptr, i64, i64 }, ptr %a983 - %t987 = getelementptr inbounds { ptr, i64, i64 }, ptr %a956, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.255, i64 1, i64 0 }, ptr %a988 - call void @finch_str_join(ptr %a989, ptr %a956, ptr %a988) - %t990 = load { ptr, i64, i64 }, ptr %a989 - store { ptr, i64, i64 } %t986, ptr %a992 - store { ptr, i64, i64 } %t990, ptr %a993 - call void @finch_str_concat(ptr %a991, ptr %a992, ptr %a993) - %t994 = load { ptr, i64, i64 }, ptr %a991 - store { ptr, i64, i64 } %t994, ptr %a996 - call void @finch_str_copy(ptr %a995, ptr %a996) - %t997 = call i64 @finch_shell(ptr %a995) - store i64 %t997, ptr %a998 + %t898 = extractvalue { ptr, i64, i64 } { ptr @.str.245, i64 8, i64 0 }, 0 + %t899 = icmp eq ptr %t898, null + %t900 = select i1 %t899, ptr @.str.246, ptr %t898 + %t901 = call ptr @getenv(ptr %t900) + store { ptr, i64, i64 } zeroinitializer, ptr %a902 + call void @finch_str_from_c(ptr %a902, ptr %t901) + %t903 = load { ptr, i64, i64 }, ptr %a902 + store { ptr, i64, i64 } %t903, ptr %a904 + call void @finch_str_copy(ptr %a905, ptr %a904) + %t906 = load { ptr, i64, i64 }, ptr %a905 + store { ptr, i64, i64 } %t906, ptr %a907 + %t908 = getelementptr inbounds { ptr, i64, i64 }, ptr %a907, i32 0, i32 1 + %t909 = load i64, ptr %t908 + %t910 = icmp eq i64 %t909, 0 + br i1 %t910, label %then435, label %endif437 +then435: + %t911 = load { ptr, i64, i64 }, ptr %a1 + %t912 = extractvalue { ptr, i64, i64 } %t911, 1 + %t913 = icmp uge i64 0, %t912 + br i1 %t913, label %range438, label %inrange439 +range438: + call void @finch_panic_index(ptr @.str.247, i64 296, i64 0, i64 %t912) + unreachable +inrange439: + %t914 = extractvalue { ptr, i64, i64 } %t911, 0 + %t915 = getelementptr inbounds { ptr, i64, i64 }, ptr %t914, i64 0 + %t916 = load { ptr, i64, i64 }, ptr %t915 + %t917 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t916) + store { ptr, i64, i64 } %t917, ptr %a919 + store { ptr, i64, i64 } { ptr @.str.248, i64 22, i64 0 }, ptr %a920 + call void @finch_str_concat(ptr %a918, ptr %a919, ptr %a920) + store { ptr, i64, i64 } %t917, ptr %a921 + call void @finch_str_drop(ptr %a921) + %t922 = load { ptr, i64, i64 }, ptr %a918 + %t923 = load { ptr, i64, i64 }, ptr %a907 + store { ptr, i64, i64 } %t922, ptr %a907 + store { ptr, i64, i64 } %t923, ptr %a924 + call void @finch_str_drop(ptr %a924) + br label %endif437 +endif437: + %t925 = load { ptr, i64, i64 }, ptr %a907 + store { ptr, i64, i64 } %t925, ptr %a926 + %t927 = call i32 @finch_file_exists(ptr %a926) + %t928 = icmp ne i32 %t927, 0 + %t929 = xor i1 %t928, true + br i1 %t929, label %then440, label %endif442 +then440: + %t930 = load { ptr, i64, i64 }, ptr %a1 + %t931 = extractvalue { ptr, i64, i64 } %t930, 1 + %t932 = icmp uge i64 0, %t931 + br i1 %t932, label %range443, label %inrange444 +range443: + call void @finch_panic_index(ptr @.str.249, i64 299, i64 0, i64 %t931) + unreachable +inrange444: + %t933 = extractvalue { ptr, i64, i64 } %t930, 0 + %t934 = getelementptr inbounds { ptr, i64, i64 }, ptr %t933, i64 0 + %t935 = load { ptr, i64, i64 }, ptr %t934 + %t936 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t935) + store { ptr, i64, i64 } %t936, ptr %a938 + store { ptr, i64, i64 } { ptr @.str.250, i64 19, i64 0 }, ptr %a939 + call void @finch_str_concat(ptr %a937, ptr %a938, ptr %a939) + store { ptr, i64, i64 } %t936, ptr %a940 + call void @finch_str_drop(ptr %a940) + %t941 = load { ptr, i64, i64 }, ptr %a937 + %t942 = load { ptr, i64, i64 }, ptr %a907 + store { ptr, i64, i64 } %t941, ptr %a907 + store { ptr, i64, i64 } %t942, ptr %a943 + call void @finch_str_drop(ptr %a943) + br label %endif442 +endif442: + %t944 = load { ptr, i64, i64 }, ptr %a907 + store { ptr, i64, i64 } %t944, ptr %a945 + %t946 = call i32 @finch_file_exists(ptr %a945) + %t947 = icmp ne i32 %t946, 0 + %t948 = xor i1 %t947, true + br i1 %t948, label %then445, label %endif447 +then445: + %t949 = load { ptr, i64, i64 }, ptr %a1 + %t950 = extractvalue { ptr, i64, i64 } %t949, 1 + %t951 = icmp uge i64 0, %t950 + br i1 %t951, label %range448, label %inrange449 +range448: + call void @finch_panic_index(ptr @.str.251, i64 302, i64 0, i64 %t950) + unreachable +inrange449: + %t952 = extractvalue { ptr, i64, i64 } %t949, 0 + %t953 = getelementptr inbounds { ptr, i64, i64 }, ptr %t952, i64 0 + %t954 = load { ptr, i64, i64 }, ptr %t953 + %t955 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t954) + store { ptr, i64, i64 } %t955, ptr %a957 + store { ptr, i64, i64 } { ptr @.str.252, i64 34, i64 0 }, ptr %a958 + call void @finch_str_concat(ptr %a956, ptr %a957, ptr %a958) + store { ptr, i64, i64 } %t955, ptr %a959 + call void @finch_str_drop(ptr %a959) + %t960 = load { ptr, i64, i64 }, ptr %a956 + %t961 = load { ptr, i64, i64 }, ptr %a907 + store { ptr, i64, i64 } %t960, ptr %a907 + store { ptr, i64, i64 } %t961, ptr %a962 + call void @finch_str_drop(ptr %a962) + br label %endif447 +endif447: + %t963 = load { ptr, i64, i64 }, ptr %a907 + store { ptr, i64, i64 } %t963, ptr %a964 + %t965 = call i32 @finch_file_exists(ptr %a964) + %t966 = icmp ne i32 %t965, 0 + %t967 = xor i1 %t966, true + br label %logic.from450 +logic.from450: + br i1 %t967, label %logic.rhs451, label %logic.end452 +logic.rhs451: + store { ptr, i64, i64 } { ptr @.str.253, i64 18, i64 0 }, ptr %a968 + %t969 = call i32 @finch_file_exists(ptr %a968) + %t970 = icmp ne i32 %t969, 0 + br label %logic.rend453 +logic.rend453: + br label %logic.end452 +logic.end452: + %t971 = phi i1 [ false, %logic.from450 ], [ %t970, %logic.rend453 ] + br i1 %t971, label %then454, label %endif456 +then454: + %t972 = load { ptr, i64, i64 }, ptr %a907 + store { ptr, i64, i64 } { ptr @.str.254, i64 18, i64 0 }, ptr %a907 + store { ptr, i64, i64 } %t972, ptr %a973 + call void @finch_str_drop(ptr %a973) + br label %endif456 +endif456: + %t974 = load { ptr, i64, i64 }, ptr %a907 + store { ptr, i64, i64 } %t974, ptr %a975 + %t976 = call i32 @finch_file_exists(ptr %a975) + %t977 = icmp ne i32 %t976, 0 + %t978 = xor i1 %t977, true + br i1 %t978, label %then457, label %endif459 +then457: + %t979 = call { ptr, i64, i64 } @finch.main.unpack() + store { ptr, i64, i64 } %t979, ptr %a981 + store { ptr, i64, i64 } { ptr @.str.255, i64 19, i64 0 }, ptr %a982 + call void @finch_str_concat(ptr %a980, ptr %a981, ptr %a982) + store { ptr, i64, i64 } %t979, ptr %a983 + call void @finch_str_drop(ptr %a983) + %t984 = load { ptr, i64, i64 }, ptr %a980 + %t985 = load { ptr, i64, i64 }, ptr %a907 + store { ptr, i64, i64 } %t984, ptr %a907 + store { ptr, i64, i64 } %t985, ptr %a986 + call void @finch_str_drop(ptr %a986) + br label %endif459 +endif459: + store { ptr, i64, i64 } { ptr @.str.256, i64 0, i64 0 }, ptr %a987 + %t988 = load i1, ptr %a105 + br i1 %t988, label %then460, label %endif462 +then460: + %t989 = load { ptr, i64, i64 }, ptr %a987 + store { ptr, i64, i64 } { ptr @.str.257, i64 6, i64 0 }, ptr %a987 + store { ptr, i64, i64 } %t989, ptr %a990 + call void @finch_str_drop(ptr %a990) + br label %endif462 +endif462: + %t991 = load i1, ptr %a106 + br i1 %t991, label %then463, label %endif465 +then463: + %t992 = load { ptr, i64, i64 }, ptr %a987 + store { ptr, i64, i64 } %t992, ptr %a994 + store { ptr, i64, i64 } { ptr @.str.258, i64 3, i64 0 }, ptr %a995 + call void @finch_str_concat(ptr %a993, ptr %a994, ptr %a995) + %t996 = load { ptr, i64, i64 }, ptr %a993 + %t997 = load { ptr, i64, i64 }, ptr %a987 + store { ptr, i64, i64 } %t996, ptr %a987 + store { ptr, i64, i64 } %t997, ptr %a998 + call void @finch_str_drop(ptr %a998) + br label %endif465 +endif465: %t999 = load { ptr, i64, i64 }, ptr %a103 - %t1000 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t999) - store { ptr, i64, i64 } { ptr @.str.256, i64 6, i64 0 }, ptr %a1002 - store { ptr, i64, i64 } %t1000, ptr %a1003 - call void @finch_str_concat(ptr %a1001, ptr %a1002, ptr %a1003) - %t1004 = load { ptr, i64, i64 }, ptr %a1001 - store { ptr, i64, i64 } %t1004, ptr %a1006 - call void @finch_str_copy(ptr %a1005, ptr %a1006) - %t1007 = call i64 @finch_shell(ptr %a1005) - %t1008 = load i64, ptr %a998 - ret i64 %t1008 -endif414: + store { ptr, i64, i64 } %t999, ptr %a1000 + call void @finch_str_copy(ptr %a1001, ptr %a1000) + %t1002 = load { ptr, i64, i64 }, ptr %a1001 + %t1003 = insertvalue %S.linker.Build zeroinitializer, { ptr, i64, i64 } %t1002, 0 + %t1004 = load { ptr, i64, i64 }, ptr %a878 + store { ptr, i64, i64 } %t1004, ptr %a1005 + call void @finch_str_copy(ptr %a1006, ptr %a1005) + %t1007 = load { ptr, i64, i64 }, ptr %a1006 + %t1008 = insertvalue %S.linker.Build %t1003, { ptr, i64, i64 } %t1007, 1 + %t1009 = load { ptr, i64, i64 }, ptr %a907 + store { ptr, i64, i64 } %t1009, ptr %a1010 + call void @finch_str_copy(ptr %a1011, ptr %a1010) + %t1012 = load { ptr, i64, i64 }, ptr %a1011 + %t1013 = insertvalue %S.linker.Build %t1008, { ptr, i64, i64 } %t1012, 2 + %t1014 = load { ptr, i64, i64 }, ptr %a108 + store { ptr, i64, i64 } %t1014, ptr %a1015 + call void @finch_str_copy(ptr %a1016, ptr %a1015) + %t1017 = load { ptr, i64, i64 }, ptr %a1016 + %t1018 = insertvalue %S.linker.Build %t1013, { ptr, i64, i64 } %t1017, 3 + %t1019 = load { ptr, i64, i64 }, ptr %a987 + store { ptr, i64, i64 } %t1019, ptr %a1020 + call void @finch_str_copy(ptr %a1021, ptr %a1020) + %t1022 = load { ptr, i64, i64 }, ptr %a1021 + %t1023 = insertvalue %S.linker.Build %t1018, { ptr, i64, i64 } %t1022, 4 + %t1024 = load i1, ptr %a105 + %t1025 = insertvalue %S.linker.Build %t1023, i1 %t1024, 5 + %t1026 = load { ptr, i64, i64 }, ptr %a643 + store { ptr, i64, i64 } %t1026, ptr %a1027 + call void @finch.copy.arr_str(ptr %a1028, ptr %a1027) + %t1029 = load { ptr, i64, i64 }, ptr %a1028 + %t1030 = insertvalue %S.linker.Build %t1025, { ptr, i64, i64 } %t1029, 6 + %t1031 = load %S.platform.Target, ptr %a381 + %t1032 = load %S.cimport.CImports, ptr %a853 + %t1033 = call i64 @finch.linker.build(%S.linker.Build %t1030, %S.platform.Target %t1031, %S.cimport.CImports %t1032) + store %S.linker.Build %t1030, ptr %a1034 + call void @finch.drop.S_linker_Build(ptr %a1034) + %t1035 = icmp ne i64 %t1033, 0 + br i1 %t1035, label %then466, label %endif468 +then466: + call void @finch_str_drop(ptr %a987) + call void @finch_str_drop(ptr %a907) + call void @finch_str_drop(ptr %a878) + call void @finch.drop.S_cimport_CImports(ptr %a853) + call void @finch_str_drop(ptr %a822) + call void @finch.drop.arr_str(ptr %a643) + call void @finch.drop.arr_str(ptr %a638) + call void @finch.drop.arr_str(ptr %a633) + call void @finch.drop.arr_S_cimport_Header(ptr %a632) + call void @finch.drop.S_main_Loader(ptr %a474) + call void @finch.drop.S_platform_Target(ptr %a381) + call void @finch.drop.arr_str(ptr %a113) + call void @finch.drop.arr_str(ptr %a112) + call void @finch.drop.arr_str(ptr %a111) + call void @finch.drop.arr_str(ptr %a110) + call void @finch.drop.arr_str(ptr %a109) + call void @finch_str_drop(ptr %a108) + call void @finch_str_drop(ptr %a107) + call void @finch_str_drop(ptr %a103) + call void @finch_str_drop(ptr %a77) + call void @finch_str_drop(ptr %a67) + ret i64 1 +endif468: + %t1036 = load { ptr, i64, i64 }, ptr %a67 + store { ptr, i64, i64 } %t1036, ptr %a1037 + store { ptr, i64, i64 } { ptr @.str.259, i64 3, i64 0 }, ptr %a1038 + %t1039 = call i32 @finch_str_eq(ptr %a1037, ptr %a1038) + %t1040 = icmp ne i32 %t1039, 0 + br i1 %t1040, label %then469, label %endif471 +then469: + store { ptr, i64, i64 } zeroinitializer, ptr %a1041 + store i64 0, ptr %a1042 + br label %each.cond472 +each.cond472: + %t1043 = getelementptr inbounds { ptr, i64, i64 }, ptr %a113, i32 0, i32 1 + %t1044 = load i64, ptr %t1043 + %t1045 = load i64, ptr %a1042 + %t1046 = icmp slt i64 %t1045, %t1044 + br i1 %t1046, label %each.body473, label %each.end475 +each.body473: + %t1047 = load ptr, ptr %a113 + %t1048 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1047, i64 %t1045 + %t1049 = load { ptr, i64, i64 }, ptr %t1048 + store { ptr, i64, i64 } %t1049, ptr %a1050 + %t1051 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1041, i32 0, i32 1 + %t1052 = load { ptr, i64, i64 }, ptr %a1050 + %t1053 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t1052) + %t1054 = load i64, ptr %t1051 + %t1055 = add i64 %t1054, 1 + call void @finch_arr_reserve(ptr %a1041, i64 %t1055, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t1056 = load ptr, ptr %a1041 + %t1057 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1056, i64 %t1054 + store { ptr, i64, i64 } %t1053, ptr %t1057 + store i64 %t1055, ptr %t1051 + br label %each.step474 +each.step474: + %t1058 = load i64, ptr %a1042 + %t1059 = add i64 %t1058, 1 + store i64 %t1059, ptr %a1042 + br label %each.cond472 +each.end475: + %t1060 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 8 + %t1061 = load { ptr, i64, i64 }, ptr %t1060 + %t1062 = load { ptr, i64, i64 }, ptr %a103 + %t1063 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t1062) + store { ptr, i64, i64 } %t1061, ptr %a1065 + store { ptr, i64, i64 } %t1063, ptr %a1066 + call void @finch_str_concat(ptr %a1064, ptr %a1065, ptr %a1066) + store { ptr, i64, i64 } %t1063, ptr %a1067 + call void @finch_str_drop(ptr %a1067) + %t1068 = load { ptr, i64, i64 }, ptr %a1064 + store { ptr, i64, i64 } %t1068, ptr %a1070 + store { ptr, i64, i64 } { ptr @.str.260, i64 1, i64 0 }, ptr %a1071 + call void @finch_str_concat(ptr %a1069, ptr %a1070, ptr %a1071) + store { ptr, i64, i64 } %t1068, ptr %a1072 + call void @finch_str_drop(ptr %a1072) + %t1073 = load { ptr, i64, i64 }, ptr %a1069 + %t1074 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1041, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.261, i64 1, i64 0 }, ptr %a1075 + call void @finch_str_join(ptr %a1076, ptr %a1041, ptr %a1075) + %t1077 = load { ptr, i64, i64 }, ptr %a1076 + store { ptr, i64, i64 } %t1073, ptr %a1079 + store { ptr, i64, i64 } %t1077, ptr %a1080 + call void @finch_str_concat(ptr %a1078, ptr %a1079, ptr %a1080) + store { ptr, i64, i64 } %t1073, ptr %a1081 + call void @finch_str_drop(ptr %a1081) + store { ptr, i64, i64 } %t1077, ptr %a1082 + call void @finch_str_drop(ptr %a1082) + %t1083 = load { ptr, i64, i64 }, ptr %a1078 + %t1084 = call i64 @finch.host.run({ ptr, i64, i64 } %t1083) + store { ptr, i64, i64 } %t1083, ptr %a1085 + call void @finch_str_drop(ptr %a1085) + store i64 %t1084, ptr %a1086 + %t1087 = load { ptr, i64, i64 }, ptr %a103 + call void @finch.host.remove({ ptr, i64, i64 } %t1087) + %t1088 = load i64, ptr %a1086 + call void @finch.drop.arr_str(ptr %a1041) + call void @finch_str_drop(ptr %a987) + call void @finch_str_drop(ptr %a907) + call void @finch_str_drop(ptr %a878) + call void @finch.drop.S_cimport_CImports(ptr %a853) + call void @finch_str_drop(ptr %a822) + call void @finch.drop.arr_str(ptr %a643) + call void @finch.drop.arr_str(ptr %a638) + call void @finch.drop.arr_str(ptr %a633) + call void @finch.drop.arr_S_cimport_Header(ptr %a632) + call void @finch.drop.S_main_Loader(ptr %a474) + call void @finch.drop.S_platform_Target(ptr %a381) + call void @finch.drop.arr_str(ptr %a113) + call void @finch.drop.arr_str(ptr %a112) + call void @finch.drop.arr_str(ptr %a111) + call void @finch.drop.arr_str(ptr %a110) + call void @finch.drop.arr_str(ptr %a109) + call void @finch_str_drop(ptr %a108) + call void @finch_str_drop(ptr %a107) + call void @finch_str_drop(ptr %a103) + call void @finch_str_drop(ptr %a77) + call void @finch_str_drop(ptr %a67) + ret i64 %t1088 +endif471: + call void @finch_str_drop(ptr %a987) + call void @finch_str_drop(ptr %a907) + call void @finch_str_drop(ptr %a878) + call void @finch.drop.S_cimport_CImports(ptr %a853) + call void @finch_str_drop(ptr %a822) + call void @finch.drop.arr_str(ptr %a643) + call void @finch.drop.arr_str(ptr %a638) + call void @finch.drop.arr_str(ptr %a633) + call void @finch.drop.arr_S_cimport_Header(ptr %a632) + call void @finch.drop.S_main_Loader(ptr %a474) + call void @finch.drop.S_platform_Target(ptr %a381) + call void @finch.drop.arr_str(ptr %a113) + call void @finch.drop.arr_str(ptr %a112) + call void @finch.drop.arr_str(ptr %a111) + call void @finch.drop.arr_str(ptr %a110) + call void @finch.drop.arr_str(ptr %a109) + call void @finch_str_drop(ptr %a108) + call void @finch_str_drop(ptr %a107) + call void @finch_str_drop(ptr %a103) + call void @finch_str_drop(ptr %a77) + call void @finch_str_drop(ptr %a67) ret i64 0 } @@ -10657,50 +12061,50 @@ entry: store i8 %p0, ptr %a1 %t2 = load i8, ptr %a1 %t3 = icmp uge i8 %t2, 97 - br label %logic.from419 -logic.from419: - br i1 %t3, label %logic.rhs420, label %logic.end421 -logic.rhs420: + br label %logic.from476 +logic.from476: + br i1 %t3, label %logic.rhs477, label %logic.end478 +logic.rhs477: %t4 = load i8, ptr %a1 %t5 = icmp ule i8 %t4, 122 - br label %logic.rend422 -logic.rend422: - br label %logic.end421 -logic.end421: - %t6 = phi i1 [ false, %logic.from419 ], [ %t5, %logic.rend422 ] - br label %logic.from423 -logic.from423: - br i1 %t6, label %logic.end425, label %logic.rhs424 -logic.rhs424: + br label %logic.rend479 +logic.rend479: + br label %logic.end478 +logic.end478: + %t6 = phi i1 [ false, %logic.from476 ], [ %t5, %logic.rend479 ] + br label %logic.from480 +logic.from480: + br i1 %t6, label %logic.end482, label %logic.rhs481 +logic.rhs481: %t7 = load i8, ptr %a1 %t8 = icmp uge i8 %t7, 65 - br label %logic.from426 -logic.from426: - br i1 %t8, label %logic.rhs427, label %logic.end428 -logic.rhs427: + br label %logic.from483 +logic.from483: + br i1 %t8, label %logic.rhs484, label %logic.end485 +logic.rhs484: %t9 = load i8, ptr %a1 %t10 = icmp ule i8 %t9, 90 - br label %logic.rend429 -logic.rend429: - br label %logic.end428 -logic.end428: - %t11 = phi i1 [ false, %logic.from426 ], [ %t10, %logic.rend429 ] - br label %logic.rend430 -logic.rend430: - br label %logic.end425 -logic.end425: - %t12 = phi i1 [ true, %logic.from423 ], [ %t11, %logic.rend430 ] - br label %logic.from431 -logic.from431: - br i1 %t12, label %logic.end433, label %logic.rhs432 -logic.rhs432: + br label %logic.rend486 +logic.rend486: + br label %logic.end485 +logic.end485: + %t11 = phi i1 [ false, %logic.from483 ], [ %t10, %logic.rend486 ] + br label %logic.rend487 +logic.rend487: + br label %logic.end482 +logic.end482: + %t12 = phi i1 [ true, %logic.from480 ], [ %t11, %logic.rend487 ] + br label %logic.from488 +logic.from488: + br i1 %t12, label %logic.end490, label %logic.rhs489 +logic.rhs489: %t13 = load i8, ptr %a1 %t14 = icmp eq i8 %t13, 95 - br label %logic.rend434 -logic.rend434: - br label %logic.end433 -logic.end433: - %t15 = phi i1 [ true, %logic.from431 ], [ %t14, %logic.rend434 ] + br label %logic.rend491 +logic.rend491: + br label %logic.end490 +logic.end490: + %t15 = phi i1 [ true, %logic.from488 ], [ %t14, %logic.rend491 ] ret i1 %t15 } @@ -10710,17 +12114,17 @@ entry: store i8 %p0, ptr %a1 %t2 = load i8, ptr %a1 %t3 = icmp uge i8 %t2, 48 - br label %logic.from435 -logic.from435: - br i1 %t3, label %logic.rhs436, label %logic.end437 -logic.rhs436: + br label %logic.from492 +logic.from492: + br i1 %t3, label %logic.rhs493, label %logic.end494 +logic.rhs493: %t4 = load i8, ptr %a1 %t5 = icmp ule i8 %t4, 57 - br label %logic.rend438 -logic.rend438: - br label %logic.end437 -logic.end437: - %t6 = phi i1 [ false, %logic.from435 ], [ %t5, %logic.rend438 ] + br label %logic.rend495 +logic.rend495: + br label %logic.end494 +logic.end494: + %t6 = phi i1 [ false, %logic.from492 ], [ %t5, %logic.rend495 ] ret i1 %t6 } @@ -10730,50 +12134,50 @@ entry: store i8 %p0, ptr %a1 %t2 = load i8, ptr %a1 %t3 = call i1 @finch.lexer.isDigit(i8 %t2) - br label %logic.from439 -logic.from439: - br i1 %t3, label %logic.end441, label %logic.rhs440 -logic.rhs440: + br label %logic.from496 +logic.from496: + br i1 %t3, label %logic.end498, label %logic.rhs497 +logic.rhs497: %t4 = load i8, ptr %a1 %t5 = icmp uge i8 %t4, 97 - br label %logic.from442 -logic.from442: - br i1 %t5, label %logic.rhs443, label %logic.end444 -logic.rhs443: + br label %logic.from499 +logic.from499: + br i1 %t5, label %logic.rhs500, label %logic.end501 +logic.rhs500: %t6 = load i8, ptr %a1 %t7 = icmp ule i8 %t6, 102 - br label %logic.rend445 -logic.rend445: - br label %logic.end444 -logic.end444: - %t8 = phi i1 [ false, %logic.from442 ], [ %t7, %logic.rend445 ] - br label %logic.rend446 -logic.rend446: - br label %logic.end441 -logic.end441: - %t9 = phi i1 [ true, %logic.from439 ], [ %t8, %logic.rend446 ] - br label %logic.from447 -logic.from447: - br i1 %t9, label %logic.end449, label %logic.rhs448 -logic.rhs448: + br label %logic.rend502 +logic.rend502: + br label %logic.end501 +logic.end501: + %t8 = phi i1 [ false, %logic.from499 ], [ %t7, %logic.rend502 ] + br label %logic.rend503 +logic.rend503: + br label %logic.end498 +logic.end498: + %t9 = phi i1 [ true, %logic.from496 ], [ %t8, %logic.rend503 ] + br label %logic.from504 +logic.from504: + br i1 %t9, label %logic.end506, label %logic.rhs505 +logic.rhs505: %t10 = load i8, ptr %a1 %t11 = icmp uge i8 %t10, 65 - br label %logic.from450 -logic.from450: - br i1 %t11, label %logic.rhs451, label %logic.end452 -logic.rhs451: + br label %logic.from507 +logic.from507: + br i1 %t11, label %logic.rhs508, label %logic.end509 +logic.rhs508: %t12 = load i8, ptr %a1 %t13 = icmp ule i8 %t12, 70 - br label %logic.rend453 -logic.rend453: - br label %logic.end452 -logic.end452: - %t14 = phi i1 [ false, %logic.from450 ], [ %t13, %logic.rend453 ] - br label %logic.rend454 -logic.rend454: - br label %logic.end449 -logic.end449: - %t15 = phi i1 [ true, %logic.from447 ], [ %t14, %logic.rend454 ] + br label %logic.rend510 +logic.rend510: + br label %logic.end509 +logic.end509: + %t14 = phi i1 [ false, %logic.from507 ], [ %t13, %logic.rend510 ] + br label %logic.rend511 +logic.rend511: + br label %logic.end506 +logic.end506: + %t15 = phi i1 [ true, %logic.from504 ], [ %t14, %logic.rend511 ] ret i1 %t15 } @@ -10789,47 +12193,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.257, i64 2, i64 0 }, ptr %t4 + store { ptr, i64, i64 } { ptr @.str.262, i64 2, i64 0 }, ptr %t4 %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 - store { ptr, i64, i64 } { ptr @.str.258, i64 6, i64 0 }, ptr %t5 + store { ptr, i64, i64 } { ptr @.str.263, i64 6, i64 0 }, ptr %t5 %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2 - store { ptr, i64, i64 } { ptr @.str.259, i64 2, i64 0 }, ptr %t6 + store { ptr, i64, i64 } { ptr @.str.264, i64 2, i64 0 }, ptr %t6 %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 3 - store { ptr, i64, i64 } { ptr @.str.260, i64 4, i64 0 }, ptr %t7 + store { ptr, i64, i64 } { ptr @.str.265, i64 4, i64 0 }, ptr %t7 %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4 - store { ptr, i64, i64 } { ptr @.str.261, i64 5, i64 0 }, ptr %t8 + store { ptr, i64, i64 } { ptr @.str.266, i64 5, i64 0 }, ptr %t8 %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 5 - store { ptr, i64, i64 } { ptr @.str.262, i64 3, i64 0 }, ptr %t9 + store { ptr, i64, i64 } { ptr @.str.267, i64 3, i64 0 }, ptr %t9 %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 6 - store { ptr, i64, i64 } { ptr @.str.263, i64 2, i64 0 }, ptr %t10 + store { ptr, i64, i64 } { ptr @.str.268, i64 2, i64 0 }, ptr %t10 %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 7 - store { ptr, i64, i64 } { ptr @.str.264, i64 5, i64 0 }, ptr %t11 + store { ptr, i64, i64 } { ptr @.str.269, i64 5, i64 0 }, ptr %t11 %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 8 - store { ptr, i64, i64 } { ptr @.str.265, i64 8, i64 0 }, ptr %t12 + store { ptr, i64, i64 } { ptr @.str.270, i64 8, i64 0 }, ptr %t12 %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 9 - store { ptr, i64, i64 } { ptr @.str.266, i64 4, i64 0 }, ptr %t13 + store { ptr, i64, i64 } { ptr @.str.271, i64 4, i64 0 }, ptr %t13 %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 10 - store { ptr, i64, i64 } { ptr @.str.267, i64 5, i64 0 }, ptr %t14 + store { ptr, i64, i64 } { ptr @.str.272, i64 5, i64 0 }, ptr %t14 %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 11 - store { ptr, i64, i64 } { ptr @.str.268, i64 4, i64 0 }, ptr %t15 + store { ptr, i64, i64 } { ptr @.str.273, i64 4, i64 0 }, ptr %t15 %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 12 - store { ptr, i64, i64 } { ptr @.str.269, i64 6, i64 0 }, ptr %t16 + store { ptr, i64, i64 } { ptr @.str.274, i64 6, i64 0 }, ptr %t16 %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 13 - store { ptr, i64, i64 } { ptr @.str.270, i64 4, i64 0 }, ptr %t17 + store { ptr, i64, i64 } { ptr @.str.275, i64 4, i64 0 }, ptr %t17 %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 14 - store { ptr, i64, i64 } { ptr @.str.271, i64 6, i64 0 }, ptr %t18 + store { ptr, i64, i64 } { ptr @.str.276, i64 6, i64 0 }, ptr %t18 %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 15 - store { ptr, i64, i64 } { ptr @.str.272, i64 5, i64 0 }, ptr %t19 + store { ptr, i64, i64 } { ptr @.str.277, i64 5, i64 0 }, ptr %t19 %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 16 - store { ptr, i64, i64 } { ptr @.str.273, i64 2, i64 0 }, ptr %t20 + store { ptr, i64, i64 } { ptr @.str.278, i64 2, i64 0 }, ptr %t20 %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 17 - store { ptr, i64, i64 } { ptr @.str.274, i64 3, i64 0 }, ptr %t21 + store { ptr, i64, i64 } { ptr @.str.279, i64 3, i64 0 }, ptr %t21 %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 18 - store { ptr, i64, i64 } { ptr @.str.275, i64 4, i64 0 }, ptr %t22 + store { ptr, i64, i64 } { ptr @.str.280, i64 4, i64 0 }, ptr %t22 %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 19 - store { ptr, i64, i64 } { ptr @.str.276, i64 5, i64 0 }, ptr %t23 + store { ptr, i64, i64 } { ptr @.str.281, i64 5, i64 0 }, ptr %t23 %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 20 - store { ptr, i64, i64 } { ptr @.str.277, i64 6, i64 0 }, ptr %t24 + store { ptr, i64, i64 } { ptr @.str.282, 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 @@ -10840,29 +12244,30 @@ entry: %t32 = load i64, ptr %t29 %t33 = load ptr, ptr %a28 store i64 0, ptr %a34 - br label %find.cond455 -find.cond455: + br label %find.cond512 +find.cond512: %t35 = load i64, ptr %a34 %t36 = icmp slt i64 %t35, %t32 - br i1 %t36, label %find.body456, label %find.end459 -find.body456: + br i1 %t36, label %find.body513, label %find.end516 +find.body513: %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.hit457, label %find.next458 -find.hit457: + br i1 %t42, label %find.hit514, label %find.next515 +find.hit514: store i64 %t35, ptr %a31 - br label %find.end459 -find.next458: + br label %find.end516 +find.next515: %t43 = add i64 %t35, 1 store i64 %t43, ptr %a34 - br label %find.cond455 -find.end459: + br label %find.cond512 +find.end516: %t44 = load i64, ptr %a31 %t45 = icmp sge i64 %t44, 0 + call void @finch.drop.arr_str(ptr %a28) ret i1 %t45 } @@ -10879,34 +12284,42 @@ entry: %a16 = 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 %a20 = 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 + %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 + %a30 = 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 + %a34 = alloca { ptr, i64, i64 }, align 16 %a36 = alloca { ptr, i64, i64 }, align 16 %a37 = alloca { ptr, i64, i64 }, align 16 %a38 = alloca { ptr, i64, i64 }, align 16 + %a39 = alloca { ptr, i64, i64 }, align 16 + %a42 = 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 + %a53 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store i64 %p1, ptr %a2 store i64 %p2, ptr %a3 store { ptr, i64, i64 } %p3, ptr %a4 %t5 = load ptr, ptr %a1 %t6 = icmp eq ptr %t5, null - br i1 %t6, label %panic460, label %ok461 -panic460: - call void @finch_panic(ptr @.str.278, i64 41, ptr @.str.279) + br i1 %t6, label %panic517, label %ok518 +panic517: + call void @finch_panic(ptr @.str.283, i64 41, ptr @.str.284) unreachable -ok461: +ok518: %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.280, i64 1, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.285, 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 @@ -10915,37 +12328,53 @@ ok461: store { ptr, i64, i64 } %t12, 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.281, 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 - call void @finch_str_from_int(ptr %a25, i64 %t24) - %t26 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t23, 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.282, 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 - store { ptr, i64, i64 } %t34, ptr %a37 - store { ptr, i64, i64 } %t35, ptr %a38 + store { ptr, i64, i64 } %t12, ptr %a19 + call void @finch_str_drop(ptr %a19) + store { ptr, i64, i64 } %t15, ptr %a20 + call void @finch_str_drop(ptr %a20) + %t21 = load { ptr, i64, i64 }, ptr %a16 + store { ptr, i64, i64 } %t21, ptr %a23 + store { ptr, i64, i64 } { ptr @.str.286, i64 1, i64 0 }, ptr %a24 + call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) + store { ptr, i64, i64 } %t21, ptr %a25 + call void @finch_str_drop(ptr %a25) + %t26 = load { ptr, i64, i64 }, ptr %a22 + %t27 = load i64, ptr %a3 + call void @finch_str_from_int(ptr %a28, i64 %t27) + %t29 = load { ptr, i64, i64 }, ptr %a28 + store { ptr, i64, i64 } %t26, ptr %a31 + store { ptr, i64, i64 } %t29, ptr %a32 + call void @finch_str_concat(ptr %a30, ptr %a31, ptr %a32) + store { ptr, i64, i64 } %t26, ptr %a33 + call void @finch_str_drop(ptr %a33) + store { ptr, i64, i64 } %t29, ptr %a34 + call void @finch_str_drop(ptr %a34) + %t35 = load { ptr, i64, i64 }, ptr %a30 + store { ptr, i64, i64 } %t35, ptr %a37 + store { ptr, i64, i64 } { ptr @.str.287, i64 9, i64 0 }, ptr %a38 call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) - %t39 = load { ptr, i64, i64 }, ptr %a36 - %t40 = extractvalue { ptr, i64, i64 } %t39, 1 - %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.283, ptr %t42 - %t45 = call i32 (ptr, ...) @printf(ptr @.str.284, i32 %t41, ptr %t44) - %t46 = call i32 (ptr, ...) @printf(ptr @.str.285) - %t47 = trunc i64 1 to i32 - %t48 = call i32 @fflush(ptr null) - call void @exit(i32 %t47) + store { ptr, i64, i64 } %t35, ptr %a39 + call void @finch_str_drop(ptr %a39) + %t40 = load { ptr, i64, i64 }, ptr %a36 + %t41 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t40, ptr %a43 + store { ptr, i64, i64 } %t41, ptr %a44 + call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) + store { ptr, i64, i64 } %t40, ptr %a45 + call void @finch_str_drop(ptr %a45) + %t46 = load { ptr, i64, i64 }, ptr %a42 + %t47 = extractvalue { ptr, i64, i64 } %t46, 1 + %t48 = trunc i64 %t47 to i32 + %t49 = extractvalue { ptr, i64, i64 } %t46, 0 + %t50 = icmp eq ptr %t49, null + %t51 = select i1 %t50, ptr @.str.288, ptr %t49 + %t52 = call i32 (ptr, ...) @printf(ptr @.str.289, i32 %t48, ptr %t51) + store { ptr, i64, i64 } %t46, ptr %a53 + call void @finch_str_drop(ptr %a53) + %t54 = call i32 (ptr, ...) @printf(ptr @.str.290) + %t55 = trunc i64 1 to i32 + %t56 = call i32 @fflush(ptr null) + call void @exit(i32 %t55) ret void } @@ -10957,43 +12386,43 @@ entry: store i64 %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic462, label %ok463 -panic462: - call void @finch_panic(ptr @.str.286, i64 46, ptr @.str.287) + br i1 %t4, label %panic519, label %ok520 +panic519: + call void @finch_panic(ptr @.str.291, i64 46, ptr @.str.292) unreachable -ok463: +ok520: %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 %panic464, label %ok465 -panic464: - call void @finch_panic(ptr @.str.288, i64 46, ptr @.str.289) + br i1 %t10, label %panic521, label %ok522 +panic521: + call void @finch_panic(ptr @.str.293, i64 46, ptr @.str.294) unreachable -ok465: +ok522: %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 %then466, label %endif468 -then466: + br i1 %t14, label %then523, label %endif525 +then523: %t15 = load ptr, ptr %a1 %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic469, label %ok470 -panic469: - call void @finch_panic(ptr @.str.290, i64 47, ptr @.str.291) + br i1 %t16, label %panic526, label %ok527 +panic526: + call void @finch_panic(ptr @.str.295, i64 47, ptr @.str.296) unreachable -ok470: +ok527: %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 %panic471, label %ok472 -panic471: - call void @finch_panic(ptr @.str.292, i64 47, ptr @.str.293) + br i1 %t19, label %panic528, label %ok529 +panic528: + call void @finch_panic(ptr @.str.297, i64 47, ptr @.str.298) unreachable -ok472: +ok529: %t20 = getelementptr inbounds %S.lexer.Lexer, ptr %t18, i32 0, i32 2 %t21 = load i64, ptr %t20 %t22 = load i64, ptr %a2 @@ -11001,16 +12430,16 @@ ok472: %t24 = load { ptr, i64, i64 }, ptr %t17 %t25 = extractvalue { ptr, i64, i64 } %t24, 1 %t26 = icmp uge i64 %t23, %t25 - br i1 %t26, label %range473, label %inrange474 -range473: - call void @finch_panic_index(ptr @.str.294, i64 47, i64 %t23, i64 %t25) + br i1 %t26, label %range530, label %inrange531 +range530: + call void @finch_panic_index(ptr @.str.299, i64 47, i64 %t23, i64 %t25) unreachable -inrange474: +inrange531: %t27 = extractvalue { ptr, i64, i64 } %t24, 0 %t28 = getelementptr inbounds i8, ptr %t27, i64 %t23 %t29 = load i8, ptr %t28 ret i8 %t29 -endif468: +endif525: %t30 = trunc i64 0 to i8 ret i8 %t30 } @@ -11022,96 +12451,96 @@ entry: store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic475, label %ok476 -panic475: - call void @finch_panic(ptr @.str.295, i64 53, ptr @.str.296) + br i1 %t3, label %panic532, label %ok533 +panic532: + call void @finch_panic(ptr @.str.300, i64 53, ptr @.str.301) unreachable -ok476: +ok533: %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 %panic477, label %ok478 -panic477: - call void @finch_panic(ptr @.str.297, i64 53, ptr @.str.298) + br i1 %t6, label %panic534, label %ok535 +panic534: + call void @finch_panic(ptr @.str.302, i64 53, ptr @.str.303) unreachable -ok478: +ok535: %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 %range479, label %inrange480 -range479: - call void @finch_panic_index(ptr @.str.299, i64 53, i64 %t8, i64 %t10) + br i1 %t11, label %range536, label %inrange537 +range536: + call void @finch_panic_index(ptr @.str.304, i64 53, i64 %t8, i64 %t10) unreachable -inrange480: +inrange537: %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 %then481, label %else482 -then481: + br i1 %t17, label %then538, label %else539 +then538: %t18 = load ptr, ptr %a1 %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic484, label %ok485 -panic484: - call void @finch_panic(ptr @.str.300, i64 55, ptr @.str.301) + br i1 %t19, label %panic541, label %ok542 +panic541: + call void @finch_panic(ptr @.str.305, i64 55, ptr @.str.306) unreachable -ok485: +ok542: %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 %panic486, label %ok487 -panic486: - call void @finch_panic(ptr @.str.302, i64 56, ptr @.str.303) + br i1 %t24, label %panic543, label %ok544 +panic543: + call void @finch_panic(ptr @.str.307, i64 56, ptr @.str.308) unreachable -ok487: +ok544: %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 %panic488, label %ok489 -panic488: - call void @finch_panic(ptr @.str.304, i64 57, ptr @.str.305) + br i1 %t27, label %panic545, label %ok546 +panic545: + call void @finch_panic(ptr @.str.309, i64 57, ptr @.str.310) unreachable -ok489: +ok546: %t28 = getelementptr inbounds %S.lexer.Lexer, ptr %t26, i32 0, i32 5 store i1 true, ptr %t28 - br label %endif483 -else482: + br label %endif540 +else539: %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 %then490, label %endif492 -then490: + br i1 %t32, label %then547, label %endif549 +then547: %t33 = load ptr, ptr %a1 %t34 = icmp eq ptr %t33, null - br i1 %t34, label %panic493, label %ok494 -panic493: - call void @finch_panic(ptr @.str.306, i64 59, ptr @.str.307) + br i1 %t34, label %panic550, label %ok551 +panic550: + call void @finch_panic(ptr @.str.311, i64 59, ptr @.str.312) unreachable -ok494: +ok551: %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 %endif492 -endif492: - br label %endif483 -endif483: + br label %endif549 +endif549: + br label %endif540 +endif540: %t38 = load ptr, ptr %a1 %t39 = icmp eq ptr %t38, null - br i1 %t39, label %panic495, label %ok496 -panic495: - call void @finch_panic(ptr @.str.308, i64 61, ptr @.str.309) + br i1 %t39, label %panic552, label %ok553 +panic552: + call void @finch_panic(ptr @.str.313, i64 61, ptr @.str.314) unreachable -ok496: +ok553: %t40 = getelementptr inbounds %S.lexer.Lexer, ptr %t38, i32 0, i32 2 %t41 = load i64, ptr %t40 %t42 = add i64 %t41, 1 @@ -11137,100 +12566,98 @@ entry: %a89 = alloca { ptr, i64, i64 }, align 16 %a90 = alloca { ptr, i64, i64 }, align 16 %a92 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 %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.310, i64 2, i64 0 }, ptr %t4 + store { ptr, i64, i64 } { ptr @.str.315, i64 2, i64 0 }, ptr %t4 %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 - store { ptr, i64, i64 } { ptr @.str.311, i64 2, i64 0 }, ptr %t5 + store { ptr, i64, i64 } { ptr @.str.316, i64 2, i64 0 }, ptr %t5 %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2 - store { ptr, i64, i64 } { ptr @.str.312, i64 2, i64 0 }, ptr %t6 + store { ptr, i64, i64 } { ptr @.str.317, i64 2, i64 0 }, ptr %t6 %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 3 - store { ptr, i64, i64 } { ptr @.str.313, i64 2, i64 0 }, ptr %t7 + store { ptr, i64, i64 } { ptr @.str.318, i64 2, i64 0 }, ptr %t7 %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4 - store { ptr, i64, i64 } { ptr @.str.314, i64 2, i64 0 }, ptr %t8 + store { ptr, i64, i64 } { ptr @.str.319, i64 2, i64 0 }, ptr %t8 %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 5 - store { ptr, i64, i64 } { ptr @.str.315, i64 2, i64 0 }, ptr %t9 + store { ptr, i64, i64 } { ptr @.str.320, i64 2, i64 0 }, ptr %t9 %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 6 - store { ptr, i64, i64 } { ptr @.str.316, i64 2, i64 0 }, ptr %t10 + store { ptr, i64, i64 } { ptr @.str.321, i64 2, i64 0 }, ptr %t10 %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 7 - store { ptr, i64, i64 } { ptr @.str.317, i64 2, i64 0 }, ptr %t11 + store { ptr, i64, i64 } { ptr @.str.322, i64 2, i64 0 }, ptr %t11 %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 8 - store { ptr, i64, i64 } { ptr @.str.318, i64 2, i64 0 }, ptr %t12 + store { ptr, i64, i64 } { ptr @.str.323, i64 2, i64 0 }, ptr %t12 %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 9 - store { ptr, i64, i64 } { ptr @.str.319, i64 2, i64 0 }, ptr %t13 + store { ptr, i64, i64 } { ptr @.str.324, i64 2, i64 0 }, ptr %t13 %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 10 - store { ptr, i64, i64 } { ptr @.str.320, i64 2, i64 0 }, ptr %t14 + store { ptr, i64, i64 } { ptr @.str.325, i64 2, i64 0 }, ptr %t14 %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 11 - store { ptr, i64, i64 } { ptr @.str.321, i64 2, i64 0 }, ptr %t15 + store { ptr, i64, i64 } { ptr @.str.326, i64 2, i64 0 }, ptr %t15 %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 12 - store { ptr, i64, i64 } { ptr @.str.322, i64 2, i64 0 }, ptr %t16 + store { ptr, i64, i64 } { ptr @.str.327, i64 2, i64 0 }, ptr %t16 %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 13 - store { ptr, i64, i64 } { ptr @.str.323, i64 2, i64 0 }, ptr %t17 + store { ptr, i64, i64 } { ptr @.str.328, i64 2, i64 0 }, ptr %t17 %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 14 - store { ptr, i64, i64 } { ptr @.str.324, i64 2, i64 0 }, ptr %t18 + store { ptr, i64, i64 } { ptr @.str.329, i64 2, i64 0 }, ptr %t18 %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 15 - store { ptr, i64, i64 } { ptr @.str.325, i64 2, i64 0 }, ptr %t19 + store { ptr, i64, i64 } { ptr @.str.330, 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 %panic497, label %ok498 -panic497: - call void @finch_panic(ptr @.str.326, i64 67, ptr @.str.327) + br i1 %t25, label %panic554, label %ok555 +panic554: + call void @finch_panic(ptr @.str.331, i64 67, ptr @.str.332) unreachable -ok498: +ok555: %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 %panic499, label %ok500 -panic499: - call void @finch_panic(ptr @.str.328, i64 67, ptr @.str.329) + br i1 %t30, label %panic556, label %ok557 +panic556: + call void @finch_panic(ptr @.str.333, i64 67, ptr @.str.334) unreachable -ok500: +ok557: %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 %then501, label %endif503 -then501: + br i1 %t34, label %then558, label %endif560 +then558: %t35 = load ptr, ptr %a1 %t36 = icmp eq ptr %t35, null - br i1 %t36, label %panic504, label %ok505 -panic504: - call void @finch_panic(ptr @.str.330, i64 68, ptr @.str.331) + br i1 %t36, label %panic561, label %ok562 +panic561: + call void @finch_panic(ptr @.str.335, i64 68, ptr @.str.336) unreachable -ok505: +ok562: %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 %panic506, label %ok507 -panic506: - call void @finch_panic(ptr @.str.333, i64 68, ptr @.str.334) + br i1 %t42, label %panic563, label %ok564 +panic563: + call void @finch_panic(ptr @.str.338, i64 68, ptr @.str.339) unreachable -ok507: +ok564: %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 %panic508, label %ok509 -panic508: - call void @finch_panic(ptr @.str.335, i64 68, ptr @.str.336) + br i1 %t46, label %panic565, label %ok566 +panic565: + call void @finch_panic(ptr @.str.340, i64 68, ptr @.str.341) unreachable -ok509: +ok566: %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.332, i64 68) + call void @finch_str_sub(ptr %a40, ptr %a39, i64 %t44, i64 %t49, ptr @.str.337, 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 @@ -11239,67 +12666,69 @@ ok509: %t55 = load i64, ptr %t52 %t56 = load ptr, ptr %a23 store i64 0, ptr %a57 - br label %find.cond510 -find.cond510: + br label %find.cond567 +find.cond567: %t58 = load i64, ptr %a57 %t59 = icmp slt i64 %t58, %t55 - br i1 %t59, label %find.body511, label %find.end514 -find.body511: + br i1 %t59, label %find.body568, label %find.end571 +find.body568: %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.hit512, label %find.next513 -find.hit512: + br i1 %t65, label %find.hit569, label %find.next570 +find.hit569: store i64 %t58, ptr %a54 - br label %find.end514 -find.next513: + br label %find.end571 +find.next570: %t66 = add i64 %t58, 1 store i64 %t66, ptr %a57 - br label %find.cond510 -find.end514: + br label %find.cond567 +find.end571: %t67 = load i64, ptr %a54 %t68 = icmp sge i64 %t67, 0 - br i1 %t68, label %then515, label %endif517 -then515: + br i1 %t68, label %then572, label %endif574 +then572: %t69 = load { ptr, i64, i64 }, ptr %a51 + call void @finch.drop.arr_str(ptr %a23) ret { ptr, i64, i64 } %t69 -endif517: - br label %endif503 -endif503: - store { ptr, i64, i64 } { ptr @.str.337, i64 22, i64 0 }, ptr %a70 +endif574: + call void @finch_str_drop(ptr %a51) + br label %endif560 +endif560: + store { ptr, i64, i64 } { ptr @.str.342, i64 22, i64 0 }, ptr %a70 %t71 = load ptr, ptr %a1 %t72 = icmp eq ptr %t71, null - br i1 %t72, label %panic518, label %ok519 -panic518: - call void @finch_panic(ptr @.str.338, i64 74, ptr @.str.339) + br i1 %t72, label %panic575, label %ok576 +panic575: + call void @finch_panic(ptr @.str.343, i64 74, ptr @.str.344) unreachable -ok519: +ok576: %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 %panic520, label %ok521 -panic520: - call void @finch_panic(ptr @.str.341, i64 74, ptr @.str.342) + br i1 %t78, label %panic577, label %ok578 +panic577: + call void @finch_panic(ptr @.str.346, i64 74, ptr @.str.347) unreachable -ok521: +ok578: %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 %panic522, label %ok523 -panic522: - call void @finch_panic(ptr @.str.343, i64 74, ptr @.str.344) + br i1 %t82, label %panic579, label %ok580 +panic579: + call void @finch_panic(ptr @.str.348, i64 74, ptr @.str.349) unreachable -ok523: +ok580: %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.340, i64 74) + call void @finch_str_sub(ptr %a76, ptr %a75, i64 %t80, i64 %t85, ptr @.str.345, i64 74) %t86 = load { ptr, i64, i64 }, ptr %a76 store { ptr, i64, i64 } %t86, ptr %a87 %t88 = load { ptr, i64, i64 }, ptr %a70 @@ -11308,15 +12737,17 @@ ok523: 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 %then524, label %endif526 -then524: + br i1 %t94, label %then581, label %endif583 +then581: %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 -endif526: - ret { ptr, i64, i64 } { ptr @.str.346, i64 0, i64 0 } + call void @finch_str_drop(ptr %a70) + call void @finch.drop.arr_str(ptr %a23) + ret { ptr, i64, i64 } %t95 +endif583: + call void @finch_str_drop(ptr %a87) + call void @finch_str_drop(ptr %a70) + call void @finch.drop.arr_str(ptr %a23) + ret { ptr, i64, i64 } { ptr @.str.351, i64 0, i64 0 } } define internal i8 @finch.lexer.escape(ptr %p0, i8 %p1) { @@ -11327,92 +12758,98 @@ entry: %a34 = 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 store ptr %p0, ptr %a1 store i8 %p1, ptr %a2 %t3 = load i8, ptr %a2 %t4 = icmp eq i8 %t3, 110 - br i1 %t4, label %then527, label %endif529 -then527: + br i1 %t4, label %then584, label %endif586 +then584: ret i8 10 -endif529: +endif586: %t5 = load i8, ptr %a2 %t6 = icmp eq i8 %t5, 116 - br i1 %t6, label %then530, label %endif532 -then530: + br i1 %t6, label %then587, label %endif589 +then587: ret i8 9 -endif532: +endif589: %t7 = load i8, ptr %a2 %t8 = icmp eq i8 %t7, 114 - br i1 %t8, label %then533, label %endif535 -then533: + br i1 %t8, label %then590, label %endif592 +then590: ret i8 13 -endif535: +endif592: %t9 = load i8, ptr %a2 %t10 = icmp eq i8 %t9, 48 - br i1 %t10, label %then536, label %endif538 -then536: + br i1 %t10, label %then593, label %endif595 +then593: %t11 = trunc i64 0 to i8 ret i8 %t11 -endif538: +endif595: %t12 = load i8, ptr %a2 %t13 = icmp eq i8 %t12, 92 - br label %logic.from539 -logic.from539: - br i1 %t13, label %logic.end541, label %logic.rhs540 -logic.rhs540: + br label %logic.from596 +logic.from596: + br i1 %t13, label %logic.end598, label %logic.rhs597 +logic.rhs597: %t14 = load i8, ptr %a2 %t15 = icmp eq i8 %t14, 34 - br label %logic.rend542 -logic.rend542: - br label %logic.end541 -logic.end541: - %t16 = phi i1 [ true, %logic.from539 ], [ %t15, %logic.rend542 ] - br label %logic.from543 -logic.from543: - br i1 %t16, label %logic.end545, label %logic.rhs544 -logic.rhs544: + br label %logic.rend599 +logic.rend599: + br label %logic.end598 +logic.end598: + %t16 = phi i1 [ true, %logic.from596 ], [ %t15, %logic.rend599 ] + br label %logic.from600 +logic.from600: + br i1 %t16, label %logic.end602, label %logic.rhs601 +logic.rhs601: %t17 = load i8, ptr %a2 %t18 = icmp eq i8 %t17, 39 - br label %logic.rend546 -logic.rend546: - br label %logic.end545 -logic.end545: - %t19 = phi i1 [ true, %logic.from543 ], [ %t18, %logic.rend546 ] - br i1 %t19, label %then547, label %endif549 -then547: + br label %logic.rend603 +logic.rend603: + br label %logic.end602 +logic.end602: + %t19 = phi i1 [ true, %logic.from600 ], [ %t18, %logic.rend603 ] + br i1 %t19, label %then604, label %endif606 +then604: %t20 = load i8, ptr %a2 ret i8 %t20 -endif549: +endif606: %t21 = load ptr, ptr %a1 %t22 = load ptr, ptr %a1 %t23 = icmp eq ptr %t22, null - br i1 %t23, label %panic550, label %ok551 -panic550: - call void @finch_panic(ptr @.str.347, i64 97, ptr @.str.348) + br i1 %t23, label %panic607, label %ok608 +panic607: + call void @finch_panic(ptr @.str.352, i64 97, ptr @.str.353) unreachable -ok551: +ok608: %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 %panic552, label %ok553 -panic552: - call void @finch_panic(ptr @.str.349, i64 97, ptr @.str.350) + br i1 %t27, label %panic609, label %ok610 +panic609: + call void @finch_panic(ptr @.str.354, i64 97, ptr @.str.355) unreachable -ok553: +ok610: %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.351, i64 16, i64 0 }, ptr %a35 + store { ptr, i64, i64 } { ptr @.str.356, 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 - call void @finch.lexer.fail(ptr %t21, i64 %t25, i64 %t30, { ptr, i64, i64 } %t37) - %t38 = load i8, ptr %a2 - ret i8 %t38 + store { ptr, i64, i64 } %t33, ptr %a37 + call void @finch_str_drop(ptr %a37) + %t38 = load { ptr, i64, i64 }, ptr %a34 + call void @finch.lexer.fail(ptr %t21, i64 %t25, i64 %t30, { ptr, i64, i64 } %t38) + store { ptr, i64, i64 } %t38, ptr %a39 + call void @finch_str_drop(ptr %a39) + %t40 = load i8, ptr %a2 + ret i8 %t40 } define internal void @finch.copy.S_lexer_Token(ptr %dst, ptr %src) { @@ -11429,29 +12866,13 @@ entry: ret void } -define internal void @finch.copy.arr_S_lexer_Token(ptr %dst, ptr %src) { +define internal void @finch.drop.S_lexer_Lexer(ptr %a) { entry: - %a5 = alloca i64, align 16 - call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (%S.lexer.Token, 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.cond860 -n.cond860: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body861, label %n.end862 -n.body861: - %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.cond860 -n.end862: + + %t1 = getelementptr inbounds %S.lexer.Lexer, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.lexer.Lexer, ptr %a, i32 0, i32 1 + call void @finch_str_drop(ptr %t2) ret void } @@ -11473,44 +12894,59 @@ entry: %a177 = alloca i64, align 16 %a225 = alloca { ptr, i64, i64 }, align 16 %a226 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a403 = alloca { ptr, i64, i64 }, align 16 - %a404 = alloca { ptr, i64, i64 }, align 16 + %a235 = alloca { ptr, i64, i64 }, align 16 + %a238 = alloca { ptr, i64, i64 }, align 16 + %a245 = alloca { ptr, i64, i64 }, align 16 + %a246 = alloca { ptr, i64, i64 }, align 16 + %a249 = alloca { ptr, i64, i64 }, align 16 + %a254 = alloca { ptr, i64, i64 }, align 16 + %a358 = alloca { ptr, i64, i64 }, align 16 %a405 = alloca { ptr, i64, i64 }, align 16 %a406 = alloca { ptr, i64, i64 }, align 16 - %a415 = alloca i8, 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 + %a418 = alloca { ptr, i64, i64 }, align 16 %a421 = alloca { ptr, i64, i64 }, align 16 - %a448 = alloca i8, align 16 - %a454 = alloca i8, align 16 - %a461 = alloca { ptr, i64, i64 }, align 16 - %a469 = alloca { ptr, i64, i64 }, align 16 - %a470 = alloca { ptr, i64, i64 }, align 16 + %a428 = alloca i8, align 16 + %a431 = alloca { ptr, i64, i64 }, align 16 + %a436 = alloca { ptr, i64, i64 }, align 16 + %a438 = alloca { ptr, i64, i64 }, align 16 + %a465 = alloca i8, align 16 + %a471 = alloca i8, align 16 + %a478 = alloca { ptr, i64, i64 }, align 16 + %a486 = alloca { ptr, i64, i64 }, align 16 %a487 = alloca { ptr, i64, i64 }, align 16 - %a491 = alloca i64, align 16 - %a504 = alloca { ptr, i64, i64 }, align 16 - %a517 = alloca { ptr, i64, i64 }, align 16 - %a518 = alloca { ptr, i64, i64 }, align 16 - %a530 = alloca { ptr, i64, i64 }, align 16 - %a531 = alloca { ptr, i64, i64 }, align 16 - %a532 = alloca { ptr, i64, i64 }, align 16 - %a534 = alloca { ptr, i64, i64 }, align 16 - %a535 = alloca { ptr, i64, i64 }, align 16 - %a536 = alloca { ptr, i64, i64 }, align 16 + %a491 = alloca { ptr, i64, i64 }, align 16 + %a506 = alloca { ptr, i64, i64 }, align 16 + %a510 = alloca i64, align 16 + %a523 = alloca { ptr, i64, i64 }, align 16 + %a528 = alloca { ptr, i64, i64 }, align 16 + %a538 = 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 - %a545 = alloca i64, align 16 + %a551 = alloca { ptr, i64, i64 }, align 16 + %a552 = alloca { ptr, i64, i64 }, align 16 %a553 = 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 %a558 = alloca { ptr, i64, i64 }, align 16 %a559 = alloca { ptr, i64, i64 }, align 16 - %a563 = alloca %S.lexer.Token, align 16 - %a564 = alloca %S.lexer.Token, align 16 + %a562 = 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 + %a567 = alloca { ptr, i64, i64 }, align 16 + %a570 = alloca i64, align 16 + %a578 = alloca { ptr, i64, i64 }, align 16 + %a579 = alloca { ptr, i64, i64 }, align 16 + %a582 = alloca { ptr, i64, i64 }, align 16 + %a585 = alloca { ptr, i64, i64 }, align 16 + %a586 = alloca { ptr, i64, i64 }, align 16 %a589 = alloca { ptr, i64, i64 }, align 16 - %a590 = alloca { ptr, i64, i64 }, align 16 + %a592 = alloca %S.lexer.Token, align 16 + %a593 = alloca %S.lexer.Token, align 16 store { ptr, i64, i64 } %p0, ptr %a1 store { ptr, i64, i64 } %p1, ptr %a2 %t3 = load { ptr, i64, i64 }, ptr %a1 @@ -11530,217 +12966,217 @@ entry: store %S.lexer.Lexer %t16, ptr %a17 store ptr %a17, ptr %a18 store { ptr, i64, i64 } zeroinitializer, ptr %a19 - br label %while.cond554 -while.cond554: + br label %while.cond611 +while.cond611: %t20 = load ptr, ptr %a18 %t21 = icmp eq ptr %t20, null - br i1 %t21, label %panic557, label %ok558 -panic557: - call void @finch_panic(ptr @.str.352, i64 105, ptr @.str.353) + br i1 %t21, label %panic614, label %ok615 +panic614: + call void @finch_panic(ptr @.str.357, i64 105, ptr @.str.358) unreachable -ok558: +ok615: %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 %panic559, label %ok560 -panic559: - call void @finch_panic(ptr @.str.354, i64 105, ptr @.str.355) + br i1 %t25, label %panic616, label %ok617 +panic616: + call void @finch_panic(ptr @.str.359, i64 105, ptr @.str.360) unreachable -ok560: +ok617: %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.body555, label %while.end556 -while.body555: + br i1 %t29, label %while.body612, label %while.end613 +while.body612: %t30 = load ptr, ptr %a18 %t31 = icmp eq ptr %t30, null - br i1 %t31, label %panic561, label %ok562 -panic561: - call void @finch_panic(ptr @.str.356, i64 106, ptr @.str.357) + br i1 %t31, label %panic618, label %ok619 +panic618: + call void @finch_panic(ptr @.str.361, i64 106, ptr @.str.362) unreachable -ok562: +ok619: %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 %panic563, label %ok564 -panic563: - call void @finch_panic(ptr @.str.358, i64 106, ptr @.str.359) + br i1 %t34, label %panic620, label %ok621 +panic620: + call void @finch_panic(ptr @.str.363, i64 106, ptr @.str.364) unreachable -ok564: +ok621: %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 %range565, label %inrange566 -range565: - call void @finch_panic_index(ptr @.str.360, i64 106, i64 %t36, i64 %t38) + br i1 %t39, label %range622, label %inrange623 +range622: + call void @finch_panic_index(ptr @.str.365, i64 106, i64 %t36, i64 %t38) unreachable -inrange566: +inrange623: %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.from567 -logic.from567: - br i1 %t45, label %logic.end569, label %logic.rhs568 -logic.rhs568: + br label %logic.from624 +logic.from624: + br i1 %t45, label %logic.end626, label %logic.rhs625 +logic.rhs625: %t46 = load i8, ptr %a43 %t47 = icmp eq i8 %t46, 9 - br label %logic.rend570 -logic.rend570: - br label %logic.end569 -logic.end569: - %t48 = phi i1 [ true, %logic.from567 ], [ %t47, %logic.rend570 ] - br label %logic.from571 -logic.from571: - br i1 %t48, label %logic.end573, label %logic.rhs572 -logic.rhs572: + br label %logic.rend627 +logic.rend627: + br label %logic.end626 +logic.end626: + %t48 = phi i1 [ true, %logic.from624 ], [ %t47, %logic.rend627 ] + br label %logic.from628 +logic.from628: + br i1 %t48, label %logic.end630, label %logic.rhs629 +logic.rhs629: %t49 = load i8, ptr %a43 %t50 = icmp eq i8 %t49, 10 - br label %logic.rend574 -logic.rend574: - br label %logic.end573 -logic.end573: - %t51 = phi i1 [ true, %logic.from571 ], [ %t50, %logic.rend574 ] - br label %logic.from575 -logic.from575: - br i1 %t51, label %logic.end577, label %logic.rhs576 -logic.rhs576: + br label %logic.rend631 +logic.rend631: + br label %logic.end630 +logic.end630: + %t51 = phi i1 [ true, %logic.from628 ], [ %t50, %logic.rend631 ] + br label %logic.from632 +logic.from632: + br i1 %t51, label %logic.end634, label %logic.rhs633 +logic.rhs633: %t52 = load i8, ptr %a43 %t53 = icmp eq i8 %t52, 13 - br label %logic.rend578 -logic.rend578: - br label %logic.end577 -logic.end577: - %t54 = phi i1 [ true, %logic.from575 ], [ %t53, %logic.rend578 ] - br i1 %t54, label %then579, label %endif581 -then579: + br label %logic.rend635 +logic.rend635: + br label %logic.end634 +logic.end634: + %t54 = phi i1 [ true, %logic.from632 ], [ %t53, %logic.rend635 ] + br i1 %t54, label %then636, label %endif638 +then636: %t55 = load ptr, ptr %a18 call void @finch.lexer.advance(ptr %t55) - br label %while.cond554 -endif581: + br label %while.cond611 +endif638: %t56 = load i8, ptr %a43 %t57 = icmp eq i8 %t56, 47 - br label %logic.from582 -logic.from582: - br i1 %t57, label %logic.rhs583, label %logic.end584 -logic.rhs583: + br label %logic.from639 +logic.from639: + br i1 %t57, label %logic.rhs640, label %logic.end641 +logic.rhs640: %t58 = load ptr, ptr %a18 %t59 = call i8 @finch.lexer.peek(ptr %t58, i64 1) %t60 = icmp eq i8 %t59, 47 - br label %logic.rend585 -logic.rend585: - br label %logic.end584 -logic.end584: - %t61 = phi i1 [ false, %logic.from582 ], [ %t60, %logic.rend585 ] - br i1 %t61, label %then586, label %endif588 -then586: - br label %while.cond589 -while.cond589: + br label %logic.rend642 +logic.rend642: + br label %logic.end641 +logic.end641: + %t61 = phi i1 [ false, %logic.from639 ], [ %t60, %logic.rend642 ] + br i1 %t61, label %then643, label %endif645 +then643: + br label %while.cond646 +while.cond646: %t62 = load ptr, ptr %a18 %t63 = icmp eq ptr %t62, null - br i1 %t63, label %panic592, label %ok593 -panic592: - call void @finch_panic(ptr @.str.361, i64 112, ptr @.str.362) + br i1 %t63, label %panic649, label %ok650 +panic649: + call void @finch_panic(ptr @.str.366, i64 112, ptr @.str.367) unreachable -ok593: +ok650: %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 %panic594, label %ok595 -panic594: - call void @finch_panic(ptr @.str.363, i64 112, ptr @.str.364) + br i1 %t67, label %panic651, label %ok652 +panic651: + call void @finch_panic(ptr @.str.368, i64 112, ptr @.str.369) unreachable -ok595: +ok652: %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.from596 -logic.from596: - br i1 %t71, label %logic.rhs597, label %logic.end598 -logic.rhs597: + br label %logic.from653 +logic.from653: + br i1 %t71, label %logic.rhs654, label %logic.end655 +logic.rhs654: %t72 = load ptr, ptr %a18 %t73 = icmp eq ptr %t72, null - br i1 %t73, label %panic599, label %ok600 -panic599: - call void @finch_panic(ptr @.str.365, i64 112, ptr @.str.366) + br i1 %t73, label %panic656, label %ok657 +panic656: + call void @finch_panic(ptr @.str.370, i64 112, ptr @.str.371) unreachable -ok600: +ok657: %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 %panic601, label %ok602 -panic601: - call void @finch_panic(ptr @.str.367, i64 112, ptr @.str.368) + br i1 %t76, label %panic658, label %ok659 +panic658: + call void @finch_panic(ptr @.str.372, i64 112, ptr @.str.373) unreachable -ok602: +ok659: %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 %range603, label %inrange604 -range603: - call void @finch_panic_index(ptr @.str.369, i64 112, i64 %t78, i64 %t80) + br i1 %t81, label %range660, label %inrange661 +range660: + call void @finch_panic_index(ptr @.str.374, i64 112, i64 %t78, i64 %t80) unreachable -inrange604: +inrange661: %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.rend605 -logic.rend605: - br label %logic.end598 -logic.end598: - %t86 = phi i1 [ false, %logic.from596 ], [ %t85, %logic.rend605 ] - br i1 %t86, label %while.body590, label %while.end591 -while.body590: + br label %logic.rend662 +logic.rend662: + br label %logic.end655 +logic.end655: + %t86 = phi i1 [ false, %logic.from653 ], [ %t85, %logic.rend662 ] + br i1 %t86, label %while.body647, label %while.end648 +while.body647: %t87 = load ptr, ptr %a18 call void @finch.lexer.advance(ptr %t87) - br label %while.cond589 -while.end591: - br label %while.cond554 -endif588: + br label %while.cond646 +while.end648: + br label %while.cond611 +endif645: %t88 = load i8, ptr %a43 %t89 = icmp eq i8 %t88, 47 - br label %logic.from606 -logic.from606: - br i1 %t89, label %logic.rhs607, label %logic.end608 -logic.rhs607: + br label %logic.from663 +logic.from663: + br i1 %t89, label %logic.rhs664, label %logic.end665 +logic.rhs664: %t90 = load ptr, ptr %a18 %t91 = call i8 @finch.lexer.peek(ptr %t90, i64 1) %t92 = icmp eq i8 %t91, 42 - br label %logic.rend609 -logic.rend609: - br label %logic.end608 -logic.end608: - %t93 = phi i1 [ false, %logic.from606 ], [ %t92, %logic.rend609 ] - br i1 %t93, label %then610, label %endif612 -then610: + br label %logic.rend666 +logic.rend666: + br label %logic.end665 +logic.end665: + %t93 = phi i1 [ false, %logic.from663 ], [ %t92, %logic.rend666 ] + br i1 %t93, label %then667, label %endif669 +then667: %t94 = load ptr, ptr %a18 %t95 = icmp eq ptr %t94, null - br i1 %t95, label %panic613, label %ok614 -panic613: - call void @finch_panic(ptr @.str.370, i64 118, ptr @.str.371) + br i1 %t95, label %panic670, label %ok671 +panic670: + call void @finch_panic(ptr @.str.375, i64 118, ptr @.str.376) unreachable -ok614: +ok671: %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 %panic615, label %ok616 -panic615: - call void @finch_panic(ptr @.str.372, i64 119, ptr @.str.373) + br i1 %t100, label %panic672, label %ok673 +panic672: + call void @finch_panic(ptr @.str.377, i64 119, ptr @.str.378) unreachable -ok616: +ok673: %t101 = getelementptr inbounds %S.lexer.Lexer, ptr %t99, i32 0, i32 4 %t102 = load i64, ptr %t101 store i64 %t102, ptr %a103 @@ -11748,1061 +13184,1109 @@ ok616: call void @finch.lexer.advance(ptr %t104) %t105 = load ptr, ptr %a18 call void @finch.lexer.advance(ptr %t105) - br label %while.cond617 -while.cond617: + br label %while.cond674 +while.cond674: %t106 = load ptr, ptr %a18 %t107 = icmp eq ptr %t106, null - br i1 %t107, label %panic620, label %ok621 -panic620: - call void @finch_panic(ptr @.str.374, i64 122, ptr @.str.375) + br i1 %t107, label %panic677, label %ok678 +panic677: + call void @finch_panic(ptr @.str.379, i64 122, ptr @.str.380) unreachable -ok621: +ok678: %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 %panic622, label %ok623 -panic622: - call void @finch_panic(ptr @.str.376, i64 122, ptr @.str.377) + br i1 %t111, label %panic679, label %ok680 +panic679: + call void @finch_panic(ptr @.str.381, i64 122, ptr @.str.382) unreachable -ok623: +ok680: %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.from624 -logic.from624: - br i1 %t115, label %logic.rhs625, label %logic.end626 -logic.rhs625: + br label %logic.from681 +logic.from681: + br i1 %t115, label %logic.rhs682, label %logic.end683 +logic.rhs682: %t116 = load ptr, ptr %a18 %t117 = icmp eq ptr %t116, null - br i1 %t117, label %panic627, label %ok628 -panic627: - call void @finch_panic(ptr @.str.378, i64 122, ptr @.str.379) + br i1 %t117, label %panic684, label %ok685 +panic684: + call void @finch_panic(ptr @.str.383, i64 122, ptr @.str.384) unreachable -ok628: +ok685: %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 %panic629, label %ok630 -panic629: - call void @finch_panic(ptr @.str.380, i64 122, ptr @.str.381) + br i1 %t120, label %panic686, label %ok687 +panic686: + call void @finch_panic(ptr @.str.385, i64 122, ptr @.str.386) unreachable -ok630: +ok687: %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 %range631, label %inrange632 -range631: - call void @finch_panic_index(ptr @.str.382, i64 122, i64 %t122, i64 %t124) + br i1 %t125, label %range688, label %inrange689 +range688: + call void @finch_panic_index(ptr @.str.387, i64 122, i64 %t122, i64 %t124) unreachable -inrange632: +inrange689: %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.from633 -logic.from633: - br i1 %t129, label %logic.rhs634, label %logic.end635 -logic.rhs634: + br label %logic.from690 +logic.from690: + br i1 %t129, label %logic.rhs691, label %logic.end692 +logic.rhs691: %t130 = load ptr, ptr %a18 %t131 = call i8 @finch.lexer.peek(ptr %t130, i64 1) %t132 = icmp eq i8 %t131, 47 - br label %logic.rend636 -logic.rend636: - br label %logic.end635 -logic.end635: - %t133 = phi i1 [ false, %logic.from633 ], [ %t132, %logic.rend636 ] + br label %logic.rend693 +logic.rend693: + br label %logic.end692 +logic.end692: + %t133 = phi i1 [ false, %logic.from690 ], [ %t132, %logic.rend693 ] %t134 = xor i1 %t133, true - br label %logic.rend637 -logic.rend637: - br label %logic.end626 -logic.end626: - %t135 = phi i1 [ false, %logic.from624 ], [ %t134, %logic.rend637 ] - br i1 %t135, label %while.body618, label %while.end619 -while.body618: + br label %logic.rend694 +logic.rend694: + br label %logic.end683 +logic.end683: + %t135 = phi i1 [ false, %logic.from681 ], [ %t134, %logic.rend694 ] + br i1 %t135, label %while.body675, label %while.end676 +while.body675: %t136 = load ptr, ptr %a18 call void @finch.lexer.advance(ptr %t136) - br label %while.cond617 -while.end619: + br label %while.cond674 +while.end676: %t137 = load ptr, ptr %a18 %t138 = icmp eq ptr %t137, null - br i1 %t138, label %panic638, label %ok639 -panic638: - call void @finch_panic(ptr @.str.383, i64 125, ptr @.str.384) + br i1 %t138, label %panic695, label %ok696 +panic695: + call void @finch_panic(ptr @.str.388, i64 125, ptr @.str.389) unreachable -ok639: +ok696: %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 %panic640, label %ok641 -panic640: - call void @finch_panic(ptr @.str.385, i64 125, ptr @.str.386) + br i1 %t142, label %panic697, label %ok698 +panic697: + call void @finch_panic(ptr @.str.390, i64 125, ptr @.str.391) unreachable -ok641: +ok698: %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 %then642, label %endif644 -then642: + br i1 %t146, label %then699, label %endif701 +then699: %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.387, i64 36, i64 0 }) - br label %endif644 -endif644: + call void @finch.lexer.fail(ptr %t147, i64 %t148, i64 %t149, { ptr, i64, i64 } { ptr @.str.392, i64 36, i64 0 }) + br label %endif701 +endif701: %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.cond554 -endif612: - %t152 = insertvalue %S.lexer.Token zeroinitializer, { ptr, i64, i64 } { ptr @.str.388, i64 0, i64 0 }, 0 - %t153 = insertvalue %S.lexer.Token %t152, { ptr, i64, i64 } { ptr @.str.389, i64 0, i64 0 }, 1 + br label %while.cond611 +endif669: + %t152 = insertvalue %S.lexer.Token zeroinitializer, { ptr, i64, i64 } { ptr @.str.393, i64 0, i64 0 }, 0 + %t153 = insertvalue %S.lexer.Token %t152, { ptr, i64, i64 } { ptr @.str.394, i64 0, i64 0 }, 1 %t154 = load ptr, ptr %a18 %t155 = icmp eq ptr %t154, null - br i1 %t155, label %panic645, label %ok646 -panic645: - call void @finch_panic(ptr @.str.390, i64 133, ptr @.str.391) + br i1 %t155, label %panic702, label %ok703 +panic702: + call void @finch_panic(ptr @.str.395, i64 133, ptr @.str.396) unreachable -ok646: +ok703: %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 %panic647, label %ok648 -panic647: - call void @finch_panic(ptr @.str.392, i64 133, ptr @.str.393) + br i1 %t160, label %panic704, label %ok705 +panic704: + call void @finch_panic(ptr @.str.397, i64 133, ptr @.str.398) unreachable -ok648: +ok705: %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 %panic649, label %ok650 -panic649: - call void @finch_panic(ptr @.str.394, i64 133, ptr @.str.395) + br i1 %t165, label %panic706, label %ok707 +panic706: + call void @finch_panic(ptr @.str.399, i64 133, ptr @.str.400) unreachable -ok650: +ok707: %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 %panic651, label %ok652 -panic651: - call void @finch_panic(ptr @.str.396, i64 134, ptr @.str.397) + br i1 %t171, label %panic708, label %ok709 +panic708: + call void @finch_panic(ptr @.str.401, i64 134, ptr @.str.402) unreachable -ok652: +ok709: %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 %panic653, label %ok654 -panic653: - call void @finch_panic(ptr @.str.398, i64 135, ptr @.str.399) + br i1 %t174, label %panic710, label %ok711 +panic710: + call void @finch_panic(ptr @.str.403, i64 135, ptr @.str.404) unreachable -ok654: +ok711: %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 %then655, label %else656 -then655: - br label %while.cond658 -while.cond658: + br i1 %t179, label %then712, label %else713 +then712: + br label %while.cond715 +while.cond715: %t180 = load ptr, ptr %a18 %t181 = icmp eq ptr %t180, null - br i1 %t181, label %panic661, label %ok662 -panic661: - call void @finch_panic(ptr @.str.400, i64 137, ptr @.str.401) + br i1 %t181, label %panic718, label %ok719 +panic718: + call void @finch_panic(ptr @.str.405, i64 137, ptr @.str.406) unreachable -ok662: +ok719: %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 %panic663, label %ok664 -panic663: - call void @finch_panic(ptr @.str.402, i64 137, ptr @.str.403) + br i1 %t185, label %panic720, label %ok721 +panic720: + call void @finch_panic(ptr @.str.407, i64 137, ptr @.str.408) unreachable -ok664: +ok721: %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.from665 -logic.from665: - br i1 %t189, label %logic.rhs666, label %logic.end667 -logic.rhs666: + br label %logic.from722 +logic.from722: + br i1 %t189, label %logic.rhs723, label %logic.end724 +logic.rhs723: %t190 = load ptr, ptr %a18 %t191 = icmp eq ptr %t190, null - br i1 %t191, label %panic668, label %ok669 -panic668: - call void @finch_panic(ptr @.str.404, i64 137, ptr @.str.405) + br i1 %t191, label %panic725, label %ok726 +panic725: + call void @finch_panic(ptr @.str.409, i64 137, ptr @.str.410) unreachable -ok669: +ok726: %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 %panic670, label %ok671 -panic670: - call void @finch_panic(ptr @.str.406, i64 137, ptr @.str.407) + br i1 %t194, label %panic727, label %ok728 +panic727: + call void @finch_panic(ptr @.str.411, i64 137, ptr @.str.412) unreachable -ok671: +ok728: %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 %range672, label %inrange673 -range672: - call void @finch_panic_index(ptr @.str.408, i64 137, i64 %t196, i64 %t198) + br i1 %t199, label %range729, label %inrange730 +range729: + call void @finch_panic_index(ptr @.str.413, i64 137, i64 %t196, i64 %t198) unreachable -inrange673: +inrange730: %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.from674 -logic.from674: - br i1 %t203, label %logic.end676, label %logic.rhs675 -logic.rhs675: + br label %logic.from731 +logic.from731: + br i1 %t203, label %logic.end733, label %logic.rhs732 +logic.rhs732: %t204 = load ptr, ptr %a18 %t205 = icmp eq ptr %t204, null - br i1 %t205, label %panic677, label %ok678 -panic677: - call void @finch_panic(ptr @.str.409, i64 137, ptr @.str.410) + br i1 %t205, label %panic734, label %ok735 +panic734: + call void @finch_panic(ptr @.str.414, i64 137, ptr @.str.415) unreachable -ok678: +ok735: %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 %panic679, label %ok680 -panic679: - call void @finch_panic(ptr @.str.411, i64 137, ptr @.str.412) + br i1 %t208, label %panic736, label %ok737 +panic736: + call void @finch_panic(ptr @.str.416, i64 137, ptr @.str.417) unreachable -ok680: +ok737: %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 %range681, label %inrange682 -range681: - call void @finch_panic_index(ptr @.str.413, i64 137, i64 %t210, i64 %t212) + br i1 %t213, label %range738, label %inrange739 +range738: + call void @finch_panic_index(ptr @.str.418, i64 137, i64 %t210, i64 %t212) unreachable -inrange682: +inrange739: %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.rend683 -logic.rend683: - br label %logic.end676 -logic.end676: - %t218 = phi i1 [ true, %logic.from674 ], [ %t217, %logic.rend683 ] - br label %logic.rend684 -logic.rend684: - br label %logic.end667 -logic.end667: - %t219 = phi i1 [ false, %logic.from665 ], [ %t218, %logic.rend684 ] - br i1 %t219, label %while.body659, label %while.end660 -while.body659: + br label %logic.rend740 +logic.rend740: + br label %logic.end733 +logic.end733: + %t218 = phi i1 [ true, %logic.from731 ], [ %t217, %logic.rend740 ] + br label %logic.rend741 +logic.rend741: + br label %logic.end724 +logic.end724: + %t219 = phi i1 [ false, %logic.from722 ], [ %t218, %logic.rend741 ] + br i1 %t219, label %while.body716, label %while.end717 +while.body716: %t220 = load ptr, ptr %a18 call void @finch.lexer.advance(ptr %t220) - br label %while.cond658 -while.end660: + br label %while.cond715 +while.end717: %t221 = load ptr, ptr %a18 %t222 = icmp eq ptr %t221, null - br i1 %t222, label %panic685, label %ok686 -panic685: - call void @finch_panic(ptr @.str.414, i64 140, ptr @.str.415) + br i1 %t222, label %panic742, label %ok743 +panic742: + call void @finch_panic(ptr @.str.419, i64 140, ptr @.str.420) unreachable -ok686: +ok743: %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 %panic687, label %ok688 -panic687: - call void @finch_panic(ptr @.str.417, i64 140, ptr @.str.418) + br i1 %t229, label %panic744, label %ok745 +panic744: + call void @finch_panic(ptr @.str.422, i64 140, ptr @.str.423) unreachable -ok688: +ok745: %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.416, i64 140) + call void @finch_str_sub(ptr %a226, ptr %a225, i64 %t227, i64 %t231, ptr @.str.421, i64 140) %t232 = load { ptr, i64, i64 }, ptr %a226 %t233 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 + %t234 = load { ptr, i64, i64 }, ptr %t233 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.419, 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 %then689, label %endif691 -then689: - %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 - store { ptr, i64, i64 } %t239, ptr %a241 - 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 %endif691 -endif691: - br label %endif657 -else656: - %t244 = load i8, ptr %a43 - %t245 = call i1 @finch.lexer.isDigit(i8 %t244) - br i1 %t245, label %then692, label %else693 -then692: - %t246 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 - store { ptr, i64, i64 } { ptr @.str.420, i64 3, i64 0 }, ptr %t246 - %t247 = load i8, ptr %a43 - %t248 = icmp eq i8 %t247, 48 - br label %logic.from695 -logic.from695: - br i1 %t248, label %logic.rhs696, label %logic.end697 -logic.rhs696: - %t249 = load ptr, ptr %a18 - %t250 = call i8 @finch.lexer.peek(ptr %t249, i64 1) - %t251 = icmp eq i8 %t250, 120 - br label %logic.from698 -logic.from698: - br i1 %t251, label %logic.end700, label %logic.rhs699 -logic.rhs699: - %t252 = load ptr, ptr %a18 - %t253 = call i8 @finch.lexer.peek(ptr %t252, i64 1) - %t254 = icmp eq i8 %t253, 88 - br label %logic.rend701 -logic.rend701: - br label %logic.end700 -logic.end700: - %t255 = phi i1 [ true, %logic.from698 ], [ %t254, %logic.rend701 ] - br label %logic.rend702 -logic.rend702: - br label %logic.end697 -logic.end697: - %t256 = phi i1 [ false, %logic.from695 ], [ %t255, %logic.rend702 ] - br i1 %t256, label %then703, label %else704 -then703: + store { ptr, i64, i64 } %t234, ptr %a235 + call void @finch_str_drop(ptr %a235) + %t236 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 + %t237 = load { ptr, i64, i64 }, ptr %t236 + store { ptr, i64, i64 } { ptr @.str.424, i64 5, i64 0 }, ptr %t236 + store { ptr, i64, i64 } %t237, ptr %a238 + call void @finch_str_drop(ptr %a238) + %t239 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 + %t240 = load { ptr, i64, i64 }, ptr %t239 + %t241 = call i1 @finch.lexer.isKeyword({ ptr, i64, i64 } %t240) + br i1 %t241, label %then746, label %endif748 +then746: + %t242 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 + %t243 = load { ptr, i64, i64 }, ptr %t242 + %t244 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 + store { ptr, i64, i64 } %t243, ptr %a245 + call void @finch_str_copy(ptr %a246, ptr %a245) + %t247 = load { ptr, i64, i64 }, ptr %a246 + %t248 = load { ptr, i64, i64 }, ptr %t244 + store { ptr, i64, i64 } %t247, ptr %t244 + store { ptr, i64, i64 } %t248, ptr %a249 + call void @finch_str_drop(ptr %a249) + br label %endif748 +endif748: + br label %endif714 +else713: + %t250 = load i8, ptr %a43 + %t251 = call i1 @finch.lexer.isDigit(i8 %t250) + br i1 %t251, label %then749, label %else750 +then749: + %t252 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 + %t253 = load { ptr, i64, i64 }, ptr %t252 + store { ptr, i64, i64 } { ptr @.str.425, i64 3, i64 0 }, ptr %t252 + store { ptr, i64, i64 } %t253, ptr %a254 + call void @finch_str_drop(ptr %a254) + %t255 = load i8, ptr %a43 + %t256 = icmp eq i8 %t255, 48 + br label %logic.from752 +logic.from752: + br i1 %t256, label %logic.rhs753, label %logic.end754 +logic.rhs753: %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.cond706 -while.cond706: - %t259 = load ptr, ptr %a18 - %t260 = icmp eq ptr %t259, null - br i1 %t260, label %panic709, label %ok710 -panic709: - call void @finch_panic(ptr @.str.421, i64 150, ptr @.str.422) - unreachable -ok710: - %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 %panic711, label %ok712 -panic711: - call void @finch_panic(ptr @.str.423, i64 150, ptr @.str.424) - unreachable -ok712: - %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.from713 -logic.from713: - br i1 %t268, label %logic.rhs714, label %logic.end715 -logic.rhs714: - %t269 = load ptr, ptr %a18 - %t270 = icmp eq ptr %t269, null - br i1 %t270, label %panic716, label %ok717 -panic716: - call void @finch_panic(ptr @.str.425, i64 150, ptr @.str.426) - unreachable -ok717: - %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 %panic718, label %ok719 -panic718: - call void @finch_panic(ptr @.str.427, i64 150, ptr @.str.428) - unreachable -ok719: - %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 %range720, label %inrange721 -range720: - call void @finch_panic_index(ptr @.str.429, i64 150, i64 %t275, i64 %t277) - unreachable -inrange721: - %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.from722 -logic.from722: - br i1 %t282, label %logic.end724, label %logic.rhs723 -logic.rhs723: - %t283 = load ptr, ptr %a18 - %t284 = icmp eq ptr %t283, null - br i1 %t284, label %panic725, label %ok726 -panic725: - call void @finch_panic(ptr @.str.430, i64 150, ptr @.str.431) - unreachable -ok726: - %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 %panic727, label %ok728 -panic727: - call void @finch_panic(ptr @.str.432, i64 150, ptr @.str.433) - unreachable -ok728: - %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 %range729, label %inrange730 -range729: - call void @finch_panic_index(ptr @.str.434, i64 150, i64 %t289, i64 %t291) - unreachable -inrange730: - %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.rend731 -logic.rend731: - br label %logic.end724 -logic.end724: - %t297 = phi i1 [ true, %logic.from722 ], [ %t296, %logic.rend731 ] - br label %logic.rend732 -logic.rend732: - br label %logic.end715 -logic.end715: - %t298 = phi i1 [ false, %logic.from713 ], [ %t297, %logic.rend732 ] - br i1 %t298, label %while.body707, label %while.end708 -while.body707: - %t299 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t299) - br label %while.cond706 -while.end708: - br label %endif705 -else704: - br label %while.cond733 -while.cond733: - %t300 = load ptr, ptr %a18 - %t301 = icmp eq ptr %t300, null - br i1 %t301, label %panic736, label %ok737 -panic736: - call void @finch_panic(ptr @.str.435, i64 154, ptr @.str.436) - unreachable -ok737: - %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 %panic738, label %ok739 -panic738: - call void @finch_panic(ptr @.str.437, i64 154, ptr @.str.438) - unreachable -ok739: - %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.from740 -logic.from740: - br i1 %t309, label %logic.rhs741, label %logic.end742 -logic.rhs741: - %t310 = load ptr, ptr %a18 - %t311 = icmp eq ptr %t310, null - br i1 %t311, label %panic743, label %ok744 -panic743: - call void @finch_panic(ptr @.str.439, i64 154, ptr @.str.440) - unreachable -ok744: - %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 %panic745, label %ok746 -panic745: - call void @finch_panic(ptr @.str.441, i64 154, ptr @.str.442) - unreachable -ok746: - %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 %range747, label %inrange748 -range747: - call void @finch_panic_index(ptr @.str.443, i64 154, i64 %t316, i64 %t318) - unreachable -inrange748: - %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.from749 -logic.from749: - br i1 %t323, label %logic.end751, label %logic.rhs750 -logic.rhs750: - %t324 = load ptr, ptr %a18 - %t325 = icmp eq ptr %t324, null - br i1 %t325, label %panic752, label %ok753 -panic752: - call void @finch_panic(ptr @.str.444, i64 154, ptr @.str.445) - unreachable -ok753: - %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 %panic754, label %ok755 -panic754: - call void @finch_panic(ptr @.str.446, i64 154, ptr @.str.447) - unreachable -ok755: - %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 %range756, label %inrange757 -range756: - call void @finch_panic_index(ptr @.str.448, i64 154, i64 %t330, i64 %t332) - unreachable -inrange757: - %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 + %t258 = call i8 @finch.lexer.peek(ptr %t257, i64 1) + %t259 = icmp eq i8 %t258, 120 + br label %logic.from755 +logic.from755: + br i1 %t259, label %logic.end757, label %logic.rhs756 +logic.rhs756: + %t260 = load ptr, ptr %a18 + %t261 = call i8 @finch.lexer.peek(ptr %t260, i64 1) + %t262 = icmp eq i8 %t261, 88 br label %logic.rend758 logic.rend758: - br label %logic.end751 -logic.end751: - %t338 = phi i1 [ true, %logic.from749 ], [ %t337, %logic.rend758 ] + br label %logic.end757 +logic.end757: + %t263 = phi i1 [ true, %logic.from755 ], [ %t262, %logic.rend758 ] br label %logic.rend759 logic.rend759: - br label %logic.end742 -logic.end742: - %t339 = phi i1 [ false, %logic.from740 ], [ %t338, %logic.rend759 ] - br i1 %t339, label %while.body734, label %while.end735 -while.body734: - %t340 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t340) - br label %while.cond733 -while.end735: - %t341 = load ptr, ptr %a18 - %t342 = call i8 @finch.lexer.peek(ptr %t341, i64 0) - %t343 = icmp eq i8 %t342, 46 - br label %logic.from760 -logic.from760: - br i1 %t343, label %logic.rhs761, label %logic.end762 -logic.rhs761: - %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.rend763 -logic.rend763: - br label %logic.end762 -logic.end762: - %t347 = phi i1 [ false, %logic.from760 ], [ %t346, %logic.rend763 ] - br i1 %t347, label %then764, label %endif766 -then764: - %t348 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 - store { ptr, i64, i64 } { ptr @.str.449, i64 5, i64 0 }, ptr %t348 + br label %logic.end754 +logic.end754: + %t264 = phi i1 [ false, %logic.from752 ], [ %t263, %logic.rend759 ] + br i1 %t264, label %then760, label %else761 +then760: + %t265 = load ptr, ptr %a18 + call void @finch.lexer.advance(ptr %t265) + %t266 = load ptr, ptr %a18 + call void @finch.lexer.advance(ptr %t266) + br label %while.cond763 +while.cond763: + %t267 = load ptr, ptr %a18 + %t268 = icmp eq ptr %t267, null + br i1 %t268, label %panic766, label %ok767 +panic766: + call void @finch_panic(ptr @.str.426, i64 150, ptr @.str.427) + unreachable +ok767: + %t269 = getelementptr inbounds %S.lexer.Lexer, ptr %t267, i32 0, i32 2 + %t270 = load i64, ptr %t269 + %t271 = load ptr, ptr %a18 + %t272 = icmp eq ptr %t271, null + br i1 %t272, label %panic768, label %ok769 +panic768: + call void @finch_panic(ptr @.str.428, i64 150, ptr @.str.429) + unreachable +ok769: + %t273 = getelementptr inbounds %S.lexer.Lexer, ptr %t271, i32 0, i32 0 + %t274 = getelementptr inbounds { ptr, i64, i64 }, ptr %t273, i32 0, i32 1 + %t275 = load i64, ptr %t274 + %t276 = icmp slt i64 %t270, %t275 + br label %logic.from770 +logic.from770: + br i1 %t276, label %logic.rhs771, label %logic.end772 +logic.rhs771: + %t277 = load ptr, ptr %a18 + %t278 = icmp eq ptr %t277, null + br i1 %t278, label %panic773, label %ok774 +panic773: + call void @finch_panic(ptr @.str.430, i64 150, ptr @.str.431) + unreachable +ok774: + %t279 = getelementptr inbounds %S.lexer.Lexer, ptr %t277, i32 0, i32 0 + %t280 = load ptr, ptr %a18 + %t281 = icmp eq ptr %t280, null + br i1 %t281, label %panic775, label %ok776 +panic775: + call void @finch_panic(ptr @.str.432, i64 150, ptr @.str.433) + unreachable +ok776: + %t282 = getelementptr inbounds %S.lexer.Lexer, ptr %t280, i32 0, i32 2 + %t283 = load i64, ptr %t282 + %t284 = load { ptr, i64, i64 }, ptr %t279 + %t285 = extractvalue { ptr, i64, i64 } %t284, 1 + %t286 = icmp uge i64 %t283, %t285 + br i1 %t286, label %range777, label %inrange778 +range777: + call void @finch_panic_index(ptr @.str.434, i64 150, i64 %t283, i64 %t285) + unreachable +inrange778: + %t287 = extractvalue { ptr, i64, i64 } %t284, 0 + %t288 = getelementptr inbounds i8, ptr %t287, i64 %t283 + %t289 = load i8, ptr %t288 + %t290 = call i1 @finch.lexer.isHex(i8 %t289) + br label %logic.from779 +logic.from779: + br i1 %t290, label %logic.end781, label %logic.rhs780 +logic.rhs780: + %t291 = load ptr, ptr %a18 + %t292 = icmp eq ptr %t291, null + br i1 %t292, label %panic782, label %ok783 +panic782: + call void @finch_panic(ptr @.str.435, i64 150, ptr @.str.436) + unreachable +ok783: + %t293 = getelementptr inbounds %S.lexer.Lexer, ptr %t291, i32 0, i32 0 + %t294 = load ptr, ptr %a18 + %t295 = icmp eq ptr %t294, null + br i1 %t295, label %panic784, label %ok785 +panic784: + call void @finch_panic(ptr @.str.437, i64 150, ptr @.str.438) + unreachable +ok785: + %t296 = getelementptr inbounds %S.lexer.Lexer, ptr %t294, i32 0, i32 2 + %t297 = load i64, ptr %t296 + %t298 = load { ptr, i64, i64 }, ptr %t293 + %t299 = extractvalue { ptr, i64, i64 } %t298, 1 + %t300 = icmp uge i64 %t297, %t299 + br i1 %t300, label %range786, label %inrange787 +range786: + call void @finch_panic_index(ptr @.str.439, i64 150, i64 %t297, i64 %t299) + unreachable +inrange787: + %t301 = extractvalue { ptr, i64, i64 } %t298, 0 + %t302 = getelementptr inbounds i8, ptr %t301, i64 %t297 + %t303 = load i8, ptr %t302 + %t304 = icmp eq i8 %t303, 95 + br label %logic.rend788 +logic.rend788: + br label %logic.end781 +logic.end781: + %t305 = phi i1 [ true, %logic.from779 ], [ %t304, %logic.rend788 ] + br label %logic.rend789 +logic.rend789: + br label %logic.end772 +logic.end772: + %t306 = phi i1 [ false, %logic.from770 ], [ %t305, %logic.rend789 ] + br i1 %t306, label %while.body764, label %while.end765 +while.body764: + %t307 = load ptr, ptr %a18 + call void @finch.lexer.advance(ptr %t307) + br label %while.cond763 +while.end765: + br label %endif762 +else761: + br label %while.cond790 +while.cond790: + %t308 = load ptr, ptr %a18 + %t309 = icmp eq ptr %t308, null + br i1 %t309, label %panic793, label %ok794 +panic793: + call void @finch_panic(ptr @.str.440, i64 154, ptr @.str.441) + unreachable +ok794: + %t310 = getelementptr inbounds %S.lexer.Lexer, ptr %t308, i32 0, i32 2 + %t311 = load i64, ptr %t310 + %t312 = load ptr, ptr %a18 + %t313 = icmp eq ptr %t312, null + br i1 %t313, label %panic795, label %ok796 +panic795: + call void @finch_panic(ptr @.str.442, i64 154, ptr @.str.443) + unreachable +ok796: + %t314 = getelementptr inbounds %S.lexer.Lexer, ptr %t312, i32 0, i32 0 + %t315 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i32 0, i32 1 + %t316 = load i64, ptr %t315 + %t317 = icmp slt i64 %t311, %t316 + br label %logic.from797 +logic.from797: + br i1 %t317, label %logic.rhs798, label %logic.end799 +logic.rhs798: + %t318 = load ptr, ptr %a18 + %t319 = icmp eq ptr %t318, null + br i1 %t319, label %panic800, label %ok801 +panic800: + call void @finch_panic(ptr @.str.444, i64 154, ptr @.str.445) + unreachable +ok801: + %t320 = getelementptr inbounds %S.lexer.Lexer, ptr %t318, i32 0, i32 0 + %t321 = load ptr, ptr %a18 + %t322 = icmp eq ptr %t321, null + br i1 %t322, label %panic802, label %ok803 +panic802: + call void @finch_panic(ptr @.str.446, i64 154, ptr @.str.447) + unreachable +ok803: + %t323 = getelementptr inbounds %S.lexer.Lexer, ptr %t321, i32 0, i32 2 + %t324 = load i64, ptr %t323 + %t325 = load { ptr, i64, i64 }, ptr %t320 + %t326 = extractvalue { ptr, i64, i64 } %t325, 1 + %t327 = icmp uge i64 %t324, %t326 + br i1 %t327, label %range804, label %inrange805 +range804: + call void @finch_panic_index(ptr @.str.448, i64 154, i64 %t324, i64 %t326) + unreachable +inrange805: + %t328 = extractvalue { ptr, i64, i64 } %t325, 0 + %t329 = getelementptr inbounds i8, ptr %t328, i64 %t324 + %t330 = load i8, ptr %t329 + %t331 = call i1 @finch.lexer.isDigit(i8 %t330) + br label %logic.from806 +logic.from806: + br i1 %t331, label %logic.end808, label %logic.rhs807 +logic.rhs807: + %t332 = load ptr, ptr %a18 + %t333 = icmp eq ptr %t332, null + br i1 %t333, label %panic809, label %ok810 +panic809: + call void @finch_panic(ptr @.str.449, i64 154, ptr @.str.450) + unreachable +ok810: + %t334 = getelementptr inbounds %S.lexer.Lexer, ptr %t332, i32 0, i32 0 + %t335 = load ptr, ptr %a18 + %t336 = icmp eq ptr %t335, null + br i1 %t336, label %panic811, label %ok812 +panic811: + call void @finch_panic(ptr @.str.451, i64 154, ptr @.str.452) + unreachable +ok812: + %t337 = getelementptr inbounds %S.lexer.Lexer, ptr %t335, i32 0, i32 2 + %t338 = load i64, ptr %t337 + %t339 = load { ptr, i64, i64 }, ptr %t334 + %t340 = extractvalue { ptr, i64, i64 } %t339, 1 + %t341 = icmp uge i64 %t338, %t340 + br i1 %t341, label %range813, label %inrange814 +range813: + call void @finch_panic_index(ptr @.str.453, i64 154, i64 %t338, i64 %t340) + unreachable +inrange814: + %t342 = extractvalue { ptr, i64, i64 } %t339, 0 + %t343 = getelementptr inbounds i8, ptr %t342, i64 %t338 + %t344 = load i8, ptr %t343 + %t345 = icmp eq i8 %t344, 95 + br label %logic.rend815 +logic.rend815: + br label %logic.end808 +logic.end808: + %t346 = phi i1 [ true, %logic.from806 ], [ %t345, %logic.rend815 ] + br label %logic.rend816 +logic.rend816: + br label %logic.end799 +logic.end799: + %t347 = phi i1 [ false, %logic.from797 ], [ %t346, %logic.rend816 ] + br i1 %t347, label %while.body791, label %while.end792 +while.body791: + %t348 = load ptr, ptr %a18 + call void @finch.lexer.advance(ptr %t348) + br label %while.cond790 +while.end792: %t349 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t349) - br label %while.cond767 -while.cond767: - %t350 = load ptr, ptr %a18 - %t351 = icmp eq ptr %t350, null - br i1 %t351, label %panic770, label %ok771 -panic770: - call void @finch_panic(ptr @.str.450, i64 160, ptr @.str.451) - unreachable -ok771: - %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 %panic772, label %ok773 -panic772: - call void @finch_panic(ptr @.str.452, i64 160, ptr @.str.453) - unreachable -ok773: - %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.from774 -logic.from774: - br i1 %t359, label %logic.rhs775, label %logic.end776 -logic.rhs775: + %t350 = call i8 @finch.lexer.peek(ptr %t349, i64 0) + %t351 = icmp eq i8 %t350, 46 + br label %logic.from817 +logic.from817: + br i1 %t351, label %logic.rhs818, label %logic.end819 +logic.rhs818: + %t352 = load ptr, ptr %a18 + %t353 = call i8 @finch.lexer.peek(ptr %t352, i64 1) + %t354 = call i1 @finch.lexer.isDigit(i8 %t353) + br label %logic.rend820 +logic.rend820: + br label %logic.end819 +logic.end819: + %t355 = phi i1 [ false, %logic.from817 ], [ %t354, %logic.rend820 ] + br i1 %t355, label %then821, label %endif823 +then821: + %t356 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 + %t357 = load { ptr, i64, i64 }, ptr %t356 + store { ptr, i64, i64 } { ptr @.str.454, i64 5, i64 0 }, ptr %t356 + store { ptr, i64, i64 } %t357, ptr %a358 + call void @finch_str_drop(ptr %a358) + %t359 = load ptr, ptr %a18 + call void @finch.lexer.advance(ptr %t359) + br label %while.cond824 +while.cond824: %t360 = load ptr, ptr %a18 %t361 = icmp eq ptr %t360, null - br i1 %t361, label %panic777, label %ok778 -panic777: - call void @finch_panic(ptr @.str.454, i64 160, ptr @.str.455) + br i1 %t361, label %panic827, label %ok828 +panic827: + call void @finch_panic(ptr @.str.455, i64 160, ptr @.str.456) unreachable -ok778: - %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 %panic779, label %ok780 -panic779: - call void @finch_panic(ptr @.str.456, i64 160, ptr @.str.457) +ok828: + %t362 = getelementptr inbounds %S.lexer.Lexer, ptr %t360, i32 0, i32 2 + %t363 = load i64, ptr %t362 + %t364 = load ptr, ptr %a18 + %t365 = icmp eq ptr %t364, null + br i1 %t365, label %panic829, label %ok830 +panic829: + call void @finch_panic(ptr @.str.457, i64 160, ptr @.str.458) unreachable -ok780: - %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 %range781, label %inrange782 -range781: - call void @finch_panic_index(ptr @.str.458, i64 160, i64 %t366, i64 %t368) - unreachable -inrange782: - %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.from783 -logic.from783: - br i1 %t373, label %logic.end785, label %logic.rhs784 -logic.rhs784: - %t374 = load ptr, ptr %a18 - %t375 = icmp eq ptr %t374, null - br i1 %t375, label %panic786, label %ok787 -panic786: +ok830: + %t366 = getelementptr inbounds %S.lexer.Lexer, ptr %t364, i32 0, i32 0 + %t367 = getelementptr inbounds { ptr, i64, i64 }, ptr %t366, i32 0, i32 1 + %t368 = load i64, ptr %t367 + %t369 = icmp slt i64 %t363, %t368 + br label %logic.from831 +logic.from831: + br i1 %t369, label %logic.rhs832, label %logic.end833 +logic.rhs832: + %t370 = load ptr, ptr %a18 + %t371 = icmp eq ptr %t370, null + br i1 %t371, label %panic834, label %ok835 +panic834: call void @finch_panic(ptr @.str.459, i64 160, ptr @.str.460) unreachable -ok787: - %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 %panic788, label %ok789 -panic788: +ok835: + %t372 = getelementptr inbounds %S.lexer.Lexer, ptr %t370, i32 0, i32 0 + %t373 = load ptr, ptr %a18 + %t374 = icmp eq ptr %t373, null + br i1 %t374, label %panic836, label %ok837 +panic836: call void @finch_panic(ptr @.str.461, i64 160, ptr @.str.462) unreachable -ok789: - %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 %range790, label %inrange791 -range790: - call void @finch_panic_index(ptr @.str.463, i64 160, i64 %t380, i64 %t382) +ok837: + %t375 = getelementptr inbounds %S.lexer.Lexer, ptr %t373, i32 0, i32 2 + %t376 = load i64, ptr %t375 + %t377 = load { ptr, i64, i64 }, ptr %t372 + %t378 = extractvalue { ptr, i64, i64 } %t377, 1 + %t379 = icmp uge i64 %t376, %t378 + br i1 %t379, label %range838, label %inrange839 +range838: + call void @finch_panic_index(ptr @.str.463, i64 160, i64 %t376, i64 %t378) unreachable -inrange791: - %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.rend792 -logic.rend792: - br label %logic.end785 -logic.end785: - %t388 = phi i1 [ true, %logic.from783 ], [ %t387, %logic.rend792 ] - br label %logic.rend793 -logic.rend793: - br label %logic.end776 -logic.end776: - %t389 = phi i1 [ false, %logic.from774 ], [ %t388, %logic.rend793 ] - br i1 %t389, label %while.body768, label %while.end769 -while.body768: - %t390 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t390) - br label %while.cond767 -while.end769: - br label %endif766 -endif766: - br label %endif705 -endif705: - %t391 = load ptr, ptr %a18 - %t392 = icmp eq ptr %t391, null - br i1 %t392, label %panic794, label %ok795 -panic794: - call void @finch_panic(ptr @.str.464, i64 165, ptr @.str.465) +inrange839: + %t380 = extractvalue { ptr, i64, i64 } %t377, 0 + %t381 = getelementptr inbounds i8, ptr %t380, i64 %t376 + %t382 = load i8, ptr %t381 + %t383 = call i1 @finch.lexer.isDigit(i8 %t382) + br label %logic.from840 +logic.from840: + br i1 %t383, label %logic.end842, label %logic.rhs841 +logic.rhs841: + %t384 = load ptr, ptr %a18 + %t385 = icmp eq ptr %t384, null + br i1 %t385, label %panic843, label %ok844 +panic843: + call void @finch_panic(ptr @.str.464, i64 160, ptr @.str.465) unreachable -ok795: - %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 %panic796, label %ok797 -panic796: - call void @finch_panic(ptr @.str.467, i64 165, ptr @.str.468) +ok844: + %t386 = getelementptr inbounds %S.lexer.Lexer, ptr %t384, i32 0, i32 0 + %t387 = load ptr, ptr %a18 + %t388 = icmp eq ptr %t387, null + br i1 %t388, label %panic845, label %ok846 +panic845: + call void @finch_panic(ptr @.str.466, i64 160, ptr @.str.467) unreachable -ok797: - %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.466, i64 165) - %t402 = load { ptr, i64, i64 }, ptr %a396 - store { ptr, i64, i64 } %t402, ptr %a403 - store { ptr, i64, i64 } { ptr @.str.470, i64 1, i64 0 }, ptr %a405 - store { ptr, i64, i64 } { ptr @.str.471, 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 %endif694 -else693: - %t409 = load i8, ptr %a43 - %t410 = icmp eq i8 %t409, 34 - br label %logic.from798 -logic.from798: - br i1 %t410, label %logic.end800, label %logic.rhs799 -logic.rhs799: - %t411 = load i8, ptr %a43 - %t412 = icmp eq i8 %t411, 39 - br label %logic.rend801 -logic.rend801: - br label %logic.end800 -logic.end800: - %t413 = phi i1 [ true, %logic.from798 ], [ %t412, %logic.rend801 ] - br i1 %t413, label %then802, label %else803 -then802: - %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.472, i64 6, i64 0 }, ptr %t416 - %t417 = load i8, ptr %a415 - %t418 = icmp eq i8 %t417, 39 - br i1 %t418, label %then805, label %endif807 -then805: - %t419 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 - store { ptr, i64, i64 } { ptr @.str.473, i64 4, i64 0 }, ptr %t419 - br label %endif807 -endif807: - %t420 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t420) - store { ptr, i64, i64 } zeroinitializer, ptr %a421 - br label %while.cond808 -while.cond808: - %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.body809, label %while.end810 -while.body809: - %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.from811 -logic.from811: - br i1 %t429, label %logic.end813, label %logic.rhs812 -logic.rhs812: - %t430 = load ptr, ptr %a18 - %t431 = call i8 @finch.lexer.peek(ptr %t430, i64 0) - %t432 = icmp eq i8 %t431, 10 - br label %logic.rend814 -logic.rend814: - br label %logic.end813 -logic.end813: - %t433 = phi i1 [ true, %logic.from811 ], [ %t432, %logic.rend814 ] - br i1 %t433, label %then815, label %endif817 -then815: - %t434 = load i8, ptr %a415 - %t435 = icmp eq i8 %t434, 34 - br i1 %t435, label %then818, label %endif820 -then818: - %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.474, i64 34, i64 0 }) - br label %endif820 -endif820: - %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.475, i64 32, i64 0 }) - br label %endif817 -endif817: - %t446 = load ptr, ptr %a18 - %t447 = call i8 @finch.lexer.peek(ptr %t446, i64 0) - store i8 %t447, ptr %a448 - %t449 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t449) - %t450 = load i8, ptr %a448 - %t451 = icmp eq i8 %t450, 92 - br i1 %t451, label %then821, label %endif823 -then821: - %t452 = load ptr, ptr %a18 - %t453 = call i8 @finch.lexer.peek(ptr %t452, i64 0) - store i8 %t453, ptr %a454 - %t455 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t455) - %t456 = load ptr, ptr %a18 - %t457 = load i8, ptr %a454 - %t458 = call i8 @finch.lexer.escape(ptr %t456, i8 %t457) - store i8 %t458, ptr %a448 +ok846: + %t389 = getelementptr inbounds %S.lexer.Lexer, ptr %t387, i32 0, i32 2 + %t390 = load i64, ptr %t389 + %t391 = load { ptr, i64, i64 }, ptr %t386 + %t392 = extractvalue { ptr, i64, i64 } %t391, 1 + %t393 = icmp uge i64 %t390, %t392 + br i1 %t393, label %range847, label %inrange848 +range847: + call void @finch_panic_index(ptr @.str.468, i64 160, i64 %t390, i64 %t392) + unreachable +inrange848: + %t394 = extractvalue { ptr, i64, i64 } %t391, 0 + %t395 = getelementptr inbounds i8, ptr %t394, i64 %t390 + %t396 = load i8, ptr %t395 + %t397 = icmp eq i8 %t396, 95 + br label %logic.rend849 +logic.rend849: + br label %logic.end842 +logic.end842: + %t398 = phi i1 [ true, %logic.from840 ], [ %t397, %logic.rend849 ] + br label %logic.rend850 +logic.rend850: + br label %logic.end833 +logic.end833: + %t399 = phi i1 [ false, %logic.from831 ], [ %t398, %logic.rend850 ] + br i1 %t399, label %while.body825, label %while.end826 +while.body825: + %t400 = load ptr, ptr %a18 + call void @finch.lexer.advance(ptr %t400) + br label %while.cond824 +while.end826: br label %endif823 endif823: - %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) - %t462 = load { ptr, i64, i64 }, ptr %a461 - %t463 = load i64, ptr %t459 - %t464 = add i64 %t463, 1 - call void @finch_arr_reserve(ptr %a421, i64 %t464, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t465 = load ptr, ptr %a421 - %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.cond808 -while.end810: - %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.476, 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.from824 -logic.from824: - br i1 %t474, label %logic.rhs825, label %logic.end826 -logic.rhs825: - %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.rend827 -logic.rend827: - br label %logic.end826 -logic.end826: - %t479 = phi i1 [ false, %logic.from824 ], [ %t478, %logic.rend827 ] - br i1 %t479, label %then828, label %endif830 -then828: - %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.477, i64 44, i64 0 }) - br label %endif830 -endif830: - br label %endif804 -else803: - %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 %then831, label %endif833 -then831: - 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 %then834, label %else835 -then834: - store i64 2, ptr %a491 - br label %endif836 -else835: - %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 %then837, label %else838 -then837: - store i64 3, ptr %a491 - br label %endif839 -else838: - %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 %then840, label %endif842 -then840: - store i64 4, ptr %a491 - br label %endif842 -endif842: - br label %endif839 -endif839: - br label %endif836 -endif836: - store { ptr, i64, i64 } { ptr @.str.478, 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 %then843, label %endif845 -then843: - store { ptr, i64, i64 } { ptr @.str.479, i64 74, i64 0 }, ptr %a504 - br label %endif845 -endif845: - %t508 = load ptr, ptr %a18 - %t509 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 2 - %t510 = load i64, ptr %t509 - %t511 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 3 - %t512 = load i64, ptr %t511 - %t513 = load ptr, ptr %a18 - %t514 = icmp eq ptr %t513, null - br i1 %t514, label %panic846, label %ok847 -panic846: - call void @finch_panic(ptr @.str.481, i64 211, ptr @.str.482) + br label %endif762 +endif762: + %t401 = load ptr, ptr %a18 + %t402 = icmp eq ptr %t401, null + br i1 %t402, label %panic851, label %ok852 +panic851: + call void @finch_panic(ptr @.str.469, i64 165, ptr @.str.470) unreachable -ok847: - %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 %panic848, label %ok849 -panic848: - call void @finch_panic(ptr @.str.484, i64 211, ptr @.str.485) +ok852: + %t403 = getelementptr inbounds %S.lexer.Lexer, ptr %t401, i32 0, i32 0 + %t404 = load { ptr, i64, i64 }, ptr %t403 + store { ptr, i64, i64 } %t404, ptr %a405 + %t407 = load i64, ptr %a177 + %t408 = load ptr, ptr %a18 + %t409 = icmp eq ptr %t408, null + br i1 %t409, label %panic853, label %ok854 +panic853: + call void @finch_panic(ptr @.str.472, i64 165, ptr @.str.473) unreachable -ok849: - %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 %panic850, label %ok851 -panic850: +ok854: + %t410 = getelementptr inbounds %S.lexer.Lexer, ptr %t408, i32 0, i32 2 + %t411 = load i64, ptr %t410 + call void @finch_str_sub(ptr %a406, ptr %a405, i64 %t407, i64 %t411, ptr @.str.471, i64 165) + %t412 = load { ptr, i64, i64 }, ptr %a406 + store { ptr, i64, i64 } %t412, ptr %a413 + store { ptr, i64, i64 } { ptr @.str.475, i64 1, i64 0 }, ptr %a415 + store { ptr, i64, i64 } { ptr @.str.476, i64 0, i64 0 }, ptr %a416 + call void @finch_str_replace(ptr %a414, ptr %a413, ptr %a415, ptr %a416) + %t417 = load { ptr, i64, i64 }, ptr %a414 + store { ptr, i64, i64 } %t412, ptr %a418 + call void @finch_str_drop(ptr %a418) + %t419 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 + %t420 = load { ptr, i64, i64 }, ptr %t419 + store { ptr, i64, i64 } %t417, ptr %t419 + store { ptr, i64, i64 } %t420, ptr %a421 + call void @finch_str_drop(ptr %a421) + br label %endif751 +else750: + %t422 = load i8, ptr %a43 + %t423 = icmp eq i8 %t422, 34 + br label %logic.from855 +logic.from855: + br i1 %t423, label %logic.end857, label %logic.rhs856 +logic.rhs856: + %t424 = load i8, ptr %a43 + %t425 = icmp eq i8 %t424, 39 + br label %logic.rend858 +logic.rend858: + br label %logic.end857 +logic.end857: + %t426 = phi i1 [ true, %logic.from855 ], [ %t425, %logic.rend858 ] + br i1 %t426, label %then859, label %else860 +then859: + %t427 = load i8, ptr %a43 + store i8 %t427, ptr %a428 + %t429 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 + %t430 = load { ptr, i64, i64 }, ptr %t429 + store { ptr, i64, i64 } { ptr @.str.477, i64 6, i64 0 }, ptr %t429 + store { ptr, i64, i64 } %t430, ptr %a431 + call void @finch_str_drop(ptr %a431) + %t432 = load i8, ptr %a428 + %t433 = icmp eq i8 %t432, 39 + br i1 %t433, label %then862, label %endif864 +then862: + %t434 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 + %t435 = load { ptr, i64, i64 }, ptr %t434 + store { ptr, i64, i64 } { ptr @.str.478, i64 4, i64 0 }, ptr %t434 + store { ptr, i64, i64 } %t435, ptr %a436 + call void @finch_str_drop(ptr %a436) + br label %endif864 +endif864: + %t437 = load ptr, ptr %a18 + call void @finch.lexer.advance(ptr %t437) + store { ptr, i64, i64 } zeroinitializer, ptr %a438 + br label %while.cond865 +while.cond865: + %t439 = load ptr, ptr %a18 + %t440 = call i8 @finch.lexer.peek(ptr %t439, i64 0) + %t441 = load i8, ptr %a428 + %t442 = icmp ne i8 %t440, %t441 + br i1 %t442, label %while.body866, label %while.end867 +while.body866: + %t443 = load ptr, ptr %a18 + %t444 = call i8 @finch.lexer.peek(ptr %t443, i64 0) + %t445 = trunc i64 0 to i8 + %t446 = icmp eq i8 %t444, %t445 + br label %logic.from868 +logic.from868: + br i1 %t446, label %logic.end870, label %logic.rhs869 +logic.rhs869: + %t447 = load ptr, ptr %a18 + %t448 = call i8 @finch.lexer.peek(ptr %t447, i64 0) + %t449 = icmp eq i8 %t448, 10 + br label %logic.rend871 +logic.rend871: + br label %logic.end870 +logic.end870: + %t450 = phi i1 [ true, %logic.from868 ], [ %t449, %logic.rend871 ] + br i1 %t450, label %then872, label %endif874 +then872: + %t451 = load i8, ptr %a428 + %t452 = icmp eq i8 %t451, 34 + br i1 %t452, label %then875, label %endif877 +then875: + %t453 = load ptr, ptr %a18 + %t454 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 2 + %t455 = load i64, ptr %t454 + %t456 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 3 + %t457 = load i64, ptr %t456 + call void @finch.lexer.fail(ptr %t453, i64 %t455, i64 %t457, { ptr, i64, i64 } { ptr @.str.479, i64 34, i64 0 }) + br label %endif877 +endif877: + %t458 = load ptr, ptr %a18 + %t459 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 2 + %t460 = load i64, ptr %t459 + %t461 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 3 + %t462 = load i64, ptr %t461 + call void @finch.lexer.fail(ptr %t458, i64 %t460, i64 %t462, { ptr, i64, i64 } { ptr @.str.480, i64 32, i64 0 }) + br label %endif874 +endif874: + %t463 = load ptr, ptr %a18 + %t464 = call i8 @finch.lexer.peek(ptr %t463, i64 0) + store i8 %t464, ptr %a465 + %t466 = load ptr, ptr %a18 + call void @finch.lexer.advance(ptr %t466) + %t467 = load i8, ptr %a465 + %t468 = icmp eq i8 %t467, 92 + br i1 %t468, label %then878, label %endif880 +then878: + %t469 = load ptr, ptr %a18 + %t470 = call i8 @finch.lexer.peek(ptr %t469, i64 0) + store i8 %t470, ptr %a471 + %t472 = load ptr, ptr %a18 + call void @finch.lexer.advance(ptr %t472) + %t473 = load ptr, ptr %a18 + %t474 = load i8, ptr %a471 + %t475 = call i8 @finch.lexer.escape(ptr %t473, i8 %t474) + store i8 %t475, ptr %a465 + br label %endif880 +endif880: + %t476 = getelementptr inbounds { ptr, i64, i64 }, ptr %a438, i32 0, i32 1 + %t477 = load i8, ptr %a465 + call void @finch_str_from_char(ptr %a478, i8 signext %t477) + %t479 = load { ptr, i64, i64 }, ptr %a478 + %t480 = load i64, ptr %t476 + %t481 = add i64 %t480, 1 + call void @finch_arr_reserve(ptr %a438, i64 %t481, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t482 = load ptr, ptr %a438 + %t483 = getelementptr inbounds { ptr, i64, i64 }, ptr %t482, i64 %t480 + store { ptr, i64, i64 } %t479, ptr %t483 + store i64 %t481, ptr %t476 + br label %while.cond865 +while.end867: + %t484 = load ptr, ptr %a18 + call void @finch.lexer.advance(ptr %t484) + %t485 = getelementptr inbounds { ptr, i64, i64 }, ptr %a438, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.481, i64 0, i64 0 }, ptr %a486 + call void @finch_str_join(ptr %a487, ptr %a438, ptr %a486) + %t488 = load { ptr, i64, i64 }, ptr %a487 + %t489 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 + %t490 = load { ptr, i64, i64 }, ptr %t489 + store { ptr, i64, i64 } %t488, ptr %t489 + store { ptr, i64, i64 } %t490, ptr %a491 + call void @finch_str_drop(ptr %a491) + %t492 = load i8, ptr %a428 + %t493 = icmp eq i8 %t492, 39 + br label %logic.from881 +logic.from881: + br i1 %t493, label %logic.rhs882, label %logic.end883 +logic.rhs882: + %t494 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 + %t495 = getelementptr inbounds { ptr, i64, i64 }, ptr %t494, i32 0, i32 1 + %t496 = load i64, ptr %t495 + %t497 = icmp ne i64 %t496, 1 + br label %logic.rend884 +logic.rend884: + br label %logic.end883 +logic.end883: + %t498 = phi i1 [ false, %logic.from881 ], [ %t497, %logic.rend884 ] + br i1 %t498, label %then885, label %endif887 +then885: + %t499 = load ptr, ptr %a18 + %t500 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 2 + %t501 = load i64, ptr %t500 + %t502 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 3 + %t503 = load i64, ptr %t502 + call void @finch.lexer.fail(ptr %t499, i64 %t501, i64 %t503, { ptr, i64, i64 } { ptr @.str.482, i64 44, i64 0 }) + br label %endif887 +endif887: + call void @finch.drop.arr_str(ptr %a438) + br label %endif861 +else860: + %t504 = load ptr, ptr %a18 + %t505 = call { ptr, i64, i64 } @finch.lexer.operator(ptr %t504) + store { ptr, i64, i64 } %t505, ptr %a506 + %t507 = getelementptr inbounds { ptr, i64, i64 }, ptr %a506, i32 0, i32 1 + %t508 = load i64, ptr %t507 + %t509 = icmp eq i64 %t508, 0 + br i1 %t509, label %then888, label %endif890 +then888: + store i64 1, ptr %a510 + %t511 = load i8, ptr %a43 + %t512 = zext i8 %t511 to i64 + %t513 = and i64 %t512, 224 + %t514 = icmp eq i64 %t513, 192 + br i1 %t514, label %then891, label %else892 +then891: + store i64 2, ptr %a510 + br label %endif893 +else892: + %t515 = load i8, ptr %a43 + %t516 = zext i8 %t515 to i64 + %t517 = and i64 %t516, 240 + %t518 = icmp eq i64 %t517, 224 + br i1 %t518, label %then894, label %else895 +then894: + store i64 3, ptr %a510 + br label %endif896 +else895: + %t519 = load i8, ptr %a43 + %t520 = zext i8 %t519 to i64 + %t521 = and i64 %t520, 248 + %t522 = icmp eq i64 %t521, 240 + br i1 %t522, label %then897, label %endif899 +then897: + store i64 4, ptr %a510 + br label %endif899 +endif899: + br label %endif896 +endif896: + br label %endif893 +endif893: + store { ptr, i64, i64 } { ptr @.str.483, i64 0, i64 0 }, ptr %a523 + %t524 = load i8, ptr %a43 + %t525 = zext i8 %t524 to i64 + %t526 = icmp sge i64 %t525, 128 + br i1 %t526, label %then900, label %endif902 +then900: + %t527 = load { ptr, i64, i64 }, ptr %a523 + store { ptr, i64, i64 } { ptr @.str.484, i64 74, i64 0 }, ptr %a523 + store { ptr, i64, i64 } %t527, ptr %a528 + call void @finch_str_drop(ptr %a528) + br label %endif902 +endif902: + %t529 = load ptr, ptr %a18 + %t530 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 2 + %t531 = load i64, ptr %t530 + %t532 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 3 + %t533 = load i64, ptr %t532 + %t534 = load ptr, ptr %a18 + %t535 = icmp eq ptr %t534, null + br i1 %t535, label %panic903, label %ok904 +panic903: call void @finch_panic(ptr @.str.486, i64 211, ptr @.str.487) unreachable -ok851: - %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.483, i64 211) - %t529 = load { ptr, i64, i64 }, ptr %a518 - store { ptr, i64, i64 } { ptr @.str.480, 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.488, 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 - store { ptr, i64, i64 } %t537, 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 - call void @finch.lexer.fail(ptr %t508, i64 %t510, i64 %t512, { ptr, i64, i64 } %t542) - br label %endif833 -endif833: - %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.cond852 -for.cond852: - %t546 = load i64, ptr %a545 - %t547 = icmp slt i64 %t546, %t544 - br i1 %t547, label %for.body853, label %for.end855 -for.body853: - %t548 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t548) - br label %for.step854 -for.step854: - %t549 = load i64, ptr %a545 - %t550 = add i64 %t549, 1 - store i64 %t550, ptr %a545 - br label %for.cond852 -for.end855: - %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 - call void @finch_str_copy(ptr %a554, ptr %a553) - %t555 = load { ptr, i64, i64 }, ptr %a554 - store { ptr, i64, i64 } %t555, ptr %t552 - %t556 = load { ptr, i64, i64 }, ptr %a487 - %t557 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 - store { ptr, i64, i64 } %t556, ptr %a558 - 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 %endif804 -endif804: - br label %endif694 -endif694: - br label %endif657 -endif657: - %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 - call void @finch.copy.S_lexer_Token(ptr %a564, ptr %a563) - %t565 = load %S.lexer.Token, ptr %a564 - %t566 = load i64, ptr %t561 - %t567 = add i64 %t566, 1 - call void @finch_arr_reserve(ptr %a19, i64 %t567, i64 ptrtoint (ptr getelementptr (%S.lexer.Token, ptr null, i32 1) to i64)) - %t568 = load ptr, ptr %a19 - %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.cond554 -while.end556: - %t570 = getelementptr inbounds { ptr, i64, i64 }, ptr %a19, i32 0, i32 1 - %t571 = insertvalue %S.lexer.Token zeroinitializer, { ptr, i64, i64 } { ptr @.str.489, i64 3, i64 0 }, 0 - %t572 = insertvalue %S.lexer.Token %t571, { ptr, i64, i64 } { ptr @.str.490, i64 0, i64 0 }, 1 +ok904: + %t536 = getelementptr inbounds %S.lexer.Lexer, ptr %t534, i32 0, i32 0 + %t537 = load { ptr, i64, i64 }, ptr %t536 + store { ptr, i64, i64 } %t537, ptr %a538 + %t540 = load ptr, ptr %a18 + %t541 = icmp eq ptr %t540, null + br i1 %t541, label %panic905, label %ok906 +panic905: + call void @finch_panic(ptr @.str.489, i64 211, ptr @.str.490) + unreachable +ok906: + %t542 = getelementptr inbounds %S.lexer.Lexer, ptr %t540, i32 0, i32 2 + %t543 = load i64, ptr %t542 + %t544 = load ptr, ptr %a18 + %t545 = icmp eq ptr %t544, null + br i1 %t545, label %panic907, label %ok908 +panic907: + call void @finch_panic(ptr @.str.491, i64 211, ptr @.str.492) + unreachable +ok908: + %t546 = getelementptr inbounds %S.lexer.Lexer, ptr %t544, i32 0, i32 2 + %t547 = load i64, ptr %t546 + %t548 = load i64, ptr %a510 + %t549 = add i64 %t547, %t548 + call void @finch_str_sub(ptr %a539, ptr %a538, i64 %t543, i64 %t549, ptr @.str.488, i64 211) + %t550 = load { ptr, i64, i64 }, ptr %a539 + store { ptr, i64, i64 } { ptr @.str.485, i64 22, i64 0 }, ptr %a552 + store { ptr, i64, i64 } %t550, ptr %a553 + call void @finch_str_concat(ptr %a551, ptr %a552, ptr %a553) + store { ptr, i64, i64 } %t550, ptr %a554 + call void @finch_str_drop(ptr %a554) + %t555 = load { ptr, i64, i64 }, ptr %a551 + store { ptr, i64, i64 } %t555, ptr %a557 + store { ptr, i64, i64 } { ptr @.str.493, i64 1, i64 0 }, ptr %a558 + call void @finch_str_concat(ptr %a556, ptr %a557, ptr %a558) + store { ptr, i64, i64 } %t555, ptr %a559 + call void @finch_str_drop(ptr %a559) + %t560 = load { ptr, i64, i64 }, ptr %a556 + %t561 = load { ptr, i64, i64 }, ptr %a523 + store { ptr, i64, i64 } %t560, ptr %a563 + store { ptr, i64, i64 } %t561, ptr %a564 + call void @finch_str_concat(ptr %a562, ptr %a563, ptr %a564) + store { ptr, i64, i64 } %t560, ptr %a565 + call void @finch_str_drop(ptr %a565) + %t566 = load { ptr, i64, i64 }, ptr %a562 + call void @finch.lexer.fail(ptr %t529, i64 %t531, i64 %t533, { ptr, i64, i64 } %t566) + store { ptr, i64, i64 } %t566, ptr %a567 + call void @finch_str_drop(ptr %a567) + call void @finch_str_drop(ptr %a523) + br label %endif890 +endif890: + %t568 = getelementptr inbounds { ptr, i64, i64 }, ptr %a506, i32 0, i32 1 + %t569 = load i64, ptr %t568 + store i64 0, ptr %a570 + br label %for.cond909 +for.cond909: + %t571 = load i64, ptr %a570 + %t572 = icmp slt i64 %t571, %t569 + br i1 %t572, label %for.body910, label %for.end912 +for.body910: %t573 = load ptr, ptr %a18 - %t574 = icmp eq ptr %t573, null - br i1 %t574, label %panic856, label %ok857 -panic856: - call void @finch_panic(ptr @.str.491, i64 221, ptr @.str.492) - unreachable -ok857: - %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 %panic858, label %ok859 -panic858: - call void @finch_panic(ptr @.str.493, i64 221, ptr @.str.494) - unreachable -ok859: - %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 - %t583 = insertvalue %S.lexer.Token %t582, i1 true, 4 - %t584 = load i64, ptr %t570 - %t585 = add i64 %t584, 1 - call void @finch_arr_reserve(ptr %a19, i64 %t585, i64 ptrtoint (ptr getelementptr (%S.lexer.Token, ptr null, i32 1) to i64)) - %t586 = load ptr, ptr %a19 - %t587 = getelementptr inbounds %S.lexer.Token, ptr %t586, i64 %t584 - store %S.lexer.Token %t583, ptr %t587 - store i64 %t585, ptr %t570 - %t588 = load { ptr, i64, i64 }, ptr %a19 + call void @finch.lexer.advance(ptr %t573) + br label %for.step911 +for.step911: + %t574 = load i64, ptr %a570 + %t575 = add i64 %t574, 1 + store i64 %t575, ptr %a570 + br label %for.cond909 +for.end912: + %t576 = load { ptr, i64, i64 }, ptr %a506 + %t577 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 + store { ptr, i64, i64 } %t576, ptr %a578 + call void @finch_str_copy(ptr %a579, ptr %a578) + %t580 = load { ptr, i64, i64 }, ptr %a579 + %t581 = load { ptr, i64, i64 }, ptr %t577 + store { ptr, i64, i64 } %t580, ptr %t577 + store { ptr, i64, i64 } %t581, ptr %a582 + call void @finch_str_drop(ptr %a582) + %t583 = load { ptr, i64, i64 }, ptr %a506 + %t584 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 + store { ptr, i64, i64 } %t583, ptr %a585 + call void @finch_str_copy(ptr %a586, ptr %a585) + %t587 = load { ptr, i64, i64 }, ptr %a586 + %t588 = load { ptr, i64, i64 }, ptr %t584 + store { ptr, i64, i64 } %t587, ptr %t584 store { ptr, i64, i64 } %t588, ptr %a589 - call void @finch.copy.arr_S_lexer_Token(ptr %a590, ptr %a589) - %t591 = load { ptr, i64, i64 }, ptr %a590 - ret { ptr, i64, i64 } %t591 + call void @finch_str_drop(ptr %a589) + call void @finch_str_drop(ptr %a506) + br label %endif861 +endif861: + br label %endif751 +endif751: + br label %endif714 +endif714: + %t590 = getelementptr inbounds { ptr, i64, i64 }, ptr %a19, i32 0, i32 1 + %t591 = load %S.lexer.Token, ptr %a169 + store %S.lexer.Token %t591, ptr %a592 + call void @finch.copy.S_lexer_Token(ptr %a593, ptr %a592) + %t594 = load %S.lexer.Token, ptr %a593 + %t595 = load i64, ptr %t590 + %t596 = add i64 %t595, 1 + call void @finch_arr_reserve(ptr %a19, i64 %t596, i64 ptrtoint (ptr getelementptr (%S.lexer.Token, ptr null, i32 1) to i64)) + %t597 = load ptr, ptr %a19 + %t598 = getelementptr inbounds %S.lexer.Token, ptr %t597, i64 %t595 + store %S.lexer.Token %t594, ptr %t598 + store i64 %t596, ptr %t590 + call void @finch.drop.S_lexer_Token(ptr %a169) + br label %while.cond611 +while.end613: + %t599 = getelementptr inbounds { ptr, i64, i64 }, ptr %a19, i32 0, i32 1 + %t600 = insertvalue %S.lexer.Token zeroinitializer, { ptr, i64, i64 } { ptr @.str.494, i64 3, i64 0 }, 0 + %t601 = insertvalue %S.lexer.Token %t600, { ptr, i64, i64 } { ptr @.str.495, i64 0, i64 0 }, 1 + %t602 = load ptr, ptr %a18 + %t603 = icmp eq ptr %t602, null + br i1 %t603, label %panic913, label %ok914 +panic913: + call void @finch_panic(ptr @.str.496, i64 221, ptr @.str.497) + unreachable +ok914: + %t604 = getelementptr inbounds %S.lexer.Lexer, ptr %t602, i32 0, i32 3 + %t605 = load i64, ptr %t604 + %t606 = insertvalue %S.lexer.Token %t601, i64 %t605, 2 + %t607 = load ptr, ptr %a18 + %t608 = icmp eq ptr %t607, null + br i1 %t608, label %panic915, label %ok916 +panic915: + call void @finch_panic(ptr @.str.498, i64 221, ptr @.str.499) + unreachable +ok916: + %t609 = getelementptr inbounds %S.lexer.Lexer, ptr %t607, i32 0, i32 4 + %t610 = load i64, ptr %t609 + %t611 = insertvalue %S.lexer.Token %t606, i64 %t610, 3 + %t612 = insertvalue %S.lexer.Token %t611, i1 true, 4 + %t613 = load i64, ptr %t599 + %t614 = add i64 %t613, 1 + call void @finch_arr_reserve(ptr %a19, i64 %t614, i64 ptrtoint (ptr getelementptr (%S.lexer.Token, ptr null, i32 1) to i64)) + %t615 = load ptr, ptr %a19 + %t616 = getelementptr inbounds %S.lexer.Token, ptr %t615, i64 %t613 + store %S.lexer.Token %t612, ptr %t616 + store i64 %t614, ptr %t599 + %t617 = load { ptr, i64, i64 }, ptr %a19 + call void @finch.drop.S_lexer_Lexer(ptr %a17) + ret { ptr, i64, i64 } %t617 } define internal %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } %p0) { @@ -12825,10 +14309,8 @@ entry: %a3 = alloca %S.ast.Type, align 16 %a7 = alloca %S.ast.Type, align 16 %a8 = alloca %S.ast.Type, align 16 - %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.495, i64 5, i64 0 }, 0 + %t2 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.500, 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 @@ -12844,10 +14326,7 @@ entry: store %S.ast.Type %t9, ptr %t13 store i64 %t11, ptr %t5 %t14 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t14, ptr %a15 - call void @finch.copy.S_ast_Type(ptr %a16, ptr %a15) - %t17 = load %S.ast.Type, ptr %a16 - ret %S.ast.Type %t17 + ret %S.ast.Type %t14 } define internal %S.ast.Type @finch.ast.mapOf(%S.ast.Type %p0, %S.ast.Type %p1) { @@ -12859,11 +14338,9 @@ entry: %a9 = alloca %S.ast.Type, align 16 %a18 = alloca %S.ast.Type, align 16 %a19 = alloca %S.ast.Type, align 16 - %a26 = alloca %S.ast.Type, align 16 - %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.496, i64 3, i64 0 }, 0 + %t3 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.501, 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 @@ -12892,10 +14369,7 @@ entry: store %S.ast.Type %t20, ptr %t24 store i64 %t22, ptr %t16 %t25 = load %S.ast.Type, ptr %a4 - store %S.ast.Type %t25, ptr %a26 - call void @finch.copy.S_ast_Type(ptr %a27, ptr %a26) - %t28 = load %S.ast.Type, ptr %a27 - ret %S.ast.Type %t28 + ret %S.ast.Type %t25 } define internal %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %p0) { @@ -12904,10 +14378,8 @@ entry: %a3 = alloca %S.ast.Type, align 16 %a7 = alloca %S.ast.Type, align 16 %a8 = alloca %S.ast.Type, align 16 - %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.497, i64 3, i64 0 }, 0 + %t2 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.502, 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 @@ -12923,10 +14395,7 @@ entry: store %S.ast.Type %t9, ptr %t13 store i64 %t11, ptr %t5 %t14 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t14, ptr %a15 - call void @finch.copy.S_ast_Type(ptr %a16, ptr %a15) - %t17 = load %S.ast.Type, ptr %a16 - ret %S.ast.Type %t17 + ret %S.ast.Type %t14 } define internal i1 @finch.ast.same(%S.ast.Type %p0, %S.ast.Type %p1) { @@ -12966,48 +14435,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 %then863, label %endif865 -then863: + br i1 %t10, label %then917, label %endif919 +then917: ret i1 false -endif865: +endif919: %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.498, i64 6, i64 0 }, ptr %a14 + store { ptr, i64, i64 } { ptr @.str.503, 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.from866 -logic.from866: - br i1 %t16, label %logic.end868, label %logic.rhs867 -logic.rhs867: + br label %logic.from920 +logic.from920: + br i1 %t16, label %logic.end922, label %logic.rhs921 +logic.rhs921: %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.499, i64 5, i64 0 }, ptr %a20 + store { ptr, i64, i64 } { ptr @.str.504, 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.rend869 -logic.rend869: - br label %logic.end868 -logic.end868: - %t23 = phi i1 [ true, %logic.from866 ], [ %t22, %logic.rend869 ] - br label %logic.from870 -logic.from870: - br i1 %t23, label %logic.end872, label %logic.rhs871 -logic.rhs871: + br label %logic.rend923 +logic.rend923: + br label %logic.end922 +logic.end922: + %t23 = phi i1 [ true, %logic.from920 ], [ %t22, %logic.rend923 ] + br label %logic.from924 +logic.from924: + br i1 %t23, label %logic.end926, label %logic.rhs925 +logic.rhs925: %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.500, i64 4, i64 0 }, ptr %a27 + store { ptr, i64, i64 } { ptr @.str.505, 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.rend873 -logic.rend873: - br label %logic.end872 -logic.end872: - %t30 = phi i1 [ true, %logic.from870 ], [ %t29, %logic.rend873 ] - br i1 %t30, label %then874, label %endif876 -then874: + br label %logic.rend927 +logic.rend927: + br label %logic.end926 +logic.end926: + %t30 = phi i1 [ true, %logic.from924 ], [ %t29, %logic.rend927 ] + br i1 %t30, label %then928, label %endif930 +then928: %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 @@ -13016,10 +14485,10 @@ then874: 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.from877 -logic.from877: - br i1 %t38, label %logic.rhs878, label %logic.end879 -logic.rhs878: + br label %logic.from931 +logic.from931: + br i1 %t38, label %logic.rhs932, label %logic.end933 +logic.rhs932: %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 @@ -13028,90 +14497,90 @@ logic.rhs878: 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.rend880 -logic.rend880: - br label %logic.end879 -logic.end879: - %t47 = phi i1 [ false, %logic.from877 ], [ %t46, %logic.rend880 ] + br label %logic.rend934 +logic.rend934: + br label %logic.end933 +logic.end933: + %t47 = phi i1 [ false, %logic.from931 ], [ %t46, %logic.rend934 ] ret i1 %t47 -endif876: +endif930: %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.501, i64 5, i64 0 }, ptr %a51 + store { ptr, i64, i64 } { ptr @.str.506, 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.from881 -logic.from881: - br i1 %t53, label %logic.rhs882, label %logic.end883 -logic.rhs882: + br label %logic.from935 +logic.from935: + br i1 %t53, label %logic.rhs936, label %logic.end937 +logic.rhs936: %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.rend884 -logic.rend884: - br label %logic.end883 -logic.end883: - %t59 = phi i1 [ false, %logic.from881 ], [ %t58, %logic.rend884 ] - br i1 %t59, label %then885, label %endif887 -then885: + br label %logic.rend938 +logic.rend938: + br label %logic.end937 +logic.end937: + %t59 = phi i1 [ false, %logic.from935 ], [ %t58, %logic.rend938 ] + br i1 %t59, label %then939, label %endif941 +then939: ret i1 false -endif887: +endif941: %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.502, i64 5, i64 0 }, ptr %a63 + store { ptr, i64, i64 } { ptr @.str.507, 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.from888 -logic.from888: - br i1 %t65, label %logic.end890, label %logic.rhs889 -logic.rhs889: + br label %logic.from942 +logic.from942: + br i1 %t65, label %logic.end944, label %logic.rhs943 +logic.rhs943: %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.503, i64 3, i64 0 }, ptr %a69 + store { ptr, i64, i64 } { ptr @.str.508, 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.rend891 -logic.rend891: - br label %logic.end890 -logic.end890: - %t72 = phi i1 [ true, %logic.from888 ], [ %t71, %logic.rend891 ] - br label %logic.from892 -logic.from892: - br i1 %t72, label %logic.end894, label %logic.rhs893 -logic.rhs893: + br label %logic.rend945 +logic.rend945: + br label %logic.end944 +logic.end944: + %t72 = phi i1 [ true, %logic.from942 ], [ %t71, %logic.rend945 ] + br label %logic.from946 +logic.from946: + br i1 %t72, label %logic.end948, label %logic.rhs947 +logic.rhs947: %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.504, i64 3, i64 0 }, ptr %a76 + store { ptr, i64, i64 } { ptr @.str.509, 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.rend895 -logic.rend895: - br label %logic.end894 -logic.end894: - %t79 = phi i1 [ true, %logic.from892 ], [ %t78, %logic.rend895 ] - br label %logic.from896 -logic.from896: - br i1 %t79, label %logic.end898, label %logic.rhs897 -logic.rhs897: + br label %logic.rend949 +logic.rend949: + br label %logic.end948 +logic.end948: + %t79 = phi i1 [ true, %logic.from946 ], [ %t78, %logic.rend949 ] + br label %logic.from950 +logic.from950: + br i1 %t79, label %logic.end952, label %logic.rhs951 +logic.rhs951: %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.505, i64 5, i64 0 }, ptr %a83 + store { ptr, i64, i64 } { ptr @.str.510, 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.rend899 -logic.rend899: - br label %logic.end898 -logic.end898: - %t86 = phi i1 [ true, %logic.from896 ], [ %t85, %logic.rend899 ] - br i1 %t86, label %then900, label %endif902 -then900: + br label %logic.rend953 +logic.rend953: + br label %logic.end952 +logic.end952: + %t86 = phi i1 [ true, %logic.from950 ], [ %t85, %logic.rend953 ] + br i1 %t86, label %then954, label %endif956 +then954: %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 @@ -13119,30 +14588,30 @@ then900: %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 %then903, label %endif905 -then903: + br i1 %t93, label %then957, label %endif959 +then957: ret i1 false -endif905: +endif959: %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.cond906 -for.cond906: + br label %for.cond960 +for.cond960: %t98 = load i64, ptr %a97 %t99 = icmp slt i64 %t98, %t96 - br i1 %t99, label %for.body907, label %for.end909 -for.body907: + br i1 %t99, label %for.body961, label %for.end963 +for.body961: %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 %range910, label %inrange911 -range910: - call void @finch_panic_index(ptr @.str.506, i64 54, i64 %t101, i64 %t103) + br i1 %t104, label %range964, label %inrange965 +range964: + call void @finch_panic_index(ptr @.str.511, i64 54, i64 %t101, i64 %t103) unreachable -inrange911: +inrange965: %t105 = extractvalue { ptr, i64, i64 } %t102, 0 %t106 = getelementptr inbounds %S.ast.Type, ptr %t105, i64 %t101 %t107 = load %S.ast.Type, ptr %t106 @@ -13151,29 +14620,29 @@ inrange911: %t110 = load { ptr, i64, i64 }, ptr %t108 %t111 = extractvalue { ptr, i64, i64 } %t110, 1 %t112 = icmp uge i64 %t109, %t111 - br i1 %t112, label %range912, label %inrange913 -range912: - call void @finch_panic_index(ptr @.str.507, i64 54, i64 %t109, i64 %t111) + br i1 %t112, label %range966, label %inrange967 +range966: + call void @finch_panic_index(ptr @.str.512, i64 54, i64 %t109, i64 %t111) unreachable -inrange913: +inrange967: %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 %then914, label %endif916 -then914: + br i1 %t117, label %then968, label %endif970 +then968: ret i1 false -endif916: - br label %for.step908 -for.step908: +endif970: + br label %for.step962 +for.step962: %t118 = load i64, ptr %a97 %t119 = add i64 %t118, 1 store i64 %t119, ptr %a97 - br label %for.cond906 -for.end909: + br label %for.cond960 +for.end963: ret i1 true -endif902: +endif956: ret i1 true } @@ -13185,290 +14654,326 @@ entry: %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 + %a19 = alloca { ptr, i64, i64 }, align 16 %a23 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 + %a24 = 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 %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 %a36 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 + %a37 = alloca { ptr, i64, i64 }, align 16 + %a38 = alloca { ptr, i64, i64 }, align 16 + %a39 = 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 %a52 = alloca { ptr, i64, i64 }, align 16 %a53 = 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 + %a57 = alloca { ptr, i64, i64 }, align 16 + %a58 = 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 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 + %a71 = alloca { ptr, i64, i64 }, align 16 + %a72 = alloca { ptr, i64, i64 }, align 16 + %a74 = 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 %a87 = 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 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = 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 + %a91 = alloca { ptr, i64, i64 }, align 16 + %a95 = alloca { ptr, i64, i64 }, align 16 + %a96 = 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 + %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 %a119 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 + %a123 = alloca { ptr, i64, i64 }, align 16 + %a124 = alloca { ptr, i64, i64 }, align 16 + %a129 = alloca { ptr, i64, i64 }, align 16 + %a130 = alloca { ptr, i64, i64 }, align 16 %a136 = alloca { ptr, i64, i64 }, align 16 %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 + %a147 = alloca { ptr, i64, i64 }, align 16 %a148 = alloca { ptr, i64, i64 }, align 16 %a149 = alloca { ptr, i64, i64 }, align 16 %a153 = alloca { ptr, i64, i64 }, align 16 %a154 = alloca { ptr, i64, i64 }, align 16 - %a159 = 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 + %a165 = alloca { ptr, i64, i64 }, align 16 + %a166 = alloca { ptr, i64, i64 }, align 16 + %a171 = alloca { ptr, i64, i64 }, align 16 + %a172 = alloca { ptr, i64, i64 }, align 16 store %S.ast.Type %p0, ptr %a1 %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.508, i64 5, i64 0 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.513, 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 %then917, label %endif919 -then917: + br i1 %t7, label %then971, label %endif973 +then971: %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 %range920, label %inrange921 -range920: - call void @finch_panic_index(ptr @.str.510, i64 65, i64 0, i64 %t10) + br i1 %t11, label %range974, label %inrange975 +range974: + call void @finch_panic_index(ptr @.str.515, i64 65, i64 0, i64 %t10) unreachable -inrange921: +inrange975: %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.509, i64 2, i64 0 }, ptr %a17 + store { ptr, i64, i64 } { ptr @.str.514, 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 -endif919: - %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.511, 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 %then922, label %endif924 -then922: - %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.512, 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.513, 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 %range925, label %inrange926 -range925: - call void @finch_panic_index(ptr @.str.514, i64 68, i64 0, i64 %t40) + store { ptr, i64, i64 } %t15, ptr %a19 + call void @finch_str_drop(ptr %a19) + %t20 = load { ptr, i64, i64 }, ptr %a16 + ret { ptr, i64, i64 } %t20 +endif973: + %t21 = getelementptr inbounds %S.ast.Type, 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.516, i64 5, i64 0 }, ptr %a24 + %t25 = call i32 @finch_str_eq(ptr %a23, ptr %a24) + %t26 = icmp ne i32 %t25, 0 + br i1 %t26, label %then976, label %endif978 +then976: + %t27 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 4 + %t28 = load i64, ptr %t27 + call void @finch_str_from_int(ptr %a29, i64 %t28) + %t30 = load { ptr, i64, i64 }, ptr %a29 + store { ptr, i64, i64 } { ptr @.str.517, i64 1, i64 0 }, ptr %a32 + store { ptr, i64, i64 } %t30, ptr %a33 + call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) + store { ptr, i64, i64 } %t30, ptr %a34 + call void @finch_str_drop(ptr %a34) + %t35 = load { ptr, i64, i64 }, ptr %a31 + store { ptr, i64, i64 } %t35, ptr %a37 + store { ptr, i64, i64 } { ptr @.str.518, i64 1, i64 0 }, ptr %a38 + call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) + store { ptr, i64, i64 } %t35, ptr %a39 + call void @finch_str_drop(ptr %a39) + %t40 = load { ptr, i64, i64 }, ptr %a36 + %t41 = getelementptr inbounds %S.ast.Type, ptr %a1, 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 %range979, label %inrange980 +range979: + call void @finch_panic_index(ptr @.str.519, i64 68, i64 0, i64 %t43) unreachable -inrange926: - %t42 = extractvalue { ptr, i64, i64 } %t39, 0 - %t43 = getelementptr inbounds %S.ast.Type, ptr %t42, i64 0 - %t44 = load %S.ast.Type, ptr %t43 - %t45 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t44) - store { ptr, i64, i64 } %t37, ptr %a47 - store { ptr, i64, i64 } %t45, ptr %a48 - call void @finch_str_concat(ptr %a46, ptr %a47, ptr %a48) - %t49 = load { ptr, i64, i64 }, ptr %a46 - ret { ptr, i64, i64 } %t49 -endif924: - %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.515, 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 %then927, label %endif929 -then927: - %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 %range930, label %inrange931 -range930: - call void @finch_panic_index(ptr @.str.517, i64 71, i64 0, i64 %t58) +inrange980: + %t45 = extractvalue { ptr, i64, i64 } %t42, 0 + %t46 = getelementptr inbounds %S.ast.Type, ptr %t45, i64 0 + %t47 = load %S.ast.Type, ptr %t46 + %t48 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t47) + store { ptr, i64, i64 } %t40, ptr %a50 + store { ptr, i64, i64 } %t48, ptr %a51 + call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) + store { ptr, i64, i64 } %t40, ptr %a52 + call void @finch_str_drop(ptr %a52) + store { ptr, i64, i64 } %t48, ptr %a53 + call void @finch_str_drop(ptr %a53) + %t54 = load { ptr, i64, i64 }, ptr %a49 + ret { ptr, i64, i64 } %t54 +endif978: + %t55 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 + %t56 = load { ptr, i64, i64 }, ptr %t55 + store { ptr, i64, i64 } %t56, ptr %a57 + store { ptr, i64, i64 } { ptr @.str.520, i64 3, i64 0 }, ptr %a58 + %t59 = call i32 @finch_str_eq(ptr %a57, ptr %a58) + %t60 = icmp ne i32 %t59, 0 + br i1 %t60, label %then981, label %endif983 +then981: + %t61 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 + %t62 = load { ptr, i64, i64 }, ptr %t61 + %t63 = extractvalue { ptr, i64, i64 } %t62, 1 + %t64 = icmp uge i64 0, %t63 + br i1 %t64, label %range984, label %inrange985 +range984: + call void @finch_panic_index(ptr @.str.522, i64 71, i64 0, i64 %t63) unreachable -inrange931: - %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.516, 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.518, 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 %range932, label %inrange933 -range932: - call void @finch_panic_index(ptr @.str.519, i64 71, i64 1, i64 %t74) +inrange985: + %t65 = extractvalue { ptr, i64, i64 } %t62, 0 + %t66 = getelementptr inbounds %S.ast.Type, ptr %t65, i64 0 + %t67 = load %S.ast.Type, ptr %t66 + %t68 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t67) + store { ptr, i64, i64 } { ptr @.str.521, i64 4, i64 0 }, ptr %a70 + store { ptr, i64, i64 } %t68, ptr %a71 + call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) + store { ptr, i64, i64 } %t68, ptr %a72 + call void @finch_str_drop(ptr %a72) + %t73 = load { ptr, i64, i64 }, ptr %a69 + store { ptr, i64, i64 } %t73, ptr %a75 + store { ptr, i64, i64 } { ptr @.str.523, i64 1, i64 0 }, ptr %a76 + call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) + store { ptr, i64, i64 } %t73, ptr %a77 + call void @finch_str_drop(ptr %a77) + %t78 = load { ptr, i64, i64 }, ptr %a74 + %t79 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 + %t80 = load { ptr, i64, i64 }, ptr %t79 + %t81 = extractvalue { ptr, i64, i64 } %t80, 1 + %t82 = icmp uge i64 1, %t81 + br i1 %t82, label %range986, label %inrange987 +range986: + call void @finch_panic_index(ptr @.str.524, i64 71, i64 1, i64 %t81) unreachable -inrange933: - %t76 = extractvalue { ptr, i64, i64 } %t73, 0 - %t77 = getelementptr inbounds %S.ast.Type, ptr %t76, i64 1 - %t78 = load %S.ast.Type, ptr %t77 - %t79 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t78) - store { ptr, i64, i64 } %t71, 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 - ret { ptr, i64, i64 } %t83 -endif929: - %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.520, 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 %then934, label %endif936 -then934: - %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 %then937, label %endif939 -then937: - ret { ptr, i64, i64 } { ptr @.str.521, i64 3, i64 0 } -endif939: - %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 %range940, label %inrange941 -range940: - call void @finch_panic_index(ptr @.str.523, i64 77, i64 0, i64 %t96) +inrange987: + %t83 = extractvalue { ptr, i64, i64 } %t80, 0 + %t84 = getelementptr inbounds %S.ast.Type, ptr %t83, i64 1 + %t85 = load %S.ast.Type, ptr %t84 + %t86 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t85) + store { ptr, i64, i64 } %t78, ptr %a88 + store { ptr, i64, i64 } %t86, ptr %a89 + call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89) + store { ptr, i64, i64 } %t78, ptr %a90 + call void @finch_str_drop(ptr %a90) + store { ptr, i64, i64 } %t86, ptr %a91 + call void @finch_str_drop(ptr %a91) + %t92 = load { ptr, i64, i64 }, ptr %a87 + ret { ptr, i64, i64 } %t92 +endif983: + %t93 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 + %t94 = load { ptr, i64, i64 }, ptr %t93 + store { ptr, i64, i64 } %t94, ptr %a95 + store { ptr, i64, i64 } { ptr @.str.525, i64 3, i64 0 }, ptr %a96 + %t97 = call i32 @finch_str_eq(ptr %a95, ptr %a96) + %t98 = icmp ne i32 %t97, 0 + br i1 %t98, label %then988, label %endif990 +then988: + %t99 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 + %t100 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i32 0, i32 1 + %t101 = load i64, ptr %t100 + %t102 = icmp eq i64 %t101, 0 + br i1 %t102, label %then991, label %endif993 +then991: + ret { ptr, i64, i64 } { ptr @.str.526, i64 3, i64 0 } +endif993: + %t103 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 + %t104 = load { ptr, i64, i64 }, ptr %t103 + %t105 = extractvalue { ptr, i64, i64 } %t104, 1 + %t106 = icmp uge i64 0, %t105 + br i1 %t106, label %range994, label %inrange995 +range994: + call void @finch_panic_index(ptr @.str.528, i64 77, i64 0, i64 %t105) unreachable -inrange941: - %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.522, 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.524, 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 -endif936: - %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.525, 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.from942 -logic.from942: - br i1 %t115, label %logic.end944, label %logic.rhs943 -logic.rhs943: - %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.526, 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.rend945 -logic.rend945: - br label %logic.end944 -logic.end944: - %t122 = phi i1 [ true, %logic.from942 ], [ %t121, %logic.rend945 ] - br label %logic.from946 -logic.from946: - br i1 %t122, label %logic.end948, label %logic.rhs947 -logic.rhs947: - %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.527, 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.rend949 -logic.rend949: - br label %logic.end948 -logic.end948: - %t129 = phi i1 [ true, %logic.from946 ], [ %t128, %logic.rend949 ] - br i1 %t129, label %then950, label %endif952 -then950: - %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 %then953, label %endif955 -then953: - %t134 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 3 +inrange995: + %t107 = extractvalue { ptr, i64, i64 } %t104, 0 + %t108 = getelementptr inbounds %S.ast.Type, ptr %t107, i64 0 + %t109 = load %S.ast.Type, ptr %t108 + %t110 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t109) + store { ptr, i64, i64 } { ptr @.str.527, i64 4, i64 0 }, ptr %a112 + store { ptr, i64, i64 } %t110, ptr %a113 + call void @finch_str_concat(ptr %a111, ptr %a112, ptr %a113) + store { ptr, i64, i64 } %t110, ptr %a114 + call void @finch_str_drop(ptr %a114) + %t115 = load { ptr, i64, i64 }, ptr %a111 + store { ptr, i64, i64 } %t115, ptr %a117 + store { ptr, i64, i64 } { ptr @.str.529, i64 1, i64 0 }, ptr %a118 + call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118) + store { ptr, i64, i64 } %t115, ptr %a119 + call void @finch_str_drop(ptr %a119) + %t120 = load { ptr, i64, i64 }, ptr %a116 + ret { ptr, i64, i64 } %t120 +endif990: + %t121 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 + %t122 = load { ptr, i64, i64 }, ptr %t121 + store { ptr, i64, i64 } %t122, ptr %a123 + store { ptr, i64, i64 } { ptr @.str.530, i64 6, i64 0 }, ptr %a124 + %t125 = call i32 @finch_str_eq(ptr %a123, ptr %a124) + %t126 = icmp ne i32 %t125, 0 + br label %logic.from996 +logic.from996: + br i1 %t126, label %logic.end998, label %logic.rhs997 +logic.rhs997: + %t127 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 + %t128 = load { ptr, i64, i64 }, ptr %t127 + store { ptr, i64, i64 } %t128, ptr %a129 + store { ptr, i64, i64 } { ptr @.str.531, i64 5, i64 0 }, ptr %a130 + %t131 = call i32 @finch_str_eq(ptr %a129, ptr %a130) + %t132 = icmp ne i32 %t131, 0 + br label %logic.rend999 +logic.rend999: + br label %logic.end998 +logic.end998: + %t133 = phi i1 [ true, %logic.from996 ], [ %t132, %logic.rend999 ] + br label %logic.from1000 +logic.from1000: + br i1 %t133, label %logic.end1002, label %logic.rhs1001 +logic.rhs1001: + %t134 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 %t135 = load { ptr, i64, i64 }, ptr %t134 - store { ptr, i64, i64 } %t135, ptr %a137 - store { ptr, i64, i64 } { ptr @.str.528, 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 - %t141 = load { ptr, i64, i64 }, ptr %t140 - store { ptr, i64, i64 } %t139, ptr %a143 - store { ptr, i64, i64 } %t141, ptr %a144 - call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144) - %t145 = load { ptr, i64, i64 }, ptr %a142 - ret { ptr, i64, i64 } %t145 -endif955: - %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 -endif952: - %t151 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 + store { ptr, i64, i64 } %t135, ptr %a136 + store { ptr, i64, i64 } { ptr @.str.532, i64 4, i64 0 }, ptr %a137 + %t138 = call i32 @finch_str_eq(ptr %a136, ptr %a137) + %t139 = icmp ne i32 %t138, 0 + br label %logic.rend1003 +logic.rend1003: + br label %logic.end1002 +logic.end1002: + %t140 = phi i1 [ true, %logic.from1000 ], [ %t139, %logic.rend1003 ] + br i1 %t140, label %then1004, label %endif1006 +then1004: + %t141 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 3 + %t142 = getelementptr inbounds { ptr, i64, i64 }, ptr %t141, i32 0, i32 1 + %t143 = load i64, ptr %t142 + %t144 = icmp sgt i64 %t143, 0 + br i1 %t144, label %then1007, label %endif1009 +then1007: + %t145 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 3 + %t146 = load { ptr, i64, i64 }, ptr %t145 + store { ptr, i64, i64 } %t146, ptr %a148 + store { ptr, i64, i64 } { ptr @.str.533, i64 1, 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.Type, ptr %a1, i32 0, i32 2 %t152 = load { ptr, i64, i64 }, ptr %t151 - store { ptr, i64, i64 } %t152, ptr %a153 - store { ptr, i64, i64 } { ptr @.str.529, 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 %then956, label %endif958 -then956: - ret { ptr, i64, i64 } { ptr @.str.530, i64 7, i64 0 } -endif958: - %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 - call void @finch_str_copy(ptr %a160, ptr %a159) - %t161 = load { ptr, i64, i64 }, ptr %a160 - ret { ptr, i64, i64 } %t161 + store { ptr, i64, i64 } %t150, ptr %a154 + store { ptr, i64, i64 } %t152, ptr %a155 + call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155) + store { ptr, i64, i64 } %t150, ptr %a156 + call void @finch_str_drop(ptr %a156) + %t157 = load { ptr, i64, i64 }, ptr %a153 + ret { ptr, i64, i64 } %t157 +endif1009: + %t158 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 2 + %t159 = load { ptr, i64, i64 }, ptr %t158 + store { ptr, i64, i64 } %t159, ptr %a160 + call void @finch_str_copy(ptr %a161, ptr %a160) + %t162 = load { ptr, i64, i64 }, ptr %a161 + ret { ptr, i64, i64 } %t162 +endif1006: + %t163 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 + %t164 = load { ptr, i64, i64 }, ptr %t163 + store { ptr, i64, i64 } %t164, ptr %a165 + store { ptr, i64, i64 } { ptr @.str.534, i64 4, i64 0 }, ptr %a166 + %t167 = call i32 @finch_str_eq(ptr %a165, ptr %a166) + %t168 = icmp ne i32 %t167, 0 + br i1 %t168, label %then1010, label %endif1012 +then1010: + ret { ptr, i64, i64 } { ptr @.str.535, i64 7, i64 0 } +endif1012: + %t169 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 + %t170 = load { ptr, i64, i64 }, ptr %t169 + store { ptr, i64, i64 } %t170, ptr %a171 + call void @finch_str_copy(ptr %a172, ptr %a171) + %t173 = load { ptr, i64, i64 }, ptr %a172 + ret { ptr, i64, i64 } %t173 } define internal void @finch.parser.fail(ptr %p0, %S.lexer.Token %p1, { ptr, i64, i64 } %p2) { @@ -13483,33 +14988,41 @@ entry: %a16 = 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 %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 %a22 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a28 = 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 %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = 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 %a34 = alloca { ptr, i64, i64 }, align 16 + %a35 = alloca { ptr, i64, i64 }, align 16 %a37 = alloca { ptr, i64, i64 }, align 16 %a38 = alloca { ptr, i64, i64 }, align 16 %a39 = alloca { ptr, i64, i64 }, align 16 + %a40 = 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 + %a46 = alloca { ptr, i64, i64 }, align 16 + %a54 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store %S.lexer.Token %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 %panic959, label %ok960 -panic959: - call void @finch_panic(ptr @.str.531, i64 14, ptr @.str.532) + br i1 %t5, label %panic1013, label %ok1014 +panic1013: + call void @finch_panic(ptr @.str.536, i64 14, ptr @.str.537) unreachable -ok960: +ok1014: %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.533, i64 1, i64 0 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.538, 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 @@ -13519,38 +15032,54 @@ ok960: store { ptr, i64, i64 } %t11, 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.534, 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 - %t25 = load i64, ptr %t24 - call void @finch_str_from_int(ptr %a26, i64 %t25) - %t27 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t23, 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.535, 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 - store { ptr, i64, i64 } %t35, ptr %a38 - store { ptr, i64, i64 } %t36, ptr %a39 + store { ptr, i64, i64 } %t11, ptr %a19 + call void @finch_str_drop(ptr %a19) + store { ptr, i64, i64 } %t15, ptr %a20 + call void @finch_str_drop(ptr %a20) + %t21 = load { ptr, i64, i64 }, ptr %a16 + store { ptr, i64, i64 } %t21, ptr %a23 + store { ptr, i64, i64 } { ptr @.str.539, i64 1, i64 0 }, ptr %a24 + call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) + store { ptr, i64, i64 } %t21, ptr %a25 + call void @finch_str_drop(ptr %a25) + %t26 = load { ptr, i64, i64 }, ptr %a22 + %t27 = getelementptr inbounds %S.lexer.Token, ptr %a2, i32 0, i32 3 + %t28 = load i64, ptr %t27 + call void @finch_str_from_int(ptr %a29, i64 %t28) + %t30 = load { ptr, i64, i64 }, ptr %a29 + store { ptr, i64, i64 } %t26, ptr %a32 + store { ptr, i64, i64 } %t30, ptr %a33 + call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) + store { ptr, i64, i64 } %t26, ptr %a34 + call void @finch_str_drop(ptr %a34) + store { ptr, i64, i64 } %t30, ptr %a35 + call void @finch_str_drop(ptr %a35) + %t36 = load { ptr, i64, i64 }, ptr %a31 + store { ptr, i64, i64 } %t36, ptr %a38 + store { ptr, i64, i64 } { ptr @.str.540, i64 9, i64 0 }, ptr %a39 call void @finch_str_concat(ptr %a37, ptr %a38, ptr %a39) - %t40 = load { ptr, i64, i64 }, ptr %a37 - %t41 = extractvalue { ptr, i64, i64 } %t40, 1 - %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.536, ptr %t43 - %t46 = call i32 (ptr, ...) @printf(ptr @.str.537, i32 %t42, ptr %t45) - %t47 = call i32 (ptr, ...) @printf(ptr @.str.538) - %t48 = trunc i64 1 to i32 - %t49 = call i32 @fflush(ptr null) - call void @exit(i32 %t48) + store { ptr, i64, i64 } %t36, ptr %a40 + call void @finch_str_drop(ptr %a40) + %t41 = load { ptr, i64, i64 }, ptr %a37 + %t42 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t41, ptr %a44 + store { ptr, i64, i64 } %t42, ptr %a45 + call void @finch_str_concat(ptr %a43, ptr %a44, ptr %a45) + store { ptr, i64, i64 } %t41, ptr %a46 + call void @finch_str_drop(ptr %a46) + %t47 = load { ptr, i64, i64 }, ptr %a43 + %t48 = extractvalue { ptr, i64, i64 } %t47, 1 + %t49 = trunc i64 %t48 to i32 + %t50 = extractvalue { ptr, i64, i64 } %t47, 0 + %t51 = icmp eq ptr %t50, null + %t52 = select i1 %t51, ptr @.str.541, ptr %t50 + %t53 = call i32 (ptr, ...) @printf(ptr @.str.542, i32 %t49, ptr %t52) + store { ptr, i64, i64 } %t47, ptr %a54 + call void @finch_str_drop(ptr %a54) + %t55 = call i32 (ptr, ...) @printf(ptr @.str.543) + %t56 = trunc i64 1 to i32 + %t57 = call i32 @fflush(ptr null) + call void @exit(i32 %t56) ret void } @@ -13562,29 +15091,29 @@ entry: store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic961, label %ok962 -panic961: - call void @finch_panic(ptr @.str.539, i64 19, ptr @.str.540) + br i1 %t3, label %panic1015, label %ok1016 +panic1015: + call void @finch_panic(ptr @.str.544, i64 19, ptr @.str.545) unreachable -ok962: +ok1016: %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 %panic963, label %ok964 -panic963: - call void @finch_panic(ptr @.str.541, i64 19, ptr @.str.542) + br i1 %t6, label %panic1017, label %ok1018 +panic1017: + call void @finch_panic(ptr @.str.546, i64 19, ptr @.str.547) unreachable -ok964: +ok1018: %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 %range965, label %inrange966 -range965: - call void @finch_panic_index(ptr @.str.543, i64 19, i64 %t8, i64 %t10) + br i1 %t11, label %range1019, label %inrange1020 +range1019: + call void @finch_panic_index(ptr @.str.548, i64 19, i64 %t8, i64 %t10) unreachable -inrange966: +inrange1020: %t12 = extractvalue { ptr, i64, i64 } %t9, 0 %t13 = getelementptr inbounds %S.lexer.Token, ptr %t12, i64 %t8 %t14 = load %S.lexer.Token, ptr %t13 @@ -13602,29 +15131,29 @@ entry: store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic967, label %ok968 -panic967: - call void @finch_panic(ptr @.str.544, i64 23, ptr @.str.545) + br i1 %t3, label %panic1021, label %ok1022 +panic1021: + call void @finch_panic(ptr @.str.549, i64 23, ptr @.str.550) unreachable -ok968: +ok1022: %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 %panic969, label %ok970 -panic969: - call void @finch_panic(ptr @.str.546, i64 23, ptr @.str.547) + br i1 %t6, label %panic1023, label %ok1024 +panic1023: + call void @finch_panic(ptr @.str.551, i64 23, ptr @.str.552) unreachable -ok970: +ok1024: %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 %range971, label %inrange972 -range971: - call void @finch_panic_index(ptr @.str.548, i64 23, i64 %t8, i64 %t10) + br i1 %t11, label %range1025, label %inrange1026 +range1025: + call void @finch_panic_index(ptr @.str.553, i64 23, i64 %t8, i64 %t10) unreachable -inrange972: +inrange1026: %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 @@ -13646,11 +15175,11 @@ entry: store i64 %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic973, label %ok974 -panic973: - call void @finch_panic(ptr @.str.549, i64 27, ptr @.str.550) + br i1 %t4, label %panic1027, label %ok1028 +panic1027: + call void @finch_panic(ptr @.str.554, i64 27, ptr @.str.555) unreachable -ok974: +ok1028: %t5 = getelementptr inbounds %S.parser.Parser, ptr %t3, i32 0, i32 1 %t6 = load i64, ptr %t5 %t7 = load i64, ptr %a2 @@ -13659,48 +15188,48 @@ ok974: %t10 = load i64, ptr %a9 %t11 = load ptr, ptr %a1 %t12 = icmp eq ptr %t11, null - br i1 %t12, label %panic975, label %ok976 -panic975: - call void @finch_panic(ptr @.str.551, i64 28, ptr @.str.552) + br i1 %t12, label %panic1029, label %ok1030 +panic1029: + call void @finch_panic(ptr @.str.556, i64 28, ptr @.str.557) unreachable -ok976: +ok1030: %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 %then977, label %endif979 -then977: + br i1 %t16, label %then1031, label %endif1033 +then1031: %t17 = load ptr, ptr %a1 %t18 = icmp eq ptr %t17, null - br i1 %t18, label %panic980, label %ok981 -panic980: - call void @finch_panic(ptr @.str.553, i64 29, ptr @.str.554) + br i1 %t18, label %panic1034, label %ok1035 +panic1034: + call void @finch_panic(ptr @.str.558, i64 29, ptr @.str.559) unreachable -ok981: +ok1035: %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 %endif979 -endif979: + br label %endif1033 +endif1033: %t23 = load ptr, ptr %a1 %t24 = icmp eq ptr %t23, null - br i1 %t24, label %panic982, label %ok983 -panic982: - call void @finch_panic(ptr @.str.555, i64 31, ptr @.str.556) + br i1 %t24, label %panic1036, label %ok1037 +panic1036: + call void @finch_panic(ptr @.str.560, i64 31, ptr @.str.561) unreachable -ok983: +ok1037: %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 %range984, label %inrange985 -range984: - call void @finch_panic_index(ptr @.str.557, i64 31, i64 %t26, i64 %t28) + br i1 %t29, label %range1038, label %inrange1039 +range1038: + call void @finch_panic_index(ptr @.str.562, i64 31, i64 %t26, i64 %t28) unreachable -inrange985: +inrange1039: %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 @@ -13721,29 +15250,29 @@ entry: store { ptr, i64, i64 } %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic986, label %ok987 -panic986: - call void @finch_panic(ptr @.str.558, i64 35, ptr @.str.559) + br i1 %t4, label %panic1040, label %ok1041 +panic1040: + call void @finch_panic(ptr @.str.563, i64 35, ptr @.str.564) unreachable -ok987: +ok1041: %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 %panic988, label %ok989 -panic988: - call void @finch_panic(ptr @.str.560, i64 35, ptr @.str.561) + br i1 %t7, label %panic1042, label %ok1043 +panic1042: + call void @finch_panic(ptr @.str.565, i64 35, ptr @.str.566) unreachable -ok989: +ok1043: %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 %range990, label %inrange991 -range990: - call void @finch_panic_index(ptr @.str.562, i64 35, i64 %t9, i64 %t11) + br i1 %t12, label %range1044, label %inrange1045 +range1044: + call void @finch_panic_index(ptr @.str.567, i64 35, i64 %t9, i64 %t11) unreachable -inrange991: +inrange1045: %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 @@ -13762,34 +15291,32 @@ entry: %a15 = alloca %S.lexer.Token, align 16 %a16 = alloca %S.lexer.Token, align 16 %a18 = alloca %S.lexer.Token, align 16 - %a25 = alloca %S.lexer.Token, align 16 - %a26 = alloca %S.lexer.Token, align 16 store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic992, label %ok993 -panic992: - call void @finch_panic(ptr @.str.563, i64 39, ptr @.str.564) + br i1 %t3, label %panic1046, label %ok1047 +panic1046: + call void @finch_panic(ptr @.str.568, i64 39, ptr @.str.569) unreachable -ok993: +ok1047: %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 %panic994, label %ok995 -panic994: - call void @finch_panic(ptr @.str.565, i64 39, ptr @.str.566) + br i1 %t6, label %panic1048, label %ok1049 +panic1048: + call void @finch_panic(ptr @.str.570, i64 39, ptr @.str.571) unreachable -ok995: +ok1049: %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 %range996, label %inrange997 -range996: - call void @finch_panic_index(ptr @.str.567, i64 39, i64 %t8, i64 %t10) + br i1 %t11, label %range1050, label %inrange1051 +range1050: + call void @finch_panic_index(ptr @.str.572, i64 39, i64 %t8, i64 %t10) unreachable -inrange997: +inrange1051: %t12 = extractvalue { ptr, i64, i64 } %t9, 0 %t13 = getelementptr inbounds %S.lexer.Token, ptr %t12, i64 %t8 %t14 = load %S.lexer.Token, ptr %t13 @@ -13799,20 +15326,17 @@ inrange997: store %S.lexer.Token %t17, ptr %a18 %t19 = load ptr, ptr %a1 %t20 = icmp eq ptr %t19, null - br i1 %t20, label %panic998, label %ok999 -panic998: - call void @finch_panic(ptr @.str.568, i64 40, ptr @.str.569) + br i1 %t20, label %panic1052, label %ok1053 +panic1052: + call void @finch_panic(ptr @.str.573, i64 40, ptr @.str.574) unreachable -ok999: +ok1053: %t21 = getelementptr inbounds %S.parser.Parser, ptr %t19, i32 0, i32 1 %t22 = load i64, ptr %t21 %t23 = add i64 %t22, 1 store i64 %t23, ptr %t21 %t24 = load %S.lexer.Token, ptr %a18 - store %S.lexer.Token %t24, ptr %a25 - call void @finch.copy.S_lexer_Token(ptr %a26, ptr %a25) - %t27 = load %S.lexer.Token, ptr %a26 - ret %S.lexer.Token %t27 + ret %S.lexer.Token %t24 } define internal i1 @finch.parser.accept(ptr %p0, { ptr, i64, i64 } %p1) { @@ -13824,21 +15348,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 %then1000, label %endif1002 -then1000: + br i1 %t5, label %then1054, label %endif1056 +then1054: %t6 = load ptr, ptr %a1 %t7 = icmp eq ptr %t6, null - br i1 %t7, label %panic1003, label %ok1004 -panic1003: - call void @finch_panic(ptr @.str.570, i64 46, ptr @.str.571) + br i1 %t7, label %panic1057, label %ok1058 +panic1057: + call void @finch_panic(ptr @.str.575, i64 46, ptr @.str.576) unreachable -ok1004: +ok1058: %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 -endif1002: +endif1056: ret i1 false } @@ -13853,109 +15377,115 @@ entry: %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 + %a17 = alloca { ptr, i64, i64 }, align 16 %a21 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 + %a22 = alloca { ptr, i64, i64 }, align 16 %a27 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 + %a28 = alloca { ptr, i64, i64 }, align 16 %a33 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 + %a34 = alloca { ptr, i64, i64 }, align 16 %a40 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 + %a41 = alloca { ptr, i64, i64 }, align 16 %a46 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 + %a47 = alloca { ptr, i64, i64 }, align 16 %a52 = alloca { ptr, i64, i64 }, align 16 %a53 = alloca { ptr, i64, i64 }, align 16 - %a55 = 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 + %a59 = alloca { ptr, i64, i64 }, align 16 store %S.lexer.Token %p0, ptr %a1 %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.572, i64 5, i64 0 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.577, 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 %then1005, label %endif1007 -then1005: + br i1 %t7, label %then1059, label %endif1061 +then1059: %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.573, i64 1, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.578, 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.574, i64 1, i64 0 }, ptr %a16 + store { ptr, i64, i64 } { ptr @.str.579, 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 -endif1007: - %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.575, 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 %then1008, label %endif1010 -then1008: - ret { ptr, i64, i64 } { ptr @.str.576, i64 11, i64 0 } -endif1010: - %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.577, 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.from1011 -logic.from1011: - br i1 %t29, label %logic.end1013, label %logic.rhs1012 -logic.rhs1012: - %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.578, 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.rend1014 -logic.rend1014: - br label %logic.end1013 -logic.end1013: - %t36 = phi i1 [ true, %logic.from1011 ], [ %t35, %logic.rend1014 ] - br i1 %t36, label %then1015, label %endif1017 -then1015: - ret { ptr, i64, i64 } { ptr @.str.579, i64 8, i64 0 } -endif1017: - %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.580, 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 %then1018, label %endif1020 -then1018: - ret { ptr, i64, i64 } { ptr @.str.581, i64 8, i64 0 } -endif1020: - %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.582, 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 %then1021, label %endif1023 -then1021: - ret { ptr, i64, i64 } { ptr @.str.583, i64 6, i64 0 } -endif1023: - %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.584, 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.585, 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 + store { ptr, i64, i64 } %t13, ptr %a17 + call void @finch_str_drop(ptr %a17) + %t18 = load { ptr, i64, i64 }, ptr %a14 + ret { ptr, i64, i64 } %t18 +endif1061: + %t19 = getelementptr inbounds %S.lexer.Token, 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.580, i64 3, i64 0 }, ptr %a22 + %t23 = call i32 @finch_str_eq(ptr %a21, ptr %a22) + %t24 = icmp ne i32 %t23, 0 + br i1 %t24, label %then1062, label %endif1064 +then1062: + ret { ptr, i64, i64 } { ptr @.str.581, i64 11, i64 0 } +endif1064: + %t25 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0 + %t26 = load { ptr, i64, i64 }, ptr %t25 + store { ptr, i64, i64 } %t26, ptr %a27 + store { ptr, i64, i64 } { ptr @.str.582, 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.from1065 +logic.from1065: + br i1 %t30, label %logic.end1067, label %logic.rhs1066 +logic.rhs1066: + %t31 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0 + %t32 = load { ptr, i64, i64 }, ptr %t31 + store { ptr, i64, i64 } %t32, ptr %a33 + store { ptr, i64, i64 } { ptr @.str.583, i64 5, i64 0 }, ptr %a34 + %t35 = call i32 @finch_str_eq(ptr %a33, ptr %a34) + %t36 = icmp ne i32 %t35, 0 + br label %logic.rend1068 +logic.rend1068: + br label %logic.end1067 +logic.end1067: + %t37 = phi i1 [ true, %logic.from1065 ], [ %t36, %logic.rend1068 ] + br i1 %t37, label %then1069, label %endif1071 +then1069: + ret { ptr, i64, i64 } { ptr @.str.584, i64 8, i64 0 } +endif1071: + %t38 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0 + %t39 = load { ptr, i64, i64 }, ptr %t38 + store { ptr, i64, i64 } %t39, ptr %a40 + store { ptr, i64, i64 } { ptr @.str.585, i64 6, i64 0 }, ptr %a41 + %t42 = call i32 @finch_str_eq(ptr %a40, ptr %a41) + %t43 = icmp ne i32 %t42, 0 + br i1 %t43, label %then1072, label %endif1074 +then1072: + ret { ptr, i64, i64 } { ptr @.str.586, i64 8, i64 0 } +endif1074: + %t44 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0 + %t45 = load { ptr, i64, i64 }, ptr %t44 + store { ptr, i64, i64 } %t45, ptr %a46 + store { ptr, i64, i64 } { ptr @.str.587, i64 4, i64 0 }, ptr %a47 + %t48 = call i32 @finch_str_eq(ptr %a46, ptr %a47) + %t49 = icmp ne i32 %t48, 0 + br i1 %t49, label %then1075, label %endif1077 +then1075: + ret { ptr, i64, i64 } { ptr @.str.588, i64 6, i64 0 } +endif1077: + %t50 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0 + %t51 = load { ptr, i64, i64 }, ptr %t50 + store { ptr, i64, i64 } { ptr @.str.589, 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.590, i64 1, i64 0 }, ptr %a58 + call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) + store { ptr, i64, i64 } %t55, ptr %a59 + call void @finch_str_drop(ptr %a59) + %t60 = load { ptr, i64, i64 }, ptr %a56 + ret { ptr, i64, i64 } %t60 } define internal %S.lexer.Token @finch.parser.expect(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2) { @@ -13969,9 +15499,15 @@ entry: %a16 = alloca { ptr, i64, i64 }, align 16 %a17 = alloca { ptr, i64, i64 }, align 16 %a18 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 + %a19 = alloca { ptr, i64, i64 }, align 16 + %a24 = alloca %S.lexer.Token, align 16 %a25 = 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 %S.lexer.Token, align 16 + %a32 = 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 @@ -13979,33 +15515,45 @@ 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 %then1024, label %endif1026 -then1024: + br i1 %t7, label %then1078, label %endif1080 +then1078: %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.586, i64 9, i64 0 }, ptr %a13 + store { ptr, i64, i64 } { ptr @.str.591, 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.587, i64 8, i64 0 }, ptr %a18 + store { ptr, i64, i64 } { ptr @.str.592, 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 - %t21 = call %S.lexer.Token @finch.parser.cur(ptr %t20) - %t22 = call { ptr, i64, i64 } @finch.parser.describe(%S.lexer.Token %t21) - store { ptr, i64, i64 } %t19, 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 - call void @finch.parser.fail(ptr %t8, %S.lexer.Token %t10, { ptr, i64, i64 } %t26) - br label %endif1026 -endif1026: - %t27 = load ptr, ptr %a1 - %t28 = call %S.lexer.Token @finch.parser.next(ptr %t27) - ret %S.lexer.Token %t28 + store { ptr, i64, i64 } %t15, ptr %a19 + call void @finch_str_drop(ptr %a19) + %t20 = load { ptr, i64, i64 }, ptr %a16 + %t21 = load ptr, ptr %a1 + %t22 = call %S.lexer.Token @finch.parser.cur(ptr %t21) + %t23 = call { ptr, i64, i64 } @finch.parser.describe(%S.lexer.Token %t22) + store %S.lexer.Token %t22, ptr %a24 + call void @finch.drop.S_lexer_Token(ptr %a24) + store { ptr, i64, i64 } %t20, ptr %a26 + store { ptr, i64, i64 } %t23, ptr %a27 + call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) + store { ptr, i64, i64 } %t20, ptr %a28 + call void @finch_str_drop(ptr %a28) + store { ptr, i64, i64 } %t23, ptr %a29 + call void @finch_str_drop(ptr %a29) + %t30 = load { ptr, i64, i64 }, ptr %a25 + call void @finch.parser.fail(ptr %t8, %S.lexer.Token %t10, { ptr, i64, i64 } %t30) + store %S.lexer.Token %t10, ptr %a31 + call void @finch.drop.S_lexer_Token(ptr %a31) + store { ptr, i64, i64 } %t30, ptr %a32 + call void @finch_str_drop(ptr %a32) + br label %endif1080 +endif1080: + %t33 = load ptr, ptr %a1 + %t34 = call %S.lexer.Token @finch.parser.next(ptr %t33) + ret %S.lexer.Token %t34 } define internal i1 @finch.parser.sameLine(ptr %p0) { @@ -14014,53 +15562,53 @@ entry: store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic1027, label %ok1028 -panic1027: - call void @finch_panic(ptr @.str.588, i64 79, ptr @.str.589) + br i1 %t3, label %panic1081, label %ok1082 +panic1081: + call void @finch_panic(ptr @.str.593, i64 79, ptr @.str.594) unreachable -ok1028: +ok1082: %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.from1029 -logic.from1029: - br i1 %t6, label %logic.end1031, label %logic.rhs1030 -logic.rhs1030: + br label %logic.from1083 +logic.from1083: + br i1 %t6, label %logic.end1085, label %logic.rhs1084 +logic.rhs1084: %t7 = load ptr, ptr %a1 %t8 = icmp eq ptr %t7, null - br i1 %t8, label %panic1032, label %ok1033 -panic1032: - call void @finch_panic(ptr @.str.590, i64 79, ptr @.str.591) + br i1 %t8, label %panic1086, label %ok1087 +panic1086: + call void @finch_panic(ptr @.str.595, i64 79, ptr @.str.596) unreachable -ok1033: +ok1087: %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 %panic1034, label %ok1035 -panic1034: - call void @finch_panic(ptr @.str.592, i64 79, ptr @.str.593) + br i1 %t11, label %panic1088, label %ok1089 +panic1088: + call void @finch_panic(ptr @.str.597, i64 79, ptr @.str.598) unreachable -ok1035: +ok1089: %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 %range1036, label %inrange1037 -range1036: - call void @finch_panic_index(ptr @.str.594, i64 79, i64 %t13, i64 %t15) + br i1 %t16, label %range1090, label %inrange1091 +range1090: + call void @finch_panic_index(ptr @.str.599, i64 79, i64 %t13, i64 %t15) unreachable -inrange1037: +inrange1091: %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.rend1038 -logic.rend1038: - br label %logic.end1031 -logic.end1031: - %t22 = phi i1 [ true, %logic.from1029 ], [ %t21, %logic.rend1038 ] + br label %logic.rend1092 +logic.rend1092: + br label %logic.end1085 +logic.end1085: + %t22 = phi i1 [ true, %logic.from1083 ], [ %t21, %logic.rend1092 ] ret i1 %t22 } @@ -14077,29 +15625,29 @@ entry: store { ptr, i64, i64 } %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic1039, label %ok1040 -panic1039: - call void @finch_panic(ptr @.str.595, i64 83, ptr @.str.596) + br i1 %t4, label %panic1093, label %ok1094 +panic1093: + call void @finch_panic(ptr @.str.600, i64 83, ptr @.str.601) unreachable -ok1040: +ok1094: %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 %panic1041, label %ok1042 -panic1041: - call void @finch_panic(ptr @.str.597, i64 83, ptr @.str.598) + br i1 %t7, label %panic1095, label %ok1096 +panic1095: + call void @finch_panic(ptr @.str.602, i64 83, ptr @.str.603) unreachable -ok1042: +ok1096: %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 %range1043, label %inrange1044 -range1043: - call void @finch_panic_index(ptr @.str.599, i64 83, i64 %t9, i64 %t11) + br i1 %t12, label %range1097, label %inrange1098 +range1097: + call void @finch_panic_index(ptr @.str.604, i64 83, i64 %t9, i64 %t11) unreachable -inrange1044: +inrange1098: %t13 = extractvalue { ptr, i64, i64 } %t10, 0 %t14 = getelementptr inbounds %S.lexer.Token, ptr %t13, i64 %t9 %t15 = load %S.lexer.Token, ptr %t14 @@ -14120,14 +15668,15 @@ inrange1044: %t30 = insertvalue %S.ast.Node %t27, i64 %t29, 12 %t31 = load ptr, ptr %a1 %t32 = icmp eq ptr %t31, null - br i1 %t32, label %panic1045, label %ok1046 -panic1045: - call void @finch_panic(ptr @.str.600, i64 84, ptr @.str.601) + br i1 %t32, label %panic1099, label %ok1100 +panic1099: + call void @finch_panic(ptr @.str.605, i64 84, ptr @.str.606) unreachable -ok1046: +ok1100: %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 + call void @finch.drop.S_lexer_Token(ptr %a19) ret %S.ast.Node %t35 } @@ -14143,37 +15692,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.602, i64 3, i64 0 }, ptr %t4 + store { ptr, i64, i64 } { ptr @.str.607, i64 3, i64 0 }, ptr %t4 %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 - store { ptr, i64, i64 } { ptr @.str.603, i64 5, i64 0 }, ptr %t5 + store { ptr, i64, i64 } { ptr @.str.608, i64 5, i64 0 }, ptr %t5 %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2 - store { ptr, i64, i64 } { ptr @.str.604, i64 4, i64 0 }, ptr %t6 + store { ptr, i64, i64 } { ptr @.str.609, i64 4, i64 0 }, ptr %t6 %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 3 - store { ptr, i64, i64 } { ptr @.str.605, i64 4, i64 0 }, ptr %t7 + store { ptr, i64, i64 } { ptr @.str.610, i64 4, i64 0 }, ptr %t7 %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4 - store { ptr, i64, i64 } { ptr @.str.606, i64 3, i64 0 }, ptr %t8 + store { ptr, i64, i64 } { ptr @.str.611, i64 3, i64 0 }, ptr %t8 %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 5 - store { ptr, i64, i64 } { ptr @.str.607, i64 3, i64 0 }, ptr %t9 + store { ptr, i64, i64 } { ptr @.str.612, i64 3, i64 0 }, ptr %t9 %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 6 - store { ptr, i64, i64 } { ptr @.str.608, i64 2, i64 0 }, ptr %t10 + store { ptr, i64, i64 } { ptr @.str.613, i64 2, i64 0 }, ptr %t10 %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 7 - store { ptr, i64, i64 } { ptr @.str.609, i64 3, i64 0 }, ptr %t11 + store { ptr, i64, i64 } { ptr @.str.614, i64 3, i64 0 }, ptr %t11 %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 8 - store { ptr, i64, i64 } { ptr @.str.610, i64 3, i64 0 }, ptr %t12 + store { ptr, i64, i64 } { ptr @.str.615, i64 3, i64 0 }, ptr %t12 %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 9 - store { ptr, i64, i64 } { ptr @.str.611, i64 3, i64 0 }, ptr %t13 + store { ptr, i64, i64 } { ptr @.str.616, i64 3, i64 0 }, ptr %t13 %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 10 - store { ptr, i64, i64 } { ptr @.str.612, i64 2, i64 0 }, ptr %t14 + store { ptr, i64, i64 } { ptr @.str.617, i64 2, i64 0 }, ptr %t14 %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 11 - store { ptr, i64, i64 } { ptr @.str.613, i64 3, i64 0 }, ptr %t15 + store { ptr, i64, i64 } { ptr @.str.618, i64 3, i64 0 }, ptr %t15 %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 12 - store { ptr, i64, i64 } { ptr @.str.614, i64 3, i64 0 }, ptr %t16 + store { ptr, i64, i64 } { ptr @.str.619, i64 3, i64 0 }, ptr %t16 %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 13 - store { ptr, i64, i64 } { ptr @.str.615, i64 3, i64 0 }, ptr %t17 + store { ptr, i64, i64 } { ptr @.str.620, i64 3, i64 0 }, ptr %t17 %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 14 - store { ptr, i64, i64 } { ptr @.str.616, i64 3, i64 0 }, ptr %t18 + store { ptr, i64, i64 } { ptr @.str.621, i64 3, i64 0 }, ptr %t18 %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 15 - store { ptr, i64, i64 } { ptr @.str.617, i64 3, i64 0 }, ptr %t19 + store { ptr, i64, i64 } { ptr @.str.622, 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 @@ -14184,305 +15733,376 @@ entry: %t27 = load i64, ptr %t24 %t28 = load ptr, ptr %a23 store i64 0, ptr %a29 - br label %find.cond1047 -find.cond1047: + br label %find.cond1101 +find.cond1101: %t30 = load i64, ptr %a29 %t31 = icmp slt i64 %t30, %t27 - br i1 %t31, label %find.body1048, label %find.end1051 -find.body1048: + br i1 %t31, label %find.body1102, label %find.end1105 +find.body1102: %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.hit1049, label %find.next1050 -find.hit1049: + br i1 %t37, label %find.hit1103, label %find.next1104 +find.hit1103: store i64 %t30, ptr %a26 - br label %find.end1051 -find.next1050: + br label %find.end1105 +find.next1104: %t38 = add i64 %t30, 1 store i64 %t38, ptr %a29 - br label %find.cond1047 -find.end1051: + br label %find.cond1101 +find.end1105: %t39 = load i64, ptr %a26 %t40 = icmp sge i64 %t39, 0 + call void @finch.drop.arr_str(ptr %a23) ret i1 %t40 } define internal %S.ast.Type @finch.parser.parseType(ptr %p0) { entry: %a1 = alloca ptr, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 + %a6 = alloca %S.lexer.Token, align 16 + %a10 = alloca %S.ast.Type, align 16 + %a20 = alloca %S.lexer.Token, align 16 + %a21 = 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 + %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 - %a30 = alloca { ptr, i64, i64 }, align 16 + %a31 = alloca %S.lexer.Token, align 16 %a32 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca %S.ast.Type, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca %S.ast.Type, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca %S.ast.Type, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 + %a36 = alloca { ptr, i64, i64 }, align 16 + %a37 = alloca { ptr, i64, i64 }, align 16 + %a39 = alloca %S.lexer.Token, align 16 + %a40 = alloca { ptr, i64, i64 }, align 16 + %a42 = alloca { ptr, i64, i64 }, align 16 + %a43 = alloca { ptr, i64, i64 }, align 16 + %a51 = alloca %S.lexer.Token, align 16 + %a54 = alloca %S.ast.Type, align 16 + %a57 = alloca %S.lexer.Token, align 16 + %a62 = alloca %S.ast.Type, align 16 + %a66 = alloca { ptr, i64, i64 }, align 16 + %a67 = alloca { ptr, i64, i64 }, align 16 + %a76 = alloca %S.ast.Type, align 16 + %a77 = alloca %S.ast.Type, align 16 + %a80 = alloca %S.lexer.Token, align 16 + %a83 = alloca { ptr, i64, i64 }, align 16 + %a84 = alloca { ptr, i64, i64 }, align 16 + %a89 = alloca { ptr, i64, i64 }, align 16 + %a90 = alloca { ptr, i64, i64 }, align 16 + %a98 = alloca { ptr, i64, i64 }, align 16 + %a99 = alloca { ptr, i64, i64 }, align 16 + %a102 = alloca %S.ast.Type, align 16 + %a107 = alloca { ptr, i64, i64 }, align 16 + %a108 = alloca { ptr, i64, i64 }, align 16 + %a111 = alloca { ptr, i64, i64 }, align 16 + %a115 = alloca %S.lexer.Token, align 16 + %a118 = 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 - %a143 = alloca %S.ast.Type, align 16 - %a144 = alloca %S.ast.Type, align 16 + %a126 = alloca { ptr, i64, i64 }, align 16 + %a127 = alloca { ptr, i64, i64 }, align 16 + %a129 = alloca %S.lexer.Token, align 16 + %a132 = alloca { ptr, i64, i64 }, align 16 + %a138 = alloca %S.lexer.Token, align 16 + %a143 = alloca { ptr, i64, i64 }, align 16 + %a144 = alloca { ptr, i64, i64 }, align 16 + %a147 = alloca { ptr, i64, i64 }, align 16 + %a151 = alloca %S.lexer.Token, align 16 + %a165 = alloca %S.lexer.Token, 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.618, i64 1, i64 0 }) - br i1 %t3, label %then1052, label %endif1054 -then1052: + %t3 = call i1 @finch.parser.accept(ptr %t2, { ptr, i64, i64 } { ptr @.str.623, i64 1, i64 0 }) + br i1 %t3, label %then1106, label %endif1108 +then1106: %t4 = load ptr, ptr %a1 - %t5 = call %S.lexer.Token @finch.parser.expect(ptr %t4, { ptr, i64, i64 } { ptr @.str.619, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.620, 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 -endif1054: - %t9 = load ptr, ptr %a1 - %t10 = call i1 @finch.parser.at(ptr %t9, { ptr, i64, i64 } { ptr @.str.621, i64 5, i64 0 }) - %t11 = xor i1 %t10, true - br i1 %t11, label %then1055, label %endif1057 -then1055: - %t12 = load ptr, ptr %a1 - %t13 = load ptr, ptr %a1 - %t14 = call %S.lexer.Token @finch.parser.cur(ptr %t13) + %t5 = call %S.lexer.Token @finch.parser.expect(ptr %t4, { ptr, i64, i64 } { ptr @.str.624, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.625, i64 36, i64 0 }) + store %S.lexer.Token %t5, ptr %a6 + call void @finch.drop.S_lexer_Token(ptr %a6) + %t7 = load ptr, ptr %a1 + %t8 = call %S.ast.Type @finch.parser.parseType(ptr %t7) + %t9 = call %S.ast.Type @finch.ast.arrayOf(%S.ast.Type %t8) + store %S.ast.Type %t8, ptr %a10 + call void @finch.drop.S_ast_Type(ptr %a10) + ret %S.ast.Type %t9 +endif1108: + %t11 = load ptr, ptr %a1 + %t12 = call i1 @finch.parser.at(ptr %t11, { ptr, i64, i64 } { ptr @.str.626, i64 5, i64 0 }) + %t13 = xor i1 %t12, true + br i1 %t13, label %then1109, label %endif1111 +then1109: + %t14 = load ptr, ptr %a1 %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.622, 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.623, 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 %endif1057 -endif1057: - %t26 = load ptr, ptr %a1 - %t27 = call %S.lexer.Token @finch.parser.next(ptr %t26) - %t28 = extractvalue %S.lexer.Token %t27, 1 - store { ptr, i64, i64 } %t28, ptr %a29 - call void @finch_str_copy(ptr %a30, ptr %a29) - %t31 = load { ptr, i64, i64 }, ptr %a30 - 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.624, 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.from1058 -logic.from1058: - br i1 %t37, label %logic.rhs1059, label %logic.end1060 -logic.rhs1059: - %t38 = load ptr, ptr %a1 - %t39 = call i1 @finch.parser.at(ptr %t38, { ptr, i64, i64 } { ptr @.str.625, i64 1, i64 0 }) - br label %logic.rend1061 -logic.rend1061: - br label %logic.end1060 -logic.end1060: - %t40 = phi i1 [ false, %logic.from1058 ], [ %t39, %logic.rend1061 ] - br i1 %t40, label %then1062, label %endif1064 -then1062: - %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 + %t17 = load ptr, ptr %a1 + %t18 = call %S.lexer.Token @finch.parser.cur(ptr %t17) + %t19 = call { ptr, i64, i64 } @finch.parser.describe(%S.lexer.Token %t18) + store %S.lexer.Token %t18, ptr %a20 + call void @finch.drop.S_lexer_Token(ptr %a20) + store { ptr, i64, i64 } { ptr @.str.627, i64 11, i64 0 }, ptr %a22 + store { ptr, i64, i64 } %t19, ptr %a23 + call void @finch_str_concat(ptr %a21, ptr %a22, ptr %a23) + store { ptr, i64, i64 } %t19, ptr %a24 + call void @finch_str_drop(ptr %a24) + %t25 = load { ptr, i64, i64 }, ptr %a21 + store { ptr, i64, i64 } %t25, ptr %a27 + store { ptr, i64, i64 } { ptr @.str.628, i64 56, i64 0 }, ptr %a28 + call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28) + store { ptr, i64, i64 } %t25, ptr %a29 + call void @finch_str_drop(ptr %a29) + %t30 = load { ptr, i64, i64 }, ptr %a26 + call void @finch.parser.fail(ptr %t14, %S.lexer.Token %t16, { ptr, i64, i64 } %t30) + store %S.lexer.Token %t16, ptr %a31 + call void @finch.drop.S_lexer_Token(ptr %a31) + store { ptr, i64, i64 } %t30, ptr %a32 + call void @finch_str_drop(ptr %a32) + br label %endif1111 +endif1111: + %t33 = load ptr, ptr %a1 + %t34 = call %S.lexer.Token @finch.parser.next(ptr %t33) + %t35 = extractvalue %S.lexer.Token %t34, 1 + store { ptr, i64, i64 } %t35, ptr %a36 + call void @finch_str_copy(ptr %a37, ptr %a36) + %t38 = load { ptr, i64, i64 }, ptr %a37 + store %S.lexer.Token %t34, ptr %a39 + call void @finch.drop.S_lexer_Token(ptr %a39) + store { ptr, i64, i64 } %t38, ptr %a40 + %t41 = load { ptr, i64, i64 }, ptr %a40 + store { ptr, i64, i64 } %t41, ptr %a42 + store { ptr, i64, i64 } { ptr @.str.629, 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.from1112 +logic.from1112: + br i1 %t45, label %logic.rhs1113, label %logic.end1114 +logic.rhs1113: %t46 = load ptr, ptr %a1 - %t47 = call %S.lexer.Token @finch.parser.expect(ptr %t46, { ptr, i64, i64 } { ptr @.str.626, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.627, i64 39, i64 0 }) - %t48 = load %S.ast.Type, ptr %a45 + %t47 = call i1 @finch.parser.at(ptr %t46, { ptr, i64, i64 } { ptr @.str.630, i64 1, i64 0 }) + br label %logic.rend1115 +logic.rend1115: + br label %logic.end1114 +logic.end1114: + %t48 = phi i1 [ false, %logic.from1112 ], [ %t47, %logic.rend1115 ] + br i1 %t48, label %then1116, label %endif1118 +then1116: %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 -endif1064: - %t52 = load { ptr, i64, i64 }, ptr %a32 - %t53 = call i1 @finch.parser.isTypeName({ ptr, i64, i64 } %t52) - br i1 %t53, label %then1065, label %endif1067 -then1065: - %t54 = load { ptr, i64, i64 }, ptr %a32 - store { ptr, i64, i64 } %t54, ptr %a55 - store { ptr, i64, i64 } { ptr @.str.628, 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.from1068 -logic.from1068: - br i1 %t58, label %logic.rhs1069, label %logic.end1070 -logic.rhs1069: + %t50 = call %S.lexer.Token @finch.parser.next(ptr %t49) + store %S.lexer.Token %t50, ptr %a51 + call void @finch.drop.S_lexer_Token(ptr %a51) + %t52 = load ptr, ptr %a1 + %t53 = call %S.ast.Type @finch.parser.parseType(ptr %t52) + store %S.ast.Type %t53, ptr %a54 + %t55 = load ptr, ptr %a1 + %t56 = call %S.lexer.Token @finch.parser.expect(ptr %t55, { ptr, i64, i64 } { ptr @.str.631, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.632, i64 39, i64 0 }) + store %S.lexer.Token %t56, ptr %a57 + call void @finch.drop.S_lexer_Token(ptr %a57) + %t58 = load %S.ast.Type, ptr %a54 %t59 = load ptr, ptr %a1 - %t60 = call i1 @finch.parser.accept(ptr %t59, { ptr, i64, i64 } { ptr @.str.629, i64 1, i64 0 }) - br label %logic.rend1071 -logic.rend1071: - br label %logic.end1070 -logic.end1070: - %t61 = phi i1 [ false, %logic.from1068 ], [ %t60, %logic.rend1071 ] - br i1 %t61, label %then1072, label %endif1074 -then1072: - %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.630, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.631, i64 3, i64 0 }) - %t68 = load %S.ast.Type, ptr %a65 - ret %S.ast.Type %t68 -endif1074: - %t69 = load { ptr, i64, i64 }, ptr %a32 - store { ptr, i64, i64 } %t69, ptr %a70 - store { ptr, i64, i64 } { ptr @.str.632, 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 %then1075, label %endif1077 -then1075: - %t74 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.633, i64 3, i64 0 }) - ret %S.ast.Type %t74 -endif1077: - %t75 = load { ptr, i64, i64 }, ptr %a32 - store { ptr, i64, i64 } %t75, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.634, 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 %then1078, label %endif1080 -then1078: - %t80 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.635, i64 5, i64 0 }) - ret %S.ast.Type %t80 -endif1080: - %t81 = load { ptr, i64, i64 }, ptr %a32 - %t82 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } %t81) - ret %S.ast.Type %t82 -endif1067: - %t83 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.636, 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) - %t87 = load { ptr, i64, i64 }, ptr %a86 - %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.637, i64 1, i64 0 }) - br label %logic.from1081 -logic.from1081: - br i1 %t91, label %logic.rhs1082, label %logic.end1083 -logic.rhs1082: - %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.638, 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.rend1084 -logic.rend1084: - br label %logic.end1083 -logic.end1083: - %t98 = phi i1 [ false, %logic.from1081 ], [ %t97, %logic.rend1084 ] - br i1 %t98, label %then1085, label %endif1087 -then1085: - %t99 = load ptr, ptr %a1 - %t100 = call %S.lexer.Token @finch.parser.next(ptr %t99) - %t101 = load { ptr, i64, i64 }, ptr %a32 - %t102 = getelementptr inbounds %S.ast.Type, ptr %a89, i32 0, i32 3 - store { ptr, i64, i64 } %t101, ptr %a103 - call void @finch_str_copy(ptr %a104, ptr %a103) - %t105 = load { ptr, i64, i64 }, ptr %a104 - store { ptr, i64, i64 } %t105, ptr %t102 - %t106 = load ptr, ptr %a1 - %t107 = call %S.lexer.Token @finch.parser.next(ptr %t106) - %t108 = extractvalue %S.lexer.Token %t107, 1 - store { ptr, i64, i64 } %t108, ptr %a109 - call void @finch_str_copy(ptr %a110, ptr %a109) - %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 %endif1087 -endif1087: + %t60 = call %S.ast.Type @finch.parser.parseType(ptr %t59) + %t61 = call %S.ast.Type @finch.ast.mapOf(%S.ast.Type %t58, %S.ast.Type %t60) + store %S.ast.Type %t60, ptr %a62 + call void @finch.drop.S_ast_Type(ptr %a62) + call void @finch.drop.S_ast_Type(ptr %a54) + call void @finch_str_drop(ptr %a40) + ret %S.ast.Type %t61 +endif1118: + %t63 = load { ptr, i64, i64 }, ptr %a40 + %t64 = call i1 @finch.parser.isTypeName({ ptr, i64, i64 } %t63) + br i1 %t64, label %then1119, label %endif1121 +then1119: + %t65 = load { ptr, i64, i64 }, ptr %a40 + store { ptr, i64, i64 } %t65, ptr %a66 + store { ptr, i64, i64 } { ptr @.str.633, i64 3, i64 0 }, ptr %a67 + %t68 = call i32 @finch_str_eq(ptr %a66, ptr %a67) + %t69 = icmp ne i32 %t68, 0 + br label %logic.from1122 +logic.from1122: + br i1 %t69, label %logic.rhs1123, label %logic.end1124 +logic.rhs1123: + %t70 = load ptr, ptr %a1 + %t71 = call i1 @finch.parser.accept(ptr %t70, { ptr, i64, i64 } { ptr @.str.634, i64 1, i64 0 }) + br label %logic.rend1125 +logic.rend1125: + br label %logic.end1124 +logic.end1124: + %t72 = phi i1 [ false, %logic.from1122 ], [ %t71, %logic.rend1125 ] + br i1 %t72, label %then1126, label %endif1128 +then1126: + %t73 = load ptr, ptr %a1 + %t74 = call %S.ast.Type @finch.parser.parseType(ptr %t73) + %t75 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t74) + store %S.ast.Type %t74, ptr %a76 + call void @finch.drop.S_ast_Type(ptr %a76) + store %S.ast.Type %t75, ptr %a77 + %t78 = load ptr, ptr %a1 + %t79 = call %S.lexer.Token @finch.parser.expect(ptr %t78, { ptr, i64, i64 } { ptr @.str.635, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.636, i64 3, i64 0 }) + store %S.lexer.Token %t79, ptr %a80 + call void @finch.drop.S_lexer_Token(ptr %a80) + %t81 = load %S.ast.Type, ptr %a77 + call void @finch_str_drop(ptr %a40) + ret %S.ast.Type %t81 +endif1128: + %t82 = load { ptr, i64, i64 }, ptr %a40 + store { ptr, i64, i64 } %t82, ptr %a83 + store { ptr, i64, i64 } { ptr @.str.637, i64 3, i64 0 }, ptr %a84 + %t85 = call i32 @finch_str_eq(ptr %a83, ptr %a84) + %t86 = icmp ne i32 %t85, 0 + br i1 %t86, label %then1129, label %endif1131 +then1129: + %t87 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.638, i64 3, i64 0 }) + call void @finch_str_drop(ptr %a40) + ret %S.ast.Type %t87 +endif1131: + %t88 = load { ptr, i64, i64 }, ptr %a40 + store { ptr, i64, i64 } %t88, ptr %a89 + store { ptr, i64, i64 } { ptr @.str.639, i64 3, i64 0 }, ptr %a90 + %t91 = call i32 @finch_str_eq(ptr %a89, ptr %a90) + %t92 = icmp ne i32 %t91, 0 + br i1 %t92, label %then1132, label %endif1134 +then1132: + %t93 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.640, i64 5, i64 0 }) + call void @finch_str_drop(ptr %a40) + ret %S.ast.Type %t93 +endif1134: + %t94 = load { ptr, i64, i64 }, ptr %a40 + %t95 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } %t94) + call void @finch_str_drop(ptr %a40) + ret %S.ast.Type %t95 +endif1121: + %t96 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.641, i64 5, i64 0 }, 0 + %t97 = load { ptr, i64, i64 }, ptr %a40 + store { ptr, i64, i64 } %t97, ptr %a98 + call void @finch_str_copy(ptr %a99, ptr %a98) + %t100 = load { ptr, i64, i64 }, ptr %a99 + %t101 = insertvalue %S.ast.Type %t96, { ptr, i64, i64 } %t100, 2 + store %S.ast.Type %t101, ptr %a102 + %t103 = load ptr, ptr %a1 + %t104 = call i1 @finch.parser.at(ptr %t103, { ptr, i64, i64 } { ptr @.str.642, i64 1, i64 0 }) + br label %logic.from1135 +logic.from1135: + br i1 %t104, label %logic.rhs1136, label %logic.end1137 +logic.rhs1136: + %t105 = load ptr, ptr %a1 + %t106 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t105, i64 1) + store { ptr, i64, i64 } %t106, ptr %a107 + store { ptr, i64, i64 } { ptr @.str.643, i64 5, i64 0 }, ptr %a108 + %t109 = call i32 @finch_str_eq(ptr %a107, ptr %a108) + %t110 = icmp ne i32 %t109, 0 + store { ptr, i64, i64 } %t106, ptr %a111 + call void @finch_str_drop(ptr %a111) + br label %logic.rend1138 +logic.rend1138: + br label %logic.end1137 +logic.end1137: + %t112 = phi i1 [ false, %logic.from1135 ], [ %t110, %logic.rend1138 ] + br i1 %t112, label %then1139, label %endif1141 +then1139: %t113 = load ptr, ptr %a1 - %t114 = call i1 @finch.parser.at(ptr %t113, { ptr, i64, i64 } { ptr @.str.639, i64 1, i64 0 }) - br label %logic.from1088 -logic.from1088: - br i1 %t114, label %logic.rhs1089, label %logic.end1090 -logic.rhs1089: - %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.rend1091 -logic.rend1091: - br label %logic.end1090 -logic.end1090: - %t119 = phi i1 [ false, %logic.from1088 ], [ %t118, %logic.rend1091 ] - br label %logic.from1092 -logic.from1092: - br i1 %t119, label %logic.rhs1093, label %logic.end1094 -logic.rhs1093: - %t120 = load ptr, ptr %a1 - %t121 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t120, i64 1) + %t114 = call %S.lexer.Token @finch.parser.next(ptr %t113) + store %S.lexer.Token %t114, ptr %a115 + call void @finch.drop.S_lexer_Token(ptr %a115) + %t116 = load { ptr, i64, i64 }, ptr %a40 + %t117 = getelementptr inbounds %S.ast.Type, ptr %a102, i32 0, i32 3 + store { ptr, i64, i64 } %t116, ptr %a118 + call void @finch_str_copy(ptr %a119, ptr %a118) + %t120 = load { ptr, i64, i64 }, ptr %a119 + %t121 = load { ptr, i64, i64 }, ptr %t117 + store { ptr, i64, i64 } %t120, ptr %t117 store { ptr, i64, i64 } %t121, ptr %a122 - store { ptr, i64, i64 } { ptr @.str.640, 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.rend1095 -logic.rend1095: - br label %logic.end1094 -logic.end1094: - %t126 = phi i1 [ false, %logic.from1092 ], [ %t125, %logic.rend1095 ] - br i1 %t126, label %then1096, label %endif1098 -then1096: - %t127 = load ptr, ptr %a1 - %t128 = call %S.lexer.Token @finch.parser.next(ptr %t127) - br label %while.cond1099 -while.cond1099: - br label %while.body1100 -while.body1100: - %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 - %t132 = call %S.ast.Type @finch.parser.parseType(ptr %t131) - %t133 = load i64, ptr %t130 - %t134 = add i64 %t133, 1 - call void @finch_arr_reserve(ptr %t129, i64 %t134, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t135 = load ptr, ptr %t129 - %t136 = getelementptr inbounds %S.ast.Type, ptr %t135, i64 %t133 - 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.641, i64 1, i64 0 }) - %t139 = xor i1 %t138, true - br i1 %t139, label %then1102, label %endif1104 -then1102: - br label %while.end1101 -endif1104: - br label %while.cond1099 -while.end1101: - %t140 = load ptr, ptr %a1 - %t141 = call %S.lexer.Token @finch.parser.expect(ptr %t140, { ptr, i64, i64 } { ptr @.str.642, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.643, i64 28, i64 0 }) - br label %endif1098 -endif1098: - %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) - %t145 = load %S.ast.Type, ptr %a144 - ret %S.ast.Type %t145 + call void @finch_str_drop(ptr %a122) + %t123 = load ptr, ptr %a1 + %t124 = call %S.lexer.Token @finch.parser.next(ptr %t123) + %t125 = extractvalue %S.lexer.Token %t124, 1 + store { ptr, i64, i64 } %t125, ptr %a126 + call void @finch_str_copy(ptr %a127, ptr %a126) + %t128 = load { ptr, i64, i64 }, ptr %a127 + store %S.lexer.Token %t124, ptr %a129 + call void @finch.drop.S_lexer_Token(ptr %a129) + %t130 = getelementptr inbounds %S.ast.Type, ptr %a102, i32 0, i32 2 + %t131 = load { ptr, i64, i64 }, ptr %t130 + store { ptr, i64, i64 } %t128, ptr %t130 + store { ptr, i64, i64 } %t131, ptr %a132 + call void @finch_str_drop(ptr %a132) + br label %endif1141 +endif1141: + %t133 = load ptr, ptr %a1 + %t134 = call i1 @finch.parser.at(ptr %t133, { ptr, i64, i64 } { ptr @.str.644, i64 1, i64 0 }) + br label %logic.from1142 +logic.from1142: + br i1 %t134, label %logic.rhs1143, label %logic.end1144 +logic.rhs1143: + %t135 = load ptr, ptr %a1 + %t136 = call %S.lexer.Token @finch.parser.cur(ptr %t135) + %t137 = extractvalue %S.lexer.Token %t136, 4 + store %S.lexer.Token %t136, ptr %a138 + call void @finch.drop.S_lexer_Token(ptr %a138) + %t139 = xor i1 %t137, true + br label %logic.rend1145 +logic.rend1145: + br label %logic.end1144 +logic.end1144: + %t140 = phi i1 [ false, %logic.from1142 ], [ %t139, %logic.rend1145 ] + br label %logic.from1146 +logic.from1146: + br i1 %t140, label %logic.rhs1147, label %logic.end1148 +logic.rhs1147: + %t141 = load ptr, ptr %a1 + %t142 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t141, i64 1) + store { ptr, i64, i64 } %t142, ptr %a143 + store { ptr, i64, i64 } { ptr @.str.645, i64 1, i64 0 }, ptr %a144 + %t145 = call i32 @finch_str_eq(ptr %a143, ptr %a144) + %t146 = icmp eq i32 %t145, 0 + store { ptr, i64, i64 } %t142, ptr %a147 + call void @finch_str_drop(ptr %a147) + br label %logic.rend1149 +logic.rend1149: + br label %logic.end1148 +logic.end1148: + %t148 = phi i1 [ false, %logic.from1146 ], [ %t146, %logic.rend1149 ] + br i1 %t148, label %then1150, label %endif1152 +then1150: + %t149 = load ptr, ptr %a1 + %t150 = call %S.lexer.Token @finch.parser.next(ptr %t149) + store %S.lexer.Token %t150, ptr %a151 + call void @finch.drop.S_lexer_Token(ptr %a151) + br label %while.cond1153 +while.cond1153: + br label %while.body1154 +while.body1154: + %t152 = getelementptr inbounds %S.ast.Type, ptr %a102, i32 0, i32 1 + %t153 = getelementptr inbounds { ptr, i64, i64 }, ptr %t152, i32 0, i32 1 + %t154 = load ptr, ptr %a1 + %t155 = call %S.ast.Type @finch.parser.parseType(ptr %t154) + %t156 = load i64, ptr %t153 + %t157 = add i64 %t156, 1 + call void @finch_arr_reserve(ptr %t152, i64 %t157, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) + %t158 = load ptr, ptr %t152 + %t159 = getelementptr inbounds %S.ast.Type, ptr %t158, i64 %t156 + store %S.ast.Type %t155, ptr %t159 + store i64 %t157, ptr %t153 + %t160 = load ptr, ptr %a1 + %t161 = call i1 @finch.parser.accept(ptr %t160, { ptr, i64, i64 } { ptr @.str.646, i64 1, i64 0 }) + %t162 = xor i1 %t161, true + br i1 %t162, label %then1156, label %endif1158 +then1156: + br label %while.end1155 +endif1158: + br label %while.cond1153 +while.end1155: + %t163 = load ptr, ptr %a1 + %t164 = call %S.lexer.Token @finch.parser.expect(ptr %t163, { ptr, i64, i64 } { ptr @.str.647, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.648, i64 28, i64 0 }) + store %S.lexer.Token %t164, ptr %a165 + call void @finch.drop.S_lexer_Token(ptr %a165) + br label %endif1152 +endif1152: + %t166 = load %S.ast.Type, ptr %a102 + call void @finch_str_drop(ptr %a40) + ret %S.ast.Type %t166 } define internal i1 @finch.parser.genericDeclAhead(ptr %p0) { @@ -14490,281 +16110,290 @@ entry: %a1 = alloca ptr, align 16 %a7 = alloca { ptr, i64, i64 }, align 16 %a8 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 + %a11 = alloca { ptr, i64, i64 }, align 16 %a15 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca i64, align 16 - %a25 = alloca i64, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 + %a16 = alloca { ptr, i64, i64 }, align 16 + %a19 = alloca { ptr, i64, i64 }, align 16 + %a21 = alloca i64, align 16 + %a27 = alloca i64, align 16 + %a46 = alloca { ptr, i64, i64 }, align 16 %a47 = alloca { ptr, i64, i64 }, align 16 %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 + %a51 = alloca { ptr, i64, i64 }, align 16 + %a52 = alloca { ptr, i64, i64 }, align 16 + %a58 = alloca { ptr, i64, i64 }, align 16 + %a59 = alloca { ptr, i64, i64 }, align 16 + %a86 = alloca { ptr, i64, i64 }, align 16 + %a87 = alloca { ptr, i64, i64 }, align 16 + %a106 = alloca { ptr, i64, i64 }, align 16 + %a107 = 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.644, i64 5, i64 0 }) + %t3 = call i1 @finch.parser.at(ptr %t2, { ptr, i64, i64 } { ptr @.str.649, i64 5, i64 0 }) %t4 = xor i1 %t3, true - br label %logic.from1105 -logic.from1105: - br i1 %t4, label %logic.end1107, label %logic.rhs1106 -logic.rhs1106: + br label %logic.from1159 +logic.from1159: + br i1 %t4, label %logic.end1161, label %logic.rhs1160 +logic.rhs1160: %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.645, i64 1, i64 0 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.650, 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.rend1108 -logic.rend1108: - br label %logic.end1107 -logic.end1107: - %t11 = phi i1 [ true, %logic.from1105 ], [ %t10, %logic.rend1108 ] - br label %logic.from1109 -logic.from1109: - br i1 %t11, label %logic.end1111, label %logic.rhs1110 -logic.rhs1110: - %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.646, 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.rend1112 -logic.rend1112: - br label %logic.end1111 -logic.end1111: - %t18 = phi i1 [ true, %logic.from1109 ], [ %t17, %logic.rend1112 ] - br i1 %t18, label %then1113, label %endif1115 -then1113: + store { ptr, i64, i64 } %t6, ptr %a11 + call void @finch_str_drop(ptr %a11) + br label %logic.rend1162 +logic.rend1162: + br label %logic.end1161 +logic.end1161: + %t12 = phi i1 [ true, %logic.from1159 ], [ %t10, %logic.rend1162 ] + br label %logic.from1163 +logic.from1163: + br i1 %t12, label %logic.end1165, label %logic.rhs1164 +logic.rhs1164: + %t13 = load ptr, ptr %a1 + %t14 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t13, i64 2) + store { ptr, i64, i64 } %t14, ptr %a15 + store { ptr, i64, i64 } { ptr @.str.651, i64 1, i64 0 }, ptr %a16 + %t17 = call i32 @finch_str_eq(ptr %a15, ptr %a16) + %t18 = icmp ne i32 %t17, 0 + store { ptr, i64, i64 } %t14, ptr %a19 + call void @finch_str_drop(ptr %a19) + br label %logic.rend1166 +logic.rend1166: + br label %logic.end1165 +logic.end1165: + %t20 = phi i1 [ true, %logic.from1163 ], [ %t18, %logic.rend1166 ] + br i1 %t20, label %then1167, label %endif1169 +then1167: ret i1 false -endif1115: - store i64 0, ptr %a19 - %t20 = load ptr, ptr %a1 - %t21 = icmp eq ptr %t20, null - br i1 %t21, label %panic1116, label %ok1117 -panic1116: - call void @finch_panic(ptr @.str.647, i64 148, ptr @.str.648) +endif1169: + store i64 0, ptr %a21 + %t22 = load ptr, ptr %a1 + %t23 = icmp eq ptr %t22, null + br i1 %t23, label %panic1170, label %ok1171 +panic1170: + call void @finch_panic(ptr @.str.652, i64 148, ptr @.str.653) unreachable -ok1117: - %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.cond1118 -while.cond1118: - %t26 = load i64, ptr %a25 - %t27 = load ptr, ptr %a1 - %t28 = icmp eq ptr %t27, null - br i1 %t28, label %panic1121, label %ok1122 -panic1121: - call void @finch_panic(ptr @.str.649, i64 149, ptr @.str.650) +ok1171: + %t24 = getelementptr inbounds %S.parser.Parser, ptr %t22, i32 0, i32 1 + %t25 = load i64, ptr %t24 + %t26 = add i64 %t25, 1 + store i64 %t26, ptr %a27 + br label %while.cond1172 +while.cond1172: + %t28 = load i64, ptr %a27 + %t29 = load ptr, ptr %a1 + %t30 = icmp eq ptr %t29, null + br i1 %t30, label %panic1175, label %ok1176 +panic1175: + call void @finch_panic(ptr @.str.654, i64 149, ptr @.str.655) unreachable -ok1122: - %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.body1119, label %while.end1120 -while.body1119: - %t33 = load ptr, ptr %a1 - %t34 = icmp eq ptr %t33, null - br i1 %t34, label %panic1123, label %ok1124 -panic1123: - call void @finch_panic(ptr @.str.651, i64 150, ptr @.str.652) +ok1176: + %t31 = getelementptr inbounds %S.parser.Parser, 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 %while.body1173, label %while.end1174 +while.body1173: + %t35 = load ptr, ptr %a1 + %t36 = icmp eq ptr %t35, null + br i1 %t36, label %panic1177, label %ok1178 +panic1177: + call void @finch_panic(ptr @.str.656, i64 150, ptr @.str.657) unreachable -ok1124: - %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 %range1125, label %inrange1126 -range1125: - call void @finch_panic_index(ptr @.str.653, i64 150, i64 %t36, i64 %t38) +ok1178: + %t37 = getelementptr inbounds %S.parser.Parser, ptr %t35, i32 0, i32 0 + %t38 = load i64, ptr %a27 + %t39 = load { ptr, i64, i64 }, ptr %t37 + %t40 = extractvalue { ptr, i64, i64 } %t39, 1 + %t41 = icmp uge i64 %t38, %t40 + br i1 %t41, label %range1179, label %inrange1180 +range1179: + call void @finch_panic_index(ptr @.str.658, i64 150, i64 %t38, i64 %t40) unreachable -inrange1126: - %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 - %t43 = load { ptr, i64, i64 }, ptr %t42 - store { ptr, i64, i64 } %t43, ptr %a44 - call void @finch_str_copy(ptr %a45, ptr %a44) - %t46 = load { ptr, i64, i64 }, ptr %a45 - store { ptr, i64, i64 } %t46, ptr %a47 +inrange1180: + %t42 = extractvalue { ptr, i64, i64 } %t39, 0 + %t43 = getelementptr inbounds %S.lexer.Token, ptr %t42, i64 %t38 + %t44 = getelementptr inbounds %S.lexer.Token, ptr %t43, i32 0, i32 0 + %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 - store { ptr, i64, i64 } { ptr @.str.654, 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 %then1127, label %else1128 -then1127: - %t53 = load i64, ptr %a19 - %t54 = add i64 %t53, 1 - store i64 %t54, ptr %a19 - br label %endif1129 -else1128: - %t55 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } %t55, ptr %a56 - store { ptr, i64, i64 } { ptr @.str.655, 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 %then1130, label %else1131 -then1130: - %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 %then1133, label %endif1135 -then1133: - %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 %panic1136, label %ok1137 -panic1136: - call void @finch_panic(ptr @.str.656, i64 156, ptr @.str.657) + %t50 = load { ptr, i64, i64 }, ptr %a49 + store { ptr, i64, i64 } %t50, ptr %a51 + store { ptr, i64, i64 } { ptr @.str.659, i64 1, i64 0 }, ptr %a52 + %t53 = call i32 @finch_str_eq(ptr %a51, ptr %a52) + %t54 = icmp ne i32 %t53, 0 + br i1 %t54, label %then1181, label %else1182 +then1181: + %t55 = load i64, ptr %a21 + %t56 = add i64 %t55, 1 + store i64 %t56, ptr %a21 + br label %endif1183 +else1182: + %t57 = load { ptr, i64, i64 }, ptr %a49 + store { ptr, i64, i64 } %t57, ptr %a58 + store { ptr, i64, i64 } { ptr @.str.660, i64 1, i64 0 }, ptr %a59 + %t60 = call i32 @finch_str_eq(ptr %a58, ptr %a59) + %t61 = icmp ne i32 %t60, 0 + br i1 %t61, label %then1184, label %else1185 +then1184: + %t62 = load i64, ptr %a21 + %t63 = sub i64 %t62, 1 + store i64 %t63, ptr %a21 + %t64 = load i64, ptr %a21 + %t65 = icmp eq i64 %t64, 0 + br i1 %t65, label %then1187, label %endif1189 +then1187: + %t66 = load i64, ptr %a27 + %t67 = add i64 %t66, 1 + %t68 = load ptr, ptr %a1 + %t69 = icmp eq ptr %t68, null + br i1 %t69, label %panic1190, label %ok1191 +panic1190: + call void @finch_panic(ptr @.str.661, i64 156, ptr @.str.662) unreachable -ok1137: - %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.from1138 -logic.from1138: - br i1 %t71, label %logic.rhs1139, label %logic.end1140 -logic.rhs1139: - %t72 = load ptr, ptr %a1 - %t73 = icmp eq ptr %t72, null - br i1 %t73, label %panic1141, label %ok1142 -panic1141: - call void @finch_panic(ptr @.str.658, i64 156, ptr @.str.659) +ok1191: + %t70 = getelementptr inbounds %S.parser.Parser, ptr %t68, i32 0, i32 0 + %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %t70, i32 0, i32 1 + %t72 = load i64, ptr %t71 + %t73 = icmp slt i64 %t67, %t72 + br label %logic.from1192 +logic.from1192: + br i1 %t73, label %logic.rhs1193, label %logic.end1194 +logic.rhs1193: + %t74 = load ptr, ptr %a1 + %t75 = icmp eq ptr %t74, null + br i1 %t75, label %panic1195, label %ok1196 +panic1195: + call void @finch_panic(ptr @.str.663, i64 156, ptr @.str.664) unreachable -ok1142: - %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 %range1143, label %inrange1144 -range1143: - call void @finch_panic_index(ptr @.str.660, i64 156, i64 %t76, i64 %t78) +ok1196: + %t76 = getelementptr inbounds %S.parser.Parser, ptr %t74, i32 0, i32 0 + %t77 = load i64, ptr %a27 + %t78 = add i64 %t77, 1 + %t79 = load { ptr, i64, i64 }, ptr %t76 + %t80 = extractvalue { ptr, i64, i64 } %t79, 1 + %t81 = icmp uge i64 %t78, %t80 + br i1 %t81, label %range1197, label %inrange1198 +range1197: + call void @finch_panic_index(ptr @.str.665, i64 156, i64 %t78, i64 %t80) unreachable -inrange1144: - %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.661, 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.rend1145 -logic.rend1145: - br label %logic.end1140 -logic.end1140: - %t88 = phi i1 [ false, %logic.from1138 ], [ %t87, %logic.rend1145 ] - br label %logic.from1146 -logic.from1146: - br i1 %t88, label %logic.rhs1147, label %logic.end1148 -logic.rhs1147: - %t89 = load ptr, ptr %a1 - %t90 = icmp eq ptr %t89, null - br i1 %t90, label %panic1149, label %ok1150 -panic1149: - call void @finch_panic(ptr @.str.662, i64 156, ptr @.str.663) +inrange1198: + %t82 = extractvalue { ptr, i64, i64 } %t79, 0 + %t83 = getelementptr inbounds %S.lexer.Token, ptr %t82, i64 %t78 + %t84 = getelementptr inbounds %S.lexer.Token, ptr %t83, i32 0, i32 0 + %t85 = load { ptr, i64, i64 }, ptr %t84 + store { ptr, i64, i64 } %t85, ptr %a86 + store { ptr, i64, i64 } { ptr @.str.666, i64 5, i64 0 }, ptr %a87 + %t88 = call i32 @finch_str_eq(ptr %a86, ptr %a87) + %t89 = icmp ne i32 %t88, 0 + br label %logic.rend1199 +logic.rend1199: + br label %logic.end1194 +logic.end1194: + %t90 = phi i1 [ false, %logic.from1192 ], [ %t89, %logic.rend1199 ] + br label %logic.from1200 +logic.from1200: + br i1 %t90, label %logic.rhs1201, label %logic.end1202 +logic.rhs1201: + %t91 = load ptr, ptr %a1 + %t92 = icmp eq ptr %t91, null + br i1 %t92, label %panic1203, label %ok1204 +panic1203: + call void @finch_panic(ptr @.str.667, i64 156, ptr @.str.668) unreachable -ok1150: - %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 %range1151, label %inrange1152 -range1151: - call void @finch_panic_index(ptr @.str.664, i64 156, i64 %t93, i64 %t95) +ok1204: + %t93 = getelementptr inbounds %S.parser.Parser, ptr %t91, i32 0, i32 0 + %t94 = load i64, ptr %a27 + %t95 = add i64 %t94, 1 + %t96 = load { ptr, i64, i64 }, ptr %t93 + %t97 = extractvalue { ptr, i64, i64 } %t96, 1 + %t98 = icmp uge i64 %t95, %t97 + br i1 %t98, label %range1205, label %inrange1206 +range1205: + call void @finch_panic_index(ptr @.str.669, i64 156, i64 %t95, i64 %t97) unreachable -inrange1152: - %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.rend1153 -logic.rend1153: - br label %logic.end1148 -logic.end1148: - %t102 = phi i1 [ false, %logic.from1146 ], [ %t101, %logic.rend1153 ] - ret i1 %t102 -endif1135: - br label %endif1132 -else1131: - %t103 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } %t103, ptr %a104 - store { ptr, i64, i64 } { ptr @.str.665, 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.from1154 -logic.from1154: - br i1 %t107, label %logic.end1156, label %logic.rhs1155 -logic.rhs1155: - %t108 = load ptr, ptr %a1 - %t109 = icmp eq ptr %t108, null - br i1 %t109, label %panic1157, label %ok1158 -panic1157: - call void @finch_panic(ptr @.str.666, i64 158, ptr @.str.667) +inrange1206: + %t99 = extractvalue { ptr, i64, i64 } %t96, 0 + %t100 = getelementptr inbounds %S.lexer.Token, ptr %t99, i64 %t95 + %t101 = getelementptr inbounds %S.lexer.Token, ptr %t100, i32 0, i32 4 + %t102 = load i1, ptr %t101 + %t103 = xor i1 %t102, true + br label %logic.rend1207 +logic.rend1207: + br label %logic.end1202 +logic.end1202: + %t104 = phi i1 [ false, %logic.from1200 ], [ %t103, %logic.rend1207 ] + call void @finch_str_drop(ptr %a49) + ret i1 %t104 +endif1189: + br label %endif1186 +else1185: + %t105 = load { ptr, i64, i64 }, ptr %a49 + store { ptr, i64, i64 } %t105, ptr %a106 + store { ptr, i64, i64 } { ptr @.str.670, i64 3, i64 0 }, ptr %a107 + %t108 = call i32 @finch_str_eq(ptr %a106, ptr %a107) + %t109 = icmp ne i32 %t108, 0 + br label %logic.from1208 +logic.from1208: + br i1 %t109, label %logic.end1210, label %logic.rhs1209 +logic.rhs1209: + %t110 = load ptr, ptr %a1 + %t111 = icmp eq ptr %t110, null + br i1 %t111, label %panic1211, label %ok1212 +panic1211: + call void @finch_panic(ptr @.str.671, i64 158, ptr @.str.672) unreachable -ok1158: - %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 %range1159, label %inrange1160 -range1159: - call void @finch_panic_index(ptr @.str.668, i64 158, i64 %t111, i64 %t113) +ok1212: + %t112 = getelementptr inbounds %S.parser.Parser, ptr %t110, i32 0, i32 0 + %t113 = load i64, ptr %a27 + %t114 = load { ptr, i64, i64 }, ptr %t112 + %t115 = extractvalue { ptr, i64, i64 } %t114, 1 + %t116 = icmp uge i64 %t113, %t115 + br i1 %t116, label %range1213, label %inrange1214 +range1213: + call void @finch_panic_index(ptr @.str.673, i64 158, i64 %t113, i64 %t115) unreachable -inrange1160: - %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.from1161 -logic.from1161: - br i1 %t118, label %logic.rhs1162, label %logic.end1163 -logic.rhs1162: - %t119 = load i64, ptr %a19 - %t120 = icmp eq i64 %t119, 0 - br label %logic.rend1164 -logic.rend1164: - br label %logic.end1163 -logic.end1163: - %t121 = phi i1 [ false, %logic.from1161 ], [ %t120, %logic.rend1164 ] - br label %logic.rend1165 -logic.rend1165: - br label %logic.end1156 -logic.end1156: - %t122 = phi i1 [ true, %logic.from1154 ], [ %t121, %logic.rend1165 ] - br i1 %t122, label %then1166, label %endif1168 -then1166: +inrange1214: + %t117 = extractvalue { ptr, i64, i64 } %t114, 0 + %t118 = getelementptr inbounds %S.lexer.Token, ptr %t117, i64 %t113 + %t119 = getelementptr inbounds %S.lexer.Token, ptr %t118, i32 0, i32 4 + %t120 = load i1, ptr %t119 + br label %logic.from1215 +logic.from1215: + br i1 %t120, label %logic.rhs1216, label %logic.end1217 +logic.rhs1216: + %t121 = load i64, ptr %a21 + %t122 = icmp eq i64 %t121, 0 + br label %logic.rend1218 +logic.rend1218: + br label %logic.end1217 +logic.end1217: + %t123 = phi i1 [ false, %logic.from1215 ], [ %t122, %logic.rend1218 ] + br label %logic.rend1219 +logic.rend1219: + br label %logic.end1210 +logic.end1210: + %t124 = phi i1 [ true, %logic.from1208 ], [ %t123, %logic.rend1219 ] + br i1 %t124, label %then1220, label %endif1222 +then1220: + call void @finch_str_drop(ptr %a49) ret i1 false -endif1168: - br label %endif1132 -endif1132: - br label %endif1129 -endif1129: - %t123 = load i64, ptr %a25 - %t124 = add i64 %t123, 1 - store i64 %t124, ptr %a25 - br label %while.cond1118 -while.end1120: +endif1222: + br label %endif1186 +endif1186: + br label %endif1183 +endif1183: + %t125 = load i64, ptr %a27 + %t126 = add i64 %t125, 1 + store i64 %t126, ptr %a27 + call void @finch_str_drop(ptr %a49) + br label %while.cond1172 +while.end1174: ret i1 false } @@ -14775,11 +16404,11 @@ entry: store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic1169, label %ok1170 -panic1169: - call void @finch_panic(ptr @.str.669, i64 168, ptr @.str.670) + br i1 %t3, label %panic1223, label %ok1224 +panic1223: + call void @finch_panic(ptr @.str.674, i64 168, ptr @.str.675) unreachable -ok1170: +ok1224: %t4 = getelementptr inbounds %S.parser.Parser, ptr %t2, i32 0, i32 1 %t5 = load i64, ptr %t4 %t6 = sub i64 %t5, 1 @@ -14789,11 +16418,11 @@ ok1170: store i1 %t8, ptr %a9 %t10 = load ptr, ptr %a1 %t11 = icmp eq ptr %t10, null - br i1 %t11, label %panic1171, label %ok1172 -panic1171: - call void @finch_panic(ptr @.str.671, i64 170, ptr @.str.672) + br i1 %t11, label %panic1225, label %ok1226 +panic1225: + call void @finch_panic(ptr @.str.676, i64 170, ptr @.str.677) unreachable -ok1172: +ok1226: %t12 = getelementptr inbounds %S.parser.Parser, ptr %t10, i32 0, i32 1 %t13 = load i64, ptr %t12 %t14 = add i64 %t13, 1 @@ -14807,297 +16436,306 @@ entry: %a1 = alloca ptr, align 16 %a4 = alloca { ptr, i64, i64 }, align 16 %a5 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 + %a8 = alloca { ptr, i64, i64 }, align 16 %a27 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca i64, align 16 - %a37 = alloca i64, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 + %a28 = alloca { ptr, i64, i64 }, align 16 + %a31 = alloca { ptr, i64, i64 }, align 16 + %a33 = alloca i64, align 16 + %a39 = alloca i64, align 16 + %a58 = alloca { ptr, i64, i64 }, align 16 %a59 = alloca { ptr, i64, i64 }, align 16 %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 + %a63 = alloca { ptr, i64, i64 }, align 16 + %a64 = alloca { ptr, i64, i64 }, align 16 + %a70 = alloca { ptr, i64, i64 }, align 16 + %a71 = alloca { ptr, i64, i64 }, align 16 + %a98 = alloca { ptr, i64, i64 }, align 16 + %a99 = alloca { ptr, i64, i64 }, align 16 + %a118 = alloca { ptr, i64, i64 }, align 16 + %a119 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 %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.673, i64 1, i64 0 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.678, 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.from1173 -logic.from1173: - br i1 %t7, label %logic.end1175, label %logic.rhs1174 -logic.rhs1174: - %t8 = load ptr, ptr %a1 - %t9 = icmp eq ptr %t8, null - br i1 %t9, label %panic1176, label %ok1177 -panic1176: - call void @finch_panic(ptr @.str.674, i64 176, ptr @.str.675) + store { ptr, i64, i64 } %t3, ptr %a8 + call void @finch_str_drop(ptr %a8) + br label %logic.from1227 +logic.from1227: + br i1 %t7, label %logic.end1229, label %logic.rhs1228 +logic.rhs1228: + %t9 = load ptr, ptr %a1 + %t10 = icmp eq ptr %t9, null + br i1 %t10, label %panic1230, label %ok1231 +panic1230: + call void @finch_panic(ptr @.str.679, i64 176, ptr @.str.680) unreachable -ok1177: - %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 %panic1178, label %ok1179 -panic1178: - call void @finch_panic(ptr @.str.676, i64 176, ptr @.str.677) +ok1231: + %t11 = getelementptr inbounds %S.parser.Parser, ptr %t9, i32 0, i32 0 + %t12 = load ptr, ptr %a1 + %t13 = icmp eq ptr %t12, null + br i1 %t13, label %panic1232, label %ok1233 +panic1232: + call void @finch_panic(ptr @.str.681, i64 176, ptr @.str.682) unreachable -ok1179: - %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 %range1180, label %inrange1181 -range1180: - call void @finch_panic_index(ptr @.str.678, i64 176, i64 %t15, i64 %t17) +ok1233: + %t14 = getelementptr inbounds %S.parser.Parser, ptr %t12, i32 0, i32 1 + %t15 = load i64, ptr %t14 + %t16 = add i64 %t15, 1 + %t17 = load { ptr, i64, i64 }, ptr %t11 + %t18 = extractvalue { ptr, i64, i64 } %t17, 1 + %t19 = icmp uge i64 %t16, %t18 + br i1 %t19, label %range1234, label %inrange1235 +range1234: + call void @finch_panic_index(ptr @.str.683, i64 176, i64 %t16, i64 %t18) unreachable -inrange1181: - %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.rend1182 -logic.rend1182: - br label %logic.end1175 -logic.end1175: - %t23 = phi i1 [ true, %logic.from1173 ], [ %t22, %logic.rend1182 ] - br label %logic.from1183 -logic.from1183: - br i1 %t23, label %logic.end1185, label %logic.rhs1184 -logic.rhs1184: - %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.679, 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.rend1186 -logic.rend1186: - br label %logic.end1185 -logic.end1185: - %t30 = phi i1 [ true, %logic.from1183 ], [ %t29, %logic.rend1186 ] - br i1 %t30, label %then1187, label %endif1189 -then1187: +inrange1235: + %t20 = extractvalue { ptr, i64, i64 } %t17, 0 + %t21 = getelementptr inbounds %S.lexer.Token, ptr %t20, i64 %t16 + %t22 = getelementptr inbounds %S.lexer.Token, ptr %t21, i32 0, i32 4 + %t23 = load i1, ptr %t22 + br label %logic.rend1236 +logic.rend1236: + br label %logic.end1229 +logic.end1229: + %t24 = phi i1 [ true, %logic.from1227 ], [ %t23, %logic.rend1236 ] + br label %logic.from1237 +logic.from1237: + br i1 %t24, label %logic.end1239, label %logic.rhs1238 +logic.rhs1238: + %t25 = load ptr, ptr %a1 + %t26 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t25, i64 2) + store { ptr, i64, i64 } %t26, ptr %a27 + store { ptr, i64, i64 } { ptr @.str.684, i64 1, i64 0 }, ptr %a28 + %t29 = call i32 @finch_str_eq(ptr %a27, ptr %a28) + %t30 = icmp ne i32 %t29, 0 + store { ptr, i64, i64 } %t26, ptr %a31 + call void @finch_str_drop(ptr %a31) + br label %logic.rend1240 +logic.rend1240: + br label %logic.end1239 +logic.end1239: + %t32 = phi i1 [ true, %logic.from1237 ], [ %t30, %logic.rend1240 ] + br i1 %t32, label %then1241, label %endif1243 +then1241: ret i1 false -endif1189: - store i64 0, ptr %a31 - %t32 = load ptr, ptr %a1 - %t33 = icmp eq ptr %t32, null - br i1 %t33, label %panic1190, label %ok1191 -panic1190: - call void @finch_panic(ptr @.str.680, i64 180, ptr @.str.681) +endif1243: + store i64 0, ptr %a33 + %t34 = load ptr, ptr %a1 + %t35 = icmp eq ptr %t34, null + br i1 %t35, label %panic1244, label %ok1245 +panic1244: + call void @finch_panic(ptr @.str.685, i64 180, ptr @.str.686) unreachable -ok1191: - %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.cond1192 -while.cond1192: - %t38 = load i64, ptr %a37 - %t39 = load ptr, ptr %a1 - %t40 = icmp eq ptr %t39, null - br i1 %t40, label %panic1195, label %ok1196 -panic1195: - call void @finch_panic(ptr @.str.682, i64 181, ptr @.str.683) +ok1245: + %t36 = getelementptr inbounds %S.parser.Parser, ptr %t34, i32 0, i32 1 + %t37 = load i64, ptr %t36 + %t38 = add i64 %t37, 1 + store i64 %t38, ptr %a39 + br label %while.cond1246 +while.cond1246: + %t40 = load i64, ptr %a39 + %t41 = load ptr, ptr %a1 + %t42 = icmp eq ptr %t41, null + br i1 %t42, label %panic1249, label %ok1250 +panic1249: + call void @finch_panic(ptr @.str.687, i64 181, ptr @.str.688) unreachable -ok1196: - %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.body1193, label %while.end1194 -while.body1193: - %t45 = load ptr, ptr %a1 - %t46 = icmp eq ptr %t45, null - br i1 %t46, label %panic1197, label %ok1198 -panic1197: - call void @finch_panic(ptr @.str.684, i64 182, ptr @.str.685) +ok1250: + %t43 = getelementptr inbounds %S.parser.Parser, ptr %t41, i32 0, i32 0 + %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t43, i32 0, i32 1 + %t45 = load i64, ptr %t44 + %t46 = icmp slt i64 %t40, %t45 + br i1 %t46, label %while.body1247, label %while.end1248 +while.body1247: + %t47 = load ptr, ptr %a1 + %t48 = icmp eq ptr %t47, null + br i1 %t48, label %panic1251, label %ok1252 +panic1251: + call void @finch_panic(ptr @.str.689, i64 182, ptr @.str.690) unreachable -ok1198: - %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 %range1199, label %inrange1200 -range1199: - call void @finch_panic_index(ptr @.str.686, i64 182, i64 %t48, i64 %t50) +ok1252: + %t49 = getelementptr inbounds %S.parser.Parser, ptr %t47, i32 0, i32 0 + %t50 = load i64, ptr %a39 + %t51 = load { ptr, i64, i64 }, ptr %t49 + %t52 = extractvalue { ptr, i64, i64 } %t51, 1 + %t53 = icmp uge i64 %t50, %t52 + br i1 %t53, label %range1253, label %inrange1254 +range1253: + call void @finch_panic_index(ptr @.str.691, i64 182, i64 %t50, i64 %t52) unreachable -inrange1200: - %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 - %t55 = load { ptr, i64, i64 }, ptr %t54 - store { ptr, i64, i64 } %t55, ptr %a56 - call void @finch_str_copy(ptr %a57, ptr %a56) - %t58 = load { ptr, i64, i64 }, ptr %a57 - store { ptr, i64, i64 } %t58, ptr %a59 +inrange1254: + %t54 = extractvalue { ptr, i64, i64 } %t51, 0 + %t55 = getelementptr inbounds %S.lexer.Token, ptr %t54, i64 %t50 + %t56 = getelementptr inbounds %S.lexer.Token, ptr %t55, i32 0, i32 0 + %t57 = load { ptr, i64, i64 }, ptr %t56 + store { ptr, i64, i64 } %t57, ptr %a58 + call void @finch_str_copy(ptr %a59, ptr %a58) %t60 = load { ptr, i64, i64 }, ptr %a59 store { ptr, i64, i64 } %t60, ptr %a61 - store { ptr, i64, i64 } { ptr @.str.687, 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 %then1201, label %else1202 -then1201: - %t65 = load i64, ptr %a31 - %t66 = add i64 %t65, 1 - store i64 %t66, ptr %a31 - br label %endif1203 -else1202: - %t67 = load { ptr, i64, i64 }, ptr %a59 - store { ptr, i64, i64 } %t67, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.688, 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 %then1204, label %else1205 -then1204: - %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 %then1207, label %endif1209 -then1207: - %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 %panic1210, label %ok1211 -panic1210: - call void @finch_panic(ptr @.str.689, i64 188, ptr @.str.690) + %t62 = load { ptr, i64, i64 }, ptr %a61 + store { ptr, i64, i64 } %t62, ptr %a63 + store { ptr, i64, i64 } { ptr @.str.692, i64 1, i64 0 }, ptr %a64 + %t65 = call i32 @finch_str_eq(ptr %a63, ptr %a64) + %t66 = icmp ne i32 %t65, 0 + br i1 %t66, label %then1255, label %else1256 +then1255: + %t67 = load i64, ptr %a33 + %t68 = add i64 %t67, 1 + store i64 %t68, ptr %a33 + br label %endif1257 +else1256: + %t69 = load { ptr, i64, i64 }, ptr %a61 + store { ptr, i64, i64 } %t69, ptr %a70 + store { ptr, i64, i64 } { ptr @.str.693, i64 1, i64 0 }, ptr %a71 + %t72 = call i32 @finch_str_eq(ptr %a70, ptr %a71) + %t73 = icmp ne i32 %t72, 0 + br i1 %t73, label %then1258, label %else1259 +then1258: + %t74 = load i64, ptr %a33 + %t75 = sub i64 %t74, 1 + store i64 %t75, ptr %a33 + %t76 = load i64, ptr %a33 + %t77 = icmp eq i64 %t76, 0 + br i1 %t77, label %then1261, label %endif1263 +then1261: + %t78 = load i64, ptr %a39 + %t79 = add i64 %t78, 1 + %t80 = load ptr, ptr %a1 + %t81 = icmp eq ptr %t80, null + br i1 %t81, label %panic1264, label %ok1265 +panic1264: + call void @finch_panic(ptr @.str.694, i64 188, ptr @.str.695) unreachable -ok1211: - %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.from1212 -logic.from1212: - br i1 %t83, label %logic.rhs1213, label %logic.end1214 -logic.rhs1213: - %t84 = load ptr, ptr %a1 - %t85 = icmp eq ptr %t84, null - br i1 %t85, label %panic1215, label %ok1216 -panic1215: - call void @finch_panic(ptr @.str.691, i64 188, ptr @.str.692) +ok1265: + %t82 = getelementptr inbounds %S.parser.Parser, ptr %t80, i32 0, i32 0 + %t83 = getelementptr inbounds { ptr, i64, i64 }, ptr %t82, i32 0, i32 1 + %t84 = load i64, ptr %t83 + %t85 = icmp slt i64 %t79, %t84 + br label %logic.from1266 +logic.from1266: + br i1 %t85, label %logic.rhs1267, label %logic.end1268 +logic.rhs1267: + %t86 = load ptr, ptr %a1 + %t87 = icmp eq ptr %t86, null + br i1 %t87, label %panic1269, label %ok1270 +panic1269: + call void @finch_panic(ptr @.str.696, i64 188, ptr @.str.697) unreachable -ok1216: - %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 %range1217, label %inrange1218 -range1217: - call void @finch_panic_index(ptr @.str.693, i64 188, i64 %t88, i64 %t90) +ok1270: + %t88 = getelementptr inbounds %S.parser.Parser, ptr %t86, i32 0, i32 0 + %t89 = load i64, ptr %a39 + %t90 = add i64 %t89, 1 + %t91 = load { ptr, i64, i64 }, ptr %t88 + %t92 = extractvalue { ptr, i64, i64 } %t91, 1 + %t93 = icmp uge i64 %t90, %t92 + br i1 %t93, label %range1271, label %inrange1272 +range1271: + call void @finch_panic_index(ptr @.str.698, i64 188, i64 %t90, i64 %t92) unreachable -inrange1218: - %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.694, 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.rend1219 -logic.rend1219: - br label %logic.end1214 -logic.end1214: - %t100 = phi i1 [ false, %logic.from1212 ], [ %t99, %logic.rend1219 ] - br label %logic.from1220 -logic.from1220: - br i1 %t100, label %logic.rhs1221, label %logic.end1222 -logic.rhs1221: - %t101 = load ptr, ptr %a1 - %t102 = icmp eq ptr %t101, null - br i1 %t102, label %panic1223, label %ok1224 -panic1223: - call void @finch_panic(ptr @.str.695, i64 188, ptr @.str.696) +inrange1272: + %t94 = extractvalue { ptr, i64, i64 } %t91, 0 + %t95 = getelementptr inbounds %S.lexer.Token, ptr %t94, i64 %t90 + %t96 = getelementptr inbounds %S.lexer.Token, ptr %t95, i32 0, i32 0 + %t97 = load { ptr, i64, i64 }, ptr %t96 + store { ptr, i64, i64 } %t97, ptr %a98 + store { ptr, i64, i64 } { ptr @.str.699, i64 1, i64 0 }, ptr %a99 + %t100 = call i32 @finch_str_eq(ptr %a98, ptr %a99) + %t101 = icmp ne i32 %t100, 0 + br label %logic.rend1273 +logic.rend1273: + br label %logic.end1268 +logic.end1268: + %t102 = phi i1 [ false, %logic.from1266 ], [ %t101, %logic.rend1273 ] + br label %logic.from1274 +logic.from1274: + br i1 %t102, label %logic.rhs1275, label %logic.end1276 +logic.rhs1275: + %t103 = load ptr, ptr %a1 + %t104 = icmp eq ptr %t103, null + br i1 %t104, label %panic1277, label %ok1278 +panic1277: + call void @finch_panic(ptr @.str.700, i64 188, ptr @.str.701) unreachable -ok1224: - %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 %range1225, label %inrange1226 -range1225: - call void @finch_panic_index(ptr @.str.697, i64 188, i64 %t105, i64 %t107) +ok1278: + %t105 = getelementptr inbounds %S.parser.Parser, ptr %t103, i32 0, i32 0 + %t106 = load i64, ptr %a39 + %t107 = add i64 %t106, 1 + %t108 = load { ptr, i64, i64 }, ptr %t105 + %t109 = extractvalue { ptr, i64, i64 } %t108, 1 + %t110 = icmp uge i64 %t107, %t109 + br i1 %t110, label %range1279, label %inrange1280 +range1279: + call void @finch_panic_index(ptr @.str.702, i64 188, i64 %t107, i64 %t109) unreachable -inrange1226: - %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.rend1227 -logic.rend1227: - br label %logic.end1222 -logic.end1222: - %t114 = phi i1 [ false, %logic.from1220 ], [ %t113, %logic.rend1227 ] - ret i1 %t114 -endif1209: - br label %endif1206 -else1205: - %t115 = load { ptr, i64, i64 }, ptr %a59 - store { ptr, i64, i64 } %t115, ptr %a116 - store { ptr, i64, i64 } { ptr @.str.698, 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.from1228 -logic.from1228: - br i1 %t119, label %logic.end1230, label %logic.rhs1229 -logic.rhs1229: - %t120 = load ptr, ptr %a1 - %t121 = icmp eq ptr %t120, null - br i1 %t121, label %panic1231, label %ok1232 -panic1231: - call void @finch_panic(ptr @.str.699, i64 190, ptr @.str.700) +inrange1280: + %t111 = extractvalue { ptr, i64, i64 } %t108, 0 + %t112 = getelementptr inbounds %S.lexer.Token, ptr %t111, i64 %t107 + %t113 = getelementptr inbounds %S.lexer.Token, ptr %t112, i32 0, i32 4 + %t114 = load i1, ptr %t113 + %t115 = xor i1 %t114, true + br label %logic.rend1281 +logic.rend1281: + br label %logic.end1276 +logic.end1276: + %t116 = phi i1 [ false, %logic.from1274 ], [ %t115, %logic.rend1281 ] + call void @finch_str_drop(ptr %a61) + ret i1 %t116 +endif1263: + br label %endif1260 +else1259: + %t117 = load { ptr, i64, i64 }, ptr %a61 + store { ptr, i64, i64 } %t117, ptr %a118 + store { ptr, i64, i64 } { ptr @.str.703, 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.from1282 +logic.from1282: + br i1 %t121, label %logic.end1284, label %logic.rhs1283 +logic.rhs1283: + %t122 = load ptr, ptr %a1 + %t123 = icmp eq ptr %t122, null + br i1 %t123, label %panic1285, label %ok1286 +panic1285: + call void @finch_panic(ptr @.str.704, i64 190, ptr @.str.705) unreachable -ok1232: - %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 %range1233, label %inrange1234 -range1233: - call void @finch_panic_index(ptr @.str.701, i64 190, i64 %t123, i64 %t125) +ok1286: + %t124 = getelementptr inbounds %S.parser.Parser, ptr %t122, i32 0, i32 0 + %t125 = load i64, ptr %a39 + %t126 = load { ptr, i64, i64 }, ptr %t124 + %t127 = extractvalue { ptr, i64, i64 } %t126, 1 + %t128 = icmp uge i64 %t125, %t127 + br i1 %t128, label %range1287, label %inrange1288 +range1287: + call void @finch_panic_index(ptr @.str.706, i64 190, i64 %t125, i64 %t127) unreachable -inrange1234: - %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.rend1235 -logic.rend1235: - br label %logic.end1230 -logic.end1230: - %t131 = phi i1 [ true, %logic.from1228 ], [ %t130, %logic.rend1235 ] - br i1 %t131, label %then1236, label %endif1238 -then1236: +inrange1288: + %t129 = extractvalue { ptr, i64, i64 } %t126, 0 + %t130 = getelementptr inbounds %S.lexer.Token, ptr %t129, i64 %t125 + %t131 = getelementptr inbounds %S.lexer.Token, ptr %t130, i32 0, i32 4 + %t132 = load i1, ptr %t131 + br label %logic.rend1289 +logic.rend1289: + br label %logic.end1284 +logic.end1284: + %t133 = phi i1 [ true, %logic.from1282 ], [ %t132, %logic.rend1289 ] + br i1 %t133, label %then1290, label %endif1292 +then1290: + call void @finch_str_drop(ptr %a61) ret i1 false -endif1238: - br label %endif1206 -endif1206: - br label %endif1203 -endif1203: - %t132 = load i64, ptr %a37 - %t133 = add i64 %t132, 1 - store i64 %t133, ptr %a37 - br label %while.cond1192 -while.end1194: +endif1292: + br label %endif1260 +endif1260: + br label %endif1257 +endif1257: + %t134 = load i64, ptr %a39 + %t135 = add i64 %t134, 1 + store i64 %t135, ptr %a39 + call void @finch_str_drop(ptr %a61) + br label %while.cond1246 +while.end1248: ret i1 false } @@ -15106,273 +16744,315 @@ entry: %a1 = alloca ptr, align 16 %a8 = alloca { ptr, i64, i64 }, align 16 %a9 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 + %a12 = alloca { ptr, i64, i64 }, align 16 + %a18 = alloca { ptr, i64, i64 }, align 16 %a20 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 + %a21 = 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 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 + %a44 = alloca { ptr, i64, i64 }, align 16 + %a46 = alloca %S.lexer.Token, align 16 + %a47 = alloca { ptr, i64, i64 }, align 16 + %a48 = alloca { ptr, i64, i64 }, align 16 + %a51 = alloca { ptr, i64, i64 }, align 16 %a55 = alloca { ptr, i64, i64 }, align 16 %a56 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 + %a58 = alloca %S.lexer.Token, align 16 + %a59 = alloca { ptr, i64, i64 }, align 16 + %a60 = alloca { ptr, i64, i64 }, align 16 + %a63 = 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 + %a72 = alloca { ptr, i64, i64 }, align 16 %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 + %a78 = alloca { ptr, i64, i64 }, align 16 + %a79 = alloca { ptr, i64, i64 }, align 16 + %a82 = alloca { ptr, i64, i64 }, align 16 + %a86 = alloca { ptr, i64, i64 }, align 16 + %a87 = alloca { ptr, i64, i64 }, align 16 + %a90 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 %t3 = call i1 @finch.parser.genericDeclAhead(ptr %t2) - br i1 %t3, label %then1239, label %endif1241 -then1239: + br i1 %t3, label %then1293, label %endif1295 +then1293: ret i1 true -endif1241: +endif1295: %t4 = load ptr, ptr %a1 - %t5 = call i1 @finch.parser.at(ptr %t4, { ptr, i64, i64 } { ptr @.str.702, i64 1, i64 0 }) - br i1 %t5, label %then1242, label %endif1244 -then1242: + %t5 = call i1 @finch.parser.at(ptr %t4, { ptr, i64, i64 } { ptr @.str.707, i64 1, i64 0 }) + br i1 %t5, label %then1296, label %endif1298 +then1296: %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.703, i64 1, i64 0 }, ptr %a9 + store { ptr, i64, i64 } { ptr @.str.708, i64 1, i64 0 }, ptr %a9 %t10 = call i32 @finch_str_eq(ptr %a8, ptr %a9) %t11 = icmp ne i32 %t10, 0 + store { ptr, i64, i64 } %t7, ptr %a12 + call void @finch_str_drop(ptr %a12) ret i1 %t11 -endif1244: - %t12 = load ptr, ptr %a1 - %t13 = call i1 @finch.parser.at(ptr %t12, { ptr, i64, i64 } { ptr @.str.704, i64 5, i64 0 }) - %t14 = xor i1 %t13, true - br i1 %t14, label %then1245, label %endif1247 -then1245: +endif1298: + %t13 = load ptr, ptr %a1 + %t14 = call i1 @finch.parser.at(ptr %t13, { ptr, i64, i64 } { ptr @.str.709, i64 5, i64 0 }) + %t15 = xor i1 %t14, true + br i1 %t15, label %then1299, label %endif1301 +then1299: ret i1 false -endif1247: - %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.705, 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 %then1248, label %endif1250 -then1248: - %t23 = load ptr, ptr %a1 - %t24 = icmp eq ptr %t23, null - br i1 %t24, label %panic1251, label %ok1252 -panic1251: - call void @finch_panic(ptr @.str.706, i64 210, ptr @.str.707) +endif1301: + %t16 = load ptr, ptr %a1 + %t17 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t16, i64 1) + 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.710, 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 %then1302, label %endif1304 +then1302: + %t24 = load ptr, ptr %a1 + %t25 = icmp eq ptr %t24, null + br i1 %t25, label %panic1305, label %ok1306 +panic1305: + call void @finch_panic(ptr @.str.711, i64 210, ptr @.str.712) unreachable -ok1252: - %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 %panic1253, label %ok1254 -panic1253: - call void @finch_panic(ptr @.str.708, i64 210, ptr @.str.709) +ok1306: + %t26 = getelementptr inbounds %S.parser.Parser, ptr %t24, i32 0, i32 0 + %t27 = load ptr, ptr %a1 + %t28 = icmp eq ptr %t27, null + br i1 %t28, label %panic1307, label %ok1308 +panic1307: + call void @finch_panic(ptr @.str.713, i64 210, ptr @.str.714) unreachable -ok1254: - %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 %range1255, label %inrange1256 -range1255: - call void @finch_panic_index(ptr @.str.710, i64 210, i64 %t30, i64 %t32) +ok1308: + %t29 = getelementptr inbounds %S.parser.Parser, ptr %t27, i32 0, i32 1 + %t30 = load i64, ptr %t29 + %t31 = add i64 %t30, 1 + %t32 = load { ptr, i64, i64 }, ptr %t26 + %t33 = extractvalue { ptr, i64, i64 } %t32, 1 + %t34 = icmp uge i64 %t31, %t33 + br i1 %t34, label %range1309, label %inrange1310 +range1309: + call void @finch_panic_index(ptr @.str.715, i64 210, i64 %t31, i64 %t33) unreachable -inrange1256: - %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 -endif1250: - %t39 = load ptr, ptr %a1 - %t40 = call %S.lexer.Token @finch.parser.cur(ptr %t39) - %t41 = extractvalue %S.lexer.Token %t40, 1 - store { ptr, i64, i64 } %t41, ptr %a42 - 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.711, 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.from1257 -logic.from1257: - br i1 %t48, label %logic.end1259, label %logic.rhs1258 -logic.rhs1258: - %t49 = load ptr, ptr %a1 - %t50 = call %S.lexer.Token @finch.parser.cur(ptr %t49) - %t51 = extractvalue %S.lexer.Token %t50, 1 - store { ptr, i64, i64 } %t51, ptr %a52 - call void @finch_str_copy(ptr %a53, ptr %a52) - %t54 = load { ptr, i64, i64 }, ptr %a53 +inrange1310: + %t35 = extractvalue { ptr, i64, i64 } %t32, 0 + %t36 = getelementptr inbounds %S.lexer.Token, ptr %t35, i64 %t31 + %t37 = getelementptr inbounds %S.lexer.Token, ptr %t36, i32 0, i32 4 + %t38 = load i1, ptr %t37 + %t39 = xor i1 %t38, true + call void @finch_str_drop(ptr %a18) + ret i1 %t39 +endif1304: + %t40 = load ptr, ptr %a1 + %t41 = call %S.lexer.Token @finch.parser.cur(ptr %t40) + %t42 = extractvalue %S.lexer.Token %t41, 1 + store { ptr, i64, i64 } %t42, ptr %a43 + call void @finch_str_copy(ptr %a44, ptr %a43) + %t45 = load { ptr, i64, i64 }, ptr %a44 + store %S.lexer.Token %t41, ptr %a46 + call void @finch.drop.S_lexer_Token(ptr %a46) + store { ptr, i64, i64 } %t45, ptr %a47 + store { ptr, i64, i64 } { ptr @.str.716, i64 3, i64 0 }, ptr %a48 + %t49 = call i32 @finch_str_eq(ptr %a47, ptr %a48) + %t50 = icmp ne i32 %t49, 0 + store { ptr, i64, i64 } %t45, ptr %a51 + call void @finch_str_drop(ptr %a51) + br label %logic.from1311 +logic.from1311: + br i1 %t50, label %logic.end1313, label %logic.rhs1312 +logic.rhs1312: + %t52 = load ptr, ptr %a1 + %t53 = call %S.lexer.Token @finch.parser.cur(ptr %t52) + %t54 = extractvalue %S.lexer.Token %t53, 1 store { ptr, i64, i64 } %t54, ptr %a55 - store { ptr, i64, i64 } { ptr @.str.712, 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.rend1260 -logic.rend1260: - br label %logic.end1259 -logic.end1259: - %t59 = phi i1 [ true, %logic.from1257 ], [ %t58, %logic.rend1260 ] - br label %logic.from1261 -logic.from1261: - br i1 %t59, label %logic.rhs1262, label %logic.end1263 -logic.rhs1262: - %t60 = load { ptr, i64, i64 }, ptr %a17 - store { ptr, i64, i64 } %t60, ptr %a61 - store { ptr, i64, i64 } { ptr @.str.713, 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.rend1264 -logic.rend1264: - br label %logic.end1263 -logic.end1263: - %t65 = phi i1 [ false, %logic.from1261 ], [ %t64, %logic.rend1264 ] - br i1 %t65, label %then1265, label %endif1267 -then1265: + call void @finch_str_copy(ptr %a56, ptr %a55) + %t57 = load { ptr, i64, i64 }, ptr %a56 + store %S.lexer.Token %t53, ptr %a58 + call void @finch.drop.S_lexer_Token(ptr %a58) + store { ptr, i64, i64 } %t57, ptr %a59 + store { ptr, i64, i64 } { ptr @.str.717, i64 3, i64 0 }, ptr %a60 + %t61 = call i32 @finch_str_eq(ptr %a59, ptr %a60) + %t62 = icmp ne i32 %t61, 0 + store { ptr, i64, i64 } %t57, ptr %a63 + call void @finch_str_drop(ptr %a63) + br label %logic.rend1314 +logic.rend1314: + br label %logic.end1313 +logic.end1313: + %t64 = phi i1 [ true, %logic.from1311 ], [ %t62, %logic.rend1314 ] + br label %logic.from1315 +logic.from1315: + br i1 %t64, label %logic.rhs1316, label %logic.end1317 +logic.rhs1316: + %t65 = load { ptr, i64, i64 }, ptr %a18 + store { ptr, i64, i64 } %t65, ptr %a66 + store { ptr, i64, i64 } { ptr @.str.718, i64 1, i64 0 }, ptr %a67 + %t68 = call i32 @finch_str_eq(ptr %a66, ptr %a67) + %t69 = icmp ne i32 %t68, 0 + br label %logic.rend1318 +logic.rend1318: + br label %logic.end1317 +logic.end1317: + %t70 = phi i1 [ false, %logic.from1315 ], [ %t69, %logic.rend1318 ] + br i1 %t70, label %then1319, label %endif1321 +then1319: + call void @finch_str_drop(ptr %a18) ret i1 true -endif1267: - %t66 = load { ptr, i64, i64 }, ptr %a17 - store { ptr, i64, i64 } %t66, ptr %a67 - store { ptr, i64, i64 } { ptr @.str.714, 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.from1268 -logic.from1268: - br i1 %t70, label %logic.rhs1269, label %logic.end1270 -logic.rhs1269: - %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.715, 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.rend1271 -logic.rend1271: - br label %logic.end1270 -logic.end1270: - %t77 = phi i1 [ false, %logic.from1268 ], [ %t76, %logic.rend1271 ] - br label %logic.from1272 -logic.from1272: - br i1 %t77, label %logic.rhs1273, label %logic.end1274 -logic.rhs1273: - %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.716, 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.rend1275 -logic.rend1275: - br label %logic.end1274 -logic.end1274: - %t84 = phi i1 [ false, %logic.from1272 ], [ %t83, %logic.rend1275 ] - br label %logic.from1276 -logic.from1276: - br i1 %t84, label %logic.rhs1277, label %logic.end1278 -logic.rhs1277: - %t85 = load ptr, ptr %a1 - %t86 = icmp eq ptr %t85, null - br i1 %t86, label %panic1279, label %ok1280 -panic1279: - call void @finch_panic(ptr @.str.717, i64 215, ptr @.str.718) +endif1321: + %t71 = load { ptr, i64, i64 }, ptr %a18 + store { ptr, i64, i64 } %t71, ptr %a72 + store { ptr, i64, i64 } { ptr @.str.719, i64 1, i64 0 }, ptr %a73 + %t74 = call i32 @finch_str_eq(ptr %a72, ptr %a73) + %t75 = icmp ne i32 %t74, 0 + br label %logic.from1322 +logic.from1322: + br i1 %t75, label %logic.rhs1323, label %logic.end1324 +logic.rhs1323: + %t76 = load ptr, ptr %a1 + %t77 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t76, i64 2) + store { ptr, i64, i64 } %t77, ptr %a78 + store { ptr, i64, i64 } { ptr @.str.720, i64 5, i64 0 }, ptr %a79 + %t80 = call i32 @finch_str_eq(ptr %a78, ptr %a79) + %t81 = icmp ne i32 %t80, 0 + store { ptr, i64, i64 } %t77, ptr %a82 + call void @finch_str_drop(ptr %a82) + br label %logic.rend1325 +logic.rend1325: + br label %logic.end1324 +logic.end1324: + %t83 = phi i1 [ false, %logic.from1322 ], [ %t81, %logic.rend1325 ] + br label %logic.from1326 +logic.from1326: + br i1 %t83, label %logic.rhs1327, label %logic.end1328 +logic.rhs1327: + %t84 = load ptr, ptr %a1 + %t85 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t84, i64 3) + store { ptr, i64, i64 } %t85, ptr %a86 + store { ptr, i64, i64 } { ptr @.str.721, i64 5, i64 0 }, ptr %a87 + %t88 = call i32 @finch_str_eq(ptr %a86, ptr %a87) + %t89 = icmp ne i32 %t88, 0 + store { ptr, i64, i64 } %t85, ptr %a90 + call void @finch_str_drop(ptr %a90) + br label %logic.rend1329 +logic.rend1329: + br label %logic.end1328 +logic.end1328: + %t91 = phi i1 [ false, %logic.from1326 ], [ %t89, %logic.rend1329 ] + br label %logic.from1330 +logic.from1330: + br i1 %t91, label %logic.rhs1331, label %logic.end1332 +logic.rhs1331: + %t92 = load ptr, ptr %a1 + %t93 = icmp eq ptr %t92, null + br i1 %t93, label %panic1333, label %ok1334 +panic1333: + call void @finch_panic(ptr @.str.722, i64 215, ptr @.str.723) unreachable -ok1280: - %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 %panic1281, label %ok1282 -panic1281: - call void @finch_panic(ptr @.str.719, i64 215, ptr @.str.720) +ok1334: + %t94 = getelementptr inbounds %S.parser.Parser, ptr %t92, i32 0, i32 0 + %t95 = load ptr, ptr %a1 + %t96 = icmp eq ptr %t95, null + br i1 %t96, label %panic1335, label %ok1336 +panic1335: + call void @finch_panic(ptr @.str.724, i64 215, ptr @.str.725) unreachable -ok1282: - %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 %range1283, label %inrange1284 -range1283: - call void @finch_panic_index(ptr @.str.721, i64 215, i64 %t92, i64 %t94) +ok1336: + %t97 = getelementptr inbounds %S.parser.Parser, ptr %t95, i32 0, i32 1 + %t98 = load i64, ptr %t97 + %t99 = add i64 %t98, 3 + %t100 = load { ptr, i64, i64 }, ptr %t94 + %t101 = extractvalue { ptr, i64, i64 } %t100, 1 + %t102 = icmp uge i64 %t99, %t101 + br i1 %t102, label %range1337, label %inrange1338 +range1337: + call void @finch_panic_index(ptr @.str.726, i64 215, i64 %t99, i64 %t101) unreachable -inrange1284: - %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.rend1285 -logic.rend1285: - br label %logic.end1278 -logic.end1278: - %t101 = phi i1 [ false, %logic.from1276 ], [ %t100, %logic.rend1285 ] - ret i1 %t101 +inrange1338: + %t103 = extractvalue { ptr, i64, i64 } %t100, 0 + %t104 = getelementptr inbounds %S.lexer.Token, ptr %t103, i64 %t99 + %t105 = getelementptr inbounds %S.lexer.Token, ptr %t104, i32 0, i32 4 + %t106 = load i1, ptr %t105 + %t107 = xor i1 %t106, true + br label %logic.rend1339 +logic.rend1339: + br label %logic.end1332 +logic.end1332: + %t108 = phi i1 [ false, %logic.from1330 ], [ %t107, %logic.rend1339 ] + call void @finch_str_drop(ptr %a18) + ret i1 %t108 } define internal void @finch.parser.endOfStatement(ptr %p0) { entry: %a1 = alloca ptr, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca %S.lexer.Token, align 16 + %a18 = alloca %S.lexer.Token, align 16 %a19 = 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 - %a23 = 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 + %a27 = alloca { ptr, i64, i64 }, align 16 + %a29 = alloca %S.lexer.Token, align 16 + %a30 = 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.722, i64 1, i64 0 }) - br label %logic.from1286 -logic.from1286: - br i1 %t3, label %logic.end1288, label %logic.rhs1287 -logic.rhs1287: + %t3 = call i1 @finch.parser.at(ptr %t2, { ptr, i64, i64 } { ptr @.str.727, i64 1, i64 0 }) + br label %logic.from1340 +logic.from1340: + br i1 %t3, label %logic.end1342, label %logic.rhs1341 +logic.rhs1341: %t4 = load ptr, ptr %a1 - %t5 = call i1 @finch.parser.at(ptr %t4, { ptr, i64, i64 } { ptr @.str.723, i64 3, i64 0 }) - br label %logic.rend1289 -logic.rend1289: - br label %logic.end1288 -logic.end1288: - %t6 = phi i1 [ true, %logic.from1286 ], [ %t5, %logic.rend1289 ] - br label %logic.from1290 -logic.from1290: - br i1 %t6, label %logic.end1292, label %logic.rhs1291 -logic.rhs1291: + %t5 = call i1 @finch.parser.at(ptr %t4, { ptr, i64, i64 } { ptr @.str.728, i64 3, i64 0 }) + br label %logic.rend1343 +logic.rend1343: + br label %logic.end1342 +logic.end1342: + %t6 = phi i1 [ true, %logic.from1340 ], [ %t5, %logic.rend1343 ] + br label %logic.from1344 +logic.from1344: + br i1 %t6, label %logic.end1346, label %logic.rhs1345 +logic.rhs1345: %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.rend1293 -logic.rend1293: - br label %logic.end1292 -logic.end1292: - %t10 = phi i1 [ true, %logic.from1290 ], [ %t9, %logic.rend1293 ] - br i1 %t10, label %then1294, label %endif1296 -then1294: + store %S.lexer.Token %t8, ptr %a10 + call void @finch.drop.S_lexer_Token(ptr %a10) + br label %logic.rend1347 +logic.rend1347: + br label %logic.end1346 +logic.end1346: + %t11 = phi i1 [ true, %logic.from1344 ], [ %t9, %logic.rend1347 ] + br i1 %t11, label %then1348, label %endif1350 +then1348: ret void -endif1296: - %t11 = load ptr, ptr %a1 +endif1350: %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.724, 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.725, 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) + %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 %S.lexer.Token %t16, ptr %a18 + call void @finch.drop.S_lexer_Token(ptr %a18) + store { ptr, i64, i64 } { ptr @.str.729, i64 11, i64 0 }, ptr %a20 + store { ptr, i64, i64 } %t17, ptr %a21 + call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) + store { ptr, i64, i64 } %t17, ptr %a22 + call void @finch_str_drop(ptr %a22) + %t23 = load { ptr, i64, i64 }, ptr %a19 + store { ptr, i64, i64 } %t23, ptr %a25 + store { ptr, i64, i64 } { ptr @.str.730, i64 37, i64 0 }, ptr %a26 + call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) + store { ptr, i64, i64 } %t23, ptr %a27 + call void @finch_str_drop(ptr %a27) + %t28 = load { ptr, i64, i64 }, ptr %a24 + call void @finch.parser.fail(ptr %t12, %S.lexer.Token %t14, { ptr, i64, i64 } %t28) + store %S.lexer.Token %t14, ptr %a29 + call void @finch.drop.S_lexer_Token(ptr %a29) + store { ptr, i64, i64 } %t28, ptr %a30 + call void @finch_str_drop(ptr %a30) ret void } @@ -15388,77 +17068,83 @@ entry: %a27 = 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 %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 %a33 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 + %a34 = alloca { ptr, i64, i64 }, align 16 + %a35 = alloca { ptr, i64, i64 }, align 16 + %a36 = alloca { ptr, i64, i64 }, align 16 %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca %S.lexer.Token, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 + %a42 = 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 + %a46 = alloca { ptr, i64, i64 }, align 16 + %a57 = alloca { ptr, i64, i64 }, align 16 + %a58 = alloca { ptr, i64, i64 }, align 16 + %a60 = alloca %S.lexer.Token, align 16 + %a75 = alloca { ptr, i64, i64 }, align 16 + %a76 = alloca { ptr, i64, i64 }, align 16 + %a78 = alloca %S.lexer.Token, align 16 + %a87 = alloca %S.lexer.Token, align 16 %a91 = alloca { ptr, i64, i64 }, align 16 + %a92 = alloca { ptr, i64, i64 }, align 16 + %a94 = alloca %S.lexer.Token, align 16 %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 %a97 = 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 - %a108 = alloca i1, align 16 + %a105 = 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 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 + %a116 = alloca i1, align 16 %a120 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 + %a121 = 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 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca %S.ast.Program, align 16 - %a174 = alloca %S.ast.Program, align 16 + %a128 = alloca { ptr, i64, i64 }, align 16 + %a133 = alloca { ptr, i64, i64 }, align 16 + %a134 = alloca { ptr, i64, i64 }, align 16 + %a135 = alloca { ptr, i64, i64 }, align 16 + %a145 = alloca { ptr, i64, i64 }, align 16 + %a146 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store %S.ast.Program zeroinitializer, ptr %a2 - br label %while.cond1297 -while.cond1297: + br label %while.cond1351 +while.cond1351: %t3 = load ptr, ptr %a1 - %t4 = call i1 @finch.parser.at(ptr %t3, { ptr, i64, i64 } { ptr @.str.726, i64 3, i64 0 }) + %t4 = call i1 @finch.parser.at(ptr %t3, { ptr, i64, i64 } { ptr @.str.731, i64 3, i64 0 }) %t5 = xor i1 %t4, true - br i1 %t5, label %while.body1298, label %while.end1299 -while.body1298: + br i1 %t5, label %while.body1352, label %while.end1353 +while.body1352: %t6 = load ptr, ptr %a1 - %t7 = call i1 @finch.parser.at(ptr %t6, { ptr, i64, i64 } { ptr @.str.727, i64 6, i64 0 }) - br i1 %t7, label %then1300, label %else1301 -then1300: + %t7 = call i1 @finch.parser.at(ptr %t6, { ptr, i64, i64 } { ptr @.str.732, i64 6, i64 0 }) + br i1 %t7, label %then1354, label %else1355 +then1354: %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.728, i64 6, i64 0 }) - br i1 %t12, label %then1303, label %else1304 -then1303: + %t12 = call i1 @finch.parser.at(ptr %t11, { ptr, i64, i64 } { ptr @.str.733, i64 6, i64 0 }) + br i1 %t12, label %then1357, label %else1358 +then1357: %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 %panic1306, label %ok1307 -panic1306: - call void @finch_panic(ptr @.str.729, i64 233, ptr @.str.730) + br i1 %t16, label %panic1360, label %ok1361 +panic1360: + call void @finch_panic(ptr @.str.734, i64 233, ptr @.str.735) unreachable -ok1307: +ok1361: %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.731, i64 1, i64 0 }, ptr %a21 + store { ptr, i64, i64 } { ptr @.str.736, 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 @@ -15468,224 +17154,230 @@ ok1307: store { ptr, i64, i64 } %t22, 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.732, 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 - %t36 = load i64, ptr %t35 - call void @finch_str_from_int(ptr %a37, i64 %t36) - %t38 = load { ptr, i64, i64 }, ptr %a37 - store { ptr, i64, i64 } %t34, 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 - %t43 = load i64, ptr %t14 - %t44 = add i64 %t43, 1 - call void @finch_arr_reserve(ptr %t13, i64 %t44, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t45 = load ptr, ptr %t13 - %t46 = getelementptr inbounds { ptr, i64, i64 }, ptr %t45, i64 %t43 - store { ptr, i64, i64 } %t42, ptr %t46 - store i64 %t44, ptr %t14 - %t47 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 3 - %t48 = getelementptr inbounds { ptr, i64, i64 }, ptr %t47, i32 0, i32 1 - %t49 = load ptr, ptr %a1 - %t50 = call %S.lexer.Token @finch.parser.next(ptr %t49) - %t51 = extractvalue %S.lexer.Token %t50, 1 - store { ptr, i64, i64 } %t51, ptr %a52 - call void @finch_str_copy(ptr %a53, ptr %a52) - %t54 = load { ptr, i64, i64 }, ptr %a53 - %t55 = load i64, ptr %t48 - %t56 = add i64 %t55, 1 - call void @finch_arr_reserve(ptr %t47, i64 %t56, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t57 = load ptr, ptr %t47 - %t58 = getelementptr inbounds { ptr, i64, i64 }, ptr %t57, i64 %t55 - store { ptr, i64, i64 } %t54, ptr %t58 - store i64 %t56, ptr %t48 - br label %endif1305 -else1304: - %t59 = load ptr, ptr %a1 - %t60 = call i1 @finch.parser.at(ptr %t59, { ptr, i64, i64 } { ptr @.str.733, i64 5, i64 0 }) - %t61 = xor i1 %t60, true - br i1 %t61, label %then1308, label %endif1310 -then1308: - %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.734, i64 51, i64 0 }) - br label %endif1310 -endif1310: - %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 - %t67 = call %S.lexer.Token @finch.parser.next(ptr %t66) - %t68 = extractvalue %S.lexer.Token %t67, 1 - store { ptr, i64, i64 } %t68, ptr %a69 - call void @finch_str_copy(ptr %a70, ptr %a69) - %t71 = load { ptr, i64, i64 }, ptr %a70 - %t72 = load i64, ptr %t65 - %t73 = add i64 %t72, 1 - call void @finch_arr_reserve(ptr %t64, i64 %t73, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t74 = load ptr, ptr %t64 - %t75 = getelementptr inbounds { ptr, i64, i64 }, ptr %t74, i64 %t72 - store { ptr, i64, i64 } %t71, ptr %t75 - store i64 %t73, ptr %t65 - br label %endif1305 -endif1305: - br label %endif1302 -else1301: - %t76 = load ptr, ptr %a1 - %t77 = call i1 @finch.parser.at(ptr %t76, { ptr, i64, i64 } { ptr @.str.735, i64 4, i64 0 }) - br i1 %t77, label %then1311, label %else1312 -then1311: - %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.736, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.737, 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) - %t86 = load { ptr, i64, i64 }, ptr %a85 - 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.739, 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.from1314 -logic.from1314: - br i1 %t93, label %logic.end1316, label %logic.rhs1315 -logic.rhs1315: - %t94 = load { ptr, i64, i64 }, ptr %a87 - store { ptr, i64, i64 } %t94, ptr %a95 - store { ptr, i64, i64 } { ptr @.str.741, 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.rend1317 -logic.rend1317: - br label %logic.end1316 -logic.end1316: - %t100 = phi i1 [ true, %logic.from1314 ], [ %t99, %logic.rend1317 ] - br label %logic.from1318 -logic.from1318: - br i1 %t100, label %logic.end1320, label %logic.rhs1319 -logic.rhs1319: - %t101 = load { ptr, i64, i64 }, ptr %a87 - store { ptr, i64, i64 } %t101, ptr %a102 - store { ptr, i64, i64 } { ptr @.str.743, 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.rend1321 -logic.rend1321: - br label %logic.end1320 -logic.end1320: - %t107 = phi i1 [ true, %logic.from1318 ], [ %t106, %logic.rend1321 ] - store i1 %t107, ptr %a108 - %t109 = load i1, ptr %a108 - %t110 = xor i1 %t109, true - br label %logic.from1322 -logic.from1322: - br i1 %t110, label %logic.rhs1323, label %logic.end1324 -logic.rhs1323: - %t111 = load { ptr, i64, i64 }, ptr %a87 - store { ptr, i64, i64 } %t111, ptr %a112 - store { ptr, i64, i64 } { ptr @.str.745, 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.from1325 -logic.from1325: - br i1 %t116, label %logic.end1327, label %logic.rhs1326 -logic.rhs1326: - %t117 = load { ptr, i64, i64 }, ptr %a87 - store { ptr, i64, i64 } %t117, ptr %a118 - store { ptr, i64, i64 } { ptr @.str.747, 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.rend1328 -logic.rend1328: - br label %logic.end1327 -logic.end1327: - %t123 = phi i1 [ true, %logic.from1325 ], [ %t122, %logic.rend1328 ] - br label %logic.from1329 -logic.from1329: - br i1 %t123, label %logic.end1331, label %logic.rhs1330 -logic.rhs1330: - %t124 = load { ptr, i64, i64 }, ptr %a87 - store { ptr, i64, i64 } %t124, ptr %a125 - store { ptr, i64, i64 } { ptr @.str.749, 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.rend1332 -logic.rend1332: - br label %logic.end1331 -logic.end1331: - %t130 = phi i1 [ true, %logic.from1329 ], [ %t129, %logic.rend1332 ] - br label %logic.rend1333 -logic.rend1333: - br label %logic.end1324 -logic.end1324: - %t131 = phi i1 [ false, %logic.from1322 ], [ %t130, %logic.rend1333 ] - br i1 %t131, label %then1334, label %endif1336 -then1334: - %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.750, i64 65, i64 0 }) - br label %endif1336 -endif1336: - %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 - store { ptr, i64, i64 } %t136, ptr %a137 - call void @finch_str_copy(ptr %a138, ptr %a137) - %t139 = load { ptr, i64, i64 }, ptr %a138 - %t140 = load i64, ptr %t135 - %t141 = add i64 %t140, 1 - call void @finch_arr_reserve(ptr %t134, i64 %t141, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t142 = load ptr, ptr %t134 - %t143 = getelementptr inbounds { ptr, i64, i64 }, ptr %t142, i64 %t140 - store { ptr, i64, i64 } %t139, ptr %t143 - store i64 %t141, ptr %t135 - br label %endif1313 -else1312: - %t144 = load ptr, ptr %a1 - %t145 = call i1 @finch.parser.at(ptr %t144, { ptr, i64, i64 } { ptr @.str.751, i64 6, i64 0 }) - br i1 %t145, label %then1337, label %else1338 -then1337: - %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 - %t149 = call %S.ast.Node @finch.parser.parseStruct(ptr %t148) - %t150 = load i64, ptr %t147 - %t151 = add i64 %t150, 1 - call void @finch_arr_reserve(ptr %t146, i64 %t151, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t152 = load ptr, ptr %t146 - %t153 = getelementptr inbounds %S.ast.Node, ptr %t152, i64 %t150 - store %S.ast.Node %t149, ptr %t153 - store i64 %t151, ptr %t147 - br label %endif1339 -else1338: - %t154 = load ptr, ptr %a1 - %t155 = call i1 @finch.parser.at(ptr %t154, { ptr, i64, i64 } { ptr @.str.752, i64 4, i64 0 }) - br i1 %t155, label %then1340, label %else1341 -then1340: - %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 - %t159 = call %S.ast.Node @finch.parser.parseEnum(ptr %t158) - %t160 = load i64, ptr %t157 - %t161 = add i64 %t160, 1 - call void @finch_arr_reserve(ptr %t156, i64 %t161, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t162 = load ptr, ptr %t156 - %t163 = getelementptr inbounds %S.ast.Node, ptr %t162, i64 %t160 - store %S.ast.Node %t159, ptr %t163 - store i64 %t161, ptr %t157 - br label %endif1342 -else1341: - %t164 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 8 + store { ptr, i64, i64 } %t22, ptr %a30 + call void @finch_str_drop(ptr %a30) + store { ptr, i64, i64 } %t26, ptr %a31 + call void @finch_str_drop(ptr %a31) + %t32 = load { ptr, i64, i64 }, ptr %a27 + store { ptr, i64, i64 } %t32, ptr %a34 + store { ptr, i64, i64 } { ptr @.str.737, i64 1, i64 0 }, ptr %a35 + call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) + store { ptr, i64, i64 } %t32, ptr %a36 + call void @finch_str_drop(ptr %a36) + %t37 = load { ptr, i64, i64 }, ptr %a33 + %t38 = getelementptr inbounds %S.lexer.Token, ptr %a10, i32 0, i32 3 + %t39 = load i64, ptr %t38 + call void @finch_str_from_int(ptr %a40, i64 %t39) + %t41 = load { ptr, i64, i64 }, ptr %a40 + store { ptr, i64, i64 } %t37, ptr %a43 + store { ptr, i64, i64 } %t41, ptr %a44 + call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) + store { ptr, i64, i64 } %t37, ptr %a45 + call void @finch_str_drop(ptr %a45) + store { ptr, i64, i64 } %t41, ptr %a46 + call void @finch_str_drop(ptr %a46) + %t47 = load { ptr, i64, i64 }, ptr %a42 + %t48 = load i64, ptr %t14 + %t49 = add i64 %t48, 1 + call void @finch_arr_reserve(ptr %t13, i64 %t49, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t50 = load ptr, ptr %t13 + %t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %t50, i64 %t48 + store { ptr, i64, i64 } %t47, ptr %t51 + store i64 %t49, ptr %t14 + %t52 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 3 + %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %t52, i32 0, i32 1 + %t54 = load ptr, ptr %a1 + %t55 = call %S.lexer.Token @finch.parser.next(ptr %t54) + %t56 = extractvalue %S.lexer.Token %t55, 1 + store { ptr, i64, i64 } %t56, ptr %a57 + call void @finch_str_copy(ptr %a58, ptr %a57) + %t59 = load { ptr, i64, i64 }, ptr %a58 + store %S.lexer.Token %t55, ptr %a60 + call void @finch.drop.S_lexer_Token(ptr %a60) + %t61 = load i64, ptr %t53 + %t62 = add i64 %t61, 1 + call void @finch_arr_reserve(ptr %t52, i64 %t62, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t63 = load ptr, ptr %t52 + %t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %t63, i64 %t61 + store { ptr, i64, i64 } %t59, ptr %t64 + store i64 %t62, ptr %t53 + br label %endif1359 +else1358: + %t65 = load ptr, ptr %a1 + %t66 = call i1 @finch.parser.at(ptr %t65, { ptr, i64, i64 } { ptr @.str.738, i64 5, i64 0 }) + %t67 = xor i1 %t66, true + br i1 %t67, label %then1362, label %endif1364 +then1362: + %t68 = load ptr, ptr %a1 + %t69 = load %S.lexer.Token, ptr %a10 + call void @finch.parser.fail(ptr %t68, %S.lexer.Token %t69, { ptr, i64, i64 } { ptr @.str.739, i64 51, i64 0 }) + br label %endif1364 +endif1364: + %t70 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 2 + %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %t70, i32 0, i32 1 + %t72 = load ptr, ptr %a1 + %t73 = call %S.lexer.Token @finch.parser.next(ptr %t72) + %t74 = extractvalue %S.lexer.Token %t73, 1 + store { ptr, i64, i64 } %t74, ptr %a75 + call void @finch_str_copy(ptr %a76, ptr %a75) + %t77 = load { ptr, i64, i64 }, ptr %a76 + store %S.lexer.Token %t73, ptr %a78 + call void @finch.drop.S_lexer_Token(ptr %a78) + %t79 = load i64, ptr %t71 + %t80 = add i64 %t79, 1 + call void @finch_arr_reserve(ptr %t70, i64 %t80, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t81 = load ptr, ptr %t70 + %t82 = getelementptr inbounds { ptr, i64, i64 }, ptr %t81, i64 %t79 + store { ptr, i64, i64 } %t77, ptr %t82 + store i64 %t80, ptr %t71 + br label %endif1359 +endif1359: + call void @finch.drop.S_lexer_Token(ptr %a10) + br label %endif1356 +else1355: + %t83 = load ptr, ptr %a1 + %t84 = call i1 @finch.parser.at(ptr %t83, { ptr, i64, i64 } { ptr @.str.740, i64 4, i64 0 }) + br i1 %t84, label %then1365, label %else1366 +then1365: + %t85 = load ptr, ptr %a1 + %t86 = call %S.lexer.Token @finch.parser.next(ptr %t85) + store %S.lexer.Token %t86, ptr %a87 + %t88 = load ptr, ptr %a1 + %t89 = call %S.lexer.Token @finch.parser.expect(ptr %t88, { ptr, i64, i64 } { ptr @.str.741, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.742, i64 42, i64 0 }) + %t90 = extractvalue %S.lexer.Token %t89, 1 + store { ptr, i64, i64 } %t90, ptr %a91 + call void @finch_str_copy(ptr %a92, ptr %a91) + %t93 = load { ptr, i64, i64 }, ptr %a92 + store %S.lexer.Token %t89, ptr %a94 + call void @finch.drop.S_lexer_Token(ptr %a94) + store { ptr, i64, i64 } %t93, ptr %a95 + %t96 = load { ptr, i64, i64 }, ptr %a95 + store { ptr, i64, i64 } %t96, ptr %a97 + store { ptr, i64, i64 } { ptr @.str.744, i64 2, i64 0 }, ptr %a99 + %t100 = call i32 @finch_str_ends(ptr %a97, ptr %a99) + %t101 = icmp ne i32 %t100, 0 + br label %logic.from1368 +logic.from1368: + br i1 %t101, label %logic.end1370, label %logic.rhs1369 +logic.rhs1369: + %t102 = load { ptr, i64, i64 }, ptr %a95 + store { ptr, i64, i64 } %t102, ptr %a103 + store { ptr, i64, i64 } { ptr @.str.746, i64 2, i64 0 }, ptr %a105 + %t106 = call i32 @finch_str_ends(ptr %a103, ptr %a105) + %t107 = icmp ne i32 %t106, 0 + br label %logic.rend1371 +logic.rend1371: + br label %logic.end1370 +logic.end1370: + %t108 = phi i1 [ true, %logic.from1368 ], [ %t107, %logic.rend1371 ] + br label %logic.from1372 +logic.from1372: + br i1 %t108, label %logic.end1374, label %logic.rhs1373 +logic.rhs1373: + %t109 = load { ptr, i64, i64 }, ptr %a95 + store { ptr, i64, i64 } %t109, ptr %a110 + store { ptr, i64, i64 } { ptr @.str.748, i64 2, i64 0 }, ptr %a112 + %t113 = call i32 @finch_str_ends(ptr %a110, ptr %a112) + %t114 = icmp ne i32 %t113, 0 + br label %logic.rend1375 +logic.rend1375: + br label %logic.end1374 +logic.end1374: + %t115 = phi i1 [ true, %logic.from1372 ], [ %t114, %logic.rend1375 ] + store i1 %t115, ptr %a116 + %t117 = load i1, ptr %a116 + %t118 = xor i1 %t117, true + br label %logic.from1376 +logic.from1376: + br i1 %t118, label %logic.rhs1377, label %logic.end1378 +logic.rhs1377: + %t119 = load { ptr, i64, i64 }, ptr %a95 + store { ptr, i64, i64 } %t119, ptr %a120 + store { ptr, i64, i64 } { ptr @.str.750, i64 3, i64 0 }, ptr %a122 + %t123 = call i32 @finch_str_starts(ptr %a120, ptr %a122) + %t124 = icmp ne i32 %t123, 0 + br label %logic.from1379 +logic.from1379: + br i1 %t124, label %logic.end1381, label %logic.rhs1380 +logic.rhs1380: + %t125 = load { ptr, i64, i64 }, ptr %a95 + store { ptr, i64, i64 } %t125, ptr %a126 + store { ptr, i64, i64 } { ptr @.str.752, i64 3, i64 0 }, ptr %a128 + %t129 = call i64 @finch_str_find(ptr %a126, ptr %a128) + %t130 = icmp sge i64 %t129, 0 + br label %logic.rend1382 +logic.rend1382: + br label %logic.end1381 +logic.end1381: + %t131 = phi i1 [ true, %logic.from1379 ], [ %t130, %logic.rend1382 ] + br label %logic.from1383 +logic.from1383: + br i1 %t131, label %logic.end1385, label %logic.rhs1384 +logic.rhs1384: + %t132 = load { ptr, i64, i64 }, ptr %a95 + store { ptr, i64, i64 } %t132, ptr %a133 + store { ptr, i64, i64 } { ptr @.str.754, i64 1, i64 0 }, ptr %a135 + %t136 = call i64 @finch_str_find(ptr %a133, ptr %a135) + %t137 = icmp sge i64 %t136, 0 + br label %logic.rend1386 +logic.rend1386: + br label %logic.end1385 +logic.end1385: + %t138 = phi i1 [ true, %logic.from1383 ], [ %t137, %logic.rend1386 ] + br label %logic.rend1387 +logic.rend1387: + br label %logic.end1378 +logic.end1378: + %t139 = phi i1 [ false, %logic.from1376 ], [ %t138, %logic.rend1387 ] + br i1 %t139, label %then1388, label %endif1390 +then1388: + %t140 = load ptr, ptr %a1 + %t141 = load %S.lexer.Token, ptr %a87 + call void @finch.parser.fail(ptr %t140, %S.lexer.Token %t141, { ptr, i64, i64 } { ptr @.str.755, i64 65, i64 0 }) + br label %endif1390 +endif1390: + %t142 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 5 + %t143 = getelementptr inbounds { ptr, i64, i64 }, ptr %t142, i32 0, i32 1 + %t144 = load { ptr, i64, i64 }, ptr %a95 + store { ptr, i64, i64 } %t144, ptr %a145 + call void @finch_str_copy(ptr %a146, ptr %a145) + %t147 = load { ptr, i64, i64 }, ptr %a146 + %t148 = load i64, ptr %t143 + %t149 = add i64 %t148, 1 + call void @finch_arr_reserve(ptr %t142, i64 %t149, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t150 = load ptr, ptr %t142 + %t151 = getelementptr inbounds { ptr, i64, i64 }, ptr %t150, i64 %t148 + store { ptr, i64, i64 } %t147, ptr %t151 + store i64 %t149, ptr %t143 + call void @finch_str_drop(ptr %a95) + call void @finch.drop.S_lexer_Token(ptr %a87) + br label %endif1367 +else1366: + %t152 = load ptr, ptr %a1 + %t153 = call i1 @finch.parser.at(ptr %t152, { ptr, i64, i64 } { ptr @.str.756, i64 6, i64 0 }) + br i1 %t153, label %then1391, label %else1392 +then1391: + %t154 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 6 + %t155 = getelementptr inbounds { ptr, i64, i64 }, ptr %t154, i32 0, i32 1 + %t156 = load ptr, ptr %a1 + %t157 = call %S.ast.Node @finch.parser.parseStruct(ptr %t156) + %t158 = load i64, ptr %t155 + %t159 = add i64 %t158, 1 + call void @finch_arr_reserve(ptr %t154, i64 %t159, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t160 = load ptr, ptr %t154 + %t161 = getelementptr inbounds %S.ast.Node, ptr %t160, i64 %t158 + store %S.ast.Node %t157, ptr %t161 + store i64 %t159, ptr %t155 + br label %endif1393 +else1392: + %t162 = load ptr, ptr %a1 + %t163 = call i1 @finch.parser.at(ptr %t162, { ptr, i64, i64 } { ptr @.str.757, i64 4, i64 0 }) + br i1 %t163, label %then1394, label %else1395 +then1394: + %t164 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 7 %t165 = getelementptr inbounds { ptr, i64, i64 }, ptr %t164, i32 0, i32 1 %t166 = load ptr, ptr %a1 - %t167 = call %S.ast.Node @finch.parser.parseFn(ptr %t166) + %t167 = call %S.ast.Node @finch.parser.parseEnum(ptr %t166) %t168 = load i64, ptr %t165 %t169 = add i64 %t168, 1 call void @finch_arr_reserve(ptr %t164, i64 %t169, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) @@ -15693,172 +17385,228 @@ else1341: %t171 = getelementptr inbounds %S.ast.Node, ptr %t170, i64 %t168 store %S.ast.Node %t167, ptr %t171 store i64 %t169, ptr %t165 - br label %endif1342 -endif1342: - br label %endif1339 -endif1339: - br label %endif1313 -endif1313: - br label %endif1302 -endif1302: - br label %while.cond1297 -while.end1299: - %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) - %t175 = load %S.ast.Program, ptr %a174 - ret %S.ast.Program %t175 + br label %endif1396 +else1395: + %t172 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 8 + %t173 = getelementptr inbounds { ptr, i64, i64 }, ptr %t172, i32 0, i32 1 + %t174 = load ptr, ptr %a1 + %t175 = call %S.ast.Node @finch.parser.parseFn(ptr %t174) + %t176 = load i64, ptr %t173 + %t177 = add i64 %t176, 1 + call void @finch_arr_reserve(ptr %t172, i64 %t177, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t178 = load ptr, ptr %t172 + %t179 = getelementptr inbounds %S.ast.Node, ptr %t178, i64 %t176 + store %S.ast.Node %t175, ptr %t179 + store i64 %t177, ptr %t173 + br label %endif1396 +endif1396: + br label %endif1393 +endif1393: + br label %endif1367 +endif1367: + br label %endif1356 +endif1356: + br label %while.cond1351 +while.end1353: + %t180 = load %S.ast.Program, ptr %a2 + ret %S.ast.Program %t180 } define internal %S.ast.Node @finch.parser.parseEnum(ptr %p0) { entry: %a1 = alloca ptr, align 16 %a4 = alloca %S.ast.Node, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 + %a7 = alloca %S.lexer.Token, align 16 %a11 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca %S.ast.Node, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 + %a12 = alloca { ptr, i64, i64 }, align 16 + %a14 = alloca %S.lexer.Token, align 16 + %a17 = alloca { ptr, i64, i64 }, align 16 + %a20 = alloca %S.lexer.Token, align 16 + %a29 = alloca %S.lexer.Token, align 16 + %a32 = alloca %S.ast.Node, align 16 %a36 = 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 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca %S.ast.Node, align 16 - %a55 = alloca %S.ast.Node, 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 - %a85 = alloca %S.ast.Node, align 16 - %a86 = alloca %S.ast.Node, align 16 + %a37 = alloca { ptr, i64, i64 }, align 16 + %a39 = alloca %S.lexer.Token, align 16 + %a42 = alloca { ptr, i64, i64 }, align 16 + %a45 = alloca { ptr, i64, i64 }, align 16 + %a49 = alloca { ptr, i64, i64 }, align 16 + %a54 = alloca { ptr, i64, i64 }, align 16 + %a55 = alloca { ptr, i64, i64 }, align 16 + %a57 = alloca %S.lexer.Token, align 16 + %a58 = 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 + %a65 = alloca { ptr, i64, i64 }, align 16 + %a69 = alloca %S.ast.Node, align 16 + %a70 = alloca %S.ast.Node, align 16 + %a82 = alloca %S.lexer.Token, 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 + %a99 = alloca { ptr, i64, i64 }, align 16 + %a101 = alloca %S.lexer.Token, align 16 + %a102 = alloca { ptr, i64, i64 }, 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.753, i64 4, i64 0 }) + %t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.758, 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.754, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.755, i64 6, i64 0 }) - %t7 = load ptr, ptr %a1 - %t8 = call %S.lexer.Token @finch.parser.expect(ptr %t7, { ptr, i64, i64 } { ptr @.str.756, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.757, 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) - %t12 = load { ptr, i64, i64 }, ptr %a11 - %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.758, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.759, i64 3, i64 0 }) - br label %while.cond1343 -while.cond1343: - %t16 = load ptr, ptr %a1 - %t17 = call i1 @finch.parser.at(ptr %t16, { ptr, i64, i64 } { ptr @.str.760, i64 1, i64 0 }) - %t18 = xor i1 %t17, true - br i1 %t18, label %while.body1344, label %while.end1345 -while.body1344: - %t19 = load ptr, ptr %a1 - %t20 = call i1 @finch.parser.at(ptr %t19, { ptr, i64, i64 } { ptr @.str.761, i64 3, i64 0 }) - br i1 %t20, label %then1346, label %endif1348 -then1346: + %t6 = call %S.lexer.Token @finch.parser.expect(ptr %t5, { ptr, i64, i64 } { ptr @.str.759, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.760, i64 6, i64 0 }) + store %S.lexer.Token %t6, ptr %a7 + call void @finch.drop.S_lexer_Token(ptr %a7) + %t8 = load ptr, ptr %a1 + %t9 = call %S.lexer.Token @finch.parser.expect(ptr %t8, { ptr, i64, i64 } { ptr @.str.761, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.762, i64 12, i64 0 }) + %t10 = extractvalue %S.lexer.Token %t9, 1 + store { ptr, i64, i64 } %t10, ptr %a11 + call void @finch_str_copy(ptr %a12, ptr %a11) + %t13 = load { ptr, i64, i64 }, ptr %a12 + store %S.lexer.Token %t9, ptr %a14 + call void @finch.drop.S_lexer_Token(ptr %a14) + %t15 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 1 + %t16 = load { ptr, i64, i64 }, ptr %t15 + store { ptr, i64, i64 } %t13, ptr %t15 + store { ptr, i64, i64 } %t16, ptr %a17 + call void @finch_str_drop(ptr %a17) + %t18 = load ptr, ptr %a1 + %t19 = call %S.lexer.Token @finch.parser.expect(ptr %t18, { ptr, i64, i64 } { ptr @.str.763, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.764, i64 3, i64 0 }) + store %S.lexer.Token %t19, ptr %a20 + call void @finch.drop.S_lexer_Token(ptr %a20) + br label %while.cond1397 +while.cond1397: %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.762, i64 37, i64 0 }) - br label %endif1348 -endif1348: + %t22 = call i1 @finch.parser.at(ptr %t21, { ptr, i64, i64 } { ptr @.str.765, i64 1, i64 0 }) + %t23 = xor i1 %t22, true + br i1 %t23, label %while.body1398, label %while.end1399 +while.body1398: %t24 = load ptr, ptr %a1 - %t25 = call %S.ast.Node @finch.parser.node(ptr %t24, { ptr, i64, i64 } { ptr @.str.763, i64 7, i64 0 }) - store %S.ast.Node %t25, ptr %a26 + %t25 = call i1 @finch.parser.at(ptr %t24, { ptr, i64, i64 } { ptr @.str.766, i64 3, i64 0 }) + br i1 %t25, label %then1400, label %endif1402 +then1400: + %t26 = load ptr, ptr %a1 %t27 = load ptr, ptr %a1 - %t28 = call %S.lexer.Token @finch.parser.expect(ptr %t27, { ptr, i64, i64 } { ptr @.str.764, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.765, 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) - %t32 = load { ptr, i64, i64 }, ptr %a31 - %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.766, i64 1, i64 0 }) - br i1 %t35, label %then1349, label %endif1351 -then1349: - store { ptr, i64, i64 } { ptr @.str.767, i64 0, i64 0 }, ptr %a36 - %t37 = load ptr, ptr %a1 - %t38 = call i1 @finch.parser.accept(ptr %t37, { ptr, i64, i64 } { ptr @.str.768, i64 1, i64 0 }) - br i1 %t38, label %then1352, label %endif1354 -then1352: - store { ptr, i64, i64 } { ptr @.str.769, i64 1, i64 0 }, ptr %a36 - br label %endif1354 -endif1354: - %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.770, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.771, 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) - %t45 = load { ptr, i64, i64 }, ptr %a44 - store { ptr, i64, i64 } %t39, ptr %a47 - store { ptr, i64, i64 } %t45, ptr %a48 - call void @finch_str_concat(ptr %a46, ptr %a47, ptr %a48) - %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 %endif1351 -endif1351: - %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 - store %S.ast.Node %t53, ptr %a54 - call void @finch.copy.S_ast_Node(ptr %a55, ptr %a54) - %t56 = load %S.ast.Node, ptr %a55 - %t57 = load i64, ptr %t52 - %t58 = add i64 %t57, 1 - call void @finch_arr_reserve(ptr %t51, i64 %t58, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t59 = load ptr, ptr %t51 - %t60 = getelementptr inbounds %S.ast.Node, ptr %t59, i64 %t57 - 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.772, i64 1, i64 0 }) - %t63 = xor i1 %t62, true - br i1 %t63, label %then1355, label %endif1357 -then1355: - %t64 = load ptr, ptr %a1 - call void @finch.parser.endOfStatement(ptr %t64) - br label %endif1357 -endif1357: - br label %while.cond1343 -while.end1345: - %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 %then1358, label %endif1360 -then1358: - %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.773, 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.774, 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 %endif1360 -endif1360: - %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) - %t87 = load %S.ast.Node, ptr %a86 - ret %S.ast.Node %t87 + %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.767, i64 37, i64 0 }) + store %S.lexer.Token %t28, ptr %a29 + call void @finch.drop.S_lexer_Token(ptr %a29) + br label %endif1402 +endif1402: + %t30 = load ptr, ptr %a1 + %t31 = call %S.ast.Node @finch.parser.node(ptr %t30, { ptr, i64, i64 } { ptr @.str.768, i64 7, i64 0 }) + store %S.ast.Node %t31, ptr %a32 + %t33 = load ptr, ptr %a1 + %t34 = call %S.lexer.Token @finch.parser.expect(ptr %t33, { ptr, i64, i64 } { ptr @.str.769, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.770, i64 24, i64 0 }) + %t35 = extractvalue %S.lexer.Token %t34, 1 + store { ptr, i64, i64 } %t35, ptr %a36 + call void @finch_str_copy(ptr %a37, ptr %a36) + %t38 = load { ptr, i64, i64 }, ptr %a37 + store %S.lexer.Token %t34, ptr %a39 + call void @finch.drop.S_lexer_Token(ptr %a39) + %t40 = getelementptr inbounds %S.ast.Node, ptr %a32, i32 0, i32 1 + %t41 = load { ptr, i64, i64 }, ptr %t40 + store { ptr, i64, i64 } %t38, ptr %t40 + store { ptr, i64, i64 } %t41, ptr %a42 + call void @finch_str_drop(ptr %a42) + %t43 = load ptr, ptr %a1 + %t44 = call i1 @finch.parser.accept(ptr %t43, { ptr, i64, i64 } { ptr @.str.771, i64 1, i64 0 }) + br i1 %t44, label %then1403, label %endif1405 +then1403: + store { ptr, i64, i64 } { ptr @.str.772, i64 0, i64 0 }, ptr %a45 + %t46 = load ptr, ptr %a1 + %t47 = call i1 @finch.parser.accept(ptr %t46, { ptr, i64, i64 } { ptr @.str.773, i64 1, i64 0 }) + br i1 %t47, label %then1406, label %endif1408 +then1406: + %t48 = load { ptr, i64, i64 }, ptr %a45 + store { ptr, i64, i64 } { ptr @.str.774, i64 1, i64 0 }, ptr %a45 + store { ptr, i64, i64 } %t48, ptr %a49 + call void @finch_str_drop(ptr %a49) + br label %endif1408 +endif1408: + %t50 = load { ptr, i64, i64 }, ptr %a45 + %t51 = load ptr, ptr %a1 + %t52 = call %S.lexer.Token @finch.parser.expect(ptr %t51, { ptr, i64, i64 } { ptr @.str.775, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.776, i64 30, i64 0 }) + %t53 = extractvalue %S.lexer.Token %t52, 1 + store { ptr, i64, i64 } %t53, ptr %a54 + call void @finch_str_copy(ptr %a55, ptr %a54) + %t56 = load { ptr, i64, i64 }, ptr %a55 + store %S.lexer.Token %t52, ptr %a57 + call void @finch.drop.S_lexer_Token(ptr %a57) + store { ptr, i64, i64 } %t50, ptr %a59 + store { ptr, i64, i64 } %t56, ptr %a60 + call void @finch_str_concat(ptr %a58, ptr %a59, ptr %a60) + store { ptr, i64, i64 } %t56, ptr %a61 + call void @finch_str_drop(ptr %a61) + %t62 = load { ptr, i64, i64 }, ptr %a58 + %t63 = getelementptr inbounds %S.ast.Node, ptr %a32, i32 0, i32 4 + %t64 = load { ptr, i64, i64 }, ptr %t63 + store { ptr, i64, i64 } %t62, ptr %t63 + store { ptr, i64, i64 } %t64, ptr %a65 + call void @finch_str_drop(ptr %a65) + call void @finch_str_drop(ptr %a45) + br label %endif1405 +endif1405: + %t66 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 + %t67 = getelementptr inbounds { ptr, i64, i64 }, ptr %t66, i32 0, i32 1 + %t68 = load %S.ast.Node, ptr %a32 + store %S.ast.Node %t68, ptr %a69 + call void @finch.copy.S_ast_Node(ptr %a70, ptr %a69) + %t71 = load %S.ast.Node, ptr %a70 + %t72 = load i64, ptr %t67 + %t73 = add i64 %t72, 1 + call void @finch_arr_reserve(ptr %t66, i64 %t73, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t74 = load ptr, ptr %t66 + %t75 = getelementptr inbounds %S.ast.Node, ptr %t74, i64 %t72 + store %S.ast.Node %t71, ptr %t75 + store i64 %t73, ptr %t67 + %t76 = load ptr, ptr %a1 + %t77 = call i1 @finch.parser.accept(ptr %t76, { ptr, i64, i64 } { ptr @.str.777, i64 1, i64 0 }) + %t78 = xor i1 %t77, true + br i1 %t78, label %then1409, label %endif1411 +then1409: + %t79 = load ptr, ptr %a1 + call void @finch.parser.endOfStatement(ptr %t79) + br label %endif1411 +endif1411: + call void @finch.drop.S_ast_Node(ptr %a32) + br label %while.cond1397 +while.end1399: + %t80 = load ptr, ptr %a1 + %t81 = call %S.lexer.Token @finch.parser.next(ptr %t80) + store %S.lexer.Token %t81, ptr %a82 + call void @finch.drop.S_lexer_Token(ptr %a82) + %t83 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 + %t84 = getelementptr inbounds { ptr, i64, i64 }, ptr %t83, i32 0, i32 1 + %t85 = load i64, ptr %t84 + %t86 = icmp eq i64 %t85, 0 + br i1 %t86, label %then1412, label %endif1414 +then1412: + %t87 = load ptr, ptr %a1 + %t88 = load ptr, ptr %a1 + %t89 = call %S.lexer.Token @finch.parser.cur(ptr %t88) + %t90 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 1 + %t91 = load { ptr, i64, i64 }, ptr %t90 + store { ptr, i64, i64 } { ptr @.str.778, i64 9, 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.779, i64 16, i64 0 }, ptr %a98 + call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) + store { ptr, i64, i64 } %t95, ptr %a99 + call void @finch_str_drop(ptr %a99) + %t100 = load { ptr, i64, i64 }, ptr %a96 + call void @finch.parser.fail(ptr %t87, %S.lexer.Token %t89, { ptr, i64, i64 } %t100) + store %S.lexer.Token %t89, ptr %a101 + call void @finch.drop.S_lexer_Token(ptr %a101) + store { ptr, i64, i64 } %t100, ptr %a102 + call void @finch_str_drop(ptr %a102) + br label %endif1414 +endif1414: + %t103 = load %S.ast.Node, ptr %a4 + ret %S.ast.Node %t103 } define internal %S.ast.Node @finch.parser.parseMatch(ptr %p0, i1 %p1) { @@ -15866,288 +17614,307 @@ entry: %a1 = alloca ptr, align 16 %a2 = alloca i1, align 16 %a5 = alloca %S.ast.Node, align 16 - %a24 = alloca i64, align 16 - %a38 = alloca %S.ast.Node, align 16 + %a10 = alloca %S.lexer.Token, align 16 + %a21 = alloca %S.lexer.Token, align 16 + %a26 = alloca i64, align 16 + %a38 = alloca %S.lexer.Token, align 16 %a41 = alloca %S.ast.Node, align 16 - %a59 = alloca %S.ast.Node, align 16 - %a60 = alloca %S.ast.Node, align 16 - %a101 = alloca %S.ast.Node, align 16 - %a102 = alloca %S.ast.Node, align 16 - %a126 = alloca %S.ast.Node, align 16 - %a127 = alloca %S.ast.Node, align 16 + %a44 = alloca %S.ast.Node, align 16 + %a62 = alloca %S.ast.Node, align 16 + %a63 = alloca %S.ast.Node, align 16 + %a71 = alloca %S.lexer.Token, align 16 + %a105 = alloca %S.ast.Node, align 16 + %a106 = alloca %S.ast.Node, align 16 + %a122 = alloca %S.lexer.Token, align 16 + %a130 = alloca %S.lexer.Token, align 16 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.775, i64 5, i64 0 }) + %t4 = call %S.ast.Node @finch.parser.node(ptr %t3, { ptr, i64, i64 } { ptr @.str.780, 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.776, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.777, 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 - %t13 = call %S.ast.Node @finch.parser.parseExpr(ptr %t12) - %t14 = load i64, ptr %t11 - %t15 = add i64 %t14, 1 - call void @finch_arr_reserve(ptr %t10, i64 %t15, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t16 = load ptr, ptr %t10 - %t17 = getelementptr inbounds %S.ast.Node, ptr %t16, i64 %t14 - 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.778, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.779, i64 3, i64 0 }) - %t20 = load ptr, ptr %a1 - %t21 = icmp eq ptr %t20, null - br i1 %t21, label %panic1361, label %ok1362 -panic1361: - call void @finch_panic(ptr @.str.780, i64 300, ptr @.str.781) + %t9 = call %S.lexer.Token @finch.parser.expect(ptr %t8, { ptr, i64, i64 } { ptr @.str.781, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.782, i64 7, i64 0 }) + store %S.lexer.Token %t9, ptr %a10 + call void @finch.drop.S_lexer_Token(ptr %a10) + %t11 = getelementptr inbounds %S.ast.Node, ptr %a5, i32 0, i32 9 + %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t11, i32 0, i32 1 + %t13 = load ptr, ptr %a1 + %t14 = call %S.ast.Node @finch.parser.parseExpr(ptr %t13) + %t15 = load i64, ptr %t12 + %t16 = add i64 %t15, 1 + call void @finch_arr_reserve(ptr %t11, i64 %t16, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t17 = load ptr, ptr %t11 + %t18 = getelementptr inbounds %S.ast.Node, ptr %t17, i64 %t15 + store %S.ast.Node %t14, ptr %t18 + store i64 %t16, ptr %t12 + %t19 = load ptr, ptr %a1 + %t20 = call %S.lexer.Token @finch.parser.expect(ptr %t19, { ptr, i64, i64 } { ptr @.str.783, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.784, i64 3, i64 0 }) + store %S.lexer.Token %t20, ptr %a21 + call void @finch.drop.S_lexer_Token(ptr %a21) + %t22 = load ptr, ptr %a1 + %t23 = icmp eq ptr %t22, null + br i1 %t23, label %panic1415, label %ok1416 +panic1415: + call void @finch_panic(ptr @.str.785, i64 300, ptr @.str.786) unreachable -ok1362: - %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 %panic1363, label %ok1364 -panic1363: - call void @finch_panic(ptr @.str.782, i64 301, ptr @.str.783) +ok1416: + %t24 = getelementptr inbounds %S.parser.Parser, ptr %t22, i32 0, i32 2 + %t25 = load i64, ptr %t24 + store i64 %t25, ptr %a26 + %t27 = load ptr, ptr %a1 + %t28 = icmp eq ptr %t27, null + br i1 %t28, label %panic1417, label %ok1418 +panic1417: + call void @finch_panic(ptr @.str.787, i64 301, ptr @.str.788) unreachable -ok1364: - %t27 = getelementptr inbounds %S.parser.Parser, ptr %t25, i32 0, i32 2 - store i64 0, ptr %t27 - br label %while.cond1365 -while.cond1365: - %t28 = load ptr, ptr %a1 - %t29 = call i1 @finch.parser.at(ptr %t28, { ptr, i64, i64 } { ptr @.str.784, i64 1, i64 0 }) - %t30 = xor i1 %t29, true - br i1 %t30, label %while.body1366, label %while.end1367 -while.body1366: - %t31 = load ptr, ptr %a1 - %t32 = call i1 @finch.parser.at(ptr %t31, { ptr, i64, i64 } { ptr @.str.785, i64 3, i64 0 }) - br i1 %t32, label %then1368, label %endif1370 -then1368: +ok1418: + %t29 = getelementptr inbounds %S.parser.Parser, ptr %t27, i32 0, i32 2 + store i64 0, ptr %t29 + br label %while.cond1419 +while.cond1419: + %t30 = load ptr, ptr %a1 + %t31 = call i1 @finch.parser.at(ptr %t30, { ptr, i64, i64 } { ptr @.str.789, i64 1, i64 0 }) + %t32 = xor i1 %t31, true + br i1 %t32, label %while.body1420, label %while.end1421 +while.body1420: %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.786, i64 37, i64 0 }) - br label %endif1370 -endif1370: + %t34 = call i1 @finch.parser.at(ptr %t33, { ptr, i64, i64 } { ptr @.str.790, i64 3, i64 0 }) + br i1 %t34, label %then1422, label %endif1424 +then1422: + %t35 = load ptr, ptr %a1 %t36 = load ptr, ptr %a1 - %t37 = call %S.ast.Node @finch.parser.node(ptr %t36, { ptr, i64, i64 } { ptr @.str.787, i64 3, i64 0 }) - store %S.ast.Node %t37, ptr %a38 + %t37 = call %S.lexer.Token @finch.parser.cur(ptr %t36) + call void @finch.parser.fail(ptr %t35, %S.lexer.Token %t37, { ptr, i64, i64 } { ptr @.str.791, i64 37, i64 0 }) + store %S.lexer.Token %t37, ptr %a38 + call void @finch.drop.S_lexer_Token(ptr %a38) + br label %endif1424 +endif1424: %t39 = load ptr, ptr %a1 - %t40 = call %S.ast.Node @finch.parser.node(ptr %t39, { ptr, i64, i64 } { ptr @.str.788, i64 8, i64 0 }) + %t40 = call %S.ast.Node @finch.parser.node(ptr %t39, { ptr, i64, i64 } { ptr @.str.792, i64 3, 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.789, i64 4, i64 0 }) - br i1 %t43, label %then1371, label %else1372 -then1371: - %t44 = getelementptr inbounds %S.ast.Node, ptr %a38, i32 0, i32 6 - store i1 true, ptr %t44 - br label %endif1373 -else1372: - br label %while.cond1374 -while.cond1374: - br label %while.body1375 -while.body1375: - %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 - %t48 = call %S.ast.Node @finch.parser.parseExpr(ptr %t47) - %t49 = load i64, ptr %t46 - %t50 = add i64 %t49, 1 - call void @finch_arr_reserve(ptr %t45, i64 %t50, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t51 = load ptr, ptr %t45 - %t52 = getelementptr inbounds %S.ast.Node, ptr %t51, i64 %t49 - 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.790, i64 1, i64 0 }) - %t55 = xor i1 %t54, true - br i1 %t55, label %then1377, label %endif1379 -then1377: - br label %while.end1376 -endif1379: - br label %while.cond1374 -while.end1376: - br label %endif1373 -endif1373: - %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 - store %S.ast.Node %t58, ptr %a59 - call void @finch.copy.S_ast_Node(ptr %a60, ptr %a59) - %t61 = load %S.ast.Node, ptr %a60 - %t62 = load i64, ptr %t57 - %t63 = add i64 %t62, 1 - call void @finch_arr_reserve(ptr %t56, i64 %t63, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t64 = load ptr, ptr %t56 - %t65 = getelementptr inbounds %S.ast.Node, ptr %t64, i64 %t62 - 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.791, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.792, i64 57, i64 0 }) - %t68 = load ptr, ptr %a1 - %t69 = call i1 @finch.parser.at(ptr %t68, { ptr, i64, i64 } { ptr @.str.793, i64 1, i64 0 }) - br label %logic.from1380 -logic.from1380: - br i1 %t69, label %logic.rhs1381, label %logic.end1382 -logic.rhs1381: - %t70 = load i1, ptr %a2 - %t71 = xor i1 %t70, true - br label %logic.rend1383 -logic.rend1383: - br label %logic.end1382 -logic.end1382: - %t72 = phi i1 [ false, %logic.from1380 ], [ %t71, %logic.rend1383 ] - br i1 %t72, label %then1384, label %else1385 -then1384: - %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 - %t76 = call %S.ast.Node @finch.parser.parseBlock(ptr %t75) - %t77 = load i64, ptr %t74 - %t78 = add i64 %t77, 1 - call void @finch_arr_reserve(ptr %t73, i64 %t78, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t79 = load ptr, ptr %t73 - %t80 = getelementptr inbounds %S.ast.Node, ptr %t79, i64 %t77 - store %S.ast.Node %t76, ptr %t80 - store i64 %t78, ptr %t74 - br label %endif1386 -else1385: - %t81 = load i1, ptr %a2 - br i1 %t81, label %then1387, label %else1388 -then1387: - %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 - %t85 = call %S.ast.Node @finch.parser.parseExpr(ptr %t84) - %t86 = load i64, ptr %t83 - %t87 = add i64 %t86, 1 - call void @finch_arr_reserve(ptr %t82, i64 %t87, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t88 = load ptr, ptr %t82 - %t89 = getelementptr inbounds %S.ast.Node, ptr %t88, i64 %t86 - store %S.ast.Node %t85, ptr %t89 - store i64 %t87, ptr %t83 - br label %endif1389 -else1388: - %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 - %t93 = call %S.ast.Node @finch.parser.parseStatement(ptr %t92) - %t94 = load i64, ptr %t91 - %t95 = add i64 %t94, 1 - call void @finch_arr_reserve(ptr %t90, i64 %t95, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t96 = load ptr, ptr %t90 - %t97 = getelementptr inbounds %S.ast.Node, ptr %t96, i64 %t94 - store %S.ast.Node %t93, ptr %t97 - store i64 %t95, ptr %t91 - br label %endif1389 -endif1389: - br label %endif1386 -endif1386: - %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 - store %S.ast.Node %t100, ptr %a101 - call void @finch.copy.S_ast_Node(ptr %a102, ptr %a101) - %t103 = load %S.ast.Node, ptr %a102 - %t104 = load i64, ptr %t99 - %t105 = add i64 %t104, 1 - call void @finch_arr_reserve(ptr %t98, i64 %t105, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t106 = load ptr, ptr %t98 - %t107 = getelementptr inbounds %S.ast.Node, ptr %t106, i64 %t104 - 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.794, i64 1, i64 0 }) - %t110 = xor i1 %t109, true - br i1 %t110, label %then1390, label %endif1392 -then1390: - %t111 = load ptr, ptr %a1 - call void @finch.parser.endOfStatement(ptr %t111) - br label %endif1392 -endif1392: - br label %while.cond1365 -while.end1367: - %t112 = load i64, ptr %a24 - %t113 = load ptr, ptr %a1 - %t114 = icmp eq ptr %t113, null - br i1 %t114, label %panic1393, label %ok1394 -panic1393: - call void @finch_panic(ptr @.str.795, i64 332, ptr @.str.796) + %t43 = call %S.ast.Node @finch.parser.node(ptr %t42, { ptr, i64, i64 } { ptr @.str.793, i64 8, i64 0 }) + store %S.ast.Node %t43, ptr %a44 + %t45 = load ptr, ptr %a1 + %t46 = call i1 @finch.parser.accept(ptr %t45, { ptr, i64, i64 } { ptr @.str.794, i64 4, i64 0 }) + br i1 %t46, label %then1425, label %else1426 +then1425: + %t47 = getelementptr inbounds %S.ast.Node, ptr %a41, i32 0, i32 6 + store i1 true, ptr %t47 + br label %endif1427 +else1426: + br label %while.cond1428 +while.cond1428: + br label %while.body1429 +while.body1429: + %t48 = getelementptr inbounds %S.ast.Node, ptr %a44, i32 0, i32 9 + %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %t48, i32 0, i32 1 + %t50 = load ptr, ptr %a1 + %t51 = call %S.ast.Node @finch.parser.parseExpr(ptr %t50) + %t52 = load i64, ptr %t49 + %t53 = add i64 %t52, 1 + call void @finch_arr_reserve(ptr %t48, i64 %t53, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t54 = load ptr, ptr %t48 + %t55 = getelementptr inbounds %S.ast.Node, ptr %t54, i64 %t52 + 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.795, i64 1, i64 0 }) + %t58 = xor i1 %t57, true + br i1 %t58, label %then1431, label %endif1433 +then1431: + br label %while.end1430 +endif1433: + br label %while.cond1428 +while.end1430: + br label %endif1427 +endif1427: + %t59 = getelementptr inbounds %S.ast.Node, ptr %a41, i32 0, i32 9 + %t60 = getelementptr inbounds { ptr, i64, i64 }, ptr %t59, i32 0, i32 1 + %t61 = load %S.ast.Node, ptr %a44 + store %S.ast.Node %t61, ptr %a62 + call void @finch.copy.S_ast_Node(ptr %a63, ptr %a62) + %t64 = load %S.ast.Node, ptr %a63 + %t65 = load i64, ptr %t60 + %t66 = add i64 %t65, 1 + call void @finch_arr_reserve(ptr %t59, i64 %t66, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t67 = load ptr, ptr %t59 + %t68 = getelementptr inbounds %S.ast.Node, ptr %t67, i64 %t65 + store %S.ast.Node %t64, ptr %t68 + store i64 %t66, ptr %t60 + %t69 = load ptr, ptr %a1 + %t70 = call %S.lexer.Token @finch.parser.expect(ptr %t69, { ptr, i64, i64 } { ptr @.str.796, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.797, i64 57, i64 0 }) + store %S.lexer.Token %t70, ptr %a71 + call void @finch.drop.S_lexer_Token(ptr %a71) + %t72 = load ptr, ptr %a1 + %t73 = call i1 @finch.parser.at(ptr %t72, { ptr, i64, i64 } { ptr @.str.798, i64 1, i64 0 }) + br label %logic.from1434 +logic.from1434: + br i1 %t73, label %logic.rhs1435, label %logic.end1436 +logic.rhs1435: + %t74 = load i1, ptr %a2 + %t75 = xor i1 %t74, true + br label %logic.rend1437 +logic.rend1437: + br label %logic.end1436 +logic.end1436: + %t76 = phi i1 [ false, %logic.from1434 ], [ %t75, %logic.rend1437 ] + br i1 %t76, label %then1438, label %else1439 +then1438: + %t77 = getelementptr inbounds %S.ast.Node, ptr %a41, i32 0, i32 9 + %t78 = getelementptr inbounds { ptr, i64, i64 }, ptr %t77, i32 0, i32 1 + %t79 = load ptr, ptr %a1 + %t80 = call %S.ast.Node @finch.parser.parseBlock(ptr %t79) + %t81 = load i64, ptr %t78 + %t82 = add i64 %t81, 1 + call void @finch_arr_reserve(ptr %t77, i64 %t82, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t83 = load ptr, ptr %t77 + %t84 = getelementptr inbounds %S.ast.Node, ptr %t83, i64 %t81 + store %S.ast.Node %t80, ptr %t84 + store i64 %t82, ptr %t78 + br label %endif1440 +else1439: + %t85 = load i1, ptr %a2 + br i1 %t85, label %then1441, label %else1442 +then1441: + %t86 = getelementptr inbounds %S.ast.Node, ptr %a41, i32 0, i32 9 + %t87 = getelementptr inbounds { ptr, i64, i64 }, ptr %t86, i32 0, i32 1 + %t88 = load ptr, ptr %a1 + %t89 = call %S.ast.Node @finch.parser.parseExpr(ptr %t88) + %t90 = load i64, ptr %t87 + %t91 = add i64 %t90, 1 + call void @finch_arr_reserve(ptr %t86, i64 %t91, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t92 = load ptr, ptr %t86 + %t93 = getelementptr inbounds %S.ast.Node, ptr %t92, i64 %t90 + store %S.ast.Node %t89, ptr %t93 + store i64 %t91, ptr %t87 + br label %endif1443 +else1442: + %t94 = getelementptr inbounds %S.ast.Node, ptr %a41, i32 0, i32 9 + %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %t94, i32 0, i32 1 + %t96 = load ptr, ptr %a1 + %t97 = call %S.ast.Node @finch.parser.parseStatement(ptr %t96) + %t98 = load i64, ptr %t95 + %t99 = add i64 %t98, 1 + call void @finch_arr_reserve(ptr %t94, i64 %t99, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t100 = load ptr, ptr %t94 + %t101 = getelementptr inbounds %S.ast.Node, ptr %t100, i64 %t98 + store %S.ast.Node %t97, ptr %t101 + store i64 %t99, ptr %t95 + br label %endif1443 +endif1443: + br label %endif1440 +endif1440: + %t102 = getelementptr inbounds %S.ast.Node, ptr %a5, i32 0, i32 9 + %t103 = getelementptr inbounds { ptr, i64, i64 }, ptr %t102, i32 0, i32 1 + %t104 = load %S.ast.Node, ptr %a41 + 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 + %t108 = load i64, ptr %t103 + %t109 = add i64 %t108, 1 + call void @finch_arr_reserve(ptr %t102, i64 %t109, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t110 = load ptr, ptr %t102 + %t111 = getelementptr inbounds %S.ast.Node, ptr %t110, i64 %t108 + store %S.ast.Node %t107, ptr %t111 + store i64 %t109, ptr %t103 + %t112 = load ptr, ptr %a1 + %t113 = call i1 @finch.parser.accept(ptr %t112, { ptr, i64, i64 } { ptr @.str.799, i64 1, i64 0 }) + %t114 = xor i1 %t113, true + br i1 %t114, label %then1444, label %endif1446 +then1444: + %t115 = load ptr, ptr %a1 + call void @finch.parser.endOfStatement(ptr %t115) + br label %endif1446 +endif1446: + call void @finch.drop.S_ast_Node(ptr %a44) + call void @finch.drop.S_ast_Node(ptr %a41) + br label %while.cond1419 +while.end1421: + %t116 = load i64, ptr %a26 + %t117 = load ptr, ptr %a1 + %t118 = icmp eq ptr %t117, null + br i1 %t118, label %panic1447, label %ok1448 +panic1447: + call void @finch_panic(ptr @.str.800, i64 332, ptr @.str.801) unreachable -ok1394: - %t115 = getelementptr inbounds %S.parser.Parser, ptr %t113, i32 0, i32 2 - store i64 %t112, ptr %t115 - %t116 = load ptr, ptr %a1 - %t117 = call %S.lexer.Token @finch.parser.next(ptr %t116) - %t118 = getelementptr inbounds %S.ast.Node, ptr %a5, i32 0, i32 9 - %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 %then1395, label %endif1397 -then1395: - %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.797, i64 30, i64 0 }) - br label %endif1397 -endif1397: - %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) - %t128 = load %S.ast.Node, ptr %a127 - ret %S.ast.Node %t128 +ok1448: + %t119 = getelementptr inbounds %S.parser.Parser, ptr %t117, i32 0, i32 2 + store i64 %t116, ptr %t119 + %t120 = load ptr, ptr %a1 + %t121 = call %S.lexer.Token @finch.parser.next(ptr %t120) + store %S.lexer.Token %t121, ptr %a122 + call void @finch.drop.S_lexer_Token(ptr %a122) + %t123 = getelementptr inbounds %S.ast.Node, ptr %a5, i32 0, i32 9 + %t124 = getelementptr inbounds { ptr, i64, i64 }, ptr %t123, i32 0, i32 1 + %t125 = load i64, ptr %t124 + %t126 = icmp eq i64 %t125, 1 + br i1 %t126, label %then1449, label %endif1451 +then1449: + %t127 = load ptr, ptr %a1 + %t128 = load ptr, ptr %a1 + %t129 = call %S.lexer.Token @finch.parser.cur(ptr %t128) + call void @finch.parser.fail(ptr %t127, %S.lexer.Token %t129, { ptr, i64, i64 } { ptr @.str.802, i64 30, i64 0 }) + store %S.lexer.Token %t129, ptr %a130 + call void @finch.drop.S_lexer_Token(ptr %a130) + br label %endif1451 +endif1451: + %t131 = load %S.ast.Node, ptr %a5 + ret %S.ast.Node %t131 } define internal { ptr, i64, i64 } @finch.parser.parseTParams(ptr %p0) { entry: %a1 = alloca ptr, align 16 %a2 = alloca { ptr, i64, i64 }, align 16 - %a9 = alloca { ptr, i64, i64 }, align 16 + %a5 = alloca %S.lexer.Token, align 16 %a10 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 + %a11 = alloca { ptr, i64, i64 }, align 16 + %a13 = alloca %S.lexer.Token, align 16 + %a23 = alloca %S.lexer.Token, align 16 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.798, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.799, i64 3, i64 0 }) - br label %while.cond1398 -while.cond1398: - br label %while.body1399 -while.body1399: - %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.800, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.801, 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) - %t11 = load { ptr, i64, i64 }, ptr %a10 - %t12 = load i64, ptr %t5 - %t13 = add i64 %t12, 1 - call void @finch_arr_reserve(ptr %a2, i64 %t13, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t14 = load ptr, ptr %a2 - %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t14, i64 %t12 - 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.802, i64 1, i64 0 }) - %t18 = xor i1 %t17, true - br i1 %t18, label %then1401, label %endif1403 -then1401: - br label %while.end1400 -endif1403: - br label %while.cond1398 -while.end1400: - %t19 = load ptr, ptr %a1 - %t20 = call %S.lexer.Token @finch.parser.expect(ptr %t19, { ptr, i64, i64 } { ptr @.str.803, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.804, 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) - %t24 = load { ptr, i64, i64 }, ptr %a23 + %t4 = call %S.lexer.Token @finch.parser.expect(ptr %t3, { ptr, i64, i64 } { ptr @.str.803, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.804, i64 3, i64 0 }) + store %S.lexer.Token %t4, ptr %a5 + call void @finch.drop.S_lexer_Token(ptr %a5) + br label %while.cond1452 +while.cond1452: + br label %while.body1453 +while.body1453: + %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t7 = load ptr, ptr %a1 + %t8 = call %S.lexer.Token @finch.parser.expect(ptr %t7, { ptr, i64, i64 } { ptr @.str.805, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.806, i64 29, 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) + %t12 = load { ptr, i64, i64 }, ptr %a11 + store %S.lexer.Token %t8, ptr %a13 + call void @finch.drop.S_lexer_Token(ptr %a13) + %t14 = load i64, ptr %t6 + %t15 = add i64 %t14, 1 + call void @finch_arr_reserve(ptr %a2, i64 %t15, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t16 = load ptr, ptr %a2 + %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 %t14 + store { ptr, i64, i64 } %t12, ptr %t17 + store i64 %t15, ptr %t6 + %t18 = load ptr, ptr %a1 + %t19 = call i1 @finch.parser.accept(ptr %t18, { ptr, i64, i64 } { ptr @.str.807, i64 1, i64 0 }) + %t20 = xor i1 %t19, true + br i1 %t20, label %then1455, label %endif1457 +then1455: + br label %while.end1454 +endif1457: + br label %while.cond1452 +while.end1454: + %t21 = load ptr, ptr %a1 + %t22 = call %S.lexer.Token @finch.parser.expect(ptr %t21, { ptr, i64, i64 } { ptr @.str.808, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.809, i64 29, i64 0 }) + store %S.lexer.Token %t22, ptr %a23 + call void @finch.drop.S_lexer_Token(ptr %a23) + %t24 = load { ptr, i64, i64 }, ptr %a2 ret { ptr, i64, i64 } %t24 } @@ -16155,142 +17922,187 @@ define internal %S.ast.Node @finch.parser.parseStruct(ptr %p0) { entry: %a1 = alloca ptr, align 16 %a4 = alloca %S.ast.Node, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 + %a7 = alloca %S.lexer.Token, align 16 %a11 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca %S.ast.Node, 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 + %a12 = alloca { ptr, i64, i64 }, align 16 + %a14 = alloca %S.lexer.Token, align 16 + %a17 = alloca { ptr, i64, i64 }, align 16 + %a24 = alloca { ptr, i64, i64 }, align 16 + %a27 = alloca %S.lexer.Token, align 16 + %a36 = alloca %S.lexer.Token, align 16 + %a39 = alloca %S.ast.Node, align 16 + %a49 = alloca %S.lexer.Token, align 16 + %a50 = 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 %a55 = alloca { ptr, i64, i64 }, align 16 %a56 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca %S.ast.Node, align 16 - %a73 = alloca %S.ast.Node, align 16 - %a83 = alloca %S.ast.Node, align 16 - %a84 = alloca %S.ast.Node, align 16 + %a57 = alloca { ptr, i64, i64 }, align 16 + %a58 = alloca { ptr, i64, i64 }, align 16 + %a60 = alloca %S.lexer.Token, align 16 + %a61 = alloca { ptr, i64, i64 }, align 16 + %a66 = alloca %S.ast.Type, align 16 + %a70 = alloca { ptr, i64, i64 }, align 16 + %a71 = alloca { ptr, i64, i64 }, align 16 + %a73 = alloca %S.lexer.Token, align 16 + %a76 = alloca { ptr, i64, i64 }, align 16 + %a90 = alloca %S.ast.Node, align 16 + %a91 = alloca %S.ast.Node, align 16 + %a100 = alloca %S.lexer.Token, 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.805, i64 6, i64 0 }) + %t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.810, 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.806, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.807, i64 8, i64 0 }) - %t7 = load ptr, ptr %a1 - %t8 = call %S.lexer.Token @finch.parser.expect(ptr %t7, { ptr, i64, i64 } { ptr @.str.808, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.809, 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) - %t12 = load { ptr, i64, i64 }, ptr %a11 - %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.810, i64 1, i64 0 }) - br i1 %t15, label %then1404, label %endif1406 -then1404: - %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 %endif1406 -endif1406: - %t19 = load ptr, ptr %a1 - %t20 = call %S.lexer.Token @finch.parser.expect(ptr %t19, { ptr, i64, i64 } { ptr @.str.811, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.812, i64 3, i64 0 }) - br label %while.cond1407 -while.cond1407: - %t21 = load ptr, ptr %a1 - %t22 = call i1 @finch.parser.at(ptr %t21, { ptr, i64, i64 } { ptr @.str.813, i64 1, i64 0 }) - %t23 = xor i1 %t22, true - br i1 %t23, label %while.body1408, label %while.end1409 -while.body1408: - %t24 = load ptr, ptr %a1 - %t25 = call i1 @finch.parser.at(ptr %t24, { ptr, i64, i64 } { ptr @.str.814, i64 3, i64 0 }) - br i1 %t25, label %then1410, label %endif1412 -then1410: - %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.815, i64 38, i64 0 }) - br label %endif1412 -endif1412: - %t29 = load ptr, ptr %a1 - %t30 = call %S.ast.Node @finch.parser.node(ptr %t29, { ptr, i64, i64 } { ptr @.str.816, 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 %then1413, label %endif1415 -then1413: - %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.817, 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.818, 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 %endif1415 -endif1415: - %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.819, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.820, 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) - %t57 = load { ptr, i64, i64 }, ptr %a56 - %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.821, i64 1, i64 0 }) - br i1 %t60, label %then1416, label %endif1418 -then1416: - %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 - %t64 = call %S.ast.Node @finch.parser.parseExpr(ptr %t63) - %t65 = load i64, ptr %t62 - %t66 = add i64 %t65, 1 - call void @finch_arr_reserve(ptr %t61, i64 %t66, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t67 = load ptr, ptr %t61 - %t68 = getelementptr inbounds %S.ast.Node, ptr %t67, i64 %t65 - store %S.ast.Node %t64, ptr %t68 - store i64 %t66, ptr %t62 - br label %endif1418 -endif1418: - %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 - store %S.ast.Node %t71, ptr %a72 - call void @finch.copy.S_ast_Node(ptr %a73, ptr %a72) - %t74 = load %S.ast.Node, ptr %a73 - %t75 = load i64, ptr %t70 - %t76 = add i64 %t75, 1 - call void @finch_arr_reserve(ptr %t69, i64 %t76, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t77 = load ptr, ptr %t69 - %t78 = getelementptr inbounds %S.ast.Node, ptr %t77, i64 %t75 - store %S.ast.Node %t74, ptr %t78 - store i64 %t76, ptr %t70 - %t79 = load ptr, ptr %a1 - call void @finch.parser.endOfStatement(ptr %t79) - br label %while.cond1407 -while.end1409: - %t80 = load ptr, ptr %a1 - %t81 = call %S.lexer.Token @finch.parser.next(ptr %t80) - %t82 = load %S.ast.Node, ptr %a4 - store %S.ast.Node %t82, ptr %a83 - call void @finch.copy.S_ast_Node(ptr %a84, ptr %a83) - %t85 = load %S.ast.Node, ptr %a84 - ret %S.ast.Node %t85 + %t6 = call %S.lexer.Token @finch.parser.expect(ptr %t5, { ptr, i64, i64 } { ptr @.str.811, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.812, i64 8, i64 0 }) + store %S.lexer.Token %t6, ptr %a7 + call void @finch.drop.S_lexer_Token(ptr %a7) + %t8 = load ptr, ptr %a1 + %t9 = call %S.lexer.Token @finch.parser.expect(ptr %t8, { ptr, i64, i64 } { ptr @.str.813, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.814, i64 13, i64 0 }) + %t10 = extractvalue %S.lexer.Token %t9, 1 + store { ptr, i64, i64 } %t10, ptr %a11 + call void @finch_str_copy(ptr %a12, ptr %a11) + %t13 = load { ptr, i64, i64 }, ptr %a12 + store %S.lexer.Token %t9, ptr %a14 + call void @finch.drop.S_lexer_Token(ptr %a14) + %t15 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 1 + %t16 = load { ptr, i64, i64 }, ptr %t15 + store { ptr, i64, i64 } %t13, ptr %t15 + store { ptr, i64, i64 } %t16, ptr %a17 + call void @finch_str_drop(ptr %a17) + %t18 = load ptr, ptr %a1 + %t19 = call i1 @finch.parser.at(ptr %t18, { ptr, i64, i64 } { ptr @.str.815, i64 1, i64 0 }) + br i1 %t19, label %then1458, label %endif1460 +then1458: + %t20 = load ptr, ptr %a1 + %t21 = call { ptr, i64, i64 } @finch.parser.parseTParams(ptr %t20) + %t22 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 3 + %t23 = load { ptr, i64, i64 }, ptr %t22 + store { ptr, i64, i64 } %t21, ptr %t22 + store { ptr, i64, i64 } %t23, ptr %a24 + call void @finch.drop.arr_str(ptr %a24) + br label %endif1460 +endif1460: + %t25 = load ptr, ptr %a1 + %t26 = call %S.lexer.Token @finch.parser.expect(ptr %t25, { ptr, i64, i64 } { ptr @.str.816, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.817, i64 3, i64 0 }) + store %S.lexer.Token %t26, ptr %a27 + call void @finch.drop.S_lexer_Token(ptr %a27) + br label %while.cond1461 +while.cond1461: + %t28 = load ptr, ptr %a1 + %t29 = call i1 @finch.parser.at(ptr %t28, { ptr, i64, i64 } { ptr @.str.818, i64 1, i64 0 }) + %t30 = xor i1 %t29, true + br i1 %t30, label %while.body1462, label %while.end1463 +while.body1462: + %t31 = load ptr, ptr %a1 + %t32 = call i1 @finch.parser.at(ptr %t31, { ptr, i64, i64 } { ptr @.str.819, i64 3, i64 0 }) + br i1 %t32, label %then1464, label %endif1466 +then1464: + %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.820, i64 38, i64 0 }) + store %S.lexer.Token %t35, ptr %a36 + call void @finch.drop.S_lexer_Token(ptr %a36) + br label %endif1466 +endif1466: + %t37 = load ptr, ptr %a1 + %t38 = call %S.ast.Node @finch.parser.node(ptr %t37, { ptr, i64, i64 } { ptr @.str.821, i64 5, i64 0 }) + store %S.ast.Node %t38, ptr %a39 + %t40 = load ptr, ptr %a1 + %t41 = call i1 @finch.parser.atDeclaration(ptr %t40) + %t42 = xor i1 %t41, true + br i1 %t42, label %then1467, label %endif1469 +then1467: + %t43 = load ptr, ptr %a1 + %t44 = load ptr, ptr %a1 + %t45 = call %S.lexer.Token @finch.parser.cur(ptr %t44) + %t46 = load ptr, ptr %a1 + %t47 = call %S.lexer.Token @finch.parser.cur(ptr %t46) + %t48 = call { ptr, i64, i64 } @finch.parser.describe(%S.lexer.Token %t47) + store %S.lexer.Token %t47, ptr %a49 + call void @finch.drop.S_lexer_Token(ptr %a49) + store { ptr, i64, i64 } { ptr @.str.822, i64 11, i64 0 }, ptr %a51 + store { ptr, i64, i64 } %t48, ptr %a52 + call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) + store { ptr, i64, i64 } %t48, ptr %a53 + call void @finch_str_drop(ptr %a53) + %t54 = load { ptr, i64, i64 }, ptr %a50 + store { ptr, i64, i64 } %t54, ptr %a56 + store { ptr, i64, i64 } { ptr @.str.823, i64 28, i64 0 }, ptr %a57 + call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) + store { ptr, i64, i64 } %t54, ptr %a58 + call void @finch_str_drop(ptr %a58) + %t59 = load { ptr, i64, i64 }, ptr %a55 + call void @finch.parser.fail(ptr %t43, %S.lexer.Token %t45, { ptr, i64, i64 } %t59) + store %S.lexer.Token %t45, ptr %a60 + call void @finch.drop.S_lexer_Token(ptr %a60) + store { ptr, i64, i64 } %t59, ptr %a61 + call void @finch_str_drop(ptr %a61) + br label %endif1469 +endif1469: + %t62 = load ptr, ptr %a1 + %t63 = call %S.ast.Type @finch.parser.parseType(ptr %t62) + %t64 = getelementptr inbounds %S.ast.Node, ptr %a39, i32 0, i32 5 + %t65 = load %S.ast.Type, ptr %t64 + store %S.ast.Type %t63, ptr %t64 + store %S.ast.Type %t65, ptr %a66 + call void @finch.drop.S_ast_Type(ptr %a66) + %t67 = load ptr, ptr %a1 + %t68 = call %S.lexer.Token @finch.parser.expect(ptr %t67, { ptr, i64, i64 } { ptr @.str.824, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.825, i64 12, i64 0 }) + %t69 = extractvalue %S.lexer.Token %t68, 1 + store { ptr, i64, i64 } %t69, ptr %a70 + call void @finch_str_copy(ptr %a71, ptr %a70) + %t72 = load { ptr, i64, i64 }, ptr %a71 + store %S.lexer.Token %t68, ptr %a73 + call void @finch.drop.S_lexer_Token(ptr %a73) + %t74 = getelementptr inbounds %S.ast.Node, ptr %a39, i32 0, i32 1 + %t75 = load { ptr, i64, i64 }, ptr %t74 + store { ptr, i64, i64 } %t72, ptr %t74 + store { ptr, i64, i64 } %t75, ptr %a76 + call void @finch_str_drop(ptr %a76) + %t77 = load ptr, ptr %a1 + %t78 = call i1 @finch.parser.accept(ptr %t77, { ptr, i64, i64 } { ptr @.str.826, i64 1, i64 0 }) + br i1 %t78, label %then1470, label %endif1472 +then1470: + %t79 = getelementptr inbounds %S.ast.Node, ptr %a39, i32 0, i32 9 + %t80 = getelementptr inbounds { ptr, i64, i64 }, ptr %t79, i32 0, i32 1 + %t81 = load ptr, ptr %a1 + %t82 = call %S.ast.Node @finch.parser.parseExpr(ptr %t81) + %t83 = load i64, ptr %t80 + %t84 = add i64 %t83, 1 + call void @finch_arr_reserve(ptr %t79, i64 %t84, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t85 = load ptr, ptr %t79 + %t86 = getelementptr inbounds %S.ast.Node, ptr %t85, i64 %t83 + store %S.ast.Node %t82, ptr %t86 + store i64 %t84, ptr %t80 + br label %endif1472 +endif1472: + %t87 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 + %t88 = getelementptr inbounds { ptr, i64, i64 }, ptr %t87, i32 0, i32 1 + %t89 = load %S.ast.Node, ptr %a39 + store %S.ast.Node %t89, ptr %a90 + call void @finch.copy.S_ast_Node(ptr %a91, ptr %a90) + %t92 = load %S.ast.Node, ptr %a91 + %t93 = load i64, ptr %t88 + %t94 = add i64 %t93, 1 + call void @finch_arr_reserve(ptr %t87, i64 %t94, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t95 = load ptr, ptr %t87 + %t96 = getelementptr inbounds %S.ast.Node, ptr %t95, i64 %t93 + store %S.ast.Node %t92, ptr %t96 + store i64 %t94, ptr %t88 + %t97 = load ptr, ptr %a1 + call void @finch.parser.endOfStatement(ptr %t97) + call void @finch.drop.S_ast_Node(ptr %a39) + br label %while.cond1461 +while.end1463: + %t98 = load ptr, ptr %a1 + %t99 = call %S.lexer.Token @finch.parser.next(ptr %t98) + store %S.lexer.Token %t99, ptr %a100 + call void @finch.drop.S_lexer_Token(ptr %a100) + %t101 = load %S.ast.Node, ptr %a4 + ret %S.ast.Node %t101 } define internal %S.ast.Node @finch.parser.parseFn(ptr %p0) { @@ -16299,361 +18111,439 @@ entry: %a4 = alloca %S.ast.Node, align 16 %a13 = alloca { ptr, i64, i64 }, align 16 %a14 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca %S.ast.Node, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca %S.ast.Node, align 16 + %a16 = alloca %S.lexer.Token, align 16 + %a18 = alloca { ptr, i64, i64 }, align 16 + %a23 = alloca %S.lexer.Token, align 16 + %a26 = alloca %S.lexer.Token, align 16 + %a30 = alloca { ptr, i64, i64 }, align 16 + %a31 = alloca { ptr, i64, i64 }, align 16 + %a33 = alloca %S.lexer.Token, align 16 + %a36 = alloca { ptr, i64, i64 }, align 16 + %a43 = alloca { ptr, i64, i64 }, align 16 + %a49 = alloca { ptr, i64, i64 }, align 16 + %a50 = alloca { ptr, i64, i64 }, align 16 + %a53 = alloca { ptr, i64, i64 }, align 16 + %a57 = alloca { ptr, i64, i64 }, align 16 + %a58 = alloca { ptr, i64, i64 }, align 16 + %a60 = alloca %S.lexer.Token, align 16 + %a63 = alloca { ptr, i64, i64 }, align 16 + %a66 = alloca %S.lexer.Token, align 16 %a77 = alloca %S.ast.Node, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = 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 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca %S.ast.Node, align 16 - %a154 = alloca %S.ast.Node, align 16 + %a82 = alloca %S.ast.Type, align 16 + %a86 = alloca { ptr, i64, i64 }, align 16 + %a87 = alloca { ptr, i64, i64 }, align 16 + %a89 = alloca %S.lexer.Token, align 16 + %a92 = alloca { ptr, i64, i64 }, align 16 + %a96 = alloca %S.ast.Node, align 16 + %a97 = alloca %S.ast.Node, align 16 + %a113 = alloca %S.lexer.Token, align 16 + %a117 = alloca %S.ast.Type, align 16 + %a127 = alloca %S.ast.Type, align 16 + %a137 = alloca { ptr, i64, i64 }, align 16 + %a138 = alloca { ptr, i64, i64 }, align 16 + %a148 = alloca %S.lexer.Token, align 16 + %a149 = alloca { ptr, i64, i64 }, align 16 + %a150 = alloca { ptr, i64, i64 }, align 16 + %a151 = alloca { ptr, i64, i64 }, align 16 + %a152 = alloca { ptr, i64, i64 }, align 16 + %a154 = alloca { ptr, i64, i64 }, align 16 + %a155 = alloca { ptr, i64, i64 }, align 16 + %a156 = alloca { ptr, i64, i64 }, align 16 + %a157 = alloca { ptr, i64, i64 }, align 16 + %a159 = alloca %S.lexer.Token, align 16 + %a160 = alloca { ptr, i64, i64 }, 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.822, i64 2, i64 0 }) + %t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.827, 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.823, i64 6, i64 0 }) + %t6 = call i1 @finch.parser.accept(ptr %t5, { ptr, i64, i64 } { ptr @.str.828, 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.824, i64 5, i64 0 }) - br label %logic.from1419 -logic.from1419: - br i1 %t9, label %logic.rhs1420, label %logic.end1421 -logic.rhs1420: + %t9 = call i1 @finch.parser.at(ptr %t8, { ptr, i64, i64 } { ptr @.str.829, i64 5, i64 0 }) + br label %logic.from1473 +logic.from1473: + br i1 %t9, label %logic.rhs1474, label %logic.end1475 +logic.rhs1474: %t10 = load ptr, ptr %a1 %t11 = call %S.lexer.Token @finch.parser.cur(ptr %t10) %t12 = extractvalue %S.lexer.Token %t11, 1 store { ptr, i64, i64 } %t12, ptr %a13 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.rend1422 -logic.rend1422: - br label %logic.end1421 -logic.end1421: - %t17 = phi i1 [ false, %logic.from1419 ], [ %t16, %logic.rend1422 ] - br i1 %t17, label %then1423, label %endif1425 -then1423: - %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.825, i64 68, i64 0 }) - br label %endif1425 -endif1425: + store %S.lexer.Token %t11, ptr %a16 + call void @finch.drop.S_lexer_Token(ptr %a16) + %t17 = call i1 @finch.parser.isTypeName({ ptr, i64, i64 } %t15) + store { ptr, i64, i64 } %t15, ptr %a18 + call void @finch_str_drop(ptr %a18) + br label %logic.rend1476 +logic.rend1476: + br label %logic.end1475 +logic.end1475: + %t19 = phi i1 [ false, %logic.from1473 ], [ %t17, %logic.rend1476 ] + br i1 %t19, label %then1477, label %endif1479 +then1477: + %t20 = load ptr, ptr %a1 %t21 = load ptr, ptr %a1 - %t22 = call %S.lexer.Token @finch.parser.expect(ptr %t21, { ptr, i64, i64 } { ptr @.str.826, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.827, i64 26, i64 0 }) - %t23 = load ptr, ptr %a1 - %t24 = call %S.lexer.Token @finch.parser.expect(ptr %t23, { ptr, i64, i64 } { ptr @.str.828, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.829, 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) - %t28 = load { ptr, i64, i64 }, ptr %a27 - %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.830, i64 1, i64 0 }) - br i1 %t31, label %then1426, label %endif1428 -then1426: - %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 %endif1428 -endif1428: - %t35 = load ptr, ptr %a1 - %t36 = call i1 @finch.parser.accept(ptr %t35, { ptr, i64, i64 } { ptr @.str.831, i64 1, i64 0 }) - br i1 %t36, label %then1429, label %endif1431 -then1429: - %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 - store { ptr, i64, i64 } %t38, ptr %a40 - call void @finch_str_copy(ptr %a41, ptr %a40) - %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.832, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.833, 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 %endif1431 -endif1431: - %t50 = load ptr, ptr %a1 - %t51 = call %S.lexer.Token @finch.parser.expect(ptr %t50, { ptr, i64, i64 } { ptr @.str.834, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.835, i64 3, i64 0 }) - %t52 = load ptr, ptr %a1 - %t53 = icmp eq ptr %t52, null - br i1 %t53, label %panic1432, label %ok1433 -panic1432: - call void @finch_panic(ptr @.str.836, i64 398, ptr @.str.837) + %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.830, i64 68, i64 0 }) + store %S.lexer.Token %t22, ptr %a23 + call void @finch.drop.S_lexer_Token(ptr %a23) + br label %endif1479 +endif1479: + %t24 = load ptr, ptr %a1 + %t25 = call %S.lexer.Token @finch.parser.expect(ptr %t24, { ptr, i64, i64 } { ptr @.str.831, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.832, i64 26, i64 0 }) + store %S.lexer.Token %t25, ptr %a26 + call void @finch.drop.S_lexer_Token(ptr %a26) + %t27 = load ptr, ptr %a1 + %t28 = call %S.lexer.Token @finch.parser.expect(ptr %t27, { ptr, i64, i64 } { ptr @.str.833, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.834, i64 15, 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) + %t32 = load { ptr, i64, i64 }, ptr %a31 + store %S.lexer.Token %t28, ptr %a33 + call void @finch.drop.S_lexer_Token(ptr %a33) + %t34 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 1 + %t35 = load { ptr, i64, i64 }, ptr %t34 + store { ptr, i64, i64 } %t32, ptr %t34 + store { ptr, i64, i64 } %t35, ptr %a36 + call void @finch_str_drop(ptr %a36) + %t37 = load ptr, ptr %a1 + %t38 = call i1 @finch.parser.at(ptr %t37, { ptr, i64, i64 } { ptr @.str.835, i64 1, i64 0 }) + br i1 %t38, label %then1480, label %endif1482 +then1480: + %t39 = load ptr, ptr %a1 + %t40 = call { ptr, i64, i64 } @finch.parser.parseTParams(ptr %t39) + %t41 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 3 + %t42 = load { ptr, i64, i64 }, ptr %t41 + store { ptr, i64, i64 } %t40, ptr %t41 + store { ptr, i64, i64 } %t42, ptr %a43 + call void @finch.drop.arr_str(ptr %a43) + br label %endif1482 +endif1482: + %t44 = load ptr, ptr %a1 + %t45 = call i1 @finch.parser.accept(ptr %t44, { ptr, i64, i64 } { ptr @.str.836, i64 1, i64 0 }) + br i1 %t45, label %then1483, label %endif1485 +then1483: + %t46 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 1 + %t47 = load { ptr, i64, i64 }, ptr %t46 + %t48 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 2 + store { ptr, i64, i64 } %t47, ptr %a49 + call void @finch_str_copy(ptr %a50, ptr %a49) + %t51 = load { ptr, i64, i64 }, ptr %a50 + %t52 = load { ptr, i64, i64 }, ptr %t48 + store { ptr, i64, i64 } %t51, ptr %t48 + store { ptr, i64, i64 } %t52, ptr %a53 + call void @finch_str_drop(ptr %a53) + %t54 = load ptr, ptr %a1 + %t55 = call %S.lexer.Token @finch.parser.expect(ptr %t54, { ptr, i64, i64 } { ptr @.str.837, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.838, i64 13, i64 0 }) + %t56 = extractvalue %S.lexer.Token %t55, 1 + store { ptr, i64, i64 } %t56, ptr %a57 + call void @finch_str_copy(ptr %a58, ptr %a57) + %t59 = load { ptr, i64, i64 }, ptr %a58 + store %S.lexer.Token %t55, ptr %a60 + call void @finch.drop.S_lexer_Token(ptr %a60) + %t61 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 1 + %t62 = load { ptr, i64, i64 }, ptr %t61 + store { ptr, i64, i64 } %t59, ptr %t61 + store { ptr, i64, i64 } %t62, ptr %a63 + call void @finch_str_drop(ptr %a63) + br label %endif1485 +endif1485: + %t64 = load ptr, ptr %a1 + %t65 = call %S.lexer.Token @finch.parser.expect(ptr %t64, { ptr, i64, i64 } { ptr @.str.839, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.840, i64 3, i64 0 }) + store %S.lexer.Token %t65, ptr %a66 + call void @finch.drop.S_lexer_Token(ptr %a66) + %t67 = load ptr, ptr %a1 + %t68 = icmp eq ptr %t67, null + br i1 %t68, label %panic1486, label %ok1487 +panic1486: + call void @finch_panic(ptr @.str.841, i64 398, ptr @.str.842) unreachable -ok1433: - %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.838, i64 1, i64 0 }) - %t59 = xor i1 %t58, true - br i1 %t59, label %then1434, label %endif1436 -then1434: - br label %while.cond1437 -while.cond1437: - br label %while.body1438 -while.body1438: - %t60 = load ptr, ptr %a1 - %t61 = call %S.ast.Node @finch.parser.node(ptr %t60, { ptr, i64, i64 } { ptr @.str.839, 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.840, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.841, 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) - %t71 = load { ptr, i64, i64 }, ptr %a70 - %t72 = getelementptr inbounds %S.ast.Node, ptr %a62, i32 0, i32 1 - store { ptr, i64, i64 } %t71, ptr %t72 - %t73 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t74 = getelementptr inbounds { ptr, i64, i64 }, ptr %t73, i32 0, i32 1 - %t75 = load %S.ast.Node, ptr %a62 - store %S.ast.Node %t75, ptr %a76 - call void @finch.copy.S_ast_Node(ptr %a77, ptr %a76) - %t78 = load %S.ast.Node, ptr %a77 - %t79 = load i64, ptr %t74 - %t80 = add i64 %t79, 1 - call void @finch_arr_reserve(ptr %t73, i64 %t80, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t81 = load ptr, ptr %t73 - %t82 = getelementptr inbounds %S.ast.Node, ptr %t81, i64 %t79 - store %S.ast.Node %t78, ptr %t82 - store i64 %t80, ptr %t74 +ok1487: + %t69 = getelementptr inbounds %S.parser.Parser, ptr %t67, i32 0, i32 2 + %t70 = load i64, ptr %t69 + %t71 = add i64 %t70, 1 + store i64 %t71, ptr %t69 + %t72 = load ptr, ptr %a1 + %t73 = call i1 @finch.parser.at(ptr %t72, { ptr, i64, i64 } { ptr @.str.843, i64 1, i64 0 }) + %t74 = xor i1 %t73, true + br i1 %t74, label %then1488, label %endif1490 +then1488: + br label %while.cond1491 +while.cond1491: + br label %while.body1492 +while.body1492: + %t75 = load ptr, ptr %a1 + %t76 = call %S.ast.Node @finch.parser.node(ptr %t75, { ptr, i64, i64 } { ptr @.str.844, i64 5, i64 0 }) + store %S.ast.Node %t76, ptr %a77 + %t78 = load ptr, ptr %a1 + %t79 = call %S.ast.Type @finch.parser.parseType(ptr %t78) + %t80 = getelementptr inbounds %S.ast.Node, ptr %a77, i32 0, i32 5 + %t81 = load %S.ast.Type, ptr %t80 + store %S.ast.Type %t79, ptr %t80 + store %S.ast.Type %t81, ptr %a82 + call void @finch.drop.S_ast_Type(ptr %a82) %t83 = load ptr, ptr %a1 - %t84 = call i1 @finch.parser.accept(ptr %t83, { ptr, i64, i64 } { ptr @.str.842, i64 1, i64 0 }) - %t85 = xor i1 %t84, true - br i1 %t85, label %then1440, label %endif1442 -then1440: - br label %while.end1439 -endif1442: - br label %while.cond1437 -while.end1439: - br label %endif1436 -endif1436: - %t86 = load ptr, ptr %a1 - %t87 = icmp eq ptr %t86, null - br i1 %t87, label %panic1443, label %ok1444 -panic1443: - call void @finch_panic(ptr @.str.843, i64 410, ptr @.str.844) - unreachable -ok1444: - %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.845, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.846, i64 3, i64 0 }) - %t93 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.847, 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.848, i64 2, i64 0 }) - br i1 %t96, label %then1445, label %endif1447 -then1445: - %t97 = load ptr, ptr %a1 - %t98 = call i1 @finch.parser.at(ptr %t97, { ptr, i64, i64 } { ptr @.str.849, i64 1, i64 0 }) - %t99 = xor i1 %t98, true - br i1 %t99, label %then1448, label %endif1450 -then1448: - %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 %endif1450 -endif1450: + %t84 = call %S.lexer.Token @finch.parser.expect(ptr %t83, { ptr, i64, i64 } { ptr @.str.845, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.846, i64 16, i64 0 }) + %t85 = extractvalue %S.lexer.Token %t84, 1 + store { ptr, i64, i64 } %t85, ptr %a86 + call void @finch_str_copy(ptr %a87, ptr %a86) + %t88 = load { ptr, i64, i64 }, ptr %a87 + store %S.lexer.Token %t84, ptr %a89 + call void @finch.drop.S_lexer_Token(ptr %a89) + %t90 = getelementptr inbounds %S.ast.Node, ptr %a77, i32 0, i32 1 + %t91 = load { ptr, i64, i64 }, ptr %t90 + store { ptr, i64, i64 } %t88, ptr %t90 + store { ptr, i64, i64 } %t91, ptr %a92 + call void @finch_str_drop(ptr %a92) + %t93 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 + %t94 = getelementptr inbounds { ptr, i64, i64 }, ptr %t93, i32 0, i32 1 + %t95 = load %S.ast.Node, ptr %a77 + store %S.ast.Node %t95, ptr %a96 + call void @finch.copy.S_ast_Node(ptr %a97, ptr %a96) + %t98 = load %S.ast.Node, ptr %a97 + %t99 = load i64, ptr %t94 + %t100 = add i64 %t99, 1 + call void @finch_arr_reserve(ptr %t93, i64 %t100, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t101 = load ptr, ptr %t93 + %t102 = getelementptr inbounds %S.ast.Node, ptr %t101, i64 %t99 + store %S.ast.Node %t98, ptr %t102 + store i64 %t100, ptr %t94 %t103 = load ptr, ptr %a1 - %t104 = call i1 @finch.parser.accept(ptr %t103, { ptr, i64, i64 } { ptr @.str.850, 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.from1451 -logic.from1451: - br i1 %t108, label %logic.rhs1452, label %logic.end1453 -logic.rhs1452: - %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.851, 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.rend1454 -logic.rend1454: - br label %logic.end1453 -logic.end1453: - %t116 = phi i1 [ false, %logic.from1451 ], [ %t115, %logic.rend1454 ] - br i1 %t116, label %then1455, label %endif1457 -then1455: - %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.852, 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.853, 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 %endif1457 -endif1457: - br label %endif1447 -endif1447: - %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 - %t134 = call %S.ast.Node @finch.parser.parseBlock(ptr %t133) - %t135 = load i64, ptr %t132 - %t136 = add i64 %t135, 1 - call void @finch_arr_reserve(ptr %t131, i64 %t136, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t137 = load ptr, ptr %t131 - %t138 = getelementptr inbounds %S.ast.Node, ptr %t137, i64 %t135 - store %S.ast.Node %t134, ptr %t138 - store i64 %t136, ptr %t132 - %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 %range1458, label %inrange1459 -range1458: - call void @finch_panic_index(ptr @.str.854, i64 423, i64 %t143, i64 %t145) + %t104 = call i1 @finch.parser.accept(ptr %t103, { ptr, i64, i64 } { ptr @.str.847, i64 1, i64 0 }) + %t105 = xor i1 %t104, true + br i1 %t105, label %then1494, label %endif1496 +then1494: + call void @finch.drop.S_ast_Node(ptr %a77) + br label %while.end1493 +endif1496: + call void @finch.drop.S_ast_Node(ptr %a77) + br label %while.cond1491 +while.end1493: + br label %endif1490 +endif1490: + %t106 = load ptr, ptr %a1 + %t107 = icmp eq ptr %t106, null + br i1 %t107, label %panic1497, label %ok1498 +panic1497: + call void @finch_panic(ptr @.str.848, i64 410, ptr @.str.849) unreachable -inrange1459: - %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 +ok1498: + %t108 = getelementptr inbounds %S.parser.Parser, ptr %t106, i32 0, i32 2 + %t109 = load i64, ptr %t108 + %t110 = sub i64 %t109, 1 + store i64 %t110, ptr %t108 + %t111 = load ptr, ptr %a1 + %t112 = call %S.lexer.Token @finch.parser.expect(ptr %t111, { ptr, i64, i64 } { ptr @.str.850, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.851, i64 3, i64 0 }) + store %S.lexer.Token %t112, ptr %a113 + call void @finch.drop.S_lexer_Token(ptr %a113) + %t114 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.852, i64 4, i64 0 }) + %t115 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 5 + %t116 = load %S.ast.Type, ptr %t115 + store %S.ast.Type %t114, ptr %t115 + store %S.ast.Type %t116, ptr %a117 + call void @finch.drop.S_ast_Type(ptr %a117) + %t118 = load ptr, ptr %a1 + %t119 = call i1 @finch.parser.accept(ptr %t118, { ptr, i64, i64 } { ptr @.str.853, i64 2, i64 0 }) + br i1 %t119, label %then1499, label %endif1501 +then1499: + %t120 = load ptr, ptr %a1 + %t121 = call i1 @finch.parser.at(ptr %t120, { ptr, i64, i64 } { ptr @.str.854, i64 1, i64 0 }) + %t122 = xor i1 %t121, true + br i1 %t122, label %then1502, label %endif1504 +then1502: + %t123 = load ptr, ptr %a1 + %t124 = call %S.ast.Type @finch.parser.parseType(ptr %t123) + %t125 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 5 + %t126 = load %S.ast.Type, ptr %t125 + store %S.ast.Type %t124, ptr %t125 + store %S.ast.Type %t126, ptr %a127 + call void @finch.drop.S_ast_Type(ptr %a127) + br label %endif1504 +endif1504: + %t128 = load ptr, ptr %a1 + %t129 = call i1 @finch.parser.accept(ptr %t128, { ptr, i64, i64 } { ptr @.str.855, i64 1, i64 0 }) + %t130 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 7 + store i1 %t129, ptr %t130 + %t131 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 7 + %t132 = load i1, ptr %t131 + %t133 = xor i1 %t132, true + br label %logic.from1505 +logic.from1505: + br i1 %t133, label %logic.rhs1506, label %logic.end1507 +logic.rhs1506: + %t134 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 5 + %t135 = getelementptr inbounds %S.ast.Type, ptr %t134, i32 0, i32 0 + %t136 = load { ptr, i64, i64 }, ptr %t135 + store { ptr, i64, i64 } %t136, ptr %a137 + store { ptr, i64, i64 } { ptr @.str.856, i64 4, i64 0 }, ptr %a138 + %t139 = call i32 @finch_str_eq(ptr %a137, ptr %a138) + %t140 = icmp ne i32 %t139, 0 + br label %logic.rend1508 +logic.rend1508: + br label %logic.end1507 +logic.end1507: + %t141 = phi i1 [ false, %logic.from1505 ], [ %t140, %logic.rend1508 ] + br i1 %t141, label %then1509, label %endif1511 +then1509: + %t142 = load ptr, ptr %a1 + %t143 = load ptr, ptr %a1 + %t144 = call %S.lexer.Token @finch.parser.cur(ptr %t143) + %t145 = load ptr, ptr %a1 + %t146 = call %S.lexer.Token @finch.parser.cur(ptr %t145) + %t147 = call { ptr, i64, i64 } @finch.parser.describe(%S.lexer.Token %t146) + store %S.lexer.Token %t146, ptr %a148 + call void @finch.drop.S_lexer_Token(ptr %a148) + store { ptr, i64, i64 } { ptr @.str.857, i64 11, i64 0 }, ptr %a150 + store { ptr, i64, i64 } %t147, ptr %a151 + call void @finch_str_concat(ptr %a149, ptr %a150, ptr %a151) + store { ptr, i64, i64 } %t147, ptr %a152 + call void @finch_str_drop(ptr %a152) + %t153 = load { ptr, i64, i64 }, ptr %a149 + store { ptr, i64, i64 } %t153, ptr %a155 + store { ptr, i64, i64 } { ptr @.str.858, i64 61, i64 0 }, ptr %a156 + call void @finch_str_concat(ptr %a154, ptr %a155, ptr %a156) + store { ptr, i64, i64 } %t153, ptr %a157 + call void @finch_str_drop(ptr %a157) + %t158 = load { ptr, i64, i64 }, ptr %a154 + call void @finch.parser.fail(ptr %t142, %S.lexer.Token %t144, { ptr, i64, i64 } %t158) + store %S.lexer.Token %t144, ptr %a159 + call void @finch.drop.S_lexer_Token(ptr %a159) + store { ptr, i64, i64 } %t158, ptr %a160 + call void @finch_str_drop(ptr %a160) + br label %endif1511 +endif1511: + br label %endif1501 +endif1501: + %t161 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 + %t162 = getelementptr inbounds { ptr, i64, i64 }, ptr %t161, i32 0, i32 1 + %t163 = load ptr, ptr %a1 + %t164 = call %S.ast.Node @finch.parser.parseBlock(ptr %t163) + %t165 = load i64, ptr %t162 + %t166 = add i64 %t165, 1 + call void @finch_arr_reserve(ptr %t161, i64 %t166, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t167 = load ptr, ptr %t161 + %t168 = getelementptr inbounds %S.ast.Node, ptr %t167, i64 %t165 + store %S.ast.Node %t164, ptr %t168 + store i64 %t166, ptr %t162 + %t169 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 + %t170 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 + %t171 = getelementptr inbounds { ptr, i64, i64 }, ptr %t170, i32 0, i32 1 + %t172 = load i64, ptr %t171 + %t173 = sub i64 %t172, 1 + %t174 = load { ptr, i64, i64 }, ptr %t169 + %t175 = extractvalue { ptr, i64, i64 } %t174, 1 + %t176 = icmp uge i64 %t173, %t175 + br i1 %t176, label %range1512, label %inrange1513 +range1512: + call void @finch_panic_index(ptr @.str.859, i64 423, i64 %t173, i64 %t175) + unreachable +inrange1513: + %t177 = extractvalue { ptr, i64, i64 } %t174, 0 + %t178 = getelementptr inbounds %S.ast.Node, ptr %t177, i64 %t173 + %t179 = getelementptr inbounds %S.ast.Node, ptr %t178, i32 0, i32 14 + %t180 = load i64, ptr %t179 + %t181 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 14 + store i64 %t180, ptr %t181 + %t182 = load %S.ast.Node, ptr %a4 + ret %S.ast.Node %t182 } define internal %S.ast.Node @finch.parser.parseBlock(ptr %p0) { entry: %a1 = alloca ptr, align 16 %a4 = alloca %S.ast.Node, align 16 - %a11 = alloca i64, align 16 - %a43 = alloca %S.ast.Node, align 16 - %a44 = alloca %S.ast.Node, align 16 + %a7 = alloca %S.lexer.Token, align 16 + %a12 = alloca i64, align 16 + %a24 = alloca %S.lexer.Token, align 16 + %a41 = alloca %S.lexer.Token, align 16 + %a45 = alloca %S.lexer.Token, 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.855, i64 5, i64 0 }) + %t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.860, 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.856, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.857, i64 3, i64 0 }) - %t7 = load ptr, ptr %a1 - %t8 = icmp eq ptr %t7, null - br i1 %t8, label %panic1460, label %ok1461 -panic1460: - call void @finch_panic(ptr @.str.858, i64 432, ptr @.str.859) + %t6 = call %S.lexer.Token @finch.parser.expect(ptr %t5, { ptr, i64, i64 } { ptr @.str.861, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.862, i64 3, i64 0 }) + store %S.lexer.Token %t6, ptr %a7 + call void @finch.drop.S_lexer_Token(ptr %a7) + %t8 = load ptr, ptr %a1 + %t9 = icmp eq ptr %t8, null + br i1 %t9, label %panic1514, label %ok1515 +panic1514: + call void @finch_panic(ptr @.str.863, i64 432, ptr @.str.864) unreachable -ok1461: - %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 %panic1462, label %ok1463 -panic1462: - call void @finch_panic(ptr @.str.860, i64 433, ptr @.str.861) +ok1515: + %t10 = getelementptr inbounds %S.parser.Parser, ptr %t8, i32 0, i32 2 + %t11 = load i64, ptr %t10 + store i64 %t11, ptr %a12 + %t13 = load ptr, ptr %a1 + %t14 = icmp eq ptr %t13, null + br i1 %t14, label %panic1516, label %ok1517 +panic1516: + call void @finch_panic(ptr @.str.865, i64 433, ptr @.str.866) unreachable -ok1463: - %t14 = getelementptr inbounds %S.parser.Parser, ptr %t12, i32 0, i32 2 - store i64 0, ptr %t14 - br label %while.cond1464 -while.cond1464: - %t15 = load ptr, ptr %a1 - %t16 = call i1 @finch.parser.at(ptr %t15, { ptr, i64, i64 } { ptr @.str.862, i64 1, i64 0 }) - %t17 = xor i1 %t16, true - br i1 %t17, label %while.body1465, label %while.end1466 -while.body1465: - %t18 = load ptr, ptr %a1 - %t19 = call i1 @finch.parser.at(ptr %t18, { ptr, i64, i64 } { ptr @.str.863, i64 3, i64 0 }) - br i1 %t19, label %then1467, label %endif1469 -then1467: - %t20 = load ptr, ptr %a1 +ok1517: + %t15 = getelementptr inbounds %S.parser.Parser, ptr %t13, i32 0, i32 2 + store i64 0, ptr %t15 + br label %while.cond1518 +while.cond1518: + %t16 = load ptr, ptr %a1 + %t17 = call i1 @finch.parser.at(ptr %t16, { ptr, i64, i64 } { ptr @.str.867, i64 1, i64 0 }) + %t18 = xor i1 %t17, true + br i1 %t18, label %while.body1519, label %while.end1520 +while.body1519: + %t19 = load ptr, ptr %a1 + %t20 = call i1 @finch.parser.at(ptr %t19, { ptr, i64, i64 } { ptr @.str.868, i64 3, i64 0 }) + br i1 %t20, label %then1521, label %endif1523 +then1521: %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.864, i64 35, i64 0 }) - br label %endif1469 -endif1469: - %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 - %t26 = call %S.ast.Node @finch.parser.parseStatement(ptr %t25) - %t27 = load i64, ptr %t24 - %t28 = add i64 %t27, 1 - call void @finch_arr_reserve(ptr %t23, i64 %t28, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t29 = load ptr, ptr %t23 - %t30 = getelementptr inbounds %S.ast.Node, ptr %t29, i64 %t27 - store %S.ast.Node %t26, ptr %t30 - store i64 %t28, ptr %t24 - %t31 = load ptr, ptr %a1 - call void @finch.parser.endOfStatement(ptr %t31) - br label %while.cond1464 -while.end1466: - %t32 = load i64, ptr %a11 + %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.869, i64 35, i64 0 }) + store %S.lexer.Token %t23, ptr %a24 + call void @finch.drop.S_lexer_Token(ptr %a24) + br label %endif1523 +endif1523: + %t25 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 + %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t25, i32 0, i32 1 + %t27 = load ptr, ptr %a1 + %t28 = call %S.ast.Node @finch.parser.parseStatement(ptr %t27) + %t29 = load i64, ptr %t26 + %t30 = add i64 %t29, 1 + call void @finch_arr_reserve(ptr %t25, i64 %t30, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t31 = load ptr, ptr %t25 + %t32 = getelementptr inbounds %S.ast.Node, ptr %t31, i64 %t29 + store %S.ast.Node %t28, ptr %t32 + store i64 %t30, ptr %t26 %t33 = load ptr, ptr %a1 - %t34 = icmp eq ptr %t33, null - br i1 %t34, label %panic1470, label %ok1471 -panic1470: - call void @finch_panic(ptr @.str.865, i64 441, ptr @.str.866) + call void @finch.parser.endOfStatement(ptr %t33) + br label %while.cond1518 +while.end1520: + %t34 = load i64, ptr %a12 + %t35 = load ptr, ptr %a1 + %t36 = icmp eq ptr %t35, null + br i1 %t36, label %panic1524, label %ok1525 +panic1524: + call void @finch_panic(ptr @.str.870, i64 441, ptr @.str.871) unreachable -ok1471: - %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.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 +ok1525: + %t37 = getelementptr inbounds %S.parser.Parser, ptr %t35, i32 0, i32 2 + store i64 %t34, ptr %t37 + %t38 = load ptr, ptr %a1 + %t39 = call %S.lexer.Token @finch.parser.cur(ptr %t38) + %t40 = extractvalue %S.lexer.Token %t39, 2 + store %S.lexer.Token %t39, ptr %a41 + call void @finch.drop.S_lexer_Token(ptr %a41) + %t42 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 14 + store i64 %t40, ptr %t42 + %t43 = load ptr, ptr %a1 + %t44 = call %S.lexer.Token @finch.parser.next(ptr %t43) + store %S.lexer.Token %t44, ptr %a45 + call void @finch.drop.S_lexer_Token(ptr %a45) + %t46 = load %S.ast.Node, ptr %a4 + ret %S.ast.Node %t46 } define internal %S.ast.Node @finch.parser.parseStatement(ptr %p0) { @@ -16665,846 +18555,945 @@ entry: %a13 = alloca { ptr, i64, i64 }, align 16 %a14 = alloca { ptr, i64, i64 }, align 16 %a19 = alloca %S.ast.Node, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 + %a22 = alloca %S.lexer.Token, align 16 %a41 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca %S.ast.Node, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 + %a42 = alloca { ptr, i64, i64 }, align 16 + %a47 = alloca %S.ast.Node, align 16 + %a50 = alloca %S.lexer.Token, align 16 + %a54 = alloca { ptr, i64, i64 }, align 16 + %a55 = alloca { ptr, i64, i64 }, align 16 + %a57 = alloca %S.lexer.Token, align 16 + %a60 = alloca { ptr, i64, i64 }, align 16 + %a66 = alloca { ptr, i64, i64 }, align 16 + %a67 = alloca { ptr, i64, i64 }, align 16 + %a69 = alloca %S.lexer.Token, align 16 + %a72 = alloca { ptr, i64, i64 }, align 16 + %a75 = alloca %S.lexer.Token, align 16 + %a93 = alloca %S.lexer.Token, align 16 %a104 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca %S.ast.Node, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca %S.ast.Node, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 + %a115 = alloca { ptr, i64, i64 }, align 16 + %a116 = alloca { ptr, i64, i64 }, align 16 + %a122 = alloca { ptr, i64, i64 }, align 16 + %a123 = alloca { ptr, i64, i64 }, align 16 + %a128 = alloca %S.ast.Node, align 16 + %a131 = alloca %S.lexer.Token, align 16 + %a138 = alloca %S.lexer.Token, align 16 + %a151 = alloca { ptr, i64, i64 }, align 16 + %a152 = alloca { ptr, i64, i64 }, align 16 %a156 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca %S.ast.Node, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 + %a157 = alloca { ptr, i64, i64 }, align 16 + %a164 = alloca %S.ast.Node, align 16 + %a167 = alloca %S.lexer.Token, align 16 + %a170 = alloca { ptr, i64, i64 }, align 16 + %a171 = alloca { ptr, i64, i64 }, align 16 + %a177 = alloca { ptr, i64, i64 }, align 16 + %a178 = alloca { ptr, i64, i64 }, align 16 + %a183 = alloca %S.ast.Node, align 16 + %a186 = alloca %S.lexer.Token, align 16 + %a192 = alloca %S.lexer.Token, align 16 %a203 = alloca { ptr, i64, i64 }, align 16 %a204 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 + %a208 = alloca { ptr, i64, i64 }, align 16 + %a209 = alloca { ptr, i64, i64 }, align 16 %a214 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca %S.ast.Node, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 + %a215 = alloca { ptr, i64, i64 }, align 16 + %a220 = alloca { ptr, i64, i64 }, align 16 + %a221 = alloca { ptr, i64, i64 }, align 16 + %a229 = alloca { ptr, i64, i64 }, align 16 + %a230 = alloca { ptr, i64, i64 }, align 16 + %a231 = alloca { ptr, i64, i64 }, align 16 %a233 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca %S.ast.Node, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca %S.lexer.Token, align 16 - %a282 = alloca %S.ast.Node, align 16 + %a234 = alloca { ptr, i64, i64 }, align 16 + %a235 = alloca { ptr, i64, i64 }, align 16 + %a236 = alloca { ptr, i64, i64 }, align 16 + %a238 = alloca %S.lexer.Token, align 16 + %a239 = alloca { ptr, i64, i64 }, align 16 + %a244 = alloca %S.ast.Node, align 16 + %a250 = alloca %S.ast.Type, align 16 + %a254 = alloca { ptr, i64, i64 }, align 16 + %a255 = alloca { ptr, i64, i64 }, align 16 + %a257 = alloca %S.lexer.Token, align 16 + %a260 = alloca { ptr, i64, i64 }, align 16 + %a276 = alloca { ptr, i64, i64 }, align 16 + %a277 = alloca { ptr, i64, i64 }, align 16 + %a280 = alloca { ptr, i64, i64 }, align 16 + %a284 = alloca %S.ast.Node, align 16 + %a288 = alloca { ptr, i64, i64 }, align 16 + %a289 = alloca { ptr, i64, i64 }, align 16 + %a291 = alloca %S.lexer.Token, align 16 %a294 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca i64, align 16 - %a301 = alloca i64, align 16 - %a306 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 + %a297 = alloca %S.lexer.Token, align 16 + %a309 = alloca %S.lexer.Token, align 16 + %a312 = alloca %S.ast.Node, align 16 %a324 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca %S.ast.Node, align 16 - %a354 = alloca { ptr, i64, i64 }, align 16 + %a328 = alloca i64, align 16 + %a331 = alloca i64, align 16 + %a336 = alloca { ptr, i64, i64 }, align 16 + %a337 = alloca { ptr, i64, i64 }, align 16 + %a341 = alloca { ptr, i64, i64 }, align 16 + %a349 = alloca { ptr, i64, i64 }, align 16 + %a350 = alloca { ptr, i64, i64 }, align 16 %a355 = alloca { ptr, i64, i64 }, align 16 - %a361 = alloca %S.ast.Node, align 16 - %a362 = alloca %S.ast.Node, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 + %a356 = alloca { ptr, i64, i64 }, align 16 + %a362 = alloca { ptr, i64, i64 }, align 16 + %a363 = alloca { ptr, i64, i64 }, align 16 + %a381 = alloca %S.ast.Node, align 16 %a385 = alloca { ptr, i64, i64 }, align 16 %a386 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca { ptr, i64, i64 }, align 16 - %a393 = alloca { ptr, i64, i64 }, align 16 - %a399 = alloca { ptr, i64, i64 }, align 16 - %a400 = alloca { ptr, i64, i64 }, align 16 - %a418 = alloca %S.ast.Node, align 16 - %a422 = alloca %S.ast.Node, align 16 - %a423 = alloca %S.ast.Node, align 16 - %a430 = alloca %S.ast.Node, align 16 - %a431 = alloca %S.ast.Node, align 16 + %a388 = alloca %S.lexer.Token, align 16 + %a391 = alloca { ptr, i64, i64 }, align 16 + %a395 = alloca %S.ast.Node, align 16 + %a396 = alloca %S.ast.Node, align 16 + %a413 = alloca { ptr, i64, i64 }, align 16 + %a414 = alloca { ptr, i64, i64 }, align 16 + %a419 = alloca { ptr, i64, i64 }, align 16 + %a420 = alloca { ptr, i64, i64 }, align 16 + %a426 = alloca { ptr, i64, i64 }, align 16 + %a427 = alloca { ptr, i64, i64 }, align 16 + %a433 = alloca { ptr, i64, i64 }, align 16 + %a434 = alloca { ptr, i64, i64 }, align 16 + %a452 = alloca %S.ast.Node, align 16 + %a456 = alloca %S.ast.Node, align 16 + %a457 = alloca %S.ast.Node, align 16 store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 %t3 = call { ptr, i64, i64 } @finch.parser.curKind(ptr %t2) 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.867, i64 2, i64 0 }, ptr %a7 + store { ptr, i64, i64 } { ptr @.str.872, 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 %then1472, label %endif1474 -then1472: + br i1 %t9, label %then1526, label %endif1528 +then1526: %t10 = load ptr, ptr %a1 %t11 = call %S.ast.Node @finch.parser.parseIf(ptr %t10) + call void @finch_str_drop(ptr %a4) ret %S.ast.Node %t11 -endif1474: +endif1528: %t12 = load { ptr, i64, i64 }, ptr %a4 store { ptr, i64, i64 } %t12, ptr %a13 - store { ptr, i64, i64 } { ptr @.str.868, i64 5, i64 0 }, ptr %a14 + store { ptr, i64, i64 } { ptr @.str.873, 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 %then1475, label %endif1477 -then1475: + br i1 %t16, label %then1529, label %endif1531 +then1529: %t17 = load ptr, ptr %a1 - %t18 = call %S.ast.Node @finch.parser.node(ptr %t17, { ptr, i64, i64 } { ptr @.str.869, i64 5, i64 0 }) + %t18 = call %S.ast.Node @finch.parser.node(ptr %t17, { ptr, i64, i64 } { ptr @.str.874, 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) - %t22 = getelementptr inbounds %S.ast.Node, ptr %a19, i32 0, i32 9 - %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t22, i32 0, i32 1 - %t24 = load ptr, ptr %a1 - %t25 = call %S.ast.Node @finch.parser.parseExpr(ptr %t24) - %t26 = load i64, ptr %t23 - %t27 = add i64 %t26, 1 - call void @finch_arr_reserve(ptr %t22, i64 %t27, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t28 = load ptr, ptr %t22 - %t29 = getelementptr inbounds %S.ast.Node, ptr %t28, i64 %t26 - store %S.ast.Node %t25, ptr %t29 - store i64 %t27, ptr %t23 - %t30 = getelementptr inbounds %S.ast.Node, ptr %a19, i32 0, i32 9 - %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t30, i32 0, i32 1 - %t32 = load ptr, ptr %a1 - %t33 = call %S.ast.Node @finch.parser.parseBlock(ptr %t32) - %t34 = load i64, ptr %t31 - %t35 = add i64 %t34, 1 - call void @finch_arr_reserve(ptr %t30, i64 %t35, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t36 = load ptr, ptr %t30 - %t37 = getelementptr inbounds %S.ast.Node, ptr %t36, i64 %t34 - store %S.ast.Node %t33, ptr %t37 - store i64 %t35, ptr %t31 - %t38 = load %S.ast.Node, ptr %a19 - ret %S.ast.Node %t38 -endif1477: - %t39 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t39, ptr %a40 - store { ptr, i64, i64 } { ptr @.str.870, 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 %then1478, label %endif1480 -then1478: - %t44 = load ptr, ptr %a1 - %t45 = call %S.ast.Node @finch.parser.node(ptr %t44, { ptr, i64, i64 } { ptr @.str.871, 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.872, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.873, 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) - %t54 = load { ptr, i64, i64 }, ptr %a53 - %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.874, i64 1, i64 0 }) - br i1 %t57, label %then1481, label %endif1483 -then1481: - %t58 = load ptr, ptr %a1 - %t59 = call %S.lexer.Token @finch.parser.expect(ptr %t58, { ptr, i64, i64 } { ptr @.str.875, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.876, 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 %endif1483 -endif1483: - %t65 = load ptr, ptr %a1 - %t66 = call %S.lexer.Token @finch.parser.expect(ptr %t65, { ptr, i64, i64 } { ptr @.str.877, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.878, 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 - %t70 = call %S.ast.Node @finch.parser.parseExpr(ptr %t69) - %t71 = load i64, ptr %t68 - %t72 = add i64 %t71, 1 - call void @finch_arr_reserve(ptr %t67, i64 %t72, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t73 = load ptr, ptr %t67 - %t74 = getelementptr inbounds %S.ast.Node, ptr %t73, i64 %t71 - 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.879, i64 2, i64 0 }) - br i1 %t76, label %then1484, label %else1485 -then1484: - %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 %then1487, label %endif1489 -then1487: - %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.880, i64 55, i64 0 }) - br label %endif1489 -endif1489: - %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 - %t87 = call %S.ast.Node @finch.parser.parseExpr(ptr %t86) - %t88 = load i64, ptr %t85 - %t89 = add i64 %t88, 1 - call void @finch_arr_reserve(ptr %t84, i64 %t89, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t90 = load ptr, ptr %t84 - %t91 = getelementptr inbounds %S.ast.Node, ptr %t90, i64 %t88 - store %S.ast.Node %t87, ptr %t91 - store i64 %t89, ptr %t85 - br label %endif1486 -else1485: - %t92 = getelementptr inbounds %S.ast.Node, ptr %a46, i32 0, i32 0 - store { ptr, i64, i64 } { ptr @.str.881, i64 4, i64 0 }, ptr %t92 - br label %endif1486 -endif1486: - %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 - %t96 = call %S.ast.Node @finch.parser.parseBlock(ptr %t95) - %t97 = load i64, ptr %t94 - %t98 = add i64 %t97, 1 - call void @finch_arr_reserve(ptr %t93, i64 %t98, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t99 = load ptr, ptr %t93 - %t100 = getelementptr inbounds %S.ast.Node, ptr %t99, i64 %t97 - store %S.ast.Node %t96, ptr %t100 - store i64 %t98, ptr %t94 - %t101 = load %S.ast.Node, ptr %a46 - ret %S.ast.Node %t101 -endif1480: - %t102 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t102, ptr %a103 - store { ptr, i64, i64 } { ptr @.str.882, 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 %then1490, label %endif1492 -then1490: + store %S.lexer.Token %t21, ptr %a22 + call void @finch.drop.S_lexer_Token(ptr %a22) + %t23 = getelementptr inbounds %S.ast.Node, ptr %a19, i32 0, i32 9 + %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t23, i32 0, i32 1 + %t25 = load ptr, ptr %a1 + %t26 = call %S.ast.Node @finch.parser.parseExpr(ptr %t25) + %t27 = load i64, ptr %t24 + %t28 = add i64 %t27, 1 + call void @finch_arr_reserve(ptr %t23, i64 %t28, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t29 = load ptr, ptr %t23 + %t30 = getelementptr inbounds %S.ast.Node, ptr %t29, i64 %t27 + store %S.ast.Node %t26, ptr %t30 + store i64 %t28, ptr %t24 + %t31 = getelementptr inbounds %S.ast.Node, ptr %a19, i32 0, i32 9 + %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %t31, i32 0, i32 1 + %t33 = load ptr, ptr %a1 + %t34 = call %S.ast.Node @finch.parser.parseBlock(ptr %t33) + %t35 = load i64, ptr %t32 + %t36 = add i64 %t35, 1 + call void @finch_arr_reserve(ptr %t31, i64 %t36, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t37 = load ptr, ptr %t31 + %t38 = getelementptr inbounds %S.ast.Node, ptr %t37, i64 %t35 + store %S.ast.Node %t34, ptr %t38 + store i64 %t36, ptr %t32 + %t39 = load %S.ast.Node, ptr %a19 + call void @finch_str_drop(ptr %a4) + ret %S.ast.Node %t39 +endif1531: + %t40 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t40, ptr %a41 + store { ptr, i64, i64 } { ptr @.str.875, i64 3, i64 0 }, ptr %a42 + %t43 = call i32 @finch_str_eq(ptr %a41, ptr %a42) + %t44 = icmp ne i32 %t43, 0 + br i1 %t44, label %then1532, label %endif1534 +then1532: + %t45 = load ptr, ptr %a1 + %t46 = call %S.ast.Node @finch.parser.node(ptr %t45, { ptr, i64, i64 } { ptr @.str.876, i64 3, i64 0 }) + store %S.ast.Node %t46, ptr %a47 + %t48 = load ptr, ptr %a1 + %t49 = call %S.lexer.Token @finch.parser.next(ptr %t48) + store %S.lexer.Token %t49, ptr %a50 + call void @finch.drop.S_lexer_Token(ptr %a50) + %t51 = load ptr, ptr %a1 + %t52 = call %S.lexer.Token @finch.parser.expect(ptr %t51, { ptr, i64, i64 } { ptr @.str.877, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.878, i64 20, i64 0 }) + %t53 = extractvalue %S.lexer.Token %t52, 1 + store { ptr, i64, i64 } %t53, ptr %a54 + call void @finch_str_copy(ptr %a55, ptr %a54) + %t56 = load { ptr, i64, i64 }, ptr %a55 + store %S.lexer.Token %t52, ptr %a57 + call void @finch.drop.S_lexer_Token(ptr %a57) + %t58 = getelementptr inbounds %S.ast.Node, ptr %a47, i32 0, i32 1 + %t59 = load { ptr, i64, i64 }, ptr %t58 + store { ptr, i64, i64 } %t56, ptr %t58 + store { ptr, i64, i64 } %t59, ptr %a60 + call void @finch_str_drop(ptr %a60) + %t61 = load ptr, ptr %a1 + %t62 = call i1 @finch.parser.accept(ptr %t61, { ptr, i64, i64 } { ptr @.str.879, i64 1, i64 0 }) + br i1 %t62, label %then1535, label %endif1537 +then1535: + %t63 = load ptr, ptr %a1 + %t64 = call %S.lexer.Token @finch.parser.expect(ptr %t63, { ptr, i64, i64 } { ptr @.str.880, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.881, i64 27, i64 0 }) + %t65 = extractvalue %S.lexer.Token %t64, 1 + store { ptr, i64, i64 } %t65, ptr %a66 + call void @finch_str_copy(ptr %a67, ptr %a66) + %t68 = load { ptr, i64, i64 }, ptr %a67 + store %S.lexer.Token %t64, ptr %a69 + call void @finch.drop.S_lexer_Token(ptr %a69) + %t70 = getelementptr inbounds %S.ast.Node, ptr %a47, i32 0, i32 4 + %t71 = load { ptr, i64, i64 }, ptr %t70 + store { ptr, i64, i64 } %t68, ptr %t70 + store { ptr, i64, i64 } %t71, ptr %a72 + call void @finch_str_drop(ptr %a72) + br label %endif1537 +endif1537: + %t73 = load ptr, ptr %a1 + %t74 = call %S.lexer.Token @finch.parser.expect(ptr %t73, { ptr, i64, i64 } { ptr @.str.882, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.883, i64 4, i64 0 }) + store %S.lexer.Token %t74, ptr %a75 + call void @finch.drop.S_lexer_Token(ptr %a75) + %t76 = getelementptr inbounds %S.ast.Node, ptr %a47, i32 0, i32 9 + %t77 = getelementptr inbounds { ptr, i64, i64 }, ptr %t76, i32 0, i32 1 + %t78 = load ptr, ptr %a1 + %t79 = call %S.ast.Node @finch.parser.parseExpr(ptr %t78) + %t80 = load i64, ptr %t77 + %t81 = add i64 %t80, 1 + call void @finch_arr_reserve(ptr %t76, i64 %t81, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t82 = load ptr, ptr %t76 + %t83 = getelementptr inbounds %S.ast.Node, ptr %t82, i64 %t80 + store %S.ast.Node %t79, ptr %t83 + store i64 %t81, ptr %t77 + %t84 = load ptr, ptr %a1 + %t85 = call i1 @finch.parser.accept(ptr %t84, { ptr, i64, i64 } { ptr @.str.884, i64 2, i64 0 }) + br i1 %t85, label %then1538, label %else1539 +then1538: + %t86 = getelementptr inbounds %S.ast.Node, ptr %a47, i32 0, i32 4 + %t87 = getelementptr inbounds { ptr, i64, i64 }, ptr %t86, i32 0, i32 1 + %t88 = load i64, ptr %t87 + %t89 = icmp sgt i64 %t88, 0 + br i1 %t89, label %then1541, label %endif1543 +then1541: + %t90 = load ptr, ptr %a1 + %t91 = load ptr, ptr %a1 + %t92 = call %S.lexer.Token @finch.parser.cur(ptr %t91) + call void @finch.parser.fail(ptr %t90, %S.lexer.Token %t92, { ptr, i64, i64 } { ptr @.str.885, i64 55, i64 0 }) + store %S.lexer.Token %t92, ptr %a93 + call void @finch.drop.S_lexer_Token(ptr %a93) + br label %endif1543 +endif1543: + %t94 = getelementptr inbounds %S.ast.Node, ptr %a47, i32 0, i32 9 + %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %t94, i32 0, i32 1 + %t96 = load ptr, ptr %a1 + %t97 = call %S.ast.Node @finch.parser.parseExpr(ptr %t96) + %t98 = load i64, ptr %t95 + %t99 = add i64 %t98, 1 + call void @finch_arr_reserve(ptr %t94, i64 %t99, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t100 = load ptr, ptr %t94 + %t101 = getelementptr inbounds %S.ast.Node, ptr %t100, i64 %t98 + store %S.ast.Node %t97, ptr %t101 + store i64 %t99, ptr %t95 + br label %endif1540 +else1539: + %t102 = getelementptr inbounds %S.ast.Node, ptr %a47, i32 0, i32 0 + %t103 = load { ptr, i64, i64 }, ptr %t102 + store { ptr, i64, i64 } { ptr @.str.886, i64 4, i64 0 }, ptr %t102 + store { ptr, i64, i64 } %t103, ptr %a104 + call void @finch_str_drop(ptr %a104) + br label %endif1540 +endif1540: + %t105 = getelementptr inbounds %S.ast.Node, ptr %a47, i32 0, i32 9 + %t106 = getelementptr inbounds { ptr, i64, i64 }, ptr %t105, i32 0, i32 1 %t107 = load ptr, ptr %a1 - %t108 = call %S.ast.Node @finch.parser.parseMatch(ptr %t107, i1 false) - ret %S.ast.Node %t108 -endif1492: - %t109 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t109, ptr %a110 - store { ptr, i64, i64 } { ptr @.str.883, 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 %then1493, label %endif1495 -then1493: - %t114 = load ptr, ptr %a1 - %t115 = call %S.ast.Node @finch.parser.node(ptr %t114, { ptr, i64, i64 } { ptr @.str.884, 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) + %t108 = call %S.ast.Node @finch.parser.parseBlock(ptr %t107) + %t109 = load i64, ptr %t106 + %t110 = add i64 %t109, 1 + call void @finch_arr_reserve(ptr %t105, i64 %t110, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t111 = load ptr, ptr %t105 + %t112 = getelementptr inbounds %S.ast.Node, ptr %t111, i64 %t109 + store %S.ast.Node %t108, ptr %t112 + store i64 %t110, ptr %t106 + %t113 = load %S.ast.Node, ptr %a47 + call void @finch_str_drop(ptr %a4) + ret %S.ast.Node %t113 +endif1534: + %t114 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t114, ptr %a115 + store { ptr, i64, i64 } { ptr @.str.887, i64 5, i64 0 }, ptr %a116 + %t117 = call i32 @finch_str_eq(ptr %a115, ptr %a116) + %t118 = icmp ne i32 %t117, 0 + br i1 %t118, label %then1544, label %endif1546 +then1544: %t119 = load ptr, ptr %a1 - %t120 = call i1 @finch.parser.at(ptr %t119, { ptr, i64, i64 } { ptr @.str.885, i64 1, i64 0 }) - %t121 = xor i1 %t120, true - br label %logic.from1496 -logic.from1496: - br i1 %t121, label %logic.rhs1497, label %logic.end1498 -logic.rhs1497: - %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.rend1499 -logic.rend1499: - br label %logic.end1498 -logic.end1498: - %t126 = phi i1 [ false, %logic.from1496 ], [ %t125, %logic.rend1499 ] - br i1 %t126, label %then1500, label %endif1502 -then1500: - %t127 = getelementptr inbounds %S.ast.Node, ptr %a116, i32 0, i32 9 - %t128 = getelementptr inbounds { ptr, i64, i64 }, ptr %t127, i32 0, i32 1 + %t120 = call %S.ast.Node @finch.parser.parseMatch(ptr %t119, i1 false) + call void @finch_str_drop(ptr %a4) + ret %S.ast.Node %t120 +endif1546: + %t121 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t121, ptr %a122 + store { ptr, i64, i64 } { ptr @.str.888, i64 6, i64 0 }, ptr %a123 + %t124 = call i32 @finch_str_eq(ptr %a122, ptr %a123) + %t125 = icmp ne i32 %t124, 0 + br i1 %t125, label %then1547, label %endif1549 +then1547: + %t126 = load ptr, ptr %a1 + %t127 = call %S.ast.Node @finch.parser.node(ptr %t126, { ptr, i64, i64 } { ptr @.str.889, i64 6, i64 0 }) + store %S.ast.Node %t127, ptr %a128 %t129 = load ptr, ptr %a1 - %t130 = call %S.ast.Node @finch.parser.parseExpr(ptr %t129) - %t131 = load i64, ptr %t128 - %t132 = add i64 %t131, 1 - call void @finch_arr_reserve(ptr %t127, i64 %t132, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t133 = load ptr, ptr %t127 - %t134 = getelementptr inbounds %S.ast.Node, ptr %t133, i64 %t131 - store %S.ast.Node %t130, ptr %t134 - store i64 %t132, ptr %t128 - br label %endif1502 -endif1502: - %t135 = load %S.ast.Node, ptr %a116 - ret %S.ast.Node %t135 -endif1495: - %t136 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t136, ptr %a137 - store { ptr, i64, i64 } { ptr @.str.886, 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.from1503 -logic.from1503: - br i1 %t140, label %logic.end1505, label %logic.rhs1504 -logic.rhs1504: - %t141 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t141, ptr %a142 - store { ptr, i64, i64 } { ptr @.str.887, 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.rend1506 -logic.rend1506: - br label %logic.end1505 -logic.end1505: - %t146 = phi i1 [ true, %logic.from1503 ], [ %t145, %logic.rend1506 ] - br i1 %t146, label %then1507, label %endif1509 -then1507: - %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) - store %S.ast.Node %t149, ptr %a150 - %t151 = load ptr, ptr %a1 - %t152 = call %S.lexer.Token @finch.parser.next(ptr %t151) - %t153 = load %S.ast.Node, ptr %a150 - ret %S.ast.Node %t153 -endif1509: - %t154 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t154, ptr %a155 - store { ptr, i64, i64 } { ptr @.str.888, 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 %then1510, label %endif1512 -then1510: - %t159 = load ptr, ptr %a1 - %t160 = call %S.ast.Node @finch.parser.parseBlock(ptr %t159) - ret %S.ast.Node %t160 -endif1512: - %t161 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t161, ptr %a162 - store { ptr, i64, i64 } { ptr @.str.889, 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 %then1513, label %endif1515 -then1513: - %t166 = load ptr, ptr %a1 - %t167 = call %S.ast.Node @finch.parser.node(ptr %t166, { ptr, i64, i64 } { ptr @.str.890, 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.891, i64 5, i64 0 }) - br i1 %t172, label %then1516, label %endif1518 -then1516: - %t173 = load ptr, ptr %a1 + %t130 = call %S.lexer.Token @finch.parser.next(ptr %t129) + store %S.lexer.Token %t130, ptr %a131 + call void @finch.drop.S_lexer_Token(ptr %a131) + %t132 = load ptr, ptr %a1 + %t133 = call i1 @finch.parser.at(ptr %t132, { ptr, i64, i64 } { ptr @.str.890, i64 1, i64 0 }) + %t134 = xor i1 %t133, true + br label %logic.from1550 +logic.from1550: + br i1 %t134, label %logic.rhs1551, label %logic.end1552 +logic.rhs1551: + %t135 = load ptr, ptr %a1 + %t136 = call %S.lexer.Token @finch.parser.cur(ptr %t135) + %t137 = extractvalue %S.lexer.Token %t136, 4 + store %S.lexer.Token %t136, ptr %a138 + call void @finch.drop.S_lexer_Token(ptr %a138) + %t139 = xor i1 %t137, true + br label %logic.rend1553 +logic.rend1553: + br label %logic.end1552 +logic.end1552: + %t140 = phi i1 [ false, %logic.from1550 ], [ %t139, %logic.rend1553 ] + br i1 %t140, label %then1554, label %endif1556 +then1554: + %t141 = getelementptr inbounds %S.ast.Node, ptr %a128, i32 0, i32 9 + %t142 = getelementptr inbounds { ptr, i64, i64 }, ptr %t141, i32 0, i32 1 + %t143 = load ptr, ptr %a1 + %t144 = call %S.ast.Node @finch.parser.parseExpr(ptr %t143) + %t145 = load i64, ptr %t142 + %t146 = add i64 %t145, 1 + call void @finch_arr_reserve(ptr %t141, i64 %t146, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t147 = load ptr, ptr %t141 + %t148 = getelementptr inbounds %S.ast.Node, ptr %t147, i64 %t145 + store %S.ast.Node %t144, ptr %t148 + store i64 %t146, ptr %t142 + br label %endif1556 +endif1556: + %t149 = load %S.ast.Node, ptr %a128 + call void @finch_str_drop(ptr %a4) + ret %S.ast.Node %t149 +endif1549: + %t150 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t150, ptr %a151 + store { ptr, i64, i64 } { ptr @.str.891, 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.from1557 +logic.from1557: + br i1 %t154, label %logic.end1559, label %logic.rhs1558 +logic.rhs1558: + %t155 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t155, ptr %a156 + store { ptr, i64, i64 } { ptr @.str.892, i64 8, i64 0 }, ptr %a157 + %t158 = call i32 @finch_str_eq(ptr %a156, ptr %a157) + %t159 = icmp ne i32 %t158, 0 + br label %logic.rend1560 +logic.rend1560: + br label %logic.end1559 +logic.end1559: + %t160 = phi i1 [ true, %logic.from1557 ], [ %t159, %logic.rend1560 ] + br i1 %t160, label %then1561, label %endif1563 +then1561: + %t161 = load ptr, ptr %a1 + %t162 = load { ptr, i64, i64 }, ptr %a4 + %t163 = call %S.ast.Node @finch.parser.node(ptr %t161, { ptr, i64, i64 } %t162) + store %S.ast.Node %t163, ptr %a164 + %t165 = load ptr, ptr %a1 + %t166 = call %S.lexer.Token @finch.parser.next(ptr %t165) + store %S.lexer.Token %t166, ptr %a167 + call void @finch.drop.S_lexer_Token(ptr %a167) + %t168 = load %S.ast.Node, ptr %a164 + call void @finch_str_drop(ptr %a4) + ret %S.ast.Node %t168 +endif1563: + %t169 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t169, ptr %a170 + store { ptr, i64, i64 } { ptr @.str.893, i64 1, i64 0 }, ptr %a171 + %t172 = call i32 @finch_str_eq(ptr %a170, ptr %a171) + %t173 = icmp ne i32 %t172, 0 + br i1 %t173, label %then1564, label %endif1566 +then1564: %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.892, i64 33, i64 0 }) - br label %endif1518 -endif1518: - %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 - %t179 = call %S.ast.Node @finch.parser.parseStatement(ptr %t178) - %t180 = load i64, ptr %t177 - %t181 = add i64 %t180, 1 - call void @finch_arr_reserve(ptr %t176, i64 %t181, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t182 = load ptr, ptr %t176 - %t183 = getelementptr inbounds %S.ast.Node, ptr %t182, i64 %t180 - store %S.ast.Node %t179, ptr %t183 - store i64 %t181, ptr %t177 - %t184 = load %S.ast.Node, ptr %a168 - ret %S.ast.Node %t184 -endif1515: - %t185 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t185, ptr %a186 - store { ptr, i64, i64 } { ptr @.str.893, 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.from1519 -logic.from1519: - br i1 %t189, label %logic.end1521, label %logic.rhs1520 -logic.rhs1520: - %t190 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t190, ptr %a191 - store { ptr, i64, i64 } { ptr @.str.894, 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.rend1522 -logic.rend1522: - br label %logic.end1521 -logic.end1521: - %t195 = phi i1 [ true, %logic.from1519 ], [ %t194, %logic.rend1522 ] - br label %logic.from1523 -logic.from1523: - br i1 %t195, label %logic.end1525, label %logic.rhs1524 -logic.rhs1524: - %t196 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t196, ptr %a197 - store { ptr, i64, i64 } { ptr @.str.895, 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.rend1526 -logic.rend1526: - br label %logic.end1525 -logic.end1525: - %t201 = phi i1 [ true, %logic.from1523 ], [ %t200, %logic.rend1526 ] - br label %logic.from1527 -logic.from1527: - br i1 %t201, label %logic.end1529, label %logic.rhs1528 -logic.rhs1528: + %t175 = call %S.ast.Node @finch.parser.parseBlock(ptr %t174) + call void @finch_str_drop(ptr %a4) + ret %S.ast.Node %t175 +endif1566: + %t176 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t176, ptr %a177 + store { ptr, i64, i64 } { ptr @.str.894, i64 5, i64 0 }, ptr %a178 + %t179 = call i32 @finch_str_eq(ptr %a177, ptr %a178) + %t180 = icmp ne i32 %t179, 0 + br i1 %t180, label %then1567, label %endif1569 +then1567: + %t181 = load ptr, ptr %a1 + %t182 = call %S.ast.Node @finch.parser.node(ptr %t181, { ptr, i64, i64 } { ptr @.str.895, i64 5, i64 0 }) + store %S.ast.Node %t182, ptr %a183 + %t184 = load ptr, ptr %a1 + %t185 = call %S.lexer.Token @finch.parser.next(ptr %t184) + store %S.lexer.Token %t185, ptr %a186 + call void @finch.drop.S_lexer_Token(ptr %a186) + %t187 = load ptr, ptr %a1 + %t188 = call i1 @finch.parser.at(ptr %t187, { ptr, i64, i64 } { ptr @.str.896, i64 5, i64 0 }) + br i1 %t188, label %then1570, label %endif1572 +then1570: + %t189 = load ptr, ptr %a1 + %t190 = load ptr, ptr %a1 + %t191 = call %S.lexer.Token @finch.parser.cur(ptr %t190) + call void @finch.parser.fail(ptr %t189, %S.lexer.Token %t191, { ptr, i64, i64 } { ptr @.str.897, i64 33, i64 0 }) + store %S.lexer.Token %t191, ptr %a192 + call void @finch.drop.S_lexer_Token(ptr %a192) + br label %endif1572 +endif1572: + %t193 = getelementptr inbounds %S.ast.Node, ptr %a183, i32 0, i32 9 + %t194 = getelementptr inbounds { ptr, i64, i64 }, ptr %t193, i32 0, i32 1 + %t195 = load ptr, ptr %a1 + %t196 = call %S.ast.Node @finch.parser.parseStatement(ptr %t195) + %t197 = load i64, ptr %t194 + %t198 = add i64 %t197, 1 + call void @finch_arr_reserve(ptr %t193, i64 %t198, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t199 = load ptr, ptr %t193 + %t200 = getelementptr inbounds %S.ast.Node, ptr %t199, i64 %t197 + store %S.ast.Node %t196, ptr %t200 + store i64 %t198, ptr %t194 + %t201 = load %S.ast.Node, ptr %a183 + call void @finch_str_drop(ptr %a4) + ret %S.ast.Node %t201 +endif1569: %t202 = load { ptr, i64, i64 }, ptr %a4 store { ptr, i64, i64 } %t202, ptr %a203 - store { ptr, i64, i64 } { ptr @.str.896, i64 4, i64 0 }, ptr %a204 + store { ptr, i64, i64 } { ptr @.str.898, i64 2, i64 0 }, ptr %a204 %t205 = call i32 @finch_str_eq(ptr %a203, ptr %a204) %t206 = icmp ne i32 %t205, 0 - br label %logic.rend1530 -logic.rend1530: - br label %logic.end1529 -logic.end1529: - %t207 = phi i1 [ true, %logic.from1527 ], [ %t206, %logic.rend1530 ] - br i1 %t207, label %then1531, label %endif1533 -then1531: - %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.897, 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.898, 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 %endif1533 -endif1533: - %t220 = load ptr, ptr %a1 - %t221 = call i1 @finch.parser.atDeclaration(ptr %t220) - br i1 %t221, label %then1534, label %endif1536 -then1534: - %t222 = load ptr, ptr %a1 - %t223 = call %S.ast.Node @finch.parser.node(ptr %t222, { ptr, i64, i64 } { ptr @.str.899, 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 + br label %logic.from1573 +logic.from1573: + br i1 %t206, label %logic.end1575, label %logic.rhs1574 +logic.rhs1574: + %t207 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t207, ptr %a208 + store { ptr, i64, i64 } { ptr @.str.899, 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.rend1576 +logic.rend1576: + br label %logic.end1575 +logic.end1575: + %t212 = phi i1 [ true, %logic.from1573 ], [ %t211, %logic.rend1576 ] + br label %logic.from1577 +logic.from1577: + br i1 %t212, label %logic.end1579, label %logic.rhs1578 +logic.rhs1578: + %t213 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t213, ptr %a214 + store { ptr, i64, i64 } { ptr @.str.900, i64 6, i64 0 }, ptr %a215 + %t216 = call i32 @finch_str_eq(ptr %a214, ptr %a215) + %t217 = icmp ne i32 %t216, 0 + br label %logic.rend1580 +logic.rend1580: + br label %logic.end1579 +logic.end1579: + %t218 = phi i1 [ true, %logic.from1577 ], [ %t217, %logic.rend1580 ] + br label %logic.from1581 +logic.from1581: + br i1 %t218, label %logic.end1583, label %logic.rhs1582 +logic.rhs1582: + %t219 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t219, ptr %a220 + store { ptr, i64, i64 } { ptr @.str.901, i64 4, i64 0 }, ptr %a221 + %t222 = call i32 @finch_str_eq(ptr %a220, ptr %a221) + %t223 = icmp ne i32 %t222, 0 + br label %logic.rend1584 +logic.rend1584: + br label %logic.end1583 +logic.end1583: + %t224 = phi i1 [ true, %logic.from1581 ], [ %t223, %logic.rend1584 ] + br i1 %t224, label %then1585, label %endif1587 +then1585: + %t225 = load ptr, ptr %a1 %t226 = load ptr, ptr %a1 - %t227 = call %S.ast.Type @finch.parser.parseType(ptr %t226) - %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.900, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.901, 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) - %t234 = load { ptr, i64, i64 }, ptr %a233 - %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.902, i64 1, i64 0 }) - br i1 %t237, label %then1537, label %endif1539 -then1537: - %t238 = getelementptr inbounds %S.ast.Node, ptr %a224, i32 0, i32 9 - %t239 = getelementptr inbounds { ptr, i64, i64 }, ptr %t238, i32 0, i32 1 + %t227 = call %S.lexer.Token @finch.parser.cur(ptr %t226) + %t228 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } { ptr @.str.902, i64 1, i64 0 }, ptr %a230 + store { ptr, i64, i64 } %t228, ptr %a231 + call void @finch_str_concat(ptr %a229, ptr %a230, ptr %a231) + %t232 = load { ptr, i64, i64 }, ptr %a229 + store { ptr, i64, i64 } %t232, ptr %a234 + store { ptr, i64, i64 } { ptr @.str.903, i64 48, i64 0 }, ptr %a235 + call void @finch_str_concat(ptr %a233, ptr %a234, ptr %a235) + store { ptr, i64, i64 } %t232, ptr %a236 + call void @finch_str_drop(ptr %a236) + %t237 = load { ptr, i64, i64 }, ptr %a233 + call void @finch.parser.fail(ptr %t225, %S.lexer.Token %t227, { ptr, i64, i64 } %t237) + store %S.lexer.Token %t227, ptr %a238 + call void @finch.drop.S_lexer_Token(ptr %a238) + store { ptr, i64, i64 } %t237, ptr %a239 + call void @finch_str_drop(ptr %a239) + br label %endif1587 +endif1587: %t240 = load ptr, ptr %a1 - %t241 = call %S.ast.Node @finch.parser.parseExpr(ptr %t240) - %t242 = load i64, ptr %t239 - %t243 = add i64 %t242, 1 - call void @finch_arr_reserve(ptr %t238, i64 %t243, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t244 = load ptr, ptr %t238 - %t245 = getelementptr inbounds %S.ast.Node, ptr %t244, i64 %t242 - store %S.ast.Node %t241, ptr %t245 - store i64 %t243, ptr %t239 - br label %endif1539 -endif1539: - %t246 = load %S.ast.Node, ptr %a224 - ret %S.ast.Node %t246 -endif1536: - %t247 = load ptr, ptr %a1 - %t248 = call i1 @finch.parser.at(ptr %t247, { ptr, i64, i64 } { ptr @.str.903, i64 5, i64 0 }) - br label %logic.from1540 -logic.from1540: - br i1 %t248, label %logic.rhs1541, label %logic.end1542 -logic.rhs1541: - %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.904, 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.rend1543 -logic.rend1543: - br label %logic.end1542 -logic.end1542: - %t255 = phi i1 [ false, %logic.from1540 ], [ %t254, %logic.rend1543 ] - br i1 %t255, label %then1544, label %endif1546 -then1544: - %t256 = load ptr, ptr %a1 - %t257 = call %S.ast.Node @finch.parser.node(ptr %t256, { ptr, i64, i64 } { ptr @.str.905, 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) - %t261 = extractvalue %S.lexer.Token %t260, 1 - store { ptr, i64, i64 } %t261, ptr %a262 - call void @finch_str_copy(ptr %a263, ptr %a262) - %t264 = load { ptr, i64, i64 }, ptr %a263 - %t265 = getelementptr inbounds %S.ast.Node, ptr %a258, i32 0, i32 1 - store { ptr, i64, i64 } %t264, ptr %t265 - %t266 = load ptr, ptr %a1 - %t267 = call %S.lexer.Token @finch.parser.next(ptr %t266) - %t268 = getelementptr inbounds %S.ast.Node, ptr %a258, i32 0, i32 9 - %t269 = getelementptr inbounds { ptr, i64, i64 }, ptr %t268, i32 0, i32 1 - %t270 = load ptr, ptr %a1 - %t271 = call %S.ast.Node @finch.parser.parseExpr(ptr %t270) - %t272 = load i64, ptr %t269 - %t273 = add i64 %t272, 1 - call void @finch_arr_reserve(ptr %t268, i64 %t273, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t274 = load ptr, ptr %t268 - %t275 = getelementptr inbounds %S.ast.Node, ptr %t274, i64 %t272 - store %S.ast.Node %t271, ptr %t275 - store i64 %t273, ptr %t269 - %t276 = load %S.ast.Node, ptr %a258 - ret %S.ast.Node %t276 -endif1546: - %t277 = load ptr, ptr %a1 - %t278 = call %S.lexer.Token @finch.parser.cur(ptr %t277) - store %S.lexer.Token %t278, ptr %a279 - %t280 = load ptr, ptr %a1 - %t281 = call %S.ast.Node @finch.parser.parseExpr(ptr %t280) - store %S.ast.Node %t281, ptr %a282 - %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.906, i64 1, i64 0 }, ptr %t285 - %t286 = getelementptr inbounds { ptr, i64, i64 }, ptr %t284, i64 1 - store { ptr, i64, i64 } { ptr @.str.907, i64 2, i64 0 }, ptr %t286 - %t287 = getelementptr inbounds { ptr, i64, i64 }, ptr %t284, i64 2 - store { ptr, i64, i64 } { ptr @.str.908, i64 2, i64 0 }, ptr %t287 - %t288 = getelementptr inbounds { ptr, i64, i64 }, ptr %t284, i64 3 - store { ptr, i64, i64 } { ptr @.str.909, i64 2, i64 0 }, ptr %t288 - %t289 = getelementptr inbounds { ptr, i64, i64 }, ptr %t284, i64 4 - store { ptr, i64, i64 } { ptr @.str.910, i64 2, i64 0 }, ptr %t289 - %t290 = getelementptr inbounds { ptr, i64, i64 }, ptr %t284, i64 5 - store { ptr, i64, i64 } { ptr @.str.911, 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 + %t241 = call i1 @finch.parser.atDeclaration(ptr %t240) + br i1 %t241, label %then1588, label %endif1590 +then1588: + %t242 = load ptr, ptr %a1 + %t243 = call %S.ast.Node @finch.parser.node(ptr %t242, { ptr, i64, i64 } { ptr @.str.904, i64 4, i64 0 }) + store %S.ast.Node %t243, ptr %a244 + %t245 = getelementptr inbounds %S.ast.Node, ptr %a244, i32 0, i32 6 + store i1 true, ptr %t245 + %t246 = load ptr, ptr %a1 + %t247 = call %S.ast.Type @finch.parser.parseType(ptr %t246) + %t248 = getelementptr inbounds %S.ast.Node, ptr %a244, i32 0, i32 5 + %t249 = load %S.ast.Type, ptr %t248 + store %S.ast.Type %t247, ptr %t248 + store %S.ast.Type %t249, ptr %a250 + call void @finch.drop.S_ast_Type(ptr %a250) + %t251 = load ptr, ptr %a1 + %t252 = call %S.lexer.Token @finch.parser.expect(ptr %t251, { ptr, i64, i64 } { ptr @.str.905, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.906, i64 15, i64 0 }) + %t253 = extractvalue %S.lexer.Token %t252, 1 + store { ptr, i64, i64 } %t253, ptr %a254 + call void @finch_str_copy(ptr %a255, ptr %a254) + %t256 = load { ptr, i64, i64 }, ptr %a255 + store %S.lexer.Token %t252, ptr %a257 + call void @finch.drop.S_lexer_Token(ptr %a257) + %t258 = getelementptr inbounds %S.ast.Node, ptr %a244, i32 0, i32 1 + %t259 = load { ptr, i64, i64 }, ptr %t258 + store { ptr, i64, i64 } %t256, ptr %t258 + store { ptr, i64, i64 } %t259, ptr %a260 + call void @finch_str_drop(ptr %a260) + %t261 = load ptr, ptr %a1 + %t262 = call i1 @finch.parser.accept(ptr %t261, { ptr, i64, i64 } { ptr @.str.907, i64 1, i64 0 }) + br i1 %t262, label %then1591, label %endif1593 +then1591: + %t263 = getelementptr inbounds %S.ast.Node, ptr %a244, i32 0, i32 9 + %t264 = getelementptr inbounds { ptr, i64, i64 }, ptr %t263, i32 0, i32 1 + %t265 = load ptr, ptr %a1 + %t266 = call %S.ast.Node @finch.parser.parseExpr(ptr %t265) + %t267 = load i64, ptr %t264 + %t268 = add i64 %t267, 1 + call void @finch_arr_reserve(ptr %t263, i64 %t268, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t269 = load ptr, ptr %t263 + %t270 = getelementptr inbounds %S.ast.Node, ptr %t269, i64 %t267 + store %S.ast.Node %t266, ptr %t270 + store i64 %t268, ptr %t264 + br label %endif1593 +endif1593: + %t271 = load %S.ast.Node, ptr %a244 + call void @finch_str_drop(ptr %a4) + ret %S.ast.Node %t271 +endif1590: + %t272 = load ptr, ptr %a1 + %t273 = call i1 @finch.parser.at(ptr %t272, { ptr, i64, i64 } { ptr @.str.908, i64 5, i64 0 }) + br label %logic.from1594 +logic.from1594: + br i1 %t273, label %logic.rhs1595, label %logic.end1596 +logic.rhs1595: + %t274 = load ptr, ptr %a1 + %t275 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t274, i64 1) + store { ptr, i64, i64 } %t275, ptr %a276 + store { ptr, i64, i64 } { ptr @.str.909, i64 2, i64 0 }, ptr %a277 + %t278 = call i32 @finch_str_eq(ptr %a276, ptr %a277) + %t279 = icmp ne i32 %t278, 0 + store { ptr, i64, i64 } %t275, ptr %a280 + call void @finch_str_drop(ptr %a280) + br label %logic.rend1597 +logic.rend1597: + br label %logic.end1596 +logic.end1596: + %t281 = phi i1 [ false, %logic.from1594 ], [ %t279, %logic.rend1597 ] + br i1 %t281, label %then1598, label %endif1600 +then1598: + %t282 = load ptr, ptr %a1 + %t283 = call %S.ast.Node @finch.parser.node(ptr %t282, { ptr, i64, i64 } { ptr @.str.910, i64 4, i64 0 }) + store %S.ast.Node %t283, ptr %a284 + %t285 = load ptr, ptr %a1 + %t286 = call %S.lexer.Token @finch.parser.next(ptr %t285) + %t287 = extractvalue %S.lexer.Token %t286, 1 + store { ptr, i64, i64 } %t287, ptr %a288 + call void @finch_str_copy(ptr %a289, ptr %a288) + %t290 = load { ptr, i64, i64 }, ptr %a289 + store %S.lexer.Token %t286, ptr %a291 + call void @finch.drop.S_lexer_Token(ptr %a291) + %t292 = getelementptr inbounds %S.ast.Node, ptr %a284, i32 0, i32 1 + %t293 = load { ptr, i64, i64 }, ptr %t292 + store { ptr, i64, i64 } %t290, ptr %t292 store { ptr, i64, i64 } %t293, ptr %a294 - %t295 = getelementptr inbounds { ptr, i64, i64 }, ptr %a294, i32 0, i32 1 - %t296 = load ptr, ptr %a1 - %t297 = call { ptr, i64, i64 } @finch.parser.curKind(ptr %t296) - store i64 -1, ptr %a298 - %t299 = load i64, ptr %t295 - %t300 = load ptr, ptr %a294 - store i64 0, ptr %a301 - br label %find.cond1547 -find.cond1547: - %t302 = load i64, ptr %a301 - %t303 = icmp slt i64 %t302, %t299 - br i1 %t303, label %find.body1548, label %find.end1551 -find.body1548: - %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.hit1549, label %find.next1550 -find.hit1549: - store i64 %t302, ptr %a298 - br label %find.end1551 -find.next1550: - %t310 = add i64 %t302, 1 - store i64 %t310, ptr %a301 - br label %find.cond1547 -find.end1551: - %t311 = load i64, ptr %a298 - %t312 = icmp sge i64 %t311, 0 - br label %logic.from1552 -logic.from1552: - br i1 %t312, label %logic.rhs1553, label %logic.end1554 -logic.rhs1553: - %t313 = load ptr, ptr %a1 - %t314 = call i1 @finch.parser.sameLine(ptr %t313) - br label %logic.rend1555 -logic.rend1555: - br label %logic.end1554 -logic.end1554: - %t315 = phi i1 [ false, %logic.from1552 ], [ %t314, %logic.rend1555 ] - br i1 %t315, label %then1556, label %endif1558 -then1556: - %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.912, 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.from1559 -logic.from1559: - br i1 %t321, label %logic.rhs1560, label %logic.end1561 -logic.rhs1560: - %t322 = getelementptr inbounds %S.ast.Node, ptr %a282, i32 0, i32 0 - %t323 = load { ptr, i64, i64 }, ptr %t322 + call void @finch_str_drop(ptr %a294) + %t295 = load ptr, ptr %a1 + %t296 = call %S.lexer.Token @finch.parser.next(ptr %t295) + store %S.lexer.Token %t296, ptr %a297 + call void @finch.drop.S_lexer_Token(ptr %a297) + %t298 = getelementptr inbounds %S.ast.Node, ptr %a284, i32 0, i32 9 + %t299 = getelementptr inbounds { ptr, i64, i64 }, ptr %t298, i32 0, i32 1 + %t300 = load ptr, ptr %a1 + %t301 = call %S.ast.Node @finch.parser.parseExpr(ptr %t300) + %t302 = load i64, ptr %t299 + %t303 = add i64 %t302, 1 + call void @finch_arr_reserve(ptr %t298, i64 %t303, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t304 = load ptr, ptr %t298 + %t305 = getelementptr inbounds %S.ast.Node, ptr %t304, i64 %t302 + store %S.ast.Node %t301, ptr %t305 + store i64 %t303, ptr %t299 + %t306 = load %S.ast.Node, ptr %a284 + call void @finch_str_drop(ptr %a4) + ret %S.ast.Node %t306 +endif1600: + %t307 = load ptr, ptr %a1 + %t308 = call %S.lexer.Token @finch.parser.cur(ptr %t307) + store %S.lexer.Token %t308, ptr %a309 + %t310 = load ptr, ptr %a1 + %t311 = call %S.ast.Node @finch.parser.parseExpr(ptr %t310) + store %S.ast.Node %t311, ptr %a312 + %t313 = mul i64 6, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) + %t314 = call ptr @finch_alloc(i64 %t313) + %t315 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i64 0 + store { ptr, i64, i64 } { ptr @.str.911, i64 1, i64 0 }, ptr %t315 + %t316 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i64 1 + store { ptr, i64, i64 } { ptr @.str.912, i64 2, i64 0 }, ptr %t316 + %t317 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i64 2 + store { ptr, i64, i64 } { ptr @.str.913, i64 2, i64 0 }, ptr %t317 + %t318 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i64 3 + store { ptr, i64, i64 } { ptr @.str.914, i64 2, i64 0 }, ptr %t318 + %t319 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i64 4 + store { ptr, i64, i64 } { ptr @.str.915, i64 2, i64 0 }, ptr %t319 + %t320 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i64 5 + store { ptr, i64, i64 } { ptr @.str.916, i64 2, i64 0 }, ptr %t320 + %t321 = insertvalue { ptr, i64, i64 } undef, ptr %t314, 0 + %t322 = insertvalue { ptr, i64, i64 } %t321, i64 6, 1 + %t323 = insertvalue { ptr, i64, i64 } %t322, i64 6, 2 store { ptr, i64, i64 } %t323, ptr %a324 - store { ptr, i64, i64 } { ptr @.str.913, 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.rend1562 -logic.rend1562: - br label %logic.end1561 -logic.end1561: - %t328 = phi i1 [ false, %logic.from1559 ], [ %t327, %logic.rend1562 ] - br label %logic.from1563 -logic.from1563: - br i1 %t328, label %logic.rhs1564, label %logic.end1565 -logic.rhs1564: - %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.914, 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.rend1566 -logic.rend1566: - br label %logic.end1565 -logic.end1565: - %t335 = phi i1 [ false, %logic.from1563 ], [ %t334, %logic.rend1566 ] - br i1 %t335, label %then1567, label %endif1569 -then1567: - %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.915, i64 66, i64 0 }) - br label %endif1569 -endif1569: - %t338 = insertvalue %S.ast.Node zeroinitializer, { ptr, i64, i64 } { ptr @.str.916, 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 - %t342 = getelementptr inbounds %S.lexer.Token, ptr %a279, i32 0, i32 3 - %t343 = load i64, ptr %t342 - %t344 = insertvalue %S.ast.Node %t341, i64 %t343, 12 - %t345 = load ptr, ptr %a1 - %t346 = icmp eq ptr %t345, null - br i1 %t346, label %panic1570, label %ok1571 -panic1570: - call void @finch_panic(ptr @.str.917, i64 536, ptr @.str.918) + %t325 = getelementptr inbounds { ptr, i64, i64 }, ptr %a324, i32 0, i32 1 + %t326 = load ptr, ptr %a1 + %t327 = call { ptr, i64, i64 } @finch.parser.curKind(ptr %t326) + store i64 -1, ptr %a328 + %t329 = load i64, ptr %t325 + %t330 = load ptr, ptr %a324 + store i64 0, ptr %a331 + br label %find.cond1601 +find.cond1601: + %t332 = load i64, ptr %a331 + %t333 = icmp slt i64 %t332, %t329 + br i1 %t333, label %find.body1602, label %find.end1605 +find.body1602: + %t334 = getelementptr inbounds { ptr, i64, i64 }, ptr %t330, i64 %t332 + %t335 = load { ptr, i64, i64 }, ptr %t334 + store { ptr, i64, i64 } %t335, ptr %a336 + store { ptr, i64, i64 } %t327, ptr %a337 + %t338 = call i32 @finch_str_eq(ptr %a336, ptr %a337) + %t339 = icmp ne i32 %t338, 0 + br i1 %t339, label %find.hit1603, label %find.next1604 +find.hit1603: + store i64 %t332, ptr %a328 + br label %find.end1605 +find.next1604: + %t340 = add i64 %t332, 1 + store i64 %t340, ptr %a331 + br label %find.cond1601 +find.end1605: + store { ptr, i64, i64 } %t327, ptr %a341 + call void @finch_str_drop(ptr %a341) + %t342 = load i64, ptr %a328 + %t343 = icmp sge i64 %t342, 0 + br label %logic.from1606 +logic.from1606: + br i1 %t343, label %logic.rhs1607, label %logic.end1608 +logic.rhs1607: + %t344 = load ptr, ptr %a1 + %t345 = call i1 @finch.parser.sameLine(ptr %t344) + br label %logic.rend1609 +logic.rend1609: + br label %logic.end1608 +logic.end1608: + %t346 = phi i1 [ false, %logic.from1606 ], [ %t345, %logic.rend1609 ] + br i1 %t346, label %then1610, label %endif1612 +then1610: + %t347 = getelementptr inbounds %S.ast.Node, ptr %a312, i32 0, i32 0 + %t348 = load { ptr, i64, i64 }, ptr %t347 + store { ptr, i64, i64 } %t348, ptr %a349 + store { ptr, i64, i64 } { ptr @.str.917, i64 3, i64 0 }, ptr %a350 + %t351 = call i32 @finch_str_eq(ptr %a349, ptr %a350) + %t352 = icmp eq i32 %t351, 0 + br label %logic.from1613 +logic.from1613: + br i1 %t352, label %logic.rhs1614, label %logic.end1615 +logic.rhs1614: + %t353 = getelementptr inbounds %S.ast.Node, ptr %a312, i32 0, i32 0 + %t354 = load { ptr, i64, i64 }, ptr %t353 + store { ptr, i64, i64 } %t354, ptr %a355 + store { ptr, i64, i64 } { ptr @.str.918, i64 6, i64 0 }, ptr %a356 + %t357 = call i32 @finch_str_eq(ptr %a355, ptr %a356) + %t358 = icmp eq i32 %t357, 0 + br label %logic.rend1616 +logic.rend1616: + br label %logic.end1615 +logic.end1615: + %t359 = phi i1 [ false, %logic.from1613 ], [ %t358, %logic.rend1616 ] + br label %logic.from1617 +logic.from1617: + br i1 %t359, label %logic.rhs1618, label %logic.end1619 +logic.rhs1618: + %t360 = getelementptr inbounds %S.ast.Node, ptr %a312, i32 0, i32 0 + %t361 = load { ptr, i64, i64 }, ptr %t360 + store { ptr, i64, i64 } %t361, ptr %a362 + store { ptr, i64, i64 } { ptr @.str.919, i64 5, i64 0 }, ptr %a363 + %t364 = call i32 @finch_str_eq(ptr %a362, ptr %a363) + %t365 = icmp eq i32 %t364, 0 + br label %logic.rend1620 +logic.rend1620: + br label %logic.end1619 +logic.end1619: + %t366 = phi i1 [ false, %logic.from1617 ], [ %t365, %logic.rend1620 ] + br i1 %t366, label %then1621, label %endif1623 +then1621: + %t367 = load ptr, ptr %a1 + %t368 = load %S.lexer.Token, ptr %a309 + call void @finch.parser.fail(ptr %t367, %S.lexer.Token %t368, { ptr, i64, i64 } { ptr @.str.920, i64 66, i64 0 }) + br label %endif1623 +endif1623: + %t369 = insertvalue %S.ast.Node zeroinitializer, { ptr, i64, i64 } { ptr @.str.921, i64 6, i64 0 }, 0 + %t370 = getelementptr inbounds %S.lexer.Token, ptr %a309, i32 0, i32 2 + %t371 = load i64, ptr %t370 + %t372 = insertvalue %S.ast.Node %t369, i64 %t371, 11 + %t373 = getelementptr inbounds %S.lexer.Token, ptr %a309, i32 0, i32 3 + %t374 = load i64, ptr %t373 + %t375 = insertvalue %S.ast.Node %t372, i64 %t374, 12 + %t376 = load ptr, ptr %a1 + %t377 = icmp eq ptr %t376, null + br i1 %t377, label %panic1624, label %ok1625 +panic1624: + call void @finch_panic(ptr @.str.922, i64 536, ptr @.str.923) unreachable -ok1571: - %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 - store %S.ast.Node %t349, ptr %a350 - %t351 = load ptr, ptr %a1 - %t352 = call %S.lexer.Token @finch.parser.next(ptr %t351) - %t353 = extractvalue %S.lexer.Token %t352, 0 - store { ptr, i64, i64 } %t353, ptr %a354 - call void @finch_str_copy(ptr %a355, ptr %a354) - %t356 = load { ptr, i64, i64 }, ptr %a355 - %t357 = getelementptr inbounds %S.ast.Node, ptr %a350, i32 0, i32 1 - store { ptr, i64, i64 } %t356, ptr %t357 - %t358 = getelementptr inbounds %S.ast.Node, ptr %a350, i32 0, i32 9 - %t359 = getelementptr inbounds { ptr, i64, i64 }, ptr %t358, i32 0, i32 1 - %t360 = load %S.ast.Node, ptr %a282 - store %S.ast.Node %t360, ptr %a361 - call void @finch.copy.S_ast_Node(ptr %a362, ptr %a361) - %t363 = load %S.ast.Node, ptr %a362 - %t364 = load i64, ptr %t359 - %t365 = add i64 %t364, 1 - call void @finch_arr_reserve(ptr %t358, i64 %t365, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t366 = load ptr, ptr %t358 - %t367 = getelementptr inbounds %S.ast.Node, ptr %t366, i64 %t364 - store %S.ast.Node %t363, ptr %t367 - store i64 %t365, ptr %t359 - %t368 = getelementptr inbounds %S.ast.Node, ptr %a350, i32 0, i32 9 - %t369 = getelementptr inbounds { ptr, i64, i64 }, ptr %t368, i32 0, i32 1 - %t370 = load ptr, ptr %a1 - %t371 = call %S.ast.Node @finch.parser.parseExpr(ptr %t370) - %t372 = load i64, ptr %t369 - %t373 = add i64 %t372, 1 - call void @finch_arr_reserve(ptr %t368, i64 %t373, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t374 = load ptr, ptr %t368 - %t375 = getelementptr inbounds %S.ast.Node, ptr %t374, i64 %t372 - store %S.ast.Node %t371, ptr %t375 - store i64 %t373, ptr %t369 - %t376 = load %S.ast.Node, ptr %a350 - ret %S.ast.Node %t376 -endif1558: - %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.919, 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.from1572 -logic.from1572: - br i1 %t382, label %logic.rhs1573, label %logic.end1574 -logic.rhs1573: - %t383 = getelementptr inbounds %S.ast.Node, ptr %a282, i32 0, i32 0 - %t384 = load { ptr, i64, i64 }, ptr %t383 +ok1625: + %t378 = getelementptr inbounds %S.parser.Parser, ptr %t376, i32 0, i32 3 + %t379 = load i64, ptr %t378 + %t380 = insertvalue %S.ast.Node %t375, i64 %t379, 13 + store %S.ast.Node %t380, ptr %a381 + %t382 = load ptr, ptr %a1 + %t383 = call %S.lexer.Token @finch.parser.next(ptr %t382) + %t384 = extractvalue %S.lexer.Token %t383, 0 store { ptr, i64, i64 } %t384, ptr %a385 - store { ptr, i64, i64 } { ptr @.str.920, 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.rend1575 -logic.rend1575: - br label %logic.end1574 -logic.end1574: - %t389 = phi i1 [ false, %logic.from1572 ], [ %t388, %logic.rend1575 ] - br label %logic.from1576 -logic.from1576: - br i1 %t389, label %logic.rhs1577, label %logic.end1578 -logic.rhs1577: - %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.921, 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.rend1579 -logic.rend1579: - br label %logic.end1578 -logic.end1578: - %t396 = phi i1 [ false, %logic.from1576 ], [ %t395, %logic.rend1579 ] - br label %logic.from1580 -logic.from1580: - br i1 %t396, label %logic.rhs1581, label %logic.end1582 -logic.rhs1581: - %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.922, 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.rend1583 -logic.rend1583: - br label %logic.end1582 -logic.end1582: - %t403 = phi i1 [ false, %logic.from1580 ], [ %t402, %logic.rend1583 ] - br i1 %t403, label %then1584, label %endif1586 -then1584: + call void @finch_str_copy(ptr %a386, ptr %a385) + %t387 = load { ptr, i64, i64 }, ptr %a386 + store %S.lexer.Token %t383, ptr %a388 + call void @finch.drop.S_lexer_Token(ptr %a388) + %t389 = getelementptr inbounds %S.ast.Node, ptr %a381, i32 0, i32 1 + %t390 = load { ptr, i64, i64 }, ptr %t389 + store { ptr, i64, i64 } %t387, ptr %t389 + store { ptr, i64, i64 } %t390, ptr %a391 + call void @finch_str_drop(ptr %a391) + %t392 = getelementptr inbounds %S.ast.Node, ptr %a381, i32 0, i32 9 + %t393 = getelementptr inbounds { ptr, i64, i64 }, ptr %t392, i32 0, i32 1 + %t394 = load %S.ast.Node, ptr %a312 + store %S.ast.Node %t394, ptr %a395 + call void @finch.copy.S_ast_Node(ptr %a396, ptr %a395) + %t397 = load %S.ast.Node, ptr %a396 + %t398 = load i64, ptr %t393 + %t399 = add i64 %t398, 1 + call void @finch_arr_reserve(ptr %t392, i64 %t399, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t400 = load ptr, ptr %t392 + %t401 = getelementptr inbounds %S.ast.Node, ptr %t400, i64 %t398 + store %S.ast.Node %t397, ptr %t401 + store i64 %t399, ptr %t393 + %t402 = getelementptr inbounds %S.ast.Node, ptr %a381, i32 0, i32 9 + %t403 = getelementptr inbounds { ptr, i64, i64 }, ptr %t402, i32 0, i32 1 %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.923, i64 37, i64 0 }) - br label %endif1586 -endif1586: - %t406 = insertvalue %S.ast.Node zeroinitializer, { ptr, i64, i64 } { ptr @.str.924, 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 - %t410 = getelementptr inbounds %S.lexer.Token, ptr %a279, i32 0, i32 3 - %t411 = load i64, ptr %t410 - %t412 = insertvalue %S.ast.Node %t409, i64 %t411, 12 - %t413 = load ptr, ptr %a1 - %t414 = icmp eq ptr %t413, null - br i1 %t414, label %panic1587, label %ok1588 -panic1587: - call void @finch_panic(ptr @.str.925, i64 545, ptr @.str.926) + %t405 = call %S.ast.Node @finch.parser.parseExpr(ptr %t404) + %t406 = load i64, ptr %t403 + %t407 = add i64 %t406, 1 + call void @finch_arr_reserve(ptr %t402, i64 %t407, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t408 = load ptr, ptr %t402 + %t409 = getelementptr inbounds %S.ast.Node, ptr %t408, i64 %t406 + store %S.ast.Node %t405, ptr %t409 + store i64 %t407, ptr %t403 + %t410 = load %S.ast.Node, ptr %a381 + call void @finch.drop.arr_str(ptr %a324) + call void @finch.drop.S_ast_Node(ptr %a312) + call void @finch.drop.S_lexer_Token(ptr %a309) + call void @finch_str_drop(ptr %a4) + ret %S.ast.Node %t410 +endif1612: + %t411 = getelementptr inbounds %S.ast.Node, ptr %a312, i32 0, i32 0 + %t412 = load { ptr, i64, i64 }, ptr %t411 + store { ptr, i64, i64 } %t412, ptr %a413 + store { ptr, i64, i64 } { ptr @.str.924, i64 4, i64 0 }, ptr %a414 + %t415 = call i32 @finch_str_eq(ptr %a413, ptr %a414) + %t416 = icmp eq i32 %t415, 0 + br label %logic.from1626 +logic.from1626: + br i1 %t416, label %logic.rhs1627, label %logic.end1628 +logic.rhs1627: + %t417 = getelementptr inbounds %S.ast.Node, ptr %a312, i32 0, i32 0 + %t418 = load { ptr, i64, i64 }, ptr %t417 + store { ptr, i64, i64 } %t418, ptr %a419 + store { ptr, i64, i64 } { ptr @.str.925, i64 6, i64 0 }, ptr %a420 + %t421 = call i32 @finch_str_eq(ptr %a419, ptr %a420) + %t422 = icmp eq i32 %t421, 0 + br label %logic.rend1629 +logic.rend1629: + br label %logic.end1628 +logic.end1628: + %t423 = phi i1 [ false, %logic.from1626 ], [ %t422, %logic.rend1629 ] + br label %logic.from1630 +logic.from1630: + br i1 %t423, label %logic.rhs1631, label %logic.end1632 +logic.rhs1631: + %t424 = getelementptr inbounds %S.ast.Node, ptr %a312, i32 0, i32 0 + %t425 = load { ptr, i64, i64 }, ptr %t424 + store { ptr, i64, i64 } %t425, ptr %a426 + store { ptr, i64, i64 } { ptr @.str.926, i64 3, i64 0 }, ptr %a427 + %t428 = call i32 @finch_str_eq(ptr %a426, ptr %a427) + %t429 = icmp eq i32 %t428, 0 + br label %logic.rend1633 +logic.rend1633: + br label %logic.end1632 +logic.end1632: + %t430 = phi i1 [ false, %logic.from1630 ], [ %t429, %logic.rend1633 ] + br label %logic.from1634 +logic.from1634: + br i1 %t430, label %logic.rhs1635, label %logic.end1636 +logic.rhs1635: + %t431 = getelementptr inbounds %S.ast.Node, ptr %a312, i32 0, i32 0 + %t432 = load { ptr, i64, i64 }, ptr %t431 + store { ptr, i64, i64 } %t432, ptr %a433 + store { ptr, i64, i64 } { ptr @.str.927, i64 2, i64 0 }, ptr %a434 + %t435 = call i32 @finch_str_eq(ptr %a433, ptr %a434) + %t436 = icmp eq i32 %t435, 0 + br label %logic.rend1637 +logic.rend1637: + br label %logic.end1636 +logic.end1636: + %t437 = phi i1 [ false, %logic.from1634 ], [ %t436, %logic.rend1637 ] + br i1 %t437, label %then1638, label %endif1640 +then1638: + %t438 = load ptr, ptr %a1 + %t439 = load %S.lexer.Token, ptr %a309 + call void @finch.parser.fail(ptr %t438, %S.lexer.Token %t439, { ptr, i64, i64 } { ptr @.str.928, i64 37, i64 0 }) + br label %endif1640 +endif1640: + %t440 = insertvalue %S.ast.Node zeroinitializer, { ptr, i64, i64 } { ptr @.str.929, i64 4, i64 0 }, 0 + %t441 = getelementptr inbounds %S.lexer.Token, ptr %a309, i32 0, i32 2 + %t442 = load i64, ptr %t441 + %t443 = insertvalue %S.ast.Node %t440, i64 %t442, 11 + %t444 = getelementptr inbounds %S.lexer.Token, ptr %a309, i32 0, i32 3 + %t445 = load i64, ptr %t444 + %t446 = insertvalue %S.ast.Node %t443, i64 %t445, 12 + %t447 = load ptr, ptr %a1 + %t448 = icmp eq ptr %t447, null + br i1 %t448, label %panic1641, label %ok1642 +panic1641: + call void @finch_panic(ptr @.str.930, i64 545, ptr @.str.931) unreachable -ok1588: - %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 - store %S.ast.Node %t417, ptr %a418 - %t419 = getelementptr inbounds %S.ast.Node, ptr %a418, i32 0, i32 9 - %t420 = getelementptr inbounds { ptr, i64, i64 }, ptr %t419, i32 0, i32 1 - %t421 = load %S.ast.Node, ptr %a282 - store %S.ast.Node %t421, ptr %a422 - call void @finch.copy.S_ast_Node(ptr %a423, ptr %a422) - %t424 = load %S.ast.Node, ptr %a423 - %t425 = load i64, ptr %t420 - %t426 = add i64 %t425, 1 - call void @finch_arr_reserve(ptr %t419, i64 %t426, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t427 = load ptr, ptr %t419 - %t428 = getelementptr inbounds %S.ast.Node, ptr %t427, i64 %t425 - store %S.ast.Node %t424, ptr %t428 - store i64 %t426, ptr %t420 - %t429 = load %S.ast.Node, ptr %a418 - 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 - ret %S.ast.Node %t432 +ok1642: + %t449 = getelementptr inbounds %S.parser.Parser, ptr %t447, i32 0, i32 3 + %t450 = load i64, ptr %t449 + %t451 = insertvalue %S.ast.Node %t446, i64 %t450, 13 + store %S.ast.Node %t451, ptr %a452 + %t453 = getelementptr inbounds %S.ast.Node, ptr %a452, i32 0, i32 9 + %t454 = getelementptr inbounds { ptr, i64, i64 }, ptr %t453, i32 0, i32 1 + %t455 = load %S.ast.Node, ptr %a312 + store %S.ast.Node %t455, ptr %a456 + call void @finch.copy.S_ast_Node(ptr %a457, ptr %a456) + %t458 = load %S.ast.Node, ptr %a457 + %t459 = load i64, ptr %t454 + %t460 = add i64 %t459, 1 + call void @finch_arr_reserve(ptr %t453, i64 %t460, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t461 = load ptr, ptr %t453 + %t462 = getelementptr inbounds %S.ast.Node, ptr %t461, i64 %t459 + store %S.ast.Node %t458, ptr %t462 + store i64 %t460, ptr %t454 + %t463 = load %S.ast.Node, ptr %a452 + call void @finch.drop.arr_str(ptr %a324) + call void @finch.drop.S_ast_Node(ptr %a312) + call void @finch.drop.S_lexer_Token(ptr %a309) + call void @finch_str_drop(ptr %a4) + ret %S.ast.Node %t463 } define internal %S.ast.Node @finch.parser.parseIf(ptr %p0) { entry: %a1 = alloca ptr, align 16 %a4 = alloca %S.ast.Node, align 16 - %a44 = alloca %S.ast.Node, align 16 - %a45 = alloca %S.ast.Node, align 16 + %a7 = alloca %S.lexer.Token, 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.927, i64 2, i64 0 }) + %t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.932, 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.928, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.929, 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 - %t10 = call %S.ast.Node @finch.parser.parseExpr(ptr %t9) - %t11 = load i64, ptr %t8 - %t12 = add i64 %t11, 1 - call void @finch_arr_reserve(ptr %t7, i64 %t12, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t13 = load ptr, ptr %t7 - %t14 = getelementptr inbounds %S.ast.Node, ptr %t13, i64 %t11 - store %S.ast.Node %t10, ptr %t14 - store i64 %t12, ptr %t8 - %t15 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t15, i32 0, i32 1 - %t17 = load ptr, ptr %a1 - %t18 = call %S.ast.Node @finch.parser.parseBlock(ptr %t17) - %t19 = load i64, ptr %t16 - %t20 = add i64 %t19, 1 - call void @finch_arr_reserve(ptr %t15, i64 %t20, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t21 = load ptr, ptr %t15 - %t22 = getelementptr inbounds %S.ast.Node, ptr %t21, i64 %t19 - 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.930, i64 4, i64 0 }) - br i1 %t24, label %then1589, label %endif1591 -then1589: - %t25 = load ptr, ptr %a1 - %t26 = call i1 @finch.parser.at(ptr %t25, { ptr, i64, i64 } { ptr @.str.931, i64 2, i64 0 }) - br i1 %t26, label %then1592, label %else1593 -then1592: - %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 - %t30 = call %S.ast.Node @finch.parser.parseIf(ptr %t29) - %t31 = load i64, ptr %t28 - %t32 = add i64 %t31, 1 - call void @finch_arr_reserve(ptr %t27, i64 %t32, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t33 = load ptr, ptr %t27 - %t34 = getelementptr inbounds %S.ast.Node, ptr %t33, i64 %t31 - store %S.ast.Node %t30, ptr %t34 - store i64 %t32, ptr %t28 - br label %endif1594 -else1593: - %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 - %t38 = call %S.ast.Node @finch.parser.parseBlock(ptr %t37) - %t39 = load i64, ptr %t36 - %t40 = add i64 %t39, 1 - call void @finch_arr_reserve(ptr %t35, i64 %t40, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t41 = load ptr, ptr %t35 - %t42 = getelementptr inbounds %S.ast.Node, ptr %t41, i64 %t39 - store %S.ast.Node %t38, ptr %t42 - store i64 %t40, ptr %t36 - br label %endif1594 -endif1594: - br label %endif1591 -endif1591: - %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) - %t46 = load %S.ast.Node, ptr %a45 - ret %S.ast.Node %t46 + %t6 = call %S.lexer.Token @finch.parser.expect(ptr %t5, { ptr, i64, i64 } { ptr @.str.933, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.934, i64 4, i64 0 }) + store %S.lexer.Token %t6, ptr %a7 + call void @finch.drop.S_lexer_Token(ptr %a7) + %t8 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 + %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t8, i32 0, i32 1 + %t10 = load ptr, ptr %a1 + %t11 = call %S.ast.Node @finch.parser.parseExpr(ptr %t10) + %t12 = load i64, ptr %t9 + %t13 = add i64 %t12, 1 + call void @finch_arr_reserve(ptr %t8, i64 %t13, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t14 = load ptr, ptr %t8 + %t15 = getelementptr inbounds %S.ast.Node, ptr %t14, i64 %t12 + store %S.ast.Node %t11, ptr %t15 + store i64 %t13, ptr %t9 + %t16 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 + %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i32 0, i32 1 + %t18 = load ptr, ptr %a1 + %t19 = call %S.ast.Node @finch.parser.parseBlock(ptr %t18) + %t20 = load i64, ptr %t17 + %t21 = add i64 %t20, 1 + call void @finch_arr_reserve(ptr %t16, i64 %t21, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t22 = load ptr, ptr %t16 + %t23 = getelementptr inbounds %S.ast.Node, ptr %t22, i64 %t20 + store %S.ast.Node %t19, ptr %t23 + store i64 %t21, ptr %t17 + %t24 = load ptr, ptr %a1 + %t25 = call i1 @finch.parser.accept(ptr %t24, { ptr, i64, i64 } { ptr @.str.935, i64 4, i64 0 }) + br i1 %t25, label %then1643, label %endif1645 +then1643: + %t26 = load ptr, ptr %a1 + %t27 = call i1 @finch.parser.at(ptr %t26, { ptr, i64, i64 } { ptr @.str.936, i64 2, i64 0 }) + br i1 %t27, label %then1646, label %else1647 +then1646: + %t28 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 + %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %t28, i32 0, i32 1 + %t30 = load ptr, ptr %a1 + %t31 = call %S.ast.Node @finch.parser.parseIf(ptr %t30) + %t32 = load i64, ptr %t29 + %t33 = add i64 %t32, 1 + call void @finch_arr_reserve(ptr %t28, i64 %t33, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t34 = load ptr, ptr %t28 + %t35 = getelementptr inbounds %S.ast.Node, ptr %t34, i64 %t32 + store %S.ast.Node %t31, ptr %t35 + store i64 %t33, ptr %t29 + br label %endif1648 +else1647: + %t36 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 + %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %t36, i32 0, i32 1 + %t38 = load ptr, ptr %a1 + %t39 = call %S.ast.Node @finch.parser.parseBlock(ptr %t38) + %t40 = load i64, ptr %t37 + %t41 = add i64 %t40, 1 + call void @finch_arr_reserve(ptr %t36, i64 %t41, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t42 = load ptr, ptr %t36 + %t43 = getelementptr inbounds %S.ast.Node, ptr %t42, i64 %t40 + store %S.ast.Node %t39, ptr %t43 + store i64 %t41, ptr %t37 + br label %endif1648 +endif1648: + br label %endif1645 +endif1645: + %t44 = load %S.ast.Node, ptr %a4 + ret %S.ast.Node %t44 } define internal i64 @finch.parser.binaryLevel({ ptr, i64, i64 } %p0) { @@ -17549,231 +19538,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.932, i64 2, i64 0 }, ptr %a4 + store { ptr, i64, i64 } { ptr @.str.937, 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 %then1595, label %endif1597 -then1595: + br i1 %t6, label %then1649, label %endif1651 +then1649: ret i64 1 -endif1597: +endif1651: %t7 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t7, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.933, i64 2, i64 0 }, ptr %a9 + store { ptr, i64, i64 } { ptr @.str.938, 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 %then1598, label %endif1600 -then1598: + br i1 %t11, label %then1652, label %endif1654 +then1652: ret i64 2 -endif1600: +endif1654: %t12 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t12, ptr %a13 - store { ptr, i64, i64 } { ptr @.str.934, i64 2, i64 0 }, ptr %a14 + store { ptr, i64, i64 } { ptr @.str.939, 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.from1601 -logic.from1601: - br i1 %t16, label %logic.end1603, label %logic.rhs1602 -logic.rhs1602: - %t17 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t17, ptr %a18 - store { ptr, i64, i64 } { ptr @.str.935, 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.rend1604 -logic.rend1604: - br label %logic.end1603 -logic.end1603: - %t22 = phi i1 [ true, %logic.from1601 ], [ %t21, %logic.rend1604 ] - br label %logic.from1605 -logic.from1605: - br i1 %t22, label %logic.end1607, label %logic.rhs1606 -logic.rhs1606: - %t23 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t23, ptr %a24 - store { ptr, i64, i64 } { ptr @.str.936, 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.rend1608 -logic.rend1608: - br label %logic.end1607 -logic.end1607: - %t28 = phi i1 [ true, %logic.from1605 ], [ %t27, %logic.rend1608 ] - br label %logic.from1609 -logic.from1609: - br i1 %t28, label %logic.end1611, label %logic.rhs1610 -logic.rhs1610: - %t29 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t29, ptr %a30 - store { ptr, i64, i64 } { ptr @.str.937, 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.rend1612 -logic.rend1612: - br label %logic.end1611 -logic.end1611: - %t34 = phi i1 [ true, %logic.from1609 ], [ %t33, %logic.rend1612 ] - br label %logic.from1613 -logic.from1613: - br i1 %t34, label %logic.end1615, label %logic.rhs1614 -logic.rhs1614: - %t35 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t35, ptr %a36 - store { ptr, i64, i64 } { ptr @.str.938, 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.rend1616 -logic.rend1616: - br label %logic.end1615 -logic.end1615: - %t40 = phi i1 [ true, %logic.from1613 ], [ %t39, %logic.rend1616 ] - br label %logic.from1617 -logic.from1617: - br i1 %t40, label %logic.end1619, label %logic.rhs1618 -logic.rhs1618: - %t41 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t41, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.939, 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.rend1620 -logic.rend1620: - br label %logic.end1619 -logic.end1619: - %t46 = phi i1 [ true, %logic.from1617 ], [ %t45, %logic.rend1620 ] - br i1 %t46, label %then1621, label %endif1623 -then1621: - ret i64 3 -endif1623: - %t47 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t47, ptr %a48 - store { ptr, i64, i64 } { ptr @.str.940, 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.from1624 -logic.from1624: - br i1 %t51, label %logic.end1626, label %logic.rhs1625 -logic.rhs1625: - %t52 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t52, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.941, 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.rend1627 -logic.rend1627: - br label %logic.end1626 -logic.end1626: - %t57 = phi i1 [ true, %logic.from1624 ], [ %t56, %logic.rend1627 ] - br label %logic.from1628 -logic.from1628: - br i1 %t57, label %logic.end1630, label %logic.rhs1629 -logic.rhs1629: - %t58 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t58, ptr %a59 - store { ptr, i64, i64 } { ptr @.str.942, 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.rend1631 -logic.rend1631: - br label %logic.end1630 -logic.end1630: - %t63 = phi i1 [ true, %logic.from1628 ], [ %t62, %logic.rend1631 ] - br label %logic.from1632 -logic.from1632: - br i1 %t63, label %logic.end1634, label %logic.rhs1633 -logic.rhs1633: - %t64 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t64, ptr %a65 - store { ptr, i64, i64 } { ptr @.str.943, 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.rend1635 -logic.rend1635: - br label %logic.end1634 -logic.end1634: - %t69 = phi i1 [ true, %logic.from1632 ], [ %t68, %logic.rend1635 ] - br i1 %t69, label %then1636, label %endif1638 -then1636: - ret i64 4 -endif1638: - %t70 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t70, ptr %a71 - store { ptr, i64, i64 } { ptr @.str.944, 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.from1639 -logic.from1639: - br i1 %t74, label %logic.end1641, label %logic.rhs1640 -logic.rhs1640: - %t75 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t75, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.945, 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.rend1642 -logic.rend1642: - br label %logic.end1641 -logic.end1641: - %t80 = phi i1 [ true, %logic.from1639 ], [ %t79, %logic.rend1642 ] - br label %logic.from1643 -logic.from1643: - br i1 %t80, label %logic.end1645, label %logic.rhs1644 -logic.rhs1644: - %t81 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t81, ptr %a82 - store { ptr, i64, i64 } { ptr @.str.946, 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.rend1646 -logic.rend1646: - br label %logic.end1645 -logic.end1645: - %t86 = phi i1 [ true, %logic.from1643 ], [ %t85, %logic.rend1646 ] - br label %logic.from1647 -logic.from1647: - br i1 %t86, label %logic.end1649, label %logic.rhs1648 -logic.rhs1648: - %t87 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t87, ptr %a88 - store { ptr, i64, i64 } { ptr @.str.947, 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.rend1650 -logic.rend1650: - br label %logic.end1649 -logic.end1649: - %t92 = phi i1 [ true, %logic.from1647 ], [ %t91, %logic.rend1650 ] - br label %logic.from1651 -logic.from1651: - br i1 %t92, label %logic.end1653, label %logic.rhs1652 -logic.rhs1652: - %t93 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t93, ptr %a94 - store { ptr, i64, i64 } { ptr @.str.948, 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.rend1654 -logic.rend1654: - br label %logic.end1653 -logic.end1653: - %t98 = phi i1 [ true, %logic.from1651 ], [ %t97, %logic.rend1654 ] br label %logic.from1655 logic.from1655: - br i1 %t98, label %logic.end1657, label %logic.rhs1656 + br i1 %t16, label %logic.end1657, label %logic.rhs1656 logic.rhs1656: - %t99 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t99, ptr %a100 - store { ptr, i64, i64 } { ptr @.str.949, i64 1, i64 0 }, ptr %a101 - %t102 = call i32 @finch_str_eq(ptr %a100, ptr %a101) - %t103 = icmp ne i32 %t102, 0 + %t17 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t17, ptr %a18 + store { ptr, i64, i64 } { ptr @.str.940, 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.rend1658 logic.rend1658: br label %logic.end1657 logic.end1657: - %t104 = phi i1 [ true, %logic.from1655 ], [ %t103, %logic.rend1658 ] - br i1 %t104, label %then1659, label %endif1661 -then1659: + %t22 = phi i1 [ true, %logic.from1655 ], [ %t21, %logic.rend1658 ] + br label %logic.from1659 +logic.from1659: + br i1 %t22, label %logic.end1661, label %logic.rhs1660 +logic.rhs1660: + %t23 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t23, ptr %a24 + store { ptr, i64, i64 } { ptr @.str.941, 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.rend1662 +logic.rend1662: + br label %logic.end1661 +logic.end1661: + %t28 = phi i1 [ true, %logic.from1659 ], [ %t27, %logic.rend1662 ] + br label %logic.from1663 +logic.from1663: + br i1 %t28, label %logic.end1665, label %logic.rhs1664 +logic.rhs1664: + %t29 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t29, ptr %a30 + store { ptr, i64, i64 } { ptr @.str.942, 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.rend1666 +logic.rend1666: + br label %logic.end1665 +logic.end1665: + %t34 = phi i1 [ true, %logic.from1663 ], [ %t33, %logic.rend1666 ] + br label %logic.from1667 +logic.from1667: + br i1 %t34, label %logic.end1669, label %logic.rhs1668 +logic.rhs1668: + %t35 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t35, ptr %a36 + store { ptr, i64, i64 } { ptr @.str.943, 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.rend1670 +logic.rend1670: + br label %logic.end1669 +logic.end1669: + %t40 = phi i1 [ true, %logic.from1667 ], [ %t39, %logic.rend1670 ] + br label %logic.from1671 +logic.from1671: + br i1 %t40, label %logic.end1673, label %logic.rhs1672 +logic.rhs1672: + %t41 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t41, ptr %a42 + store { ptr, i64, i64 } { ptr @.str.944, 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.rend1674 +logic.rend1674: + br label %logic.end1673 +logic.end1673: + %t46 = phi i1 [ true, %logic.from1671 ], [ %t45, %logic.rend1674 ] + br i1 %t46, label %then1675, label %endif1677 +then1675: + ret i64 3 +endif1677: + %t47 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t47, ptr %a48 + store { ptr, i64, i64 } { ptr @.str.945, 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.from1678 +logic.from1678: + br i1 %t51, label %logic.end1680, label %logic.rhs1679 +logic.rhs1679: + %t52 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t52, ptr %a53 + store { ptr, i64, i64 } { ptr @.str.946, 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.rend1681 +logic.rend1681: + br label %logic.end1680 +logic.end1680: + %t57 = phi i1 [ true, %logic.from1678 ], [ %t56, %logic.rend1681 ] + br label %logic.from1682 +logic.from1682: + br i1 %t57, label %logic.end1684, label %logic.rhs1683 +logic.rhs1683: + %t58 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t58, ptr %a59 + store { ptr, i64, i64 } { ptr @.str.947, 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.rend1685 +logic.rend1685: + br label %logic.end1684 +logic.end1684: + %t63 = phi i1 [ true, %logic.from1682 ], [ %t62, %logic.rend1685 ] + br label %logic.from1686 +logic.from1686: + br i1 %t63, label %logic.end1688, label %logic.rhs1687 +logic.rhs1687: + %t64 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t64, ptr %a65 + store { ptr, i64, i64 } { ptr @.str.948, 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.rend1689 +logic.rend1689: + br label %logic.end1688 +logic.end1688: + %t69 = phi i1 [ true, %logic.from1686 ], [ %t68, %logic.rend1689 ] + br i1 %t69, label %then1690, label %endif1692 +then1690: + ret i64 4 +endif1692: + %t70 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t70, ptr %a71 + store { ptr, i64, i64 } { ptr @.str.949, 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.from1693 +logic.from1693: + br i1 %t74, label %logic.end1695, label %logic.rhs1694 +logic.rhs1694: + %t75 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t75, ptr %a76 + store { ptr, i64, i64 } { ptr @.str.950, 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.rend1696 +logic.rend1696: + br label %logic.end1695 +logic.end1695: + %t80 = phi i1 [ true, %logic.from1693 ], [ %t79, %logic.rend1696 ] + br label %logic.from1697 +logic.from1697: + br i1 %t80, label %logic.end1699, label %logic.rhs1698 +logic.rhs1698: + %t81 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t81, ptr %a82 + store { ptr, i64, i64 } { ptr @.str.951, 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.rend1700 +logic.rend1700: + br label %logic.end1699 +logic.end1699: + %t86 = phi i1 [ true, %logic.from1697 ], [ %t85, %logic.rend1700 ] + br label %logic.from1701 +logic.from1701: + br i1 %t86, label %logic.end1703, label %logic.rhs1702 +logic.rhs1702: + %t87 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t87, ptr %a88 + store { ptr, i64, i64 } { ptr @.str.952, 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.rend1704 +logic.rend1704: + br label %logic.end1703 +logic.end1703: + %t92 = phi i1 [ true, %logic.from1701 ], [ %t91, %logic.rend1704 ] + br label %logic.from1705 +logic.from1705: + br i1 %t92, label %logic.end1707, label %logic.rhs1706 +logic.rhs1706: + %t93 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t93, ptr %a94 + store { ptr, i64, i64 } { ptr @.str.953, 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.rend1708 +logic.rend1708: + br label %logic.end1707 +logic.end1707: + %t98 = phi i1 [ true, %logic.from1705 ], [ %t97, %logic.rend1708 ] + br label %logic.from1709 +logic.from1709: + br i1 %t98, label %logic.end1711, label %logic.rhs1710 +logic.rhs1710: + %t99 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t99, ptr %a100 + store { ptr, i64, i64 } { ptr @.str.954, 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.rend1712 +logic.rend1712: + br label %logic.end1711 +logic.end1711: + %t104 = phi i1 [ true, %logic.from1709 ], [ %t103, %logic.rend1712 ] + br i1 %t104, label %then1713, label %endif1715 +then1713: ret i64 5 -endif1661: +endif1715: ret i64 0 } @@ -17781,13 +19770,10 @@ define internal %S.ast.Node @finch.parser.parseExpr(ptr %p0) { entry: %a1 = alloca ptr, align 16 %a4 = alloca %S.ast.Node, align 16 - %a13 = alloca %S.ast.Node, align 16 - %a14 = alloca %S.ast.Node, align 16 - %a18 = alloca %S.ast.Node, align 16 - %a24 = alloca %S.ast.Node, align 16 - %a25 = alloca %S.ast.Node, align 16 - %a51 = alloca %S.ast.Node, align 16 - %a52 = alloca %S.ast.Node, align 16 + %a15 = alloca %S.ast.Node, align 16 + %a18 = alloca %S.lexer.Token, align 16 + %a22 = alloca %S.ast.Node, align 16 + %a23 = alloca %S.ast.Node, align 16 store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 %t3 = call %S.ast.Node @finch.parser.parseBinary(ptr %t2, i64 1) @@ -17795,81 +19781,78 @@ entry: %t5 = load ptr, ptr %a1 %t6 = call i1 @finch.parser.sameLine(ptr %t5) %t7 = xor i1 %t6, true - br label %logic.from1662 -logic.from1662: - br i1 %t7, label %logic.end1664, label %logic.rhs1663 -logic.rhs1663: + br label %logic.from1716 +logic.from1716: + br i1 %t7, label %logic.end1718, label %logic.rhs1717 +logic.rhs1717: %t8 = load ptr, ptr %a1 - %t9 = call i1 @finch.parser.at(ptr %t8, { ptr, i64, i64 } { ptr @.str.950, i64 2, i64 0 }) + %t9 = call i1 @finch.parser.at(ptr %t8, { ptr, i64, i64 } { ptr @.str.955, i64 2, i64 0 }) %t10 = xor i1 %t9, true - br label %logic.rend1665 -logic.rend1665: - br label %logic.end1664 -logic.end1664: - %t11 = phi i1 [ true, %logic.from1662 ], [ %t10, %logic.rend1665 ] - br i1 %t11, label %then1666, label %endif1668 -then1666: + br label %logic.rend1719 +logic.rend1719: + br label %logic.end1718 +logic.end1718: + %t11 = phi i1 [ true, %logic.from1716 ], [ %t10, %logic.rend1719 ] + br i1 %t11, label %then1720, label %endif1722 +then1720: %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 -endif1668: + ret %S.ast.Node %t12 +endif1722: + %t13 = load ptr, ptr %a1 + %t14 = call %S.ast.Node @finch.parser.node(ptr %t13, { ptr, i64, i64 } { ptr @.str.956, i64 2, i64 0 }) + store %S.ast.Node %t14, ptr %a15 %t16 = load ptr, ptr %a1 - %t17 = call %S.ast.Node @finch.parser.node(ptr %t16, { ptr, i64, i64 } { ptr @.str.951, 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) - %t21 = getelementptr inbounds %S.ast.Node, ptr %a18, i32 0, i32 9 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t21, i32 0, i32 1 - %t23 = load %S.ast.Node, ptr %a4 - store %S.ast.Node %t23, ptr %a24 - call void @finch.copy.S_ast_Node(ptr %a25, ptr %a24) - %t26 = load %S.ast.Node, ptr %a25 - %t27 = load i64, ptr %t22 - %t28 = add i64 %t27, 1 - call void @finch_arr_reserve(ptr %t21, i64 %t28, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t29 = load ptr, ptr %t21 - %t30 = getelementptr inbounds %S.ast.Node, ptr %t29, i64 %t27 - 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.952, i64 1, i64 0 }) - br i1 %t32, label %then1669, label %else1670 -then1669: - %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 - %t35 = getelementptr inbounds { ptr, i64, i64 }, ptr %t34, i32 0, i32 1 - %t36 = load ptr, ptr %a1 - %t37 = call %S.ast.Node @finch.parser.parseBlock(ptr %t36) - %t38 = load i64, ptr %t35 - %t39 = add i64 %t38, 1 - call void @finch_arr_reserve(ptr %t34, i64 %t39, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t40 = load ptr, ptr %t34 - %t41 = getelementptr inbounds %S.ast.Node, ptr %t40, i64 %t38 - store %S.ast.Node %t37, ptr %t41 - store i64 %t39, ptr %t35 - br label %endif1671 -else1670: - %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 - %t45 = call %S.ast.Node @finch.parser.parseExpr(ptr %t44) - %t46 = load i64, ptr %t43 - %t47 = add i64 %t46, 1 - call void @finch_arr_reserve(ptr %t42, i64 %t47, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t48 = load ptr, ptr %t42 - %t49 = getelementptr inbounds %S.ast.Node, ptr %t48, i64 %t46 - store %S.ast.Node %t45, ptr %t49 - store i64 %t47, ptr %t43 - br label %endif1671 -endif1671: - %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) - %t53 = load %S.ast.Node, ptr %a52 - ret %S.ast.Node %t53 + %t17 = call %S.lexer.Token @finch.parser.next(ptr %t16) + store %S.lexer.Token %t17, ptr %a18 + call void @finch.drop.S_lexer_Token(ptr %a18) + %t19 = getelementptr inbounds %S.ast.Node, ptr %a15, i32 0, i32 9 + %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t19, i32 0, i32 1 + %t21 = load %S.ast.Node, ptr %a4 + store %S.ast.Node %t21, ptr %a22 + call void @finch.copy.S_ast_Node(ptr %a23, ptr %a22) + %t24 = load %S.ast.Node, ptr %a23 + %t25 = load i64, ptr %t20 + %t26 = add i64 %t25, 1 + call void @finch_arr_reserve(ptr %t19, i64 %t26, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t27 = load ptr, ptr %t19 + %t28 = getelementptr inbounds %S.ast.Node, ptr %t27, i64 %t25 + store %S.ast.Node %t24, ptr %t28 + store i64 %t26, ptr %t20 + %t29 = load ptr, ptr %a1 + %t30 = call i1 @finch.parser.at(ptr %t29, { ptr, i64, i64 } { ptr @.str.957, i64 1, i64 0 }) + br i1 %t30, label %then1723, label %else1724 +then1723: + %t31 = getelementptr inbounds %S.ast.Node, ptr %a15, i32 0, i32 6 + store i1 true, ptr %t31 + %t32 = getelementptr inbounds %S.ast.Node, ptr %a15, i32 0, i32 9 + %t33 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i32 0, i32 1 + %t34 = load ptr, ptr %a1 + %t35 = call %S.ast.Node @finch.parser.parseBlock(ptr %t34) + %t36 = load i64, ptr %t33 + %t37 = add i64 %t36, 1 + call void @finch_arr_reserve(ptr %t32, i64 %t37, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t38 = load ptr, ptr %t32 + %t39 = getelementptr inbounds %S.ast.Node, ptr %t38, i64 %t36 + store %S.ast.Node %t35, ptr %t39 + store i64 %t37, ptr %t33 + br label %endif1725 +else1724: + %t40 = getelementptr inbounds %S.ast.Node, ptr %a15, i32 0, i32 9 + %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i32 0, i32 1 + %t42 = load ptr, ptr %a1 + %t43 = call %S.ast.Node @finch.parser.parseExpr(ptr %t42) + %t44 = load i64, ptr %t41 + %t45 = add i64 %t44, 1 + call void @finch_arr_reserve(ptr %t40, i64 %t45, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t46 = load ptr, ptr %t40 + %t47 = getelementptr inbounds %S.ast.Node, ptr %t46, i64 %t44 + store %S.ast.Node %t43, ptr %t47 + store i64 %t45, ptr %t41 + br label %endif1725 +endif1725: + %t48 = load %S.ast.Node, ptr %a15 + call void @finch.drop.S_ast_Node(ptr %a4) + ret %S.ast.Node %t48 } define internal %S.ast.Node @finch.parser.parseBinary(ptr %p0, i64 %p1) { @@ -17877,319 +19860,360 @@ entry: %a1 = alloca ptr, align 16 %a2 = alloca i64, align 16 %a11 = alloca %S.ast.Node, align 16 - %a22 = alloca %S.ast.Node, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 + %a17 = alloca { ptr, i64, i64 }, align 16 + %a23 = alloca %S.ast.Node, align 16 %a27 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca %S.ast.Node, align 16 - %a34 = alloca %S.ast.Node, align 16 - %a51 = alloca %S.ast.Node, align 16 - %a52 = alloca %S.ast.Node, align 16 + %a28 = alloca { ptr, i64, i64 }, align 16 + %a30 = alloca %S.lexer.Token, align 16 + %a33 = alloca { ptr, i64, i64 }, align 16 + %a37 = alloca %S.ast.Node, align 16 + %a38 = alloca %S.ast.Node, align 16 %a55 = alloca %S.ast.Node, align 16 %a56 = alloca %S.ast.Node, align 16 + %a59 = alloca %S.ast.Node, align 16 store ptr %p0, ptr %a1 store i64 %p1, ptr %a2 %t3 = load i64, ptr %a2 %t4 = icmp sgt i64 %t3, 5 - br i1 %t4, label %then1672, label %endif1674 -then1672: + br i1 %t4, label %then1726, label %endif1728 +then1726: %t5 = load ptr, ptr %a1 %t6 = call %S.ast.Node @finch.parser.parseUnary(ptr %t5) ret %S.ast.Node %t6 -endif1674: +endif1728: %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.cond1675 -while.cond1675: + br label %while.cond1729 +while.cond1729: %t12 = load ptr, ptr %a1 %t13 = call i1 @finch.parser.sameLine(ptr %t12) - br label %logic.from1678 -logic.from1678: - br i1 %t13, label %logic.rhs1679, label %logic.end1680 -logic.rhs1679: + br label %logic.from1732 +logic.from1732: + br i1 %t13, label %logic.rhs1733, label %logic.end1734 +logic.rhs1733: %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.rend1681 -logic.rend1681: - br label %logic.end1680 -logic.end1680: - %t19 = phi i1 [ false, %logic.from1678 ], [ %t18, %logic.rend1681 ] - br i1 %t19, label %while.body1676, label %while.end1677 -while.body1676: - %t20 = load ptr, ptr %a1 - %t21 = call %S.ast.Node @finch.parser.node(ptr %t20, { ptr, i64, i64 } { ptr @.str.953, 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) - %t25 = extractvalue %S.lexer.Token %t24, 0 - store { ptr, i64, i64 } %t25, ptr %a26 - call void @finch_str_copy(ptr %a27, ptr %a26) - %t28 = load { ptr, i64, i64 }, ptr %a27 - %t29 = getelementptr inbounds %S.ast.Node, ptr %a22, i32 0, i32 1 - store { ptr, i64, i64 } %t28, ptr %t29 - %t30 = getelementptr inbounds %S.ast.Node, ptr %a22, i32 0, i32 9 - %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t30, i32 0, i32 1 - %t32 = load %S.ast.Node, ptr %a11 - store %S.ast.Node %t32, ptr %a33 - call void @finch.copy.S_ast_Node(ptr %a34, ptr %a33) - %t35 = load %S.ast.Node, ptr %a34 - %t36 = load i64, ptr %t31 - %t37 = add i64 %t36, 1 - call void @finch_arr_reserve(ptr %t30, i64 %t37, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t38 = load ptr, ptr %t30 - %t39 = getelementptr inbounds %S.ast.Node, ptr %t38, i64 %t36 - store %S.ast.Node %t35, ptr %t39 - store i64 %t37, ptr %t31 - %t40 = getelementptr inbounds %S.ast.Node, ptr %a22, i32 0, i32 9 - %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i32 0, i32 1 - %t42 = load ptr, ptr %a1 - %t43 = load i64, ptr %a2 - %t44 = add i64 %t43, 1 - %t45 = call %S.ast.Node @finch.parser.parseBinary(ptr %t42, i64 %t44) - %t46 = load i64, ptr %t41 - %t47 = add i64 %t46, 1 - call void @finch_arr_reserve(ptr %t40, i64 %t47, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t48 = load ptr, ptr %t40 - %t49 = getelementptr inbounds %S.ast.Node, ptr %t48, i64 %t46 - store %S.ast.Node %t45, ptr %t49 - store i64 %t47, ptr %t41 - %t50 = load %S.ast.Node, ptr %a22 - store %S.ast.Node %t50, ptr %a51 - 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.cond1675 -while.end1677: - %t54 = load %S.ast.Node, ptr %a11 + store { ptr, i64, i64 } %t15, ptr %a17 + call void @finch_str_drop(ptr %a17) + %t18 = load i64, ptr %a2 + %t19 = icmp eq i64 %t16, %t18 + br label %logic.rend1735 +logic.rend1735: + br label %logic.end1734 +logic.end1734: + %t20 = phi i1 [ false, %logic.from1732 ], [ %t19, %logic.rend1735 ] + br i1 %t20, label %while.body1730, label %while.end1731 +while.body1730: + %t21 = load ptr, ptr %a1 + %t22 = call %S.ast.Node @finch.parser.node(ptr %t21, { ptr, i64, i64 } { ptr @.str.958, i64 6, i64 0 }) + store %S.ast.Node %t22, ptr %a23 + %t24 = load ptr, ptr %a1 + %t25 = call %S.lexer.Token @finch.parser.next(ptr %t24) + %t26 = extractvalue %S.lexer.Token %t25, 0 + store { ptr, i64, i64 } %t26, ptr %a27 + call void @finch_str_copy(ptr %a28, ptr %a27) + %t29 = load { ptr, i64, i64 }, ptr %a28 + store %S.lexer.Token %t25, ptr %a30 + call void @finch.drop.S_lexer_Token(ptr %a30) + %t31 = getelementptr inbounds %S.ast.Node, ptr %a23, i32 0, i32 1 + %t32 = load { ptr, i64, i64 }, ptr %t31 + store { ptr, i64, i64 } %t29, ptr %t31 + store { ptr, i64, i64 } %t32, ptr %a33 + call void @finch_str_drop(ptr %a33) + %t34 = getelementptr inbounds %S.ast.Node, ptr %a23, i32 0, i32 9 + %t35 = getelementptr inbounds { ptr, i64, i64 }, ptr %t34, i32 0, i32 1 + %t36 = load %S.ast.Node, ptr %a11 + store %S.ast.Node %t36, ptr %a37 + call void @finch.copy.S_ast_Node(ptr %a38, ptr %a37) + %t39 = load %S.ast.Node, 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 (%S.ast.Node, ptr null, i32 1) to i64)) + %t42 = load ptr, ptr %t34 + %t43 = getelementptr inbounds %S.ast.Node, ptr %t42, i64 %t40 + store %S.ast.Node %t39, ptr %t43 + store i64 %t41, ptr %t35 + %t44 = getelementptr inbounds %S.ast.Node, ptr %a23, i32 0, i32 9 + %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %t44, i32 0, i32 1 + %t46 = load ptr, ptr %a1 + %t47 = load i64, ptr %a2 + %t48 = add i64 %t47, 1 + %t49 = call %S.ast.Node @finch.parser.parseBinary(ptr %t46, i64 %t48) + %t50 = load i64, ptr %t45 + %t51 = add i64 %t50, 1 + call void @finch_arr_reserve(ptr %t44, i64 %t51, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t52 = load ptr, ptr %t44 + %t53 = getelementptr inbounds %S.ast.Node, ptr %t52, i64 %t50 + store %S.ast.Node %t49, ptr %t53 + store i64 %t51, ptr %t45 + %t54 = load %S.ast.Node, ptr %a23 store %S.ast.Node %t54, ptr %a55 call void @finch.copy.S_ast_Node(ptr %a56, ptr %a55) %t57 = load %S.ast.Node, ptr %a56 - ret %S.ast.Node %t57 + %t58 = load %S.ast.Node, ptr %a11 + store %S.ast.Node %t57, ptr %a11 + store %S.ast.Node %t58, ptr %a59 + call void @finch.drop.S_ast_Node(ptr %a59) + call void @finch.drop.S_ast_Node(ptr %a23) + br label %while.cond1729 +while.end1731: + %t60 = load %S.ast.Node, ptr %a11 + ret %S.ast.Node %t60 } define internal %S.ast.Node @finch.parser.parseUnary(ptr %p0) { entry: %a1 = alloca ptr, align 16 %a6 = alloca %S.ast.Node, align 16 - %a28 = alloca %S.ast.Node, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 + %a9 = alloca %S.lexer.Token, align 16 + %a29 = alloca %S.ast.Node, align 16 %a33 = alloca { ptr, i64, i64 }, align 16 + %a34 = alloca { ptr, i64, i64 }, align 16 + %a36 = alloca %S.lexer.Token, align 16 + %a39 = 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.954, i64 3, i64 0 }) - br i1 %t3, label %then1682, label %endif1684 -then1682: + %t3 = call i1 @finch.parser.at(ptr %t2, { ptr, i64, i64 } { ptr @.str.959, i64 3, i64 0 }) + br i1 %t3, label %then1736, label %endif1738 +then1736: %t4 = load ptr, ptr %a1 - %t5 = call %S.ast.Node @finch.parser.node(ptr %t4, { ptr, i64, i64 } { ptr @.str.955, i64 3, i64 0 }) + %t5 = call %S.ast.Node @finch.parser.node(ptr %t4, { ptr, i64, i64 } { ptr @.str.960, 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) - %t9 = getelementptr inbounds %S.ast.Node, ptr %a6, i32 0, i32 9 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t9, i32 0, i32 1 - %t11 = load ptr, ptr %a1 - %t12 = call %S.ast.Node @finch.parser.parsePostfix(ptr %t11) - %t13 = load i64, ptr %t10 - %t14 = add i64 %t13, 1 - call void @finch_arr_reserve(ptr %t9, i64 %t14, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t15 = load ptr, ptr %t9 - %t16 = getelementptr inbounds %S.ast.Node, ptr %t15, i64 %t13 - store %S.ast.Node %t12, ptr %t16 - store i64 %t14, ptr %t10 - %t17 = load %S.ast.Node, ptr %a6 - ret %S.ast.Node %t17 -endif1684: - %t18 = load ptr, ptr %a1 - %t19 = call i1 @finch.parser.at(ptr %t18, { ptr, i64, i64 } { ptr @.str.956, i64 1, i64 0 }) - br label %logic.from1685 -logic.from1685: - br i1 %t19, label %logic.end1687, label %logic.rhs1686 -logic.rhs1686: - %t20 = load ptr, ptr %a1 - %t21 = call i1 @finch.parser.at(ptr %t20, { ptr, i64, i64 } { ptr @.str.957, i64 1, i64 0 }) - br label %logic.rend1688 -logic.rend1688: - br label %logic.end1687 -logic.end1687: - %t22 = phi i1 [ true, %logic.from1685 ], [ %t21, %logic.rend1688 ] - br label %logic.from1689 -logic.from1689: - br i1 %t22, label %logic.end1691, label %logic.rhs1690 -logic.rhs1690: - %t23 = load ptr, ptr %a1 - %t24 = call i1 @finch.parser.at(ptr %t23, { ptr, i64, i64 } { ptr @.str.958, i64 1, i64 0 }) - br label %logic.rend1692 -logic.rend1692: - br label %logic.end1691 -logic.end1691: - %t25 = phi i1 [ true, %logic.from1689 ], [ %t24, %logic.rend1692 ] - br i1 %t25, label %then1693, label %endif1695 -then1693: - %t26 = load ptr, ptr %a1 - %t27 = call %S.ast.Node @finch.parser.node(ptr %t26, { ptr, i64, i64 } { ptr @.str.959, 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) - %t31 = extractvalue %S.lexer.Token %t30, 0 - store { ptr, i64, i64 } %t31, ptr %a32 - call void @finch_str_copy(ptr %a33, ptr %a32) - %t34 = load { ptr, i64, i64 }, ptr %a33 - %t35 = getelementptr inbounds %S.ast.Node, ptr %a28, i32 0, i32 1 - store { ptr, i64, i64 } %t34, ptr %t35 - %t36 = getelementptr inbounds %S.ast.Node, ptr %a28, i32 0, i32 9 - %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %t36, i32 0, i32 1 - %t38 = load ptr, ptr %a1 - %t39 = call %S.ast.Node @finch.parser.parseUnary(ptr %t38) - %t40 = load i64, ptr %t37 - %t41 = add i64 %t40, 1 - call void @finch_arr_reserve(ptr %t36, i64 %t41, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t42 = load ptr, ptr %t36 - %t43 = getelementptr inbounds %S.ast.Node, ptr %t42, i64 %t40 - store %S.ast.Node %t39, ptr %t43 - store i64 %t41, ptr %t37 - %t44 = load %S.ast.Node, ptr %a28 - ret %S.ast.Node %t44 -endif1695: - %t45 = load ptr, ptr %a1 - %t46 = call %S.ast.Node @finch.parser.parsePostfix(ptr %t45) - ret %S.ast.Node %t46 + store %S.lexer.Token %t8, ptr %a9 + call void @finch.drop.S_lexer_Token(ptr %a9) + %t10 = getelementptr inbounds %S.ast.Node, ptr %a6, i32 0, i32 9 + %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t10, i32 0, i32 1 + %t12 = load ptr, ptr %a1 + %t13 = call %S.ast.Node @finch.parser.parsePostfix(ptr %t12) + %t14 = load i64, ptr %t11 + %t15 = add i64 %t14, 1 + call void @finch_arr_reserve(ptr %t10, i64 %t15, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t16 = load ptr, ptr %t10 + %t17 = getelementptr inbounds %S.ast.Node, ptr %t16, i64 %t14 + store %S.ast.Node %t13, ptr %t17 + store i64 %t15, ptr %t11 + %t18 = load %S.ast.Node, ptr %a6 + ret %S.ast.Node %t18 +endif1738: + %t19 = load ptr, ptr %a1 + %t20 = call i1 @finch.parser.at(ptr %t19, { ptr, i64, i64 } { ptr @.str.961, i64 1, i64 0 }) + br label %logic.from1739 +logic.from1739: + br i1 %t20, label %logic.end1741, label %logic.rhs1740 +logic.rhs1740: + %t21 = load ptr, ptr %a1 + %t22 = call i1 @finch.parser.at(ptr %t21, { ptr, i64, i64 } { ptr @.str.962, i64 1, i64 0 }) + br label %logic.rend1742 +logic.rend1742: + br label %logic.end1741 +logic.end1741: + %t23 = phi i1 [ true, %logic.from1739 ], [ %t22, %logic.rend1742 ] + br label %logic.from1743 +logic.from1743: + br i1 %t23, label %logic.end1745, label %logic.rhs1744 +logic.rhs1744: + %t24 = load ptr, ptr %a1 + %t25 = call i1 @finch.parser.at(ptr %t24, { ptr, i64, i64 } { ptr @.str.963, i64 1, i64 0 }) + br label %logic.rend1746 +logic.rend1746: + br label %logic.end1745 +logic.end1745: + %t26 = phi i1 [ true, %logic.from1743 ], [ %t25, %logic.rend1746 ] + br i1 %t26, label %then1747, label %endif1749 +then1747: + %t27 = load ptr, ptr %a1 + %t28 = call %S.ast.Node @finch.parser.node(ptr %t27, { ptr, i64, i64 } { ptr @.str.964, i64 5, i64 0 }) + store %S.ast.Node %t28, ptr %a29 + %t30 = load ptr, ptr %a1 + %t31 = call %S.lexer.Token @finch.parser.next(ptr %t30) + %t32 = extractvalue %S.lexer.Token %t31, 0 + store { ptr, i64, i64 } %t32, ptr %a33 + call void @finch_str_copy(ptr %a34, ptr %a33) + %t35 = load { ptr, i64, i64 }, ptr %a34 + store %S.lexer.Token %t31, ptr %a36 + call void @finch.drop.S_lexer_Token(ptr %a36) + %t37 = getelementptr inbounds %S.ast.Node, ptr %a29, i32 0, i32 1 + %t38 = load { ptr, i64, i64 }, ptr %t37 + store { ptr, i64, i64 } %t35, ptr %t37 + store { ptr, i64, i64 } %t38, ptr %a39 + call void @finch_str_drop(ptr %a39) + %t40 = getelementptr inbounds %S.ast.Node, ptr %a29, i32 0, i32 9 + %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i32 0, i32 1 + %t42 = load ptr, ptr %a1 + %t43 = call %S.ast.Node @finch.parser.parseUnary(ptr %t42) + %t44 = load i64, ptr %t41 + %t45 = add i64 %t44, 1 + call void @finch_arr_reserve(ptr %t40, i64 %t45, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t46 = load ptr, ptr %t40 + %t47 = getelementptr inbounds %S.ast.Node, ptr %t46, i64 %t44 + store %S.ast.Node %t43, ptr %t47 + store i64 %t45, ptr %t41 + %t48 = load %S.ast.Node, ptr %a29 + ret %S.ast.Node %t48 +endif1749: + %t49 = load ptr, ptr %a1 + %t50 = call %S.ast.Node @finch.parser.parsePostfix(ptr %t49) + ret %S.ast.Node %t50 } define internal void @finch.parser.parseArgs(ptr %p0, ptr %p1) { entry: %a1 = alloca ptr, align 16 %a2 = alloca ptr, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 + %a5 = alloca %S.lexer.Token, align 16 + %a17 = alloca { ptr, i64, i64 }, align 16 %a22 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 + %a23 = alloca { ptr, i64, i64 }, align 16 + %a26 = alloca { ptr, i64, i64 }, align 16 + %a31 = alloca { ptr, i64, i64 }, align 16 + %a32 = alloca { ptr, i64, i64 }, align 16 + %a34 = alloca %S.lexer.Token, align 16 + %a36 = alloca { ptr, i64, i64 }, align 16 + %a39 = alloca %S.lexer.Token, align 16 + %a45 = alloca { ptr, i64, i64 }, align 16 + %a46 = alloca { ptr, i64, i64 }, align 16 + %a72 = alloca %S.lexer.Token, align 16 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.960, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.961, i64 3, i64 0 }) - %t5 = load ptr, ptr %a1 - %t6 = icmp eq ptr %t5, null - br i1 %t6, label %panic1696, label %ok1697 -panic1696: - call void @finch_panic(ptr @.str.962, i64 638, ptr @.str.963) + %t4 = call %S.lexer.Token @finch.parser.expect(ptr %t3, { ptr, i64, i64 } { ptr @.str.965, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.966, i64 3, i64 0 }) + store %S.lexer.Token %t4, ptr %a5 + call void @finch.drop.S_lexer_Token(ptr %a5) + %t6 = load ptr, ptr %a1 + %t7 = icmp eq ptr %t6, null + br i1 %t7, label %panic1750, label %ok1751 +panic1750: + call void @finch_panic(ptr @.str.967, i64 638, ptr @.str.968) unreachable -ok1697: - %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.964, i64 1, i64 0 }) - %t12 = xor i1 %t11, true - br i1 %t12, label %then1698, label %endif1700 -then1698: - br label %while.cond1701 -while.cond1701: - %t13 = load ptr, ptr %a1 - %t14 = call i1 @finch.parser.at(ptr %t13, { ptr, i64, i64 } { ptr @.str.965, i64 1, i64 0 }) - %t15 = xor i1 %t14, true - br i1 %t15, label %while.body1702, label %while.end1703 -while.body1702: - store { ptr, i64, i64 } { ptr @.str.966, i64 0, i64 0 }, ptr %a16 - %t17 = load ptr, ptr %a1 - %t18 = call i1 @finch.parser.at(ptr %t17, { ptr, i64, i64 } { ptr @.str.967, i64 5, i64 0 }) - br label %logic.from1704 -logic.from1704: - br i1 %t18, label %logic.rhs1705, label %logic.end1706 -logic.rhs1705: - %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.968, 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.rend1707 -logic.rend1707: - br label %logic.end1706 -logic.end1706: - %t25 = phi i1 [ false, %logic.from1704 ], [ %t24, %logic.rend1707 ] - br i1 %t25, label %then1708, label %endif1710 -then1708: - %t26 = load ptr, ptr %a1 - %t27 = call %S.lexer.Token @finch.parser.next(ptr %t26) - %t28 = extractvalue %S.lexer.Token %t27, 1 - store { ptr, i64, i64 } %t28, ptr %a29 - call void @finch_str_copy(ptr %a30, ptr %a29) - %t31 = load { ptr, i64, i64 }, ptr %a30 - store { ptr, i64, i64 } %t31, ptr %a16 - %t32 = load ptr, ptr %a1 - %t33 = call %S.lexer.Token @finch.parser.next(ptr %t32) - br label %endif1710 -endif1710: - %t34 = load ptr, ptr %a2 - %t35 = icmp eq ptr %t34, null - br i1 %t35, label %panic1711, label %ok1712 -panic1711: - call void @finch_panic(ptr @.str.969, i64 646, ptr @.str.970) +ok1751: + %t8 = getelementptr inbounds %S.parser.Parser, ptr %t6, i32 0, i32 2 + %t9 = load i64, ptr %t8 + %t10 = add i64 %t9, 1 + store i64 %t10, ptr %t8 + %t11 = load ptr, ptr %a1 + %t12 = call i1 @finch.parser.at(ptr %t11, { ptr, i64, i64 } { ptr @.str.969, i64 1, i64 0 }) + %t13 = xor i1 %t12, true + br i1 %t13, label %then1752, label %endif1754 +then1752: + br label %while.cond1755 +while.cond1755: + %t14 = load ptr, ptr %a1 + %t15 = call i1 @finch.parser.at(ptr %t14, { ptr, i64, i64 } { ptr @.str.970, i64 1, i64 0 }) + %t16 = xor i1 %t15, true + br i1 %t16, label %while.body1756, label %while.end1757 +while.body1756: + store { ptr, i64, i64 } { ptr @.str.971, i64 0, i64 0 }, ptr %a17 + %t18 = load ptr, ptr %a1 + %t19 = call i1 @finch.parser.at(ptr %t18, { ptr, i64, i64 } { ptr @.str.972, i64 5, i64 0 }) + br label %logic.from1758 +logic.from1758: + br i1 %t19, label %logic.rhs1759, label %logic.end1760 +logic.rhs1759: + %t20 = load ptr, ptr %a1 + %t21 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t20, i64 1) + store { ptr, i64, i64 } %t21, ptr %a22 + store { ptr, i64, i64 } { ptr @.str.973, i64 1, i64 0 }, ptr %a23 + %t24 = call i32 @finch_str_eq(ptr %a22, ptr %a23) + %t25 = icmp ne i32 %t24, 0 + store { ptr, i64, i64 } %t21, ptr %a26 + call void @finch_str_drop(ptr %a26) + br label %logic.rend1761 +logic.rend1761: + br label %logic.end1760 +logic.end1760: + %t27 = phi i1 [ false, %logic.from1758 ], [ %t25, %logic.rend1761 ] + br i1 %t27, label %then1762, label %endif1764 +then1762: + %t28 = load ptr, ptr %a1 + %t29 = call %S.lexer.Token @finch.parser.next(ptr %t28) + %t30 = extractvalue %S.lexer.Token %t29, 1 + store { ptr, i64, i64 } %t30, ptr %a31 + call void @finch_str_copy(ptr %a32, ptr %a31) + %t33 = load { ptr, i64, i64 }, ptr %a32 + store %S.lexer.Token %t29, ptr %a34 + call void @finch.drop.S_lexer_Token(ptr %a34) + %t35 = load { ptr, i64, i64 }, ptr %a17 + store { ptr, i64, i64 } %t33, ptr %a17 + store { ptr, i64, i64 } %t35, ptr %a36 + call void @finch_str_drop(ptr %a36) + %t37 = load ptr, ptr %a1 + %t38 = call %S.lexer.Token @finch.parser.next(ptr %t37) + store %S.lexer.Token %t38, ptr %a39 + call void @finch.drop.S_lexer_Token(ptr %a39) + br label %endif1764 +endif1764: + %t40 = load ptr, ptr %a2 + %t41 = icmp eq ptr %t40, null + br i1 %t41, label %panic1765, label %ok1766 +panic1765: + call void @finch_panic(ptr @.str.974, i64 646, ptr @.str.975) unreachable -ok1712: - %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 - store { ptr, i64, i64 } %t38, ptr %a39 - call void @finch_str_copy(ptr %a40, ptr %a39) - %t41 = load { ptr, i64, i64 }, ptr %a40 - %t42 = load i64, ptr %t37 - %t43 = add i64 %t42, 1 - call void @finch_arr_reserve(ptr %t36, i64 %t43, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t44 = load ptr, ptr %t36 - %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %t44, i64 %t42 - store { ptr, i64, i64 } %t41, ptr %t45 - store i64 %t43, ptr %t37 - %t46 = load ptr, ptr %a2 - %t47 = icmp eq ptr %t46, null - br i1 %t47, label %panic1713, label %ok1714 -panic1713: - call void @finch_panic(ptr @.str.971, i64 647, ptr @.str.972) +ok1766: + %t42 = getelementptr inbounds %S.ast.Node, ptr %t40, i32 0, i32 10 + %t43 = getelementptr inbounds { ptr, i64, i64 }, ptr %t42, i32 0, i32 1 + %t44 = load { ptr, i64, i64 }, ptr %a17 + store { ptr, i64, i64 } %t44, ptr %a45 + call void @finch_str_copy(ptr %a46, ptr %a45) + %t47 = load { ptr, i64, i64 }, ptr %a46 + %t48 = load i64, ptr %t43 + %t49 = add i64 %t48, 1 + call void @finch_arr_reserve(ptr %t42, i64 %t49, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t50 = load ptr, ptr %t42 + %t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %t50, i64 %t48 + store { ptr, i64, i64 } %t47, ptr %t51 + store i64 %t49, ptr %t43 + %t52 = load ptr, ptr %a2 + %t53 = icmp eq ptr %t52, null + br i1 %t53, label %panic1767, label %ok1768 +panic1767: + call void @finch_panic(ptr @.str.976, i64 647, ptr @.str.977) unreachable -ok1714: - %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 - %t51 = call %S.ast.Node @finch.parser.parseExpr(ptr %t50) - %t52 = load i64, ptr %t49 - %t53 = add i64 %t52, 1 - call void @finch_arr_reserve(ptr %t48, i64 %t53, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t54 = load ptr, ptr %t48 - %t55 = getelementptr inbounds %S.ast.Node, ptr %t54, i64 %t52 - store %S.ast.Node %t51, ptr %t55 - store i64 %t53, ptr %t49 +ok1768: + %t54 = getelementptr inbounds %S.ast.Node, ptr %t52, i32 0, i32 9 + %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %t54, i32 0, i32 1 %t56 = load ptr, ptr %a1 - %t57 = call i1 @finch.parser.accept(ptr %t56, { ptr, i64, i64 } { ptr @.str.973, i64 1, i64 0 }) - %t58 = xor i1 %t57, true - br i1 %t58, label %then1715, label %endif1717 -then1715: - br label %while.end1703 -endif1717: - br label %while.cond1701 -while.end1703: - br label %endif1700 -endif1700: - %t59 = load ptr, ptr %a1 - %t60 = icmp eq ptr %t59, null - br i1 %t60, label %panic1718, label %ok1719 -panic1718: - call void @finch_panic(ptr @.str.974, i64 653, ptr @.str.975) + %t57 = call %S.ast.Node @finch.parser.parseExpr(ptr %t56) + %t58 = load i64, ptr %t55 + %t59 = add i64 %t58, 1 + call void @finch_arr_reserve(ptr %t54, i64 %t59, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t60 = load ptr, ptr %t54 + %t61 = getelementptr inbounds %S.ast.Node, ptr %t60, i64 %t58 + store %S.ast.Node %t57, ptr %t61 + store i64 %t59, ptr %t55 + %t62 = load ptr, ptr %a1 + %t63 = call i1 @finch.parser.accept(ptr %t62, { ptr, i64, i64 } { ptr @.str.978, i64 1, i64 0 }) + %t64 = xor i1 %t63, true + br i1 %t64, label %then1769, label %endif1771 +then1769: + call void @finch_str_drop(ptr %a17) + br label %while.end1757 +endif1771: + call void @finch_str_drop(ptr %a17) + br label %while.cond1755 +while.end1757: + br label %endif1754 +endif1754: + %t65 = load ptr, ptr %a1 + %t66 = icmp eq ptr %t65, null + br i1 %t66, label %panic1772, label %ok1773 +panic1772: + call void @finch_panic(ptr @.str.979, i64 653, ptr @.str.980) unreachable -ok1719: - %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.976, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.977, i64 3, i64 0 }) +ok1773: + %t67 = getelementptr inbounds %S.parser.Parser, ptr %t65, i32 0, i32 2 + %t68 = load i64, ptr %t67 + %t69 = sub i64 %t68, 1 + store i64 %t69, ptr %t67 + %t70 = load ptr, ptr %a1 + %t71 = call %S.lexer.Token @finch.parser.expect(ptr %t70, { ptr, i64, i64 } { ptr @.str.981, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.982, i64 3, i64 0 }) + store %S.lexer.Token %t71, ptr %a72 + call void @finch.drop.S_lexer_Token(ptr %a72) ret void } @@ -18198,170 +20222,193 @@ entry: %a1 = alloca ptr, align 16 %a4 = alloca %S.ast.Node, align 16 %a11 = alloca %S.ast.Node, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 + %a14 = alloca %S.lexer.Token, align 16 %a18 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca %S.ast.Node, align 16 - %a25 = alloca %S.ast.Node, align 16 - %a41 = alloca %S.ast.Node, align 16 - %a42 = alloca %S.ast.Node, align 16 + %a19 = alloca { ptr, i64, i64 }, align 16 + %a21 = alloca %S.lexer.Token, align 16 + %a24 = alloca { ptr, i64, i64 }, align 16 + %a28 = alloca %S.ast.Node, align 16 + %a29 = alloca %S.ast.Node, align 16 + %a40 = alloca %S.lexer.Token, align 16 + %a45 = alloca { ptr, i64, i64 }, align 16 %a48 = alloca %S.ast.Node, align 16 - %a59 = alloca %S.ast.Node, align 16 - %a60 = alloca %S.ast.Node, align 16 - %a82 = alloca %S.ast.Node, align 16 - %a83 = alloca %S.ast.Node, align 16 - %a86 = alloca %S.ast.Node, align 16 - %a87 = alloca %S.ast.Node, align 16 - %a90 = alloca %S.ast.Node, align 16 - %a91 = alloca %S.ast.Node, align 16 + %a49 = alloca %S.ast.Node, align 16 + %a52 = alloca %S.ast.Node, align 16 + %a57 = alloca %S.ast.Node, align 16 + %a60 = alloca %S.lexer.Token, align 16 + %a69 = alloca %S.ast.Node, align 16 + %a70 = alloca %S.ast.Node, align 16 + %a91 = alloca %S.lexer.Token, align 16 + %a93 = alloca %S.ast.Node, align 16 + %a94 = alloca %S.ast.Node, align 16 + %a97 = alloca %S.ast.Node, align 16 store ptr %p0, ptr %a1 %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.cond1720 -while.cond1720: + br label %while.cond1774 +while.cond1774: %t5 = load ptr, ptr %a1 %t6 = call i1 @finch.parser.sameLine(ptr %t5) - br i1 %t6, label %while.body1721, label %while.end1722 -while.body1721: + br i1 %t6, label %while.body1775, label %while.end1776 +while.body1775: %t7 = load ptr, ptr %a1 - %t8 = call i1 @finch.parser.at(ptr %t7, { ptr, i64, i64 } { ptr @.str.978, i64 1, i64 0 }) - br i1 %t8, label %then1723, label %else1724 -then1723: + %t8 = call i1 @finch.parser.at(ptr %t7, { ptr, i64, i64 } { ptr @.str.983, i64 1, i64 0 }) + br i1 %t8, label %then1777, label %else1778 +then1777: %t9 = load ptr, ptr %a1 - %t10 = call %S.ast.Node @finch.parser.node(ptr %t9, { ptr, i64, i64 } { ptr @.str.979, i64 6, i64 0 }) + %t10 = call %S.ast.Node @finch.parser.node(ptr %t9, { ptr, i64, i64 } { ptr @.str.984, 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.980, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.981, 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) - %t19 = load { ptr, i64, i64 }, ptr %a18 - %t20 = getelementptr inbounds %S.ast.Node, ptr %a11, i32 0, i32 1 - store { ptr, i64, i64 } %t19, ptr %t20 - %t21 = getelementptr inbounds %S.ast.Node, ptr %a11, i32 0, i32 9 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t21, i32 0, i32 1 - %t23 = load %S.ast.Node, ptr %a4 - store %S.ast.Node %t23, ptr %a24 - call void @finch.copy.S_ast_Node(ptr %a25, ptr %a24) - %t26 = load %S.ast.Node, ptr %a25 - %t27 = load i64, ptr %t22 - %t28 = add i64 %t27, 1 - call void @finch_arr_reserve(ptr %t21, i64 %t28, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t29 = load ptr, ptr %t21 - %t30 = getelementptr inbounds %S.ast.Node, ptr %t29, i64 %t27 - 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.982, i64 1, i64 0 }) - br label %logic.from1726 -logic.from1726: - br i1 %t32, label %logic.rhs1727, label %logic.end1728 -logic.rhs1727: - %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.rend1729 -logic.rend1729: - br label %logic.end1728 -logic.end1728: - %t37 = phi i1 [ false, %logic.from1726 ], [ %t36, %logic.rend1729 ] - br i1 %t37, label %then1730, label %endif1732 -then1730: - %t38 = getelementptr inbounds %S.ast.Node, ptr %a11, i32 0, i32 0 - store { ptr, i64, i64 } { ptr @.str.983, i64 6, i64 0 }, ptr %t38 - %t39 = load ptr, ptr %a1 - call void @finch.parser.parseArgs(ptr %t39, ptr %a11) - br label %endif1732 -endif1732: - %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 %endif1725 -else1724: - %t44 = load ptr, ptr %a1 - %t45 = call i1 @finch.parser.at(ptr %t44, { ptr, i64, i64 } { ptr @.str.984, i64 1, i64 0 }) - br i1 %t45, label %then1733, label %else1734 -then1733: + store %S.lexer.Token %t13, ptr %a14 + call void @finch.drop.S_lexer_Token(ptr %a14) + %t15 = load ptr, ptr %a1 + %t16 = call %S.lexer.Token @finch.parser.expect(ptr %t15, { ptr, i64, i64 } { ptr @.str.985, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.986, i64 16, i64 0 }) + %t17 = extractvalue %S.lexer.Token %t16, 1 + store { ptr, i64, i64 } %t17, ptr %a18 + call void @finch_str_copy(ptr %a19, ptr %a18) + %t20 = load { ptr, i64, i64 }, ptr %a19 + store %S.lexer.Token %t16, ptr %a21 + call void @finch.drop.S_lexer_Token(ptr %a21) + %t22 = getelementptr inbounds %S.ast.Node, ptr %a11, i32 0, i32 1 + %t23 = load { ptr, i64, i64 }, ptr %t22 + store { ptr, i64, i64 } %t20, ptr %t22 + store { ptr, i64, i64 } %t23, ptr %a24 + call void @finch_str_drop(ptr %a24) + %t25 = getelementptr inbounds %S.ast.Node, ptr %a11, i32 0, i32 9 + %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t25, i32 0, i32 1 + %t27 = load %S.ast.Node, ptr %a4 + store %S.ast.Node %t27, ptr %a28 + call void @finch.copy.S_ast_Node(ptr %a29, ptr %a28) + %t30 = load %S.ast.Node, ptr %a29 + %t31 = load i64, ptr %t26 + %t32 = add i64 %t31, 1 + call void @finch_arr_reserve(ptr %t25, i64 %t32, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t33 = load ptr, ptr %t25 + %t34 = getelementptr inbounds %S.ast.Node, ptr %t33, i64 %t31 + store %S.ast.Node %t30, ptr %t34 + store i64 %t32, ptr %t26 + %t35 = load ptr, ptr %a1 + %t36 = call i1 @finch.parser.at(ptr %t35, { ptr, i64, i64 } { ptr @.str.987, i64 1, i64 0 }) + br label %logic.from1780 +logic.from1780: + br i1 %t36, label %logic.rhs1781, label %logic.end1782 +logic.rhs1781: + %t37 = load ptr, ptr %a1 + %t38 = call %S.lexer.Token @finch.parser.cur(ptr %t37) + %t39 = extractvalue %S.lexer.Token %t38, 4 + store %S.lexer.Token %t38, ptr %a40 + call void @finch.drop.S_lexer_Token(ptr %a40) + %t41 = xor i1 %t39, true + br label %logic.rend1783 +logic.rend1783: + br label %logic.end1782 +logic.end1782: + %t42 = phi i1 [ false, %logic.from1780 ], [ %t41, %logic.rend1783 ] + br i1 %t42, label %then1784, label %endif1786 +then1784: + %t43 = getelementptr inbounds %S.ast.Node, ptr %a11, i32 0, i32 0 + %t44 = load { ptr, i64, i64 }, ptr %t43 + store { ptr, i64, i64 } { ptr @.str.988, i64 6, i64 0 }, ptr %t43 + store { ptr, i64, i64 } %t44, ptr %a45 + call void @finch_str_drop(ptr %a45) %t46 = load ptr, ptr %a1 - %t47 = call %S.ast.Node @finch.parser.node(ptr %t46, { ptr, i64, i64 } { ptr @.str.985, i64 5, i64 0 }) + call void @finch.parser.parseArgs(ptr %t46, ptr %a11) + br label %endif1786 +endif1786: + %t47 = load %S.ast.Node, ptr %a11 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 %panic1736, label %ok1737 -panic1736: - call void @finch_panic(ptr @.str.986, i64 673, ptr @.str.987) + call void @finch.copy.S_ast_Node(ptr %a49, ptr %a48) + %t50 = load %S.ast.Node, ptr %a49 + %t51 = load %S.ast.Node, ptr %a4 + store %S.ast.Node %t50, ptr %a4 + store %S.ast.Node %t51, ptr %a52 + call void @finch.drop.S_ast_Node(ptr %a52) + call void @finch.drop.S_ast_Node(ptr %a11) + br label %endif1779 +else1778: + %t53 = load ptr, ptr %a1 + %t54 = call i1 @finch.parser.at(ptr %t53, { ptr, i64, i64 } { ptr @.str.989, i64 1, i64 0 }) + br i1 %t54, label %then1787, label %else1788 +then1787: + %t55 = load ptr, ptr %a1 + %t56 = call %S.ast.Node @finch.parser.node(ptr %t55, { ptr, i64, i64 } { ptr @.str.990, i64 5, i64 0 }) + store %S.ast.Node %t56, ptr %a57 + %t58 = load ptr, ptr %a1 + %t59 = call %S.lexer.Token @finch.parser.next(ptr %t58) + store %S.lexer.Token %t59, ptr %a60 + call void @finch.drop.S_lexer_Token(ptr %a60) + %t61 = load ptr, ptr %a1 + %t62 = icmp eq ptr %t61, null + br i1 %t62, label %panic1790, label %ok1791 +panic1790: + call void @finch_panic(ptr @.str.991, i64 673, ptr @.str.992) unreachable -ok1737: - %t53 = getelementptr inbounds %S.parser.Parser, ptr %t51, i32 0, i32 2 - %t54 = load i64, ptr %t53 - %t55 = add i64 %t54, 1 - store i64 %t55, ptr %t53 - %t56 = getelementptr inbounds %S.ast.Node, ptr %a48, i32 0, i32 9 - %t57 = getelementptr inbounds { ptr, i64, i64 }, ptr %t56, i32 0, i32 1 - %t58 = load %S.ast.Node, ptr %a4 - store %S.ast.Node %t58, ptr %a59 - call void @finch.copy.S_ast_Node(ptr %a60, ptr %a59) - %t61 = load %S.ast.Node, ptr %a60 - %t62 = load i64, ptr %t57 - %t63 = add i64 %t62, 1 - call void @finch_arr_reserve(ptr %t56, i64 %t63, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t64 = load ptr, ptr %t56 - %t65 = getelementptr inbounds %S.ast.Node, ptr %t64, i64 %t62 - store %S.ast.Node %t61, ptr %t65 - store i64 %t63, ptr %t57 - %t66 = getelementptr inbounds %S.ast.Node, ptr %a48, i32 0, i32 9 +ok1791: + %t63 = getelementptr inbounds %S.parser.Parser, ptr %t61, i32 0, i32 2 + %t64 = load i64, ptr %t63 + %t65 = add i64 %t64, 1 + store i64 %t65, ptr %t63 + %t66 = getelementptr inbounds %S.ast.Node, ptr %a57, i32 0, i32 9 %t67 = getelementptr inbounds { ptr, i64, i64 }, ptr %t66, i32 0, i32 1 - %t68 = load ptr, ptr %a1 - %t69 = call %S.ast.Node @finch.parser.parseExpr(ptr %t68) - %t70 = load i64, ptr %t67 - %t71 = add i64 %t70, 1 - call void @finch_arr_reserve(ptr %t66, i64 %t71, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t72 = load ptr, ptr %t66 - %t73 = getelementptr inbounds %S.ast.Node, ptr %t72, i64 %t70 - store %S.ast.Node %t69, ptr %t73 - store i64 %t71, ptr %t67 - %t74 = load ptr, ptr %a1 - %t75 = icmp eq ptr %t74, null - br i1 %t75, label %panic1738, label %ok1739 -panic1738: - call void @finch_panic(ptr @.str.988, i64 676, ptr @.str.989) + %t68 = load %S.ast.Node, ptr %a4 + store %S.ast.Node %t68, ptr %a69 + call void @finch.copy.S_ast_Node(ptr %a70, ptr %a69) + %t71 = load %S.ast.Node, ptr %a70 + %t72 = load i64, ptr %t67 + %t73 = add i64 %t72, 1 + call void @finch_arr_reserve(ptr %t66, i64 %t73, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t74 = load ptr, ptr %t66 + %t75 = getelementptr inbounds %S.ast.Node, ptr %t74, i64 %t72 + store %S.ast.Node %t71, ptr %t75 + store i64 %t73, ptr %t67 + %t76 = getelementptr inbounds %S.ast.Node, ptr %a57, i32 0, i32 9 + %t77 = getelementptr inbounds { ptr, i64, i64 }, ptr %t76, i32 0, i32 1 + %t78 = load ptr, ptr %a1 + %t79 = call %S.ast.Node @finch.parser.parseExpr(ptr %t78) + %t80 = load i64, ptr %t77 + %t81 = add i64 %t80, 1 + call void @finch_arr_reserve(ptr %t76, i64 %t81, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t82 = load ptr, ptr %t76 + %t83 = getelementptr inbounds %S.ast.Node, ptr %t82, i64 %t80 + store %S.ast.Node %t79, ptr %t83 + store i64 %t81, ptr %t77 + %t84 = load ptr, ptr %a1 + %t85 = icmp eq ptr %t84, null + br i1 %t85, label %panic1792, label %ok1793 +panic1792: + call void @finch_panic(ptr @.str.993, i64 676, ptr @.str.994) unreachable -ok1739: - %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.990, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.991, 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 %endif1735 -else1734: - %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 -endif1735: - br label %endif1725 -endif1725: - br label %while.cond1720 -while.end1722: - %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) - %t92 = load %S.ast.Node, ptr %a91 - ret %S.ast.Node %t92 +ok1793: + %t86 = getelementptr inbounds %S.parser.Parser, ptr %t84, i32 0, i32 2 + %t87 = load i64, ptr %t86 + %t88 = sub i64 %t87, 1 + store i64 %t88, ptr %t86 + %t89 = load ptr, ptr %a1 + %t90 = call %S.lexer.Token @finch.parser.expect(ptr %t89, { ptr, i64, i64 } { ptr @.str.995, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.996, i64 3, i64 0 }) + store %S.lexer.Token %t90, ptr %a91 + call void @finch.drop.S_lexer_Token(ptr %a91) + %t92 = load %S.ast.Node, ptr %a57 + store %S.ast.Node %t92, ptr %a93 + call void @finch.copy.S_ast_Node(ptr %a94, ptr %a93) + %t95 = load %S.ast.Node, ptr %a94 + %t96 = load %S.ast.Node, ptr %a4 + store %S.ast.Node %t95, ptr %a4 + store %S.ast.Node %t96, ptr %a97 + call void @finch.drop.S_ast_Node(ptr %a97) + call void @finch.drop.S_ast_Node(ptr %a57) + br label %endif1789 +else1788: + %t98 = load %S.ast.Node, ptr %a4 + ret %S.ast.Node %t98 +endif1789: + br label %endif1779 +endif1779: + br label %while.cond1774 +while.end1776: + %t99 = load %S.ast.Node, ptr %a4 + ret %S.ast.Node %t99 } define internal %S.ast.Node @finch.parser.parsePrimary(ptr %p0) { @@ -18378,69 +20425,84 @@ entry: %a21 = alloca { ptr, i64, i64 }, align 16 %a26 = alloca { ptr, i64, i64 }, align 16 %a27 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 + %a33 = alloca %S.lexer.Token, align 16 %a36 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca %S.ast.Node, align 16 - %a46 = alloca %S.ast.Node, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 + %a37 = alloca { ptr, i64, i64 }, align 16 + %a40 = 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 + %a51 = alloca { ptr, i64, i64 }, align 16 + %a52 = alloca { ptr, i64, i64 }, align 16 + %a57 = alloca %S.lexer.Token, align 16 %a60 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca %S.ast.Node, align 16 - %a64 = alloca %S.ast.Node, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 + %a64 = alloca { ptr, i64, i64 }, align 16 + %a65 = alloca { ptr, i64, i64 }, align 16 %a68 = 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 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca %S.ast.Node, align 16 - %a87 = alloca %S.ast.Node, align 16 + %a76 = alloca { ptr, i64, i64 }, align 16 + %a77 = alloca { ptr, i64, i64 }, align 16 + %a83 = alloca %S.lexer.Token, align 16 + %a86 = alloca { ptr, i64, i64 }, align 16 + %a89 = alloca { ptr, i64, i64 }, align 16 %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca %S.ast.Node, align 16 - %a99 = alloca %S.ast.Node, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca %S.ast.Node, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 + %a93 = alloca { ptr, i64, i64 }, align 16 + %a96 = alloca { ptr, i64, i64 }, align 16 + %a97 = alloca { ptr, i64, i64 }, align 16 + %a102 = alloca %S.lexer.Token, align 16 + %a105 = alloca { ptr, i64, i64 }, align 16 + %a108 = alloca { ptr, i64, i64 }, align 16 + %a109 = alloca { ptr, i64, i64 }, align 16 + %a114 = alloca %S.lexer.Token, align 16 + %a122 = alloca %S.ast.Node, align 16 + %a130 = alloca %S.lexer.Token, align 16 %a133 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 + %a134 = alloca { ptr, i64, i64 }, align 16 + %a140 = alloca { ptr, i64, i64 }, align 16 + %a141 = alloca { ptr, i64, i64 }, align 16 + %a146 = alloca %S.lexer.Token, align 16 %a149 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca %S.ast.Node, align 16 - %a203 = alloca %S.ast.Node, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a235 = 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 + %a167 = alloca %S.lexer.Token, align 16 + %a170 = alloca { ptr, i64, i64 }, align 16 + %a191 = alloca { ptr, i64, i64 }, align 16 + %a194 = alloca { ptr, i64, i64 }, align 16 + %a195 = alloca { ptr, i64, i64 }, align 16 + %a200 = alloca %S.lexer.Token, align 16 + %a219 = alloca %S.lexer.Token, align 16 + %a222 = alloca { ptr, i64, i64 }, align 16 + %a223 = alloca { ptr, i64, i64 }, align 16 + %a228 = alloca %S.lexer.Token, align 16 + %a232 = alloca { ptr, i64, i64 }, align 16 + %a233 = alloca { ptr, i64, i64 }, align 16 %a236 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca %S.ast.Node, align 16 - %a265 = alloca %S.ast.Node, align 16 - %a277 = alloca %S.ast.Node, align 16 - %a278 = alloca %S.ast.Node, align 16 - %a282 = alloca %S.ast.Node, align 16 - %a283 = alloca %S.ast.Node, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a290 = 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 - %a298 = alloca %S.ast.Node, align 16 - %a299 = alloca %S.ast.Node, align 16 + %a254 = alloca { ptr, i64, i64 }, align 16 + %a255 = alloca { ptr, i64, i64 }, align 16 + %a264 = alloca %S.lexer.Token, align 16 + %a268 = alloca %S.ast.Type, align 16 + %a283 = alloca %S.lexer.Token, align 16 + %a286 = alloca { ptr, i64, i64 }, align 16 + %a294 = alloca %S.lexer.Token, align 16 + %a299 = alloca { ptr, i64, i64 }, align 16 + %a304 = 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 + %a313 = alloca { ptr, i64, i64 }, align 16 + %a315 = 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 + %a320 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 %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.992, i64 0, i64 0 }) + %t6 = call %S.ast.Node @finch.parser.node(ptr %t5, { ptr, i64, i64 } { ptr @.str.997, 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 @@ -18450,494 +20512,608 @@ 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.993, i64 3, i64 0 }, ptr %a16 + store { ptr, i64, i64 } { ptr @.str.998, 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.from1740 -logic.from1740: - br i1 %t18, label %logic.end1742, label %logic.rhs1741 -logic.rhs1741: + br label %logic.from1794 +logic.from1794: + br i1 %t18, label %logic.end1796, label %logic.rhs1795 +logic.rhs1795: %t19 = load { ptr, i64, i64 }, ptr %a13 store { ptr, i64, i64 } %t19, ptr %a20 - store { ptr, i64, i64 } { ptr @.str.994, i64 5, i64 0 }, ptr %a21 + store { ptr, i64, i64 } { ptr @.str.999, 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.rend1743 -logic.rend1743: - br label %logic.end1742 -logic.end1742: - %t24 = phi i1 [ true, %logic.from1740 ], [ %t23, %logic.rend1743 ] - br label %logic.from1744 -logic.from1744: - br i1 %t24, label %logic.end1746, label %logic.rhs1745 -logic.rhs1745: + br label %logic.rend1797 +logic.rend1797: + br label %logic.end1796 +logic.end1796: + %t24 = phi i1 [ true, %logic.from1794 ], [ %t23, %logic.rend1797 ] + br label %logic.from1798 +logic.from1798: + br i1 %t24, label %logic.end1800, label %logic.rhs1799 +logic.rhs1799: %t25 = load { ptr, i64, i64 }, ptr %a13 store { ptr, i64, i64 } %t25, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.995, i64 4, i64 0 }, ptr %a27 + store { ptr, i64, i64 } { ptr @.str.1000, 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.rend1747 -logic.rend1747: - br label %logic.end1746 -logic.end1746: - %t30 = phi i1 [ true, %logic.from1744 ], [ %t29, %logic.rend1747 ] - br i1 %t30, label %then1748, label %endif1750 -then1748: + br label %logic.rend1801 +logic.rend1801: + br label %logic.end1800 +logic.end1800: + %t30 = phi i1 [ true, %logic.from1798 ], [ %t29, %logic.rend1801 ] + br i1 %t30, label %then1802, label %endif1804 +then1802: %t31 = load ptr, ptr %a1 %t32 = call %S.lexer.Token @finch.parser.next(ptr %t31) - %t33 = load { ptr, i64, i64 }, ptr %a13 - %t34 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - store { ptr, i64, i64 } %t33, ptr %a35 - call void @finch_str_copy(ptr %a36, ptr %a35) - %t37 = load { ptr, i64, i64 }, ptr %a36 - store { ptr, i64, i64 } %t37, ptr %t34 - %t38 = getelementptr inbounds %S.lexer.Token, ptr %a4, i32 0, i32 1 - %t39 = load { ptr, i64, i64 }, ptr %t38 - %t40 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 4 - store { ptr, i64, i64 } %t39, ptr %a41 - call void @finch_str_copy(ptr %a42, ptr %a41) - %t43 = load { ptr, i64, i64 }, ptr %a42 - store { ptr, i64, i64 } %t43, ptr %t40 - %t44 = load %S.ast.Node, ptr %a7 - store %S.ast.Node %t44, ptr %a45 - call void @finch.copy.S_ast_Node(ptr %a46, ptr %a45) - %t47 = load %S.ast.Node, ptr %a46 - ret %S.ast.Node %t47 -endif1750: - %t48 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t48, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.996, 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 %then1751, label %endif1753 -then1751: - %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.997, 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 - store { ptr, i64, i64 } %t57, ptr %a59 - call void @finch_str_copy(ptr %a60, ptr %a59) - %t61 = load { ptr, i64, i64 }, ptr %a60 - store { ptr, i64, i64 } %t61, ptr %t58 - %t62 = load %S.ast.Node, ptr %a7 - store %S.ast.Node %t62, ptr %a63 - call void @finch.copy.S_ast_Node(ptr %a64, ptr %a63) - %t65 = load %S.ast.Node, ptr %a64 - ret %S.ast.Node %t65 -endif1753: - %t66 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t66, ptr %a67 - store { ptr, i64, i64 } { ptr @.str.998, 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.from1754 -logic.from1754: - br i1 %t70, label %logic.end1756, label %logic.rhs1755 -logic.rhs1755: - %t71 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t71, ptr %a72 - store { ptr, i64, i64 } { ptr @.str.999, 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.rend1757 -logic.rend1757: - br label %logic.end1756 -logic.end1756: - %t76 = phi i1 [ true, %logic.from1754 ], [ %t75, %logic.rend1757 ] - br i1 %t76, label %then1758, label %endif1760 -then1758: - %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.1000, 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 - call void @finch_str_copy(ptr %a83, ptr %a82) - %t84 = load { ptr, i64, i64 }, ptr %a83 - store { ptr, i64, i64 } %t84, ptr %t81 - %t85 = load %S.ast.Node, ptr %a7 - 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 -endif1760: - %t89 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t89, ptr %a90 - store { ptr, i64, i64 } { ptr @.str.1001, 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 %then1761, label %endif1763 -then1761: - %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.1002, 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 -endif1763: - %t101 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t101, ptr %a102 - store { ptr, i64, i64 } { ptr @.str.1003, 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 %then1764, label %endif1766 -then1764: - %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 %panic1767, label %ok1768 -panic1767: - call void @finch_panic(ptr @.str.1004, i64 715, ptr @.str.1005) + store %S.lexer.Token %t32, ptr %a33 + call void @finch.drop.S_lexer_Token(ptr %a33) + %t34 = load { ptr, i64, i64 }, ptr %a13 + %t35 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 + store { ptr, i64, i64 } %t34, ptr %a36 + call void @finch_str_copy(ptr %a37, ptr %a36) + %t38 = load { ptr, i64, i64 }, ptr %a37 + %t39 = load { ptr, i64, i64 }, ptr %t35 + store { ptr, i64, i64 } %t38, ptr %t35 + store { ptr, i64, i64 } %t39, ptr %a40 + call void @finch_str_drop(ptr %a40) + %t41 = getelementptr inbounds %S.lexer.Token, ptr %a4, i32 0, i32 1 + %t42 = load { ptr, i64, i64 }, ptr %t41 + %t43 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 4 + store { ptr, i64, i64 } %t42, ptr %a44 + call void @finch_str_copy(ptr %a45, ptr %a44) + %t46 = load { ptr, i64, i64 }, ptr %a45 + %t47 = load { ptr, i64, i64 }, ptr %t43 + store { ptr, i64, i64 } %t46, ptr %t43 + store { ptr, i64, i64 } %t47, ptr %a48 + call void @finch_str_drop(ptr %a48) + %t49 = load %S.ast.Node, ptr %a7 + call void @finch_str_drop(ptr %a13) + call void @finch.drop.S_lexer_Token(ptr %a4) + ret %S.ast.Node %t49 +endif1804: + %t50 = load { ptr, i64, i64 }, ptr %a13 + store { ptr, i64, i64 } %t50, ptr %a51 + store { ptr, i64, i64 } { ptr @.str.1001, i64 6, i64 0 }, ptr %a52 + %t53 = call i32 @finch_str_eq(ptr %a51, ptr %a52) + %t54 = icmp ne i32 %t53, 0 + br i1 %t54, label %then1805, label %endif1807 +then1805: + %t55 = load ptr, ptr %a1 + %t56 = call %S.lexer.Token @finch.parser.next(ptr %t55) + store %S.lexer.Token %t56, ptr %a57 + call void @finch.drop.S_lexer_Token(ptr %a57) + %t58 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 + %t59 = load { ptr, i64, i64 }, ptr %t58 + store { ptr, i64, i64 } { ptr @.str.1002, i64 3, i64 0 }, ptr %t58 + store { ptr, i64, i64 } %t59, ptr %a60 + call void @finch_str_drop(ptr %a60) + %t61 = getelementptr inbounds %S.lexer.Token, ptr %a4, i32 0, i32 1 + %t62 = load { ptr, i64, i64 }, ptr %t61 + %t63 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 4 + store { ptr, i64, i64 } %t62, ptr %a64 + call void @finch_str_copy(ptr %a65, ptr %a64) + %t66 = load { ptr, i64, i64 }, ptr %a65 + %t67 = load { ptr, i64, i64 }, ptr %t63 + store { ptr, i64, i64 } %t66, ptr %t63 + store { ptr, i64, i64 } %t67, ptr %a68 + call void @finch_str_drop(ptr %a68) + %t69 = load %S.ast.Node, ptr %a7 + call void @finch_str_drop(ptr %a13) + call void @finch.drop.S_lexer_Token(ptr %a4) + ret %S.ast.Node %t69 +endif1807: + %t70 = load { ptr, i64, i64 }, ptr %a13 + store { ptr, i64, i64 } %t70, ptr %a71 + store { ptr, i64, i64 } { ptr @.str.1003, i64 4, i64 0 }, ptr %a72 + %t73 = call i32 @finch_str_eq(ptr %a71, ptr %a72) + %t74 = icmp ne i32 %t73, 0 + br label %logic.from1808 +logic.from1808: + br i1 %t74, label %logic.end1810, label %logic.rhs1809 +logic.rhs1809: + %t75 = load { ptr, i64, i64 }, ptr %a13 + store { ptr, i64, i64 } %t75, ptr %a76 + store { ptr, i64, i64 } { ptr @.str.1004, i64 5, i64 0 }, ptr %a77 + %t78 = call i32 @finch_str_eq(ptr %a76, ptr %a77) + %t79 = icmp ne i32 %t78, 0 + br label %logic.rend1811 +logic.rend1811: + br label %logic.end1810 +logic.end1810: + %t80 = phi i1 [ true, %logic.from1808 ], [ %t79, %logic.rend1811 ] + br i1 %t80, label %then1812, label %endif1814 +then1812: + %t81 = load ptr, ptr %a1 + %t82 = call %S.lexer.Token @finch.parser.next(ptr %t81) + store %S.lexer.Token %t82, ptr %a83 + call void @finch.drop.S_lexer_Token(ptr %a83) + %t84 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 + %t85 = load { ptr, i64, i64 }, ptr %t84 + store { ptr, i64, i64 } { ptr @.str.1005, i64 4, i64 0 }, ptr %t84 + store { ptr, i64, i64 } %t85, ptr %a86 + call void @finch_str_drop(ptr %a86) + %t87 = load { ptr, i64, i64 }, ptr %a13 + %t88 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 4 + store { ptr, i64, i64 } %t87, ptr %a89 + call void @finch_str_copy(ptr %a90, ptr %a89) + %t91 = load { ptr, i64, i64 }, ptr %a90 + %t92 = load { ptr, i64, i64 }, ptr %t88 + store { ptr, i64, i64 } %t91, ptr %t88 + store { ptr, i64, i64 } %t92, ptr %a93 + call void @finch_str_drop(ptr %a93) + %t94 = load %S.ast.Node, ptr %a7 + call void @finch_str_drop(ptr %a13) + call void @finch.drop.S_lexer_Token(ptr %a4) + ret %S.ast.Node %t94 +endif1814: + %t95 = load { ptr, i64, i64 }, ptr %a13 + store { ptr, i64, i64 } %t95, ptr %a96 + store { ptr, i64, i64 } { ptr @.str.1006, i64 4, i64 0 }, ptr %a97 + %t98 = call i32 @finch_str_eq(ptr %a96, ptr %a97) + %t99 = icmp ne i32 %t98, 0 + br i1 %t99, label %then1815, label %endif1817 +then1815: + %t100 = load ptr, ptr %a1 + %t101 = call %S.lexer.Token @finch.parser.next(ptr %t100) + store %S.lexer.Token %t101, ptr %a102 + call void @finch.drop.S_lexer_Token(ptr %a102) + %t103 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 + %t104 = load { ptr, i64, i64 }, ptr %t103 + store { ptr, i64, i64 } { ptr @.str.1007, i64 4, i64 0 }, ptr %t103 + store { ptr, i64, i64 } %t104, ptr %a105 + call void @finch_str_drop(ptr %a105) + %t106 = load %S.ast.Node, ptr %a7 + call void @finch_str_drop(ptr %a13) + call void @finch.drop.S_lexer_Token(ptr %a4) + ret %S.ast.Node %t106 +endif1817: + %t107 = load { ptr, i64, i64 }, ptr %a13 + store { ptr, i64, i64 } %t107, ptr %a108 + store { ptr, i64, i64 } { ptr @.str.1008, i64 1, i64 0 }, ptr %a109 + %t110 = call i32 @finch_str_eq(ptr %a108, ptr %a109) + %t111 = icmp ne i32 %t110, 0 + br i1 %t111, label %then1818, label %endif1820 +then1818: + %t112 = load ptr, ptr %a1 + %t113 = call %S.lexer.Token @finch.parser.next(ptr %t112) + store %S.lexer.Token %t113, ptr %a114 + call void @finch.drop.S_lexer_Token(ptr %a114) + %t115 = load ptr, ptr %a1 + %t116 = icmp eq ptr %t115, null + br i1 %t116, label %panic1821, label %ok1822 +panic1821: + call void @finch_panic(ptr @.str.1009, i64 715, ptr @.str.1010) unreachable -ok1768: - %t110 = getelementptr inbounds %S.parser.Parser, ptr %t108, i32 0, i32 2 - %t111 = load i64, ptr %t110 - %t112 = add i64 %t111, 1 - store i64 %t112, ptr %t110 - %t113 = load ptr, ptr %a1 - %t114 = call %S.ast.Node @finch.parser.parseExpr(ptr %t113) - store %S.ast.Node %t114, ptr %a115 - %t116 = load ptr, ptr %a1 - %t117 = icmp eq ptr %t116, null - br i1 %t117, label %panic1769, label %ok1770 -panic1769: - call void @finch_panic(ptr @.str.1006, i64 717, ptr @.str.1007) +ok1822: + %t117 = getelementptr inbounds %S.parser.Parser, ptr %t115, i32 0, i32 2 + %t118 = load i64, ptr %t117 + %t119 = add i64 %t118, 1 + store i64 %t119, ptr %t117 + %t120 = load ptr, ptr %a1 + %t121 = call %S.ast.Node @finch.parser.parseExpr(ptr %t120) + store %S.ast.Node %t121, ptr %a122 + %t123 = load ptr, ptr %a1 + %t124 = icmp eq ptr %t123, null + br i1 %t124, label %panic1823, label %ok1824 +panic1823: + call void @finch_panic(ptr @.str.1011, i64 717, ptr @.str.1012) unreachable -ok1770: - %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.1008, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.1009, i64 3, i64 0 }) - %t123 = load %S.ast.Node, ptr %a115 - ret %S.ast.Node %t123 -endif1766: - %t124 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t124, ptr %a125 - store { ptr, i64, i64 } { ptr @.str.1010, 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 %then1771, label %endif1773 -then1771: - %t129 = load ptr, ptr %a1 - %t130 = call %S.ast.Node @finch.parser.parseMatch(ptr %t129, i1 true) - ret %S.ast.Node %t130 -endif1773: - %t131 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t131, ptr %a132 - store { ptr, i64, i64 } { ptr @.str.1011, 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 %then1774, label %endif1776 -then1774: - %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.1012, i64 5, i64 0 }, ptr %t138 - %t139 = load ptr, ptr %a1 - %t140 = icmp eq ptr %t139, null - br i1 %t140, label %panic1777, label %ok1778 -panic1777: - call void @finch_panic(ptr @.str.1013, i64 727, ptr @.str.1014) - unreachable -ok1778: - %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 +ok1824: + %t125 = getelementptr inbounds %S.parser.Parser, ptr %t123, i32 0, i32 2 + %t126 = load i64, ptr %t125 + %t127 = sub i64 %t126, 1 + store i64 %t127, ptr %t125 + %t128 = load ptr, ptr %a1 + %t129 = call %S.lexer.Token @finch.parser.expect(ptr %t128, { ptr, i64, i64 } { ptr @.str.1013, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.1014, i64 3, i64 0 }) + store %S.lexer.Token %t129, ptr %a130 + call void @finch.drop.S_lexer_Token(ptr %a130) + %t131 = load %S.ast.Node, ptr %a122 + call void @finch_str_drop(ptr %a13) + call void @finch.drop.S_ast_Node(ptr %a7) + call void @finch.drop.S_lexer_Token(ptr %a4) + ret %S.ast.Node %t131 +endif1820: + %t132 = load { ptr, i64, i64 }, ptr %a13 + store { ptr, i64, i64 } %t132, ptr %a133 + store { ptr, i64, i64 } { ptr @.str.1015, i64 5, i64 0 }, ptr %a134 + %t135 = call i32 @finch_str_eq(ptr %a133, ptr %a134) + %t136 = icmp ne i32 %t135, 0 + br i1 %t136, label %then1825, label %endif1827 +then1825: + %t137 = load ptr, ptr %a1 + %t138 = call %S.ast.Node @finch.parser.parseMatch(ptr %t137, i1 true) + call void @finch_str_drop(ptr %a13) + call void @finch.drop.S_ast_Node(ptr %a7) + call void @finch.drop.S_lexer_Token(ptr %a4) + ret %S.ast.Node %t138 +endif1827: + %t139 = load { ptr, i64, i64 }, ptr %a13 + store { ptr, i64, i64 } %t139, ptr %a140 + store { ptr, i64, i64 } { ptr @.str.1016, i64 1, i64 0 }, ptr %a141 + %t142 = call i32 @finch_str_eq(ptr %a140, ptr %a141) + %t143 = icmp ne i32 %t142, 0 + br i1 %t143, label %then1828, label %endif1830 +then1828: %t144 = load ptr, ptr %a1 - %t145 = call i1 @finch.parser.at(ptr %t144, { ptr, i64, i64 } { ptr @.str.1015, i64 1, i64 0 }) - br label %logic.from1779 -logic.from1779: - br i1 %t145, label %logic.rhs1780, label %logic.end1781 -logic.rhs1780: - %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.1016, 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.rend1782 -logic.rend1782: - br label %logic.end1781 -logic.end1781: - %t152 = phi i1 [ false, %logic.from1779 ], [ %t151, %logic.rend1782 ] - br i1 %t152, label %then1783, label %endif1785 -then1783: - %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.1017, i64 3, i64 0 }, ptr %t155 - br label %endif1785 -endif1785: - br label %while.cond1786 -while.cond1786: - %t156 = load ptr, ptr %a1 - %t157 = call i1 @finch.parser.at(ptr %t156, { ptr, i64, i64 } { ptr @.str.1018, i64 1, i64 0 }) - %t158 = xor i1 %t157, true - br i1 %t158, label %while.body1787, label %while.end1788 -while.body1787: - %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 - %t162 = call %S.ast.Node @finch.parser.parseExpr(ptr %t161) - %t163 = load i64, ptr %t160 - %t164 = add i64 %t163, 1 - call void @finch_arr_reserve(ptr %t159, i64 %t164, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t165 = load ptr, ptr %t159 - %t166 = getelementptr inbounds %S.ast.Node, ptr %t165, i64 %t163 - store %S.ast.Node %t162, ptr %t166 - store i64 %t164, ptr %t160 - %t167 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 9 - %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.from1789 -logic.from1789: - br i1 %t170, label %logic.rhs1790, label %logic.end1791 -logic.rhs1790: + %t145 = call %S.lexer.Token @finch.parser.next(ptr %t144) + store %S.lexer.Token %t145, ptr %a146 + call void @finch.drop.S_lexer_Token(ptr %a146) + %t147 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 + %t148 = load { ptr, i64, i64 }, ptr %t147 + store { ptr, i64, i64 } { ptr @.str.1017, i64 5, i64 0 }, ptr %t147 + store { ptr, i64, i64 } %t148, ptr %a149 + call void @finch_str_drop(ptr %a149) + %t150 = load ptr, ptr %a1 + %t151 = icmp eq ptr %t150, null + br i1 %t151, label %panic1831, label %ok1832 +panic1831: + call void @finch_panic(ptr @.str.1018, i64 727, ptr @.str.1019) + unreachable +ok1832: + %t152 = getelementptr inbounds %S.parser.Parser, ptr %t150, i32 0, i32 2 + %t153 = load i64, ptr %t152 + %t154 = add i64 %t153, 1 + store i64 %t154, ptr %t152 + %t155 = load ptr, ptr %a1 + %t156 = call i1 @finch.parser.at(ptr %t155, { ptr, i64, i64 } { ptr @.str.1020, i64 1, i64 0 }) + br label %logic.from1833 +logic.from1833: + br i1 %t156, label %logic.rhs1834, label %logic.end1835 +logic.rhs1834: + %t157 = load ptr, ptr %a1 + %t158 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t157, i64 1) + store { ptr, i64, i64 } %t158, ptr %a159 + store { ptr, i64, i64 } { ptr @.str.1021, i64 1, i64 0 }, ptr %a160 + %t161 = call i32 @finch_str_eq(ptr %a159, ptr %a160) + %t162 = icmp ne i32 %t161, 0 + store { ptr, i64, i64 } %t158, ptr %a163 + call void @finch_str_drop(ptr %a163) + br label %logic.rend1836 +logic.rend1836: + br label %logic.end1835 +logic.end1835: + %t164 = phi i1 [ false, %logic.from1833 ], [ %t162, %logic.rend1836 ] + br i1 %t164, label %then1837, label %endif1839 +then1837: + %t165 = load ptr, ptr %a1 + %t166 = call %S.lexer.Token @finch.parser.next(ptr %t165) + store %S.lexer.Token %t166, ptr %a167 + call void @finch.drop.S_lexer_Token(ptr %a167) + %t168 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 + %t169 = load { ptr, i64, i64 }, ptr %t168 + store { ptr, i64, i64 } { ptr @.str.1022, i64 3, i64 0 }, ptr %t168 + store { ptr, i64, i64 } %t169, ptr %a170 + call void @finch_str_drop(ptr %a170) + br label %endif1839 +endif1839: + br label %while.cond1840 +while.cond1840: %t171 = load ptr, ptr %a1 - %t172 = call i1 @finch.parser.at(ptr %t171, { ptr, i64, i64 } { ptr @.str.1019, i64 1, i64 0 }) - br label %logic.rend1792 -logic.rend1792: - br label %logic.end1791 -logic.end1791: - %t173 = phi i1 [ false, %logic.from1789 ], [ %t172, %logic.rend1792 ] - br i1 %t173, label %then1793, label %endif1795 -then1793: - %t174 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - store { ptr, i64, i64 } { ptr @.str.1020, i64 3, i64 0 }, ptr %t174 - br label %endif1795 -endif1795: - %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.1021, 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 %then1796, label %endif1798 -then1796: - %t181 = load ptr, ptr %a1 - %t182 = call %S.lexer.Token @finch.parser.expect(ptr %t181, { ptr, i64, i64 } { ptr @.str.1022, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.1023, 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 - %t186 = call %S.ast.Node @finch.parser.parseExpr(ptr %t185) - %t187 = load i64, ptr %t184 - %t188 = add i64 %t187, 1 - call void @finch_arr_reserve(ptr %t183, i64 %t188, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t189 = load ptr, ptr %t183 - %t190 = getelementptr inbounds %S.ast.Node, ptr %t189, i64 %t187 - store %S.ast.Node %t186, ptr %t190 - store i64 %t188, ptr %t184 - br label %endif1798 -endif1798: - %t191 = load ptr, ptr %a1 - %t192 = call i1 @finch.parser.accept(ptr %t191, { ptr, i64, i64 } { ptr @.str.1024, i64 1, i64 0 }) - %t193 = xor i1 %t192, true - br i1 %t193, label %then1799, label %endif1801 -then1799: - br label %while.end1788 -endif1801: - br label %while.cond1786 -while.end1788: - %t194 = load ptr, ptr %a1 - %t195 = icmp eq ptr %t194, null - br i1 %t195, label %panic1802, label %ok1803 -panic1802: - call void @finch_panic(ptr @.str.1025, i64 745, ptr @.str.1026) + %t172 = call i1 @finch.parser.at(ptr %t171, { ptr, i64, i64 } { ptr @.str.1023, i64 1, i64 0 }) + %t173 = xor i1 %t172, true + br i1 %t173, label %while.body1841, label %while.end1842 +while.body1841: + %t174 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 9 + %t175 = getelementptr inbounds { ptr, i64, i64 }, ptr %t174, i32 0, i32 1 + %t176 = load ptr, ptr %a1 + %t177 = call %S.ast.Node @finch.parser.parseExpr(ptr %t176) + %t178 = load i64, ptr %t175 + %t179 = add i64 %t178, 1 + call void @finch_arr_reserve(ptr %t174, i64 %t179, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t180 = load ptr, ptr %t174 + %t181 = getelementptr inbounds %S.ast.Node, ptr %t180, i64 %t178 + store %S.ast.Node %t177, ptr %t181 + store i64 %t179, ptr %t175 + %t182 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 9 + %t183 = getelementptr inbounds { ptr, i64, i64 }, ptr %t182, i32 0, i32 1 + %t184 = load i64, ptr %t183 + %t185 = icmp eq i64 %t184, 1 + br label %logic.from1843 +logic.from1843: + br i1 %t185, label %logic.rhs1844, label %logic.end1845 +logic.rhs1844: + %t186 = load ptr, ptr %a1 + %t187 = call i1 @finch.parser.at(ptr %t186, { ptr, i64, i64 } { ptr @.str.1024, i64 1, i64 0 }) + br label %logic.rend1846 +logic.rend1846: + br label %logic.end1845 +logic.end1845: + %t188 = phi i1 [ false, %logic.from1843 ], [ %t187, %logic.rend1846 ] + br i1 %t188, label %then1847, label %endif1849 +then1847: + %t189 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 + %t190 = load { ptr, i64, i64 }, ptr %t189 + store { ptr, i64, i64 } { ptr @.str.1025, i64 3, i64 0 }, ptr %t189 + store { ptr, i64, i64 } %t190, ptr %a191 + call void @finch_str_drop(ptr %a191) + br label %endif1849 +endif1849: + %t192 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 + %t193 = load { ptr, i64, i64 }, ptr %t192 + store { ptr, i64, i64 } %t193, ptr %a194 + store { ptr, i64, i64 } { ptr @.str.1026, i64 3, i64 0 }, ptr %a195 + %t196 = call i32 @finch_str_eq(ptr %a194, ptr %a195) + %t197 = icmp ne i32 %t196, 0 + br i1 %t197, label %then1850, label %endif1852 +then1850: + %t198 = load ptr, ptr %a1 + %t199 = call %S.lexer.Token @finch.parser.expect(ptr %t198, { ptr, i64, i64 } { ptr @.str.1027, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.1028, i64 41, i64 0 }) + store %S.lexer.Token %t199, ptr %a200 + call void @finch.drop.S_lexer_Token(ptr %a200) + %t201 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 9 + %t202 = getelementptr inbounds { ptr, i64, i64 }, ptr %t201, i32 0, i32 1 + %t203 = load ptr, ptr %a1 + %t204 = call %S.ast.Node @finch.parser.parseExpr(ptr %t203) + %t205 = load i64, ptr %t202 + %t206 = add i64 %t205, 1 + call void @finch_arr_reserve(ptr %t201, i64 %t206, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t207 = load ptr, ptr %t201 + %t208 = getelementptr inbounds %S.ast.Node, ptr %t207, i64 %t205 + store %S.ast.Node %t204, ptr %t208 + store i64 %t206, ptr %t202 + br label %endif1852 +endif1852: + %t209 = load ptr, ptr %a1 + %t210 = call i1 @finch.parser.accept(ptr %t209, { ptr, i64, i64 } { ptr @.str.1029, i64 1, i64 0 }) + %t211 = xor i1 %t210, true + br i1 %t211, label %then1853, label %endif1855 +then1853: + br label %while.end1842 +endif1855: + br label %while.cond1840 +while.end1842: + %t212 = load ptr, ptr %a1 + %t213 = icmp eq ptr %t212, null + br i1 %t213, label %panic1856, label %ok1857 +panic1856: + call void @finch_panic(ptr @.str.1030, i64 745, ptr @.str.1031) unreachable -ok1803: - %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.1027, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.1028, 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 -endif1776: - %t205 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t205, ptr %a206 - store { ptr, i64, i64 } { ptr @.str.1029, 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 %then1804, label %endif1806 -then1804: - %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 - %t213 = load { ptr, i64, i64 }, ptr %t212 - %t214 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 1 - store { ptr, i64, i64 } %t213, ptr %a215 - call void @finch_str_copy(ptr %a216, ptr %a215) - %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.1030, i64 1, i64 0 }) - br label %logic.from1807 -logic.from1807: - br i1 %t219, label %logic.rhs1808, label %logic.end1809 -logic.rhs1808: - %t220 = load ptr, ptr %a1 - %t221 = icmp eq ptr %t220, null - br i1 %t221, label %panic1810, label %ok1811 -panic1810: - call void @finch_panic(ptr @.str.1031, i64 752, ptr @.str.1032) +ok1857: + %t214 = getelementptr inbounds %S.parser.Parser, ptr %t212, i32 0, i32 2 + %t215 = load i64, ptr %t214 + %t216 = sub i64 %t215, 1 + store i64 %t216, ptr %t214 + %t217 = load ptr, ptr %a1 + %t218 = call %S.lexer.Token @finch.parser.expect(ptr %t217, { ptr, i64, i64 } { ptr @.str.1032, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.1033, i64 3, i64 0 }) + store %S.lexer.Token %t218, ptr %a219 + call void @finch.drop.S_lexer_Token(ptr %a219) + %t220 = load %S.ast.Node, ptr %a7 + call void @finch_str_drop(ptr %a13) + call void @finch.drop.S_lexer_Token(ptr %a4) + ret %S.ast.Node %t220 +endif1830: + %t221 = load { ptr, i64, i64 }, ptr %a13 + store { ptr, i64, i64 } %t221, ptr %a222 + store { ptr, i64, i64 } { ptr @.str.1034, i64 5, i64 0 }, ptr %a223 + %t224 = call i32 @finch_str_eq(ptr %a222, ptr %a223) + %t225 = icmp ne i32 %t224, 0 + br i1 %t225, label %then1858, label %endif1860 +then1858: + %t226 = load ptr, ptr %a1 + %t227 = call %S.lexer.Token @finch.parser.next(ptr %t226) + store %S.lexer.Token %t227, ptr %a228 + call void @finch.drop.S_lexer_Token(ptr %a228) + %t229 = getelementptr inbounds %S.lexer.Token, ptr %a4, i32 0, i32 1 + %t230 = load { ptr, i64, i64 }, ptr %t229 + %t231 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 1 + store { ptr, i64, i64 } %t230, ptr %a232 + call void @finch_str_copy(ptr %a233, ptr %a232) + %t234 = load { ptr, i64, i64 }, ptr %a233 + %t235 = load { ptr, i64, i64 }, ptr %t231 + store { ptr, i64, i64 } %t234, ptr %t231 + store { ptr, i64, i64 } %t235, ptr %a236 + call void @finch_str_drop(ptr %a236) + %t237 = load ptr, ptr %a1 + %t238 = call i1 @finch.parser.at(ptr %t237, { ptr, i64, i64 } { ptr @.str.1035, i64 1, i64 0 }) + br label %logic.from1861 +logic.from1861: + br i1 %t238, label %logic.rhs1862, label %logic.end1863 +logic.rhs1862: + %t239 = load ptr, ptr %a1 + %t240 = icmp eq ptr %t239, null + br i1 %t240, label %panic1864, label %ok1865 +panic1864: + call void @finch_panic(ptr @.str.1036, i64 752, ptr @.str.1037) unreachable -ok1811: - %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 %panic1812, label %ok1813 -panic1812: - call void @finch_panic(ptr @.str.1033, i64 752, ptr @.str.1034) +ok1865: + %t241 = getelementptr inbounds %S.parser.Parser, ptr %t239, i32 0, i32 0 + %t242 = load ptr, ptr %a1 + %t243 = icmp eq ptr %t242, null + br i1 %t243, label %panic1866, label %ok1867 +panic1866: + call void @finch_panic(ptr @.str.1038, i64 752, ptr @.str.1039) unreachable -ok1813: - %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 %range1814, label %inrange1815 -range1814: - call void @finch_panic_index(ptr @.str.1035, i64 752, i64 %t227, i64 %t229) +ok1867: + %t244 = getelementptr inbounds %S.parser.Parser, ptr %t242, i32 0, i32 1 + %t245 = load i64, ptr %t244 + %t246 = sub i64 %t245, 1 + %t247 = load { ptr, i64, i64 }, ptr %t241 + %t248 = extractvalue { ptr, i64, i64 } %t247, 1 + %t249 = icmp uge i64 %t246, %t248 + br i1 %t249, label %range1868, label %inrange1869 +range1868: + call void @finch_panic_index(ptr @.str.1040, i64 752, i64 %t246, i64 %t248) unreachable -inrange1815: - %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.1036, 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.rend1816 -logic.rend1816: - br label %logic.end1809 -logic.end1809: - %t239 = phi i1 [ false, %logic.from1807 ], [ %t238, %logic.rend1816 ] - br label %logic.from1817 -logic.from1817: - br i1 %t239, label %logic.rhs1818, label %logic.end1819 -logic.rhs1818: - %t240 = load ptr, ptr %a1 - %t241 = call i1 @finch.parser.genericCallAheadFrom(ptr %t240) - br label %logic.rend1820 -logic.rend1820: - br label %logic.end1819 -logic.end1819: - %t242 = phi i1 [ false, %logic.from1817 ], [ %t241, %logic.rend1820 ] - br i1 %t242, label %then1821, label %endif1823 -then1821: - %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.1037, 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.cond1824 -while.cond1824: - br label %while.body1825 -while.body1825: - %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 - %t250 = load ptr, ptr %a1 - %t251 = call %S.ast.Type @finch.parser.parseType(ptr %t250) - %t252 = load i64, ptr %t249 - %t253 = add i64 %t252, 1 - call void @finch_arr_reserve(ptr %t248, i64 %t253, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t254 = load ptr, ptr %t248 - %t255 = getelementptr inbounds %S.ast.Type, ptr %t254, i64 %t252 - 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.1038, i64 1, i64 0 }) - %t258 = xor i1 %t257, true - br i1 %t258, label %then1827, label %endif1829 -then1827: - br label %while.end1826 -endif1829: - br label %while.cond1824 -while.end1826: +inrange1869: + %t250 = extractvalue { ptr, i64, i64 } %t247, 0 + %t251 = getelementptr inbounds %S.lexer.Token, ptr %t250, i64 %t246 + %t252 = getelementptr inbounds %S.lexer.Token, ptr %t251, i32 0, i32 0 + %t253 = load { ptr, i64, i64 }, ptr %t252 + store { ptr, i64, i64 } %t253, ptr %a254 + store { ptr, i64, i64 } { ptr @.str.1041, i64 5, i64 0 }, ptr %a255 + %t256 = call i32 @finch_str_eq(ptr %a254, ptr %a255) + %t257 = icmp ne i32 %t256, 0 + br label %logic.rend1870 +logic.rend1870: + br label %logic.end1863 +logic.end1863: + %t258 = phi i1 [ false, %logic.from1861 ], [ %t257, %logic.rend1870 ] + br label %logic.from1871 +logic.from1871: + br i1 %t258, label %logic.rhs1872, label %logic.end1873 +logic.rhs1872: %t259 = load ptr, ptr %a1 - %t260 = call %S.lexer.Token @finch.parser.expect(ptr %t259, { ptr, i64, i64 } { ptr @.str.1039, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.1040, i64 28, i64 0 }) - %t261 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - store { ptr, i64, i64 } { ptr @.str.1041, i64 4, i64 0 }, ptr %t261 + %t260 = call i1 @finch.parser.genericCallAheadFrom(ptr %t259) + br label %logic.rend1874 +logic.rend1874: + br label %logic.end1873 +logic.end1873: + %t261 = phi i1 [ false, %logic.from1871 ], [ %t260, %logic.rend1874 ] + br i1 %t261, label %then1875, label %endif1877 +then1875: %t262 = load ptr, ptr %a1 - call void @finch.parser.parseArgs(ptr %t262, ptr %a7) - %t263 = load %S.ast.Node, ptr %a7 - store %S.ast.Node %t263, ptr %a264 - call void @finch.copy.S_ast_Node(ptr %a265, ptr %a264) - %t266 = load %S.ast.Node, ptr %a265 - ret %S.ast.Node %t266 -endif1823: - %t267 = load ptr, ptr %a1 - %t268 = call i1 @finch.parser.at(ptr %t267, { ptr, i64, i64 } { ptr @.str.1042, i64 1, i64 0 }) - br label %logic.from1830 -logic.from1830: - br i1 %t268, label %logic.rhs1831, label %logic.end1832 -logic.rhs1831: - %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.rend1833 -logic.rend1833: - br label %logic.end1832 -logic.end1832: - %t273 = phi i1 [ false, %logic.from1830 ], [ %t272, %logic.rend1833 ] - br i1 %t273, label %then1834, label %endif1836 -then1834: - %t274 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - store { ptr, i64, i64 } { ptr @.str.1043, 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 - store %S.ast.Node %t276, ptr %a277 - call void @finch.copy.S_ast_Node(ptr %a278, ptr %a277) - %t279 = load %S.ast.Node, ptr %a278 - ret %S.ast.Node %t279 -endif1836: - %t280 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - store { ptr, i64, i64 } { ptr @.str.1044, 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 -endif1806: - %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.1045, 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.1046, 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) - %t297 = load %S.ast.Node, ptr %a7 - store %S.ast.Node %t297, ptr %a298 - call void @finch.copy.S_ast_Node(ptr %a299, ptr %a298) - %t300 = load %S.ast.Node, ptr %a299 - ret %S.ast.Node %t300 + %t263 = call %S.lexer.Token @finch.parser.next(ptr %t262) + store %S.lexer.Token %t263, ptr %a264 + call void @finch.drop.S_lexer_Token(ptr %a264) + %t265 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1042, i64 5, i64 0 }, 0 + %t266 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 5 + %t267 = load %S.ast.Type, ptr %t266 + store %S.ast.Type %t265, ptr %t266 + store %S.ast.Type %t267, ptr %a268 + call void @finch.drop.S_ast_Type(ptr %a268) + br label %while.cond1878 +while.cond1878: + br label %while.body1879 +while.body1879: + %t269 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 5 + %t270 = getelementptr inbounds %S.ast.Type, ptr %t269, i32 0, i32 1 + %t271 = getelementptr inbounds { ptr, i64, i64 }, ptr %t270, i32 0, i32 1 + %t272 = load ptr, ptr %a1 + %t273 = call %S.ast.Type @finch.parser.parseType(ptr %t272) + %t274 = load i64, ptr %t271 + %t275 = add i64 %t274, 1 + call void @finch_arr_reserve(ptr %t270, i64 %t275, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) + %t276 = load ptr, ptr %t270 + %t277 = getelementptr inbounds %S.ast.Type, ptr %t276, i64 %t274 + store %S.ast.Type %t273, ptr %t277 + store i64 %t275, ptr %t271 + %t278 = load ptr, ptr %a1 + %t279 = call i1 @finch.parser.accept(ptr %t278, { ptr, i64, i64 } { ptr @.str.1043, i64 1, i64 0 }) + %t280 = xor i1 %t279, true + br i1 %t280, label %then1881, label %endif1883 +then1881: + br label %while.end1880 +endif1883: + br label %while.cond1878 +while.end1880: + %t281 = load ptr, ptr %a1 + %t282 = call %S.lexer.Token @finch.parser.expect(ptr %t281, { ptr, i64, i64 } { ptr @.str.1044, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.1045, i64 28, i64 0 }) + store %S.lexer.Token %t282, ptr %a283 + call void @finch.drop.S_lexer_Token(ptr %a283) + %t284 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 + %t285 = load { ptr, i64, i64 }, ptr %t284 + store { ptr, i64, i64 } { ptr @.str.1046, i64 4, i64 0 }, ptr %t284 + store { ptr, i64, i64 } %t285, ptr %a286 + call void @finch_str_drop(ptr %a286) + %t287 = load ptr, ptr %a1 + call void @finch.parser.parseArgs(ptr %t287, ptr %a7) + %t288 = load %S.ast.Node, ptr %a7 + call void @finch_str_drop(ptr %a13) + call void @finch.drop.S_lexer_Token(ptr %a4) + ret %S.ast.Node %t288 +endif1877: + %t289 = load ptr, ptr %a1 + %t290 = call i1 @finch.parser.at(ptr %t289, { ptr, i64, i64 } { ptr @.str.1047, i64 1, i64 0 }) + br label %logic.from1884 +logic.from1884: + br i1 %t290, label %logic.rhs1885, label %logic.end1886 +logic.rhs1885: + %t291 = load ptr, ptr %a1 + %t292 = call %S.lexer.Token @finch.parser.cur(ptr %t291) + %t293 = extractvalue %S.lexer.Token %t292, 4 + store %S.lexer.Token %t292, ptr %a294 + call void @finch.drop.S_lexer_Token(ptr %a294) + %t295 = xor i1 %t293, true + br label %logic.rend1887 +logic.rend1887: + br label %logic.end1886 +logic.end1886: + %t296 = phi i1 [ false, %logic.from1884 ], [ %t295, %logic.rend1887 ] + br i1 %t296, label %then1888, label %endif1890 +then1888: + %t297 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 + %t298 = load { ptr, i64, i64 }, ptr %t297 + store { ptr, i64, i64 } { ptr @.str.1048, i64 4, i64 0 }, ptr %t297 + store { ptr, i64, i64 } %t298, ptr %a299 + call void @finch_str_drop(ptr %a299) + %t300 = load ptr, ptr %a1 + call void @finch.parser.parseArgs(ptr %t300, ptr %a7) + %t301 = load %S.ast.Node, ptr %a7 + call void @finch_str_drop(ptr %a13) + call void @finch.drop.S_lexer_Token(ptr %a4) + ret %S.ast.Node %t301 +endif1890: + %t302 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 + %t303 = load { ptr, i64, i64 }, ptr %t302 + store { ptr, i64, i64 } { ptr @.str.1049, i64 3, i64 0 }, ptr %t302 + store { ptr, i64, i64 } %t303, ptr %a304 + call void @finch_str_drop(ptr %a304) + %t305 = load %S.ast.Node, ptr %a7 + call void @finch_str_drop(ptr %a13) + call void @finch.drop.S_lexer_Token(ptr %a4) + ret %S.ast.Node %t305 +endif1860: + %t306 = load ptr, ptr %a1 + %t307 = load %S.lexer.Token, ptr %a4 + %t308 = load %S.lexer.Token, ptr %a4 + %t309 = call { ptr, i64, i64 } @finch.parser.describe(%S.lexer.Token %t308) + store { ptr, i64, i64 } { ptr @.str.1050, i64 11, i64 0 }, ptr %a311 + store { ptr, i64, i64 } %t309, ptr %a312 + call void @finch_str_concat(ptr %a310, ptr %a311, ptr %a312) + store { ptr, i64, i64 } %t309, ptr %a313 + call void @finch_str_drop(ptr %a313) + %t314 = load { ptr, i64, i64 }, ptr %a310 + store { ptr, i64, i64 } %t314, ptr %a316 + store { ptr, i64, i64 } { ptr @.str.1051, i64 19, i64 0 }, ptr %a317 + call void @finch_str_concat(ptr %a315, ptr %a316, ptr %a317) + store { ptr, i64, i64 } %t314, ptr %a318 + call void @finch_str_drop(ptr %a318) + %t319 = load { ptr, i64, i64 }, ptr %a315 + call void @finch.parser.fail(ptr %t306, %S.lexer.Token %t307, { ptr, i64, i64 } %t319) + store { ptr, i64, i64 } %t319, ptr %a320 + call void @finch_str_drop(ptr %a320) + %t321 = load %S.ast.Node, ptr %a7 + call void @finch_str_drop(ptr %a13) + call void @finch.drop.S_lexer_Token(ptr %a4) + ret %S.ast.Node %t321 +} + +define internal void @finch.copy.arr_S_lexer_Token(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.lexer.Token, 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.cond1891 +n.cond1891: + %t6 = load i64, ptr %a5 + %t7 = icmp slt i64 %t6, %t4 + br i1 %t7, label %n.body1892, label %n.end1893 +n.body1892: + %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.cond1891 +n.end1893: + ret void +} + +define internal void @finch.drop.S_parser_Parser(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.parser.Parser, ptr %a, i32 0, i32 0 + call void @finch.drop.arr_S_lexer_Token(ptr %t1) + %t2 = getelementptr inbounds %S.parser.Parser, ptr %a, i32 0, i32 4 + call void @finch_str_drop(ptr %t2) + ret void } define internal %S.ast.Program @finch.parser.parse({ ptr, i64, i64 } %p0, i64 %p1, { ptr, i64, i64 } %p2) { @@ -18969,6 +21145,7 @@ entry: %t17 = insertvalue %S.parser.Parser %t12, { ptr, i64, i64 } %t16, 4 store %S.parser.Parser %t17, ptr %a18 %t19 = call %S.ast.Program @finch.parser.parseProgram(ptr %a18) + call void @finch.drop.S_parser_Parser(ptr %a18) ret %S.ast.Program %t19 } @@ -18987,24 +21164,30 @@ entry: %a14 = 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 + %a19 = 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.1048, i64 1, i64 0 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.1049, i64 2, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.1053, i64 1, i64 0 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.1054, 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.1051, i64 1, i64 0 }, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.1052, i64 2, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.1056, i64 1, i64 0 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.1057, 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.1054, i64 1, i64 0 }, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.1055, 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 + store { ptr, i64, i64 } %t7, ptr %a13 + call void @finch_str_drop(ptr %a13) + store { ptr, i64, i64 } %t12, ptr %a14 + store { ptr, i64, i64 } { ptr @.str.1059, i64 1, i64 0 }, ptr %a16 + store { ptr, i64, i64 } { ptr @.str.1060, i64 1, i64 0 }, ptr %a17 + call void @finch_str_replace(ptr %a15, ptr %a14, ptr %a16, ptr %a17) + %t18 = load { ptr, i64, i64 }, ptr %a15 + store { ptr, i64, i64 } %t12, ptr %a19 + call void @finch_str_drop(ptr %a19) + ret { ptr, i64, i64 } %t18 } 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) { @@ -19023,50 +21206,70 @@ entry: %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 + %a36 = 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 + %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 + %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 + %a51 = 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 + %a59 = alloca { ptr, i64, i64 }, align 16 + %a60 = alloca { ptr, i64, i64 }, align 16 + %a62 = 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 + %a70 = 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 %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 + %a79 = 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 { 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 + %a90 = alloca { ptr, i64, i64 }, align 16 + %a93 = 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 %a98 = 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 + %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 - %a106 = alloca { ptr, i64, i64 }, align 16 + %a107 = 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 + %a115 = 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 + %a122 = 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 + %a126 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store %S.ast.Node %p1, ptr %a2 store i64 %p2, ptr %a3 @@ -19077,134 +21280,174 @@ entry: store i64 %p7, ptr %a8 %t9 = load ptr, ptr %a1 %t10 = icmp eq ptr %t9, null - br i1 %t10, label %panic1837, label %ok1838 -panic1837: - call void @finch_panic(ptr @.str.1056, i64 195, ptr @.str.1057) + br i1 %t10, label %panic1894, label %ok1895 +panic1894: + call void @finch_panic(ptr @.str.1061, i64 215, ptr @.str.1062) unreachable -ok1838: - %t11 = getelementptr inbounds %S.gen.Gen, ptr %t9, i32 0, i32 26 +ok1895: + %t11 = getelementptr inbounds %S.gen.Gen, ptr %t9, i32 0, i32 27 %t12 = load i1, ptr %t11 %t13 = xor i1 %t12, true - br i1 %t13, label %then1839, label %endif1841 -then1839: + br i1 %t13, label %then1896, label %endif1898 +then1896: ret void -endif1841: +endif1898: %t14 = load ptr, ptr %a1 %t15 = icmp eq ptr %t14, null - br i1 %t15, label %panic1842, label %ok1843 -panic1842: - call void @finch_panic(ptr @.str.1058, i64 198, ptr @.str.1059) + br i1 %t15, label %panic1899, label %ok1900 +panic1899: + call void @finch_panic(ptr @.str.1063, i64 218, ptr @.str.1064) unreachable -ok1843: - %t16 = getelementptr inbounds %S.gen.Gen, ptr %t14, i32 0, i32 27 +ok1900: + %t16 = getelementptr inbounds %S.gen.Gen, ptr %t14, i32 0, i32 28 %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 %panic1844, label %ok1845 -panic1844: - call void @finch_panic(ptr @.str.1061, i64 198, ptr @.str.1062) + br i1 %t19, label %panic1901, label %ok1902 +panic1901: + call void @finch_panic(ptr @.str.1066, i64 218, ptr @.str.1067) unreachable -ok1845: +ok1902: %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 %range1846, label %inrange1847 -range1846: - call void @finch_panic_index(ptr @.str.1063, i64 198, i64 %t22, i64 %t24) + br i1 %t25, label %range1903, label %inrange1904 +range1903: + call void @finch_panic_index(ptr @.str.1068, i64 218, i64 %t22, i64 %t24) unreachable -inrange1847: +inrange1904: %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.1060, i64 3, i64 0 }, ptr %a30 + store { ptr, i64, i64 } { ptr @.str.1065, 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.1064, i64 1, i64 0 }, ptr %a35 + store { ptr, i64, i64 } { ptr @.str.1069, 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.1065, 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.1066, i64 1, i64 0 }, ptr %a58 + store { ptr, i64, i64 } %t32, ptr %a36 + call void @finch_str_drop(ptr %a36) + %t37 = load { ptr, i64, i64 }, ptr %a33 + %t38 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 + %t39 = load i64, ptr %t38 + call void @finch_str_from_int(ptr %a40, i64 %t39) + %t41 = load { ptr, i64, i64 }, ptr %a40 + store { ptr, i64, i64 } %t37, ptr %a43 + store { ptr, i64, i64 } %t41, ptr %a44 + call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) + store { ptr, i64, i64 } %t37, ptr %a45 + call void @finch_str_drop(ptr %a45) + store { ptr, i64, i64 } %t41, ptr %a46 + call void @finch_str_drop(ptr %a46) + %t47 = load { ptr, i64, i64 }, ptr %a42 + store { ptr, i64, i64 } %t47, ptr %a49 + store { ptr, i64, i64 } { ptr @.str.1070, i64 1, i64 0 }, ptr %a50 + call void @finch_str_concat(ptr %a48, ptr %a49, ptr %a50) + store { ptr, i64, i64 } %t47, ptr %a51 + call void @finch_str_drop(ptr %a51) + %t52 = load { ptr, i64, i64 }, ptr %a48 + %t53 = load i64, ptr %a3 + call void @finch_str_from_int(ptr %a54, i64 %t53) + %t55 = load { ptr, i64, i64 }, ptr %a54 + store { ptr, i64, i64 } %t52, 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 - %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.1067, 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 } %t52, ptr %a59 + call void @finch_str_drop(ptr %a59) + store { ptr, i64, i64 } %t55, ptr %a60 + call void @finch_str_drop(ptr %a60) + %t61 = load { ptr, i64, i64 }, ptr %a56 + store { ptr, i64, i64 } %t61, ptr %a63 + store { ptr, i64, i64 } { ptr @.str.1071, i64 1, i64 0 }, ptr %a64 + call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) + store { ptr, i64, i64 } %t61, ptr %a65 + call void @finch_str_drop(ptr %a65) + %t66 = load { ptr, i64, i64 }, ptr %a62 + %t67 = load i64, ptr %a4 + call void @finch_str_from_int(ptr %a68, i64 %t67) + %t69 = load { ptr, i64, i64 }, ptr %a68 + store { ptr, i64, i64 } %t66, ptr %a71 + store { ptr, i64, i64 } %t69, ptr %a72 + call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) + store { ptr, i64, i64 } %t66, ptr %a73 + call void @finch_str_drop(ptr %a73) + store { ptr, i64, i64 } %t69, ptr %a74 + call void @finch_str_drop(ptr %a74) + %t75 = load { ptr, i64, i64 }, ptr %a70 store { ptr, i64, i64 } %t75, ptr %a77 - store { ptr, i64, i64 } { ptr @.str.1068, i64 1, i64 0 }, ptr %a78 + store { ptr, i64, i64 } { ptr @.str.1072, 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 } %t75, ptr %a79 + call void @finch_str_drop(ptr %a79) + %t80 = load { ptr, i64, i64 }, ptr %a76 + %t81 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t80, ptr %a83 + store { ptr, i64, i64 } %t81, ptr %a84 + call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84) + store { ptr, i64, i64 } %t80, ptr %a85 + call void @finch_str_drop(ptr %a85) + %t86 = load { ptr, i64, i64 }, ptr %a82 store { ptr, i64, i64 } %t86, ptr %a88 - store { ptr, i64, i64 } { ptr @.str.1069, i64 1, i64 0 }, ptr %a89 + store { ptr, i64, i64 } { ptr @.str.1073, 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.1070, 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 + store { ptr, i64, i64 } %t86, ptr %a90 + call void @finch_str_drop(ptr %a90) + %t91 = load { ptr, i64, i64 }, ptr %a87 + %t92 = load i64, ptr %a7 + call void @finch_str_from_int(ptr %a93, i64 %t92) + %t94 = load { ptr, i64, i64 }, ptr %a93 + store { ptr, i64, i64 } %t91, ptr %a96 + store { ptr, i64, i64 } %t94, ptr %a97 + call void @finch_str_concat(ptr %a95, ptr %a96, ptr %a97) + store { ptr, i64, i64 } %t91, ptr %a98 + call void @finch_str_drop(ptr %a98) + store { ptr, i64, i64 } %t94, ptr %a99 + call void @finch_str_drop(ptr %a99) + %t100 = load { ptr, i64, i64 }, ptr %a95 + store { ptr, i64, i64 } %t100, ptr %a102 + store { ptr, i64, i64 } { ptr @.str.1074, i64 1, i64 0 }, ptr %a103 + call void @finch_str_concat(ptr %a101, ptr %a102, ptr %a103) + store { ptr, i64, i64 } %t100, ptr %a104 + call void @finch_str_drop(ptr %a104) + %t105 = load { ptr, i64, i64 }, ptr %a101 + %t106 = load i64, ptr %a8 + call void @finch_str_from_int(ptr %a107, i64 %t106) + %t108 = load { ptr, i64, i64 }, ptr %a107 + store { ptr, i64, i64 } %t105, ptr %a110 + store { ptr, i64, i64 } %t108, ptr %a111 + call void @finch_str_concat(ptr %a109, ptr %a110, ptr %a111) + store { ptr, i64, i64 } %t105, ptr %a112 + call void @finch_str_drop(ptr %a112) + store { ptr, i64, i64 } %t108, ptr %a113 + call void @finch_str_drop(ptr %a113) + %t114 = load { ptr, i64, i64 }, ptr %a109 + store { ptr, i64, i64 } %t114, ptr %a116 + store { ptr, i64, i64 } { ptr @.str.1075, i64 1, i64 0 }, ptr %a117 + call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) + store { ptr, i64, i64 } %t114, ptr %a118 + call void @finch_str_drop(ptr %a118) + %t119 = load { ptr, i64, i64 }, ptr %a115 + %t120 = load { ptr, i64, i64 }, ptr %a5 + %t121 = call { ptr, i64, i64 } @finch.gen.esc({ ptr, i64, i64 } %t120) + store { ptr, i64, i64 } %t119, ptr %a123 + store { ptr, i64, i64 } %t121, ptr %a124 + call void @finch_str_concat(ptr %a122, ptr %a123, ptr %a124) + store { ptr, i64, i64 } %t119, ptr %a125 + call void @finch_str_drop(ptr %a125) + store { ptr, i64, i64 } %t121, ptr %a126 + call void @finch_str_drop(ptr %a126) + %t127 = load { ptr, i64, i64 }, ptr %a122 + %t128 = load i64, ptr %t17 + %t129 = add i64 %t128, 1 + call void @finch_arr_reserve(ptr %t16, i64 %t129, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t130 = load ptr, ptr %t16 + %t131 = getelementptr inbounds { ptr, i64, i64 }, ptr %t130, i64 %t128 + store { ptr, i64, i64 } %t127, ptr %t131 + store i64 %t129, ptr %t17 ret void } @@ -19216,241 +21459,290 @@ entry: %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 + %a22 = 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 + %a34 = alloca { ptr, i64, i64 }, align 16 + %a35 = alloca { ptr, i64, i64 }, align 16 + %a45 = 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 + %a48 = 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 + %a56 = alloca { ptr, i64, i64 }, align 16 + %a57 = alloca { ptr, i64, i64 }, align 16 %a61 = alloca { ptr, i64, i64 }, align 16 + %a62 = 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 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a68 = 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 %a73 = alloca { ptr, i64, i64 }, align 16 %a74 = 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 - %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 + %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 %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 + %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 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = 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 %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 + %a120 = alloca { ptr, i64, i64 }, align 16 + %a121 = alloca { ptr, i64, i64 }, align 16 + %a122 = 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 + %a127 = 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 + %a134 = alloca { ptr, i64, i64 }, align 16 %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = 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 + %a146 = alloca { ptr, i64, i64 }, align 16 + %a147 = alloca { ptr, i64, i64 }, align 16 + %a148 = alloca { ptr, i64, i64 }, align 16 + %a149 = alloca { ptr, i64, i64 }, align 16 + %a150 = alloca { ptr, i64, i64 }, align 16 + %a153 = 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.cond1848 -for.cond1848: + br label %for.cond1905 +for.cond1905: %t7 = load i64, ptr %a6 %t8 = icmp slt i64 %t7, %t5 - br i1 %t8, label %for.body1849, label %for.end1851 -for.body1849: + br i1 %t8, label %for.body1906, label %for.end1908 +for.body1906: %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 %range1852, label %inrange1853 -range1852: - call void @finch_panic_index(ptr @.str.1071, i64 205, i64 %t11, i64 %t13) + br i1 %t14, label %range1909, label %inrange1910 +range1909: + call void @finch_panic_index(ptr @.str.1076, i64 225, i64 %t11, i64 %t13) unreachable -inrange1853: +inrange1910: %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.1072, i64 1, i64 0 }, ptr %a21 + store { ptr, i64, i64 } { ptr @.str.1077, 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 %range1854, label %inrange1855 -range1854: - call void @finch_panic_index(ptr @.str.1073, i64 205, i64 %t24, i64 %t26) + store { ptr, i64, i64 } %t18, ptr %a22 + call void @finch_str_drop(ptr %a22) + %t23 = load { ptr, i64, i64 }, ptr %a19 + %t24 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 14 + %t25 = load i64, ptr %a6 + %t26 = load { ptr, i64, i64 }, ptr %t24 + %t27 = extractvalue { ptr, i64, i64 } %t26, 1 + %t28 = icmp uge i64 %t25, %t27 + br i1 %t28, label %range1911, label %inrange1912 +range1911: + call void @finch_panic_index(ptr @.str.1078, i64 225, i64 %t25, i64 %t27) unreachable -inrange1855: - %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.step1850 -for.step1850: - %t39 = load i64, ptr %a6 - %t40 = add i64 %t39, 1 - store i64 %t40, ptr %a6 - br label %for.cond1848 -for.end1851: - %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 %then1856, label %endif1858 -then1856: - %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.1074, 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 %endif1858 -endif1858: - %t63 = load { ptr, i64, i64 }, ptr %a46 - store { ptr, i64, i64 } { ptr @.str.1075, 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.1076, 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.1077, 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.1078, 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 %then1859, label %else1860 -then1859: - %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.1079, 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 %then1862, label %else1863 -then1862: - %t94 = load { ptr, i64, i64 }, ptr %a84 - store { ptr, i64, i64 } %t94, ptr %a96 - store { ptr, i64, i64 } { ptr @.str.1080, 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 %endif1864 -else1863: - %t99 = load { ptr, i64, i64 }, ptr %a84 - store { ptr, i64, i64 } %t99, ptr %a101 - store { ptr, i64, i64 } { ptr @.str.1081, 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 +inrange1912: + %t29 = extractvalue { ptr, i64, i64 } %t26, 0 + %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 %t25 + %t31 = load { ptr, i64, i64 }, ptr %t30 + store { ptr, i64, i64 } %t23, ptr %a33 + store { ptr, i64, i64 } %t31, ptr %a34 + call void @finch_str_concat(ptr %a32, ptr %a33, ptr %a34) + store { ptr, i64, i64 } %t23, ptr %a35 + call void @finch_str_drop(ptr %a35) + %t36 = load { ptr, i64, i64 }, ptr %a32 + %t37 = load i64, ptr %t9 + %t38 = add i64 %t37, 1 + call void @finch_arr_reserve(ptr %a2, i64 %t38, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t39 = load ptr, ptr %a2 + %t40 = getelementptr inbounds { ptr, i64, i64 }, ptr %t39, i64 %t37 + store { ptr, i64, i64 } %t36, ptr %t40 + store i64 %t38, ptr %t9 + br label %for.step1907 +for.step1907: + %t41 = load i64, ptr %a6 + %t42 = add i64 %t41, 1 + store i64 %t42, ptr %a6 + br label %for.cond1905 +for.end1908: + %t43 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 1 + %t44 = load { ptr, i64, i64 }, ptr %t43 + store { ptr, i64, i64 } %t44, ptr %a45 + call void @finch_str_copy(ptr %a46, ptr %a45) + %t47 = load { ptr, i64, i64 }, ptr %a46 + store { ptr, i64, i64 } %t47, ptr %a48 + %t49 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 2 + %t50 = getelementptr inbounds { ptr, i64, i64 }, ptr %t49, i32 0, i32 1 + %t51 = load i64, ptr %t50 + %t52 = icmp sgt i64 %t51, 0 + br i1 %t52, label %then1913, label %endif1915 +then1913: + %t53 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 2 + %t54 = load { ptr, i64, i64 }, ptr %t53 + store { ptr, i64, i64 } %t54, ptr %a56 + store { ptr, i64, i64 } { ptr @.str.1079, i64 1, i64 0 }, ptr %a57 + call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) + %t58 = load { ptr, i64, i64 }, ptr %a55 + %t59 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 1 + %t60 = load { ptr, i64, i64 }, ptr %t59 + store { ptr, i64, i64 } %t58, ptr %a62 + store { ptr, i64, i64 } %t60, ptr %a63 + call void @finch_str_concat(ptr %a61, ptr %a62, ptr %a63) + store { ptr, i64, i64 } %t58, ptr %a64 + call void @finch_str_drop(ptr %a64) + %t65 = load { ptr, i64, i64 }, ptr %a61 + %t66 = load { ptr, i64, i64 }, ptr %a48 + store { ptr, i64, i64 } %t65, ptr %a48 + store { ptr, i64, i64 } %t66, ptr %a67 + call void @finch_str_drop(ptr %a67) + br label %endif1915 +endif1915: + %t68 = load { ptr, i64, i64 }, ptr %a48 + store { ptr, i64, i64 } { ptr @.str.1080, i64 3, 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.1081, i64 1, i64 0 }, ptr %a75 + call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) + store { ptr, i64, i64 } %t72, ptr %a76 + call void @finch_str_drop(ptr %a76) + %t77 = load { ptr, i64, i64 }, ptr %a73 + %t78 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.1082, i64 2, i64 0 }, ptr %a79 + call void @finch_str_join(ptr %a80, ptr %a2, ptr %a79) + %t81 = load { ptr, i64, i64 }, ptr %a80 + store { ptr, i64, i64 } %t77, ptr %a83 + store { ptr, i64, i64 } %t81, ptr %a84 + call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84) + store { ptr, i64, i64 } %t77, ptr %a85 + call void @finch_str_drop(ptr %a85) + store { ptr, i64, i64 } %t81, ptr %a86 + call void @finch_str_drop(ptr %a86) + %t87 = load { ptr, i64, i64 }, ptr %a82 + store { ptr, i64, i64 } %t87, ptr %a89 + store { ptr, i64, i64 } { ptr @.str.1083, i64 1, i64 0 }, ptr %a90 + call void @finch_str_concat(ptr %a88, ptr %a89, ptr %a90) + store { ptr, i64, i64 } %t87, ptr %a91 + call void @finch_str_drop(ptr %a91) + %t92 = load { ptr, i64, i64 }, ptr %a88 + store { ptr, i64, i64 } %t92, ptr %a93 + %t94 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 9 + %t95 = load i1, ptr %t94 + br i1 %t95, label %then1916, label %else1917 +then1916: + %t96 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 12 + %t97 = getelementptr inbounds %S.ast.Type, ptr %t96, i32 0, i32 0 + %t98 = load { ptr, i64, i64 }, ptr %t97 + store { ptr, i64, i64 } %t98, ptr %a99 + store { ptr, i64, i64 } { ptr @.str.1084, i64 4, i64 0 }, ptr %a100 + %t101 = call i32 @finch_str_eq(ptr %a99, ptr %a100) + %t102 = icmp ne i32 %t101, 0 + br i1 %t102, label %then1919, label %else1920 +then1919: + %t103 = load { ptr, i64, i64 }, ptr %a93 + store { ptr, i64, i64 } %t103, ptr %a105 + store { ptr, i64, i64 } { ptr @.str.1085, i64 5, 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 %a93 + store { ptr, i64, i64 } %t107, ptr %a93 + store { ptr, i64, i64 } %t108, ptr %a109 + call void @finch_str_drop(ptr %a109) + br label %endif1921 +else1920: + %t110 = load { ptr, i64, i64 }, ptr %a93 store { ptr, i64, i64 } %t110, ptr %a112 - store { ptr, i64, i64 } { ptr @.str.1082, i64 1, i64 0 }, ptr %a113 + store { ptr, i64, i64 } { ptr @.str.1086, i64 4, 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 %endif1864 -endif1864: - br label %endif1861 -else1860: %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.1083, 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 %then1865, label %endif1867 -then1865: - %t122 = load { ptr, i64, i64 }, ptr %a84 - store { ptr, i64, i64 } %t122, ptr %a124 - store { ptr, i64, i64 } { ptr @.str.1084, 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 %endif1867 -endif1867: - br label %endif1861 -endif1861: - %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 + %t116 = load %S.ast.Type, ptr %t115 + %t117 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t116) + store { ptr, i64, i64 } %t114, ptr %a119 + store { ptr, i64, i64 } %t117, ptr %a120 + call void @finch_str_concat(ptr %a118, ptr %a119, ptr %a120) + store { ptr, i64, i64 } %t114, ptr %a121 + call void @finch_str_drop(ptr %a121) + store { ptr, i64, i64 } %t117, ptr %a122 + call void @finch_str_drop(ptr %a122) + %t123 = load { ptr, i64, i64 }, ptr %a118 + store { ptr, i64, i64 } %t123, ptr %a125 + store { ptr, i64, i64 } { ptr @.str.1087, i64 1, i64 0 }, ptr %a126 + call void @finch_str_concat(ptr %a124, ptr %a125, ptr %a126) + store { ptr, i64, i64 } %t123, ptr %a127 + call void @finch_str_drop(ptr %a127) + %t128 = load { ptr, i64, i64 }, ptr %a124 + %t129 = load { ptr, i64, i64 }, ptr %a93 + store { ptr, i64, i64 } %t128, ptr %a93 + store { ptr, i64, i64 } %t129, ptr %a130 + call void @finch_str_drop(ptr %a130) + br label %endif1921 +endif1921: + br label %endif1918 +else1917: + %t131 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 12 + %t132 = getelementptr inbounds %S.ast.Type, ptr %t131, i32 0, i32 0 + %t133 = load { ptr, i64, i64 }, ptr %t132 + store { ptr, i64, i64 } %t133, ptr %a134 + store { ptr, i64, i64 } { ptr @.str.1088, i64 4, i64 0 }, ptr %a135 + %t136 = call i32 @finch_str_eq(ptr %a134, ptr %a135) + %t137 = icmp eq i32 %t136, 0 + br i1 %t137, label %then1922, label %endif1924 +then1922: + %t138 = load { ptr, i64, i64 }, ptr %a93 + store { ptr, i64, i64 } %t138, ptr %a140 + store { ptr, i64, i64 } { ptr @.str.1089, i64 4, i64 0 }, ptr %a141 + call void @finch_str_concat(ptr %a139, ptr %a140, ptr %a141) + %t142 = load { ptr, i64, i64 }, ptr %a139 + %t143 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 12 + %t144 = load %S.ast.Type, ptr %t143 + %t145 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t144) + 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) + store { ptr, i64, i64 } %t142, ptr %a149 + call void @finch_str_drop(ptr %a149) + store { ptr, i64, i64 } %t145, ptr %a150 + call void @finch_str_drop(ptr %a150) + %t151 = load { ptr, i64, i64 }, ptr %a146 + %t152 = load { ptr, i64, i64 }, ptr %a93 + store { ptr, i64, i64 } %t151, ptr %a93 + store { ptr, i64, i64 } %t152, ptr %a153 + call void @finch_str_drop(ptr %a153) + br label %endif1924 +endif1924: + br label %endif1918 +endif1918: + %t154 = load { ptr, i64, i64 }, ptr %a93 + call void @finch_str_drop(ptr %a48) + call void @finch.drop.arr_str(ptr %a2) + ret { ptr, i64, i64 } %t154 } define internal void @finch.gen.noteCall(ptr %p0, %S.ast.Node %p1, %S.gen.FnSig %p2) { @@ -19469,64 +21761,68 @@ entry: %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 + %a65 = alloca { ptr, i64, i64 }, align 16 %a73 = alloca { ptr, i64, i64 }, align 16 + %a74 = 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 + %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 + %a99 = 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 %panic1868, label %ok1869 -panic1868: - call void @finch_panic(ptr @.str.1085, i64 226, ptr @.str.1086) + br i1 %t5, label %panic1925, label %ok1926 +panic1925: + call void @finch_panic(ptr @.str.1090, i64 246, ptr @.str.1091) unreachable -ok1869: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 26 +ok1926: + %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 27 %t7 = load i1, ptr %t6 %t8 = xor i1 %t7, true - br i1 %t8, label %then1870, label %endif1872 -then1870: + br i1 %t8, label %then1927, label %endif1929 +then1927: ret void -endif1872: +endif1929: %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.1087, i64 6, i64 0 }, ptr %a15 + store { ptr, i64, i64 } { ptr @.str.1092, 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 %then1873, label %endif1875 -then1873: + br i1 %t17, label %then1930, label %endif1932 +then1930: %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 %endif1875 -endif1875: + br label %endif1932 +endif1932: %t21 = load ptr, ptr %a1 %t22 = icmp eq ptr %t21, null - br i1 %t22, label %panic1876, label %ok1877 -panic1876: - call void @finch_panic(ptr @.str.1088, i64 233, ptr @.str.1089) + br i1 %t22, label %panic1933, label %ok1934 +panic1933: + call void @finch_panic(ptr @.str.1093, i64 253, ptr @.str.1094) unreachable -ok1877: +ok1934: %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 %range1878, label %inrange1879 -range1878: - call void @finch_panic_index(ptr @.str.1090, i64 233, i64 %t25, i64 %t27) + br i1 %t28, label %range1935, label %inrange1936 +range1935: + call void @finch_panic_index(ptr @.str.1095, i64 253, i64 %t25, i64 %t27) unreachable -inrange1879: +inrange1936: %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 @@ -19535,11 +21831,11 @@ inrange1879: %t34 = load { ptr, i64, i64 }, ptr %t31 %t35 = extractvalue { ptr, i64, i64 } %t34, 1 %t36 = icmp uge i64 %t33, %t35 - br i1 %t36, label %range1880, label %inrange1881 -range1880: - call void @finch_panic_index(ptr @.str.1091, i64 233, i64 %t33, i64 %t35) + br i1 %t36, label %range1937, label %inrange1938 +range1937: + call void @finch_panic_index(ptr @.str.1096, i64 253, i64 %t33, i64 %t35) unreachable -inrange1881: +inrange1938: %t37 = extractvalue { ptr, i64, i64 } %t34, 0 %t38 = getelementptr inbounds %S.ast.Node, ptr %t37, i64 %t33 %t39 = load %S.ast.Node, ptr %t38 @@ -19557,71 +21853,82 @@ inrange1881: %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.from1882 -logic.from1882: - br i1 %t53, label %logic.rhs1883, label %logic.end1884 -logic.rhs1883: + br label %logic.from1939 +logic.from1939: + br i1 %t53, label %logic.rhs1940, label %logic.end1941 +logic.rhs1940: %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.rend1885 -logic.rend1885: - br label %logic.end1884 -logic.end1884: - %t58 = phi i1 [ false, %logic.from1882 ], [ %t57, %logic.rend1885 ] - br i1 %t58, label %then1886, label %endif1888 -then1886: + br label %logic.rend1942 +logic.rend1942: + br label %logic.end1941 +logic.end1941: + %t58 = phi i1 [ false, %logic.from1939 ], [ %t57, %logic.rend1942 ] + br i1 %t58, label %then1943, label %endif1945 +then1943: %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 + %t64 = load { ptr, i64, i64 }, ptr %a49 store { ptr, i64, i64 } %t63, ptr %a49 - br label %endif1888 -endif1888: - %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.1092, 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.1093, 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 %panic1889, label %ok1890 -panic1889: - call void @finch_panic(ptr @.str.1094, i64 238, ptr @.str.1095) + store { ptr, i64, i64 } %t64, ptr %a65 + call void @finch_str_drop(ptr %a65) + br label %endif1945 +endif1945: + %t66 = load ptr, ptr %a1 + %t67 = load %S.ast.Node, ptr %a2 + %t68 = load i64, ptr %a11 + %t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %a49, i32 0, i32 1 + %t70 = load i64, ptr %t69 + %t71 = load %S.gen.FnSig, ptr %a3 + %t72 = call { ptr, i64, i64 } @finch.gen.sigText(%S.gen.FnSig %t71) + store { ptr, i64, i64 } { ptr @.str.1097, i64 9, i64 0 }, ptr %a74 + store { ptr, i64, i64 } %t72, ptr %a75 + call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) + store { ptr, i64, i64 } %t72, ptr %a76 + call void @finch_str_drop(ptr %a76) + %t77 = load { ptr, i64, i64 }, ptr %a73 + store { ptr, i64, i64 } %t77, ptr %a79 + store { ptr, i64, i64 } { ptr @.str.1098, i64 4, i64 0 }, ptr %a80 + call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) + store { ptr, i64, i64 } %t77, ptr %a81 + call void @finch_str_drop(ptr %a81) + %t82 = load { ptr, i64, i64 }, ptr %a78 + %t83 = load ptr, ptr %a1 + %t84 = icmp eq ptr %t83, null + br i1 %t84, label %panic1946, label %ok1947 +panic1946: + call void @finch_panic(ptr @.str.1099, i64 258, ptr @.str.1100) unreachable -ok1890: - %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 %range1891, label %inrange1892 -range1891: - call void @finch_panic_index(ptr @.str.1096, i64 238, i64 %t83, i64 %t85) +ok1947: + %t85 = getelementptr inbounds %S.gen.Gen, ptr %t83, i32 0, i32 1 + %t86 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 13 + %t87 = load i64, ptr %t86 + %t88 = load { ptr, i64, i64 }, ptr %t85 + %t89 = extractvalue { ptr, i64, i64 } %t88, 1 + %t90 = icmp uge i64 %t87, %t89 + br i1 %t90, label %range1948, label %inrange1949 +range1948: + call void @finch_panic_index(ptr @.str.1101, i64 258, i64 %t87, i64 %t89) unreachable -inrange1892: - %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) +inrange1949: + %t91 = extractvalue { ptr, i64, i64 } %t88, 0 + %t92 = getelementptr inbounds { ptr, i64, i64 }, ptr %t91, i64 %t87 + %t93 = load { ptr, i64, i64 }, ptr %t92 + %t94 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 11 + %t95 = load i64, ptr %t94 + %t96 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 12 + %t97 = load i64, ptr %t96 + %t98 = add i64 %t97, 3 + call void @finch.gen.noteRef(ptr %t66, %S.ast.Node %t67, i64 %t68, i64 %t70, { ptr, i64, i64 } %t82, { ptr, i64, i64 } %t93, i64 %t95, i64 %t98) + store { ptr, i64, i64 } %t82, ptr %a99 + call void @finch_str_drop(ptr %a99) + call void @finch_str_drop(ptr %a49) + call void @finch.drop.S_ast_Node(ptr %a43) ret void } @@ -19676,6 +21983,43 @@ entry: ret void } +define internal void @finch.drop.arr_bool(ptr %a) { +entry: + + call void @finch_arr_free(ptr %a) + ret void +} + +define internal void @finch.drop.S_gen_FnSig(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 1 + call void @finch_str_drop(ptr %t2) + %t3 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 2 + call void @finch_str_drop(ptr %t3) + %t4 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 3 + call void @finch_str_drop(ptr %t4) + %t5 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 6 + call void @finch.drop.arr_str(ptr %t5) + %t6 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 7 + call void @finch.drop.arr_S_ast_Type(ptr %t6) + %t7 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 8 + call void @finch_str_drop(ptr %t7) + %t8 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 11 + call void @finch_str_drop(ptr %t8) + %t9 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 12 + call void @finch.drop.S_ast_Type(ptr %t9) + %t10 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 13 + call void @finch.drop.arr_S_ast_Type(ptr %t10) + %t11 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 14 + call void @finch.drop.arr_str(ptr %t11) + %t12 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 15 + call void @finch.drop.arr_bool(ptr %t12) + ret void +} + define internal void @finch.copy.S_gen_Template(ptr %dst, ptr %src) { entry: @@ -19696,6 +22040,20 @@ entry: ret void } +define internal void @finch.drop.S_gen_Template(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.gen.Template, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.gen.Template, ptr %a, i32 0, i32 1 + call void @finch_str_drop(ptr %t2) + %t3 = getelementptr inbounds %S.gen.Template, ptr %a, i32 0, i32 2 + call void @finch_str_drop(ptr %t3) + %t4 = getelementptr inbounds %S.gen.Template, ptr %a, i32 0, i32 3 + call void @finch.drop.arr_str(ptr %t4) + ret void +} + define internal void @finch.copy.arr_int(ptr %dst, ptr %src) { entry: @@ -19741,6 +22099,39 @@ entry: ret void } +define internal void @finch.drop.arr_int(ptr %a) { +entry: + + call void @finch_arr_free(ptr %a) + ret void +} + +define internal void @finch.drop.S_gen_StructDef(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 1 + call void @finch_str_drop(ptr %t2) + %t3 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 3 + call void @finch.drop.arr_int(ptr %t3) + %t4 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 4 + call void @finch.drop.arr_int(ptr %t4) + %t5 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 5 + call void @finch_str_drop(ptr %t5) + %t6 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 6 + call void @finch.drop.arr_str(ptr %t6) + %t7 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 7 + call void @finch.drop.arr_S_ast_Type(ptr %t7) + %t8 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 8 + call void @finch_str_drop(ptr %t8) + %t9 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 11 + call void @finch.drop.arr_str(ptr %t9) + %t10 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 12 + call void @finch.drop.arr_S_ast_Type(ptr %t10) + ret void +} + define internal void @finch.gen.indexAll(ptr %p0, { ptr, i64, i64 } %p1) { entry: %a1 = alloca ptr, align 16 @@ -19762,44 +22153,49 @@ entry: %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 + %a89 = 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 + %a101 = alloca { ptr, i64, i64 }, align 16 + %a102 = 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 - %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 + %a121 = alloca { ptr, i64, i64 }, align 16 + %a122 = alloca { ptr, i64, i64 }, align 16 + %a123 = 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 + %a132 = alloca { ptr, i64, i64 }, align 16 + %a133 = 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 + %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 + %a147 = 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 %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 + %a168 = alloca { ptr, i64, i64 }, align 16 + %a172 = alloca { ptr, i64, i64 }, align 16 + %a174 = alloca { ptr, i64, i64 }, align 16 %a175 = 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 - %a179 = alloca { ptr, i64, i64 }, align 16 + %a180 = 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 @@ -19807,224 +22203,297 @@ entry: %a189 = alloca { ptr, i64, i64 }, align 16 %a190 = alloca { ptr, i64, i64 }, align 16 %a191 = alloca { ptr, i64, i64 }, align 16 + %a192 = 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 + %a196 = alloca { ptr, i64, i64 }, align 16 + %a197 = alloca { ptr, i64, i64 }, align 16 + %a198 = 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 + %a207 = alloca { ptr, i64, i64 }, align 16 + %a208 = alloca { ptr, i64, i64 }, align 16 %a210 = 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 - %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 + %a218 = 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 + %a222 = alloca { ptr, i64, i64 }, align 16 + %a223 = alloca { ptr, i64, i64 }, align 16 + %a225 = 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 + %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 + %a237 = alloca { ptr, i64, i64 }, align 16 + %a238 = alloca { ptr, i64, i64 }, align 16 + %a249 = alloca i64, align 16 + %a257 = alloca %S.gen.Template, align 16 + %a258 = alloca %S.gen.Template, align 16 + %a260 = alloca %S.gen.Template, align 16 + %a282 = alloca %S.ast.Node, align 16 + %a283 = alloca %S.ast.Node, align 16 + %a285 = alloca %S.ast.Node, 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 + %a296 = 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 + %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 %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 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 + %a315 = alloca { ptr, i64, i64 }, align 16 + %a316 = alloca { ptr, i64, i64 }, align 16 %a317 = alloca { ptr, i64, i64 }, align 16 - %a319 = 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 %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 + %a338 = alloca { ptr, i64, i64 }, align 16 + %a339 = 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 - %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 + %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 %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 %a368 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 + %a369 = 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 + %a373 = alloca { ptr, i64, i64 }, align 16 + %a374 = alloca { ptr, i64, i64 }, align 16 + %a378 = 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 + %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 + %a389 = alloca { ptr, i64, i64 }, align 16 + %a393 = alloca { ptr, i64, i64 }, align 16 + %a394 = alloca { ptr, i64, i64 }, align 16 + %a395 = alloca { ptr, i64, i64 }, align 16 + %a397 = alloca { ptr, i64, i64 }, align 16 + %a398 = alloca { ptr, i64, i64 }, align 16 + %a399 = alloca { ptr, i64, i64 }, align 16 + %a400 = alloca { ptr, i64, i64 }, align 16 + %a404 = alloca { ptr, i64, i64 }, align 16 + %a405 = 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 + %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 + %a416 = 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 + %a422 = alloca { ptr, i64, i64 }, align 16 + %a423 = alloca { ptr, i64, i64 }, align 16 + %a424 = alloca { ptr, i64, i64 }, align 16 + %a426 = alloca { ptr, i64, i64 }, align 16 + %a427 = alloca { ptr, i64, i64 }, align 16 + %a428 = alloca { ptr, i64, i64 }, align 16 + %a429 = alloca { ptr, i64, i64 }, align 16 + %a440 = alloca i64, align 16 + %a448 = alloca %S.gen.StructDef, align 16 + %a449 = alloca %S.gen.StructDef, align 16 + %a451 = alloca %S.gen.StructDef, align 16 + %a478 = alloca %S.ast.Node, align 16 + %a479 = alloca %S.ast.Node, align 16 + %a481 = alloca %S.ast.Node, align 16 + %a488 = alloca { ptr, i64, i64 }, align 16 + %a489 = alloca { ptr, i64, i64 }, align 16 + %a490 = alloca { ptr, i64, i64 }, align 16 + %a492 = 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 + %a499 = alloca { ptr, i64, i64 }, align 16 + %a500 = alloca { ptr, i64, i64 }, align 16 + %a501 = alloca { ptr, i64, i64 }, align 16 + %a502 = alloca { ptr, i64, i64 }, align 16 + %a504 = 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 + %a520 = alloca { ptr, i64, i64 }, align 16 + %a521 = 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 %a525 = alloca { ptr, i64, i64 }, align 16 + %a526 = 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 + %a532 = alloca { ptr, i64, i64 }, align 16 + %a534 = alloca { ptr, i64, i64 }, align 16 + %a535 = 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 %a540 = 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 - %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 + %a547 = alloca { ptr, i64, i64 }, align 16 + %a549 = alloca { ptr, i64, i64 }, align 16 + %a550 = alloca { ptr, i64, i64 }, align 16 + %a551 = alloca { ptr, i64, i64 }, align 16 + %a552 = alloca { ptr, i64, i64 }, align 16 + %a553 = alloca { ptr, i64, i64 }, align 16 + %a562 = alloca i64, align 16 + %a571 = alloca { ptr, i64, i64 }, align 16 + %a572 = alloca { ptr, i64, i64 }, align 16 + %a573 = alloca { ptr, i64, i64 }, align 16 + %a575 = 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 + %a582 = alloca { ptr, i64, i64 }, align 16 + %a583 = alloca { ptr, i64, i64 }, align 16 + %a584 = alloca { ptr, i64, i64 }, align 16 + %a585 = 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 + %a590 = 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 + %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 + %a608 = 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 - %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 + %a638 = alloca i64, align 16 + %a651 = alloca i64, align 16 + %a659 = alloca %S.ast.Node, align 16 + %a660 = alloca %S.ast.Node, align 16 + %a662 = alloca %S.ast.Node, align 16 + %a663 = alloca { ptr, i64, i64 }, align 16 + %a664 = alloca { ptr, i64, i64 }, align 16 + %a666 = alloca i64, align 16 + %a674 = alloca %S.ast.Node, align 16 + %a678 = alloca { ptr, i64, i64 }, align 16 + %a679 = alloca { ptr, i64, i64 }, align 16 %a688 = alloca { ptr, i64, i64 }, align 16 + %a689 = 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 + %a708 = alloca { ptr, i64, i64 }, align 16 + %a709 = alloca { ptr, i64, i64 }, align 16 + %a710 = alloca { ptr, i64, i64 }, align 16 + %a712 = alloca { ptr, i64, i64 }, align 16 + %a713 = alloca { ptr, i64, i64 }, align 16 + %a714 = alloca { ptr, i64, i64 }, align 16 + %a715 = alloca { ptr, i64, i64 }, align 16 + %a719 = alloca { ptr, i64, i64 }, align 16 + %a720 = alloca { ptr, i64, i64 }, align 16 + %a721 = alloca { ptr, i64, i64 }, align 16 + %a722 = 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 + %a740 = alloca { ptr, i64, i64 }, align 16 + %a741 = alloca { ptr, i64, i64 }, align 16 + %a742 = alloca { ptr, i64, i64 }, align 16 + %a743 = alloca { ptr, i64, i64 }, align 16 + %a745 = alloca { ptr, i64, i64 }, align 16 + %a746 = alloca { ptr, i64, i64 }, align 16 + %a747 = alloca { ptr, i64, i64 }, align 16 + %a748 = alloca { ptr, i64, i64 }, align 16 + %a752 = 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 + %a757 = alloca { ptr, i64, i64 }, align 16 + %a758 = alloca { ptr, i64, i64 }, align 16 + %a760 = 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 + %a767 = alloca { ptr, i64, i64 }, align 16 + %a769 = 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 + %a773 = 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 + %a778 = alloca { ptr, i64, i64 }, align 16 + %a781 = alloca { ptr, i64, i64 }, align 16 + %a782 = alloca { ptr, i64, i64 }, align 16 + %a783 = alloca { ptr, i64, i64 }, align 16 + %a784 = 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.cond1893 -each.cond1893: + br label %each.cond1950 +each.cond1950: %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.body1894, label %each.end1896 -each.body1894: + br i1 %t7, label %each.body1951, label %each.end1953 +each.body1951: %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 %panic1897, label %ok1898 -panic1897: - call void @finch_panic(ptr @.str.1097, i64 244, ptr @.str.1098) + br i1 %t13, label %panic1954, label %ok1955 +panic1954: + call void @finch_panic(ptr @.str.1102, i64 264, ptr @.str.1103) unreachable -ok1898: - %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 27 +ok1955: + %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 28 %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.1099, i64 3, i64 0 }, ptr %a18 + store { ptr, i64, i64 } { ptr @.str.1104, 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 @@ -20035,30 +22504,30 @@ ok1898: %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.step1895 -each.step1895: + br label %each.step1952 +each.step1952: %t25 = load i64, ptr %a3 %t26 = add i64 %t25, 1 store i64 %t26, ptr %a3 - br label %each.cond1893 -each.end1896: + br label %each.cond1950 +each.end1953: %t27 = load ptr, ptr %a1 %t28 = icmp eq ptr %t27, null - br i1 %t28, label %panic1899, label %ok1900 -panic1899: - call void @finch_panic(ptr @.str.1100, i64 246, ptr @.str.1101) + br i1 %t28, label %panic1956, label %ok1957 +panic1956: + call void @finch_panic(ptr @.str.1105, i64 266, ptr @.str.1106) unreachable -ok1900: - %t29 = getelementptr inbounds %S.gen.Gen, ptr %t27, i32 0, i32 14 +ok1957: + %t29 = getelementptr inbounds %S.gen.Gen, ptr %t27, i32 0, i32 15 store i64 0, ptr %a30 - br label %each.cond1901 -each.cond1901: + br label %each.cond1958 +each.cond1958: %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.body1902, label %each.end1904 -each.body1902: + br i1 %t34, label %each.body1959, label %each.end1961 +each.body1959: %t35 = load ptr, ptr %t29 %t36 = getelementptr inbounds %S.gen.FnSig, ptr %t35, i64 %t33 %t37 = load %S.gen.FnSig, ptr %t36 @@ -20068,22 +22537,22 @@ each.body1902: store %S.gen.FnSig %t40, ptr %a41 %t42 = load ptr, ptr %a1 %t43 = icmp eq ptr %t42, null - br i1 %t43, label %panic1905, label %ok1906 -panic1905: - call void @finch_panic(ptr @.str.1102, i64 247, ptr @.str.1103) + br i1 %t43, label %panic1962, label %ok1963 +panic1962: + call void @finch_panic(ptr @.str.1107, i64 267, ptr @.str.1108) unreachable -ok1906: +ok1963: %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 %range1907, label %inrange1908 -range1907: - call void @finch_panic_index(ptr @.str.1104, i64 247, i64 %t46, i64 %t48) + br i1 %t49, label %range1964, label %inrange1965 +range1964: + call void @finch_panic_index(ptr @.str.1109, i64 267, i64 %t46, i64 %t48) unreachable -inrange1908: +inrange1965: %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 @@ -20092,11 +22561,11 @@ inrange1908: %t55 = load { ptr, i64, i64 }, ptr %t52 %t56 = extractvalue { ptr, i64, i64 } %t55, 1 %t57 = icmp uge i64 %t54, %t56 - br i1 %t57, label %range1909, label %inrange1910 -range1909: - call void @finch_panic_index(ptr @.str.1105, i64 247, i64 %t54, i64 %t56) + br i1 %t57, label %range1966, label %inrange1967 +range1966: + call void @finch_panic_index(ptr @.str.1110, i64 267, i64 %t54, i64 %t56) unreachable -inrange1910: +inrange1967: %t58 = extractvalue { ptr, i64, i64 } %t55, 0 %t59 = getelementptr inbounds %S.ast.Node, ptr %t58, i64 %t54 %t60 = load %S.ast.Node, ptr %t59 @@ -20108,912 +22577,1083 @@ inrange1910: %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 %then1911, label %endif1913 -then1911: - br label %each.step1903 -endif1913: + br i1 %t68, label %then1968, label %endif1970 +then1968: + call void @finch.drop.S_ast_Node(ptr %a64) + call void @finch.drop.S_gen_FnSig(ptr %a41) + br label %each.step1960 +endif1970: 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.cond1914 -for.cond1914: + br label %for.cond1971 +for.cond1971: %t74 = load i64, ptr %a73 %t75 = icmp slt i64 %t74, %t72 - br i1 %t75, label %for.body1915, label %for.end1917 -for.body1915: + br i1 %t75, label %for.body1972, label %for.end1974 +for.body1972: %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 %range1918, label %inrange1919 -range1918: - call void @finch_panic_index(ptr @.str.1106, i64 253, i64 %t78, i64 %t80) + br i1 %t81, label %range1975, label %inrange1976 +range1975: + call void @finch_panic_index(ptr @.str.1111, i64 273, i64 %t78, i64 %t80) unreachable -inrange1919: +inrange1976: %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.1107, i64 1, i64 0 }, ptr %a88 + store { ptr, i64, i64 } { ptr @.str.1112, 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 %range1920, label %inrange1921 -range1920: - call void @finch_panic_index(ptr @.str.1108, i64 253, i64 %t91, i64 %t93) + store { ptr, i64, i64 } %t85, ptr %a89 + call void @finch_str_drop(ptr %a89) + %t90 = load { ptr, i64, i64 }, ptr %a86 + %t91 = getelementptr inbounds %S.gen.FnSig, ptr %a41, i32 0, i32 14 + %t92 = load i64, ptr %a73 + %t93 = load { ptr, i64, i64 }, ptr %t91 + %t94 = extractvalue { ptr, i64, i64 } %t93, 1 + %t95 = icmp uge i64 %t92, %t94 + br i1 %t95, label %range1977, label %inrange1978 +range1977: + call void @finch_panic_index(ptr @.str.1113, i64 273, i64 %t92, i64 %t94) unreachable -inrange1921: - %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.step1916 -for.step1916: - %t106 = load i64, ptr %a73 - %t107 = add i64 %t106, 1 - store i64 %t107, ptr %a73 - br label %for.cond1914 -for.end1917: - %t108 = load ptr, ptr %a1 - %t109 = icmp eq ptr %t108, null - br i1 %t109, label %panic1922, label %ok1923 -panic1922: - call void @finch_panic(ptr @.str.1109, i64 255, ptr @.str.1110) +inrange1978: + %t96 = extractvalue { ptr, i64, i64 } %t93, 0 + %t97 = getelementptr inbounds { ptr, i64, i64 }, ptr %t96, i64 %t92 + %t98 = load { ptr, i64, i64 }, ptr %t97 + store { ptr, i64, i64 } %t90, ptr %a100 + store { ptr, i64, i64 } %t98, ptr %a101 + call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) + store { ptr, i64, i64 } %t90, ptr %a102 + call void @finch_str_drop(ptr %a102) + %t103 = load { ptr, i64, i64 }, ptr %a99 + %t104 = load i64, ptr %t76 + %t105 = add i64 %t104, 1 + call void @finch_arr_reserve(ptr %a69, i64 %t105, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t106 = load ptr, ptr %a69 + %t107 = getelementptr inbounds { ptr, i64, i64 }, ptr %t106, i64 %t104 + store { ptr, i64, i64 } %t103, ptr %t107 + store i64 %t105, ptr %t76 + br label %for.step1973 +for.step1973: + %t108 = load i64, ptr %a73 + %t109 = add i64 %t108, 1 + store i64 %t109, ptr %a73 + br label %for.cond1971 +for.end1974: + %t110 = load ptr, ptr %a1 + %t111 = icmp eq ptr %t110, null + br i1 %t111, label %panic1979, label %ok1980 +panic1979: + call void @finch_panic(ptr @.str.1114, i64 275, ptr @.str.1115) unreachable -ok1923: - %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.1111, 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.1112, 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.1113, 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 +ok1980: + %t112 = getelementptr inbounds %S.gen.Gen, ptr %t110, i32 0, i32 28 + %t113 = getelementptr inbounds { ptr, i64, i64 }, ptr %t112, i32 0, i32 1 + %t114 = getelementptr inbounds %S.gen.FnSig, ptr %a41, i32 0, i32 0 + %t115 = load { ptr, i64, i64 }, ptr %t114 + store { ptr, i64, i64 } { ptr @.str.1116, i64 3, 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.1117, i64 1, i64 0 }, ptr %a122 + call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122) + store { ptr, i64, i64 } %t119, ptr %a123 + call void @finch_str_drop(ptr %a123) + %t124 = load { ptr, i64, i64 }, ptr %a120 + %t125 = getelementptr inbounds %S.gen.FnSig, ptr %a41, i32 0, i32 1 + %t126 = load { ptr, i64, i64 }, ptr %t125 + store { ptr, i64, i64 } %t124, ptr %a128 + store { ptr, i64, i64 } %t126, ptr %a129 + call void @finch_str_concat(ptr %a127, ptr %a128, ptr %a129) + store { ptr, i64, i64 } %t124, ptr %a130 + call void @finch_str_drop(ptr %a130) + %t131 = load { ptr, i64, i64 }, ptr %a127 + store { ptr, i64, i64 } %t131, ptr %a133 + store { ptr, i64, i64 } { ptr @.str.1118, i64 1, i64 0 }, ptr %a134 + call void @finch_str_concat(ptr %a132, ptr %a133, ptr %a134) 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.1114, 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 %panic1924, label %ok1925 -panic1924: - call void @finch_panic(ptr @.str.1115, i64 255, ptr @.str.1116) + call void @finch_str_drop(ptr %a135) + %t136 = load { ptr, i64, i64 }, ptr %a132 + %t137 = getelementptr inbounds %S.gen.FnSig, ptr %a41, i32 0, i32 2 + %t138 = load { ptr, i64, i64 }, ptr %t137 + store { ptr, i64, i64 } %t136, ptr %a140 + store { ptr, i64, i64 } %t138, ptr %a141 + call void @finch_str_concat(ptr %a139, ptr %a140, ptr %a141) + store { ptr, i64, i64 } %t136, ptr %a142 + call void @finch_str_drop(ptr %a142) + %t143 = load { ptr, i64, i64 }, ptr %a139 + store { ptr, i64, i64 } %t143, ptr %a145 + store { ptr, i64, i64 } { ptr @.str.1119, i64 1, i64 0 }, ptr %a146 + call void @finch_str_concat(ptr %a144, ptr %a145, ptr %a146) + store { ptr, i64, i64 } %t143, ptr %a147 + call void @finch_str_drop(ptr %a147) + %t148 = load { ptr, i64, i64 }, ptr %a144 + %t149 = load ptr, ptr %a1 + %t150 = icmp eq ptr %t149, null + br i1 %t150, label %panic1981, label %ok1982 +panic1981: + call void @finch_panic(ptr @.str.1120, i64 275, ptr @.str.1121) unreachable -ok1925: - %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 %range1926, label %inrange1927 -range1926: - call void @finch_panic_index(ptr @.str.1117, i64 255, i64 %t146, i64 %t148) +ok1982: + %t151 = getelementptr inbounds %S.gen.Gen, ptr %t149, i32 0, i32 1 + %t152 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 13 + %t153 = load i64, ptr %t152 + %t154 = load { ptr, i64, i64 }, ptr %t151 + %t155 = extractvalue { ptr, i64, i64 } %t154, 1 + %t156 = icmp uge i64 %t153, %t155 + br i1 %t156, label %range1983, label %inrange1984 +range1983: + call void @finch_panic_index(ptr @.str.1122, i64 275, i64 %t153, i64 %t155) unreachable -inrange1927: - %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.1118, 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 +inrange1984: + %t157 = extractvalue { ptr, i64, i64 } %t154, 0 + %t158 = getelementptr inbounds { ptr, i64, i64 }, ptr %t157, i64 %t153 + %t159 = load { ptr, i64, i64 }, ptr %t158 + store { ptr, i64, i64 } %t148, ptr %a161 + store { ptr, i64, i64 } %t159, ptr %a162 + call void @finch_str_concat(ptr %a160, ptr %a161, ptr %a162) + store { ptr, i64, i64 } %t148, ptr %a163 + call void @finch_str_drop(ptr %a163) + %t164 = load { ptr, i64, i64 }, ptr %a160 + store { ptr, i64, i64 } %t164, ptr %a166 + store { ptr, i64, i64 } { ptr @.str.1123, i64 1, i64 0 }, 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.1119, 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.1120, 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 + store { ptr, i64, i64 } %t164, ptr %a168 + call void @finch_str_drop(ptr %a168) + %t169 = load { ptr, i64, i64 }, ptr %a165 + %t170 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 11 + %t171 = load i64, ptr %t170 + call void @finch_str_from_int(ptr %a172, i64 %t171) + %t173 = load { ptr, i64, i64 }, ptr %a172 + store { ptr, i64, i64 } %t169, ptr %a175 + store { ptr, i64, i64 } %t173, ptr %a176 + call void @finch_str_concat(ptr %a174, ptr %a175, ptr %a176) + store { ptr, i64, i64 } %t169, ptr %a177 + call void @finch_str_drop(ptr %a177) + store { ptr, i64, i64 } %t173, ptr %a178 + call void @finch_str_drop(ptr %a178) + %t179 = load { ptr, i64, i64 }, ptr %a174 + store { ptr, i64, i64 } %t179, ptr %a181 + store { ptr, i64, i64 } { ptr @.str.1124, i64 1, i64 0 }, ptr %a182 + call void @finch_str_concat(ptr %a180, ptr %a181, ptr %a182) + store { ptr, i64, i64 } %t179, ptr %a183 + call void @finch_str_drop(ptr %a183) + %t184 = load { ptr, i64, i64 }, ptr %a180 + %t185 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 12 %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.1121, 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.1122, i64 1, i64 0 }, ptr %a206 + store { ptr, i64, i64 } %t184, ptr %a192 + call void @finch_str_drop(ptr %a192) + store { ptr, i64, i64 } %t188, ptr %a193 + call void @finch_str_drop(ptr %a193) + %t194 = load { ptr, i64, i64 }, ptr %a189 + store { ptr, i64, i64 } %t194, ptr %a196 + store { ptr, i64, i64 } { ptr @.str.1125, i64 1, i64 0 }, ptr %a197 + call void @finch_str_concat(ptr %a195, ptr %a196, ptr %a197) + store { ptr, i64, i64 } %t194, ptr %a198 + call void @finch_str_drop(ptr %a198) + %t199 = load { ptr, i64, i64 }, ptr %a195 + %t200 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 14 + %t201 = load i64, ptr %t200 + call void @finch_str_from_int(ptr %a202, i64 %t201) + %t203 = load { ptr, i64, i64 }, ptr %a202 + store { ptr, i64, i64 } %t199, 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 - %t208 = getelementptr inbounds { ptr, i64, i64 }, ptr %a69, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.1123, 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.step1903 -each.step1903: - %t220 = load i64, ptr %a30 - %t221 = add i64 %t220, 1 - store i64 %t221, ptr %a30 - br label %each.cond1901 -each.end1904: - %t222 = load ptr, ptr %a1 - %t223 = icmp eq ptr %t222, null - br i1 %t223, label %panic1928, label %ok1929 -panic1928: - call void @finch_panic(ptr @.str.1124, i64 257, ptr @.str.1125) + store { ptr, i64, i64 } %t199, ptr %a207 + call void @finch_str_drop(ptr %a207) + store { ptr, i64, i64 } %t203, ptr %a208 + call void @finch_str_drop(ptr %a208) + %t209 = load { ptr, i64, i64 }, ptr %a204 + store { ptr, i64, i64 } %t209, ptr %a211 + store { ptr, i64, i64 } { ptr @.str.1126, i64 1, i64 0 }, ptr %a212 + call void @finch_str_concat(ptr %a210, ptr %a211, ptr %a212) + store { ptr, i64, i64 } %t209, ptr %a213 + call void @finch_str_drop(ptr %a213) + %t214 = load { ptr, i64, i64 }, ptr %a210 + %t215 = load %S.gen.FnSig, ptr %a41 + %t216 = call { ptr, i64, i64 } @finch.gen.sigText(%S.gen.FnSig %t215) + %t217 = call { ptr, i64, i64 } @finch.gen.esc({ ptr, i64, i64 } %t216) + store { ptr, i64, i64 } %t216, ptr %a218 + call void @finch_str_drop(ptr %a218) + store { ptr, i64, i64 } %t214, ptr %a220 + store { ptr, i64, i64 } %t217, ptr %a221 + call void @finch_str_concat(ptr %a219, ptr %a220, ptr %a221) + store { ptr, i64, i64 } %t214, ptr %a222 + call void @finch_str_drop(ptr %a222) + store { ptr, i64, i64 } %t217, ptr %a223 + call void @finch_str_drop(ptr %a223) + %t224 = load { ptr, i64, i64 }, ptr %a219 + store { ptr, i64, i64 } %t224, ptr %a226 + store { ptr, i64, i64 } { ptr @.str.1127, i64 1, i64 0 }, ptr %a227 + call void @finch_str_concat(ptr %a225, ptr %a226, ptr %a227) + store { ptr, i64, i64 } %t224, ptr %a228 + call void @finch_str_drop(ptr %a228) + %t229 = load { ptr, i64, i64 }, ptr %a225 + %t230 = getelementptr inbounds { ptr, i64, i64 }, ptr %a69, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.1128, i64 1, i64 0 }, ptr %a231 + call void @finch_str_join(ptr %a232, ptr %a69, ptr %a231) + %t233 = load { ptr, i64, i64 }, ptr %a232 + store { ptr, i64, i64 } %t229, ptr %a235 + store { ptr, i64, i64 } %t233, ptr %a236 + call void @finch_str_concat(ptr %a234, ptr %a235, ptr %a236) + store { ptr, i64, i64 } %t229, ptr %a237 + call void @finch_str_drop(ptr %a237) + store { ptr, i64, i64 } %t233, ptr %a238 + call void @finch_str_drop(ptr %a238) + %t239 = load { ptr, i64, i64 }, ptr %a234 + %t240 = load i64, ptr %t113 + %t241 = add i64 %t240, 1 + call void @finch_arr_reserve(ptr %t112, i64 %t241, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t242 = load ptr, ptr %t112 + %t243 = getelementptr inbounds { ptr, i64, i64 }, ptr %t242, i64 %t240 + store { ptr, i64, i64 } %t239, ptr %t243 + store i64 %t241, ptr %t113 + call void @finch.drop.arr_str(ptr %a69) + call void @finch.drop.S_ast_Node(ptr %a64) + call void @finch.drop.S_gen_FnSig(ptr %a41) + br label %each.step1960 +each.step1960: + %t244 = load i64, ptr %a30 + %t245 = add i64 %t244, 1 + store i64 %t245, ptr %a30 + br label %each.cond1958 +each.end1961: + %t246 = load ptr, ptr %a1 + %t247 = icmp eq ptr %t246, null + br i1 %t247, label %panic1985, label %ok1986 +panic1985: + call void @finch_panic(ptr @.str.1129, i64 277, ptr @.str.1130) unreachable -ok1929: - %t224 = getelementptr inbounds %S.gen.Gen, ptr %t222, i32 0, i32 16 - store i64 0, ptr %a225 - br label %each.cond1930 -each.cond1930: - %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.body1931, label %each.end1933 -each.body1931: - %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 %then1934, label %endif1936 -then1934: - br label %each.step1932 -endif1936: - %t239 = load ptr, ptr %a1 - %t240 = icmp eq ptr %t239, null - br i1 %t240, label %panic1937, label %ok1938 -panic1937: - call void @finch_panic(ptr @.str.1126, i64 261, ptr @.str.1127) - unreachable -ok1938: - %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 %range1939, label %inrange1940 -range1939: - call void @finch_panic_index(ptr @.str.1128, i64 261, i64 %t243, i64 %t245) - unreachable -inrange1940: - %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 +ok1986: + %t248 = getelementptr inbounds %S.gen.Gen, ptr %t246, i32 0, i32 17 + store i64 0, ptr %a249 + br label %each.cond1987 +each.cond1987: + %t250 = getelementptr inbounds { ptr, i64, i64 }, ptr %t248, i32 0, i32 1 %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 %range1941, label %inrange1942 -range1941: - call void @finch_panic_index(ptr @.str.1129, i64 261, i64 %t251, i64 %t253) + %t252 = load i64, ptr %a249 + %t253 = icmp slt i64 %t252, %t251 + br i1 %t253, label %each.body1988, label %each.end1990 +each.body1988: + %t254 = load ptr, ptr %t248 + %t255 = getelementptr inbounds %S.gen.Template, ptr %t254, i64 %t252 + %t256 = load %S.gen.Template, ptr %t255 + store %S.gen.Template %t256, ptr %a257 + call void @finch.copy.S_gen_Template(ptr %a258, ptr %a257) + %t259 = load %S.gen.Template, ptr %a258 + store %S.gen.Template %t259, ptr %a260 + %t261 = getelementptr inbounds %S.gen.Template, ptr %a260, i32 0, i32 6 + %t262 = load i1, ptr %t261 + br i1 %t262, label %then1991, label %endif1993 +then1991: + call void @finch.drop.S_gen_Template(ptr %a260) + br label %each.step1989 +endif1993: + %t263 = load ptr, ptr %a1 + %t264 = icmp eq ptr %t263, null + br i1 %t264, label %panic1994, label %ok1995 +panic1994: + call void @finch_panic(ptr @.str.1131, i64 281, ptr @.str.1132) unreachable -inrange1942: - %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 %panic1943, label %ok1944 -panic1943: - call void @finch_panic(ptr @.str.1130, i64 262, ptr @.str.1131) +ok1995: + %t265 = getelementptr inbounds %S.gen.Gen, ptr %t263, i32 0, i32 0 + %t266 = getelementptr inbounds %S.gen.Template, ptr %a260, i32 0, i32 4 + %t267 = load i64, ptr %t266 + %t268 = load { ptr, i64, i64 }, ptr %t265 + %t269 = extractvalue { ptr, i64, i64 } %t268, 1 + %t270 = icmp uge i64 %t267, %t269 + br i1 %t270, label %range1996, label %inrange1997 +range1996: + call void @finch_panic_index(ptr @.str.1133, i64 281, i64 %t267, i64 %t269) unreachable -ok1944: - %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.1132, 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.1133, 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.1134, 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.1135, i64 1, i64 0 }, ptr %a294 +inrange1997: + %t271 = extractvalue { ptr, i64, i64 } %t268, 0 + %t272 = getelementptr inbounds %S.ast.Program, ptr %t271, i64 %t267 + %t273 = getelementptr inbounds %S.ast.Program, ptr %t272, i32 0, i32 8 + %t274 = getelementptr inbounds %S.gen.Template, ptr %a260, i32 0, i32 5 + %t275 = load i64, ptr %t274 + %t276 = load { ptr, i64, i64 }, ptr %t273 + %t277 = extractvalue { ptr, i64, i64 } %t276, 1 + %t278 = icmp uge i64 %t275, %t277 + br i1 %t278, label %range1998, label %inrange1999 +range1998: + call void @finch_panic_index(ptr @.str.1134, i64 281, i64 %t275, i64 %t277) + unreachable +inrange1999: + %t279 = extractvalue { ptr, i64, i64 } %t276, 0 + %t280 = getelementptr inbounds %S.ast.Node, ptr %t279, i64 %t275 + %t281 = load %S.ast.Node, ptr %t280 + 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 + store %S.ast.Node %t284, ptr %a285 + %t286 = load ptr, ptr %a1 + %t287 = icmp eq ptr %t286, null + br i1 %t287, label %panic2000, label %ok2001 +panic2000: + call void @finch_panic(ptr @.str.1135, i64 282, ptr @.str.1136) + unreachable +ok2001: + %t288 = getelementptr inbounds %S.gen.Gen, ptr %t286, i32 0, i32 28 + %t289 = getelementptr inbounds { ptr, i64, i64 }, ptr %t288, i32 0, i32 1 + %t290 = getelementptr inbounds %S.gen.Template, ptr %a260, i32 0, i32 0 + %t291 = load { ptr, i64, i64 }, ptr %t290 + store { ptr, i64, i64 } { ptr @.str.1137, i64 3, i64 0 }, ptr %a293 + store { ptr, i64, i64 } %t291, 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 %panic1945, label %ok1946 -panic1945: - call void @finch_panic(ptr @.str.1136, i64 262, ptr @.str.1137) - unreachable -ok1946: - %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 %range1947, label %inrange1948 -range1947: - call void @finch_panic_index(ptr @.str.1138, i64 262, i64 %t300, i64 %t302) - unreachable -inrange1948: - %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.1139, 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.1140, 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.1141, 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.1142, 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.1143, 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.1144, 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.1145, 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.1146, 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.1147, 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.step1932 -each.step1932: - %t387 = load i64, ptr %a225 - %t388 = add i64 %t387, 1 - store i64 %t388, ptr %a225 - br label %each.cond1930 -each.end1933: - %t389 = load ptr, ptr %a1 - %t390 = icmp eq ptr %t389, null - br i1 %t390, label %panic1949, label %ok1950 -panic1949: - call void @finch_panic(ptr @.str.1148, i64 264, ptr @.str.1149) - unreachable -ok1950: - %t391 = getelementptr inbounds %S.gen.Gen, ptr %t389, i32 0, i32 15 - store i64 0, ptr %a392 - br label %each.cond1951 -each.cond1951: - %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.body1952, label %each.end1954 -each.body1952: - %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.from1955 -logic.from1955: - br i1 %t405, label %logic.end1957, label %logic.rhs1956 -logic.rhs1956: - %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.rend1958 -logic.rend1958: - br label %logic.end1957 -logic.end1957: - %t410 = phi i1 [ true, %logic.from1955 ], [ %t409, %logic.rend1958 ] - br i1 %t410, label %then1959, label %endif1961 -then1959: - br label %each.step1953 -endif1961: - %t411 = load ptr, ptr %a1 - %t412 = icmp eq ptr %t411, null - br i1 %t412, label %panic1962, label %ok1963 -panic1962: - call void @finch_panic(ptr @.str.1150, i64 268, ptr @.str.1151) - unreachable -ok1963: - %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 %range1964, label %inrange1965 -range1964: - call void @finch_panic_index(ptr @.str.1152, i64 268, i64 %t415, i64 %t417) - unreachable -inrange1965: - %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 %range1966, label %inrange1967 -range1966: - call void @finch_panic_index(ptr @.str.1153, i64 268, i64 %t423, i64 %t425) - unreachable -inrange1967: - %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 %panic1968, label %ok1969 -panic1968: - call void @finch_panic(ptr @.str.1154, i64 269, ptr @.str.1155) - unreachable -ok1969: - %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.1156, 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.1157, 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.1158, 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 %panic1970, label %ok1971 -panic1970: - call void @finch_panic(ptr @.str.1159, i64 269, ptr @.str.1160) - unreachable -ok1971: - %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 %range1972, label %inrange1973 -range1972: - call void @finch_panic_index(ptr @.str.1161, i64 269, i64 %t462, i64 %t464) - unreachable -inrange1973: - %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.1162, 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.1163, 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.cond1974 -for.cond1974: - %t505 = load i64, ptr %a504 - %t506 = icmp slt i64 %t505, %t503 - br i1 %t506, label %for.body1975, label %for.end1977 -for.body1975: - %t507 = load ptr, ptr %a1 - %t508 = icmp eq ptr %t507, null - br i1 %t508, label %panic1978, label %ok1979 -panic1978: - call void @finch_panic(ptr @.str.1164, i64 271, ptr @.str.1165) - unreachable -ok1979: - %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.1166, 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.1167, 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.1168, 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 %range1980, label %inrange1981 -range1980: - call void @finch_panic_index(ptr @.str.1169, i64 271, i64 %t532, i64 %t534) - unreachable -inrange1981: - %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.1170, 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 %range1982, label %inrange1983 -range1982: - call void @finch_panic_index(ptr @.str.1171, i64 271, i64 %t548, i64 %t550) - unreachable -inrange1983: - %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.step1976 -for.step1976: - %t564 = load i64, ptr %a504 - %t565 = add i64 %t564, 1 - store i64 %t565, ptr %a504 - br label %for.cond1974 -for.end1977: - br label %each.step1953 -each.step1953: - %t566 = load i64, ptr %a392 - %t567 = add i64 %t566, 1 - store i64 %t567, ptr %a392 - br label %each.cond1951 -each.end1954: - %t568 = load ptr, ptr %a1 - %t569 = icmp eq ptr %t568, null - br i1 %t569, label %panic1984, label %ok1985 -panic1984: - call void @finch_panic(ptr @.str.1172, i64 274, ptr @.str.1173) - unreachable -ok1985: - %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.cond1986 -for.cond1986: - %t574 = load i64, ptr %a573 - %t575 = icmp slt i64 %t574, %t572 - br i1 %t575, label %for.body1987, label %for.end1989 -for.body1987: - %t576 = load ptr, ptr %a1 - %t577 = icmp eq ptr %t576, null - br i1 %t577, label %panic1990, label %ok1991 -panic1990: - call void @finch_panic(ptr @.str.1174, i64 275, ptr @.str.1175) - unreachable -ok1991: - %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 %range1992, label %inrange1993 -range1992: - call void @finch_panic_index(ptr @.str.1176, i64 275, i64 %t579, i64 %t581) - unreachable -inrange1993: - %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.cond1994 -each.cond1994: - %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.body1995, label %each.end1997 -each.body1995: - %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.1177, 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.cond1998 -each.cond1998: - %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.body1999, label %each.end2001 -each.body1999: - %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.step2000 -each.step2000: - %t620 = load i64, ptr %a601 - %t621 = add i64 %t620, 1 - store i64 %t621, ptr %a601 - br label %each.cond1998 -each.end2001: - %t622 = getelementptr inbounds { ptr, i64, i64 }, ptr %a599, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.1178, 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 %panic2002, label %ok2003 + store { ptr, i64, i64 } %t295, ptr %a297 + store { ptr, i64, i64 } { ptr @.str.1138, i64 1, i64 0 }, ptr %a298 + call void @finch_str_concat(ptr %a296, ptr %a297, ptr %a298) + store { ptr, i64, i64 } %t295, ptr %a299 + call void @finch_str_drop(ptr %a299) + %t300 = load { ptr, i64, i64 }, ptr %a296 + %t301 = getelementptr inbounds %S.gen.Template, ptr %a260, i32 0, i32 1 + %t302 = load { ptr, i64, i64 }, ptr %t301 + store { ptr, i64, i64 } %t300, ptr %a304 + store { ptr, i64, i64 } %t302, ptr %a305 + call void @finch_str_concat(ptr %a303, ptr %a304, ptr %a305) + store { ptr, i64, i64 } %t300, ptr %a306 + call void @finch_str_drop(ptr %a306) + %t307 = load { ptr, i64, i64 }, ptr %a303 + store { ptr, i64, i64 } %t307, ptr %a309 + store { ptr, i64, i64 } { ptr @.str.1139, i64 1, i64 0 }, ptr %a310 + call void @finch_str_concat(ptr %a308, ptr %a309, ptr %a310) + store { ptr, i64, i64 } %t307, ptr %a311 + call void @finch_str_drop(ptr %a311) + %t312 = load { ptr, i64, i64 }, ptr %a308 + %t313 = getelementptr inbounds %S.gen.Template, ptr %a260, i32 0, i32 2 + %t314 = load { ptr, i64, i64 }, ptr %t313 + store { ptr, i64, i64 } %t312, ptr %a316 + store { ptr, i64, i64 } %t314, ptr %a317 + call void @finch_str_concat(ptr %a315, ptr %a316, ptr %a317) + store { ptr, i64, i64 } %t312, ptr %a318 + call void @finch_str_drop(ptr %a318) + %t319 = load { ptr, i64, i64 }, ptr %a315 + store { ptr, i64, i64 } %t319, ptr %a321 + store { ptr, i64, i64 } { ptr @.str.1140, i64 1, i64 0 }, ptr %a322 + call void @finch_str_concat(ptr %a320, ptr %a321, ptr %a322) + store { ptr, i64, i64 } %t319, ptr %a323 + call void @finch_str_drop(ptr %a323) + %t324 = load { ptr, i64, i64 }, ptr %a320 + %t325 = load ptr, ptr %a1 + %t326 = icmp eq ptr %t325, null + br i1 %t326, label %panic2002, label %ok2003 panic2002: - call void @finch_panic(ptr @.str.1179, i64 282, ptr @.str.1180) + call void @finch_panic(ptr @.str.1141, i64 282, ptr @.str.1142) unreachable ok2003: - %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 %panic2004, label %ok2005 -panic2004: - call void @finch_panic(ptr @.str.1182, i64 282, ptr @.str.1183) + %t327 = getelementptr inbounds %S.gen.Gen, ptr %t325, i32 0, i32 1 + %t328 = getelementptr inbounds %S.ast.Node, ptr %a285, i32 0, i32 13 + %t329 = load i64, ptr %t328 + %t330 = load { ptr, i64, i64 }, ptr %t327 + %t331 = extractvalue { ptr, i64, i64 } %t330, 1 + %t332 = icmp uge i64 %t329, %t331 + br i1 %t332, label %range2004, label %inrange2005 +range2004: + call void @finch_panic_index(ptr @.str.1143, i64 282, i64 %t329, i64 %t331) unreachable -ok2005: - %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 %range2006, label %inrange2007 -range2006: - call void @finch_panic_index(ptr @.str.1184, i64 282, i64 %t633, i64 %t635) +inrange2005: + %t333 = extractvalue { ptr, i64, i64 } %t330, 0 + %t334 = getelementptr inbounds { ptr, i64, i64 }, ptr %t333, i64 %t329 + %t335 = load { ptr, i64, i64 }, ptr %t334 + store { ptr, i64, i64 } %t324, ptr %a337 + store { ptr, i64, i64 } %t335, ptr %a338 + call void @finch_str_concat(ptr %a336, ptr %a337, ptr %a338) + store { ptr, i64, i64 } %t324, ptr %a339 + call void @finch_str_drop(ptr %a339) + %t340 = load { ptr, i64, i64 }, ptr %a336 + store { ptr, i64, i64 } %t340, ptr %a342 + store { ptr, i64, i64 } { ptr @.str.1144, i64 1, i64 0 }, ptr %a343 + call void @finch_str_concat(ptr %a341, ptr %a342, ptr %a343) + store { ptr, i64, i64 } %t340, ptr %a344 + call void @finch_str_drop(ptr %a344) + %t345 = load { ptr, i64, i64 }, ptr %a341 + %t346 = getelementptr inbounds %S.ast.Node, ptr %a285, i32 0, i32 11 + %t347 = load i64, ptr %t346 + call void @finch_str_from_int(ptr %a348, i64 %t347) + %t349 = load { ptr, i64, i64 }, ptr %a348 + store { ptr, i64, i64 } %t345, ptr %a351 + store { ptr, i64, i64 } %t349, ptr %a352 + call void @finch_str_concat(ptr %a350, ptr %a351, ptr %a352) + store { ptr, i64, i64 } %t345, ptr %a353 + call void @finch_str_drop(ptr %a353) + store { ptr, i64, i64 } %t349, ptr %a354 + call void @finch_str_drop(ptr %a354) + %t355 = load { ptr, i64, i64 }, ptr %a350 + store { ptr, i64, i64 } %t355, ptr %a357 + store { ptr, i64, i64 } { ptr @.str.1145, i64 1, i64 0 }, ptr %a358 + call void @finch_str_concat(ptr %a356, ptr %a357, ptr %a358) + store { ptr, i64, i64 } %t355, ptr %a359 + call void @finch_str_drop(ptr %a359) + %t360 = load { ptr, i64, i64 }, ptr %a356 + %t361 = getelementptr inbounds %S.ast.Node, ptr %a285, i32 0, i32 12 + %t362 = load i64, ptr %t361 + call void @finch_str_from_int(ptr %a363, i64 %t362) + %t364 = load { ptr, i64, i64 }, ptr %a363 + store { ptr, i64, i64 } %t360, ptr %a366 + store { ptr, i64, i64 } %t364, ptr %a367 + call void @finch_str_concat(ptr %a365, ptr %a366, ptr %a367) + store { ptr, i64, i64 } %t360, ptr %a368 + call void @finch_str_drop(ptr %a368) + store { ptr, i64, i64 } %t364, ptr %a369 + call void @finch_str_drop(ptr %a369) + %t370 = load { ptr, i64, i64 }, ptr %a365 + store { ptr, i64, i64 } %t370, ptr %a372 + store { ptr, i64, i64 } { ptr @.str.1146, i64 1, i64 0 }, ptr %a373 + call void @finch_str_concat(ptr %a371, ptr %a372, ptr %a373) + store { ptr, i64, i64 } %t370, ptr %a374 + call void @finch_str_drop(ptr %a374) + %t375 = load { ptr, i64, i64 }, ptr %a371 + %t376 = getelementptr inbounds %S.ast.Node, ptr %a285, i32 0, i32 14 + %t377 = load i64, ptr %t376 + call void @finch_str_from_int(ptr %a378, i64 %t377) + %t379 = load { ptr, i64, i64 }, ptr %a378 + store { ptr, i64, i64 } %t375, ptr %a381 + store { ptr, i64, i64 } %t379, ptr %a382 + call void @finch_str_concat(ptr %a380, ptr %a381, ptr %a382) + store { ptr, i64, i64 } %t375, ptr %a383 + call void @finch_str_drop(ptr %a383) + store { ptr, i64, i64 } %t379, ptr %a384 + call void @finch_str_drop(ptr %a384) + %t385 = load { ptr, i64, i64 }, ptr %a380 + store { ptr, i64, i64 } %t385, ptr %a387 + store { ptr, i64, i64 } { ptr @.str.1147, i64 1, i64 0 }, ptr %a388 + call void @finch_str_concat(ptr %a386, ptr %a387, ptr %a388) + store { ptr, i64, i64 } %t385, ptr %a389 + call void @finch_str_drop(ptr %a389) + %t390 = load { ptr, i64, i64 }, ptr %a386 + %t391 = getelementptr inbounds %S.gen.Template, ptr %a260, i32 0, i32 1 + %t392 = load { ptr, i64, i64 }, ptr %t391 + store { ptr, i64, i64 } { ptr @.str.1148, i64 3, i64 0 }, ptr %a394 + store { ptr, i64, i64 } %t392, ptr %a395 + call void @finch_str_concat(ptr %a393, ptr %a394, ptr %a395) + %t396 = load { ptr, i64, i64 }, ptr %a393 + store { ptr, i64, i64 } %t396, ptr %a398 + store { ptr, i64, i64 } { ptr @.str.1149, i64 1, i64 0 }, ptr %a399 + call void @finch_str_concat(ptr %a397, ptr %a398, ptr %a399) + store { ptr, i64, i64 } %t396, ptr %a400 + call void @finch_str_drop(ptr %a400) + %t401 = load { ptr, i64, i64 }, ptr %a397 + %t402 = getelementptr inbounds %S.gen.Template, ptr %a260, i32 0, i32 3 + %t403 = getelementptr inbounds { ptr, i64, i64 }, ptr %t402, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.1150, i64 2, i64 0 }, ptr %a404 + call void @finch_str_join(ptr %a405, ptr %t402, ptr %a404) + %t406 = load { ptr, i64, i64 }, ptr %a405 + store { ptr, i64, i64 } %t401, ptr %a408 + store { ptr, i64, i64 } %t406, ptr %a409 + call void @finch_str_concat(ptr %a407, ptr %a408, ptr %a409) + store { ptr, i64, i64 } %t401, ptr %a410 + call void @finch_str_drop(ptr %a410) + store { ptr, i64, i64 } %t406, ptr %a411 + call void @finch_str_drop(ptr %a411) + %t412 = load { ptr, i64, i64 }, ptr %a407 + store { ptr, i64, i64 } %t412, ptr %a414 + store { ptr, i64, i64 } { ptr @.str.1151, i64 6, i64 0 }, ptr %a415 + call void @finch_str_concat(ptr %a413, ptr %a414, ptr %a415) + store { ptr, i64, i64 } %t412, ptr %a416 + call void @finch_str_drop(ptr %a416) + %t417 = load { ptr, i64, i64 }, ptr %a413 + %t418 = call { ptr, i64, i64 } @finch.gen.esc({ ptr, i64, i64 } %t417) + store { ptr, i64, i64 } %t417, ptr %a419 + call void @finch_str_drop(ptr %a419) + store { ptr, i64, i64 } %t390, ptr %a421 + store { ptr, i64, i64 } %t418, ptr %a422 + call void @finch_str_concat(ptr %a420, ptr %a421, ptr %a422) + store { ptr, i64, i64 } %t390, ptr %a423 + call void @finch_str_drop(ptr %a423) + store { ptr, i64, i64 } %t418, ptr %a424 + call void @finch_str_drop(ptr %a424) + %t425 = load { ptr, i64, i64 }, ptr %a420 + store { ptr, i64, i64 } %t425, ptr %a427 + store { ptr, i64, i64 } { ptr @.str.1152, i64 1, i64 0 }, ptr %a428 + call void @finch_str_concat(ptr %a426, ptr %a427, ptr %a428) + store { ptr, i64, i64 } %t425, ptr %a429 + call void @finch_str_drop(ptr %a429) + %t430 = load { ptr, i64, i64 }, ptr %a426 + %t431 = load i64, ptr %t289 + %t432 = add i64 %t431, 1 + call void @finch_arr_reserve(ptr %t288, i64 %t432, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t433 = load ptr, ptr %t288 + %t434 = getelementptr inbounds { ptr, i64, i64 }, ptr %t433, i64 %t431 + store { ptr, i64, i64 } %t430, ptr %t434 + store i64 %t432, ptr %t289 + call void @finch.drop.S_ast_Node(ptr %a285) + call void @finch.drop.S_gen_Template(ptr %a260) + br label %each.step1989 +each.step1989: + %t435 = load i64, ptr %a249 + %t436 = add i64 %t435, 1 + store i64 %t436, ptr %a249 + br label %each.cond1987 +each.end1990: + %t437 = load ptr, ptr %a1 + %t438 = icmp eq ptr %t437, null + br i1 %t438, label %panic2006, label %ok2007 +panic2006: + call void @finch_panic(ptr @.str.1153, i64 284, ptr @.str.1154) unreachable -inrange2007: - %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.1181, 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.1185, 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.1186, 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 %panic2008, label %ok2009 -panic2008: - call void @finch_panic(ptr @.str.1187, i64 282, ptr @.str.1188) +ok2007: + %t439 = getelementptr inbounds %S.gen.Gen, ptr %t437, i32 0, i32 16 + store i64 0, ptr %a440 + br label %each.cond2008 +each.cond2008: + %t441 = getelementptr inbounds { ptr, i64, i64 }, ptr %t439, i32 0, i32 1 + %t442 = load i64, ptr %t441 + %t443 = load i64, ptr %a440 + %t444 = icmp slt i64 %t443, %t442 + br i1 %t444, label %each.body2009, label %each.end2011 +each.body2009: + %t445 = load ptr, ptr %t439 + %t446 = getelementptr inbounds %S.gen.StructDef, ptr %t445, i64 %t443 + %t447 = load %S.gen.StructDef, ptr %t446 + store %S.gen.StructDef %t447, ptr %a448 + call void @finch.copy.S_gen_StructDef(ptr %a449, ptr %a448) + %t450 = load %S.gen.StructDef, ptr %a449 + store %S.gen.StructDef %t450, ptr %a451 + %t452 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 2 + %t453 = load i1, ptr %t452 + br label %logic.from2012 +logic.from2012: + br i1 %t453, label %logic.end2014, label %logic.rhs2013 +logic.rhs2013: + %t454 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 5 + %t455 = getelementptr inbounds { ptr, i64, i64 }, ptr %t454, i32 0, i32 1 + %t456 = load i64, ptr %t455 + %t457 = icmp sgt i64 %t456, 0 + br label %logic.rend2015 +logic.rend2015: + br label %logic.end2014 +logic.end2014: + %t458 = phi i1 [ true, %logic.from2012 ], [ %t457, %logic.rend2015 ] + br i1 %t458, label %then2016, label %endif2018 +then2016: + call void @finch.drop.S_gen_StructDef(ptr %a451) + br label %each.step2010 +endif2018: + %t459 = load ptr, ptr %a1 + %t460 = icmp eq ptr %t459, null + br i1 %t460, label %panic2019, label %ok2020 +panic2019: + call void @finch_panic(ptr @.str.1155, i64 288, ptr @.str.1156) unreachable -ok2009: - %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 %range2010, label %inrange2011 -range2010: - call void @finch_panic_index(ptr @.str.1189, i64 282, i64 %t663, i64 %t665) +ok2020: + %t461 = getelementptr inbounds %S.gen.Gen, ptr %t459, i32 0, i32 0 + %t462 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 13 + %t463 = load i64, ptr %t462 + %t464 = load { ptr, i64, i64 }, ptr %t461 + %t465 = extractvalue { ptr, i64, i64 } %t464, 1 + %t466 = icmp uge i64 %t463, %t465 + br i1 %t466, label %range2021, label %inrange2022 +range2021: + call void @finch_panic_index(ptr @.str.1157, i64 288, i64 %t463, i64 %t465) unreachable -inrange2011: - %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.1190, 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.1191, 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.1192, 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.step1996 -each.step1996: - %t711 = load i64, ptr %a586 - %t712 = add i64 %t711, 1 - store i64 %t712, ptr %a586 - br label %each.cond1994 -each.end1997: - br label %for.step1988 -for.step1988: - %t713 = load i64, ptr %a573 - %t714 = add i64 %t713, 1 - store i64 %t714, ptr %a573 - br label %for.cond1986 -for.end1989: +inrange2022: + %t467 = extractvalue { ptr, i64, i64 } %t464, 0 + %t468 = getelementptr inbounds %S.ast.Program, ptr %t467, i64 %t463 + %t469 = getelementptr inbounds %S.ast.Program, ptr %t468, i32 0, i32 6 + %t470 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 14 + %t471 = load i64, ptr %t470 + %t472 = load { ptr, i64, i64 }, ptr %t469 + %t473 = extractvalue { ptr, i64, i64 } %t472, 1 + %t474 = icmp uge i64 %t471, %t473 + br i1 %t474, label %range2023, label %inrange2024 +range2023: + call void @finch_panic_index(ptr @.str.1158, i64 288, i64 %t471, i64 %t473) + unreachable +inrange2024: + %t475 = extractvalue { ptr, i64, i64 } %t472, 0 + %t476 = getelementptr inbounds %S.ast.Node, ptr %t475, i64 %t471 + %t477 = load %S.ast.Node, ptr %t476 + store %S.ast.Node %t477, ptr %a478 + call void @finch.copy.S_ast_Node(ptr %a479, ptr %a478) + %t480 = load %S.ast.Node, ptr %a479 + store %S.ast.Node %t480, ptr %a481 + %t482 = load ptr, ptr %a1 + %t483 = icmp eq ptr %t482, null + br i1 %t483, label %panic2025, label %ok2026 +panic2025: + call void @finch_panic(ptr @.str.1159, i64 289, ptr @.str.1160) + unreachable +ok2026: + %t484 = getelementptr inbounds %S.gen.Gen, ptr %t482, i32 0, i32 28 + %t485 = getelementptr inbounds { ptr, i64, i64 }, ptr %t484, i32 0, i32 1 + %t486 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 0 + %t487 = load { ptr, i64, i64 }, ptr %t486 + store { ptr, i64, i64 } { ptr @.str.1161, i64 3, i64 0 }, ptr %a489 + store { ptr, i64, i64 } %t487, ptr %a490 + call void @finch_str_concat(ptr %a488, ptr %a489, ptr %a490) + %t491 = load { ptr, i64, i64 }, ptr %a488 + store { ptr, i64, i64 } %t491, ptr %a493 + store { ptr, i64, i64 } { ptr @.str.1162, i64 1, i64 0 }, ptr %a494 + call void @finch_str_concat(ptr %a492, ptr %a493, ptr %a494) + store { ptr, i64, i64 } %t491, ptr %a495 + call void @finch_str_drop(ptr %a495) + %t496 = load { ptr, i64, i64 }, ptr %a492 + %t497 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 1 + %t498 = load { ptr, i64, i64 }, ptr %t497 + store { ptr, i64, i64 } %t496, ptr %a500 + store { ptr, i64, i64 } %t498, ptr %a501 + call void @finch_str_concat(ptr %a499, ptr %a500, ptr %a501) + store { ptr, i64, i64 } %t496, ptr %a502 + call void @finch_str_drop(ptr %a502) + %t503 = load { ptr, i64, i64 }, ptr %a499 + store { ptr, i64, i64 } %t503, ptr %a505 + store { ptr, i64, i64 } { ptr @.str.1163, i64 1, i64 0 }, ptr %a506 + call void @finch_str_concat(ptr %a504, ptr %a505, ptr %a506) + store { ptr, i64, i64 } %t503, ptr %a507 + call void @finch_str_drop(ptr %a507) + %t508 = load { ptr, i64, i64 }, ptr %a504 + %t509 = load ptr, ptr %a1 + %t510 = icmp eq ptr %t509, null + br i1 %t510, label %panic2027, label %ok2028 +panic2027: + call void @finch_panic(ptr @.str.1164, i64 289, ptr @.str.1165) + unreachable +ok2028: + %t511 = getelementptr inbounds %S.gen.Gen, ptr %t509, i32 0, i32 1 + %t512 = getelementptr inbounds %S.ast.Node, ptr %a481, i32 0, i32 13 + %t513 = load i64, ptr %t512 + %t514 = load { ptr, i64, i64 }, ptr %t511 + %t515 = extractvalue { ptr, i64, i64 } %t514, 1 + %t516 = icmp uge i64 %t513, %t515 + br i1 %t516, label %range2029, label %inrange2030 +range2029: + call void @finch_panic_index(ptr @.str.1166, i64 289, i64 %t513, i64 %t515) + unreachable +inrange2030: + %t517 = extractvalue { ptr, i64, i64 } %t514, 0 + %t518 = getelementptr inbounds { ptr, i64, i64 }, ptr %t517, i64 %t513 + %t519 = load { ptr, i64, i64 }, ptr %t518 + store { ptr, i64, i64 } %t508, ptr %a521 + store { ptr, i64, i64 } %t519, ptr %a522 + call void @finch_str_concat(ptr %a520, ptr %a521, ptr %a522) + store { ptr, i64, i64 } %t508, ptr %a523 + call void @finch_str_drop(ptr %a523) + %t524 = load { ptr, i64, i64 }, ptr %a520 + store { ptr, i64, i64 } %t524, ptr %a526 + store { ptr, i64, i64 } { ptr @.str.1167, i64 1, i64 0 }, ptr %a527 + call void @finch_str_concat(ptr %a525, ptr %a526, ptr %a527) + store { ptr, i64, i64 } %t524, ptr %a528 + call void @finch_str_drop(ptr %a528) + %t529 = load { ptr, i64, i64 }, ptr %a525 + %t530 = getelementptr inbounds %S.ast.Node, ptr %a481, i32 0, i32 11 + %t531 = load i64, ptr %t530 + call void @finch_str_from_int(ptr %a532, i64 %t531) + %t533 = load { ptr, i64, i64 }, ptr %a532 + store { ptr, i64, i64 } %t529, ptr %a535 + store { ptr, i64, i64 } %t533, ptr %a536 + call void @finch_str_concat(ptr %a534, ptr %a535, ptr %a536) + store { ptr, i64, i64 } %t529, ptr %a537 + call void @finch_str_drop(ptr %a537) + store { ptr, i64, i64 } %t533, ptr %a538 + call void @finch_str_drop(ptr %a538) + %t539 = load { ptr, i64, i64 }, ptr %a534 + store { ptr, i64, i64 } %t539, ptr %a541 + store { ptr, i64, i64 } { ptr @.str.1168, i64 1, i64 0 }, ptr %a542 + call void @finch_str_concat(ptr %a540, ptr %a541, ptr %a542) + store { ptr, i64, i64 } %t539, ptr %a543 + call void @finch_str_drop(ptr %a543) + %t544 = load { ptr, i64, i64 }, ptr %a540 + %t545 = getelementptr inbounds %S.ast.Node, ptr %a481, i32 0, i32 12 + %t546 = load i64, ptr %t545 + call void @finch_str_from_int(ptr %a547, i64 %t546) + %t548 = load { ptr, i64, i64 }, ptr %a547 + store { ptr, i64, i64 } %t544, ptr %a550 + store { ptr, i64, i64 } %t548, ptr %a551 + call void @finch_str_concat(ptr %a549, ptr %a550, ptr %a551) + store { ptr, i64, i64 } %t544, ptr %a552 + call void @finch_str_drop(ptr %a552) + store { ptr, i64, i64 } %t548, ptr %a553 + call void @finch_str_drop(ptr %a553) + %t554 = load { ptr, i64, i64 }, ptr %a549 + %t555 = load i64, ptr %t485 + %t556 = add i64 %t555, 1 + call void @finch_arr_reserve(ptr %t484, i64 %t556, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t557 = load ptr, ptr %t484 + %t558 = getelementptr inbounds { ptr, i64, i64 }, ptr %t557, i64 %t555 + store { ptr, i64, i64 } %t554, ptr %t558 + store i64 %t556, ptr %t485 + %t559 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 11 + %t560 = getelementptr inbounds { ptr, i64, i64 }, ptr %t559, i32 0, i32 1 + %t561 = load i64, ptr %t560 + store i64 0, ptr %a562 + br label %for.cond2031 +for.cond2031: + %t563 = load i64, ptr %a562 + %t564 = icmp slt i64 %t563, %t561 + br i1 %t564, label %for.body2032, label %for.end2034 +for.body2032: + %t565 = load ptr, ptr %a1 + %t566 = icmp eq ptr %t565, null + br i1 %t566, label %panic2035, label %ok2036 +panic2035: + call void @finch_panic(ptr @.str.1169, i64 291, ptr @.str.1170) + unreachable +ok2036: + %t567 = getelementptr inbounds %S.gen.Gen, ptr %t565, i32 0, i32 28 + %t568 = getelementptr inbounds { ptr, i64, i64 }, ptr %t567, i32 0, i32 1 + %t569 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 0 + %t570 = load { ptr, i64, i64 }, ptr %t569 + store { ptr, i64, i64 } { ptr @.str.1171, i64 4, i64 0 }, ptr %a572 + store { ptr, i64, i64 } %t570, ptr %a573 + call void @finch_str_concat(ptr %a571, ptr %a572, ptr %a573) + %t574 = load { ptr, i64, i64 }, ptr %a571 + store { ptr, i64, i64 } %t574, ptr %a576 + store { ptr, i64, i64 } { ptr @.str.1172, i64 1, i64 0 }, ptr %a577 + call void @finch_str_concat(ptr %a575, ptr %a576, ptr %a577) + store { ptr, i64, i64 } %t574, ptr %a578 + call void @finch_str_drop(ptr %a578) + %t579 = load { ptr, i64, i64 }, ptr %a575 + %t580 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 1 + %t581 = load { ptr, i64, i64 }, ptr %t580 + store { ptr, i64, i64 } %t579, ptr %a583 + store { ptr, i64, i64 } %t581, ptr %a584 + call void @finch_str_concat(ptr %a582, ptr %a583, ptr %a584) + store { ptr, i64, i64 } %t579, ptr %a585 + call void @finch_str_drop(ptr %a585) + %t586 = load { ptr, i64, i64 }, ptr %a582 + store { ptr, i64, i64 } %t586, ptr %a588 + store { ptr, i64, i64 } { ptr @.str.1173, i64 1, i64 0 }, ptr %a589 + call void @finch_str_concat(ptr %a587, ptr %a588, ptr %a589) + store { ptr, i64, i64 } %t586, ptr %a590 + call void @finch_str_drop(ptr %a590) + %t591 = load { ptr, i64, i64 }, ptr %a587 + %t592 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 11 + %t593 = load i64, ptr %a562 + %t594 = load { ptr, i64, i64 }, ptr %t592 + %t595 = extractvalue { ptr, i64, i64 } %t594, 1 + %t596 = icmp uge i64 %t593, %t595 + br i1 %t596, label %range2037, label %inrange2038 +range2037: + call void @finch_panic_index(ptr @.str.1174, i64 291, i64 %t593, i64 %t595) + unreachable +inrange2038: + %t597 = extractvalue { ptr, i64, i64 } %t594, 0 + %t598 = getelementptr inbounds { ptr, i64, i64 }, ptr %t597, i64 %t593 + %t599 = load { ptr, i64, i64 }, ptr %t598 + store { ptr, i64, i64 } %t591, ptr %a601 + store { ptr, i64, i64 } %t599, ptr %a602 + call void @finch_str_concat(ptr %a600, ptr %a601, ptr %a602) + store { ptr, i64, i64 } %t591, ptr %a603 + call void @finch_str_drop(ptr %a603) + %t604 = load { ptr, i64, i64 }, ptr %a600 + store { ptr, i64, i64 } %t604, ptr %a606 + store { ptr, i64, i64 } { ptr @.str.1175, i64 1, i64 0 }, ptr %a607 + call void @finch_str_concat(ptr %a605, ptr %a606, ptr %a607) + store { ptr, i64, i64 } %t604, ptr %a608 + call void @finch_str_drop(ptr %a608) + %t609 = load { ptr, i64, i64 }, ptr %a605 + %t610 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 12 + %t611 = load i64, ptr %a562 + %t612 = load { ptr, i64, i64 }, ptr %t610 + %t613 = extractvalue { ptr, i64, i64 } %t612, 1 + %t614 = icmp uge i64 %t611, %t613 + br i1 %t614, label %range2039, label %inrange2040 +range2039: + call void @finch_panic_index(ptr @.str.1176, i64 291, i64 %t611, i64 %t613) + unreachable +inrange2040: + %t615 = extractvalue { ptr, i64, i64 } %t612, 0 + %t616 = getelementptr inbounds %S.ast.Type, ptr %t615, i64 %t611 + %t617 = load %S.ast.Type, ptr %t616 + %t618 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t617) + store { ptr, i64, i64 } %t609, ptr %a620 + store { ptr, i64, i64 } %t618, ptr %a621 + call void @finch_str_concat(ptr %a619, ptr %a620, ptr %a621) + store { ptr, i64, i64 } %t609, ptr %a622 + call void @finch_str_drop(ptr %a622) + store { ptr, i64, i64 } %t618, ptr %a623 + call void @finch_str_drop(ptr %a623) + %t624 = load { ptr, i64, i64 }, ptr %a619 + %t625 = load i64, ptr %t568 + %t626 = add i64 %t625, 1 + call void @finch_arr_reserve(ptr %t567, i64 %t626, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t627 = load ptr, ptr %t567 + %t628 = getelementptr inbounds { ptr, i64, i64 }, ptr %t627, i64 %t625 + store { ptr, i64, i64 } %t624, ptr %t628 + store i64 %t626, ptr %t568 + br label %for.step2033 +for.step2033: + %t629 = load i64, ptr %a562 + %t630 = add i64 %t629, 1 + store i64 %t630, ptr %a562 + br label %for.cond2031 +for.end2034: + call void @finch.drop.S_ast_Node(ptr %a481) + call void @finch.drop.S_gen_StructDef(ptr %a451) + br label %each.step2010 +each.step2010: + %t631 = load i64, ptr %a440 + %t632 = add i64 %t631, 1 + store i64 %t632, ptr %a440 + br label %each.cond2008 +each.end2011: + %t633 = load ptr, ptr %a1 + %t634 = icmp eq ptr %t633, null + br i1 %t634, label %panic2041, label %ok2042 +panic2041: + call void @finch_panic(ptr @.str.1177, i64 294, ptr @.str.1178) + unreachable +ok2042: + %t635 = getelementptr inbounds %S.gen.Gen, ptr %t633, i32 0, i32 0 + %t636 = getelementptr inbounds { ptr, i64, i64 }, ptr %t635, i32 0, i32 1 + %t637 = load i64, ptr %t636 + store i64 0, ptr %a638 + br label %for.cond2043 +for.cond2043: + %t639 = load i64, ptr %a638 + %t640 = icmp slt i64 %t639, %t637 + br i1 %t640, label %for.body2044, label %for.end2046 +for.body2044: + %t641 = load ptr, ptr %a1 + %t642 = icmp eq ptr %t641, null + br i1 %t642, label %panic2047, label %ok2048 +panic2047: + call void @finch_panic(ptr @.str.1179, i64 295, ptr @.str.1180) + unreachable +ok2048: + %t643 = getelementptr inbounds %S.gen.Gen, ptr %t641, i32 0, i32 0 + %t644 = load i64, ptr %a638 + %t645 = load { ptr, i64, i64 }, ptr %t643 + %t646 = extractvalue { ptr, i64, i64 } %t645, 1 + %t647 = icmp uge i64 %t644, %t646 + br i1 %t647, label %range2049, label %inrange2050 +range2049: + call void @finch_panic_index(ptr @.str.1181, i64 295, i64 %t644, i64 %t646) + unreachable +inrange2050: + %t648 = extractvalue { ptr, i64, i64 } %t645, 0 + %t649 = getelementptr inbounds %S.ast.Program, ptr %t648, i64 %t644 + %t650 = getelementptr inbounds %S.ast.Program, ptr %t649, i32 0, i32 7 + store i64 0, ptr %a651 + br label %each.cond2051 +each.cond2051: + %t652 = getelementptr inbounds { ptr, i64, i64 }, ptr %t650, i32 0, i32 1 + %t653 = load i64, ptr %t652 + %t654 = load i64, ptr %a651 + %t655 = icmp slt i64 %t654, %t653 + br i1 %t655, label %each.body2052, label %each.end2054 +each.body2052: + %t656 = load ptr, ptr %t650 + %t657 = getelementptr inbounds %S.ast.Node, ptr %t656, i64 %t654 + %t658 = load %S.ast.Node, ptr %t657 + store %S.ast.Node %t658, ptr %a659 + call void @finch.copy.S_ast_Node(ptr %a660, ptr %a659) + %t661 = load %S.ast.Node, ptr %a660 + store %S.ast.Node %t661, ptr %a662 + store { ptr, i64, i64 } { ptr @.str.1182, i64 0, i64 0 }, ptr %a663 + store { ptr, i64, i64 } zeroinitializer, ptr %a664 + %t665 = getelementptr inbounds %S.ast.Node, ptr %a662, i32 0, i32 9 + store i64 0, ptr %a666 + br label %each.cond2055 +each.cond2055: + %t667 = getelementptr inbounds { ptr, i64, i64 }, ptr %t665, i32 0, i32 1 + %t668 = load i64, ptr %t667 + %t669 = load i64, ptr %a666 + %t670 = icmp slt i64 %t669, %t668 + br i1 %t670, label %each.body2056, label %each.end2058 +each.body2056: + %t671 = load ptr, ptr %t665 + %t672 = getelementptr inbounds %S.ast.Node, ptr %t671, i64 %t669 + %t673 = load %S.ast.Node, ptr %t672 + store %S.ast.Node %t673, ptr %a674 + %t675 = getelementptr inbounds { ptr, i64, i64 }, ptr %a664, i32 0, i32 1 + %t676 = getelementptr inbounds %S.ast.Node, ptr %a674, i32 0, i32 1 + %t677 = load { ptr, i64, i64 }, ptr %t676 + store { ptr, i64, i64 } %t677, ptr %a678 + call void @finch_str_copy(ptr %a679, ptr %a678) + %t680 = load { ptr, i64, i64 }, ptr %a679 + %t681 = load i64, ptr %t675 + %t682 = add i64 %t681, 1 + call void @finch_arr_reserve(ptr %a664, i64 %t682, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t683 = load ptr, ptr %a664 + %t684 = getelementptr inbounds { ptr, i64, i64 }, ptr %t683, i64 %t681 + store { ptr, i64, i64 } %t680, ptr %t684 + store i64 %t682, ptr %t675 + br label %each.step2057 +each.step2057: + %t685 = load i64, ptr %a666 + %t686 = add i64 %t685, 1 + store i64 %t686, ptr %a666 + br label %each.cond2055 +each.end2058: + %t687 = getelementptr inbounds { ptr, i64, i64 }, ptr %a664, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.1183, i64 1, i64 0 }, ptr %a688 + call void @finch_str_join(ptr %a689, ptr %a664, ptr %a688) + %t690 = load { ptr, i64, i64 }, ptr %a689 + %t691 = load { ptr, i64, i64 }, ptr %a663 + store { ptr, i64, i64 } %t690, ptr %a663 + store { ptr, i64, i64 } %t691, ptr %a692 + call void @finch_str_drop(ptr %a692) + %t693 = load ptr, ptr %a1 + %t694 = icmp eq ptr %t693, null + br i1 %t694, label %panic2059, label %ok2060 +panic2059: + call void @finch_panic(ptr @.str.1184, i64 302, ptr @.str.1185) + unreachable +ok2060: + %t695 = getelementptr inbounds %S.gen.Gen, ptr %t693, i32 0, i32 28 + %t696 = getelementptr inbounds { ptr, i64, i64 }, ptr %t695, i32 0, i32 1 + %t697 = load ptr, ptr %a1 + %t698 = icmp eq ptr %t697, null + br i1 %t698, label %panic2061, label %ok2062 +panic2061: + call void @finch_panic(ptr @.str.1187, i64 302, ptr @.str.1188) + unreachable +ok2062: + %t699 = getelementptr inbounds %S.gen.Gen, ptr %t697, i32 0, i32 0 + %t700 = load i64, ptr %a638 + %t701 = load { ptr, i64, i64 }, ptr %t699 + %t702 = extractvalue { ptr, i64, i64 } %t701, 1 + %t703 = icmp uge i64 %t700, %t702 + br i1 %t703, label %range2063, label %inrange2064 +range2063: + call void @finch_panic_index(ptr @.str.1189, i64 302, i64 %t700, i64 %t702) + unreachable +inrange2064: + %t704 = extractvalue { ptr, i64, i64 } %t701, 0 + %t705 = getelementptr inbounds %S.ast.Program, ptr %t704, i64 %t700 + %t706 = getelementptr inbounds %S.ast.Program, ptr %t705, i32 0, i32 0 + %t707 = load { ptr, i64, i64 }, ptr %t706 + store { ptr, i64, i64 } { ptr @.str.1186, i64 3, i64 0 }, ptr %a709 + store { ptr, i64, i64 } %t707, ptr %a710 + call void @finch_str_concat(ptr %a708, ptr %a709, ptr %a710) + %t711 = load { ptr, i64, i64 }, ptr %a708 + store { ptr, i64, i64 } %t711, ptr %a713 + store { ptr, i64, i64 } { ptr @.str.1190, i64 1, i64 0 }, ptr %a714 + call void @finch_str_concat(ptr %a712, ptr %a713, ptr %a714) + store { ptr, i64, i64 } %t711, ptr %a715 + call void @finch_str_drop(ptr %a715) + %t716 = load { ptr, i64, i64 }, ptr %a712 + %t717 = getelementptr inbounds %S.ast.Node, ptr %a662, i32 0, i32 1 + %t718 = load { ptr, i64, i64 }, ptr %t717 + store { ptr, i64, i64 } %t716, ptr %a720 + store { ptr, i64, i64 } %t718, ptr %a721 + call void @finch_str_concat(ptr %a719, ptr %a720, ptr %a721) + store { ptr, i64, i64 } %t716, ptr %a722 + call void @finch_str_drop(ptr %a722) + %t723 = load { ptr, i64, i64 }, ptr %a719 + store { ptr, i64, i64 } %t723, ptr %a725 + store { ptr, i64, i64 } { ptr @.str.1191, i64 1, i64 0 }, ptr %a726 + call void @finch_str_concat(ptr %a724, ptr %a725, ptr %a726) + store { ptr, i64, i64 } %t723, ptr %a727 + call void @finch_str_drop(ptr %a727) + %t728 = load { ptr, i64, i64 }, ptr %a724 + %t729 = load ptr, ptr %a1 + %t730 = icmp eq ptr %t729, null + br i1 %t730, label %panic2065, label %ok2066 +panic2065: + call void @finch_panic(ptr @.str.1192, i64 302, ptr @.str.1193) + unreachable +ok2066: + %t731 = getelementptr inbounds %S.gen.Gen, ptr %t729, i32 0, i32 1 + %t732 = getelementptr inbounds %S.ast.Node, ptr %a662, i32 0, i32 13 + %t733 = load i64, ptr %t732 + %t734 = load { ptr, i64, i64 }, ptr %t731 + %t735 = extractvalue { ptr, i64, i64 } %t734, 1 + %t736 = icmp uge i64 %t733, %t735 + br i1 %t736, label %range2067, label %inrange2068 +range2067: + call void @finch_panic_index(ptr @.str.1194, i64 302, i64 %t733, i64 %t735) + unreachable +inrange2068: + %t737 = extractvalue { ptr, i64, i64 } %t734, 0 + %t738 = getelementptr inbounds { ptr, i64, i64 }, ptr %t737, i64 %t733 + %t739 = load { ptr, i64, i64 }, ptr %t738 + store { ptr, i64, i64 } %t728, ptr %a741 + store { ptr, i64, i64 } %t739, ptr %a742 + call void @finch_str_concat(ptr %a740, ptr %a741, ptr %a742) + store { ptr, i64, i64 } %t728, ptr %a743 + call void @finch_str_drop(ptr %a743) + %t744 = load { ptr, i64, i64 }, ptr %a740 + store { ptr, i64, i64 } %t744, ptr %a746 + store { ptr, i64, i64 } { ptr @.str.1195, i64 1, i64 0 }, ptr %a747 + call void @finch_str_concat(ptr %a745, ptr %a746, ptr %a747) + store { ptr, i64, i64 } %t744, ptr %a748 + call void @finch_str_drop(ptr %a748) + %t749 = load { ptr, i64, i64 }, ptr %a745 + %t750 = getelementptr inbounds %S.ast.Node, ptr %a662, i32 0, i32 11 + %t751 = load i64, ptr %t750 + call void @finch_str_from_int(ptr %a752, i64 %t751) + %t753 = load { ptr, i64, i64 }, ptr %a752 + store { ptr, i64, i64 } %t749, ptr %a755 + store { ptr, i64, i64 } %t753, ptr %a756 + call void @finch_str_concat(ptr %a754, ptr %a755, ptr %a756) + store { ptr, i64, i64 } %t749, ptr %a757 + call void @finch_str_drop(ptr %a757) + store { ptr, i64, i64 } %t753, ptr %a758 + call void @finch_str_drop(ptr %a758) + %t759 = load { ptr, i64, i64 }, ptr %a754 + store { ptr, i64, i64 } %t759, ptr %a761 + store { ptr, i64, i64 } { ptr @.str.1196, i64 1, i64 0 }, ptr %a762 + call void @finch_str_concat(ptr %a760, ptr %a761, ptr %a762) + store { ptr, i64, i64 } %t759, ptr %a763 + call void @finch_str_drop(ptr %a763) + %t764 = load { ptr, i64, i64 }, ptr %a760 + %t765 = getelementptr inbounds %S.ast.Node, ptr %a662, i32 0, i32 12 + %t766 = load i64, ptr %t765 + call void @finch_str_from_int(ptr %a767, i64 %t766) + %t768 = load { ptr, i64, i64 }, ptr %a767 + store { ptr, i64, i64 } %t764, ptr %a770 + store { ptr, i64, i64 } %t768, ptr %a771 + call void @finch_str_concat(ptr %a769, ptr %a770, ptr %a771) + store { ptr, i64, i64 } %t764, ptr %a772 + call void @finch_str_drop(ptr %a772) + store { ptr, i64, i64 } %t768, ptr %a773 + call void @finch_str_drop(ptr %a773) + %t774 = load { ptr, i64, i64 }, ptr %a769 + store { ptr, i64, i64 } %t774, ptr %a776 + store { ptr, i64, i64 } { ptr @.str.1197, i64 1, i64 0 }, ptr %a777 + call void @finch_str_concat(ptr %a775, ptr %a776, ptr %a777) + store { ptr, i64, i64 } %t774, ptr %a778 + call void @finch_str_drop(ptr %a778) + %t779 = load { ptr, i64, i64 }, ptr %a775 + %t780 = load { ptr, i64, i64 }, ptr %a663 + store { ptr, i64, i64 } %t779, ptr %a782 + store { ptr, i64, i64 } %t780, ptr %a783 + call void @finch_str_concat(ptr %a781, ptr %a782, ptr %a783) + store { ptr, i64, i64 } %t779, ptr %a784 + call void @finch_str_drop(ptr %a784) + %t785 = load { ptr, i64, i64 }, ptr %a781 + %t786 = load i64, ptr %t696 + %t787 = add i64 %t786, 1 + call void @finch_arr_reserve(ptr %t695, i64 %t787, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t788 = load ptr, ptr %t695 + %t789 = getelementptr inbounds { ptr, i64, i64 }, ptr %t788, i64 %t786 + store { ptr, i64, i64 } %t785, ptr %t789 + store i64 %t787, ptr %t696 + call void @finch.drop.arr_str(ptr %a664) + call void @finch_str_drop(ptr %a663) + call void @finch.drop.S_ast_Node(ptr %a662) + br label %each.step2053 +each.step2053: + %t790 = load i64, ptr %a651 + %t791 = add i64 %t790, 1 + store i64 %t791, ptr %a651 + br label %each.cond2051 +each.end2054: + br label %for.step2045 +for.step2045: + %t792 = load i64, ptr %a638 + %t793 = add i64 %t792, 1 + store i64 %t793, ptr %a638 + br label %for.cond2043 +for.end2046: ret void } @@ -21024,161 +23664,191 @@ entry: %a3 = 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 + %a28 = alloca { ptr, i64, i64 }, align 16 %a41 = 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 + %a43 = alloca { ptr, i64, i64 }, align 16 + %a47 = 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 %a52 = 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 + %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 %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 + %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 + %a73 = 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 %a79 = alloca { ptr, i64, i64 }, align 16 + %a85 = alloca { ptr, i64, i64 }, align 16 + %a86 = alloca { ptr, i64, i64 }, align 16 + %a87 = alloca { ptr, i64, i64 }, align 16 + %a88 = alloca { ptr, i64, i64 }, align 16 + %a96 = 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 %panic2012, label %ok2013 -panic2012: - call void @finch_panic(ptr @.str.1193, i64 288, ptr @.str.1194) + br i1 %t5, label %panic2069, label %ok2070 +panic2069: + call void @finch_panic(ptr @.str.1198, i64 308, ptr @.str.1199) unreachable -ok2013: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 26 +ok2070: + %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 27 %t7 = load i1, ptr %t6 - br label %logic.from2014 -logic.from2014: - br i1 %t7, label %logic.rhs2015, label %logic.end2016 -logic.rhs2015: + br label %logic.from2071 +logic.from2071: + br i1 %t7, label %logic.rhs2072, label %logic.end2073 +logic.rhs2072: %t8 = load ptr, ptr %a1 %t9 = icmp eq ptr %t8, null - br i1 %t9, label %panic2017, label %ok2018 -panic2017: - call void @finch_panic(ptr @.str.1195, i64 288, ptr @.str.1196) + br i1 %t9, label %panic2074, label %ok2075 +panic2074: + call void @finch_panic(ptr @.str.1200, i64 308, ptr @.str.1201) unreachable -ok2018: - %t10 = getelementptr inbounds %S.gen.Gen, ptr %t8, i32 0, i32 27 +ok2075: + %t10 = getelementptr inbounds %S.gen.Gen, ptr %t8, i32 0, i32 28 %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.rend2019 -logic.rend2019: - br label %logic.end2016 -logic.end2016: - %t14 = phi i1 [ false, %logic.from2014 ], [ %t13, %logic.rend2019 ] - br i1 %t14, label %then2020, label %endif2022 -then2020: + br label %logic.rend2076 +logic.rend2076: + br label %logic.end2073 +logic.end2073: + %t14 = phi i1 [ false, %logic.from2071 ], [ %t13, %logic.rend2076 ] + br i1 %t14, label %then2077, label %endif2079 +then2077: %t15 = load ptr, ptr %a1 %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic2023, label %ok2024 -panic2023: - call void @finch_panic(ptr @.str.1197, i64 289, ptr @.str.1198) + br i1 %t16, label %panic2080, label %ok2081 +panic2080: + call void @finch_panic(ptr @.str.1202, i64 309, ptr @.str.1203) unreachable -ok2024: - %t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 27 +ok2081: + %t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 28 %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t17, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.1199, i64 1, i64 0 }, ptr %a19 + store { ptr, i64, i64 } { ptr @.str.1204, 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.1200, ptr %t24 - %t27 = call i32 (ptr, ...) @printf(ptr @.str.1201, i32 %t23, ptr %t26) - %t28 = call i32 (ptr, ...) @printf(ptr @.str.1202) - br label %endif2022 -endif2022: - %t29 = load ptr, ptr %a1 - %t30 = icmp eq ptr %t29, null - br i1 %t30, label %panic2025, label %ok2026 -panic2025: - call void @finch_panic(ptr @.str.1203, i64 291, ptr @.str.1204) + %t26 = select i1 %t25, ptr @.str.1205, ptr %t24 + %t27 = call i32 (ptr, ...) @printf(ptr @.str.1206, i32 %t23, ptr %t26) + store { ptr, i64, i64 } %t21, ptr %a28 + call void @finch_str_drop(ptr %a28) + %t29 = call i32 (ptr, ...) @printf(ptr @.str.1207) + br label %endif2079 +endif2079: + %t30 = load ptr, ptr %a1 + %t31 = icmp eq ptr %t30, null + br i1 %t31, label %panic2082, label %ok2083 +panic2082: + call void @finch_panic(ptr @.str.1208, i64 311, ptr @.str.1209) unreachable -ok2026: - %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 %range2027, label %inrange2028 -range2027: - call void @finch_panic_index(ptr @.str.1205, i64 291, i64 %t33, i64 %t35) +ok2083: + %t32 = getelementptr inbounds %S.gen.Gen, ptr %t30, i32 0, i32 1 + %t33 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 + %t34 = load i64, ptr %t33 + %t35 = load { ptr, i64, i64 }, ptr %t32 + %t36 = extractvalue { ptr, i64, i64 } %t35, 1 + %t37 = icmp uge i64 %t34, %t36 + br i1 %t37, label %range2084, label %inrange2085 +range2084: + call void @finch_panic_index(ptr @.str.1210, i64 311, i64 %t34, i64 %t36) unreachable -inrange2028: - %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.1206, 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.1207, 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 = 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.1208, i64 9, i64 0 }, ptr %a66 +inrange2085: + %t38 = extractvalue { ptr, i64, i64 } %t35, 0 + %t39 = getelementptr inbounds { ptr, i64, i64 }, ptr %t38, i64 %t34 + %t40 = load { ptr, i64, i64 }, ptr %t39 + store { ptr, i64, i64 } %t40, ptr %a42 + store { ptr, i64, i64 } { ptr @.str.1211, i64 1, 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 %a2, i32 0, i32 11 + %t46 = load i64, ptr %t45 + call void @finch_str_from_int(ptr %a47, i64 %t46) + %t48 = load { ptr, i64, i64 }, ptr %a47 + store { ptr, i64, i64 } %t44, ptr %a50 + store { ptr, i64, i64 } %t48, ptr %a51 + call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) + store { ptr, i64, i64 } %t44, ptr %a52 + call void @finch_str_drop(ptr %a52) + store { ptr, i64, i64 } %t48, ptr %a53 + call void @finch_str_drop(ptr %a53) + %t54 = load { ptr, i64, i64 }, ptr %a49 + store { ptr, i64, i64 } %t54, ptr %a56 + store { ptr, i64, i64 } { ptr @.str.1212, i64 1, i64 0 }, ptr %a57 + call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) + store { ptr, i64, i64 } %t54, ptr %a58 + call void @finch_str_drop(ptr %a58) + %t59 = load { ptr, i64, i64 }, ptr %a55 + %t60 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 + %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 } %t59, 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 - %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 %panic2029, label %ok2030 -panic2029: - call void @finch_panic(ptr @.str.1209, i64 291, ptr @.str.1210) + store { ptr, i64, i64 } %t59, ptr %a67 + call void @finch_str_drop(ptr %a67) + store { ptr, i64, i64 } %t63, ptr %a68 + call void @finch_str_drop(ptr %a68) + %t69 = load { ptr, i64, i64 }, ptr %a64 + store { ptr, i64, i64 } %t69, ptr %a71 + store { ptr, i64, i64 } { ptr @.str.1213, i64 9, i64 0 }, ptr %a72 + call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) + store { ptr, i64, i64 } %t69, ptr %a73 + call void @finch_str_drop(ptr %a73) + %t74 = load { ptr, i64, i64 }, ptr %a70 + %t75 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t74, ptr %a77 + store { ptr, i64, i64 } %t75, ptr %a78 + call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78) + store { ptr, i64, i64 } %t74, ptr %a79 + call void @finch_str_drop(ptr %a79) + %t80 = load { ptr, i64, i64 }, ptr %a76 + %t81 = load ptr, ptr %a1 + %t82 = icmp eq ptr %t81, null + br i1 %t82, label %panic2086, label %ok2087 +panic2086: + call void @finch_panic(ptr @.str.1214, i64 311, ptr @.str.1215) unreachable -ok2030: - %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.1211, ptr %t83 - %t86 = call i32 (ptr, ...) @printf(ptr @.str.1212, i32 %t82, ptr %t85) - %t87 = call i32 (ptr, ...) @printf(ptr @.str.1213) - %t88 = trunc i64 1 to i32 - %t89 = call i32 @fflush(ptr null) - call void @exit(i32 %t88) +ok2087: + %t83 = getelementptr inbounds %S.gen.Gen, ptr %t81, i32 0, i32 20 + %t84 = load { ptr, i64, i64 }, ptr %t83 + store { ptr, i64, i64 } %t80, ptr %a86 + store { ptr, i64, i64 } %t84, ptr %a87 + call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) + store { ptr, i64, i64 } %t80, ptr %a88 + call void @finch_str_drop(ptr %a88) + %t89 = load { ptr, i64, i64 }, ptr %a85 + %t90 = extractvalue { ptr, i64, i64 } %t89, 1 + %t91 = trunc i64 %t90 to i32 + %t92 = extractvalue { ptr, i64, i64 } %t89, 0 + %t93 = icmp eq ptr %t92, null + %t94 = select i1 %t93, ptr @.str.1216, ptr %t92 + %t95 = call i32 (ptr, ...) @printf(ptr @.str.1217, i32 %t91, ptr %t94) + store { ptr, i64, i64 } %t89, ptr %a96 + call void @finch_str_drop(ptr %a96) + %t97 = call i32 (ptr, ...) @printf(ptr @.str.1218) + %t98 = trunc i64 1 to i32 + %t99 = call i32 @fflush(ptr null) + call void @exit(i32 %t98) ret void } @@ -21195,97 +23865,106 @@ entry: %a24 = alloca { ptr, i64, i64 }, align 16 %a25 = alloca { ptr, i64, i64 }, align 16 %a26 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 + %a27 = 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 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = 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 + %a48 = alloca { ptr, i64, i64 }, align 16 + %a49 = alloca { ptr, i64, i64 }, align 16 + %a50 = 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 %panic2031, label %ok2032 -panic2031: - call void @finch_panic(ptr @.str.1214, i64 297, ptr @.str.1215) + br i1 %t4, label %panic2088, label %ok2089 +panic2088: + call void @finch_panic(ptr @.str.1219, i64 317, ptr @.str.1220) unreachable -ok2032: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 34 +ok2089: + %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 35 %t6 = load i64, ptr %t5 %t7 = icmp sge i64 %t6, 0 - br label %logic.from2033 -logic.from2033: - br i1 %t7, label %logic.rhs2034, label %logic.end2035 -logic.rhs2034: + br label %logic.from2090 +logic.from2090: + br i1 %t7, label %logic.rhs2091, label %logic.end2092 +logic.rhs2091: %t8 = load { ptr, i64, i64 }, ptr %a2 store { ptr, i64, i64 } %t8, ptr %a9 - store { ptr, i64, i64 } { ptr @.str.1217, i64 5, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.1222, 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.rend2036 -logic.rend2036: - br label %logic.end2035 -logic.end2035: - %t14 = phi i1 [ false, %logic.from2033 ], [ %t13, %logic.rend2036 ] - br i1 %t14, label %then2037, label %endif2039 -then2037: + br label %logic.rend2093 +logic.rend2093: + br label %logic.end2092 +logic.end2092: + %t14 = phi i1 [ false, %logic.from2090 ], [ %t13, %logic.rend2093 ] + br i1 %t14, label %then2094, label %endif2096 +then2094: %t15 = load ptr, ptr %a1 %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic2040, label %ok2041 -panic2040: - call void @finch_panic(ptr @.str.1218, i64 298, ptr @.str.1219) + br i1 %t16, label %panic2097, label %ok2098 +panic2097: + call void @finch_panic(ptr @.str.1223, i64 318, ptr @.str.1224) unreachable -ok2041: +ok2098: %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.1220, i64 2, i64 0 }, ptr %a21 + store { ptr, i64, i64 } { ptr @.str.1225, 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.1221, i64 8, i64 0 }, ptr %a26 + store { ptr, i64, i64 } { ptr @.str.1226, 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 - %t29 = call i64 @finch.gen.dbgLocation(ptr %t28) - call void @finch_str_from_int(ptr %a30, i64 %t29) - %t31 = load { ptr, i64, i64 }, ptr %a30 - store { ptr, i64, i64 } %t27, 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 - %t36 = load i64, ptr %t18 - %t37 = add i64 %t36, 1 - call void @finch_arr_reserve(ptr %t17, i64 %t37, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t38 = load ptr, ptr %t17 - %t39 = getelementptr inbounds { ptr, i64, i64 }, ptr %t38, i64 %t36 - store { ptr, i64, i64 } %t35, ptr %t39 - store i64 %t37, ptr %t18 + store { ptr, i64, i64 } %t23, ptr %a27 + call void @finch_str_drop(ptr %a27) + %t28 = load { ptr, i64, i64 }, ptr %a24 + %t29 = load ptr, ptr %a1 + %t30 = call i64 @finch.gen.dbgLocation(ptr %t29) + call void @finch_str_from_int(ptr %a31, i64 %t30) + %t32 = load { ptr, i64, i64 }, ptr %a31 + store { ptr, i64, i64 } %t28, ptr %a34 + store { ptr, i64, i64 } %t32, ptr %a35 + call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) + store { ptr, i64, i64 } %t28, ptr %a36 + call void @finch_str_drop(ptr %a36) + store { ptr, i64, i64 } %t32, ptr %a37 + call void @finch_str_drop(ptr %a37) + %t38 = load { ptr, i64, i64 }, ptr %a33 + %t39 = load i64, ptr %t18 + %t40 = add i64 %t39, 1 + call void @finch_arr_reserve(ptr %t17, i64 %t40, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t41 = load ptr, ptr %t17 + %t42 = getelementptr inbounds { ptr, i64, i64 }, ptr %t41, i64 %t39 + store { ptr, i64, i64 } %t38, ptr %t42 + store i64 %t40, ptr %t18 ret void -endif2039: - %t40 = load ptr, ptr %a1 - %t41 = icmp eq ptr %t40, null - br i1 %t41, label %panic2042, label %ok2043 -panic2042: - call void @finch_panic(ptr @.str.1222, i64 301, ptr @.str.1223) +endif2096: + %t43 = load ptr, ptr %a1 + %t44 = icmp eq ptr %t43, null + br i1 %t44, label %panic2099, label %ok2100 +panic2099: + call void @finch_panic(ptr @.str.1227, i64 321, ptr @.str.1228) unreachable -ok2043: - %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.1224, 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 - %t49 = load i64, ptr %t43 - %t50 = add i64 %t49, 1 - call void @finch_arr_reserve(ptr %t42, i64 %t50, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t51 = load ptr, ptr %t42 - %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %t51, i64 %t49 - store { ptr, i64, i64 } %t48, ptr %t52 - store i64 %t50, ptr %t43 +ok2100: + %t45 = getelementptr inbounds %S.gen.Gen, ptr %t43, i32 0, i32 4 + %t46 = getelementptr inbounds { ptr, i64, i64 }, ptr %t45, i32 0, i32 1 + %t47 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } { ptr @.str.1229, i64 2, 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 + %t52 = load i64, ptr %t46 + %t53 = add i64 %t52, 1 + call void @finch_arr_reserve(ptr %t45, i64 %t53, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t54 = load ptr, ptr %t45 + %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %t54, i64 %t52 + store { ptr, i64, i64 } %t51, ptr %t55 + store i64 %t53, ptr %t46 ret void } @@ -21296,34 +23975,37 @@ entry: %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 %p0, ptr %a1 %t2 = load ptr, ptr %a1 %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic2044, label %ok2045 -panic2044: - call void @finch_panic(ptr @.str.1225, i64 305, ptr @.str.1226) + br i1 %t3, label %panic2101, label %ok2102 +panic2101: + call void @finch_panic(ptr @.str.1230, i64 325, ptr @.str.1231) unreachable -ok2045: +ok2102: %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 %panic2046, label %ok2047 -panic2046: - call void @finch_panic(ptr @.str.1228, i64 306, ptr @.str.1229) + br i1 %t8, label %panic2103, label %ok2104 +panic2103: + call void @finch_panic(ptr @.str.1233, i64 326, ptr @.str.1234) unreachable -ok2047: +ok2104: %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.1227, i64 2, i64 0 }, ptr %a14 + store { ptr, i64, i64 } { ptr @.str.1232, 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 - ret { ptr, i64, i64 } %t16 + store { ptr, i64, i64 } %t12, ptr %a16 + call void @finch_str_drop(ptr %a16) + %t17 = load { ptr, i64, i64 }, ptr %a13 + ret { ptr, i64, i64 } %t17 } define internal { ptr, i64, i64 } @finch.gen.newLabel(ptr %p0, { ptr, i64, i64 } %p1) { @@ -21334,15 +24016,16 @@ entry: %a15 = 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 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 %panic2048, label %ok2049 -panic2048: - call void @finch_panic(ptr @.str.1230, i64 310, ptr @.str.1231) + br i1 %t4, label %panic2105, label %ok2106 +panic2105: + call void @finch_panic(ptr @.str.1235, i64 330, ptr @.str.1236) unreachable -ok2049: +ok2106: %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 7 %t6 = load i64, ptr %t5 %t7 = add i64 %t6, 1 @@ -21350,11 +24033,11 @@ ok2049: %t8 = load { ptr, i64, i64 }, ptr %a2 %t9 = load ptr, ptr %a1 %t10 = icmp eq ptr %t9, null - br i1 %t10, label %panic2050, label %ok2051 -panic2050: - call void @finch_panic(ptr @.str.1232, i64 311, ptr @.str.1233) + br i1 %t10, label %panic2107, label %ok2108 +panic2107: + call void @finch_panic(ptr @.str.1237, i64 331, ptr @.str.1238) unreachable -ok2051: +ok2108: %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) @@ -21362,8 +24045,10 @@ ok2051: store { ptr, i64, i64 } %t8, 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 - ret { ptr, i64, i64 } %t18 + store { ptr, i64, i64 } %t14, ptr %a18 + call void @finch_str_drop(ptr %a18) + %t19 = load { ptr, i64, i64 }, ptr %a15 + ret { ptr, i64, i64 } %t19 } define internal void @finch.gen.label(ptr %p0, { ptr, i64, i64 } %p1) { @@ -21377,16 +24062,16 @@ entry: store { ptr, i64, i64 } %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic2052, label %ok2053 -panic2052: - call void @finch_panic(ptr @.str.1234, i64 315, ptr @.str.1235) + br i1 %t4, label %panic2109, label %ok2110 +panic2109: + call void @finch_panic(ptr @.str.1239, i64 335, ptr @.str.1240) unreachable -ok2053: +ok2110: %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.1236, i64 1, i64 0 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.1241, 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 @@ -21398,11 +24083,11 @@ ok2053: store i64 %t13, ptr %t6 %t16 = load ptr, ptr %a1 %t17 = icmp eq ptr %t16, null - br i1 %t17, label %panic2054, label %ok2055 -panic2054: - call void @finch_panic(ptr @.str.1237, i64 316, ptr @.str.1238) + br i1 %t17, label %panic2111, label %ok2112 +panic2111: + call void @finch_panic(ptr @.str.1242, i64 336, ptr @.str.1243) unreachable -ok2055: +ok2112: %t18 = getelementptr inbounds %S.gen.Gen, ptr %t16, i32 0, i32 9 store i1 false, ptr %t18 ret void @@ -21415,38 +24100,41 @@ entry: %a10 = alloca { ptr, i64, i64 }, align 16 %a11 = alloca { ptr, i64, i64 }, align 16 %a12 = alloca { ptr, i64, i64 }, align 16 + %a14 = 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 %panic2056, label %ok2057 -panic2056: - call void @finch_panic(ptr @.str.1239, i64 320, ptr @.str.1240) + br i1 %t4, label %panic2113, label %ok2114 +panic2113: + call void @finch_panic(ptr @.str.1244, i64 340, ptr @.str.1245) unreachable -ok2057: +ok2114: %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 %then2058, label %endif2060 -then2058: + br i1 %t7, label %then2115, label %endif2117 +then2115: %t8 = load ptr, ptr %a1 %t9 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1241, i64 10, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.1246, 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 %panic2061, label %ok2062 -panic2061: - call void @finch_panic(ptr @.str.1242, i64 322, ptr @.str.1243) + store { ptr, i64, i64 } %t13, ptr %a14 + call void @finch_str_drop(ptr %a14) + %t15 = load ptr, ptr %a1 + %t16 = icmp eq ptr %t15, null + br i1 %t16, label %panic2118, label %ok2119 +panic2118: + call void @finch_panic(ptr @.str.1247, i64 342, ptr @.str.1248) unreachable -ok2062: - %t16 = getelementptr inbounds %S.gen.Gen, ptr %t14, i32 0, i32 9 - store i1 true, ptr %t16 - br label %endif2060 -endif2060: +ok2119: + %t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 9 + store i1 true, ptr %t17 + br label %endif2117 +endif2117: ret void } @@ -21462,53 +24150,68 @@ entry: %a11 = alloca { ptr, i64, i64 }, align 16 %a12 = alloca { ptr, i64, i64 }, align 16 %a13 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 + %a14 = 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 %a20 = 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 + %a24 = alloca { ptr, i64, i64 }, align 16 %a25 = 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 + %a30 = alloca { ptr, i64, i64 }, align 16 + %a31 = alloca { ptr, i64, i64 }, align 16 + %a33 = 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 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.1244, i64 6, i64 0 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.1249, 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.1245, i64 9, i64 0 }, ptr %a13 + store { ptr, i64, i64 } { ptr @.str.1250, 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 - store { ptr, i64, i64 } %t14, ptr %a17 + store { ptr, i64, i64 } %t10, ptr %a14 + call void @finch_str_drop(ptr %a14) + %t15 = load { ptr, i64, i64 }, ptr %a11 + %t16 = load { ptr, i64, i64 }, ptr %a3 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.1246, 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 - store { ptr, i64, i64 } %t23, 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 - 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 %panic2063, label %ok2064 -panic2063: - call void @finch_panic(ptr @.str.1247, i64 328, ptr @.str.1248) + store { ptr, i64, i64 } %t16, ptr %a19 + call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) + store { ptr, i64, i64 } %t15, ptr %a20 + call void @finch_str_drop(ptr %a20) + %t21 = load { ptr, i64, i64 }, ptr %a17 + store { ptr, i64, i64 } %t21, ptr %a23 + store { ptr, i64, i64 } { ptr @.str.1251, i64 9, i64 0 }, ptr %a24 + call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) + store { ptr, i64, i64 } %t21, ptr %a25 + call void @finch_str_drop(ptr %a25) + %t26 = load { ptr, i64, i64 }, ptr %a22 + %t27 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t26, ptr %a29 + store { ptr, i64, i64 } %t27, ptr %a30 + call void @finch_str_concat(ptr %a28, ptr %a29, ptr %a30) + store { ptr, i64, i64 } %t26, ptr %a31 + call void @finch_str_drop(ptr %a31) + %t32 = load { ptr, i64, i64 }, ptr %a28 + call void @finch.gen.emit(ptr %t5, { ptr, i64, i64 } %t32) + store { ptr, i64, i64 } %t32, ptr %a33 + call void @finch_str_drop(ptr %a33) + %t34 = load ptr, ptr %a1 + %t35 = icmp eq ptr %t34, null + br i1 %t35, label %panic2120, label %ok2121 +panic2120: + call void @finch_panic(ptr @.str.1252, i64 348, ptr @.str.1253) unreachable -ok2064: - %t31 = getelementptr inbounds %S.gen.Gen, ptr %t29, i32 0, i32 9 - store i1 true, ptr %t31 +ok2121: + %t36 = getelementptr inbounds %S.gen.Gen, ptr %t34, i32 0, i32 9 + store i1 true, ptr %t36 ret void } @@ -21520,89 +24223,96 @@ entry: %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 - %a24 = alloca { ptr, i64, i64 }, align 16 + %a17 = alloca { ptr, i64, i64 }, align 16 + %a19 = 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 + %a27 = alloca { ptr, i64, i64 }, align 16 %a29 = alloca { ptr, i64, i64 }, align 16 %a30 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 + %a31 = alloca { ptr, i64, i64 }, align 16 + %a32 = 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 %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = 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 + %a43 = 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 %panic2065, label %ok2066 -panic2065: - call void @finch_panic(ptr @.str.1249, i64 332, ptr @.str.1250) + br i1 %t4, label %panic2122, label %ok2123 +panic2122: + call void @finch_panic(ptr @.str.1254, i64 352, ptr @.str.1255) unreachable -ok2066: +ok2123: %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 %panic2067, label %ok2068 -panic2067: - call void @finch_panic(ptr @.str.1252, i64 333, ptr @.str.1253) + br i1 %t9, label %panic2124, label %ok2125 +panic2124: + call void @finch_panic(ptr @.str.1257, i64 353, ptr @.str.1258) unreachable -ok2068: +ok2125: %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.1251, i64 2, i64 0 }, ptr %a15 + store { ptr, i64, i64 } { ptr @.str.1256, 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 %panic2069, label %ok2070 -panic2069: - call void @finch_panic(ptr @.str.1254, i64 334, ptr @.str.1255) + store { ptr, i64, i64 } %t13, ptr %a17 + call void @finch_str_drop(ptr %a17) + %t18 = load { ptr, i64, i64 }, ptr %a14 + store { ptr, i64, i64 } %t18, ptr %a19 + %t20 = load ptr, ptr %a1 + %t21 = icmp eq ptr %t20, null + br i1 %t21, label %panic2126, label %ok2127 +panic2126: + call void @finch_panic(ptr @.str.1259, i64 354, ptr @.str.1260) unreachable -ok2070: - %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.1256, 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.1257, 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 - store { ptr, i64, i64 } %t31, ptr %a34 - store { ptr, i64, i64 } %t32, 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 %a38 - store { ptr, i64, i64 } { ptr @.str.1258, 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 - %t42 = add i64 %t41, 1 - call void @finch_arr_reserve(ptr %t21, i64 %t42, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t43 = load ptr, ptr %t21 - %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t43, i64 %t41 - store { ptr, i64, i64 } %t40, ptr %t44 - store i64 %t42, ptr %t22 - %t45 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t45, ptr %a46 - call void @finch_str_copy(ptr %a47, ptr %a46) - %t48 = load { ptr, i64, i64 }, ptr %a47 - ret { ptr, i64, i64 } %t48 +ok2127: + %t22 = getelementptr inbounds %S.gen.Gen, ptr %t20, i32 0, i32 5 + %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t22, i32 0, i32 1 + %t24 = load { ptr, i64, i64 }, ptr %a19 + store { ptr, i64, i64 } { ptr @.str.1261, i64 2, 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.1262, i64 10, i64 0 }, ptr %a31 + call void @finch_str_concat(ptr %a29, ptr %a30, ptr %a31) + store { ptr, i64, i64 } %t28, ptr %a32 + call void @finch_str_drop(ptr %a32) + %t33 = load { ptr, i64, i64 }, ptr %a29 + %t34 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t33, ptr %a36 + store { ptr, i64, i64 } %t34, ptr %a37 + call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) + store { ptr, i64, i64 } %t33, ptr %a38 + call void @finch_str_drop(ptr %a38) + %t39 = load { ptr, i64, i64 }, ptr %a35 + store { ptr, i64, i64 } %t39, ptr %a41 + store { ptr, i64, i64 } { ptr @.str.1263, i64 10, i64 0 }, ptr %a42 + call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) + store { ptr, i64, i64 } %t39, ptr %a43 + call void @finch_str_drop(ptr %a43) + %t44 = load { ptr, i64, i64 }, ptr %a40 + %t45 = load i64, ptr %t23 + %t46 = add i64 %t45, 1 + call void @finch_arr_reserve(ptr %t22, i64 %t46, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t47 = load ptr, ptr %t22 + %t48 = getelementptr inbounds { ptr, i64, i64 }, ptr %t47, i64 %t45 + store { ptr, i64, i64 } %t44, ptr %t48 + store i64 %t46, ptr %t23 + %t49 = load { ptr, i64, i64 }, ptr %a19 + ret { ptr, i64, i64 } %t49 } define internal { ptr, i64, i64 } @finch.gen.load(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2) { @@ -21617,14 +24327,16 @@ entry: %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 + %a17 = alloca { ptr, i64, i64 }, align 16 %a19 = alloca { ptr, i64, i64 }, align 16 %a20 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 + %a21 = alloca { ptr, i64, i64 }, align 16 + %a22 = alloca { ptr, i64, i64 }, align 16 %a25 = 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 + %a30 = 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 @@ -21634,29 +24346,34 @@ 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.1259, i64 8, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.1264, 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 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 %a19 - store { ptr, i64, i64 } { ptr @.str.1260, 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 - store { ptr, i64, i64 } %t21, 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 - call void @finch.gen.emit(ptr %t7, { ptr, i64, i64 } %t26) - %t27 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t27, ptr %a28 - call void @finch_str_copy(ptr %a29, ptr %a28) - %t30 = load { ptr, i64, i64 }, ptr %a29 - ret { ptr, i64, i64 } %t30 + store { ptr, i64, i64 } %t12, ptr %a17 + call void @finch_str_drop(ptr %a17) + %t18 = load { ptr, i64, i64 }, ptr %a14 + store { ptr, i64, i64 } %t18, ptr %a20 + store { ptr, i64, i64 } { ptr @.str.1265, i64 6, i64 0 }, ptr %a21 + call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) + store { ptr, i64, i64 } %t18, ptr %a22 + call void @finch_str_drop(ptr %a22) + %t23 = load { ptr, i64, i64 }, ptr %a19 + %t24 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t23, ptr %a26 + store { ptr, i64, i64 } %t24, ptr %a27 + call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) + store { ptr, i64, i64 } %t23, ptr %a28 + call void @finch_str_drop(ptr %a28) + %t29 = load { ptr, i64, i64 }, ptr %a25 + call void @finch.gen.emit(ptr %t7, { ptr, i64, i64 } %t29) + store { ptr, i64, i64 } %t29, ptr %a30 + call void @finch_str_drop(ptr %a30) + %t31 = load { ptr, i64, i64 }, ptr %a6 + ret { ptr, i64, i64 } %t31 } define internal void @finch.gen.store(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, { ptr, i64, i64 } %p3) { @@ -21671,44 +24388,59 @@ entry: %a11 = alloca { ptr, i64, i64 }, align 16 %a12 = alloca { ptr, i64, i64 }, align 16 %a13 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 + %a14 = 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 %a20 = 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 + %a24 = alloca { ptr, i64, i64 }, align 16 %a25 = 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 + %a30 = alloca { ptr, i64, i64 }, align 16 + %a31 = alloca { ptr, i64, i64 }, align 16 + %a33 = 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 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.1261, i64 6, i64 0 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.1266, 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.1262, i64 1, i64 0 }, ptr %a13 + store { ptr, i64, i64 } { ptr @.str.1267, 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 - store { ptr, i64, i64 } %t14, ptr %a17 + store { ptr, i64, i64 } %t10, ptr %a14 + call void @finch_str_drop(ptr %a14) + %t15 = load { ptr, i64, i64 }, ptr %a11 + %t16 = load { ptr, i64, i64 }, ptr %a3 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.1263, 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 - store { ptr, i64, i64 } %t23, 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 - call void @finch.gen.emit(ptr %t5, { ptr, i64, i64 } %t28) + store { ptr, i64, i64 } %t16, ptr %a19 + call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) + store { ptr, i64, i64 } %t15, ptr %a20 + call void @finch_str_drop(ptr %a20) + %t21 = load { ptr, i64, i64 }, ptr %a17 + store { ptr, i64, i64 } %t21, ptr %a23 + store { ptr, i64, i64 } { ptr @.str.1268, i64 6, i64 0 }, ptr %a24 + call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) + store { ptr, i64, i64 } %t21, ptr %a25 + call void @finch_str_drop(ptr %a25) + %t26 = load { ptr, i64, i64 }, ptr %a22 + %t27 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t26, ptr %a29 + store { ptr, i64, i64 } %t27, ptr %a30 + call void @finch_str_concat(ptr %a28, ptr %a29, ptr %a30) + store { ptr, i64, i64 } %t26, ptr %a31 + call void @finch_str_drop(ptr %a31) + %t32 = load { ptr, i64, i64 }, ptr %a28 + call void @finch.gen.emit(ptr %t5, { ptr, i64, i64 } %t32) + store { ptr, i64, i64 } %t32, ptr %a33 + call void @finch_str_drop(ptr %a33) ret void } @@ -21717,8 +24449,8 @@ entry: %a1 = alloca ptr, align 16 %a2 = alloca %S.gen.Val, align 16 %a9 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca { ptr, i64, i64 }, align 16 %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store %S.gen.Val %p1, ptr %a2 %t3 = load ptr, ptr %a1 @@ -21727,21 +24459,22 @@ entry: %t6 = load %S.ast.Type, ptr %t5 %t7 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t4, %S.ast.Type %t6) %t8 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t3, { ptr, i64, i64 } %t7) - store { ptr, i64, i64 } %t8, ptr %a9 - %t10 = load ptr, ptr %a1 + store { ptr, i64, i64 } %t7, ptr %a9 + call void @finch_str_drop(ptr %a9) + store { ptr, i64, i64 } %t8, ptr %a10 %t11 = load ptr, ptr %a1 - %t12 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t13 = load %S.ast.Type, ptr %t12 - %t14 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t11, %S.ast.Type %t13) - %t15 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t16 = load { ptr, i64, i64 }, ptr %t15 - %t17 = load { ptr, i64, i64 }, ptr %a9 - call void @finch.gen.store(ptr %t10, { ptr, i64, i64 } %t14, { ptr, i64, i64 } %t16, { ptr, i64, i64 } %t17) - %t18 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t18, ptr %a19 - call void @finch_str_copy(ptr %a20, ptr %a19) - %t21 = load { ptr, i64, i64 }, ptr %a20 - ret { ptr, i64, i64 } %t21 + %t12 = load ptr, ptr %a1 + %t13 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 + %t14 = load %S.ast.Type, ptr %t13 + %t15 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t12, %S.ast.Type %t14) + %t16 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 + %t17 = load { ptr, i64, i64 }, ptr %t16 + %t18 = load { ptr, i64, i64 }, ptr %a10 + call void @finch.gen.store(ptr %t11, { ptr, i64, i64 } %t15, { ptr, i64, i64 } %t17, { ptr, i64, i64 } %t18) + store { ptr, i64, i64 } %t15, ptr %a19 + call void @finch_str_drop(ptr %a19) + %t20 = load { ptr, i64, i64 }, ptr %a10 + ret { ptr, i64, i64 } %t20 } define internal { ptr, i64, i64 } @finch.gen.op(ptr %p0, { ptr, i64, i64 } %p1) { @@ -21755,8 +24488,8 @@ entry: %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 %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store { ptr, i64, i64 } %p1, ptr %a2 %t3 = load ptr, ptr %a1 @@ -21765,20 +24498,21 @@ 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.1264, i64 3, i64 0 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.1269, 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 store { ptr, i64, i64 } %t11, 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 - call void @finch.gen.emit(ptr %t6, { ptr, i64, i64 } %t16) - %t17 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } %t11, ptr %a16 + call void @finch_str_drop(ptr %a16) + %t17 = load { ptr, i64, i64 }, ptr %a13 + call void @finch.gen.emit(ptr %t6, { ptr, i64, i64 } %t17) store { ptr, i64, i64 } %t17, ptr %a18 - call void @finch_str_copy(ptr %a19, ptr %a18) - %t20 = load { ptr, i64, i64 }, ptr %a19 - ret { ptr, i64, i64 } %t20 + call void @finch_str_drop(ptr %a18) + %t19 = load { ptr, i64, i64 }, ptr %a5 + ret { ptr, i64, i64 } %t19 } define internal i1 @finch.gen.has({ ptr, i64, i64 } %p0, { ptr, i64, i64 } %p1) { @@ -21797,27 +24531,27 @@ entry: %t6 = load i64, ptr %t3 %t7 = load ptr, ptr %a1 store i64 0, ptr %a8 - br label %find.cond2071 -find.cond2071: + br label %find.cond2128 +find.cond2128: %t9 = load i64, ptr %a8 %t10 = icmp slt i64 %t9, %t6 - br i1 %t10, label %find.body2072, label %find.end2075 -find.body2072: + br i1 %t10, label %find.body2129, label %find.end2132 +find.body2129: %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.hit2073, label %find.next2074 -find.hit2073: + br i1 %t16, label %find.hit2130, label %find.next2131 +find.hit2130: store i64 %t9, ptr %a5 - br label %find.end2075 -find.next2074: + br label %find.end2132 +find.next2131: %t17 = add i64 %t9, 1 store i64 %t17, ptr %a8 - br label %find.cond2071 -find.end2075: + br label %find.cond2128 +find.end2132: %t18 = load i64, ptr %a5 %t19 = icmp sge i64 %t18, 0 ret i1 %t19 @@ -21855,51 +24589,52 @@ 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.1265, i64 3, i64 0 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.1270, 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.from2076 -logic.from2076: - br i1 %t12, label %logic.end2078, label %logic.rhs2077 -logic.rhs2077: + br label %logic.from2133 +logic.from2133: + br i1 %t12, label %logic.end2135, label %logic.rhs2134 +logic.rhs2134: %t13 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t13, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.1266, i64 2, i64 0 }, ptr %a15 + store { ptr, i64, i64 } { ptr @.str.1271, 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.rend2079 -logic.rend2079: - br label %logic.end2078 -logic.end2078: - %t18 = phi i1 [ true, %logic.from2076 ], [ %t17, %logic.rend2079 ] - br label %logic.from2080 -logic.from2080: - br i1 %t18, label %logic.end2082, label %logic.rhs2081 -logic.rhs2081: + br label %logic.rend2136 +logic.rend2136: + br label %logic.end2135 +logic.end2135: + %t18 = phi i1 [ true, %logic.from2133 ], [ %t17, %logic.rend2136 ] + br label %logic.from2137 +logic.from2137: + br i1 %t18, label %logic.end2139, label %logic.rhs2138 +logic.rhs2138: %t19 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t19, ptr %a20 - store { ptr, i64, i64 } { ptr @.str.1267, i64 3, i64 0 }, ptr %a21 + store { ptr, i64, i64 } { ptr @.str.1272, 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.rend2083 -logic.rend2083: - br label %logic.end2082 -logic.end2082: - %t24 = phi i1 [ true, %logic.from2080 ], [ %t23, %logic.rend2083 ] - br label %logic.from2084 -logic.from2084: - br i1 %t24, label %logic.end2086, label %logic.rhs2085 -logic.rhs2085: + br label %logic.rend2140 +logic.rend2140: + br label %logic.end2139 +logic.end2139: + %t24 = phi i1 [ true, %logic.from2137 ], [ %t23, %logic.rend2140 ] + br label %logic.from2141 +logic.from2141: + br i1 %t24, label %logic.end2143, label %logic.rhs2142 +logic.rhs2142: %t25 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t25, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.1268, i64 3, i64 0 }, ptr %a27 + store { ptr, i64, i64 } { ptr @.str.1273, 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.rend2087 -logic.rend2087: - br label %logic.end2086 -logic.end2086: - %t30 = phi i1 [ true, %logic.from2084 ], [ %t29, %logic.rend2087 ] + br label %logic.rend2144 +logic.rend2144: + br label %logic.end2143 +logic.end2143: + %t30 = phi i1 [ true, %logic.from2141 ], [ %t29, %logic.rend2144 ] + call void @finch_str_drop(ptr %a7) ret i1 %t30 } @@ -21926,51 +24661,52 @@ 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.1269, i64 2, i64 0 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.1274, 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.from2088 -logic.from2088: - br i1 %t12, label %logic.end2090, label %logic.rhs2089 -logic.rhs2089: + br label %logic.from2145 +logic.from2145: + br i1 %t12, label %logic.end2147, label %logic.rhs2146 +logic.rhs2146: %t13 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t13, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.1270, i64 3, i64 0 }, ptr %a15 + store { ptr, i64, i64 } { ptr @.str.1275, 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.rend2091 -logic.rend2091: - br label %logic.end2090 -logic.end2090: - %t18 = phi i1 [ true, %logic.from2088 ], [ %t17, %logic.rend2091 ] - br label %logic.from2092 -logic.from2092: - br i1 %t18, label %logic.end2094, label %logic.rhs2093 -logic.rhs2093: + br label %logic.rend2148 +logic.rend2148: + br label %logic.end2147 +logic.end2147: + %t18 = phi i1 [ true, %logic.from2145 ], [ %t17, %logic.rend2148 ] + br label %logic.from2149 +logic.from2149: + br i1 %t18, label %logic.end2151, label %logic.rhs2150 +logic.rhs2150: %t19 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t19, ptr %a20 - store { ptr, i64, i64 } { ptr @.str.1271, i64 3, i64 0 }, ptr %a21 + store { ptr, i64, i64 } { ptr @.str.1276, 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.rend2095 -logic.rend2095: - br label %logic.end2094 -logic.end2094: - %t24 = phi i1 [ true, %logic.from2092 ], [ %t23, %logic.rend2095 ] - br label %logic.from2096 -logic.from2096: - br i1 %t24, label %logic.end2098, label %logic.rhs2097 -logic.rhs2097: + br label %logic.rend2152 +logic.rend2152: + br label %logic.end2151 +logic.end2151: + %t24 = phi i1 [ true, %logic.from2149 ], [ %t23, %logic.rend2152 ] + br label %logic.from2153 +logic.from2153: + br i1 %t24, label %logic.end2155, label %logic.rhs2154 +logic.rhs2154: %t25 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t25, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.1272, i64 3, i64 0 }, ptr %a27 + store { ptr, i64, i64 } { ptr @.str.1277, 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.rend2099 -logic.rend2099: - br label %logic.end2098 -logic.end2098: - %t30 = phi i1 [ true, %logic.from2096 ], [ %t29, %logic.rend2099 ] + br label %logic.rend2156 +logic.rend2156: + br label %logic.end2155 +logic.end2155: + %t30 = phi i1 [ true, %logic.from2153 ], [ %t29, %logic.rend2156 ] + call void @finch_str_drop(ptr %a7) ret i1 %t30 } @@ -21980,17 +24716,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.from2100 -logic.from2100: - br i1 %t3, label %logic.end2102, label %logic.rhs2101 -logic.rhs2101: + br label %logic.from2157 +logic.from2157: + br i1 %t3, label %logic.end2159, label %logic.rhs2158 +logic.rhs2158: %t4 = load %S.ast.Type, ptr %a1 %t5 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t4) - br label %logic.rend2103 -logic.rend2103: - br label %logic.end2102 -logic.end2102: - %t6 = phi i1 [ true, %logic.from2100 ], [ %t5, %logic.rend2103 ] + br label %logic.rend2160 +logic.rend2160: + br label %logic.end2159 +logic.end2159: + %t6 = phi i1 [ true, %logic.from2157 ], [ %t5, %logic.rend2160 ] ret i1 %t6 } @@ -22005,24 +24741,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.1273, i64 5, i64 0 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.1278, 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.from2104 -logic.from2104: - br i1 %t7, label %logic.end2106, label %logic.rhs2105 -logic.rhs2105: + br label %logic.from2161 +logic.from2161: + br i1 %t7, label %logic.end2163, label %logic.rhs2162 +logic.rhs2162: %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.1274, i64 3, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.1279, 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.rend2107 -logic.rend2107: - br label %logic.end2106 -logic.end2106: - %t14 = phi i1 [ true, %logic.from2104 ], [ %t13, %logic.rend2107 ] + br label %logic.rend2164 +logic.rend2164: + br label %logic.end2163 +logic.end2163: + %t14 = phi i1 [ true, %logic.from2161 ], [ %t13, %logic.rend2164 ] ret i1 %t14 } @@ -22032,17 +24768,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.from2108 -logic.from2108: - br i1 %t3, label %logic.end2110, label %logic.rhs2109 -logic.rhs2109: + br label %logic.from2165 +logic.from2165: + br i1 %t3, label %logic.end2167, label %logic.rhs2166 +logic.rhs2166: %t4 = load %S.ast.Type, ptr %a1 %t5 = call i1 @finch.gen.isFloat(%S.ast.Type %t4) - br label %logic.rend2111 -logic.rend2111: - br label %logic.end2110 -logic.end2110: - %t6 = phi i1 [ true, %logic.from2108 ], [ %t5, %logic.rend2111 ] + br label %logic.rend2168 +logic.rend2168: + br label %logic.end2167 +logic.end2167: + %t6 = phi i1 [ true, %logic.from2165 ], [ %t5, %logic.rend2168 ] ret i1 %t6 } @@ -22079,110 +24815,115 @@ 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.1275, i64 4, i64 0 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.1280, 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 %then2112, label %endif2114 -then2112: + br i1 %t12, label %then2169, label %endif2171 +then2169: + call void @finch_str_drop(ptr %a7) ret i64 1 -endif2114: +endif2171: %t13 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t13, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.1276, i64 4, i64 0 }, ptr %a15 + store { ptr, i64, i64 } { ptr @.str.1281, 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.from2115 -logic.from2115: - br i1 %t17, label %logic.end2117, label %logic.rhs2116 -logic.rhs2116: + br label %logic.from2172 +logic.from2172: + br i1 %t17, label %logic.end2174, label %logic.rhs2173 +logic.rhs2173: %t18 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t18, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.1277, i64 2, i64 0 }, ptr %a20 + store { ptr, i64, i64 } { ptr @.str.1282, 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.rend2118 -logic.rend2118: - br label %logic.end2117 -logic.end2117: - %t23 = phi i1 [ true, %logic.from2115 ], [ %t22, %logic.rend2118 ] - br label %logic.from2119 -logic.from2119: - br i1 %t23, label %logic.end2121, label %logic.rhs2120 -logic.rhs2120: + br label %logic.rend2175 +logic.rend2175: + br label %logic.end2174 +logic.end2174: + %t23 = phi i1 [ true, %logic.from2172 ], [ %t22, %logic.rend2175 ] + br label %logic.from2176 +logic.from2176: + br i1 %t23, label %logic.end2178, label %logic.rhs2177 +logic.rhs2177: %t24 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t24, ptr %a25 - store { ptr, i64, i64 } { ptr @.str.1278, i64 2, i64 0 }, ptr %a26 + store { ptr, i64, i64 } { ptr @.str.1283, 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.rend2122 -logic.rend2122: - br label %logic.end2121 -logic.end2121: - %t29 = phi i1 [ true, %logic.from2119 ], [ %t28, %logic.rend2122 ] - br i1 %t29, label %then2123, label %endif2125 -then2123: + br label %logic.rend2179 +logic.rend2179: + br label %logic.end2178 +logic.end2178: + %t29 = phi i1 [ true, %logic.from2176 ], [ %t28, %logic.rend2179 ] + br i1 %t29, label %then2180, label %endif2182 +then2180: + call void @finch_str_drop(ptr %a7) ret i64 8 -endif2125: +endif2182: %t30 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t30, ptr %a31 - store { ptr, i64, i64 } { ptr @.str.1279, i64 3, i64 0 }, ptr %a32 + store { ptr, i64, i64 } { ptr @.str.1284, 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.from2126 -logic.from2126: - br i1 %t34, label %logic.end2128, label %logic.rhs2127 -logic.rhs2127: + br label %logic.from2183 +logic.from2183: + br i1 %t34, label %logic.end2185, label %logic.rhs2184 +logic.rhs2184: %t35 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t35, ptr %a36 - store { ptr, i64, i64 } { ptr @.str.1280, i64 3, i64 0 }, ptr %a37 + store { ptr, i64, i64 } { ptr @.str.1285, 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.rend2129 -logic.rend2129: - br label %logic.end2128 -logic.end2128: - %t40 = phi i1 [ true, %logic.from2126 ], [ %t39, %logic.rend2129 ] - br i1 %t40, label %then2130, label %endif2132 -then2130: + br label %logic.rend2186 +logic.rend2186: + br label %logic.end2185 +logic.end2185: + %t40 = phi i1 [ true, %logic.from2183 ], [ %t39, %logic.rend2186 ] + br i1 %t40, label %then2187, label %endif2189 +then2187: + call void @finch_str_drop(ptr %a7) ret i64 16 -endif2132: +endif2189: %t41 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t41, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.1281, i64 3, i64 0 }, ptr %a43 + store { ptr, i64, i64 } { ptr @.str.1286, 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.from2133 -logic.from2133: - br i1 %t45, label %logic.end2135, label %logic.rhs2134 -logic.rhs2134: + br label %logic.from2190 +logic.from2190: + br i1 %t45, label %logic.end2192, label %logic.rhs2191 +logic.rhs2191: %t46 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t46, ptr %a47 - store { ptr, i64, i64 } { ptr @.str.1282, i64 3, i64 0 }, ptr %a48 + store { ptr, i64, i64 } { ptr @.str.1287, 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.rend2136 -logic.rend2136: - br label %logic.end2135 -logic.end2135: - %t51 = phi i1 [ true, %logic.from2133 ], [ %t50, %logic.rend2136 ] - br label %logic.from2137 -logic.from2137: - br i1 %t51, label %logic.end2139, label %logic.rhs2138 -logic.rhs2138: + br label %logic.rend2193 +logic.rend2193: + br label %logic.end2192 +logic.end2192: + %t51 = phi i1 [ true, %logic.from2190 ], [ %t50, %logic.rend2193 ] + br label %logic.from2194 +logic.from2194: + br i1 %t51, label %logic.end2196, label %logic.rhs2195 +logic.rhs2195: %t52 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t52, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.1283, i64 3, i64 0 }, ptr %a54 + store { ptr, i64, i64 } { ptr @.str.1288, 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.rend2140 -logic.rend2140: - br label %logic.end2139 -logic.end2139: - %t57 = phi i1 [ true, %logic.from2137 ], [ %t56, %logic.rend2140 ] - br i1 %t57, label %then2141, label %endif2143 -then2141: + br label %logic.rend2197 +logic.rend2197: + br label %logic.end2196 +logic.end2196: + %t57 = phi i1 [ true, %logic.from2194 ], [ %t56, %logic.rend2197 ] + br i1 %t57, label %then2198, label %endif2200 +then2198: + call void @finch_str_drop(ptr %a7) ret i64 32 -endif2143: +endif2200: + call void @finch_str_drop(ptr %a7) ret i64 64 } @@ -22195,39 +24936,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.from2144 -logic.from2144: - br i1 %t5, label %logic.end2146, label %logic.rhs2145 -logic.rhs2145: + br label %logic.from2201 +logic.from2201: + br i1 %t5, label %logic.end2203, label %logic.rhs2202 +logic.rhs2202: %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.rend2147 -logic.rend2147: - br label %logic.end2146 -logic.end2146: - %t9 = phi i1 [ true, %logic.from2144 ], [ %t8, %logic.rend2147 ] - br i1 %t9, label %then2148, label %endif2150 -then2148: + br label %logic.rend2204 +logic.rend2204: + br label %logic.end2203 +logic.end2203: + %t9 = phi i1 [ true, %logic.from2201 ], [ %t8, %logic.rend2204 ] + br i1 %t9, label %then2205, label %endif2207 +then2205: ret i1 false -endif2150: +endif2207: %t10 = load %S.ast.Type, ptr %a1 %t11 = call i1 @finch.gen.isSigned(%S.ast.Type %t10) - br label %logic.from2151 -logic.from2151: - br i1 %t11, label %logic.rhs2152, label %logic.end2153 -logic.rhs2152: + br label %logic.from2208 +logic.from2208: + br i1 %t11, label %logic.rhs2209, label %logic.end2210 +logic.rhs2209: %t12 = load %S.ast.Type, ptr %a2 %t13 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t12) - br label %logic.rend2154 -logic.rend2154: - br label %logic.end2153 -logic.end2153: - %t14 = phi i1 [ false, %logic.from2151 ], [ %t13, %logic.rend2154 ] - br i1 %t14, label %then2155, label %endif2157 -then2155: + br label %logic.rend2211 +logic.rend2211: + br label %logic.end2210 +logic.end2210: + %t14 = phi i1 [ false, %logic.from2208 ], [ %t13, %logic.rend2211 ] + br i1 %t14, label %then2212, label %endif2214 +then2212: ret i1 false -endif2157: +endif2214: %t15 = load %S.ast.Type, ptr %a2 %t16 = call i64 @finch.gen.bitsOf(%S.ast.Type %t15) %t17 = load %S.ast.Type, ptr %a1 @@ -22251,33 +24992,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 %then2158, label %endif2160 -then2158: + br i1 %t6, label %then2215, label %endif2217 +then2215: ret i1 false -endif2160: +endif2217: %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.1284, i64 427) + %t9 = call i64 @finch_str_to_int(ptr %a8, ptr @.str.1289, i64 447) 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 %then2161, label %endif2163 -then2161: + br i1 %t15, label %then2218, label %endif2220 +then2218: %t16 = load %S.ast.Type, ptr %a3 %t17 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t16) - br i1 %t17, label %then2164, label %endif2166 -then2164: + br i1 %t17, label %then2221, label %endif2223 +then2221: ret i1 false -endif2166: +endif2223: %t18 = load i64, ptr %a13 %t19 = icmp eq i64 %t18, 64 - br i1 %t19, label %then2167, label %endif2169 -then2167: + br i1 %t19, label %then2224, label %endif2226 +then2224: ret i1 true -endif2169: +endif2226: %t20 = load i64, ptr %a10 %t21 = load i64, ptr %a13 %t22 = sub i64 %t21, 1 @@ -22285,28 +25026,28 @@ endif2169: %t24 = sub i64 0, %t23 %t25 = icmp sge i64 %t20, %t24 ret i1 %t25 -endif2163: +endif2220: %t26 = load i64, ptr %a13 %t27 = icmp eq i64 %t26, 64 - br i1 %t27, label %then2170, label %endif2172 -then2170: + br i1 %t27, label %then2227, label %endif2229 +then2227: ret i1 true -endif2172: +endif2229: %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 %then2173, label %endif2175 -then2173: + br i1 %t33, label %then2230, label %endif2232 +then2230: %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 %endif2175 -endif2175: + br label %endif2232 +endif2232: %t38 = load i64, ptr %a10 %t39 = load i64, ptr %a31 %t40 = icmp sle i64 %t38, %t39 @@ -22328,38 +25069,38 @@ entry: store { ptr, i64, i64 } %p2, ptr %a3 %t4 = load ptr, ptr %a1 %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic2176, label %ok2177 -panic2176: - call void @finch_panic(ptr @.str.1285, i64 449, ptr @.str.1286) + br i1 %t5, label %panic2233, label %ok2234 +panic2233: + call void @finch_panic(ptr @.str.1290, i64 469, ptr @.str.1291) unreachable -ok2177: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 15 +ok2234: + %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 16 %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.cond2178 -for.cond2178: + br label %for.cond2235 +for.cond2235: %t10 = load i64, ptr %a9 %t11 = icmp slt i64 %t10, %t8 - br i1 %t11, label %for.body2179, label %for.end2181 -for.body2179: + br i1 %t11, label %for.body2236, label %for.end2238 +for.body2236: %t12 = load ptr, ptr %a1 %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic2182, label %ok2183 -panic2182: - call void @finch_panic(ptr @.str.1287, i64 450, ptr @.str.1288) + br i1 %t13, label %panic2239, label %ok2240 +panic2239: + call void @finch_panic(ptr @.str.1292, i64 470, ptr @.str.1293) unreachable -ok2183: - %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 15 +ok2240: + %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 16 %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 %range2184, label %inrange2185 -range2184: - call void @finch_panic_index(ptr @.str.1289, i64 450, i64 %t15, i64 %t17) + br i1 %t18, label %range2241, label %inrange2242 +range2241: + call void @finch_panic_index(ptr @.str.1294, i64 470, i64 %t15, i64 %t17) unreachable -inrange2185: +inrange2242: %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 @@ -22369,27 +25110,27 @@ inrange2185: 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.from2186 -logic.from2186: - br i1 %t27, label %logic.rhs2187, label %logic.end2188 -logic.rhs2187: + br label %logic.from2243 +logic.from2243: + br i1 %t27, label %logic.rhs2244, label %logic.end2245 +logic.rhs2244: %t28 = load ptr, ptr %a1 %t29 = icmp eq ptr %t28, null - br i1 %t29, label %panic2189, label %ok2190 -panic2189: - call void @finch_panic(ptr @.str.1290, i64 450, ptr @.str.1291) + br i1 %t29, label %panic2246, label %ok2247 +panic2246: + call void @finch_panic(ptr @.str.1295, i64 470, ptr @.str.1296) unreachable -ok2190: - %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 15 +ok2247: + %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 16 %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 %range2191, label %inrange2192 -range2191: - call void @finch_panic_index(ptr @.str.1292, i64 450, i64 %t31, i64 %t33) + br i1 %t34, label %range2248, label %inrange2249 +range2248: + call void @finch_panic_index(ptr @.str.1297, i64 470, i64 %t31, i64 %t33) unreachable -inrange2192: +inrange2249: %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 @@ -22399,23 +25140,23 @@ inrange2192: 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.rend2193 -logic.rend2193: - br label %logic.end2188 -logic.end2188: - %t44 = phi i1 [ false, %logic.from2186 ], [ %t43, %logic.rend2193 ] - br i1 %t44, label %then2194, label %endif2196 -then2194: + br label %logic.rend2250 +logic.rend2250: + br label %logic.end2245 +logic.end2245: + %t44 = phi i1 [ false, %logic.from2243 ], [ %t43, %logic.rend2250 ] + br i1 %t44, label %then2251, label %endif2253 +then2251: %t45 = load i64, ptr %a9 ret i64 %t45 -endif2196: - br label %for.step2180 -for.step2180: +endif2253: + br label %for.step2237 +for.step2237: %t46 = load i64, ptr %a9 %t47 = add i64 %t46, 1 store i64 %t47, ptr %a9 - br label %for.cond2178 -for.end2181: + br label %for.cond2235 +for.end2238: ret i64 -1 } @@ -22434,38 +25175,38 @@ entry: store { ptr, i64, i64 } %p2, ptr %a3 %t4 = load ptr, ptr %a1 %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic2197, label %ok2198 -panic2197: - call void @finch_panic(ptr @.str.1293, i64 458, ptr @.str.1294) + br i1 %t5, label %panic2254, label %ok2255 +panic2254: + call void @finch_panic(ptr @.str.1298, i64 478, ptr @.str.1299) unreachable -ok2198: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 20 +ok2255: + %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 21 %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.cond2199 -for.cond2199: + br label %for.cond2256 +for.cond2256: %t10 = load i64, ptr %a9 %t11 = icmp slt i64 %t10, %t8 - br i1 %t11, label %for.body2200, label %for.end2202 -for.body2200: + br i1 %t11, label %for.body2257, label %for.end2259 +for.body2257: %t12 = load ptr, ptr %a1 %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic2203, label %ok2204 -panic2203: - call void @finch_panic(ptr @.str.1295, i64 459, ptr @.str.1296) + br i1 %t13, label %panic2260, label %ok2261 +panic2260: + call void @finch_panic(ptr @.str.1300, i64 479, ptr @.str.1301) unreachable -ok2204: - %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 20 +ok2261: + %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 21 %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 %range2205, label %inrange2206 -range2205: - call void @finch_panic_index(ptr @.str.1297, i64 459, i64 %t15, i64 %t17) + br i1 %t18, label %range2262, label %inrange2263 +range2262: + call void @finch_panic_index(ptr @.str.1302, i64 479, i64 %t15, i64 %t17) unreachable -inrange2206: +inrange2263: %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 @@ -22475,27 +25216,27 @@ inrange2206: 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.from2207 -logic.from2207: - br i1 %t27, label %logic.rhs2208, label %logic.end2209 -logic.rhs2208: + br label %logic.from2264 +logic.from2264: + br i1 %t27, label %logic.rhs2265, label %logic.end2266 +logic.rhs2265: %t28 = load ptr, ptr %a1 %t29 = icmp eq ptr %t28, null - br i1 %t29, label %panic2210, label %ok2211 -panic2210: - call void @finch_panic(ptr @.str.1298, i64 459, ptr @.str.1299) + br i1 %t29, label %panic2267, label %ok2268 +panic2267: + call void @finch_panic(ptr @.str.1303, i64 479, ptr @.str.1304) unreachable -ok2211: - %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 20 +ok2268: + %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 21 %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 %range2212, label %inrange2213 -range2212: - call void @finch_panic_index(ptr @.str.1300, i64 459, i64 %t31, i64 %t33) + br i1 %t34, label %range2269, label %inrange2270 +range2269: + call void @finch_panic_index(ptr @.str.1305, i64 479, i64 %t31, i64 %t33) unreachable -inrange2213: +inrange2270: %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 @@ -22505,23 +25246,23 @@ inrange2213: 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.rend2214 -logic.rend2214: - br label %logic.end2209 -logic.end2209: - %t44 = phi i1 [ false, %logic.from2207 ], [ %t43, %logic.rend2214 ] - br i1 %t44, label %then2215, label %endif2217 -then2215: + br label %logic.rend2271 +logic.rend2271: + br label %logic.end2266 +logic.end2266: + %t44 = phi i1 [ false, %logic.from2264 ], [ %t43, %logic.rend2271 ] + br i1 %t44, label %then2272, label %endif2274 +then2272: %t45 = load i64, ptr %a9 ret i64 %t45 -endif2217: - br label %for.step2201 -for.step2201: +endif2274: + br label %for.step2258 +for.step2258: %t46 = load i64, ptr %a9 %t47 = add i64 %t46, 1 store i64 %t47, ptr %a9 - br label %for.cond2199 -for.end2202: + br label %for.cond2256 +for.end2259: ret i64 -1 } @@ -22536,38 +25277,38 @@ entry: store { ptr, i64, i64 } %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic2218, label %ok2219 -panic2218: - call void @finch_panic(ptr @.str.1301, i64 467, ptr @.str.1302) + br i1 %t4, label %panic2275, label %ok2276 +panic2275: + call void @finch_panic(ptr @.str.1306, i64 487, ptr @.str.1307) unreachable -ok2219: +ok2276: %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.cond2220 -for.cond2220: + br label %for.cond2277 +for.cond2277: %t9 = load i64, ptr %a8 %t10 = icmp slt i64 %t9, %t7 - br i1 %t10, label %for.body2221, label %for.end2223 -for.body2221: + br i1 %t10, label %for.body2278, label %for.end2280 +for.body2278: %t11 = load ptr, ptr %a1 %t12 = icmp eq ptr %t11, null - br i1 %t12, label %panic2224, label %ok2225 -panic2224: - call void @finch_panic(ptr @.str.1303, i64 468, ptr @.str.1304) + br i1 %t12, label %panic2281, label %ok2282 +panic2281: + call void @finch_panic(ptr @.str.1308, i64 488, ptr @.str.1309) unreachable -ok2225: +ok2282: %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 %range2226, label %inrange2227 -range2226: - call void @finch_panic_index(ptr @.str.1305, i64 468, i64 %t14, i64 %t16) + br i1 %t17, label %range2283, label %inrange2284 +range2283: + call void @finch_panic_index(ptr @.str.1310, i64 488, i64 %t14, i64 %t16) unreachable -inrange2227: +inrange2284: %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 @@ -22577,18 +25318,18 @@ inrange2227: 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 %then2228, label %endif2230 -then2228: + br i1 %t26, label %then2285, label %endif2287 +then2285: %t27 = load i64, ptr %a8 ret i64 %t27 -endif2230: - br label %for.step2222 -for.step2222: +endif2287: + br label %for.step2279 +for.step2279: %t28 = load i64, ptr %a8 %t29 = add i64 %t28, 1 store i64 %t29, ptr %a8 - br label %for.cond2220 -for.end2223: + br label %for.cond2277 +for.end2280: ret i64 -1 } @@ -22604,31 +25345,31 @@ entry: store { ptr, i64, i64 } %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic2231, label %ok2232 -panic2231: - call void @finch_panic(ptr @.str.1306, i64 476, ptr @.str.1307) + br i1 %t4, label %panic2288, label %ok2289 +panic2288: + call void @finch_panic(ptr @.str.1311, i64 496, ptr @.str.1312) unreachable -ok2232: +ok2289: %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 %panic2233, label %ok2234 -panic2233: - call void @finch_panic(ptr @.str.1308, i64 476, ptr @.str.1309) + br i1 %t8, label %panic2290, label %ok2291 +panic2290: + call void @finch_panic(ptr @.str.1313, i64 496, ptr @.str.1314) unreachable -ok2234: - %t9 = getelementptr inbounds %S.gen.Gen, ptr %t7, i32 0, i32 13 +ok2291: + %t9 = getelementptr inbounds %S.gen.Gen, ptr %t7, i32 0, i32 14 %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 %range2235, label %inrange2236 -range2235: - call void @finch_panic_index(ptr @.str.1310, i64 476, i64 %t11, i64 %t13) + br i1 %t14, label %range2292, label %inrange2293 +range2292: + call void @finch_panic_index(ptr @.str.1315, i64 496, i64 %t11, i64 %t13) unreachable -inrange2236: +inrange2293: %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 @@ -22638,27 +25379,27 @@ inrange2236: %t21 = load i64, ptr %t18 %t22 = load ptr, ptr %t17 store i64 0, ptr %a23 - br label %find.cond2237 -find.cond2237: + br label %find.cond2294 +find.cond2294: %t24 = load i64, ptr %a23 %t25 = icmp slt i64 %t24, %t21 - br i1 %t25, label %find.body2238, label %find.end2241 -find.body2238: + br i1 %t25, label %find.body2295, label %find.end2298 +find.body2295: %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.hit2239, label %find.next2240 -find.hit2239: + br i1 %t31, label %find.hit2296, label %find.next2297 +find.hit2296: store i64 %t24, ptr %a20 - br label %find.end2241 -find.next2240: + br label %find.end2298 +find.next2297: %t32 = add i64 %t24, 1 store i64 %t32, ptr %a23 - br label %find.cond2237 -find.end2241: + br label %find.cond2294 +find.end2298: %t33 = load i64, ptr %a20 %t34 = icmp sge i64 %t33, 0 ret i1 %t34 @@ -22671,784 +25412,850 @@ entry: %a3 = alloca %S.ast.Node, align 16 %a6 = alloca { ptr, i64, i64 }, align 16 %a7 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 + %a21 = alloca %S.ast.Type, align 16 %a24 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca %S.ast.Type, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 + %a25 = alloca { ptr, i64, i64 }, align 16 + %a38 = alloca %S.ast.Type, align 16 %a44 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 + %a45 = alloca { ptr, i64, i64 }, align 16 %a51 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 + %a52 = alloca { ptr, i64, i64 }, align 16 %a58 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 + %a59 = alloca { ptr, i64, i64 }, align 16 %a65 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 + %a66 = alloca { ptr, i64, i64 }, align 16 %a74 = alloca { ptr, i64, i64 }, align 16 %a75 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca %S.ast.Type, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca %S.ast.Type, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca %S.ast.Type, align 16 - %a139 = alloca %S.ast.Type, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca %S.ast.Type, align 16 - %a160 = alloca %S.ast.Type, align 16 - %a177 = alloca i64, align 16 - %a180 = alloca i64, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca i64, align 16 - %a205 = alloca i64, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca %S.ast.Type, align 16 - %a223 = alloca %S.ast.Type, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca i64, align 16 - %a239 = alloca %S.ast.Type, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 - %a258 = 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 + %a76 = alloca { ptr, i64, i64 }, align 16 + %a77 = alloca { ptr, i64, i64 }, align 16 + %a79 = alloca { ptr, i64, i64 }, align 16 + %a90 = alloca %S.ast.Type, align 16 + %a93 = alloca { ptr, i64, i64 }, align 16 + %a94 = alloca { ptr, i64, i64 }, align 16 + %a104 = alloca { ptr, i64, i64 }, align 16 + %a105 = alloca { ptr, i64, i64 }, align 16 + %a112 = alloca %S.ast.Type, align 16 + %a132 = alloca { ptr, i64, i64 }, align 16 + %a133 = alloca { ptr, i64, i64 }, align 16 + %a141 = alloca %S.ast.Type, align 16 + %a142 = alloca %S.ast.Type, align 16 + %a155 = alloca %S.ast.Type, align 16 + %a158 = alloca { ptr, i64, i64 }, align 16 + %a159 = alloca { ptr, i64, i64 }, align 16 + %a163 = alloca %S.ast.Type, align 16 + %a164 = alloca %S.ast.Type, align 16 + %a181 = alloca i64, align 16 + %a184 = alloca i64, align 16 + %a189 = alloca { ptr, i64, i64 }, align 16 + %a190 = alloca { ptr, i64, i64 }, align 16 + %a206 = alloca i64, align 16 + %a209 = alloca i64, align 16 + %a214 = alloca { ptr, i64, i64 }, align 16 + %a215 = alloca { ptr, i64, i64 }, align 16 + %a226 = alloca %S.ast.Type, align 16 + %a227 = alloca %S.ast.Type, align 16 + %a233 = alloca { ptr, i64, i64 }, align 16 + %a235 = alloca i64, align 16 + %a243 = alloca %S.ast.Type, align 16 + %a259 = alloca { ptr, i64, i64 }, align 16 + %a260 = alloca { ptr, i64, i64 }, align 16 + %a262 = alloca { ptr, i64, i64 }, align 16 %a276 = alloca { ptr, i64, i64 }, align 16 %a277 = alloca { ptr, i64, i64 }, align 16 %a278 = 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 - %a286 = 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 + %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 + %a295 = alloca { ptr, i64, i64 }, align 16 + %a297 = alloca { ptr, i64, i64 }, align 16 + %a300 = alloca { ptr, i64, i64 }, align 16 + %a301 = alloca { ptr, i64, i64 }, align 16 %a304 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 + %a314 = alloca { ptr, i64, i64 }, align 16 + %a315 = 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 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a338 = 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 + %a334 = alloca { ptr, i64, i64 }, align 16 + %a336 = alloca { ptr, i64, i64 }, align 16 %a340 = 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 - %a358 = alloca { ptr, i64, i64 }, align 16 - %a359 = alloca { ptr, i64, i64 }, align 16 - %a360 = alloca { ptr, i64, i64 }, align 16 - %a364 = alloca { ptr, i64, i64 }, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 + %a341 = alloca { ptr, i64, i64 }, align 16 + %a349 = alloca { ptr, i64, i64 }, align 16 + %a350 = alloca { ptr, i64, i64 }, align 16 + %a352 = 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 - %a369 = alloca { ptr, i64, i64 }, align 16 %a370 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a375 = alloca { ptr, i64, i64 }, align 16 - %a386 = 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 + %a377 = alloca { ptr, i64, i64 }, align 16 + %a378 = alloca { ptr, i64, i64 }, align 16 + %a379 = alloca { ptr, i64, i64 }, align 16 + %a380 = 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 + %a385 = alloca { ptr, i64, i64 }, align 16 %a387 = alloca { ptr, i64, i64 }, align 16 + %a390 = alloca { ptr, i64, i64 }, align 16 %a391 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a415 = 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 - %a427 = alloca { ptr, i64, i64 }, align 16 - %a428 = alloca { ptr, i64, i64 }, align 16 - %a429 = alloca { ptr, i64, i64 }, align 16 - %a434 = alloca { ptr, i64, i64 }, align 16 - %a435 = alloca { ptr, i64, i64 }, align 16 - %a439 = alloca { ptr, i64, i64 }, align 16 - %a440 = alloca { ptr, i64, i64 }, align 16 + %a394 = alloca { ptr, i64, i64 }, align 16 + %a404 = alloca { ptr, i64, i64 }, align 16 + %a405 = alloca { ptr, i64, i64 }, align 16 + %a409 = alloca { ptr, i64, i64 }, align 16 + %a410 = alloca { ptr, i64, i64 }, align 16 + %a432 = alloca { ptr, i64, i64 }, align 16 + %a433 = 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 + %a444 = 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 + %a449 = alloca { ptr, i64, i64 }, align 16 + %a451 = alloca { ptr, i64, i64 }, align 16 + %a455 = alloca { ptr, i64, i64 }, align 16 + %a456 = alloca { ptr, i64, i64 }, align 16 + %a460 = alloca { ptr, i64, i64 }, align 16 + %a461 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store %S.ast.Type %p1, ptr %a2 store %S.ast.Node %p2, ptr %a3 %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.1311, i64 5, i64 0 }, ptr %a7 + store { ptr, i64, i64 } { ptr @.str.1316, 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 %then2242, label %endif2244 -then2242: + br i1 %t9, label %then2299, label %endif2301 +then2299: %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 %range2245, label %inrange2246 -range2245: - call void @finch_panic_index(ptr @.str.1312, i64 481, i64 0, i64 %t13) + br i1 %t14, label %range2302, label %inrange2303 +range2302: + call void @finch_panic_index(ptr @.str.1317, i64 501, i64 0, i64 %t13) unreachable -inrange2246: +inrange2303: %t15 = extractvalue { ptr, i64, i64 } %t12, 0 %t16 = getelementptr inbounds %S.ast.Type, ptr %t15, i64 0 %t17 = load %S.ast.Type, ptr %t16 %t18 = load %S.ast.Node, ptr %a3 %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) + store %S.ast.Type %t19, ptr %a21 + call void @finch.drop.S_ast_Type(ptr %a21) ret %S.ast.Type %t20 -endif2244: - %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.1313, 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 %then2247, label %endif2249 -then2247: - %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 %range2250, label %inrange2251 -range2250: - call void @finch_panic_index(ptr @.str.1314, i64 484, i64 0, i64 %t30) +endif2301: + %t22 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 + %t23 = load { ptr, i64, i64 }, ptr %t22 + store { ptr, i64, i64 } %t23, ptr %a24 + store { ptr, i64, i64 } { ptr @.str.1318, i64 3, i64 0 }, ptr %a25 + %t26 = call i32 @finch_str_eq(ptr %a24, ptr %a25) + %t27 = icmp ne i32 %t26, 0 + br i1 %t27, label %then2304, label %endif2306 +then2304: + %t28 = load ptr, ptr %a1 + %t29 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t30 = load { ptr, i64, i64 }, ptr %t29 + %t31 = extractvalue { ptr, i64, i64 } %t30, 1 + %t32 = icmp uge i64 0, %t31 + br i1 %t32, label %range2307, label %inrange2308 +range2307: + call void @finch_panic_index(ptr @.str.1319, i64 504, i64 0, i64 %t31) unreachable -inrange2251: - %t32 = extractvalue { ptr, i64, i64 } %t29, 0 - %t33 = getelementptr inbounds %S.ast.Type, ptr %t32, i64 0 - %t34 = load %S.ast.Type, ptr %t33 - %t35 = load %S.ast.Node, ptr %a3 - %t36 = call %S.ast.Type @finch.gen.resolve(ptr %t27, %S.ast.Type %t34, %S.ast.Node %t35) - store %S.ast.Type %t36, ptr %a37 - %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.from2252 -logic.from2252: - br i1 %t40, label %logic.rhs2253, label %logic.end2254 -logic.rhs2253: - %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.1315, 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.rend2255 -logic.rend2255: - br label %logic.end2254 -logic.end2254: - %t47 = phi i1 [ false, %logic.from2252 ], [ %t46, %logic.rend2255 ] - br label %logic.from2256 -logic.from2256: - br i1 %t47, label %logic.rhs2257, label %logic.end2258 -logic.rhs2257: - %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.1316, 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.rend2259 -logic.rend2259: - br label %logic.end2258 -logic.end2258: - %t54 = phi i1 [ false, %logic.from2256 ], [ %t53, %logic.rend2259 ] - br label %logic.from2260 -logic.from2260: - br i1 %t54, label %logic.rhs2261, label %logic.end2262 -logic.rhs2261: - %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.1317, 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.rend2263 -logic.rend2263: - br label %logic.end2262 -logic.end2262: - %t61 = phi i1 [ false, %logic.from2260 ], [ %t60, %logic.rend2263 ] - br label %logic.from2264 -logic.from2264: - br i1 %t61, label %logic.rhs2265, label %logic.end2266 -logic.rhs2265: - %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.1318, 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.rend2267 -logic.rend2267: - br label %logic.end2266 -logic.end2266: - %t68 = phi i1 [ false, %logic.from2264 ], [ %t67, %logic.rend2267 ] - br i1 %t68, label %then2268, label %endif2270 -then2268: - %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.1319, 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 %endif2270 -endif2270: - %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 %range2271, label %inrange2272 -range2271: - call void @finch_panic_index(ptr @.str.1320, i64 488, i64 1, i64 %t80) +inrange2308: + %t33 = extractvalue { ptr, i64, i64 } %t30, 0 + %t34 = getelementptr inbounds %S.ast.Type, ptr %t33, i64 0 + %t35 = load %S.ast.Type, ptr %t34 + %t36 = load %S.ast.Node, ptr %a3 + %t37 = call %S.ast.Type @finch.gen.resolve(ptr %t28, %S.ast.Type %t35, %S.ast.Node %t36) + store %S.ast.Type %t37, ptr %a38 + %t39 = load %S.ast.Type, ptr %a38 + %t40 = call i1 @finch.gen.isInt(%S.ast.Type %t39) + %t41 = xor i1 %t40, true + br label %logic.from2309 +logic.from2309: + br i1 %t41, label %logic.rhs2310, label %logic.end2311 +logic.rhs2310: + %t42 = getelementptr inbounds %S.ast.Type, ptr %a38, i32 0, i32 0 + %t43 = load { ptr, i64, i64 }, ptr %t42 + store { ptr, i64, i64 } %t43, ptr %a44 + store { ptr, i64, i64 } { ptr @.str.1320, i64 4, i64 0 }, ptr %a45 + %t46 = call i32 @finch_str_eq(ptr %a44, ptr %a45) + %t47 = icmp eq i32 %t46, 0 + br label %logic.rend2312 +logic.rend2312: + br label %logic.end2311 +logic.end2311: + %t48 = phi i1 [ false, %logic.from2309 ], [ %t47, %logic.rend2312 ] + br label %logic.from2313 +logic.from2313: + br i1 %t48, label %logic.rhs2314, label %logic.end2315 +logic.rhs2314: + %t49 = getelementptr inbounds %S.ast.Type, ptr %a38, i32 0, i32 0 + %t50 = load { ptr, i64, i64 }, ptr %t49 + store { ptr, i64, i64 } %t50, ptr %a51 + store { ptr, i64, i64 } { ptr @.str.1321, i64 4, i64 0 }, ptr %a52 + %t53 = call i32 @finch_str_eq(ptr %a51, ptr %a52) + %t54 = icmp eq i32 %t53, 0 + br label %logic.rend2316 +logic.rend2316: + br label %logic.end2315 +logic.end2315: + %t55 = phi i1 [ false, %logic.from2313 ], [ %t54, %logic.rend2316 ] + br label %logic.from2317 +logic.from2317: + br i1 %t55, label %logic.rhs2318, label %logic.end2319 +logic.rhs2318: + %t56 = getelementptr inbounds %S.ast.Type, ptr %a38, i32 0, i32 0 + %t57 = load { ptr, i64, i64 }, ptr %t56 + store { ptr, i64, i64 } %t57, ptr %a58 + store { ptr, i64, i64 } { ptr @.str.1322, i64 3, i64 0 }, ptr %a59 + %t60 = call i32 @finch_str_eq(ptr %a58, ptr %a59) + %t61 = icmp eq i32 %t60, 0 + br label %logic.rend2320 +logic.rend2320: + br label %logic.end2319 +logic.end2319: + %t62 = phi i1 [ false, %logic.from2317 ], [ %t61, %logic.rend2320 ] + br label %logic.from2321 +logic.from2321: + br i1 %t62, label %logic.rhs2322, label %logic.end2323 +logic.rhs2322: + %t63 = getelementptr inbounds %S.ast.Type, ptr %a38, i32 0, i32 0 + %t64 = load { ptr, i64, i64 }, ptr %t63 + store { ptr, i64, i64 } %t64, ptr %a65 + store { ptr, i64, i64 } { ptr @.str.1323, i64 4, i64 0 }, ptr %a66 + %t67 = call i32 @finch_str_eq(ptr %a65, ptr %a66) + %t68 = icmp eq i32 %t67, 0 + br label %logic.rend2324 +logic.rend2324: + br label %logic.end2323 +logic.end2323: + %t69 = phi i1 [ false, %logic.from2321 ], [ %t68, %logic.rend2324 ] + br i1 %t69, label %then2325, label %endif2327 +then2325: + %t70 = load ptr, ptr %a1 + %t71 = load %S.ast.Node, ptr %a3 + %t72 = load %S.ast.Type, ptr %a38 + %t73 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t72) + store { ptr, i64, i64 } { ptr @.str.1324, i64 63, i64 0 }, ptr %a75 + store { ptr, i64, i64 } %t73, ptr %a76 + call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) + store { ptr, i64, i64 } %t73, ptr %a77 + call void @finch_str_drop(ptr %a77) + %t78 = load { ptr, i64, i64 }, ptr %a74 + call void @finch.gen.fail(ptr %t70, %S.ast.Node %t71, { ptr, i64, i64 } %t78) + store { ptr, i64, i64 } %t78, ptr %a79 + call void @finch_str_drop(ptr %a79) + br label %endif2327 +endif2327: + %t80 = load ptr, ptr %a1 + %t81 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t82 = load { ptr, i64, i64 }, ptr %t81 + %t83 = extractvalue { ptr, i64, i64 } %t82, 1 + %t84 = icmp uge i64 1, %t83 + br i1 %t84, label %range2328, label %inrange2329 +range2328: + call void @finch_panic_index(ptr @.str.1325, i64 508, i64 1, i64 %t83) unreachable -inrange2272: - %t82 = extractvalue { ptr, i64, i64 } %t79, 0 - %t83 = getelementptr inbounds %S.ast.Type, ptr %t82, i64 1 - %t84 = load %S.ast.Type, ptr %t83 - %t85 = load %S.ast.Node, ptr %a3 - %t86 = call %S.ast.Type @finch.gen.resolve(ptr %t77, %S.ast.Type %t84, %S.ast.Node %t85) - store %S.ast.Type %t86, ptr %a87 - %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.1321, 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 %then2273, label %endif2275 -then2273: - %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.1322, i64 41, i64 0 }) - br label %endif2275 -endif2275: - %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 -endif2249: - %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.1323, 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 %then2276, label %endif2278 -then2276: - %t105 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1324, 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 - store %S.ast.Type %t108, ptr %a109 - %t110 = getelementptr inbounds %S.ast.Type, ptr %a109, i32 0, i32 1 - %t111 = getelementptr inbounds { ptr, i64, i64 }, ptr %t110, i32 0, i32 1 - %t112 = load ptr, ptr %a1 - %t113 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t114 = load { ptr, i64, i64 }, ptr %t113 - %t115 = extractvalue { ptr, i64, i64 } %t114, 1 - %t116 = icmp uge i64 0, %t115 - br i1 %t116, label %range2279, label %inrange2280 -range2279: - call void @finch_panic_index(ptr @.str.1325, i64 496, i64 0, i64 %t115) +inrange2329: + %t85 = extractvalue { ptr, i64, i64 } %t82, 0 + %t86 = getelementptr inbounds %S.ast.Type, ptr %t85, i64 1 + %t87 = load %S.ast.Type, ptr %t86 + %t88 = load %S.ast.Node, ptr %a3 + %t89 = call %S.ast.Type @finch.gen.resolve(ptr %t80, %S.ast.Type %t87, %S.ast.Node %t88) + store %S.ast.Type %t89, ptr %a90 + %t91 = getelementptr inbounds %S.ast.Type, ptr %a90, i32 0, i32 0 + %t92 = load { ptr, i64, i64 }, ptr %t91 + store { ptr, i64, i64 } %t92, ptr %a93 + store { ptr, i64, i64 } { ptr @.str.1326, i64 4, i64 0 }, ptr %a94 + %t95 = call i32 @finch_str_eq(ptr %a93, ptr %a94) + %t96 = icmp ne i32 %t95, 0 + br i1 %t96, label %then2330, label %endif2332 +then2330: + %t97 = load ptr, ptr %a1 + %t98 = load %S.ast.Node, ptr %a3 + call void @finch.gen.fail(ptr %t97, %S.ast.Node %t98, { ptr, i64, i64 } { ptr @.str.1327, i64 41, i64 0 }) + br label %endif2332 +endif2332: + %t99 = load %S.ast.Type, ptr %a38 + %t100 = load %S.ast.Type, ptr %a90 + %t101 = call %S.ast.Type @finch.ast.mapOf(%S.ast.Type %t99, %S.ast.Type %t100) + call void @finch.drop.S_ast_Type(ptr %a90) + call void @finch.drop.S_ast_Type(ptr %a38) + ret %S.ast.Type %t101 +endif2306: + %t102 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 + %t103 = load { ptr, i64, i64 }, ptr %t102 + store { ptr, i64, i64 } %t103, ptr %a104 + store { ptr, i64, i64 } { ptr @.str.1328, i64 5, i64 0 }, ptr %a105 + %t106 = call i32 @finch_str_eq(ptr %a104, ptr %a105) + %t107 = icmp ne i32 %t106, 0 + br i1 %t107, label %then2333, label %endif2335 +then2333: + %t108 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1329, i64 5, i64 0 }, 0 + %t109 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 4 + %t110 = load i64, ptr %t109 + %t111 = insertvalue %S.ast.Type %t108, i64 %t110, 4 + store %S.ast.Type %t111, ptr %a112 + %t113 = getelementptr inbounds %S.ast.Type, ptr %a112, i32 0, i32 1 + %t114 = getelementptr inbounds { ptr, i64, i64 }, ptr %t113, i32 0, i32 1 + %t115 = load ptr, ptr %a1 + %t116 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t117 = load { ptr, i64, i64 }, ptr %t116 + %t118 = extractvalue { ptr, i64, i64 } %t117, 1 + %t119 = icmp uge i64 0, %t118 + br i1 %t119, label %range2336, label %inrange2337 +range2336: + call void @finch_panic_index(ptr @.str.1330, i64 516, i64 0, i64 %t118) unreachable -inrange2280: - %t117 = extractvalue { ptr, i64, i64 } %t114, 0 - %t118 = getelementptr inbounds %S.ast.Type, ptr %t117, i64 0 - %t119 = load %S.ast.Type, ptr %t118 - %t120 = load %S.ast.Node, ptr %a3 - %t121 = call %S.ast.Type @finch.gen.resolve(ptr %t112, %S.ast.Type %t119, %S.ast.Node %t120) - %t122 = load i64, ptr %t111 - %t123 = add i64 %t122, 1 - call void @finch_arr_reserve(ptr %t110, i64 %t123, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t124 = load ptr, ptr %t110 - %t125 = getelementptr inbounds %S.ast.Type, ptr %t124, i64 %t122 - store %S.ast.Type %t121, ptr %t125 - store i64 %t123, ptr %t111 - %t126 = load %S.ast.Type, ptr %a109 - ret %S.ast.Type %t126 -endif2278: - %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.1326, 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 %then2281, label %endif2283 -then2281: - %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 %then2284, label %endif2286 -then2284: - %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 -endif2286: - %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 %range2287, label %inrange2288 -range2287: - call void @finch_panic_index(ptr @.str.1327, i64 503, i64 0, i64 %t144) +inrange2337: + %t120 = extractvalue { ptr, i64, i64 } %t117, 0 + %t121 = getelementptr inbounds %S.ast.Type, ptr %t120, i64 0 + %t122 = load %S.ast.Type, ptr %t121 + %t123 = load %S.ast.Node, ptr %a3 + %t124 = call %S.ast.Type @finch.gen.resolve(ptr %t115, %S.ast.Type %t122, %S.ast.Node %t123) + %t125 = load i64, ptr %t114 + %t126 = add i64 %t125, 1 + call void @finch_arr_reserve(ptr %t113, i64 %t126, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) + %t127 = load ptr, ptr %t113 + %t128 = getelementptr inbounds %S.ast.Type, ptr %t127, i64 %t125 + store %S.ast.Type %t124, ptr %t128 + store i64 %t126, ptr %t114 + %t129 = load %S.ast.Type, ptr %a112 + ret %S.ast.Type %t129 +endif2335: + %t130 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 + %t131 = load { ptr, i64, i64 }, ptr %t130 + store { ptr, i64, i64 } %t131, ptr %a132 + store { ptr, i64, i64 } { ptr @.str.1331, i64 3, i64 0 }, ptr %a133 + %t134 = call i32 @finch_str_eq(ptr %a132, ptr %a133) + %t135 = icmp ne i32 %t134, 0 + br i1 %t135, label %then2338, label %endif2340 +then2338: + %t136 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t137 = getelementptr inbounds { ptr, i64, i64 }, ptr %t136, i32 0, i32 1 + %t138 = load i64, ptr %t137 + %t139 = icmp eq i64 %t138, 0 + br i1 %t139, label %then2341, label %endif2343 +then2341: + %t140 = load %S.ast.Type, ptr %a2 + store %S.ast.Type %t140, ptr %a141 + call void @finch.copy.S_ast_Type(ptr %a142, ptr %a141) + %t143 = load %S.ast.Type, ptr %a142 + ret %S.ast.Type %t143 +endif2343: + %t144 = load ptr, ptr %a1 + %t145 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t146 = load { ptr, i64, i64 }, ptr %t145 + %t147 = extractvalue { ptr, i64, i64 } %t146, 1 + %t148 = icmp uge i64 0, %t147 + br i1 %t148, label %range2344, label %inrange2345 +range2344: + call void @finch_panic_index(ptr @.str.1332, i64 523, i64 0, i64 %t147) unreachable -inrange2288: - %t146 = extractvalue { ptr, i64, i64 } %t143, 0 - %t147 = getelementptr inbounds %S.ast.Type, ptr %t146, i64 0 - %t148 = load %S.ast.Type, ptr %t147 - %t149 = load %S.ast.Node, ptr %a3 - %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 -endif2283: - %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.1328, 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 %then2289, label %endif2291 -then2289: - %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 -endif2291: - %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.from2292 -logic.from2292: - br i1 %t165, label %logic.rhs2293, label %logic.end2294 -logic.rhs2293: - %t166 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 +inrange2345: + %t149 = extractvalue { ptr, i64, i64 } %t146, 0 + %t150 = getelementptr inbounds %S.ast.Type, ptr %t149, i64 0 + %t151 = load %S.ast.Type, ptr %t150 + %t152 = load %S.ast.Node, ptr %a3 + %t153 = call %S.ast.Type @finch.gen.resolve(ptr %t144, %S.ast.Type %t151, %S.ast.Node %t152) + %t154 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t153) + store %S.ast.Type %t153, ptr %a155 + call void @finch.drop.S_ast_Type(ptr %a155) + ret %S.ast.Type %t154 +endif2340: + %t156 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 + %t157 = load { ptr, i64, i64 }, ptr %t156 + store { ptr, i64, i64 } %t157, ptr %a158 + store { ptr, i64, i64 } { ptr @.str.1333, i64 5, i64 0 }, ptr %a159 + %t160 = call i32 @finch_str_eq(ptr %a158, ptr %a159) + %t161 = icmp eq i32 %t160, 0 + br i1 %t161, label %then2346, label %endif2348 +then2346: + %t162 = load %S.ast.Type, ptr %a2 + store %S.ast.Type %t162, ptr %a163 + call void @finch.copy.S_ast_Type(ptr %a164, ptr %a163) + %t165 = load %S.ast.Type, ptr %a164 + ret %S.ast.Type %t165 +endif2348: + %t166 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 %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.rend2295 -logic.rend2295: - br label %logic.end2294 -logic.end2294: - %t170 = phi i1 [ false, %logic.from2292 ], [ %t169, %logic.rend2295 ] - br label %logic.from2296 -logic.from2296: - br i1 %t170, label %logic.rhs2297, label %logic.end2298 -logic.rhs2297: - %t171 = load ptr, ptr %a1 - %t172 = icmp eq ptr %t171, null - br i1 %t172, label %panic2299, label %ok2300 -panic2299: - call void @finch_panic(ptr @.str.1329, i64 509, ptr @.str.1330) + br label %logic.from2349 +logic.from2349: + br i1 %t169, label %logic.rhs2350, label %logic.end2351 +logic.rhs2350: + %t170 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t171 = getelementptr inbounds { ptr, i64, i64 }, ptr %t170, i32 0, i32 1 + %t172 = load i64, ptr %t171 + %t173 = icmp eq i64 %t172, 0 + br label %logic.rend2352 +logic.rend2352: + br label %logic.end2351 +logic.end2351: + %t174 = phi i1 [ false, %logic.from2349 ], [ %t173, %logic.rend2352 ] + br label %logic.from2353 +logic.from2353: + br i1 %t174, label %logic.rhs2354, label %logic.end2355 +logic.rhs2354: + %t175 = load ptr, ptr %a1 + %t176 = icmp eq ptr %t175, null + br i1 %t176, label %panic2356, label %ok2357 +panic2356: + call void @finch_panic(ptr @.str.1334, i64 529, ptr @.str.1335) unreachable -ok2300: - %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 - %t176 = load { ptr, i64, i64 }, ptr %t175 - store i64 -1, ptr %a177 - %t178 = load i64, ptr %t174 - %t179 = load ptr, ptr %t173 - store i64 0, ptr %a180 - br label %find.cond2301 -find.cond2301: - %t181 = load i64, ptr %a180 - %t182 = icmp slt i64 %t181, %t178 - br i1 %t182, label %find.body2302, label %find.end2305 -find.body2302: - %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.hit2303, label %find.next2304 -find.hit2303: - store i64 %t181, ptr %a177 - br label %find.end2305 -find.next2304: - %t189 = add i64 %t181, 1 - store i64 %t189, ptr %a180 - br label %find.cond2301 -find.end2305: - %t190 = load i64, ptr %a177 - %t191 = icmp sge i64 %t190, 0 - br label %logic.rend2306 -logic.rend2306: - br label %logic.end2298 -logic.end2298: - %t192 = phi i1 [ false, %logic.from2296 ], [ %t191, %logic.rend2306 ] - br i1 %t192, label %then2307, label %endif2309 -then2307: - %t193 = load ptr, ptr %a1 - %t194 = icmp eq ptr %t193, null - br i1 %t194, label %panic2310, label %ok2311 -panic2310: - call void @finch_panic(ptr @.str.1331, i64 510, ptr @.str.1332) +ok2357: + %t177 = getelementptr inbounds %S.gen.Gen, ptr %t175, i32 0, i32 18 + %t178 = getelementptr inbounds { ptr, i64, i64 }, ptr %t177, i32 0, i32 1 + %t179 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 + %t180 = load { ptr, i64, i64 }, ptr %t179 + store i64 -1, ptr %a181 + %t182 = load i64, ptr %t178 + %t183 = load ptr, ptr %t177 + store i64 0, ptr %a184 + br label %find.cond2358 +find.cond2358: + %t185 = load i64, ptr %a184 + %t186 = icmp slt i64 %t185, %t182 + br i1 %t186, label %find.body2359, label %find.end2362 +find.body2359: + %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.hit2360, label %find.next2361 +find.hit2360: + store i64 %t185, ptr %a181 + br label %find.end2362 +find.next2361: + %t193 = add i64 %t185, 1 + store i64 %t193, ptr %a184 + br label %find.cond2358 +find.end2362: + %t194 = load i64, ptr %a181 + %t195 = icmp sge i64 %t194, 0 + br label %logic.rend2363 +logic.rend2363: + br label %logic.end2355 +logic.end2355: + %t196 = phi i1 [ false, %logic.from2353 ], [ %t195, %logic.rend2363 ] + br i1 %t196, label %then2364, label %endif2366 +then2364: + %t197 = load ptr, ptr %a1 + %t198 = icmp eq ptr %t197, null + br i1 %t198, label %panic2367, label %ok2368 +panic2367: + call void @finch_panic(ptr @.str.1336, i64 530, ptr @.str.1337) unreachable -ok2311: - %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 %panic2312, label %ok2313 -panic2312: - call void @finch_panic(ptr @.str.1333, i64 510, ptr @.str.1334) +ok2368: + %t199 = getelementptr inbounds %S.gen.Gen, ptr %t197, i32 0, i32 19 + %t200 = load ptr, ptr %a1 + %t201 = icmp eq ptr %t200, null + br i1 %t201, label %panic2369, label %ok2370 +panic2369: + call void @finch_panic(ptr @.str.1338, i64 530, ptr @.str.1339) unreachable -ok2313: - %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 - %t201 = load { ptr, i64, i64 }, ptr %t200 - store i64 -1, ptr %a202 - %t203 = load i64, ptr %t199 - %t204 = load ptr, ptr %t198 - store i64 0, ptr %a205 - br label %find.cond2314 -find.cond2314: - %t206 = load i64, ptr %a205 - %t207 = icmp slt i64 %t206, %t203 - br i1 %t207, label %find.body2315, label %find.end2318 -find.body2315: - %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.hit2316, label %find.next2317 -find.hit2316: - store i64 %t206, ptr %a202 - br label %find.end2318 -find.next2317: - %t214 = add i64 %t206, 1 - store i64 %t214, ptr %a205 - br label %find.cond2314 -find.end2318: - %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 %range2319, label %inrange2320 -range2319: - call void @finch_panic_index(ptr @.str.1335, i64 510, i64 %t215, i64 %t217) +ok2370: + %t202 = getelementptr inbounds %S.gen.Gen, ptr %t200, i32 0, i32 18 + %t203 = getelementptr inbounds { ptr, i64, i64 }, ptr %t202, i32 0, i32 1 + %t204 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 + %t205 = load { ptr, i64, i64 }, ptr %t204 + store i64 -1, ptr %a206 + %t207 = load i64, ptr %t203 + %t208 = load ptr, ptr %t202 + store i64 0, ptr %a209 + br label %find.cond2371 +find.cond2371: + %t210 = load i64, ptr %a209 + %t211 = icmp slt i64 %t210, %t207 + br i1 %t211, label %find.body2372, label %find.end2375 +find.body2372: + %t212 = getelementptr inbounds { ptr, i64, i64 }, ptr %t208, i64 %t210 + %t213 = load { ptr, i64, i64 }, ptr %t212 + store { ptr, i64, i64 } %t213, ptr %a214 + store { ptr, i64, i64 } %t205, ptr %a215 + %t216 = call i32 @finch_str_eq(ptr %a214, ptr %a215) + %t217 = icmp ne i32 %t216, 0 + br i1 %t217, label %find.hit2373, label %find.next2374 +find.hit2373: + store i64 %t210, ptr %a206 + br label %find.end2375 +find.next2374: + %t218 = add i64 %t210, 1 + store i64 %t218, ptr %a209 + br label %find.cond2371 +find.end2375: + %t219 = load i64, ptr %a206 + %t220 = load { ptr, i64, i64 }, ptr %t199 + %t221 = extractvalue { ptr, i64, i64 } %t220, 1 + %t222 = icmp uge i64 %t219, %t221 + br i1 %t222, label %range2376, label %inrange2377 +range2376: + call void @finch_panic_index(ptr @.str.1340, i64 530, i64 %t219, i64 %t221) unreachable -inrange2320: - %t219 = extractvalue { ptr, i64, i64 } %t216, 0 - %t220 = getelementptr inbounds %S.ast.Type, ptr %t219, i64 %t215 - %t221 = load %S.ast.Type, ptr %t220 - store %S.ast.Type %t221, ptr %a222 - call void @finch.copy.S_ast_Type(ptr %a223, ptr %a222) - %t224 = load %S.ast.Type, ptr %a223 - ret %S.ast.Type %t224 -endif2309: - %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 %then2321, label %endif2323 -then2321: - 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.cond2324 -each.cond2324: - %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.body2325, label %each.end2327 -each.body2325: - %t236 = load ptr, ptr %t230 - %t237 = getelementptr inbounds %S.ast.Type, ptr %t236, i64 %t234 - %t238 = load %S.ast.Type, ptr %t237 - store %S.ast.Type %t238, ptr %a239 - %t240 = getelementptr inbounds { ptr, i64, i64 }, ptr %a229, i32 0, i32 1 - %t241 = load ptr, ptr %a1 - %t242 = load %S.ast.Type, ptr %a239 - %t243 = load %S.ast.Node, ptr %a3 - %t244 = call %S.ast.Type @finch.gen.resolve(ptr %t241, %S.ast.Type %t242, %S.ast.Node %t243) - %t245 = load i64, ptr %t240 - %t246 = add i64 %t245, 1 - call void @finch_arr_reserve(ptr %a229, i64 %t246, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t247 = load ptr, ptr %a229 - %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.step2326 -each.step2326: - %t249 = load i64, ptr %a231 +inrange2377: + %t223 = extractvalue { ptr, i64, i64 } %t220, 0 + %t224 = getelementptr inbounds %S.ast.Type, ptr %t223, i64 %t219 + %t225 = load %S.ast.Type, ptr %t224 + 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 + ret %S.ast.Type %t228 +endif2366: + %t229 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t230 = getelementptr inbounds { ptr, i64, i64 }, ptr %t229, i32 0, i32 1 + %t231 = load i64, ptr %t230 + %t232 = icmp sgt i64 %t231, 0 + br i1 %t232, label %then2378, label %endif2380 +then2378: + store { ptr, i64, i64 } zeroinitializer, ptr %a233 + %t234 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + store i64 0, ptr %a235 + br label %each.cond2381 +each.cond2381: + %t236 = getelementptr inbounds { ptr, i64, i64 }, ptr %t234, i32 0, i32 1 + %t237 = load i64, ptr %t236 + %t238 = load i64, ptr %a235 + %t239 = icmp slt i64 %t238, %t237 + br i1 %t239, label %each.body2382, label %each.end2384 +each.body2382: + %t240 = load ptr, ptr %t234 + %t241 = getelementptr inbounds %S.ast.Type, ptr %t240, i64 %t238 + %t242 = load %S.ast.Type, ptr %t241 + store %S.ast.Type %t242, ptr %a243 + %t244 = getelementptr inbounds { ptr, i64, i64 }, ptr %a233, i32 0, i32 1 + %t245 = load ptr, ptr %a1 + %t246 = load %S.ast.Type, ptr %a243 + %t247 = load %S.ast.Node, ptr %a3 + %t248 = call %S.ast.Type @finch.gen.resolve(ptr %t245, %S.ast.Type %t246, %S.ast.Node %t247) + %t249 = load i64, ptr %t244 %t250 = add i64 %t249, 1 - store i64 %t250, ptr %a231 - br label %each.cond2324 -each.end2327: - %t251 = load ptr, ptr %a1 - %t252 = icmp eq ptr %t251, null - br i1 %t252, label %panic2328, label %ok2329 -panic2328: - call void @finch_panic(ptr @.str.1336, i64 518, ptr @.str.1337) + call void @finch_arr_reserve(ptr %a233, i64 %t250, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) + %t251 = load ptr, ptr %a233 + %t252 = getelementptr inbounds %S.ast.Type, ptr %t251, i64 %t249 + store %S.ast.Type %t248, ptr %t252 + store i64 %t250, ptr %t244 + br label %each.step2383 +each.step2383: + %t253 = load i64, ptr %a235 + %t254 = add i64 %t253, 1 + store i64 %t254, ptr %a235 + br label %each.cond2381 +each.end2384: + %t255 = load ptr, ptr %a1 + %t256 = icmp eq ptr %t255, null + br i1 %t256, label %panic2385, label %ok2386 +panic2385: + call void @finch_panic(ptr @.str.1341, i64 538, ptr @.str.1342) unreachable -ok2329: - %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 - call void @finch_str_copy(ptr %a256, ptr %a255) - %t257 = load { ptr, i64, i64 }, ptr %a256 - store { ptr, i64, i64 } %t257, ptr %a258 - %t259 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %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 %then2330, label %endif2332 -then2330: - %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 %then2333, label %endif2335 -then2333: - %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.1338, 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.1339, i64 36, i64 0 }, ptr %a278 +ok2386: + %t257 = getelementptr inbounds %S.gen.Gen, ptr %t255, i32 0, i32 14 + %t258 = load { ptr, i64, i64 }, ptr %t257 + store { ptr, i64, i64 } %t258, ptr %a259 + call void @finch_str_copy(ptr %a260, ptr %a259) + %t261 = load { ptr, i64, i64 }, ptr %a260 + store { ptr, i64, i64 } %t261, ptr %a262 + %t263 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 + %t264 = getelementptr inbounds { ptr, i64, i64 }, ptr %t263, i32 0, i32 1 + %t265 = load i64, ptr %t264 + %t266 = icmp sgt i64 %t265, 0 + br i1 %t266, label %then2387, label %endif2389 +then2387: + %t267 = load ptr, ptr %a1 + %t268 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 + %t269 = load { ptr, i64, i64 }, ptr %t268 + %t270 = call i1 @finch.gen.imports(ptr %t267, { ptr, i64, i64 } %t269) + %t271 = xor i1 %t270, true + br i1 %t271, label %then2390, label %endif2392 +then2390: + %t272 = load ptr, ptr %a1 + %t273 = load %S.ast.Node, ptr %a3 + %t274 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 + %t275 = load { ptr, i64, i64 }, ptr %t274 + store { ptr, i64, i64 } { ptr @.str.1343, i64 1, 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 - %t280 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t281 = load { ptr, i64, i64 }, ptr %t280 + store { ptr, i64, i64 } %t279, ptr %a281 + store { ptr, i64, i64 } { ptr @.str.1344, i64 36, i64 0 }, ptr %a282 + call void @finch_str_concat(ptr %a280, ptr %a281, ptr %a282) store { ptr, i64, i64 } %t279, 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.1340, 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 %endif2335 -endif2335: - %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 %endif2332 -endif2332: - %t295 = load ptr, ptr %a1 - %t296 = load { ptr, i64, i64 }, ptr %a258 - %t297 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t298 = load { ptr, i64, i64 }, ptr %t297 - %t299 = load { ptr, i64, i64 }, ptr %a229 - %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 -endif2323: - %t302 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t303 = load { ptr, i64, i64 }, ptr %t302 + call void @finch_str_drop(ptr %a283) + %t284 = load { ptr, i64, i64 }, ptr %a280 + %t285 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 + %t286 = load { ptr, i64, i64 }, ptr %t285 + store { ptr, i64, i64 } %t284, ptr %a288 + store { ptr, i64, i64 } %t286, ptr %a289 + call void @finch_str_concat(ptr %a287, ptr %a288, ptr %a289) + store { ptr, i64, i64 } %t284, ptr %a290 + call void @finch_str_drop(ptr %a290) + %t291 = load { ptr, i64, i64 }, ptr %a287 + store { ptr, i64, i64 } %t291, ptr %a293 + store { ptr, i64, i64 } { ptr @.str.1345, i64 1, i64 0 }, ptr %a294 + call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) + store { ptr, i64, i64 } %t291, ptr %a295 + call void @finch_str_drop(ptr %a295) + %t296 = load { ptr, i64, i64 }, ptr %a292 + call void @finch.gen.fail(ptr %t272, %S.ast.Node %t273, { ptr, i64, i64 } %t296) + store { ptr, i64, i64 } %t296, ptr %a297 + call void @finch_str_drop(ptr %a297) + br label %endif2392 +endif2392: + %t298 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 + %t299 = load { ptr, i64, i64 }, ptr %t298 + store { ptr, i64, i64 } %t299, ptr %a300 + call void @finch_str_copy(ptr %a301, ptr %a300) + %t302 = load { ptr, i64, i64 }, ptr %a301 + %t303 = load { ptr, i64, i64 }, ptr %a262 + store { ptr, i64, i64 } %t302, ptr %a262 store { ptr, i64, i64 } %t303, ptr %a304 - store { ptr, i64, i64 } { ptr @.str.1341, 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 %then2336, label %endif2338 -then2336: - %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.1342, i64 1, i64 0 }, { ptr, i64, i64 } %t310) - %t312 = icmp slt i64 %t311, 0 - br i1 %t312, label %then2339, label %endif2341 -then2339: - %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.1343, 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.1344, 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 %endif2341 -endif2341: - %t325 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1345, 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.1346, i64 1, i64 0 }, 3 - ret %S.ast.Type %t332 -endif2338: - %t333 = load ptr, ptr %a1 - %t334 = icmp eq ptr %t333, null - br i1 %t334, label %panic2342, label %ok2343 -panic2342: - call void @finch_panic(ptr @.str.1347, i64 533, ptr @.str.1348) - unreachable -ok2343: - %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 - call void @finch_str_copy(ptr %a338, ptr %a337) - %t339 = load { ptr, i64, i64 }, ptr %a338 + call void @finch_str_drop(ptr %a304) + br label %endif2389 +endif2389: + %t305 = load ptr, ptr %a1 + %t306 = load { ptr, i64, i64 }, ptr %a262 + %t307 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 + %t308 = load { ptr, i64, i64 }, ptr %t307 + %t309 = load { ptr, i64, i64 }, ptr %a233 + %t310 = load %S.ast.Node, ptr %a3 + %t311 = call %S.ast.Type @finch.gen.instStruct(ptr %t305, { ptr, i64, i64 } %t306, { ptr, i64, i64 } %t308, { ptr, i64, i64 } %t309, %S.ast.Node %t310) + call void @finch_str_drop(ptr %a262) + call void @finch.drop.arr_S_ast_Type(ptr %a233) + ret %S.ast.Type %t311 +endif2380: + %t312 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 + %t313 = load { ptr, i64, i64 }, ptr %t312 + store { ptr, i64, i64 } %t313, ptr %a314 + store { ptr, i64, i64 } { ptr @.str.1346, i64 1, i64 0 }, ptr %a315 + %t316 = call i32 @finch_str_eq(ptr %a314, ptr %a315) + %t317 = icmp ne i32 %t316, 0 + br i1 %t317, label %then2393, label %endif2395 +then2393: + %t318 = load ptr, ptr %a1 + %t319 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 + %t320 = load { ptr, i64, i64 }, ptr %t319 + %t321 = call i64 @finch.gen.findStruct(ptr %t318, { ptr, i64, i64 } { ptr @.str.1347, i64 1, i64 0 }, { ptr, i64, i64 } %t320) + %t322 = icmp slt i64 %t321, 0 + br i1 %t322, label %then2396, label %endif2398 +then2396: + %t323 = load ptr, ptr %a1 + %t324 = load %S.ast.Node, ptr %a3 + %t325 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 + %t326 = load { ptr, i64, i64 }, ptr %t325 + store { ptr, i64, i64 } { ptr @.str.1348, i64 28, i64 0 }, ptr %a328 + store { ptr, i64, i64 } %t326, 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 %a332 + store { ptr, i64, i64 } { ptr @.str.1349, i64 1, i64 0 }, ptr %a333 + call void @finch_str_concat(ptr %a331, ptr %a332, ptr %a333) + store { ptr, i64, i64 } %t330, ptr %a334 + call void @finch_str_drop(ptr %a334) + %t335 = load { ptr, i64, i64 }, ptr %a331 + call void @finch.gen.fail(ptr %t323, %S.ast.Node %t324, { ptr, i64, i64 } %t335) + store { ptr, i64, i64 } %t335, ptr %a336 + call void @finch_str_drop(ptr %a336) + br label %endif2398 +endif2398: + %t337 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1350, i64 6, i64 0 }, 0 + %t338 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 + %t339 = load { ptr, i64, i64 }, ptr %t338 store { ptr, i64, i64 } %t339, ptr %a340 - %t341 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %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 %then2344, label %endif2346 -then2344: + call void @finch_str_copy(ptr %a341, ptr %a340) + %t342 = load { ptr, i64, i64 }, ptr %a341 + %t343 = insertvalue %S.ast.Type %t337, { ptr, i64, i64 } %t342, 2 + %t344 = insertvalue %S.ast.Type %t343, { ptr, i64, i64 } { ptr @.str.1351, i64 1, i64 0 }, 3 + ret %S.ast.Type %t344 +endif2395: %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 %then2347, label %endif2349 -then2347: - %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.1349, 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.1350, 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 - %t363 = load { ptr, i64, i64 }, ptr %t362 - store { ptr, i64, i64 } %t361, ptr %a365 - store { ptr, i64, i64 } %t363, 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.1351, 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 %endif2349 -endif2349: - %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 %endif2346 -endif2346: - %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 %then2350, label %endif2352 -then2350: - %t383 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1352, 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 - call void @finch_str_copy(ptr %a387, ptr %a386) - %t388 = load { ptr, i64, i64 }, ptr %a387 - %t389 = insertvalue %S.ast.Type %t383, { ptr, i64, i64 } %t388, 2 - %t390 = load { ptr, i64, i64 }, ptr %a340 - store { ptr, i64, i64 } %t390, ptr %a391 - call void @finch_str_copy(ptr %a392, ptr %a391) - %t393 = load { ptr, i64, i64 }, ptr %a392 - %t394 = insertvalue %S.ast.Type %t389, { ptr, i64, i64 } %t393, 3 - ret %S.ast.Type %t394 -endif2352: + %t346 = icmp eq ptr %t345, null + br i1 %t346, label %panic2399, label %ok2400 +panic2399: + call void @finch_panic(ptr @.str.1352, i64 553, ptr @.str.1353) + unreachable +ok2400: + %t347 = getelementptr inbounds %S.gen.Gen, ptr %t345, i32 0, i32 14 + %t348 = load { ptr, i64, i64 }, ptr %t347 + store { ptr, i64, i64 } %t348, ptr %a349 + call void @finch_str_copy(ptr %a350, ptr %a349) + %t351 = load { ptr, i64, i64 }, ptr %a350 + store { ptr, i64, i64 } %t351, ptr %a352 + %t353 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 + %t354 = getelementptr inbounds { ptr, i64, i64 }, ptr %t353, i32 0, i32 1 + %t355 = load i64, ptr %t354 + %t356 = icmp sgt i64 %t355, 0 + br i1 %t356, label %then2401, label %endif2403 +then2401: + %t357 = load ptr, ptr %a1 + %t358 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 + %t359 = load { ptr, i64, i64 }, ptr %t358 + %t360 = call i1 @finch.gen.imports(ptr %t357, { ptr, i64, i64 } %t359) + %t361 = xor i1 %t360, true + br i1 %t361, label %then2404, label %endif2406 +then2404: + %t362 = load ptr, ptr %a1 + %t363 = load %S.ast.Node, ptr %a3 + %t364 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 + %t365 = load { ptr, i64, i64 }, ptr %t364 + store { ptr, i64, i64 } { ptr @.str.1354, i64 1, i64 0 }, 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.1355, i64 36, i64 0 }, ptr %a372 + call void @finch_str_concat(ptr %a370, ptr %a371, ptr %a372) + store { ptr, i64, i64 } %t369, ptr %a373 + call void @finch_str_drop(ptr %a373) + %t374 = load { ptr, i64, i64 }, ptr %a370 + %t375 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 + %t376 = load { ptr, i64, i64 }, ptr %t375 + store { ptr, i64, i64 } %t374, ptr %a378 + store { ptr, i64, i64 } %t376, ptr %a379 + call void @finch_str_concat(ptr %a377, ptr %a378, ptr %a379) + store { ptr, i64, i64 } %t374, ptr %a380 + call void @finch_str_drop(ptr %a380) + %t381 = load { ptr, i64, i64 }, ptr %a377 + store { ptr, i64, i64 } %t381, ptr %a383 + store { ptr, i64, i64 } { ptr @.str.1356, i64 1, i64 0 }, ptr %a384 + call void @finch_str_concat(ptr %a382, ptr %a383, ptr %a384) + store { ptr, i64, i64 } %t381, ptr %a385 + call void @finch_str_drop(ptr %a385) + %t386 = load { ptr, i64, i64 }, ptr %a382 + call void @finch.gen.fail(ptr %t362, %S.ast.Node %t363, { ptr, i64, i64 } %t386) + store { ptr, i64, i64 } %t386, ptr %a387 + call void @finch_str_drop(ptr %a387) + br label %endif2406 +endif2406: + %t388 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 + %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 + %t393 = load { ptr, i64, i64 }, ptr %a352 + store { ptr, i64, i64 } %t392, ptr %a352 + store { ptr, i64, i64 } %t393, ptr %a394 + call void @finch_str_drop(ptr %a394) + br label %endif2403 +endif2403: %t395 = load ptr, ptr %a1 - %t396 = load { ptr, i64, i64 }, ptr %a340 + %t396 = load { ptr, i64, i64 }, ptr %a352 %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 %then2353, label %endif2355 -then2353: - %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.from2356 -logic.from2356: - br i1 %t404, label %logic.rhs2357, label %logic.end2358 -logic.rhs2357: - %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.1353, i64 1, i64 0 }, { ptr, i64, i64 } %t407) - %t409 = icmp sge i64 %t408, 0 - br label %logic.rend2359 -logic.rend2359: - br label %logic.end2358 -logic.end2358: - %t410 = phi i1 [ false, %logic.from2356 ], [ %t409, %logic.rend2359 ] - br i1 %t410, label %then2360, label %endif2362 -then2360: - %t411 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1354, 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.1355, i64 1, i64 0 }, 3 - ret %S.ast.Type %t418 -endif2362: - %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.1356, 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.1357, 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 %endif2355 -endif2355: - %t431 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1358, 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 - call void @finch_str_copy(ptr %a435, ptr %a434) - %t436 = load { ptr, i64, i64 }, ptr %a435 - %t437 = insertvalue %S.ast.Type %t431, { ptr, i64, i64 } %t436, 2 - %t438 = load { ptr, i64, i64 }, ptr %a340 - store { ptr, i64, i64 } %t438, ptr %a439 - call void @finch_str_copy(ptr %a440, ptr %a439) - %t441 = load { ptr, i64, i64 }, ptr %a440 - %t442 = insertvalue %S.ast.Type %t437, { ptr, i64, i64 } %t441, 3 - ret %S.ast.Type %t442 + %t399 = call i64 @finch.gen.findEnum(ptr %t395, { ptr, i64, i64 } %t396, { ptr, i64, i64 } %t398) + %t400 = icmp sge i64 %t399, 0 + br i1 %t400, label %then2407, label %endif2409 +then2407: + %t401 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1357, i64 4, i64 0 }, 0 + %t402 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 + %t403 = load { ptr, i64, i64 }, ptr %t402 + store { ptr, i64, i64 } %t403, ptr %a404 + call void @finch_str_copy(ptr %a405, ptr %a404) + %t406 = load { ptr, i64, i64 }, ptr %a405 + %t407 = insertvalue %S.ast.Type %t401, { ptr, i64, i64 } %t406, 2 + %t408 = load { ptr, i64, i64 }, ptr %a352 + store { ptr, i64, i64 } %t408, ptr %a409 + call void @finch_str_copy(ptr %a410, ptr %a409) + %t411 = load { ptr, i64, i64 }, ptr %a410 + %t412 = insertvalue %S.ast.Type %t407, { ptr, i64, i64 } %t411, 3 + call void @finch_str_drop(ptr %a352) + ret %S.ast.Type %t412 +endif2409: + %t413 = load ptr, ptr %a1 + %t414 = load { ptr, i64, i64 }, ptr %a352 + %t415 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 + %t416 = load { ptr, i64, i64 }, ptr %t415 + %t417 = call i64 @finch.gen.findStruct(ptr %t413, { ptr, i64, i64 } %t414, { ptr, i64, i64 } %t416) + %t418 = icmp slt i64 %t417, 0 + br i1 %t418, label %then2410, label %endif2412 +then2410: + %t419 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 + %t420 = getelementptr inbounds { ptr, i64, i64 }, ptr %t419, i32 0, i32 1 + %t421 = load i64, ptr %t420 + %t422 = icmp eq i64 %t421, 0 + br label %logic.from2413 +logic.from2413: + br i1 %t422, label %logic.rhs2414, label %logic.end2415 +logic.rhs2414: + %t423 = load ptr, ptr %a1 + %t424 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 + %t425 = load { ptr, i64, i64 }, ptr %t424 + %t426 = call i64 @finch.gen.findStruct(ptr %t423, { ptr, i64, i64 } { ptr @.str.1358, i64 1, i64 0 }, { ptr, i64, i64 } %t425) + %t427 = icmp sge i64 %t426, 0 + br label %logic.rend2416 +logic.rend2416: + br label %logic.end2415 +logic.end2415: + %t428 = phi i1 [ false, %logic.from2413 ], [ %t427, %logic.rend2416 ] + br i1 %t428, label %then2417, label %endif2419 +then2417: + %t429 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1359, i64 6, i64 0 }, 0 + %t430 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 + %t431 = load { ptr, i64, i64 }, ptr %t430 + store { ptr, i64, i64 } %t431, ptr %a432 + call void @finch_str_copy(ptr %a433, ptr %a432) + %t434 = load { ptr, i64, i64 }, ptr %a433 + %t435 = insertvalue %S.ast.Type %t429, { ptr, i64, i64 } %t434, 2 + %t436 = insertvalue %S.ast.Type %t435, { ptr, i64, i64 } { ptr @.str.1360, i64 1, i64 0 }, 3 + call void @finch_str_drop(ptr %a352) + ret %S.ast.Type %t436 +endif2419: + %t437 = load ptr, ptr %a1 + %t438 = load %S.ast.Node, ptr %a3 + %t439 = load %S.ast.Type, ptr %a2 + %t440 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t439) + store { ptr, i64, i64 } { ptr @.str.1361, i64 24, i64 0 }, ptr %a442 + store { ptr, i64, i64 } %t440, ptr %a443 + call void @finch_str_concat(ptr %a441, ptr %a442, ptr %a443) + store { ptr, i64, i64 } %t440, ptr %a444 + call void @finch_str_drop(ptr %a444) + %t445 = load { ptr, i64, i64 }, ptr %a441 + store { ptr, i64, i64 } %t445, ptr %a447 + store { ptr, i64, i64 } { ptr @.str.1362, i64 1, i64 0 }, ptr %a448 + call void @finch_str_concat(ptr %a446, ptr %a447, ptr %a448) + store { ptr, i64, i64 } %t445, ptr %a449 + call void @finch_str_drop(ptr %a449) + %t450 = load { ptr, i64, i64 }, ptr %a446 + call void @finch.gen.fail(ptr %t437, %S.ast.Node %t438, { ptr, i64, i64 } %t450) + store { ptr, i64, i64 } %t450, ptr %a451 + call void @finch_str_drop(ptr %a451) + br label %endif2412 +endif2412: + %t452 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1363, i64 6, i64 0 }, 0 + %t453 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 + %t454 = load { ptr, i64, i64 }, ptr %t453 + store { ptr, i64, i64 } %t454, ptr %a455 + call void @finch_str_copy(ptr %a456, ptr %a455) + %t457 = load { ptr, i64, i64 }, ptr %a456 + %t458 = insertvalue %S.ast.Type %t452, { ptr, i64, i64 } %t457, 2 + %t459 = load { ptr, i64, i64 }, ptr %a352 + store { ptr, i64, i64 } %t459, ptr %a460 + call void @finch_str_copy(ptr %a461, ptr %a460) + %t462 = load { ptr, i64, i64 }, ptr %a461 + %t463 = insertvalue %S.ast.Type %t458, { ptr, i64, i64 } %t462, 3 + call void @finch_str_drop(ptr %a352) + ret %S.ast.Type %t463 } define internal { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %p0) { @@ -23466,33 +26273,42 @@ entry: %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 + %a17 = alloca { ptr, i64, i64 }, align 16 %a19 = 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 + %a23 = alloca { ptr, i64, i64 }, align 16 + %a25 = 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.1360, i64 1, i64 0 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.1361, i64 1, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.1365, i64 1, i64 0 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.1366, 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.1363, i64 1, i64 0 }, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.1364, i64 0, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.1368, i64 1, i64 0 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.1369, 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.1366, i64 1, i64 0 }, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.1367, 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.1369, i64 1, i64 0 }, ptr %a20 - store { ptr, i64, i64 } { ptr @.str.1370, 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 + store { ptr, i64, i64 } %t7, ptr %a13 + call void @finch_str_drop(ptr %a13) + store { ptr, i64, i64 } %t12, ptr %a14 + store { ptr, i64, i64 } { ptr @.str.1371, i64 1, i64 0 }, ptr %a16 + store { ptr, i64, i64 } { ptr @.str.1372, i64 1, i64 0 }, ptr %a17 + call void @finch_str_replace(ptr %a15, ptr %a14, ptr %a16, ptr %a17) + %t18 = load { ptr, i64, i64 }, ptr %a15 + store { ptr, i64, i64 } %t12, ptr %a19 + call void @finch_str_drop(ptr %a19) + store { ptr, i64, i64 } %t18, ptr %a20 + store { ptr, i64, i64 } { ptr @.str.1374, i64 1, i64 0 }, ptr %a22 + store { ptr, i64, i64 } { ptr @.str.1375, i64 0, i64 0 }, ptr %a23 + call void @finch_str_replace(ptr %a21, ptr %a20, ptr %a22, ptr %a23) + %t24 = load { ptr, i64, i64 }, ptr %a21 + store { ptr, i64, i64 } %t18, ptr %a25 + call void @finch_str_drop(ptr %a25) + ret { ptr, i64, i64 } %t24 } define internal { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %p0) { @@ -23504,10 +26320,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 %then2363, label %endif2365 -then2363: - ret { ptr, i64, i64 } { ptr @.str.1371, i64 4, i64 0 } -endif2365: + br i1 %t4, label %then2420, label %endif2422 +then2420: + ret { ptr, i64, i64 } { ptr @.str.1376, i64 4, i64 0 } +endif2422: %t5 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t5, ptr %a6 call void @finch_str_copy(ptr %a7, ptr %a6) @@ -23530,48 +26346,58 @@ entry: %a26 = alloca { ptr, i64, i64 }, align 16 %a27 = alloca { ptr, i64, i64 }, align 16 %a28 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 + %a29 = alloca { ptr, i64, i64 }, align 16 %a32 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 + %a33 = alloca { ptr, i64, i64 }, align 16 %a37 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 + %a38 = alloca { ptr, i64, i64 }, align 16 %a42 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 + %a43 = alloca { ptr, i64, i64 }, align 16 %a47 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 + %a48 = alloca { ptr, i64, i64 }, align 16 %a53 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 + %a54 = alloca { ptr, i64, i64 }, align 16 %a58 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 + %a59 = alloca { ptr, i64, i64 }, align 16 + %a64 = 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 %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 %a71 = 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 + %a72 = alloca { ptr, i64, i64 }, align 16 + %a73 = alloca { ptr, i64, i64 }, align 16 + %a74 = alloca { ptr, i64, i64 }, align 16 + %a85 = alloca { ptr, i64, i64 }, align 16 %a86 = 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 %a91 = alloca { ptr, i64, i64 }, align 16 %a92 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 + %a93 = alloca { ptr, i64, i64 }, align 16 + %a94 = alloca { ptr, i64, i64 }, align 16 %a97 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 + %a98 = alloca { ptr, i64, i64 }, align 16 %a102 = alloca { ptr, i64, i64 }, align 16 + %a103 = alloca { ptr, i64, i64 }, align 16 %a107 = alloca { ptr, i64, i64 }, align 16 %a108 = 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 - %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 + %a121 = alloca { ptr, i64, i64 }, align 16 + %a122 = alloca { ptr, i64, i64 }, align 16 + %a123 = alloca { ptr, i64, i64 }, align 16 %a125 = 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 + %a134 = 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 store ptr %p0, ptr %a1 store %S.ast.Type %p1, ptr %a2 %t3 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 @@ -23582,194 +26408,225 @@ 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.1372, i64 4, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.1377, 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 %then2366, label %endif2368 -then2366: - ret { ptr, i64, i64 } { ptr @.str.1373, i64 2, i64 0 } -endif2368: + br i1 %t13, label %then2423, label %endif2425 +then2423: + call void @finch_str_drop(ptr %a8) + ret { ptr, i64, i64 } { ptr @.str.1378, i64 2, i64 0 } +endif2425: %t14 = load %S.ast.Type, ptr %a2 %t15 = call i1 @finch.gen.isInt(%S.ast.Type %t14) - br label %logic.from2369 -logic.from2369: - br i1 %t15, label %logic.end2371, label %logic.rhs2370 -logic.rhs2370: + br label %logic.from2426 +logic.from2426: + br i1 %t15, label %logic.end2428, label %logic.rhs2427 +logic.rhs2427: %t16 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t16, ptr %a17 - store { ptr, i64, i64 } { ptr @.str.1374, i64 4, i64 0 }, ptr %a18 + store { ptr, i64, i64 } { ptr @.str.1379, 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.rend2372 -logic.rend2372: - br label %logic.end2371 -logic.end2371: - %t21 = phi i1 [ true, %logic.from2369 ], [ %t20, %logic.rend2372 ] - br i1 %t21, label %then2373, label %endif2375 -then2373: + br label %logic.rend2429 +logic.rend2429: + br label %logic.end2428 +logic.end2428: + %t21 = phi i1 [ true, %logic.from2426 ], [ %t20, %logic.rend2429 ] + br i1 %t21, label %then2430, label %endif2432 +then2430: %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.1375, i64 1, i64 0 }, ptr %a27 + store { ptr, i64, i64 } { ptr @.str.1380, 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 -endif2375: - %t30 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t30, ptr %a31 - store { ptr, i64, i64 } { ptr @.str.1376, 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 %then2376, label %endif2378 -then2376: - ret { ptr, i64, i64 } { ptr @.str.1377, i64 6, i64 0 } -endif2378: - %t35 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t35, ptr %a36 - store { ptr, i64, i64 } { ptr @.str.1378, 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 %then2379, label %endif2381 -then2379: - ret { ptr, i64, i64 } { ptr @.str.1379, i64 5, i64 0 } -endif2381: - %t40 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t40, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.1380, 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.from2382 -logic.from2382: - br i1 %t44, label %logic.end2384, label %logic.rhs2383 -logic.rhs2383: - %t45 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t45, ptr %a46 - store { ptr, i64, i64 } { ptr @.str.1381, 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.rend2385 -logic.rend2385: - br label %logic.end2384 -logic.end2384: - %t50 = phi i1 [ true, %logic.from2382 ], [ %t49, %logic.rend2385 ] - br i1 %t50, label %then2386, label %endif2388 -then2386: - ret { ptr, i64, i64 } { ptr @.str.1382, i64 17, i64 0 } -endif2388: - %t51 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t51, ptr %a52 - store { ptr, i64, i64 } { ptr @.str.1383, 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 %then2389, label %endif2391 -then2389: - ret { ptr, i64, i64 } { ptr @.str.1384, i64 37, i64 0 } -endif2391: - %t56 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t56, ptr %a57 - store { ptr, i64, i64 } { ptr @.str.1385, 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 %then2392, label %endif2394 -then2392: - %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.1386, 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.1387, 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 - %t74 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t75 = load { ptr, i64, i64 }, ptr %t74 - %t76 = extractvalue { ptr, i64, i64 } %t75, 1 - %t77 = icmp uge i64 0, %t76 - br i1 %t77, label %range2395, label %inrange2396 -range2395: - call void @finch_panic_index(ptr @.str.1388, i64 586, i64 0, i64 %t76) + store { ptr, i64, i64 } %t25, ptr %a29 + call void @finch_str_drop(ptr %a29) + %t30 = load { ptr, i64, i64 }, ptr %a26 + call void @finch_str_drop(ptr %a8) + ret { ptr, i64, i64 } %t30 +endif2432: + %t31 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t31, ptr %a32 + store { ptr, i64, i64 } { ptr @.str.1381, i64 5, i64 0 }, ptr %a33 + %t34 = call i32 @finch_str_eq(ptr %a32, ptr %a33) + %t35 = icmp ne i32 %t34, 0 + br i1 %t35, label %then2433, label %endif2435 +then2433: + call void @finch_str_drop(ptr %a8) + ret { ptr, i64, i64 } { ptr @.str.1382, i64 6, i64 0 } +endif2435: + %t36 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t36, ptr %a37 + store { ptr, i64, i64 } { ptr @.str.1383, i64 3, i64 0 }, ptr %a38 + %t39 = call i32 @finch_str_eq(ptr %a37, ptr %a38) + %t40 = icmp ne i32 %t39, 0 + br i1 %t40, label %then2436, label %endif2438 +then2436: + call void @finch_str_drop(ptr %a8) + ret { ptr, i64, i64 } { ptr @.str.1384, i64 5, i64 0 } +endif2438: + %t41 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t41, ptr %a42 + store { ptr, i64, i64 } { ptr @.str.1385, 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.from2439 +logic.from2439: + br i1 %t45, label %logic.end2441, label %logic.rhs2440 +logic.rhs2440: + %t46 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t46, ptr %a47 + store { ptr, i64, i64 } { ptr @.str.1386, i64 5, i64 0 }, ptr %a48 + %t49 = call i32 @finch_str_eq(ptr %a47, ptr %a48) + %t50 = icmp ne i32 %t49, 0 + br label %logic.rend2442 +logic.rend2442: + br label %logic.end2441 +logic.end2441: + %t51 = phi i1 [ true, %logic.from2439 ], [ %t50, %logic.rend2442 ] + br i1 %t51, label %then2443, label %endif2445 +then2443: + call void @finch_str_drop(ptr %a8) + ret { ptr, i64, i64 } { ptr @.str.1387, i64 17, i64 0 } +endif2445: + %t52 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t52, ptr %a53 + store { ptr, i64, i64 } { ptr @.str.1388, 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 %then2446, label %endif2448 +then2446: + call void @finch_str_drop(ptr %a8) + ret { ptr, i64, i64 } { ptr @.str.1389, i64 37, i64 0 } +endif2448: + %t57 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t57, ptr %a58 + store { ptr, i64, i64 } { ptr @.str.1390, 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 %then2449, label %endif2451 +then2449: + %t62 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 4 + %t63 = load i64, ptr %t62 + call void @finch_str_from_int(ptr %a64, i64 %t63) + %t65 = load { ptr, i64, i64 }, ptr %a64 + store { ptr, i64, i64 } { ptr @.str.1391, i64 1, i64 0 }, ptr %a67 + store { ptr, i64, i64 } %t65, ptr %a68 + call void @finch_str_concat(ptr %a66, ptr %a67, ptr %a68) + store { ptr, i64, i64 } %t65, ptr %a69 + call void @finch_str_drop(ptr %a69) + %t70 = load { ptr, i64, i64 }, ptr %a66 + store { ptr, i64, i64 } %t70, ptr %a72 + store { ptr, i64, i64 } { ptr @.str.1392, i64 3, i64 0 }, ptr %a73 + call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73) + store { ptr, i64, i64 } %t70, ptr %a74 + call void @finch_str_drop(ptr %a74) + %t75 = load { ptr, i64, i64 }, ptr %a71 + %t76 = load ptr, ptr %a1 + %t77 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t78 = load { ptr, i64, i64 }, ptr %t77 + %t79 = extractvalue { ptr, i64, i64 } %t78, 1 + %t80 = icmp uge i64 0, %t79 + br i1 %t80, label %range2452, label %inrange2453 +range2452: + call void @finch_panic_index(ptr @.str.1393, i64 606, i64 0, i64 %t79) unreachable -inrange2396: - %t78 = extractvalue { ptr, i64, i64 } %t75, 0 - %t79 = getelementptr inbounds %S.ast.Type, ptr %t78, i64 0 - %t80 = load %S.ast.Type, ptr %t79 - %t81 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t73, %S.ast.Type %t80) - store { ptr, i64, i64 } %t72, 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.1389, 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 -endif2394: - %t90 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t90, ptr %a91 - store { ptr, i64, i64 } { ptr @.str.1390, 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 %then2397, label %endif2399 -then2397: - ret { ptr, i64, i64 } { ptr @.str.1391, i64 3, i64 0 } -endif2399: - %t95 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t95, ptr %a96 - store { ptr, i64, i64 } { ptr @.str.1392, 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.from2400 -logic.from2400: - br i1 %t99, label %logic.end2402, label %logic.rhs2401 -logic.rhs2401: - %t100 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t100, ptr %a101 - store { ptr, i64, i64 } { ptr @.str.1393, 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.rend2403 -logic.rend2403: - br label %logic.end2402 -logic.end2402: - %t105 = phi i1 [ true, %logic.from2400 ], [ %t104, %logic.rend2403 ] - br i1 %t105, label %then2404, label %endif2406 -then2404: - ret { ptr, i64, i64 } { ptr @.str.1394, i64 3, i64 0 } -endif2406: +inrange2453: + %t81 = extractvalue { ptr, i64, i64 } %t78, 0 + %t82 = getelementptr inbounds %S.ast.Type, ptr %t81, i64 0 + %t83 = load %S.ast.Type, ptr %t82 + %t84 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t76, %S.ast.Type %t83) + store { ptr, i64, i64 } %t75, ptr %a86 + store { ptr, i64, i64 } %t84, ptr %a87 + call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) + store { ptr, i64, i64 } %t75, ptr %a88 + call void @finch_str_drop(ptr %a88) + store { ptr, i64, i64 } %t84, ptr %a89 + call void @finch_str_drop(ptr %a89) + %t90 = load { ptr, i64, i64 }, ptr %a85 + store { ptr, i64, i64 } %t90, ptr %a92 + store { ptr, i64, i64 } { ptr @.str.1394, i64 1, i64 0 }, ptr %a93 + call void @finch_str_concat(ptr %a91, ptr %a92, ptr %a93) + store { ptr, i64, i64 } %t90, ptr %a94 + call void @finch_str_drop(ptr %a94) + %t95 = load { ptr, i64, i64 }, ptr %a91 + call void @finch_str_drop(ptr %a8) + ret { ptr, i64, i64 } %t95 +endif2451: + %t96 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t96, ptr %a97 + store { ptr, i64, i64 } { ptr @.str.1395, i64 4, i64 0 }, ptr %a98 + %t99 = call i32 @finch_str_eq(ptr %a97, ptr %a98) + %t100 = icmp ne i32 %t99, 0 + br i1 %t100, label %then2454, label %endif2456 +then2454: + call void @finch_str_drop(ptr %a8) + ret { ptr, i64, i64 } { ptr @.str.1396, i64 3, i64 0 } +endif2456: + %t101 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t101, ptr %a102 + store { ptr, i64, i64 } { ptr @.str.1397, 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.from2457 +logic.from2457: + br i1 %t105, label %logic.end2459, label %logic.rhs2458 +logic.rhs2458: %t106 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t106, ptr %a107 - store { ptr, i64, i64 } { ptr @.str.1395, i64 4, i64 0 }, ptr %a108 + store { ptr, i64, i64 } { ptr @.str.1398, 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 %then2407, label %endif2409 -then2407: - ret { ptr, i64, i64 } { ptr @.str.1396, i64 4, i64 0 } -endif2409: - %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.1397, 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.1398, 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 - %t123 = load { ptr, i64, i64 }, ptr %t122 - %t124 = call { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %t123) - store { ptr, i64, i64 } %t121, ptr %a126 - store { ptr, i64, i64 } %t124, ptr %a127 + br label %logic.rend2460 +logic.rend2460: + br label %logic.end2459 +logic.end2459: + %t111 = phi i1 [ true, %logic.from2457 ], [ %t110, %logic.rend2460 ] + br i1 %t111, label %then2461, label %endif2463 +then2461: + call void @finch_str_drop(ptr %a8) + ret { ptr, i64, i64 } { ptr @.str.1399, i64 3, i64 0 } +endif2463: + %t112 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t112, ptr %a113 + store { ptr, i64, i64 } { ptr @.str.1400, i64 4, i64 0 }, ptr %a114 + %t115 = call i32 @finch_str_eq(ptr %a113, ptr %a114) + %t116 = icmp ne i32 %t115, 0 + br i1 %t116, label %then2464, label %endif2466 +then2464: + call void @finch_str_drop(ptr %a8) + ret { ptr, i64, i64 } { ptr @.str.1401, i64 4, i64 0 } +endif2466: + %t117 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 + %t118 = load { ptr, i64, i64 }, ptr %t117 + %t119 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t118) + store { ptr, i64, i64 } { ptr @.str.1402, i64 3, i64 0 }, ptr %a121 + store { ptr, i64, i64 } %t119, ptr %a122 + call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122) + store { ptr, i64, i64 } %t119, ptr %a123 + call void @finch_str_drop(ptr %a123) + %t124 = load { ptr, i64, i64 }, ptr %a120 + store { ptr, i64, i64 } %t124, ptr %a126 + store { ptr, i64, i64 } { ptr @.str.1403, i64 1, i64 0 }, ptr %a127 call void @finch_str_concat(ptr %a125, ptr %a126, ptr %a127) - %t128 = load { ptr, i64, i64 }, ptr %a125 - ret { ptr, i64, i64 } %t128 + store { ptr, i64, i64 } %t124, ptr %a128 + call void @finch_str_drop(ptr %a128) + %t129 = load { ptr, i64, i64 }, ptr %a125 + %t130 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 + %t131 = load { ptr, i64, i64 }, ptr %t130 + %t132 = call { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %t131) + store { ptr, i64, i64 } %t129, ptr %a134 + store { ptr, i64, i64 } %t132, ptr %a135 + call void @finch_str_concat(ptr %a133, ptr %a134, ptr %a135) + store { ptr, i64, i64 } %t129, ptr %a136 + call void @finch_str_drop(ptr %a136) + store { ptr, i64, i64 } %t132, ptr %a137 + call void @finch_str_drop(ptr %a137) + %t138 = load { ptr, i64, i64 }, ptr %a133 + call void @finch_str_drop(ptr %a8) + ret { ptr, i64, i64 } %t138 } define internal { ptr, i64, i64 } @finch.gen.retTy(ptr %p0, %S.gen.FnSig %p1) { @@ -23780,51 +26637,59 @@ entry: %a14 = alloca { ptr, i64, i64 }, align 16 %a15 = 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 + %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 + %a30 = alloca { ptr, i64, i64 }, align 16 + %a31 = alloca { ptr, i64, i64 }, align 16 + %a32 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store %S.gen.FnSig %p1, ptr %a2 %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 %then2410, label %endif2412 -then2410: + br i1 %t5, label %then2467, label %endif2469 +then2467: %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 -endif2412: - store { ptr, i64, i64 } { ptr @.str.1399, i64 2, i64 0 }, ptr %a10 +endif2469: + store { ptr, i64, i64 } { ptr @.str.1404, 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.1400, i64 4, i64 0 }, ptr %a15 + store { ptr, i64, i64 } { ptr @.str.1405, 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 %then2413, label %endif2415 -then2413: + br i1 %t17, label %then2470, label %endif2472 +then2470: %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 %endif2415 -endif2415: %t22 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.1401, 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.1402, 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 + store { ptr, i64, i64 } %t21, ptr %a10 + store { ptr, i64, i64 } %t22, ptr %a23 + call void @finch_str_drop(ptr %a23) + br label %endif2472 +endif2472: + %t24 = load { ptr, i64, i64 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.1406, 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.1407, i64 21, i64 0 }, ptr %a31 + call void @finch_str_concat(ptr %a29, ptr %a30, ptr %a31) + store { ptr, i64, i64 } %t28, ptr %a32 + call void @finch_str_drop(ptr %a32) + %t33 = load { ptr, i64, i64 }, ptr %a29 + call void @finch_str_drop(ptr %a10) + ret { ptr, i64, i64 } %t33 } define internal { ptr, i64, i64 } @finch.gen.nodeKey(%S.ast.Node %p0) { @@ -23837,25 +26702,33 @@ entry: %a12 = 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 - %a17 = alloca { ptr, i64, i64 }, align 16 %a18 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 + %a19 = 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 + %a27 = 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 + %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 %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = 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 + %a44 = alloca { ptr, i64, i64 }, align 16 + %a45 = alloca { ptr, i64, i64 }, align 16 + %a46 = alloca { ptr, i64, i64 }, align 16 store %S.ast.Node %p0, ptr %a1 %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.1403, i64 1, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.1408, 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 @@ -23865,32 +26738,48 @@ entry: store { ptr, i64, i64 } %t7, 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.1404, 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 - %t21 = load i64, ptr %t20 - call void @finch_str_from_int(ptr %a22, i64 %t21) - %t23 = load { ptr, i64, i64 }, ptr %a22 - store { ptr, i64, i64 } %t19, 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.1405, 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 - %t33 = load i64, ptr %t32 - call void @finch_str_from_int(ptr %a34, i64 %t33) - %t35 = load { ptr, i64, i64 }, ptr %a34 - store { ptr, i64, i64 } %t31, 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 - ret { ptr, i64, i64 } %t39 + store { ptr, i64, i64 } %t7, ptr %a15 + call void @finch_str_drop(ptr %a15) + store { ptr, i64, i64 } %t11, ptr %a16 + call void @finch_str_drop(ptr %a16) + %t17 = load { ptr, i64, i64 }, ptr %a12 + store { ptr, i64, i64 } %t17, ptr %a19 + store { ptr, i64, i64 } { ptr @.str.1409, i64 1, i64 0 }, ptr %a20 + call void @finch_str_concat(ptr %a18, ptr %a19, ptr %a20) + store { ptr, i64, i64 } %t17, ptr %a21 + call void @finch_str_drop(ptr %a21) + %t22 = load { ptr, i64, i64 }, ptr %a18 + %t23 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 12 + %t24 = load i64, ptr %t23 + call void @finch_str_from_int(ptr %a25, i64 %t24) + %t26 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t22, ptr %a28 + store { ptr, i64, i64 } %t26, ptr %a29 + call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) + store { ptr, i64, i64 } %t22, ptr %a30 + call void @finch_str_drop(ptr %a30) + store { ptr, i64, i64 } %t26, ptr %a31 + call void @finch_str_drop(ptr %a31) + %t32 = load { ptr, i64, i64 }, ptr %a27 + store { ptr, i64, i64 } %t32, ptr %a34 + store { ptr, i64, i64 } { ptr @.str.1410, i64 1, i64 0 }, ptr %a35 + call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) + store { ptr, i64, i64 } %t32, ptr %a36 + call void @finch_str_drop(ptr %a36) + %t37 = load { ptr, i64, i64 }, ptr %a33 + %t38 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 13 + %t39 = load i64, ptr %t38 + call void @finch_str_from_int(ptr %a40, i64 %t39) + %t41 = load { ptr, i64, i64 }, ptr %a40 + store { ptr, i64, i64 } %t37, ptr %a43 + store { ptr, i64, i64 } %t41, ptr %a44 + call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) + store { ptr, i64, i64 } %t37, ptr %a45 + call void @finch_str_drop(ptr %a45) + store { ptr, i64, i64 } %t41, ptr %a46 + call void @finch_str_drop(ptr %a46) + %t47 = load { ptr, i64, i64 }, ptr %a42 + ret { ptr, i64, i64 } %t47 } define internal { ptr, i64, i64 } @finch.gen.zeroOf(%S.ast.Type %p0) { @@ -23918,77 +26807,82 @@ 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.from2416 -logic.from2416: - br i1 %t9, label %logic.end2418, label %logic.rhs2417 -logic.rhs2417: + br label %logic.from2473 +logic.from2473: + br i1 %t9, label %logic.end2475, label %logic.rhs2474 +logic.rhs2474: %t10 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t10, ptr %a11 - store { ptr, i64, i64 } { ptr @.str.1406, i64 4, i64 0 }, ptr %a12 + store { ptr, i64, i64 } { ptr @.str.1411, 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.rend2419 -logic.rend2419: - br label %logic.end2418 -logic.end2418: - %t15 = phi i1 [ true, %logic.from2416 ], [ %t14, %logic.rend2419 ] - br label %logic.from2420 -logic.from2420: - br i1 %t15, label %logic.end2422, label %logic.rhs2421 -logic.rhs2421: + br label %logic.rend2476 +logic.rend2476: + br label %logic.end2475 +logic.end2475: + %t15 = phi i1 [ true, %logic.from2473 ], [ %t14, %logic.rend2476 ] + br label %logic.from2477 +logic.from2477: + br i1 %t15, label %logic.end2479, label %logic.rhs2478 +logic.rhs2478: %t16 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t16, ptr %a17 - store { ptr, i64, i64 } { ptr @.str.1407, i64 4, i64 0 }, ptr %a18 + store { ptr, i64, i64 } { ptr @.str.1412, 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.rend2423 -logic.rend2423: - br label %logic.end2422 -logic.end2422: - %t21 = phi i1 [ true, %logic.from2420 ], [ %t20, %logic.rend2423 ] - br i1 %t21, label %then2424, label %endif2426 -then2424: - ret { ptr, i64, i64 } { ptr @.str.1408, i64 1, i64 0 } -endif2426: + br label %logic.rend2480 +logic.rend2480: + br label %logic.end2479 +logic.end2479: + %t21 = phi i1 [ true, %logic.from2477 ], [ %t20, %logic.rend2480 ] + br i1 %t21, label %then2481, label %endif2483 +then2481: + call void @finch_str_drop(ptr %a7) + ret { ptr, i64, i64 } { ptr @.str.1413, i64 1, i64 0 } +endif2483: %t22 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t22, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.1409, i64 4, i64 0 }, ptr %a24 + store { ptr, i64, i64 } { ptr @.str.1414, 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 %then2427, label %endif2429 -then2427: - ret { ptr, i64, i64 } { ptr @.str.1410, i64 5, i64 0 } -endif2429: + br i1 %t26, label %then2484, label %endif2486 +then2484: + call void @finch_str_drop(ptr %a7) + ret { ptr, i64, i64 } { ptr @.str.1415, i64 5, i64 0 } +endif2486: %t27 = load %S.ast.Type, ptr %a1 %t28 = call i1 @finch.gen.isFloat(%S.ast.Type %t27) - br i1 %t28, label %then2430, label %endif2432 -then2430: - ret { ptr, i64, i64 } { ptr @.str.1411, i64 3, i64 0 } -endif2432: + br i1 %t28, label %then2487, label %endif2489 +then2487: + call void @finch_str_drop(ptr %a7) + ret { ptr, i64, i64 } { ptr @.str.1416, i64 3, i64 0 } +endif2489: %t29 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t29, ptr %a30 - store { ptr, i64, i64 } { ptr @.str.1412, i64 3, i64 0 }, ptr %a31 + store { ptr, i64, i64 } { ptr @.str.1417, 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.from2433 -logic.from2433: - br i1 %t33, label %logic.end2435, label %logic.rhs2434 -logic.rhs2434: + br label %logic.from2490 +logic.from2490: + br i1 %t33, label %logic.end2492, label %logic.rhs2491 +logic.rhs2491: %t34 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t34, ptr %a35 - store { ptr, i64, i64 } { ptr @.str.1413, i64 4, i64 0 }, ptr %a36 + store { ptr, i64, i64 } { ptr @.str.1418, 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.rend2436 -logic.rend2436: - br label %logic.end2435 -logic.end2435: - %t39 = phi i1 [ true, %logic.from2433 ], [ %t38, %logic.rend2436 ] - br i1 %t39, label %then2437, label %endif2439 -then2437: - ret { ptr, i64, i64 } { ptr @.str.1414, i64 4, i64 0 } -endif2439: - ret { ptr, i64, i64 } { ptr @.str.1415, i64 15, i64 0 } + br label %logic.rend2493 +logic.rend2493: + br label %logic.end2492 +logic.end2492: + %t39 = phi i1 [ true, %logic.from2490 ], [ %t38, %logic.rend2493 ] + br i1 %t39, label %then2494, label %endif2496 +then2494: + call void @finch_str_drop(ptr %a7) + ret { ptr, i64, i64 } { ptr @.str.1419, i64 4, i64 0 } +endif2496: + call void @finch_str_drop(ptr %a7) + ret { ptr, i64, i64 } { ptr @.str.1420, i64 15, i64 0 } } define internal { ptr, i64, i64 } @finch.gen.sizeOf(ptr %p0, %S.ast.Type %p1) { @@ -23998,23 +26892,29 @@ entry: %a6 = alloca { ptr, i64, i64 }, align 16 %a7 = alloca { ptr, i64, i64 }, align 16 %a8 = alloca { ptr, i64, i64 }, align 16 - %a10 = 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 + %a14 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store %S.ast.Type %p1, ptr %a2 %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.1416, i64 29, i64 0 }, ptr %a7 + store { ptr, i64, i64 } { ptr @.str.1421, 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.1417, 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 + store { ptr, i64, i64 } %t5, ptr %a9 + call void @finch_str_drop(ptr %a9) + %t10 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t10, ptr %a12 + store { ptr, i64, i64 } { ptr @.str.1422, i64 26, i64 0 }, ptr %a13 + call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13) + store { ptr, i64, i64 } %t10, ptr %a14 + call void @finch_str_drop(ptr %a14) + %t15 = load { ptr, i64, i64 }, ptr %a11 + ret { ptr, i64, i64 } %t15 } define internal i1 @finch.gen.owning(ptr %p0, %S.ast.Type %p1) { @@ -24034,59 +26934,59 @@ 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.1418, i64 3, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.1423, 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.from2440 -logic.from2440: - br i1 %t8, label %logic.end2442, label %logic.rhs2441 -logic.rhs2441: + br label %logic.from2497 +logic.from2497: + br i1 %t8, label %logic.end2499, label %logic.rhs2498 +logic.rhs2498: %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.1419, i64 5, i64 0 }, ptr %a12 + store { ptr, i64, i64 } { ptr @.str.1424, 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.rend2443 -logic.rend2443: - br label %logic.end2442 -logic.end2442: - %t15 = phi i1 [ true, %logic.from2440 ], [ %t14, %logic.rend2443 ] - br label %logic.from2444 -logic.from2444: - br i1 %t15, label %logic.end2446, label %logic.rhs2445 -logic.rhs2445: + br label %logic.rend2500 +logic.rend2500: + br label %logic.end2499 +logic.end2499: + %t15 = phi i1 [ true, %logic.from2497 ], [ %t14, %logic.rend2500 ] + br label %logic.from2501 +logic.from2501: + br i1 %t15, label %logic.end2503, label %logic.rhs2502 +logic.rhs2502: %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.1420, i64 3, i64 0 }, ptr %a19 + store { ptr, i64, i64 } { ptr @.str.1425, 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.rend2447 -logic.rend2447: - br label %logic.end2446 -logic.end2446: - %t22 = phi i1 [ true, %logic.from2444 ], [ %t21, %logic.rend2447 ] - br i1 %t22, label %then2448, label %endif2450 -then2448: + br label %logic.rend2504 +logic.rend2504: + br label %logic.end2503 +logic.end2503: + %t22 = phi i1 [ true, %logic.from2501 ], [ %t21, %logic.rend2504 ] + br i1 %t22, label %then2505, label %endif2507 +then2505: ret i1 true -endif2450: +endif2507: %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.1421, i64 6, i64 0 }, ptr %a26 + store { ptr, i64, i64 } { ptr @.str.1426, 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 %then2451, label %endif2453 -then2451: + br i1 %t28, label %then2508, label %endif2510 +then2508: %t29 = load ptr, ptr %a1 %t30 = icmp eq ptr %t29, null - br i1 %t30, label %panic2454, label %ok2455 -panic2454: - call void @finch_panic(ptr @.str.1422, i64 644, ptr @.str.1423) + br i1 %t30, label %panic2511, label %ok2512 +panic2511: + call void @finch_panic(ptr @.str.1427, i64 664, ptr @.str.1428) unreachable -ok2455: - %t31 = getelementptr inbounds %S.gen.Gen, ptr %t29, i32 0, i32 15 +ok2512: + %t31 = getelementptr inbounds %S.gen.Gen, ptr %t29, i32 0, i32 16 %t32 = load ptr, ptr %a1 %t33 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 %t34 = load { ptr, i64, i64 }, ptr %t33 @@ -24096,17 +26996,17 @@ ok2455: %t38 = load { ptr, i64, i64 }, ptr %t31 %t39 = extractvalue { ptr, i64, i64 } %t38, 1 %t40 = icmp uge i64 %t37, %t39 - br i1 %t40, label %range2456, label %inrange2457 -range2456: - call void @finch_panic_index(ptr @.str.1424, i64 644, i64 %t37, i64 %t39) + br i1 %t40, label %range2513, label %inrange2514 +range2513: + call void @finch_panic_index(ptr @.str.1429, i64 664, i64 %t37, i64 %t39) unreachable -inrange2457: +inrange2514: %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 -endif2453: +endif2510: ret i1 false } @@ -24118,178 +27018,214 @@ entry: %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 + %a19 = alloca { ptr, i64, i64 }, align 16 %a23 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 + %a24 = 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 %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 %a40 = 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 + %a41 = alloca { ptr, i64, i64 }, align 16 + %a42 = alloca { ptr, i64, i64 }, align 16 + %a43 = 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 %a56 = alloca { ptr, i64, i64 }, align 16 %a57 = 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 + %a61 = alloca { ptr, i64, i64 }, align 16 + %a62 = 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 + %a71 = alloca { ptr, i64, i64 }, align 16 %a73 = alloca { ptr, i64, i64 }, align 16 %a74 = alloca { ptr, i64, i64 }, align 16 %a75 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 + %a76 = alloca { ptr, i64, i64 }, align 16 %a80 = alloca { ptr, i64, i64 }, align 16 - %a86 = 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 %a87 = alloca { ptr, i64, i64 }, align 16 %a88 = 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 + %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 - %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 + %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 + %a110 = alloca { ptr, i64, i64 }, align 16 + %a111 = alloca { ptr, i64, i64 }, align 16 + %a115 = alloca { ptr, i64, i64 }, align 16 + %a116 = alloca { ptr, i64, i64 }, align 16 store %S.ast.Type %p0, ptr %a1 %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.1425, i64 5, i64 0 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.1430, 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 %then2458, label %endif2460 -then2458: + br i1 %t7, label %then2515, label %endif2517 +then2515: %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 %range2461, label %inrange2462 -range2461: - call void @finch_panic_index(ptr @.str.1427, i64 651, i64 0, i64 %t10) + br i1 %t11, label %range2518, label %inrange2519 +range2518: + call void @finch_panic_index(ptr @.str.1432, i64 671, i64 0, i64 %t10) unreachable -inrange2462: +inrange2519: %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.1426, i64 4, i64 0 }, ptr %a17 + store { ptr, i64, i64 } { ptr @.str.1431, 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 -endif2460: - %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.1428, 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 %then2463, label %endif2465 -then2463: - %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 %range2466, label %inrange2467 -range2466: - call void @finch_panic_index(ptr @.str.1430, i64 654, i64 0, i64 %t28) + store { ptr, i64, i64 } %t15, ptr %a19 + call void @finch_str_drop(ptr %a19) + %t20 = load { ptr, i64, i64 }, ptr %a16 + ret { ptr, i64, i64 } %t20 +endif2517: + %t21 = getelementptr inbounds %S.ast.Type, 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.1433, 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 %then2520, label %endif2522 +then2520: + %t27 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 + %t28 = load { ptr, i64, i64 }, ptr %t27 + %t29 = extractvalue { ptr, i64, i64 } %t28, 1 + %t30 = icmp uge i64 0, %t29 + br i1 %t30, label %range2523, label %inrange2524 +range2523: + call void @finch_panic_index(ptr @.str.1435, i64 674, i64 0, i64 %t29) unreachable -inrange2467: - %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.1429, 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.1431, 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 %range2468, label %inrange2469 -range2468: - call void @finch_panic_index(ptr @.str.1432, i64 654, i64 1, i64 %t44) +inrange2524: + %t31 = extractvalue { ptr, i64, i64 } %t28, 0 + %t32 = getelementptr inbounds %S.ast.Type, ptr %t31, i64 0 + %t33 = load %S.ast.Type, ptr %t32 + %t34 = call { ptr, i64, i64 } @finch.gen.typeKey(%S.ast.Type %t33) + store { ptr, i64, i64 } { ptr @.str.1434, i64 4, i64 0 }, ptr %a36 + store { ptr, i64, i64 } %t34, ptr %a37 + call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) + store { ptr, i64, i64 } %t34, ptr %a38 + call void @finch_str_drop(ptr %a38) + %t39 = load { ptr, i64, i64 }, ptr %a35 + store { ptr, i64, i64 } %t39, ptr %a41 + store { ptr, i64, i64 } { ptr @.str.1436, i64 1, i64 0 }, ptr %a42 + call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) + store { ptr, i64, i64 } %t39, ptr %a43 + call void @finch_str_drop(ptr %a43) + %t44 = load { ptr, i64, i64 }, ptr %a40 + %t45 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 + %t46 = load { ptr, i64, i64 }, ptr %t45 + %t47 = extractvalue { ptr, i64, i64 } %t46, 1 + %t48 = icmp uge i64 1, %t47 + br i1 %t48, label %range2525, label %inrange2526 +range2525: + call void @finch_panic_index(ptr @.str.1437, i64 674, i64 1, i64 %t47) unreachable -inrange2469: - %t46 = extractvalue { ptr, i64, i64 } %t43, 0 - %t47 = getelementptr inbounds %S.ast.Type, ptr %t46, i64 1 - %t48 = load %S.ast.Type, ptr %t47 - %t49 = call { ptr, i64, i64 } @finch.gen.typeKey(%S.ast.Type %t48) - store { ptr, i64, i64 } %t41, 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 -endif2465: - %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.1433, 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 %then2470, label %endif2472 -then2470: - %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.1434, 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.1435, 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 - %t72 = load { ptr, i64, i64 }, ptr %t71 - store { ptr, i64, i64 } %t70, ptr %a74 - store { ptr, i64, i64 } %t72, ptr %a75 +inrange2526: + %t49 = extractvalue { ptr, i64, i64 } %t46, 0 + %t50 = getelementptr inbounds %S.ast.Type, ptr %t49, i64 1 + %t51 = load %S.ast.Type, ptr %t50 + %t52 = call { ptr, i64, i64 } @finch.gen.typeKey(%S.ast.Type %t51) + store { ptr, i64, i64 } %t44, ptr %a54 + store { ptr, i64, i64 } %t52, ptr %a55 + call void @finch_str_concat(ptr %a53, ptr %a54, ptr %a55) + store { ptr, i64, i64 } %t44, ptr %a56 + call void @finch_str_drop(ptr %a56) + store { ptr, i64, i64 } %t52, ptr %a57 + call void @finch_str_drop(ptr %a57) + %t58 = load { ptr, i64, i64 }, ptr %a53 + ret { ptr, i64, i64 } %t58 +endif2522: + %t59 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 + %t60 = load { ptr, i64, i64 }, ptr %t59 + store { ptr, i64, i64 } %t60, ptr %a61 + store { ptr, i64, i64 } { ptr @.str.1438, i64 4, i64 0 }, ptr %a62 + %t63 = call i32 @finch_str_eq(ptr %a61, ptr %a62) + %t64 = icmp ne i32 %t63, 0 + br i1 %t64, label %then2527, label %endif2529 +then2527: + %t65 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 3 + %t66 = load { ptr, i64, i64 }, ptr %t65 + %t67 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t66) + store { ptr, i64, i64 } { ptr @.str.1439, i64 2, i64 0 }, ptr %a69 + store { ptr, i64, i64 } %t67, ptr %a70 + call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70) + store { ptr, i64, i64 } %t67, ptr %a71 + call void @finch_str_drop(ptr %a71) + %t72 = load { ptr, i64, i64 }, ptr %a68 + store { ptr, i64, i64 } %t72, ptr %a74 + store { ptr, i64, i64 } { ptr @.str.1440, i64 1, 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 -endif2472: - %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.1436, 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 %then2473, label %endif2475 -then2473: - %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.1437, 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.1438, 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 - %t95 = load { ptr, i64, i64 }, ptr %t94 - %t96 = call { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %t95) - store { ptr, i64, i64 } %t93, 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 - ret { ptr, i64, i64 } %t100 -endif2475: - %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 - call void @finch_str_copy(ptr %a104, ptr %a103) - %t105 = load { ptr, i64, i64 }, ptr %a104 - ret { ptr, i64, i64 } %t105 + store { ptr, i64, i64 } %t72, ptr %a76 + call void @finch_str_drop(ptr %a76) + %t77 = load { ptr, i64, i64 }, ptr %a73 + %t78 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 2 + %t79 = load { ptr, i64, i64 }, ptr %t78 + store { ptr, i64, i64 } %t77, ptr %a81 + store { ptr, i64, i64 } %t79, ptr %a82 + call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82) + store { ptr, i64, i64 } %t77, ptr %a83 + call void @finch_str_drop(ptr %a83) + %t84 = load { ptr, i64, i64 }, ptr %a80 + ret { ptr, i64, i64 } %t84 +endif2529: + %t85 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 + %t86 = load { ptr, i64, i64 }, ptr %t85 + store { ptr, i64, i64 } %t86, ptr %a87 + store { ptr, i64, i64 } { ptr @.str.1441, i64 6, i64 0 }, ptr %a88 + %t89 = call i32 @finch_str_eq(ptr %a87, ptr %a88) + %t90 = icmp ne i32 %t89, 0 + br i1 %t90, label %then2530, label %endif2532 +then2530: + %t91 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 3 + %t92 = load { ptr, i64, i64 }, ptr %t91 + %t93 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t92) + store { ptr, i64, i64 } { ptr @.str.1442, i64 2, i64 0 }, ptr %a95 + store { ptr, i64, i64 } %t93, ptr %a96 + call void @finch_str_concat(ptr %a94, ptr %a95, ptr %a96) + store { ptr, i64, i64 } %t93, ptr %a97 + call void @finch_str_drop(ptr %a97) + %t98 = load { ptr, i64, i64 }, ptr %a94 + store { ptr, i64, i64 } %t98, ptr %a100 + store { ptr, i64, i64 } { ptr @.str.1443, i64 1, i64 0 }, ptr %a101 + call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) + store { ptr, i64, i64 } %t98, ptr %a102 + call void @finch_str_drop(ptr %a102) + %t103 = load { ptr, i64, i64 }, ptr %a99 + %t104 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 2 + %t105 = load { ptr, i64, i64 }, ptr %t104 + %t106 = call { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %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) + store { ptr, i64, i64 } %t103, ptr %a110 + call void @finch_str_drop(ptr %a110) + store { ptr, i64, i64 } %t106, ptr %a111 + call void @finch_str_drop(ptr %a111) + %t112 = load { ptr, i64, i64 }, ptr %a107 + ret { ptr, i64, i64 } %t112 +endif2532: + %t113 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 + %t114 = load { ptr, i64, i64 }, ptr %t113 + store { ptr, i64, i64 } %t114, ptr %a115 + call void @finch_str_copy(ptr %a116, ptr %a115) + %t117 = load { ptr, i64, i64 }, ptr %a116 + ret { ptr, i64, i64 } %t117 } define internal { ptr, i64, i64 } @finch.gen.hex(i64 %p0) { @@ -24301,18 +27237,20 @@ entry: %a23 = 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 + %a27 = alloca { ptr, i64, i64 }, align 16 store i64 %p0, ptr %a1 - store { ptr, i64, i64 } { ptr @.str.1439, i64 16, i64 0 }, ptr %a2 + store { ptr, i64, i64 } { ptr @.str.1444, 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 %range2476, label %inrange2477 -range2476: - call void @finch_panic_index(ptr @.str.1440, i64 669, i64 %t4, i64 %t6) + br i1 %t7, label %range2533, label %inrange2534 +range2533: + call void @finch_panic_index(ptr @.str.1445, i64 689, i64 %t4, i64 %t6) unreachable -inrange2477: +inrange2534: %t8 = extractvalue { ptr, i64, i64 } %t5, 0 %t9 = getelementptr inbounds i8, ptr %t8, i64 %t4 %t10 = load i8, ptr %t9 @@ -24323,11 +27261,11 @@ inrange2477: %t15 = load { ptr, i64, i64 }, ptr %a2 %t16 = extractvalue { ptr, i64, i64 } %t15, 1 %t17 = icmp uge i64 %t14, %t16 - br i1 %t17, label %range2478, label %inrange2479 -range2478: - call void @finch_panic_index(ptr @.str.1441, i64 669, i64 %t14, i64 %t16) + br i1 %t17, label %range2535, label %inrange2536 +range2535: + call void @finch_panic_index(ptr @.str.1446, i64 689, i64 %t14, i64 %t16) unreachable -inrange2479: +inrange2536: %t18 = extractvalue { ptr, i64, i64 } %t15, 0 %t19 = getelementptr inbounds i8, ptr %t18, i64 %t14 %t20 = load i8, ptr %t19 @@ -24336,8 +27274,13 @@ inrange2479: store { ptr, i64, i64 } %t12, 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 - ret { ptr, i64, i64 } %t26 + store { ptr, i64, i64 } %t12, ptr %a26 + call void @finch_str_drop(ptr %a26) + store { ptr, i64, i64 } %t22, ptr %a27 + call void @finch_str_drop(ptr %a27) + %t28 = load { ptr, i64, i64 }, ptr %a23 + call void @finch_str_drop(ptr %a2) + ret { ptr, i64, i64 } %t28 } define internal { ptr, i64, i64 } @finch.gen.strGlobal(ptr %p0, { ptr, i64, i64 } %p1) { @@ -24348,214 +27291,234 @@ entry: %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 + %a17 = alloca { ptr, i64, i64 }, align 16 %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca i64, align 16 - %a28 = alloca i8, align 16 - %a31 = alloca i64, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 + %a20 = alloca { ptr, i64, i64 }, align 16 + %a21 = alloca i64, align 16 + %a29 = alloca i8, align 16 + %a32 = alloca i64, align 16 + %a50 = alloca { ptr, i64, i64 }, align 16 %a59 = alloca { ptr, i64, i64 }, align 16 %a60 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 + %a61 = alloca { ptr, i64, i64 }, align 16 + %a62 = alloca { ptr, i64, i64 }, align 16 %a75 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 + %a76 = alloca { ptr, i64, i64 }, align 16 + %a77 = 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 { ptr, i64, i64 }, align 16 %a86 = alloca { ptr, i64, i64 }, align 16 %a87 = alloca { ptr, i64, i64 }, align 16 %a88 = 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 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 + %a93 = alloca { ptr, i64, i64 }, align 16 %a96 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 + %a97 = 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 + %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 %a108 = 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 %panic2480, label %ok2481 -panic2480: - call void @finch_panic(ptr @.str.1442, i64 673, ptr @.str.1443) + br i1 %t4, label %panic2537, label %ok2538 +panic2537: + call void @finch_panic(ptr @.str.1447, i64 693, ptr @.str.1448) unreachable -ok2481: +ok2538: %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 %panic2482, label %ok2483 -panic2482: - call void @finch_panic(ptr @.str.1445, i64 674, ptr @.str.1446) + br i1 %t9, label %panic2539, label %ok2540 +panic2539: + call void @finch_panic(ptr @.str.1450, i64 694, ptr @.str.1451) unreachable -ok2483: +ok2540: %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.1444, i64 6, i64 0 }, ptr %a15 + store { ptr, i64, i64 } { ptr @.str.1449, 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.cond2484 -each.cond2484: - %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.body2485, label %each.end2487 -each.body2485: - %t25 = load ptr, ptr %a2 - %t26 = getelementptr inbounds i8, ptr %t25, i64 %t23 - %t27 = load i8, ptr %t26 - store i8 %t27, ptr %a28 - %t29 = load i8, ptr %a28 - %t30 = zext i8 %t29 to i64 - store i64 %t30, ptr %a31 - %t32 = load i64, ptr %a31 - %t33 = icmp slt i64 %t32, 0 - br i1 %t33, label %then2488, label %endif2490 -then2488: - %t34 = load i64, ptr %a31 - %t35 = add i64 %t34, 256 - store i64 %t35, ptr %a31 - br label %endif2490 -endif2490: - %t36 = load i64, ptr %a31 - %t37 = icmp sge i64 %t36, 32 - br label %logic.from2491 -logic.from2491: - br i1 %t37, label %logic.rhs2492, label %logic.end2493 -logic.rhs2492: - %t38 = load i64, ptr %a31 - %t39 = icmp slt i64 %t38, 127 - br label %logic.rend2494 -logic.rend2494: - br label %logic.end2493 -logic.end2493: - %t40 = phi i1 [ false, %logic.from2491 ], [ %t39, %logic.rend2494 ] - br label %logic.from2495 -logic.from2495: - br i1 %t40, label %logic.rhs2496, label %logic.end2497 -logic.rhs2496: - %t41 = load i8, ptr %a28 - %t42 = icmp ne i8 %t41, 34 - br label %logic.rend2498 -logic.rend2498: - br label %logic.end2497 -logic.end2497: - %t43 = phi i1 [ false, %logic.from2495 ], [ %t42, %logic.rend2498 ] - br label %logic.from2499 -logic.from2499: - br i1 %t43, label %logic.rhs2500, label %logic.end2501 -logic.rhs2500: - %t44 = load i8, ptr %a28 - %t45 = icmp ne i8 %t44, 92 - br label %logic.rend2502 -logic.rend2502: - br label %logic.end2501 -logic.end2501: - %t46 = phi i1 [ false, %logic.from2499 ], [ %t45, %logic.rend2502 ] - br i1 %t46, label %then2503, label %else2504 -then2503: - %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) - %t50 = load { ptr, i64, i64 }, ptr %a49 - %t51 = load i64, ptr %t47 - %t52 = add i64 %t51, 1 - call void @finch_arr_reserve(ptr %a19, i64 %t52, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t53 = load ptr, ptr %a19 - %t54 = getelementptr inbounds { ptr, i64, i64 }, ptr %t53, i64 %t51 - store { ptr, i64, i64 } %t50, ptr %t54 - store i64 %t52, ptr %t47 - br label %endif2505 -else2504: - %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.1447, 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 - %t62 = load i64, ptr %t55 - %t63 = add i64 %t62, 1 - call void @finch_arr_reserve(ptr %a19, i64 %t63, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t64 = load ptr, ptr %a19 - %t65 = getelementptr inbounds { ptr, i64, i64 }, ptr %t64, i64 %t62 - store { ptr, i64, i64 } %t61, ptr %t65 - store i64 %t63, ptr %t55 - br label %endif2505 -endif2505: - br label %each.step2486 -each.step2486: - %t66 = load i64, ptr %a20 - %t67 = add i64 %t66, 1 - store i64 %t67, ptr %a20 - br label %each.cond2484 -each.end2487: - %t68 = load ptr, ptr %a1 - %t69 = icmp eq ptr %t68, null - br i1 %t69, label %panic2506, label %ok2507 -panic2506: - call void @finch_panic(ptr @.str.1448, i64 687, ptr @.str.1449) + store { ptr, i64, i64 } %t13, ptr %a17 + call void @finch_str_drop(ptr %a17) + %t18 = load { ptr, i64, i64 }, ptr %a14 + store { ptr, i64, i64 } %t18, ptr %a19 + store { ptr, i64, i64 } zeroinitializer, ptr %a20 + store i64 0, ptr %a21 + br label %each.cond2541 +each.cond2541: + %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t23 = load i64, ptr %t22 + %t24 = load i64, ptr %a21 + %t25 = icmp slt i64 %t24, %t23 + br i1 %t25, label %each.body2542, label %each.end2544 +each.body2542: + %t26 = load ptr, ptr %a2 + %t27 = getelementptr inbounds i8, ptr %t26, i64 %t24 + %t28 = load i8, ptr %t27 + store i8 %t28, ptr %a29 + %t30 = load i8, ptr %a29 + %t31 = zext i8 %t30 to i64 + store i64 %t31, ptr %a32 + %t33 = load i64, ptr %a32 + %t34 = icmp slt i64 %t33, 0 + br i1 %t34, label %then2545, label %endif2547 +then2545: + %t35 = load i64, ptr %a32 + %t36 = add i64 %t35, 256 + store i64 %t36, ptr %a32 + br label %endif2547 +endif2547: + %t37 = load i64, ptr %a32 + %t38 = icmp sge i64 %t37, 32 + br label %logic.from2548 +logic.from2548: + br i1 %t38, label %logic.rhs2549, label %logic.end2550 +logic.rhs2549: + %t39 = load i64, ptr %a32 + %t40 = icmp slt i64 %t39, 127 + br label %logic.rend2551 +logic.rend2551: + br label %logic.end2550 +logic.end2550: + %t41 = phi i1 [ false, %logic.from2548 ], [ %t40, %logic.rend2551 ] + br label %logic.from2552 +logic.from2552: + br i1 %t41, label %logic.rhs2553, label %logic.end2554 +logic.rhs2553: + %t42 = load i8, ptr %a29 + %t43 = icmp ne i8 %t42, 34 + br label %logic.rend2555 +logic.rend2555: + br label %logic.end2554 +logic.end2554: + %t44 = phi i1 [ false, %logic.from2552 ], [ %t43, %logic.rend2555 ] + br label %logic.from2556 +logic.from2556: + br i1 %t44, label %logic.rhs2557, label %logic.end2558 +logic.rhs2557: + %t45 = load i8, ptr %a29 + %t46 = icmp ne i8 %t45, 92 + br label %logic.rend2559 +logic.rend2559: + br label %logic.end2558 +logic.end2558: + %t47 = phi i1 [ false, %logic.from2556 ], [ %t46, %logic.rend2559 ] + br i1 %t47, label %then2560, label %else2561 +then2560: + %t48 = getelementptr inbounds { ptr, i64, i64 }, ptr %a20, i32 0, i32 1 + %t49 = load i8, ptr %a29 + 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 %a20, i64 %t53, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t54 = load ptr, ptr %a20 + %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %t54, i64 %t52 + store { ptr, i64, i64 } %t51, ptr %t55 + store i64 %t53, ptr %t48 + br label %endif2562 +else2561: + %t56 = getelementptr inbounds { ptr, i64, i64 }, ptr %a20, i32 0, i32 1 + %t57 = load i64, ptr %a32 + %t58 = call { ptr, i64, i64 } @finch.gen.hex(i64 %t57) + store { ptr, i64, i64 } { ptr @.str.1452, i64 1, i64 0 }, ptr %a60 + store { ptr, i64, i64 } %t58, ptr %a61 + call void @finch_str_concat(ptr %a59, ptr %a60, ptr %a61) + store { ptr, i64, i64 } %t58, ptr %a62 + call void @finch_str_drop(ptr %a62) + %t63 = load { ptr, i64, i64 }, ptr %a59 + %t64 = load i64, ptr %t56 + %t65 = add i64 %t64, 1 + call void @finch_arr_reserve(ptr %a20, i64 %t65, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t66 = load ptr, ptr %a20 + %t67 = getelementptr inbounds { ptr, i64, i64 }, ptr %t66, i64 %t64 + store { ptr, i64, i64 } %t63, ptr %t67 + store i64 %t65, ptr %t56 + br label %endif2562 +endif2562: + br label %each.step2543 +each.step2543: + %t68 = load i64, ptr %a21 + %t69 = add i64 %t68, 1 + store i64 %t69, ptr %a21 + br label %each.cond2541 +each.end2544: + %t70 = load ptr, ptr %a1 + %t71 = icmp eq ptr %t70, null + br i1 %t71, label %panic2563, label %ok2564 +panic2563: + call void @finch_panic(ptr @.str.1453, i64 707, ptr @.str.1454) unreachable -ok2507: - %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.1450, 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 - %t78 = load i64, ptr %t77 - %t79 = add i64 %t78, 1 - call void @finch_str_from_int(ptr %a80, i64 %t79) - %t81 = load { ptr, i64, i64 }, ptr %a80 - store { ptr, i64, i64 } %t76, 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.1451, 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.1452, 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 - 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.1453, 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 - %t103 = add i64 %t102, 1 - call void @finch_arr_reserve(ptr %t70, i64 %t103, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t104 = load ptr, ptr %t70 - %t105 = getelementptr inbounds { ptr, i64, i64 }, ptr %t104, i64 %t102 - store { ptr, i64, i64 } %t101, ptr %t105 - store i64 %t103, ptr %t71 - %t106 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t106, ptr %a107 - call void @finch_str_copy(ptr %a108, ptr %a107) - %t109 = load { ptr, i64, i64 }, ptr %a108 - ret { ptr, i64, i64 } %t109 +ok2564: + %t72 = getelementptr inbounds %S.gen.Gen, ptr %t70, i32 0, i32 2 + %t73 = getelementptr inbounds { ptr, i64, i64 }, ptr %t72, i32 0, i32 1 + %t74 = load { ptr, i64, i64 }, ptr %a19 + store { ptr, i64, i64 } %t74, ptr %a76 + store { ptr, i64, i64 } { ptr @.str.1455, i64 34, i64 0 }, ptr %a77 + call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77) + %t78 = load { ptr, i64, i64 }, ptr %a75 + %t79 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t80 = load i64, ptr %t79 + %t81 = add i64 %t80, 1 + call void @finch_str_from_int(ptr %a82, i64 %t81) + %t83 = load { ptr, i64, i64 }, ptr %a82 + store { ptr, i64, i64 } %t78, ptr %a85 + store { ptr, i64, i64 } %t83, ptr %a86 + call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) + store { ptr, i64, i64 } %t78, ptr %a87 + call void @finch_str_drop(ptr %a87) + store { ptr, i64, i64 } %t83, ptr %a88 + call void @finch_str_drop(ptr %a88) + %t89 = load { ptr, i64, i64 }, ptr %a84 + store { ptr, i64, i64 } %t89, ptr %a91 + store { ptr, i64, i64 } { ptr @.str.1456, i64 9, i64 0 }, ptr %a92 + call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92) + store { ptr, i64, i64 } %t89, ptr %a93 + call void @finch_str_drop(ptr %a93) + %t94 = load { ptr, i64, i64 }, ptr %a90 + %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %a20, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.1457, i64 0, i64 0 }, ptr %a96 + call void @finch_str_join(ptr %a97, ptr %a20, ptr %a96) + %t98 = load { ptr, i64, i64 }, ptr %a97 + 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) + store { ptr, i64, i64 } %t94, ptr %a102 + call void @finch_str_drop(ptr %a102) + store { ptr, i64, i64 } %t98, ptr %a103 + call void @finch_str_drop(ptr %a103) + %t104 = load { ptr, i64, i64 }, ptr %a99 + store { ptr, i64, i64 } %t104, ptr %a106 + store { ptr, i64, i64 } { ptr @.str.1458, i64 4, i64 0 }, ptr %a107 + call void @finch_str_concat(ptr %a105, ptr %a106, ptr %a107) + store { ptr, i64, i64 } %t104, ptr %a108 + call void @finch_str_drop(ptr %a108) + %t109 = load { ptr, i64, i64 }, ptr %a105 + %t110 = load i64, ptr %t73 + %t111 = add i64 %t110, 1 + call void @finch_arr_reserve(ptr %t72, i64 %t111, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t112 = load ptr, ptr %t72 + %t113 = getelementptr inbounds { ptr, i64, i64 }, ptr %t112, i64 %t110 + store { ptr, i64, i64 } %t109, ptr %t113 + store i64 %t111, ptr %t73 + %t114 = load { ptr, i64, i64 }, ptr %a19 + call void @finch.drop.arr_str(ptr %a20) + ret { ptr, i64, i64 } %t114 } define internal %S.gen.Val @finch.gen.strConst(ptr %p0, { ptr, i64, i64 } %p1) { @@ -24569,13 +27532,17 @@ entry: %a12 = alloca { ptr, i64, i64 }, align 16 %a13 = alloca { ptr, i64, i64 }, align 16 %a14 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 + %a15 = 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 %a24 = alloca { ptr, i64, i64 }, align 16 %a25 = 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 + %a30 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store { ptr, i64, i64 } %p1, ptr %a2 %t3 = load ptr, ptr %a1 @@ -24583,31 +27550,40 @@ 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.1454, i64 6, i64 0 }, ptr %a9 + store { ptr, i64, i64 } { ptr @.str.1459, 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.1455, i64 6, i64 0 }, ptr %a14 + store { ptr, i64, i64 } { ptr @.str.1460, 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 - %t17 = load i64, ptr %t16 - call void @finch_str_from_int(ptr %a18, i64 %t17) - %t19 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t15, 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.1456, 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.1457, 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 + store { ptr, i64, i64 } %t11, ptr %a15 + call void @finch_str_drop(ptr %a15) + %t16 = load { ptr, i64, i64 }, ptr %a12 + %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t18 = load i64, ptr %t17 + call void @finch_str_from_int(ptr %a19, i64 %t18) + %t20 = load { ptr, i64, i64 }, ptr %a19 + store { ptr, i64, i64 } %t16, ptr %a22 + store { ptr, i64, i64 } %t20, ptr %a23 + call void @finch_str_concat(ptr %a21, ptr %a22, ptr %a23) + store { ptr, i64, i64 } %t16, ptr %a24 + call void @finch_str_drop(ptr %a24) + store { ptr, i64, i64 } %t20, ptr %a25 + call void @finch_str_drop(ptr %a25) + %t26 = load { ptr, i64, i64 }, ptr %a21 + store { ptr, i64, i64 } %t26, ptr %a28 + store { ptr, i64, i64 } { ptr @.str.1461, i64 9, i64 0 }, ptr %a29 + call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) + store { ptr, i64, i64 } %t26, ptr %a30 + call void @finch_str_drop(ptr %a30) + %t31 = load { ptr, i64, i64 }, ptr %a27 + %t32 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t31, 0 + %t33 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1462, i64 3, i64 0 }) + %t34 = insertvalue %S.gen.Val %t32, %S.ast.Type %t33, 1 + %t35 = insertvalue %S.gen.Val %t34, i1 true, 2 + call void @finch_str_drop(ptr %a6) + ret %S.gen.Val %t35 } define internal void @finch.gen.panicIf(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, %S.ast.Node %p3) { @@ -24626,28 +27602,35 @@ entry: %a41 = alloca { ptr, i64, i64 }, align 16 %a42 = alloca { ptr, i64, i64 }, align 16 %a43 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 + %a44 = 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 %a53 = alloca { ptr, i64, i64 }, align 16 %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = 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 %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 %a62 = 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 + %a70 = 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 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.1458, i64 5, i64 0 }) + %t6 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t5, { ptr, i64, i64 } { ptr @.str.1463, 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.1459, i64 2, i64 0 }) + %t9 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t8, { ptr, i64, i64 } { ptr @.str.1464, i64 2, i64 0 }) store { ptr, i64, i64 } %t9, ptr %a10 %t11 = load ptr, ptr %a1 %t12 = load { ptr, i64, i64 }, ptr %a2 @@ -24660,22 +27643,22 @@ entry: %t17 = load ptr, ptr %a1 %t18 = load ptr, ptr %a1 %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic2508, label %ok2509 -panic2508: - call void @finch_panic(ptr @.str.1460, i64 703, ptr @.str.1461) + br i1 %t19, label %panic2565, label %ok2566 +panic2565: + call void @finch_panic(ptr @.str.1465, i64 723, ptr @.str.1466) unreachable -ok2509: +ok2566: %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 %range2510, label %inrange2511 -range2510: - call void @finch_panic_index(ptr @.str.1462, i64 703, i64 %t22, i64 %t24) + br i1 %t25, label %range2567, label %inrange2568 +range2567: + call void @finch_panic_index(ptr @.str.1467, i64 723, i64 %t22, i64 %t24) unreachable -inrange2511: +inrange2568: %t26 = extractvalue { ptr, i64, i64 } %t23, 0 %t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %t26, i64 %t22 %t28 = load { ptr, i64, i64 }, ptr %t27 @@ -24687,50 +27670,68 @@ inrange2511: 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.1463, i64 27, i64 0 }, ptr %a38 + store { ptr, i64, i64 } { ptr @.str.1468, 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.1464, i64 6, i64 0 }, ptr %a43 + store { ptr, i64, i64 } { ptr @.str.1469, 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 - %t46 = load i64, ptr %t45 - call void @finch_str_from_int(ptr %a47, i64 %t46) - %t48 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } %t44, 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.1465, 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 - store { ptr, i64, i64 } %t56, 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.1466, i64 1, i64 0 }, ptr %a64 + store { ptr, i64, i64 } %t40, ptr %a44 + call void @finch_str_drop(ptr %a44) + %t45 = load { ptr, i64, i64 }, ptr %a41 + %t46 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 11 + %t47 = load i64, ptr %t46 + call void @finch_str_from_int(ptr %a48, i64 %t47) + %t49 = load { ptr, i64, i64 }, ptr %a48 + store { ptr, i64, i64 } %t45, ptr %a51 + store { ptr, i64, i64 } %t49, ptr %a52 + call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) + store { ptr, i64, i64 } %t45, ptr %a53 + call void @finch_str_drop(ptr %a53) + store { ptr, i64, i64 } %t49, ptr %a54 + call void @finch_str_drop(ptr %a54) + %t55 = load { ptr, i64, i64 }, ptr %a50 + store { ptr, i64, i64 } %t55, ptr %a57 + store { ptr, i64, i64 } { ptr @.str.1470, i64 6, i64 0 }, ptr %a58 + call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) + store { ptr, i64, i64 } %t55, ptr %a59 + call void @finch_str_drop(ptr %a59) + %t60 = load { ptr, i64, i64 }, ptr %a56 + %t61 = load { ptr, i64, i64 }, ptr %a34 + store { ptr, i64, i64 } %t60, 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 - 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.1467, i64 11, i64 0 }) - %t67 = load ptr, ptr %a1 - %t68 = icmp eq ptr %t67, null - br i1 %t68, label %panic2512, label %ok2513 -panic2512: - call void @finch_panic(ptr @.str.1468, i64 707, ptr @.str.1469) + store { ptr, i64, i64 } %t60, ptr %a65 + call void @finch_str_drop(ptr %a65) + %t66 = load { ptr, i64, i64 }, ptr %a62 + store { ptr, i64, i64 } %t66, ptr %a68 + store { ptr, i64, i64 } { ptr @.str.1471, i64 1, i64 0 }, ptr %a69 + call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) + store { ptr, i64, i64 } %t66, ptr %a70 + call void @finch_str_drop(ptr %a70) + %t71 = load { ptr, i64, i64 }, ptr %a67 + call void @finch.gen.emit(ptr %t35, { ptr, i64, i64 } %t71) + store { ptr, i64, i64 } %t71, ptr %a72 + call void @finch_str_drop(ptr %a72) + %t73 = load ptr, ptr %a1 + call void @finch.gen.emit(ptr %t73, { ptr, i64, i64 } { ptr @.str.1472, i64 11, i64 0 }) + %t74 = load ptr, ptr %a1 + %t75 = icmp eq ptr %t74, null + br i1 %t75, label %panic2569, label %ok2570 +panic2569: + call void @finch_panic(ptr @.str.1473, i64 727, ptr @.str.1474) unreachable -ok2513: - %t69 = getelementptr inbounds %S.gen.Gen, ptr %t67, i32 0, i32 9 - store i1 true, ptr %t69 - %t70 = load ptr, ptr %a1 - %t71 = load { ptr, i64, i64 }, ptr %a10 - call void @finch.gen.label(ptr %t70, { ptr, i64, i64 } %t71) +ok2570: + %t76 = getelementptr inbounds %S.gen.Gen, ptr %t74, i32 0, i32 9 + store i1 true, ptr %t76 + %t77 = load ptr, ptr %a1 + %t78 = load { ptr, i64, i64 }, ptr %a10 + call void @finch.gen.label(ptr %t77, { ptr, i64, i64 } %t78) + call void @finch_str_drop(ptr %a34) + call void @finch_str_drop(ptr %a30) + call void @finch_str_drop(ptr %a10) + call void @finch_str_drop(ptr %a7) ret void } @@ -24748,164 +27749,190 @@ entry: %a17 = alloca { ptr, i64, i64 }, align 16 %a18 = alloca { ptr, i64, i64 }, align 16 %a19 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 + %a20 = alloca { ptr, i64, i64 }, align 16 %a23 = alloca { ptr, i64, i64 }, align 16 %a24 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 + %a25 = alloca { ptr, i64, i64 }, align 16 + %a26 = alloca { ptr, i64, i64 }, align 16 + %a29 = alloca { ptr, i64, i64 }, align 16 + %a30 = 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 + %a53 = alloca { ptr, i64, i64 }, align 16 %a54 = alloca { ptr, i64, i64 }, align 16 %a55 = 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 + %a59 = alloca { ptr, i64, i64 }, align 16 %a60 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 %a64 = 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 - %a71 = alloca { ptr, i64, i64 }, align 16 + %a69 = alloca { ptr, i64, i64 }, align 16 + %a70 = 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 %a75 = 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 + %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 { ptr, i64, i64 }, align 16 %a86 = alloca { ptr, i64, i64 }, align 16 + %a89 = 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 + %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 + %a99 = 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 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.1470, i64 5, i64 0 }) + %t6 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t5, { ptr, i64, i64 } { ptr @.str.1475, 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.1471, i64 7, i64 0 }) + %t9 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t8, { ptr, i64, i64 } { ptr @.str.1476, 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.1472, i64 13, i64 0 }, ptr %a14 + store { ptr, i64, i64 } { ptr @.str.1477, 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.1473, i64 2, i64 0 }, ptr %a19 + store { ptr, i64, i64 } { ptr @.str.1478, 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 - store { ptr, i64, i64 } %t20, ptr %a23 + store { ptr, i64, i64 } %t16, ptr %a20 + call void @finch_str_drop(ptr %a20) + %t21 = load { ptr, i64, i64 }, ptr %a17 + %t22 = load { ptr, i64, i64 }, ptr %a3 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 - %t26 = call { ptr, i64, i64 } @finch.gen.op(ptr %t11, { ptr, i64, i64 } %t25) - store { ptr, i64, i64 } %t26, ptr %a27 - %t28 = load ptr, ptr %a1 - %t29 = load { ptr, i64, i64 }, ptr %a27 - %t30 = load { ptr, i64, i64 }, ptr %a7 - %t31 = load { ptr, i64, i64 }, ptr %a10 - call void @finch.gen.condBr(ptr %t28, { ptr, i64, i64 } %t29, { ptr, i64, i64 } %t30, { ptr, i64, i64 } %t31) - %t32 = load ptr, ptr %a1 + store { ptr, i64, i64 } %t22, ptr %a25 + call void @finch_str_concat(ptr %a23, ptr %a24, ptr %a25) + store { ptr, i64, i64 } %t21, ptr %a26 + call void @finch_str_drop(ptr %a26) + %t27 = load { ptr, i64, i64 }, ptr %a23 + %t28 = call { ptr, i64, i64 } @finch.gen.op(ptr %t11, { ptr, i64, i64 } %t27) + store { ptr, i64, i64 } %t27, ptr %a29 + call void @finch_str_drop(ptr %a29) + store { ptr, i64, i64 } %t28, ptr %a30 + %t31 = load ptr, ptr %a1 + %t32 = load { ptr, i64, i64 }, ptr %a30 %t33 = load { ptr, i64, i64 }, ptr %a7 - call void @finch.gen.label(ptr %t32, { ptr, i64, i64 } %t33) - %t34 = load ptr, ptr %a1 + %t34 = load { ptr, i64, i64 }, ptr %a10 + call void @finch.gen.condBr(ptr %t31, { ptr, i64, i64 } %t32, { ptr, i64, i64 } %t33, { ptr, i64, i64 } %t34) %t35 = load ptr, ptr %a1 - %t36 = icmp eq ptr %t35, null - br i1 %t36, label %panic2514, label %ok2515 -panic2514: - call void @finch_panic(ptr @.str.1474, i64 717, ptr @.str.1475) + %t36 = load { ptr, i64, i64 }, ptr %a7 + call void @finch.gen.label(ptr %t35, { ptr, i64, i64 } %t36) + %t37 = load ptr, ptr %a1 + %t38 = load ptr, ptr %a1 + %t39 = icmp eq ptr %t38, null + br i1 %t39, label %panic2571, label %ok2572 +panic2571: + call void @finch_panic(ptr @.str.1479, i64 737, ptr @.str.1480) unreachable -ok2515: - %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 %range2516, label %inrange2517 -range2516: - call void @finch_panic_index(ptr @.str.1476, i64 717, i64 %t39, i64 %t41) +ok2572: + %t40 = getelementptr inbounds %S.gen.Gen, ptr %t38, i32 0, i32 1 + %t41 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 13 + %t42 = load i64, ptr %t41 + %t43 = load { ptr, i64, i64 }, ptr %t40 + %t44 = extractvalue { ptr, i64, i64 } %t43, 1 + %t45 = icmp uge i64 %t42, %t44 + br i1 %t45, label %range2573, label %inrange2574 +range2573: + call void @finch_panic_index(ptr @.str.1481, i64 737, i64 %t42, i64 %t44) unreachable -inrange2517: - %t43 = extractvalue { ptr, i64, i64 } %t40, 0 - %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t43, i64 %t39 - %t45 = load { ptr, i64, i64 }, ptr %t44 - %t46 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t34, { ptr, i64, i64 } %t45) - 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.1477, 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.1478, 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 - %t59 = load i64, ptr %t58 - call void @finch_str_from_int(ptr %a60, i64 %t59) - %t61 = load { ptr, i64, i64 }, ptr %a60 - store { ptr, i64, i64 } %t57, 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 - store { ptr, i64, i64 } %t65, ptr %a67 - store { ptr, i64, i64 } { ptr @.str.1479, i64 6, i64 0 }, ptr %a68 +inrange2574: + %t46 = extractvalue { ptr, i64, i64 } %t43, 0 + %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %t46, i64 %t42 + %t48 = load { ptr, i64, i64 }, ptr %t47 + %t49 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t37, { ptr, i64, i64 } %t48) + store { ptr, i64, i64 } %t49, ptr %a50 + %t51 = load ptr, ptr %a1 + %t52 = load { ptr, i64, i64 }, ptr %a50 + store { ptr, i64, i64 } { ptr @.str.1482, i64 33, i64 0 }, ptr %a54 + store { ptr, i64, i64 } %t52, ptr %a55 + 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.1483, i64 6, i64 0 }, ptr %a59 + call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) + store { ptr, i64, i64 } %t56, ptr %a60 + call void @finch_str_drop(ptr %a60) + %t61 = load { ptr, i64, i64 }, ptr %a57 + %t62 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 11 + %t63 = load i64, ptr %t62 + call void @finch_str_from_int(ptr %a64, i64 %t63) + %t65 = load { ptr, i64, i64 }, ptr %a64 + store { ptr, i64, i64 } %t61, 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 - %t70 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t69, 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.1480, 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 - store { ptr, i64, i64 } %t78, 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.1481, 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.1482, i64 11, i64 0 }) - %t89 = load ptr, ptr %a1 - %t90 = icmp eq ptr %t89, null - br i1 %t90, label %panic2518, label %ok2519 -panic2518: - call void @finch_panic(ptr @.str.1483, i64 720, ptr @.str.1484) + store { ptr, i64, i64 } %t61, ptr %a69 + call void @finch_str_drop(ptr %a69) + store { ptr, i64, i64 } %t65, ptr %a70 + call void @finch_str_drop(ptr %a70) + %t71 = load { ptr, i64, i64 }, ptr %a66 + store { ptr, i64, i64 } %t71, ptr %a73 + store { ptr, i64, i64 } { ptr @.str.1484, i64 6, i64 0 }, ptr %a74 + call void @finch_str_concat(ptr %a72, ptr %a73, ptr %a74) + store { ptr, i64, i64 } %t71, ptr %a75 + call void @finch_str_drop(ptr %a75) + %t76 = load { ptr, i64, i64 }, ptr %a72 + %t77 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t76, ptr %a79 + store { ptr, i64, i64 } %t77, ptr %a80 + call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) + store { ptr, i64, i64 } %t76, ptr %a81 + call void @finch_str_drop(ptr %a81) + %t82 = load { ptr, i64, i64 }, ptr %a78 + store { ptr, i64, i64 } %t82, ptr %a84 + store { ptr, i64, i64 } { ptr @.str.1485, i64 6, i64 0 }, ptr %a85 + call void @finch_str_concat(ptr %a83, ptr %a84, ptr %a85) + store { ptr, i64, i64 } %t82, ptr %a86 + call void @finch_str_drop(ptr %a86) + %t87 = load { ptr, i64, i64 }, ptr %a83 + %t88 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t87, ptr %a90 + store { ptr, i64, i64 } %t88, ptr %a91 + call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) + store { ptr, i64, i64 } %t87, ptr %a92 + call void @finch_str_drop(ptr %a92) + %t93 = load { ptr, i64, i64 }, ptr %a89 + store { ptr, i64, i64 } %t93, ptr %a95 + store { ptr, i64, i64 } { ptr @.str.1486, i64 1, i64 0 }, ptr %a96 + call void @finch_str_concat(ptr %a94, ptr %a95, ptr %a96) + store { ptr, i64, i64 } %t93, ptr %a97 + call void @finch_str_drop(ptr %a97) + %t98 = load { ptr, i64, i64 }, ptr %a94 + call void @finch.gen.emit(ptr %t51, { ptr, i64, i64 } %t98) + store { ptr, i64, i64 } %t98, ptr %a99 + call void @finch_str_drop(ptr %a99) + %t100 = load ptr, ptr %a1 + call void @finch.gen.emit(ptr %t100, { ptr, i64, i64 } { ptr @.str.1487, i64 11, i64 0 }) + %t101 = load ptr, ptr %a1 + %t102 = icmp eq ptr %t101, null + br i1 %t102, label %panic2575, label %ok2576 +panic2575: + call void @finch_panic(ptr @.str.1488, i64 740, ptr @.str.1489) unreachable -ok2519: - %t91 = getelementptr inbounds %S.gen.Gen, ptr %t89, i32 0, i32 9 - store i1 true, ptr %t91 - %t92 = load ptr, ptr %a1 - %t93 = load { ptr, i64, i64 }, ptr %a10 - call void @finch.gen.label(ptr %t92, { ptr, i64, i64 } %t93) - ret void -} - -define internal void @finch.copy.S_gen_Saved(ptr %dst, ptr %src) { -entry: - - %t1 = load %S.gen.Saved, ptr %src - store %S.gen.Saved %t1, ptr %dst - %t2 = getelementptr inbounds %S.gen.Saved, ptr %dst, i32 0, i32 0 - %t3 = getelementptr inbounds %S.gen.Saved, ptr %src, i32 0, i32 0 - call void @finch.copy.arr_str(ptr %t2, ptr %t3) - %t4 = getelementptr inbounds %S.gen.Saved, ptr %dst, i32 0, i32 1 - %t5 = getelementptr inbounds %S.gen.Saved, ptr %src, i32 0, i32 1 - call void @finch.copy.arr_str(ptr %t4, ptr %t5) +ok2576: + %t103 = getelementptr inbounds %S.gen.Gen, ptr %t101, i32 0, i32 9 + store i1 true, ptr %t103 + %t104 = load ptr, ptr %a1 + %t105 = load { ptr, i64, i64 }, ptr %a10 + call void @finch.gen.label(ptr %t104, { ptr, i64, i64 } %t105) + call void @finch_str_drop(ptr %a50) + call void @finch_str_drop(ptr %a30) + call void @finch_str_drop(ptr %a10) + call void @finch_str_drop(ptr %a7) ret void } @@ -24920,18 +27947,18 @@ entry: %a37 = alloca { ptr, i64, i64 }, align 16 %a42 = alloca { ptr, i64, i64 }, align 16 %a43 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca %S.gen.Saved, align 16 - %a60 = alloca %S.gen.Saved, align 16 + %a46 = alloca { ptr, i64, i64 }, align 16 + %a51 = alloca { ptr, i64, i64 }, align 16 + %a52 = alloca { ptr, i64, i64 }, align 16 + %a55 = 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 %panic2520, label %ok2521 -panic2520: - call void @finch_panic(ptr @.str.1485, i64 735, ptr @.str.1486) + br i1 %t3, label %panic2577, label %ok2578 +panic2577: + call void @finch_panic(ptr @.str.1490, i64 755, ptr @.str.1491) unreachable -ok2521: +ok2578: %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 @@ -24940,11 +27967,11 @@ ok2521: %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 %panic2522, label %ok2523 -panic2522: - call void @finch_panic(ptr @.str.1487, i64 735, ptr @.str.1488) + br i1 %t11, label %panic2579, label %ok2580 +panic2579: + call void @finch_panic(ptr @.str.1492, i64 755, ptr @.str.1493) unreachable -ok2523: +ok2580: %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 @@ -24953,94 +27980,98 @@ ok2523: %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 %panic2524, label %ok2525 -panic2524: - call void @finch_panic(ptr @.str.1489, i64 735, ptr @.str.1490) + br i1 %t19, label %panic2581, label %ok2582 +panic2581: + call void @finch_panic(ptr @.str.1494, i64 755, ptr @.str.1495) unreachable -ok2525: +ok2582: %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 %panic2526, label %ok2527 -panic2526: - call void @finch_panic(ptr @.str.1491, i64 735, ptr @.str.1492) + br i1 %t24, label %panic2583, label %ok2584 +panic2583: + call void @finch_panic(ptr @.str.1496, i64 755, ptr @.str.1497) unreachable -ok2527: +ok2584: %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 %panic2528, label %ok2529 -panic2528: - call void @finch_panic(ptr @.str.1493, i64 735, ptr @.str.1494) + br i1 %t29, label %panic2585, label %ok2586 +panic2585: + call void @finch_panic(ptr @.str.1498, i64 755, ptr @.str.1499) unreachable -ok2529: - %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 34 +ok2586: + %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 35 %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 %panic2530, label %ok2531 -panic2530: - call void @finch_panic(ptr @.str.1495, i64 736, ptr @.str.1496) + br i1 %t35, label %panic2587, label %ok2588 +panic2587: + call void @finch_panic(ptr @.str.1500, i64 756, ptr @.str.1501) unreachable -ok2531: - %t36 = getelementptr inbounds %S.gen.Gen, ptr %t34, i32 0, i32 34 +ok2588: + %t36 = getelementptr inbounds %S.gen.Gen, ptr %t34, i32 0, i32 35 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 %panic2532, label %ok2533 -panic2532: - call void @finch_panic(ptr @.str.1497, i64 738, ptr @.str.1498) + br i1 %t40, label %panic2589, label %ok2590 +panic2589: + call void @finch_panic(ptr @.str.1502, i64 758, ptr @.str.1503) unreachable -ok2533: +ok2590: %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) %t44 = load { ptr, i64, i64 }, ptr %a43 + %t45 = load { ptr, i64, i64 }, ptr %t41 store { ptr, i64, i64 } %t44, ptr %t41 - %t45 = load { ptr, i64, i64 }, ptr %a37 - %t46 = load ptr, ptr %a1 - %t47 = icmp eq ptr %t46, null - br i1 %t47, label %panic2534, label %ok2535 -panic2534: - call void @finch_panic(ptr @.str.1499, i64 739, ptr @.str.1500) + store { ptr, i64, i64 } %t45, ptr %a46 + call void @finch.drop.arr_str(ptr %a46) + %t47 = load { ptr, i64, i64 }, ptr %a37 + %t48 = load ptr, ptr %a1 + %t49 = icmp eq ptr %t48, null + br i1 %t49, label %panic2591, label %ok2592 +panic2591: + call void @finch_panic(ptr @.str.1504, i64 759, ptr @.str.1505) unreachable -ok2535: - %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) - %t51 = load { ptr, i64, i64 }, ptr %a50 - store { ptr, i64, i64 } %t51, ptr %t48 - %t52 = load ptr, ptr %a1 - %t53 = icmp eq ptr %t52, null - br i1 %t53, label %panic2536, label %ok2537 -panic2536: - call void @finch_panic(ptr @.str.1501, i64 740, ptr @.str.1502) +ok2592: + %t50 = getelementptr inbounds %S.gen.Gen, ptr %t48, i32 0, i32 5 + store { ptr, i64, i64 } %t47, ptr %a51 + call void @finch.copy.arr_str(ptr %a52, ptr %a51) + %t53 = load { ptr, i64, i64 }, ptr %a52 + %t54 = load { ptr, i64, i64 }, ptr %t50 + store { ptr, i64, i64 } %t53, ptr %t50 + store { ptr, i64, i64 } %t54, ptr %a55 + call void @finch.drop.arr_str(ptr %a55) + %t56 = load ptr, ptr %a1 + %t57 = icmp eq ptr %t56, null + br i1 %t57, label %panic2593, label %ok2594 +panic2593: + call void @finch_panic(ptr @.str.1506, i64 760, ptr @.str.1507) unreachable -ok2537: - %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 %panic2538, label %ok2539 -panic2538: - call void @finch_panic(ptr @.str.1503, i64 741, ptr @.str.1504) +ok2594: + %t58 = getelementptr inbounds %S.gen.Gen, ptr %t56, i32 0, i32 6 + store i64 0, ptr %t58 + %t59 = load ptr, ptr %a1 + %t60 = icmp eq ptr %t59, null + br i1 %t60, label %panic2595, label %ok2596 +panic2595: + call void @finch_panic(ptr @.str.1508, i64 761, ptr @.str.1509) unreachable -ok2539: - %t57 = getelementptr inbounds %S.gen.Gen, ptr %t55, i32 0, i32 9 - store i1 false, ptr %t57 - %t58 = load %S.gen.Saved, ptr %a33 - store %S.gen.Saved %t58, ptr %a59 - call void @finch.copy.S_gen_Saved(ptr %a60, ptr %a59) - %t61 = load %S.gen.Saved, ptr %a60 - ret %S.gen.Saved %t61 +ok2596: + %t61 = getelementptr inbounds %S.gen.Gen, ptr %t59, i32 0, i32 9 + store i1 false, ptr %t61 + %t62 = load %S.gen.Saved, ptr %a33 + call void @finch.drop.arr_str(ptr %a37) + ret %S.gen.Saved %t62 } define internal void @finch.gen.endHelper(ptr %p0, %S.gen.Saved %p1, { ptr, i64, i64 } %p2) { @@ -25056,146 +28087,172 @@ entry: %a20 = 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 %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 %a26 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = 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 %a35 = alloca { ptr, i64, i64 }, align 16 %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 + %a38 = 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 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 + %a42 = alloca { ptr, i64, i64 }, 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 + %a58 = alloca { ptr, i64, i64 }, align 16 + %a59 = alloca { ptr, i64, i64 }, align 16 + %a62 = 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 store ptr %p0, ptr %a1 store %S.gen.Saved %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 %panic2540, label %ok2541 -panic2540: - call void @finch_panic(ptr @.str.1505, i64 746, ptr @.str.1506) + br i1 %t5, label %panic2597, label %ok2598 +panic2597: + call void @finch_panic(ptr @.str.1510, i64 766, ptr @.str.1511) unreachable -ok2541: +ok2598: %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.1507, i64 10, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.1512, 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 %panic2542, label %ok2543 -panic2542: - call void @finch_panic(ptr @.str.1508, i64 746, ptr @.str.1509) + br i1 %t14, label %panic2599, label %ok2600 +panic2599: + call void @finch_panic(ptr @.str.1513, i64 766, ptr @.str.1514) unreachable -ok2543: +ok2600: %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.1510, i64 1, i64 0 }, ptr %a17 + store { ptr, i64, i64 } { ptr @.str.1515, 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 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.1511, 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 %panic2544, label %ok2545 -panic2544: - call void @finch_panic(ptr @.str.1512, i64 746, ptr @.str.1513) + store { ptr, i64, i64 } %t12, ptr %a23 + call void @finch_str_drop(ptr %a23) + store { ptr, i64, i64 } %t19, ptr %a24 + call void @finch_str_drop(ptr %a24) + %t25 = load { ptr, i64, i64 }, ptr %a20 + store { ptr, i64, i64 } %t25, ptr %a27 + store { ptr, i64, i64 } { ptr @.str.1516, i64 1, i64 0 }, ptr %a28 + call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28) + store { ptr, i64, i64 } %t25, ptr %a29 + call void @finch_str_drop(ptr %a29) + %t30 = load { ptr, i64, i64 }, ptr %a26 + %t31 = load ptr, ptr %a1 + %t32 = icmp eq ptr %t31, null + br i1 %t32, label %panic2601, label %ok2602 +panic2601: + call void @finch_panic(ptr @.str.1517, i64 766, ptr @.str.1518) unreachable -ok2545: - %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.1514, 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 - 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.1515, 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 - %t44 = add i64 %t43, 1 - call void @finch_arr_reserve(ptr %t6, i64 %t44, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t45 = load ptr, ptr %t6 - %t46 = getelementptr inbounds { ptr, i64, i64 }, ptr %t45, i64 %t43 - store { ptr, i64, i64 } %t42, ptr %t46 - store i64 %t44, ptr %t7 - %t47 = getelementptr inbounds %S.gen.Saved, ptr %a2, i32 0, i32 0 - %t48 = load { ptr, i64, i64 }, ptr %t47 - %t49 = load ptr, ptr %a1 - %t50 = icmp eq ptr %t49, null - br i1 %t50, label %panic2546, label %ok2547 -panic2546: - call void @finch_panic(ptr @.str.1516, i64 747, ptr @.str.1517) +ok2602: + %t33 = getelementptr inbounds %S.gen.Gen, ptr %t31, i32 0, i32 4 + %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t33, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.1519, i64 1, i64 0 }, ptr %a35 + call void @finch_str_join(ptr %a36, ptr %t33, ptr %a35) + %t37 = load { ptr, i64, i64 }, ptr %a36 + store { ptr, i64, i64 } %t30, ptr %a39 + store { ptr, i64, i64 } %t37, ptr %a40 + call void @finch_str_concat(ptr %a38, ptr %a39, ptr %a40) + store { ptr, i64, i64 } %t30, ptr %a41 + call void @finch_str_drop(ptr %a41) + store { ptr, i64, i64 } %t37, ptr %a42 + call void @finch_str_drop(ptr %a42) + %t43 = load { ptr, i64, i64 }, ptr %a38 + store { ptr, i64, i64 } %t43, ptr %a45 + store { ptr, i64, i64 } { ptr @.str.1520, i64 3, i64 0 }, ptr %a46 + call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46) + store { ptr, i64, i64 } %t43, ptr %a47 + call void @finch_str_drop(ptr %a47) + %t48 = load { ptr, i64, i64 }, ptr %a44 + %t49 = load i64, ptr %t7 + %t50 = add i64 %t49, 1 + call void @finch_arr_reserve(ptr %t6, i64 %t50, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t51 = load ptr, ptr %t6 + %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %t51, i64 %t49 + store { ptr, i64, i64 } %t48, ptr %t52 + store i64 %t50, ptr %t7 + %t53 = getelementptr inbounds %S.gen.Saved, ptr %a2, i32 0, i32 0 + %t54 = load { ptr, i64, i64 }, ptr %t53 + %t55 = load ptr, ptr %a1 + %t56 = icmp eq ptr %t55, null + br i1 %t56, label %panic2603, label %ok2604 +panic2603: + call void @finch_panic(ptr @.str.1521, i64 767, ptr @.str.1522) unreachable -ok2547: - %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) - %t54 = load { ptr, i64, i64 }, ptr %a53 - store { ptr, i64, i64 } %t54, ptr %t51 - %t55 = getelementptr inbounds %S.gen.Saved, ptr %a2, i32 0, i32 1 - %t56 = load { ptr, i64, i64 }, ptr %t55 - %t57 = load ptr, ptr %a1 - %t58 = icmp eq ptr %t57, null - br i1 %t58, label %panic2548, label %ok2549 -panic2548: - call void @finch_panic(ptr @.str.1518, i64 748, ptr @.str.1519) - unreachable -ok2549: - %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) - %t62 = load { ptr, i64, i64 }, ptr %a61 - store { ptr, i64, i64 } %t62, ptr %t59 - %t63 = getelementptr inbounds %S.gen.Saved, ptr %a2, i32 0, i32 2 - %t64 = load i64, ptr %t63 +ok2604: + %t57 = getelementptr inbounds %S.gen.Gen, ptr %t55, i32 0, i32 4 + store { ptr, i64, i64 } %t54, ptr %a58 + call void @finch.copy.arr_str(ptr %a59, ptr %a58) + %t60 = load { ptr, i64, i64 }, ptr %a59 + %t61 = load { ptr, i64, i64 }, ptr %t57 + store { ptr, i64, i64 } %t60, ptr %t57 + store { ptr, i64, i64 } %t61, ptr %a62 + call void @finch.drop.arr_str(ptr %a62) + %t63 = getelementptr inbounds %S.gen.Saved, ptr %a2, i32 0, i32 1 + %t64 = load { ptr, i64, i64 }, ptr %t63 %t65 = load ptr, ptr %a1 %t66 = icmp eq ptr %t65, null - br i1 %t66, label %panic2550, label %ok2551 -panic2550: - call void @finch_panic(ptr @.str.1520, i64 749, ptr @.str.1521) + br i1 %t66, label %panic2605, label %ok2606 +panic2605: + call void @finch_panic(ptr @.str.1523, i64 768, ptr @.str.1524) unreachable -ok2551: - %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 %panic2552, label %ok2553 -panic2552: - call void @finch_panic(ptr @.str.1522, i64 750, ptr @.str.1523) - unreachable -ok2553: - %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 +ok2606: + %t67 = getelementptr inbounds %S.gen.Gen, ptr %t65, i32 0, i32 5 + store { ptr, i64, i64 } %t64, ptr %a68 + call void @finch.copy.arr_str(ptr %a69, ptr %a68) + %t70 = load { ptr, i64, i64 }, ptr %a69 + %t71 = load { ptr, i64, i64 }, ptr %t67 + store { ptr, i64, i64 } %t70, ptr %t67 + store { ptr, i64, i64 } %t71, ptr %a72 + call void @finch.drop.arr_str(ptr %a72) + %t73 = getelementptr inbounds %S.gen.Saved, ptr %a2, i32 0, i32 2 %t74 = load i64, ptr %t73 %t75 = load ptr, ptr %a1 %t76 = icmp eq ptr %t75, null - br i1 %t76, label %panic2554, label %ok2555 -panic2554: - call void @finch_panic(ptr @.str.1524, i64 751, ptr @.str.1525) + br i1 %t76, label %panic2607, label %ok2608 +panic2607: + call void @finch_panic(ptr @.str.1525, i64 769, ptr @.str.1526) unreachable -ok2555: - %t77 = getelementptr inbounds %S.gen.Gen, ptr %t75, i32 0, i32 34 +ok2608: + %t77 = getelementptr inbounds %S.gen.Gen, ptr %t75, i32 0, i32 6 store i64 %t74, ptr %t77 + %t78 = getelementptr inbounds %S.gen.Saved, ptr %a2, i32 0, i32 3 + %t79 = load i1, ptr %t78 + %t80 = load ptr, ptr %a1 + %t81 = icmp eq ptr %t80, null + br i1 %t81, label %panic2609, label %ok2610 +panic2609: + call void @finch_panic(ptr @.str.1527, i64 770, ptr @.str.1528) + unreachable +ok2610: + %t82 = getelementptr inbounds %S.gen.Gen, ptr %t80, i32 0, i32 9 + store i1 %t79, ptr %t82 + %t83 = getelementptr inbounds %S.gen.Saved, ptr %a2, i32 0, i32 4 + %t84 = load i64, ptr %t83 + %t85 = load ptr, ptr %a1 + %t86 = icmp eq ptr %t85, null + br i1 %t86, label %panic2611, label %ok2612 +panic2611: + call void @finch_panic(ptr @.str.1529, i64 771, ptr @.str.1530) + unreachable +ok2612: + %t87 = getelementptr inbounds %S.gen.Gen, ptr %t85, i32 0, i32 35 + store i64 %t84, ptr %t87 ret void } @@ -25214,34 +28271,37 @@ entry: %a31 = alloca { ptr, i64, i64 }, align 16 %a32 = alloca { ptr, i64, i64 }, align 16 %a33 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 + %a34 = alloca { ptr, i64, i64 }, align 16 %a37 = alloca { ptr, i64, i64 }, align 16 %a38 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 + %a39 = alloca { ptr, i64, i64 }, align 16 + %a40 = alloca { ptr, i64, i64 }, align 16 + %a43 = alloca { ptr, i64, i64 }, align 16 + %a44 = 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 + %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 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.1526, i64 3, i64 0 }) + %t4 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t3, { ptr, i64, i64 } { ptr @.str.1531, 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.1527, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1528, i64 1, i64 0 }, { ptr, i64, i64 } %t7) + call void @finch.gen.store(ptr %t6, { ptr, i64, i64 } { ptr @.str.1532, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1533, 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.1529, i64 6, i64 0 }) + %t9 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t8, { ptr, i64, i64 } { ptr @.str.1534, 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.1530, i64 6, i64 0 }) + %t12 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t11, { ptr, i64, i64 } { ptr @.str.1535, 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.1531, i64 5, i64 0 }) + %t15 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t14, { ptr, i64, i64 } { ptr @.str.1536, i64 5, i64 0 }) store { ptr, i64, i64 } %t15, ptr %a16 %t17 = load ptr, ptr %a1 %t18 = load { ptr, i64, i64 }, ptr %a10 @@ -25251,63 +28311,75 @@ 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.1532, i64 3, i64 0 }, { ptr, i64, i64 } %t22) + %t23 = call { ptr, i64, i64 } @finch.gen.load(ptr %t21, { ptr, i64, i64 } { ptr @.str.1537, 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.1533, i64 13, i64 0 }, ptr %a28 + store { ptr, i64, i64 } { ptr @.str.1538, 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.1534, i64 2, i64 0 }, ptr %a33 + store { ptr, i64, i64 } { ptr @.str.1539, 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 - store { ptr, i64, i64 } %t34, ptr %a37 + store { ptr, i64, i64 } %t30, ptr %a34 + call void @finch_str_drop(ptr %a34) + %t35 = load { ptr, i64, i64 }, ptr %a31 + %t36 = load { ptr, i64, i64 }, ptr %a2 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 - %t40 = call { ptr, i64, i64 } @finch.gen.op(ptr %t25, { ptr, i64, i64 } %t39) - store { ptr, i64, i64 } %t40, ptr %a41 - %t42 = load ptr, ptr %a1 - %t43 = load { ptr, i64, i64 }, ptr %a41 - %t44 = load { ptr, i64, i64 }, ptr %a13 - %t45 = load { ptr, i64, i64 }, ptr %a16 - call void @finch.gen.condBr(ptr %t42, { ptr, i64, i64 } %t43, { ptr, i64, i64 } %t44, { ptr, i64, i64 } %t45) - %t46 = load ptr, ptr %a1 + store { ptr, i64, i64 } %t36, ptr %a39 + call void @finch_str_concat(ptr %a37, ptr %a38, ptr %a39) + store { ptr, i64, i64 } %t35, ptr %a40 + call void @finch_str_drop(ptr %a40) + %t41 = load { ptr, i64, i64 }, ptr %a37 + %t42 = call { ptr, i64, i64 } @finch.gen.op(ptr %t25, { ptr, i64, i64 } %t41) + store { ptr, i64, i64 } %t41, ptr %a43 + call void @finch_str_drop(ptr %a43) + store { ptr, i64, i64 } %t42, ptr %a44 + %t45 = load ptr, ptr %a1 + %t46 = load { ptr, i64, i64 }, ptr %a44 %t47 = load { ptr, i64, i64 }, ptr %a13 - call void @finch.gen.label(ptr %t46, { ptr, i64, i64 } %t47) - %t48 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t48, ptr %a49 - call void @finch_str_copy(ptr %a50, ptr %a49) - %t51 = load { ptr, i64, i64 }, ptr %a50 - %t52 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t52, ptr %a53 - call void @finch_str_copy(ptr %a54, ptr %a53) - %t55 = load { ptr, i64, i64 }, ptr %a54 - %t56 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } %t56, ptr %a57 - call void @finch_str_copy(ptr %a58, ptr %a57) - %t59 = load { ptr, i64, i64 }, ptr %a58 - %t60 = load { ptr, i64, i64 }, ptr %a24 - store { ptr, i64, i64 } %t60, ptr %a61 - call void @finch_str_copy(ptr %a62, ptr %a61) - %t63 = load { ptr, i64, i64 }, ptr %a62 - %t64 = mul i64 4, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t65 = call ptr @finch_alloc(i64 %t64) - %t66 = getelementptr inbounds { ptr, i64, i64 }, ptr %t65, i64 0 - store { ptr, i64, i64 } %t51, ptr %t66 - %t67 = getelementptr inbounds { ptr, i64, i64 }, ptr %t65, i64 1 - store { ptr, i64, i64 } %t55, ptr %t67 - %t68 = getelementptr inbounds { ptr, i64, i64 }, ptr %t65, i64 2 - store { ptr, i64, i64 } %t59, ptr %t68 - %t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %t65, i64 3 - store { ptr, i64, i64 } %t63, ptr %t69 - %t70 = insertvalue { ptr, i64, i64 } undef, ptr %t65, 0 - %t71 = insertvalue { ptr, i64, i64 } %t70, i64 4, 1 - %t72 = insertvalue { ptr, i64, i64 } %t71, i64 4, 2 - ret { ptr, i64, i64 } %t72 + %t48 = load { ptr, i64, i64 }, ptr %a16 + call void @finch.gen.condBr(ptr %t45, { ptr, i64, i64 } %t46, { ptr, i64, i64 } %t47, { ptr, i64, i64 } %t48) + %t49 = load ptr, ptr %a1 + %t50 = load { ptr, i64, i64 }, ptr %a13 + call void @finch.gen.label(ptr %t49, { ptr, i64, i64 } %t50) + %t51 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } %t51, ptr %a52 + call void @finch_str_copy(ptr %a53, ptr %a52) + %t54 = load { ptr, i64, i64 }, ptr %a53 + %t55 = load { ptr, i64, i64 }, ptr %a10 + store { ptr, i64, i64 } %t55, ptr %a56 + call void @finch_str_copy(ptr %a57, ptr %a56) + %t58 = load { ptr, i64, i64 }, ptr %a57 + %t59 = load { ptr, i64, i64 }, ptr %a16 + store { ptr, i64, i64 } %t59, ptr %a60 + call void @finch_str_copy(ptr %a61, ptr %a60) + %t62 = load { ptr, i64, i64 }, ptr %a61 + %t63 = load { ptr, i64, i64 }, ptr %a24 + store { ptr, i64, i64 } %t63, ptr %a64 + call void @finch_str_copy(ptr %a65, ptr %a64) + %t66 = load { ptr, i64, i64 }, ptr %a65 + %t67 = mul i64 4, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) + %t68 = call ptr @finch_alloc(i64 %t67) + %t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %t68, i64 0 + store { ptr, i64, i64 } %t54, ptr %t69 + %t70 = getelementptr inbounds { ptr, i64, i64 }, ptr %t68, i64 1 + store { ptr, i64, i64 } %t58, ptr %t70 + %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %t68, i64 2 + store { ptr, i64, i64 } %t62, ptr %t71 + %t72 = getelementptr inbounds { ptr, i64, i64 }, ptr %t68, i64 3 + store { ptr, i64, i64 } %t66, ptr %t72 + %t73 = insertvalue { ptr, i64, i64 } undef, ptr %t68, 0 + %t74 = insertvalue { ptr, i64, i64 } %t73, i64 4, 1 + %t75 = insertvalue { ptr, i64, i64 } %t74, i64 4, 2 + call void @finch_str_drop(ptr %a44) + call void @finch_str_drop(ptr %a24) + call void @finch_str_drop(ptr %a16) + call void @finch_str_drop(ptr %a13) + call void @finch_str_drop(ptr %a10) + call void @finch_str_drop(ptr %a5) + ret { ptr, i64, i64 } %t75 } define internal void @finch.gen.loopEnd(ptr %p0, { ptr, i64, i64 } %p1) { @@ -25321,72 +28393,82 @@ entry: %a19 = 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 + %a25 = alloca { ptr, i64, i64 }, align 16 + %a32 = 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 = extractvalue { ptr, i64, i64 } %t4, 1 %t6 = icmp uge i64 0, %t5 - br i1 %t6, label %range2556, label %inrange2557 -range2556: - call void @finch_panic_index(ptr @.str.1536, i64 771, i64 0, i64 %t5) + br i1 %t6, label %range2613, label %inrange2614 +range2613: + call void @finch_panic_index(ptr @.str.1541, i64 791, i64 0, i64 %t5) unreachable -inrange2557: +inrange2614: %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.1535, i64 3, i64 0 }, { ptr, i64, i64 } %t9) + %t10 = call { ptr, i64, i64 } @finch.gen.load(ptr %t3, { ptr, i64, i64 } { ptr @.str.1540, 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.1538, i64 8, i64 0 }, ptr %a16 + store { ptr, i64, i64 } { ptr @.str.1543, 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.1539, i64 3, i64 0 }, ptr %a21 + store { ptr, i64, i64 } { ptr @.str.1544, 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 %range2558, label %inrange2559 -range2558: - call void @finch_panic_index(ptr @.str.1540, i64 772, i64 0, i64 %t25) + store { ptr, i64, i64 } %t18, ptr %a22 + call void @finch_str_drop(ptr %a22) + %t23 = load { ptr, i64, i64 }, ptr %a19 + %t24 = call { ptr, i64, i64 } @finch.gen.op(ptr %t13, { ptr, i64, i64 } %t23) + store { ptr, i64, i64 } %t23, ptr %a25 + call void @finch_str_drop(ptr %a25) + %t26 = load { ptr, i64, i64 }, ptr %a2 + %t27 = extractvalue { ptr, i64, i64 } %t26, 1 + %t28 = icmp uge i64 0, %t27 + br i1 %t28, label %range2615, label %inrange2616 +range2615: + call void @finch_panic_index(ptr @.str.1545, i64 792, i64 0, i64 %t27) unreachable -inrange2559: - %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.1537, 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 %range2560, label %inrange2561 -range2560: - call void @finch_panic_index(ptr @.str.1541, i64 773, i64 1, i64 %t32) +inrange2616: + %t29 = extractvalue { ptr, i64, i64 } %t26, 0 + %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 0 + %t31 = load { ptr, i64, i64 }, ptr %t30 + call void @finch.gen.store(ptr %t12, { ptr, i64, i64 } { ptr @.str.1542, i64 3, i64 0 }, { ptr, i64, i64 } %t24, { ptr, i64, i64 } %t31) + store { ptr, i64, i64 } %t24, ptr %a32 + call void @finch_str_drop(ptr %a32) + %t33 = load ptr, ptr %a1 + %t34 = load { ptr, i64, i64 }, ptr %a2 + %t35 = extractvalue { ptr, i64, i64 } %t34, 1 + %t36 = icmp uge i64 1, %t35 + br i1 %t36, label %range2617, label %inrange2618 +range2617: + call void @finch_panic_index(ptr @.str.1546, i64 793, i64 1, i64 %t35) unreachable -inrange2561: - %t34 = extractvalue { ptr, i64, i64 } %t31, 0 - %t35 = getelementptr inbounds { ptr, i64, i64 }, ptr %t34, i64 1 - %t36 = load { ptr, i64, i64 }, ptr %t35 - call void @finch.gen.br(ptr %t30, { ptr, i64, i64 } %t36) - %t37 = load ptr, ptr %a1 - %t38 = load { ptr, i64, i64 }, ptr %a2 - %t39 = extractvalue { ptr, i64, i64 } %t38, 1 - %t40 = icmp uge i64 2, %t39 - br i1 %t40, label %range2562, label %inrange2563 -range2562: - call void @finch_panic_index(ptr @.str.1542, i64 774, i64 2, i64 %t39) +inrange2618: + %t37 = extractvalue { ptr, i64, i64 } %t34, 0 + %t38 = getelementptr inbounds { ptr, i64, i64 }, ptr %t37, i64 1 + %t39 = load { ptr, i64, i64 }, ptr %t38 + call void @finch.gen.br(ptr %t33, { ptr, i64, i64 } %t39) + %t40 = load ptr, ptr %a1 + %t41 = load { ptr, i64, i64 }, ptr %a2 + %t42 = extractvalue { ptr, i64, i64 } %t41, 1 + %t43 = icmp uge i64 2, %t42 + br i1 %t43, label %range2619, label %inrange2620 +range2619: + call void @finch_panic_index(ptr @.str.1547, i64 794, i64 2, i64 %t42) unreachable -inrange2563: - %t41 = extractvalue { ptr, i64, i64 } %t38, 0 - %t42 = getelementptr inbounds { ptr, i64, i64 }, ptr %t41, i64 2 - %t43 = load { ptr, i64, i64 }, ptr %t42 - call void @finch.gen.label(ptr %t37, { ptr, i64, i64 } %t43) +inrange2620: + %t44 = extractvalue { ptr, i64, i64 } %t41, 0 + %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %t44, i64 2 + %t46 = load { ptr, i64, i64 }, ptr %t45 + call void @finch.gen.label(ptr %t40, { ptr, i64, i64 } %t46) + call void @finch_str_drop(ptr %a11) ret void } @@ -25404,36 +28486,50 @@ entry: %a17 = alloca { ptr, i64, i64 }, align 16 %a18 = alloca { ptr, i64, i64 }, align 16 %a19 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 + %a20 = 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 %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 %a28 = alloca { ptr, i64, i64 }, align 16 - %a32 = 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 %a33 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 + %a36 = alloca { ptr, i64, i64 }, align 16 + %a37 = alloca { ptr, i64, i64 }, align 16 + %a42 = alloca { ptr, i64, i64 }, align 16 + %a43 = alloca { ptr, i64, i64 }, align 16 + %a49 = alloca { ptr, i64, i64 }, align 16 + %a50 = alloca { ptr, i64, i64 }, align 16 %a62 = 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 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = 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 + %a75 = 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 + %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 + %a84 = alloca { ptr, i64, i64 }, align 16 + %a85 = alloca { ptr, i64, i64 }, align 16 + %a86 = alloca { ptr, i64, i64 }, align 16 + %a87 = alloca { ptr, i64, i64 }, align 16 + %a89 = 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 + %a94 = alloca { ptr, i64, i64 }, align 16 + %a105 = alloca { ptr, i64, i64 }, align 16 + %a107 = alloca { ptr, i64, i64 }, align 16 + %a108 = 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 @@ -25441,132 +28537,170 @@ 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.1543, i64 3, i64 0 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.1548, 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 %then2564, label %else2565 -then2564: + br i1 %t10, label %then2621, label %else2622 +then2621: %t11 = load ptr, ptr %a1 %t12 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1544, i64 30, i64 0 }, ptr %a14 + store { ptr, i64, i64 } { ptr @.str.1549, 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.1545, i64 6, i64 0 }, ptr %a19 + store { ptr, i64, i64 } { ptr @.str.1550, 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 - store { ptr, i64, i64 } %t20, ptr %a23 + store { ptr, i64, i64 } %t16, ptr %a20 + call void @finch_str_drop(ptr %a20) + %t21 = load { ptr, i64, i64 }, ptr %a17 + %t22 = load { ptr, i64, i64 }, ptr %a3 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.1546, 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 %endif2566 -else2565: - %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.1547, 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.from2567 -logic.from2567: - br i1 %t35, label %logic.end2569, label %logic.rhs2568 -logic.rhs2568: - %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.1548, 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.rend2570 -logic.rend2570: - br label %logic.end2569 -logic.end2569: - %t42 = phi i1 [ true, %logic.from2567 ], [ %t41, %logic.rend2570 ] - br label %logic.from2571 -logic.from2571: - br i1 %t42, label %logic.end2573, label %logic.rhs2572 -logic.rhs2572: - %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.1549, 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.from2574 -logic.from2574: - br i1 %t48, label %logic.rhs2575, label %logic.end2576 -logic.rhs2575: - %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.rend2577 -logic.rend2577: - br label %logic.end2576 -logic.end2576: - %t52 = phi i1 [ false, %logic.from2574 ], [ %t51, %logic.rend2577 ] - br label %logic.rend2578 -logic.rend2578: - br label %logic.end2573 -logic.end2573: - %t53 = phi i1 [ true, %logic.from2571 ], [ %t52, %logic.rend2578 ] - br i1 %t53, label %then2579, label %else2580 -then2579: - %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.1550, 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.1551, i64 5, i64 0 }, ptr %a64 + store { ptr, i64, i64 } %t22, ptr %a25 + call void @finch_str_concat(ptr %a23, ptr %a24, ptr %a25) + store { ptr, i64, i64 } %t21, ptr %a26 + call void @finch_str_drop(ptr %a26) + %t27 = load { ptr, i64, i64 }, ptr %a23 + store { ptr, i64, i64 } %t27, ptr %a29 + store { ptr, i64, i64 } { ptr @.str.1551, i64 1, i64 0 }, ptr %a30 + call void @finch_str_concat(ptr %a28, ptr %a29, ptr %a30) + store { ptr, i64, i64 } %t27, ptr %a31 + call void @finch_str_drop(ptr %a31) + %t32 = load { ptr, i64, i64 }, ptr %a28 + call void @finch.gen.emit(ptr %t11, { ptr, i64, i64 } %t32) + store { ptr, i64, i64 } %t32, ptr %a33 + call void @finch_str_drop(ptr %a33) + br label %endif2623 +else2622: + %t34 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 0 + %t35 = load { ptr, i64, i64 }, ptr %t34 + store { ptr, i64, i64 } %t35, ptr %a36 + store { ptr, i64, i64 } { ptr @.str.1552, i64 5, i64 0 }, ptr %a37 + %t38 = call i32 @finch_str_eq(ptr %a36, ptr %a37) + %t39 = icmp ne i32 %t38, 0 + br label %logic.from2624 +logic.from2624: + br i1 %t39, label %logic.end2626, label %logic.rhs2625 +logic.rhs2625: + %t40 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 0 + %t41 = load { ptr, i64, i64 }, ptr %t40 + store { ptr, i64, i64 } %t41, ptr %a42 + store { ptr, i64, i64 } { ptr @.str.1553, 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.rend2627 +logic.rend2627: + br label %logic.end2626 +logic.end2626: + %t46 = phi i1 [ true, %logic.from2624 ], [ %t45, %logic.rend2627 ] + br label %logic.from2628 +logic.from2628: + br i1 %t46, label %logic.end2630, label %logic.rhs2629 +logic.rhs2629: + %t47 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 0 + %t48 = load { ptr, i64, i64 }, ptr %t47 + store { ptr, i64, i64 } %t48, ptr %a49 + store { ptr, i64, i64 } { ptr @.str.1554, i64 6, i64 0 }, ptr %a50 + %t51 = call i32 @finch_str_eq(ptr %a49, ptr %a50) + %t52 = icmp ne i32 %t51, 0 + br label %logic.from2631 +logic.from2631: + br i1 %t52, label %logic.rhs2632, label %logic.end2633 +logic.rhs2632: + %t53 = load ptr, ptr %a1 + %t54 = load %S.ast.Type, ptr %a4 + %t55 = call i1 @finch.gen.owning(ptr %t53, %S.ast.Type %t54) + br label %logic.rend2634 +logic.rend2634: + br label %logic.end2633 +logic.end2633: + %t56 = phi i1 [ false, %logic.from2631 ], [ %t55, %logic.rend2634 ] + br label %logic.rend2635 +logic.rend2635: + br label %logic.end2630 +logic.end2630: + %t57 = phi i1 [ true, %logic.from2628 ], [ %t56, %logic.rend2635 ] + br i1 %t57, label %then2636, label %else2637 +then2636: + %t58 = load ptr, ptr %a1 + %t59 = load ptr, ptr %a1 + %t60 = load %S.ast.Type, ptr %a4 + %t61 = call { ptr, i64, i64 } @finch.gen.copyFn(ptr %t59, %S.ast.Type %t60) + store { ptr, i64, i64 } { ptr @.str.1555, i64 10, 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 { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t65, ptr %a68 - store { ptr, i64, i64 } %t66, ptr %a69 + store { ptr, i64, i64 } %t61, ptr %a65 + call void @finch_str_drop(ptr %a65) + %t66 = load { ptr, i64, i64 }, ptr %a62 + store { ptr, i64, i64 } %t66, ptr %a68 + store { ptr, i64, i64 } { ptr @.str.1556, i64 5, 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 %a72 - store { ptr, i64, i64 } { ptr @.str.1552, 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 - store { ptr, i64, i64 } %t74, 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.1553, 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 %endif2581 -else2580: - %t84 = load ptr, ptr %a1 - %t85 = load ptr, ptr %a1 - %t86 = load %S.ast.Type, ptr %a4 - %t87 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t85, %S.ast.Type %t86) - %t88 = load ptr, ptr %a1 - %t89 = load ptr, ptr %a1 - %t90 = load %S.ast.Type, ptr %a4 - %t91 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t89, %S.ast.Type %t90) - %t92 = load { ptr, i64, i64 }, ptr %a3 - %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 %endif2581 -endif2581: - br label %endif2566 -endif2566: + store { ptr, i64, i64 } %t66, ptr %a70 + call void @finch_str_drop(ptr %a70) + %t71 = load { ptr, i64, i64 }, ptr %a67 + %t72 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t71, ptr %a74 + store { ptr, i64, i64 } %t72, ptr %a75 + call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) + store { ptr, i64, i64 } %t71, ptr %a76 + call void @finch_str_drop(ptr %a76) + %t77 = load { ptr, i64, i64 }, ptr %a73 + store { ptr, i64, i64 } %t77, ptr %a79 + store { ptr, i64, i64 } { ptr @.str.1557, i64 6, i64 0 }, ptr %a80 + call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) + store { ptr, i64, i64 } %t77, ptr %a81 + call void @finch_str_drop(ptr %a81) + %t82 = load { ptr, i64, i64 }, ptr %a78 + %t83 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t82, ptr %a85 + store { ptr, i64, i64 } %t83, ptr %a86 + call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) + store { ptr, i64, i64 } %t82, ptr %a87 + call void @finch_str_drop(ptr %a87) + %t88 = load { ptr, i64, i64 }, ptr %a84 + store { ptr, i64, i64 } %t88, ptr %a90 + store { ptr, i64, i64 } { ptr @.str.1558, i64 1, i64 0 }, ptr %a91 + call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) + store { ptr, i64, i64 } %t88, ptr %a92 + call void @finch_str_drop(ptr %a92) + %t93 = load { ptr, i64, i64 }, ptr %a89 + call void @finch.gen.emit(ptr %t58, { ptr, i64, i64 } %t93) + store { ptr, i64, i64 } %t93, ptr %a94 + call void @finch_str_drop(ptr %a94) + br label %endif2638 +else2637: + %t95 = load ptr, ptr %a1 + %t96 = load ptr, ptr %a1 + %t97 = load %S.ast.Type, ptr %a4 + %t98 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t96, %S.ast.Type %t97) + %t99 = load ptr, ptr %a1 + %t100 = load ptr, ptr %a1 + %t101 = load %S.ast.Type, ptr %a4 + %t102 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t100, %S.ast.Type %t101) + %t103 = load { ptr, i64, i64 }, ptr %a3 + %t104 = call { ptr, i64, i64 } @finch.gen.load(ptr %t99, { ptr, i64, i64 } %t102, { ptr, i64, i64 } %t103) + store { ptr, i64, i64 } %t102, ptr %a105 + call void @finch_str_drop(ptr %a105) + %t106 = load { ptr, i64, i64 }, ptr %a2 + call void @finch.gen.store(ptr %t95, { ptr, i64, i64 } %t98, { ptr, i64, i64 } %t104, { ptr, i64, i64 } %t106) + store { ptr, i64, i64 } %t98, ptr %a107 + call void @finch_str_drop(ptr %a107) + store { ptr, i64, i64 } %t104, ptr %a108 + call void @finch_str_drop(ptr %a108) + br label %endif2638 +endif2638: + br label %endif2623 +endif2623: + ret void +} + +define internal void @finch.drop.S_gen_Saved(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.gen.Saved, ptr %a, i32 0, i32 0 + call void @finch.drop.arr_str(ptr %t1) + %t2 = getelementptr inbounds %S.gen.Saved, ptr %a, i32 0, i32 1 + call void @finch.drop.arr_str(ptr %t2) ret void } @@ -25577,719 +28711,884 @@ entry: %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 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca %S.gen.Saved, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca %S.ast.Type, align 16 + %a8 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca { ptr, i64, i64 }, align 16 + %a23 = alloca { ptr, i64, i64 }, align 16 + %a24 = alloca { ptr, i64, i64 }, align 16 + %a32 = alloca %S.gen.Saved, align 16 + %a35 = alloca { ptr, i64, i64 }, align 16 + %a36 = alloca { ptr, i64, i64 }, align 16 + %a46 = alloca %S.ast.Type, align 16 + %a47 = alloca %S.ast.Type, align 16 %a49 = alloca %S.ast.Type, align 16 - %a51 = alloca %S.ast.Type, align 16 + %a54 = alloca { ptr, i64, i64 }, align 16 + %a55 = 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 + %a59 = 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 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 + %a64 = alloca { ptr, i64, i64 }, align 16 + %a70 = alloca { ptr, i64, i64 }, align 16 + %a73 = alloca { ptr, i64, i64 }, align 16 + %a78 = alloca { ptr, i64, i64 }, align 16 + %a79 = alloca { ptr, i64, i64 }, align 16 + %a83 = 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 %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 %a99 = alloca { ptr, i64, i64 }, align 16 %a100 = alloca { ptr, i64, i64 }, align 16 %a101 = 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 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 + %a102 = 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 + %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 + %a118 = alloca { ptr, i64, i64 }, align 16 %a121 = 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 + %a122 = 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 %a132 = alloca { ptr, i64, i64 }, align 16 %a133 = alloca { ptr, i64, i64 }, align 16 %a134 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 + %a135 = 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 + %a141 = alloca { ptr, i64, i64 }, align 16 %a143 = alloca { ptr, i64, i64 }, align 16 %a144 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 + %a145 = alloca { ptr, i64, i64 }, align 16 + %a146 = alloca { ptr, i64, i64 }, align 16 + %a154 = alloca { ptr, i64, i64 }, align 16 + %a155 = alloca { ptr, i64, i64 }, align 16 %a156 = alloca { ptr, i64, i64 }, align 16 %a157 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 + %a160 = alloca { ptr, i64, i64 }, align 16 + %a161 = alloca { ptr, i64, i64 }, align 16 %a170 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = 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 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 + %a171 = alloca { ptr, i64, i64 }, align 16 + %a178 = 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 + %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 + %a213 = alloca { ptr, i64, i64 }, align 16 + %a214 = alloca { ptr, i64, i64 }, align 16 + %a215 = alloca { ptr, i64, i64 }, align 16 + %a216 = alloca { ptr, i64, i64 }, align 16 + %a218 = alloca { ptr, i64, i64 }, align 16 + %a219 = alloca { ptr, i64, i64 }, align 16 %a220 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a236 = 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 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 + %a221 = alloca { ptr, i64, i64 }, align 16 + %a224 = alloca { ptr, i64, i64 }, align 16 + %a226 = alloca { ptr, i64, i64 }, align 16 + %a227 = alloca { ptr, i64, i64 }, align 16 + %a231 = alloca { ptr, i64, i64 }, align 16 + %a241 = alloca { ptr, i64, i64 }, align 16 + %a251 = 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 - %a263 = 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 %a267 = alloca { ptr, i64, i64 }, align 16 %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a329 = alloca %S.gen.StructDef, align 16 - %a330 = alloca %S.gen.StructDef, align 16 - %a332 = alloca %S.gen.StructDef, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a345 = alloca 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 - %a376 = alloca { ptr, i64, i64 }, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a383 = 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 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a392 = 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 + %a273 = alloca { ptr, i64, i64 }, align 16 + %a276 = alloca { ptr, i64, i64 }, align 16 + %a277 = alloca { ptr, i64, i64 }, align 16 + %a278 = 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 + %a284 = alloca { ptr, i64, i64 }, align 16 + %a287 = alloca { ptr, i64, i64 }, align 16 + %a289 = 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 + %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 + %a298 = alloca { ptr, i64, i64 }, align 16 + %a301 = alloca { ptr, i64, i64 }, align 16 + %a304 = alloca { ptr, i64, i64 }, align 16 + %a323 = alloca { ptr, i64, i64 }, align 16 + %a324 = alloca { ptr, i64, i64 }, align 16 + %a341 = alloca { ptr, i64, i64 }, align 16 + %a342 = alloca { ptr, i64, i64 }, align 16 + %a364 = alloca %S.gen.StructDef, align 16 + %a365 = alloca %S.gen.StructDef, align 16 + %a367 = alloca %S.gen.StructDef, align 16 + %a371 = alloca { ptr, i64, i64 }, align 16 + %a377 = alloca { ptr, i64, i64 }, align 16 + %a381 = alloca i64, align 16 + %a396 = alloca { ptr, i64, i64 }, align 16 + %a397 = alloca { ptr, i64, i64 }, align 16 + %a398 = 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 - %a404 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca { ptr, i64, i64 }, align 16 - %a406 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 + %a403 = alloca { ptr, i64, i64 }, align 16 + %a413 = 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 + %a422 = alloca { ptr, i64, i64 }, align 16 + %a423 = alloca { ptr, i64, i64 }, align 16 + %a426 = alloca { ptr, i64, i64 }, align 16 %a427 = 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 %a432 = alloca { ptr, i64, i64 }, align 16 %a433 = alloca { ptr, i64, i64 }, align 16 - %a436 = alloca { ptr, i64, i64 }, align 16 - %a437 = alloca { ptr, i64, i64 }, align 16 + %a443 = alloca { ptr, i64, i64 }, align 16 + %a445 = 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 + %a449 = alloca { ptr, i64, i64 }, align 16 + %a452 = alloca { ptr, i64, i64 }, align 16 + %a453 = alloca { ptr, i64, i64 }, align 16 + %a471 = alloca { ptr, i64, i64 }, align 16 + %a472 = alloca { ptr, i64, i64 }, align 16 + %a473 = alloca { ptr, i64, i64 }, align 16 + %a475 = alloca { ptr, i64, i64 }, align 16 + %a476 = alloca { ptr, i64, i64 }, align 16 + %a477 = alloca { ptr, i64, i64 }, align 16 + %a478 = alloca { ptr, i64, i64 }, align 16 + %a480 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 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.1554, i64 12, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.1559, 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 %panic2582, label %ok2583 -panic2582: - call void @finch_panic(ptr @.str.1555, i64 789, ptr @.str.1556) + store { ptr, i64, i64 } %t4, ptr %a8 + call void @finch_str_drop(ptr %a8) + %t9 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } %t9, ptr %a10 + %t11 = load ptr, ptr %a1 + %t12 = icmp eq ptr %t11, null + br i1 %t12, label %panic2639, label %ok2640 +panic2639: + call void @finch_panic(ptr @.str.1560, i64 809, ptr @.str.1561) unreachable -ok2583: - %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 %then2584, label %endif2586 -then2584: - %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 -endif2586: - %t20 = load ptr, ptr %a1 - %t21 = icmp eq ptr %t20, null - br i1 %t21, label %panic2587, label %ok2588 -panic2587: - call void @finch_panic(ptr @.str.1557, i64 792, ptr @.str.1558) +ok2640: + %t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 22 + %t14 = load { ptr, i64, i64 }, ptr %t13 + %t15 = load { ptr, i64, i64 }, ptr %a10 + %t16 = call i1 @finch.gen.has({ ptr, i64, i64 } %t14, { ptr, i64, i64 } %t15) + br i1 %t16, label %then2641, label %endif2643 +then2641: + %t17 = load { ptr, i64, i64 }, ptr %a10 + ret { ptr, i64, i64 } %t17 +endif2643: + %t18 = load ptr, ptr %a1 + %t19 = icmp eq ptr %t18, null + br i1 %t19, label %panic2644, label %ok2645 +panic2644: + call void @finch_panic(ptr @.str.1562, i64 812, ptr @.str.1563) unreachable -ok2588: - %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 - store { ptr, i64, i64 } %t24, ptr %a25 - call void @finch_str_copy(ptr %a26, ptr %a25) - %t27 = load { ptr, i64, i64 }, ptr %a26 - %t28 = load i64, ptr %t23 - %t29 = add i64 %t28, 1 - call void @finch_arr_reserve(ptr %t22, i64 %t29, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t30 = load ptr, ptr %t22 - %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t30, i64 %t28 - store { ptr, i64, i64 } %t27, ptr %t31 - store i64 %t29, ptr %t23 - %t32 = load ptr, ptr %a1 - %t33 = call %S.gen.Saved @finch.gen.beginHelper(ptr %t32) - store %S.gen.Saved %t33, ptr %a34 - %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.1559, 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 %then2589, label %else2590 -then2589: - %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 %range2592, label %inrange2593 -range2592: - call void @finch_panic_index(ptr @.str.1560, i64 795, i64 0, i64 %t43) +ok2645: + %t20 = getelementptr inbounds %S.gen.Gen, ptr %t18, i32 0, i32 22 + %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t20, i32 0, i32 1 + %t22 = load { ptr, i64, i64 }, ptr %a10 + 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 + %t30 = load ptr, ptr %a1 + %t31 = call %S.gen.Saved @finch.gen.beginHelper(ptr %t30) + store %S.gen.Saved %t31, ptr %a32 + %t33 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 + %t34 = load { ptr, i64, i64 }, ptr %t33 + store { ptr, i64, i64 } %t34, ptr %a35 + store { ptr, i64, i64 } { ptr @.str.1564, i64 5, i64 0 }, ptr %a36 + %t37 = call i32 @finch_str_eq(ptr %a35, ptr %a36) + %t38 = icmp ne i32 %t37, 0 + br i1 %t38, label %then2646, label %else2647 +then2646: + %t39 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t40 = load { ptr, i64, i64 }, ptr %t39 + %t41 = extractvalue { ptr, i64, i64 } %t40, 1 + %t42 = icmp uge i64 0, %t41 + br i1 %t42, label %range2649, label %inrange2650 +range2649: + call void @finch_panic_index(ptr @.str.1565, i64 815, i64 0, i64 %t41) unreachable -inrange2593: - %t45 = extractvalue { ptr, i64, i64 } %t42, 0 - %t46 = getelementptr inbounds %S.ast.Type, ptr %t45, i64 0 - %t47 = load %S.ast.Type, ptr %t46 - store %S.ast.Type %t47, ptr %a48 - call void @finch.copy.S_ast_Type(ptr %a49, ptr %a48) - %t50 = load %S.ast.Type, ptr %a49 - store %S.ast.Type %t50, ptr %a51 - %t52 = load ptr, ptr %a1 - %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.1561, 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.1562, 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 %then2594, label %endif2596 -then2594: - %t67 = load ptr, ptr %a1 - %t68 = call { ptr, i64, i64 } @finch.gen.load(ptr %t67, { ptr, i64, i64 } { ptr @.str.1563, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1564, 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.1565, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1566, i64 4, i64 0 }) - store { ptr, i64, i64 } %t71, ptr %a72 - %t73 = load ptr, ptr %a1 +inrange2650: + %t43 = extractvalue { ptr, i64, i64 } %t40, 0 + %t44 = getelementptr inbounds %S.ast.Type, ptr %t43, i64 0 + %t45 = load %S.ast.Type, ptr %t44 + store %S.ast.Type %t45, ptr %a46 + call void @finch.copy.S_ast_Type(ptr %a47, ptr %a46) + %t48 = load %S.ast.Type, ptr %a47 + store %S.ast.Type %t48, ptr %a49 + %t50 = load ptr, ptr %a1 + %t51 = load ptr, ptr %a1 + %t52 = load %S.ast.Type, ptr %a49 + %t53 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t51, %S.ast.Type %t52) + store { ptr, i64, i64 } { ptr @.str.1566, i64 55, i64 0 }, ptr %a55 + store { ptr, i64, i64 } %t53, ptr %a56 + call void @finch_str_concat(ptr %a54, ptr %a55, ptr %a56) + store { ptr, i64, i64 } %t53, ptr %a57 + call void @finch_str_drop(ptr %a57) + %t58 = load { ptr, i64, i64 }, ptr %a54 + store { ptr, i64, i64 } %t58, ptr %a60 + store { ptr, i64, i64 } { ptr @.str.1567, i64 1, i64 0 }, ptr %a61 + call void @finch_str_concat(ptr %a59, ptr %a60, ptr %a61) + store { ptr, i64, i64 } %t58, ptr %a62 + call void @finch_str_drop(ptr %a62) + %t63 = load { ptr, i64, i64 }, ptr %a59 + call void @finch.gen.emit(ptr %t50, { ptr, i64, i64 } %t63) + store { ptr, i64, i64 } %t63, ptr %a64 + call void @finch_str_drop(ptr %a64) + %t65 = load ptr, ptr %a1 + %t66 = load %S.ast.Type, ptr %a49 + %t67 = call i1 @finch.gen.owning(ptr %t65, %S.ast.Type %t66) + br i1 %t67, label %then2651, label %endif2653 +then2651: + %t68 = load ptr, ptr %a1 + %t69 = call { ptr, i64, i64 } @finch.gen.load(ptr %t68, { ptr, i64, i64 } { ptr @.str.1568, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1569, i64 4, i64 0 }) + store { ptr, i64, i64 } %t69, ptr %a70 + %t71 = load ptr, ptr %a1 + %t72 = call { ptr, i64, i64 } @finch.gen.load(ptr %t71, { ptr, i64, i64 } { ptr @.str.1570, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1571, i64 4, i64 0 }) + store { ptr, i64, i64 } %t72, ptr %a73 %t74 = load ptr, ptr %a1 - %t75 = call { ptr, i64, i64 } @finch.gen.op(ptr %t74, { ptr, i64, i64 } { ptr @.str.1568, i64 64, i64 0 }) - %t76 = call { ptr, i64, i64 } @finch.gen.load(ptr %t73, { ptr, i64, i64 } { ptr @.str.1567, 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 - %t80 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t78, { ptr, i64, i64 } %t79) - store { ptr, i64, i64 } %t80, ptr %a81 - %t82 = load ptr, ptr %a1 - %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.1569, 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.1570, 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 - store { ptr, i64, i64 } %t93, ptr %a96 - store { ptr, i64, i64 } %t94, 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 %a100 - store { ptr, i64, i64 } { ptr @.str.1571, i64 6, i64 0 }, ptr %a101 + %t75 = load ptr, ptr %a1 + %t76 = call { ptr, i64, i64 } @finch.gen.op(ptr %t75, { ptr, i64, i64 } { ptr @.str.1573, i64 64, i64 0 }) + %t77 = call { ptr, i64, i64 } @finch.gen.load(ptr %t74, { ptr, i64, i64 } { ptr @.str.1572, i64 3, i64 0 }, { ptr, i64, i64 } %t76) + store { ptr, i64, i64 } %t76, ptr %a78 + call void @finch_str_drop(ptr %a78) + store { ptr, i64, i64 } %t77, ptr %a79 + %t80 = load ptr, ptr %a1 + %t81 = load { ptr, i64, i64 }, ptr %a79 + %t82 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t80, { ptr, i64, i64 } %t81) + store { ptr, i64, i64 } %t82, ptr %a83 + %t84 = load ptr, ptr %a1 + %t85 = load ptr, ptr %a1 + %t86 = load %S.ast.Type, ptr %a49 + %t87 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t85, %S.ast.Type %t86) + store { ptr, i64, i64 } { ptr @.str.1574, i64 23, i64 0 }, ptr %a89 + store { ptr, i64, i64 } %t87, ptr %a90 + call void @finch_str_concat(ptr %a88, ptr %a89, ptr %a90) + store { ptr, i64, i64 } %t87, ptr %a91 + call void @finch_str_drop(ptr %a91) + %t92 = load { ptr, i64, i64 }, ptr %a88 + store { ptr, i64, i64 } %t92, ptr %a94 + store { ptr, i64, i64 } { ptr @.str.1575, i64 6, i64 0 }, ptr %a95 + call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) + store { ptr, i64, i64 } %t92, ptr %a96 + call void @finch_str_drop(ptr %a96) + %t97 = load { ptr, i64, i64 }, ptr %a93 + %t98 = load { ptr, i64, i64 }, ptr %a70 + store { ptr, i64, i64 } %t97, 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 - %t103 = load { ptr, i64, i64 }, ptr %a81 - %t104 = extractvalue { ptr, i64, i64 } %t103, 1 - %t105 = icmp uge i64 3, %t104 - br i1 %t105, label %range2597, label %inrange2598 -range2597: - call void @finch_panic_index(ptr @.str.1572, i64 802, i64 3, i64 %t104) + store { ptr, i64, i64 } %t97, ptr %a102 + call void @finch_str_drop(ptr %a102) + %t103 = load { ptr, i64, i64 }, ptr %a99 + store { ptr, i64, i64 } %t103, ptr %a105 + store { ptr, i64, i64 } { ptr @.str.1576, i64 6, i64 0 }, ptr %a106 + call void @finch_str_concat(ptr %a104, ptr %a105, ptr %a106) + store { ptr, i64, i64 } %t103, ptr %a107 + call void @finch_str_drop(ptr %a107) + %t108 = load { ptr, i64, i64 }, ptr %a104 + %t109 = load { ptr, i64, i64 }, ptr %a83 + %t110 = extractvalue { ptr, i64, i64 } %t109, 1 + %t111 = icmp uge i64 3, %t110 + br i1 %t111, label %range2654, label %inrange2655 +range2654: + call void @finch_panic_index(ptr @.str.1577, i64 822, i64 3, i64 %t110) unreachable -inrange2598: - %t106 = extractvalue { ptr, i64, i64 } %t103, 0 - %t107 = getelementptr inbounds { ptr, i64, i64 }, ptr %t106, i64 3 - %t108 = load { ptr, i64, i64 }, ptr %t107 - store { ptr, i64, i64 } %t102, 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 - %t113 = call { ptr, i64, i64 } @finch.gen.op(ptr %t82, { ptr, i64, i64 } %t112) - store { ptr, i64, i64 } %t113, ptr %a114 - %t115 = load ptr, ptr %a1 - %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.1573, 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.1574, 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 +inrange2655: + %t112 = extractvalue { ptr, i64, i64 } %t109, 0 + %t113 = getelementptr inbounds { ptr, i64, i64 }, ptr %t112, i64 3 + %t114 = load { ptr, i64, i64 }, ptr %t113 + store { ptr, i64, i64 } %t108, ptr %a116 + store { ptr, i64, i64 } %t114, ptr %a117 + call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) + store { ptr, i64, i64 } %t108, ptr %a118 + call void @finch_str_drop(ptr %a118) + %t119 = load { ptr, i64, i64 }, ptr %a115 + %t120 = call { ptr, i64, i64 } @finch.gen.op(ptr %t84, { ptr, i64, i64 } %t119) + store { ptr, i64, i64 } %t119, ptr %a121 + call void @finch_str_drop(ptr %a121) + store { ptr, i64, i64 } %t120, ptr %a122 + %t123 = load ptr, ptr %a1 + %t124 = load ptr, ptr %a1 + %t125 = load %S.ast.Type, ptr %a49 + %t126 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t124, %S.ast.Type %t125) + store { ptr, i64, i64 } { ptr @.str.1578, i64 23, i64 0 }, ptr %a128 store { ptr, i64, i64 } %t126, 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 + call void @finch_str_concat(ptr %a127, ptr %a128, ptr %a129) + store { ptr, i64, i64 } %t126, ptr %a130 + call void @finch_str_drop(ptr %a130) + %t131 = load { ptr, i64, i64 }, ptr %a127 store { ptr, i64, i64 } %t131, ptr %a133 - store { ptr, i64, i64 } { ptr @.str.1575, i64 6, i64 0 }, ptr %a134 + store { ptr, i64, i64 } { ptr @.str.1579, 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 %range2599, label %inrange2600 -range2599: - call void @finch_panic_index(ptr @.str.1576, i64 803, i64 3, i64 %t137) + store { ptr, i64, i64 } %t131, ptr %a135 + call void @finch_str_drop(ptr %a135) + %t136 = load { ptr, i64, i64 }, ptr %a132 + %t137 = load { ptr, i64, i64 }, ptr %a73 + store { ptr, i64, i64 } %t136, ptr %a139 + store { ptr, i64, i64 } %t137, ptr %a140 + call void @finch_str_concat(ptr %a138, ptr %a139, ptr %a140) + store { ptr, i64, i64 } %t136, ptr %a141 + call void @finch_str_drop(ptr %a141) + %t142 = load { ptr, i64, i64 }, ptr %a138 + store { ptr, i64, i64 } %t142, ptr %a144 + store { ptr, i64, i64 } { ptr @.str.1580, i64 6, i64 0 }, ptr %a145 + call void @finch_str_concat(ptr %a143, ptr %a144, ptr %a145) + store { ptr, i64, i64 } %t142, ptr %a146 + call void @finch_str_drop(ptr %a146) + %t147 = load { ptr, i64, i64 }, ptr %a143 + %t148 = load { ptr, i64, i64 }, ptr %a83 + %t149 = extractvalue { ptr, i64, i64 } %t148, 1 + %t150 = icmp uge i64 3, %t149 + br i1 %t150, label %range2656, label %inrange2657 +range2656: + call void @finch_panic_index(ptr @.str.1581, i64 823, i64 3, i64 %t149) unreachable -inrange2600: - %t139 = extractvalue { ptr, i64, i64 } %t136, 0 - %t140 = getelementptr inbounds { ptr, i64, i64 }, ptr %t139, i64 3 - %t141 = load { ptr, i64, i64 }, ptr %t140 - store { ptr, i64, i64 } %t135, ptr %a143 - store { ptr, i64, i64 } %t141, ptr %a144 - call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144) - %t145 = load { ptr, i64, i64 }, ptr %a142 - %t146 = call { ptr, i64, i64 } @finch.gen.op(ptr %t115, { ptr, i64, i64 } %t145) - store { ptr, i64, i64 } %t146, ptr %a147 - %t148 = load ptr, ptr %a1 - %t149 = load { ptr, i64, i64 }, ptr %a114 - %t150 = load { ptr, i64, i64 }, ptr %a147 - %t151 = load %S.ast.Type, ptr %a51 - call void @finch.gen.copyAt(ptr %t148, { ptr, i64, i64 } %t149, { ptr, i64, i64 } %t150, %S.ast.Type %t151) - %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 %endif2596 -endif2596: - br label %endif2591 -else2590: - %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.1577, 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 %then2601, label %else2602 -then2601: - %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.1578, 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.1579, 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) - %t172 = load ptr, ptr %a1 - %t173 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t174 = load { ptr, i64, i64 }, ptr %t173 - %t175 = extractvalue { ptr, i64, i64 } %t174, 1 - %t176 = icmp uge i64 0, %t175 - br i1 %t176, label %range2604, label %inrange2605 -range2604: - call void @finch_panic_index(ptr @.str.1580, i64 809, i64 0, i64 %t175) +inrange2657: + %t151 = extractvalue { ptr, i64, i64 } %t148, 0 + %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %t151, i64 3 + %t153 = load { ptr, i64, i64 }, ptr %t152 + store { ptr, i64, i64 } %t147, ptr %a155 + store { ptr, i64, i64 } %t153, ptr %a156 + call void @finch_str_concat(ptr %a154, ptr %a155, ptr %a156) + store { ptr, i64, i64 } %t147, ptr %a157 + call void @finch_str_drop(ptr %a157) + %t158 = load { ptr, i64, i64 }, ptr %a154 + %t159 = call { ptr, i64, i64 } @finch.gen.op(ptr %t123, { ptr, i64, i64 } %t158) + store { ptr, i64, i64 } %t158, ptr %a160 + call void @finch_str_drop(ptr %a160) + store { ptr, i64, i64 } %t159, ptr %a161 + %t162 = load ptr, ptr %a1 + %t163 = load { ptr, i64, i64 }, ptr %a122 + %t164 = load { ptr, i64, i64 }, ptr %a161 + %t165 = load %S.ast.Type, ptr %a49 + call void @finch.gen.copyAt(ptr %t162, { ptr, i64, i64 } %t163, { ptr, i64, i64 } %t164, %S.ast.Type %t165) + %t166 = load ptr, ptr %a1 + %t167 = load { ptr, i64, i64 }, ptr %a83 + call void @finch.gen.loopEnd(ptr %t166, { ptr, i64, i64 } %t167) + call void @finch_str_drop(ptr %a161) + call void @finch_str_drop(ptr %a122) + call void @finch.drop.arr_str(ptr %a83) + call void @finch_str_drop(ptr %a79) + call void @finch_str_drop(ptr %a73) + call void @finch_str_drop(ptr %a70) + br label %endif2653 +endif2653: + call void @finch.drop.S_ast_Type(ptr %a49) + br label %endif2648 +else2647: + %t168 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 + %t169 = load { ptr, i64, i64 }, ptr %t168 + store { ptr, i64, i64 } %t169, ptr %a170 + store { ptr, i64, i64 } { ptr @.str.1582, i64 3, i64 0 }, ptr %a171 + %t172 = call i32 @finch_str_eq(ptr %a170, ptr %a171) + %t173 = icmp ne i32 %t172, 0 + br i1 %t173, label %then2658, label %else2659 +then2658: + %t174 = load ptr, ptr %a1 + %t175 = load ptr, ptr %a1 + %t176 = load %S.ast.Type, ptr %a2 + %t177 = call { ptr, i64, i64 } @finch.gen.entrySize(ptr %t175, %S.ast.Type %t176) + store { ptr, i64, i64 } { ptr @.str.1583, i64 55, i64 0 }, ptr %a179 + store { ptr, i64, i64 } %t177, ptr %a180 + call void @finch_str_concat(ptr %a178, ptr %a179, ptr %a180) + store { ptr, i64, i64 } %t177, ptr %a181 + call void @finch_str_drop(ptr %a181) + %t182 = load { ptr, i64, i64 }, ptr %a178 + store { ptr, i64, i64 } %t182, ptr %a184 + store { ptr, i64, i64 } { ptr @.str.1584, i64 1, i64 0 }, ptr %a185 + call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) + store { ptr, i64, i64 } %t182, ptr %a186 + call void @finch_str_drop(ptr %a186) + %t187 = load { ptr, i64, i64 }, ptr %a183 + call void @finch.gen.emit(ptr %t174, { ptr, i64, i64 } %t187) + store { ptr, i64, i64 } %t187, ptr %a188 + call void @finch_str_drop(ptr %a188) + %t189 = load ptr, ptr %a1 + %t190 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t191 = load { ptr, i64, i64 }, ptr %t190 + %t192 = extractvalue { ptr, i64, i64 } %t191, 1 + %t193 = icmp uge i64 0, %t192 + br i1 %t193, label %range2661, label %inrange2662 +range2661: + call void @finch_panic_index(ptr @.str.1585, i64 829, i64 0, i64 %t192) unreachable -inrange2605: - %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.from2606 -logic.from2606: - br i1 %t180, label %logic.end2608, label %logic.rhs2607 -logic.rhs2607: - %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 %range2609, label %inrange2610 -range2609: - call void @finch_panic_index(ptr @.str.1581, i64 809, i64 1, i64 %t184) +inrange2662: + %t194 = extractvalue { ptr, i64, i64 } %t191, 0 + %t195 = getelementptr inbounds %S.ast.Type, ptr %t194, i64 0 + %t196 = load %S.ast.Type, ptr %t195 + %t197 = call i1 @finch.gen.owning(ptr %t189, %S.ast.Type %t196) + br label %logic.from2663 +logic.from2663: + br i1 %t197, label %logic.end2665, label %logic.rhs2664 +logic.rhs2664: + %t198 = load ptr, ptr %a1 + %t199 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t200 = load { ptr, i64, i64 }, ptr %t199 + %t201 = extractvalue { ptr, i64, i64 } %t200, 1 + %t202 = icmp uge i64 1, %t201 + br i1 %t202, label %range2666, label %inrange2667 +range2666: + call void @finch_panic_index(ptr @.str.1586, i64 829, i64 1, i64 %t201) unreachable -inrange2610: - %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.rend2611 -logic.rend2611: - br label %logic.end2608 -logic.end2608: - %t190 = phi i1 [ true, %logic.from2606 ], [ %t189, %logic.rend2611 ] - br i1 %t190, label %then2612, label %endif2614 -then2612: - %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.1583, 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.1584, 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.1582, 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 - %t209 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t207, { ptr, i64, i64 } %t208) - store { ptr, i64, i64 } %t209, ptr %a210 - %t211 = load ptr, ptr %a1 - %t212 = load %S.ast.Type, ptr %a2 - %t213 = load { ptr, i64, i64 }, ptr %a210 - %t214 = extractvalue { ptr, i64, i64 } %t213, 1 - %t215 = icmp uge i64 3, %t214 - br i1 %t215, label %range2615, label %inrange2616 -range2615: - call void @finch_panic_index(ptr @.str.1586, i64 813, i64 3, i64 %t214) +inrange2667: + %t203 = extractvalue { ptr, i64, i64 } %t200, 0 + %t204 = getelementptr inbounds %S.ast.Type, ptr %t203, i64 1 + %t205 = load %S.ast.Type, ptr %t204 + %t206 = call i1 @finch.gen.owning(ptr %t198, %S.ast.Type %t205) + br label %logic.rend2668 +logic.rend2668: + br label %logic.end2665 +logic.end2665: + %t207 = phi i1 [ true, %logic.from2663 ], [ %t206, %logic.rend2668 ] + br i1 %t207, label %then2669, label %endif2671 +then2669: + %t208 = load ptr, ptr %a1 + %t209 = load ptr, ptr %a1 + %t210 = load ptr, ptr %a1 + %t211 = load %S.ast.Type, ptr %a2 + %t212 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t210, %S.ast.Type %t211) + store { ptr, i64, i64 } { ptr @.str.1588, i64 23, i64 0 }, ptr %a214 + store { ptr, i64, i64 } %t212, ptr %a215 + call void @finch_str_concat(ptr %a213, ptr %a214, ptr %a215) + store { ptr, i64, i64 } %t212, ptr %a216 + call void @finch_str_drop(ptr %a216) + %t217 = load { ptr, i64, i64 }, ptr %a213 + store { ptr, i64, i64 } %t217, ptr %a219 + store { ptr, i64, i64 } { ptr @.str.1589, i64 24, i64 0 }, ptr %a220 + call void @finch_str_concat(ptr %a218, ptr %a219, ptr %a220) + store { ptr, i64, i64 } %t217, ptr %a221 + call void @finch_str_drop(ptr %a221) + %t222 = load { ptr, i64, i64 }, ptr %a218 + %t223 = call { ptr, i64, i64 } @finch.gen.op(ptr %t209, { ptr, i64, i64 } %t222) + store { ptr, i64, i64 } %t222, ptr %a224 + call void @finch_str_drop(ptr %a224) + %t225 = call { ptr, i64, i64 } @finch.gen.load(ptr %t208, { ptr, i64, i64 } { ptr @.str.1587, i64 3, i64 0 }, { ptr, i64, i64 } %t223) + store { ptr, i64, i64 } %t223, ptr %a226 + call void @finch_str_drop(ptr %a226) + store { ptr, i64, i64 } %t225, ptr %a227 + %t228 = load ptr, ptr %a1 + %t229 = load { ptr, i64, i64 }, ptr %a227 + %t230 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t228, { ptr, i64, i64 } %t229) + store { ptr, i64, i64 } %t230, ptr %a231 + %t232 = load ptr, ptr %a1 + %t233 = load %S.ast.Type, ptr %a2 + %t234 = load { ptr, i64, i64 }, ptr %a231 + %t235 = extractvalue { ptr, i64, i64 } %t234, 1 + %t236 = icmp uge i64 3, %t235 + br i1 %t236, label %range2672, label %inrange2673 +range2672: + call void @finch_panic_index(ptr @.str.1591, i64 833, i64 3, i64 %t235) unreachable -inrange2616: - %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.1585, 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 %range2617, label %inrange2618 -range2617: - call void @finch_panic_index(ptr @.str.1588, i64 814, i64 3, i64 %t224) +inrange2673: + %t237 = extractvalue { ptr, i64, i64 } %t234, 0 + %t238 = getelementptr inbounds { ptr, i64, i64 }, ptr %t237, i64 3 + %t239 = load { ptr, i64, i64 }, ptr %t238 + %t240 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t232, { ptr, i64, i64 } { ptr @.str.1590, i64 4, i64 0 }, %S.ast.Type %t233, { ptr, i64, i64 } %t239) + store { ptr, i64, i64 } %t240, ptr %a241 + %t242 = load ptr, ptr %a1 + %t243 = load %S.ast.Type, ptr %a2 + %t244 = load { ptr, i64, i64 }, ptr %a231 + %t245 = extractvalue { ptr, i64, i64 } %t244, 1 + %t246 = icmp uge i64 3, %t245 + br i1 %t246, label %range2674, label %inrange2675 +range2674: + call void @finch_panic_index(ptr @.str.1593, i64 834, i64 3, i64 %t245) unreachable -inrange2618: - %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.1587, 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.1589, 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.1590, i64 10, i64 0 }) - store { ptr, i64, i64 } %t235, ptr %a236 - %t237 = load ptr, ptr %a1 - %t238 = load ptr, ptr %a1 - %t239 = load ptr, ptr %a1 - %t240 = load ptr, ptr %a1 - %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.1593, 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.1594, 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 - 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.1595, 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.1592, i64 3, i64 0 }, { ptr, i64, i64 } %t261) - store { ptr, i64, i64 } { ptr @.str.1591, 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.1596, 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) - %t272 = load { ptr, i64, i64 }, ptr %a233 - %t273 = load { ptr, i64, i64 }, ptr %a236 - call void @finch.gen.condBr(ptr %t237, { ptr, i64, i64 } %t271, { ptr, i64, i64 } %t272, { ptr, i64, i64 } %t273) - %t274 = load ptr, ptr %a1 - %t275 = load { ptr, i64, i64 }, ptr %a233 - call void @finch.gen.label(ptr %t274, { ptr, i64, i64 } %t275) - %t276 = load ptr, ptr %a1 - %t277 = load ptr, ptr %a1 - %t278 = load { ptr, i64, i64 }, ptr %a230 - %t279 = load %S.ast.Type, ptr %a2 - %t280 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t277, { ptr, i64, i64 } %t278, %S.ast.Type %t279, i64 1) - %t281 = load ptr, ptr %a1 - %t282 = load { ptr, i64, i64 }, ptr %a220 - %t283 = load %S.ast.Type, ptr %a2 - %t284 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t281, { ptr, i64, i64 } %t282, %S.ast.Type %t283, i64 1) - %t285 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t286 = load { ptr, i64, i64 }, ptr %t285 - %t287 = extractvalue { ptr, i64, i64 } %t286, 1 - %t288 = icmp uge i64 0, %t287 - br i1 %t288, label %range2619, label %inrange2620 -range2619: - call void @finch_panic_index(ptr @.str.1597, i64 819, i64 0, i64 %t287) - unreachable -inrange2620: - %t289 = extractvalue { ptr, i64, i64 } %t286, 0 - %t290 = getelementptr inbounds %S.ast.Type, ptr %t289, i64 0 - %t291 = load %S.ast.Type, ptr %t290 - call void @finch.gen.copyAt(ptr %t276, { ptr, i64, i64 } %t280, { ptr, i64, i64 } %t284, %S.ast.Type %t291) - %t292 = load ptr, ptr %a1 - %t293 = load ptr, ptr %a1 - %t294 = load { ptr, i64, i64 }, ptr %a230 - %t295 = load %S.ast.Type, ptr %a2 - %t296 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t293, { ptr, i64, i64 } %t294, %S.ast.Type %t295, i64 2) - %t297 = load ptr, ptr %a1 - %t298 = load { ptr, i64, i64 }, ptr %a220 - %t299 = load %S.ast.Type, ptr %a2 - %t300 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t297, { ptr, i64, i64 } %t298, %S.ast.Type %t299, i64 2) - %t301 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t302 = load { ptr, i64, i64 }, ptr %t301 - %t303 = extractvalue { ptr, i64, i64 } %t302, 1 - %t304 = icmp uge i64 1, %t303 - br i1 %t304, label %range2621, label %inrange2622 -range2621: - call void @finch_panic_index(ptr @.str.1598, i64 820, i64 1, i64 %t303) - unreachable -inrange2622: - %t305 = extractvalue { ptr, i64, i64 } %t302, 0 - %t306 = getelementptr inbounds %S.ast.Type, ptr %t305, i64 1 - %t307 = load %S.ast.Type, ptr %t306 - call void @finch.gen.copyAt(ptr %t292, { ptr, i64, i64 } %t296, { ptr, i64, i64 } %t300, %S.ast.Type %t307) +inrange2675: + %t247 = extractvalue { ptr, i64, i64 } %t244, 0 + %t248 = getelementptr inbounds { ptr, i64, i64 }, ptr %t247, i64 3 + %t249 = load { ptr, i64, i64 }, ptr %t248 + %t250 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t242, { ptr, i64, i64 } { ptr @.str.1592, i64 4, i64 0 }, %S.ast.Type %t243, { ptr, i64, i64 } %t249) + store { ptr, i64, i64 } %t250, ptr %a251 + %t252 = load ptr, ptr %a1 + %t253 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t252, { ptr, i64, i64 } { ptr @.str.1594, i64 10, i64 0 }) + store { ptr, i64, i64 } %t253, ptr %a254 + %t255 = load ptr, ptr %a1 + %t256 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t255, { ptr, i64, i64 } { ptr @.str.1595, i64 10, i64 0 }) + store { ptr, i64, i64 } %t256, ptr %a257 + %t258 = load ptr, ptr %a1 + %t259 = load ptr, ptr %a1 + %t260 = load ptr, ptr %a1 + %t261 = load ptr, ptr %a1 + %t262 = load ptr, ptr %a1 + %t263 = load %S.ast.Type, ptr %a2 + %t264 = call { ptr, i64, i64 } @finch.gen.entryTy(ptr %t262, %S.ast.Type %t263) + store { ptr, i64, i64 } { ptr @.str.1598, i64 23, i64 0 }, ptr %a266 + store { ptr, i64, i64 } %t264, ptr %a267 + call void @finch_str_concat(ptr %a265, ptr %a266, ptr %a267) + store { ptr, i64, i64 } %t264, ptr %a268 + call void @finch_str_drop(ptr %a268) + %t269 = load { ptr, i64, i64 }, ptr %a265 + store { ptr, i64, i64 } %t269, ptr %a271 + store { ptr, i64, i64 } { ptr @.str.1599, i64 6, i64 0 }, ptr %a272 + call void @finch_str_concat(ptr %a270, ptr %a271, ptr %a272) + store { ptr, i64, i64 } %t269, ptr %a273 + call void @finch_str_drop(ptr %a273) + %t274 = load { ptr, i64, i64 }, ptr %a270 + %t275 = load { ptr, i64, i64 }, ptr %a241 + store { ptr, i64, i64 } %t274, ptr %a277 + store { ptr, i64, i64 } %t275, ptr %a278 + call void @finch_str_concat(ptr %a276, ptr %a277, ptr %a278) + store { ptr, i64, i64 } %t274, ptr %a279 + call void @finch_str_drop(ptr %a279) + %t280 = load { ptr, i64, i64 }, ptr %a276 + store { ptr, i64, i64 } %t280, ptr %a282 + store { ptr, i64, i64 } { ptr @.str.1600, i64 14, i64 0 }, ptr %a283 + call void @finch_str_concat(ptr %a281, ptr %a282, ptr %a283) + store { ptr, i64, i64 } %t280, ptr %a284 + call void @finch_str_drop(ptr %a284) + %t285 = load { ptr, i64, i64 }, ptr %a281 + %t286 = call { ptr, i64, i64 } @finch.gen.op(ptr %t261, { ptr, i64, i64 } %t285) + store { ptr, i64, i64 } %t285, ptr %a287 + call void @finch_str_drop(ptr %a287) + %t288 = call { ptr, i64, i64 } @finch.gen.load(ptr %t260, { ptr, i64, i64 } { ptr @.str.1597, i64 3, i64 0 }, { ptr, i64, i64 } %t286) + store { ptr, i64, i64 } %t286, ptr %a289 + call void @finch_str_drop(ptr %a289) + store { ptr, i64, i64 } { ptr @.str.1596, i64 12, i64 0 }, ptr %a291 + store { ptr, i64, i64 } %t288, ptr %a292 + call void @finch_str_concat(ptr %a290, ptr %a291, ptr %a292) + store { ptr, i64, i64 } %t288, ptr %a293 + call void @finch_str_drop(ptr %a293) + %t294 = load { ptr, i64, i64 }, ptr %a290 + store { ptr, i64, i64 } %t294, ptr %a296 + store { ptr, i64, i64 } { ptr @.str.1601, i64 3, i64 0 }, ptr %a297 + call void @finch_str_concat(ptr %a295, ptr %a296, ptr %a297) + store { ptr, i64, i64 } %t294, ptr %a298 + call void @finch_str_drop(ptr %a298) + %t299 = load { ptr, i64, i64 }, ptr %a295 + %t300 = call { ptr, i64, i64 } @finch.gen.op(ptr %t259, { ptr, i64, i64 } %t299) + store { ptr, i64, i64 } %t299, ptr %a301 + call void @finch_str_drop(ptr %a301) + %t302 = load { ptr, i64, i64 }, ptr %a254 + %t303 = load { ptr, i64, i64 }, ptr %a257 + call void @finch.gen.condBr(ptr %t258, { ptr, i64, i64 } %t300, { ptr, i64, i64 } %t302, { ptr, i64, i64 } %t303) + store { ptr, i64, i64 } %t300, ptr %a304 + call void @finch_str_drop(ptr %a304) + %t305 = load ptr, ptr %a1 + %t306 = load { ptr, i64, i64 }, ptr %a254 + call void @finch.gen.label(ptr %t305, { ptr, i64, i64 } %t306) + %t307 = load ptr, ptr %a1 %t308 = load ptr, ptr %a1 - %t309 = load { ptr, i64, i64 }, ptr %a236 - call void @finch.gen.br(ptr %t308, { ptr, i64, i64 } %t309) - %t310 = load ptr, ptr %a1 - %t311 = load { ptr, i64, i64 }, ptr %a236 - call void @finch.gen.label(ptr %t310, { ptr, i64, i64 } %t311) + %t309 = load { ptr, i64, i64 }, ptr %a251 + %t310 = load %S.ast.Type, ptr %a2 + %t311 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t308, { ptr, i64, i64 } %t309, %S.ast.Type %t310, i64 1) %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 %endif2614 -endif2614: - br label %endif2603 -else2602: - %t314 = load ptr, ptr %a1 - %t315 = icmp eq ptr %t314, null - br i1 %t315, label %panic2623, label %ok2624 -panic2623: - call void @finch_panic(ptr @.str.1599, i64 826, ptr @.str.1600) + %t313 = load { ptr, i64, i64 }, ptr %a241 + %t314 = load %S.ast.Type, ptr %a2 + %t315 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t312, { ptr, i64, i64 } %t313, %S.ast.Type %t314, i64 1) + %t316 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t317 = load { ptr, i64, i64 }, ptr %t316 + %t318 = extractvalue { ptr, i64, i64 } %t317, 1 + %t319 = icmp uge i64 0, %t318 + br i1 %t319, label %range2676, label %inrange2677 +range2676: + call void @finch_panic_index(ptr @.str.1602, i64 839, i64 0, i64 %t318) unreachable -ok2624: - %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 - %t319 = load { ptr, i64, i64 }, ptr %t318 - %t320 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t321 = load { ptr, i64, i64 }, ptr %t320 - %t322 = call i64 @finch.gen.findStruct(ptr %t317, { ptr, i64, i64 } %t319, { ptr, i64, i64 } %t321) - %t323 = load { ptr, i64, i64 }, ptr %t316 - %t324 = extractvalue { ptr, i64, i64 } %t323, 1 - %t325 = icmp uge i64 %t322, %t324 - br i1 %t325, label %range2625, label %inrange2626 -range2625: - call void @finch_panic_index(ptr @.str.1601, i64 826, i64 %t322, i64 %t324) +inrange2677: + %t320 = extractvalue { ptr, i64, i64 } %t317, 0 + %t321 = getelementptr inbounds %S.ast.Type, ptr %t320, i64 0 + %t322 = load %S.ast.Type, ptr %t321 + call void @finch.gen.copyAt(ptr %t307, { ptr, i64, i64 } %t311, { ptr, i64, i64 } %t315, %S.ast.Type %t322) + store { ptr, i64, i64 } %t311, ptr %a323 + call void @finch_str_drop(ptr %a323) + store { ptr, i64, i64 } %t315, ptr %a324 + call void @finch_str_drop(ptr %a324) + %t325 = load ptr, ptr %a1 + %t326 = load ptr, ptr %a1 + %t327 = load { ptr, i64, i64 }, ptr %a251 + %t328 = load %S.ast.Type, ptr %a2 + %t329 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t326, { ptr, i64, i64 } %t327, %S.ast.Type %t328, i64 2) + %t330 = load ptr, ptr %a1 + %t331 = load { ptr, i64, i64 }, ptr %a241 + %t332 = load %S.ast.Type, ptr %a2 + %t333 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t330, { ptr, i64, i64 } %t331, %S.ast.Type %t332, i64 2) + %t334 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t335 = load { ptr, i64, i64 }, ptr %t334 + %t336 = extractvalue { ptr, i64, i64 } %t335, 1 + %t337 = icmp uge i64 1, %t336 + br i1 %t337, label %range2678, label %inrange2679 +range2678: + call void @finch_panic_index(ptr @.str.1603, i64 840, i64 1, i64 %t336) unreachable -inrange2626: - %t326 = extractvalue { ptr, i64, i64 } %t323, 0 - %t327 = getelementptr inbounds %S.gen.StructDef, ptr %t326, i64 %t322 - %t328 = load %S.gen.StructDef, ptr %t327 - store %S.gen.StructDef %t328, ptr %a329 - call void @finch.copy.S_gen_StructDef(ptr %a330, ptr %a329) - %t331 = load %S.gen.StructDef, ptr %a330 - store %S.gen.StructDef %t331, ptr %a332 - %t333 = load ptr, ptr %a1 - %t334 = load %S.ast.Type, ptr %a2 - %t335 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t333, %S.ast.Type %t334) - store { ptr, i64, i64 } %t335, ptr %a336 - %t337 = load ptr, ptr %a1 - %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.1602, i64 4, i64 0 }) - call void @finch.gen.store(ptr %t337, { ptr, i64, i64 } %t338, { ptr, i64, i64 } %t341, { ptr, i64, i64 } { ptr @.str.1603, 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.cond2627 -for.cond2627: - %t346 = load i64, ptr %a345 - %t347 = icmp slt i64 %t346, %t344 - br i1 %t347, label %for.body2628, label %for.end2630 -for.body2628: - %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 %range2631, label %inrange2632 -range2631: - call void @finch_panic_index(ptr @.str.1604, i64 830, i64 %t350, i64 %t352) +inrange2679: + %t338 = extractvalue { ptr, i64, i64 } %t335, 0 + %t339 = getelementptr inbounds %S.ast.Type, ptr %t338, i64 1 + %t340 = load %S.ast.Type, ptr %t339 + call void @finch.gen.copyAt(ptr %t325, { ptr, i64, i64 } %t329, { ptr, i64, i64 } %t333, %S.ast.Type %t340) + store { ptr, i64, i64 } %t329, ptr %a341 + call void @finch_str_drop(ptr %a341) + store { ptr, i64, i64 } %t333, ptr %a342 + call void @finch_str_drop(ptr %a342) + %t343 = load ptr, ptr %a1 + %t344 = load { ptr, i64, i64 }, ptr %a257 + call void @finch.gen.br(ptr %t343, { ptr, i64, i64 } %t344) + %t345 = load ptr, ptr %a1 + %t346 = load { ptr, i64, i64 }, ptr %a257 + call void @finch.gen.label(ptr %t345, { ptr, i64, i64 } %t346) + %t347 = load ptr, ptr %a1 + %t348 = load { ptr, i64, i64 }, ptr %a231 + call void @finch.gen.loopEnd(ptr %t347, { ptr, i64, i64 } %t348) + call void @finch_str_drop(ptr %a257) + call void @finch_str_drop(ptr %a254) + call void @finch_str_drop(ptr %a251) + call void @finch_str_drop(ptr %a241) + call void @finch.drop.arr_str(ptr %a231) + call void @finch_str_drop(ptr %a227) + br label %endif2671 +endif2671: + br label %endif2660 +else2659: + %t349 = load ptr, ptr %a1 + %t350 = icmp eq ptr %t349, null + br i1 %t350, label %panic2680, label %ok2681 +panic2680: + call void @finch_panic(ptr @.str.1604, i64 846, ptr @.str.1605) unreachable -inrange2632: - %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 %then2633, label %endif2635 -then2633: - %t358 = load ptr, ptr %a1 - %t359 = load { ptr, i64, i64 }, ptr %a336 - store { ptr, i64, i64 } { ptr @.str.1605, 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.1606, 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 - %t369 = load i64, ptr %a345 - %t370 = load { ptr, i64, i64 }, ptr %t368 - %t371 = extractvalue { ptr, i64, i64 } %t370, 1 - %t372 = icmp uge i64 %t369, %t371 - br i1 %t372, label %range2636, label %inrange2637 -range2636: - call void @finch_panic_index(ptr @.str.1607, i64 831, i64 %t369, i64 %t371) +ok2681: + %t351 = getelementptr inbounds %S.gen.Gen, ptr %t349, i32 0, i32 16 + %t352 = load ptr, ptr %a1 + %t353 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 + %t354 = load { ptr, i64, i64 }, ptr %t353 + %t355 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 + %t356 = load { ptr, i64, i64 }, ptr %t355 + %t357 = call i64 @finch.gen.findStruct(ptr %t352, { ptr, i64, i64 } %t354, { ptr, i64, i64 } %t356) + %t358 = load { ptr, i64, i64 }, ptr %t351 + %t359 = extractvalue { ptr, i64, i64 } %t358, 1 + %t360 = icmp uge i64 %t357, %t359 + br i1 %t360, label %range2682, label %inrange2683 +range2682: + call void @finch_panic_index(ptr @.str.1606, i64 846, i64 %t357, i64 %t359) unreachable -inrange2637: - %t373 = extractvalue { ptr, i64, i64 } %t370, 0 - %t374 = getelementptr inbounds i64, ptr %t373, i64 %t369 - %t375 = load i64, ptr %t374 - call void @finch_str_from_int(ptr %a376, i64 %t375) - %t377 = load { ptr, i64, i64 }, ptr %a376 - store { ptr, i64, i64 } %t367, ptr %a379 - store { ptr, i64, i64 } %t377, ptr %a380 - call void @finch_str_concat(ptr %a378, ptr %a379, ptr %a380) - %t381 = load { ptr, i64, i64 }, ptr %a378 - %t382 = call { ptr, i64, i64 } @finch.gen.op(ptr %t358, { ptr, i64, i64 } %t381) - store { ptr, i64, i64 } %t382, ptr %a383 +inrange2683: + %t361 = extractvalue { ptr, i64, i64 } %t358, 0 + %t362 = getelementptr inbounds %S.gen.StructDef, ptr %t361, i64 %t357 + %t363 = load %S.gen.StructDef, ptr %t362 + store %S.gen.StructDef %t363, ptr %a364 + call void @finch.copy.S_gen_StructDef(ptr %a365, ptr %a364) + %t366 = load %S.gen.StructDef, ptr %a365 + store %S.gen.StructDef %t366, ptr %a367 + %t368 = load ptr, ptr %a1 + %t369 = load %S.ast.Type, ptr %a2 + %t370 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t368, %S.ast.Type %t369) + store { ptr, i64, i64 } %t370, ptr %a371 + %t372 = load ptr, ptr %a1 + %t373 = load { ptr, i64, i64 }, ptr %a371 + %t374 = load ptr, ptr %a1 + %t375 = load { ptr, i64, i64 }, ptr %a371 + %t376 = call { ptr, i64, i64 } @finch.gen.load(ptr %t374, { ptr, i64, i64 } %t375, { ptr, i64, i64 } { ptr @.str.1607, i64 4, i64 0 }) + call void @finch.gen.store(ptr %t372, { ptr, i64, i64 } %t373, { ptr, i64, i64 } %t376, { ptr, i64, i64 } { ptr @.str.1608, i64 4, i64 0 }) + store { ptr, i64, i64 } %t376, ptr %a377 + call void @finch_str_drop(ptr %a377) + %t378 = getelementptr inbounds %S.gen.StructDef, ptr %a367, i32 0, i32 12 + %t379 = getelementptr inbounds { ptr, i64, i64 }, ptr %t378, i32 0, i32 1 + %t380 = load i64, ptr %t379 + store i64 0, ptr %a381 + br label %for.cond2684 +for.cond2684: + %t382 = load i64, ptr %a381 + %t383 = icmp slt i64 %t382, %t380 + br i1 %t383, label %for.body2685, label %for.end2687 +for.body2685: %t384 = load ptr, ptr %a1 - %t385 = load { ptr, i64, i64 }, ptr %a336 - store { ptr, i64, i64 } { ptr @.str.1608, 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.1609, 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 - %t395 = load i64, ptr %a345 - %t396 = load { ptr, i64, i64 }, ptr %t394 - %t397 = extractvalue { ptr, i64, i64 } %t396, 1 - %t398 = icmp uge i64 %t395, %t397 - br i1 %t398, label %range2638, label %inrange2639 -range2638: - call void @finch_panic_index(ptr @.str.1610, i64 832, i64 %t395, i64 %t397) + %t385 = getelementptr inbounds %S.gen.StructDef, ptr %a367, i32 0, i32 12 + %t386 = load i64, ptr %a381 + %t387 = load { ptr, i64, i64 }, ptr %t385 + %t388 = extractvalue { ptr, i64, i64 } %t387, 1 + %t389 = icmp uge i64 %t386, %t388 + br i1 %t389, label %range2688, label %inrange2689 +range2688: + call void @finch_panic_index(ptr @.str.1609, i64 850, i64 %t386, i64 %t388) unreachable -inrange2639: - %t399 = extractvalue { ptr, i64, i64 } %t396, 0 - %t400 = getelementptr inbounds i64, ptr %t399, i64 %t395 - %t401 = load i64, ptr %t400 - call void @finch_str_from_int(ptr %a402, i64 %t401) - %t403 = load { ptr, i64, i64 }, ptr %a402 - store { ptr, i64, i64 } %t393, 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 - %t408 = call { ptr, i64, i64 } @finch.gen.op(ptr %t384, { ptr, i64, i64 } %t407) - store { ptr, i64, i64 } %t408, ptr %a409 - %t410 = load ptr, ptr %a1 - %t411 = load { ptr, i64, i64 }, ptr %a383 - %t412 = load { ptr, i64, i64 }, ptr %a409 - %t413 = getelementptr inbounds %S.gen.StructDef, ptr %a332, i32 0, i32 12 - %t414 = load i64, ptr %a345 - %t415 = load { ptr, i64, i64 }, ptr %t413 - %t416 = extractvalue { ptr, i64, i64 } %t415, 1 - %t417 = icmp uge i64 %t414, %t416 - br i1 %t417, label %range2640, label %inrange2641 -range2640: - call void @finch_panic_index(ptr @.str.1611, i64 833, i64 %t414, i64 %t416) +inrange2689: + %t390 = extractvalue { ptr, i64, i64 } %t387, 0 + %t391 = getelementptr inbounds %S.ast.Type, ptr %t390, i64 %t386 + %t392 = load %S.ast.Type, ptr %t391 + %t393 = call i1 @finch.gen.owning(ptr %t384, %S.ast.Type %t392) + br i1 %t393, label %then2690, label %endif2692 +then2690: + %t394 = load ptr, ptr %a1 + %t395 = load { ptr, i64, i64 }, ptr %a371 + store { ptr, i64, i64 } { ptr @.str.1610, i64 23, i64 0 }, ptr %a397 + store { ptr, i64, i64 } %t395, ptr %a398 + call void @finch_str_concat(ptr %a396, ptr %a397, ptr %a398) + %t399 = load { ptr, i64, i64 }, ptr %a396 + store { ptr, i64, i64 } %t399, ptr %a401 + store { ptr, i64, i64 } { ptr @.str.1611, i64 23, i64 0 }, ptr %a402 + call void @finch_str_concat(ptr %a400, ptr %a401, ptr %a402) + store { ptr, i64, i64 } %t399, ptr %a403 + call void @finch_str_drop(ptr %a403) + %t404 = load { ptr, i64, i64 }, ptr %a400 + %t405 = getelementptr inbounds %S.gen.StructDef, ptr %a367, i32 0, i32 3 + %t406 = load i64, ptr %a381 + %t407 = load { ptr, i64, i64 }, ptr %t405 + %t408 = extractvalue { ptr, i64, i64 } %t407, 1 + %t409 = icmp uge i64 %t406, %t408 + br i1 %t409, label %range2693, label %inrange2694 +range2693: + call void @finch_panic_index(ptr @.str.1612, i64 851, i64 %t406, i64 %t408) unreachable -inrange2641: - %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 %endif2635 -endif2635: - br label %for.step2629 -for.step2629: - %t421 = load i64, ptr %a345 - %t422 = add i64 %t421, 1 - store i64 %t422, ptr %a345 - br label %for.cond2627 -for.end2630: - br label %endif2603 -endif2603: - br label %endif2591 -endif2591: - %t423 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t423, { ptr, i64, i64 } { ptr @.str.1612, i64 8, i64 0 }) +inrange2694: + %t410 = extractvalue { ptr, i64, i64 } %t407, 0 + %t411 = getelementptr inbounds i64, ptr %t410, i64 %t406 + %t412 = load i64, ptr %t411 + call void @finch_str_from_int(ptr %a413, i64 %t412) + %t414 = load { ptr, i64, i64 }, ptr %a413 + store { ptr, i64, i64 } %t404, ptr %a416 + store { ptr, i64, i64 } %t414, ptr %a417 + call void @finch_str_concat(ptr %a415, ptr %a416, ptr %a417) + store { ptr, i64, i64 } %t404, ptr %a418 + call void @finch_str_drop(ptr %a418) + store { ptr, i64, i64 } %t414, ptr %a419 + call void @finch_str_drop(ptr %a419) + %t420 = load { ptr, i64, i64 }, ptr %a415 + %t421 = call { ptr, i64, i64 } @finch.gen.op(ptr %t394, { ptr, i64, i64 } %t420) + store { ptr, i64, i64 } %t420, ptr %a422 + call void @finch_str_drop(ptr %a422) + store { ptr, i64, i64 } %t421, ptr %a423 %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.1613, 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.1614, 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) - %t435 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t435, ptr %a436 - call void @finch_str_copy(ptr %a437, ptr %a436) - %t438 = load { ptr, i64, i64 }, ptr %a437 - ret { ptr, i64, i64 } %t438 + %t425 = load { ptr, i64, i64 }, ptr %a371 + store { ptr, i64, i64 } { ptr @.str.1613, i64 23, i64 0 }, ptr %a427 + store { ptr, i64, i64 } %t425, ptr %a428 + call void @finch_str_concat(ptr %a426, ptr %a427, ptr %a428) + %t429 = load { ptr, i64, i64 }, ptr %a426 + store { ptr, i64, i64 } %t429, ptr %a431 + store { ptr, i64, i64 } { ptr @.str.1614, i64 23, i64 0 }, ptr %a432 + call void @finch_str_concat(ptr %a430, ptr %a431, ptr %a432) + store { ptr, i64, i64 } %t429, ptr %a433 + call void @finch_str_drop(ptr %a433) + %t434 = load { ptr, i64, i64 }, ptr %a430 + %t435 = getelementptr inbounds %S.gen.StructDef, ptr %a367, i32 0, i32 3 + %t436 = load i64, ptr %a381 + %t437 = load { ptr, i64, i64 }, ptr %t435 + %t438 = extractvalue { ptr, i64, i64 } %t437, 1 + %t439 = icmp uge i64 %t436, %t438 + br i1 %t439, label %range2695, label %inrange2696 +range2695: + call void @finch_panic_index(ptr @.str.1615, i64 852, i64 %t436, i64 %t438) + unreachable +inrange2696: + %t440 = extractvalue { ptr, i64, i64 } %t437, 0 + %t441 = getelementptr inbounds i64, ptr %t440, i64 %t436 + %t442 = load i64, ptr %t441 + call void @finch_str_from_int(ptr %a443, i64 %t442) + %t444 = load { ptr, i64, i64 }, ptr %a443 + store { ptr, i64, i64 } %t434, ptr %a446 + store { ptr, i64, i64 } %t444, ptr %a447 + call void @finch_str_concat(ptr %a445, ptr %a446, ptr %a447) + store { ptr, i64, i64 } %t434, ptr %a448 + call void @finch_str_drop(ptr %a448) + store { ptr, i64, i64 } %t444, ptr %a449 + call void @finch_str_drop(ptr %a449) + %t450 = load { ptr, i64, i64 }, ptr %a445 + %t451 = call { ptr, i64, i64 } @finch.gen.op(ptr %t424, { ptr, i64, i64 } %t450) + store { ptr, i64, i64 } %t450, ptr %a452 + call void @finch_str_drop(ptr %a452) + store { ptr, i64, i64 } %t451, ptr %a453 + %t454 = load ptr, ptr %a1 + %t455 = load { ptr, i64, i64 }, ptr %a423 + %t456 = load { ptr, i64, i64 }, ptr %a453 + %t457 = getelementptr inbounds %S.gen.StructDef, ptr %a367, i32 0, i32 12 + %t458 = load i64, ptr %a381 + %t459 = load { ptr, i64, i64 }, ptr %t457 + %t460 = extractvalue { ptr, i64, i64 } %t459, 1 + %t461 = icmp uge i64 %t458, %t460 + br i1 %t461, label %range2697, label %inrange2698 +range2697: + call void @finch_panic_index(ptr @.str.1616, i64 853, i64 %t458, i64 %t460) + unreachable +inrange2698: + %t462 = extractvalue { ptr, i64, i64 } %t459, 0 + %t463 = getelementptr inbounds %S.ast.Type, ptr %t462, i64 %t458 + %t464 = load %S.ast.Type, ptr %t463 + call void @finch.gen.copyAt(ptr %t454, { ptr, i64, i64 } %t455, { ptr, i64, i64 } %t456, %S.ast.Type %t464) + call void @finch_str_drop(ptr %a453) + call void @finch_str_drop(ptr %a423) + br label %endif2692 +endif2692: + br label %for.step2686 +for.step2686: + %t465 = load i64, ptr %a381 + %t466 = add i64 %t465, 1 + store i64 %t466, ptr %a381 + br label %for.cond2684 +for.end2687: + call void @finch_str_drop(ptr %a371) + call void @finch.drop.S_gen_StructDef(ptr %a367) + br label %endif2660 +endif2660: + br label %endif2648 +endif2648: + %t467 = load ptr, ptr %a1 + call void @finch.gen.emit(ptr %t467, { ptr, i64, i64 } { ptr @.str.1617, i64 8, i64 0 }) + %t468 = load ptr, ptr %a1 + %t469 = load %S.gen.Saved, ptr %a32 + %t470 = load { ptr, i64, i64 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.1618, i64 21, i64 0 }, ptr %a472 + store { ptr, i64, i64 } %t470, ptr %a473 + call void @finch_str_concat(ptr %a471, ptr %a472, ptr %a473) + %t474 = load { ptr, i64, i64 }, ptr %a471 + store { ptr, i64, i64 } %t474, ptr %a476 + store { ptr, i64, i64 } { ptr @.str.1619, i64 20, i64 0 }, ptr %a477 + call void @finch_str_concat(ptr %a475, ptr %a476, ptr %a477) + store { ptr, i64, i64 } %t474, ptr %a478 + call void @finch_str_drop(ptr %a478) + %t479 = load { ptr, i64, i64 }, ptr %a475 + call void @finch.gen.endHelper(ptr %t468, %S.gen.Saved %t469, { ptr, i64, i64 } %t479) + store { ptr, i64, i64 } %t479, ptr %a480 + call void @finch_str_drop(ptr %a480) + %t481 = load { ptr, i64, i64 }, ptr %a10 + call void @finch.drop.S_gen_Saved(ptr %a32) + ret { ptr, i64, i64 } %t481 +} + +define internal void @finch.drop.S_gen_Val(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.gen.Val, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.gen.Val, ptr %a, i32 0, i32 1 + call void @finch.drop.S_ast_Type(ptr %t2) + ret void } define internal { ptr, i64, i64 } @finch.gen.copyValue(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2) { @@ -26303,8 +29602,11 @@ entry: %a15 = alloca { ptr, i64, i64 }, align 16 %a19 = alloca %S.ast.Type, align 16 %a20 = alloca %S.ast.Type, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 + %a24 = alloca %S.gen.Val, align 16 + %a25 = alloca { ptr, i64, i64 }, align 16 + %a31 = alloca { ptr, i64, i64 }, align 16 + %a32 = alloca { ptr, i64, i64 }, align 16 + %a43 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store { ptr, i64, i64 } %p1, ptr %a2 store %S.ast.Type %p2, ptr %a3 @@ -26312,14 +29614,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 %then2642, label %endif2644 -then2642: + br i1 %t7, label %then2699, label %endif2701 +then2699: %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 -endif2644: +endif2701: %t12 = load ptr, ptr %a1 %t13 = load { ptr, i64, i64 }, ptr %a2 store { ptr, i64, i64 } %t13, ptr %a14 @@ -26332,25 +29634,1149 @@ endif2644: %t21 = load %S.ast.Type, ptr %a20 %t22 = insertvalue %S.gen.Val %t17, %S.ast.Type %t21, 1 %t23 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t12, %S.gen.Val %t22) - store { ptr, i64, i64 } %t23, ptr %a24 - %t25 = load ptr, ptr %a1 + store %S.gen.Val %t22, ptr %a24 + call void @finch.drop.S_gen_Val(ptr %a24) + store { ptr, i64, i64 } %t23, ptr %a25 %t26 = load ptr, ptr %a1 - %t27 = load %S.ast.Type, ptr %a3 - %t28 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t26, %S.ast.Type %t27) - %t29 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t25, { ptr, i64, i64 } %t28) - store { ptr, i64, i64 } %t29, ptr %a30 - %t31 = load ptr, ptr %a1 - %t32 = load { ptr, i64, i64 }, ptr %a30 - %t33 = load { ptr, i64, i64 }, ptr %a24 - %t34 = load %S.ast.Type, ptr %a3 - call void @finch.gen.copyAt(ptr %t31, { ptr, i64, i64 } %t32, { ptr, i64, i64 } %t33, %S.ast.Type %t34) + %t27 = load ptr, ptr %a1 + %t28 = load %S.ast.Type, ptr %a3 + %t29 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t27, %S.ast.Type %t28) + %t30 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t26, { ptr, i64, i64 } %t29) + store { ptr, i64, i64 } %t29, ptr %a31 + call void @finch_str_drop(ptr %a31) + store { ptr, i64, i64 } %t30, ptr %a32 + %t33 = load ptr, ptr %a1 + %t34 = load { ptr, i64, i64 }, ptr %a32 + %t35 = load { ptr, i64, i64 }, ptr %a25 + %t36 = load %S.ast.Type, ptr %a3 + call void @finch.gen.copyAt(ptr %t33, { ptr, i64, i64 } %t34, { ptr, i64, i64 } %t35, %S.ast.Type %t36) + %t37 = load ptr, ptr %a1 + %t38 = load ptr, ptr %a1 + %t39 = load %S.ast.Type, ptr %a3 + %t40 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t38, %S.ast.Type %t39) + %t41 = load { ptr, i64, i64 }, ptr %a32 + %t42 = call { ptr, i64, i64 } @finch.gen.load(ptr %t37, { ptr, i64, i64 } %t40, { ptr, i64, i64 } %t41) + store { ptr, i64, i64 } %t40, ptr %a43 + call void @finch_str_drop(ptr %a43) + call void @finch_str_drop(ptr %a32) + call void @finch_str_drop(ptr %a25) + ret { ptr, i64, i64 } %t42 +} + +define internal void @finch.gen.dropAt(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca %S.ast.Type, align 16 + %a10 = alloca { ptr, i64, i64 }, align 16 + %a11 = 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 + %a20 = 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 + %a25 = alloca { ptr, i64, i64 }, align 16 + %a30 = 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 + %a37 = alloca { ptr, i64, i64 }, align 16 + %a38 = 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 + %a44 = alloca { ptr, i64, i64 }, align 16 + %a46 = 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 + store ptr %p0, ptr %a1 + store { ptr, i64, i64 } %p1, ptr %a2 + store %S.ast.Type %p2, ptr %a3 + %t4 = load ptr, ptr %a1 + %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 %then2702, label %endif2704 +then2702: + ret void +endif2704: + %t8 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 + %t9 = load { ptr, i64, i64 }, ptr %t8 + store { ptr, i64, i64 } %t9, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.1620, 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 %then2705, label %else2706 +then2705: + %t14 = load ptr, ptr %a1 + %t15 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } { ptr @.str.1621, i64 30, 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.1622, i64 1, i64 0 }, ptr %a22 + call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22) + store { ptr, i64, i64 } %t19, ptr %a23 + call void @finch_str_drop(ptr %a23) + %t24 = load { ptr, i64, i64 }, ptr %a20 + call void @finch.gen.emit(ptr %t14, { ptr, i64, i64 } %t24) + store { ptr, i64, i64 } %t24, ptr %a25 + call void @finch_str_drop(ptr %a25) + br label %endif2707 +else2706: + %t26 = load ptr, ptr %a1 + %t27 = load ptr, ptr %a1 + %t28 = load %S.ast.Type, ptr %a3 + %t29 = call { ptr, i64, i64 } @finch.gen.dropFn(ptr %t27, %S.ast.Type %t28) + store { ptr, i64, i64 } { ptr @.str.1623, i64 10, i64 0 }, ptr %a31 + store { ptr, i64, i64 } %t29, ptr %a32 + call void @finch_str_concat(ptr %a30, ptr %a31, ptr %a32) + store { ptr, i64, i64 } %t29, ptr %a33 + call void @finch_str_drop(ptr %a33) + %t34 = load { ptr, i64, i64 }, ptr %a30 + store { ptr, i64, i64 } %t34, ptr %a36 + store { ptr, i64, i64 } { ptr @.str.1624, i64 5, i64 0 }, ptr %a37 + call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) + store { ptr, i64, i64 } %t34, ptr %a38 + call void @finch_str_drop(ptr %a38) + %t39 = load { ptr, i64, i64 }, ptr %a35 + %t40 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t39, ptr %a42 + store { ptr, i64, i64 } %t40, ptr %a43 + call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) + store { ptr, i64, i64 } %t39, ptr %a44 + call void @finch_str_drop(ptr %a44) + %t45 = load { ptr, i64, i64 }, ptr %a41 + store { ptr, i64, i64 } %t45, ptr %a47 + store { ptr, i64, i64 } { ptr @.str.1625, i64 1, i64 0 }, ptr %a48 + call void @finch_str_concat(ptr %a46, ptr %a47, ptr %a48) + store { ptr, i64, i64 } %t45, ptr %a49 + call void @finch_str_drop(ptr %a49) + %t50 = load { ptr, i64, i64 }, ptr %a46 + call void @finch.gen.emit(ptr %t26, { ptr, i64, i64 } %t50) + store { ptr, i64, i64 } %t50, ptr %a51 + call void @finch_str_drop(ptr %a51) + br label %endif2707 +endif2707: + ret void +} + +define internal void @finch.gen.dropValue(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca %S.ast.Type, align 16 + %a10 = alloca { ptr, i64, i64 }, align 16 + %a11 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca %S.ast.Type, align 16 + %a16 = alloca %S.ast.Type, align 16 + %a20 = alloca %S.gen.Val, align 16 + %a22 = alloca { ptr, i64, i64 }, align 16 + store ptr %p0, ptr %a1 + store { ptr, i64, i64 } %p1, ptr %a2 + store %S.ast.Type %p2, ptr %a3 + %t4 = load ptr, ptr %a1 + %t5 = load %S.ast.Type, ptr %a3 + %t6 = call i1 @finch.gen.owning(ptr %t4, %S.ast.Type %t5) + br i1 %t6, label %then2708, label %endif2710 +then2708: + %t7 = load ptr, ptr %a1 + %t8 = load ptr, ptr %a1 + %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.gen.Val zeroinitializer, { ptr, i64, i64 } %t12, 0 + %t14 = load %S.ast.Type, ptr %a3 + store %S.ast.Type %t14, ptr %a15 + call void @finch.copy.S_ast_Type(ptr %a16, ptr %a15) + %t17 = load %S.ast.Type, ptr %a16 + %t18 = insertvalue %S.gen.Val %t13, %S.ast.Type %t17, 1 + %t19 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t8, %S.gen.Val %t18) + store %S.gen.Val %t18, ptr %a20 + call void @finch.drop.S_gen_Val(ptr %a20) + %t21 = load %S.ast.Type, ptr %a3 + call void @finch.gen.dropAt(ptr %t7, { ptr, i64, i64 } %t19, %S.ast.Type %t21) + store { ptr, i64, i64 } %t19, ptr %a22 + call void @finch_str_drop(ptr %a22) + br label %endif2710 +endif2710: + ret void +} + +define internal void @finch.gen.release(ptr %p0, %S.gen.Val %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.gen.Val, align 16 + store ptr %p0, ptr %a1 + store %S.gen.Val %p1, ptr %a2 + %t3 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 2 + %t4 = load i1, ptr %t3 + br label %logic.from2711 +logic.from2711: + br i1 %t4, label %logic.rhs2712, label %logic.end2713 +logic.rhs2712: + %t5 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 + %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1 + %t7 = load i64, ptr %t6 + %t8 = icmp sgt i64 %t7, 0 + br label %logic.rend2714 +logic.rend2714: + br label %logic.end2713 +logic.end2713: + %t9 = phi i1 [ false, %logic.from2711 ], [ %t8, %logic.rend2714 ] + br label %logic.from2715 +logic.from2715: + br i1 %t9, label %logic.rhs2716, label %logic.end2717 +logic.rhs2716: + %t10 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 + %t11 = load { ptr, i64, i64 }, ptr %t10 + %t12 = call i1 @finch.gen.isConstant({ ptr, i64, i64 } %t11) + %t13 = xor i1 %t12, true + br label %logic.rend2718 +logic.rend2718: + br label %logic.end2717 +logic.end2717: + %t14 = phi i1 [ false, %logic.from2715 ], [ %t13, %logic.rend2718 ] + br label %logic.from2719 +logic.from2719: + br i1 %t14, label %logic.rhs2720, label %logic.end2721 +logic.rhs2720: + %t15 = load ptr, ptr %a1 + %t16 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 + %t17 = load %S.ast.Type, ptr %t16 + %t18 = call i1 @finch.gen.owning(ptr %t15, %S.ast.Type %t17) + br label %logic.rend2722 +logic.rend2722: + br label %logic.end2721 +logic.end2721: + %t19 = phi i1 [ false, %logic.from2719 ], [ %t18, %logic.rend2722 ] + br i1 %t19, label %then2723, label %endif2725 +then2723: + %t20 = load ptr, ptr %a1 + %t21 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 + %t22 = load { ptr, i64, i64 }, ptr %t21 + %t23 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 + %t24 = load %S.ast.Type, ptr %t23 + call void @finch.gen.dropValue(ptr %t20, { ptr, i64, i64 } %t22, %S.ast.Type %t24) + br label %endif2725 +endif2725: + ret void +} + +define internal i1 @finch.gen.isConstant({ 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 + 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.1627, i64 1, i64 0 }, ptr %a5 + %t6 = call i32 @finch_str_starts(ptr %a3, ptr %a5) + %t7 = icmp ne i32 %t6, 0 + %t8 = xor i1 %t7, true + ret i1 %t8 +} + +define internal { ptr, i64, i64 } @finch.gen.dropFn(ptr %p0, %S.ast.Type %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Type, 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 + %a10 = alloca { ptr, i64, i64 }, align 16 + %a23 = alloca { ptr, i64, i64 }, align 16 + %a24 = alloca { ptr, i64, i64 }, align 16 + %a32 = alloca %S.gen.Saved, align 16 + %a35 = alloca { ptr, i64, i64 }, align 16 + %a36 = alloca { ptr, i64, i64 }, align 16 + %a46 = alloca %S.ast.Type, align 16 + %a47 = alloca %S.ast.Type, align 16 + %a49 = alloca %S.ast.Type, align 16 + %a55 = alloca { ptr, i64, i64 }, align 16 + %a60 = alloca { ptr, i64, i64 }, align 16 + %a61 = alloca { ptr, i64, i64 }, align 16 + %a65 = 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 + %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 + %a78 = 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 + %a86 = 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 + %a97 = 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 + %a103 = alloca { ptr, i64, i64 }, align 16 + %a104 = alloca { ptr, i64, i64 }, align 16 + %a113 = alloca { ptr, i64, i64 }, align 16 + %a114 = alloca { ptr, i64, i64 }, align 16 + %a124 = alloca %S.ast.Type, align 16 + %a125 = alloca %S.ast.Type, align 16 + %a127 = alloca %S.ast.Type, align 16 + %a135 = alloca %S.ast.Type, align 16 + %a136 = alloca %S.ast.Type, align 16 + %a138 = alloca %S.ast.Type, align 16 + %a151 = alloca { ptr, i64, i64 }, align 16 + %a152 = alloca { ptr, i64, i64 }, align 16 + %a153 = alloca { ptr, i64, i64 }, align 16 + %a154 = 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 + %a159 = alloca { ptr, i64, i64 }, align 16 + %a162 = alloca { ptr, i64, i64 }, align 16 + %a164 = alloca { ptr, i64, i64 }, align 16 + %a165 = alloca { ptr, i64, i64 }, align 16 + %a169 = alloca { ptr, i64, i64 }, align 16 + %a179 = alloca { ptr, i64, i64 }, align 16 + %a182 = alloca { ptr, i64, i64 }, align 16 + %a185 = alloca { ptr, i64, i64 }, align 16 + %a194 = 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 + %a198 = 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 + %a203 = alloca { ptr, i64, i64 }, align 16 + %a206 = alloca { ptr, i64, i64 }, align 16 + %a209 = alloca { ptr, i64, i64 }, align 16 + %a218 = alloca { ptr, i64, i64 }, align 16 + %a225 = alloca { ptr, i64, i64 }, align 16 + %a248 = alloca %S.gen.StructDef, align 16 + %a249 = alloca %S.gen.StructDef, align 16 + %a251 = alloca %S.gen.StructDef, align 16 + %a255 = alloca { ptr, i64, i64 }, align 16 + %a259 = alloca 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 + %a282 = 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 + %a297 = alloca { ptr, i64, i64 }, align 16 + %a298 = alloca { ptr, i64, i64 }, align 16 + %a301 = alloca { ptr, i64, i64 }, align 16 + %a310 = alloca { ptr, i64, i64 }, align 16 + %a317 = alloca { ptr, i64, i64 }, align 16 + %a318 = alloca { ptr, i64, i64 }, align 16 + %a319 = alloca { ptr, i64, i64 }, align 16 + %a321 = 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 + %a326 = alloca { ptr, i64, i64 }, align 16 + store ptr %p0, ptr %a1 + 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.1628, i64 12, i64 0 }, ptr %a6 + store { ptr, i64, i64 } %t4, ptr %a7 + call void @finch_str_concat(ptr %a5, ptr %a6, ptr %a7) + store { ptr, i64, i64 } %t4, ptr %a8 + call void @finch_str_drop(ptr %a8) + %t9 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } %t9, ptr %a10 + %t11 = load ptr, ptr %a1 + %t12 = icmp eq ptr %t11, null + br i1 %t12, label %panic2726, label %ok2727 +panic2726: + call void @finch_panic(ptr @.str.1629, i64 904, ptr @.str.1630) + unreachable +ok2727: + %t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 22 + %t14 = load { ptr, i64, i64 }, ptr %t13 + %t15 = load { ptr, i64, i64 }, ptr %a10 + %t16 = call i1 @finch.gen.has({ ptr, i64, i64 } %t14, { ptr, i64, i64 } %t15) + br i1 %t16, label %then2728, label %endif2730 +then2728: + %t17 = load { ptr, i64, i64 }, ptr %a10 + ret { ptr, i64, i64 } %t17 +endif2730: + %t18 = load ptr, ptr %a1 + %t19 = icmp eq ptr %t18, null + br i1 %t19, label %panic2731, label %ok2732 +panic2731: + call void @finch_panic(ptr @.str.1631, i64 907, ptr @.str.1632) + unreachable +ok2732: + %t20 = getelementptr inbounds %S.gen.Gen, ptr %t18, i32 0, i32 22 + %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t20, i32 0, i32 1 + %t22 = load { ptr, i64, i64 }, ptr %a10 + 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 + %t30 = load ptr, ptr %a1 + %t31 = call %S.gen.Saved @finch.gen.beginHelper(ptr %t30) + store %S.gen.Saved %t31, ptr %a32 + %t33 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 + %t34 = load { ptr, i64, i64 }, ptr %t33 + store { ptr, i64, i64 } %t34, ptr %a35 + store { ptr, i64, i64 } { ptr @.str.1633, i64 5, i64 0 }, ptr %a36 + %t37 = call i32 @finch_str_eq(ptr %a35, ptr %a36) + %t38 = icmp ne i32 %t37, 0 + br i1 %t38, label %then2733, label %else2734 +then2733: + %t39 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t40 = load { ptr, i64, i64 }, ptr %t39 + %t41 = extractvalue { ptr, i64, i64 } %t40, 1 + %t42 = icmp uge i64 0, %t41 + br i1 %t42, label %range2736, label %inrange2737 +range2736: + call void @finch_panic_index(ptr @.str.1634, i64 910, i64 0, i64 %t41) + unreachable +inrange2737: + %t43 = extractvalue { ptr, i64, i64 } %t40, 0 + %t44 = getelementptr inbounds %S.ast.Type, ptr %t43, i64 0 + %t45 = load %S.ast.Type, ptr %t44 + store %S.ast.Type %t45, ptr %a46 + call void @finch.copy.S_ast_Type(ptr %a47, ptr %a46) + %t48 = load %S.ast.Type, ptr %a47 + store %S.ast.Type %t48, ptr %a49 + %t50 = load ptr, ptr %a1 + %t51 = load %S.ast.Type, ptr %a49 + %t52 = call i1 @finch.gen.owning(ptr %t50, %S.ast.Type %t51) + br i1 %t52, label %then2738, label %endif2740 +then2738: + %t53 = load ptr, ptr %a1 + %t54 = call { ptr, i64, i64 } @finch.gen.load(ptr %t53, { ptr, i64, i64 } { ptr @.str.1635, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1636, i64 2, i64 0 }) + store { ptr, i64, i64 } %t54, ptr %a55 + %t56 = load ptr, ptr %a1 + %t57 = load ptr, ptr %a1 + %t58 = call { ptr, i64, i64 } @finch.gen.op(ptr %t57, { ptr, i64, i64 } { ptr @.str.1638, i64 62, i64 0 }) + %t59 = call { ptr, i64, i64 } @finch.gen.load(ptr %t56, { ptr, i64, i64 } { ptr @.str.1637, i64 3, i64 0 }, { ptr, i64, i64 } %t58) + store { ptr, i64, i64 } %t58, ptr %a60 + call void @finch_str_drop(ptr %a60) + store { ptr, i64, i64 } %t59, ptr %a61 + %t62 = load ptr, ptr %a1 + %t63 = load { ptr, i64, i64 }, ptr %a61 + %t64 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t62, { ptr, i64, i64 } %t63) + store { ptr, i64, i64 } %t64, ptr %a65 + %t66 = load ptr, ptr %a1 + %t67 = load ptr, ptr %a1 + %t68 = load %S.ast.Type, ptr %a49 + %t69 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t67, %S.ast.Type %t68) + store { ptr, i64, i64 } { ptr @.str.1639, i64 23, i64 0 }, ptr %a71 + store { ptr, i64, i64 } %t69, ptr %a72 + call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) + store { ptr, i64, i64 } %t69, ptr %a73 + call void @finch_str_drop(ptr %a73) + %t74 = load { ptr, i64, i64 }, ptr %a70 + store { ptr, i64, i64 } %t74, ptr %a76 + store { ptr, i64, i64 } { ptr @.str.1640, i64 6, i64 0 }, ptr %a77 + call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77) + store { ptr, i64, i64 } %t74, ptr %a78 + call void @finch_str_drop(ptr %a78) + %t79 = load { ptr, i64, i64 }, ptr %a75 + %t80 = load { ptr, i64, i64 }, ptr %a55 + store { ptr, i64, i64 } %t79, ptr %a82 + store { ptr, i64, i64 } %t80, ptr %a83 + call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) + store { ptr, i64, i64 } %t79, ptr %a84 + call void @finch_str_drop(ptr %a84) + %t85 = load { ptr, i64, i64 }, ptr %a81 + store { ptr, i64, i64 } %t85, ptr %a87 + store { ptr, i64, i64 } { ptr @.str.1641, i64 6, i64 0 }, ptr %a88 + call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) + store { ptr, i64, i64 } %t85, ptr %a89 + call void @finch_str_drop(ptr %a89) + %t90 = load { ptr, i64, i64 }, ptr %a86 + %t91 = load { ptr, i64, i64 }, ptr %a65 + %t92 = extractvalue { ptr, i64, i64 } %t91, 1 + %t93 = icmp uge i64 3, %t92 + br i1 %t93, label %range2741, label %inrange2742 +range2741: + call void @finch_panic_index(ptr @.str.1642, i64 915, i64 3, i64 %t92) + unreachable +inrange2742: + %t94 = extractvalue { ptr, i64, i64 } %t91, 0 + %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %t94, i64 3 + %t96 = load { ptr, i64, i64 }, ptr %t95 + store { ptr, i64, i64 } %t90, ptr %a98 + store { ptr, i64, i64 } %t96, ptr %a99 + call void @finch_str_concat(ptr %a97, ptr %a98, ptr %a99) + store { ptr, i64, i64 } %t90, ptr %a100 + call void @finch_str_drop(ptr %a100) + %t101 = load { ptr, i64, i64 }, ptr %a97 + %t102 = call { ptr, i64, i64 } @finch.gen.op(ptr %t66, { ptr, i64, i64 } %t101) + store { ptr, i64, i64 } %t101, ptr %a103 + call void @finch_str_drop(ptr %a103) + store { ptr, i64, i64 } %t102, ptr %a104 + %t105 = load ptr, ptr %a1 + %t106 = load { ptr, i64, i64 }, ptr %a104 + %t107 = load %S.ast.Type, ptr %a49 + call void @finch.gen.dropAt(ptr %t105, { ptr, i64, i64 } %t106, %S.ast.Type %t107) + %t108 = load ptr, ptr %a1 + %t109 = load { ptr, i64, i64 }, ptr %a65 + call void @finch.gen.loopEnd(ptr %t108, { ptr, i64, i64 } %t109) + call void @finch_str_drop(ptr %a104) + call void @finch.drop.arr_str(ptr %a65) + call void @finch_str_drop(ptr %a61) + call void @finch_str_drop(ptr %a55) + br label %endif2740 +endif2740: + %t110 = load ptr, ptr %a1 + call void @finch.gen.emit(ptr %t110, { ptr, i64, i64 } { ptr @.str.1643, i64 33, i64 0 }) + call void @finch.drop.S_ast_Type(ptr %a49) + br label %endif2735 +else2734: + %t111 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 + %t112 = load { ptr, i64, i64 }, ptr %t111 + store { ptr, i64, i64 } %t112, ptr %a113 + store { ptr, i64, i64 } { ptr @.str.1644, i64 3, i64 0 }, ptr %a114 + %t115 = call i32 @finch_str_eq(ptr %a113, ptr %a114) + %t116 = icmp ne i32 %t115, 0 + br i1 %t116, label %then2743, label %else2744 +then2743: + %t117 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t118 = load { ptr, i64, i64 }, ptr %t117 + %t119 = extractvalue { ptr, i64, i64 } %t118, 1 + %t120 = icmp uge i64 0, %t119 + br i1 %t120, label %range2746, label %inrange2747 +range2746: + call void @finch_panic_index(ptr @.str.1645, i64 921, i64 0, i64 %t119) + unreachable +inrange2747: + %t121 = extractvalue { ptr, i64, i64 } %t118, 0 + %t122 = getelementptr inbounds %S.ast.Type, ptr %t121, i64 0 + %t123 = load %S.ast.Type, ptr %t122 + store %S.ast.Type %t123, ptr %a124 + call void @finch.copy.S_ast_Type(ptr %a125, ptr %a124) + %t126 = load %S.ast.Type, ptr %a125 + store %S.ast.Type %t126, ptr %a127 + %t128 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t129 = load { ptr, i64, i64 }, ptr %t128 + %t130 = extractvalue { ptr, i64, i64 } %t129, 1 + %t131 = icmp uge i64 1, %t130 + br i1 %t131, label %range2748, label %inrange2749 +range2748: + call void @finch_panic_index(ptr @.str.1646, i64 922, i64 1, i64 %t130) + unreachable +inrange2749: + %t132 = extractvalue { ptr, i64, i64 } %t129, 0 + %t133 = getelementptr inbounds %S.ast.Type, ptr %t132, i64 1 + %t134 = load %S.ast.Type, ptr %t133 + store %S.ast.Type %t134, ptr %a135 + call void @finch.copy.S_ast_Type(ptr %a136, ptr %a135) + %t137 = load %S.ast.Type, ptr %a136 + store %S.ast.Type %t137, ptr %a138 + %t139 = load ptr, ptr %a1 + %t140 = load %S.ast.Type, ptr %a127 + %t141 = call i1 @finch.gen.owning(ptr %t139, %S.ast.Type %t140) + br label %logic.from2750 +logic.from2750: + br i1 %t141, label %logic.end2752, label %logic.rhs2751 +logic.rhs2751: + %t142 = load ptr, ptr %a1 + %t143 = load %S.ast.Type, ptr %a138 + %t144 = call i1 @finch.gen.owning(ptr %t142, %S.ast.Type %t143) + br label %logic.rend2753 +logic.rend2753: + br label %logic.end2752 +logic.end2752: + %t145 = phi i1 [ true, %logic.from2750 ], [ %t144, %logic.rend2753 ] + br i1 %t145, label %then2754, label %endif2756 +then2754: + %t146 = load ptr, ptr %a1 + %t147 = load ptr, ptr %a1 + %t148 = load ptr, ptr %a1 + %t149 = load %S.ast.Type, ptr %a2 + %t150 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t148, %S.ast.Type %t149) + store { ptr, i64, i64 } { ptr @.str.1648, i64 23, i64 0 }, ptr %a152 + store { ptr, i64, i64 } %t150, ptr %a153 + call void @finch_str_concat(ptr %a151, ptr %a152, ptr %a153) + store { ptr, i64, i64 } %t150, ptr %a154 + call void @finch_str_drop(ptr %a154) + %t155 = load { ptr, i64, i64 }, ptr %a151 + store { ptr, i64, i64 } %t155, ptr %a157 + store { ptr, i64, i64 } { ptr @.str.1649, i64 22, i64 0 }, ptr %a158 + call void @finch_str_concat(ptr %a156, ptr %a157, ptr %a158) + store { ptr, i64, i64 } %t155, ptr %a159 + call void @finch_str_drop(ptr %a159) + %t160 = load { ptr, i64, i64 }, ptr %a156 + %t161 = call { ptr, i64, i64 } @finch.gen.op(ptr %t147, { ptr, i64, i64 } %t160) + store { ptr, i64, i64 } %t160, ptr %a162 + call void @finch_str_drop(ptr %a162) + %t163 = call { ptr, i64, i64 } @finch.gen.load(ptr %t146, { ptr, i64, i64 } { ptr @.str.1647, i64 3, i64 0 }, { ptr, i64, i64 } %t161) + store { ptr, i64, i64 } %t161, ptr %a164 + call void @finch_str_drop(ptr %a164) + store { ptr, i64, i64 } %t163, ptr %a165 + %t166 = load ptr, ptr %a1 + %t167 = load { ptr, i64, i64 }, ptr %a165 + %t168 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t166, { ptr, i64, i64 } %t167) + store { ptr, i64, i64 } %t168, ptr %a169 + %t170 = load ptr, ptr %a1 + %t171 = load %S.ast.Type, ptr %a2 + %t172 = load { ptr, i64, i64 }, ptr %a169 + %t173 = extractvalue { ptr, i64, i64 } %t172, 1 + %t174 = icmp uge i64 3, %t173 + br i1 %t174, label %range2757, label %inrange2758 +range2757: + call void @finch_panic_index(ptr @.str.1651, i64 926, i64 3, i64 %t173) + unreachable +inrange2758: + %t175 = extractvalue { ptr, i64, i64 } %t172, 0 + %t176 = getelementptr inbounds { ptr, i64, i64 }, ptr %t175, i64 3 + %t177 = load { ptr, i64, i64 }, ptr %t176 + %t178 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t170, { ptr, i64, i64 } { ptr @.str.1650, i64 2, i64 0 }, %S.ast.Type %t171, { ptr, i64, i64 } %t177) + store { ptr, i64, i64 } %t178, ptr %a179 + %t180 = load ptr, ptr %a1 + %t181 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t180, { ptr, i64, i64 } { ptr @.str.1652, i64 10, i64 0 }) + store { ptr, i64, i64 } %t181, ptr %a182 + %t183 = load ptr, ptr %a1 + %t184 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t183, { ptr, i64, i64 } { ptr @.str.1653, i64 10, i64 0 }) + store { ptr, i64, i64 } %t184, ptr %a185 + %t186 = load ptr, ptr %a1 + %t187 = load ptr, ptr %a1 + %t188 = load ptr, ptr %a1 + %t189 = load ptr, ptr %a1 + %t190 = load { ptr, i64, i64 }, ptr %a179 + %t191 = load %S.ast.Type, ptr %a2 + %t192 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t189, { ptr, i64, i64 } %t190, %S.ast.Type %t191, i64 0) + %t193 = call { ptr, i64, i64 } @finch.gen.load(ptr %t188, { ptr, i64, i64 } { ptr @.str.1655, i64 3, i64 0 }, { ptr, i64, i64 } %t192) + store { ptr, i64, i64 } %t192, ptr %a194 + call void @finch_str_drop(ptr %a194) + store { ptr, i64, i64 } { ptr @.str.1654, i64 12, i64 0 }, ptr %a196 + store { ptr, i64, i64 } %t193, ptr %a197 + call void @finch_str_concat(ptr %a195, ptr %a196, ptr %a197) + store { ptr, i64, i64 } %t193, ptr %a198 + call void @finch_str_drop(ptr %a198) + %t199 = load { ptr, i64, i64 }, ptr %a195 + store { ptr, i64, i64 } %t199, ptr %a201 + store { ptr, i64, i64 } { ptr @.str.1656, i64 3, i64 0 }, ptr %a202 + call void @finch_str_concat(ptr %a200, ptr %a201, ptr %a202) + store { ptr, i64, i64 } %t199, ptr %a203 + call void @finch_str_drop(ptr %a203) + %t204 = load { ptr, i64, i64 }, ptr %a200 + %t205 = call { ptr, i64, i64 } @finch.gen.op(ptr %t187, { ptr, i64, i64 } %t204) + store { ptr, i64, i64 } %t204, ptr %a206 + call void @finch_str_drop(ptr %a206) + %t207 = load { ptr, i64, i64 }, ptr %a182 + %t208 = load { ptr, i64, i64 }, ptr %a185 + call void @finch.gen.condBr(ptr %t186, { ptr, i64, i64 } %t205, { ptr, i64, i64 } %t207, { ptr, i64, i64 } %t208) + store { ptr, i64, i64 } %t205, ptr %a209 + call void @finch_str_drop(ptr %a209) + %t210 = load ptr, ptr %a1 + %t211 = load { ptr, i64, i64 }, ptr %a182 + call void @finch.gen.label(ptr %t210, { ptr, i64, i64 } %t211) + %t212 = load ptr, ptr %a1 + %t213 = load ptr, ptr %a1 + %t214 = load { ptr, i64, i64 }, ptr %a179 + %t215 = load %S.ast.Type, ptr %a2 + %t216 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t213, { ptr, i64, i64 } %t214, %S.ast.Type %t215, i64 1) + %t217 = load %S.ast.Type, ptr %a127 + call void @finch.gen.dropAt(ptr %t212, { ptr, i64, i64 } %t216, %S.ast.Type %t217) + store { ptr, i64, i64 } %t216, ptr %a218 + call void @finch_str_drop(ptr %a218) + %t219 = load ptr, ptr %a1 + %t220 = load ptr, ptr %a1 + %t221 = load { ptr, i64, i64 }, ptr %a179 + %t222 = load %S.ast.Type, ptr %a2 + %t223 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t220, { ptr, i64, i64 } %t221, %S.ast.Type %t222, i64 2) + %t224 = load %S.ast.Type, ptr %a138 + call void @finch.gen.dropAt(ptr %t219, { ptr, i64, i64 } %t223, %S.ast.Type %t224) + store { ptr, i64, i64 } %t223, ptr %a225 + call void @finch_str_drop(ptr %a225) + %t226 = load ptr, ptr %a1 + %t227 = load { ptr, i64, i64 }, ptr %a185 + call void @finch.gen.br(ptr %t226, { ptr, i64, i64 } %t227) + %t228 = load ptr, ptr %a1 + %t229 = load { ptr, i64, i64 }, ptr %a185 + call void @finch.gen.label(ptr %t228, { ptr, i64, i64 } %t229) + %t230 = load ptr, ptr %a1 + %t231 = load { ptr, i64, i64 }, ptr %a169 + call void @finch.gen.loopEnd(ptr %t230, { ptr, i64, i64 } %t231) + call void @finch_str_drop(ptr %a185) + call void @finch_str_drop(ptr %a182) + call void @finch_str_drop(ptr %a179) + call void @finch.drop.arr_str(ptr %a169) + call void @finch_str_drop(ptr %a165) + br label %endif2756 +endif2756: + %t232 = load ptr, ptr %a1 + call void @finch.gen.emit(ptr %t232, { ptr, i64, i64 } { ptr @.str.1657, i64 33, i64 0 }) + call void @finch.drop.S_ast_Type(ptr %a138) + call void @finch.drop.S_ast_Type(ptr %a127) + br label %endif2745 +else2744: + %t233 = load ptr, ptr %a1 + %t234 = icmp eq ptr %t233, null + br i1 %t234, label %panic2759, label %ok2760 +panic2759: + call void @finch_panic(ptr @.str.1658, i64 939, ptr @.str.1659) + unreachable +ok2760: + %t235 = getelementptr inbounds %S.gen.Gen, ptr %t233, i32 0, i32 16 + %t236 = load ptr, ptr %a1 + %t237 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 + %t238 = load { ptr, i64, i64 }, ptr %t237 + %t239 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 + %t240 = load { ptr, i64, i64 }, ptr %t239 + %t241 = call i64 @finch.gen.findStruct(ptr %t236, { ptr, i64, i64 } %t238, { ptr, i64, i64 } %t240) + %t242 = load { ptr, i64, i64 }, ptr %t235 + %t243 = extractvalue { ptr, i64, i64 } %t242, 1 + %t244 = icmp uge i64 %t241, %t243 + br i1 %t244, label %range2761, label %inrange2762 +range2761: + call void @finch_panic_index(ptr @.str.1660, i64 939, i64 %t241, i64 %t243) + unreachable +inrange2762: + %t245 = extractvalue { ptr, i64, i64 } %t242, 0 + %t246 = getelementptr inbounds %S.gen.StructDef, ptr %t245, i64 %t241 + %t247 = load %S.gen.StructDef, ptr %t246 + store %S.gen.StructDef %t247, ptr %a248 + call void @finch.copy.S_gen_StructDef(ptr %a249, ptr %a248) + %t250 = load %S.gen.StructDef, ptr %a249 + store %S.gen.StructDef %t250, ptr %a251 + %t252 = load ptr, ptr %a1 + %t253 = load %S.ast.Type, ptr %a2 + %t254 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t252, %S.ast.Type %t253) + store { ptr, i64, i64 } %t254, ptr %a255 + %t256 = getelementptr inbounds %S.gen.StructDef, ptr %a251, i32 0, i32 12 + %t257 = getelementptr inbounds { ptr, i64, i64 }, ptr %t256, i32 0, i32 1 + %t258 = load i64, ptr %t257 + store i64 0, ptr %a259 + br label %for.cond2763 +for.cond2763: + %t260 = load i64, ptr %a259 + %t261 = icmp slt i64 %t260, %t258 + br i1 %t261, label %for.body2764, label %for.end2766 +for.body2764: + %t262 = load ptr, ptr %a1 + %t263 = getelementptr inbounds %S.gen.StructDef, ptr %a251, i32 0, i32 12 + %t264 = load i64, ptr %a259 + %t265 = load { ptr, i64, i64 }, ptr %t263 + %t266 = extractvalue { ptr, i64, i64 } %t265, 1 + %t267 = icmp uge i64 %t264, %t266 + br i1 %t267, label %range2767, label %inrange2768 +range2767: + call void @finch_panic_index(ptr @.str.1661, i64 942, i64 %t264, i64 %t266) + unreachable +inrange2768: + %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 = call i1 @finch.gen.owning(ptr %t262, %S.ast.Type %t270) + br i1 %t271, label %then2769, label %endif2771 +then2769: + %t272 = load ptr, ptr %a1 + %t273 = load ptr, ptr %a1 + %t274 = load { ptr, i64, i64 }, ptr %a255 + store { ptr, i64, i64 } { ptr @.str.1662, i64 23, i64 0 }, 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.1663, i64 21, i64 0 }, ptr %a281 + call void @finch_str_concat(ptr %a279, ptr %a280, ptr %a281) + store { ptr, i64, i64 } %t278, ptr %a282 + call void @finch_str_drop(ptr %a282) + %t283 = load { ptr, i64, i64 }, ptr %a279 + %t284 = getelementptr inbounds %S.gen.StructDef, ptr %a251, i32 0, i32 3 + %t285 = load i64, ptr %a259 + %t286 = load { ptr, i64, i64 }, ptr %t284 + %t287 = extractvalue { ptr, i64, i64 } %t286, 1 + %t288 = icmp uge i64 %t285, %t287 + br i1 %t288, label %range2772, label %inrange2773 +range2772: + call void @finch_panic_index(ptr @.str.1664, i64 943, i64 %t285, i64 %t287) + unreachable +inrange2773: + %t289 = extractvalue { ptr, i64, i64 } %t286, 0 + %t290 = getelementptr inbounds i64, ptr %t289, i64 %t285 + %t291 = load i64, ptr %t290 + call void @finch_str_from_int(ptr %a292, i64 %t291) + %t293 = load { ptr, i64, i64 }, ptr %a292 + store { ptr, i64, i64 } %t283, ptr %a295 + store { ptr, i64, i64 } %t293, ptr %a296 + call void @finch_str_concat(ptr %a294, ptr %a295, ptr %a296) + store { ptr, i64, i64 } %t283, ptr %a297 + call void @finch_str_drop(ptr %a297) + store { ptr, i64, i64 } %t293, ptr %a298 + call void @finch_str_drop(ptr %a298) + %t299 = load { ptr, i64, i64 }, ptr %a294 + %t300 = call { ptr, i64, i64 } @finch.gen.op(ptr %t273, { ptr, i64, i64 } %t299) + store { ptr, i64, i64 } %t299, ptr %a301 + call void @finch_str_drop(ptr %a301) + %t302 = getelementptr inbounds %S.gen.StructDef, ptr %a251, i32 0, i32 12 + %t303 = load i64, ptr %a259 + %t304 = load { ptr, i64, i64 }, ptr %t302 + %t305 = extractvalue { ptr, i64, i64 } %t304, 1 + %t306 = icmp uge i64 %t303, %t305 + br i1 %t306, label %range2774, label %inrange2775 +range2774: + call void @finch_panic_index(ptr @.str.1665, i64 943, i64 %t303, i64 %t305) + unreachable +inrange2775: + %t307 = extractvalue { ptr, i64, i64 } %t304, 0 + %t308 = getelementptr inbounds %S.ast.Type, ptr %t307, i64 %t303 + %t309 = load %S.ast.Type, ptr %t308 + call void @finch.gen.dropAt(ptr %t272, { ptr, i64, i64 } %t300, %S.ast.Type %t309) + store { ptr, i64, i64 } %t300, ptr %a310 + call void @finch_str_drop(ptr %a310) + br label %endif2771 +endif2771: + br label %for.step2765 +for.step2765: + %t311 = load i64, ptr %a259 + %t312 = add i64 %t311, 1 + store i64 %t312, ptr %a259 + br label %for.cond2763 +for.end2766: + call void @finch_str_drop(ptr %a255) + call void @finch.drop.S_gen_StructDef(ptr %a251) + br label %endif2745 +endif2745: + br label %endif2735 +endif2735: + %t313 = load ptr, ptr %a1 + call void @finch.gen.emit(ptr %t313, { ptr, i64, i64 } { ptr @.str.1666, i64 8, i64 0 }) + %t314 = load ptr, ptr %a1 + %t315 = load %S.gen.Saved, ptr %a32 + %t316 = load { ptr, i64, i64 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.1667, i64 21, 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.1668, i64 8, i64 0 }, ptr %a323 + call void @finch_str_concat(ptr %a321, ptr %a322, ptr %a323) + store { ptr, i64, i64 } %t320, ptr %a324 + call void @finch_str_drop(ptr %a324) + %t325 = load { ptr, i64, i64 }, ptr %a321 + call void @finch.gen.endHelper(ptr %t314, %S.gen.Saved %t315, { ptr, i64, i64 } %t325) + store { ptr, i64, i64 } %t325, ptr %a326 + call void @finch_str_drop(ptr %a326) + %t327 = load { ptr, i64, i64 }, ptr %a10 + call void @finch.drop.S_gen_Saved(ptr %a32) + ret { ptr, i64, i64 } %t327 +} + +define internal void @finch.gen.hold(ptr %p0, %S.gen.Val %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.gen.Val, align 16 + %a26 = alloca { ptr, i64, i64 }, align 16 + %a27 = alloca { ptr, i64, i64 }, align 16 + %a32 = alloca %S.ast.Type, align 16 + %a33 = alloca %S.ast.Type, align 16 + store ptr %p0, ptr %a1 + store %S.gen.Val %p1, ptr %a2 + %t3 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 2 + %t4 = load i1, ptr %t3 + br label %logic.from2776 +logic.from2776: + br i1 %t4, label %logic.rhs2777, label %logic.end2778 +logic.rhs2777: + %t5 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 + %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1 + %t7 = load i64, ptr %t6 + %t8 = icmp sgt i64 %t7, 0 + br label %logic.rend2779 +logic.rend2779: + br label %logic.end2778 +logic.end2778: + %t9 = phi i1 [ false, %logic.from2776 ], [ %t8, %logic.rend2779 ] + br label %logic.from2780 +logic.from2780: + br i1 %t9, label %logic.rhs2781, label %logic.end2782 +logic.rhs2781: + %t10 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 + %t11 = load { ptr, i64, i64 }, ptr %t10 + %t12 = call i1 @finch.gen.isConstant({ ptr, i64, i64 } %t11) + %t13 = xor i1 %t12, true + br label %logic.rend2783 +logic.rend2783: + br label %logic.end2782 +logic.end2782: + %t14 = phi i1 [ false, %logic.from2780 ], [ %t13, %logic.rend2783 ] + br label %logic.from2784 +logic.from2784: + br i1 %t14, label %logic.rhs2785, label %logic.end2786 +logic.rhs2785: + %t15 = load ptr, ptr %a1 + %t16 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 + %t17 = load %S.ast.Type, ptr %t16 + %t18 = call i1 @finch.gen.owning(ptr %t15, %S.ast.Type %t17) + br label %logic.rend2787 +logic.rend2787: + br label %logic.end2786 +logic.end2786: + %t19 = phi i1 [ false, %logic.from2784 ], [ %t18, %logic.rend2787 ] + br i1 %t19, label %then2788, label %endif2790 +then2788: + %t20 = load ptr, ptr %a1 + %t21 = icmp eq ptr %t20, null + br i1 %t21, label %panic2791, label %ok2792 +panic2791: + call void @finch_panic(ptr @.str.1669, i64 956, ptr @.str.1670) + unreachable +ok2792: + %t22 = getelementptr inbounds %S.gen.Gen, ptr %t20, i32 0, i32 11 + %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t22, i32 0, i32 1 + %t24 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 + %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 + %t29 = insertvalue %S.gen.Pending zeroinitializer, { ptr, i64, i64 } %t28, 0 + %t30 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 + %t31 = load %S.ast.Type, ptr %t30 + store %S.ast.Type %t31, ptr %a32 + call void @finch.copy.S_ast_Type(ptr %a33, ptr %a32) + %t34 = load %S.ast.Type, ptr %a33 + %t35 = insertvalue %S.gen.Pending %t29, %S.ast.Type %t34, 1 + %t36 = insertvalue %S.gen.Pending %t35, i1 false, 2 + %t37 = load i64, ptr %t23 + %t38 = add i64 %t37, 1 + call void @finch_arr_reserve(ptr %t22, i64 %t38, i64 ptrtoint (ptr getelementptr (%S.gen.Pending, ptr null, i32 1) to i64)) + %t39 = load ptr, ptr %t22 + %t40 = getelementptr inbounds %S.gen.Pending, ptr %t39, i64 %t37 + store %S.gen.Pending %t36, ptr %t40 + store i64 %t38, ptr %t23 + br label %endif2790 +endif2790: + ret void +} + +define internal void @finch.gen.holdAddr(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca %S.ast.Type, align 16 + %a12 = alloca { ptr, i64, i64 }, align 16 + %a13 = alloca { ptr, i64, i64 }, align 16 + %a17 = alloca %S.ast.Type, align 16 + %a18 = alloca %S.ast.Type, align 16 + store ptr %p0, ptr %a1 + store { ptr, i64, i64 } %p1, ptr %a2 + store %S.ast.Type %p2, ptr %a3 + %t4 = load ptr, ptr %a1 + %t5 = load %S.ast.Type, ptr %a3 + %t6 = call i1 @finch.gen.owning(ptr %t4, %S.ast.Type %t5) + br i1 %t6, label %then2793, label %endif2795 +then2793: + %t7 = load ptr, ptr %a1 + %t8 = icmp eq ptr %t7, null + br i1 %t8, label %panic2796, label %ok2797 +panic2796: + call void @finch_panic(ptr @.str.1671, i64 962, ptr @.str.1672) + unreachable +ok2797: + %t9 = getelementptr inbounds %S.gen.Gen, ptr %t7, i32 0, i32 11 + %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t9, i32 0, i32 1 + %t11 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t11, ptr %a12 + call void @finch_str_copy(ptr %a13, ptr %a12) + %t14 = load { ptr, i64, i64 }, ptr %a13 + %t15 = insertvalue %S.gen.Pending zeroinitializer, { ptr, i64, i64 } %t14, 0 + %t16 = load %S.ast.Type, ptr %a3 + store %S.ast.Type %t16, ptr %a17 + call void @finch.copy.S_ast_Type(ptr %a18, ptr %a17) + %t19 = load %S.ast.Type, ptr %a18 + %t20 = insertvalue %S.gen.Pending %t15, %S.ast.Type %t19, 1 + %t21 = insertvalue %S.gen.Pending %t20, i1 true, 2 + %t22 = load i64, ptr %t10 + %t23 = add i64 %t22, 1 + call void @finch_arr_reserve(ptr %t9, i64 %t23, i64 ptrtoint (ptr getelementptr (%S.gen.Pending, ptr null, i32 1) to i64)) + %t24 = load ptr, ptr %t9 + %t25 = getelementptr inbounds %S.gen.Pending, ptr %t24, i64 %t22 + store %S.gen.Pending %t21, ptr %t25 + store i64 %t23, ptr %t10 + br label %endif2795 +endif2795: + ret void +} + +define internal void @finch.copy.S_gen_Pending(ptr %dst, ptr %src) { +entry: + + %t1 = load %S.gen.Pending, ptr %src + store %S.gen.Pending %t1, ptr %dst + %t2 = getelementptr inbounds %S.gen.Pending, ptr %dst, i32 0, i32 0 + %t3 = getelementptr inbounds %S.gen.Pending, ptr %src, i32 0, i32 0 + call void @finch_str_copy(ptr %t2, ptr %t3) + %t4 = getelementptr inbounds %S.gen.Pending, ptr %dst, i32 0, i32 1 + %t5 = getelementptr inbounds %S.gen.Pending, ptr %src, i32 0, i32 1 + call void @finch.copy.S_ast_Type(ptr %t4, ptr %t5) + ret void +} + +define internal void @finch.drop.S_gen_Pending(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.gen.Pending, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.gen.Pending, ptr %a, i32 0, i32 1 + call void @finch.drop.S_ast_Type(ptr %t2) + ret void +} + +define internal void @finch.gen.dropPending(ptr %p0, i64 %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca i64, align 16 + %a8 = alloca i64, align 16 + %a24 = alloca %S.gen.Pending, align 16 + %a25 = alloca %S.gen.Pending, align 16 + %a27 = alloca %S.gen.Pending, align 16 + store ptr %p0, ptr %a1 + 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.1673, i64 968, ptr @.str.1674) + unreachable +ok2799: + %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 11 + %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.cond2800 +while.cond2800: + %t9 = load i64, ptr %a8 + %t10 = load i64, ptr %a2 + %t11 = icmp sgt i64 %t9, %t10 + br i1 %t11, label %while.body2801, label %while.end2802 +while.body2801: + %t12 = load i64, ptr %a8 + %t13 = sub i64 %t12, 1 + store i64 %t13, ptr %a8 + %t14 = load ptr, ptr %a1 + %t15 = icmp eq ptr %t14, null + br i1 %t15, label %panic2803, label %ok2804 +panic2803: + call void @finch_panic(ptr @.str.1675, i64 971, ptr @.str.1676) + unreachable +ok2804: + %t16 = getelementptr inbounds %S.gen.Gen, ptr %t14, i32 0, i32 11 + %t17 = load i64, ptr %a8 + %t18 = load { ptr, i64, i64 }, ptr %t16 + %t19 = extractvalue { ptr, i64, i64 } %t18, 1 + %t20 = icmp uge i64 %t17, %t19 + br i1 %t20, label %range2805, label %inrange2806 +range2805: + call void @finch_panic_index(ptr @.str.1677, i64 971, i64 %t17, i64 %t19) + unreachable +inrange2806: + %t21 = extractvalue { ptr, i64, i64 } %t18, 0 + %t22 = getelementptr inbounds %S.gen.Pending, ptr %t21, i64 %t17 + %t23 = load %S.gen.Pending, ptr %t22 + store %S.gen.Pending %t23, ptr %a24 + call void @finch.copy.S_gen_Pending(ptr %a25, ptr %a24) + %t26 = load %S.gen.Pending, ptr %a25 + store %S.gen.Pending %t26, ptr %a27 + %t28 = getelementptr inbounds %S.gen.Pending, ptr %a27, i32 0, i32 2 + %t29 = load i1, ptr %t28 + br i1 %t29, label %then2807, label %else2808 +then2807: + %t30 = load ptr, ptr %a1 + %t31 = getelementptr inbounds %S.gen.Pending, ptr %a27, i32 0, i32 0 + %t32 = load { ptr, i64, i64 }, ptr %t31 + %t33 = getelementptr inbounds %S.gen.Pending, ptr %a27, i32 0, i32 1 + %t34 = load %S.ast.Type, ptr %t33 + call void @finch.gen.dropAt(ptr %t30, { ptr, i64, i64 } %t32, %S.ast.Type %t34) + br label %endif2809 +else2808: %t35 = load ptr, ptr %a1 - %t36 = load ptr, ptr %a1 - %t37 = load %S.ast.Type, ptr %a3 - %t38 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t36, %S.ast.Type %t37) - %t39 = load { ptr, i64, i64 }, ptr %a30 - %t40 = call { ptr, i64, i64 } @finch.gen.load(ptr %t35, { ptr, i64, i64 } %t38, { ptr, i64, i64 } %t39) - ret { ptr, i64, i64 } %t40 + %t36 = getelementptr inbounds %S.gen.Pending, ptr %a27, i32 0, i32 0 + %t37 = load { ptr, i64, i64 }, ptr %t36 + %t38 = getelementptr inbounds %S.gen.Pending, ptr %a27, i32 0, i32 1 + %t39 = load %S.ast.Type, ptr %t38 + call void @finch.gen.dropValue(ptr %t35, { ptr, i64, i64 } %t37, %S.ast.Type %t39) + br label %endif2809 +endif2809: + call void @finch.drop.S_gen_Pending(ptr %a27) + br label %while.cond2800 +while.end2802: + ret void +} + +define internal void @finch.gen.heldEnd(ptr %p0, i64 %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca i64, align 16 + %a20 = alloca %S.gen.Pending, align 16 + store ptr %p0, ptr %a1 + store i64 %p1, ptr %a2 + br label %while.cond2810 +while.cond2810: + %t3 = load ptr, ptr %a1 + %t4 = icmp eq ptr %t3, null + br i1 %t4, label %panic2813, label %ok2814 +panic2813: + call void @finch_panic(ptr @.str.1678, i64 982, ptr @.str.1679) + unreachable +ok2814: + %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 11 + %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1 + %t7 = load i64, ptr %t6 + %t8 = load i64, ptr %a2 + %t9 = icmp sgt i64 %t7, %t8 + br i1 %t9, label %while.body2811, label %while.end2812 +while.body2811: + %t10 = load ptr, ptr %a1 + %t11 = icmp eq ptr %t10, null + br i1 %t11, label %panic2815, label %ok2816 +panic2815: + call void @finch_panic(ptr @.str.1680, i64 983, ptr @.str.1681) + unreachable +ok2816: + %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 11 + %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t12, i32 0, i32 1 + %t14 = load i64, ptr %t13 + %t15 = icmp eq i64 %t14, 0 + br i1 %t15, label %panic2817, label %ok2818 +panic2817: + call void @finch_panic(ptr @.str.1682, i64 983, ptr @.str.1683) + unreachable +ok2818: + %t16 = sub i64 %t14, 1 + %t17 = load ptr, ptr %t12 + %t18 = getelementptr inbounds %S.gen.Pending, ptr %t17, i64 %t16 + %t19 = load %S.gen.Pending, ptr %t18 + store i64 %t16, ptr %t13 + store %S.gen.Pending %t19, ptr %a20 + call void @finch.drop.S_gen_Pending(ptr %a20) + br label %while.cond2810 +while.end2812: + ret void } define internal { ptr, i64, i64 } @finch.gen.own(ptr %p0, %S.gen.Val %p1) { @@ -26366,26 +30792,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.from2645 -logic.from2645: - br i1 %t7, label %logic.end2647, label %logic.rhs2646 -logic.rhs2646: + br label %logic.from2819 +logic.from2819: + br i1 %t7, label %logic.end2821, label %logic.rhs2820 +logic.rhs2820: %t8 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 2 %t9 = load i1, ptr %t8 - br label %logic.rend2648 -logic.rend2648: - br label %logic.end2647 -logic.end2647: - %t10 = phi i1 [ true, %logic.from2645 ], [ %t9, %logic.rend2648 ] - br i1 %t10, label %then2649, label %endif2651 -then2649: + br label %logic.rend2822 +logic.rend2822: + br label %logic.end2821 +logic.end2821: + %t10 = phi i1 [ true, %logic.from2819 ], [ %t9, %logic.rend2822 ] + br i1 %t10, label %then2823, label %endif2825 +then2823: %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 -endif2651: +endif2825: %t16 = load ptr, ptr %a1 %t17 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 %t18 = load { ptr, i64, i64 }, ptr %t17 @@ -26406,18 +30832,23 @@ entry: %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 + %a21 = alloca { ptr, i64, i64 }, align 16 %a24 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 + %a25 = alloca { ptr, i64, i64 }, align 16 + %a26 = 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 %a32 = 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 %a36 = alloca { ptr, i64, i64 }, align 16 %a37 = alloca { ptr, i64, i64 }, align 16 %a38 = 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 + %a43 = alloca { ptr, i64, i64 }, align 16 + %a45 = 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 @@ -26428,41 +30859,55 @@ 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.1615, i64 0, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.1684, 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 %then2652, label %endif2654 -then2652: + br i1 %t14, label %then2826, label %endif2828 +then2826: %t15 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.1616, i64 2, i64 0 }, ptr %a17 + store { ptr, i64, i64 } { ptr @.str.1685, 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 + %t20 = load { ptr, i64, i64 }, ptr %a11 store { ptr, i64, i64 } %t19, ptr %a11 - br label %endif2654 -endif2654: - %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.1617, 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 - store { ptr, i64, i64 } %t25, 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 - %t31 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } %t30, 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.1618, 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) + store { ptr, i64, i64 } %t20, ptr %a21 + call void @finch_str_drop(ptr %a21) + br label %endif2828 +endif2828: + %t22 = load ptr, ptr %a1 + %t23 = load { ptr, i64, i64 }, ptr %a10 + store { ptr, i64, i64 } %t23, ptr %a25 + store { ptr, i64, i64 } { ptr @.str.1686, i64 35, 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, i64, i64 }, ptr %a7 + store { ptr, i64, i64 } %t27, ptr %a30 + store { ptr, i64, i64 } %t28, ptr %a31 + call void @finch_str_concat(ptr %a29, ptr %a30, ptr %a31) + store { ptr, i64, i64 } %t27, ptr %a32 + call void @finch_str_drop(ptr %a32) + %t33 = load { ptr, i64, i64 }, ptr %a29 + %t34 = load { ptr, i64, i64 }, ptr %a11 + store { ptr, i64, i64 } %t33, ptr %a36 + store { ptr, i64, i64 } %t34, ptr %a37 + call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) + store { ptr, i64, i64 } %t33, ptr %a38 + call void @finch_str_drop(ptr %a38) + %t39 = load { ptr, i64, i64 }, ptr %a35 + store { ptr, i64, i64 } %t39, ptr %a41 + store { ptr, i64, i64 } { ptr @.str.1687, i64 1, i64 0 }, ptr %a42 + call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) + store { ptr, i64, i64 } %t39, ptr %a43 + call void @finch_str_drop(ptr %a43) + %t44 = load { ptr, i64, i64 }, ptr %a40 + call void @finch.gen.emit(ptr %t22, { ptr, i64, i64 } %t44) + store { ptr, i64, i64 } %t44, ptr %a45 + call void @finch_str_drop(ptr %a45) + call void @finch_str_drop(ptr %a11) + call void @finch_str_drop(ptr %a10) + call void @finch_str_drop(ptr %a7) ret void } @@ -26476,85 +30921,115 @@ entry: %a9 = alloca { ptr, i64, i64 }, align 16 %a10 = alloca { ptr, i64, i64 }, align 16 %a11 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 + %a12 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + %a16 = alloca { ptr, i64, i64 }, align 16 %a19 = 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 %a23 = 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 %a29 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 + %a30 = alloca { ptr, i64, i64 }, align 16 %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 %a36 = alloca { ptr, i64, i64 }, align 16 %a37 = alloca { ptr, i64, i64 }, align 16 %a38 = 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 %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 + %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 + %a54 = alloca { ptr, i64, i64 }, align 16 + %a57 = alloca { ptr, i64, i64 }, align 16 + %a58 = 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 store ptr %p0, ptr %a1 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.1619, i64 31, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.1688, 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.1620, i64 3, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.1689, 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.1621, 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.1622, 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.1623, 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.1624, 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.1625, i64 6, i64 0 }, ptr %a38 + store { ptr, i64, i64 } %t8, ptr %a12 + call void @finch_str_drop(ptr %a12) + %t13 = load { ptr, i64, i64 }, ptr %a9 + %t14 = call { ptr, i64, i64 } @finch.gen.op(ptr %t3, { ptr, i64, i64 } %t13) + store { ptr, i64, i64 } %t13, ptr %a15 + call void @finch_str_drop(ptr %a15) + store { ptr, i64, i64 } %t14, ptr %a16 + %t17 = load ptr, ptr %a1 + %t18 = load { ptr, i64, i64 }, ptr %a16 + store { ptr, i64, i64 } { ptr @.str.1690, i64 12, 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.1691, i64 6, i64 0 }, ptr %a25 + call void @finch_str_concat(ptr %a23, ptr %a24, ptr %a25) + store { ptr, i64, i64 } %t22, ptr %a26 + call void @finch_str_drop(ptr %a26) + %t27 = load { ptr, i64, i64 }, ptr %a23 + %t28 = call { ptr, i64, i64 } @finch.gen.op(ptr %t17, { ptr, i64, i64 } %t27) + store { ptr, i64, i64 } %t27, ptr %a29 + call void @finch_str_drop(ptr %a29) + store { ptr, i64, i64 } %t28, ptr %a30 + %t31 = load ptr, ptr %a1 + %t32 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t31, { ptr, i64, i64 } { ptr @.str.1692, i64 0, i64 0 }) + store { ptr, i64, i64 } %t32, ptr %a33 + %t34 = load ptr, ptr %a1 + %t35 = load { ptr, i64, i64 }, ptr %a30 + store { ptr, i64, i64 } { ptr @.str.1693, i64 10, 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 - %t40 = load { ptr, i64, i64 }, ptr %a29 - store { ptr, i64, i64 } %t39, 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.1626, 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 - store { ptr, i64, i64 } %t48, 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 - %t54 = call { ptr, i64, i64 } @finch.gen.op(ptr %t30, { ptr, i64, i64 } %t53) - ret { ptr, i64, i64 } %t54 + store { ptr, i64, i64 } %t39, ptr %a41 + store { ptr, i64, i64 } { ptr @.str.1694, i64 6, i64 0 }, ptr %a42 + call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) + store { ptr, i64, i64 } %t39, ptr %a43 + call void @finch_str_drop(ptr %a43) + %t44 = load { ptr, i64, i64 }, ptr %a40 + %t45 = load { ptr, i64, i64 }, ptr %a33 + store { ptr, i64, i64 } %t44, ptr %a47 + store { ptr, i64, i64 } %t45, ptr %a48 + call void @finch_str_concat(ptr %a46, ptr %a47, ptr %a48) + store { ptr, i64, i64 } %t44, ptr %a49 + call void @finch_str_drop(ptr %a49) + %t50 = load { ptr, i64, i64 }, ptr %a46 + store { ptr, i64, i64 } %t50, ptr %a52 + store { ptr, i64, i64 } { ptr @.str.1695, i64 6, i64 0 }, ptr %a53 + call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) + store { ptr, i64, i64 } %t50, ptr %a54 + call void @finch_str_drop(ptr %a54) + %t55 = load { ptr, i64, i64 }, ptr %a51 + %t56 = load { ptr, i64, i64 }, ptr %a16 + store { ptr, i64, i64 } %t55, ptr %a58 + store { ptr, i64, i64 } %t56, ptr %a59 + call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) + store { ptr, i64, i64 } %t55, ptr %a60 + call void @finch_str_drop(ptr %a60) + %t61 = load { ptr, i64, i64 }, ptr %a57 + %t62 = call { ptr, i64, i64 } @finch.gen.op(ptr %t34, { ptr, i64, i64 } %t61) + store { ptr, i64, i64 } %t61, ptr %a63 + call void @finch_str_drop(ptr %a63) + call void @finch_str_drop(ptr %a33) + call void @finch_str_drop(ptr %a30) + call void @finch_str_drop(ptr %a16) + ret { ptr, i64, i64 } %t62 } define internal void @finch.gen.emitPrint(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, i1 %p3) { @@ -26566,118 +31041,155 @@ entry: %a7 = alloca { ptr, i64, i64 }, align 16 %a8 = alloca { ptr, i64, i64 }, align 16 %a10 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 + %a19 = alloca %S.ast.Type, 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 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 + %a22 = alloca { ptr, i64, i64 }, align 16 + %a23 = alloca { ptr, i64, i64 }, align 16 + %a25 = alloca { ptr, i64, i64 }, align 16 + %a34 = alloca %S.ast.Type, align 16 + %a35 = alloca { ptr, i64, i64 }, align 16 + %a36 = alloca { ptr, i64, i64 }, align 16 + %a37 = alloca { ptr, i64, i64 }, align 16 + %a38 = alloca { ptr, i64, i64 }, align 16 + %a40 = alloca { ptr, i64, i64 }, align 16 + %a49 = alloca %S.ast.Type, align 16 + %a50 = 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 %a55 = 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 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = 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 + %a70 = alloca { ptr, i64, i64 }, align 16 %a73 = alloca { ptr, i64, i64 }, align 16 %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 %a78 = alloca { ptr, i64, i64 }, align 16 %a79 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 + %a80 = alloca { ptr, i64, i64 }, align 16 + %a82 = alloca { ptr, i64, i64 }, align 16 + %a85 = alloca { ptr, i64, i64 }, align 16 + %a86 = alloca { ptr, i64, i64 }, align 16 %a87 = alloca { ptr, i64, i64 }, align 16 - %a90 = 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 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a99 = 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 %a103 = alloca { ptr, i64, i64 }, align 16 %a104 = alloca { ptr, i64, i64 }, align 16 %a105 = 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 %a110 = 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 %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = 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 %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = 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 %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 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = 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 - %a139 = alloca { ptr, i64, i64 }, align 16 + %a138 = alloca { ptr, i64, i64 }, align 16 %a140 = alloca { ptr, i64, i64 }, align 16 %a141 = alloca { ptr, i64, i64 }, align 16 - %a143 = 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 + %a147 = alloca { ptr, i64, i64 }, align 16 %a148 = alloca { ptr, i64, i64 }, align 16 + %a150 = 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 %a156 = alloca { ptr, i64, i64 }, align 16 %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = 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 + %a164 = 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 + %a170 = alloca { ptr, i64, i64 }, align 16 %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 %a175 = 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 %a180 = 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 + %a184 = alloca { ptr, i64, i64 }, align 16 %a185 = alloca { ptr, i64, i64 }, align 16 %a186 = 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 %a192 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 + %a194 = alloca { ptr, i64, i64 }, align 16 %a197 = alloca { ptr, i64, i64 }, align 16 - %a200 = 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 - %a206 = alloca { ptr, i64, i64 }, align 16 + %a204 = 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 + %a210 = alloca { ptr, i64, i64 }, align 16 + %a212 = alloca { ptr, i64, i64 }, align 16 + %a214 = alloca { ptr, i64, i64 }, align 16 + %a215 = alloca { ptr, i64, i64 }, align 16 + %a220 = alloca { ptr, i64, i64 }, align 16 + %a221 = alloca { ptr, i64, i64 }, align 16 + %a222 = 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 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 + %a227 = alloca { ptr, i64, i64 }, align 16 %a230 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 + %a231 = alloca { ptr, i64, i64 }, align 16 %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 + %a237 = alloca { ptr, i64, i64 }, align 16 + %a240 = 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 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 + %a262 = 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 + %a268 = alloca { ptr, i64, i64 }, align 16 + %a269 = alloca { ptr, i64, i64 }, align 16 + %a271 = alloca { ptr, i64, i64 }, align 16 + %a277 = alloca { ptr, i64, i64 }, align 16 + %a278 = alloca { ptr, i64, i64 }, align 16 + %a284 = 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 + %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 + %a303 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store { ptr, i64, i64 } %p1, ptr %a2 store %S.ast.Type %p2, ptr %a3 @@ -26690,340 +31202,427 @@ 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 %then2655, label %else2656 -then2655: + br i1 %t12, label %then2829, label %else2830 +then2829: %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.1629, i64 3, i64 0 }) + %t17 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1698, 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.1628, 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.1627, i64 4, i64 0 }, { ptr, i64, i64 } %t22) - br label %endif2657 -else2656: - %t23 = load %S.ast.Type, ptr %a3 - %t24 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t23) - br i1 %t24, label %then2658, label %else2659 -then2658: - %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.1632, 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.1631, 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.1630, i64 4, i64 0 }, { ptr, i64, i64 } %t34) - br label %endif2660 -else2659: - %t35 = load %S.ast.Type, ptr %a3 - %t36 = call i1 @finch.gen.isFloat(%S.ast.Type %t35) - br i1 %t36, label %then2661, label %else2662 -then2661: - %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.1635, 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.1634, 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.1633, i64 2, i64 0 }, { ptr, i64, i64 } %t46) - br label %endif2663 -else2662: - %t47 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t47, ptr %a48 - store { ptr, i64, i64 } { ptr @.str.1636, 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 %then2664, label %else2665 -then2664: - %t52 = load ptr, ptr %a1 - %t53 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1637, 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.1638, 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 %then2667, label %else2668 -then2667: - %t65 = load ptr, ptr %a1 + store %S.ast.Type %t17, ptr %a19 + call void @finch.drop.S_ast_Type(ptr %a19) + store { ptr, i64, i64 } { ptr @.str.1697, i64 4, i64 0 }, ptr %a21 + store { ptr, i64, i64 } %t18, ptr %a22 + call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22) + store { ptr, i64, i64 } %t18, ptr %a23 + call void @finch_str_drop(ptr %a23) + %t24 = load { ptr, i64, i64 }, ptr %a20 + call void @finch.gen.printf(ptr %t13, { ptr, i64, i64 } { ptr @.str.1696, i64 4, i64 0 }, { ptr, i64, i64 } %t24) + store { ptr, i64, i64 } %t24, ptr %a25 + call void @finch_str_drop(ptr %a25) + br label %endif2831 +else2830: + %t26 = load %S.ast.Type, ptr %a3 + %t27 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t26) + br i1 %t27, label %then2832, label %else2833 +then2832: + %t28 = load ptr, ptr %a1 + %t29 = load ptr, ptr %a1 + %t30 = load { ptr, i64, i64 }, ptr %a2 + %t31 = load %S.ast.Type, ptr %a3 + %t32 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1701, i64 3, i64 0 }) + %t33 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t29, { ptr, i64, i64 } %t30, %S.ast.Type %t31, %S.ast.Type %t32) + store %S.ast.Type %t32, ptr %a34 + call void @finch.drop.S_ast_Type(ptr %a34) + store { ptr, i64, i64 } { ptr @.str.1700, i64 4, i64 0 }, ptr %a36 + store { ptr, i64, i64 } %t33, ptr %a37 + call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) + store { ptr, i64, i64 } %t33, ptr %a38 + call void @finch_str_drop(ptr %a38) + %t39 = load { ptr, i64, i64 }, ptr %a35 + call void @finch.gen.printf(ptr %t28, { ptr, i64, i64 } { ptr @.str.1699, i64 4, i64 0 }, { ptr, i64, i64 } %t39) + store { ptr, i64, i64 } %t39, ptr %a40 + call void @finch_str_drop(ptr %a40) + br label %endif2834 +else2833: + %t41 = load %S.ast.Type, ptr %a3 + %t42 = call i1 @finch.gen.isFloat(%S.ast.Type %t41) + br i1 %t42, label %then2835, label %else2836 +then2835: + %t43 = load ptr, ptr %a1 + %t44 = load ptr, ptr %a1 + %t45 = load { ptr, i64, i64 }, ptr %a2 + %t46 = load %S.ast.Type, ptr %a3 + %t47 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1704, i64 5, i64 0 }) + %t48 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t44, { ptr, i64, i64 } %t45, %S.ast.Type %t46, %S.ast.Type %t47) + store %S.ast.Type %t47, ptr %a49 + call void @finch.drop.S_ast_Type(ptr %a49) + store { ptr, i64, i64 } { ptr @.str.1703, i64 7, i64 0 }, ptr %a51 + store { ptr, i64, i64 } %t48, ptr %a52 + call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) + store { ptr, i64, i64 } %t48, ptr %a53 + call void @finch_str_drop(ptr %a53) + %t54 = load { ptr, i64, i64 }, ptr %a50 + call void @finch.gen.printf(ptr %t43, { ptr, i64, i64 } { ptr @.str.1702, i64 2, i64 0 }, { ptr, i64, i64 } %t54) + store { ptr, i64, i64 } %t54, ptr %a55 + call void @finch_str_drop(ptr %a55) + br label %endif2837 +else2836: + %t56 = load { ptr, i64, i64 }, ptr %a10 + store { ptr, i64, i64 } %t56, ptr %a57 + store { ptr, i64, i64 } { ptr @.str.1705, i64 4, i64 0 }, ptr %a58 + %t59 = call i32 @finch_str_eq(ptr %a57, ptr %a58) + %t60 = icmp ne i32 %t59, 0 + br i1 %t60, label %then2838, label %else2839 +then2838: + %t61 = load ptr, ptr %a1 + %t62 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } { ptr @.str.1706, i64 8, 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 } { ptr @.str.1640, i64 4, i64 0 }, ptr %a68 - store { ptr, i64, i64 } %t66, ptr %a69 + store { ptr, i64, i64 } %t66, ptr %a68 + store { ptr, i64, i64 } { ptr @.str.1707, i64 7, 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.printf(ptr %t65, { ptr, i64, i64 } { ptr @.str.1639, i64 4, i64 0 }, { ptr, i64, i64 } %t70) - br label %endif2669 -else2668: - %t71 = load ptr, ptr %a1 - %t72 = load { ptr, i64, i64 }, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.1642, 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.1641, i64 2, i64 0 }, { ptr, i64, i64 } %t76) - br label %endif2669 -endif2669: - br label %endif2666 -else2665: - %t77 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t77, ptr %a78 - store { ptr, i64, i64 } { ptr @.str.1643, 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 %then2670, label %else2671 -then2670: - %t82 = load ptr, ptr %a1 - %t83 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t82, { ptr, i64, i64 } { ptr @.str.1644, 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.1645, 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.1646, 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.1647, 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 - store { ptr, i64, i64 } %t97, 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.1648, i64 6, i64 0 }, ptr %a105 + store { ptr, i64, i64 } %t66, ptr %a70 + call void @finch_str_drop(ptr %a70) + %t71 = load { ptr, i64, i64 }, ptr %a67 + %t72 = call { ptr, i64, i64 } @finch.gen.op(ptr %t61, { ptr, i64, i64 } %t71) + store { ptr, i64, i64 } %t71, ptr %a73 + call void @finch_str_drop(ptr %a73) + store { ptr, i64, i64 } %t72, ptr %a74 + %t75 = load i1, ptr %a4 + br i1 %t75, label %then2841, label %else2842 +then2841: + %t76 = load ptr, ptr %a1 + %t77 = load { ptr, i64, i64 }, ptr %a74 + store { ptr, i64, i64 } { ptr @.str.1709, i64 4, 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 + call void @finch.gen.printf(ptr %t76, { ptr, i64, i64 } { ptr @.str.1708, i64 4, i64 0 }, { ptr, i64, i64 } %t81) + store { ptr, i64, i64 } %t81, ptr %a82 + call void @finch_str_drop(ptr %a82) + br label %endif2843 +else2842: + %t83 = load ptr, ptr %a1 + %t84 = load { ptr, i64, i64 }, ptr %a74 + store { ptr, i64, i64 } { ptr @.str.1711, i64 4, 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 + call void @finch.gen.printf(ptr %t83, { ptr, i64, i64 } { ptr @.str.1710, i64 2, i64 0 }, { ptr, i64, i64 } %t88) + store { ptr, i64, i64 } %t88, ptr %a89 + call void @finch_str_drop(ptr %a89) + br label %endif2843 +endif2843: + call void @finch_str_drop(ptr %a74) + br label %endif2840 +else2839: + %t90 = load { ptr, i64, i64 }, ptr %a10 + store { ptr, i64, i64 } %t90, ptr %a91 + store { ptr, i64, i64 } { ptr @.str.1712, 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 %then2844, label %else2845 +then2844: + %t95 = load ptr, ptr %a1 + %t96 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t95, { ptr, i64, i64 } { ptr @.str.1713, i64 4, i64 0 }) + store { ptr, i64, i64 } %t96, ptr %a97 + %t98 = load ptr, ptr %a1 + %t99 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t98, { ptr, i64, i64 } { ptr @.str.1714, i64 5, i64 0 }) + store { ptr, i64, i64 } %t99, ptr %a100 + %t101 = load ptr, ptr %a1 + %t102 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } { ptr @.str.1715, i64 10, 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 - %t107 = load { ptr, i64, i64 }, ptr %a87 - store { ptr, i64, i64 } %t106, 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 - %t112 = call { ptr, i64, i64 } @finch.gen.op(ptr %t88, { ptr, i64, i64 } %t111) - 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.1650, 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.1649, i64 2, i64 0 }, { ptr, i64, i64 } %t119) - br label %endif2672 -else2671: - %t120 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t120, ptr %a121 - store { ptr, i64, i64 } { ptr @.str.1651, 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 %then2673, label %else2674 -then2673: - %t125 = load ptr, ptr %a1 - %t126 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1652, 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.1653, 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.1654, 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.1655, 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) - store { ptr, i64, i64 } %t147, ptr %a148 - %t149 = load ptr, ptr %a1 - %t150 = load { ptr, i64, i64 }, ptr %a2 - %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 %then2676, label %else2677 -then2676: - %t154 = load ptr, ptr %a1 - %t155 = load { ptr, i64, i64 }, ptr %a148 - store { ptr, i64, i64 } { ptr @.str.1657, 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.1658, i64 6, i64 0 }, ptr %a162 + store { ptr, i64, i64 } %t106, ptr %a108 + store { ptr, i64, i64 } { ptr @.str.1716, i64 6, i64 0 }, ptr %a109 + call void @finch_str_concat(ptr %a107, ptr %a108, ptr %a109) + store { ptr, i64, i64 } %t106, ptr %a110 + call void @finch_str_drop(ptr %a110) + %t111 = load { ptr, i64, i64 }, ptr %a107 + %t112 = load { ptr, i64, i64 }, ptr %a97 + store { ptr, i64, i64 } %t111, ptr %a114 + store { ptr, i64, i64 } %t112, ptr %a115 + call void @finch_str_concat(ptr %a113, ptr %a114, ptr %a115) + store { ptr, i64, i64 } %t111, ptr %a116 + call void @finch_str_drop(ptr %a116) + %t117 = load { ptr, i64, i64 }, ptr %a113 + store { ptr, i64, i64 } %t117, ptr %a119 + store { ptr, i64, i64 } { ptr @.str.1717, i64 6, i64 0 }, ptr %a120 + call void @finch_str_concat(ptr %a118, ptr %a119, ptr %a120) + store { ptr, i64, i64 } %t117, ptr %a121 + call void @finch_str_drop(ptr %a121) + %t122 = load { ptr, i64, i64 }, ptr %a118 + %t123 = load { ptr, i64, i64 }, ptr %a100 + store { ptr, i64, i64 } %t122, ptr %a125 + store { ptr, i64, i64 } %t123, ptr %a126 + call void @finch_str_concat(ptr %a124, ptr %a125, ptr %a126) + store { ptr, i64, i64 } %t122, ptr %a127 + call void @finch_str_drop(ptr %a127) + %t128 = load { ptr, i64, i64 }, ptr %a124 + %t129 = call { ptr, i64, i64 } @finch.gen.op(ptr %t101, { ptr, i64, i64 } %t128) + store { ptr, i64, i64 } %t128, ptr %a130 + call void @finch_str_drop(ptr %a130) + store { ptr, i64, i64 } %t129, ptr %a131 + %t132 = load ptr, ptr %a1 + %t133 = load { ptr, i64, i64 }, ptr %a131 + store { ptr, i64, i64 } { ptr @.str.1719, i64 4, 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 + call void @finch.gen.printf(ptr %t132, { ptr, i64, i64 } { ptr @.str.1718, i64 2, i64 0 }, { ptr, i64, i64 } %t137) + store { ptr, i64, i64 } %t137, ptr %a138 + call void @finch_str_drop(ptr %a138) + call void @finch_str_drop(ptr %a131) + call void @finch_str_drop(ptr %a100) + call void @finch_str_drop(ptr %a97) + br label %endif2846 +else2845: + %t139 = load { ptr, i64, i64 }, ptr %a10 + store { ptr, i64, i64 } %t139, ptr %a140 + store { ptr, i64, i64 } { ptr @.str.1720, 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 %then2847, label %else2848 +then2847: + %t144 = load ptr, ptr %a1 + %t145 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } { ptr @.str.1721, i64 31, 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.1722, i64 3, i64 0 }, ptr %a152 + call void @finch_str_concat(ptr %a150, ptr %a151, ptr %a152) + store { ptr, i64, i64 } %t149, ptr %a153 + call void @finch_str_drop(ptr %a153) + %t154 = load { ptr, i64, i64 }, ptr %a150 + %t155 = call { ptr, i64, i64 } @finch.gen.op(ptr %t144, { ptr, i64, i64 } %t154) + store { ptr, i64, i64 } %t154, ptr %a156 + call void @finch_str_drop(ptr %a156) + store { ptr, i64, i64 } %t155, ptr %a157 + %t158 = load ptr, ptr %a1 + %t159 = load { ptr, i64, i64 }, ptr %a157 + store { ptr, i64, i64 } { ptr @.str.1723, i64 10, i64 0 }, ptr %a161 + store { ptr, i64, i64 } %t159, 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 - store { ptr, i64, i64 } %t163, 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 - call void @finch.gen.printf(ptr %t154, { ptr, i64, i64 } { ptr @.str.1656, i64 6, i64 0 }, { ptr, i64, i64 } %t168) - br label %endif2678 -else2677: - %t169 = load ptr, ptr %a1 - %t170 = load { ptr, i64, i64 }, ptr %a148 - store { ptr, i64, i64 } { ptr @.str.1660, 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.1661, 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 + store { ptr, i64, i64 } %t163, ptr %a165 + store { ptr, i64, i64 } { ptr @.str.1724, i64 7, i64 0 }, ptr %a166 + call void @finch_str_concat(ptr %a164, ptr %a165, ptr %a166) + store { ptr, i64, i64 } %t163, ptr %a167 + call void @finch_str_drop(ptr %a167) + %t168 = load { ptr, i64, i64 }, ptr %a164 + %t169 = call { ptr, i64, i64 } @finch.gen.op(ptr %t158, { ptr, i64, i64 } %t168) + store { ptr, i64, i64 } %t168, ptr %a170 + call void @finch_str_drop(ptr %a170) + store { ptr, i64, i64 } %t169, ptr %a171 + %t172 = load ptr, ptr %a1 + %t173 = load { ptr, i64, i64 }, ptr %a2 + %t174 = call { ptr, i64, i64 } @finch.gen.cstr(ptr %t172, { ptr, i64, i64 } %t173) + store { ptr, i64, i64 } %t174, ptr %a175 + %t176 = load i1, ptr %a4 + br i1 %t176, label %then2850, label %else2851 +then2850: + %t177 = load ptr, ptr %a1 + %t178 = load { ptr, i64, i64 }, ptr %a171 + store { ptr, i64, i64 } { ptr @.str.1726, i64 4, i64 0 }, ptr %a180 store { ptr, i64, i64 } %t178, 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 - call void @finch.gen.printf(ptr %t169, { ptr, i64, i64 } { ptr @.str.1659, i64 4, i64 0 }, { ptr, i64, i64 } %t183) - br label %endif2678 -endif2678: - br label %endif2675 -else2674: - %t184 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t184, ptr %a185 - store { ptr, i64, i64 } { ptr @.str.1662, 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 %then2679, label %else2680 -then2679: - %t189 = load ptr, ptr %a1 - %t190 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1663, 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.1664, 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.1665, 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.1666, 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.1667, i64 8, i64 0 }) - store { ptr, i64, i64 } %t208, ptr %a209 - %t210 = load ptr, ptr %a1 - %t211 = load { ptr, i64, i64 }, ptr %a200 - %t212 = load { ptr, i64, i64 }, ptr %a203 - %t213 = load { ptr, i64, i64 }, ptr %a206 - call void @finch.gen.condBr(ptr %t210, { ptr, i64, i64 } %t211, { ptr, i64, i64 } %t212, { ptr, i64, i64 } %t213) - %t214 = load ptr, ptr %a1 - %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.1668, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1669, 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) - %t219 = load ptr, ptr %a1 - %t220 = load { ptr, i64, i64 }, ptr %a206 - call void @finch.gen.label(ptr %t219, { ptr, i64, i64 } %t220) - %t221 = load ptr, ptr %a1 - %t222 = load ptr, ptr %a1 - %t223 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1672, i64 13, i64 0 }, ptr %a225 - store { ptr, i64, i64 } %t223, ptr %a226 + 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.1727, i64 6, i64 0 }, ptr %a185 + call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) + store { ptr, i64, i64 } %t182, ptr %a186 + call void @finch_str_drop(ptr %a186) + %t187 = load { ptr, i64, i64 }, ptr %a183 + %t188 = load { ptr, i64, i64 }, ptr %a175 + store { ptr, i64, i64 } %t187, ptr %a190 + store { ptr, i64, i64 } %t188, ptr %a191 + call void @finch_str_concat(ptr %a189, ptr %a190, ptr %a191) + store { ptr, i64, i64 } %t187, ptr %a192 + call void @finch_str_drop(ptr %a192) + %t193 = load { ptr, i64, i64 }, ptr %a189 + call void @finch.gen.printf(ptr %t177, { ptr, i64, i64 } { ptr @.str.1725, i64 6, i64 0 }, { ptr, i64, i64 } %t193) + store { ptr, i64, i64 } %t193, ptr %a194 + call void @finch_str_drop(ptr %a194) + br label %endif2852 +else2851: + %t195 = load ptr, ptr %a1 + %t196 = load { ptr, i64, i64 }, ptr %a171 + store { ptr, i64, i64 } { ptr @.str.1729, i64 4, 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.1730, i64 6, i64 0 }, ptr %a203 + call void @finch_str_concat(ptr %a201, ptr %a202, ptr %a203) + store { ptr, i64, i64 } %t200, ptr %a204 + call void @finch_str_drop(ptr %a204) + %t205 = load { ptr, i64, i64 }, ptr %a201 + %t206 = load { ptr, i64, i64 }, ptr %a175 + store { ptr, i64, i64 } %t205, ptr %a208 + store { ptr, i64, i64 } %t206, ptr %a209 + call void @finch_str_concat(ptr %a207, ptr %a208, ptr %a209) + store { ptr, i64, i64 } %t205, ptr %a210 + call void @finch_str_drop(ptr %a210) + %t211 = load { ptr, i64, i64 }, ptr %a207 + call void @finch.gen.printf(ptr %t195, { ptr, i64, i64 } { ptr @.str.1728, i64 4, i64 0 }, { ptr, i64, i64 } %t211) + store { ptr, i64, i64 } %t211, ptr %a212 + call void @finch_str_drop(ptr %a212) + br label %endif2852 +endif2852: + call void @finch_str_drop(ptr %a175) + call void @finch_str_drop(ptr %a171) + call void @finch_str_drop(ptr %a157) + br label %endif2849 +else2848: + %t213 = load { ptr, i64, i64 }, ptr %a10 + store { ptr, i64, i64 } %t213, ptr %a214 + store { ptr, i64, i64 } { ptr @.str.1731, i64 3, i64 0 }, ptr %a215 + %t216 = call i32 @finch_str_eq(ptr %a214, ptr %a215) + %t217 = icmp ne i32 %t216, 0 + br i1 %t217, label %then2853, label %else2854 +then2853: + %t218 = load ptr, ptr %a1 + %t219 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } { ptr @.str.1732, i64 12, i64 0 }, ptr %a221 + store { ptr, i64, i64 } %t219, ptr %a222 + 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.1733, i64 6, i64 0 }, 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.1673, 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.1671, 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.1670, 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 %endif2681 -else2680: - %t241 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t241, ptr %a242 - store { ptr, i64, i64 } { ptr @.str.1674, 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 %then2682, label %else2683 -then2682: - %t246 = load ptr, ptr %a1 - call void @finch.gen.printf(ptr %t246, { ptr, i64, i64 } { ptr @.str.1675, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1676, i64 0, i64 0 }) - br label %endif2684 -else2683: + store { ptr, i64, i64 } %t223, ptr %a227 + call void @finch_str_drop(ptr %a227) + %t228 = load { ptr, i64, i64 }, ptr %a224 + %t229 = call { ptr, i64, i64 } @finch.gen.op(ptr %t218, { ptr, i64, i64 } %t228) + store { ptr, i64, i64 } %t228, ptr %a230 + call void @finch_str_drop(ptr %a230) + store { ptr, i64, i64 } %t229, ptr %a231 + %t232 = load ptr, ptr %a1 + %t233 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t232, { ptr, i64, i64 } { ptr @.str.1734, i64 8, i64 0 }) + store { ptr, i64, i64 } %t233, ptr %a234 + %t235 = load ptr, ptr %a1 + %t236 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t235, { ptr, i64, i64 } { ptr @.str.1735, i64 8, i64 0 }) + store { ptr, i64, i64 } %t236, ptr %a237 + %t238 = load ptr, ptr %a1 + %t239 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t238, { ptr, i64, i64 } { ptr @.str.1736, i64 8, i64 0 }) + store { ptr, i64, i64 } %t239, ptr %a240 + %t241 = load ptr, ptr %a1 + %t242 = load { ptr, i64, i64 }, ptr %a231 + %t243 = load { ptr, i64, i64 }, ptr %a234 + %t244 = load { ptr, i64, i64 }, ptr %a237 + call void @finch.gen.condBr(ptr %t241, { ptr, i64, i64 } %t242, { ptr, i64, i64 } %t243, { ptr, i64, i64 } %t244) + %t245 = load ptr, ptr %a1 + %t246 = load { ptr, i64, i64 }, ptr %a234 + call void @finch.gen.label(ptr %t245, { ptr, i64, i64 } %t246) %t247 = load ptr, ptr %a1 - %t248 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t247, { ptr, i64, i64 } { ptr @.str.1677, i64 17, i64 0 }) - store { ptr, i64, i64 } %t248, ptr %a249 + call void @finch.gen.printf(ptr %t247, { ptr, i64, i64 } { ptr @.str.1737, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1738, i64 0, i64 0 }) + %t248 = load ptr, ptr %a1 + %t249 = load { ptr, i64, i64 }, ptr %a240 + call void @finch.gen.br(ptr %t248, { ptr, i64, i64 } %t249) %t250 = load ptr, ptr %a1 - %t251 = load { ptr, i64, i64 }, ptr %a249 - call void @finch.gen.store(ptr %t250, { ptr, i64, i64 } { ptr @.str.1678, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.1679, i64 15, i64 0 }, { ptr, i64, i64 } %t251) + %t251 = load { ptr, i64, i64 }, ptr %a237 + call void @finch.gen.label(ptr %t250, { ptr, i64, i64 } %t251) %t252 = load ptr, ptr %a1 - %t253 = load { ptr, i64, i64 }, ptr %a249 + %t253 = load ptr, ptr %a1 %t254 = load { ptr, i64, i64 }, ptr %a2 - %t255 = load %S.ast.Type, ptr %a3 - %t256 = load i1, ptr %a4 - 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.1680, i64 31, i64 0 }, ptr %a260 - store { ptr, i64, i64 } %t258, ptr %a261 + store { ptr, i64, i64 } { ptr @.str.1741, i64 13, 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.1742, i64 7, i64 0 }, 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.1681, 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 %endif2684 -endif2684: - br label %endif2681 -endif2681: - br label %endif2675 -endif2675: - br label %endif2672 -endif2672: - br label %endif2666 -endif2666: - br label %endif2663 -endif2663: - br label %endif2660 -endif2660: - br label %endif2657 -endif2657: + store { ptr, i64, i64 } %t258, ptr %a262 + call void @finch_str_drop(ptr %a262) + %t263 = load { ptr, i64, i64 }, ptr %a259 + %t264 = call { ptr, i64, i64 } @finch.gen.op(ptr %t253, { ptr, i64, i64 } %t263) + store { ptr, i64, i64 } %t263, ptr %a265 + call void @finch_str_drop(ptr %a265) + store { ptr, i64, i64 } { ptr @.str.1740, i64 4, i64 0 }, ptr %a267 + store { ptr, i64, i64 } %t264, ptr %a268 + call void @finch_str_concat(ptr %a266, ptr %a267, ptr %a268) + store { ptr, i64, i64 } %t264, ptr %a269 + call void @finch_str_drop(ptr %a269) + %t270 = load { ptr, i64, i64 }, ptr %a266 + call void @finch.gen.printf(ptr %t252, { ptr, i64, i64 } { ptr @.str.1739, i64 6, i64 0 }, { ptr, i64, i64 } %t270) + store { ptr, i64, i64 } %t270, ptr %a271 + call void @finch_str_drop(ptr %a271) + %t272 = load ptr, ptr %a1 + %t273 = load { ptr, i64, i64 }, ptr %a240 + call void @finch.gen.br(ptr %t272, { ptr, i64, i64 } %t273) + %t274 = load ptr, ptr %a1 + %t275 = load { ptr, i64, i64 }, ptr %a240 + call void @finch.gen.label(ptr %t274, { ptr, i64, i64 } %t275) + call void @finch_str_drop(ptr %a240) + call void @finch_str_drop(ptr %a237) + call void @finch_str_drop(ptr %a234) + call void @finch_str_drop(ptr %a231) + br label %endif2855 +else2854: + %t276 = load { ptr, i64, i64 }, ptr %a10 + store { ptr, i64, i64 } %t276, ptr %a277 + store { ptr, i64, i64 } { ptr @.str.1743, i64 4, i64 0 }, ptr %a278 + %t279 = call i32 @finch_str_eq(ptr %a277, ptr %a278) + %t280 = icmp ne i32 %t279, 0 + br i1 %t280, label %then2856, label %else2857 +then2856: + %t281 = load ptr, ptr %a1 + call void @finch.gen.printf(ptr %t281, { ptr, i64, i64 } { ptr @.str.1744, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1745, i64 0, i64 0 }) + br label %endif2858 +else2857: + %t282 = load ptr, ptr %a1 + %t283 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t282, { ptr, i64, i64 } { ptr @.str.1746, i64 17, 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.1747, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.1748, i64 15, i64 0 }, { ptr, i64, i64 } %t286) + %t287 = load ptr, ptr %a1 + %t288 = load { ptr, i64, i64 }, ptr %a284 + %t289 = load { ptr, i64, i64 }, ptr %a2 + %t290 = load %S.ast.Type, ptr %a3 + %t291 = load i1, ptr %a4 + call void @finch.gen.emitFormat(ptr %t287, { ptr, i64, i64 } %t288, { ptr, i64, i64 } %t289, %S.ast.Type %t290, i1 %t291) + %t292 = load ptr, ptr %a1 + %t293 = load { ptr, i64, i64 }, ptr %a284 + store { ptr, i64, i64 } { ptr @.str.1749, i64 31, i64 0 }, ptr %a295 + store { ptr, i64, i64 } %t293, ptr %a296 + 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.1750, i64 1, i64 0 }, ptr %a300 + call void @finch_str_concat(ptr %a298, ptr %a299, ptr %a300) + store { ptr, i64, i64 } %t297, ptr %a301 + call void @finch_str_drop(ptr %a301) + %t302 = load { ptr, i64, i64 }, ptr %a298 + call void @finch.gen.emit(ptr %t292, { ptr, i64, i64 } %t302) + store { ptr, i64, i64 } %t302, ptr %a303 + call void @finch_str_drop(ptr %a303) + call void @finch_str_drop(ptr %a284) + br label %endif2858 +endif2858: + br label %endif2855 +endif2855: + br label %endif2849 +endif2849: + br label %endif2846 +endif2846: + br label %endif2840 +endif2840: + br label %endif2837 +endif2837: + br label %endif2834 +endif2834: + br label %endif2831 +endif2831: + call void @finch_str_drop(ptr %a10) ret void } @@ -27038,56 +31637,80 @@ entry: %a10 = alloca { ptr, i64, i64 }, align 16 %a11 = alloca { ptr, i64, i64 }, align 16 %a12 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 + %a13 = 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 %a21 = 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 + %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 %a33 = alloca { ptr, i64, i64 }, align 16 %a34 = 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 + %a41 = alloca { ptr, i64, i64 }, align 16 + %a42 = alloca { ptr, i64, i64 }, align 16 + %a44 = 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 %t4 = load ptr, ptr %a1 %t5 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1682, i64 29, i64 0 }, ptr %a7 + store { ptr, i64, i64 } { ptr @.str.1751, 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.1683, i64 6, i64 0 }, ptr %a12 + store { ptr, i64, i64 } { ptr @.str.1752, 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 - %t15 = load { ptr, i64, i64 }, ptr %a3 - %t16 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t14, { ptr, i64, i64 } %t15) - store { ptr, i64, i64 } %t13, 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.1684, 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 - %t26 = load i64, ptr %t25 - call void @finch_str_from_int(ptr %a27, i64 %t26) - %t28 = load { ptr, i64, i64 }, ptr %a27 - store { ptr, i64, i64 } %t24, 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.1685, i64 1, i64 0 }, ptr %a35 + store { ptr, i64, i64 } %t9, ptr %a13 + call void @finch_str_drop(ptr %a13) + %t14 = load { ptr, i64, i64 }, ptr %a10 + %t15 = load ptr, ptr %a1 + %t16 = load { ptr, i64, i64 }, ptr %a3 + %t17 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t15, { ptr, i64, i64 } %t16) + store { ptr, i64, i64 } %t14, ptr %a19 + store { ptr, i64, i64 } %t17, ptr %a20 + call void @finch_str_concat(ptr %a18, ptr %a19, ptr %a20) + store { ptr, i64, i64 } %t14, ptr %a21 + call void @finch_str_drop(ptr %a21) + store { ptr, i64, i64 } %t17, ptr %a22 + call void @finch_str_drop(ptr %a22) + %t23 = load { ptr, i64, i64 }, ptr %a18 + store { ptr, i64, i64 } %t23, ptr %a25 + store { ptr, i64, i64 } { ptr @.str.1753, i64 6, i64 0 }, ptr %a26 + call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) + store { ptr, i64, i64 } %t23, ptr %a27 + call void @finch_str_drop(ptr %a27) + %t28 = load { ptr, i64, i64 }, ptr %a24 + %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 + %t30 = load i64, ptr %t29 + call void @finch_str_from_int(ptr %a31, i64 %t30) + %t32 = load { ptr, i64, i64 }, ptr %a31 + store { ptr, i64, i64 } %t28, ptr %a34 + store { ptr, i64, i64 } %t32, 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) + store { ptr, i64, i64 } %t28, ptr %a36 + call void @finch_str_drop(ptr %a36) + store { ptr, i64, i64 } %t32, ptr %a37 + call void @finch_str_drop(ptr %a37) + %t38 = load { ptr, i64, i64 }, ptr %a33 + store { ptr, i64, i64 } %t38, ptr %a40 + store { ptr, i64, i64 } { ptr @.str.1754, i64 1, i64 0 }, ptr %a41 + call void @finch_str_concat(ptr %a39, ptr %a40, ptr %a41) + store { ptr, i64, i64 } %t38, ptr %a42 + call void @finch_str_drop(ptr %a42) + %t43 = load { ptr, i64, i64 }, ptr %a39 + call void @finch.gen.emit(ptr %t4, { ptr, i64, i64 } %t43) + store { ptr, i64, i64 } %t43, ptr %a44 + call void @finch_str_drop(ptr %a44) ret void } @@ -27102,144 +31725,197 @@ entry: %a9 = alloca { ptr, i64, i64 }, align 16 %a11 = alloca { ptr, i64, i64 }, align 16 %a12 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 + %a15 = 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 - %a23 = alloca { ptr, i64, i64 }, align 16 %a24 = 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 + %a25 = alloca { ptr, i64, i64 }, align 16 + %a26 = alloca { ptr, i64, i64 }, align 16 + %a27 = alloca { ptr, i64, i64 }, align 16 + %a34 = alloca %S.ast.Type, align 16 %a35 = alloca { ptr, i64, i64 }, align 16 %a36 = alloca { ptr, i64, i64 }, align 16 %a37 = alloca { ptr, i64, i64 }, align 16 + %a38 = 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 %a44 = 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 + %a46 = 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 + %a55 = 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 + %a65 = alloca %S.ast.Type, align 16 + %a66 = 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 %a70 = 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 - %a81 = alloca { ptr, i64, i64 }, align 16 + %a75 = alloca { ptr, i64, i64 }, align 16 + %a77 = alloca { ptr, i64, i64 }, align 16 %a82 = alloca { ptr, i64, i64 }, align 16 %a83 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 + %a84 = alloca { ptr, i64, i64 }, align 16 %a86 = alloca { ptr, i64, i64 }, align 16 %a87 = 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 + %a88 = alloca { ptr, i64, i64 }, align 16 + %a89 = alloca { ptr, i64, i64 }, align 16 + %a96 = alloca %S.ast.Type, align 16 %a97 = 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 %a101 = 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 %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 + %a108 = alloca { ptr, i64, i64 }, align 16 %a110 = alloca { ptr, i64, i64 }, align 16 %a111 = 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 + %a117 = 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 + %a121 = 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 %a129 = 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 %a133 = alloca { ptr, i64, i64 }, align 16 %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 + %a137 = 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 - %a141 = alloca { ptr, i64, i64 }, align 16 + %a142 = alloca { ptr, i64, i64 }, align 16 %a143 = alloca { ptr, i64, i64 }, align 16 %a144 = alloca { ptr, i64, i64 }, align 16 %a145 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 + %a147 = alloca { ptr, i64, i64 }, align 16 %a149 = alloca { ptr, i64, i64 }, align 16 %a150 = alloca { ptr, i64, i64 }, align 16 - %a152 = 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 + %a156 = alloca { ptr, i64, i64 }, align 16 %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = 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 + %a159 = 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 %a168 = 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 + %a172 = alloca { ptr, i64, i64 }, align 16 %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca %S.ast.Type, align 16 - %a179 = alloca %S.ast.Type, align 16 + %a176 = 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 + %a180 = 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 - %a187 = 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 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 + %a190 = alloca { ptr, i64, i64 }, align 16 + %a191 = alloca { ptr, i64, i64 }, align 16 %a196 = alloca { ptr, i64, i64 }, align 16 %a197 = alloca { ptr, i64, i64 }, align 16 %a198 = 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 - %a206 = alloca { ptr, i64, i64 }, align 16 + %a203 = alloca { ptr, i64, i64 }, align 16 %a207 = 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 - %a217 = alloca { ptr, i64, i64 }, align 16 + %a208 = alloca { ptr, i64, i64 }, align 16 + %a212 = alloca %S.ast.Type, align 16 + %a213 = alloca %S.ast.Type, align 16 + %a217 = alloca %S.gen.Val, align 16 %a218 = 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 %a222 = 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 %a226 = 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 + %a230 = 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 %a235 = 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 - %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 - %a245 = 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 - %a253 = alloca { ptr, i64, i64 }, align 16 %a254 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca %S.ast.Type, align 16 - %a259 = alloca %S.ast.Type, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 + %a255 = alloca { ptr, i64, i64 }, align 16 + %a256 = alloca { ptr, i64, i64 }, align 16 + %a258 = 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 %a264 = 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 - %a268 = 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 + %a274 = 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 + %a282 = 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 + %a290 = 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 + %a298 = alloca { ptr, i64, i64 }, align 16 + %a302 = alloca { ptr, i64, i64 }, align 16 + %a303 = alloca { ptr, i64, i64 }, align 16 + %a307 = alloca %S.ast.Type, align 16 + %a308 = alloca %S.ast.Type, align 16 + %a312 = alloca %S.gen.Val, align 16 + %a313 = 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 + %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 + %a322 = alloca { ptr, i64, i64 }, align 16 + %a324 = 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 @@ -27251,328 +31927,437 @@ 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.1686, i64 1, i64 0 }, ptr %a12 + store { ptr, i64, i64 } { ptr @.str.1755, i64 1, i64 0 }, ptr %a12 %t13 = load i1, ptr %a5 - br i1 %t13, label %then2685, label %endif2687 -then2685: - store { ptr, i64, i64 } { ptr @.str.1687, i64 1, i64 0 }, ptr %a12 - br label %endif2687 -endif2687: - %t14 = load %S.ast.Type, ptr %a4 - %t15 = call i1 @finch.gen.isSigned(%S.ast.Type %t14) - br i1 %t15, label %then2688, label %else2689 -then2688: - %t16 = load ptr, ptr %a1 - %t17 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1688, 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.1689, 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.1690, 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.1691, i64 1, i64 0 }, ptr %a37 + br i1 %t13, label %then2859, label %endif2861 +then2859: + %t14 = load { ptr, i64, i64 }, ptr %a12 + store { ptr, i64, i64 } { ptr @.str.1756, i64 1, i64 0 }, ptr %a12 + store { ptr, i64, i64 } %t14, ptr %a15 + call void @finch_str_drop(ptr %a15) + br label %endif2861 +endif2861: + %t16 = load %S.ast.Type, ptr %a4 + %t17 = call i1 @finch.gen.isSigned(%S.ast.Type %t16) + br i1 %t17, label %then2862, label %else2863 +then2862: + %t18 = load ptr, ptr %a1 + %t19 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } { ptr @.str.1757, i64 29, 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.1758, i64 6, i64 0 }, ptr %a26 + call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) + store { ptr, i64, i64 } %t23, ptr %a27 + call void @finch_str_drop(ptr %a27) + %t28 = load { ptr, i64, i64 }, ptr %a24 + %t29 = load ptr, ptr %a1 + %t30 = load { ptr, i64, i64 }, ptr %a3 + %t31 = load %S.ast.Type, ptr %a4 + %t32 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1759, i64 3, i64 0 }) + %t33 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t29, { ptr, i64, i64 } %t30, %S.ast.Type %t31, %S.ast.Type %t32) + store %S.ast.Type %t32, ptr %a34 + call void @finch.drop.S_ast_Type(ptr %a34) + store { ptr, i64, i64 } %t28, ptr %a36 + store { ptr, i64, i64 } %t33, 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 %endif2690 -else2689: - %t39 = load %S.ast.Type, ptr %a4 - %t40 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t39) - br i1 %t40, label %then2691, label %else2692 -then2691: - %t41 = load ptr, ptr %a1 - %t42 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1692, 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.1693, 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.1694, 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.1695, 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 %endif2693 -else2692: - %t64 = load %S.ast.Type, ptr %a4 - %t65 = call i1 @finch.gen.isFloat(%S.ast.Type %t64) - br i1 %t65, label %then2694, label %else2695 -then2694: - %t66 = load ptr, ptr %a1 - %t67 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1696, 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 } %t28, ptr %a38 + call void @finch_str_drop(ptr %a38) + store { ptr, i64, i64 } %t33, ptr %a39 + call void @finch_str_drop(ptr %a39) + %t40 = load { ptr, i64, i64 }, ptr %a35 + store { ptr, i64, i64 } %t40, ptr %a42 + store { ptr, i64, i64 } { ptr @.str.1760, i64 1, i64 0 }, ptr %a43 + call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) + store { ptr, i64, i64 } %t40, ptr %a44 + call void @finch_str_drop(ptr %a44) + %t45 = load { ptr, i64, i64 }, ptr %a41 + call void @finch.gen.emit(ptr %t18, { ptr, i64, i64 } %t45) + store { ptr, i64, i64 } %t45, ptr %a46 + call void @finch_str_drop(ptr %a46) + br label %endif2864 +else2863: + %t47 = load %S.ast.Type, ptr %a4 + %t48 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t47) + br i1 %t48, label %then2865, label %else2866 +then2865: + %t49 = load ptr, ptr %a1 + %t50 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } { ptr @.str.1761, i64 30, 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.1762, i64 6, i64 0 }, ptr %a57 + call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) + store { ptr, i64, i64 } %t54, ptr %a58 + call void @finch_str_drop(ptr %a58) + %t59 = load { ptr, i64, i64 }, ptr %a55 + %t60 = load ptr, ptr %a1 + %t61 = load { ptr, i64, i64 }, ptr %a3 + %t62 = load %S.ast.Type, ptr %a4 + %t63 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1763, i64 3, i64 0 }) + %t64 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t60, { ptr, i64, i64 } %t61, %S.ast.Type %t62, %S.ast.Type %t63) + store %S.ast.Type %t63, ptr %a65 + call void @finch.drop.S_ast_Type(ptr %a65) + store { ptr, i64, i64 } %t59, ptr %a67 + store { ptr, i64, i64 } %t64, ptr %a68 + call void @finch_str_concat(ptr %a66, ptr %a67, ptr %a68) + store { ptr, i64, i64 } %t59, ptr %a69 + call void @finch_str_drop(ptr %a69) + store { ptr, i64, i64 } %t64, ptr %a70 + call void @finch_str_drop(ptr %a70) + %t71 = load { ptr, i64, i64 }, ptr %a66 store { ptr, i64, i64 } %t71, ptr %a73 - store { ptr, i64, i64 } { ptr @.str.1697, i64 9, i64 0 }, ptr %a74 + store { ptr, i64, i64 } { ptr @.str.1764, i64 1, 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 + store { ptr, i64, i64 } %t71, ptr %a75 + call void @finch_str_drop(ptr %a75) + %t76 = load { ptr, i64, i64 }, ptr %a72 + call void @finch.gen.emit(ptr %t49, { ptr, i64, i64 } %t76) + store { ptr, i64, i64 } %t76, ptr %a77 + call void @finch_str_drop(ptr %a77) + br label %endif2867 +else2866: %t78 = load %S.ast.Type, ptr %a4 - %t79 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1698, 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.1699, 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 %endif2696 -else2695: - %t89 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } %t89, ptr %a90 - store { ptr, i64, i64 } { ptr @.str.1700, 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 %then2697, label %else2698 -then2697: - %t94 = load ptr, ptr %a1 - %t95 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1701, 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.1702, 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 - store { ptr, i64, i64 } %t103, ptr %a106 - store { ptr, i64, i64 } %t104, 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 %a110 - store { ptr, i64, i64 } { ptr @.str.1703, 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 - store { ptr, i64, i64 } %t112, 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.1704, 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 %endif2699 -else2698: - %t122 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } %t122, ptr %a123 - store { ptr, i64, i64 } { ptr @.str.1705, 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 %then2700, label %else2701 -then2700: - %t127 = load ptr, ptr %a1 - %t128 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1706, 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.1707, 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.1708, 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.1709, 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) - store { ptr, i64, i64 } %t136, ptr %a149 - store { ptr, i64, i64 } %t147, ptr %a150 - 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.1710, 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 %endif2702 -else2701: - %t156 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } %t156, ptr %a157 - store { ptr, i64, i64 } { ptr @.str.1711, 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 %then2703, label %else2704 -then2703: - %t161 = load ptr, ptr %a1 - %t162 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1712, 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.1713, 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 - %t172 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t172, ptr %a173 - call void @finch_str_copy(ptr %a174, ptr %a173) - %t175 = load { ptr, i64, i64 }, ptr %a174 - %t176 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t175, 0 - %t177 = load %S.ast.Type, ptr %a4 - store %S.ast.Type %t177, ptr %a178 - call void @finch.copy.S_ast_Type(ptr %a179, ptr %a178) - %t180 = load %S.ast.Type, ptr %a179 - %t181 = insertvalue %S.gen.Val %t176, %S.ast.Type %t180, 1 - %t182 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t171, %S.gen.Val %t181) - store { ptr, i64, i64 } %t170, ptr %a184 - store { ptr, i64, i64 } %t182, ptr %a185 + %t79 = call i1 @finch.gen.isFloat(%S.ast.Type %t78) + br i1 %t79, label %then2868, label %else2869 +then2868: + %t80 = load ptr, ptr %a1 + %t81 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } { ptr @.str.1765, i64 31, 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.1766, i64 9, i64 0 }, ptr %a88 + call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) + store { ptr, i64, i64 } %t85, ptr %a89 + call void @finch_str_drop(ptr %a89) + %t90 = load { ptr, i64, i64 }, ptr %a86 + %t91 = load ptr, ptr %a1 + %t92 = load { ptr, i64, i64 }, ptr %a3 + %t93 = load %S.ast.Type, ptr %a4 + %t94 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1767, i64 5, i64 0 }) + %t95 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t91, { ptr, i64, i64 } %t92, %S.ast.Type %t93, %S.ast.Type %t94) + store %S.ast.Type %t94, ptr %a96 + call void @finch.drop.S_ast_Type(ptr %a96) + store { ptr, i64, i64 } %t90, ptr %a98 + store { ptr, i64, i64 } %t95, ptr %a99 + call void @finch_str_concat(ptr %a97, ptr %a98, ptr %a99) + store { ptr, i64, i64 } %t90, ptr %a100 + call void @finch_str_drop(ptr %a100) + store { ptr, i64, i64 } %t95, ptr %a101 + call void @finch_str_drop(ptr %a101) + %t102 = load { ptr, i64, i64 }, ptr %a97 + store { ptr, i64, i64 } %t102, ptr %a104 + store { ptr, i64, i64 } { ptr @.str.1768, i64 1, i64 0 }, ptr %a105 + call void @finch_str_concat(ptr %a103, ptr %a104, ptr %a105) + store { ptr, i64, i64 } %t102, ptr %a106 + call void @finch_str_drop(ptr %a106) + %t107 = load { ptr, i64, i64 }, ptr %a103 + call void @finch.gen.emit(ptr %t80, { ptr, i64, i64 } %t107) + store { ptr, i64, i64 } %t107, ptr %a108 + call void @finch_str_drop(ptr %a108) + br label %endif2870 +else2869: + %t109 = load { ptr, i64, i64 }, ptr %a11 + store { ptr, i64, i64 } %t109, ptr %a110 + store { ptr, i64, i64 } { ptr @.str.1769, 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 %then2871, label %else2872 +then2871: + %t114 = load ptr, ptr %a1 + %t115 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } { ptr @.str.1770, i64 30, 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.1771, i64 5, i64 0 }, ptr %a122 + call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122) + store { ptr, i64, i64 } %t119, ptr %a123 + call void @finch_str_drop(ptr %a123) + %t124 = load { ptr, i64, i64 }, ptr %a120 + %t125 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t124, ptr %a127 + store { ptr, i64, i64 } %t125, ptr %a128 + call void @finch_str_concat(ptr %a126, ptr %a127, ptr %a128) + store { ptr, i64, i64 } %t124, ptr %a129 + call void @finch_str_drop(ptr %a129) + %t130 = load { ptr, i64, i64 }, ptr %a126 + store { ptr, i64, i64 } %t130, ptr %a132 + store { ptr, i64, i64 } { ptr @.str.1772, i64 6, i64 0 }, ptr %a133 + call void @finch_str_concat(ptr %a131, ptr %a132, ptr %a133) + store { ptr, i64, i64 } %t130, ptr %a134 + call void @finch_str_drop(ptr %a134) + %t135 = load { ptr, i64, i64 }, ptr %a131 + %t136 = load { ptr, i64, i64 }, ptr %a12 + store { ptr, i64, i64 } %t135, ptr %a138 + store { ptr, i64, i64 } %t136, ptr %a139 + call void @finch_str_concat(ptr %a137, ptr %a138, ptr %a139) + store { ptr, i64, i64 } %t135, ptr %a140 + call void @finch_str_drop(ptr %a140) + %t141 = load { ptr, i64, i64 }, ptr %a137 + store { ptr, i64, i64 } %t141, ptr %a143 + store { ptr, i64, i64 } { ptr @.str.1773, i64 1, i64 0 }, ptr %a144 + call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144) + store { ptr, i64, i64 } %t141, ptr %a145 + call void @finch_str_drop(ptr %a145) + %t146 = load { ptr, i64, i64 }, ptr %a142 + call void @finch.gen.emit(ptr %t114, { ptr, i64, i64 } %t146) + store { ptr, i64, i64 } %t146, ptr %a147 + call void @finch_str_drop(ptr %a147) + br label %endif2873 +else2872: + %t148 = load { ptr, i64, i64 }, ptr %a11 + store { ptr, i64, i64 } %t148, ptr %a149 + store { ptr, i64, i64 } { ptr @.str.1774, i64 4, i64 0 }, ptr %a150 + %t151 = call i32 @finch_str_eq(ptr %a149, ptr %a150) + %t152 = icmp ne i32 %t151, 0 + br i1 %t152, label %then2874, label %else2875 +then2874: + %t153 = load ptr, ptr %a1 + %t154 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } { ptr @.str.1775, i64 30, 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.1776, i64 6, i64 0 }, ptr %a161 + call void @finch_str_concat(ptr %a159, ptr %a160, ptr %a161) + store { ptr, i64, i64 } %t158, ptr %a162 + call void @finch_str_drop(ptr %a162) + %t163 = load { ptr, i64, i64 }, ptr %a159 + %t164 = load ptr, ptr %a1 + %t165 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } { ptr @.str.1777, i64 8, 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.1778, i64 7, i64 0 }, ptr %a172 + call void @finch_str_concat(ptr %a170, ptr %a171, ptr %a172) + store { ptr, i64, i64 } %t169, ptr %a173 + call void @finch_str_drop(ptr %a173) + %t174 = load { ptr, i64, i64 }, ptr %a170 + %t175 = call { ptr, i64, i64 } @finch.gen.op(ptr %t164, { ptr, i64, i64 } %t174) + store { ptr, i64, i64 } %t174, ptr %a176 + call void @finch_str_drop(ptr %a176) + store { ptr, i64, i64 } %t163, ptr %a178 + store { ptr, i64, i64 } %t175, ptr %a179 + call void @finch_str_concat(ptr %a177, ptr %a178, ptr %a179) + store { ptr, i64, i64 } %t163, ptr %a180 + call void @finch_str_drop(ptr %a180) + store { ptr, i64, i64 } %t175, ptr %a181 + call void @finch_str_drop(ptr %a181) + %t182 = load { ptr, i64, i64 }, ptr %a177 + store { ptr, i64, i64 } %t182, ptr %a184 + store { ptr, i64, i64 } { ptr @.str.1779, i64 1, i64 0 }, 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.1714, 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 - store { ptr, i64, i64 } %t190, ptr %a193 - store { ptr, i64, i64 } %t191, ptr %a194 - 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.1715, i64 1, i64 0 }, ptr %a198 + store { ptr, i64, i64 } %t182, ptr %a186 + call void @finch_str_drop(ptr %a186) + %t187 = load { ptr, i64, i64 }, ptr %a183 + call void @finch.gen.emit(ptr %t153, { ptr, i64, i64 } %t187) + store { ptr, i64, i64 } %t187, ptr %a188 + call void @finch_str_drop(ptr %a188) + br label %endif2876 +else2875: + %t189 = load { ptr, i64, i64 }, ptr %a11 + store { ptr, i64, i64 } %t189, ptr %a190 + store { ptr, i64, i64 } { ptr @.str.1780, 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 %then2877, label %else2878 +then2877: + %t194 = load ptr, ptr %a1 + %t195 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } { ptr @.str.1781, i64 29, 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 - call void @finch.gen.emit(ptr %t161, { ptr, i64, i64 } %t199) - br label %endif2705 -else2704: - %t200 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } %t200, ptr %a201 - store { ptr, i64, i64 } { ptr @.str.1716, 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.from2706 -logic.from2706: - br i1 %t204, label %logic.end2708, label %logic.rhs2707 -logic.rhs2707: - %t205 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } %t205, ptr %a206 - store { ptr, i64, i64 } { ptr @.str.1717, 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.rend2709 -logic.rend2709: - br label %logic.end2708 -logic.end2708: - %t210 = phi i1 [ true, %logic.from2706 ], [ %t209, %logic.rend2709 ] - br i1 %t210, label %then2710, label %else2711 -then2710: - %t211 = load ptr, ptr %a1 - %t212 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1718, 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.1719, 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 - store { ptr, i64, i64 } %t220, ptr %a223 - store { ptr, i64, i64 } %t221, ptr %a224 - 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.1720, 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 %endif2712 -else2711: - %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.1721, 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.1722, 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 - store { ptr, i64, i64 } %t241, ptr %a244 - store { ptr, i64, i64 } %t242, ptr %a245 - 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.1723, 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 - %t252 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t252, ptr %a253 - call void @finch_str_copy(ptr %a254, ptr %a253) - %t255 = load { ptr, i64, i64 }, ptr %a254 - %t256 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t255, 0 - %t257 = load %S.ast.Type, ptr %a4 - store %S.ast.Type %t257, ptr %a258 - call void @finch.copy.S_ast_Type(ptr %a259, ptr %a258) - %t260 = load %S.ast.Type, ptr %a259 - %t261 = insertvalue %S.gen.Val %t256, %S.ast.Type %t260, 1 - %t262 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t251, %S.gen.Val %t261) - store { ptr, i64, i64 } %t250, ptr %a264 + store { ptr, i64, i64 } %t199, ptr %a201 + store { ptr, i64, i64 } { ptr @.str.1782, i64 6, i64 0 }, ptr %a202 + call void @finch_str_concat(ptr %a200, ptr %a201, ptr %a202) + store { ptr, i64, i64 } %t199, ptr %a203 + call void @finch_str_drop(ptr %a203) + %t204 = load { ptr, i64, i64 }, ptr %a200 + %t205 = load ptr, ptr %a1 + %t206 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t206, ptr %a207 + call void @finch_str_copy(ptr %a208, ptr %a207) + %t209 = load { ptr, i64, i64 }, ptr %a208 + %t210 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t209, 0 + %t211 = load %S.ast.Type, ptr %a4 + store %S.ast.Type %t211, ptr %a212 + call void @finch.copy.S_ast_Type(ptr %a213, ptr %a212) + %t214 = load %S.ast.Type, ptr %a213 + %t215 = insertvalue %S.gen.Val %t210, %S.ast.Type %t214, 1 + %t216 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t205, %S.gen.Val %t215) + store %S.gen.Val %t215, ptr %a217 + call void @finch.drop.S_gen_Val(ptr %a217) + store { ptr, i64, i64 } %t204, ptr %a219 + store { ptr, i64, i64 } %t216, ptr %a220 + call void @finch_str_concat(ptr %a218, ptr %a219, ptr %a220) + store { ptr, i64, i64 } %t204, ptr %a221 + call void @finch_str_drop(ptr %a221) + store { ptr, i64, i64 } %t216, ptr %a222 + call void @finch_str_drop(ptr %a222) + %t223 = load { ptr, i64, i64 }, ptr %a218 + store { ptr, i64, i64 } %t223, ptr %a225 + store { ptr, i64, i64 } { ptr @.str.1783, i64 6, i64 0 }, ptr %a226 + call void @finch_str_concat(ptr %a224, ptr %a225, ptr %a226) + store { ptr, i64, i64 } %t223, ptr %a227 + call void @finch_str_drop(ptr %a227) + %t228 = load { ptr, i64, i64 }, ptr %a224 + %t229 = load { ptr, i64, i64 }, ptr %a12 + store { ptr, i64, i64 } %t228, ptr %a231 + store { ptr, i64, i64 } %t229, ptr %a232 + call void @finch_str_concat(ptr %a230, ptr %a231, ptr %a232) + store { ptr, i64, i64 } %t228, ptr %a233 + call void @finch_str_drop(ptr %a233) + %t234 = load { ptr, i64, i64 }, ptr %a230 + store { ptr, i64, i64 } %t234, ptr %a236 + store { ptr, i64, i64 } { ptr @.str.1784, i64 1, i64 0 }, ptr %a237 + call void @finch_str_concat(ptr %a235, ptr %a236, ptr %a237) + store { ptr, i64, i64 } %t234, ptr %a238 + call void @finch_str_drop(ptr %a238) + %t239 = load { ptr, i64, i64 }, ptr %a235 + call void @finch.gen.emit(ptr %t194, { ptr, i64, i64 } %t239) + store { ptr, i64, i64 } %t239, ptr %a240 + call void @finch_str_drop(ptr %a240) + br label %endif2879 +else2878: + %t241 = load { ptr, i64, i64 }, ptr %a11 + store { ptr, i64, i64 } %t241, ptr %a242 + store { ptr, i64, i64 } { ptr @.str.1785, i64 3, i64 0 }, ptr %a243 + %t244 = call i32 @finch_str_eq(ptr %a242, ptr %a243) + %t245 = icmp ne i32 %t244, 0 + br label %logic.from2880 +logic.from2880: + br i1 %t245, label %logic.end2882, label %logic.rhs2881 +logic.rhs2881: + %t246 = load { ptr, i64, i64 }, ptr %a11 + store { ptr, i64, i64 } %t246, ptr %a247 + store { ptr, i64, i64 } { ptr @.str.1786, i64 4, i64 0 }, ptr %a248 + %t249 = call i32 @finch_str_eq(ptr %a247, ptr %a248) + %t250 = icmp ne i32 %t249, 0 + br label %logic.rend2883 +logic.rend2883: + br label %logic.end2882 +logic.end2882: + %t251 = phi i1 [ true, %logic.from2880 ], [ %t250, %logic.rend2883 ] + br i1 %t251, label %then2884, label %else2885 +then2884: + %t252 = load ptr, ptr %a1 + %t253 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } { ptr @.str.1787, i64 29, 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.1788, i64 6, i64 0 }, ptr %a260 + call void @finch_str_concat(ptr %a258, ptr %a259, ptr %a260) + store { ptr, i64, i64 } %t257, ptr %a261 + call void @finch_str_drop(ptr %a261) + %t262 = load { ptr, i64, i64 }, ptr %a258 + %t263 = load { ptr, i64, i64 }, ptr %a3 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.1724, 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 %endif2712 -endif2712: - br label %endif2705 -endif2705: - br label %endif2702 -endif2702: - br label %endif2699 -endif2699: - br label %endif2696 -endif2696: - br label %endif2693 -endif2693: - br label %endif2690 -endif2690: + store { ptr, i64, i64 } %t263, ptr %a266 + call void @finch_str_concat(ptr %a264, ptr %a265, ptr %a266) + store { ptr, i64, i64 } %t262, ptr %a267 + call void @finch_str_drop(ptr %a267) + %t268 = load { ptr, i64, i64 }, ptr %a264 + store { ptr, i64, i64 } %t268, ptr %a270 + store { ptr, i64, i64 } { ptr @.str.1789, i64 1, i64 0 }, ptr %a271 + call void @finch_str_concat(ptr %a269, ptr %a270, ptr %a271) + store { ptr, i64, i64 } %t268, ptr %a272 + call void @finch_str_drop(ptr %a272) + %t273 = load { ptr, i64, i64 }, ptr %a269 + call void @finch.gen.emit(ptr %t252, { ptr, i64, i64 } %t273) + store { ptr, i64, i64 } %t273, ptr %a274 + call void @finch_str_drop(ptr %a274) + br label %endif2886 +else2885: + %t275 = load ptr, ptr %a1 + %t276 = load ptr, ptr %a1 + %t277 = load %S.ast.Type, ptr %a4 + %t278 = call { ptr, i64, i64 } @finch.gen.formatFn(ptr %t276, %S.ast.Type %t277) + store { ptr, i64, i64 } { ptr @.str.1790, i64 10, i64 0 }, ptr %a280 + store { ptr, i64, i64 } %t278, ptr %a281 + call void @finch_str_concat(ptr %a279, ptr %a280, ptr %a281) + store { ptr, i64, i64 } %t278, ptr %a282 + call void @finch_str_drop(ptr %a282) + %t283 = load { ptr, i64, i64 }, ptr %a279 + store { ptr, i64, i64 } %t283, ptr %a285 + store { ptr, i64, i64 } { ptr @.str.1791, i64 5, i64 0 }, ptr %a286 + call void @finch_str_concat(ptr %a284, ptr %a285, ptr %a286) + store { ptr, i64, i64 } %t283, ptr %a287 + call void @finch_str_drop(ptr %a287) + %t288 = load { ptr, i64, i64 }, ptr %a284 + %t289 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t288, ptr %a291 + store { ptr, i64, i64 } %t289, ptr %a292 + call void @finch_str_concat(ptr %a290, ptr %a291, ptr %a292) + store { ptr, i64, i64 } %t288, ptr %a293 + call void @finch_str_drop(ptr %a293) + %t294 = load { ptr, i64, i64 }, ptr %a290 + store { ptr, i64, i64 } %t294, ptr %a296 + store { ptr, i64, i64 } { ptr @.str.1792, i64 6, i64 0 }, ptr %a297 + call void @finch_str_concat(ptr %a295, ptr %a296, ptr %a297) + store { ptr, i64, i64 } %t294, ptr %a298 + call void @finch_str_drop(ptr %a298) + %t299 = load { ptr, i64, i64 }, ptr %a295 + %t300 = load ptr, ptr %a1 + %t301 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t301, ptr %a302 + call void @finch_str_copy(ptr %a303, ptr %a302) + %t304 = load { ptr, i64, i64 }, ptr %a303 + %t305 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t304, 0 + %t306 = load %S.ast.Type, ptr %a4 + store %S.ast.Type %t306, ptr %a307 + call void @finch.copy.S_ast_Type(ptr %a308, ptr %a307) + %t309 = load %S.ast.Type, ptr %a308 + %t310 = insertvalue %S.gen.Val %t305, %S.ast.Type %t309, 1 + %t311 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t300, %S.gen.Val %t310) + store %S.gen.Val %t310, ptr %a312 + call void @finch.drop.S_gen_Val(ptr %a312) + store { ptr, i64, i64 } %t299, ptr %a314 + store { ptr, i64, i64 } %t311, ptr %a315 + call void @finch_str_concat(ptr %a313, ptr %a314, ptr %a315) + store { ptr, i64, i64 } %t299, ptr %a316 + call void @finch_str_drop(ptr %a316) + store { ptr, i64, i64 } %t311, ptr %a317 + call void @finch_str_drop(ptr %a317) + %t318 = load { ptr, i64, i64 }, ptr %a313 + store { ptr, i64, i64 } %t318, ptr %a320 + store { ptr, i64, i64 } { ptr @.str.1793, i64 1, i64 0 }, ptr %a321 + call void @finch_str_concat(ptr %a319, ptr %a320, ptr %a321) + store { ptr, i64, i64 } %t318, ptr %a322 + call void @finch_str_drop(ptr %a322) + %t323 = load { ptr, i64, i64 }, ptr %a319 + call void @finch.gen.emit(ptr %t275, { ptr, i64, i64 } %t323) + store { ptr, i64, i64 } %t323, ptr %a324 + call void @finch_str_drop(ptr %a324) + br label %endif2886 +endif2886: + br label %endif2879 +endif2879: + br label %endif2876 +endif2876: + br label %endif2873 +endif2873: + br label %endif2870 +endif2870: + br label %endif2867 +endif2867: + br label %endif2864 +endif2864: + call void @finch_str_drop(ptr %a12) + call void @finch_str_drop(ptr %a11) ret void } @@ -27596,6 +32381,20 @@ entry: ret void } +define internal void @finch.drop.S_gen_EnumDef(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.gen.EnumDef, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.gen.EnumDef, ptr %a, i32 0, i32 1 + call void @finch_str_drop(ptr %t2) + %t3 = getelementptr inbounds %S.gen.EnumDef, ptr %a, i32 0, i32 2 + call void @finch.drop.arr_str(ptr %t3) + %t4 = getelementptr inbounds %S.gen.EnumDef, ptr %a, i32 0, i32 3 + call void @finch.drop.arr_int(ptr %t4) + ret void +} + define internal { ptr, i64, i64 } @finch.gen.formatFn(ptr %p0, %S.ast.Type %p1) { entry: %a1 = alloca ptr, align 16 @@ -27603,970 +32402,1156 @@ entry: %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 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca %S.gen.Saved, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca %S.ast.Type, align 16 + %a8 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca { ptr, i64, i64 }, align 16 + %a23 = alloca { ptr, i64, i64 }, align 16 + %a24 = alloca { ptr, i64, i64 }, align 16 + %a32 = alloca %S.gen.Saved, align 16 + %a35 = alloca { ptr, i64, i64 }, align 16 + %a36 = alloca { ptr, i64, i64 }, align 16 + %a46 = alloca %S.ast.Type, align 16 + %a47 = alloca %S.ast.Type, align 16 %a49 = alloca %S.ast.Type, align 16 - %a51 = alloca %S.ast.Type, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 + %a52 = alloca { ptr, i64, i64 }, align 16 + %a57 = alloca { ptr, i64, i64 }, align 16 + %a58 = alloca { ptr, i64, i64 }, align 16 + %a63 = alloca { ptr, i64, i64 }, align 16 + %a66 = alloca { ptr, i64, i64 }, align 16 + %a69 = 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 %a87 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 + %a88 = 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 %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 - %a114 = 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 %a118 = 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 + %a120 = alloca { ptr, i64, i64 }, align 16 + %a121 = alloca { ptr, i64, i64 }, align 16 + %a122 = alloca { ptr, i64, i64 }, align 16 + %a123 = alloca { ptr, i64, i64 }, align 16 %a131 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 + %a132 = alloca { ptr, i64, i64 }, align 16 + %a133 = alloca { ptr, i64, i64 }, align 16 + %a134 = alloca { ptr, i64, i64 }, align 16 + %a137 = alloca { ptr, i64, i64 }, align 16 + %a138 = alloca { ptr, i64, i64 }, align 16 %a146 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca %S.gen.EnumDef, align 16 - %a165 = alloca %S.gen.EnumDef, align 16 - %a167 = alloca %S.gen.EnumDef, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a173 = 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 - %a182 = alloca i64, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a205 = 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 + %a148 = alloca { ptr, i64, i64 }, align 16 + %a154 = alloca { ptr, i64, i64 }, align 16 + %a155 = alloca { ptr, i64, i64 }, align 16 + %a173 = alloca %S.gen.EnumDef, align 16 + %a174 = alloca %S.gen.EnumDef, align 16 + %a176 = alloca %S.gen.EnumDef, align 16 + %a179 = alloca { ptr, i64, i64 }, align 16 + %a182 = 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 + %a191 = alloca 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 + %a215 = alloca { ptr, i64, i64 }, align 16 + %a217 = alloca { ptr, i64, i64 }, align 16 %a218 = alloca { ptr, i64, i64 }, align 16 %a219 = alloca { ptr, i64, i64 }, align 16 %a220 = alloca { ptr, i64, i64 }, align 16 + %a229 = 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 - %a239 = 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 %a243 = 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 + %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 + %a254 = 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 - %a265 = alloca i64, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a296 = 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 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a306 = alloca { ptr, i64, i64 }, align 16 - %a307 = 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 + %a258 = alloca { ptr, i64, i64 }, align 16 + %a259 = alloca { ptr, i64, i64 }, align 16 + %a260 = alloca { ptr, i64, i64 }, align 16 + %a263 = alloca { ptr, i64, i64 }, align 16 + %a264 = alloca { ptr, i64, i64 }, align 16 + %a266 = alloca { ptr, i64, i64 }, align 16 + %a267 = alloca { ptr, i64, i64 }, 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 + %a275 = alloca { ptr, i64, i64 }, align 16 + %a277 = alloca { ptr, i64, i64 }, align 16 + %a284 = alloca i64, align 16 + %a313 = 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 + %a317 = alloca { ptr, i64, i64 }, align 16 + %a321 = 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 + %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 + %a334 = alloca { ptr, i64, i64 }, align 16 + %a335 = 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 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a345 = alloca { ptr, i64, i64 }, align 16 - %a346 = alloca { ptr, i64, i64 }, align 16 %a350 = alloca { ptr, i64, i64 }, align 16 - %a354 = alloca { ptr, i64, i64 }, align 16 - %a364 = alloca { ptr, i64, i64 }, align 16 + %a351 = alloca { ptr, i64, i64 }, align 16 + %a356 = 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 + %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 + %a373 = alloca { ptr, i64, i64 }, align 16 + %a376 = alloca { ptr, i64, i64 }, align 16 + %a378 = 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 %a383 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a394 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a482 = alloca %S.gen.StructDef, align 16 - %a483 = alloca %S.gen.StructDef, align 16 - %a485 = alloca %S.gen.StructDef, align 16 - %a489 = 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 - %a500 = alloca i64, align 16 - %a503 = 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 - %a520 = alloca { ptr, i64, i64 }, align 16 - %a521 = alloca { ptr, i64, i64 }, align 16 - %a522 = alloca { ptr, i64, i64 }, align 16 - %a526 = alloca { ptr, i64, i64 }, align 16 - %a527 = alloca { ptr, i64, i64 }, align 16 - %a528 = alloca { ptr, i64, i64 }, align 16 + %a393 = alloca { ptr, i64, i64 }, align 16 + %a396 = alloca { ptr, i64, i64 }, align 16 + %a399 = 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 + %a411 = alloca { ptr, i64, i64 }, align 16 + %a412 = 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 + %a420 = alloca { ptr, i64, i64 }, align 16 + %a423 = alloca { ptr, i64, i64 }, align 16 + %a428 = alloca { ptr, i64, i64 }, align 16 + %a431 = alloca { ptr, i64, i64 }, align 16 + %a438 = alloca { ptr, i64, i64 }, align 16 + %a464 = alloca { ptr, i64, i64 }, align 16 + %a465 = alloca { ptr, i64, i64 }, align 16 + %a473 = alloca { ptr, i64, i64 }, align 16 + %a491 = alloca { ptr, i64, i64 }, align 16 + %a492 = alloca { ptr, i64, i64 }, align 16 + %a500 = alloca { ptr, i64, i64 }, align 16 + %a523 = alloca %S.gen.StructDef, align 16 + %a524 = alloca %S.gen.StructDef, align 16 + %a526 = alloca %S.gen.StructDef, align 16 %a530 = alloca { ptr, i64, i64 }, align 16 - %a531 = alloca { ptr, i64, i64 }, align 16 - %a532 = alloca { ptr, i64, i64 }, align 16 - %a542 = alloca { ptr, i64, i64 }, align 16 - %a544 = alloca { ptr, i64, i64 }, align 16 + %a534 = alloca { ptr, i64, i64 }, align 16 + %a535 = alloca { ptr, i64, i64 }, align 16 + %a536 = alloca { ptr, i64, i64 }, align 16 + %a538 = alloca { ptr, i64, i64 }, align 16 + %a542 = alloca i64, align 16 %a545 = alloca { ptr, i64, i64 }, align 16 - %a546 = alloca { ptr, i64, i64 }, align 16 %a549 = alloca { ptr, i64, i64 }, align 16 + %a560 = alloca { ptr, i64, i64 }, align 16 + %a561 = alloca { ptr, i64, i64 }, align 16 + %a562 = 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 + %a567 = alloca { ptr, i64, i64 }, align 16 + %a569 = 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 + %a576 = alloca { ptr, i64, i64 }, align 16 + %a577 = alloca { ptr, i64, i64 }, align 16 + %a578 = alloca { ptr, i64, i64 }, align 16 %a579 = 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 - %a584 = alloca { ptr, i64, i64 }, align 16 - %a585 = 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 + %a594 = alloca { ptr, i64, i64 }, align 16 + %a595 = alloca { ptr, i64, i64 }, align 16 + %a598 = alloca { ptr, i64, i64 }, align 16 + %a599 = alloca { ptr, i64, i64 }, align 16 + %a614 = alloca { ptr, i64, i64 }, align 16 + %a623 = 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 + %a635 = alloca { ptr, i64, i64 }, align 16 + %a636 = alloca { ptr, i64, i64 }, align 16 + %a637 = alloca { ptr, i64, i64 }, align 16 + %a638 = alloca { ptr, i64, i64 }, align 16 + %a640 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 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.1725, i64 14, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.1794, 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 %panic2713, label %ok2714 -panic2713: - call void @finch_panic(ptr @.str.1726, i64 965, ptr @.str.1727) + store { ptr, i64, i64 } %t4, ptr %a8 + call void @finch_str_drop(ptr %a8) + %t9 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } %t9, ptr %a10 + %t11 = load ptr, ptr %a1 + %t12 = icmp eq ptr %t11, null + br i1 %t12, label %panic2887, label %ok2888 +panic2887: + call void @finch_panic(ptr @.str.1795, i64 1100, ptr @.str.1796) unreachable -ok2714: - %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 %then2715, label %endif2717 -then2715: - %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 -endif2717: - %t20 = load ptr, ptr %a1 - %t21 = icmp eq ptr %t20, null - br i1 %t21, label %panic2718, label %ok2719 -panic2718: - call void @finch_panic(ptr @.str.1728, i64 968, ptr @.str.1729) +ok2888: + %t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 22 + %t14 = load { ptr, i64, i64 }, ptr %t13 + %t15 = load { ptr, i64, i64 }, ptr %a10 + %t16 = call i1 @finch.gen.has({ ptr, i64, i64 } %t14, { ptr, i64, i64 } %t15) + br i1 %t16, label %then2889, label %endif2891 +then2889: + %t17 = load { ptr, i64, i64 }, ptr %a10 + ret { ptr, i64, i64 } %t17 +endif2891: + %t18 = load ptr, ptr %a1 + %t19 = icmp eq ptr %t18, null + br i1 %t19, label %panic2892, label %ok2893 +panic2892: + call void @finch_panic(ptr @.str.1797, i64 1103, ptr @.str.1798) unreachable -ok2719: - %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 - store { ptr, i64, i64 } %t24, ptr %a25 - call void @finch_str_copy(ptr %a26, ptr %a25) - %t27 = load { ptr, i64, i64 }, ptr %a26 - %t28 = load i64, ptr %t23 - %t29 = add i64 %t28, 1 - call void @finch_arr_reserve(ptr %t22, i64 %t29, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t30 = load ptr, ptr %t22 - %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t30, i64 %t28 - store { ptr, i64, i64 } %t27, ptr %t31 - store i64 %t29, ptr %t23 - %t32 = load ptr, ptr %a1 - %t33 = call %S.gen.Saved @finch.gen.beginHelper(ptr %t32) - store %S.gen.Saved %t33, ptr %a34 - %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.1730, 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 %then2720, label %else2721 -then2720: - %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 %range2723, label %inrange2724 -range2723: - call void @finch_panic_index(ptr @.str.1731, i64 971, i64 0, i64 %t43) +ok2893: + %t20 = getelementptr inbounds %S.gen.Gen, ptr %t18, i32 0, i32 22 + %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t20, i32 0, i32 1 + %t22 = load { ptr, i64, i64 }, ptr %a10 + 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 + %t30 = load ptr, ptr %a1 + %t31 = call %S.gen.Saved @finch.gen.beginHelper(ptr %t30) + store %S.gen.Saved %t31, ptr %a32 + %t33 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 + %t34 = load { ptr, i64, i64 }, ptr %t33 + store { ptr, i64, i64 } %t34, ptr %a35 + store { ptr, i64, i64 } { ptr @.str.1799, i64 5, i64 0 }, ptr %a36 + %t37 = call i32 @finch_str_eq(ptr %a35, ptr %a36) + %t38 = icmp ne i32 %t37, 0 + br i1 %t38, label %then2894, label %else2895 +then2894: + %t39 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t40 = load { ptr, i64, i64 }, ptr %t39 + %t41 = extractvalue { ptr, i64, i64 } %t40, 1 + %t42 = icmp uge i64 0, %t41 + br i1 %t42, label %range2897, label %inrange2898 +range2897: + call void @finch_panic_index(ptr @.str.1800, i64 1106, i64 0, i64 %t41) unreachable -inrange2724: - %t45 = extractvalue { ptr, i64, i64 } %t42, 0 - %t46 = getelementptr inbounds %S.ast.Type, ptr %t45, i64 0 - %t47 = load %S.ast.Type, ptr %t46 - store %S.ast.Type %t47, ptr %a48 - call void @finch.copy.S_ast_Type(ptr %a49, ptr %a48) - %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.1732, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1733, 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.1735, i64 62, i64 0 }) - %t58 = call { ptr, i64, i64 } @finch.gen.load(ptr %t55, { ptr, i64, i64 } { ptr @.str.1734, i64 3, i64 0 }, { ptr, i64, i64 } %t57) - store { ptr, i64, i64 } %t58, ptr %a59 +inrange2898: + %t43 = extractvalue { ptr, i64, i64 } %t40, 0 + %t44 = getelementptr inbounds %S.ast.Type, ptr %t43, i64 0 + %t45 = load %S.ast.Type, ptr %t44 + store %S.ast.Type %t45, ptr %a46 + call void @finch.copy.S_ast_Type(ptr %a47, ptr %a46) + %t48 = load %S.ast.Type, ptr %a47 + store %S.ast.Type %t48, ptr %a49 + %t50 = load ptr, ptr %a1 + %t51 = call { ptr, i64, i64 } @finch.gen.load(ptr %t50, { ptr, i64, i64 } { ptr @.str.1801, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1802, i64 2, i64 0 }) + store { ptr, i64, i64 } %t51, ptr %a52 + %t53 = load ptr, ptr %a1 + %t54 = load ptr, ptr %a1 + %t55 = call { ptr, i64, i64 } @finch.gen.op(ptr %t54, { ptr, i64, i64 } { ptr @.str.1804, i64 62, i64 0 }) + %t56 = call { ptr, i64, i64 } @finch.gen.load(ptr %t53, { ptr, i64, i64 } { ptr @.str.1803, i64 3, i64 0 }, { ptr, i64, i64 } %t55) + store { ptr, i64, i64 } %t55, ptr %a57 + call void @finch_str_drop(ptr %a57) + store { ptr, i64, i64 } %t56, ptr %a58 + %t59 = load ptr, ptr %a1 + call void @finch.gen.bufText(ptr %t59, { ptr, i64, i64 } { ptr @.str.1805, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1806, i64 1, i64 0 }) %t60 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t60, { ptr, i64, i64 } { ptr @.str.1736, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1737, 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.1738, 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.1739, 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 %range2725, label %inrange2726 -range2725: - call void @finch_panic_index(ptr @.str.1741, i64 978, i64 3, i64 %t73) + %t61 = load { ptr, i64, i64 }, ptr %a58 + %t62 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t60, { ptr, i64, i64 } %t61) + store { ptr, i64, i64 } %t62, ptr %a63 + %t64 = load ptr, ptr %a1 + %t65 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t64, { ptr, i64, i64 } { ptr @.str.1807, i64 3, i64 0 }) + store { ptr, i64, i64 } %t65, ptr %a66 + %t67 = load ptr, ptr %a1 + %t68 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t67, { ptr, i64, i64 } { ptr @.str.1808, i64 4, i64 0 }) + store { ptr, i64, i64 } %t68, ptr %a69 + %t70 = load ptr, ptr %a1 + %t71 = load { ptr, i64, i64 }, ptr %a63 + %t72 = extractvalue { ptr, i64, i64 } %t71, 1 + %t73 = icmp uge i64 3, %t72 + br i1 %t73, label %range2899, label %inrange2900 +range2899: + call void @finch_panic_index(ptr @.str.1810, i64 1113, i64 3, i64 %t72) unreachable -inrange2726: - %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.1740, 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.1742, 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) - store { ptr, i64, i64 } %t86, ptr %a87 - %t88 = load ptr, ptr %a1 - %t89 = load { ptr, i64, i64 }, ptr %a87 - %t90 = load { ptr, i64, i64 }, ptr %a67 - %t91 = load { ptr, i64, i64 }, ptr %a70 - call void @finch.gen.condBr(ptr %t88, { ptr, i64, i64 } %t89, { ptr, i64, i64 } %t90, { ptr, i64, i64 } %t91) - %t92 = load ptr, ptr %a1 - %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.1743, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1744, i64 2, i64 0 }) +inrange2900: + %t74 = extractvalue { ptr, i64, i64 } %t71, 0 + %t75 = getelementptr inbounds { ptr, i64, i64 }, ptr %t74, i64 3 + %t76 = load { ptr, i64, i64 }, ptr %t75 + store { ptr, i64, i64 } { ptr @.str.1809, i64 13, 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.1811, i64 3, i64 0 }, ptr %a83 + call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) + store { ptr, i64, i64 } %t80, ptr %a84 + call void @finch_str_drop(ptr %a84) + %t85 = load { ptr, i64, i64 }, ptr %a81 + %t86 = call { ptr, i64, i64 } @finch.gen.op(ptr %t70, { ptr, i64, i64 } %t85) + store { ptr, i64, i64 } %t85, ptr %a87 + call void @finch_str_drop(ptr %a87) + store { ptr, i64, i64 } %t86, ptr %a88 + %t89 = load ptr, ptr %a1 + %t90 = load { ptr, i64, i64 }, ptr %a88 + %t91 = load { ptr, i64, i64 }, ptr %a66 + %t92 = load { ptr, i64, i64 }, ptr %a69 + call void @finch.gen.condBr(ptr %t89, { ptr, i64, i64 } %t90, { ptr, i64, i64 } %t91, { ptr, i64, i64 } %t92) + %t93 = load ptr, ptr %a1 + %t94 = load { ptr, i64, i64 }, ptr %a66 + call void @finch.gen.label(ptr %t93, { ptr, i64, i64 } %t94) %t95 = load ptr, ptr %a1 - %t96 = load { ptr, i64, i64 }, ptr %a70 - call void @finch.gen.br(ptr %t95, { ptr, i64, i64 } %t96) - %t97 = load ptr, ptr %a1 - %t98 = load { ptr, i64, i64 }, ptr %a70 - call void @finch.gen.label(ptr %t97, { ptr, i64, i64 } %t98) - %t99 = load ptr, ptr %a1 + call void @finch.gen.bufText(ptr %t95, { ptr, i64, i64 } { ptr @.str.1812, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1813, i64 2, i64 0 }) + %t96 = load ptr, ptr %a1 + %t97 = load { ptr, i64, i64 }, ptr %a69 + call void @finch.gen.br(ptr %t96, { ptr, i64, i64 } %t97) + %t98 = load ptr, ptr %a1 + %t99 = load { ptr, i64, i64 }, ptr %a69 + call void @finch.gen.label(ptr %t98, { ptr, i64, i64 } %t99) %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.1745, 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.1746, 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 - store { ptr, i64, i64 } %t110, 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.1747, 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 %range2727, label %inrange2728 -range2727: - call void @finch_panic_index(ptr @.str.1748, i64 984, i64 3, i64 %t121) + %t101 = load ptr, ptr %a1 + %t102 = load %S.ast.Type, ptr %a49 + %t103 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t101, %S.ast.Type %t102) + store { ptr, i64, i64 } { ptr @.str.1814, i64 23, i64 0 }, ptr %a105 + store { ptr, i64, i64 } %t103, ptr %a106 + call void @finch_str_concat(ptr %a104, ptr %a105, ptr %a106) + store { ptr, i64, i64 } %t103, ptr %a107 + call void @finch_str_drop(ptr %a107) + %t108 = load { ptr, i64, i64 }, ptr %a104 + store { ptr, i64, i64 } %t108, ptr %a110 + store { ptr, i64, i64 } { ptr @.str.1815, i64 6, i64 0 }, ptr %a111 + call void @finch_str_concat(ptr %a109, ptr %a110, ptr %a111) + store { ptr, i64, i64 } %t108, ptr %a112 + call void @finch_str_drop(ptr %a112) + %t113 = load { ptr, i64, i64 }, ptr %a109 + %t114 = load { ptr, i64, i64 }, ptr %a52 + store { ptr, i64, i64 } %t113, ptr %a116 + store { ptr, i64, i64 } %t114, ptr %a117 + call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) + store { ptr, i64, i64 } %t113, ptr %a118 + call void @finch_str_drop(ptr %a118) + %t119 = load { ptr, i64, i64 }, ptr %a115 + store { ptr, i64, i64 } %t119, ptr %a121 + store { ptr, i64, i64 } { ptr @.str.1816, i64 6, i64 0 }, ptr %a122 + call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122) + store { ptr, i64, i64 } %t119, ptr %a123 + call void @finch_str_drop(ptr %a123) + %t124 = load { ptr, i64, i64 }, ptr %a120 + %t125 = load { ptr, i64, i64 }, ptr %a63 + %t126 = extractvalue { ptr, i64, i64 } %t125, 1 + %t127 = icmp uge i64 3, %t126 + br i1 %t127, label %range2901, label %inrange2902 +range2901: + call void @finch_panic_index(ptr @.str.1817, i64 1119, i64 3, i64 %t126) unreachable -inrange2728: - %t123 = extractvalue { ptr, i64, i64 } %t120, 0 - %t124 = getelementptr inbounds { ptr, i64, i64 }, ptr %t123, i64 3 - %t125 = load { ptr, i64, i64 }, ptr %t124 - store { ptr, i64, i64 } %t119, 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 - %t130 = call { ptr, i64, i64 } @finch.gen.op(ptr %t99, { ptr, i64, i64 } %t129) - store { ptr, i64, i64 } %t130, ptr %a131 - %t132 = load ptr, ptr %a1 - %t133 = load ptr, ptr %a1 - %t134 = load ptr, ptr %a1 - %t135 = load %S.ast.Type, ptr %a51 - %t136 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t134, %S.ast.Type %t135) - %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.1749, i64 4, i64 0 }, { ptr, i64, i64 } %t138, %S.ast.Type %t139, i1 true) +inrange2902: + %t128 = extractvalue { ptr, i64, i64 } %t125, 0 + %t129 = getelementptr inbounds { ptr, i64, i64 }, ptr %t128, i64 3 + %t130 = load { ptr, i64, i64 }, ptr %t129 + store { ptr, i64, i64 } %t124, ptr %a132 + store { ptr, i64, i64 } %t130, ptr %a133 + call void @finch_str_concat(ptr %a131, ptr %a132, ptr %a133) + store { ptr, i64, i64 } %t124, ptr %a134 + call void @finch_str_drop(ptr %a134) + %t135 = load { ptr, i64, i64 }, ptr %a131 + %t136 = call { ptr, i64, i64 } @finch.gen.op(ptr %t100, { ptr, i64, i64 } %t135) + store { ptr, i64, i64 } %t135, ptr %a137 + call void @finch_str_drop(ptr %a137) + store { ptr, i64, i64 } %t136, ptr %a138 + %t139 = load ptr, ptr %a1 %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.1750, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1751, i64 1, i64 0 }) - br label %endif2722 -else2721: - %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.1752, 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 %then2729, label %else2730 -then2729: + %t141 = load ptr, ptr %a1 + %t142 = load %S.ast.Type, ptr %a49 + %t143 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t141, %S.ast.Type %t142) + %t144 = load { ptr, i64, i64 }, ptr %a138 + %t145 = call { ptr, i64, i64 } @finch.gen.load(ptr %t140, { ptr, i64, i64 } %t143, { ptr, i64, i64 } %t144) + store { ptr, i64, i64 } %t143, ptr %a146 + call void @finch_str_drop(ptr %a146) + %t147 = load %S.ast.Type, ptr %a49 + call void @finch.gen.emitFormat(ptr %t139, { ptr, i64, i64 } { ptr @.str.1818, i64 4, i64 0 }, { ptr, i64, i64 } %t145, %S.ast.Type %t147, i1 true) + store { ptr, i64, i64 } %t145, ptr %a148 + call void @finch_str_drop(ptr %a148) %t149 = load ptr, ptr %a1 - %t150 = icmp eq ptr %t149, null - br i1 %t150, label %panic2732, label %ok2733 -panic2732: - call void @finch_panic(ptr @.str.1753, i64 990, ptr @.str.1754) + %t150 = load { ptr, i64, i64 }, ptr %a63 + call void @finch.gen.loopEnd(ptr %t149, { ptr, i64, i64 } %t150) + %t151 = load ptr, ptr %a1 + call void @finch.gen.bufText(ptr %t151, { ptr, i64, i64 } { ptr @.str.1819, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1820, i64 1, i64 0 }) + call void @finch_str_drop(ptr %a138) + call void @finch_str_drop(ptr %a88) + call void @finch_str_drop(ptr %a69) + call void @finch_str_drop(ptr %a66) + call void @finch.drop.arr_str(ptr %a63) + call void @finch_str_drop(ptr %a58) + call void @finch_str_drop(ptr %a52) + call void @finch.drop.S_ast_Type(ptr %a49) + br label %endif2896 +else2895: + %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.1821, i64 4, i64 0 }, ptr %a155 + %t156 = call i32 @finch_str_eq(ptr %a154, ptr %a155) + %t157 = icmp ne i32 %t156, 0 + br i1 %t157, label %then2903, label %else2904 +then2903: + %t158 = load ptr, ptr %a1 + %t159 = icmp eq ptr %t158, null + br i1 %t159, label %panic2906, label %ok2907 +panic2906: + call void @finch_panic(ptr @.str.1822, i64 1125, ptr @.str.1823) unreachable -ok2733: - %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 - %t154 = load { ptr, i64, i64 }, ptr %t153 - %t155 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t156 = load { ptr, i64, i64 }, ptr %t155 - %t157 = call i64 @finch.gen.findEnum(ptr %t152, { ptr, i64, i64 } %t154, { ptr, i64, i64 } %t156) - %t158 = load { ptr, i64, i64 }, ptr %t151 - %t159 = extractvalue { ptr, i64, i64 } %t158, 1 - %t160 = icmp uge i64 %t157, %t159 - br i1 %t160, label %range2734, label %inrange2735 -range2734: - call void @finch_panic_index(ptr @.str.1755, i64 990, i64 %t157, i64 %t159) +ok2907: + %t160 = getelementptr inbounds %S.gen.Gen, ptr %t158, i32 0, i32 21 + %t161 = load ptr, ptr %a1 + %t162 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 + %t163 = load { ptr, i64, i64 }, ptr %t162 + %t164 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 + %t165 = load { ptr, i64, i64 }, ptr %t164 + %t166 = call i64 @finch.gen.findEnum(ptr %t161, { ptr, i64, i64 } %t163, { ptr, i64, i64 } %t165) + %t167 = load { ptr, i64, i64 }, ptr %t160 + %t168 = extractvalue { ptr, i64, i64 } %t167, 1 + %t169 = icmp uge i64 %t166, %t168 + br i1 %t169, label %range2908, label %inrange2909 +range2908: + call void @finch_panic_index(ptr @.str.1824, i64 1125, i64 %t166, i64 %t168) unreachable -inrange2735: - %t161 = extractvalue { ptr, i64, i64 } %t158, 0 - %t162 = getelementptr inbounds %S.gen.EnumDef, ptr %t161, i64 %t157 - %t163 = load %S.gen.EnumDef, ptr %t162 - store %S.gen.EnumDef %t163, ptr %a164 - call void @finch.copy.S_gen_EnumDef(ptr %a165, ptr %a164) - %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.1756, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1757, 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.1758, 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.1759, 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 - %t179 = getelementptr inbounds %S.gen.EnumDef, ptr %a167, i32 0, i32 2 - %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.cond2736 -for.cond2736: - %t183 = load i64, ptr %a182 - %t184 = icmp slt i64 %t183, %t181 - br i1 %t184, label %for.body2737, label %for.end2739 -for.body2737: - %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.1760, 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)) - %t190 = load ptr, ptr %a178 - %t191 = getelementptr inbounds { ptr, i64, i64 }, ptr %t190, i64 %t188 - store { ptr, i64, i64 } %t187, ptr %t191 - store i64 %t189, ptr %t185 - %t192 = getelementptr inbounds { ptr, i64, i64 }, ptr %a177, i32 0, i32 1 - %t193 = getelementptr inbounds %S.gen.EnumDef, ptr %a167, i32 0, i32 3 - %t194 = load i64, ptr %a182 - %t195 = load { ptr, i64, i64 }, ptr %t193 - %t196 = extractvalue { ptr, i64, i64 } %t195, 1 - %t197 = icmp uge i64 %t194, %t196 - br i1 %t197, label %range2740, label %inrange2741 -range2740: - call void @finch_panic_index(ptr @.str.1762, i64 998, i64 %t194, i64 %t196) +inrange2909: + %t170 = extractvalue { ptr, i64, i64 } %t167, 0 + %t171 = getelementptr inbounds %S.gen.EnumDef, ptr %t170, i64 %t166 + %t172 = load %S.gen.EnumDef, ptr %t171 + store %S.gen.EnumDef %t172, ptr %a173 + call void @finch.copy.S_gen_EnumDef(ptr %a174, ptr %a173) + %t175 = load %S.gen.EnumDef, ptr %a174 + store %S.gen.EnumDef %t175, ptr %a176 + %t177 = load ptr, ptr %a1 + %t178 = call { ptr, i64, i64 } @finch.gen.load(ptr %t177, { ptr, i64, i64 } { ptr @.str.1825, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1826, i64 2, i64 0 }) + store { ptr, i64, i64 } %t178, ptr %a179 + %t180 = load ptr, ptr %a1 + %t181 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t180, { ptr, i64, i64 } { ptr @.str.1827, i64 10, i64 0 }) + store { ptr, i64, i64 } %t181, ptr %a182 + %t183 = load ptr, ptr %a1 + %t184 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t183, { ptr, i64, i64 } { ptr @.str.1828, i64 9, i64 0 }) + store { ptr, i64, i64 } %t184, ptr %a185 + store { ptr, i64, i64 } zeroinitializer, ptr %a186 + store { ptr, i64, i64 } zeroinitializer, ptr %a187 + %t188 = getelementptr inbounds %S.gen.EnumDef, ptr %a176, i32 0, i32 2 + %t189 = getelementptr inbounds { ptr, i64, i64 }, ptr %t188, i32 0, i32 1 + %t190 = load i64, ptr %t189 + store i64 0, ptr %a191 + br label %for.cond2910 +for.cond2910: + %t192 = load i64, ptr %a191 + %t193 = icmp slt i64 %t192, %t190 + br i1 %t193, label %for.body2911, label %for.end2913 +for.body2911: + %t194 = getelementptr inbounds { ptr, i64, i64 }, ptr %a187, i32 0, i32 1 + %t195 = load ptr, ptr %a1 + %t196 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t195, { ptr, i64, i64 } { ptr @.str.1829, i64 6, i64 0 }) + %t197 = load i64, ptr %t194 + %t198 = add i64 %t197, 1 + call void @finch_arr_reserve(ptr %a187, i64 %t198, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t199 = load ptr, ptr %a187 + %t200 = getelementptr inbounds { ptr, i64, i64 }, ptr %t199, i64 %t197 + store { ptr, i64, i64 } %t196, ptr %t200 + store i64 %t198, ptr %t194 + %t201 = getelementptr inbounds { ptr, i64, i64 }, ptr %a186, i32 0, i32 1 + %t202 = getelementptr inbounds %S.gen.EnumDef, ptr %a176, i32 0, i32 3 + %t203 = load i64, ptr %a191 + %t204 = load { ptr, i64, i64 }, ptr %t202 + %t205 = extractvalue { ptr, i64, i64 } %t204, 1 + %t206 = icmp uge i64 %t203, %t205 + br i1 %t206, label %range2914, label %inrange2915 +range2914: + call void @finch_panic_index(ptr @.str.1831, i64 1133, i64 %t203, i64 %t205) unreachable -inrange2741: - %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.1761, 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.1763, 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 %range2742, label %inrange2743 -range2742: - call void @finch_panic_index(ptr @.str.1764, i64 998, i64 %t211, i64 %t213) +inrange2915: + %t207 = extractvalue { ptr, i64, i64 } %t204, 0 + %t208 = getelementptr inbounds i64, ptr %t207, i64 %t203 + %t209 = load i64, ptr %t208 + call void @finch_str_from_int(ptr %a210, i64 %t209) + %t211 = load { ptr, i64, i64 }, ptr %a210 + store { ptr, i64, i64 } { ptr @.str.1830, i64 4, i64 0 }, ptr %a213 + store { ptr, i64, i64 } %t211, ptr %a214 + call void @finch_str_concat(ptr %a212, ptr %a213, ptr %a214) + store { ptr, i64, i64 } %t211, ptr %a215 + call void @finch_str_drop(ptr %a215) + %t216 = load { ptr, i64, i64 }, ptr %a212 + store { ptr, i64, i64 } %t216, ptr %a218 + store { ptr, i64, i64 } { ptr @.str.1832, i64 9, i64 0 }, ptr %a219 + call void @finch_str_concat(ptr %a217, ptr %a218, ptr %a219) + store { ptr, i64, i64 } %t216, ptr %a220 + call void @finch_str_drop(ptr %a220) + %t221 = load { ptr, i64, i64 }, ptr %a217 + %t222 = load i64, ptr %a191 + %t223 = load { ptr, i64, i64 }, ptr %a187 + %t224 = extractvalue { ptr, i64, i64 } %t223, 1 + %t225 = icmp uge i64 %t222, %t224 + br i1 %t225, label %range2916, label %inrange2917 +range2916: + call void @finch_panic_index(ptr @.str.1833, i64 1133, i64 %t222, i64 %t224) unreachable -inrange2743: - %t215 = extractvalue { ptr, i64, i64 } %t212, 0 - %t216 = getelementptr inbounds { ptr, i64, i64 }, ptr %t215, i64 %t211 - %t217 = load { ptr, i64, i64 }, ptr %t216 - store { ptr, i64, i64 } %t210, ptr %a219 - store { ptr, i64, i64 } %t217, ptr %a220 - call void @finch_str_concat(ptr %a218, ptr %a219, ptr %a220) - %t221 = load { ptr, i64, i64 }, ptr %a218 - %t222 = load i64, ptr %t192 - %t223 = add i64 %t222, 1 - call void @finch_arr_reserve(ptr %a177, i64 %t223, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t224 = load ptr, ptr %a177 - %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.step2738 -for.step2738: - %t226 = load i64, ptr %a182 - %t227 = add i64 %t226, 1 - store i64 %t227, ptr %a182 - br label %for.cond2736 -for.end2739: - %t228 = load ptr, ptr %a1 - %t229 = load { ptr, i64, i64 }, ptr %a170 - store { ptr, i64, i64 } { ptr @.str.1765, 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.1766, 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 - store { ptr, i64, i64 } %t237, 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.1767, 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.1768, 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 +inrange2917: + %t226 = extractvalue { ptr, i64, i64 } %t223, 0 + %t227 = getelementptr inbounds { ptr, i64, i64 }, ptr %t226, i64 %t222 + %t228 = load { ptr, i64, i64 }, ptr %t227 + store { ptr, i64, i64 } %t221, ptr %a230 + store { ptr, i64, i64 } %t228, ptr %a231 + call void @finch_str_concat(ptr %a229, ptr %a230, ptr %a231) + store { ptr, i64, i64 } %t221, ptr %a232 + call void @finch_str_drop(ptr %a232) + %t233 = load { ptr, i64, i64 }, ptr %a229 + %t234 = load i64, ptr %t201 + %t235 = add i64 %t234, 1 + call void @finch_arr_reserve(ptr %a186, i64 %t235, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t236 = load ptr, ptr %a186 + %t237 = getelementptr inbounds { ptr, i64, i64 }, ptr %t236, i64 %t234 + store { ptr, i64, i64 } %t233, ptr %t237 + store i64 %t235, ptr %t201 + br label %for.step2912 +for.step2912: + %t238 = load i64, ptr %a191 + %t239 = add i64 %t238, 1 + store i64 %t239, ptr %a191 + br label %for.cond2910 +for.end2913: + %t240 = load ptr, ptr %a1 + %t241 = load { ptr, i64, i64 }, ptr %a179 + store { ptr, i64, i64 } { ptr @.str.1834, i64 11, i64 0 }, 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.1835, i64 9, i64 0 }, ptr %a248 + call void @finch_str_concat(ptr %a246, ptr %a247, ptr %a248) + store { ptr, i64, i64 } %t245, ptr %a249 + call void @finch_str_drop(ptr %a249) + %t250 = load { ptr, i64, i64 }, ptr %a246 + %t251 = load { ptr, i64, i64 }, ptr %a182 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.1769, 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 %panic2744, label %ok2745 -panic2744: - call void @finch_panic(ptr @.str.1770, i64 1001, ptr @.str.1771) + store { ptr, i64, i64 } %t251, ptr %a254 + call void @finch_str_concat(ptr %a252, ptr %a253, ptr %a254) + store { ptr, i64, i64 } %t250, ptr %a255 + call void @finch_str_drop(ptr %a255) + %t256 = load { ptr, i64, i64 }, ptr %a252 + store { ptr, i64, i64 } %t256, ptr %a258 + store { ptr, i64, i64 } { ptr @.str.1836, i64 3, i64 0 }, ptr %a259 + call void @finch_str_concat(ptr %a257, ptr %a258, ptr %a259) + store { ptr, i64, i64 } %t256, ptr %a260 + call void @finch_str_drop(ptr %a260) + %t261 = load { ptr, i64, i64 }, ptr %a257 + %t262 = getelementptr inbounds { ptr, i64, i64 }, ptr %a186, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.1837, i64 1, i64 0 }, ptr %a263 + call void @finch_str_join(ptr %a264, ptr %a186, ptr %a263) + %t265 = load { ptr, i64, i64 }, ptr %a264 + store { ptr, i64, i64 } %t261, ptr %a267 + store { ptr, i64, i64 } %t265, ptr %a268 + call void @finch_str_concat(ptr %a266, ptr %a267, ptr %a268) + store { ptr, i64, i64 } %t261, ptr %a269 + call void @finch_str_drop(ptr %a269) + store { ptr, i64, i64 } %t265, ptr %a270 + call void @finch_str_drop(ptr %a270) + %t271 = load { ptr, i64, i64 }, ptr %a266 + store { ptr, i64, i64 } %t271, ptr %a273 + store { ptr, i64, i64 } { ptr @.str.1838, i64 2, i64 0 }, ptr %a274 + call void @finch_str_concat(ptr %a272, ptr %a273, ptr %a274) + store { ptr, i64, i64 } %t271, ptr %a275 + call void @finch_str_drop(ptr %a275) + %t276 = load { ptr, i64, i64 }, ptr %a272 + call void @finch.gen.emit(ptr %t240, { ptr, i64, i64 } %t276) + store { ptr, i64, i64 } %t276, ptr %a277 + call void @finch_str_drop(ptr %a277) + %t278 = load ptr, ptr %a1 + %t279 = icmp eq ptr %t278, null + br i1 %t279, label %panic2918, label %ok2919 +panic2918: + call void @finch_panic(ptr @.str.1839, i64 1136, ptr @.str.1840) unreachable -ok2745: - %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.cond2746 -for.cond2746: - %t266 = load i64, ptr %a265 - %t267 = icmp slt i64 %t266, %t264 - br i1 %t267, label %for.body2747, label %for.end2749 -for.body2747: - %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 %range2750, label %inrange2751 -range2750: - call void @finch_panic_index(ptr @.str.1772, i64 1003, i64 %t269, i64 %t271) +ok2919: + %t280 = getelementptr inbounds %S.gen.Gen, ptr %t278, i32 0, i32 9 + store i1 true, ptr %t280 + %t281 = getelementptr inbounds %S.gen.EnumDef, ptr %a176, i32 0, i32 2 + %t282 = getelementptr inbounds { ptr, i64, i64 }, ptr %t281, i32 0, i32 1 + %t283 = load i64, ptr %t282 + store i64 0, ptr %a284 + br label %for.cond2920 +for.cond2920: + %t285 = load i64, ptr %a284 + %t286 = icmp slt i64 %t285, %t283 + br i1 %t286, label %for.body2921, label %for.end2923 +for.body2921: + %t287 = load ptr, ptr %a1 + %t288 = load i64, ptr %a284 + %t289 = load { ptr, i64, i64 }, ptr %a187 + %t290 = extractvalue { ptr, i64, i64 } %t289, 1 + %t291 = icmp uge i64 %t288, %t290 + br i1 %t291, label %range2924, label %inrange2925 +range2924: + call void @finch_panic_index(ptr @.str.1841, i64 1138, i64 %t288, i64 %t290) unreachable -inrange2751: - %t273 = extractvalue { ptr, i64, i64 } %t270, 0 - %t274 = getelementptr inbounds { ptr, i64, i64 }, ptr %t273, i64 %t269 - %t275 = load { ptr, i64, i64 }, ptr %t274 - call void @finch.gen.label(ptr %t268, { ptr, i64, i64 } %t275) - %t276 = load ptr, ptr %a1 - %t277 = getelementptr inbounds %S.gen.EnumDef, ptr %a167, i32 0, i32 2 - %t278 = load i64, ptr %a265 - %t279 = load { ptr, i64, i64 }, ptr %t277 - %t280 = extractvalue { ptr, i64, i64 } %t279, 1 - %t281 = icmp uge i64 %t278, %t280 - br i1 %t281, label %range2752, label %inrange2753 -range2752: - call void @finch_panic_index(ptr @.str.1774, i64 1004, i64 %t278, i64 %t280) +inrange2925: + %t292 = extractvalue { ptr, i64, i64 } %t289, 0 + %t293 = getelementptr inbounds { ptr, i64, i64 }, ptr %t292, i64 %t288 + %t294 = load { ptr, i64, i64 }, ptr %t293 + call void @finch.gen.label(ptr %t287, { ptr, i64, i64 } %t294) + %t295 = load ptr, ptr %a1 + %t296 = getelementptr inbounds %S.gen.EnumDef, ptr %a176, i32 0, i32 2 + %t297 = load i64, ptr %a284 + %t298 = load { ptr, i64, i64 }, ptr %t296 + %t299 = extractvalue { ptr, i64, i64 } %t298, 1 + %t300 = icmp uge i64 %t297, %t299 + br i1 %t300, label %range2926, label %inrange2927 +range2926: + call void @finch_panic_index(ptr @.str.1843, i64 1139, i64 %t297, i64 %t299) unreachable -inrange2753: - %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.1773, 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.step2748 -for.step2748: - %t287 = load i64, ptr %a265 - %t288 = add i64 %t287, 1 - store i64 %t288, ptr %a265 - br label %for.cond2746 -for.end2749: - %t289 = load ptr, ptr %a1 - %t290 = load { ptr, i64, i64 }, ptr %a173 - call void @finch.gen.label(ptr %t289, { ptr, i64, i64 } %t290) - %t291 = load ptr, ptr %a1 - %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.1776, 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.1775, 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.1778, 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.1779, 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.1777, 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.1780, 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) +inrange2927: + %t301 = extractvalue { ptr, i64, i64 } %t298, 0 + %t302 = getelementptr inbounds { ptr, i64, i64 }, ptr %t301, i64 %t297 + %t303 = load { ptr, i64, i64 }, ptr %t302 + call void @finch.gen.bufText(ptr %t295, { ptr, i64, i64 } { ptr @.str.1842, i64 4, i64 0 }, { ptr, i64, i64 } %t303) + %t304 = load ptr, ptr %a1 + %t305 = load { ptr, i64, i64 }, ptr %a185 + call void @finch.gen.br(ptr %t304, { ptr, i64, i64 } %t305) + br label %for.step2922 +for.step2922: + %t306 = load i64, ptr %a284 + %t307 = add i64 %t306, 1 + store i64 %t307, ptr %a284 + br label %for.cond2920 +for.end2923: + %t308 = load ptr, ptr %a1 + %t309 = load { ptr, i64, i64 }, ptr %a182 + call void @finch.gen.label(ptr %t308, { ptr, i64, i64 } %t309) + %t310 = load ptr, ptr %a1 + %t311 = getelementptr inbounds %S.gen.EnumDef, ptr %a176, i32 0, i32 1 + %t312 = load { ptr, i64, i64 }, ptr %t311 + store { ptr, i64, i64 } %t312, ptr %a314 + store { ptr, i64, i64 } { ptr @.str.1845, i64 1, i64 0 }, ptr %a315 + call void @finch_str_concat(ptr %a313, ptr %a314, ptr %a315) + %t316 = load { ptr, i64, i64 }, ptr %a313 + call void @finch.gen.bufText(ptr %t310, { ptr, i64, i64 } { ptr @.str.1844, i64 4, i64 0 }, { ptr, i64, i64 } %t316) + store { ptr, i64, i64 } %t316, ptr %a317 + call void @finch_str_drop(ptr %a317) %t318 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t318, { ptr, i64, i64 } { ptr @.str.1781, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1782, 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 %endif2731 -else2730: - %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.1783, 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 %then2754, label %else2755 -then2754: - %t329 = load ptr, ptr %a1 - %t330 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t329, { ptr, i64, i64 } { ptr @.str.1784, 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.1785, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.1786, 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.1787, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1788, 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.1790, 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.1791, 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.1789, i64 3, i64 0 }, { ptr, i64, i64 } %t348) + %t320 = load { ptr, i64, i64 }, ptr %a179 + store { ptr, i64, i64 } { ptr @.str.1847, i64 9, i64 0 }, 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.1848, i64 7, i64 0 }, ptr %a327 + call void @finch_str_concat(ptr %a325, ptr %a326, ptr %a327) + store { ptr, i64, i64 } %t324, ptr %a328 + call void @finch_str_drop(ptr %a328) + %t329 = load { ptr, i64, i64 }, ptr %a325 + %t330 = call { ptr, i64, i64 } @finch.gen.op(ptr %t319, { ptr, i64, i64 } %t329) + store { ptr, i64, i64 } %t329, ptr %a331 + call void @finch_str_drop(ptr %a331) + store { ptr, i64, i64 } { ptr @.str.1846, i64 39, i64 0 }, ptr %a333 + store { ptr, i64, i64 } %t330, ptr %a334 + call void @finch_str_concat(ptr %a332, ptr %a333, ptr %a334) + store { ptr, i64, i64 } %t330, ptr %a335 + call void @finch_str_drop(ptr %a335) + %t336 = load { ptr, i64, i64 }, ptr %a332 + store { ptr, i64, i64 } %t336, ptr %a338 + store { ptr, i64, i64 } { ptr @.str.1849, i64 1, i64 0 }, ptr %a339 + call void @finch_str_concat(ptr %a337, ptr %a338, ptr %a339) + store { ptr, i64, i64 } %t336, ptr %a340 + call void @finch_str_drop(ptr %a340) + %t341 = load { ptr, i64, i64 }, ptr %a337 + call void @finch.gen.emit(ptr %t318, { ptr, i64, i64 } %t341) + store { ptr, i64, i64 } %t341, ptr %a342 + call void @finch_str_drop(ptr %a342) + %t343 = load ptr, ptr %a1 + call void @finch.gen.bufText(ptr %t343, { ptr, i64, i64 } { ptr @.str.1850, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1851, i64 1, i64 0 }) + %t344 = load ptr, ptr %a1 + %t345 = load { ptr, i64, i64 }, ptr %a185 + call void @finch.gen.br(ptr %t344, { ptr, i64, i64 } %t345) + %t346 = load ptr, ptr %a1 + %t347 = load { ptr, i64, i64 }, ptr %a185 + call void @finch.gen.label(ptr %t346, { ptr, i64, i64 } %t347) + call void @finch.drop.arr_str(ptr %a187) + call void @finch.drop.arr_str(ptr %a186) + call void @finch_str_drop(ptr %a185) + call void @finch_str_drop(ptr %a182) + call void @finch_str_drop(ptr %a179) + call void @finch.drop.S_gen_EnumDef(ptr %a176) + br label %endif2905 +else2904: + %t348 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 + %t349 = load { ptr, i64, i64 }, ptr %t348 store { ptr, i64, i64 } %t349, ptr %a350 - %t351 = load ptr, ptr %a1 - %t352 = load { ptr, i64, i64 }, ptr %a350 - %t353 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t351, { ptr, i64, i64 } %t352) - store { ptr, i64, i64 } %t353, ptr %a354 - %t355 = load ptr, ptr %a1 - %t356 = load %S.ast.Type, ptr %a2 - %t357 = load { ptr, i64, i64 }, ptr %a354 - %t358 = extractvalue { ptr, i64, i64 } %t357, 1 - %t359 = icmp uge i64 3, %t358 - br i1 %t359, label %range2757, label %inrange2758 -range2757: - call void @finch_panic_index(ptr @.str.1793, i64 1020, i64 3, i64 %t358) - unreachable -inrange2758: - %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.1792, 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.1794, 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.1795, i64 10, i64 0 }) - store { ptr, i64, i64 } %t369, ptr %a370 - %t371 = load ptr, ptr %a1 - %t372 = load ptr, ptr %a1 - %t373 = load ptr, ptr %a1 - %t374 = load ptr, ptr %a1 - %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.1797, i64 3, i64 0 }, { ptr, i64, i64 } %t377) - store { ptr, i64, i64 } { ptr @.str.1796, 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.1798, i64 3, i64 0 }, ptr %a385 - call void @finch_str_concat(ptr %a383, ptr %a384, ptr %a385) + store { ptr, i64, i64 } { ptr @.str.1852, i64 3, i64 0 }, ptr %a351 + %t352 = call i32 @finch_str_eq(ptr %a350, ptr %a351) + %t353 = icmp ne i32 %t352, 0 + br i1 %t353, label %then2928, label %else2929 +then2928: + %t354 = load ptr, ptr %a1 + %t355 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t354, { ptr, i64, i64 } { ptr @.str.1853, i64 2, i64 0 }) + store { ptr, i64, i64 } %t355, ptr %a356 + %t357 = load ptr, ptr %a1 + %t358 = load { ptr, i64, i64 }, ptr %a356 + call void @finch.gen.store(ptr %t357, { ptr, i64, i64 } { ptr @.str.1854, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.1855, i64 4, i64 0 }, { ptr, i64, i64 } %t358) + %t359 = load ptr, ptr %a1 + call void @finch.gen.bufText(ptr %t359, { ptr, i64, i64 } { ptr @.str.1856, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1857, i64 1, i64 0 }) + %t360 = load ptr, ptr %a1 + %t361 = load ptr, ptr %a1 + %t362 = load ptr, ptr %a1 + %t363 = load %S.ast.Type, ptr %a2 + %t364 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t362, %S.ast.Type %t363) + store { ptr, i64, i64 } { ptr @.str.1859, i64 23, i64 0 }, ptr %a366 + store { ptr, i64, i64 } %t364, ptr %a367 + call void @finch_str_concat(ptr %a365, ptr %a366, ptr %a367) + store { ptr, i64, i64 } %t364, ptr %a368 + call void @finch_str_drop(ptr %a368) + %t369 = load { ptr, i64, i64 }, ptr %a365 + store { ptr, i64, i64 } %t369, ptr %a371 + store { ptr, i64, i64 } { ptr @.str.1860, i64 22, i64 0 }, ptr %a372 + call void @finch_str_concat(ptr %a370, ptr %a371, ptr %a372) + store { ptr, i64, i64 } %t369, ptr %a373 + call void @finch_str_drop(ptr %a373) + %t374 = load { ptr, i64, i64 }, ptr %a370 + %t375 = call { ptr, i64, i64 } @finch.gen.op(ptr %t361, { ptr, i64, i64 } %t374) + store { ptr, i64, i64 } %t374, ptr %a376 + call void @finch_str_drop(ptr %a376) + %t377 = call { ptr, i64, i64 } @finch.gen.load(ptr %t360, { ptr, i64, i64 } { ptr @.str.1858, i64 3, i64 0 }, { ptr, i64, i64 } %t375) + store { ptr, i64, i64 } %t375, ptr %a378 + call void @finch_str_drop(ptr %a378) + store { ptr, i64, i64 } %t377, ptr %a379 + %t380 = load ptr, ptr %a1 + %t381 = load { ptr, i64, i64 }, ptr %a379 + %t382 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t380, { ptr, i64, i64 } %t381) + store { ptr, i64, i64 } %t382, ptr %a383 + %t384 = load ptr, ptr %a1 + %t385 = load %S.ast.Type, ptr %a2 %t386 = load { ptr, i64, i64 }, ptr %a383 - %t387 = call { ptr, i64, i64 } @finch.gen.op(ptr %t372, { ptr, i64, i64 } %t386) - %t388 = load { ptr, i64, i64 }, ptr %a367 - %t389 = load { ptr, i64, i64 }, ptr %a370 - call void @finch.gen.condBr(ptr %t371, { ptr, i64, i64 } %t387, { ptr, i64, i64 } %t388, { ptr, i64, i64 } %t389) - %t390 = load ptr, ptr %a1 - %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.1799, 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.1800, 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.1801, 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) - %t404 = load ptr, ptr %a1 - %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.1802, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1803, 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) - %t409 = load ptr, ptr %a1 - %t410 = load { ptr, i64, i64 }, ptr %a397 - 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.1804, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.1805, i64 5, i64 0 }, { ptr, i64, i64 } %t412) - %t413 = load ptr, ptr %a1 - %t414 = load ptr, ptr %a1 - %t415 = load ptr, ptr %a1 - %t416 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t417 = load { ptr, i64, i64 }, ptr %t416 - %t418 = extractvalue { ptr, i64, i64 } %t417, 1 - %t419 = icmp uge i64 0, %t418 - br i1 %t419, label %range2759, label %inrange2760 -range2759: - call void @finch_panic_index(ptr @.str.1807, i64 1033, i64 0, i64 %t418) + %t387 = extractvalue { ptr, i64, i64 } %t386, 1 + %t388 = icmp uge i64 3, %t387 + br i1 %t388, label %range2931, label %inrange2932 +range2931: + call void @finch_panic_index(ptr @.str.1862, i64 1155, i64 3, i64 %t387) unreachable -inrange2760: - %t420 = extractvalue { ptr, i64, i64 } %t417, 0 - %t421 = getelementptr inbounds %S.ast.Type, ptr %t420, i64 0 - %t422 = load %S.ast.Type, ptr %t421 - %t423 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t415, %S.ast.Type %t422) +inrange2932: + %t389 = extractvalue { ptr, i64, i64 } %t386, 0 + %t390 = getelementptr inbounds { ptr, i64, i64 }, ptr %t389, i64 3 + %t391 = load { ptr, i64, i64 }, ptr %t390 + %t392 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t384, { ptr, i64, i64 } { ptr @.str.1861, i64 2, i64 0 }, %S.ast.Type %t385, { ptr, i64, i64 } %t391) + store { ptr, i64, i64 } %t392, ptr %a393 + %t394 = load ptr, ptr %a1 + %t395 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t394, { ptr, i64, i64 } { ptr @.str.1863, i64 10, i64 0 }) + store { ptr, i64, i64 } %t395, ptr %a396 + %t397 = load ptr, ptr %a1 + %t398 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t397, { ptr, i64, i64 } { ptr @.str.1864, i64 10, i64 0 }) + store { ptr, i64, i64 } %t398, ptr %a399 + %t400 = load ptr, ptr %a1 + %t401 = load ptr, ptr %a1 + %t402 = load ptr, ptr %a1 + %t403 = load ptr, ptr %a1 + %t404 = load { ptr, i64, i64 }, ptr %a393 + %t405 = load %S.ast.Type, ptr %a2 + %t406 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t403, { ptr, i64, i64 } %t404, %S.ast.Type %t405, i64 0) + %t407 = call { ptr, i64, i64 } @finch.gen.load(ptr %t402, { ptr, i64, i64 } { ptr @.str.1866, i64 3, i64 0 }, { ptr, i64, i64 } %t406) + store { ptr, i64, i64 } %t406, ptr %a408 + call void @finch_str_drop(ptr %a408) + store { ptr, i64, i64 } { ptr @.str.1865, i64 12, i64 0 }, ptr %a410 + store { ptr, i64, i64 } %t407, ptr %a411 + call void @finch_str_concat(ptr %a409, ptr %a410, ptr %a411) + store { ptr, i64, i64 } %t407, ptr %a412 + call void @finch_str_drop(ptr %a412) + %t413 = load { ptr, i64, i64 }, ptr %a409 + store { ptr, i64, i64 } %t413, ptr %a415 + store { ptr, i64, i64 } { ptr @.str.1867, i64 3, i64 0 }, ptr %a416 + call void @finch_str_concat(ptr %a414, ptr %a415, ptr %a416) + store { ptr, i64, i64 } %t413, ptr %a417 + call void @finch_str_drop(ptr %a417) + %t418 = load { ptr, i64, i64 }, ptr %a414 + %t419 = call { ptr, i64, i64 } @finch.gen.op(ptr %t401, { ptr, i64, i64 } %t418) + store { ptr, i64, i64 } %t418, ptr %a420 + call void @finch_str_drop(ptr %a420) + %t421 = load { ptr, i64, i64 }, ptr %a396 + %t422 = load { ptr, i64, i64 }, ptr %a399 + call void @finch.gen.condBr(ptr %t400, { ptr, i64, i64 } %t419, { ptr, i64, i64 } %t421, { ptr, i64, i64 } %t422) + store { ptr, i64, i64 } %t419, ptr %a423 + call void @finch_str_drop(ptr %a423) %t424 = load ptr, ptr %a1 - %t425 = load { ptr, i64, i64 }, ptr %a364 - %t426 = load %S.ast.Type, ptr %a2 - %t427 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t424, { ptr, i64, i64 } %t425, %S.ast.Type %t426, i64 1) - %t428 = call { ptr, i64, i64 } @finch.gen.load(ptr %t414, { ptr, i64, i64 } %t423, { ptr, i64, i64 } %t427) - %t429 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t430 = load { ptr, i64, i64 }, ptr %t429 - %t431 = extractvalue { ptr, i64, i64 } %t430, 1 - %t432 = icmp uge i64 0, %t431 - br i1 %t432, label %range2761, label %inrange2762 -range2761: - call void @finch_panic_index(ptr @.str.1808, i64 1033, i64 0, i64 %t431) - unreachable -inrange2762: - %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.1806, 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.1809, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1810, i64 2, i64 0 }) - %t437 = load ptr, ptr %a1 - %t438 = load ptr, ptr %a1 + %t425 = load { ptr, i64, i64 }, ptr %a396 + call void @finch.gen.label(ptr %t424, { ptr, i64, i64 } %t425) + %t426 = load ptr, ptr %a1 + %t427 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t426, { ptr, i64, i64 } { ptr @.str.1868, i64 3, i64 0 }) + store { ptr, i64, i64 } %t427, ptr %a428 + %t429 = load ptr, ptr %a1 + %t430 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t429, { ptr, i64, i64 } { ptr @.str.1869, i64 4, i64 0 }) + store { ptr, i64, i64 } %t430, ptr %a431 + %t432 = load ptr, ptr %a1 + %t433 = load ptr, ptr %a1 + %t434 = load { ptr, i64, i64 }, ptr %a356 + %t435 = call { ptr, i64, i64 } @finch.gen.load(ptr %t433, { ptr, i64, i64 } { ptr @.str.1870, i64 2, i64 0 }, { ptr, i64, i64 } %t434) + %t436 = load { ptr, i64, i64 }, ptr %a431 + %t437 = load { ptr, i64, i64 }, ptr %a428 + call void @finch.gen.condBr(ptr %t432, { ptr, i64, i64 } %t435, { ptr, i64, i64 } %t436, { ptr, i64, i64 } %t437) + store { ptr, i64, i64 } %t435, ptr %a438 + call void @finch_str_drop(ptr %a438) %t439 = load ptr, ptr %a1 - %t440 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t441 = load { ptr, i64, i64 }, ptr %t440 - %t442 = extractvalue { ptr, i64, i64 } %t441, 1 - %t443 = icmp uge i64 1, %t442 - br i1 %t443, label %range2763, label %inrange2764 -range2763: - call void @finch_panic_index(ptr @.str.1812, i64 1035, i64 1, i64 %t442) - unreachable -inrange2764: - %t444 = extractvalue { ptr, i64, i64 } %t441, 0 - %t445 = getelementptr inbounds %S.ast.Type, ptr %t444, i64 1 - %t446 = load %S.ast.Type, ptr %t445 - %t447 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t439, %S.ast.Type %t446) + %t440 = load { ptr, i64, i64 }, ptr %a428 + call void @finch.gen.label(ptr %t439, { ptr, i64, i64 } %t440) + %t441 = load ptr, ptr %a1 + call void @finch.gen.bufText(ptr %t441, { ptr, i64, i64 } { ptr @.str.1871, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1872, i64 2, i64 0 }) + %t442 = load ptr, ptr %a1 + %t443 = load { ptr, i64, i64 }, ptr %a431 + call void @finch.gen.br(ptr %t442, { ptr, i64, i64 } %t443) + %t444 = load ptr, ptr %a1 + %t445 = load { ptr, i64, i64 }, ptr %a431 + call void @finch.gen.label(ptr %t444, { ptr, i64, i64 } %t445) + %t446 = load ptr, ptr %a1 + %t447 = load { ptr, i64, i64 }, ptr %a356 + call void @finch.gen.store(ptr %t446, { ptr, i64, i64 } { ptr @.str.1873, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.1874, i64 5, i64 0 }, { ptr, i64, i64 } %t447) %t448 = load ptr, ptr %a1 - %t449 = load { ptr, i64, i64 }, ptr %a364 - %t450 = load %S.ast.Type, ptr %a2 - %t451 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t448, { ptr, i64, i64 } %t449, %S.ast.Type %t450, i64 2) - %t452 = call { ptr, i64, i64 } @finch.gen.load(ptr %t438, { ptr, i64, i64 } %t447, { ptr, i64, i64 } %t451) - %t453 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t454 = load { ptr, i64, i64 }, ptr %t453 - %t455 = extractvalue { ptr, i64, i64 } %t454, 1 - %t456 = icmp uge i64 1, %t455 - br i1 %t456, label %range2765, label %inrange2766 -range2765: - call void @finch_panic_index(ptr @.str.1813, i64 1035, i64 1, i64 %t455) + %t449 = load ptr, ptr %a1 + %t450 = load ptr, ptr %a1 + %t451 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t452 = load { ptr, i64, i64 }, ptr %t451 + %t453 = extractvalue { ptr, i64, i64 } %t452, 1 + %t454 = icmp uge i64 0, %t453 + br i1 %t454, label %range2933, label %inrange2934 +range2933: + call void @finch_panic_index(ptr @.str.1876, i64 1168, i64 0, i64 %t453) unreachable -inrange2766: - %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.1811, 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) - %t462 = load ptr, ptr %a1 - %t463 = load { ptr, i64, i64 }, ptr %a370 - call void @finch.gen.label(ptr %t462, { ptr, i64, i64 } %t463) - %t464 = load ptr, ptr %a1 - %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.1814, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1815, i64 1, i64 0 }) - br label %endif2756 -else2755: - %t467 = load ptr, ptr %a1 - %t468 = icmp eq ptr %t467, null - br i1 %t468, label %panic2767, label %ok2768 -panic2767: - call void @finch_panic(ptr @.str.1816, i64 1041, ptr @.str.1817) +inrange2934: + %t455 = extractvalue { ptr, i64, i64 } %t452, 0 + %t456 = getelementptr inbounds %S.ast.Type, ptr %t455, i64 0 + %t457 = load %S.ast.Type, ptr %t456 + %t458 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t450, %S.ast.Type %t457) + %t459 = load ptr, ptr %a1 + %t460 = load { ptr, i64, i64 }, ptr %a393 + %t461 = load %S.ast.Type, ptr %a2 + %t462 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t459, { ptr, i64, i64 } %t460, %S.ast.Type %t461, i64 1) + %t463 = call { ptr, i64, i64 } @finch.gen.load(ptr %t449, { ptr, i64, i64 } %t458, { ptr, i64, i64 } %t462) + store { ptr, i64, i64 } %t458, ptr %a464 + call void @finch_str_drop(ptr %a464) + store { ptr, i64, i64 } %t462, ptr %a465 + call void @finch_str_drop(ptr %a465) + %t466 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t467 = load { ptr, i64, i64 }, ptr %t466 + %t468 = extractvalue { ptr, i64, i64 } %t467, 1 + %t469 = icmp uge i64 0, %t468 + br i1 %t469, label %range2935, label %inrange2936 +range2935: + call void @finch_panic_index(ptr @.str.1877, i64 1168, i64 0, i64 %t468) unreachable -ok2768: - %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 - %t472 = load { ptr, i64, i64 }, ptr %t471 - %t473 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t474 = load { ptr, i64, i64 }, ptr %t473 - %t475 = call i64 @finch.gen.findStruct(ptr %t470, { ptr, i64, i64 } %t472, { ptr, i64, i64 } %t474) - %t476 = load { ptr, i64, i64 }, ptr %t469 - %t477 = extractvalue { ptr, i64, i64 } %t476, 1 - %t478 = icmp uge i64 %t475, %t477 - br i1 %t478, label %range2769, label %inrange2770 -range2769: - call void @finch_panic_index(ptr @.str.1818, i64 1041, i64 %t475, i64 %t477) +inrange2936: + %t470 = extractvalue { ptr, i64, i64 } %t467, 0 + %t471 = getelementptr inbounds %S.ast.Type, ptr %t470, i64 0 + %t472 = load %S.ast.Type, ptr %t471 + call void @finch.gen.emitFormat(ptr %t448, { ptr, i64, i64 } { ptr @.str.1875, i64 4, i64 0 }, { ptr, i64, i64 } %t463, %S.ast.Type %t472, i1 true) + store { ptr, i64, i64 } %t463, ptr %a473 + call void @finch_str_drop(ptr %a473) + %t474 = load ptr, ptr %a1 + call void @finch.gen.bufText(ptr %t474, { ptr, i64, i64 } { ptr @.str.1878, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1879, i64 2, i64 0 }) + %t475 = load ptr, ptr %a1 + %t476 = load ptr, ptr %a1 + %t477 = load ptr, ptr %a1 + %t478 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t479 = load { ptr, i64, i64 }, ptr %t478 + %t480 = extractvalue { ptr, i64, i64 } %t479, 1 + %t481 = icmp uge i64 1, %t480 + br i1 %t481, label %range2937, label %inrange2938 +range2937: + call void @finch_panic_index(ptr @.str.1881, i64 1170, i64 1, i64 %t480) unreachable -inrange2770: - %t479 = extractvalue { ptr, i64, i64 } %t476, 0 - %t480 = getelementptr inbounds %S.gen.StructDef, ptr %t479, i64 %t475 - %t481 = load %S.gen.StructDef, ptr %t480 - store %S.gen.StructDef %t481, ptr %a482 - call void @finch.copy.S_gen_StructDef(ptr %a483, ptr %a482) - %t484 = load %S.gen.StructDef, ptr %a483 - store %S.gen.StructDef %t484, ptr %a485 +inrange2938: + %t482 = extractvalue { ptr, i64, i64 } %t479, 0 + %t483 = getelementptr inbounds %S.ast.Type, ptr %t482, i64 1 + %t484 = load %S.ast.Type, ptr %t483 + %t485 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t477, %S.ast.Type %t484) %t486 = load ptr, ptr %a1 - %t487 = load %S.ast.Type, ptr %a2 - %t488 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t486, %S.ast.Type %t487) - store { ptr, i64, i64 } %t488, ptr %a489 - %t490 = load ptr, ptr %a1 - %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.1820, 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.1819, 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.cond2771 -for.cond2771: - %t501 = load i64, ptr %a500 - %t502 = icmp slt i64 %t501, %t499 - br i1 %t502, label %for.body2772, label %for.end2774 -for.body2772: - store { ptr, i64, i64 } { ptr @.str.1821, i64 2, i64 0 }, ptr %a503 - %t504 = load i64, ptr %a500 - %t505 = icmp eq i64 %t504, 0 - br i1 %t505, label %then2775, label %endif2777 -then2775: - store { ptr, i64, i64 } { ptr @.str.1822, i64 0, i64 0 }, ptr %a503 - br label %endif2777 -endif2777: - %t506 = load ptr, ptr %a1 - %t507 = load { ptr, i64, i64 }, ptr %a503 - %t508 = getelementptr inbounds %S.gen.StructDef, ptr %a485, i32 0, i32 11 - %t509 = load i64, ptr %a500 - %t510 = load { ptr, i64, i64 }, ptr %t508 - %t511 = extractvalue { ptr, i64, i64 } %t510, 1 - %t512 = icmp uge i64 %t509, %t511 - br i1 %t512, label %range2778, label %inrange2779 -range2778: - call void @finch_panic_index(ptr @.str.1824, i64 1049, i64 %t509, i64 %t511) + %t487 = load { ptr, i64, i64 }, ptr %a393 + %t488 = load %S.ast.Type, ptr %a2 + %t489 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t486, { ptr, i64, i64 } %t487, %S.ast.Type %t488, i64 2) + %t490 = call { ptr, i64, i64 } @finch.gen.load(ptr %t476, { ptr, i64, i64 } %t485, { ptr, i64, i64 } %t489) + store { ptr, i64, i64 } %t485, ptr %a491 + call void @finch_str_drop(ptr %a491) + store { ptr, i64, i64 } %t489, ptr %a492 + call void @finch_str_drop(ptr %a492) + %t493 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t494 = load { ptr, i64, i64 }, ptr %t493 + %t495 = extractvalue { ptr, i64, i64 } %t494, 1 + %t496 = icmp uge i64 1, %t495 + br i1 %t496, label %range2939, label %inrange2940 +range2939: + call void @finch_panic_index(ptr @.str.1882, i64 1170, i64 1, i64 %t495) unreachable -inrange2779: - %t513 = extractvalue { ptr, i64, i64 } %t510, 0 - %t514 = getelementptr inbounds { ptr, i64, i64 }, ptr %t513, i64 %t509 +inrange2940: + %t497 = extractvalue { ptr, i64, i64 } %t494, 0 + %t498 = getelementptr inbounds %S.ast.Type, ptr %t497, i64 1 + %t499 = load %S.ast.Type, ptr %t498 + call void @finch.gen.emitFormat(ptr %t475, { ptr, i64, i64 } { ptr @.str.1880, i64 4, i64 0 }, { ptr, i64, i64 } %t490, %S.ast.Type %t499, i1 true) + store { ptr, i64, i64 } %t490, ptr %a500 + call void @finch_str_drop(ptr %a500) + %t501 = load ptr, ptr %a1 + %t502 = load { ptr, i64, i64 }, ptr %a399 + call void @finch.gen.br(ptr %t501, { ptr, i64, i64 } %t502) + %t503 = load ptr, ptr %a1 + %t504 = load { ptr, i64, i64 }, ptr %a399 + call void @finch.gen.label(ptr %t503, { ptr, i64, i64 } %t504) + %t505 = load ptr, ptr %a1 + %t506 = load { ptr, i64, i64 }, ptr %a383 + call void @finch.gen.loopEnd(ptr %t505, { ptr, i64, i64 } %t506) + %t507 = load ptr, ptr %a1 + call void @finch.gen.bufText(ptr %t507, { ptr, i64, i64 } { ptr @.str.1883, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1884, i64 1, i64 0 }) + call void @finch_str_drop(ptr %a431) + call void @finch_str_drop(ptr %a428) + call void @finch_str_drop(ptr %a399) + call void @finch_str_drop(ptr %a396) + call void @finch_str_drop(ptr %a393) + call void @finch.drop.arr_str(ptr %a383) + call void @finch_str_drop(ptr %a379) + call void @finch_str_drop(ptr %a356) + br label %endif2930 +else2929: + %t508 = load ptr, ptr %a1 + %t509 = icmp eq ptr %t508, null + br i1 %t509, label %panic2941, label %ok2942 +panic2941: + call void @finch_panic(ptr @.str.1885, i64 1176, ptr @.str.1886) + unreachable +ok2942: + %t510 = getelementptr inbounds %S.gen.Gen, ptr %t508, i32 0, i32 16 + %t511 = load ptr, ptr %a1 + %t512 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 + %t513 = load { ptr, i64, i64 }, ptr %t512 + %t514 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 %t515 = load { ptr, i64, i64 }, ptr %t514 - store { ptr, i64, i64 } %t507, 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 - store { ptr, i64, i64 } %t519, ptr %a521 - store { ptr, i64, i64 } { ptr @.str.1825, 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.1823, 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.1826, 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.1827, 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 - %t535 = load i64, ptr %a500 - %t536 = load { ptr, i64, i64 }, ptr %t534 - %t537 = extractvalue { ptr, i64, i64 } %t536, 1 - %t538 = icmp uge i64 %t535, %t537 - br i1 %t538, label %range2780, label %inrange2781 -range2780: - call void @finch_panic_index(ptr @.str.1828, i64 1050, i64 %t535, i64 %t537) + %t516 = call i64 @finch.gen.findStruct(ptr %t511, { ptr, i64, i64 } %t513, { ptr, i64, i64 } %t515) + %t517 = load { ptr, i64, i64 }, ptr %t510 + %t518 = extractvalue { ptr, i64, i64 } %t517, 1 + %t519 = icmp uge i64 %t516, %t518 + br i1 %t519, label %range2943, label %inrange2944 +range2943: + call void @finch_panic_index(ptr @.str.1887, i64 1176, i64 %t516, i64 %t518) unreachable -inrange2781: - %t539 = extractvalue { ptr, i64, i64 } %t536, 0 - %t540 = getelementptr inbounds i64, ptr %t539, i64 %t535 +inrange2944: + %t520 = extractvalue { ptr, i64, i64 } %t517, 0 + %t521 = getelementptr inbounds %S.gen.StructDef, ptr %t520, i64 %t516 + %t522 = load %S.gen.StructDef, ptr %t521 + store %S.gen.StructDef %t522, ptr %a523 + call void @finch.copy.S_gen_StructDef(ptr %a524, ptr %a523) + %t525 = load %S.gen.StructDef, ptr %a524 + store %S.gen.StructDef %t525, ptr %a526 + %t527 = load ptr, ptr %a1 + %t528 = load %S.ast.Type, ptr %a2 + %t529 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t527, %S.ast.Type %t528) + store { ptr, i64, i64 } %t529, ptr %a530 + %t531 = load ptr, ptr %a1 + %t532 = getelementptr inbounds %S.gen.StructDef, ptr %a526, i32 0, i32 1 + %t533 = load { ptr, i64, i64 }, ptr %t532 + store { ptr, i64, i64 } %t533, ptr %a535 + store { ptr, i64, i64 } { ptr @.str.1889, i64 1, i64 0 }, ptr %a536 + call void @finch_str_concat(ptr %a534, ptr %a535, ptr %a536) + %t537 = load { ptr, i64, i64 }, ptr %a534 + call void @finch.gen.bufText(ptr %t531, { ptr, i64, i64 } { ptr @.str.1888, i64 4, i64 0 }, { ptr, i64, i64 } %t537) + store { ptr, i64, i64 } %t537, ptr %a538 + call void @finch_str_drop(ptr %a538) + %t539 = getelementptr inbounds %S.gen.StructDef, ptr %a526, i32 0, i32 12 + %t540 = getelementptr inbounds { ptr, i64, i64 }, ptr %t539, i32 0, i32 1 %t541 = load i64, ptr %t540 - call void @finch_str_from_int(ptr %a542, i64 %t541) - %t543 = load { ptr, i64, i64 }, ptr %a542 - store { ptr, i64, i64 } %t533, ptr %a545 - store { ptr, i64, i64 } %t543, ptr %a546 - call void @finch_str_concat(ptr %a544, ptr %a545, ptr %a546) - %t547 = load { ptr, i64, i64 }, ptr %a544 - %t548 = call { ptr, i64, i64 } @finch.gen.op(ptr %t524, { ptr, i64, i64 } %t547) + store i64 0, ptr %a542 + br label %for.cond2945 +for.cond2945: + %t543 = load i64, ptr %a542 + %t544 = icmp slt i64 %t543, %t541 + br i1 %t544, label %for.body2946, label %for.end2948 +for.body2946: + store { ptr, i64, i64 } { ptr @.str.1890, i64 2, i64 0 }, ptr %a545 + %t546 = load i64, ptr %a542 + %t547 = icmp eq i64 %t546, 0 + br i1 %t547, label %then2949, label %endif2951 +then2949: + %t548 = load { ptr, i64, i64 }, ptr %a545 + store { ptr, i64, i64 } { ptr @.str.1891, i64 0, i64 0 }, ptr %a545 store { ptr, i64, i64 } %t548, ptr %a549 + call void @finch_str_drop(ptr %a549) + br label %endif2951 +endif2951: %t550 = load ptr, ptr %a1 - %t551 = load ptr, ptr %a1 - %t552 = load ptr, ptr %a1 - %t553 = getelementptr inbounds %S.gen.StructDef, ptr %a485, i32 0, i32 12 - %t554 = load i64, ptr %a500 - %t555 = load { ptr, i64, i64 }, ptr %t553 - %t556 = extractvalue { ptr, i64, i64 } %t555, 1 - %t557 = icmp uge i64 %t554, %t556 - br i1 %t557, label %range2782, label %inrange2783 -range2782: - call void @finch_panic_index(ptr @.str.1830, i64 1051, i64 %t554, i64 %t556) + %t551 = load { ptr, i64, i64 }, ptr %a545 + %t552 = getelementptr inbounds %S.gen.StructDef, ptr %a526, i32 0, i32 11 + %t553 = load i64, ptr %a542 + %t554 = load { ptr, i64, i64 }, ptr %t552 + %t555 = extractvalue { ptr, i64, i64 } %t554, 1 + %t556 = icmp uge i64 %t553, %t555 + br i1 %t556, label %range2952, label %inrange2953 +range2952: + call void @finch_panic_index(ptr @.str.1893, i64 1184, i64 %t553, i64 %t555) unreachable -inrange2783: - %t558 = extractvalue { ptr, i64, i64 } %t555, 0 - %t559 = getelementptr inbounds %S.ast.Type, ptr %t558, i64 %t554 - %t560 = load %S.ast.Type, ptr %t559 - %t561 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t552, %S.ast.Type %t560) - %t562 = load { ptr, i64, i64 }, ptr %a549 - %t563 = call { ptr, i64, i64 } @finch.gen.load(ptr %t551, { ptr, i64, i64 } %t561, { ptr, i64, i64 } %t562) - %t564 = getelementptr inbounds %S.gen.StructDef, ptr %a485, i32 0, i32 12 - %t565 = load i64, ptr %a500 - %t566 = load { ptr, i64, i64 }, ptr %t564 - %t567 = extractvalue { ptr, i64, i64 } %t566, 1 - %t568 = icmp uge i64 %t565, %t567 - br i1 %t568, label %range2784, label %inrange2785 -range2784: - call void @finch_panic_index(ptr @.str.1831, i64 1051, i64 %t565, i64 %t567) +inrange2953: + %t557 = extractvalue { ptr, i64, i64 } %t554, 0 + %t558 = getelementptr inbounds { ptr, i64, i64 }, ptr %t557, i64 %t553 + %t559 = load { ptr, i64, i64 }, ptr %t558 + store { ptr, i64, i64 } %t551, ptr %a561 + store { ptr, i64, i64 } %t559, ptr %a562 + 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.1894, i64 2, i64 0 }, ptr %a566 + call void @finch_str_concat(ptr %a564, ptr %a565, ptr %a566) + store { ptr, i64, i64 } %t563, ptr %a567 + call void @finch_str_drop(ptr %a567) + %t568 = load { ptr, i64, i64 }, ptr %a564 + call void @finch.gen.bufText(ptr %t550, { ptr, i64, i64 } { ptr @.str.1892, i64 4, i64 0 }, { ptr, i64, i64 } %t568) + store { ptr, i64, i64 } %t568, ptr %a569 + call void @finch_str_drop(ptr %a569) + %t570 = load ptr, ptr %a1 + %t571 = load { ptr, i64, i64 }, ptr %a530 + store { ptr, i64, i64 } { ptr @.str.1895, i64 23, 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 + store { ptr, i64, i64 } %t575, ptr %a577 + store { ptr, i64, i64 } { ptr @.str.1896, i64 21, i64 0 }, ptr %a578 + call void @finch_str_concat(ptr %a576, ptr %a577, ptr %a578) + store { ptr, i64, i64 } %t575, ptr %a579 + call void @finch_str_drop(ptr %a579) + %t580 = load { ptr, i64, i64 }, ptr %a576 + %t581 = getelementptr inbounds %S.gen.StructDef, ptr %a526, i32 0, i32 3 + %t582 = load i64, ptr %a542 + %t583 = load { ptr, i64, i64 }, ptr %t581 + %t584 = extractvalue { ptr, i64, i64 } %t583, 1 + %t585 = icmp uge i64 %t582, %t584 + br i1 %t585, label %range2954, label %inrange2955 +range2954: + call void @finch_panic_index(ptr @.str.1897, i64 1185, i64 %t582, i64 %t584) unreachable -inrange2785: - %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.1829, i64 4, i64 0 }, { ptr, i64, i64 } %t563, %S.ast.Type %t571, i1 true) - br label %for.step2773 -for.step2773: - %t572 = load i64, ptr %a500 - %t573 = add i64 %t572, 1 - store i64 %t573, ptr %a500 - br label %for.cond2771 -for.end2774: - %t574 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t574, { ptr, i64, i64 } { ptr @.str.1832, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1833, i64 1, i64 0 }) - br label %endif2756 -endif2756: - br label %endif2731 -endif2731: - br label %endif2722 -endif2722: - %t575 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t575, { ptr, i64, i64 } { ptr @.str.1834, 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.1835, 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.1836, 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) - %t587 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t587, ptr %a588 - call void @finch_str_copy(ptr %a589, ptr %a588) +inrange2955: + %t586 = extractvalue { ptr, i64, i64 } %t583, 0 + %t587 = getelementptr inbounds i64, ptr %t586, i64 %t582 + %t588 = load i64, ptr %t587 + call void @finch_str_from_int(ptr %a589, i64 %t588) %t590 = load { ptr, i64, i64 }, ptr %a589 - ret { ptr, i64, i64 } %t590 + store { ptr, i64, i64 } %t580, ptr %a592 + store { ptr, i64, i64 } %t590, ptr %a593 + call void @finch_str_concat(ptr %a591, ptr %a592, ptr %a593) + store { ptr, i64, i64 } %t580, ptr %a594 + call void @finch_str_drop(ptr %a594) + store { ptr, i64, i64 } %t590, ptr %a595 + call void @finch_str_drop(ptr %a595) + %t596 = load { ptr, i64, i64 }, ptr %a591 + %t597 = call { ptr, i64, i64 } @finch.gen.op(ptr %t570, { ptr, i64, i64 } %t596) + store { ptr, i64, i64 } %t596, ptr %a598 + call void @finch_str_drop(ptr %a598) + store { ptr, i64, i64 } %t597, ptr %a599 + %t600 = load ptr, ptr %a1 + %t601 = load ptr, ptr %a1 + %t602 = load ptr, ptr %a1 + %t603 = getelementptr inbounds %S.gen.StructDef, ptr %a526, i32 0, i32 12 + %t604 = load i64, ptr %a542 + %t605 = load { ptr, i64, i64 }, ptr %t603 + %t606 = extractvalue { ptr, i64, i64 } %t605, 1 + %t607 = icmp uge i64 %t604, %t606 + br i1 %t607, label %range2956, label %inrange2957 +range2956: + call void @finch_panic_index(ptr @.str.1899, i64 1186, i64 %t604, i64 %t606) + unreachable +inrange2957: + %t608 = extractvalue { ptr, i64, i64 } %t605, 0 + %t609 = getelementptr inbounds %S.ast.Type, ptr %t608, i64 %t604 + %t610 = load %S.ast.Type, ptr %t609 + %t611 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t602, %S.ast.Type %t610) + %t612 = load { ptr, i64, i64 }, ptr %a599 + %t613 = call { ptr, i64, i64 } @finch.gen.load(ptr %t601, { ptr, i64, i64 } %t611, { ptr, i64, i64 } %t612) + store { ptr, i64, i64 } %t611, ptr %a614 + call void @finch_str_drop(ptr %a614) + %t615 = getelementptr inbounds %S.gen.StructDef, ptr %a526, i32 0, i32 12 + %t616 = load i64, ptr %a542 + %t617 = load { ptr, i64, i64 }, ptr %t615 + %t618 = extractvalue { ptr, i64, i64 } %t617, 1 + %t619 = icmp uge i64 %t616, %t618 + br i1 %t619, label %range2958, label %inrange2959 +range2958: + call void @finch_panic_index(ptr @.str.1900, i64 1186, i64 %t616, i64 %t618) + unreachable +inrange2959: + %t620 = extractvalue { ptr, i64, i64 } %t617, 0 + %t621 = getelementptr inbounds %S.ast.Type, ptr %t620, i64 %t616 + %t622 = load %S.ast.Type, ptr %t621 + call void @finch.gen.emitFormat(ptr %t600, { ptr, i64, i64 } { ptr @.str.1898, i64 4, i64 0 }, { ptr, i64, i64 } %t613, %S.ast.Type %t622, i1 true) + store { ptr, i64, i64 } %t613, ptr %a623 + call void @finch_str_drop(ptr %a623) + call void @finch_str_drop(ptr %a599) + call void @finch_str_drop(ptr %a545) + br label %for.step2947 +for.step2947: + %t624 = load i64, ptr %a542 + %t625 = add i64 %t624, 1 + store i64 %t625, ptr %a542 + br label %for.cond2945 +for.end2948: + %t626 = load ptr, ptr %a1 + call void @finch.gen.bufText(ptr %t626, { ptr, i64, i64 } { ptr @.str.1901, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1902, i64 1, i64 0 }) + call void @finch_str_drop(ptr %a530) + call void @finch.drop.S_gen_StructDef(ptr %a526) + br label %endif2930 +endif2930: + br label %endif2905 +endif2905: + br label %endif2896 +endif2896: + %t627 = load ptr, ptr %a1 + call void @finch.gen.emit(ptr %t627, { ptr, i64, i64 } { ptr @.str.1903, i64 8, i64 0 }) + %t628 = load ptr, ptr %a1 + %t629 = load %S.gen.Saved, ptr %a32 + %t630 = load { ptr, i64, i64 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.1904, i64 21, i64 0 }, 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.1905, i64 18, i64 0 }, ptr %a637 + call void @finch_str_concat(ptr %a635, ptr %a636, ptr %a637) + store { ptr, i64, i64 } %t634, ptr %a638 + call void @finch_str_drop(ptr %a638) + %t639 = load { ptr, i64, i64 }, ptr %a635 + call void @finch.gen.endHelper(ptr %t628, %S.gen.Saved %t629, { ptr, i64, i64 } %t639) + store { ptr, i64, i64 } %t639, ptr %a640 + call void @finch_str_drop(ptr %a640) + %t641 = load { ptr, i64, i64 }, ptr %a10 + call void @finch.drop.S_gen_Saved(ptr %a32) + ret { ptr, i64, i64 } %t641 } define internal { ptr, i64, i64 } @finch.gen.intCast(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, %S.ast.Type %p3) { @@ -28582,48 +33567,69 @@ entry: %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 + %a28 = alloca { ptr, i64, i64 }, align 16 %a30 = alloca { ptr, i64, i64 }, align 16 %a31 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 + %a32 = alloca { ptr, i64, i64 }, align 16 + %a33 = alloca { ptr, i64, i64 }, align 16 %a36 = alloca { ptr, i64, i64 }, align 16 + %a37 = alloca { ptr, i64, i64 }, align 16 %a38 = alloca { ptr, i64, i64 }, align 16 %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = 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 + %a41 = alloca { ptr, i64, i64 }, align 16 + %a42 = alloca { ptr, i64, i64 }, align 16 + %a43 = alloca { ptr, i64, i64 }, align 16 + %a44 = 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 + %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 + %a63 = 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 - %a67 = 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 %a71 = alloca { ptr, i64, i64 }, align 16 + %a74 = 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 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = 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 %a87 = 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 %a91 = 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 + %a101 = alloca { ptr, i64, i64 }, align 16 + %a102 = 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 %a107 = 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 + %a115 = 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 + %a123 = 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 + %a127 = alloca { ptr, i64, i64 }, align 16 + %a130 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store { ptr, i64, i64 } %p1, ptr %a2 store %S.ast.Type %p2, ptr %a3 @@ -28637,115 +33643,157 @@ entry: %t11 = load i64, ptr %a7 %t12 = load i64, ptr %a10 %t13 = icmp eq i64 %t11, %t12 - br i1 %t13, label %then2786, label %endif2788 -then2786: + br i1 %t13, label %then2960, label %endif2962 +then2960: %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 -endif2788: +endif2962: %t18 = load i64, ptr %a10 %t19 = load i64, ptr %a7 %t20 = icmp slt i64 %t18, %t19 - br i1 %t20, label %then2789, label %endif2791 -then2789: + br i1 %t20, label %then2963, label %endif2965 +then2963: %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.1837, i64 6, i64 0 }, ptr %a26 + store { ptr, i64, i64 } { ptr @.str.1906, 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.1838, 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 - store { ptr, i64, i64 } %t32, 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.1839, 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 - %t43 = load %S.ast.Type, ptr %a4 - %t44 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t42, %S.ast.Type %t43) - store { ptr, i64, i64 } %t41, 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 - %t49 = call { ptr, i64, i64 } @finch.gen.op(ptr %t21, { ptr, i64, i64 } %t48) - ret { ptr, i64, i64 } %t49 -endif2791: - %t50 = load %S.ast.Type, ptr %a3 - %t51 = call i1 @finch.gen.isSigned(%S.ast.Type %t50) - br i1 %t51, label %then2792, label %endif2794 -then2792: - %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.1840, 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.1841, 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 - store { ptr, i64, i64 } %t63, 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.1842, 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 - %t74 = load %S.ast.Type, ptr %a4 - %t75 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t73, %S.ast.Type %t74) + store { ptr, i64, i64 } %t24, ptr %a28 + call void @finch_str_drop(ptr %a28) + %t29 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t29, ptr %a31 + store { ptr, i64, i64 } { ptr @.str.1907, i64 1, i64 0 }, ptr %a32 + call void @finch_str_concat(ptr %a30, ptr %a31, ptr %a32) + store { ptr, i64, i64 } %t29, ptr %a33 + call void @finch_str_drop(ptr %a33) + %t34 = load { ptr, i64, i64 }, ptr %a30 + %t35 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t34, ptr %a37 + store { ptr, i64, i64 } %t35, ptr %a38 + call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) + store { ptr, i64, i64 } %t34, ptr %a39 + call void @finch_str_drop(ptr %a39) + %t40 = load { ptr, i64, i64 }, ptr %a36 + store { ptr, i64, i64 } %t40, ptr %a42 + store { ptr, i64, i64 } { ptr @.str.1908, i64 4, i64 0 }, ptr %a43 + call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) + store { ptr, i64, i64 } %t40, ptr %a44 + call void @finch_str_drop(ptr %a44) + %t45 = load { ptr, i64, i64 }, ptr %a41 + %t46 = load ptr, ptr %a1 + %t47 = load %S.ast.Type, ptr %a4 + %t48 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t46, %S.ast.Type %t47) + store { ptr, i64, i64 } %t45, ptr %a50 + store { ptr, i64, i64 } %t48, ptr %a51 + call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) + store { ptr, i64, i64 } %t45, ptr %a52 + call void @finch_str_drop(ptr %a52) + store { ptr, i64, i64 } %t48, ptr %a53 + call void @finch_str_drop(ptr %a53) + %t54 = load { ptr, i64, i64 }, ptr %a49 + %t55 = call { ptr, i64, i64 } @finch.gen.op(ptr %t21, { ptr, i64, i64 } %t54) + store { ptr, i64, i64 } %t54, ptr %a56 + call void @finch_str_drop(ptr %a56) + ret { ptr, i64, i64 } %t55 +endif2965: + %t57 = load %S.ast.Type, ptr %a3 + %t58 = call i1 @finch.gen.isSigned(%S.ast.Type %t57) + br i1 %t58, label %then2966, label %endif2968 +then2966: + %t59 = load ptr, ptr %a1 + %t60 = load ptr, ptr %a1 + %t61 = load %S.ast.Type, ptr %a3 + %t62 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t60, %S.ast.Type %t61) + store { ptr, i64, i64 } { ptr @.str.1909, i64 5, i64 0 }, ptr %a64 + store { ptr, i64, i64 } %t62, ptr %a65 + call void @finch_str_concat(ptr %a63, ptr %a64, ptr %a65) + store { ptr, i64, i64 } %t62, ptr %a66 + call void @finch_str_drop(ptr %a66) + %t67 = load { ptr, i64, i64 }, ptr %a63 + store { ptr, i64, i64 } %t67, ptr %a69 + store { ptr, i64, i64 } { ptr @.str.1910, i64 1, i64 0 }, ptr %a70 + call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70) + store { ptr, i64, i64 } %t67, ptr %a71 + call void @finch_str_drop(ptr %a71) + %t72 = load { ptr, i64, i64 }, ptr %a68 + %t73 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t72, ptr %a75 + store { ptr, i64, i64 } %t73, ptr %a76 + call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) store { ptr, i64, i64 } %t72, 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 - %t80 = call { ptr, i64, i64 } @finch.gen.op(ptr %t52, { ptr, i64, i64 } %t79) - ret { ptr, i64, i64 } %t80 -endif2794: - %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.1843, 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.1844, 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 - store { ptr, i64, i64 } %t92, 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.1845, 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 - %t103 = load %S.ast.Type, ptr %a4 - %t104 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t102, %S.ast.Type %t103) - store { ptr, i64, i64 } %t101, ptr %a106 - store { ptr, i64, i64 } %t104, ptr %a107 - call void @finch_str_concat(ptr %a105, ptr %a106, ptr %a107) - %t108 = load { ptr, i64, i64 }, ptr %a105 - %t109 = call { ptr, i64, i64 } @finch.gen.op(ptr %t81, { ptr, i64, i64 } %t108) - ret { ptr, i64, i64 } %t109 + call void @finch_str_drop(ptr %a77) + %t78 = load { ptr, i64, i64 }, ptr %a74 + store { ptr, i64, i64 } %t78, ptr %a80 + store { ptr, i64, i64 } { ptr @.str.1911, i64 4, i64 0 }, ptr %a81 + call void @finch_str_concat(ptr %a79, ptr %a80, ptr %a81) + store { ptr, i64, i64 } %t78, ptr %a82 + call void @finch_str_drop(ptr %a82) + %t83 = load { ptr, i64, i64 }, ptr %a79 + %t84 = load ptr, ptr %a1 + %t85 = load %S.ast.Type, ptr %a4 + %t86 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t84, %S.ast.Type %t85) + store { ptr, i64, i64 } %t83, ptr %a88 + store { ptr, i64, i64 } %t86, ptr %a89 + call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89) + store { ptr, i64, i64 } %t83, ptr %a90 + call void @finch_str_drop(ptr %a90) + store { ptr, i64, i64 } %t86, ptr %a91 + call void @finch_str_drop(ptr %a91) + %t92 = load { ptr, i64, i64 }, ptr %a87 + %t93 = call { ptr, i64, i64 } @finch.gen.op(ptr %t59, { ptr, i64, i64 } %t92) + store { ptr, i64, i64 } %t92, ptr %a94 + call void @finch_str_drop(ptr %a94) + ret { ptr, i64, i64 } %t93 +endif2968: + %t95 = load ptr, ptr %a1 + %t96 = load ptr, ptr %a1 + %t97 = load %S.ast.Type, ptr %a3 + %t98 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t96, %S.ast.Type %t97) + store { ptr, i64, i64 } { ptr @.str.1912, i64 5, i64 0 }, ptr %a100 + store { ptr, i64, i64 } %t98, ptr %a101 + call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) + store { ptr, i64, i64 } %t98, ptr %a102 + call void @finch_str_drop(ptr %a102) + %t103 = load { ptr, i64, i64 }, ptr %a99 + store { ptr, i64, i64 } %t103, ptr %a105 + store { ptr, i64, i64 } { ptr @.str.1913, i64 1, i64 0 }, ptr %a106 + call void @finch_str_concat(ptr %a104, ptr %a105, ptr %a106) + store { ptr, i64, i64 } %t103, ptr %a107 + call void @finch_str_drop(ptr %a107) + %t108 = load { ptr, i64, i64 }, ptr %a104 + %t109 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t108, ptr %a111 + store { ptr, i64, i64 } %t109, ptr %a112 + call void @finch_str_concat(ptr %a110, ptr %a111, ptr %a112) + store { ptr, i64, i64 } %t108, ptr %a113 + call void @finch_str_drop(ptr %a113) + %t114 = load { ptr, i64, i64 }, ptr %a110 + store { ptr, i64, i64 } %t114, ptr %a116 + store { ptr, i64, i64 } { ptr @.str.1914, i64 4, i64 0 }, ptr %a117 + call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) + store { ptr, i64, i64 } %t114, ptr %a118 + call void @finch_str_drop(ptr %a118) + %t119 = load { ptr, i64, i64 }, ptr %a115 + %t120 = load ptr, ptr %a1 + %t121 = load %S.ast.Type, ptr %a4 + %t122 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t120, %S.ast.Type %t121) + store { ptr, i64, i64 } %t119, ptr %a124 + store { ptr, i64, i64 } %t122, ptr %a125 + call void @finch_str_concat(ptr %a123, ptr %a124, ptr %a125) + store { ptr, i64, i64 } %t119, ptr %a126 + call void @finch_str_drop(ptr %a126) + store { ptr, i64, i64 } %t122, ptr %a127 + call void @finch_str_drop(ptr %a127) + %t128 = load { ptr, i64, i64 }, ptr %a123 + %t129 = call { ptr, i64, i64 } @finch.gen.op(ptr %t95, { ptr, i64, i64 } %t128) + store { ptr, i64, i64 } %t128, ptr %a130 + call void @finch_str_drop(ptr %a130) + ret { ptr, i64, i64 } %t129 } define internal { ptr, i64, i64 } @finch.gen.floatCast(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, %S.ast.Type %p3) { @@ -28761,33 +33809,47 @@ entry: %a26 = alloca { ptr, i64, i64 }, align 16 %a27 = alloca { ptr, i64, i64 }, align 16 %a28 = alloca { ptr, i64, i64 }, align 16 - %a30 = 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 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 + %a33 = alloca { ptr, i64, i64 }, align 16 + %a34 = alloca { ptr, i64, i64 }, align 16 %a37 = alloca { ptr, i64, i64 }, align 16 + %a38 = 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 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 + %a42 = 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 + %a50 = 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 + %a54 = 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 - %a61 = alloca { ptr, i64, i64 }, align 16 + %a62 = 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 - %a66 = 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 %a70 = alloca { ptr, i64, i64 }, align 16 + %a73 = alloca { ptr, i64, i64 }, align 16 + %a74 = 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 + %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 + %a86 = 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 + %a90 = alloca { ptr, i64, i64 }, align 16 + %a93 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store { ptr, i64, i64 } %p1, ptr %a2 store %S.ast.Type %p2, ptr %a3 @@ -28800,82 +33862,110 @@ 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 %then2795, label %endif2797 -then2795: + br i1 %t12, label %then2969, label %endif2971 +then2969: %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 -endif2797: +endif2971: %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 %then2798, label %endif2800 -then2798: + br i1 %t21, label %then2972, label %endif2974 +then2972: %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.1846, i64 6, i64 0 }, ptr %a27 + store { ptr, i64, i64 } { ptr @.str.1915, 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.1847, 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 - store { ptr, i64, i64 } %t33, 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.1848, 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 - %t44 = load %S.ast.Type, ptr %a4 - %t45 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t43, %S.ast.Type %t44) - store { ptr, i64, i64 } %t42, ptr %a47 - store { ptr, i64, i64 } %t45, ptr %a48 - call void @finch_str_concat(ptr %a46, ptr %a47, ptr %a48) - %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 -endif2800: - %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.1849, 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.1850, 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 - store { ptr, i64, i64 } %t62, 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.1851, 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 - %t73 = load %S.ast.Type, ptr %a4 - %t74 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t72, %S.ast.Type %t73) + store { ptr, i64, i64 } %t25, ptr %a29 + call void @finch_str_drop(ptr %a29) + %t30 = load { ptr, i64, i64 }, ptr %a26 + store { ptr, i64, i64 } %t30, ptr %a32 + store { ptr, i64, i64 } { ptr @.str.1916, i64 1, i64 0 }, ptr %a33 + call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) + store { ptr, i64, i64 } %t30, ptr %a34 + call void @finch_str_drop(ptr %a34) + %t35 = load { ptr, i64, i64 }, ptr %a31 + %t36 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t35, ptr %a38 + store { ptr, i64, i64 } %t36, ptr %a39 + call void @finch_str_concat(ptr %a37, ptr %a38, ptr %a39) + store { ptr, i64, i64 } %t35, ptr %a40 + call void @finch_str_drop(ptr %a40) + %t41 = load { ptr, i64, i64 }, ptr %a37 + store { ptr, i64, i64 } %t41, ptr %a43 + store { ptr, i64, i64 } { ptr @.str.1917, i64 4, i64 0 }, ptr %a44 + call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) + store { ptr, i64, i64 } %t41, ptr %a45 + call void @finch_str_drop(ptr %a45) + %t46 = load { ptr, i64, i64 }, ptr %a42 + %t47 = load ptr, ptr %a1 + %t48 = load %S.ast.Type, ptr %a4 + %t49 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t47, %S.ast.Type %t48) + 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) + store { ptr, i64, i64 } %t46, ptr %a53 + call void @finch_str_drop(ptr %a53) + store { ptr, i64, i64 } %t49, ptr %a54 + call void @finch_str_drop(ptr %a54) + %t55 = load { ptr, i64, i64 }, ptr %a50 + %t56 = call { ptr, i64, i64 } @finch.gen.op(ptr %t22, { ptr, i64, i64 } %t55) + store { ptr, i64, i64 } %t55, ptr %a57 + call void @finch_str_drop(ptr %a57) + ret { ptr, i64, i64 } %t56 +endif2974: + %t58 = load ptr, ptr %a1 + %t59 = load ptr, ptr %a1 + %t60 = load %S.ast.Type, ptr %a3 + %t61 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t59, %S.ast.Type %t60) + store { ptr, i64, i64 } { ptr @.str.1918, i64 8, i64 0 }, ptr %a63 + store { ptr, i64, i64 } %t61, ptr %a64 + call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) + store { ptr, i64, i64 } %t61, ptr %a65 + call void @finch_str_drop(ptr %a65) + %t66 = load { ptr, i64, i64 }, ptr %a62 + store { ptr, i64, i64 } %t66, ptr %a68 + store { ptr, i64, i64 } { ptr @.str.1919, i64 1, i64 0 }, ptr %a69 + call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) + store { ptr, i64, i64 } %t66, ptr %a70 + call void @finch_str_drop(ptr %a70) + %t71 = load { ptr, i64, i64 }, ptr %a67 + %t72 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t71, ptr %a74 + store { ptr, i64, i64 } %t72, ptr %a75 + call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) store { ptr, i64, i64 } %t71, ptr %a76 - store { ptr, i64, i64 } %t74, ptr %a77 - call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a75 - %t79 = call { ptr, i64, i64 } @finch.gen.op(ptr %t51, { ptr, i64, i64 } %t78) - ret { ptr, i64, i64 } %t79 + call void @finch_str_drop(ptr %a76) + %t77 = load { ptr, i64, i64 }, ptr %a73 + store { ptr, i64, i64 } %t77, ptr %a79 + store { ptr, i64, i64 } { ptr @.str.1920, i64 4, i64 0 }, ptr %a80 + call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) + store { ptr, i64, i64 } %t77, ptr %a81 + call void @finch_str_drop(ptr %a81) + %t82 = load { ptr, i64, i64 }, ptr %a78 + %t83 = load ptr, ptr %a1 + %t84 = load %S.ast.Type, ptr %a4 + %t85 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t83, %S.ast.Type %t84) + store { ptr, i64, i64 } %t82, ptr %a87 + store { ptr, i64, i64 } %t85, ptr %a88 + call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) + store { ptr, i64, i64 } %t82, ptr %a89 + call void @finch_str_drop(ptr %a89) + store { ptr, i64, i64 } %t85, ptr %a90 + call void @finch_str_drop(ptr %a90) + %t91 = load { ptr, i64, i64 }, ptr %a86 + %t92 = call { ptr, i64, i64 } @finch.gen.op(ptr %t58, { ptr, i64, i64 } %t91) + store { ptr, i64, i64 } %t91, ptr %a93 + call void @finch_str_drop(ptr %a93) + ret { ptr, i64, i64 } %t92 } define internal { ptr, i64, i64 } @finch.gen.intToFloat(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, %S.ast.Type %p3) { @@ -28887,102 +33977,144 @@ entry: %a11 = 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 + %a14 = alloca { ptr, i64, i64 }, align 16 %a16 = 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 + %a18 = alloca { ptr, i64, i64 }, align 16 + %a19 = 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 %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = 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 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = 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 + %a30 = 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 + %a38 = alloca { ptr, i64, i64 }, align 16 + %a39 = alloca { ptr, i64, i64 }, align 16 %a42 = alloca { ptr, i64, i64 }, 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 + %a48 = 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 + %a52 = 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 + %a59 = 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 + %a63 = 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 + %a71 = 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 + %a75 = alloca { ptr, i64, i64 }, align 16 + %a78 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store { ptr, i64, i64 } %p1, ptr %a2 store %S.ast.Type %p2, ptr %a3 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 %then2801, label %endif2803 -then2801: + br i1 %t6, label %then2975, label %endif2977 +then2975: %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.1852, i64 7, i64 0 }, ptr %a12 + store { ptr, i64, i64 } { ptr @.str.1921, 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.1853, 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 - 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 %a25 - store { ptr, i64, i64 } { ptr @.str.1854, 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 - %t29 = load %S.ast.Type, ptr %a4 - %t30 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t28, %S.ast.Type %t29) - store { ptr, i64, i64 } %t27, 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 = call { ptr, i64, i64 } @finch.gen.op(ptr %t7, { ptr, i64, i64 } %t34) - ret { ptr, i64, i64 } %t35 -endif2803: - %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.1855, 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.1856, 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 - store { ptr, i64, i64 } %t47, 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.1857, 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 - %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 } %t10, ptr %a14 + call void @finch_str_drop(ptr %a14) + %t15 = load { ptr, i64, i64 }, ptr %a11 + store { ptr, i64, i64 } %t15, ptr %a17 + store { ptr, i64, i64 } { ptr @.str.1922, i64 1, i64 0 }, ptr %a18 + call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) + store { ptr, i64, i64 } %t15, ptr %a19 + call void @finch_str_drop(ptr %a19) + %t20 = load { ptr, i64, i64 }, ptr %a16 + %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) + store { ptr, i64, i64 } %t20, ptr %a25 + call void @finch_str_drop(ptr %a25) + %t26 = load { ptr, i64, i64 }, ptr %a22 + store { ptr, i64, i64 } %t26, ptr %a28 + store { ptr, i64, i64 } { ptr @.str.1923, i64 4, i64 0 }, ptr %a29 + call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) + store { ptr, i64, i64 } %t26, ptr %a30 + call void @finch_str_drop(ptr %a30) + %t31 = load { ptr, i64, i64 }, ptr %a27 + %t32 = load ptr, ptr %a1 + %t33 = load %S.ast.Type, ptr %a4 + %t34 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t32, %S.ast.Type %t33) + store { ptr, i64, i64 } %t31, ptr %a36 + store { ptr, i64, i64 } %t34, ptr %a37 + call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) + store { ptr, i64, i64 } %t31, ptr %a38 + call void @finch_str_drop(ptr %a38) + store { ptr, i64, i64 } %t34, ptr %a39 + call void @finch_str_drop(ptr %a39) + %t40 = load { ptr, i64, i64 }, ptr %a35 + %t41 = call { ptr, i64, i64 } @finch.gen.op(ptr %t7, { ptr, i64, i64 } %t40) + store { ptr, i64, i64 } %t40, ptr %a42 + call void @finch_str_drop(ptr %a42) + ret { ptr, i64, i64 } %t41 +endif2977: + %t43 = load ptr, ptr %a1 + %t44 = load ptr, ptr %a1 + %t45 = load %S.ast.Type, ptr %a3 + %t46 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t44, %S.ast.Type %t45) + store { ptr, i64, i64 } { ptr @.str.1924, i64 7, i64 0 }, ptr %a48 + store { ptr, i64, i64 } %t46, ptr %a49 + call void @finch_str_concat(ptr %a47, ptr %a48, ptr %a49) + store { ptr, i64, i64 } %t46, ptr %a50 + call void @finch_str_drop(ptr %a50) + %t51 = load { ptr, i64, i64 }, ptr %a47 + store { ptr, i64, i64 } %t51, ptr %a53 + store { ptr, i64, i64 } { ptr @.str.1925, i64 1, i64 0 }, ptr %a54 + call void @finch_str_concat(ptr %a52, ptr %a53, ptr %a54) + store { ptr, i64, i64 } %t51, ptr %a55 + call void @finch_str_drop(ptr %a55) + %t56 = load { ptr, i64, i64 }, ptr %a52 + %t57 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t56, ptr %a59 + store { ptr, i64, i64 } %t57, ptr %a60 + call void @finch_str_concat(ptr %a58, ptr %a59, ptr %a60) 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 - %t64 = call { ptr, i64, i64 } @finch.gen.op(ptr %t36, { ptr, i64, i64 } %t63) - ret { ptr, i64, i64 } %t64 + call void @finch_str_drop(ptr %a61) + %t62 = load { ptr, i64, i64 }, ptr %a58 + store { ptr, i64, i64 } %t62, ptr %a64 + store { ptr, i64, i64 } { ptr @.str.1926, i64 4, i64 0 }, ptr %a65 + call void @finch_str_concat(ptr %a63, ptr %a64, ptr %a65) + store { ptr, i64, i64 } %t62, ptr %a66 + call void @finch_str_drop(ptr %a66) + %t67 = load { ptr, i64, i64 }, ptr %a63 + %t68 = load ptr, ptr %a1 + %t69 = load %S.ast.Type, ptr %a4 + %t70 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t68, %S.ast.Type %t69) + store { ptr, i64, i64 } %t67, ptr %a72 + store { ptr, i64, i64 } %t70, ptr %a73 + call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73) + store { ptr, i64, i64 } %t67, ptr %a74 + call void @finch_str_drop(ptr %a74) + store { ptr, i64, i64 } %t70, ptr %a75 + call void @finch_str_drop(ptr %a75) + %t76 = load { ptr, i64, i64 }, ptr %a71 + %t77 = call { ptr, i64, i64 } @finch.gen.op(ptr %t43, { ptr, i64, i64 } %t76) + store { ptr, i64, i64 } %t76, ptr %a78 + call void @finch_str_drop(ptr %a78) + ret { ptr, i64, i64 } %t77 } define internal void @finch.copy.S_gen_Val(ptr %dst, ptr %src) { @@ -29034,69 +34166,85 @@ entry: %a124 = alloca { ptr, i64, i64 }, align 16 %a125 = alloca { ptr, i64, i64 }, align 16 %a126 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 + %a127 = 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 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca %S.ast.Type, align 16 - %a158 = alloca %S.ast.Type, align 16 - %a171 = alloca %S.ast.Type, align 16 - %a172 = alloca %S.ast.Type, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca %S.ast.Type, align 16 - %a199 = alloca %S.ast.Type, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca %S.ast.Type, align 16 - %a229 = alloca %S.ast.Type, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 + %a133 = alloca { ptr, i64, i64 }, align 16 + %a134 = alloca { ptr, i64, i64 }, align 16 + %a135 = alloca { ptr, i64, i64 }, align 16 + %a137 = alloca { ptr, i64, i64 }, align 16 + %a148 = alloca { ptr, i64, i64 }, align 16 + %a149 = alloca { ptr, i64, i64 }, align 16 + %a155 = alloca { ptr, i64, i64 }, align 16 + %a156 = alloca { ptr, i64, i64 }, align 16 + %a157 = alloca { ptr, i64, i64 }, align 16 + %a161 = alloca %S.ast.Type, align 16 + %a162 = alloca %S.ast.Type, align 16 + %a175 = alloca %S.ast.Type, align 16 + %a176 = alloca %S.ast.Type, align 16 + %a182 = alloca { ptr, i64, i64 }, align 16 + %a183 = alloca { ptr, i64, i64 }, align 16 + %a188 = alloca { ptr, i64, i64 }, align 16 + %a189 = alloca { ptr, i64, i64 }, align 16 + %a202 = alloca %S.ast.Type, align 16 + %a203 = alloca %S.ast.Type, align 16 + %a209 = alloca { ptr, i64, i64 }, align 16 + %a210 = alloca { ptr, i64, i64 }, align 16 + %a215 = alloca { ptr, i64, i64 }, align 16 + %a216 = alloca { ptr, i64, i64 }, align 16 + %a232 = alloca %S.ast.Type, align 16 + %a233 = alloca %S.ast.Type, align 16 + %a237 = 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 - %a241 = alloca { ptr, i64, i64 }, align 16 %a243 = 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 + %a247 = 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 %a252 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a262 = 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 + %a260 = alloca { ptr, i64, i64 }, align 16 + %a261 = alloca { ptr, i64, i64 }, align 16 %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a268 = 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 %a273 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 + %a277 = 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 + %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 - %a288 = alloca { ptr, i64, i64 }, align 16 + %a286 = alloca { ptr, i64, i64 }, align 16 %a289 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = 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 + %a302 = 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 %a312 = alloca { ptr, i64, i64 }, align 16 %a313 = 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 - %a327 = alloca %S.gen.Val, align 16 - %a328 = alloca %S.gen.Val, align 16 + %a322 = alloca { ptr, i64, i64 }, align 16 + %a323 = alloca { ptr, i64, i64 }, align 16 + %a330 = alloca { ptr, i64, i64 }, align 16 + %a331 = 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 + %a342 = alloca { ptr, i64, i64 }, align 16 + %a347 = alloca %S.gen.Val, align 16 + %a348 = alloca %S.gen.Val, align 16 store ptr %p0, ptr %a1 store %S.gen.Val %p1, ptr %a2 store %S.ast.Type %p2, ptr %a3 @@ -29106,97 +34254,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 %then2804, label %endif2806 -then2804: + br i1 %t9, label %then2978, label %endif2980 +then2978: %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 -endif2806: +endif2980: %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.1858, i64 4, i64 0 }, ptr %a18 + store { ptr, i64, i64 } { ptr @.str.1927, 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.from2807 -logic.from2807: - br i1 %t20, label %logic.rhs2808, label %logic.end2809 -logic.rhs2808: + br label %logic.from2981 +logic.from2981: + br i1 %t20, label %logic.rhs2982, label %logic.end2983 +logic.rhs2982: %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.1859, i64 3, i64 0 }, ptr %a24 + store { ptr, i64, i64 } { ptr @.str.1928, 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.rend2810 -logic.rend2810: - br label %logic.end2809 -logic.end2809: - %t27 = phi i1 [ false, %logic.from2807 ], [ %t26, %logic.rend2810 ] - br i1 %t27, label %then2811, label %endif2813 -then2811: - %t28 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } { ptr @.str.1860, i64 4, i64 0 }, 0 + br label %logic.rend2984 +logic.rend2984: + br label %logic.end2983 +logic.end2983: + %t27 = phi i1 [ false, %logic.from2981 ], [ %t26, %logic.rend2984 ] + br i1 %t27, label %then2985, label %endif2987 +then2985: + %t28 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } { ptr @.str.1929, 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 -endif2813: +endif2987: %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.1861, i64 3, i64 0 }, ptr %a38 + store { ptr, i64, i64 } { ptr @.str.1930, 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.from2814 -logic.from2814: - br i1 %t40, label %logic.rhs2815, label %logic.end2816 -logic.rhs2815: + br label %logic.from2988 +logic.from2988: + br i1 %t40, label %logic.rhs2989, label %logic.end2990 +logic.rhs2989: %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.1862, i64 3, i64 0 }, ptr %a44 + store { ptr, i64, i64 } { ptr @.str.1931, 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.rend2817 -logic.rend2817: - br label %logic.end2816 -logic.end2816: - %t47 = phi i1 [ false, %logic.from2814 ], [ %t46, %logic.rend2817 ] - br label %logic.from2818 -logic.from2818: - br i1 %t47, label %logic.rhs2819, label %logic.end2820 -logic.rhs2819: + br label %logic.rend2991 +logic.rend2991: + br label %logic.end2990 +logic.end2990: + %t47 = phi i1 [ false, %logic.from2988 ], [ %t46, %logic.rend2991 ] + br label %logic.from2992 +logic.from2992: + br i1 %t47, label %logic.rhs2993, label %logic.end2994 +logic.rhs2993: %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.from2821 -logic.from2821: - br i1 %t52, label %logic.end2823, label %logic.rhs2822 -logic.rhs2822: + br label %logic.from2995 +logic.from2995: + br i1 %t52, label %logic.end2997, label %logic.rhs2996 +logic.rhs2996: %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.rend2824 -logic.rend2824: - br label %logic.end2823 -logic.end2823: - %t57 = phi i1 [ true, %logic.from2821 ], [ %t56, %logic.rend2824 ] - br label %logic.rend2825 -logic.rend2825: - br label %logic.end2820 -logic.end2820: - %t58 = phi i1 [ false, %logic.from2818 ], [ %t57, %logic.rend2825 ] - br i1 %t58, label %then2826, label %endif2828 -then2826: + br label %logic.rend2998 +logic.rend2998: + br label %logic.end2997 +logic.end2997: + %t57 = phi i1 [ true, %logic.from2995 ], [ %t56, %logic.rend2998 ] + br label %logic.rend2999 +logic.rend2999: + br label %logic.end2994 +logic.end2994: + %t58 = phi i1 [ false, %logic.from2992 ], [ %t57, %logic.rend2999 ] + br i1 %t58, label %then3000, label %endif3002 +then3000: %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 @@ -29209,42 +34357,42 @@ then2826: %t68 = load %S.ast.Type, ptr %a67 %t69 = insertvalue %S.gen.Val %t64, %S.ast.Type %t68, 1 ret %S.gen.Val %t69 -endif2828: +endif3002: %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.from2829 -logic.from2829: - br i1 %t72, label %logic.rhs2830, label %logic.end2831 -logic.rhs2830: + br label %logic.from3003 +logic.from3003: + br i1 %t72, label %logic.rhs3004, label %logic.end3005 +logic.rhs3004: %t73 = load %S.ast.Type, ptr %a3 %t74 = call i1 @finch.gen.isInt(%S.ast.Type %t73) - br label %logic.rend2832 -logic.rend2832: - br label %logic.end2831 -logic.end2831: - %t75 = phi i1 [ false, %logic.from2829 ], [ %t74, %logic.rend2832 ] - br i1 %t75, label %then2833, label %endif2835 -then2833: + br label %logic.rend3006 +logic.rend3006: + br label %logic.end3005 +logic.end3005: + %t75 = phi i1 [ false, %logic.from3003 ], [ %t74, %logic.rend3006 ] + br i1 %t75, label %then3007, label %endif3009 +then3007: %t76 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 3 %t77 = load i1, ptr %t76 - br label %logic.from2836 -logic.from2836: - br i1 %t77, label %logic.rhs2837, label %logic.end2838 -logic.rhs2837: + br label %logic.from3010 +logic.from3010: + br i1 %t77, label %logic.rhs3011, label %logic.end3012 +logic.rhs3011: %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.rend2839 -logic.rend2839: - br label %logic.end2838 -logic.end2838: - %t84 = phi i1 [ false, %logic.from2836 ], [ %t83, %logic.rend2839 ] - br i1 %t84, label %then2840, label %endif2842 -then2840: + br label %logic.rend3013 +logic.rend3013: + br label %logic.end3012 +logic.end3012: + %t84 = phi i1 [ false, %logic.from3010 ], [ %t83, %logic.rend3013 ] + br i1 %t84, label %then3014, label %endif3016 +then3014: %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 @@ -29258,13 +34406,13 @@ then2840: %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 -endif2842: +endif3016: %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 %then2843, label %endif2845 -then2843: + br i1 %t100, label %then3017, label %endif3019 +then3017: %t101 = load ptr, ptr %a1 %t102 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 %t103 = load { ptr, i64, i64 }, ptr %t102 @@ -29279,344 +34427,381 @@ then2843: %t112 = load %S.ast.Type, ptr %a111 %t113 = insertvalue %S.gen.Val %t108, %S.ast.Type %t112, 1 ret %S.gen.Val %t113 -endif2845: +endif3019: %t114 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 3 %t115 = load i1, ptr %t114 - br i1 %t115, label %then2846, label %endif2848 -then2846: + br i1 %t115, label %then3020, label %endif3022 +then3020: %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.1863, i64 11, i64 0 }, ptr %a121 + store { ptr, i64, i64 } { ptr @.str.1932, 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.1864, i64 16, i64 0 }, ptr %a126 + store { ptr, i64, i64 } { ptr @.str.1933, 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 - %t129 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t128) - store { ptr, i64, i64 } %t127, 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 - call void @finch.gen.fail(ptr %t116, %S.ast.Node %t117, { ptr, i64, i64 } %t133) - br label %endif2848 -endif2848: - br label %endif2835 -endif2835: - %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.from2849 -logic.from2849: - br i1 %t136, label %logic.rhs2850, label %logic.end2851 -logic.rhs2850: - %t137 = load %S.ast.Type, ptr %a3 - %t138 = call i1 @finch.gen.isFloat(%S.ast.Type %t137) - br label %logic.rend2852 -logic.rend2852: - br label %logic.end2851 -logic.end2851: - %t139 = phi i1 [ false, %logic.from2849 ], [ %t138, %logic.rend2852 ] - br i1 %t139, label %then2853, label %endif2855 -then2853: - %t140 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 3 - %t141 = load i1, ptr %t140 - br label %logic.from2856 -logic.from2856: - br i1 %t141, label %logic.rhs2857, label %logic.end2858 -logic.rhs2857: - %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.1865, 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.rend2859 -logic.rend2859: - br label %logic.end2858 -logic.end2858: - %t148 = phi i1 [ false, %logic.from2856 ], [ %t147, %logic.rend2859 ] - br i1 %t148, label %then2860, label %endif2862 -then2860: - %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.1866, 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 - %t156 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t156, ptr %a157 - call void @finch.copy.S_ast_Type(ptr %a158, ptr %a157) - %t159 = load %S.ast.Type, ptr %a158 - %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 -endif2862: - %t162 = load ptr, ptr %a1 - %t163 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t164 = load { ptr, i64, i64 }, ptr %t163 - %t165 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t166 = load %S.ast.Type, ptr %t165 - %t167 = load %S.ast.Type, ptr %a3 - %t168 = call { ptr, i64, i64 } @finch.gen.intToFloat(ptr %t162, { ptr, i64, i64 } %t164, %S.ast.Type %t166, %S.ast.Type %t167) - %t169 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t168, 0 - %t170 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t170, ptr %a171 - call void @finch.copy.S_ast_Type(ptr %a172, ptr %a171) - %t173 = load %S.ast.Type, ptr %a172 - %t174 = insertvalue %S.gen.Val %t169, %S.ast.Type %t173, 1 - ret %S.gen.Val %t174 -endif2855: - %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.1867, 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.from2863 -logic.from2863: - br i1 %t181, label %logic.rhs2864, label %logic.end2865 -logic.rhs2864: - %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.1868, 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.rend2866 -logic.rend2866: - br label %logic.end2865 -logic.end2865: - %t188 = phi i1 [ false, %logic.from2863 ], [ %t187, %logic.rend2866 ] - br i1 %t188, label %then2867, label %endif2869 -then2867: - %t189 = load ptr, ptr %a1 - %t190 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t191 = load { ptr, i64, i64 }, ptr %t190 - %t192 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t193 = load %S.ast.Type, ptr %t192 - %t194 = load %S.ast.Type, ptr %a3 - %t195 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t189, { ptr, i64, i64 } %t191, %S.ast.Type %t193, %S.ast.Type %t194) - %t196 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t195, 0 - %t197 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t197, ptr %a198 - call void @finch.copy.S_ast_Type(ptr %a199, ptr %a198) - %t200 = load %S.ast.Type, ptr %a199 - %t201 = insertvalue %S.gen.Val %t196, %S.ast.Type %t200, 1 - ret %S.gen.Val %t201 -endif2869: - %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.1869, 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.from2870 -logic.from2870: - br i1 %t208, label %logic.rhs2871, label %logic.end2872 -logic.rhs2871: - %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.1870, 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.rend2873 -logic.rend2873: - br label %logic.end2872 -logic.end2872: - %t215 = phi i1 [ false, %logic.from2870 ], [ %t214, %logic.rend2873 ] - br label %logic.from2874 -logic.from2874: - br i1 %t215, label %logic.rhs2875, label %logic.end2876 -logic.rhs2875: - %t216 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 3 - %t217 = load i1, ptr %t216 - br label %logic.rend2877 -logic.rend2877: - br label %logic.end2876 -logic.end2876: - %t218 = phi i1 [ false, %logic.from2874 ], [ %t217, %logic.rend2877 ] - br i1 %t218, label %then2878, label %endif2880 -then2878: - %t219 = load ptr, ptr %a1 - %t220 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t221 = load { ptr, i64, i64 }, ptr %t220 - %t222 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t223 = load %S.ast.Type, ptr %t222 - %t224 = load %S.ast.Type, ptr %a3 - %t225 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t219, { ptr, i64, i64 } %t221, %S.ast.Type %t223, %S.ast.Type %t224) - %t226 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t225, 0 - %t227 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t227, ptr %a228 - call void @finch.copy.S_ast_Type(ptr %a229, ptr %a228) - %t230 = load %S.ast.Type, ptr %a229 - %t231 = insertvalue %S.gen.Val %t226, %S.ast.Type %t230, 1 - ret %S.gen.Val %t231 -endif2880: - %t232 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t232, ptr %a234 - store { ptr, i64, i64 } { ptr @.str.1871, 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 - %t238 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t237) - store { ptr, i64, i64 } %t236, 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.1872, i64 14, i64 0 }, ptr %a245 + store { ptr, i64, i64 } %t123, ptr %a127 + call void @finch_str_drop(ptr %a127) + %t128 = load { ptr, i64, i64 }, ptr %a124 + %t129 = load %S.ast.Type, ptr %a3 + %t130 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t129) + store { ptr, i64, i64 } %t128, ptr %a132 + store { ptr, i64, i64 } %t130, ptr %a133 + call void @finch_str_concat(ptr %a131, ptr %a132, ptr %a133) + store { ptr, i64, i64 } %t128, ptr %a134 + call void @finch_str_drop(ptr %a134) + store { ptr, i64, i64 } %t130, ptr %a135 + call void @finch_str_drop(ptr %a135) + %t136 = load { ptr, i64, i64 }, ptr %a131 + call void @finch.gen.fail(ptr %t116, %S.ast.Node %t117, { ptr, i64, i64 } %t136) + store { ptr, i64, i64 } %t136, ptr %a137 + call void @finch_str_drop(ptr %a137) + br label %endif3022 +endif3022: + br label %endif3009 +endif3009: + %t138 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 + %t139 = load %S.ast.Type, ptr %t138 + %t140 = call i1 @finch.gen.isInt(%S.ast.Type %t139) + br label %logic.from3023 +logic.from3023: + br i1 %t140, label %logic.rhs3024, label %logic.end3025 +logic.rhs3024: + %t141 = load %S.ast.Type, ptr %a3 + %t142 = call i1 @finch.gen.isFloat(%S.ast.Type %t141) + br label %logic.rend3026 +logic.rend3026: + br label %logic.end3025 +logic.end3025: + %t143 = phi i1 [ false, %logic.from3023 ], [ %t142, %logic.rend3026 ] + br i1 %t143, label %then3027, label %endif3029 +then3027: + %t144 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 3 + %t145 = load i1, ptr %t144 + br label %logic.from3030 +logic.from3030: + br i1 %t145, label %logic.rhs3031, label %logic.end3032 +logic.rhs3031: + %t146 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 + %t147 = load { ptr, i64, i64 }, ptr %t146 + store { ptr, i64, i64 } %t147, ptr %a148 + store { ptr, i64, i64 } { ptr @.str.1934, i64 5, i64 0 }, ptr %a149 + %t150 = call i32 @finch_str_eq(ptr %a148, ptr %a149) + %t151 = icmp ne i32 %t150, 0 + br label %logic.rend3033 +logic.rend3033: + br label %logic.end3032 +logic.end3032: + %t152 = phi i1 [ false, %logic.from3030 ], [ %t151, %logic.rend3033 ] + br i1 %t152, label %then3034, label %endif3036 +then3034: + %t153 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 + %t154 = load { ptr, i64, i64 }, ptr %t153 + store { ptr, i64, i64 } %t154, ptr %a156 + store { ptr, i64, i64 } { ptr @.str.1935, i64 2, i64 0 }, ptr %a157 + call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) + %t158 = load { ptr, i64, i64 }, ptr %a155 + %t159 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t158, 0 + %t160 = load %S.ast.Type, ptr %a3 + store %S.ast.Type %t160, ptr %a161 + call void @finch.copy.S_ast_Type(ptr %a162, ptr %a161) + %t163 = load %S.ast.Type, ptr %a162 + %t164 = insertvalue %S.gen.Val %t159, %S.ast.Type %t163, 1 + %t165 = insertvalue %S.gen.Val %t164, i1 true, 3 + ret %S.gen.Val %t165 +endif3036: + %t166 = load ptr, ptr %a1 + %t167 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 + %t168 = load { ptr, i64, i64 }, ptr %t167 + %t169 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 + %t170 = load %S.ast.Type, ptr %t169 + %t171 = load %S.ast.Type, ptr %a3 + %t172 = call { ptr, i64, i64 } @finch.gen.intToFloat(ptr %t166, { ptr, i64, i64 } %t168, %S.ast.Type %t170, %S.ast.Type %t171) + %t173 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t172, 0 + %t174 = load %S.ast.Type, ptr %a3 + store %S.ast.Type %t174, ptr %a175 + call void @finch.copy.S_ast_Type(ptr %a176, ptr %a175) + %t177 = load %S.ast.Type, ptr %a176 + %t178 = insertvalue %S.gen.Val %t173, %S.ast.Type %t177, 1 + ret %S.gen.Val %t178 +endif3029: + %t179 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 + %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.1936, i64 3, i64 0 }, ptr %a183 + %t184 = call i32 @finch_str_eq(ptr %a182, ptr %a183) + %t185 = icmp ne i32 %t184, 0 + br label %logic.from3037 +logic.from3037: + br i1 %t185, label %logic.rhs3038, label %logic.end3039 +logic.rhs3038: + %t186 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 + %t187 = load { ptr, i64, i64 }, ptr %t186 + store { ptr, i64, i64 } %t187, ptr %a188 + store { ptr, i64, i64 } { ptr @.str.1937, i64 5, i64 0 }, ptr %a189 + %t190 = call i32 @finch_str_eq(ptr %a188, ptr %a189) + %t191 = icmp ne i32 %t190, 0 + br label %logic.rend3040 +logic.rend3040: + br label %logic.end3039 +logic.end3039: + %t192 = phi i1 [ false, %logic.from3037 ], [ %t191, %logic.rend3040 ] + br i1 %t192, label %then3041, label %endif3043 +then3041: + %t193 = load ptr, ptr %a1 + %t194 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 + %t195 = load { ptr, i64, i64 }, ptr %t194 + %t196 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 + %t197 = load %S.ast.Type, ptr %t196 + %t198 = load %S.ast.Type, ptr %a3 + %t199 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t193, { ptr, i64, i64 } %t195, %S.ast.Type %t197, %S.ast.Type %t198) + %t200 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t199, 0 + %t201 = load %S.ast.Type, ptr %a3 + store %S.ast.Type %t201, ptr %a202 + call void @finch.copy.S_ast_Type(ptr %a203, ptr %a202) + %t204 = load %S.ast.Type, ptr %a203 + %t205 = insertvalue %S.gen.Val %t200, %S.ast.Type %t204, 1 + ret %S.gen.Val %t205 +endif3043: + %t206 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 + %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.1938, i64 5, i64 0 }, ptr %a210 + %t211 = call i32 @finch_str_eq(ptr %a209, ptr %a210) + %t212 = icmp ne i32 %t211, 0 + br label %logic.from3044 +logic.from3044: + br i1 %t212, label %logic.rhs3045, label %logic.end3046 +logic.rhs3045: + %t213 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 + %t214 = load { ptr, i64, i64 }, ptr %t213 + store { ptr, i64, i64 } %t214, ptr %a215 + store { ptr, i64, i64 } { ptr @.str.1939, i64 3, i64 0 }, ptr %a216 + %t217 = call i32 @finch_str_eq(ptr %a215, ptr %a216) + %t218 = icmp ne i32 %t217, 0 + br label %logic.rend3047 +logic.rend3047: + br label %logic.end3046 +logic.end3046: + %t219 = phi i1 [ false, %logic.from3044 ], [ %t218, %logic.rend3047 ] + br label %logic.from3048 +logic.from3048: + br i1 %t219, label %logic.rhs3049, label %logic.end3050 +logic.rhs3049: + %t220 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 3 + %t221 = load i1, ptr %t220 + br label %logic.rend3051 +logic.rend3051: + br label %logic.end3050 +logic.end3050: + %t222 = phi i1 [ false, %logic.from3048 ], [ %t221, %logic.rend3051 ] + br i1 %t222, label %then3052, label %endif3054 +then3052: + %t223 = load ptr, ptr %a1 + %t224 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 + %t225 = load { ptr, i64, i64 }, ptr %t224 + %t226 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 + %t227 = load %S.ast.Type, ptr %t226 + %t228 = load %S.ast.Type, ptr %a3 + %t229 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t223, { ptr, i64, i64 } %t225, %S.ast.Type %t227, %S.ast.Type %t228) + %t230 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t229, 0 + %t231 = load %S.ast.Type, ptr %a3 + store %S.ast.Type %t231, ptr %a232 + call void @finch.copy.S_ast_Type(ptr %a233, ptr %a232) + %t234 = load %S.ast.Type, ptr %a233 + %t235 = insertvalue %S.gen.Val %t230, %S.ast.Type %t234, 1 + ret %S.gen.Val %t235 +endif3054: + %t236 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } %t236, ptr %a238 + store { ptr, i64, i64 } { ptr @.str.1940, i64 9, i64 0 }, ptr %a239 + call void @finch_str_concat(ptr %a237, ptr %a238, ptr %a239) + %t240 = load { ptr, i64, i64 }, ptr %a237 + %t241 = load %S.ast.Type, ptr %a3 + %t242 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t241) + store { ptr, i64, i64 } %t240, ptr %a244 + store { ptr, i64, i64 } %t242, 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 - %t248 = load %S.ast.Type, ptr %t247 - %t249 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t248) - store { ptr, i64, i64 } %t246, 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 %a254 - %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.from2881 -logic.from2881: - br i1 %t257, label %logic.rhs2882, label %logic.end2883 -logic.rhs2882: - %t258 = load %S.ast.Type, ptr %a3 - %t259 = call i1 @finch.gen.isNumber(%S.ast.Type %t258) - br label %logic.rend2884 -logic.rend2884: - br label %logic.end2883 -logic.end2883: - %t260 = phi i1 [ false, %logic.from2881 ], [ %t259, %logic.rend2884 ] - br i1 %t260, label %then2885, label %endif2887 -then2885: - %t261 = load { ptr, i64, i64 }, ptr %a254 - store { ptr, i64, i64 } %t261, ptr %a263 - store { ptr, i64, i64 } { ptr @.str.1873, 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 - %t267 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t266) - store { ptr, i64, i64 } %t265, 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.1874, 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.from2888 -logic.from2888: - br i1 %t278, label %logic.rhs2889, label %logic.end2890 -logic.rhs2889: - %t279 = load %S.ast.Type, ptr %a3 - %t280 = call i1 @finch.gen.isInt(%S.ast.Type %t279) - br label %logic.rend2891 -logic.rend2891: - br label %logic.end2890 -logic.end2890: - %t281 = phi i1 [ false, %logic.from2888 ], [ %t280, %logic.rend2891 ] - br i1 %t281, label %then2892, label %endif2894 -then2892: - %t282 = load { ptr, i64, i64 }, ptr %a254 + store { ptr, i64, i64 } %t240, ptr %a246 + call void @finch_str_drop(ptr %a246) + store { ptr, i64, i64 } %t242, ptr %a247 + call void @finch_str_drop(ptr %a247) + %t248 = load { ptr, i64, i64 }, ptr %a243 + store { ptr, i64, i64 } %t248, ptr %a250 + store { ptr, i64, i64 } { ptr @.str.1941, i64 14, i64 0 }, ptr %a251 + call void @finch_str_concat(ptr %a249, ptr %a250, ptr %a251) + store { ptr, i64, i64 } %t248, ptr %a252 + call void @finch_str_drop(ptr %a252) + %t253 = load { ptr, i64, i64 }, ptr %a249 + %t254 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 + %t255 = load %S.ast.Type, ptr %t254 + %t256 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t255) + store { ptr, i64, i64 } %t253, ptr %a258 + store { ptr, i64, i64 } %t256, ptr %a259 + call void @finch_str_concat(ptr %a257, ptr %a258, ptr %a259) + store { ptr, i64, i64 } %t253, ptr %a260 + call void @finch_str_drop(ptr %a260) + store { ptr, i64, i64 } %t256, ptr %a261 + call void @finch_str_drop(ptr %a261) + %t262 = load { ptr, i64, i64 }, ptr %a257 + store { ptr, i64, i64 } %t262, ptr %a263 + %t264 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 + %t265 = load %S.ast.Type, ptr %t264 + %t266 = call i1 @finch.gen.isNumber(%S.ast.Type %t265) + br label %logic.from3055 +logic.from3055: + br i1 %t266, label %logic.rhs3056, label %logic.end3057 +logic.rhs3056: + %t267 = load %S.ast.Type, ptr %a3 + %t268 = call i1 @finch.gen.isNumber(%S.ast.Type %t267) + br label %logic.rend3058 +logic.rend3058: + br label %logic.end3057 +logic.end3057: + %t269 = phi i1 [ false, %logic.from3055 ], [ %t268, %logic.rend3058 ] + br i1 %t269, label %then3059, label %endif3061 +then3059: + %t270 = load { ptr, i64, i64 }, ptr %a263 + store { ptr, i64, i64 } %t270, ptr %a272 + store { ptr, i64, i64 } { ptr @.str.1942, i64 6, i64 0 }, ptr %a273 + call void @finch_str_concat(ptr %a271, ptr %a272, ptr %a273) + %t274 = load { ptr, i64, i64 }, ptr %a271 + %t275 = load %S.ast.Type, ptr %a3 + %t276 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t275) + store { ptr, i64, i64 } %t274, ptr %a278 + store { ptr, i64, i64 } %t276, ptr %a279 + call void @finch_str_concat(ptr %a277, ptr %a278, ptr %a279) + store { ptr, i64, i64 } %t274, ptr %a280 + call void @finch_str_drop(ptr %a280) + store { ptr, i64, i64 } %t276, ptr %a281 + call void @finch_str_drop(ptr %a281) + %t282 = load { ptr, i64, i64 }, ptr %a277 store { ptr, i64, i64 } %t282, ptr %a284 - store { ptr, i64, i64 } { ptr @.str.1875, i64 26, i64 0 }, ptr %a285 + store { ptr, i64, i64 } { ptr @.str.1943, i64 16, 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 %endif2894 -endif2894: - %t287 = load { ptr, i64, i64 }, ptr %a254 - store { ptr, i64, i64 } %t287, ptr %a289 - store { ptr, i64, i64 } { ptr @.str.1876, 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 %endif2887 -endif2887: - %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.1877, 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.from2895 -logic.from2895: - br i1 %t297, label %logic.rhs2896, label %logic.end2897 -logic.rhs2896: - %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.from2898 -logic.from2898: - br i1 %t300, label %logic.end2900, label %logic.rhs2899 -logic.rhs2899: - %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.1878, 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.rend2901 -logic.rend2901: - br label %logic.end2900 -logic.end2900: - %t308 = phi i1 [ true, %logic.from2898 ], [ %t307, %logic.rend2901 ] - br label %logic.from2902 -logic.from2902: - br i1 %t308, label %logic.end2904, label %logic.rhs2903 -logic.rhs2903: - %t309 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t310 = getelementptr inbounds %S.ast.Type, ptr %t309, i32 0, i32 0 + store { ptr, i64, i64 } %t282, ptr %a286 + call void @finch_str_drop(ptr %a286) + %t287 = load { ptr, i64, i64 }, ptr %a283 + %t288 = load { ptr, i64, i64 }, ptr %a263 + store { ptr, i64, i64 } %t287, ptr %a263 + store { ptr, i64, i64 } %t288, ptr %a289 + call void @finch_str_drop(ptr %a289) + %t290 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 + %t291 = load %S.ast.Type, ptr %t290 + %t292 = call i1 @finch.gen.isFloat(%S.ast.Type %t291) + br label %logic.from3062 +logic.from3062: + br i1 %t292, label %logic.rhs3063, label %logic.end3064 +logic.rhs3063: + %t293 = load %S.ast.Type, ptr %a3 + %t294 = call i1 @finch.gen.isInt(%S.ast.Type %t293) + br label %logic.rend3065 +logic.rend3065: + br label %logic.end3064 +logic.end3064: + %t295 = phi i1 [ false, %logic.from3062 ], [ %t294, %logic.rend3065 ] + br i1 %t295, label %then3066, label %endif3068 +then3066: + %t296 = load { ptr, i64, i64 }, ptr %a263 + store { ptr, i64, i64 } %t296, ptr %a298 + store { ptr, i64, i64 } { ptr @.str.1944, i64 26, i64 0 }, ptr %a299 + call void @finch_str_concat(ptr %a297, ptr %a298, ptr %a299) + %t300 = load { ptr, i64, i64 }, ptr %a297 + %t301 = load { ptr, i64, i64 }, ptr %a263 + store { ptr, i64, i64 } %t300, ptr %a263 + store { ptr, i64, i64 } %t301, ptr %a302 + call void @finch_str_drop(ptr %a302) + br label %endif3068 +endif3068: + %t303 = load { ptr, i64, i64 }, ptr %a263 + store { ptr, i64, i64 } %t303, ptr %a305 + store { ptr, i64, i64 } { ptr @.str.1945, i64 1, i64 0 }, ptr %a306 + call void @finch_str_concat(ptr %a304, ptr %a305, ptr %a306) + %t307 = load { ptr, i64, i64 }, ptr %a304 + %t308 = load { ptr, i64, i64 }, ptr %a263 + store { ptr, i64, i64 } %t307, ptr %a263 + store { ptr, i64, i64 } %t308, ptr %a309 + call void @finch_str_drop(ptr %a309) + br label %endif3061 +endif3061: + %t310 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 %t311 = load { ptr, i64, i64 }, ptr %t310 store { ptr, i64, i64 } %t311, ptr %a312 - store { ptr, i64, i64 } { ptr @.str.1879, i64 4, i64 0 }, ptr %a313 + store { ptr, i64, i64 } { ptr @.str.1946, i64 3, i64 0 }, ptr %a313 %t314 = call i32 @finch_str_eq(ptr %a312, ptr %a313) %t315 = icmp ne i32 %t314, 0 - br label %logic.rend2905 -logic.rend2905: - br label %logic.end2904 -logic.end2904: - %t316 = phi i1 [ true, %logic.from2902 ], [ %t315, %logic.rend2905 ] - br label %logic.rend2906 -logic.rend2906: - br label %logic.end2897 -logic.end2897: - %t317 = phi i1 [ false, %logic.from2895 ], [ %t316, %logic.rend2906 ] - br i1 %t317, label %then2907, label %endif2909 -then2907: - %t318 = load { ptr, i64, i64 }, ptr %a254 - store { ptr, i64, i64 } %t318, ptr %a320 - store { ptr, i64, i64 } { ptr @.str.1880, 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 %endif2909 -endif2909: - %t323 = load ptr, ptr %a1 - %t324 = load %S.ast.Node, ptr %a4 - %t325 = load { ptr, i64, i64 }, ptr %a254 - call void @finch.gen.fail(ptr %t323, %S.ast.Node %t324, { ptr, i64, i64 } %t325) - %t326 = load %S.gen.Val, ptr %a2 - store %S.gen.Val %t326, ptr %a327 - call void @finch.copy.S_gen_Val(ptr %a328, ptr %a327) - %t329 = load %S.gen.Val, ptr %a328 - ret %S.gen.Val %t329 + br label %logic.from3069 +logic.from3069: + br i1 %t315, label %logic.rhs3070, label %logic.end3071 +logic.rhs3070: + %t316 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 + %t317 = load %S.ast.Type, ptr %t316 + %t318 = call i1 @finch.gen.isNumber(%S.ast.Type %t317) + br label %logic.from3072 +logic.from3072: + br i1 %t318, label %logic.end3074, label %logic.rhs3073 +logic.rhs3073: + %t319 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 + %t320 = getelementptr inbounds %S.ast.Type, ptr %t319, i32 0, i32 0 + %t321 = load { ptr, i64, i64 }, ptr %t320 + store { ptr, i64, i64 } %t321, ptr %a322 + store { ptr, i64, i64 } { ptr @.str.1947, i64 4, i64 0 }, ptr %a323 + %t324 = call i32 @finch_str_eq(ptr %a322, ptr %a323) + %t325 = icmp ne i32 %t324, 0 + br label %logic.rend3075 +logic.rend3075: + br label %logic.end3074 +logic.end3074: + %t326 = phi i1 [ true, %logic.from3072 ], [ %t325, %logic.rend3075 ] + br label %logic.from3076 +logic.from3076: + br i1 %t326, label %logic.end3078, label %logic.rhs3077 +logic.rhs3077: + %t327 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 + %t328 = getelementptr inbounds %S.ast.Type, ptr %t327, i32 0, i32 0 + %t329 = load { ptr, i64, i64 }, ptr %t328 + store { ptr, i64, i64 } %t329, ptr %a330 + store { ptr, i64, i64 } { ptr @.str.1948, i64 4, i64 0 }, ptr %a331 + %t332 = call i32 @finch_str_eq(ptr %a330, ptr %a331) + %t333 = icmp ne i32 %t332, 0 + br label %logic.rend3079 +logic.rend3079: + br label %logic.end3078 +logic.end3078: + %t334 = phi i1 [ true, %logic.from3076 ], [ %t333, %logic.rend3079 ] + br label %logic.rend3080 +logic.rend3080: + br label %logic.end3071 +logic.end3071: + %t335 = phi i1 [ false, %logic.from3069 ], [ %t334, %logic.rend3080 ] + br i1 %t335, label %then3081, label %endif3083 +then3081: + %t336 = load { ptr, i64, i64 }, ptr %a263 + store { ptr, i64, i64 } %t336, ptr %a338 + store { ptr, i64, i64 } { ptr @.str.1949, i64 34, i64 0 }, ptr %a339 + call void @finch_str_concat(ptr %a337, ptr %a338, ptr %a339) + %t340 = load { ptr, i64, i64 }, ptr %a337 + %t341 = load { ptr, i64, i64 }, ptr %a263 + store { ptr, i64, i64 } %t340, ptr %a263 + store { ptr, i64, i64 } %t341, ptr %a342 + call void @finch_str_drop(ptr %a342) + br label %endif3083 +endif3083: + %t343 = load ptr, ptr %a1 + %t344 = load %S.ast.Node, ptr %a4 + %t345 = load { ptr, i64, i64 }, ptr %a263 + call void @finch.gen.fail(ptr %t343, %S.ast.Node %t344, { ptr, i64, i64 } %t345) + %t346 = load %S.gen.Val, ptr %a2 + store %S.gen.Val %t346, ptr %a347 + call void @finch.copy.S_gen_Val(ptr %a348, ptr %a347) + %t349 = load %S.gen.Val, ptr %a348 + call void @finch_str_drop(ptr %a263) + ret %S.gen.Val %t349 } define internal i64 @finch.gen.lookup(ptr %p0, { ptr, i64, i64 } %p1) { @@ -29632,28 +34817,28 @@ entry: store { ptr, i64, i64 } %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic2910, label %ok2911 -panic2910: - call void @finch_panic(ptr @.str.1881, i64 1148, ptr @.str.1882) + br i1 %t4, label %panic3084, label %ok3085 +panic3084: + call void @finch_panic(ptr @.str.1950, i64 1283, ptr @.str.1951) unreachable -ok2911: +ok3085: %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.cond2912 -for.cond2912: + br label %for.cond3086 +for.cond3086: %t9 = load i64, ptr %a8 %t10 = icmp slt i64 %t9, %t7 - br i1 %t10, label %for.body2913, label %for.end2915 -for.body2913: + br i1 %t10, label %for.body3087, label %for.end3089 +for.body3087: %t11 = load ptr, ptr %a1 %t12 = icmp eq ptr %t11, null - br i1 %t12, label %panic2916, label %ok2917 -panic2916: - call void @finch_panic(ptr @.str.1883, i64 1149, ptr @.str.1884) + br i1 %t12, label %panic3090, label %ok3091 +panic3090: + call void @finch_panic(ptr @.str.1952, i64 1284, ptr @.str.1953) unreachable -ok2917: +ok3091: %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 @@ -29663,50 +34848,50 @@ ok2917: store i64 %t18, ptr %a19 %t20 = load ptr, ptr %a1 %t21 = icmp eq ptr %t20, null - br i1 %t21, label %panic2918, label %ok2919 -panic2918: - call void @finch_panic(ptr @.str.1885, i64 1150, ptr @.str.1886) + br i1 %t21, label %panic3092, label %ok3093 +panic3092: + call void @finch_panic(ptr @.str.1954, i64 1285, ptr @.str.1955) unreachable -ok2919: +ok3093: %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 %range2920, label %inrange2921 -range2920: - call void @finch_panic_index(ptr @.str.1887, i64 1150, i64 %t23, i64 %t25) + br i1 %t26, label %range3094, label %inrange3095 +range3094: + call void @finch_panic_index(ptr @.str.1956, i64 1285, i64 %t23, i64 %t25) unreachable -inrange2921: +inrange3095: %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.cond2922 -for.cond2922: + br label %for.cond3096 +for.cond3096: %t33 = load i64, ptr %a32 %t34 = icmp slt i64 %t33, %t31 - br i1 %t34, label %for.body2923, label %for.end2925 -for.body2923: + br i1 %t34, label %for.body3097, label %for.end3099 +for.body3097: %t35 = load ptr, ptr %a1 %t36 = icmp eq ptr %t35, null - br i1 %t36, label %panic2926, label %ok2927 -panic2926: - call void @finch_panic(ptr @.str.1888, i64 1151, ptr @.str.1889) + br i1 %t36, label %panic3100, label %ok3101 +panic3100: + call void @finch_panic(ptr @.str.1957, i64 1286, ptr @.str.1958) unreachable -ok2927: +ok3101: %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 %range2928, label %inrange2929 -range2928: - call void @finch_panic_index(ptr @.str.1890, i64 1151, i64 %t38, i64 %t40) + br i1 %t41, label %range3102, label %inrange3103 +range3102: + call void @finch_panic_index(ptr @.str.1959, i64 1286, i64 %t38, i64 %t40) unreachable -inrange2929: +inrange3103: %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 @@ -29714,11 +34899,11 @@ inrange2929: %t46 = load { ptr, i64, i64 }, ptr %t44 %t47 = extractvalue { ptr, i64, i64 } %t46, 1 %t48 = icmp uge i64 %t45, %t47 - br i1 %t48, label %range2930, label %inrange2931 -range2930: - call void @finch_panic_index(ptr @.str.1891, i64 1151, i64 %t45, i64 %t47) + br i1 %t48, label %range3104, label %inrange3105 +range3104: + call void @finch_panic_index(ptr @.str.1960, i64 1286, i64 %t45, i64 %t47) unreachable -inrange2931: +inrange3105: %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 @@ -29728,38 +34913,38 @@ inrange2931: 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 %then2932, label %endif2934 -then2932: + br i1 %t57, label %then3106, label %endif3108 +then3106: %t58 = load ptr, ptr %a1 %t59 = icmp eq ptr %t58, null - br i1 %t59, label %panic2935, label %ok2936 -panic2935: - call void @finch_panic(ptr @.str.1892, i64 1152, ptr @.str.1893) + br i1 %t59, label %panic3109, label %ok3110 +panic3109: + call void @finch_panic(ptr @.str.1961, i64 1287, ptr @.str.1962) unreachable -ok2936: - %t60 = getelementptr inbounds %S.gen.Gen, ptr %t58, i32 0, i32 42 +ok3110: + %t60 = getelementptr inbounds %S.gen.Gen, ptr %t58, i32 0, i32 43 %t61 = load i1, ptr %t60 - br label %logic.from2937 -logic.from2937: - br i1 %t61, label %logic.rhs2938, label %logic.end2939 -logic.rhs2938: + br label %logic.from3111 +logic.from3111: + br i1 %t61, label %logic.rhs3112, label %logic.end3113 +logic.rhs3112: %t62 = load ptr, ptr %a1 %t63 = icmp eq ptr %t62, null - br i1 %t63, label %panic2940, label %ok2941 -panic2940: - call void @finch_panic(ptr @.str.1894, i64 1152, ptr @.str.1895) + br i1 %t63, label %panic3114, label %ok3115 +panic3114: + call void @finch_panic(ptr @.str.1963, i64 1287, ptr @.str.1964) unreachable -ok2941: +ok3115: %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 %range2942, label %inrange2943 -range2942: - call void @finch_panic_index(ptr @.str.1896, i64 1152, i64 %t65, i64 %t67) + br i1 %t68, label %range3116, label %inrange3117 +range3116: + call void @finch_panic_index(ptr @.str.1965, i64 1287, i64 %t65, i64 %t67) unreachable -inrange2943: +inrange3117: %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 @@ -29767,54 +34952,54 @@ inrange2943: %t73 = load { ptr, i64, i64 }, ptr %t71 %t74 = extractvalue { ptr, i64, i64 } %t73, 1 %t75 = icmp uge i64 %t72, %t74 - br i1 %t75, label %range2944, label %inrange2945 -range2944: - call void @finch_panic_index(ptr @.str.1897, i64 1152, i64 %t72, i64 %t74) + br i1 %t75, label %range3118, label %inrange3119 +range3118: + call void @finch_panic_index(ptr @.str.1966, i64 1287, i64 %t72, i64 %t74) unreachable -inrange2945: +inrange3119: %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 %panic2946, label %ok2947 -panic2946: - call void @finch_panic(ptr @.str.1898, i64 1152, ptr @.str.1899) + br i1 %t81, label %panic3120, label %ok3121 +panic3120: + call void @finch_panic(ptr @.str.1967, i64 1287, ptr @.str.1968) unreachable -ok2947: - %t82 = getelementptr inbounds %S.gen.Gen, ptr %t80, i32 0, i32 43 +ok3121: + %t82 = getelementptr inbounds %S.gen.Gen, ptr %t80, i32 0, i32 44 %t83 = load i64, ptr %t82 %t84 = icmp sge i64 %t79, %t83 - br label %logic.rend2948 -logic.rend2948: - br label %logic.end2939 -logic.end2939: - %t85 = phi i1 [ false, %logic.from2937 ], [ %t84, %logic.rend2948 ] - br i1 %t85, label %then2949, label %endif2951 -then2949: - br label %for.step2924 -endif2951: + br label %logic.rend3122 +logic.rend3122: + br label %logic.end3113 +logic.end3113: + %t85 = phi i1 [ false, %logic.from3111 ], [ %t84, %logic.rend3122 ] + br i1 %t85, label %then3123, label %endif3125 +then3123: + br label %for.step3098 +endif3125: %t86 = load i64, ptr %a19 %t87 = mul i64 %t86, 100000 %t88 = load i64, ptr %a32 %t89 = add i64 %t87, %t88 ret i64 %t89 -endif2934: - br label %for.step2924 -for.step2924: +endif3108: + br label %for.step3098 +for.step3098: %t90 = load i64, ptr %a32 %t91 = add i64 %t90, 1 store i64 %t91, ptr %a32 - br label %for.cond2922 -for.end2925: - br label %for.step2914 -for.step2914: + br label %for.cond3096 +for.end3099: + br label %for.step3088 +for.step3088: %t92 = load i64, ptr %a8 %t93 = add i64 %t92, 1 store i64 %t93, ptr %a8 - br label %for.cond2912 -for.end2915: + br label %for.cond3086 +for.end3089: ret i64 -1 } @@ -29832,8 +35017,8 @@ 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 + %t8 = getelementptr inbounds %S.gen.Var, ptr %dst, i32 0, i32 7 + %t9 = getelementptr inbounds %S.gen.Var, ptr %src, i32 0, i32 7 call void @finch_str_copy(ptr %t8, ptr %t9) ret void } @@ -29848,22 +35033,22 @@ entry: store i64 %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic2952, label %ok2953 -panic2952: - call void @finch_panic(ptr @.str.1900, i64 1163, ptr @.str.1901) + br i1 %t4, label %panic3126, label %ok3127 +panic3126: + call void @finch_panic(ptr @.str.1969, i64 1298, ptr @.str.1970) unreachable -ok2953: +ok3127: %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 %range2954, label %inrange2955 -range2954: - call void @finch_panic_index(ptr @.str.1902, i64 1163, i64 %t7, i64 %t9) + br i1 %t10, label %range3128, label %inrange3129 +range3128: + call void @finch_panic_index(ptr @.str.1971, i64 1298, i64 %t7, i64 %t9) unreachable -inrange2955: +inrange3129: %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 @@ -29872,11 +35057,11 @@ inrange2955: %t16 = load { ptr, i64, i64 }, ptr %t13 %t17 = extractvalue { ptr, i64, i64 } %t16, 1 %t18 = icmp uge i64 %t15, %t17 - br i1 %t18, label %range2956, label %inrange2957 -range2956: - call void @finch_panic_index(ptr @.str.1903, i64 1163, i64 %t15, i64 %t17) + br i1 %t18, label %range3130, label %inrange3131 +range3130: + call void @finch_panic_index(ptr @.str.1972, i64 1298, i64 %t15, i64 %t17) unreachable -inrange2957: +inrange3131: %t19 = extractvalue { ptr, i64, i64 } %t16, 0 %t20 = getelementptr inbounds %S.gen.Var, ptr %t19, i64 %t15 %t21 = load %S.gen.Var, ptr %t20 @@ -29901,38 +35086,38 @@ entry: store { ptr, i64, i64 } %p2, ptr %a3 %t4 = load ptr, ptr %a1 %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic2958, label %ok2959 -panic2958: - call void @finch_panic(ptr @.str.1904, i64 1167, ptr @.str.1905) + br i1 %t5, label %panic3132, label %ok3133 +panic3132: + call void @finch_panic(ptr @.str.1973, i64 1302, ptr @.str.1974) unreachable -ok2959: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 14 +ok3133: + %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.cond2960 -for.cond2960: + br label %for.cond3134 +for.cond3134: %t10 = load i64, ptr %a9 %t11 = icmp slt i64 %t10, %t8 - br i1 %t11, label %for.body2961, label %for.end2963 -for.body2961: + br i1 %t11, label %for.body3135, label %for.end3137 +for.body3135: %t12 = load ptr, ptr %a1 %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic2964, label %ok2965 -panic2964: - call void @finch_panic(ptr @.str.1906, i64 1168, ptr @.str.1907) + br i1 %t13, label %panic3138, label %ok3139 +panic3138: + call void @finch_panic(ptr @.str.1975, i64 1303, ptr @.str.1976) unreachable -ok2965: - %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 14 +ok3139: + %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 %range2966, label %inrange2967 -range2966: - call void @finch_panic_index(ptr @.str.1908, i64 1168, i64 %t15, i64 %t17) + br i1 %t18, label %range3140, label %inrange3141 +range3140: + call void @finch_panic_index(ptr @.str.1977, i64 1303, i64 %t15, i64 %t17) unreachable -inrange2967: +inrange3141: %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 @@ -29942,27 +35127,27 @@ inrange2967: 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.from2968 -logic.from2968: - br i1 %t27, label %logic.rhs2969, label %logic.end2970 -logic.rhs2969: + br label %logic.from3142 +logic.from3142: + br i1 %t27, label %logic.rhs3143, label %logic.end3144 +logic.rhs3143: %t28 = load ptr, ptr %a1 %t29 = icmp eq ptr %t28, null - br i1 %t29, label %panic2971, label %ok2972 -panic2971: - call void @finch_panic(ptr @.str.1909, i64 1168, ptr @.str.1910) + br i1 %t29, label %panic3145, label %ok3146 +panic3145: + call void @finch_panic(ptr @.str.1978, i64 1303, ptr @.str.1979) unreachable -ok2972: - %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 14 +ok3146: + %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 %range2973, label %inrange2974 -range2973: - call void @finch_panic_index(ptr @.str.1911, i64 1168, i64 %t31, i64 %t33) + br i1 %t34, label %range3147, label %inrange3148 +range3147: + call void @finch_panic_index(ptr @.str.1980, i64 1303, i64 %t31, i64 %t33) unreachable -inrange2974: +inrange3148: %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 @@ -29972,55 +35157,55 @@ inrange2974: 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.rend2975 -logic.rend2975: - br label %logic.end2970 -logic.end2970: - %t44 = phi i1 [ false, %logic.from2968 ], [ %t43, %logic.rend2975 ] - br label %logic.from2976 -logic.from2976: - br i1 %t44, label %logic.rhs2977, label %logic.end2978 -logic.rhs2977: + br label %logic.rend3149 +logic.rend3149: + br label %logic.end3144 +logic.end3144: + %t44 = phi i1 [ false, %logic.from3142 ], [ %t43, %logic.rend3149 ] + br label %logic.from3150 +logic.from3150: + br i1 %t44, label %logic.rhs3151, label %logic.end3152 +logic.rhs3151: %t45 = load ptr, ptr %a1 %t46 = icmp eq ptr %t45, null - br i1 %t46, label %panic2979, label %ok2980 -panic2979: - call void @finch_panic(ptr @.str.1912, i64 1168, ptr @.str.1913) + br i1 %t46, label %panic3153, label %ok3154 +panic3153: + call void @finch_panic(ptr @.str.1981, i64 1303, ptr @.str.1982) unreachable -ok2980: - %t47 = getelementptr inbounds %S.gen.Gen, ptr %t45, i32 0, i32 14 +ok3154: + %t47 = getelementptr inbounds %S.gen.Gen, ptr %t45, i32 0, i32 15 %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 %range2981, label %inrange2982 -range2981: - call void @finch_panic_index(ptr @.str.1914, i64 1168, i64 %t48, i64 %t50) + br i1 %t51, label %range3155, label %inrange3156 +range3155: + call void @finch_panic_index(ptr @.str.1983, i64 1303, i64 %t48, i64 %t50) unreachable -inrange2982: +inrange3156: %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.rend2983 -logic.rend2983: - br label %logic.end2978 -logic.end2978: - %t58 = phi i1 [ false, %logic.from2976 ], [ %t57, %logic.rend2983 ] - br i1 %t58, label %then2984, label %endif2986 -then2984: + br label %logic.rend3157 +logic.rend3157: + br label %logic.end3152 +logic.end3152: + %t58 = phi i1 [ false, %logic.from3150 ], [ %t57, %logic.rend3157 ] + br i1 %t58, label %then3158, label %endif3160 +then3158: %t59 = load i64, ptr %a9 ret i64 %t59 -endif2986: - br label %for.step2962 -for.step2962: +endif3160: + br label %for.step3136 +for.step3136: %t60 = load i64, ptr %a9 %t61 = add i64 %t60, 1 store i64 %t61, ptr %a9 - br label %for.cond2960 -for.end2963: + br label %for.cond3134 +for.end3137: ret i64 -1 } @@ -30043,38 +35228,38 @@ entry: store { ptr, i64, i64 } %p3, ptr %a4 %t5 = load ptr, ptr %a1 %t6 = icmp eq ptr %t5, null - br i1 %t6, label %panic2987, label %ok2988 -panic2987: - call void @finch_panic(ptr @.str.1915, i64 1176, ptr @.str.1916) + br i1 %t6, label %panic3161, label %ok3162 +panic3161: + call void @finch_panic(ptr @.str.1984, i64 1311, ptr @.str.1985) unreachable -ok2988: - %t7 = getelementptr inbounds %S.gen.Gen, ptr %t5, i32 0, i32 14 +ok3162: + %t7 = getelementptr inbounds %S.gen.Gen, ptr %t5, i32 0, i32 15 %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.cond2989 -for.cond2989: + br label %for.cond3163 +for.cond3163: %t11 = load i64, ptr %a10 %t12 = icmp slt i64 %t11, %t9 - br i1 %t12, label %for.body2990, label %for.end2992 -for.body2990: + br i1 %t12, label %for.body3164, label %for.end3166 +for.body3164: %t13 = load ptr, ptr %a1 %t14 = icmp eq ptr %t13, null - br i1 %t14, label %panic2993, label %ok2994 -panic2993: - call void @finch_panic(ptr @.str.1917, i64 1177, ptr @.str.1918) + br i1 %t14, label %panic3167, label %ok3168 +panic3167: + call void @finch_panic(ptr @.str.1986, i64 1312, ptr @.str.1987) unreachable -ok2994: - %t15 = getelementptr inbounds %S.gen.Gen, ptr %t13, i32 0, i32 14 +ok3168: + %t15 = getelementptr inbounds %S.gen.Gen, ptr %t13, i32 0, i32 15 %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 %range2995, label %inrange2996 -range2995: - call void @finch_panic_index(ptr @.str.1919, i64 1177, i64 %t16, i64 %t18) + br i1 %t19, label %range3169, label %inrange3170 +range3169: + call void @finch_panic_index(ptr @.str.1988, i64 1312, i64 %t16, i64 %t18) unreachable -inrange2996: +inrange3170: %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 @@ -30084,27 +35269,27 @@ inrange2996: 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.from2997 -logic.from2997: - br i1 %t28, label %logic.rhs2998, label %logic.end2999 -logic.rhs2998: + br label %logic.from3171 +logic.from3171: + br i1 %t28, label %logic.rhs3172, label %logic.end3173 +logic.rhs3172: %t29 = load ptr, ptr %a1 %t30 = icmp eq ptr %t29, null - br i1 %t30, label %panic3000, label %ok3001 -panic3000: - call void @finch_panic(ptr @.str.1920, i64 1177, ptr @.str.1921) + br i1 %t30, label %panic3174, label %ok3175 +panic3174: + call void @finch_panic(ptr @.str.1989, i64 1312, ptr @.str.1990) unreachable -ok3001: - %t31 = getelementptr inbounds %S.gen.Gen, ptr %t29, i32 0, i32 14 +ok3175: + %t31 = getelementptr inbounds %S.gen.Gen, ptr %t29, i32 0, i32 15 %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 %range3002, label %inrange3003 -range3002: - call void @finch_panic_index(ptr @.str.1922, i64 1177, i64 %t32, i64 %t34) + br i1 %t35, label %range3176, label %inrange3177 +range3176: + call void @finch_panic_index(ptr @.str.1991, i64 1312, i64 %t32, i64 %t34) unreachable -inrange3003: +inrange3177: %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 @@ -30114,32 +35299,32 @@ inrange3003: 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.rend3004 -logic.rend3004: - br label %logic.end2999 -logic.end2999: - %t45 = phi i1 [ false, %logic.from2997 ], [ %t44, %logic.rend3004 ] - br label %logic.from3005 -logic.from3005: - br i1 %t45, label %logic.rhs3006, label %logic.end3007 -logic.rhs3006: + br label %logic.rend3178 +logic.rend3178: + br label %logic.end3173 +logic.end3173: + %t45 = phi i1 [ false, %logic.from3171 ], [ %t44, %logic.rend3178 ] + br label %logic.from3179 +logic.from3179: + br i1 %t45, label %logic.rhs3180, label %logic.end3181 +logic.rhs3180: %t46 = load ptr, ptr %a1 %t47 = icmp eq ptr %t46, null - br i1 %t47, label %panic3008, label %ok3009 -panic3008: - call void @finch_panic(ptr @.str.1923, i64 1177, ptr @.str.1924) + br i1 %t47, label %panic3182, label %ok3183 +panic3182: + call void @finch_panic(ptr @.str.1992, i64 1312, ptr @.str.1993) unreachable -ok3009: - %t48 = getelementptr inbounds %S.gen.Gen, ptr %t46, i32 0, i32 14 +ok3183: + %t48 = getelementptr inbounds %S.gen.Gen, ptr %t46, i32 0, i32 15 %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 %range3010, label %inrange3011 -range3010: - call void @finch_panic_index(ptr @.str.1925, i64 1177, i64 %t49, i64 %t51) + br i1 %t52, label %range3184, label %inrange3185 +range3184: + call void @finch_panic_index(ptr @.str.1994, i64 1312, i64 %t49, i64 %t51) unreachable -inrange3011: +inrange3185: %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 @@ -30149,23 +35334,23 @@ inrange3011: 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.rend3012 -logic.rend3012: - br label %logic.end3007 -logic.end3007: - %t62 = phi i1 [ false, %logic.from3005 ], [ %t61, %logic.rend3012 ] - br i1 %t62, label %then3013, label %endif3015 -then3013: + br label %logic.rend3186 +logic.rend3186: + br label %logic.end3181 +logic.end3181: + %t62 = phi i1 [ false, %logic.from3179 ], [ %t61, %logic.rend3186 ] + br i1 %t62, label %then3187, label %endif3189 +then3187: %t63 = load i64, ptr %a10 ret i64 %t63 -endif3015: - br label %for.step2991 -for.step2991: +endif3189: + br label %for.step3165 +for.step3165: %t64 = load i64, ptr %a10 %t65 = add i64 %t64, 1 store i64 %t65, ptr %a10 - br label %for.cond2989 -for.end2992: + br label %for.cond3163 +for.end3166: ret i64 -1 } @@ -30181,61 +35366,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.1926, i64 5, i64 0 }, ptr %t4 + store { ptr, i64, i64 } { ptr @.str.1995, i64 5, i64 0 }, ptr %t4 %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 - store { ptr, i64, i64 } { ptr @.str.1927, i64 4, i64 0 }, ptr %t5 + store { ptr, i64, i64 } { ptr @.str.1996, i64 4, i64 0 }, ptr %t5 %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2 - store { ptr, i64, i64 } { ptr @.str.1928, i64 3, i64 0 }, ptr %t6 + store { ptr, i64, i64 } { ptr @.str.1997, i64 3, i64 0 }, ptr %t6 %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 3 - store { ptr, i64, i64 } { ptr @.str.1929, i64 3, i64 0 }, ptr %t7 + store { ptr, i64, i64 } { ptr @.str.1998, i64 3, i64 0 }, ptr %t7 %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4 - store { ptr, i64, i64 } { ptr @.str.1930, i64 4, i64 0 }, ptr %t8 + store { ptr, i64, i64 } { ptr @.str.1999, i64 4, i64 0 }, ptr %t8 %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 5 - store { ptr, i64, i64 } { ptr @.str.1931, i64 5, i64 0 }, ptr %t9 + store { ptr, i64, i64 } { ptr @.str.2000, i64 5, i64 0 }, ptr %t9 %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 6 - store { ptr, i64, i64 } { ptr @.str.1932, i64 4, i64 0 }, ptr %t10 + store { ptr, i64, i64 } { ptr @.str.2001, i64 4, i64 0 }, ptr %t10 %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 7 - store { ptr, i64, i64 } { ptr @.str.1933, i64 9, i64 0 }, ptr %t11 + store { ptr, i64, i64 } { ptr @.str.2002, i64 9, i64 0 }, ptr %t11 %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 8 - store { ptr, i64, i64 } { ptr @.str.1934, i64 10, i64 0 }, ptr %t12 + store { ptr, i64, i64 } { ptr @.str.2003, i64 10, i64 0 }, ptr %t12 %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 9 - store { ptr, i64, i64 } { ptr @.str.1935, i64 11, i64 0 }, ptr %t13 + store { ptr, i64, i64 } { ptr @.str.2004, i64 11, i64 0 }, ptr %t13 %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 10 - store { ptr, i64, i64 } { ptr @.str.1936, i64 5, i64 0 }, ptr %t14 + store { ptr, i64, i64 } { ptr @.str.2005, i64 5, i64 0 }, ptr %t14 %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 11 - store { ptr, i64, i64 } { ptr @.str.1937, i64 4, i64 0 }, ptr %t15 + store { ptr, i64, i64 } { ptr @.str.2006, i64 4, i64 0 }, ptr %t15 %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 12 - store { ptr, i64, i64 } { ptr @.str.1938, i64 5, i64 0 }, ptr %t16 + store { ptr, i64, i64 } { ptr @.str.2007, i64 5, i64 0 }, ptr %t16 %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 13 - store { ptr, i64, i64 } { ptr @.str.1939, i64 3, i64 0 }, ptr %t17 + store { ptr, i64, i64 } { ptr @.str.2008, i64 3, i64 0 }, ptr %t17 %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 14 - store { ptr, i64, i64 } { ptr @.str.1940, i64 4, i64 0 }, ptr %t18 + store { ptr, i64, i64 } { ptr @.str.2009, i64 4, i64 0 }, ptr %t18 %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 15 - store { ptr, i64, i64 } { ptr @.str.1941, i64 3, i64 0 }, ptr %t19 + store { ptr, i64, i64 } { ptr @.str.2010, i64 3, i64 0 }, ptr %t19 %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 16 - store { ptr, i64, i64 } { ptr @.str.1942, i64 11, i64 0 }, ptr %t20 + store { ptr, i64, i64 } { ptr @.str.2011, i64 11, i64 0 }, ptr %t20 %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 17 - store { ptr, i64, i64 } { ptr @.str.1943, i64 2, i64 0 }, ptr %t21 + store { ptr, i64, i64 } { ptr @.str.2012, i64 2, i64 0 }, ptr %t21 %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 18 - store { ptr, i64, i64 } { ptr @.str.1944, i64 3, i64 0 }, ptr %t22 + store { ptr, i64, i64 } { ptr @.str.2013, i64 3, i64 0 }, ptr %t22 %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 19 - store { ptr, i64, i64 } { ptr @.str.1945, i64 3, i64 0 }, ptr %t23 + store { ptr, i64, i64 } { ptr @.str.2014, i64 3, i64 0 }, ptr %t23 %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 20 - store { ptr, i64, i64 } { ptr @.str.1946, i64 3, i64 0 }, ptr %t24 + store { ptr, i64, i64 } { ptr @.str.2015, i64 3, i64 0 }, ptr %t24 %t25 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 21 - store { ptr, i64, i64 } { ptr @.str.1947, i64 2, i64 0 }, ptr %t25 + store { ptr, i64, i64 } { ptr @.str.2016, i64 2, i64 0 }, ptr %t25 %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 22 - store { ptr, i64, i64 } { ptr @.str.1948, i64 3, i64 0 }, ptr %t26 + store { ptr, i64, i64 } { ptr @.str.2017, i64 3, i64 0 }, ptr %t26 %t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 23 - store { ptr, i64, i64 } { ptr @.str.1949, i64 3, i64 0 }, ptr %t27 + store { ptr, i64, i64 } { ptr @.str.2018, i64 3, i64 0 }, ptr %t27 %t28 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 24 - store { ptr, i64, i64 } { ptr @.str.1950, i64 3, i64 0 }, ptr %t28 + store { ptr, i64, i64 } { ptr @.str.2019, i64 3, i64 0 }, ptr %t28 %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 25 - store { ptr, i64, i64 } { ptr @.str.1951, i64 3, i64 0 }, ptr %t29 + store { ptr, i64, i64 } { ptr @.str.2020, i64 3, i64 0 }, ptr %t29 %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 26 - store { ptr, i64, i64 } { ptr @.str.1952, i64 3, i64 0 }, ptr %t30 + store { ptr, i64, i64 } { ptr @.str.2021, i64 3, i64 0 }, ptr %t30 %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 27 - store { ptr, i64, i64 } { ptr @.str.1953, i64 5, i64 0 }, ptr %t31 + store { ptr, i64, i64 } { ptr @.str.2022, 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 @@ -30246,33 +35431,34 @@ entry: %t39 = load i64, ptr %t36 %t40 = load ptr, ptr %a35 store i64 0, ptr %a41 - br label %find.cond3016 -find.cond3016: + br label %find.cond3190 +find.cond3190: %t42 = load i64, ptr %a41 %t43 = icmp slt i64 %t42, %t39 - br i1 %t43, label %find.body3017, label %find.end3020 -find.body3017: + br i1 %t43, label %find.body3191, label %find.end3194 +find.body3191: %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.hit3018, label %find.next3019 -find.hit3018: + br i1 %t49, label %find.hit3192, label %find.next3193 +find.hit3192: store i64 %t42, ptr %a38 - br label %find.end3020 -find.next3019: + br label %find.end3194 +find.next3193: %t50 = add i64 %t42, 1 store i64 %t50, ptr %a41 - br label %find.cond3016 -find.end3020: + br label %find.cond3190 +find.end3194: %t51 = load i64, ptr %a38 %t52 = icmp sge i64 %t51, 0 + call void @finch.drop.arr_str(ptr %a35) ret i1 %t52 } -define internal { ptr, i64, i64 } @finch.gen.addVar(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3, { ptr, i64, i64 } %p4, i1 %p5) { +define internal { ptr, i64, i64 } @finch.gen.addVar(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3, { ptr, i64, i64 } %p4, i1 %p5, i1 %p6) { entry: %a1 = alloca ptr, align 16 %a2 = alloca %S.ast.Node, align 16 @@ -30280,85 +35466,75 @@ entry: %a4 = alloca %S.ast.Type, align 16 %a5 = alloca { ptr, i64, i64 }, align 16 %a6 = alloca i1, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 + %a7 = alloca i1, align 16 %a13 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 + %a14 = 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 + %a23 = alloca { ptr, i64, i64 }, align 16 %a25 = alloca { ptr, i64, i64 }, align 16 %a26 = 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 + %a27 = alloca { ptr, i64, i64 }, align 16 + %a28 = alloca { ptr, i64, i64 }, align 16 + %a30 = alloca { ptr, i64, i64 }, align 16 + %a42 = 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 - %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 + %a46 = 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 %a57 = alloca { ptr, i64, i64 }, align 16 %a58 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca %S.ast.Type, align 16 - %a95 = alloca %S.ast.Type, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = 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 + %a59 = alloca { ptr, i64, i64 }, align 16 + %a61 = alloca { ptr, i64, i64 }, align 16 + %a62 = alloca { ptr, i64, i64 }, align 16 + %a63 = alloca { ptr, i64, i64 }, align 16 + %a64 = alloca { ptr, i64, i64 }, align 16 + %a66 = alloca { ptr, i64, i64 }, align 16 + %a72 = alloca { ptr, i64, i64 }, align 16 + %a73 = alloca { ptr, i64, i64 }, align 16 + %a80 = alloca { ptr, i64, i64 }, align 16 + %a87 = alloca i64, align 16 + %a93 = alloca i1, align 16 + %a136 = alloca { ptr, i64, i64 }, align 16 + %a137 = alloca { ptr, i64, i64 }, align 16 + %a141 = alloca %S.ast.Type, align 16 + %a142 = alloca %S.ast.Type, align 16 + %a146 = alloca { ptr, i64, i64 }, align 16 + %a147 = alloca { ptr, i64, i64 }, align 16 + %a170 = alloca { ptr, i64, i64 }, align 16 + %a171 = 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 + %a200 = alloca { ptr, i64, i64 }, align 16 + %a205 = alloca { ptr, i64, i64 }, align 16 + %a206 = 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 + %a237 = alloca %S.ast.Node, align 16 + %a238 = alloca %S.ast.Node, align 16 + %a240 = alloca %S.ast.Node, align 16 + %a246 = alloca { ptr, i64, i64 }, align 16 + %a247 = 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 + %a253 = 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 + %a260 = alloca { ptr, i64, i64 }, align 16 + %a261 = alloca { ptr, i64, i64 }, align 16 + %a263 = 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 %a279 = 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 @@ -30366,497 +35542,678 @@ entry: %a293 = 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 + %a297 = 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 + %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 - %a313 = alloca { ptr, i64, i64 }, align 16 + %a312 = 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 + %a316 = alloca { ptr, i64, i64 }, align 16 + %a317 = alloca { ptr, i64, i64 }, align 16 + %a330 = 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 + %a338 = alloca { ptr, i64, i64 }, align 16 + %a342 = 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 + %a347 = alloca { ptr, i64, i64 }, align 16 + %a348 = 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 + %a357 = 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 + %a377 = alloca { ptr, i64, i64 }, align 16 + %a378 = alloca { ptr, i64, i64 }, align 16 + %a379 = alloca { ptr, i64, i64 }, align 16 + %a380 = 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 + %a385 = alloca { ptr, i64, i64 }, align 16 + %a388 = 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 + %a393 = alloca { ptr, i64, i64 }, align 16 + %a394 = alloca { ptr, i64, i64 }, align 16 + %a395 = alloca { ptr, i64, i64 }, align 16 + %a396 = alloca { ptr, i64, i64 }, align 16 + %a398 = 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 store %S.ast.Type %p3, ptr %a4 store { ptr, i64, i64 } %p4, ptr %a5 store i1 %p5, ptr %a6 - %t7 = load ptr, ptr %a1 - %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.from3021 -logic.from3021: - br i1 %t10, label %logic.rhs3022, label %logic.end3023 -logic.rhs3022: - %t11 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t11, ptr %a12 - store { ptr, i64, i64 } { ptr @.str.1954, 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.rend3024 -logic.rend3024: - br label %logic.end3023 -logic.end3023: - %t16 = phi i1 [ false, %logic.from3021 ], [ %t15, %logic.rend3024 ] - br i1 %t16, label %then3025, label %endif3027 -then3025: - %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.1955, 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.1956, 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 %endif3027 -endif3027: - %t28 = load ptr, ptr %a1 - %t29 = load ptr, ptr %a1 - %t30 = icmp eq ptr %t29, null - br i1 %t30, label %panic3028, label %ok3029 -panic3028: - call void @finch_panic(ptr @.str.1957, i64 1195, ptr @.str.1958) + store i1 %p6, ptr %a7 + %t8 = load ptr, ptr %a1 + %t9 = load { ptr, i64, i64 }, ptr %a3 + %t10 = call i64 @finch.gen.lookup(ptr %t8, { ptr, i64, i64 } %t9) + %t11 = icmp sge i64 %t10, 0 + br label %logic.from3195 +logic.from3195: + br i1 %t11, label %logic.rhs3196, label %logic.end3197 +logic.rhs3196: + %t12 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t12, ptr %a13 + store { ptr, i64, i64 } { ptr @.str.2023, i64 3, i64 0 }, ptr %a14 + %t15 = call i32 @finch_str_eq(ptr %a13, ptr %a14) + %t16 = icmp eq i32 %t15, 0 + br label %logic.rend3198 +logic.rend3198: + br label %logic.end3197 +logic.end3197: + %t17 = phi i1 [ false, %logic.from3195 ], [ %t16, %logic.rend3198 ] + br i1 %t17, label %then3199, label %endif3201 +then3199: + %t18 = load ptr, ptr %a1 + %t19 = load %S.ast.Node, ptr %a2 + %t20 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } { ptr @.str.2024, i64 18, 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.2025, i64 21, i64 0 }, ptr %a27 + call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) + store { ptr, i64, i64 } %t24, ptr %a28 + call void @finch_str_drop(ptr %a28) + %t29 = load { ptr, i64, i64 }, ptr %a25 + call void @finch.gen.fail(ptr %t18, %S.ast.Node %t19, { ptr, i64, i64 } %t29) + store { ptr, i64, i64 } %t29, ptr %a30 + call void @finch_str_drop(ptr %a30) + br label %endif3201 +endif3201: + %t31 = load ptr, ptr %a1 + %t32 = load ptr, ptr %a1 + %t33 = icmp eq ptr %t32, null + br i1 %t33, label %panic3202, label %ok3203 +panic3202: + call void @finch_panic(ptr @.str.2026, i64 1330, ptr @.str.2027) unreachable -ok3029: - %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 %then3030, label %endif3032 -then3030: - %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.1959, 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.1960, 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 %endif3032 -endif3032: - %t47 = load { ptr, i64, i64 }, ptr %a3 - %t48 = call i1 @finch.gen.isBuiltin({ ptr, i64, i64 } %t47) - br i1 %t48, label %then3033, label %endif3035 -then3033: - %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.1961, 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.1962, 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 %endif3035 -endif3035: - %t60 = load ptr, ptr %a1 - %t61 = load ptr, ptr %a1 - %t62 = load %S.ast.Type, ptr %a4 - %t63 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t61, %S.ast.Type %t62) - %t64 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t60, { ptr, i64, i64 } %t63) - store { ptr, i64, i64 } %t64, ptr %a65 - %t66 = load ptr, ptr %a1 +ok3203: + %t34 = getelementptr inbounds %S.gen.Gen, ptr %t32, i32 0, i32 14 + %t35 = load { ptr, i64, i64 }, ptr %t34 + %t36 = load { ptr, i64, i64 }, ptr %a3 + %t37 = call i64 @finch.gen.findFn(ptr %t31, { ptr, i64, i64 } %t35, { ptr, i64, i64 } %t36) + %t38 = icmp sge i64 %t37, 0 + br i1 %t38, label %then3204, label %endif3206 +then3204: + %t39 = load ptr, ptr %a1 + %t40 = load %S.ast.Node, ptr %a2 + %t41 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } { ptr @.str.2028, i64 1, i64 0 }, ptr %a43 + store { ptr, i64, i64 } %t41, 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 %a47 + store { ptr, i64, i64 } { ptr @.str.2029, i64 35, i64 0 }, ptr %a48 + call void @finch_str_concat(ptr %a46, ptr %a47, ptr %a48) + store { ptr, i64, i64 } %t45, ptr %a49 + call void @finch_str_drop(ptr %a49) + %t50 = load { ptr, i64, i64 }, ptr %a46 + call void @finch.gen.fail(ptr %t39, %S.ast.Node %t40, { ptr, i64, i64 } %t50) + store { ptr, i64, i64 } %t50, ptr %a51 + call void @finch_str_drop(ptr %a51) + br label %endif3206 +endif3206: + %t52 = load { ptr, i64, i64 }, ptr %a3 + %t53 = call i1 @finch.gen.isBuiltin({ ptr, i64, i64 } %t52) + br i1 %t53, label %then3207, label %endif3209 +then3207: + %t54 = load ptr, ptr %a1 + %t55 = load %S.ast.Node, ptr %a2 + %t56 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } { ptr @.str.2030, i64 1, i64 0 }, ptr %a58 + store { ptr, i64, i64 } %t56, ptr %a59 + 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.2031, i64 38, i64 0 }, ptr %a63 + call void @finch_str_concat(ptr %a61, ptr %a62, ptr %a63) + store { ptr, i64, i64 } %t60, ptr %a64 + call void @finch_str_drop(ptr %a64) + %t65 = load { ptr, i64, i64 }, ptr %a61 + call void @finch.gen.fail(ptr %t54, %S.ast.Node %t55, { ptr, i64, i64 } %t65) + store { ptr, i64, i64 } %t65, ptr %a66 + call void @finch_str_drop(ptr %a66) + br label %endif3209 +endif3209: %t67 = load ptr, ptr %a1 - %t68 = load %S.ast.Type, ptr %a4 - %t69 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t67, %S.ast.Type %t68) - %t70 = load { ptr, i64, i64 }, ptr %a5 - %t71 = load { ptr, i64, i64 }, ptr %a65 - 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 %panic3036, label %ok3037 -panic3036: - call void @finch_panic(ptr @.str.1963, i64 1203, ptr @.str.1964) - unreachable -ok3037: - %t74 = getelementptr inbounds %S.gen.Gen, ptr %t72, i32 0, i32 10 + %t68 = load ptr, ptr %a1 + %t69 = load %S.ast.Type, ptr %a4 + %t70 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t68, %S.ast.Type %t69) + %t71 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t67, { ptr, i64, i64 } %t70) + store { ptr, i64, i64 } %t70, ptr %a72 + call void @finch_str_drop(ptr %a72) + store { ptr, i64, i64 } %t71, ptr %a73 + %t74 = load ptr, ptr %a1 %t75 = load ptr, ptr %a1 - %t76 = icmp eq ptr %t75, null - br i1 %t76, label %panic3038, label %ok3039 -panic3038: - call void @finch_panic(ptr @.str.1965, i64 1203, ptr @.str.1966) + %t76 = load %S.ast.Type, ptr %a4 + %t77 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t75, %S.ast.Type %t76) + %t78 = load { ptr, i64, i64 }, ptr %a5 + %t79 = load { ptr, i64, i64 }, ptr %a73 + call void @finch.gen.store(ptr %t74, { ptr, i64, i64 } %t77, { ptr, i64, i64 } %t78, { ptr, i64, i64 } %t79) + store { ptr, i64, i64 } %t77, ptr %a80 + call void @finch_str_drop(ptr %a80) + %t81 = load ptr, ptr %a1 + %t82 = icmp eq ptr %t81, null + br i1 %t82, label %panic3210, label %ok3211 +panic3210: + call void @finch_panic(ptr @.str.2032, i64 1338, ptr @.str.2033) unreachable -ok3039: - %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 - %t80 = sub i64 %t79, 1 - %t81 = load { ptr, i64, i64 }, ptr %t74 - %t82 = extractvalue { ptr, i64, i64 } %t81, 1 - %t83 = icmp uge i64 %t80, %t82 - br i1 %t83, label %range3040, label %inrange3041 -range3040: - call void @finch_panic_index(ptr @.str.1967, i64 1203, i64 %t80, i64 %t82) +ok3211: + %t83 = getelementptr inbounds %S.gen.Gen, ptr %t81, i32 0, i32 10 + %t84 = getelementptr inbounds { ptr, i64, i64 }, ptr %t83, i32 0, i32 1 + %t85 = load i64, ptr %t84 + %t86 = sub i64 %t85, 1 + store i64 %t86, ptr %a87 + %t88 = load i1, ptr %a7 + br label %logic.from3212 +logic.from3212: + br i1 %t88, label %logic.rhs3213, label %logic.end3214 +logic.rhs3213: + %t89 = load ptr, ptr %a1 + %t90 = load %S.ast.Type, ptr %a4 + %t91 = call i1 @finch.gen.owning(ptr %t89, %S.ast.Type %t90) + br label %logic.rend3215 +logic.rend3215: + br label %logic.end3214 +logic.end3214: + %t92 = phi i1 [ false, %logic.from3212 ], [ %t91, %logic.rend3215 ] + store i1 %t92, ptr %a93 + %t94 = load i1, ptr %a93 + br i1 %t94, label %then3216, label %endif3218 +then3216: + %t95 = load ptr, ptr %a1 + %t96 = icmp eq ptr %t95, null + br i1 %t96, label %panic3219, label %ok3220 +panic3219: + call void @finch_panic(ptr @.str.2034, i64 1341, ptr @.str.2035) unreachable -inrange3041: - %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 - %t87 = getelementptr inbounds { ptr, i64, i64 }, ptr %t86, i32 0, i32 1 - %t88 = load { ptr, i64, i64 }, ptr %a3 - 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.gen.Var zeroinitializer, { ptr, i64, i64 } %t91, 0 - %t93 = load %S.ast.Type, ptr %a4 - store %S.ast.Type %t93, ptr %a94 - call void @finch.copy.S_ast_Type(ptr %a95, ptr %a94) - %t96 = load %S.ast.Type, ptr %a95 - %t97 = insertvalue %S.gen.Var %t92, %S.ast.Type %t96, 1 - %t98 = load { ptr, i64, i64 }, ptr %a65 - store { ptr, i64, i64 } %t98, ptr %a99 - call void @finch_str_copy(ptr %a100, ptr %a99) - %t101 = load { ptr, i64, i64 }, ptr %a100 - %t102 = insertvalue %S.gen.Var %t97, { ptr, i64, i64 } %t101, 2 - %t103 = load i1, ptr %a6 - %t104 = insertvalue %S.gen.Var %t102, i1 %t103, 3 - %t105 = load ptr, ptr %a1 - %t106 = icmp eq ptr %t105, null - br i1 %t106, label %panic3042, label %ok3043 -panic3042: - call void @finch_panic(ptr @.str.1968, i64 1203, ptr @.str.1969) +ok3220: + %t97 = getelementptr inbounds %S.gen.Gen, ptr %t95, i32 0, i32 10 + %t98 = load i64, ptr %a87 + %t99 = load { ptr, i64, i64 }, ptr %t97 + %t100 = extractvalue { ptr, i64, i64 } %t99, 1 + %t101 = icmp uge i64 %t98, %t100 + br i1 %t101, label %range3221, label %inrange3222 +range3221: + call void @finch_panic_index(ptr @.str.2036, i64 1341, i64 %t98, i64 %t100) unreachable -ok3043: - %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 ptr, ptr %a1 - %t111 = icmp eq ptr %t110, null - br i1 %t111, label %panic3044, label %ok3045 -panic3044: - call void @finch_panic(ptr @.str.1970, i64 1203, ptr @.str.1971) +inrange3222: + %t102 = extractvalue { ptr, i64, i64 } %t99, 0 + %t103 = getelementptr inbounds %S.gen.Scope, ptr %t102, i64 %t98 + %t104 = getelementptr inbounds %S.gen.Scope, ptr %t103, i32 0, i32 3 + %t105 = getelementptr inbounds { ptr, i64, i64 }, ptr %t104, i32 0, i32 1 + %t106 = insertvalue %S.gen.Cleanup zeroinitializer, i1 false, 0 + %t107 = load ptr, ptr %a1 + %t108 = icmp eq ptr %t107, null + br i1 %t108, label %panic3223, label %ok3224 +panic3223: + call void @finch_panic(ptr @.str.2037, i64 1341, ptr @.str.2038) unreachable -ok3045: - %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 %range3046, label %inrange3047 -range3046: - call void @finch_panic_index(ptr @.str.1972, i64 1203, i64 %t114, i64 %t116) +ok3224: + %t109 = getelementptr inbounds %S.gen.Gen, ptr %t107, i32 0, i32 10 + %t110 = load i64, ptr %a87 + %t111 = load { ptr, i64, i64 }, ptr %t109 + %t112 = extractvalue { ptr, i64, i64 } %t111, 1 + %t113 = icmp uge i64 %t110, %t112 + br i1 %t113, label %range3225, label %inrange3226 +range3225: + call void @finch_panic_index(ptr @.str.2039, i64 1341, i64 %t110, i64 %t112) unreachable -inrange3047: - %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 %panic3048, label %ok3049 -panic3048: - call void @finch_panic(ptr @.str.1973, i64 1204, ptr @.str.1974) +inrange3226: + %t114 = extractvalue { ptr, i64, i64 } %t111, 0 + %t115 = getelementptr inbounds %S.gen.Scope, ptr %t114, i64 %t110 + %t116 = getelementptr inbounds %S.gen.Scope, ptr %t115, i32 0, i32 0 + %t117 = getelementptr inbounds { ptr, i64, i64 }, ptr %t116, i32 0, i32 1 + %t118 = load i64, ptr %t117 + %t119 = insertvalue %S.gen.Cleanup %t106, i64 %t118, 1 + %t120 = load i64, ptr %t105 + %t121 = add i64 %t120, 1 + call void @finch_arr_reserve(ptr %t104, i64 %t121, i64 ptrtoint (ptr getelementptr (%S.gen.Cleanup, ptr null, i32 1) to i64)) + %t122 = load ptr, ptr %t104 + %t123 = getelementptr inbounds %S.gen.Cleanup, ptr %t122, i64 %t120 + store %S.gen.Cleanup %t119, ptr %t123 + store i64 %t121, ptr %t105 + br label %endif3218 +endif3218: + %t124 = load ptr, ptr %a1 + %t125 = icmp eq ptr %t124, null + br i1 %t125, label %panic3227, label %ok3228 +panic3227: + call void @finch_panic(ptr @.str.2040, i64 1343, ptr @.str.2041) unreachable -ok3049: - %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 %panic3050, label %ok3051 -panic3050: - call void @finch_panic(ptr @.str.1975, i64 1206, ptr @.str.1976) +ok3228: + %t126 = getelementptr inbounds %S.gen.Gen, ptr %t124, i32 0, i32 10 + %t127 = load i64, ptr %a87 + %t128 = load { ptr, i64, i64 }, ptr %t126 + %t129 = extractvalue { ptr, i64, i64 } %t128, 1 + %t130 = icmp uge i64 %t127, %t129 + br i1 %t130, label %range3229, label %inrange3230 +range3229: + call void @finch_panic_index(ptr @.str.2042, i64 1343, i64 %t127, i64 %t129) unreachable -ok3051: - %t147 = getelementptr inbounds %S.gen.Gen, ptr %t145, i32 0, i32 26 - %t148 = load i1, ptr %t147 - br label %logic.from3052 -logic.from3052: - br i1 %t148, label %logic.rhs3053, label %logic.end3054 -logic.rhs3053: - %t149 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t149, ptr %a150 - store { ptr, i64, i64 } { ptr @.str.1977, 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.rend3055 -logic.rend3055: - br label %logic.end3054 -logic.end3054: - %t154 = phi i1 [ false, %logic.from3052 ], [ %t153, %logic.rend3055 ] - br label %logic.from3056 -logic.from3056: - br i1 %t154, label %logic.rhs3057, label %logic.end3058 -logic.rhs3057: - %t155 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t155, ptr %a156 - store { ptr, i64, i64 } { ptr @.str.1979, 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.rend3059 -logic.rend3059: - br label %logic.end3058 -logic.end3058: - %t162 = phi i1 [ false, %logic.from3056 ], [ %t161, %logic.rend3059 ] - br i1 %t162, label %then3060, label %endif3062 -then3060: - %t163 = load ptr, ptr %a1 - %t164 = icmp eq ptr %t163, null - br i1 %t164, label %panic3063, label %ok3064 -panic3063: - call void @finch_panic(ptr @.str.1980, i64 1207, ptr @.str.1981) +inrange3230: + %t131 = extractvalue { ptr, i64, i64 } %t128, 0 + %t132 = getelementptr inbounds %S.gen.Scope, ptr %t131, i64 %t127 + %t133 = getelementptr inbounds %S.gen.Scope, ptr %t132, i32 0, i32 0 + %t134 = getelementptr inbounds { ptr, i64, i64 }, ptr %t133, i32 0, i32 1 + %t135 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t135, ptr %a136 + call void @finch_str_copy(ptr %a137, ptr %a136) + %t138 = load { ptr, i64, i64 }, ptr %a137 + %t139 = insertvalue %S.gen.Var zeroinitializer, { ptr, i64, i64 } %t138, 0 + %t140 = load %S.ast.Type, ptr %a4 + store %S.ast.Type %t140, ptr %a141 + call void @finch.copy.S_ast_Type(ptr %a142, ptr %a141) + %t143 = load %S.ast.Type, ptr %a142 + %t144 = insertvalue %S.gen.Var %t139, %S.ast.Type %t143, 1 + %t145 = load { ptr, i64, i64 }, ptr %a73 + store { ptr, i64, i64 } %t145, ptr %a146 + call void @finch_str_copy(ptr %a147, ptr %a146) + %t148 = load { ptr, i64, i64 }, ptr %a147 + %t149 = insertvalue %S.gen.Var %t144, { ptr, i64, i64 } %t148, 2 + %t150 = load i1, ptr %a6 + %t151 = insertvalue %S.gen.Var %t149, i1 %t150, 3 + %t152 = load ptr, ptr %a1 + %t153 = icmp eq ptr %t152, null + br i1 %t153, label %panic3231, label %ok3232 +panic3231: + call void @finch_panic(ptr @.str.2043, i64 1343, ptr @.str.2044) unreachable -ok3064: - %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 %panic3065, label %ok3066 -panic3065: - call void @finch_panic(ptr @.str.1982, i64 1207, ptr @.str.1983) +ok3232: + %t154 = getelementptr inbounds %S.gen.Gen, ptr %t152, i32 0, i32 24 + %t155 = load i64, ptr %t154 + %t156 = insertvalue %S.gen.Var %t151, i64 %t155, 4 + %t157 = load i1, ptr %a93 + %t158 = insertvalue %S.gen.Var %t156, i1 %t157, 5 + %t159 = load ptr, ptr %a1 + %t160 = icmp eq ptr %t159, null + br i1 %t160, label %panic3233, label %ok3234 +panic3233: + call void @finch_panic(ptr @.str.2045, i64 1343, ptr @.str.2046) unreachable -ok3066: - %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 %range3067, label %inrange3068 -range3067: - call void @finch_panic_index(ptr @.str.1984, i64 1207, i64 %t170, i64 %t172) +ok3234: + %t161 = getelementptr inbounds %S.gen.Gen, ptr %t159, i32 0, i32 1 + %t162 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 + %t163 = load i64, ptr %t162 + %t164 = load { ptr, i64, i64 }, ptr %t161 + %t165 = extractvalue { ptr, i64, i64 } %t164, 1 + %t166 = icmp uge i64 %t163, %t165 + br i1 %t166, label %range3235, label %inrange3236 +range3235: + call void @finch_panic_index(ptr @.str.2047, i64 1343, i64 %t163, i64 %t165) unreachable -inrange3068: - %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 %panic3069, label %ok3070 -panic3069: - call void @finch_panic(ptr @.str.1985, i64 1207, ptr @.str.1986) +inrange3236: + %t167 = extractvalue { ptr, i64, i64 } %t164, 0 + %t168 = getelementptr inbounds { ptr, i64, i64 }, ptr %t167, i64 %t163 + %t169 = load { ptr, i64, i64 }, ptr %t168 + store { ptr, i64, i64 } %t169, ptr %a170 + call void @finch_str_copy(ptr %a171, ptr %a170) + %t172 = load { ptr, i64, i64 }, ptr %a171 + %t173 = insertvalue %S.gen.Var %t158, { ptr, i64, i64 } %t172, 7 + %t174 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 + %t175 = load i64, ptr %t174 + %t176 = insertvalue %S.gen.Var %t173, i64 %t175, 8 + %t177 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 + %t178 = load i64, ptr %t177 + %t179 = insertvalue %S.gen.Var %t176, i64 %t178, 9 + %t180 = load i64, ptr %t134 + %t181 = add i64 %t180, 1 + call void @finch_arr_reserve(ptr %t133, i64 %t181, i64 ptrtoint (ptr getelementptr (%S.gen.Var, ptr null, i32 1) to i64)) + %t182 = load ptr, ptr %t133 + %t183 = getelementptr inbounds %S.gen.Var, ptr %t182, i64 %t180 + store %S.gen.Var %t179, ptr %t183 + store i64 %t181, ptr %t134 + %t184 = load ptr, ptr %a1 + %t185 = icmp eq ptr %t184, null + br i1 %t185, label %panic3237, label %ok3238 +panic3237: + call void @finch_panic(ptr @.str.2048, i64 1344, ptr @.str.2049) unreachable -ok3070: - %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 %range3071, label %inrange3072 -range3071: - call void @finch_panic_index(ptr @.str.1987, i64 1207, i64 %t181, i64 %t183) +ok3238: + %t186 = getelementptr inbounds %S.gen.Gen, ptr %t184, i32 0, i32 24 + %t187 = load i64, ptr %t186 + %t188 = add i64 %t187, 1 + store i64 %t188, ptr %t186 + %t189 = load ptr, ptr %a1 + %t190 = load %S.ast.Node, ptr %a2 + %t191 = load { ptr, i64, i64 }, ptr %a3 + %t192 = load %S.ast.Type, ptr %a4 + %t193 = load { ptr, i64, i64 }, ptr %a73 + call void @finch.gen.dbgVariable(ptr %t189, %S.ast.Node %t190, { ptr, i64, i64 } %t191, %S.ast.Type %t192, { ptr, i64, i64 } %t193) + %t194 = load ptr, ptr %a1 + %t195 = icmp eq ptr %t194, null + br i1 %t195, label %panic3239, label %ok3240 +panic3239: + call void @finch_panic(ptr @.str.2050, i64 1346, ptr @.str.2051) unreachable -inrange3072: - %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 %panic3073, label %ok3074 -panic3073: - call void @finch_panic(ptr @.str.1988, i64 1208, ptr @.str.1989) +ok3240: + %t196 = getelementptr inbounds %S.gen.Gen, ptr %t194, i32 0, i32 27 + %t197 = load i1, ptr %t196 + br label %logic.from3241 +logic.from3241: + br i1 %t197, label %logic.rhs3242, label %logic.end3243 +logic.rhs3242: + %t198 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t198, ptr %a199 + store { ptr, i64, i64 } { ptr @.str.2052, i64 3, i64 0 }, ptr %a200 + %t201 = call i32 @finch_str_eq(ptr %a199, ptr %a200) + %t202 = icmp eq i32 %t201, 0 + br label %logic.rend3244 +logic.rend3244: + br label %logic.end3243 +logic.end3243: + %t203 = phi i1 [ false, %logic.from3241 ], [ %t202, %logic.rend3244 ] + br label %logic.from3245 +logic.from3245: + br i1 %t203, label %logic.rhs3246, label %logic.end3247 +logic.rhs3246: + %t204 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t204, ptr %a205 + store { ptr, i64, i64 } { ptr @.str.2054, i64 1, i64 0 }, ptr %a207 + %t208 = call i32 @finch_str_starts(ptr %a205, ptr %a207) + %t209 = icmp ne i32 %t208, 0 + %t210 = xor i1 %t209, true + br label %logic.rend3248 +logic.rend3248: + br label %logic.end3247 +logic.end3247: + %t211 = phi i1 [ false, %logic.from3245 ], [ %t210, %logic.rend3248 ] + br i1 %t211, label %then3249, label %endif3251 +then3249: + %t212 = load ptr, ptr %a1 + %t213 = icmp eq ptr %t212, null + br i1 %t213, label %panic3252, label %ok3253 +panic3252: + call void @finch_panic(ptr @.str.2055, i64 1347, ptr @.str.2056) unreachable -ok3074: - %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.1990, 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.1991, 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.1992, i64 1, i64 0 }, ptr %a213 - call void @finch_str_concat(ptr %a211, ptr %a212, ptr %a213) - %t214 = load { ptr, i64, i64 }, ptr %a211 +ok3253: + %t214 = getelementptr inbounds %S.gen.Gen, ptr %t212, i32 0, i32 0 %t215 = load ptr, ptr %a1 %t216 = icmp eq ptr %t215, null - br i1 %t216, label %panic3075, label %ok3076 -panic3075: - call void @finch_panic(ptr @.str.1993, i64 1208, ptr @.str.1994) + br i1 %t216, label %panic3254, label %ok3255 +panic3254: + call void @finch_panic(ptr @.str.2057, i64 1347, ptr @.str.2058) unreachable -ok3076: - %t217 = getelementptr inbounds %S.gen.Gen, ptr %t215, i32 0, i32 1 - %t218 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 +ok3255: + %t217 = getelementptr inbounds %S.gen.Gen, ptr %t215, i32 0, i32 13 + %t218 = getelementptr inbounds %S.gen.FnSig, ptr %t217, i32 0, i32 16 %t219 = load i64, ptr %t218 - %t220 = load { ptr, i64, i64 }, ptr %t217 + %t220 = load { ptr, i64, i64 }, ptr %t214 %t221 = extractvalue { ptr, i64, i64 } %t220, 1 %t222 = icmp uge i64 %t219, %t221 - br i1 %t222, label %range3077, label %inrange3078 -range3077: - call void @finch_panic_index(ptr @.str.1995, i64 1208, i64 %t219, i64 %t221) + br i1 %t222, label %range3256, label %inrange3257 +range3256: + call void @finch_panic_index(ptr @.str.2059, i64 1347, i64 %t219, i64 %t221) unreachable -inrange3078: +inrange3257: %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.1996, 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.1997, 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 + %t224 = getelementptr inbounds %S.ast.Program, ptr %t223, i64 %t219 + %t225 = getelementptr inbounds %S.ast.Program, ptr %t224, i32 0, i32 8 + %t226 = load ptr, ptr %a1 + %t227 = icmp eq ptr %t226, null + br i1 %t227, label %panic3258, label %ok3259 +panic3258: + call void @finch_panic(ptr @.str.2060, i64 1347, ptr @.str.2061) + unreachable +ok3259: + %t228 = getelementptr inbounds %S.gen.Gen, ptr %t226, i32 0, i32 13 + %t229 = getelementptr inbounds %S.gen.FnSig, ptr %t228, i32 0, i32 17 + %t230 = load i64, ptr %t229 + %t231 = load { ptr, i64, i64 }, ptr %t225 + %t232 = extractvalue { ptr, i64, i64 } %t231, 1 + %t233 = icmp uge i64 %t230, %t232 + br i1 %t233, label %range3260, label %inrange3261 +range3260: + call void @finch_panic_index(ptr @.str.2062, i64 1347, i64 %t230, i64 %t232) + unreachable +inrange3261: + %t234 = extractvalue { ptr, i64, i64 } %t231, 0 + %t235 = getelementptr inbounds %S.ast.Node, ptr %t234, i64 %t230 + %t236 = load %S.ast.Node, ptr %t235 + store %S.ast.Node %t236, ptr %a237 + call void @finch.copy.S_ast_Node(ptr %a238, ptr %a237) + %t239 = load %S.ast.Node, ptr %a238 + store %S.ast.Node %t239, ptr %a240 + %t241 = load ptr, ptr %a1 + %t242 = icmp eq ptr %t241, null + br i1 %t242, label %panic3262, label %ok3263 +panic3262: + call void @finch_panic(ptr @.str.2063, i64 1348, ptr @.str.2064) + unreachable +ok3263: + %t243 = getelementptr inbounds %S.gen.Gen, ptr %t241, i32 0, i32 28 + %t244 = getelementptr inbounds { ptr, i64, i64 }, ptr %t243, i32 0, i32 1 + %t245 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } { ptr @.str.2065, i64 3, i64 0 }, ptr %a247 + store { ptr, i64, i64 } %t245, ptr %a248 + call void @finch_str_concat(ptr %a246, ptr %a247, ptr %a248) + %t249 = load { ptr, i64, i64 }, ptr %a246 + store { ptr, i64, i64 } %t249, ptr %a251 + store { ptr, i64, i64 } { ptr @.str.2066, i64 1, i64 0 }, 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.1998, 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 %panic3079, label %ok3080 -panic3079: - call void @finch_panic(ptr @.str.1999, i64 1208, ptr @.str.2000) + store { ptr, i64, i64 } %t249, ptr %a253 + call void @finch_str_drop(ptr %a253) + %t254 = load { ptr, i64, i64 }, ptr %a250 + %t255 = load %S.ast.Type, ptr %a4 + %t256 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t255) + store { ptr, i64, i64 } %t254, ptr %a258 + store { ptr, i64, i64 } %t256, ptr %a259 + call void @finch_str_concat(ptr %a257, ptr %a258, ptr %a259) + store { ptr, i64, i64 } %t254, ptr %a260 + call void @finch_str_drop(ptr %a260) + store { ptr, i64, i64 } %t256, ptr %a261 + call void @finch_str_drop(ptr %a261) + %t262 = load { ptr, i64, i64 }, ptr %a257 + store { ptr, i64, i64 } %t262, ptr %a264 + store { ptr, i64, i64 } { ptr @.str.2067, i64 1, i64 0 }, ptr %a265 + call void @finch_str_concat(ptr %a263, ptr %a264, ptr %a265) + store { ptr, i64, i64 } %t262, ptr %a266 + call void @finch_str_drop(ptr %a266) + %t267 = load { ptr, i64, i64 }, ptr %a263 + %t268 = load ptr, ptr %a1 + %t269 = icmp eq ptr %t268, null + br i1 %t269, label %panic3264, label %ok3265 +panic3264: + call void @finch_panic(ptr @.str.2068, i64 1348, ptr @.str.2069) unreachable -ok3080: - %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 %range3081, label %inrange3082 -range3081: - call void @finch_panic_index(ptr @.str.2001, i64 1208, i64 %t262, i64 %t264) +ok3265: + %t270 = getelementptr inbounds %S.gen.Gen, ptr %t268, i32 0, i32 1 + %t271 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 + %t272 = load i64, ptr %t271 + %t273 = load { ptr, i64, i64 }, ptr %t270 + %t274 = extractvalue { ptr, i64, i64 } %t273, 1 + %t275 = icmp uge i64 %t272, %t274 + br i1 %t275, label %range3266, label %inrange3267 +range3266: + call void @finch_panic_index(ptr @.str.2070, i64 1348, i64 %t272, i64 %t274) unreachable -inrange3082: - %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.2002, 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.2003, 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 +inrange3267: + %t276 = extractvalue { ptr, i64, i64 } %t273, 0 + %t277 = getelementptr inbounds { ptr, i64, i64 }, ptr %t276, i64 %t272 + %t278 = load { ptr, i64, i64 }, ptr %t277 + store { ptr, i64, i64 } %t267, ptr %a280 + store { ptr, i64, i64 } %t278, ptr %a281 + call void @finch_str_concat(ptr %a279, ptr %a280, ptr %a281) + store { ptr, i64, i64 } %t267, ptr %a282 + call void @finch_str_drop(ptr %a282) + %t283 = load { ptr, i64, i64 }, ptr %a279 + store { ptr, i64, i64 } %t283, ptr %a285 + store { ptr, i64, i64 } { ptr @.str.2071, i64 1, i64 0 }, ptr %a286 + call void @finch_str_concat(ptr %a284, ptr %a285, ptr %a286) + store { ptr, i64, i64 } %t283, ptr %a287 + call void @finch_str_drop(ptr %a287) + %t288 = load { ptr, i64, i64 }, ptr %a284 + %t289 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 %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.2004, 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.2005, 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.2006, 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.2007, i64 0, i64 0 }, i64 0, i64 0) - br label %endif3062 -endif3062: - %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 + store { ptr, i64, i64 } %t288, ptr %a296 + call void @finch_str_drop(ptr %a296) + store { ptr, i64, i64 } %t292, ptr %a297 + call void @finch_str_drop(ptr %a297) + %t298 = load { ptr, i64, i64 }, ptr %a293 + store { ptr, i64, i64 } %t298, ptr %a300 + store { ptr, i64, i64 } { ptr @.str.2072, i64 1, i64 0 }, ptr %a301 + call void @finch_str_concat(ptr %a299, ptr %a300, ptr %a301) + store { ptr, i64, i64 } %t298, ptr %a302 + call void @finch_str_drop(ptr %a302) + %t303 = load { ptr, i64, i64 }, ptr %a299 + %t304 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 + %t305 = load i64, ptr %t304 + call void @finch_str_from_int(ptr %a306, i64 %t305) + %t307 = load { ptr, i64, i64 }, ptr %a306 + store { ptr, i64, i64 } %t303, ptr %a309 + store { ptr, i64, i64 } %t307, ptr %a310 + call void @finch_str_concat(ptr %a308, ptr %a309, ptr %a310) + store { ptr, i64, i64 } %t303, ptr %a311 + call void @finch_str_drop(ptr %a311) + store { ptr, i64, i64 } %t307, ptr %a312 + call void @finch_str_drop(ptr %a312) + %t313 = load { ptr, i64, i64 }, ptr %a308 + store { ptr, i64, i64 } %t313, ptr %a315 + store { ptr, i64, i64 } { ptr @.str.2073, i64 1, i64 0 }, ptr %a316 + call void @finch_str_concat(ptr %a314, ptr %a315, ptr %a316) + store { ptr, i64, i64 } %t313, ptr %a317 + call void @finch_str_drop(ptr %a317) + %t318 = load { ptr, i64, i64 }, ptr %a314 + %t319 = load ptr, ptr %a1 + %t320 = icmp eq ptr %t319, null + br i1 %t320, label %panic3268, label %ok3269 +panic3268: + call void @finch_panic(ptr @.str.2074, i64 1348, ptr @.str.2075) + unreachable +ok3269: + %t321 = getelementptr inbounds %S.gen.Gen, ptr %t319, i32 0, i32 1 + %t322 = getelementptr inbounds %S.ast.Node, ptr %a240, i32 0, i32 13 + %t323 = load i64, ptr %t322 + %t324 = load { ptr, i64, i64 }, ptr %t321 + %t325 = extractvalue { ptr, i64, i64 } %t324, 1 + %t326 = icmp uge i64 %t323, %t325 + br i1 %t326, label %range3270, label %inrange3271 +range3270: + call void @finch_panic_index(ptr @.str.2076, i64 1348, i64 %t323, i64 %t325) + unreachable +inrange3271: + %t327 = extractvalue { ptr, i64, i64 } %t324, 0 + %t328 = getelementptr inbounds { ptr, i64, i64 }, ptr %t327, i64 %t323 + %t329 = load { ptr, i64, i64 }, ptr %t328 + store { ptr, i64, i64 } %t318, ptr %a331 + store { ptr, i64, i64 } %t329, ptr %a332 + call void @finch_str_concat(ptr %a330, ptr %a331, ptr %a332) + store { ptr, i64, i64 } %t318, ptr %a333 + call void @finch_str_drop(ptr %a333) + %t334 = load { ptr, i64, i64 }, ptr %a330 + store { ptr, i64, i64 } %t334, ptr %a336 + store { ptr, i64, i64 } { ptr @.str.2077, i64 1, i64 0 }, ptr %a337 + call void @finch_str_concat(ptr %a335, ptr %a336, ptr %a337) + store { ptr, i64, i64 } %t334, ptr %a338 + call void @finch_str_drop(ptr %a338) + %t339 = load { ptr, i64, i64 }, ptr %a335 + %t340 = getelementptr inbounds %S.ast.Node, ptr %a240, i32 0, i32 11 + %t341 = load i64, ptr %t340 + call void @finch_str_from_int(ptr %a342, i64 %t341) + %t343 = load { ptr, i64, i64 }, ptr %a342 + store { ptr, i64, i64 } %t339, ptr %a345 + store { ptr, i64, i64 } %t343, ptr %a346 + call void @finch_str_concat(ptr %a344, ptr %a345, ptr %a346) + store { ptr, i64, i64 } %t339, ptr %a347 + call void @finch_str_drop(ptr %a347) + store { ptr, i64, i64 } %t343, ptr %a348 + call void @finch_str_drop(ptr %a348) + %t349 = load { ptr, i64, i64 }, ptr %a344 + store { ptr, i64, i64 } %t349, ptr %a351 + store { ptr, i64, i64 } { ptr @.str.2078, i64 1, i64 0 }, ptr %a352 + call void @finch_str_concat(ptr %a350, ptr %a351, ptr %a352) + store { ptr, i64, i64 } %t349, ptr %a353 + call void @finch_str_drop(ptr %a353) + %t354 = load { ptr, i64, i64 }, ptr %a350 + %t355 = getelementptr inbounds %S.ast.Node, ptr %a240, i32 0, i32 14 + %t356 = load i64, ptr %t355 + call void @finch_str_from_int(ptr %a357, i64 %t356) + %t358 = load { ptr, i64, i64 }, ptr %a357 + store { ptr, i64, i64 } %t354, ptr %a360 + store { ptr, i64, i64 } %t358, ptr %a361 + call void @finch_str_concat(ptr %a359, ptr %a360, ptr %a361) + store { ptr, i64, i64 } %t354, ptr %a362 + call void @finch_str_drop(ptr %a362) + store { ptr, i64, i64 } %t358, ptr %a363 + call void @finch_str_drop(ptr %a363) + %t364 = load { ptr, i64, i64 }, ptr %a359 + %t365 = load i64, ptr %t244 + %t366 = add i64 %t365, 1 + call void @finch_arr_reserve(ptr %t243, i64 %t366, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t367 = load ptr, ptr %t243 + %t368 = getelementptr inbounds { ptr, i64, i64 }, ptr %t367, i64 %t365 + store { ptr, i64, i64 } %t364, ptr %t368 + store i64 %t366, ptr %t244 + %t369 = load ptr, ptr %a1 + %t370 = load %S.ast.Node, ptr %a2 + %t371 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 + %t372 = load i64, ptr %t371 + %t373 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 + %t374 = load i64, ptr %t373 + %t375 = load %S.ast.Type, ptr %a4 + %t376 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t375) + store { ptr, i64, i64 } { ptr @.str.2079, i64 9, i64 0 }, ptr %a378 + store { ptr, i64, i64 } %t376, ptr %a379 + call void @finch_str_concat(ptr %a377, ptr %a378, ptr %a379) + store { ptr, i64, i64 } %t376, ptr %a380 + call void @finch_str_drop(ptr %a380) + %t381 = load { ptr, i64, i64 }, ptr %a377 + store { ptr, i64, i64 } %t381, ptr %a383 + store { ptr, i64, i64 } { ptr @.str.2080, i64 1, i64 0 }, ptr %a384 + call void @finch_str_concat(ptr %a382, ptr %a383, ptr %a384) + store { ptr, i64, i64 } %t381, ptr %a385 + call void @finch_str_drop(ptr %a385) + %t386 = load { ptr, i64, i64 }, ptr %a382 + %t387 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t386, ptr %a389 + store { ptr, i64, i64 } %t387, ptr %a390 + call void @finch_str_concat(ptr %a388, ptr %a389, ptr %a390) + store { ptr, i64, i64 } %t386, ptr %a391 + call void @finch_str_drop(ptr %a391) + %t392 = load { ptr, i64, i64 }, ptr %a388 + store { ptr, i64, i64 } %t392, ptr %a394 + store { ptr, i64, i64 } { ptr @.str.2081, i64 4, i64 0 }, ptr %a395 + call void @finch_str_concat(ptr %a393, ptr %a394, ptr %a395) + store { ptr, i64, i64 } %t392, ptr %a396 + call void @finch_str_drop(ptr %a396) + %t397 = load { ptr, i64, i64 }, ptr %a393 + call void @finch.gen.noteRef(ptr %t369, %S.ast.Node %t370, i64 %t372, i64 %t374, { ptr, i64, i64 } %t397, { ptr, i64, i64 } { ptr @.str.2082, i64 0, i64 0 }, i64 0, i64 0) + store { ptr, i64, i64 } %t397, ptr %a398 + call void @finch_str_drop(ptr %a398) + call void @finch.drop.S_ast_Node(ptr %a240) + br label %endif3251 +endif3251: + %t399 = load { ptr, i64, i64 }, ptr %a73 + ret { ptr, i64, i64 } %t399 } define internal void @finch.gen.pushScope(ptr %p0) { @@ -30865,11 +36222,11 @@ entry: store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic3083, label %ok3084 -panic3083: - call void @finch_panic(ptr @.str.2008, i64 1215, ptr @.str.2009) + br i1 %t3, label %panic3272, label %ok3273 +panic3272: + call void @finch_panic(ptr @.str.2083, i64 1355, ptr @.str.2084) unreachable -ok3084: +ok3273: %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 @@ -30882,240 +36239,413 @@ ok3084: ret void } +define internal void @finch.drop.S_gen_Var(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.gen.Var, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.gen.Var, ptr %a, i32 0, i32 1 + call void @finch.drop.S_ast_Type(ptr %t2) + %t3 = getelementptr inbounds %S.gen.Var, ptr %a, i32 0, i32 2 + call void @finch_str_drop(ptr %t3) + %t4 = getelementptr inbounds %S.gen.Var, ptr %a, i32 0, i32 7 + call void @finch_str_drop(ptr %t4) + ret void +} + +define internal void @finch.drop.arr_S_gen_Var(ptr %a) { +entry: + %a4 = alloca i64, align 16 + %t1 = load ptr, ptr %a + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 + %t3 = load i64, ptr %t2 + store i64 0, ptr %a4 + br label %n.cond3285 +n.cond3285: + %t5 = load i64, ptr %a4 + %t6 = icmp slt i64 %t5, %t3 + br i1 %t6, label %n.body3286, label %n.end3287 +n.body3286: + %t7 = getelementptr inbounds %S.gen.Var, ptr %t1, i64 %t5 + call void @finch.drop.S_gen_Var(ptr %t7) + %t8 = load i64, ptr %a4 + %t9 = add i64 %t8, 1 + store i64 %t9, ptr %a4 + br label %n.cond3285 +n.end3287: + call void @finch_arr_free(ptr %a) + ret void +} + +define internal void @finch.drop.arr_S_gen_Cleanup(ptr %a) { +entry: + + call void @finch_arr_free(ptr %a) + ret void +} + +define internal void @finch.drop.S_gen_Scope(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.gen.Scope, ptr %a, i32 0, i32 0 + call void @finch.drop.arr_S_gen_Var(ptr %t1) + %t2 = getelementptr inbounds %S.gen.Scope, ptr %a, i32 0, i32 1 + call void @finch.drop.arr_S_ast_Node(ptr %t2) + %t3 = getelementptr inbounds %S.gen.Scope, ptr %a, i32 0, i32 2 + call void @finch.drop.arr_int(ptr %t3) + %t4 = getelementptr inbounds %S.gen.Scope, ptr %a, i32 0, i32 3 + call void @finch.drop.arr_S_gen_Cleanup(ptr %t4) + ret void +} + define internal void @finch.gen.popScope(ptr %p0) { entry: %a1 = alloca ptr, align 16 + %a24 = alloca %S.gen.Scope, align 16 store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic3085, label %ok3086 -panic3085: - call void @finch_panic(ptr @.str.2010, i64 1219, ptr @.str.2011) + br i1 %t3, label %panic3274, label %ok3275 +panic3274: + call void @finch_panic(ptr @.str.2085, i64 1361, ptr @.str.2086) unreachable -ok3086: - %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 %panic3087, label %ok3088 -panic3087: - call void @finch_panic(ptr @.str.2012, i64 1219, ptr @.str.2013) +ok3275: + %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 %then3276, label %endif3278 +then3276: + %t7 = load ptr, ptr %a1 + %t8 = load ptr, ptr %a1 + %t9 = icmp eq ptr %t8, null + br i1 %t9, label %panic3279, label %ok3280 +panic3279: + call void @finch_panic(ptr @.str.2087, i64 1362, ptr @.str.2088) unreachable -ok3088: - %t8 = sub i64 %t6, 1 - %t9 = load ptr, ptr %t4 - %t10 = getelementptr inbounds %S.gen.Scope, ptr %t9, i64 %t8 - %t11 = load %S.gen.Scope, ptr %t10 - store i64 %t8, ptr %t5 +ok3280: + %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.runCleanups(ptr %t7, i64 %t13) + br label %endif3278 +endif3278: + %t14 = load ptr, ptr %a1 + %t15 = icmp eq ptr %t14, null + br i1 %t15, label %panic3281, label %ok3282 +panic3281: + call void @finch_panic(ptr @.str.2089, i64 1364, ptr @.str.2090) + unreachable +ok3282: + %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 %panic3283, label %ok3284 +panic3283: + call void @finch_panic(ptr @.str.2091, i64 1364, ptr @.str.2092) + unreachable +ok3284: + %t20 = sub i64 %t18, 1 + %t21 = load ptr, ptr %t16 + %t22 = getelementptr inbounds %S.gen.Scope, ptr %t21, i64 %t20 + %t23 = load %S.gen.Scope, ptr %t22 + store i64 %t20, ptr %t17 + store %S.gen.Scope %t23, ptr %a24 + call void @finch.drop.S_gen_Scope(ptr %a24) ret void } -define internal void @finch.copy.arr_S_gen_Var(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.gen.Var, 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.cond3093 -n.cond3093: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body3094, label %n.end3095 -n.body3094: - %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.cond3093 -n.end3095: - ret void -} - -define internal void @finch.copy.S_gen_Scope(ptr %dst, ptr %src) { -entry: - - %t1 = load %S.gen.Scope, ptr %src - store %S.gen.Scope %t1, ptr %dst - %t2 = getelementptr inbounds %S.gen.Scope, ptr %dst, i32 0, i32 0 - %t3 = getelementptr inbounds %S.gen.Scope, ptr %src, i32 0, i32 0 - call void @finch.copy.arr_S_gen_Var(ptr %t2, ptr %t3) - %t4 = getelementptr inbounds %S.gen.Scope, ptr %dst, i32 0, i32 1 - %t5 = getelementptr inbounds %S.gen.Scope, ptr %src, i32 0, i32 1 - call void @finch.copy.arr_S_ast_Node(ptr %t4, ptr %t5) - %t6 = getelementptr inbounds %S.gen.Scope, ptr %dst, i32 0, i32 2 - %t7 = getelementptr inbounds %S.gen.Scope, ptr %src, i32 0, i32 2 - call void @finch.copy.arr_int(ptr %t6, ptr %t7) - ret void -} - -define internal void @finch.gen.runDefers(ptr %p0, i64 %p1) { +define internal void @finch.gen.runCleanups(ptr %p0, i64 %p1) { entry: %a1 = alloca ptr, align 16 %a2 = alloca i64, align 16 - %a13 = alloca %S.gen.Scope, align 16 - %a14 = alloca %S.gen.Scope, align 16 - %a16 = alloca %S.gen.Scope, align 16 - %a20 = alloca i64, align 16 - %a29 = alloca i1, align 16 - %a34 = alloca i64, align 16 + %a15 = alloca i64, align 16 + %a37 = alloca %S.gen.Cleanup, align 16 + %a59 = alloca %S.gen.Var, align 16 + %a60 = alloca %S.gen.Var, align 16 + %a62 = alloca %S.gen.Var, align 16 + %a75 = alloca i1, align 16 + %a80 = alloca i64, align 16 store ptr %p0, ptr %a1 store i64 %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic3089, label %ok3090 -panic3089: - call void @finch_panic(ptr @.str.2014, i64 1224, ptr @.str.2015) + br i1 %t4, label %panic3288, label %ok3289 +panic3288: + call void @finch_panic(ptr @.str.2093, i64 1369, ptr @.str.2094) unreachable -ok3090: +ok3289: %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 %range3091, label %inrange3092 -range3091: - call void @finch_panic_index(ptr @.str.2016, i64 1224, i64 %t6, i64 %t8) + br i1 %t9, label %range3290, label %inrange3291 +range3290: + call void @finch_panic_index(ptr @.str.2095, i64 1369, i64 %t6, i64 %t8) unreachable -inrange3092: +inrange3291: %t10 = extractvalue { ptr, i64, i64 } %t7, 0 %t11 = getelementptr inbounds %S.gen.Scope, ptr %t10, i64 %t6 - %t12 = load %S.gen.Scope, ptr %t11 - store %S.gen.Scope %t12, ptr %a13 - call void @finch.copy.S_gen_Scope(ptr %a14, ptr %a13) - %t15 = load %S.gen.Scope, ptr %a14 - store %S.gen.Scope %t15, ptr %a16 - %t17 = getelementptr inbounds %S.gen.Scope, ptr %a16, i32 0, i32 1 - %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.cond3096 -while.cond3096: - %t21 = load i64, ptr %a20 - %t22 = icmp sgt i64 %t21, 0 - br i1 %t22, label %while.body3097, label %while.end3098 -while.body3097: - %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 %panic3099, label %ok3100 -panic3099: - call void @finch_panic(ptr @.str.2017, i64 1228, ptr @.str.2018) + %t12 = getelementptr inbounds %S.gen.Scope, ptr %t11, i32 0, i32 3 + %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t12, i32 0, i32 1 + %t14 = load i64, ptr %t13 + store i64 %t14, ptr %a15 + br label %while.cond3292 +while.cond3292: + %t16 = load i64, ptr %a15 + %t17 = icmp sgt i64 %t16, 0 + br i1 %t17, label %while.body3293, label %while.end3294 +while.body3293: + %t18 = load i64, ptr %a15 + %t19 = sub i64 %t18, 1 + store i64 %t19, ptr %a15 + %t20 = load ptr, ptr %a1 + %t21 = icmp eq ptr %t20, null + br i1 %t21, label %panic3295, label %ok3296 +panic3295: + call void @finch_panic(ptr @.str.2096, i64 1372, ptr @.str.2097) unreachable -ok3100: - %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 %panic3101, label %ok3102 -panic3101: - call void @finch_panic(ptr @.str.2019, i64 1229, ptr @.str.2020) +ok3296: + %t22 = getelementptr inbounds %S.gen.Gen, ptr %t20, i32 0, i32 10 + %t23 = load i64, ptr %a2 + %t24 = load { ptr, i64, i64 }, ptr %t22 + %t25 = extractvalue { ptr, i64, i64 } %t24, 1 + %t26 = icmp uge i64 %t23, %t25 + br i1 %t26, label %range3297, label %inrange3298 +range3297: + call void @finch_panic_index(ptr @.str.2098, i64 1372, i64 %t23, i64 %t25) unreachable -ok3102: - %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 %panic3103, label %ok3104 -panic3103: - call void @finch_panic(ptr @.str.2021, i64 1230, ptr @.str.2022) +inrange3298: + %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 3 + %t30 = load i64, ptr %a15 + %t31 = load { ptr, i64, i64 }, ptr %t29 + %t32 = extractvalue { ptr, i64, i64 } %t31, 1 + %t33 = icmp uge i64 %t30, %t32 + br i1 %t33, label %range3299, label %inrange3300 +range3299: + call void @finch_panic_index(ptr @.str.2099, i64 1372, i64 %t30, i64 %t32) unreachable -ok3104: - %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 %range3105, label %inrange3106 -range3105: - call void @finch_panic_index(ptr @.str.2023, i64 1231, i64 %t39, i64 %t41) +inrange3300: + %t34 = extractvalue { ptr, i64, i64 } %t31, 0 + %t35 = getelementptr inbounds %S.gen.Cleanup, ptr %t34, i64 %t30 + %t36 = load %S.gen.Cleanup, ptr %t35 + store %S.gen.Cleanup %t36, ptr %a37 + %t38 = getelementptr inbounds %S.gen.Cleanup, ptr %a37, i32 0, i32 0 + %t39 = load i1, ptr %t38 + %t40 = xor i1 %t39, true + br i1 %t40, label %then3301, label %endif3303 +then3301: + %t41 = load ptr, ptr %a1 + %t42 = icmp eq ptr %t41, null + br i1 %t42, label %panic3304, label %ok3305 +panic3304: + call void @finch_panic(ptr @.str.2100, i64 1374, ptr @.str.2101) unreachable -inrange3106: - %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 %panic3107, label %ok3108 -panic3107: - call void @finch_panic(ptr @.str.2024, i64 1231, ptr @.str.2025) +ok3305: + %t43 = getelementptr inbounds %S.gen.Gen, ptr %t41, i32 0, i32 10 + %t44 = load i64, ptr %a2 + %t45 = load { ptr, i64, i64 }, ptr %t43 + %t46 = extractvalue { ptr, i64, i64 } %t45, 1 + %t47 = icmp uge i64 %t44, %t46 + br i1 %t47, label %range3306, label %inrange3307 +range3306: + call void @finch_panic_index(ptr @.str.2102, i64 1374, i64 %t44, i64 %t46) unreachable -ok3108: - %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 %panic3109, label %ok3110 -panic3109: - call void @finch_panic(ptr @.str.2026, i64 1232, ptr @.str.2027) - unreachable -ok3110: - %t51 = getelementptr inbounds %S.gen.Gen, ptr %t49, i32 0, i32 44 +inrange3307: + %t48 = extractvalue { ptr, i64, i64 } %t45, 0 + %t49 = getelementptr inbounds %S.gen.Scope, ptr %t48, i64 %t44 + %t50 = getelementptr inbounds %S.gen.Scope, ptr %t49, i32 0, i32 0 + %t51 = getelementptr inbounds %S.gen.Cleanup, ptr %a37, i32 0, i32 1 %t52 = load i64, ptr %t51 - %t53 = add i64 %t52, 1 - store i64 %t53, ptr %t51 - %t54 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t54) - %t55 = load ptr, ptr %a1 - %t56 = getelementptr inbounds %S.gen.Scope, ptr %a16, i32 0, i32 1 - %t57 = load i64, ptr %a20 - %t58 = load { ptr, i64, i64 }, ptr %t56 - %t59 = extractvalue { ptr, i64, i64 } %t58, 1 - %t60 = icmp uge i64 %t57, %t59 - br i1 %t60, label %range3111, label %inrange3112 -range3111: - call void @finch_panic_index(ptr @.str.2028, i64 1234, i64 %t57, i64 %t59) + %t53 = load { ptr, i64, i64 }, ptr %t50 + %t54 = extractvalue { ptr, i64, i64 } %t53, 1 + %t55 = icmp uge i64 %t52, %t54 + br i1 %t55, label %range3308, label %inrange3309 +range3308: + call void @finch_panic_index(ptr @.str.2103, i64 1374, i64 %t52, i64 %t54) unreachable -inrange3112: - %t61 = extractvalue { ptr, i64, i64 } %t58, 0 - %t62 = getelementptr inbounds %S.ast.Node, ptr %t61, i64 %t57 - %t63 = load %S.ast.Node, ptr %t62 - call void @finch.gen.stmt(ptr %t55, %S.ast.Node %t63) - %t64 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t64) - %t65 = load ptr, ptr %a1 - %t66 = icmp eq ptr %t65, null - br i1 %t66, label %panic3113, label %ok3114 -panic3113: - call void @finch_panic(ptr @.str.2029, i64 1236, ptr @.str.2030) - unreachable -ok3114: - %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 +inrange3309: + %t56 = extractvalue { ptr, i64, i64 } %t53, 0 + %t57 = getelementptr inbounds %S.gen.Var, ptr %t56, i64 %t52 + %t58 = load %S.gen.Var, ptr %t57 + store %S.gen.Var %t58, ptr %a59 + call void @finch.copy.S_gen_Var(ptr %a60, ptr %a59) + %t61 = load %S.gen.Var, ptr %a60 + store %S.gen.Var %t61, ptr %a62 + %t63 = getelementptr inbounds %S.gen.Var, ptr %a62, i32 0, i32 6 + %t64 = load i1, ptr %t63 + %t65 = xor i1 %t64, true + br i1 %t65, label %then3310, label %endif3312 +then3310: + %t66 = load ptr, ptr %a1 + %t67 = getelementptr inbounds %S.gen.Var, ptr %a62, i32 0, i32 2 + %t68 = load { ptr, i64, i64 }, ptr %t67 + %t69 = getelementptr inbounds %S.gen.Var, ptr %a62, i32 0, i32 1 + %t70 = load %S.ast.Type, ptr %t69 + call void @finch.gen.dropAt(ptr %t66, { ptr, i64, i64 } %t68, %S.ast.Type %t70) + br label %endif3312 +endif3312: + call void @finch.drop.S_gen_Var(ptr %a62) + br label %while.cond3292 +endif3303: %t71 = load ptr, ptr %a1 %t72 = icmp eq ptr %t71, null - br i1 %t72, label %panic3115, label %ok3116 -panic3115: - call void @finch_panic(ptr @.str.2031, i64 1237, ptr @.str.2032) + br i1 %t72, label %panic3313, label %ok3314 +panic3313: + call void @finch_panic(ptr @.str.2104, i64 1380, ptr @.str.2105) unreachable -ok3116: - %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 %panic3117, label %ok3118 -panic3117: - call void @finch_panic(ptr @.str.2033, i64 1238, ptr @.str.2034) +ok3314: + %t73 = getelementptr inbounds %S.gen.Gen, ptr %t71, i32 0, i32 43 + %t74 = load i1, ptr %t73 + store i1 %t74, ptr %a75 + %t76 = load ptr, ptr %a1 + %t77 = icmp eq ptr %t76, null + br i1 %t77, label %panic3315, label %ok3316 +panic3315: + call void @finch_panic(ptr @.str.2106, i64 1381, ptr @.str.2107) unreachable -ok3118: - %t77 = getelementptr inbounds %S.gen.Gen, ptr %t75, i32 0, i32 43 - store i64 %t74, ptr %t77 - br label %while.cond3096 -while.end3098: +ok3316: + %t78 = getelementptr inbounds %S.gen.Gen, ptr %t76, i32 0, i32 44 + %t79 = load i64, ptr %t78 + store i64 %t79, ptr %a80 + %t81 = load ptr, ptr %a1 + %t82 = icmp eq ptr %t81, null + br i1 %t82, label %panic3317, label %ok3318 +panic3317: + call void @finch_panic(ptr @.str.2108, i64 1382, ptr @.str.2109) + unreachable +ok3318: + %t83 = getelementptr inbounds %S.gen.Gen, ptr %t81, i32 0, i32 43 + store i1 true, ptr %t83 + %t84 = load ptr, ptr %a1 + %t85 = icmp eq ptr %t84, null + br i1 %t85, label %panic3319, label %ok3320 +panic3319: + call void @finch_panic(ptr @.str.2110, i64 1383, ptr @.str.2111) + unreachable +ok3320: + %t86 = getelementptr inbounds %S.gen.Gen, ptr %t84, i32 0, i32 10 + %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 %range3321, label %inrange3322 +range3321: + call void @finch_panic_index(ptr @.str.2112, i64 1383, i64 %t87, i64 %t89) + unreachable +inrange3322: + %t91 = extractvalue { ptr, i64, i64 } %t88, 0 + %t92 = getelementptr inbounds %S.gen.Scope, ptr %t91, i64 %t87 + %t93 = getelementptr inbounds %S.gen.Scope, ptr %t92, i32 0, i32 2 + %t94 = getelementptr inbounds %S.gen.Cleanup, ptr %a37, i32 0, i32 1 + %t95 = load i64, ptr %t94 + %t96 = load { ptr, i64, i64 }, ptr %t93 + %t97 = extractvalue { ptr, i64, i64 } %t96, 1 + %t98 = icmp uge i64 %t95, %t97 + br i1 %t98, label %range3323, label %inrange3324 +range3323: + call void @finch_panic_index(ptr @.str.2113, i64 1383, i64 %t95, i64 %t97) + unreachable +inrange3324: + %t99 = extractvalue { ptr, i64, i64 } %t96, 0 + %t100 = getelementptr inbounds i64, ptr %t99, i64 %t95 + %t101 = load i64, ptr %t100 + %t102 = load ptr, ptr %a1 + %t103 = icmp eq ptr %t102, null + br i1 %t103, label %panic3325, label %ok3326 +panic3325: + call void @finch_panic(ptr @.str.2114, i64 1383, ptr @.str.2115) + unreachable +ok3326: + %t104 = getelementptr inbounds %S.gen.Gen, ptr %t102, i32 0, i32 44 + store i64 %t101, ptr %t104 + %t105 = load ptr, ptr %a1 + %t106 = icmp eq ptr %t105, null + br i1 %t106, label %panic3327, label %ok3328 +panic3327: + call void @finch_panic(ptr @.str.2116, i64 1384, ptr @.str.2117) + unreachable +ok3328: + %t107 = getelementptr inbounds %S.gen.Gen, ptr %t105, i32 0, i32 45 + %t108 = load i64, ptr %t107 + %t109 = add i64 %t108, 1 + store i64 %t109, ptr %t107 + %t110 = load ptr, ptr %a1 + call void @finch.gen.pushScope(ptr %t110) + %t111 = load ptr, ptr %a1 + %t112 = load ptr, ptr %a1 + %t113 = icmp eq ptr %t112, null + br i1 %t113, label %panic3329, label %ok3330 +panic3329: + call void @finch_panic(ptr @.str.2118, i64 1386, ptr @.str.2119) + unreachable +ok3330: + %t114 = getelementptr inbounds %S.gen.Gen, ptr %t112, i32 0, i32 10 + %t115 = load i64, ptr %a2 + %t116 = load { ptr, i64, i64 }, ptr %t114 + %t117 = extractvalue { ptr, i64, i64 } %t116, 1 + %t118 = icmp uge i64 %t115, %t117 + br i1 %t118, label %range3331, label %inrange3332 +range3331: + call void @finch_panic_index(ptr @.str.2120, i64 1386, i64 %t115, i64 %t117) + unreachable +inrange3332: + %t119 = extractvalue { ptr, i64, i64 } %t116, 0 + %t120 = getelementptr inbounds %S.gen.Scope, ptr %t119, i64 %t115 + %t121 = getelementptr inbounds %S.gen.Scope, ptr %t120, i32 0, i32 1 + %t122 = getelementptr inbounds %S.gen.Cleanup, ptr %a37, i32 0, i32 1 + %t123 = load i64, ptr %t122 + %t124 = load { ptr, i64, i64 }, ptr %t121 + %t125 = extractvalue { ptr, i64, i64 } %t124, 1 + %t126 = icmp uge i64 %t123, %t125 + br i1 %t126, label %range3333, label %inrange3334 +range3333: + call void @finch_panic_index(ptr @.str.2121, i64 1386, i64 %t123, i64 %t125) + unreachable +inrange3334: + %t127 = extractvalue { ptr, i64, i64 } %t124, 0 + %t128 = getelementptr inbounds %S.ast.Node, ptr %t127, i64 %t123 + %t129 = load %S.ast.Node, ptr %t128 + call void @finch.gen.stmt(ptr %t111, %S.ast.Node %t129) + %t130 = load ptr, ptr %a1 + call void @finch.gen.popScope(ptr %t130) + %t131 = load ptr, ptr %a1 + %t132 = icmp eq ptr %t131, null + br i1 %t132, label %panic3335, label %ok3336 +panic3335: + call void @finch_panic(ptr @.str.2122, i64 1388, ptr @.str.2123) + unreachable +ok3336: + %t133 = getelementptr inbounds %S.gen.Gen, ptr %t131, i32 0, i32 45 + %t134 = load i64, ptr %t133 + %t135 = sub i64 %t134, 1 + store i64 %t135, ptr %t133 + %t136 = load i1, ptr %a75 + %t137 = load ptr, ptr %a1 + %t138 = icmp eq ptr %t137, null + br i1 %t138, label %panic3337, label %ok3338 +panic3337: + call void @finch_panic(ptr @.str.2124, i64 1389, ptr @.str.2125) + unreachable +ok3338: + %t139 = getelementptr inbounds %S.gen.Gen, ptr %t137, i32 0, i32 43 + store i1 %t136, ptr %t139 + %t140 = load i64, ptr %a80 + %t141 = load ptr, ptr %a1 + %t142 = icmp eq ptr %t141, null + br i1 %t142, label %panic3339, label %ok3340 +panic3339: + call void @finch_panic(ptr @.str.2126, i64 1390, ptr @.str.2127) + unreachable +ok3340: + %t143 = getelementptr inbounds %S.gen.Gen, ptr %t141, i32 0, i32 44 + store i64 %t140, ptr %t143 + br label %while.cond3292 +while.end3294: ret void } @@ -31128,30 +36658,30 @@ entry: store i64 %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic3119, label %ok3120 -panic3119: - call void @finch_panic(ptr @.str.2035, i64 1244, ptr @.str.2036) + br i1 %t4, label %panic3341, label %ok3342 +panic3341: + call void @finch_panic(ptr @.str.2128, i64 1396, ptr @.str.2129) unreachable -ok3120: +ok3342: %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.cond3121 -while.cond3121: + br label %while.cond3343 +while.cond3343: %t9 = load i64, ptr %a8 %t10 = load i64, ptr %a2 %t11 = icmp sgt i64 %t9, %t10 - br i1 %t11, label %while.body3122, label %while.end3123 -while.body3122: + br i1 %t11, label %while.body3344, label %while.end3345 +while.body3344: %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.cond3121 -while.end3123: + call void @finch.gen.runCleanups(ptr %t14, i64 %t15) + br label %while.cond3343 +while.end3345: ret void } @@ -31160,53 +36690,7 @@ 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 %panic3124, label %ok3125 -panic3124: - call void @finch_panic(ptr @.str.2037, i64 1253, ptr @.str.2038) - unreachable -ok3125: - %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 %then3126, label %endif3128 -then3126: - %t7 = load ptr, ptr %a1 - %t8 = load ptr, ptr %a1 - %t9 = icmp eq ptr %t8, null - br i1 %t9, label %panic3129, label %ok3130 -panic3129: - call void @finch_panic(ptr @.str.2039, i64 1254, ptr @.str.2040) - unreachable -ok3130: - %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 %endif3128 -endif3128: - %t14 = load ptr, ptr %a1 - %t15 = icmp eq ptr %t14, null - br i1 %t15, label %panic3131, label %ok3132 -panic3131: - call void @finch_panic(ptr @.str.2041, i64 1256, ptr @.str.2042) - unreachable -ok3132: - %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 %panic3133, label %ok3134 -panic3133: - call void @finch_panic(ptr @.str.2043, i64 1256, ptr @.str.2044) - unreachable -ok3134: - %t20 = sub i64 %t18, 1 - %t21 = load ptr, ptr %t16 - %t22 = getelementptr inbounds %S.gen.Scope, ptr %t21, i64 %t20 - %t23 = load %S.gen.Scope, ptr %t22 - store i64 %t20, ptr %t17 + call void @finch.gen.popScope(ptr %t2) ret void } @@ -31225,57 +36709,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.2045, i64 3, i64 0 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.2130, 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 %then3135, label %endif3137 -then3135: + br i1 %t7, label %then3346, label %endif3348 +then3346: %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 -endif3137: +endif3348: %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.2046, i64 6, i64 0 }, ptr %a16 + store { ptr, i64, i64 } { ptr @.str.2131, 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.from3138 -logic.from3138: - br i1 %t18, label %logic.end3140, label %logic.rhs3139 -logic.rhs3139: + br label %logic.from3349 +logic.from3349: + br i1 %t18, label %logic.end3351, label %logic.rhs3350 +logic.rhs3350: %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.2047, i64 5, i64 0 }, ptr %a22 + store { ptr, i64, i64 } { ptr @.str.2132, 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.rend3141 -logic.rend3141: - br label %logic.end3140 -logic.end3140: - %t25 = phi i1 [ true, %logic.from3138 ], [ %t24, %logic.rend3141 ] - br i1 %t25, label %then3142, label %endif3144 -then3142: + br label %logic.rend3352 +logic.rend3352: + br label %logic.end3351 +logic.end3351: + %t25 = phi i1 [ true, %logic.from3349 ], [ %t24, %logic.rend3352 ] + br i1 %t25, label %then3353, label %endif3355 +then3353: %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 %range3145, label %inrange3146 -range3145: - call void @finch_panic_index(ptr @.str.2048, i64 1266, i64 0, i64 %t28) + br i1 %t29, label %range3356, label %inrange3357 +range3356: + call void @finch_panic_index(ptr @.str.2133, i64 1414, i64 0, i64 %t28) unreachable -inrange3146: +inrange3357: %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 -endif3144: - ret { ptr, i64, i64 } { ptr @.str.2049, i64 0, i64 0 } +endif3355: + ret { ptr, i64, i64 } { ptr @.str.2134, i64 0, i64 0 } } define internal i1 @finch.gen.mutates(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Node %p2) { @@ -31288,47 +36772,50 @@ entry: %a21 = alloca { ptr, i64, i64 }, align 16 %a33 = alloca { ptr, i64, i64 }, align 16 %a34 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 + %a37 = alloca { ptr, i64, i64 }, align 16 %a41 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca i64, align 16 - %a50 = alloca i64, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 + %a42 = alloca { ptr, i64, i64 }, align 16 + %a48 = alloca i64, align 16 + %a51 = alloca i64, align 16 %a56 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca i64, align 16 - %a71 = alloca i64, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 + %a57 = alloca { ptr, i64, i64 }, align 16 + %a69 = alloca i64, align 16 + %a72 = alloca i64, align 16 %a77 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 + %a78 = alloca { ptr, i64, i64 }, align 16 %a95 = 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 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca i64, align 16 - %a140 = alloca %S.ast.Node, align 16 + %a96 = 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 + %a109 = alloca { ptr, i64, i64 }, align 16 + %a110 = alloca { ptr, i64, i64 }, align 16 + %a128 = alloca { ptr, i64, i64 }, align 16 + %a129 = alloca { ptr, i64, i64 }, align 16 + %a132 = alloca { ptr, i64, i64 }, align 16 + %a135 = alloca i64, align 16 + %a143 = alloca %S.ast.Node, align 16 store ptr %p0, ptr %a1 store { ptr, i64, i64 } %p1, ptr %a2 store %S.ast.Node %p2, ptr %a3 %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.2050, i64 4, i64 0 }, ptr %t6 + store { ptr, i64, i64 } { ptr @.str.2135, i64 4, i64 0 }, ptr %t6 %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 1 - store { ptr, i64, i64 } { ptr @.str.2051, i64 3, i64 0 }, ptr %t7 + store { ptr, i64, i64 } { ptr @.str.2136, i64 3, i64 0 }, ptr %t7 %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 2 - store { ptr, i64, i64 } { ptr @.str.2052, i64 6, i64 0 }, ptr %t8 + store { ptr, i64, i64 } { ptr @.str.2137, i64 6, i64 0 }, ptr %t8 %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 3 - store { ptr, i64, i64 } { ptr @.str.2053, i64 6, i64 0 }, ptr %t9 + store { ptr, i64, i64 } { ptr @.str.2138, i64 6, i64 0 }, ptr %t9 %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 4 - store { ptr, i64, i64 } { ptr @.str.2054, i64 5, i64 0 }, ptr %t10 + store { ptr, i64, i64 } { ptr @.str.2139, i64 5, i64 0 }, ptr %t10 %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 5 - store { ptr, i64, i64 } { ptr @.str.2055, i64 6, i64 0 }, ptr %t11 + store { ptr, i64, i64 } { ptr @.str.2140, i64 6, i64 0 }, ptr %t11 %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 6 - store { ptr, i64, i64 } { ptr @.str.2056, i64 4, i64 0 }, ptr %t12 + store { ptr, i64, i64 } { ptr @.str.2141, i64 4, i64 0 }, ptr %t12 %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 7 - store { ptr, i64, i64 } { ptr @.str.2057, i64 7, i64 0 }, ptr %t13 + store { ptr, i64, i64 } { ptr @.str.2142, 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 @@ -31336,22 +36823,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.2058, i64 6, i64 0 }, ptr %a21 + store { ptr, i64, i64 } { ptr @.str.2143, 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.from3147 -logic.from3147: - br i1 %t23, label %logic.rhs3148, label %logic.end3149 -logic.rhs3148: + br label %logic.from3358 +logic.from3358: + br i1 %t23, label %logic.rhs3359, label %logic.end3360 +logic.rhs3359: %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 %range3150, label %inrange3151 -range3150: - call void @finch_panic_index(ptr @.str.2059, i64 1273, i64 0, i64 %t26) + br i1 %t27, label %range3361, label %inrange3362 +range3361: + call void @finch_panic_index(ptr @.str.2144, i64 1421, i64 0, i64 %t26) unreachable -inrange3151: +inrange3362: %t28 = extractvalue { ptr, i64, i64 } %t25, 0 %t29 = getelementptr inbounds %S.ast.Node, ptr %t28, i64 0 %t30 = load %S.ast.Node, ptr %t29 @@ -31361,232 +36848,243 @@ inrange3151: 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.rend3152 -logic.rend3152: - br label %logic.end3149 -logic.end3149: - %t37 = phi i1 [ false, %logic.from3147 ], [ %t36, %logic.rend3152 ] - br i1 %t37, label %then3153, label %endif3155 -then3153: + store { ptr, i64, i64 } %t31, ptr %a37 + call void @finch_str_drop(ptr %a37) + br label %logic.rend3363 +logic.rend3363: + br label %logic.end3360 +logic.end3360: + %t38 = phi i1 [ false, %logic.from3358 ], [ %t36, %logic.rend3363 ] + br i1 %t38, label %then3364, label %endif3366 +then3364: + call void @finch.drop.arr_str(ptr %a17) ret i1 true -endif3155: - %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.2060, 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.from3156 -logic.from3156: - br i1 %t43, label %logic.rhs3157, label %logic.end3158 -logic.rhs3157: - %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 - store i64 -1, ptr %a47 - %t48 = load i64, ptr %t44 - %t49 = load ptr, ptr %a17 - store i64 0, ptr %a50 - br label %find.cond3159 -find.cond3159: - %t51 = load i64, ptr %a50 - %t52 = icmp slt i64 %t51, %t48 - br i1 %t52, label %find.body3160, label %find.end3163 -find.body3160: - %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.hit3161, label %find.next3162 -find.hit3161: - store i64 %t51, ptr %a47 - br label %find.end3163 -find.next3162: - %t59 = add i64 %t51, 1 - store i64 %t59, ptr %a50 - br label %find.cond3159 -find.end3163: - %t60 = load i64, ptr %a47 - %t61 = icmp sge i64 %t60, 0 - br label %logic.from3164 -logic.from3164: - br i1 %t61, label %logic.end3166, label %logic.rhs3165 -logic.rhs3165: - %t62 = load ptr, ptr %a1 - %t63 = icmp eq ptr %t62, null - br i1 %t63, label %panic3167, label %ok3168 -panic3167: - call void @finch_panic(ptr @.str.2061, i64 1279, ptr @.str.2062) +endif3366: + %t39 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 0 + %t40 = load { ptr, i64, i64 }, ptr %t39 + store { ptr, i64, i64 } %t40, ptr %a41 + store { ptr, i64, i64 } { ptr @.str.2145, i64 6, i64 0 }, ptr %a42 + %t43 = call i32 @finch_str_eq(ptr %a41, ptr %a42) + %t44 = icmp ne i32 %t43, 0 + br label %logic.from3367 +logic.from3367: + br i1 %t44, label %logic.rhs3368, label %logic.end3369 +logic.rhs3368: + %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %a17, i32 0, i32 1 + %t46 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 1 + %t47 = load { ptr, i64, i64 }, ptr %t46 + store i64 -1, ptr %a48 + %t49 = load i64, ptr %t45 + %t50 = load ptr, ptr %a17 + store i64 0, ptr %a51 + br label %find.cond3370 +find.cond3370: + %t52 = load i64, ptr %a51 + %t53 = icmp slt i64 %t52, %t49 + br i1 %t53, label %find.body3371, label %find.end3374 +find.body3371: + %t54 = getelementptr inbounds { ptr, i64, i64 }, ptr %t50, i64 %t52 + %t55 = load { ptr, i64, i64 }, ptr %t54 + store { ptr, i64, i64 } %t55, ptr %a56 + store { ptr, i64, i64 } %t47, ptr %a57 + %t58 = call i32 @finch_str_eq(ptr %a56, ptr %a57) + %t59 = icmp ne i32 %t58, 0 + br i1 %t59, label %find.hit3372, label %find.next3373 +find.hit3372: + store i64 %t52, ptr %a48 + br label %find.end3374 +find.next3373: + %t60 = add i64 %t52, 1 + store i64 %t60, ptr %a51 + br label %find.cond3370 +find.end3374: + %t61 = load i64, ptr %a48 + %t62 = icmp sge i64 %t61, 0 + br label %logic.from3375 +logic.from3375: + br i1 %t62, label %logic.end3377, label %logic.rhs3376 +logic.rhs3376: + %t63 = load ptr, ptr %a1 + %t64 = icmp eq ptr %t63, null + br i1 %t64, label %panic3378, label %ok3379 +panic3378: + call void @finch_panic(ptr @.str.2146, i64 1427, ptr @.str.2147) unreachable -ok3168: - %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 - %t67 = load { ptr, i64, i64 }, ptr %t66 - store i64 -1, ptr %a68 - %t69 = load i64, ptr %t65 - %t70 = load ptr, ptr %t64 - store i64 0, ptr %a71 - br label %find.cond3169 -find.cond3169: - %t72 = load i64, ptr %a71 - %t73 = icmp slt i64 %t72, %t69 - br i1 %t73, label %find.body3170, label %find.end3173 -find.body3170: - %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.hit3171, label %find.next3172 -find.hit3171: - store i64 %t72, ptr %a68 - br label %find.end3173 -find.next3172: - %t80 = add i64 %t72, 1 - store i64 %t80, ptr %a71 - br label %find.cond3169 -find.end3173: - %t81 = load i64, ptr %a68 - %t82 = icmp sge i64 %t81, 0 - br label %logic.rend3174 -logic.rend3174: - br label %logic.end3166 -logic.end3166: - %t83 = phi i1 [ true, %logic.from3164 ], [ %t82, %logic.rend3174 ] - br label %logic.rend3175 -logic.rend3175: - br label %logic.end3158 -logic.end3158: - %t84 = phi i1 [ false, %logic.from3156 ], [ %t83, %logic.rend3175 ] - br label %logic.from3176 -logic.from3176: - br i1 %t84, label %logic.rhs3177, label %logic.end3178 -logic.rhs3177: - %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 %range3179, label %inrange3180 -range3179: - call void @finch_panic_index(ptr @.str.2063, i64 1279, i64 0, i64 %t87) +ok3379: + %t65 = getelementptr inbounds %S.gen.Gen, ptr %t63, i32 0, i32 23 + %t66 = getelementptr inbounds { ptr, i64, i64 }, ptr %t65, i32 0, i32 1 + %t67 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 1 + %t68 = load { ptr, i64, i64 }, ptr %t67 + store i64 -1, ptr %a69 + %t70 = load i64, ptr %t66 + %t71 = load ptr, ptr %t65 + store i64 0, ptr %a72 + br label %find.cond3380 +find.cond3380: + %t73 = load i64, ptr %a72 + %t74 = icmp slt i64 %t73, %t70 + br i1 %t74, label %find.body3381, label %find.end3384 +find.body3381: + %t75 = getelementptr inbounds { ptr, i64, i64 }, ptr %t71, i64 %t73 + %t76 = load { ptr, i64, i64 }, ptr %t75 + store { ptr, i64, i64 } %t76, ptr %a77 + store { ptr, i64, i64 } %t68, ptr %a78 + %t79 = call i32 @finch_str_eq(ptr %a77, ptr %a78) + %t80 = icmp ne i32 %t79, 0 + br i1 %t80, label %find.hit3382, label %find.next3383 +find.hit3382: + store i64 %t73, ptr %a69 + br label %find.end3384 +find.next3383: + %t81 = add i64 %t73, 1 + store i64 %t81, ptr %a72 + br label %find.cond3380 +find.end3384: + %t82 = load i64, ptr %a69 + %t83 = icmp sge i64 %t82, 0 + br label %logic.rend3385 +logic.rend3385: + br label %logic.end3377 +logic.end3377: + %t84 = phi i1 [ true, %logic.from3375 ], [ %t83, %logic.rend3385 ] + br label %logic.rend3386 +logic.rend3386: + br label %logic.end3369 +logic.end3369: + %t85 = phi i1 [ false, %logic.from3367 ], [ %t84, %logic.rend3386 ] + br label %logic.from3387 +logic.from3387: + br i1 %t85, label %logic.rhs3388, label %logic.end3389 +logic.rhs3388: + %t86 = getelementptr inbounds %S.ast.Node, ptr %a3, 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 %range3390, label %inrange3391 +range3390: + call void @finch_panic_index(ptr @.str.2148, i64 1427, i64 0, i64 %t88) unreachable -inrange3180: - %t89 = extractvalue { ptr, i64, i64 } %t86, 0 - %t90 = getelementptr inbounds %S.ast.Node, ptr %t89, i64 0 - %t91 = load %S.ast.Node, ptr %t90 - %t92 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t91) - %t93 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t92, ptr %a94 +inrange3391: + %t90 = extractvalue { ptr, i64, i64 } %t87, 0 + %t91 = getelementptr inbounds %S.ast.Node, ptr %t90, i64 0 + %t92 = load %S.ast.Node, ptr %t91 + %t93 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t92) + %t94 = load { ptr, i64, i64 }, ptr %a2 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.rend3181 -logic.rend3181: - br label %logic.end3178 -logic.end3178: - %t98 = phi i1 [ false, %logic.from3176 ], [ %t97, %logic.rend3181 ] - br i1 %t98, label %then3182, label %endif3184 -then3182: + store { ptr, i64, i64 } %t94, ptr %a96 + %t97 = call i32 @finch_str_eq(ptr %a95, ptr %a96) + %t98 = icmp ne i32 %t97, 0 + store { ptr, i64, i64 } %t93, ptr %a99 + call void @finch_str_drop(ptr %a99) + br label %logic.rend3392 +logic.rend3392: + br label %logic.end3389 +logic.end3389: + %t100 = phi i1 [ false, %logic.from3387 ], [ %t98, %logic.rend3392 ] + br i1 %t100, label %then3393, label %endif3395 +then3393: + call void @finch.drop.arr_str(ptr %a17) ret i1 true -endif3184: - %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.2064, 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.from3185 -logic.from3185: - br i1 %t104, label %logic.rhs3186, label %logic.end3187 -logic.rhs3186: - %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.2065, 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.rend3188 -logic.rend3188: - br label %logic.end3187 -logic.end3187: - %t111 = phi i1 [ false, %logic.from3185 ], [ %t110, %logic.rend3188 ] - br label %logic.from3189 -logic.from3189: - br i1 %t111, label %logic.rhs3190, label %logic.end3191 -logic.rhs3190: - %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.rend3192 -logic.rend3192: - br label %logic.end3191 -logic.end3191: - %t116 = phi i1 [ false, %logic.from3189 ], [ %t115, %logic.rend3192 ] - br label %logic.from3193 -logic.from3193: - br i1 %t116, label %logic.rhs3194, label %logic.end3195 -logic.rhs3194: - %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 %range3196, label %inrange3197 -range3196: - call void @finch_panic_index(ptr @.str.2066, i64 1282, i64 0, i64 %t119) +endif3395: + %t101 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 0 + %t102 = load { ptr, i64, i64 }, ptr %t101 + store { ptr, i64, i64 } %t102, ptr %a103 + store { ptr, i64, i64 } { ptr @.str.2149, i64 4, i64 0 }, ptr %a104 + %t105 = call i32 @finch_str_eq(ptr %a103, ptr %a104) + %t106 = icmp ne i32 %t105, 0 + br label %logic.from3396 +logic.from3396: + br i1 %t106, label %logic.rhs3397, label %logic.end3398 +logic.rhs3397: + %t107 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 1 + %t108 = load { ptr, i64, i64 }, ptr %t107 + store { ptr, i64, i64 } %t108, ptr %a109 + store { ptr, i64, i64 } { ptr @.str.2150, i64 4, i64 0 }, ptr %a110 + %t111 = call i32 @finch_str_eq(ptr %a109, ptr %a110) + %t112 = icmp ne i32 %t111, 0 + br label %logic.rend3399 +logic.rend3399: + br label %logic.end3398 +logic.end3398: + %t113 = phi i1 [ false, %logic.from3396 ], [ %t112, %logic.rend3399 ] + br label %logic.from3400 +logic.from3400: + br i1 %t113, label %logic.rhs3401, label %logic.end3402 +logic.rhs3401: + %t114 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 9 + %t115 = getelementptr inbounds { ptr, i64, i64 }, ptr %t114, i32 0, i32 1 + %t116 = load i64, ptr %t115 + %t117 = icmp eq i64 %t116, 1 + br label %logic.rend3403 +logic.rend3403: + br label %logic.end3402 +logic.end3402: + %t118 = phi i1 [ false, %logic.from3400 ], [ %t117, %logic.rend3403 ] + br label %logic.from3404 +logic.from3404: + br i1 %t118, label %logic.rhs3405, label %logic.end3406 +logic.rhs3405: + %t119 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 9 + %t120 = load { ptr, i64, i64 }, ptr %t119 + %t121 = extractvalue { ptr, i64, i64 } %t120, 1 + %t122 = icmp uge i64 0, %t121 + br i1 %t122, label %range3407, label %inrange3408 +range3407: + call void @finch_panic_index(ptr @.str.2151, i64 1430, i64 0, i64 %t121) unreachable -inrange3197: - %t121 = extractvalue { ptr, i64, i64 } %t118, 0 - %t122 = getelementptr inbounds %S.ast.Node, ptr %t121, i64 0 - %t123 = load %S.ast.Node, ptr %t122 - %t124 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t123) - %t125 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t124, ptr %a126 - 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.rend3198 -logic.rend3198: - br label %logic.end3195 -logic.end3195: - %t130 = phi i1 [ false, %logic.from3193 ], [ %t129, %logic.rend3198 ] - br i1 %t130, label %then3199, label %endif3201 -then3199: +inrange3408: + %t123 = extractvalue { ptr, i64, i64 } %t120, 0 + %t124 = getelementptr inbounds %S.ast.Node, ptr %t123, i64 0 + %t125 = load %S.ast.Node, ptr %t124 + %t126 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t125) + %t127 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t126, ptr %a128 + store { ptr, i64, i64 } %t127, ptr %a129 + %t130 = call i32 @finch_str_eq(ptr %a128, ptr %a129) + %t131 = icmp ne i32 %t130, 0 + store { ptr, i64, i64 } %t126, ptr %a132 + call void @finch_str_drop(ptr %a132) + br label %logic.rend3409 +logic.rend3409: + br label %logic.end3406 +logic.end3406: + %t133 = phi i1 [ false, %logic.from3404 ], [ %t131, %logic.rend3409 ] + br i1 %t133, label %then3410, label %endif3412 +then3410: + call void @finch.drop.arr_str(ptr %a17) ret i1 true -endif3201: - %t131 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 9 - store i64 0, ptr %a132 - br label %each.cond3202 -each.cond3202: - %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.body3203, label %each.end3205 -each.body3203: - %t137 = load ptr, ptr %t131 - %t138 = getelementptr inbounds %S.ast.Node, ptr %t137, i64 %t135 - %t139 = load %S.ast.Node, ptr %t138 - store %S.ast.Node %t139, ptr %a140 - %t141 = load ptr, ptr %a1 - %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 %then3206, label %endif3208 -then3206: +endif3412: + %t134 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 9 + store i64 0, ptr %a135 + br label %each.cond3413 +each.cond3413: + %t136 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i32 0, i32 1 + %t137 = load i64, ptr %t136 + %t138 = load i64, ptr %a135 + %t139 = icmp slt i64 %t138, %t137 + br i1 %t139, label %each.body3414, label %each.end3416 +each.body3414: + %t140 = load ptr, ptr %t134 + %t141 = getelementptr inbounds %S.ast.Node, ptr %t140, i64 %t138 + %t142 = load %S.ast.Node, ptr %t141 + store %S.ast.Node %t142, ptr %a143 + %t144 = load ptr, ptr %a1 + %t145 = load { ptr, i64, i64 }, ptr %a2 + %t146 = load %S.ast.Node, ptr %a143 + %t147 = call i1 @finch.gen.mutates(ptr %t144, { ptr, i64, i64 } %t145, %S.ast.Node %t146) + br i1 %t147, label %then3417, label %endif3419 +then3417: + call void @finch.drop.arr_str(ptr %a17) ret i1 true -endif3208: - br label %each.step3204 -each.step3204: - %t145 = load i64, ptr %a132 - %t146 = add i64 %t145, 1 - store i64 %t146, ptr %a132 - br label %each.cond3202 -each.end3205: +endif3419: + br label %each.step3415 +each.step3415: + %t148 = load i64, ptr %a135 + %t149 = add i64 %t148, 1 + store i64 %t149, ptr %a135 + br label %each.cond3413 +each.end3416: + call void @finch.drop.arr_str(ptr %a17) ret i1 false } @@ -31596,2585 +37094,2762 @@ entry: %a7 = alloca i64, align 16 %a24 = alloca { ptr, i64, i64 }, align 16 %a25 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca i64, align 16 - %a59 = alloca %S.ast.Node, align 16 - %a60 = alloca %S.ast.Node, align 16 + %a28 = alloca { ptr, i64, i64 }, align 16 + %a41 = alloca i64, align 16 + %a61 = alloca %S.ast.Node, align 16 %a62 = alloca %S.ast.Node, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 + %a64 = alloca %S.ast.Node, align 16 %a88 = alloca { ptr, i64, i64 }, align 16 + %a89 = 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 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = 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 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca i64, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca i64, align 16 - %a218 = alloca %S.ast.Node, align 16 - %a219 = alloca %S.ast.Node, align 16 - %a221 = alloca %S.ast.Node, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = 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 + %a97 = alloca { ptr, i64, i64 }, align 16 + %a110 = alloca { ptr, i64, i64 }, align 16 + %a111 = alloca { ptr, i64, i64 }, align 16 + %a116 = alloca { ptr, i64, i64 }, align 16 + %a117 = alloca { ptr, i64, i64 }, align 16 + %a122 = alloca { ptr, i64, i64 }, align 16 + %a123 = alloca { ptr, i64, i64 }, align 16 + %a143 = alloca { ptr, i64, i64 }, align 16 + %a144 = alloca { ptr, i64, i64 }, align 16 + %a149 = alloca { ptr, i64, i64 }, align 16 + %a150 = alloca { ptr, i64, i64 }, align 16 + %a170 = alloca i64, align 16 + %a187 = alloca { ptr, i64, i64 }, align 16 + %a188 = alloca { ptr, i64, i64 }, align 16 + %a191 = alloca { ptr, i64, i64 }, align 16 + %a204 = alloca i64, align 16 + %a224 = alloca %S.ast.Node, align 16 + %a225 = alloca %S.ast.Node, align 16 + %a227 = alloca %S.ast.Node, 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 %a258 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca %S.gen.EnumDef, align 16 - %a268 = alloca i64, align 16 - %a270 = alloca i64, align 16 - %a278 = alloca %S.ast.Node, align 16 - %a285 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca i64, align 16 - %a294 = alloca i64, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a300 = 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 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 + %a260 = alloca { ptr, i64, i64 }, align 16 + %a265 = alloca { ptr, i64, i64 }, align 16 + %a266 = alloca { ptr, i64, i64 }, align 16 + %a271 = alloca { ptr, i64, i64 }, align 16 + %a272 = alloca { ptr, i64, i64 }, align 16 + %a275 = alloca %S.gen.EnumDef, align 16 + %a276 = alloca i64, align 16 + %a278 = alloca i64, align 16 + %a286 = alloca %S.ast.Node, align 16 + %a293 = alloca { ptr, i64, i64 }, align 16 + %a299 = alloca i64, align 16 + %a302 = alloca i64, align 16 + %a307 = alloca { ptr, i64, i64 }, align 16 + %a308 = 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 %a322 = 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 - %a326 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca i64, align 16 - %a334 = alloca i64, align 16 - %a347 = alloca { ptr, i64, i64 }, align 16 - %a348 = alloca { ptr, i64, i64 }, align 16 - %a349 = 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 { ptr, i64, i64 }, align 16 - %a358 = 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 + %a332 = alloca { ptr, i64, i64 }, align 16 + %a334 = 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 + %a339 = alloca { ptr, i64, i64 }, align 16 + %a343 = alloca i64, align 16 + %a346 = alloca i64, align 16 %a359 = alloca { ptr, i64, i64 }, align 16 %a360 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca { ptr, i64, i64 }, align 16 + %a361 = alloca { ptr, i64, i64 }, align 16 %a363 = alloca { ptr, i64, i64 }, align 16 %a364 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 + %a365 = alloca { ptr, i64, i64 }, align 16 + %a366 = alloca { ptr, i64, i64 }, align 16 + %a369 = alloca { ptr, i64, i64 }, align 16 %a371 = alloca { ptr, i64, i64 }, align 16 - %a393 = alloca %S.gen.EnumDef, align 16 - %a394 = alloca %S.gen.EnumDef, align 16 - %a410 = alloca i64, align 16 - %a429 = alloca { ptr, i64, i64 }, align 16 - %a430 = alloca { ptr, i64, i64 }, align 16 - %a448 = alloca i64, align 16 - %a460 = alloca i64, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a478 = alloca { ptr, i64, i64 }, align 16 - %a492 = alloca i64, align 16 - %a512 = alloca %S.ast.Node, align 16 - %a513 = alloca %S.ast.Node, align 16 - %a515 = alloca %S.ast.Node, align 16 - %a535 = alloca { ptr, i64, i64 }, align 16 - %a536 = alloca { ptr, i64, i64 }, align 16 - %a537 = 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 + %a372 = alloca { ptr, i64, i64 }, align 16 + %a373 = alloca { ptr, i64, i64 }, align 16 + %a374 = alloca { ptr, i64, i64 }, align 16 + %a375 = 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 + %a380 = alloca { ptr, i64, i64 }, align 16 + %a382 = alloca { ptr, i64, i64 }, align 16 + %a387 = alloca { ptr, i64, i64 }, align 16 + %a388 = alloca { ptr, i64, i64 }, align 16 + %a410 = alloca %S.gen.EnumDef, align 16 + %a411 = alloca %S.gen.EnumDef, align 16 + %a427 = alloca i64, align 16 + %a446 = alloca { ptr, i64, i64 }, align 16 + %a447 = alloca { ptr, i64, i64 }, align 16 + %a465 = alloca i64, align 16 + %a477 = alloca i64, align 16 + %a494 = alloca { ptr, i64, i64 }, align 16 + %a495 = alloca { ptr, i64, i64 }, align 16 + %a498 = alloca { ptr, i64, i64 }, align 16 + %a511 = alloca i64, align 16 + %a531 = alloca %S.ast.Node, align 16 + %a532 = alloca %S.ast.Node, align 16 + %a534 = alloca %S.ast.Node, align 16 + %a554 = alloca { ptr, i64, i64 }, align 16 + %a555 = 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 + %a560 = alloca { ptr, i64, i64 }, align 16 %a561 = alloca { ptr, i64, i64 }, align 16 - %a562 = alloca { ptr, i64, i64 }, align 16 %a563 = alloca { ptr, i64, i64 }, align 16 - %a565 = alloca { ptr, i64, i64 }, align 16 - %a566 = alloca { ptr, i64, i64 }, align 16 - %a567 = alloca { ptr, i64, i64 }, align 16 - %a577 = alloca { ptr, i64, i64 }, align 16 - %a578 = alloca { ptr, i64, i64 }, align 16 + %a582 = alloca { ptr, i64, i64 }, align 16 %a583 = alloca { ptr, i64, i64 }, align 16 %a584 = alloca { ptr, i64, i64 }, align 16 + %a586 = 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 - %a590 = alloca { ptr, i64, i64 }, align 16 - %a595 = alloca { ptr, i64, i64 }, align 16 - %a596 = alloca { ptr, i64, i64 }, align 16 - %a611 = alloca { ptr, i64, i64 }, align 16 + %a591 = alloca { ptr, i64, i64 }, align 16 + %a600 = alloca { ptr, i64, i64 }, align 16 + %a601 = alloca { ptr, i64, i64 }, align 16 + %a606 = alloca { ptr, i64, i64 }, align 16 + %a607 = alloca { ptr, i64, i64 }, align 16 %a612 = alloca { ptr, i64, i64 }, align 16 - %a614 = alloca { ptr, i64, i64 }, align 16 - %a615 = alloca i1, align 16 - %a642 = alloca { ptr, i64, i64 }, align 16 - %a643 = alloca { ptr, i64, i64 }, align 16 - %a644 = alloca { ptr, i64, i64 }, align 16 - %a646 = alloca { ptr, i64, i64 }, align 16 - %a647 = alloca { ptr, i64, i64 }, align 16 - %a648 = 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 - %a656 = alloca { ptr, i64, i64 }, align 16 - %a657 = alloca { ptr, i64, i64 }, align 16 - %a658 = alloca { ptr, i64, i64 }, align 16 - %a672 = alloca i64, align 16 - %a691 = alloca { ptr, i64, i64 }, align 16 - %a692 = alloca { ptr, i64, i64 }, align 16 - %a693 = alloca { ptr, i64, i64 }, align 16 - %a695 = alloca { ptr, i64, i64 }, align 16 - %a696 = alloca { ptr, i64, i64 }, align 16 - %a697 = alloca { ptr, i64, i64 }, align 16 - %a711 = alloca { ptr, i64, i64 }, align 16 - %a712 = alloca { ptr, i64, i64 }, align 16 + %a613 = alloca { ptr, i64, i64 }, align 16 + %a618 = alloca { ptr, i64, i64 }, align 16 + %a619 = alloca { ptr, i64, i64 }, align 16 + %a634 = alloca { ptr, i64, i64 }, align 16 + %a635 = alloca { ptr, i64, i64 }, align 16 + %a637 = alloca { ptr, i64, i64 }, align 16 + %a638 = alloca i1, align 16 + %a665 = alloca { ptr, i64, i64 }, align 16 + %a666 = alloca { ptr, i64, i64 }, align 16 + %a667 = alloca { ptr, i64, i64 }, align 16 + %a669 = 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 + %a676 = alloca { ptr, i64, i64 }, align 16 + %a677 = alloca { ptr, i64, i64 }, align 16 + %a678 = alloca { ptr, i64, i64 }, align 16 + %a679 = 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 + %a684 = alloca { ptr, i64, i64 }, align 16 + %a686 = alloca { ptr, i64, i64 }, align 16 + %a699 = alloca 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 + %a720 = 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 + %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 - %a742 = alloca i64, align 16 - %a745 = alloca i64, align 16 - %a750 = alloca { ptr, i64, i64 }, align 16 - %a751 = alloca { ptr, i64, i64 }, align 16 + %a729 = alloca { ptr, i64, i64 }, align 16 + %a742 = alloca { ptr, i64, i64 }, align 16 + %a743 = alloca { ptr, i64, i64 }, align 16 + %a744 = alloca { ptr, i64, i64 }, align 16 + %a746 = alloca { ptr, i64, i64 }, align 16 + %a747 = alloca { ptr, i64, i64 }, align 16 + %a748 = alloca { ptr, i64, i64 }, align 16 + %a749 = 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 + %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 %a761 = alloca { ptr, i64, i64 }, align 16 - %a762 = alloca { ptr, i64, i64 }, align 16 %a763 = 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 - %a771 = alloca { ptr, i64, i64 }, align 16 - %a772 = alloca { ptr, i64, i64 }, align 16 - %a773 = 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 - %a792 = alloca { ptr, i64, i64 }, align 16 - %a793 = alloca { ptr, i64, i64 }, align 16 - %a794 = 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 %a796 = alloca { ptr, i64, i64 }, align 16 %a797 = alloca { ptr, i64, i64 }, align 16 %a798 = alloca { ptr, i64, i64 }, align 16 + %a800 = alloca { ptr, i64, i64 }, align 16 + %a801 = alloca { ptr, i64, i64 }, align 16 + %a802 = alloca { ptr, i64, i64 }, align 16 + %a803 = alloca { ptr, i64, i64 }, align 16 %a807 = alloca { ptr, i64, i64 }, align 16 %a808 = alloca { ptr, i64, i64 }, align 16 %a809 = alloca { ptr, i64, i64 }, align 16 - %a811 = alloca { ptr, i64, i64 }, align 16 + %a810 = alloca { ptr, i64, i64 }, align 16 %a812 = alloca { ptr, i64, i64 }, align 16 %a813 = alloca { ptr, i64, i64 }, align 16 - %a819 = alloca { ptr, i64, i64 }, align 16 - %a820 = alloca { ptr, i64, i64 }, align 16 - %a825 = alloca { ptr, i64, i64 }, align 16 - %a826 = 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 %a831 = alloca { ptr, i64, i64 }, align 16 %a832 = alloca { ptr, i64, i64 }, align 16 + %a833 = 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 - %a852 = alloca %S.gen.FnSig, align 16 - %a858 = alloca { ptr, i64, i64 }, align 16 - %a859 = alloca { ptr, i64, i64 }, align 16 - %a860 = alloca { ptr, i64, i64 }, align 16 + %a838 = alloca { ptr, i64, i64 }, align 16 + %a840 = 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 + %a855 = alloca { ptr, i64, i64 }, align 16 + %a857 = alloca { ptr, i64, i64 }, align 16 %a862 = alloca { ptr, i64, i64 }, align 16 %a863 = 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 - %a870 = alloca { ptr, i64, i64 }, align 16 - %a882 = alloca { ptr, i64, i64 }, align 16 - %a883 = alloca { ptr, i64, i64 }, align 16 - %a884 = alloca { ptr, i64, i64 }, align 16 - %a886 = alloca { ptr, i64, i64 }, align 16 - %a887 = alloca { ptr, i64, i64 }, align 16 - %a888 = alloca { ptr, i64, i64 }, align 16 - %a892 = alloca { ptr, i64, i64 }, align 16 - %a893 = alloca { ptr, i64, i64 }, align 16 - %a894 = 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 + %a874 = alloca { ptr, i64, i64 }, align 16 + %a875 = alloca { ptr, i64, i64 }, align 16 + %a879 = alloca { ptr, i64, i64 }, align 16 + %a880 = alloca { ptr, i64, i64 }, align 16 + %a895 = alloca %S.gen.FnSig, align 16 + %a901 = alloca { ptr, i64, i64 }, align 16 %a902 = alloca { ptr, i64, i64 }, align 16 %a903 = alloca { ptr, i64, i64 }, align 16 %a904 = alloca { ptr, i64, i64 }, align 16 - %a917 = alloca i64, align 16 - %a929 = 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 + %a913 = alloca { ptr, i64, i64 }, align 16 + %a914 = alloca { ptr, i64, i64 }, align 16 + %a915 = alloca { ptr, i64, i64 }, align 16 + %a916 = alloca { ptr, i64, i64 }, align 16 + %a920 = alloca { ptr, i64, i64 }, align 16 %a930 = alloca { ptr, i64, i64 }, align 16 + %a931 = alloca { ptr, i64, i64 }, align 16 + %a932 = alloca { ptr, i64, i64 }, align 16 + %a933 = alloca { ptr, i64, i64 }, align 16 + %a935 = 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 + %a942 = alloca { ptr, i64, i64 }, align 16 + %a943 = alloca { ptr, i64, i64 }, align 16 + %a944 = alloca { ptr, i64, i64 }, align 16 + %a945 = alloca { ptr, i64, i64 }, align 16 + %a947 = alloca { ptr, i64, i64 }, align 16 + %a948 = alloca { ptr, i64, i64 }, align 16 %a949 = alloca { ptr, i64, i64 }, align 16 %a950 = alloca { ptr, i64, i64 }, align 16 - %a951 = alloca { ptr, i64, i64 }, align 16 - %a953 = alloca { ptr, i64, i64 }, align 16 %a954 = alloca { ptr, i64, i64 }, align 16 %a955 = alloca { ptr, i64, i64 }, align 16 - %a993 = alloca { ptr, i64, i64 }, align 16 - %a994 = alloca { ptr, i64, i64 }, align 16 - %a1012 = alloca %S.gen.FnSig, align 16 - %a1013 = alloca %S.gen.FnSig, align 16 - %a1023 = alloca i1, align 16 - %a1030 = alloca i64, align 16 - %a1096 = alloca %S.ast.Node, align 16 - %a1097 = alloca %S.ast.Node, align 16 - %a1099 = alloca %S.ast.Node, align 16 - %a1138 = alloca { ptr, i64, i64 }, align 16 - %a1139 = alloca { ptr, i64, i64 }, align 16 - %a1152 = alloca i64, align 16 - %a1165 = alloca %S.gen.Template, align 16 - %a1166 = alloca %S.gen.Template, align 16 - %a1168 = alloca %S.gen.Template, align 16 - %a1196 = alloca %S.ast.Node, align 16 - %a1197 = alloca %S.ast.Node, align 16 - %a1199 = alloca %S.ast.Node, align 16 - %a1229 = alloca { ptr, i64, i64 }, align 16 - %a1230 = alloca { ptr, i64, i64 }, align 16 - %a1243 = alloca i64, align 16 - %a1283 = alloca %S.ast.Node, align 16 - %a1284 = alloca %S.ast.Node, align 16 - %a1286 = alloca %S.ast.Node, align 16 - %a1298 = alloca %S.ast.Node, align 16 - %a1299 = alloca %S.ast.Node, align 16 - %a1301 = alloca %S.ast.Node, align 16 - %a1314 = alloca i64, align 16 - %a1334 = alloca %S.ast.Type, align 16 - %a1335 = alloca %S.ast.Type, align 16 - %a1337 = alloca %S.ast.Type, align 16 + %a956 = alloca { ptr, i64, i64 }, align 16 + %a957 = alloca { ptr, i64, i64 }, align 16 + %a961 = alloca { ptr, i64, i64 }, align 16 + %a969 = alloca %S.ast.Type, align 16 + %a974 = alloca i64, align 16 + %a986 = alloca { ptr, i64, i64 }, align 16 + %a987 = alloca { ptr, i64, i64 }, align 16 + %a1006 = alloca { ptr, i64, i64 }, align 16 + %a1007 = alloca { ptr, i64, i64 }, align 16 + %a1008 = 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 + %a1015 = alloca { ptr, i64, i64 }, align 16 + %a1052 = alloca { ptr, i64, i64 }, align 16 + %a1053 = alloca { ptr, i64, i64 }, align 16 + %a1071 = alloca %S.gen.FnSig, align 16 + %a1072 = alloca %S.gen.FnSig, align 16 + %a1082 = alloca i1, align 16 + %a1089 = alloca i64, align 16 + %a1155 = alloca %S.ast.Node, align 16 + %a1156 = alloca %S.ast.Node, align 16 + %a1158 = alloca %S.ast.Node, align 16 + %a1197 = alloca { ptr, i64, i64 }, align 16 + %a1198 = alloca { ptr, i64, i64 }, align 16 + %a1211 = alloca i64, align 16 + %a1224 = alloca %S.gen.Template, align 16 + %a1225 = alloca %S.gen.Template, align 16 + %a1227 = alloca %S.gen.Template, align 16 + %a1255 = alloca %S.ast.Node, align 16 + %a1256 = alloca %S.ast.Node, align 16 + %a1258 = alloca %S.ast.Node, align 16 + %a1288 = alloca { ptr, i64, i64 }, align 16 + %a1289 = alloca { ptr, i64, i64 }, align 16 + %a1302 = alloca i64, align 16 + %a1342 = alloca %S.ast.Node, align 16 + %a1343 = alloca %S.ast.Node, align 16 + %a1345 = alloca %S.ast.Node, align 16 + %a1357 = alloca %S.ast.Node, align 16 + %a1358 = alloca %S.ast.Node, align 16 + %a1360 = alloca %S.ast.Node, align 16 + %a1373 = alloca i64, align 16 + %a1393 = alloca %S.ast.Type, align 16 + %a1394 = alloca %S.ast.Type, align 16 + %a1396 = alloca %S.ast.Type, align 16 store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic3209, label %ok3210 -panic3209: - call void @finch_panic(ptr @.str.2067, i64 1296, ptr @.str.2068) + br i1 %t3, label %panic3420, label %ok3421 +panic3420: + call void @finch_panic(ptr @.str.2152, i64 1444, ptr @.str.2153) unreachable -ok3210: +ok3421: %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.cond3211 -for.cond3211: + br label %for.cond3422 +for.cond3422: %t8 = load i64, ptr %a7 %t9 = icmp slt i64 %t8, %t6 - br i1 %t9, label %for.body3212, label %for.end3214 -for.body3212: + br i1 %t9, label %for.body3423, label %for.end3425 +for.body3423: %t10 = load ptr, ptr %a1 %t11 = icmp eq ptr %t10, null - br i1 %t11, label %panic3215, label %ok3216 -panic3215: - call void @finch_panic(ptr @.str.2069, i64 1297, ptr @.str.2070) + br i1 %t11, label %panic3426, label %ok3427 +panic3426: + call void @finch_panic(ptr @.str.2154, i64 1445, ptr @.str.2155) unreachable -ok3216: +ok3427: %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 %range3217, label %inrange3218 -range3217: - call void @finch_panic_index(ptr @.str.2071, i64 1297, i64 %t13, i64 %t15) + br i1 %t16, label %range3428, label %inrange3429 +range3428: + call void @finch_panic_index(ptr @.str.2156, i64 1445, i64 %t13, i64 %t15) unreachable -inrange3218: +inrange3429: %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 %panic3219, label %ok3220 -panic3219: - call void @finch_panic(ptr @.str.2072, i64 1297, ptr @.str.2073) + br i1 %t22, label %panic3430, label %ok3431 +panic3430: + call void @finch_panic(ptr @.str.2157, i64 1445, ptr @.str.2158) unreachable -ok3220: - %t23 = getelementptr inbounds %S.gen.Gen, ptr %t21, i32 0, i32 13 +ok3431: + %t23 = getelementptr inbounds %S.gen.Gen, ptr %t21, i32 0, i32 14 store { ptr, i64, i64 } %t20, ptr %a24 call void @finch_str_copy(ptr %a25, ptr %a24) %t26 = load { ptr, i64, i64 }, ptr %a25 + %t27 = load { ptr, i64, i64 }, ptr %t23 store { ptr, i64, i64 } %t26, ptr %t23 - %t27 = load ptr, ptr %a1 - %t28 = icmp eq ptr %t27, null - br i1 %t28, label %panic3221, label %ok3222 -panic3221: - call void @finch_panic(ptr @.str.2074, i64 1298, ptr @.str.2075) + store { ptr, i64, i64 } %t27, ptr %a28 + call void @finch_str_drop(ptr %a28) + %t29 = load ptr, ptr %a1 + %t30 = icmp eq ptr %t29, null + br i1 %t30, label %panic3432, label %ok3433 +panic3432: + call void @finch_panic(ptr @.str.2159, i64 1446, ptr @.str.2160) unreachable -ok3222: - %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 %range3223, label %inrange3224 -range3223: - call void @finch_panic_index(ptr @.str.2076, i64 1298, i64 %t30, i64 %t32) +ok3433: + %t31 = getelementptr inbounds %S.gen.Gen, ptr %t29, i32 0, i32 0 + %t32 = load i64, ptr %a7 + %t33 = load { ptr, i64, i64 }, ptr %t31 + %t34 = extractvalue { ptr, i64, i64 } %t33, 1 + %t35 = icmp uge i64 %t32, %t34 + br i1 %t35, label %range3434, label %inrange3435 +range3434: + call void @finch_panic_index(ptr @.str.2161, i64 1446, i64 %t32, i64 %t34) unreachable -inrange3224: - %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.cond3225 -for.cond3225: - %t40 = load i64, ptr %a39 - %t41 = icmp slt i64 %t40, %t38 - br i1 %t41, label %for.body3226, label %for.end3228 -for.body3226: - %t42 = load ptr, ptr %a1 - %t43 = icmp eq ptr %t42, null - br i1 %t43, label %panic3229, label %ok3230 -panic3229: - call void @finch_panic(ptr @.str.2077, i64 1299, ptr @.str.2078) +inrange3435: + %t36 = extractvalue { ptr, i64, i64 } %t33, 0 + %t37 = getelementptr inbounds %S.ast.Program, ptr %t36, i64 %t32 + %t38 = getelementptr inbounds %S.ast.Program, ptr %t37, i32 0, i32 6 + %t39 = getelementptr inbounds { ptr, i64, i64 }, ptr %t38, i32 0, i32 1 + %t40 = load i64, ptr %t39 + store i64 0, ptr %a41 + br label %for.cond3436 +for.cond3436: + %t42 = load i64, ptr %a41 + %t43 = icmp slt i64 %t42, %t40 + br i1 %t43, label %for.body3437, label %for.end3439 +for.body3437: + %t44 = load ptr, ptr %a1 + %t45 = icmp eq ptr %t44, null + br i1 %t45, label %panic3440, label %ok3441 +panic3440: + call void @finch_panic(ptr @.str.2162, i64 1447, ptr @.str.2163) unreachable -ok3230: - %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 %range3231, label %inrange3232 -range3231: - call void @finch_panic_index(ptr @.str.2079, i64 1299, i64 %t45, i64 %t47) +ok3441: + %t46 = getelementptr inbounds %S.gen.Gen, ptr %t44, i32 0, i32 0 + %t47 = load i64, ptr %a7 + %t48 = load { ptr, i64, i64 }, ptr %t46 + %t49 = extractvalue { ptr, i64, i64 } %t48, 1 + %t50 = icmp uge i64 %t47, %t49 + br i1 %t50, label %range3442, label %inrange3443 +range3442: + call void @finch_panic_index(ptr @.str.2164, i64 1447, i64 %t47, i64 %t49) unreachable -inrange3232: - %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 - %t52 = load i64, ptr %a39 - %t53 = load { ptr, i64, i64 }, ptr %t51 - %t54 = extractvalue { ptr, i64, i64 } %t53, 1 - %t55 = icmp uge i64 %t52, %t54 - br i1 %t55, label %range3233, label %inrange3234 -range3233: - call void @finch_panic_index(ptr @.str.2080, i64 1299, i64 %t52, i64 %t54) +inrange3443: + %t51 = extractvalue { ptr, i64, i64 } %t48, 0 + %t52 = getelementptr inbounds %S.ast.Program, ptr %t51, i64 %t47 + %t53 = getelementptr inbounds %S.ast.Program, ptr %t52, i32 0, i32 6 + %t54 = load i64, ptr %a41 + %t55 = load { ptr, i64, i64 }, ptr %t53 + %t56 = extractvalue { ptr, i64, i64 } %t55, 1 + %t57 = icmp uge i64 %t54, %t56 + br i1 %t57, label %range3444, label %inrange3445 +range3444: + call void @finch_panic_index(ptr @.str.2165, i64 1447, i64 %t54, i64 %t56) unreachable -inrange3234: - %t56 = extractvalue { ptr, i64, i64 } %t53, 0 - %t57 = getelementptr inbounds %S.ast.Node, ptr %t56, i64 %t52 - %t58 = load %S.ast.Node, ptr %t57 - store %S.ast.Node %t58, ptr %a59 - call void @finch.copy.S_ast_Node(ptr %a60, ptr %a59) - %t61 = load %S.ast.Node, ptr %a60 - store %S.ast.Node %t61, ptr %a62 - %t63 = load ptr, ptr %a1 - %t64 = load ptr, ptr %a1 - %t65 = icmp eq ptr %t64, null - br i1 %t65, label %panic3235, label %ok3236 -panic3235: - call void @finch_panic(ptr @.str.2081, i64 1300, ptr @.str.2082) +inrange3445: + %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 = load ptr, ptr %a1 + %t66 = load ptr, ptr %a1 + %t67 = icmp eq ptr %t66, null + br i1 %t67, label %panic3446, label %ok3447 +panic3446: + call void @finch_panic(ptr @.str.2166, i64 1448, ptr @.str.2167) unreachable -ok3236: - %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 +ok3447: + %t68 = getelementptr inbounds %S.gen.Gen, ptr %t66, i32 0, i32 14 %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.from3237 -logic.from3237: - br i1 %t71, label %logic.end3239, label %logic.rhs3238 -logic.rhs3238: - %t72 = load ptr, ptr %a1 - %t73 = load ptr, ptr %a1 - %t74 = icmp eq ptr %t73, null - br i1 %t74, label %panic3240, label %ok3241 -panic3240: - call void @finch_panic(ptr @.str.2083, i64 1300, ptr @.str.2084) + %t70 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 1 + %t71 = load { ptr, i64, i64 }, ptr %t70 + %t72 = call i64 @finch.gen.findStruct(ptr %t65, { ptr, i64, i64 } %t69, { ptr, i64, i64 } %t71) + %t73 = icmp sge i64 %t72, 0 + br label %logic.from3448 +logic.from3448: + br i1 %t73, label %logic.end3450, label %logic.rhs3449 +logic.rhs3449: + %t74 = load ptr, ptr %a1 + %t75 = load ptr, ptr %a1 + %t76 = icmp eq ptr %t75, null + br i1 %t76, label %panic3451, label %ok3452 +panic3451: + call void @finch_panic(ptr @.str.2168, i64 1448, ptr @.str.2169) unreachable -ok3241: - %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 +ok3452: + %t77 = getelementptr inbounds %S.gen.Gen, ptr %t75, i32 0, i32 14 %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.2085, i64 0, i64 0 }, i1 true) - %t80 = icmp sge i64 %t79, 0 - br label %logic.rend3242 -logic.rend3242: - br label %logic.end3239 -logic.end3239: - %t81 = phi i1 [ true, %logic.from3237 ], [ %t80, %logic.rend3242 ] - br i1 %t81, label %then3243, label %endif3245 -then3243: - %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.2086, 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.2087, 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 %endif3245 -endif3245: - %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 %then3246, label %endif3248 -then3246: - %t98 = load ptr, ptr %a1 - %t99 = icmp eq ptr %t98, null - br i1 %t99, label %panic3249, label %ok3250 -panic3249: - call void @finch_panic(ptr @.str.2088, i64 1305, ptr @.str.2089) - unreachable -ok3250: - %t100 = getelementptr inbounds %S.gen.Gen, ptr %t98, i32 0, i32 16 - %t101 = getelementptr inbounds { ptr, i64, i64 }, ptr %t100, i32 0, i32 1 + %t79 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 1 + %t80 = load { ptr, i64, i64 }, ptr %t79 + %t81 = call i64 @finch.gen.findTemplate(ptr %t74, { ptr, i64, i64 } %t78, { ptr, i64, i64 } %t80, { ptr, i64, i64 } { ptr @.str.2170, i64 0, i64 0 }, i1 true) + %t82 = icmp sge i64 %t81, 0 + br label %logic.rend3453 +logic.rend3453: + br label %logic.end3450 +logic.end3450: + %t83 = phi i1 [ true, %logic.from3448 ], [ %t82, %logic.rend3453 ] + br i1 %t83, label %then3454, label %endif3456 +then3454: + %t84 = load ptr, ptr %a1 + %t85 = load %S.ast.Node, ptr %a64 + %t86 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 1 + %t87 = load { ptr, i64, i64 }, ptr %t86 + store { ptr, i64, i64 } { ptr @.str.2171, i64 12, 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.2172, i64 18, i64 0 }, ptr %a94 + call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) + store { ptr, i64, i64 } %t91, ptr %a95 + call void @finch_str_drop(ptr %a95) + %t96 = load { ptr, i64, i64 }, ptr %a92 + call void @finch.gen.fail(ptr %t84, %S.ast.Node %t85, { ptr, i64, i64 } %t96) + store { ptr, i64, i64 } %t96, ptr %a97 + call void @finch_str_drop(ptr %a97) + br label %endif3456 +endif3456: + %t98 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 3 + %t99 = getelementptr inbounds { ptr, i64, i64 }, ptr %t98, i32 0, i32 1 + %t100 = load i64, ptr %t99 + %t101 = icmp sgt i64 %t100, 0 + br i1 %t101, label %then3457, label %endif3459 +then3457: %t102 = load ptr, ptr %a1 %t103 = icmp eq ptr %t102, null - br i1 %t103, label %panic3251, label %ok3252 -panic3251: - call void @finch_panic(ptr @.str.2090, i64 1305, ptr @.str.2091) + br i1 %t103, label %panic3460, label %ok3461 +panic3460: + call void @finch_panic(ptr @.str.2173, i64 1453, ptr @.str.2174) unreachable -ok3252: - %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 - call void @finch_str_copy(ptr %a107, ptr %a106) - %t108 = load { ptr, i64, i64 }, ptr %a107 - %t109 = insertvalue %S.gen.Template zeroinitializer, { ptr, i64, i64 } %t108, 0 - %t110 = getelementptr inbounds %S.ast.Node, ptr %a62, i32 0, i32 1 - %t111 = load { ptr, i64, i64 }, ptr %t110 - store { ptr, i64, i64 } %t111, ptr %a112 - call void @finch_str_copy(ptr %a113, ptr %a112) - %t114 = load { ptr, i64, i64 }, ptr %a113 - %t115 = insertvalue %S.gen.Template %t109, { ptr, i64, i64 } %t114, 1 - %t116 = getelementptr inbounds %S.ast.Node, ptr %a62, i32 0, i32 3 - %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 - %t121 = insertvalue %S.gen.Template %t115, { ptr, i64, i64 } %t120, 3 - %t122 = load i64, ptr %a7 - %t123 = insertvalue %S.gen.Template %t121, i64 %t122, 4 - %t124 = load i64, ptr %a39 - %t125 = insertvalue %S.gen.Template %t123, i64 %t124, 5 - %t126 = insertvalue %S.gen.Template %t125, i1 true, 6 - %t127 = load i64, ptr %t101 - %t128 = add i64 %t127, 1 - call void @finch_arr_reserve(ptr %t100, i64 %t128, i64 ptrtoint (ptr getelementptr (%S.gen.Template, ptr null, i32 1) to i64)) - %t129 = load ptr, ptr %t100 - %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.step3227 -endif3248: - %t131 = load ptr, ptr %a1 - %t132 = icmp eq ptr %t131, null - br i1 %t132, label %panic3253, label %ok3254 -panic3253: - call void @finch_panic(ptr @.str.2092, i64 1308, ptr @.str.2093) +ok3461: + %t104 = getelementptr inbounds %S.gen.Gen, ptr %t102, i32 0, i32 17 + %t105 = getelementptr inbounds { ptr, i64, i64 }, ptr %t104, i32 0, i32 1 + %t106 = load ptr, ptr %a1 + %t107 = icmp eq ptr %t106, null + br i1 %t107, label %panic3462, label %ok3463 +panic3462: + call void @finch_panic(ptr @.str.2175, i64 1453, ptr @.str.2176) unreachable -ok3254: - %t133 = getelementptr inbounds %S.gen.Gen, ptr %t131, i32 0, i32 15 - %t134 = getelementptr inbounds { ptr, i64, i64 }, ptr %t133, i32 0, i32 1 +ok3463: + %t108 = getelementptr inbounds %S.gen.Gen, ptr %t106, i32 0, i32 14 + %t109 = load { ptr, i64, i64 }, ptr %t108 + store { ptr, i64, i64 } %t109, ptr %a110 + call void @finch_str_copy(ptr %a111, ptr %a110) + %t112 = load { ptr, i64, i64 }, ptr %a111 + %t113 = insertvalue %S.gen.Template zeroinitializer, { ptr, i64, i64 } %t112, 0 + %t114 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 1 + %t115 = load { ptr, i64, i64 }, ptr %t114 + store { ptr, i64, i64 } %t115, ptr %a116 + call void @finch_str_copy(ptr %a117, ptr %a116) + %t118 = load { ptr, i64, i64 }, ptr %a117 + %t119 = insertvalue %S.gen.Template %t113, { ptr, i64, i64 } %t118, 1 + %t120 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 3 + %t121 = load { ptr, i64, i64 }, ptr %t120 + store { ptr, i64, i64 } %t121, ptr %a122 + call void @finch.copy.arr_str(ptr %a123, ptr %a122) + %t124 = load { ptr, i64, i64 }, ptr %a123 + %t125 = insertvalue %S.gen.Template %t119, { ptr, i64, i64 } %t124, 3 + %t126 = load i64, ptr %a7 + %t127 = insertvalue %S.gen.Template %t125, i64 %t126, 4 + %t128 = load i64, ptr %a41 + %t129 = insertvalue %S.gen.Template %t127, i64 %t128, 5 + %t130 = insertvalue %S.gen.Template %t129, i1 true, 6 + %t131 = load i64, ptr %t105 + %t132 = add i64 %t131, 1 + call void @finch_arr_reserve(ptr %t104, i64 %t132, i64 ptrtoint (ptr getelementptr (%S.gen.Template, ptr null, i32 1) to i64)) + %t133 = load ptr, ptr %t104 + %t134 = getelementptr inbounds %S.gen.Template, ptr %t133, i64 %t131 + store %S.gen.Template %t130, ptr %t134 + store i64 %t132, ptr %t105 + call void @finch.drop.S_ast_Node(ptr %a64) + br label %for.step3438 +endif3459: %t135 = load ptr, ptr %a1 %t136 = icmp eq ptr %t135, null - br i1 %t136, label %panic3255, label %ok3256 -panic3255: - call void @finch_panic(ptr @.str.2094, i64 1308, ptr @.str.2095) + br i1 %t136, label %panic3464, label %ok3465 +panic3464: + call void @finch_panic(ptr @.str.2177, i64 1456, ptr @.str.2178) unreachable -ok3256: - %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 - call void @finch_str_copy(ptr %a140, ptr %a139) - %t141 = load { ptr, i64, i64 }, ptr %a140 - %t142 = insertvalue %S.gen.StructDef zeroinitializer, { ptr, i64, i64 } %t141, 0 - %t143 = getelementptr inbounds %S.ast.Node, ptr %a62, i32 0, i32 1 - %t144 = load { ptr, i64, i64 }, ptr %t143 - store { ptr, i64, i64 } %t144, ptr %a145 - call void @finch_str_copy(ptr %a146, ptr %a145) - %t147 = load { ptr, i64, i64 }, ptr %a146 - %t148 = insertvalue %S.gen.StructDef %t142, { ptr, i64, i64 } %t147, 1 - %t149 = load i64, ptr %a7 - %t150 = insertvalue %S.gen.StructDef %t148, i64 %t149, 13 - %t151 = load i64, ptr %a39 - %t152 = insertvalue %S.gen.StructDef %t150, i64 %t151, 14 - %t153 = load i64, ptr %t134 - %t154 = add i64 %t153, 1 - call void @finch_arr_reserve(ptr %t133, i64 %t154, i64 ptrtoint (ptr getelementptr (%S.gen.StructDef, ptr null, i32 1) to i64)) - %t155 = load ptr, ptr %t133 - %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.step3227 -for.step3227: - %t157 = load i64, ptr %a39 +ok3465: + %t137 = getelementptr inbounds %S.gen.Gen, ptr %t135, i32 0, i32 16 + %t138 = getelementptr inbounds { ptr, i64, i64 }, ptr %t137, i32 0, i32 1 + %t139 = load ptr, ptr %a1 + %t140 = icmp eq ptr %t139, null + br i1 %t140, label %panic3466, label %ok3467 +panic3466: + call void @finch_panic(ptr @.str.2179, i64 1456, ptr @.str.2180) + unreachable +ok3467: + %t141 = getelementptr inbounds %S.gen.Gen, ptr %t139, i32 0, i32 14 + %t142 = load { ptr, i64, i64 }, ptr %t141 + store { ptr, i64, i64 } %t142, ptr %a143 + call void @finch_str_copy(ptr %a144, ptr %a143) + %t145 = load { ptr, i64, i64 }, ptr %a144 + %t146 = insertvalue %S.gen.StructDef zeroinitializer, { ptr, i64, i64 } %t145, 0 + %t147 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 1 + %t148 = load { ptr, i64, i64 }, ptr %t147 + store { ptr, i64, i64 } %t148, ptr %a149 + call void @finch_str_copy(ptr %a150, ptr %a149) + %t151 = load { ptr, i64, i64 }, ptr %a150 + %t152 = insertvalue %S.gen.StructDef %t146, { ptr, i64, i64 } %t151, 1 + %t153 = load i64, ptr %a7 + %t154 = insertvalue %S.gen.StructDef %t152, i64 %t153, 13 + %t155 = load i64, ptr %a41 + %t156 = insertvalue %S.gen.StructDef %t154, i64 %t155, 14 + %t157 = load i64, ptr %t138 %t158 = add i64 %t157, 1 - store i64 %t158, ptr %a39 - br label %for.cond3225 -for.end3228: - br label %for.step3213 -for.step3213: - %t159 = load i64, ptr %a7 - %t160 = add i64 %t159, 1 - store i64 %t160, ptr %a7 - br label %for.cond3211 -for.end3214: - %t161 = load ptr, ptr %a1 - %t162 = icmp eq ptr %t161, null - br i1 %t162, label %panic3257, label %ok3258 -panic3257: - call void @finch_panic(ptr @.str.2096, i64 1311, ptr @.str.2097) + call void @finch_arr_reserve(ptr %t137, i64 %t158, i64 ptrtoint (ptr getelementptr (%S.gen.StructDef, ptr null, i32 1) to i64)) + %t159 = load ptr, ptr %t137 + %t160 = getelementptr inbounds %S.gen.StructDef, ptr %t159, i64 %t157 + store %S.gen.StructDef %t156, ptr %t160 + store i64 %t158, ptr %t138 + call void @finch.drop.S_ast_Node(ptr %a64) + br label %for.step3438 +for.step3438: + %t161 = load i64, ptr %a41 + %t162 = add i64 %t161, 1 + store i64 %t162, ptr %a41 + br label %for.cond3436 +for.end3439: + br label %for.step3424 +for.step3424: + %t163 = load i64, ptr %a7 + %t164 = add i64 %t163, 1 + store i64 %t164, ptr %a7 + br label %for.cond3422 +for.end3425: + %t165 = load ptr, ptr %a1 + %t166 = icmp eq ptr %t165, null + br i1 %t166, label %panic3468, label %ok3469 +panic3468: + call void @finch_panic(ptr @.str.2181, i64 1459, ptr @.str.2182) unreachable -ok3258: - %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.cond3259 -for.cond3259: - %t167 = load i64, ptr %a166 - %t168 = icmp slt i64 %t167, %t165 - br i1 %t168, label %for.body3260, label %for.end3262 -for.body3260: - %t169 = load ptr, ptr %a1 - %t170 = icmp eq ptr %t169, null - br i1 %t170, label %panic3263, label %ok3264 -panic3263: - call void @finch_panic(ptr @.str.2098, i64 1312, ptr @.str.2099) +ok3469: + %t167 = getelementptr inbounds %S.gen.Gen, ptr %t165, i32 0, i32 0 + %t168 = getelementptr inbounds { ptr, i64, i64 }, ptr %t167, i32 0, i32 1 + %t169 = load i64, ptr %t168 + store i64 0, ptr %a170 + br label %for.cond3470 +for.cond3470: + %t171 = load i64, ptr %a170 + %t172 = icmp slt i64 %t171, %t169 + br i1 %t172, label %for.body3471, label %for.end3473 +for.body3471: + %t173 = load ptr, ptr %a1 + %t174 = icmp eq ptr %t173, null + br i1 %t174, label %panic3474, label %ok3475 +panic3474: + call void @finch_panic(ptr @.str.2183, i64 1460, ptr @.str.2184) unreachable -ok3264: - %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 %range3265, label %inrange3266 -range3265: - call void @finch_panic_index(ptr @.str.2100, i64 1312, i64 %t172, i64 %t174) +ok3475: + %t175 = getelementptr inbounds %S.gen.Gen, ptr %t173, i32 0, i32 0 + %t176 = load i64, ptr %a170 + %t177 = load { ptr, i64, i64 }, ptr %t175 + %t178 = extractvalue { ptr, i64, i64 } %t177, 1 + %t179 = icmp uge i64 %t176, %t178 + br i1 %t179, label %range3476, label %inrange3477 +range3476: + call void @finch_panic_index(ptr @.str.2185, i64 1460, i64 %t176, i64 %t178) unreachable -inrange3266: - %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 %panic3267, label %ok3268 -panic3267: - call void @finch_panic(ptr @.str.2101, i64 1312, ptr @.str.2102) +inrange3477: + %t180 = extractvalue { ptr, i64, i64 } %t177, 0 + %t181 = getelementptr inbounds %S.ast.Program, ptr %t180, i64 %t176 + %t182 = getelementptr inbounds %S.ast.Program, ptr %t181, i32 0, i32 0 + %t183 = load { ptr, i64, i64 }, ptr %t182 + %t184 = load ptr, ptr %a1 + %t185 = icmp eq ptr %t184, null + br i1 %t185, label %panic3478, label %ok3479 +panic3478: + call void @finch_panic(ptr @.str.2186, i64 1460, ptr @.str.2187) unreachable -ok3268: - %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) - %t185 = load { ptr, i64, i64 }, ptr %a184 - store { ptr, i64, i64 } %t185, ptr %t182 - %t186 = load ptr, ptr %a1 - %t187 = icmp eq ptr %t186, null - br i1 %t187, label %panic3269, label %ok3270 -panic3269: - call void @finch_panic(ptr @.str.2103, i64 1313, ptr @.str.2104) +ok3479: + %t186 = getelementptr inbounds %S.gen.Gen, ptr %t184, i32 0, i32 14 + store { ptr, i64, i64 } %t183, ptr %a187 + call void @finch_str_copy(ptr %a188, ptr %a187) + %t189 = load { ptr, i64, i64 }, ptr %a188 + %t190 = load { ptr, i64, i64 }, ptr %t186 + store { ptr, i64, i64 } %t189, ptr %t186 + store { ptr, i64, i64 } %t190, ptr %a191 + call void @finch_str_drop(ptr %a191) + %t192 = load ptr, ptr %a1 + %t193 = icmp eq ptr %t192, null + br i1 %t193, label %panic3480, label %ok3481 +panic3480: + call void @finch_panic(ptr @.str.2188, i64 1461, ptr @.str.2189) unreachable -ok3270: - %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 %range3271, label %inrange3272 -range3271: - call void @finch_panic_index(ptr @.str.2105, i64 1313, i64 %t189, i64 %t191) +ok3481: + %t194 = getelementptr inbounds %S.gen.Gen, ptr %t192, i32 0, i32 0 + %t195 = load i64, ptr %a170 + %t196 = load { ptr, i64, i64 }, ptr %t194 + %t197 = extractvalue { ptr, i64, i64 } %t196, 1 + %t198 = icmp uge i64 %t195, %t197 + br i1 %t198, label %range3482, label %inrange3483 +range3482: + call void @finch_panic_index(ptr @.str.2190, i64 1461, i64 %t195, i64 %t197) unreachable -inrange3272: - %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.cond3273 -for.cond3273: - %t199 = load i64, ptr %a198 - %t200 = icmp slt i64 %t199, %t197 - br i1 %t200, label %for.body3274, label %for.end3276 -for.body3274: - %t201 = load ptr, ptr %a1 - %t202 = icmp eq ptr %t201, null - br i1 %t202, label %panic3277, label %ok3278 -panic3277: - call void @finch_panic(ptr @.str.2106, i64 1314, ptr @.str.2107) +inrange3483: + %t199 = extractvalue { ptr, i64, i64 } %t196, 0 + %t200 = getelementptr inbounds %S.ast.Program, ptr %t199, i64 %t195 + %t201 = getelementptr inbounds %S.ast.Program, ptr %t200, i32 0, i32 7 + %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.cond3484 +for.cond3484: + %t205 = load i64, ptr %a204 + %t206 = icmp slt i64 %t205, %t203 + br i1 %t206, label %for.body3485, label %for.end3487 +for.body3485: + %t207 = load ptr, ptr %a1 + %t208 = icmp eq ptr %t207, null + br i1 %t208, label %panic3488, label %ok3489 +panic3488: + call void @finch_panic(ptr @.str.2191, i64 1462, ptr @.str.2192) unreachable -ok3278: - %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 %range3279, label %inrange3280 -range3279: - call void @finch_panic_index(ptr @.str.2108, i64 1314, i64 %t204, i64 %t206) +ok3489: + %t209 = getelementptr inbounds %S.gen.Gen, ptr %t207, i32 0, i32 0 + %t210 = load i64, ptr %a170 + %t211 = load { ptr, i64, i64 }, ptr %t209 + %t212 = extractvalue { ptr, i64, i64 } %t211, 1 + %t213 = icmp uge i64 %t210, %t212 + br i1 %t213, label %range3490, label %inrange3491 +range3490: + call void @finch_panic_index(ptr @.str.2193, i64 1462, i64 %t210, i64 %t212) unreachable -inrange3280: - %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 - %t211 = load i64, ptr %a198 - %t212 = load { ptr, i64, i64 }, ptr %t210 - %t213 = extractvalue { ptr, i64, i64 } %t212, 1 - %t214 = icmp uge i64 %t211, %t213 - br i1 %t214, label %range3281, label %inrange3282 -range3281: - call void @finch_panic_index(ptr @.str.2109, i64 1314, i64 %t211, i64 %t213) +inrange3491: + %t214 = extractvalue { ptr, i64, i64 } %t211, 0 + %t215 = getelementptr inbounds %S.ast.Program, ptr %t214, i64 %t210 + %t216 = getelementptr inbounds %S.ast.Program, ptr %t215, i32 0, i32 7 + %t217 = load i64, ptr %a204 + %t218 = load { ptr, i64, i64 }, ptr %t216 + %t219 = extractvalue { ptr, i64, i64 } %t218, 1 + %t220 = icmp uge i64 %t217, %t219 + br i1 %t220, label %range3492, label %inrange3493 +range3492: + call void @finch_panic_index(ptr @.str.2194, i64 1462, i64 %t217, i64 %t219) unreachable -inrange3282: - %t215 = extractvalue { ptr, i64, i64 } %t212, 0 - %t216 = getelementptr inbounds %S.ast.Node, ptr %t215, i64 %t211 - %t217 = load %S.ast.Node, ptr %t216 - store %S.ast.Node %t217, ptr %a218 - call void @finch.copy.S_ast_Node(ptr %a219, ptr %a218) - %t220 = load %S.ast.Node, ptr %a219 - store %S.ast.Node %t220, ptr %a221 - %t222 = load ptr, ptr %a1 - %t223 = load ptr, ptr %a1 - %t224 = icmp eq ptr %t223, null - br i1 %t224, label %panic3283, label %ok3284 -panic3283: - call void @finch_panic(ptr @.str.2110, i64 1315, ptr @.str.2111) +inrange3493: + %t221 = extractvalue { ptr, i64, i64 } %t218, 0 + %t222 = getelementptr inbounds %S.ast.Node, ptr %t221, i64 %t217 + %t223 = load %S.ast.Node, ptr %t222 + store %S.ast.Node %t223, ptr %a224 + call void @finch.copy.S_ast_Node(ptr %a225, ptr %a224) + %t226 = load %S.ast.Node, ptr %a225 + store %S.ast.Node %t226, ptr %a227 + %t228 = load ptr, ptr %a1 + %t229 = load ptr, ptr %a1 + %t230 = icmp eq ptr %t229, null + br i1 %t230, label %panic3494, label %ok3495 +panic3494: + call void @finch_panic(ptr @.str.2195, i64 1463, ptr @.str.2196) unreachable -ok3284: - %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.from3285 -logic.from3285: - br i1 %t230, label %logic.end3287, label %logic.rhs3286 -logic.rhs3286: - %t231 = load ptr, ptr %a1 - %t232 = load ptr, ptr %a1 - %t233 = icmp eq ptr %t232, null - br i1 %t233, label %panic3288, label %ok3289 -panic3288: - call void @finch_panic(ptr @.str.2112, i64 1315, ptr @.str.2113) +ok3495: + %t231 = getelementptr inbounds %S.gen.Gen, ptr %t229, i32 0, i32 14 + %t232 = load { ptr, i64, i64 }, ptr %t231 + %t233 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 + %t234 = load { ptr, i64, i64 }, ptr %t233 + %t235 = call i64 @finch.gen.findEnum(ptr %t228, { ptr, i64, i64 } %t232, { ptr, i64, i64 } %t234) + %t236 = icmp sge i64 %t235, 0 + br label %logic.from3496 +logic.from3496: + br i1 %t236, label %logic.end3498, label %logic.rhs3497 +logic.rhs3497: + %t237 = load ptr, ptr %a1 + %t238 = load ptr, ptr %a1 + %t239 = icmp eq ptr %t238, null + br i1 %t239, label %panic3499, label %ok3500 +panic3499: + call void @finch_panic(ptr @.str.2197, i64 1463, ptr @.str.2198) unreachable -ok3289: - %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.rend3290 -logic.rend3290: - br label %logic.end3287 -logic.end3287: - %t240 = phi i1 [ true, %logic.from3285 ], [ %t239, %logic.rend3290 ] - br i1 %t240, label %then3291, label %endif3293 -then3291: - %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.2114, 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.2115, 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 %endif3293 -endif3293: - %t253 = load ptr, ptr %a1 - %t254 = icmp eq ptr %t253, null - br i1 %t254, label %panic3294, label %ok3295 -panic3294: - call void @finch_panic(ptr @.str.2116, i64 1318, ptr @.str.2117) +ok3500: + %t240 = getelementptr inbounds %S.gen.Gen, ptr %t238, i32 0, i32 14 + %t241 = load { ptr, i64, i64 }, ptr %t240 + %t242 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 + %t243 = load { ptr, i64, i64 }, ptr %t242 + %t244 = call i64 @finch.gen.findStruct(ptr %t237, { ptr, i64, i64 } %t241, { ptr, i64, i64 } %t243) + %t245 = icmp sge i64 %t244, 0 + br label %logic.rend3501 +logic.rend3501: + br label %logic.end3498 +logic.end3498: + %t246 = phi i1 [ true, %logic.from3496 ], [ %t245, %logic.rend3501 ] + br i1 %t246, label %then3502, label %endif3504 +then3502: + %t247 = load ptr, ptr %a1 + %t248 = load %S.ast.Node, ptr %a227 + %t249 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 + %t250 = load { ptr, i64, i64 }, ptr %t249 + store { ptr, i64, i64 } { ptr @.str.2199, i64 1, 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.2200, i64 18, i64 0 }, ptr %a257 + call void @finch_str_concat(ptr %a255, ptr %a256, ptr %a257) + store { ptr, i64, i64 } %t254, ptr %a258 + call void @finch_str_drop(ptr %a258) + %t259 = load { ptr, i64, i64 }, ptr %a255 + call void @finch.gen.fail(ptr %t247, %S.ast.Node %t248, { ptr, i64, i64 } %t259) + store { ptr, i64, i64 } %t259, ptr %a260 + call void @finch_str_drop(ptr %a260) + br label %endif3504 +endif3504: + %t261 = load ptr, ptr %a1 + %t262 = icmp eq ptr %t261, null + br i1 %t262, label %panic3505, label %ok3506 +panic3505: + call void @finch_panic(ptr @.str.2201, i64 1466, ptr @.str.2202) unreachable -ok3295: - %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 - call void @finch_str_copy(ptr %a258, ptr %a257) - %t259 = load { ptr, i64, i64 }, ptr %a258 - %t260 = insertvalue %S.gen.EnumDef zeroinitializer, { ptr, i64, i64 } %t259, 0 - %t261 = getelementptr inbounds %S.ast.Node, ptr %a221, i32 0, i32 1 - %t262 = load { ptr, i64, i64 }, ptr %t261 - store { ptr, i64, i64 } %t262, ptr %a263 - call void @finch_str_copy(ptr %a264, ptr %a263) - %t265 = load { ptr, i64, i64 }, ptr %a264 - %t266 = insertvalue %S.gen.EnumDef %t260, { ptr, i64, i64 } %t265, 1 - store %S.gen.EnumDef %t266, ptr %a267 - 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.cond3296 -each.cond3296: - %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.body3297, label %each.end3299 -each.body3297: - %t275 = load ptr, ptr %t269 - %t276 = getelementptr inbounds %S.ast.Node, ptr %t275, i64 %t273 - %t277 = load %S.ast.Node, ptr %t276 - store %S.ast.Node %t277, ptr %a278 - %t279 = getelementptr inbounds %S.ast.Node, ptr %a278, i32 0, i32 4 - %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 %then3300, label %endif3302 -then3300: - %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.2118, i64 1322) - store i64 %t286, ptr %a268 - br label %endif3302 -endif3302: - %t287 = getelementptr inbounds %S.gen.EnumDef, ptr %a267, i32 0, i32 2 +ok3506: + %t263 = getelementptr inbounds %S.gen.Gen, ptr %t261, i32 0, i32 14 + %t264 = load { ptr, i64, i64 }, ptr %t263 + store { ptr, i64, i64 } %t264, ptr %a265 + call void @finch_str_copy(ptr %a266, ptr %a265) + %t267 = load { ptr, i64, i64 }, ptr %a266 + %t268 = insertvalue %S.gen.EnumDef zeroinitializer, { ptr, i64, i64 } %t267, 0 + %t269 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 + %t270 = load { ptr, i64, i64 }, ptr %t269 + store { ptr, i64, i64 } %t270, ptr %a271 + call void @finch_str_copy(ptr %a272, ptr %a271) + %t273 = load { ptr, i64, i64 }, ptr %a272 + %t274 = insertvalue %S.gen.EnumDef %t268, { ptr, i64, i64 } %t273, 1 + store %S.gen.EnumDef %t274, ptr %a275 + store i64 0, ptr %a276 + %t277 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 9 + store i64 0, ptr %a278 + br label %each.cond3507 +each.cond3507: + %t279 = getelementptr inbounds { ptr, i64, i64 }, ptr %t277, i32 0, i32 1 + %t280 = load i64, ptr %t279 + %t281 = load i64, ptr %a278 + %t282 = icmp slt i64 %t281, %t280 + br i1 %t282, label %each.body3508, label %each.end3510 +each.body3508: + %t283 = load ptr, ptr %t277 + %t284 = getelementptr inbounds %S.ast.Node, ptr %t283, i64 %t281 + %t285 = load %S.ast.Node, ptr %t284 + store %S.ast.Node %t285, ptr %a286 + %t287 = getelementptr inbounds %S.ast.Node, ptr %a286, i32 0, i32 4 %t288 = getelementptr inbounds { ptr, i64, i64 }, ptr %t287, i32 0, i32 1 - %t289 = getelementptr inbounds %S.ast.Node, ptr %a278, i32 0, i32 1 - %t290 = load { ptr, i64, i64 }, ptr %t289 - store i64 -1, ptr %a291 - %t292 = load i64, ptr %t288 - %t293 = load ptr, ptr %t287 - store i64 0, ptr %a294 - br label %find.cond3303 -find.cond3303: - %t295 = load i64, ptr %a294 - %t296 = icmp slt i64 %t295, %t292 - br i1 %t296, label %find.body3304, label %find.end3307 -find.body3304: - %t297 = getelementptr inbounds { ptr, i64, i64 }, ptr %t293, i64 %t295 + %t289 = load i64, ptr %t288 + %t290 = icmp sgt i64 %t289, 0 + br i1 %t290, label %then3511, label %endif3513 +then3511: + %t291 = getelementptr inbounds %S.ast.Node, ptr %a286, i32 0, i32 4 + %t292 = load { ptr, i64, i64 }, ptr %t291 + store { ptr, i64, i64 } %t292, ptr %a293 + %t294 = call i64 @finch_str_to_int(ptr %a293, ptr @.str.2203, i64 1470) + store i64 %t294, ptr %a276 + br label %endif3513 +endif3513: + %t295 = getelementptr inbounds %S.gen.EnumDef, ptr %a275, i32 0, i32 2 + %t296 = getelementptr inbounds { ptr, i64, i64 }, ptr %t295, i32 0, i32 1 + %t297 = getelementptr inbounds %S.ast.Node, ptr %a286, i32 0, i32 1 %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.hit3305, label %find.next3306 -find.hit3305: - store i64 %t295, ptr %a291 - br label %find.end3307 -find.next3306: - %t303 = add i64 %t295, 1 - store i64 %t303, ptr %a294 - br label %find.cond3303 -find.end3307: - %t304 = load i64, ptr %a291 - %t305 = icmp sge i64 %t304, 0 - br i1 %t305, label %then3308, label %endif3310 -then3308: - %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.2119, 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.2120, 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 - %t319 = load { ptr, i64, i64 }, ptr %t318 - store { ptr, i64, i64 } %t317, 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.2121, 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 %endif3310 -endif3310: - %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 - store i64 -1, ptr %a331 - %t332 = load i64, ptr %t329 - %t333 = load ptr, ptr %t328 - store i64 0, ptr %a334 - br label %find.cond3311 -find.cond3311: - %t335 = load i64, ptr %a334 - %t336 = icmp slt i64 %t335, %t332 - br i1 %t336, label %find.body3312, label %find.end3315 -find.body3312: - %t337 = getelementptr inbounds i64, ptr %t333, i64 %t335 - %t338 = load i64, ptr %t337 - %t339 = icmp eq i64 %t338, %t330 - br i1 %t339, label %find.hit3313, label %find.next3314 -find.hit3313: - store i64 %t335, ptr %a331 - br label %find.end3315 -find.next3314: - %t340 = add i64 %t335, 1 - store i64 %t340, ptr %a334 - br label %find.cond3311 -find.end3315: - %t341 = load i64, ptr %a331 - %t342 = icmp sge i64 %t341, 0 - br i1 %t342, label %then3316, label %endif3318 -then3316: - %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.2122, 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.2123, 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 - call void @finch_str_from_int(ptr %a356, i64 %t355) - %t357 = load { ptr, i64, i64 }, ptr %a356 - store { ptr, i64, i64 } %t354, ptr %a359 - store { ptr, i64, i64 } %t357, ptr %a360 - 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.2124, 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 %endif3318 -endif3318: - %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 - %t369 = load { ptr, i64, i64 }, ptr %t368 - store { ptr, i64, i64 } %t369, ptr %a370 - call void @finch_str_copy(ptr %a371, ptr %a370) - %t372 = load { ptr, i64, i64 }, ptr %a371 - %t373 = load i64, ptr %t367 - %t374 = add i64 %t373, 1 - call void @finch_arr_reserve(ptr %t366, i64 %t374, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t375 = load ptr, ptr %t366 - %t376 = getelementptr inbounds { ptr, i64, i64 }, ptr %t375, i64 %t373 - store { ptr, i64, i64 } %t372, ptr %t376 - store i64 %t374, ptr %t367 - %t377 = getelementptr inbounds %S.gen.EnumDef, ptr %a267, i32 0, i32 3 - %t378 = getelementptr inbounds { ptr, i64, i64 }, ptr %t377, i32 0, i32 1 - %t379 = load i64, ptr %a268 - %t380 = load i64, ptr %t378 - %t381 = add i64 %t380, 1 - call void @finch_arr_reserve(ptr %t377, i64 %t381, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t382 = load ptr, ptr %t377 - %t383 = getelementptr inbounds i64, ptr %t382, i64 %t380 - store i64 %t379, ptr %t383 - store i64 %t381, ptr %t378 - %t384 = load i64, ptr %a268 - %t385 = add i64 %t384, 1 - store i64 %t385, ptr %a268 - br label %each.step3298 -each.step3298: - %t386 = load i64, ptr %a270 - %t387 = add i64 %t386, 1 - store i64 %t387, ptr %a270 - br label %each.cond3296 -each.end3299: - %t388 = load ptr, ptr %a1 - %t389 = icmp eq ptr %t388, null - br i1 %t389, label %panic3319, label %ok3320 -panic3319: - call void @finch_panic(ptr @.str.2125, i64 1334, ptr @.str.2126) + store i64 -1, ptr %a299 + %t300 = load i64, ptr %t296 + %t301 = load ptr, ptr %t295 + store i64 0, ptr %a302 + br label %find.cond3514 +find.cond3514: + %t303 = load i64, ptr %a302 + %t304 = icmp slt i64 %t303, %t300 + br i1 %t304, label %find.body3515, label %find.end3518 +find.body3515: + %t305 = getelementptr inbounds { ptr, i64, i64 }, ptr %t301, i64 %t303 + %t306 = load { ptr, i64, i64 }, ptr %t305 + store { ptr, i64, i64 } %t306, ptr %a307 + store { ptr, i64, i64 } %t298, ptr %a308 + %t309 = call i32 @finch_str_eq(ptr %a307, ptr %a308) + %t310 = icmp ne i32 %t309, 0 + br i1 %t310, label %find.hit3516, label %find.next3517 +find.hit3516: + store i64 %t303, ptr %a299 + br label %find.end3518 +find.next3517: + %t311 = add i64 %t303, 1 + store i64 %t311, ptr %a302 + br label %find.cond3514 +find.end3518: + %t312 = load i64, ptr %a299 + %t313 = icmp sge i64 %t312, 0 + br i1 %t313, label %then3519, label %endif3521 +then3519: + %t314 = load ptr, ptr %a1 + %t315 = load %S.ast.Node, ptr %a286 + %t316 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 + %t317 = load { ptr, i64, i64 }, ptr %t316 + store { ptr, i64, i64 } { ptr @.str.2204, i64 9, 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.2205, i64 17, i64 0 }, ptr %a324 + call void @finch_str_concat(ptr %a322, ptr %a323, ptr %a324) + store { ptr, i64, i64 } %t321, ptr %a325 + call void @finch_str_drop(ptr %a325) + %t326 = load { ptr, i64, i64 }, ptr %a322 + %t327 = getelementptr inbounds %S.ast.Node, ptr %a286, i32 0, i32 1 + %t328 = load { ptr, i64, i64 }, ptr %t327 + store { ptr, i64, i64 } %t326, ptr %a330 + store { ptr, i64, i64 } %t328, ptr %a331 + call void @finch_str_concat(ptr %a329, ptr %a330, ptr %a331) + store { ptr, i64, i64 } %t326, ptr %a332 + call void @finch_str_drop(ptr %a332) + %t333 = load { ptr, i64, i64 }, ptr %a329 + store { ptr, i64, i64 } %t333, ptr %a335 + store { ptr, i64, i64 } { ptr @.str.2206, i64 6, i64 0 }, ptr %a336 + call void @finch_str_concat(ptr %a334, ptr %a335, ptr %a336) + store { ptr, i64, i64 } %t333, ptr %a337 + call void @finch_str_drop(ptr %a337) + %t338 = load { ptr, i64, i64 }, ptr %a334 + call void @finch.gen.fail(ptr %t314, %S.ast.Node %t315, { ptr, i64, i64 } %t338) + store { ptr, i64, i64 } %t338, ptr %a339 + call void @finch_str_drop(ptr %a339) + br label %endif3521 +endif3521: + %t340 = getelementptr inbounds %S.gen.EnumDef, ptr %a275, i32 0, i32 3 + %t341 = getelementptr inbounds { ptr, i64, i64 }, ptr %t340, i32 0, i32 1 + %t342 = load i64, ptr %a276 + store i64 -1, ptr %a343 + %t344 = load i64, ptr %t341 + %t345 = load ptr, ptr %t340 + store i64 0, ptr %a346 + br label %find.cond3522 +find.cond3522: + %t347 = load i64, ptr %a346 + %t348 = icmp slt i64 %t347, %t344 + br i1 %t348, label %find.body3523, label %find.end3526 +find.body3523: + %t349 = getelementptr inbounds i64, ptr %t345, i64 %t347 + %t350 = load i64, ptr %t349 + %t351 = icmp eq i64 %t350, %t342 + br i1 %t351, label %find.hit3524, label %find.next3525 +find.hit3524: + store i64 %t347, ptr %a343 + br label %find.end3526 +find.next3525: + %t352 = add i64 %t347, 1 + store i64 %t352, ptr %a346 + br label %find.cond3522 +find.end3526: + %t353 = load i64, ptr %a343 + %t354 = icmp sge i64 %t353, 0 + br i1 %t354, label %then3527, label %endif3529 +then3527: + %t355 = load ptr, ptr %a1 + %t356 = load %S.ast.Node, ptr %a286 + %t357 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 + %t358 = load { ptr, i64, i64 }, ptr %t357 + store { ptr, i64, i64 } { ptr @.str.2207, i64 16, i64 0 }, 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.2208, i64 17, i64 0 }, ptr %a365 + call void @finch_str_concat(ptr %a363, ptr %a364, ptr %a365) + store { ptr, i64, i64 } %t362, ptr %a366 + call void @finch_str_drop(ptr %a366) + %t367 = load { ptr, i64, i64 }, ptr %a363 + %t368 = load i64, ptr %a276 + call void @finch_str_from_int(ptr %a369, i64 %t368) + %t370 = load { ptr, i64, i64 }, ptr %a369 + store { ptr, i64, i64 } %t367, ptr %a372 + store { ptr, i64, i64 } %t370, ptr %a373 + call void @finch_str_concat(ptr %a371, ptr %a372, ptr %a373) + store { ptr, i64, i64 } %t367, ptr %a374 + call void @finch_str_drop(ptr %a374) + store { ptr, i64, i64 } %t370, ptr %a375 + call void @finch_str_drop(ptr %a375) + %t376 = load { ptr, i64, i64 }, ptr %a371 + store { ptr, i64, i64 } %t376, ptr %a378 + store { ptr, i64, i64 } { ptr @.str.2209, i64 20, i64 0 }, ptr %a379 + call void @finch_str_concat(ptr %a377, ptr %a378, ptr %a379) + store { ptr, i64, i64 } %t376, ptr %a380 + call void @finch_str_drop(ptr %a380) + %t381 = load { ptr, i64, i64 }, ptr %a377 + call void @finch.gen.fail(ptr %t355, %S.ast.Node %t356, { ptr, i64, i64 } %t381) + store { ptr, i64, i64 } %t381, ptr %a382 + call void @finch_str_drop(ptr %a382) + br label %endif3529 +endif3529: + %t383 = getelementptr inbounds %S.gen.EnumDef, ptr %a275, i32 0, i32 2 + %t384 = getelementptr inbounds { ptr, i64, i64 }, ptr %t383, i32 0, i32 1 + %t385 = getelementptr inbounds %S.ast.Node, ptr %a286, i32 0, i32 1 + %t386 = load { ptr, i64, i64 }, ptr %t385 + store { ptr, i64, i64 } %t386, ptr %a387 + call void @finch_str_copy(ptr %a388, ptr %a387) + %t389 = load { ptr, i64, i64 }, ptr %a388 + %t390 = load i64, ptr %t384 + %t391 = add i64 %t390, 1 + call void @finch_arr_reserve(ptr %t383, i64 %t391, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t392 = load ptr, ptr %t383 + %t393 = getelementptr inbounds { ptr, i64, i64 }, ptr %t392, i64 %t390 + store { ptr, i64, i64 } %t389, ptr %t393 + store i64 %t391, ptr %t384 + %t394 = getelementptr inbounds %S.gen.EnumDef, ptr %a275, i32 0, i32 3 + %t395 = getelementptr inbounds { ptr, i64, i64 }, ptr %t394, i32 0, i32 1 + %t396 = load i64, ptr %a276 + %t397 = load i64, ptr %t395 + %t398 = add i64 %t397, 1 + call void @finch_arr_reserve(ptr %t394, i64 %t398, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) + %t399 = load ptr, ptr %t394 + %t400 = getelementptr inbounds i64, ptr %t399, i64 %t397 + store i64 %t396, ptr %t400 + store i64 %t398, ptr %t395 + %t401 = load i64, ptr %a276 + %t402 = add i64 %t401, 1 + store i64 %t402, ptr %a276 + br label %each.step3509 +each.step3509: + %t403 = load i64, ptr %a278 + %t404 = add i64 %t403, 1 + store i64 %t404, ptr %a278 + br label %each.cond3507 +each.end3510: + %t405 = load ptr, ptr %a1 + %t406 = icmp eq ptr %t405, null + br i1 %t406, label %panic3530, label %ok3531 +panic3530: + call void @finch_panic(ptr @.str.2210, i64 1482, ptr @.str.2211) unreachable -ok3320: - %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 - store %S.gen.EnumDef %t392, ptr %a393 - call void @finch.copy.S_gen_EnumDef(ptr %a394, ptr %a393) - %t395 = load %S.gen.EnumDef, ptr %a394 - %t396 = load i64, ptr %t391 - %t397 = add i64 %t396, 1 - call void @finch_arr_reserve(ptr %t390, i64 %t397, i64 ptrtoint (ptr getelementptr (%S.gen.EnumDef, ptr null, i32 1) to i64)) - %t398 = load ptr, ptr %t390 - %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.step3275 -for.step3275: - %t400 = load i64, ptr %a198 - %t401 = add i64 %t400, 1 - store i64 %t401, ptr %a198 - br label %for.cond3273 -for.end3276: - br label %for.step3261 -for.step3261: - %t402 = load i64, ptr %a166 - %t403 = add i64 %t402, 1 - store i64 %t403, ptr %a166 - br label %for.cond3259 -for.end3262: - %t404 = load ptr, ptr %a1 - %t405 = icmp eq ptr %t404, null - br i1 %t405, label %panic3321, label %ok3322 -panic3321: - call void @finch_panic(ptr @.str.2127, i64 1337, ptr @.str.2128) - unreachable -ok3322: - %t406 = getelementptr inbounds %S.gen.Gen, ptr %t404, i32 0, i32 24 - %t407 = getelementptr inbounds %S.cimport.CImports, ptr %t406, i32 0, i32 4 +ok3531: + %t407 = getelementptr inbounds %S.gen.Gen, ptr %t405, i32 0, i32 21 %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.cond3323 -for.cond3323: - %t411 = load i64, ptr %a410 - %t412 = icmp slt i64 %t411, %t409 - br i1 %t412, label %for.body3324, label %for.end3326 -for.body3324: - %t413 = load ptr, ptr %a1 - %t414 = icmp eq ptr %t413, null - br i1 %t414, label %panic3327, label %ok3328 -panic3327: - call void @finch_panic(ptr @.str.2129, i64 1338, ptr @.str.2130) + %t409 = load %S.gen.EnumDef, ptr %a275 + store %S.gen.EnumDef %t409, ptr %a410 + call void @finch.copy.S_gen_EnumDef(ptr %a411, ptr %a410) + %t412 = load %S.gen.EnumDef, ptr %a411 + %t413 = load i64, ptr %t408 + %t414 = add i64 %t413, 1 + call void @finch_arr_reserve(ptr %t407, i64 %t414, i64 ptrtoint (ptr getelementptr (%S.gen.EnumDef, ptr null, i32 1) to i64)) + %t415 = load ptr, ptr %t407 + %t416 = getelementptr inbounds %S.gen.EnumDef, ptr %t415, i64 %t413 + store %S.gen.EnumDef %t412, ptr %t416 + store i64 %t414, ptr %t408 + call void @finch.drop.S_gen_EnumDef(ptr %a275) + call void @finch.drop.S_ast_Node(ptr %a227) + br label %for.step3486 +for.step3486: + %t417 = load i64, ptr %a204 + %t418 = add i64 %t417, 1 + store i64 %t418, ptr %a204 + br label %for.cond3484 +for.end3487: + br label %for.step3472 +for.step3472: + %t419 = load i64, ptr %a170 + %t420 = add i64 %t419, 1 + store i64 %t420, ptr %a170 + br label %for.cond3470 +for.end3473: + %t421 = load ptr, ptr %a1 + %t422 = icmp eq ptr %t421, null + br i1 %t422, label %panic3532, label %ok3533 +panic3532: + call void @finch_panic(ptr @.str.2212, i64 1485, ptr @.str.2213) unreachable -ok3328: - %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.2131, i64 1, i64 0 }, 0 - %t418 = load ptr, ptr %a1 - %t419 = icmp eq ptr %t418, null - br i1 %t419, label %panic3329, label %ok3330 -panic3329: - call void @finch_panic(ptr @.str.2132, i64 1338, ptr @.str.2133) +ok3533: + %t423 = getelementptr inbounds %S.gen.Gen, ptr %t421, i32 0, i32 25 + %t424 = getelementptr inbounds %S.cimport.CImports, ptr %t423, i32 0, i32 4 + %t425 = getelementptr inbounds { ptr, i64, i64 }, ptr %t424, i32 0, i32 1 + %t426 = load i64, ptr %t425 + store i64 0, ptr %a427 + br label %for.cond3534 +for.cond3534: + %t428 = load i64, ptr %a427 + %t429 = icmp slt i64 %t428, %t426 + br i1 %t429, label %for.body3535, label %for.end3537 +for.body3535: + %t430 = load ptr, ptr %a1 + %t431 = icmp eq ptr %t430, null + br i1 %t431, label %panic3538, label %ok3539 +panic3538: + call void @finch_panic(ptr @.str.2214, i64 1486, ptr @.str.2215) unreachable -ok3330: - %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 %range3331, label %inrange3332 -range3331: - call void @finch_panic_index(ptr @.str.2134, i64 1338, i64 %t422, i64 %t424) +ok3539: + %t432 = getelementptr inbounds %S.gen.Gen, ptr %t430, i32 0, i32 16 + %t433 = getelementptr inbounds { ptr, i64, i64 }, ptr %t432, i32 0, i32 1 + %t434 = insertvalue %S.gen.StructDef zeroinitializer, { ptr, i64, i64 } { ptr @.str.2216, i64 1, i64 0 }, 0 + %t435 = load ptr, ptr %a1 + %t436 = icmp eq ptr %t435, null + br i1 %t436, label %panic3540, label %ok3541 +panic3540: + call void @finch_panic(ptr @.str.2217, i64 1486, ptr @.str.2218) unreachable -inrange3332: - %t426 = extractvalue { ptr, i64, i64 } %t423, 0 - %t427 = getelementptr inbounds { ptr, i64, i64 }, ptr %t426, i64 %t422 - %t428 = load { ptr, i64, i64 }, ptr %t427 - store { ptr, i64, i64 } %t428, ptr %a429 - call void @finch_str_copy(ptr %a430, ptr %a429) - %t431 = load { ptr, i64, i64 }, ptr %a430 - %t432 = insertvalue %S.gen.StructDef %t417, { ptr, i64, i64 } %t431, 1 - %t433 = insertvalue %S.gen.StructDef %t432, i1 true, 2 - %t434 = insertvalue %S.gen.StructDef %t433, i64 -1, 13 - %t435 = load i64, ptr %a410 - %t436 = insertvalue %S.gen.StructDef %t434, i64 %t435, 14 - %t437 = load i64, ptr %t416 - %t438 = add i64 %t437, 1 - call void @finch_arr_reserve(ptr %t415, i64 %t438, i64 ptrtoint (ptr getelementptr (%S.gen.StructDef, ptr null, i32 1) to i64)) - %t439 = load ptr, ptr %t415 - %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.step3325 -for.step3325: - %t441 = load i64, ptr %a410 - %t442 = add i64 %t441, 1 - store i64 %t442, ptr %a410 - br label %for.cond3323 -for.end3326: - %t443 = load ptr, ptr %a1 - %t444 = icmp eq ptr %t443, null - br i1 %t444, label %panic3333, label %ok3334 -panic3333: - call void @finch_panic(ptr @.str.2135, i64 1340, ptr @.str.2136) +ok3541: + %t437 = getelementptr inbounds %S.gen.Gen, ptr %t435, i32 0, i32 25 + %t438 = getelementptr inbounds %S.cimport.CImports, ptr %t437, i32 0, i32 4 + %t439 = load i64, ptr %a427 + %t440 = load { ptr, i64, i64 }, ptr %t438 + %t441 = extractvalue { ptr, i64, i64 } %t440, 1 + %t442 = icmp uge i64 %t439, %t441 + br i1 %t442, label %range3542, label %inrange3543 +range3542: + call void @finch_panic_index(ptr @.str.2219, i64 1486, i64 %t439, i64 %t441) unreachable -ok3334: - %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.cond3335 -for.cond3335: - %t449 = load i64, ptr %a448 - %t450 = icmp slt i64 %t449, %t447 - br i1 %t450, label %for.body3336, label %for.end3338 -for.body3336: - %t451 = load ptr, ptr %a1 - %t452 = load i64, ptr %a448 - call void @finch.gen.resolveStruct(ptr %t451, i64 %t452) - br label %for.step3337 -for.step3337: - %t453 = load i64, ptr %a448 - %t454 = add i64 %t453, 1 - store i64 %t454, ptr %a448 - br label %for.cond3335 -for.end3338: - %t455 = load ptr, ptr %a1 - %t456 = icmp eq ptr %t455, null - br i1 %t456, label %panic3339, label %ok3340 -panic3339: - call void @finch_panic(ptr @.str.2137, i64 1343, ptr @.str.2138) +inrange3543: + %t443 = extractvalue { ptr, i64, i64 } %t440, 0 + %t444 = getelementptr inbounds { ptr, i64, i64 }, ptr %t443, i64 %t439 + %t445 = load { ptr, i64, i64 }, ptr %t444 + store { ptr, i64, i64 } %t445, ptr %a446 + call void @finch_str_copy(ptr %a447, ptr %a446) + %t448 = load { ptr, i64, i64 }, ptr %a447 + %t449 = insertvalue %S.gen.StructDef %t434, { ptr, i64, i64 } %t448, 1 + %t450 = insertvalue %S.gen.StructDef %t449, i1 true, 2 + %t451 = insertvalue %S.gen.StructDef %t450, i64 -1, 13 + %t452 = load i64, ptr %a427 + %t453 = insertvalue %S.gen.StructDef %t451, i64 %t452, 14 + %t454 = load i64, ptr %t433 + %t455 = add i64 %t454, 1 + call void @finch_arr_reserve(ptr %t432, i64 %t455, i64 ptrtoint (ptr getelementptr (%S.gen.StructDef, ptr null, i32 1) to i64)) + %t456 = load ptr, ptr %t432 + %t457 = getelementptr inbounds %S.gen.StructDef, ptr %t456, i64 %t454 + store %S.gen.StructDef %t453, ptr %t457 + store i64 %t455, ptr %t433 + br label %for.step3536 +for.step3536: + %t458 = load i64, ptr %a427 + %t459 = add i64 %t458, 1 + store i64 %t459, ptr %a427 + br label %for.cond3534 +for.end3537: + %t460 = load ptr, ptr %a1 + %t461 = icmp eq ptr %t460, null + br i1 %t461, label %panic3544, label %ok3545 +panic3544: + call void @finch_panic(ptr @.str.2220, i64 1488, ptr @.str.2221) unreachable -ok3340: - %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.cond3341 -for.cond3341: - %t461 = load i64, ptr %a460 - %t462 = icmp slt i64 %t461, %t459 - br i1 %t462, label %for.body3342, label %for.end3344 -for.body3342: - %t463 = load ptr, ptr %a1 - %t464 = icmp eq ptr %t463, null - br i1 %t464, label %panic3345, label %ok3346 -panic3345: - call void @finch_panic(ptr @.str.2139, i64 1344, ptr @.str.2140) +ok3545: + %t462 = getelementptr inbounds %S.gen.Gen, ptr %t460, i32 0, i32 16 + %t463 = getelementptr inbounds { ptr, i64, i64 }, ptr %t462, i32 0, i32 1 + %t464 = load i64, ptr %t463 + store i64 0, ptr %a465 + br label %for.cond3546 +for.cond3546: + %t466 = load i64, ptr %a465 + %t467 = icmp slt i64 %t466, %t464 + br i1 %t467, label %for.body3547, label %for.end3549 +for.body3547: + %t468 = load ptr, ptr %a1 + %t469 = load i64, ptr %a465 + call void @finch.gen.resolveStruct(ptr %t468, i64 %t469) + br label %for.step3548 +for.step3548: + %t470 = load i64, ptr %a465 + %t471 = add i64 %t470, 1 + store i64 %t471, ptr %a465 + br label %for.cond3546 +for.end3549: + %t472 = load ptr, ptr %a1 + %t473 = icmp eq ptr %t472, null + br i1 %t473, label %panic3550, label %ok3551 +panic3550: + call void @finch_panic(ptr @.str.2222, i64 1491, ptr @.str.2223) unreachable -ok3346: - %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 %range3347, label %inrange3348 -range3347: - call void @finch_panic_index(ptr @.str.2141, i64 1344, i64 %t466, i64 %t468) - unreachable -inrange3348: - %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 %panic3349, label %ok3350 -panic3349: - call void @finch_panic(ptr @.str.2142, i64 1344, ptr @.str.2143) - unreachable -ok3350: - %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) - %t479 = load { ptr, i64, i64 }, ptr %a478 - store { ptr, i64, i64 } %t479, ptr %t476 +ok3551: + %t474 = getelementptr inbounds %S.gen.Gen, ptr %t472, i32 0, i32 0 + %t475 = getelementptr inbounds { ptr, i64, i64 }, ptr %t474, i32 0, i32 1 + %t476 = load i64, ptr %t475 + store i64 0, ptr %a477 + br label %for.cond3552 +for.cond3552: + %t478 = load i64, ptr %a477 + %t479 = icmp slt i64 %t478, %t476 + br i1 %t479, label %for.body3553, label %for.end3555 +for.body3553: %t480 = load ptr, ptr %a1 %t481 = icmp eq ptr %t480, null - br i1 %t481, label %panic3351, label %ok3352 -panic3351: - call void @finch_panic(ptr @.str.2144, i64 1345, ptr @.str.2145) + br i1 %t481, label %panic3556, label %ok3557 +panic3556: + call void @finch_panic(ptr @.str.2224, i64 1492, ptr @.str.2225) unreachable -ok3352: +ok3557: %t482 = getelementptr inbounds %S.gen.Gen, ptr %t480, i32 0, i32 0 - %t483 = load i64, ptr %a460 + %t483 = load i64, ptr %a477 %t484 = load { ptr, i64, i64 }, ptr %t482 %t485 = extractvalue { ptr, i64, i64 } %t484, 1 %t486 = icmp uge i64 %t483, %t485 - br i1 %t486, label %range3353, label %inrange3354 -range3353: - call void @finch_panic_index(ptr @.str.2146, i64 1345, i64 %t483, i64 %t485) + br i1 %t486, label %range3558, label %inrange3559 +range3558: + call void @finch_panic_index(ptr @.str.2226, i64 1492, i64 %t483, i64 %t485) unreachable -inrange3354: +inrange3559: %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.cond3355 -for.cond3355: - %t493 = load i64, ptr %a492 - %t494 = icmp slt i64 %t493, %t491 - br i1 %t494, label %for.body3356, label %for.end3358 -for.body3356: - %t495 = load ptr, ptr %a1 - %t496 = icmp eq ptr %t495, null - br i1 %t496, label %panic3359, label %ok3360 -panic3359: - call void @finch_panic(ptr @.str.2147, i64 1346, ptr @.str.2148) - unreachable -ok3360: - %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 %range3361, label %inrange3362 -range3361: - call void @finch_panic_index(ptr @.str.2149, i64 1346, i64 %t498, i64 %t500) - unreachable -inrange3362: - %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 - %t505 = load i64, ptr %a492 - %t506 = load { ptr, i64, i64 }, ptr %t504 - %t507 = extractvalue { ptr, i64, i64 } %t506, 1 - %t508 = icmp uge i64 %t505, %t507 - br i1 %t508, label %range3363, label %inrange3364 -range3363: - call void @finch_panic_index(ptr @.str.2150, i64 1346, i64 %t505, i64 %t507) - unreachable -inrange3364: - %t509 = extractvalue { ptr, i64, i64 } %t506, 0 - %t510 = getelementptr inbounds %S.ast.Node, ptr %t509, i64 %t505 - %t511 = load %S.ast.Node, ptr %t510 - store %S.ast.Node %t511, ptr %a512 - call void @finch.copy.S_ast_Node(ptr %a513, ptr %a512) - %t514 = load %S.ast.Node, ptr %a513 - store %S.ast.Node %t514, ptr %a515 - %t516 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 3 - %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 %then3365, label %endif3367 -then3365: - %t520 = load ptr, ptr %a1 - %t521 = load ptr, ptr %a1 - %t522 = icmp eq ptr %t521, null - br i1 %t522, label %panic3368, label %ok3369 -panic3368: - call void @finch_panic(ptr @.str.2151, i64 1349, ptr @.str.2152) - unreachable -ok3369: - %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 - %t526 = load { ptr, i64, i64 }, ptr %t525 - %t527 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 2 - %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 %then3370, label %endif3372 -then3370: - %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.2153, 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.2154, 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 %endif3372 -endif3372: - %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.from3373 -logic.from3373: - br i1 %t546, label %logic.rhs3374, label %logic.end3375 -logic.rhs3374: - %t547 = load ptr, ptr %a1 - %t548 = load ptr, ptr %a1 - %t549 = icmp eq ptr %t548, null - br i1 %t549, label %panic3376, label %ok3377 -panic3376: - call void @finch_panic(ptr @.str.2155, i64 1352, ptr @.str.2156) - unreachable -ok3377: - %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.2157, i64 0, i64 0 }, i1 true) - %t555 = icmp slt i64 %t554, 0 - br label %logic.rend3378 -logic.rend3378: - br label %logic.end3375 -logic.end3375: - %t556 = phi i1 [ false, %logic.from3373 ], [ %t555, %logic.rend3378 ] - br i1 %t556, label %then3379, label %endif3381 -then3379: - %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.2158, 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.2159, 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 %endif3381 -endif3381: - %t569 = load ptr, ptr %a1 - %t570 = icmp eq ptr %t569, null - br i1 %t570, label %panic3382, label %ok3383 -panic3382: - call void @finch_panic(ptr @.str.2160, i64 1355, ptr @.str.2161) - unreachable -ok3383: - %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 %panic3384, label %ok3385 -panic3384: - call void @finch_panic(ptr @.str.2162, i64 1355, ptr @.str.2163) - unreachable -ok3385: - %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 - call void @finch_str_copy(ptr %a578, ptr %a577) - %t579 = load { ptr, i64, i64 }, ptr %a578 - %t580 = insertvalue %S.gen.Template zeroinitializer, { ptr, i64, i64 } %t579, 0 - %t581 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 1 - %t582 = load { ptr, i64, i64 }, ptr %t581 - store { ptr, i64, i64 } %t582, ptr %a583 - call void @finch_str_copy(ptr %a584, ptr %a583) - %t585 = load { ptr, i64, i64 }, ptr %a584 - %t586 = insertvalue %S.gen.Template %t580, { ptr, i64, i64 } %t585, 1 - %t587 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 2 - %t588 = load { ptr, i64, i64 }, ptr %t587 - store { ptr, i64, i64 } %t588, ptr %a589 - call void @finch_str_copy(ptr %a590, ptr %a589) - %t591 = load { ptr, i64, i64 }, ptr %a590 - %t592 = insertvalue %S.gen.Template %t586, { ptr, i64, i64 } %t591, 2 - %t593 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 3 - %t594 = load { ptr, i64, i64 }, ptr %t593 - store { ptr, i64, i64 } %t594, ptr %a595 - call void @finch.copy.arr_str(ptr %a596, ptr %a595) - %t597 = load { ptr, i64, i64 }, ptr %a596 - %t598 = insertvalue %S.gen.Template %t592, { ptr, i64, i64 } %t597, 3 - %t599 = load i64, ptr %a460 - %t600 = insertvalue %S.gen.Template %t598, i64 %t599, 4 - %t601 = load i64, ptr %a492 - %t602 = insertvalue %S.gen.Template %t600, i64 %t601, 5 - %t603 = load i64, ptr %t572 - %t604 = add i64 %t603, 1 - call void @finch_arr_reserve(ptr %t571, i64 %t604, i64 ptrtoint (ptr getelementptr (%S.gen.Template, ptr null, i32 1) to i64)) - %t605 = load ptr, ptr %t571 - %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.step3357 -endif3367: - %t607 = load ptr, ptr %a1 - %t608 = icmp eq ptr %t607, null - br i1 %t608, label %panic3386, label %ok3387 -panic3386: - call void @finch_panic(ptr @.str.2164, i64 1358, ptr @.str.2165) - unreachable -ok3387: - %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 - call void @finch_str_copy(ptr %a612, ptr %a611) - %t613 = load { ptr, i64, i64 }, ptr %a612 - store { ptr, i64, i64 } %t613, ptr %a614 - store i1 false, ptr %a615 - %t616 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 2 - %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.from3388 -logic.from3388: - br i1 %t619, label %logic.rhs3389, label %logic.end3390 -logic.rhs3389: - %t620 = load ptr, ptr %a1 - %t621 = load ptr, ptr %a1 - %t622 = icmp eq ptr %t621, null - br i1 %t622, label %panic3391, label %ok3392 -panic3391: - call void @finch_panic(ptr @.str.2166, i64 1360, ptr @.str.2167) - unreachable -ok3392: - %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.rend3393 -logic.rend3393: - br label %logic.end3390 -logic.end3390: - %t629 = phi i1 [ false, %logic.from3388 ], [ %t628, %logic.rend3393 ] - br i1 %t629, label %then3394, label %else3395 -then3394: - store i1 true, ptr %a615 - %t630 = load ptr, ptr %a1 - %t631 = load { ptr, i64, i64 }, ptr %a614 - %t632 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 2 - %t633 = load { ptr, i64, i64 }, ptr %t632 - %t634 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 1 - %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 %then3397, label %endif3399 -then3397: - %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.2168, 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.2169, 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 - %t651 = load { ptr, i64, i64 }, ptr %t650 - store { ptr, i64, i64 } %t649, 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.2170, 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 %endif3399 -endif3399: - br label %endif3396 -else3395: - %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 %then3400, label %else3401 -then3400: - %t664 = load ptr, ptr %a1 - %t665 = load ptr, ptr %a1 - %t666 = icmp eq ptr %t665, null - br i1 %t666, label %panic3403, label %ok3404 -panic3403: - call void @finch_panic(ptr @.str.2171, i64 1366, ptr @.str.2172) - unreachable -ok3404: - %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 - %t670 = load { ptr, i64, i64 }, ptr %t669 - %t671 = call i64 @finch.gen.findStruct(ptr %t664, { ptr, i64, i64 } %t668, { ptr, i64, i64 } %t670) - store i64 %t671, ptr %a672 - %t673 = load i64, ptr %a672 - %t674 = icmp slt i64 %t673, 0 - br label %logic.from3405 -logic.from3405: - br i1 %t674, label %logic.rhs3406, label %logic.end3407 -logic.rhs3406: - %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.2173, i64 1, i64 0 }, { ptr, i64, i64 } %t677) - %t679 = icmp sge i64 %t678, 0 - br label %logic.rend3408 -logic.rend3408: - br label %logic.end3407 -logic.end3407: - %t680 = phi i1 [ false, %logic.from3405 ], [ %t679, %logic.rend3408 ] - br i1 %t680, label %then3409, label %endif3411 -then3409: - %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.2174, i64 1, i64 0 }, { ptr, i64, i64 } %t683) - store i64 %t684, ptr %a672 - store { ptr, i64, i64 } { ptr @.str.2175, i64 1, i64 0 }, ptr %a614 - br label %endif3411 -endif3411: - %t685 = load i64, ptr %a672 - %t686 = icmp slt i64 %t685, 0 - br i1 %t686, label %then3412, label %endif3414 -then3412: - %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.2176, 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.2177, 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 %endif3414 -endif3414: - %t699 = load ptr, ptr %a1 - %t700 = load { ptr, i64, i64 }, ptr %a614 - %t701 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 2 - %t702 = load { ptr, i64, i64 }, ptr %t701 - %t703 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 1 - %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 %then3415, label %endif3417 -then3415: - %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.2178, 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.2179, 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 - %t720 = load { ptr, i64, i64 }, ptr %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.2180, 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 %endif3417 -endif3417: - %t729 = load ptr, ptr %a1 - %t730 = icmp eq ptr %t729, null - br i1 %t730, label %panic3418, label %ok3419 -panic3418: - call void @finch_panic(ptr @.str.2181, i64 1377, ptr @.str.2182) - unreachable -ok3419: - %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 %range3420, label %inrange3421 -range3420: - call void @finch_panic_index(ptr @.str.2183, i64 1377, i64 %t732, i64 %t734) - unreachable -inrange3421: - %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 - %t739 = getelementptr inbounds { ptr, i64, i64 }, ptr %t738, i32 0, i32 1 - %t740 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 1 - %t741 = load { ptr, i64, i64 }, ptr %t740 - store i64 -1, ptr %a742 - %t743 = load i64, ptr %t739 - %t744 = load ptr, ptr %t738 - store i64 0, ptr %a745 - br label %find.cond3422 -find.cond3422: - %t746 = load i64, ptr %a745 - %t747 = icmp slt i64 %t746, %t743 - br i1 %t747, label %find.body3423, label %find.end3426 -find.body3423: - %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.hit3424, label %find.next3425 -find.hit3424: - store i64 %t746, ptr %a742 - br label %find.end3426 -find.next3425: - %t754 = add i64 %t746, 1 - store i64 %t754, ptr %a745 - br label %find.cond3422 -find.end3426: - %t755 = load i64, ptr %a742 - %t756 = icmp sge i64 %t755, 0 - br i1 %t756, label %then3427, label %endif3429 -then3427: - %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.2184, 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.2185, 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 - %t770 = load { ptr, i64, i64 }, ptr %t769 - store { ptr, i64, i64 } %t768, 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.2186, 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 %endif3429 -endif3429: - br label %endif3402 -else3401: - %t779 = load ptr, ptr %a1 - %t780 = load ptr, ptr %a1 - %t781 = icmp eq ptr %t780, null - br i1 %t781, label %panic3430, label %ok3431 -panic3430: - call void @finch_panic(ptr @.str.2187, i64 1381, ptr @.str.2188) - unreachable -ok3431: - %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 %then3432, label %endif3434 -then3432: - %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.2189, 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.2190, 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 %endif3434 -endif3434: - %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 %then3435, label %endif3437 -then3435: - %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.2191, 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.2192, 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 %endif3437 -endif3437: - br label %endif3402 -endif3402: - br label %endif3396 -endif3396: - %t815 = load ptr, ptr %a1 - %t816 = icmp eq ptr %t815, null - br i1 %t816, label %panic3438, label %ok3439 -panic3438: - call void @finch_panic(ptr @.str.2193, i64 1388, ptr @.str.2194) - unreachable -ok3439: - %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 - call void @finch_str_copy(ptr %a820, ptr %a819) - %t821 = load { ptr, i64, i64 }, ptr %a820 - %t822 = insertvalue %S.gen.FnSig zeroinitializer, { ptr, i64, i64 } %t821, 0 - %t823 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 1 - %t824 = load { ptr, i64, i64 }, ptr %t823 - store { ptr, i64, i64 } %t824, ptr %a825 - call void @finch_str_copy(ptr %a826, ptr %a825) - %t827 = load { ptr, i64, i64 }, ptr %a826 - %t828 = insertvalue %S.gen.FnSig %t822, { ptr, i64, i64 } %t827, 1 - %t829 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 2 - %t830 = load { ptr, i64, i64 }, ptr %t829 - store { ptr, i64, i64 } %t830, ptr %a831 - call void @finch_str_copy(ptr %a832, ptr %a831) - %t833 = load { ptr, i64, i64 }, ptr %a832 - %t834 = insertvalue %S.gen.FnSig %t828, { ptr, i64, i64 } %t833, 2 - %t835 = load { ptr, i64, i64 }, ptr %a614 - store { ptr, i64, i64 } %t835, ptr %a836 - call void @finch_str_copy(ptr %a837, ptr %a836) - %t838 = load { ptr, i64, i64 }, ptr %a837 - %t839 = insertvalue %S.gen.FnSig %t834, { ptr, i64, i64 } %t838, 3 - %t840 = load i1, ptr %a615 - %t841 = insertvalue %S.gen.FnSig %t839, i1 %t840, 4 - %t842 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 8 - %t843 = load i1, ptr %t842 - %t844 = insertvalue %S.gen.FnSig %t841, i1 %t843, 5 - %t845 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 7 - %t846 = load i1, ptr %t845 - %t847 = insertvalue %S.gen.FnSig %t844, i1 %t846, 9 - %t848 = load i64, ptr %a460 - %t849 = insertvalue %S.gen.FnSig %t847, i64 %t848, 16 - %t850 = load i64, ptr %a492 - %t851 = insertvalue %S.gen.FnSig %t849, i64 %t850, 17 - store %S.gen.FnSig %t851, ptr %a852 - %t853 = load ptr, ptr %a1 - %t854 = icmp eq ptr %t853, null - br i1 %t854, label %panic3440, label %ok3441 -panic3440: - call void @finch_panic(ptr @.str.2196, i64 1389, ptr @.str.2197) - unreachable -ok3441: - %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.2195, 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.2198, 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 - %t867 = load { ptr, i64, i64 }, ptr %t866 - store { ptr, i64, i64 } %t865, ptr %a869 - store { ptr, i64, i64 } %t867, ptr %a870 - call void @finch_str_concat(ptr %a868, ptr %a869, ptr %a870) - %t871 = load { ptr, i64, i64 }, ptr %a868 - %t872 = getelementptr inbounds %S.gen.FnSig, ptr %a852, i32 0, i32 11 - store { ptr, i64, i64 } %t871, ptr %t872 - %t873 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 2 - %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 %then3442, label %endif3444 -then3442: - %t877 = load ptr, ptr %a1 - %t878 = icmp eq ptr %t877, null - br i1 %t878, label %panic3445, label %ok3446 -panic3445: - call void @finch_panic(ptr @.str.2200, i64 1391, ptr @.str.2201) - unreachable -ok3446: - %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.2199, 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.2202, 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 - %t891 = load { ptr, i64, i64 }, ptr %t890 - store { ptr, i64, i64 } %t889, ptr %a893 - store { ptr, i64, i64 } %t891, ptr %a894 - 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.2203, 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 - %t901 = load { ptr, i64, i64 }, ptr %t900 - store { ptr, i64, i64 } %t899, ptr %a903 - store { ptr, i64, i64 } %t901, ptr %a904 - call void @finch_str_concat(ptr %a902, ptr %a903, ptr %a904) - %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 %endif3444 -endif3444: - %t907 = load ptr, ptr %a1 - %t908 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 5 - %t909 = load %S.ast.Type, ptr %t908 - %t910 = load %S.ast.Node, ptr %a515 - %t911 = call %S.ast.Type @finch.gen.resolve(ptr %t907, %S.ast.Type %t909, %S.ast.Node %t910) - %t912 = getelementptr inbounds %S.gen.FnSig, ptr %a852, i32 0, i32 12 - store %S.ast.Type %t911, ptr %t912 - %t913 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 9 - %t914 = getelementptr inbounds { ptr, i64, i64 }, ptr %t913, i32 0, i32 1 - %t915 = load i64, ptr %t914 - %t916 = sub i64 %t915, 1 - store i64 0, ptr %a917 - br label %for.cond3447 -for.cond3447: - %t918 = load i64, ptr %a917 - %t919 = icmp slt i64 %t918, %t916 - br i1 %t919, label %for.body3448, label %for.end3450 -for.body3448: - %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 %range3451, label %inrange3452 -range3451: - call void @finch_panic_index(ptr @.str.2204, i64 1395, i64 %t921, i64 %t923) - unreachable -inrange3452: - %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.2205, 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.from3453 -logic.from3453: - br i1 %t932, label %logic.rhs3454, label %logic.end3455 -logic.rhs3454: - %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.rend3456 -logic.rend3456: - br label %logic.end3455 -logic.end3455: - %t937 = phi i1 [ false, %logic.from3453 ], [ %t936, %logic.rend3456 ] - br i1 %t937, label %then3457, label %endif3459 -then3457: - %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 %range3460, label %inrange3461 -range3460: - call void @finch_panic_index(ptr @.str.2206, i64 1396, i64 %t940, i64 %t942) - unreachable -inrange3461: - %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.2207, 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.2208, 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 %endif3459 -endif3459: - %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 - %t960 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 9 - %t961 = load i64, ptr %a917 - %t962 = load { ptr, i64, i64 }, ptr %t960 - %t963 = extractvalue { ptr, i64, i64 } %t962, 1 - %t964 = icmp uge i64 %t961, %t963 - br i1 %t964, label %range3462, label %inrange3463 -range3462: - call void @finch_panic_index(ptr @.str.2209, i64 1398, i64 %t961, i64 %t963) - unreachable -inrange3463: - %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 - %t968 = load %S.ast.Type, ptr %t967 - %t969 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 9 - %t970 = load i64, ptr %a917 - %t971 = load { ptr, i64, i64 }, ptr %t969 - %t972 = extractvalue { ptr, i64, i64 } %t971, 1 - %t973 = icmp uge i64 %t970, %t972 - br i1 %t973, label %range3464, label %inrange3465 -range3464: - call void @finch_panic_index(ptr @.str.2210, i64 1398, i64 %t970, i64 %t972) - unreachable -inrange3465: - %t974 = extractvalue { ptr, i64, i64 } %t971, 0 - %t975 = getelementptr inbounds %S.ast.Node, ptr %t974, i64 %t970 - %t976 = load %S.ast.Node, ptr %t975 - %t977 = call %S.ast.Type @finch.gen.resolve(ptr %t959, %S.ast.Type %t968, %S.ast.Node %t976) - %t978 = load i64, ptr %t958 - %t979 = add i64 %t978, 1 - call void @finch_arr_reserve(ptr %t957, i64 %t979, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t980 = load ptr, ptr %t957 - %t981 = getelementptr inbounds %S.ast.Type, ptr %t980, i64 %t978 - store %S.ast.Type %t977, ptr %t981 - store i64 %t979, ptr %t958 - %t982 = getelementptr inbounds %S.gen.FnSig, ptr %a852, i32 0, i32 14 - %t983 = getelementptr inbounds { ptr, i64, i64 }, ptr %t982, i32 0, i32 1 - %t984 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 9 - %t985 = load i64, ptr %a917 - %t986 = load { ptr, i64, i64 }, ptr %t984 - %t987 = extractvalue { ptr, i64, i64 } %t986, 1 - %t988 = icmp uge i64 %t985, %t987 - br i1 %t988, label %range3466, label %inrange3467 -range3466: - call void @finch_panic_index(ptr @.str.2211, i64 1399, i64 %t985, i64 %t987) - unreachable -inrange3467: - %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 - %t992 = load { ptr, i64, i64 }, ptr %t991 - store { ptr, i64, i64 } %t992, ptr %a993 - call void @finch_str_copy(ptr %a994, ptr %a993) - %t995 = load { ptr, i64, i64 }, ptr %a994 - %t996 = load i64, ptr %t983 - %t997 = add i64 %t996, 1 - call void @finch_arr_reserve(ptr %t982, i64 %t997, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t998 = load ptr, ptr %t982 - %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.step3449 -for.step3449: - %t1000 = load i64, ptr %a917 - %t1001 = add i64 %t1000, 1 - store i64 %t1001, ptr %a917 - br label %for.cond3447 -for.end3450: - %t1002 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 8 - %t1003 = load i1, ptr %t1002 - br i1 %t1003, label %then3468, label %endif3470 -then3468: - %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 %endif3470 -endif3470: - %t1007 = load ptr, ptr %a1 - %t1008 = icmp eq ptr %t1007, null - br i1 %t1008, label %panic3471, label %ok3472 -panic3471: - call void @finch_panic(ptr @.str.2212, i64 1404, ptr @.str.2213) - unreachable -ok3472: - %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 - store %S.gen.FnSig %t1011, ptr %a1012 - call void @finch.copy.S_gen_FnSig(ptr %a1013, ptr %a1012) - %t1014 = load %S.gen.FnSig, ptr %a1013 - %t1015 = load i64, ptr %t1010 - %t1016 = add i64 %t1015, 1 - call void @finch_arr_reserve(ptr %t1009, i64 %t1016, i64 ptrtoint (ptr getelementptr (%S.gen.FnSig, ptr null, i32 1) to i64)) - %t1017 = load ptr, ptr %t1009 - %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.step3357 -for.step3357: - %t1019 = load i64, ptr %a492 - %t1020 = add i64 %t1019, 1 - store i64 %t1020, ptr %a492 - br label %for.cond3355 -for.end3358: - br label %for.step3343 -for.step3343: - %t1021 = load i64, ptr %a460 - %t1022 = add i64 %t1021, 1 - store i64 %t1022, ptr %a460 - br label %for.cond3341 -for.end3344: - store i1 true, ptr %a1023 - br label %while.cond3473 -while.cond3473: - %t1024 = load i1, ptr %a1023 - br i1 %t1024, label %while.body3474, label %while.end3475 -while.body3474: - store i1 false, ptr %a1023 - %t1025 = load ptr, ptr %a1 - %t1026 = icmp eq ptr %t1025, null - br i1 %t1026, label %panic3476, label %ok3477 -panic3476: - call void @finch_panic(ptr @.str.2214, i64 1412, ptr @.str.2215) - unreachable -ok3477: - %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.cond3478 -for.cond3478: - %t1031 = load i64, ptr %a1030 - %t1032 = icmp slt i64 %t1031, %t1029 - br i1 %t1032, label %for.body3479, label %for.end3481 -for.body3479: - %t1033 = load ptr, ptr %a1 - %t1034 = icmp eq ptr %t1033, null - br i1 %t1034, label %panic3482, label %ok3483 -panic3482: - call void @finch_panic(ptr @.str.2216, i64 1413, ptr @.str.2217) - unreachable -ok3483: - %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 %range3484, label %inrange3485 -range3484: - call void @finch_panic_index(ptr @.str.2218, i64 1413, i64 %t1036, i64 %t1038) - unreachable -inrange3485: - %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.from3486 -logic.from3486: - br i1 %t1045, label %logic.rhs3487, label %logic.end3488 -logic.rhs3487: - %t1046 = load ptr, ptr %a1 - %t1047 = icmp eq ptr %t1046, null - br i1 %t1047, label %panic3489, label %ok3490 -panic3489: - call void @finch_panic(ptr @.str.2219, i64 1413, ptr @.str.2220) - unreachable -ok3490: - %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 %range3491, label %inrange3492 -range3491: - call void @finch_panic_index(ptr @.str.2221, i64 1413, i64 %t1049, i64 %t1051) - unreachable -inrange3492: - %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.rend3493 -logic.rend3493: - br label %logic.end3488 -logic.end3488: - %t1058 = phi i1 [ false, %logic.from3486 ], [ %t1057, %logic.rend3493 ] - br i1 %t1058, label %then3494, label %endif3496 -then3494: - %t1059 = load ptr, ptr %a1 - %t1060 = icmp eq ptr %t1059, null - br i1 %t1060, label %panic3497, label %ok3498 -panic3497: - call void @finch_panic(ptr @.str.2222, i64 1414, ptr @.str.2223) - unreachable -ok3498: - %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 %panic3499, label %ok3500 -panic3499: - call void @finch_panic(ptr @.str.2224, i64 1414, ptr @.str.2225) - unreachable -ok3500: - %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 %range3501, label %inrange3502 -range3501: - call void @finch_panic_index(ptr @.str.2226, i64 1414, i64 %t1065, i64 %t1067) - unreachable -inrange3502: - %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 - %t1072 = load i64, ptr %t1071 - %t1073 = load { ptr, i64, i64 }, ptr %t1061 - %t1074 = extractvalue { ptr, i64, i64 } %t1073, 1 - %t1075 = icmp uge i64 %t1072, %t1074 - br i1 %t1075, label %range3503, label %inrange3504 -range3503: - call void @finch_panic_index(ptr @.str.2227, i64 1414, i64 %t1072, i64 %t1074) - unreachable -inrange3504: - %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 %panic3505, label %ok3506 -panic3505: - call void @finch_panic(ptr @.str.2228, i64 1414, ptr @.str.2229) - unreachable -ok3506: - %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 %range3507, label %inrange3508 -range3507: - call void @finch_panic_index(ptr @.str.2230, i64 1414, i64 %t1082, i64 %t1084) - unreachable -inrange3508: - %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 - %t1089 = load i64, ptr %t1088 - %t1090 = load { ptr, i64, i64 }, ptr %t1078 - %t1091 = extractvalue { ptr, i64, i64 } %t1090, 1 - %t1092 = icmp uge i64 %t1089, %t1091 - br i1 %t1092, label %range3509, label %inrange3510 -range3509: - call void @finch_panic_index(ptr @.str.2231, i64 1414, i64 %t1089, i64 %t1091) - unreachable -inrange3510: - %t1093 = extractvalue { ptr, i64, i64 } %t1090, 0 - %t1094 = getelementptr inbounds %S.ast.Node, ptr %t1093, i64 %t1089 - %t1095 = load %S.ast.Node, ptr %t1094 - store %S.ast.Node %t1095, ptr %a1096 - call void @finch.copy.S_ast_Node(ptr %a1097, ptr %a1096) - %t1098 = load %S.ast.Node, ptr %a1097 - store %S.ast.Node %t1098, ptr %a1099 - %t1100 = load ptr, ptr %a1 - %t1101 = getelementptr inbounds %S.ast.Node, ptr %a1099, i32 0, i32 9 - %t1102 = getelementptr inbounds %S.ast.Node, ptr %a1099, i32 0, i32 9 - %t1103 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1102, i32 0, i32 1 - %t1104 = load i64, ptr %t1103 - %t1105 = sub i64 %t1104, 1 - %t1106 = load { ptr, i64, i64 }, ptr %t1101 - %t1107 = extractvalue { ptr, i64, i64 } %t1106, 1 - %t1108 = icmp uge i64 %t1105, %t1107 - br i1 %t1108, label %range3511, label %inrange3512 -range3511: - call void @finch_panic_index(ptr @.str.2233, i64 1415, i64 %t1105, i64 %t1107) - unreachable -inrange3512: - %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.2232, i64 4, i64 0 }, %S.ast.Node %t1111) - br i1 %t1112, label %then3513, label %endif3515 -then3513: - %t1113 = load ptr, ptr %a1 - %t1114 = icmp eq ptr %t1113, null - br i1 %t1114, label %panic3516, label %ok3517 -panic3516: - call void @finch_panic(ptr @.str.2234, i64 1416, ptr @.str.2235) - unreachable -ok3517: - %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 %range3518, label %inrange3519 -range3518: - call void @finch_panic_index(ptr @.str.2236, i64 1416, i64 %t1116, i64 %t1118) - unreachable -inrange3519: - %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 %panic3520, label %ok3521 -panic3520: - call void @finch_panic(ptr @.str.2237, i64 1417, ptr @.str.2238) - unreachable -ok3521: - %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 %panic3522, label %ok3523 -panic3522: - call void @finch_panic(ptr @.str.2239, i64 1417, ptr @.str.2240) - unreachable -ok3523: - %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 %range3524, label %inrange3525 -range3524: - call void @finch_panic_index(ptr @.str.2241, i64 1417, i64 %t1130, i64 %t1132) - unreachable -inrange3525: - %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 - %t1137 = load { ptr, i64, i64 }, ptr %t1136 - store { ptr, i64, i64 } %t1137, ptr %a1138 - call void @finch_str_copy(ptr %a1139, ptr %a1138) - %t1140 = load { ptr, i64, i64 }, ptr %a1139 - %t1141 = load i64, ptr %t1126 - %t1142 = add i64 %t1141, 1 - call void @finch_arr_reserve(ptr %t1125, i64 %t1142, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t1143 = load ptr, ptr %t1125 - %t1144 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1143, i64 %t1141 - store { ptr, i64, i64 } %t1140, ptr %t1144 - store i64 %t1142, ptr %t1126 - store i1 true, ptr %a1023 - br label %endif3515 -endif3515: - br label %endif3496 -endif3496: - br label %for.step3480 -for.step3480: - %t1145 = load i64, ptr %a1030 - %t1146 = add i64 %t1145, 1 - store i64 %t1146, ptr %a1030 - br label %for.cond3478 -for.end3481: - %t1147 = load ptr, ptr %a1 - %t1148 = icmp eq ptr %t1147, null - br i1 %t1148, label %panic3526, label %ok3527 -panic3526: - call void @finch_panic(ptr @.str.2242, i64 1422, ptr @.str.2243) - unreachable -ok3527: - %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.cond3528 -for.cond3528: - %t1153 = load i64, ptr %a1152 - %t1154 = icmp slt i64 %t1153, %t1151 - br i1 %t1154, label %for.body3529, label %for.end3531 -for.body3529: - %t1155 = load ptr, ptr %a1 - %t1156 = icmp eq ptr %t1155, null - br i1 %t1156, label %panic3532, label %ok3533 -panic3532: - call void @finch_panic(ptr @.str.2244, i64 1423, ptr @.str.2245) - unreachable -ok3533: - %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 %range3534, label %inrange3535 -range3534: - call void @finch_panic_index(ptr @.str.2246, i64 1423, i64 %t1158, i64 %t1160) - unreachable -inrange3535: - %t1162 = extractvalue { ptr, i64, i64 } %t1159, 0 - %t1163 = getelementptr inbounds %S.gen.Template, ptr %t1162, i64 %t1158 - %t1164 = load %S.gen.Template, ptr %t1163 - store %S.gen.Template %t1164, ptr %a1165 - call void @finch.copy.S_gen_Template(ptr %a1166, ptr %a1165) - %t1167 = load %S.gen.Template, ptr %a1166 - store %S.gen.Template %t1167, ptr %a1168 - %t1169 = getelementptr inbounds %S.gen.Template, ptr %a1168, i32 0, i32 2 - %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.from3536 -logic.from3536: - br i1 %t1172, label %logic.rhs3537, label %logic.end3538 -logic.rhs3537: - %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.rend3539 -logic.rend3539: - br label %logic.end3538 -logic.end3538: - %t1176 = phi i1 [ false, %logic.from3536 ], [ %t1175, %logic.rend3539 ] - br i1 %t1176, label %then3540, label %endif3542 -then3540: - %t1177 = load ptr, ptr %a1 - %t1178 = icmp eq ptr %t1177, null - br i1 %t1178, label %panic3543, label %ok3544 -panic3543: - call void @finch_panic(ptr @.str.2247, i64 1425, ptr @.str.2248) - unreachable -ok3544: - %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 %range3545, label %inrange3546 -range3545: - call void @finch_panic_index(ptr @.str.2249, i64 1425, i64 %t1181, i64 %t1183) - unreachable -inrange3546: - %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 - %t1188 = getelementptr inbounds %S.gen.Template, ptr %a1168, i32 0, i32 5 - %t1189 = load i64, ptr %t1188 - %t1190 = load { ptr, i64, i64 }, ptr %t1187 - %t1191 = extractvalue { ptr, i64, i64 } %t1190, 1 - %t1192 = icmp uge i64 %t1189, %t1191 - br i1 %t1192, label %range3547, label %inrange3548 -range3547: - call void @finch_panic_index(ptr @.str.2250, i64 1425, i64 %t1189, i64 %t1191) - unreachable -inrange3548: - %t1193 = extractvalue { ptr, i64, i64 } %t1190, 0 - %t1194 = getelementptr inbounds %S.ast.Node, ptr %t1193, i64 %t1189 - %t1195 = load %S.ast.Node, ptr %t1194 - store %S.ast.Node %t1195, ptr %a1196 - call void @finch.copy.S_ast_Node(ptr %a1197, ptr %a1196) - %t1198 = load %S.ast.Node, ptr %a1197 - store %S.ast.Node %t1198, ptr %a1199 - %t1200 = load ptr, ptr %a1 - %t1201 = getelementptr inbounds %S.ast.Node, ptr %a1199, i32 0, i32 9 - %t1202 = getelementptr inbounds %S.ast.Node, ptr %a1199, i32 0, i32 9 - %t1203 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1202, i32 0, i32 1 - %t1204 = load i64, ptr %t1203 - %t1205 = sub i64 %t1204, 1 - %t1206 = load { ptr, i64, i64 }, ptr %t1201 - %t1207 = extractvalue { ptr, i64, i64 } %t1206, 1 - %t1208 = icmp uge i64 %t1205, %t1207 - br i1 %t1208, label %range3549, label %inrange3550 -range3549: - call void @finch_panic_index(ptr @.str.2252, i64 1426, i64 %t1205, i64 %t1207) - unreachable -inrange3550: - %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.2251, i64 4, i64 0 }, %S.ast.Node %t1211) - br i1 %t1212, label %then3551, label %endif3553 -then3551: - %t1213 = load ptr, ptr %a1 - %t1214 = icmp eq ptr %t1213, null - br i1 %t1214, label %panic3554, label %ok3555 -panic3554: - call void @finch_panic(ptr @.str.2253, i64 1427, ptr @.str.2254) - unreachable -ok3555: - %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 %range3556, label %inrange3557 -range3556: - call void @finch_panic_index(ptr @.str.2255, i64 1427, i64 %t1216, i64 %t1218) - unreachable -inrange3557: - %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 %panic3558, label %ok3559 -panic3558: - call void @finch_panic(ptr @.str.2256, i64 1428, ptr @.str.2257) - unreachable -ok3559: - %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 - %t1228 = load { ptr, i64, i64 }, ptr %t1227 - store { ptr, i64, i64 } %t1228, ptr %a1229 - call void @finch_str_copy(ptr %a1230, ptr %a1229) - %t1231 = load { ptr, i64, i64 }, ptr %a1230 - %t1232 = load i64, ptr %t1226 - %t1233 = add i64 %t1232, 1 - call void @finch_arr_reserve(ptr %t1225, i64 %t1233, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t1234 = load ptr, ptr %t1225 - %t1235 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1234, i64 %t1232 - store { ptr, i64, i64 } %t1231, ptr %t1235 - store i64 %t1233, ptr %t1226 - store i1 true, ptr %a1023 - br label %endif3553 -endif3553: - br label %endif3542 -endif3542: - br label %for.step3530 -for.step3530: - %t1236 = load i64, ptr %a1152 - %t1237 = add i64 %t1236, 1 - store i64 %t1237, ptr %a1152 - br label %for.cond3528 -for.end3531: - br label %while.cond3473 -while.end3475: - %t1238 = load ptr, ptr %a1 - %t1239 = icmp eq ptr %t1238, null - br i1 %t1239, label %panic3560, label %ok3561 + %t489 = getelementptr inbounds %S.ast.Program, ptr %t488, i32 0, i32 0 + %t490 = load { ptr, i64, i64 }, ptr %t489 + %t491 = load ptr, ptr %a1 + %t492 = icmp eq ptr %t491, null + br i1 %t492, label %panic3560, label %ok3561 panic3560: - call void @finch_panic(ptr @.str.2258, i64 1435, ptr @.str.2259) + call void @finch_panic(ptr @.str.2227, i64 1492, ptr @.str.2228) unreachable ok3561: - %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.cond3562 -for.cond3562: - %t1244 = load i64, ptr %a1243 - %t1245 = icmp slt i64 %t1244, %t1242 - br i1 %t1245, label %for.body3563, label %for.end3565 -for.body3563: - %t1246 = load ptr, ptr %a1 - %t1247 = icmp eq ptr %t1246, null - br i1 %t1247, label %panic3566, label %ok3567 -panic3566: - call void @finch_panic(ptr @.str.2260, i64 1436, ptr @.str.2261) + %t493 = getelementptr inbounds %S.gen.Gen, ptr %t491, i32 0, i32 14 + store { ptr, i64, i64 } %t490, ptr %a494 + call void @finch_str_copy(ptr %a495, ptr %a494) + %t496 = load { ptr, i64, i64 }, ptr %a495 + %t497 = load { ptr, i64, i64 }, ptr %t493 + store { ptr, i64, i64 } %t496, ptr %t493 + store { ptr, i64, i64 } %t497, ptr %a498 + call void @finch_str_drop(ptr %a498) + %t499 = load ptr, ptr %a1 + %t500 = icmp eq ptr %t499, null + br i1 %t500, label %panic3562, label %ok3563 +panic3562: + call void @finch_panic(ptr @.str.2229, i64 1493, ptr @.str.2230) unreachable -ok3567: - %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 %panic3568, label %ok3569 -panic3568: - call void @finch_panic(ptr @.str.2262, i64 1436, ptr @.str.2263) +ok3563: + %t501 = getelementptr inbounds %S.gen.Gen, ptr %t499, i32 0, i32 0 + %t502 = load i64, ptr %a477 + %t503 = load { ptr, i64, i64 }, ptr %t501 + %t504 = extractvalue { ptr, i64, i64 } %t503, 1 + %t505 = icmp uge i64 %t502, %t504 + br i1 %t505, label %range3564, label %inrange3565 +range3564: + call void @finch_panic_index(ptr @.str.2231, i64 1493, i64 %t502, i64 %t504) unreachable -ok3569: - %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 %range3570, label %inrange3571 -range3570: - call void @finch_panic_index(ptr @.str.2264, i64 1436, i64 %t1252, i64 %t1254) +inrange3565: + %t506 = extractvalue { ptr, i64, i64 } %t503, 0 + %t507 = getelementptr inbounds %S.ast.Program, ptr %t506, i64 %t502 + %t508 = getelementptr inbounds %S.ast.Program, ptr %t507, i32 0, i32 8 + %t509 = getelementptr inbounds { ptr, i64, i64 }, ptr %t508, i32 0, i32 1 + %t510 = load i64, ptr %t509 + store i64 0, ptr %a511 + br label %for.cond3566 +for.cond3566: + %t512 = load i64, ptr %a511 + %t513 = icmp slt i64 %t512, %t510 + br i1 %t513, label %for.body3567, label %for.end3569 +for.body3567: + %t514 = load ptr, ptr %a1 + %t515 = icmp eq ptr %t514, null + br i1 %t515, label %panic3570, label %ok3571 +panic3570: + call void @finch_panic(ptr @.str.2232, i64 1494, ptr @.str.2233) unreachable -inrange3571: - %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 - %t1259 = load i64, ptr %t1258 - %t1260 = load { ptr, i64, i64 }, ptr %t1248 - %t1261 = extractvalue { ptr, i64, i64 } %t1260, 1 - %t1262 = icmp uge i64 %t1259, %t1261 - br i1 %t1262, label %range3572, label %inrange3573 +ok3571: + %t516 = getelementptr inbounds %S.gen.Gen, ptr %t514, i32 0, i32 0 + %t517 = load i64, ptr %a477 + %t518 = load { ptr, i64, i64 }, ptr %t516 + %t519 = extractvalue { ptr, i64, i64 } %t518, 1 + %t520 = icmp uge i64 %t517, %t519 + br i1 %t520, label %range3572, label %inrange3573 range3572: - call void @finch_panic_index(ptr @.str.2265, i64 1436, i64 %t1259, i64 %t1261) + call void @finch_panic_index(ptr @.str.2234, i64 1494, i64 %t517, i64 %t519) unreachable inrange3573: - %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 %panic3574, label %ok3575 -panic3574: - call void @finch_panic(ptr @.str.2266, i64 1436, ptr @.str.2267) + %t521 = extractvalue { ptr, i64, i64 } %t518, 0 + %t522 = getelementptr inbounds %S.ast.Program, ptr %t521, i64 %t517 + %t523 = getelementptr inbounds %S.ast.Program, ptr %t522, i32 0, i32 8 + %t524 = load i64, ptr %a511 + %t525 = load { ptr, i64, i64 }, ptr %t523 + %t526 = extractvalue { ptr, i64, i64 } %t525, 1 + %t527 = icmp uge i64 %t524, %t526 + br i1 %t527, label %range3574, label %inrange3575 +range3574: + call void @finch_panic_index(ptr @.str.2235, i64 1494, i64 %t524, i64 %t526) unreachable -ok3575: - %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 %range3576, label %inrange3577 -range3576: - call void @finch_panic_index(ptr @.str.2268, i64 1436, i64 %t1269, i64 %t1271) +inrange3575: + %t528 = extractvalue { ptr, i64, i64 } %t525, 0 + %t529 = getelementptr inbounds %S.ast.Node, ptr %t528, i64 %t524 + %t530 = load %S.ast.Node, ptr %t529 + store %S.ast.Node %t530, ptr %a531 + call void @finch.copy.S_ast_Node(ptr %a532, ptr %a531) + %t533 = load %S.ast.Node, ptr %a532 + store %S.ast.Node %t533, ptr %a534 + %t535 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 3 + %t536 = getelementptr inbounds { ptr, i64, i64 }, ptr %t535, i32 0, i32 1 + %t537 = load i64, ptr %t536 + %t538 = icmp sgt i64 %t537, 0 + br i1 %t538, label %then3576, label %endif3578 +then3576: + %t539 = load ptr, ptr %a1 + %t540 = load ptr, ptr %a1 + %t541 = icmp eq ptr %t540, null + br i1 %t541, label %panic3579, label %ok3580 +panic3579: + call void @finch_panic(ptr @.str.2236, i64 1497, ptr @.str.2237) unreachable -inrange3577: - %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 - %t1276 = load i64, ptr %t1275 - %t1277 = load { ptr, i64, i64 }, ptr %t1265 - %t1278 = extractvalue { ptr, i64, i64 } %t1277, 1 - %t1279 = icmp uge i64 %t1276, %t1278 - br i1 %t1279, label %range3578, label %inrange3579 -range3578: - call void @finch_panic_index(ptr @.str.2269, i64 1436, i64 %t1276, i64 %t1278) +ok3580: + %t542 = getelementptr inbounds %S.gen.Gen, ptr %t540, i32 0, i32 14 + %t543 = load { ptr, i64, i64 }, ptr %t542 + %t544 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 1 + %t545 = load { ptr, i64, i64 }, ptr %t544 + %t546 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 2 + %t547 = load { ptr, i64, i64 }, ptr %t546 + %t548 = call i64 @finch.gen.findTemplate(ptr %t539, { ptr, i64, i64 } %t543, { ptr, i64, i64 } %t545, { ptr, i64, i64 } %t547, i1 false) + %t549 = icmp sge i64 %t548, 0 + br i1 %t549, label %then3581, label %endif3583 +then3581: + %t550 = load ptr, ptr %a1 + %t551 = load %S.ast.Node, ptr %a534 + %t552 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 1 + %t553 = load { ptr, i64, i64 }, ptr %t552 + store { ptr, i64, i64 } { ptr @.str.2238, i64 10, i64 0 }, ptr %a555 + store { ptr, i64, i64 } %t553, ptr %a556 + call void @finch_str_concat(ptr %a554, ptr %a555, ptr %a556) + %t557 = load { ptr, i64, i64 }, ptr %a554 + store { ptr, i64, i64 } %t557, ptr %a559 + store { ptr, i64, i64 } { ptr @.str.2239, i64 18, i64 0 }, ptr %a560 + call void @finch_str_concat(ptr %a558, ptr %a559, ptr %a560) + store { ptr, i64, i64 } %t557, ptr %a561 + call void @finch_str_drop(ptr %a561) + %t562 = load { ptr, i64, i64 }, ptr %a558 + call void @finch.gen.fail(ptr %t550, %S.ast.Node %t551, { ptr, i64, i64 } %t562) + store { ptr, i64, i64 } %t562, ptr %a563 + call void @finch_str_drop(ptr %a563) + br label %endif3583 +endif3583: + %t564 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 2 + %t565 = getelementptr inbounds { ptr, i64, i64 }, ptr %t564, i32 0, i32 1 + %t566 = load i64, ptr %t565 + %t567 = icmp sgt i64 %t566, 0 + br label %logic.from3584 +logic.from3584: + br i1 %t567, label %logic.rhs3585, label %logic.end3586 +logic.rhs3585: + %t568 = load ptr, ptr %a1 + %t569 = load ptr, ptr %a1 + %t570 = icmp eq ptr %t569, null + br i1 %t570, label %panic3587, label %ok3588 +panic3587: + call void @finch_panic(ptr @.str.2240, i64 1500, ptr @.str.2241) unreachable -inrange3579: - %t1280 = extractvalue { ptr, i64, i64 } %t1277, 0 - %t1281 = getelementptr inbounds %S.ast.Node, ptr %t1280, i64 %t1276 - %t1282 = load %S.ast.Node, ptr %t1281 - store %S.ast.Node %t1282, ptr %a1283 - call void @finch.copy.S_ast_Node(ptr %a1284, ptr %a1283) - %t1285 = load %S.ast.Node, ptr %a1284 - store %S.ast.Node %t1285, ptr %a1286 - %t1287 = getelementptr inbounds %S.ast.Node, ptr %a1286, i32 0, i32 9 - %t1288 = getelementptr inbounds %S.ast.Node, ptr %a1286, i32 0, i32 9 - %t1289 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1288, i32 0, i32 1 - %t1290 = load i64, ptr %t1289 - %t1291 = sub i64 %t1290, 1 - %t1292 = load { ptr, i64, i64 }, ptr %t1287 - %t1293 = extractvalue { ptr, i64, i64 } %t1292, 1 - %t1294 = icmp uge i64 %t1291, %t1293 - br i1 %t1294, label %range3580, label %inrange3581 -range3580: - call void @finch_panic_index(ptr @.str.2270, i64 1437, i64 %t1291, i64 %t1293) +ok3588: + %t571 = getelementptr inbounds %S.gen.Gen, ptr %t569, i32 0, i32 14 + %t572 = load { ptr, i64, i64 }, ptr %t571 + %t573 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 2 + %t574 = load { ptr, i64, i64 }, ptr %t573 + %t575 = call i64 @finch.gen.findTemplate(ptr %t568, { ptr, i64, i64 } %t572, { ptr, i64, i64 } %t574, { ptr, i64, i64 } { ptr @.str.2242, i64 0, i64 0 }, i1 true) + %t576 = icmp slt i64 %t575, 0 + br label %logic.rend3589 +logic.rend3589: + br label %logic.end3586 +logic.end3586: + %t577 = phi i1 [ false, %logic.from3584 ], [ %t576, %logic.rend3589 ] + br i1 %t577, label %then3590, label %endif3592 +then3590: + %t578 = load ptr, ptr %a1 + %t579 = load %S.ast.Node, ptr %a534 + %t580 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 2 + %t581 = load { ptr, i64, i64 }, ptr %t580 + store { ptr, i64, i64 } { ptr @.str.2243, i64 34, i64 0 }, ptr %a583 + store { ptr, i64, i64 } %t581, ptr %a584 + call void @finch_str_concat(ptr %a582, ptr %a583, ptr %a584) + %t585 = load { ptr, i64, i64 }, ptr %a582 + store { ptr, i64, i64 } %t585, ptr %a587 + store { ptr, i64, i64 } { ptr @.str.2244, i64 53, i64 0 }, ptr %a588 + call void @finch_str_concat(ptr %a586, ptr %a587, ptr %a588) + store { ptr, i64, i64 } %t585, ptr %a589 + call void @finch_str_drop(ptr %a589) + %t590 = load { ptr, i64, i64 }, ptr %a586 + call void @finch.gen.fail(ptr %t578, %S.ast.Node %t579, { ptr, i64, i64 } %t590) + store { ptr, i64, i64 } %t590, ptr %a591 + call void @finch_str_drop(ptr %a591) + br label %endif3592 +endif3592: + %t592 = load ptr, ptr %a1 + %t593 = icmp eq ptr %t592, null + br i1 %t593, label %panic3593, label %ok3594 +panic3593: + call void @finch_panic(ptr @.str.2245, i64 1503, ptr @.str.2246) unreachable -inrange3581: - %t1295 = extractvalue { ptr, i64, i64 } %t1292, 0 - %t1296 = getelementptr inbounds %S.ast.Node, ptr %t1295, i64 %t1291 - %t1297 = load %S.ast.Node, ptr %t1296 - store %S.ast.Node %t1297, ptr %a1298 - call void @finch.copy.S_ast_Node(ptr %a1299, ptr %a1298) - %t1300 = load %S.ast.Node, ptr %a1299 - store %S.ast.Node %t1300, ptr %a1301 - %t1302 = load ptr, ptr %a1 - %t1303 = icmp eq ptr %t1302, null - br i1 %t1303, label %panic3582, label %ok3583 -panic3582: - call void @finch_panic(ptr @.str.2271, i64 1438, ptr @.str.2272) +ok3594: + %t594 = getelementptr inbounds %S.gen.Gen, ptr %t592, i32 0, i32 17 + %t595 = getelementptr inbounds { ptr, i64, i64 }, ptr %t594, i32 0, i32 1 + %t596 = load ptr, ptr %a1 + %t597 = icmp eq ptr %t596, null + br i1 %t597, label %panic3595, label %ok3596 +panic3595: + call void @finch_panic(ptr @.str.2247, i64 1503, ptr @.str.2248) unreachable -ok3583: - %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 %range3584, label %inrange3585 -range3584: - call void @finch_panic_index(ptr @.str.2273, i64 1438, i64 %t1305, i64 %t1307) +ok3596: + %t598 = getelementptr inbounds %S.gen.Gen, ptr %t596, i32 0, i32 14 + %t599 = load { ptr, i64, i64 }, ptr %t598 + store { ptr, i64, i64 } %t599, ptr %a600 + call void @finch_str_copy(ptr %a601, ptr %a600) + %t602 = load { ptr, i64, i64 }, ptr %a601 + %t603 = insertvalue %S.gen.Template zeroinitializer, { ptr, i64, i64 } %t602, 0 + %t604 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 1 + %t605 = load { ptr, i64, i64 }, ptr %t604 + store { ptr, i64, i64 } %t605, ptr %a606 + call void @finch_str_copy(ptr %a607, ptr %a606) + %t608 = load { ptr, i64, i64 }, ptr %a607 + %t609 = insertvalue %S.gen.Template %t603, { ptr, i64, i64 } %t608, 1 + %t610 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 2 + %t611 = load { ptr, i64, i64 }, ptr %t610 + store { ptr, i64, i64 } %t611, ptr %a612 + call void @finch_str_copy(ptr %a613, ptr %a612) + %t614 = load { ptr, i64, i64 }, ptr %a613 + %t615 = insertvalue %S.gen.Template %t609, { ptr, i64, i64 } %t614, 2 + %t616 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 3 + %t617 = load { ptr, i64, i64 }, ptr %t616 + store { ptr, i64, i64 } %t617, ptr %a618 + call void @finch.copy.arr_str(ptr %a619, ptr %a618) + %t620 = load { ptr, i64, i64 }, ptr %a619 + %t621 = insertvalue %S.gen.Template %t615, { ptr, i64, i64 } %t620, 3 + %t622 = load i64, ptr %a477 + %t623 = insertvalue %S.gen.Template %t621, i64 %t622, 4 + %t624 = load i64, ptr %a511 + %t625 = insertvalue %S.gen.Template %t623, i64 %t624, 5 + %t626 = load i64, ptr %t595 + %t627 = add i64 %t626, 1 + call void @finch_arr_reserve(ptr %t594, i64 %t627, i64 ptrtoint (ptr getelementptr (%S.gen.Template, ptr null, i32 1) to i64)) + %t628 = load ptr, ptr %t594 + %t629 = getelementptr inbounds %S.gen.Template, ptr %t628, i64 %t626 + store %S.gen.Template %t625, ptr %t629 + store i64 %t627, ptr %t595 + call void @finch.drop.S_ast_Node(ptr %a534) + br label %for.step3568 +endif3578: + %t630 = load ptr, ptr %a1 + %t631 = icmp eq ptr %t630, null + br i1 %t631, label %panic3597, label %ok3598 +panic3597: + call void @finch_panic(ptr @.str.2249, i64 1506, ptr @.str.2250) unreachable -inrange3585: - %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.cond3586 -for.cond3586: - %t1315 = load i64, ptr %a1314 - %t1316 = icmp slt i64 %t1315, %t1313 - br i1 %t1316, label %for.body3587, label %for.end3589 -for.body3587: - %t1317 = load ptr, ptr %a1 - %t1318 = icmp eq ptr %t1317, null - br i1 %t1318, label %panic3590, label %ok3591 -panic3590: - call void @finch_panic(ptr @.str.2274, i64 1439, ptr @.str.2275) +ok3598: + %t632 = getelementptr inbounds %S.gen.Gen, ptr %t630, i32 0, i32 14 + %t633 = load { ptr, i64, i64 }, ptr %t632 + store { ptr, i64, i64 } %t633, ptr %a634 + call void @finch_str_copy(ptr %a635, ptr %a634) + %t636 = load { ptr, i64, i64 }, ptr %a635 + store { ptr, i64, i64 } %t636, ptr %a637 + store i1 false, ptr %a638 + %t639 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 2 + %t640 = getelementptr inbounds { ptr, i64, i64 }, ptr %t639, i32 0, i32 1 + %t641 = load i64, ptr %t640 + %t642 = icmp sgt i64 %t641, 0 + br label %logic.from3599 +logic.from3599: + br i1 %t642, label %logic.rhs3600, label %logic.end3601 +logic.rhs3600: + %t643 = load ptr, ptr %a1 + %t644 = load ptr, ptr %a1 + %t645 = icmp eq ptr %t644, null + br i1 %t645, label %panic3602, label %ok3603 +panic3602: + call void @finch_panic(ptr @.str.2251, i64 1508, ptr @.str.2252) unreachable -ok3591: - %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 %range3592, label %inrange3593 -range3592: - call void @finch_panic_index(ptr @.str.2276, i64 1439, i64 %t1320, i64 %t1322) +ok3603: + %t646 = getelementptr inbounds %S.gen.Gen, ptr %t644, i32 0, i32 14 + %t647 = load { ptr, i64, i64 }, ptr %t646 + %t648 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 2 + %t649 = load { ptr, i64, i64 }, ptr %t648 + %t650 = call i64 @finch.gen.findEnum(ptr %t643, { ptr, i64, i64 } %t647, { ptr, i64, i64 } %t649) + %t651 = icmp sge i64 %t650, 0 + br label %logic.rend3604 +logic.rend3604: + br label %logic.end3601 +logic.end3601: + %t652 = phi i1 [ false, %logic.from3599 ], [ %t651, %logic.rend3604 ] + br i1 %t652, label %then3605, label %else3606 +then3605: + store i1 true, ptr %a638 + %t653 = load ptr, ptr %a1 + %t654 = load { ptr, i64, i64 }, ptr %a637 + %t655 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 2 + %t656 = load { ptr, i64, i64 }, ptr %t655 + %t657 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 1 + %t658 = load { ptr, i64, i64 }, ptr %t657 + %t659 = call i64 @finch.gen.findMethod(ptr %t653, { ptr, i64, i64 } %t654, { ptr, i64, i64 } %t656, { ptr, i64, i64 } %t658) + %t660 = icmp sge i64 %t659, 0 + br i1 %t660, label %then3608, label %endif3610 +then3608: + %t661 = load ptr, ptr %a1 + %t662 = load %S.ast.Node, ptr %a534 + %t663 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 2 + %t664 = load { ptr, i64, i64 }, ptr %t663 + store { ptr, i64, i64 } { ptr @.str.2253, i64 11, i64 0 }, ptr %a666 + store { ptr, i64, i64 } %t664, ptr %a667 + call void @finch_str_concat(ptr %a665, ptr %a666, ptr %a667) + %t668 = load { ptr, i64, i64 }, ptr %a665 + store { ptr, i64, i64 } %t668, ptr %a670 + store { ptr, i64, i64 } { ptr @.str.2254, i64 1, i64 0 }, ptr %a671 + call void @finch_str_concat(ptr %a669, ptr %a670, ptr %a671) + store { ptr, i64, i64 } %t668, ptr %a672 + call void @finch_str_drop(ptr %a672) + %t673 = load { ptr, i64, i64 }, ptr %a669 + %t674 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 1 + %t675 = load { ptr, i64, i64 }, ptr %t674 + store { ptr, i64, i64 } %t673, ptr %a677 + store { ptr, i64, i64 } %t675, ptr %a678 + call void @finch_str_concat(ptr %a676, ptr %a677, ptr %a678) + store { ptr, i64, i64 } %t673, ptr %a679 + call void @finch_str_drop(ptr %a679) + %t680 = load { ptr, i64, i64 }, ptr %a676 + store { ptr, i64, i64 } %t680, ptr %a682 + store { ptr, i64, i64 } { ptr @.str.2255, i64 17, i64 0 }, ptr %a683 + call void @finch_str_concat(ptr %a681, ptr %a682, ptr %a683) + store { ptr, i64, i64 } %t680, ptr %a684 + call void @finch_str_drop(ptr %a684) + %t685 = load { ptr, i64, i64 }, ptr %a681 + call void @finch.gen.fail(ptr %t661, %S.ast.Node %t662, { ptr, i64, i64 } %t685) + store { ptr, i64, i64 } %t685, ptr %a686 + call void @finch_str_drop(ptr %a686) + br label %endif3610 +endif3610: + br label %endif3607 +else3606: + %t687 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 2 + %t688 = getelementptr inbounds { ptr, i64, i64 }, ptr %t687, i32 0, i32 1 + %t689 = load i64, ptr %t688 + %t690 = icmp sgt i64 %t689, 0 + br i1 %t690, label %then3611, label %else3612 +then3611: + %t691 = load ptr, ptr %a1 + %t692 = load ptr, ptr %a1 + %t693 = icmp eq ptr %t692, null + br i1 %t693, label %panic3614, label %ok3615 +panic3614: + call void @finch_panic(ptr @.str.2256, i64 1514, ptr @.str.2257) unreachable -inrange3593: - %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 - %t1327 = load i64, ptr %a1314 - %t1328 = load { ptr, i64, i64 }, ptr %t1326 - %t1329 = extractvalue { ptr, i64, i64 } %t1328, 1 - %t1330 = icmp uge i64 %t1327, %t1329 - br i1 %t1330, label %range3594, label %inrange3595 -range3594: - call void @finch_panic_index(ptr @.str.2277, i64 1439, i64 %t1327, i64 %t1329) +ok3615: + %t694 = getelementptr inbounds %S.gen.Gen, ptr %t692, i32 0, i32 14 + %t695 = load { ptr, i64, i64 }, ptr %t694 + %t696 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 2 + %t697 = load { ptr, i64, i64 }, ptr %t696 + %t698 = call i64 @finch.gen.findStruct(ptr %t691, { ptr, i64, i64 } %t695, { ptr, i64, i64 } %t697) + store i64 %t698, ptr %a699 + %t700 = load i64, ptr %a699 + %t701 = icmp slt i64 %t700, 0 + br label %logic.from3616 +logic.from3616: + br i1 %t701, label %logic.rhs3617, label %logic.end3618 +logic.rhs3617: + %t702 = load ptr, ptr %a1 + %t703 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 2 + %t704 = load { ptr, i64, i64 }, ptr %t703 + %t705 = call i64 @finch.gen.findStruct(ptr %t702, { ptr, i64, i64 } { ptr @.str.2258, i64 1, i64 0 }, { ptr, i64, i64 } %t704) + %t706 = icmp sge i64 %t705, 0 + br label %logic.rend3619 +logic.rend3619: + br label %logic.end3618 +logic.end3618: + %t707 = phi i1 [ false, %logic.from3616 ], [ %t706, %logic.rend3619 ] + br i1 %t707, label %then3620, label %endif3622 +then3620: + %t708 = load ptr, ptr %a1 + %t709 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 2 + %t710 = load { ptr, i64, i64 }, ptr %t709 + %t711 = call i64 @finch.gen.findStruct(ptr %t708, { ptr, i64, i64 } { ptr @.str.2259, i64 1, i64 0 }, { ptr, i64, i64 } %t710) + store i64 %t711, ptr %a699 + %t712 = load { ptr, i64, i64 }, ptr %a637 + store { ptr, i64, i64 } { ptr @.str.2260, i64 1, i64 0 }, ptr %a637 + store { ptr, i64, i64 } %t712, ptr %a713 + call void @finch_str_drop(ptr %a713) + br label %endif3622 +endif3622: + %t714 = load i64, ptr %a699 + %t715 = icmp slt i64 %t714, 0 + br i1 %t715, label %then3623, label %endif3625 +then3623: + %t716 = load ptr, ptr %a1 + %t717 = load %S.ast.Node, ptr %a534 + %t718 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 2 + %t719 = load { ptr, i64, i64 }, ptr %t718 + store { ptr, i64, i64 } { ptr @.str.2261, i64 26, i64 0 }, ptr %a721 + store { ptr, i64, i64 } %t719, ptr %a722 + call void @finch_str_concat(ptr %a720, ptr %a721, ptr %a722) + %t723 = load { ptr, i64, i64 }, ptr %a720 + store { ptr, i64, i64 } %t723, ptr %a725 + store { ptr, i64, i64 } { ptr @.str.2262, i64 76, i64 0 }, ptr %a726 + call void @finch_str_concat(ptr %a724, ptr %a725, ptr %a726) + store { ptr, i64, i64 } %t723, ptr %a727 + call void @finch_str_drop(ptr %a727) + %t728 = load { ptr, i64, i64 }, ptr %a724 + call void @finch.gen.fail(ptr %t716, %S.ast.Node %t717, { ptr, i64, i64 } %t728) + store { ptr, i64, i64 } %t728, ptr %a729 + call void @finch_str_drop(ptr %a729) + br label %endif3625 +endif3625: + %t730 = load ptr, ptr %a1 + %t731 = load { ptr, i64, i64 }, ptr %a637 + %t732 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 2 + %t733 = load { ptr, i64, i64 }, ptr %t732 + %t734 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 1 + %t735 = load { ptr, i64, i64 }, ptr %t734 + %t736 = call i64 @finch.gen.findMethod(ptr %t730, { ptr, i64, i64 } %t731, { ptr, i64, i64 } %t733, { ptr, i64, i64 } %t735) + %t737 = icmp sge i64 %t736, 0 + br i1 %t737, label %then3626, label %endif3628 +then3626: + %t738 = load ptr, ptr %a1 + %t739 = load %S.ast.Node, ptr %a534 + %t740 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 2 + %t741 = load { ptr, i64, i64 }, ptr %t740 + store { ptr, i64, i64 } { ptr @.str.2263, i64 11, i64 0 }, ptr %a743 + store { ptr, i64, i64 } %t741, ptr %a744 + call void @finch_str_concat(ptr %a742, ptr %a743, ptr %a744) + %t745 = load { ptr, i64, i64 }, ptr %a742 + store { ptr, i64, i64 } %t745, ptr %a747 + store { ptr, i64, i64 } { ptr @.str.2264, i64 1, i64 0 }, ptr %a748 + call void @finch_str_concat(ptr %a746, ptr %a747, ptr %a748) + store { ptr, i64, i64 } %t745, ptr %a749 + call void @finch_str_drop(ptr %a749) + %t750 = load { ptr, i64, i64 }, ptr %a746 + %t751 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 1 + %t752 = load { ptr, i64, i64 }, ptr %t751 + store { ptr, i64, i64 } %t750, ptr %a754 + store { ptr, i64, i64 } %t752, ptr %a755 + call void @finch_str_concat(ptr %a753, ptr %a754, ptr %a755) + store { ptr, i64, i64 } %t750, ptr %a756 + call void @finch_str_drop(ptr %a756) + %t757 = load { ptr, i64, i64 }, ptr %a753 + store { ptr, i64, i64 } %t757, ptr %a759 + store { ptr, i64, i64 } { ptr @.str.2265, i64 17, i64 0 }, ptr %a760 + call void @finch_str_concat(ptr %a758, ptr %a759, ptr %a760) + store { ptr, i64, i64 } %t757, ptr %a761 + call void @finch_str_drop(ptr %a761) + %t762 = load { ptr, i64, i64 }, ptr %a758 + call void @finch.gen.fail(ptr %t738, %S.ast.Node %t739, { ptr, i64, i64 } %t762) + store { ptr, i64, i64 } %t762, ptr %a763 + call void @finch_str_drop(ptr %a763) + br label %endif3628 +endif3628: + %t764 = load ptr, ptr %a1 + %t765 = icmp eq ptr %t764, null + br i1 %t765, label %panic3629, label %ok3630 +panic3629: + call void @finch_panic(ptr @.str.2266, i64 1525, ptr @.str.2267) unreachable -inrange3595: - %t1331 = extractvalue { ptr, i64, i64 } %t1328, 0 - %t1332 = getelementptr inbounds %S.ast.Type, ptr %t1331, i64 %t1327 - %t1333 = load %S.ast.Type, ptr %t1332 - store %S.ast.Type %t1333, ptr %a1334 - call void @finch.copy.S_ast_Type(ptr %a1335, ptr %a1334) - %t1336 = load %S.ast.Type, ptr %a1335 - store %S.ast.Type %t1336, ptr %a1337 - %t1338 = load ptr, ptr %a1 - %t1339 = icmp eq ptr %t1338, null - br i1 %t1339, label %panic3596, label %ok3597 -panic3596: - call void @finch_panic(ptr @.str.2278, i64 1440, ptr @.str.2279) +ok3630: + %t766 = getelementptr inbounds %S.gen.Gen, ptr %t764, i32 0, i32 16 + %t767 = load i64, ptr %a699 + %t768 = load { ptr, i64, i64 }, ptr %t766 + %t769 = extractvalue { ptr, i64, i64 } %t768, 1 + %t770 = icmp uge i64 %t767, %t769 + br i1 %t770, label %range3631, label %inrange3632 +range3631: + call void @finch_panic_index(ptr @.str.2268, i64 1525, i64 %t767, i64 %t769) unreachable -ok3597: - %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 %range3598, label %inrange3599 -range3598: - call void @finch_panic_index(ptr @.str.2280, i64 1440, i64 %t1341, i64 %t1343) +inrange3632: + %t771 = extractvalue { ptr, i64, i64 } %t768, 0 + %t772 = getelementptr inbounds %S.gen.StructDef, ptr %t771, i64 %t767 + %t773 = getelementptr inbounds %S.gen.StructDef, ptr %t772, i32 0, i32 11 + %t774 = getelementptr inbounds { ptr, i64, i64 }, ptr %t773, i32 0, i32 1 + %t775 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 1 + %t776 = load { ptr, i64, i64 }, ptr %t775 + store i64 -1, ptr %a777 + %t778 = load i64, ptr %t774 + %t779 = load ptr, ptr %t773 + store i64 0, ptr %a780 + br label %find.cond3633 +find.cond3633: + %t781 = load i64, ptr %a780 + %t782 = icmp slt i64 %t781, %t778 + br i1 %t782, label %find.body3634, label %find.end3637 +find.body3634: + %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.hit3635, label %find.next3636 +find.hit3635: + store i64 %t781, ptr %a777 + br label %find.end3637 +find.next3636: + %t789 = add i64 %t781, 1 + store i64 %t789, ptr %a780 + br label %find.cond3633 +find.end3637: + %t790 = load i64, ptr %a777 + %t791 = icmp sge i64 %t790, 0 + br i1 %t791, label %then3638, label %endif3640 +then3638: + %t792 = load ptr, ptr %a1 + %t793 = load %S.ast.Node, ptr %a534 + %t794 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 2 + %t795 = load { ptr, i64, i64 }, ptr %t794 + store { ptr, i64, i64 } { ptr @.str.2269, i64 11, i64 0 }, ptr %a797 + store { ptr, i64, i64 } %t795, ptr %a798 + call void @finch_str_concat(ptr %a796, ptr %a797, ptr %a798) + %t799 = load { ptr, i64, i64 }, ptr %a796 + store { ptr, i64, i64 } %t799, ptr %a801 + store { ptr, i64, i64 } { ptr @.str.2270, i64 28, i64 0 }, ptr %a802 + call void @finch_str_concat(ptr %a800, ptr %a801, ptr %a802) + store { ptr, i64, i64 } %t799, ptr %a803 + call void @finch_str_drop(ptr %a803) + %t804 = load { ptr, i64, i64 }, ptr %a800 + %t805 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 1 + %t806 = load { ptr, i64, i64 }, ptr %t805 + store { ptr, i64, i64 } %t804, ptr %a808 + store { ptr, i64, i64 } %t806, ptr %a809 + call void @finch_str_concat(ptr %a807, ptr %a808, ptr %a809) + store { ptr, i64, i64 } %t804, ptr %a810 + call void @finch_str_drop(ptr %a810) + %t811 = load { ptr, i64, i64 }, ptr %a807 + store { ptr, i64, i64 } %t811, ptr %a813 + store { ptr, i64, i64 } { ptr @.str.2271, i64 1, i64 0 }, ptr %a814 + call void @finch_str_concat(ptr %a812, ptr %a813, ptr %a814) + store { ptr, i64, i64 } %t811, ptr %a815 + call void @finch_str_drop(ptr %a815) + %t816 = load { ptr, i64, i64 }, ptr %a812 + call void @finch.gen.fail(ptr %t792, %S.ast.Node %t793, { ptr, i64, i64 } %t816) + store { ptr, i64, i64 } %t816, ptr %a817 + call void @finch_str_drop(ptr %a817) + br label %endif3640 +endif3640: + br label %endif3613 +else3612: + %t818 = load ptr, ptr %a1 + %t819 = load ptr, ptr %a1 + %t820 = icmp eq ptr %t819, null + br i1 %t820, label %panic3641, label %ok3642 +panic3641: + call void @finch_panic(ptr @.str.2272, i64 1529, ptr @.str.2273) unreachable -inrange3599: - %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 +ok3642: + %t821 = getelementptr inbounds %S.gen.Gen, ptr %t819, i32 0, i32 14 + %t822 = load { ptr, i64, i64 }, ptr %t821 + %t823 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 1 + %t824 = load { ptr, i64, i64 }, ptr %t823 + %t825 = call i64 @finch.gen.findFn(ptr %t818, { ptr, i64, i64 } %t822, { ptr, i64, i64 } %t824) + %t826 = icmp sge i64 %t825, 0 + br i1 %t826, label %then3643, label %endif3645 +then3643: + %t827 = load ptr, ptr %a1 + %t828 = load %S.ast.Node, ptr %a534 + %t829 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 1 + %t830 = load { ptr, i64, i64 }, ptr %t829 + store { ptr, i64, i64 } { ptr @.str.2274, i64 10, i64 0 }, ptr %a832 + store { ptr, i64, i64 } %t830, ptr %a833 + call void @finch_str_concat(ptr %a831, ptr %a832, ptr %a833) + %t834 = load { ptr, i64, i64 }, ptr %a831 + store { ptr, i64, i64 } %t834, ptr %a836 + store { ptr, i64, i64 } { ptr @.str.2275, i64 18, i64 0 }, ptr %a837 + call void @finch_str_concat(ptr %a835, ptr %a836, ptr %a837) + store { ptr, i64, i64 } %t834, ptr %a838 + call void @finch_str_drop(ptr %a838) + %t839 = load { ptr, i64, i64 }, ptr %a835 + call void @finch.gen.fail(ptr %t827, %S.ast.Node %t828, { ptr, i64, i64 } %t839) + store { ptr, i64, i64 } %t839, ptr %a840 + call void @finch_str_drop(ptr %a840) + br label %endif3645 +endif3645: + %t841 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 1 + %t842 = load { ptr, i64, i64 }, ptr %t841 + %t843 = call i1 @finch.gen.isBuiltin({ ptr, i64, i64 } %t842) + br i1 %t843, label %then3646, label %endif3648 +then3646: + %t844 = load ptr, ptr %a1 + %t845 = load %S.ast.Node, ptr %a534 + %t846 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 1 + %t847 = load { ptr, i64, i64 }, ptr %t846 + store { ptr, i64, i64 } { ptr @.str.2276, i64 1, 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.2277, i64 43, i64 0 }, ptr %a854 + call void @finch_str_concat(ptr %a852, ptr %a853, ptr %a854) + store { ptr, i64, i64 } %t851, ptr %a855 + call void @finch_str_drop(ptr %a855) + %t856 = load { ptr, i64, i64 }, ptr %a852 + call void @finch.gen.fail(ptr %t844, %S.ast.Node %t845, { ptr, i64, i64 } %t856) + store { ptr, i64, i64 } %t856, ptr %a857 + call void @finch_str_drop(ptr %a857) + br label %endif3648 +endif3648: + br label %endif3613 +endif3613: + br label %endif3607 +endif3607: + %t858 = load ptr, ptr %a1 + %t859 = icmp eq ptr %t858, null + br i1 %t859, label %panic3649, label %ok3650 +panic3649: + call void @finch_panic(ptr @.str.2278, i64 1536, ptr @.str.2279) + unreachable +ok3650: + %t860 = getelementptr inbounds %S.gen.Gen, ptr %t858, i32 0, i32 14 + %t861 = load { ptr, i64, i64 }, ptr %t860 + store { ptr, i64, i64 } %t861, ptr %a862 + call void @finch_str_copy(ptr %a863, ptr %a862) + %t864 = load { ptr, i64, i64 }, ptr %a863 + %t865 = insertvalue %S.gen.FnSig zeroinitializer, { ptr, i64, i64 } %t864, 0 + %t866 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 1 + %t867 = load { ptr, i64, i64 }, ptr %t866 + store { ptr, i64, i64 } %t867, ptr %a868 + call void @finch_str_copy(ptr %a869, ptr %a868) + %t870 = load { ptr, i64, i64 }, ptr %a869 + %t871 = insertvalue %S.gen.FnSig %t865, { ptr, i64, i64 } %t870, 1 + %t872 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 2 + %t873 = load { ptr, i64, i64 }, ptr %t872 + store { ptr, i64, i64 } %t873, ptr %a874 + call void @finch_str_copy(ptr %a875, ptr %a874) + %t876 = load { ptr, i64, i64 }, ptr %a875 + %t877 = insertvalue %S.gen.FnSig %t871, { ptr, i64, i64 } %t876, 2 + %t878 = load { ptr, i64, i64 }, ptr %a637 + store { ptr, i64, i64 } %t878, ptr %a879 + call void @finch_str_copy(ptr %a880, ptr %a879) + %t881 = load { ptr, i64, i64 }, ptr %a880 + %t882 = insertvalue %S.gen.FnSig %t877, { ptr, i64, i64 } %t881, 3 + %t883 = load i1, ptr %a638 + %t884 = insertvalue %S.gen.FnSig %t882, i1 %t883, 4 + %t885 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 8 + %t886 = load i1, ptr %t885 + %t887 = insertvalue %S.gen.FnSig %t884, i1 %t886, 5 + %t888 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 7 + %t889 = load i1, ptr %t888 + %t890 = insertvalue %S.gen.FnSig %t887, i1 %t889, 9 + %t891 = load i64, ptr %a477 + %t892 = insertvalue %S.gen.FnSig %t890, i64 %t891, 16 + %t893 = load i64, ptr %a511 + %t894 = insertvalue %S.gen.FnSig %t892, i64 %t893, 17 + store %S.gen.FnSig %t894, ptr %a895 + %t896 = load ptr, ptr %a1 + %t897 = icmp eq ptr %t896, null + br i1 %t897, label %panic3651, label %ok3652 +panic3651: + call void @finch_panic(ptr @.str.2281, i64 1537, ptr @.str.2282) + unreachable +ok3652: + %t898 = getelementptr inbounds %S.gen.Gen, ptr %t896, i32 0, i32 14 + %t899 = load { ptr, i64, i64 }, ptr %t898 + %t900 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t899) + store { ptr, i64, i64 } { ptr @.str.2280, i64 7, i64 0 }, ptr %a902 + store { ptr, i64, i64 } %t900, ptr %a903 + call void @finch_str_concat(ptr %a901, ptr %a902, ptr %a903) + store { ptr, i64, i64 } %t900, ptr %a904 + call void @finch_str_drop(ptr %a904) + %t905 = load { ptr, i64, i64 }, ptr %a901 + store { ptr, i64, i64 } %t905, ptr %a907 + store { ptr, i64, i64 } { ptr @.str.2283, i64 1, i64 0 }, ptr %a908 + call void @finch_str_concat(ptr %a906, ptr %a907, ptr %a908) + store { ptr, i64, i64 } %t905, ptr %a909 + call void @finch_str_drop(ptr %a909) + %t910 = load { ptr, i64, i64 }, ptr %a906 + %t911 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 1 + %t912 = load { ptr, i64, i64 }, ptr %t911 + store { ptr, i64, i64 } %t910, ptr %a914 + store { ptr, i64, i64 } %t912, ptr %a915 + call void @finch_str_concat(ptr %a913, ptr %a914, ptr %a915) + store { ptr, i64, i64 } %t910, ptr %a916 + call void @finch_str_drop(ptr %a916) + %t917 = load { ptr, i64, i64 }, ptr %a913 + %t918 = getelementptr inbounds %S.gen.FnSig, ptr %a895, i32 0, i32 11 + %t919 = load { ptr, i64, i64 }, ptr %t918 + store { ptr, i64, i64 } %t917, ptr %t918 + store { ptr, i64, i64 } %t919, ptr %a920 + call void @finch_str_drop(ptr %a920) + %t921 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 2 + %t922 = getelementptr inbounds { ptr, i64, i64 }, ptr %t921, i32 0, i32 1 + %t923 = load i64, ptr %t922 + %t924 = icmp sgt i64 %t923, 0 + br i1 %t924, label %then3653, label %endif3655 +then3653: + %t925 = load ptr, ptr %a1 + %t926 = icmp eq ptr %t925, null + br i1 %t926, label %panic3656, label %ok3657 +panic3656: + call void @finch_panic(ptr @.str.2285, i64 1539, ptr @.str.2286) + unreachable +ok3657: + %t927 = getelementptr inbounds %S.gen.Gen, ptr %t925, i32 0, i32 14 + %t928 = load { ptr, i64, i64 }, ptr %t927 + %t929 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t928) + store { ptr, i64, i64 } { ptr @.str.2284, i64 7, i64 0 }, ptr %a931 + store { ptr, i64, i64 } %t929, ptr %a932 + call void @finch_str_concat(ptr %a930, ptr %a931, ptr %a932) + store { ptr, i64, i64 } %t929, ptr %a933 + call void @finch_str_drop(ptr %a933) + %t934 = load { ptr, i64, i64 }, ptr %a930 + store { ptr, i64, i64 } %t934, ptr %a936 + store { ptr, i64, i64 } { ptr @.str.2287, i64 1, i64 0 }, ptr %a937 + call void @finch_str_concat(ptr %a935, ptr %a936, ptr %a937) + store { ptr, i64, i64 } %t934, ptr %a938 + call void @finch_str_drop(ptr %a938) + %t939 = load { ptr, i64, i64 }, ptr %a935 + %t940 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 2 + %t941 = load { ptr, i64, i64 }, ptr %t940 + store { ptr, i64, i64 } %t939, ptr %a943 + store { ptr, i64, i64 } %t941, ptr %a944 + call void @finch_str_concat(ptr %a942, ptr %a943, ptr %a944) + store { ptr, i64, i64 } %t939, ptr %a945 + call void @finch_str_drop(ptr %a945) + %t946 = load { ptr, i64, i64 }, ptr %a942 + store { ptr, i64, i64 } %t946, ptr %a948 + store { ptr, i64, i64 } { ptr @.str.2288, i64 1, i64 0 }, ptr %a949 + call void @finch_str_concat(ptr %a947, ptr %a948, ptr %a949) + store { ptr, i64, i64 } %t946, ptr %a950 + call void @finch_str_drop(ptr %a950) + %t951 = load { ptr, i64, i64 }, ptr %a947 + %t952 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 1 + %t953 = load { ptr, i64, i64 }, ptr %t952 + store { ptr, i64, i64 } %t951, ptr %a955 + store { ptr, i64, i64 } %t953, ptr %a956 + call void @finch_str_concat(ptr %a954, ptr %a955, ptr %a956) + store { ptr, i64, i64 } %t951, ptr %a957 + call void @finch_str_drop(ptr %a957) + %t958 = load { ptr, i64, i64 }, ptr %a954 + %t959 = getelementptr inbounds %S.gen.FnSig, ptr %a895, i32 0, i32 11 + %t960 = load { ptr, i64, i64 }, ptr %t959 + store { ptr, i64, i64 } %t958, ptr %t959 + store { ptr, i64, i64 } %t960, ptr %a961 + call void @finch_str_drop(ptr %a961) + br label %endif3655 +endif3655: + %t962 = load ptr, ptr %a1 + %t963 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 5 + %t964 = load %S.ast.Type, ptr %t963 + %t965 = load %S.ast.Node, ptr %a534 + %t966 = call %S.ast.Type @finch.gen.resolve(ptr %t962, %S.ast.Type %t964, %S.ast.Node %t965) + %t967 = getelementptr inbounds %S.gen.FnSig, ptr %a895, i32 0, i32 12 + %t968 = load %S.ast.Type, ptr %t967 + store %S.ast.Type %t966, ptr %t967 + store %S.ast.Type %t968, ptr %a969 + call void @finch.drop.S_ast_Type(ptr %a969) + %t970 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 9 + %t971 = getelementptr inbounds { ptr, i64, i64 }, ptr %t970, i32 0, i32 1 + %t972 = load i64, ptr %t971 + %t973 = sub i64 %t972, 1 + store i64 0, ptr %a974 + br label %for.cond3658 +for.cond3658: + %t975 = load i64, ptr %a974 + %t976 = icmp slt i64 %t975, %t973 + br i1 %t976, label %for.body3659, label %for.end3661 +for.body3659: + %t977 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 9 + %t978 = load i64, ptr %a974 + %t979 = load { ptr, i64, i64 }, ptr %t977 + %t980 = extractvalue { ptr, i64, i64 } %t979, 1 + %t981 = icmp uge i64 %t978, %t980 + br i1 %t981, label %range3662, label %inrange3663 +range3662: + call void @finch_panic_index(ptr @.str.2289, i64 1543, i64 %t978, i64 %t980) + unreachable +inrange3663: + %t982 = extractvalue { ptr, i64, i64 } %t979, 0 + %t983 = getelementptr inbounds %S.ast.Node, ptr %t982, i64 %t978 + %t984 = getelementptr inbounds %S.ast.Node, ptr %t983, i32 0, i32 1 + %t985 = load { ptr, i64, i64 }, ptr %t984 + store { ptr, i64, i64 } %t985, ptr %a986 + store { ptr, i64, i64 } { ptr @.str.2290, i64 4, i64 0 }, ptr %a987 + %t988 = call i32 @finch_str_eq(ptr %a986, ptr %a987) + %t989 = icmp ne i32 %t988, 0 + br label %logic.from3664 +logic.from3664: + br i1 %t989, label %logic.rhs3665, label %logic.end3666 +logic.rhs3665: + %t990 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 2 + %t991 = getelementptr inbounds { ptr, i64, i64 }, ptr %t990, i32 0, i32 1 + %t992 = load i64, ptr %t991 + %t993 = icmp sgt i64 %t992, 0 + br label %logic.rend3667 +logic.rend3667: + br label %logic.end3666 +logic.end3666: + %t994 = phi i1 [ false, %logic.from3664 ], [ %t993, %logic.rend3667 ] + br i1 %t994, label %then3668, label %endif3670 +then3668: + %t995 = load ptr, ptr %a1 + %t996 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 9 + %t997 = load i64, ptr %a974 + %t998 = load { ptr, i64, i64 }, ptr %t996 + %t999 = extractvalue { ptr, i64, i64 } %t998, 1 + %t1000 = icmp uge i64 %t997, %t999 + br i1 %t1000, label %range3671, label %inrange3672 +range3671: + call void @finch_panic_index(ptr @.str.2291, i64 1544, i64 %t997, i64 %t999) + unreachable +inrange3672: + %t1001 = extractvalue { ptr, i64, i64 } %t998, 0 + %t1002 = getelementptr inbounds %S.ast.Node, ptr %t1001, i64 %t997 + %t1003 = load %S.ast.Node, ptr %t1002 + %t1004 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 2 + %t1005 = load { ptr, i64, i64 }, ptr %t1004 + store { ptr, i64, i64 } { ptr @.str.2292, i64 22, i64 0 }, ptr %a1007 + store { ptr, i64, i64 } %t1005, ptr %a1008 + call void @finch_str_concat(ptr %a1006, ptr %a1007, ptr %a1008) + %t1009 = load { ptr, i64, i64 }, ptr %a1006 + store { ptr, i64, i64 } %t1009, ptr %a1011 + store { ptr, i64, i64 } { ptr @.str.2293, i64 24, i64 0 }, ptr %a1012 + call void @finch_str_concat(ptr %a1010, ptr %a1011, ptr %a1012) + store { ptr, i64, i64 } %t1009, ptr %a1013 + call void @finch_str_drop(ptr %a1013) + %t1014 = load { ptr, i64, i64 }, ptr %a1010 + call void @finch.gen.fail(ptr %t995, %S.ast.Node %t1003, { ptr, i64, i64 } %t1014) + store { ptr, i64, i64 } %t1014, ptr %a1015 + call void @finch_str_drop(ptr %a1015) + br label %endif3670 +endif3670: + %t1016 = getelementptr inbounds %S.gen.FnSig, ptr %a895, i32 0, i32 13 + %t1017 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1016, i32 0, i32 1 + %t1018 = load ptr, ptr %a1 + %t1019 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 9 + %t1020 = load i64, ptr %a974 + %t1021 = load { ptr, i64, i64 }, ptr %t1019 + %t1022 = extractvalue { ptr, i64, i64 } %t1021, 1 + %t1023 = icmp uge i64 %t1020, %t1022 + br i1 %t1023, label %range3673, label %inrange3674 +range3673: + call void @finch_panic_index(ptr @.str.2294, i64 1546, i64 %t1020, i64 %t1022) + unreachable +inrange3674: + %t1024 = extractvalue { ptr, i64, i64 } %t1021, 0 + %t1025 = getelementptr inbounds %S.ast.Node, ptr %t1024, i64 %t1020 + %t1026 = getelementptr inbounds %S.ast.Node, ptr %t1025, i32 0, i32 5 + %t1027 = load %S.ast.Type, ptr %t1026 + %t1028 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 9 + %t1029 = load i64, ptr %a974 + %t1030 = load { ptr, i64, i64 }, ptr %t1028 + %t1031 = extractvalue { ptr, i64, i64 } %t1030, 1 + %t1032 = icmp uge i64 %t1029, %t1031 + br i1 %t1032, label %range3675, label %inrange3676 +range3675: + call void @finch_panic_index(ptr @.str.2295, i64 1546, i64 %t1029, i64 %t1031) + unreachable +inrange3676: + %t1033 = extractvalue { ptr, i64, i64 } %t1030, 0 + %t1034 = getelementptr inbounds %S.ast.Node, ptr %t1033, i64 %t1029 + %t1035 = load %S.ast.Node, ptr %t1034 + %t1036 = call %S.ast.Type @finch.gen.resolve(ptr %t1018, %S.ast.Type %t1027, %S.ast.Node %t1035) + %t1037 = load i64, ptr %t1017 + %t1038 = add i64 %t1037, 1 + call void @finch_arr_reserve(ptr %t1016, i64 %t1038, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) + %t1039 = load ptr, ptr %t1016 + %t1040 = getelementptr inbounds %S.ast.Type, ptr %t1039, i64 %t1037 + store %S.ast.Type %t1036, ptr %t1040 + store i64 %t1038, ptr %t1017 + %t1041 = getelementptr inbounds %S.gen.FnSig, ptr %a895, i32 0, i32 14 + %t1042 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1041, i32 0, i32 1 + %t1043 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 9 + %t1044 = load i64, ptr %a974 + %t1045 = load { ptr, i64, i64 }, ptr %t1043 + %t1046 = extractvalue { ptr, i64, i64 } %t1045, 1 + %t1047 = icmp uge i64 %t1044, %t1046 + br i1 %t1047, label %range3677, label %inrange3678 +range3677: + call void @finch_panic_index(ptr @.str.2296, i64 1547, i64 %t1044, i64 %t1046) + unreachable +inrange3678: + %t1048 = extractvalue { ptr, i64, i64 } %t1045, 0 + %t1049 = getelementptr inbounds %S.ast.Node, ptr %t1048, i64 %t1044 + %t1050 = getelementptr inbounds %S.ast.Node, ptr %t1049, i32 0, i32 1 + %t1051 = load { ptr, i64, i64 }, ptr %t1050 + store { ptr, i64, i64 } %t1051, ptr %a1052 + call void @finch_str_copy(ptr %a1053, ptr %a1052) + %t1054 = load { ptr, i64, i64 }, ptr %a1053 + %t1055 = load i64, ptr %t1042 + %t1056 = add i64 %t1055, 1 + call void @finch_arr_reserve(ptr %t1041, i64 %t1056, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t1057 = load ptr, ptr %t1041 + %t1058 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1057, i64 %t1055 + store { ptr, i64, i64 } %t1054, ptr %t1058 + store i64 %t1056, ptr %t1042 + br label %for.step3660 +for.step3660: + %t1059 = load i64, ptr %a974 + %t1060 = add i64 %t1059, 1 + store i64 %t1060, ptr %a974 + br label %for.cond3658 +for.end3661: + %t1061 = getelementptr inbounds %S.ast.Node, ptr %a534, i32 0, i32 8 + %t1062 = load i1, ptr %t1061 + br i1 %t1062, label %then3679, label %endif3681 +then3679: + %t1063 = load ptr, ptr %a1 + %t1064 = load %S.ast.Node, ptr %a534 + %t1065 = load %S.gen.FnSig, ptr %a895 + call void @finch.gen.checkExport(ptr %t1063, %S.ast.Node %t1064, %S.gen.FnSig %t1065) + br label %endif3681 +endif3681: + %t1066 = load ptr, ptr %a1 + %t1067 = icmp eq ptr %t1066, null + br i1 %t1067, label %panic3682, label %ok3683 +panic3682: + call void @finch_panic(ptr @.str.2297, i64 1552, ptr @.str.2298) + unreachable +ok3683: + %t1068 = getelementptr inbounds %S.gen.Gen, ptr %t1066, i32 0, i32 15 + %t1069 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1068, i32 0, i32 1 + %t1070 = load %S.gen.FnSig, ptr %a895 + store %S.gen.FnSig %t1070, ptr %a1071 + call void @finch.copy.S_gen_FnSig(ptr %a1072, ptr %a1071) + %t1073 = load %S.gen.FnSig, ptr %a1072 + %t1074 = load i64, ptr %t1069 + %t1075 = add i64 %t1074, 1 + call void @finch_arr_reserve(ptr %t1068, i64 %t1075, i64 ptrtoint (ptr getelementptr (%S.gen.FnSig, ptr null, i32 1) to i64)) + %t1076 = load ptr, ptr %t1068 + %t1077 = getelementptr inbounds %S.gen.FnSig, ptr %t1076, i64 %t1074 + store %S.gen.FnSig %t1073, ptr %t1077 + store i64 %t1075, ptr %t1069 + call void @finch.drop.S_gen_FnSig(ptr %a895) + call void @finch_str_drop(ptr %a637) + call void @finch.drop.S_ast_Node(ptr %a534) + br label %for.step3568 +for.step3568: + %t1078 = load i64, ptr %a511 + %t1079 = add i64 %t1078, 1 + store i64 %t1079, ptr %a511 + br label %for.cond3566 +for.end3569: + br label %for.step3554 +for.step3554: + %t1080 = load i64, ptr %a477 + %t1081 = add i64 %t1080, 1 + store i64 %t1081, ptr %a477 + br label %for.cond3552 +for.end3555: + store i1 true, ptr %a1082 + br label %while.cond3684 +while.cond3684: + %t1083 = load i1, ptr %a1082 + br i1 %t1083, label %while.body3685, label %while.end3686 +while.body3685: + store i1 false, ptr %a1082 + %t1084 = load ptr, ptr %a1 + %t1085 = icmp eq ptr %t1084, null + br i1 %t1085, label %panic3687, label %ok3688 +panic3687: + call void @finch_panic(ptr @.str.2299, i64 1560, ptr @.str.2300) + unreachable +ok3688: + %t1086 = getelementptr inbounds %S.gen.Gen, ptr %t1084, i32 0, i32 15 + %t1087 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1086, i32 0, i32 1 + %t1088 = load i64, ptr %t1087 + store i64 0, ptr %a1089 + br label %for.cond3689 +for.cond3689: + %t1090 = load i64, ptr %a1089 + %t1091 = icmp slt i64 %t1090, %t1088 + br i1 %t1091, label %for.body3690, label %for.end3692 +for.body3690: + %t1092 = load ptr, ptr %a1 + %t1093 = icmp eq ptr %t1092, null + br i1 %t1093, label %panic3693, label %ok3694 +panic3693: + call void @finch_panic(ptr @.str.2301, i64 1561, ptr @.str.2302) + unreachable +ok3694: + %t1094 = getelementptr inbounds %S.gen.Gen, ptr %t1092, i32 0, i32 15 + %t1095 = load i64, ptr %a1089 + %t1096 = load { ptr, i64, i64 }, ptr %t1094 + %t1097 = extractvalue { ptr, i64, i64 } %t1096, 1 + %t1098 = icmp uge i64 %t1095, %t1097 + br i1 %t1098, label %range3695, label %inrange3696 +range3695: + call void @finch_panic_index(ptr @.str.2303, i64 1561, i64 %t1095, i64 %t1097) + unreachable +inrange3696: + %t1099 = extractvalue { ptr, i64, i64 } %t1096, 0 + %t1100 = getelementptr inbounds %S.gen.FnSig, ptr %t1099, i64 %t1095 + %t1101 = getelementptr inbounds %S.gen.FnSig, ptr %t1100, i32 0, i32 2 + %t1102 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1101, i32 0, i32 1 + %t1103 = load i64, ptr %t1102 + %t1104 = icmp sgt i64 %t1103, 0 + br label %logic.from3697 +logic.from3697: + br i1 %t1104, label %logic.rhs3698, label %logic.end3699 +logic.rhs3698: + %t1105 = load ptr, ptr %a1 + %t1106 = icmp eq ptr %t1105, null + br i1 %t1106, label %panic3700, label %ok3701 +panic3700: + call void @finch_panic(ptr @.str.2304, i64 1561, ptr @.str.2305) + unreachable +ok3701: + %t1107 = getelementptr inbounds %S.gen.Gen, ptr %t1105, i32 0, i32 15 + %t1108 = load i64, ptr %a1089 + %t1109 = load { ptr, i64, i64 }, ptr %t1107 + %t1110 = extractvalue { ptr, i64, i64 } %t1109, 1 + %t1111 = icmp uge i64 %t1108, %t1110 + br i1 %t1111, label %range3702, label %inrange3703 +range3702: + call void @finch_panic_index(ptr @.str.2306, i64 1561, i64 %t1108, i64 %t1110) + unreachable +inrange3703: + %t1112 = extractvalue { ptr, i64, i64 } %t1109, 0 + %t1113 = getelementptr inbounds %S.gen.FnSig, ptr %t1112, i64 %t1108 + %t1114 = getelementptr inbounds %S.gen.FnSig, ptr %t1113, i32 0, i32 10 + %t1115 = load i1, ptr %t1114 + %t1116 = xor i1 %t1115, true + br label %logic.rend3704 +logic.rend3704: + br label %logic.end3699 +logic.end3699: + %t1117 = phi i1 [ false, %logic.from3697 ], [ %t1116, %logic.rend3704 ] + br i1 %t1117, label %then3705, label %endif3707 +then3705: + %t1118 = load ptr, ptr %a1 + %t1119 = icmp eq ptr %t1118, null + br i1 %t1119, label %panic3708, label %ok3709 +panic3708: + call void @finch_panic(ptr @.str.2307, i64 1562, ptr @.str.2308) + unreachable +ok3709: + %t1120 = getelementptr inbounds %S.gen.Gen, ptr %t1118, i32 0, i32 0 + %t1121 = load ptr, ptr %a1 + %t1122 = icmp eq ptr %t1121, null + br i1 %t1122, label %panic3710, label %ok3711 +panic3710: + call void @finch_panic(ptr @.str.2309, i64 1562, ptr @.str.2310) + unreachable +ok3711: + %t1123 = getelementptr inbounds %S.gen.Gen, ptr %t1121, i32 0, i32 15 + %t1124 = load i64, ptr %a1089 + %t1125 = load { ptr, i64, i64 }, ptr %t1123 + %t1126 = extractvalue { ptr, i64, i64 } %t1125, 1 + %t1127 = icmp uge i64 %t1124, %t1126 + br i1 %t1127, label %range3712, label %inrange3713 +range3712: + call void @finch_panic_index(ptr @.str.2311, i64 1562, i64 %t1124, i64 %t1126) + unreachable +inrange3713: + %t1128 = extractvalue { ptr, i64, i64 } %t1125, 0 + %t1129 = getelementptr inbounds %S.gen.FnSig, ptr %t1128, i64 %t1124 + %t1130 = getelementptr inbounds %S.gen.FnSig, ptr %t1129, i32 0, i32 16 + %t1131 = load i64, ptr %t1130 + %t1132 = load { ptr, i64, i64 }, ptr %t1120 + %t1133 = extractvalue { ptr, i64, i64 } %t1132, 1 + %t1134 = icmp uge i64 %t1131, %t1133 + br i1 %t1134, label %range3714, label %inrange3715 +range3714: + call void @finch_panic_index(ptr @.str.2312, i64 1562, i64 %t1131, i64 %t1133) + unreachable +inrange3715: + %t1135 = extractvalue { ptr, i64, i64 } %t1132, 0 + %t1136 = getelementptr inbounds %S.ast.Program, ptr %t1135, i64 %t1131 + %t1137 = getelementptr inbounds %S.ast.Program, ptr %t1136, i32 0, i32 8 + %t1138 = load ptr, ptr %a1 + %t1139 = icmp eq ptr %t1138, null + br i1 %t1139, label %panic3716, label %ok3717 +panic3716: + call void @finch_panic(ptr @.str.2313, i64 1562, ptr @.str.2314) + unreachable +ok3717: + %t1140 = getelementptr inbounds %S.gen.Gen, ptr %t1138, i32 0, i32 15 + %t1141 = load i64, ptr %a1089 + %t1142 = load { ptr, i64, i64 }, ptr %t1140 + %t1143 = extractvalue { ptr, i64, i64 } %t1142, 1 + %t1144 = icmp uge i64 %t1141, %t1143 + br i1 %t1144, label %range3718, label %inrange3719 +range3718: + call void @finch_panic_index(ptr @.str.2315, i64 1562, i64 %t1141, i64 %t1143) + unreachable +inrange3719: + %t1145 = extractvalue { ptr, i64, i64 } %t1142, 0 + %t1146 = getelementptr inbounds %S.gen.FnSig, ptr %t1145, i64 %t1141 + %t1147 = getelementptr inbounds %S.gen.FnSig, ptr %t1146, i32 0, i32 17 + %t1148 = load i64, ptr %t1147 + %t1149 = load { ptr, i64, i64 }, ptr %t1137 + %t1150 = extractvalue { ptr, i64, i64 } %t1149, 1 + %t1151 = icmp uge i64 %t1148, %t1150 + br i1 %t1151, label %range3720, label %inrange3721 +range3720: + call void @finch_panic_index(ptr @.str.2316, i64 1562, i64 %t1148, i64 %t1150) + unreachable +inrange3721: + %t1152 = extractvalue { ptr, i64, i64 } %t1149, 0 + %t1153 = getelementptr inbounds %S.ast.Node, ptr %t1152, i64 %t1148 + %t1154 = load %S.ast.Node, ptr %t1153 + store %S.ast.Node %t1154, ptr %a1155 + call void @finch.copy.S_ast_Node(ptr %a1156, ptr %a1155) + %t1157 = load %S.ast.Node, ptr %a1156 + store %S.ast.Node %t1157, ptr %a1158 + %t1159 = load ptr, ptr %a1 + %t1160 = getelementptr inbounds %S.ast.Node, ptr %a1158, i32 0, i32 9 + %t1161 = getelementptr inbounds %S.ast.Node, ptr %a1158, i32 0, i32 9 + %t1162 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1161, i32 0, i32 1 + %t1163 = load i64, ptr %t1162 + %t1164 = sub i64 %t1163, 1 + %t1165 = load { ptr, i64, i64 }, ptr %t1160 + %t1166 = extractvalue { ptr, i64, i64 } %t1165, 1 + %t1167 = icmp uge i64 %t1164, %t1166 + br i1 %t1167, label %range3722, label %inrange3723 +range3722: + call void @finch_panic_index(ptr @.str.2318, i64 1563, i64 %t1164, i64 %t1166) + unreachable +inrange3723: + %t1168 = extractvalue { ptr, i64, i64 } %t1165, 0 + %t1169 = getelementptr inbounds %S.ast.Node, ptr %t1168, i64 %t1164 + %t1170 = load %S.ast.Node, ptr %t1169 + %t1171 = call i1 @finch.gen.mutates(ptr %t1159, { ptr, i64, i64 } { ptr @.str.2317, i64 4, i64 0 }, %S.ast.Node %t1170) + br i1 %t1171, label %then3724, label %endif3726 +then3724: + %t1172 = load ptr, ptr %a1 + %t1173 = icmp eq ptr %t1172, null + br i1 %t1173, label %panic3727, label %ok3728 +panic3727: + call void @finch_panic(ptr @.str.2319, i64 1564, ptr @.str.2320) + unreachable +ok3728: + %t1174 = getelementptr inbounds %S.gen.Gen, ptr %t1172, i32 0, i32 15 + %t1175 = load i64, ptr %a1089 + %t1176 = load { ptr, i64, i64 }, ptr %t1174 + %t1177 = extractvalue { ptr, i64, i64 } %t1176, 1 + %t1178 = icmp uge i64 %t1175, %t1177 + br i1 %t1178, label %range3729, label %inrange3730 +range3729: + call void @finch_panic_index(ptr @.str.2321, i64 1564, i64 %t1175, i64 %t1177) + unreachable +inrange3730: + %t1179 = extractvalue { ptr, i64, i64 } %t1176, 0 + %t1180 = getelementptr inbounds %S.gen.FnSig, ptr %t1179, i64 %t1175 + %t1181 = getelementptr inbounds %S.gen.FnSig, ptr %t1180, i32 0, i32 10 + store i1 true, ptr %t1181 + %t1182 = load ptr, ptr %a1 + %t1183 = icmp eq ptr %t1182, null + br i1 %t1183, label %panic3731, label %ok3732 +panic3731: + call void @finch_panic(ptr @.str.2322, i64 1565, ptr @.str.2323) + unreachable +ok3732: + %t1184 = getelementptr inbounds %S.gen.Gen, ptr %t1182, i32 0, i32 23 + %t1185 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1184, i32 0, i32 1 + %t1186 = load ptr, ptr %a1 + %t1187 = icmp eq ptr %t1186, null + br i1 %t1187, label %panic3733, label %ok3734 +panic3733: + call void @finch_panic(ptr @.str.2324, i64 1565, ptr @.str.2325) + unreachable +ok3734: + %t1188 = getelementptr inbounds %S.gen.Gen, ptr %t1186, i32 0, i32 15 + %t1189 = load i64, ptr %a1089 + %t1190 = load { ptr, i64, i64 }, ptr %t1188 + %t1191 = extractvalue { ptr, i64, i64 } %t1190, 1 + %t1192 = icmp uge i64 %t1189, %t1191 + br i1 %t1192, label %range3735, label %inrange3736 +range3735: + call void @finch_panic_index(ptr @.str.2326, i64 1565, i64 %t1189, i64 %t1191) + unreachable +inrange3736: + %t1193 = extractvalue { ptr, i64, i64 } %t1190, 0 + %t1194 = getelementptr inbounds %S.gen.FnSig, ptr %t1193, i64 %t1189 + %t1195 = getelementptr inbounds %S.gen.FnSig, ptr %t1194, i32 0, i32 1 + %t1196 = load { ptr, i64, i64 }, ptr %t1195 + store { ptr, i64, i64 } %t1196, ptr %a1197 + call void @finch_str_copy(ptr %a1198, ptr %a1197) + %t1199 = load { ptr, i64, i64 }, ptr %a1198 + %t1200 = load i64, ptr %t1185 + %t1201 = add i64 %t1200, 1 + call void @finch_arr_reserve(ptr %t1184, i64 %t1201, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t1202 = load ptr, ptr %t1184 + %t1203 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1202, i64 %t1200 + store { ptr, i64, i64 } %t1199, ptr %t1203 + store i64 %t1201, ptr %t1185 + store i1 true, ptr %a1082 + br label %endif3726 +endif3726: + call void @finch.drop.S_ast_Node(ptr %a1158) + br label %endif3707 +endif3707: + br label %for.step3691 +for.step3691: + %t1204 = load i64, ptr %a1089 + %t1205 = add i64 %t1204, 1 + store i64 %t1205, ptr %a1089 + br label %for.cond3689 +for.end3692: + %t1206 = load ptr, ptr %a1 + %t1207 = icmp eq ptr %t1206, null + br i1 %t1207, label %panic3737, label %ok3738 +panic3737: + call void @finch_panic(ptr @.str.2327, i64 1570, ptr @.str.2328) + unreachable +ok3738: + %t1208 = getelementptr inbounds %S.gen.Gen, ptr %t1206, i32 0, i32 17 + %t1209 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1208, i32 0, i32 1 + %t1210 = load i64, ptr %t1209 + store i64 0, ptr %a1211 + br label %for.cond3739 +for.cond3739: + %t1212 = load i64, ptr %a1211 + %t1213 = icmp slt i64 %t1212, %t1210 + br i1 %t1213, label %for.body3740, label %for.end3742 +for.body3740: + %t1214 = load ptr, ptr %a1 + %t1215 = icmp eq ptr %t1214, null + br i1 %t1215, label %panic3743, label %ok3744 +panic3743: + call void @finch_panic(ptr @.str.2329, i64 1571, ptr @.str.2330) + unreachable +ok3744: + %t1216 = getelementptr inbounds %S.gen.Gen, ptr %t1214, i32 0, i32 17 + %t1217 = load i64, ptr %a1211 + %t1218 = load { ptr, i64, i64 }, ptr %t1216 + %t1219 = extractvalue { ptr, i64, i64 } %t1218, 1 + %t1220 = icmp uge i64 %t1217, %t1219 + br i1 %t1220, label %range3745, label %inrange3746 +range3745: + call void @finch_panic_index(ptr @.str.2331, i64 1571, i64 %t1217, i64 %t1219) + unreachable +inrange3746: + %t1221 = extractvalue { ptr, i64, i64 } %t1218, 0 + %t1222 = getelementptr inbounds %S.gen.Template, ptr %t1221, i64 %t1217 + %t1223 = load %S.gen.Template, ptr %t1222 + store %S.gen.Template %t1223, ptr %a1224 + call void @finch.copy.S_gen_Template(ptr %a1225, ptr %a1224) + %t1226 = load %S.gen.Template, ptr %a1225 + store %S.gen.Template %t1226, ptr %a1227 + %t1228 = getelementptr inbounds %S.gen.Template, ptr %a1227, i32 0, i32 2 + %t1229 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1228, i32 0, i32 1 + %t1230 = load i64, ptr %t1229 + %t1231 = icmp sgt i64 %t1230, 0 + br label %logic.from3747 +logic.from3747: + br i1 %t1231, label %logic.rhs3748, label %logic.end3749 +logic.rhs3748: + %t1232 = getelementptr inbounds %S.gen.Template, ptr %a1227, i32 0, i32 7 + %t1233 = load i1, ptr %t1232 + %t1234 = xor i1 %t1233, true + br label %logic.rend3750 +logic.rend3750: + br label %logic.end3749 +logic.end3749: + %t1235 = phi i1 [ false, %logic.from3747 ], [ %t1234, %logic.rend3750 ] + br i1 %t1235, label %then3751, label %endif3753 +then3751: + %t1236 = load ptr, ptr %a1 + %t1237 = icmp eq ptr %t1236, null + br i1 %t1237, label %panic3754, label %ok3755 +panic3754: + call void @finch_panic(ptr @.str.2332, i64 1573, ptr @.str.2333) + unreachable +ok3755: + %t1238 = getelementptr inbounds %S.gen.Gen, ptr %t1236, i32 0, i32 0 + %t1239 = getelementptr inbounds %S.gen.Template, ptr %a1227, i32 0, i32 4 + %t1240 = load i64, ptr %t1239 + %t1241 = load { ptr, i64, i64 }, ptr %t1238 + %t1242 = extractvalue { ptr, i64, i64 } %t1241, 1 + %t1243 = icmp uge i64 %t1240, %t1242 + br i1 %t1243, label %range3756, label %inrange3757 +range3756: + call void @finch_panic_index(ptr @.str.2334, i64 1573, i64 %t1240, i64 %t1242) + unreachable +inrange3757: + %t1244 = extractvalue { ptr, i64, i64 } %t1241, 0 + %t1245 = getelementptr inbounds %S.ast.Program, ptr %t1244, i64 %t1240 + %t1246 = getelementptr inbounds %S.ast.Program, ptr %t1245, i32 0, i32 8 + %t1247 = getelementptr inbounds %S.gen.Template, ptr %a1227, i32 0, i32 5 + %t1248 = load i64, ptr %t1247 + %t1249 = load { ptr, i64, i64 }, ptr %t1246 + %t1250 = extractvalue { ptr, i64, i64 } %t1249, 1 + %t1251 = icmp uge i64 %t1248, %t1250 + br i1 %t1251, label %range3758, label %inrange3759 +range3758: + call void @finch_panic_index(ptr @.str.2335, i64 1573, i64 %t1248, i64 %t1250) + unreachable +inrange3759: + %t1252 = extractvalue { ptr, i64, i64 } %t1249, 0 + %t1253 = getelementptr inbounds %S.ast.Node, ptr %t1252, i64 %t1248 + %t1254 = load %S.ast.Node, ptr %t1253 + store %S.ast.Node %t1254, ptr %a1255 + call void @finch.copy.S_ast_Node(ptr %a1256, ptr %a1255) + %t1257 = load %S.ast.Node, ptr %a1256 + store %S.ast.Node %t1257, ptr %a1258 + %t1259 = load ptr, ptr %a1 + %t1260 = getelementptr inbounds %S.ast.Node, ptr %a1258, i32 0, i32 9 + %t1261 = getelementptr inbounds %S.ast.Node, ptr %a1258, i32 0, i32 9 + %t1262 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1261, i32 0, i32 1 + %t1263 = load i64, ptr %t1262 + %t1264 = sub i64 %t1263, 1 + %t1265 = load { ptr, i64, i64 }, ptr %t1260 + %t1266 = extractvalue { ptr, i64, i64 } %t1265, 1 + %t1267 = icmp uge i64 %t1264, %t1266 + br i1 %t1267, label %range3760, label %inrange3761 +range3760: + call void @finch_panic_index(ptr @.str.2337, i64 1574, i64 %t1264, i64 %t1266) + unreachable +inrange3761: + %t1268 = extractvalue { ptr, i64, i64 } %t1265, 0 + %t1269 = getelementptr inbounds %S.ast.Node, ptr %t1268, i64 %t1264 + %t1270 = load %S.ast.Node, ptr %t1269 + %t1271 = call i1 @finch.gen.mutates(ptr %t1259, { ptr, i64, i64 } { ptr @.str.2336, i64 4, i64 0 }, %S.ast.Node %t1270) + br i1 %t1271, label %then3762, label %endif3764 +then3762: + %t1272 = load ptr, ptr %a1 + %t1273 = icmp eq ptr %t1272, null + br i1 %t1273, label %panic3765, label %ok3766 +panic3765: + call void @finch_panic(ptr @.str.2338, i64 1575, ptr @.str.2339) + unreachable +ok3766: + %t1274 = getelementptr inbounds %S.gen.Gen, ptr %t1272, i32 0, i32 17 + %t1275 = load i64, ptr %a1211 + %t1276 = load { ptr, i64, i64 }, ptr %t1274 + %t1277 = extractvalue { ptr, i64, i64 } %t1276, 1 + %t1278 = icmp uge i64 %t1275, %t1277 + br i1 %t1278, label %range3767, label %inrange3768 +range3767: + call void @finch_panic_index(ptr @.str.2340, i64 1575, i64 %t1275, i64 %t1277) + unreachable +inrange3768: + %t1279 = extractvalue { ptr, i64, i64 } %t1276, 0 + %t1280 = getelementptr inbounds %S.gen.Template, ptr %t1279, i64 %t1275 + %t1281 = getelementptr inbounds %S.gen.Template, ptr %t1280, i32 0, i32 7 + store i1 true, ptr %t1281 + %t1282 = load ptr, ptr %a1 + %t1283 = icmp eq ptr %t1282, null + br i1 %t1283, label %panic3769, label %ok3770 +panic3769: + call void @finch_panic(ptr @.str.2341, i64 1576, ptr @.str.2342) + unreachable +ok3770: + %t1284 = getelementptr inbounds %S.gen.Gen, ptr %t1282, i32 0, i32 23 + %t1285 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1284, i32 0, i32 1 + %t1286 = getelementptr inbounds %S.gen.Template, ptr %a1227, i32 0, i32 1 + %t1287 = load { ptr, i64, i64 }, ptr %t1286 + store { ptr, i64, i64 } %t1287, ptr %a1288 + call void @finch_str_copy(ptr %a1289, ptr %a1288) + %t1290 = load { ptr, i64, i64 }, ptr %a1289 + %t1291 = load i64, ptr %t1285 + %t1292 = add i64 %t1291, 1 + call void @finch_arr_reserve(ptr %t1284, i64 %t1292, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t1293 = load ptr, ptr %t1284 + %t1294 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1293, i64 %t1291 + store { ptr, i64, i64 } %t1290, ptr %t1294 + store i64 %t1292, ptr %t1285 + store i1 true, ptr %a1082 + br label %endif3764 +endif3764: + call void @finch.drop.S_ast_Node(ptr %a1258) + br label %endif3753 +endif3753: + call void @finch.drop.S_gen_Template(ptr %a1227) + br label %for.step3741 +for.step3741: + %t1295 = load i64, ptr %a1211 + %t1296 = add i64 %t1295, 1 + store i64 %t1296, ptr %a1211 + br label %for.cond3739 +for.end3742: + br label %while.cond3684 +while.end3686: + %t1297 = load ptr, ptr %a1 + %t1298 = icmp eq ptr %t1297, null + br i1 %t1298, label %panic3771, label %ok3772 +panic3771: + call void @finch_panic(ptr @.str.2343, i64 1583, ptr @.str.2344) + unreachable +ok3772: + %t1299 = getelementptr inbounds %S.gen.Gen, ptr %t1297, i32 0, i32 15 + %t1300 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1299, i32 0, i32 1 + %t1301 = load i64, ptr %t1300 + store i64 0, ptr %a1302 + br label %for.cond3773 +for.cond3773: + %t1303 = load i64, ptr %a1302 + %t1304 = icmp slt i64 %t1303, %t1301 + br i1 %t1304, label %for.body3774, label %for.end3776 +for.body3774: + %t1305 = load ptr, ptr %a1 + %t1306 = icmp eq ptr %t1305, null + br i1 %t1306, label %panic3777, label %ok3778 +panic3777: + call void @finch_panic(ptr @.str.2345, i64 1584, ptr @.str.2346) + unreachable +ok3778: + %t1307 = getelementptr inbounds %S.gen.Gen, ptr %t1305, i32 0, i32 0 + %t1308 = load ptr, ptr %a1 + %t1309 = icmp eq ptr %t1308, null + br i1 %t1309, label %panic3779, label %ok3780 +panic3779: + call void @finch_panic(ptr @.str.2347, i64 1584, ptr @.str.2348) + unreachable +ok3780: + %t1310 = getelementptr inbounds %S.gen.Gen, ptr %t1308, i32 0, i32 15 + %t1311 = load i64, ptr %a1302 + %t1312 = load { ptr, i64, i64 }, ptr %t1310 + %t1313 = extractvalue { ptr, i64, i64 } %t1312, 1 + %t1314 = icmp uge i64 %t1311, %t1313 + br i1 %t1314, label %range3781, label %inrange3782 +range3781: + call void @finch_panic_index(ptr @.str.2349, i64 1584, i64 %t1311, i64 %t1313) + unreachable +inrange3782: + %t1315 = extractvalue { ptr, i64, i64 } %t1312, 0 + %t1316 = getelementptr inbounds %S.gen.FnSig, ptr %t1315, i64 %t1311 + %t1317 = getelementptr inbounds %S.gen.FnSig, ptr %t1316, i32 0, i32 16 + %t1318 = load i64, ptr %t1317 + %t1319 = load { ptr, i64, i64 }, ptr %t1307 + %t1320 = extractvalue { ptr, i64, i64 } %t1319, 1 + %t1321 = icmp uge i64 %t1318, %t1320 + br i1 %t1321, label %range3783, label %inrange3784 +range3783: + call void @finch_panic_index(ptr @.str.2350, i64 1584, i64 %t1318, i64 %t1320) + unreachable +inrange3784: + %t1322 = extractvalue { ptr, i64, i64 } %t1319, 0 + %t1323 = getelementptr inbounds %S.ast.Program, ptr %t1322, i64 %t1318 + %t1324 = getelementptr inbounds %S.ast.Program, ptr %t1323, i32 0, i32 8 + %t1325 = load ptr, ptr %a1 + %t1326 = icmp eq ptr %t1325, null + br i1 %t1326, label %panic3785, label %ok3786 +panic3785: + call void @finch_panic(ptr @.str.2351, i64 1584, ptr @.str.2352) + unreachable +ok3786: + %t1327 = getelementptr inbounds %S.gen.Gen, ptr %t1325, i32 0, i32 15 + %t1328 = load i64, ptr %a1302 + %t1329 = load { ptr, i64, i64 }, ptr %t1327 + %t1330 = extractvalue { ptr, i64, i64 } %t1329, 1 + %t1331 = icmp uge i64 %t1328, %t1330 + br i1 %t1331, label %range3787, label %inrange3788 +range3787: + call void @finch_panic_index(ptr @.str.2353, i64 1584, i64 %t1328, i64 %t1330) + unreachable +inrange3788: + %t1332 = extractvalue { ptr, i64, i64 } %t1329, 0 + %t1333 = getelementptr inbounds %S.gen.FnSig, ptr %t1332, i64 %t1328 + %t1334 = getelementptr inbounds %S.gen.FnSig, ptr %t1333, i32 0, i32 17 + %t1335 = load i64, ptr %t1334 + %t1336 = load { ptr, i64, i64 }, ptr %t1324 + %t1337 = extractvalue { ptr, i64, i64 } %t1336, 1 + %t1338 = icmp uge i64 %t1335, %t1337 + br i1 %t1338, label %range3789, label %inrange3790 +range3789: + call void @finch_panic_index(ptr @.str.2354, i64 1584, i64 %t1335, i64 %t1337) + unreachable +inrange3790: + %t1339 = extractvalue { ptr, i64, i64 } %t1336, 0 + %t1340 = getelementptr inbounds %S.ast.Node, ptr %t1339, i64 %t1335 + %t1341 = load %S.ast.Node, ptr %t1340 + store %S.ast.Node %t1341, ptr %a1342 + call void @finch.copy.S_ast_Node(ptr %a1343, ptr %a1342) + %t1344 = load %S.ast.Node, ptr %a1343 + store %S.ast.Node %t1344, ptr %a1345 + %t1346 = getelementptr inbounds %S.ast.Node, ptr %a1345, i32 0, i32 9 + %t1347 = getelementptr inbounds %S.ast.Node, ptr %a1345, i32 0, i32 9 %t1348 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1347, i32 0, i32 1 - %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.from3600 -logic.from3600: - br i1 %t1351, label %logic.rhs3601, label %logic.end3602 -logic.rhs3601: - %t1352 = load ptr, ptr %a1 - %t1353 = load ptr, ptr %a1 - %t1354 = icmp eq ptr %t1353, null - br i1 %t1354, label %panic3603, label %ok3604 -panic3603: - call void @finch_panic(ptr @.str.2281, i64 1440, ptr @.str.2282) + %t1349 = load i64, ptr %t1348 + %t1350 = sub i64 %t1349, 1 + %t1351 = load { ptr, i64, i64 }, ptr %t1346 + %t1352 = extractvalue { ptr, i64, i64 } %t1351, 1 + %t1353 = icmp uge i64 %t1350, %t1352 + br i1 %t1353, label %range3791, label %inrange3792 +range3791: + call void @finch_panic_index(ptr @.str.2355, i64 1585, i64 %t1350, i64 %t1352) unreachable -ok3604: - %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 %range3605, label %inrange3606 -range3605: - call void @finch_panic_index(ptr @.str.2283, i64 1440, i64 %t1356, i64 %t1358) +inrange3792: + %t1354 = extractvalue { ptr, i64, i64 } %t1351, 0 + %t1355 = getelementptr inbounds %S.ast.Node, ptr %t1354, i64 %t1350 + %t1356 = load %S.ast.Node, ptr %t1355 + store %S.ast.Node %t1356, ptr %a1357 + call void @finch.copy.S_ast_Node(ptr %a1358, ptr %a1357) + %t1359 = load %S.ast.Node, ptr %a1358 + store %S.ast.Node %t1359, ptr %a1360 + %t1361 = load ptr, ptr %a1 + %t1362 = icmp eq ptr %t1361, null + br i1 %t1362, label %panic3793, label %ok3794 +panic3793: + call void @finch_panic(ptr @.str.2356, i64 1586, ptr @.str.2357) unreachable -inrange3606: - %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 - %t1363 = load i64, ptr %a1314 - %t1364 = load { ptr, i64, i64 }, ptr %t1362 - %t1365 = extractvalue { ptr, i64, i64 } %t1364, 1 - %t1366 = icmp uge i64 %t1363, %t1365 - br i1 %t1366, label %range3607, label %inrange3608 -range3607: - call void @finch_panic_index(ptr @.str.2284, i64 1440, i64 %t1363, i64 %t1365) +ok3794: + %t1363 = getelementptr inbounds %S.gen.Gen, ptr %t1361, i32 0, i32 15 + %t1364 = load i64, ptr %a1302 + %t1365 = load { ptr, i64, i64 }, ptr %t1363 + %t1366 = extractvalue { ptr, i64, i64 } %t1365, 1 + %t1367 = icmp uge i64 %t1364, %t1366 + br i1 %t1367, label %range3795, label %inrange3796 +range3795: + call void @finch_panic_index(ptr @.str.2358, i64 1586, i64 %t1364, i64 %t1366) unreachable -inrange3608: - %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.rend3609 -logic.rend3609: - br label %logic.end3602 -logic.end3602: - %t1373 = phi i1 [ false, %logic.from3600 ], [ %t1372, %logic.rend3609 ] - %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)) - %t1376 = load ptr, ptr %t1347 - %t1377 = getelementptr inbounds i1, ptr %t1376, i64 %t1374 - store i1 %t1373, ptr %t1377 - store i64 %t1375, ptr %t1348 - br label %for.step3588 -for.step3588: - %t1378 = load i64, ptr %a1314 - %t1379 = add i64 %t1378, 1 - store i64 %t1379, ptr %a1314 - br label %for.cond3586 -for.end3589: - br label %for.step3564 -for.step3564: - %t1380 = load i64, ptr %a1243 - %t1381 = add i64 %t1380, 1 - store i64 %t1381, ptr %a1243 - br label %for.cond3562 -for.end3565: +inrange3796: + %t1368 = extractvalue { ptr, i64, i64 } %t1365, 0 + %t1369 = getelementptr inbounds %S.gen.FnSig, ptr %t1368, i64 %t1364 + %t1370 = getelementptr inbounds %S.gen.FnSig, ptr %t1369, i32 0, i32 13 + %t1371 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1370, i32 0, i32 1 + %t1372 = load i64, ptr %t1371 + store i64 0, ptr %a1373 + br label %for.cond3797 +for.cond3797: + %t1374 = load i64, ptr %a1373 + %t1375 = icmp slt i64 %t1374, %t1372 + br i1 %t1375, label %for.body3798, label %for.end3800 +for.body3798: + %t1376 = load ptr, ptr %a1 + %t1377 = icmp eq ptr %t1376, null + br i1 %t1377, label %panic3801, label %ok3802 +panic3801: + call void @finch_panic(ptr @.str.2359, i64 1587, ptr @.str.2360) + unreachable +ok3802: + %t1378 = getelementptr inbounds %S.gen.Gen, ptr %t1376, i32 0, i32 15 + %t1379 = load i64, ptr %a1302 + %t1380 = load { ptr, i64, i64 }, ptr %t1378 + %t1381 = extractvalue { ptr, i64, i64 } %t1380, 1 + %t1382 = icmp uge i64 %t1379, %t1381 + br i1 %t1382, label %range3803, label %inrange3804 +range3803: + call void @finch_panic_index(ptr @.str.2361, i64 1587, i64 %t1379, i64 %t1381) + unreachable +inrange3804: + %t1383 = extractvalue { ptr, i64, i64 } %t1380, 0 + %t1384 = getelementptr inbounds %S.gen.FnSig, ptr %t1383, i64 %t1379 + %t1385 = getelementptr inbounds %S.gen.FnSig, ptr %t1384, i32 0, i32 13 + %t1386 = load i64, ptr %a1373 + %t1387 = load { ptr, i64, i64 }, ptr %t1385 + %t1388 = extractvalue { ptr, i64, i64 } %t1387, 1 + %t1389 = icmp uge i64 %t1386, %t1388 + br i1 %t1389, label %range3805, label %inrange3806 +range3805: + call void @finch_panic_index(ptr @.str.2362, i64 1587, i64 %t1386, i64 %t1388) + unreachable +inrange3806: + %t1390 = extractvalue { ptr, i64, i64 } %t1387, 0 + %t1391 = getelementptr inbounds %S.ast.Type, ptr %t1390, i64 %t1386 + %t1392 = load %S.ast.Type, ptr %t1391 + store %S.ast.Type %t1392, ptr %a1393 + call void @finch.copy.S_ast_Type(ptr %a1394, ptr %a1393) + %t1395 = load %S.ast.Type, ptr %a1394 + store %S.ast.Type %t1395, ptr %a1396 + %t1397 = load ptr, ptr %a1 + %t1398 = icmp eq ptr %t1397, null + br i1 %t1398, label %panic3807, label %ok3808 +panic3807: + call void @finch_panic(ptr @.str.2363, i64 1588, ptr @.str.2364) + unreachable +ok3808: + %t1399 = getelementptr inbounds %S.gen.Gen, ptr %t1397, i32 0, i32 15 + %t1400 = load i64, ptr %a1302 + %t1401 = load { ptr, i64, i64 }, ptr %t1399 + %t1402 = extractvalue { ptr, i64, i64 } %t1401, 1 + %t1403 = icmp uge i64 %t1400, %t1402 + br i1 %t1403, label %range3809, label %inrange3810 +range3809: + call void @finch_panic_index(ptr @.str.2365, i64 1588, i64 %t1400, i64 %t1402) + unreachable +inrange3810: + %t1404 = extractvalue { ptr, i64, i64 } %t1401, 0 + %t1405 = getelementptr inbounds %S.gen.FnSig, ptr %t1404, i64 %t1400 + %t1406 = getelementptr inbounds %S.gen.FnSig, ptr %t1405, i32 0, i32 15 + %t1407 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1406, i32 0, i32 1 + %t1408 = load ptr, ptr %a1 + %t1409 = load %S.ast.Type, ptr %a1396 + %t1410 = call i1 @finch.gen.owning(ptr %t1408, %S.ast.Type %t1409) + br label %logic.from3811 +logic.from3811: + br i1 %t1410, label %logic.rhs3812, label %logic.end3813 +logic.rhs3812: + %t1411 = load ptr, ptr %a1 + %t1412 = load ptr, ptr %a1 + %t1413 = icmp eq ptr %t1412, null + br i1 %t1413, label %panic3814, label %ok3815 +panic3814: + call void @finch_panic(ptr @.str.2366, i64 1588, ptr @.str.2367) + unreachable +ok3815: + %t1414 = getelementptr inbounds %S.gen.Gen, ptr %t1412, i32 0, i32 15 + %t1415 = load i64, ptr %a1302 + %t1416 = load { ptr, i64, i64 }, ptr %t1414 + %t1417 = extractvalue { ptr, i64, i64 } %t1416, 1 + %t1418 = icmp uge i64 %t1415, %t1417 + br i1 %t1418, label %range3816, label %inrange3817 +range3816: + call void @finch_panic_index(ptr @.str.2368, i64 1588, i64 %t1415, i64 %t1417) + unreachable +inrange3817: + %t1419 = extractvalue { ptr, i64, i64 } %t1416, 0 + %t1420 = getelementptr inbounds %S.gen.FnSig, ptr %t1419, i64 %t1415 + %t1421 = getelementptr inbounds %S.gen.FnSig, ptr %t1420, i32 0, i32 14 + %t1422 = load i64, ptr %a1373 + %t1423 = load { ptr, i64, i64 }, ptr %t1421 + %t1424 = extractvalue { ptr, i64, i64 } %t1423, 1 + %t1425 = icmp uge i64 %t1422, %t1424 + br i1 %t1425, label %range3818, label %inrange3819 +range3818: + call void @finch_panic_index(ptr @.str.2369, i64 1588, i64 %t1422, i64 %t1424) + unreachable +inrange3819: + %t1426 = extractvalue { ptr, i64, i64 } %t1423, 0 + %t1427 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1426, i64 %t1422 + %t1428 = load { ptr, i64, i64 }, ptr %t1427 + %t1429 = load %S.ast.Node, ptr %a1360 + %t1430 = call i1 @finch.gen.mutates(ptr %t1411, { ptr, i64, i64 } %t1428, %S.ast.Node %t1429) + %t1431 = xor i1 %t1430, true + br label %logic.rend3820 +logic.rend3820: + br label %logic.end3813 +logic.end3813: + %t1432 = phi i1 [ false, %logic.from3811 ], [ %t1431, %logic.rend3820 ] + %t1433 = load i64, ptr %t1407 + %t1434 = add i64 %t1433, 1 + call void @finch_arr_reserve(ptr %t1406, i64 %t1434, i64 ptrtoint (ptr getelementptr (i1, ptr null, i32 1) to i64)) + %t1435 = load ptr, ptr %t1406 + %t1436 = getelementptr inbounds i1, ptr %t1435, i64 %t1433 + store i1 %t1432, ptr %t1436 + store i64 %t1434, ptr %t1407 + call void @finch.drop.S_ast_Type(ptr %a1396) + br label %for.step3799 +for.step3799: + %t1437 = load i64, ptr %a1373 + %t1438 = add i64 %t1437, 1 + store i64 %t1438, ptr %a1373 + br label %for.cond3797 +for.end3800: + call void @finch.drop.S_ast_Node(ptr %a1360) + call void @finch.drop.S_ast_Node(ptr %a1345) + br label %for.step3775 +for.step3775: + %t1439 = load i64, ptr %a1302 + %t1440 = add i64 %t1439, 1 + store i64 %t1440, ptr %a1302 + br label %for.cond3773 +for.end3776: ret void } @@ -34202,38 +39877,38 @@ entry: store i1 %p4, ptr %a5 %t6 = load ptr, ptr %a1 %t7 = icmp eq ptr %t6, null - br i1 %t7, label %panic3610, label %ok3611 -panic3610: - call void @finch_panic(ptr @.str.2285, i64 1446, ptr @.str.2286) + br i1 %t7, label %panic3821, label %ok3822 +panic3821: + call void @finch_panic(ptr @.str.2370, i64 1594, ptr @.str.2371) unreachable -ok3611: - %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 16 +ok3822: + %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 17 %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.cond3612 -for.cond3612: + br label %for.cond3823 +for.cond3823: %t12 = load i64, ptr %a11 %t13 = icmp slt i64 %t12, %t10 - br i1 %t13, label %for.body3613, label %for.end3615 -for.body3613: + br i1 %t13, label %for.body3824, label %for.end3826 +for.body3824: %t14 = load ptr, ptr %a1 %t15 = icmp eq ptr %t14, null - br i1 %t15, label %panic3616, label %ok3617 -panic3616: - call void @finch_panic(ptr @.str.2287, i64 1447, ptr @.str.2288) + br i1 %t15, label %panic3827, label %ok3828 +panic3827: + call void @finch_panic(ptr @.str.2372, i64 1595, ptr @.str.2373) unreachable -ok3617: - %t16 = getelementptr inbounds %S.gen.Gen, ptr %t14, i32 0, i32 16 +ok3828: + %t16 = getelementptr inbounds %S.gen.Gen, ptr %t14, i32 0, i32 17 %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 %range3618, label %inrange3619 -range3618: - call void @finch_panic_index(ptr @.str.2289, i64 1447, i64 %t17, i64 %t19) + br i1 %t20, label %range3829, label %inrange3830 +range3829: + call void @finch_panic_index(ptr @.str.2374, i64 1595, i64 %t17, i64 %t19) unreachable -inrange3619: +inrange3830: %t21 = extractvalue { ptr, i64, i64 } %t18, 0 %t22 = getelementptr inbounds %S.gen.Template, ptr %t21, i64 %t17 %t23 = load %S.gen.Template, ptr %t22 @@ -34248,10 +39923,10 @@ inrange3619: 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.from3620 -logic.from3620: - br i1 %t34, label %logic.rhs3621, label %logic.end3622 -logic.rhs3621: + br label %logic.from3831 +logic.from3831: + br i1 %t34, label %logic.rhs3832, label %logic.end3833 +logic.rhs3832: %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 @@ -34259,15 +39934,15 @@ logic.rhs3621: 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.rend3623 -logic.rend3623: - br label %logic.end3622 -logic.end3622: - %t42 = phi i1 [ false, %logic.from3620 ], [ %t41, %logic.rend3623 ] - br label %logic.from3624 -logic.from3624: - br i1 %t42, label %logic.rhs3625, label %logic.end3626 -logic.rhs3625: + br label %logic.rend3834 +logic.rend3834: + br label %logic.end3833 +logic.end3833: + %t42 = phi i1 [ false, %logic.from3831 ], [ %t41, %logic.rend3834 ] + br label %logic.from3835 +logic.from3835: + br i1 %t42, label %logic.rhs3836, label %logic.end3837 +logic.rhs3836: %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 @@ -34275,36 +39950,38 @@ logic.rhs3625: 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.rend3627 -logic.rend3627: - br label %logic.end3626 -logic.end3626: - %t50 = phi i1 [ false, %logic.from3624 ], [ %t49, %logic.rend3627 ] - br label %logic.from3628 -logic.from3628: - br i1 %t50, label %logic.rhs3629, label %logic.end3630 -logic.rhs3629: + br label %logic.rend3838 +logic.rend3838: + br label %logic.end3837 +logic.end3837: + %t50 = phi i1 [ false, %logic.from3835 ], [ %t49, %logic.rend3838 ] + br label %logic.from3839 +logic.from3839: + br i1 %t50, label %logic.rhs3840, label %logic.end3841 +logic.rhs3840: %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.rend3631 -logic.rend3631: - br label %logic.end3630 -logic.end3630: - %t55 = phi i1 [ false, %logic.from3628 ], [ %t54, %logic.rend3631 ] - br i1 %t55, label %then3632, label %endif3634 -then3632: + br label %logic.rend3842 +logic.rend3842: + br label %logic.end3841 +logic.end3841: + %t55 = phi i1 [ false, %logic.from3839 ], [ %t54, %logic.rend3842 ] + br i1 %t55, label %then3843, label %endif3845 +then3843: %t56 = load i64, ptr %a11 + call void @finch.drop.S_gen_Template(ptr %a27) ret i64 %t56 -endif3634: - br label %for.step3614 -for.step3614: +endif3845: + call void @finch.drop.S_gen_Template(ptr %a27) + br label %for.step3825 +for.step3825: %t57 = load i64, ptr %a11 %t58 = add i64 %t57, 1 store i64 %t58, ptr %a11 - br label %for.cond3612 -for.end3615: + br label %for.cond3823 +for.end3826: ret i64 -1 } @@ -34319,14 +39996,14 @@ entry: store { ptr, i64, i64 } %p0, ptr %a1 store { ptr, i64, i64 } zeroinitializer, ptr %a2 store i64 0, ptr %a3 - br label %each.cond3635 -each.cond3635: + br label %each.cond3846 +each.cond3846: %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.body3636, label %each.end3638 -each.body3636: + br i1 %t7, label %each.body3847, label %each.end3849 +each.body3847: %t8 = load ptr, ptr %a1 %t9 = getelementptr inbounds %S.ast.Type, ptr %t8, i64 %t6 %t10 = load %S.ast.Type, ptr %t9 @@ -34341,17 +40018,18 @@ each.body3636: %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.step3637 -each.step3637: + br label %each.step3848 +each.step3848: %t19 = load i64, ptr %a3 %t20 = add i64 %t19, 1 store i64 %t20, ptr %a3 - br label %each.cond3635 -each.end3638: + br label %each.cond3846 +each.end3849: %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2290, i64 2, i64 0 }, ptr %a22 + store { ptr, i64, i64 } { ptr @.str.2375, i64 2, i64 0 }, ptr %a22 call void @finch_str_join(ptr %a23, ptr %a2, ptr %a22) %t24 = load { ptr, i64, i64 }, ptr %a23 + call void @finch.drop.arr_str(ptr %a2) ret { ptr, i64, i64 } %t24 } @@ -34369,67 +40047,85 @@ entry: %a20 = alloca { ptr, i64, i64 }, align 16 %a21 = alloca { ptr, i64, i64 }, align 16 %a22 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 + %a23 = 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 - %a30 = alloca { ptr, i64, i64 }, align 16 %a31 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca %S.gen.Template, align 16 - %a44 = alloca %S.gen.Template, align 16 - %a46 = alloca %S.gen.Template, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 + %a32 = alloca { ptr, i64, i64 }, align 16 + %a33 = alloca { ptr, i64, i64 }, align 16 + %a34 = alloca { ptr, i64, i64 }, align 16 + %a36 = alloca { ptr, i64, i64 }, align 16 + %a47 = alloca %S.gen.Template, align 16 + %a48 = alloca %S.gen.Template, align 16 + %a50 = alloca %S.gen.Template, align 16 + %a60 = alloca { ptr, i64, i64 }, align 16 + %a61 = alloca { ptr, i64, i64 }, align 16 + %a62 = 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 + %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 %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 - %a85 = alloca { ptr, i64, i64 }, align 16 + %a86 = 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 - %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 + %a96 = alloca { ptr, i64, i64 }, align 16 %a97 = 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 - %a101 = 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 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a110 = 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 %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 + %a117 = alloca { ptr, i64, i64 }, align 16 + %a119 = alloca { ptr, i64, i64 }, align 16 + %a120 = alloca { ptr, i64, i64 }, align 16 + %a121 = alloca { ptr, i64, i64 }, align 16 + %a125 = 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 + %a132 = alloca { ptr, i64, i64 }, align 16 + %a133 = alloca { ptr, i64, i64 }, align 16 %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 + %a136 = alloca { ptr, i64, i64 }, align 16 + %a147 = alloca { ptr, i64, i64 }, align 16 + %a148 = 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 + %a163 = alloca { ptr, i64, i64 }, align 16 + %a164 = alloca { ptr, i64, i64 }, align 16 + %a168 = alloca { ptr, i64, i64 }, align 16 + %a169 = alloca { ptr, i64, i64 }, align 16 + %a191 = alloca { ptr, i64, i64 }, align 16 + %a192 = alloca { ptr, i64, i64 }, align 16 + %a196 = alloca { ptr, i64, i64 }, align 16 + %a197 = 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 @@ -34438,218 +40134,256 @@ 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.2291, 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.2376, 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 %then3639, label %endif3641 -then3639: + br i1 %t12, label %then3850, label %endif3852 +then3850: %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.2292, i64 34, i64 0 }, ptr %a17 + store { ptr, i64, i64 } { ptr @.str.2377, 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.2293, i64 28, i64 0 }, ptr %a22 + store { ptr, i64, i64 } { ptr @.str.2378, 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 - store { ptr, i64, i64 } %t23, ptr %a26 + store { ptr, i64, i64 } %t19, ptr %a23 + call void @finch_str_drop(ptr %a23) + %t24 = load { ptr, i64, i64 }, ptr %a20 + %t25 = load { ptr, i64, i64 }, ptr %a3 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.2294, 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 %endif3641 -endif3641: - %t33 = load ptr, ptr %a1 - %t34 = icmp eq ptr %t33, null - br i1 %t34, label %panic3642, label %ok3643 -panic3642: - call void @finch_panic(ptr @.str.2295, i64 1469, ptr @.str.2296) + store { ptr, i64, i64 } %t25, ptr %a28 + call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28) + store { ptr, i64, i64 } %t24, ptr %a29 + call void @finch_str_drop(ptr %a29) + %t30 = load { ptr, i64, i64 }, ptr %a26 + store { ptr, i64, i64 } %t30, ptr %a32 + store { ptr, i64, i64 } { ptr @.str.2379, i64 34, i64 0 }, ptr %a33 + call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) + store { ptr, i64, i64 } %t30, ptr %a34 + call void @finch_str_drop(ptr %a34) + %t35 = load { ptr, i64, i64 }, ptr %a31 + call void @finch.gen.fail(ptr %t13, %S.ast.Node %t14, { ptr, i64, i64 } %t35) + store { ptr, i64, i64 } %t35, ptr %a36 + call void @finch_str_drop(ptr %a36) + br label %endif3852 +endif3852: + %t37 = load ptr, ptr %a1 + %t38 = icmp eq ptr %t37, null + br i1 %t38, label %panic3853, label %ok3854 +panic3853: + call void @finch_panic(ptr @.str.2380, i64 1617, ptr @.str.2381) unreachable -ok3643: - %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 %range3644, label %inrange3645 -range3644: - call void @finch_panic_index(ptr @.str.2297, i64 1469, i64 %t36, i64 %t38) +ok3854: + %t39 = getelementptr inbounds %S.gen.Gen, ptr %t37, i32 0, i32 17 + %t40 = load i64, ptr %a10 + %t41 = load { ptr, i64, i64 }, ptr %t39 + %t42 = extractvalue { ptr, i64, i64 } %t41, 1 + %t43 = icmp uge i64 %t40, %t42 + br i1 %t43, label %range3855, label %inrange3856 +range3855: + call void @finch_panic_index(ptr @.str.2382, i64 1617, i64 %t40, i64 %t42) unreachable -inrange3645: - %t40 = extractvalue { ptr, i64, i64 } %t37, 0 - %t41 = getelementptr inbounds %S.gen.Template, ptr %t40, i64 %t36 - %t42 = load %S.gen.Template, ptr %t41 - store %S.gen.Template %t42, ptr %a43 - call void @finch.copy.S_gen_Template(ptr %a44, ptr %a43) - %t45 = load %S.gen.Template, ptr %a44 - store %S.gen.Template %t45, ptr %a46 - %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - %t48 = load i64, ptr %t47 - %t49 = getelementptr inbounds %S.gen.Template, ptr %a46, i32 0, i32 3 - %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 %then3646, label %endif3648 -then3646: - %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.2298, 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 - %t61 = getelementptr inbounds { ptr, i64, i64 }, ptr %t60, i32 0, i32 1 - %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 } %t59, 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.2299, i64 24, i64 0 }, ptr %a71 +inrange3856: + %t44 = extractvalue { ptr, i64, i64 } %t41, 0 + %t45 = getelementptr inbounds %S.gen.Template, ptr %t44, i64 %t40 + %t46 = load %S.gen.Template, ptr %t45 + store %S.gen.Template %t46, ptr %a47 + call void @finch.copy.S_gen_Template(ptr %a48, ptr %a47) + %t49 = load %S.gen.Template, ptr %a48 + store %S.gen.Template %t49, ptr %a50 + %t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 + %t52 = load i64, ptr %t51 + %t53 = getelementptr inbounds %S.gen.Template, ptr %a50, i32 0, i32 3 + %t54 = getelementptr inbounds { ptr, i64, i64 }, ptr %t53, i32 0, i32 1 + %t55 = load i64, ptr %t54 + %t56 = icmp ne i64 %t52, %t55 + br i1 %t56, label %then3857, label %endif3859 +then3857: + %t57 = load ptr, ptr %a1 + %t58 = load %S.ast.Node, ptr %a5 + %t59 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t59, ptr %a61 + store { ptr, i64, i64 } { ptr @.str.2383, i64 7, i64 0 }, ptr %a62 + call void @finch_str_concat(ptr %a60, ptr %a61, ptr %a62) + %t63 = load { ptr, i64, i64 }, ptr %a60 + %t64 = getelementptr inbounds %S.gen.Template, ptr %a50, i32 0, i32 3 + %t65 = getelementptr inbounds { ptr, i64, i64 }, ptr %t64, i32 0, i32 1 + %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 } %t63, 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, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t72, 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.2300, 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.2301, 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 - 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.2302, 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 - %t96 = load i64, ptr %t95 - call void @finch_str_from_int(ptr %a97, i64 %t96) - %t98 = load { ptr, i64, i64 }, ptr %a97 - 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 - call void @finch.gen.fail(ptr %t53, %S.ast.Node %t54, { ptr, i64, i64 } %t102) - br label %endif3648 -endif3648: - %t103 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t103, ptr %a105 - store { ptr, i64, i64 } { ptr @.str.2303, 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 - %t109 = call { ptr, i64, i64 } @finch.gen.shownTypes({ ptr, i64, i64 } %t108) - store { ptr, i64, i64 } %t107, 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.2304, 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 - %t119 = load ptr, ptr %a1 - %t120 = load { ptr, i64, i64 }, ptr %a2 - %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 %then3649, label %endif3651 -then3649: - %t124 = load ptr, ptr %a1 - %t125 = icmp eq ptr %t124, null - br i1 %t125, label %panic3652, label %ok3653 -panic3652: - call void @finch_panic(ptr @.str.2305, i64 1475, ptr @.str.2306) + store { ptr, i64, i64 } %t63, ptr %a72 + call void @finch_str_drop(ptr %a72) + store { ptr, i64, i64 } %t68, ptr %a73 + call void @finch_str_drop(ptr %a73) + %t74 = load { ptr, i64, i64 }, ptr %a69 + store { ptr, i64, i64 } %t74, ptr %a76 + store { ptr, i64, i64 } { ptr @.str.2384, i64 24, i64 0 }, ptr %a77 + call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77) + store { ptr, i64, i64 } %t74, ptr %a78 + call void @finch_str_drop(ptr %a78) + %t79 = load { ptr, i64, i64 }, ptr %a75 + %t80 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t79, ptr %a82 + store { ptr, i64, i64 } %t80, ptr %a83 + call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) + store { ptr, i64, i64 } %t79, ptr %a84 + call void @finch_str_drop(ptr %a84) + %t85 = load { ptr, i64, i64 }, ptr %a81 + store { ptr, i64, i64 } %t85, ptr %a87 + store { ptr, i64, i64 } { ptr @.str.2385, i64 1, i64 0 }, ptr %a88 + call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) + store { ptr, i64, i64 } %t85, ptr %a89 + call void @finch_str_drop(ptr %a89) + %t90 = load { ptr, i64, i64 }, ptr %a86 + %t91 = getelementptr inbounds %S.gen.Template, ptr %a50, i32 0, i32 3 + %t92 = getelementptr inbounds { ptr, i64, i64 }, ptr %t91, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.2386, i64 2, i64 0 }, ptr %a93 + call void @finch_str_join(ptr %a94, ptr %t91, ptr %a93) + %t95 = load { ptr, i64, i64 }, ptr %a94 + store { ptr, i64, i64 } %t90, ptr %a97 + store { ptr, i64, i64 } %t95, ptr %a98 + call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) + store { ptr, i64, i64 } %t90, ptr %a99 + call void @finch_str_drop(ptr %a99) + store { ptr, i64, i64 } %t95, ptr %a100 + call void @finch_str_drop(ptr %a100) + %t101 = load { ptr, i64, i64 }, ptr %a96 + store { ptr, i64, i64 } %t101, ptr %a103 + store { ptr, i64, i64 } { ptr @.str.2387, i64 11, i64 0 }, ptr %a104 + call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104) + store { ptr, i64, i64 } %t101, ptr %a105 + call void @finch_str_drop(ptr %a105) + %t106 = load { ptr, i64, i64 }, ptr %a102 + %t107 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 + %t108 = load i64, ptr %t107 + call void @finch_str_from_int(ptr %a109, i64 %t108) + %t110 = load { ptr, i64, i64 }, ptr %a109 + store { ptr, i64, i64 } %t106, ptr %a112 + store { ptr, i64, i64 } %t110, ptr %a113 + call void @finch_str_concat(ptr %a111, ptr %a112, ptr %a113) + store { ptr, i64, i64 } %t106, ptr %a114 + call void @finch_str_drop(ptr %a114) + store { ptr, i64, i64 } %t110, ptr %a115 + call void @finch_str_drop(ptr %a115) + %t116 = load { ptr, i64, i64 }, ptr %a111 + call void @finch.gen.fail(ptr %t57, %S.ast.Node %t58, { ptr, i64, i64 } %t116) + store { ptr, i64, i64 } %t116, ptr %a117 + call void @finch_str_drop(ptr %a117) + br label %endif3859 +endif3859: + %t118 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t118, ptr %a120 + store { ptr, i64, i64 } { ptr @.str.2388, i64 1, 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 %a4 + %t124 = call { ptr, i64, i64 } @finch.gen.shownTypes({ ptr, i64, i64 } %t123) + store { ptr, i64, i64 } %t122, ptr %a126 + store { ptr, i64, i64 } %t124, ptr %a127 + call void @finch_str_concat(ptr %a125, ptr %a126, ptr %a127) + store { ptr, i64, i64 } %t122, ptr %a128 + call void @finch_str_drop(ptr %a128) + store { ptr, i64, i64 } %t124, ptr %a129 + call void @finch_str_drop(ptr %a129) + %t130 = load { ptr, i64, i64 }, ptr %a125 + store { ptr, i64, i64 } %t130, ptr %a132 + store { ptr, i64, i64 } { ptr @.str.2389, i64 1, i64 0 }, ptr %a133 + call void @finch_str_concat(ptr %a131, ptr %a132, ptr %a133) + store { ptr, i64, i64 } %t130, ptr %a134 + call void @finch_str_drop(ptr %a134) + %t135 = load { ptr, i64, i64 }, ptr %a131 + store { ptr, i64, i64 } %t135, ptr %a136 + %t137 = load ptr, ptr %a1 + %t138 = load { ptr, i64, i64 }, ptr %a2 + %t139 = load { ptr, i64, i64 }, ptr %a136 + %t140 = call i64 @finch.gen.findStruct(ptr %t137, { ptr, i64, i64 } %t138, { ptr, i64, i64 } %t139) + %t141 = icmp slt i64 %t140, 0 + br i1 %t141, label %then3860, label %endif3862 +then3860: + %t142 = load ptr, ptr %a1 + %t143 = icmp eq ptr %t142, null + br i1 %t143, label %panic3863, label %ok3864 +panic3863: + call void @finch_panic(ptr @.str.2390, i64 1623, ptr @.str.2391) unreachable -ok3653: - %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 - store { ptr, i64, i64 } %t128, ptr %a129 - call void @finch_str_copy(ptr %a130, ptr %a129) - %t131 = load { ptr, i64, i64 }, ptr %a130 - %t132 = insertvalue %S.gen.StructDef zeroinitializer, { ptr, i64, i64 } %t131, 0 - %t133 = load { ptr, i64, i64 }, ptr %a118 - 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.gen.StructDef %t132, { ptr, i64, i64 } %t136, 1 - %t138 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t138, ptr %a139 - call void @finch_str_copy(ptr %a140, ptr %a139) - %t141 = load { ptr, i64, i64 }, ptr %a140 - %t142 = insertvalue %S.gen.StructDef %t137, { ptr, i64, i64 } %t141, 5 - %t143 = getelementptr inbounds %S.gen.Template, ptr %a46, i32 0, i32 3 - %t144 = load { ptr, i64, i64 }, ptr %t143 - store { ptr, i64, i64 } %t144, ptr %a145 - call void @finch.copy.arr_str(ptr %a146, ptr %a145) - %t147 = load { ptr, i64, i64 }, ptr %a146 - %t148 = insertvalue %S.gen.StructDef %t142, { ptr, i64, i64 } %t147, 6 - %t149 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t149, ptr %a150 - call void @finch.copy.arr_S_ast_Type(ptr %a151, ptr %a150) - %t152 = load { ptr, i64, i64 }, ptr %a151 - %t153 = insertvalue %S.gen.StructDef %t148, { ptr, i64, i64 } %t152, 7 - %t154 = getelementptr inbounds %S.gen.Template, ptr %a46, i32 0, i32 4 - %t155 = load i64, ptr %t154 - %t156 = insertvalue %S.gen.StructDef %t153, i64 %t155, 13 - %t157 = getelementptr inbounds %S.gen.Template, ptr %a46, i32 0, i32 5 - %t158 = load i64, ptr %t157 - %t159 = insertvalue %S.gen.StructDef %t156, i64 %t158, 14 - %t160 = load i64, ptr %t127 - %t161 = add i64 %t160, 1 - call void @finch_arr_reserve(ptr %t126, i64 %t161, i64 ptrtoint (ptr getelementptr (%S.gen.StructDef, ptr null, i32 1) to i64)) - %t162 = load ptr, ptr %t126 - %t163 = getelementptr inbounds %S.gen.StructDef, ptr %t162, i64 %t160 - store %S.gen.StructDef %t159, ptr %t163 - store i64 %t161, ptr %t127 - %t164 = load ptr, ptr %a1 - %t165 = load ptr, ptr %a1 - %t166 = icmp eq ptr %t165, null - br i1 %t166, label %panic3654, label %ok3655 -panic3654: - call void @finch_panic(ptr @.str.2307, i64 1476, ptr @.str.2308) +ok3864: + %t144 = getelementptr inbounds %S.gen.Gen, ptr %t142, i32 0, i32 16 + %t145 = getelementptr inbounds { ptr, i64, i64 }, ptr %t144, i32 0, i32 1 + %t146 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t146, ptr %a147 + call void @finch_str_copy(ptr %a148, ptr %a147) + %t149 = load { ptr, i64, i64 }, ptr %a148 + %t150 = insertvalue %S.gen.StructDef zeroinitializer, { ptr, i64, i64 } %t149, 0 + %t151 = load { ptr, i64, i64 }, ptr %a136 + store { ptr, i64, i64 } %t151, ptr %a152 + call void @finch_str_copy(ptr %a153, ptr %a152) + %t154 = load { ptr, i64, i64 }, ptr %a153 + %t155 = insertvalue %S.gen.StructDef %t150, { ptr, i64, i64 } %t154, 1 + %t156 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t156, ptr %a157 + call void @finch_str_copy(ptr %a158, ptr %a157) + %t159 = load { ptr, i64, i64 }, ptr %a158 + %t160 = insertvalue %S.gen.StructDef %t155, { ptr, i64, i64 } %t159, 5 + %t161 = getelementptr inbounds %S.gen.Template, ptr %a50, i32 0, i32 3 + %t162 = load { ptr, i64, i64 }, ptr %t161 + store { ptr, i64, i64 } %t162, ptr %a163 + call void @finch.copy.arr_str(ptr %a164, ptr %a163) + %t165 = load { ptr, i64, i64 }, ptr %a164 + %t166 = insertvalue %S.gen.StructDef %t160, { ptr, i64, i64 } %t165, 6 + %t167 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t167, ptr %a168 + call void @finch.copy.arr_S_ast_Type(ptr %a169, ptr %a168) + %t170 = load { ptr, i64, i64 }, ptr %a169 + %t171 = insertvalue %S.gen.StructDef %t166, { ptr, i64, i64 } %t170, 7 + %t172 = getelementptr inbounds %S.gen.Template, ptr %a50, i32 0, i32 4 + %t173 = load i64, ptr %t172 + %t174 = insertvalue %S.gen.StructDef %t171, i64 %t173, 13 + %t175 = getelementptr inbounds %S.gen.Template, ptr %a50, i32 0, i32 5 + %t176 = load i64, ptr %t175 + %t177 = insertvalue %S.gen.StructDef %t174, i64 %t176, 14 + %t178 = load i64, ptr %t145 + %t179 = add i64 %t178, 1 + call void @finch_arr_reserve(ptr %t144, i64 %t179, i64 ptrtoint (ptr getelementptr (%S.gen.StructDef, ptr null, i32 1) to i64)) + %t180 = load ptr, ptr %t144 + %t181 = getelementptr inbounds %S.gen.StructDef, ptr %t180, i64 %t178 + store %S.gen.StructDef %t177, ptr %t181 + store i64 %t179, ptr %t145 + %t182 = load ptr, ptr %a1 + %t183 = load ptr, ptr %a1 + %t184 = icmp eq ptr %t183, null + br i1 %t184, label %panic3865, label %ok3866 +panic3865: + call void @finch_panic(ptr @.str.2392, i64 1624, ptr @.str.2393) unreachable -ok3655: - %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 %endif3651 -endif3651: - %t171 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.2309, 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) - %t175 = load { ptr, i64, i64 }, ptr %a174 - %t176 = insertvalue %S.ast.Type %t171, { ptr, i64, i64 } %t175, 2 - %t177 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t177, ptr %a178 - call void @finch_str_copy(ptr %a179, ptr %a178) - %t180 = load { ptr, i64, i64 }, ptr %a179 - %t181 = insertvalue %S.ast.Type %t176, { ptr, i64, i64 } %t180, 3 - ret %S.ast.Type %t181 +ok3866: + %t185 = getelementptr inbounds %S.gen.Gen, ptr %t183, i32 0, i32 16 + %t186 = getelementptr inbounds { ptr, i64, i64 }, ptr %t185, i32 0, i32 1 + %t187 = load i64, ptr %t186 + %t188 = sub i64 %t187, 1 + call void @finch.gen.resolveStruct(ptr %t182, i64 %t188) + br label %endif3862 +endif3862: + %t189 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.2394, i64 6, i64 0 }, 0 + %t190 = load { ptr, i64, i64 }, ptr %a136 + store { ptr, i64, i64 } %t190, ptr %a191 + call void @finch_str_copy(ptr %a192, ptr %a191) + %t193 = load { ptr, i64, i64 }, ptr %a192 + %t194 = insertvalue %S.ast.Type %t189, { ptr, i64, i64 } %t193, 2 + %t195 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t195, ptr %a196 + call void @finch_str_copy(ptr %a197, ptr %a196) + %t198 = load { ptr, i64, i64 }, ptr %a197 + %t199 = insertvalue %S.ast.Type %t194, { ptr, i64, i64 } %t198, 3 + call void @finch_str_drop(ptr %a136) + call void @finch.drop.S_gen_Template(ptr %a50) + ret %S.ast.Type %t199 } define internal i64 @finch.gen.instFn(ptr %p0, i64 %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3, %S.ast.Node %p4) { @@ -34668,105 +40402,134 @@ entry: %a28 = 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 %a32 = 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 %a36 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca i64, align 16 - %a58 = alloca i64, align 16 - %a81 = alloca %S.ast.Node, align 16 - %a82 = alloca %S.ast.Node, align 16 + %a37 = alloca { ptr, i64, i64 }, align 16 + %a39 = alloca { ptr, i64, i64 }, align 16 + %a52 = alloca i64, align 16 + %a61 = alloca i64, align 16 %a84 = alloca %S.ast.Node, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca %S.gen.FnSig, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 + %a85 = alloca %S.ast.Node, align 16 + %a87 = alloca %S.ast.Node, 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 + %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 + %a112 = alloca { ptr, i64, i64 }, align 16 + %a113 = alloca { ptr, i64, i64 }, align 16 + %a117 = alloca { ptr, i64, i64 }, align 16 + %a118 = alloca { ptr, i64, i64 }, align 16 + %a133 = alloca %S.gen.FnSig, align 16 + %a137 = 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 + %a142 = alloca { ptr, i64, i64 }, align 16 + %a143 = 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 - %a156 = 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 + %a152 = alloca { ptr, i64, i64 }, align 16 + %a153 = alloca { ptr, i64, i64 }, align 16 %a157 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 + %a165 = alloca { ptr, i64, i64 }, align 16 + %a166 = 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 + %a177 = alloca { ptr, i64, i64 }, align 16 + %a180 = 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 - %a185 = alloca { ptr, i64, i64 }, align 16 %a186 = alloca { ptr, i64, i64 }, align 16 %a187 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 + %a188 = alloca { ptr, i64, i64 }, align 16 + %a189 = alloca { ptr, i64, i64 }, align 16 %a193 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 %a197 = alloca { ptr, i64, i64 }, align 16 %a198 = 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 %a203 = alloca { ptr, i64, i64 }, align 16 %a204 = alloca { ptr, i64, i64 }, align 16 + %a205 = alloca { ptr, i64, i64 }, align 16 + %a210 = 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 %a214 = alloca { ptr, i64, i64 }, align 16 + %a216 = alloca { ptr, i64, i64 }, align 16 + %a217 = alloca { ptr, i64, i64 }, align 16 + %a218 = alloca { ptr, i64, i64 }, align 16 %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a228 = 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 + %a226 = 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 %a238 = alloca { ptr, i64, i64 }, align 16 + %a243 = 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 %a251 = alloca { ptr, i64, i64 }, align 16 %a252 = alloca { ptr, i64, i64 }, align 16 + %a254 = alloca { ptr, i64, i64 }, align 16 %a259 = alloca { ptr, i64, 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 + %a262 = alloca { ptr, i64, i64 }, align 16 %a268 = alloca { ptr, i64, i64 }, align 16 %a269 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca %S.ast.Node, align 16 - %a293 = alloca %S.ast.Node, align 16 - %a295 = alloca %S.ast.Node, align 16 - %a300 = alloca i64, align 16 - %a322 = alloca %S.ast.Type, align 16 - %a326 = alloca %S.ast.Type, align 16 - %a327 = alloca %S.ast.Type, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a345 = alloca { ptr, i64, i64 }, align 16 + %a272 = alloca { ptr, i64, i64 }, align 16 + %a277 = alloca { ptr, i64, i64 }, align 16 + %a278 = alloca { ptr, i64, i64 }, align 16 + %a281 = alloca { ptr, i64, i64 }, align 16 + %a287 = alloca { ptr, i64, i64 }, align 16 + %a288 = alloca { ptr, i64, i64 }, align 16 + %a291 = 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 + %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 + %a307 = alloca { ptr, i64, i64 }, align 16 + %a315 = alloca %S.ast.Type, align 16 + %a327 = alloca %S.ast.Node, align 16 + %a328 = alloca %S.ast.Node, align 16 + %a330 = alloca %S.ast.Node, align 16 + %a335 = alloca i64, align 16 + %a357 = alloca %S.ast.Type, align 16 + %a361 = alloca %S.ast.Type, align 16 + %a362 = alloca %S.ast.Type, align 16 + %a379 = alloca { ptr, i64, i64 }, align 16 %a380 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca { ptr, i64, i64 }, align 16 - %a394 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a401 = alloca { ptr, i64, i64 }, align 16 - %a402 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca %S.gen.FnSig, align 16 - %a410 = alloca %S.gen.FnSig, align 16 + %a415 = alloca { ptr, i64, i64 }, align 16 + %a416 = alloca { ptr, i64, i64 }, align 16 + %a419 = alloca { ptr, i64, i64 }, align 16 + %a424 = alloca { ptr, i64, i64 }, align 16 + %a425 = alloca { ptr, i64, i64 }, align 16 + %a428 = alloca { ptr, i64, i64 }, align 16 + %a433 = alloca { ptr, i64, i64 }, align 16 + %a434 = alloca { ptr, i64, i64 }, align 16 + %a437 = 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 + %a452 = alloca %S.gen.FnSig, align 16 + %a453 = alloca %S.gen.FnSig, align 16 store ptr %p0, ptr %a1 store i64 %p1, ptr %a2 store { ptr, i64, i64 } %p2, ptr %a3 @@ -34774,21 +40537,21 @@ entry: store %S.ast.Node %p4, ptr %a5 %t6 = load ptr, ptr %a1 %t7 = icmp eq ptr %t6, null - br i1 %t7, label %panic3656, label %ok3657 -panic3656: - call void @finch_panic(ptr @.str.2310, i64 1483, ptr @.str.2311) + br i1 %t7, label %panic3867, label %ok3868 +panic3867: + call void @finch_panic(ptr @.str.2395, i64 1631, ptr @.str.2396) unreachable -ok3657: - %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 16 +ok3868: + %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 17 %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 %range3658, label %inrange3659 -range3658: - call void @finch_panic_index(ptr @.str.2312, i64 1483, i64 %t9, i64 %t11) + br i1 %t12, label %range3869, label %inrange3870 +range3869: + call void @finch_panic_index(ptr @.str.2397, i64 1631, i64 %t9, i64 %t11) unreachable -inrange3659: +inrange3870: %t13 = extractvalue { ptr, i64, i64 } %t10, 0 %t14 = getelementptr inbounds %S.gen.Template, ptr %t13, i64 %t9 %t15 = load %S.gen.Template, ptr %t14 @@ -34799,7 +40562,7 @@ inrange3659: %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.2313, i64 1, i64 0 }, ptr %a24 + store { ptr, i64, i64 } { ptr @.str.2398, 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 @@ -34807,569 +40570,655 @@ inrange3659: store { ptr, i64, i64 } %t25, 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.2314, 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 - %t37 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 2 - %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 %then3660, label %else3661 -then3660: - %t41 = load ptr, ptr %a1 - %t42 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 - %t43 = load { ptr, i64, i64 }, ptr %t42 - %t44 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 2 - %t45 = load { ptr, i64, i64 }, ptr %t44 - %t46 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 1 - %t47 = load { ptr, i64, i64 }, ptr %t46 - %t48 = call i64 @finch.gen.findMethod(ptr %t41, { ptr, i64, i64 } %t43, { ptr, i64, i64 } %t45, { ptr, i64, i64 } %t47) - store i64 %t48, ptr %a49 - %t50 = load i64, ptr %a49 - %t51 = icmp sge i64 %t50, 0 - br i1 %t51, label %then3663, label %endif3665 -then3663: - %t52 = load i64, ptr %a49 - ret i64 %t52 -endif3665: - br label %endif3662 -else3661: - %t53 = load ptr, ptr %a1 - %t54 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 - %t55 = load { ptr, i64, i64 }, ptr %t54 - %t56 = load { ptr, i64, i64 }, ptr %a36 - %t57 = call i64 @finch.gen.findFn(ptr %t53, { ptr, i64, i64 } %t55, { ptr, i64, i64 } %t56) - store i64 %t57, ptr %a58 - %t59 = load i64, ptr %a58 - %t60 = icmp sge i64 %t59, 0 - br i1 %t60, label %then3666, label %endif3668 -then3666: - %t61 = load i64, ptr %a58 - ret i64 %t61 -endif3668: - br label %endif3662 -endif3662: - %t62 = load ptr, ptr %a1 - %t63 = icmp eq ptr %t62, null - br i1 %t63, label %panic3669, label %ok3670 -panic3669: - call void @finch_panic(ptr @.str.2315, i64 1496, ptr @.str.2316) + store { ptr, i64, i64 } %t25, ptr %a31 + call void @finch_str_drop(ptr %a31) + store { ptr, i64, i64 } %t27, ptr %a32 + call void @finch_str_drop(ptr %a32) + %t33 = load { ptr, i64, i64 }, ptr %a28 + store { ptr, i64, i64 } %t33, ptr %a35 + store { ptr, i64, i64 } { ptr @.str.2399, i64 1, i64 0 }, ptr %a36 + call void @finch_str_concat(ptr %a34, ptr %a35, ptr %a36) + store { ptr, i64, i64 } %t33, ptr %a37 + call void @finch_str_drop(ptr %a37) + %t38 = load { ptr, i64, i64 }, ptr %a34 + store { ptr, i64, i64 } %t38, ptr %a39 + %t40 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 2 + %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i32 0, i32 1 + %t42 = load i64, ptr %t41 + %t43 = icmp sgt i64 %t42, 0 + br i1 %t43, label %then3871, label %else3872 +then3871: + %t44 = load ptr, ptr %a1 + %t45 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 + %t46 = load { ptr, i64, i64 }, ptr %t45 + %t47 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 2 + %t48 = load { ptr, i64, i64 }, ptr %t47 + %t49 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 1 + %t50 = load { ptr, i64, i64 }, ptr %t49 + %t51 = call i64 @finch.gen.findMethod(ptr %t44, { ptr, i64, i64 } %t46, { ptr, i64, i64 } %t48, { ptr, i64, i64 } %t50) + store i64 %t51, ptr %a52 + %t53 = load i64, ptr %a52 + %t54 = icmp sge i64 %t53, 0 + br i1 %t54, label %then3874, label %endif3876 +then3874: + %t55 = load i64, ptr %a52 + call void @finch_str_drop(ptr %a39) + call void @finch.drop.S_gen_Template(ptr %a19) + ret i64 %t55 +endif3876: + br label %endif3873 +else3872: + %t56 = load ptr, ptr %a1 + %t57 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 + %t58 = load { ptr, i64, i64 }, ptr %t57 + %t59 = load { ptr, i64, i64 }, ptr %a39 + %t60 = call i64 @finch.gen.findFn(ptr %t56, { ptr, i64, i64 } %t58, { ptr, i64, i64 } %t59) + store i64 %t60, ptr %a61 + %t62 = load i64, ptr %a61 + %t63 = icmp sge i64 %t62, 0 + br i1 %t63, label %then3877, label %endif3879 +then3877: + %t64 = load i64, ptr %a61 + call void @finch_str_drop(ptr %a39) + call void @finch.drop.S_gen_Template(ptr %a19) + ret i64 %t64 +endif3879: + br label %endif3873 +endif3873: + %t65 = load ptr, ptr %a1 + %t66 = icmp eq ptr %t65, null + br i1 %t66, label %panic3880, label %ok3881 +panic3880: + call void @finch_panic(ptr @.str.2400, i64 1644, ptr @.str.2401) unreachable -ok3670: - %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 %range3671, label %inrange3672 -range3671: - call void @finch_panic_index(ptr @.str.2317, i64 1496, i64 %t66, i64 %t68) +ok3881: + %t67 = getelementptr inbounds %S.gen.Gen, ptr %t65, i32 0, i32 0 + %t68 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 4 + %t69 = load i64, ptr %t68 + %t70 = load { ptr, i64, i64 }, ptr %t67 + %t71 = extractvalue { ptr, i64, i64 } %t70, 1 + %t72 = icmp uge i64 %t69, %t71 + br i1 %t72, label %range3882, label %inrange3883 +range3882: + call void @finch_panic_index(ptr @.str.2402, i64 1644, i64 %t69, i64 %t71) unreachable -inrange3672: - %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 - %t73 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 5 - %t74 = load i64, ptr %t73 - %t75 = load { ptr, i64, i64 }, ptr %t72 - %t76 = extractvalue { ptr, i64, i64 } %t75, 1 - %t77 = icmp uge i64 %t74, %t76 - br i1 %t77, label %range3673, label %inrange3674 -range3673: - call void @finch_panic_index(ptr @.str.2318, i64 1496, i64 %t74, i64 %t76) +inrange3883: + %t73 = extractvalue { ptr, i64, i64 } %t70, 0 + %t74 = getelementptr inbounds %S.ast.Program, ptr %t73, i64 %t69 + %t75 = getelementptr inbounds %S.ast.Program, ptr %t74, i32 0, i32 8 + %t76 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 5 + %t77 = load i64, ptr %t76 + %t78 = load { ptr, i64, i64 }, ptr %t75 + %t79 = extractvalue { ptr, i64, i64 } %t78, 1 + %t80 = icmp uge i64 %t77, %t79 + br i1 %t80, label %range3884, label %inrange3885 +range3884: + call void @finch_panic_index(ptr @.str.2403, i64 1644, i64 %t77, i64 %t79) unreachable -inrange3674: - %t78 = extractvalue { ptr, i64, i64 } %t75, 0 - %t79 = getelementptr inbounds %S.ast.Node, ptr %t78, i64 %t74 - %t80 = load %S.ast.Node, ptr %t79 - store %S.ast.Node %t80, ptr %a81 - call void @finch.copy.S_ast_Node(ptr %a82, ptr %a81) - %t83 = load %S.ast.Node, ptr %a82 +inrange3885: + %t81 = extractvalue { ptr, i64, i64 } %t78, 0 + %t82 = getelementptr inbounds %S.ast.Node, ptr %t81, i64 %t77 + %t83 = load %S.ast.Node, ptr %t82 store %S.ast.Node %t83, ptr %a84 - %t85 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 - %t86 = load { ptr, i64, i64 }, ptr %t85 - store { ptr, i64, i64 } %t86, ptr %a87 - call void @finch_str_copy(ptr %a88, ptr %a87) - %t89 = load { ptr, i64, i64 }, ptr %a88 - %t90 = insertvalue %S.gen.FnSig zeroinitializer, { ptr, i64, i64 } %t89, 0 - %t91 = load { ptr, i64, i64 }, ptr %a36 - 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.gen.FnSig %t90, { ptr, i64, i64 } %t94, 1 - %t96 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 - %t97 = load { ptr, i64, i64 }, ptr %t96 - store { ptr, i64, i64 } %t97, ptr %a98 - call void @finch_str_copy(ptr %a99, ptr %a98) - %t100 = load { ptr, i64, i64 }, ptr %a99 - %t101 = insertvalue %S.gen.FnSig %t95, { ptr, i64, i64 } %t100, 3 - %t102 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 - %t103 = load { ptr, i64, i64 }, ptr %t102 - store { ptr, i64, i64 } %t103, ptr %a104 - call void @finch.copy.arr_str(ptr %a105, ptr %a104) - %t106 = load { ptr, i64, i64 }, ptr %a105 - %t107 = insertvalue %S.gen.FnSig %t101, { ptr, i64, i64 } %t106, 6 - %t108 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t108, ptr %a109 - call void @finch.copy.arr_S_ast_Type(ptr %a110, ptr %a109) - %t111 = load { ptr, i64, i64 }, ptr %a110 - %t112 = insertvalue %S.gen.FnSig %t107, { ptr, i64, i64 } %t111, 7 - %t113 = load { ptr, i64, i64 }, ptr %a36 - store { ptr, i64, i64 } %t113, ptr %a114 - call void @finch_str_copy(ptr %a115, ptr %a114) - %t116 = load { ptr, i64, i64 }, ptr %a115 - %t117 = insertvalue %S.gen.FnSig %t112, { ptr, i64, i64 } %t116, 8 - %t118 = getelementptr inbounds %S.ast.Node, ptr %a84, i32 0, i32 7 - %t119 = load i1, ptr %t118 - %t120 = insertvalue %S.gen.FnSig %t117, i1 %t119, 9 - %t121 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 7 + call void @finch.copy.S_ast_Node(ptr %a85, ptr %a84) + %t86 = load %S.ast.Node, ptr %a85 + store %S.ast.Node %t86, ptr %a87 + %t88 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 + %t89 = load { ptr, i64, i64 }, ptr %t88 + store { ptr, i64, i64 } %t89, ptr %a90 + call void @finch_str_copy(ptr %a91, ptr %a90) + %t92 = load { ptr, i64, i64 }, ptr %a91 + %t93 = insertvalue %S.gen.FnSig zeroinitializer, { ptr, i64, i64 } %t92, 0 + %t94 = load { ptr, i64, i64 }, ptr %a39 + store { ptr, i64, i64 } %t94, ptr %a95 + call void @finch_str_copy(ptr %a96, ptr %a95) + %t97 = load { ptr, i64, i64 }, ptr %a96 + %t98 = insertvalue %S.gen.FnSig %t93, { ptr, i64, i64 } %t97, 1 + %t99 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 + %t100 = load { ptr, i64, i64 }, ptr %t99 + store { ptr, i64, i64 } %t100, ptr %a101 + call void @finch_str_copy(ptr %a102, ptr %a101) + %t103 = load { ptr, i64, i64 }, ptr %a102 + %t104 = insertvalue %S.gen.FnSig %t98, { ptr, i64, i64 } %t103, 3 + %t105 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 + %t106 = load { ptr, i64, i64 }, ptr %t105 + store { ptr, i64, i64 } %t106, ptr %a107 + call void @finch.copy.arr_str(ptr %a108, ptr %a107) + %t109 = load { ptr, i64, i64 }, ptr %a108 + %t110 = insertvalue %S.gen.FnSig %t104, { ptr, i64, i64 } %t109, 6 + %t111 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t111, ptr %a112 + call void @finch.copy.arr_S_ast_Type(ptr %a113, ptr %a112) + %t114 = load { ptr, i64, i64 }, ptr %a113 + %t115 = insertvalue %S.gen.FnSig %t110, { ptr, i64, i64 } %t114, 7 + %t116 = load { ptr, i64, i64 }, ptr %a39 + 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.FnSig %t115, { ptr, i64, i64 } %t119, 8 + %t121 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 7 %t122 = load i1, ptr %t121 - %t123 = insertvalue %S.gen.FnSig %t120, i1 %t122, 10 - %t124 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 4 - %t125 = load i64, ptr %t124 - %t126 = insertvalue %S.gen.FnSig %t123, i64 %t125, 16 - %t127 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 5 + %t123 = insertvalue %S.gen.FnSig %t120, i1 %t122, 9 + %t124 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 7 + %t125 = load i1, ptr %t124 + %t126 = insertvalue %S.gen.FnSig %t123, i1 %t125, 10 + %t127 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 4 %t128 = load i64, ptr %t127 - %t129 = insertvalue %S.gen.FnSig %t126, i64 %t128, 17 - store %S.gen.FnSig %t129, ptr %a130 - %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.2319, 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.2320, 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 - %t143 = call { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %t142) + %t129 = insertvalue %S.gen.FnSig %t126, i64 %t128, 16 + %t130 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 5 + %t131 = load i64, ptr %t130 + %t132 = insertvalue %S.gen.FnSig %t129, i64 %t131, 17 + store %S.gen.FnSig %t132, ptr %a133 + %t134 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 + %t135 = load { ptr, i64, i64 }, ptr %t134 + %t136 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t135) + store { ptr, i64, i64 } { ptr @.str.2404, i64 7, i64 0 }, ptr %a138 + store { ptr, i64, i64 } %t136, ptr %a139 + call void @finch_str_concat(ptr %a137, ptr %a138, ptr %a139) + store { ptr, i64, i64 } %t136, ptr %a140 + call void @finch_str_drop(ptr %a140) + %t141 = load { ptr, i64, i64 }, ptr %a137 + store { ptr, i64, i64 } %t141, ptr %a143 + store { ptr, i64, i64 } { ptr @.str.2405, i64 1, i64 0 }, ptr %a144 + call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144) store { ptr, i64, i64 } %t141, ptr %a145 - store { ptr, i64, i64 } %t143, 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.FnSig, ptr %a130, i32 0, i32 11 - store { ptr, i64, i64 } %t147, ptr %t148 - %t149 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 2 - %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 %then3675, label %endif3677 -then3675: - %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 - store { ptr, i64, i64 } %t154, ptr %a156 - call void @finch_str_copy(ptr %a157, ptr %a156) - %t158 = load { ptr, i64, i64 }, ptr %a157 - store { ptr, i64, i64 } %t158, ptr %t155 - %t159 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 2 - %t160 = load { ptr, i64, i64 }, ptr %t159 - %t161 = getelementptr inbounds %S.gen.FnSig, ptr %a130, i32 0, i32 2 - store { ptr, i64, i64 } %t160, ptr %a162 - call void @finch_str_copy(ptr %a163, ptr %a162) - %t164 = load { ptr, i64, i64 }, ptr %a163 - store { ptr, i64, i64 } %t164, ptr %t161 - %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.2321, 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 - %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 = getelementptr inbounds %S.gen.FnSig, ptr %a130, i32 0, i32 8 - store { ptr, i64, i64 } %t176, ptr %t177 - %t178 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 + call void @finch_str_drop(ptr %a145) + %t146 = load { ptr, i64, i64 }, ptr %a142 + %t147 = load { ptr, i64, i64 }, ptr %a39 + %t148 = call { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %t147) + store { ptr, i64, i64 } %t146, ptr %a150 + store { ptr, i64, i64 } %t148, ptr %a151 + call void @finch_str_concat(ptr %a149, ptr %a150, ptr %a151) + store { ptr, i64, i64 } %t146, ptr %a152 + call void @finch_str_drop(ptr %a152) + store { ptr, i64, i64 } %t148, ptr %a153 + call void @finch_str_drop(ptr %a153) + %t154 = load { ptr, i64, i64 }, ptr %a149 + %t155 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 11 + %t156 = load { ptr, i64, i64 }, ptr %t155 + store { ptr, i64, i64 } %t154, ptr %t155 + store { ptr, i64, i64 } %t156, ptr %a157 + call void @finch_str_drop(ptr %a157) + %t158 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 2 + %t159 = getelementptr inbounds { ptr, i64, i64 }, ptr %t158, i32 0, i32 1 + %t160 = load i64, ptr %t159 + %t161 = icmp sgt i64 %t160, 0 + br i1 %t161, label %then3886, label %endif3888 +then3886: + %t162 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 1 + %t163 = load { ptr, i64, i64 }, ptr %t162 + %t164 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 1 + store { ptr, i64, i64 } %t163, ptr %a165 + call void @finch_str_copy(ptr %a166, ptr %a165) + %t167 = load { ptr, i64, i64 }, ptr %a166 + %t168 = load { ptr, i64, i64 }, ptr %t164 + store { ptr, i64, i64 } %t167, ptr %t164 + store { ptr, i64, i64 } %t168, ptr %a169 + call void @finch_str_drop(ptr %a169) + %t170 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 2 + %t171 = load { ptr, i64, i64 }, ptr %t170 + %t172 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 2 + store { ptr, i64, i64 } %t171, ptr %a173 + call void @finch_str_copy(ptr %a174, ptr %a173) + %t175 = load { ptr, i64, i64 }, ptr %a174 + %t176 = load { ptr, i64, i64 }, ptr %t172 + store { ptr, i64, i64 } %t175, ptr %t172 + store { ptr, i64, i64 } %t176, ptr %a177 + call void @finch_str_drop(ptr %a177) + %t178 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 2 %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.2322, 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.2323, 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 - %t190 = load { ptr, i64, i64 }, ptr %t189 - %t191 = call { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %t190) - store { ptr, i64, i64 } %t188, ptr %a193 - store { ptr, i64, i64 } %t191, ptr %a194 - 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.2324, 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 - %t201 = load { ptr, i64, i64 }, ptr %t200 - store { ptr, i64, i64 } %t199, ptr %a203 - store { ptr, i64, i64 } %t201, ptr %a204 + store { ptr, i64, i64 } %t179, ptr %a181 + store { ptr, i64, i64 } { ptr @.str.2406, 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 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 1 + %t185 = load { ptr, i64, i64 }, ptr %t184 + store { ptr, i64, i64 } %t183, ptr %a187 + store { ptr, i64, i64 } %t185, ptr %a188 + call void @finch_str_concat(ptr %a186, ptr %a187, ptr %a188) + store { ptr, i64, i64 } %t183, ptr %a189 + call void @finch_str_drop(ptr %a189) + %t190 = load { ptr, i64, i64 }, ptr %a186 + %t191 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 8 + %t192 = load { ptr, i64, i64 }, ptr %t191 + store { ptr, i64, i64 } %t190, ptr %t191 + store { ptr, i64, i64 } %t192, ptr %a193 + call void @finch_str_drop(ptr %a193) + %t194 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 + %t195 = load { ptr, i64, i64 }, ptr %t194 + %t196 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t195) + store { ptr, i64, i64 } { ptr @.str.2407, i64 7, i64 0 }, ptr %a198 + store { ptr, i64, i64 } %t196, ptr %a199 + call void @finch_str_concat(ptr %a197, ptr %a198, ptr %a199) + store { ptr, i64, i64 } %t196, ptr %a200 + call void @finch_str_drop(ptr %a200) + %t201 = load { ptr, i64, i64 }, ptr %a197 + store { ptr, i64, i64 } %t201, ptr %a203 + store { ptr, i64, i64 } { ptr @.str.2408, i64 1, 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.FnSig, ptr %a130, i32 0, i32 11 - store { ptr, i64, i64 } %t205, ptr %t206 - br label %endif3677 -endif3677: - %t207 = load ptr, ptr %a1 - %t208 = icmp eq ptr %t207, null - br i1 %t208, label %panic3678, label %ok3679 -panic3678: - call void @finch_panic(ptr @.str.2325, i64 1505, ptr @.str.2326) - unreachable -ok3679: - %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 - call void @finch.copy.arr_str(ptr %a212, ptr %a211) - %t213 = load { ptr, i64, i64 }, ptr %a212 - store { ptr, i64, i64 } %t213, ptr %a214 - %t215 = load ptr, ptr %a1 - %t216 = icmp eq ptr %t215, null - br i1 %t216, label %panic3680, label %ok3681 -panic3680: - call void @finch_panic(ptr @.str.2327, i64 1506, ptr @.str.2328) - unreachable -ok3681: - %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 - call void @finch.copy.arr_S_ast_Type(ptr %a220, ptr %a219) - %t221 = load { ptr, i64, i64 }, ptr %a220 - store { ptr, i64, i64 } %t221, ptr %a222 - %t223 = load ptr, ptr %a1 - %t224 = icmp eq ptr %t223, null - br i1 %t224, label %panic3682, label %ok3683 -panic3682: - call void @finch_panic(ptr @.str.2329, i64 1507, ptr @.str.2330) - unreachable -ok3683: - %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 - call void @finch_str_copy(ptr %a228, ptr %a227) - %t229 = load { ptr, i64, i64 }, ptr %a228 + store { ptr, i64, i64 } %t201, ptr %a205 + call void @finch_str_drop(ptr %a205) + %t206 = load { ptr, i64, i64 }, ptr %a202 + %t207 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 2 + %t208 = load { ptr, i64, i64 }, ptr %t207 + %t209 = call { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %t208) + store { ptr, i64, i64 } %t206, ptr %a211 + store { ptr, i64, i64 } %t209, ptr %a212 + call void @finch_str_concat(ptr %a210, ptr %a211, ptr %a212) + store { ptr, i64, i64 } %t206, ptr %a213 + call void @finch_str_drop(ptr %a213) + store { ptr, i64, i64 } %t209, ptr %a214 + call void @finch_str_drop(ptr %a214) + %t215 = load { ptr, i64, i64 }, ptr %a210 + store { ptr, i64, i64 } %t215, ptr %a217 + store { ptr, i64, i64 } { ptr @.str.2409, i64 1, i64 0 }, ptr %a218 + call void @finch_str_concat(ptr %a216, ptr %a217, ptr %a218) + store { ptr, i64, i64 } %t215, ptr %a219 + call void @finch_str_drop(ptr %a219) + %t220 = load { ptr, i64, i64 }, ptr %a216 + %t221 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 1 + %t222 = load { ptr, i64, i64 }, ptr %t221 + store { ptr, i64, i64 } %t220, ptr %a224 + store { ptr, i64, i64 } %t222, ptr %a225 + call void @finch_str_concat(ptr %a223, ptr %a224, ptr %a225) + store { ptr, i64, i64 } %t220, ptr %a226 + call void @finch_str_drop(ptr %a226) + %t227 = load { ptr, i64, i64 }, ptr %a223 + %t228 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 11 + %t229 = load { ptr, i64, i64 }, ptr %t228 + store { ptr, i64, i64 } %t227, ptr %t228 store { ptr, i64, i64 } %t229, ptr %a230 + call void @finch_str_drop(ptr %a230) + br label %endif3888 +endif3888: %t231 = load ptr, ptr %a1 %t232 = icmp eq ptr %t231, null - br i1 %t232, label %panic3684, label %ok3685 -panic3684: - call void @finch_panic(ptr @.str.2331, i64 1508, ptr @.str.2332) + br i1 %t232, label %panic3889, label %ok3890 +panic3889: + call void @finch_panic(ptr @.str.2410, i64 1653, ptr @.str.2411) unreachable -ok3685: - %t233 = getelementptr inbounds %S.gen.Gen, ptr %t231, i32 0, i32 19 +ok3890: + %t233 = getelementptr inbounds %S.gen.Gen, ptr %t231, i32 0, i32 18 %t234 = load { ptr, i64, i64 }, ptr %t233 store { ptr, i64, i64 } %t234, ptr %a235 - call void @finch_str_copy(ptr %a236, ptr %a235) + call void @finch.copy.arr_str(ptr %a236, ptr %a235) %t237 = load { ptr, i64, i64 }, ptr %a236 store { ptr, i64, i64 } %t237, ptr %a238 - %t239 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 - %t240 = load { ptr, i64, i64 }, ptr %t239 - %t241 = load ptr, ptr %a1 - %t242 = icmp eq ptr %t241, null - br i1 %t242, label %panic3686, label %ok3687 -panic3686: - call void @finch_panic(ptr @.str.2333, i64 1509, ptr @.str.2334) + %t239 = load ptr, ptr %a1 + %t240 = icmp eq ptr %t239, null + br i1 %t240, label %panic3891, label %ok3892 +panic3891: + call void @finch_panic(ptr @.str.2412, i64 1654, ptr @.str.2413) unreachable -ok3687: - %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) - %t246 = load { ptr, i64, i64 }, ptr %a245 - store { ptr, i64, i64 } %t246, ptr %t243 - %t247 = load { ptr, i64, i64 }, ptr %a3 - %t248 = load ptr, ptr %a1 - %t249 = icmp eq ptr %t248, null - br i1 %t249, label %panic3688, label %ok3689 -panic3688: - call void @finch_panic(ptr @.str.2335, i64 1510, ptr @.str.2336) +ok3892: + %t241 = getelementptr inbounds %S.gen.Gen, ptr %t239, i32 0, i32 19 + %t242 = load { ptr, i64, i64 }, ptr %t241 + store { ptr, i64, i64 } %t242, ptr %a243 + call void @finch.copy.arr_S_ast_Type(ptr %a244, ptr %a243) + %t245 = load { ptr, i64, i64 }, ptr %a244 + store { ptr, i64, i64 } %t245, ptr %a246 + %t247 = load ptr, ptr %a1 + %t248 = icmp eq ptr %t247, null + br i1 %t248, label %panic3893, label %ok3894 +panic3893: + call void @finch_panic(ptr @.str.2414, i64 1655, ptr @.str.2415) unreachable -ok3689: - %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) +ok3894: + %t249 = getelementptr inbounds %S.gen.Gen, ptr %t247, i32 0, i32 14 + %t250 = load { ptr, i64, i64 }, ptr %t249 + store { ptr, i64, i64 } %t250, ptr %a251 + call void @finch_str_copy(ptr %a252, ptr %a251) %t253 = load { ptr, i64, i64 }, ptr %a252 - store { ptr, i64, i64 } %t253, ptr %t250 - %t254 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 - %t255 = load { ptr, i64, i64 }, ptr %t254 - %t256 = load ptr, ptr %a1 - %t257 = icmp eq ptr %t256, null - br i1 %t257, label %panic3690, label %ok3691 -panic3690: - call void @finch_panic(ptr @.str.2337, i64 1511, ptr @.str.2338) + store { ptr, i64, i64 } %t253, ptr %a254 + %t255 = load ptr, ptr %a1 + %t256 = icmp eq ptr %t255, null + br i1 %t256, label %panic3895, label %ok3896 +panic3895: + call void @finch_panic(ptr @.str.2416, i64 1656, ptr @.str.2417) unreachable -ok3691: - %t258 = getelementptr inbounds %S.gen.Gen, ptr %t256, i32 0, i32 13 - store { ptr, i64, i64 } %t255, ptr %a259 +ok3896: + %t257 = getelementptr inbounds %S.gen.Gen, ptr %t255, i32 0, i32 20 + %t258 = load { ptr, i64, i64 }, ptr %t257 + store { ptr, i64, i64 } %t258, ptr %a259 call void @finch_str_copy(ptr %a260, ptr %a259) %t261 = load { ptr, i64, i64 }, ptr %a260 - 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.2339, 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.2340, 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 %panic3692, label %ok3693 -panic3692: - call void @finch_panic(ptr @.str.2341, i64 1512, ptr @.str.2342) + store { ptr, i64, i64 } %t261, ptr %a262 + %t263 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 + %t264 = load { ptr, i64, i64 }, ptr %t263 + %t265 = load ptr, ptr %a1 + %t266 = icmp eq ptr %t265, null + br i1 %t266, label %panic3897, label %ok3898 +panic3897: + call void @finch_panic(ptr @.str.2418, i64 1657, ptr @.str.2419) unreachable -ok3693: - %t274 = getelementptr inbounds %S.gen.Gen, ptr %t272, i32 0, i32 19 - store { ptr, i64, i64 } %t271, ptr %t274 - %t275 = load ptr, ptr %a1 - %t276 = getelementptr inbounds %S.ast.Node, ptr %a84, i32 0, i32 5 - %t277 = load %S.ast.Type, ptr %t276 - %t278 = load %S.ast.Node, ptr %a84 - %t279 = call %S.ast.Type @finch.gen.resolve(ptr %t275, %S.ast.Type %t277, %S.ast.Node %t278) - %t280 = getelementptr inbounds %S.gen.FnSig, ptr %a130, i32 0, i32 12 - store %S.ast.Type %t279, ptr %t280 - %t281 = getelementptr inbounds %S.ast.Node, ptr %a84, i32 0, i32 9 - %t282 = getelementptr inbounds %S.ast.Node, ptr %a84, i32 0, i32 9 - %t283 = getelementptr inbounds { ptr, i64, i64 }, ptr %t282, i32 0, i32 1 - %t284 = load i64, ptr %t283 - %t285 = sub i64 %t284, 1 - %t286 = load { ptr, i64, i64 }, ptr %t281 - %t287 = extractvalue { ptr, i64, i64 } %t286, 1 - %t288 = icmp uge i64 %t285, %t287 - br i1 %t288, label %range3694, label %inrange3695 -range3694: - call void @finch_panic_index(ptr @.str.2343, i64 1514, i64 %t285, i64 %t287) +ok3898: + %t267 = getelementptr inbounds %S.gen.Gen, ptr %t265, i32 0, i32 18 + store { ptr, i64, i64 } %t264, ptr %a268 + call void @finch.copy.arr_str(ptr %a269, ptr %a268) + %t270 = load { ptr, i64, i64 }, ptr %a269 + %t271 = load { ptr, i64, i64 }, ptr %t267 + store { ptr, i64, i64 } %t270, ptr %t267 + store { ptr, i64, i64 } %t271, ptr %a272 + call void @finch.drop.arr_str(ptr %a272) + %t273 = load { ptr, i64, i64 }, ptr %a3 + %t274 = load ptr, ptr %a1 + %t275 = icmp eq ptr %t274, null + br i1 %t275, label %panic3899, label %ok3900 +panic3899: + call void @finch_panic(ptr @.str.2420, i64 1658, ptr @.str.2421) unreachable -inrange3695: - %t289 = extractvalue { ptr, i64, i64 } %t286, 0 - %t290 = getelementptr inbounds %S.ast.Node, ptr %t289, i64 %t285 - %t291 = load %S.ast.Node, ptr %t290 - store %S.ast.Node %t291, ptr %a292 - call void @finch.copy.S_ast_Node(ptr %a293, ptr %a292) - %t294 = load %S.ast.Node, ptr %a293 - store %S.ast.Node %t294, ptr %a295 - %t296 = getelementptr inbounds %S.ast.Node, ptr %a84, i32 0, i32 9 - %t297 = getelementptr inbounds { ptr, i64, i64 }, ptr %t296, i32 0, i32 1 - %t298 = load i64, ptr %t297 - %t299 = sub i64 %t298, 1 - store i64 0, ptr %a300 - br label %for.cond3696 -for.cond3696: - %t301 = load i64, ptr %a300 - %t302 = icmp slt i64 %t301, %t299 - br i1 %t302, label %for.body3697, label %for.end3699 -for.body3697: +ok3900: + %t276 = getelementptr inbounds %S.gen.Gen, ptr %t274, i32 0, i32 19 + store { ptr, i64, i64 } %t273, ptr %a277 + call void @finch.copy.arr_S_ast_Type(ptr %a278, ptr %a277) + %t279 = load { ptr, i64, i64 }, ptr %a278 + %t280 = load { ptr, i64, i64 }, ptr %t276 + store { ptr, i64, i64 } %t279, ptr %t276 + store { ptr, i64, i64 } %t280, ptr %a281 + call void @finch.drop.arr_S_ast_Type(ptr %a281) + %t282 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 + %t283 = load { ptr, i64, i64 }, ptr %t282 + %t284 = load ptr, ptr %a1 + %t285 = icmp eq ptr %t284, null + br i1 %t285, label %panic3901, label %ok3902 +panic3901: + call void @finch_panic(ptr @.str.2422, i64 1659, ptr @.str.2423) + unreachable +ok3902: + %t286 = getelementptr inbounds %S.gen.Gen, ptr %t284, i32 0, i32 14 + store { ptr, i64, i64 } %t283, ptr %a287 + call void @finch_str_copy(ptr %a288, ptr %a287) + %t289 = load { ptr, i64, i64 }, ptr %a288 + %t290 = load { ptr, i64, i64 }, ptr %t286 + store { ptr, i64, i64 } %t289, ptr %t286 + store { ptr, i64, i64 } %t290, ptr %a291 + call void @finch_str_drop(ptr %a291) + %t292 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 8 + %t293 = load { ptr, i64, i64 }, ptr %t292 + store { ptr, i64, i64 } { ptr @.str.2424, i64 17, i64 0 }, ptr %a295 + store { ptr, i64, i64 } %t293, ptr %a296 + 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.2425, i64 1, i64 0 }, ptr %a300 + call void @finch_str_concat(ptr %a298, ptr %a299, ptr %a300) + store { ptr, i64, i64 } %t297, ptr %a301 + call void @finch_str_drop(ptr %a301) + %t302 = load { ptr, i64, i64 }, ptr %a298 %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 %range3700, label %inrange3701 -range3700: - call void @finch_panic_index(ptr @.str.2344, i64 1516, i64 %t305, i64 %t307) + %t304 = icmp eq ptr %t303, null + br i1 %t304, label %panic3903, label %ok3904 +panic3903: + call void @finch_panic(ptr @.str.2426, i64 1660, ptr @.str.2427) unreachable -inrange3701: - %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 - %t312 = load %S.ast.Type, ptr %t311 - %t313 = getelementptr inbounds %S.ast.Node, ptr %a84, i32 0, i32 9 - %t314 = load i64, ptr %a300 - %t315 = load { ptr, i64, i64 }, ptr %t313 - %t316 = extractvalue { ptr, i64, i64 } %t315, 1 - %t317 = icmp uge i64 %t314, %t316 - br i1 %t317, label %range3702, label %inrange3703 -range3702: - call void @finch_panic_index(ptr @.str.2345, i64 1516, i64 %t314, i64 %t316) +ok3904: + %t305 = getelementptr inbounds %S.gen.Gen, ptr %t303, i32 0, i32 20 + %t306 = load { ptr, i64, i64 }, ptr %t305 + store { ptr, i64, i64 } %t302, ptr %t305 + store { ptr, i64, i64 } %t306, ptr %a307 + call void @finch_str_drop(ptr %a307) + %t308 = load ptr, ptr %a1 + %t309 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 5 + %t310 = load %S.ast.Type, ptr %t309 + %t311 = load %S.ast.Node, ptr %a87 + %t312 = call %S.ast.Type @finch.gen.resolve(ptr %t308, %S.ast.Type %t310, %S.ast.Node %t311) + %t313 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 12 + %t314 = load %S.ast.Type, ptr %t313 + store %S.ast.Type %t312, ptr %t313 + store %S.ast.Type %t314, ptr %a315 + call void @finch.drop.S_ast_Type(ptr %a315) + %t316 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 9 + %t317 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 9 + %t318 = getelementptr inbounds { ptr, i64, i64 }, ptr %t317, i32 0, i32 1 + %t319 = load i64, ptr %t318 + %t320 = sub i64 %t319, 1 + %t321 = load { ptr, i64, i64 }, ptr %t316 + %t322 = extractvalue { ptr, i64, i64 } %t321, 1 + %t323 = icmp uge i64 %t320, %t322 + br i1 %t323, label %range3905, label %inrange3906 +range3905: + call void @finch_panic_index(ptr @.str.2428, i64 1662, i64 %t320, i64 %t322) unreachable -inrange3703: - %t318 = extractvalue { ptr, i64, i64 } %t315, 0 - %t319 = getelementptr inbounds %S.ast.Node, ptr %t318, i64 %t314 - %t320 = load %S.ast.Node, ptr %t319 - %t321 = call %S.ast.Type @finch.gen.resolve(ptr %t303, %S.ast.Type %t312, %S.ast.Node %t320) - store %S.ast.Type %t321, ptr %a322 - %t323 = getelementptr inbounds %S.gen.FnSig, ptr %a130, i32 0, i32 13 - %t324 = getelementptr inbounds { ptr, i64, i64 }, ptr %t323, i32 0, i32 1 - %t325 = load %S.ast.Type, ptr %a322 - store %S.ast.Type %t325, ptr %a326 - call void @finch.copy.S_ast_Type(ptr %a327, ptr %a326) - %t328 = load %S.ast.Type, ptr %a327 - %t329 = load i64, ptr %t324 - %t330 = add i64 %t329, 1 - call void @finch_arr_reserve(ptr %t323, i64 %t330, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t331 = load ptr, ptr %t323 - %t332 = getelementptr inbounds %S.ast.Type, ptr %t331, i64 %t329 - store %S.ast.Type %t328, ptr %t332 - store i64 %t330, ptr %t324 - %t333 = getelementptr inbounds %S.gen.FnSig, ptr %a130, i32 0, i32 14 - %t334 = getelementptr inbounds { ptr, i64, i64 }, ptr %t333, i32 0, i32 1 - %t335 = getelementptr inbounds %S.ast.Node, ptr %a84, i32 0, i32 9 - %t336 = load i64, ptr %a300 - %t337 = load { ptr, i64, i64 }, ptr %t335 - %t338 = extractvalue { ptr, i64, i64 } %t337, 1 - %t339 = icmp uge i64 %t336, %t338 - br i1 %t339, label %range3704, label %inrange3705 -range3704: - call void @finch_panic_index(ptr @.str.2346, i64 1518, i64 %t336, i64 %t338) +inrange3906: + %t324 = extractvalue { ptr, i64, i64 } %t321, 0 + %t325 = getelementptr inbounds %S.ast.Node, ptr %t324, i64 %t320 + %t326 = load %S.ast.Node, ptr %t325 + store %S.ast.Node %t326, ptr %a327 + call void @finch.copy.S_ast_Node(ptr %a328, ptr %a327) + %t329 = load %S.ast.Node, ptr %a328 + store %S.ast.Node %t329, ptr %a330 + %t331 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 9 + %t332 = getelementptr inbounds { ptr, i64, i64 }, ptr %t331, i32 0, i32 1 + %t333 = load i64, ptr %t332 + %t334 = sub i64 %t333, 1 + store i64 0, ptr %a335 + br label %for.cond3907 +for.cond3907: + %t336 = load i64, ptr %a335 + %t337 = icmp slt i64 %t336, %t334 + br i1 %t337, label %for.body3908, label %for.end3910 +for.body3908: + %t338 = load ptr, ptr %a1 + %t339 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 9 + %t340 = load i64, ptr %a335 + %t341 = load { ptr, i64, i64 }, ptr %t339 + %t342 = extractvalue { ptr, i64, i64 } %t341, 1 + %t343 = icmp uge i64 %t340, %t342 + br i1 %t343, label %range3911, label %inrange3912 +range3911: + call void @finch_panic_index(ptr @.str.2429, i64 1664, i64 %t340, i64 %t342) unreachable -inrange3705: - %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 - %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 = load i64, ptr %t334 - %t348 = add i64 %t347, 1 - call void @finch_arr_reserve(ptr %t333, i64 %t348, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t349 = load ptr, ptr %t333 - %t350 = getelementptr inbounds { ptr, i64, i64 }, ptr %t349, i64 %t347 - store { ptr, i64, i64 } %t346, ptr %t350 - store i64 %t348, ptr %t334 - %t351 = getelementptr inbounds %S.gen.FnSig, ptr %a130, i32 0, i32 15 - %t352 = getelementptr inbounds { ptr, i64, i64 }, ptr %t351, i32 0, i32 1 - %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.from3706 -logic.from3706: - br i1 %t355, label %logic.rhs3707, label %logic.end3708 -logic.rhs3707: - %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 %range3709, label %inrange3710 -range3709: - call void @finch_panic_index(ptr @.str.2347, i64 1519, i64 %t358, i64 %t360) +inrange3912: + %t344 = extractvalue { ptr, i64, i64 } %t341, 0 + %t345 = getelementptr inbounds %S.ast.Node, ptr %t344, i64 %t340 + %t346 = getelementptr inbounds %S.ast.Node, ptr %t345, i32 0, i32 5 + %t347 = load %S.ast.Type, ptr %t346 + %t348 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 9 + %t349 = load i64, ptr %a335 + %t350 = load { ptr, i64, i64 }, ptr %t348 + %t351 = extractvalue { ptr, i64, i64 } %t350, 1 + %t352 = icmp uge i64 %t349, %t351 + br i1 %t352, label %range3913, label %inrange3914 +range3913: + call void @finch_panic_index(ptr @.str.2430, i64 1664, i64 %t349, i64 %t351) unreachable -inrange3710: - %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 - %t365 = load { ptr, i64, i64 }, ptr %t364 - %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.rend3711 -logic.rend3711: - br label %logic.end3708 -logic.end3708: - %t369 = phi i1 [ false, %logic.from3706 ], [ %t368, %logic.rend3711 ] - %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)) - %t372 = load ptr, ptr %t351 - %t373 = getelementptr inbounds i1, ptr %t372, i64 %t370 - store i1 %t369, ptr %t373 - store i64 %t371, ptr %t352 - br label %for.step3698 -for.step3698: - %t374 = load i64, ptr %a300 - %t375 = add i64 %t374, 1 - store i64 %t375, ptr %a300 - br label %for.cond3696 -for.end3699: - %t376 = load { ptr, i64, i64 }, ptr %a214 - %t377 = load ptr, ptr %a1 - %t378 = icmp eq ptr %t377, null - br i1 %t378, label %panic3712, label %ok3713 -panic3712: - call void @finch_panic(ptr @.str.2348, i64 1521, ptr @.str.2349) +inrange3914: + %t353 = extractvalue { ptr, i64, i64 } %t350, 0 + %t354 = getelementptr inbounds %S.ast.Node, ptr %t353, i64 %t349 + %t355 = load %S.ast.Node, ptr %t354 + %t356 = call %S.ast.Type @finch.gen.resolve(ptr %t338, %S.ast.Type %t347, %S.ast.Node %t355) + store %S.ast.Type %t356, ptr %a357 + %t358 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 13 + %t359 = getelementptr inbounds { ptr, i64, i64 }, ptr %t358, i32 0, i32 1 + %t360 = load %S.ast.Type, ptr %a357 + store %S.ast.Type %t360, ptr %a361 + call void @finch.copy.S_ast_Type(ptr %a362, ptr %a361) + %t363 = load %S.ast.Type, ptr %a362 + %t364 = load i64, ptr %t359 + %t365 = add i64 %t364, 1 + call void @finch_arr_reserve(ptr %t358, i64 %t365, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) + %t366 = load ptr, ptr %t358 + %t367 = getelementptr inbounds %S.ast.Type, ptr %t366, i64 %t364 + store %S.ast.Type %t363, ptr %t367 + store i64 %t365, ptr %t359 + %t368 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 14 + %t369 = getelementptr inbounds { ptr, i64, i64 }, ptr %t368, i32 0, i32 1 + %t370 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 9 + %t371 = load i64, ptr %a335 + %t372 = load { ptr, i64, i64 }, ptr %t370 + %t373 = extractvalue { ptr, i64, i64 } %t372, 1 + %t374 = icmp uge i64 %t371, %t373 + br i1 %t374, label %range3915, label %inrange3916 +range3915: + call void @finch_panic_index(ptr @.str.2431, i64 1666, i64 %t371, i64 %t373) unreachable -ok3713: - %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) - %t382 = load { ptr, i64, i64 }, ptr %a381 - store { ptr, i64, i64 } %t382, ptr %t379 - %t383 = load { ptr, i64, i64 }, ptr %a222 - %t384 = load ptr, ptr %a1 - %t385 = icmp eq ptr %t384, null - br i1 %t385, label %panic3714, label %ok3715 -panic3714: - call void @finch_panic(ptr @.str.2350, i64 1522, ptr @.str.2351) - unreachable -ok3715: - %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) - %t389 = load { ptr, i64, i64 }, ptr %a388 - store { ptr, i64, i64 } %t389, ptr %t386 - %t390 = load { ptr, i64, i64 }, ptr %a230 +inrange3916: + %t375 = extractvalue { ptr, i64, i64 } %t372, 0 + %t376 = getelementptr inbounds %S.ast.Node, ptr %t375, i64 %t371 + %t377 = getelementptr inbounds %S.ast.Node, ptr %t376, i32 0, i32 1 + %t378 = load { ptr, i64, i64 }, ptr %t377 + store { ptr, i64, i64 } %t378, ptr %a379 + call void @finch_str_copy(ptr %a380, ptr %a379) + %t381 = load { ptr, i64, i64 }, ptr %a380 + %t382 = load i64, ptr %t369 + %t383 = add i64 %t382, 1 + call void @finch_arr_reserve(ptr %t368, i64 %t383, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t384 = load ptr, ptr %t368 + %t385 = getelementptr inbounds { ptr, i64, i64 }, ptr %t384, i64 %t382 + store { ptr, i64, i64 } %t381, ptr %t385 + store i64 %t383, ptr %t369 + %t386 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 15 + %t387 = getelementptr inbounds { ptr, i64, i64 }, ptr %t386, i32 0, i32 1 + %t388 = load ptr, ptr %a1 + %t389 = load %S.ast.Type, ptr %a357 + %t390 = call i1 @finch.gen.owning(ptr %t388, %S.ast.Type %t389) + br label %logic.from3917 +logic.from3917: + br i1 %t390, label %logic.rhs3918, label %logic.end3919 +logic.rhs3918: %t391 = load ptr, ptr %a1 - %t392 = icmp eq ptr %t391, null - br i1 %t392, label %panic3716, label %ok3717 -panic3716: - call void @finch_panic(ptr @.str.2352, i64 1523, ptr @.str.2353) + %t392 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 9 + %t393 = load i64, ptr %a335 + %t394 = load { ptr, i64, i64 }, ptr %t392 + %t395 = extractvalue { ptr, i64, i64 } %t394, 1 + %t396 = icmp uge i64 %t393, %t395 + br i1 %t396, label %range3920, label %inrange3921 +range3920: + call void @finch_panic_index(ptr @.str.2432, i64 1667, i64 %t393, i64 %t395) unreachable -ok3717: - %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) - %t396 = load { ptr, i64, i64 }, ptr %a395 - store { ptr, i64, i64 } %t396, ptr %t393 - %t397 = load { ptr, i64, i64 }, ptr %a238 - %t398 = load ptr, ptr %a1 - %t399 = icmp eq ptr %t398, null - br i1 %t399, label %panic3718, label %ok3719 -panic3718: - call void @finch_panic(ptr @.str.2354, i64 1524, ptr @.str.2355) +inrange3921: + %t397 = extractvalue { ptr, i64, i64 } %t394, 0 + %t398 = getelementptr inbounds %S.ast.Node, ptr %t397, i64 %t393 + %t399 = getelementptr inbounds %S.ast.Node, ptr %t398, i32 0, i32 1 + %t400 = load { ptr, i64, i64 }, ptr %t399 + %t401 = load %S.ast.Node, ptr %a330 + %t402 = call i1 @finch.gen.mutates(ptr %t391, { ptr, i64, i64 } %t400, %S.ast.Node %t401) + %t403 = xor i1 %t402, true + br label %logic.rend3922 +logic.rend3922: + br label %logic.end3919 +logic.end3919: + %t404 = phi i1 [ false, %logic.from3917 ], [ %t403, %logic.rend3922 ] + %t405 = load i64, ptr %t387 + %t406 = add i64 %t405, 1 + call void @finch_arr_reserve(ptr %t386, i64 %t406, i64 ptrtoint (ptr getelementptr (i1, ptr null, i32 1) to i64)) + %t407 = load ptr, ptr %t386 + %t408 = getelementptr inbounds i1, ptr %t407, i64 %t405 + store i1 %t404, ptr %t408 + store i64 %t406, ptr %t387 + call void @finch.drop.S_ast_Type(ptr %a357) + br label %for.step3909 +for.step3909: + %t409 = load i64, ptr %a335 + %t410 = add i64 %t409, 1 + store i64 %t410, ptr %a335 + br label %for.cond3907 +for.end3910: + %t411 = load { ptr, i64, i64 }, ptr %a238 + %t412 = load ptr, ptr %a1 + %t413 = icmp eq ptr %t412, null + br i1 %t413, label %panic3923, label %ok3924 +panic3923: + call void @finch_panic(ptr @.str.2433, i64 1669, ptr @.str.2434) unreachable -ok3719: - %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) - %t403 = load { ptr, i64, i64 }, ptr %a402 - store { ptr, i64, i64 } %t403, ptr %t400 - %t404 = load ptr, ptr %a1 - %t405 = icmp eq ptr %t404, null - br i1 %t405, label %panic3720, label %ok3721 -panic3720: - call void @finch_panic(ptr @.str.2356, i64 1525, ptr @.str.2357) +ok3924: + %t414 = getelementptr inbounds %S.gen.Gen, ptr %t412, i32 0, i32 18 + store { ptr, i64, i64 } %t411, ptr %a415 + call void @finch.copy.arr_str(ptr %a416, ptr %a415) + %t417 = load { ptr, i64, i64 }, ptr %a416 + %t418 = load { ptr, i64, i64 }, ptr %t414 + store { ptr, i64, i64 } %t417, ptr %t414 + store { ptr, i64, i64 } %t418, ptr %a419 + call void @finch.drop.arr_str(ptr %a419) + %t420 = load { ptr, i64, i64 }, ptr %a246 + %t421 = load ptr, ptr %a1 + %t422 = icmp eq ptr %t421, null + br i1 %t422, label %panic3925, label %ok3926 +panic3925: + call void @finch_panic(ptr @.str.2435, i64 1670, ptr @.str.2436) unreachable -ok3721: - %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 - store %S.gen.FnSig %t408, ptr %a409 - call void @finch.copy.S_gen_FnSig(ptr %a410, ptr %a409) - %t411 = load %S.gen.FnSig, ptr %a410 - %t412 = load i64, ptr %t407 - %t413 = add i64 %t412, 1 - call void @finch_arr_reserve(ptr %t406, i64 %t413, i64 ptrtoint (ptr getelementptr (%S.gen.FnSig, ptr null, i32 1) to i64)) - %t414 = load ptr, ptr %t406 - %t415 = getelementptr inbounds %S.gen.FnSig, ptr %t414, i64 %t412 - store %S.gen.FnSig %t411, ptr %t415 - store i64 %t413, ptr %t407 - %t416 = load ptr, ptr %a1 - %t417 = icmp eq ptr %t416, null - br i1 %t417, label %panic3722, label %ok3723 -panic3722: - call void @finch_panic(ptr @.str.2358, i64 1526, ptr @.str.2359) +ok3926: + %t423 = getelementptr inbounds %S.gen.Gen, ptr %t421, i32 0, i32 19 + store { ptr, i64, i64 } %t420, ptr %a424 + call void @finch.copy.arr_S_ast_Type(ptr %a425, ptr %a424) + %t426 = load { ptr, i64, i64 }, ptr %a425 + %t427 = load { ptr, i64, i64 }, ptr %t423 + store { ptr, i64, i64 } %t426, ptr %t423 + store { ptr, i64, i64 } %t427, ptr %a428 + call void @finch.drop.arr_S_ast_Type(ptr %a428) + %t429 = load { ptr, i64, i64 }, ptr %a254 + %t430 = load ptr, ptr %a1 + %t431 = icmp eq ptr %t430, null + br i1 %t431, label %panic3927, label %ok3928 +panic3927: + call void @finch_panic(ptr @.str.2437, i64 1671, ptr @.str.2438) unreachable -ok3723: - %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 - %t421 = sub i64 %t420, 1 - ret i64 %t421 +ok3928: + %t432 = getelementptr inbounds %S.gen.Gen, ptr %t430, i32 0, i32 14 + store { ptr, i64, i64 } %t429, ptr %a433 + call void @finch_str_copy(ptr %a434, ptr %a433) + %t435 = load { ptr, i64, i64 }, ptr %a434 + %t436 = load { ptr, i64, i64 }, ptr %t432 + store { ptr, i64, i64 } %t435, ptr %t432 + store { ptr, i64, i64 } %t436, ptr %a437 + call void @finch_str_drop(ptr %a437) + %t438 = load { ptr, i64, i64 }, ptr %a262 + %t439 = load ptr, ptr %a1 + %t440 = icmp eq ptr %t439, null + br i1 %t440, label %panic3929, label %ok3930 +panic3929: + call void @finch_panic(ptr @.str.2439, i64 1672, ptr @.str.2440) + unreachable +ok3930: + %t441 = getelementptr inbounds %S.gen.Gen, ptr %t439, i32 0, i32 20 + store { ptr, i64, i64 } %t438, ptr %a442 + call void @finch_str_copy(ptr %a443, ptr %a442) + %t444 = load { ptr, i64, i64 }, ptr %a443 + %t445 = load { ptr, i64, i64 }, ptr %t441 + store { ptr, i64, i64 } %t444, ptr %t441 + store { ptr, i64, i64 } %t445, ptr %a446 + call void @finch_str_drop(ptr %a446) + %t447 = load ptr, ptr %a1 + %t448 = icmp eq ptr %t447, null + br i1 %t448, label %panic3931, label %ok3932 +panic3931: + call void @finch_panic(ptr @.str.2441, i64 1673, ptr @.str.2442) + unreachable +ok3932: + %t449 = getelementptr inbounds %S.gen.Gen, ptr %t447, i32 0, i32 15 + %t450 = getelementptr inbounds { ptr, i64, i64 }, ptr %t449, i32 0, i32 1 + %t451 = load %S.gen.FnSig, ptr %a133 + store %S.gen.FnSig %t451, ptr %a452 + call void @finch.copy.S_gen_FnSig(ptr %a453, ptr %a452) + %t454 = load %S.gen.FnSig, ptr %a453 + %t455 = load i64, ptr %t450 + %t456 = add i64 %t455, 1 + call void @finch_arr_reserve(ptr %t449, i64 %t456, i64 ptrtoint (ptr getelementptr (%S.gen.FnSig, ptr null, i32 1) to i64)) + %t457 = load ptr, ptr %t449 + %t458 = getelementptr inbounds %S.gen.FnSig, ptr %t457, i64 %t455 + store %S.gen.FnSig %t454, ptr %t458 + store i64 %t456, ptr %t450 + %t459 = load ptr, ptr %a1 + %t460 = icmp eq ptr %t459, null + br i1 %t460, label %panic3933, label %ok3934 +panic3933: + call void @finch_panic(ptr @.str.2443, i64 1674, ptr @.str.2444) + unreachable +ok3934: + %t461 = getelementptr inbounds %S.gen.Gen, ptr %t459, i32 0, i32 15 + %t462 = getelementptr inbounds { ptr, i64, i64 }, ptr %t461, i32 0, i32 1 + %t463 = load i64, ptr %t462 + %t464 = sub i64 %t463, 1 + call void @finch.drop.S_ast_Node(ptr %a330) + call void @finch_str_drop(ptr %a262) + call void @finch_str_drop(ptr %a254) + call void @finch.drop.arr_S_ast_Type(ptr %a246) + call void @finch.drop.arr_str(ptr %a238) + call void @finch.drop.S_gen_FnSig(ptr %a133) + call void @finch.drop.S_ast_Node(ptr %a87) + call void @finch_str_drop(ptr %a39) + call void @finch.drop.S_gen_Template(ptr %a19) + ret i64 %t464 } define internal void @finch.gen.bindType(ptr %p0, %S.ast.Type %p1, %S.ast.Type %p2, { ptr, i64, i64 } %p3, ptr %p4) { @@ -35392,28 +41241,29 @@ entry: %a58 = alloca i64, align 16 %a80 = alloca %S.ast.Type, align 16 %a81 = alloca %S.ast.Type, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = 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 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca %S.gen.StructDef, align 16 - %a229 = alloca %S.gen.StructDef, align 16 + %a84 = alloca %S.ast.Type, 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 { ptr, i64, i64 }, align 16 + %a109 = alloca { ptr, i64, i64 }, align 16 + %a110 = alloca { ptr, i64, i64 }, align 16 + %a123 = alloca { ptr, i64, i64 }, align 16 + %a124 = alloca { ptr, i64, i64 }, align 16 + %a152 = alloca { ptr, i64, i64 }, align 16 + %a153 = alloca { ptr, i64, i64 }, align 16 + %a158 = alloca { ptr, i64, i64 }, align 16 + %a159 = alloca { ptr, i64, i64 }, align 16 + %a199 = alloca { ptr, i64, i64 }, align 16 + %a200 = alloca { ptr, i64, i64 }, align 16 + %a210 = alloca { ptr, i64, i64 }, align 16 + %a211 = alloca { ptr, i64, i64 }, align 16 + %a230 = alloca %S.gen.StructDef, align 16 %a231 = alloca %S.gen.StructDef, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca i64, align 16 + %a233 = alloca %S.gen.StructDef, align 16 + %a238 = alloca { ptr, i64, i64 }, align 16 + %a239 = alloca { ptr, i64, i64 }, align 16 + %a253 = alloca i64, align 16 store ptr %p0, ptr %a1 store %S.ast.Type %p1, ptr %a2 store %S.ast.Type %p2, ptr %a3 @@ -35422,39 +41272,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.2360, i64 5, i64 0 }, ptr %a9 + store { ptr, i64, i64 } { ptr @.str.2445, 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.from3724 -logic.from3724: - br i1 %t11, label %logic.rhs3725, label %logic.end3726 -logic.rhs3725: + br label %logic.from3935 +logic.from3935: + br i1 %t11, label %logic.rhs3936, label %logic.end3937 +logic.rhs3936: %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.rend3727 -logic.rend3727: - br label %logic.end3726 -logic.end3726: - %t16 = phi i1 [ false, %logic.from3724 ], [ %t15, %logic.rend3727 ] - br label %logic.from3728 -logic.from3728: - br i1 %t16, label %logic.rhs3729, label %logic.end3730 -logic.rhs3729: + br label %logic.rend3938 +logic.rend3938: + br label %logic.end3937 +logic.end3937: + %t16 = phi i1 [ false, %logic.from3935 ], [ %t15, %logic.rend3938 ] + br label %logic.from3939 +logic.from3939: + br i1 %t16, label %logic.rhs3940, label %logic.end3941 +logic.rhs3940: %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.rend3731 -logic.rend3731: - br label %logic.end3730 -logic.end3730: - %t21 = phi i1 [ false, %logic.from3728 ], [ %t20, %logic.rend3731 ] - br label %logic.from3732 -logic.from3732: - br i1 %t21, label %logic.rhs3733, label %logic.end3734 -logic.rhs3733: + br label %logic.rend3942 +logic.rend3942: + br label %logic.end3941 +logic.end3941: + %t21 = phi i1 [ false, %logic.from3939 ], [ %t20, %logic.rend3942 ] + br label %logic.from3943 +logic.from3943: + br i1 %t21, label %logic.rhs3944, label %logic.end3945 +logic.rhs3944: %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 @@ -35462,36 +41312,36 @@ logic.rhs3733: %t26 = load i64, ptr %t22 %t27 = load ptr, ptr %a4 store i64 0, ptr %a28 - br label %find.cond3735 -find.cond3735: + br label %find.cond3946 +find.cond3946: %t29 = load i64, ptr %a28 %t30 = icmp slt i64 %t29, %t26 - br i1 %t30, label %find.body3736, label %find.end3739 -find.body3736: + br i1 %t30, label %find.body3947, label %find.end3950 +find.body3947: %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.hit3737, label %find.next3738 -find.hit3737: + br i1 %t36, label %find.hit3948, label %find.next3949 +find.hit3948: store i64 %t29, ptr %a25 - br label %find.end3739 -find.next3738: + br label %find.end3950 +find.next3949: %t37 = add i64 %t29, 1 store i64 %t37, ptr %a28 - br label %find.cond3735 -find.end3739: + br label %find.cond3946 +find.end3950: %t38 = load i64, ptr %a25 %t39 = icmp sge i64 %t38, 0 - br label %logic.rend3740 -logic.rend3740: - br label %logic.end3734 -logic.end3734: - %t40 = phi i1 [ false, %logic.from3732 ], [ %t39, %logic.rend3740 ] - br i1 %t40, label %then3741, label %endif3743 -then3741: + br label %logic.rend3951 +logic.rend3951: + br label %logic.end3945 +logic.end3945: + %t40 = phi i1 [ false, %logic.from3943 ], [ %t39, %logic.rend3951 ] + br i1 %t40, label %then3952, label %endif3954 +then3952: %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 @@ -35499,434 +41349,472 @@ then3741: %t45 = load i64, ptr %t41 %t46 = load ptr, ptr %a4 store i64 0, ptr %a47 - br label %find.cond3744 -find.cond3744: + br label %find.cond3955 +find.cond3955: %t48 = load i64, ptr %a47 %t49 = icmp slt i64 %t48, %t45 - br i1 %t49, label %find.body3745, label %find.end3748 -find.body3745: + br i1 %t49, label %find.body3956, label %find.end3959 +find.body3956: %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.hit3746, label %find.next3747 -find.hit3746: + br i1 %t55, label %find.hit3957, label %find.next3958 +find.hit3957: store i64 %t48, ptr %a44 - br label %find.end3748 -find.next3747: + br label %find.end3959 +find.next3958: %t56 = add i64 %t48, 1 store i64 %t56, ptr %a47 - br label %find.cond3744 -find.end3748: + br label %find.cond3955 +find.end3959: %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 %panic3749, label %ok3750 -panic3749: - call void @finch_panic(ptr @.str.2361, i64 1533, ptr @.str.2362) + br i1 %t60, label %panic3960, label %ok3961 +panic3960: + call void @finch_panic(ptr @.str.2446, i64 1681, ptr @.str.2447) unreachable -ok3750: +ok3961: %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 %range3751, label %inrange3752 -range3751: - call void @finch_panic_index(ptr @.str.2363, i64 1533, i64 %t62, i64 %t64) + br i1 %t65, label %range3962, label %inrange3963 +range3962: + call void @finch_panic_index(ptr @.str.2448, i64 1681, i64 %t62, i64 %t64) unreachable -inrange3752: +inrange3963: %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 %then3753, label %endif3755 -then3753: + br i1 %t69, label %then3964, label %endif3966 +then3964: %t70 = load %S.ast.Type, ptr %a3 %t71 = load ptr, ptr %a5 %t72 = icmp eq ptr %t71, null - br i1 %t72, label %panic3756, label %ok3757 -panic3756: - call void @finch_panic(ptr @.str.2364, i64 1534, ptr @.str.2365) + br i1 %t72, label %panic3967, label %ok3968 +panic3967: + call void @finch_panic(ptr @.str.2449, i64 1682, ptr @.str.2450) unreachable -ok3757: +ok3968: %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 %range3758, label %inrange3759 -range3758: - call void @finch_panic_index(ptr @.str.2366, i64 1534, i64 %t74, i64 %t76) + br i1 %t77, label %range3969, label %inrange3970 +range3969: + call void @finch_panic_index(ptr @.str.2451, i64 1682, i64 %t74, i64 %t76) unreachable -inrange3759: +inrange3970: %t78 = extractvalue { ptr, i64, i64 } %t75, 0 %t79 = getelementptr inbounds %S.ast.Type, ptr %t78, i64 %t74 store %S.ast.Type %t70, ptr %a80 call void @finch.copy.S_ast_Type(ptr %a81, ptr %a80) %t82 = load %S.ast.Type, ptr %a81 + %t83 = load %S.ast.Type, ptr %t79 store %S.ast.Type %t82, ptr %t79 - %t83 = load ptr, ptr %a5 - %t84 = icmp eq ptr %t83, null - br i1 %t84, label %panic3760, label %ok3761 -panic3760: - call void @finch_panic(ptr @.str.2367, i64 1535, ptr @.str.2368) + store %S.ast.Type %t83, ptr %a84 + call void @finch.drop.S_ast_Type(ptr %a84) + %t85 = load ptr, ptr %a5 + %t86 = icmp eq ptr %t85, null + br i1 %t86, label %panic3971, label %ok3972 +panic3971: + call void @finch_panic(ptr @.str.2452, i64 1683, ptr @.str.2453) unreachable -ok3761: - %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 %range3762, label %inrange3763 -range3762: - call void @finch_panic_index(ptr @.str.2369, i64 1535, i64 %t86, i64 %t88) +ok3972: + %t87 = getelementptr inbounds %S.gen.Binds, ptr %t85, i32 0, i32 1 + %t88 = load i64, ptr %a58 + %t89 = load { ptr, i64, i64 }, ptr %t87 + %t90 = extractvalue { ptr, i64, i64 } %t89, 1 + %t91 = icmp uge i64 %t88, %t90 + br i1 %t91, label %range3973, label %inrange3974 +range3973: + call void @finch_panic_index(ptr @.str.2454, i64 1683, i64 %t88, i64 %t90) unreachable -inrange3763: - %t90 = extractvalue { ptr, i64, i64 } %t87, 0 - %t91 = getelementptr inbounds i1, ptr %t90, i64 %t86 - store i1 true, ptr %t91 - br label %endif3755 -endif3755: +inrange3974: + %t92 = extractvalue { ptr, i64, i64 } %t89, 0 + %t93 = getelementptr inbounds i1, ptr %t92, i64 %t88 + store i1 true, ptr %t93 + br label %endif3966 +endif3966: ret void -endif3743: - %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.2370, 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.from3764 -logic.from3764: - br i1 %t97, label %logic.end3766, label %logic.rhs3765 -logic.rhs3765: - %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.2371, 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.rend3767 -logic.rend3767: - br label %logic.end3766 -logic.end3766: - %t104 = phi i1 [ true, %logic.from3764 ], [ %t103, %logic.rend3767 ] - br label %logic.from3768 -logic.from3768: - br i1 %t104, label %logic.end3770, label %logic.rhs3769 -logic.rhs3769: - %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.2372, 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.rend3771 -logic.rend3771: - br label %logic.end3770 -logic.end3770: - %t111 = phi i1 [ true, %logic.from3768 ], [ %t110, %logic.rend3771 ] - br label %logic.from3772 -logic.from3772: - br i1 %t111, label %logic.rhs3773, label %logic.end3774 -logic.rhs3773: - %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.rend3775 -logic.rend3775: - br label %logic.end3774 -logic.end3774: - %t116 = phi i1 [ false, %logic.from3772 ], [ %t115, %logic.rend3775 ] - br label %logic.from3776 -logic.from3776: - br i1 %t116, label %logic.rhs3777, label %logic.end3778 -logic.rhs3777: - %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 +endif3954: + %t94 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 + %t95 = load { ptr, i64, i64 }, ptr %t94 + store { ptr, i64, i64 } %t95, ptr %a96 + store { ptr, i64, i64 } { ptr @.str.2455, i64 5, i64 0 }, ptr %a97 + %t98 = call i32 @finch_str_eq(ptr %a96, ptr %a97) + %t99 = icmp ne i32 %t98, 0 + br label %logic.from3975 +logic.from3975: + br i1 %t99, label %logic.end3977, label %logic.rhs3976 +logic.rhs3976: + %t100 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 + %t101 = load { ptr, i64, i64 }, ptr %t100 + store { ptr, i64, i64 } %t101, ptr %a102 + store { ptr, i64, i64 } { ptr @.str.2456, 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.rend3978 +logic.rend3978: + br label %logic.end3977 +logic.end3977: + %t106 = phi i1 [ true, %logic.from3975 ], [ %t105, %logic.rend3978 ] + br label %logic.from3979 +logic.from3979: + br i1 %t106, label %logic.end3981, label %logic.rhs3980 +logic.rhs3980: + %t107 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 + %t108 = load { ptr, i64, i64 }, ptr %t107 + store { ptr, i64, i64 } %t108, ptr %a109 + store { ptr, i64, i64 } { ptr @.str.2457, i64 5, i64 0 }, ptr %a110 + %t111 = call i32 @finch_str_eq(ptr %a109, ptr %a110) + %t112 = icmp ne i32 %t111, 0 + br label %logic.rend3982 +logic.rend3982: + br label %logic.end3981 +logic.end3981: + %t113 = phi i1 [ true, %logic.from3979 ], [ %t112, %logic.rend3982 ] + br label %logic.from3983 +logic.from3983: + br i1 %t113, label %logic.rhs3984, label %logic.end3985 +logic.rhs3984: + %t114 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t115 = getelementptr inbounds { ptr, i64, i64 }, ptr %t114, i32 0, i32 1 + %t116 = load i64, ptr %t115 + %t117 = icmp sgt i64 %t116, 0 + br label %logic.rend3986 +logic.rend3986: + br label %logic.end3985 +logic.end3985: + %t118 = phi i1 [ false, %logic.from3983 ], [ %t117, %logic.rend3986 ] + br label %logic.from3987 +logic.from3987: + br i1 %t118, label %logic.rhs3988, label %logic.end3989 +logic.rhs3988: + %t119 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 %t120 = load { ptr, i64, i64 }, ptr %t119 - store { ptr, i64, i64 } %t118, ptr %a121 - 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.rend3779 -logic.rend3779: - br label %logic.end3778 -logic.end3778: - %t125 = phi i1 [ false, %logic.from3776 ], [ %t124, %logic.rend3779 ] - br label %logic.from3780 -logic.from3780: - br i1 %t125, label %logic.rhs3781, label %logic.end3782 -logic.rhs3781: - %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.rend3783 -logic.rend3783: - br label %logic.end3782 -logic.end3782: - %t130 = phi i1 [ false, %logic.from3780 ], [ %t129, %logic.rend3783 ] - br i1 %t130, label %then3784, label %endif3786 -then3784: - %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 %range3787, label %inrange3788 -range3787: - call void @finch_panic_index(ptr @.str.2373, i64 1540, i64 0, i64 %t134) + %t121 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 + %t122 = load { ptr, i64, i64 }, ptr %t121 + store { ptr, i64, i64 } %t120, ptr %a123 + store { ptr, i64, i64 } %t122, ptr %a124 + %t125 = call i32 @finch_str_eq(ptr %a123, ptr %a124) + %t126 = icmp ne i32 %t125, 0 + br label %logic.rend3990 +logic.rend3990: + br label %logic.end3989 +logic.end3989: + %t127 = phi i1 [ false, %logic.from3987 ], [ %t126, %logic.rend3990 ] + br label %logic.from3991 +logic.from3991: + br i1 %t127, label %logic.rhs3992, label %logic.end3993 +logic.rhs3992: + %t128 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 + %t129 = getelementptr inbounds { ptr, i64, i64 }, ptr %t128, i32 0, i32 1 + %t130 = load i64, ptr %t129 + %t131 = icmp sgt i64 %t130, 0 + br label %logic.rend3994 +logic.rend3994: + br label %logic.end3993 +logic.end3993: + %t132 = phi i1 [ false, %logic.from3991 ], [ %t131, %logic.rend3994 ] + br i1 %t132, label %then3995, label %endif3997 +then3995: + %t133 = load ptr, ptr %a1 + %t134 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t135 = load { ptr, i64, i64 }, ptr %t134 + %t136 = extractvalue { ptr, i64, i64 } %t135, 1 + %t137 = icmp uge i64 0, %t136 + br i1 %t137, label %range3998, label %inrange3999 +range3998: + call void @finch_panic_index(ptr @.str.2458, i64 1688, i64 0, i64 %t136) unreachable -inrange3788: - %t136 = extractvalue { ptr, i64, i64 } %t133, 0 - %t137 = getelementptr inbounds %S.ast.Type, ptr %t136, i64 0 - %t138 = load %S.ast.Type, ptr %t137 - %t139 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t140 = load { ptr, i64, i64 }, ptr %t139 - %t141 = extractvalue { ptr, i64, i64 } %t140, 1 - %t142 = icmp uge i64 0, %t141 - br i1 %t142, label %range3789, label %inrange3790 -range3789: - call void @finch_panic_index(ptr @.str.2374, i64 1540, i64 0, i64 %t141) +inrange3999: + %t138 = extractvalue { ptr, i64, i64 } %t135, 0 + %t139 = getelementptr inbounds %S.ast.Type, ptr %t138, i64 0 + %t140 = load %S.ast.Type, ptr %t139 + %t141 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 + %t142 = load { ptr, i64, i64 }, ptr %t141 + %t143 = extractvalue { ptr, i64, i64 } %t142, 1 + %t144 = icmp uge i64 0, %t143 + br i1 %t144, label %range4000, label %inrange4001 +range4000: + call void @finch_panic_index(ptr @.str.2459, i64 1688, i64 0, i64 %t143) unreachable -inrange3790: - %t143 = extractvalue { ptr, i64, i64 } %t140, 0 - %t144 = getelementptr inbounds %S.ast.Type, ptr %t143, i64 0 - %t145 = load %S.ast.Type, ptr %t144 - %t146 = load { ptr, i64, i64 }, ptr %a4 - %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) +inrange4001: + %t145 = extractvalue { ptr, i64, i64 } %t142, 0 + %t146 = getelementptr inbounds %S.ast.Type, ptr %t145, i64 0 + %t147 = load %S.ast.Type, ptr %t146 + %t148 = load { ptr, i64, i64 }, ptr %a4 + %t149 = load ptr, ptr %a5 + call void @finch.gen.bindType(ptr %t133, %S.ast.Type %t140, %S.ast.Type %t147, { ptr, i64, i64 } %t148, ptr %t149) ret void -endif3786: - %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.2375, 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.from3791 -logic.from3791: - br i1 %t153, label %logic.rhs3792, label %logic.end3793 -logic.rhs3792: - %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.2376, 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.rend3794 -logic.rend3794: - br label %logic.end3793 -logic.end3793: - %t160 = phi i1 [ false, %logic.from3791 ], [ %t159, %logic.rend3794 ] - br i1 %t160, label %then3795, label %endif3797 -then3795: - %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 %range3798, label %inrange3799 -range3798: - call void @finch_panic_index(ptr @.str.2377, i64 1544, i64 0, i64 %t164) +endif3997: + %t150 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 + %t151 = load { ptr, i64, i64 }, ptr %t150 + store { ptr, i64, i64 } %t151, ptr %a152 + store { ptr, i64, i64 } { ptr @.str.2460, i64 3, i64 0 }, ptr %a153 + %t154 = call i32 @finch_str_eq(ptr %a152, ptr %a153) + %t155 = icmp ne i32 %t154, 0 + br label %logic.from4002 +logic.from4002: + br i1 %t155, label %logic.rhs4003, label %logic.end4004 +logic.rhs4003: + %t156 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 + %t157 = load { ptr, i64, i64 }, ptr %t156 + store { ptr, i64, i64 } %t157, ptr %a158 + store { ptr, i64, i64 } { ptr @.str.2461, i64 3, i64 0 }, ptr %a159 + %t160 = call i32 @finch_str_eq(ptr %a158, ptr %a159) + %t161 = icmp ne i32 %t160, 0 + br label %logic.rend4005 +logic.rend4005: + br label %logic.end4004 +logic.end4004: + %t162 = phi i1 [ false, %logic.from4002 ], [ %t161, %logic.rend4005 ] + br i1 %t162, label %then4006, label %endif4008 +then4006: + %t163 = load ptr, ptr %a1 + %t164 = getelementptr inbounds %S.ast.Type, ptr %a2, 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 %range4009, label %inrange4010 +range4009: + call void @finch_panic_index(ptr @.str.2462, i64 1692, i64 0, i64 %t166) unreachable -inrange3799: - %t166 = extractvalue { ptr, i64, i64 } %t163, 0 - %t167 = getelementptr inbounds %S.ast.Type, ptr %t166, i64 0 - %t168 = load %S.ast.Type, ptr %t167 - %t169 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t170 = load { ptr, i64, i64 }, ptr %t169 - %t171 = extractvalue { ptr, i64, i64 } %t170, 1 - %t172 = icmp uge i64 0, %t171 - br i1 %t172, label %range3800, label %inrange3801 -range3800: - call void @finch_panic_index(ptr @.str.2378, i64 1544, i64 0, i64 %t171) +inrange4010: + %t168 = extractvalue { ptr, i64, i64 } %t165, 0 + %t169 = getelementptr inbounds %S.ast.Type, ptr %t168, i64 0 + %t170 = load %S.ast.Type, ptr %t169 + %t171 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 + %t172 = load { ptr, i64, i64 }, ptr %t171 + %t173 = extractvalue { ptr, i64, i64 } %t172, 1 + %t174 = icmp uge i64 0, %t173 + br i1 %t174, label %range4011, label %inrange4012 +range4011: + call void @finch_panic_index(ptr @.str.2463, i64 1692, i64 0, i64 %t173) unreachable -inrange3801: - %t173 = extractvalue { ptr, i64, i64 } %t170, 0 - %t174 = getelementptr inbounds %S.ast.Type, ptr %t173, i64 0 - %t175 = load %S.ast.Type, ptr %t174 - %t176 = load { ptr, i64, i64 }, ptr %a4 - %t177 = load ptr, ptr %a5 - call void @finch.gen.bindType(ptr %t161, %S.ast.Type %t168, %S.ast.Type %t175, { ptr, i64, i64 } %t176, ptr %t177) - %t178 = load ptr, ptr %a1 - %t179 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t180 = load { ptr, i64, i64 }, ptr %t179 - %t181 = extractvalue { ptr, i64, i64 } %t180, 1 - %t182 = icmp uge i64 1, %t181 - br i1 %t182, label %range3802, label %inrange3803 -range3802: - call void @finch_panic_index(ptr @.str.2379, i64 1545, i64 1, i64 %t181) +inrange4012: + %t175 = extractvalue { ptr, i64, i64 } %t172, 0 + %t176 = getelementptr inbounds %S.ast.Type, ptr %t175, i64 0 + %t177 = load %S.ast.Type, ptr %t176 + %t178 = load { ptr, i64, i64 }, ptr %a4 + %t179 = load ptr, ptr %a5 + call void @finch.gen.bindType(ptr %t163, %S.ast.Type %t170, %S.ast.Type %t177, { ptr, i64, i64 } %t178, ptr %t179) + %t180 = load ptr, ptr %a1 + %t181 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t182 = load { ptr, i64, i64 }, ptr %t181 + %t183 = extractvalue { ptr, i64, i64 } %t182, 1 + %t184 = icmp uge i64 1, %t183 + br i1 %t184, label %range4013, label %inrange4014 +range4013: + call void @finch_panic_index(ptr @.str.2464, i64 1693, i64 1, i64 %t183) unreachable -inrange3803: - %t183 = extractvalue { ptr, i64, i64 } %t180, 0 - %t184 = getelementptr inbounds %S.ast.Type, ptr %t183, i64 1 - %t185 = load %S.ast.Type, ptr %t184 - %t186 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t187 = load { ptr, i64, i64 }, ptr %t186 - %t188 = extractvalue { ptr, i64, i64 } %t187, 1 - %t189 = icmp uge i64 1, %t188 - br i1 %t189, label %range3804, label %inrange3805 -range3804: - call void @finch_panic_index(ptr @.str.2380, i64 1545, i64 1, i64 %t188) +inrange4014: + %t185 = extractvalue { ptr, i64, i64 } %t182, 0 + %t186 = getelementptr inbounds %S.ast.Type, ptr %t185, i64 1 + %t187 = load %S.ast.Type, ptr %t186 + %t188 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 + %t189 = load { ptr, i64, i64 }, ptr %t188 + %t190 = extractvalue { ptr, i64, i64 } %t189, 1 + %t191 = icmp uge i64 1, %t190 + br i1 %t191, label %range4015, label %inrange4016 +range4015: + call void @finch_panic_index(ptr @.str.2465, i64 1693, i64 1, i64 %t190) unreachable -inrange3805: - %t190 = extractvalue { ptr, i64, i64 } %t187, 0 - %t191 = getelementptr inbounds %S.ast.Type, ptr %t190, i64 1 - %t192 = load %S.ast.Type, ptr %t191 - %t193 = load { ptr, i64, i64 }, ptr %a4 - %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) +inrange4016: + %t192 = extractvalue { ptr, i64, i64 } %t189, 0 + %t193 = getelementptr inbounds %S.ast.Type, ptr %t192, i64 1 + %t194 = load %S.ast.Type, ptr %t193 + %t195 = load { ptr, i64, i64 }, ptr %a4 + %t196 = load ptr, ptr %a5 + call void @finch.gen.bindType(ptr %t180, %S.ast.Type %t187, %S.ast.Type %t194, { ptr, i64, i64 } %t195, ptr %t196) ret void -endif3797: - %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.2381, 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.from3806 -logic.from3806: - br i1 %t200, label %logic.rhs3807, label %logic.end3808 -logic.rhs3807: - %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.rend3809 -logic.rend3809: - br label %logic.end3808 -logic.end3808: - %t205 = phi i1 [ false, %logic.from3806 ], [ %t204, %logic.rend3809 ] - br label %logic.from3810 -logic.from3810: - br i1 %t205, label %logic.rhs3811, label %logic.end3812 -logic.rhs3811: - %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.2382, 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.rend3813 -logic.rend3813: - br label %logic.end3812 -logic.end3812: - %t212 = phi i1 [ false, %logic.from3810 ], [ %t211, %logic.rend3813 ] - br i1 %t212, label %then3814, label %endif3816 -then3814: - %t213 = load ptr, ptr %a1 - %t214 = icmp eq ptr %t213, null - br i1 %t214, label %panic3817, label %ok3818 -panic3817: - call void @finch_panic(ptr @.str.2383, i64 1549, ptr @.str.2384) +endif4008: + %t197 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 + %t198 = load { ptr, i64, i64 }, ptr %t197 + store { ptr, i64, i64 } %t198, ptr %a199 + store { ptr, i64, i64 } { ptr @.str.2466, i64 5, i64 0 }, ptr %a200 + %t201 = call i32 @finch_str_eq(ptr %a199, ptr %a200) + %t202 = icmp ne i32 %t201, 0 + br label %logic.from4017 +logic.from4017: + br i1 %t202, label %logic.rhs4018, label %logic.end4019 +logic.rhs4018: + %t203 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t204 = getelementptr inbounds { ptr, i64, i64 }, ptr %t203, i32 0, i32 1 + %t205 = load i64, ptr %t204 + %t206 = icmp sgt i64 %t205, 0 + br label %logic.rend4020 +logic.rend4020: + br label %logic.end4019 +logic.end4019: + %t207 = phi i1 [ false, %logic.from4017 ], [ %t206, %logic.rend4020 ] + br label %logic.from4021 +logic.from4021: + br i1 %t207, label %logic.rhs4022, label %logic.end4023 +logic.rhs4022: + %t208 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 + %t209 = load { ptr, i64, i64 }, ptr %t208 + store { ptr, i64, i64 } %t209, ptr %a210 + store { ptr, i64, i64 } { ptr @.str.2467, i64 6, i64 0 }, ptr %a211 + %t212 = call i32 @finch_str_eq(ptr %a210, ptr %a211) + %t213 = icmp ne i32 %t212, 0 + br label %logic.rend4024 +logic.rend4024: + br label %logic.end4023 +logic.end4023: + %t214 = phi i1 [ false, %logic.from4021 ], [ %t213, %logic.rend4024 ] + br i1 %t214, label %then4025, label %endif4027 +then4025: + %t215 = load ptr, ptr %a1 + %t216 = icmp eq ptr %t215, null + br i1 %t216, label %panic4028, label %ok4029 +panic4028: + call void @finch_panic(ptr @.str.2468, i64 1697, ptr @.str.2469) unreachable -ok3818: - %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 - %t218 = load { ptr, i64, i64 }, ptr %t217 - %t219 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 2 +ok4029: + %t217 = getelementptr inbounds %S.gen.Gen, ptr %t215, i32 0, i32 16 + %t218 = load ptr, ptr %a1 + %t219 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 3 %t220 = load { ptr, i64, i64 }, ptr %t219 - %t221 = call i64 @finch.gen.findStruct(ptr %t216, { ptr, i64, i64 } %t218, { ptr, i64, i64 } %t220) - %t222 = load { ptr, i64, i64 }, ptr %t215 - %t223 = extractvalue { ptr, i64, i64 } %t222, 1 - %t224 = icmp uge i64 %t221, %t223 - br i1 %t224, label %range3819, label %inrange3820 -range3819: - call void @finch_panic_index(ptr @.str.2385, i64 1549, i64 %t221, i64 %t223) + %t221 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 2 + %t222 = load { ptr, i64, i64 }, ptr %t221 + %t223 = call i64 @finch.gen.findStruct(ptr %t218, { ptr, i64, i64 } %t220, { ptr, i64, i64 } %t222) + %t224 = load { ptr, i64, i64 }, ptr %t217 + %t225 = extractvalue { ptr, i64, i64 } %t224, 1 + %t226 = icmp uge i64 %t223, %t225 + br i1 %t226, label %range4030, label %inrange4031 +range4030: + call void @finch_panic_index(ptr @.str.2470, i64 1697, i64 %t223, i64 %t225) unreachable -inrange3820: - %t225 = extractvalue { ptr, i64, i64 } %t222, 0 - %t226 = getelementptr inbounds %S.gen.StructDef, ptr %t225, i64 %t221 - %t227 = load %S.gen.StructDef, ptr %t226 - store %S.gen.StructDef %t227, ptr %a228 - call void @finch.copy.S_gen_StructDef(ptr %a229, ptr %a228) - %t230 = load %S.gen.StructDef, ptr %a229 - store %S.gen.StructDef %t230, ptr %a231 - %t232 = getelementptr inbounds %S.gen.StructDef, ptr %a231, i32 0, i32 5 - %t233 = load { ptr, i64, i64 }, ptr %t232 - %t234 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 +inrange4031: + %t227 = extractvalue { ptr, i64, i64 } %t224, 0 + %t228 = getelementptr inbounds %S.gen.StructDef, ptr %t227, i64 %t223 + %t229 = load %S.gen.StructDef, ptr %t228 + store %S.gen.StructDef %t229, ptr %a230 + call void @finch.copy.S_gen_StructDef(ptr %a231, ptr %a230) + %t232 = load %S.gen.StructDef, ptr %a231 + store %S.gen.StructDef %t232, ptr %a233 + %t234 = getelementptr inbounds %S.gen.StructDef, ptr %a233, i32 0, i32 5 %t235 = load { ptr, i64, i64 }, ptr %t234 - store { ptr, i64, i64 } %t233, ptr %a236 - 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.from3821 -logic.from3821: - br i1 %t239, label %logic.rhs3822, label %logic.end3823 -logic.rhs3822: - %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 - %t243 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %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.rend3824 -logic.rend3824: - br label %logic.end3823 -logic.end3823: - %t247 = phi i1 [ false, %logic.from3821 ], [ %t246, %logic.rend3824 ] - br i1 %t247, label %then3825, label %endif3827 -then3825: - %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.cond3828 -for.cond3828: - %t252 = load i64, ptr %a251 - %t253 = icmp slt i64 %t252, %t250 - br i1 %t253, label %for.body3829, label %for.end3831 -for.body3829: - %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 %range3832, label %inrange3833 -range3832: - call void @finch_panic_index(ptr @.str.2386, i64 1552, i64 %t256, i64 %t258) + %t236 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 + %t237 = load { ptr, i64, i64 }, ptr %t236 + store { ptr, i64, i64 } %t235, ptr %a238 + store { ptr, i64, i64 } %t237, ptr %a239 + %t240 = call i32 @finch_str_eq(ptr %a238, ptr %a239) + %t241 = icmp ne i32 %t240, 0 + br label %logic.from4032 +logic.from4032: + br i1 %t241, label %logic.rhs4033, label %logic.end4034 +logic.rhs4033: + %t242 = getelementptr inbounds %S.gen.StructDef, ptr %a233, i32 0, i32 7 + %t243 = getelementptr inbounds { ptr, i64, i64 }, ptr %t242, i32 0, i32 1 + %t244 = load i64, ptr %t243 + %t245 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t246 = getelementptr inbounds { ptr, i64, i64 }, ptr %t245, i32 0, i32 1 + %t247 = load i64, ptr %t246 + %t248 = icmp eq i64 %t244, %t247 + br label %logic.rend4035 +logic.rend4035: + br label %logic.end4034 +logic.end4034: + %t249 = phi i1 [ false, %logic.from4032 ], [ %t248, %logic.rend4035 ] + br i1 %t249, label %then4036, label %endif4038 +then4036: + %t250 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t251 = getelementptr inbounds { ptr, i64, i64 }, ptr %t250, i32 0, i32 1 + %t252 = load i64, ptr %t251 + store i64 0, ptr %a253 + br label %for.cond4039 +for.cond4039: + %t254 = load i64, ptr %a253 + %t255 = icmp slt i64 %t254, %t252 + br i1 %t255, label %for.body4040, label %for.end4042 +for.body4040: + %t256 = load ptr, ptr %a1 + %t257 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t258 = load i64, ptr %a253 + %t259 = load { ptr, i64, i64 }, ptr %t257 + %t260 = extractvalue { ptr, i64, i64 } %t259, 1 + %t261 = icmp uge i64 %t258, %t260 + br i1 %t261, label %range4043, label %inrange4044 +range4043: + call void @finch_panic_index(ptr @.str.2471, i64 1700, i64 %t258, i64 %t260) unreachable -inrange3833: - %t260 = extractvalue { ptr, i64, i64 } %t257, 0 - %t261 = getelementptr inbounds %S.ast.Type, ptr %t260, i64 %t256 - %t262 = load %S.ast.Type, ptr %t261 - %t263 = getelementptr inbounds %S.gen.StructDef, ptr %a231, i32 0, i32 7 - %t264 = load i64, ptr %a251 - %t265 = load { ptr, i64, i64 }, ptr %t263 - %t266 = extractvalue { ptr, i64, i64 } %t265, 1 - %t267 = icmp uge i64 %t264, %t266 - br i1 %t267, label %range3834, label %inrange3835 -range3834: - call void @finch_panic_index(ptr @.str.2387, i64 1552, i64 %t264, i64 %t266) +inrange4044: + %t262 = extractvalue { ptr, i64, i64 } %t259, 0 + %t263 = getelementptr inbounds %S.ast.Type, ptr %t262, i64 %t258 + %t264 = load %S.ast.Type, ptr %t263 + %t265 = getelementptr inbounds %S.gen.StructDef, ptr %a233, i32 0, i32 7 + %t266 = load i64, ptr %a253 + %t267 = load { ptr, i64, i64 }, ptr %t265 + %t268 = extractvalue { ptr, i64, i64 } %t267, 1 + %t269 = icmp uge i64 %t266, %t268 + br i1 %t269, label %range4045, label %inrange4046 +range4045: + call void @finch_panic_index(ptr @.str.2472, i64 1700, i64 %t266, i64 %t268) unreachable -inrange3835: - %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.step3830 -for.step3830: - %t273 = load i64, ptr %a251 - %t274 = add i64 %t273, 1 - store i64 %t274, ptr %a251 - br label %for.cond3828 -for.end3831: - br label %endif3827 -endif3827: - br label %endif3816 -endif3816: +inrange4046: + %t270 = extractvalue { ptr, i64, i64 } %t267, 0 + %t271 = getelementptr inbounds %S.ast.Type, ptr %t270, i64 %t266 + %t272 = load %S.ast.Type, ptr %t271 + %t273 = load { ptr, i64, i64 }, ptr %a4 + %t274 = load ptr, ptr %a5 + call void @finch.gen.bindType(ptr %t256, %S.ast.Type %t264, %S.ast.Type %t272, { ptr, i64, i64 } %t273, ptr %t274) + br label %for.step4041 +for.step4041: + %t275 = load i64, ptr %a253 + %t276 = add i64 %t275, 1 + store i64 %t276, ptr %a253 + br label %for.cond4039 +for.end4042: + br label %endif4038 +endif4038: + call void @finch.drop.S_gen_StructDef(ptr %a233) + br label %endif4027 +endif4027: + ret void +} + +define internal void @finch.drop.arr_S_gen_Val(ptr %a) { +entry: + %a4 = alloca i64, align 16 + %t1 = load ptr, ptr %a + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 + %t3 = load i64, ptr %t2 + store i64 0, ptr %a4 + br label %n.cond4123 +n.cond4123: + %t5 = load i64, ptr %a4 + %t6 = icmp slt i64 %t5, %t3 + br i1 %t6, label %n.body4124, label %n.end4125 +n.body4124: + %t7 = getelementptr inbounds %S.gen.Val, ptr %t1, i64 %t5 + call void @finch.drop.S_gen_Val(ptr %t7) + %t8 = load i64, ptr %a4 + %t9 = add i64 %t8, 1 + store i64 %t9, ptr %a4 + br label %n.cond4123 +n.end4125: + call void @finch_arr_free(ptr %a) + ret void +} + +define internal void @finch.drop.S_gen_Binds(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.gen.Binds, ptr %a, i32 0, i32 0 + call void @finch.drop.arr_S_ast_Type(ptr %t1) + %t2 = getelementptr inbounds %S.gen.Binds, ptr %a, i32 0, i32 1 + call void @finch.drop.arr_bool(ptr %t2) ret void } @@ -35952,66 +41840,89 @@ entry: %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 { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 + %a86 = alloca { ptr, i64, i64 }, align 16 + %a87 = alloca { ptr, i64, i64 }, align 16 + %a88 = alloca { ptr, i64, i64 }, align 16 %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca i64, align 16 - %a107 = alloca %S.ast.Type, align 16 - %a130 = alloca %S.gen.Binds, align 16 - %a134 = alloca i64, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca i64, align 16 - %a169 = alloca %S.gen.Val, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = 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 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca %S.gen.Val, align 16 - %a212 = alloca %S.gen.Val, align 16 - %a237 = alloca i64, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a265 = 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 - %a286 = alloca i64, align 16 - %a297 = alloca %S.gen.FnSig, align 16 - %a298 = alloca %S.gen.FnSig, align 16 - %a300 = alloca %S.gen.FnSig, 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 - %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 + %a96 = alloca { ptr, i64, i64 }, align 16 + %a97 = 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 + %a102 = alloca { ptr, i64, i64 }, align 16 + %a105 = alloca i64, align 16 + %a113 = alloca %S.ast.Type, align 16 + %a132 = alloca %S.ast.Type, align 16 + %a137 = alloca %S.gen.Binds, align 16 + %a141 = alloca i64, align 16 + %a159 = alloca { ptr, i64, i64 }, align 16 + %a165 = alloca i64, align 16 + %a167 = alloca i64, align 16 + %a182 = alloca %S.gen.Val, align 16 + %a186 = alloca { ptr, i64, i64 }, align 16 + %a187 = alloca { ptr, i64, i64 }, align 16 + %a193 = alloca { ptr, i64, i64 }, align 16 + %a194 = alloca { ptr, i64, i64 }, align 16 + %a211 = alloca { ptr, i64, i64 }, align 16 + %a212 = alloca { ptr, i64, i64 }, align 16 + %a214 = alloca { ptr, i64, i64 }, align 16 + %a215 = alloca { ptr, i64, i64 }, align 16 + %a216 = alloca { ptr, i64, i64 }, align 16 + %a217 = 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 + %a222 = alloca { ptr, i64, i64 }, align 16 + %a224 = alloca { ptr, i64, i64 }, align 16 + %a227 = alloca %S.gen.Val, align 16 + %a228 = alloca %S.gen.Val, align 16 + %a255 = alloca i64, align 16 + %a277 = alloca { ptr, i64, i64 }, align 16 + %a278 = 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 + %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 + %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 + %a296 = alloca { ptr, i64, i64 }, align 16 + %a298 = alloca { ptr, i64, i64 }, align 16 + %a308 = alloca %S.ast.Type, align 16 + %a309 = alloca i64, align 16 + %a320 = alloca %S.gen.FnSig, align 16 + %a321 = alloca %S.gen.FnSig, align 16 + %a323 = alloca %S.gen.FnSig, align 16 + %a327 = alloca { ptr, i64, i64 }, align 16 + %a329 = alloca 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 + %a373 = alloca { ptr, i64, i64 }, align 16 + %a376 = alloca { ptr, i64, i64 }, align 16 + %a377 = alloca %S.gen.Val, align 16 + %a389 = alloca { ptr, i64, i64 }, align 16 + %a390 = alloca { ptr, i64, i64 }, align 16 + %a391 = alloca { ptr, i64, i64 }, align 16 + %a392 = alloca { ptr, i64, i64 }, align 16 + %a396 = alloca { ptr, i64, i64 }, align 16 + %a397 = alloca { ptr, i64, i64 }, align 16 + %a398 = alloca { ptr, i64, i64 }, align 16 + %a399 = alloca { ptr, i64, i64 }, align 16 + %a413 = alloca %S.gen.Val, align 16 + %a414 = alloca i64, align 16 + %a422 = alloca %S.gen.Val, align 16 store ptr %p0, ptr %a1 store %S.ast.Node %p1, ptr %a2 store i64 %p2, ptr %a3 @@ -36019,21 +41930,21 @@ entry: store { ptr, i64, i64 } %p4, ptr %a5 %t6 = load ptr, ptr %a1 %t7 = icmp eq ptr %t6, null - br i1 %t7, label %panic3836, label %ok3837 -panic3836: - call void @finch_panic(ptr @.str.2388, i64 1560, ptr @.str.2389) + br i1 %t7, label %panic4047, label %ok4048 +panic4047: + call void @finch_panic(ptr @.str.2473, i64 1708, ptr @.str.2474) unreachable -ok3837: - %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 16 +ok4048: + %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 17 %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 %range3838, label %inrange3839 -range3838: - call void @finch_panic_index(ptr @.str.2390, i64 1560, i64 %t9, i64 %t11) + br i1 %t12, label %range4049, label %inrange4050 +range4049: + call void @finch_panic_index(ptr @.str.2475, i64 1708, i64 %t9, i64 %t11) unreachable -inrange3839: +inrange4050: %t13 = extractvalue { ptr, i64, i64 } %t10, 0 %t14 = getelementptr inbounds %S.gen.Template, ptr %t13, i64 %t9 %t15 = load %S.gen.Template, ptr %t14 @@ -36043,22 +41954,22 @@ inrange3839: store %S.gen.Template %t18, ptr %a19 %t20 = load ptr, ptr %a1 %t21 = icmp eq ptr %t20, null - br i1 %t21, label %panic3840, label %ok3841 -panic3840: - call void @finch_panic(ptr @.str.2391, i64 1561, ptr @.str.2392) + br i1 %t21, label %panic4051, label %ok4052 +panic4051: + call void @finch_panic(ptr @.str.2476, i64 1709, ptr @.str.2477) unreachable -ok3841: +ok4052: %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 %range3842, label %inrange3843 -range3842: - call void @finch_panic_index(ptr @.str.2393, i64 1561, i64 %t24, i64 %t26) + br i1 %t27, label %range4053, label %inrange4054 +range4053: + call void @finch_panic_index(ptr @.str.2478, i64 1709, i64 %t24, i64 %t26) unreachable -inrange3843: +inrange4054: %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 @@ -36067,11 +41978,11 @@ inrange3843: %t33 = load { ptr, i64, i64 }, ptr %t30 %t34 = extractvalue { ptr, i64, i64 } %t33, 1 %t35 = icmp uge i64 %t32, %t34 - br i1 %t35, label %range3844, label %inrange3845 -range3844: - call void @finch_panic_index(ptr @.str.2394, i64 1561, i64 %t32, i64 %t34) + br i1 %t35, label %range4055, label %inrange4056 +range4055: + call void @finch_panic_index(ptr @.str.2479, i64 1709, i64 %t32, i64 %t34) unreachable -inrange3845: +inrange4056: %t36 = extractvalue { ptr, i64, i64 } %t33, 0 %t37 = getelementptr inbounds %S.ast.Node, ptr %t36, i64 %t32 %t38 = load %S.ast.Node, ptr %t37 @@ -36096,8 +42007,8 @@ inrange3845: %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 %then3846, label %endif3848 -then3846: + br i1 %t58, label %then4057, label %endif4059 +then4057: %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 @@ -36106,13 +42017,13 @@ then3846: %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 %then3849, label %endif3851 -then3849: + br i1 %t66, label %then4060, label %endif4062 +then4060: %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.2395, i64 7, i64 0 }, ptr %a72 + store { ptr, i64, i64 } { ptr @.str.2480, 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 @@ -36123,456 +42034,548 @@ then3849: store { ptr, i64, i64 } %t73, 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.2396, 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 - %t88 = getelementptr inbounds %S.ast.Type, ptr %t87, i32 0, i32 1 - %t89 = getelementptr inbounds { ptr, i64, i64 }, ptr %t88, i32 0, i32 1 - %t90 = load i64, ptr %t89 - call void @finch_str_from_int(ptr %a91, i64 %t90) - %t92 = load { ptr, i64, i64 }, ptr %a91 - store { ptr, i64, i64 } %t86, 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 - call void @finch.gen.fail(ptr %t67, %S.ast.Node %t68, { ptr, i64, i64 } %t96) - br label %endif3851 -endif3851: - %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.cond3852 -each.cond3852: - %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.body3853, label %each.end3855 -each.body3853: - %t104 = load ptr, ptr %t98 - %t105 = getelementptr inbounds %S.ast.Type, ptr %t104, i64 %t102 - %t106 = load %S.ast.Type, ptr %t105 - store %S.ast.Type %t106, ptr %a107 - %t108 = getelementptr inbounds { ptr, i64, i64 }, ptr %a53, i32 0, i32 1 - %t109 = load ptr, ptr %a1 - %t110 = load %S.ast.Type, ptr %a107 - %t111 = load %S.ast.Node, ptr %a2 - %t112 = call %S.ast.Type @finch.gen.resolve(ptr %t109, %S.ast.Type %t110, %S.ast.Node %t111) - %t113 = load i64, ptr %t108 - %t114 = add i64 %t113, 1 - call void @finch_arr_reserve(ptr %a53, i64 %t114, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t115 = load ptr, ptr %a53 - %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.step3854 -each.step3854: - %t117 = load i64, ptr %a99 - %t118 = add i64 %t117, 1 - store i64 %t118, ptr %a99 - br label %each.cond3852 -each.end3855: - %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.2397, 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.2398, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.2399, i64 0, i64 0 }) - ret %S.gen.Val %t129 -endif3848: - 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.cond3856 -for.cond3856: - %t135 = load i64, ptr %a134 - %t136 = icmp slt i64 %t135, %t133 - br i1 %t136, label %for.body3857, label %for.end3859 -for.body3857: - %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.2400, 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)) - %t142 = load ptr, ptr %t137 - %t143 = getelementptr inbounds %S.ast.Type, ptr %t142, i64 %t140 - store %S.ast.Type %t139, ptr %t143 - store i64 %t141, ptr %t138 - %t144 = getelementptr inbounds %S.gen.Binds, ptr %a130, i32 0, i32 1 + store { ptr, i64, i64 } %t73, ptr %a82 + call void @finch_str_drop(ptr %a82) + store { ptr, i64, i64 } %t78, ptr %a83 + call void @finch_str_drop(ptr %a83) + %t84 = load { ptr, i64, i64 }, ptr %a79 + store { ptr, i64, i64 } %t84, ptr %a86 + store { ptr, i64, i64 } { ptr @.str.2481, i64 27, i64 0 }, ptr %a87 + call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) + store { ptr, i64, i64 } %t84, ptr %a88 + call void @finch_str_drop(ptr %a88) + %t89 = load { ptr, i64, i64 }, ptr %a85 + %t90 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5 + %t91 = getelementptr inbounds %S.ast.Type, ptr %t90, i32 0, i32 1 + %t92 = getelementptr inbounds { ptr, i64, i64 }, ptr %t91, i32 0, i32 1 + %t93 = load i64, ptr %t92 + call void @finch_str_from_int(ptr %a94, i64 %t93) + %t95 = load { ptr, i64, i64 }, ptr %a94 + store { ptr, i64, i64 } %t89, ptr %a97 + store { ptr, i64, i64 } %t95, ptr %a98 + call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) + store { ptr, i64, i64 } %t89, ptr %a99 + call void @finch_str_drop(ptr %a99) + store { ptr, i64, i64 } %t95, ptr %a100 + call void @finch_str_drop(ptr %a100) + %t101 = load { ptr, i64, i64 }, ptr %a96 + call void @finch.gen.fail(ptr %t67, %S.ast.Node %t68, { ptr, i64, i64 } %t101) + store { ptr, i64, i64 } %t101, ptr %a102 + call void @finch_str_drop(ptr %a102) + br label %endif4062 +endif4062: + %t103 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5 + %t104 = getelementptr inbounds %S.ast.Type, ptr %t103, i32 0, i32 1 + store i64 0, ptr %a105 + br label %each.cond4063 +each.cond4063: + %t106 = getelementptr inbounds { ptr, i64, i64 }, ptr %t104, i32 0, i32 1 + %t107 = load i64, ptr %t106 + %t108 = load i64, ptr %a105 + %t109 = icmp slt i64 %t108, %t107 + br i1 %t109, label %each.body4064, label %each.end4066 +each.body4064: + %t110 = load ptr, ptr %t104 + %t111 = getelementptr inbounds %S.ast.Type, ptr %t110, i64 %t108 + %t112 = load %S.ast.Type, ptr %t111 + store %S.ast.Type %t112, ptr %a113 + %t114 = getelementptr inbounds { ptr, i64, i64 }, ptr %a53, i32 0, i32 1 + %t115 = load ptr, ptr %a1 + %t116 = load %S.ast.Type, ptr %a113 + %t117 = load %S.ast.Node, ptr %a2 + %t118 = call %S.ast.Type @finch.gen.resolve(ptr %t115, %S.ast.Type %t116, %S.ast.Node %t117) + %t119 = load i64, ptr %t114 + %t120 = add i64 %t119, 1 + call void @finch_arr_reserve(ptr %a53, i64 %t120, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) + %t121 = load ptr, ptr %a53 + %t122 = getelementptr inbounds %S.ast.Type, ptr %t121, i64 %t119 + store %S.ast.Type %t118, ptr %t122 + store i64 %t120, ptr %t114 + br label %each.step4065 +each.step4065: + %t123 = load i64, ptr %a105 + %t124 = add i64 %t123, 1 + store i64 %t124, ptr %a105 + br label %each.cond4063 +each.end4066: + %t125 = load ptr, ptr %a1 + %t126 = load ptr, ptr %a1 + %t127 = load i64, ptr %a3 + %t128 = load { ptr, i64, i64 }, ptr %a53 + %t129 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.2482, i64 4, i64 0 }) + %t130 = load %S.ast.Node, ptr %a2 + %t131 = call i64 @finch.gen.instFn(ptr %t126, i64 %t127, { ptr, i64, i64 } %t128, %S.ast.Type %t129, %S.ast.Node %t130) + store %S.ast.Type %t129, ptr %a132 + call void @finch.drop.S_ast_Type(ptr %a132) + %t133 = load %S.ast.Node, ptr %a2 + %t134 = load i64, ptr %a4 + %t135 = load { ptr, i64, i64 }, ptr %a5 + %t136 = call %S.gen.Val @finch.gen.callFn(ptr %t125, i64 %t131, %S.ast.Node %t133, i64 %t134, { ptr, i64, i64 } %t135, { ptr, i64, i64 } { ptr @.str.2483, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.2484, i64 0, i64 0 }) + call void @finch.drop.arr_S_ast_Type(ptr %a53) + call void @finch.drop.S_ast_Node(ptr %a42) + call void @finch.drop.S_gen_Template(ptr %a19) + ret %S.gen.Val %t136 +endif4059: + store %S.gen.Binds zeroinitializer, ptr %a137 + %t138 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 + %t139 = getelementptr inbounds { ptr, i64, i64 }, ptr %t138, i32 0, i32 1 + %t140 = load i64, ptr %t139 + store i64 0, ptr %a141 + br label %for.cond4067 +for.cond4067: + %t142 = load i64, ptr %a141 + %t143 = icmp slt i64 %t142, %t140 + br i1 %t143, label %for.body4068, label %for.end4070 +for.body4068: + %t144 = getelementptr inbounds %S.gen.Binds, ptr %a137, i32 0, i32 0 %t145 = getelementptr inbounds { ptr, i64, i64 }, ptr %t144, i32 0, i32 1 - %t146 = load i64, ptr %t145 - %t147 = add i64 %t146, 1 - call void @finch_arr_reserve(ptr %t144, i64 %t147, i64 ptrtoint (ptr getelementptr (i1, ptr null, i32 1) to i64)) - %t148 = load ptr, ptr %t144 - %t149 = getelementptr inbounds i1, ptr %t148, i64 %t146 - store i1 false, ptr %t149 - store i64 %t147, ptr %t145 - br label %for.step3858 -for.step3858: - %t150 = load i64, ptr %a134 - %t151 = add i64 %t150, 1 - store i64 %t151, ptr %a134 - br label %for.cond3856 -for.end3859: - store { ptr, i64, i64 } zeroinitializer, ptr %a152 - %t153 = load i64, ptr %a47 - store i64 0, ptr %a154 - br label %for.cond3860 -for.cond3860: - %t155 = load i64, ptr %a154 - %t156 = icmp slt i64 %t155, %t153 - br i1 %t156, label %for.body3861, label %for.end3863 -for.body3861: - %t157 = load ptr, ptr %a1 - %t158 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t159 = load i64, ptr %a4 - %t160 = load i64, ptr %a154 - %t161 = add i64 %t159, %t160 - %t162 = load { ptr, i64, i64 }, ptr %t158 - %t163 = extractvalue { ptr, i64, i64 } %t162, 1 - %t164 = icmp uge i64 %t161, %t163 - br i1 %t164, label %range3864, label %inrange3865 -range3864: - call void @finch_panic_index(ptr @.str.2401, i64 1581, i64 %t161, i64 %t163) + %t146 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.2485, i64 4, i64 0 }) + %t147 = load i64, ptr %t145 + %t148 = add i64 %t147, 1 + call void @finch_arr_reserve(ptr %t144, i64 %t148, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) + %t149 = load ptr, ptr %t144 + %t150 = getelementptr inbounds %S.ast.Type, ptr %t149, i64 %t147 + store %S.ast.Type %t146, ptr %t150 + store i64 %t148, ptr %t145 + %t151 = getelementptr inbounds %S.gen.Binds, ptr %a137, i32 0, i32 1 + %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %t151, i32 0, i32 1 + %t153 = load i64, ptr %t152 + %t154 = add i64 %t153, 1 + call void @finch_arr_reserve(ptr %t151, i64 %t154, i64 ptrtoint (ptr getelementptr (i1, ptr null, i32 1) to i64)) + %t155 = load ptr, ptr %t151 + %t156 = getelementptr inbounds i1, ptr %t155, i64 %t153 + store i1 false, ptr %t156 + store i64 %t154, ptr %t152 + br label %for.step4069 +for.step4069: + %t157 = load i64, ptr %a141 + %t158 = add i64 %t157, 1 + store i64 %t158, ptr %a141 + br label %for.cond4067 +for.end4070: + store { ptr, i64, i64 } zeroinitializer, ptr %a159 + %t160 = load ptr, ptr %a1 + %t161 = icmp eq ptr %t160, null + br i1 %t161, label %panic4071, label %ok4072 +panic4071: + call void @finch_panic(ptr @.str.2486, i64 1728, ptr @.str.2487) unreachable -inrange3865: - %t165 = extractvalue { ptr, i64, i64 } %t162, 0 - %t166 = getelementptr inbounds %S.ast.Node, ptr %t165, i64 %t161 - %t167 = load %S.ast.Node, ptr %t166 - %t168 = call %S.gen.Val @finch.gen.expr(ptr %t157, %S.ast.Node %t167) - store %S.gen.Val %t168, ptr %a169 - %t170 = getelementptr inbounds %S.gen.Val, ptr %a169, i32 0, i32 1 - %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.2402, 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.from3866 -logic.from3866: - br i1 %t176, label %logic.end3868, label %logic.rhs3867 -logic.rhs3867: - %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.2403, 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.rend3869 -logic.rend3869: - br label %logic.end3868 -logic.end3868: - %t184 = phi i1 [ true, %logic.from3866 ], [ %t183, %logic.rend3869 ] - br i1 %t184, label %then3870, label %endif3872 -then3870: - %t185 = load ptr, ptr %a1 - %t186 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t187 = load i64, ptr %a4 - %t188 = load i64, ptr %a154 - %t189 = add i64 %t187, %t188 - %t190 = load { ptr, i64, i64 }, ptr %t186 - %t191 = extractvalue { ptr, i64, i64 } %t190, 1 - %t192 = icmp uge i64 %t189, %t191 - br i1 %t192, label %range3873, label %inrange3874 -range3873: - call void @finch_panic_index(ptr @.str.2404, i64 1583, i64 %t189, i64 %t191) +ok4072: + %t162 = getelementptr inbounds %S.gen.Gen, ptr %t160, i32 0, i32 11 + %t163 = getelementptr inbounds { ptr, i64, i64 }, ptr %t162, i32 0, i32 1 + %t164 = load i64, ptr %t163 + store i64 %t164, ptr %a165 + %t166 = load i64, ptr %a47 + store i64 0, ptr %a167 + br label %for.cond4073 +for.cond4073: + %t168 = load i64, ptr %a167 + %t169 = icmp slt i64 %t168, %t166 + br i1 %t169, label %for.body4074, label %for.end4076 +for.body4074: + %t170 = load ptr, ptr %a1 + %t171 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t172 = load i64, ptr %a4 + %t173 = load i64, ptr %a167 + %t174 = add i64 %t172, %t173 + %t175 = load { ptr, i64, i64 }, ptr %t171 + %t176 = extractvalue { ptr, i64, i64 } %t175, 1 + %t177 = icmp uge i64 %t174, %t176 + br i1 %t177, label %range4077, label %inrange4078 +range4077: + call void @finch_panic_index(ptr @.str.2488, i64 1730, i64 %t174, i64 %t176) unreachable -inrange3874: - %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.2406, 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.2405, 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.2407, 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 %endif3872 -endif3872: - %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 - call void @finch.copy.S_gen_Val(ptr %a212, ptr %a211) - %t213 = load %S.gen.Val, ptr %a212 - %t214 = load i64, ptr %t209 - %t215 = add i64 %t214, 1 - call void @finch_arr_reserve(ptr %a152, i64 %t215, i64 ptrtoint (ptr getelementptr (%S.gen.Val, ptr null, i32 1) to i64)) - %t216 = load ptr, ptr %a152 - %t217 = getelementptr inbounds %S.gen.Val, ptr %t216, i64 %t214 - store %S.gen.Val %t213, ptr %t217 - store i64 %t215, ptr %t209 - %t218 = load ptr, ptr %a1 - %t219 = getelementptr inbounds %S.ast.Node, ptr %a42, i32 0, i32 9 - %t220 = load i64, ptr %a154 - %t221 = load { ptr, i64, i64 }, ptr %t219 - %t222 = extractvalue { ptr, i64, i64 } %t221, 1 - %t223 = icmp uge i64 %t220, %t222 - br i1 %t223, label %range3875, label %inrange3876 -range3875: - call void @finch_panic_index(ptr @.str.2408, i64 1586, i64 %t220, i64 %t222) +inrange4078: + %t178 = extractvalue { ptr, i64, i64 } %t175, 0 + %t179 = getelementptr inbounds %S.ast.Node, ptr %t178, i64 %t174 + %t180 = load %S.ast.Node, ptr %t179 + %t181 = call %S.gen.Val @finch.gen.expr(ptr %t170, %S.ast.Node %t180) + store %S.gen.Val %t181, ptr %a182 + %t183 = getelementptr inbounds %S.gen.Val, ptr %a182, i32 0, i32 1 + %t184 = getelementptr inbounds %S.ast.Type, ptr %t183, i32 0, i32 0 + %t185 = load { ptr, i64, i64 }, ptr %t184 + store { ptr, i64, i64 } %t185, ptr %a186 + store { ptr, i64, i64 } { ptr @.str.2489, i64 4, i64 0 }, ptr %a187 + %t188 = call i32 @finch_str_eq(ptr %a186, ptr %a187) + %t189 = icmp ne i32 %t188, 0 + br label %logic.from4079 +logic.from4079: + br i1 %t189, label %logic.end4081, label %logic.rhs4080 +logic.rhs4080: + %t190 = getelementptr inbounds %S.gen.Val, ptr %a182, i32 0, i32 1 + %t191 = getelementptr inbounds %S.ast.Type, ptr %t190, i32 0, i32 0 + %t192 = load { ptr, i64, i64 }, ptr %t191 + store { ptr, i64, i64 } %t192, ptr %a193 + store { ptr, i64, i64 } { ptr @.str.2490, i64 4, i64 0 }, ptr %a194 + %t195 = call i32 @finch_str_eq(ptr %a193, ptr %a194) + %t196 = icmp ne i32 %t195, 0 + br label %logic.rend4082 +logic.rend4082: + br label %logic.end4081 +logic.end4081: + %t197 = phi i1 [ true, %logic.from4079 ], [ %t196, %logic.rend4082 ] + br i1 %t197, label %then4083, label %endif4085 +then4083: + %t198 = load ptr, ptr %a1 + %t199 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t200 = load i64, ptr %a4 + %t201 = load i64, ptr %a167 + %t202 = add i64 %t200, %t201 + %t203 = load { ptr, i64, i64 }, ptr %t199 + %t204 = extractvalue { ptr, i64, i64 } %t203, 1 + %t205 = icmp uge i64 %t202, %t204 + br i1 %t205, label %range4086, label %inrange4087 +range4086: + call void @finch_panic_index(ptr @.str.2491, i64 1732, i64 %t202, i64 %t204) unreachable -inrange3876: - %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 - %t227 = load %S.ast.Type, ptr %t226 - %t228 = getelementptr inbounds %S.gen.Val, ptr %a169, i32 0, i32 1 - %t229 = load %S.ast.Type, ptr %t228 - %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.step3862 -for.step3862: - %t232 = load i64, ptr %a154 - %t233 = add i64 %t232, 1 - store i64 %t233, ptr %a154 - br label %for.cond3860 -for.end3863: - %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.cond3877 -for.cond3877: - %t238 = load i64, ptr %a237 - %t239 = icmp slt i64 %t238, %t236 - br i1 %t239, label %for.body3878, label %for.end3880 -for.body3878: - %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 %range3881, label %inrange3882 -range3881: - call void @finch_panic_index(ptr @.str.2409, i64 1589, i64 %t241, i64 %t243) +inrange4087: + %t206 = extractvalue { ptr, i64, i64 } %t203, 0 + %t207 = getelementptr inbounds %S.ast.Node, ptr %t206, i64 %t202 + %t208 = load %S.ast.Node, ptr %t207 + %t209 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 + %t210 = getelementptr inbounds { ptr, i64, i64 }, ptr %t209, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.2493, i64 2, i64 0 }, ptr %a211 + call void @finch_str_join(ptr %a212, ptr %t209, ptr %a211) + %t213 = load { ptr, i64, i64 }, ptr %a212 + store { ptr, i64, i64 } { ptr @.str.2492, i64 29, i64 0 }, ptr %a215 + store { ptr, i64, i64 } %t213, ptr %a216 + call void @finch_str_concat(ptr %a214, ptr %a215, ptr %a216) + store { ptr, i64, i64 } %t213, ptr %a217 + call void @finch_str_drop(ptr %a217) + %t218 = load { ptr, i64, i64 }, ptr %a214 + store { ptr, i64, i64 } %t218, ptr %a220 + store { ptr, i64, i64 } { ptr @.str.2494, i64 5, i64 0 }, ptr %a221 + call void @finch_str_concat(ptr %a219, ptr %a220, ptr %a221) + store { ptr, i64, i64 } %t218, ptr %a222 + call void @finch_str_drop(ptr %a222) + %t223 = load { ptr, i64, i64 }, ptr %a219 + call void @finch.gen.fail(ptr %t198, %S.ast.Node %t208, { ptr, i64, i64 } %t223) + store { ptr, i64, i64 } %t223, ptr %a224 + call void @finch_str_drop(ptr %a224) + br label %endif4085 +endif4085: + %t225 = getelementptr inbounds { ptr, i64, i64 }, ptr %a159, i32 0, i32 1 + %t226 = load %S.gen.Val, ptr %a182 + store %S.gen.Val %t226, ptr %a227 + call void @finch.copy.S_gen_Val(ptr %a228, ptr %a227) + %t229 = load %S.gen.Val, ptr %a228 + %t230 = load i64, ptr %t225 + %t231 = add i64 %t230, 1 + call void @finch_arr_reserve(ptr %a159, i64 %t231, i64 ptrtoint (ptr getelementptr (%S.gen.Val, ptr null, i32 1) to i64)) + %t232 = load ptr, ptr %a159 + %t233 = getelementptr inbounds %S.gen.Val, ptr %t232, i64 %t230 + store %S.gen.Val %t229, ptr %t233 + store i64 %t231, ptr %t225 + %t234 = load ptr, ptr %a1 + %t235 = load %S.gen.Val, ptr %a182 + call void @finch.gen.hold(ptr %t234, %S.gen.Val %t235) + %t236 = load ptr, ptr %a1 + %t237 = getelementptr inbounds %S.ast.Node, ptr %a42, i32 0, i32 9 + %t238 = load i64, ptr %a167 + %t239 = load { ptr, i64, i64 }, ptr %t237 + %t240 = extractvalue { ptr, i64, i64 } %t239, 1 + %t241 = icmp uge i64 %t238, %t240 + br i1 %t241, label %range4088, label %inrange4089 +range4088: + call void @finch_panic_index(ptr @.str.2495, i64 1736, i64 %t238, i64 %t240) unreachable -inrange3882: - %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 %then3883, label %endif3885 -then3883: - %t249 = load ptr, ptr %a1 - %t250 = load %S.ast.Node, ptr %a2 - %t251 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 - %t252 = load i64, ptr %a237 - %t253 = load { ptr, i64, i64 }, ptr %t251 - %t254 = extractvalue { ptr, i64, i64 } %t253, 1 - %t255 = icmp uge i64 %t252, %t254 - br i1 %t255, label %range3886, label %inrange3887 -range3886: - call void @finch_panic_index(ptr @.str.2411, i64 1590, i64 %t252, i64 %t254) +inrange4089: + %t242 = extractvalue { ptr, i64, i64 } %t239, 0 + %t243 = getelementptr inbounds %S.ast.Node, ptr %t242, i64 %t238 + %t244 = getelementptr inbounds %S.ast.Node, ptr %t243, i32 0, i32 5 + %t245 = load %S.ast.Type, ptr %t244 + %t246 = getelementptr inbounds %S.gen.Val, ptr %a182, i32 0, i32 1 + %t247 = load %S.ast.Type, ptr %t246 + %t248 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 + %t249 = load { ptr, i64, i64 }, ptr %t248 + call void @finch.gen.bindType(ptr %t236, %S.ast.Type %t245, %S.ast.Type %t247, { ptr, i64, i64 } %t249, ptr %a137) + call void @finch.drop.S_gen_Val(ptr %a182) + br label %for.step4075 +for.step4075: + %t250 = load i64, ptr %a167 + %t251 = add i64 %t250, 1 + store i64 %t251, ptr %a167 + br label %for.cond4073 +for.end4076: + %t252 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 + %t253 = getelementptr inbounds { ptr, i64, i64 }, ptr %t252, i32 0, i32 1 + %t254 = load i64, ptr %t253 + store i64 0, ptr %a255 + br label %for.cond4090 +for.cond4090: + %t256 = load i64, ptr %a255 + %t257 = icmp slt i64 %t256, %t254 + br i1 %t257, label %for.body4091, label %for.end4093 +for.body4091: + %t258 = getelementptr inbounds %S.gen.Binds, ptr %a137, i32 0, i32 1 + %t259 = load i64, ptr %a255 + %t260 = load { ptr, i64, i64 }, ptr %t258 + %t261 = extractvalue { ptr, i64, i64 } %t260, 1 + %t262 = icmp uge i64 %t259, %t261 + br i1 %t262, label %range4094, label %inrange4095 +range4094: + call void @finch_panic_index(ptr @.str.2496, i64 1739, i64 %t259, i64 %t261) unreachable -inrange3887: - %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.2410, 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.2412, 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 - %t268 = load { ptr, i64, i64 }, ptr %t267 - store { ptr, i64, i64 } %t266, 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.2413, 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 %endif3885 -endif3885: - br label %for.step3879 -for.step3879: - %t277 = load i64, ptr %a237 - %t278 = add i64 %t277, 1 - store i64 %t278, ptr %a237 - br label %for.cond3877 -for.end3880: - %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.2414, 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 %panic3888, label %ok3889 -panic3888: - call void @finch_panic(ptr @.str.2415, i64 1594, ptr @.str.2416) +inrange4095: + %t263 = extractvalue { ptr, i64, i64 } %t260, 0 + %t264 = getelementptr inbounds i1, ptr %t263, i64 %t259 + %t265 = load i1, ptr %t264 + %t266 = xor i1 %t265, true + br i1 %t266, label %then4096, label %endif4098 +then4096: + %t267 = load ptr, ptr %a1 + %t268 = load %S.ast.Node, ptr %a2 + %t269 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 + %t270 = load i64, ptr %a255 + %t271 = load { ptr, i64, i64 }, ptr %t269 + %t272 = extractvalue { ptr, i64, i64 } %t271, 1 + %t273 = icmp uge i64 %t270, %t272 + br i1 %t273, label %range4099, label %inrange4100 +range4099: + call void @finch_panic_index(ptr @.str.2498, i64 1740, i64 %t270, i64 %t272) unreachable -ok3889: - %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 %range3890, label %inrange3891 -range3890: - call void @finch_panic_index(ptr @.str.2417, i64 1594, i64 %t290, i64 %t292) - unreachable -inrange3891: - %t294 = extractvalue { ptr, i64, i64 } %t291, 0 - %t295 = getelementptr inbounds %S.gen.FnSig, ptr %t294, i64 %t290 - %t296 = load %S.gen.FnSig, ptr %t295 - store %S.gen.FnSig %t296, ptr %a297 - 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 +inrange4100: + %t274 = extractvalue { ptr, i64, i64 } %t271, 0 + %t275 = getelementptr inbounds { ptr, i64, i64 }, ptr %t274, i64 %t270 + %t276 = load { ptr, i64, i64 }, ptr %t275 + store { ptr, i64, i64 } { ptr @.str.2497, i64 16, 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.2499, i64 24, i64 0 }, ptr %a283 + call void @finch_str_concat(ptr %a281, ptr %a282, ptr %a283) + store { ptr, i64, i64 } %t280, ptr %a284 + call void @finch_str_drop(ptr %a284) + %t285 = load { ptr, i64, i64 }, ptr %a281 + %t286 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 1 + %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) + store { ptr, i64, i64 } %t285, ptr %a291 + call void @finch_str_drop(ptr %a291) + %t292 = load { ptr, i64, i64 }, ptr %a288 + store { ptr, i64, i64 } %t292, ptr %a294 + store { ptr, i64, i64 } { ptr @.str.2500, i64 10, i64 0 }, ptr %a295 + call void @finch_str_concat(ptr %a293, ptr %a294, ptr %a295) + store { ptr, i64, i64 } %t292, ptr %a296 + call void @finch_str_drop(ptr %a296) + %t297 = load { ptr, i64, i64 }, ptr %a293 + call void @finch.gen.fail(ptr %t267, %S.ast.Node %t268, { ptr, i64, i64 } %t297) + store { ptr, i64, i64 } %t297, ptr %a298 + call void @finch_str_drop(ptr %a298) + br label %endif4098 +endif4098: + br label %for.step4092 +for.step4092: + %t299 = load i64, ptr %a255 + %t300 = add i64 %t299, 1 + store i64 %t300, ptr %a255 + br label %for.cond4090 +for.end4093: %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.cond3892 -for.cond3892: - %t307 = load i64, ptr %a306 - %t308 = icmp slt i64 %t307, %t305 - br i1 %t308, label %for.body3893, label %for.end3895 -for.body3893: - %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 %range3896, label %inrange3897 -range3896: - call void @finch_panic_index(ptr @.str.2418, i64 1598, i64 %t310, i64 %t312) + %t302 = load i64, ptr %a3 + %t303 = getelementptr inbounds %S.gen.Binds, ptr %a137, i32 0, i32 0 + %t304 = load { ptr, i64, i64 }, ptr %t303 + %t305 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.2501, i64 4, i64 0 }) + %t306 = load %S.ast.Node, ptr %a2 + %t307 = call i64 @finch.gen.instFn(ptr %t301, i64 %t302, { ptr, i64, i64 } %t304, %S.ast.Type %t305, %S.ast.Node %t306) + store %S.ast.Type %t305, ptr %a308 + call void @finch.drop.S_ast_Type(ptr %a308) + store i64 %t307, ptr %a309 + %t310 = load ptr, ptr %a1 + %t311 = icmp eq ptr %t310, null + br i1 %t311, label %panic4101, label %ok4102 +panic4101: + call void @finch_panic(ptr @.str.2502, i64 1744, ptr @.str.2503) unreachable -inrange3897: - %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 %range3898, label %inrange3899 -range3898: - call void @finch_panic_index(ptr @.str.2419, i64 1598, i64 %t318, i64 %t320) +ok4102: + %t312 = getelementptr inbounds %S.gen.Gen, ptr %t310, i32 0, i32 15 + %t313 = load i64, ptr %a309 + %t314 = load { ptr, i64, i64 }, ptr %t312 + %t315 = extractvalue { ptr, i64, i64 } %t314, 1 + %t316 = icmp uge i64 %t313, %t315 + br i1 %t316, label %range4103, label %inrange4104 +range4103: + call void @finch_panic_index(ptr @.str.2504, i64 1744, i64 %t313, i64 %t315) unreachable -inrange3899: - %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 %range3900, label %inrange3901 -range3900: - call void @finch_panic_index(ptr @.str.2420, i64 1598, i64 %t328, i64 %t330) +inrange4104: + %t317 = extractvalue { ptr, i64, i64 } %t314, 0 + %t318 = getelementptr inbounds %S.gen.FnSig, ptr %t317, i64 %t313 + %t319 = load %S.gen.FnSig, ptr %t318 + store %S.gen.FnSig %t319, ptr %a320 + call void @finch.copy.S_gen_FnSig(ptr %a321, ptr %a320) + %t322 = load %S.gen.FnSig, ptr %a321 + store %S.gen.FnSig %t322, ptr %a323 + %t324 = load ptr, ptr %a1 + %t325 = load %S.ast.Node, ptr %a2 + %t326 = load %S.gen.FnSig, ptr %a323 + call void @finch.gen.noteCall(ptr %t324, %S.ast.Node %t325, %S.gen.FnSig %t326) + store { ptr, i64, i64 } zeroinitializer, ptr %a327 + %t328 = load i64, ptr %a47 + store i64 0, ptr %a329 + br label %for.cond4105 +for.cond4105: + %t330 = load i64, ptr %a329 + %t331 = icmp slt i64 %t330, %t328 + br i1 %t331, label %for.body4106, label %for.end4108 +for.body4106: + %t332 = load ptr, ptr %a1 + %t333 = load i64, ptr %a329 + %t334 = load { ptr, i64, i64 }, ptr %a159 + %t335 = extractvalue { ptr, i64, i64 } %t334, 1 + %t336 = icmp uge i64 %t333, %t335 + br i1 %t336, label %range4109, label %inrange4110 +range4109: + call void @finch_panic_index(ptr @.str.2505, i64 1748, i64 %t333, i64 %t335) unreachable -inrange3901: - %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 %range3902, label %inrange3903 -range3902: - call void @finch_panic_index(ptr @.str.2422, i64 1598, i64 %t336, i64 %t338) +inrange4110: + %t337 = extractvalue { ptr, i64, i64 } %t334, 0 + %t338 = getelementptr inbounds %S.gen.Val, ptr %t337, i64 %t333 + %t339 = load %S.gen.Val, ptr %t338 + %t340 = getelementptr inbounds %S.gen.FnSig, ptr %a323, i32 0, i32 13 + %t341 = load i64, ptr %a329 + %t342 = load { ptr, i64, i64 }, ptr %t340 + %t343 = extractvalue { ptr, i64, i64 } %t342, 1 + %t344 = icmp uge i64 %t341, %t343 + br i1 %t344, label %range4111, label %inrange4112 +range4111: + call void @finch_panic_index(ptr @.str.2506, i64 1748, i64 %t341, i64 %t343) unreachable -inrange3903: - %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.2421, 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.2423, 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 %range3904, label %inrange3905 -range3904: - call void @finch_panic_index(ptr @.str.2424, i64 1599, i64 %t356, i64 %t358) +inrange4112: + %t345 = extractvalue { ptr, i64, i64 } %t342, 0 + %t346 = getelementptr inbounds %S.ast.Type, ptr %t345, i64 %t341 + %t347 = load %S.ast.Type, ptr %t346 + %t348 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t349 = load i64, ptr %a4 + %t350 = load i64, ptr %a329 + %t351 = add i64 %t349, %t350 + %t352 = load { ptr, i64, i64 }, ptr %t348 + %t353 = extractvalue { ptr, i64, i64 } %t352, 1 + %t354 = icmp uge i64 %t351, %t353 + br i1 %t354, label %range4113, label %inrange4114 +range4113: + call void @finch_panic_index(ptr @.str.2507, i64 1748, i64 %t351, i64 %t353) unreachable -inrange3905: - %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.2425, 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 +inrange4114: + %t355 = extractvalue { ptr, i64, i64 } %t352, 0 + %t356 = getelementptr inbounds %S.ast.Node, ptr %t355, i64 %t351 + %t357 = load %S.ast.Node, ptr %t356 + %t358 = getelementptr inbounds %S.gen.FnSig, ptr %a323, i32 0, i32 14 + %t359 = load i64, ptr %a329 + %t360 = load { ptr, i64, i64 }, ptr %t358 + %t361 = extractvalue { ptr, i64, i64 } %t360, 1 + %t362 = icmp uge i64 %t359, %t361 + br i1 %t362, label %range4115, label %inrange4116 +range4115: + call void @finch_panic_index(ptr @.str.2509, i64 1748, i64 %t359, i64 %t361) + unreachable +inrange4116: + %t363 = extractvalue { ptr, i64, i64 } %t360, 0 + %t364 = getelementptr inbounds { ptr, i64, i64 }, ptr %t363, i64 %t359 + %t365 = load { ptr, i64, i64 }, ptr %t364 + store { ptr, i64, i64 } { ptr @.str.2508, i64 10, i64 0 }, 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.2510, i64 1, 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 %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.step3894 -for.step3894: - %t378 = load i64, ptr %a306 - %t379 = add i64 %t378, 1 - store i64 %t379, ptr %a306 - br label %for.cond3892 -for.end3895: - %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 + store { ptr, i64, i64 } %t369, ptr %a373 + call void @finch_str_drop(ptr %a373) + %t374 = load { ptr, i64, i64 }, ptr %a370 + %t375 = call %S.gen.Val @finch.gen.coerce(ptr %t332, %S.gen.Val %t339, %S.ast.Type %t347, %S.ast.Node %t357, { ptr, i64, i64 } %t374) + store { ptr, i64, i64 } %t374, ptr %a376 + call void @finch_str_drop(ptr %a376) + store %S.gen.Val %t375, ptr %a377 + %t378 = getelementptr inbounds { ptr, i64, i64 }, ptr %a327, i32 0, i32 1 + %t379 = load ptr, ptr %a1 + %t380 = getelementptr inbounds %S.gen.FnSig, ptr %a323, i32 0, i32 13 + %t381 = load i64, ptr %a329 + %t382 = load { ptr, i64, i64 }, ptr %t380 + %t383 = extractvalue { ptr, i64, i64 } %t382, 1 + %t384 = icmp uge i64 %t381, %t383 + br i1 %t384, label %range4117, label %inrange4118 +range4117: + call void @finch_panic_index(ptr @.str.2511, i64 1749, i64 %t381, i64 %t383) + unreachable +inrange4118: + %t385 = extractvalue { ptr, i64, i64 } %t382, 0 + %t386 = getelementptr inbounds %S.ast.Type, ptr %t385, i64 %t381 + %t387 = load %S.ast.Type, ptr %t386 + %t388 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t379, %S.ast.Type %t387) + store { ptr, i64, i64 } %t388, ptr %a390 + store { ptr, i64, i64 } { ptr @.str.2512, i64 1, i64 0 }, ptr %a391 + call void @finch_str_concat(ptr %a389, ptr %a390, ptr %a391) + store { ptr, i64, i64 } %t388, ptr %a392 + call void @finch_str_drop(ptr %a392) + %t393 = load { ptr, i64, i64 }, ptr %a389 + %t394 = getelementptr inbounds %S.gen.Val, ptr %a377, i32 0, i32 0 + %t395 = load { ptr, i64, i64 }, ptr %t394 + store { ptr, i64, i64 } %t393, ptr %a397 + store { ptr, i64, i64 } %t395, ptr %a398 + call void @finch_str_concat(ptr %a396, ptr %a397, ptr %a398) + store { ptr, i64, i64 } %t393, ptr %a399 + call void @finch_str_drop(ptr %a399) + %t400 = load { ptr, i64, i64 }, ptr %a396 + %t401 = load i64, ptr %t378 + %t402 = add i64 %t401, 1 + call void @finch_arr_reserve(ptr %a327, i64 %t402, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t403 = load ptr, ptr %a327 + %t404 = getelementptr inbounds { ptr, i64, i64 }, ptr %t403, i64 %t401 + store { ptr, i64, i64 } %t400, ptr %t404 + store i64 %t402, ptr %t378 + call void @finch.drop.S_gen_Val(ptr %a377) + br label %for.step4107 +for.step4107: + %t405 = load i64, ptr %a329 + %t406 = add i64 %t405, 1 + store i64 %t406, ptr %a329 + br label %for.cond4105 +for.end4108: + %t407 = load ptr, ptr %a1 + %t408 = load %S.gen.FnSig, ptr %a323 + %t409 = load %S.ast.Node, ptr %a2 + %t410 = load { ptr, i64, i64 }, ptr %a327 + %t411 = load { ptr, i64, i64 }, ptr %a5 + %t412 = call %S.gen.Val @finch.gen.emitCall(ptr %t407, %S.gen.FnSig %t408, %S.ast.Node %t409, { ptr, i64, i64 } %t410, { ptr, i64, i64 } %t411) + store %S.gen.Val %t412, ptr %a413 + store i64 0, ptr %a414 + br label %each.cond4119 +each.cond4119: + %t415 = getelementptr inbounds { ptr, i64, i64 }, ptr %a159, i32 0, i32 1 + %t416 = load i64, ptr %t415 + %t417 = load i64, ptr %a414 + %t418 = icmp slt i64 %t417, %t416 + br i1 %t418, label %each.body4120, label %each.end4122 +each.body4120: + %t419 = load ptr, ptr %a159 + %t420 = getelementptr inbounds %S.gen.Val, ptr %t419, i64 %t417 + %t421 = load %S.gen.Val, ptr %t420 + store %S.gen.Val %t421, ptr %a422 + %t423 = load ptr, ptr %a1 + %t424 = load %S.gen.Val, ptr %a422 + call void @finch.gen.release(ptr %t423, %S.gen.Val %t424) + br label %each.step4121 +each.step4121: + %t425 = load i64, ptr %a414 + %t426 = add i64 %t425, 1 + store i64 %t426, ptr %a414 + br label %each.cond4119 +each.end4122: + %t427 = load ptr, ptr %a1 + %t428 = load i64, ptr %a165 + call void @finch.gen.heldEnd(ptr %t427, i64 %t428) + %t429 = load %S.gen.Val, ptr %a413 + call void @finch.drop.arr_str(ptr %a327) + call void @finch.drop.S_gen_FnSig(ptr %a323) + call void @finch.drop.arr_S_gen_Val(ptr %a159) + call void @finch.drop.S_gen_Binds(ptr %a137) + call void @finch.drop.arr_S_ast_Type(ptr %a53) + call void @finch.drop.S_ast_Node(ptr %a42) + call void @finch.drop.S_gen_Template(ptr %a19) + ret %S.gen.Val %t429 } define internal void @finch.copy.S_cimport_CField(ptr %dst, ptr %src) { @@ -36598,20 +42601,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.cond3914 -n.cond3914: + br label %n.cond4134 +n.cond4134: %t6 = load i64, ptr %a5 %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body3915, label %n.end3916 -n.body3915: + br i1 %t7, label %n.body4135, label %n.end4136 +n.body4135: %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.cond3914 -n.end3916: + br label %n.cond4134 +n.end4136: ret void } @@ -36653,64 +42656,74 @@ entry: %a85 = alloca { ptr, i64, i64 }, align 16 %a86 = alloca { ptr, i64, i64 }, align 16 %a87 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 + %a88 = alloca { ptr, i64, i64 }, align 16 %a90 = alloca { ptr, i64, i64 }, align 16 %a91 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca %S.ast.Type, align 16 - %a130 = alloca %S.ast.Type, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 + %a92 = alloca { ptr, i64, i64 }, align 16 + %a93 = alloca { ptr, i64, i64 }, align 16 + %a112 = alloca { ptr, i64, i64 }, align 16 + %a113 = alloca { ptr, i64, i64 }, align 16 + %a131 = alloca %S.ast.Type, align 16 + %a132 = alloca %S.ast.Type, align 16 %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 %a198 = alloca { ptr, i64, i64 }, align 16 + %a199 = 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 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = 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 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a285 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 + %a203 = 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 + %a224 = alloca { ptr, i64, i64 }, align 16 + %a225 = alloca { ptr, i64, i64 }, align 16 + %a228 = alloca { ptr, i64, i64 }, align 16 + %a247 = 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 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 + %a295 = alloca { ptr, i64, i64 }, align 16 %a298 = alloca { ptr, i64, i64 }, align 16 + %a299 = 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 + %a307 = 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 store ptr %p0, ptr %a1 store i64 %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic3906, label %ok3907 -panic3906: - call void @finch_panic(ptr @.str.2426, i64 1607, ptr @.str.2427) + br i1 %t4, label %panic4126, label %ok4127 +panic4126: + call void @finch_panic(ptr @.str.2513, i64 1762, ptr @.str.2514) unreachable -ok3907: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 24 +ok4127: + %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 25 %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 %panic3908, label %ok3909 -panic3908: - call void @finch_panic(ptr @.str.2428, i64 1607, ptr @.str.2429) + br i1 %t8, label %panic4128, label %ok4129 +panic4128: + call void @finch_panic(ptr @.str.2515, i64 1762, ptr @.str.2516) unreachable -ok3909: - %t9 = getelementptr inbounds %S.gen.Gen, ptr %t7, i32 0, i32 15 +ok4129: + %t9 = getelementptr inbounds %S.gen.Gen, ptr %t7, i32 0, i32 16 %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 %range3910, label %inrange3911 -range3910: - call void @finch_panic_index(ptr @.str.2430, i64 1607, i64 %t10, i64 %t12) + br i1 %t13, label %range4130, label %inrange4131 +range4130: + call void @finch_panic_index(ptr @.str.2517, i64 1762, i64 %t10, i64 %t12) unreachable -inrange3911: +inrange4131: %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 @@ -36718,14 +42731,14 @@ inrange3911: 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.missing3912, label %map.found3913 -map.missing3912: + br i1 %t20, label %map.missing4132, label %map.found4133 +map.missing4132: 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.2431, i64 1607, ptr %a21) + call void @finch_map_missing(ptr @.str.2518, i64 1762, ptr %a21) unreachable -map.found3913: +map.found4133: %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 @@ -36737,21 +42750,21 @@ map.found3913: store %S.cimport.CStruct %t30, ptr %a31 %t32 = load ptr, ptr %a1 %t33 = icmp eq ptr %t32, null - br i1 %t33, label %panic3917, label %ok3918 -panic3917: - call void @finch_panic(ptr @.str.2432, i64 1608, ptr @.str.2433) + br i1 %t33, label %panic4137, label %ok4138 +panic4137: + call void @finch_panic(ptr @.str.2519, i64 1763, ptr @.str.2520) unreachable -ok3918: - %t34 = getelementptr inbounds %S.gen.Gen, ptr %t32, i32 0, i32 15 +ok4138: + %t34 = getelementptr inbounds %S.gen.Gen, ptr %t32, i32 0, i32 16 %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 %range3919, label %inrange3920 -range3919: - call void @finch_panic_index(ptr @.str.2434, i64 1608, i64 %t35, i64 %t37) + br i1 %t38, label %range4139, label %inrange4140 +range4139: + call void @finch_panic_index(ptr @.str.2521, i64 1763, i64 %t35, i64 %t37) unreachable -inrange3920: +inrange4140: %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 @@ -36760,24 +42773,24 @@ inrange3920: 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.cond3921 -each.cond3921: + br label %each.cond4141 +each.cond4141: %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.body3922, label %each.end3924 -each.body3922: + br i1 %t49, label %each.body4142, label %each.end4144 +each.body4142: %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 %then3925, label %endif3927 -then3925: - br label %each.step3923 -endif3927: + br i1 %t55, label %then4145, label %endif4147 +then4145: + br label %each.step4143 +endif4147: %t56 = load ptr, ptr %a1 %t57 = getelementptr inbounds %S.cimport.CField, ptr %a53, i32 0, i32 1 %t58 = load %S.ast.Type, ptr %t57 @@ -36786,11 +42799,11 @@ endif3927: %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.2435, i64 6, i64 0 }, ptr %a64 + store { ptr, i64, i64 } { ptr @.str.2522, 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 %then3928, label %endif3930 -then3928: + br i1 %t66, label %then4148, label %endif4150 +then4148: %t67 = load ptr, ptr %a1 %t68 = load ptr, ptr %a1 %t69 = getelementptr inbounds %S.ast.Type, ptr %a60, i32 0, i32 3 @@ -36799,14 +42812,14 @@ then3928: %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 %endif3930 -endif3930: + br label %endif4150 +endif4150: %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 %then3931, label %endif3933 -then3931: + br i1 %t77, label %then4151, label %endif4153 +then4151: %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 @@ -36814,373 +42827,398 @@ then3931: %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.2436, i64 1, i64 0 }, ptr %a86 + store { ptr, i64, i64 } { ptr @.str.2523, 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.2437, 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 - %t94 = add i64 %t93, 1 - call void @finch_arr_reserve(ptr %a43, i64 %t94, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t95 = load ptr, ptr %a43 - %t96 = getelementptr inbounds { ptr, i64, i64 }, ptr %t95, i64 %t93 - store { ptr, i64, i64 } %t92, ptr %t96 - store i64 %t94, ptr %t78 - br label %endif3933 -endif3933: - %t97 = load ptr, ptr %a1 - %t98 = icmp eq ptr %t97, null - br i1 %t98, label %panic3934, label %ok3935 -panic3934: - call void @finch_panic(ptr @.str.2438, i64 1622, ptr @.str.2439) + store { ptr, i64, i64 } %t84, ptr %a88 + call void @finch_str_drop(ptr %a88) + %t89 = load { ptr, i64, i64 }, ptr %a85 + store { ptr, i64, i64 } %t89, ptr %a91 + store { ptr, i64, i64 } { ptr @.str.2524, i64 6, i64 0 }, ptr %a92 + call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92) + store { ptr, i64, i64 } %t89, ptr %a93 + call void @finch_str_drop(ptr %a93) + %t94 = load { ptr, i64, i64 }, ptr %a90 + %t95 = load i64, ptr %t78 + %t96 = add i64 %t95, 1 + call void @finch_arr_reserve(ptr %a43, i64 %t96, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t97 = load ptr, ptr %a43 + %t98 = getelementptr inbounds { ptr, i64, i64 }, ptr %t97, i64 %t95 + store { ptr, i64, i64 } %t94, ptr %t98 + store i64 %t96, ptr %t78 + br label %endif4153 +endif4153: + %t99 = load ptr, ptr %a1 + %t100 = icmp eq ptr %t99, null + br i1 %t100, label %panic4154, label %ok4155 +panic4154: + call void @finch_panic(ptr @.str.2525, i64 1777, ptr @.str.2526) unreachable -ok3935: - %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 %range3936, label %inrange3937 -range3936: - call void @finch_panic_index(ptr @.str.2440, i64 1622, i64 %t100, i64 %t102) +ok4155: + %t101 = getelementptr inbounds %S.gen.Gen, ptr %t99, i32 0, i32 16 + %t102 = load i64, ptr %a2 + %t103 = load { ptr, i64, i64 }, ptr %t101 + %t104 = extractvalue { ptr, i64, i64 } %t103, 1 + %t105 = icmp uge i64 %t102, %t104 + br i1 %t105, label %range4156, label %inrange4157 +range4156: + call void @finch_panic_index(ptr @.str.2527, i64 1777, i64 %t102, i64 %t104) unreachable -inrange3937: - %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 - %t107 = getelementptr inbounds { ptr, i64, i64 }, ptr %t106, i32 0, i32 1 - %t108 = getelementptr inbounds %S.cimport.CField, ptr %a53, i32 0, i32 0 - %t109 = load { ptr, i64, i64 }, ptr %t108 - store { ptr, i64, i64 } %t109, ptr %a110 - call void @finch_str_copy(ptr %a111, ptr %a110) - %t112 = load { ptr, i64, i64 }, ptr %a111 - %t113 = load i64, ptr %t107 - %t114 = add i64 %t113, 1 - call void @finch_arr_reserve(ptr %t106, i64 %t114, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t115 = load ptr, ptr %t106 - %t116 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 %t113 - store { ptr, i64, i64 } %t112, ptr %t116 - store i64 %t114, ptr %t107 - %t117 = load ptr, ptr %a1 - %t118 = icmp eq ptr %t117, null - br i1 %t118, label %panic3938, label %ok3939 -panic3938: - call void @finch_panic(ptr @.str.2441, i64 1623, ptr @.str.2442) +inrange4157: + %t106 = extractvalue { ptr, i64, i64 } %t103, 0 + %t107 = getelementptr inbounds %S.gen.StructDef, ptr %t106, i64 %t102 + %t108 = getelementptr inbounds %S.gen.StructDef, ptr %t107, i32 0, i32 11 + %t109 = getelementptr inbounds { ptr, i64, i64 }, ptr %t108, i32 0, i32 1 + %t110 = getelementptr inbounds %S.cimport.CField, ptr %a53, i32 0, i32 0 + %t111 = load { ptr, i64, i64 }, ptr %t110 + 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 %t109 + %t116 = add i64 %t115, 1 + call void @finch_arr_reserve(ptr %t108, i64 %t116, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t117 = load ptr, ptr %t108 + %t118 = getelementptr inbounds { ptr, i64, i64 }, ptr %t117, i64 %t115 + store { ptr, i64, i64 } %t114, ptr %t118 + store i64 %t116, ptr %t109 + %t119 = load ptr, ptr %a1 + %t120 = icmp eq ptr %t119, null + br i1 %t120, label %panic4158, label %ok4159 +panic4158: + call void @finch_panic(ptr @.str.2528, i64 1778, ptr @.str.2529) unreachable -ok3939: - %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 %range3940, label %inrange3941 -range3940: - call void @finch_panic_index(ptr @.str.2443, i64 1623, i64 %t120, i64 %t122) +ok4159: + %t121 = getelementptr inbounds %S.gen.Gen, ptr %t119, i32 0, i32 16 + %t122 = load i64, ptr %a2 + %t123 = load { ptr, i64, i64 }, ptr %t121 + %t124 = extractvalue { ptr, i64, i64 } %t123, 1 + %t125 = icmp uge i64 %t122, %t124 + br i1 %t125, label %range4160, label %inrange4161 +range4160: + call void @finch_panic_index(ptr @.str.2530, i64 1778, i64 %t122, i64 %t124) unreachable -inrange3941: - %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 - %t127 = getelementptr inbounds { ptr, i64, i64 }, ptr %t126, i32 0, i32 1 - %t128 = load %S.ast.Type, ptr %a60 - store %S.ast.Type %t128, ptr %a129 - call void @finch.copy.S_ast_Type(ptr %a130, ptr %a129) - %t131 = load %S.ast.Type, ptr %a130 - %t132 = load i64, ptr %t127 - %t133 = add i64 %t132, 1 - call void @finch_arr_reserve(ptr %t126, i64 %t133, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t134 = load ptr, ptr %t126 - %t135 = getelementptr inbounds %S.ast.Type, ptr %t134, i64 %t132 - store %S.ast.Type %t131, ptr %t135 - store i64 %t133, ptr %t127 - %t136 = load ptr, ptr %a1 - %t137 = icmp eq ptr %t136, null - br i1 %t137, label %panic3942, label %ok3943 -panic3942: - call void @finch_panic(ptr @.str.2444, i64 1624, ptr @.str.2445) +inrange4161: + %t126 = extractvalue { ptr, i64, i64 } %t123, 0 + %t127 = getelementptr inbounds %S.gen.StructDef, ptr %t126, i64 %t122 + %t128 = getelementptr inbounds %S.gen.StructDef, ptr %t127, i32 0, i32 12 + %t129 = getelementptr inbounds { ptr, i64, i64 }, ptr %t128, i32 0, i32 1 + %t130 = load %S.ast.Type, ptr %a60 + store %S.ast.Type %t130, ptr %a131 + call void @finch.copy.S_ast_Type(ptr %a132, ptr %a131) + %t133 = load %S.ast.Type, ptr %a132 + %t134 = load i64, ptr %t129 + %t135 = add i64 %t134, 1 + call void @finch_arr_reserve(ptr %t128, i64 %t135, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) + %t136 = load ptr, ptr %t128 + %t137 = getelementptr inbounds %S.ast.Type, ptr %t136, i64 %t134 + store %S.ast.Type %t133, ptr %t137 + store i64 %t135, ptr %t129 + %t138 = load ptr, ptr %a1 + %t139 = icmp eq ptr %t138, null + br i1 %t139, label %panic4162, label %ok4163 +panic4162: + call void @finch_panic(ptr @.str.2531, i64 1779, ptr @.str.2532) unreachable -ok3943: - %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 %range3944, label %inrange3945 -range3944: - call void @finch_panic_index(ptr @.str.2446, i64 1624, i64 %t139, i64 %t141) +ok4163: + %t140 = getelementptr inbounds %S.gen.Gen, ptr %t138, i32 0, i32 16 + %t141 = load i64, ptr %a2 + %t142 = load { ptr, i64, i64 }, ptr %t140 + %t143 = extractvalue { ptr, i64, i64 } %t142, 1 + %t144 = icmp uge i64 %t141, %t143 + br i1 %t144, label %range4164, label %inrange4165 +range4164: + call void @finch_panic_index(ptr @.str.2533, i64 1779, i64 %t141, i64 %t143) unreachable -inrange3945: - %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 - %t146 = getelementptr inbounds { ptr, i64, i64 }, ptr %t145, i32 0, i32 1 - %t147 = getelementptr inbounds { ptr, i64, i64 }, ptr %a43, i32 0, i32 1 - %t148 = load i64, ptr %t147 - %t149 = load i64, ptr %t146 - %t150 = add i64 %t149, 1 - call void @finch_arr_reserve(ptr %t145, i64 %t150, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t151 = load ptr, ptr %t145 - %t152 = getelementptr inbounds i64, ptr %t151, i64 %t149 - store i64 %t148, ptr %t152 - store i64 %t150, ptr %t146 - %t153 = load ptr, ptr %a1 - %t154 = icmp eq ptr %t153, null - br i1 %t154, label %panic3946, label %ok3947 -panic3946: - call void @finch_panic(ptr @.str.2447, i64 1625, ptr @.str.2448) +inrange4165: + %t145 = extractvalue { ptr, i64, i64 } %t142, 0 + %t146 = getelementptr inbounds %S.gen.StructDef, ptr %t145, i64 %t141 + %t147 = getelementptr inbounds %S.gen.StructDef, ptr %t146, i32 0, i32 3 + %t148 = getelementptr inbounds { ptr, i64, i64 }, ptr %t147, i32 0, i32 1 + %t149 = getelementptr inbounds { ptr, i64, i64 }, ptr %a43, i32 0, i32 1 + %t150 = load i64, ptr %t149 + %t151 = load i64, ptr %t148 + %t152 = add i64 %t151, 1 + call void @finch_arr_reserve(ptr %t147, i64 %t152, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) + %t153 = load ptr, ptr %t147 + %t154 = getelementptr inbounds i64, ptr %t153, i64 %t151 + store i64 %t150, ptr %t154 + store i64 %t152, ptr %t148 + %t155 = load ptr, ptr %a1 + %t156 = icmp eq ptr %t155, null + br i1 %t156, label %panic4166, label %ok4167 +panic4166: + call void @finch_panic(ptr @.str.2534, i64 1780, ptr @.str.2535) unreachable -ok3947: - %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 %range3948, label %inrange3949 -range3948: - call void @finch_panic_index(ptr @.str.2449, i64 1625, i64 %t156, i64 %t158) +ok4167: + %t157 = getelementptr inbounds %S.gen.Gen, ptr %t155, i32 0, i32 16 + %t158 = load i64, ptr %a2 + %t159 = load { ptr, i64, i64 }, ptr %t157 + %t160 = extractvalue { ptr, i64, i64 } %t159, 1 + %t161 = icmp uge i64 %t158, %t160 + br i1 %t161, label %range4168, label %inrange4169 +range4168: + call void @finch_panic_index(ptr @.str.2536, i64 1780, i64 %t158, i64 %t160) unreachable -inrange3949: - %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 - %t163 = getelementptr inbounds { ptr, i64, i64 }, ptr %t162, i32 0, i32 1 - %t164 = getelementptr inbounds %S.cimport.CField, ptr %a53, i32 0, i32 2 - %t165 = load i64, ptr %t164 - %t166 = load i64, ptr %t163 - %t167 = add i64 %t166, 1 - call void @finch_arr_reserve(ptr %t162, i64 %t167, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t168 = load ptr, ptr %t162 - %t169 = getelementptr inbounds i64, ptr %t168, i64 %t166 - store i64 %t165, ptr %t169 - store i64 %t167, ptr %t163 - %t170 = getelementptr inbounds { ptr, i64, i64 }, ptr %a43, i32 0, i32 1 - %t171 = load ptr, ptr %a1 - %t172 = load %S.ast.Type, ptr %a60 - %t173 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t171, %S.ast.Type %t172) - %t174 = load i64, ptr %t170 - %t175 = add i64 %t174, 1 - call void @finch_arr_reserve(ptr %a43, i64 %t175, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t176 = load ptr, ptr %a43 - %t177 = getelementptr inbounds { ptr, i64, i64 }, ptr %t176, i64 %t174 - store { ptr, i64, i64 } %t173, ptr %t177 - store i64 %t175, ptr %t170 - %t178 = getelementptr inbounds %S.cimport.CField, ptr %a53, i32 0, i32 2 - %t179 = load i64, ptr %t178 - %t180 = getelementptr inbounds %S.cimport.CField, ptr %a53, i32 0, i32 3 +inrange4169: + %t162 = extractvalue { ptr, i64, i64 } %t159, 0 + %t163 = getelementptr inbounds %S.gen.StructDef, ptr %t162, i64 %t158 + %t164 = getelementptr inbounds %S.gen.StructDef, ptr %t163, i32 0, i32 4 + %t165 = getelementptr inbounds { ptr, i64, i64 }, ptr %t164, i32 0, i32 1 + %t166 = getelementptr inbounds %S.cimport.CField, ptr %a53, i32 0, i32 2 + %t167 = load i64, ptr %t166 + %t168 = load i64, ptr %t165 + %t169 = add i64 %t168, 1 + call void @finch_arr_reserve(ptr %t164, i64 %t169, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) + %t170 = load ptr, ptr %t164 + %t171 = getelementptr inbounds i64, ptr %t170, i64 %t168 + store i64 %t167, ptr %t171 + store i64 %t169, ptr %t165 + %t172 = getelementptr inbounds { ptr, i64, i64 }, ptr %a43, i32 0, i32 1 + %t173 = load ptr, ptr %a1 + %t174 = load %S.ast.Type, ptr %a60 + %t175 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t173, %S.ast.Type %t174) + %t176 = load i64, ptr %t172 + %t177 = add i64 %t176, 1 + call void @finch_arr_reserve(ptr %a43, i64 %t177, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t178 = load ptr, ptr %a43 + %t179 = getelementptr inbounds { ptr, i64, i64 }, ptr %t178, i64 %t176 + store { ptr, i64, i64 } %t175, ptr %t179 + store i64 %t177, ptr %t172 + %t180 = getelementptr inbounds %S.cimport.CField, ptr %a53, i32 0, i32 2 %t181 = load i64, ptr %t180 - %t182 = add i64 %t179, %t181 - store i64 %t182, ptr %a42 - br label %each.step3923 -each.step3923: - %t183 = load i64, ptr %a45 - %t184 = add i64 %t183, 1 - store i64 %t184, ptr %a45 - br label %each.cond3921 -each.end3924: - %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 %then3950, label %endif3952 -then3950: - %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 - %t192 = load i64, ptr %a42 - %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.2450, 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.2451, 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 - %t205 = add i64 %t204, 1 - call void @finch_arr_reserve(ptr %a43, i64 %t205, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t206 = load ptr, ptr %a43 - %t207 = getelementptr inbounds { ptr, i64, i64 }, ptr %t206, i64 %t204 - store { ptr, i64, i64 } %t203, ptr %t207 - store i64 %t205, ptr %t189 - br label %endif3952 -endif3952: - %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 %panic3953, label %ok3954 -panic3953: - call void @finch_panic(ptr @.str.2452, i64 1632, ptr @.str.2453) + %t182 = getelementptr inbounds %S.cimport.CField, ptr %a53, i32 0, i32 3 + %t183 = load i64, ptr %t182 + %t184 = add i64 %t181, %t183 + store i64 %t184, ptr %a42 + call void @finch.drop.S_ast_Type(ptr %a60) + br label %each.step4143 +each.step4143: + %t185 = load i64, ptr %a45 + %t186 = add i64 %t185, 1 + store i64 %t186, ptr %a45 + br label %each.cond4141 +each.end4144: + %t187 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 2 + %t188 = load i64, ptr %t187 + %t189 = load i64, ptr %a42 + %t190 = icmp sgt i64 %t188, %t189 + br i1 %t190, label %then4170, label %endif4172 +then4170: + %t191 = getelementptr inbounds { ptr, i64, i64 }, ptr %a43, i32 0, i32 1 + %t192 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 2 + %t193 = load i64, ptr %t192 + %t194 = load i64, ptr %a42 + %t195 = sub i64 %t193, %t194 + call void @finch_str_from_int(ptr %a196, i64 %t195) + %t197 = load { ptr, i64, i64 }, ptr %a196 + store { ptr, i64, i64 } { ptr @.str.2537, i64 1, i64 0 }, ptr %a199 + store { ptr, i64, i64 } %t197, ptr %a200 + call void @finch_str_concat(ptr %a198, ptr %a199, ptr %a200) + store { ptr, i64, i64 } %t197, ptr %a201 + call void @finch_str_drop(ptr %a201) + %t202 = load { ptr, i64, i64 }, ptr %a198 + store { ptr, i64, i64 } %t202, ptr %a204 + store { ptr, i64, i64 } { ptr @.str.2538, i64 6, i64 0 }, ptr %a205 + call void @finch_str_concat(ptr %a203, ptr %a204, ptr %a205) + store { ptr, i64, i64 } %t202, ptr %a206 + call void @finch_str_drop(ptr %a206) + %t207 = load { ptr, i64, i64 }, ptr %a203 + %t208 = load i64, ptr %t191 + %t209 = add i64 %t208, 1 + call void @finch_arr_reserve(ptr %a43, i64 %t209, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t210 = load ptr, ptr %a43 + %t211 = getelementptr inbounds { ptr, i64, i64 }, ptr %t210, i64 %t208 + store { ptr, i64, i64 } %t207, ptr %t211 + store i64 %t209, ptr %t191 + br label %endif4172 +endif4172: + %t212 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 4 + %t213 = load { ptr, i64, i64 }, ptr %t212 + %t214 = load ptr, ptr %a1 + %t215 = icmp eq ptr %t214, null + br i1 %t215, label %panic4173, label %ok4174 +panic4173: + call void @finch_panic(ptr @.str.2539, i64 1787, ptr @.str.2540) unreachable -ok3954: - %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 %range3955, label %inrange3956 -range3955: - call void @finch_panic_index(ptr @.str.2454, i64 1632, i64 %t213, i64 %t215) +ok4174: + %t216 = getelementptr inbounds %S.gen.Gen, ptr %t214, i32 0, i32 16 + %t217 = load i64, ptr %a2 + %t218 = load { ptr, i64, i64 }, ptr %t216 + %t219 = extractvalue { ptr, i64, i64 } %t218, 1 + %t220 = icmp uge i64 %t217, %t219 + br i1 %t220, label %range4175, label %inrange4176 +range4175: + call void @finch_panic_index(ptr @.str.2541, i64 1787, i64 %t217, i64 %t219) unreachable -inrange3956: - %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 - store { ptr, i64, i64 } %t209, ptr %a220 - call void @finch_str_copy(ptr %a221, ptr %a220) - %t222 = load { ptr, i64, i64 }, ptr %a221 - 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.from3957 -logic.from3957: - br i1 %t224, label %logic.rhs3958, label %logic.end3959 -logic.rhs3958: - %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.rend3960 -logic.rend3960: - br label %logic.end3959 -logic.end3959: - %t229 = phi i1 [ false, %logic.from3957 ], [ %t228, %logic.rend3960 ] - br i1 %t229, label %then3961, label %endif3963 -then3961: - %t230 = load ptr, ptr %a1 - %t231 = icmp eq ptr %t230, null - br i1 %t231, label %panic3964, label %ok3965 -panic3964: - call void @finch_panic(ptr @.str.2456, i64 1634, ptr @.str.2457) +inrange4176: + %t221 = extractvalue { ptr, i64, i64 } %t218, 0 + %t222 = getelementptr inbounds %S.gen.StructDef, ptr %t221, i64 %t217 + %t223 = getelementptr inbounds %S.gen.StructDef, ptr %t222, i32 0, i32 8 + store { ptr, i64, i64 } %t213, ptr %a224 + call void @finch_str_copy(ptr %a225, ptr %a224) + %t226 = load { ptr, i64, i64 }, ptr %a225 + %t227 = load { ptr, i64, i64 }, ptr %t223 + store { ptr, i64, i64 } %t226, ptr %t223 + store { ptr, i64, i64 } %t227, ptr %a228 + call void @finch_str_drop(ptr %a228) + %t229 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 5 + %t230 = load i1, ptr %t229 + br label %logic.from4177 +logic.from4177: + br i1 %t230, label %logic.rhs4178, label %logic.end4179 +logic.rhs4178: + %t231 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 4 + %t232 = getelementptr inbounds { ptr, i64, i64 }, ptr %t231, i32 0, i32 1 + %t233 = load i64, ptr %t232 + %t234 = icmp eq i64 %t233, 0 + br label %logic.rend4180 +logic.rend4180: + br label %logic.end4179 +logic.end4179: + %t235 = phi i1 [ false, %logic.from4177 ], [ %t234, %logic.rend4180 ] + br i1 %t235, label %then4181, label %endif4183 +then4181: + %t236 = load ptr, ptr %a1 + %t237 = icmp eq ptr %t236, null + br i1 %t237, label %panic4184, label %ok4185 +panic4184: + call void @finch_panic(ptr @.str.2543, i64 1789, ptr @.str.2544) unreachable -ok3965: - %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 %range3966, label %inrange3967 -range3966: - call void @finch_panic_index(ptr @.str.2458, i64 1634, i64 %t233, i64 %t235) +ok4185: + %t238 = getelementptr inbounds %S.gen.Gen, ptr %t236, i32 0, i32 16 + %t239 = load i64, ptr %a2 + %t240 = load { ptr, i64, i64 }, ptr %t238 + %t241 = extractvalue { ptr, i64, i64 } %t240, 1 + %t242 = icmp uge i64 %t239, %t241 + br i1 %t242, label %range4186, label %inrange4187 +range4186: + call void @finch_panic_index(ptr @.str.2545, i64 1789, i64 %t239, i64 %t241) unreachable -inrange3967: - %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.2455, i64 49, i64 0 }, ptr %t239 - br label %endif3963 -endif3963: - %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 %panic3968, label %ok3969 -panic3968: - call void @finch_panic(ptr @.str.2459, i64 1636, ptr @.str.2460) +inrange4187: + %t243 = extractvalue { ptr, i64, i64 } %t240, 0 + %t244 = getelementptr inbounds %S.gen.StructDef, ptr %t243, i64 %t239 + %t245 = getelementptr inbounds %S.gen.StructDef, ptr %t244, i32 0, i32 8 + %t246 = load { ptr, i64, i64 }, ptr %t245 + store { ptr, i64, i64 } { ptr @.str.2542, i64 49, i64 0 }, ptr %t245 + store { ptr, i64, i64 } %t246, ptr %a247 + call void @finch_str_drop(ptr %a247) + br label %endif4183 +endif4183: + %t248 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 2 + %t249 = load i64, ptr %t248 + %t250 = load ptr, ptr %a1 + %t251 = icmp eq ptr %t250, null + br i1 %t251, label %panic4188, label %ok4189 +panic4188: + call void @finch_panic(ptr @.str.2546, i64 1791, ptr @.str.2547) unreachable -ok3969: - %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 %range3970, label %inrange3971 -range3970: - call void @finch_panic_index(ptr @.str.2461, i64 1636, i64 %t245, i64 %t247) +ok4189: + %t252 = getelementptr inbounds %S.gen.Gen, ptr %t250, i32 0, i32 16 + %t253 = load i64, ptr %a2 + %t254 = load { ptr, i64, i64 }, ptr %t252 + %t255 = extractvalue { ptr, i64, i64 } %t254, 1 + %t256 = icmp uge i64 %t253, %t255 + br i1 %t256, label %range4190, label %inrange4191 +range4190: + call void @finch_panic_index(ptr @.str.2548, i64 1791, i64 %t253, i64 %t255) unreachable -inrange3971: - %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 - store i64 %t241, ptr %t251 - %t252 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 3 - %t253 = load i64, ptr %t252 - %t254 = load ptr, ptr %a1 - %t255 = icmp eq ptr %t254, null - br i1 %t255, label %panic3972, label %ok3973 -panic3972: - call void @finch_panic(ptr @.str.2462, i64 1637, ptr @.str.2463) +inrange4191: + %t257 = extractvalue { ptr, i64, i64 } %t254, 0 + %t258 = getelementptr inbounds %S.gen.StructDef, ptr %t257, i64 %t253 + %t259 = getelementptr inbounds %S.gen.StructDef, ptr %t258, i32 0, i32 9 + store i64 %t249, ptr %t259 + %t260 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 3 + %t261 = load i64, ptr %t260 + %t262 = load ptr, ptr %a1 + %t263 = icmp eq ptr %t262, null + br i1 %t263, label %panic4192, label %ok4193 +panic4192: + call void @finch_panic(ptr @.str.2549, i64 1792, ptr @.str.2550) unreachable -ok3973: - %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 %range3974, label %inrange3975 -range3974: - call void @finch_panic_index(ptr @.str.2464, i64 1637, i64 %t257, i64 %t259) +ok4193: + %t264 = getelementptr inbounds %S.gen.Gen, ptr %t262, i32 0, i32 16 + %t265 = load i64, ptr %a2 + %t266 = load { ptr, i64, i64 }, ptr %t264 + %t267 = extractvalue { ptr, i64, i64 } %t266, 1 + %t268 = icmp uge i64 %t265, %t267 + br i1 %t268, label %range4194, label %inrange4195 +range4194: + call void @finch_panic_index(ptr @.str.2551, i64 1792, i64 %t265, i64 %t267) unreachable -inrange3975: - %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 %panic3976, label %ok3977 -panic3976: - call void @finch_panic(ptr @.str.2465, i64 1638, ptr @.str.2466) +inrange4195: + %t269 = extractvalue { ptr, i64, i64 } %t266, 0 + %t270 = getelementptr inbounds %S.gen.StructDef, ptr %t269, i64 %t265 + %t271 = getelementptr inbounds %S.gen.StructDef, ptr %t270, i32 0, i32 10 + store i64 %t261, ptr %t271 + %t272 = load ptr, ptr %a1 + %t273 = icmp eq ptr %t272, null + br i1 %t273, label %panic4196, label %ok4197 +panic4196: + call void @finch_panic(ptr @.str.2552, i64 1793, ptr @.str.2553) unreachable -ok3977: - %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 %range3978, label %inrange3979 -range3978: - call void @finch_panic_index(ptr @.str.2467, i64 1638, i64 %t267, i64 %t269) +ok4197: + %t274 = getelementptr inbounds %S.gen.Gen, ptr %t272, i32 0, i32 16 + %t275 = load i64, ptr %a2 + %t276 = load { ptr, i64, i64 }, ptr %t274 + %t277 = extractvalue { ptr, i64, i64 } %t276, 1 + %t278 = icmp uge i64 %t275, %t277 + br i1 %t278, label %range4198, label %inrange4199 +range4198: + call void @finch_panic_index(ptr @.str.2554, i64 1793, i64 %t275, i64 %t277) unreachable -inrange3979: - %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 %panic3980, label %ok3981 -panic3980: - call void @finch_panic(ptr @.str.2468, i64 1639, ptr @.str.2469) +inrange4199: + %t279 = extractvalue { ptr, i64, i64 } %t276, 0 + %t280 = getelementptr inbounds %S.gen.StructDef, ptr %t279, i64 %t275 + %t281 = getelementptr inbounds %S.gen.StructDef, ptr %t280, i32 0, i32 15 + store i64 2, ptr %t281 + %t282 = load ptr, ptr %a1 + %t283 = icmp eq ptr %t282, null + br i1 %t283, label %panic4200, label %ok4201 +panic4200: + call void @finch_panic(ptr @.str.2555, i64 1794, ptr @.str.2556) unreachable -ok3981: - %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.2470, 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.2471, 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.2472, 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 - store { ptr, i64, i64 } %t291, ptr %a294 +ok4201: + %t284 = getelementptr inbounds %S.gen.Gen, ptr %t282, i32 0, i32 2 + %t285 = getelementptr inbounds { ptr, i64, i64 }, ptr %t284, i32 0, i32 1 + %t286 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 0 + %t287 = load { ptr, i64, i64 }, ptr %t286 + store { ptr, i64, i64 } { ptr @.str.2557, i64 5, i64 0 }, 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.2558, i64 10, i64 0 }, ptr %a294 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.2473, 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 - %t301 = add i64 %t300, 1 - call void @finch_arr_reserve(ptr %t276, i64 %t301, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t302 = load ptr, ptr %t276 - %t303 = getelementptr inbounds { ptr, i64, i64 }, ptr %t302, i64 %t300 - store { ptr, i64, i64 } %t299, ptr %t303 - store i64 %t301, ptr %t277 + store { ptr, i64, i64 } %t291, ptr %a295 + call void @finch_str_drop(ptr %a295) + %t296 = load { ptr, i64, i64 }, ptr %a292 + %t297 = getelementptr inbounds { ptr, i64, i64 }, ptr %a43, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.2559, i64 2, i64 0 }, ptr %a298 + call void @finch_str_join(ptr %a299, ptr %a43, ptr %a298) + %t300 = load { ptr, i64, i64 }, ptr %a299 + store { ptr, i64, i64 } %t296, ptr %a302 + store { ptr, i64, i64 } %t300, ptr %a303 + call void @finch_str_concat(ptr %a301, ptr %a302, ptr %a303) + store { ptr, i64, i64 } %t296, ptr %a304 + call void @finch_str_drop(ptr %a304) + store { ptr, i64, i64 } %t300, ptr %a305 + call void @finch_str_drop(ptr %a305) + %t306 = load { ptr, i64, i64 }, ptr %a301 + store { ptr, i64, i64 } %t306, ptr %a308 + store { ptr, i64, i64 } { ptr @.str.2560, i64 2, i64 0 }, ptr %a309 + call void @finch_str_concat(ptr %a307, ptr %a308, ptr %a309) + store { ptr, i64, i64 } %t306, ptr %a310 + call void @finch_str_drop(ptr %a310) + %t311 = load { ptr, i64, i64 }, ptr %a307 + %t312 = load i64, ptr %t285 + %t313 = add i64 %t312, 1 + call void @finch_arr_reserve(ptr %t284, i64 %t313, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t314 = load ptr, ptr %t284 + %t315 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i64 %t312 + store { ptr, i64, i64 } %t311, ptr %t315 + store i64 %t313, ptr %t285 + call void @finch.drop.arr_str(ptr %a43) + call void @finch.drop.S_cimport_CStruct(ptr %a31) ret void } @@ -37199,114 +43237,121 @@ entry: %a66 = alloca { ptr, i64, i64 }, align 16 %a81 = alloca { ptr, i64, i64 }, align 16 %a82 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = 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 + %a85 = alloca { ptr, i64, i64 }, align 16 + %a100 = alloca { ptr, i64, i64 }, align 16 + %a101 = alloca { ptr, i64, i64 }, align 16 + %a104 = 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 + %a120 = alloca { ptr, i64, i64 }, align 16 + %a121 = alloca { ptr, i64, i64 }, align 16 + %a122 = alloca { ptr, i64, i64 }, align 16 + %a123 = alloca { ptr, i64, i64 }, align 16 %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 %a136 = alloca { ptr, i64, i64 }, align 16 %a137 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 + %a140 = 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 + %a154 = alloca { ptr, i64, i64 }, align 16 + %a155 = alloca { ptr, i64, i64 }, align 16 + %a158 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store i64 %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic3982, label %ok3983 -panic3982: - call void @finch_panic(ptr @.str.2474, i64 1643, ptr @.str.2475) + br i1 %t4, label %panic4202, label %ok4203 +panic4202: + call void @finch_panic(ptr @.str.2561, i64 1798, ptr @.str.2562) unreachable -ok3983: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 15 +ok4203: + %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 16 %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 %range3984, label %inrange3985 -range3984: - call void @finch_panic_index(ptr @.str.2476, i64 1643, i64 %t6, i64 %t8) + br i1 %t9, label %range4204, label %inrange4205 +range4204: + call void @finch_panic_index(ptr @.str.2563, i64 1798, i64 %t6, i64 %t8) unreachable -inrange3985: +inrange4205: %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 %then3986, label %endif3988 -then3986: + br i1 %t14, label %then4206, label %endif4208 +then4206: ret void -endif3988: +endif4208: %t15 = load ptr, ptr %a1 %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic3989, label %ok3990 -panic3989: - call void @finch_panic(ptr @.str.2477, i64 1646, ptr @.str.2478) + br i1 %t16, label %panic4209, label %ok4210 +panic4209: + call void @finch_panic(ptr @.str.2564, i64 1801, ptr @.str.2565) unreachable -ok3990: - %t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 15 +ok4210: + %t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 16 %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 %range3991, label %inrange3992 -range3991: - call void @finch_panic_index(ptr @.str.2479, i64 1646, i64 %t18, i64 %t20) + br i1 %t21, label %range4211, label %inrange4212 +range4211: + call void @finch_panic_index(ptr @.str.2566, i64 1801, i64 %t18, i64 %t20) unreachable -inrange3992: +inrange4212: %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 %then3993, label %endif3995 -then3993: + br i1 %t25, label %then4213, label %endif4215 +then4213: %t26 = load ptr, ptr %a1 %t27 = load i64, ptr %a2 call void @finch.gen.resolveCStruct(ptr %t26, i64 %t27) ret void -endif3995: +endif4215: %t28 = load ptr, ptr %a1 %t29 = icmp eq ptr %t28, null - br i1 %t29, label %panic3996, label %ok3997 -panic3996: - call void @finch_panic(ptr @.str.2480, i64 1650, ptr @.str.2481) + br i1 %t29, label %panic4216, label %ok4217 +panic4216: + call void @finch_panic(ptr @.str.2567, i64 1805, ptr @.str.2568) unreachable -ok3997: - %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 15 +ok4217: + %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 16 %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 %range3998, label %inrange3999 -range3998: - call void @finch_panic_index(ptr @.str.2482, i64 1650, i64 %t31, i64 %t33) + br i1 %t34, label %range4218, label %inrange4219 +range4218: + call void @finch_panic_index(ptr @.str.2569, i64 1805, i64 %t31, i64 %t33) unreachable -inrange3999: +inrange4219: %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 %then4000, label %endif4002 -then4000: + br i1 %t40, label %then4220, label %endif4222 +then4220: %t41 = load ptr, ptr %a1 %t42 = load i64, ptr %a2 call void @finch.gen.resolveStructBody(ptr %t41, i64 %t42) ret void -endif4002: +endif4222: %t43 = load ptr, ptr %a1 %t44 = icmp eq ptr %t43, null - br i1 %t44, label %panic4003, label %ok4004 -panic4003: - call void @finch_panic(ptr @.str.2483, i64 1655, ptr @.str.2484) + br i1 %t44, label %panic4223, label %ok4224 +panic4223: + call void @finch_panic(ptr @.str.2570, i64 1810, ptr @.str.2571) unreachable -ok4004: - %t45 = getelementptr inbounds %S.gen.Gen, ptr %t43, i32 0, i32 17 +ok4224: + %t45 = getelementptr inbounds %S.gen.Gen, ptr %t43, i32 0, i32 18 %t46 = load { ptr, i64, i64 }, ptr %t45 store { ptr, i64, i64 } %t46, ptr %a47 call void @finch.copy.arr_str(ptr %a48, ptr %a47) @@ -37314,12 +43359,12 @@ ok4004: store { ptr, i64, i64 } %t49, ptr %a50 %t51 = load ptr, ptr %a1 %t52 = icmp eq ptr %t51, null - br i1 %t52, label %panic4005, label %ok4006 -panic4005: - call void @finch_panic(ptr @.str.2485, i64 1656, ptr @.str.2486) + br i1 %t52, label %panic4225, label %ok4226 +panic4225: + call void @finch_panic(ptr @.str.2572, i64 1811, ptr @.str.2573) unreachable -ok4006: - %t53 = getelementptr inbounds %S.gen.Gen, ptr %t51, i32 0, i32 18 +ok4226: + %t53 = getelementptr inbounds %S.gen.Gen, ptr %t51, i32 0, i32 19 %t54 = load { ptr, i64, i64 }, ptr %t53 store { ptr, i64, i64 } %t54, ptr %a55 call void @finch.copy.arr_S_ast_Type(ptr %a56, ptr %a55) @@ -37327,12 +43372,12 @@ ok4006: store { ptr, i64, i64 } %t57, ptr %a58 %t59 = load ptr, ptr %a1 %t60 = icmp eq ptr %t59, null - br i1 %t60, label %panic4007, label %ok4008 -panic4007: - call void @finch_panic(ptr @.str.2487, i64 1657, ptr @.str.2488) + br i1 %t60, label %panic4227, label %ok4228 +panic4227: + call void @finch_panic(ptr @.str.2574, i64 1812, ptr @.str.2575) unreachable -ok4008: - %t61 = getelementptr inbounds %S.gen.Gen, ptr %t59, i32 0, i32 19 +ok4228: + %t61 = getelementptr inbounds %S.gen.Gen, ptr %t59, i32 0, i32 20 %t62 = load { ptr, i64, i64 }, ptr %t61 store { ptr, i64, i64 } %t62, ptr %a63 call void @finch_str_copy(ptr %a64, ptr %a63) @@ -37340,150 +43385,173 @@ ok4008: store { ptr, i64, i64 } %t65, ptr %a66 %t67 = load ptr, ptr %a1 %t68 = icmp eq ptr %t67, null - br i1 %t68, label %panic4009, label %ok4010 -panic4009: - call void @finch_panic(ptr @.str.2489, i64 1658, ptr @.str.2490) + br i1 %t68, label %panic4229, label %ok4230 +panic4229: + call void @finch_panic(ptr @.str.2576, i64 1813, ptr @.str.2577) unreachable -ok4010: - %t69 = getelementptr inbounds %S.gen.Gen, ptr %t67, i32 0, i32 15 +ok4230: + %t69 = getelementptr inbounds %S.gen.Gen, ptr %t67, i32 0, i32 16 %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 %range4011, label %inrange4012 -range4011: - call void @finch_panic_index(ptr @.str.2491, i64 1658, i64 %t70, i64 %t72) + br i1 %t73, label %range4231, label %inrange4232 +range4231: + call void @finch_panic_index(ptr @.str.2578, i64 1813, i64 %t70, i64 %t72) unreachable -inrange4012: +inrange4232: %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 %panic4013, label %ok4014 -panic4013: - call void @finch_panic(ptr @.str.2492, i64 1658, ptr @.str.2493) + br i1 %t79, label %panic4233, label %ok4234 +panic4233: + call void @finch_panic(ptr @.str.2579, i64 1813, ptr @.str.2580) unreachable -ok4014: - %t80 = getelementptr inbounds %S.gen.Gen, ptr %t78, i32 0, i32 17 +ok4234: + %t80 = getelementptr inbounds %S.gen.Gen, ptr %t78, i32 0, i32 18 store { ptr, i64, i64 } %t77, ptr %a81 call void @finch.copy.arr_str(ptr %a82, ptr %a81) %t83 = load { ptr, i64, i64 }, ptr %a82 + %t84 = load { ptr, i64, i64 }, ptr %t80 store { ptr, i64, i64 } %t83, ptr %t80 - %t84 = load ptr, ptr %a1 - %t85 = icmp eq ptr %t84, null - br i1 %t85, label %panic4015, label %ok4016 -panic4015: - call void @finch_panic(ptr @.str.2494, i64 1659, ptr @.str.2495) + store { ptr, i64, i64 } %t84, ptr %a85 + call void @finch.drop.arr_str(ptr %a85) + %t86 = load ptr, ptr %a1 + %t87 = icmp eq ptr %t86, null + br i1 %t87, label %panic4235, label %ok4236 +panic4235: + call void @finch_panic(ptr @.str.2581, i64 1814, ptr @.str.2582) unreachable -ok4016: - %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 %range4017, label %inrange4018 -range4017: - call void @finch_panic_index(ptr @.str.2496, i64 1659, i64 %t87, i64 %t89) +ok4236: + %t88 = getelementptr inbounds %S.gen.Gen, ptr %t86, i32 0, i32 16 + %t89 = load i64, ptr %a2 + %t90 = load { ptr, i64, i64 }, ptr %t88 + %t91 = extractvalue { ptr, i64, i64 } %t90, 1 + %t92 = icmp uge i64 %t89, %t91 + br i1 %t92, label %range4237, label %inrange4238 +range4237: + call void @finch_panic_index(ptr @.str.2583, i64 1814, i64 %t89, i64 %t91) unreachable -inrange4018: - %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 %panic4019, label %ok4020 -panic4019: - call void @finch_panic(ptr @.str.2497, i64 1659, ptr @.str.2498) +inrange4238: + %t93 = extractvalue { ptr, i64, i64 } %t90, 0 + %t94 = getelementptr inbounds %S.gen.StructDef, ptr %t93, i64 %t89 + %t95 = getelementptr inbounds %S.gen.StructDef, ptr %t94, i32 0, i32 7 + %t96 = load { ptr, i64, i64 }, ptr %t95 + %t97 = load ptr, ptr %a1 + %t98 = icmp eq ptr %t97, null + br i1 %t98, label %panic4239, label %ok4240 +panic4239: + call void @finch_panic(ptr @.str.2584, i64 1814, ptr @.str.2585) unreachable -ok4020: - %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) - %t100 = load { ptr, i64, i64 }, ptr %a99 - store { ptr, i64, i64 } %t100, ptr %t97 - %t101 = load ptr, ptr %a1 - %t102 = icmp eq ptr %t101, null - br i1 %t102, label %panic4021, label %ok4022 -panic4021: - call void @finch_panic(ptr @.str.2500, i64 1660, ptr @.str.2501) +ok4240: + %t99 = getelementptr inbounds %S.gen.Gen, ptr %t97, i32 0, i32 19 + store { ptr, i64, i64 } %t96, ptr %a100 + call void @finch.copy.arr_S_ast_Type(ptr %a101, ptr %a100) + %t102 = load { ptr, i64, i64 }, ptr %a101 + %t103 = load { ptr, i64, i64 }, ptr %t99 + store { ptr, i64, i64 } %t102, ptr %t99 + store { ptr, i64, i64 } %t103, ptr %a104 + call void @finch.drop.arr_S_ast_Type(ptr %a104) + %t105 = load ptr, ptr %a1 + %t106 = icmp eq ptr %t105, null + br i1 %t106, label %panic4241, label %ok4242 +panic4241: + call void @finch_panic(ptr @.str.2587, i64 1815, ptr @.str.2588) unreachable -ok4022: - %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 %range4023, label %inrange4024 -range4023: - call void @finch_panic_index(ptr @.str.2502, i64 1660, i64 %t104, i64 %t106) +ok4242: + %t107 = getelementptr inbounds %S.gen.Gen, ptr %t105, i32 0, i32 16 + %t108 = load i64, ptr %a2 + %t109 = load { ptr, i64, i64 }, ptr %t107 + %t110 = extractvalue { ptr, i64, i64 } %t109, 1 + %t111 = icmp uge i64 %t108, %t110 + br i1 %t111, label %range4243, label %inrange4244 +range4243: + call void @finch_panic_index(ptr @.str.2589, i64 1815, i64 %t108, i64 %t110) unreachable -inrange4024: - %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.2499, 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.2503, i64 1, i64 0 }, ptr %a118 +inrange4244: + %t112 = extractvalue { ptr, i64, i64 } %t109, 0 + %t113 = getelementptr inbounds %S.gen.StructDef, ptr %t112, i64 %t108 + %t114 = getelementptr inbounds %S.gen.StructDef, ptr %t113, i32 0, i32 1 + %t115 = load { ptr, i64, i64 }, ptr %t114 + store { ptr, i64, i64 } { ptr @.str.2586, i64 17, 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 - %t120 = load ptr, ptr %a1 - %t121 = icmp eq ptr %t120, null - br i1 %t121, label %panic4025, label %ok4026 -panic4025: - call void @finch_panic(ptr @.str.2504, i64 1660, ptr @.str.2505) + store { ptr, i64, i64 } %t119, ptr %a121 + store { ptr, i64, i64 } { ptr @.str.2590, i64 1, i64 0 }, ptr %a122 + call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122) + store { ptr, i64, i64 } %t119, ptr %a123 + call void @finch_str_drop(ptr %a123) + %t124 = load { ptr, i64, i64 }, ptr %a120 + %t125 = load ptr, ptr %a1 + %t126 = icmp eq ptr %t125, null + br i1 %t126, label %panic4245, label %ok4246 +panic4245: + call void @finch_panic(ptr @.str.2591, i64 1815, ptr @.str.2592) unreachable -ok4026: - %t122 = getelementptr inbounds %S.gen.Gen, ptr %t120, i32 0, i32 19 - store { ptr, i64, i64 } %t119, ptr %t122 - %t123 = load ptr, ptr %a1 - %t124 = load i64, ptr %a2 - call void @finch.gen.resolveStructBody(ptr %t123, i64 %t124) - %t125 = load { ptr, i64, i64 }, ptr %a50 - %t126 = load ptr, ptr %a1 - %t127 = icmp eq ptr %t126, null - br i1 %t127, label %panic4027, label %ok4028 -panic4027: - call void @finch_panic(ptr @.str.2506, i64 1662, ptr @.str.2507) - unreachable -ok4028: - %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) - %t131 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } %t131, ptr %t128 - %t132 = load { ptr, i64, i64 }, ptr %a58 +ok4246: + %t127 = getelementptr inbounds %S.gen.Gen, ptr %t125, i32 0, i32 20 + %t128 = load { ptr, i64, i64 }, ptr %t127 + store { ptr, i64, i64 } %t124, ptr %t127 + store { ptr, i64, i64 } %t128, ptr %a129 + call void @finch_str_drop(ptr %a129) + %t130 = load ptr, ptr %a1 + %t131 = load i64, ptr %a2 + call void @finch.gen.resolveStructBody(ptr %t130, i64 %t131) + %t132 = load { ptr, i64, i64 }, ptr %a50 %t133 = load ptr, ptr %a1 %t134 = icmp eq ptr %t133, null - br i1 %t134, label %panic4029, label %ok4030 -panic4029: - call void @finch_panic(ptr @.str.2508, i64 1663, ptr @.str.2509) + br i1 %t134, label %panic4247, label %ok4248 +panic4247: + call void @finch_panic(ptr @.str.2593, i64 1817, ptr @.str.2594) unreachable -ok4030: +ok4248: %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) + call void @finch.copy.arr_str(ptr %a137, ptr %a136) %t138 = load { ptr, i64, i64 }, ptr %a137 + %t139 = load { ptr, i64, i64 }, ptr %t135 store { ptr, i64, i64 } %t138, ptr %t135 - %t139 = load { ptr, i64, i64 }, ptr %a66 - %t140 = load ptr, ptr %a1 - %t141 = icmp eq ptr %t140, null - br i1 %t141, label %panic4031, label %ok4032 -panic4031: - call void @finch_panic(ptr @.str.2510, i64 1664, ptr @.str.2511) + store { ptr, i64, i64 } %t139, ptr %a140 + call void @finch.drop.arr_str(ptr %a140) + %t141 = load { ptr, i64, i64 }, ptr %a58 + %t142 = load ptr, ptr %a1 + %t143 = icmp eq ptr %t142, null + br i1 %t143, label %panic4249, label %ok4250 +panic4249: + call void @finch_panic(ptr @.str.2595, i64 1818, ptr @.str.2596) unreachable -ok4032: - %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) - %t145 = load { ptr, i64, i64 }, ptr %a144 - store { ptr, i64, i64 } %t145, ptr %t142 +ok4250: + %t144 = getelementptr inbounds %S.gen.Gen, ptr %t142, i32 0, i32 19 + store { ptr, i64, i64 } %t141, ptr %a145 + call void @finch.copy.arr_S_ast_Type(ptr %a146, ptr %a145) + %t147 = load { ptr, i64, i64 }, ptr %a146 + %t148 = load { ptr, i64, i64 }, ptr %t144 + store { ptr, i64, i64 } %t147, ptr %t144 + store { ptr, i64, i64 } %t148, ptr %a149 + call void @finch.drop.arr_S_ast_Type(ptr %a149) + %t150 = load { ptr, i64, i64 }, ptr %a66 + %t151 = load ptr, ptr %a1 + %t152 = icmp eq ptr %t151, null + br i1 %t152, label %panic4251, label %ok4252 +panic4251: + call void @finch_panic(ptr @.str.2597, i64 1819, ptr @.str.2598) + unreachable +ok4252: + %t153 = getelementptr inbounds %S.gen.Gen, ptr %t151, i32 0, i32 20 + store { ptr, i64, i64 } %t150, ptr %a154 + call void @finch_str_copy(ptr %a155, ptr %a154) + %t156 = load { ptr, i64, i64 }, ptr %a155 + %t157 = load { ptr, i64, i64 }, ptr %t153 + store { ptr, i64, i64 } %t156, ptr %t153 + store { ptr, i64, i64 } %t157, ptr %a158 + call void @finch_str_drop(ptr %a158) + call void @finch_str_drop(ptr %a66) + call void @finch.drop.arr_S_ast_Type(ptr %a58) + call void @finch.drop.arr_str(ptr %a50) ret void } @@ -37500,83 +43568,99 @@ entry: %a64 = alloca { ptr, i64, i64 }, align 16 %a65 = alloca { ptr, i64, i64 }, align 16 %a66 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 + %a67 = 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 %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 %a76 = 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 + %a77 = alloca { ptr, i64, i64 }, align 16 + %a78 = alloca { ptr, i64, i64 }, align 16 + %a79 = 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 %a86 = 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 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca i1, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca i64, align 16 - %a134 = alloca %S.ast.Node, align 16 - %a140 = alloca %S.ast.Type, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca %S.ast.Type, align 16 - %a214 = alloca %S.ast.Type, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = 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 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = 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 - %a306 = alloca { ptr, i64, i64 }, align 16 - %a307 = 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 + %a91 = alloca { ptr, i64, i64 }, align 16 + %a93 = 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 + %a126 = alloca { ptr, i64, i64 }, align 16 + %a127 = alloca { ptr, i64, i64 }, align 16 + %a130 = alloca { ptr, i64, i64 }, align 16 + %a131 = alloca i1, align 16 + %a132 = alloca { ptr, i64, i64 }, align 16 + %a134 = alloca i64, align 16 + %a142 = alloca %S.ast.Node, align 16 + %a148 = alloca %S.ast.Type, align 16 + %a151 = alloca { ptr, i64, i64 }, align 16 + %a152 = alloca { ptr, i64, i64 }, align 16 + %a202 = alloca { ptr, i64, i64 }, align 16 + %a203 = alloca { ptr, i64, i64 }, align 16 + %a221 = alloca %S.ast.Type, align 16 + %a222 = alloca %S.ast.Type, align 16 + %a256 = alloca { ptr, i64, i64 }, align 16 + %a257 = alloca { ptr, i64, i64 }, align 16 + %a260 = 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 + %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 + %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 + %a312 = 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 + %a316 = alloca { ptr, i64, i64 }, align 16 + %a317 = alloca { ptr, i64, i64 }, align 16 + %a318 = alloca { ptr, i64, i64 }, align 16 + %a321 = alloca { ptr, i64, i64 }, align 16 + %a322 = alloca { ptr, i64, i64 }, align 16 + %a324 = 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 + %a328 = alloca { ptr, i64, i64 }, align 16 + %a330 = 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 store ptr %p0, ptr %a1 store i64 %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic4033, label %ok4034 -panic4033: - call void @finch_panic(ptr @.str.2512, i64 1668, ptr @.str.2513) + br i1 %t4, label %panic4253, label %ok4254 +panic4253: + call void @finch_panic(ptr @.str.2599, i64 1823, ptr @.str.2600) unreachable -ok4034: +ok4254: %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 %panic4035, label %ok4036 -panic4035: - call void @finch_panic(ptr @.str.2514, i64 1668, ptr @.str.2515) + br i1 %t7, label %panic4255, label %ok4256 +panic4255: + call void @finch_panic(ptr @.str.2601, i64 1823, ptr @.str.2602) unreachable -ok4036: - %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 15 +ok4256: + %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 %range4037, label %inrange4038 -range4037: - call void @finch_panic_index(ptr @.str.2516, i64 1668, i64 %t9, i64 %t11) + br i1 %t12, label %range4257, label %inrange4258 +range4257: + call void @finch_panic_index(ptr @.str.2603, i64 1823, i64 %t9, i64 %t11) unreachable -inrange4038: +inrange4258: %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 @@ -37584,31 +43668,31 @@ inrange4038: %t17 = load { ptr, i64, i64 }, ptr %t5 %t18 = extractvalue { ptr, i64, i64 } %t17, 1 %t19 = icmp uge i64 %t16, %t18 - br i1 %t19, label %range4039, label %inrange4040 -range4039: - call void @finch_panic_index(ptr @.str.2517, i64 1668, i64 %t16, i64 %t18) + br i1 %t19, label %range4259, label %inrange4260 +range4259: + call void @finch_panic_index(ptr @.str.2604, i64 1823, i64 %t16, i64 %t18) unreachable -inrange4040: +inrange4260: %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 %panic4041, label %ok4042 -panic4041: - call void @finch_panic(ptr @.str.2518, i64 1668, ptr @.str.2519) + br i1 %t24, label %panic4261, label %ok4262 +panic4261: + call void @finch_panic(ptr @.str.2605, i64 1823, ptr @.str.2606) unreachable -ok4042: - %t25 = getelementptr inbounds %S.gen.Gen, ptr %t23, i32 0, i32 15 +ok4262: + %t25 = getelementptr inbounds %S.gen.Gen, ptr %t23, i32 0, i32 16 %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 %range4043, label %inrange4044 -range4043: - call void @finch_panic_index(ptr @.str.2520, i64 1668, i64 %t26, i64 %t28) + br i1 %t29, label %range4263, label %inrange4264 +range4263: + call void @finch_panic_index(ptr @.str.2607, i64 1823, i64 %t26, i64 %t28) unreachable -inrange4044: +inrange4264: %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 @@ -37616,11 +43700,11 @@ inrange4044: %t34 = load { ptr, i64, i64 }, ptr %t22 %t35 = extractvalue { ptr, i64, i64 } %t34, 1 %t36 = icmp uge i64 %t33, %t35 - br i1 %t36, label %range4045, label %inrange4046 -range4045: - call void @finch_panic_index(ptr @.str.2521, i64 1668, i64 %t33, i64 %t35) + br i1 %t36, label %range4265, label %inrange4266 +range4265: + call void @finch_panic_index(ptr @.str.2608, i64 1823, i64 %t33, i64 %t35) unreachable -inrange4046: +inrange4266: %t37 = extractvalue { ptr, i64, i64 } %t34, 0 %t38 = getelementptr inbounds %S.ast.Node, ptr %t37, i64 %t33 %t39 = load %S.ast.Node, ptr %t38 @@ -37630,455 +43714,493 @@ inrange4046: store %S.ast.Node %t42, ptr %a43 %t44 = load ptr, ptr %a1 %t45 = icmp eq ptr %t44, null - br i1 %t45, label %panic4047, label %ok4048 -panic4047: - call void @finch_panic(ptr @.str.2522, i64 1669, ptr @.str.2523) + br i1 %t45, label %panic4267, label %ok4268 +panic4267: + call void @finch_panic(ptr @.str.2609, i64 1824, ptr @.str.2610) unreachable -ok4048: - %t46 = getelementptr inbounds %S.gen.Gen, ptr %t44, i32 0, i32 15 +ok4268: + %t46 = getelementptr inbounds %S.gen.Gen, ptr %t44, i32 0, i32 16 %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 %range4049, label %inrange4050 -range4049: - call void @finch_panic_index(ptr @.str.2524, i64 1669, i64 %t47, i64 %t49) + br i1 %t50, label %range4269, label %inrange4270 +range4269: + call void @finch_panic_index(ptr @.str.2611, i64 1824, i64 %t47, i64 %t49) unreachable -inrange4050: +inrange4270: %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 %then4051, label %endif4053 -then4051: + br i1 %t55, label %then4271, label %endif4273 +then4271: %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.2525, i64 11, i64 0 }, ptr %a61 + store { ptr, i64, i64 } { ptr @.str.2612, 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.2526, i64 26, i64 0 }, ptr %a66 + store { ptr, i64, i64 } { ptr @.str.2613, 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 - %t69 = load { ptr, i64, i64 }, ptr %t68 - store { ptr, i64, i64 } %t67, 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.2527, 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 - %t79 = load { ptr, i64, i64 }, ptr %t78 - store { ptr, i64, i64 } %t77, 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.2528, 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 %endif4053 -endif4053: - %t88 = load ptr, ptr %a1 - %t89 = icmp eq ptr %t88, null - br i1 %t89, label %panic4054, label %ok4055 -panic4054: - call void @finch_panic(ptr @.str.2529, i64 1672, ptr @.str.2530) + store { ptr, i64, i64 } %t63, ptr %a67 + call void @finch_str_drop(ptr %a67) + %t68 = load { ptr, i64, i64 }, ptr %a64 + %t69 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 1 + %t70 = load { ptr, i64, i64 }, ptr %t69 + store { ptr, i64, i64 } %t68, ptr %a72 + store { ptr, i64, i64 } %t70, ptr %a73 + call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73) + store { ptr, i64, i64 } %t68, ptr %a74 + call void @finch_str_drop(ptr %a74) + %t75 = load { ptr, i64, i64 }, ptr %a71 + store { ptr, i64, i64 } %t75, ptr %a77 + store { ptr, i64, i64 } { ptr @.str.2614, i64 7, i64 0 }, ptr %a78 + call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78) + store { ptr, i64, i64 } %t75, ptr %a79 + call void @finch_str_drop(ptr %a79) + %t80 = load { ptr, i64, i64 }, ptr %a76 + %t81 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 1 + %t82 = load { ptr, i64, i64 }, ptr %t81 + store { ptr, i64, i64 } %t80, ptr %a84 + store { ptr, i64, i64 } %t82, ptr %a85 + call void @finch_str_concat(ptr %a83, ptr %a84, ptr %a85) + store { ptr, i64, i64 } %t80, ptr %a86 + call void @finch_str_drop(ptr %a86) + %t87 = load { ptr, i64, i64 }, ptr %a83 + store { ptr, i64, i64 } %t87, ptr %a89 + store { ptr, i64, i64 } { ptr @.str.2615, i64 15, i64 0 }, ptr %a90 + call void @finch_str_concat(ptr %a88, ptr %a89, ptr %a90) + store { ptr, i64, i64 } %t87, ptr %a91 + call void @finch_str_drop(ptr %a91) + %t92 = load { ptr, i64, i64 }, ptr %a88 + call void @finch.gen.fail(ptr %t56, %S.ast.Node %t57, { ptr, i64, i64 } %t92) + store { ptr, i64, i64 } %t92, ptr %a93 + call void @finch_str_drop(ptr %a93) + br label %endif4273 +endif4273: + %t94 = load ptr, ptr %a1 + %t95 = icmp eq ptr %t94, null + br i1 %t95, label %panic4274, label %ok4275 +panic4274: + call void @finch_panic(ptr @.str.2616, i64 1827, ptr @.str.2617) unreachable -ok4055: - %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 %range4056, label %inrange4057 -range4056: - call void @finch_panic_index(ptr @.str.2531, i64 1672, i64 %t91, i64 %t93) +ok4275: + %t96 = getelementptr inbounds %S.gen.Gen, ptr %t94, i32 0, i32 16 + %t97 = load i64, ptr %a2 + %t98 = load { ptr, i64, i64 }, ptr %t96 + %t99 = extractvalue { ptr, i64, i64 } %t98, 1 + %t100 = icmp uge i64 %t97, %t99 + br i1 %t100, label %range4276, label %inrange4277 +range4276: + call void @finch_panic_index(ptr @.str.2618, i64 1827, i64 %t97, i64 %t99) unreachable -inrange4057: - %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 %panic4058, label %ok4059 -panic4058: - call void @finch_panic(ptr @.str.2532, i64 1673, ptr @.str.2533) +inrange4277: + %t101 = extractvalue { ptr, i64, i64 } %t98, 0 + %t102 = getelementptr inbounds %S.gen.StructDef, ptr %t101, i64 %t97 + %t103 = getelementptr inbounds %S.gen.StructDef, ptr %t102, i32 0, i32 15 + store i64 1, ptr %t103 + %t104 = load ptr, ptr %a1 + %t105 = icmp eq ptr %t104, null + br i1 %t105, label %panic4278, label %ok4279 +panic4278: + call void @finch_panic(ptr @.str.2619, i64 1828, ptr @.str.2620) unreachable -ok4059: - %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 - call void @finch_str_copy(ptr %a103, ptr %a102) - %t104 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t104, ptr %a105 - %t106 = load ptr, ptr %a1 - %t107 = icmp eq ptr %t106, null - br i1 %t107, label %panic4060, label %ok4061 -panic4060: - call void @finch_panic(ptr @.str.2534, i64 1674, ptr @.str.2535) +ok4279: + %t106 = getelementptr inbounds %S.gen.Gen, ptr %t104, i32 0, i32 14 + %t107 = load { ptr, i64, i64 }, ptr %t106 + store { ptr, i64, i64 } %t107, ptr %a108 + call void @finch_str_copy(ptr %a109, ptr %a108) + %t110 = load { ptr, i64, i64 }, ptr %a109 + store { ptr, i64, i64 } %t110, ptr %a111 + %t112 = load ptr, ptr %a1 + %t113 = icmp eq ptr %t112, null + br i1 %t113, label %panic4280, label %ok4281 +panic4280: + call void @finch_panic(ptr @.str.2621, i64 1829, ptr @.str.2622) unreachable -ok4061: - %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 %range4062, label %inrange4063 -range4062: - call void @finch_panic_index(ptr @.str.2536, i64 1674, i64 %t109, i64 %t111) +ok4281: + %t114 = getelementptr inbounds %S.gen.Gen, ptr %t112, i32 0, i32 16 + %t115 = load i64, ptr %a2 + %t116 = load { ptr, i64, i64 }, ptr %t114 + %t117 = extractvalue { ptr, i64, i64 } %t116, 1 + %t118 = icmp uge i64 %t115, %t117 + br i1 %t118, label %range4282, label %inrange4283 +range4282: + call void @finch_panic_index(ptr @.str.2623, i64 1829, i64 %t115, i64 %t117) unreachable -inrange4063: - %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 %panic4064, label %ok4065 -panic4064: - call void @finch_panic(ptr @.str.2537, i64 1674, ptr @.str.2538) +inrange4283: + %t119 = extractvalue { ptr, i64, i64 } %t116, 0 + %t120 = getelementptr inbounds %S.gen.StructDef, ptr %t119, i64 %t115 + %t121 = getelementptr inbounds %S.gen.StructDef, ptr %t120, i32 0, i32 0 + %t122 = load { ptr, i64, i64 }, ptr %t121 + %t123 = load ptr, ptr %a1 + %t124 = icmp eq ptr %t123, null + br i1 %t124, label %panic4284, label %ok4285 +panic4284: + call void @finch_panic(ptr @.str.2624, i64 1829, ptr @.str.2625) unreachable -ok4065: - %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) - %t122 = load { ptr, i64, i64 }, ptr %a121 - store { ptr, i64, i64 } %t122, ptr %t119 - store i1 false, ptr %a123 - 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.cond4066 -each.cond4066: - %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.body4067, label %each.end4069 -each.body4067: - %t131 = load ptr, ptr %t125 - %t132 = getelementptr inbounds %S.ast.Node, ptr %t131, i64 %t129 - %t133 = load %S.ast.Node, ptr %t132 - store %S.ast.Node %t133, ptr %a134 - %t135 = load ptr, ptr %a1 - %t136 = getelementptr inbounds %S.ast.Node, ptr %a134, i32 0, i32 5 - %t137 = load %S.ast.Type, ptr %t136 - %t138 = load %S.ast.Node, ptr %a134 - %t139 = call %S.ast.Type @finch.gen.resolve(ptr %t135, %S.ast.Type %t137, %S.ast.Node %t138) - store %S.ast.Type %t139, ptr %a140 - %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.2539, 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 %then4070, label %endif4072 -then4070: - %t147 = load ptr, ptr %a1 - %t148 = load ptr, ptr %a1 - %t149 = getelementptr inbounds %S.ast.Type, ptr %a140, i32 0, i32 3 +ok4285: + %t125 = getelementptr inbounds %S.gen.Gen, ptr %t123, i32 0, i32 14 + store { ptr, i64, i64 } %t122, ptr %a126 + call void @finch_str_copy(ptr %a127, ptr %a126) + %t128 = load { ptr, i64, i64 }, ptr %a127 + %t129 = load { ptr, i64, i64 }, ptr %t125 + store { ptr, i64, i64 } %t128, ptr %t125 + store { ptr, i64, i64 } %t129, ptr %a130 + call void @finch_str_drop(ptr %a130) + store i1 false, ptr %a131 + store { ptr, i64, i64 } zeroinitializer, ptr %a132 + %t133 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 9 + store i64 0, ptr %a134 + br label %each.cond4286 +each.cond4286: + %t135 = getelementptr inbounds { ptr, i64, i64 }, ptr %t133, 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.body4287, label %each.end4289 +each.body4287: + %t139 = load ptr, ptr %t133 + %t140 = getelementptr inbounds %S.ast.Node, ptr %t139, i64 %t137 + %t141 = load %S.ast.Node, ptr %t140 + store %S.ast.Node %t141, ptr %a142 + %t143 = load ptr, ptr %a1 + %t144 = getelementptr inbounds %S.ast.Node, ptr %a142, i32 0, i32 5 + %t145 = load %S.ast.Type, ptr %t144 + %t146 = load %S.ast.Node, ptr %a142 + %t147 = call %S.ast.Type @finch.gen.resolve(ptr %t143, %S.ast.Type %t145, %S.ast.Node %t146) + store %S.ast.Type %t147, ptr %a148 + %t149 = getelementptr inbounds %S.ast.Type, ptr %a148, i32 0, i32 0 %t150 = load { ptr, i64, i64 }, ptr %t149 - %t151 = getelementptr inbounds %S.ast.Type, ptr %a140, i32 0, i32 2 - %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 %endif4072 -endif4072: - %t154 = load ptr, ptr %a1 - %t155 = icmp eq ptr %t154, null - br i1 %t155, label %panic4073, label %ok4074 -panic4073: - call void @finch_panic(ptr @.str.2540, i64 1682, ptr @.str.2541) + store { ptr, i64, i64 } %t150, ptr %a151 + store { ptr, i64, i64 } { ptr @.str.2626, i64 6, i64 0 }, ptr %a152 + %t153 = call i32 @finch_str_eq(ptr %a151, ptr %a152) + %t154 = icmp ne i32 %t153, 0 + br i1 %t154, label %then4290, label %endif4292 +then4290: + %t155 = load ptr, ptr %a1 + %t156 = load ptr, ptr %a1 + %t157 = getelementptr inbounds %S.ast.Type, ptr %a148, i32 0, i32 3 + %t158 = load { ptr, i64, i64 }, ptr %t157 + %t159 = getelementptr inbounds %S.ast.Type, ptr %a148, i32 0, i32 2 + %t160 = load { ptr, i64, i64 }, ptr %t159 + %t161 = call i64 @finch.gen.findStruct(ptr %t156, { ptr, i64, i64 } %t158, { ptr, i64, i64 } %t160) + call void @finch.gen.resolveStruct(ptr %t155, i64 %t161) + br label %endif4292 +endif4292: + %t162 = load ptr, ptr %a1 + %t163 = icmp eq ptr %t162, null + br i1 %t163, label %panic4293, label %ok4294 +panic4293: + call void @finch_panic(ptr @.str.2627, i64 1837, ptr @.str.2628) unreachable -ok4074: - %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 %range4075, label %inrange4076 -range4075: - call void @finch_panic_index(ptr @.str.2542, i64 1682, i64 %t157, i64 %t159) +ok4294: + %t164 = getelementptr inbounds %S.gen.Gen, ptr %t162, i32 0, i32 16 + %t165 = load i64, ptr %a2 + %t166 = load { ptr, i64, i64 }, ptr %t164 + %t167 = extractvalue { ptr, i64, i64 } %t166, 1 + %t168 = icmp uge i64 %t165, %t167 + br i1 %t168, label %range4295, label %inrange4296 +range4295: + call void @finch_panic_index(ptr @.str.2629, i64 1837, i64 %t165, i64 %t167) unreachable -inrange4076: - %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 %panic4077, label %ok4078 -panic4077: - call void @finch_panic(ptr @.str.2543, i64 1682, ptr @.str.2544) +inrange4296: + %t169 = extractvalue { ptr, i64, i64 } %t166, 0 + %t170 = getelementptr inbounds %S.gen.StructDef, ptr %t169, i64 %t165 + %t171 = getelementptr inbounds %S.gen.StructDef, ptr %t170, i32 0, i32 3 + %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 %panic4297, label %ok4298 +panic4297: + call void @finch_panic(ptr @.str.2630, i64 1837, ptr @.str.2631) unreachable -ok4078: - %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 %range4079, label %inrange4080 -range4079: - call void @finch_panic_index(ptr @.str.2545, i64 1682, i64 %t168, i64 %t170) +ok4298: + %t175 = getelementptr inbounds %S.gen.Gen, ptr %t173, i32 0, i32 16 + %t176 = load i64, ptr %a2 + %t177 = load { ptr, i64, i64 }, ptr %t175 + %t178 = extractvalue { ptr, i64, i64 } %t177, 1 + %t179 = icmp uge i64 %t176, %t178 + br i1 %t179, label %range4299, label %inrange4300 +range4299: + call void @finch_panic_index(ptr @.str.2632, i64 1837, i64 %t176, i64 %t178) unreachable -inrange4080: - %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 - %t175 = getelementptr inbounds { ptr, i64, i64 }, ptr %t174, i32 0, i32 1 - %t176 = load i64, ptr %t175 - %t177 = load i64, ptr %t164 - %t178 = add i64 %t177, 1 - call void @finch_arr_reserve(ptr %t163, i64 %t178, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t179 = load ptr, ptr %t163 - %t180 = getelementptr inbounds i64, ptr %t179, i64 %t177 - store i64 %t176, ptr %t180 - store i64 %t178, ptr %t164 - %t181 = load ptr, ptr %a1 - %t182 = icmp eq ptr %t181, null - br i1 %t182, label %panic4081, label %ok4082 -panic4081: - call void @finch_panic(ptr @.str.2546, i64 1683, ptr @.str.2547) +inrange4300: + %t180 = extractvalue { ptr, i64, i64 } %t177, 0 + %t181 = getelementptr inbounds %S.gen.StructDef, ptr %t180, i64 %t176 + %t182 = getelementptr inbounds %S.gen.StructDef, ptr %t181, i32 0, i32 11 + %t183 = getelementptr inbounds { ptr, i64, i64 }, ptr %t182, i32 0, i32 1 + %t184 = load i64, ptr %t183 + %t185 = load i64, ptr %t172 + %t186 = add i64 %t185, 1 + call void @finch_arr_reserve(ptr %t171, i64 %t186, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) + %t187 = load ptr, ptr %t171 + %t188 = getelementptr inbounds i64, ptr %t187, i64 %t185 + store i64 %t184, ptr %t188 + store i64 %t186, ptr %t172 + %t189 = load ptr, ptr %a1 + %t190 = icmp eq ptr %t189, null + br i1 %t190, label %panic4301, label %ok4302 +panic4301: + call void @finch_panic(ptr @.str.2633, i64 1838, ptr @.str.2634) unreachable -ok4082: - %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 %range4083, label %inrange4084 -range4083: - call void @finch_panic_index(ptr @.str.2548, i64 1683, i64 %t184, i64 %t186) +ok4302: + %t191 = getelementptr inbounds %S.gen.Gen, ptr %t189, i32 0, i32 16 + %t192 = load i64, ptr %a2 + %t193 = load { ptr, i64, i64 }, ptr %t191 + %t194 = extractvalue { ptr, i64, i64 } %t193, 1 + %t195 = icmp uge i64 %t192, %t194 + br i1 %t195, label %range4303, label %inrange4304 +range4303: + call void @finch_panic_index(ptr @.str.2635, i64 1838, i64 %t192, i64 %t194) unreachable -inrange4084: - %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 - %t191 = getelementptr inbounds { ptr, i64, i64 }, ptr %t190, i32 0, i32 1 - %t192 = getelementptr inbounds %S.ast.Node, ptr %a134, i32 0, i32 1 - %t193 = load { ptr, i64, i64 }, ptr %t192 - store { ptr, i64, i64 } %t193, ptr %a194 - call void @finch_str_copy(ptr %a195, ptr %a194) - %t196 = load { ptr, i64, i64 }, ptr %a195 - %t197 = load i64, ptr %t191 - %t198 = add i64 %t197, 1 - call void @finch_arr_reserve(ptr %t190, i64 %t198, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t199 = load ptr, ptr %t190 - %t200 = getelementptr inbounds { ptr, i64, i64 }, ptr %t199, i64 %t197 - store { ptr, i64, i64 } %t196, ptr %t200 - store i64 %t198, ptr %t191 - %t201 = load ptr, ptr %a1 - %t202 = icmp eq ptr %t201, null - br i1 %t202, label %panic4085, label %ok4086 -panic4085: - call void @finch_panic(ptr @.str.2549, i64 1684, ptr @.str.2550) +inrange4304: + %t196 = extractvalue { ptr, i64, i64 } %t193, 0 + %t197 = getelementptr inbounds %S.gen.StructDef, ptr %t196, i64 %t192 + %t198 = getelementptr inbounds %S.gen.StructDef, ptr %t197, i32 0, i32 11 + %t199 = getelementptr inbounds { ptr, i64, i64 }, ptr %t198, i32 0, i32 1 + %t200 = getelementptr inbounds %S.ast.Node, ptr %a142, i32 0, i32 1 + %t201 = load { ptr, i64, i64 }, ptr %t200 + store { ptr, i64, i64 } %t201, ptr %a202 + call void @finch_str_copy(ptr %a203, ptr %a202) + %t204 = load { ptr, i64, i64 }, ptr %a203 + %t205 = load i64, ptr %t199 + %t206 = add i64 %t205, 1 + call void @finch_arr_reserve(ptr %t198, i64 %t206, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t207 = load ptr, ptr %t198 + %t208 = getelementptr inbounds { ptr, i64, i64 }, ptr %t207, i64 %t205 + store { ptr, i64, i64 } %t204, ptr %t208 + store i64 %t206, ptr %t199 + %t209 = load ptr, ptr %a1 + %t210 = icmp eq ptr %t209, null + br i1 %t210, label %panic4305, label %ok4306 +panic4305: + call void @finch_panic(ptr @.str.2636, i64 1839, ptr @.str.2637) unreachable -ok4086: - %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 %range4087, label %inrange4088 -range4087: - call void @finch_panic_index(ptr @.str.2551, i64 1684, i64 %t204, i64 %t206) +ok4306: + %t211 = getelementptr inbounds %S.gen.Gen, ptr %t209, i32 0, i32 16 + %t212 = load i64, ptr %a2 + %t213 = load { ptr, i64, i64 }, ptr %t211 + %t214 = extractvalue { ptr, i64, i64 } %t213, 1 + %t215 = icmp uge i64 %t212, %t214 + br i1 %t215, label %range4307, label %inrange4308 +range4307: + call void @finch_panic_index(ptr @.str.2638, i64 1839, i64 %t212, i64 %t214) unreachable -inrange4088: - %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 - %t211 = getelementptr inbounds { ptr, i64, i64 }, ptr %t210, i32 0, i32 1 - %t212 = load %S.ast.Type, ptr %a140 - store %S.ast.Type %t212, ptr %a213 - call void @finch.copy.S_ast_Type(ptr %a214, ptr %a213) - %t215 = load %S.ast.Type, ptr %a214 - %t216 = load i64, ptr %t211 - %t217 = add i64 %t216, 1 - call void @finch_arr_reserve(ptr %t210, i64 %t217, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t218 = load ptr, ptr %t210 - %t219 = getelementptr inbounds %S.ast.Type, ptr %t218, i64 %t216 - store %S.ast.Type %t215, ptr %t219 - store i64 %t217, ptr %t211 - %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 %then4089, label %endif4091 -then4089: - store i1 true, ptr %a123 - br label %endif4091 -endif4091: - %t223 = getelementptr inbounds { ptr, i64, i64 }, ptr %a124, i32 0, i32 1 - %t224 = load ptr, ptr %a1 - %t225 = load %S.ast.Type, ptr %a140 - %t226 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t224, %S.ast.Type %t225) - %t227 = load i64, ptr %t223 - %t228 = add i64 %t227, 1 - call void @finch_arr_reserve(ptr %a124, i64 %t228, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t229 = load ptr, ptr %a124 - %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.step4068 -each.step4068: - %t231 = load i64, ptr %a126 - %t232 = add i64 %t231, 1 - store i64 %t232, ptr %a126 - br label %each.cond4066 -each.end4069: - %t233 = load i1, ptr %a123 - %t234 = load ptr, ptr %a1 - %t235 = icmp eq ptr %t234, null - br i1 %t235, label %panic4092, label %ok4093 -panic4092: - call void @finch_panic(ptr @.str.2552, i64 1690, ptr @.str.2553) +inrange4308: + %t216 = extractvalue { ptr, i64, i64 } %t213, 0 + %t217 = getelementptr inbounds %S.gen.StructDef, ptr %t216, i64 %t212 + %t218 = getelementptr inbounds %S.gen.StructDef, ptr %t217, i32 0, i32 12 + %t219 = getelementptr inbounds { ptr, i64, i64 }, ptr %t218, i32 0, i32 1 + %t220 = load %S.ast.Type, ptr %a148 + 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 %t218, i64 %t225, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) + %t226 = load ptr, ptr %t218 + %t227 = getelementptr inbounds %S.ast.Type, ptr %t226, i64 %t224 + store %S.ast.Type %t223, ptr %t227 + store i64 %t225, ptr %t219 + %t228 = load ptr, ptr %a1 + %t229 = load %S.ast.Type, ptr %a148 + %t230 = call i1 @finch.gen.owning(ptr %t228, %S.ast.Type %t229) + br i1 %t230, label %then4309, label %endif4311 +then4309: + store i1 true, ptr %a131 + br label %endif4311 +endif4311: + %t231 = getelementptr inbounds { ptr, i64, i64 }, ptr %a132, i32 0, i32 1 + %t232 = load ptr, ptr %a1 + %t233 = load %S.ast.Type, ptr %a148 + %t234 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t232, %S.ast.Type %t233) + %t235 = load i64, ptr %t231 + %t236 = add i64 %t235, 1 + call void @finch_arr_reserve(ptr %a132, i64 %t236, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t237 = load ptr, ptr %a132 + %t238 = getelementptr inbounds { ptr, i64, i64 }, ptr %t237, i64 %t235 + store { ptr, i64, i64 } %t234, ptr %t238 + store i64 %t236, ptr %t231 + call void @finch.drop.S_ast_Type(ptr %a148) + br label %each.step4288 +each.step4288: + %t239 = load i64, ptr %a134 + %t240 = add i64 %t239, 1 + store i64 %t240, ptr %a134 + br label %each.cond4286 +each.end4289: + %t241 = load i1, ptr %a131 + %t242 = load ptr, ptr %a1 + %t243 = icmp eq ptr %t242, null + br i1 %t243, label %panic4312, label %ok4313 +panic4312: + call void @finch_panic(ptr @.str.2639, i64 1845, ptr @.str.2640) unreachable -ok4093: - %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 %range4094, label %inrange4095 -range4094: - call void @finch_panic_index(ptr @.str.2554, i64 1690, i64 %t237, i64 %t239) +ok4313: + %t244 = getelementptr inbounds %S.gen.Gen, ptr %t242, i32 0, i32 16 + %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 %range4314, label %inrange4315 +range4314: + call void @finch_panic_index(ptr @.str.2641, i64 1845, i64 %t245, i64 %t247) unreachable -inrange4095: - %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 - store i1 %t233, ptr %t243 - %t244 = load { ptr, i64, i64 }, ptr %a105 - %t245 = load ptr, ptr %a1 - %t246 = icmp eq ptr %t245, null - br i1 %t246, label %panic4096, label %ok4097 -panic4096: - call void @finch_panic(ptr @.str.2555, i64 1691, ptr @.str.2556) +inrange4315: + %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 16 + store i1 %t241, ptr %t251 + %t252 = load { ptr, i64, i64 }, ptr %a111 + %t253 = load ptr, ptr %a1 + %t254 = icmp eq ptr %t253, null + br i1 %t254, label %panic4316, label %ok4317 +panic4316: + call void @finch_panic(ptr @.str.2642, i64 1846, ptr @.str.2643) unreachable -ok4097: - %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) - %t250 = load { ptr, i64, i64 }, ptr %a249 - store { ptr, i64, i64 } %t250, ptr %t247 - %t251 = load ptr, ptr %a1 - %t252 = icmp eq ptr %t251, null - br i1 %t252, label %panic4098, label %ok4099 -panic4098: - call void @finch_panic(ptr @.str.2557, i64 1692, ptr @.str.2558) - unreachable -ok4099: - %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 %range4100, label %inrange4101 -range4100: - call void @finch_panic_index(ptr @.str.2559, i64 1692, i64 %t254, i64 %t256) - unreachable -inrange4101: - %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 +ok4317: + %t255 = getelementptr inbounds %S.gen.Gen, ptr %t253, i32 0, i32 14 + store { ptr, i64, i64 } %t252, ptr %a256 + call void @finch_str_copy(ptr %a257, ptr %a256) + %t258 = load { ptr, i64, i64 }, ptr %a257 + %t259 = load { ptr, i64, i64 }, ptr %t255 + store { ptr, i64, i64 } %t258, ptr %t255 + store { ptr, i64, i64 } %t259, ptr %a260 + call void @finch_str_drop(ptr %a260) %t261 = load ptr, ptr %a1 %t262 = icmp eq ptr %t261, null - br i1 %t262, label %panic4102, label %ok4103 -panic4102: - call void @finch_panic(ptr @.str.2560, i64 1693, ptr @.str.2561) + br i1 %t262, label %panic4318, label %ok4319 +panic4318: + call void @finch_panic(ptr @.str.2644, i64 1847, ptr @.str.2645) unreachable -ok4103: - %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 %panic4104, label %ok4105 -panic4104: - call void @finch_panic(ptr @.str.2563, i64 1693, ptr @.str.2564) +ok4319: + %t263 = getelementptr inbounds %S.gen.Gen, ptr %t261, i32 0, i32 16 + %t264 = load i64, ptr %a2 + %t265 = load { ptr, i64, i64 }, ptr %t263 + %t266 = extractvalue { ptr, i64, i64 } %t265, 1 + %t267 = icmp uge i64 %t264, %t266 + br i1 %t267, label %range4320, label %inrange4321 +range4320: + call void @finch_panic_index(ptr @.str.2646, i64 1847, i64 %t264, i64 %t266) unreachable -ok4105: - %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 %range4106, label %inrange4107 -range4106: - call void @finch_panic_index(ptr @.str.2565, i64 1693, i64 %t268, i64 %t270) +inrange4321: + %t268 = extractvalue { ptr, i64, i64 } %t265, 0 + %t269 = getelementptr inbounds %S.gen.StructDef, ptr %t268, i64 %t264 + %t270 = getelementptr inbounds %S.gen.StructDef, ptr %t269, i32 0, i32 15 + store i64 2, ptr %t270 + %t271 = load ptr, ptr %a1 + %t272 = icmp eq ptr %t271, null + br i1 %t272, label %panic4322, label %ok4323 +panic4322: + call void @finch_panic(ptr @.str.2647, i64 1848, ptr @.str.2648) unreachable -inrange4107: - %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.2562, 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.2566, 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 %panic4108, label %ok4109 -panic4108: - call void @finch_panic(ptr @.str.2567, i64 1693, ptr @.str.2568) +ok4323: + %t273 = getelementptr inbounds %S.gen.Gen, ptr %t271, i32 0, i32 2 + %t274 = getelementptr inbounds { ptr, i64, i64 }, ptr %t273, i32 0, i32 1 + %t275 = load ptr, ptr %a1 + %t276 = icmp eq ptr %t275, null + br i1 %t276, label %panic4324, label %ok4325 +panic4324: + call void @finch_panic(ptr @.str.2650, i64 1848, ptr @.str.2651) unreachable -ok4109: - %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 %range4110, label %inrange4111 -range4110: - call void @finch_panic_index(ptr @.str.2569, i64 1693, i64 %t288, i64 %t290) +ok4325: + %t277 = getelementptr inbounds %S.gen.Gen, ptr %t275, i32 0, i32 16 + %t278 = load i64, ptr %a2 + %t279 = load { ptr, i64, i64 }, ptr %t277 + %t280 = extractvalue { ptr, i64, i64 } %t279, 1 + %t281 = icmp uge i64 %t278, %t280 + br i1 %t281, label %range4326, label %inrange4327 +range4326: + call void @finch_panic_index(ptr @.str.2652, i64 1848, i64 %t278, i64 %t280) unreachable -inrange4111: - %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 - %t295 = load { ptr, i64, i64 }, ptr %t294 - %t296 = call { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %t295) - store { ptr, i64, i64 } %t284, ptr %a298 - store { ptr, i64, i64 } %t296, ptr %a299 - 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.2570, 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.2571, 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 +inrange4327: + %t282 = extractvalue { ptr, i64, i64 } %t279, 0 + %t283 = getelementptr inbounds %S.gen.StructDef, ptr %t282, i64 %t278 + %t284 = getelementptr inbounds %S.gen.StructDef, ptr %t283, i32 0, i32 0 + %t285 = load { ptr, i64, i64 }, ptr %t284 + %t286 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t285) + store { ptr, i64, i64 } { ptr @.str.2649, i64 3, i64 0 }, ptr %a288 + store { ptr, i64, i64 } %t286, ptr %a289 + call void @finch_str_concat(ptr %a287, ptr %a288, ptr %a289) + store { ptr, i64, i64 } %t286, ptr %a290 + call void @finch_str_drop(ptr %a290) + %t291 = load { ptr, i64, i64 }, ptr %a287 + store { ptr, i64, i64 } %t291, ptr %a293 + store { ptr, i64, i64 } { ptr @.str.2653, i64 1, i64 0 }, ptr %a294 + call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) + store { ptr, i64, i64 } %t291, ptr %a295 + call void @finch_str_drop(ptr %a295) + %t296 = load { ptr, i64, i64 }, ptr %a292 + %t297 = load ptr, ptr %a1 + %t298 = icmp eq ptr %t297, null + br i1 %t298, label %panic4328, label %ok4329 +panic4328: + call void @finch_panic(ptr @.str.2654, i64 1848, ptr @.str.2655) + unreachable +ok4329: + %t299 = getelementptr inbounds %S.gen.Gen, ptr %t297, i32 0, i32 16 + %t300 = load i64, ptr %a2 + %t301 = load { ptr, i64, i64 }, ptr %t299 + %t302 = extractvalue { ptr, i64, i64 } %t301, 1 + %t303 = icmp uge i64 %t300, %t302 + br i1 %t303, label %range4330, label %inrange4331 +range4330: + call void @finch_panic_index(ptr @.str.2656, i64 1848, i64 %t300, i64 %t302) + unreachable +inrange4331: + %t304 = extractvalue { ptr, i64, i64 } %t301, 0 + %t305 = getelementptr inbounds %S.gen.StructDef, ptr %t304, i64 %t300 + %t306 = getelementptr inbounds %S.gen.StructDef, ptr %t305, i32 0, i32 1 + %t307 = load { ptr, i64, i64 }, ptr %t306 + %t308 = call { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %t307) + store { ptr, i64, i64 } %t296, 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.2572, 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 - %t318 = add i64 %t317, 1 - call void @finch_arr_reserve(ptr %t263, i64 %t318, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t319 = load ptr, ptr %t263 - %t320 = getelementptr inbounds { ptr, i64, i64 }, ptr %t319, i64 %t317 - store { ptr, i64, i64 } %t316, ptr %t320 - store i64 %t318, ptr %t264 + store { ptr, i64, i64 } %t296, ptr %a312 + call void @finch_str_drop(ptr %a312) + store { ptr, i64, i64 } %t308, ptr %a313 + call void @finch_str_drop(ptr %a313) + %t314 = load { ptr, i64, i64 }, ptr %a309 + store { ptr, i64, i64 } %t314, ptr %a316 + store { ptr, i64, i64 } { ptr @.str.2657, i64 10, i64 0 }, ptr %a317 + call void @finch_str_concat(ptr %a315, ptr %a316, ptr %a317) + store { ptr, i64, i64 } %t314, ptr %a318 + call void @finch_str_drop(ptr %a318) + %t319 = load { ptr, i64, i64 }, ptr %a315 + %t320 = getelementptr inbounds { ptr, i64, i64 }, ptr %a132, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.2658, i64 2, i64 0 }, ptr %a321 + call void @finch_str_join(ptr %a322, ptr %a132, ptr %a321) + %t323 = load { ptr, i64, i64 }, ptr %a322 + store { ptr, i64, i64 } %t319, ptr %a325 + store { ptr, i64, i64 } %t323, ptr %a326 + call void @finch_str_concat(ptr %a324, ptr %a325, ptr %a326) + store { ptr, i64, i64 } %t319, ptr %a327 + call void @finch_str_drop(ptr %a327) + store { ptr, i64, i64 } %t323, ptr %a328 + call void @finch_str_drop(ptr %a328) + %t329 = load { ptr, i64, i64 }, ptr %a324 + store { ptr, i64, i64 } %t329, ptr %a331 + store { ptr, i64, i64 } { ptr @.str.2659, i64 2, i64 0 }, ptr %a332 + call void @finch_str_concat(ptr %a330, ptr %a331, ptr %a332) + store { ptr, i64, i64 } %t329, ptr %a333 + call void @finch_str_drop(ptr %a333) + %t334 = load { ptr, i64, i64 }, ptr %a330 + %t335 = load i64, ptr %t274 + %t336 = add i64 %t335, 1 + call void @finch_arr_reserve(ptr %t273, i64 %t336, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t337 = load ptr, ptr %t273 + %t338 = getelementptr inbounds { ptr, i64, i64 }, ptr %t337, i64 %t335 + store { ptr, i64, i64 } %t334, ptr %t338 + store i64 %t336, ptr %t274 + call void @finch.drop.arr_str(ptr %a132) + call void @finch_str_drop(ptr %a111) + call void @finch.drop.S_ast_Node(ptr %a43) ret void } @@ -38092,12 +44214,12 @@ entry: store { ptr, i64, i64 } %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic4112, label %ok4113 -panic4112: - call void @finch_panic(ptr @.str.2573, i64 1702, ptr @.str.2574) + br i1 %t4, label %panic4332, label %ok4333 +panic4332: + call void @finch_panic(ptr @.str.2660, i64 1857, ptr @.str.2661) unreachable -ok4113: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 31 +ok4333: + %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 32 %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 @@ -38112,12 +44234,12 @@ ok4113: store i64 %t12, ptr %t6 %t15 = load ptr, ptr %a1 %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic4114, label %ok4115 -panic4114: - call void @finch_panic(ptr @.str.2575, i64 1703, ptr @.str.2576) + br i1 %t16, label %panic4334, label %ok4335 +panic4334: + call void @finch_panic(ptr @.str.2662, i64 1858, ptr @.str.2663) unreachable -ok4115: - %t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 31 +ok4335: + %t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 32 %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t17, i32 0, i32 1 %t19 = load i64, ptr %t18 %t20 = sub i64 %t19, 1 @@ -38131,21 +44253,24 @@ entry: %a7 = 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 store i64 %p0, ptr %a1 %t2 = load i64, ptr %a1 %t3 = icmp slt i64 %t2, 0 - br i1 %t3, label %then4116, label %endif4118 -then4116: - ret { ptr, i64, i64 } { ptr @.str.2577, i64 4, i64 0 } -endif4118: + br i1 %t3, label %then4336, label %endif4338 +then4336: + ret { ptr, i64, i64 } { ptr @.str.2664, i64 4, i64 0 } +endif4338: %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.2578, i64 1, i64 0 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.2665, 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 - ret { ptr, i64, i64 } %t10 + store { ptr, i64, i64 } %t6, ptr %a10 + call void @finch_str_drop(ptr %a10) + %t11 = load { ptr, i64, i64 }, ptr %a7 + ret { ptr, i64, i64 } %t11 } define internal i64 @finch.gen.alignUp(i64 %p0, i64 %p1) { @@ -38156,22 +44281,22 @@ entry: store i64 %p1, ptr %a2 %t3 = load i64, ptr %a2 %t4 = icmp sle i64 %t3, 1 - br i1 %t4, label %then4119, label %endif4121 -then4119: + br i1 %t4, label %then4339, label %endif4341 +then4339: %t5 = load i64, ptr %a1 ret i64 %t5 -endif4121: +endif4341: %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 %panic4122, label %ok4123 -panic4122: - call void @finch_panic(ptr @.str.2579, i64 1722, ptr @.str.2580) + br i1 %t11, label %panic4342, label %ok4343 +panic4342: + call void @finch_panic(ptr @.str.2666, i64 1877, ptr @.str.2667) unreachable -ok4123: +ok4343: %t12 = sdiv i64 %t9, %t10 %t13 = load i64, ptr %a2 %t14 = mul i64 %t12, %t13 @@ -38234,188 +44359,193 @@ 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.2581, i64 4, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.2668, 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.from4124 -logic.from4124: - br i1 %t13, label %logic.end4126, label %logic.rhs4125 -logic.rhs4125: + br label %logic.from4344 +logic.from4344: + br i1 %t13, label %logic.end4346, label %logic.rhs4345 +logic.rhs4345: %t14 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t14, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.2582, i64 4, i64 0 }, ptr %a16 + store { ptr, i64, i64 } { ptr @.str.2669, 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.rend4127 -logic.rend4127: - br label %logic.end4126 -logic.end4126: - %t19 = phi i1 [ true, %logic.from4124 ], [ %t18, %logic.rend4127 ] - br label %logic.from4128 -logic.from4128: - br i1 %t19, label %logic.end4130, label %logic.rhs4129 -logic.rhs4129: + br label %logic.rend4347 +logic.rend4347: + br label %logic.end4346 +logic.end4346: + %t19 = phi i1 [ true, %logic.from4344 ], [ %t18, %logic.rend4347 ] + br label %logic.from4348 +logic.from4348: + br i1 %t19, label %logic.end4350, label %logic.rhs4349 +logic.rhs4349: %t20 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t20, ptr %a21 - store { ptr, i64, i64 } { ptr @.str.2583, i64 2, i64 0 }, ptr %a22 + store { ptr, i64, i64 } { ptr @.str.2670, 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.rend4131 -logic.rend4131: - br label %logic.end4130 -logic.end4130: - %t25 = phi i1 [ true, %logic.from4128 ], [ %t24, %logic.rend4131 ] - br label %logic.from4132 -logic.from4132: - br i1 %t25, label %logic.end4134, label %logic.rhs4133 -logic.rhs4133: + br label %logic.rend4351 +logic.rend4351: + br label %logic.end4350 +logic.end4350: + %t25 = phi i1 [ true, %logic.from4348 ], [ %t24, %logic.rend4351 ] + br label %logic.from4352 +logic.from4352: + br i1 %t25, label %logic.end4354, label %logic.rhs4353 +logic.rhs4353: %t26 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t26, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.2584, i64 2, i64 0 }, ptr %a28 + store { ptr, i64, i64 } { ptr @.str.2671, 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.rend4135 -logic.rend4135: - br label %logic.end4134 -logic.end4134: - %t31 = phi i1 [ true, %logic.from4132 ], [ %t30, %logic.rend4135 ] - br i1 %t31, label %then4136, label %endif4138 -then4136: + br label %logic.rend4355 +logic.rend4355: + br label %logic.end4354 +logic.end4354: + %t31 = phi i1 [ true, %logic.from4352 ], [ %t30, %logic.rend4355 ] + br i1 %t31, label %then4356, label %endif4358 +then4356: %t32 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 1, 0 %t33 = insertvalue %S.gen.SizeAlign %t32, i64 1, 1 + call void @finch_str_drop(ptr %a8) ret %S.gen.SizeAlign %t33 -endif4138: +endif4358: %t34 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t34, ptr %a35 - store { ptr, i64, i64 } { ptr @.str.2585, i64 3, i64 0 }, ptr %a36 + store { ptr, i64, i64 } { ptr @.str.2672, 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.from4139 -logic.from4139: - br i1 %t38, label %logic.end4141, label %logic.rhs4140 -logic.rhs4140: + br label %logic.from4359 +logic.from4359: + br i1 %t38, label %logic.end4361, label %logic.rhs4360 +logic.rhs4360: %t39 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t39, ptr %a40 - store { ptr, i64, i64 } { ptr @.str.2586, i64 3, i64 0 }, ptr %a41 + store { ptr, i64, i64 } { ptr @.str.2673, 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.rend4142 -logic.rend4142: - br label %logic.end4141 -logic.end4141: - %t44 = phi i1 [ true, %logic.from4139 ], [ %t43, %logic.rend4142 ] - br i1 %t44, label %then4143, label %endif4145 -then4143: + br label %logic.rend4362 +logic.rend4362: + br label %logic.end4361 +logic.end4361: + %t44 = phi i1 [ true, %logic.from4359 ], [ %t43, %logic.rend4362 ] + br i1 %t44, label %then4363, label %endif4365 +then4363: %t45 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 2, 0 %t46 = insertvalue %S.gen.SizeAlign %t45, i64 2, 1 + call void @finch_str_drop(ptr %a8) ret %S.gen.SizeAlign %t46 -endif4145: +endif4365: %t47 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t47, ptr %a48 - store { ptr, i64, i64 } { ptr @.str.2587, i64 3, i64 0 }, ptr %a49 + store { ptr, i64, i64 } { ptr @.str.2674, 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.from4146 -logic.from4146: - br i1 %t51, label %logic.end4148, label %logic.rhs4147 -logic.rhs4147: + br label %logic.from4366 +logic.from4366: + br i1 %t51, label %logic.end4368, label %logic.rhs4367 +logic.rhs4367: %t52 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t52, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.2588, i64 3, i64 0 }, ptr %a54 + store { ptr, i64, i64 } { ptr @.str.2675, 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.rend4149 -logic.rend4149: - br label %logic.end4148 -logic.end4148: - %t57 = phi i1 [ true, %logic.from4146 ], [ %t56, %logic.rend4149 ] - br label %logic.from4150 -logic.from4150: - br i1 %t57, label %logic.end4152, label %logic.rhs4151 -logic.rhs4151: + br label %logic.rend4369 +logic.rend4369: + br label %logic.end4368 +logic.end4368: + %t57 = phi i1 [ true, %logic.from4366 ], [ %t56, %logic.rend4369 ] + br label %logic.from4370 +logic.from4370: + br i1 %t57, label %logic.end4372, label %logic.rhs4371 +logic.rhs4371: %t58 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t58, ptr %a59 - store { ptr, i64, i64 } { ptr @.str.2589, i64 3, i64 0 }, ptr %a60 + store { ptr, i64, i64 } { ptr @.str.2676, 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.rend4153 -logic.rend4153: - br label %logic.end4152 -logic.end4152: - %t63 = phi i1 [ true, %logic.from4150 ], [ %t62, %logic.rend4153 ] - br label %logic.from4154 -logic.from4154: - br i1 %t63, label %logic.end4156, label %logic.rhs4155 -logic.rhs4155: + br label %logic.rend4373 +logic.rend4373: + br label %logic.end4372 +logic.end4372: + %t63 = phi i1 [ true, %logic.from4370 ], [ %t62, %logic.rend4373 ] + br label %logic.from4374 +logic.from4374: + br i1 %t63, label %logic.end4376, label %logic.rhs4375 +logic.rhs4375: %t64 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t64, ptr %a65 - store { ptr, i64, i64 } { ptr @.str.2590, i64 4, i64 0 }, ptr %a66 + store { ptr, i64, i64 } { ptr @.str.2677, 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.rend4157 -logic.rend4157: - br label %logic.end4156 -logic.end4156: - %t69 = phi i1 [ true, %logic.from4154 ], [ %t68, %logic.rend4157 ] - br i1 %t69, label %then4158, label %endif4160 -then4158: + br label %logic.rend4377 +logic.rend4377: + br label %logic.end4376 +logic.end4376: + %t69 = phi i1 [ true, %logic.from4374 ], [ %t68, %logic.rend4377 ] + br i1 %t69, label %then4378, label %endif4380 +then4378: %t70 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 4, 0 %t71 = insertvalue %S.gen.SizeAlign %t70, i64 4, 1 + call void @finch_str_drop(ptr %a8) ret %S.gen.SizeAlign %t71 -endif4160: +endif4380: %t72 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t72, ptr %a73 - store { ptr, i64, i64 } { ptr @.str.2591, i64 3, i64 0 }, ptr %a74 + store { ptr, i64, i64 } { ptr @.str.2678, 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.from4161 -logic.from4161: - br i1 %t76, label %logic.end4163, label %logic.rhs4162 -logic.rhs4162: + br label %logic.from4381 +logic.from4381: + br i1 %t76, label %logic.end4383, label %logic.rhs4382 +logic.rhs4382: %t77 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t77, ptr %a78 - store { ptr, i64, i64 } { ptr @.str.2592, i64 5, i64 0 }, ptr %a79 + store { ptr, i64, i64 } { ptr @.str.2679, 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.rend4164 -logic.rend4164: - br label %logic.end4163 -logic.end4163: - %t82 = phi i1 [ true, %logic.from4161 ], [ %t81, %logic.rend4164 ] - br i1 %t82, label %then4165, label %endif4167 -then4165: + br label %logic.rend4384 +logic.rend4384: + br label %logic.end4383 +logic.end4383: + %t82 = phi i1 [ true, %logic.from4381 ], [ %t81, %logic.rend4384 ] + br i1 %t82, label %then4385, label %endif4387 +then4385: %t83 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 24, 0 %t84 = insertvalue %S.gen.SizeAlign %t83, i64 8, 1 + call void @finch_str_drop(ptr %a8) ret %S.gen.SizeAlign %t84 -endif4167: +endif4387: %t85 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t85, ptr %a86 - store { ptr, i64, i64 } { ptr @.str.2593, i64 3, i64 0 }, ptr %a87 + store { ptr, i64, i64 } { ptr @.str.2680, 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 %then4168, label %endif4170 -then4168: + br i1 %t89, label %then4388, label %endif4390 +then4388: %t90 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 56, 0 %t91 = insertvalue %S.gen.SizeAlign %t90, i64 8, 1 + call void @finch_str_drop(ptr %a8) ret %S.gen.SizeAlign %t91 -endif4170: +endif4390: %t92 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t92, ptr %a93 - store { ptr, i64, i64 } { ptr @.str.2594, i64 5, i64 0 }, ptr %a94 + store { ptr, i64, i64 } { ptr @.str.2681, 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 %then4171, label %endif4173 -then4171: + br i1 %t96, label %then4391, label %endif4393 +then4391: %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 %range4174, label %inrange4175 -range4174: - call void @finch_panic_index(ptr @.str.2595, i64 1744, i64 0, i64 %t100) + br i1 %t101, label %range4394, label %inrange4395 +range4394: + call void @finch_panic_index(ptr @.str.2682, i64 1899, i64 0, i64 %t100) unreachable -inrange4175: +inrange4395: %t102 = extractvalue { ptr, i64, i64 } %t99, 0 %t103 = getelementptr inbounds %S.ast.Type, ptr %t102, i64 0 %t104 = load %S.ast.Type, ptr %t103 @@ -38430,23 +44560,24 @@ inrange4175: %t113 = getelementptr inbounds %S.gen.SizeAlign, ptr %a106, i32 0, i32 1 %t114 = load i64, ptr %t113 %t115 = insertvalue %S.gen.SizeAlign %t112, i64 %t114, 1 + call void @finch_str_drop(ptr %a8) ret %S.gen.SizeAlign %t115 -endif4173: +endif4393: %t116 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t116, ptr %a117 - store { ptr, i64, i64 } { ptr @.str.2596, i64 6, i64 0 }, ptr %a118 + store { ptr, i64, i64 } { ptr @.str.2683, 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 %then4176, label %endif4178 -then4176: + br i1 %t120, label %then4396, label %endif4398 +then4396: %t121 = load ptr, ptr %a1 %t122 = icmp eq ptr %t121, null - br i1 %t122, label %panic4179, label %ok4180 -panic4179: - call void @finch_panic(ptr @.str.2597, i64 1748, ptr @.str.2598) + br i1 %t122, label %panic4399, label %ok4400 +panic4399: + call void @finch_panic(ptr @.str.2684, i64 1903, ptr @.str.2685) unreachable -ok4180: - %t123 = getelementptr inbounds %S.gen.Gen, ptr %t121, i32 0, i32 15 +ok4400: + %t123 = getelementptr inbounds %S.gen.Gen, ptr %t121, i32 0, i32 16 %t124 = load ptr, ptr %a1 %t125 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 %t126 = load { ptr, i64, i64 }, ptr %t125 @@ -38456,11 +44587,11 @@ ok4180: %t130 = load { ptr, i64, i64 }, ptr %t123 %t131 = extractvalue { ptr, i64, i64 } %t130, 1 %t132 = icmp uge i64 %t129, %t131 - br i1 %t132, label %range4181, label %inrange4182 -range4181: - call void @finch_panic_index(ptr @.str.2599, i64 1748, i64 %t129, i64 %t131) + br i1 %t132, label %range4401, label %inrange4402 +range4401: + call void @finch_panic_index(ptr @.str.2686, i64 1903, i64 %t129, i64 %t131) unreachable -inrange4182: +inrange4402: %t133 = extractvalue { ptr, i64, i64 } %t130, 0 %t134 = getelementptr inbounds %S.gen.StructDef, ptr %t133, i64 %t129 %t135 = load %S.gen.StructDef, ptr %t134 @@ -38470,28 +44601,30 @@ inrange4182: 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 %then4183, label %endif4185 -then4183: + br i1 %t141, label %then4403, label %endif4405 +then4403: %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 %t145 = getelementptr inbounds %S.gen.StructDef, ptr %a139, i32 0, i32 10 %t146 = load i64, ptr %t145 %t147 = insertvalue %S.gen.SizeAlign %t144, i64 %t146, 1 + call void @finch.drop.S_gen_StructDef(ptr %a139) + call void @finch_str_drop(ptr %a8) ret %S.gen.SizeAlign %t147 -endif4185: +endif4405: 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.cond4186 -each.cond4186: + br label %each.cond4406 +each.cond4406: %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.body4187, label %each.end4189 -each.body4187: + br i1 %t155, label %each.body4407, label %each.end4409 +each.body4407: %t156 = load ptr, ptr %t150 %t157 = getelementptr inbounds %S.ast.Type, ptr %t156, i64 %t154 %t158 = load %S.ast.Type, ptr %t157 @@ -38512,30 +44645,33 @@ each.body4187: %t172 = load i64, ptr %t171 %t173 = load i64, ptr %a149 %t174 = icmp sgt i64 %t172, %t173 - br i1 %t174, label %then4190, label %endif4192 -then4190: + br i1 %t174, label %then4410, label %endif4412 +then4410: %t175 = getelementptr inbounds %S.gen.SizeAlign, ptr %a163, i32 0, i32 1 %t176 = load i64, ptr %t175 store i64 %t176, ptr %a149 - br label %endif4192 -endif4192: - br label %each.step4188 -each.step4188: + br label %endif4412 +endif4412: + br label %each.step4408 +each.step4408: %t177 = load i64, ptr %a151 %t178 = add i64 %t177, 1 store i64 %t178, ptr %a151 - br label %each.cond4186 -each.end4189: + br label %each.cond4406 +each.end4409: %t179 = load i64, ptr %a148 %t180 = load i64, ptr %a149 %t181 = call i64 @finch.gen.alignUp(i64 %t179, i64 %t180) %t182 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 %t181, 0 %t183 = load i64, ptr %a149 %t184 = insertvalue %S.gen.SizeAlign %t182, i64 %t183, 1 + call void @finch.drop.S_gen_StructDef(ptr %a139) + call void @finch_str_drop(ptr %a8) ret %S.gen.SizeAlign %t184 -endif4178: +endif4398: %t185 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 8, 0 %t186 = insertvalue %S.gen.SizeAlign %t185, i64 8, 1 + call void @finch_str_drop(ptr %a8) ret %S.gen.SizeAlign %t186 } @@ -38550,33 +44686,31 @@ entry: %a13 = alloca i64, align 16 %a21 = alloca %S.ast.Type, align 16 %a25 = alloca %S.gen.SizeAlign, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 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 %then4193, label %endif4195 -then4193: + br i1 %t4, label %then4413, label %endif4415 +then4413: %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 -endif4195: +endif4415: 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.cond4196 -each.cond4196: + br label %each.cond4416 +each.cond4416: %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.body4197, label %each.end4199 -each.body4197: + br i1 %t17, label %each.body4417, label %each.end4419 +each.body4417: %t18 = load ptr, ptr %t12 %t19 = getelementptr inbounds %S.ast.Type, ptr %t18, i64 %t16 %t20 = load %S.ast.Type, ptr %t19 @@ -38604,18 +44738,15 @@ each.body4197: %t38 = load i64, ptr %a11 %t39 = add i64 %t38, %t37 store i64 %t39, ptr %a11 - br label %each.step4198 -each.step4198: + br label %each.step4418 +each.step4418: %t40 = load i64, ptr %a13 %t41 = add i64 %t40, 1 store i64 %t41, ptr %a13 - br label %each.cond4196 -each.end4199: + br label %each.cond4416 +each.end4419: %t42 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t42, ptr %a43 - call void @finch.copy.arr_int(ptr %a44, ptr %a43) - %t45 = load { ptr, i64, i64 }, ptr %a44 - ret { ptr, i64, i64 } %t45 + ret { ptr, i64, i64 } %t42 } define internal i64 @finch.gen.dbgMember(ptr %p0, { ptr, i64, i64 } %p1, i64 %p2, i64 %p3, i64 %p4, i64 %p5, i64 %p6, i64 %p7) { @@ -38634,47 +44765,67 @@ entry: %a15 = alloca { ptr, i64, i64 }, align 16 %a16 = alloca { ptr, i64, i64 }, align 16 %a17 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 + %a18 = 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 %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 + %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 + %a32 = alloca { ptr, i64, i64 }, align 16 %a35 = alloca { ptr, i64, i64 }, align 16 %a37 = alloca { ptr, i64, i64 }, align 16 %a38 = alloca { ptr, i64, i64 }, align 16 %a39 = alloca { ptr, i64, i64 }, align 16 - %a42 = 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 %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 + %a51 = 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 %a55 = 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 %a59 = alloca { ptr, i64, i64 }, align 16 %a60 = 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 %a66 = alloca { ptr, i64, i64 }, align 16 %a67 = alloca { ptr, i64, i64 }, align 16 - %a69 = 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 - %a74 = alloca { ptr, i64, i64 }, align 16 + %a72 = 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 %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 + %a84 = alloca { ptr, i64, i64 }, align 16 + %a85 = alloca { ptr, i64, i64 }, align 16 + %a86 = alloca { ptr, i64, i64 }, align 16 + %a87 = alloca { ptr, i64, i64 }, align 16 + %a90 = 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 + %a98 = 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 + %a104 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store { ptr, i64, i64 } %p1, ptr %a2 store i64 %p2, ptr %a3 @@ -38685,81 +44836,121 @@ entry: store i64 %p7, ptr %a8 %t9 = load ptr, ptr %a1 %t10 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.2600, i64 42, i64 0 }, ptr %a12 + store { ptr, i64, i64 } { ptr @.str.2687, 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.2601, i64 11, i64 0 }, ptr %a17 + store { ptr, i64, i64 } { ptr @.str.2688, 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 - call void @finch_str_from_int(ptr %a20, i64 %t19) - %t21 = load { ptr, i64, i64 }, ptr %a20 - store { ptr, i64, i64 } %t18, 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.2602, 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 - call void @finch_str_from_int(ptr %a31, i64 %t30) - %t32 = load { ptr, i64, i64 }, ptr %a31 - store { ptr, i64, i64 } %t29, ptr %a34 - store { ptr, i64, i64 } %t32, 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 %a38 - store { ptr, i64, i64 } { ptr @.str.2603, i64 8, i64 0 }, ptr %a39 + store { ptr, i64, i64 } %t14, ptr %a18 + call void @finch_str_drop(ptr %a18) + %t19 = load { ptr, i64, i64 }, ptr %a15 + %t20 = load i64, ptr %a3 + call void @finch_str_from_int(ptr %a21, i64 %t20) + %t22 = load { ptr, i64, i64 }, ptr %a21 + store { ptr, i64, i64 } %t19, ptr %a24 + store { ptr, i64, i64 } %t22, ptr %a25 + call void @finch_str_concat(ptr %a23, ptr %a24, ptr %a25) + store { ptr, i64, i64 } %t19, ptr %a26 + call void @finch_str_drop(ptr %a26) + store { ptr, i64, i64 } %t22, ptr %a27 + call void @finch_str_drop(ptr %a27) + %t28 = load { ptr, i64, i64 }, ptr %a23 + store { ptr, i64, i64 } %t28, ptr %a30 + store { ptr, i64, i64 } { ptr @.str.2689, i64 9, i64 0 }, ptr %a31 + call void @finch_str_concat(ptr %a29, ptr %a30, ptr %a31) + store { ptr, i64, i64 } %t28, ptr %a32 + call void @finch_str_drop(ptr %a32) + %t33 = load { ptr, i64, i64 }, ptr %a29 + %t34 = load i64, ptr %a4 + call void @finch_str_from_int(ptr %a35, i64 %t34) + %t36 = load { ptr, i64, i64 }, ptr %a35 + store { ptr, i64, i64 } %t33, 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 - %t41 = load i64, ptr %a5 - call void @finch_str_from_int(ptr %a42, i64 %t41) - %t43 = load { ptr, i64, i64 }, ptr %a42 - store { ptr, i64, i64 } %t40, 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.2604, 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 - %t53 = call { ptr, i64, i64 } @finch.gen.mdRef(i64 %t52) - store { ptr, i64, i64 } %t51, 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.2605, 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 - call void @finch_str_from_int(ptr %a63, i64 %t62) - %t64 = load { ptr, i64, i64 }, ptr %a63 - store { ptr, i64, i64 } %t61, 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.2606, 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 - call void @finch_str_from_int(ptr %a74, i64 %t73) - %t75 = load { ptr, i64, i64 }, ptr %a74 - store { ptr, i64, i64 } %t72, 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.2607, 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) - ret i64 %t84 + store { ptr, i64, i64 } %t33, ptr %a40 + call void @finch_str_drop(ptr %a40) + store { ptr, i64, i64 } %t36, ptr %a41 + call void @finch_str_drop(ptr %a41) + %t42 = load { ptr, i64, i64 }, ptr %a37 + store { ptr, i64, i64 } %t42, ptr %a44 + store { ptr, i64, i64 } { ptr @.str.2690, i64 8, i64 0 }, ptr %a45 + call void @finch_str_concat(ptr %a43, ptr %a44, ptr %a45) + store { ptr, i64, i64 } %t42, ptr %a46 + call void @finch_str_drop(ptr %a46) + %t47 = load { ptr, i64, i64 }, ptr %a43 + %t48 = load i64, ptr %a5 + call void @finch_str_from_int(ptr %a49, i64 %t48) + %t50 = load { ptr, i64, i64 }, ptr %a49 + store { ptr, i64, i64 } %t47, ptr %a52 + store { ptr, i64, i64 } %t50, ptr %a53 + call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) + store { ptr, i64, i64 } %t47, ptr %a54 + call void @finch_str_drop(ptr %a54) + store { ptr, i64, i64 } %t50, ptr %a55 + call void @finch_str_drop(ptr %a55) + %t56 = load { ptr, i64, i64 }, ptr %a51 + store { ptr, i64, i64 } %t56, ptr %a58 + store { ptr, i64, i64 } { ptr @.str.2691, i64 12, i64 0 }, ptr %a59 + call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) + store { ptr, i64, i64 } %t56, ptr %a60 + call void @finch_str_drop(ptr %a60) + %t61 = load { ptr, i64, i64 }, ptr %a57 + %t62 = load i64, ptr %a6 + %t63 = call { ptr, i64, i64 } @finch.gen.mdRef(i64 %t62) + store { ptr, i64, i64 } %t61, ptr %a65 + store { ptr, i64, i64 } %t63, ptr %a66 + call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) + store { ptr, i64, i64 } %t61, ptr %a67 + call void @finch_str_drop(ptr %a67) + store { ptr, i64, i64 } %t63, ptr %a68 + call void @finch_str_drop(ptr %a68) + %t69 = load { ptr, i64, i64 }, ptr %a64 + store { ptr, i64, i64 } %t69, ptr %a71 + store { ptr, i64, i64 } { ptr @.str.2692, i64 8, i64 0 }, ptr %a72 + call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) + store { ptr, i64, i64 } %t69, ptr %a73 + call void @finch_str_drop(ptr %a73) + %t74 = load { ptr, i64, i64 }, ptr %a70 + %t75 = load i64, ptr %a7 + call void @finch_str_from_int(ptr %a76, i64 %t75) + %t77 = load { ptr, i64, i64 }, ptr %a76 + store { ptr, i64, i64 } %t74, ptr %a79 + store { ptr, i64, i64 } %t77, ptr %a80 + call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) + store { ptr, i64, i64 } %t74, ptr %a81 + call void @finch_str_drop(ptr %a81) + store { ptr, i64, i64 } %t77, ptr %a82 + call void @finch_str_drop(ptr %a82) + %t83 = load { ptr, i64, i64 }, ptr %a78 + store { ptr, i64, i64 } %t83, ptr %a85 + store { ptr, i64, i64 } { ptr @.str.2693, i64 10, i64 0 }, ptr %a86 + call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) + store { ptr, i64, i64 } %t83, ptr %a87 + call void @finch_str_drop(ptr %a87) + %t88 = load { ptr, i64, i64 }, ptr %a84 + %t89 = load i64, ptr %a8 + call void @finch_str_from_int(ptr %a90, i64 %t89) + %t91 = load { ptr, i64, i64 }, ptr %a90 + store { ptr, i64, i64 } %t88, ptr %a93 + store { ptr, i64, i64 } %t91, ptr %a94 + call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) + store { ptr, i64, i64 } %t88, ptr %a95 + call void @finch_str_drop(ptr %a95) + store { ptr, i64, i64 } %t91, ptr %a96 + call void @finch_str_drop(ptr %a96) + %t97 = load { ptr, i64, i64 }, ptr %a92 + store { ptr, i64, i64 } %t97, ptr %a99 + store { ptr, i64, i64 } { ptr @.str.2694, i64 1, i64 0 }, ptr %a100 + call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100) + store { ptr, i64, i64 } %t97, ptr %a101 + call void @finch_str_drop(ptr %a101) + %t102 = load { ptr, i64, i64 }, ptr %a98 + %t103 = call i64 @finch.gen.md(ptr %t9, { ptr, i64, i64 } %t102) + store { ptr, i64, i64 } %t102, ptr %a104 + call void @finch_str_drop(ptr %a104) + ret i64 %t103 } define internal i64 @finch.gen.basicType(ptr %p0, { ptr, i64, i64 } %p1, i64 %p2, { ptr, i64, i64 } %p3) { @@ -38774,55 +44965,76 @@ entry: %a11 = alloca { ptr, i64, i64 }, align 16 %a12 = alloca { ptr, i64, i64 }, align 16 %a13 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 + %a14 = alloca { ptr, i64, i64 }, align 16 + %a17 = alloca { ptr, i64, i64 }, align 16 %a19 = 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 %a23 = 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 %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 + %a34 = alloca { ptr, i64, i64 }, align 16 + %a36 = alloca { ptr, i64, i64 }, align 16 + %a37 = alloca { ptr, i64, i64 }, align 16 + %a38 = alloca { ptr, i64, i64 }, align 16 + %a39 = alloca { ptr, i64, i64 }, align 16 + %a42 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store { ptr, i64, i64 } %p1, ptr %a2 store i64 %p2, ptr %a3 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.2608, i64 20, i64 0 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.2695, 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.2609, i64 9, i64 0 }, ptr %a13 + store { ptr, i64, i64 } { ptr @.str.2696, 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 - call void @finch_str_from_int(ptr %a16, i64 %t15) - %t17 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } %t14, 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.2610, 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 - store { ptr, i64, i64 } %t25, 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.2611, i64 1, i64 0 }, ptr %a33 + store { ptr, i64, i64 } %t10, ptr %a14 + call void @finch_str_drop(ptr %a14) + %t15 = load { ptr, i64, i64 }, ptr %a11 + %t16 = load i64, ptr %a3 + call void @finch_str_from_int(ptr %a17, i64 %t16) + %t18 = load { ptr, i64, i64 }, ptr %a17 + store { ptr, i64, i64 } %t15, ptr %a20 + store { ptr, i64, i64 } %t18, ptr %a21 + call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) + store { ptr, i64, i64 } %t15, ptr %a22 + call void @finch_str_drop(ptr %a22) + store { ptr, i64, i64 } %t18, ptr %a23 + call void @finch_str_drop(ptr %a23) + %t24 = load { ptr, i64, i64 }, ptr %a19 + store { ptr, i64, i64 } %t24, ptr %a26 + store { ptr, i64, i64 } { ptr @.str.2697, i64 12, i64 0 }, ptr %a27 + call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) + store { ptr, i64, i64 } %t24, ptr %a28 + call void @finch_str_drop(ptr %a28) + %t29 = load { ptr, i64, i64 }, ptr %a25 + %t30 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t29, 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 = call i64 @finch.gen.md(ptr %t5, { ptr, i64, i64 } %t34) - ret i64 %t35 + store { ptr, i64, i64 } %t29, ptr %a34 + call void @finch_str_drop(ptr %a34) + %t35 = load { ptr, i64, i64 }, ptr %a31 + store { ptr, i64, i64 } %t35, ptr %a37 + store { ptr, i64, i64 } { ptr @.str.2698, i64 1, i64 0 }, ptr %a38 + call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) + store { ptr, i64, i64 } %t35, ptr %a39 + call void @finch_str_drop(ptr %a39) + %t40 = load { ptr, i64, i64 }, ptr %a36 + %t41 = call i64 @finch.gen.md(ptr %t5, { ptr, i64, i64 } %t40) + store { ptr, i64, i64 } %t40, ptr %a42 + call void @finch_str_drop(ptr %a42) + ret i64 %t41 } define internal i64 @finch.gen.diType(ptr %p0, %S.ast.Type %p1) { @@ -38839,244 +45051,319 @@ entry: %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 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 + %a25 = alloca { ptr, i64, i64 }, align 16 + %a27 = alloca { ptr, i64, i64 }, align 16 + %a32 = alloca { ptr, i64, i64 }, align 16 + %a39 = alloca { ptr, i64, i64 }, align 16 %a42 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca i64, align 16 - %a58 = alloca i64, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 + %a43 = alloca { ptr, i64, i64 }, align 16 + %a49 = alloca i64, align 16 + %a59 = alloca i64, align 16 %a61 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 + %a62 = alloca { ptr, i64, i64 }, align 16 %a68 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 + %a69 = alloca { ptr, i64, i64 }, align 16 %a75 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 + %a76 = alloca { ptr, i64, i64 }, align 16 %a82 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 + %a83 = alloca { ptr, i64, i64 }, align 16 %a89 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca %S.gen.EnumDef, align 16 - %a126 = alloca %S.gen.EnumDef, align 16 + %a90 = alloca { ptr, i64, i64 }, align 16 + %a97 = alloca { ptr, i64, i64 }, align 16 + %a101 = alloca { ptr, i64, i64 }, align 16 + %a109 = alloca { ptr, i64, i64 }, align 16 + %a110 = alloca { ptr, i64, i64 }, align 16 %a128 = alloca %S.gen.EnumDef, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca i64, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 + %a129 = alloca %S.gen.EnumDef, align 16 + %a131 = alloca %S.gen.EnumDef, align 16 + %a132 = alloca { ptr, i64, i64 }, align 16 + %a136 = alloca i64, align 16 + %a149 = alloca { ptr, i64, i64 }, align 16 %a150 = alloca { ptr, i64, i64 }, align 16 %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = 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 + %a156 = alloca { ptr, i64, i64 }, align 16 %a166 = alloca { ptr, i64, i64 }, align 16 %a168 = alloca { ptr, i64, i64 }, align 16 %a169 = alloca { ptr, i64, i64 }, align 16 %a170 = 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 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 + %a171 = alloca { ptr, i64, i64 }, align 16 + %a172 = alloca { ptr, i64, i64 }, align 16 + %a174 = alloca { ptr, i64, i64 }, align 16 + %a175 = alloca { ptr, i64, i64 }, align 16 + %a176 = alloca { ptr, i64, i64 }, align 16 + %a177 = alloca { ptr, i64, i64 }, align 16 + %a180 = alloca { ptr, i64, i64 }, align 16 + %a191 = alloca { ptr, i64, i64 }, align 16 %a192 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 + %a193 = 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 %a198 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 + %a201 = alloca { ptr, i64, i64 }, align 16 %a203 = 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 %a207 = 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 %a211 = alloca { ptr, i64, i64 }, align 16 %a212 = alloca { ptr, i64, i64 }, align 16 + %a215 = alloca { ptr, i64, i64 }, align 16 + %a216 = alloca { ptr, i64, i64 }, align 16 + %a218 = 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 %a222 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca i32, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca i64, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = 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 + %a227 = alloca { ptr, i64, i64 }, align 16 + %a230 = alloca { ptr, i64, i64 }, align 16 + %a238 = alloca { ptr, i64, i64 }, align 16 + %a239 = alloca i32, align 16 + %a250 = alloca { ptr, i64, i64 }, align 16 + %a251 = alloca { ptr, i64, i64 }, align 16 + %a254 = alloca i64, align 16 + %a270 = alloca { ptr, i64, i64 }, align 16 + %a271 = alloca { ptr, i64, i64 }, align 16 %a272 = alloca { ptr, i64, i64 }, align 16 %a273 = alloca { ptr, i64, i64 }, align 16 - %a285 = alloca %S.gen.SizeAlign, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a291 = 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 + %a278 = 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 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca i64, align 16 + %a305 = alloca %S.gen.SizeAlign, 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 - %a315 = alloca { ptr, i64, i64 }, align 16 + %a314 = alloca { ptr, i64, i64 }, align 16 %a316 = alloca { ptr, i64, i64 }, align 16 %a317 = 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 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 + %a318 = alloca { ptr, i64, i64 }, align 16 + %a319 = alloca { ptr, i64, i64 }, align 16 + %a322 = alloca { ptr, i64, i64 }, align 16 + %a323 = alloca i64, align 16 + %a334 = alloca { ptr, i64, i64 }, align 16 + %a335 = alloca { ptr, i64, i64 }, align 16 %a336 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 + %a337 = 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 - %a344 = alloca { ptr, i64, i64 }, align 16 + %a350 = 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 - %a367 = alloca %S.ast.Type, 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 %a369 = alloca { ptr, i64, i64 }, align 16 %a370 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca %S.ast.Type, align 16 - %a381 = alloca %S.ast.Type, align 16 - %a388 = 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 + %a375 = alloca { ptr, i64, i64 }, align 16 + %a387 = alloca { ptr, i64, i64 }, align 16 %a389 = alloca { ptr, i64, i64 }, align 16 %a390 = 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 - %a397 = alloca i64, align 16 - %a401 = alloca i64, align 16 - %a407 = alloca i64, align 16 - %a413 = alloca i64, align 16 - %a419 = alloca i64, align 16 - %a422 = alloca { ptr, i64, i64 }, align 16 + %a395 = alloca { ptr, i64, i64 }, align 16 + %a400 = alloca %S.ast.Type, align 16 + %a402 = alloca { ptr, i64, i64 }, align 16 + %a403 = alloca { ptr, i64, i64 }, align 16 + %a413 = alloca %S.ast.Type, align 16 + %a414 = alloca %S.ast.Type, align 16 + %a417 = alloca %S.ast.Type, 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 - %a427 = 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 - %a433 = alloca { ptr, i64, i64 }, align 16 %a434 = alloca { ptr, i64, i64 }, align 16 - %a435 = 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 - %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 - %a448 = alloca { ptr, i64, i64 }, align 16 - %a449 = alloca { ptr, i64, i64 }, align 16 - %a450 = alloca { ptr, i64, i64 }, align 16 - %a453 = 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 + %a435 = alloca i64, align 16 + %a439 = alloca %S.ast.Type, align 16 + %a440 = alloca i64, align 16 + %a446 = alloca i64, align 16 + %a452 = alloca i64, align 16 + %a458 = alloca i64, align 16 %a461 = alloca { ptr, i64, i64 }, align 16 + %a462 = alloca { ptr, i64, i64 }, align 16 + %a463 = alloca { ptr, i64, i64 }, align 16 %a464 = alloca { ptr, i64, i64 }, align 16 %a466 = alloca { ptr, i64, i64 }, align 16 %a467 = alloca { ptr, i64, i64 }, align 16 %a468 = alloca { ptr, i64, i64 }, align 16 - %a470 = alloca { ptr, i64, i64 }, align 16 - %a471 = alloca { ptr, i64, i64 }, align 16 + %a469 = alloca { ptr, i64, i64 }, align 16 %a472 = alloca { ptr, i64, i64 }, align 16 - %a484 = alloca { ptr, i64, i64 }, align 16 - %a485 = alloca { ptr, i64, i64 }, align 16 - %a491 = alloca i64, align 16 - %a494 = alloca i64, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 + %a474 = alloca { ptr, i64, i64 }, align 16 + %a475 = alloca { ptr, i64, i64 }, align 16 + %a476 = alloca { ptr, i64, i64 }, align 16 + %a477 = alloca { ptr, i64, i64 }, align 16 + %a478 = alloca { ptr, i64, i64 }, align 16 + %a480 = 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 + %a486 = alloca { ptr, i64, i64 }, align 16 + %a488 = alloca { ptr, i64, i64 }, align 16 + %a489 = alloca { ptr, i64, i64 }, align 16 + %a490 = alloca { ptr, i64, i64 }, align 16 + %a491 = alloca { ptr, i64, i64 }, align 16 + %a492 = 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 + %a500 = alloca { ptr, i64, i64 }, align 16 + %a502 = alloca { ptr, i64, i64 }, align 16 + %a503 = alloca { ptr, i64, i64 }, align 16 + %a504 = alloca { ptr, i64, i64 }, align 16 + %a505 = alloca { ptr, i64, i64 }, align 16 + %a506 = alloca { ptr, i64, i64 }, align 16 %a508 = alloca { ptr, i64, i64 }, align 16 - %a509 = alloca i64, align 16 - %a513 = alloca i64, align 16 - %a535 = alloca { ptr, i64, i64 }, align 16 + %a509 = alloca { ptr, i64, i64 }, align 16 + %a510 = alloca { ptr, i64, i64 }, align 16 + %a511 = alloca { ptr, i64, i64 }, align 16 + %a514 = 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 + %a519 = alloca { ptr, i64, i64 }, align 16 + %a520 = 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 + %a525 = alloca { ptr, i64, i64 }, align 16 %a537 = alloca { ptr, i64, i64 }, align 16 - %a538 = alloca { ptr, i64, i64 }, align 16 %a539 = alloca { ptr, i64, i64 }, align 16 - %a549 = alloca { ptr, i64, i64 }, align 16 - %a550 = alloca { ptr, i64, i64 }, align 16 - %a551 = 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 - %a558 = alloca { ptr, i64, i64 }, align 16 - %a560 = alloca { ptr, i64, i64 }, align 16 - %a561 = alloca { ptr, i64, i64 }, align 16 - %a562 = alloca { ptr, i64, i64 }, align 16 + %a540 = alloca { ptr, i64, i64 }, align 16 + %a546 = alloca %S.ast.Type, align 16 + %a547 = alloca i64, align 16 + %a550 = alloca i64, align 16 + %a563 = 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 - %a569 = alloca { ptr, i64, i64 }, align 16 - %a570 = 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 - %a576 = alloca { ptr, i64, i64 }, align 16 - %a577 = alloca { ptr, i64, i64 }, align 16 - %a578 = alloca { ptr, i64, i64 }, align 16 - %a590 = alloca { ptr, i64, i64 }, align 16 + %a565 = alloca i64, align 16 + %a569 = alloca i64, align 16 %a591 = alloca { ptr, i64, i64 }, align 16 - %a609 = alloca %S.gen.StructDef, align 16 - %a610 = alloca %S.gen.StructDef, align 16 - %a612 = alloca %S.gen.StructDef, align 16 - %a616 = alloca { ptr, i64, i64 }, align 16 - %a620 = alloca %S.gen.SizeAlign, align 16 + %a593 = alloca { ptr, i64, i64 }, align 16 + %a594 = alloca { ptr, i64, i64 }, align 16 + %a595 = alloca { ptr, i64, i64 }, align 16 + %a596 = 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 + %a609 = 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 + %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 - %a625 = alloca i64, align 16 - %a638 = alloca %S.gen.SizeAlign, align 16 - %a673 = alloca { ptr, i64, i64 }, align 16 - %a675 = alloca { ptr, i64, i64 }, align 16 - %a676 = alloca { ptr, i64, i64 }, align 16 - %a677 = alloca { ptr, i64, i64 }, align 16 - %a687 = alloca { ptr, i64, i64 }, align 16 + %a622 = alloca { ptr, i64, i64 }, align 16 + %a623 = 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 + %a628 = alloca { ptr, i64, i64 }, align 16 + %a631 = alloca { ptr, i64, i64 }, align 16 + %a632 = 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 + %a638 = 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 + %a643 = alloca { ptr, i64, i64 }, align 16 + %a655 = alloca { ptr, i64, i64 }, align 16 + %a657 = alloca { ptr, i64, i64 }, align 16 + %a658 = alloca { ptr, i64, i64 }, align 16 + %a676 = alloca %S.gen.StructDef, align 16 + %a677 = alloca %S.gen.StructDef, align 16 + %a679 = alloca %S.gen.StructDef, align 16 + %a683 = alloca { ptr, i64, i64 }, align 16 + %a687 = alloca %S.gen.SizeAlign, align 16 %a688 = alloca { ptr, i64, i64 }, align 16 - %a689 = 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 - %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 - %a702 = alloca { ptr, i64, i64 }, align 16 - %a703 = alloca { ptr, i64, i64 }, align 16 - %a704 = 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 - %a720 = alloca { ptr, i64, i64 }, align 16 - %a721 = alloca { ptr, i64, i64 }, align 16 - %a723 = alloca { ptr, i64, i64 }, align 16 - %a724 = alloca { ptr, i64, i64 }, align 16 - %a725 = alloca { ptr, i64, i64 }, align 16 - %a727 = alloca { ptr, i64, i64 }, align 16 - %a728 = alloca { ptr, i64, i64 }, align 16 - %a729 = alloca { ptr, i64, i64 }, align 16 - %a741 = alloca { ptr, i64, i64 }, align 16 + %a692 = alloca i64, align 16 + %a705 = alloca %S.gen.SizeAlign, align 16 + %a740 = alloca { ptr, i64, i64 }, align 16 %a742 = alloca { ptr, i64, i64 }, align 16 %a743 = 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 - %a747 = alloca { ptr, i64, i64 }, align 16 - %a764 = alloca { ptr, i64, i64 }, align 16 - %a765 = alloca i32, align 16 + %a755 = alloca { ptr, i64, i64 }, align 16 + %a756 = alloca { ptr, i64, i64 }, align 16 + %a757 = alloca { ptr, i64, i64 }, align 16 + %a759 = alloca { ptr, i64, i64 }, align 16 + %a760 = alloca { ptr, i64, i64 }, align 16 + %a761 = alloca { ptr, i64, i64 }, align 16 + %a762 = alloca { ptr, i64, i64 }, align 16 + %a765 = alloca { ptr, i64, i64 }, align 16 + %a767 = 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 + %a771 = 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 + %a781 = alloca { ptr, i64, i64 }, align 16 + %a783 = 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 + %a789 = 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 + %a798 = 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 + %a802 = 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 + %a807 = alloca { ptr, i64, i64 }, align 16 + %a819 = 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 + %a825 = alloca { ptr, i64, i64 }, align 16 + %a826 = alloca { ptr, i64, i64 }, align 16 + %a827 = alloca { ptr, i64, i64 }, align 16 + %a828 = alloca { ptr, i64, i64 }, align 16 + %a840 = alloca { ptr, i64, i64 }, align 16 + %a847 = alloca { ptr, i64, i64 }, align 16 + %a848 = alloca i32, align 16 store ptr %p0, ptr %a1 store %S.ast.Type %p1, ptr %a2 %t3 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 @@ -39087,1138 +45374,1312 @@ 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.2612, i64 4, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.2699, 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.from4200 -logic.from4200: - br i1 %t13, label %logic.end4202, label %logic.rhs4201 -logic.rhs4201: + br label %logic.from4420 +logic.from4420: + br i1 %t13, label %logic.end4422, label %logic.rhs4421 +logic.rhs4421: %t14 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t14, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.2613, i64 4, i64 0 }, ptr %a16 + store { ptr, i64, i64 } { ptr @.str.2700, 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.rend4203 -logic.rend4203: - br label %logic.end4202 -logic.end4202: - %t19 = phi i1 [ true, %logic.from4200 ], [ %t18, %logic.rend4203 ] - br i1 %t19, label %then4204, label %endif4206 -then4204: + br label %logic.rend4423 +logic.rend4423: + br label %logic.end4422 +logic.end4422: + %t19 = phi i1 [ true, %logic.from4420 ], [ %t18, %logic.rend4423 ] + br i1 %t19, label %then4424, label %endif4426 +then4424: + call void @finch_str_drop(ptr %a8) ret i64 -1 -endif4206: +endif4426: %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.2614, i64 2, i64 0 }, ptr %a23 + store { ptr, i64, i64 } { ptr @.str.2701, 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 %panic4207, label %ok4208 -panic4207: - call void @finch_panic(ptr @.str.2615, i64 1797, ptr @.str.2616) + store { ptr, i64, i64 } %t21, ptr %a25 + call void @finch_str_drop(ptr %a25) + %t26 = load { ptr, i64, i64 }, ptr %a22 + store { ptr, i64, i64 } %t26, ptr %a27 + %t28 = load ptr, ptr %a1 + %t29 = icmp eq ptr %t28, null + br i1 %t29, label %panic4427, label %ok4428 +panic4427: + call void @finch_panic(ptr @.str.2702, i64 1952, ptr @.str.2703) unreachable -ok4208: - %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 %then4209, label %endif4211 -then4209: - %t34 = load ptr, ptr %a1 - %t35 = icmp eq ptr %t34, null - br i1 %t35, label %panic4212, label %ok4213 -panic4212: - call void @finch_panic(ptr @.str.2617, i64 1798, ptr @.str.2618) +ok4428: + %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 33 + %t31 = load { ptr, i64, i64 }, ptr %a27 + store { ptr, i64, i64 } %t31, ptr %a32 + %t33 = call i64 @finch_map_find(ptr %t30, ptr %a32, 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) + %t34 = icmp sge i64 %t33, 0 + br i1 %t34, label %then4429, label %endif4431 +then4429: + %t35 = load ptr, ptr %a1 + %t36 = icmp eq ptr %t35, null + br i1 %t36, label %panic4432, label %ok4433 +panic4432: + call void @finch_panic(ptr @.str.2704, i64 1953, ptr @.str.2705) unreachable -ok4213: - %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.missing4214, label %map.found4215 -map.missing4214: - 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.2619, i64 1798, ptr %a41) +ok4433: + %t37 = getelementptr inbounds %S.gen.Gen, ptr %t35, i32 0, i32 33 + %t38 = load { ptr, i64, i64 }, ptr %a27 + store { ptr, i64, i64 } %t38, ptr %a39 + %t40 = call i64 @finch_map_find(ptr %t37, ptr %a39, 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) + %t41 = icmp slt i64 %t40, 0 + br i1 %t41, label %map.missing4434, label %map.found4435 +map.missing4434: + store { ptr, i64, i64 } zeroinitializer, ptr %a42 + store { ptr, i64, i64 } %t38, ptr %a43 + call void @finch_buf_str(ptr %a42, ptr %a43, i32 1) + call void @finch_map_missing(ptr @.str.2706, i64 1953, ptr %a42) unreachable -map.found4215: - %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 -endif4211: - store i64 -1, ptr %a48 - %t49 = load ptr, ptr %a1 - %t50 = icmp eq ptr %t49, null - br i1 %t50, label %panic4216, label %ok4217 -panic4216: - call void @finch_panic(ptr @.str.2620, i64 1801, ptr @.str.2621) +map.found4435: + %t44 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t37, i32 0, i32 0 + %t45 = load ptr, ptr %t44 + %t46 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t45, i64 %t40 + %t47 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t46, i32 0, i32 2 + %t48 = load i64, ptr %t47 + call void @finch_str_drop(ptr %a27) + call void @finch_str_drop(ptr %a8) + ret i64 %t48 +endif4431: + store i64 -1, ptr %a49 + %t50 = load ptr, ptr %a1 + %t51 = icmp eq ptr %t50, null + br i1 %t51, label %panic4436, label %ok4437 +panic4436: + call void @finch_panic(ptr @.str.2707, i64 1956, ptr @.str.2708) unreachable -ok4217: - %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 %range4218, label %inrange4219 -range4218: - call void @finch_panic_index(ptr @.str.2622, i64 1801, i64 0, i64 %t53) +ok4437: + %t52 = getelementptr inbounds %S.gen.Gen, ptr %t50, i32 0, i32 34 + %t53 = load { ptr, i64, i64 }, ptr %t52 + %t54 = extractvalue { ptr, i64, i64 } %t53, 1 + %t55 = icmp uge i64 0, %t54 + br i1 %t55, label %range4438, label %inrange4439 +range4438: + call void @finch_panic_index(ptr @.str.2709, i64 1956, i64 0, i64 %t54) unreachable -inrange4219: - %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.2623, 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 %then4220, label %else4221 -then4220: - %t64 = load ptr, ptr %a1 - %t65 = call i64 @finch.gen.basicType(ptr %t64, { ptr, i64, i64 } { ptr @.str.2624, i64 4, i64 0 }, i64 8, { ptr, i64, i64 } { ptr @.str.2625, i64 14, i64 0 }) - store i64 %t65, ptr %a48 - br label %endif4222 -else4221: - %t66 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t66, ptr %a67 - store { ptr, i64, i64 } { ptr @.str.2626, 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 %then4223, label %else4224 -then4223: - %t71 = load ptr, ptr %a1 - %t72 = call i64 @finch.gen.basicType(ptr %t71, { ptr, i64, i64 } { ptr @.str.2627, i64 4, i64 0 }, i64 8, { ptr, i64, i64 } { ptr @.str.2628, i64 18, i64 0 }) - store i64 %t72, ptr %a48 - br label %endif4225 -else4224: - %t73 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t73, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.2629, 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 %then4226, label %else4227 -then4226: - %t78 = load ptr, ptr %a1 - %t79 = call i64 @finch.gen.basicType(ptr %t78, { ptr, i64, i64 } { ptr @.str.2630, i64 3, i64 0 }, i64 64, { ptr, i64, i64 } { ptr @.str.2631, i64 13, i64 0 }) - store i64 %t79, ptr %a48 - br label %endif4228 -else4227: - %t80 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t80, ptr %a81 - store { ptr, i64, i64 } { ptr @.str.2632, 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 %then4229, label %else4230 -then4229: - %t85 = load ptr, ptr %a1 - %t86 = call i64 @finch.gen.basicType(ptr %t85, { ptr, i64, i64 } { ptr @.str.2633, i64 5, i64 0 }, i64 64, { ptr, i64, i64 } { ptr @.str.2634, i64 12, i64 0 }) - store i64 %t86, ptr %a48 - br label %endif4231 -else4230: - %t87 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t87, ptr %a88 - store { ptr, i64, i64 } { ptr @.str.2635, 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 %then4232, label %else4233 -then4232: - %t92 = load ptr, ptr %a1 - %t93 = call i64 @finch.gen.basicType(ptr %t92, { ptr, i64, i64 } { ptr @.str.2636, i64 3, i64 0 }, i64 32, { ptr, i64, i64 } { ptr @.str.2637, i64 12, i64 0 }) - store i64 %t93, ptr %a48 - br label %endif4234 -else4233: - %t94 = load %S.ast.Type, ptr %a2 - %t95 = call i1 @finch.gen.isInt(%S.ast.Type %t94) - br i1 %t95, label %then4235, label %else4236 -then4235: - store { ptr, i64, i64 } { ptr @.str.2638, 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 %then4238, label %endif4240 -then4238: - store { ptr, i64, i64 } { ptr @.str.2639, i64 13, i64 0 }, ptr %a96 - br label %endif4240 -endif4240: - %t99 = load ptr, ptr %a1 - %t100 = load { ptr, i64, i64 }, ptr %a8 - %t101 = load %S.ast.Type, ptr %a2 - %t102 = call i64 @finch.gen.bitsOf(%S.ast.Type %t101) - %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 %endif4237 -else4236: - %t105 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t105, ptr %a106 - store { ptr, i64, i64 } { ptr @.str.2640, 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 %then4241, label %else4242 -then4241: - %t110 = load ptr, ptr %a1 - %t111 = icmp eq ptr %t110, null - br i1 %t111, label %panic4244, label %ok4245 -panic4244: - call void @finch_panic(ptr @.str.2641, i64 1819, ptr @.str.2642) - unreachable -ok4245: - %t112 = getelementptr inbounds %S.gen.Gen, ptr %t110, i32 0, i32 20 +inrange4439: + %t56 = extractvalue { ptr, i64, i64 } %t53, 0 + %t57 = getelementptr inbounds i64, ptr %t56, i64 0 + %t58 = load i64, ptr %t57 + store i64 %t58, ptr %a59 + %t60 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t60, ptr %a61 + store { ptr, i64, i64 } { ptr @.str.2710, i64 4, i64 0 }, ptr %a62 + %t63 = call i32 @finch_str_eq(ptr %a61, ptr %a62) + %t64 = icmp ne i32 %t63, 0 + br i1 %t64, label %then4440, label %else4441 +then4440: + %t65 = load ptr, ptr %a1 + %t66 = call i64 @finch.gen.basicType(ptr %t65, { ptr, i64, i64 } { ptr @.str.2711, i64 4, i64 0 }, i64 8, { ptr, i64, i64 } { ptr @.str.2712, i64 14, i64 0 }) + store i64 %t66, ptr %a49 + br label %endif4442 +else4441: + %t67 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t67, ptr %a68 + store { ptr, i64, i64 } { ptr @.str.2713, 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 %then4443, label %else4444 +then4443: + %t72 = load ptr, ptr %a1 + %t73 = call i64 @finch.gen.basicType(ptr %t72, { ptr, i64, i64 } { ptr @.str.2714, i64 4, i64 0 }, i64 8, { ptr, i64, i64 } { ptr @.str.2715, i64 18, i64 0 }) + store i64 %t73, ptr %a49 + br label %endif4445 +else4444: + %t74 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t74, ptr %a75 + store { ptr, i64, i64 } { ptr @.str.2716, i64 3, i64 0 }, ptr %a76 + %t77 = call i32 @finch_str_eq(ptr %a75, ptr %a76) + %t78 = icmp ne i32 %t77, 0 + br i1 %t78, label %then4446, label %else4447 +then4446: + %t79 = load ptr, ptr %a1 + %t80 = call i64 @finch.gen.basicType(ptr %t79, { ptr, i64, i64 } { ptr @.str.2717, i64 3, i64 0 }, i64 64, { ptr, i64, i64 } { ptr @.str.2718, i64 13, i64 0 }) + store i64 %t80, ptr %a49 + br label %endif4448 +else4447: + %t81 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t81, ptr %a82 + store { ptr, i64, i64 } { ptr @.str.2719, i64 5, i64 0 }, ptr %a83 + %t84 = call i32 @finch_str_eq(ptr %a82, ptr %a83) + %t85 = icmp ne i32 %t84, 0 + br i1 %t85, label %then4449, label %else4450 +then4449: + %t86 = load ptr, ptr %a1 + %t87 = call i64 @finch.gen.basicType(ptr %t86, { ptr, i64, i64 } { ptr @.str.2720, i64 5, i64 0 }, i64 64, { ptr, i64, i64 } { ptr @.str.2721, i64 12, i64 0 }) + store i64 %t87, ptr %a49 + br label %endif4451 +else4450: + %t88 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t88, ptr %a89 + store { ptr, i64, i64 } { ptr @.str.2722, i64 3, i64 0 }, ptr %a90 + %t91 = call i32 @finch_str_eq(ptr %a89, ptr %a90) + %t92 = icmp ne i32 %t91, 0 + br i1 %t92, label %then4452, label %else4453 +then4452: + %t93 = load ptr, ptr %a1 + %t94 = call i64 @finch.gen.basicType(ptr %t93, { ptr, i64, i64 } { ptr @.str.2723, i64 3, i64 0 }, i64 32, { ptr, i64, i64 } { ptr @.str.2724, i64 12, i64 0 }) + store i64 %t94, ptr %a49 + br label %endif4454 +else4453: + %t95 = load %S.ast.Type, ptr %a2 + %t96 = call i1 @finch.gen.isInt(%S.ast.Type %t95) + br i1 %t96, label %then4455, label %else4456 +then4455: + store { ptr, i64, i64 } { ptr @.str.2725, i64 15, i64 0 }, ptr %a97 + %t98 = load %S.ast.Type, ptr %a2 + %t99 = call i1 @finch.gen.isSigned(%S.ast.Type %t98) + br i1 %t99, label %then4458, label %endif4460 +then4458: + %t100 = load { ptr, i64, i64 }, ptr %a97 + store { ptr, i64, i64 } { ptr @.str.2726, i64 13, i64 0 }, ptr %a97 + store { ptr, i64, i64 } %t100, ptr %a101 + call void @finch_str_drop(ptr %a101) + br label %endif4460 +endif4460: + %t102 = load ptr, ptr %a1 + %t103 = load { ptr, i64, i64 }, ptr %a8 + %t104 = load %S.ast.Type, ptr %a2 + %t105 = call i64 @finch.gen.bitsOf(%S.ast.Type %t104) + %t106 = load { ptr, i64, i64 }, ptr %a97 + %t107 = call i64 @finch.gen.basicType(ptr %t102, { ptr, i64, i64 } %t103, i64 %t105, { ptr, i64, i64 } %t106) + store i64 %t107, ptr %a49 + call void @finch_str_drop(ptr %a97) + br label %endif4457 +else4456: + %t108 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t108, ptr %a109 + store { ptr, i64, i64 } { ptr @.str.2727, i64 4, i64 0 }, ptr %a110 + %t111 = call i32 @finch_str_eq(ptr %a109, ptr %a110) + %t112 = icmp ne i32 %t111, 0 + br i1 %t112, label %then4461, label %else4462 +then4461: %t113 = load ptr, ptr %a1 - %t114 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t115 = load { ptr, i64, i64 }, ptr %t114 - %t116 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t117 = load { ptr, i64, i64 }, ptr %t116 - %t118 = call i64 @finch.gen.findEnum(ptr %t113, { ptr, i64, i64 } %t115, { ptr, i64, i64 } %t117) - %t119 = load { ptr, i64, i64 }, ptr %t112 - %t120 = extractvalue { ptr, i64, i64 } %t119, 1 - %t121 = icmp uge i64 %t118, %t120 - br i1 %t121, label %range4246, label %inrange4247 -range4246: - call void @finch_panic_index(ptr @.str.2643, i64 1819, i64 %t118, i64 %t120) + %t114 = icmp eq ptr %t113, null + br i1 %t114, label %panic4464, label %ok4465 +panic4464: + call void @finch_panic(ptr @.str.2728, i64 1974, ptr @.str.2729) unreachable -inrange4247: - %t122 = extractvalue { ptr, i64, i64 } %t119, 0 - %t123 = getelementptr inbounds %S.gen.EnumDef, ptr %t122, i64 %t118 - %t124 = load %S.gen.EnumDef, ptr %t123 - store %S.gen.EnumDef %t124, ptr %a125 - call void @finch.copy.S_gen_EnumDef(ptr %a126, ptr %a125) - %t127 = load %S.gen.EnumDef, ptr %a126 +ok4465: + %t115 = getelementptr inbounds %S.gen.Gen, ptr %t113, i32 0, i32 21 + %t116 = load ptr, ptr %a1 + %t117 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 + %t118 = load { ptr, i64, i64 }, ptr %t117 + %t119 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 + %t120 = load { ptr, i64, i64 }, ptr %t119 + %t121 = call i64 @finch.gen.findEnum(ptr %t116, { ptr, i64, i64 } %t118, { ptr, i64, i64 } %t120) + %t122 = load { ptr, i64, i64 }, ptr %t115 + %t123 = extractvalue { ptr, i64, i64 } %t122, 1 + %t124 = icmp uge i64 %t121, %t123 + br i1 %t124, label %range4466, label %inrange4467 +range4466: + call void @finch_panic_index(ptr @.str.2730, i64 1974, i64 %t121, i64 %t123) + unreachable +inrange4467: + %t125 = extractvalue { ptr, i64, i64 } %t122, 0 + %t126 = getelementptr inbounds %S.gen.EnumDef, ptr %t125, i64 %t121 + %t127 = load %S.gen.EnumDef, ptr %t126 store %S.gen.EnumDef %t127, ptr %a128 - store { ptr, i64, i64 } zeroinitializer, ptr %a129 - %t130 = getelementptr inbounds %S.gen.EnumDef, ptr %a128, i32 0, i32 2 - %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.cond4248 -for.cond4248: - %t134 = load i64, ptr %a133 - %t135 = icmp slt i64 %t134, %t132 - br i1 %t135, label %for.body4249, label %for.end4251 -for.body4249: - %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 - %t139 = load i64, ptr %a133 - %t140 = load { ptr, i64, i64 }, ptr %t138 - %t141 = extractvalue { ptr, i64, i64 } %t140, 1 - %t142 = icmp uge i64 %t139, %t141 - br i1 %t142, label %range4252, label %inrange4253 -range4252: - call void @finch_panic_index(ptr @.str.2645, i64 1822, i64 %t139, i64 %t141) + call void @finch.copy.S_gen_EnumDef(ptr %a129, ptr %a128) + %t130 = load %S.gen.EnumDef, ptr %a129 + store %S.gen.EnumDef %t130, ptr %a131 + store { ptr, i64, i64 } zeroinitializer, ptr %a132 + %t133 = getelementptr inbounds %S.gen.EnumDef, ptr %a131, i32 0, i32 2 + %t134 = getelementptr inbounds { ptr, i64, i64 }, ptr %t133, i32 0, i32 1 + %t135 = load i64, ptr %t134 + store i64 0, ptr %a136 + br label %for.cond4468 +for.cond4468: + %t137 = load i64, ptr %a136 + %t138 = icmp slt i64 %t137, %t135 + br i1 %t138, label %for.body4469, label %for.end4471 +for.body4469: + %t139 = getelementptr inbounds { ptr, i64, i64 }, ptr %a132, i32 0, i32 1 + %t140 = load ptr, ptr %a1 + %t141 = getelementptr inbounds %S.gen.EnumDef, ptr %a131, i32 0, i32 2 + %t142 = load i64, ptr %a136 + %t143 = load { ptr, i64, i64 }, ptr %t141 + %t144 = extractvalue { ptr, i64, i64 } %t143, 1 + %t145 = icmp uge i64 %t142, %t144 + br i1 %t145, label %range4472, label %inrange4473 +range4472: + call void @finch_panic_index(ptr @.str.2732, i64 1977, i64 %t142, i64 %t144) unreachable -inrange4253: - %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.2644, 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.2646, 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 - %t155 = load i64, ptr %a133 - %t156 = load { ptr, i64, i64 }, ptr %t154 - %t157 = extractvalue { ptr, i64, i64 } %t156, 1 - %t158 = icmp uge i64 %t155, %t157 - br i1 %t158, label %range4254, label %inrange4255 -range4254: - call void @finch_panic_index(ptr @.str.2647, i64 1822, i64 %t155, i64 %t157) +inrange4473: + %t146 = extractvalue { ptr, i64, i64 } %t143, 0 + %t147 = getelementptr inbounds { ptr, i64, i64 }, ptr %t146, i64 %t142 + %t148 = load { ptr, i64, i64 }, ptr %t147 + store { ptr, i64, i64 } { ptr @.str.2731, i64 21, i64 0 }, 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.2733, i64 10, i64 0 }, ptr %a155 + call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155) + store { ptr, i64, i64 } %t152, ptr %a156 + call void @finch_str_drop(ptr %a156) + %t157 = load { ptr, i64, i64 }, ptr %a153 + %t158 = getelementptr inbounds %S.gen.EnumDef, ptr %a131, i32 0, i32 3 + %t159 = load i64, ptr %a136 + %t160 = load { ptr, i64, i64 }, ptr %t158 + %t161 = extractvalue { ptr, i64, i64 } %t160, 1 + %t162 = icmp uge i64 %t159, %t161 + br i1 %t162, label %range4474, label %inrange4475 +range4474: + call void @finch_panic_index(ptr @.str.2734, i64 1977, i64 %t159, i64 %t161) unreachable -inrange4255: - %t159 = extractvalue { ptr, i64, i64 } %t156, 0 - %t160 = getelementptr inbounds i64, ptr %t159, i64 %t155 - %t161 = load i64, ptr %t160 - call void @finch_str_from_int(ptr %a162, i64 %t161) - %t163 = load { ptr, i64, i64 }, ptr %a162 - store { ptr, i64, i64 } %t153, 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.2648, i64 1, i64 0 }, ptr %a170 +inrange4475: + %t163 = extractvalue { ptr, i64, i64 } %t160, 0 + %t164 = getelementptr inbounds i64, ptr %t163, i64 %t159 + %t165 = load i64, ptr %t164 + call void @finch_str_from_int(ptr %a166, i64 %t165) + %t167 = load { ptr, i64, i64 }, ptr %a166 + store { ptr, i64, i64 } %t157, 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 - %t172 = call i64 @finch.gen.md(ptr %t137, { ptr, i64, i64 } %t171) - %t173 = call { ptr, i64, i64 } @finch.gen.mdRef(i64 %t172) - %t174 = load i64, ptr %t136 - %t175 = add i64 %t174, 1 - call void @finch_arr_reserve(ptr %a129, i64 %t175, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t176 = load ptr, ptr %a129 - %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.step4250 -for.step4250: - %t178 = load i64, ptr %a133 - %t179 = add i64 %t178, 1 - store i64 %t179, ptr %a133 - br label %for.cond4248 -for.end4251: - %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.2649, 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.2650, 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 - call void @finch_str_from_int(ptr %a192, i64 %t191) - %t193 = load { ptr, i64, i64 }, ptr %a192 - store { ptr, i64, i64 } %t190, ptr %a195 - store { ptr, i64, i64 } %t193, ptr %a196 - 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.2651, 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.2652, 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 - 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.2653, 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 %endif4243 -else4242: - %t215 = load ptr, ptr %a1 - %t216 = call i64 @finch.gen.md(ptr %t215, { ptr, i64, i64 } { ptr @.str.2654, 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 %panic4256, label %ok4257 -panic4256: - call void @finch_panic(ptr @.str.2655, i64 1828, ptr @.str.2656) + store { ptr, i64, i64 } %t157, ptr %a171 + call void @finch_str_drop(ptr %a171) + store { ptr, i64, i64 } %t167, ptr %a172 + call void @finch_str_drop(ptr %a172) + %t173 = load { ptr, i64, i64 }, ptr %a168 + store { ptr, i64, i64 } %t173, ptr %a175 + store { ptr, i64, i64 } { ptr @.str.2735, i64 1, i64 0 }, ptr %a176 + call void @finch_str_concat(ptr %a174, ptr %a175, ptr %a176) + store { ptr, i64, i64 } %t173, ptr %a177 + call void @finch_str_drop(ptr %a177) + %t178 = load { ptr, i64, i64 }, ptr %a174 + %t179 = call i64 @finch.gen.md(ptr %t140, { ptr, i64, i64 } %t178) + store { ptr, i64, i64 } %t178, ptr %a180 + call void @finch_str_drop(ptr %a180) + %t181 = call { ptr, i64, i64 } @finch.gen.mdRef(i64 %t179) + %t182 = load i64, ptr %t139 + %t183 = add i64 %t182, 1 + call void @finch_arr_reserve(ptr %a132, i64 %t183, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t184 = load ptr, ptr %a132 + %t185 = getelementptr inbounds { ptr, i64, i64 }, ptr %t184, i64 %t182 + store { ptr, i64, i64 } %t181, ptr %t185 + store i64 %t183, ptr %t139 + br label %for.step4470 +for.step4470: + %t186 = load i64, ptr %a136 + %t187 = add i64 %t186, 1 + store i64 %t187, ptr %a136 + br label %for.cond4468 +for.end4471: + %t188 = load ptr, ptr %a1 + %t189 = getelementptr inbounds %S.gen.EnumDef, ptr %a131, i32 0, i32 1 + %t190 = load { ptr, i64, i64 }, ptr %t189 + store { ptr, i64, i64 } { ptr @.str.2736, i64 54, 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.2737, i64 10, i64 0 }, ptr %a197 + call void @finch_str_concat(ptr %a195, ptr %a196, ptr %a197) + store { ptr, i64, i64 } %t194, ptr %a198 + call void @finch_str_drop(ptr %a198) + %t199 = load { ptr, i64, i64 }, ptr %a195 + %t200 = load i64, ptr %a59 + call void @finch_str_from_int(ptr %a201, i64 %t200) + %t202 = load { ptr, i64, i64 }, ptr %a201 + store { ptr, i64, i64 } %t199, ptr %a204 + store { ptr, i64, i64 } %t202, ptr %a205 + call void @finch_str_concat(ptr %a203, ptr %a204, ptr %a205) + store { ptr, i64, i64 } %t199, ptr %a206 + call void @finch_str_drop(ptr %a206) + store { ptr, i64, i64 } %t202, ptr %a207 + call void @finch_str_drop(ptr %a207) + %t208 = load { ptr, i64, i64 }, ptr %a203 + store { ptr, i64, i64 } %t208, ptr %a210 + store { ptr, i64, i64 } { ptr @.str.2738, i64 24, i64 0 }, ptr %a211 + call void @finch_str_concat(ptr %a209, ptr %a210, ptr %a211) + store { ptr, i64, i64 } %t208, ptr %a212 + call void @finch_str_drop(ptr %a212) + %t213 = load { ptr, i64, i64 }, ptr %a209 + %t214 = getelementptr inbounds { ptr, i64, i64 }, ptr %a132, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.2739, i64 2, i64 0 }, ptr %a215 + call void @finch_str_join(ptr %a216, ptr %a132, ptr %a215) + %t217 = load { ptr, i64, i64 }, ptr %a216 + store { ptr, i64, i64 } %t213, ptr %a219 + store { ptr, i64, i64 } %t217, ptr %a220 + call void @finch_str_concat(ptr %a218, ptr %a219, ptr %a220) + store { ptr, i64, i64 } %t213, ptr %a221 + call void @finch_str_drop(ptr %a221) + store { ptr, i64, i64 } %t217, ptr %a222 + call void @finch_str_drop(ptr %a222) + %t223 = load { ptr, i64, i64 }, ptr %a218 + store { ptr, i64, i64 } %t223, ptr %a225 + store { ptr, i64, i64 } { ptr @.str.2740, i64 2, i64 0 }, ptr %a226 + call void @finch_str_concat(ptr %a224, ptr %a225, ptr %a226) + store { ptr, i64, i64 } %t223, ptr %a227 + call void @finch_str_drop(ptr %a227) + %t228 = load { ptr, i64, i64 }, ptr %a224 + %t229 = call i64 @finch.gen.md(ptr %t188, { ptr, i64, i64 } %t228) + store { ptr, i64, i64 } %t228, ptr %a230 + call void @finch_str_drop(ptr %a230) + store i64 %t229, ptr %a49 + call void @finch.drop.arr_str(ptr %a132) + call void @finch.drop.S_gen_EnumDef(ptr %a131) + br label %endif4463 +else4462: + %t231 = load ptr, ptr %a1 + %t232 = call i64 @finch.gen.md(ptr %t231, { ptr, i64, i64 } { ptr @.str.2741, i64 0, i64 0 }) + store i64 %t232, ptr %a49 + %t233 = load i64, ptr %a49 + %t234 = load ptr, ptr %a1 + %t235 = icmp eq ptr %t234, null + br i1 %t235, label %panic4476, label %ok4477 +panic4476: + call void @finch_panic(ptr @.str.2742, i64 1983, ptr @.str.2743) unreachable -ok4257: - %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 - %t224 = call i64 @finch_map_slot(ptr %t220, ptr %a222, 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, ptr %a223) - %t225 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t220, i32 0, i32 0 - %t226 = load ptr, ptr %t225 - %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.new4258, label %map.have4259 -map.new4258: - %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.have4259 -map.have4259: - %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.2657, 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 %then4260, label %else4261 -then4260: - 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 %then4263, label %endif4265 -then4263: - %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 %range4266, label %inrange4267 -range4266: - call void @finch_panic_index(ptr @.str.2658, i64 1832, i64 0, i64 %t246) +ok4477: + %t236 = getelementptr inbounds %S.gen.Gen, ptr %t234, i32 0, i32 33 + %t237 = load { ptr, i64, i64 }, ptr %a27 + store { ptr, i64, i64 } %t237, ptr %a238 + store i32 0, ptr %a239 + %t240 = call i64 @finch_map_slot(ptr %t236, ptr %a238, 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, ptr %a239) + %t241 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t236, i32 0, i32 0 + %t242 = load ptr, ptr %t241 + %t243 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t242, i64 %t240 + %t244 = load i32, ptr %a239 + %t245 = icmp ne i32 %t244, 0 + br i1 %t245, label %map.new4478, label %map.have4479 +map.new4478: + %t246 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t243, i32 0, i32 1 + call void @finch_str_copy(ptr %t246, ptr %a238) + %t247 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t243, i32 0, i32 2 + store i64 0, ptr %t247 + br label %map.have4479 +map.have4479: + %t248 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t243, i32 0, i32 2 + store i64 %t233, ptr %t248 + %t249 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t249, ptr %a250 + store { ptr, i64, i64 } { ptr @.str.2744, i64 3, i64 0 }, ptr %a251 + %t252 = call i32 @finch_str_eq(ptr %a250, ptr %a251) + %t253 = icmp ne i32 %t252, 0 + br i1 %t253, label %then4480, label %else4481 +then4480: + store i64 -1, ptr %a254 + %t255 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t256 = getelementptr inbounds { ptr, i64, i64 }, ptr %t255, i32 0, i32 1 + %t257 = load i64, ptr %t256 + %t258 = icmp sgt i64 %t257, 0 + br i1 %t258, label %then4483, label %endif4485 +then4483: + %t259 = load ptr, ptr %a1 + %t260 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t261 = load { ptr, i64, i64 }, ptr %t260 + %t262 = extractvalue { ptr, i64, i64 } %t261, 1 + %t263 = icmp uge i64 0, %t262 + br i1 %t263, label %range4486, label %inrange4487 +range4486: + call void @finch_panic_index(ptr @.str.2745, i64 1987, i64 0, i64 %t262) unreachable -inrange4267: - %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 %endif4265 -endif4265: - %t252 = load i64, ptr %a238 - %t253 = call { ptr, i64, i64 } @finch.gen.mdRef(i64 %t252) - store { ptr, i64, i64 } { ptr @.str.2659, 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.2660, 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 %panic4268, label %ok4269 -panic4268: - call void @finch_panic(ptr @.str.2661, i64 1834, ptr @.str.2662) +inrange4487: + %t264 = extractvalue { ptr, i64, i64 } %t261, 0 + %t265 = getelementptr inbounds %S.ast.Type, ptr %t264, i64 0 + %t266 = load %S.ast.Type, ptr %t265 + %t267 = call i64 @finch.gen.diType(ptr %t259, %S.ast.Type %t266) + store i64 %t267, ptr %a254 + br label %endif4485 +endif4485: + %t268 = load i64, ptr %a254 + %t269 = call { ptr, i64, i64 } @finch.gen.mdRef(i64 %t268) + store { ptr, i64, i64 } { ptr @.str.2746, i64 51, i64 0 }, ptr %a271 + store { ptr, i64, i64 } %t269, ptr %a272 + call void @finch_str_concat(ptr %a270, ptr %a271, ptr %a272) + store { ptr, i64, i64 } %t269, ptr %a273 + call void @finch_str_drop(ptr %a273) + %t274 = load { ptr, i64, i64 }, ptr %a270 + store { ptr, i64, i64 } %t274, ptr %a276 + store { ptr, i64, i64 } { ptr @.str.2747, i64 11, i64 0 }, ptr %a277 + call void @finch_str_concat(ptr %a275, ptr %a276, ptr %a277) + store { ptr, i64, i64 } %t274, ptr %a278 + call void @finch_str_drop(ptr %a278) + %t279 = load { ptr, i64, i64 }, ptr %a275 + %t280 = load ptr, ptr %a1 + %t281 = icmp eq ptr %t280, null + br i1 %t281, label %panic4488, label %ok4489 +panic4488: + call void @finch_panic(ptr @.str.2748, i64 1989, ptr @.str.2749) unreachable -ok4269: - %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 %range4270, label %inrange4271 -range4270: - call void @finch_panic_index(ptr @.str.2663, i64 1834, i64 %t265, i64 %t267) +ok4489: + %t282 = getelementptr inbounds %S.gen.Gen, ptr %t280, i32 0, i32 32 + %t283 = load i64, ptr %a49 + %t284 = load { ptr, i64, i64 }, ptr %t282 + %t285 = extractvalue { ptr, i64, i64 } %t284, 1 + %t286 = icmp uge i64 %t283, %t285 + br i1 %t286, label %range4490, label %inrange4491 +range4490: + call void @finch_panic_index(ptr @.str.2750, i64 1989, i64 %t283, i64 %t285) unreachable -inrange4271: - %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 %endif4262 -else4261: - %t271 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t271, ptr %a272 - store { ptr, i64, i64 } { ptr @.str.2664, 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 %then4272, label %else4273 -then4272: - %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 %range4275, label %inrange4276 -range4275: - call void @finch_panic_index(ptr @.str.2665, i64 1836, i64 0, i64 %t279) +inrange4491: + %t287 = extractvalue { ptr, i64, i64 } %t284, 0 + %t288 = getelementptr inbounds { ptr, i64, i64 }, ptr %t287, i64 %t283 + %t289 = load { ptr, i64, i64 }, ptr %t288 + store { ptr, i64, i64 } %t279, ptr %t288 + store { ptr, i64, i64 } %t289, ptr %a290 + call void @finch_str_drop(ptr %a290) + br label %endif4482 +else4481: + %t291 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t291, ptr %a292 + store { ptr, i64, i64 } { ptr @.str.2751, i64 5, i64 0 }, ptr %a293 + %t294 = call i32 @finch_str_eq(ptr %a292, ptr %a293) + %t295 = icmp ne i32 %t294, 0 + br i1 %t295, label %then4492, label %else4493 +then4492: + %t296 = load ptr, ptr %a1 + %t297 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t298 = load { ptr, i64, i64 }, ptr %t297 + %t299 = extractvalue { ptr, i64, i64 } %t298, 1 + %t300 = icmp uge i64 0, %t299 + br i1 %t300, label %range4495, label %inrange4496 +range4495: + call void @finch_panic_index(ptr @.str.2752, i64 1991, i64 0, i64 %t299) unreachable -inrange4276: - %t281 = extractvalue { ptr, i64, i64 } %t278, 0 - %t282 = getelementptr inbounds %S.ast.Type, ptr %t281, i64 0 - %t283 = load %S.ast.Type, ptr %t282 - %t284 = call %S.gen.SizeAlign @finch.gen.sizeAlign(ptr %t276, %S.ast.Type %t283) - store %S.gen.SizeAlign %t284, ptr %a285 - %t286 = load ptr, ptr %a1 - %t287 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 4 - %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.2666, 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.2667, 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) - store i64 %t299, ptr %a300 - %t301 = load ptr, ptr %a1 - %t302 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t303 = load { ptr, i64, i64 }, ptr %t302 - %t304 = extractvalue { ptr, i64, i64 } %t303, 1 - %t305 = icmp uge i64 0, %t304 - br i1 %t305, label %range4277, label %inrange4278 -range4277: - call void @finch_panic_index(ptr @.str.2669, i64 1838, i64 0, i64 %t304) - unreachable -inrange4278: - %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.2668, i64 51, i64 0 }, ptr %a312 +inrange4496: + %t301 = extractvalue { ptr, i64, i64 } %t298, 0 + %t302 = getelementptr inbounds %S.ast.Type, ptr %t301, i64 0 + %t303 = load %S.ast.Type, ptr %t302 + %t304 = call %S.gen.SizeAlign @finch.gen.sizeAlign(ptr %t296, %S.ast.Type %t303) + store %S.gen.SizeAlign %t304, ptr %a305 + %t306 = load ptr, ptr %a1 + %t307 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 4 + %t308 = load i64, ptr %t307 + call void @finch_str_from_int(ptr %a309, i64 %t308) + %t310 = load { ptr, i64, i64 }, ptr %a309 + store { ptr, i64, i64 } { ptr @.str.2753, i64 19, 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.2670, 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 - %t320 = load i64, ptr %t319 - %t321 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 4 - %t322 = load i64, ptr %t321 - %t323 = mul i64 %t320, %t322 - %t324 = mul i64 %t323, 8 - call void @finch_str_from_int(ptr %a325, i64 %t324) - %t326 = load { ptr, i64, i64 }, ptr %a325 - store { ptr, i64, i64 } %t318, ptr %a328 - store { ptr, i64, i64 } %t326, 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 %a332 - store { ptr, i64, i64 } { ptr @.str.2671, 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 - call void @finch_str_from_int(ptr %a336, i64 %t335) - %t337 = load { ptr, i64, i64 }, ptr %a336 - store { ptr, i64, i64 } %t334, ptr %a339 - store { ptr, i64, i64 } %t337, ptr %a340 - 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.2672, 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 %panic4279, label %ok4280 -panic4279: - call void @finch_panic(ptr @.str.2673, i64 1838, ptr @.str.2674) + store { ptr, i64, i64 } %t310, ptr %a314 + call void @finch_str_drop(ptr %a314) + %t315 = load { ptr, i64, i64 }, ptr %a311 + store { ptr, i64, i64 } %t315, ptr %a317 + store { ptr, i64, i64 } { ptr @.str.2754, i64 1, i64 0 }, ptr %a318 + call void @finch_str_concat(ptr %a316, ptr %a317, ptr %a318) + store { ptr, i64, i64 } %t315, ptr %a319 + call void @finch_str_drop(ptr %a319) + %t320 = load { ptr, i64, i64 }, ptr %a316 + %t321 = call i64 @finch.gen.md(ptr %t306, { ptr, i64, i64 } %t320) + store { ptr, i64, i64 } %t320, ptr %a322 + call void @finch_str_drop(ptr %a322) + store i64 %t321, ptr %a323 + %t324 = load ptr, ptr %a1 + %t325 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t326 = load { ptr, i64, i64 }, ptr %t325 + %t327 = extractvalue { ptr, i64, i64 } %t326, 1 + %t328 = icmp uge i64 0, %t327 + br i1 %t328, label %range4497, label %inrange4498 +range4497: + call void @finch_panic_index(ptr @.str.2756, i64 1993, i64 0, i64 %t327) unreachable -ok4280: - %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 %range4281, label %inrange4282 -range4281: - call void @finch_panic_index(ptr @.str.2675, i64 1838, i64 %t349, i64 %t351) +inrange4498: + %t329 = extractvalue { ptr, i64, i64 } %t326, 0 + %t330 = getelementptr inbounds %S.ast.Type, ptr %t329, i64 0 + %t331 = load %S.ast.Type, ptr %t330 + %t332 = call i64 @finch.gen.diType(ptr %t324, %S.ast.Type %t331) + %t333 = call { ptr, i64, i64 } @finch.gen.mdRef(i64 %t332) + store { ptr, i64, i64 } { ptr @.str.2755, i64 51, i64 0 }, ptr %a335 + store { ptr, i64, i64 } %t333, ptr %a336 + call void @finch_str_concat(ptr %a334, ptr %a335, ptr %a336) + store { ptr, i64, i64 } %t333, ptr %a337 + call void @finch_str_drop(ptr %a337) + %t338 = load { ptr, i64, i64 }, ptr %a334 + store { ptr, i64, i64 } %t338, ptr %a340 + store { ptr, i64, i64 } { ptr @.str.2757, i64 8, i64 0 }, ptr %a341 + call void @finch_str_concat(ptr %a339, ptr %a340, ptr %a341) + store { ptr, i64, i64 } %t338, ptr %a342 + call void @finch_str_drop(ptr %a342) + %t343 = load { ptr, i64, i64 }, ptr %a339 + %t344 = getelementptr inbounds %S.gen.SizeAlign, ptr %a305, i32 0, i32 0 + %t345 = load i64, ptr %t344 + %t346 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 4 + %t347 = load i64, ptr %t346 + %t348 = mul i64 %t345, %t347 + %t349 = mul i64 %t348, 8 + call void @finch_str_from_int(ptr %a350, i64 %t349) + %t351 = load { ptr, i64, i64 }, ptr %a350 + store { ptr, i64, i64 } %t343, ptr %a353 + store { ptr, i64, i64 } %t351, ptr %a354 + call void @finch_str_concat(ptr %a352, ptr %a353, ptr %a354) + store { ptr, i64, i64 } %t343, ptr %a355 + call void @finch_str_drop(ptr %a355) + store { ptr, i64, i64 } %t351, ptr %a356 + call void @finch_str_drop(ptr %a356) + %t357 = load { ptr, i64, i64 }, ptr %a352 + store { ptr, i64, i64 } %t357, ptr %a359 + store { ptr, i64, i64 } { ptr @.str.2758, i64 15, i64 0 }, ptr %a360 + call void @finch_str_concat(ptr %a358, ptr %a359, ptr %a360) + store { ptr, i64, i64 } %t357, ptr %a361 + call void @finch_str_drop(ptr %a361) + %t362 = load { ptr, i64, i64 }, ptr %a358 + %t363 = load i64, ptr %a323 + call void @finch_str_from_int(ptr %a364, i64 %t363) + %t365 = load { ptr, i64, i64 }, ptr %a364 + store { ptr, i64, i64 } %t362, ptr %a367 + store { ptr, i64, i64 } %t365, ptr %a368 + call void @finch_str_concat(ptr %a366, ptr %a367, ptr %a368) + store { ptr, i64, i64 } %t362, ptr %a369 + call void @finch_str_drop(ptr %a369) + store { ptr, i64, i64 } %t365, ptr %a370 + call void @finch_str_drop(ptr %a370) + %t371 = load { ptr, i64, i64 }, ptr %a366 + store { ptr, i64, i64 } %t371, ptr %a373 + store { ptr, i64, i64 } { ptr @.str.2759, i64 2, i64 0 }, ptr %a374 + call void @finch_str_concat(ptr %a372, ptr %a373, ptr %a374) + store { ptr, i64, i64 } %t371, ptr %a375 + call void @finch_str_drop(ptr %a375) + %t376 = load { ptr, i64, i64 }, ptr %a372 + %t377 = load ptr, ptr %a1 + %t378 = icmp eq ptr %t377, null + br i1 %t378, label %panic4499, label %ok4500 +panic4499: + call void @finch_panic(ptr @.str.2760, i64 1993, ptr @.str.2761) unreachable -inrange4282: - %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 %endif4274 -else4273: - %t355 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t355, ptr %a356 - store { ptr, i64, i64 } { ptr @.str.2676, 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.from4283 -logic.from4283: - br i1 %t359, label %logic.end4285, label %logic.rhs4284 -logic.rhs4284: - %t360 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t360, ptr %a361 - store { ptr, i64, i64 } { ptr @.str.2677, 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.rend4286 -logic.rend4286: - br label %logic.end4285 -logic.end4285: - %t365 = phi i1 [ true, %logic.from4283 ], [ %t364, %logic.rend4286 ] - br i1 %t365, label %then4287, label %else4288 -then4287: - %t366 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.2678, 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.2679, 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 %then4290, label %endif4292 -then4290: - %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 %range4293, label %inrange4294 -range4293: - call void @finch_panic_index(ptr @.str.2680, i64 1842, i64 0, i64 %t375) +ok4500: + %t379 = getelementptr inbounds %S.gen.Gen, ptr %t377, i32 0, i32 32 + %t380 = load i64, ptr %a49 + %t381 = load { ptr, i64, i64 }, ptr %t379 + %t382 = extractvalue { ptr, i64, i64 } %t381, 1 + %t383 = icmp uge i64 %t380, %t382 + br i1 %t383, label %range4501, label %inrange4502 +range4501: + call void @finch_panic_index(ptr @.str.2762, i64 1993, i64 %t380, i64 %t382) unreachable -inrange4294: - %t377 = extractvalue { ptr, i64, i64 } %t374, 0 - %t378 = getelementptr inbounds %S.ast.Type, ptr %t377, i64 0 - %t379 = load %S.ast.Type, ptr %t378 - store %S.ast.Type %t379, ptr %a380 - 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 %endif4292 -endif4292: - %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.2681, 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.2682, 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.2683, 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.2684, 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.2685, 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.2686, 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.2687, 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.2688, 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 - call void @finch_str_from_int(ptr %a431, i64 %t430) - %t432 = load { ptr, i64, i64 }, ptr %a431 - store { ptr, i64, i64 } %t429, ptr %a434 - store { ptr, i64, i64 } %t432, ptr %a435 - 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.2689, 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 - call void @finch_str_from_int(ptr %a442, i64 %t441) - %t443 = load { ptr, i64, i64 }, ptr %a442 - store { ptr, i64, i64 } %t440, ptr %a445 - store { ptr, i64, i64 } %t443, ptr %a446 - 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.2690, 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 - call void @finch_str_from_int(ptr %a453, i64 %t452) - %t454 = load { ptr, i64, i64 }, ptr %a453 - store { ptr, i64, i64 } %t451, 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.2691, 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 - call void @finch_str_from_int(ptr %a464, i64 %t463) - %t465 = load { ptr, i64, i64 }, ptr %a464 - store { ptr, i64, i64 } %t462, ptr %a467 - store { ptr, i64, i64 } %t465, ptr %a468 +inrange4502: + %t384 = extractvalue { ptr, i64, i64 } %t381, 0 + %t385 = getelementptr inbounds { ptr, i64, i64 }, ptr %t384, i64 %t380 + %t386 = load { ptr, i64, i64 }, ptr %t385 + store { ptr, i64, i64 } %t376, ptr %t385 + store { ptr, i64, i64 } %t386, ptr %a387 + call void @finch_str_drop(ptr %a387) + br label %endif4494 +else4493: + %t388 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t388, ptr %a389 + store { ptr, i64, i64 } { ptr @.str.2763, i64 3, i64 0 }, ptr %a390 + %t391 = call i32 @finch_str_eq(ptr %a389, ptr %a390) + %t392 = icmp ne i32 %t391, 0 + br label %logic.from4503 +logic.from4503: + br i1 %t392, label %logic.end4505, label %logic.rhs4504 +logic.rhs4504: + %t393 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t393, ptr %a394 + store { ptr, i64, i64 } { ptr @.str.2764, i64 5, i64 0 }, ptr %a395 + %t396 = call i32 @finch_str_eq(ptr %a394, ptr %a395) + %t397 = icmp ne i32 %t396, 0 + br label %logic.rend4506 +logic.rend4506: + br label %logic.end4505 +logic.end4505: + %t398 = phi i1 [ true, %logic.from4503 ], [ %t397, %logic.rend4506 ] + br i1 %t398, label %then4507, label %else4508 +then4507: + %t399 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.2765, i64 4, i64 0 }) + store %S.ast.Type %t399, ptr %a400 + %t401 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t401, ptr %a402 + store { ptr, i64, i64 } { ptr @.str.2766, i64 5, i64 0 }, ptr %a403 + %t404 = call i32 @finch_str_eq(ptr %a402, ptr %a403) + %t405 = icmp ne i32 %t404, 0 + br i1 %t405, label %then4510, label %endif4512 +then4510: + %t406 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t407 = load { ptr, i64, i64 }, ptr %t406 + %t408 = extractvalue { ptr, i64, i64 } %t407, 1 + %t409 = icmp uge i64 0, %t408 + br i1 %t409, label %range4513, label %inrange4514 +range4513: + call void @finch_panic_index(ptr @.str.2767, i64 1997, i64 0, i64 %t408) + unreachable +inrange4514: + %t410 = extractvalue { ptr, i64, i64 } %t407, 0 + %t411 = getelementptr inbounds %S.ast.Type, ptr %t410, i64 0 + %t412 = load %S.ast.Type, ptr %t411 + store %S.ast.Type %t412, ptr %a413 + call void @finch.copy.S_ast_Type(ptr %a414, ptr %a413) + %t415 = load %S.ast.Type, ptr %a414 + %t416 = load %S.ast.Type, ptr %a400 + store %S.ast.Type %t415, ptr %a400 + store %S.ast.Type %t416, ptr %a417 + call void @finch.drop.S_ast_Type(ptr %a417) + br label %endif4512 +endif4512: + %t418 = load ptr, ptr %a1 + %t419 = load ptr, ptr %a1 + %t420 = load %S.ast.Type, ptr %a400 + %t421 = call i64 @finch.gen.diType(ptr %t419, %S.ast.Type %t420) + %t422 = call { ptr, i64, i64 } @finch.gen.mdRef(i64 %t421) + store { ptr, i64, i64 } { ptr @.str.2768, i64 51, i64 0 }, ptr %a424 + store { ptr, i64, i64 } %t422, ptr %a425 + call void @finch_str_concat(ptr %a423, ptr %a424, ptr %a425) + store { ptr, i64, i64 } %t422, ptr %a426 + call void @finch_str_drop(ptr %a426) + %t427 = load { ptr, i64, i64 }, ptr %a423 + store { ptr, i64, i64 } %t427, ptr %a429 + store { ptr, i64, i64 } { ptr @.str.2769, i64 11, i64 0 }, ptr %a430 + call void @finch_str_concat(ptr %a428, ptr %a429, ptr %a430) + store { ptr, i64, i64 } %t427, ptr %a431 + call void @finch_str_drop(ptr %a431) + %t432 = load { ptr, i64, i64 }, ptr %a428 + %t433 = call i64 @finch.gen.md(ptr %t418, { ptr, i64, i64 } %t432) + store { ptr, i64, i64 } %t432, ptr %a434 + call void @finch_str_drop(ptr %a434) + store i64 %t433, ptr %a435 + %t436 = load ptr, ptr %a1 + %t437 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.2770, i64 3, i64 0 }) + %t438 = call i64 @finch.gen.diType(ptr %t436, %S.ast.Type %t437) + store %S.ast.Type %t437, ptr %a439 + call void @finch.drop.S_ast_Type(ptr %a439) + store i64 %t438, ptr %a440 + %t441 = load ptr, ptr %a1 + %t442 = load i64, ptr %a49 + %t443 = load i64, ptr %a59 + %t444 = load i64, ptr %a435 + %t445 = call i64 @finch.gen.dbgMember(ptr %t441, { ptr, i64, i64 } { ptr @.str.2771, i64 3, i64 0 }, i64 %t442, i64 %t443, i64 0, i64 %t444, i64 64, i64 0) + store i64 %t445, ptr %a446 + %t447 = load ptr, ptr %a1 + %t448 = load i64, ptr %a49 + %t449 = load i64, ptr %a59 + %t450 = load i64, ptr %a440 + %t451 = call i64 @finch.gen.dbgMember(ptr %t447, { ptr, i64, i64 } { ptr @.str.2772, i64 3, i64 0 }, i64 %t448, i64 %t449, i64 0, i64 %t450, i64 64, i64 64) + store i64 %t451, ptr %a452 + %t453 = load ptr, ptr %a1 + %t454 = load i64, ptr %a49 + %t455 = load i64, ptr %a59 + %t456 = load i64, ptr %a440 + %t457 = call i64 @finch.gen.dbgMember(ptr %t453, { ptr, i64, i64 } { ptr @.str.2773, i64 3, i64 0 }, i64 %t454, i64 %t455, i64 0, i64 %t456, i64 64, i64 128) + store i64 %t457, ptr %a458 + %t459 = load %S.ast.Type, ptr %a2 + %t460 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t459) + store { ptr, i64, i64 } { ptr @.str.2774, i64 52, i64 0 }, ptr %a462 + store { ptr, i64, i64 } %t460, ptr %a463 + call void @finch_str_concat(ptr %a461, ptr %a462, ptr %a463) + store { ptr, i64, i64 } %t460, ptr %a464 + call void @finch_str_drop(ptr %a464) + %t465 = load { ptr, i64, i64 }, ptr %a461 + store { ptr, i64, i64 } %t465, ptr %a467 + store { ptr, i64, i64 } { ptr @.str.2775, i64 10, i64 0 }, ptr %a468 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.2692, 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 %panic4295, label %ok4296 -panic4295: - call void @finch_panic(ptr @.str.2693, i64 1849, ptr @.str.2694) + store { ptr, i64, i64 } %t465, ptr %a469 + call void @finch_str_drop(ptr %a469) + %t470 = load { ptr, i64, i64 }, ptr %a466 + %t471 = load i64, ptr %a59 + call void @finch_str_from_int(ptr %a472, i64 %t471) + %t473 = load { ptr, i64, i64 }, ptr %a472 + store { ptr, i64, i64 } %t470, ptr %a475 + store { ptr, i64, i64 } %t473, ptr %a476 + call void @finch_str_concat(ptr %a474, ptr %a475, ptr %a476) + store { ptr, i64, i64 } %t470, ptr %a477 + call void @finch_str_drop(ptr %a477) + store { ptr, i64, i64 } %t473, ptr %a478 + call void @finch_str_drop(ptr %a478) + %t479 = load { ptr, i64, i64 }, ptr %a474 + store { ptr, i64, i64 } %t479, ptr %a481 + store { ptr, i64, i64 } { ptr @.str.2776, i64 37, i64 0 }, ptr %a482 + call void @finch_str_concat(ptr %a480, ptr %a481, ptr %a482) + store { ptr, i64, i64 } %t479, ptr %a483 + call void @finch_str_drop(ptr %a483) + %t484 = load { ptr, i64, i64 }, ptr %a480 + %t485 = load i64, ptr %a446 + call void @finch_str_from_int(ptr %a486, i64 %t485) + %t487 = load { ptr, i64, i64 }, ptr %a486 + store { ptr, i64, i64 } %t484, ptr %a489 + store { ptr, i64, i64 } %t487, ptr %a490 + call void @finch_str_concat(ptr %a488, ptr %a489, ptr %a490) + store { ptr, i64, i64 } %t484, ptr %a491 + call void @finch_str_drop(ptr %a491) + store { ptr, i64, i64 } %t487, ptr %a492 + call void @finch_str_drop(ptr %a492) + %t493 = load { ptr, i64, i64 }, ptr %a488 + store { ptr, i64, i64 } %t493, ptr %a495 + store { ptr, i64, i64 } { ptr @.str.2777, i64 3, i64 0 }, ptr %a496 + call void @finch_str_concat(ptr %a494, ptr %a495, ptr %a496) + store { ptr, i64, i64 } %t493, ptr %a497 + call void @finch_str_drop(ptr %a497) + %t498 = load { ptr, i64, i64 }, ptr %a494 + %t499 = load i64, ptr %a452 + call void @finch_str_from_int(ptr %a500, i64 %t499) + %t501 = load { ptr, i64, i64 }, ptr %a500 + store { ptr, i64, i64 } %t498, ptr %a503 + store { ptr, i64, i64 } %t501, ptr %a504 + call void @finch_str_concat(ptr %a502, ptr %a503, ptr %a504) + store { ptr, i64, i64 } %t498, ptr %a505 + call void @finch_str_drop(ptr %a505) + store { ptr, i64, i64 } %t501, ptr %a506 + call void @finch_str_drop(ptr %a506) + %t507 = load { ptr, i64, i64 }, ptr %a502 + store { ptr, i64, i64 } %t507, ptr %a509 + store { ptr, i64, i64 } { ptr @.str.2778, i64 3, i64 0 }, ptr %a510 + call void @finch_str_concat(ptr %a508, ptr %a509, ptr %a510) + store { ptr, i64, i64 } %t507, ptr %a511 + call void @finch_str_drop(ptr %a511) + %t512 = load { ptr, i64, i64 }, ptr %a508 + %t513 = load i64, ptr %a458 + call void @finch_str_from_int(ptr %a514, i64 %t513) + %t515 = load { ptr, i64, i64 }, ptr %a514 + store { ptr, i64, i64 } %t512, ptr %a517 + store { ptr, i64, i64 } %t515, ptr %a518 + call void @finch_str_concat(ptr %a516, ptr %a517, ptr %a518) + store { ptr, i64, i64 } %t512, ptr %a519 + call void @finch_str_drop(ptr %a519) + store { ptr, i64, i64 } %t515, ptr %a520 + call void @finch_str_drop(ptr %a520) + %t521 = load { ptr, i64, i64 }, ptr %a516 + store { ptr, i64, i64 } %t521, ptr %a523 + store { ptr, i64, i64 } { ptr @.str.2779, i64 2, i64 0 }, ptr %a524 + call void @finch_str_concat(ptr %a522, ptr %a523, ptr %a524) + store { ptr, i64, i64 } %t521, ptr %a525 + call void @finch_str_drop(ptr %a525) + %t526 = load { ptr, i64, i64 }, ptr %a522 + %t527 = load ptr, ptr %a1 + %t528 = icmp eq ptr %t527, null + br i1 %t528, label %panic4515, label %ok4516 +panic4515: + call void @finch_panic(ptr @.str.2780, i64 2004, ptr @.str.2781) unreachable -ok4296: - %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 %range4297, label %inrange4298 -range4297: - call void @finch_panic_index(ptr @.str.2695, i64 1849, i64 %t477, i64 %t479) +ok4516: + %t529 = getelementptr inbounds %S.gen.Gen, ptr %t527, i32 0, i32 32 + %t530 = load i64, ptr %a49 + %t531 = load { ptr, i64, i64 }, ptr %t529 + %t532 = extractvalue { ptr, i64, i64 } %t531, 1 + %t533 = icmp uge i64 %t530, %t532 + br i1 %t533, label %range4517, label %inrange4518 +range4517: + call void @finch_panic_index(ptr @.str.2782, i64 2004, i64 %t530, i64 %t532) unreachable -inrange4298: - %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 %endif4289 -else4288: - %t483 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t483, ptr %a484 - store { ptr, i64, i64 } { ptr @.str.2696, 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 %then4299, label %else4300 -then4299: - %t488 = load ptr, ptr %a1 - %t489 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.2697, 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.2698, 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.2699, i64 7, i64 0 }, ptr %t497 - %t498 = getelementptr inbounds { ptr, i64, i64 }, ptr %t496, i64 1 - store { ptr, i64, i64 } { ptr @.str.2700, i64 3, i64 0 }, ptr %t498 - %t499 = getelementptr inbounds { ptr, i64, i64 }, ptr %t496, i64 2 - store { ptr, i64, i64 } { ptr @.str.2701, i64 4, i64 0 }, ptr %t499 - %t500 = getelementptr inbounds { ptr, i64, i64 }, ptr %t496, i64 3 - store { ptr, i64, i64 } { ptr @.str.2702, i64 3, i64 0 }, ptr %t500 - %t501 = getelementptr inbounds { ptr, i64, i64 }, ptr %t496, i64 4 - store { ptr, i64, i64 } { ptr @.str.2703, i64 5, i64 0 }, ptr %t501 - %t502 = getelementptr inbounds { ptr, i64, i64 }, ptr %t496, i64 5 - store { ptr, i64, i64 } { ptr @.str.2704, i64 4, i64 0 }, ptr %t502 - %t503 = getelementptr inbounds { ptr, i64, i64 }, ptr %t496, i64 6 - store { ptr, i64, i64 } { ptr @.str.2705, 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.cond4302 -for.cond4302: - %t510 = load i64, ptr %a509 - %t511 = icmp slt i64 %t510, 7 - br i1 %t511, label %for.body4303, label %for.end4305 -for.body4303: - %t512 = load i64, ptr %a491 - store i64 %t512, ptr %a513 - %t514 = load i64, ptr %a509 - %t515 = icmp eq i64 %t514, 0 - br label %logic.from4306 -logic.from4306: - br i1 %t515, label %logic.end4308, label %logic.rhs4307 -logic.rhs4307: - %t516 = load i64, ptr %a509 - %t517 = icmp eq i64 %t516, 4 - br label %logic.rend4309 -logic.rend4309: - br label %logic.end4308 -logic.end4308: - %t518 = phi i1 [ true, %logic.from4306 ], [ %t517, %logic.rend4309 ] - br i1 %t518, label %then4310, label %endif4312 -then4310: - %t519 = load i64, ptr %a494 - store i64 %t519, ptr %a513 - br label %endif4312 -endif4312: - %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 %range4313, label %inrange4314 -range4313: - call void @finch_panic_index(ptr @.str.2707, i64 1860, i64 %t522, i64 %t524) +inrange4518: + %t534 = extractvalue { ptr, i64, i64 } %t531, 0 + %t535 = getelementptr inbounds { ptr, i64, i64 }, ptr %t534, i64 %t530 + %t536 = load { ptr, i64, i64 }, ptr %t535 + store { ptr, i64, i64 } %t526, ptr %t535 + store { ptr, i64, i64 } %t536, ptr %a537 + call void @finch_str_drop(ptr %a537) + call void @finch.drop.S_ast_Type(ptr %a400) + br label %endif4509 +else4508: + %t538 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t538, ptr %a539 + store { ptr, i64, i64 } { ptr @.str.2783, i64 3, i64 0 }, ptr %a540 + %t541 = call i32 @finch_str_eq(ptr %a539, ptr %a540) + %t542 = icmp ne i32 %t541, 0 + br i1 %t542, label %then4519, label %else4520 +then4519: + %t543 = load ptr, ptr %a1 + %t544 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.2784, i64 3, i64 0 }) + %t545 = call i64 @finch.gen.diType(ptr %t543, %S.ast.Type %t544) + store %S.ast.Type %t544, ptr %a546 + call void @finch.drop.S_ast_Type(ptr %a546) + store i64 %t545, ptr %a547 + %t548 = load ptr, ptr %a1 + %t549 = call i64 @finch.gen.md(ptr %t548, { ptr, i64, i64 } { ptr @.str.2785, i64 66, i64 0 }) + store i64 %t549, ptr %a550 + %t551 = mul i64 7, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) + %t552 = call ptr @finch_alloc(i64 %t551) + %t553 = getelementptr inbounds { ptr, i64, i64 }, ptr %t552, i64 0 + store { ptr, i64, i64 } { ptr @.str.2786, i64 7, i64 0 }, ptr %t553 + %t554 = getelementptr inbounds { ptr, i64, i64 }, ptr %t552, i64 1 + store { ptr, i64, i64 } { ptr @.str.2787, i64 3, i64 0 }, ptr %t554 + %t555 = getelementptr inbounds { ptr, i64, i64 }, ptr %t552, i64 2 + store { ptr, i64, i64 } { ptr @.str.2788, i64 4, i64 0 }, ptr %t555 + %t556 = getelementptr inbounds { ptr, i64, i64 }, ptr %t552, i64 3 + store { ptr, i64, i64 } { ptr @.str.2789, i64 3, i64 0 }, ptr %t556 + %t557 = getelementptr inbounds { ptr, i64, i64 }, ptr %t552, i64 4 + store { ptr, i64, i64 } { ptr @.str.2790, i64 5, i64 0 }, ptr %t557 + %t558 = getelementptr inbounds { ptr, i64, i64 }, ptr %t552, i64 5 + store { ptr, i64, i64 } { ptr @.str.2791, i64 4, i64 0 }, ptr %t558 + %t559 = getelementptr inbounds { ptr, i64, i64 }, ptr %t552, i64 6 + store { ptr, i64, i64 } { ptr @.str.2792, i64 4, i64 0 }, ptr %t559 + %t560 = insertvalue { ptr, i64, i64 } undef, ptr %t552, 0 + %t561 = insertvalue { ptr, i64, i64 } %t560, i64 7, 1 + %t562 = insertvalue { ptr, i64, i64 } %t561, i64 7, 2 + store { ptr, i64, i64 } %t562, ptr %a563 + store { ptr, i64, i64 } zeroinitializer, ptr %a564 + store i64 0, ptr %a565 + br label %for.cond4522 +for.cond4522: + %t566 = load i64, ptr %a565 + %t567 = icmp slt i64 %t566, 7 + br i1 %t567, label %for.body4523, label %for.end4525 +for.body4523: + %t568 = load i64, ptr %a547 + store i64 %t568, ptr %a569 + %t570 = load i64, ptr %a565 + %t571 = icmp eq i64 %t570, 0 + br label %logic.from4526 +logic.from4526: + br i1 %t571, label %logic.end4528, label %logic.rhs4527 +logic.rhs4527: + %t572 = load i64, ptr %a565 + %t573 = icmp eq i64 %t572, 4 + br label %logic.rend4529 +logic.rend4529: + br label %logic.end4528 +logic.end4528: + %t574 = phi i1 [ true, %logic.from4526 ], [ %t573, %logic.rend4529 ] + br i1 %t574, label %then4530, label %endif4532 +then4530: + %t575 = load i64, ptr %a550 + store i64 %t575, ptr %a569 + br label %endif4532 +endif4532: + %t576 = getelementptr inbounds { ptr, i64, i64 }, ptr %a564, i32 0, i32 1 + %t577 = load ptr, ptr %a1 + %t578 = load i64, ptr %a565 + %t579 = load { ptr, i64, i64 }, ptr %a563 + %t580 = extractvalue { ptr, i64, i64 } %t579, 1 + %t581 = icmp uge i64 %t578, %t580 + br i1 %t581, label %range4533, label %inrange4534 +range4533: + call void @finch_panic_index(ptr @.str.2794, i64 2015, i64 %t578, i64 %t580) unreachable -inrange4314: - %t526 = extractvalue { ptr, i64, i64 } %t523, 0 - %t527 = getelementptr inbounds { ptr, i64, i64 }, ptr %t526, i64 %t522 - %t528 = load { ptr, i64, i64 }, ptr %t527 - %t529 = load i64, ptr %a48 - %t530 = load i64, ptr %a58 - %t531 = load i64, ptr %a513 - %t532 = load i64, ptr %a509 - %t533 = mul i64 64, %t532 - %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.2706, 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 - %t541 = load i64, ptr %t520 - %t542 = add i64 %t541, 1 - call void @finch_arr_reserve(ptr %a508, i64 %t542, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t543 = load ptr, ptr %a508 - %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.step4304 -for.step4304: - %t545 = load i64, ptr %a509 - %t546 = add i64 %t545, 1 - store i64 %t546, ptr %a509 - br label %for.cond4302 -for.end4305: - %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.2708, 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.2709, 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 - call void @finch_str_from_int(ptr %a558, i64 %t557) - %t559 = load { ptr, i64, i64 }, ptr %a558 - store { ptr, i64, i64 } %t556, ptr %a561 - store { ptr, i64, i64 } %t559, ptr %a562 - 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.2710, 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.2711, 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 - 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 - store { ptr, i64, i64 } %t575, ptr %a577 - store { ptr, i64, i64 } { ptr @.str.2712, 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 %panic4315, label %ok4316 -panic4315: - call void @finch_panic(ptr @.str.2713, i64 1862, ptr @.str.2714) +inrange4534: + %t582 = extractvalue { ptr, i64, i64 } %t579, 0 + %t583 = getelementptr inbounds { ptr, i64, i64 }, ptr %t582, i64 %t578 + %t584 = load { ptr, i64, i64 }, ptr %t583 + %t585 = load i64, ptr %a49 + %t586 = load i64, ptr %a59 + %t587 = load i64, ptr %a569 + %t588 = load i64, ptr %a565 + %t589 = mul i64 64, %t588 + %t590 = call i64 @finch.gen.dbgMember(ptr %t577, { ptr, i64, i64 } %t584, i64 %t585, i64 %t586, i64 0, i64 %t587, i64 64, i64 %t589) + call void @finch_str_from_int(ptr %a591, i64 %t590) + %t592 = load { ptr, i64, i64 }, ptr %a591 + store { ptr, i64, i64 } { ptr @.str.2793, i64 1, i64 0 }, ptr %a594 + store { ptr, i64, i64 } %t592, ptr %a595 + call void @finch_str_concat(ptr %a593, ptr %a594, ptr %a595) + store { ptr, i64, i64 } %t592, ptr %a596 + call void @finch_str_drop(ptr %a596) + %t597 = load { ptr, i64, i64 }, ptr %a593 + %t598 = load i64, ptr %t576 + %t599 = add i64 %t598, 1 + call void @finch_arr_reserve(ptr %a564, i64 %t599, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t600 = load ptr, ptr %a564 + %t601 = getelementptr inbounds { ptr, i64, i64 }, ptr %t600, i64 %t598 + store { ptr, i64, i64 } %t597, ptr %t601 + store i64 %t599, ptr %t576 + br label %for.step4524 +for.step4524: + %t602 = load i64, ptr %a565 + %t603 = add i64 %t602, 1 + store i64 %t603, ptr %a565 + br label %for.cond4522 +for.end4525: + %t604 = load %S.ast.Type, ptr %a2 + %t605 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t604) + store { ptr, i64, i64 } { ptr @.str.2795, i64 52, i64 0 }, ptr %a607 + store { ptr, i64, i64 } %t605, ptr %a608 + call void @finch_str_concat(ptr %a606, ptr %a607, ptr %a608) + store { ptr, i64, i64 } %t605, ptr %a609 + call void @finch_str_drop(ptr %a609) + %t610 = load { ptr, i64, i64 }, ptr %a606 + store { ptr, i64, i64 } %t610, ptr %a612 + store { ptr, i64, i64 } { ptr @.str.2796, i64 10, i64 0 }, ptr %a613 + call void @finch_str_concat(ptr %a611, ptr %a612, ptr %a613) + store { ptr, i64, i64 } %t610, ptr %a614 + call void @finch_str_drop(ptr %a614) + %t615 = load { ptr, i64, i64 }, ptr %a611 + %t616 = load i64, ptr %a59 + call void @finch_str_from_int(ptr %a617, i64 %t616) + %t618 = load { ptr, i64, i64 }, ptr %a617 + store { ptr, i64, i64 } %t615, ptr %a620 + store { ptr, i64, i64 } %t618, ptr %a621 + call void @finch_str_concat(ptr %a619, ptr %a620, ptr %a621) + store { ptr, i64, i64 } %t615, ptr %a622 + call void @finch_str_drop(ptr %a622) + store { ptr, i64, i64 } %t618, ptr %a623 + call void @finch_str_drop(ptr %a623) + %t624 = load { ptr, i64, i64 }, ptr %a619 + store { ptr, i64, i64 } %t624, ptr %a626 + store { ptr, i64, i64 } { ptr @.str.2797, i64 36, i64 0 }, ptr %a627 + call void @finch_str_concat(ptr %a625, ptr %a626, ptr %a627) + store { ptr, i64, i64 } %t624, ptr %a628 + call void @finch_str_drop(ptr %a628) + %t629 = load { ptr, i64, i64 }, ptr %a625 + %t630 = getelementptr inbounds { ptr, i64, i64 }, ptr %a564, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.2798, i64 2, i64 0 }, ptr %a631 + call void @finch_str_join(ptr %a632, ptr %a564, ptr %a631) + %t633 = load { ptr, i64, i64 }, ptr %a632 + store { ptr, i64, i64 } %t629, ptr %a635 + store { ptr, i64, i64 } %t633, ptr %a636 + call void @finch_str_concat(ptr %a634, ptr %a635, ptr %a636) + store { ptr, i64, i64 } %t629, ptr %a637 + call void @finch_str_drop(ptr %a637) + store { ptr, i64, i64 } %t633, ptr %a638 + call void @finch_str_drop(ptr %a638) + %t639 = load { ptr, i64, i64 }, ptr %a634 + store { ptr, i64, i64 } %t639, ptr %a641 + store { ptr, i64, i64 } { ptr @.str.2799, i64 2, i64 0 }, ptr %a642 + call void @finch_str_concat(ptr %a640, ptr %a641, ptr %a642) + store { ptr, i64, i64 } %t639, ptr %a643 + call void @finch_str_drop(ptr %a643) + %t644 = load { ptr, i64, i64 }, ptr %a640 + %t645 = load ptr, ptr %a1 + %t646 = icmp eq ptr %t645, null + br i1 %t646, label %panic4535, label %ok4536 +panic4535: + call void @finch_panic(ptr @.str.2800, i64 2017, ptr @.str.2801) unreachable -ok4316: - %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 %range4317, label %inrange4318 -range4317: - call void @finch_panic_index(ptr @.str.2715, i64 1862, i64 %t583, i64 %t585) +ok4536: + %t647 = getelementptr inbounds %S.gen.Gen, ptr %t645, i32 0, i32 32 + %t648 = load i64, ptr %a49 + %t649 = load { ptr, i64, i64 }, ptr %t647 + %t650 = extractvalue { ptr, i64, i64 } %t649, 1 + %t651 = icmp uge i64 %t648, %t650 + br i1 %t651, label %range4537, label %inrange4538 +range4537: + call void @finch_panic_index(ptr @.str.2802, i64 2017, i64 %t648, i64 %t650) unreachable -inrange4318: - %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 %endif4301 -else4300: - %t589 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t589, ptr %a590 - store { ptr, i64, i64 } { ptr @.str.2716, 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 %then4319, label %else4320 -then4319: - %t594 = load ptr, ptr %a1 - %t595 = icmp eq ptr %t594, null - br i1 %t595, label %panic4322, label %ok4323 -panic4322: - call void @finch_panic(ptr @.str.2717, i64 1864, ptr @.str.2718) +inrange4538: + %t652 = extractvalue { ptr, i64, i64 } %t649, 0 + %t653 = getelementptr inbounds { ptr, i64, i64 }, ptr %t652, i64 %t648 + %t654 = load { ptr, i64, i64 }, ptr %t653 + store { ptr, i64, i64 } %t644, ptr %t653 + store { ptr, i64, i64 } %t654, ptr %a655 + call void @finch_str_drop(ptr %a655) + call void @finch.drop.arr_str(ptr %a564) + call void @finch.drop.arr_str(ptr %a563) + br label %endif4521 +else4520: + %t656 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t656, ptr %a657 + store { ptr, i64, i64 } { ptr @.str.2803, i64 6, i64 0 }, ptr %a658 + %t659 = call i32 @finch_str_eq(ptr %a657, ptr %a658) + %t660 = icmp ne i32 %t659, 0 + br i1 %t660, label %then4539, label %else4540 +then4539: + %t661 = load ptr, ptr %a1 + %t662 = icmp eq ptr %t661, null + br i1 %t662, label %panic4542, label %ok4543 +panic4542: + call void @finch_panic(ptr @.str.2804, i64 2019, ptr @.str.2805) unreachable -ok4323: - %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 - %t599 = load { ptr, i64, i64 }, ptr %t598 - %t600 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t601 = load { ptr, i64, i64 }, ptr %t600 - %t602 = call i64 @finch.gen.findStruct(ptr %t597, { ptr, i64, i64 } %t599, { ptr, i64, i64 } %t601) - %t603 = load { ptr, i64, i64 }, ptr %t596 - %t604 = extractvalue { ptr, i64, i64 } %t603, 1 - %t605 = icmp uge i64 %t602, %t604 - br i1 %t605, label %range4324, label %inrange4325 -range4324: - call void @finch_panic_index(ptr @.str.2719, i64 1864, i64 %t602, i64 %t604) +ok4543: + %t663 = getelementptr inbounds %S.gen.Gen, ptr %t661, i32 0, i32 16 + %t664 = load ptr, ptr %a1 + %t665 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 + %t666 = load { ptr, i64, i64 }, ptr %t665 + %t667 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 + %t668 = load { ptr, i64, i64 }, ptr %t667 + %t669 = call i64 @finch.gen.findStruct(ptr %t664, { ptr, i64, i64 } %t666, { ptr, i64, i64 } %t668) + %t670 = load { ptr, i64, i64 }, ptr %t663 + %t671 = extractvalue { ptr, i64, i64 } %t670, 1 + %t672 = icmp uge i64 %t669, %t671 + br i1 %t672, label %range4544, label %inrange4545 +range4544: + call void @finch_panic_index(ptr @.str.2806, i64 2019, i64 %t669, i64 %t671) unreachable -inrange4325: - %t606 = extractvalue { ptr, i64, i64 } %t603, 0 - %t607 = getelementptr inbounds %S.gen.StructDef, ptr %t606, i64 %t602 - %t608 = load %S.gen.StructDef, ptr %t607 - store %S.gen.StructDef %t608, ptr %a609 - call void @finch.copy.S_gen_StructDef(ptr %a610, ptr %a609) - %t611 = load %S.gen.StructDef, ptr %a610 - store %S.gen.StructDef %t611, ptr %a612 - %t613 = load ptr, ptr %a1 - %t614 = load %S.gen.StructDef, ptr %a612 - %t615 = call { ptr, i64, i64 } @finch.gen.fieldOffsets(ptr %t613, %S.gen.StructDef %t614) - store { ptr, i64, i64 } %t615, ptr %a616 - %t617 = load ptr, ptr %a1 - %t618 = load %S.ast.Type, ptr %a2 - %t619 = call %S.gen.SizeAlign @finch.gen.sizeAlign(ptr %t617, %S.ast.Type %t618) - store %S.gen.SizeAlign %t619, ptr %a620 - store { ptr, i64, i64 } zeroinitializer, ptr %a621 - %t622 = getelementptr inbounds %S.gen.StructDef, ptr %a612, i32 0, i32 12 - %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.cond4326 -for.cond4326: - %t626 = load i64, ptr %a625 - %t627 = icmp slt i64 %t626, %t624 - br i1 %t627, label %for.body4327, label %for.end4329 -for.body4327: - %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 %range4330, label %inrange4331 -range4330: - call void @finch_panic_index(ptr @.str.2720, i64 1869, i64 %t630, i64 %t632) +inrange4545: + %t673 = extractvalue { ptr, i64, i64 } %t670, 0 + %t674 = getelementptr inbounds %S.gen.StructDef, ptr %t673, i64 %t669 + %t675 = load %S.gen.StructDef, ptr %t674 + store %S.gen.StructDef %t675, ptr %a676 + call void @finch.copy.S_gen_StructDef(ptr %a677, ptr %a676) + %t678 = load %S.gen.StructDef, ptr %a677 + store %S.gen.StructDef %t678, ptr %a679 + %t680 = load ptr, ptr %a1 + %t681 = load %S.gen.StructDef, ptr %a679 + %t682 = call { ptr, i64, i64 } @finch.gen.fieldOffsets(ptr %t680, %S.gen.StructDef %t681) + store { ptr, i64, i64 } %t682, ptr %a683 + %t684 = load ptr, ptr %a1 + %t685 = load %S.ast.Type, ptr %a2 + %t686 = call %S.gen.SizeAlign @finch.gen.sizeAlign(ptr %t684, %S.ast.Type %t685) + store %S.gen.SizeAlign %t686, ptr %a687 + store { ptr, i64, i64 } zeroinitializer, ptr %a688 + %t689 = getelementptr inbounds %S.gen.StructDef, ptr %a679, i32 0, i32 12 + %t690 = getelementptr inbounds { ptr, i64, i64 }, ptr %t689, i32 0, i32 1 + %t691 = load i64, ptr %t690 + store i64 0, ptr %a692 + br label %for.cond4546 +for.cond4546: + %t693 = load i64, ptr %a692 + %t694 = icmp slt i64 %t693, %t691 + br i1 %t694, label %for.body4547, label %for.end4549 +for.body4547: + %t695 = load ptr, ptr %a1 + %t696 = getelementptr inbounds %S.gen.StructDef, ptr %a679, i32 0, i32 12 + %t697 = load i64, ptr %a692 + %t698 = load { ptr, i64, i64 }, ptr %t696 + %t699 = extractvalue { ptr, i64, i64 } %t698, 1 + %t700 = icmp uge i64 %t697, %t699 + br i1 %t700, label %range4550, label %inrange4551 +range4550: + call void @finch_panic_index(ptr @.str.2807, i64 2024, i64 %t697, i64 %t699) unreachable -inrange4331: - %t634 = extractvalue { ptr, i64, i64 } %t631, 0 - %t635 = getelementptr inbounds %S.ast.Type, ptr %t634, i64 %t630 - %t636 = load %S.ast.Type, ptr %t635 - %t637 = call %S.gen.SizeAlign @finch.gen.sizeAlign(ptr %t628, %S.ast.Type %t636) - store %S.gen.SizeAlign %t637, ptr %a638 - %t639 = getelementptr inbounds { ptr, i64, i64 }, ptr %a621, i32 0, i32 1 - %t640 = load ptr, ptr %a1 - %t641 = getelementptr inbounds %S.gen.StructDef, ptr %a612, i32 0, i32 11 - %t642 = load i64, ptr %a625 - %t643 = load { ptr, i64, i64 }, ptr %t641 - %t644 = extractvalue { ptr, i64, i64 } %t643, 1 - %t645 = icmp uge i64 %t642, %t644 - br i1 %t645, label %range4332, label %inrange4333 -range4332: - call void @finch_panic_index(ptr @.str.2722, i64 1870, i64 %t642, i64 %t644) +inrange4551: + %t701 = extractvalue { ptr, i64, i64 } %t698, 0 + %t702 = getelementptr inbounds %S.ast.Type, ptr %t701, i64 %t697 + %t703 = load %S.ast.Type, ptr %t702 + %t704 = call %S.gen.SizeAlign @finch.gen.sizeAlign(ptr %t695, %S.ast.Type %t703) + store %S.gen.SizeAlign %t704, ptr %a705 + %t706 = getelementptr inbounds { ptr, i64, i64 }, ptr %a688, i32 0, i32 1 + %t707 = load ptr, ptr %a1 + %t708 = getelementptr inbounds %S.gen.StructDef, ptr %a679, i32 0, i32 11 + %t709 = load i64, ptr %a692 + %t710 = load { ptr, i64, i64 }, ptr %t708 + %t711 = extractvalue { ptr, i64, i64 } %t710, 1 + %t712 = icmp uge i64 %t709, %t711 + br i1 %t712, label %range4552, label %inrange4553 +range4552: + call void @finch_panic_index(ptr @.str.2809, i64 2025, i64 %t709, i64 %t711) unreachable -inrange4333: - %t646 = extractvalue { ptr, i64, i64 } %t643, 0 - %t647 = getelementptr inbounds { ptr, i64, i64 }, ptr %t646, i64 %t642 - %t648 = load { ptr, i64, i64 }, ptr %t647 - %t649 = load i64, ptr %a48 - %t650 = load i64, ptr %a58 - %t651 = load ptr, ptr %a1 - %t652 = getelementptr inbounds %S.gen.StructDef, ptr %a612, i32 0, i32 12 - %t653 = load i64, ptr %a625 - %t654 = load { ptr, i64, i64 }, ptr %t652 - %t655 = extractvalue { ptr, i64, i64 } %t654, 1 - %t656 = icmp uge i64 %t653, %t655 - br i1 %t656, label %range4334, label %inrange4335 -range4334: - call void @finch_panic_index(ptr @.str.2723, i64 1870, i64 %t653, i64 %t655) +inrange4553: + %t713 = extractvalue { ptr, i64, i64 } %t710, 0 + %t714 = getelementptr inbounds { ptr, i64, i64 }, ptr %t713, i64 %t709 + %t715 = load { ptr, i64, i64 }, ptr %t714 + %t716 = load i64, ptr %a49 + %t717 = load i64, ptr %a59 + %t718 = load ptr, ptr %a1 + %t719 = getelementptr inbounds %S.gen.StructDef, ptr %a679, i32 0, i32 12 + %t720 = load i64, ptr %a692 + %t721 = load { ptr, i64, i64 }, ptr %t719 + %t722 = extractvalue { ptr, i64, i64 } %t721, 1 + %t723 = icmp uge i64 %t720, %t722 + br i1 %t723, label %range4554, label %inrange4555 +range4554: + call void @finch_panic_index(ptr @.str.2810, i64 2025, i64 %t720, i64 %t722) unreachable -inrange4335: - %t657 = extractvalue { ptr, i64, i64 } %t654, 0 - %t658 = getelementptr inbounds %S.ast.Type, ptr %t657, i64 %t653 - %t659 = load %S.ast.Type, ptr %t658 - %t660 = call i64 @finch.gen.diType(ptr %t651, %S.ast.Type %t659) - %t661 = getelementptr inbounds %S.gen.SizeAlign, ptr %a638, i32 0, i32 0 - %t662 = load i64, ptr %t661 - %t663 = mul i64 %t662, 8 - %t664 = load i64, ptr %a625 - %t665 = load { ptr, i64, i64 }, ptr %a616 - %t666 = extractvalue { ptr, i64, i64 } %t665, 1 - %t667 = icmp uge i64 %t664, %t666 - br i1 %t667, label %range4336, label %inrange4337 -range4336: - call void @finch_panic_index(ptr @.str.2724, i64 1870, i64 %t664, i64 %t666) +inrange4555: + %t724 = extractvalue { ptr, i64, i64 } %t721, 0 + %t725 = getelementptr inbounds %S.ast.Type, ptr %t724, i64 %t720 + %t726 = load %S.ast.Type, ptr %t725 + %t727 = call i64 @finch.gen.diType(ptr %t718, %S.ast.Type %t726) + %t728 = getelementptr inbounds %S.gen.SizeAlign, ptr %a705, i32 0, i32 0 + %t729 = load i64, ptr %t728 + %t730 = mul i64 %t729, 8 + %t731 = load i64, ptr %a692 + %t732 = load { ptr, i64, i64 }, ptr %a683 + %t733 = extractvalue { ptr, i64, i64 } %t732, 1 + %t734 = icmp uge i64 %t731, %t733 + br i1 %t734, label %range4556, label %inrange4557 +range4556: + call void @finch_panic_index(ptr @.str.2811, i64 2025, i64 %t731, i64 %t733) unreachable -inrange4337: - %t668 = extractvalue { ptr, i64, i64 } %t665, 0 - %t669 = getelementptr inbounds i64, ptr %t668, i64 %t664 - %t670 = load i64, ptr %t669 - %t671 = mul i64 %t670, 8 - %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.2721, 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 - %t679 = load i64, ptr %t639 - %t680 = add i64 %t679, 1 - call void @finch_arr_reserve(ptr %a621, i64 %t680, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t681 = load ptr, ptr %a621 - %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.step4328 -for.step4328: - %t683 = load i64, ptr %a625 - %t684 = add i64 %t683, 1 - store i64 %t684, ptr %a625 - br label %for.cond4326 -for.end4329: - %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.2725, 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.2726, 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 - call void @finch_str_from_int(ptr %a696, i64 %t695) - %t697 = load { ptr, i64, i64 }, ptr %a696 - store { ptr, i64, i64 } %t694, ptr %a699 - store { ptr, i64, i64 } %t697, ptr %a700 - 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.2727, 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 - %t707 = load i64, ptr %t706 - %t708 = mul i64 %t707, 8 - call void @finch_str_from_int(ptr %a709, i64 %t708) - %t710 = load { ptr, i64, i64 }, ptr %a709 - store { ptr, i64, i64 } %t705, 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.2728, 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.2729, 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 - store { ptr, i64, i64 } %t722, ptr %a725 - 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.2730, 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 %panic4338, label %ok4339 -panic4338: - call void @finch_panic(ptr @.str.2731, i64 1872, ptr @.str.2732) +inrange4557: + %t735 = extractvalue { ptr, i64, i64 } %t732, 0 + %t736 = getelementptr inbounds i64, ptr %t735, i64 %t731 + %t737 = load i64, ptr %t736 + %t738 = mul i64 %t737, 8 + %t739 = call i64 @finch.gen.dbgMember(ptr %t707, { ptr, i64, i64 } %t715, i64 %t716, i64 %t717, i64 0, i64 %t727, i64 %t730, i64 %t738) + call void @finch_str_from_int(ptr %a740, i64 %t739) + %t741 = load { ptr, i64, i64 }, ptr %a740 + store { ptr, i64, i64 } { ptr @.str.2808, i64 1, i64 0 }, ptr %a743 + store { ptr, i64, i64 } %t741, ptr %a744 + call void @finch_str_concat(ptr %a742, ptr %a743, ptr %a744) + store { ptr, i64, i64 } %t741, ptr %a745 + call void @finch_str_drop(ptr %a745) + %t746 = load { ptr, i64, i64 }, ptr %a742 + %t747 = load i64, ptr %t706 + %t748 = add i64 %t747, 1 + call void @finch_arr_reserve(ptr %a688, i64 %t748, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t749 = load ptr, ptr %a688 + %t750 = getelementptr inbounds { ptr, i64, i64 }, ptr %t749, i64 %t747 + store { ptr, i64, i64 } %t746, ptr %t750 + store i64 %t748, ptr %t706 + br label %for.step4548 +for.step4548: + %t751 = load i64, ptr %a692 + %t752 = add i64 %t751, 1 + store i64 %t752, ptr %a692 + br label %for.cond4546 +for.end4549: + %t753 = getelementptr inbounds %S.gen.StructDef, ptr %a679, i32 0, i32 1 + %t754 = load { ptr, i64, i64 }, ptr %t753 + store { ptr, i64, i64 } { ptr @.str.2812, i64 52, i64 0 }, ptr %a756 + store { ptr, i64, i64 } %t754, ptr %a757 + call void @finch_str_concat(ptr %a755, ptr %a756, ptr %a757) + %t758 = load { ptr, i64, i64 }, ptr %a755 + store { ptr, i64, i64 } %t758, ptr %a760 + store { ptr, i64, i64 } { ptr @.str.2813, i64 10, i64 0 }, ptr %a761 + call void @finch_str_concat(ptr %a759, ptr %a760, ptr %a761) + store { ptr, i64, i64 } %t758, ptr %a762 + call void @finch_str_drop(ptr %a762) + %t763 = load { ptr, i64, i64 }, ptr %a759 + %t764 = load i64, ptr %a59 + call void @finch_str_from_int(ptr %a765, i64 %t764) + %t766 = load { ptr, i64, i64 }, ptr %a765 + store { ptr, i64, i64 } %t763, ptr %a768 + store { ptr, i64, i64 } %t766, ptr %a769 + call void @finch_str_concat(ptr %a767, ptr %a768, ptr %a769) + store { ptr, i64, i64 } %t763, ptr %a770 + call void @finch_str_drop(ptr %a770) + store { ptr, i64, i64 } %t766, ptr %a771 + call void @finch_str_drop(ptr %a771) + %t772 = load { ptr, i64, i64 }, ptr %a767 + store { ptr, i64, i64 } %t772, ptr %a774 + store { ptr, i64, i64 } { ptr @.str.2814, i64 8, i64 0 }, ptr %a775 + call void @finch_str_concat(ptr %a773, ptr %a774, ptr %a775) + store { ptr, i64, i64 } %t772, ptr %a776 + call void @finch_str_drop(ptr %a776) + %t777 = load { ptr, i64, i64 }, ptr %a773 + %t778 = getelementptr inbounds %S.gen.SizeAlign, ptr %a687, i32 0, i32 0 + %t779 = load i64, ptr %t778 + %t780 = mul i64 %t779, 8 + call void @finch_str_from_int(ptr %a781, i64 %t780) + %t782 = load { ptr, i64, i64 }, ptr %a781 + store { ptr, i64, i64 } %t777, ptr %a784 + store { ptr, i64, i64 } %t782, ptr %a785 + call void @finch_str_concat(ptr %a783, ptr %a784, ptr %a785) + store { ptr, i64, i64 } %t777, ptr %a786 + call void @finch_str_drop(ptr %a786) + store { ptr, i64, i64 } %t782, ptr %a787 + call void @finch_str_drop(ptr %a787) + %t788 = load { ptr, i64, i64 }, ptr %a783 + store { ptr, i64, i64 } %t788, ptr %a790 + store { ptr, i64, i64 } { ptr @.str.2815, i64 24, i64 0 }, ptr %a791 + call void @finch_str_concat(ptr %a789, ptr %a790, ptr %a791) + store { ptr, i64, i64 } %t788, ptr %a792 + call void @finch_str_drop(ptr %a792) + %t793 = load { ptr, i64, i64 }, ptr %a789 + %t794 = getelementptr inbounds { ptr, i64, i64 }, ptr %a688, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.2816, i64 2, i64 0 }, ptr %a795 + call void @finch_str_join(ptr %a796, ptr %a688, ptr %a795) + %t797 = load { ptr, i64, i64 }, ptr %a796 + store { ptr, i64, i64 } %t793, ptr %a799 + store { ptr, i64, i64 } %t797, ptr %a800 + call void @finch_str_concat(ptr %a798, ptr %a799, ptr %a800) + store { ptr, i64, i64 } %t793, ptr %a801 + call void @finch_str_drop(ptr %a801) + store { ptr, i64, i64 } %t797, ptr %a802 + call void @finch_str_drop(ptr %a802) + %t803 = load { ptr, i64, i64 }, ptr %a798 + store { ptr, i64, i64 } %t803, ptr %a805 + store { ptr, i64, i64 } { ptr @.str.2817, i64 2, i64 0 }, ptr %a806 + call void @finch_str_concat(ptr %a804, ptr %a805, ptr %a806) + store { ptr, i64, i64 } %t803, ptr %a807 + call void @finch_str_drop(ptr %a807) + %t808 = load { ptr, i64, i64 }, ptr %a804 + %t809 = load ptr, ptr %a1 + %t810 = icmp eq ptr %t809, null + br i1 %t810, label %panic4558, label %ok4559 +panic4558: + call void @finch_panic(ptr @.str.2818, i64 2027, ptr @.str.2819) unreachable -ok4339: - %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 %range4340, label %inrange4341 -range4340: - call void @finch_panic_index(ptr @.str.2733, i64 1872, i64 %t734, i64 %t736) +ok4559: + %t811 = getelementptr inbounds %S.gen.Gen, ptr %t809, i32 0, i32 32 + %t812 = load i64, ptr %a49 + %t813 = load { ptr, i64, i64 }, ptr %t811 + %t814 = extractvalue { ptr, i64, i64 } %t813, 1 + %t815 = icmp uge i64 %t812, %t814 + br i1 %t815, label %range4560, label %inrange4561 +range4560: + call void @finch_panic_index(ptr @.str.2820, i64 2027, i64 %t812, i64 %t814) unreachable -inrange4341: - %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 %endif4321 -else4320: - %t740 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.2734, 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.2735, 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 %panic4342, label %ok4343 -panic4342: - call void @finch_panic(ptr @.str.2736, i64 1874, ptr @.str.2737) +inrange4561: + %t816 = extractvalue { ptr, i64, i64 } %t813, 0 + %t817 = getelementptr inbounds { ptr, i64, i64 }, ptr %t816, i64 %t812 + %t818 = load { ptr, i64, i64 }, ptr %t817 + store { ptr, i64, i64 } %t808, ptr %t817 + store { ptr, i64, i64 } %t818, ptr %a819 + call void @finch_str_drop(ptr %a819) + call void @finch.drop.arr_str(ptr %a688) + call void @finch.drop.arr_int(ptr %a683) + call void @finch.drop.S_gen_StructDef(ptr %a679) + br label %endif4541 +else4540: + %t820 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.2821, i64 20, i64 0 }, ptr %a822 + store { ptr, i64, i64 } %t820, ptr %a823 + call void @finch_str_concat(ptr %a821, ptr %a822, ptr %a823) + %t824 = load { ptr, i64, i64 }, ptr %a821 + store { ptr, i64, i64 } %t824, ptr %a826 + store { ptr, i64, i64 } { ptr @.str.2822, i64 39, i64 0 }, ptr %a827 + call void @finch_str_concat(ptr %a825, ptr %a826, ptr %a827) + store { ptr, i64, i64 } %t824, ptr %a828 + call void @finch_str_drop(ptr %a828) + %t829 = load { ptr, i64, i64 }, ptr %a825 + %t830 = load ptr, ptr %a1 + %t831 = icmp eq ptr %t830, null + br i1 %t831, label %panic4562, label %ok4563 +panic4562: + call void @finch_panic(ptr @.str.2823, i64 2029, ptr @.str.2824) unreachable -ok4343: - %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 %range4344, label %inrange4345 -range4344: - call void @finch_panic_index(ptr @.str.2738, i64 1874, i64 %t752, i64 %t754) +ok4563: + %t832 = getelementptr inbounds %S.gen.Gen, ptr %t830, i32 0, i32 32 + %t833 = load i64, ptr %a49 + %t834 = load { ptr, i64, i64 }, ptr %t832 + %t835 = extractvalue { ptr, i64, i64 } %t834, 1 + %t836 = icmp uge i64 %t833, %t835 + br i1 %t836, label %range4564, label %inrange4565 +range4564: + call void @finch_panic_index(ptr @.str.2825, i64 2029, i64 %t833, i64 %t835) unreachable -inrange4345: - %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 %endif4321 -endif4321: - br label %endif4301 -endif4301: - br label %endif4289 -endif4289: - br label %endif4274 -endif4274: - br label %endif4262 -endif4262: - %t758 = load i64, ptr %a48 - ret i64 %t758 -endif4243: - br label %endif4237 -endif4237: - br label %endif4234 -endif4234: - br label %endif4231 -endif4231: - br label %endif4228 -endif4228: - br label %endif4225 -endif4225: - br label %endif4222 -endif4222: - %t759 = load i64, ptr %a48 - %t760 = load ptr, ptr %a1 - %t761 = icmp eq ptr %t760, null - br i1 %t761, label %panic4346, label %ok4347 -panic4346: - call void @finch_panic(ptr @.str.2739, i64 1878, ptr @.str.2740) +inrange4565: + %t837 = extractvalue { ptr, i64, i64 } %t834, 0 + %t838 = getelementptr inbounds { ptr, i64, i64 }, ptr %t837, i64 %t833 + %t839 = load { ptr, i64, i64 }, ptr %t838 + store { ptr, i64, i64 } %t829, ptr %t838 + store { ptr, i64, i64 } %t839, ptr %a840 + call void @finch_str_drop(ptr %a840) + br label %endif4541 +endif4541: + br label %endif4521 +endif4521: + br label %endif4509 +endif4509: + br label %endif4494 +endif4494: + br label %endif4482 +endif4482: + %t841 = load i64, ptr %a49 + call void @finch_str_drop(ptr %a27) + call void @finch_str_drop(ptr %a8) + ret i64 %t841 +endif4463: + br label %endif4457 +endif4457: + br label %endif4454 +endif4454: + br label %endif4451 +endif4451: + br label %endif4448 +endif4448: + br label %endif4445 +endif4445: + br label %endif4442 +endif4442: + %t842 = load i64, ptr %a49 + %t843 = load ptr, ptr %a1 + %t844 = icmp eq ptr %t843, null + br i1 %t844, label %panic4566, label %ok4567 +panic4566: + call void @finch_panic(ptr @.str.2826, i64 2033, ptr @.str.2827) unreachable -ok4347: - %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 - %t766 = call i64 @finch_map_slot(ptr %t762, ptr %a764, 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, ptr %a765) - %t767 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t762, i32 0, i32 0 - %t768 = load ptr, ptr %t767 - %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.new4348, label %map.have4349 -map.new4348: - %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.have4349 -map.have4349: - %t774 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t769, i32 0, i32 2 - store i64 %t759, ptr %t774 - %t775 = load i64, ptr %a48 - ret i64 %t775 +ok4567: + %t845 = getelementptr inbounds %S.gen.Gen, ptr %t843, i32 0, i32 33 + %t846 = load { ptr, i64, i64 }, ptr %a27 + store { ptr, i64, i64 } %t846, ptr %a847 + store i32 0, ptr %a848 + %t849 = call i64 @finch_map_slot(ptr %t845, ptr %a847, 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, ptr %a848) + %t850 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t845, i32 0, i32 0 + %t851 = load ptr, ptr %t850 + %t852 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t851, i64 %t849 + %t853 = load i32, ptr %a848 + %t854 = icmp ne i32 %t853, 0 + br i1 %t854, label %map.new4568, label %map.have4569 +map.new4568: + %t855 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t852, i32 0, i32 1 + call void @finch_str_copy(ptr %t855, ptr %a847) + %t856 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t852, i32 0, i32 2 + store i64 0, ptr %t856 + br label %map.have4569 +map.have4569: + %t857 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t852, i32 0, i32 2 + store i64 %t842, ptr %t857 + %t858 = load i64, ptr %a49 + call void @finch_str_drop(ptr %a27) + call void @finch_str_drop(ptr %a8) + ret i64 %t858 } define internal i64 @finch.gen.dbgLocation(ptr %p0) { @@ -40228,235 +46689,285 @@ entry: %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 + %a11 = alloca { ptr, i64, i64 }, align 16 %a13 = alloca { ptr, i64, i64 }, align 16 %a14 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + %a16 = 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 + %a25 = 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 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 + %a30 = 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 + %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 + %a44 = alloca { ptr, i64, i64 }, align 16 %a45 = alloca { ptr, i64, i64 }, align 16 + %a47 = alloca { ptr, i64, i64 }, align 16 %a52 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = 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 - %a73 = alloca { ptr, i64, i64 }, align 16 + %a59 = alloca { ptr, i64, i64 }, align 16 + %a62 = alloca { ptr, i64, i64 }, align 16 + %a63 = alloca { ptr, i64, i64 }, align 16 %a74 = 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 + %a78 = alloca { ptr, i64, i64 }, align 16 + %a79 = 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 { 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 + %a90 = 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 - %a97 = 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 %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca i64, align 16 + %a107 = 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 i32, align 16 + %a113 = 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 + %a118 = alloca { ptr, i64, i64 }, align 16 + %a121 = alloca { ptr, i64, i64 }, align 16 + %a122 = alloca i64, align 16 + %a128 = alloca { ptr, i64, i64 }, align 16 + %a129 = alloca i32, align 16 store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic4350, label %ok4351 -panic4350: - call void @finch_panic(ptr @.str.2742, i64 1883, ptr @.str.2743) + br i1 %t3, label %panic4570, label %ok4571 +panic4570: + call void @finch_panic(ptr @.str.2829, i64 2038, ptr @.str.2830) unreachable -ok4351: - %t4 = getelementptr inbounds %S.gen.Gen, ptr %t2, i32 0, i32 35 +ok4571: + %t4 = getelementptr inbounds %S.gen.Gen, ptr %t2, i32 0, i32 36 %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.2741, i64 2, i64 0 }, ptr %a9 + store { ptr, i64, i64 } { ptr @.str.2828, 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.2744, 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 %panic4352, label %ok4353 -panic4352: - call void @finch_panic(ptr @.str.2745, i64 1883, ptr @.str.2746) + store { ptr, i64, i64 } %t7, ptr %a11 + call void @finch_str_drop(ptr %a11) + %t12 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t12, ptr %a14 + store { ptr, i64, i64 } { ptr @.str.2831, i64 1, i64 0 }, ptr %a15 + call void @finch_str_concat(ptr %a13, ptr %a14, ptr %a15) + store { ptr, i64, i64 } %t12, ptr %a16 + call void @finch_str_drop(ptr %a16) + %t17 = load { ptr, i64, i64 }, ptr %a13 + %t18 = load ptr, ptr %a1 + %t19 = icmp eq ptr %t18, null + br i1 %t19, label %panic4572, label %ok4573 +panic4572: + call void @finch_panic(ptr @.str.2832, i64 2038, ptr @.str.2833) unreachable -ok4353: - %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 - store { ptr, i64, i64 } %t15, 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.2747, 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 %panic4354, label %ok4355 -panic4354: - call void @finch_panic(ptr @.str.2748, i64 1883, ptr @.str.2749) +ok4573: + %t20 = getelementptr inbounds %S.gen.Gen, ptr %t18, i32 0, i32 37 + %t21 = load i64, ptr %t20 + call void @finch_str_from_int(ptr %a22, i64 %t21) + %t23 = load { ptr, i64, i64 }, ptr %a22 + store { ptr, i64, i64 } %t17, ptr %a25 + store { ptr, i64, i64 } %t23, ptr %a26 + call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) + store { ptr, i64, i64 } %t17, ptr %a27 + call void @finch_str_drop(ptr %a27) + store { ptr, i64, i64 } %t23, ptr %a28 + call void @finch_str_drop(ptr %a28) + %t29 = load { ptr, i64, i64 }, ptr %a24 + store { ptr, i64, i64 } %t29, ptr %a31 + store { ptr, i64, i64 } { ptr @.str.2834, i64 1, i64 0 }, ptr %a32 + call void @finch_str_concat(ptr %a30, ptr %a31, ptr %a32) + store { ptr, i64, i64 } %t29, ptr %a33 + call void @finch_str_drop(ptr %a33) + %t34 = load { ptr, i64, i64 }, ptr %a30 + %t35 = load ptr, ptr %a1 + %t36 = icmp eq ptr %t35, null + br i1 %t36, label %panic4574, label %ok4575 +panic4574: + call void @finch_panic(ptr @.str.2835, i64 2038, ptr @.str.2836) unreachable -ok4355: - %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 - store { ptr, i64, i64 } %t29, 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 %a40 - %t41 = load ptr, ptr %a1 - %t42 = icmp eq ptr %t41, null - br i1 %t42, label %panic4356, label %ok4357 -panic4356: - call void @finch_panic(ptr @.str.2750, i64 1884, ptr @.str.2751) - unreachable -ok4357: - %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 %then4358, label %endif4360 -then4358: +ok4575: + %t37 = getelementptr inbounds %S.gen.Gen, ptr %t35, i32 0, i32 35 + %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 } %t34, ptr %a42 + store { ptr, i64, i64 } %t40, ptr %a43 + call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) + store { ptr, i64, i64 } %t34, ptr %a44 + call void @finch_str_drop(ptr %a44) + store { ptr, i64, i64 } %t40, ptr %a45 + call void @finch_str_drop(ptr %a45) + %t46 = load { ptr, i64, i64 }, ptr %a41 + store { ptr, i64, i64 } %t46, ptr %a47 %t48 = load ptr, ptr %a1 %t49 = icmp eq ptr %t48, null - br i1 %t49, label %panic4361, label %ok4362 -panic4361: - call void @finch_panic(ptr @.str.2752, i64 1885, ptr @.str.2753) + br i1 %t49, label %panic4576, label %ok4577 +panic4576: + call void @finch_panic(ptr @.str.2837, i64 2039, ptr @.str.2838) unreachable -ok4362: - %t50 = getelementptr inbounds %S.gen.Gen, ptr %t48, i32 0, i32 32 - %t51 = load { ptr, i64, i64 }, ptr %a40 +ok4577: + %t50 = getelementptr inbounds %S.gen.Gen, ptr %t48, i32 0, i32 33 + %t51 = load { ptr, i64, i64 }, ptr %a47 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.missing4363, label %map.found4364 -map.missing4363: - 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.2754, i64 1885, ptr %a55) + %t54 = icmp sge i64 %t53, 0 + br i1 %t54, label %then4578, label %endif4580 +then4578: + %t55 = load ptr, ptr %a1 + %t56 = icmp eq ptr %t55, null + br i1 %t56, label %panic4581, label %ok4582 +panic4581: + call void @finch_panic(ptr @.str.2839, i64 2040, ptr @.str.2840) unreachable -map.found4364: - %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 -endif4360: - %t62 = load ptr, ptr %a1 - %t63 = load ptr, ptr %a1 - %t64 = icmp eq ptr %t63, null - br i1 %t64, label %panic4365, label %ok4366 -panic4365: - call void @finch_panic(ptr @.str.2756, i64 1887, ptr @.str.2757) +ok4582: + %t57 = getelementptr inbounds %S.gen.Gen, ptr %t55, i32 0, i32 33 + %t58 = load { ptr, i64, i64 }, ptr %a47 + store { ptr, i64, i64 } %t58, ptr %a59 + %t60 = call i64 @finch_map_find(ptr %t57, ptr %a59, 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) + %t61 = icmp slt i64 %t60, 0 + br i1 %t61, label %map.missing4583, label %map.found4584 +map.missing4583: + store { ptr, i64, i64 } zeroinitializer, ptr %a62 + store { ptr, i64, i64 } %t58, ptr %a63 + call void @finch_buf_str(ptr %a62, ptr %a63, i32 1) + call void @finch_map_missing(ptr @.str.2841, i64 2040, ptr %a62) unreachable -ok4366: - %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.2755, 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.2758, 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 %panic4367, label %ok4368 -panic4367: - call void @finch_panic(ptr @.str.2759, i64 1887, ptr @.str.2760) +map.found4584: + %t64 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t57, i32 0, i32 0 + %t65 = load ptr, ptr %t64 + %t66 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t65, i64 %t60 + %t67 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t66, i32 0, i32 2 + %t68 = load i64, ptr %t67 + call void @finch_str_drop(ptr %a47) + ret i64 %t68 +endif4580: + %t69 = load ptr, ptr %a1 + %t70 = load ptr, ptr %a1 + %t71 = icmp eq ptr %t70, null + br i1 %t71, label %panic4585, label %ok4586 +panic4585: + call void @finch_panic(ptr @.str.2843, i64 2042, ptr @.str.2844) unreachable -ok4368: - %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 - store { ptr, i64, i64 } %t76, 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.2761, 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 %panic4369, label %ok4370 -panic4369: - call void @finch_panic(ptr @.str.2762, i64 1887, ptr @.str.2763) +ok4586: + %t72 = getelementptr inbounds %S.gen.Gen, ptr %t70, i32 0, i32 36 + %t73 = load i64, ptr %t72 + call void @finch_str_from_int(ptr %a74, i64 %t73) + %t75 = load { ptr, i64, i64 }, ptr %a74 + store { ptr, i64, i64 } { ptr @.str.2842, i64 18, i64 0 }, ptr %a77 + store { ptr, i64, i64 } %t75, ptr %a78 + call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78) + store { ptr, i64, i64 } %t75, ptr %a79 + call void @finch_str_drop(ptr %a79) + %t80 = load { ptr, i64, i64 }, ptr %a76 + store { ptr, i64, i64 } %t80, ptr %a82 + store { ptr, i64, i64 } { ptr @.str.2845, i64 10, i64 0 }, ptr %a83 + call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) + store { ptr, i64, i64 } %t80, ptr %a84 + call void @finch_str_drop(ptr %a84) + %t85 = load { ptr, i64, i64 }, ptr %a81 + %t86 = load ptr, ptr %a1 + %t87 = icmp eq ptr %t86, null + br i1 %t87, label %panic4587, label %ok4588 +panic4587: + call void @finch_panic(ptr @.str.2846, i64 2042, ptr @.str.2847) unreachable -ok4370: - %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 - store { ptr, i64, i64 } %t90, 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.2764, 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) - store i64 %t105, ptr %a106 - %t107 = load i64, ptr %a106 - %t108 = load ptr, ptr %a1 - %t109 = icmp eq ptr %t108, null - br i1 %t109, label %panic4371, label %ok4372 -panic4371: - call void @finch_panic(ptr @.str.2765, i64 1888, ptr @.str.2766) +ok4588: + %t88 = getelementptr inbounds %S.gen.Gen, ptr %t86, i32 0, i32 37 + %t89 = load i64, ptr %t88 + call void @finch_str_from_int(ptr %a90, i64 %t89) + %t91 = load { ptr, i64, i64 }, ptr %a90 + store { ptr, i64, i64 } %t85, ptr %a93 + store { ptr, i64, i64 } %t91, ptr %a94 + call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) + store { ptr, i64, i64 } %t85, ptr %a95 + call void @finch_str_drop(ptr %a95) + store { ptr, i64, i64 } %t91, ptr %a96 + call void @finch_str_drop(ptr %a96) + %t97 = load { ptr, i64, i64 }, ptr %a92 + store { ptr, i64, i64 } %t97, ptr %a99 + store { ptr, i64, i64 } { ptr @.str.2848, i64 10, i64 0 }, ptr %a100 + call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100) + store { ptr, i64, i64 } %t97, ptr %a101 + call void @finch_str_drop(ptr %a101) + %t102 = load { ptr, i64, i64 }, ptr %a98 + %t103 = load ptr, ptr %a1 + %t104 = icmp eq ptr %t103, null + br i1 %t104, label %panic4589, label %ok4590 +panic4589: + call void @finch_panic(ptr @.str.2849, i64 2042, ptr @.str.2850) unreachable -ok4372: - %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 - %t114 = call i64 @finch_map_slot(ptr %t110, ptr %a112, 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, ptr %a113) - %t115 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t110, i32 0, i32 0 - %t116 = load ptr, ptr %t115 - %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.new4373, label %map.have4374 -map.new4373: - %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.have4374 -map.have4374: - %t122 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t117, i32 0, i32 2 - store i64 %t107, ptr %t122 - %t123 = load i64, ptr %a106 - ret i64 %t123 +ok4590: + %t105 = getelementptr inbounds %S.gen.Gen, ptr %t103, i32 0, i32 35 + %t106 = load i64, ptr %t105 + call void @finch_str_from_int(ptr %a107, i64 %t106) + %t108 = load { ptr, i64, i64 }, ptr %a107 + store { ptr, i64, i64 } %t102, ptr %a110 + store { ptr, i64, i64 } %t108, ptr %a111 + call void @finch_str_concat(ptr %a109, ptr %a110, ptr %a111) + store { ptr, i64, i64 } %t102, ptr %a112 + call void @finch_str_drop(ptr %a112) + store { ptr, i64, i64 } %t108, ptr %a113 + call void @finch_str_drop(ptr %a113) + %t114 = load { ptr, i64, i64 }, ptr %a109 + store { ptr, i64, i64 } %t114, ptr %a116 + store { ptr, i64, i64 } { ptr @.str.2851, i64 1, i64 0 }, ptr %a117 + call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) + store { ptr, i64, i64 } %t114, ptr %a118 + call void @finch_str_drop(ptr %a118) + %t119 = load { ptr, i64, i64 }, ptr %a115 + %t120 = call i64 @finch.gen.md(ptr %t69, { ptr, i64, i64 } %t119) + store { ptr, i64, i64 } %t119, ptr %a121 + call void @finch_str_drop(ptr %a121) + store i64 %t120, ptr %a122 + %t123 = load i64, ptr %a122 + %t124 = load ptr, ptr %a1 + %t125 = icmp eq ptr %t124, null + br i1 %t125, label %panic4591, label %ok4592 +panic4591: + call void @finch_panic(ptr @.str.2852, i64 2043, ptr @.str.2853) + unreachable +ok4592: + %t126 = getelementptr inbounds %S.gen.Gen, ptr %t124, i32 0, i32 33 + %t127 = load { ptr, i64, i64 }, ptr %a47 + store { ptr, i64, i64 } %t127, ptr %a128 + store i32 0, ptr %a129 + %t130 = call i64 @finch_map_slot(ptr %t126, ptr %a128, 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, ptr %a129) + %t131 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t126, i32 0, i32 0 + %t132 = load ptr, ptr %t131 + %t133 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t132, i64 %t130 + %t134 = load i32, ptr %a129 + %t135 = icmp ne i32 %t134, 0 + br i1 %t135, label %map.new4593, label %map.have4594 +map.new4593: + %t136 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t133, i32 0, i32 1 + call void @finch_str_copy(ptr %t136, ptr %a128) + %t137 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t133, i32 0, i32 2 + store i64 0, ptr %t137 + br label %map.have4594 +map.have4594: + %t138 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t133, i32 0, i32 2 + store i64 %t123, ptr %t138 + %t139 = load i64, ptr %a122 + call void @finch_str_drop(ptr %a47) + ret i64 %t139 } define internal i64 @finch.gen.dbgSubprogram(ptr %p0, %S.ast.Node %p1) { @@ -40475,69 +46986,92 @@ entry: %a69 = alloca { ptr, i64, i64 }, align 16 %a70 = alloca { ptr, i64, i64 }, align 16 %a71 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 + %a72 = alloca { ptr, i64, i64 }, align 16 %a74 = alloca { ptr, i64, i64 }, align 16 %a75 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca i64, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 + %a76 = alloca { ptr, i64, i64 }, align 16 + %a77 = alloca { ptr, i64, i64 }, align 16 + %a80 = alloca { ptr, i64, i64 }, align 16 + %a81 = alloca i64, align 16 + %a85 = alloca { ptr, i64, i64 }, align 16 %a86 = 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 + %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 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, 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 { ptr, i64, i64 }, align 16 %a104 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 + %a105 = alloca { ptr, i64, i64 }, align 16 + %a106 = 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 - %a113 = 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 + %a117 = 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 - %a121 = 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 %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 + %a128 = 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 %a133 = alloca { ptr, i64, i64 }, align 16 %a134 = alloca { ptr, i64, i64 }, align 16 %a136 = alloca { ptr, i64, i64 }, align 16 %a137 = alloca { ptr, i64, i64 }, align 16 %a138 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 + %a139 = alloca { ptr, i64, i64 }, align 16 %a143 = 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 %a147 = alloca { ptr, i64, i64 }, align 16 %a148 = 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 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 + %a154 = alloca { ptr, i64, i64 }, align 16 %a157 = 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 + %a162 = 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 + %a168 = alloca { ptr, i64, i64 }, align 16 + %a172 = alloca { ptr, i64, i64 }, align 16 + %a174 = alloca { ptr, i64, i64 }, align 16 + %a175 = 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 + %a180 = 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 + %a186 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store %S.ast.Node %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic4375, label %ok4376 -panic4375: - call void @finch_panic(ptr @.str.2767, i64 1893, ptr @.str.2768) + br i1 %t4, label %panic4595, label %ok4596 +panic4595: + call void @finch_panic(ptr @.str.2854, i64 2048, ptr @.str.2855) unreachable -ok4376: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 12 +ok4596: + %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 13 %t6 = load %S.gen.FnSig, ptr %t5 store %S.gen.FnSig %t6, ptr %a7 call void @finch.copy.S_gen_FnSig(ptr %a8, ptr %a7) @@ -40561,28 +47095,28 @@ ok4376: %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 %then4377, label %endif4379 -then4377: + br i1 %t25, label %then4597, label %endif4599 +then4597: %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.2769, i64 4, i64 0 }, ptr %t30 + store { ptr, i64, i64 } { ptr @.str.2856, i64 4, i64 0 }, ptr %t30 store i64 %t28, ptr %t26 - br label %endif4379 -endif4379: + br label %endif4599 +endif4599: %t31 = getelementptr inbounds %S.gen.FnSig, ptr %a10, i32 0, i32 13 store i64 0, ptr %a32 - br label %each.cond4380 -each.cond4380: + br label %each.cond4600 +each.cond4600: %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.body4381, label %each.end4383 -each.body4381: + br i1 %t36, label %each.body4601, label %each.end4603 +each.body4601: %t37 = load ptr, ptr %t31 %t38 = getelementptr inbounds %S.ast.Type, ptr %t37, i64 %t35 %t39 = load %S.ast.Type, ptr %t38 @@ -40599,136 +47133,184 @@ each.body4381: %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.step4382 -each.step4382: + br label %each.step4602 +each.step4602: %t50 = load i64, ptr %a32 %t51 = add i64 %t50, 1 store i64 %t51, ptr %a32 - br label %each.cond4380 -each.end4383: + br label %each.cond4600 +each.end4603: %t52 = load ptr, ptr %a1 %t53 = icmp eq ptr %t52, null - br i1 %t53, label %panic4384, label %ok4385 -panic4384: - call void @finch_panic(ptr @.str.2770, i64 1902, ptr @.str.2771) + br i1 %t53, label %panic4604, label %ok4605 +panic4604: + call void @finch_panic(ptr @.str.2857, i64 2057, ptr @.str.2858) unreachable -ok4385: - %t54 = getelementptr inbounds %S.gen.Gen, ptr %t52, i32 0, i32 33 +ok4605: + %t54 = getelementptr inbounds %S.gen.Gen, ptr %t52, i32 0, i32 34 %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 %range4386, label %inrange4387 -range4386: - call void @finch_panic_index(ptr @.str.2772, i64 1902, i64 %t56, i64 %t58) + br i1 %t59, label %range4606, label %inrange4607 +range4606: + call void @finch_panic_index(ptr @.str.2859, i64 2057, i64 %t56, i64 %t58) unreachable -inrange4387: +inrange4607: %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.2774, i64 2, i64 0 }, ptr %a66 + store { ptr, i64, i64 } { ptr @.str.2861, 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.2773, i64 27, i64 0 }, ptr %a70 + store { ptr, i64, i64 } { ptr @.str.2860, 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.2775, 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) - store i64 %t77, ptr %a78 - %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.2776, 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.2777, 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 - %t91 = load { ptr, i64, i64 }, ptr %t90 - store { ptr, i64, i64 } %t91, ptr %a92 + store { ptr, i64, i64 } %t68, ptr %a72 + call void @finch_str_drop(ptr %a72) + %t73 = load { ptr, i64, i64 }, ptr %a69 + store { ptr, i64, i64 } %t73, ptr %a75 + store { ptr, i64, i64 } { ptr @.str.2862, i64 2, i64 0 }, ptr %a76 + call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) + store { ptr, i64, i64 } %t73, ptr %a77 + call void @finch_str_drop(ptr %a77) + %t78 = load { ptr, i64, i64 }, ptr %a74 + %t79 = call i64 @finch.gen.md(ptr %t64, { ptr, i64, i64 } %t78) + store { ptr, i64, i64 } %t78, ptr %a80 + call void @finch_str_drop(ptr %a80) + store i64 %t79, ptr %a81 + %t82 = load ptr, ptr %a1 + %t83 = getelementptr inbounds %S.gen.FnSig, ptr %a10, i32 0, i32 1 + %t84 = load { ptr, i64, i64 }, ptr %t83 + store { ptr, i64, i64 } { ptr @.str.2863, i64 30, 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.2864, i64 17, i64 0 }, ptr %a91 + call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) + store { ptr, i64, i64 } %t88, ptr %a92 + call void @finch_str_drop(ptr %a92) + %t93 = load { ptr, i64, i64 }, ptr %a89 %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.2778, 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.2779, i64 11, i64 0 }, ptr %a104 + %t95 = load { ptr, i64, i64 }, ptr %t94 + store { ptr, i64, i64 } %t95, ptr %a96 + %t98 = getelementptr inbounds %S.gen.FnSig, ptr %a10, i32 0, i32 11 + %t99 = getelementptr inbounds { ptr, i64, i64 }, ptr %t98, i32 0, i32 1 + %t100 = load i64, ptr %t99 + call void @finch_str_sub(ptr %a97, ptr %a96, i64 1, i64 %t100, ptr @.str.2865, i64 2059) + %t101 = load { ptr, i64, i64 }, ptr %a97 + store { ptr, i64, i64 } %t93, 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 - %t106 = load i64, ptr %a63 - call void @finch_str_from_int(ptr %a107, i64 %t106) - %t108 = load { ptr, i64, i64 }, ptr %a107 - store { ptr, i64, i64 } %t105, 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.2780, 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 - call void @finch_str_from_int(ptr %a118, i64 %t117) - %t119 = load { ptr, i64, i64 }, ptr %a118 - store { ptr, i64, i64 } %t116, 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.2781, 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 - %t129 = load i64, ptr %t128 - call void @finch_str_from_int(ptr %a130, i64 %t129) - %t131 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } %t127, ptr %a133 - store { ptr, i64, i64 } %t131, ptr %a134 - call void @finch_str_concat(ptr %a132, ptr %a133, ptr %a134) - %t135 = load { ptr, i64, i64 }, ptr %a132 + store { ptr, i64, i64 } %t93, ptr %a105 + call void @finch_str_drop(ptr %a105) + store { ptr, i64, i64 } %t101, ptr %a106 + call void @finch_str_drop(ptr %a106) + %t107 = load { ptr, i64, i64 }, ptr %a102 + store { ptr, i64, i64 } %t107, ptr %a109 + store { ptr, i64, i64 } { ptr @.str.2866, i64 11, i64 0 }, ptr %a110 + call void @finch_str_concat(ptr %a108, ptr %a109, ptr %a110) + store { ptr, i64, i64 } %t107, ptr %a111 + call void @finch_str_drop(ptr %a111) + %t112 = load { ptr, i64, i64 }, ptr %a108 + %t113 = load i64, ptr %a63 + call void @finch_str_from_int(ptr %a114, i64 %t113) + %t115 = load { ptr, i64, i64 }, ptr %a114 + store { ptr, i64, i64 } %t112, ptr %a117 + store { ptr, i64, i64 } %t115, ptr %a118 + call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118) + store { ptr, i64, i64 } %t112, ptr %a119 + call void @finch_str_drop(ptr %a119) + store { ptr, i64, i64 } %t115, ptr %a120 + call void @finch_str_drop(ptr %a120) + %t121 = load { ptr, i64, i64 }, ptr %a116 + store { ptr, i64, i64 } %t121, ptr %a123 + store { ptr, i64, i64 } { ptr @.str.2867, i64 9, i64 0 }, ptr %a124 + call void @finch_str_concat(ptr %a122, ptr %a123, ptr %a124) + store { ptr, i64, i64 } %t121, ptr %a125 + call void @finch_str_drop(ptr %a125) + %t126 = load { ptr, i64, i64 }, ptr %a122 + %t127 = load i64, ptr %a63 + call void @finch_str_from_int(ptr %a128, i64 %t127) + %t129 = load { ptr, i64, i64 }, ptr %a128 + 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) + store { ptr, i64, i64 } %t126, ptr %a133 + call void @finch_str_drop(ptr %a133) + store { ptr, i64, i64 } %t129, ptr %a134 + call void @finch_str_drop(ptr %a134) + %t135 = load { ptr, i64, i64 }, ptr %a130 store { ptr, i64, i64 } %t135, ptr %a137 - store { ptr, i64, i64 } { ptr @.str.2782, i64 9, i64 0 }, ptr %a138 + store { ptr, i64, i64 } { ptr @.str.2868, i64 8, 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 - call void @finch_str_from_int(ptr %a141, i64 %t140) - %t142 = load { ptr, i64, i64 }, ptr %a141 - store { ptr, i64, i64 } %t139, ptr %a144 - store { ptr, i64, i64 } %t142, 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 %a148 - store { ptr, i64, i64 } { ptr @.str.2783, 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 - %t152 = load i64, ptr %t151 - call void @finch_str_from_int(ptr %a153, i64 %t152) - %t154 = load { ptr, i64, i64 }, ptr %a153 - store { ptr, i64, i64 } %t150, 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.2784, i64 87, i64 0 }, ptr %a161 + store { ptr, i64, i64 } %t135, ptr %a139 + call void @finch_str_drop(ptr %a139) + %t140 = load { ptr, i64, i64 }, ptr %a136 + %t141 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 + %t142 = load i64, ptr %t141 + call void @finch_str_from_int(ptr %a143, i64 %t142) + %t144 = load { ptr, i64, i64 }, ptr %a143 + store { ptr, i64, i64 } %t140, ptr %a146 + store { ptr, i64, i64 } %t144, ptr %a147 + call void @finch_str_concat(ptr %a145, ptr %a146, ptr %a147) + store { ptr, i64, i64 } %t140, ptr %a148 + call void @finch_str_drop(ptr %a148) + store { ptr, i64, i64 } %t144, ptr %a149 + call void @finch_str_drop(ptr %a149) + %t150 = load { ptr, i64, i64 }, ptr %a145 + store { ptr, i64, i64 } %t150, ptr %a152 + store { ptr, i64, i64 } { ptr @.str.2869, i64 9, i64 0 }, ptr %a153 + call void @finch_str_concat(ptr %a151, ptr %a152, ptr %a153) + store { ptr, i64, i64 } %t150, ptr %a154 + call void @finch_str_drop(ptr %a154) + %t155 = load { ptr, i64, i64 }, ptr %a151 + %t156 = load i64, ptr %a81 + call void @finch_str_from_int(ptr %a157, i64 %t156) + %t158 = load { ptr, i64, i64 }, ptr %a157 + store { ptr, i64, i64 } %t155, 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 - %t163 = call i64 @finch.gen.md(ptr %t79, { ptr, i64, i64 } %t162) - ret i64 %t163 + store { ptr, i64, i64 } %t155, ptr %a162 + call void @finch_str_drop(ptr %a162) + store { ptr, i64, i64 } %t158, ptr %a163 + call void @finch_str_drop(ptr %a163) + %t164 = load { ptr, i64, i64 }, ptr %a159 + store { ptr, i64, i64 } %t164, ptr %a166 + store { ptr, i64, i64 } { ptr @.str.2870, i64 13, i64 0 }, ptr %a167 + call void @finch_str_concat(ptr %a165, ptr %a166, ptr %a167) + store { ptr, i64, i64 } %t164, ptr %a168 + call void @finch_str_drop(ptr %a168) + %t169 = load { ptr, i64, i64 }, ptr %a165 + %t170 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 + %t171 = load i64, ptr %t170 + call void @finch_str_from_int(ptr %a172, i64 %t171) + %t173 = load { ptr, i64, i64 }, ptr %a172 + store { ptr, i64, i64 } %t169, ptr %a175 + store { ptr, i64, i64 } %t173, ptr %a176 + call void @finch_str_concat(ptr %a174, ptr %a175, ptr %a176) + store { ptr, i64, i64 } %t169, ptr %a177 + call void @finch_str_drop(ptr %a177) + store { ptr, i64, i64 } %t173, ptr %a178 + call void @finch_str_drop(ptr %a178) + %t179 = load { ptr, i64, i64 }, ptr %a174 + store { ptr, i64, i64 } %t179, ptr %a181 + store { ptr, i64, i64 } { ptr @.str.2871, i64 87, i64 0 }, ptr %a182 + call void @finch_str_concat(ptr %a180, ptr %a181, ptr %a182) + store { ptr, i64, i64 } %t179, ptr %a183 + call void @finch_str_drop(ptr %a183) + %t184 = load { ptr, i64, i64 }, ptr %a180 + %t185 = call i64 @finch.gen.md(ptr %t82, { ptr, i64, i64 } %t184) + store { ptr, i64, i64 } %t184, ptr %a186 + call void @finch_str_drop(ptr %a186) + call void @finch.drop.arr_str(ptr %a11) + call void @finch.drop.S_gen_FnSig(ptr %a10) + ret i64 %t185 } define internal void @finch.gen.dbgVariable(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3, { ptr, i64, i64 } %p4) { @@ -40744,57 +47326,79 @@ entry: %a35 = alloca { ptr, i64, i64 }, align 16 %a36 = alloca { ptr, i64, i64 }, align 16 %a37 = alloca { ptr, i64, i64 }, align 16 + %a38 = 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 + %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 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = 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 + %a51 = 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 %a61 = 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 + %a62 = alloca { ptr, i64, i64 }, align 16 + %a63 = 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 + %a68 = 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 { ptr, i64, i64 }, align 16 %a86 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 + %a87 = alloca { ptr, i64, i64 }, align 16 %a89 = 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 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a97 = 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 %a101 = alloca { ptr, i64, i64 }, align 16 + %a102 = 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 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 + %a107 = alloca { ptr, i64, i64 }, align 16 %a110 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca i64, align 16 + %a112 = 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 + %a116 = alloca { ptr, i64, i64 }, align 16 + %a119 = alloca { ptr, i64, i64 }, align 16 + %a120 = alloca { ptr, i64, i64 }, align 16 + %a121 = alloca { ptr, i64, i64 }, align 16 + %a122 = 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 %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = 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 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 + %a131 = alloca i64, align 16 + %a144 = alloca { ptr, i64, i64 }, align 16 + %a145 = alloca { ptr, i64, i64 }, align 16 + %a146 = alloca { ptr, i64, i64 }, align 16 + %a148 = 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 + %a154 = 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 + %a159 = alloca { ptr, i64, i64 }, align 16 + %a160 = alloca { ptr, i64, i64 }, align 16 + %a162 = 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 + %a167 = 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 @@ -40802,212 +47406,258 @@ entry: store { ptr, i64, i64 } %p4, ptr %a5 %t6 = load ptr, ptr %a1 %t7 = icmp eq ptr %t6, null - br i1 %t7, label %panic4388, label %ok4389 -panic4388: - call void @finch_panic(ptr @.str.2785, i64 1908, ptr @.str.2786) + br i1 %t7, label %panic4608, label %ok4609 +panic4608: + call void @finch_panic(ptr @.str.2872, i64 2063, ptr @.str.2873) unreachable -ok4389: - %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 28 +ok4609: + %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 29 %t9 = load i1, ptr %t8 %t10 = xor i1 %t9, true - br label %logic.from4390 -logic.from4390: - br i1 %t10, label %logic.end4392, label %logic.rhs4391 -logic.rhs4391: + br label %logic.from4610 +logic.from4610: + br i1 %t10, label %logic.end4612, label %logic.rhs4611 +logic.rhs4611: %t11 = load ptr, ptr %a1 %t12 = icmp eq ptr %t11, null - br i1 %t12, label %panic4393, label %ok4394 -panic4393: - call void @finch_panic(ptr @.str.2787, i64 1908, ptr @.str.2788) + br i1 %t12, label %panic4613, label %ok4614 +panic4613: + call void @finch_panic(ptr @.str.2874, i64 2063, ptr @.str.2875) unreachable -ok4394: - %t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 34 +ok4614: + %t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 35 %t14 = load i64, ptr %t13 %t15 = icmp slt i64 %t14, 0 - br label %logic.rend4395 -logic.rend4395: - br label %logic.end4392 -logic.end4392: - %t16 = phi i1 [ true, %logic.from4390 ], [ %t15, %logic.rend4395 ] - br i1 %t16, label %then4396, label %endif4398 -then4396: + br label %logic.rend4615 +logic.rend4615: + br label %logic.end4612 +logic.end4612: + %t16 = phi i1 [ true, %logic.from4610 ], [ %t15, %logic.rend4615 ] + br i1 %t16, label %then4616, label %endif4618 +then4616: ret void -endif4398: +endif4618: %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 %then4399, label %endif4401 -then4399: + br i1 %t22, label %then4619, label %endif4621 +then4619: ret void -endif4401: - store { ptr, i64, i64 } { ptr @.str.2789, i64 0, i64 0 }, ptr %a23 +endif4621: + store { ptr, i64, i64 } { ptr @.str.2876, i64 0, i64 0 }, ptr %a23 %t24 = load ptr, ptr %a1 %t25 = icmp eq ptr %t24, null - br i1 %t25, label %panic4402, label %ok4403 -panic4402: - call void @finch_panic(ptr @.str.2790, i64 1916, ptr @.str.2791) + br i1 %t25, label %panic4622, label %ok4623 +panic4622: + call void @finch_panic(ptr @.str.2877, i64 2071, ptr @.str.2878) unreachable -ok4403: - %t26 = getelementptr inbounds %S.gen.Gen, ptr %t24, i32 0, i32 37 +ok4623: + %t26 = getelementptr inbounds %S.gen.Gen, ptr %t24, i32 0, i32 38 %t27 = load i64, ptr %t26 %t28 = icmp sgt i64 %t27, 0 - br i1 %t28, label %then4404, label %endif4406 -then4404: + br i1 %t28, label %then4624, label %endif4626 +then4624: %t29 = load ptr, ptr %a1 %t30 = icmp eq ptr %t29, null - br i1 %t30, label %panic4407, label %ok4408 -panic4407: - call void @finch_panic(ptr @.str.2793, i64 1917, ptr @.str.2794) + br i1 %t30, label %panic4627, label %ok4628 +panic4627: + call void @finch_panic(ptr @.str.2880, i64 2072, ptr @.str.2881) unreachable -ok4408: - %t31 = getelementptr inbounds %S.gen.Gen, ptr %t29, i32 0, i32 37 +ok4628: + %t31 = getelementptr inbounds %S.gen.Gen, ptr %t29, i32 0, i32 38 %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.2792, i64 7, i64 0 }, ptr %a36 + store { ptr, i64, i64 } { ptr @.str.2879, 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 %endif4406 -endif4406: - %t39 = load ptr, ptr %a1 - %t40 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.2795, 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.2796, 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 %panic4409, label %ok4410 -panic4409: - call void @finch_panic(ptr @.str.2797, i64 1919, ptr @.str.2798) + store { ptr, i64, i64 } %t34, ptr %a38 + call void @finch_str_drop(ptr %a38) + %t39 = load { ptr, i64, i64 }, ptr %a35 + %t40 = load { ptr, i64, i64 }, ptr %a23 + store { ptr, i64, i64 } %t39, ptr %a23 + store { ptr, i64, i64 } %t40, ptr %a41 + call void @finch_str_drop(ptr %a41) + br label %endif4626 +endif4626: + %t42 = load ptr, ptr %a1 + %t43 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } { ptr @.str.2882, i64 24, 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.2883, i64 11, i64 0 }, ptr %a50 + call void @finch_str_concat(ptr %a48, ptr %a49, ptr %a50) + store { ptr, i64, i64 } %t47, ptr %a51 + call void @finch_str_drop(ptr %a51) + %t52 = load { ptr, i64, i64 }, ptr %a48 + %t53 = load ptr, ptr %a1 + %t54 = icmp eq ptr %t53, null + br i1 %t54, label %panic4629, label %ok4630 +panic4629: + call void @finch_panic(ptr @.str.2884, i64 2074, ptr @.str.2885) unreachable -ok4410: - %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 - store { ptr, i64, i64 } %t48, 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.2799, i64 9, i64 0 }, ptr %a61 +ok4630: + %t55 = getelementptr inbounds %S.gen.Gen, ptr %t53, i32 0, i32 35 + %t56 = load i64, ptr %t55 + call void @finch_str_from_int(ptr %a57, i64 %t56) + %t58 = load { ptr, i64, i64 }, ptr %a57 + store { ptr, i64, i64 } %t52, 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 - %t63 = load ptr, ptr %a1 - %t64 = icmp eq ptr %t63, null - br i1 %t64, label %panic4411, label %ok4412 -panic4411: - call void @finch_panic(ptr @.str.2800, i64 1919, ptr @.str.2801) + store { ptr, i64, i64 } %t52, ptr %a62 + call void @finch_str_drop(ptr %a62) + store { ptr, i64, i64 } %t58, ptr %a63 + call void @finch_str_drop(ptr %a63) + %t64 = load { ptr, i64, i64 }, ptr %a59 + store { ptr, i64, i64 } %t64, ptr %a66 + store { ptr, i64, i64 } { ptr @.str.2886, i64 9, i64 0 }, ptr %a67 + call void @finch_str_concat(ptr %a65, ptr %a66, ptr %a67) + store { ptr, i64, i64 } %t64, ptr %a68 + call void @finch_str_drop(ptr %a68) + %t69 = load { ptr, i64, i64 }, ptr %a65 + %t70 = load ptr, ptr %a1 + %t71 = icmp eq ptr %t70, null + br i1 %t71, label %panic4631, label %ok4632 +panic4631: + call void @finch_panic(ptr @.str.2887, i64 2074, ptr @.str.2888) unreachable -ok4412: - %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 %range4413, label %inrange4414 -range4413: - call void @finch_panic_index(ptr @.str.2802, i64 1919, i64 %t67, i64 %t69) +ok4632: + %t72 = getelementptr inbounds %S.gen.Gen, ptr %t70, i32 0, i32 34 + %t73 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 + %t74 = load i64, ptr %t73 + %t75 = load { ptr, i64, i64 }, ptr %t72 + %t76 = extractvalue { ptr, i64, i64 } %t75, 1 + %t77 = icmp uge i64 %t74, %t76 + br i1 %t77, label %range4633, label %inrange4634 +range4633: + call void @finch_panic_index(ptr @.str.2889, i64 2074, i64 %t74, i64 %t76) unreachable -inrange4414: - %t71 = extractvalue { ptr, i64, i64 } %t68, 0 - %t72 = getelementptr inbounds i64, ptr %t71, i64 %t67 - %t73 = load i64, ptr %t72 - call void @finch_str_from_int(ptr %a74, i64 %t73) - %t75 = load { ptr, i64, i64 }, ptr %a74 - store { ptr, i64, i64 } %t62, 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.2803, 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 - %t85 = load i64, ptr %t84 - call void @finch_str_from_int(ptr %a86, i64 %t85) - %t87 = load { ptr, i64, i64 }, ptr %a86 - store { ptr, i64, i64 } %t83, 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.2804, 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 - call void @finch_str_from_int(ptr %a97, i64 %t96) - %t98 = load { ptr, i64, i64 }, ptr %a97 - store { ptr, i64, i64 } %t95, 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 - %t103 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t102, ptr %a105 - store { ptr, i64, i64 } %t103, ptr %a106 +inrange4634: + %t78 = extractvalue { ptr, i64, i64 } %t75, 0 + %t79 = getelementptr inbounds i64, ptr %t78, i64 %t74 + %t80 = load i64, ptr %t79 + call void @finch_str_from_int(ptr %a81, i64 %t80) + %t82 = load { ptr, i64, i64 }, ptr %a81 + store { ptr, i64, i64 } %t69, ptr %a84 + store { ptr, i64, i64 } %t82, ptr %a85 + call void @finch_str_concat(ptr %a83, ptr %a84, ptr %a85) + store { ptr, i64, i64 } %t69, ptr %a86 + call void @finch_str_drop(ptr %a86) + store { ptr, i64, i64 } %t82, ptr %a87 + call void @finch_str_drop(ptr %a87) + %t88 = load { ptr, i64, i64 }, ptr %a83 + store { ptr, i64, i64 } %t88, ptr %a90 + store { ptr, i64, i64 } { ptr @.str.2890, i64 8, i64 0 }, ptr %a91 + call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) + store { ptr, i64, i64 } %t88, ptr %a92 + call void @finch_str_drop(ptr %a92) + %t93 = load { ptr, i64, i64 }, ptr %a89 + %t94 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 + %t95 = load i64, ptr %t94 + call void @finch_str_from_int(ptr %a96, i64 %t95) + %t97 = load { ptr, i64, i64 }, ptr %a96 + store { ptr, i64, i64 } %t93, ptr %a99 + store { ptr, i64, i64 } %t97, ptr %a100 + call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100) + store { ptr, i64, i64 } %t93, ptr %a101 + call void @finch_str_drop(ptr %a101) + store { ptr, i64, i64 } %t97, ptr %a102 + call void @finch_str_drop(ptr %a102) + %t103 = load { ptr, i64, i64 }, ptr %a98 + store { ptr, i64, i64 } %t103, ptr %a105 + store { ptr, i64, i64 } { ptr @.str.2891, i64 9, i64 0 }, ptr %a106 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.2805, 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) - store i64 %t112, ptr %a113 - %t114 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t115 = load i64, ptr %t114 - %t116 = load ptr, ptr %a1 - %t117 = icmp eq ptr %t116, null - br i1 %t117, label %panic4415, label %ok4416 -panic4415: - call void @finch_panic(ptr @.str.2806, i64 1920, ptr @.str.2807) + store { ptr, i64, i64 } %t103, ptr %a107 + call void @finch_str_drop(ptr %a107) + %t108 = load { ptr, i64, i64 }, ptr %a104 + %t109 = load i64, ptr %a20 + call void @finch_str_from_int(ptr %a110, i64 %t109) + %t111 = load { ptr, i64, i64 }, ptr %a110 + store { ptr, i64, i64 } %t108, ptr %a113 + store { ptr, i64, i64 } %t111, ptr %a114 + call void @finch_str_concat(ptr %a112, ptr %a113, ptr %a114) + store { ptr, i64, i64 } %t108, ptr %a115 + call void @finch_str_drop(ptr %a115) + store { ptr, i64, i64 } %t111, ptr %a116 + call void @finch_str_drop(ptr %a116) + %t117 = load { ptr, i64, i64 }, ptr %a112 + %t118 = load { ptr, i64, i64 }, ptr %a23 + store { ptr, i64, i64 } %t117, ptr %a120 + store { ptr, i64, i64 } %t118, ptr %a121 + call void @finch_str_concat(ptr %a119, ptr %a120, ptr %a121) + store { ptr, i64, i64 } %t117, ptr %a122 + call void @finch_str_drop(ptr %a122) + %t123 = load { ptr, i64, i64 }, ptr %a119 + store { ptr, i64, i64 } %t123, ptr %a125 + store { ptr, i64, i64 } { ptr @.str.2892, i64 1, i64 0 }, ptr %a126 + call void @finch_str_concat(ptr %a124, ptr %a125, ptr %a126) + store { ptr, i64, i64 } %t123, ptr %a127 + call void @finch_str_drop(ptr %a127) + %t128 = load { ptr, i64, i64 }, ptr %a124 + %t129 = call i64 @finch.gen.md(ptr %t42, { ptr, i64, i64 } %t128) + store { ptr, i64, i64 } %t128, ptr %a130 + call void @finch_str_drop(ptr %a130) + store i64 %t129, ptr %a131 + %t132 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 + %t133 = load i64, ptr %t132 + %t134 = load ptr, ptr %a1 + %t135 = icmp eq ptr %t134, null + br i1 %t135, label %panic4635, label %ok4636 +panic4635: + call void @finch_panic(ptr @.str.2893, i64 2075, ptr @.str.2894) unreachable -ok4416: - %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 %panic4417, label %ok4418 -panic4417: - call void @finch_panic(ptr @.str.2808, i64 1921, ptr @.str.2809) +ok4636: + %t136 = getelementptr inbounds %S.gen.Gen, ptr %t134, i32 0, i32 36 + store i64 %t133, ptr %t136 + %t137 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 + %t138 = load i64, ptr %t137 + %t139 = load ptr, ptr %a1 + %t140 = icmp eq ptr %t139, null + br i1 %t140, label %panic4637, label %ok4638 +panic4637: + call void @finch_panic(ptr @.str.2895, i64 2076, ptr @.str.2896) unreachable -ok4418: - %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.2810, 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.2811, 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 - call void @finch_str_from_int(ptr %a135, i64 %t134) - %t136 = load { ptr, i64, i64 }, ptr %a135 - store { ptr, i64, i64 } %t133, 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.2812, 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) +ok4638: + %t141 = getelementptr inbounds %S.gen.Gen, ptr %t139, i32 0, i32 37 + store i64 %t138, ptr %t141 + %t142 = load ptr, ptr %a1 + %t143 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.2897, i64 41, i64 0 }, ptr %a145 + store { ptr, i64, i64 } %t143, ptr %a146 + 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.2898, i64 12, i64 0 }, ptr %a150 + call void @finch_str_concat(ptr %a148, ptr %a149, ptr %a150) + store { ptr, i64, i64 } %t147, ptr %a151 + call void @finch_str_drop(ptr %a151) + %t152 = load { ptr, i64, i64 }, ptr %a148 + %t153 = load i64, ptr %a131 + call void @finch_str_from_int(ptr %a154, i64 %t153) + %t155 = load { ptr, i64, i64 }, ptr %a154 + store { ptr, i64, i64 } %t152, ptr %a157 + store { ptr, i64, i64 } %t155, ptr %a158 + call void @finch_str_concat(ptr %a156, ptr %a157, ptr %a158) + store { ptr, i64, i64 } %t152, ptr %a159 + call void @finch_str_drop(ptr %a159) + store { ptr, i64, i64 } %t155, ptr %a160 + call void @finch_str_drop(ptr %a160) + %t161 = load { ptr, i64, i64 }, ptr %a156 + store { ptr, i64, i64 } %t161, ptr %a163 + store { ptr, i64, i64 } { ptr @.str.2899, i64 27, i64 0 }, ptr %a164 + call void @finch_str_concat(ptr %a162, ptr %a163, ptr %a164) + store { ptr, i64, i64 } %t161, ptr %a165 + call void @finch_str_drop(ptr %a165) + %t166 = load { ptr, i64, i64 }, ptr %a162 + call void @finch.gen.emit(ptr %t142, { ptr, i64, i64 } %t166) + store { ptr, i64, i64 } %t166, ptr %a167 + call void @finch_str_drop(ptr %a167) + call void @finch_str_drop(ptr %a23) ret void } @@ -41020,104 +47670,170 @@ entry: %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 + %a25 = alloca { ptr, i64, i64 }, align 16 %a27 = alloca { ptr, i64, i64 }, align 16 %a28 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 + %a29 = alloca { ptr, i64, i64 }, align 16 + %a30 = alloca { ptr, i64, i64 }, align 16 %a42 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = 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 %a54 = alloca { ptr, i64, i64 }, align 16 %a55 = 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 + %a59 = alloca { ptr, i64, i64 }, align 16 + %a60 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 %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.2813, i64 20, i64 0 }, ptr %t4 + store { ptr, i64, i64 } { ptr @.str.2900, i64 20, i64 0 }, ptr %t4 %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 - store { ptr, i64, i64 } { ptr @.str.2814, i64 30, i64 0 }, ptr %t5 + store { ptr, i64, i64 } { ptr @.str.2901, 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 %panic4419, label %ok4420 -panic4419: - call void @finch_panic(ptr @.str.2815, i64 1928, ptr @.str.2816) + br i1 %t11, label %panic4639, label %ok4640 +panic4639: + call void @finch_panic(ptr @.str.2902, i64 2083, ptr @.str.2903) unreachable -ok4420: - %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 31 +ok4640: + %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 32 %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.cond4421 -for.cond4421: + br label %for.cond4641 +for.cond4641: %t16 = load i64, ptr %a15 %t17 = icmp slt i64 %t16, %t14 - br i1 %t17, label %for.body4422, label %for.end4424 -for.body4422: + br i1 %t17, label %for.body4642, label %for.end4644 +for.body4642: %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.2817, i64 1, i64 0 }, ptr %a23 + store { ptr, i64, i64 } { ptr @.str.2904, 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.2818, 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 %panic4425, label %ok4426 -panic4425: - call void @finch_panic(ptr @.str.2819, i64 1929, ptr @.str.2820) + store { ptr, i64, i64 } %t21, ptr %a25 + call void @finch_str_drop(ptr %a25) + %t26 = load { ptr, i64, i64 }, ptr %a22 + store { ptr, i64, i64 } %t26, ptr %a28 + store { ptr, i64, i64 } { ptr @.str.2905, i64 3, i64 0 }, ptr %a29 + call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) + store { ptr, i64, i64 } %t26, ptr %a30 + call void @finch_str_drop(ptr %a30) + %t31 = load { ptr, i64, i64 }, ptr %a27 + %t32 = load ptr, ptr %a1 + %t33 = icmp eq ptr %t32, null + br i1 %t33, label %panic4645, label %ok4646 +panic4645: + call void @finch_panic(ptr @.str.2906, i64 2084, ptr @.str.2907) unreachable -ok4426: - %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 %range4427, label %inrange4428 -range4427: - call void @finch_panic_index(ptr @.str.2821, i64 1929, i64 %t33, i64 %t35) +ok4646: + %t34 = getelementptr inbounds %S.gen.Gen, ptr %t32, i32 0, i32 32 + %t35 = load i64, ptr %a15 + %t36 = load { ptr, i64, i64 }, ptr %t34 + %t37 = extractvalue { ptr, i64, i64 } %t36, 1 + %t38 = icmp uge i64 %t35, %t37 + br i1 %t38, label %range4647, label %inrange4648 +range4647: + call void @finch_panic_index(ptr @.str.2908, i64 2084, i64 %t35, i64 %t37) unreachable -inrange4428: - %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 } %t29, 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 - %t44 = load i64, ptr %t18 - %t45 = add i64 %t44, 1 - call void @finch_arr_reserve(ptr %a9, i64 %t45, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t46 = load ptr, ptr %a9 - %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.step4423 -for.step4423: - %t48 = load i64, ptr %a15 - %t49 = add i64 %t48, 1 - store i64 %t49, ptr %a15 - br label %for.cond4421 -for.end4424: - %t50 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2822, 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.2823, 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 +inrange4648: + %t39 = extractvalue { ptr, i64, i64 } %t36, 0 + %t40 = getelementptr inbounds { ptr, i64, i64 }, ptr %t39, i64 %t35 + %t41 = load { ptr, i64, i64 }, ptr %t40 + store { ptr, i64, i64 } %t31, ptr %a43 + store { ptr, i64, i64 } %t41, ptr %a44 + call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) + store { ptr, i64, i64 } %t31, ptr %a45 + call void @finch_str_drop(ptr %a45) + %t46 = load { ptr, i64, i64 }, ptr %a42 + %t47 = load i64, ptr %t18 + %t48 = add i64 %t47, 1 + call void @finch_arr_reserve(ptr %a9, i64 %t48, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t49 = load ptr, ptr %a9 + %t50 = getelementptr inbounds { ptr, i64, i64 }, ptr %t49, i64 %t47 + store { ptr, i64, i64 } %t46, ptr %t50 + store i64 %t48, ptr %t18 + br label %for.step4643 +for.step4643: + %t51 = load i64, ptr %a15 + %t52 = add i64 %t51, 1 + store i64 %t52, ptr %a15 + br label %for.cond4641 +for.end4644: + %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.2909, i64 1, i64 0 }, ptr %a54 + call void @finch_str_join(ptr %a55, ptr %a9, ptr %a54) + %t56 = load { ptr, i64, i64 }, ptr %a55 + store { ptr, i64, i64 } %t56, ptr %a58 + store { ptr, i64, i64 } { ptr @.str.2910, i64 1, i64 0 }, ptr %a59 + call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) + store { ptr, i64, i64 } %t56, ptr %a60 + call void @finch_str_drop(ptr %a60) + %t61 = load { ptr, i64, i64 }, ptr %a57 + call void @finch.drop.arr_str(ptr %a9) + ret { ptr, i64, i64 } %t61 +} + +define internal void @finch.copy.arr_S_gen_Var(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.gen.Var, 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.cond4720 +n.cond4720: + %t6 = load i64, ptr %a5 + %t7 = icmp slt i64 %t6, %t4 + br i1 %t7, label %n.body4721, label %n.end4722 +n.body4721: + %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.cond4720 +n.end4722: + ret void +} + +define internal void @finch.copy.arr_S_gen_Cleanup(ptr %dst, ptr %src) { +entry: + + call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (%S.gen.Cleanup, ptr null, i32 1) to i64)) + ret void +} + +define internal void @finch.copy.S_gen_Scope(ptr %dst, ptr %src) { +entry: + + %t1 = load %S.gen.Scope, ptr %src + store %S.gen.Scope %t1, ptr %dst + %t2 = getelementptr inbounds %S.gen.Scope, ptr %dst, i32 0, i32 0 + %t3 = getelementptr inbounds %S.gen.Scope, ptr %src, i32 0, i32 0 + call void @finch.copy.arr_S_gen_Var(ptr %t2, ptr %t3) + %t4 = getelementptr inbounds %S.gen.Scope, ptr %dst, i32 0, i32 1 + %t5 = getelementptr inbounds %S.gen.Scope, ptr %src, i32 0, i32 1 + call void @finch.copy.arr_S_ast_Node(ptr %t4, ptr %t5) + %t6 = getelementptr inbounds %S.gen.Scope, ptr %dst, i32 0, i32 2 + %t7 = getelementptr inbounds %S.gen.Scope, ptr %src, i32 0, i32 2 + call void @finch.copy.arr_int(ptr %t6, ptr %t7) + %t8 = getelementptr inbounds %S.gen.Scope, ptr %dst, i32 0, i32 3 + %t9 = getelementptr inbounds %S.gen.Scope, ptr %src, i32 0, i32 3 + call void @finch.copy.arr_S_gen_Cleanup(ptr %t8, ptr %t9) + ret void } define internal void @finch.copy.arr_S_gen_Scope(ptr %dst, ptr %src) { @@ -41129,20 +47845,44 @@ 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.cond4497 -n.cond4497: + br label %n.cond4717 +n.cond4717: %t6 = load i64, ptr %a5 %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body4498, label %n.end4499 -n.body4498: + br i1 %t7, label %n.body4718, label %n.end4719 +n.body4718: %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.cond4497 -n.end4499: + br label %n.cond4717 +n.end4719: + ret void +} + +define internal void @finch.drop.arr_S_gen_Scope(ptr %a) { +entry: + %a4 = alloca i64, align 16 + %t1 = load ptr, ptr %a + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 + %t3 = load i64, ptr %t2 + store i64 0, ptr %a4 + br label %n.cond4723 +n.cond4723: + %t5 = load i64, ptr %a4 + %t6 = icmp slt i64 %t5, %t3 + br i1 %t6, label %n.body4724, label %n.end4725 +n.body4724: + %t7 = getelementptr inbounds %S.gen.Scope, ptr %t1, i64 %t5 + call void @finch.drop.S_gen_Scope(ptr %t7) + %t8 = load i64, ptr %a4 + %t9 = add i64 %t8, 1 + store i64 %t9, ptr %a4 + br label %n.cond4723 +n.end4725: + call void @finch_arr_free(ptr %a) ret void } @@ -41152,1067 +47892,1245 @@ entry: %a2 = alloca i64, align 16 %a16 = alloca %S.gen.FnSig, align 16 %a17 = alloca %S.gen.FnSig, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = 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 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca %S.ast.Node, align 16 - %a104 = alloca %S.ast.Node, align 16 - %a106 = alloca %S.ast.Node, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 + %a20 = alloca %S.gen.FnSig, align 16 + %a29 = alloca { ptr, i64, i64 }, align 16 + %a30 = alloca { ptr, i64, i64 }, align 16 + %a33 = alloca { ptr, i64, i64 }, align 16 + %a42 = alloca { ptr, i64, i64 }, align 16 + %a43 = alloca { ptr, i64, i64 }, align 16 + %a46 = alloca { ptr, i64, i64 }, align 16 + %a55 = alloca { ptr, i64, i64 }, align 16 + %a56 = alloca { ptr, i64, i64 }, align 16 + %a59 = alloca { ptr, i64, i64 }, align 16 + %a64 = 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 + %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 + %a90 = alloca { ptr, i64, i64 }, align 16 + %a116 = alloca %S.ast.Node, align 16 + %a117 = alloca %S.ast.Node, align 16 + %a119 = alloca %S.ast.Node, align 16 %a120 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca i64, align 16 - %a162 = 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 + %a125 = alloca { ptr, i64, i64 }, align 16 + %a126 = alloca { ptr, i64, i64 }, align 16 + %a129 = alloca { ptr, i64, i64 }, align 16 + %a134 = alloca { ptr, i64, i64 }, align 16 + %a135 = alloca { ptr, i64, i64 }, align 16 + %a138 = alloca { ptr, i64, i64 }, align 16 + %a151 = alloca i64, align 16 + %a179 = alloca { ptr, i64, i64 }, align 16 %a184 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 + %a185 = alloca { ptr, i64, i64 }, align 16 + %a188 = alloca { ptr, i64, i64 }, align 16 + %a190 = alloca { ptr, i64, i64 }, align 16 + %a203 = alloca { ptr, i64, i64 }, align 16 %a210 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca %S.ast.Type, align 16 - %a226 = alloca %S.ast.Type, align 16 - %a227 = alloca %S.ast.Type, align 16 - %a249 = alloca i64, align 16 - %a263 = alloca %S.ast.Type, align 16 - %a264 = alloca %S.ast.Type, align 16 - %a266 = alloca %S.ast.Type, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a276 = 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 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 + %a212 = alloca { ptr, i64, i64 }, align 16 + %a213 = alloca { ptr, i64, i64 }, align 16 + %a221 = alloca { ptr, i64, i64 }, align 16 + %a222 = alloca { ptr, i64, i64 }, align 16 + %a230 = alloca { ptr, i64, i64 }, align 16 + %a231 = alloca { ptr, i64, i64 }, align 16 + %a234 = alloca %S.ast.Type, align 16 + %a247 = alloca %S.ast.Type, align 16 + %a248 = alloca %S.ast.Type, align 16 + %a270 = alloca i64, align 16 + %a284 = alloca %S.ast.Type, align 16 + %a285 = alloca %S.ast.Type, align 16 + %a287 = alloca %S.ast.Type, align 16 + %a292 = alloca { ptr, i64, i64 }, align 16 %a293 = 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 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca { ptr, i64, i64 }, align 16 - %a394 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a396 = 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 - %a421 = alloca { ptr, i64, i64 }, align 16 - %a422 = alloca { ptr, i64, i64 }, align 16 - %a423 = alloca { ptr, i64, i64 }, align 16 - %a425 = alloca { ptr, i64, i64 }, align 16 + %a294 = alloca { ptr, i64, i64 }, align 16 + %a295 = alloca { ptr, i64, i64 }, align 16 + %a298 = 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 + %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 + %a316 = alloca { ptr, i64, i64 }, align 16 + %a318 = alloca { ptr, i64, i64 }, align 16 + %a340 = alloca { ptr, i64, i64 }, align 16 + %a397 = alloca { ptr, i64, i64 }, align 16 %a426 = alloca { ptr, i64, i64 }, align 16 %a427 = alloca { ptr, i64, i64 }, align 16 - %a430 = alloca { ptr, i64, i64 }, align 16 %a434 = alloca { ptr, i64, i64 }, align 16 + %a435 = 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 + %a439 = alloca { ptr, i64, i64 }, align 16 + %a440 = alloca { ptr, i64, i64 }, align 16 + %a441 = alloca { ptr, i64, i64 }, align 16 + %a449 = 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 %a453 = 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 - %a459 = alloca { ptr, i64, i64 }, align 16 - %a466 = alloca { ptr, i64, i64 }, align 16 - %a467 = alloca { ptr, i64, i64 }, align 16 - %a468 = 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 %a472 = alloca { ptr, i64, i64 }, align 16 + %a474 = alloca { ptr, i64, i64 }, align 16 %a475 = alloca { ptr, i64, i64 }, align 16 %a476 = alloca { ptr, i64, i64 }, align 16 - %a478 = alloca { ptr, i64, i64 }, align 16 + %a477 = alloca { ptr, i64, i64 }, align 16 %a479 = alloca { ptr, i64, i64 }, align 16 - %a480 = 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 + %a481 = alloca { ptr, i64, i64 }, align 16 + %a485 = alloca { ptr, i64, 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 + %a490 = alloca { ptr, i64, i64 }, align 16 %a493 = alloca { ptr, i64, i64 }, align 16 - %a499 = alloca { ptr, i64, i64 }, align 16 - %a500 = alloca { ptr, i64, i64 }, align 16 - %a502 = alloca { ptr, i64, i64 }, align 16 - %a503 = alloca { ptr, i64, i64 }, align 16 - %a504 = 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 + %a509 = alloca { ptr, i64, i64 }, align 16 + %a510 = alloca { ptr, i64, i64 }, align 16 + %a512 = alloca { ptr, i64, 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 - %a521 = 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 + %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 + %a530 = alloca { ptr, i64, i64 }, align 16 + %a533 = alloca { ptr, i64, i64 }, align 16 + %a534 = 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 + %a539 = alloca { ptr, i64, i64 }, align 16 + %a540 = alloca { ptr, i64, i64 }, align 16 + %a542 = 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 + %a548 = alloca { ptr, i64, i64 }, align 16 + %a549 = alloca { ptr, i64, i64 }, align 16 + %a550 = alloca { ptr, i64, i64 }, align 16 + %a551 = 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 + %a556 = alloca { ptr, i64, i64 }, align 16 + %a562 = alloca { ptr, i64, i64 }, align 16 + %a563 = alloca { ptr, i64, i64 }, align 16 + %a565 = alloca { ptr, i64, i64 }, align 16 + %a566 = alloca { ptr, i64, i64 }, align 16 + %a567 = alloca { ptr, i64, i64 }, align 16 + %a568 = alloca { ptr, i64, i64 }, align 16 + %a569 = alloca { ptr, i64, i64 }, align 16 + %a571 = 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 + %a580 = alloca { ptr, i64, i64 }, align 16 + %a581 = alloca { ptr, i64, i64 }, align 16 + %a583 = alloca { ptr, i64, i64 }, align 16 + %a584 = alloca { ptr, i64, i64 }, align 16 + %a585 = alloca { ptr, i64, i64 }, align 16 + %a586 = alloca { ptr, i64, i64 }, align 16 + %a587 = alloca { ptr, i64, i64 }, align 16 + %a589 = alloca { ptr, i64, i64 }, align 16 + %a590 = alloca { ptr, i64, i64 }, align 16 + %a591 = alloca { ptr, i64, i64 }, align 16 + %a592 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store i64 %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic4429, label %ok4430 -panic4429: - call void @finch_panic(ptr @.str.2824, i64 1935, ptr @.str.2825) + br i1 %t4, label %panic4649, label %ok4650 +panic4649: + call void @finch_panic(ptr @.str.2911, i64 2090, ptr @.str.2912) unreachable -ok4430: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 14 +ok4650: + %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 %range4431, label %inrange4432 -range4431: - call void @finch_panic_index(ptr @.str.2826, i64 1935, i64 %t6, i64 %t8) + br i1 %t9, label %range4651, label %inrange4652 +range4651: + call void @finch_panic_index(ptr @.str.2913, i64 2090, i64 %t6, i64 %t8) unreachable -inrange4432: +inrange4652: %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 %panic4433, label %ok4434 -panic4433: - call void @finch_panic(ptr @.str.2827, i64 1935, ptr @.str.2828) + br i1 %t14, label %panic4653, label %ok4654 +panic4653: + call void @finch_panic(ptr @.str.2914, i64 2090, ptr @.str.2915) unreachable -ok4434: - %t15 = getelementptr inbounds %S.gen.Gen, ptr %t13, i32 0, i32 12 +ok4654: + %t15 = getelementptr inbounds %S.gen.Gen, ptr %t13, i32 0, i32 13 store %S.gen.FnSig %t12, ptr %a16 call void @finch.copy.S_gen_FnSig(ptr %a17, ptr %a16) %t18 = load %S.gen.FnSig, ptr %a17 + %t19 = load %S.gen.FnSig, ptr %t15 store %S.gen.FnSig %t18, ptr %t15 - %t19 = load ptr, ptr %a1 - %t20 = icmp eq ptr %t19, null - br i1 %t20, label %panic4435, label %ok4436 -panic4435: - call void @finch_panic(ptr @.str.2829, i64 1936, ptr @.str.2830) + store %S.gen.FnSig %t19, ptr %a20 + call void @finch.drop.S_gen_FnSig(ptr %a20) + %t21 = load ptr, ptr %a1 + %t22 = icmp eq ptr %t21, null + br i1 %t22, label %panic4655, label %ok4656 +panic4655: + call void @finch_panic(ptr @.str.2916, i64 2091, ptr @.str.2917) unreachable -ok4436: - %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 %panic4437, label %ok4438 -panic4437: - call void @finch_panic(ptr @.str.2831, i64 1936, ptr @.str.2832) +ok4656: + %t23 = getelementptr inbounds %S.gen.Gen, ptr %t21, i32 0, i32 13 + %t24 = getelementptr inbounds %S.gen.FnSig, ptr %t23, i32 0, i32 0 + %t25 = load { ptr, i64, i64 }, ptr %t24 + %t26 = load ptr, ptr %a1 + %t27 = icmp eq ptr %t26, null + br i1 %t27, label %panic4657, label %ok4658 +panic4657: + call void @finch_panic(ptr @.str.2918, i64 2091, ptr @.str.2919) unreachable -ok4438: - %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) - %t29 = load { ptr, i64, i64 }, ptr %a28 - store { ptr, i64, i64 } %t29, ptr %t26 - %t30 = load ptr, ptr %a1 - %t31 = icmp eq ptr %t30, null - br i1 %t31, label %panic4439, label %ok4440 -panic4439: - call void @finch_panic(ptr @.str.2833, i64 1937, ptr @.str.2834) +ok4658: + %t28 = getelementptr inbounds %S.gen.Gen, ptr %t26, i32 0, i32 14 + store { ptr, i64, i64 } %t25, ptr %a29 + call void @finch_str_copy(ptr %a30, ptr %a29) + %t31 = load { ptr, i64, i64 }, ptr %a30 + %t32 = load { ptr, i64, i64 }, ptr %t28 + store { ptr, i64, i64 } %t31, ptr %t28 + store { ptr, i64, i64 } %t32, ptr %a33 + call void @finch_str_drop(ptr %a33) + %t34 = load ptr, ptr %a1 + %t35 = icmp eq ptr %t34, null + br i1 %t35, label %panic4659, label %ok4660 +panic4659: + call void @finch_panic(ptr @.str.2920, i64 2092, ptr @.str.2921) unreachable -ok4440: - %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 %panic4441, label %ok4442 -panic4441: - call void @finch_panic(ptr @.str.2835, i64 1937, ptr @.str.2836) +ok4660: + %t36 = getelementptr inbounds %S.gen.Gen, ptr %t34, i32 0, i32 13 + %t37 = getelementptr inbounds %S.gen.FnSig, ptr %t36, i32 0, i32 6 + %t38 = load { ptr, i64, i64 }, ptr %t37 + %t39 = load ptr, ptr %a1 + %t40 = icmp eq ptr %t39, null + br i1 %t40, label %panic4661, label %ok4662 +panic4661: + call void @finch_panic(ptr @.str.2922, i64 2092, ptr @.str.2923) unreachable -ok4442: - %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) - %t40 = load { ptr, i64, i64 }, ptr %a39 - store { ptr, i64, i64 } %t40, ptr %t37 - %t41 = load ptr, ptr %a1 - %t42 = icmp eq ptr %t41, null - br i1 %t42, label %panic4443, label %ok4444 -panic4443: - call void @finch_panic(ptr @.str.2837, i64 1938, ptr @.str.2838) +ok4662: + %t41 = getelementptr inbounds %S.gen.Gen, ptr %t39, i32 0, i32 18 + store { ptr, i64, i64 } %t38, ptr %a42 + call void @finch.copy.arr_str(ptr %a43, ptr %a42) + %t44 = load { ptr, i64, i64 }, ptr %a43 + %t45 = load { ptr, i64, i64 }, ptr %t41 + store { ptr, i64, i64 } %t44, ptr %t41 + store { ptr, i64, i64 } %t45, ptr %a46 + call void @finch.drop.arr_str(ptr %a46) + %t47 = load ptr, ptr %a1 + %t48 = icmp eq ptr %t47, null + br i1 %t48, label %panic4663, label %ok4664 +panic4663: + call void @finch_panic(ptr @.str.2924, i64 2093, ptr @.str.2925) unreachable -ok4444: - %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 %panic4445, label %ok4446 -panic4445: - call void @finch_panic(ptr @.str.2839, i64 1938, ptr @.str.2840) - unreachable -ok4446: - %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) - %t51 = load { ptr, i64, i64 }, ptr %a50 - store { ptr, i64, i64 } %t51, ptr %t48 +ok4664: + %t49 = getelementptr inbounds %S.gen.Gen, ptr %t47, i32 0, i32 13 + %t50 = getelementptr inbounds %S.gen.FnSig, ptr %t49, i32 0, i32 7 + %t51 = load { ptr, i64, i64 }, ptr %t50 %t52 = load ptr, ptr %a1 %t53 = icmp eq ptr %t52, null - br i1 %t53, label %panic4447, label %ok4448 -panic4447: - call void @finch_panic(ptr @.str.2842, i64 1939, ptr @.str.2843) + br i1 %t53, label %panic4665, label %ok4666 +panic4665: + call void @finch_panic(ptr @.str.2926, i64 2093, ptr @.str.2927) unreachable -ok4448: +ok4666: %t54 = getelementptr inbounds %S.gen.Gen, ptr %t52, i32 0, i32 19 - store { ptr, i64, i64 } { ptr @.str.2841, i64 0, i64 0 }, ptr %t54 - %t55 = load ptr, ptr %a1 - %t56 = icmp eq ptr %t55, null - br i1 %t56, label %panic4449, label %ok4450 -panic4449: - call void @finch_panic(ptr @.str.2844, i64 1940, ptr @.str.2845) + store { ptr, i64, i64 } %t51, ptr %a55 + call void @finch.copy.arr_S_ast_Type(ptr %a56, ptr %a55) + %t57 = load { ptr, i64, i64 }, ptr %a56 + %t58 = load { ptr, i64, i64 }, ptr %t54 + store { ptr, i64, i64 } %t57, ptr %t54 + store { ptr, i64, i64 } %t58, ptr %a59 + call void @finch.drop.arr_S_ast_Type(ptr %a59) + %t60 = load ptr, ptr %a1 + %t61 = icmp eq ptr %t60, null + br i1 %t61, label %panic4667, label %ok4668 +panic4667: + call void @finch_panic(ptr @.str.2929, i64 2094, ptr @.str.2930) unreachable -ok4450: - %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 %then4451, label %endif4453 -then4451: - %t62 = load ptr, ptr %a1 - %t63 = icmp eq ptr %t62, null - br i1 %t63, label %panic4454, label %ok4455 -panic4454: - call void @finch_panic(ptr @.str.2847, i64 1941, ptr @.str.2848) +ok4668: + %t62 = getelementptr inbounds %S.gen.Gen, ptr %t60, i32 0, i32 20 + %t63 = load { ptr, i64, i64 }, ptr %t62 + store { ptr, i64, i64 } { ptr @.str.2928, i64 0, i64 0 }, ptr %t62 + store { ptr, i64, i64 } %t63, ptr %a64 + call void @finch_str_drop(ptr %a64) + %t65 = load ptr, ptr %a1 + %t66 = icmp eq ptr %t65, null + br i1 %t66, label %panic4669, label %ok4670 +panic4669: + call void @finch_panic(ptr @.str.2931, i64 2095, ptr @.str.2932) unreachable -ok4455: - %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.2846, 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.2849, 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 %panic4456, label %ok4457 -panic4456: - call void @finch_panic(ptr @.str.2850, i64 1941, ptr @.str.2851) +ok4670: + %t67 = getelementptr inbounds %S.gen.Gen, ptr %t65, i32 0, i32 13 + %t68 = getelementptr inbounds %S.gen.FnSig, ptr %t67, i32 0, i32 7 + %t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %t68, i32 0, i32 1 + %t70 = load i64, ptr %t69 + %t71 = icmp sgt i64 %t70, 0 + br i1 %t71, label %then4671, label %endif4673 +then4671: + %t72 = load ptr, ptr %a1 + %t73 = icmp eq ptr %t72, null + br i1 %t73, label %panic4674, label %ok4675 +panic4674: + call void @finch_panic(ptr @.str.2934, i64 2096, ptr @.str.2935) unreachable -ok4457: - %t77 = getelementptr inbounds %S.gen.Gen, ptr %t75, i32 0, i32 19 - store { ptr, i64, i64 } %t74, ptr %t77 - br label %endif4453 -endif4453: - %t78 = load ptr, ptr %a1 - %t79 = icmp eq ptr %t78, null - br i1 %t79, label %panic4458, label %ok4459 -panic4458: - call void @finch_panic(ptr @.str.2852, i64 1943, ptr @.str.2853) +ok4675: + %t74 = getelementptr inbounds %S.gen.Gen, ptr %t72, i32 0, i32 13 + %t75 = getelementptr inbounds %S.gen.FnSig, ptr %t74, i32 0, i32 8 + %t76 = load { ptr, i64, i64 }, ptr %t75 + store { ptr, i64, i64 } { ptr @.str.2933, i64 17, 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.2936, i64 1, i64 0 }, ptr %a83 + call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) + store { ptr, i64, i64 } %t80, ptr %a84 + call void @finch_str_drop(ptr %a84) + %t85 = load { ptr, i64, i64 }, ptr %a81 + %t86 = load ptr, ptr %a1 + %t87 = icmp eq ptr %t86, null + br i1 %t87, label %panic4676, label %ok4677 +panic4676: + call void @finch_panic(ptr @.str.2937, i64 2096, ptr @.str.2938) unreachable -ok4459: - %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 %panic4460, label %ok4461 -panic4460: - call void @finch_panic(ptr @.str.2854, i64 1943, ptr @.str.2855) +ok4677: + %t88 = getelementptr inbounds %S.gen.Gen, ptr %t86, i32 0, i32 20 + %t89 = load { ptr, i64, i64 }, ptr %t88 + store { ptr, i64, i64 } %t85, ptr %t88 + store { ptr, i64, i64 } %t89, ptr %a90 + call void @finch_str_drop(ptr %a90) + br label %endif4673 +endif4673: + %t91 = load ptr, ptr %a1 + %t92 = icmp eq ptr %t91, null + br i1 %t92, label %panic4678, label %ok4679 +panic4678: + call void @finch_panic(ptr @.str.2939, i64 2098, ptr @.str.2940) unreachable -ok4461: - %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 %range4462, label %inrange4463 -range4462: - call void @finch_panic_index(ptr @.str.2856, i64 1943, i64 %t85, i64 %t87) +ok4679: + %t93 = getelementptr inbounds %S.gen.Gen, ptr %t91, i32 0, i32 0 + %t94 = load ptr, ptr %a1 + %t95 = icmp eq ptr %t94, null + br i1 %t95, label %panic4680, label %ok4681 +panic4680: + call void @finch_panic(ptr @.str.2941, i64 2098, ptr @.str.2942) unreachable -inrange4463: - %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 %panic4464, label %ok4465 -panic4464: - call void @finch_panic(ptr @.str.2857, i64 1943, ptr @.str.2858) +ok4681: + %t96 = getelementptr inbounds %S.gen.Gen, ptr %t94, i32 0, i32 13 + %t97 = getelementptr inbounds %S.gen.FnSig, ptr %t96, i32 0, i32 16 + %t98 = load i64, ptr %t97 + %t99 = load { ptr, i64, i64 }, ptr %t93 + %t100 = extractvalue { ptr, i64, i64 } %t99, 1 + %t101 = icmp uge i64 %t98, %t100 + br i1 %t101, label %range4682, label %inrange4683 +range4682: + call void @finch_panic_index(ptr @.str.2943, i64 2098, i64 %t98, i64 %t100) unreachable -ok4465: - %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 %range4466, label %inrange4467 -range4466: - call void @finch_panic_index(ptr @.str.2859, i64 1943, i64 %t96, i64 %t98) +inrange4683: + %t102 = extractvalue { ptr, i64, i64 } %t99, 0 + %t103 = getelementptr inbounds %S.ast.Program, ptr %t102, i64 %t98 + %t104 = getelementptr inbounds %S.ast.Program, ptr %t103, i32 0, i32 8 + %t105 = load ptr, ptr %a1 + %t106 = icmp eq ptr %t105, null + br i1 %t106, label %panic4684, label %ok4685 +panic4684: + call void @finch_panic(ptr @.str.2944, i64 2098, ptr @.str.2945) unreachable -inrange4467: - %t100 = extractvalue { ptr, i64, i64 } %t97, 0 - %t101 = getelementptr inbounds %S.ast.Node, ptr %t100, i64 %t96 - %t102 = load %S.ast.Node, ptr %t101 - store %S.ast.Node %t102, ptr %a103 - call void @finch.copy.S_ast_Node(ptr %a104, ptr %a103) - %t105 = load %S.ast.Node, ptr %a104 - store %S.ast.Node %t105, ptr %a106 - store { ptr, i64, i64 } zeroinitializer, ptr %a107 - %t108 = load { ptr, i64, i64 }, ptr %a107 - %t109 = load ptr, ptr %a1 - %t110 = icmp eq ptr %t109, null - br i1 %t110, label %panic4468, label %ok4469 -panic4468: - call void @finch_panic(ptr @.str.2860, i64 1945, ptr @.str.2861) +ok4685: + %t107 = getelementptr inbounds %S.gen.Gen, ptr %t105, i32 0, i32 13 + %t108 = getelementptr inbounds %S.gen.FnSig, ptr %t107, i32 0, i32 17 + %t109 = load i64, ptr %t108 + %t110 = load { ptr, i64, i64 }, ptr %t104 + %t111 = extractvalue { ptr, i64, i64 } %t110, 1 + %t112 = icmp uge i64 %t109, %t111 + br i1 %t112, label %range4686, label %inrange4687 +range4686: + call void @finch_panic_index(ptr @.str.2946, i64 2098, i64 %t109, i64 %t111) unreachable -ok4469: - %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) - %t114 = load { ptr, i64, i64 }, ptr %a113 - store { ptr, i64, i64 } %t114, ptr %t111 - %t115 = load { ptr, i64, i64 }, ptr %a107 - %t116 = load ptr, ptr %a1 - %t117 = icmp eq ptr %t116, null - br i1 %t117, label %panic4470, label %ok4471 -panic4470: - call void @finch_panic(ptr @.str.2862, i64 1946, ptr @.str.2863) - unreachable -ok4471: - %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) +inrange4687: + %t113 = extractvalue { ptr, i64, i64 } %t110, 0 + %t114 = getelementptr inbounds %S.ast.Node, ptr %t113, i64 %t109 + %t115 = load %S.ast.Node, ptr %t114 + store %S.ast.Node %t115, ptr %a116 + call void @finch.copy.S_ast_Node(ptr %a117, ptr %a116) + %t118 = load %S.ast.Node, ptr %a117 + store %S.ast.Node %t118, ptr %a119 + store { ptr, i64, i64 } zeroinitializer, ptr %a120 %t121 = load { ptr, i64, i64 }, ptr %a120 - store { ptr, i64, i64 } %t121, ptr %t118 %t122 = load ptr, ptr %a1 %t123 = icmp eq ptr %t122, null - br i1 %t123, label %panic4472, label %ok4473 -panic4472: - call void @finch_panic(ptr @.str.2864, i64 1947, ptr @.str.2865) + br i1 %t123, label %panic4688, label %ok4689 +panic4688: + call void @finch_panic(ptr @.str.2947, i64 2100, ptr @.str.2948) unreachable -ok4473: - %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 %panic4474, label %ok4475 -panic4474: - call void @finch_panic(ptr @.str.2866, i64 1948, ptr @.str.2867) - unreachable -ok4475: - %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 %panic4476, label %ok4477 -panic4476: - call void @finch_panic(ptr @.str.2868, i64 1949, ptr @.str.2869) - unreachable -ok4477: - %t130 = getelementptr inbounds %S.gen.Gen, ptr %t128, i32 0, i32 23 - store i64 0, ptr %t130 +ok4689: + %t124 = getelementptr inbounds %S.gen.Gen, ptr %t122, i32 0, i32 4 + store { ptr, i64, i64 } %t121, ptr %a125 + call void @finch.copy.arr_str(ptr %a126, ptr %a125) + %t127 = load { ptr, i64, i64 }, ptr %a126 + %t128 = load { ptr, i64, i64 }, ptr %t124 + store { ptr, i64, i64 } %t127, ptr %t124 + store { ptr, i64, i64 } %t128, ptr %a129 + call void @finch.drop.arr_str(ptr %a129) + %t130 = load { ptr, i64, i64 }, ptr %a120 %t131 = load ptr, ptr %a1 %t132 = icmp eq ptr %t131, null - br i1 %t132, label %panic4478, label %ok4479 -panic4478: - call void @finch_panic(ptr @.str.2870, i64 1950, ptr @.str.2871) + br i1 %t132, label %panic4690, label %ok4691 +panic4690: + call void @finch_panic(ptr @.str.2949, i64 2101, ptr @.str.2950) unreachable -ok4479: - %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 %panic4480, label %ok4481 -panic4480: - call void @finch_panic(ptr @.str.2872, i64 1952, ptr @.str.2873) - unreachable -ok4481: - %t137 = getelementptr inbounds %S.gen.Gen, ptr %t135, i32 0, i32 28 - %t138 = load i1, ptr %t137 - br i1 %t138, label %then4482, label %endif4484 -then4482: +ok4691: + %t133 = getelementptr inbounds %S.gen.Gen, ptr %t131, i32 0, i32 5 + store { ptr, i64, i64 } %t130, ptr %a134 + call void @finch.copy.arr_str(ptr %a135, ptr %a134) + %t136 = load { ptr, i64, i64 }, ptr %a135 + %t137 = load { ptr, i64, i64 }, ptr %t133 + store { ptr, i64, i64 } %t136, ptr %t133 + store { ptr, i64, i64 } %t137, ptr %a138 + call void @finch.drop.arr_str(ptr %a138) %t139 = load ptr, ptr %a1 - %t140 = load %S.ast.Node, ptr %a106 - %t141 = call i64 @finch.gen.dbgSubprogram(ptr %t139, %S.ast.Node %t140) - store i64 %t141, ptr %a134 - %t142 = load i64, ptr %a134 - %t143 = load ptr, ptr %a1 - %t144 = icmp eq ptr %t143, null - br i1 %t144, label %panic4485, label %ok4486 -panic4485: - call void @finch_panic(ptr @.str.2874, i64 1954, ptr @.str.2875) + %t140 = icmp eq ptr %t139, null + br i1 %t140, label %panic4692, label %ok4693 +panic4692: + call void @finch_panic(ptr @.str.2951, i64 2102, ptr @.str.2952) unreachable -ok4486: - %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 +ok4693: + %t141 = getelementptr inbounds %S.gen.Gen, ptr %t139, i32 0, i32 6 + store i64 0, ptr %t141 + %t142 = load ptr, ptr %a1 + %t143 = icmp eq ptr %t142, null + br i1 %t143, label %panic4694, label %ok4695 +panic4694: + call void @finch_panic(ptr @.str.2953, i64 2103, ptr @.str.2954) + unreachable +ok4695: + %t144 = getelementptr inbounds %S.gen.Gen, ptr %t142, i32 0, i32 9 + store i1 false, ptr %t144 + %t145 = load ptr, ptr %a1 + %t146 = icmp eq ptr %t145, null + br i1 %t146, label %panic4696, label %ok4697 +panic4696: + call void @finch_panic(ptr @.str.2955, i64 2104, ptr @.str.2956) + unreachable +ok4697: + %t147 = getelementptr inbounds %S.gen.Gen, ptr %t145, i32 0, i32 24 + store i64 0, ptr %t147 %t148 = load ptr, ptr %a1 %t149 = icmp eq ptr %t148, null - br i1 %t149, label %panic4487, label %ok4488 -panic4487: - call void @finch_panic(ptr @.str.2876, i64 1955, ptr @.str.2877) + br i1 %t149, label %panic4698, label %ok4699 +panic4698: + call void @finch_panic(ptr @.str.2957, i64 2105, ptr @.str.2958) unreachable -ok4488: +ok4699: %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 %panic4489, label %ok4490 -panic4489: - call void @finch_panic(ptr @.str.2878, i64 1956, ptr @.str.2879) + store i64 -1, ptr %t150 + store i64 -1, ptr %a151 + %t152 = load ptr, ptr %a1 + %t153 = icmp eq ptr %t152, null + br i1 %t153, label %panic4700, label %ok4701 +panic4700: + call void @finch_panic(ptr @.str.2959, i64 2107, ptr @.str.2960) unreachable -ok4490: - %t155 = getelementptr inbounds %S.gen.Gen, ptr %t153, i32 0, i32 36 - store i64 %t152, ptr %t155 - br label %endif4484 -endif4484: +ok4701: + %t154 = getelementptr inbounds %S.gen.Gen, ptr %t152, i32 0, i32 29 + %t155 = load i1, ptr %t154 + br i1 %t155, label %then4702, label %endif4704 +then4702: %t156 = load ptr, ptr %a1 - %t157 = icmp eq ptr %t156, null - br i1 %t157, label %panic4491, label %ok4492 -panic4491: - call void @finch_panic(ptr @.str.2880, i64 1958, ptr @.str.2881) + %t157 = load %S.ast.Node, ptr %a119 + %t158 = call i64 @finch.gen.dbgSubprogram(ptr %t156, %S.ast.Node %t157) + store i64 %t158, ptr %a151 + %t159 = load i64, ptr %a151 + %t160 = load ptr, ptr %a1 + %t161 = icmp eq ptr %t160, null + br i1 %t161, label %panic4705, label %ok4706 +panic4705: + call void @finch_panic(ptr @.str.2961, i64 2109, ptr @.str.2962) unreachable -ok4492: - %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 %panic4493, label %ok4494 -panic4493: - call void @finch_panic(ptr @.str.2882, i64 1959, ptr @.str.2883) +ok4706: + %t162 = getelementptr inbounds %S.gen.Gen, ptr %t160, i32 0, i32 35 + store i64 %t159, ptr %t162 + %t163 = getelementptr inbounds %S.ast.Node, ptr %a119, i32 0, i32 11 + %t164 = load i64, ptr %t163 + %t165 = load ptr, ptr %a1 + %t166 = icmp eq ptr %t165, null + br i1 %t166, label %panic4707, label %ok4708 +panic4707: + call void @finch_panic(ptr @.str.2963, i64 2110, ptr @.str.2964) unreachable -ok4494: - %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 %panic4495, label %ok4496 -panic4495: - call void @finch_panic(ptr @.str.2884, i64 1961, ptr @.str.2885) - unreachable -ok4496: - %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) - %t169 = load { ptr, i64, i64 }, ptr %a168 - store { ptr, i64, i64 } %t169, ptr %t166 +ok4708: + %t167 = getelementptr inbounds %S.gen.Gen, ptr %t165, i32 0, i32 36 + store i64 %t164, ptr %t167 + %t168 = getelementptr inbounds %S.ast.Node, ptr %a119, i32 0, i32 12 + %t169 = load i64, ptr %t168 %t170 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t170) - store { ptr, i64, i64 } zeroinitializer, ptr %a171 - %t172 = load ptr, ptr %a1 - %t173 = icmp eq ptr %t172, null - br i1 %t173, label %panic4500, label %ok4501 -panic4500: - call void @finch_panic(ptr @.str.2886, i64 1964, ptr @.str.2887) + %t171 = icmp eq ptr %t170, null + br i1 %t171, label %panic4709, label %ok4710 +panic4709: + call void @finch_panic(ptr @.str.2965, i64 2111, ptr @.str.2966) unreachable -ok4501: - %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 %then4502, label %endif4504 -then4502: - %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.2888, i64 9, i64 0 }, ptr %t183 - store i64 %t181, ptr %t179 - store { ptr, i64, i64 } { ptr @.str.2889, i64 6, i64 0 }, ptr %a184 - %t185 = load ptr, ptr %a1 - %t186 = icmp eq ptr %t185, null - br i1 %t186, label %panic4505, label %ok4506 -panic4505: - call void @finch_panic(ptr @.str.2890, i64 1968, ptr @.str.2891) +ok4710: + %t172 = getelementptr inbounds %S.gen.Gen, ptr %t170, i32 0, i32 37 + store i64 %t169, ptr %t172 + br label %endif4704 +endif4704: + %t173 = load ptr, ptr %a1 + %t174 = icmp eq ptr %t173, null + br i1 %t174, label %panic4711, label %ok4712 +panic4711: + call void @finch_panic(ptr @.str.2967, i64 2113, ptr @.str.2968) unreachable -ok4506: - %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 %then4507, label %endif4509 -then4507: - store { ptr, i64, i64 } { ptr @.str.2892, i64 4, i64 0 }, ptr %a184 - br label %endif4509 -endif4509: - %t190 = load { ptr, i64, i64 }, ptr %a184 - store { ptr, i64, i64 } %t190, ptr %a191 - call void @finch_str_copy(ptr %a192, ptr %a191) - %t193 = load { ptr, i64, i64 }, ptr %a192 - %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 %panic4510, label %ok4511 -panic4510: - call void @finch_panic(ptr @.str.2893, i64 1971, ptr @.str.2894) +ok4712: + %t175 = getelementptr inbounds %S.gen.Gen, ptr %t173, i32 0, i32 43 + store i1 false, ptr %t175 + %t176 = load ptr, ptr %a1 + %t177 = icmp eq ptr %t176, null + br i1 %t177, label %panic4713, label %ok4714 +panic4713: + call void @finch_panic(ptr @.str.2969, i64 2114, ptr @.str.2970) unreachable -ok4511: - %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 - store { ptr, i64, i64 } %t199, ptr %a200 - call void @finch_str_copy(ptr %a201, ptr %a200) - %t202 = load { ptr, i64, i64 }, ptr %a201 - %t203 = insertvalue %S.ast.Type %t194, { ptr, i64, i64 } %t202, 2 +ok4714: + %t178 = getelementptr inbounds %S.gen.Gen, ptr %t176, i32 0, i32 45 + store i64 0, ptr %t178 + store { ptr, i64, i64 } zeroinitializer, ptr %a179 + %t180 = load { ptr, i64, i64 }, ptr %a179 + %t181 = load ptr, ptr %a1 + %t182 = icmp eq ptr %t181, null + br i1 %t182, label %panic4715, label %ok4716 +panic4715: + call void @finch_panic(ptr @.str.2971, i64 2116, ptr @.str.2972) + unreachable +ok4716: + %t183 = getelementptr inbounds %S.gen.Gen, ptr %t181, i32 0, i32 10 + store { ptr, i64, i64 } %t180, ptr %a184 + call void @finch.copy.arr_S_gen_Scope(ptr %a185, ptr %a184) + %t186 = load { ptr, i64, i64 }, ptr %a185 + %t187 = load { ptr, i64, i64 }, ptr %t183 + store { ptr, i64, i64 } %t186, ptr %t183 + store { ptr, i64, i64 } %t187, ptr %a188 + call void @finch.drop.arr_S_gen_Scope(ptr %a188) + %t189 = load ptr, ptr %a1 + call void @finch.gen.pushScope(ptr %t189) + store { ptr, i64, i64 } zeroinitializer, ptr %a190 + %t191 = load ptr, ptr %a1 + %t192 = icmp eq ptr %t191, null + br i1 %t192, label %panic4726, label %ok4727 +panic4726: + call void @finch_panic(ptr @.str.2973, i64 2119, ptr @.str.2974) + unreachable +ok4727: + %t193 = getelementptr inbounds %S.gen.Gen, ptr %t191, i32 0, i32 13 + %t194 = getelementptr inbounds %S.gen.FnSig, ptr %t193, i32 0, i32 2 + %t195 = getelementptr inbounds { ptr, i64, i64 }, ptr %t194, i32 0, i32 1 + %t196 = load i64, ptr %t195 + %t197 = icmp sgt i64 %t196, 0 + br i1 %t197, label %then4728, label %endif4730 +then4728: + %t198 = getelementptr inbounds { ptr, i64, i64 }, ptr %a190, i32 0, i32 1 + %t199 = load i64, ptr %t198 + %t200 = add i64 %t199, 1 + call void @finch_arr_reserve(ptr %a190, i64 %t200, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t201 = load ptr, ptr %a190 + %t202 = getelementptr inbounds { ptr, i64, i64 }, ptr %t201, i64 %t199 + store { ptr, i64, i64 } { ptr @.str.2975, i64 9, i64 0 }, ptr %t202 + store i64 %t200, ptr %t198 + store { ptr, i64, i64 } { ptr @.str.2976, i64 6, i64 0 }, ptr %a203 %t204 = load ptr, ptr %a1 %t205 = icmp eq ptr %t204, null - br i1 %t205, label %panic4512, label %ok4513 -panic4512: - call void @finch_panic(ptr @.str.2895, i64 1971, ptr @.str.2896) + br i1 %t205, label %panic4731, label %ok4732 +panic4731: + call void @finch_panic(ptr @.str.2977, i64 2123, ptr @.str.2978) unreachable -ok4513: - %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 - store { ptr, i64, i64 } %t208, ptr %a209 - call void @finch_str_copy(ptr %a210, ptr %a209) - %t211 = load { ptr, i64, i64 }, ptr %a210 - %t212 = insertvalue %S.ast.Type %t203, { ptr, i64, i64 } %t211, 3 - store %S.ast.Type %t212, ptr %a213 - %t214 = load ptr, ptr %a1 - %t215 = icmp eq ptr %t214, null - br i1 %t215, label %panic4514, label %ok4515 -panic4514: - call void @finch_panic(ptr @.str.2897, i64 1972, ptr @.str.2898) +ok4732: + %t206 = getelementptr inbounds %S.gen.Gen, ptr %t204, i32 0, i32 13 + %t207 = getelementptr inbounds %S.gen.FnSig, ptr %t206, i32 0, i32 4 + %t208 = load i1, ptr %t207 + br i1 %t208, label %then4733, label %endif4735 +then4733: + %t209 = load { ptr, i64, i64 }, ptr %a203 + store { ptr, i64, i64 } { ptr @.str.2979, i64 4, i64 0 }, ptr %a203 + store { ptr, i64, i64 } %t209, ptr %a210 + call void @finch_str_drop(ptr %a210) + br label %endif4735 +endif4735: + %t211 = load { ptr, i64, i64 }, ptr %a203 + store { ptr, i64, i64 } %t211, ptr %a212 + call void @finch_str_copy(ptr %a213, ptr %a212) + %t214 = load { ptr, i64, i64 }, ptr %a213 + %t215 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } %t214, 0 + %t216 = load ptr, ptr %a1 + %t217 = icmp eq ptr %t216, null + br i1 %t217, label %panic4736, label %ok4737 +panic4736: + call void @finch_panic(ptr @.str.2980, i64 2126, ptr @.str.2981) unreachable -ok4515: - %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 %range4516, label %inrange4517 -range4516: - call void @finch_panic_index(ptr @.str.2899, i64 1972, i64 0, i64 %t218) +ok4737: + %t218 = getelementptr inbounds %S.gen.Gen, ptr %t216, i32 0, i32 13 + %t219 = getelementptr inbounds %S.gen.FnSig, ptr %t218, i32 0, i32 2 + %t220 = load { ptr, i64, i64 }, ptr %t219 + store { ptr, i64, i64 } %t220, ptr %a221 + call void @finch_str_copy(ptr %a222, ptr %a221) + %t223 = load { ptr, i64, i64 }, ptr %a222 + %t224 = insertvalue %S.ast.Type %t215, { ptr, i64, i64 } %t223, 2 + %t225 = load ptr, ptr %a1 + %t226 = icmp eq ptr %t225, null + br i1 %t226, label %panic4738, label %ok4739 +panic4738: + call void @finch_panic(ptr @.str.2982, i64 2126, ptr @.str.2983) unreachable -inrange4517: - %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.2900, 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.2901, i64 5, i64 0 }, 2 - %t231 = insertvalue %S.gen.Var %t230, i1 false, 3 - %t232 = load i64, ptr %t223 - %t233 = add i64 %t232, 1 - call void @finch_arr_reserve(ptr %t222, i64 %t233, i64 ptrtoint (ptr getelementptr (%S.gen.Var, ptr null, i32 1) to i64)) - %t234 = load ptr, ptr %t222 - %t235 = getelementptr inbounds %S.gen.Var, ptr %t234, i64 %t232 - store %S.gen.Var %t231, ptr %t235 - store i64 %t233, ptr %t223 - %t236 = load ptr, ptr %a1 - %t237 = icmp eq ptr %t236, null - br i1 %t237, label %panic4518, label %ok4519 -panic4518: - call void @finch_panic(ptr @.str.2902, i64 1973, ptr @.str.2903) +ok4739: + %t227 = getelementptr inbounds %S.gen.Gen, ptr %t225, i32 0, i32 13 + %t228 = getelementptr inbounds %S.gen.FnSig, ptr %t227, i32 0, i32 3 + %t229 = load { ptr, i64, i64 }, ptr %t228 + store { ptr, i64, i64 } %t229, ptr %a230 + call void @finch_str_copy(ptr %a231, ptr %a230) + %t232 = load { ptr, i64, i64 }, ptr %a231 + %t233 = insertvalue %S.ast.Type %t224, { ptr, i64, i64 } %t232, 3 + store %S.ast.Type %t233, ptr %a234 + %t235 = load ptr, ptr %a1 + %t236 = icmp eq ptr %t235, null + br i1 %t236, label %panic4740, label %ok4741 +panic4740: + call void @finch_panic(ptr @.str.2984, i64 2127, ptr @.str.2985) unreachable -ok4519: - %t238 = getelementptr inbounds %S.gen.Gen, ptr %t236, i32 0, i32 28 - %t239 = load i1, ptr %t238 - br i1 %t239, label %then4520, label %endif4522 -then4520: - %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.2904, i64 4, i64 0 }, %S.ast.Type %t242, { ptr, i64, i64 } { ptr @.str.2905, i64 5, i64 0 }) - br label %endif4522 -endif4522: - br label %endif4504 -endif4504: - %t243 = load ptr, ptr %a1 - %t244 = icmp eq ptr %t243, null - br i1 %t244, label %panic4523, label %ok4524 -panic4523: - call void @finch_panic(ptr @.str.2906, i64 1978, ptr @.str.2907) +ok4741: + %t237 = getelementptr inbounds %S.gen.Gen, ptr %t235, i32 0, i32 10 + %t238 = load { ptr, i64, i64 }, ptr %t237 + %t239 = extractvalue { ptr, i64, i64 } %t238, 1 + %t240 = icmp uge i64 0, %t239 + br i1 %t240, label %range4742, label %inrange4743 +range4742: + call void @finch_panic_index(ptr @.str.2986, i64 2127, i64 0, i64 %t239) unreachable -ok4524: - %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.cond4525 -for.cond4525: - %t250 = load i64, ptr %a249 - %t251 = icmp slt i64 %t250, %t248 - br i1 %t251, label %for.body4526, label %for.end4528 -for.body4526: - %t252 = load ptr, ptr %a1 - %t253 = icmp eq ptr %t252, null - br i1 %t253, label %panic4529, label %ok4530 -panic4529: - call void @finch_panic(ptr @.str.2908, i64 1979, ptr @.str.2909) +inrange4743: + %t241 = extractvalue { ptr, i64, i64 } %t238, 0 + %t242 = getelementptr inbounds %S.gen.Scope, ptr %t241, i64 0 + %t243 = getelementptr inbounds %S.gen.Scope, ptr %t242, i32 0, i32 0 + %t244 = getelementptr inbounds { ptr, i64, i64 }, ptr %t243, i32 0, i32 1 + %t245 = insertvalue %S.gen.Var zeroinitializer, { ptr, i64, i64 } { ptr @.str.2987, i64 4, i64 0 }, 0 + %t246 = load %S.ast.Type, ptr %a234 + store %S.ast.Type %t246, ptr %a247 + call void @finch.copy.S_ast_Type(ptr %a248, ptr %a247) + %t249 = load %S.ast.Type, ptr %a248 + %t250 = insertvalue %S.gen.Var %t245, %S.ast.Type %t249, 1 + %t251 = insertvalue %S.gen.Var %t250, { ptr, i64, i64 } { ptr @.str.2988, i64 5, i64 0 }, 2 + %t252 = insertvalue %S.gen.Var %t251, i1 false, 3 + %t253 = load i64, ptr %t244 + %t254 = add i64 %t253, 1 + call void @finch_arr_reserve(ptr %t243, i64 %t254, i64 ptrtoint (ptr getelementptr (%S.gen.Var, ptr null, i32 1) to i64)) + %t255 = load ptr, ptr %t243 + %t256 = getelementptr inbounds %S.gen.Var, ptr %t255, i64 %t253 + store %S.gen.Var %t252, ptr %t256 + store i64 %t254, ptr %t244 + %t257 = load ptr, ptr %a1 + %t258 = icmp eq ptr %t257, null + br i1 %t258, label %panic4744, label %ok4745 +panic4744: + call void @finch_panic(ptr @.str.2989, i64 2128, ptr @.str.2990) unreachable -ok4530: - %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 %range4531, label %inrange4532 -range4531: - call void @finch_panic_index(ptr @.str.2910, i64 1979, i64 %t256, i64 %t258) +ok4745: + %t259 = getelementptr inbounds %S.gen.Gen, ptr %t257, i32 0, i32 29 + %t260 = load i1, ptr %t259 + br i1 %t260, label %then4746, label %endif4748 +then4746: + %t261 = load ptr, ptr %a1 + %t262 = load %S.ast.Node, ptr %a119 + %t263 = load %S.ast.Type, ptr %a234 + call void @finch.gen.dbgVariable(ptr %t261, %S.ast.Node %t262, { ptr, i64, i64 } { ptr @.str.2991, i64 4, i64 0 }, %S.ast.Type %t263, { ptr, i64, i64 } { ptr @.str.2992, i64 5, i64 0 }) + br label %endif4748 +endif4748: + call void @finch.drop.S_ast_Type(ptr %a234) + call void @finch_str_drop(ptr %a203) + br label %endif4730 +endif4730: + %t264 = load ptr, ptr %a1 + %t265 = icmp eq ptr %t264, null + br i1 %t265, label %panic4749, label %ok4750 +panic4749: + call void @finch_panic(ptr @.str.2993, i64 2133, ptr @.str.2994) unreachable -inrange4532: - %t260 = extractvalue { ptr, i64, i64 } %t257, 0 - %t261 = getelementptr inbounds %S.ast.Type, ptr %t260, i64 %t256 - %t262 = load %S.ast.Type, ptr %t261 - store %S.ast.Type %t262, ptr %a263 - call void @finch.copy.S_ast_Type(ptr %a264, ptr %a263) - %t265 = load %S.ast.Type, ptr %a264 - store %S.ast.Type %t265, ptr %a266 - %t267 = getelementptr inbounds { ptr, i64, i64 }, ptr %a171, i32 0, i32 1 - %t268 = load ptr, ptr %a1 - %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.2911, 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 - call void @finch_str_from_int(ptr %a276, i64 %t275) - %t277 = load { ptr, i64, i64 }, ptr %a276 - store { ptr, i64, i64 } %t274, 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 - %t282 = load i64, ptr %t267 - %t283 = add i64 %t282, 1 - call void @finch_arr_reserve(ptr %a171, i64 %t283, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t284 = load ptr, ptr %a171 - %t285 = getelementptr inbounds { ptr, i64, i64 }, ptr %t284, i64 %t282 - store { ptr, i64, i64 } %t281, ptr %t285 - store i64 %t283, ptr %t267 - %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.2912, 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 - store { ptr, i64, i64 } %t292, ptr %a293 - %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.from4533 -logic.from4533: - br i1 %t296, label %logic.rhs4534, label %logic.end4535 -logic.rhs4534: - %t297 = load ptr, ptr %a1 - %t298 = icmp eq ptr %t297, null - br i1 %t298, label %panic4536, label %ok4537 -panic4536: - call void @finch_panic(ptr @.str.2913, i64 1982, ptr @.str.2914) +ok4750: + %t266 = getelementptr inbounds %S.gen.Gen, ptr %t264, i32 0, i32 13 + %t267 = getelementptr inbounds %S.gen.FnSig, ptr %t266, i32 0, i32 13 + %t268 = getelementptr inbounds { ptr, i64, i64 }, ptr %t267, i32 0, i32 1 + %t269 = load i64, ptr %t268 + store i64 0, ptr %a270 + br label %for.cond4751 +for.cond4751: + %t271 = load i64, ptr %a270 + %t272 = icmp slt i64 %t271, %t269 + br i1 %t272, label %for.body4752, label %for.end4754 +for.body4752: + %t273 = load ptr, ptr %a1 + %t274 = icmp eq ptr %t273, null + br i1 %t274, label %panic4755, label %ok4756 +panic4755: + call void @finch_panic(ptr @.str.2995, i64 2134, ptr @.str.2996) unreachable -ok4537: - %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 %range4538, label %inrange4539 -range4538: - call void @finch_panic_index(ptr @.str.2915, i64 1982, i64 %t301, i64 %t303) +ok4756: + %t275 = getelementptr inbounds %S.gen.Gen, ptr %t273, i32 0, i32 13 + %t276 = getelementptr inbounds %S.gen.FnSig, ptr %t275, i32 0, i32 13 + %t277 = load i64, ptr %a270 + %t278 = load { ptr, i64, i64 }, ptr %t276 + %t279 = extractvalue { ptr, i64, i64 } %t278, 1 + %t280 = icmp uge i64 %t277, %t279 + br i1 %t280, label %range4757, label %inrange4758 +range4757: + call void @finch_panic_index(ptr @.str.2997, i64 2134, i64 %t277, i64 %t279) unreachable -inrange4539: - %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.rend4540 -logic.rend4540: - br label %logic.end4535 -logic.end4535: - %t309 = phi i1 [ false, %logic.from4533 ], [ %t308, %logic.rend4540 ] - br i1 %t309, label %then4541, label %endif4543 -then4541: - %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 %endif4543 -endif4543: - %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 %panic4544, label %ok4545 -panic4544: - call void @finch_panic(ptr @.str.2916, i64 1985, ptr @.str.2917) - unreachable -ok4545: - %t318 = getelementptr inbounds %S.gen.Gen, ptr %t316, i32 0, i32 37 - store i64 %t315, ptr %t318 +inrange4758: + %t281 = extractvalue { ptr, i64, i64 } %t278, 0 + %t282 = getelementptr inbounds %S.ast.Type, ptr %t281, i64 %t277 + %t283 = load %S.ast.Type, ptr %t282 + store %S.ast.Type %t283, ptr %a284 + call void @finch.copy.S_ast_Type(ptr %a285, ptr %a284) + %t286 = load %S.ast.Type, ptr %a285 + store %S.ast.Type %t286, ptr %a287 + %t288 = getelementptr inbounds { ptr, i64, i64 }, ptr %a190, i32 0, i32 1 + %t289 = load ptr, ptr %a1 + %t290 = load %S.ast.Type, ptr %a287 + %t291 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t289, %S.ast.Type %t290) + store { ptr, i64, i64 } %t291, ptr %a293 + store { ptr, i64, i64 } { ptr @.str.2998, i64 3, i64 0 }, ptr %a294 + call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) + store { ptr, i64, i64 } %t291, ptr %a295 + call void @finch_str_drop(ptr %a295) + %t296 = load { ptr, i64, i64 }, ptr %a292 + %t297 = load i64, ptr %a270 + call void @finch_str_from_int(ptr %a298, i64 %t297) + %t299 = load { ptr, i64, i64 }, ptr %a298 + store { ptr, i64, i64 } %t296, ptr %a301 + store { ptr, i64, i64 } %t299, ptr %a302 + call void @finch_str_concat(ptr %a300, ptr %a301, ptr %a302) + store { ptr, i64, i64 } %t296, ptr %a303 + call void @finch_str_drop(ptr %a303) + store { ptr, i64, i64 } %t299, ptr %a304 + call void @finch_str_drop(ptr %a304) + %t305 = load { ptr, i64, i64 }, ptr %a300 + %t306 = load i64, ptr %t288 + %t307 = add i64 %t306, 1 + call void @finch_arr_reserve(ptr %a190, i64 %t307, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t308 = load ptr, ptr %a190 + %t309 = getelementptr inbounds { ptr, i64, i64 }, ptr %t308, i64 %t306 + store { ptr, i64, i64 } %t305, ptr %t309 + store i64 %t307, ptr %t288 + %t310 = load i64, ptr %a270 + call void @finch_str_from_int(ptr %a311, i64 %t310) + %t312 = load { ptr, i64, i64 }, ptr %a311 + store { ptr, i64, i64 } { ptr @.str.2999, i64 2, i64 0 }, ptr %a314 + store { ptr, i64, i64 } %t312, ptr %a315 + call void @finch_str_concat(ptr %a313, ptr %a314, ptr %a315) + store { ptr, i64, i64 } %t312, ptr %a316 + call void @finch_str_drop(ptr %a316) + %t317 = load { ptr, i64, i64 }, ptr %a313 + store { ptr, i64, i64 } %t317, ptr %a318 %t319 = load ptr, ptr %a1 - %t320 = icmp eq ptr %t319, null - br i1 %t320, label %panic4546, label %ok4547 -panic4546: - call void @finch_panic(ptr @.str.2918, i64 1986, ptr @.str.2919) + %t320 = load %S.ast.Type, ptr %a287 + %t321 = call i1 @finch.gen.owning(ptr %t319, %S.ast.Type %t320) + br label %logic.from4759 +logic.from4759: + br i1 %t321, label %logic.rhs4760, label %logic.end4761 +logic.rhs4760: + %t322 = load ptr, ptr %a1 + %t323 = icmp eq ptr %t322, null + br i1 %t323, label %panic4762, label %ok4763 +panic4762: + call void @finch_panic(ptr @.str.3000, i64 2137, ptr @.str.3001) unreachable -ok4547: - %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 %then4548, label %endif4550 -then4548: - %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 %panic4551, label %ok4552 -panic4551: - call void @finch_panic(ptr @.str.2920, i64 1987, ptr @.str.2921) +ok4763: + %t324 = getelementptr inbounds %S.gen.Gen, ptr %t322, i32 0, i32 13 + %t325 = getelementptr inbounds %S.gen.FnSig, ptr %t324, i32 0, i32 15 + %t326 = load i64, ptr %a270 + %t327 = load { ptr, i64, i64 }, ptr %t325 + %t328 = extractvalue { ptr, i64, i64 } %t327, 1 + %t329 = icmp uge i64 %t326, %t328 + br i1 %t329, label %range4764, label %inrange4765 +range4764: + call void @finch_panic_index(ptr @.str.3002, i64 2137, i64 %t326, i64 %t328) unreachable -ok4552: - %t330 = getelementptr inbounds %S.gen.Gen, ptr %t328, i32 0, i32 37 - store i64 %t327, ptr %t330 - br label %endif4550 -endif4550: - %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 %range4553, label %inrange4554 -range4553: - call void @finch_panic_index(ptr @.str.2922, i64 1989, i64 %t333, i64 %t335) +inrange4765: + %t330 = extractvalue { ptr, i64, i64 } %t327, 0 + %t331 = getelementptr inbounds i1, ptr %t330, i64 %t326 + %t332 = load i1, ptr %t331 + %t333 = xor i1 %t332, true + br label %logic.rend4766 +logic.rend4766: + br label %logic.end4761 +logic.end4761: + %t334 = phi i1 [ false, %logic.from4759 ], [ %t333, %logic.rend4766 ] + br i1 %t334, label %then4767, label %endif4769 +then4767: + %t335 = load ptr, ptr %a1 + %t336 = load { ptr, i64, i64 }, ptr %a318 + %t337 = load %S.ast.Type, ptr %a287 + %t338 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t335, { ptr, i64, i64 } %t336, %S.ast.Type %t337) + %t339 = load { ptr, i64, i64 }, ptr %a318 + store { ptr, i64, i64 } %t338, ptr %a318 + store { ptr, i64, i64 } %t339, ptr %a340 + call void @finch_str_drop(ptr %a340) + br label %endif4769 +endif4769: + %t341 = load i64, ptr %a270 + %t342 = add i64 %t341, 1 + %t343 = load ptr, ptr %a1 + %t344 = icmp eq ptr %t343, null + br i1 %t344, label %panic4770, label %ok4771 +panic4770: + call void @finch_panic(ptr @.str.3003, i64 2140, ptr @.str.3004) unreachable -inrange4554: - %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 %panic4555, label %ok4556 -panic4555: - call void @finch_panic(ptr @.str.2923, i64 1989, ptr @.str.2924) +ok4771: + %t345 = getelementptr inbounds %S.gen.Gen, ptr %t343, i32 0, i32 38 + store i64 %t342, ptr %t345 + %t346 = load ptr, ptr %a1 + %t347 = icmp eq ptr %t346, null + br i1 %t347, label %panic4772, label %ok4773 +panic4772: + call void @finch_panic(ptr @.str.3005, i64 2141, ptr @.str.3006) unreachable -ok4556: - %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 %range4557, label %inrange4558 -range4557: - call void @finch_panic_index(ptr @.str.2925, i64 1989, i64 %t344, i64 %t346) +ok4773: + %t348 = getelementptr inbounds %S.gen.Gen, ptr %t346, i32 0, i32 13 + %t349 = getelementptr inbounds %S.gen.FnSig, ptr %t348, i32 0, i32 2 + %t350 = getelementptr inbounds { ptr, i64, i64 }, ptr %t349, i32 0, i32 1 + %t351 = load i64, ptr %t350 + %t352 = icmp sgt i64 %t351, 0 + br i1 %t352, label %then4774, label %endif4776 +then4774: + %t353 = load i64, ptr %a270 + %t354 = add i64 %t353, 2 + %t355 = load ptr, ptr %a1 + %t356 = icmp eq ptr %t355, null + br i1 %t356, label %panic4777, label %ok4778 +panic4777: + call void @finch_panic(ptr @.str.3007, i64 2142, ptr @.str.3008) unreachable -inrange4558: - %t348 = extractvalue { ptr, i64, i64 } %t345, 0 - %t349 = getelementptr inbounds { ptr, i64, i64 }, ptr %t348, i64 %t344 - %t350 = load { ptr, i64, i64 }, ptr %t349 - %t351 = load %S.ast.Type, ptr %a266 - %t352 = load { ptr, i64, i64 }, ptr %a293 - %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 %panic4559, label %ok4560 -panic4559: - call void @finch_panic(ptr @.str.2926, i64 1990, ptr @.str.2927) +ok4778: + %t357 = getelementptr inbounds %S.gen.Gen, ptr %t355, i32 0, i32 38 + store i64 %t354, ptr %t357 + br label %endif4776 +endif4776: + %t358 = load ptr, ptr %a1 + %t359 = getelementptr inbounds %S.ast.Node, ptr %a119, i32 0, i32 9 + %t360 = load i64, ptr %a270 + %t361 = load { ptr, i64, i64 }, ptr %t359 + %t362 = extractvalue { ptr, i64, i64 } %t361, 1 + %t363 = icmp uge i64 %t360, %t362 + br i1 %t363, label %range4779, label %inrange4780 +range4779: + call void @finch_panic_index(ptr @.str.3009, i64 2144, i64 %t360, i64 %t362) unreachable -ok4560: - %t356 = getelementptr inbounds %S.gen.Gen, ptr %t354, i32 0, i32 37 - store i64 0, ptr %t356 - br label %for.step4527 -for.step4527: - %t357 = load i64, ptr %a249 - %t358 = add i64 %t357, 1 - store i64 %t358, ptr %a249 - br label %for.cond4525 -for.end4528: - %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 - %t362 = getelementptr inbounds { ptr, i64, i64 }, ptr %t361, i32 0, i32 1 - %t363 = load i64, ptr %t362 - %t364 = sub i64 %t363, 1 - %t365 = load { ptr, i64, i64 }, ptr %t360 - %t366 = extractvalue { ptr, i64, i64 } %t365, 1 - %t367 = icmp uge i64 %t364, %t366 - br i1 %t367, label %range4561, label %inrange4562 -range4561: - call void @finch_panic_index(ptr @.str.2928, i64 1992, i64 %t364, i64 %t366) +inrange4780: + %t364 = extractvalue { ptr, i64, i64 } %t361, 0 + %t365 = getelementptr inbounds %S.ast.Node, ptr %t364, i64 %t360 + %t366 = load %S.ast.Node, ptr %t365 + %t367 = load ptr, ptr %a1 + %t368 = icmp eq ptr %t367, null + br i1 %t368, label %panic4781, label %ok4782 +panic4781: + call void @finch_panic(ptr @.str.3010, i64 2144, ptr @.str.3011) unreachable -inrange4562: - %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 %panic4563, label %ok4564 -panic4563: - call void @finch_panic(ptr @.str.2929, i64 1993, ptr @.str.2930) +ok4782: + %t369 = getelementptr inbounds %S.gen.Gen, ptr %t367, i32 0, i32 13 + %t370 = getelementptr inbounds %S.gen.FnSig, ptr %t369, i32 0, i32 14 + %t371 = load i64, ptr %a270 + %t372 = load { ptr, i64, i64 }, ptr %t370 + %t373 = extractvalue { ptr, i64, i64 } %t372, 1 + %t374 = icmp uge i64 %t371, %t373 + br i1 %t374, label %range4783, label %inrange4784 +range4783: + call void @finch_panic_index(ptr @.str.3012, i64 2144, i64 %t371, i64 %t373) unreachable -ok4564: - %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 %then4565, label %endif4567 -then4565: - %t376 = load ptr, ptr %a1 - %t377 = icmp eq ptr %t376, null - br i1 %t377, label %panic4568, label %ok4569 -panic4568: - call void @finch_panic(ptr @.str.2931, i64 1994, ptr @.str.2932) +inrange4784: + %t375 = extractvalue { ptr, i64, i64 } %t372, 0 + %t376 = getelementptr inbounds { ptr, i64, i64 }, ptr %t375, i64 %t371 + %t377 = load { ptr, i64, i64 }, ptr %t376 + %t378 = load %S.ast.Type, ptr %a287 + %t379 = load { ptr, i64, i64 }, ptr %a318 + %t380 = load ptr, ptr %a1 + %t381 = load %S.ast.Type, ptr %a287 + %t382 = call i1 @finch.gen.owning(ptr %t380, %S.ast.Type %t381) + br label %logic.from4785 +logic.from4785: + br i1 %t382, label %logic.rhs4786, label %logic.end4787 +logic.rhs4786: + %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.3013, i64 2144, ptr @.str.3014) unreachable -ok4569: - %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.2933, 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 %then4570, label %endif4572 -then4570: - %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.2934, 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.2935, i64 38, i64 0 }, ptr %a396 - call void @finch_str_concat(ptr %a394, ptr %a395, ptr %a396) - %t397 = load { ptr, i64, i64 }, ptr %a394 +ok4789: + %t385 = getelementptr inbounds %S.gen.Gen, ptr %t383, i32 0, i32 13 + %t386 = getelementptr inbounds %S.gen.FnSig, ptr %t385, i32 0, i32 15 + %t387 = load i64, ptr %a270 + %t388 = load { ptr, i64, i64 }, ptr %t386 + %t389 = extractvalue { ptr, i64, i64 } %t388, 1 + %t390 = icmp uge i64 %t387, %t389 + br i1 %t390, label %range4790, label %inrange4791 +range4790: + call void @finch_panic_index(ptr @.str.3015, i64 2144, i64 %t387, i64 %t389) + unreachable +inrange4791: + %t391 = extractvalue { ptr, i64, i64 } %t388, 0 + %t392 = getelementptr inbounds i1, ptr %t391, i64 %t387 + %t393 = load i1, ptr %t392 + %t394 = xor i1 %t393, true + br label %logic.rend4792 +logic.rend4792: + br label %logic.end4787 +logic.end4787: + %t395 = phi i1 [ false, %logic.from4785 ], [ %t394, %logic.rend4792 ] + %t396 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t358, %S.ast.Node %t366, { ptr, i64, i64 } %t377, %S.ast.Type %t378, { ptr, i64, i64 } %t379, i1 false, i1 %t395) + store { ptr, i64, i64 } %t396, ptr %a397 + call void @finch_str_drop(ptr %a397) %t398 = load ptr, ptr %a1 %t399 = icmp eq ptr %t398, null - br i1 %t399, label %panic4573, label %ok4574 -panic4573: - call void @finch_panic(ptr @.str.2936, i64 1995, ptr @.str.2937) + br i1 %t399, label %panic4793, label %ok4794 +panic4793: + call void @finch_panic(ptr @.str.3016, i64 2145, ptr @.str.3017) unreachable -ok4574: - %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 - %t403 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t402) - store { ptr, i64, i64 } %t397, 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 - call void @finch.gen.fail(ptr %t386, %S.ast.Node %t387, { ptr, i64, i64 } %t407) - br label %endif4572 -endif4572: - %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 %panic4575, label %ok4576 -panic4575: - call void @finch_panic(ptr @.str.2938, i64 1998, ptr @.str.2939) +ok4794: + %t400 = getelementptr inbounds %S.gen.Gen, ptr %t398, i32 0, i32 38 + store i64 0, ptr %t400 + call void @finch_str_drop(ptr %a318) + call void @finch.drop.S_ast_Type(ptr %a287) + br label %for.step4753 +for.step4753: + %t401 = load i64, ptr %a270 + %t402 = add i64 %t401, 1 + store i64 %t402, ptr %a270 + br label %for.cond4751 +for.end4754: + %t403 = load ptr, ptr %a1 + %t404 = getelementptr inbounds %S.ast.Node, ptr %a119, i32 0, i32 9 + %t405 = getelementptr inbounds %S.ast.Node, ptr %a119, i32 0, i32 9 + %t406 = getelementptr inbounds { ptr, i64, i64 }, ptr %t405, i32 0, i32 1 + %t407 = load i64, ptr %t406 + %t408 = sub i64 %t407, 1 + %t409 = load { ptr, i64, i64 }, ptr %t404 + %t410 = extractvalue { ptr, i64, i64 } %t409, 1 + %t411 = icmp uge i64 %t408, %t410 + br i1 %t411, label %range4795, label %inrange4796 +range4795: + call void @finch_panic_index(ptr @.str.3018, i64 2147, i64 %t408, i64 %t410) unreachable -ok4576: - %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 %then4577, label %else4578 -then4577: - %t414 = load ptr, ptr %a1 +inrange4796: + %t412 = extractvalue { ptr, i64, i64 } %t409, 0 + %t413 = getelementptr inbounds %S.ast.Node, ptr %t412, i64 %t408 + %t414 = load %S.ast.Node, ptr %t413 + call void @finch.gen.block(ptr %t403, %S.ast.Node %t414, i1 false) %t415 = load ptr, ptr %a1 - %t416 = load ptr, ptr %a1 - %t417 = icmp eq ptr %t416, null - br i1 %t417, label %panic4580, label %ok4581 -panic4580: - call void @finch_panic(ptr @.str.2941, i64 1999, ptr @.str.2942) + %t416 = icmp eq ptr %t415, null + br i1 %t416, label %panic4797, label %ok4798 +panic4797: + call void @finch_panic(ptr @.str.3019, i64 2148, ptr @.str.3020) unreachable -ok4581: - %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.2940, 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.2943, 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 %endif4579 -else4578: - %t429 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t429, { ptr, i64, i64 } { ptr @.str.2944, i64 8, i64 0 }) - br label %endif4579 -endif4579: - br label %endif4567 -endif4567: - store { ptr, i64, i64 } { ptr @.str.2945, i64 0, i64 0 }, ptr %a430 - %t431 = load i64, ptr %a134 - %t432 = icmp sge i64 %t431, 0 - br i1 %t432, label %then4582, label %endif4584 -then4582: - %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.2946, 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 %endif4584 -endif4584: - %t440 = load ptr, ptr %a1 - %t441 = icmp eq ptr %t440, null - br i1 %t441, label %panic4585, label %ok4586 -panic4585: - call void @finch_panic(ptr @.str.2947, i64 2008, ptr @.str.2948) +ok4798: + %t417 = getelementptr inbounds %S.gen.Gen, ptr %t415, i32 0, i32 9 + %t418 = load i1, ptr %t417 + %t419 = xor i1 %t418, true + br i1 %t419, label %then4799, label %endif4801 +then4799: + %t420 = load ptr, ptr %a1 + %t421 = icmp eq ptr %t420, null + br i1 %t421, label %panic4802, label %ok4803 +panic4802: + call void @finch_panic(ptr @.str.3021, i64 2149, ptr @.str.3022) unreachable -ok4586: - %t442 = getelementptr inbounds %S.gen.Gen, ptr %t440, i32 0, i32 34 - store i64 -1, ptr %t442 +ok4803: + %t422 = getelementptr inbounds %S.gen.Gen, ptr %t420, i32 0, i32 13 + %t423 = getelementptr inbounds %S.gen.FnSig, ptr %t422, i32 0, i32 12 + %t424 = getelementptr inbounds %S.ast.Type, ptr %t423, i32 0, i32 0 + %t425 = load { ptr, i64, i64 }, ptr %t424 + store { ptr, i64, i64 } %t425, ptr %a426 + store { ptr, i64, i64 } { ptr @.str.3023, i64 4, i64 0 }, ptr %a427 + %t428 = call i32 @finch_str_eq(ptr %a426, ptr %a427) + %t429 = icmp eq i32 %t428, 0 + br i1 %t429, label %then4804, label %endif4806 +then4804: + %t430 = load ptr, ptr %a1 + %t431 = load %S.ast.Node, ptr %a119 + %t432 = getelementptr inbounds %S.ast.Node, ptr %a119, i32 0, i32 1 + %t433 = load { ptr, i64, i64 }, ptr %t432 + store { ptr, i64, i64 } { ptr @.str.3024, i64 10, 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.3025, i64 38, i64 0 }, ptr %a440 + call void @finch_str_concat(ptr %a438, ptr %a439, ptr %a440) + store { ptr, i64, i64 } %t437, ptr %a441 + call void @finch_str_drop(ptr %a441) + %t442 = load { ptr, i64, i64 }, ptr %a438 %t443 = load ptr, ptr %a1 %t444 = icmp eq ptr %t443, null - br i1 %t444, label %panic4587, label %ok4588 -panic4587: - call void @finch_panic(ptr @.str.2949, i64 2009, ptr @.str.2950) + br i1 %t444, label %panic4807, label %ok4808 +panic4807: + call void @finch_panic(ptr @.str.3026, i64 2150, ptr @.str.3027) unreachable -ok4588: - %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 %panic4589, label %ok4590 -panic4589: - call void @finch_panic(ptr @.str.2952, i64 2009, ptr @.str.2953) +ok4808: + %t445 = getelementptr inbounds %S.gen.Gen, ptr %t443, i32 0, i32 13 + %t446 = getelementptr inbounds %S.gen.FnSig, ptr %t445, i32 0, i32 12 + %t447 = load %S.ast.Type, ptr %t446 + %t448 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t447) + store { ptr, i64, i64 } %t442, ptr %a450 + store { ptr, i64, i64 } %t448, ptr %a451 + call void @finch_str_concat(ptr %a449, ptr %a450, ptr %a451) + store { ptr, i64, i64 } %t442, ptr %a452 + call void @finch_str_drop(ptr %a452) + store { ptr, i64, i64 } %t448, ptr %a453 + call void @finch_str_drop(ptr %a453) + %t454 = load { ptr, i64, i64 }, ptr %a449 + call void @finch.gen.fail(ptr %t430, %S.ast.Node %t431, { ptr, i64, i64 } %t454) + store { ptr, i64, i64 } %t454, ptr %a455 + call void @finch_str_drop(ptr %a455) + br label %endif4806 +endif4806: + %t456 = load ptr, ptr %a1 + call void @finch.gen.unwind(ptr %t456, i64 0) + %t457 = load ptr, ptr %a1 + %t458 = icmp eq ptr %t457, null + br i1 %t458, label %panic4809, label %ok4810 +panic4809: + call void @finch_panic(ptr @.str.3028, i64 2153, ptr @.str.3029) unreachable -ok4590: - %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.2951, 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.2954, 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 %panic4591, label %ok4592 -panic4591: - call void @finch_panic(ptr @.str.2955, i64 2009, ptr @.str.2956) +ok4810: + %t459 = getelementptr inbounds %S.gen.Gen, ptr %t457, i32 0, i32 13 + %t460 = getelementptr inbounds %S.gen.FnSig, ptr %t459, i32 0, i32 9 + %t461 = load i1, ptr %t460 + br i1 %t461, label %then4811, label %else4812 +then4811: + %t462 = load ptr, ptr %a1 + %t463 = load ptr, ptr %a1 + %t464 = load ptr, ptr %a1 + %t465 = icmp eq ptr %t464, null + br i1 %t465, label %panic4814, label %ok4815 +panic4814: + call void @finch_panic(ptr @.str.3031, i64 2154, ptr @.str.3032) unreachable -ok4592: - %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 - store { ptr, i64, i64 } %t460, ptr %a467 - store { ptr, i64, i64 } %t465, ptr %a468 - 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.2957, 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.2958, 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 - store { ptr, i64, i64 } %t477, ptr %a480 - 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.2959, 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 - store { ptr, i64, i64 } %t485, ptr %a488 +ok4815: + %t466 = getelementptr inbounds %S.gen.Gen, ptr %t464, i32 0, i32 13 + %t467 = load %S.gen.FnSig, ptr %t466 + %t468 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t463, %S.gen.FnSig %t467) + store { ptr, i64, i64 } { ptr @.str.3030, i64 4, i64 0 }, ptr %a470 + store { ptr, i64, i64 } %t468, ptr %a471 + call void @finch_str_concat(ptr %a469, ptr %a470, ptr %a471) + store { ptr, i64, i64 } %t468, ptr %a472 + call void @finch_str_drop(ptr %a472) + %t473 = load { ptr, i64, i64 }, ptr %a469 + store { ptr, i64, i64 } %t473, ptr %a475 + store { ptr, i64, i64 } { ptr @.str.3033, i64 53, i64 0 }, ptr %a476 + call void @finch_str_concat(ptr %a474, ptr %a475, ptr %a476) + store { ptr, i64, i64 } %t473, ptr %a477 + call void @finch_str_drop(ptr %a477) + %t478 = load { ptr, i64, i64 }, ptr %a474 + call void @finch.gen.emit(ptr %t462, { ptr, i64, i64 } %t478) + store { ptr, i64, i64 } %t478, ptr %a479 + call void @finch_str_drop(ptr %a479) + br label %endif4813 +else4812: + %t480 = load ptr, ptr %a1 + call void @finch.gen.emit(ptr %t480, { ptr, i64, i64 } { ptr @.str.3034, i64 8, i64 0 }) + br label %endif4813 +endif4813: + br label %endif4801 +endif4801: + store { ptr, i64, i64 } { ptr @.str.3035, i64 0, i64 0 }, ptr %a481 + %t482 = load i64, ptr %a151 + %t483 = icmp sge i64 %t482, 0 + br i1 %t483, label %then4816, label %endif4818 +then4816: + %t484 = load i64, ptr %a151 + call void @finch_str_from_int(ptr %a485, i64 %t484) + %t486 = load { ptr, i64, i64 }, ptr %a485 + store { ptr, i64, i64 } { ptr @.str.3036, i64 7, 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.2960, 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 %panic4593, label %ok4594 -panic4593: - call void @finch_panic(ptr @.str.2961, i64 2010, ptr @.str.2962) + store { ptr, i64, i64 } %t486, ptr %a490 + call void @finch_str_drop(ptr %a490) + %t491 = load { ptr, i64, i64 }, ptr %a487 + %t492 = load { ptr, i64, i64 }, ptr %a481 + store { ptr, i64, i64 } %t491, ptr %a481 + store { ptr, i64, i64 } %t492, ptr %a493 + call void @finch_str_drop(ptr %a493) + br label %endif4818 +endif4818: + %t494 = load ptr, ptr %a1 + %t495 = icmp eq ptr %t494, null + br i1 %t495, label %panic4819, label %ok4820 +panic4819: + call void @finch_panic(ptr @.str.3037, i64 2163, ptr @.str.3038) unreachable -ok4594: - %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.2963, 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 - store { ptr, i64, i64 } %t501, ptr %a504 - 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.2964, 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 %panic4595, label %ok4596 -panic4595: - call void @finch_panic(ptr @.str.2965, i64 2010, ptr @.str.2966) +ok4820: + %t496 = getelementptr inbounds %S.gen.Gen, ptr %t494, i32 0, i32 35 + store i64 -1, ptr %t496 + %t497 = load ptr, ptr %a1 + %t498 = icmp eq ptr %t497, null + br i1 %t498, label %panic4821, label %ok4822 +panic4821: + call void @finch_panic(ptr @.str.3039, i64 2164, ptr @.str.3040) unreachable -ok4596: - %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.2967, 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 - store { ptr, i64, i64 } %t516, ptr %a519 - 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.2968, 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 - %t526 = add i64 %t525, 1 - call void @finch_arr_reserve(ptr %t445, i64 %t526, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t527 = load ptr, ptr %t445 - %t528 = getelementptr inbounds { ptr, i64, i64 }, ptr %t527, i64 %t525 - store { ptr, i64, i64 } %t524, ptr %t528 - store i64 %t526, ptr %t446 +ok4822: + %t499 = getelementptr inbounds %S.gen.Gen, ptr %t497, i32 0, i32 3 + %t500 = getelementptr inbounds { ptr, i64, i64 }, ptr %t499, i32 0, i32 1 + %t501 = load ptr, ptr %a1 + %t502 = load ptr, ptr %a1 + %t503 = icmp eq ptr %t502, null + br i1 %t503, label %panic4823, label %ok4824 +panic4823: + call void @finch_panic(ptr @.str.3042, i64 2164, ptr @.str.3043) + unreachable +ok4824: + %t504 = getelementptr inbounds %S.gen.Gen, ptr %t502, i32 0, i32 13 + %t505 = load %S.gen.FnSig, ptr %t504 + %t506 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t501, %S.gen.FnSig %t505) + store { ptr, i64, i64 } { ptr @.str.3041, i64 16, i64 0 }, ptr %a508 + store { ptr, i64, i64 } %t506, ptr %a509 + call void @finch_str_concat(ptr %a507, ptr %a508, ptr %a509) + store { ptr, i64, i64 } %t506, ptr %a510 + call void @finch_str_drop(ptr %a510) + %t511 = load { ptr, i64, i64 }, ptr %a507 + store { ptr, i64, i64 } %t511, ptr %a513 + store { ptr, i64, i64 } { ptr @.str.3044, i64 1, i64 0 }, ptr %a514 + call void @finch_str_concat(ptr %a512, ptr %a513, ptr %a514) + store { ptr, i64, i64 } %t511, ptr %a515 + call void @finch_str_drop(ptr %a515) + %t516 = load { ptr, i64, i64 }, ptr %a512 + %t517 = load ptr, ptr %a1 + %t518 = icmp eq ptr %t517, null + br i1 %t518, label %panic4825, label %ok4826 +panic4825: + call void @finch_panic(ptr @.str.3045, i64 2164, ptr @.str.3046) + unreachable +ok4826: + %t519 = getelementptr inbounds %S.gen.Gen, ptr %t517, i32 0, i32 13 + %t520 = getelementptr inbounds %S.gen.FnSig, ptr %t519, i32 0, i32 11 + %t521 = load { ptr, i64, i64 }, ptr %t520 + store { ptr, i64, i64 } %t516, ptr %a523 + store { ptr, i64, i64 } %t521, ptr %a524 + call void @finch_str_concat(ptr %a522, ptr %a523, ptr %a524) + store { ptr, i64, i64 } %t516, ptr %a525 + call void @finch_str_drop(ptr %a525) + %t526 = load { ptr, i64, i64 }, ptr %a522 + store { ptr, i64, i64 } %t526, ptr %a528 + store { ptr, i64, i64 } { ptr @.str.3047, i64 1, i64 0 }, ptr %a529 + call void @finch_str_concat(ptr %a527, ptr %a528, ptr %a529) + store { ptr, i64, i64 } %t526, ptr %a530 + call void @finch_str_drop(ptr %a530) + %t531 = load { ptr, i64, i64 }, ptr %a527 + %t532 = getelementptr inbounds { ptr, i64, i64 }, ptr %a190, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.3048, i64 2, i64 0 }, ptr %a533 + call void @finch_str_join(ptr %a534, ptr %a190, ptr %a533) + %t535 = load { ptr, i64, i64 }, ptr %a534 + store { ptr, i64, i64 } %t531, ptr %a537 + store { ptr, i64, i64 } %t535, ptr %a538 + call void @finch_str_concat(ptr %a536, ptr %a537, ptr %a538) + store { ptr, i64, i64 } %t531, ptr %a539 + call void @finch_str_drop(ptr %a539) + store { ptr, i64, i64 } %t535, ptr %a540 + call void @finch_str_drop(ptr %a540) + %t541 = load { ptr, i64, i64 }, ptr %a536 + store { ptr, i64, i64 } %t541, ptr %a543 + store { ptr, i64, i64 } { ptr @.str.3049, i64 1, i64 0 }, ptr %a544 + call void @finch_str_concat(ptr %a542, ptr %a543, ptr %a544) + store { ptr, i64, i64 } %t541, ptr %a545 + call void @finch_str_drop(ptr %a545) + %t546 = load { ptr, i64, i64 }, ptr %a542 + %t547 = load { ptr, i64, i64 }, ptr %a481 + store { ptr, i64, i64 } %t546, ptr %a549 + store { ptr, i64, i64 } %t547, ptr %a550 + call void @finch_str_concat(ptr %a548, ptr %a549, ptr %a550) + store { ptr, i64, i64 } %t546, ptr %a551 + call void @finch_str_drop(ptr %a551) + %t552 = load { ptr, i64, i64 }, ptr %a548 + store { ptr, i64, i64 } %t552, ptr %a554 + store { ptr, i64, i64 } { ptr @.str.3050, i64 10, i64 0 }, ptr %a555 + call void @finch_str_concat(ptr %a553, ptr %a554, ptr %a555) + store { ptr, i64, i64 } %t552, ptr %a556 + call void @finch_str_drop(ptr %a556) + %t557 = load { ptr, i64, i64 }, ptr %a553 + %t558 = load ptr, ptr %a1 + %t559 = icmp eq ptr %t558, null + br i1 %t559, label %panic4827, label %ok4828 +panic4827: + call void @finch_panic(ptr @.str.3051, i64 2165, ptr @.str.3052) + unreachable +ok4828: + %t560 = getelementptr inbounds %S.gen.Gen, ptr %t558, i32 0, i32 5 + %t561 = getelementptr inbounds { ptr, i64, i64 }, ptr %t560, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.3053, i64 1, i64 0 }, ptr %a562 + call void @finch_str_join(ptr %a563, ptr %t560, ptr %a562) + %t564 = load { ptr, i64, i64 }, ptr %a563 + store { ptr, i64, i64 } %t557, ptr %a566 + store { ptr, i64, i64 } %t564, ptr %a567 + call void @finch_str_concat(ptr %a565, ptr %a566, ptr %a567) + store { ptr, i64, i64 } %t557, ptr %a568 + call void @finch_str_drop(ptr %a568) + store { ptr, i64, i64 } %t564, ptr %a569 + call void @finch_str_drop(ptr %a569) + %t570 = load { ptr, i64, i64 }, ptr %a565 + store { ptr, i64, i64 } %t570, ptr %a572 + store { ptr, i64, i64 } { ptr @.str.3054, i64 1, i64 0 }, ptr %a573 + call void @finch_str_concat(ptr %a571, ptr %a572, ptr %a573) + store { ptr, i64, i64 } %t570, ptr %a574 + call void @finch_str_drop(ptr %a574) + %t575 = load { ptr, i64, i64 }, ptr %a571 + %t576 = load ptr, ptr %a1 + %t577 = icmp eq ptr %t576, null + br i1 %t577, label %panic4829, label %ok4830 +panic4829: + call void @finch_panic(ptr @.str.3055, i64 2165, ptr @.str.3056) + unreachable +ok4830: + %t578 = getelementptr inbounds %S.gen.Gen, ptr %t576, i32 0, i32 4 + %t579 = getelementptr inbounds { ptr, i64, i64 }, ptr %t578, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.3057, i64 1, i64 0 }, ptr %a580 + call void @finch_str_join(ptr %a581, ptr %t578, ptr %a580) + %t582 = load { ptr, i64, i64 }, ptr %a581 + store { ptr, i64, i64 } %t575, ptr %a584 + store { ptr, i64, i64 } %t582, ptr %a585 + call void @finch_str_concat(ptr %a583, ptr %a584, ptr %a585) + store { ptr, i64, i64 } %t575, ptr %a586 + call void @finch_str_drop(ptr %a586) + store { ptr, i64, i64 } %t582, ptr %a587 + call void @finch_str_drop(ptr %a587) + %t588 = load { ptr, i64, i64 }, ptr %a583 + store { ptr, i64, i64 } %t588, ptr %a590 + store { ptr, i64, i64 } { ptr @.str.3058, i64 3, i64 0 }, ptr %a591 + call void @finch_str_concat(ptr %a589, ptr %a590, ptr %a591) + store { ptr, i64, i64 } %t588, ptr %a592 + call void @finch_str_drop(ptr %a592) + %t593 = load { ptr, i64, i64 }, ptr %a589 + %t594 = load i64, ptr %t500 + %t595 = add i64 %t594, 1 + call void @finch_arr_reserve(ptr %t499, i64 %t595, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t596 = load ptr, ptr %t499 + %t597 = getelementptr inbounds { ptr, i64, i64 }, ptr %t596, i64 %t594 + store { ptr, i64, i64 } %t593, ptr %t597 + store i64 %t595, ptr %t500 + call void @finch_str_drop(ptr %a481) + call void @finch.drop.arr_str(ptr %a190) + call void @finch.drop.arr_S_gen_Scope(ptr %a179) + call void @finch.drop.arr_str(ptr %a120) + call void @finch.drop.S_ast_Node(ptr %a119) ret void } @@ -42227,59 +49145,59 @@ entry: store %S.ast.Node %p1, ptr %a2 store i1 %p2, ptr %a3 %t4 = load i1, ptr %a3 - br i1 %t4, label %then4597, label %endif4599 -then4597: + br i1 %t4, label %then4831, label %endif4833 +then4831: %t5 = load ptr, ptr %a1 call void @finch.gen.pushScope(ptr %t5) - br label %endif4599 -endif4599: + br label %endif4833 +endif4833: %t6 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 store i64 0, ptr %a7 - br label %each.cond4600 -each.cond4600: + br label %each.cond4834 +each.cond4834: %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.body4601, label %each.end4603 -each.body4601: + br i1 %t11, label %each.body4835, label %each.end4837 +each.body4835: %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 %panic4604, label %ok4605 -panic4604: - call void @finch_panic(ptr @.str.2969, i64 2020, ptr @.str.2970) + br i1 %t17, label %panic4838, label %ok4839 +panic4838: + call void @finch_panic(ptr @.str.3059, i64 2175, ptr @.str.3060) unreachable -ok4605: +ok4839: %t18 = getelementptr inbounds %S.gen.Gen, ptr %t16, i32 0, i32 9 %t19 = load i1, ptr %t18 - br i1 %t19, label %then4606, label %endif4608 -then4606: + br i1 %t19, label %then4840, label %endif4842 +then4840: %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.2971, i64 66, i64 0 }) - br label %endif4608 -endif4608: + call void @finch.gen.fail(ptr %t20, %S.ast.Node %t21, { ptr, i64, i64 } { ptr @.str.3061, i64 66, i64 0 }) + br label %endif4842 +endif4842: %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.step4602 -each.step4602: + br label %each.step4836 +each.step4836: %t24 = load i64, ptr %a7 %t25 = add i64 %t24, 1 store i64 %t25, ptr %a7 - br label %each.cond4600 -each.end4603: + br label %each.cond4834 +each.end4837: %t26 = load i1, ptr %a3 - br i1 %t26, label %then4609, label %endif4611 -then4609: + br i1 %t26, label %then4843, label %endif4845 +then4843: %t27 = load ptr, ptr %a1 call void @finch.gen.endScope(ptr %t27) - br label %endif4611 -endif4611: + br label %endif4845 +endif4845: ret void } @@ -42297,6 +49215,16 @@ entry: ret void } +define internal void @finch.drop.S_gen_Loop(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.gen.Loop, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.gen.Loop, ptr %a, i32 0, i32 1 + call void @finch_str_drop(ptr %t2) + ret void +} + define internal void @finch.gen.stmt(ptr %p0, %S.ast.Node %p1) { entry: %a1 = alloca ptr, align 16 @@ -42314,64 +49242,70 @@ entry: %a42 = alloca { ptr, i64, i64 }, align 16 %a53 = alloca { ptr, i64, i64 }, align 16 %a54 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca i64, align 16 - %a155 = alloca %S.ast.Node, align 16 - %a156 = alloca %S.ast.Node, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a188 = 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 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca %S.gen.Loop, align 16 - %a233 = alloca %S.gen.Loop, align 16 - %a235 = alloca %S.gen.Loop, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a241 = 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 + %a67 = alloca %S.gen.Val, align 16 + %a78 = alloca %S.gen.Val, align 16 + %a80 = alloca { ptr, i64, i64 }, align 16 + %a81 = alloca { ptr, i64, i64 }, align 16 + %a87 = alloca %S.gen.Val, align 16 + %a89 = alloca { ptr, i64, i64 }, align 16 + %a90 = alloca { ptr, i64, i64 }, align 16 + %a96 = alloca { ptr, i64, i64 }, align 16 + %a97 = alloca { ptr, i64, i64 }, align 16 + %a103 = alloca { ptr, i64, i64 }, align 16 + %a104 = alloca { ptr, i64, i64 }, align 16 + %a110 = alloca { ptr, i64, i64 }, align 16 + %a111 = alloca { ptr, i64, i64 }, align 16 + %a117 = alloca { ptr, i64, i64 }, align 16 + %a118 = alloca { ptr, i64, i64 }, align 16 + %a124 = alloca { ptr, i64, i64 }, align 16 + %a125 = alloca { ptr, i64, i64 }, align 16 + %a141 = alloca i64, align 16 + %a189 = alloca %S.ast.Node, align 16 + %a190 = alloca %S.ast.Node, align 16 + %a216 = alloca { ptr, i64, i64 }, align 16 + %a217 = alloca { ptr, i64, i64 }, align 16 + %a221 = alloca { ptr, i64, i64 }, align 16 + %a222 = 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 + %a238 = alloca { ptr, i64, i64 }, align 16 + %a248 = alloca { ptr, i64, i64 }, align 16 + %a249 = alloca { ptr, i64, i64 }, align 16 + %a250 = alloca { ptr, i64, i64 }, align 16 + %a252 = alloca { ptr, i64, i64 }, align 16 + %a268 = alloca %S.gen.Loop, align 16 + %a269 = alloca %S.gen.Loop, align 16 + %a271 = alloca %S.gen.Loop, align 16 + %a279 = alloca { ptr, i64, i64 }, align 16 + %a280 = 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 + %a296 = 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 11 %t4 = load i64, ptr %t3 %t5 = load ptr, ptr %a1 %t6 = icmp eq ptr %t5, null - br i1 %t6, label %panic4612, label %ok4613 -panic4612: - call void @finch_panic(ptr @.str.2972, i64 2031, ptr @.str.2973) + br i1 %t6, label %panic4846, label %ok4847 +panic4846: + call void @finch_panic(ptr @.str.3062, i64 2186, ptr @.str.3063) unreachable -ok4613: - %t7 = getelementptr inbounds %S.gen.Gen, ptr %t5, i32 0, i32 35 +ok4847: + %t7 = getelementptr inbounds %S.gen.Gen, ptr %t5, i32 0, i32 36 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 %panic4614, label %ok4615 -panic4614: - call void @finch_panic(ptr @.str.2974, i64 2032, ptr @.str.2975) + br i1 %t11, label %panic4848, label %ok4849 +panic4848: + call void @finch_panic(ptr @.str.3064, i64 2187, ptr @.str.3065) unreachable -ok4615: - %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 36 +ok4849: + %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 37 store i64 %t9, ptr %t12 %t13 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 %t14 = load { ptr, i64, i64 }, ptr %t13 @@ -42381,447 +49315,521 @@ ok4615: 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.2976, i64 5, i64 0 }, ptr %a21 + store { ptr, i64, i64 } { ptr @.str.3066, 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 %then4616, label %else4617 -then4616: + br i1 %t23, label %then4850, label %else4851 +then4850: %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 %endif4618 -else4617: + br label %endif4852 +else4851: %t26 = load { ptr, i64, i64 }, ptr %a18 store { ptr, i64, i64 } %t26, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.2977, i64 4, i64 0 }, ptr %a28 + store { ptr, i64, i64 } { ptr @.str.3067, 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 %then4619, label %else4620 -then4619: + br i1 %t30, label %then4853, label %else4854 +then4853: %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 %endif4621 -else4620: + br label %endif4855 +else4854: %t33 = load { ptr, i64, i64 }, ptr %a18 store { ptr, i64, i64 } %t33, ptr %a34 - store { ptr, i64, i64 } { ptr @.str.2978, i64 6, i64 0 }, ptr %a35 + store { ptr, i64, i64 } { ptr @.str.3068, 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 %then4622, label %else4623 -then4622: + br i1 %t37, label %then4856, label %else4857 +then4856: %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 %endif4624 -else4623: + br label %endif4858 +else4857: %t40 = load { ptr, i64, i64 }, ptr %a18 store { ptr, i64, i64 } %t40, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.2979, i64 4, i64 0 }, ptr %a42 + store { ptr, i64, i64 } { ptr @.str.3069, 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 %then4625, label %else4626 -then4625: + br i1 %t44, label %then4859, label %else4860 +then4859: %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 %range4628, label %inrange4629 -range4628: - call void @finch_panic_index(ptr @.str.2980, i64 2041, i64 0, i64 %t47) + br i1 %t48, label %range4862, label %inrange4863 +range4862: + call void @finch_panic_index(ptr @.str.3070, i64 2196, i64 0, i64 %t47) unreachable -inrange4629: +inrange4863: %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.2981, i64 2, i64 0 }, ptr %a54 + store { ptr, i64, i64 } { ptr @.str.3071, 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 %then4630, label %else4631 -then4630: + br i1 %t56, label %then4864, label %else4865 +then4864: %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 %range4633, label %inrange4634 -range4633: - call void @finch_panic_index(ptr @.str.2982, i64 2042, i64 0, i64 %t60) + %t58 = load ptr, ptr %a1 + %t59 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t60 = load { ptr, i64, i64 }, ptr %t59 + %t61 = extractvalue { ptr, i64, i64 } %t60, 1 + %t62 = icmp uge i64 0, %t61 + br i1 %t62, label %range4867, label %inrange4868 +range4867: + call void @finch_panic_index(ptr @.str.3072, i64 2197, i64 0, i64 %t61) unreachable -inrange4634: - %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 %endif4632 -else4631: - %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 %range4635, label %inrange4636 -range4635: - call void @finch_panic_index(ptr @.str.2983, i64 2044, i64 0, i64 %t69) +inrange4868: + %t63 = extractvalue { ptr, i64, i64 } %t60, 0 + %t64 = getelementptr inbounds %S.ast.Node, ptr %t63, i64 0 + %t65 = load %S.ast.Node, ptr %t64 + %t66 = call %S.gen.Val @finch.gen.orElse(ptr %t58, %S.ast.Node %t65, i1 true) + call void @finch.gen.release(ptr %t57, %S.gen.Val %t66) + store %S.gen.Val %t66, ptr %a67 + call void @finch.drop.S_gen_Val(ptr %a67) + br label %endif4866 +else4865: + %t68 = load ptr, ptr %a1 + %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 0, %t72 + br i1 %t73, label %range4869, label %inrange4870 +range4869: + call void @finch_panic_index(ptr @.str.3073, i64 2199, i64 0, i64 %t72) unreachable -inrange4636: - %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 %endif4632 -endif4632: - br label %endif4627 -else4626: - %t75 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t75, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.2984, 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 %then4637, label %else4638 -then4637: - %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 %endif4639 -else4638: - %t83 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t83, ptr %a84 - store { ptr, i64, i64 } { ptr @.str.2985, 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 %then4640, label %else4641 -then4640: - %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 %endif4642 -else4641: - %t90 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t90, ptr %a91 - store { ptr, i64, i64 } { ptr @.str.2986, 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 %then4643, label %else4644 -then4643: - %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 %endif4645 -else4644: - %t97 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t97, ptr %a98 - store { ptr, i64, i64 } { ptr @.str.2987, 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 %then4646, label %else4647 -then4646: - %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 %endif4648 -else4647: - %t104 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t104, ptr %a105 - store { ptr, i64, i64 } { ptr @.str.2988, 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 %then4649, label %else4650 -then4649: - %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 %endif4651 -else4650: - %t111 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t111, ptr %a112 - store { ptr, i64, i64 } { ptr @.str.2989, 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 %then4652, label %else4653 -then4652: - %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 %endif4654 -else4653: - %t118 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t118, ptr %a119 - store { ptr, i64, i64 } { ptr @.str.2990, 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 %then4655, label %else4656 -then4655: - %t123 = load ptr, ptr %a1 - %t124 = icmp eq ptr %t123, null - br i1 %t124, label %panic4658, label %ok4659 -panic4658: - call void @finch_panic(ptr @.str.2991, i64 2059, ptr @.str.2992) - unreachable -ok4659: - %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 %then4660, label %endif4662 -then4660: +inrange4870: + %t74 = extractvalue { ptr, i64, i64 } %t71, 0 + %t75 = getelementptr inbounds %S.ast.Node, ptr %t74, i64 0 + %t76 = load %S.ast.Node, ptr %t75 + %t77 = call %S.gen.Val @finch.gen.expr(ptr %t69, %S.ast.Node %t76) + call void @finch.gen.release(ptr %t68, %S.gen.Val %t77) + store %S.gen.Val %t77, ptr %a78 + call void @finch.drop.S_gen_Val(ptr %a78) + br label %endif4866 +endif4866: + br label %endif4861 +else4860: + %t79 = load { ptr, i64, i64 }, ptr %a18 + store { ptr, i64, i64 } %t79, ptr %a80 + store { ptr, i64, i64 } { ptr @.str.3074, i64 5, i64 0 }, ptr %a81 + %t82 = call i32 @finch_str_eq(ptr %a80, ptr %a81) + %t83 = icmp ne i32 %t82, 0 + br i1 %t83, label %then4871, label %else4872 +then4871: + %t84 = load ptr, ptr %a1 + %t85 = load %S.ast.Node, ptr %a2 + %t86 = call %S.gen.Val @finch.gen.matchGen(ptr %t84, %S.ast.Node %t85, i1 false) + store %S.gen.Val %t86, ptr %a87 + call void @finch.drop.S_gen_Val(ptr %a87) + br label %endif4873 +else4872: + %t88 = load { ptr, i64, i64 }, ptr %a18 + store { ptr, i64, i64 } %t88, ptr %a89 + store { ptr, i64, i64 } { ptr @.str.3075, i64 2, i64 0 }, ptr %a90 + %t91 = call i32 @finch_str_eq(ptr %a89, ptr %a90) + %t92 = icmp ne i32 %t91, 0 + br i1 %t92, label %then4874, label %else4875 +then4874: + %t93 = load ptr, ptr %a1 + %t94 = load %S.ast.Node, ptr %a2 + call void @finch.gen.ifStmt(ptr %t93, %S.ast.Node %t94) + br label %endif4876 +else4875: + %t95 = load { ptr, i64, i64 }, ptr %a18 + store { ptr, i64, i64 } %t95, ptr %a96 + store { ptr, i64, i64 } { ptr @.str.3076, i64 5, i64 0 }, ptr %a97 + %t98 = call i32 @finch_str_eq(ptr %a96, ptr %a97) + %t99 = icmp ne i32 %t98, 0 + br i1 %t99, label %then4877, label %else4878 +then4877: + %t100 = load ptr, ptr %a1 + %t101 = load %S.ast.Node, ptr %a2 + call void @finch.gen.whileStmt(ptr %t100, %S.ast.Node %t101) + br label %endif4879 +else4878: + %t102 = load { ptr, i64, i64 }, ptr %a18 + store { ptr, i64, i64 } %t102, ptr %a103 + store { ptr, i64, i64 } { ptr @.str.3077, 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 %then4880, label %else4881 +then4880: + %t107 = load ptr, ptr %a1 + %t108 = load %S.ast.Node, ptr %a2 + call void @finch.gen.forStmt(ptr %t107, %S.ast.Node %t108) + br label %endif4882 +else4881: + %t109 = load { ptr, i64, i64 }, ptr %a18 + store { ptr, i64, i64 } %t109, ptr %a110 + store { ptr, i64, i64 } { ptr @.str.3078, 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 %then4883, label %else4884 +then4883: + %t114 = load ptr, ptr %a1 + %t115 = load %S.ast.Node, ptr %a2 + call void @finch.gen.eachStmt(ptr %t114, %S.ast.Node %t115) + br label %endif4885 +else4884: + %t116 = load { ptr, i64, i64 }, ptr %a18 + store { ptr, i64, i64 } %t116, ptr %a117 + store { ptr, i64, i64 } { ptr @.str.3079, 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 %then4886, label %else4887 +then4886: + %t121 = load ptr, ptr %a1 + %t122 = load %S.ast.Node, ptr %a2 + call void @finch.gen.returnStmt(ptr %t121, %S.ast.Node %t122) + br label %endif4888 +else4887: + %t123 = load { ptr, i64, i64 }, ptr %a18 + store { ptr, i64, i64 } %t123, ptr %a124 + store { ptr, i64, i64 } { ptr @.str.3080, i64 5, i64 0 }, ptr %a125 + %t126 = call i32 @finch_str_eq(ptr %a124, ptr %a125) + %t127 = icmp ne i32 %t126, 0 + br i1 %t127, label %then4889, label %else4890 +then4889: %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.2993, i64 33, i64 0 }) - br label %endif4662 -endif4662: - %t130 = load ptr, ptr %a1 - %t131 = icmp eq ptr %t130, null - br i1 %t131, label %panic4663, label %ok4664 -panic4663: - call void @finch_panic(ptr @.str.2994, i64 2062, ptr @.str.2995) + %t129 = icmp eq ptr %t128, null + br i1 %t129, label %panic4892, label %ok4893 +panic4892: + call void @finch_panic(ptr @.str.3081, i64 2214, ptr @.str.3082) unreachable -ok4664: - %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 - %t135 = sub i64 %t134, 1 - store i64 %t135, ptr %a136 - %t137 = load ptr, ptr %a1 - %t138 = icmp eq ptr %t137, null - br i1 %t138, label %panic4665, label %ok4666 -panic4665: - call void @finch_panic(ptr @.str.2996, i64 2063, ptr @.str.2997) +ok4893: + %t130 = getelementptr inbounds %S.gen.Gen, ptr %t128, i32 0, i32 45 + %t131 = load i64, ptr %t130 + %t132 = icmp sgt i64 %t131, 0 + br i1 %t132, label %then4894, label %endif4896 +then4894: + %t133 = load ptr, ptr %a1 + %t134 = load %S.ast.Node, ptr %a2 + call void @finch.gen.fail(ptr %t133, %S.ast.Node %t134, { ptr, i64, i64 } { ptr @.str.3083, i64 33, i64 0 }) + br label %endif4896 +endif4896: + %t135 = load ptr, ptr %a1 + %t136 = icmp eq ptr %t135, null + br i1 %t136, label %panic4897, label %ok4898 +panic4897: + call void @finch_panic(ptr @.str.3084, i64 2217, ptr @.str.3085) unreachable -ok4666: - %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 %range4667, label %inrange4668 -range4667: - call void @finch_panic_index(ptr @.str.2998, i64 2063, i64 %t140, i64 %t142) +ok4898: + %t137 = getelementptr inbounds %S.gen.Gen, ptr %t135, i32 0, i32 10 + %t138 = getelementptr inbounds { ptr, i64, i64 }, ptr %t137, i32 0, i32 1 + %t139 = load i64, ptr %t138 + %t140 = sub i64 %t139, 1 + store i64 %t140, ptr %a141 + %t142 = load ptr, ptr %a1 + %t143 = icmp eq ptr %t142, null + br i1 %t143, label %panic4899, label %ok4900 +panic4899: + call void @finch_panic(ptr @.str.3086, i64 2218, ptr @.str.3087) unreachable -inrange4668: - %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 - %t147 = getelementptr inbounds { ptr, i64, i64 }, ptr %t146, i32 0, i32 1 - %t148 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t149 = load { ptr, i64, i64 }, ptr %t148 - %t150 = extractvalue { ptr, i64, i64 } %t149, 1 - %t151 = icmp uge i64 0, %t150 - br i1 %t151, label %range4669, label %inrange4670 -range4669: - call void @finch_panic_index(ptr @.str.2999, i64 2063, i64 0, i64 %t150) +ok4900: + %t144 = getelementptr inbounds %S.gen.Gen, ptr %t142, i32 0, i32 10 + %t145 = load i64, ptr %a141 + %t146 = load { ptr, i64, i64 }, ptr %t144 + %t147 = extractvalue { ptr, i64, i64 } %t146, 1 + %t148 = icmp uge i64 %t145, %t147 + br i1 %t148, label %range4901, label %inrange4902 +range4901: + call void @finch_panic_index(ptr @.str.3088, i64 2218, i64 %t145, i64 %t147) unreachable -inrange4670: - %t152 = extractvalue { ptr, i64, i64 } %t149, 0 - %t153 = getelementptr inbounds %S.ast.Node, ptr %t152, i64 0 - %t154 = load %S.ast.Node, ptr %t153 - store %S.ast.Node %t154, ptr %a155 - call void @finch.copy.S_ast_Node(ptr %a156, ptr %a155) - %t157 = load %S.ast.Node, ptr %a156 - %t158 = load i64, ptr %t147 - %t159 = add i64 %t158, 1 - call void @finch_arr_reserve(ptr %t146, i64 %t159, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t160 = load ptr, ptr %t146 - %t161 = getelementptr inbounds %S.ast.Node, ptr %t160, i64 %t158 - store %S.ast.Node %t157, ptr %t161 - store i64 %t159, ptr %t147 - %t162 = load ptr, ptr %a1 - %t163 = icmp eq ptr %t162, null - br i1 %t163, label %panic4671, label %ok4672 -panic4671: - call void @finch_panic(ptr @.str.3000, i64 2064, ptr @.str.3001) +inrange4902: + %t149 = extractvalue { ptr, i64, i64 } %t146, 0 + %t150 = getelementptr inbounds %S.gen.Scope, ptr %t149, i64 %t145 + %t151 = getelementptr inbounds %S.gen.Scope, ptr %t150, i32 0, i32 3 + %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %t151, i32 0, i32 1 + %t153 = insertvalue %S.gen.Cleanup zeroinitializer, i1 true, 0 + %t154 = load ptr, ptr %a1 + %t155 = icmp eq ptr %t154, null + br i1 %t155, label %panic4903, label %ok4904 +panic4903: + call void @finch_panic(ptr @.str.3089, i64 2218, ptr @.str.3090) unreachable -ok4672: - %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 %range4673, label %inrange4674 -range4673: - call void @finch_panic_index(ptr @.str.3002, i64 2064, i64 %t165, i64 %t167) +ok4904: + %t156 = getelementptr inbounds %S.gen.Gen, ptr %t154, i32 0, i32 10 + %t157 = load i64, ptr %a141 + %t158 = load { ptr, i64, i64 }, ptr %t156 + %t159 = extractvalue { ptr, i64, i64 } %t158, 1 + %t160 = icmp uge i64 %t157, %t159 + br i1 %t160, label %range4905, label %inrange4906 +range4905: + call void @finch_panic_index(ptr @.str.3091, i64 2218, i64 %t157, i64 %t159) unreachable -inrange4674: - %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 %panic4675, label %ok4676 -panic4675: - call void @finch_panic(ptr @.str.3003, i64 2064, ptr @.str.3004) +inrange4906: + %t161 = extractvalue { ptr, i64, i64 } %t158, 0 + %t162 = getelementptr inbounds %S.gen.Scope, ptr %t161, i64 %t157 + %t163 = getelementptr inbounds %S.gen.Scope, ptr %t162, i32 0, i32 1 + %t164 = getelementptr inbounds { ptr, i64, i64 }, ptr %t163, i32 0, i32 1 + %t165 = load i64, ptr %t164 + %t166 = insertvalue %S.gen.Cleanup %t153, i64 %t165, 1 + %t167 = load i64, ptr %t152 + %t168 = add i64 %t167, 1 + call void @finch_arr_reserve(ptr %t151, i64 %t168, i64 ptrtoint (ptr getelementptr (%S.gen.Cleanup, ptr null, i32 1) to i64)) + %t169 = load ptr, ptr %t151 + %t170 = getelementptr inbounds %S.gen.Cleanup, ptr %t169, i64 %t167 + store %S.gen.Cleanup %t166, ptr %t170 + store i64 %t168, ptr %t152 + %t171 = load ptr, ptr %a1 + %t172 = icmp eq ptr %t171, null + br i1 %t172, label %panic4907, label %ok4908 +panic4907: + call void @finch_panic(ptr @.str.3092, i64 2219, ptr @.str.3093) unreachable -ok4676: - %t175 = getelementptr inbounds %S.gen.Gen, ptr %t173, i32 0, i32 23 - %t176 = load i64, ptr %t175 - %t177 = load i64, ptr %t172 - %t178 = add i64 %t177, 1 - call void @finch_arr_reserve(ptr %t171, i64 %t178, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t179 = load ptr, ptr %t171 - %t180 = getelementptr inbounds i64, ptr %t179, i64 %t177 - store i64 %t176, ptr %t180 - store i64 %t178, ptr %t172 - br label %endif4657 -else4656: - %t181 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t181, ptr %a182 - store { ptr, i64, i64 } { ptr @.str.3005, 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.from4677 -logic.from4677: - br i1 %t185, label %logic.end4679, label %logic.rhs4678 -logic.rhs4678: - %t186 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t186, ptr %a187 - store { ptr, i64, i64 } { ptr @.str.3006, 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.rend4680 -logic.rend4680: - br label %logic.end4679 -logic.end4679: - %t191 = phi i1 [ true, %logic.from4677 ], [ %t190, %logic.rend4680 ] - br i1 %t191, label %then4681, label %else4682 -then4681: - %t192 = load ptr, ptr %a1 - %t193 = icmp eq ptr %t192, null - br i1 %t193, label %panic4684, label %ok4685 -panic4684: - call void @finch_panic(ptr @.str.3007, i64 2066, ptr @.str.3008) +ok4908: + %t173 = getelementptr inbounds %S.gen.Gen, ptr %t171, i32 0, i32 10 + %t174 = load i64, ptr %a141 + %t175 = load { ptr, i64, i64 }, ptr %t173 + %t176 = extractvalue { ptr, i64, i64 } %t175, 1 + %t177 = icmp uge i64 %t174, %t176 + br i1 %t177, label %range4909, label %inrange4910 +range4909: + call void @finch_panic_index(ptr @.str.3094, i64 2219, i64 %t174, i64 %t176) unreachable -ok4685: - %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 %then4686, label %endif4688 -then4686: - %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.3009, 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 %endif4688 -endif4688: - %t204 = load ptr, ptr %a1 - %t205 = icmp eq ptr %t204, null - br i1 %t205, label %panic4689, label %ok4690 -panic4689: - call void @finch_panic(ptr @.str.3010, i64 2069, ptr @.str.3011) +inrange4910: + %t178 = extractvalue { ptr, i64, i64 } %t175, 0 + %t179 = getelementptr inbounds %S.gen.Scope, ptr %t178, i64 %t174 + %t180 = getelementptr inbounds %S.gen.Scope, ptr %t179, i32 0, i32 1 + %t181 = getelementptr inbounds { ptr, i64, i64 }, ptr %t180, i32 0, i32 1 + %t182 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t183 = load { ptr, i64, i64 }, ptr %t182 + %t184 = extractvalue { ptr, i64, i64 } %t183, 1 + %t185 = icmp uge i64 0, %t184 + br i1 %t185, label %range4911, label %inrange4912 +range4911: + call void @finch_panic_index(ptr @.str.3095, i64 2219, i64 0, i64 %t184) unreachable -ok4690: - %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 %then4691, label %endif4693 -then4691: - %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.3012, 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 %endif4693 -endif4693: - %t217 = load ptr, ptr %a1 - %t218 = icmp eq ptr %t217, null - br i1 %t218, label %panic4694, label %ok4695 -panic4694: - call void @finch_panic(ptr @.str.3013, i64 2072, ptr @.str.3014) +inrange4912: + %t186 = extractvalue { ptr, i64, i64 } %t183, 0 + %t187 = getelementptr inbounds %S.ast.Node, ptr %t186, i64 0 + %t188 = load %S.ast.Node, ptr %t187 + store %S.ast.Node %t188, ptr %a189 + call void @finch.copy.S_ast_Node(ptr %a190, ptr %a189) + %t191 = load %S.ast.Node, ptr %a190 + %t192 = load i64, ptr %t181 + %t193 = add i64 %t192, 1 + call void @finch_arr_reserve(ptr %t180, i64 %t193, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t194 = load ptr, ptr %t180 + %t195 = getelementptr inbounds %S.ast.Node, ptr %t194, i64 %t192 + store %S.ast.Node %t191, ptr %t195 + store i64 %t193, ptr %t181 + %t196 = load ptr, ptr %a1 + %t197 = icmp eq ptr %t196, null + br i1 %t197, label %panic4913, label %ok4914 +panic4913: + call void @finch_panic(ptr @.str.3096, i64 2220, ptr @.str.3097) unreachable -ok4695: - %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 %panic4696, label %ok4697 -panic4696: - call void @finch_panic(ptr @.str.3015, i64 2072, ptr @.str.3016) +ok4914: + %t198 = getelementptr inbounds %S.gen.Gen, ptr %t196, i32 0, i32 10 + %t199 = load i64, ptr %a141 + %t200 = load { ptr, i64, i64 }, ptr %t198 + %t201 = extractvalue { ptr, i64, i64 } %t200, 1 + %t202 = icmp uge i64 %t199, %t201 + br i1 %t202, label %range4915, label %inrange4916 +range4915: + call void @finch_panic_index(ptr @.str.3098, i64 2220, i64 %t199, i64 %t201) unreachable -ok4697: - %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 - %t225 = sub i64 %t224, 1 - %t226 = load { ptr, i64, i64 }, ptr %t219 - %t227 = extractvalue { ptr, i64, i64 } %t226, 1 - %t228 = icmp uge i64 %t225, %t227 - br i1 %t228, label %range4698, label %inrange4699 -range4698: - call void @finch_panic_index(ptr @.str.3017, i64 2072, i64 %t225, i64 %t227) +inrange4916: + %t203 = extractvalue { ptr, i64, i64 } %t200, 0 + %t204 = getelementptr inbounds %S.gen.Scope, ptr %t203, i64 %t199 + %t205 = getelementptr inbounds %S.gen.Scope, ptr %t204, i32 0, i32 2 + %t206 = getelementptr inbounds { ptr, i64, i64 }, ptr %t205, i32 0, i32 1 + %t207 = load ptr, ptr %a1 + %t208 = icmp eq ptr %t207, null + br i1 %t208, label %panic4917, label %ok4918 +panic4917: + call void @finch_panic(ptr @.str.3099, i64 2220, ptr @.str.3100) unreachable -inrange4699: - %t229 = extractvalue { ptr, i64, i64 } %t226, 0 - %t230 = getelementptr inbounds %S.gen.Loop, ptr %t229, i64 %t225 - %t231 = load %S.gen.Loop, ptr %t230 - store %S.gen.Loop %t231, ptr %a232 - call void @finch.copy.S_gen_Loop(ptr %a233, ptr %a232) - %t234 = load %S.gen.Loop, ptr %a233 - store %S.gen.Loop %t234, ptr %a235 - %t236 = load ptr, ptr %a1 - %t237 = getelementptr inbounds %S.gen.Loop, ptr %a235, i32 0, i32 2 - %t238 = load i64, ptr %t237 - 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.3018, 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 %then4700, label %else4701 -then4700: - %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 %endif4702 -else4701: - %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 %endif4702 -endif4702: - br label %endif4683 -else4682: - %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.3019, 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 %endif4683 -endif4683: - br label %endif4657 -endif4657: - br label %endif4654 -endif4654: - br label %endif4651 -endif4651: - br label %endif4648 -endif4648: - br label %endif4645 -endif4645: - br label %endif4642 -endif4642: - br label %endif4639 -endif4639: - br label %endif4627 -endif4627: - br label %endif4624 -endif4624: - br label %endif4621 -endif4621: - br label %endif4618 -endif4618: +ok4918: + %t209 = getelementptr inbounds %S.gen.Gen, ptr %t207, i32 0, i32 24 + %t210 = load i64, ptr %t209 + %t211 = load i64, ptr %t206 + %t212 = add i64 %t211, 1 + call void @finch_arr_reserve(ptr %t205, i64 %t212, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) + %t213 = load ptr, ptr %t205 + %t214 = getelementptr inbounds i64, ptr %t213, i64 %t211 + store i64 %t210, ptr %t214 + store i64 %t212, ptr %t206 + br label %endif4891 +else4890: + %t215 = load { ptr, i64, i64 }, ptr %a18 + store { ptr, i64, i64 } %t215, ptr %a216 + store { ptr, i64, i64 } { ptr @.str.3101, i64 5, i64 0 }, ptr %a217 + %t218 = call i32 @finch_str_eq(ptr %a216, ptr %a217) + %t219 = icmp ne i32 %t218, 0 + br label %logic.from4919 +logic.from4919: + br i1 %t219, label %logic.end4921, label %logic.rhs4920 +logic.rhs4920: + %t220 = load { ptr, i64, i64 }, ptr %a18 + store { ptr, i64, i64 } %t220, ptr %a221 + store { ptr, i64, i64 } { ptr @.str.3102, i64 8, i64 0 }, ptr %a222 + %t223 = call i32 @finch_str_eq(ptr %a221, ptr %a222) + %t224 = icmp ne i32 %t223, 0 + br label %logic.rend4922 +logic.rend4922: + br label %logic.end4921 +logic.end4921: + %t225 = phi i1 [ true, %logic.from4919 ], [ %t224, %logic.rend4922 ] + br i1 %t225, label %then4923, label %else4924 +then4923: + %t226 = load ptr, ptr %a1 + %t227 = icmp eq ptr %t226, null + br i1 %t227, label %panic4926, label %ok4927 +panic4926: + call void @finch_panic(ptr @.str.3103, i64 2222, ptr @.str.3104) + unreachable +ok4927: + %t228 = getelementptr inbounds %S.gen.Gen, ptr %t226, i32 0, i32 45 + %t229 = load i64, ptr %t228 + %t230 = icmp sgt i64 %t229, 0 + br i1 %t230, label %then4928, label %endif4930 +then4928: + %t231 = load ptr, ptr %a1 + %t232 = load %S.ast.Node, ptr %a2 + %t233 = load { ptr, i64, i64 }, ptr %a18 + store { ptr, i64, i64 } %t233, ptr %a235 + store { ptr, i64, i64 } { ptr @.str.3105, i64 27, i64 0 }, ptr %a236 + call void @finch_str_concat(ptr %a234, ptr %a235, ptr %a236) + %t237 = load { ptr, i64, i64 }, ptr %a234 + call void @finch.gen.fail(ptr %t231, %S.ast.Node %t232, { ptr, i64, i64 } %t237) + store { ptr, i64, i64 } %t237, ptr %a238 + call void @finch_str_drop(ptr %a238) + br label %endif4930 +endif4930: + %t239 = load ptr, ptr %a1 + %t240 = icmp eq ptr %t239, null + br i1 %t240, label %panic4931, label %ok4932 +panic4931: + call void @finch_panic(ptr @.str.3106, i64 2225, ptr @.str.3107) + unreachable +ok4932: + %t241 = getelementptr inbounds %S.gen.Gen, ptr %t239, i32 0, i32 12 + %t242 = getelementptr inbounds { ptr, i64, i64 }, ptr %t241, i32 0, i32 1 + %t243 = load i64, ptr %t242 + %t244 = icmp eq i64 %t243, 0 + br i1 %t244, label %then4933, label %endif4935 +then4933: + %t245 = load ptr, ptr %a1 + %t246 = load %S.ast.Node, ptr %a2 + %t247 = load { ptr, i64, i64 }, ptr %a18 + store { ptr, i64, i64 } %t247, ptr %a249 + store { ptr, i64, i64 } { ptr @.str.3108, i64 31, i64 0 }, ptr %a250 + call void @finch_str_concat(ptr %a248, ptr %a249, ptr %a250) + %t251 = load { ptr, i64, i64 }, ptr %a248 + call void @finch.gen.fail(ptr %t245, %S.ast.Node %t246, { ptr, i64, i64 } %t251) + store { ptr, i64, i64 } %t251, ptr %a252 + call void @finch_str_drop(ptr %a252) + br label %endif4935 +endif4935: + %t253 = load ptr, ptr %a1 + %t254 = icmp eq ptr %t253, null + br i1 %t254, label %panic4936, label %ok4937 +panic4936: + call void @finch_panic(ptr @.str.3109, i64 2228, ptr @.str.3110) + unreachable +ok4937: + %t255 = getelementptr inbounds %S.gen.Gen, ptr %t253, i32 0, i32 12 + %t256 = load ptr, ptr %a1 + %t257 = icmp eq ptr %t256, null + br i1 %t257, label %panic4938, label %ok4939 +panic4938: + call void @finch_panic(ptr @.str.3111, i64 2228, ptr @.str.3112) + unreachable +ok4939: + %t258 = getelementptr inbounds %S.gen.Gen, ptr %t256, i32 0, i32 12 + %t259 = getelementptr inbounds { ptr, i64, i64 }, ptr %t258, i32 0, i32 1 + %t260 = load i64, ptr %t259 + %t261 = sub i64 %t260, 1 + %t262 = load { ptr, i64, i64 }, ptr %t255 + %t263 = extractvalue { ptr, i64, i64 } %t262, 1 + %t264 = icmp uge i64 %t261, %t263 + br i1 %t264, label %range4940, label %inrange4941 +range4940: + call void @finch_panic_index(ptr @.str.3113, i64 2228, i64 %t261, i64 %t263) + unreachable +inrange4941: + %t265 = extractvalue { ptr, i64, i64 } %t262, 0 + %t266 = getelementptr inbounds %S.gen.Loop, ptr %t265, i64 %t261 + %t267 = load %S.gen.Loop, ptr %t266 + store %S.gen.Loop %t267, ptr %a268 + call void @finch.copy.S_gen_Loop(ptr %a269, ptr %a268) + %t270 = load %S.gen.Loop, ptr %a269 + store %S.gen.Loop %t270, ptr %a271 + %t272 = load ptr, ptr %a1 + %t273 = getelementptr inbounds %S.gen.Loop, ptr %a271, i32 0, i32 3 + %t274 = load i64, ptr %t273 + call void @finch.gen.dropPending(ptr %t272, i64 %t274) + %t275 = load ptr, ptr %a1 + %t276 = getelementptr inbounds %S.gen.Loop, ptr %a271, i32 0, i32 2 + %t277 = load i64, ptr %t276 + call void @finch.gen.unwind(ptr %t275, i64 %t277) + %t278 = load { ptr, i64, i64 }, ptr %a18 + store { ptr, i64, i64 } %t278, ptr %a279 + store { ptr, i64, i64 } { ptr @.str.3114, i64 5, i64 0 }, ptr %a280 + %t281 = call i32 @finch_str_eq(ptr %a279, ptr %a280) + %t282 = icmp ne i32 %t281, 0 + br i1 %t282, label %then4942, label %else4943 +then4942: + %t283 = load ptr, ptr %a1 + %t284 = getelementptr inbounds %S.gen.Loop, ptr %a271, i32 0, i32 1 + %t285 = load { ptr, i64, i64 }, ptr %t284 + call void @finch.gen.br(ptr %t283, { ptr, i64, i64 } %t285) + br label %endif4944 +else4943: + %t286 = load ptr, ptr %a1 + %t287 = getelementptr inbounds %S.gen.Loop, ptr %a271, i32 0, i32 0 + %t288 = load { ptr, i64, i64 }, ptr %t287 + call void @finch.gen.br(ptr %t286, { ptr, i64, i64 } %t288) + br label %endif4944 +endif4944: + call void @finch.drop.S_gen_Loop(ptr %a271) + br label %endif4925 +else4924: + %t289 = load ptr, ptr %a1 + %t290 = load %S.ast.Node, ptr %a2 + %t291 = load { ptr, i64, i64 }, ptr %a18 + store { ptr, i64, i64 } { ptr @.str.3115, i64 18, i64 0 }, ptr %a293 + store { ptr, i64, i64 } %t291, ptr %a294 + call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) + %t295 = load { ptr, i64, i64 }, ptr %a292 + call void @finch.gen.fail(ptr %t289, %S.ast.Node %t290, { ptr, i64, i64 } %t295) + store { ptr, i64, i64 } %t295, ptr %a296 + call void @finch_str_drop(ptr %a296) + br label %endif4925 +endif4925: + br label %endif4891 +endif4891: + br label %endif4888 +endif4888: + br label %endif4885 +endif4885: + br label %endif4882 +endif4882: + br label %endif4879 +endif4879: + br label %endif4876 +endif4876: + br label %endif4873 +endif4873: + br label %endif4861 +endif4861: + br label %endif4858 +endif4858: + br label %endif4855 +endif4855: + br label %endif4852 +endif4852: + call void @finch_str_drop(ptr %a18) ret void } @@ -42840,36 +49848,48 @@ entry: %a52 = alloca { ptr, i64, i64 }, align 16 %a53 = alloca { ptr, i64, i64 }, align 16 %a54 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca %S.ast.Type, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca %S.gen.Val, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca %S.gen.Val, align 16 + %a55 = alloca { ptr, i64, i64 }, align 16 + %a57 = alloca { ptr, i64, i64 }, align 16 + %a68 = alloca { ptr, i64, i64 }, align 16 + %a69 = alloca { ptr, i64, i64 }, align 16 + %a75 = alloca %S.ast.Type, align 16 + %a82 = alloca { ptr, i64, i64 }, align 16 + %a83 = alloca { ptr, i64, i64 }, align 16 + %a90 = alloca { ptr, i64, i64 }, align 16 + %a91 = alloca { ptr, i64, i64 }, align 16 + %a103 = alloca %S.gen.Val, align 16 + %a112 = alloca { ptr, i64, i64 }, align 16 + %a121 = alloca { ptr, i64, i64 }, align 16 + %a122 = 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 + %a148 = 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 + %a154 = alloca %S.gen.Val, align 16 + %a155 = alloca { ptr, i64, i64 }, align 16 + %a156 = alloca %S.gen.Val, align 16 + %a166 = alloca { ptr, i64, i64 }, align 16 + %a167 = 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 6 %t4 = load i1, ptr %t3 %t5 = xor i1 %t4, true - br i1 %t5, label %then4703, label %endif4705 -then4703: + br i1 %t5, label %then4945, label %endif4947 +then4945: %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 %range4706, label %inrange4707 -range4706: - call void @finch_panic_index(ptr @.str.3020, i64 2086, i64 0, i64 %t9) + br i1 %t10, label %range4948, label %inrange4949 +range4948: + call void @finch_panic_index(ptr @.str.3116, i64 2243, i64 0, i64 %t9) unreachable -inrange4707: +inrange4949: %t11 = extractvalue { ptr, i64, i64 } %t8, 0 %t12 = getelementptr inbounds %S.ast.Node, ptr %t11, i64 0 %t13 = load %S.ast.Node, ptr %t12 @@ -42879,190 +49899,222 @@ inrange4707: %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.3021, i64 4, i64 0 }, ptr %a20 + store { ptr, i64, i64 } { ptr @.str.3117, 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 %then4708, label %endif4710 -then4708: + br i1 %t22, label %then4950, label %endif4952 +then4950: %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 %range4711, label %inrange4712 -range4711: - call void @finch_panic_index(ptr @.str.3022, i64 2088, i64 0, i64 %t26) + br i1 %t27, label %range4953, label %inrange4954 +range4953: + call void @finch_panic_index(ptr @.str.3118, i64 2245, i64 0, i64 %t26) unreachable -inrange4712: +inrange4954: %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.3023, i64 46, i64 0 }) - br label %endif4710 -endif4710: + call void @finch.gen.fail(ptr %t23, %S.ast.Node %t30, { ptr, i64, i64 } { ptr @.str.3119, i64 46, i64 0 }) + br label %endif4952 +endif4952: %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.3024, i64 4, i64 0 }, ptr %a35 + store { ptr, i64, i64 } { ptr @.str.3120, 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 %then4713, label %endif4715 -then4713: + br i1 %t37, label %then4955, label %endif4957 +then4955: %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 %range4716, label %inrange4717 -range4716: - call void @finch_panic_index(ptr @.str.3025, i64 2091, i64 0, i64 %t41) + br i1 %t42, label %range4958, label %inrange4959 +range4958: + call void @finch_panic_index(ptr @.str.3121, i64 2248, i64 0, i64 %t41) unreachable -inrange4717: +inrange4959: %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.3026, i64 34, i64 0 }, ptr %a49 + store { ptr, i64, i64 } { ptr @.str.3122, 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.3027, i64 7, i64 0 }, ptr %a54 + store { ptr, i64, i64 } { ptr @.str.3123, 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 %endif4715 -endif4715: - %t56 = load ptr, ptr %a1 - %t57 = load %S.ast.Node, ptr %a2 - %t58 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t59 = load { ptr, i64, i64 }, ptr %t58 - %t60 = getelementptr inbounds %S.gen.Val, ptr %a15, i32 0, i32 1 - %t61 = load %S.ast.Type, ptr %t60 - %t62 = load ptr, ptr %a1 - %t63 = load %S.gen.Val, ptr %a15 - %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) + store { ptr, i64, i64 } %t51, ptr %a55 + call void @finch_str_drop(ptr %a55) + %t56 = load { ptr, i64, i64 }, ptr %a52 + call void @finch.gen.fail(ptr %t38, %S.ast.Node %t45, { ptr, i64, i64 } %t56) + store { ptr, i64, i64 } %t56, ptr %a57 + call void @finch_str_drop(ptr %a57) + br label %endif4957 +endif4957: + %t58 = load ptr, ptr %a1 + %t59 = load %S.ast.Node, ptr %a2 + %t60 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t61 = load { ptr, i64, i64 }, ptr %t60 + %t62 = getelementptr inbounds %S.gen.Val, ptr %a15, i32 0, i32 1 + %t63 = load %S.ast.Type, ptr %t62 + %t64 = load ptr, ptr %a1 + %t65 = load %S.gen.Val, ptr %a15 + %t66 = call { ptr, i64, i64 } @finch.gen.own(ptr %t64, %S.gen.Val %t65) + %t67 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t58, %S.ast.Node %t59, { ptr, i64, i64 } %t61, %S.ast.Type %t63, { ptr, i64, i64 } %t66, i1 false, i1 true) + store { ptr, i64, i64 } %t66, ptr %a68 + call void @finch_str_drop(ptr %a68) + store { ptr, i64, i64 } %t67, ptr %a69 + call void @finch_str_drop(ptr %a69) + call void @finch.drop.S_gen_Val(ptr %a15) ret void -endif4705: - %t66 = load ptr, ptr %a1 - %t67 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5 - %t68 = load %S.ast.Type, ptr %t67 - %t69 = load %S.ast.Node, ptr %a2 - %t70 = call %S.ast.Type @finch.gen.resolve(ptr %t66, %S.ast.Type %t68, %S.ast.Node %t69) - store %S.ast.Type %t70, ptr %a71 - %t72 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %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 %then4718, label %endif4720 -then4718: - %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.3028, 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.from4721 -logic.from4721: - br i1 %t81, label %logic.rhs4722, label %logic.end4723 -logic.rhs4722: - %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.rend4724 -logic.rend4724: - br label %logic.end4723 -logic.end4723: - %t85 = phi i1 [ false, %logic.from4721 ], [ %t84, %logic.rend4724 ] - br i1 %t85, label %then4725, label %endif4727 -then4725: - store { ptr, i64, i64 } zeroinitializer, ptr %a86 - store { ptr, i64, i64 } zeroinitializer, ptr %a87 - %t88 = load ptr, ptr %a1 - %t89 = load ptr, ptr %a1 - %t90 = getelementptr inbounds %S.ast.Type, ptr %a71, i32 0, i32 3 - %t91 = load { ptr, i64, i64 }, ptr %t90 - %t92 = getelementptr inbounds %S.ast.Type, ptr %a71, i32 0, i32 2 - %t93 = load { ptr, i64, i64 }, ptr %t92 - %t94 = call i64 @finch.gen.findStruct(ptr %t89, { ptr, i64, i64 } %t91, { ptr, i64, i64 } %t93) - %t95 = load { ptr, i64, i64 }, ptr %a86 - %t96 = load { ptr, i64, i64 }, ptr %a87 - %t97 = load %S.ast.Node, ptr %a2 - %t98 = call %S.gen.Val @finch.gen.construct(ptr %t88, i64 %t94, { ptr, i64, i64 } %t95, { ptr, i64, i64 } %t96, %S.ast.Node %t97) - store %S.gen.Val %t98, ptr %a99 - %t100 = load ptr, ptr %a1 +endif4947: + %t70 = load ptr, ptr %a1 + %t71 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5 + %t72 = load %S.ast.Type, ptr %t71 + %t73 = load %S.ast.Node, ptr %a2 + %t74 = call %S.ast.Type @finch.gen.resolve(ptr %t70, %S.ast.Type %t72, %S.ast.Node %t73) + store %S.ast.Type %t74, ptr %a75 + %t76 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t77 = getelementptr inbounds { ptr, i64, i64 }, ptr %t76, i32 0, i32 1 + %t78 = load i64, ptr %t77 + %t79 = icmp eq i64 %t78, 0 + br i1 %t79, label %then4960, label %endif4962 +then4960: + %t80 = getelementptr inbounds %S.ast.Type, ptr %a75, i32 0, i32 0 + %t81 = load { ptr, i64, i64 }, ptr %t80 + store { ptr, i64, i64 } %t81, ptr %a82 + store { ptr, i64, i64 } { ptr @.str.3124, i64 6, i64 0 }, ptr %a83 + %t84 = call i32 @finch_str_eq(ptr %a82, ptr %a83) + %t85 = icmp ne i32 %t84, 0 + br label %logic.from4963 +logic.from4963: + br i1 %t85, label %logic.rhs4964, label %logic.end4965 +logic.rhs4964: + %t86 = load ptr, ptr %a1 + %t87 = load %S.ast.Type, ptr %a75 + %t88 = call i1 @finch.gen.hasDefaults(ptr %t86, %S.ast.Type %t87) + br label %logic.rend4966 +logic.rend4966: + br label %logic.end4965 +logic.end4965: + %t89 = phi i1 [ false, %logic.from4963 ], [ %t88, %logic.rend4966 ] + br i1 %t89, label %then4967, label %endif4969 +then4967: + store { ptr, i64, i64 } zeroinitializer, ptr %a90 + store { ptr, i64, i64 } zeroinitializer, ptr %a91 + %t92 = load ptr, ptr %a1 + %t93 = load ptr, ptr %a1 + %t94 = getelementptr inbounds %S.ast.Type, ptr %a75, i32 0, i32 3 + %t95 = load { ptr, i64, i64 }, ptr %t94 + %t96 = getelementptr inbounds %S.ast.Type, ptr %a75, i32 0, i32 2 + %t97 = load { ptr, i64, i64 }, ptr %t96 + %t98 = call i64 @finch.gen.findStruct(ptr %t93, { ptr, i64, i64 } %t95, { ptr, i64, i64 } %t97) + %t99 = load { ptr, i64, i64 }, ptr %a90 + %t100 = load { ptr, i64, i64 }, ptr %a91 %t101 = load %S.ast.Node, ptr %a2 - %t102 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t103 = load { ptr, i64, i64 }, ptr %t102 - %t104 = load %S.ast.Type, ptr %a71 - %t105 = getelementptr inbounds %S.gen.Val, ptr %a99, i32 0, i32 0 - %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) + %t102 = call %S.gen.Val @finch.gen.construct(ptr %t92, i64 %t98, { ptr, i64, i64 } %t99, { ptr, i64, i64 } %t100, %S.ast.Node %t101) + store %S.gen.Val %t102, ptr %a103 + %t104 = load ptr, ptr %a1 + %t105 = load %S.ast.Node, ptr %a2 + %t106 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t107 = load { ptr, i64, i64 }, ptr %t106 + %t108 = load %S.ast.Type, ptr %a75 + %t109 = getelementptr inbounds %S.gen.Val, ptr %a103, i32 0, i32 0 + %t110 = load { ptr, i64, i64 }, ptr %t109 + %t111 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t104, %S.ast.Node %t105, { ptr, i64, i64 } %t107, %S.ast.Type %t108, { ptr, i64, i64 } %t110, i1 false, i1 true) + store { ptr, i64, i64 } %t111, ptr %a112 + call void @finch_str_drop(ptr %a112) + call void @finch.drop.S_gen_Val(ptr %a103) + call void @finch.drop.arr_str(ptr %a91) + call void @finch.drop.arr_S_ast_Node(ptr %a90) + call void @finch.drop.S_ast_Type(ptr %a75) ret void -endif4727: - %t108 = load ptr, ptr %a1 - %t109 = load %S.ast.Node, ptr %a2 - %t110 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t111 = load { ptr, i64, i64 }, ptr %t110 - %t112 = load %S.ast.Type, ptr %a71 - %t113 = load %S.ast.Type, ptr %a71 - %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) +endif4969: + %t113 = load ptr, ptr %a1 + %t114 = load %S.ast.Node, ptr %a2 + %t115 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t116 = load { ptr, i64, i64 }, ptr %t115 + %t117 = load %S.ast.Type, ptr %a75 + %t118 = load %S.ast.Type, ptr %a75 + %t119 = call { ptr, i64, i64 } @finch.gen.zeroOf(%S.ast.Type %t118) + %t120 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t113, %S.ast.Node %t114, { ptr, i64, i64 } %t116, %S.ast.Type %t117, { ptr, i64, i64 } %t119, i1 false, i1 true) + store { ptr, i64, i64 } %t119, ptr %a121 + call void @finch_str_drop(ptr %a121) + store { ptr, i64, i64 } %t120, ptr %a122 + call void @finch_str_drop(ptr %a122) + call void @finch.drop.S_ast_Type(ptr %a75) ret void -endif4720: - %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 %range4728, label %inrange4729 -range4728: - call void @finch_panic_index(ptr @.str.3029, i64 2108, i64 0, i64 %t120) +endif4962: + %t123 = load ptr, ptr %a1 + %t124 = load ptr, ptr %a1 + %t125 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t126 = load { ptr, i64, i64 }, ptr %t125 + %t127 = extractvalue { ptr, i64, i64 } %t126, 1 + %t128 = icmp uge i64 0, %t127 + br i1 %t128, label %range4970, label %inrange4971 +range4970: + call void @finch_panic_index(ptr @.str.3125, i64 2265, i64 0, i64 %t127) unreachable -inrange4729: - %t122 = extractvalue { ptr, i64, i64 } %t119, 0 - %t123 = getelementptr inbounds %S.ast.Node, ptr %t122, i64 0 - %t124 = load %S.ast.Node, ptr %t123 - %t125 = load %S.ast.Type, ptr %a71 - %t126 = call %S.gen.Val @finch.gen.exprWant(ptr %t117, %S.ast.Node %t124, %S.ast.Type %t125) - %t127 = load %S.ast.Type, ptr %a71 - %t128 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t129 = load { ptr, i64, i64 }, ptr %t128 - %t130 = extractvalue { ptr, i64, i64 } %t129, 1 - %t131 = icmp uge i64 0, %t130 - br i1 %t131, label %range4730, label %inrange4731 -range4730: - call void @finch_panic_index(ptr @.str.3030, i64 2108, i64 0, i64 %t130) - unreachable -inrange4731: - %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 +inrange4971: + %t129 = extractvalue { ptr, i64, i64 } %t126, 0 + %t130 = getelementptr inbounds %S.ast.Node, ptr %t129, i64 0 + %t131 = load %S.ast.Node, ptr %t130 + %t132 = load %S.ast.Type, ptr %a75 + %t133 = call %S.gen.Val @finch.gen.exprWant(ptr %t124, %S.ast.Node %t131, %S.ast.Type %t132) + %t134 = load %S.ast.Type, ptr %a75 + %t135 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t136 = load { ptr, i64, i64 }, ptr %t135 - store { ptr, i64, i64 } { ptr @.str.3031, 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.3032, 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) - store %S.gen.Val %t145, ptr %a146 - %t147 = load ptr, ptr %a1 - %t148 = load %S.ast.Node, ptr %a2 - %t149 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t150 = load { ptr, i64, i64 }, ptr %t149 - %t151 = load %S.ast.Type, ptr %a71 - %t152 = load ptr, ptr %a1 - %t153 = load %S.gen.Val, ptr %a146 - %t154 = call { ptr, i64, i64 } @finch.gen.own(ptr %t152, %S.gen.Val %t153) - %t155 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t147, %S.ast.Node %t148, { ptr, i64, i64 } %t150, %S.ast.Type %t151, { ptr, i64, i64 } %t154, i1 false) + %t137 = extractvalue { ptr, i64, i64 } %t136, 1 + %t138 = icmp uge i64 0, %t137 + br i1 %t138, label %range4972, label %inrange4973 +range4972: + call void @finch_panic_index(ptr @.str.3126, i64 2265, i64 0, i64 %t137) + unreachable +inrange4973: + %t139 = extractvalue { ptr, i64, i64 } %t136, 0 + %t140 = getelementptr inbounds %S.ast.Node, ptr %t139, i64 0 + %t141 = load %S.ast.Node, ptr %t140 + %t142 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t143 = load { ptr, i64, i64 }, ptr %t142 + store { ptr, i64, i64 } { ptr @.str.3127, i64 1, i64 0 }, ptr %a145 + store { ptr, i64, i64 } %t143, ptr %a146 + 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.3128, i64 1, i64 0 }, ptr %a150 + call void @finch_str_concat(ptr %a148, ptr %a149, ptr %a150) + store { ptr, i64, i64 } %t147, ptr %a151 + call void @finch_str_drop(ptr %a151) + %t152 = load { ptr, i64, i64 }, ptr %a148 + %t153 = call %S.gen.Val @finch.gen.coerce(ptr %t123, %S.gen.Val %t133, %S.ast.Type %t134, %S.ast.Node %t141, { ptr, i64, i64 } %t152) + store %S.gen.Val %t133, ptr %a154 + call void @finch.drop.S_gen_Val(ptr %a154) + store { ptr, i64, i64 } %t152, ptr %a155 + call void @finch_str_drop(ptr %a155) + store %S.gen.Val %t153, ptr %a156 + %t157 = load ptr, ptr %a1 + %t158 = load %S.ast.Node, ptr %a2 + %t159 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t160 = load { ptr, i64, i64 }, ptr %t159 + %t161 = load %S.ast.Type, ptr %a75 + %t162 = load ptr, ptr %a1 + %t163 = load %S.gen.Val, ptr %a156 + %t164 = call { ptr, i64, i64 } @finch.gen.own(ptr %t162, %S.gen.Val %t163) + %t165 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t157, %S.ast.Node %t158, { ptr, i64, i64 } %t160, %S.ast.Type %t161, { ptr, i64, i64 } %t164, i1 false, i1 true) + store { ptr, i64, i64 } %t164, ptr %a166 + call void @finch_str_drop(ptr %a166) + store { ptr, i64, i64 } %t165, ptr %a167 + call void @finch_str_drop(ptr %a167) + call void @finch.drop.S_gen_Val(ptr %a156) + call void @finch.drop.S_ast_Type(ptr %a75) ret void } @@ -43079,12 +50131,12 @@ entry: store %S.ast.Type %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic4732, label %ok4733 -panic4732: - call void @finch_panic(ptr @.str.3033, i64 2113, ptr @.str.3034) + br i1 %t4, label %panic4974, label %ok4975 +panic4974: + call void @finch_panic(ptr @.str.3129, i64 2270, ptr @.str.3130) unreachable -ok4733: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 15 +ok4975: + %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 16 %t6 = load ptr, ptr %a1 %t7 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 %t8 = load { ptr, i64, i64 }, ptr %t7 @@ -43094,11 +50146,11 @@ ok4733: %t12 = load { ptr, i64, i64 }, ptr %t5 %t13 = extractvalue { ptr, i64, i64 } %t12, 1 %t14 = icmp uge i64 %t11, %t13 - br i1 %t14, label %range4734, label %inrange4735 -range4734: - call void @finch_panic_index(ptr @.str.3035, i64 2113, i64 %t11, i64 %t13) + br i1 %t14, label %range4976, label %inrange4977 +range4976: + call void @finch_panic_index(ptr @.str.3131, i64 2270, i64 %t11, i64 %t13) unreachable -inrange4735: +inrange4977: %t15 = extractvalue { ptr, i64, i64 } %t12, 0 %t16 = getelementptr inbounds %S.gen.StructDef, ptr %t15, i64 %t11 %t17 = load %S.gen.StructDef, ptr %t16 @@ -43108,28 +50160,29 @@ inrange4735: 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 %then4736, label %endif4738 -then4736: + br i1 %t23, label %then4978, label %endif4980 +then4978: + call void @finch.drop.S_gen_StructDef(ptr %a21) ret i1 false -endif4738: +endif4980: %t24 = load ptr, ptr %a1 %t25 = icmp eq ptr %t24, null - br i1 %t25, label %panic4739, label %ok4740 -panic4739: - call void @finch_panic(ptr @.str.3036, i64 2117, ptr @.str.3037) + br i1 %t25, label %panic4981, label %ok4982 +panic4981: + call void @finch_panic(ptr @.str.3132, i64 2274, ptr @.str.3133) unreachable -ok4740: +ok4982: %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 %range4741, label %inrange4742 -range4741: - call void @finch_panic_index(ptr @.str.3038, i64 2117, i64 %t28, i64 %t30) + br i1 %t31, label %range4983, label %inrange4984 +range4983: + call void @finch_panic_index(ptr @.str.3134, i64 2274, i64 %t28, i64 %t30) unreachable -inrange4742: +inrange4984: %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 @@ -43138,23 +50191,23 @@ inrange4742: %t37 = load { ptr, i64, i64 }, ptr %t34 %t38 = extractvalue { ptr, i64, i64 } %t37, 1 %t39 = icmp uge i64 %t36, %t38 - br i1 %t39, label %range4743, label %inrange4744 -range4743: - call void @finch_panic_index(ptr @.str.3039, i64 2117, i64 %t36, i64 %t38) + br i1 %t39, label %range4985, label %inrange4986 +range4985: + call void @finch_panic_index(ptr @.str.3135, i64 2274, i64 %t36, i64 %t38) unreachable -inrange4744: +inrange4986: %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.cond4745 -each.cond4745: + br label %each.cond4987 +each.cond4987: %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.body4746, label %each.end4748 -each.body4746: + br i1 %t47, label %each.body4988, label %each.end4990 +each.body4988: %t48 = load ptr, ptr %t42 %t49 = getelementptr inbounds %S.ast.Node, ptr %t48, i64 %t46 %t50 = load %S.ast.Node, ptr %t49 @@ -43163,20 +50216,32 @@ each.body4746: %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 %then4749, label %endif4751 -then4749: + br i1 %t55, label %then4991, label %endif4993 +then4991: + call void @finch.drop.S_gen_StructDef(ptr %a21) ret i1 true -endif4751: - br label %each.step4747 -each.step4747: +endif4993: + br label %each.step4989 +each.step4989: %t56 = load i64, ptr %a43 %t57 = add i64 %t56, 1 store i64 %t57, ptr %a43 - br label %each.cond4745 -each.end4748: + br label %each.cond4987 +each.end4990: + call void @finch.drop.S_gen_StructDef(ptr %a21) ret i1 false } +define internal void @finch.drop.S_gen_Place(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.gen.Place, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.gen.Place, ptr %a, i32 0, i32 1 + call void @finch.drop.S_ast_Type(ptr %t2) + ret void +} + define internal void @finch.gen.assignStmt(ptr %p0, %S.ast.Node %p1) { entry: %a1 = alloca ptr, align 16 @@ -43194,51 +50259,83 @@ entry: %a40 = alloca { ptr, i64, i64 }, align 16 %a41 = alloca { ptr, i64, i64 }, align 16 %a42 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 + %a43 = alloca { ptr, i64, i64 }, align 16 %a46 = 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 - %a50 = alloca { ptr, i64, i64 }, align 16 %a51 = 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 + %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 + %a63 = alloca %S.gen.Var, align 16 %a68 = alloca { ptr, i64, i64 }, align 16 %a69 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 + %a70 = 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 %a75 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = 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 - %a89 = alloca { ptr, i64, i64 }, align 16 + %a82 = alloca { ptr, i64, i64 }, align 16 + %a86 = alloca { ptr, i64, i64 }, align 16 + %a87 = alloca { ptr, i64, i64 }, align 16 + %a88 = alloca { ptr, i64, i64 }, align 16 %a90 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca %S.gen.Val, align 16 - %a106 = alloca %S.gen.Place, align 16 - %a139 = alloca %S.gen.Val, align 16 - %a143 = alloca %S.gen.Place, align 16 - %a155 = alloca %S.ast.Type, align 16 - %a156 = alloca %S.ast.Type, align 16 - %a159 = alloca %S.gen.Val, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca %S.gen.Val, align 16 + %a91 = alloca { ptr, i64, i64 }, align 16 + %a92 = alloca { ptr, i64, i64 }, align 16 + %a93 = alloca { ptr, i64, i64 }, align 16 + %a96 = alloca { ptr, i64, i64 }, align 16 + %a99 = alloca { ptr, i64, i64 }, align 16 + %a100 = alloca { ptr, i64, i64 }, align 16 + %a104 = alloca %S.ast.Type, align 16 + %a105 = alloca i1, align 16 + %a108 = alloca { ptr, i64, i64 }, align 16 + %a109 = alloca { ptr, i64, i64 }, align 16 + %a115 = alloca i64, align 16 + %a122 = alloca %S.ast.Type, align 16 + %a123 = alloca %S.ast.Type, align 16 + %a125 = alloca %S.gen.Var, align 16 + %a127 = alloca %S.ast.Type, align 16 + %a128 = alloca %S.gen.Val, align 16 + %a141 = alloca %S.gen.Val, align 16 + %a152 = alloca %S.gen.Val, align 16 + %a158 = alloca i64, align 16 + %a164 = alloca %S.gen.Place, align 16 + %a179 = alloca %S.gen.Val, align 16 + %a183 = 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 + %a219 = alloca { ptr, i64, i64 }, align 16 + %a231 = alloca %S.gen.Val, align 16 + %a237 = alloca i64, align 16 + %a243 = alloca %S.gen.Place, align 16 + %a252 = alloca { ptr, i64, i64 }, align 16 + %a256 = alloca %S.ast.Type, align 16 + %a257 = alloca %S.ast.Type, align 16 + %a260 = alloca %S.gen.Val, align 16 + %a263 = alloca { ptr, i64, i64 }, align 16 + %a264 = alloca { ptr, i64, i64 }, align 16 + %a266 = alloca { ptr, i64, i64 }, align 16 + %a279 = alloca %S.gen.Val, align 16 + %a280 = alloca %S.gen.Val, align 16 + %a284 = alloca { ptr, i64, i64 }, align 16 + %a293 = 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 %range4752, label %inrange4753 -range4752: - call void @finch_panic_index(ptr @.str.3040, i64 2126, i64 0, i64 %t5) + br i1 %t6, label %range4994, label %inrange4995 +range4994: + call void @finch_panic_index(ptr @.str.3136, i64 2283, i64 0, i64 %t5) unreachable -inrange4753: +inrange4995: %t7 = extractvalue { ptr, i64, i64 } %t4, 0 %t8 = getelementptr inbounds %S.ast.Node, ptr %t7, i64 0 %t9 = load %S.ast.Node, ptr %t8 @@ -43252,232 +50349,435 @@ inrange4753: %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 %then4754, label %endif4756 -then4754: + br i1 %t19, label %then4996, label %endif4998 +then4996: %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.from4757 -logic.from4757: - br i1 %t25, label %logic.rhs4758, label %logic.end4759 -logic.rhs4758: + br label %logic.from4999 +logic.from4999: + br i1 %t25, label %logic.rhs5000, label %logic.end5001 +logic.rhs5000: %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.3041, i64 3, i64 0 }, ptr %a29 + store { ptr, i64, i64 } { ptr @.str.3137, 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.rend4760 -logic.rend4760: - br label %logic.end4759 -logic.end4759: - %t32 = phi i1 [ false, %logic.from4757 ], [ %t31, %logic.rend4760 ] - br i1 %t32, label %then4761, label %endif4763 -then4761: + br label %logic.rend5002 +logic.rend5002: + br label %logic.end5001 +logic.end5001: + %t32 = phi i1 [ false, %logic.from4999 ], [ %t31, %logic.rend5002 ] + br i1 %t32, label %then5003, label %endif5005 +then5003: %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.3042, i64 28, i64 0 }, ptr %a37 + store { ptr, i64, i64 } { ptr @.str.3138, 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.3043, i64 18, i64 0 }, ptr %a42 + store { ptr, i64, i64 } { ptr @.str.3139, 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 - store { ptr, i64, i64 } %t43, ptr %a46 + store { ptr, i64, i64 } %t39, ptr %a43 + call void @finch_str_drop(ptr %a43) + %t44 = load { ptr, i64, i64 }, ptr %a40 + %t45 = load { ptr, i64, i64 }, ptr %a16 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 - store { ptr, i64, i64 } %t48, ptr %a50 - store { ptr, i64, i64 } { ptr @.str.3044, 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 %endif4763 -endif4763: - %t53 = load i64, ptr %a23 - %t54 = icmp sge i64 %t53, 0 - br label %logic.from4764 -logic.from4764: - br i1 %t54, label %logic.rhs4765, label %logic.end4766 -logic.rhs4765: - %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.rend4767 -logic.rend4767: - br label %logic.end4766 -logic.end4766: - %t59 = phi i1 [ false, %logic.from4764 ], [ %t58, %logic.rend4767 ] - br i1 %t59, label %then4768, label %endif4770 -then4768: - %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.3045, 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.3046, 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 %endif4770 -endif4770: - br label %endif4756 -endif4756: - store { ptr, i64, i64 } { ptr @.str.3047, 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.3048, 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 %then4771, label %endif4773 -then4771: - %t78 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.3049, 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.3050, 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 %endif4773 -endif4773: - %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.3051, 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 %then4774, label %endif4776 -then4774: - %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 %range4777, label %inrange4778 -range4777: - call void @finch_panic_index(ptr @.str.3052, i64 2142, i64 1, i64 %t96) - unreachable -inrange4778: - %t98 = extractvalue { ptr, i64, i64 } %t95, 0 - %t99 = getelementptr inbounds %S.ast.Node, ptr %t98, i64 1 - %t100 = load %S.ast.Node, ptr %t99 - %t101 = call %S.gen.Val @finch.gen.expr(ptr %t93, %S.ast.Node %t100) - store %S.gen.Val %t101, ptr %a102 - %t103 = load ptr, ptr %a1 - %t104 = load %S.ast.Node, ptr %a13 - %t105 = call %S.gen.Place @finch.gen.place(ptr %t103, %S.ast.Node %t104, i1 true) - store %S.gen.Place %t105, ptr %a106 - %t107 = load ptr, ptr %a1 - %t108 = load %S.gen.Val, ptr %a102 - %t109 = getelementptr inbounds %S.gen.Place, ptr %a106, i32 0, i32 1 - %t110 = load %S.ast.Type, ptr %t109 - %t111 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t112 = load { ptr, i64, i64 }, ptr %t111 - %t113 = extractvalue { ptr, i64, i64 } %t112, 1 - %t114 = icmp uge i64 1, %t113 - br i1 %t114, label %range4779, label %inrange4780 -range4779: - call void @finch_panic_index(ptr @.str.3053, i64 2144, i64 1, i64 %t113) - unreachable -inrange4780: - %t115 = extractvalue { ptr, i64, i64 } %t112, 0 - %t116 = getelementptr inbounds %S.ast.Node, ptr %t115, i64 1 - %t117 = load %S.ast.Node, ptr %t116 - %t118 = load { ptr, i64, i64 }, ptr %a71 - %t119 = call %S.gen.Val @finch.gen.coerce(ptr %t107, %S.gen.Val %t108, %S.ast.Type %t110, %S.ast.Node %t117, { ptr, i64, i64 } %t118) - store %S.gen.Val %t119, ptr %a102 - %t120 = load ptr, ptr %a1 - %t121 = load ptr, ptr %a1 - %t122 = getelementptr inbounds %S.gen.Place, ptr %a106, i32 0, i32 1 - %t123 = load %S.ast.Type, ptr %t122 - %t124 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t121, %S.ast.Type %t123) - %t125 = load ptr, ptr %a1 - %t126 = load %S.gen.Val, ptr %a102 - %t127 = call { ptr, i64, i64 } @finch.gen.own(ptr %t125, %S.gen.Val %t126) - %t128 = getelementptr inbounds %S.gen.Place, ptr %a106, i32 0, i32 0 - %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 -endif4776: + store { ptr, i64, i64 } %t45, ptr %a48 + call void @finch_str_concat(ptr %a46, ptr %a47, ptr %a48) + store { ptr, i64, i64 } %t44, ptr %a49 + call void @finch_str_drop(ptr %a49) + %t50 = load { ptr, i64, i64 }, ptr %a46 + store { ptr, i64, i64 } %t50, ptr %a52 + store { ptr, i64, i64 } { ptr @.str.3140, i64 8, i64 0 }, ptr %a53 + call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) + store { ptr, i64, i64 } %t50, ptr %a54 + call void @finch_str_drop(ptr %a54) + %t55 = load { ptr, i64, i64 }, ptr %a51 + call void @finch.gen.fail(ptr %t33, %S.ast.Node %t34, { ptr, i64, i64 } %t55) + store { ptr, i64, i64 } %t55, ptr %a56 + call void @finch_str_drop(ptr %a56) + br label %endif5005 +endif5005: + %t57 = load i64, ptr %a23 + %t58 = icmp sge i64 %t57, 0 + br label %logic.from5006 +logic.from5006: + br i1 %t58, label %logic.rhs5007, label %logic.end5008 +logic.rhs5007: + %t59 = load ptr, ptr %a1 + %t60 = load i64, ptr %a23 + %t61 = call %S.gen.Var @finch.gen.varAt(ptr %t59, i64 %t60) + %t62 = extractvalue %S.gen.Var %t61, 3 + store %S.gen.Var %t61, ptr %a63 + call void @finch.drop.S_gen_Var(ptr %a63) + br label %logic.rend5009 +logic.rend5009: + br label %logic.end5008 +logic.end5008: + %t64 = phi i1 [ false, %logic.from5006 ], [ %t62, %logic.rend5009 ] + br i1 %t64, label %then5010, label %endif5012 +then5010: + %t65 = load ptr, ptr %a1 + %t66 = load %S.ast.Node, ptr %a2 + %t67 = load { ptr, i64, i64 }, ptr %a16 + store { ptr, i64, i64 } { ptr @.str.3141, i64 19, 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.3142, i64 18, i64 0 }, ptr %a74 + call void @finch_str_concat(ptr %a72, ptr %a73, ptr %a74) + store { ptr, i64, i64 } %t71, ptr %a75 + call void @finch_str_drop(ptr %a75) + %t76 = load { ptr, i64, i64 }, ptr %a72 + call void @finch.gen.fail(ptr %t65, %S.ast.Node %t66, { ptr, i64, i64 } %t76) + store { ptr, i64, i64 } %t76, ptr %a77 + call void @finch_str_drop(ptr %a77) + br label %endif5012 +endif5012: + br label %endif4998 +endif4998: + store { ptr, i64, i64 } { ptr @.str.3143, i64 9, i64 0 }, ptr %a78 + %t79 = getelementptr inbounds %S.ast.Node, ptr %a13, i32 0, i32 0 + %t80 = load { ptr, i64, i64 }, ptr %t79 + store { ptr, i64, i64 } %t80, ptr %a81 + store { ptr, i64, i64 } { ptr @.str.3144, i64 3, i64 0 }, ptr %a82 + %t83 = call i32 @finch_str_eq(ptr %a81, ptr %a82) + %t84 = icmp ne i32 %t83, 0 + br i1 %t84, label %then5013, label %endif5015 +then5013: + %t85 = load { ptr, i64, i64 }, ptr %a16 + store { ptr, i64, i64 } { ptr @.str.3145, i64 1, 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.3146, i64 1, i64 0 }, ptr %a92 + call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92) + store { ptr, i64, i64 } %t89, ptr %a93 + call void @finch_str_drop(ptr %a93) + %t94 = load { ptr, i64, i64 }, ptr %a90 + %t95 = load { ptr, i64, i64 }, ptr %a78 + store { ptr, i64, i64 } %t94, ptr %a78 + store { ptr, i64, i64 } %t95, ptr %a96 + call void @finch_str_drop(ptr %a96) + br label %endif5015 +endif5015: + %t97 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t98 = load { ptr, i64, i64 }, ptr %t97 + store { ptr, i64, i64 } %t98, ptr %a99 + store { ptr, i64, i64 } { ptr @.str.3147, i64 1, i64 0 }, ptr %a100 + %t101 = call i32 @finch_str_eq(ptr %a99, ptr %a100) + %t102 = icmp ne i32 %t101, 0 + br i1 %t102, label %then5016, label %endif5018 +then5016: + %t103 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3148, i64 4, i64 0 }) + store %S.ast.Type %t103, ptr %a104 + store i1 false, ptr %a105 + %t106 = getelementptr inbounds %S.ast.Node, ptr %a13, i32 0, i32 0 + %t107 = load { ptr, i64, i64 }, ptr %t106 + store { ptr, i64, i64 } %t107, ptr %a108 + store { ptr, i64, i64 } { ptr @.str.3149, i64 3, i64 0 }, ptr %a109 + %t110 = call i32 @finch_str_eq(ptr %a108, ptr %a109) + %t111 = icmp ne i32 %t110, 0 + br i1 %t111, label %then5019, label %endif5021 +then5019: + %t112 = load ptr, ptr %a1 + %t113 = load { ptr, i64, i64 }, ptr %a16 + %t114 = call i64 @finch.gen.lookup(ptr %t112, { ptr, i64, i64 } %t113) + store i64 %t114, ptr %a115 + %t116 = load i64, ptr %a115 + %t117 = icmp sge i64 %t116, 0 + br i1 %t117, label %then5022, label %endif5024 +then5022: + %t118 = load ptr, ptr %a1 + %t119 = load i64, ptr %a115 + %t120 = call %S.gen.Var @finch.gen.varAt(ptr %t118, i64 %t119) + %t121 = extractvalue %S.gen.Var %t120, 1 + store %S.ast.Type %t121, ptr %a122 + call void @finch.copy.S_ast_Type(ptr %a123, ptr %a122) + %t124 = load %S.ast.Type, ptr %a123 + store %S.gen.Var %t120, ptr %a125 + call void @finch.drop.S_gen_Var(ptr %a125) + %t126 = load %S.ast.Type, ptr %a104 + store %S.ast.Type %t124, ptr %a104 + store %S.ast.Type %t126, ptr %a127 + call void @finch.drop.S_ast_Type(ptr %a127) + store i1 true, ptr %a105 + br label %endif5024 +endif5024: + br label %endif5021 +endif5021: + store %S.gen.Val zeroinitializer, ptr %a128 + %t129 = load i1, ptr %a105 + br i1 %t129, label %then5025, label %else5026 +then5025: %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 %range4781, label %inrange4782 -range4781: - call void @finch_panic_index(ptr @.str.3054, i64 2148, i64 1, i64 %t133) + br i1 %t134, label %range5028, label %inrange5029 +range5028: + call void @finch_panic_index(ptr @.str.3150, i64 2311, i64 1, i64 %t133) unreachable -inrange4782: +inrange5029: %t135 = extractvalue { ptr, i64, i64 } %t132, 0 %t136 = getelementptr inbounds %S.ast.Node, ptr %t135, i64 1 %t137 = load %S.ast.Node, ptr %t136 - %t138 = call %S.gen.Val @finch.gen.expr(ptr %t130, %S.ast.Node %t137) - store %S.gen.Val %t138, ptr %a139 - %t140 = load ptr, ptr %a1 - %t141 = load %S.ast.Node, ptr %a13 - %t142 = call %S.gen.Place @finch.gen.place(ptr %t140, %S.ast.Node %t141, i1 true) - store %S.gen.Place %t142, ptr %a143 - %t144 = load ptr, ptr %a1 - %t145 = load ptr, ptr %a1 - %t146 = getelementptr inbounds %S.gen.Place, ptr %a143, i32 0, i32 1 - %t147 = load %S.ast.Type, ptr %t146 - %t148 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t145, %S.ast.Type %t147) - %t149 = getelementptr inbounds %S.gen.Place, ptr %a143, i32 0, i32 0 - %t150 = load { ptr, i64, i64 }, ptr %t149 - %t151 = call { ptr, i64, i64 } @finch.gen.load(ptr %t144, { ptr, i64, i64 } %t148, { ptr, i64, i64 } %t150) - %t152 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t151, 0 - %t153 = getelementptr inbounds %S.gen.Place, ptr %a143, i32 0, i32 1 - %t154 = load %S.ast.Type, ptr %t153 - store %S.ast.Type %t154, ptr %a155 - call void @finch.copy.S_ast_Type(ptr %a156, ptr %a155) - %t157 = load %S.ast.Type, ptr %a156 - %t158 = insertvalue %S.gen.Val %t152, %S.ast.Type %t157, 1 - store %S.gen.Val %t158, ptr %a159 - %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.3055, i64 2151) - %t164 = load { ptr, i64, i64 }, ptr %a163 - store { ptr, i64, i64 } %t164, ptr %a165 - %t166 = load ptr, ptr %a1 - %t167 = load ptr, ptr %a1 - %t168 = load { ptr, i64, i64 }, ptr %a165 - %t169 = load %S.gen.Val, ptr %a159 - %t170 = load %S.gen.Val, ptr %a139 - %t171 = load %S.ast.Node, ptr %a2 - %t172 = call %S.gen.Val @finch.gen.arith(ptr %t167, { ptr, i64, i64 } %t168, %S.gen.Val %t169, %S.gen.Val %t170, %S.ast.Node %t171) - %t173 = getelementptr inbounds %S.gen.Place, ptr %a143, i32 0, i32 1 - %t174 = load %S.ast.Type, ptr %t173 - %t175 = load %S.ast.Node, ptr %a2 - %t176 = load { ptr, i64, i64 }, ptr %a71 - %t177 = call %S.gen.Val @finch.gen.coerce(ptr %t166, %S.gen.Val %t172, %S.ast.Type %t174, %S.ast.Node %t175, { ptr, i64, i64 } %t176) - store %S.gen.Val %t177, ptr %a178 - %t179 = load ptr, ptr %a1 + %t138 = load %S.ast.Type, ptr %a104 + %t139 = call %S.gen.Val @finch.gen.exprWant(ptr %t130, %S.ast.Node %t137, %S.ast.Type %t138) + %t140 = load %S.gen.Val, ptr %a128 + store %S.gen.Val %t139, ptr %a128 + store %S.gen.Val %t140, ptr %a141 + call void @finch.drop.S_gen_Val(ptr %a141) + br label %endif5027 +else5026: + %t142 = load ptr, ptr %a1 + %t143 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t144 = load { ptr, i64, i64 }, ptr %t143 + %t145 = extractvalue { ptr, i64, i64 } %t144, 1 + %t146 = icmp uge i64 1, %t145 + br i1 %t146, label %range5030, label %inrange5031 +range5030: + call void @finch_panic_index(ptr @.str.3151, i64 2313, i64 1, i64 %t145) + unreachable +inrange5031: + %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.expr(ptr %t142, %S.ast.Node %t149) + %t151 = load %S.gen.Val, ptr %a128 + store %S.gen.Val %t150, ptr %a128 + store %S.gen.Val %t151, ptr %a152 + call void @finch.drop.S_gen_Val(ptr %a152) + br label %endif5027 +endif5027: + %t153 = load ptr, ptr %a1 + %t154 = icmp eq ptr %t153, null + br i1 %t154, label %panic5032, label %ok5033 +panic5032: + call void @finch_panic(ptr @.str.3152, i64 2315, ptr @.str.3153) + unreachable +ok5033: + %t155 = getelementptr inbounds %S.gen.Gen, ptr %t153, i32 0, i32 11 + %t156 = getelementptr inbounds { ptr, i64, i64 }, ptr %t155, i32 0, i32 1 + %t157 = load i64, ptr %t156 + store i64 %t157, ptr %a158 + %t159 = load ptr, ptr %a1 + %t160 = load %S.gen.Val, ptr %a128 + call void @finch.gen.hold(ptr %t159, %S.gen.Val %t160) + %t161 = load ptr, ptr %a1 + %t162 = load %S.ast.Node, ptr %a13 + %t163 = call %S.gen.Place @finch.gen.place(ptr %t161, %S.ast.Node %t162, i1 true) + store %S.gen.Place %t163, ptr %a164 + %t165 = load ptr, ptr %a1 + %t166 = load %S.gen.Val, ptr %a128 + %t167 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 1 + %t168 = load %S.ast.Type, ptr %t167 + %t169 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t170 = load { ptr, i64, i64 }, ptr %t169 + %t171 = extractvalue { ptr, i64, i64 } %t170, 1 + %t172 = icmp uge i64 1, %t171 + br i1 %t172, label %range5034, label %inrange5035 +range5034: + call void @finch_panic_index(ptr @.str.3154, i64 2318, i64 1, i64 %t171) + unreachable +inrange5035: + %t173 = extractvalue { ptr, i64, i64 } %t170, 0 + %t174 = getelementptr inbounds %S.ast.Node, ptr %t173, i64 1 + %t175 = load %S.ast.Node, ptr %t174 + %t176 = load { ptr, i64, i64 }, ptr %a78 + %t177 = call %S.gen.Val @finch.gen.coerce(ptr %t165, %S.gen.Val %t166, %S.ast.Type %t168, %S.ast.Node %t175, { ptr, i64, i64 } %t176) + %t178 = load %S.gen.Val, ptr %a128 + store %S.gen.Val %t177, ptr %a128 + store %S.gen.Val %t178, ptr %a179 + call void @finch.drop.S_gen_Val(ptr %a179) %t180 = load ptr, ptr %a1 - %t181 = getelementptr inbounds %S.gen.Place, ptr %a143, i32 0, i32 1 - %t182 = load %S.ast.Type, ptr %t181 - %t183 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t180, %S.ast.Type %t182) + %t181 = load %S.gen.Val, ptr %a128 + %t182 = call { ptr, i64, i64 } @finch.gen.own(ptr %t180, %S.gen.Val %t181) + store { ptr, i64, i64 } %t182, ptr %a183 %t184 = load ptr, ptr %a1 - %t185 = load %S.gen.Val, ptr %a178 - %t186 = call { ptr, i64, i64 } @finch.gen.own(ptr %t184, %S.gen.Val %t185) - %t187 = getelementptr inbounds %S.gen.Place, ptr %a143, i32 0, i32 0 - %t188 = load { ptr, i64, i64 }, ptr %t187 - call void @finch.gen.store(ptr %t179, { ptr, i64, i64 } %t183, { ptr, i64, i64 } %t186, { ptr, i64, i64 } %t188) + %t185 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 1 + %t186 = load %S.ast.Type, ptr %t185 + %t187 = call i1 @finch.gen.owning(ptr %t184, %S.ast.Type %t186) + br i1 %t187, label %then5036, label %else5037 +then5036: + %t188 = load ptr, ptr %a1 + %t189 = load ptr, ptr %a1 + %t190 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 1 + %t191 = load %S.ast.Type, ptr %t190 + %t192 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t189, %S.ast.Type %t191) + %t193 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 0 + %t194 = load { ptr, i64, i64 }, ptr %t193 + %t195 = call { ptr, i64, i64 } @finch.gen.load(ptr %t188, { ptr, i64, i64 } %t192, { ptr, i64, i64 } %t194) + store { ptr, i64, i64 } %t192, ptr %a196 + call void @finch_str_drop(ptr %a196) + store { ptr, i64, i64 } %t195, ptr %a197 + %t198 = load ptr, ptr %a1 + %t199 = load ptr, ptr %a1 + %t200 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 1 + %t201 = load %S.ast.Type, ptr %t200 + %t202 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t199, %S.ast.Type %t201) + %t203 = load { ptr, i64, i64 }, ptr %a183 + %t204 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 0 + %t205 = load { ptr, i64, i64 }, ptr %t204 + call void @finch.gen.store(ptr %t198, { ptr, i64, i64 } %t202, { ptr, i64, i64 } %t203, { ptr, i64, i64 } %t205) + store { ptr, i64, i64 } %t202, ptr %a206 + call void @finch_str_drop(ptr %a206) + %t207 = load ptr, ptr %a1 + %t208 = load { ptr, i64, i64 }, ptr %a197 + %t209 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 1 + %t210 = load %S.ast.Type, ptr %t209 + call void @finch.gen.dropValue(ptr %t207, { ptr, i64, i64 } %t208, %S.ast.Type %t210) + call void @finch_str_drop(ptr %a197) + br label %endif5038 +else5037: + %t211 = load ptr, ptr %a1 + %t212 = load ptr, ptr %a1 + %t213 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 1 + %t214 = load %S.ast.Type, ptr %t213 + %t215 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t212, %S.ast.Type %t214) + %t216 = load { ptr, i64, i64 }, ptr %a183 + %t217 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 0 + %t218 = load { ptr, i64, i64 }, ptr %t217 + call void @finch.gen.store(ptr %t211, { ptr, i64, i64 } %t215, { ptr, i64, i64 } %t216, { ptr, i64, i64 } %t218) + store { ptr, i64, i64 } %t215, ptr %a219 + call void @finch_str_drop(ptr %a219) + br label %endif5038 +endif5038: + %t220 = load ptr, ptr %a1 + %t221 = load i64, ptr %a158 + call void @finch.gen.heldEnd(ptr %t220, i64 %t221) + call void @finch_str_drop(ptr %a183) + call void @finch.drop.S_gen_Place(ptr %a164) + call void @finch.drop.S_gen_Val(ptr %a128) + call void @finch.drop.S_ast_Type(ptr %a104) + call void @finch_str_drop(ptr %a78) + call void @finch_str_drop(ptr %a16) + call void @finch.drop.S_ast_Node(ptr %a13) + ret void +endif5018: + %t222 = load ptr, ptr %a1 + %t223 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t224 = load { ptr, i64, i64 }, ptr %t223 + %t225 = extractvalue { ptr, i64, i64 } %t224, 1 + %t226 = icmp uge i64 1, %t225 + br i1 %t226, label %range5039, label %inrange5040 +range5039: + call void @finch_panic_index(ptr @.str.3155, i64 2330, i64 1, i64 %t225) + unreachable +inrange5040: + %t227 = extractvalue { ptr, i64, i64 } %t224, 0 + %t228 = getelementptr inbounds %S.ast.Node, ptr %t227, i64 1 + %t229 = load %S.ast.Node, ptr %t228 + %t230 = call %S.gen.Val @finch.gen.expr(ptr %t222, %S.ast.Node %t229) + store %S.gen.Val %t230, ptr %a231 + %t232 = load ptr, ptr %a1 + %t233 = icmp eq ptr %t232, null + br i1 %t233, label %panic5041, label %ok5042 +panic5041: + call void @finch_panic(ptr @.str.3156, i64 2331, ptr @.str.3157) + unreachable +ok5042: + %t234 = getelementptr inbounds %S.gen.Gen, ptr %t232, i32 0, i32 11 + %t235 = getelementptr inbounds { ptr, i64, i64 }, ptr %t234, i32 0, i32 1 + %t236 = load i64, ptr %t235 + store i64 %t236, ptr %a237 + %t238 = load ptr, ptr %a1 + %t239 = load %S.gen.Val, ptr %a231 + call void @finch.gen.hold(ptr %t238, %S.gen.Val %t239) + %t240 = load ptr, ptr %a1 + %t241 = load %S.ast.Node, ptr %a13 + %t242 = call %S.gen.Place @finch.gen.place(ptr %t240, %S.ast.Node %t241, i1 true) + store %S.gen.Place %t242, ptr %a243 + %t244 = load ptr, ptr %a1 + %t245 = load ptr, ptr %a1 + %t246 = getelementptr inbounds %S.gen.Place, ptr %a243, i32 0, i32 1 + %t247 = load %S.ast.Type, ptr %t246 + %t248 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t245, %S.ast.Type %t247) + %t249 = getelementptr inbounds %S.gen.Place, ptr %a243, i32 0, i32 0 + %t250 = load { ptr, i64, i64 }, ptr %t249 + %t251 = call { ptr, i64, i64 } @finch.gen.load(ptr %t244, { ptr, i64, i64 } %t248, { ptr, i64, i64 } %t250) + store { ptr, i64, i64 } %t248, ptr %a252 + call void @finch_str_drop(ptr %a252) + %t253 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t251, 0 + %t254 = getelementptr inbounds %S.gen.Place, ptr %a243, i32 0, i32 1 + %t255 = load %S.ast.Type, ptr %t254 + store %S.ast.Type %t255, ptr %a256 + call void @finch.copy.S_ast_Type(ptr %a257, ptr %a256) + %t258 = load %S.ast.Type, ptr %a257 + %t259 = insertvalue %S.gen.Val %t253, %S.ast.Type %t258, 1 + store %S.gen.Val %t259, ptr %a260 + %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 %a263 + call void @finch_str_sub(ptr %a264, ptr %a263, i64 0, i64 1, ptr @.str.3158, i64 2335) + %t265 = load { ptr, i64, i64 }, ptr %a264 + store { ptr, i64, i64 } %t265, ptr %a266 + %t267 = load ptr, ptr %a1 + %t268 = load ptr, ptr %a1 + %t269 = load { ptr, i64, i64 }, ptr %a266 + %t270 = load %S.gen.Val, ptr %a260 + %t271 = load %S.gen.Val, ptr %a231 + %t272 = load %S.ast.Node, ptr %a2 + %t273 = call %S.gen.Val @finch.gen.arith(ptr %t268, { ptr, i64, i64 } %t269, %S.gen.Val %t270, %S.gen.Val %t271, %S.ast.Node %t272) + %t274 = getelementptr inbounds %S.gen.Place, ptr %a243, i32 0, i32 1 + %t275 = load %S.ast.Type, ptr %t274 + %t276 = load %S.ast.Node, ptr %a2 + %t277 = load { ptr, i64, i64 }, ptr %a78 + %t278 = call %S.gen.Val @finch.gen.coerce(ptr %t267, %S.gen.Val %t273, %S.ast.Type %t275, %S.ast.Node %t276, { ptr, i64, i64 } %t277) + store %S.gen.Val %t273, ptr %a279 + call void @finch.drop.S_gen_Val(ptr %a279) + store %S.gen.Val %t278, ptr %a280 + %t281 = load ptr, ptr %a1 + %t282 = load %S.gen.Val, ptr %a280 + %t283 = call { ptr, i64, i64 } @finch.gen.own(ptr %t281, %S.gen.Val %t282) + store { ptr, i64, i64 } %t283, ptr %a284 + %t285 = load ptr, ptr %a1 + %t286 = load ptr, ptr %a1 + %t287 = getelementptr inbounds %S.gen.Place, ptr %a243, i32 0, i32 1 + %t288 = load %S.ast.Type, ptr %t287 + %t289 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t286, %S.ast.Type %t288) + %t290 = load { ptr, i64, i64 }, ptr %a284 + %t291 = getelementptr inbounds %S.gen.Place, ptr %a243, i32 0, i32 0 + %t292 = load { ptr, i64, i64 }, ptr %t291 + call void @finch.gen.store(ptr %t285, { ptr, i64, i64 } %t289, { ptr, i64, i64 } %t290, { ptr, i64, i64 } %t292) + store { ptr, i64, i64 } %t289, ptr %a293 + call void @finch_str_drop(ptr %a293) + %t294 = load ptr, ptr %a1 + %t295 = getelementptr inbounds %S.gen.Place, ptr %a243, i32 0, i32 1 + %t296 = load %S.ast.Type, ptr %t295 + %t297 = call i1 @finch.gen.owning(ptr %t294, %S.ast.Type %t296) + br i1 %t297, label %then5043, label %endif5045 +then5043: + %t298 = load ptr, ptr %a1 + %t299 = getelementptr inbounds %S.gen.Val, ptr %a260, i32 0, i32 0 + %t300 = load { ptr, i64, i64 }, ptr %t299 + %t301 = getelementptr inbounds %S.gen.Place, ptr %a243, i32 0, i32 1 + %t302 = load %S.ast.Type, ptr %t301 + call void @finch.gen.dropValue(ptr %t298, { ptr, i64, i64 } %t300, %S.ast.Type %t302) + br label %endif5045 +endif5045: + %t303 = load ptr, ptr %a1 + %t304 = load i64, ptr %a237 + call void @finch.gen.heldEnd(ptr %t303, i64 %t304) + call void @finch_str_drop(ptr %a284) + call void @finch.drop.S_gen_Val(ptr %a280) + call void @finch_str_drop(ptr %a266) + call void @finch.drop.S_gen_Val(ptr %a260) + call void @finch.drop.S_gen_Place(ptr %a243) + call void @finch.drop.S_gen_Val(ptr %a231) + call void @finch_str_drop(ptr %a78) + call void @finch_str_drop(ptr %a16) + call void @finch.drop.S_ast_Node(ptr %a13) ret void } @@ -43485,22 +50785,31 @@ define internal { ptr, i64, i64 } @finch.gen.condition(ptr %p0, %S.ast.Node %p1) entry: %a1 = alloca ptr, align 16 %a2 = alloca %S.ast.Node, align 16 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca %S.gen.Val, align 16 + %a11 = alloca %S.ast.Type, align 16 + %a13 = alloca { ptr, i64, i64 }, align 16 + %a14 = alloca { ptr, i64, i64 }, align 16 + %a16 = alloca %S.gen.Val, align 16 store ptr %p0, ptr %a1 store %S.ast.Node %p1, ptr %a2 %t3 = load ptr, ptr %a1 %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.3056, i64 4, i64 0 }) + %t7 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3159, 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.3057, 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) - %t13 = load { ptr, i64, i64 }, ptr %a12 - ret { ptr, i64, i64 } %t13 + %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.3160, i64 11, i64 0 }) + store %S.gen.Val %t6, ptr %a10 + call void @finch.drop.S_gen_Val(ptr %a10) + store %S.ast.Type %t7, ptr %a11 + call void @finch.drop.S_ast_Type(ptr %a11) + %t12 = extractvalue %S.gen.Val %t9, 0 + store { ptr, i64, i64 } %t12, ptr %a13 + call void @finch_str_copy(ptr %a14, ptr %a13) + %t15 = load { ptr, i64, i64 }, ptr %a14 + store %S.gen.Val %t9, ptr %a16 + call void @finch.drop.S_gen_Val(ptr %a16) + ret { ptr, i64, i64 } %t15 } define internal void @finch.gen.ifStmt(ptr %p0, %S.ast.Node %p1) { @@ -43519,45 +50828,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 %range4783, label %inrange4784 -range4783: - call void @finch_panic_index(ptr @.str.3058, i64 2161, i64 0, i64 %t6) + br i1 %t7, label %range5046, label %inrange5047 +range5046: + call void @finch_panic_index(ptr @.str.3161, i64 2350, i64 0, i64 %t6) unreachable -inrange4784: +inrange5047: %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.3059, i64 4, i64 0 }) + %t14 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t13, { ptr, i64, i64 } { ptr @.str.3162, 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.3060, i64 4, i64 0 }) + %t17 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t16, { ptr, i64, i64 } { ptr @.str.3163, 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.3061, i64 5, i64 0 }) + %t20 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t19, { ptr, i64, i64 } { ptr @.str.3164, 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 %then4785, label %else4786 -then4785: + br i1 %t25, label %then5048, label %else5049 +then5048: %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 %endif4787 -else4786: + br label %endif5050 +else5049: %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 %endif4787 -endif4787: + br label %endif5050 +endif5050: %t34 = load ptr, ptr %a1 %t35 = load { ptr, i64, i64 }, ptr %a15 call void @finch.gen.label(ptr %t34, { ptr, i64, i64 } %t35) @@ -43566,22 +50875,22 @@ endif4787: %t38 = load { ptr, i64, i64 }, ptr %t37 %t39 = extractvalue { ptr, i64, i64 } %t38, 1 %t40 = icmp uge i64 1, %t39 - br i1 %t40, label %range4788, label %inrange4789 -range4788: - call void @finch_panic_index(ptr @.str.3062, i64 2171, i64 1, i64 %t39) + br i1 %t40, label %range5051, label %inrange5052 +range5051: + call void @finch_panic_index(ptr @.str.3165, i64 2360, i64 1, i64 %t39) unreachable -inrange4789: +inrange5052: %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 %panic4790, label %ok4791 -panic4790: - call void @finch_panic(ptr @.str.3063, i64 2172, ptr @.str.3064) + br i1 %t45, label %panic5053, label %ok5054 +panic5053: + call void @finch_panic(ptr @.str.3166, i64 2361, ptr @.str.3167) unreachable -ok4791: +ok5054: %t46 = getelementptr inbounds %S.gen.Gen, ptr %t44, i32 0, i32 9 %t47 = load i1, ptr %t46 %t48 = xor i1 %t47, true @@ -43593,8 +50902,8 @@ ok4791: %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 %then4792, label %else4793 -then4792: + br i1 %t55, label %then5055, label %else5056 +then5055: %t56 = load ptr, ptr %a1 %t57 = load { ptr, i64, i64 }, ptr %a18 call void @finch.gen.label(ptr %t56, { ptr, i64, i64 } %t57) @@ -43603,52 +50912,56 @@ then4792: %t60 = load { ptr, i64, i64 }, ptr %t59 %t61 = extractvalue { ptr, i64, i64 } %t60, 1 %t62 = icmp uge i64 2, %t61 - br i1 %t62, label %range4795, label %inrange4796 -range4795: - call void @finch_panic_index(ptr @.str.3065, i64 2176, i64 2, i64 %t61) + br i1 %t62, label %range5058, label %inrange5059 +range5058: + call void @finch_panic_index(ptr @.str.3168, i64 2365, i64 2, i64 %t61) unreachable -inrange4796: +inrange5059: %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.from4797 -logic.from4797: - br i1 %t66, label %logic.end4799, label %logic.rhs4798 -logic.rhs4798: + br label %logic.from5060 +logic.from5060: + br i1 %t66, label %logic.end5062, label %logic.rhs5061 +logic.rhs5061: %t67 = load ptr, ptr %a1 %t68 = icmp eq ptr %t67, null - br i1 %t68, label %panic4800, label %ok4801 -panic4800: - call void @finch_panic(ptr @.str.3066, i64 2177, ptr @.str.3067) + br i1 %t68, label %panic5063, label %ok5064 +panic5063: + call void @finch_panic(ptr @.str.3169, i64 2366, ptr @.str.3170) unreachable -ok4801: +ok5064: %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.rend4802 -logic.rend4802: - br label %logic.end4799 -logic.end4799: - %t72 = phi i1 [ true, %logic.from4797 ], [ %t71, %logic.rend4802 ] + br label %logic.rend5065 +logic.rend5065: + br label %logic.end5062 +logic.end5062: + %t72 = phi i1 [ true, %logic.from5060 ], [ %t71, %logic.rend5065 ] 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 %endif4794 -else4793: + br label %endif5057 +else5056: store i1 true, ptr %a49 - br label %endif4794 -endif4794: + br label %endif5057 +endif5057: %t75 = load i1, ptr %a49 - br i1 %t75, label %then4803, label %endif4805 -then4803: + br i1 %t75, label %then5066, label %endif5068 +then5066: %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 %endif4805 -endif4805: + br label %endif5068 +endif5068: + call void @finch_str_drop(ptr %a21) + call void @finch_str_drop(ptr %a18) + call void @finch_str_drop(ptr %a15) + call void @finch_str_drop(ptr %a12) ret void } @@ -43669,17 +50982,18 @@ entry: %a67 = alloca { ptr, i64, i64 }, align 16 %a71 = alloca { ptr, i64, i64 }, align 16 %a72 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca i1, align 16 + %a99 = alloca i1, align 16 + %a118 = alloca %S.gen.Loop, align 16 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.3068, i64 10, i64 0 }) + %t4 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t3, { ptr, i64, i64 } { ptr @.str.3171, 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.3069, i64 10, i64 0 }) + %t7 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t6, { ptr, i64, i64 } { ptr @.str.3172, 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.3070, i64 9, i64 0 }) + %t10 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t9, { ptr, i64, i64 } { ptr @.str.3173, i64 9, i64 0 }) store { ptr, i64, i64 } %t10, ptr %a11 %t12 = load ptr, ptr %a1 %t13 = load { ptr, i64, i64 }, ptr %a5 @@ -43691,87 +51005,87 @@ 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 %range4806, label %inrange4807 -range4806: - call void @finch_panic_index(ptr @.str.3071, i64 2193, i64 0, i64 %t18) + br i1 %t19, label %range5069, label %inrange5070 +range5069: + call void @finch_panic_index(ptr @.str.3174, i64 2382, i64 0, i64 %t18) unreachable -inrange4807: +inrange5070: %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.3072, i64 4, i64 0 }, ptr %a25 + store { ptr, i64, i64 } { ptr @.str.3175, 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.from4808 -logic.from4808: - br i1 %t27, label %logic.rhs4809, label %logic.end4810 -logic.rhs4809: + br label %logic.from5071 +logic.from5071: + br i1 %t27, label %logic.rhs5072, label %logic.end5073 +logic.rhs5072: %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 %range4811, label %inrange4812 -range4811: - call void @finch_panic_index(ptr @.str.3073, i64 2193, i64 0, i64 %t30) + br i1 %t31, label %range5074, label %inrange5075 +range5074: + call void @finch_panic_index(ptr @.str.3176, i64 2382, i64 0, i64 %t30) unreachable -inrange4812: +inrange5075: %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.3074, i64 4, i64 0 }, ptr %a37 + store { ptr, i64, i64 } { ptr @.str.3177, 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.rend4813 -logic.rend4813: - br label %logic.end4810 -logic.end4810: - %t40 = phi i1 [ false, %logic.from4808 ], [ %t39, %logic.rend4813 ] + br label %logic.rend5076 +logic.rend5076: + br label %logic.end5073 +logic.end5073: + %t40 = phi i1 [ false, %logic.from5071 ], [ %t39, %logic.rend5076 ] 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 %range4814, label %inrange4815 -range4814: - call void @finch_panic_index(ptr @.str.3075, i64 2194, i64 0, i64 %t45) + br i1 %t46, label %range5077, label %inrange5078 +range5077: + call void @finch_panic_index(ptr @.str.3178, i64 2383, i64 0, i64 %t45) unreachable -inrange4815: +inrange5078: %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 %then4816, label %else4817 -then4816: + br i1 %t52, label %then5079, label %else5080 +then5079: %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 %endif4818 -else4817: + br label %endif5081 +else5080: %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 %endif4818 -endif4818: + br label %endif5081 +endif5081: %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 %panic4819, label %ok4820 -panic4819: - call void @finch_panic(ptr @.str.3076, i64 2201, ptr @.str.3077) + br i1 %t62, label %panic5082, label %ok5083 +panic5082: + call void @finch_panic(ptr @.str.3179, i64 2390, ptr @.str.3180) unreachable -ok4820: - %t63 = getelementptr inbounds %S.gen.Gen, ptr %t61, i32 0, i32 11 +ok5083: + %t63 = getelementptr inbounds %S.gen.Gen, ptr %t61, i32 0, i32 12 %t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %t63, i32 0, i32 1 %t65 = load { ptr, i64, i64 }, ptr %a5 store { ptr, i64, i64 } %t65, ptr %a66 @@ -43785,93 +51099,110 @@ ok4820: %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 %panic4821, label %ok4822 -panic4821: - call void @finch_panic(ptr @.str.3078, i64 2201, ptr @.str.3079) + br i1 %t76, label %panic5084, label %ok5085 +panic5084: + call void @finch_panic(ptr @.str.3181, i64 2390, ptr @.str.3182) unreachable -ok4822: +ok5085: %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 %t80 = insertvalue %S.gen.Loop %t74, i64 %t79, 2 - %t81 = load i64, ptr %t64 - %t82 = add i64 %t81, 1 - call void @finch_arr_reserve(ptr %t63, i64 %t82, i64 ptrtoint (ptr getelementptr (%S.gen.Loop, ptr null, i32 1) to i64)) - %t83 = load ptr, ptr %t63 - %t84 = getelementptr inbounds %S.gen.Loop, ptr %t83, i64 %t81 - store %S.gen.Loop %t80, ptr %t84 - store i64 %t82, ptr %t64 - %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 1, %t87 - br i1 %t88, label %range4823, label %inrange4824 -range4823: - call void @finch_panic_index(ptr @.str.3080, i64 2202, i64 1, i64 %t87) + %t81 = load ptr, ptr %a1 + %t82 = icmp eq ptr %t81, null + br i1 %t82, label %panic5086, label %ok5087 +panic5086: + call void @finch_panic(ptr @.str.3183, i64 2390, ptr @.str.3184) unreachable -inrange4824: - %t89 = extractvalue { ptr, i64, i64 } %t86, 0 - %t90 = getelementptr inbounds %S.ast.Node, ptr %t89, i64 1 - %t91 = load %S.ast.Node, ptr %t90 - %t92 = call i1 @finch.gen.countBreaks(%S.ast.Node %t91) - store i1 %t92, ptr %a93 - %t94 = load ptr, ptr %a1 - %t95 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t96 = load { ptr, i64, i64 }, ptr %t95 - %t97 = extractvalue { ptr, i64, i64 } %t96, 1 - %t98 = icmp uge i64 1, %t97 - br i1 %t98, label %range4825, label %inrange4826 -range4825: - call void @finch_panic_index(ptr @.str.3081, i64 2203, i64 1, i64 %t97) +ok5087: + %t83 = getelementptr inbounds %S.gen.Gen, ptr %t81, i32 0, i32 11 + %t84 = getelementptr inbounds { ptr, i64, i64 }, ptr %t83, i32 0, i32 1 + %t85 = load i64, ptr %t84 + %t86 = insertvalue %S.gen.Loop %t80, i64 %t85, 3 + %t87 = load i64, ptr %t64 + %t88 = add i64 %t87, 1 + call void @finch_arr_reserve(ptr %t63, i64 %t88, i64 ptrtoint (ptr getelementptr (%S.gen.Loop, ptr null, i32 1) to i64)) + %t89 = load ptr, ptr %t63 + %t90 = getelementptr inbounds %S.gen.Loop, ptr %t89, i64 %t87 + store %S.gen.Loop %t86, ptr %t90 + store i64 %t88, ptr %t64 + %t91 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t92 = load { ptr, i64, i64 }, ptr %t91 + %t93 = extractvalue { ptr, i64, i64 } %t92, 1 + %t94 = icmp uge i64 1, %t93 + br i1 %t94, label %range5088, label %inrange5089 +range5088: + call void @finch_panic_index(ptr @.str.3185, i64 2391, i64 1, i64 %t93) unreachable -inrange4826: - %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 %panic4827, label %ok4828 -panic4827: - call void @finch_panic(ptr @.str.3082, i64 2204, ptr @.str.3083) +inrange5089: + %t95 = extractvalue { ptr, i64, i64 } %t92, 0 + %t96 = getelementptr inbounds %S.ast.Node, ptr %t95, i64 1 + %t97 = load %S.ast.Node, ptr %t96 + %t98 = call i1 @finch.gen.countBreaks(%S.ast.Node %t97) + store i1 %t98, ptr %a99 + %t100 = load ptr, ptr %a1 + %t101 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t102 = load { ptr, i64, i64 }, ptr %t101 + %t103 = extractvalue { ptr, i64, i64 } %t102, 1 + %t104 = icmp uge i64 1, %t103 + br i1 %t104, label %range5090, label %inrange5091 +range5090: + call void @finch_panic_index(ptr @.str.3186, i64 2392, i64 1, i64 %t103) unreachable -ok4828: - %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 %panic4829, label %ok4830 -panic4829: - call void @finch_panic(ptr @.str.3084, i64 2204, ptr @.str.3085) +inrange5091: + %t105 = extractvalue { ptr, i64, i64 } %t102, 0 + %t106 = getelementptr inbounds %S.ast.Node, ptr %t105, i64 1 + %t107 = load %S.ast.Node, ptr %t106 + call void @finch.gen.block(ptr %t100, %S.ast.Node %t107, i1 true) + %t108 = load ptr, ptr %a1 + %t109 = icmp eq ptr %t108, null + br i1 %t109, label %panic5092, label %ok5093 +panic5092: + call void @finch_panic(ptr @.str.3187, i64 2393, ptr @.str.3188) unreachable -ok4830: - %t108 = sub i64 %t106, 1 - %t109 = load ptr, ptr %t104 - %t110 = getelementptr inbounds %S.gen.Loop, ptr %t109, i64 %t108 - %t111 = load %S.gen.Loop, ptr %t110 - store i64 %t108, ptr %t105 - %t112 = load ptr, ptr %a1 - %t113 = load { ptr, i64, i64 }, ptr %a5 - call void @finch.gen.br(ptr %t112, { ptr, i64, i64 } %t113) - %t114 = load i1, ptr %a41 - %t115 = xor i1 %t114, true - br label %logic.from4831 -logic.from4831: - br i1 %t115, label %logic.end4833, label %logic.rhs4832 -logic.rhs4832: - %t116 = load i1, ptr %a93 - br label %logic.rend4834 -logic.rend4834: - br label %logic.end4833 -logic.end4833: - %t117 = phi i1 [ true, %logic.from4831 ], [ %t116, %logic.rend4834 ] - br i1 %t117, label %then4835, label %endif4837 -then4835: - %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 %endif4837 -endif4837: +ok5093: + %t110 = getelementptr inbounds %S.gen.Gen, ptr %t108, i32 0, i32 12 + %t111 = getelementptr inbounds { ptr, i64, i64 }, ptr %t110, i32 0, i32 1 + %t112 = load i64, ptr %t111 + %t113 = icmp eq i64 %t112, 0 + br i1 %t113, label %panic5094, label %ok5095 +panic5094: + call void @finch_panic(ptr @.str.3189, i64 2393, ptr @.str.3190) + unreachable +ok5095: + %t114 = sub i64 %t112, 1 + %t115 = load ptr, ptr %t110 + %t116 = getelementptr inbounds %S.gen.Loop, ptr %t115, i64 %t114 + %t117 = load %S.gen.Loop, ptr %t116 + store i64 %t114, ptr %t111 + store %S.gen.Loop %t117, ptr %a118 + call void @finch.drop.S_gen_Loop(ptr %a118) + %t119 = load ptr, ptr %a1 + %t120 = load { ptr, i64, i64 }, ptr %a5 + call void @finch.gen.br(ptr %t119, { ptr, i64, i64 } %t120) + %t121 = load i1, ptr %a41 + %t122 = xor i1 %t121, true + br label %logic.from5096 +logic.from5096: + br i1 %t122, label %logic.end5098, label %logic.rhs5097 +logic.rhs5097: + %t123 = load i1, ptr %a99 + br label %logic.rend5099 +logic.rend5099: + br label %logic.end5098 +logic.end5098: + %t124 = phi i1 [ true, %logic.from5096 ], [ %t123, %logic.rend5099 ] + br i1 %t124, label %then5100, label %endif5102 +then5100: + %t125 = load ptr, ptr %a1 + %t126 = load { ptr, i64, i64 }, ptr %a11 + call void @finch.gen.label(ptr %t125, { ptr, i64, i64 } %t126) + br label %endif5102 +endif5102: + call void @finch_str_drop(ptr %a51) + call void @finch_str_drop(ptr %a11) + call void @finch_str_drop(ptr %a8) + call void @finch_str_drop(ptr %a5) ret void } @@ -43892,80 +51223,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.3086, i64 5, i64 0 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.3191, 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 %then4838, label %endif4840 -then4838: + br i1 %t7, label %then5103, label %endif5105 +then5103: ret i1 true -endif4840: +endif5105: %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.3087, i64 5, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.3192, 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.from4841 -logic.from4841: - br i1 %t13, label %logic.end4843, label %logic.rhs4842 -logic.rhs4842: + br label %logic.from5106 +logic.from5106: + br i1 %t13, label %logic.end5108, label %logic.rhs5107 +logic.rhs5107: %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.3088, i64 3, i64 0 }, ptr %a17 + store { ptr, i64, i64 } { ptr @.str.3193, 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.rend4844 -logic.rend4844: - br label %logic.end4843 -logic.end4843: - %t20 = phi i1 [ true, %logic.from4841 ], [ %t19, %logic.rend4844 ] - br label %logic.from4845 -logic.from4845: - br i1 %t20, label %logic.end4847, label %logic.rhs4846 -logic.rhs4846: + br label %logic.rend5109 +logic.rend5109: + br label %logic.end5108 +logic.end5108: + %t20 = phi i1 [ true, %logic.from5106 ], [ %t19, %logic.rend5109 ] + br label %logic.from5110 +logic.from5110: + br i1 %t20, label %logic.end5112, label %logic.rhs5111 +logic.rhs5111: %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.3089, i64 4, i64 0 }, ptr %a24 + store { ptr, i64, i64 } { ptr @.str.3194, 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.rend4848 -logic.rend4848: - br label %logic.end4847 -logic.end4847: - %t27 = phi i1 [ true, %logic.from4845 ], [ %t26, %logic.rend4848 ] - br i1 %t27, label %then4849, label %endif4851 -then4849: + br label %logic.rend5113 +logic.rend5113: + br label %logic.end5112 +logic.end5112: + %t27 = phi i1 [ true, %logic.from5110 ], [ %t26, %logic.rend5113 ] + br i1 %t27, label %then5114, label %endif5116 +then5114: ret i1 false -endif4851: +endif5116: %t28 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 9 store i64 0, ptr %a29 - br label %each.cond4852 -each.cond4852: + br label %each.cond5117 +each.cond5117: %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.body4853, label %each.end4855 -each.body4853: + br i1 %t33, label %each.body5118, label %each.end5120 +each.body5118: %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 %then4856, label %endif4858 -then4856: + br i1 %t39, label %then5121, label %endif5123 +then5121: ret i1 true -endif4858: - br label %each.step4854 -each.step4854: +endif5123: + br label %each.step5119 +each.step5119: %t40 = load i64, ptr %a29 %t41 = add i64 %t40, 1 store i64 %t41, ptr %a29 - br label %each.cond4852 -each.end4855: + br label %each.cond5117 +each.end5120: ret i1 false } @@ -43973,39 +51304,53 @@ define internal void @finch.gen.forStmt(ptr %p0, %S.ast.Node %p1) { entry: %a1 = alloca ptr, align 16 %a2 = alloca %S.ast.Node, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 + %a22 = alloca %S.gen.Val, align 16 + %a23 = alloca %S.ast.Type, align 16 + %a25 = alloca { ptr, i64, i64 }, align 16 %a26 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a79 = 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 + %a28 = alloca %S.gen.Val, align 16 + %a29 = alloca { ptr, i64, i64 }, align 16 + %a49 = alloca %S.gen.Val, align 16 + %a50 = alloca %S.ast.Type, align 16 + %a52 = alloca { ptr, i64, i64 }, align 16 + %a53 = alloca { ptr, i64, i64 }, align 16 + %a55 = alloca %S.gen.Val, align 16 + %a56 = alloca { ptr, i64, i64 }, align 16 + %a65 = alloca %S.ast.Type, align 16 + %a66 = alloca { ptr, i64, i64 }, align 16 + %a69 = alloca { ptr, i64, i64 }, align 16 + %a72 = alloca { ptr, i64, i64 }, align 16 + %a75 = alloca { ptr, i64, i64 }, align 16 + %a78 = alloca { ptr, i64, i64 }, align 16 %a86 = 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 + %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 + %a94 = alloca { ptr, i64, i64 }, align 16 + %a95 = alloca { ptr, i64, i64 }, align 16 %a96 = alloca { ptr, i64, i64 }, 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 - %a152 = 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 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = 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 + %a102 = alloca { ptr, i64, i64 }, align 16 + %a105 = alloca { ptr, i64, i64 }, align 16 + %a106 = 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 + %a161 = alloca %S.gen.Loop, 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 + %a177 = alloca { ptr, i64, i64 }, align 16 + %a178 = alloca { ptr, i64, i64 }, align 16 + %a179 = alloca { ptr, i64, i64 }, align 16 + %a180 = alloca { ptr, i64, i64 }, align 16 + %a183 = alloca { ptr, i64, i64 }, align 16 + %a185 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store %S.ast.Node %p1, ptr %a2 %t3 = load ptr, ptr %a1 @@ -44014,229 +51359,278 @@ 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 %range4859, label %inrange4860 -range4859: - call void @finch_panic_index(ptr @.str.3090, i64 2228, i64 0, i64 %t7) + br i1 %t8, label %range5124, label %inrange5125 +range5124: + call void @finch_panic_index(ptr @.str.3195, i64 2417, i64 0, i64 %t7) unreachable -inrange4860: +inrange5125: %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.3091, i64 3, i64 0 }) + %t13 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3196, 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 %range4861, label %inrange4862 -range4861: - call void @finch_panic_index(ptr @.str.3092, i64 2228, i64 0, i64 %t16) + br i1 %t17, label %range5126, label %inrange5127 +range5126: + call void @finch_panic_index(ptr @.str.3197, i64 2417, i64 0, i64 %t16) unreachable -inrange4862: +inrange5127: %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.3093, 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) - %t25 = load { ptr, i64, i64 }, ptr %a24 - store { ptr, i64, i64 } %t25, ptr %a26 - %t27 = load ptr, ptr %a1 - %t28 = load ptr, ptr %a1 - %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 1, %t31 - br i1 %t32, label %range4863, label %inrange4864 -range4863: - call void @finch_panic_index(ptr @.str.3094, i64 2229, i64 1, i64 %t31) + %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.3198, i64 20, i64 0 }) + store %S.gen.Val %t12, ptr %a22 + call void @finch.drop.S_gen_Val(ptr %a22) + store %S.ast.Type %t13, ptr %a23 + call void @finch.drop.S_ast_Type(ptr %a23) + %t24 = extractvalue %S.gen.Val %t21, 0 + store { ptr, i64, i64 } %t24, ptr %a25 + call void @finch_str_copy(ptr %a26, ptr %a25) + %t27 = load { ptr, i64, i64 }, ptr %a26 + store %S.gen.Val %t21, ptr %a28 + call void @finch.drop.S_gen_Val(ptr %a28) + store { ptr, i64, i64 } %t27, ptr %a29 + %t30 = load ptr, ptr %a1 + %t31 = load ptr, ptr %a1 + %t32 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t33 = load { ptr, i64, i64 }, ptr %t32 + %t34 = extractvalue { ptr, i64, i64 } %t33, 1 + %t35 = icmp uge i64 1, %t34 + br i1 %t35, label %range5128, label %inrange5129 +range5128: + call void @finch_panic_index(ptr @.str.3199, i64 2418, i64 1, i64 %t34) unreachable -inrange4864: - %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.3095, 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 %range4865, label %inrange4866 -range4865: - call void @finch_panic_index(ptr @.str.3096, i64 2229, i64 1, i64 %t40) +inrange5129: + %t36 = extractvalue { ptr, i64, i64 } %t33, 0 + %t37 = getelementptr inbounds %S.ast.Node, ptr %t36, i64 1 + %t38 = load %S.ast.Node, ptr %t37 + %t39 = call %S.gen.Val @finch.gen.expr(ptr %t31, %S.ast.Node %t38) + %t40 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3200, i64 3, i64 0 }) + %t41 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t42 = load { ptr, i64, i64 }, ptr %t41 + %t43 = extractvalue { ptr, i64, i64 } %t42, 1 + %t44 = icmp uge i64 1, %t43 + br i1 %t44, label %range5130, label %inrange5131 +range5130: + call void @finch_panic_index(ptr @.str.3201, i64 2418, i64 1, i64 %t43) unreachable -inrange4866: - %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.3097, 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) - %t49 = load { ptr, i64, i64 }, ptr %a48 - store { ptr, i64, i64 } %t49, ptr %a50 - %t51 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t51) - %t52 = load ptr, ptr %a1 - %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.3098, 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.3099, 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.3100, 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.3101, 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.3102, i64 7, i64 0 }) - store { ptr, i64, i64 } %t70, ptr %a71 - %t72 = load ptr, ptr %a1 - %t73 = load { ptr, i64, i64 }, ptr %a62 - call void @finch.gen.br(ptr %t72, { ptr, i64, i64 } %t73) - %t74 = load ptr, ptr %a1 - %t75 = load { ptr, i64, i64 }, ptr %a62 - call void @finch.gen.label(ptr %t74, { ptr, i64, i64 } %t75) +inrange5131: + %t45 = extractvalue { ptr, i64, i64 } %t42, 0 + %t46 = getelementptr inbounds %S.ast.Node, ptr %t45, i64 1 + %t47 = load %S.ast.Node, ptr %t46 + %t48 = call %S.gen.Val @finch.gen.coerce(ptr %t30, %S.gen.Val %t39, %S.ast.Type %t40, %S.ast.Node %t47, { ptr, i64, i64 } { ptr @.str.3202, i64 18, i64 0 }) + store %S.gen.Val %t39, ptr %a49 + call void @finch.drop.S_gen_Val(ptr %a49) + store %S.ast.Type %t40, ptr %a50 + call void @finch.drop.S_ast_Type(ptr %a50) + %t51 = extractvalue %S.gen.Val %t48, 0 + store { ptr, i64, i64 } %t51, ptr %a52 + call void @finch_str_copy(ptr %a53, ptr %a52) + %t54 = load { ptr, i64, i64 }, ptr %a53 + store %S.gen.Val %t48, ptr %a55 + call void @finch.drop.S_gen_Val(ptr %a55) + store { ptr, i64, i64 } %t54, ptr %a56 + %t57 = load ptr, ptr %a1 + call void @finch.gen.pushScope(ptr %t57) + %t58 = load ptr, ptr %a1 + %t59 = load %S.ast.Node, ptr %a2 + %t60 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t61 = load { ptr, i64, i64 }, ptr %t60 + %t62 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3203, i64 3, i64 0 }) + %t63 = load { ptr, i64, i64 }, ptr %a29 + %t64 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t58, %S.ast.Node %t59, { ptr, i64, i64 } %t61, %S.ast.Type %t62, { ptr, i64, i64 } %t63, i1 true, i1 false) + store %S.ast.Type %t62, ptr %a65 + call void @finch.drop.S_ast_Type(ptr %a65) + store { ptr, i64, i64 } %t64, ptr %a66 + %t67 = load ptr, ptr %a1 + %t68 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t67, { ptr, i64, i64 } { ptr @.str.3204, i64 8, i64 0 }) + store { ptr, i64, i64 } %t68, ptr %a69 + %t70 = load ptr, ptr %a1 + %t71 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t70, { ptr, i64, i64 } { ptr @.str.3205, i64 8, i64 0 }) + store { ptr, i64, i64 } %t71, ptr %a72 + %t73 = load ptr, ptr %a1 + %t74 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t73, { ptr, i64, i64 } { ptr @.str.3206, i64 8, i64 0 }) + store { ptr, i64, i64 } %t74, ptr %a75 %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.3103, 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.3104, 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.3105, 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 - store { ptr, i64, i64 } %t89, 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 - %t95 = call { ptr, i64, i64 } @finch.gen.op(ptr %t80, { ptr, i64, i64 } %t94) - store { ptr, i64, i64 } %t95, ptr %a96 - %t97 = load ptr, ptr %a1 - %t98 = load { ptr, i64, i64 }, ptr %a96 - %t99 = load { ptr, i64, i64 }, ptr %a65 - %t100 = load { ptr, i64, i64 }, ptr %a71 - call void @finch.gen.condBr(ptr %t97, { ptr, i64, i64 } %t98, { ptr, i64, i64 } %t99, { ptr, i64, i64 } %t100) - %t101 = load ptr, ptr %a1 - %t102 = load { ptr, i64, i64 }, ptr %a65 - 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 %panic4867, label %ok4868 -panic4867: - call void @finch_panic(ptr @.str.3106, i64 2242, ptr @.str.3107) + %t77 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t76, { ptr, i64, i64 } { ptr @.str.3207, i64 7, i64 0 }) + store { ptr, i64, i64 } %t77, ptr %a78 + %t79 = load ptr, ptr %a1 + %t80 = load { ptr, i64, i64 }, ptr %a69 + call void @finch.gen.br(ptr %t79, { ptr, i64, i64 } %t80) + %t81 = load ptr, ptr %a1 + %t82 = load { ptr, i64, i64 }, ptr %a69 + call void @finch.gen.label(ptr %t81, { ptr, i64, i64 } %t82) + %t83 = load ptr, ptr %a1 + %t84 = load { ptr, i64, i64 }, ptr %a66 + %t85 = call { ptr, i64, i64 } @finch.gen.load(ptr %t83, { ptr, i64, i64 } { ptr @.str.3208, i64 3, i64 0 }, { ptr, i64, i64 } %t84) + store { ptr, i64, i64 } %t85, ptr %a86 + %t87 = load ptr, ptr %a1 + %t88 = load { ptr, i64, i64 }, ptr %a86 + store { ptr, i64, i64 } { ptr @.str.3209, i64 13, i64 0 }, ptr %a90 + store { ptr, i64, i64 } %t88, ptr %a91 + call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) + %t92 = load { ptr, i64, i64 }, ptr %a89 + store { ptr, i64, i64 } %t92, ptr %a94 + store { ptr, i64, i64 } { ptr @.str.3210, i64 2, i64 0 }, ptr %a95 + call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) + store { ptr, i64, i64 } %t92, ptr %a96 + call void @finch_str_drop(ptr %a96) + %t97 = load { ptr, i64, i64 }, ptr %a93 + %t98 = load { ptr, i64, i64 }, ptr %a56 + store { ptr, i64, i64 } %t97, ptr %a100 + store { ptr, i64, i64 } %t98, ptr %a101 + call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) + store { ptr, i64, i64 } %t97, ptr %a102 + call void @finch_str_drop(ptr %a102) + %t103 = load { ptr, i64, i64 }, ptr %a99 + %t104 = call { ptr, i64, i64 } @finch.gen.op(ptr %t87, { ptr, i64, i64 } %t103) + store { ptr, i64, i64 } %t103, ptr %a105 + call void @finch_str_drop(ptr %a105) + store { ptr, i64, i64 } %t104, ptr %a106 + %t107 = load ptr, ptr %a1 + %t108 = load { ptr, i64, i64 }, ptr %a106 + %t109 = load { ptr, i64, i64 }, ptr %a72 + %t110 = load { ptr, i64, i64 }, ptr %a78 + call void @finch.gen.condBr(ptr %t107, { ptr, i64, i64 } %t108, { ptr, i64, i64 } %t109, { ptr, i64, i64 } %t110) + %t111 = load ptr, ptr %a1 + %t112 = load { ptr, i64, i64 }, ptr %a72 + call void @finch.gen.label(ptr %t111, { ptr, i64, i64 } %t112) + %t113 = load ptr, ptr %a1 + %t114 = icmp eq ptr %t113, null + br i1 %t114, label %panic5132, label %ok5133 +panic5132: + call void @finch_panic(ptr @.str.3211, i64 2431, ptr @.str.3212) unreachable -ok4868: - %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 - 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.Loop zeroinitializer, { ptr, i64, i64 } %t110, 0 - %t112 = load { ptr, i64, i64 }, ptr %a71 - store { ptr, i64, i64 } %t112, ptr %a113 - call void @finch_str_copy(ptr %a114, ptr %a113) - %t115 = load { ptr, i64, i64 }, ptr %a114 - %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 %panic4869, label %ok4870 -panic4869: - call void @finch_panic(ptr @.str.3108, i64 2242, ptr @.str.3109) - unreachable -ok4870: - %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 - %t122 = insertvalue %S.gen.Loop %t116, i64 %t121, 2 - %t123 = load i64, ptr %t106 - %t124 = add i64 %t123, 1 - call void @finch_arr_reserve(ptr %t105, i64 %t124, i64 ptrtoint (ptr getelementptr (%S.gen.Loop, ptr null, i32 1) to i64)) - %t125 = load ptr, ptr %t105 - %t126 = getelementptr inbounds %S.gen.Loop, ptr %t125, i64 %t123 - store %S.gen.Loop %t122, ptr %t126 - store i64 %t124, ptr %t106 +ok5133: + %t115 = getelementptr inbounds %S.gen.Gen, ptr %t113, i32 0, i32 12 + %t116 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i32 0, i32 1 + %t117 = load { ptr, i64, i64 }, ptr %a75 + store { ptr, i64, i64 } %t117, ptr %a118 + call void @finch_str_copy(ptr %a119, ptr %a118) + %t120 = load { ptr, i64, i64 }, ptr %a119 + %t121 = insertvalue %S.gen.Loop zeroinitializer, { ptr, i64, i64 } %t120, 0 + %t122 = load { ptr, i64, i64 }, ptr %a78 + store { ptr, i64, i64 } %t122, ptr %a123 + call void @finch_str_copy(ptr %a124, ptr %a123) + %t125 = load { ptr, i64, i64 }, ptr %a124 + %t126 = insertvalue %S.gen.Loop %t121, { ptr, i64, i64 } %t125, 1 %t127 = load ptr, ptr %a1 - %t128 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t129 = load { ptr, i64, i64 }, ptr %t128 - %t130 = extractvalue { ptr, i64, i64 } %t129, 1 - %t131 = icmp uge i64 2, %t130 - br i1 %t131, label %range4871, label %inrange4872 -range4871: - call void @finch_panic_index(ptr @.str.3110, i64 2243, i64 2, i64 %t130) + %t128 = icmp eq ptr %t127, null + br i1 %t128, label %panic5134, label %ok5135 +panic5134: + call void @finch_panic(ptr @.str.3213, i64 2431, ptr @.str.3214) unreachable -inrange4872: - %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 %panic4873, label %ok4874 -panic4873: - call void @finch_panic(ptr @.str.3111, i64 2244, ptr @.str.3112) +ok5135: + %t129 = getelementptr inbounds %S.gen.Gen, ptr %t127, i32 0, i32 10 + %t130 = getelementptr inbounds { ptr, i64, i64 }, ptr %t129, i32 0, i32 1 + %t131 = load i64, ptr %t130 + %t132 = insertvalue %S.gen.Loop %t126, i64 %t131, 2 + %t133 = load ptr, ptr %a1 + %t134 = icmp eq ptr %t133, null + br i1 %t134, label %panic5136, label %ok5137 +panic5136: + call void @finch_panic(ptr @.str.3215, i64 2431, ptr @.str.3216) unreachable -ok4874: - %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 %panic4875, label %ok4876 -panic4875: - call void @finch_panic(ptr @.str.3113, i64 2244, ptr @.str.3114) +ok5137: + %t135 = getelementptr inbounds %S.gen.Gen, ptr %t133, i32 0, i32 11 + %t136 = getelementptr inbounds { ptr, i64, i64 }, ptr %t135, i32 0, i32 1 + %t137 = load i64, ptr %t136 + %t138 = insertvalue %S.gen.Loop %t132, i64 %t137, 3 + %t139 = load i64, ptr %t116 + %t140 = add i64 %t139, 1 + call void @finch_arr_reserve(ptr %t115, i64 %t140, i64 ptrtoint (ptr getelementptr (%S.gen.Loop, ptr null, i32 1) to i64)) + %t141 = load ptr, ptr %t115 + %t142 = getelementptr inbounds %S.gen.Loop, ptr %t141, i64 %t139 + store %S.gen.Loop %t138, ptr %t142 + store i64 %t140, ptr %t116 + %t143 = load ptr, ptr %a1 + %t144 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t145 = load { ptr, i64, i64 }, ptr %t144 + %t146 = extractvalue { ptr, i64, i64 } %t145, 1 + %t147 = icmp uge i64 2, %t146 + br i1 %t147, label %range5138, label %inrange5139 +range5138: + call void @finch_panic_index(ptr @.str.3217, i64 2432, i64 2, i64 %t146) unreachable -ok4876: - %t141 = sub i64 %t139, 1 - %t142 = load ptr, ptr %t137 - %t143 = getelementptr inbounds %S.gen.Loop, ptr %t142, i64 %t141 - %t144 = load %S.gen.Loop, ptr %t143 - store i64 %t141, ptr %t138 - %t145 = load ptr, ptr %a1 - %t146 = load { ptr, i64, i64 }, ptr %a68 - call void @finch.gen.br(ptr %t145, { ptr, i64, i64 } %t146) - %t147 = load ptr, ptr %a1 - %t148 = load { ptr, i64, i64 }, ptr %a68 - 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.3115, 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.3117, 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.3118, 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.3116, i64 3, i64 0 }, { ptr, i64, i64 } %t164, { ptr, i64, i64 } %t165) +inrange5139: + %t148 = extractvalue { ptr, i64, i64 } %t145, 0 + %t149 = getelementptr inbounds %S.ast.Node, ptr %t148, i64 2 + %t150 = load %S.ast.Node, ptr %t149 + call void @finch.gen.block(ptr %t143, %S.ast.Node %t150, i1 true) + %t151 = load ptr, ptr %a1 + %t152 = icmp eq ptr %t151, null + br i1 %t152, label %panic5140, label %ok5141 +panic5140: + call void @finch_panic(ptr @.str.3218, i64 2433, ptr @.str.3219) + unreachable +ok5141: + %t153 = getelementptr inbounds %S.gen.Gen, ptr %t151, i32 0, i32 12 + %t154 = getelementptr inbounds { ptr, i64, i64 }, ptr %t153, i32 0, i32 1 + %t155 = load i64, ptr %t154 + %t156 = icmp eq i64 %t155, 0 + br i1 %t156, label %panic5142, label %ok5143 +panic5142: + call void @finch_panic(ptr @.str.3220, i64 2433, ptr @.str.3221) + unreachable +ok5143: + %t157 = sub i64 %t155, 1 + %t158 = load ptr, ptr %t153 + %t159 = getelementptr inbounds %S.gen.Loop, ptr %t158, i64 %t157 + %t160 = load %S.gen.Loop, ptr %t159 + store i64 %t157, ptr %t154 + store %S.gen.Loop %t160, ptr %a161 + call void @finch.drop.S_gen_Loop(ptr %a161) + %t162 = load ptr, ptr %a1 + %t163 = load { ptr, i64, i64 }, ptr %a75 + call void @finch.gen.br(ptr %t162, { ptr, i64, i64 } %t163) + %t164 = load ptr, ptr %a1 + %t165 = load { ptr, i64, i64 }, ptr %a75 + call void @finch.gen.label(ptr %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) - %t168 = load ptr, ptr %a1 - %t169 = load { ptr, i64, i64 }, ptr %a71 - call void @finch.gen.label(ptr %t168, { ptr, i64, i64 } %t169) + %t167 = load { ptr, i64, i64 }, ptr %a66 + %t168 = call { ptr, i64, i64 } @finch.gen.load(ptr %t166, { ptr, i64, i64 } { ptr @.str.3222, i64 3, i64 0 }, { ptr, i64, i64 } %t167) + store { ptr, i64, i64 } %t168, ptr %a169 %t170 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t170) + %t171 = load ptr, ptr %a1 + %t172 = load { ptr, i64, i64 }, ptr %a169 + store { ptr, i64, i64 } { ptr @.str.3224, i64 8, i64 0 }, 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 + store { ptr, i64, i64 } %t176, ptr %a178 + store { ptr, i64, i64 } { ptr @.str.3225, i64 3, i64 0 }, ptr %a179 + call void @finch_str_concat(ptr %a177, ptr %a178, ptr %a179) + store { ptr, i64, i64 } %t176, ptr %a180 + call void @finch_str_drop(ptr %a180) + %t181 = load { ptr, i64, i64 }, ptr %a177 + %t182 = call { ptr, i64, i64 } @finch.gen.op(ptr %t171, { ptr, i64, i64 } %t181) + store { ptr, i64, i64 } %t181, ptr %a183 + call void @finch_str_drop(ptr %a183) + %t184 = load { ptr, i64, i64 }, ptr %a66 + call void @finch.gen.store(ptr %t170, { ptr, i64, i64 } { ptr @.str.3223, i64 3, i64 0 }, { ptr, i64, i64 } %t182, { ptr, i64, i64 } %t184) + store { ptr, i64, i64 } %t182, ptr %a185 + call void @finch_str_drop(ptr %a185) + %t186 = load ptr, ptr %a1 + %t187 = load { ptr, i64, i64 }, ptr %a69 + call void @finch.gen.br(ptr %t186, { ptr, i64, i64 } %t187) + %t188 = load ptr, ptr %a1 + %t189 = load { ptr, i64, i64 }, ptr %a78 + call void @finch.gen.label(ptr %t188, { ptr, i64, i64 } %t189) + %t190 = load ptr, ptr %a1 + call void @finch.gen.popScope(ptr %t190) + call void @finch_str_drop(ptr %a169) + call void @finch_str_drop(ptr %a106) + call void @finch_str_drop(ptr %a86) + call void @finch_str_drop(ptr %a78) + call void @finch_str_drop(ptr %a75) + call void @finch_str_drop(ptr %a72) + call void @finch_str_drop(ptr %a69) + call void @finch_str_drop(ptr %a66) + call void @finch_str_drop(ptr %a56) + call void @finch_str_drop(ptr %a29) ret void } @@ -44253,107 +51647,157 @@ entry: %a24 = alloca %S.ast.Type, align 16 %a25 = alloca %S.ast.Type, align 16 %a27 = alloca %S.ast.Type, align 16 - %a47 = alloca i1, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 + %a46 = alloca { ptr, i64, i64 }, align 16 + %a48 = alloca i1, align 16 + %a51 = alloca { ptr, i64, i64 }, align 16 + %a54 = alloca { ptr, i64, i64 }, align 16 %a61 = alloca { ptr, i64, i64 }, align 16 %a62 = 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 %a66 = 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 - %a70 = 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 %a74 = alloca { ptr, i64, i64 }, align 16 %a75 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a84 = 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 + %a83 = alloca { ptr, i64, i64 }, align 16 + %a85 = alloca { ptr, i64, i64 }, align 16 %a87 = alloca { ptr, i64, i64 }, align 16 %a90 = alloca { ptr, i64, i64 }, align 16 %a93 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 + %a96 = alloca { ptr, i64, i64 }, align 16 + %a99 = alloca { ptr, i64, i64 }, align 16 + %a102 = 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 + %a115 = alloca { ptr, i64, i64 }, align 16 %a121 = alloca { ptr, i64, i64 }, align 16 %a122 = alloca { ptr, i64, i64 }, align 16 %a123 = alloca { ptr, i64, i64 }, align 16 - %a125 = 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 - %a131 = alloca { ptr, i64, i64 }, align 16 + %a128 = alloca { ptr, i64, i64 }, align 16 + %a129 = alloca { ptr, i64, i64 }, align 16 + %a132 = alloca { ptr, i64, i64 }, align 16 + %a133 = 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 %a137 = 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 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 + %a143 = alloca { ptr, i64, i64 }, align 16 %a145 = alloca { ptr, i64, i64 }, align 16 %a146 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 + %a150 = alloca { ptr, i64, i64 }, align 16 + %a151 = alloca { ptr, i64, i64 }, align 16 + %a152 = alloca { ptr, i64, i64 }, align 16 + %a154 = alloca { ptr, i64, i64 }, align 16 + %a155 = alloca { ptr, i64, i64 }, align 16 + %a156 = alloca { ptr, i64, i64 }, align 16 + %a157 = 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 + %a163 = alloca { ptr, i64, i64 }, align 16 + %a166 = alloca { ptr, i64, i64 }, align 16 %a169 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a177 = 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 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 + %a186 = alloca { ptr, i64, i64 }, align 16 + %a187 = alloca { ptr, i64, i64 }, align 16 + %a188 = alloca { ptr, i64, i64 }, align 16 + %a189 = alloca { ptr, i64, i64 }, align 16 + %a191 = alloca { ptr, i64, i64 }, align 16 + %a192 = alloca { ptr, i64, i64 }, align 16 + %a193 = alloca { ptr, i64, i64 }, align 16 + %a194 = alloca { ptr, i64, i64 }, align 16 + %a198 = 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 %a203 = alloca { ptr, i64, i64 }, align 16 %a204 = alloca { ptr, i64, i64 }, align 16 %a206 = 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 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 %a221 = alloca { ptr, i64, i64 }, align 16 - %a225 = 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 %a229 = 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 + %a233 = 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 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a259 = 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 + %a241 = alloca { ptr, i64, i64 }, align 16 + %a243 = 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 + %a249 = alloca { ptr, i64, i64 }, align 16 + %a251 = alloca { ptr, i64, i64 }, align 16 + %a252 = alloca { ptr, i64, i64 }, align 16 + %a256 = alloca { ptr, i64, i64 }, align 16 + %a257 = alloca { ptr, i64, i64 }, 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 %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 + %a266 = alloca { ptr, i64, i64 }, align 16 + %a267 = alloca { ptr, i64, i64 }, align 16 + %a268 = alloca { ptr, i64, i64 }, align 16 + %a269 = alloca { ptr, i64, i64 }, align 16 + %a272 = alloca { ptr, i64, i64 }, align 16 + %a275 = alloca { ptr, i64, i64 }, align 16 %a283 = alloca { ptr, i64, i64 }, align 16 - %a306 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a371 = 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 + %a290 = alloca { ptr, i64, i64 }, align 16 + %a291 = 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 + %a301 = alloca { ptr, i64, i64 }, align 16 + %a302 = alloca { ptr, i64, i64 }, align 16 + %a305 = alloca { ptr, i64, i64 }, align 16 + %a308 = 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 + %a322 = 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 + %a360 = alloca { ptr, i64, i64 }, align 16 + %a369 = 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 + %a392 = alloca { ptr, i64, i64 }, align 16 + %a401 = alloca { ptr, i64, i64 }, align 16 + %a421 = alloca %S.gen.Loop, align 16 + %a429 = 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 + %a437 = alloca { ptr, i64, i64 }, align 16 + %a438 = alloca { ptr, i64, i64 }, align 16 + %a439 = alloca { ptr, i64, i64 }, align 16 + %a440 = alloca { ptr, i64, i64 }, align 16 + %a443 = alloca { ptr, i64, i64 }, align 16 + %a445 = 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 @@ -44363,11 +51807,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 %range4877, label %inrange4878 -range4877: - call void @finch_panic_index(ptr @.str.3119, i64 2256, i64 0, i64 %t8) + br i1 %t9, label %range5144, label %inrange5145 +range5144: + call void @finch_panic_index(ptr @.str.3226, i64 2445, i64 0, i64 %t8) unreachable -inrange4878: +inrange5145: %t10 = extractvalue { ptr, i64, i64 } %t7, 0 %t11 = getelementptr inbounds %S.ast.Type, ptr %t10, i64 0 %t12 = load %S.ast.Type, ptr %t11 @@ -44379,11 +51823,11 @@ inrange4878: %t18 = load { ptr, i64, i64 }, ptr %t17 %t19 = extractvalue { ptr, i64, i64 } %t18, 1 %t20 = icmp uge i64 1, %t19 - br i1 %t20, label %range4879, label %inrange4880 -range4879: - call void @finch_panic_index(ptr @.str.3120, i64 2257, i64 1, i64 %t19) + br i1 %t20, label %range5146, label %inrange5147 +range5146: + call void @finch_panic_index(ptr @.str.3227, i64 2446, i64 1, i64 %t19) unreachable -inrange4880: +inrange5147: %t21 = extractvalue { ptr, i64, i64 } %t18, 0 %t22 = getelementptr inbounds %S.ast.Type, ptr %t21, i64 1 %t23 = load %S.ast.Type, ptr %t22 @@ -44392,20 +51836,20 @@ inrange4880: %t26 = load %S.ast.Type, ptr %a25 store %S.ast.Type %t26, ptr %a27 %t28 = load i1, ptr %a5 - br label %logic.from4881 -logic.from4881: - br i1 %t28, label %logic.rhs4882, label %logic.end4883 -logic.rhs4882: + br label %logic.from5148 +logic.from5148: + br i1 %t28, label %logic.rhs5149, label %logic.end5150 +logic.rhs5149: %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 %range4884, label %inrange4885 -range4884: - call void @finch_panic_index(ptr @.str.3121, i64 2258, i64 0, i64 %t32) + br i1 %t33, label %range5151, label %inrange5152 +range5151: + call void @finch_panic_index(ptr @.str.3228, i64 2447, i64 0, i64 %t32) unreachable -inrange4885: +inrange5152: %t34 = extractvalue { ptr, i64, i64 } %t31, 0 %t35 = getelementptr inbounds %S.ast.Node, ptr %t34, i64 0 %t36 = load %S.ast.Node, ptr %t35 @@ -44414,458 +51858,603 @@ inrange4885: %t39 = load { ptr, i64, i64 }, ptr %t38 %t40 = extractvalue { ptr, i64, i64 } %t39, 1 %t41 = icmp uge i64 1, %t40 - br i1 %t41, label %range4886, label %inrange4887 -range4886: - call void @finch_panic_index(ptr @.str.3122, i64 2258, i64 1, i64 %t40) + br i1 %t41, label %range5153, label %inrange5154 +range5153: + call void @finch_panic_index(ptr @.str.3229, i64 2447, i64 1, i64 %t40) unreachable -inrange4887: +inrange5154: %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.rend4888 -logic.rend4888: - br label %logic.end4883 -logic.end4883: - %t46 = phi i1 [ false, %logic.from4881 ], [ %t45, %logic.rend4888 ] - 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.3123, 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.3124, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.3125, i64 1, i64 0 }, { ptr, i64, i64 } %t52) - store { ptr, i64, i64 } { ptr @.str.3126, i64 0, i64 0 }, ptr %a53 - %t54 = load i1, ptr %a5 - br i1 %t54, label %then4889, label %endif4891 -then4889: - %t55 = load ptr, ptr %a1 + store { ptr, i64, i64 } %t37, ptr %a46 + call void @finch_str_drop(ptr %a46) + br label %logic.rend5155 +logic.rend5155: + br label %logic.end5150 +logic.end5150: + %t47 = phi i1 [ false, %logic.from5148 ], [ %t45, %logic.rend5155 ] + store i1 %t47, ptr %a48 + %t49 = load ptr, ptr %a1 + %t50 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t49, { ptr, i64, i64 } { ptr @.str.3230, i64 3, i64 0 }) + store { ptr, i64, i64 } %t50, ptr %a51 + %t52 = load ptr, ptr %a1 + %t53 = load { ptr, i64, i64 }, ptr %a51 + call void @finch.gen.store(ptr %t52, { ptr, i64, i64 } { ptr @.str.3231, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.3232, i64 1, i64 0 }, { ptr, i64, i64 } %t53) + store { ptr, i64, i64 } { ptr @.str.3233, i64 0, i64 0 }, ptr %a54 + %t55 = load i1, ptr %a5 + br i1 %t55, label %then5156, label %endif5158 +then5156: %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.3128, 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.3129, 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 - 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 - store { ptr, i64, i64 } %t72, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.3130, 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.3127, i64 3, i64 0 }, { ptr, i64, i64 } %t77) - store { ptr, i64, i64 } %t78, ptr %a53 - br label %endif4891 -endif4891: - %t79 = load ptr, ptr %a1 - %t80 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t79, { ptr, i64, i64 } { ptr @.str.3131, 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.3132, 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.3133, i64 8, i64 0 }) + %t58 = load ptr, ptr %a1 + %t59 = load %S.ast.Type, ptr %a4 + %t60 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t58, %S.ast.Type %t59) + store { ptr, i64, i64 } { ptr @.str.3235, i64 23, i64 0 }, ptr %a62 + store { ptr, i64, i64 } %t60, ptr %a63 + call void @finch_str_concat(ptr %a61, ptr %a62, ptr %a63) + store { ptr, i64, i64 } %t60, ptr %a64 + call void @finch_str_drop(ptr %a64) + %t65 = load { ptr, i64, i64 }, ptr %a61 + store { ptr, i64, i64 } %t65, ptr %a67 + store { ptr, i64, i64 } { ptr @.str.3236, i64 6, i64 0 }, ptr %a68 + call void @finch_str_concat(ptr %a66, ptr %a67, ptr %a68) + store { ptr, i64, i64 } %t65, ptr %a69 + call void @finch_str_drop(ptr %a69) + %t70 = load { ptr, i64, i64 }, ptr %a66 + %t71 = load { ptr, i64, i64 }, ptr %a3 + 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) + store { ptr, i64, i64 } %t70, ptr %a75 + call void @finch_str_drop(ptr %a75) + %t76 = load { ptr, i64, i64 }, ptr %a72 + store { ptr, i64, i64 } %t76, ptr %a78 + store { ptr, i64, i64 } { ptr @.str.3237, i64 14, i64 0 }, ptr %a79 + call void @finch_str_concat(ptr %a77, ptr %a78, ptr %a79) + store { ptr, i64, i64 } %t76, ptr %a80 + call void @finch_str_drop(ptr %a80) + %t81 = load { ptr, i64, i64 }, ptr %a77 + %t82 = call { ptr, i64, i64 } @finch.gen.op(ptr %t57, { ptr, i64, i64 } %t81) + store { ptr, i64, i64 } %t81, ptr %a83 + call void @finch_str_drop(ptr %a83) + %t84 = call { ptr, i64, i64 } @finch.gen.load(ptr %t56, { ptr, i64, i64 } { ptr @.str.3234, i64 3, i64 0 }, { ptr, i64, i64 } %t82) + store { ptr, i64, i64 } %t82, ptr %a85 + call void @finch_str_drop(ptr %a85) + %t86 = load { ptr, i64, i64 }, ptr %a54 + store { ptr, i64, i64 } %t84, ptr %a54 store { ptr, i64, i64 } %t86, ptr %a87 + call void @finch_str_drop(ptr %a87) + br label %endif5158 +endif5158: %t88 = load ptr, ptr %a1 - %t89 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t88, { ptr, i64, i64 } { ptr @.str.3134, i64 8, i64 0 }) + %t89 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t88, { ptr, i64, i64 } { ptr @.str.3238, 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.3135, i64 7, i64 0 }) + %t92 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t91, { ptr, i64, i64 } { ptr @.str.3239, i64 9, i64 0 }) store { ptr, i64, i64 } %t92, ptr %a93 %t94 = load ptr, ptr %a1 - %t95 = load { ptr, i64, i64 }, ptr %a81 - call void @finch.gen.br(ptr %t94, { ptr, i64, i64 } %t95) - %t96 = load ptr, ptr %a1 - %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.from4892 -logic.from4892: - br i1 %t98, label %logic.rhs4893, label %logic.end4894 -logic.rhs4893: - %t99 = load i1, ptr %a47 - br label %logic.rend4895 -logic.rend4895: - br label %logic.end4894 -logic.end4894: - %t100 = phi i1 [ false, %logic.from4892 ], [ %t99, %logic.rend4895 ] - br i1 %t100, label %then4896, label %endif4898 -then4896: - %t101 = load ptr, ptr %a1 - %t102 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t101, { ptr, i64, i64 } { ptr @.str.3136, 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.3137, 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.3139, 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.3140, 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 - store { ptr, i64, i64 } %t119, ptr %a122 + %t95 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t94, { ptr, i64, i64 } { ptr @.str.3240, i64 8, i64 0 }) + store { ptr, i64, i64 } %t95, ptr %a96 + %t97 = load ptr, ptr %a1 + %t98 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t97, { ptr, i64, i64 } { ptr @.str.3241, i64 8, i64 0 }) + store { ptr, i64, i64 } %t98, ptr %a99 + %t100 = load ptr, ptr %a1 + %t101 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t100, { ptr, i64, i64 } { ptr @.str.3242, i64 7, i64 0 }) + store { ptr, i64, i64 } %t101, ptr %a102 + %t103 = load ptr, ptr %a1 + %t104 = load { ptr, i64, i64 }, ptr %a90 + call void @finch.gen.br(ptr %t103, { ptr, i64, i64 } %t104) + %t105 = load ptr, ptr %a1 + %t106 = load { ptr, i64, i64 }, ptr %a90 + call void @finch.gen.label(ptr %t105, { ptr, i64, i64 } %t106) + %t107 = load i1, ptr %a5 + br label %logic.from5159 +logic.from5159: + br i1 %t107, label %logic.rhs5160, label %logic.end5161 +logic.rhs5160: + %t108 = load i1, ptr %a48 + br label %logic.rend5162 +logic.rend5162: + br label %logic.end5161 +logic.end5161: + %t109 = phi i1 [ false, %logic.from5159 ], [ %t108, %logic.rend5162 ] + br i1 %t109, label %then5163, label %endif5165 +then5163: + %t110 = load ptr, ptr %a1 + %t111 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t110, { ptr, i64, i64 } { ptr @.str.3243, i64 11, i64 0 }) + store { ptr, i64, i64 } %t111, ptr %a112 + %t113 = load ptr, ptr %a1 + %t114 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t113, { ptr, i64, i64 } { ptr @.str.3244, i64 8, i64 0 }) + store { ptr, i64, i64 } %t114, ptr %a115 + %t116 = load ptr, ptr %a1 + %t117 = load ptr, ptr %a1 + %t118 = load ptr, ptr %a1 + %t119 = load %S.ast.Type, ptr %a4 + %t120 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t118, %S.ast.Type %t119) + store { ptr, i64, i64 } { ptr @.str.3246, i64 23, i64 0 }, ptr %a122 store { ptr, i64, i64 } %t120, ptr %a123 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.3141, 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.3138, 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.3142, 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.3143, 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 + store { ptr, i64, i64 } %t120, ptr %a124 + call void @finch_str_drop(ptr %a124) + %t125 = load { ptr, i64, i64 }, ptr %a121 + store { ptr, i64, i64 } %t125, ptr %a127 + store { ptr, i64, i64 } { ptr @.str.3247, i64 6, i64 0 }, ptr %a128 + call void @finch_str_concat(ptr %a126, ptr %a127, ptr %a128) + store { ptr, i64, i64 } %t125, ptr %a129 + call void @finch_str_drop(ptr %a129) + %t130 = load { ptr, i64, i64 }, ptr %a126 + %t131 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t130, ptr %a133 + store { ptr, i64, i64 } %t131, ptr %a134 + call void @finch_str_concat(ptr %a132, ptr %a133, ptr %a134) + store { ptr, i64, i64 } %t130, ptr %a135 + call void @finch_str_drop(ptr %a135) + %t136 = load { ptr, i64, i64 }, ptr %a132 + store { ptr, i64, i64 } %t136, ptr %a138 + store { ptr, i64, i64 } { ptr @.str.3248, i64 14, i64 0 }, ptr %a139 + call void @finch_str_concat(ptr %a137, ptr %a138, ptr %a139) + store { ptr, i64, i64 } %t136, ptr %a140 + call void @finch_str_drop(ptr %a140) + %t141 = load { ptr, i64, i64 }, ptr %a137 + %t142 = call { ptr, i64, i64 } @finch.gen.op(ptr %t117, { ptr, i64, i64 } %t141) + store { ptr, i64, i64 } %t141, ptr %a143 + call void @finch_str_drop(ptr %a143) + %t144 = call { ptr, i64, i64 } @finch.gen.load(ptr %t116, { ptr, i64, i64 } { ptr @.str.3245, i64 3, i64 0 }, { ptr, i64, i64 } %t142) store { ptr, i64, i64 } %t142, ptr %a145 - store { ptr, i64, i64 } %t143, ptr %a146 - call void @finch_str_concat(ptr %a144, ptr %a145, ptr %a146) - %t147 = load { ptr, i64, i64 }, ptr %a144 - %t148 = call { ptr, i64, i64 } @finch.gen.op(ptr %t133, { ptr, i64, i64 } %t147) - %t149 = load { ptr, i64, i64 }, ptr %a103 - %t150 = load { ptr, i64, i64 }, ptr %a106 - call void @finch.gen.condBr(ptr %t132, { ptr, i64, i64 } %t148, { ptr, i64, i64 } %t149, { ptr, i64, i64 } %t150) - %t151 = load ptr, ptr %a1 - %t152 = load { ptr, i64, i64 }, ptr %a103 - call void @finch.gen.label(ptr %t151, { ptr, i64, i64 } %t152) - %t153 = load ptr, ptr %a1 - %t154 = load ptr, ptr %a1 - %t155 = load ptr, ptr %a1 - %t156 = icmp eq ptr %t155, null - br i1 %t156, label %panic4899, label %ok4900 -panic4899: - call void @finch_panic(ptr @.str.3145, i64 2279, ptr @.str.3146) + call void @finch_str_drop(ptr %a145) + store { ptr, i64, i64 } %t144, ptr %a146 + %t147 = load ptr, ptr %a1 + %t148 = load ptr, ptr %a1 + %t149 = load { ptr, i64, i64 }, ptr %a146 + store { ptr, i64, i64 } { ptr @.str.3249, i64 12, i64 0 }, ptr %a151 + store { ptr, i64, i64 } %t149, ptr %a152 + 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.3250, i64 2, i64 0 }, ptr %a156 + call void @finch_str_concat(ptr %a154, ptr %a155, ptr %a156) + store { ptr, i64, i64 } %t153, ptr %a157 + call void @finch_str_drop(ptr %a157) + %t158 = load { ptr, i64, i64 }, ptr %a154 + %t159 = load { ptr, i64, i64 }, ptr %a54 + store { ptr, i64, i64 } %t158, ptr %a161 + store { ptr, i64, i64 } %t159, ptr %a162 + call void @finch_str_concat(ptr %a160, ptr %a161, ptr %a162) + store { ptr, i64, i64 } %t158, ptr %a163 + call void @finch_str_drop(ptr %a163) + %t164 = load { ptr, i64, i64 }, ptr %a160 + %t165 = call { ptr, i64, i64 } @finch.gen.op(ptr %t148, { ptr, i64, i64 } %t164) + store { ptr, i64, i64 } %t164, ptr %a166 + call void @finch_str_drop(ptr %a166) + %t167 = load { ptr, i64, i64 }, ptr %a112 + %t168 = load { ptr, i64, i64 }, ptr %a115 + call void @finch.gen.condBr(ptr %t147, { ptr, i64, i64 } %t165, { ptr, i64, i64 } %t167, { ptr, i64, i64 } %t168) + store { ptr, i64, i64 } %t165, ptr %a169 + call void @finch_str_drop(ptr %a169) + %t170 = load ptr, ptr %a1 + %t171 = load { ptr, i64, i64 }, ptr %a112 + call void @finch.gen.label(ptr %t170, { ptr, i64, i64 } %t171) + %t172 = load ptr, ptr %a1 + %t173 = load ptr, ptr %a1 + %t174 = load ptr, ptr %a1 + %t175 = icmp eq ptr %t174, null + br i1 %t175, label %panic5166, label %ok5167 +panic5166: + call void @finch_panic(ptr @.str.3252, i64 2468, ptr @.str.3253) unreachable -ok4900: - %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 %range4901, label %inrange4902 -range4901: - call void @finch_panic_index(ptr @.str.3147, i64 2279, i64 %t159, i64 %t161) +ok5167: + %t176 = getelementptr inbounds %S.gen.Gen, ptr %t174, i32 0, i32 1 + %t177 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 + %t178 = load i64, ptr %t177 + %t179 = load { ptr, i64, i64 }, ptr %t176 + %t180 = extractvalue { ptr, i64, i64 } %t179, 1 + %t181 = icmp uge i64 %t178, %t180 + br i1 %t181, label %range5168, label %inrange5169 +range5168: + call void @finch_panic_index(ptr @.str.3254, i64 2468, i64 %t178, i64 %t180) unreachable -inrange4902: - %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.3144, 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.3148, 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 - %t176 = load i64, ptr %t175 - call void @finch_str_from_int(ptr %a177, i64 %t176) - %t178 = load { ptr, i64, i64 }, ptr %a177 - store { ptr, i64, i64 } %t174, 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 - store { ptr, i64, i64 } %t182, ptr %a184 - store { ptr, i64, i64 } { ptr @.str.3149, 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.3150, i64 11, i64 0 }) - %t188 = load ptr, ptr %a1 - %t189 = icmp eq ptr %t188, null - br i1 %t189, label %panic4903, label %ok4904 -panic4903: - call void @finch_panic(ptr @.str.3151, i64 2281, ptr @.str.3152) - unreachable -ok4904: - %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 %endif4898 -endif4898: - %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.3153, 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.3155, 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 +inrange5169: + %t182 = extractvalue { ptr, i64, i64 } %t179, 0 + %t183 = getelementptr inbounds { ptr, i64, i64 }, ptr %t182, i64 %t178 + %t184 = load { ptr, i64, i64 }, ptr %t183 + %t185 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t173, { ptr, i64, i64 } %t184) + store { ptr, i64, i64 } { ptr @.str.3251, i64 33, i64 0 }, ptr %a187 + store { ptr, i64, i64 } %t185, ptr %a188 + call void @finch_str_concat(ptr %a186, ptr %a187, ptr %a188) + store { ptr, i64, i64 } %t185, ptr %a189 + call void @finch_str_drop(ptr %a189) + %t190 = load { ptr, i64, i64 }, ptr %a186 + store { ptr, i64, i64 } %t190, ptr %a192 + store { ptr, i64, i64 } { ptr @.str.3255, i64 6, i64 0 }, ptr %a193 + call void @finch_str_concat(ptr %a191, ptr %a192, ptr %a193) + store { ptr, i64, i64 } %t190, ptr %a194 + call void @finch_str_drop(ptr %a194) + %t195 = load { ptr, i64, i64 }, ptr %a191 + %t196 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 + %t197 = load i64, ptr %t196 + call void @finch_str_from_int(ptr %a198, i64 %t197) + %t199 = load { ptr, i64, i64 }, ptr %a198 + store { ptr, i64, i64 } %t195, ptr %a201 + store { ptr, i64, i64 } %t199, ptr %a202 + call void @finch_str_concat(ptr %a200, ptr %a201, ptr %a202) + store { ptr, i64, i64 } %t195, ptr %a203 + call void @finch_str_drop(ptr %a203) + store { ptr, i64, i64 } %t199, ptr %a204 + call void @finch_str_drop(ptr %a204) + %t205 = load { ptr, i64, i64 }, ptr %a200 store { ptr, i64, i64 } %t205, ptr %a207 - store { ptr, i64, i64 } { ptr @.str.3156, i64 6, i64 0 }, ptr %a208 + store { ptr, i64, i64 } { ptr @.str.3256, i64 1, 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 - store { ptr, i64, i64 } %t209, ptr %a212 - store { ptr, i64, i64 } %t210, ptr %a213 - 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.3157, 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.3154, i64 3, i64 0 }, { ptr, i64, i64 } %t219) + store { ptr, i64, i64 } %t205, ptr %a209 + call void @finch_str_drop(ptr %a209) + %t210 = load { ptr, i64, i64 }, ptr %a206 + call void @finch.gen.emit(ptr %t172, { ptr, i64, i64 } %t210) + store { ptr, i64, i64 } %t210, ptr %a211 + call void @finch_str_drop(ptr %a211) + %t212 = load ptr, ptr %a1 + call void @finch.gen.emit(ptr %t212, { ptr, i64, i64 } { ptr @.str.3257, i64 11, i64 0 }) + %t213 = load ptr, ptr %a1 + %t214 = icmp eq ptr %t213, null + br i1 %t214, label %panic5170, label %ok5171 +panic5170: + call void @finch_panic(ptr @.str.3258, i64 2470, ptr @.str.3259) + unreachable +ok5171: + %t215 = getelementptr inbounds %S.gen.Gen, ptr %t213, i32 0, i32 9 + store i1 true, ptr %t215 + %t216 = load ptr, ptr %a1 + %t217 = load { ptr, i64, i64 }, ptr %a115 + call void @finch.gen.label(ptr %t216, { ptr, i64, i64 } %t217) + call void @finch_str_drop(ptr %a146) + call void @finch_str_drop(ptr %a115) + call void @finch_str_drop(ptr %a112) + br label %endif5165 +endif5165: + %t218 = load ptr, ptr %a1 + %t219 = load { ptr, i64, i64 }, ptr %a51 + %t220 = call { ptr, i64, i64 } @finch.gen.load(ptr %t218, { ptr, i64, i64 } { ptr @.str.3260, 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.3158, 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.3159, 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 - store { ptr, i64, i64 } %t232, 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 - %t238 = call { ptr, i64, i64 } @finch.gen.op(ptr %t223, { ptr, i64, i64 } %t237) - %t239 = load { ptr, i64, i64 }, ptr %a84 - %t240 = load { ptr, i64, i64 }, ptr %a93 - call void @finch.gen.condBr(ptr %t222, { ptr, i64, i64 } %t238, { ptr, i64, i64 } %t239, { ptr, i64, i64 } %t240) - %t241 = load ptr, ptr %a1 - %t242 = load { ptr, i64, i64 }, ptr %a84 - call void @finch.gen.label(ptr %t241, { ptr, i64, i64 } %t242) - %t243 = load ptr, ptr %a1 - %t244 = load { ptr, i64, i64 }, ptr %a3 - %t245 = load %S.ast.Type, ptr %a4 - %t246 = load { ptr, i64, i64 }, ptr %a196 - %t247 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t243, { ptr, i64, i64 } %t244, %S.ast.Type %t245, { ptr, i64, i64 } %t246) - store { ptr, i64, i64 } %t247, ptr %a248 - %t249 = load ptr, ptr %a1 - %t250 = load ptr, ptr %a1 - %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.3160, 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.3161, 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.3162, 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) - %t268 = load { ptr, i64, i64 }, ptr %a90 - %t269 = load { ptr, i64, i64 }, ptr %a87 - call void @finch.gen.condBr(ptr %t256, { ptr, i64, i64 } %t267, { ptr, i64, i64 } %t268, { ptr, i64, i64 } %t269) - %t270 = load ptr, ptr %a1 - %t271 = load { ptr, i64, i64 }, ptr %a87 - 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 %panic4905, label %ok4906 -panic4905: - call void @finch_panic(ptr @.str.3163, i64 2292, ptr @.str.3164) + %t224 = load ptr, ptr %a1 + %t225 = load %S.ast.Type, ptr %a4 + %t226 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t224, %S.ast.Type %t225) + store { ptr, i64, i64 } { ptr @.str.3262, i64 23, i64 0 }, ptr %a228 + store { ptr, i64, i64 } %t226, ptr %a229 + call void @finch_str_concat(ptr %a227, ptr %a228, ptr %a229) + store { ptr, i64, i64 } %t226, ptr %a230 + call void @finch_str_drop(ptr %a230) + %t231 = load { ptr, i64, i64 }, ptr %a227 + store { ptr, i64, i64 } %t231, ptr %a233 + store { ptr, i64, i64 } { ptr @.str.3263, i64 6, i64 0 }, ptr %a234 + call void @finch_str_concat(ptr %a232, ptr %a233, ptr %a234) + store { ptr, i64, i64 } %t231, ptr %a235 + call void @finch_str_drop(ptr %a235) + %t236 = load { ptr, i64, i64 }, ptr %a232 + %t237 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t236, ptr %a239 + store { ptr, i64, i64 } %t237, ptr %a240 + call void @finch_str_concat(ptr %a238, ptr %a239, ptr %a240) + store { ptr, i64, i64 } %t236, ptr %a241 + call void @finch_str_drop(ptr %a241) + %t242 = load { ptr, i64, i64 }, ptr %a238 + store { ptr, i64, i64 } %t242, ptr %a244 + store { ptr, i64, i64 } { ptr @.str.3264, i64 14, i64 0 }, ptr %a245 + call void @finch_str_concat(ptr %a243, ptr %a244, ptr %a245) + store { ptr, i64, i64 } %t242, ptr %a246 + call void @finch_str_drop(ptr %a246) + %t247 = load { ptr, i64, i64 }, ptr %a243 + %t248 = call { ptr, i64, i64 } @finch.gen.op(ptr %t223, { ptr, i64, i64 } %t247) + store { ptr, i64, i64 } %t247, ptr %a249 + call void @finch_str_drop(ptr %a249) + %t250 = call { ptr, i64, i64 } @finch.gen.load(ptr %t222, { ptr, i64, i64 } { ptr @.str.3261, i64 3, i64 0 }, { ptr, i64, i64 } %t248) + store { ptr, i64, i64 } %t248, ptr %a251 + call void @finch_str_drop(ptr %a251) + store { ptr, i64, i64 } %t250, ptr %a252 + %t253 = load ptr, ptr %a1 + %t254 = load ptr, ptr %a1 + %t255 = load { ptr, i64, i64 }, ptr %a221 + store { ptr, i64, i64 } { ptr @.str.3265, i64 13, i64 0 }, ptr %a257 + store { ptr, i64, i64 } %t255, ptr %a258 + call void @finch_str_concat(ptr %a256, ptr %a257, ptr %a258) + %t259 = load { ptr, i64, i64 }, ptr %a256 + store { ptr, i64, i64 } %t259, ptr %a261 + store { ptr, i64, i64 } { ptr @.str.3266, i64 2, i64 0 }, ptr %a262 + call void @finch_str_concat(ptr %a260, ptr %a261, ptr %a262) + store { ptr, i64, i64 } %t259, ptr %a263 + call void @finch_str_drop(ptr %a263) + %t264 = load { ptr, i64, i64 }, ptr %a260 + %t265 = load { ptr, i64, i64 }, ptr %a252 + store { ptr, i64, i64 } %t264, ptr %a267 + store { ptr, i64, i64 } %t265, ptr %a268 + call void @finch_str_concat(ptr %a266, ptr %a267, ptr %a268) + store { ptr, i64, i64 } %t264, ptr %a269 + call void @finch_str_drop(ptr %a269) + %t270 = load { ptr, i64, i64 }, ptr %a266 + %t271 = call { ptr, i64, i64 } @finch.gen.op(ptr %t254, { ptr, i64, i64 } %t270) + store { ptr, i64, i64 } %t270, ptr %a272 + call void @finch_str_drop(ptr %a272) + %t273 = load { ptr, i64, i64 }, ptr %a93 + %t274 = load { ptr, i64, i64 }, ptr %a102 + call void @finch.gen.condBr(ptr %t253, { ptr, i64, i64 } %t271, { ptr, i64, i64 } %t273, { ptr, i64, i64 } %t274) + store { ptr, i64, i64 } %t271, ptr %a275 + call void @finch_str_drop(ptr %a275) + %t276 = load ptr, ptr %a1 + %t277 = load { ptr, i64, i64 }, ptr %a93 + call void @finch.gen.label(ptr %t276, { ptr, i64, i64 } %t277) + %t278 = load ptr, ptr %a1 + %t279 = load { ptr, i64, i64 }, ptr %a3 + %t280 = load %S.ast.Type, ptr %a4 + %t281 = load { ptr, i64, i64 }, ptr %a221 + %t282 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t278, { ptr, i64, i64 } %t279, %S.ast.Type %t280, { ptr, i64, i64 } %t281) + store { ptr, i64, i64 } %t282, ptr %a283 + %t284 = load ptr, ptr %a1 + %t285 = load ptr, ptr %a1 + %t286 = load { ptr, i64, i64 }, ptr %a283 + %t287 = load %S.ast.Type, ptr %a4 + %t288 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t285, { ptr, i64, i64 } %t286, %S.ast.Type %t287, i64 0) + %t289 = call { ptr, i64, i64 } @finch.gen.load(ptr %t284, { ptr, i64, i64 } { ptr @.str.3267, i64 3, i64 0 }, { ptr, i64, i64 } %t288) + store { ptr, i64, i64 } %t288, ptr %a290 + call void @finch_str_drop(ptr %a290) + store { ptr, i64, i64 } %t289, ptr %a291 + %t292 = load ptr, ptr %a1 + %t293 = load ptr, ptr %a1 + %t294 = load { ptr, i64, i64 }, ptr %a291 + store { ptr, i64, i64 } { ptr @.str.3268, i64 12, i64 0 }, ptr %a296 + store { ptr, i64, i64 } %t294, 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 %a300 + store { ptr, i64, i64 } { ptr @.str.3269, i64 3, i64 0 }, ptr %a301 + call void @finch_str_concat(ptr %a299, ptr %a300, ptr %a301) + store { ptr, i64, i64 } %t298, ptr %a302 + call void @finch_str_drop(ptr %a302) + %t303 = load { ptr, i64, i64 }, ptr %a299 + %t304 = call { ptr, i64, i64 } @finch.gen.op(ptr %t293, { ptr, i64, i64 } %t303) + store { ptr, i64, i64 } %t303, ptr %a305 + call void @finch_str_drop(ptr %a305) + %t306 = load { ptr, i64, i64 }, ptr %a99 + %t307 = load { ptr, i64, i64 }, ptr %a96 + call void @finch.gen.condBr(ptr %t292, { ptr, i64, i64 } %t304, { ptr, i64, i64 } %t306, { ptr, i64, i64 } %t307) + store { ptr, i64, i64 } %t304, ptr %a308 + call void @finch_str_drop(ptr %a308) + %t309 = load ptr, ptr %a1 + %t310 = load { ptr, i64, i64 }, ptr %a96 + call void @finch.gen.label(ptr %t309, { ptr, i64, i64 } %t310) + %t311 = load ptr, ptr %a1 + %t312 = icmp eq ptr %t311, null + br i1 %t312, label %panic5172, label %ok5173 +panic5172: + call void @finch_panic(ptr @.str.3270, i64 2481, ptr @.str.3271) unreachable -ok4906: - %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 - store { ptr, i64, i64 } %t276, ptr %a277 - call void @finch_str_copy(ptr %a278, ptr %a277) - %t279 = load { ptr, i64, i64 }, ptr %a278 - %t280 = insertvalue %S.gen.Loop zeroinitializer, { ptr, i64, i64 } %t279, 0 - %t281 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t281, ptr %a282 - call void @finch_str_copy(ptr %a283, ptr %a282) - %t284 = load { ptr, i64, i64 }, ptr %a283 - %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 %panic4907, label %ok4908 -panic4907: - call void @finch_panic(ptr @.str.3165, i64 2292, ptr @.str.3166) +ok5173: + %t313 = getelementptr inbounds %S.gen.Gen, ptr %t311, i32 0, i32 12 + %t314 = getelementptr inbounds { ptr, i64, i64 }, ptr %t313, i32 0, i32 1 + %t315 = load { ptr, i64, i64 }, ptr %a99 + store { ptr, i64, i64 } %t315, ptr %a316 + call void @finch_str_copy(ptr %a317, ptr %a316) + %t318 = load { ptr, i64, i64 }, ptr %a317 + %t319 = insertvalue %S.gen.Loop zeroinitializer, { ptr, i64, i64 } %t318, 0 + %t320 = load { ptr, i64, i64 }, ptr %a102 + store { ptr, i64, i64 } %t320, ptr %a321 + call void @finch_str_copy(ptr %a322, ptr %a321) + %t323 = load { ptr, i64, i64 }, ptr %a322 + %t324 = insertvalue %S.gen.Loop %t319, { ptr, i64, i64 } %t323, 1 + %t325 = load ptr, ptr %a1 + %t326 = icmp eq ptr %t325, null + br i1 %t326, label %panic5174, label %ok5175 +panic5174: + call void @finch_panic(ptr @.str.3272, i64 2481, ptr @.str.3273) unreachable -ok4908: - %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 - %t291 = insertvalue %S.gen.Loop %t285, i64 %t290, 2 - %t292 = load i64, ptr %t275 - %t293 = add i64 %t292, 1 - call void @finch_arr_reserve(ptr %t274, i64 %t293, i64 ptrtoint (ptr getelementptr (%S.gen.Loop, ptr null, i32 1) to i64)) - %t294 = load ptr, ptr %t274 - %t295 = getelementptr inbounds %S.gen.Loop, ptr %t294, i64 %t292 - store %S.gen.Loop %t291, ptr %t295 - store i64 %t293, ptr %t275 - %t296 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t296) - %t297 = load ptr, ptr %a1 - %t298 = load ptr, ptr %a1 - %t299 = load %S.ast.Type, ptr %a16 - %t300 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t298, %S.ast.Type %t299) - %t301 = load ptr, ptr %a1 - %t302 = load { ptr, i64, i64 }, ptr %a248 - %t303 = load %S.ast.Type, ptr %a4 - %t304 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t301, { ptr, i64, i64 } %t302, %S.ast.Type %t303, i64 1) - %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 %then4909, label %endif4911 -then4909: - %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 %endif4911 -endif4911: - %t312 = load ptr, ptr %a1 - %t313 = load %S.ast.Node, ptr %a2 - %t314 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t315 = load { ptr, i64, i64 }, ptr %t314 - %t316 = load %S.ast.Type, ptr %a16 - %t317 = load { ptr, i64, i64 }, ptr %a306 - %t318 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t312, %S.ast.Node %t313, { ptr, i64, i64 } %t315, %S.ast.Type %t316, { ptr, i64, i64 } %t317, i1 true) - %t319 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 - %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 %then4912, label %endif4914 -then4912: - %t323 = load ptr, ptr %a1 - %t324 = load ptr, ptr %a1 - %t325 = load %S.ast.Type, ptr %a27 - %t326 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t324, %S.ast.Type %t325) - %t327 = load ptr, ptr %a1 - %t328 = load { ptr, i64, i64 }, ptr %a248 - %t329 = load %S.ast.Type, ptr %a4 - %t330 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t327, { ptr, i64, i64 } %t328, %S.ast.Type %t329, i64 2) - %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 %then4915, label %endif4917 -then4915: - %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 %endif4917 -endif4917: - %t338 = load ptr, ptr %a1 - %t339 = load %S.ast.Node, ptr %a2 - %t340 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 - %t341 = load { ptr, i64, i64 }, ptr %t340 - %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 %endif4914 -endif4914: - %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 %range4918, label %inrange4919 -range4918: - call void @finch_panic_index(ptr @.str.3167, i64 2306, i64 1, i64 %t348) +ok5175: + %t327 = getelementptr inbounds %S.gen.Gen, ptr %t325, i32 0, i32 10 + %t328 = getelementptr inbounds { ptr, i64, i64 }, ptr %t327, i32 0, i32 1 + %t329 = load i64, ptr %t328 + %t330 = insertvalue %S.gen.Loop %t324, i64 %t329, 2 + %t331 = load ptr, ptr %a1 + %t332 = icmp eq ptr %t331, null + br i1 %t332, label %panic5176, label %ok5177 +panic5176: + call void @finch_panic(ptr @.str.3274, i64 2481, ptr @.str.3275) unreachable -inrange4919: - %t350 = extractvalue { ptr, i64, i64 } %t347, 0 - %t351 = getelementptr inbounds %S.ast.Node, ptr %t350, i64 1 - %t352 = load %S.ast.Node, ptr %t351 - call void @finch.gen.block(ptr %t345, %S.ast.Node %t352, i1 true) - %t353 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t353) - %t354 = load ptr, ptr %a1 - %t355 = icmp eq ptr %t354, null - br i1 %t355, label %panic4920, label %ok4921 -panic4920: - call void @finch_panic(ptr @.str.3168, i64 2308, ptr @.str.3169) - unreachable -ok4921: - %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 %panic4922, label %ok4923 -panic4922: - call void @finch_panic(ptr @.str.3170, i64 2308, ptr @.str.3171) - unreachable -ok4923: - %t360 = sub i64 %t358, 1 - %t361 = load ptr, ptr %t356 - %t362 = getelementptr inbounds %S.gen.Loop, ptr %t361, i64 %t360 - %t363 = load %S.gen.Loop, ptr %t362 - store i64 %t360, ptr %t357 - %t364 = load ptr, ptr %a1 - %t365 = load { ptr, i64, i64 }, ptr %a90 - call void @finch.gen.br(ptr %t364, { ptr, i64, i64 } %t365) - %t366 = load ptr, ptr %a1 - %t367 = load { ptr, i64, i64 }, ptr %a90 - 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.3172, 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.3174, 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.3175, 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.3173, 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) +ok5177: + %t333 = getelementptr inbounds %S.gen.Gen, ptr %t331, i32 0, i32 11 + %t334 = getelementptr inbounds { ptr, i64, i64 }, ptr %t333, i32 0, i32 1 + %t335 = load i64, ptr %t334 + %t336 = insertvalue %S.gen.Loop %t330, i64 %t335, 3 + %t337 = load i64, ptr %t314 + %t338 = add i64 %t337, 1 + call void @finch_arr_reserve(ptr %t313, i64 %t338, i64 ptrtoint (ptr getelementptr (%S.gen.Loop, ptr null, i32 1) to i64)) + %t339 = load ptr, ptr %t313 + %t340 = getelementptr inbounds %S.gen.Loop, ptr %t339, i64 %t337 + store %S.gen.Loop %t336, ptr %t340 + store i64 %t338, ptr %t314 + %t341 = load ptr, ptr %a1 + call void @finch.gen.pushScope(ptr %t341) + %t342 = load ptr, ptr %a1 + %t343 = load ptr, ptr %a1 + %t344 = load %S.ast.Type, ptr %a16 + %t345 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t343, %S.ast.Type %t344) + %t346 = load ptr, ptr %a1 + %t347 = load { ptr, i64, i64 }, ptr %a283 + %t348 = load %S.ast.Type, ptr %a4 + %t349 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t346, { ptr, i64, i64 } %t347, %S.ast.Type %t348, i64 1) + %t350 = call { ptr, i64, i64 } @finch.gen.load(ptr %t342, { ptr, i64, i64 } %t345, { ptr, i64, i64 } %t349) + store { ptr, i64, i64 } %t345, ptr %a351 + call void @finch_str_drop(ptr %a351) + store { ptr, i64, i64 } %t349, ptr %a352 + call void @finch_str_drop(ptr %a352) + store { ptr, i64, i64 } %t350, ptr %a353 + %t354 = load i1, ptr %a48 + br i1 %t354, label %then5178, label %endif5180 +then5178: + %t355 = load ptr, ptr %a1 + %t356 = load { ptr, i64, i64 }, ptr %a353 + %t357 = load %S.ast.Type, ptr %a16 + %t358 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t355, { ptr, i64, i64 } %t356, %S.ast.Type %t357) + %t359 = load { ptr, i64, i64 }, ptr %a353 + store { ptr, i64, i64 } %t358, ptr %a353 + store { ptr, i64, i64 } %t359, ptr %a360 + call void @finch_str_drop(ptr %a360) + br label %endif5180 +endif5180: + %t361 = load ptr, ptr %a1 + %t362 = load %S.ast.Node, ptr %a2 + %t363 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t364 = load { ptr, i64, i64 }, ptr %t363 + %t365 = load %S.ast.Type, ptr %a16 + %t366 = load { ptr, i64, i64 }, ptr %a353 + %t367 = load i1, ptr %a48 + %t368 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t361, %S.ast.Node %t362, { ptr, i64, i64 } %t364, %S.ast.Type %t365, { ptr, i64, i64 } %t366, i1 true, i1 %t367) + store { ptr, i64, i64 } %t368, ptr %a369 + call void @finch_str_drop(ptr %a369) + %t370 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 + %t371 = getelementptr inbounds { ptr, i64, i64 }, ptr %t370, i32 0, i32 1 + %t372 = load i64, ptr %t371 + %t373 = icmp sgt i64 %t372, 0 + br i1 %t373, label %then5181, label %endif5183 +then5181: + %t374 = load ptr, ptr %a1 + %t375 = load ptr, ptr %a1 + %t376 = load %S.ast.Type, ptr %a27 + %t377 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t375, %S.ast.Type %t376) + %t378 = load ptr, ptr %a1 + %t379 = load { ptr, i64, i64 }, ptr %a283 + %t380 = load %S.ast.Type, ptr %a4 + %t381 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t378, { ptr, i64, i64 } %t379, %S.ast.Type %t380, i64 2) + %t382 = call { ptr, i64, i64 } @finch.gen.load(ptr %t374, { ptr, i64, i64 } %t377, { ptr, i64, i64 } %t381) + store { ptr, i64, i64 } %t377, ptr %a383 + call void @finch_str_drop(ptr %a383) + store { ptr, i64, i64 } %t381, ptr %a384 + call void @finch_str_drop(ptr %a384) + store { ptr, i64, i64 } %t382, ptr %a385 + %t386 = load i1, ptr %a48 + br i1 %t386, label %then5184, label %endif5186 +then5184: %t387 = load ptr, ptr %a1 - %t388 = load { ptr, i64, i64 }, ptr %a93 - call void @finch.gen.label(ptr %t387, { ptr, i64, i64 } %t388) + %t388 = load { ptr, i64, i64 }, ptr %a385 + %t389 = load %S.ast.Type, ptr %a27 + %t390 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t387, { ptr, i64, i64 } %t388, %S.ast.Type %t389) + %t391 = load { ptr, i64, i64 }, ptr %a385 + store { ptr, i64, i64 } %t390, ptr %a385 + store { ptr, i64, i64 } %t391, ptr %a392 + call void @finch_str_drop(ptr %a392) + br label %endif5186 +endif5186: + %t393 = load ptr, ptr %a1 + %t394 = load %S.ast.Node, ptr %a2 + %t395 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 + %t396 = load { ptr, i64, i64 }, ptr %t395 + %t397 = load %S.ast.Type, ptr %a27 + %t398 = load { ptr, i64, i64 }, ptr %a385 + %t399 = load i1, ptr %a48 + %t400 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t393, %S.ast.Node %t394, { ptr, i64, i64 } %t396, %S.ast.Type %t397, { ptr, i64, i64 } %t398, i1 true, i1 %t399) + store { ptr, i64, i64 } %t400, ptr %a401 + call void @finch_str_drop(ptr %a401) + call void @finch_str_drop(ptr %a385) + br label %endif5183 +endif5183: + %t402 = load ptr, ptr %a1 + %t403 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t404 = load { ptr, i64, i64 }, ptr %t403 + %t405 = extractvalue { ptr, i64, i64 } %t404, 1 + %t406 = icmp uge i64 1, %t405 + br i1 %t406, label %range5187, label %inrange5188 +range5187: + call void @finch_panic_index(ptr @.str.3276, i64 2495, i64 1, i64 %t405) + unreachable +inrange5188: + %t407 = extractvalue { ptr, i64, i64 } %t404, 0 + %t408 = getelementptr inbounds %S.ast.Node, ptr %t407, i64 1 + %t409 = load %S.ast.Node, ptr %t408 + call void @finch.gen.block(ptr %t402, %S.ast.Node %t409, i1 true) + %t410 = load ptr, ptr %a1 + call void @finch.gen.popScope(ptr %t410) + %t411 = load ptr, ptr %a1 + %t412 = icmp eq ptr %t411, null + br i1 %t412, label %panic5189, label %ok5190 +panic5189: + call void @finch_panic(ptr @.str.3277, i64 2497, ptr @.str.3278) + unreachable +ok5190: + %t413 = getelementptr inbounds %S.gen.Gen, ptr %t411, i32 0, i32 12 + %t414 = getelementptr inbounds { ptr, i64, i64 }, ptr %t413, i32 0, i32 1 + %t415 = load i64, ptr %t414 + %t416 = icmp eq i64 %t415, 0 + br i1 %t416, label %panic5191, label %ok5192 +panic5191: + call void @finch_panic(ptr @.str.3279, i64 2497, ptr @.str.3280) + unreachable +ok5192: + %t417 = sub i64 %t415, 1 + %t418 = load ptr, ptr %t413 + %t419 = getelementptr inbounds %S.gen.Loop, ptr %t418, i64 %t417 + %t420 = load %S.gen.Loop, ptr %t419 + store i64 %t417, ptr %t414 + store %S.gen.Loop %t420, ptr %a421 + call void @finch.drop.S_gen_Loop(ptr %a421) + %t422 = load ptr, ptr %a1 + %t423 = load { ptr, i64, i64 }, ptr %a99 + call void @finch.gen.br(ptr %t422, { ptr, i64, i64 } %t423) + %t424 = load ptr, ptr %a1 + %t425 = load { ptr, i64, i64 }, ptr %a99 + call void @finch.gen.label(ptr %t424, { ptr, i64, i64 } %t425) + %t426 = load ptr, ptr %a1 + %t427 = load { ptr, i64, i64 }, ptr %a51 + %t428 = call { ptr, i64, i64 } @finch.gen.load(ptr %t426, { ptr, i64, i64 } { ptr @.str.3281, i64 3, i64 0 }, { ptr, i64, i64 } %t427) + store { ptr, i64, i64 } %t428, ptr %a429 + %t430 = load ptr, ptr %a1 + %t431 = load ptr, ptr %a1 + %t432 = load { ptr, i64, i64 }, ptr %a429 + store { ptr, i64, i64 } { ptr @.str.3283, i64 8, i64 0 }, ptr %a434 + store { ptr, i64, i64 } %t432, ptr %a435 + 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.3284, i64 3, i64 0 }, ptr %a439 + call void @finch_str_concat(ptr %a437, ptr %a438, ptr %a439) + store { ptr, i64, i64 } %t436, ptr %a440 + call void @finch_str_drop(ptr %a440) + %t441 = load { ptr, i64, i64 }, ptr %a437 + %t442 = call { ptr, i64, i64 } @finch.gen.op(ptr %t431, { ptr, i64, i64 } %t441) + store { ptr, i64, i64 } %t441, ptr %a443 + call void @finch_str_drop(ptr %a443) + %t444 = load { ptr, i64, i64 }, ptr %a51 + call void @finch.gen.store(ptr %t430, { ptr, i64, i64 } { ptr @.str.3282, i64 3, i64 0 }, { ptr, i64, i64 } %t442, { ptr, i64, i64 } %t444) + store { ptr, i64, i64 } %t442, ptr %a445 + call void @finch_str_drop(ptr %a445) + %t446 = load ptr, ptr %a1 + %t447 = load { ptr, i64, i64 }, ptr %a90 + call void @finch.gen.br(ptr %t446, { ptr, i64, i64 } %t447) + %t448 = load ptr, ptr %a1 + %t449 = load { ptr, i64, i64 }, ptr %a102 + call void @finch.gen.label(ptr %t448, { ptr, i64, i64 } %t449) + call void @finch_str_drop(ptr %a429) + call void @finch_str_drop(ptr %a353) + call void @finch_str_drop(ptr %a291) + call void @finch_str_drop(ptr %a283) + call void @finch_str_drop(ptr %a252) + call void @finch_str_drop(ptr %a221) + call void @finch_str_drop(ptr %a102) + call void @finch_str_drop(ptr %a99) + call void @finch_str_drop(ptr %a96) + call void @finch_str_drop(ptr %a93) + call void @finch_str_drop(ptr %a90) + call void @finch_str_drop(ptr %a54) + call void @finch_str_drop(ptr %a51) + call void @finch.drop.S_ast_Type(ptr %a27) + call void @finch.drop.S_ast_Type(ptr %a16) + ret void +} + +define internal void @finch.drop.S_gen_Ref(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.gen.Ref, ptr %a, i32 0, i32 1 + call void @finch.drop.S_gen_Place(ptr %t1) + %t2 = getelementptr inbounds %S.gen.Ref, ptr %a, i32 0, i32 2 + call void @finch.drop.S_gen_Val(ptr %t2) ret void } @@ -44878,85 +52467,123 @@ entry: %a16 = alloca %S.ast.Type, align 16 %a22 = alloca { ptr, i64, i64 }, align 16 %a23 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca %S.ast.Type, align 16 - %a29 = alloca %S.ast.Type, align 16 + %a26 = alloca { ptr, i64, i64 }, align 16 + %a30 = alloca %S.ast.Type, align 16 + %a31 = alloca %S.ast.Type, align 16 %a34 = alloca %S.ast.Type, align 16 - %a35 = alloca %S.ast.Type, align 16 - %a43 = 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 + %a38 = alloca %S.ast.Type, align 16 + %a39 = alloca %S.ast.Type, align 16 + %a42 = alloca %S.ast.Type, 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 + %a54 = alloca { ptr, i64, i64 }, align 16 %a62 = alloca { ptr, i64, i64 }, align 16 %a63 = 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 + %a65 = alloca { ptr, i64, i64 }, align 16 + %a68 = alloca { ptr, i64, i64 }, align 16 + %a69 = 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 - %a86 = alloca %S.ast.Type, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca %S.ast.Type, align 16 - %a101 = alloca %S.ast.Type, align 16 - %a127 = alloca i1, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 + %a87 = alloca { ptr, i64, i64 }, align 16 + %a88 = 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 + %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 + %a112 = alloca { ptr, i64, i64 }, align 16 + %a114 = alloca %S.ast.Type, align 16 + %a117 = alloca { ptr, i64, i64 }, align 16 + %a118 = alloca { ptr, i64, i64 }, align 16 + %a128 = alloca %S.ast.Type, align 16 + %a129 = alloca %S.ast.Type, align 16 + %a132 = alloca %S.ast.Type, align 16 %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 + %a158 = alloca i1, align 16 + %a161 = alloca { ptr, i64, i64 }, align 16 %a166 = 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 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 + %a172 = alloca { ptr, i64, i64 }, align 16 %a175 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = 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 + %a187 = 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 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 + %a195 = alloca { ptr, i64, i64 }, align 16 + %a196 = alloca { ptr, i64, i64 }, align 16 %a200 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 %a203 = alloca { ptr, i64, i64 }, align 16 %a204 = alloca { ptr, i64, i64 }, align 16 + %a205 = 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 + %a210 = 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 %a216 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 + %a219 = alloca { ptr, i64, i64 }, align 16 + %a220 = 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 + %a237 = alloca { ptr, i64, i64 }, align 16 + %a238 = alloca { ptr, i64, i64 }, align 16 %a240 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 + %a241 = alloca { ptr, i64, i64 }, align 16 + %a242 = alloca { ptr, i64, i64 }, align 16 + %a243 = 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 + %a254 = 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 + %a260 = alloca { ptr, i64, i64 }, align 16 + %a263 = alloca { ptr, i64, i64 }, align 16 %a264 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 + %a271 = alloca { ptr, i64, i64 }, align 16 + %a272 = alloca { ptr, i64, i64 }, align 16 %a279 = alloca { ptr, i64, i64 }, align 16 + %a285 = alloca { ptr, i64, i64 }, align 16 + %a286 = alloca { ptr, i64, i64 }, align 16 + %a290 = alloca { ptr, i64, i64 }, align 16 + %a291 = alloca { ptr, i64, i64 }, align 16 %a313 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 + %a314 = alloca { ptr, i64, i64 }, align 16 + %a316 = alloca { ptr, i64, i64 }, align 16 + %a328 = alloca %S.ast.Type, align 16 + %a329 = alloca { ptr, i64, i64 }, align 16 + %a332 = alloca { ptr, i64, i64 }, align 16 + %a333 = alloca { ptr, i64, i64 }, align 16 + %a336 = alloca { ptr, i64, i64 }, align 16 + %a344 = alloca { ptr, i64, i64 }, align 16 + %a364 = alloca %S.gen.Loop, align 16 + %a372 = alloca { ptr, i64, i64 }, align 16 + %a376 = alloca { ptr, i64, i64 }, align 16 + %a377 = alloca { ptr, i64, i64 }, align 16 + %a378 = alloca { ptr, i64, i64 }, align 16 + %a380 = 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 + %a386 = alloca { ptr, i64, i64 }, align 16 + %a388 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store %S.ast.Node %p1, ptr %a2 %t3 = load ptr, ptr %a1 @@ -44966,457 +52593,583 @@ 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 %range4924, label %inrange4925 -range4924: - call void @finch_panic_index(ptr @.str.3176, i64 2319, i64 0, i64 %t7) + br i1 %t8, label %range5193, label %inrange5194 +range5193: + call void @finch_panic_index(ptr @.str.3285, i64 2508, i64 0, i64 %t7) unreachable -inrange4925: +inrange5194: %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.3177, i64 0, i64 0 }, ptr %a14 - %t15 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3178, i64 4, i64 0 }) + store { ptr, i64, i64 } { ptr @.str.3286, i64 0, i64 0 }, ptr %a14 + %t15 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3287, 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 %then4926, label %else4927 -then4926: + br i1 %t18, label %then5195, label %else5196 +then5195: %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 store { ptr, i64, i64 } %t21, ptr %a22 call void @finch_str_copy(ptr %a23, ptr %a22) %t24 = load { ptr, i64, i64 }, ptr %a23 + %t25 = load { ptr, i64, i64 }, ptr %a14 store { ptr, i64, i64 } %t24, ptr %a14 - %t25 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 1 - %t26 = getelementptr inbounds %S.gen.Place, ptr %t25, i32 0, i32 1 - %t27 = load %S.ast.Type, ptr %t26 - store %S.ast.Type %t27, ptr %a28 - 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 %endif4928 -else4927: - %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 + store { ptr, i64, i64 } %t25, ptr %a26 + call void @finch_str_drop(ptr %a26) + %t27 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 1 + %t28 = getelementptr inbounds %S.gen.Place, ptr %t27, i32 0, i32 1 + %t29 = load %S.ast.Type, ptr %t28 + 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 = load %S.ast.Type, ptr %a16 + store %S.ast.Type %t32, ptr %a16 store %S.ast.Type %t33, ptr %a34 - call void @finch.copy.S_ast_Type(ptr %a35, ptr %a34) - %t36 = load %S.ast.Type, ptr %a35 - store %S.ast.Type %t36, ptr %a16 - %t37 = load ptr, ptr %a1 - %t38 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 2 - %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 %endif4928 -endif4928: - %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.3179, 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 %then4929, label %endif4931 -then4929: - %t47 = load ptr, ptr %a1 - %t48 = load %S.ast.Node, ptr %a2 - %t49 = load { ptr, i64, i64 }, ptr %a14 - %t50 = load %S.ast.Type, ptr %a16 - %t51 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 0 - %t52 = load i1, ptr %t51 - call void @finch.gen.eachMap(ptr %t47, %S.ast.Node %t48, { ptr, i64, i64 } %t49, %S.ast.Type %t50, i1 %t52) - %t53 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t53) - ret void -endif4931: - %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.3180, 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.from4932 -logic.from4932: - br i1 %t59, label %logic.rhs4933, label %logic.end4934 -logic.rhs4933: - %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.3181, 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.rend4935 -logic.rend4935: - br label %logic.end4934 -logic.end4934: - %t66 = phi i1 [ false, %logic.from4932 ], [ %t65, %logic.rend4935 ] - br i1 %t66, label %then4936, label %endif4938 -then4936: - %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 %range4939, label %inrange4940 -range4939: - call void @finch_panic_index(ptr @.str.3182, i64 2335, i64 0, i64 %t70) + call void @finch.drop.S_ast_Type(ptr %a34) + br label %endif5197 +else5196: + %t35 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 2 + %t36 = getelementptr inbounds %S.gen.Val, ptr %t35, i32 0, i32 1 + %t37 = load %S.ast.Type, ptr %t36 + store %S.ast.Type %t37, ptr %a38 + call void @finch.copy.S_ast_Type(ptr %a39, ptr %a38) + %t40 = load %S.ast.Type, ptr %a39 + %t41 = load %S.ast.Type, ptr %a16 + store %S.ast.Type %t40, ptr %a16 + store %S.ast.Type %t41, ptr %a42 + call void @finch.drop.S_ast_Type(ptr %a42) + %t43 = load ptr, ptr %a1 + %t44 = load %S.ast.Node, ptr %a2 + %t45 = load ptr, ptr %a1 + %t46 = icmp eq ptr %t45, null + br i1 %t46, label %panic5198, label %ok5199 +panic5198: + call void @finch_panic(ptr @.str.3289, i64 2516, ptr @.str.3290) unreachable -inrange4940: - %t72 = extractvalue { ptr, i64, i64 } %t69, 0 - %t73 = getelementptr inbounds %S.ast.Node, ptr %t72, i64 0 - %t74 = load %S.ast.Node, ptr %t73 +ok5199: + %t47 = getelementptr inbounds %S.gen.Gen, ptr %t45, i32 0, i32 24 + %t48 = load i64, ptr %t47 + call void @finch_str_from_int(ptr %a49, i64 %t48) + %t50 = load { ptr, i64, i64 }, ptr %a49 + store { ptr, i64, i64 } { ptr @.str.3288, i64 5, i64 0 }, ptr %a52 + store { ptr, i64, i64 } %t50, ptr %a53 + call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) + store { ptr, i64, i64 } %t50, ptr %a54 + call void @finch_str_drop(ptr %a54) + %t55 = load { ptr, i64, i64 }, ptr %a51 + %t56 = load %S.ast.Type, ptr %a16 + %t57 = load ptr, ptr %a1 + %t58 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 2 + %t59 = load %S.gen.Val, ptr %t58 + %t60 = call { ptr, i64, i64 } @finch.gen.own(ptr %t57, %S.gen.Val %t59) + %t61 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t43, %S.ast.Node %t44, { ptr, i64, i64 } %t55, %S.ast.Type %t56, { ptr, i64, i64 } %t60, i1 false, i1 true) + store { ptr, i64, i64 } %t55, ptr %a62 + call void @finch_str_drop(ptr %a62) + store { ptr, i64, i64 } %t60, ptr %a63 + call void @finch_str_drop(ptr %a63) + %t64 = load { ptr, i64, i64 }, ptr %a14 + store { ptr, i64, i64 } %t61, ptr %a14 + store { ptr, i64, i64 } %t64, ptr %a65 + call void @finch_str_drop(ptr %a65) + br label %endif5197 +endif5197: + %t66 = getelementptr inbounds %S.ast.Type, ptr %a16, i32 0, i32 0 + %t67 = load { ptr, i64, i64 }, ptr %t66 + store { ptr, i64, i64 } %t67, ptr %a68 + store { ptr, i64, i64 } { ptr @.str.3291, i64 3, i64 0 }, ptr %a69 + %t70 = call i32 @finch_str_eq(ptr %a68, ptr %a69) + %t71 = icmp ne i32 %t70, 0 + br i1 %t71, label %then5200, label %endif5202 +then5200: + %t72 = load ptr, ptr %a1 + %t73 = load %S.ast.Node, ptr %a2 + %t74 = load { ptr, i64, i64 }, ptr %a14 %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.3183, 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.3184, 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 %endif4938 -endif4938: - %t85 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3185, 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.3186, 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 %then4941, label %endif4943 -then4941: - %t93 = getelementptr inbounds %S.ast.Type, ptr %a16, i32 0, i32 1 + %t76 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 0 + %t77 = load i1, ptr %t76 + call void @finch.gen.eachMap(ptr %t72, %S.ast.Node %t73, { ptr, i64, i64 } %t74, %S.ast.Type %t75, i1 %t77) + %t78 = load ptr, ptr %a1 + call void @finch.gen.popScope(ptr %t78) + call void @finch.drop.S_ast_Type(ptr %a16) + call void @finch_str_drop(ptr %a14) + call void @finch.drop.S_gen_Ref(ptr %a13) + ret void +endif5202: + %t79 = getelementptr inbounds %S.ast.Type, ptr %a16, i32 0, i32 0 + %t80 = load { ptr, i64, i64 }, ptr %t79 + store { ptr, i64, i64 } %t80, ptr %a81 + store { ptr, i64, i64 } { ptr @.str.3292, i64 5, i64 0 }, ptr %a82 + %t83 = call i32 @finch_str_eq(ptr %a81, ptr %a82) + %t84 = icmp eq i32 %t83, 0 + br label %logic.from5203 +logic.from5203: + br i1 %t84, label %logic.rhs5204, label %logic.end5205 +logic.rhs5204: + %t85 = getelementptr inbounds %S.ast.Type, ptr %a16, i32 0, i32 0 + %t86 = load { ptr, i64, i64 }, ptr %t85 + store { ptr, i64, i64 } %t86, ptr %a87 + store { ptr, i64, i64 } { ptr @.str.3293, i64 3, i64 0 }, ptr %a88 + %t89 = call i32 @finch_str_eq(ptr %a87, ptr %a88) + %t90 = icmp eq i32 %t89, 0 + br label %logic.rend5206 +logic.rend5206: + br label %logic.end5205 +logic.end5205: + %t91 = phi i1 [ false, %logic.from5203 ], [ %t90, %logic.rend5206 ] + br i1 %t91, label %then5207, label %endif5209 +then5207: + %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 %range4944, label %inrange4945 -range4944: - call void @finch_panic_index(ptr @.str.3187, i64 2339, i64 0, i64 %t95) + br i1 %t96, label %range5210, label %inrange5211 +range5210: + call void @finch_panic_index(ptr @.str.3294, i64 2524, i64 0, i64 %t95) unreachable -inrange4945: +inrange5211: %t97 = extractvalue { ptr, i64, i64 } %t94, 0 - %t98 = getelementptr inbounds %S.ast.Type, ptr %t97, i64 0 - %t99 = load %S.ast.Type, ptr %t98 - store %S.ast.Type %t99, ptr %a100 - 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 %endif4943 -endif4943: - %t103 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 0 - %t104 = load i1, ptr %t103 - br label %logic.from4946 -logic.from4946: - br i1 %t104, label %logic.rhs4947, label %logic.end4948 -logic.rhs4947: - %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.rend4949 -logic.rend4949: - br label %logic.end4948 -logic.end4948: - %t108 = phi i1 [ false, %logic.from4946 ], [ %t107, %logic.rend4949 ] - br label %logic.from4950 -logic.from4950: - br i1 %t108, label %logic.rhs4951, label %logic.end4952 -logic.rhs4951: - %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 %range4953, label %inrange4954 -range4953: - call void @finch_panic_index(ptr @.str.3188, i64 2341, i64 0, i64 %t112) + %t98 = getelementptr inbounds %S.ast.Node, ptr %t97, i64 0 + %t99 = load %S.ast.Node, ptr %t98 + %t100 = load %S.ast.Type, ptr %a16 + %t101 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t100) + store { ptr, i64, i64 } { ptr @.str.3295, i64 55, i64 0 }, ptr %a103 + store { ptr, i64, i64 } %t101, ptr %a104 + call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104) + store { ptr, i64, i64 } %t101, ptr %a105 + call void @finch_str_drop(ptr %a105) + %t106 = load { ptr, i64, i64 }, ptr %a102 + store { ptr, i64, i64 } %t106, ptr %a108 + store { ptr, i64, i64 } { ptr @.str.3296, i64 36, i64 0 }, ptr %a109 + call void @finch_str_concat(ptr %a107, ptr %a108, ptr %a109) + store { ptr, i64, i64 } %t106, ptr %a110 + call void @finch_str_drop(ptr %a110) + %t111 = load { ptr, i64, i64 }, ptr %a107 + call void @finch.gen.fail(ptr %t92, %S.ast.Node %t99, { ptr, i64, i64 } %t111) + store { ptr, i64, i64 } %t111, ptr %a112 + call void @finch_str_drop(ptr %a112) + br label %endif5209 +endif5209: + %t113 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3297, i64 4, i64 0 }) + store %S.ast.Type %t113, ptr %a114 + %t115 = getelementptr inbounds %S.ast.Type, ptr %a16, i32 0, i32 0 + %t116 = load { ptr, i64, i64 }, ptr %t115 + store { ptr, i64, i64 } %t116, ptr %a117 + store { ptr, i64, i64 } { ptr @.str.3298, i64 5, i64 0 }, ptr %a118 + %t119 = call i32 @finch_str_eq(ptr %a117, ptr %a118) + %t120 = icmp ne i32 %t119, 0 + br i1 %t120, label %then5212, label %endif5214 +then5212: + %t121 = getelementptr inbounds %S.ast.Type, ptr %a16, i32 0, i32 1 + %t122 = load { ptr, i64, i64 }, ptr %t121 + %t123 = extractvalue { ptr, i64, i64 } %t122, 1 + %t124 = icmp uge i64 0, %t123 + br i1 %t124, label %range5215, label %inrange5216 +range5215: + call void @finch_panic_index(ptr @.str.3299, i64 2528, i64 0, i64 %t123) unreachable -inrange4954: - %t114 = extractvalue { ptr, i64, i64 } %t111, 0 - %t115 = getelementptr inbounds %S.ast.Node, ptr %t114, i64 0 - %t116 = load %S.ast.Node, ptr %t115 - %t117 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t116) - %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 1, %t120 - br i1 %t121, label %range4955, label %inrange4956 -range4955: - call void @finch_panic_index(ptr @.str.3189, i64 2341, i64 1, i64 %t120) - unreachable -inrange4956: - %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.rend4957 -logic.rend4957: - br label %logic.end4952 -logic.end4952: - %t126 = phi i1 [ false, %logic.from4950 ], [ %t125, %logic.rend4957 ] - 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.3190, 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.3191, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.3192, 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.3193, 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.3194, i64 9, i64 0 }) - store { ptr, i64, i64 } %t137, ptr %a138 +inrange5216: + %t125 = extractvalue { ptr, i64, i64 } %t122, 0 + %t126 = getelementptr inbounds %S.ast.Type, ptr %t125, i64 0 + %t127 = load %S.ast.Type, ptr %t126 + store %S.ast.Type %t127, ptr %a128 + call void @finch.copy.S_ast_Type(ptr %a129, ptr %a128) + %t130 = load %S.ast.Type, ptr %a129 + %t131 = load %S.ast.Type, ptr %a114 + store %S.ast.Type %t130, ptr %a114 + store %S.ast.Type %t131, ptr %a132 + call void @finch.drop.S_ast_Type(ptr %a132) + br label %endif5214 +endif5214: + %t133 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 0 + %t134 = load i1, ptr %t133 + br label %logic.from5217 +logic.from5217: + br i1 %t134, label %logic.rhs5218, label %logic.end5219 +logic.rhs5218: + %t135 = load ptr, ptr %a1 + %t136 = load %S.ast.Type, ptr %a114 + %t137 = call i1 @finch.gen.owning(ptr %t135, %S.ast.Type %t136) + br label %logic.rend5220 +logic.rend5220: + br label %logic.end5219 +logic.end5219: + %t138 = phi i1 [ false, %logic.from5217 ], [ %t137, %logic.rend5220 ] + br label %logic.from5221 +logic.from5221: + br i1 %t138, label %logic.rhs5222, label %logic.end5223 +logic.rhs5222: %t139 = load ptr, ptr %a1 - %t140 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t139, { ptr, i64, i64 } { ptr @.str.3195, 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.3196, i64 8, i64 0 }) - store { ptr, i64, i64 } %t143, ptr %a144 - %t145 = load ptr, ptr %a1 - %t146 = load { ptr, i64, i64 }, ptr %a135 - call void @finch.gen.br(ptr %t145, { ptr, i64, i64 } %t146) - %t147 = load ptr, ptr %a1 - %t148 = load { ptr, i64, i64 }, ptr %a135 - call void @finch.gen.label(ptr %t147, { ptr, i64, i64 } %t148) - %t149 = load ptr, ptr %a1 - %t150 = load ptr, ptr %a1 - %t151 = load { ptr, i64, i64 }, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.3198, 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.3199, 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.3197, 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.3200, i64 3, i64 0 }, { ptr, i64, i64 } %t164) + %t140 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t141 = load { ptr, i64, i64 }, ptr %t140 + %t142 = extractvalue { ptr, i64, i64 } %t141, 1 + %t143 = icmp uge i64 0, %t142 + br i1 %t143, label %range5224, label %inrange5225 +range5224: + call void @finch_panic_index(ptr @.str.3300, i64 2530, i64 0, i64 %t142) + unreachable +inrange5225: + %t144 = extractvalue { ptr, i64, i64 } %t141, 0 + %t145 = getelementptr inbounds %S.ast.Node, ptr %t144, i64 0 + %t146 = load %S.ast.Node, ptr %t145 + %t147 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t146) + %t148 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t149 = load { ptr, i64, i64 }, ptr %t148 + %t150 = extractvalue { ptr, i64, i64 } %t149, 1 + %t151 = icmp uge i64 1, %t150 + br i1 %t151, label %range5226, label %inrange5227 +range5226: + call void @finch_panic_index(ptr @.str.3301, i64 2530, i64 1, i64 %t150) + unreachable +inrange5227: + %t152 = extractvalue { ptr, i64, i64 } %t149, 0 + %t153 = getelementptr inbounds %S.ast.Node, ptr %t152, i64 1 + %t154 = load %S.ast.Node, ptr %t153 + %t155 = call i1 @finch.gen.mutates(ptr %t139, { ptr, i64, i64 } %t147, %S.ast.Node %t154) + store { ptr, i64, i64 } %t147, ptr %a156 + call void @finch_str_drop(ptr %a156) + br label %logic.rend5228 +logic.rend5228: + br label %logic.end5223 +logic.end5223: + %t157 = phi i1 [ false, %logic.from5221 ], [ %t155, %logic.rend5228 ] + store i1 %t157, ptr %a158 + %t159 = load ptr, ptr %a1 + %t160 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t159, { ptr, i64, i64 } { ptr @.str.3302, i64 3, i64 0 }) + store { ptr, i64, i64 } %t160, ptr %a161 + %t162 = load ptr, ptr %a1 + %t163 = load { ptr, i64, i64 }, ptr %a161 + call void @finch.gen.store(ptr %t162, { ptr, i64, i64 } { ptr @.str.3303, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.3304, i64 1, i64 0 }, { ptr, i64, i64 } %t163) + %t164 = load ptr, ptr %a1 + %t165 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t164, { ptr, i64, i64 } { ptr @.str.3305, i64 9, i64 0 }) 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.3201, 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.3202, 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 - store { ptr, i64, i64 } %t176, 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 - %t182 = call { ptr, i64, i64 } @finch.gen.op(ptr %t167, { ptr, i64, i64 } %t181) - store { ptr, i64, i64 } %t182, ptr %a183 - %t184 = load ptr, ptr %a1 - %t185 = load { ptr, i64, i64 }, ptr %a183 - %t186 = load { ptr, i64, i64 }, ptr %a138 - %t187 = load { ptr, i64, i64 }, ptr %a144 - call void @finch.gen.condBr(ptr %t184, { ptr, i64, i64 } %t185, { ptr, i64, i64 } %t186, { ptr, i64, i64 } %t187) - %t188 = load ptr, ptr %a1 - %t189 = load { ptr, i64, i64 }, ptr %a138 - 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.3203, 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.3204, 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.3205, 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 - store { ptr, i64, i64 } %t205, ptr %a208 - store { ptr, i64, i64 } %t206, ptr %a209 + %t168 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t167, { ptr, i64, i64 } { ptr @.str.3306, i64 9, i64 0 }) + store { ptr, i64, i64 } %t168, ptr %a169 + %t170 = load ptr, ptr %a1 + %t171 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t170, { ptr, i64, i64 } { ptr @.str.3307, i64 9, i64 0 }) + store { ptr, i64, i64 } %t171, ptr %a172 + %t173 = load ptr, ptr %a1 + %t174 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t173, { ptr, i64, i64 } { ptr @.str.3308, i64 8, i64 0 }) + store { ptr, i64, i64 } %t174, ptr %a175 + %t176 = load ptr, ptr %a1 + %t177 = load { ptr, i64, i64 }, ptr %a166 + call void @finch.gen.br(ptr %t176, { ptr, i64, i64 } %t177) + %t178 = load ptr, ptr %a1 + %t179 = load { ptr, i64, i64 }, ptr %a166 + call void @finch.gen.label(ptr %t178, { ptr, i64, i64 } %t179) + %t180 = load ptr, ptr %a1 + %t181 = load ptr, ptr %a1 + %t182 = load { ptr, i64, i64 }, ptr %a14 + store { ptr, i64, i64 } { ptr @.str.3310, i64 46, 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.3311, i64 14, i64 0 }, ptr %a189 + call void @finch_str_concat(ptr %a187, ptr %a188, ptr %a189) + store { ptr, i64, i64 } %t186, ptr %a190 + call void @finch_str_drop(ptr %a190) + %t191 = load { ptr, i64, i64 }, ptr %a187 + %t192 = call { ptr, i64, i64 } @finch.gen.op(ptr %t181, { ptr, i64, i64 } %t191) + store { ptr, i64, i64 } %t191, ptr %a193 + call void @finch_str_drop(ptr %a193) + %t194 = call { ptr, i64, i64 } @finch.gen.load(ptr %t180, { ptr, i64, i64 } { ptr @.str.3309, i64 3, i64 0 }, { ptr, i64, i64 } %t192) + store { ptr, i64, i64 } %t192, ptr %a195 + call void @finch_str_drop(ptr %a195) + store { ptr, i64, i64 } %t194, ptr %a196 + %t197 = load ptr, ptr %a1 + %t198 = load { ptr, i64, i64 }, ptr %a161 + %t199 = call { ptr, i64, i64 } @finch.gen.load(ptr %t197, { ptr, i64, i64 } { ptr @.str.3312, i64 3, i64 0 }, { ptr, i64, i64 } %t198) + store { ptr, i64, i64 } %t199, ptr %a200 + %t201 = load ptr, ptr %a1 + %t202 = load { ptr, i64, i64 }, ptr %a200 + store { ptr, i64, i64 } { ptr @.str.3313, i64 13, 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.3314, i64 2, i64 0 }, 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.3206, 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 - store { ptr, i64, i64 } %t214, 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 - %t220 = call { ptr, i64, i64 } @finch.gen.op(ptr %t194, { ptr, i64, i64 } %t219) - store { ptr, i64, i64 } %t220, ptr %a221 - %t222 = load ptr, ptr %a1 - %t223 = load ptr, ptr %a1 - %t224 = load %S.ast.Type, ptr %a86 - %t225 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t223, %S.ast.Type %t224) - %t226 = load { ptr, i64, i64 }, ptr %a221 - %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 %then4958, label %endif4960 -then4958: - %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 %endif4960 -endif4960: - %t234 = load ptr, ptr %a1 - %t235 = icmp eq ptr %t234, null - br i1 %t235, label %panic4961, label %ok4962 -panic4961: - call void @finch_panic(ptr @.str.3207, i64 2361, ptr @.str.3208) + store { ptr, i64, i64 } %t206, ptr %a210 + call void @finch_str_drop(ptr %a210) + %t211 = load { ptr, i64, i64 }, ptr %a207 + %t212 = load { ptr, i64, i64 }, ptr %a196 + store { ptr, i64, i64 } %t211, ptr %a214 + store { ptr, i64, i64 } %t212, ptr %a215 + call void @finch_str_concat(ptr %a213, ptr %a214, ptr %a215) + store { ptr, i64, i64 } %t211, ptr %a216 + call void @finch_str_drop(ptr %a216) + %t217 = load { ptr, i64, i64 }, ptr %a213 + %t218 = call { ptr, i64, i64 } @finch.gen.op(ptr %t201, { ptr, i64, i64 } %t217) + store { ptr, i64, i64 } %t217, ptr %a219 + call void @finch_str_drop(ptr %a219) + store { ptr, i64, i64 } %t218, ptr %a220 + %t221 = load ptr, ptr %a1 + %t222 = load { ptr, i64, i64 }, ptr %a220 + %t223 = load { ptr, i64, i64 }, ptr %a169 + %t224 = load { ptr, i64, i64 }, ptr %a175 + call void @finch.gen.condBr(ptr %t221, { ptr, i64, i64 } %t222, { ptr, i64, i64 } %t223, { ptr, i64, i64 } %t224) + %t225 = load ptr, ptr %a1 + %t226 = load { ptr, i64, i64 }, ptr %a169 + call void @finch.gen.label(ptr %t225, { ptr, i64, i64 } %t226) + %t227 = load ptr, ptr %a1 + %t228 = load { ptr, i64, i64 }, ptr %a14 + %t229 = call { ptr, i64, i64 } @finch.gen.load(ptr %t227, { ptr, i64, i64 } { ptr @.str.3315, i64 3, i64 0 }, { ptr, i64, i64 } %t228) + store { ptr, i64, i64 } %t229, ptr %a230 + %t231 = load ptr, ptr %a1 + %t232 = load ptr, ptr %a1 + %t233 = load %S.ast.Type, ptr %a114 + %t234 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t232, %S.ast.Type %t233) + store { ptr, i64, i64 } { ptr @.str.3316, i64 23, i64 0 }, ptr %a236 + store { ptr, i64, i64 } %t234, ptr %a237 + call void @finch_str_concat(ptr %a235, ptr %a236, ptr %a237) + store { ptr, i64, i64 } %t234, ptr %a238 + call void @finch_str_drop(ptr %a238) + %t239 = load { ptr, i64, i64 }, ptr %a235 + store { ptr, i64, i64 } %t239, ptr %a241 + store { ptr, i64, i64 } { ptr @.str.3317, i64 6, i64 0 }, ptr %a242 + call void @finch_str_concat(ptr %a240, ptr %a241, ptr %a242) + store { ptr, i64, i64 } %t239, ptr %a243 + call void @finch_str_drop(ptr %a243) + %t244 = load { ptr, i64, i64 }, ptr %a240 + %t245 = load { ptr, i64, i64 }, ptr %a230 + store { ptr, i64, i64 } %t244, ptr %a247 + store { ptr, i64, i64 } %t245, ptr %a248 + call void @finch_str_concat(ptr %a246, ptr %a247, ptr %a248) + store { ptr, i64, i64 } %t244, ptr %a249 + call void @finch_str_drop(ptr %a249) + %t250 = load { ptr, i64, i64 }, ptr %a246 + store { ptr, i64, i64 } %t250, ptr %a252 + store { ptr, i64, i64 } { ptr @.str.3318, i64 6, i64 0 }, ptr %a253 + call void @finch_str_concat(ptr %a251, ptr %a252, ptr %a253) + store { ptr, i64, i64 } %t250, ptr %a254 + call void @finch_str_drop(ptr %a254) + %t255 = load { ptr, i64, i64 }, ptr %a251 + %t256 = load { ptr, i64, i64 }, ptr %a200 + store { ptr, i64, i64 } %t255, ptr %a258 + store { ptr, i64, i64 } %t256, ptr %a259 + call void @finch_str_concat(ptr %a257, ptr %a258, ptr %a259) + store { ptr, i64, i64 } %t255, ptr %a260 + call void @finch_str_drop(ptr %a260) + %t261 = load { ptr, i64, i64 }, ptr %a257 + %t262 = call { ptr, i64, i64 } @finch.gen.op(ptr %t231, { ptr, i64, i64 } %t261) + store { ptr, i64, i64 } %t261, ptr %a263 + call void @finch_str_drop(ptr %a263) + store { ptr, i64, i64 } %t262, ptr %a264 + %t265 = load ptr, ptr %a1 + %t266 = load ptr, ptr %a1 + %t267 = load %S.ast.Type, ptr %a114 + %t268 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t266, %S.ast.Type %t267) + %t269 = load { ptr, i64, i64 }, ptr %a264 + %t270 = call { ptr, i64, i64 } @finch.gen.load(ptr %t265, { ptr, i64, i64 } %t268, { ptr, i64, i64 } %t269) + store { ptr, i64, i64 } %t268, ptr %a271 + call void @finch_str_drop(ptr %a271) + store { ptr, i64, i64 } %t270, ptr %a272 + %t273 = load i1, ptr %a158 + br i1 %t273, label %then5229, label %endif5231 +then5229: + %t274 = load ptr, ptr %a1 + %t275 = load { ptr, i64, i64 }, ptr %a272 + %t276 = load %S.ast.Type, ptr %a114 + %t277 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t274, { ptr, i64, i64 } %t275, %S.ast.Type %t276) + %t278 = load { ptr, i64, i64 }, ptr %a272 + store { ptr, i64, i64 } %t277, ptr %a272 + store { ptr, i64, i64 } %t278, ptr %a279 + call void @finch_str_drop(ptr %a279) + br label %endif5231 +endif5231: + %t280 = load ptr, ptr %a1 + %t281 = icmp eq ptr %t280, null + br i1 %t281, label %panic5232, label %ok5233 +panic5232: + call void @finch_panic(ptr @.str.3319, i64 2550, ptr @.str.3320) unreachable -ok4962: - %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 - store { ptr, i64, i64 } %t238, ptr %a239 - call void @finch_str_copy(ptr %a240, ptr %a239) - %t241 = load { ptr, i64, i64 }, ptr %a240 - %t242 = insertvalue %S.gen.Loop zeroinitializer, { ptr, i64, i64 } %t241, 0 - %t243 = load { ptr, i64, i64 }, ptr %a144 - store { ptr, i64, i64 } %t243, ptr %a244 - call void @finch_str_copy(ptr %a245, ptr %a244) - %t246 = load { ptr, i64, i64 }, ptr %a245 - %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 %panic4963, label %ok4964 -panic4963: - call void @finch_panic(ptr @.str.3209, i64 2361, ptr @.str.3210) +ok5233: + %t282 = getelementptr inbounds %S.gen.Gen, ptr %t280, i32 0, i32 12 + %t283 = getelementptr inbounds { ptr, i64, i64 }, ptr %t282, i32 0, i32 1 + %t284 = load { ptr, i64, i64 }, ptr %a172 + store { ptr, i64, i64 } %t284, ptr %a285 + call void @finch_str_copy(ptr %a286, ptr %a285) + %t287 = load { ptr, i64, i64 }, ptr %a286 + %t288 = insertvalue %S.gen.Loop zeroinitializer, { ptr, i64, i64 } %t287, 0 + %t289 = load { ptr, i64, i64 }, ptr %a175 + store { ptr, i64, i64 } %t289, ptr %a290 + call void @finch_str_copy(ptr %a291, ptr %a290) + %t292 = load { ptr, i64, i64 }, ptr %a291 + %t293 = insertvalue %S.gen.Loop %t288, { ptr, i64, i64 } %t292, 1 + %t294 = load ptr, ptr %a1 + %t295 = icmp eq ptr %t294, null + br i1 %t295, label %panic5234, label %ok5235 +panic5234: + call void @finch_panic(ptr @.str.3321, i64 2550, ptr @.str.3322) unreachable -ok4964: - %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 - %t253 = insertvalue %S.gen.Loop %t247, i64 %t252, 2 - %t254 = load i64, ptr %t237 - %t255 = add i64 %t254, 1 - call void @finch_arr_reserve(ptr %t236, i64 %t255, i64 ptrtoint (ptr getelementptr (%S.gen.Loop, ptr null, i32 1) to i64)) - %t256 = load ptr, ptr %t236 - %t257 = getelementptr inbounds %S.gen.Loop, ptr %t256, i64 %t254 - store %S.gen.Loop %t253, ptr %t257 - store i64 %t255, ptr %t237 - %t258 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t258) - %t259 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t260 = load { ptr, i64, i64 }, ptr %t259 - store { ptr, i64, i64 } %t260, ptr %a261 - call void @finch_str_copy(ptr %a262, ptr %a261) - %t263 = load { ptr, i64, i64 }, ptr %a262 - store { ptr, i64, i64 } %t263, ptr %a264 - %t265 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 - %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 %then4965, label %endif4967 -then4965: - %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.3211, 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 - %t277 = load { ptr, i64, i64 }, ptr %t276 - store { ptr, i64, i64 } %t277, ptr %a278 - 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 %endif4967 -endif4967: - %t281 = load ptr, ptr %a1 - %t282 = load %S.ast.Node, ptr %a2 - %t283 = load { ptr, i64, i64 }, ptr %a264 - %t284 = load %S.ast.Type, ptr %a86 - %t285 = load { ptr, i64, i64 }, ptr %a228 - %t286 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t281, %S.ast.Node %t282, { ptr, i64, i64 } %t283, %S.ast.Type %t284, { ptr, i64, i64 } %t285, i1 true) - %t287 = load ptr, ptr %a1 - %t288 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t289 = load { ptr, i64, i64 }, ptr %t288 - %t290 = extractvalue { ptr, i64, i64 } %t289, 1 - %t291 = icmp uge i64 1, %t290 - br i1 %t291, label %range4968, label %inrange4969 -range4968: - call void @finch_panic_index(ptr @.str.3212, i64 2369, i64 1, i64 %t290) +ok5235: + %t296 = getelementptr inbounds %S.gen.Gen, ptr %t294, i32 0, i32 10 + %t297 = getelementptr inbounds { ptr, i64, i64 }, ptr %t296, i32 0, i32 1 + %t298 = load i64, ptr %t297 + %t299 = insertvalue %S.gen.Loop %t293, i64 %t298, 2 + %t300 = load ptr, ptr %a1 + %t301 = icmp eq ptr %t300, null + br i1 %t301, label %panic5236, label %ok5237 +panic5236: + call void @finch_panic(ptr @.str.3323, i64 2550, ptr @.str.3324) unreachable -inrange4969: - %t292 = extractvalue { ptr, i64, i64 } %t289, 0 - %t293 = getelementptr inbounds %S.ast.Node, ptr %t292, i64 1 - %t294 = load %S.ast.Node, ptr %t293 - call void @finch.gen.block(ptr %t287, %S.ast.Node %t294, i1 true) - %t295 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t295) - %t296 = load ptr, ptr %a1 - %t297 = icmp eq ptr %t296, null - br i1 %t297, label %panic4970, label %ok4971 -panic4970: - call void @finch_panic(ptr @.str.3213, i64 2371, ptr @.str.3214) - unreachable -ok4971: - %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 %panic4972, label %ok4973 -panic4972: - call void @finch_panic(ptr @.str.3215, i64 2371, ptr @.str.3216) - unreachable -ok4973: - %t302 = sub i64 %t300, 1 - %t303 = load ptr, ptr %t298 - %t304 = getelementptr inbounds %S.gen.Loop, ptr %t303, i64 %t302 - %t305 = load %S.gen.Loop, ptr %t304 - store i64 %t302, ptr %t299 - %t306 = load ptr, ptr %a1 - %t307 = load { ptr, i64, i64 }, ptr %a141 - call void @finch.gen.br(ptr %t306, { ptr, i64, i64 } %t307) - %t308 = load ptr, ptr %a1 - %t309 = load { ptr, i64, i64 }, ptr %a141 - call void @finch.gen.label(ptr %t308, { ptr, i64, i64 } %t309) +ok5237: + %t302 = getelementptr inbounds %S.gen.Gen, ptr %t300, i32 0, i32 11 + %t303 = getelementptr inbounds { ptr, i64, i64 }, ptr %t302, i32 0, i32 1 + %t304 = load i64, ptr %t303 + %t305 = insertvalue %S.gen.Loop %t299, i64 %t304, 3 + %t306 = load i64, ptr %t283 + %t307 = add i64 %t306, 1 + call void @finch_arr_reserve(ptr %t282, i64 %t307, i64 ptrtoint (ptr getelementptr (%S.gen.Loop, ptr null, i32 1) to i64)) + %t308 = load ptr, ptr %t282 + %t309 = getelementptr inbounds %S.gen.Loop, ptr %t308, i64 %t306 + store %S.gen.Loop %t305, ptr %t309 + store i64 %t307, ptr %t283 %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.3217, i64 3, i64 0 }, { ptr, i64, i64 } %t311) + call void @finch.gen.pushScope(ptr %t310) + %t311 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t312 = load { ptr, i64, i64 }, ptr %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.3219, 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.3220, 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.3218, 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) - %t329 = load ptr, ptr %a1 - %t330 = load { ptr, i64, i64 }, ptr %a144 - call void @finch.gen.label(ptr %t329, { ptr, i64, i64 } %t330) - %t331 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t331) + call void @finch_str_copy(ptr %a314, ptr %a313) + %t315 = load { ptr, i64, i64 }, ptr %a314 + store { ptr, i64, i64 } %t315, ptr %a316 + %t317 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 + %t318 = getelementptr inbounds { ptr, i64, i64 }, ptr %t317, i32 0, i32 1 + %t319 = load i64, ptr %t318 + %t320 = icmp sgt i64 %t319, 0 + br i1 %t320, label %then5238, label %endif5240 +then5238: + %t321 = load ptr, ptr %a1 + %t322 = load %S.ast.Node, ptr %a2 + %t323 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t324 = load { ptr, i64, i64 }, ptr %t323 + %t325 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3325, i64 3, i64 0 }) + %t326 = load { ptr, i64, i64 }, ptr %a200 + %t327 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t321, %S.ast.Node %t322, { ptr, i64, i64 } %t324, %S.ast.Type %t325, { ptr, i64, i64 } %t326, i1 true, i1 false) + store %S.ast.Type %t325, ptr %a328 + call void @finch.drop.S_ast_Type(ptr %a328) + store { ptr, i64, i64 } %t327, ptr %a329 + call void @finch_str_drop(ptr %a329) + %t330 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 + %t331 = load { ptr, i64, i64 }, ptr %t330 + store { ptr, i64, i64 } %t331, ptr %a332 + call void @finch_str_copy(ptr %a333, ptr %a332) + %t334 = load { ptr, i64, i64 }, ptr %a333 + %t335 = load { ptr, i64, i64 }, ptr %a316 + store { ptr, i64, i64 } %t334, ptr %a316 + store { ptr, i64, i64 } %t335, ptr %a336 + call void @finch_str_drop(ptr %a336) + br label %endif5240 +endif5240: + %t337 = load ptr, ptr %a1 + %t338 = load %S.ast.Node, ptr %a2 + %t339 = load { ptr, i64, i64 }, ptr %a316 + %t340 = load %S.ast.Type, ptr %a114 + %t341 = load { ptr, i64, i64 }, ptr %a272 + %t342 = load i1, ptr %a158 + %t343 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t337, %S.ast.Node %t338, { ptr, i64, i64 } %t339, %S.ast.Type %t340, { ptr, i64, i64 } %t341, i1 true, i1 %t342) + store { ptr, i64, i64 } %t343, ptr %a344 + call void @finch_str_drop(ptr %a344) + %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 %range5241, label %inrange5242 +range5241: + call void @finch_panic_index(ptr @.str.3326, i64 2558, i64 1, i64 %t348) + unreachable +inrange5242: + %t350 = extractvalue { ptr, i64, i64 } %t347, 0 + %t351 = getelementptr inbounds %S.ast.Node, ptr %t350, i64 1 + %t352 = load %S.ast.Node, ptr %t351 + call void @finch.gen.block(ptr %t345, %S.ast.Node %t352, i1 true) + %t353 = load ptr, ptr %a1 + call void @finch.gen.popScope(ptr %t353) + %t354 = load ptr, ptr %a1 + %t355 = icmp eq ptr %t354, null + br i1 %t355, label %panic5243, label %ok5244 +panic5243: + call void @finch_panic(ptr @.str.3327, i64 2560, ptr @.str.3328) + unreachable +ok5244: + %t356 = getelementptr inbounds %S.gen.Gen, ptr %t354, i32 0, i32 12 + %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 %panic5245, label %ok5246 +panic5245: + call void @finch_panic(ptr @.str.3329, i64 2560, ptr @.str.3330) + unreachable +ok5246: + %t360 = sub i64 %t358, 1 + %t361 = load ptr, ptr %t356 + %t362 = getelementptr inbounds %S.gen.Loop, ptr %t361, i64 %t360 + %t363 = load %S.gen.Loop, ptr %t362 + store i64 %t360, ptr %t357 + store %S.gen.Loop %t363, ptr %a364 + call void @finch.drop.S_gen_Loop(ptr %a364) + %t365 = load ptr, ptr %a1 + %t366 = load { ptr, i64, i64 }, ptr %a172 + call void @finch.gen.br(ptr %t365, { ptr, i64, i64 } %t366) + %t367 = load ptr, ptr %a1 + %t368 = load { ptr, i64, i64 }, ptr %a172 + call void @finch.gen.label(ptr %t367, { ptr, i64, i64 } %t368) + %t369 = load ptr, ptr %a1 + %t370 = load { ptr, i64, i64 }, ptr %a161 + %t371 = call { ptr, i64, i64 } @finch.gen.load(ptr %t369, { ptr, i64, i64 } { ptr @.str.3331, i64 3, i64 0 }, { ptr, i64, i64 } %t370) + store { ptr, i64, i64 } %t371, ptr %a372 + %t373 = load ptr, ptr %a1 + %t374 = load ptr, ptr %a1 + %t375 = load { ptr, i64, i64 }, ptr %a372 + store { ptr, i64, i64 } { ptr @.str.3333, i64 8, i64 0 }, ptr %a377 + store { ptr, i64, i64 } %t375, ptr %a378 + call void @finch_str_concat(ptr %a376, ptr %a377, ptr %a378) + %t379 = load { ptr, i64, i64 }, ptr %a376 + store { ptr, i64, i64 } %t379, ptr %a381 + store { ptr, i64, i64 } { ptr @.str.3334, i64 3, i64 0 }, ptr %a382 + call void @finch_str_concat(ptr %a380, ptr %a381, ptr %a382) + store { ptr, i64, i64 } %t379, ptr %a383 + call void @finch_str_drop(ptr %a383) + %t384 = load { ptr, i64, i64 }, ptr %a380 + %t385 = call { ptr, i64, i64 } @finch.gen.op(ptr %t374, { ptr, i64, i64 } %t384) + store { ptr, i64, i64 } %t384, ptr %a386 + call void @finch_str_drop(ptr %a386) + %t387 = load { ptr, i64, i64 }, ptr %a161 + call void @finch.gen.store(ptr %t373, { ptr, i64, i64 } { ptr @.str.3332, i64 3, i64 0 }, { ptr, i64, i64 } %t385, { ptr, i64, i64 } %t387) + store { ptr, i64, i64 } %t385, ptr %a388 + call void @finch_str_drop(ptr %a388) + %t389 = load ptr, ptr %a1 + %t390 = load { ptr, i64, i64 }, ptr %a166 + call void @finch.gen.br(ptr %t389, { ptr, i64, i64 } %t390) + %t391 = load ptr, ptr %a1 + %t392 = load { ptr, i64, i64 }, ptr %a175 + call void @finch.gen.label(ptr %t391, { ptr, i64, i64 } %t392) + %t393 = load ptr, ptr %a1 + call void @finch.gen.popScope(ptr %t393) + call void @finch_str_drop(ptr %a372) + call void @finch_str_drop(ptr %a316) + call void @finch_str_drop(ptr %a272) + call void @finch_str_drop(ptr %a264) + call void @finch_str_drop(ptr %a230) + call void @finch_str_drop(ptr %a220) + call void @finch_str_drop(ptr %a200) + call void @finch_str_drop(ptr %a196) + call void @finch_str_drop(ptr %a175) + call void @finch_str_drop(ptr %a172) + call void @finch_str_drop(ptr %a169) + call void @finch_str_drop(ptr %a166) + call void @finch_str_drop(ptr %a161) + call void @finch.drop.S_ast_Type(ptr %a114) + call void @finch.drop.S_ast_Type(ptr %a16) + call void @finch_str_drop(ptr %a14) + call void @finch.drop.S_gen_Ref(ptr %a13) ret void } @@ -45437,208 +53190,195 @@ entry: %a74 = alloca { ptr, i64, i64 }, align 16 %a75 = alloca { ptr, i64, i64 }, align 16 %a76 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 + %a77 = alloca { ptr, i64, i64 }, align 16 + %a80 = 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 - %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 %a98 = alloca { ptr, i64, i64 }, align 16 %a99 = alloca { ptr, i64, i64 }, align 16 %a100 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca %S.gen.Val, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 + %a101 = 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 + %a106 = alloca { ptr, i64, i64 }, align 16 + %a108 = alloca { ptr, i64, i64 }, align 16 + %a130 = alloca %S.gen.Val, align 16 + %a131 = alloca %S.ast.Type, align 16 + %a132 = alloca %S.gen.Val, align 16 %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = 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 + %a146 = alloca { ptr, i64, i64 }, align 16 + %a147 = alloca { ptr, i64, i64 }, align 16 + %a148 = 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 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = 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 + %a154 = 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 %a166 = alloca { ptr, i64, i64 }, align 16 + %a168 = 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 + %a174 = alloca { ptr, i64, i64 }, align 16 + %a175 = 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 + %a180 = 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 + %a185 = alloca { ptr, i64, i64 }, align 16 + %a186 = alloca { ptr, i64, i64 }, align 16 + %a187 = 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 + %a192 = alloca { ptr, i64, i64 }, align 16 + %a202 = alloca { ptr, i64, i64 }, align 16 %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a205 = 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 + %a223 = 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 + %a227 = 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 + %a232 = 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 + %a250 = alloca { ptr, i64, i64 }, align 16 %a252 = alloca { ptr, i64, i64 }, align 16 %a253 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca %S.gen.Val, 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 i1, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca i64, align 16 - %a348 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca { ptr, i64, i64 }, align 16 - %a350 = 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 - %a357 = 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 + %a273 = alloca { ptr, i64, i64 }, align 16 + %a274 = alloca { ptr, i64, i64 }, align 16 + %a275 = alloca { ptr, i64, i64 }, align 16 + %a277 = 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 + %a288 = alloca { ptr, i64, i64 }, align 16 + %a289 = 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 + %a303 = alloca { ptr, i64, i64 }, align 16 + %a304 = 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 + %a324 = alloca i64, align 16 + %a329 = alloca i64, align 16 + %a342 = alloca 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 - %a369 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a375 = alloca { ptr, i64, i64 }, align 16 - %a376 = alloca { ptr, i64, i64 }, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a380 = 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 - %a393 = alloca { ptr, i64, i64 }, align 16 - %a394 = 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 - %a400 = 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 - %a407 = 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 - %a419 = alloca { ptr, i64, i64 }, align 16 - %a420 = alloca { ptr, i64, i64 }, align 16 - %a421 = 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 - %a436 = alloca { ptr, i64, i64 }, align 16 - %a437 = alloca { ptr, i64, i64 }, align 16 - %a438 = alloca { ptr, i64, i64 }, align 16 - %a440 = alloca { ptr, i64, i64 }, align 16 - %a441 = alloca { ptr, i64, i64 }, align 16 - %a442 = alloca { ptr, i64, i64 }, align 16 - %a445 = alloca { ptr, i64, i64 }, align 16 - %a446 = alloca { ptr, i64, i64 }, align 16 - %a447 = alloca { ptr, i64, i64 }, align 16 + %a420 = alloca %S.gen.Var, align 16 + %a421 = alloca %S.gen.Var, align 16 + %a423 = alloca %S.gen.Var, align 16 + %a443 = alloca { ptr, i64, i64 }, align 16 + %a444 = alloca { ptr, i64, i64 }, align 16 + %a511 = alloca %S.gen.Val, align 16 + %a512 = alloca %S.gen.Val, align 16 + %a516 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store %S.ast.Node %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic4974, label %ok4975 -panic4974: - call void @finch_panic(ptr @.str.3221, i64 2382, ptr @.str.3222) + br i1 %t4, label %panic5247, label %ok5248 +panic5247: + call void @finch_panic(ptr @.str.3335, i64 2571, ptr @.str.3336) unreachable -ok4975: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 44 +ok5248: + %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 45 %t6 = load i64, ptr %t5 %t7 = icmp sgt i64 %t6, 0 - br i1 %t7, label %then4976, label %endif4978 -then4976: + br i1 %t7, label %then5249, label %endif5251 +then5249: %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.3223, i64 33, i64 0 }) - br label %endif4978 -endif4978: + call void @finch.gen.fail(ptr %t8, %S.ast.Node %t9, { ptr, i64, i64 } { ptr @.str.3337, i64 33, i64 0 }) + br label %endif5251 +endif5251: %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.from4979 -logic.from4979: - br i1 %t13, label %logic.rhs4980, label %logic.end4981 -logic.rhs4980: + br label %logic.from5252 +logic.from5252: + br i1 %t13, label %logic.rhs5253, label %logic.end5254 +logic.rhs5253: %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 %range4982, label %inrange4983 -range4982: - call void @finch_panic_index(ptr @.str.3224, i64 2386, i64 0, i64 %t16) + br i1 %t17, label %range5255, label %inrange5256 +range5255: + call void @finch_panic_index(ptr @.str.3338, i64 2575, i64 0, i64 %t16) unreachable -inrange4983: +inrange5256: %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.3225, i64 4, i64 0 }, ptr %a23 + store { ptr, i64, i64 } { ptr @.str.3339, 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.rend4984 -logic.rend4984: - br label %logic.end4981 -logic.end4981: - %t26 = phi i1 [ false, %logic.from4979 ], [ %t25, %logic.rend4984 ] - br label %logic.from4985 -logic.from4985: - br i1 %t26, label %logic.rhs4986, label %logic.end4987 -logic.rhs4986: + br label %logic.rend5257 +logic.rend5257: + br label %logic.end5254 +logic.end5254: + %t26 = phi i1 [ false, %logic.from5252 ], [ %t25, %logic.rend5257 ] + br label %logic.from5258 +logic.from5258: + br i1 %t26, label %logic.rhs5259, label %logic.end5260 +logic.rhs5259: %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 %range4988, label %inrange4989 -range4988: - call void @finch_panic_index(ptr @.str.3226, i64 2386, i64 0, i64 %t29) + br i1 %t30, label %range5261, label %inrange5262 +range5261: + call void @finch_panic_index(ptr @.str.3340, i64 2575, i64 0, i64 %t29) unreachable -inrange4989: +inrange5262: %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.3227, i64 5, i64 0 }, ptr %a36 + store { ptr, i64, i64 } { ptr @.str.3341, 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.rend4990 -logic.rend4990: - br label %logic.end4987 -logic.end4987: - %t39 = phi i1 [ false, %logic.from4985 ], [ %t38, %logic.rend4990 ] - br i1 %t39, label %then4991, label %endif4993 -then4991: + br label %logic.rend5263 +logic.rend5263: + br label %logic.end5260 +logic.end5260: + %t39 = phi i1 [ false, %logic.from5258 ], [ %t38, %logic.rend5263 ] + br i1 %t39, label %then5264, label %endif5266 +then5264: %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 %range4994, label %inrange4995 -range4994: - call void @finch_panic_index(ptr @.str.3228, i64 2387, i64 0, i64 %t42) + br i1 %t43, label %range5267, label %inrange5268 +range5267: + call void @finch_panic_index(ptr @.str.3342, i64 2576, i64 0, i64 %t42) unreachable -inrange4995: +inrange5268: %t44 = extractvalue { ptr, i64, i64 } %t41, 0 %t45 = getelementptr inbounds %S.ast.Node, ptr %t44, i64 0 %t46 = load %S.ast.Node, ptr %t45 @@ -45648,623 +53388,1125 @@ inrange4995: store %S.ast.Node %t49, ptr %a50 %t51 = load ptr, ptr %a1 %t52 = icmp eq ptr %t51, null - br i1 %t52, label %panic4996, label %ok4997 -panic4996: - call void @finch_panic(ptr @.str.3229, i64 2388, ptr @.str.3230) + br i1 %t52, label %panic5269, label %ok5270 +panic5269: + call void @finch_panic(ptr @.str.3343, i64 2577, ptr @.str.3344) unreachable -ok4997: - %t53 = getelementptr inbounds %S.gen.Gen, ptr %t51, i32 0, i32 12 +ok5270: + %t53 = getelementptr inbounds %S.gen.Gen, ptr %t51, i32 0, i32 13 %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 %then4998, label %endif5000 -then4998: - store { ptr, i64, i64 } { ptr @.str.3231, i64 1, i64 0 }, ptr %a57 + br i1 %t56, label %then5271, label %endif5273 +then5271: + store { ptr, i64, i64 } { ptr @.str.3345, i64 1, i64 0 }, ptr %a57 %t58 = load ptr, ptr %a1 %t59 = icmp eq ptr %t58, null - br i1 %t59, label %panic5001, label %ok5002 -panic5001: - call void @finch_panic(ptr @.str.3232, i64 2390, ptr @.str.3233) + br i1 %t59, label %panic5274, label %ok5275 +panic5274: + call void @finch_panic(ptr @.str.3346, i64 2579, ptr @.str.3347) unreachable -ok5002: - %t60 = getelementptr inbounds %S.gen.Gen, ptr %t58, i32 0, i32 12 +ok5275: + %t60 = getelementptr inbounds %S.gen.Gen, ptr %t58, i32 0, i32 13 %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.3234, i64 4, i64 0 }, ptr %a65 + store { ptr, i64, i64 } { ptr @.str.3348, 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 %then5003, label %endif5005 -then5003: + br i1 %t67, label %then5276, label %endif5278 +then5276: %t68 = load ptr, ptr %a1 %t69 = icmp eq ptr %t68, null - br i1 %t69, label %panic5006, label %ok5007 -panic5006: - call void @finch_panic(ptr @.str.3235, i64 2391, ptr @.str.3236) + br i1 %t69, label %panic5279, label %ok5280 +panic5279: + call void @finch_panic(ptr @.str.3349, i64 2580, ptr @.str.3350) unreachable -ok5007: - %t70 = getelementptr inbounds %S.gen.Gen, ptr %t68, i32 0, i32 12 +ok5280: + %t70 = getelementptr inbounds %S.gen.Gen, ptr %t68, i32 0, i32 13 %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.3237, i64 1, i64 0 }, ptr %a76 + store { ptr, i64, i64 } { ptr @.str.3351, 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 %endif5005 -endif5005: - %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 %panic5008, label %ok5009 -panic5008: - call void @finch_panic(ptr @.str.3239, i64 2393, ptr @.str.3240) + store { ptr, i64, i64 } %t73, ptr %a77 + call void @finch_str_drop(ptr %a77) + %t78 = load { ptr, i64, i64 }, ptr %a74 + %t79 = load { ptr, i64, i64 }, ptr %a57 + store { ptr, i64, i64 } %t78, ptr %a57 + store { ptr, i64, i64 } %t79, ptr %a80 + call void @finch_str_drop(ptr %a80) + br label %endif5278 +endif5278: + %t81 = load ptr, ptr %a1 + %t82 = load %S.ast.Node, ptr %a50 + %t83 = load ptr, ptr %a1 + %t84 = icmp eq ptr %t83, null + br i1 %t84, label %panic5281, label %ok5282 +panic5281: + call void @finch_panic(ptr @.str.3353, i64 2582, ptr @.str.3354) unreachable -ok5009: - %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.3238, 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.3241, 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 - store { ptr, i64, i64 } %t92, 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.3242, i64 1, i64 0 }, ptr %a100 +ok5282: + %t85 = getelementptr inbounds %S.gen.Gen, ptr %t83, i32 0, i32 13 + %t86 = getelementptr inbounds %S.gen.FnSig, ptr %t85, i32 0, i32 1 + %t87 = load { ptr, i64, i64 }, ptr %t86 + store { ptr, i64, i64 } { ptr @.str.3352, i64 1, 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.3355, i64 64, i64 0 }, ptr %a94 + call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) + store { ptr, i64, i64 } %t91, ptr %a95 + call void @finch_str_drop(ptr %a95) + %t96 = load { ptr, i64, i64 }, ptr %a92 + %t97 = load { ptr, i64, i64 }, ptr %a57 + store { ptr, i64, i64 } %t96, 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 - call void @finch.gen.fail(ptr %t78, %S.ast.Node %t79, { ptr, i64, i64 } %t101) - br label %endif5000 -endif5000: - %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.3243, 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 %range5010, label %inrange5011 -range5010: - call void @finch_panic_index(ptr @.str.3244, i64 2396, i64 0, i64 %t108) + store { ptr, i64, i64 } %t96, ptr %a101 + call void @finch_str_drop(ptr %a101) + %t102 = load { ptr, i64, i64 }, ptr %a98 + store { ptr, i64, i64 } %t102, ptr %a104 + store { ptr, i64, i64 } { ptr @.str.3356, i64 1, i64 0 }, ptr %a105 + call void @finch_str_concat(ptr %a103, ptr %a104, ptr %a105) + store { ptr, i64, i64 } %t102, ptr %a106 + call void @finch_str_drop(ptr %a106) + %t107 = load { ptr, i64, i64 }, ptr %a103 + call void @finch.gen.fail(ptr %t81, %S.ast.Node %t82, { ptr, i64, i64 } %t107) + store { ptr, i64, i64 } %t107, ptr %a108 + call void @finch_str_drop(ptr %a108) + call void @finch_str_drop(ptr %a57) + br label %endif5273 +endif5273: + %t109 = load ptr, ptr %a1 + %t110 = load %S.ast.Node, ptr %a50 + call void @finch.gen.checkArgs(ptr %t109, %S.ast.Node %t110, i64 0, i64 1, { ptr, i64, i64 } { ptr @.str.3357, i64 5, i64 0 }) + %t111 = load ptr, ptr %a1 + %t112 = load ptr, ptr %a1 + %t113 = getelementptr inbounds %S.ast.Node, ptr %a50, i32 0, i32 9 + %t114 = load { ptr, i64, i64 }, ptr %t113 + %t115 = extractvalue { ptr, i64, i64 } %t114, 1 + %t116 = icmp uge i64 0, %t115 + br i1 %t116, label %range5283, label %inrange5284 +range5283: + call void @finch_panic_index(ptr @.str.3358, i64 2585, i64 0, i64 %t115) unreachable -inrange5011: - %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.3245, 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 %range5012, label %inrange5013 -range5012: - call void @finch_panic_index(ptr @.str.3246, i64 2396, i64 0, i64 %t117) +inrange5284: + %t117 = extractvalue { ptr, i64, i64 } %t114, 0 + %t118 = getelementptr inbounds %S.ast.Node, ptr %t117, i64 0 + %t119 = load %S.ast.Node, ptr %t118 + %t120 = call %S.gen.Val @finch.gen.expr(ptr %t112, %S.ast.Node %t119) + %t121 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3359, i64 3, i64 0 }) + %t122 = getelementptr inbounds %S.ast.Node, ptr %a50, i32 0, i32 9 + %t123 = load { ptr, i64, i64 }, ptr %t122 + %t124 = extractvalue { ptr, i64, i64 } %t123, 1 + %t125 = icmp uge i64 0, %t124 + br i1 %t125, label %range5285, label %inrange5286 +range5285: + call void @finch_panic_index(ptr @.str.3360, i64 2585, i64 0, i64 %t124) unreachable -inrange5013: - %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.3247, i64 17, i64 0 }) - store %S.gen.Val %t122, ptr %a123 - %t124 = load ptr, ptr %a1 - %t125 = load %S.gen.Val, ptr %a123 - %t126 = call { ptr, i64, i64 } @finch.gen.own(ptr %t124, %S.gen.Val %t125) - store { ptr, i64, i64 } %t126, ptr %a127 - %t128 = load ptr, ptr %a1 - call void @finch.gen.unwind(ptr %t128, i64 0) - %t129 = load ptr, ptr %a1 - %t130 = load ptr, ptr %a1 - %t131 = load ptr, ptr %a1 - %t132 = icmp eq ptr %t131, null - br i1 %t132, label %panic5014, label %ok5015 -panic5014: - call void @finch_panic(ptr @.str.3249, i64 2399, ptr @.str.3250) +inrange5286: + %t126 = extractvalue { ptr, i64, i64 } %t123, 0 + %t127 = getelementptr inbounds %S.ast.Node, ptr %t126, i64 0 + %t128 = load %S.ast.Node, ptr %t127 + %t129 = call %S.gen.Val @finch.gen.coerce(ptr %t111, %S.gen.Val %t120, %S.ast.Type %t121, %S.ast.Node %t128, { ptr, i64, i64 } { ptr @.str.3361, i64 17, i64 0 }) + store %S.gen.Val %t120, ptr %a130 + call void @finch.drop.S_gen_Val(ptr %a130) + store %S.ast.Type %t121, ptr %a131 + call void @finch.drop.S_ast_Type(ptr %a131) + store %S.gen.Val %t129, ptr %a132 + %t133 = load ptr, ptr %a1 + %t134 = load %S.gen.Val, ptr %a132 + %t135 = call { ptr, i64, i64 } @finch.gen.own(ptr %t133, %S.gen.Val %t134) + store { ptr, i64, i64 } %t135, ptr %a136 + %t137 = load ptr, ptr %a1 + call void @finch.gen.dropPending(ptr %t137, i64 0) + %t138 = load ptr, ptr %a1 + call void @finch.gen.unwind(ptr %t138, i64 0) + %t139 = load ptr, ptr %a1 + %t140 = load ptr, ptr %a1 + %t141 = load ptr, ptr %a1 + %t142 = icmp eq ptr %t141, null + br i1 %t142, label %panic5287, label %ok5288 +panic5287: + call void @finch_panic(ptr @.str.3363, i64 2589, ptr @.str.3364) unreachable -ok5015: - %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.3248, 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.3251, 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 %panic5016, label %ok5017 -panic5016: - call void @finch_panic(ptr @.str.3253, i64 2399, ptr @.str.3254) - unreachable -ok5017: - %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.3252, i64 12, i64 0 }, ptr %a152 - store { ptr, i64, i64 } %t150, ptr %a153 +ok5288: + %t143 = getelementptr inbounds %S.gen.Gen, ptr %t141, i32 0, i32 13 + %t144 = load %S.gen.FnSig, ptr %t143 + %t145 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t140, %S.gen.FnSig %t144) + store { ptr, i64, i64 } { ptr @.str.3362, i64 4, i64 0 }, ptr %a147 + store { ptr, i64, i64 } %t145, ptr %a148 + call void @finch_str_concat(ptr %a146, ptr %a147, ptr %a148) + store { ptr, i64, i64 } %t145, ptr %a149 + call void @finch_str_drop(ptr %a149) + %t150 = load { ptr, i64, i64 }, ptr %a146 + store { ptr, i64, i64 } %t150, ptr %a152 + store { ptr, i64, i64 } { ptr @.str.3365, i64 1, i64 0 }, 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.3255, 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 - store { ptr, i64, i64 } %t158, ptr %a161 - store { ptr, i64, i64 } %t159, ptr %a162 - 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.3256, 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) - store { ptr, i64, i64 } %t143, 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 - 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 %panic5018, label %ok5019 -panic5018: - call void @finch_panic(ptr @.str.3257, i64 2400, ptr @.str.3258) + store { ptr, i64, i64 } %t150, ptr %a154 + call void @finch_str_drop(ptr %a154) + %t155 = load { ptr, i64, i64 }, ptr %a151 + %t156 = load ptr, ptr %a1 + %t157 = load ptr, ptr %a1 + %t158 = load ptr, ptr %a1 + %t159 = icmp eq ptr %t158, null + br i1 %t159, label %panic5289, label %ok5290 +panic5289: + call void @finch_panic(ptr @.str.3367, i64 2589, ptr @.str.3368) unreachable -ok5019: - %t175 = getelementptr inbounds %S.gen.Gen, ptr %t173, i32 0, i32 9 - store i1 true, ptr %t175 +ok5290: + %t160 = getelementptr inbounds %S.gen.Gen, ptr %t158, i32 0, i32 13 + %t161 = load %S.gen.FnSig, ptr %t160 + %t162 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t157, %S.gen.FnSig %t161) + store { ptr, i64, i64 } { ptr @.str.3366, i64 12, i64 0 }, ptr %a164 + store { ptr, i64, i64 } %t162, ptr %a165 + call void @finch_str_concat(ptr %a163, ptr %a164, ptr %a165) + store { ptr, i64, i64 } %t162, ptr %a166 + call void @finch_str_drop(ptr %a166) + %t167 = load { ptr, i64, i64 }, ptr %a163 + store { ptr, i64, i64 } %t167, ptr %a169 + store { ptr, i64, i64 } { ptr @.str.3369, i64 36, i64 0 }, ptr %a170 + call void @finch_str_concat(ptr %a168, ptr %a169, ptr %a170) + store { ptr, i64, i64 } %t167, ptr %a171 + call void @finch_str_drop(ptr %a171) + %t172 = load { ptr, i64, i64 }, ptr %a168 + %t173 = load { ptr, i64, i64 }, ptr %a136 + store { ptr, i64, i64 } %t172, ptr %a175 + store { ptr, i64, i64 } %t173, ptr %a176 + call void @finch_str_concat(ptr %a174, ptr %a175, ptr %a176) + store { ptr, i64, i64 } %t172, ptr %a177 + call void @finch_str_drop(ptr %a177) + %t178 = load { ptr, i64, i64 }, ptr %a174 + store { ptr, i64, i64 } %t178, ptr %a180 + store { ptr, i64, i64 } { ptr @.str.3370, i64 3, i64 0 }, ptr %a181 + call void @finch_str_concat(ptr %a179, ptr %a180, ptr %a181) + store { ptr, i64, i64 } %t178, ptr %a182 + call void @finch_str_drop(ptr %a182) + %t183 = load { ptr, i64, i64 }, ptr %a179 + %t184 = call { ptr, i64, i64 } @finch.gen.op(ptr %t156, { ptr, i64, i64 } %t183) + store { ptr, i64, i64 } %t183, ptr %a185 + call void @finch_str_drop(ptr %a185) + store { ptr, i64, i64 } %t155, ptr %a187 + store { ptr, i64, i64 } %t184, ptr %a188 + call void @finch_str_concat(ptr %a186, ptr %a187, ptr %a188) + store { ptr, i64, i64 } %t155, ptr %a189 + call void @finch_str_drop(ptr %a189) + store { ptr, i64, i64 } %t184, ptr %a190 + call void @finch_str_drop(ptr %a190) + %t191 = load { ptr, i64, i64 }, ptr %a186 + call void @finch.gen.emit(ptr %t139, { ptr, i64, i64 } %t191) + store { ptr, i64, i64 } %t191, ptr %a192 + call void @finch_str_drop(ptr %a192) + %t193 = load ptr, ptr %a1 + %t194 = icmp eq ptr %t193, null + br i1 %t194, label %panic5291, label %ok5292 +panic5291: + call void @finch_panic(ptr @.str.3371, i64 2590, ptr @.str.3372) + unreachable +ok5292: + %t195 = getelementptr inbounds %S.gen.Gen, ptr %t193, i32 0, i32 9 + store i1 true, ptr %t195 + call void @finch_str_drop(ptr %a136) + call void @finch.drop.S_gen_Val(ptr %a132) + call void @finch.drop.S_ast_Node(ptr %a50) ret void -endif4993: - %t176 = load ptr, ptr %a1 - %t177 = icmp eq ptr %t176, null - br i1 %t177, label %panic5020, label %ok5021 -panic5020: - call void @finch_panic(ptr @.str.3259, i64 2403, ptr @.str.3260) +endif5266: + %t196 = load ptr, ptr %a1 + %t197 = icmp eq ptr %t196, null + br i1 %t197, label %panic5293, label %ok5294 +panic5293: + call void @finch_panic(ptr @.str.3373, i64 2593, ptr @.str.3374) unreachable -ok5021: - %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.3261, 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 %then5022, label %endif5024 -then5022: - %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 %then5025, label %endif5027 -then5025: - %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 %range5028, label %inrange5029 -range5028: - call void @finch_panic_index(ptr @.str.3262, i64 2405, i64 0, i64 %t193) +ok5294: + %t198 = getelementptr inbounds %S.gen.Gen, ptr %t196, i32 0, i32 13 + %t199 = getelementptr inbounds %S.gen.FnSig, ptr %t198, i32 0, i32 12 + %t200 = getelementptr inbounds %S.ast.Type, ptr %t199, i32 0, i32 0 + %t201 = load { ptr, i64, i64 }, ptr %t200 + store { ptr, i64, i64 } %t201, ptr %a202 + store { ptr, i64, i64 } { ptr @.str.3375, i64 4, i64 0 }, ptr %a203 + %t204 = call i32 @finch_str_eq(ptr %a202, ptr %a203) + %t205 = icmp ne i32 %t204, 0 + br i1 %t205, label %then5295, label %endif5297 +then5295: + %t206 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t207 = getelementptr inbounds { ptr, i64, i64 }, ptr %t206, i32 0, i32 1 + %t208 = load i64, ptr %t207 + %t209 = icmp sgt i64 %t208, 0 + br i1 %t209, label %then5298, label %endif5300 +then5298: + %t210 = load ptr, ptr %a1 + %t211 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t212 = load { ptr, i64, i64 }, ptr %t211 + %t213 = extractvalue { ptr, i64, i64 } %t212, 1 + %t214 = icmp uge i64 0, %t213 + br i1 %t214, label %range5301, label %inrange5302 +range5301: + call void @finch_panic_index(ptr @.str.3376, i64 2595, i64 0, i64 %t213) unreachable -inrange5029: - %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 %panic5030, label %ok5031 -panic5030: - call void @finch_panic(ptr @.str.3264, i64 2405, ptr @.str.3265) - unreachable -ok5031: - %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.3263, 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.3266, 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 %endif5027 -endif5027: - %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 %panic5032, label %ok5033 -panic5032: - call void @finch_panic(ptr @.str.3267, i64 2408, ptr @.str.3268) - unreachable -ok5033: - %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 %then5034, label %else5035 -then5034: - %t217 = load ptr, ptr %a1 +inrange5302: + %t215 = extractvalue { ptr, i64, i64 } %t212, 0 + %t216 = getelementptr inbounds %S.ast.Node, ptr %t215, i64 0 + %t217 = load %S.ast.Node, ptr %t216 %t218 = load ptr, ptr %a1 - %t219 = load ptr, ptr %a1 - %t220 = icmp eq ptr %t219, null - br i1 %t220, label %panic5037, label %ok5038 -panic5037: - call void @finch_panic(ptr @.str.3270, i64 2409, ptr @.str.3271) + %t219 = icmp eq ptr %t218, null + br i1 %t219, label %panic5303, label %ok5304 +panic5303: + call void @finch_panic(ptr @.str.3378, i64 2595, ptr @.str.3379) unreachable -ok5038: - %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.3269, 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.3272, 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 %endif5036 -else5035: - %t232 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t232, { ptr, i64, i64 } { ptr @.str.3273, i64 8, i64 0 }) - br label %endif5036 -endif5036: +ok5304: + %t220 = getelementptr inbounds %S.gen.Gen, ptr %t218, i32 0, i32 13 + %t221 = getelementptr inbounds %S.gen.FnSig, ptr %t220, i32 0, i32 1 + %t222 = load { ptr, i64, i64 }, ptr %t221 + store { ptr, i64, i64 } { ptr @.str.3377, i64 1, i64 0 }, ptr %a224 + store { ptr, i64, i64 } %t222, ptr %a225 + 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.3380, i64 46, i64 0 }, ptr %a229 + call void @finch_str_concat(ptr %a227, ptr %a228, ptr %a229) + store { ptr, i64, i64 } %t226, ptr %a230 + call void @finch_str_drop(ptr %a230) + %t231 = load { ptr, i64, i64 }, ptr %a227 + call void @finch.gen.fail(ptr %t210, %S.ast.Node %t217, { ptr, i64, i64 } %t231) + store { ptr, i64, i64 } %t231, ptr %a232 + call void @finch_str_drop(ptr %a232) + br label %endif5300 +endif5300: %t233 = load ptr, ptr %a1 - %t234 = icmp eq ptr %t233, null - br i1 %t234, label %panic5039, label %ok5040 -panic5039: - call void @finch_panic(ptr @.str.3274, i64 2413, ptr @.str.3275) + call void @finch.gen.dropPending(ptr %t233, i64 0) + %t234 = load ptr, ptr %a1 + call void @finch.gen.unwind(ptr %t234, i64 0) + %t235 = load ptr, ptr %a1 + %t236 = icmp eq ptr %t235, null + br i1 %t236, label %panic5305, label %ok5306 +panic5305: + call void @finch_panic(ptr @.str.3381, i64 2599, ptr @.str.3382) unreachable -ok5040: - %t235 = getelementptr inbounds %S.gen.Gen, ptr %t233, i32 0, i32 9 - store i1 true, ptr %t235 - ret void -endif5024: - %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 %then5041, label %endif5043 -then5041: +ok5306: + %t237 = getelementptr inbounds %S.gen.Gen, ptr %t235, i32 0, i32 13 + %t238 = getelementptr inbounds %S.gen.FnSig, ptr %t237, i32 0, i32 9 + %t239 = load i1, ptr %t238 + br i1 %t239, label %then5307, label %else5308 +then5307: %t240 = load ptr, ptr %a1 - %t241 = load %S.ast.Node, ptr %a2 + %t241 = load ptr, ptr %a1 %t242 = load ptr, ptr %a1 %t243 = icmp eq ptr %t242, null - br i1 %t243, label %panic5044, label %ok5045 -panic5044: - call void @finch_panic(ptr @.str.3277, i64 2417, ptr @.str.3278) + br i1 %t243, label %panic5310, label %ok5311 +panic5310: + call void @finch_panic(ptr @.str.3384, i64 2600, ptr @.str.3385) unreachable -ok5045: - %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.3276, i64 1, i64 0 }, ptr %a248 +ok5311: + %t244 = getelementptr inbounds %S.gen.Gen, ptr %t242, i32 0, i32 13 + %t245 = load %S.gen.FnSig, ptr %t244 + %t246 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t241, %S.gen.FnSig %t245) + store { ptr, i64, i64 } { ptr @.str.3383, i64 4, 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.3279, 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 %panic5046, label %ok5047 -panic5046: - call void @finch_panic(ptr @.str.3280, i64 2417, ptr @.str.3281) + store { ptr, i64, i64 } %t246, ptr %a250 + call void @finch_str_drop(ptr %a250) + %t251 = load { ptr, i64, i64 }, ptr %a247 + store { ptr, i64, i64 } %t251, ptr %a253 + store { ptr, i64, i64 } { ptr @.str.3386, i64 53, i64 0 }, ptr %a254 + call void @finch_str_concat(ptr %a252, ptr %a253, ptr %a254) + store { ptr, i64, i64 } %t251, ptr %a255 + call void @finch_str_drop(ptr %a255) + %t256 = load { ptr, i64, i64 }, ptr %a252 + call void @finch.gen.emit(ptr %t240, { ptr, i64, i64 } %t256) + store { ptr, i64, i64 } %t256, ptr %a257 + call void @finch_str_drop(ptr %a257) + br label %endif5309 +else5308: + %t258 = load ptr, ptr %a1 + call void @finch.gen.emit(ptr %t258, { ptr, i64, i64 } { ptr @.str.3387, i64 8, i64 0 }) + br label %endif5309 +endif5309: + %t259 = load ptr, ptr %a1 + %t260 = icmp eq ptr %t259, null + br i1 %t260, label %panic5312, label %ok5313 +panic5312: + call void @finch_panic(ptr @.str.3388, i64 2604, ptr @.str.3389) unreachable -ok5047: - %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 - %t260 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t259) - store { ptr, i64, i64 } %t254, ptr %a262 - store { ptr, i64, i64 } %t260, ptr %a263 - 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 %endif5043 -endif5043: - %t265 = load ptr, ptr %a1 +ok5313: + %t261 = getelementptr inbounds %S.gen.Gen, ptr %t259, i32 0, i32 9 + store i1 true, ptr %t261 + ret void +endif5297: + %t262 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t263 = getelementptr inbounds { ptr, i64, i64 }, ptr %t262, i32 0, i32 1 + %t264 = load i64, ptr %t263 + %t265 = icmp eq i64 %t264, 0 + br i1 %t265, label %then5314, label %endif5316 +then5314: %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 %range5048, label %inrange5049 -range5048: - call void @finch_panic_index(ptr @.str.3282, i64 2419, i64 0, i64 %t269) + %t267 = load %S.ast.Node, ptr %a2 + %t268 = load ptr, ptr %a1 + %t269 = icmp eq ptr %t268, null + br i1 %t269, label %panic5317, label %ok5318 +panic5317: + call void @finch_panic(ptr @.str.3391, i64 2608, ptr @.str.3392) unreachable -inrange5049: - %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 %panic5050, label %ok5051 -panic5050: - call void @finch_panic(ptr @.str.3283, i64 2419, ptr @.str.3284) +ok5318: + %t270 = getelementptr inbounds %S.gen.Gen, ptr %t268, i32 0, i32 13 + %t271 = getelementptr inbounds %S.gen.FnSig, ptr %t270, i32 0, i32 1 + %t272 = load { ptr, i64, i64 }, ptr %t271 + store { ptr, i64, i64 } { ptr @.str.3390, i64 1, 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.3393, i64 14, i64 0 }, ptr %a279 + call void @finch_str_concat(ptr %a277, ptr %a278, ptr %a279) + store { ptr, i64, i64 } %t276, ptr %a280 + call void @finch_str_drop(ptr %a280) + %t281 = load { ptr, i64, i64 }, ptr %a277 + %t282 = load ptr, ptr %a1 + %t283 = icmp eq ptr %t282, null + br i1 %t283, label %panic5319, label %ok5320 +panic5319: + call void @finch_panic(ptr @.str.3394, i64 2608, ptr @.str.3395) unreachable -ok5051: - %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 %panic5052, label %ok5053 -panic5052: - call void @finch_panic(ptr @.str.3285, i64 2419, ptr @.str.3286) +ok5320: + %t284 = getelementptr inbounds %S.gen.Gen, ptr %t282, i32 0, i32 13 + %t285 = getelementptr inbounds %S.gen.FnSig, ptr %t284, i32 0, i32 12 + %t286 = load %S.ast.Type, ptr %t285 + %t287 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t286) + store { ptr, i64, i64 } %t281, ptr %a289 + store { ptr, i64, i64 } %t287, ptr %a290 + call void @finch_str_concat(ptr %a288, ptr %a289, ptr %a290) + store { ptr, i64, i64 } %t281, ptr %a291 + call void @finch_str_drop(ptr %a291) + store { ptr, i64, i64 } %t287, ptr %a292 + call void @finch_str_drop(ptr %a292) + %t293 = load { ptr, i64, i64 }, ptr %a288 + call void @finch.gen.fail(ptr %t266, %S.ast.Node %t267, { ptr, i64, i64 } %t293) + store { ptr, i64, i64 } %t293, ptr %a294 + call void @finch_str_drop(ptr %a294) + br label %endif5316 +endif5316: + %t295 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t296 = load { ptr, i64, i64 }, ptr %t295 + %t297 = extractvalue { ptr, i64, i64 } %t296, 1 + %t298 = icmp uge i64 0, %t297 + br i1 %t298, label %range5321, label %inrange5322 +range5321: + call void @finch_panic_index(ptr @.str.3396, i64 2611, i64 0, i64 %t297) unreachable -ok5053: - %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 - %t285 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t286 = load { ptr, i64, i64 }, ptr %t285 - %t287 = extractvalue { ptr, i64, i64 } %t286, 1 - %t288 = icmp uge i64 0, %t287 - br i1 %t288, label %range5054, label %inrange5055 -range5054: - call void @finch_panic_index(ptr @.str.3287, i64 2419, i64 0, i64 %t287) - unreachable -inrange5055: - %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.3288, 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 - store { ptr, i64, i64 } %t295, ptr %a296 - call void @finch_str_copy(ptr %a297, ptr %a296) - %t298 = load { ptr, i64, i64 }, ptr %a297 - store { ptr, i64, i64 } %t298, ptr %a299 - store i1 false, ptr %a300 - %t301 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 +inrange5322: + %t299 = extractvalue { ptr, i64, i64 } %t296, 0 + %t300 = getelementptr inbounds %S.ast.Node, ptr %t299, i64 0 + %t301 = getelementptr inbounds %S.ast.Node, ptr %t300, i32 0, i32 0 %t302 = load { ptr, i64, i64 }, ptr %t301 - %t303 = extractvalue { ptr, i64, i64 } %t302, 1 - %t304 = icmp uge i64 0, %t303 - br i1 %t304, label %range5056, label %inrange5057 -range5056: - call void @finch_panic_index(ptr @.str.3289, i64 2423, i64 0, i64 %t303) - unreachable -inrange5057: - %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 + store { ptr, i64, i64 } %t302, ptr %a303 + store { ptr, i64, i64 } { ptr @.str.3397, i64 3, i64 0 }, ptr %a304 + %t305 = call i32 @finch_str_eq(ptr %a303, ptr %a304) + %t306 = icmp ne i32 %t305, 0 + br i1 %t306, label %then5323, label %endif5325 +then5323: + %t307 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t308 = load { ptr, i64, i64 }, ptr %t307 - store { ptr, i64, i64 } %t308, ptr %a309 - store { ptr, i64, i64 } { ptr @.str.3290, 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 %then5058, label %endif5060 -then5058: - %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 %range5061, label %inrange5062 -range5061: - call void @finch_panic_index(ptr @.str.3291, i64 2424, i64 0, i64 %t316) + %t309 = extractvalue { ptr, i64, i64 } %t308, 1 + %t310 = icmp uge i64 0, %t309 + br i1 %t310, label %range5326, label %inrange5327 +range5326: + call void @finch_panic_index(ptr @.str.3398, i64 2612, i64 0, i64 %t309) unreachable -inrange5062: - %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 - %t321 = load { ptr, i64, i64 }, ptr %t320 - %t322 = call i64 @finch.gen.lookup(ptr %t313, { ptr, i64, i64 } %t321) - store i64 %t322, ptr %a323 - %t324 = load i64, ptr %a323 - %t325 = icmp sge i64 %t324, 0 - br label %logic.from5063 -logic.from5063: - br i1 %t325, label %logic.rhs5064, label %logic.end5065 -logic.rhs5064: - %t326 = load i64, ptr %a323 - %t327 = sdiv i64 %t326, 100000 - %t328 = icmp sgt i64 %t327, 0 - br label %logic.rend5066 -logic.rend5066: - br label %logic.end5065 -logic.end5065: - %t329 = phi i1 [ false, %logic.from5063 ], [ %t328, %logic.rend5066 ] - store i1 %t329, ptr %a300 - br label %endif5060 -endif5060: - %t330 = load i1, ptr %a300 - %t331 = xor i1 %t330, true - br i1 %t331, label %then5067, label %endif5069 -then5067: - %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 %endif5069 -endif5069: - %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 %panic5070, label %ok5071 -panic5070: - call void @finch_panic(ptr @.str.3292, i64 2431, ptr @.str.3293) +inrange5327: + %t311 = extractvalue { ptr, i64, i64 } %t308, 0 + %t312 = getelementptr inbounds %S.ast.Node, ptr %t311, i64 0 + %t313 = getelementptr inbounds %S.ast.Node, ptr %t312, i32 0, i32 1 + %t314 = load { ptr, i64, i64 }, ptr %t313 + store { ptr, i64, i64 } %t314, ptr %a315 + call void @finch_str_copy(ptr %a316, ptr %a315) + %t317 = load { ptr, i64, i64 }, ptr %a316 + store { ptr, i64, i64 } %t317, ptr %a318 + %t319 = load ptr, ptr %a1 + %t320 = icmp eq ptr %t319, null + br i1 %t320, label %panic5328, label %ok5329 +panic5328: + call void @finch_panic(ptr @.str.3399, i64 2613, ptr @.str.3400) unreachable -ok5071: - %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 %then5072, label %else5073 -then5072: - %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 %panic5075, label %ok5076 -panic5075: - call void @finch_panic(ptr @.str.3295, i64 2432, ptr @.str.3296) +ok5329: + %t321 = getelementptr inbounds %S.gen.Gen, ptr %t319, i32 0, i32 10 + %t322 = getelementptr inbounds { ptr, i64, i64 }, ptr %t321, i32 0, i32 1 + %t323 = load i64, ptr %t322 + store i64 %t323, ptr %a324 + br label %while.cond5330 +while.cond5330: + %t325 = load i64, ptr %a324 + %t326 = icmp sgt i64 %t325, 0 + br i1 %t326, label %while.body5331, label %while.end5332 +while.body5331: + %t327 = load i64, ptr %a324 + %t328 = sub i64 %t327, 1 + store i64 %t328, ptr %a324 + store i64 -1, ptr %a329 + %t330 = load ptr, ptr %a1 + %t331 = icmp eq ptr %t330, null + br i1 %t331, label %panic5333, label %ok5334 +panic5333: + call void @finch_panic(ptr @.str.3401, i64 2617, ptr @.str.3402) unreachable -ok5076: - %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.3294, 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.3297, 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) - store { ptr, i64, i64 } %t356, ptr %a357 - %t358 = load ptr, ptr %a1 - %t359 = load ptr, ptr %a1 - %t360 = load ptr, ptr %a1 - %t361 = icmp eq ptr %t360, null - br i1 %t361, label %panic5077, label %ok5078 -panic5077: - call void @finch_panic(ptr @.str.3299, i64 2433, ptr @.str.3300) +ok5334: + %t332 = getelementptr inbounds %S.gen.Gen, ptr %t330, i32 0, i32 10 + %t333 = load i64, ptr %a324 + %t334 = load { ptr, i64, i64 }, ptr %t332 + %t335 = extractvalue { ptr, i64, i64 } %t334, 1 + %t336 = icmp uge i64 %t333, %t335 + br i1 %t336, label %range5335, label %inrange5336 +range5335: + call void @finch_panic_index(ptr @.str.3403, i64 2617, i64 %t333, i64 %t335) unreachable -ok5078: - %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.3298, 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.3301, 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 - store { ptr, i64, i64 } %t372, ptr %a375 - store { ptr, i64, i64 } %t373, ptr %a376 - 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.3302, 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 %panic5079, label %ok5080 -panic5079: - call void @finch_panic(ptr @.str.3303, i64 2433, ptr @.str.3304) +inrange5336: + %t337 = extractvalue { ptr, i64, i64 } %t334, 0 + %t338 = getelementptr inbounds %S.gen.Scope, ptr %t337, i64 %t333 + %t339 = getelementptr inbounds %S.gen.Scope, ptr %t338, i32 0, i32 0 + %t340 = getelementptr inbounds { ptr, i64, i64 }, ptr %t339, i32 0, i32 1 + %t341 = load i64, ptr %t340 + store i64 0, ptr %a342 + br label %for.cond5337 +for.cond5337: + %t343 = load i64, ptr %a342 + %t344 = icmp slt i64 %t343, %t341 + br i1 %t344, label %for.body5338, label %for.end5340 +for.body5338: + %t345 = load ptr, ptr %a1 + %t346 = icmp eq ptr %t345, null + br i1 %t346, label %panic5341, label %ok5342 +panic5341: + call void @finch_panic(ptr @.str.3404, i64 2618, ptr @.str.3405) unreachable -ok5080: - %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 - %t388 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t382, %S.ast.Type %t387) - store { ptr, i64, i64 } %t381, 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.3305, 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 - store { ptr, i64, i64 } %t396, 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 %a403 - store { ptr, i64, i64 } { ptr @.str.3306, 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) - store { ptr, i64, i64 } %t406, ptr %a407 - %t408 = load ptr, ptr %a1 - %t409 = load ptr, ptr %a1 - %t410 = load ptr, ptr %a1 - %t411 = icmp eq ptr %t410, null - br i1 %t411, label %panic5081, label %ok5082 -panic5081: - call void @finch_panic(ptr @.str.3308, i64 2434, ptr @.str.3309) +ok5342: + %t347 = getelementptr inbounds %S.gen.Gen, ptr %t345, i32 0, i32 10 + %t348 = load i64, ptr %a324 + %t349 = load { ptr, i64, i64 }, ptr %t347 + %t350 = extractvalue { ptr, i64, i64 } %t349, 1 + %t351 = icmp uge i64 %t348, %t350 + br i1 %t351, label %range5343, label %inrange5344 +range5343: + call void @finch_panic_index(ptr @.str.3406, i64 2618, i64 %t348, i64 %t350) unreachable -ok5082: - %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.3307, 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.3310, 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 - store { ptr, i64, i64 } %t422, 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 - call void @finch.gen.emit(ptr %t408, { ptr, i64, i64 } %t427) - br label %endif5074 -else5073: +inrange5344: + %t352 = extractvalue { ptr, i64, i64 } %t349, 0 + %t353 = getelementptr inbounds %S.gen.Scope, ptr %t352, i64 %t348 + %t354 = getelementptr inbounds %S.gen.Scope, ptr %t353, i32 0, i32 0 + %t355 = load i64, ptr %a342 + %t356 = load { ptr, i64, i64 }, ptr %t354 + %t357 = extractvalue { ptr, i64, i64 } %t356, 1 + %t358 = icmp uge i64 %t355, %t357 + br i1 %t358, label %range5345, label %inrange5346 +range5345: + call void @finch_panic_index(ptr @.str.3407, i64 2618, i64 %t355, i64 %t357) + unreachable +inrange5346: + %t359 = extractvalue { ptr, i64, i64 } %t356, 0 + %t360 = getelementptr inbounds %S.gen.Var, ptr %t359, i64 %t355 + %t361 = getelementptr inbounds %S.gen.Var, ptr %t360, i32 0, i32 0 + %t362 = load { ptr, i64, i64 }, ptr %t361 + %t363 = load { ptr, i64, i64 }, ptr %a318 + store { ptr, i64, i64 } %t362, ptr %a364 + store { ptr, i64, i64 } %t363, ptr %a365 + %t366 = call i32 @finch_str_eq(ptr %a364, ptr %a365) + %t367 = icmp ne i32 %t366, 0 + br label %logic.from5347 +logic.from5347: + br i1 %t367, label %logic.rhs5348, label %logic.end5349 +logic.rhs5348: + %t368 = load ptr, ptr %a1 + %t369 = icmp eq ptr %t368, null + br i1 %t369, label %panic5350, label %ok5351 +panic5350: + call void @finch_panic(ptr @.str.3408, i64 2618, ptr @.str.3409) + unreachable +ok5351: + %t370 = getelementptr inbounds %S.gen.Gen, ptr %t368, i32 0, i32 43 + %t371 = load i1, ptr %t370 + br label %logic.from5352 +logic.from5352: + br i1 %t371, label %logic.rhs5353, label %logic.end5354 +logic.rhs5353: + %t372 = load ptr, ptr %a1 + %t373 = icmp eq ptr %t372, null + br i1 %t373, label %panic5355, label %ok5356 +panic5355: + call void @finch_panic(ptr @.str.3410, i64 2618, ptr @.str.3411) + unreachable +ok5356: + %t374 = getelementptr inbounds %S.gen.Gen, ptr %t372, i32 0, i32 10 + %t375 = load i64, ptr %a324 + %t376 = load { ptr, i64, i64 }, ptr %t374 + %t377 = extractvalue { ptr, i64, i64 } %t376, 1 + %t378 = icmp uge i64 %t375, %t377 + br i1 %t378, label %range5357, label %inrange5358 +range5357: + call void @finch_panic_index(ptr @.str.3412, i64 2618, i64 %t375, i64 %t377) + unreachable +inrange5358: + %t379 = extractvalue { ptr, i64, i64 } %t376, 0 + %t380 = getelementptr inbounds %S.gen.Scope, ptr %t379, i64 %t375 + %t381 = getelementptr inbounds %S.gen.Scope, ptr %t380, i32 0, i32 0 + %t382 = load i64, ptr %a342 + %t383 = load { ptr, i64, i64 }, ptr %t381 + %t384 = extractvalue { ptr, i64, i64 } %t383, 1 + %t385 = icmp uge i64 %t382, %t384 + br i1 %t385, label %range5359, label %inrange5360 +range5359: + call void @finch_panic_index(ptr @.str.3413, i64 2618, i64 %t382, i64 %t384) + unreachable +inrange5360: + %t386 = extractvalue { ptr, i64, i64 } %t383, 0 + %t387 = getelementptr inbounds %S.gen.Var, ptr %t386, i64 %t382 + %t388 = getelementptr inbounds %S.gen.Var, ptr %t387, i32 0, i32 4 + %t389 = load i64, ptr %t388 + %t390 = load ptr, ptr %a1 + %t391 = icmp eq ptr %t390, null + br i1 %t391, label %panic5361, label %ok5362 +panic5361: + call void @finch_panic(ptr @.str.3414, i64 2618, ptr @.str.3415) + unreachable +ok5362: + %t392 = getelementptr inbounds %S.gen.Gen, ptr %t390, i32 0, i32 44 + %t393 = load i64, ptr %t392 + %t394 = icmp sge i64 %t389, %t393 + br label %logic.rend5363 +logic.rend5363: + br label %logic.end5354 +logic.end5354: + %t395 = phi i1 [ false, %logic.from5352 ], [ %t394, %logic.rend5363 ] + %t396 = xor i1 %t395, true + br label %logic.rend5364 +logic.rend5364: + br label %logic.end5349 +logic.end5349: + %t397 = phi i1 [ false, %logic.from5347 ], [ %t396, %logic.rend5364 ] + br i1 %t397, label %then5365, label %endif5367 +then5365: + %t398 = load i64, ptr %a342 + store i64 %t398, ptr %a329 + br label %endif5367 +endif5367: + br label %for.step5339 +for.step5339: + %t399 = load i64, ptr %a342 + %t400 = add i64 %t399, 1 + store i64 %t400, ptr %a342 + br label %for.cond5337 +for.end5340: + %t401 = load i64, ptr %a329 + %t402 = icmp slt i64 %t401, 0 + br i1 %t402, label %then5368, label %endif5370 +then5368: + br label %while.cond5330 +endif5370: + %t403 = load ptr, ptr %a1 + %t404 = icmp eq ptr %t403, null + br i1 %t404, label %panic5371, label %ok5372 +panic5371: + call void @finch_panic(ptr @.str.3416, i64 2625, ptr @.str.3417) + unreachable +ok5372: + %t405 = getelementptr inbounds %S.gen.Gen, ptr %t403, i32 0, i32 10 + %t406 = load i64, ptr %a324 + %t407 = load { ptr, i64, i64 }, ptr %t405 + %t408 = extractvalue { ptr, i64, i64 } %t407, 1 + %t409 = icmp uge i64 %t406, %t408 + br i1 %t409, label %range5373, label %inrange5374 +range5373: + call void @finch_panic_index(ptr @.str.3418, i64 2625, i64 %t406, i64 %t408) + unreachable +inrange5374: + %t410 = extractvalue { ptr, i64, i64 } %t407, 0 + %t411 = getelementptr inbounds %S.gen.Scope, ptr %t410, i64 %t406 + %t412 = getelementptr inbounds %S.gen.Scope, ptr %t411, i32 0, i32 0 + %t413 = load i64, ptr %a329 + %t414 = load { ptr, i64, i64 }, ptr %t412 + %t415 = extractvalue { ptr, i64, i64 } %t414, 1 + %t416 = icmp uge i64 %t413, %t415 + br i1 %t416, label %range5375, label %inrange5376 +range5375: + call void @finch_panic_index(ptr @.str.3419, i64 2625, i64 %t413, i64 %t415) + unreachable +inrange5376: + %t417 = extractvalue { ptr, i64, i64 } %t414, 0 + %t418 = getelementptr inbounds %S.gen.Var, ptr %t417, i64 %t413 + %t419 = load %S.gen.Var, ptr %t418 + store %S.gen.Var %t419, ptr %a420 + call void @finch.copy.S_gen_Var(ptr %a421, ptr %a420) + %t422 = load %S.gen.Var, ptr %a421 + store %S.gen.Var %t422, ptr %a423 + %t424 = getelementptr inbounds %S.gen.Var, ptr %a423, i32 0, i32 5 + %t425 = load i1, ptr %t424 + br label %logic.from5377 +logic.from5377: + br i1 %t425, label %logic.rhs5378, label %logic.end5379 +logic.rhs5378: + %t426 = getelementptr inbounds %S.gen.Var, ptr %a423, i32 0, i32 1 + %t427 = load %S.ast.Type, ptr %t426 %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 %panic5083, label %ok5084 -panic5083: - call void @finch_panic(ptr @.str.3312, i64 2436, ptr @.str.3313) + %t429 = icmp eq ptr %t428, null + br i1 %t429, label %panic5380, label %ok5381 +panic5380: + call void @finch_panic(ptr @.str.3420, i64 2626, ptr @.str.3421) unreachable -ok5084: - %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.3311, 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.3314, 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 - store { ptr, i64, i64 } %t443, ptr %a446 - store { ptr, i64, i64 } %t444, ptr %a447 - 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 %endif5074 -endif5074: - %t449 = load ptr, ptr %a1 - %t450 = icmp eq ptr %t449, null - br i1 %t450, label %panic5085, label %ok5086 -panic5085: - call void @finch_panic(ptr @.str.3315, i64 2438, ptr @.str.3316) +ok5381: + %t430 = getelementptr inbounds %S.gen.Gen, ptr %t428, i32 0, i32 13 + %t431 = getelementptr inbounds %S.gen.FnSig, ptr %t430, i32 0, i32 12 + %t432 = load %S.ast.Type, ptr %t431 + %t433 = call i1 @finch.ast.same(%S.ast.Type %t427, %S.ast.Type %t432) + br label %logic.rend5382 +logic.rend5382: + br label %logic.end5379 +logic.end5379: + %t434 = phi i1 [ false, %logic.from5377 ], [ %t433, %logic.rend5382 ] + br i1 %t434, label %then5383, label %endif5385 +then5383: + %t435 = load ptr, ptr %a1 + %t436 = load ptr, ptr %a1 + %t437 = getelementptr inbounds %S.gen.Var, ptr %a423, i32 0, i32 1 + %t438 = load %S.ast.Type, ptr %t437 + %t439 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t436, %S.ast.Type %t438) + %t440 = getelementptr inbounds %S.gen.Var, ptr %a423, i32 0, i32 2 + %t441 = load { ptr, i64, i64 }, ptr %t440 + %t442 = call { ptr, i64, i64 } @finch.gen.load(ptr %t435, { ptr, i64, i64 } %t439, { ptr, i64, i64 } %t441) + store { ptr, i64, i64 } %t439, ptr %a443 + call void @finch_str_drop(ptr %a443) + store { ptr, i64, i64 } %t442, ptr %a444 + %t445 = load ptr, ptr %a1 + %t446 = icmp eq ptr %t445, null + br i1 %t446, label %panic5386, label %ok5387 +panic5386: + call void @finch_panic(ptr @.str.3422, i64 2628, ptr @.str.3423) unreachable -ok5086: - %t451 = getelementptr inbounds %S.gen.Gen, ptr %t449, i32 0, i32 9 - store i1 true, ptr %t451 +ok5387: + %t447 = getelementptr inbounds %S.gen.Gen, ptr %t445, i32 0, i32 10 + %t448 = load i64, ptr %a324 + %t449 = load { ptr, i64, i64 }, ptr %t447 + %t450 = extractvalue { ptr, i64, i64 } %t449, 1 + %t451 = icmp uge i64 %t448, %t450 + br i1 %t451, label %range5388, label %inrange5389 +range5388: + call void @finch_panic_index(ptr @.str.3424, i64 2628, i64 %t448, i64 %t450) + unreachable +inrange5389: + %t452 = extractvalue { ptr, i64, i64 } %t449, 0 + %t453 = getelementptr inbounds %S.gen.Scope, ptr %t452, i64 %t448 + %t454 = getelementptr inbounds %S.gen.Scope, ptr %t453, i32 0, i32 0 + %t455 = load i64, ptr %a329 + %t456 = load { ptr, i64, i64 }, ptr %t454 + %t457 = extractvalue { ptr, i64, i64 } %t456, 1 + %t458 = icmp uge i64 %t455, %t457 + br i1 %t458, label %range5390, label %inrange5391 +range5390: + call void @finch_panic_index(ptr @.str.3425, i64 2628, i64 %t455, i64 %t457) + unreachable +inrange5391: + %t459 = extractvalue { ptr, i64, i64 } %t456, 0 + %t460 = getelementptr inbounds %S.gen.Var, ptr %t459, i64 %t455 + %t461 = getelementptr inbounds %S.gen.Var, ptr %t460, i32 0, i32 6 + store i1 true, ptr %t461 + %t462 = load ptr, ptr %a1 + call void @finch.gen.dropPending(ptr %t462, i64 0) + %t463 = load ptr, ptr %a1 + call void @finch.gen.unwind(ptr %t463, i64 0) + %t464 = load ptr, ptr %a1 + %t465 = icmp eq ptr %t464, null + br i1 %t465, label %panic5392, label %ok5393 +panic5392: + call void @finch_panic(ptr @.str.3426, i64 2631, ptr @.str.3427) + unreachable +ok5393: + %t466 = getelementptr inbounds %S.gen.Gen, ptr %t464, i32 0, i32 10 + %t467 = load i64, ptr %a324 + %t468 = load { ptr, i64, i64 }, ptr %t466 + %t469 = extractvalue { ptr, i64, i64 } %t468, 1 + %t470 = icmp uge i64 %t467, %t469 + br i1 %t470, label %range5394, label %inrange5395 +range5394: + call void @finch_panic_index(ptr @.str.3428, i64 2631, i64 %t467, i64 %t469) + unreachable +inrange5395: + %t471 = extractvalue { ptr, i64, i64 } %t468, 0 + %t472 = getelementptr inbounds %S.gen.Scope, ptr %t471, i64 %t467 + %t473 = getelementptr inbounds %S.gen.Scope, ptr %t472, i32 0, i32 0 + %t474 = load i64, ptr %a329 + %t475 = load { ptr, i64, i64 }, ptr %t473 + %t476 = extractvalue { ptr, i64, i64 } %t475, 1 + %t477 = icmp uge i64 %t474, %t476 + br i1 %t477, label %range5396, label %inrange5397 +range5396: + call void @finch_panic_index(ptr @.str.3429, i64 2631, i64 %t474, i64 %t476) + unreachable +inrange5397: + %t478 = extractvalue { ptr, i64, i64 } %t475, 0 + %t479 = getelementptr inbounds %S.gen.Var, ptr %t478, i64 %t474 + %t480 = getelementptr inbounds %S.gen.Var, ptr %t479, i32 0, i32 6 + store i1 false, ptr %t480 + %t481 = load ptr, ptr %a1 + %t482 = load { ptr, i64, i64 }, ptr %a444 + call void @finch.gen.finishReturn(ptr %t481, { ptr, i64, i64 } %t482) + call void @finch_str_drop(ptr %a444) + call void @finch.drop.S_gen_Var(ptr %a423) + call void @finch_str_drop(ptr %a318) + ret void +endif5385: + call void @finch.drop.S_gen_Var(ptr %a423) + br label %while.end5332 +while.end5332: + call void @finch_str_drop(ptr %a318) + br label %endif5325 +endif5325: + %t483 = load ptr, ptr %a1 + %t484 = load ptr, ptr %a1 + %t485 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t486 = load { ptr, i64, i64 }, ptr %t485 + %t487 = extractvalue { ptr, i64, i64 } %t486, 1 + %t488 = icmp uge i64 0, %t487 + br i1 %t488, label %range5398, label %inrange5399 +range5398: + call void @finch_panic_index(ptr @.str.3430, i64 2638, i64 0, i64 %t487) + unreachable +inrange5399: + %t489 = extractvalue { ptr, i64, i64 } %t486, 0 + %t490 = getelementptr inbounds %S.ast.Node, ptr %t489, i64 0 + %t491 = load %S.ast.Node, ptr %t490 + %t492 = load ptr, ptr %a1 + %t493 = icmp eq ptr %t492, null + br i1 %t493, label %panic5400, label %ok5401 +panic5400: + call void @finch_panic(ptr @.str.3431, i64 2638, ptr @.str.3432) + unreachable +ok5401: + %t494 = getelementptr inbounds %S.gen.Gen, ptr %t492, i32 0, i32 13 + %t495 = getelementptr inbounds %S.gen.FnSig, ptr %t494, i32 0, i32 12 + %t496 = load %S.ast.Type, ptr %t495 + %t497 = call %S.gen.Val @finch.gen.exprWant(ptr %t484, %S.ast.Node %t491, %S.ast.Type %t496) + %t498 = load ptr, ptr %a1 + %t499 = icmp eq ptr %t498, null + br i1 %t499, label %panic5402, label %ok5403 +panic5402: + call void @finch_panic(ptr @.str.3433, i64 2638, ptr @.str.3434) + unreachable +ok5403: + %t500 = getelementptr inbounds %S.gen.Gen, ptr %t498, i32 0, i32 13 + %t501 = getelementptr inbounds %S.gen.FnSig, ptr %t500, i32 0, i32 12 + %t502 = load %S.ast.Type, ptr %t501 + %t503 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t504 = load { ptr, i64, i64 }, ptr %t503 + %t505 = extractvalue { ptr, i64, i64 } %t504, 1 + %t506 = icmp uge i64 0, %t505 + br i1 %t506, label %range5404, label %inrange5405 +range5404: + call void @finch_panic_index(ptr @.str.3435, i64 2638, i64 0, i64 %t505) + unreachable +inrange5405: + %t507 = extractvalue { ptr, i64, i64 } %t504, 0 + %t508 = getelementptr inbounds %S.ast.Node, ptr %t507, i64 0 + %t509 = load %S.ast.Node, ptr %t508 + %t510 = call %S.gen.Val @finch.gen.coerce(ptr %t483, %S.gen.Val %t497, %S.ast.Type %t502, %S.ast.Node %t509, { ptr, i64, i64 } { ptr @.str.3436, i64 18, i64 0 }) + store %S.gen.Val %t497, ptr %a511 + call void @finch.drop.S_gen_Val(ptr %a511) + store %S.gen.Val %t510, ptr %a512 + %t513 = load ptr, ptr %a1 + %t514 = load %S.gen.Val, ptr %a512 + %t515 = call { ptr, i64, i64 } @finch.gen.own(ptr %t513, %S.gen.Val %t514) + store { ptr, i64, i64 } %t515, ptr %a516 + %t517 = load ptr, ptr %a1 + call void @finch.gen.dropPending(ptr %t517, i64 0) + %t518 = load ptr, ptr %a1 + call void @finch.gen.unwind(ptr %t518, i64 0) + %t519 = load ptr, ptr %a1 + %t520 = load { ptr, i64, i64 }, ptr %a516 + call void @finch.gen.finishReturn(ptr %t519, { ptr, i64, i64 } %t520) + call void @finch_str_drop(ptr %a516) + call void @finch.drop.S_gen_Val(ptr %a512) + ret void +} + +define internal void @finch.gen.finishReturn(ptr %p0, { ptr, i64, i64 } %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = 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 + %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 + %a23 = alloca { ptr, i64, i64 }, align 16 + %a26 = alloca { ptr, i64, i64 }, align 16 + %a27 = 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 + %a38 = 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 + %a43 = alloca { ptr, i64, i64 }, align 16 + %a46 = 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 + %a54 = 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 + %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 + %a72 = 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 + %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 + %a83 = alloca { ptr, i64, i64 }, align 16 + %a86 = alloca { ptr, i64, i64 }, align 16 + %a87 = 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 + %a98 = 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 + %a103 = 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 + %a109 = alloca { ptr, i64, i64 }, align 16 + %a111 = alloca { ptr, i64, i64 }, align 16 + %a120 = alloca { ptr, i64, i64 }, align 16 + %a121 = alloca { ptr, i64, i64 }, align 16 + %a122 = alloca { ptr, i64, i64 }, align 16 + %a123 = alloca { ptr, i64, i64 }, align 16 + %a125 = 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 + %a134 = alloca { ptr, i64, i64 }, align 16 + %a136 = 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 %panic5406, label %ok5407 +panic5406: + call void @finch_panic(ptr @.str.3437, i64 2646, ptr @.str.3438) + unreachable +ok5407: + %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 13 + %t6 = getelementptr inbounds %S.gen.FnSig, ptr %t5, i32 0, i32 9 + %t7 = load i1, ptr %t6 + br i1 %t7, label %then5408, label %else5409 +then5408: + %t8 = load ptr, ptr %a1 + %t9 = load ptr, ptr %a1 + %t10 = load ptr, ptr %a1 + %t11 = icmp eq ptr %t10, null + br i1 %t11, label %panic5411, label %ok5412 +panic5411: + call void @finch_panic(ptr @.str.3440, i64 2647, ptr @.str.3441) + unreachable +ok5412: + %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 13 + %t13 = load %S.gen.FnSig, ptr %t12 + %t14 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t9, %S.gen.FnSig %t13) + store { ptr, i64, i64 } { ptr @.str.3439, i64 12, i64 0 }, ptr %a16 + store { ptr, i64, i64 } %t14, ptr %a17 + call void @finch_str_concat(ptr %a15, ptr %a16, ptr %a17) + store { ptr, i64, i64 } %t14, ptr %a18 + call void @finch_str_drop(ptr %a18) + %t19 = load { ptr, i64, i64 }, ptr %a15 + store { ptr, i64, i64 } %t19, ptr %a21 + store { ptr, i64, i64 } { ptr @.str.3442, i64 28, i64 0 }, ptr %a22 + call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22) + store { ptr, i64, i64 } %t19, ptr %a23 + call void @finch_str_drop(ptr %a23) + %t24 = load { ptr, i64, i64 }, ptr %a20 + %t25 = call { ptr, i64, i64 } @finch.gen.op(ptr %t8, { ptr, i64, i64 } %t24) + store { ptr, i64, i64 } %t24, ptr %a26 + call void @finch_str_drop(ptr %a26) + store { ptr, i64, i64 } %t25, ptr %a27 + %t28 = load ptr, ptr %a1 + %t29 = load ptr, ptr %a1 + %t30 = load ptr, ptr %a1 + %t31 = icmp eq ptr %t30, null + br i1 %t31, label %panic5413, label %ok5414 +panic5413: + call void @finch_panic(ptr @.str.3444, i64 2648, ptr @.str.3445) + unreachable +ok5414: + %t32 = getelementptr inbounds %S.gen.Gen, ptr %t30, i32 0, i32 13 + %t33 = load %S.gen.FnSig, ptr %t32 + %t34 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t29, %S.gen.FnSig %t33) + store { ptr, i64, i64 } { ptr @.str.3443, i64 12, i64 0 }, ptr %a36 + store { ptr, i64, i64 } %t34, ptr %a37 + call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) + store { ptr, i64, i64 } %t34, ptr %a38 + call void @finch_str_drop(ptr %a38) + %t39 = load { ptr, i64, i64 }, ptr %a35 + store { ptr, i64, i64 } %t39, ptr %a41 + store { ptr, i64, i64 } { ptr @.str.3446, i64 1, i64 0 }, ptr %a42 + call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) + store { ptr, i64, i64 } %t39, ptr %a43 + call void @finch_str_drop(ptr %a43) + %t44 = load { ptr, i64, i64 }, ptr %a40 + %t45 = load { ptr, i64, i64 }, ptr %a27 + store { ptr, i64, i64 } %t44, ptr %a47 + store { ptr, i64, i64 } %t45, ptr %a48 + call void @finch_str_concat(ptr %a46, ptr %a47, ptr %a48) + store { ptr, i64, i64 } %t44, ptr %a49 + call void @finch_str_drop(ptr %a49) + %t50 = load { ptr, i64, i64 }, ptr %a46 + store { ptr, i64, i64 } %t50, ptr %a52 + store { ptr, i64, i64 } { ptr @.str.3447, i64 2, i64 0 }, ptr %a53 + call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) + store { ptr, i64, i64 } %t50, ptr %a54 + call void @finch_str_drop(ptr %a54) + %t55 = load { ptr, i64, i64 }, ptr %a51 + %t56 = load ptr, ptr %a1 + %t57 = load ptr, ptr %a1 + %t58 = icmp eq ptr %t57, null + br i1 %t58, label %panic5415, label %ok5416 +panic5415: + call void @finch_panic(ptr @.str.3448, i64 2648, ptr @.str.3449) + unreachable +ok5416: + %t59 = getelementptr inbounds %S.gen.Gen, ptr %t57, i32 0, i32 13 + %t60 = getelementptr inbounds %S.gen.FnSig, ptr %t59, i32 0, i32 12 + %t61 = load %S.ast.Type, ptr %t60 + %t62 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t56, %S.ast.Type %t61) + store { ptr, i64, i64 } %t55, ptr %a64 + store { ptr, i64, i64 } %t62, ptr %a65 + call void @finch_str_concat(ptr %a63, ptr %a64, ptr %a65) + store { ptr, i64, i64 } %t55, ptr %a66 + call void @finch_str_drop(ptr %a66) + store { ptr, i64, i64 } %t62, ptr %a67 + call void @finch_str_drop(ptr %a67) + %t68 = load { ptr, i64, i64 }, ptr %a63 + store { ptr, i64, i64 } %t68, ptr %a70 + store { ptr, i64, i64 } { ptr @.str.3450, i64 1, i64 0 }, ptr %a71 + call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) + store { ptr, i64, i64 } %t68, ptr %a72 + call void @finch_str_drop(ptr %a72) + %t73 = load { ptr, i64, i64 }, ptr %a69 + %t74 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t73, ptr %a76 + store { ptr, i64, i64 } %t74, ptr %a77 + call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77) + store { ptr, i64, i64 } %t73, ptr %a78 + call void @finch_str_drop(ptr %a78) + %t79 = load { ptr, i64, i64 }, ptr %a75 + store { ptr, i64, i64 } %t79, ptr %a81 + store { ptr, i64, i64 } { ptr @.str.3451, i64 3, i64 0 }, ptr %a82 + call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82) + store { ptr, i64, i64 } %t79, ptr %a83 + call void @finch_str_drop(ptr %a83) + %t84 = load { ptr, i64, i64 }, ptr %a80 + %t85 = call { ptr, i64, i64 } @finch.gen.op(ptr %t28, { ptr, i64, i64 } %t84) + store { ptr, i64, i64 } %t84, ptr %a86 + call void @finch_str_drop(ptr %a86) + store { ptr, i64, i64 } %t85, ptr %a87 + %t88 = load ptr, ptr %a1 + %t89 = load ptr, ptr %a1 + %t90 = load ptr, ptr %a1 + %t91 = icmp eq ptr %t90, null + br i1 %t91, label %panic5417, label %ok5418 +panic5417: + call void @finch_panic(ptr @.str.3453, i64 2649, ptr @.str.3454) + unreachable +ok5418: + %t92 = getelementptr inbounds %S.gen.Gen, ptr %t90, i32 0, i32 13 + %t93 = load %S.gen.FnSig, ptr %t92 + %t94 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t89, %S.gen.FnSig %t93) + store { ptr, i64, i64 } { ptr @.str.3452, i64 4, i64 0 }, ptr %a96 + store { ptr, i64, i64 } %t94, ptr %a97 + call void @finch_str_concat(ptr %a95, ptr %a96, ptr %a97) + store { ptr, i64, i64 } %t94, ptr %a98 + call void @finch_str_drop(ptr %a98) + %t99 = load { ptr, i64, i64 }, ptr %a95 + store { ptr, i64, i64 } %t99, ptr %a101 + store { ptr, i64, i64 } { ptr @.str.3455, i64 1, i64 0 }, ptr %a102 + call void @finch_str_concat(ptr %a100, ptr %a101, ptr %a102) + store { ptr, i64, i64 } %t99, ptr %a103 + call void @finch_str_drop(ptr %a103) + %t104 = load { ptr, i64, i64 }, ptr %a100 + %t105 = load { ptr, i64, i64 }, ptr %a87 + store { ptr, i64, i64 } %t104, ptr %a107 + store { ptr, i64, i64 } %t105, ptr %a108 + call void @finch_str_concat(ptr %a106, ptr %a107, ptr %a108) + store { ptr, i64, i64 } %t104, ptr %a109 + call void @finch_str_drop(ptr %a109) + %t110 = load { ptr, i64, i64 }, ptr %a106 + call void @finch.gen.emit(ptr %t88, { ptr, i64, i64 } %t110) + store { ptr, i64, i64 } %t110, ptr %a111 + call void @finch_str_drop(ptr %a111) + call void @finch_str_drop(ptr %a87) + call void @finch_str_drop(ptr %a27) + br label %endif5410 +else5409: + %t112 = load ptr, ptr %a1 + %t113 = load ptr, ptr %a1 + %t114 = load ptr, ptr %a1 + %t115 = icmp eq ptr %t114, null + br i1 %t115, label %panic5419, label %ok5420 +panic5419: + call void @finch_panic(ptr @.str.3457, i64 2651, ptr @.str.3458) + unreachable +ok5420: + %t116 = getelementptr inbounds %S.gen.Gen, ptr %t114, i32 0, i32 13 + %t117 = getelementptr inbounds %S.gen.FnSig, ptr %t116, i32 0, i32 12 + %t118 = load %S.ast.Type, ptr %t117 + %t119 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t113, %S.ast.Type %t118) + store { ptr, i64, i64 } { ptr @.str.3456, i64 4, i64 0 }, ptr %a121 + store { ptr, i64, i64 } %t119, ptr %a122 + call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122) + store { ptr, i64, i64 } %t119, ptr %a123 + call void @finch_str_drop(ptr %a123) + %t124 = load { ptr, i64, i64 }, ptr %a120 + store { ptr, i64, i64 } %t124, ptr %a126 + store { ptr, i64, i64 } { ptr @.str.3459, i64 1, i64 0 }, ptr %a127 + call void @finch_str_concat(ptr %a125, ptr %a126, ptr %a127) + store { ptr, i64, i64 } %t124, ptr %a128 + call void @finch_str_drop(ptr %a128) + %t129 = load { ptr, i64, i64 }, ptr %a125 + %t130 = load { ptr, i64, i64 }, ptr %a2 + 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) + store { ptr, i64, i64 } %t129, ptr %a134 + call void @finch_str_drop(ptr %a134) + %t135 = load { ptr, i64, i64 }, ptr %a131 + call void @finch.gen.emit(ptr %t112, { ptr, i64, i64 } %t135) + store { ptr, i64, i64 } %t135, ptr %a136 + call void @finch_str_drop(ptr %a136) + br label %endif5410 +endif5410: + %t137 = load ptr, ptr %a1 + %t138 = icmp eq ptr %t137, null + br i1 %t138, label %panic5421, label %ok5422 +panic5421: + call void @finch_panic(ptr @.str.3460, i64 2653, ptr @.str.3461) + unreachable +ok5422: + %t139 = getelementptr inbounds %S.gen.Gen, ptr %t137, i32 0, i32 9 + store i1 true, ptr %t139 ret void } @@ -46275,15 +54517,20 @@ entry: %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 + %a15 = alloca { ptr, i64, i64 }, align 16 %a17 = alloca { ptr, i64, i64 }, align 16 %a18 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 + %a19 = alloca { ptr, i64, i64 }, align 16 + %a20 = 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 %a34 = alloca { ptr, i64, i64 }, align 16 %a35 = alloca { ptr, i64, i64 }, align 16 + %a37 = alloca { ptr, i64, i64 }, align 16 + %a38 = 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 %S.ast.Type %p1, ptr %a2 %t3 = load ptr, ptr %a1 @@ -46291,46 +54538,56 @@ 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 %range5087, label %inrange5088 -range5087: - call void @finch_panic_index(ptr @.str.3318, i64 2450, i64 0, i64 %t6) + br i1 %t7, label %range5423, label %inrange5424 +range5423: + call void @finch_panic_index(ptr @.str.3463, i64 2665, i64 0, i64 %t6) unreachable -inrange5088: +inrange5424: %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.3317, i64 7, i64 0 }, ptr %a13 + store { ptr, i64, i64 } { ptr @.str.3462, 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.3319, 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 - %t21 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t22 = load { ptr, i64, i64 }, ptr %t21 - %t23 = extractvalue { ptr, i64, i64 } %t22, 1 - %t24 = icmp uge i64 1, %t23 - br i1 %t24, label %range5089, label %inrange5090 -range5089: - call void @finch_panic_index(ptr @.str.3320, i64 2450, i64 1, i64 %t23) + store { ptr, i64, i64 } %t11, ptr %a15 + call void @finch_str_drop(ptr %a15) + %t16 = load { ptr, i64, i64 }, ptr %a12 + store { ptr, i64, i64 } %t16, ptr %a18 + store { ptr, i64, i64 } { ptr @.str.3464, i64 2, i64 0 }, ptr %a19 + call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) + store { ptr, i64, i64 } %t16, ptr %a20 + call void @finch_str_drop(ptr %a20) + %t21 = load { ptr, i64, i64 }, ptr %a17 + %t22 = load ptr, ptr %a1 + %t23 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t24 = load { ptr, i64, i64 }, ptr %t23 + %t25 = extractvalue { ptr, i64, i64 } %t24, 1 + %t26 = icmp uge i64 1, %t25 + br i1 %t26, label %range5425, label %inrange5426 +range5425: + call void @finch_panic_index(ptr @.str.3465, i64 2665, i64 1, i64 %t25) unreachable -inrange5090: - %t25 = extractvalue { ptr, i64, i64 } %t22, 0 - %t26 = getelementptr inbounds %S.ast.Type, ptr %t25, i64 1 - %t27 = load %S.ast.Type, ptr %t26 - %t28 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t20, %S.ast.Type %t27) - store { ptr, i64, i64 } %t19, 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.3321, 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 +inrange5426: + %t27 = extractvalue { ptr, i64, i64 } %t24, 0 + %t28 = getelementptr inbounds %S.ast.Type, ptr %t27, i64 1 + %t29 = load %S.ast.Type, ptr %t28 + %t30 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t22, %S.ast.Type %t29) + store { ptr, i64, i64 } %t21, ptr %a32 + store { ptr, i64, i64 } %t30, ptr %a33 + call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) + store { ptr, i64, i64 } %t21, ptr %a34 + call void @finch_str_drop(ptr %a34) + store { ptr, i64, i64 } %t30, ptr %a35 + call void @finch_str_drop(ptr %a35) + %t36 = load { ptr, i64, i64 }, ptr %a31 + store { ptr, i64, i64 } %t36, ptr %a38 + store { ptr, i64, i64 } { ptr @.str.3466, i64 2, i64 0 }, ptr %a39 + call void @finch_str_concat(ptr %a37, ptr %a38, ptr %a39) + store { ptr, i64, i64 } %t36, ptr %a40 + call void @finch_str_drop(ptr %a40) + %t41 = load { ptr, i64, i64 }, ptr %a37 + ret { ptr, i64, i64 } %t41 } define internal { ptr, i64, i64 } @finch.gen.entrySize(ptr %p0, %S.ast.Type %p1) { @@ -46340,23 +54597,29 @@ entry: %a6 = alloca { ptr, i64, i64 }, align 16 %a7 = alloca { ptr, i64, i64 }, align 16 %a8 = alloca { ptr, i64, i64 }, align 16 - %a10 = 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 + %a14 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store %S.ast.Type %p1, ptr %a2 %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.3322, i64 29, i64 0 }, ptr %a7 + store { ptr, i64, i64 } { ptr @.str.3467, 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.3323, 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 + store { ptr, i64, i64 } %t5, ptr %a9 + call void @finch_str_drop(ptr %a9) + %t10 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t10, ptr %a12 + store { ptr, i64, i64 } { ptr @.str.3468, i64 26, i64 0 }, ptr %a13 + call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13) + store { ptr, i64, i64 } %t10, ptr %a14 + call void @finch_str_drop(ptr %a14) + %t15 = load { ptr, i64, i64 }, ptr %a11 + ret { ptr, i64, i64 } %t15 } define internal { ptr, i64, i64 } @finch.gen.entryAt(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, { ptr, i64, i64 } %p3) { @@ -46368,31 +54631,43 @@ entry: %a10 = alloca { ptr, i64, i64 }, align 16 %a11 = alloca { ptr, i64, i64 }, align 16 %a12 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 + %a13 = alloca { ptr, i64, i64 }, align 16 %a15 = alloca { ptr, i64, i64 }, align 16 %a16 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 + %a17 = alloca { ptr, i64, i64 }, align 16 + %a18 = 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 %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = 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 + %a32 = alloca { ptr, i64, i64 }, align 16 %a34 = alloca { ptr, i64, i64 }, align 16 %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a38 = 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 + %a42 = 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 + %a46 = 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 %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 + %a59 = alloca { ptr, i64, i64 }, align 16 + %a62 = 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 + %a68 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store { ptr, i64, i64 } %p1, ptr %a2 store %S.ast.Type %p2, ptr %a3 @@ -46402,54 +54677,79 @@ 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.3325, i64 23, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.3470, 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.3326, 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 - store { ptr, i64, i64 } %t17, 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.3327, 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.3324, 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.3328, 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.3329, 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 - store { ptr, i64, i64 } %t41, 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.3330, 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 + store { ptr, i64, i64 } %t9, ptr %a13 + call void @finch_str_drop(ptr %a13) + %t14 = load { ptr, i64, i64 }, ptr %a10 + store { ptr, i64, i64 } %t14, ptr %a16 + store { ptr, i64, i64 } { ptr @.str.3471, i64 6, i64 0 }, ptr %a17 + call void @finch_str_concat(ptr %a15, ptr %a16, ptr %a17) + store { ptr, i64, i64 } %t14, ptr %a18 + call void @finch_str_drop(ptr %a18) + %t19 = load { ptr, i64, i64 }, ptr %a15 + %t20 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t19, ptr %a22 + store { ptr, i64, i64 } %t20, ptr %a23 + call void @finch_str_concat(ptr %a21, ptr %a22, ptr %a23) + store { ptr, i64, i64 } %t19, ptr %a24 + call void @finch_str_drop(ptr %a24) + %t25 = load { ptr, i64, i64 }, ptr %a21 + store { ptr, i64, i64 } %t25, ptr %a27 + store { ptr, i64, i64 } { ptr @.str.3472, i64 14, i64 0 }, ptr %a28 + call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28) + store { ptr, i64, i64 } %t25, ptr %a29 + call void @finch_str_drop(ptr %a29) + %t30 = load { ptr, i64, i64 }, ptr %a26 + %t31 = call { ptr, i64, i64 } @finch.gen.op(ptr %t6, { ptr, i64, i64 } %t30) + store { ptr, i64, i64 } %t30, ptr %a32 + call void @finch_str_drop(ptr %a32) + %t33 = call { ptr, i64, i64 } @finch.gen.load(ptr %t5, { ptr, i64, i64 } { ptr @.str.3469, i64 3, i64 0 }, { ptr, i64, i64 } %t31) + store { ptr, i64, i64 } %t31, ptr %a34 + call void @finch_str_drop(ptr %a34) + store { ptr, i64, i64 } %t33, ptr %a35 + %t36 = load ptr, ptr %a1 + %t37 = load ptr, ptr %a1 + %t38 = load %S.ast.Type, ptr %a3 + %t39 = call { ptr, i64, i64 } @finch.gen.entryTy(ptr %t37, %S.ast.Type %t38) + store { ptr, i64, i64 } { ptr @.str.3473, i64 23, i64 0 }, ptr %a41 + store { ptr, i64, i64 } %t39, ptr %a42 + call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) + store { ptr, i64, i64 } %t39, ptr %a43 + call void @finch_str_drop(ptr %a43) + %t44 = load { ptr, i64, i64 }, ptr %a40 + store { ptr, i64, i64 } %t44, ptr %a46 + store { ptr, i64, i64 } { ptr @.str.3474, i64 6, i64 0 }, ptr %a47 + call void @finch_str_concat(ptr %a45, ptr %a46, ptr %a47) + store { ptr, i64, i64 } %t44, ptr %a48 + call void @finch_str_drop(ptr %a48) + %t49 = load { ptr, i64, i64 }, ptr %a45 + %t50 = load { ptr, i64, i64 }, ptr %a35 + store { ptr, i64, i64 } %t49, ptr %a52 store { ptr, i64, i64 } %t50, 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 = call { ptr, i64, i64 } @finch.gen.op(ptr %t30, { ptr, i64, i64 } %t55) - ret { ptr, i64, i64 } %t56 + call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) + store { ptr, i64, i64 } %t49, ptr %a54 + call void @finch_str_drop(ptr %a54) + %t55 = load { ptr, i64, i64 }, ptr %a51 + store { ptr, i64, i64 } %t55, ptr %a57 + store { ptr, i64, i64 } { ptr @.str.3475, i64 6, i64 0 }, ptr %a58 + call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) + store { ptr, i64, i64 } %t55, ptr %a59 + call void @finch_str_drop(ptr %a59) + %t60 = load { ptr, i64, i64 }, ptr %a56 + %t61 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t60, ptr %a63 + store { ptr, i64, i64 } %t61, ptr %a64 + call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) + store { ptr, i64, i64 } %t60, ptr %a65 + call void @finch_str_drop(ptr %a65) + %t66 = load { ptr, i64, i64 }, ptr %a62 + %t67 = call { ptr, i64, i64 } @finch.gen.op(ptr %t36, { ptr, i64, i64 } %t66) + store { ptr, i64, i64 } %t66, ptr %a68 + call void @finch_str_drop(ptr %a68) + call void @finch_str_drop(ptr %a35) + ret { ptr, i64, i64 } %t67 } define internal { ptr, i64, i64 } @finch.gen.entryField(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, i64 %p3) { @@ -46461,19 +54761,26 @@ entry: %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 + %a12 = alloca { ptr, i64, i64 }, align 16 %a14 = alloca { ptr, i64, i64 }, align 16 %a15 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 + %a16 = 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 %a23 = 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 %a27 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 + %a28 = 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 + %a36 = alloca { ptr, i64, i64 }, align 16 + %a37 = 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 store %S.ast.Type %p2, ptr %a3 @@ -46482,32 +54789,46 @@ 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.3331, i64 23, i64 0 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.3476, 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.3332, 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 - store { ptr, i64, i64 } %t16, 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.3333, 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 - call void @finch_str_from_int(ptr %a27, i64 %t26) - %t28 = load { ptr, i64, i64 }, ptr %a27 - store { ptr, i64, i64 } %t25, 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 - %t33 = call { ptr, i64, i64 } @finch.gen.op(ptr %t5, { ptr, i64, i64 } %t32) - ret { ptr, i64, i64 } %t33 + store { ptr, i64, i64 } %t8, ptr %a12 + call void @finch_str_drop(ptr %a12) + %t13 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t13, ptr %a15 + store { ptr, i64, i64 } { ptr @.str.3477, i64 6, i64 0 }, ptr %a16 + call void @finch_str_concat(ptr %a14, ptr %a15, ptr %a16) + store { ptr, i64, i64 } %t13, ptr %a17 + call void @finch_str_drop(ptr %a17) + %t18 = load { ptr, i64, i64 }, ptr %a14 + %t19 = load { ptr, i64, i64 }, ptr %a2 + 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) + store { ptr, i64, i64 } %t18, ptr %a23 + call void @finch_str_drop(ptr %a23) + %t24 = load { ptr, i64, i64 }, ptr %a20 + store { ptr, i64, i64 } %t24, ptr %a26 + store { ptr, i64, i64 } { ptr @.str.3478, i64 13, i64 0 }, ptr %a27 + call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) + store { ptr, i64, i64 } %t24, ptr %a28 + call void @finch_str_drop(ptr %a28) + %t29 = load { ptr, i64, i64 }, ptr %a25 + %t30 = load i64, ptr %a4 + call void @finch_str_from_int(ptr %a31, i64 %t30) + %t32 = load { ptr, i64, i64 }, ptr %a31 + store { ptr, i64, i64 } %t29, ptr %a34 + store { ptr, i64, i64 } %t32, ptr %a35 + call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) + store { ptr, i64, i64 } %t29, ptr %a36 + call void @finch_str_drop(ptr %a36) + store { ptr, i64, i64 } %t32, ptr %a37 + call void @finch_str_drop(ptr %a37) + %t38 = load { ptr, i64, i64 }, ptr %a33 + %t39 = call { ptr, i64, i64 } @finch.gen.op(ptr %t5, { ptr, i64, i64 } %t38) + store { ptr, i64, i64 } %t38, ptr %a40 + call void @finch_str_drop(ptr %a40) + ret { ptr, i64, i64 } %t39 } define internal { ptr, i64, i64 } @finch.gen.mapArgs(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3) { @@ -46520,116 +54841,151 @@ entry: %a14 = alloca { ptr, i64, i64 }, align 16 %a15 = alloca { ptr, i64, i64 }, align 16 %a19 = 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 %a23 = 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 + %a27 = 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 + %a31 = alloca { ptr, i64, i64 }, align 16 %a32 = alloca { ptr, i64, i64 }, align 16 %a33 = alloca { ptr, i64, i64 }, align 16 %a34 = alloca { ptr, i64, i64 }, align 16 + %a36 = alloca { ptr, i64, i64 }, align 16 + %a37 = alloca { ptr, i64, i64 }, align 16 + %a38 = 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 - %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 + %a46 = alloca { ptr, i64, i64 }, align 16 + %a47 = 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 + %a53 = 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 %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 + %a73 = 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 + %a79 = 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 store %S.ast.Type %p3, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.3334, i64 1, i64 0 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.3479, 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 %range5091, label %inrange5092 -range5091: - call void @finch_panic_index(ptr @.str.3335, i64 2470, i64 0, i64 %t8) + br i1 %t9, label %range5427, label %inrange5428 +range5427: + call void @finch_panic_index(ptr @.str.3480, i64 2685, i64 0, i64 %t8) unreachable -inrange5092: +inrange5428: %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.3336, i64 3, i64 0 }, ptr %a15 + store { ptr, i64, i64 } { ptr @.str.3481, 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 %then5093, label %endif5095 -then5093: - store { ptr, i64, i64 } { ptr @.str.3337, i64 1, i64 0 }, ptr %a5 - br label %endif5095 -endif5095: - %t18 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.3338, 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.3339, 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 - store { ptr, i64, i64 } %t26, 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.3340, 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 - %t37 = load %S.ast.Type, ptr %a4 - %t38 = call { ptr, i64, i64 } @finch.gen.entrySize(ptr %t36, %S.ast.Type %t37) - store { ptr, i64, i64 } %t35, 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.3341, 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 - %t48 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 1 - %t49 = load { ptr, i64, i64 }, ptr %t48 - %t50 = extractvalue { ptr, i64, i64 } %t49, 1 - %t51 = icmp uge i64 0, %t50 - br i1 %t51, label %range5096, label %inrange5097 -range5096: - call void @finch_panic_index(ptr @.str.3342, i64 2473, i64 0, i64 %t50) + br i1 %t17, label %then5429, label %endif5431 +then5429: + %t18 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.3482, i64 1, i64 0 }, ptr %a5 + store { ptr, i64, i64 } %t18, ptr %a19 + call void @finch_str_drop(ptr %a19) + br label %endif5431 +endif5431: + %t20 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } { ptr @.str.3483, i64 4, 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.3484, i64 6, i64 0 }, ptr %a27 + call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) + store { ptr, i64, i64 } %t24, ptr %a28 + call void @finch_str_drop(ptr %a28) + %t29 = load { ptr, i64, i64 }, ptr %a25 + %t30 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t29, ptr %a32 + store { ptr, i64, i64 } %t30, ptr %a33 + call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) + store { ptr, i64, i64 } %t29, ptr %a34 + call void @finch_str_drop(ptr %a34) + %t35 = load { ptr, i64, i64 }, ptr %a31 + store { ptr, i64, i64 } %t35, ptr %a37 + store { ptr, i64, i64 } { ptr @.str.3485, i64 6, i64 0 }, ptr %a38 + call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) + store { ptr, i64, i64 } %t35, ptr %a39 + call void @finch_str_drop(ptr %a39) + %t40 = load { ptr, i64, i64 }, ptr %a36 + %t41 = load ptr, ptr %a1 + %t42 = load %S.ast.Type, ptr %a4 + %t43 = call { ptr, i64, i64 } @finch.gen.entrySize(ptr %t41, %S.ast.Type %t42) + store { ptr, i64, i64 } %t40, ptr %a45 + store { ptr, i64, i64 } %t43, ptr %a46 + call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46) + store { ptr, i64, i64 } %t40, ptr %a47 + call void @finch_str_drop(ptr %a47) + store { ptr, i64, i64 } %t43, ptr %a48 + call void @finch_str_drop(ptr %a48) + %t49 = load { ptr, i64, i64 }, ptr %a44 + store { ptr, i64, i64 } %t49, ptr %a51 + store { ptr, i64, i64 } { ptr @.str.3486, i64 6, i64 0 }, ptr %a52 + call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) + store { ptr, i64, i64 } %t49, ptr %a53 + call void @finch_str_drop(ptr %a53) + %t54 = load { ptr, i64, i64 }, ptr %a50 + %t55 = load ptr, ptr %a1 + %t56 = getelementptr inbounds %S.ast.Type, ptr %a4, 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 %range5432, label %inrange5433 +range5432: + call void @finch_panic_index(ptr @.str.3487, i64 2688, i64 0, i64 %t58) unreachable -inrange5097: - %t52 = extractvalue { ptr, i64, i64 } %t49, 0 - %t53 = getelementptr inbounds %S.ast.Type, ptr %t52, i64 0 - %t54 = load %S.ast.Type, ptr %t53 - %t55 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t47, %S.ast.Type %t54) - store { ptr, i64, i64 } %t46, 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.3343, 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 +inrange5433: + %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.gen.sizeOf(ptr %t55, %S.ast.Type %t62) + store { ptr, i64, i64 } %t54, ptr %a65 store { ptr, i64, i64 } %t63, 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 - ret { ptr, i64, i64 } %t68 + call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) + store { ptr, i64, i64 } %t54, ptr %a67 + call void @finch_str_drop(ptr %a67) + store { ptr, i64, i64 } %t63, ptr %a68 + call void @finch_str_drop(ptr %a68) + %t69 = load { ptr, i64, i64 }, ptr %a64 + store { ptr, i64, i64 } %t69, ptr %a71 + store { ptr, i64, i64 } { ptr @.str.3488, i64 6, i64 0 }, ptr %a72 + call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) + store { ptr, i64, i64 } %t69, ptr %a73 + call void @finch_str_drop(ptr %a73) + %t74 = load { ptr, i64, i64 }, ptr %a70 + %t75 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } %t74, ptr %a77 + store { ptr, i64, i64 } %t75, ptr %a78 + call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78) + store { ptr, i64, i64 } %t74, ptr %a79 + call void @finch_str_drop(ptr %a79) + %t80 = load { ptr, i64, i64 }, ptr %a76 + call void @finch_str_drop(ptr %a5) + ret { ptr, i64, i64 } %t80 } define internal { ptr, i64, i64 } @finch.gen.mapFind(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3) { @@ -46641,9 +54997,12 @@ entry: %a11 = 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 + %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 + %a19 = alloca { ptr, i64, i64 }, align 16 + %a22 = 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 @@ -46654,16 +55013,22 @@ 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.3344, i64 25, i64 0 }, ptr %a12 + store { ptr, i64, i64 } { ptr @.str.3489, 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.3345, 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) - ret { ptr, i64, i64 } %t19 + store { ptr, i64, i64 } %t10, ptr %a14 + call void @finch_str_drop(ptr %a14) + %t15 = load { ptr, i64, i64 }, ptr %a11 + store { ptr, i64, i64 } %t15, ptr %a17 + store { ptr, i64, i64 } { ptr @.str.3490, i64 1, i64 0 }, ptr %a18 + call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) + store { ptr, i64, i64 } %t15, ptr %a19 + call void @finch_str_drop(ptr %a19) + %t20 = load { ptr, i64, i64 }, ptr %a16 + %t21 = call { ptr, i64, i64 } @finch.gen.op(ptr %t5, { ptr, i64, i64 } %t20) + store { ptr, i64, i64 } %t20, ptr %a22 + call void @finch_str_drop(ptr %a22) + ret { ptr, i64, i64 } %t21 } define internal { ptr, i64, i64 } @finch.gen.defaultVal(ptr %p0, %S.ast.Type %p1, %S.ast.Node %p2) { @@ -46677,29 +55042,30 @@ entry: %a15 = alloca { ptr, i64, i64 }, align 16 %a28 = alloca { ptr, i64, i64 }, align 16 %a29 = alloca { ptr, i64, i64 }, align 16 + %a31 = alloca %S.gen.Val, align 16 store ptr %p0, ptr %a1 store %S.ast.Type %p1, ptr %a2 store %S.ast.Node %p2, ptr %a3 %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.3346, i64 6, i64 0 }, ptr %a7 + store { ptr, i64, i64 } { ptr @.str.3491, 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.from5098 -logic.from5098: - br i1 %t9, label %logic.rhs5099, label %logic.end5100 -logic.rhs5099: + br label %logic.from5434 +logic.from5434: + br i1 %t9, label %logic.rhs5435, label %logic.end5436 +logic.rhs5435: %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.rend5101 -logic.rend5101: - br label %logic.end5100 -logic.end5100: - %t13 = phi i1 [ false, %logic.from5098 ], [ %t12, %logic.rend5101 ] - br i1 %t13, label %then5102, label %endif5104 -then5102: + br label %logic.rend5437 +logic.rend5437: + br label %logic.end5436 +logic.end5436: + %t13 = phi i1 [ false, %logic.from5434 ], [ %t12, %logic.rend5437 ] + br i1 %t13, label %then5438, label %endif5440 +then5438: store { ptr, i64, i64 } zeroinitializer, ptr %a14 store { ptr, i64, i64 } zeroinitializer, ptr %a15 %t16 = load ptr, ptr %a1 @@ -46717,11 +55083,15 @@ then5102: store { ptr, i64, i64 } %t27, ptr %a28 call void @finch_str_copy(ptr %a29, ptr %a28) %t30 = load { ptr, i64, i64 }, ptr %a29 + store %S.gen.Val %t26, ptr %a31 + call void @finch.drop.S_gen_Val(ptr %a31) + call void @finch.drop.arr_str(ptr %a15) + call void @finch.drop.arr_S_ast_Node(ptr %a14) ret { ptr, i64, i64 } %t30 -endif5104: - %t31 = load %S.ast.Type, ptr %a2 - %t32 = call { ptr, i64, i64 } @finch.gen.zeroOf(%S.ast.Type %t31) - ret { ptr, i64, i64 } %t32 +endif5440: + %t32 = load %S.ast.Type, ptr %a2 + %t33 = call { ptr, i64, i64 } @finch.gen.zeroOf(%S.ast.Type %t32) + ret { ptr, i64, i64 } %t33 } define internal { ptr, i64, i64 } @finch.gen.mapSlot(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, %S.gen.Val %p3, i1 %p4, %S.ast.Node %p5) { @@ -46737,29 +55107,41 @@ entry: %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 + %a25 = alloca { ptr, i64, i64 }, align 16 %a27 = alloca { ptr, i64, i64 }, align 16 %a28 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 + %a29 = alloca { ptr, i64, i64 }, align 16 + %a30 = 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 %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 + %a38 = alloca { ptr, i64, i64 }, align 16 + %a39 = alloca { ptr, i64, i64 }, align 16 %a40 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a62 = 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 + %a51 = alloca { ptr, i64, i64 }, align 16 + %a54 = alloca { ptr, i64, i64 }, align 16 + %a57 = alloca { ptr, i64, i64 }, align 16 %a63 = alloca { ptr, i64, i64 }, align 16 %a64 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca %S.ast.Type, align 16 - %a115 = alloca %S.ast.Type, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = 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 + %a71 = alloca { ptr, i64, i64 }, align 16 + %a74 = alloca { ptr, i64, i64 }, align 16 + %a77 = alloca { ptr, i64, i64 }, align 16 + %a93 = alloca { ptr, i64, i64 }, align 16 + %a124 = alloca %S.ast.Type, align 16 + %a125 = alloca %S.ast.Type, align 16 + %a130 = alloca %S.gen.Val, align 16 + %a135 = alloca { ptr, i64, i64 }, align 16 + %a136 = alloca { ptr, i64, i64 }, align 16 + %a137 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store { ptr, i64, i64 } %p1, ptr %a2 store %S.ast.Type %p2, ptr %a3 @@ -46771,158 +55153,188 @@ 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.3347, i64 3, i64 0 }) + %t12 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t11, { ptr, i64, i64 } { ptr @.str.3492, 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.3348, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.3349, i64 1, i64 0 }, { ptr, i64, i64 } %t15) + call void @finch.gen.store(ptr %t14, { ptr, i64, i64 } { ptr @.str.3493, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.3494, 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.3350, i64 25, i64 0 }, ptr %a23 + store { ptr, i64, i64 } { ptr @.str.3495, 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.3351, 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 - store { ptr, i64, i64 } %t29, 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.3352, 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) - store { ptr, i64, i64 } %t39, ptr %a40 - %t41 = load ptr, ptr %a1 - %t42 = load { ptr, i64, i64 }, ptr %a2 - %t43 = load %S.ast.Type, ptr %a3 - %t44 = load { ptr, i64, i64 }, ptr %a40 - %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.3353, 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.3354, i64 8, i64 0 }) - store { ptr, i64, i64 } %t51, ptr %a52 - %t53 = load ptr, ptr %a1 - %t54 = load ptr, ptr %a1 + store { ptr, i64, i64 } %t21, ptr %a25 + call void @finch_str_drop(ptr %a25) + %t26 = load { ptr, i64, i64 }, ptr %a22 + store { ptr, i64, i64 } %t26, ptr %a28 + store { ptr, i64, i64 } { ptr @.str.3496, i64 6, i64 0 }, ptr %a29 + call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) + store { ptr, i64, i64 } %t26, ptr %a30 + call void @finch_str_drop(ptr %a30) + %t31 = load { ptr, i64, i64 }, ptr %a27 + %t32 = load { ptr, i64, i64 }, ptr %a13 + store { ptr, i64, i64 } %t31, ptr %a34 + store { ptr, i64, i64 } %t32, ptr %a35 + call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) + store { ptr, i64, i64 } %t31, ptr %a36 + call void @finch_str_drop(ptr %a36) + %t37 = load { ptr, i64, i64 }, ptr %a33 + store { ptr, i64, i64 } %t37, ptr %a39 + store { ptr, i64, i64 } { ptr @.str.3497, i64 1, i64 0 }, ptr %a40 + call void @finch_str_concat(ptr %a38, ptr %a39, ptr %a40) + store { ptr, i64, i64 } %t37, ptr %a41 + call void @finch_str_drop(ptr %a41) + %t42 = load { ptr, i64, i64 }, ptr %a38 + %t43 = call { ptr, i64, i64 } @finch.gen.op(ptr %t16, { ptr, i64, i64 } %t42) + store { ptr, i64, i64 } %t42, ptr %a44 + call void @finch_str_drop(ptr %a44) + store { ptr, i64, i64 } %t43, ptr %a45 + %t46 = load ptr, ptr %a1 + %t47 = load { ptr, i64, i64 }, ptr %a2 + %t48 = load %S.ast.Type, ptr %a3 + %t49 = load { ptr, i64, i64 }, ptr %a45 + %t50 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t46, { ptr, i64, i64 } %t47, %S.ast.Type %t48, { ptr, i64, i64 } %t49) + store { ptr, i64, i64 } %t50, ptr %a51 + %t52 = load ptr, ptr %a1 + %t53 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t52, { ptr, i64, i64 } { ptr @.str.3498, i64 7, i64 0 }) + store { ptr, i64, i64 } %t53, ptr %a54 %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.3356, i64 3, i64 0 }, { ptr, i64, i64 } %t56) - store { ptr, i64, i64 } { ptr @.str.3355, 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.3357, 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) - %t67 = load { ptr, i64, i64 }, ptr %a49 - %t68 = load { ptr, i64, i64 }, ptr %a52 - call void @finch.gen.condBr(ptr %t53, { ptr, i64, i64 } %t66, { ptr, i64, i64 } %t67, { ptr, i64, i64 } %t68) - %t69 = load ptr, ptr %a1 - %t70 = load { ptr, i64, i64 }, ptr %a49 - call void @finch.gen.label(ptr %t69, { ptr, i64, i64 } %t70) - %t71 = load ptr, ptr %a1 - %t72 = load ptr, ptr %a1 - %t73 = load { ptr, i64, i64 }, ptr %a46 - %t74 = load %S.ast.Type, ptr %a3 - %t75 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t72, { ptr, i64, i64 } %t73, %S.ast.Type %t74, i64 1) - %t76 = load { ptr, i64, i64 }, ptr %a10 - %t77 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t78 = load { ptr, i64, i64 }, ptr %t77 - %t79 = extractvalue { ptr, i64, i64 } %t78, 1 - %t80 = icmp uge i64 0, %t79 - br i1 %t80, label %range5105, label %inrange5106 -range5105: - call void @finch_panic_index(ptr @.str.3358, i64 2501, i64 0, i64 %t79) + %t56 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t55, { ptr, i64, i64 } { ptr @.str.3499, i64 8, i64 0 }) + store { ptr, i64, i64 } %t56, ptr %a57 + %t58 = load ptr, ptr %a1 + %t59 = load ptr, ptr %a1 + %t60 = load ptr, ptr %a1 + %t61 = load { ptr, i64, i64 }, ptr %a13 + %t62 = call { ptr, i64, i64 } @finch.gen.load(ptr %t60, { ptr, i64, i64 } { ptr @.str.3501, i64 3, i64 0 }, { ptr, i64, i64 } %t61) + store { ptr, i64, i64 } { ptr @.str.3500, i64 12, i64 0 }, ptr %a64 + store { ptr, i64, i64 } %t62, ptr %a65 + call void @finch_str_concat(ptr %a63, ptr %a64, ptr %a65) + store { ptr, i64, i64 } %t62, ptr %a66 + call void @finch_str_drop(ptr %a66) + %t67 = load { ptr, i64, i64 }, ptr %a63 + store { ptr, i64, i64 } %t67, ptr %a69 + store { ptr, i64, i64 } { ptr @.str.3502, i64 3, i64 0 }, ptr %a70 + call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70) + store { ptr, i64, i64 } %t67, ptr %a71 + call void @finch_str_drop(ptr %a71) + %t72 = load { ptr, i64, i64 }, ptr %a68 + %t73 = call { ptr, i64, i64 } @finch.gen.op(ptr %t59, { ptr, i64, i64 } %t72) + store { ptr, i64, i64 } %t72, ptr %a74 + call void @finch_str_drop(ptr %a74) + %t75 = load { ptr, i64, i64 }, ptr %a54 + %t76 = load { ptr, i64, i64 }, ptr %a57 + call void @finch.gen.condBr(ptr %t58, { ptr, i64, i64 } %t73, { ptr, i64, i64 } %t75, { ptr, i64, i64 } %t76) + store { ptr, i64, i64 } %t73, ptr %a77 + call void @finch_str_drop(ptr %a77) + %t78 = load ptr, ptr %a1 + %t79 = load { ptr, i64, i64 }, ptr %a54 + call void @finch.gen.label(ptr %t78, { ptr, i64, i64 } %t79) + %t80 = load ptr, ptr %a1 + %t81 = load ptr, ptr %a1 + %t82 = load { ptr, i64, i64 }, ptr %a51 + %t83 = load %S.ast.Type, ptr %a3 + %t84 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t81, { ptr, i64, i64 } %t82, %S.ast.Type %t83, i64 1) + %t85 = load { ptr, i64, i64 }, ptr %a10 + %t86 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 + %t87 = load { ptr, i64, i64 }, ptr %t86 + %t88 = extractvalue { ptr, i64, i64 } %t87, 1 + %t89 = icmp uge i64 0, %t88 + br i1 %t89, label %range5441, label %inrange5442 +range5441: + call void @finch_panic_index(ptr @.str.3503, i64 2716, i64 0, i64 %t88) unreachable -inrange5106: - %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 %then5107, label %endif5109 -then5107: - %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 %range5110, label %inrange5111 -range5110: - call void @finch_panic_index(ptr @.str.3359, i64 2503, i64 1, i64 %t89) - unreachable -inrange5111: - %t91 = extractvalue { ptr, i64, i64 } %t88, 0 - %t92 = getelementptr inbounds %S.ast.Type, ptr %t91, i64 1 - %t93 = load %S.ast.Type, ptr %t92 - %t94 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t86, %S.ast.Type %t93) +inrange5442: + %t90 = extractvalue { ptr, i64, i64 } %t87, 0 + %t91 = getelementptr inbounds %S.ast.Type, ptr %t90, i64 0 + %t92 = load %S.ast.Type, ptr %t91 + call void @finch.gen.copyAt(ptr %t80, { ptr, i64, i64 } %t84, { ptr, i64, i64 } %t85, %S.ast.Type %t92) + store { ptr, i64, i64 } %t84, ptr %a93 + call void @finch_str_drop(ptr %a93) + %t94 = load i1, ptr %a5 + br i1 %t94, label %then5443, label %endif5445 +then5443: %t95 = load ptr, ptr %a1 %t96 = load ptr, ptr %a1 %t97 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 %t98 = load { ptr, i64, i64 }, ptr %t97 %t99 = extractvalue { ptr, i64, i64 } %t98, 1 %t100 = icmp uge i64 1, %t99 - br i1 %t100, label %range5112, label %inrange5113 -range5112: - call void @finch_panic_index(ptr @.str.3360, i64 2503, i64 1, i64 %t99) + br i1 %t100, label %range5446, label %inrange5447 +range5446: + call void @finch_panic_index(ptr @.str.3504, i64 2718, i64 1, i64 %t99) unreachable -inrange5113: +inrange5447: %t101 = extractvalue { ptr, i64, i64 } %t98, 0 %t102 = getelementptr inbounds %S.ast.Type, ptr %t101, i64 1 %t103 = load %S.ast.Type, ptr %t102 - %t104 = load %S.ast.Node, ptr %a6 - %t105 = call { ptr, i64, i64 } @finch.gen.defaultVal(ptr %t96, %S.ast.Type %t103, %S.ast.Node %t104) - %t106 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t105, 0 + %t104 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t96, %S.ast.Type %t103) + %t105 = load ptr, ptr %a1 + %t106 = load ptr, ptr %a1 %t107 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 %t108 = load { ptr, i64, i64 }, ptr %t107 %t109 = extractvalue { ptr, i64, i64 } %t108, 1 %t110 = icmp uge i64 1, %t109 - br i1 %t110, label %range5114, label %inrange5115 -range5114: - call void @finch_panic_index(ptr @.str.3361, i64 2503, i64 1, i64 %t109) + br i1 %t110, label %range5448, label %inrange5449 +range5448: + call void @finch_panic_index(ptr @.str.3505, i64 2718, i64 1, i64 %t109) unreachable -inrange5115: +inrange5449: %t111 = extractvalue { ptr, i64, i64 } %t108, 0 %t112 = getelementptr inbounds %S.ast.Type, ptr %t111, i64 1 %t113 = load %S.ast.Type, ptr %t112 - store %S.ast.Type %t113, ptr %a114 - call void @finch.copy.S_ast_Type(ptr %a115, ptr %a114) - %t116 = load %S.ast.Type, ptr %a115 - %t117 = insertvalue %S.gen.Val %t106, %S.ast.Type %t116, 1 - %t118 = insertvalue %S.gen.Val %t117, i1 true, 2 - %t119 = call { ptr, i64, i64 } @finch.gen.own(ptr %t95, %S.gen.Val %t118) - %t120 = load ptr, ptr %a1 - %t121 = load { ptr, i64, i64 }, ptr %a46 - %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 %endif5109 -endif5109: - %t124 = load ptr, ptr %a1 - %t125 = load { ptr, i64, i64 }, ptr %a52 - call void @finch.gen.br(ptr %t124, { ptr, i64, i64 } %t125) - %t126 = load ptr, ptr %a1 - %t127 = load { ptr, i64, i64 }, ptr %a52 - call void @finch.gen.label(ptr %t126, { ptr, i64, i64 } %t127) - %t128 = load { ptr, i64, i64 }, ptr %a46 - store { ptr, i64, i64 } %t128, ptr %a129 - call void @finch_str_copy(ptr %a130, ptr %a129) - %t131 = load { ptr, i64, i64 }, ptr %a130 - ret { ptr, i64, i64 } %t131 + %t114 = load %S.ast.Node, ptr %a6 + %t115 = call { ptr, i64, i64 } @finch.gen.defaultVal(ptr %t106, %S.ast.Type %t113, %S.ast.Node %t114) + %t116 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t115, 0 + %t117 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 + %t118 = load { ptr, i64, i64 }, ptr %t117 + %t119 = extractvalue { ptr, i64, i64 } %t118, 1 + %t120 = icmp uge i64 1, %t119 + br i1 %t120, label %range5450, label %inrange5451 +range5450: + call void @finch_panic_index(ptr @.str.3506, i64 2718, i64 1, i64 %t119) + unreachable +inrange5451: + %t121 = extractvalue { ptr, i64, i64 } %t118, 0 + %t122 = getelementptr inbounds %S.ast.Type, ptr %t121, i64 1 + %t123 = load %S.ast.Type, ptr %t122 + store %S.ast.Type %t123, ptr %a124 + call void @finch.copy.S_ast_Type(ptr %a125, ptr %a124) + %t126 = load %S.ast.Type, ptr %a125 + %t127 = insertvalue %S.gen.Val %t116, %S.ast.Type %t126, 1 + %t128 = insertvalue %S.gen.Val %t127, i1 true, 2 + %t129 = call { ptr, i64, i64 } @finch.gen.own(ptr %t105, %S.gen.Val %t128) + store %S.gen.Val %t128, ptr %a130 + call void @finch.drop.S_gen_Val(ptr %a130) + %t131 = load ptr, ptr %a1 + %t132 = load { ptr, i64, i64 }, ptr %a51 + %t133 = load %S.ast.Type, ptr %a3 + %t134 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t131, { ptr, i64, i64 } %t132, %S.ast.Type %t133, i64 2) + call void @finch.gen.store(ptr %t95, { ptr, i64, i64 } %t104, { ptr, i64, i64 } %t129, { ptr, i64, i64 } %t134) + store { ptr, i64, i64 } %t104, ptr %a135 + call void @finch_str_drop(ptr %a135) + store { ptr, i64, i64 } %t129, ptr %a136 + call void @finch_str_drop(ptr %a136) + store { ptr, i64, i64 } %t134, ptr %a137 + call void @finch_str_drop(ptr %a137) + br label %endif5445 +endif5445: + %t138 = load ptr, ptr %a1 + %t139 = load { ptr, i64, i64 }, ptr %a57 + call void @finch.gen.br(ptr %t138, { ptr, i64, i64 } %t139) + %t140 = load ptr, ptr %a1 + %t141 = load { ptr, i64, i64 }, ptr %a57 + call void @finch.gen.label(ptr %t140, { ptr, i64, i64 } %t141) + %t142 = load { ptr, i64, i64 }, ptr %a51 + call void @finch_str_drop(ptr %a57) + call void @finch_str_drop(ptr %a54) + call void @finch_str_drop(ptr %a45) + call void @finch_str_drop(ptr %a13) + call void @finch_str_drop(ptr %a10) + ret { ptr, i64, i64 } %t142 } define internal %S.gen.Ref @finch.gen.mapIndex(ptr %p0, %S.ast.Node %p1, %S.gen.Ref %p2, %S.ast.Type %p3, i1 %p4) { @@ -46939,57 +55351,74 @@ entry: %a25 = alloca %S.ast.Type, align 16 %a27 = alloca %S.ast.Type, align 16 %a48 = alloca %S.gen.Val, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca %S.ast.Type, align 16 - %a72 = alloca %S.ast.Type, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 + %a49 = alloca %S.gen.Val, align 16 + %a64 = alloca { ptr, i64, i64 }, align 16 + %a74 = alloca %S.ast.Type, align 16 + %a75 = alloca %S.ast.Type, align 16 + %a79 = alloca { ptr, i64, i64 }, align 16 + %a85 = alloca { ptr, i64, i64 }, align 16 + %a86 = alloca { ptr, i64, i64 }, align 16 + %a89 = alloca { ptr, i64, i64 }, align 16 + %a95 = alloca { ptr, i64, i64 }, align 16 + %a99 = alloca { ptr, i64, i64 }, align 16 + %a105 = 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 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a145 = 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 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 + %a111 = 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 + %a120 = alloca { ptr, i64, i64 }, align 16 + %a121 = alloca { ptr, i64, i64 }, align 16 + %a122 = alloca { ptr, i64, i64 }, align 16 + %a125 = alloca { ptr, i64, i64 }, align 16 + %a128 = alloca { ptr, i64, i64 }, align 16 + %a133 = alloca { ptr, i64, i64 }, align 16 %a155 = 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 - %a159 = 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 %a163 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = 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 %a172 = alloca { ptr, i64, i64 }, align 16 + %a173 = alloca { ptr, i64, i64 }, align 16 + %a175 = 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 + %a182 = alloca { ptr, i64, i64 }, align 16 + %a183 = alloca { ptr, i64, i64 }, align 16 + %a184 = alloca { ptr, i64, i64 }, align 16 + %a186 = alloca { ptr, i64, i64 }, align 16 + %a187 = alloca { ptr, i64, i64 }, align 16 %a188 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca %S.ast.Type, align 16 - %a199 = alloca %S.ast.Type, align 16 + %a189 = alloca { ptr, i64, i64 }, align 16 + %a191 = 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 - %a216 = alloca %S.ast.Type, align 16 - %a217 = alloca %S.ast.Type, align 16 - %a220 = alloca %S.gen.Val, align 16 - %a234 = alloca %S.ast.Type, align 16 - %a235 = alloca %S.ast.Type, align 16 - %a241 = alloca %S.gen.Val, align 16 + %a214 = alloca { ptr, i64, i64 }, align 16 + %a215 = alloca { ptr, i64, i64 }, align 16 + %a219 = alloca %S.ast.Type, align 16 + %a220 = alloca %S.ast.Type, align 16 + %a230 = alloca { ptr, i64, i64 }, align 16 + %a231 = alloca { ptr, i64, i64 }, align 16 + %a233 = alloca { ptr, i64, i64 }, align 16 + %a234 = alloca { ptr, i64, i64 }, align 16 + %a238 = alloca %S.ast.Type, align 16 + %a239 = alloca %S.ast.Type, align 16 %a242 = alloca %S.gen.Val, align 16 + %a256 = alloca %S.ast.Type, align 16 + %a257 = alloca %S.ast.Type, align 16 + %a262 = alloca %S.gen.Val, align 16 + %a268 = alloca %S.gen.Val, align 16 + %a269 = alloca %S.gen.Val, align 16 store ptr %p0, ptr %a1 store %S.ast.Node %p1, ptr %a2 store %S.gen.Ref %p2, ptr %a3 @@ -46999,11 +55428,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 %range5116, label %inrange5117 -range5116: - call void @finch_panic_index(ptr @.str.3362, i64 2512, i64 0, i64 %t8) + br i1 %t9, label %range5452, label %inrange5453 +range5452: + call void @finch_panic_index(ptr @.str.3507, i64 2727, i64 0, i64 %t8) unreachable -inrange5117: +inrange5453: %t10 = extractvalue { ptr, i64, i64 } %t7, 0 %t11 = getelementptr inbounds %S.ast.Type, ptr %t10, i64 0 %t12 = load %S.ast.Type, ptr %t11 @@ -47015,11 +55444,11 @@ inrange5117: %t18 = load { ptr, i64, i64 }, ptr %t17 %t19 = extractvalue { ptr, i64, i64 } %t18, 1 %t20 = icmp uge i64 1, %t19 - br i1 %t20, label %range5118, label %inrange5119 -range5118: - call void @finch_panic_index(ptr @.str.3363, i64 2513, i64 1, i64 %t19) + br i1 %t20, label %range5454, label %inrange5455 +range5454: + call void @finch_panic_index(ptr @.str.3508, i64 2728, i64 1, i64 %t19) unreachable -inrange5119: +inrange5455: %t21 = extractvalue { ptr, i64, i64 } %t18, 0 %t22 = getelementptr inbounds %S.ast.Type, ptr %t21, i64 1 %t23 = load %S.ast.Type, ptr %t22 @@ -47033,11 +55462,11 @@ inrange5119: %t31 = load { ptr, i64, i64 }, ptr %t30 %t32 = extractvalue { ptr, i64, i64 } %t31, 1 %t33 = icmp uge i64 1, %t32 - br i1 %t33, label %range5120, label %inrange5121 -range5120: - call void @finch_panic_index(ptr @.str.3364, i64 2514, i64 1, i64 %t32) + br i1 %t33, label %range5456, label %inrange5457 +range5456: + call void @finch_panic_index(ptr @.str.3509, i64 2729, i64 1, i64 %t32) unreachable -inrange5121: +inrange5457: %t34 = extractvalue { ptr, i64, i64 } %t31, 0 %t35 = getelementptr inbounds %S.ast.Node, ptr %t34, i64 1 %t36 = load %S.ast.Node, ptr %t35 @@ -47048,270 +55477,343 @@ inrange5121: %t41 = load { ptr, i64, i64 }, ptr %t40 %t42 = extractvalue { ptr, i64, i64 } %t41, 1 %t43 = icmp uge i64 1, %t42 - br i1 %t43, label %range5122, label %inrange5123 -range5122: - call void @finch_panic_index(ptr @.str.3365, i64 2514, i64 1, i64 %t42) + br i1 %t43, label %range5458, label %inrange5459 +range5458: + call void @finch_panic_index(ptr @.str.3510, i64 2729, i64 1, i64 %t42) unreachable -inrange5123: +inrange5459: %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.3366, i64 7, i64 0 }) - store %S.gen.Val %t47, ptr %a48 - %t49 = load i1, ptr %a5 - br i1 %t49, label %then5124, label %endif5126 -then5124: - %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 %then5127, label %endif5129 -then5127: - %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.3367, i64 44, i64 0 }) - br label %endif5129 -endif5129: - %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 - %t58 = load { ptr, i64, i64 }, ptr %t57 - %t59 = load %S.ast.Type, ptr %a4 - %t60 = load %S.gen.Val, ptr %a48 - %t61 = load %S.ast.Node, ptr %a2 - %t62 = call { ptr, i64, i64 } @finch.gen.mapSlot(ptr %t55, { ptr, i64, i64 } %t58, %S.ast.Type %t59, %S.gen.Val %t60, i1 true, %S.ast.Node %t61) - store { ptr, i64, i64 } %t62, ptr %a63 - %t64 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 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.3511, i64 7, i64 0 }) + store %S.gen.Val %t38, ptr %a48 + call void @finch.drop.S_gen_Val(ptr %a48) + store %S.gen.Val %t47, ptr %a49 + %t50 = load i1, ptr %a5 + br i1 %t50, label %then5460, label %endif5462 +then5460: + %t51 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 + %t52 = load i1, ptr %t51 + %t53 = xor i1 %t52, true + br i1 %t53, label %then5463, label %endif5465 +then5463: + %t54 = load ptr, ptr %a1 + %t55 = load %S.ast.Node, ptr %a2 + call void @finch.gen.fail(ptr %t54, %S.ast.Node %t55, { ptr, i64, i64 } { ptr @.str.3512, i64 44, i64 0 }) + br label %endif5465 +endif5465: + %t56 = load ptr, ptr %a1 + %t57 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 1 + %t58 = getelementptr inbounds %S.gen.Place, ptr %t57, i32 0, i32 0 + %t59 = load { ptr, i64, i64 }, ptr %t58 + %t60 = load %S.ast.Type, ptr %a4 + %t61 = load %S.gen.Val, ptr %a49 + %t62 = load %S.ast.Node, ptr %a2 + %t63 = call { ptr, i64, i64 } @finch.gen.mapSlot(ptr %t56, { ptr, i64, i64 } %t59, %S.ast.Type %t60, %S.gen.Val %t61, i1 true, %S.ast.Node %t62) + store { ptr, i64, i64 } %t63, ptr %a64 %t65 = load ptr, ptr %a1 - %t66 = load { ptr, i64, i64 }, ptr %a63 - %t67 = load %S.ast.Type, ptr %a4 - %t68 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t65, { ptr, i64, i64 } %t66, %S.ast.Type %t67, i64 2) - %t69 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t68, 0 - %t70 = load %S.ast.Type, ptr %a27 - store %S.ast.Type %t70, ptr %a71 - call void @finch.copy.S_ast_Type(ptr %a72, ptr %a71) - %t73 = load %S.ast.Type, ptr %a72 - %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 -endif5126: - store { ptr, i64, i64 } { ptr @.str.3368, 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 %then5130, label %else5131 -then5130: - %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 - store { ptr, i64, i64 } %t81, ptr %a82 - 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 %endif5132 -else5131: - %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 %endif5132 -endif5132: - %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) - store { ptr, i64, i64 } %t91, ptr %a92 - %t93 = load ptr, ptr %a1 - %t94 = load { ptr, i64, i64 }, ptr %a76 - %t95 = load { ptr, i64, i64 }, ptr %a92 - %t96 = load %S.ast.Type, ptr %a4 - %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.3369, 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.3370, i64 9, i64 0 }) - store { ptr, i64, i64 } %t103, ptr %a104 - %t105 = load ptr, ptr %a1 + %t66 = load %S.gen.Val, ptr %a49 + call void @finch.gen.release(ptr %t65, %S.gen.Val %t66) + %t67 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 + %t68 = load ptr, ptr %a1 + %t69 = load { ptr, i64, i64 }, ptr %a64 + %t70 = load %S.ast.Type, ptr %a4 + %t71 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t68, { ptr, i64, i64 } %t69, %S.ast.Type %t70, i64 2) + %t72 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t71, 0 + %t73 = load %S.ast.Type, ptr %a27 + store %S.ast.Type %t73, ptr %a74 + call void @finch.copy.S_ast_Type(ptr %a75, ptr %a74) + %t76 = load %S.ast.Type, ptr %a75 + %t77 = insertvalue %S.gen.Place %t72, %S.ast.Type %t76, 1 + %t78 = insertvalue %S.gen.Ref %t67, %S.gen.Place %t77, 1 + call void @finch_str_drop(ptr %a64) + call void @finch.drop.S_gen_Val(ptr %a49) + call void @finch.drop.S_ast_Type(ptr %a27) + call void @finch.drop.S_ast_Type(ptr %a16) + ret %S.gen.Ref %t78 +endif5462: + store { ptr, i64, i64 } { ptr @.str.3513, i64 0, i64 0 }, ptr %a79 + %t80 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 + %t81 = load i1, ptr %t80 + br i1 %t81, label %then5466, label %else5467 +then5466: + %t82 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 1 + %t83 = getelementptr inbounds %S.gen.Place, ptr %t82, i32 0, i32 0 + %t84 = load { ptr, i64, i64 }, ptr %t83 + store { ptr, i64, i64 } %t84, ptr %a85 + call void @finch_str_copy(ptr %a86, ptr %a85) + %t87 = load { ptr, i64, i64 }, ptr %a86 + %t88 = load { ptr, i64, i64 }, ptr %a79 + store { ptr, i64, i64 } %t87, ptr %a79 + store { ptr, i64, i64 } %t88, ptr %a89 + call void @finch_str_drop(ptr %a89) + br label %endif5468 +else5467: + %t90 = load ptr, ptr %a1 + %t91 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 + %t92 = load %S.gen.Val, ptr %t91 + %t93 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t90, %S.gen.Val %t92) + %t94 = load { ptr, i64, i64 }, ptr %a79 + store { ptr, i64, i64 } %t93, ptr %a79 + store { ptr, i64, i64 } %t94, ptr %a95 + call void @finch_str_drop(ptr %a95) + br label %endif5468 +endif5468: + %t96 = load ptr, ptr %a1 + %t97 = load %S.gen.Val, ptr %a49 + %t98 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t96, %S.gen.Val %t97) + store { ptr, i64, i64 } %t98, ptr %a99 + %t100 = load ptr, ptr %a1 + %t101 = load { ptr, i64, i64 }, ptr %a79 + %t102 = load { ptr, i64, i64 }, ptr %a99 + %t103 = load %S.ast.Type, ptr %a4 + %t104 = call { ptr, i64, i64 } @finch.gen.mapFind(ptr %t100, { ptr, i64, i64 } %t101, { ptr, i64, i64 } %t102, %S.ast.Type %t103) + store { ptr, i64, i64 } %t104, ptr %a105 %t106 = load ptr, ptr %a1 - %t107 = load { ptr, i64, i64 }, ptr %a98 - store { ptr, i64, i64 } { ptr @.str.3371, 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.3372, 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) - %t117 = load { ptr, i64, i64 }, ptr %a101 - %t118 = load { ptr, i64, i64 }, ptr %a104 - call void @finch.gen.condBr(ptr %t105, { ptr, i64, i64 } %t116, { ptr, i64, i64 } %t117, { ptr, i64, i64 } %t118) - %t119 = load ptr, ptr %a1 - %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.3373, 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.3374, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.3375, 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 - %t129 = load { ptr, i64, i64 }, ptr %t128 - %t130 = load %S.ast.Type, ptr %a16 - call void @finch.gen.emitFormat(ptr %t126, { ptr, i64, i64 } %t127, { ptr, i64, i64 } %t129, %S.ast.Type %t130, i1 true) + %t107 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t106, { ptr, i64, i64 } { ptr @.str.3514, i64 11, i64 0 }) + store { ptr, i64, i64 } %t107, ptr %a108 + %t109 = load ptr, ptr %a1 + %t110 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t109, { ptr, i64, i64 } { ptr @.str.3515, i64 9, i64 0 }) + store { ptr, i64, i64 } %t110, ptr %a111 + %t112 = load ptr, ptr %a1 + %t113 = load ptr, ptr %a1 + %t114 = load { ptr, i64, i64 }, ptr %a105 + store { ptr, i64, i64 } { ptr @.str.3516, i64 13, i64 0 }, ptr %a116 + store { ptr, i64, i64 } %t114, 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 %a120 + store { ptr, i64, i64 } { ptr @.str.3517, i64 3, i64 0 }, ptr %a121 + call void @finch_str_concat(ptr %a119, ptr %a120, ptr %a121) + store { ptr, i64, i64 } %t118, ptr %a122 + call void @finch_str_drop(ptr %a122) + %t123 = load { ptr, i64, i64 }, ptr %a119 + %t124 = call { ptr, i64, i64 } @finch.gen.op(ptr %t113, { ptr, i64, i64 } %t123) + store { ptr, i64, i64 } %t123, ptr %a125 + call void @finch_str_drop(ptr %a125) + %t126 = load { ptr, i64, i64 }, ptr %a108 + %t127 = load { ptr, i64, i64 }, ptr %a111 + call void @finch.gen.condBr(ptr %t112, { ptr, i64, i64 } %t124, { ptr, i64, i64 } %t126, { ptr, i64, i64 } %t127) + store { ptr, i64, i64 } %t124, ptr %a128 + call void @finch_str_drop(ptr %a128) + %t129 = load ptr, ptr %a1 + %t130 = load { ptr, i64, i64 }, ptr %a108 + call void @finch.gen.label(ptr %t129, { ptr, i64, i64 } %t130) %t131 = load ptr, ptr %a1 - %t132 = load ptr, ptr %a1 - %t133 = load ptr, ptr %a1 - %t134 = icmp eq ptr %t133, null - br i1 %t134, label %panic5133, label %ok5134 -panic5133: - call void @finch_panic(ptr @.str.3377, i64 2537, ptr @.str.3378) + %t132 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t131, { ptr, i64, i64 } { ptr @.str.3518, i64 17, i64 0 }) + store { ptr, i64, i64 } %t132, ptr %a133 + %t134 = load ptr, ptr %a1 + %t135 = load { ptr, i64, i64 }, ptr %a133 + call void @finch.gen.store(ptr %t134, { ptr, i64, i64 } { ptr @.str.3519, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.3520, i64 15, i64 0 }, { ptr, i64, i64 } %t135) + %t136 = load ptr, ptr %a1 + %t137 = load { ptr, i64, i64 }, ptr %a133 + %t138 = getelementptr inbounds %S.gen.Val, ptr %a49, i32 0, i32 0 + %t139 = load { ptr, i64, i64 }, ptr %t138 + %t140 = load %S.ast.Type, ptr %a16 + call void @finch.gen.emitFormat(ptr %t136, { ptr, i64, i64 } %t137, { ptr, i64, i64 } %t139, %S.ast.Type %t140, i1 true) + %t141 = load ptr, ptr %a1 + %t142 = load ptr, ptr %a1 + %t143 = load ptr, ptr %a1 + %t144 = icmp eq ptr %t143, null + br i1 %t144, label %panic5469, label %ok5470 +panic5469: + call void @finch_panic(ptr @.str.3522, i64 2753, ptr @.str.3523) unreachable -ok5134: - %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 %range5135, label %inrange5136 -range5135: - call void @finch_panic_index(ptr @.str.3379, i64 2537, i64 %t137, i64 %t139) +ok5470: + %t145 = getelementptr inbounds %S.gen.Gen, ptr %t143, i32 0, i32 1 + %t146 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 + %t147 = load i64, ptr %t146 + %t148 = load { ptr, i64, i64 }, ptr %t145 + %t149 = extractvalue { ptr, i64, i64 } %t148, 1 + %t150 = icmp uge i64 %t147, %t149 + br i1 %t150, label %range5471, label %inrange5472 +range5471: + call void @finch_panic_index(ptr @.str.3524, i64 2753, i64 %t147, i64 %t149) unreachable -inrange5136: - %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.3376, 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.3380, 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 - %t154 = load i64, ptr %t153 - call void @finch_str_from_int(ptr %a155, i64 %t154) - %t156 = load { ptr, i64, i64 }, ptr %a155 - store { ptr, i64, i64 } %t152, 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.3381, 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 - store { ptr, i64, i64 } %t164, 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.3382, 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.3383, i64 11, i64 0 }) - %t175 = load ptr, ptr %a1 - %t176 = icmp eq ptr %t175, null - br i1 %t176, label %panic5137, label %ok5138 -panic5137: - call void @finch_panic(ptr @.str.3384, i64 2539, ptr @.str.3385) +inrange5472: + %t151 = extractvalue { ptr, i64, i64 } %t148, 0 + %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %t151, i64 %t147 + %t153 = load { ptr, i64, i64 }, ptr %t152 + %t154 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t142, { ptr, i64, i64 } %t153) + store { ptr, i64, i64 } { ptr @.str.3521, i64 33, i64 0 }, ptr %a156 + store { ptr, i64, i64 } %t154, ptr %a157 + call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) + store { ptr, i64, i64 } %t154, ptr %a158 + call void @finch_str_drop(ptr %a158) + %t159 = load { ptr, i64, i64 }, ptr %a155 + store { ptr, i64, i64 } %t159, ptr %a161 + store { ptr, i64, i64 } { ptr @.str.3525, i64 6, i64 0 }, ptr %a162 + call void @finch_str_concat(ptr %a160, ptr %a161, ptr %a162) + store { ptr, i64, i64 } %t159, ptr %a163 + call void @finch_str_drop(ptr %a163) + %t164 = load { ptr, i64, i64 }, ptr %a160 + %t165 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 + %t166 = load i64, ptr %t165 + call void @finch_str_from_int(ptr %a167, i64 %t166) + %t168 = load { ptr, i64, i64 }, ptr %a167 + store { ptr, i64, i64 } %t164, ptr %a170 + store { ptr, i64, i64 } %t168, ptr %a171 + call void @finch_str_concat(ptr %a169, ptr %a170, ptr %a171) + store { ptr, i64, i64 } %t164, ptr %a172 + call void @finch_str_drop(ptr %a172) + store { ptr, i64, i64 } %t168, ptr %a173 + call void @finch_str_drop(ptr %a173) + %t174 = load { ptr, i64, i64 }, ptr %a169 + store { ptr, i64, i64 } %t174, ptr %a176 + store { ptr, i64, i64 } { ptr @.str.3526, i64 6, i64 0 }, ptr %a177 + call void @finch_str_concat(ptr %a175, ptr %a176, ptr %a177) + store { ptr, i64, i64 } %t174, ptr %a178 + call void @finch_str_drop(ptr %a178) + %t179 = load { ptr, i64, i64 }, ptr %a175 + %t180 = load { ptr, i64, i64 }, ptr %a133 + store { ptr, i64, i64 } %t179, ptr %a182 + store { ptr, i64, i64 } %t180, ptr %a183 + call void @finch_str_concat(ptr %a181, ptr %a182, ptr %a183) + store { ptr, i64, i64 } %t179, ptr %a184 + call void @finch_str_drop(ptr %a184) + %t185 = load { ptr, i64, i64 }, ptr %a181 + store { ptr, i64, i64 } %t185, ptr %a187 + store { ptr, i64, i64 } { ptr @.str.3527, i64 1, i64 0 }, ptr %a188 + call void @finch_str_concat(ptr %a186, ptr %a187, ptr %a188) + store { ptr, i64, i64 } %t185, ptr %a189 + call void @finch_str_drop(ptr %a189) + %t190 = load { ptr, i64, i64 }, ptr %a186 + call void @finch.gen.emit(ptr %t141, { ptr, i64, i64 } %t190) + store { ptr, i64, i64 } %t190, ptr %a191 + call void @finch_str_drop(ptr %a191) + %t192 = load ptr, ptr %a1 + call void @finch.gen.emit(ptr %t192, { ptr, i64, i64 } { ptr @.str.3528, i64 11, i64 0 }) + %t193 = load ptr, ptr %a1 + %t194 = icmp eq ptr %t193, null + br i1 %t194, label %panic5473, label %ok5474 +panic5473: + call void @finch_panic(ptr @.str.3529, i64 2755, ptr @.str.3530) unreachable -ok5138: - %t177 = getelementptr inbounds %S.gen.Gen, ptr %t175, i32 0, i32 9 - store i1 true, ptr %t177 - %t178 = load ptr, ptr %a1 - %t179 = load { ptr, i64, i64 }, ptr %a104 - call void @finch.gen.label(ptr %t178, { ptr, i64, i64 } %t179) - %t180 = load ptr, ptr %a1 - %t181 = load ptr, ptr %a1 - %t182 = load { ptr, i64, i64 }, ptr %a76 - %t183 = load %S.ast.Type, ptr %a4 - %t184 = load { ptr, i64, i64 }, ptr %a98 - %t185 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t181, { ptr, i64, i64 } %t182, %S.ast.Type %t183, { ptr, i64, i64 } %t184) - %t186 = load %S.ast.Type, ptr %a4 - %t187 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t180, { ptr, i64, i64 } %t185, %S.ast.Type %t186, i64 2) - 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 %then5139, label %endif5141 -then5139: - %t191 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t192 = load { ptr, i64, i64 }, ptr %a188 - store { ptr, i64, i64 } %t192, ptr %a193 - call void @finch_str_copy(ptr %a194, ptr %a193) - %t195 = load { ptr, i64, i64 }, ptr %a194 - %t196 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t195, 0 - %t197 = load %S.ast.Type, ptr %a27 - store %S.ast.Type %t197, ptr %a198 - call void @finch.copy.S_ast_Type(ptr %a199, ptr %a198) - %t200 = load %S.ast.Type, ptr %a199 - %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 -endif5141: - %t203 = load ptr, ptr %a1 - %t204 = load ptr, ptr %a1 - %t205 = load %S.ast.Type, ptr %a27 - %t206 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t204, %S.ast.Type %t205) - %t207 = load { ptr, i64, i64 }, ptr %a188 - %t208 = call { ptr, i64, i64 } @finch.gen.load(ptr %t203, { ptr, i64, i64 } %t206, { ptr, i64, i64 } %t207) - store { ptr, i64, i64 } %t208, ptr %a209 - %t210 = load { ptr, i64, i64 }, ptr %a209 - store { ptr, i64, i64 } %t210, ptr %a211 - call void @finch_str_copy(ptr %a212, ptr %a211) - %t213 = load { ptr, i64, i64 }, ptr %a212 - %t214 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t213, 0 - %t215 = load %S.ast.Type, ptr %a27 - store %S.ast.Type %t215, ptr %a216 - call void @finch.copy.S_ast_Type(ptr %a217, ptr %a216) - %t218 = load %S.ast.Type, ptr %a217 - %t219 = insertvalue %S.gen.Val %t214, %S.ast.Type %t218, 1 - store %S.gen.Val %t219, ptr %a220 - %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.from5142 -logic.from5142: - br i1 %t223, label %logic.rhs5143, label %logic.end5144 -logic.rhs5143: - %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.rend5145 -logic.rend5145: - br label %logic.end5144 -logic.end5144: - %t227 = phi i1 [ false, %logic.from5142 ], [ %t226, %logic.rend5145 ] - br i1 %t227, label %then5146, label %endif5148 -then5146: - %t228 = load ptr, ptr %a1 - %t229 = load { ptr, i64, i64 }, ptr %a209 - %t230 = load %S.ast.Type, ptr %a27 - %t231 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t228, { ptr, i64, i64 } %t229, %S.ast.Type %t230) - %t232 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t231, 0 - %t233 = load %S.ast.Type, ptr %a27 - store %S.ast.Type %t233, ptr %a234 - call void @finch.copy.S_ast_Type(ptr %a235, ptr %a234) - %t236 = load %S.ast.Type, ptr %a235 - %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 %endif5148 -endif5148: - %t239 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t240 = load %S.gen.Val, ptr %a220 - store %S.gen.Val %t240, ptr %a241 - call void @finch.copy.S_gen_Val(ptr %a242, ptr %a241) - %t243 = load %S.gen.Val, ptr %a242 - %t244 = insertvalue %S.gen.Ref %t239, %S.gen.Val %t243, 2 - ret %S.gen.Ref %t244 +ok5474: + %t195 = getelementptr inbounds %S.gen.Gen, ptr %t193, i32 0, i32 9 + store i1 true, ptr %t195 + %t196 = load ptr, ptr %a1 + %t197 = load { ptr, i64, i64 }, ptr %a111 + call void @finch.gen.label(ptr %t196, { ptr, i64, i64 } %t197) + %t198 = load ptr, ptr %a1 + %t199 = load %S.gen.Val, ptr %a49 + call void @finch.gen.release(ptr %t198, %S.gen.Val %t199) + %t200 = load ptr, ptr %a1 + %t201 = load ptr, ptr %a1 + %t202 = load { ptr, i64, i64 }, ptr %a79 + %t203 = load %S.ast.Type, ptr %a4 + %t204 = load { ptr, i64, i64 }, ptr %a105 + %t205 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t201, { ptr, i64, i64 } %t202, %S.ast.Type %t203, { ptr, i64, i64 } %t204) + %t206 = load %S.ast.Type, ptr %a4 + %t207 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t200, { ptr, i64, i64 } %t205, %S.ast.Type %t206, i64 2) + store { ptr, i64, i64 } %t205, ptr %a208 + call void @finch_str_drop(ptr %a208) + store { ptr, i64, i64 } %t207, ptr %a209 + %t210 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 + %t211 = load i1, ptr %t210 + br i1 %t211, label %then5475, label %endif5477 +then5475: + %t212 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 + %t213 = load { ptr, i64, i64 }, ptr %a209 + store { ptr, i64, i64 } %t213, ptr %a214 + call void @finch_str_copy(ptr %a215, ptr %a214) + %t216 = load { ptr, i64, i64 }, ptr %a215 + %t217 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t216, 0 + %t218 = load %S.ast.Type, ptr %a27 + 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 + %t222 = insertvalue %S.gen.Place %t217, %S.ast.Type %t221, 1 + %t223 = insertvalue %S.gen.Ref %t212, %S.gen.Place %t222, 1 + call void @finch_str_drop(ptr %a209) + call void @finch_str_drop(ptr %a133) + call void @finch_str_drop(ptr %a111) + call void @finch_str_drop(ptr %a108) + call void @finch_str_drop(ptr %a105) + call void @finch_str_drop(ptr %a99) + call void @finch_str_drop(ptr %a79) + call void @finch.drop.S_gen_Val(ptr %a49) + call void @finch.drop.S_ast_Type(ptr %a27) + call void @finch.drop.S_ast_Type(ptr %a16) + ret %S.gen.Ref %t223 +endif5477: + %t224 = load ptr, ptr %a1 + %t225 = load ptr, ptr %a1 + %t226 = load %S.ast.Type, ptr %a27 + %t227 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t225, %S.ast.Type %t226) + %t228 = load { ptr, i64, i64 }, ptr %a209 + %t229 = call { ptr, i64, i64 } @finch.gen.load(ptr %t224, { ptr, i64, i64 } %t227, { ptr, i64, i64 } %t228) + store { ptr, i64, i64 } %t227, ptr %a230 + call void @finch_str_drop(ptr %a230) + store { ptr, i64, i64 } %t229, ptr %a231 + %t232 = load { ptr, i64, i64 }, ptr %a231 + store { ptr, i64, i64 } %t232, ptr %a233 + call void @finch_str_copy(ptr %a234, ptr %a233) + %t235 = load { ptr, i64, i64 }, ptr %a234 + %t236 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t235, 0 + %t237 = load %S.ast.Type, ptr %a27 + store %S.ast.Type %t237, ptr %a238 + call void @finch.copy.S_ast_Type(ptr %a239, ptr %a238) + %t240 = load %S.ast.Type, ptr %a239 + %t241 = insertvalue %S.gen.Val %t236, %S.ast.Type %t240, 1 + store %S.gen.Val %t241, ptr %a242 + %t243 = load ptr, ptr %a1 + %t244 = load %S.ast.Type, ptr %a27 + %t245 = call i1 @finch.gen.owning(ptr %t243, %S.ast.Type %t244) + br label %logic.from5478 +logic.from5478: + br i1 %t245, label %logic.rhs5479, label %logic.end5480 +logic.rhs5479: + %t246 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 + %t247 = getelementptr inbounds %S.gen.Val, ptr %t246, i32 0, i32 2 + %t248 = load i1, ptr %t247 + br label %logic.rend5481 +logic.rend5481: + br label %logic.end5480 +logic.end5480: + %t249 = phi i1 [ false, %logic.from5478 ], [ %t248, %logic.rend5481 ] + br i1 %t249, label %then5482, label %endif5484 +then5482: + %t250 = load ptr, ptr %a1 + %t251 = load { ptr, i64, i64 }, ptr %a231 + %t252 = load %S.ast.Type, ptr %a27 + %t253 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t250, { ptr, i64, i64 } %t251, %S.ast.Type %t252) + %t254 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t253, 0 + %t255 = load %S.ast.Type, ptr %a27 + store %S.ast.Type %t255, ptr %a256 + call void @finch.copy.S_ast_Type(ptr %a257, ptr %a256) + %t258 = load %S.ast.Type, ptr %a257 + %t259 = insertvalue %S.gen.Val %t254, %S.ast.Type %t258, 1 + %t260 = insertvalue %S.gen.Val %t259, i1 true, 2 + %t261 = load %S.gen.Val, ptr %a242 + store %S.gen.Val %t260, ptr %a242 + store %S.gen.Val %t261, ptr %a262 + call void @finch.drop.S_gen_Val(ptr %a262) + br label %endif5484 +endif5484: + %t263 = load ptr, ptr %a1 + %t264 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 + %t265 = load %S.gen.Val, ptr %t264 + call void @finch.gen.release(ptr %t263, %S.gen.Val %t265) + %t266 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 + %t267 = load %S.gen.Val, ptr %a242 + store %S.gen.Val %t267, ptr %a268 + call void @finch.copy.S_gen_Val(ptr %a269, ptr %a268) + %t270 = load %S.gen.Val, ptr %a269 + %t271 = insertvalue %S.gen.Ref %t266, %S.gen.Val %t270, 2 + call void @finch.drop.S_gen_Val(ptr %a242) + call void @finch_str_drop(ptr %a231) + call void @finch_str_drop(ptr %a209) + call void @finch_str_drop(ptr %a133) + call void @finch_str_drop(ptr %a111) + call void @finch_str_drop(ptr %a108) + call void @finch_str_drop(ptr %a105) + call void @finch_str_drop(ptr %a99) + call void @finch_str_drop(ptr %a79) + call void @finch.drop.S_gen_Val(ptr %a49) + call void @finch.drop.S_ast_Type(ptr %a27) + call void @finch.drop.S_ast_Type(ptr %a16) + ret %S.gen.Ref %t271 } define internal %S.gen.Val @finch.gen.mapLit(ptr %p0, %S.ast.Node %p1, %S.ast.Type %p2) { @@ -47339,33 +55841,49 @@ entry: %a56 = alloca { ptr, i64, i64 }, align 16 %a67 = alloca %S.ast.Node, align 16 %a68 = alloca %S.ast.Node, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 + %a71 = alloca %S.ast.Node, align 16 + %a74 = alloca { ptr, i64, i64 }, align 16 + %a75 = alloca { ptr, i64, i64 }, align 16 + %a80 = alloca { ptr, i64, i64 }, align 16 + %a81 = alloca { ptr, i64, i64 }, align 16 + %a96 = alloca %S.gen.Val, align 16 + %a107 = alloca %S.gen.Val, align 16 + %a111 = alloca { ptr, i64, i64 }, align 16 %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 + %a118 = alloca { ptr, i64, i64 }, align 16 + %a119 = 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 - %a150 = alloca %S.ast.Type, align 16 - %a151 = alloca %S.ast.Type, align 16 - %a153 = alloca %S.ast.Type, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca i64, align 16 - %a181 = alloca %S.gen.Val, align 16 - %a182 = alloca %S.gen.Val, align 16 - %a184 = alloca %S.gen.Val, align 16 - %a186 = alloca %S.gen.Val, align 16 - %a187 = alloca %S.gen.Val, align 16 - %a189 = alloca %S.gen.Val, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca %S.ast.Type, align 16 - %a308 = alloca %S.ast.Type, align 16 + %a141 = alloca { ptr, i64, i64 }, align 16 + %a142 = alloca { ptr, i64, i64 }, align 16 + %a156 = alloca %S.ast.Type, align 16 + %a157 = alloca %S.ast.Type, align 16 + %a159 = alloca %S.ast.Type, align 16 + %a165 = alloca %S.ast.Type, align 16 + %a171 = alloca %S.ast.Type, align 16 + %a177 = alloca { ptr, i64, i64 }, align 16 + %a178 = alloca { ptr, i64, i64 }, align 16 + %a184 = alloca { ptr, i64, i64 }, align 16 + %a190 = alloca i64, align 16 + %a198 = alloca i64, align 16 + %a206 = alloca i64, align 16 + %a208 = alloca %S.gen.Val, align 16 + %a209 = alloca %S.gen.Val, align 16 + %a211 = alloca %S.gen.Val, align 16 + %a236 = alloca %S.gen.Val, align 16 + %a257 = alloca %S.gen.Val, align 16 + %a261 = alloca %S.gen.Val, align 16 + %a262 = alloca %S.gen.Val, align 16 + %a264 = alloca %S.gen.Val, align 16 + %a290 = alloca %S.gen.Val, align 16 + %a312 = alloca %S.gen.Val, align 16 + %a316 = alloca { ptr, i64, i64 }, align 16 + %a323 = alloca { ptr, i64, i64 }, align 16 + %a328 = alloca { ptr, i64, i64 }, align 16 + %a350 = alloca { ptr, i64, i64 }, align 16 + %a365 = alloca { ptr, i64, i64 }, align 16 + %a368 = alloca %S.ast.Type, align 16 + %a369 = alloca %S.ast.Type, align 16 store ptr %p0, ptr %a1 store %S.ast.Node %p1, ptr %a2 store %S.ast.Type %p2, ptr %a3 @@ -47380,22 +55898,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.3386, i64 3, i64 0 }, ptr %a15 + store { ptr, i64, i64 } { ptr @.str.3531, 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 %then5149, label %endif5151 -then5149: + br i1 %t17, label %then5485, label %endif5487 +then5485: %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 %then5152, label %endif5154 -then5152: + br i1 %t21, label %then5488, label %endif5490 +then5488: %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.3387, i64 52, i64 0 }) - br label %endif5154 -endif5154: + call void @finch.gen.fail(ptr %t22, %S.ast.Node %t23, { ptr, i64, i64 } { ptr @.str.3532, i64 52, i64 0 }) + br label %endif5490 +endif5490: store i1 true, ptr %a24 store i1 false, ptr %a25 %t26 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 @@ -47403,12 +55921,12 @@ endif5154: %t28 = load i64, ptr %t27 %t29 = sdiv i64 %t28, 2 store i64 0, ptr %a30 - br label %for.cond5155 -for.cond5155: + br label %for.cond5491 +for.cond5491: %t31 = load i64, ptr %a30 %t32 = icmp slt i64 %t31, %t29 - br i1 %t32, label %for.body5156, label %for.end5158 -for.body5156: + br i1 %t32, label %for.body5492, label %for.end5494 +for.body5492: %t33 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t34 = load i64, ptr %a30 %t35 = mul i64 2, %t34 @@ -47416,11 +55934,11 @@ for.body5156: %t37 = load { ptr, i64, i64 }, ptr %t33 %t38 = extractvalue { ptr, i64, i64 } %t37, 1 %t39 = icmp uge i64 %t36, %t38 - br i1 %t39, label %range5159, label %inrange5160 -range5159: - call void @finch_panic_index(ptr @.str.3388, i64 2567, i64 %t36, i64 %t38) + br i1 %t39, label %range5495, label %inrange5496 +range5495: + call void @finch_panic_index(ptr @.str.3533, i64 2785, i64 %t36, i64 %t38) unreachable -inrange5160: +inrange5496: %t40 = extractvalue { ptr, i64, i64 } %t37, 0 %t41 = getelementptr inbounds %S.ast.Node, ptr %t40, i64 %t36 %t42 = load %S.ast.Node, ptr %t41 @@ -47431,441 +55949,559 @@ inrange5160: %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.3389, i64 5, i64 0 }, ptr %a50 + store { ptr, i64, i64 } { ptr @.str.3534, 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.from5161 -logic.from5161: - br i1 %t52, label %logic.rhs5162, label %logic.end5163 -logic.rhs5162: + br label %logic.from5497 +logic.from5497: + br i1 %t52, label %logic.rhs5498, label %logic.end5499 +logic.rhs5498: %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.3390, i64 1, i64 0 }, ptr %a56 + store { ptr, i64, i64 } { ptr @.str.3535, 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.rend5164 -logic.rend5164: - br label %logic.end5163 -logic.end5163: - %t59 = phi i1 [ false, %logic.from5161 ], [ %t58, %logic.rend5164 ] - br i1 %t59, label %then5165, label %endif5167 -then5165: + br label %logic.rend5500 +logic.rend5500: + br label %logic.end5499 +logic.end5499: + %t59 = phi i1 [ false, %logic.from5497 ], [ %t58, %logic.rend5500 ] + br i1 %t59, label %then5501, label %endif5503 +then5501: %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 %range5168, label %inrange5169 -range5168: - call void @finch_panic_index(ptr @.str.3391, i64 2569, i64 0, i64 %t62) + br i1 %t63, label %range5504, label %inrange5505 +range5504: + call void @finch_panic_index(ptr @.str.3536, i64 2787, i64 0, i64 %t62) unreachable -inrange5169: +inrange5505: %t64 = extractvalue { ptr, i64, i64 } %t61, 0 %t65 = getelementptr inbounds %S.ast.Node, ptr %t64, i64 0 %t66 = load %S.ast.Node, ptr %t65 store %S.ast.Node %t66, ptr %a67 call void @finch.copy.S_ast_Node(ptr %a68, ptr %a67) %t69 = load %S.ast.Node, ptr %a68 + %t70 = load %S.ast.Node, ptr %a46 store %S.ast.Node %t69, ptr %a46 - br label %endif5167 -endif5167: - %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.3392, 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 %then5170, label %else5171 -then5170: + store %S.ast.Node %t70, ptr %a71 + call void @finch.drop.S_ast_Node(ptr %a71) + br label %endif5503 +endif5503: + %t72 = getelementptr inbounds %S.ast.Node, ptr %a46, i32 0, i32 0 + %t73 = load { ptr, i64, i64 }, ptr %t72 + store { ptr, i64, i64 } %t73, ptr %a74 + store { ptr, i64, i64 } { ptr @.str.3537, i64 5, i64 0 }, ptr %a75 + %t76 = call i32 @finch_str_eq(ptr %a74, ptr %a75) + %t77 = icmp ne i32 %t76, 0 + br i1 %t77, label %then5506, label %else5507 +then5506: store i1 true, ptr %a25 - br label %endif5172 -else5171: - %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.3393, 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 %then5173, label %endif5175 -then5173: + br label %endif5508 +else5507: + %t78 = getelementptr inbounds %S.ast.Node, ptr %a46, i32 0, i32 0 + %t79 = load { ptr, i64, i64 }, ptr %t78 + store { ptr, i64, i64 } %t79, ptr %a80 + store { ptr, i64, i64 } { ptr @.str.3538, i64 3, i64 0 }, ptr %a81 + %t82 = call i32 @finch_str_eq(ptr %a80, ptr %a81) + %t83 = icmp eq i32 %t82, 0 + br i1 %t83, label %then5509, label %endif5511 +then5509: store i1 false, ptr %a24 - br label %endif5175 -endif5175: - br label %endif5172 -endif5172: - br label %for.step5157 -for.step5157: - %t82 = load i64, ptr %a30 - %t83 = add i64 %t82, 1 - store i64 %t83, ptr %a30 - br label %for.cond5155 -for.end5158: - %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 %range5176, label %inrange5177 -range5176: - call void @finch_panic_index(ptr @.str.3394, i64 2577, i64 0, i64 %t87) + br label %endif5511 +endif5511: + br label %endif5508 +endif5508: + call void @finch.drop.S_ast_Node(ptr %a46) + br label %for.step5493 +for.step5493: + %t84 = load i64, ptr %a30 + %t85 = add i64 %t84, 1 + store i64 %t85, ptr %a30 + br label %for.cond5491 +for.end5494: + %t86 = load ptr, ptr %a1 + %t87 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t88 = load { ptr, i64, i64 }, ptr %t87 + %t89 = extractvalue { ptr, i64, i64 } %t88, 1 + %t90 = icmp uge i64 0, %t89 + br i1 %t90, label %range5512, label %inrange5513 +range5512: + call void @finch_panic_index(ptr @.str.3539, i64 2795, i64 0, i64 %t89) unreachable -inrange5177: - %t89 = extractvalue { ptr, i64, i64 } %t86, 0 - %t90 = getelementptr inbounds %S.ast.Node, ptr %t89, i64 0 - %t91 = load %S.ast.Node, ptr %t90 - %t92 = call %S.gen.Val @finch.gen.expr(ptr %t84, %S.ast.Node %t91) - store %S.gen.Val %t92, ptr %a10 - %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 %range5178, label %inrange5179 -range5178: - call void @finch_panic_index(ptr @.str.3395, i64 2578, i64 1, i64 %t96) +inrange5513: + %t91 = extractvalue { ptr, i64, i64 } %t88, 0 + %t92 = getelementptr inbounds %S.ast.Node, ptr %t91, i64 0 + %t93 = load %S.ast.Node, ptr %t92 + %t94 = call %S.gen.Val @finch.gen.expr(ptr %t86, %S.ast.Node %t93) + %t95 = load %S.gen.Val, ptr %a10 + store %S.gen.Val %t94, ptr %a10 + store %S.gen.Val %t95, ptr %a96 + call void @finch.drop.S_gen_Val(ptr %a96) + %t97 = load ptr, ptr %a1 + %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 1, %t100 + br i1 %t101, label %range5514, label %inrange5515 +range5514: + call void @finch_panic_index(ptr @.str.3540, i64 2796, i64 1, i64 %t100) unreachable -inrange5179: - %t98 = extractvalue { ptr, i64, i64 } %t95, 0 - %t99 = getelementptr inbounds %S.ast.Node, ptr %t98, i64 1 - %t100 = load %S.ast.Node, ptr %t99 - %t101 = call %S.gen.Val @finch.gen.expr(ptr %t93, %S.ast.Node %t100) - store %S.gen.Val %t101, ptr %a11 - %t102 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 1 - %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.3396, 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.from5180 -logic.from5180: - br i1 %t108, label %logic.end5182, label %logic.rhs5181 -logic.rhs5181: - %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.3397, 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.rend5183 -logic.rend5183: - br label %logic.end5182 -logic.end5182: - %t116 = phi i1 [ true, %logic.from5180 ], [ %t115, %logic.rend5183 ] - br i1 %t116, label %then5184, label %endif5186 -then5184: - %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 %range5187, label %inrange5188 -range5187: - call void @finch_panic_index(ptr @.str.3398, i64 2580, i64 0, i64 %t120) +inrange5515: + %t102 = extractvalue { ptr, i64, i64 } %t99, 0 + %t103 = getelementptr inbounds %S.ast.Node, ptr %t102, i64 1 + %t104 = load %S.ast.Node, ptr %t103 + %t105 = call %S.gen.Val @finch.gen.expr(ptr %t97, %S.ast.Node %t104) + %t106 = load %S.gen.Val, ptr %a11 + store %S.gen.Val %t105, ptr %a11 + store %S.gen.Val %t106, ptr %a107 + call void @finch.drop.S_gen_Val(ptr %a107) + %t108 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 1 + %t109 = getelementptr inbounds %S.ast.Type, ptr %t108, i32 0, i32 0 + %t110 = load { ptr, i64, i64 }, ptr %t109 + store { ptr, i64, i64 } %t110, ptr %a111 + store { ptr, i64, i64 } { ptr @.str.3541, i64 4, i64 0 }, ptr %a112 + %t113 = call i32 @finch_str_eq(ptr %a111, ptr %a112) + %t114 = icmp ne i32 %t113, 0 + br label %logic.from5516 +logic.from5516: + br i1 %t114, label %logic.end5518, label %logic.rhs5517 +logic.rhs5517: + %t115 = getelementptr inbounds %S.gen.Val, ptr %a10, 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.3542, i64 4, i64 0 }, ptr %a119 + %t120 = call i32 @finch_str_eq(ptr %a118, ptr %a119) + %t121 = icmp ne i32 %t120, 0 + br label %logic.rend5519 +logic.rend5519: + br label %logic.end5518 +logic.end5518: + %t122 = phi i1 [ true, %logic.from5516 ], [ %t121, %logic.rend5519 ] + br i1 %t122, label %then5520, label %endif5522 +then5520: + %t123 = load ptr, ptr %a1 + %t124 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t125 = load { ptr, i64, i64 }, ptr %t124 + %t126 = extractvalue { ptr, i64, i64 } %t125, 1 + %t127 = icmp uge i64 0, %t126 + br i1 %t127, label %range5523, label %inrange5524 +range5523: + call void @finch_panic_index(ptr @.str.3543, i64 2798, i64 0, i64 %t126) unreachable -inrange5188: - %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.3399, i64 35, i64 0 }) - br label %endif5186 -endif5186: - %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.3400, 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.from5189 -logic.from5189: - br i1 %t131, label %logic.end5191, label %logic.rhs5190 -logic.rhs5190: - %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.3401, 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.rend5192 -logic.rend5192: - br label %logic.end5191 -logic.end5191: - %t139 = phi i1 [ true, %logic.from5189 ], [ %t138, %logic.rend5192 ] - br i1 %t139, label %then5193, label %endif5195 -then5193: - %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 %range5196, label %inrange5197 -range5196: - call void @finch_panic_index(ptr @.str.3402, i64 2583, i64 1, i64 %t143) +inrange5524: + %t128 = extractvalue { ptr, i64, i64 } %t125, 0 + %t129 = getelementptr inbounds %S.ast.Node, ptr %t128, i64 0 + %t130 = load %S.ast.Node, ptr %t129 + call void @finch.gen.fail(ptr %t123, %S.ast.Node %t130, { ptr, i64, i64 } { ptr @.str.3544, i64 35, i64 0 }) + br label %endif5522 +endif5522: + %t131 = getelementptr inbounds %S.gen.Val, ptr %a11, i32 0, i32 1 + %t132 = getelementptr inbounds %S.ast.Type, ptr %t131, i32 0, i32 0 + %t133 = load { ptr, i64, i64 }, ptr %t132 + store { ptr, i64, i64 } %t133, ptr %a134 + store { ptr, i64, i64 } { ptr @.str.3545, 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.from5525 +logic.from5525: + br i1 %t137, label %logic.end5527, label %logic.rhs5526 +logic.rhs5526: + %t138 = getelementptr inbounds %S.gen.Val, ptr %a11, i32 0, i32 1 + %t139 = getelementptr inbounds %S.ast.Type, ptr %t138, i32 0, i32 0 + %t140 = load { ptr, i64, i64 }, ptr %t139 + store { ptr, i64, i64 } %t140, ptr %a141 + store { ptr, i64, i64 } { ptr @.str.3546, i64 4, i64 0 }, ptr %a142 + %t143 = call i32 @finch_str_eq(ptr %a141, ptr %a142) + %t144 = icmp ne i32 %t143, 0 + br label %logic.rend5528 +logic.rend5528: + br label %logic.end5527 +logic.end5527: + %t145 = phi i1 [ true, %logic.from5525 ], [ %t144, %logic.rend5528 ] + br i1 %t145, label %then5529, label %endif5531 +then5529: + %t146 = load ptr, ptr %a1 + %t147 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t148 = load { ptr, i64, i64 }, ptr %t147 + %t149 = extractvalue { ptr, i64, i64 } %t148, 1 + %t150 = icmp uge i64 1, %t149 + br i1 %t150, label %range5532, label %inrange5533 +range5532: + call void @finch_panic_index(ptr @.str.3547, i64 2801, i64 1, i64 %t149) unreachable -inrange5197: - %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.3403, i64 37, i64 0 }) - br label %endif5195 -endif5195: - %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 - call void @finch.copy.S_ast_Type(ptr %a151, ptr %a150) - %t152 = load %S.ast.Type, ptr %a151 - store %S.ast.Type %t152, ptr %a153 - %t154 = load i1, ptr %a24 - br label %logic.from5198 -logic.from5198: - br i1 %t154, label %logic.rhs5199, label %logic.end5200 -logic.rhs5199: - %t155 = load i1, ptr %a25 - br label %logic.rend5201 -logic.rend5201: - br label %logic.end5200 -logic.end5200: - %t156 = phi i1 [ false, %logic.from5198 ], [ %t155, %logic.rend5201 ] - br i1 %t156, label %then5202, label %endif5204 -then5202: - %t157 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3404, i64 5, i64 0 }) - store %S.ast.Type %t157, ptr %a153 - br label %endif5204 -endif5204: - %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 %endif5151 -endif5151: - %t162 = load ptr, ptr %a1 - %t163 = load ptr, ptr %a1 - %t164 = load %S.ast.Type, ptr %a8 - %t165 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t163, %S.ast.Type %t164) - %t166 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t162, { ptr, i64, i64 } %t165) - store { ptr, i64, i64 } %t166, ptr %a167 - %t168 = load ptr, ptr %a1 - %t169 = load ptr, ptr %a1 +inrange5533: + %t151 = extractvalue { ptr, i64, i64 } %t148, 0 + %t152 = getelementptr inbounds %S.ast.Node, ptr %t151, i64 1 + %t153 = load %S.ast.Node, ptr %t152 + call void @finch.gen.fail(ptr %t146, %S.ast.Node %t153, { ptr, i64, i64 } { ptr @.str.3548, i64 37, i64 0 }) + br label %endif5531 +endif5531: + %t154 = getelementptr inbounds %S.gen.Val, ptr %a11, i32 0, i32 1 + %t155 = load %S.ast.Type, ptr %t154 + store %S.ast.Type %t155, ptr %a156 + call void @finch.copy.S_ast_Type(ptr %a157, ptr %a156) + %t158 = load %S.ast.Type, ptr %a157 + store %S.ast.Type %t158, ptr %a159 + %t160 = load i1, ptr %a24 + br label %logic.from5534 +logic.from5534: + br i1 %t160, label %logic.rhs5535, label %logic.end5536 +logic.rhs5535: + %t161 = load i1, ptr %a25 + br label %logic.rend5537 +logic.rend5537: + br label %logic.end5536 +logic.end5536: + %t162 = phi i1 [ false, %logic.from5534 ], [ %t161, %logic.rend5537 ] + br i1 %t162, label %then5538, label %endif5540 +then5538: + %t163 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3549, i64 5, i64 0 }) + %t164 = load %S.ast.Type, ptr %a159 + store %S.ast.Type %t163, ptr %a159 + store %S.ast.Type %t164, ptr %a165 + call void @finch.drop.S_ast_Type(ptr %a165) + br label %endif5540 +endif5540: + %t166 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 1 + %t167 = load %S.ast.Type, ptr %t166 + %t168 = load %S.ast.Type, ptr %a159 + %t169 = call %S.ast.Type @finch.ast.mapOf(%S.ast.Type %t167, %S.ast.Type %t168) %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.3405, 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.cond5205 -for.cond5205: - %t178 = load i64, ptr %a177 - %t179 = icmp slt i64 %t178, %t176 - br i1 %t179, label %for.body5206, label %for.end5208 -for.body5206: - %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) - %t183 = load %S.gen.Val, ptr %a182 - store %S.gen.Val %t183, ptr %a184 - %t185 = load %S.gen.Val, ptr %a11 - 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 - store %S.gen.Val %t188, ptr %a189 - %t190 = load i64, ptr %a177 - %t191 = icmp eq i64 %t190, 0 - br label %logic.from5209 -logic.from5209: - br i1 %t191, label %logic.rhs5210, label %logic.end5211 -logic.rhs5210: - %t192 = load i1, ptr %a9 - br label %logic.rend5212 -logic.rend5212: - br label %logic.end5211 -logic.end5211: - %t193 = phi i1 [ false, %logic.from5209 ], [ %t192, %logic.rend5212 ] - %t194 = xor i1 %t193, true - br i1 %t194, label %then5213, label %endif5215 -then5213: - %t195 = load ptr, ptr %a1 - %t196 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t197 = load i64, ptr %a177 - %t198 = mul i64 2, %t197 - %t199 = load { ptr, i64, i64 }, ptr %t196 - %t200 = extractvalue { ptr, i64, i64 } %t199, 1 - %t201 = icmp uge i64 %t198, %t200 - br i1 %t201, label %range5216, label %inrange5217 -range5216: - call void @finch_panic_index(ptr @.str.3406, i64 2598, i64 %t198, i64 %t200) + store %S.ast.Type %t169, ptr %a8 + store %S.ast.Type %t170, ptr %a171 + call void @finch.drop.S_ast_Type(ptr %a171) + store i1 true, ptr %a9 + call void @finch.drop.S_ast_Type(ptr %a159) + br label %endif5487 +endif5487: + %t172 = load ptr, ptr %a1 + %t173 = load ptr, ptr %a1 + %t174 = load %S.ast.Type, ptr %a8 + %t175 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t173, %S.ast.Type %t174) + %t176 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t172, { ptr, i64, i64 } %t175) + store { ptr, i64, i64 } %t175, ptr %a177 + call void @finch_str_drop(ptr %a177) + store { ptr, i64, i64 } %t176, ptr %a178 + %t179 = load ptr, ptr %a1 + %t180 = load ptr, ptr %a1 + %t181 = load %S.ast.Type, ptr %a8 + %t182 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t180, %S.ast.Type %t181) + %t183 = load { ptr, i64, i64 }, ptr %a178 + call void @finch.gen.store(ptr %t179, { ptr, i64, i64 } %t182, { ptr, i64, i64 } { ptr @.str.3550, i64 15, i64 0 }, { ptr, i64, i64 } %t183) + store { ptr, i64, i64 } %t182, ptr %a184 + call void @finch_str_drop(ptr %a184) + %t185 = load ptr, ptr %a1 + %t186 = icmp eq ptr %t185, null + br i1 %t186, label %panic5541, label %ok5542 +panic5541: + call void @finch_panic(ptr @.str.3551, i64 2812, ptr @.str.3552) unreachable -inrange5217: - %t202 = extractvalue { ptr, i64, i64 } %t199, 0 - %t203 = getelementptr inbounds %S.ast.Node, ptr %t202, i64 %t198 - %t204 = load %S.ast.Node, ptr %t203 - %t205 = getelementptr inbounds %S.ast.Type, ptr %a8, i32 0, i32 1 - %t206 = load { ptr, i64, i64 }, ptr %t205 - %t207 = extractvalue { ptr, i64, i64 } %t206, 1 - %t208 = icmp uge i64 0, %t207 - br i1 %t208, label %range5218, label %inrange5219 -range5218: - call void @finch_panic_index(ptr @.str.3407, i64 2598, i64 0, i64 %t207) +ok5542: + %t187 = getelementptr inbounds %S.gen.Gen, ptr %t185, i32 0, i32 11 + %t188 = getelementptr inbounds { ptr, i64, i64 }, ptr %t187, i32 0, i32 1 + %t189 = load i64, ptr %t188 + store i64 %t189, ptr %a190 + %t191 = load ptr, ptr %a1 + %t192 = load { ptr, i64, i64 }, ptr %a178 + %t193 = load %S.ast.Type, ptr %a8 + call void @finch.gen.holdAddr(ptr %t191, { ptr, i64, i64 } %t192, %S.ast.Type %t193) + %t194 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t195 = getelementptr inbounds { ptr, i64, i64 }, ptr %t194, i32 0, i32 1 + %t196 = load i64, ptr %t195 + %t197 = sdiv i64 %t196, 2 + store i64 0, ptr %a198 + br label %for.cond5543 +for.cond5543: + %t199 = load i64, ptr %a198 + %t200 = icmp slt i64 %t199, %t197 + br i1 %t200, label %for.body5544, label %for.end5546 +for.body5544: + %t201 = load ptr, ptr %a1 + %t202 = icmp eq ptr %t201, null + br i1 %t202, label %panic5547, label %ok5548 +panic5547: + call void @finch_panic(ptr @.str.3553, i64 2815, ptr @.str.3554) unreachable -inrange5219: - %t209 = extractvalue { ptr, i64, i64 } %t206, 0 - %t210 = getelementptr inbounds %S.ast.Type, ptr %t209, i64 0 - %t211 = load %S.ast.Type, ptr %t210 - %t212 = call %S.gen.Val @finch.gen.exprWant(ptr %t195, %S.ast.Node %t204, %S.ast.Type %t211) - store %S.gen.Val %t212, ptr %a184 - %t213 = load ptr, ptr %a1 - %t214 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t215 = load i64, ptr %a177 - %t216 = mul i64 2, %t215 - %t217 = add i64 %t216, 1 - %t218 = load { ptr, i64, i64 }, ptr %t214 - %t219 = extractvalue { ptr, i64, i64 } %t218, 1 - %t220 = icmp uge i64 %t217, %t219 - br i1 %t220, label %range5220, label %inrange5221 -range5220: - call void @finch_panic_index(ptr @.str.3408, i64 2599, i64 %t217, i64 %t219) +ok5548: + %t203 = getelementptr inbounds %S.gen.Gen, ptr %t201, i32 0, i32 11 + %t204 = getelementptr inbounds { ptr, i64, i64 }, ptr %t203, i32 0, i32 1 + %t205 = load i64, ptr %t204 + store i64 %t205, ptr %a206 + %t207 = load %S.gen.Val, ptr %a10 + store %S.gen.Val %t207, ptr %a208 + call void @finch.copy.S_gen_Val(ptr %a209, ptr %a208) + %t210 = load %S.gen.Val, ptr %a209 + store %S.gen.Val %t210, ptr %a211 + %t212 = load i64, ptr %a198 + %t213 = icmp eq i64 %t212, 0 + br label %logic.from5549 +logic.from5549: + br i1 %t213, label %logic.rhs5550, label %logic.end5551 +logic.rhs5550: + %t214 = load i1, ptr %a9 + br label %logic.rend5552 +logic.rend5552: + br label %logic.end5551 +logic.end5551: + %t215 = phi i1 [ false, %logic.from5549 ], [ %t214, %logic.rend5552 ] + %t216 = xor i1 %t215, true + br i1 %t216, label %then5553, label %endif5555 +then5553: + %t217 = load ptr, ptr %a1 + %t218 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t219 = load i64, ptr %a198 + %t220 = mul i64 2, %t219 + %t221 = load { ptr, i64, i64 }, ptr %t218 + %t222 = extractvalue { ptr, i64, i64 } %t221, 1 + %t223 = icmp uge i64 %t220, %t222 + br i1 %t223, label %range5556, label %inrange5557 +range5556: + call void @finch_panic_index(ptr @.str.3555, i64 2818, i64 %t220, i64 %t222) unreachable -inrange5221: - %t221 = extractvalue { ptr, i64, i64 } %t218, 0 - %t222 = getelementptr inbounds %S.ast.Node, ptr %t221, i64 %t217 - %t223 = load %S.ast.Node, ptr %t222 - %t224 = getelementptr inbounds %S.ast.Type, ptr %a8, i32 0, i32 1 - %t225 = load { ptr, i64, i64 }, ptr %t224 - %t226 = extractvalue { ptr, i64, i64 } %t225, 1 - %t227 = icmp uge i64 1, %t226 - br i1 %t227, label %range5222, label %inrange5223 -range5222: - call void @finch_panic_index(ptr @.str.3409, i64 2599, i64 1, i64 %t226) +inrange5557: + %t224 = extractvalue { ptr, i64, i64 } %t221, 0 + %t225 = getelementptr inbounds %S.ast.Node, ptr %t224, i64 %t220 + %t226 = load %S.ast.Node, ptr %t225 + %t227 = getelementptr inbounds %S.ast.Type, ptr %a8, i32 0, i32 1 + %t228 = load { ptr, i64, i64 }, ptr %t227 + %t229 = extractvalue { ptr, i64, i64 } %t228, 1 + %t230 = icmp uge i64 0, %t229 + br i1 %t230, label %range5558, label %inrange5559 +range5558: + call void @finch_panic_index(ptr @.str.3556, i64 2818, i64 0, i64 %t229) unreachable -inrange5223: - %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 %endif5215 -endif5215: - %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 %range5224, label %inrange5225 -range5224: - call void @finch_panic_index(ptr @.str.3410, i64 2601, i64 0, i64 %t236) +inrange5559: + %t231 = extractvalue { ptr, i64, i64 } %t228, 0 + %t232 = getelementptr inbounds %S.ast.Type, ptr %t231, i64 0 + %t233 = load %S.ast.Type, ptr %t232 + %t234 = call %S.gen.Val @finch.gen.exprWant(ptr %t217, %S.ast.Node %t226, %S.ast.Type %t233) + %t235 = load %S.gen.Val, ptr %a211 + store %S.gen.Val %t234, ptr %a211 + store %S.gen.Val %t235, ptr %a236 + call void @finch.drop.S_gen_Val(ptr %a236) + br label %endif5555 +endif5555: + %t237 = load ptr, ptr %a1 + %t238 = load %S.gen.Val, ptr %a211 + %t239 = getelementptr inbounds %S.ast.Type, ptr %a8, 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 %range5560, label %inrange5561 +range5560: + call void @finch_panic_index(ptr @.str.3557, i64 2820, i64 0, i64 %t241) unreachable -inrange5225: - %t238 = extractvalue { ptr, i64, i64 } %t235, 0 - %t239 = getelementptr inbounds %S.ast.Type, ptr %t238, i64 0 - %t240 = load %S.ast.Type, ptr %t239 - %t241 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t242 = load i64, ptr %a177 - %t243 = mul i64 2, %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 %range5226, label %inrange5227 -range5226: - call void @finch_panic_index(ptr @.str.3411, i64 2601, i64 %t243, i64 %t245) +inrange5561: + %t243 = extractvalue { ptr, i64, i64 } %t240, 0 + %t244 = getelementptr inbounds %S.ast.Type, ptr %t243, i64 0 + %t245 = load %S.ast.Type, ptr %t244 + %t246 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t247 = load i64, ptr %a198 + %t248 = mul i64 2, %t247 + %t249 = load { ptr, i64, i64 }, ptr %t246 + %t250 = extractvalue { ptr, i64, i64 } %t249, 1 + %t251 = icmp uge i64 %t248, %t250 + br i1 %t251, label %range5562, label %inrange5563 +range5562: + call void @finch_panic_index(ptr @.str.3558, i64 2820, i64 %t248, i64 %t250) unreachable -inrange5227: - %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.3412, i64 21, i64 0 }) - store %S.gen.Val %t250, ptr %a184 - %t251 = load ptr, ptr %a1 - %t252 = load %S.gen.Val, ptr %a189 - %t253 = getelementptr inbounds %S.ast.Type, ptr %a8, i32 0, i32 1 - %t254 = load { ptr, i64, i64 }, ptr %t253 - %t255 = extractvalue { ptr, i64, i64 } %t254, 1 - %t256 = icmp uge i64 1, %t255 - br i1 %t256, label %range5228, label %inrange5229 -range5228: - call void @finch_panic_index(ptr @.str.3413, i64 2602, i64 1, i64 %t255) +inrange5563: + %t252 = extractvalue { ptr, i64, i64 } %t249, 0 + %t253 = getelementptr inbounds %S.ast.Node, ptr %t252, i64 %t248 + %t254 = load %S.ast.Node, ptr %t253 + %t255 = call %S.gen.Val @finch.gen.coerce(ptr %t237, %S.gen.Val %t238, %S.ast.Type %t245, %S.ast.Node %t254, { ptr, i64, i64 } { ptr @.str.3559, i64 21, i64 0 }) + %t256 = load %S.gen.Val, ptr %a211 + store %S.gen.Val %t255, ptr %a211 + store %S.gen.Val %t256, ptr %a257 + call void @finch.drop.S_gen_Val(ptr %a257) + %t258 = load ptr, ptr %a1 + %t259 = load %S.gen.Val, ptr %a211 + call void @finch.gen.hold(ptr %t258, %S.gen.Val %t259) + %t260 = load %S.gen.Val, ptr %a11 + store %S.gen.Val %t260, ptr %a261 + call void @finch.copy.S_gen_Val(ptr %a262, ptr %a261) + %t263 = load %S.gen.Val, ptr %a262 + store %S.gen.Val %t263, ptr %a264 + %t265 = load i64, ptr %a198 + %t266 = icmp eq i64 %t265, 0 + br label %logic.from5564 +logic.from5564: + br i1 %t266, label %logic.rhs5565, label %logic.end5566 +logic.rhs5565: + %t267 = load i1, ptr %a9 + br label %logic.rend5567 +logic.rend5567: + br label %logic.end5566 +logic.end5566: + %t268 = phi i1 [ false, %logic.from5564 ], [ %t267, %logic.rend5567 ] + %t269 = xor i1 %t268, true + br i1 %t269, label %then5568, label %endif5570 +then5568: + %t270 = load ptr, ptr %a1 + %t271 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t272 = load i64, ptr %a198 + %t273 = mul i64 2, %t272 + %t274 = add i64 %t273, 1 + %t275 = load { ptr, i64, i64 }, ptr %t271 + %t276 = extractvalue { ptr, i64, i64 } %t275, 1 + %t277 = icmp uge i64 %t274, %t276 + br i1 %t277, label %range5571, label %inrange5572 +range5571: + call void @finch_panic_index(ptr @.str.3560, i64 2824, i64 %t274, i64 %t276) unreachable -inrange5229: - %t257 = extractvalue { ptr, i64, i64 } %t254, 0 - %t258 = getelementptr inbounds %S.ast.Type, ptr %t257, i64 1 - %t259 = load %S.ast.Type, ptr %t258 - %t260 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t261 = load i64, ptr %a177 - %t262 = mul i64 2, %t261 - %t263 = add i64 %t262, 1 - %t264 = load { ptr, i64, i64 }, ptr %t260 - %t265 = extractvalue { ptr, i64, i64 } %t264, 1 - %t266 = icmp uge i64 %t263, %t265 - br i1 %t266, label %range5230, label %inrange5231 -range5230: - call void @finch_panic_index(ptr @.str.3414, i64 2602, i64 %t263, i64 %t265) +inrange5572: + %t278 = extractvalue { ptr, i64, i64 } %t275, 0 + %t279 = getelementptr inbounds %S.ast.Node, ptr %t278, i64 %t274 + %t280 = load %S.ast.Node, ptr %t279 + %t281 = getelementptr inbounds %S.ast.Type, ptr %a8, i32 0, i32 1 + %t282 = load { ptr, i64, i64 }, ptr %t281 + %t283 = extractvalue { ptr, i64, i64 } %t282, 1 + %t284 = icmp uge i64 1, %t283 + br i1 %t284, label %range5573, label %inrange5574 +range5573: + call void @finch_panic_index(ptr @.str.3561, i64 2824, i64 1, i64 %t283) unreachable -inrange5231: - %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.3415, i64 23, i64 0 }) - store %S.gen.Val %t270, ptr %a189 - %t271 = load ptr, ptr %a1 - %t272 = load %S.gen.Val, ptr %a189 - %t273 = call { ptr, i64, i64 } @finch.gen.own(ptr %t271, %S.gen.Val %t272) - store { ptr, i64, i64 } %t273, ptr %a274 - %t275 = load ptr, ptr %a1 - %t276 = load { ptr, i64, i64 }, ptr %a167 - %t277 = load %S.ast.Type, ptr %a8 - %t278 = load %S.gen.Val, ptr %a184 - %t279 = load %S.ast.Node, ptr %a2 - %t280 = call { ptr, i64, i64 } @finch.gen.mapSlot(ptr %t275, { ptr, i64, i64 } %t276, %S.ast.Type %t277, %S.gen.Val %t278, i1 false, %S.ast.Node %t279) - store { ptr, i64, i64 } %t280, ptr %a281 - %t282 = load ptr, ptr %a1 - %t283 = load ptr, ptr %a1 - %t284 = getelementptr inbounds %S.ast.Type, ptr %a8, i32 0, i32 1 - %t285 = load { ptr, i64, i64 }, ptr %t284 - %t286 = extractvalue { ptr, i64, i64 } %t285, 1 - %t287 = icmp uge i64 1, %t286 - br i1 %t287, label %range5232, label %inrange5233 -range5232: - call void @finch_panic_index(ptr @.str.3416, i64 2605, i64 1, i64 %t286) +inrange5574: + %t285 = extractvalue { ptr, i64, i64 } %t282, 0 + %t286 = getelementptr inbounds %S.ast.Type, ptr %t285, i64 1 + %t287 = load %S.ast.Type, ptr %t286 + %t288 = call %S.gen.Val @finch.gen.exprWant(ptr %t270, %S.ast.Node %t280, %S.ast.Type %t287) + %t289 = load %S.gen.Val, ptr %a264 + store %S.gen.Val %t288, ptr %a264 + store %S.gen.Val %t289, ptr %a290 + call void @finch.drop.S_gen_Val(ptr %a290) + br label %endif5570 +endif5570: + %t291 = load ptr, ptr %a1 + %t292 = load %S.gen.Val, ptr %a264 + %t293 = getelementptr inbounds %S.ast.Type, ptr %a8, i32 0, i32 1 + %t294 = load { ptr, i64, i64 }, ptr %t293 + %t295 = extractvalue { ptr, i64, i64 } %t294, 1 + %t296 = icmp uge i64 1, %t295 + br i1 %t296, label %range5575, label %inrange5576 +range5575: + call void @finch_panic_index(ptr @.str.3562, i64 2826, i64 1, i64 %t295) unreachable -inrange5233: - %t288 = extractvalue { ptr, i64, i64 } %t285, 0 - %t289 = getelementptr inbounds %S.ast.Type, ptr %t288, i64 1 - %t290 = load %S.ast.Type, ptr %t289 - %t291 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t283, %S.ast.Type %t290) - %t292 = load { ptr, i64, i64 }, ptr %a274 - %t293 = load ptr, ptr %a1 - %t294 = load { ptr, i64, i64 }, ptr %a281 - %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.step5207 -for.step5207: - %t297 = load i64, ptr %a177 - %t298 = add i64 %t297, 1 - store i64 %t298, ptr %a177 - br label %for.cond5205 -for.end5208: - %t299 = load ptr, ptr %a1 - %t300 = load ptr, ptr %a1 - %t301 = load %S.ast.Type, ptr %a8 - %t302 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t300, %S.ast.Type %t301) - %t303 = load { ptr, i64, i64 }, ptr %a167 - %t304 = call { ptr, i64, i64 } @finch.gen.load(ptr %t299, { ptr, i64, i64 } %t302, { ptr, i64, i64 } %t303) - %t305 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t304, 0 - %t306 = load %S.ast.Type, ptr %a8 - store %S.ast.Type %t306, ptr %a307 - call void @finch.copy.S_ast_Type(ptr %a308, ptr %a307) - %t309 = load %S.ast.Type, ptr %a308 - %t310 = insertvalue %S.gen.Val %t305, %S.ast.Type %t309, 1 - %t311 = insertvalue %S.gen.Val %t310, i1 true, 2 - ret %S.gen.Val %t311 +inrange5576: + %t297 = extractvalue { ptr, i64, i64 } %t294, 0 + %t298 = getelementptr inbounds %S.ast.Type, ptr %t297, i64 1 + %t299 = load %S.ast.Type, ptr %t298 + %t300 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t301 = load i64, ptr %a198 + %t302 = mul i64 2, %t301 + %t303 = add i64 %t302, 1 + %t304 = load { ptr, i64, i64 }, ptr %t300 + %t305 = extractvalue { ptr, i64, i64 } %t304, 1 + %t306 = icmp uge i64 %t303, %t305 + br i1 %t306, label %range5577, label %inrange5578 +range5577: + call void @finch_panic_index(ptr @.str.3563, i64 2826, i64 %t303, i64 %t305) + unreachable +inrange5578: + %t307 = extractvalue { ptr, i64, i64 } %t304, 0 + %t308 = getelementptr inbounds %S.ast.Node, ptr %t307, i64 %t303 + %t309 = load %S.ast.Node, ptr %t308 + %t310 = call %S.gen.Val @finch.gen.coerce(ptr %t291, %S.gen.Val %t292, %S.ast.Type %t299, %S.ast.Node %t309, { ptr, i64, i64 } { ptr @.str.3564, i64 23, i64 0 }) + %t311 = load %S.gen.Val, ptr %a264 + store %S.gen.Val %t310, ptr %a264 + store %S.gen.Val %t311, ptr %a312 + call void @finch.drop.S_gen_Val(ptr %a312) + %t313 = load ptr, ptr %a1 + %t314 = load %S.gen.Val, ptr %a264 + %t315 = call { ptr, i64, i64 } @finch.gen.own(ptr %t313, %S.gen.Val %t314) + store { ptr, i64, i64 } %t315, ptr %a316 + %t317 = load ptr, ptr %a1 + %t318 = load { ptr, i64, i64 }, ptr %a178 + %t319 = load %S.ast.Type, ptr %a8 + %t320 = load %S.gen.Val, ptr %a211 + %t321 = load %S.ast.Node, ptr %a2 + %t322 = call { ptr, i64, i64 } @finch.gen.mapSlot(ptr %t317, { ptr, i64, i64 } %t318, %S.ast.Type %t319, %S.gen.Val %t320, i1 false, %S.ast.Node %t321) + store { ptr, i64, i64 } %t322, ptr %a323 + %t324 = load ptr, ptr %a1 + %t325 = load { ptr, i64, i64 }, ptr %a323 + %t326 = load %S.ast.Type, ptr %a8 + %t327 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t324, { ptr, i64, i64 } %t325, %S.ast.Type %t326, i64 2) + store { ptr, i64, i64 } %t327, ptr %a328 + %t329 = load ptr, ptr %a1 + %t330 = load { ptr, i64, i64 }, ptr %a328 + %t331 = getelementptr inbounds %S.ast.Type, ptr %a8, i32 0, i32 1 + %t332 = load { ptr, i64, i64 }, ptr %t331 + %t333 = extractvalue { ptr, i64, i64 } %t332, 1 + %t334 = icmp uge i64 1, %t333 + br i1 %t334, label %range5579, label %inrange5580 +range5579: + call void @finch_panic_index(ptr @.str.3565, i64 2830, i64 1, i64 %t333) + unreachable +inrange5580: + %t335 = extractvalue { ptr, i64, i64 } %t332, 0 + %t336 = getelementptr inbounds %S.ast.Type, ptr %t335, i64 1 + %t337 = load %S.ast.Type, ptr %t336 + call void @finch.gen.dropAt(ptr %t329, { ptr, i64, i64 } %t330, %S.ast.Type %t337) + %t338 = load ptr, ptr %a1 + %t339 = load ptr, ptr %a1 + %t340 = getelementptr inbounds %S.ast.Type, ptr %a8, i32 0, i32 1 + %t341 = load { ptr, i64, i64 }, ptr %t340 + %t342 = extractvalue { ptr, i64, i64 } %t341, 1 + %t343 = icmp uge i64 1, %t342 + br i1 %t343, label %range5581, label %inrange5582 +range5581: + call void @finch_panic_index(ptr @.str.3566, i64 2831, i64 1, i64 %t342) + unreachable +inrange5582: + %t344 = extractvalue { ptr, i64, i64 } %t341, 0 + %t345 = getelementptr inbounds %S.ast.Type, ptr %t344, i64 1 + %t346 = load %S.ast.Type, ptr %t345 + %t347 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t339, %S.ast.Type %t346) + %t348 = load { ptr, i64, i64 }, ptr %a316 + %t349 = load { ptr, i64, i64 }, ptr %a328 + call void @finch.gen.store(ptr %t338, { ptr, i64, i64 } %t347, { ptr, i64, i64 } %t348, { ptr, i64, i64 } %t349) + store { ptr, i64, i64 } %t347, ptr %a350 + call void @finch_str_drop(ptr %a350) + %t351 = load ptr, ptr %a1 + %t352 = load %S.gen.Val, ptr %a211 + call void @finch.gen.release(ptr %t351, %S.gen.Val %t352) + %t353 = load ptr, ptr %a1 + %t354 = load i64, ptr %a206 + call void @finch.gen.heldEnd(ptr %t353, i64 %t354) + call void @finch_str_drop(ptr %a328) + call void @finch_str_drop(ptr %a323) + call void @finch_str_drop(ptr %a316) + call void @finch.drop.S_gen_Val(ptr %a264) + call void @finch.drop.S_gen_Val(ptr %a211) + br label %for.step5545 +for.step5545: + %t355 = load i64, ptr %a198 + %t356 = add i64 %t355, 1 + store i64 %t356, ptr %a198 + br label %for.cond5543 +for.end5546: + %t357 = load ptr, ptr %a1 + %t358 = load i64, ptr %a190 + call void @finch.gen.heldEnd(ptr %t357, i64 %t358) + %t359 = load ptr, ptr %a1 + %t360 = load ptr, ptr %a1 + %t361 = load %S.ast.Type, ptr %a8 + %t362 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t360, %S.ast.Type %t361) + %t363 = load { ptr, i64, i64 }, ptr %a178 + %t364 = call { ptr, i64, i64 } @finch.gen.load(ptr %t359, { ptr, i64, i64 } %t362, { ptr, i64, i64 } %t363) + store { ptr, i64, i64 } %t362, ptr %a365 + call void @finch_str_drop(ptr %a365) + %t366 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t364, 0 + %t367 = load %S.ast.Type, ptr %a8 + store %S.ast.Type %t367, ptr %a368 + call void @finch.copy.S_ast_Type(ptr %a369, ptr %a368) + %t370 = load %S.ast.Type, ptr %a369 + %t371 = insertvalue %S.gen.Val %t366, %S.ast.Type %t370, 1 + %t372 = insertvalue %S.gen.Val %t371, i1 true, 2 + call void @finch_str_drop(ptr %a178) + call void @finch.drop.S_gen_Val(ptr %a11) + call void @finch.drop.S_gen_Val(ptr %a10) + call void @finch.drop.S_ast_Type(ptr %a8) + ret %S.gen.Val %t372 } define internal %S.gen.Val @finch.gen.mapMethod(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3) { @@ -47892,189 +56528,296 @@ entry: %a51 = alloca { ptr, i64, i64 }, align 16 %a52 = alloca { ptr, i64, i64 }, align 16 %a81 = alloca %S.gen.Val, 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 + %a82 = alloca %S.gen.Val, 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 %a101 = 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 - %a108 = alloca { ptr, i64, i64 }, align 16 + %a106 = alloca { ptr, i64, i64 }, align 16 + %a107 = alloca { ptr, i64, i64 }, align 16 %a109 = alloca { ptr, i64, i64 }, align 16 + %a110 = 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 %a121 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 + %a122 = alloca { ptr, i64, i64 }, align 16 + %a127 = alloca { ptr, i64, i64 }, align 16 + %a130 = alloca { ptr, i64, i64 }, align 16 %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = 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 - %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 + %a149 = 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 + %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 %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 + %a172 = alloca { ptr, i64, i64 }, align 16 %a174 = alloca { ptr, i64, i64 }, align 16 + %a175 = alloca { ptr, i64, i64 }, align 16 + %a176 = alloca { ptr, i64, i64 }, align 16 %a177 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 + %a182 = 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 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a240 = 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 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a273 = 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 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = 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 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a291 = 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 + %a191 = alloca { ptr, i64, i64 }, align 16 + %a193 = alloca { ptr, i64, i64 }, align 16 + %a199 = alloca { ptr, i64, i64 }, align 16 + %a200 = alloca { ptr, i64, i64 }, align 16 + %a207 = alloca { ptr, i64, i64 }, align 16 + %a210 = alloca { ptr, i64, i64 }, align 16 + %a213 = alloca { ptr, i64, i64 }, align 16 + %a216 = alloca { ptr, i64, i64 }, align 16 + %a219 = alloca { ptr, i64, i64 }, align 16 + %a239 = alloca { ptr, i64, i64 }, align 16 + %a241 = alloca { ptr, i64, i64 }, align 16 + %a242 = alloca { ptr, i64, i64 }, align 16 + %a245 = alloca { ptr, i64, i64 }, align 16 + %a246 = alloca { ptr, i64, i64 }, align 16 + %a276 = alloca %S.gen.Val, align 16 + %a278 = alloca %S.gen.Val, align 16 + %a279 = 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 %a295 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca %S.ast.Type, align 16 - %a301 = alloca %S.ast.Type, 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 + %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 + %a308 = alloca { ptr, i64, i64 }, align 16 %a309 = alloca { ptr, i64, i64 }, align 16 %a310 = alloca { ptr, i64, i64 }, align 16 - %a318 = 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 + %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 %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a329 = 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 + %a328 = alloca { ptr, i64, i64 }, align 16 %a330 = alloca { ptr, i64, i64 }, align 16 - %a334 = alloca { ptr, i64, i64 }, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca i64, align 16 - %a344 = alloca %S.ast.Type, align 16 - %a345 = alloca %S.ast.Type, align 16 - %a347 = alloca %S.ast.Type, align 16 - %a349 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a354 = alloca %S.ast.Type, align 16 - %a355 = alloca %S.ast.Type, align 16 - %a359 = alloca %S.ast.Type, align 16 - %a362 = 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 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a375 = alloca { ptr, i64, i64 }, align 16 - %a376 = 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 + %a336 = 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 + %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 + %a350 = alloca %S.ast.Type, align 16 + %a351 = alloca %S.ast.Type, align 16 + %a359 = alloca { ptr, i64, i64 }, align 16 + %a360 = alloca { ptr, i64, i64 }, align 16 + %a378 = 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 %a383 = alloca { ptr, i64, i64 }, align 16 %a384 = alloca { ptr, i64, i64 }, align 16 %a385 = alloca { ptr, i64, i64 }, align 16 + %a386 = 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 %a392 = alloca { ptr, i64, i64 }, align 16 - %a393 = alloca { ptr, i64, i64 }, align 16 %a394 = 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 - %a398 = alloca { ptr, i64, i64 }, align 16 - %a401 = alloca { ptr, i64, i64 }, align 16 + %a400 = alloca { ptr, i64, i64 }, align 16 %a402 = alloca { ptr, i64, i64 }, align 16 %a403 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca { ptr, i64, i64 }, align 16 - %a406 = alloca { ptr, i64, i64 }, align 16 %a407 = 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 - %a423 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 + %a421 = alloca { ptr, i64, i64 }, align 16 + %a424 = 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 %a436 = alloca { ptr, i64, i64 }, align 16 - %a438 = alloca { ptr, i64, i64 }, align 16 + %a437 = alloca { ptr, i64, i64 }, align 16 %a439 = alloca { ptr, i64, i64 }, align 16 %a440 = alloca { ptr, i64, i64 }, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a444 = alloca { ptr, i64, i64 }, align 16 + %a441 = alloca { ptr, i64, i64 }, align 16 + %a442 = 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 - %a453 = alloca { ptr, i64, i64 }, align 16 %a457 = alloca { ptr, i64, i64 }, align 16 - %a468 = alloca { ptr, i64, i64 }, align 16 - %a471 = alloca { ptr, i64, i64 }, align 16 + %a464 = alloca { ptr, i64, i64 }, align 16 + %a473 = alloca { ptr, i64, i64 }, align 16 %a474 = alloca { ptr, i64, i64 }, align 16 - %a483 = alloca { ptr, i64, i64 }, align 16 - %a484 = alloca { ptr, i64, i64 }, align 16 - %a485 = alloca { ptr, i64, i64 }, align 16 + %a475 = alloca { ptr, i64, i64 }, align 16 + %a477 = alloca { ptr, i64, i64 }, align 16 + %a478 = alloca { ptr, i64, i64 }, align 16 + %a479 = alloca { ptr, i64, i64 }, align 16 + %a480 = alloca { ptr, i64, i64 }, align 16 + %a482 = 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 - %a489 = alloca { ptr, i64, i64 }, align 16 - %a499 = alloca { ptr, i64, i64 }, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 + %a491 = alloca { ptr, i64, i64 }, align 16 + %a492 = alloca { ptr, i64, i64 }, align 16 + %a499 = alloca i64, align 16 + %a501 = alloca %S.ast.Type, align 16 + %a502 = alloca %S.ast.Type, align 16 + %a504 = alloca %S.ast.Type, 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 - %a511 = alloca { ptr, i64, i64 }, align 16 - %a514 = alloca { ptr, i64, i64 }, align 16 - %a515 = alloca { ptr, i64, i64 }, align 16 - %a516 = 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 - %a523 = alloca { ptr, i64, i64 }, align 16 - %a524 = alloca { ptr, i64, i64 }, align 16 - %a525 = alloca { ptr, i64, i64 }, align 16 + %a511 = alloca %S.ast.Type, align 16 + %a512 = alloca %S.ast.Type, align 16 + %a515 = alloca %S.ast.Type, align 16 + %a518 = alloca %S.ast.Type, align 16 + %a521 = alloca { ptr, i64, i64 }, align 16 + %a529 = alloca { ptr, i64, i64 }, align 16 + %a530 = alloca { ptr, i64, i64 }, align 16 + %a531 = alloca { ptr, i64, i64 }, align 16 + %a532 = alloca { ptr, i64, i64 }, align 16 + %a534 = alloca { ptr, i64, i64 }, align 16 + %a535 = 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 - %a539 = alloca { ptr, i64, i64 }, align 16 + %a540 = 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 - %a558 = alloca %S.ast.Type, align 16 - %a559 = alloca %S.ast.Type, align 16 - %a566 = 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 + %a548 = alloca { ptr, i64, i64 }, align 16 + %a551 = alloca { ptr, i64, i64 }, align 16 + %a553 = alloca { ptr, i64, i64 }, align 16 + %a554 = alloca { ptr, i64, i64 }, align 16 + %a557 = alloca { ptr, i64, i64 }, align 16 + %a558 = alloca { ptr, i64, i64 }, align 16 + %a559 = alloca { ptr, i64, i64 }, align 16 + %a561 = alloca { ptr, i64, i64 }, align 16 + %a562 = alloca { ptr, i64, i64 }, align 16 + %a563 = alloca { ptr, i64, i64 }, align 16 + %a564 = alloca { ptr, i64, i64 }, align 16 %a567 = 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 - %a571 = 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 + %a575 = alloca { ptr, i64, i64 }, align 16 + %a580 = alloca { ptr, i64, i64 }, align 16 + %a581 = alloca { ptr, i64, i64 }, align 16 + %a582 = alloca { ptr, i64, i64 }, align 16 + %a583 = alloca { ptr, i64, i64 }, align 16 + %a584 = alloca { ptr, i64, i64 }, align 16 + %a586 = 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 + %a595 = alloca { ptr, i64, i64 }, align 16 + %a598 = 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 + %a609 = 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 + %a617 = alloca { ptr, i64, i64 }, align 16 + %a618 = alloca { ptr, i64, i64 }, align 16 + %a619 = alloca { ptr, i64, i64 }, align 16 + %a620 = 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 + %a628 = alloca { ptr, i64, i64 }, align 16 + %a630 = alloca { ptr, i64, i64 }, align 16 + %a631 = alloca { ptr, i64, i64 }, align 16 + %a635 = alloca { ptr, i64, i64 }, align 16 + %a646 = alloca { ptr, i64, i64 }, align 16 + %a649 = alloca { ptr, i64, i64 }, align 16 + %a652 = 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 + %a667 = alloca { ptr, i64, i64 }, align 16 + %a668 = alloca { ptr, i64, i64 }, align 16 + %a669 = alloca { ptr, i64, i64 }, align 16 + %a670 = alloca { ptr, i64, i64 }, align 16 + %a673 = alloca { ptr, i64, i64 }, align 16 + %a676 = alloca { ptr, i64, i64 }, align 16 + %a682 = 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 + %a691 = 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 + %a702 = alloca { ptr, i64, i64 }, align 16 + %a704 = alloca { ptr, i64, i64 }, align 16 + %a705 = alloca { ptr, i64, i64 }, align 16 + %a706 = alloca { ptr, i64, i64 }, align 16 + %a707 = alloca { ptr, i64, i64 }, align 16 + %a710 = 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 + %a723 = alloca { ptr, i64, i64 }, align 16 + %a724 = alloca { ptr, i64, i64 }, align 16 + %a728 = alloca { ptr, i64, i64 }, align 16 + %a729 = alloca { ptr, i64, i64 }, align 16 + %a730 = 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 + %a735 = alloca { ptr, i64, i64 }, align 16 + %a738 = alloca { ptr, i64, i64 }, align 16 + %a740 = alloca { ptr, i64, i64 }, align 16 + %a752 = alloca %S.ast.Type, align 16 + %a753 = alloca %S.ast.Type, align 16 + %a760 = alloca { ptr, i64, i64 }, align 16 + %a761 = alloca { ptr, i64, i64 }, align 16 + %a762 = 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 + %a769 = 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 @@ -48089,11 +56832,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 %range5234, label %inrange5235 -range5234: - call void @finch_panic_index(ptr @.str.3417, i64 2612, i64 0, i64 %t13) + br i1 %t14, label %range5583, label %inrange5584 +range5583: + call void @finch_panic_index(ptr @.str.3567, i64 2841, i64 0, i64 %t13) unreachable -inrange5235: +inrange5584: %t15 = extractvalue { ptr, i64, i64 } %t12, 0 %t16 = getelementptr inbounds %S.ast.Type, ptr %t15, i64 0 %t17 = load %S.ast.Type, ptr %t16 @@ -48105,11 +56848,11 @@ inrange5235: %t23 = load { ptr, i64, i64 }, ptr %t22 %t24 = extractvalue { ptr, i64, i64 } %t23, 1 %t25 = icmp uge i64 1, %t24 - br i1 %t25, label %range5236, label %inrange5237 -range5236: - call void @finch_panic_index(ptr @.str.3418, i64 2613, i64 1, i64 %t24) + br i1 %t25, label %range5585, label %inrange5586 +range5585: + call void @finch_panic_index(ptr @.str.3568, i64 2842, i64 1, i64 %t24) unreachable -inrange5237: +inrange5586: %t26 = extractvalue { ptr, i64, i64 } %t23, 0 %t27 = getelementptr inbounds %S.ast.Type, ptr %t26, i64 1 %t28 = load %S.ast.Type, ptr %t27 @@ -48119,69 +56862,69 @@ inrange5237: 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.3419, i64 3, i64 0 }, ptr %a35 + store { ptr, i64, i64 } { ptr @.str.3569, 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.from5238 -logic.from5238: - br i1 %t37, label %logic.end5240, label %logic.rhs5239 -logic.rhs5239: + br label %logic.from5587 +logic.from5587: + br i1 %t37, label %logic.end5589, label %logic.rhs5588 +logic.rhs5588: %t38 = load { ptr, i64, i64 }, ptr %a10 store { ptr, i64, i64 } %t38, ptr %a39 - store { ptr, i64, i64 } { ptr @.str.3420, i64 3, i64 0 }, ptr %a40 + store { ptr, i64, i64 } { ptr @.str.3570, 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.rend5241 -logic.rend5241: - br label %logic.end5240 -logic.end5240: - %t43 = phi i1 [ true, %logic.from5238 ], [ %t42, %logic.rend5241 ] - br label %logic.from5242 -logic.from5242: - br i1 %t43, label %logic.end5244, label %logic.rhs5243 -logic.rhs5243: + br label %logic.rend5590 +logic.rend5590: + br label %logic.end5589 +logic.end5589: + %t43 = phi i1 [ true, %logic.from5587 ], [ %t42, %logic.rend5590 ] + br label %logic.from5591 +logic.from5591: + br i1 %t43, label %logic.end5593, label %logic.rhs5592 +logic.rhs5592: %t44 = load { ptr, i64, i64 }, ptr %a10 store { ptr, i64, i64 } %t44, ptr %a45 - store { ptr, i64, i64 } { ptr @.str.3421, i64 6, i64 0 }, ptr %a46 + store { ptr, i64, i64 } { ptr @.str.3571, 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.rend5245 -logic.rend5245: - br label %logic.end5244 -logic.end5244: - %t49 = phi i1 [ true, %logic.from5242 ], [ %t48, %logic.rend5245 ] - br i1 %t49, label %then5246, label %endif5248 -then5246: + br label %logic.rend5594 +logic.rend5594: + br label %logic.end5593 +logic.end5593: + %t49 = phi i1 [ true, %logic.from5591 ], [ %t48, %logic.rend5594 ] + br i1 %t49, label %then5595, label %endif5597 +then5595: %t50 = load { ptr, i64, i64 }, ptr %a10 store { ptr, i64, i64 } %t50, ptr %a51 - store { ptr, i64, i64 } { ptr @.str.3422, i64 3, i64 0 }, ptr %a52 + store { ptr, i64, i64 } { ptr @.str.3572, 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 %then5249, label %else5250 -then5249: + br i1 %t54, label %then5598, label %else5599 +then5598: %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 %endif5251 -else5250: + br label %endif5600 +else5599: %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 %endif5251 -endif5251: + br label %endif5600 +endif5600: %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 %range5252, label %inrange5253 -range5252: - call void @finch_panic_index(ptr @.str.3423, i64 2620, i64 1, i64 %t65) + br i1 %t66, label %range5601, label %inrange5602 +range5601: + call void @finch_panic_index(ptr @.str.3573, i64 2849, i64 1, i64 %t65) unreachable -inrange5253: +inrange5602: %t67 = extractvalue { ptr, i64, i64 } %t64, 0 %t68 = getelementptr inbounds %S.ast.Node, ptr %t67, i64 1 %t69 = load %S.ast.Node, ptr %t68 @@ -48192,584 +56935,944 @@ inrange5253: %t74 = load { ptr, i64, i64 }, ptr %t73 %t75 = extractvalue { ptr, i64, i64 } %t74, 1 %t76 = icmp uge i64 1, %t75 - br i1 %t76, label %range5254, label %inrange5255 -range5254: - call void @finch_panic_index(ptr @.str.3424, i64 2620, i64 1, i64 %t75) + br i1 %t76, label %range5603, label %inrange5604 +range5603: + call void @finch_panic_index(ptr @.str.3574, i64 2849, i64 1, i64 %t75) unreachable -inrange5255: +inrange5604: %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.3425, i64 7, i64 0 }) - store %S.gen.Val %t80, ptr %a81 - %t82 = load ptr, ptr %a1 - %t83 = load { ptr, i64, i64 }, ptr %a3 - %t84 = load ptr, ptr %a1 - %t85 = load %S.gen.Val, ptr %a81 - %t86 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t84, %S.gen.Val %t85) - %t87 = load %S.ast.Type, ptr %a4 - %t88 = call { ptr, i64, i64 } @finch.gen.mapFind(ptr %t82, { ptr, i64, i64 } %t83, { ptr, i64, i64 } %t86, %S.ast.Type %t87) - 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.3426, 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.3427, i64 3, i64 0 }, ptr %a98 + %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.3575, i64 7, i64 0 }) + store %S.gen.Val %t71, ptr %a81 + call void @finch.drop.S_gen_Val(ptr %a81) + store %S.gen.Val %t80, ptr %a82 + %t83 = load ptr, ptr %a1 + %t84 = load { ptr, i64, i64 }, ptr %a3 + %t85 = load ptr, ptr %a1 + %t86 = load %S.gen.Val, ptr %a82 + %t87 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t85, %S.gen.Val %t86) + %t88 = load %S.ast.Type, ptr %a4 + %t89 = call { ptr, i64, i64 } @finch.gen.mapFind(ptr %t83, { ptr, i64, i64 } %t84, { ptr, i64, i64 } %t87, %S.ast.Type %t88) + store { ptr, i64, i64 } %t87, ptr %a90 + call void @finch_str_drop(ptr %a90) + store { ptr, i64, i64 } %t89, ptr %a91 + %t92 = load ptr, ptr %a1 + %t93 = load %S.gen.Val, ptr %a82 + call void @finch.gen.release(ptr %t92, %S.gen.Val %t93) + %t94 = load ptr, ptr %a1 + %t95 = load { ptr, i64, i64 }, ptr %a91 + store { ptr, i64, i64 } { ptr @.str.3576, i64 13, 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 - %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.3428, 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 %then5256, label %endif5258 -then5256: - %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.3429, i64 4, i64 0 }) - %t113 = insertvalue %S.gen.Val %t111, %S.ast.Type %t112, 1 - ret %S.gen.Val %t113 -endif5258: - %t114 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t114, ptr %a115 - store { ptr, i64, i64 } { ptr @.str.3430, 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 %then5259, label %endif5261 -then5259: - %t119 = load ptr, ptr %a1 - %t120 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t119, { ptr, i64, i64 } { ptr @.str.3431, i64 10, i64 0 }) + store { ptr, i64, i64 } %t99, ptr %a101 + store { ptr, i64, i64 } { ptr @.str.3577, i64 3, i64 0 }, ptr %a102 + call void @finch_str_concat(ptr %a100, ptr %a101, ptr %a102) + store { ptr, i64, i64 } %t99, ptr %a103 + call void @finch_str_drop(ptr %a103) + %t104 = load { ptr, i64, i64 }, ptr %a100 + %t105 = call { ptr, i64, i64 } @finch.gen.op(ptr %t94, { ptr, i64, i64 } %t104) + store { ptr, i64, i64 } %t104, ptr %a106 + call void @finch_str_drop(ptr %a106) + store { ptr, i64, i64 } %t105, ptr %a107 + %t108 = load { ptr, i64, i64 }, ptr %a10 + store { ptr, i64, i64 } %t108, ptr %a109 + store { ptr, i64, i64 } { ptr @.str.3578, i64 3, i64 0 }, ptr %a110 + %t111 = call i32 @finch_str_eq(ptr %a109, ptr %a110) + %t112 = icmp ne i32 %t111, 0 + br i1 %t112, label %then5605, label %endif5607 +then5605: + %t113 = load { ptr, i64, i64 }, ptr %a107 + store { ptr, i64, i64 } %t113, ptr %a114 + call void @finch_str_copy(ptr %a115, ptr %a114) + %t116 = load { ptr, i64, i64 }, ptr %a115 + %t117 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t116, 0 + %t118 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3579, i64 4, i64 0 }) + %t119 = insertvalue %S.gen.Val %t117, %S.ast.Type %t118, 1 + call void @finch_str_drop(ptr %a107) + call void @finch_str_drop(ptr %a91) + call void @finch.drop.S_gen_Val(ptr %a82) + call void @finch.drop.S_ast_Type(ptr %a32) + call void @finch.drop.S_ast_Type(ptr %a21) + call void @finch_str_drop(ptr %a10) + ret %S.gen.Val %t119 +endif5607: + %t120 = load { ptr, i64, i64 }, ptr %a10 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.3432, i64 10, i64 0 }) - store { ptr, i64, i64 } %t123, ptr %a124 + store { ptr, i64, i64 } { ptr @.str.3580, i64 6, i64 0 }, ptr %a122 + %t123 = call i32 @finch_str_eq(ptr %a121, ptr %a122) + %t124 = icmp ne i32 %t123, 0 + br i1 %t124, label %then5608, label %endif5610 +then5608: %t125 = load ptr, ptr %a1 - %t126 = load { ptr, i64, i64 }, ptr %a101 - %t127 = load { ptr, i64, i64 }, ptr %a121 - %t128 = load { ptr, i64, i64 }, ptr %a124 - call void @finch.gen.condBr(ptr %t125, { ptr, i64, i64 } %t126, { ptr, i64, i64 } %t127, { ptr, i64, i64 } %t128) - %t129 = load ptr, ptr %a1 - %t130 = load { ptr, i64, i64 }, ptr %a121 - call void @finch.gen.label(ptr %t129, { ptr, i64, i64 } %t130) + %t126 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t125, { ptr, i64, i64 } { ptr @.str.3581, i64 10, i64 0 }) + store { ptr, i64, i64 } %t126, ptr %a127 + %t128 = load ptr, ptr %a1 + %t129 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t128, { ptr, i64, i64 } { ptr @.str.3582, i64 10, i64 0 }) + store { ptr, i64, i64 } %t129, ptr %a130 %t131 = load ptr, ptr %a1 - %t132 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.3433, 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.3434, 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 - store { ptr, i64, i64 } %t140, ptr %a143 - store { ptr, i64, i64 } %t141, ptr %a144 - call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144) + %t132 = load { ptr, i64, i64 }, ptr %a107 + %t133 = load { ptr, i64, i64 }, ptr %a127 + %t134 = load { ptr, i64, i64 }, ptr %a130 + call void @finch.gen.condBr(ptr %t131, { ptr, i64, i64 } %t132, { ptr, i64, i64 } %t133, { ptr, i64, i64 } %t134) + %t135 = load ptr, ptr %a1 + %t136 = load { ptr, i64, i64 }, ptr %a127 + call void @finch.gen.label(ptr %t135, { ptr, i64, i64 } %t136) + %t137 = load ptr, ptr %a1 + %t138 = load { ptr, i64, i64 }, ptr %a3 + %t139 = load %S.ast.Type, ptr %a4 + %t140 = load { ptr, i64, i64 }, ptr %a91 + %t141 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t137, { ptr, i64, i64 } %t138, %S.ast.Type %t139, { ptr, i64, i64 } %t140) + store { ptr, i64, i64 } %t141, ptr %a142 + %t143 = load ptr, ptr %a1 + %t144 = load ptr, ptr %a1 %t145 = load { ptr, i64, i64 }, ptr %a142 - store { ptr, i64, i64 } %t145, ptr %a147 - store { ptr, i64, i64 } { ptr @.str.3435, i64 6, i64 0 }, ptr %a148 - call void @finch_str_concat(ptr %a146, ptr %a147, ptr %a148) - %t149 = load { ptr, i64, i64 }, ptr %a146 + %t146 = load %S.ast.Type, ptr %a4 + %t147 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t144, { ptr, i64, i64 } %t145, %S.ast.Type %t146, i64 1) + %t148 = load %S.ast.Type, ptr %a21 + call void @finch.gen.dropAt(ptr %t143, { ptr, i64, i64 } %t147, %S.ast.Type %t148) + store { ptr, i64, i64 } %t147, ptr %a149 + call void @finch_str_drop(ptr %a149) %t150 = load ptr, ptr %a1 - %t151 = load %S.ast.Type, ptr %a4 - %t152 = call { ptr, i64, i64 } @finch.gen.entrySize(ptr %t150, %S.ast.Type %t151) - store { ptr, i64, i64 } %t149, 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.3436, 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) - %t161 = load ptr, ptr %a1 - %t162 = load { ptr, i64, i64 }, ptr %a124 - call void @finch.gen.br(ptr %t161, { ptr, i64, i64 } %t162) - %t163 = load ptr, ptr %a1 - %t164 = load { ptr, i64, i64 }, ptr %a124 - call void @finch.gen.label(ptr %t163, { ptr, i64, i64 } %t164) - %t165 = load { ptr, i64, i64 }, ptr %a101 - 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.gen.Val zeroinitializer, { ptr, i64, i64 } %t168, 0 - %t170 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3437, i64 4, i64 0 }) - %t171 = insertvalue %S.gen.Val %t169, %S.ast.Type %t170, 1 - ret %S.gen.Val %t171 -endif5261: - %t172 = load ptr, ptr %a1 - %t173 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t172, { ptr, i64, i64 } { ptr @.str.3438, 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.3439, 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.3440, 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.3441, 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.3442, i64 7, i64 0 }) - store { ptr, i64, i64 } %t185, ptr %a186 - %t187 = load ptr, ptr %a1 - %t188 = load { ptr, i64, i64 }, ptr %a101 - %t189 = load { ptr, i64, i64 }, ptr %a174 - %t190 = load { ptr, i64, i64 }, ptr %a177 - call void @finch.gen.condBr(ptr %t187, { ptr, i64, i64 } %t188, { ptr, i64, i64 } %t189, { ptr, i64, i64 } %t190) - %t191 = load ptr, ptr %a1 - %t192 = load { ptr, i64, i64 }, ptr %a174 - call void @finch.gen.label(ptr %t191, { ptr, i64, i64 } %t192) - %t193 = load ptr, ptr %a1 + %t151 = load ptr, ptr %a1 + %t152 = load { ptr, i64, i64 }, ptr %a142 + %t153 = load %S.ast.Type, ptr %a4 + %t154 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t151, { ptr, i64, i64 } %t152, %S.ast.Type %t153, i64 2) + %t155 = load %S.ast.Type, ptr %a32 + call void @finch.gen.dropAt(ptr %t150, { ptr, i64, i64 } %t154, %S.ast.Type %t155) + store { ptr, i64, i64 } %t154, ptr %a156 + call void @finch_str_drop(ptr %a156) + %t157 = load ptr, ptr %a1 + %t158 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } { ptr @.str.3583, i64 35, 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.3584, i64 6, i64 0 }, ptr %a165 + call void @finch_str_concat(ptr %a163, ptr %a164, ptr %a165) + store { ptr, i64, i64 } %t162, ptr %a166 + call void @finch_str_drop(ptr %a166) + %t167 = load { ptr, i64, i64 }, ptr %a163 + %t168 = load { ptr, i64, i64 }, ptr %a91 + store { ptr, i64, i64 } %t167, ptr %a170 + store { ptr, i64, i64 } %t168, ptr %a171 + call void @finch_str_concat(ptr %a169, ptr %a170, ptr %a171) + store { ptr, i64, i64 } %t167, ptr %a172 + call void @finch_str_drop(ptr %a172) + %t173 = load { ptr, i64, i64 }, ptr %a169 + store { ptr, i64, i64 } %t173, ptr %a175 + store { ptr, i64, i64 } { ptr @.str.3585, i64 6, i64 0 }, ptr %a176 + call void @finch_str_concat(ptr %a174, ptr %a175, ptr %a176) + store { ptr, i64, i64 } %t173, ptr %a177 + call void @finch_str_drop(ptr %a177) + %t178 = load { ptr, i64, i64 }, ptr %a174 + %t179 = load ptr, ptr %a1 + %t180 = load %S.ast.Type, ptr %a4 + %t181 = call { ptr, i64, i64 } @finch.gen.entrySize(ptr %t179, %S.ast.Type %t180) + store { ptr, i64, i64 } %t178, ptr %a183 + store { ptr, i64, i64 } %t181, ptr %a184 + call void @finch_str_concat(ptr %a182, ptr %a183, ptr %a184) + store { ptr, i64, i64 } %t178, ptr %a185 + call void @finch_str_drop(ptr %a185) + store { ptr, i64, i64 } %t181, ptr %a186 + call void @finch_str_drop(ptr %a186) + %t187 = load { ptr, i64, i64 }, ptr %a182 + store { ptr, i64, i64 } %t187, ptr %a189 + store { ptr, i64, i64 } { ptr @.str.3586, i64 1, i64 0 }, ptr %a190 + call void @finch_str_concat(ptr %a188, ptr %a189, ptr %a190) + store { ptr, i64, i64 } %t187, ptr %a191 + call void @finch_str_drop(ptr %a191) + %t192 = load { ptr, i64, i64 }, ptr %a188 + call void @finch.gen.emit(ptr %t157, { ptr, i64, i64 } %t192) + store { ptr, i64, i64 } %t192, ptr %a193 + call void @finch_str_drop(ptr %a193) %t194 = load ptr, ptr %a1 - %t195 = load ptr, ptr %a1 - %t196 = load %S.ast.Type, ptr %a32 - %t197 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t195, %S.ast.Type %t196) - %t198 = load ptr, ptr %a1 - %t199 = load ptr, ptr %a1 - %t200 = load { ptr, i64, i64 }, ptr %a3 - %t201 = load %S.ast.Type, ptr %a4 - %t202 = load { ptr, i64, i64 }, ptr %a89 - %t203 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t199, { ptr, i64, i64 } %t200, %S.ast.Type %t201, { ptr, i64, i64 } %t202) - %t204 = load %S.ast.Type, ptr %a4 - %t205 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t198, { ptr, i64, i64 } %t203, %S.ast.Type %t204, i64 2) - %t206 = call { ptr, i64, i64 } @finch.gen.load(ptr %t194, { ptr, i64, i64 } %t197, { ptr, i64, i64 } %t205) - %t207 = load %S.ast.Type, ptr %a32 - %t208 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t193, { ptr, i64, i64 } %t206, %S.ast.Type %t207) - store { ptr, i64, i64 } %t208, ptr %a209 - %t210 = load ptr, ptr %a1 - %t211 = load { ptr, i64, i64 }, ptr %a180 - call void @finch.gen.br(ptr %t210, { ptr, i64, i64 } %t211) - %t212 = load ptr, ptr %a1 - %t213 = load { ptr, i64, i64 }, ptr %a180 - call void @finch.gen.label(ptr %t212, { ptr, i64, i64 } %t213) + %t195 = load { ptr, i64, i64 }, ptr %a130 + call void @finch.gen.br(ptr %t194, { ptr, i64, i64 } %t195) + %t196 = load ptr, ptr %a1 + %t197 = load { ptr, i64, i64 }, ptr %a130 + call void @finch.gen.label(ptr %t196, { ptr, i64, i64 } %t197) + %t198 = load { ptr, i64, i64 }, ptr %a107 + store { ptr, i64, i64 } %t198, ptr %a199 + call void @finch_str_copy(ptr %a200, ptr %a199) + %t201 = load { ptr, i64, i64 }, ptr %a200 + %t202 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t201, 0 + %t203 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3587, i64 4, i64 0 }) + %t204 = insertvalue %S.gen.Val %t202, %S.ast.Type %t203, 1 + call void @finch_str_drop(ptr %a142) + call void @finch_str_drop(ptr %a130) + call void @finch_str_drop(ptr %a127) + call void @finch_str_drop(ptr %a107) + call void @finch_str_drop(ptr %a91) + call void @finch.drop.S_gen_Val(ptr %a82) + call void @finch.drop.S_ast_Type(ptr %a32) + call void @finch.drop.S_ast_Type(ptr %a21) + call void @finch_str_drop(ptr %a10) + ret %S.gen.Val %t204 +endif5610: + %t205 = load ptr, ptr %a1 + %t206 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t205, { ptr, i64, i64 } { ptr @.str.3588, i64 9, i64 0 }) + store { ptr, i64, i64 } %t206, ptr %a207 + %t208 = load ptr, ptr %a1 + %t209 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t208, { ptr, i64, i64 } { ptr @.str.3589, i64 11, i64 0 }) + store { ptr, i64, i64 } %t209, ptr %a210 + %t211 = load ptr, ptr %a1 + %t212 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t211, { ptr, i64, i64 } { ptr @.str.3590, i64 8, i64 0 }) + store { ptr, i64, i64 } %t212, ptr %a213 %t214 = load ptr, ptr %a1 - %t215 = load { ptr, i64, i64 }, ptr %a186 - call void @finch.gen.br(ptr %t214, { ptr, i64, i64 } %t215) - %t216 = load ptr, ptr %a1 - %t217 = load { ptr, i64, i64 }, ptr %a177 - call void @finch.gen.label(ptr %t216, { ptr, i64, i64 } %t217) - %t218 = load ptr, ptr %a1 - %t219 = load ptr, ptr %a1 + %t215 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t214, { ptr, i64, i64 } { ptr @.str.3591, i64 8, i64 0 }) + store { ptr, i64, i64 } %t215, ptr %a216 + %t217 = load ptr, ptr %a1 + %t218 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t217, { ptr, i64, i64 } { ptr @.str.3592, i64 7, i64 0 }) + store { ptr, i64, i64 } %t218, ptr %a219 %t220 = load ptr, ptr %a1 - %t221 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t222 = load { ptr, i64, i64 }, ptr %t221 - %t223 = extractvalue { ptr, i64, i64 } %t222, 1 - %t224 = icmp uge i64 2, %t223 - br i1 %t224, label %range5262, label %inrange5263 -range5262: - call void @finch_panic_index(ptr @.str.3443, i64 2649, i64 2, i64 %t223) - unreachable -inrange5263: - %t225 = extractvalue { ptr, i64, i64 } %t222, 0 - %t226 = getelementptr inbounds %S.ast.Node, ptr %t225, i64 2 - %t227 = load %S.ast.Node, ptr %t226 - %t228 = load %S.ast.Type, ptr %a32 - %t229 = call %S.gen.Val @finch.gen.exprWant(ptr %t220, %S.ast.Node %t227, %S.ast.Type %t228) - %t230 = load %S.ast.Type, ptr %a32 - %t231 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t232 = load { ptr, i64, i64 }, ptr %t231 - %t233 = extractvalue { ptr, i64, i64 } %t232, 1 - %t234 = icmp uge i64 2, %t233 - br i1 %t234, label %range5264, label %inrange5265 -range5264: - call void @finch_panic_index(ptr @.str.3444, i64 2649, i64 2, i64 %t233) - unreachable -inrange5265: - %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.3445, 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 - %t242 = load { ptr, i64, i64 }, ptr %a183 - call void @finch.gen.br(ptr %t241, { ptr, i64, i64 } %t242) - %t243 = load ptr, ptr %a1 - %t244 = load { ptr, i64, i64 }, ptr %a183 - call void @finch.gen.label(ptr %t243, { ptr, i64, i64 } %t244) - %t245 = load ptr, ptr %a1 - %t246 = load { ptr, i64, i64 }, ptr %a186 - call void @finch.gen.br(ptr %t245, { ptr, i64, i64 } %t246) + %t221 = load { ptr, i64, i64 }, ptr %a107 + %t222 = load { ptr, i64, i64 }, ptr %a207 + %t223 = load { ptr, i64, i64 }, ptr %a210 + call void @finch.gen.condBr(ptr %t220, { ptr, i64, i64 } %t221, { ptr, i64, i64 } %t222, { ptr, i64, i64 } %t223) + %t224 = load ptr, ptr %a1 + %t225 = load { ptr, i64, i64 }, ptr %a207 + call void @finch.gen.label(ptr %t224, { ptr, i64, i64 } %t225) + %t226 = load ptr, ptr %a1 + %t227 = load ptr, ptr %a1 + %t228 = load ptr, ptr %a1 + %t229 = load %S.ast.Type, ptr %a32 + %t230 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t228, %S.ast.Type %t229) + %t231 = load ptr, ptr %a1 + %t232 = load ptr, ptr %a1 + %t233 = load { ptr, i64, i64 }, ptr %a3 + %t234 = load %S.ast.Type, ptr %a4 + %t235 = load { ptr, i64, i64 }, ptr %a91 + %t236 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t232, { ptr, i64, i64 } %t233, %S.ast.Type %t234, { ptr, i64, i64 } %t235) + %t237 = load %S.ast.Type, ptr %a4 + %t238 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t231, { ptr, i64, i64 } %t236, %S.ast.Type %t237, i64 2) + store { ptr, i64, i64 } %t236, ptr %a239 + call void @finch_str_drop(ptr %a239) + %t240 = call { ptr, i64, i64 } @finch.gen.load(ptr %t227, { ptr, i64, i64 } %t230, { ptr, i64, i64 } %t238) + store { ptr, i64, i64 } %t230, ptr %a241 + call void @finch_str_drop(ptr %a241) + store { ptr, i64, i64 } %t238, ptr %a242 + call void @finch_str_drop(ptr %a242) + %t243 = load %S.ast.Type, ptr %a32 + %t244 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t226, { ptr, i64, i64 } %t240, %S.ast.Type %t243) + store { ptr, i64, i64 } %t240, ptr %a245 + call void @finch_str_drop(ptr %a245) + store { ptr, i64, i64 } %t244, ptr %a246 %t247 = load ptr, ptr %a1 - %t248 = load { ptr, i64, i64 }, ptr %a186 - call void @finch.gen.label(ptr %t247, { ptr, i64, i64 } %t248) + %t248 = load { ptr, i64, i64 }, ptr %a213 + call void @finch.gen.br(ptr %t247, { ptr, i64, i64 } %t248) %t249 = load ptr, ptr %a1 - %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.3446, 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.3447, 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 - store { ptr, i64, i64 } %t260, ptr %a263 - store { ptr, i64, i64 } %t261, 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 %a267 - store { ptr, i64, i64 } { ptr @.str.3448, 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 - store { ptr, i64, i64 } %t269, ptr %a272 - store { ptr, i64, i64 } %t270, ptr %a273 - 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.3449, 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 - store { ptr, i64, i64 } %t278, 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.3450, 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 - store { ptr, i64, i64 } %t287, 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.3451, 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) - %t298 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t297, 0 - %t299 = load %S.ast.Type, ptr %a32 - 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 - %t304 = load ptr, ptr %a1 - %t305 = load %S.ast.Type, ptr %a32 - %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 -endif5248: - %t308 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t308, ptr %a309 - store { ptr, i64, i64 } { ptr @.str.3452, 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 %then5266, label %endif5268 -then5266: - %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.3453, 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.3454, 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.3455, i64 4, i64 0 }) - %t327 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t326, 1 - ret %S.gen.Val %t327 -endif5268: - %t328 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t328, ptr %a329 - store { ptr, i64, i64 } { ptr @.str.3456, 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.from5269 -logic.from5269: - br i1 %t332, label %logic.end5271, label %logic.rhs5270 -logic.rhs5270: - %t333 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t333, ptr %a334 - store { ptr, i64, i64 } { ptr @.str.3457, 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.rend5272 -logic.rend5272: - br label %logic.end5271 -logic.end5271: - %t338 = phi i1 [ true, %logic.from5269 ], [ %t337, %logic.rend5272 ] - br i1 %t338, label %then5273, label %endif5275 -then5273: - %t339 = load ptr, ptr %a1 - %t340 = load %S.ast.Node, ptr %a2 - %t341 = load { ptr, i64, i64 }, ptr %a10 - call void @finch.gen.checkArgs(ptr %t339, %S.ast.Node %t340, i64 1, i64 0, { ptr, i64, i64 } %t341) - store i64 1, ptr %a342 - %t343 = load %S.ast.Type, ptr %a21 - store %S.ast.Type %t343, ptr %a344 - call void @finch.copy.S_ast_Type(ptr %a345, ptr %a344) - %t346 = load %S.ast.Type, ptr %a345 - 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.3458, 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 %then5276, label %endif5278 -then5276: - 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 %endif5278 -endif5278: - %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.3459, 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.3460, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.3461, 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.3463, 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.3464, 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 - store { ptr, i64, i64 } %t377, 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.3465, 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.3462, 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.3466, 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.3467, 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 - store { ptr, i64, i64 } %t399, ptr %a402 - store { ptr, i64, i64 } %t400, ptr %a403 - 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.3468, 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 - %t410 = load %S.ast.Type, ptr %a347 - %t411 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t409, %S.ast.Type %t410) - store { ptr, i64, i64 } %t408, 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.3469, 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.3470, 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.3471, 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.3472, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.3473, 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.3475, 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.3476, 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 - store { ptr, i64, i64 } %t441, 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.3477, 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.3474, 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 - %t456 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t454, { ptr, i64, i64 } %t455) - store { ptr, i64, i64 } %t456, ptr %a457 - %t458 = load ptr, ptr %a1 - %t459 = load { ptr, i64, i64 }, ptr %a3 - %t460 = load %S.ast.Type, ptr %a4 - %t461 = load { ptr, i64, i64 }, ptr %a457 - %t462 = extractvalue { ptr, i64, i64 } %t461, 1 - %t463 = icmp uge i64 3, %t462 - br i1 %t463, label %range5279, label %inrange5280 -range5279: - call void @finch_panic_index(ptr @.str.3478, i64 2679, i64 3, i64 %t462) + %t250 = load { ptr, i64, i64 }, ptr %a213 + call void @finch.gen.label(ptr %t249, { ptr, i64, i64 } %t250) + %t251 = load ptr, ptr %a1 + %t252 = load { ptr, i64, i64 }, ptr %a219 + call void @finch.gen.br(ptr %t251, { ptr, i64, i64 } %t252) + %t253 = load ptr, ptr %a1 + %t254 = load { ptr, i64, i64 }, ptr %a210 + call void @finch.gen.label(ptr %t253, { ptr, i64, i64 } %t254) + %t255 = load ptr, ptr %a1 + %t256 = load ptr, ptr %a1 + %t257 = load ptr, ptr %a1 + %t258 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t259 = load { ptr, i64, i64 }, ptr %t258 + %t260 = extractvalue { ptr, i64, i64 } %t259, 1 + %t261 = icmp uge i64 2, %t260 + br i1 %t261, label %range5611, label %inrange5612 +range5611: + call void @finch_panic_index(ptr @.str.3593, i64 2882, i64 2, i64 %t260) unreachable -inrange5280: - %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 +inrange5612: + %t262 = extractvalue { ptr, i64, i64 } %t259, 0 + %t263 = getelementptr inbounds %S.ast.Node, ptr %t262, i64 2 + %t264 = load %S.ast.Node, ptr %t263 + %t265 = load %S.ast.Type, ptr %a32 + %t266 = call %S.gen.Val @finch.gen.exprWant(ptr %t257, %S.ast.Node %t264, %S.ast.Type %t265) + %t267 = load %S.ast.Type, ptr %a32 + %t268 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t269 = load { ptr, i64, i64 }, ptr %t268 + %t270 = extractvalue { ptr, i64, i64 } %t269, 1 + %t271 = icmp uge i64 2, %t270 + br i1 %t271, label %range5613, label %inrange5614 +range5613: + call void @finch_panic_index(ptr @.str.3594, i64 2882, i64 2, i64 %t270) + unreachable +inrange5614: + %t272 = extractvalue { ptr, i64, i64 } %t269, 0 + %t273 = getelementptr inbounds %S.ast.Node, ptr %t272, i64 2 + %t274 = load %S.ast.Node, ptr %t273 + %t275 = call %S.gen.Val @finch.gen.coerce(ptr %t256, %S.gen.Val %t266, %S.ast.Type %t267, %S.ast.Node %t274, { ptr, i64, i64 } { ptr @.str.3595, i64 11, i64 0 }) + store %S.gen.Val %t266, ptr %a276 + call void @finch.drop.S_gen_Val(ptr %a276) + %t277 = call { ptr, i64, i64 } @finch.gen.own(ptr %t255, %S.gen.Val %t275) + store %S.gen.Val %t275, ptr %a278 + call void @finch.drop.S_gen_Val(ptr %a278) + store { ptr, i64, i64 } %t277, ptr %a279 + %t280 = load ptr, ptr %a1 + %t281 = load { ptr, i64, i64 }, ptr %a216 + call void @finch.gen.br(ptr %t280, { ptr, i64, i64 } %t281) + %t282 = load ptr, ptr %a1 + %t283 = load { ptr, i64, i64 }, ptr %a216 + call void @finch.gen.label(ptr %t282, { ptr, i64, i64 } %t283) + %t284 = load ptr, ptr %a1 + %t285 = load { ptr, i64, i64 }, ptr %a219 + call void @finch.gen.br(ptr %t284, { ptr, i64, i64 } %t285) + %t286 = load ptr, ptr %a1 + %t287 = load { ptr, i64, i64 }, ptr %a219 + call void @finch.gen.label(ptr %t286, { ptr, i64, i64 } %t287) + %t288 = load ptr, ptr %a1 + %t289 = load ptr, ptr %a1 + %t290 = load %S.ast.Type, ptr %a32 + %t291 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t289, %S.ast.Type %t290) + store { ptr, i64, i64 } { ptr @.str.3596, i64 4, i64 0 }, ptr %a293 + store { ptr, i64, i64 } %t291, ptr %a294 + call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) + store { ptr, i64, i64 } %t291, ptr %a295 + call void @finch_str_drop(ptr %a295) + %t296 = load { ptr, i64, i64 }, ptr %a292 + store { ptr, i64, i64 } %t296, ptr %a298 + store { ptr, i64, i64 } { ptr @.str.3597, i64 3, i64 0 }, ptr %a299 + call void @finch_str_concat(ptr %a297, ptr %a298, ptr %a299) + store { ptr, i64, i64 } %t296, ptr %a300 + call void @finch_str_drop(ptr %a300) + %t301 = load { ptr, i64, i64 }, ptr %a297 + %t302 = load { ptr, i64, i64 }, ptr %a246 + store { ptr, i64, i64 } %t301, ptr %a304 + store { ptr, i64, i64 } %t302, ptr %a305 + call void @finch_str_concat(ptr %a303, ptr %a304, ptr %a305) + store { ptr, i64, i64 } %t301, ptr %a306 + call void @finch_str_drop(ptr %a306) + %t307 = load { ptr, i64, i64 }, ptr %a303 + store { ptr, i64, i64 } %t307, ptr %a309 + store { ptr, i64, i64 } { ptr @.str.3598, i64 3, i64 0 }, ptr %a310 + call void @finch_str_concat(ptr %a308, ptr %a309, ptr %a310) + store { ptr, i64, i64 } %t307, ptr %a311 + call void @finch_str_drop(ptr %a311) + %t312 = load { ptr, i64, i64 }, ptr %a308 + %t313 = load { ptr, i64, i64 }, ptr %a213 + store { ptr, i64, i64 } %t312, ptr %a315 + store { ptr, i64, i64 } %t313, ptr %a316 + call void @finch_str_concat(ptr %a314, ptr %a315, ptr %a316) + store { ptr, i64, i64 } %t312, ptr %a317 + call void @finch_str_drop(ptr %a317) + %t318 = load { ptr, i64, i64 }, ptr %a314 + store { ptr, i64, i64 } %t318, ptr %a320 + store { ptr, i64, i64 } { ptr @.str.3599, i64 6, i64 0 }, ptr %a321 + call void @finch_str_concat(ptr %a319, ptr %a320, ptr %a321) + store { ptr, i64, i64 } %t318, ptr %a322 + call void @finch_str_drop(ptr %a322) + %t323 = load { ptr, i64, i64 }, ptr %a319 + %t324 = load { ptr, i64, i64 }, ptr %a279 + store { ptr, i64, i64 } %t323, ptr %a326 + store { ptr, i64, i64 } %t324, ptr %a327 + call void @finch_str_concat(ptr %a325, ptr %a326, ptr %a327) + store { ptr, i64, i64 } %t323, ptr %a328 + call void @finch_str_drop(ptr %a328) + %t329 = load { ptr, i64, i64 }, ptr %a325 + store { ptr, i64, i64 } %t329, ptr %a331 + store { ptr, i64, i64 } { ptr @.str.3600, i64 3, i64 0 }, ptr %a332 + call void @finch_str_concat(ptr %a330, ptr %a331, ptr %a332) + store { ptr, i64, i64 } %t329, ptr %a333 + call void @finch_str_drop(ptr %a333) + %t334 = load { ptr, i64, i64 }, ptr %a330 + %t335 = load { ptr, i64, i64 }, ptr %a216 + store { ptr, i64, i64 } %t334, ptr %a337 + store { ptr, i64, i64 } %t335, ptr %a338 + call void @finch_str_concat(ptr %a336, ptr %a337, ptr %a338) + store { ptr, i64, i64 } %t334, ptr %a339 + call void @finch_str_drop(ptr %a339) + %t340 = load { ptr, i64, i64 }, ptr %a336 + store { ptr, i64, i64 } %t340, ptr %a342 + store { ptr, i64, i64 } { ptr @.str.3601, i64 2, i64 0 }, ptr %a343 + call void @finch_str_concat(ptr %a341, ptr %a342, ptr %a343) + store { ptr, i64, i64 } %t340, ptr %a344 + call void @finch_str_drop(ptr %a344) + %t345 = load { ptr, i64, i64 }, ptr %a341 + %t346 = call { ptr, i64, i64 } @finch.gen.op(ptr %t288, { ptr, i64, i64 } %t345) + store { ptr, i64, i64 } %t345, ptr %a347 + call void @finch_str_drop(ptr %a347) + %t348 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t346, 0 + %t349 = load %S.ast.Type, ptr %a32 + store %S.ast.Type %t349, ptr %a350 + call void @finch.copy.S_ast_Type(ptr %a351, ptr %a350) + %t352 = load %S.ast.Type, ptr %a351 + %t353 = insertvalue %S.gen.Val %t348, %S.ast.Type %t352, 1 + %t354 = load ptr, ptr %a1 + %t355 = load %S.ast.Type, ptr %a32 + %t356 = call i1 @finch.gen.owning(ptr %t354, %S.ast.Type %t355) + %t357 = insertvalue %S.gen.Val %t353, i1 %t356, 2 + call void @finch_str_drop(ptr %a279) + call void @finch_str_drop(ptr %a246) + call void @finch_str_drop(ptr %a219) + call void @finch_str_drop(ptr %a216) + call void @finch_str_drop(ptr %a213) + call void @finch_str_drop(ptr %a210) + call void @finch_str_drop(ptr %a207) + call void @finch_str_drop(ptr %a107) + call void @finch_str_drop(ptr %a91) + call void @finch.drop.S_gen_Val(ptr %a82) + call void @finch.drop.S_ast_Type(ptr %a32) + call void @finch.drop.S_ast_Type(ptr %a21) + call void @finch_str_drop(ptr %a10) + ret %S.gen.Val %t357 +endif5597: + %t358 = load { ptr, i64, i64 }, ptr %a10 + store { ptr, i64, i64 } %t358, ptr %a359 + store { ptr, i64, i64 } { ptr @.str.3602, i64 5, i64 0 }, ptr %a360 + %t361 = call i32 @finch_str_eq(ptr %a359, ptr %a360) + %t362 = icmp ne i32 %t361, 0 + br i1 %t362, label %then5615, label %endif5617 +then5615: + %t363 = load ptr, ptr %a1 + %t364 = load %S.ast.Node, ptr %a2 + %t365 = load { ptr, i64, i64 }, ptr %a10 + call void @finch.gen.checkArgs(ptr %t363, %S.ast.Node %t364, i64 1, i64 0, { ptr, i64, i64 } %t365) + %t366 = load ptr, ptr %a1 + %t367 = load %S.ast.Type, ptr %a21 + %t368 = call i1 @finch.gen.owning(ptr %t366, %S.ast.Type %t367) + br label %logic.from5618 +logic.from5618: + br i1 %t368, label %logic.end5620, label %logic.rhs5619 +logic.rhs5619: + %t369 = load ptr, ptr %a1 + %t370 = load %S.ast.Type, ptr %a32 + %t371 = call i1 @finch.gen.owning(ptr %t369, %S.ast.Type %t370) + br label %logic.rend5621 +logic.rend5621: + br label %logic.end5620 +logic.end5620: + %t372 = phi i1 [ true, %logic.from5618 ], [ %t371, %logic.rend5621 ] + br i1 %t372, label %then5622, label %endif5624 +then5622: + %t373 = load ptr, ptr %a1 + %t374 = load ptr, ptr %a1 + %t375 = load ptr, ptr %a1 + %t376 = load %S.ast.Type, ptr %a4 + %t377 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t375, %S.ast.Type %t376) + store { ptr, i64, i64 } { ptr @.str.3604, i64 23, i64 0 }, ptr %a379 + store { ptr, i64, i64 } %t377, ptr %a380 + call void @finch_str_concat(ptr %a378, ptr %a379, ptr %a380) + store { ptr, i64, i64 } %t377, ptr %a381 + call void @finch_str_drop(ptr %a381) + %t382 = load { ptr, i64, i64 }, ptr %a378 + store { ptr, i64, i64 } %t382, ptr %a384 + store { ptr, i64, i64 } { ptr @.str.3605, i64 6, i64 0 }, ptr %a385 + call void @finch_str_concat(ptr %a383, ptr %a384, ptr %a385) + store { ptr, i64, i64 } %t382, ptr %a386 + call void @finch_str_drop(ptr %a386) + %t387 = load { ptr, i64, i64 }, ptr %a383 + %t388 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t387, ptr %a390 + store { ptr, i64, i64 } %t388, ptr %a391 + call void @finch_str_concat(ptr %a389, ptr %a390, ptr %a391) + store { ptr, i64, i64 } %t387, ptr %a392 + call void @finch_str_drop(ptr %a392) + %t393 = load { ptr, i64, i64 }, ptr %a389 + store { ptr, i64, i64 } %t393, ptr %a395 + store { ptr, i64, i64 } { ptr @.str.3606, i64 14, i64 0 }, ptr %a396 + call void @finch_str_concat(ptr %a394, ptr %a395, ptr %a396) + store { ptr, i64, i64 } %t393, ptr %a397 + call void @finch_str_drop(ptr %a397) + %t398 = load { ptr, i64, i64 }, ptr %a394 + %t399 = call { ptr, i64, i64 } @finch.gen.op(ptr %t374, { ptr, i64, i64 } %t398) + store { ptr, i64, i64 } %t398, ptr %a400 + call void @finch_str_drop(ptr %a400) + %t401 = call { ptr, i64, i64 } @finch.gen.load(ptr %t373, { ptr, i64, i64 } { ptr @.str.3603, i64 3, i64 0 }, { ptr, i64, i64 } %t399) + store { ptr, i64, i64 } %t399, ptr %a402 + call void @finch_str_drop(ptr %a402) + store { ptr, i64, i64 } %t401, ptr %a403 + %t404 = load ptr, ptr %a1 + %t405 = load { ptr, i64, i64 }, ptr %a403 + %t406 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t404, { ptr, i64, i64 } %t405) + store { ptr, i64, i64 } %t406, ptr %a407 + %t408 = load ptr, ptr %a1 + %t409 = load { ptr, i64, i64 }, ptr %a3 + %t410 = load %S.ast.Type, ptr %a4 + %t411 = load { ptr, i64, i64 }, ptr %a407 + %t412 = extractvalue { ptr, i64, i64 } %t411, 1 + %t413 = icmp uge i64 3, %t412 + br i1 %t413, label %range5625, label %inrange5626 +range5625: + call void @finch_panic_index(ptr @.str.3607, i64 2894, i64 3, i64 %t412) + unreachable +inrange5626: + %t414 = extractvalue { ptr, i64, i64 } %t411, 0 + %t415 = getelementptr inbounds { ptr, i64, i64 }, ptr %t414, i64 3 + %t416 = load { ptr, i64, i64 }, ptr %t415 + %t417 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t408, { ptr, i64, i64 } %t409, %S.ast.Type %t410, { ptr, i64, i64 } %t416) + store { ptr, i64, i64 } %t417, ptr %a418 + %t419 = load ptr, ptr %a1 + %t420 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t419, { ptr, i64, i64 } { ptr @.str.3608, i64 10, i64 0 }) + store { ptr, i64, i64 } %t420, ptr %a421 + %t422 = load ptr, ptr %a1 + %t423 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t422, { ptr, i64, i64 } { ptr @.str.3609, i64 10, i64 0 }) + store { ptr, i64, i64 } %t423, ptr %a424 + %t425 = load ptr, ptr %a1 + %t426 = load ptr, ptr %a1 + %t427 = load ptr, ptr %a1 + %t428 = load ptr, ptr %a1 + %t429 = load { ptr, i64, i64 }, ptr %a418 + %t430 = load %S.ast.Type, ptr %a4 + %t431 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t428, { ptr, i64, i64 } %t429, %S.ast.Type %t430, i64 0) + %t432 = call { ptr, i64, i64 } @finch.gen.load(ptr %t427, { ptr, i64, i64 } { ptr @.str.3611, i64 3, i64 0 }, { ptr, i64, i64 } %t431) + store { ptr, i64, i64 } %t431, ptr %a433 + call void @finch_str_drop(ptr %a433) + store { ptr, i64, i64 } { ptr @.str.3610, i64 12, i64 0 }, ptr %a435 + store { ptr, i64, i64 } %t432, ptr %a436 + call void @finch_str_concat(ptr %a434, ptr %a435, ptr %a436) + store { ptr, i64, i64 } %t432, ptr %a437 + call void @finch_str_drop(ptr %a437) + %t438 = load { ptr, i64, i64 }, ptr %a434 + store { ptr, i64, i64 } %t438, ptr %a440 + store { ptr, i64, i64 } { ptr @.str.3612, i64 3, i64 0 }, ptr %a441 + call void @finch_str_concat(ptr %a439, ptr %a440, ptr %a441) + store { ptr, i64, i64 } %t438, ptr %a442 + call void @finch_str_drop(ptr %a442) + %t443 = load { ptr, i64, i64 }, ptr %a439 + %t444 = call { ptr, i64, i64 } @finch.gen.op(ptr %t426, { ptr, i64, i64 } %t443) + store { ptr, i64, i64 } %t443, ptr %a445 + call void @finch_str_drop(ptr %a445) + %t446 = load { ptr, i64, i64 }, ptr %a421 + %t447 = load { ptr, i64, i64 }, ptr %a424 + call void @finch.gen.condBr(ptr %t425, { ptr, i64, i64 } %t444, { ptr, i64, i64 } %t446, { ptr, i64, i64 } %t447) + store { ptr, i64, i64 } %t444, ptr %a448 + call void @finch_str_drop(ptr %a448) + %t449 = load ptr, ptr %a1 + %t450 = load { ptr, i64, i64 }, ptr %a421 + call void @finch.gen.label(ptr %t449, { ptr, i64, i64 } %t450) + %t451 = load ptr, ptr %a1 + %t452 = load ptr, ptr %a1 + %t453 = load { ptr, i64, i64 }, ptr %a418 + %t454 = load %S.ast.Type, ptr %a4 + %t455 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t452, { ptr, i64, i64 } %t453, %S.ast.Type %t454, i64 1) + %t456 = load %S.ast.Type, ptr %a21 + call void @finch.gen.dropAt(ptr %t451, { ptr, i64, i64 } %t455, %S.ast.Type %t456) + store { ptr, i64, i64 } %t455, ptr %a457 + call void @finch_str_drop(ptr %a457) + %t458 = load ptr, ptr %a1 + %t459 = load ptr, ptr %a1 + %t460 = load { ptr, i64, i64 }, ptr %a418 + %t461 = load %S.ast.Type, ptr %a4 + %t462 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t459, { ptr, i64, i64 } %t460, %S.ast.Type %t461, i64 2) + %t463 = load %S.ast.Type, ptr %a32 + call void @finch.gen.dropAt(ptr %t458, { ptr, i64, i64 } %t462, %S.ast.Type %t463) + store { ptr, i64, i64 } %t462, ptr %a464 + call void @finch_str_drop(ptr %a464) + %t465 = load ptr, ptr %a1 + %t466 = load { ptr, i64, i64 }, ptr %a424 + call void @finch.gen.br(ptr %t465, { ptr, i64, i64 } %t466) + %t467 = load ptr, ptr %a1 + %t468 = load { ptr, i64, i64 }, ptr %a424 + call void @finch.gen.label(ptr %t467, { ptr, i64, i64 } %t468) %t469 = load ptr, ptr %a1 - %t470 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t469, { ptr, i64, i64 } { ptr @.str.3479, 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.3480, i64 10, i64 0 }) - store { ptr, i64, i64 } %t473, ptr %a474 - %t475 = load ptr, ptr %a1 - %t476 = load ptr, ptr %a1 - %t477 = load ptr, ptr %a1 - %t478 = load ptr, ptr %a1 - %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.3482, i64 3, i64 0 }, { ptr, i64, i64 } %t481) - store { ptr, i64, i64 } { ptr @.str.3481, 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.3483, 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) - %t492 = load { ptr, i64, i64 }, ptr %a471 - %t493 = load { ptr, i64, i64 }, ptr %a474 - call void @finch.gen.condBr(ptr %t475, { ptr, i64, i64 } %t491, { ptr, i64, i64 } %t492, { ptr, i64, i64 } %t493) - %t494 = load ptr, ptr %a1 - %t495 = load { ptr, i64, i64 }, ptr %a471 - call void @finch.gen.label(ptr %t494, { ptr, i64, i64 } %t495) + %t470 = load { ptr, i64, i64 }, ptr %a407 + call void @finch.gen.loopEnd(ptr %t469, { ptr, i64, i64 } %t470) + call void @finch_str_drop(ptr %a424) + call void @finch_str_drop(ptr %a421) + call void @finch_str_drop(ptr %a418) + call void @finch.drop.arr_str(ptr %a407) + call void @finch_str_drop(ptr %a403) + br label %endif5624 +endif5624: + %t471 = load ptr, ptr %a1 + %t472 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } { ptr @.str.3613, i64 31, i64 0 }, ptr %a474 + store { ptr, i64, i64 } %t472, ptr %a475 + 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.3614, i64 1, i64 0 }, ptr %a479 + call void @finch_str_concat(ptr %a477, ptr %a478, ptr %a479) + store { ptr, i64, i64 } %t476, ptr %a480 + call void @finch_str_drop(ptr %a480) + %t481 = load { ptr, i64, i64 }, ptr %a477 + call void @finch.gen.emit(ptr %t471, { ptr, i64, i64 } %t481) + store { ptr, i64, i64 } %t481, ptr %a482 + call void @finch_str_drop(ptr %a482) + %t483 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3615, i64 4, i64 0 }) + %t484 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t483, 1 + call void @finch.drop.S_ast_Type(ptr %a32) + call void @finch.drop.S_ast_Type(ptr %a21) + call void @finch_str_drop(ptr %a10) + ret %S.gen.Val %t484 +endif5617: + %t485 = load { ptr, i64, i64 }, ptr %a10 + store { ptr, i64, i64 } %t485, ptr %a486 + store { ptr, i64, i64 } { ptr @.str.3616, i64 4, i64 0 }, ptr %a487 + %t488 = call i32 @finch_str_eq(ptr %a486, ptr %a487) + %t489 = icmp ne i32 %t488, 0 + br label %logic.from5627 +logic.from5627: + br i1 %t489, label %logic.end5629, label %logic.rhs5628 +logic.rhs5628: + %t490 = load { ptr, i64, i64 }, ptr %a10 + store { ptr, i64, i64 } %t490, ptr %a491 + store { ptr, i64, i64 } { ptr @.str.3617, i64 6, i64 0 }, ptr %a492 + %t493 = call i32 @finch_str_eq(ptr %a491, ptr %a492) + %t494 = icmp ne i32 %t493, 0 + br label %logic.rend5630 +logic.rend5630: + br label %logic.end5629 +logic.end5629: + %t495 = phi i1 [ true, %logic.from5627 ], [ %t494, %logic.rend5630 ] + br i1 %t495, label %then5631, label %endif5633 +then5631: %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.3484, 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.3485, 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.3486, 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 - store { ptr, i64, i64 } %t512, ptr %a515 - store { ptr, i64, i64 } %t513, ptr %a516 - 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.3487, 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 - store { ptr, i64, i64 } %t521, 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 - %t527 = call { ptr, i64, i64 } @finch.gen.op(ptr %t501, { ptr, i64, i64 } %t526) - %t528 = load ptr, ptr %a1 - %t529 = load { ptr, i64, i64 }, ptr %a468 - %t530 = load %S.ast.Type, ptr %a4 - %t531 = load i64, ptr %a342 - %t532 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t528, { ptr, i64, i64 } %t529, %S.ast.Type %t530, i64 %t531) - %t533 = load %S.ast.Type, ptr %a347 - call void @finch.gen.copyAt(ptr %t500, { ptr, i64, i64 } %t527, { ptr, i64, i64 } %t532, %S.ast.Type %t533) - %t534 = load ptr, ptr %a1 - %t535 = load ptr, ptr %a1 - %t536 = load { ptr, i64, i64 }, ptr %a499 - store { ptr, i64, i64 } { ptr @.str.3489, 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.3490, 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.3488, 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) - %t549 = load ptr, ptr %a1 - %t550 = load { ptr, i64, i64 }, ptr %a474 - call void @finch.gen.label(ptr %t549, { ptr, i64, i64 } %t550) - %t551 = load ptr, ptr %a1 - %t552 = load { ptr, i64, i64 }, ptr %a457 - 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.3491, 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 - call void @finch.copy.S_ast_Type(ptr %a559, ptr %a558) - %t560 = load %S.ast.Type, ptr %a559 - %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 -endif5275: - %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.3492, i64 21, i64 0 }, ptr %a567 + %t497 = load %S.ast.Node, ptr %a2 + %t498 = load { ptr, i64, i64 }, ptr %a10 + call void @finch.gen.checkArgs(ptr %t496, %S.ast.Node %t497, i64 1, i64 0, { ptr, i64, i64 } %t498) + store i64 1, ptr %a499 + %t500 = load %S.ast.Type, ptr %a21 + store %S.ast.Type %t500, ptr %a501 + call void @finch.copy.S_ast_Type(ptr %a502, ptr %a501) + %t503 = load %S.ast.Type, ptr %a502 + store %S.ast.Type %t503, ptr %a504 + %t505 = load { ptr, i64, i64 }, ptr %a10 + store { ptr, i64, i64 } %t505, ptr %a506 + store { ptr, i64, i64 } { ptr @.str.3618, i64 6, i64 0 }, ptr %a507 + %t508 = call i32 @finch_str_eq(ptr %a506, ptr %a507) + %t509 = icmp ne i32 %t508, 0 + br i1 %t509, label %then5634, label %endif5636 +then5634: + store i64 2, ptr %a499 + %t510 = load %S.ast.Type, ptr %a32 + store %S.ast.Type %t510, ptr %a511 + call void @finch.copy.S_ast_Type(ptr %a512, ptr %a511) + %t513 = load %S.ast.Type, ptr %a512 + %t514 = load %S.ast.Type, ptr %a504 + store %S.ast.Type %t513, ptr %a504 + store %S.ast.Type %t514, ptr %a515 + call void @finch.drop.S_ast_Type(ptr %a515) + br label %endif5636 +endif5636: + %t516 = load %S.ast.Type, ptr %a504 + %t517 = call %S.ast.Type @finch.ast.arrayOf(%S.ast.Type %t516) + store %S.ast.Type %t517, ptr %a518 + %t519 = load ptr, ptr %a1 + %t520 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t519, { ptr, i64, i64 } { ptr @.str.3619, i64 17, i64 0 }) + store { ptr, i64, i64 } %t520, ptr %a521 + %t522 = load ptr, ptr %a1 + %t523 = load { ptr, i64, i64 }, ptr %a521 + call void @finch.gen.store(ptr %t522, { ptr, i64, i64 } { ptr @.str.3620, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.3621, i64 15, i64 0 }, { ptr, i64, i64 } %t523) + %t524 = load ptr, ptr %a1 + %t525 = load ptr, ptr %a1 + %t526 = load ptr, ptr %a1 + %t527 = load %S.ast.Type, ptr %a4 + %t528 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t526, %S.ast.Type %t527) + store { ptr, i64, i64 } { ptr @.str.3623, i64 23, i64 0 }, ptr %a530 + store { ptr, i64, i64 } %t528, ptr %a531 + call void @finch_str_concat(ptr %a529, ptr %a530, ptr %a531) + store { ptr, i64, i64 } %t528, ptr %a532 + call void @finch_str_drop(ptr %a532) + %t533 = load { ptr, i64, i64 }, ptr %a529 + store { ptr, i64, i64 } %t533, ptr %a535 + store { ptr, i64, i64 } { ptr @.str.3624, i64 6, i64 0 }, ptr %a536 + call void @finch_str_concat(ptr %a534, ptr %a535, ptr %a536) + store { ptr, i64, i64 } %t533, ptr %a537 + call void @finch_str_drop(ptr %a537) + %t538 = load { ptr, i64, i64 }, ptr %a534 + %t539 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t538, ptr %a541 + store { ptr, i64, i64 } %t539, ptr %a542 + call void @finch_str_concat(ptr %a540, ptr %a541, ptr %a542) + store { ptr, i64, i64 } %t538, ptr %a543 + call void @finch_str_drop(ptr %a543) + %t544 = load { ptr, i64, i64 }, ptr %a540 + store { ptr, i64, i64 } %t544, ptr %a546 + store { ptr, i64, i64 } { ptr @.str.3625, i64 14, i64 0 }, ptr %a547 + call void @finch_str_concat(ptr %a545, ptr %a546, ptr %a547) + store { ptr, i64, i64 } %t544, ptr %a548 + call void @finch_str_drop(ptr %a548) + %t549 = load { ptr, i64, i64 }, ptr %a545 + %t550 = call { ptr, i64, i64 } @finch.gen.op(ptr %t525, { ptr, i64, i64 } %t549) + store { ptr, i64, i64 } %t549, ptr %a551 + call void @finch_str_drop(ptr %a551) + %t552 = call { ptr, i64, i64 } @finch.gen.load(ptr %t524, { ptr, i64, i64 } { ptr @.str.3622, i64 3, i64 0 }, { ptr, i64, i64 } %t550) + store { ptr, i64, i64 } %t550, ptr %a553 + call void @finch_str_drop(ptr %a553) + store { ptr, i64, i64 } %t552, ptr %a554 + %t555 = load ptr, ptr %a1 + %t556 = load { ptr, i64, i64 }, ptr %a521 + store { ptr, i64, i64 } { ptr @.str.3626, i64 30, i64 0 }, ptr %a558 + store { ptr, i64, i64 } %t556, ptr %a559 + call void @finch_str_concat(ptr %a557, ptr %a558, ptr %a559) + %t560 = load { ptr, i64, i64 }, ptr %a557 + store { ptr, i64, i64 } %t560, ptr %a562 + store { ptr, i64, i64 } { ptr @.str.3627, i64 6, i64 0 }, ptr %a563 + call void @finch_str_concat(ptr %a561, ptr %a562, ptr %a563) + store { ptr, i64, i64 } %t560, ptr %a564 + call void @finch_str_drop(ptr %a564) + %t565 = load { ptr, i64, i64 }, ptr %a561 + %t566 = load { ptr, i64, i64 }, ptr %a554 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.3493, 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) + store { ptr, i64, i64 } %t566, ptr %a569 + call void @finch_str_concat(ptr %a567, ptr %a568, ptr %a569) + store { ptr, i64, i64 } %t565, ptr %a570 + call void @finch_str_drop(ptr %a570) + %t571 = load { ptr, i64, i64 }, ptr %a567 + store { ptr, i64, i64 } %t571, ptr %a573 + store { ptr, i64, i64 } { ptr @.str.3628, i64 6, i64 0 }, ptr %a574 + call void @finch_str_concat(ptr %a572, ptr %a573, ptr %a574) + store { ptr, i64, i64 } %t571, ptr %a575 + call void @finch_str_drop(ptr %a575) + %t576 = load { ptr, i64, i64 }, ptr %a572 + %t577 = load ptr, ptr %a1 + %t578 = load %S.ast.Type, ptr %a504 + %t579 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t577, %S.ast.Type %t578) + store { ptr, i64, i64 } %t576, ptr %a581 + store { ptr, i64, i64 } %t579, ptr %a582 + call void @finch_str_concat(ptr %a580, ptr %a581, ptr %a582) + store { ptr, i64, i64 } %t576, ptr %a583 + call void @finch_str_drop(ptr %a583) + store { ptr, i64, i64 } %t579, ptr %a584 + call void @finch_str_drop(ptr %a584) + %t585 = load { ptr, i64, i64 }, ptr %a580 + store { ptr, i64, i64 } %t585, ptr %a587 + store { ptr, i64, i64 } { ptr @.str.3629, i64 1, i64 0 }, ptr %a588 + call void @finch_str_concat(ptr %a586, ptr %a587, ptr %a588) + store { ptr, i64, i64 } %t585, ptr %a589 + call void @finch_str_drop(ptr %a589) + %t590 = load { ptr, i64, i64 }, ptr %a586 + call void @finch.gen.emit(ptr %t555, { ptr, i64, i64 } %t590) + store { ptr, i64, i64 } %t590, ptr %a591 + call void @finch_str_drop(ptr %a591) + %t592 = load ptr, ptr %a1 + %t593 = load { ptr, i64, i64 }, ptr %a521 + %t594 = call { ptr, i64, i64 } @finch.gen.load(ptr %t592, { ptr, i64, i64 } { ptr @.str.3630, i64 3, i64 0 }, { ptr, i64, i64 } %t593) + store { ptr, i64, i64 } %t594, ptr %a595 + %t596 = load ptr, ptr %a1 + %t597 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t596, { ptr, i64, i64 } { ptr @.str.3631, i64 3, i64 0 }) + store { ptr, i64, i64 } %t597, ptr %a598 + %t599 = load ptr, ptr %a1 + %t600 = load { ptr, i64, i64 }, ptr %a598 + call void @finch.gen.store(ptr %t599, { ptr, i64, i64 } { ptr @.str.3632, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.3633, i64 1, i64 0 }, { ptr, i64, i64 } %t600) + %t601 = load ptr, ptr %a1 + %t602 = load ptr, ptr %a1 + %t603 = load ptr, ptr %a1 + %t604 = load %S.ast.Type, ptr %a4 + %t605 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t603, %S.ast.Type %t604) + store { ptr, i64, i64 } { ptr @.str.3635, i64 23, i64 0 }, ptr %a607 + store { ptr, i64, i64 } %t605, ptr %a608 + call void @finch_str_concat(ptr %a606, ptr %a607, ptr %a608) + store { ptr, i64, i64 } %t605, ptr %a609 + call void @finch_str_drop(ptr %a609) + %t610 = load { ptr, i64, i64 }, ptr %a606 + store { ptr, i64, i64 } %t610, ptr %a612 + store { ptr, i64, i64 } { ptr @.str.3636, i64 6, i64 0 }, ptr %a613 + call void @finch_str_concat(ptr %a611, ptr %a612, ptr %a613) + store { ptr, i64, i64 } %t610, ptr %a614 + call void @finch_str_drop(ptr %a614) + %t615 = load { ptr, i64, i64 }, ptr %a611 + %t616 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t615, ptr %a618 + store { ptr, i64, i64 } %t616, ptr %a619 + call void @finch_str_concat(ptr %a617, ptr %a618, ptr %a619) + store { ptr, i64, i64 } %t615, ptr %a620 + call void @finch_str_drop(ptr %a620) + %t621 = load { ptr, i64, i64 }, ptr %a617 + store { ptr, i64, i64 } %t621, ptr %a623 + store { ptr, i64, i64 } { ptr @.str.3637, i64 14, i64 0 }, ptr %a624 + call void @finch_str_concat(ptr %a622, ptr %a623, ptr %a624) + store { ptr, i64, i64 } %t621, ptr %a625 + call void @finch_str_drop(ptr %a625) + %t626 = load { ptr, i64, i64 }, ptr %a622 + %t627 = call { ptr, i64, i64 } @finch.gen.op(ptr %t602, { ptr, i64, i64 } %t626) + store { ptr, i64, i64 } %t626, ptr %a628 + call void @finch_str_drop(ptr %a628) + %t629 = call { ptr, i64, i64 } @finch.gen.load(ptr %t601, { ptr, i64, i64 } { ptr @.str.3634, i64 3, i64 0 }, { ptr, i64, i64 } %t627) + store { ptr, i64, i64 } %t627, ptr %a630 + call void @finch_str_drop(ptr %a630) + store { ptr, i64, i64 } %t629, ptr %a631 + %t632 = load ptr, ptr %a1 + %t633 = load { ptr, i64, i64 }, ptr %a631 + %t634 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t632, { ptr, i64, i64 } %t633) + store { ptr, i64, i64 } %t634, ptr %a635 + %t636 = load ptr, ptr %a1 + %t637 = load { ptr, i64, i64 }, ptr %a3 + %t638 = load %S.ast.Type, ptr %a4 + %t639 = load { ptr, i64, i64 }, ptr %a635 + %t640 = extractvalue { ptr, i64, i64 } %t639, 1 + %t641 = icmp uge i64 3, %t640 + br i1 %t641, label %range5637, label %inrange5638 +range5637: + call void @finch_panic_index(ptr @.str.3638, i64 2926, i64 3, i64 %t640) + unreachable +inrange5638: + %t642 = extractvalue { ptr, i64, i64 } %t639, 0 + %t643 = getelementptr inbounds { ptr, i64, i64 }, ptr %t642, i64 3 + %t644 = load { ptr, i64, i64 }, ptr %t643 + %t645 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t636, { ptr, i64, i64 } %t637, %S.ast.Type %t638, { ptr, i64, i64 } %t644) + store { ptr, i64, i64 } %t645, ptr %a646 + %t647 = load ptr, ptr %a1 + %t648 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t647, { ptr, i64, i64 } { ptr @.str.3639, i64 10, i64 0 }) + store { ptr, i64, i64 } %t648, ptr %a649 + %t650 = load ptr, ptr %a1 + %t651 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t650, { ptr, i64, i64 } { ptr @.str.3640, i64 10, i64 0 }) + store { ptr, i64, i64 } %t651, ptr %a652 + %t653 = load ptr, ptr %a1 + %t654 = load ptr, ptr %a1 + %t655 = load ptr, ptr %a1 + %t656 = load ptr, ptr %a1 + %t657 = load { ptr, i64, i64 }, ptr %a646 + %t658 = load %S.ast.Type, ptr %a4 + %t659 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t656, { ptr, i64, i64 } %t657, %S.ast.Type %t658, i64 0) + %t660 = call { ptr, i64, i64 } @finch.gen.load(ptr %t655, { ptr, i64, i64 } { ptr @.str.3642, i64 3, i64 0 }, { ptr, i64, i64 } %t659) + store { ptr, i64, i64 } %t659, ptr %a661 + call void @finch_str_drop(ptr %a661) + store { ptr, i64, i64 } { ptr @.str.3641, i64 12, i64 0 }, ptr %a663 + store { ptr, i64, i64 } %t660, ptr %a664 + call void @finch_str_concat(ptr %a662, ptr %a663, ptr %a664) + store { ptr, i64, i64 } %t660, ptr %a665 + call void @finch_str_drop(ptr %a665) + %t666 = load { ptr, i64, i64 }, ptr %a662 + store { ptr, i64, i64 } %t666, ptr %a668 + store { ptr, i64, i64 } { ptr @.str.3643, i64 3, i64 0 }, ptr %a669 + call void @finch_str_concat(ptr %a667, ptr %a668, ptr %a669) + store { ptr, i64, i64 } %t666, ptr %a670 + call void @finch_str_drop(ptr %a670) + %t671 = load { ptr, i64, i64 }, ptr %a667 + %t672 = call { ptr, i64, i64 } @finch.gen.op(ptr %t654, { ptr, i64, i64 } %t671) + store { ptr, i64, i64 } %t671, ptr %a673 + call void @finch_str_drop(ptr %a673) + %t674 = load { ptr, i64, i64 }, ptr %a649 + %t675 = load { ptr, i64, i64 }, ptr %a652 + call void @finch.gen.condBr(ptr %t653, { ptr, i64, i64 } %t672, { ptr, i64, i64 } %t674, { ptr, i64, i64 } %t675) + store { ptr, i64, i64 } %t672, ptr %a676 + call void @finch_str_drop(ptr %a676) + %t677 = load ptr, ptr %a1 + %t678 = load { ptr, i64, i64 }, ptr %a649 + call void @finch.gen.label(ptr %t677, { ptr, i64, i64 } %t678) + %t679 = load ptr, ptr %a1 + %t680 = load { ptr, i64, i64 }, ptr %a598 + %t681 = call { ptr, i64, i64 } @finch.gen.load(ptr %t679, { ptr, i64, i64 } { ptr @.str.3644, i64 3, i64 0 }, { ptr, i64, i64 } %t680) + store { ptr, i64, i64 } %t681, ptr %a682 + %t683 = load ptr, ptr %a1 + %t684 = load ptr, ptr %a1 + %t685 = load ptr, ptr %a1 + %t686 = load %S.ast.Type, ptr %a504 + %t687 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t685, %S.ast.Type %t686) + store { ptr, i64, i64 } { ptr @.str.3645, i64 23, i64 0 }, ptr %a689 + store { ptr, i64, i64 } %t687, ptr %a690 + call void @finch_str_concat(ptr %a688, ptr %a689, ptr %a690) + store { ptr, i64, i64 } %t687, ptr %a691 + call void @finch_str_drop(ptr %a691) + %t692 = load { ptr, i64, i64 }, ptr %a688 + store { ptr, i64, i64 } %t692, ptr %a694 + store { ptr, i64, i64 } { ptr @.str.3646, i64 6, i64 0 }, ptr %a695 + call void @finch_str_concat(ptr %a693, ptr %a694, ptr %a695) + store { ptr, i64, i64 } %t692, ptr %a696 + call void @finch_str_drop(ptr %a696) + %t697 = load { ptr, i64, i64 }, ptr %a693 + %t698 = load { ptr, i64, i64 }, ptr %a595 + 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) + store { ptr, i64, i64 } %t697, ptr %a702 + call void @finch_str_drop(ptr %a702) + %t703 = load { ptr, i64, i64 }, ptr %a699 + store { ptr, i64, i64 } %t703, ptr %a705 + store { ptr, i64, i64 } { ptr @.str.3647, i64 6, i64 0 }, ptr %a706 + call void @finch_str_concat(ptr %a704, ptr %a705, ptr %a706) + store { ptr, i64, i64 } %t703, ptr %a707 + call void @finch_str_drop(ptr %a707) + %t708 = load { ptr, i64, i64 }, ptr %a704 + %t709 = load { ptr, i64, i64 }, ptr %a682 + store { ptr, i64, i64 } %t708, ptr %a711 + store { ptr, i64, i64 } %t709, ptr %a712 + call void @finch_str_concat(ptr %a710, ptr %a711, ptr %a712) + store { ptr, i64, i64 } %t708, ptr %a713 + call void @finch_str_drop(ptr %a713) + %t714 = load { ptr, i64, i64 }, ptr %a710 + %t715 = call { ptr, i64, i64 } @finch.gen.op(ptr %t684, { ptr, i64, i64 } %t714) + store { ptr, i64, i64 } %t714, ptr %a716 + call void @finch_str_drop(ptr %a716) + %t717 = load ptr, ptr %a1 + %t718 = load { ptr, i64, i64 }, ptr %a646 + %t719 = load %S.ast.Type, ptr %a4 + %t720 = load i64, ptr %a499 + %t721 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t717, { ptr, i64, i64 } %t718, %S.ast.Type %t719, i64 %t720) + %t722 = load %S.ast.Type, ptr %a504 + call void @finch.gen.copyAt(ptr %t683, { ptr, i64, i64 } %t715, { ptr, i64, i64 } %t721, %S.ast.Type %t722) + store { ptr, i64, i64 } %t715, ptr %a723 + call void @finch_str_drop(ptr %a723) + store { ptr, i64, i64 } %t721, ptr %a724 + call void @finch_str_drop(ptr %a724) + %t725 = load ptr, ptr %a1 + %t726 = load ptr, ptr %a1 + %t727 = load { ptr, i64, i64 }, ptr %a682 + store { ptr, i64, i64 } { ptr @.str.3649, i64 8, i64 0 }, ptr %a729 + store { ptr, i64, i64 } %t727, ptr %a730 + call void @finch_str_concat(ptr %a728, ptr %a729, ptr %a730) + %t731 = load { ptr, i64, i64 }, ptr %a728 + store { ptr, i64, i64 } %t731, ptr %a733 + store { ptr, i64, i64 } { ptr @.str.3650, i64 3, i64 0 }, ptr %a734 + call void @finch_str_concat(ptr %a732, ptr %a733, ptr %a734) + store { ptr, i64, i64 } %t731, ptr %a735 + call void @finch_str_drop(ptr %a735) + %t736 = load { ptr, i64, i64 }, ptr %a732 + %t737 = call { ptr, i64, i64 } @finch.gen.op(ptr %t726, { ptr, i64, i64 } %t736) + store { ptr, i64, i64 } %t736, ptr %a738 + call void @finch_str_drop(ptr %a738) + %t739 = load { ptr, i64, i64 }, ptr %a598 + call void @finch.gen.store(ptr %t725, { ptr, i64, i64 } { ptr @.str.3648, i64 3, i64 0 }, { ptr, i64, i64 } %t737, { ptr, i64, i64 } %t739) + store { ptr, i64, i64 } %t737, ptr %a740 + call void @finch_str_drop(ptr %a740) + %t741 = load ptr, ptr %a1 + %t742 = load { ptr, i64, i64 }, ptr %a652 + call void @finch.gen.br(ptr %t741, { ptr, i64, i64 } %t742) + %t743 = load ptr, ptr %a1 + %t744 = load { ptr, i64, i64 }, ptr %a652 + call void @finch.gen.label(ptr %t743, { ptr, i64, i64 } %t744) + %t745 = load ptr, ptr %a1 + %t746 = load { ptr, i64, i64 }, ptr %a635 + call void @finch.gen.loopEnd(ptr %t745, { ptr, i64, i64 } %t746) + %t747 = load ptr, ptr %a1 + %t748 = load { ptr, i64, i64 }, ptr %a521 + %t749 = call { ptr, i64, i64 } @finch.gen.load(ptr %t747, { ptr, i64, i64 } { ptr @.str.3651, i64 17, i64 0 }, { ptr, i64, i64 } %t748) + %t750 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t749, 0 + %t751 = load %S.ast.Type, ptr %a518 + store %S.ast.Type %t751, ptr %a752 + call void @finch.copy.S_ast_Type(ptr %a753, ptr %a752) + %t754 = load %S.ast.Type, ptr %a753 + %t755 = insertvalue %S.gen.Val %t750, %S.ast.Type %t754, 1 + %t756 = insertvalue %S.gen.Val %t755, i1 true, 2 + call void @finch_str_drop(ptr %a682) + call void @finch_str_drop(ptr %a652) + call void @finch_str_drop(ptr %a649) + call void @finch_str_drop(ptr %a646) + call void @finch.drop.arr_str(ptr %a635) + call void @finch_str_drop(ptr %a631) + call void @finch_str_drop(ptr %a598) + call void @finch_str_drop(ptr %a595) + call void @finch_str_drop(ptr %a554) + call void @finch_str_drop(ptr %a521) + call void @finch.drop.S_ast_Type(ptr %a518) + call void @finch.drop.S_ast_Type(ptr %a504) + call void @finch.drop.S_ast_Type(ptr %a32) + call void @finch.drop.S_ast_Type(ptr %a21) + call void @finch_str_drop(ptr %a10) + ret %S.gen.Val %t756 +endif5633: + %t757 = load ptr, ptr %a1 + %t758 = load %S.ast.Node, ptr %a2 + %t759 = load { ptr, i64, i64 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.3652, i64 21, i64 0 }, ptr %a761 + store { ptr, i64, i64 } %t759, ptr %a762 + call void @finch_str_concat(ptr %a760, ptr %a761, ptr %a762) + %t763 = load { ptr, i64, i64 }, ptr %a760 + store { ptr, i64, i64 } %t763, ptr %a765 + store { ptr, i64, i64 } { ptr @.str.3653, i64 49, i64 0 }, ptr %a766 + call void @finch_str_concat(ptr %a764, ptr %a765, ptr %a766) + store { ptr, i64, i64 } %t763, ptr %a767 + call void @finch_str_drop(ptr %a767) + %t768 = load { ptr, i64, i64 }, ptr %a764 + call void @finch.gen.fail(ptr %t757, %S.ast.Node %t758, { ptr, i64, i64 } %t768) + store { ptr, i64, i64 } %t768, ptr %a769 + call void @finch_str_drop(ptr %a769) + call void @finch.drop.S_ast_Type(ptr %a32) + call void @finch.drop.S_ast_Type(ptr %a21) + call void @finch_str_drop(ptr %a10) ret %S.gen.Val zeroinitializer } @@ -48796,71 +57899,79 @@ entry: %a71 = alloca { ptr, i64, i64 }, align 16 %a72 = alloca { ptr, i64, i64 }, align 16 %a73 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 + %a74 = 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 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = 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 %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 %a94 = alloca { ptr, i64, i64 }, align 16 %a95 = alloca { ptr, i64, i64 }, align 16 %a96 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca %S.ast.Type, align 16 - %a111 = alloca %S.ast.Type, align 16 + %a97 = 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 + %a102 = alloca { ptr, i64, i64 }, align 16 + %a104 = alloca { ptr, i64, i64 }, align 16 + %a113 = alloca { ptr, i64, i64 }, align 16 + %a117 = alloca %S.ast.Type, align 16 + %a118 = alloca %S.ast.Type, align 16 + %a129 = alloca %S.gen.Val, align 16 store ptr %p0, ptr %a1 store %S.ast.Node %p1, ptr %a2 store %S.ast.Type %p2, ptr %a3 %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.3494, i64 4, i64 0 }, ptr %a7 + store { ptr, i64, i64 } { ptr @.str.3654, 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.from5281 -logic.from5281: - br i1 %t9, label %logic.rhs5282, label %logic.end5283 -logic.rhs5282: + br label %logic.from5639 +logic.from5639: + br i1 %t9, label %logic.rhs5640, label %logic.end5641 +logic.rhs5640: %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.3495, i64 3, i64 0 }, ptr %a13 + store { ptr, i64, i64 } { ptr @.str.3655, 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.rend5284 -logic.rend5284: - br label %logic.end5283 -logic.end5283: - %t16 = phi i1 [ false, %logic.from5281 ], [ %t15, %logic.rend5284 ] - br label %logic.from5285 -logic.from5285: - br i1 %t16, label %logic.rhs5286, label %logic.end5287 -logic.rhs5286: + br label %logic.rend5642 +logic.rend5642: + br label %logic.end5641 +logic.end5641: + %t16 = phi i1 [ false, %logic.from5639 ], [ %t15, %logic.rend5642 ] + br label %logic.from5643 +logic.from5643: + br i1 %t16, label %logic.rhs5644, label %logic.end5645 +logic.rhs5644: %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.rend5288 -logic.rend5288: - br label %logic.end5287 -logic.end5287: - %t22 = phi i1 [ false, %logic.from5285 ], [ %t21, %logic.rend5288 ] - br i1 %t22, label %then5289, label %endif5291 -then5289: + br label %logic.rend5646 +logic.rend5646: + br label %logic.end5645 +logic.end5645: + %t22 = phi i1 [ false, %logic.from5643 ], [ %t21, %logic.rend5646 ] + br i1 %t22, label %then5647, label %endif5649 +then5647: %t23 = load ptr, ptr %a1 %t24 = icmp eq ptr %t23, null - br i1 %t24, label %panic5292, label %ok5293 -panic5292: - call void @finch_panic(ptr @.str.3496, i64 2701, ptr @.str.3497) + br i1 %t24, label %panic5650, label %ok5651 +panic5650: + call void @finch_panic(ptr @.str.3656, i64 2948, ptr @.str.3657) unreachable -ok5293: - %t25 = getelementptr inbounds %S.gen.Gen, ptr %t23, i32 0, i32 20 +ok5651: + %t25 = getelementptr inbounds %S.gen.Gen, ptr %t23, i32 0, i32 21 %t26 = load ptr, ptr %a1 %t27 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 3 %t28 = load { ptr, i64, i64 }, ptr %t27 @@ -48870,11 +57981,11 @@ ok5293: %t32 = load { ptr, i64, i64 }, ptr %t25 %t33 = extractvalue { ptr, i64, i64 } %t32, 1 %t34 = icmp uge i64 %t31, %t33 - br i1 %t34, label %range5294, label %inrange5295 -range5294: - call void @finch_panic_index(ptr @.str.3498, i64 2701, i64 %t31, i64 %t33) + br i1 %t34, label %range5652, label %inrange5653 +range5652: + call void @finch_panic_index(ptr @.str.3658, i64 2948, i64 %t31, i64 %t33) unreachable -inrange5295: +inrange5653: %t35 = extractvalue { ptr, i64, i64 } %t32, 0 %t36 = getelementptr inbounds %S.gen.EnumDef, ptr %t35, i64 %t31 %t37 = load %S.gen.EnumDef, ptr %t36 @@ -48890,103 +58001,120 @@ inrange5295: %t47 = load i64, ptr %t43 %t48 = load ptr, ptr %t42 store i64 0, ptr %a49 - br label %find.cond5296 -find.cond5296: + br label %find.cond5654 +find.cond5654: %t50 = load i64, ptr %a49 %t51 = icmp slt i64 %t50, %t47 - br i1 %t51, label %find.body5297, label %find.end5300 -find.body5297: + br i1 %t51, label %find.body5655, label %find.end5658 +find.body5655: %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.hit5298, label %find.next5299 -find.hit5298: + br i1 %t57, label %find.hit5656, label %find.next5657 +find.hit5656: store i64 %t50, ptr %a46 - br label %find.end5300 -find.next5299: + br label %find.end5658 +find.next5657: %t58 = add i64 %t50, 1 store i64 %t58, ptr %a49 - br label %find.cond5296 -find.end5300: + br label %find.cond5654 +find.end5658: %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 %then5301, label %endif5303 -then5301: + br i1 %t62, label %then5659, label %endif5661 +then5659: %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.3499, i64 1, i64 0 }, ptr %a68 + store { ptr, i64, i64 } { ptr @.str.3659, 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.3500, i64 22, i64 0 }, ptr %a73 + store { ptr, i64, i64 } { ptr @.str.3660, 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 - %t76 = load { ptr, i64, i64 }, ptr %t75 - store { ptr, i64, i64 } %t74, 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.3501, 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.3502, 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 - 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.3503, 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 %endif5303 -endif5303: - %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 %range5304, label %inrange5305 -range5304: - call void @finch_panic_index(ptr @.str.3504, i64 2706, i64 %t99, i64 %t101) + store { ptr, i64, i64 } %t70, ptr %a74 + call void @finch_str_drop(ptr %a74) + %t75 = load { ptr, i64, i64 }, ptr %a71 + %t76 = getelementptr inbounds %S.gen.EnumDef, ptr %a41, i32 0, i32 1 + %t77 = load { ptr, i64, i64 }, ptr %t76 + store { ptr, i64, i64 } %t75, ptr %a79 + store { ptr, i64, i64 } %t77, ptr %a80 + call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) + store { ptr, i64, i64 } %t75, ptr %a81 + call void @finch_str_drop(ptr %a81) + %t82 = load { ptr, i64, i64 }, ptr %a78 + store { ptr, i64, i64 } %t82, ptr %a84 + store { ptr, i64, i64 } { ptr @.str.3661, i64 10, i64 0 }, ptr %a85 + call void @finch_str_concat(ptr %a83, ptr %a84, ptr %a85) + store { ptr, i64, i64 } %t82, ptr %a86 + call void @finch_str_drop(ptr %a86) + %t87 = load { ptr, i64, i64 }, ptr %a83 + %t88 = getelementptr inbounds %S.gen.EnumDef, ptr %a41, i32 0, i32 2 + %t89 = getelementptr inbounds { ptr, i64, i64 }, ptr %t88, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.3662, i64 2, i64 0 }, ptr %a90 + call void @finch_str_join(ptr %a91, ptr %t88, ptr %a90) + %t92 = load { ptr, i64, i64 }, ptr %a91 + store { ptr, i64, i64 } %t87, ptr %a94 + store { ptr, i64, i64 } %t92, ptr %a95 + call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) + store { ptr, i64, i64 } %t87, ptr %a96 + call void @finch_str_drop(ptr %a96) + store { ptr, i64, i64 } %t92, ptr %a97 + call void @finch_str_drop(ptr %a97) + %t98 = load { ptr, i64, i64 }, ptr %a93 + store { ptr, i64, i64 } %t98, ptr %a100 + store { ptr, i64, i64 } { ptr @.str.3663, i64 1, i64 0 }, ptr %a101 + call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) + store { ptr, i64, i64 } %t98, ptr %a102 + call void @finch_str_drop(ptr %a102) + %t103 = load { ptr, i64, i64 }, ptr %a99 + call void @finch.gen.fail(ptr %t63, %S.ast.Node %t64, { ptr, i64, i64 } %t103) + store { ptr, i64, i64 } %t103, ptr %a104 + call void @finch_str_drop(ptr %a104) + br label %endif5661 +endif5661: + %t105 = getelementptr inbounds %S.gen.EnumDef, ptr %a41, i32 0, i32 3 + %t106 = load i64, ptr %a60 + %t107 = load { ptr, i64, i64 }, ptr %t105 + %t108 = extractvalue { ptr, i64, i64 } %t107, 1 + %t109 = icmp uge i64 %t106, %t108 + br i1 %t109, label %range5662, label %inrange5663 +range5662: + call void @finch_panic_index(ptr @.str.3664, i64 2953, i64 %t106, i64 %t108) unreachable -inrange5305: - %t103 = extractvalue { ptr, i64, i64 } %t100, 0 - %t104 = getelementptr inbounds i64, ptr %t103, i64 %t99 - %t105 = load i64, ptr %t104 - call void @finch_str_from_int(ptr %a106, i64 %t105) - %t107 = load { ptr, i64, i64 }, ptr %a106 - %t108 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t107, 0 - %t109 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t109, ptr %a110 - call void @finch.copy.S_ast_Type(ptr %a111, ptr %a110) - %t112 = load %S.ast.Type, ptr %a111 - %t113 = insertvalue %S.gen.Val %t108, %S.ast.Type %t112, 1 - ret %S.gen.Val %t113 -endif5291: - %t114 = load ptr, ptr %a1 - %t115 = load ptr, ptr %a1 - %t116 = load %S.ast.Node, ptr %a2 - %t117 = load %S.ast.Type, ptr %a3 - %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.3505, i64 12, i64 0 }) - ret %S.gen.Val %t121 +inrange5663: + %t110 = extractvalue { ptr, i64, i64 } %t107, 0 + %t111 = getelementptr inbounds i64, ptr %t110, i64 %t106 + %t112 = load i64, ptr %t111 + call void @finch_str_from_int(ptr %a113, i64 %t112) + %t114 = load { ptr, i64, i64 }, ptr %a113 + %t115 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t114, 0 + %t116 = load %S.ast.Type, ptr %a3 + store %S.ast.Type %t116, ptr %a117 + call void @finch.copy.S_ast_Type(ptr %a118, ptr %a117) + %t119 = load %S.ast.Type, ptr %a118 + %t120 = insertvalue %S.gen.Val %t115, %S.ast.Type %t119, 1 + call void @finch.drop.S_gen_EnumDef(ptr %a41) + ret %S.gen.Val %t120 +endif5649: + %t121 = load ptr, ptr %a1 + %t122 = load ptr, ptr %a1 + %t123 = load %S.ast.Node, ptr %a2 + %t124 = load %S.ast.Type, ptr %a3 + %t125 = call %S.gen.Val @finch.gen.exprWant(ptr %t122, %S.ast.Node %t123, %S.ast.Type %t124) + %t126 = load %S.ast.Type, ptr %a3 + %t127 = load %S.ast.Node, ptr %a2 + %t128 = call %S.gen.Val @finch.gen.coerce(ptr %t121, %S.gen.Val %t125, %S.ast.Type %t126, %S.ast.Node %t127, { ptr, i64, i64 } { ptr @.str.3665, i64 12, i64 0 }) + store %S.gen.Val %t125, ptr %a129 + call void @finch.drop.S_gen_Val(ptr %a129) + ret %S.gen.Val %t128 } define internal %S.gen.Val @finch.gen.matchGen(ptr %p0, %S.ast.Node %p1, i1 %p2) { @@ -49002,94 +58130,110 @@ entry: %a23 = alloca { ptr, i64, i64 }, align 16 %a28 = alloca { ptr, i64, i64 }, align 16 %a29 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca i1, align 16 - %a45 = alloca i1, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca %S.ast.Type, align 16 - %a55 = alloca i64, align 16 - %a57 = alloca i64, align 16 - %a69 = alloca %S.ast.Node, align 16 - %a70 = alloca %S.ast.Node, align 16 - %a72 = alloca %S.ast.Node, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca i64, align 16 - %a113 = alloca %S.gen.Val, align 16 - %a117 = alloca i64, align 16 - %a120 = alloca i64, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 + %a46 = alloca i64, align 16 + %a51 = alloca { ptr, i64, i64 }, align 16 + %a52 = alloca i1, align 16 + %a53 = alloca i1, align 16 + %a54 = alloca { ptr, i64, i64 }, align 16 + %a55 = alloca { ptr, i64, i64 }, align 16 + %a56 = alloca { ptr, i64, i64 }, align 16 + %a58 = alloca %S.ast.Type, align 16 + %a63 = alloca i64, align 16 + %a65 = alloca i64, align 16 + %a77 = alloca %S.ast.Node, align 16 + %a78 = alloca %S.ast.Node, align 16 + %a80 = alloca %S.ast.Node, align 16 + %a86 = alloca { ptr, i64, i64 }, align 16 + %a89 = 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 + %a108 = alloca i64, align 16 + %a121 = alloca %S.gen.Val, align 16 + %a125 = alloca i64, align 16 + %a128 = alloca i64, align 16 + %a133 = alloca { ptr, i64, i64 }, align 16 %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca %S.gen.Val, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca %S.ast.Node, align 16 - %a201 = alloca %S.ast.Node, align 16 - %a203 = alloca %S.ast.Node, align 16 - %a208 = alloca %S.gen.Val, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 + %a142 = alloca { ptr, i64, i64 }, align 16 + %a143 = alloca { ptr, i64, i64 }, align 16 + %a158 = alloca { ptr, i64, i64 }, align 16 + %a159 = alloca { ptr, i64, i64 }, align 16 + %a176 = alloca %S.gen.Val, align 16 + %a189 = alloca { ptr, i64, i64 }, align 16 + %a208 = alloca %S.ast.Node, align 16 + %a209 = alloca %S.ast.Node, align 16 + %a211 = alloca %S.ast.Node, align 16 + %a216 = alloca %S.gen.Val, align 16 %a221 = alloca { ptr, i64, i64 }, align 16 %a222 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 %a229 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca %S.ast.Type, align 16 - %a238 = alloca %S.ast.Type, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 + %a230 = alloca { ptr, i64, i64 }, align 16 + %a236 = alloca { ptr, i64, i64 }, align 16 + %a237 = alloca { ptr, i64, i64 }, align 16 + %a245 = alloca %S.ast.Type, align 16 + %a246 = alloca %S.ast.Type, align 16 + %a249 = alloca %S.ast.Type, align 16 + %a256 = alloca %S.gen.Val, align 16 + %a260 = alloca { ptr, i64, i64 }, align 16 + %a263 = alloca { ptr, i64, i64 }, align 16 + %a270 = alloca { ptr, i64, i64 }, align 16 + %a271 = alloca { ptr, i64, i64 }, align 16 %a279 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca %S.gen.EnumDef, align 16 - %a324 = alloca %S.gen.EnumDef, align 16 - %a326 = alloca %S.gen.EnumDef, align 16 - %a327 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca i64, align 16 - %a343 = alloca { ptr, i64, i64 }, align 16 - %a345 = alloca i64, align 16 - %a348 = alloca i64, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 - %a354 = alloca { ptr, i64, i64 }, align 16 + %a280 = alloca { ptr, i64, i64 }, align 16 + %a290 = alloca { ptr, i64, i64 }, align 16 + %a291 = alloca { ptr, i64, i64 }, align 16 + %a316 = alloca { ptr, i64, i64 }, align 16 + %a317 = alloca { ptr, i64, i64 }, align 16 + %a335 = alloca %S.gen.EnumDef, align 16 + %a336 = alloca %S.gen.EnumDef, align 16 + %a338 = alloca %S.gen.EnumDef, align 16 + %a339 = alloca { ptr, i64, i64 }, align 16 + %a343 = alloca i64, align 16 + %a355 = alloca { ptr, i64, i64 }, align 16 + %a357 = alloca i64, align 16 + %a360 = alloca 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 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a390 = 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 - %a400 = alloca { ptr, i64, i64 }, align 16 + %a383 = alloca { ptr, i64, i64 }, align 16 + %a384 = alloca { ptr, i64, i64 }, align 16 + %a398 = alloca { ptr, i64, i64 }, align 16 + %a399 = 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 - %a405 = alloca { ptr, i64, i64 }, align 16 %a406 = 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 { 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 - %a442 = alloca { ptr, i64, i64 }, align 16 - %a447 = alloca %S.ast.Type, align 16 - %a448 = alloca %S.ast.Type, 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 + %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 + %a421 = alloca { ptr, i64, i64 }, align 16 + %a422 = alloca { ptr, i64, i64 }, align 16 + %a423 = alloca { ptr, i64, i64 }, align 16 + %a424 = alloca { ptr, i64, i64 }, align 16 + %a426 = 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 + %a453 = 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 + %a458 = alloca { ptr, i64, i64 }, align 16 + %a463 = alloca { ptr, i64, i64 }, align 16 + %a464 = alloca { ptr, i64, i64 }, align 16 + %a465 = alloca { ptr, i64, i64 }, align 16 + %a466 = alloca { ptr, i64, i64 }, align 16 + %a467 = alloca { ptr, i64, i64 }, align 16 + %a470 = alloca { ptr, i64, i64 }, align 16 + %a473 = alloca %S.ast.Type, align 16 + %a474 = alloca %S.ast.Type, align 16 + %a481 = alloca %S.gen.Val, align 16 store ptr %p0, ptr %a1 store %S.ast.Node %p1, ptr %a2 store i1 %p2, ptr %a3 @@ -49098,11 +58242,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 %range5306, label %inrange5307 -range5306: - call void @finch_panic_index(ptr @.str.3506, i64 2714, i64 0, i64 %t7) + br i1 %t8, label %range5664, label %inrange5665 +range5664: + call void @finch_panic_index(ptr @.str.3666, i64 2961, i64 0, i64 %t7) unreachable -inrange5307: +inrange5665: %t9 = extractvalue { ptr, i64, i64 } %t6, 0 %t10 = getelementptr inbounds %S.ast.Node, ptr %t9, i64 0 %t11 = load %S.ast.Node, ptr %t10 @@ -49117,713 +58261,802 @@ inrange5307: %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.3507, i64 4, i64 0 }, ptr %a23 + store { ptr, i64, i64 } { ptr @.str.3667, 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.from5308 -logic.from5308: - br i1 %t25, label %logic.end5310, label %logic.rhs5309 -logic.rhs5309: + br label %logic.from5666 +logic.from5666: + br i1 %t25, label %logic.end5668, label %logic.rhs5667 +logic.rhs5667: %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.3508, i64 4, i64 0 }, ptr %a29 + store { ptr, i64, i64 } { ptr @.str.3668, 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.rend5311 -logic.rend5311: - br label %logic.end5310 -logic.end5310: - %t32 = phi i1 [ true, %logic.from5308 ], [ %t31, %logic.rend5311 ] - br i1 %t32, label %then5312, label %endif5314 -then5312: + br label %logic.rend5669 +logic.rend5669: + br label %logic.end5668 +logic.end5668: + %t32 = phi i1 [ true, %logic.from5666 ], [ %t31, %logic.rend5669 ] + br i1 %t32, label %then5670, label %endif5672 +then5670: %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 %range5315, label %inrange5316 -range5315: - call void @finch_panic_index(ptr @.str.3509, i64 2717, i64 0, i64 %t36) + br i1 %t37, label %range5673, label %inrange5674 +range5673: + call void @finch_panic_index(ptr @.str.3669, i64 2964, i64 0, i64 %t36) unreachable -inrange5316: +inrange5674: %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.3510, i64 30, i64 0 }) - br label %endif5314 -endif5314: + call void @finch.gen.fail(ptr %t33, %S.ast.Node %t40, { ptr, i64, i64 } { ptr @.str.3670, i64 30, i64 0 }) + br label %endif5672 +endif5672: %t41 = load ptr, ptr %a1 - %t42 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t41, { ptr, i64, i64 } { ptr @.str.3511, 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.3512, 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 - %t53 = load i64, ptr %t52 - %t54 = sub i64 %t53, 1 - store i64 %t54, ptr %a55 - %t56 = load i64, ptr %a55 - store i64 0, ptr %a57 - br label %for.cond5317 -for.cond5317: - %t58 = load i64, ptr %a57 - %t59 = icmp slt i64 %t58, %t56 - br i1 %t59, label %for.body5318, label %for.end5320 -for.body5318: - %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 %range5321, label %inrange5322 -range5321: - call void @finch_panic_index(ptr @.str.3513, i64 2728, i64 %t62, i64 %t64) + %t42 = icmp eq ptr %t41, null + br i1 %t42, label %panic5675, label %ok5676 +panic5675: + call void @finch_panic(ptr @.str.3671, i64 2966, ptr @.str.3672) unreachable -inrange5322: - %t66 = extractvalue { ptr, i64, i64 } %t63, 0 - %t67 = getelementptr inbounds %S.ast.Node, ptr %t66, i64 %t62 - %t68 = load %S.ast.Node, ptr %t67 - store %S.ast.Node %t68, ptr %a69 - call void @finch.copy.S_ast_Node(ptr %a70, ptr %a69) - %t71 = load %S.ast.Node, ptr %a70 - store %S.ast.Node %t71, ptr %a72 - %t73 = load i1, ptr %a44 - br i1 %t73, label %then5323, label %endif5325 -then5323: - %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.3514, i64 72, i64 0 }) - br label %endif5325 -endif5325: - %t76 = load ptr, ptr %a1 - %t77 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t76, { ptr, i64, i64 } { ptr @.str.3515, 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.3516, 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 %then5326, label %else5327 -then5326: - store i1 true, ptr %a44 +ok5676: + %t43 = getelementptr inbounds %S.gen.Gen, ptr %t41, i32 0, i32 11 + %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t43, i32 0, i32 1 + %t45 = load i64, ptr %t44 + store i64 %t45, ptr %a46 + %t47 = load ptr, ptr %a1 + %t48 = load %S.gen.Val, ptr %a13 + call void @finch.gen.hold(ptr %t47, %S.gen.Val %t48) + %t49 = load ptr, ptr %a1 + %t50 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t49, { ptr, i64, i64 } { ptr @.str.3673, i64 9, i64 0 }) + store { ptr, i64, i64 } %t50, ptr %a51 + store i1 false, ptr %a52 + store i1 false, ptr %a53 + store { ptr, i64, i64 } zeroinitializer, ptr %a54 + store { ptr, i64, i64 } zeroinitializer, ptr %a55 + store { ptr, i64, i64 } zeroinitializer, ptr %a56 + %t57 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3674, i64 4, i64 0 }) + store %S.ast.Type %t57, ptr %a58 + %t59 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t60 = getelementptr inbounds { ptr, i64, i64 }, ptr %t59, i32 0, i32 1 + %t61 = load i64, ptr %t60 + %t62 = sub i64 %t61, 1 + store i64 %t62, ptr %a63 + %t64 = load i64, ptr %a63 + store i64 0, ptr %a65 + br label %for.cond5677 +for.cond5677: + %t66 = load i64, ptr %a65 + %t67 = icmp slt i64 %t66, %t64 + br i1 %t67, label %for.body5678, label %for.end5680 +for.body5678: + %t68 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t69 = load i64, ptr %a65 + %t70 = add i64 1, %t69 + %t71 = load { ptr, i64, i64 }, ptr %t68 + %t72 = extractvalue { ptr, i64, i64 } %t71, 1 + %t73 = icmp uge i64 %t70, %t72 + br i1 %t73, label %range5681, label %inrange5682 +range5681: + call void @finch_panic_index(ptr @.str.3675, i64 2977, i64 %t70, i64 %t72) + unreachable +inrange5682: + %t74 = extractvalue { ptr, i64, i64 } %t71, 0 + %t75 = getelementptr inbounds %S.ast.Node, ptr %t74, i64 %t70 + %t76 = load %S.ast.Node, ptr %t75 + store %S.ast.Node %t76, ptr %a77 + call void @finch.copy.S_ast_Node(ptr %a78, ptr %a77) + %t79 = load %S.ast.Node, ptr %a78 + store %S.ast.Node %t79, ptr %a80 + %t81 = load i1, ptr %a52 + br i1 %t81, label %then5683, label %endif5685 +then5683: + %t82 = load ptr, ptr %a1 + %t83 = load %S.ast.Node, ptr %a80 + call void @finch.gen.fail(ptr %t82, %S.ast.Node %t83, { ptr, i64, i64 } { ptr @.str.3676, i64 72, i64 0 }) + br label %endif5685 +endif5685: %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 %endif5328 -else5327: - %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 %range5329, label %inrange5330 -range5329: - call void @finch_panic_index(ptr @.str.3517, i64 2738, i64 0, i64 %t88) + %t85 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t84, { ptr, i64, i64 } { ptr @.str.3677, i64 9, i64 0 }) + store { ptr, i64, i64 } %t85, ptr %a86 + %t87 = load ptr, ptr %a1 + %t88 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t87, { ptr, i64, i64 } { ptr @.str.3678, i64 10, i64 0 }) + store { ptr, i64, i64 } %t88, ptr %a89 + %t90 = getelementptr inbounds %S.ast.Node, ptr %a80, i32 0, i32 6 + %t91 = load i1, ptr %t90 + br i1 %t91, label %then5686, label %else5687 +then5686: + store i1 true, ptr %a52 + %t92 = load ptr, ptr %a1 + %t93 = load { ptr, i64, i64 }, ptr %a86 + call void @finch.gen.br(ptr %t92, { ptr, i64, i64 } %t93) + br label %endif5688 +else5687: + %t94 = getelementptr inbounds %S.ast.Node, ptr %a80, i32 0, i32 9 + %t95 = load { ptr, i64, i64 }, ptr %t94 + %t96 = extractvalue { ptr, i64, i64 } %t95, 1 + %t97 = icmp uge i64 0, %t96 + br i1 %t97, label %range5689, label %inrange5690 +range5689: + call void @finch_panic_index(ptr @.str.3679, i64 2987, i64 0, i64 %t96) unreachable -inrange5330: - %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 - %t93 = load { ptr, i64, i64 }, ptr %t92 - store { ptr, i64, i64 } %t93, ptr %a94 - call void @finch.copy.arr_S_ast_Node(ptr %a95, ptr %a94) - %t96 = load { ptr, i64, i64 }, ptr %a95 - store { ptr, i64, i64 } %t96, ptr %a97 - %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.cond5331 -for.cond5331: - %t101 = load i64, ptr %a100 - %t102 = icmp slt i64 %t101, %t99 - br i1 %t102, label %for.body5332, label %for.end5334 -for.body5332: - %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 %range5335, label %inrange5336 -range5335: - call void @finch_panic_index(ptr @.str.3518, i64 2740, i64 %t104, i64 %t106) +inrange5690: + %t98 = extractvalue { ptr, i64, i64 } %t95, 0 + %t99 = getelementptr inbounds %S.ast.Node, ptr %t98, i64 0 + %t100 = getelementptr inbounds %S.ast.Node, ptr %t99, i32 0, i32 9 + %t101 = load { ptr, i64, i64 }, ptr %t100 + store { ptr, i64, i64 } %t101, ptr %a102 + call void @finch.copy.arr_S_ast_Node(ptr %a103, ptr %a102) + %t104 = load { ptr, i64, i64 }, ptr %a103 + store { ptr, i64, i64 } %t104, ptr %a105 + %t106 = getelementptr inbounds { ptr, i64, i64 }, ptr %a105, i32 0, i32 1 + %t107 = load i64, ptr %t106 + store i64 0, ptr %a108 + br label %for.cond5691 +for.cond5691: + %t109 = load i64, ptr %a108 + %t110 = icmp slt i64 %t109, %t107 + br i1 %t110, label %for.body5692, label %for.end5694 +for.body5692: + %t111 = load ptr, ptr %a1 + %t112 = load i64, ptr %a108 + %t113 = load { ptr, i64, i64 }, ptr %a105 + %t114 = extractvalue { ptr, i64, i64 } %t113, 1 + %t115 = icmp uge i64 %t112, %t114 + br i1 %t115, label %range5695, label %inrange5696 +range5695: + call void @finch_panic_index(ptr @.str.3680, i64 2989, i64 %t112, i64 %t114) unreachable -inrange5336: - %t108 = extractvalue { ptr, i64, i64 } %t105, 0 - %t109 = getelementptr inbounds %S.ast.Node, ptr %t108, i64 %t104 - %t110 = load %S.ast.Node, ptr %t109 - %t111 = load %S.ast.Type, ptr %a19 - %t112 = call %S.gen.Val @finch.gen.patternValue(ptr %t103, %S.ast.Node %t110, %S.ast.Type %t111) - store %S.gen.Val %t112, ptr %a113 - %t114 = getelementptr inbounds { ptr, i64, i64 }, ptr %a46, i32 0, i32 1 - %t115 = getelementptr inbounds %S.gen.Val, ptr %a113, i32 0, i32 0 - %t116 = load { ptr, i64, i64 }, ptr %t115 - store i64 -1, ptr %a117 - %t118 = load i64, ptr %t114 - %t119 = load ptr, ptr %a46 - store i64 0, ptr %a120 - br label %find.cond5337 -find.cond5337: - %t121 = load i64, ptr %a120 - %t122 = icmp slt i64 %t121, %t118 - br i1 %t122, label %find.body5338, label %find.end5341 -find.body5338: - %t123 = getelementptr inbounds { ptr, i64, i64 }, ptr %t119, i64 %t121 +inrange5696: + %t116 = extractvalue { ptr, i64, i64 } %t113, 0 + %t117 = getelementptr inbounds %S.ast.Node, ptr %t116, i64 %t112 + %t118 = load %S.ast.Node, ptr %t117 + %t119 = load %S.ast.Type, ptr %a19 + %t120 = call %S.gen.Val @finch.gen.patternValue(ptr %t111, %S.ast.Node %t118, %S.ast.Type %t119) + store %S.gen.Val %t120, ptr %a121 + %t122 = getelementptr inbounds { ptr, i64, i64 }, ptr %a54, i32 0, i32 1 + %t123 = getelementptr inbounds %S.gen.Val, ptr %a121, i32 0, i32 0 %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.hit5339, label %find.next5340 -find.hit5339: - store i64 %t121, ptr %a117 - br label %find.end5341 -find.next5340: - %t129 = add i64 %t121, 1 - store i64 %t129, ptr %a120 - br label %find.cond5337 -find.end5341: - %t130 = load i64, ptr %a117 - %t131 = icmp sge i64 %t130, 0 - br label %logic.from5342 -logic.from5342: - br i1 %t131, label %logic.rhs5343, label %logic.end5344 -logic.rhs5343: - %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.3519, 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.rend5345 -logic.rend5345: - br label %logic.end5344 -logic.end5344: - %t138 = phi i1 [ false, %logic.from5342 ], [ %t137, %logic.rend5345 ] - br i1 %t138, label %then5346, label %endif5348 -then5346: - %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 %range5349, label %inrange5350 -range5349: - call void @finch_panic_index(ptr @.str.3520, i64 2742, i64 %t140, i64 %t142) + store i64 -1, ptr %a125 + %t126 = load i64, ptr %t122 + %t127 = load ptr, ptr %a54 + store i64 0, ptr %a128 + br label %find.cond5697 +find.cond5697: + %t129 = load i64, ptr %a128 + %t130 = icmp slt i64 %t129, %t126 + br i1 %t130, label %find.body5698, label %find.end5701 +find.body5698: + %t131 = getelementptr inbounds { ptr, i64, i64 }, ptr %t127, i64 %t129 + %t132 = load { ptr, i64, i64 }, ptr %t131 + store { ptr, i64, i64 } %t132, ptr %a133 + store { ptr, i64, i64 } %t124, ptr %a134 + %t135 = call i32 @finch_str_eq(ptr %a133, ptr %a134) + %t136 = icmp ne i32 %t135, 0 + br i1 %t136, label %find.hit5699, label %find.next5700 +find.hit5699: + store i64 %t129, ptr %a125 + br label %find.end5701 +find.next5700: + %t137 = add i64 %t129, 1 + store i64 %t137, ptr %a128 + br label %find.cond5697 +find.end5701: + %t138 = load i64, ptr %a125 + %t139 = icmp sge i64 %t138, 0 + br label %logic.from5702 +logic.from5702: + br i1 %t139, label %logic.rhs5703, label %logic.end5704 +logic.rhs5703: + %t140 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 0 + %t141 = load { ptr, i64, i64 }, ptr %t140 + store { ptr, i64, i64 } %t141, ptr %a142 + store { ptr, i64, i64 } { ptr @.str.3681, i64 4, i64 0 }, ptr %a143 + %t144 = call i32 @finch_str_eq(ptr %a142, ptr %a143) + %t145 = icmp ne i32 %t144, 0 + br label %logic.rend5705 +logic.rend5705: + br label %logic.end5704 +logic.end5704: + %t146 = phi i1 [ false, %logic.from5702 ], [ %t145, %logic.rend5705 ] + br i1 %t146, label %then5706, label %endif5708 +then5706: + %t147 = load ptr, ptr %a1 + %t148 = load i64, ptr %a108 + %t149 = load { ptr, i64, i64 }, ptr %a105 + %t150 = extractvalue { ptr, i64, i64 } %t149, 1 + %t151 = icmp uge i64 %t148, %t150 + br i1 %t151, label %range5709, label %inrange5710 +range5709: + call void @finch_panic_index(ptr @.str.3682, i64 2991, i64 %t148, i64 %t150) unreachable -inrange5350: - %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.3521, i64 49, i64 0 }) - br label %endif5348 -endif5348: - %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 - store { ptr, i64, i64 } %t149, ptr %a150 - call void @finch_str_copy(ptr %a151, ptr %a150) - %t152 = load { ptr, i64, i64 }, ptr %a151 - %t153 = load i64, ptr %t147 - %t154 = add i64 %t153, 1 - call void @finch_arr_reserve(ptr %a46, i64 %t154, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t155 = load ptr, ptr %a46 - %t156 = getelementptr inbounds { ptr, i64, i64 }, ptr %t155, i64 %t153 - store { ptr, i64, i64 } %t152, ptr %t156 - store i64 %t154, ptr %t147 - %t157 = load ptr, ptr %a1 - %t158 = load %S.gen.Val, ptr %a13 - %t159 = load %S.gen.Val, ptr %a113 - %t160 = load i64, ptr %a100 - %t161 = load { ptr, i64, i64 }, ptr %a97 - %t162 = extractvalue { ptr, i64, i64 } %t161, 1 - %t163 = icmp uge i64 %t160, %t162 - br i1 %t163, label %range5351, label %inrange5352 -range5351: - call void @finch_panic_index(ptr @.str.3523, i64 2745, i64 %t160, i64 %t162) +inrange5710: + %t152 = extractvalue { ptr, i64, i64 } %t149, 0 + %t153 = getelementptr inbounds %S.ast.Node, ptr %t152, i64 %t148 + %t154 = load %S.ast.Node, ptr %t153 + call void @finch.gen.fail(ptr %t147, %S.ast.Node %t154, { ptr, i64, i64 } { ptr @.str.3683, i64 49, i64 0 }) + br label %endif5708 +endif5708: + %t155 = getelementptr inbounds { ptr, i64, i64 }, ptr %a54, i32 0, i32 1 + %t156 = getelementptr inbounds %S.gen.Val, ptr %a121, i32 0, i32 0 + %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 = load i64, ptr %t155 + %t162 = add i64 %t161, 1 + call void @finch_arr_reserve(ptr %a54, i64 %t162, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t163 = load ptr, ptr %a54 + %t164 = getelementptr inbounds { ptr, i64, i64 }, ptr %t163, i64 %t161 + store { ptr, i64, i64 } %t160, ptr %t164 + store i64 %t162, ptr %t155 + %t165 = load ptr, ptr %a1 + %t166 = load %S.gen.Val, ptr %a13 + %t167 = load %S.gen.Val, ptr %a121 + %t168 = load i64, ptr %a108 + %t169 = load { ptr, i64, i64 }, ptr %a105 + %t170 = extractvalue { ptr, i64, i64 } %t169, 1 + %t171 = icmp uge i64 %t168, %t170 + br i1 %t171, label %range5711, label %inrange5712 +range5711: + call void @finch_panic_index(ptr @.str.3685, i64 2994, i64 %t168, i64 %t170) unreachable -inrange5352: - %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.3522, 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 %then5353, label %else5354 -then5353: - %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 %endif5355 -else5354: - %t179 = load ptr, ptr %a1 - %t180 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t179, { ptr, i64, i64 } { ptr @.str.3524, i64 8, i64 0 }) - store { ptr, i64, i64 } %t180, ptr %a181 +inrange5712: + %t172 = extractvalue { ptr, i64, i64 } %t169, 0 + %t173 = getelementptr inbounds %S.ast.Node, ptr %t172, i64 %t168 + %t174 = load %S.ast.Node, ptr %t173 + %t175 = call %S.gen.Val @finch.gen.compare(ptr %t165, { ptr, i64, i64 } { ptr @.str.3684, i64 2, i64 0 }, %S.gen.Val %t166, %S.gen.Val %t167, %S.ast.Node %t174) + store %S.gen.Val %t175, ptr %a176 + %t177 = load i64, ptr %a108 + %t178 = getelementptr inbounds { ptr, i64, i64 }, ptr %a105, i32 0, i32 1 + %t179 = load i64, ptr %t178 + %t180 = sub i64 %t179, 1 + %t181 = icmp eq i64 %t177, %t180 + br i1 %t181, label %then5713, label %else5714 +then5713: %t182 = load ptr, ptr %a1 - %t183 = getelementptr inbounds %S.gen.Val, ptr %a168, i32 0, i32 0 + %t183 = getelementptr inbounds %S.gen.Val, ptr %a176, i32 0, i32 0 %t184 = load { ptr, i64, i64 }, ptr %t183 - %t185 = load { ptr, i64, i64 }, ptr %a78 - %t186 = load { ptr, i64, i64 }, ptr %a181 + %t185 = load { ptr, i64, i64 }, ptr %a86 + %t186 = load { ptr, i64, i64 }, ptr %a89 call void @finch.gen.condBr(ptr %t182, { ptr, i64, i64 } %t184, { ptr, i64, i64 } %t185, { ptr, i64, i64 } %t186) + br label %endif5715 +else5714: %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 %endif5355 -endif5355: - br label %for.step5333 -for.step5333: - %t189 = load i64, ptr %a100 - %t190 = add i64 %t189, 1 - store i64 %t190, ptr %a100 - br label %for.cond5331 -for.end5334: - br label %endif5328 -endif5328: - %t191 = load ptr, ptr %a1 - %t192 = load { ptr, i64, i64 }, ptr %a78 - call void @finch.gen.label(ptr %t191, { ptr, i64, i64 } %t192) - %t193 = getelementptr inbounds %S.ast.Node, ptr %a72, i32 0, i32 9 - %t194 = load { ptr, i64, i64 }, ptr %t193 - %t195 = extractvalue { ptr, i64, i64 } %t194, 1 - %t196 = icmp uge i64 1, %t195 - br i1 %t196, label %range5356, label %inrange5357 -range5356: - call void @finch_panic_index(ptr @.str.3525, i64 2756, i64 1, i64 %t195) + %t188 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t187, { ptr, i64, i64 } { ptr @.str.3686, i64 8, i64 0 }) + store { ptr, i64, i64 } %t188, ptr %a189 + %t190 = load ptr, ptr %a1 + %t191 = getelementptr inbounds %S.gen.Val, ptr %a176, i32 0, i32 0 + %t192 = load { ptr, i64, i64 }, ptr %t191 + %t193 = load { ptr, i64, i64 }, ptr %a86 + %t194 = load { ptr, i64, i64 }, ptr %a189 + call void @finch.gen.condBr(ptr %t190, { ptr, i64, i64 } %t192, { ptr, i64, i64 } %t193, { ptr, i64, i64 } %t194) + %t195 = load ptr, ptr %a1 + %t196 = load { ptr, i64, i64 }, ptr %a189 + call void @finch.gen.label(ptr %t195, { ptr, i64, i64 } %t196) + call void @finch_str_drop(ptr %a189) + br label %endif5715 +endif5715: + call void @finch.drop.S_gen_Val(ptr %a176) + call void @finch.drop.S_gen_Val(ptr %a121) + br label %for.step5693 +for.step5693: + %t197 = load i64, ptr %a108 + %t198 = add i64 %t197, 1 + store i64 %t198, ptr %a108 + br label %for.cond5691 +for.end5694: + call void @finch.drop.arr_S_ast_Node(ptr %a105) + br label %endif5688 +endif5688: + %t199 = load ptr, ptr %a1 + %t200 = load { ptr, i64, i64 }, ptr %a86 + call void @finch.gen.label(ptr %t199, { ptr, i64, i64 } %t200) + %t201 = getelementptr inbounds %S.ast.Node, ptr %a80, i32 0, i32 9 + %t202 = load { ptr, i64, i64 }, ptr %t201 + %t203 = extractvalue { ptr, i64, i64 } %t202, 1 + %t204 = icmp uge i64 1, %t203 + br i1 %t204, label %range5716, label %inrange5717 +range5716: + call void @finch_panic_index(ptr @.str.3687, i64 3005, i64 1, i64 %t203) unreachable -inrange5357: - %t197 = extractvalue { ptr, i64, i64 } %t194, 0 - %t198 = getelementptr inbounds %S.ast.Node, ptr %t197, i64 1 - %t199 = load %S.ast.Node, ptr %t198 - store %S.ast.Node %t199, ptr %a200 - call void @finch.copy.S_ast_Node(ptr %a201, ptr %a200) - %t202 = load %S.ast.Node, ptr %a201 - store %S.ast.Node %t202, ptr %a203 - %t204 = load i1, ptr %a3 - br i1 %t204, label %then5358, label %else5359 -then5358: - %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.from5361 -logic.from5361: - br i1 %t210, label %logic.end5363, label %logic.rhs5362 -logic.rhs5362: - %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.3526, 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.rend5364 -logic.rend5364: - br label %logic.end5363 -logic.end5363: - %t217 = phi i1 [ true, %logic.from5361 ], [ %t216, %logic.rend5364 ] - br i1 %t217, label %then5365, label %endif5367 -then5365: - %t218 = getelementptr inbounds %S.gen.Val, ptr %a208, i32 0, i32 1 - %t219 = getelementptr inbounds %S.ast.Type, ptr %t218, i32 0, i32 0 +inrange5717: + %t205 = extractvalue { ptr, i64, i64 } %t202, 0 + %t206 = getelementptr inbounds %S.ast.Node, ptr %t205, i64 1 + %t207 = load %S.ast.Node, ptr %t206 + store %S.ast.Node %t207, ptr %a208 + call void @finch.copy.S_ast_Node(ptr %a209, ptr %a208) + %t210 = load %S.ast.Node, ptr %a209 + store %S.ast.Node %t210, ptr %a211 + %t212 = load i1, ptr %a3 + br i1 %t212, label %then5718, label %else5719 +then5718: + %t213 = load ptr, ptr %a1 + %t214 = load %S.ast.Node, ptr %a211 + %t215 = call %S.gen.Val @finch.gen.expr(ptr %t213, %S.ast.Node %t214) + store %S.gen.Val %t215, ptr %a216 + %t217 = load i64, ptr %a65 + %t218 = icmp eq i64 %t217, 0 + br label %logic.from5721 +logic.from5721: + br i1 %t218, label %logic.end5723, label %logic.rhs5722 +logic.rhs5722: + %t219 = getelementptr inbounds %S.ast.Type, ptr %a58, i32 0, i32 0 %t220 = load { ptr, i64, i64 }, ptr %t219 store { ptr, i64, i64 } %t220, ptr %a221 - store { ptr, i64, i64 } { ptr @.str.3527, i64 4, i64 0 }, ptr %a222 + store { ptr, i64, i64 } { ptr @.str.3688, 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.from5368 -logic.from5368: - br i1 %t224, label %logic.end5370, label %logic.rhs5369 -logic.rhs5369: - %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.3528, 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.rend5371 -logic.rend5371: - br label %logic.end5370 -logic.end5370: - %t232 = phi i1 [ true, %logic.from5368 ], [ %t231, %logic.rend5371 ] - br i1 %t232, label %then5372, label %endif5374 -then5372: - %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.3529, i64 52, i64 0 }) - br label %endif5374 -endif5374: - %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 %endif5367 -endif5367: - %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.3530, 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.3531, i64 10, i64 0 }) - store { ptr, i64, i64 } %t250, ptr %a251 - %t252 = load ptr, ptr %a1 - %t253 = load { ptr, i64, i64 }, ptr %a251 - call void @finch.gen.br(ptr %t252, { ptr, i64, i64 } %t253) - %t254 = load ptr, ptr %a1 - %t255 = load { ptr, i64, i64 }, ptr %a251 - call void @finch.gen.label(ptr %t254, { ptr, i64, i64 } %t255) - %t256 = getelementptr inbounds { ptr, i64, i64 }, ptr %a47, i32 0, i32 1 - %t257 = load { ptr, i64, i64 }, ptr %a248 - store { ptr, i64, i64 } %t257, ptr %a258 - call void @finch_str_copy(ptr %a259, ptr %a258) - %t260 = load { ptr, i64, i64 }, ptr %a259 - %t261 = load i64, ptr %t256 - %t262 = add i64 %t261, 1 - call void @finch_arr_reserve(ptr %a47, i64 %t262, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t263 = load ptr, ptr %a47 - %t264 = getelementptr inbounds { ptr, i64, i64 }, ptr %t263, i64 %t261 - store { ptr, i64, i64 } %t260, ptr %t264 - store i64 %t262, ptr %t256 - %t265 = getelementptr inbounds { ptr, i64, i64 }, ptr %a48, i32 0, i32 1 - %t266 = load { ptr, i64, i64 }, ptr %a251 - store { ptr, i64, i64 } %t266, ptr %a267 - call void @finch_str_copy(ptr %a268, ptr %a267) - %t269 = load { ptr, i64, i64 }, ptr %a268 - %t270 = load i64, ptr %t265 - %t271 = add i64 %t270, 1 - call void @finch_arr_reserve(ptr %a48, i64 %t271, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t272 = load ptr, ptr %a48 - %t273 = getelementptr inbounds { ptr, i64, i64 }, ptr %t272, i64 %t270 - store { ptr, i64, i64 } %t269, ptr %t273 - store i64 %t271, ptr %t265 - %t274 = load ptr, ptr %a1 - %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 %endif5360 -else5359: - %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.3532, 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 %then5375, label %else5376 -then5375: - %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 %endif5377 -else5376: - %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 %endif5377 -endif5377: + br label %logic.rend5724 +logic.rend5724: + br label %logic.end5723 +logic.end5723: + %t225 = phi i1 [ true, %logic.from5721 ], [ %t224, %logic.rend5724 ] + br i1 %t225, label %then5725, label %endif5727 +then5725: + %t226 = getelementptr inbounds %S.gen.Val, ptr %a216, i32 0, i32 1 + %t227 = getelementptr inbounds %S.ast.Type, ptr %t226, i32 0, i32 0 + %t228 = load { ptr, i64, i64 }, ptr %t227 + store { ptr, i64, i64 } %t228, ptr %a229 + store { ptr, i64, i64 } { ptr @.str.3689, i64 4, i64 0 }, ptr %a230 + %t231 = call i32 @finch_str_eq(ptr %a229, ptr %a230) + %t232 = icmp ne i32 %t231, 0 + br label %logic.from5728 +logic.from5728: + br i1 %t232, label %logic.end5730, label %logic.rhs5729 +logic.rhs5729: + %t233 = getelementptr inbounds %S.gen.Val, ptr %a216, i32 0, i32 1 + %t234 = getelementptr inbounds %S.ast.Type, ptr %t233, i32 0, i32 0 + %t235 = load { ptr, i64, i64 }, ptr %t234 + store { ptr, i64, i64 } %t235, ptr %a236 + store { ptr, i64, i64 } { ptr @.str.3690, i64 4, i64 0 }, ptr %a237 + %t238 = call i32 @finch_str_eq(ptr %a236, ptr %a237) + %t239 = icmp ne i32 %t238, 0 + br label %logic.rend5731 +logic.rend5731: + br label %logic.end5730 +logic.end5730: + %t240 = phi i1 [ true, %logic.from5728 ], [ %t239, %logic.rend5731 ] + br i1 %t240, label %then5732, label %endif5734 +then5732: + %t241 = load ptr, ptr %a1 + %t242 = load %S.ast.Node, ptr %a211 + call void @finch.gen.fail(ptr %t241, %S.ast.Node %t242, { ptr, i64, i64 } { ptr @.str.3691, i64 52, i64 0 }) + br label %endif5734 +endif5734: + %t243 = getelementptr inbounds %S.gen.Val, ptr %a216, i32 0, i32 1 + %t244 = load %S.ast.Type, ptr %t243 + store %S.ast.Type %t244, ptr %a245 + call void @finch.copy.S_ast_Type(ptr %a246, ptr %a245) + %t247 = load %S.ast.Type, ptr %a246 + %t248 = load %S.ast.Type, ptr %a58 + store %S.ast.Type %t247, ptr %a58 + store %S.ast.Type %t248, ptr %a249 + call void @finch.drop.S_ast_Type(ptr %a249) + br label %endif5727 +endif5727: + %t250 = load ptr, ptr %a1 + %t251 = load %S.gen.Val, ptr %a216 + %t252 = load %S.ast.Type, ptr %a58 + %t253 = load %S.ast.Node, ptr %a211 + %t254 = call %S.gen.Val @finch.gen.coerce(ptr %t250, %S.gen.Val %t251, %S.ast.Type %t252, %S.ast.Node %t253, { ptr, i64, i64 } { ptr @.str.3692, i64 57, i64 0 }) + %t255 = load %S.gen.Val, ptr %a216 + store %S.gen.Val %t254, ptr %a216 + store %S.gen.Val %t255, ptr %a256 + call void @finch.drop.S_gen_Val(ptr %a256) + %t257 = load ptr, ptr %a1 + %t258 = load %S.gen.Val, ptr %a216 + %t259 = call { ptr, i64, i64 } @finch.gen.own(ptr %t257, %S.gen.Val %t258) + store { ptr, i64, i64 } %t259, ptr %a260 + %t261 = load ptr, ptr %a1 + %t262 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t261, { ptr, i64, i64 } { ptr @.str.3693, i64 10, i64 0 }) + store { ptr, i64, i64 } %t262, ptr %a263 + %t264 = load ptr, ptr %a1 + %t265 = load { ptr, i64, i64 }, ptr %a263 + call void @finch.gen.br(ptr %t264, { ptr, i64, i64 } %t265) + %t266 = load ptr, ptr %a1 + %t267 = load { ptr, i64, i64 }, ptr %a263 + call void @finch.gen.label(ptr %t266, { ptr, i64, i64 } %t267) + %t268 = getelementptr inbounds { ptr, i64, i64 }, ptr %a55, i32 0, i32 1 + %t269 = load { ptr, i64, i64 }, ptr %a260 + store { ptr, i64, i64 } %t269, ptr %a270 + call void @finch_str_copy(ptr %a271, ptr %a270) + %t272 = load { ptr, i64, i64 }, ptr %a271 + %t273 = load i64, ptr %t268 + %t274 = add i64 %t273, 1 + call void @finch_arr_reserve(ptr %a55, i64 %t274, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t275 = load ptr, ptr %a55 + %t276 = getelementptr inbounds { ptr, i64, i64 }, ptr %t275, i64 %t273 + store { ptr, i64, i64 } %t272, ptr %t276 + store i64 %t274, ptr %t268 + %t277 = getelementptr inbounds { ptr, i64, i64 }, ptr %a56, i32 0, i32 1 + %t278 = load { ptr, i64, i64 }, ptr %a263 + store { ptr, i64, i64 } %t278, ptr %a279 + call void @finch_str_copy(ptr %a280, ptr %a279) + %t281 = load { ptr, i64, i64 }, ptr %a280 + %t282 = load i64, ptr %t277 + %t283 = add i64 %t282, 1 + call void @finch_arr_reserve(ptr %a56, i64 %t283, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t284 = load ptr, ptr %a56 + %t285 = getelementptr inbounds { ptr, i64, i64 }, ptr %t284, i64 %t282 + store { ptr, i64, i64 } %t281, ptr %t285 + store i64 %t283, ptr %t277 %t286 = load ptr, ptr %a1 - %t287 = icmp eq ptr %t286, null - br i1 %t287, label %panic5378, label %ok5379 -panic5378: - call void @finch_panic(ptr @.str.3533, i64 2780, ptr @.str.3534) - unreachable -ok5379: - %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 %then5380, label %endif5382 -then5380: - store i1 true, ptr %a45 - br label %endif5382 -endif5382: - %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 %endif5360 -endif5360: - %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 %then5383, label %endif5385 -then5383: + %t287 = load { ptr, i64, i64 }, ptr %a51 + call void @finch.gen.br(ptr %t286, { ptr, i64, i64 } %t287) + store i1 true, ptr %a53 + call void @finch_str_drop(ptr %a263) + call void @finch_str_drop(ptr %a260) + call void @finch.drop.S_gen_Val(ptr %a216) + br label %endif5720 +else5719: + %t288 = getelementptr inbounds %S.ast.Node, ptr %a211, i32 0, i32 0 + %t289 = load { ptr, i64, i64 }, ptr %t288 + store { ptr, i64, i64 } %t289, ptr %a290 + store { ptr, i64, i64 } { ptr @.str.3694, i64 5, i64 0 }, ptr %a291 + %t292 = call i32 @finch_str_eq(ptr %a290, ptr %a291) + %t293 = icmp ne i32 %t292, 0 + br i1 %t293, label %then5735, label %else5736 +then5735: + %t294 = load ptr, ptr %a1 + %t295 = load %S.ast.Node, ptr %a211 + call void @finch.gen.block(ptr %t294, %S.ast.Node %t295, i1 true) + br label %endif5737 +else5736: %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 %endif5385 -endif5385: - br label %for.step5319 -for.step5319: - %t298 = load i64, ptr %a57 - %t299 = add i64 %t298, 1 - store i64 %t299, ptr %a57 - br label %for.cond5317 -for.end5320: - %t300 = load i1, ptr %a44 - %t301 = xor i1 %t300, true - br i1 %t301, label %then5386, label %endif5388 -then5386: - %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.3535, 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 %then5389, label %else5390 -then5389: + %t297 = load %S.ast.Node, ptr %a211 + call void @finch.gen.stmt(ptr %t296, %S.ast.Node %t297) + br label %endif5737 +endif5737: + %t298 = load ptr, ptr %a1 + %t299 = icmp eq ptr %t298, null + br i1 %t299, label %panic5738, label %ok5739 +panic5738: + call void @finch_panic(ptr @.str.3695, i64 3029, ptr @.str.3696) + unreachable +ok5739: + %t300 = getelementptr inbounds %S.gen.Gen, ptr %t298, i32 0, i32 9 + %t301 = load i1, ptr %t300 + %t302 = xor i1 %t301, true + br i1 %t302, label %then5740, label %endif5742 +then5740: + store i1 true, ptr %a53 + br label %endif5742 +endif5742: + %t303 = load ptr, ptr %a1 + %t304 = load { ptr, i64, i64 }, ptr %a51 + call void @finch.gen.br(ptr %t303, { ptr, i64, i64 } %t304) + br label %endif5720 +endif5720: + %t305 = getelementptr inbounds %S.ast.Node, ptr %a80, i32 0, i32 6 + %t306 = load i1, ptr %t305 + %t307 = xor i1 %t306, true + br i1 %t307, label %then5743, label %endif5745 +then5743: %t308 = load ptr, ptr %a1 - %t309 = icmp eq ptr %t308, null - br i1 %t309, label %panic5392, label %ok5393 -panic5392: - call void @finch_panic(ptr @.str.3536, i64 2791, ptr @.str.3537) - unreachable -ok5393: - %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 - %t313 = load { ptr, i64, i64 }, ptr %t312 - %t314 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 2 + %t309 = load { ptr, i64, i64 }, ptr %a89 + call void @finch.gen.label(ptr %t308, { ptr, i64, i64 } %t309) + br label %endif5745 +endif5745: + call void @finch.drop.S_ast_Node(ptr %a211) + call void @finch_str_drop(ptr %a89) + call void @finch_str_drop(ptr %a86) + call void @finch.drop.S_ast_Node(ptr %a80) + br label %for.step5679 +for.step5679: + %t310 = load i64, ptr %a65 + %t311 = add i64 %t310, 1 + store i64 %t311, ptr %a65 + br label %for.cond5677 +for.end5680: + %t312 = load i1, ptr %a52 + %t313 = xor i1 %t312, true + br i1 %t313, label %then5746, label %endif5748 +then5746: + %t314 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 0 %t315 = load { ptr, i64, i64 }, ptr %t314 - %t316 = call i64 @finch.gen.findEnum(ptr %t311, { ptr, i64, i64 } %t313, { ptr, i64, i64 } %t315) - %t317 = load { ptr, i64, i64 }, ptr %t310 - %t318 = extractvalue { ptr, i64, i64 } %t317, 1 - %t319 = icmp uge i64 %t316, %t318 - br i1 %t319, label %range5394, label %inrange5395 -range5394: - call void @finch_panic_index(ptr @.str.3538, i64 2791, i64 %t316, i64 %t318) + store { ptr, i64, i64 } %t315, ptr %a316 + store { ptr, i64, i64 } { ptr @.str.3697, i64 4, i64 0 }, ptr %a317 + %t318 = call i32 @finch_str_eq(ptr %a316, ptr %a317) + %t319 = icmp ne i32 %t318, 0 + br i1 %t319, label %then5749, label %else5750 +then5749: + %t320 = load ptr, ptr %a1 + %t321 = icmp eq ptr %t320, null + br i1 %t321, label %panic5752, label %ok5753 +panic5752: + call void @finch_panic(ptr @.str.3698, i64 3040, ptr @.str.3699) unreachable -inrange5395: - %t320 = extractvalue { ptr, i64, i64 } %t317, 0 - %t321 = getelementptr inbounds %S.gen.EnumDef, ptr %t320, i64 %t316 - %t322 = load %S.gen.EnumDef, ptr %t321 - store %S.gen.EnumDef %t322, ptr %a323 - call void @finch.copy.S_gen_EnumDef(ptr %a324, ptr %a323) - %t325 = load %S.gen.EnumDef, ptr %a324 - store %S.gen.EnumDef %t325, ptr %a326 - store { ptr, i64, i64 } zeroinitializer, ptr %a327 - %t328 = getelementptr inbounds %S.gen.EnumDef, ptr %a326, i32 0, i32 2 - %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.cond5396 -for.cond5396: - %t332 = load i64, ptr %a331 - %t333 = icmp slt i64 %t332, %t330 - br i1 %t333, label %for.body5397, label %for.end5399 -for.body5397: - %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 %range5400, label %inrange5401 -range5400: - call void @finch_panic_index(ptr @.str.3539, i64 2794, i64 %t336, i64 %t338) +ok5753: + %t322 = getelementptr inbounds %S.gen.Gen, ptr %t320, i32 0, i32 21 + %t323 = load ptr, ptr %a1 + %t324 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 3 + %t325 = load { ptr, i64, i64 }, ptr %t324 + %t326 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 2 + %t327 = load { ptr, i64, i64 }, ptr %t326 + %t328 = call i64 @finch.gen.findEnum(ptr %t323, { ptr, i64, i64 } %t325, { ptr, i64, i64 } %t327) + %t329 = load { ptr, i64, i64 }, ptr %t322 + %t330 = extractvalue { ptr, i64, i64 } %t329, 1 + %t331 = icmp uge i64 %t328, %t330 + br i1 %t331, label %range5754, label %inrange5755 +range5754: + call void @finch_panic_index(ptr @.str.3700, i64 3040, i64 %t328, i64 %t330) unreachable -inrange5401: - %t340 = extractvalue { ptr, i64, i64 } %t337, 0 - %t341 = getelementptr inbounds i64, ptr %t340, i64 %t336 +inrange5755: + %t332 = extractvalue { ptr, i64, i64 } %t329, 0 + %t333 = getelementptr inbounds %S.gen.EnumDef, ptr %t332, i64 %t328 + %t334 = load %S.gen.EnumDef, ptr %t333 + store %S.gen.EnumDef %t334, ptr %a335 + call void @finch.copy.S_gen_EnumDef(ptr %a336, ptr %a335) + %t337 = load %S.gen.EnumDef, ptr %a336 + store %S.gen.EnumDef %t337, ptr %a338 + store { ptr, i64, i64 } zeroinitializer, ptr %a339 + %t340 = getelementptr inbounds %S.gen.EnumDef, ptr %a338, i32 0, i32 2 + %t341 = getelementptr inbounds { ptr, i64, i64 }, ptr %t340, i32 0, i32 1 %t342 = load i64, ptr %t341 - call void @finch_str_from_int(ptr %a343, i64 %t342) - %t344 = load { ptr, i64, i64 }, ptr %a343 - store i64 -1, ptr %a345 - %t346 = load i64, ptr %t334 - %t347 = load ptr, ptr %a46 - store i64 0, ptr %a348 - br label %find.cond5402 -find.cond5402: - %t349 = load i64, ptr %a348 - %t350 = icmp slt i64 %t349, %t346 - br i1 %t350, label %find.body5403, label %find.end5406 -find.body5403: - %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.hit5404, label %find.next5405 -find.hit5404: - store i64 %t349, ptr %a345 - br label %find.end5406 -find.next5405: - %t357 = add i64 %t349, 1 - store i64 %t357, ptr %a348 - br label %find.cond5402 -find.end5406: - %t358 = load i64, ptr %a345 - %t359 = icmp sge i64 %t358, 0 - %t360 = xor i1 %t359, true - br i1 %t360, label %then5407, label %endif5409 -then5407: - %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 %range5410, label %inrange5411 -range5410: - call void @finch_panic_index(ptr @.str.3540, i64 2795, i64 %t363, i64 %t365) + store i64 0, ptr %a343 + br label %for.cond5756 +for.cond5756: + %t344 = load i64, ptr %a343 + %t345 = icmp slt i64 %t344, %t342 + br i1 %t345, label %for.body5757, label %for.end5759 +for.body5757: + %t346 = getelementptr inbounds { ptr, i64, i64 }, ptr %a54, i32 0, i32 1 + %t347 = getelementptr inbounds %S.gen.EnumDef, ptr %a338, i32 0, i32 3 + %t348 = load i64, ptr %a343 + %t349 = load { ptr, i64, i64 }, ptr %t347 + %t350 = extractvalue { ptr, i64, i64 } %t349, 1 + %t351 = icmp uge i64 %t348, %t350 + br i1 %t351, label %range5760, label %inrange5761 +range5760: + call void @finch_panic_index(ptr @.str.3701, i64 3043, i64 %t348, i64 %t350) unreachable -inrange5411: - %t367 = extractvalue { ptr, i64, i64 } %t364, 0 - %t368 = getelementptr inbounds { ptr, i64, i64 }, ptr %t367, i64 %t363 - %t369 = load { ptr, i64, i64 }, ptr %t368 - store { ptr, i64, i64 } %t369, ptr %a370 - call void @finch_str_copy(ptr %a371, ptr %a370) - %t372 = load { ptr, i64, i64 }, ptr %a371 - %t373 = load i64, ptr %t361 - %t374 = add i64 %t373, 1 - call void @finch_arr_reserve(ptr %a327, i64 %t374, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t375 = load ptr, ptr %a327 - %t376 = getelementptr inbounds { ptr, i64, i64 }, ptr %t375, i64 %t373 - store { ptr, i64, i64 } %t372, ptr %t376 - store i64 %t374, ptr %t361 - br label %endif5409 -endif5409: - br label %for.step5398 -for.step5398: - %t377 = load i64, ptr %a331 - %t378 = add i64 %t377, 1 - store i64 %t378, ptr %a331 - br label %for.cond5396 -for.end5399: - %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 %then5412, label %endif5414 -then5412: - %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.3542, 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.3541, 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.3543, 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 %endif5414 -endif5414: - br label %endif5391 -else5390: - %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.3544, 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.3545, 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 %endif5391 -endif5391: - %t408 = load ptr, ptr %a1 - %t409 = load %S.ast.Node, ptr %a2 - call void @finch.gen.panicIf(ptr %t408, { ptr, i64, i64 } { ptr @.str.3546, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.3547, 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.3548, i64 11, i64 0 }) - %t411 = load ptr, ptr %a1 - %t412 = icmp eq ptr %t411, null - br i1 %t412, label %panic5415, label %ok5416 -panic5415: - call void @finch_panic(ptr @.str.3549, i64 2807, ptr @.str.3550) +inrange5761: + %t352 = extractvalue { ptr, i64, i64 } %t349, 0 + %t353 = getelementptr inbounds i64, ptr %t352, i64 %t348 + %t354 = load i64, ptr %t353 + call void @finch_str_from_int(ptr %a355, i64 %t354) + %t356 = load { ptr, i64, i64 }, ptr %a355 + store i64 -1, ptr %a357 + %t358 = load i64, ptr %t346 + %t359 = load ptr, ptr %a54 + store i64 0, ptr %a360 + br label %find.cond5762 +find.cond5762: + %t361 = load i64, ptr %a360 + %t362 = icmp slt i64 %t361, %t358 + br i1 %t362, label %find.body5763, label %find.end5766 +find.body5763: + %t363 = getelementptr inbounds { ptr, i64, i64 }, ptr %t359, i64 %t361 + %t364 = load { ptr, i64, i64 }, ptr %t363 + store { ptr, i64, i64 } %t364, ptr %a365 + store { ptr, i64, i64 } %t356, ptr %a366 + %t367 = call i32 @finch_str_eq(ptr %a365, ptr %a366) + %t368 = icmp ne i32 %t367, 0 + br i1 %t368, label %find.hit5764, label %find.next5765 +find.hit5764: + store i64 %t361, ptr %a357 + br label %find.end5766 +find.next5765: + %t369 = add i64 %t361, 1 + store i64 %t369, ptr %a360 + br label %find.cond5762 +find.end5766: + store { ptr, i64, i64 } %t356, ptr %a370 + call void @finch_str_drop(ptr %a370) + %t371 = load i64, ptr %a357 + %t372 = icmp sge i64 %t371, 0 + %t373 = xor i1 %t372, true + br i1 %t373, label %then5767, label %endif5769 +then5767: + %t374 = getelementptr inbounds { ptr, i64, i64 }, ptr %a339, i32 0, i32 1 + %t375 = getelementptr inbounds %S.gen.EnumDef, ptr %a338, i32 0, i32 2 + %t376 = load i64, ptr %a343 + %t377 = load { ptr, i64, i64 }, ptr %t375 + %t378 = extractvalue { ptr, i64, i64 } %t377, 1 + %t379 = icmp uge i64 %t376, %t378 + br i1 %t379, label %range5770, label %inrange5771 +range5770: + call void @finch_panic_index(ptr @.str.3702, i64 3044, i64 %t376, i64 %t378) unreachable -ok5416: - %t413 = getelementptr inbounds %S.gen.Gen, ptr %t411, i32 0, i32 9 - store i1 true, ptr %t413 - br label %endif5388 -endif5388: - %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 %then5417, label %endif5419 -then5417: - %t418 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t418, { ptr, i64, i64 } { ptr @.str.3551, i64 11, i64 0 }) - %t419 = load ptr, ptr %a1 - %t420 = icmp eq ptr %t419, null - br i1 %t420, label %panic5420, label %ok5421 -panic5420: - call void @finch_panic(ptr @.str.3552, i64 2812, ptr @.str.3553) +inrange5771: + %t380 = extractvalue { ptr, i64, i64 } %t377, 0 + %t381 = getelementptr inbounds { ptr, i64, i64 }, ptr %t380, i64 %t376 + %t382 = load { ptr, i64, i64 }, ptr %t381 + store { ptr, i64, i64 } %t382, ptr %a383 + call void @finch_str_copy(ptr %a384, ptr %a383) + %t385 = load { ptr, i64, i64 }, ptr %a384 + %t386 = load i64, ptr %t374 + %t387 = add i64 %t386, 1 + call void @finch_arr_reserve(ptr %a339, i64 %t387, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t388 = load ptr, ptr %a339 + %t389 = getelementptr inbounds { ptr, i64, i64 }, ptr %t388, i64 %t386 + store { ptr, i64, i64 } %t385, ptr %t389 + store i64 %t387, ptr %t374 + br label %endif5769 +endif5769: + br label %for.step5758 +for.step5758: + %t390 = load i64, ptr %a343 + %t391 = add i64 %t390, 1 + store i64 %t391, ptr %a343 + br label %for.cond5756 +for.end5759: + %t392 = getelementptr inbounds { ptr, i64, i64 }, ptr %a339, i32 0, i32 1 + %t393 = load i64, ptr %t392 + %t394 = icmp sgt i64 %t393, 0 + br i1 %t394, label %then5772, label %endif5774 +then5772: + %t395 = load ptr, ptr %a1 + %t396 = load %S.ast.Node, ptr %a2 + %t397 = getelementptr inbounds { ptr, i64, i64 }, ptr %a339, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.3704, i64 2, i64 0 }, ptr %a398 + call void @finch_str_join(ptr %a399, ptr %a339, ptr %a398) + %t400 = load { ptr, i64, i64 }, ptr %a399 + store { ptr, i64, i64 } { ptr @.str.3703, i64 26, i64 0 }, ptr %a402 + store { ptr, i64, i64 } %t400, ptr %a403 + call void @finch_str_concat(ptr %a401, ptr %a402, ptr %a403) + store { ptr, i64, i64 } %t400, ptr %a404 + call void @finch_str_drop(ptr %a404) + %t405 = load { ptr, i64, i64 }, ptr %a401 + store { ptr, i64, i64 } %t405, ptr %a407 + store { ptr, i64, i64 } { ptr @.str.3705, i64 29, i64 0 }, ptr %a408 + call void @finch_str_concat(ptr %a406, ptr %a407, ptr %a408) + store { ptr, i64, i64 } %t405, ptr %a409 + call void @finch_str_drop(ptr %a409) + %t410 = load { ptr, i64, i64 }, ptr %a406 + call void @finch.gen.fail(ptr %t395, %S.ast.Node %t396, { ptr, i64, i64 } %t410) + store { ptr, i64, i64 } %t410, ptr %a411 + call void @finch_str_drop(ptr %a411) + br label %endif5774 +endif5774: + call void @finch.drop.arr_str(ptr %a339) + call void @finch.drop.S_gen_EnumDef(ptr %a338) + br label %endif5751 +else5750: + %t412 = load ptr, ptr %a1 + %t413 = load %S.ast.Node, ptr %a2 + %t414 = load %S.ast.Type, ptr %a19 + %t415 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t414) + store { ptr, i64, i64 } { ptr @.str.3706, i64 11, i64 0 }, ptr %a417 + store { ptr, i64, i64 } %t415, ptr %a418 + call void @finch_str_concat(ptr %a416, ptr %a417, ptr %a418) + store { ptr, i64, i64 } %t415, ptr %a419 + call void @finch_str_drop(ptr %a419) + %t420 = load { ptr, i64, i64 }, ptr %a416 + store { ptr, i64, i64 } %t420, ptr %a422 + store { ptr, i64, i64 } { ptr @.str.3707, i64 54, i64 0 }, ptr %a423 + call void @finch_str_concat(ptr %a421, ptr %a422, ptr %a423) + store { ptr, i64, i64 } %t420, ptr %a424 + call void @finch_str_drop(ptr %a424) + %t425 = load { ptr, i64, i64 }, ptr %a421 + call void @finch.gen.fail(ptr %t412, %S.ast.Node %t413, { ptr, i64, i64 } %t425) + store { ptr, i64, i64 } %t425, ptr %a426 + call void @finch_str_drop(ptr %a426) + br label %endif5751 +endif5751: + %t427 = load ptr, ptr %a1 + %t428 = load %S.ast.Node, ptr %a2 + call void @finch.gen.panicIf(ptr %t427, { ptr, i64, i64 } { ptr @.str.3708, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.3709, i64 35, i64 0 }, %S.ast.Node %t428) + %t429 = load ptr, ptr %a1 + call void @finch.gen.emit(ptr %t429, { ptr, i64, i64 } { ptr @.str.3710, i64 11, i64 0 }) + %t430 = load ptr, ptr %a1 + %t431 = icmp eq ptr %t430, null + br i1 %t431, label %panic5775, label %ok5776 +panic5775: + call void @finch_panic(ptr @.str.3711, i64 3056, ptr @.str.3712) unreachable -ok5421: - %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.3554, i64 4, i64 0 }) - %t423 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t422, 1 - ret %S.gen.Val %t423 -endif5419: - %t424 = load i1, ptr %a3 - br i1 %t424, label %then5422, label %endif5424 -then5422: - %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.3555, 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.3556, 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 - %t438 = load { ptr, i64, i64 }, ptr %a48 - %t439 = call { ptr, i64, i64 } @finch.gen.phiList({ ptr, i64, i64 } %t437, { ptr, i64, i64 } %t438) - store { ptr, i64, i64 } %t436, 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 - %t444 = call { ptr, i64, i64 } @finch.gen.op(ptr %t425, { ptr, i64, i64 } %t443) - %t445 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t444, 0 - %t446 = load %S.ast.Type, ptr %a50 - store %S.ast.Type %t446, ptr %a447 - call void @finch.copy.S_ast_Type(ptr %a448, ptr %a447) - %t449 = load %S.ast.Type, ptr %a448 - %t450 = insertvalue %S.gen.Val %t445, %S.ast.Type %t449, 1 - %t451 = load ptr, ptr %a1 - %t452 = load %S.ast.Type, ptr %a50 - %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 -endif5424: - %t455 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3557, i64 4, i64 0 }) - %t456 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t455, 1 - ret %S.gen.Val %t456 +ok5776: + %t432 = getelementptr inbounds %S.gen.Gen, ptr %t430, i32 0, i32 9 + store i1 true, ptr %t432 + br label %endif5748 +endif5748: + %t433 = load ptr, ptr %a1 + %t434 = load i64, ptr %a46 + call void @finch.gen.heldEnd(ptr %t433, i64 %t434) + %t435 = load ptr, ptr %a1 + %t436 = load { ptr, i64, i64 }, ptr %a51 + call void @finch.gen.label(ptr %t435, { ptr, i64, i64 } %t436) + %t437 = load i1, ptr %a53 + %t438 = xor i1 %t437, true + br i1 %t438, label %then5777, label %endif5779 +then5777: + %t439 = load ptr, ptr %a1 + call void @finch.gen.emit(ptr %t439, { ptr, i64, i64 } { ptr @.str.3713, i64 11, i64 0 }) + %t440 = load ptr, ptr %a1 + %t441 = icmp eq ptr %t440, null + br i1 %t441, label %panic5780, label %ok5781 +panic5780: + call void @finch_panic(ptr @.str.3714, i64 3062, ptr @.str.3715) + unreachable +ok5781: + %t442 = getelementptr inbounds %S.gen.Gen, ptr %t440, i32 0, i32 9 + store i1 true, ptr %t442 + %t443 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3716, i64 4, i64 0 }) + %t444 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t443, 1 + call void @finch.drop.S_ast_Type(ptr %a58) + call void @finch.drop.arr_str(ptr %a56) + call void @finch.drop.arr_str(ptr %a55) + call void @finch.drop.arr_str(ptr %a54) + call void @finch_str_drop(ptr %a51) + call void @finch.drop.S_ast_Type(ptr %a19) + call void @finch.drop.S_gen_Val(ptr %a13) + ret %S.gen.Val %t444 +endif5779: + %t445 = load i1, ptr %a3 + br i1 %t445, label %then5782, label %endif5784 +then5782: + %t446 = load ptr, ptr %a1 + %t447 = load ptr, ptr %a1 + %t448 = load %S.ast.Type, ptr %a58 + %t449 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t447, %S.ast.Type %t448) + store { ptr, i64, i64 } { ptr @.str.3717, i64 4, i64 0 }, ptr %a451 + store { ptr, i64, i64 } %t449, ptr %a452 + call void @finch_str_concat(ptr %a450, ptr %a451, ptr %a452) + store { ptr, i64, i64 } %t449, ptr %a453 + call void @finch_str_drop(ptr %a453) + %t454 = load { ptr, i64, i64 }, ptr %a450 + store { ptr, i64, i64 } %t454, ptr %a456 + store { ptr, i64, i64 } { ptr @.str.3718, i64 1, i64 0 }, ptr %a457 + call void @finch_str_concat(ptr %a455, ptr %a456, ptr %a457) + store { ptr, i64, i64 } %t454, ptr %a458 + call void @finch_str_drop(ptr %a458) + %t459 = load { ptr, i64, i64 }, ptr %a455 + %t460 = load { ptr, i64, i64 }, ptr %a55 + %t461 = load { ptr, i64, i64 }, ptr %a56 + %t462 = call { ptr, i64, i64 } @finch.gen.phiList({ ptr, i64, i64 } %t460, { ptr, i64, i64 } %t461) + store { ptr, i64, i64 } %t459, ptr %a464 + store { ptr, i64, i64 } %t462, ptr %a465 + call void @finch_str_concat(ptr %a463, ptr %a464, ptr %a465) + store { ptr, i64, i64 } %t459, ptr %a466 + call void @finch_str_drop(ptr %a466) + store { ptr, i64, i64 } %t462, ptr %a467 + call void @finch_str_drop(ptr %a467) + %t468 = load { ptr, i64, i64 }, ptr %a463 + %t469 = call { ptr, i64, i64 } @finch.gen.op(ptr %t446, { ptr, i64, i64 } %t468) + store { ptr, i64, i64 } %t468, ptr %a470 + call void @finch_str_drop(ptr %a470) + %t471 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t469, 0 + %t472 = load %S.ast.Type, ptr %a58 + store %S.ast.Type %t472, ptr %a473 + call void @finch.copy.S_ast_Type(ptr %a474, ptr %a473) + %t475 = load %S.ast.Type, ptr %a474 + %t476 = insertvalue %S.gen.Val %t471, %S.ast.Type %t475, 1 + %t477 = load ptr, ptr %a1 + %t478 = load %S.ast.Type, ptr %a58 + %t479 = call i1 @finch.gen.owning(ptr %t477, %S.ast.Type %t478) + %t480 = insertvalue %S.gen.Val %t476, i1 %t479, 2 + store %S.gen.Val %t480, ptr %a481 + %t482 = load ptr, ptr %a1 + %t483 = load %S.gen.Val, ptr %a13 + call void @finch.gen.release(ptr %t482, %S.gen.Val %t483) + %t484 = load %S.gen.Val, ptr %a481 + call void @finch.drop.S_ast_Type(ptr %a58) + call void @finch.drop.arr_str(ptr %a56) + call void @finch.drop.arr_str(ptr %a55) + call void @finch.drop.arr_str(ptr %a54) + call void @finch_str_drop(ptr %a51) + call void @finch.drop.S_ast_Type(ptr %a19) + call void @finch.drop.S_gen_Val(ptr %a13) + ret %S.gen.Val %t484 +endif5784: + %t485 = load ptr, ptr %a1 + %t486 = load %S.gen.Val, ptr %a13 + call void @finch.gen.release(ptr %t485, %S.gen.Val %t486) + %t487 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3719, i64 4, i64 0 }) + %t488 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t487, 1 + call void @finch.drop.S_ast_Type(ptr %a58) + call void @finch.drop.arr_str(ptr %a56) + call void @finch.drop.arr_str(ptr %a55) + call void @finch.drop.arr_str(ptr %a54) + call void @finch_str_drop(ptr %a51) + call void @finch.drop.S_ast_Type(ptr %a19) + call void @finch.drop.S_gen_Val(ptr %a13) + ret %S.gen.Val %t488 } define internal { ptr, i64, i64 } @finch.gen.phiList({ ptr, i64, i64 } %p0, { ptr, i64, i64 } %p1) { @@ -49838,103 +59071,96 @@ entry: %a21 = alloca { ptr, i64, i64 }, align 16 %a22 = alloca { ptr, i64, i64 }, align 16 %a23 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 + %a24 = 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 %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 %a38 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = 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 + %a50 = alloca { ptr, i64, i64 }, align 16 + %a51 = alloca { ptr, i64, i64 }, align 16 store { ptr, i64, i64 } %p0, ptr %a1 store { ptr, i64, i64 } %p1, ptr %a2 store { ptr, i64, i64 } zeroinitializer, ptr %a3 %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.cond5425 -for.cond5425: + br label %for.cond5785 +for.cond5785: %t7 = load i64, ptr %a6 %t8 = icmp slt i64 %t7, %t5 - br i1 %t8, label %for.body5426, label %for.end5428 -for.body5426: + br i1 %t8, label %for.body5786, label %for.end5788 +for.body5786: %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 %range5429, label %inrange5430 -range5429: - call void @finch_panic_index(ptr @.str.3559, i64 2824, i64 %t10, i64 %t12) + br i1 %t13, label %range5789, label %inrange5790 +range5789: + call void @finch_panic_index(ptr @.str.3721, i64 3077, i64 %t10, i64 %t12) unreachable -inrange5430: +inrange5790: %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.3558, i64 2, i64 0 }, ptr %a18 + store { ptr, i64, i64 } { ptr @.str.3720, 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.3560, i64 3, i64 0 }, ptr %a23 + store { ptr, i64, i64 } { ptr @.str.3722, 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 %range5431, label %inrange5432 -range5431: - call void @finch_panic_index(ptr @.str.3561, i64 2824, i64 %t25, i64 %t27) + store { ptr, i64, i64 } %t20, ptr %a24 + call void @finch_str_drop(ptr %a24) + %t25 = load { ptr, i64, i64 }, ptr %a21 + %t26 = load i64, ptr %a6 + %t27 = load { ptr, i64, i64 }, ptr %a2 + %t28 = extractvalue { ptr, i64, i64 } %t27, 1 + %t29 = icmp uge i64 %t26, %t28 + br i1 %t29, label %range5791, label %inrange5792 +range5791: + call void @finch_panic_index(ptr @.str.3723, i64 3077, i64 %t26, i64 %t28) unreachable -inrange5432: - %t29 = extractvalue { ptr, i64, i64 } %t26, 0 - %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 %t25 - %t31 = load { ptr, i64, i64 }, ptr %t30 - store { ptr, i64, i64 } %t24, 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.3562, 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 - %t41 = add i64 %t40, 1 - call void @finch_arr_reserve(ptr %a3, i64 %t41, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t42 = load ptr, ptr %a3 - %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.step5427 -for.step5427: - %t44 = load i64, ptr %a6 - %t45 = add i64 %t44, 1 - store i64 %t45, ptr %a6 - br label %for.cond5425 -for.end5428: - %t46 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.3563, 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 -} - -define internal void @finch.copy.S_gen_Fallible(ptr %dst, ptr %src) { -entry: - - %t1 = load %S.gen.Fallible, ptr %src - store %S.gen.Fallible %t1, ptr %dst - %t2 = getelementptr inbounds %S.gen.Fallible, ptr %dst, i32 0, i32 0 - %t3 = getelementptr inbounds %S.gen.Fallible, ptr %src, i32 0, i32 0 - call void @finch.copy.S_gen_Val(ptr %t2, ptr %t3) - %t4 = getelementptr inbounds %S.gen.Fallible, ptr %dst, i32 0, i32 1 - %t5 = getelementptr inbounds %S.gen.Fallible, ptr %src, i32 0, i32 1 - call void @finch_str_copy(ptr %t4, ptr %t5) - %t6 = getelementptr inbounds %S.gen.Fallible, ptr %dst, i32 0, i32 2 - %t7 = getelementptr inbounds %S.gen.Fallible, ptr %src, i32 0, i32 2 - call void @finch_str_copy(ptr %t6, ptr %t7) - ret void +inrange5792: + %t30 = extractvalue { ptr, i64, i64 } %t27, 0 + %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t30, i64 %t26 + %t32 = load { ptr, i64, i64 }, ptr %t31 + store { ptr, i64, i64 } %t25, ptr %a34 + store { ptr, i64, i64 } %t32, ptr %a35 + call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) + store { ptr, i64, i64 } %t25, ptr %a36 + call void @finch_str_drop(ptr %a36) + %t37 = load { ptr, i64, i64 }, ptr %a33 + store { ptr, i64, i64 } %t37, ptr %a39 + store { ptr, i64, i64 } { ptr @.str.3724, i64 2, i64 0 }, ptr %a40 + call void @finch_str_concat(ptr %a38, ptr %a39, ptr %a40) + store { ptr, i64, i64 } %t37, ptr %a41 + call void @finch_str_drop(ptr %a41) + %t42 = load { ptr, i64, i64 }, ptr %a38 + %t43 = load i64, ptr %t9 + %t44 = add i64 %t43, 1 + call void @finch_arr_reserve(ptr %a3, i64 %t44, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t45 = load ptr, ptr %a3 + %t46 = getelementptr inbounds { ptr, i64, i64 }, ptr %t45, i64 %t43 + store { ptr, i64, i64 } %t42, ptr %t46 + store i64 %t44, ptr %t9 + br label %for.step5787 +for.step5787: + %t47 = load i64, ptr %a6 + %t48 = add i64 %t47, 1 + store i64 %t48, ptr %a6 + br label %for.cond5785 +for.end5788: + %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.3725, i64 2, i64 0 }, ptr %a50 + call void @finch_str_join(ptr %a51, ptr %a3, ptr %a50) + %t52 = load { ptr, i64, i64 }, ptr %a51 + call void @finch.drop.arr_str(ptr %a3) + ret { ptr, i64, i64 } %t52 } define internal %S.gen.Fallible @finch.gen.fallibleCall(ptr %p0, %S.ast.Node %p1) { @@ -49954,60 +59180,64 @@ entry: %a38 = alloca { ptr, i64, i64 }, align 16 %a39 = alloca { ptr, i64, i64 }, align 16 %a41 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca %S.gen.Val, align 16 - %a58 = alloca %S.gen.Val, align 16 - %a59 = alloca %S.gen.Val, align 16 - %a66 = 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 - %a78 = alloca %S.gen.Fallible, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 + %a48 = alloca { ptr, i64, i64 }, align 16 + %a53 = alloca { ptr, i64, i64 }, align 16 + %a58 = alloca { ptr, i64, i64 }, align 16 + %a62 = alloca %S.gen.Val, align 16 + %a64 = alloca %S.gen.Val, align 16 + %a65 = alloca %S.gen.Val, align 16 + %a72 = alloca { ptr, i64, i64 }, align 16 + %a73 = alloca { ptr, i64, i64 }, align 16 + %a80 = alloca { ptr, i64, i64 }, align 16 + %a81 = alloca { ptr, i64, i64 }, align 16 + %a84 = alloca %S.gen.Fallible, align 16 + %a89 = alloca { ptr, i64, i64 }, align 16 %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 + %a93 = alloca { ptr, i64, i64 }, align 16 %a98 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca %S.gen.Fallible, align 16 - %a108 = alloca %S.gen.Fallible, align 16 + %a99 = 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 + %a111 = 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 0 %t4 = load { ptr, i64, i64 }, ptr %t3 store { ptr, i64, i64 } %t4, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.3564, i64 4, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.3726, 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.from5433 -logic.from5433: - br i1 %t8, label %logic.rhs5434, label %logic.end5435 -logic.rhs5434: + br label %logic.from5793 +logic.from5793: + br i1 %t8, label %logic.rhs5794, label %logic.end5795 +logic.rhs5794: %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.3565, i64 6, i64 0 }, ptr %a12 + store { ptr, i64, i64 } { ptr @.str.3727, 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.rend5436 -logic.rend5436: - br label %logic.end5435 -logic.end5435: - %t15 = phi i1 [ false, %logic.from5433 ], [ %t14, %logic.rend5436 ] - br i1 %t15, label %then5437, label %endif5439 -then5437: + br label %logic.rend5796 +logic.rend5796: + br label %logic.end5795 +logic.end5795: + %t15 = phi i1 [ false, %logic.from5793 ], [ %t14, %logic.rend5796 ] + br i1 %t15, label %then5797, label %endif5799 +then5797: %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.3566, i64 80, i64 0 }) - br label %endif5439 -endif5439: + call void @finch.gen.fail(ptr %t16, %S.ast.Node %t17, { ptr, i64, i64 } { ptr @.str.3728, i64 80, i64 0 }) + br label %endif5799 +endif5799: %t18 = load ptr, ptr %a1 %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic5440, label %ok5441 -panic5440: - call void @finch_panic(ptr @.str.3567, i64 2842, ptr @.str.3568) + br i1 %t19, label %panic5800, label %ok5801 +panic5800: + call void @finch_panic(ptr @.str.3729, i64 3095, ptr @.str.3730) unreachable -ok5441: - %t20 = getelementptr inbounds %S.gen.Gen, ptr %t18, i32 0, i32 39 +ok5801: + %t20 = getelementptr inbounds %S.gen.Gen, ptr %t18, i32 0, i32 40 %t21 = load { ptr, i64, i64 }, ptr %t20 store { ptr, i64, i64 } %t21, ptr %a22 call void @finch_str_copy(ptr %a23, ptr %a22) @@ -50015,12 +59245,12 @@ ok5441: store { ptr, i64, i64 } %t24, ptr %a25 %t26 = load ptr, ptr %a1 %t27 = icmp eq ptr %t26, null - br i1 %t27, label %panic5442, label %ok5443 -panic5442: - call void @finch_panic(ptr @.str.3569, i64 2843, ptr @.str.3570) + br i1 %t27, label %panic5802, label %ok5803 +panic5802: + call void @finch_panic(ptr @.str.3731, i64 3096, ptr @.str.3732) unreachable -ok5443: - %t28 = getelementptr inbounds %S.gen.Gen, ptr %t26, i32 0, i32 40 +ok5803: + %t28 = getelementptr inbounds %S.gen.Gen, ptr %t26, i32 0, i32 41 %t29 = load { ptr, i64, i64 }, ptr %t28 store { ptr, i64, i64 } %t29, ptr %a30 call void @finch_str_copy(ptr %a31, ptr %a30) @@ -50028,12 +59258,12 @@ ok5443: store { ptr, i64, i64 } %t32, ptr %a33 %t34 = load ptr, ptr %a1 %t35 = icmp eq ptr %t34, null - br i1 %t35, label %panic5444, label %ok5445 -panic5444: - call void @finch_panic(ptr @.str.3571, i64 2844, ptr @.str.3572) + br i1 %t35, label %panic5804, label %ok5805 +panic5804: + call void @finch_panic(ptr @.str.3733, i64 3097, ptr @.str.3734) unreachable -ok5445: - %t36 = getelementptr inbounds %S.gen.Gen, ptr %t34, i32 0, i32 41 +ok5805: + %t36 = getelementptr inbounds %S.gen.Gen, ptr %t34, i32 0, i32 42 %t37 = load { ptr, i64, i64 }, ptr %t36 store { ptr, i64, i64 } %t37, ptr %a38 call void @finch_str_copy(ptr %a39, ptr %a38) @@ -50043,122 +59273,153 @@ ok5445: %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 %panic5446, label %ok5447 -panic5446: - call void @finch_panic(ptr @.str.3573, i64 2845, ptr @.str.3574) + br i1 %t45, label %panic5806, label %ok5807 +panic5806: + call void @finch_panic(ptr @.str.3735, i64 3098, ptr @.str.3736) unreachable -ok5447: - %t46 = getelementptr inbounds %S.gen.Gen, ptr %t44, i32 0, i32 39 +ok5807: + %t46 = getelementptr inbounds %S.gen.Gen, ptr %t44, i32 0, i32 40 + %t47 = load { ptr, i64, i64 }, ptr %t46 store { ptr, i64, i64 } %t43, ptr %t46 - %t47 = load ptr, ptr %a1 - %t48 = icmp eq ptr %t47, null - br i1 %t48, label %panic5448, label %ok5449 -panic5448: - call void @finch_panic(ptr @.str.3576, i64 2846, ptr @.str.3577) + store { ptr, i64, i64 } %t47, ptr %a48 + call void @finch_str_drop(ptr %a48) + %t49 = load ptr, ptr %a1 + %t50 = icmp eq ptr %t49, null + br i1 %t50, label %panic5808, label %ok5809 +panic5808: + call void @finch_panic(ptr @.str.3738, i64 3099, ptr @.str.3739) unreachable -ok5449: - %t49 = getelementptr inbounds %S.gen.Gen, ptr %t47, i32 0, i32 40 - store { ptr, i64, i64 } { ptr @.str.3575, i64 0, i64 0 }, ptr %t49 - %t50 = load ptr, ptr %a1 - %t51 = icmp eq ptr %t50, null - br i1 %t51, label %panic5450, label %ok5451 -panic5450: - call void @finch_panic(ptr @.str.3579, i64 2847, ptr @.str.3580) +ok5809: + %t51 = getelementptr inbounds %S.gen.Gen, ptr %t49, i32 0, i32 41 + %t52 = load { ptr, i64, i64 }, ptr %t51 + store { ptr, i64, i64 } { ptr @.str.3737, i64 0, i64 0 }, ptr %t51 + store { ptr, i64, i64 } %t52, ptr %a53 + call void @finch_str_drop(ptr %a53) + %t54 = load ptr, ptr %a1 + %t55 = icmp eq ptr %t54, null + br i1 %t55, label %panic5810, label %ok5811 +panic5810: + call void @finch_panic(ptr @.str.3741, i64 3100, ptr @.str.3742) unreachable -ok5451: - %t52 = getelementptr inbounds %S.gen.Gen, ptr %t50, i32 0, i32 41 - store { ptr, i64, i64 } { ptr @.str.3578, 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) - store %S.gen.Val %t55, ptr %a56 - %t57 = load %S.gen.Val, ptr %a56 - store %S.gen.Val %t57, ptr %a58 - call void @finch.copy.S_gen_Val(ptr %a59, ptr %a58) - %t60 = load %S.gen.Val, ptr %a59 - %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 %panic5452, label %ok5453 -panic5452: - call void @finch_panic(ptr @.str.3581, i64 2849, ptr @.str.3582) +ok5811: + %t56 = getelementptr inbounds %S.gen.Gen, ptr %t54, i32 0, i32 42 + %t57 = load { ptr, i64, i64 }, ptr %t56 + store { ptr, i64, i64 } { ptr @.str.3740, i64 0, i64 0 }, ptr %t56 + store { ptr, i64, i64 } %t57, ptr %a58 + call void @finch_str_drop(ptr %a58) + %t59 = load ptr, ptr %a1 + %t60 = load %S.ast.Node, ptr %a2 + %t61 = call %S.gen.Val @finch.gen.expr(ptr %t59, %S.ast.Node %t60) + store %S.gen.Val %t61, ptr %a62 + %t63 = load %S.gen.Val, ptr %a62 + store %S.gen.Val %t63, ptr %a64 + call void @finch.copy.S_gen_Val(ptr %a65, ptr %a64) + %t66 = load %S.gen.Val, ptr %a65 + %t67 = insertvalue %S.gen.Fallible zeroinitializer, %S.gen.Val %t66, 0 + %t68 = load ptr, ptr %a1 + %t69 = icmp eq ptr %t68, null + br i1 %t69, label %panic5812, label %ok5813 +panic5812: + call void @finch_panic(ptr @.str.3743, i64 3102, ptr @.str.3744) unreachable -ok5453: - %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) - %t68 = load { ptr, i64, i64 }, ptr %a67 - %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 %panic5454, label %ok5455 -panic5454: - call void @finch_panic(ptr @.str.3583, i64 2849, ptr @.str.3584) +ok5813: + %t70 = getelementptr inbounds %S.gen.Gen, ptr %t68, i32 0, i32 41 + %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 = insertvalue %S.gen.Fallible %t67, { ptr, i64, i64 } %t74, 1 + %t76 = load ptr, ptr %a1 + %t77 = icmp eq ptr %t76, null + br i1 %t77, label %panic5814, label %ok5815 +panic5814: + call void @finch_panic(ptr @.str.3745, i64 3102, ptr @.str.3746) unreachable -ok5455: - %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) - %t76 = load { ptr, i64, i64 }, ptr %a75 - %t77 = insertvalue %S.gen.Fallible %t69, { ptr, i64, i64 } %t76, 2 - store %S.gen.Fallible %t77, ptr %a78 - %t79 = load { ptr, i64, i64 }, ptr %a25 - %t80 = load ptr, ptr %a1 - %t81 = icmp eq ptr %t80, null - br i1 %t81, label %panic5456, label %ok5457 -panic5456: - call void @finch_panic(ptr @.str.3585, i64 2850, ptr @.str.3586) +ok5815: + %t78 = getelementptr inbounds %S.gen.Gen, ptr %t76, i32 0, i32 42 + %t79 = load { ptr, i64, i64 }, ptr %t78 + store { ptr, i64, i64 } %t79, ptr %a80 + call void @finch_str_copy(ptr %a81, ptr %a80) + %t82 = load { ptr, i64, i64 }, ptr %a81 + %t83 = insertvalue %S.gen.Fallible %t75, { ptr, i64, i64 } %t82, 2 + store %S.gen.Fallible %t83, ptr %a84 + %t85 = load { ptr, i64, i64 }, ptr %a25 + %t86 = load ptr, ptr %a1 + %t87 = icmp eq ptr %t86, null + br i1 %t87, label %panic5816, label %ok5817 +panic5816: + call void @finch_panic(ptr @.str.3747, i64 3103, ptr @.str.3748) unreachable -ok5457: - %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 - store { ptr, i64, i64 } %t85, ptr %t82 - %t86 = load { ptr, i64, i64 }, ptr %a33 - %t87 = load ptr, ptr %a1 - %t88 = icmp eq ptr %t87, null - br i1 %t88, label %panic5458, label %ok5459 -panic5458: - call void @finch_panic(ptr @.str.3587, i64 2851, ptr @.str.3588) +ok5817: + %t88 = getelementptr inbounds %S.gen.Gen, ptr %t86, i32 0, i32 40 + store { ptr, i64, i64 } %t85, ptr %a89 + call void @finch_str_copy(ptr %a90, ptr %a89) + %t91 = load { ptr, i64, i64 }, ptr %a90 + %t92 = load { ptr, i64, i64 }, ptr %t88 + store { ptr, i64, i64 } %t91, ptr %t88 + store { ptr, i64, i64 } %t92, ptr %a93 + call void @finch_str_drop(ptr %a93) + %t94 = load { ptr, i64, i64 }, ptr %a33 + %t95 = load ptr, ptr %a1 + %t96 = icmp eq ptr %t95, null + br i1 %t96, label %panic5818, label %ok5819 +panic5818: + call void @finch_panic(ptr @.str.3749, i64 3104, ptr @.str.3750) unreachable -ok5459: - %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 - store { ptr, i64, i64 } %t92, ptr %t89 - %t93 = load { ptr, i64, i64 }, ptr %a41 - %t94 = load ptr, ptr %a1 - %t95 = icmp eq ptr %t94, null - br i1 %t95, label %panic5460, label %ok5461 -panic5460: - call void @finch_panic(ptr @.str.3589, i64 2852, ptr @.str.3590) - unreachable -ok5461: - %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 - store { ptr, i64, i64 } %t99, ptr %t96 - %t100 = getelementptr inbounds %S.gen.Fallible, ptr %a78, i32 0, i32 1 - %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 %then5462, label %endif5464 -then5462: +ok5819: + %t97 = getelementptr inbounds %S.gen.Gen, ptr %t95, i32 0, i32 41 + store { ptr, i64, i64 } %t94, ptr %a98 + call void @finch_str_copy(ptr %a99, ptr %a98) + %t100 = load { ptr, i64, i64 }, ptr %a99 + %t101 = load { ptr, i64, i64 }, ptr %t97 + store { ptr, i64, i64 } %t100, ptr %t97 + store { ptr, i64, i64 } %t101, ptr %a102 + call void @finch_str_drop(ptr %a102) + %t103 = load { ptr, i64, i64 }, ptr %a41 %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.3591, i64 50, i64 0 }) - br label %endif5464 -endif5464: - %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) - %t109 = load %S.gen.Fallible, ptr %a108 - ret %S.gen.Fallible %t109 + %t105 = icmp eq ptr %t104, null + br i1 %t105, label %panic5820, label %ok5821 +panic5820: + call void @finch_panic(ptr @.str.3751, i64 3105, ptr @.str.3752) + unreachable +ok5821: + %t106 = getelementptr inbounds %S.gen.Gen, ptr %t104, i32 0, i32 42 + store { ptr, i64, i64 } %t103, ptr %a107 + call void @finch_str_copy(ptr %a108, ptr %a107) + %t109 = load { ptr, i64, i64 }, ptr %a108 + %t110 = load { ptr, i64, i64 }, ptr %t106 + store { ptr, i64, i64 } %t109, ptr %t106 + store { ptr, i64, i64 } %t110, ptr %a111 + call void @finch_str_drop(ptr %a111) + %t112 = getelementptr inbounds %S.gen.Fallible, ptr %a84, i32 0, i32 1 + %t113 = getelementptr inbounds { ptr, i64, i64 }, ptr %t112, i32 0, i32 1 + %t114 = load i64, ptr %t113 + %t115 = icmp eq i64 %t114, 0 + br i1 %t115, label %then5822, label %endif5824 +then5822: + %t116 = load ptr, ptr %a1 + %t117 = load %S.ast.Node, ptr %a2 + call void @finch.gen.fail(ptr %t116, %S.ast.Node %t117, { ptr, i64, i64 } { ptr @.str.3753, i64 50, i64 0 }) + br label %endif5824 +endif5824: + %t118 = load %S.gen.Fallible, ptr %a84 + call void @finch.drop.S_gen_Val(ptr %a62) + call void @finch_str_drop(ptr %a41) + call void @finch_str_drop(ptr %a33) + call void @finch_str_drop(ptr %a25) + ret %S.gen.Fallible %t118 +} + +define internal void @finch.drop.S_gen_Fallible(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.gen.Fallible, ptr %a, i32 0, i32 0 + call void @finch.drop.S_gen_Val(ptr %t1) + %t2 = getelementptr inbounds %S.gen.Fallible, ptr %a, i32 0, i32 1 + call void @finch_str_drop(ptr %t2) + %t3 = getelementptr inbounds %S.gen.Fallible, ptr %a, i32 0, i32 2 + call void @finch_str_drop(ptr %t3) + ret void } define internal %S.gen.Val @finch.gen.tryExpr(ptr %p0, %S.ast.Node %p1) { @@ -50171,250 +59432,305 @@ entry: %a33 = alloca { ptr, i64, 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 - %a46 = alloca { ptr, i64, i64 }, align 16 + %a36 = alloca { ptr, i64, i64 }, align 16 + %a39 = 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 - %a50 = 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 %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 %a57 = alloca { ptr, i64, i64 }, align 16 %a58 = alloca { ptr, i64, i64 }, align 16 %a59 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca %S.gen.Fallible, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a76 = 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 + %a60 = alloca { ptr, i64, i64 }, align 16 + %a62 = 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 + %a77 = alloca %S.gen.Fallible, align 16 + %a80 = alloca { ptr, i64, i64 }, align 16 + %a83 = 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 + %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 %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 %a117 = 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 + %a120 = alloca { ptr, i64, i64 }, align 16 %a122 = alloca { ptr, i64, i64 }, align 16 %a123 = 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 - %a137 = alloca %S.gen.Val, align 16 - %a138 = alloca %S.gen.Val, align 16 + %a124 = alloca { ptr, i64, i64 }, align 16 + %a125 = 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 + %a132 = 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 + %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 + %a143 = alloca { ptr, i64, i64 }, align 16 + %a144 = alloca { ptr, i64, i64 }, align 16 + %a145 = alloca { ptr, i64, i64 }, align 16 + %a147 = alloca { ptr, i64, i64 }, align 16 + %a155 = alloca %S.gen.Val, align 16 + %a156 = alloca %S.gen.Val, align 16 store ptr %p0, ptr %a1 store %S.ast.Node %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic5465, label %ok5466 -panic5465: - call void @finch_panic(ptr @.str.3592, i64 2861, ptr @.str.3593) + br i1 %t4, label %panic5825, label %ok5826 +panic5825: + call void @finch_panic(ptr @.str.3754, i64 3114, ptr @.str.3755) unreachable -ok5466: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 44 +ok5826: + %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 45 %t6 = load i64, ptr %t5 %t7 = icmp sgt i64 %t6, 0 - br i1 %t7, label %then5467, label %endif5469 -then5467: + br i1 %t7, label %then5827, label %endif5829 +then5827: %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.3594, i64 30, i64 0 }) - br label %endif5469 -endif5469: + call void @finch.gen.fail(ptr %t8, %S.ast.Node %t9, { ptr, i64, i64 } { ptr @.str.3756, i64 30, i64 0 }) + br label %endif5829 +endif5829: %t10 = load ptr, ptr %a1 %t11 = icmp eq ptr %t10, null - br i1 %t11, label %panic5470, label %ok5471 -panic5470: - call void @finch_panic(ptr @.str.3595, i64 2864, ptr @.str.3596) + br i1 %t11, label %panic5830, label %ok5831 +panic5830: + call void @finch_panic(ptr @.str.3757, i64 3117, ptr @.str.3758) unreachable -ok5471: - %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 12 +ok5831: + %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 13 %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 %then5472, label %endif5474 -then5472: - store { ptr, i64, i64 } { ptr @.str.3597, i64 1, i64 0 }, ptr %a16 + br i1 %t15, label %then5832, label %endif5834 +then5832: + store { ptr, i64, i64 } { ptr @.str.3759, i64 1, i64 0 }, ptr %a16 %t17 = load ptr, ptr %a1 %t18 = icmp eq ptr %t17, null - br i1 %t18, label %panic5475, label %ok5476 -panic5475: - call void @finch_panic(ptr @.str.3598, i64 2866, ptr @.str.3599) + br i1 %t18, label %panic5835, label %ok5836 +panic5835: + call void @finch_panic(ptr @.str.3760, i64 3119, ptr @.str.3761) unreachable -ok5476: - %t19 = getelementptr inbounds %S.gen.Gen, ptr %t17, i32 0, i32 12 +ok5836: + %t19 = getelementptr inbounds %S.gen.Gen, ptr %t17, i32 0, i32 13 %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.3600, i64 4, i64 0 }, ptr %a24 + store { ptr, i64, i64 } { ptr @.str.3762, 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 %then5477, label %endif5479 -then5477: + br i1 %t26, label %then5837, label %endif5839 +then5837: %t27 = load ptr, ptr %a1 %t28 = icmp eq ptr %t27, null - br i1 %t28, label %panic5480, label %ok5481 -panic5480: - call void @finch_panic(ptr @.str.3601, i64 2867, ptr @.str.3602) + br i1 %t28, label %panic5840, label %ok5841 +panic5840: + call void @finch_panic(ptr @.str.3763, i64 3120, ptr @.str.3764) unreachable -ok5481: - %t29 = getelementptr inbounds %S.gen.Gen, ptr %t27, i32 0, i32 12 +ok5841: + %t29 = getelementptr inbounds %S.gen.Gen, ptr %t27, i32 0, i32 13 %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.3603, i64 1, i64 0 }, ptr %a35 + store { ptr, i64, i64 } { ptr @.str.3765, 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 %endif5479 -endif5479: - %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 %panic5482, label %ok5483 -panic5482: - call void @finch_panic(ptr @.str.3605, i64 2869, ptr @.str.3606) + store { ptr, i64, i64 } %t32, ptr %a36 + call void @finch_str_drop(ptr %a36) + %t37 = load { ptr, i64, i64 }, ptr %a33 + %t38 = load { ptr, i64, i64 }, ptr %a16 + store { ptr, i64, i64 } %t37, ptr %a16 + store { ptr, i64, i64 } %t38, ptr %a39 + call void @finch_str_drop(ptr %a39) + br label %endif5839 +endif5839: + %t40 = load ptr, ptr %a1 + %t41 = load %S.ast.Node, ptr %a2 + %t42 = load ptr, ptr %a1 + %t43 = icmp eq ptr %t42, null + br i1 %t43, label %panic5842, label %ok5843 +panic5842: + call void @finch_panic(ptr @.str.3767, i64 3122, ptr @.str.3768) unreachable -ok5483: - %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.3604, 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.3607, 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 - store { ptr, i64, i64 } %t51, ptr %a54 - store { ptr, i64, i64 } %t52, ptr %a55 - 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.3608, i64 55, i64 0 }, ptr %a59 +ok5843: + %t44 = getelementptr inbounds %S.gen.Gen, ptr %t42, i32 0, i32 13 + %t45 = getelementptr inbounds %S.gen.FnSig, ptr %t44, i32 0, i32 1 + %t46 = load { ptr, i64, i64 }, ptr %t45 + store { ptr, i64, i64 } { ptr @.str.3766, i64 29, 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.3769, i64 31, i64 0 }, ptr %a53 + call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) + store { ptr, i64, i64 } %t50, ptr %a54 + call void @finch_str_drop(ptr %a54) + %t55 = load { ptr, i64, i64 }, ptr %a51 + %t56 = load { ptr, i64, i64 }, ptr %a16 + store { ptr, i64, i64 } %t55, ptr %a58 + store { ptr, i64, i64 } %t56, 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 %endif5474 -endif5474: - %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 %range5484, label %inrange5485 -range5484: - call void @finch_panic_index(ptr @.str.3609, i64 2871, i64 0, i64 %t64) + store { ptr, i64, i64 } %t55, ptr %a60 + call void @finch_str_drop(ptr %a60) + %t61 = load { ptr, i64, i64 }, ptr %a57 + store { ptr, i64, i64 } %t61, ptr %a63 + store { ptr, i64, i64 } { ptr @.str.3770, i64 55, i64 0 }, ptr %a64 + call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) + store { ptr, i64, i64 } %t61, ptr %a65 + call void @finch_str_drop(ptr %a65) + %t66 = load { ptr, i64, i64 }, ptr %a62 + call void @finch.gen.fail(ptr %t40, %S.ast.Node %t41, { ptr, i64, i64 } %t66) + store { ptr, i64, i64 } %t66, ptr %a67 + call void @finch_str_drop(ptr %a67) + call void @finch_str_drop(ptr %a16) + br label %endif5834 +endif5834: + %t68 = load ptr, ptr %a1 + %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 0, %t71 + br i1 %t72, label %range5844, label %inrange5845 +range5844: + call void @finch_panic_index(ptr @.str.3771, i64 3124, i64 0, i64 %t71) unreachable -inrange5485: - %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.3610, 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.3611, 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 - %t79 = load { ptr, i64, i64 }, ptr %t78 - %t80 = load { ptr, i64, i64 }, ptr %a73 - %t81 = load { ptr, i64, i64 }, ptr %a76 - call void @finch.gen.condBr(ptr %t77, { ptr, i64, i64 } %t79, { ptr, i64, i64 } %t80, { ptr, i64, i64 } %t81) - %t82 = load ptr, ptr %a1 - %t83 = load { ptr, i64, i64 }, ptr %a73 - call void @finch.gen.label(ptr %t82, { ptr, i64, i64 } %t83) +inrange5845: + %t73 = extractvalue { ptr, i64, i64 } %t70, 0 + %t74 = getelementptr inbounds %S.ast.Node, ptr %t73, i64 0 + %t75 = load %S.ast.Node, ptr %t74 + %t76 = call %S.gen.Fallible @finch.gen.fallibleCall(ptr %t68, %S.ast.Node %t75) + store %S.gen.Fallible %t76, ptr %a77 + %t78 = load ptr, ptr %a1 + %t79 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t78, { ptr, i64, i64 } { ptr @.str.3772, i64 10, i64 0 }) + store { ptr, i64, i64 } %t79, ptr %a80 + %t81 = load ptr, ptr %a1 + %t82 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t81, { ptr, i64, i64 } { ptr @.str.3773, i64 6, i64 0 }) + store { ptr, i64, i64 } %t82, ptr %a83 %t84 = load ptr, ptr %a1 - call void @finch.gen.unwind(ptr %t84, i64 0) - %t85 = load ptr, ptr %a1 - %t86 = load ptr, ptr %a1 - %t87 = load ptr, ptr %a1 - %t88 = icmp eq ptr %t87, null - br i1 %t88, label %panic5486, label %ok5487 -panic5486: - call void @finch_panic(ptr @.str.3613, i64 2877, ptr @.str.3614) + %t85 = getelementptr inbounds %S.gen.Fallible, ptr %a77, i32 0, i32 1 + %t86 = load { ptr, i64, i64 }, ptr %t85 + %t87 = load { ptr, i64, i64 }, ptr %a80 + %t88 = load { ptr, i64, i64 }, ptr %a83 + call void @finch.gen.condBr(ptr %t84, { ptr, i64, i64 } %t86, { ptr, i64, i64 } %t87, { ptr, i64, i64 } %t88) + %t89 = load ptr, ptr %a1 + %t90 = load { ptr, i64, i64 }, ptr %a80 + call void @finch.gen.label(ptr %t89, { ptr, i64, i64 } %t90) + %t91 = load ptr, ptr %a1 + call void @finch.gen.dropPending(ptr %t91, i64 0) + %t92 = load ptr, ptr %a1 + call void @finch.gen.unwind(ptr %t92, i64 0) + %t93 = load ptr, ptr %a1 + %t94 = load ptr, ptr %a1 + %t95 = load ptr, ptr %a1 + %t96 = icmp eq ptr %t95, null + br i1 %t96, label %panic5846, label %ok5847 +panic5846: + call void @finch_panic(ptr @.str.3775, i64 3131, ptr @.str.3776) unreachable -ok5487: - %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.3612, 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.3615, 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 %panic5488, label %ok5489 -panic5488: - call void @finch_panic(ptr @.str.3617, i64 2877, ptr @.str.3618) +ok5847: + %t97 = getelementptr inbounds %S.gen.Gen, ptr %t95, i32 0, i32 13 + %t98 = load %S.gen.FnSig, ptr %t97 + %t99 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t94, %S.gen.FnSig %t98) + store { ptr, i64, i64 } { ptr @.str.3774, i64 4, i64 0 }, ptr %a101 + store { ptr, i64, i64 } %t99, ptr %a102 + call void @finch_str_concat(ptr %a100, ptr %a101, ptr %a102) + store { ptr, i64, i64 } %t99, ptr %a103 + call void @finch_str_drop(ptr %a103) + %t104 = load { ptr, i64, i64 }, ptr %a100 + store { ptr, i64, i64 } %t104, ptr %a106 + store { ptr, i64, i64 } { ptr @.str.3777, i64 1, i64 0 }, ptr %a107 + call void @finch_str_concat(ptr %a105, ptr %a106, ptr %a107) + store { ptr, i64, i64 } %t104, ptr %a108 + call void @finch_str_drop(ptr %a108) + %t109 = load { ptr, i64, i64 }, ptr %a105 + %t110 = load ptr, ptr %a1 + %t111 = load ptr, ptr %a1 + %t112 = load ptr, ptr %a1 + %t113 = icmp eq ptr %t112, null + br i1 %t113, label %panic5848, label %ok5849 +panic5848: + call void @finch_panic(ptr @.str.3779, i64 3131, ptr @.str.3780) unreachable -ok5489: - %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.3616, 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.3619, 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 - %t116 = load { ptr, i64, i64 }, ptr %t115 - store { ptr, i64, i64 } %t114, ptr %a118 +ok5849: + %t114 = getelementptr inbounds %S.gen.Gen, ptr %t112, i32 0, i32 13 + %t115 = load %S.gen.FnSig, ptr %t114 + %t116 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t111, %S.gen.FnSig %t115) + store { ptr, i64, i64 } { ptr @.str.3778, i64 12, 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.3620, 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) - store { ptr, i64, i64 } %t99, 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 - 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 %panic5490, label %ok5491 -panic5490: - call void @finch_panic(ptr @.str.3621, i64 2878, ptr @.str.3622) + store { ptr, i64, i64 } %t116, ptr %a120 + call void @finch_str_drop(ptr %a120) + %t121 = load { ptr, i64, i64 }, ptr %a117 + store { ptr, i64, i64 } %t121, ptr %a123 + store { ptr, i64, i64 } { ptr @.str.3781, i64 36, i64 0 }, ptr %a124 + call void @finch_str_concat(ptr %a122, ptr %a123, ptr %a124) + store { ptr, i64, i64 } %t121, ptr %a125 + call void @finch_str_drop(ptr %a125) + %t126 = load { ptr, i64, i64 }, ptr %a122 + %t127 = getelementptr inbounds %S.gen.Fallible, ptr %a77, i32 0, i32 2 + %t128 = load { ptr, i64, i64 }, ptr %t127 + store { ptr, i64, i64 } %t126, ptr %a130 + store { ptr, i64, i64 } %t128, ptr %a131 + call void @finch_str_concat(ptr %a129, ptr %a130, ptr %a131) + store { ptr, i64, i64 } %t126, ptr %a132 + call void @finch_str_drop(ptr %a132) + %t133 = load { ptr, i64, i64 }, ptr %a129 + store { ptr, i64, i64 } %t133, ptr %a135 + store { ptr, i64, i64 } { ptr @.str.3782, i64 3, i64 0 }, ptr %a136 + call void @finch_str_concat(ptr %a134, ptr %a135, ptr %a136) + store { ptr, i64, i64 } %t133, ptr %a137 + call void @finch_str_drop(ptr %a137) + %t138 = load { ptr, i64, i64 }, ptr %a134 + %t139 = call { ptr, i64, i64 } @finch.gen.op(ptr %t110, { ptr, i64, i64 } %t138) + store { ptr, i64, i64 } %t138, ptr %a140 + call void @finch_str_drop(ptr %a140) + store { ptr, i64, i64 } %t109, ptr %a142 + store { ptr, i64, i64 } %t139, ptr %a143 + call void @finch_str_concat(ptr %a141, ptr %a142, ptr %a143) + store { ptr, i64, i64 } %t109, ptr %a144 + call void @finch_str_drop(ptr %a144) + store { ptr, i64, i64 } %t139, ptr %a145 + call void @finch_str_drop(ptr %a145) + %t146 = load { ptr, i64, i64 }, ptr %a141 + call void @finch.gen.emit(ptr %t93, { ptr, i64, i64 } %t146) + store { ptr, i64, i64 } %t146, ptr %a147 + call void @finch_str_drop(ptr %a147) + %t148 = load ptr, ptr %a1 + %t149 = icmp eq ptr %t148, null + br i1 %t149, label %panic5850, label %ok5851 +panic5850: + call void @finch_panic(ptr @.str.3783, i64 3132, ptr @.str.3784) unreachable -ok5491: - %t132 = getelementptr inbounds %S.gen.Gen, ptr %t130, i32 0, i32 9 - store i1 true, ptr %t132 - %t133 = load ptr, ptr %a1 - %t134 = load { ptr, i64, i64 }, ptr %a76 - call void @finch.gen.label(ptr %t133, { ptr, i64, i64 } %t134) - %t135 = getelementptr inbounds %S.gen.Fallible, ptr %a70, i32 0, i32 0 - %t136 = load %S.gen.Val, ptr %t135 - store %S.gen.Val %t136, ptr %a137 - call void @finch.copy.S_gen_Val(ptr %a138, ptr %a137) - %t139 = load %S.gen.Val, ptr %a138 - ret %S.gen.Val %t139 +ok5851: + %t150 = getelementptr inbounds %S.gen.Gen, ptr %t148, i32 0, i32 9 + store i1 true, ptr %t150 + %t151 = load ptr, ptr %a1 + %t152 = load { ptr, i64, i64 }, ptr %a83 + call void @finch.gen.label(ptr %t151, { ptr, i64, i64 } %t152) + %t153 = getelementptr inbounds %S.gen.Fallible, ptr %a77, i32 0, i32 0 + %t154 = load %S.gen.Val, ptr %t153 + store %S.gen.Val %t154, ptr %a155 + call void @finch.copy.S_gen_Val(ptr %a156, ptr %a155) + %t157 = load %S.gen.Val, ptr %a156 + call void @finch_str_drop(ptr %a83) + call void @finch_str_drop(ptr %a80) + call void @finch.drop.S_gen_Fallible(ptr %a77) + ret %S.gen.Val %t157 } define internal %S.gen.Val @finch.gen.orElse(ptr %p0, %S.ast.Node %p1, i1 %p2) { @@ -50428,52 +59744,66 @@ entry: %a19 = alloca %S.gen.Val, align 16 %a22 = alloca { ptr, i64, i64 }, align 16 %a25 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca i1, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca %S.gen.Val, align 16 - %a105 = alloca %S.gen.Val, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 + %a42 = alloca %S.ast.Type, align 16 + %a43 = alloca { ptr, i64, i64 }, align 16 + %a56 = alloca i1, align 16 + %a63 = alloca { ptr, i64, i64 }, align 16 + %a64 = alloca { ptr, i64, i64 }, align 16 + %a83 = alloca { ptr, i64, i64 }, align 16 + %a84 = alloca { ptr, i64, i64 }, align 16 + %a90 = alloca { ptr, i64, i64 }, align 16 %a111 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca %S.gen.Val, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 + %a112 = alloca { ptr, i64, i64 }, align 16 + %a130 = alloca %S.ast.Type, align 16 + %a131 = alloca { ptr, i64, i64 }, align 16 + %a154 = alloca %S.gen.Val, align 16 + %a155 = alloca %S.gen.Val, align 16 %a159 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 + %a163 = alloca { ptr, i64, i64 }, align 16 + %a166 = 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 + %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 + %a192 = 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 %a198 = alloca { ptr, i64, i64 }, align 16 - %a199 = 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 %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 + %a206 = 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 - %a210 = 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 %a214 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 %a218 = 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 - %a222 = alloca { ptr, i64, i64 }, align 16 %a223 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca %S.ast.Type, align 16 - %a230 = alloca %S.ast.Type, align 16 + %a224 = alloca { ptr, i64, i64 }, align 16 + %a225 = alloca { ptr, i64, i64 }, align 16 + %a226 = alloca { ptr, i64, i64 }, align 16 + %a229 = 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 + %a237 = alloca { ptr, i64, i64 }, align 16 + %a240 = alloca { ptr, i64, i64 }, align 16 + %a244 = alloca %S.ast.Type, align 16 + %a245 = alloca %S.ast.Type, align 16 store ptr %p0, ptr %a1 store %S.ast.Node %p1, ptr %a2 store i1 %p2, ptr %a3 @@ -50482,11 +59812,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 %range5492, label %inrange5493 -range5492: - call void @finch_panic_index(ptr @.str.3623, i64 2885, i64 0, i64 %t7) + br i1 %t8, label %range5852, label %inrange5853 +range5852: + call void @finch_panic_index(ptr @.str.3785, i64 3139, i64 0, i64 %t7) unreachable -inrange5493: +inrange5853: %t9 = extractvalue { ptr, i64, i64 } %t6, 0 %t10 = getelementptr inbounds %S.ast.Node, ptr %t9, i64 0 %t11 = load %S.ast.Node, ptr %t10 @@ -50499,10 +59829,10 @@ inrange5493: %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.3624, i64 9, i64 0 }) + %t21 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t20, { ptr, i64, i64 } { ptr @.str.3786, 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.3625, i64 5, i64 0 }) + %t24 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t23, { ptr, i64, i64 } { ptr @.str.3787, 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 @@ -50515,299 +59845,347 @@ inrange5493: 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 %then5494, label %endif5496 -then5494: + br i1 %t34, label %then5854, label %endif5856 +then5854: %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.3627, i64 3, i64 0 }) + %t38 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3789, 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.3626, 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 %range5497, label %inrange5498 -range5497: - call void @finch_panic_index(ptr @.str.3628, i64 2894, i64 1, i64 %t45) + %t41 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t36, %S.ast.Node %t37, { ptr, i64, i64 } { ptr @.str.3788, i64 3, i64 0 }, %S.ast.Type %t38, { ptr, i64, i64 } %t40, i1 true, i1 true) + store %S.ast.Type %t38, ptr %a42 + call void @finch.drop.S_ast_Type(ptr %a42) + store { ptr, i64, i64 } %t41, ptr %a43 + call void @finch_str_drop(ptr %a43) + %t44 = load ptr, ptr %a1 + %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 %range5857, label %inrange5858 +range5857: + call void @finch_panic_index(ptr @.str.3790, i64 3148, i64 1, i64 %t47) unreachable -inrange5498: - %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 %panic5499, label %ok5500 -panic5499: - call void @finch_panic(ptr @.str.3629, i64 2895, ptr @.str.3630) +inrange5858: + %t49 = extractvalue { ptr, i64, i64 } %t46, 0 + %t50 = getelementptr inbounds %S.ast.Node, ptr %t49, i64 1 + %t51 = load %S.ast.Node, ptr %t50 + call void @finch.gen.block(ptr %t44, %S.ast.Node %t51, i1 true) + %t52 = load ptr, ptr %a1 + %t53 = icmp eq ptr %t52, null + br i1 %t53, label %panic5859, label %ok5860 +panic5859: + call void @finch_panic(ptr @.str.3791, i64 3149, ptr @.str.3792) unreachable -ok5500: - %t52 = getelementptr inbounds %S.gen.Gen, ptr %t50, i32 0, i32 9 - %t53 = load i1, ptr %t52 - store i1 %t53, ptr %a54 - %t55 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t55) - %t56 = load i1, ptr %a54 - %t57 = xor i1 %t56, true - br label %logic.from5501 -logic.from5501: - br i1 %t57, label %logic.rhs5502, label %logic.end5503 -logic.rhs5502: - %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.3631, 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.rend5504 -logic.rend5504: - br label %logic.end5503 -logic.end5503: - %t65 = phi i1 [ false, %logic.from5501 ], [ %t64, %logic.rend5504 ] - br label %logic.from5505 -logic.from5505: - br i1 %t65, label %logic.rhs5506, label %logic.end5507 -logic.rhs5506: - %t66 = load i1, ptr %a3 - %t67 = xor i1 %t66, true - br label %logic.rend5508 -logic.rend5508: - br label %logic.end5507 -logic.end5507: - %t68 = phi i1 [ false, %logic.from5505 ], [ %t67, %logic.rend5508 ] - br i1 %t68, label %then5509, label %endif5511 -then5509: - %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 %range5512, label %inrange5513 -range5512: - call void @finch_panic_index(ptr @.str.3632, i64 2898, i64 1, i64 %t72) +ok5860: + %t54 = getelementptr inbounds %S.gen.Gen, ptr %t52, i32 0, i32 9 + %t55 = load i1, ptr %t54 + store i1 %t55, ptr %a56 + %t57 = load ptr, ptr %a1 + call void @finch.gen.popScope(ptr %t57) + %t58 = load i1, ptr %a56 + %t59 = xor i1 %t58, true + br label %logic.from5861 +logic.from5861: + br i1 %t59, label %logic.rhs5862, label %logic.end5863 +logic.rhs5862: + %t60 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 + %t61 = getelementptr inbounds %S.ast.Type, ptr %t60, i32 0, i32 0 + %t62 = load { ptr, i64, i64 }, ptr %t61 + store { ptr, i64, i64 } %t62, ptr %a63 + store { ptr, i64, i64 } { ptr @.str.3793, i64 4, i64 0 }, ptr %a64 + %t65 = call i32 @finch_str_eq(ptr %a63, ptr %a64) + %t66 = icmp eq i32 %t65, 0 + br label %logic.rend5864 +logic.rend5864: + br label %logic.end5863 +logic.end5863: + %t67 = phi i1 [ false, %logic.from5861 ], [ %t66, %logic.rend5864 ] + br label %logic.from5865 +logic.from5865: + br i1 %t67, label %logic.rhs5866, label %logic.end5867 +logic.rhs5866: + %t68 = load i1, ptr %a3 + %t69 = xor i1 %t68, true + br label %logic.rend5868 +logic.rend5868: + br label %logic.end5867 +logic.end5867: + %t70 = phi i1 [ false, %logic.from5865 ], [ %t69, %logic.rend5868 ] + br i1 %t70, label %then5869, label %endif5871 +then5869: + %t71 = load ptr, ptr %a1 + %t72 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t73 = load { ptr, i64, i64 }, ptr %t72 + %t74 = extractvalue { ptr, i64, i64 } %t73, 1 + %t75 = icmp uge i64 1, %t74 + br i1 %t75, label %range5872, label %inrange5873 +range5872: + call void @finch_panic_index(ptr @.str.3794, i64 3152, i64 1, i64 %t74) unreachable -inrange5513: - %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.3633, i64 142, i64 0 }) - br label %endif5511 -endif5511: - %t77 = load i1, ptr %a3 - br label %logic.from5514 -logic.from5514: - br i1 %t77, label %logic.rhs5515, label %logic.end5516 -logic.rhs5515: - %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.3634, 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.rend5517 -logic.rend5517: - br label %logic.end5516 -logic.end5516: - %t85 = phi i1 [ false, %logic.from5514 ], [ %t84, %logic.rend5517 ] - br i1 %t85, label %then5518, label %endif5520 -then5518: - %t86 = load ptr, ptr %a1 - %t87 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t86, { ptr, i64, i64 } { ptr @.str.3635, i64 6, i64 0 }) - store { ptr, i64, i64 } %t87, ptr %a88 - %t89 = load ptr, ptr %a1 - %t90 = load { ptr, i64, i64 }, ptr %a88 - call void @finch.gen.br(ptr %t89, { ptr, i64, i64 } %t90) +inrange5873: + %t76 = extractvalue { ptr, i64, i64 } %t73, 0 + %t77 = getelementptr inbounds %S.ast.Node, ptr %t76, i64 1 + %t78 = load %S.ast.Node, ptr %t77 + call void @finch.gen.fail(ptr %t71, %S.ast.Node %t78, { ptr, i64, i64 } { ptr @.str.3795, i64 142, i64 0 }) + br label %endif5871 +endif5871: + %t79 = load i1, ptr %a3 + br label %logic.from5874 +logic.from5874: + br i1 %t79, label %logic.rhs5875, label %logic.end5876 +logic.rhs5875: + %t80 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 + %t81 = getelementptr inbounds %S.ast.Type, ptr %t80, i32 0, i32 0 + %t82 = load { ptr, i64, i64 }, ptr %t81 + store { ptr, i64, i64 } %t82, ptr %a83 + store { ptr, i64, i64 } { ptr @.str.3796, i64 4, i64 0 }, ptr %a84 + %t85 = call i32 @finch_str_eq(ptr %a83, ptr %a84) + %t86 = icmp eq i32 %t85, 0 + br label %logic.rend5877 +logic.rend5877: + br label %logic.end5876 +logic.end5876: + %t87 = phi i1 [ false, %logic.from5874 ], [ %t86, %logic.rend5877 ] + br i1 %t87, label %then5878, label %endif5880 +then5878: + %t88 = load ptr, ptr %a1 + %t89 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t88, { ptr, i64, i64 } { ptr @.str.3797, i64 6, i64 0 }) + store { ptr, i64, i64 } %t89, ptr %a90 %t91 = load ptr, ptr %a1 - %t92 = load { ptr, i64, i64 }, ptr %a25 - call void @finch.gen.label(ptr %t91, { ptr, i64, i64 } %t92) + %t92 = load { ptr, i64, i64 }, ptr %a90 + call void @finch.gen.br(ptr %t91, { ptr, i64, i64 } %t92) %t93 = load ptr, ptr %a1 - %t94 = load { ptr, i64, i64 }, ptr %a88 - call void @finch.gen.br(ptr %t93, { ptr, i64, i64 } %t94) + %t94 = load { ptr, i64, i64 }, ptr %a25 + call void @finch.gen.label(ptr %t93, { ptr, i64, i64 } %t94) %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.3636, i64 4, i64 0 }) - %t98 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t97, 1 - ret %S.gen.Val %t98 -endif5520: + %t96 = load %S.gen.Val, ptr %a19 + call void @finch.gen.release(ptr %t95, %S.gen.Val %t96) + %t97 = load ptr, ptr %a1 + %t98 = load { ptr, i64, i64 }, ptr %a90 + call void @finch.gen.br(ptr %t97, { ptr, i64, i64 } %t98) %t99 = load ptr, ptr %a1 - %t100 = load { ptr, i64, i64 }, ptr %a25 - call void @finch.gen.br(ptr %t99, { ptr, i64, i64 } %t100) - %t101 = load ptr, ptr %a1 - %t102 = load { ptr, i64, i64 }, ptr %a25 - call void @finch.gen.label(ptr %t101, { ptr, i64, i64 } %t102) - %t103 = load %S.gen.Val, ptr %a19 - store %S.gen.Val %t103, ptr %a104 - call void @finch.copy.S_gen_Val(ptr %a105, ptr %a104) - %t106 = load %S.gen.Val, ptr %a105 - ret %S.gen.Val %t106 -endif5496: - %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.3637, 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 %then5521, label %endif5523 -then5521: - %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 %range5524, label %inrange5525 -range5524: - call void @finch_panic_index(ptr @.str.3638, i64 2913, i64 1, i64 %t117) + %t100 = load { ptr, i64, i64 }, ptr %a90 + call void @finch.gen.label(ptr %t99, { ptr, i64, i64 } %t100) + %t101 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3798, i64 4, i64 0 }) + %t102 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t101, 1 + call void @finch_str_drop(ptr %a90) + call void @finch_str_drop(ptr %a25) + call void @finch_str_drop(ptr %a22) + call void @finch.drop.S_gen_Val(ptr %a19) + call void @finch.drop.S_gen_Fallible(ptr %a13) + ret %S.gen.Val %t102 +endif5880: + %t103 = load ptr, ptr %a1 + %t104 = load { ptr, i64, i64 }, ptr %a25 + call void @finch.gen.br(ptr %t103, { ptr, i64, i64 } %t104) + %t105 = load ptr, ptr %a1 + %t106 = load { ptr, i64, i64 }, ptr %a25 + call void @finch.gen.label(ptr %t105, { ptr, i64, i64 } %t106) + %t107 = load %S.gen.Val, ptr %a19 + call void @finch_str_drop(ptr %a25) + call void @finch_str_drop(ptr %a22) + call void @finch.drop.S_gen_Fallible(ptr %a13) + ret %S.gen.Val %t107 +endif5856: + %t108 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 + %t109 = getelementptr inbounds %S.ast.Type, ptr %t108, i32 0, i32 0 + %t110 = load { ptr, i64, i64 }, ptr %t109 + store { ptr, i64, i64 } %t110, ptr %a111 + store { ptr, i64, i64 } { ptr @.str.3799, 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 %then5881, label %endif5883 +then5881: + %t115 = load ptr, ptr %a1 + %t116 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t117 = load { ptr, i64, i64 }, ptr %t116 + %t118 = extractvalue { ptr, i64, i64 } %t117, 1 + %t119 = icmp uge i64 1, %t118 + br i1 %t119, label %range5884, label %inrange5885 +range5884: + call void @finch_panic_index(ptr @.str.3800, i64 3168, i64 1, i64 %t118) unreachable -inrange5525: - %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.3639, i64 98, i64 0 }) - br label %endif5523 -endif5523: - %t122 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t122) +inrange5885: + %t120 = extractvalue { ptr, i64, i64 } %t117, 0 + %t121 = getelementptr inbounds %S.ast.Node, ptr %t120, i64 1 + %t122 = load %S.ast.Node, ptr %t121 + call void @finch.gen.fail(ptr %t115, %S.ast.Node %t122, { ptr, i64, i64 } { ptr @.str.3801, i64 98, i64 0 }) + br label %endif5883 +endif5883: %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.3641, 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.3640, 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 %range5526, label %inrange5527 -range5526: - call void @finch_panic_index(ptr @.str.3642, i64 2917, i64 1, i64 %t133) + call void @finch.gen.pushScope(ptr %t123) + %t124 = load ptr, ptr %a1 + %t125 = load %S.ast.Node, ptr %a2 + %t126 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3803, i64 3, i64 0 }) + %t127 = getelementptr inbounds %S.gen.Fallible, ptr %a13, i32 0, i32 2 + %t128 = load { ptr, i64, i64 }, ptr %t127 + %t129 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t124, %S.ast.Node %t125, { ptr, i64, i64 } { ptr @.str.3802, i64 3, i64 0 }, %S.ast.Type %t126, { ptr, i64, i64 } %t128, i1 true, i1 true) + store %S.ast.Type %t126, ptr %a130 + call void @finch.drop.S_ast_Type(ptr %a130) + store { ptr, i64, i64 } %t129, ptr %a131 + call void @finch_str_drop(ptr %a131) + %t132 = load ptr, ptr %a1 + %t133 = load ptr, ptr %a1 + %t134 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t135 = load { ptr, i64, i64 }, ptr %t134 + %t136 = extractvalue { ptr, i64, i64 } %t135, 1 + %t137 = icmp uge i64 1, %t136 + br i1 %t137, label %range5886, label %inrange5887 +range5886: + call void @finch_panic_index(ptr @.str.3804, i64 3172, i64 1, i64 %t136) unreachable -inrange5527: - %t135 = extractvalue { ptr, i64, i64 } %t132, 0 - %t136 = getelementptr inbounds %S.ast.Node, ptr %t135, i64 1 - %t137 = load %S.ast.Node, ptr %t136 - %t138 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 - %t139 = load %S.ast.Type, ptr %t138 - %t140 = call %S.gen.Val @finch.gen.exprWant(ptr %t130, %S.ast.Node %t137, %S.ast.Type %t139) +inrange5887: + %t138 = extractvalue { ptr, i64, i64 } %t135, 0 + %t139 = getelementptr inbounds %S.ast.Node, ptr %t138, i64 1 + %t140 = load %S.ast.Node, ptr %t139 %t141 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 %t142 = load %S.ast.Type, ptr %t141 - %t143 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t144 = load { ptr, i64, i64 }, ptr %t143 - %t145 = extractvalue { ptr, i64, i64 } %t144, 1 - %t146 = icmp uge i64 1, %t145 - br i1 %t146, label %range5528, label %inrange5529 -range5528: - call void @finch_panic_index(ptr @.str.3643, i64 2917, i64 1, i64 %t145) + %t143 = call %S.gen.Val @finch.gen.exprWant(ptr %t133, %S.ast.Node %t140, %S.ast.Type %t142) + %t144 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 + %t145 = load %S.ast.Type, ptr %t144 + %t146 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t147 = load { ptr, i64, i64 }, ptr %t146 + %t148 = extractvalue { ptr, i64, i64 } %t147, 1 + %t149 = icmp uge i64 1, %t148 + br i1 %t149, label %range5888, label %inrange5889 +range5888: + call void @finch_panic_index(ptr @.str.3805, i64 3172, i64 1, i64 %t148) unreachable -inrange5529: - %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.3644, i64 20, i64 0 }) - store %S.gen.Val %t150, ptr %a151 - %t152 = load ptr, ptr %a1 - %t153 = load %S.gen.Val, ptr %a151 - %t154 = call { ptr, i64, i64 } @finch.gen.own(ptr %t152, %S.gen.Val %t153) - store { ptr, i64, i64 } %t154, ptr %a155 +inrange5889: + %t150 = extractvalue { ptr, i64, i64 } %t147, 0 + %t151 = getelementptr inbounds %S.ast.Node, ptr %t150, i64 1 + %t152 = load %S.ast.Node, ptr %t151 + %t153 = call %S.gen.Val @finch.gen.coerce(ptr %t132, %S.gen.Val %t143, %S.ast.Type %t145, %S.ast.Node %t152, { ptr, i64, i64 } { ptr @.str.3806, i64 20, i64 0 }) + store %S.gen.Val %t143, ptr %a154 + call void @finch.drop.S_gen_Val(ptr %a154) + store %S.gen.Val %t153, ptr %a155 %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.3645, i64 7, i64 0 }) + %t157 = load %S.gen.Val, ptr %a155 + %t158 = call { ptr, i64, i64 } @finch.gen.own(ptr %t156, %S.gen.Val %t157) 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.3646, i64 6, i64 0 }) - store { ptr, i64, i64 } %t161, ptr %a162 - %t163 = load ptr, ptr %a1 - %t164 = load { ptr, i64, i64 }, ptr %a159 - call void @finch.gen.br(ptr %t163, { ptr, i64, i64 } %t164) - %t165 = load ptr, ptr %a1 - %t166 = load { ptr, i64, i64 }, ptr %a159 - call void @finch.gen.label(ptr %t165, { ptr, i64, i64 } %t166) + call void @finch.gen.popScope(ptr %t160) + %t161 = load ptr, ptr %a1 + %t162 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t161, { ptr, i64, i64 } { ptr @.str.3807, i64 7, i64 0 }) + store { ptr, i64, i64 } %t162, ptr %a163 + %t164 = load ptr, ptr %a1 + %t165 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t164, { ptr, i64, i64 } { ptr @.str.3808, i64 6, i64 0 }) + store { ptr, i64, i64 } %t165, ptr %a166 %t167 = load ptr, ptr %a1 - %t168 = load { ptr, i64, i64 }, ptr %a162 + %t168 = load { ptr, i64, i64 }, ptr %a163 call void @finch.gen.br(ptr %t167, { ptr, i64, i64 } %t168) %t169 = load ptr, ptr %a1 - %t170 = load { ptr, i64, i64 }, ptr %a25 + %t170 = load { ptr, i64, i64 }, ptr %a163 call void @finch.gen.label(ptr %t169, { ptr, i64, i64 } %t170) %t171 = load ptr, ptr %a1 - %t172 = load { ptr, i64, i64 }, ptr %a162 + %t172 = load { ptr, i64, i64 }, ptr %a166 call void @finch.gen.br(ptr %t171, { ptr, i64, i64 } %t172) %t173 = load ptr, ptr %a1 - %t174 = load { ptr, i64, i64 }, ptr %a162 + %t174 = load { ptr, i64, i64 }, ptr %a25 call void @finch.gen.label(ptr %t173, { ptr, i64, i64 } %t174) %t175 = load ptr, ptr %a1 - %t176 = load ptr, ptr %a1 - %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.3647, 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.3648, i64 3, i64 0 }, ptr %a186 + %t176 = load { ptr, i64, i64 }, ptr %a166 + call void @finch.gen.br(ptr %t175, { ptr, i64, i64 } %t176) + %t177 = load ptr, ptr %a1 + %t178 = load { ptr, i64, i64 }, ptr %a166 + call void @finch.gen.label(ptr %t177, { ptr, i64, i64 } %t178) + %t179 = load ptr, ptr %a1 + %t180 = load ptr, ptr %a1 + %t181 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 + %t182 = load %S.ast.Type, ptr %t181 + %t183 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t180, %S.ast.Type %t182) + store { ptr, i64, i64 } { ptr @.str.3809, i64 4, 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 - %t188 = load { ptr, i64, i64 }, ptr %a155 - store { ptr, i64, i64 } %t187, ptr %a190 - store { ptr, i64, i64 } %t188, ptr %a191 + store { ptr, i64, i64 } %t183, ptr %a187 + call void @finch_str_drop(ptr %a187) + %t188 = load { ptr, i64, i64 }, ptr %a184 + store { ptr, i64, i64 } %t188, ptr %a190 + store { ptr, i64, i64 } { ptr @.str.3810, i64 3, i64 0 }, 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.3649, 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 - store { ptr, i64, i64 } %t196, 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.3650, 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 - %t207 = load { ptr, i64, i64 }, ptr %t206 - store { ptr, i64, i64 } %t205, ptr %a209 - store { ptr, i64, i64 } %t207, ptr %a210 - 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.3651, 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 - store { ptr, i64, i64 } %t215, 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.3652, 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) - %t226 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t225, 0 - %t227 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 - %t228 = load %S.ast.Type, ptr %t227 - store %S.ast.Type %t228, ptr %a229 - call void @finch.copy.S_ast_Type(ptr %a230, ptr %a229) - %t231 = load %S.ast.Type, ptr %a230 - %t232 = insertvalue %S.gen.Val %t226, %S.ast.Type %t231, 1 - %t233 = load ptr, ptr %a1 - %t234 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 - %t235 = load %S.ast.Type, ptr %t234 - %t236 = call i1 @finch.gen.owning(ptr %t233, %S.ast.Type %t235) - %t237 = insertvalue %S.gen.Val %t232, i1 %t236, 2 - ret %S.gen.Val %t237 + store { ptr, i64, i64 } %t188, ptr %a192 + call void @finch_str_drop(ptr %a192) + %t193 = load { ptr, i64, i64 }, ptr %a189 + %t194 = load { ptr, i64, i64 }, ptr %a159 + store { ptr, i64, i64 } %t193, ptr %a196 + store { ptr, i64, i64 } %t194, ptr %a197 + call void @finch_str_concat(ptr %a195, ptr %a196, ptr %a197) + store { ptr, i64, i64 } %t193, ptr %a198 + call void @finch_str_drop(ptr %a198) + %t199 = load { ptr, i64, i64 }, ptr %a195 + store { ptr, i64, i64 } %t199, ptr %a201 + store { ptr, i64, i64 } { ptr @.str.3811, i64 3, i64 0 }, ptr %a202 + call void @finch_str_concat(ptr %a200, ptr %a201, ptr %a202) + store { ptr, i64, i64 } %t199, ptr %a203 + call void @finch_str_drop(ptr %a203) + %t204 = load { ptr, i64, i64 }, ptr %a200 + %t205 = load { ptr, i64, i64 }, ptr %a163 + 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) + store { ptr, i64, i64 } %t204, ptr %a209 + call void @finch_str_drop(ptr %a209) + %t210 = load { ptr, i64, i64 }, ptr %a206 + store { ptr, i64, i64 } %t210, ptr %a212 + store { ptr, i64, i64 } { ptr @.str.3812, i64 6, i64 0 }, ptr %a213 + call void @finch_str_concat(ptr %a211, ptr %a212, ptr %a213) + store { ptr, i64, i64 } %t210, ptr %a214 + call void @finch_str_drop(ptr %a214) + %t215 = load { ptr, i64, i64 }, ptr %a211 + %t216 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 0 + %t217 = load { ptr, i64, i64 }, ptr %t216 + store { ptr, i64, i64 } %t215, ptr %a219 + store { ptr, i64, i64 } %t217, ptr %a220 + call void @finch_str_concat(ptr %a218, ptr %a219, ptr %a220) + store { ptr, i64, i64 } %t215, ptr %a221 + call void @finch_str_drop(ptr %a221) + %t222 = load { ptr, i64, i64 }, ptr %a218 + store { ptr, i64, i64 } %t222, ptr %a224 + store { ptr, i64, i64 } { ptr @.str.3813, i64 3, i64 0 }, ptr %a225 + call void @finch_str_concat(ptr %a223, ptr %a224, ptr %a225) + store { ptr, i64, i64 } %t222, ptr %a226 + call void @finch_str_drop(ptr %a226) + %t227 = load { ptr, i64, i64 }, ptr %a223 + %t228 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t227, ptr %a230 + store { ptr, i64, i64 } %t228, ptr %a231 + call void @finch_str_concat(ptr %a229, ptr %a230, ptr %a231) + store { ptr, i64, i64 } %t227, ptr %a232 + call void @finch_str_drop(ptr %a232) + %t233 = load { ptr, i64, i64 }, ptr %a229 + store { ptr, i64, i64 } %t233, ptr %a235 + store { ptr, i64, i64 } { ptr @.str.3814, i64 2, i64 0 }, ptr %a236 + call void @finch_str_concat(ptr %a234, ptr %a235, ptr %a236) + store { ptr, i64, i64 } %t233, ptr %a237 + call void @finch_str_drop(ptr %a237) + %t238 = load { ptr, i64, i64 }, ptr %a234 + %t239 = call { ptr, i64, i64 } @finch.gen.op(ptr %t179, { ptr, i64, i64 } %t238) + store { ptr, i64, i64 } %t238, ptr %a240 + call void @finch_str_drop(ptr %a240) + %t241 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t239, 0 + %t242 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 + %t243 = load %S.ast.Type, ptr %t242 + store %S.ast.Type %t243, ptr %a244 + call void @finch.copy.S_ast_Type(ptr %a245, ptr %a244) + %t246 = load %S.ast.Type, ptr %a245 + %t247 = insertvalue %S.gen.Val %t241, %S.ast.Type %t246, 1 + %t248 = load ptr, ptr %a1 + %t249 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 + %t250 = load %S.ast.Type, ptr %t249 + %t251 = call i1 @finch.gen.owning(ptr %t248, %S.ast.Type %t250) + %t252 = insertvalue %S.gen.Val %t247, i1 %t251, 2 + call void @finch_str_drop(ptr %a166) + call void @finch_str_drop(ptr %a163) + call void @finch_str_drop(ptr %a159) + call void @finch.drop.S_gen_Val(ptr %a155) + call void @finch_str_drop(ptr %a25) + call void @finch_str_drop(ptr %a22) + call void @finch.drop.S_gen_Val(ptr %a19) + call void @finch.drop.S_gen_Fallible(ptr %a13) + ret %S.gen.Val %t252 } define internal %S.gen.Val @finch.gen.exprWant(ptr %p0, %S.ast.Node %p1, %S.ast.Type %p2) { @@ -50825,31 +60203,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.3653, i64 5, i64 0 }, ptr %a7 + store { ptr, i64, i64 } { ptr @.str.3815, 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 %then5530, label %endif5532 -then5530: + br i1 %t9, label %then5890, label %endif5892 +then5890: %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 -endif5532: +endif5892: %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.3654, i64 3, i64 0 }, ptr %a17 + store { ptr, i64, i64 } { ptr @.str.3816, 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 %then5533, label %endif5535 -then5533: + br i1 %t19, label %then5893, label %endif5895 +then5893: %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 -endif5535: +endif5895: %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) @@ -50906,29 +60284,33 @@ entry: %a180 = alloca %S.gen.Ref, align 16 %a186 = alloca %S.gen.Val, align 16 %a187 = alloca %S.gen.Val, align 16 - %a203 = alloca %S.ast.Type, align 16 + %a199 = alloca { ptr, i64, i64 }, align 16 %a204 = alloca %S.ast.Type, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 + %a205 = alloca %S.ast.Type, align 16 %a209 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 + %a210 = alloca { ptr, i64, i64 }, align 16 %a217 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 + %a218 = alloca { ptr, i64, i64 }, align 16 %a225 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 + %a226 = alloca { ptr, i64, i64 }, align 16 %a233 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 + %a234 = alloca { ptr, i64, i64 }, align 16 %a241 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 + %a242 = alloca { ptr, i64, i64 }, align 16 %a249 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 + %a250 = alloca { ptr, i64, i64 }, align 16 %a257 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 + %a258 = alloca { ptr, i64, i64 }, align 16 %a265 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a274 = 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 + %a266 = alloca { ptr, i64, i64 }, align 16 + %a273 = alloca %S.ast.Type, align 16 + %a275 = alloca { ptr, i64, i64 }, align 16 + %a276 = alloca { ptr, i64, i64 }, align 16 + %a283 = alloca %S.ast.Type, align 16 + %a287 = alloca { ptr, i64, i64 }, align 16 + %a288 = alloca { ptr, i64, i64 }, align 16 + %a289 = alloca { ptr, i64, i64 }, align 16 + %a291 = 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 0 @@ -50939,34 +60321,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.3655, i64 3, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.3817, 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 %then5536, label %endif5538 -then5536: + br i1 %t13, label %then5896, label %endif5898 +then5896: %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.3657, i64 2, i64 0 }, ptr %a18 + store { ptr, i64, i64 } { ptr @.str.3819, 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.from5539 -logic.from5539: - br i1 %t20, label %logic.end5541, label %logic.rhs5540 -logic.rhs5540: + br label %logic.from5899 +logic.from5899: + br i1 %t20, label %logic.end5901, label %logic.rhs5900 +logic.rhs5900: %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.3659, i64 2, i64 0 }, ptr %a25 + store { ptr, i64, i64 } { ptr @.str.3821, 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.rend5542 -logic.rend5542: - br label %logic.end5541 -logic.end5541: - %t28 = phi i1 [ true, %logic.from5539 ], [ %t27, %logic.rend5542 ] - br i1 %t28, label %then5543, label %endif5545 -then5543: + br label %logic.rend5902 +logic.rend5902: + br label %logic.end5901 +logic.end5901: + %t28 = phi i1 [ true, %logic.from5899 ], [ %t27, %logic.rend5902 ] + br i1 %t28, label %then5903, label %endif5905 +then5903: store i64 0, ptr %a29 %t30 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 %t31 = load { ptr, i64, i64 }, ptr %t30 @@ -50974,18 +60356,18 @@ then5543: %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.3660, i64 2946) + call void @finch_str_sub(ptr %a33, ptr %a32, i64 2, i64 %t36, ptr @.str.3822, i64 3201) %t37 = load { ptr, i64, i64 }, ptr %a33 store { ptr, i64, i64 } %t37, ptr %a38 store i64 0, ptr %a39 - br label %each.cond5546 -each.cond5546: + br label %each.cond5906 +each.cond5906: %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.body5547, label %each.end5549 -each.body5547: + br i1 %t43, label %each.body5907, label %each.end5909 +each.body5907: %t44 = load ptr, ptr %a38 %t45 = getelementptr inbounds i8, ptr %t44, i64 %t42 %t46 = load i8, ptr %t45 @@ -50997,134 +60379,139 @@ each.body5547: store i64 %t51, ptr %a52 %t53 = load i8, ptr %a47 %t54 = icmp uge i8 %t53, 97 - br label %logic.from5550 -logic.from5550: - br i1 %t54, label %logic.rhs5551, label %logic.end5552 -logic.rhs5551: + br label %logic.from5910 +logic.from5910: + br i1 %t54, label %logic.rhs5911, label %logic.end5912 +logic.rhs5911: %t55 = load i8, ptr %a47 %t56 = icmp ule i8 %t55, 102 - br label %logic.rend5553 -logic.rend5553: - br label %logic.end5552 -logic.end5552: - %t57 = phi i1 [ false, %logic.from5550 ], [ %t56, %logic.rend5553 ] - br i1 %t57, label %then5554, label %endif5556 -then5554: + br label %logic.rend5913 +logic.rend5913: + br label %logic.end5912 +logic.end5912: + %t57 = phi i1 [ false, %logic.from5910 ], [ %t56, %logic.rend5913 ] + br i1 %t57, label %then5914, label %endif5916 +then5914: %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 %endif5556 -endif5556: + br label %endif5916 +endif5916: %t63 = load i8, ptr %a47 %t64 = icmp uge i8 %t63, 65 - br label %logic.from5557 -logic.from5557: - br i1 %t64, label %logic.rhs5558, label %logic.end5559 -logic.rhs5558: + br label %logic.from5917 +logic.from5917: + br i1 %t64, label %logic.rhs5918, label %logic.end5919 +logic.rhs5918: %t65 = load i8, ptr %a47 %t66 = icmp ule i8 %t65, 70 - br label %logic.rend5560 -logic.rend5560: - br label %logic.end5559 -logic.end5559: - %t67 = phi i1 [ false, %logic.from5557 ], [ %t66, %logic.rend5560 ] - br i1 %t67, label %then5561, label %endif5563 -then5561: + br label %logic.rend5920 +logic.rend5920: + br label %logic.end5919 +logic.end5919: + %t67 = phi i1 [ false, %logic.from5917 ], [ %t66, %logic.rend5920 ] + br i1 %t67, label %then5921, label %endif5923 +then5921: %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 %endif5563 -endif5563: + br label %endif5923 +endif5923: %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.step5548 -each.step5548: + br label %each.step5908 +each.step5908: %t77 = load i64, ptr %a39 %t78 = add i64 %t77, 1 store i64 %t78, ptr %a39 - br label %each.cond5546 -each.end5549: + br label %each.cond5906 +each.end5909: + call void @finch_str_drop(ptr %a38) %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.3661, i64 3, i64 0 }) + %t83 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3823, i64 3, i64 0 }) %t84 = insertvalue %S.gen.Val %t82, %S.ast.Type %t83, 1 %t85 = insertvalue %S.gen.Val %t84, i1 true, 3 + call void @finch_str_drop(ptr %a8) ret %S.gen.Val %t85 -endif5545: +endif5905: %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.3662, i64 2958) + %t89 = call i64 @finch_str_to_int(ptr %a88, ptr @.str.3824, i64 3213) 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.3663, i64 3, i64 0 }) + %t93 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3825, i64 3, i64 0 }) %t94 = insertvalue %S.gen.Val %t92, %S.ast.Type %t93, 1 %t95 = insertvalue %S.gen.Val %t94, i1 true, 3 + call void @finch_str_drop(ptr %a8) ret %S.gen.Val %t95 -endif5538: +endif5898: %t96 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t96, ptr %a97 - store { ptr, i64, i64 } { ptr @.str.3664, i64 5, i64 0 }, ptr %a98 + store { ptr, i64, i64 } { ptr @.str.3826, 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 %then5564, label %endif5566 -then5564: + br i1 %t100, label %then5924, label %endif5926 +then5924: %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.3665, i64 5, i64 0 }) + %t107 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3827, i64 5, i64 0 }) %t108 = insertvalue %S.gen.Val %t106, %S.ast.Type %t107, 1 %t109 = insertvalue %S.gen.Val %t108, i1 true, 3 + call void @finch_str_drop(ptr %a8) ret %S.gen.Val %t109 -endif5566: +endif5926: %t110 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t110, ptr %a111 - store { ptr, i64, i64 } { ptr @.str.3666, i64 4, i64 0 }, ptr %a112 + store { ptr, i64, i64 } { ptr @.str.3828, 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 %then5567, label %endif5569 -then5567: + br i1 %t114, label %then5927, label %endif5929 +then5927: %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.3667, i64 4, i64 0 }) + %t121 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3829, i64 4, i64 0 }) %t122 = insertvalue %S.gen.Val %t120, %S.ast.Type %t121, 1 + call void @finch_str_drop(ptr %a8) ret %S.gen.Val %t122 -endif5569: +endif5929: %t123 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t123, ptr %a124 - store { ptr, i64, i64 } { ptr @.str.3668, i64 4, i64 0 }, ptr %a125 + store { ptr, i64, i64 } { ptr @.str.3830, 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 %then5570, label %endif5572 -then5570: + br i1 %t127, label %then5930, label %endif5932 +then5930: %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 %range5573, label %inrange5574 -range5573: - call void @finch_panic_index(ptr @.str.3669, i64 2967, i64 0, i64 %t130) + br i1 %t131, label %range5933, label %inrange5934 +range5933: + call void @finch_panic_index(ptr @.str.3831, i64 3222, i64 0, i64 %t130) unreachable -inrange5574: +inrange5934: %t132 = extractvalue { ptr, i64, i64 } %t129, 0 %t133 = getelementptr inbounds i8, ptr %t132, i64 0 %t134 = load i8, ptr %t133 @@ -51134,70 +60521,73 @@ inrange5574: 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.3670, i64 4, i64 0 }) + %t141 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3832, i64 4, i64 0 }) %t142 = insertvalue %S.gen.Val %t140, %S.ast.Type %t141, 1 + call void @finch_str_drop(ptr %a8) ret %S.gen.Val %t142 -endif5572: +endif5932: %t143 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t143, ptr %a144 - store { ptr, i64, i64 } { ptr @.str.3671, i64 3, i64 0 }, ptr %a145 + store { ptr, i64, i64 } { ptr @.str.3833, 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 %then5575, label %endif5577 -then5575: + br i1 %t147, label %then5935, label %endif5937 +then5935: %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) + call void @finch_str_drop(ptr %a8) ret %S.gen.Val %t151 -endif5577: +endif5937: %t152 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t152, ptr %a153 - store { ptr, i64, i64 } { ptr @.str.3672, i64 4, i64 0 }, ptr %a154 + store { ptr, i64, i64 } { ptr @.str.3834, 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 %then5578, label %endif5580 -then5578: - %t157 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } { ptr @.str.3673, i64 4, i64 0 }, 0 - %t158 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3674, i64 4, i64 0 }) + br i1 %t156, label %then5938, label %endif5940 +then5938: + %t157 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } { ptr @.str.3835, i64 4, i64 0 }, 0 + %t158 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3836, i64 4, i64 0 }) %t159 = insertvalue %S.gen.Val %t157, %S.ast.Type %t158, 1 + call void @finch_str_drop(ptr %a8) ret %S.gen.Val %t159 -endif5580: +endif5940: %t160 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t160, ptr %a161 - store { ptr, i64, i64 } { ptr @.str.3675, i64 3, i64 0 }, ptr %a162 + store { ptr, i64, i64 } { ptr @.str.3837, 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.from5581 -logic.from5581: - br i1 %t164, label %logic.end5583, label %logic.rhs5582 -logic.rhs5582: + br label %logic.from5941 +logic.from5941: + br i1 %t164, label %logic.end5943, label %logic.rhs5942 +logic.rhs5942: %t165 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t165, ptr %a166 - store { ptr, i64, i64 } { ptr @.str.3676, i64 6, i64 0 }, ptr %a167 + store { ptr, i64, i64 } { ptr @.str.3838, 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.rend5584 -logic.rend5584: - br label %logic.end5583 -logic.end5583: - %t170 = phi i1 [ true, %logic.from5581 ], [ %t169, %logic.rend5584 ] - br label %logic.from5585 -logic.from5585: - br i1 %t170, label %logic.end5587, label %logic.rhs5586 -logic.rhs5586: + br label %logic.rend5944 +logic.rend5944: + br label %logic.end5943 +logic.end5943: + %t170 = phi i1 [ true, %logic.from5941 ], [ %t169, %logic.rend5944 ] + br label %logic.from5945 +logic.from5945: + br i1 %t170, label %logic.end5947, label %logic.rhs5946 +logic.rhs5946: %t171 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t171, ptr %a172 - store { ptr, i64, i64 } { ptr @.str.3677, i64 5, i64 0 }, ptr %a173 + store { ptr, i64, i64 } { ptr @.str.3839, 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.rend5588 -logic.rend5588: - br label %logic.end5587 -logic.end5587: - %t176 = phi i1 [ true, %logic.from5585 ], [ %t175, %logic.rend5588 ] - br i1 %t176, label %then5589, label %endif5591 -then5589: + br label %logic.rend5948 +logic.rend5948: + br label %logic.end5947 +logic.end5947: + %t176 = phi i1 [ true, %logic.from5945 ], [ %t175, %logic.rend5948 ] + br i1 %t176, label %then5949, label %endif5951 +then5949: %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) @@ -51205,15 +60595,17 @@ then5589: %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 %then5592, label %endif5594 -then5592: + br i1 %t183, label %then5952, label %endif5954 +then5952: %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 + call void @finch.drop.S_gen_Ref(ptr %a180) + call void @finch_str_drop(ptr %a8) ret %S.gen.Val %t188 -endif5594: +endif5954: %t189 = load ptr, ptr %a1 %t190 = load ptr, ptr %a1 %t191 = getelementptr inbounds %S.gen.Ref, ptr %a180, i32 0, i32 1 @@ -51224,134 +60616,154 @@ endif5594: %t196 = getelementptr inbounds %S.gen.Place, ptr %t195, i32 0, i32 0 %t197 = load { ptr, i64, i64 }, ptr %t196 %t198 = call { ptr, i64, i64 } @finch.gen.load(ptr %t189, { ptr, i64, i64 } %t194, { ptr, i64, i64 } %t197) - %t199 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t198, 0 - %t200 = getelementptr inbounds %S.gen.Ref, ptr %a180, i32 0, i32 1 - %t201 = getelementptr inbounds %S.gen.Place, ptr %t200, i32 0, i32 1 - %t202 = load %S.ast.Type, ptr %t201 - store %S.ast.Type %t202, ptr %a203 - call void @finch.copy.S_ast_Type(ptr %a204, ptr %a203) - %t205 = load %S.ast.Type, ptr %a204 - %t206 = insertvalue %S.gen.Val %t199, %S.ast.Type %t205, 1 - ret %S.gen.Val %t206 -endif5591: - %t207 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t207, ptr %a208 - store { ptr, i64, i64 } { ptr @.str.3678, 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 %then5595, label %endif5597 -then5595: - %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 -endif5597: - %t215 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t215, ptr %a216 - store { ptr, i64, i64 } { ptr @.str.3679, 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 %then5598, label %endif5600 -then5598: - %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 -endif5600: - %t223 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t223, ptr %a224 - store { ptr, i64, i64 } { ptr @.str.3680, 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 %then5601, label %endif5603 -then5601: - %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 -endif5603: - %t231 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t231, ptr %a232 - store { ptr, i64, i64 } { ptr @.str.3681, 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 %then5604, label %endif5606 -then5604: - %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 -endif5606: - %t239 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t239, ptr %a240 - store { ptr, i64, i64 } { ptr @.str.3682, 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 %then5607, label %endif5609 -then5607: - %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 -endif5609: - %t247 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t247, ptr %a248 - store { ptr, i64, i64 } { ptr @.str.3683, 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 %then5610, label %endif5612 -then5610: - %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 -endif5612: - %t255 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t255, ptr %a256 - store { ptr, i64, i64 } { ptr @.str.3684, 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 %then5613, label %endif5615 -then5613: - %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 -endif5615: - %t263 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t263, ptr %a264 - store { ptr, i64, i64 } { ptr @.str.3685, 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 %then5616, label %endif5618 -then5616: - %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.3686, 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 -endif5618: - %t272 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t272, ptr %a273 - store { ptr, i64, i64 } { ptr @.str.3687, 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 %then5619, label %endif5621 -then5619: - %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.3688, 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 -endif5621: - %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.3689, 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 - call void @finch.gen.fail(ptr %t281, %S.ast.Node %t282, { ptr, i64, i64 } %t287) + store { ptr, i64, i64 } %t194, ptr %a199 + call void @finch_str_drop(ptr %a199) + %t200 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t198, 0 + %t201 = getelementptr inbounds %S.gen.Ref, ptr %a180, i32 0, i32 1 + %t202 = getelementptr inbounds %S.gen.Place, ptr %t201, i32 0, i32 1 + %t203 = load %S.ast.Type, ptr %t202 + store %S.ast.Type %t203, ptr %a204 + call void @finch.copy.S_ast_Type(ptr %a205, ptr %a204) + %t206 = load %S.ast.Type, ptr %a205 + %t207 = insertvalue %S.gen.Val %t200, %S.ast.Type %t206, 1 + call void @finch.drop.S_gen_Ref(ptr %a180) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t207 +endif5951: + %t208 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t208, ptr %a209 + store { ptr, i64, i64 } { ptr @.str.3840, i64 5, i64 0 }, ptr %a210 + %t211 = call i32 @finch_str_eq(ptr %a209, ptr %a210) + %t212 = icmp ne i32 %t211, 0 + br i1 %t212, label %then5955, label %endif5957 +then5955: + %t213 = load ptr, ptr %a1 + %t214 = load %S.ast.Node, ptr %a2 + %t215 = call %S.gen.Val @finch.gen.matchGen(ptr %t213, %S.ast.Node %t214, i1 true) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t215 +endif5957: + %t216 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t216, ptr %a217 + store { ptr, i64, i64 } { ptr @.str.3841, i64 3, i64 0 }, ptr %a218 + %t219 = call i32 @finch_str_eq(ptr %a217, ptr %a218) + %t220 = icmp ne i32 %t219, 0 + br i1 %t220, label %then5958, label %endif5960 +then5958: + %t221 = load ptr, ptr %a1 + %t222 = load %S.ast.Node, ptr %a2 + %t223 = call %S.gen.Val @finch.gen.tryExpr(ptr %t221, %S.ast.Node %t222) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t223 +endif5960: + %t224 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t224, ptr %a225 + store { ptr, i64, i64 } { ptr @.str.3842, i64 2, i64 0 }, ptr %a226 + %t227 = call i32 @finch_str_eq(ptr %a225, ptr %a226) + %t228 = icmp ne i32 %t227, 0 + br i1 %t228, label %then5961, label %endif5963 +then5961: + %t229 = load ptr, ptr %a1 + %t230 = load %S.ast.Node, ptr %a2 + %t231 = call %S.gen.Val @finch.gen.orElse(ptr %t229, %S.ast.Node %t230, i1 false) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t231 +endif5963: + %t232 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t232, ptr %a233 + store { ptr, i64, i64 } { ptr @.str.3843, i64 5, i64 0 }, ptr %a234 + %t235 = call i32 @finch_str_eq(ptr %a233, ptr %a234) + %t236 = icmp ne i32 %t235, 0 + br i1 %t236, label %then5964, label %endif5966 +then5964: + %t237 = load ptr, ptr %a1 + %t238 = load %S.ast.Node, ptr %a2 + %t239 = call %S.gen.Val @finch.gen.unary(ptr %t237, %S.ast.Node %t238) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t239 +endif5966: + %t240 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t240, ptr %a241 + store { ptr, i64, i64 } { ptr @.str.3844, i64 6, i64 0 }, ptr %a242 + %t243 = call i32 @finch_str_eq(ptr %a241, ptr %a242) + %t244 = icmp ne i32 %t243, 0 + br i1 %t244, label %then5967, label %endif5969 +then5967: + %t245 = load ptr, ptr %a1 + %t246 = load %S.ast.Node, ptr %a2 + %t247 = call %S.gen.Val @finch.gen.binary(ptr %t245, %S.ast.Node %t246) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t247 +endif5969: + %t248 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t248, ptr %a249 + store { ptr, i64, i64 } { ptr @.str.3845, i64 4, i64 0 }, ptr %a250 + %t251 = call i32 @finch_str_eq(ptr %a249, ptr %a250) + %t252 = icmp ne i32 %t251, 0 + br i1 %t252, label %then5970, label %endif5972 +then5970: + %t253 = load ptr, ptr %a1 + %t254 = load %S.ast.Node, ptr %a2 + %t255 = call %S.gen.Val @finch.gen.call(ptr %t253, %S.ast.Node %t254) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t255 +endif5972: + %t256 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t256, ptr %a257 + store { ptr, i64, i64 } { ptr @.str.3846, i64 6, i64 0 }, ptr %a258 + %t259 = call i32 @finch_str_eq(ptr %a257, ptr %a258) + %t260 = icmp ne i32 %t259, 0 + br i1 %t260, label %then5973, label %endif5975 +then5973: + %t261 = load ptr, ptr %a1 + %t262 = load %S.ast.Node, ptr %a2 + %t263 = call %S.gen.Val @finch.gen.method(ptr %t261, %S.ast.Node %t262) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t263 +endif5975: + %t264 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t264, ptr %a265 + store { ptr, i64, i64 } { ptr @.str.3847, i64 5, i64 0 }, ptr %a266 + %t267 = call i32 @finch_str_eq(ptr %a265, ptr %a266) + %t268 = icmp ne i32 %t267, 0 + br i1 %t268, label %then5976, label %endif5978 +then5976: + %t269 = load ptr, ptr %a1 + %t270 = load %S.ast.Node, ptr %a2 + %t271 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3848, i64 4, i64 0 }) + %t272 = call %S.gen.Val @finch.gen.arrayLit(ptr %t269, %S.ast.Node %t270, %S.ast.Type %t271) + store %S.ast.Type %t271, ptr %a273 + call void @finch.drop.S_ast_Type(ptr %a273) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t272 +endif5978: + %t274 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t274, ptr %a275 + store { ptr, i64, i64 } { ptr @.str.3849, i64 3, i64 0 }, ptr %a276 + %t277 = call i32 @finch_str_eq(ptr %a275, ptr %a276) + %t278 = icmp ne i32 %t277, 0 + br i1 %t278, label %then5979, label %endif5981 +then5979: + %t279 = load ptr, ptr %a1 + %t280 = load %S.ast.Node, ptr %a2 + %t281 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3850, i64 4, i64 0 }) + %t282 = call %S.gen.Val @finch.gen.mapLit(ptr %t279, %S.ast.Node %t280, %S.ast.Type %t281) + store %S.ast.Type %t281, ptr %a283 + call void @finch.drop.S_ast_Type(ptr %a283) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t282 +endif5981: + %t284 = load ptr, ptr %a1 + %t285 = load %S.ast.Node, ptr %a2 + %t286 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.3851, i64 19, i64 0 }, ptr %a288 + store { ptr, i64, i64 } %t286, ptr %a289 + call void @finch_str_concat(ptr %a287, ptr %a288, ptr %a289) + %t290 = load { ptr, i64, i64 }, ptr %a287 + call void @finch.gen.fail(ptr %t284, %S.ast.Node %t285, { ptr, i64, i64 } %t290) + store { ptr, i64, i64 } %t290, ptr %a291 + call void @finch_str_drop(ptr %a291) + call void @finch_str_drop(ptr %a8) ret %S.gen.Val zeroinitializer } @@ -51362,74 +60774,94 @@ entry: %a12 = alloca %S.gen.Val, align 16 %a15 = alloca { ptr, i64, i64 }, align 16 %a16 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca %S.gen.Val, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 + %a30 = alloca %S.ast.Type, align 16 + %a31 = alloca %S.gen.Val, align 16 %a35 = alloca { ptr, i64, i64 }, align 16 %a36 = alloca { ptr, i64, i64 }, align 16 - %a38 = 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 - %a48 = 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 - %a63 = 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 - %a74 = alloca { ptr, i64, i64 }, align 16 + %a41 = alloca { ptr, i64, i64 }, align 16 + %a42 = alloca { ptr, i64, i64 }, align 16 + %a45 = alloca { ptr, i64, i64 }, align 16 + %a51 = alloca { ptr, i64, i64 }, align 16 + %a52 = 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 + %a67 = alloca { ptr, i64, i64 }, align 16 + %a69 = 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 + %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 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca %S.ast.Type, align 16 - %a93 = alloca %S.ast.Type, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = 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 + %a90 = 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 + %a98 = alloca { ptr, i64, i64 }, align 16 + %a102 = alloca %S.ast.Type, align 16 + %a103 = alloca %S.ast.Type, align 16 + %a114 = 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 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca %S.ast.Type, align 16 - %a132 = alloca %S.ast.Type, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca %S.ast.Type, align 16 - %a146 = alloca %S.ast.Type, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = 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 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 + %a119 = 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 + %a134 = alloca { ptr, i64, i64 }, align 16 + %a135 = alloca { ptr, i64, i64 }, align 16 + %a143 = alloca %S.ast.Type, align 16 + %a144 = alloca %S.ast.Type, align 16 + %a150 = alloca { ptr, i64, i64 }, align 16 + %a151 = alloca { ptr, i64, i64 }, align 16 + %a152 = alloca { ptr, i64, i64 }, align 16 + %a157 = alloca %S.ast.Type, align 16 + %a158 = alloca %S.ast.Type, align 16 %a167 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca %S.ast.Type, align 16 - %a174 = alloca %S.ast.Type, align 16 + %a168 = alloca { ptr, i64, i64 }, align 16 + %a169 = 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 + %a175 = 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 + %a182 = 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 - %a189 = 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 - %a203 = alloca %S.ast.Type, align 16 - %a204 = alloca %S.ast.Type, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 + %a189 = alloca %S.ast.Type, align 16 + %a190 = alloca %S.ast.Type, align 16 + %a201 = alloca { ptr, i64, i64 }, align 16 + %a202 = alloca { ptr, i64, i64 }, align 16 + %a203 = alloca { ptr, i64, i64 }, align 16 + %a204 = alloca { ptr, i64, i64 }, align 16 + %a206 = 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 %a213 = alloca { ptr, i64, i64 }, align 16 %a214 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca %S.gen.Val, align 16 - %a218 = alloca %S.gen.Val, align 16 + %a215 = alloca { ptr, i64, i64 }, align 16 + %a216 = alloca { ptr, i64, i64 }, align 16 + %a219 = alloca { ptr, i64, i64 }, align 16 + %a223 = alloca %S.ast.Type, align 16 + %a224 = alloca %S.ast.Type, align 16 + %a232 = 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 + %a237 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store %S.ast.Node %p1, ptr %a2 %t3 = load ptr, ptr %a1 @@ -51437,11 +60869,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 %range5622, label %inrange5623 -range5622: - call void @finch_panic_index(ptr @.str.3690, i64 3015, i64 0, i64 %t6) + br i1 %t7, label %range5982, label %inrange5983 +range5982: + call void @finch_panic_index(ptr @.str.3852, i64 3270, i64 0, i64 %t6) unreachable -inrange5623: +inrange5983: %t8 = extractvalue { ptr, i64, i64 } %t5, 0 %t9 = getelementptr inbounds %S.ast.Node, ptr %t8, i64 0 %t10 = load %S.ast.Node, ptr %t9 @@ -51450,250 +60882,298 @@ inrange5623: %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.3691, i64 1, i64 0 }, ptr %a16 + store { ptr, i64, i64 } { ptr @.str.3853, 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 %then5624, label %endif5626 -then5624: + br i1 %t18, label %then5984, label %endif5986 +then5984: %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.3692, i64 4, i64 0 }) + %t21 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3854, 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 %range5627, label %inrange5628 -range5627: - call void @finch_panic_index(ptr @.str.3693, i64 3017, i64 0, i64 %t24) + br i1 %t25, label %range5987, label %inrange5988 +range5987: + call void @finch_panic_index(ptr @.str.3855, i64 3272, i64 0, i64 %t24) unreachable -inrange5628: +inrange5988: %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.3694, 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.3695, 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.3696, 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.3697, i64 4, i64 0 }) - %t45 = insertvalue %S.gen.Val %t43, %S.ast.Type %t44, 1 - ret %S.gen.Val %t45 -endif5626: - %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.3698, 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 %then5629, label %endif5631 -then5629: - %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 %then5632, label %endif5634 -then5632: - %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.3699, 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 %endif5634 -endif5634: - %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.3700, 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.3701, 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 - %t79 = load { ptr, i64, i64 }, ptr %t78 - store { ptr, i64, i64 } %t77, ptr %a81 - store { ptr, i64, i64 } %t79, ptr %a82 + %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.3856, i64 19, i64 0 }) + store %S.ast.Type %t21, ptr %a30 + call void @finch.drop.S_ast_Type(ptr %a30) + store %S.gen.Val %t29, ptr %a31 + %t32 = load ptr, ptr %a1 + %t33 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 0 + %t34 = load { ptr, i64, i64 }, ptr %t33 + store { ptr, i64, i64 } { ptr @.str.3857, 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.3858, i64 6, i64 0 }, ptr %a41 + call void @finch_str_concat(ptr %a39, ptr %a40, ptr %a41) + store { ptr, i64, i64 } %t38, ptr %a42 + call void @finch_str_drop(ptr %a42) + %t43 = load { ptr, i64, i64 }, ptr %a39 + %t44 = call { ptr, i64, i64 } @finch.gen.op(ptr %t32, { ptr, i64, i64 } %t43) + store { ptr, i64, i64 } %t43, ptr %a45 + call void @finch_str_drop(ptr %a45) + %t46 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t44, 0 + %t47 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3859, i64 4, i64 0 }) + %t48 = insertvalue %S.gen.Val %t46, %S.ast.Type %t47, 1 + call void @finch.drop.S_gen_Val(ptr %a31) + call void @finch.drop.S_gen_Val(ptr %a12) + ret %S.gen.Val %t48 +endif5986: + %t49 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t50 = load { ptr, i64, i64 }, ptr %t49 + store { ptr, i64, i64 } %t50, ptr %a51 + store { ptr, i64, i64 } { ptr @.str.3860, i64 1, i64 0 }, ptr %a52 + %t53 = call i32 @finch_str_eq(ptr %a51, ptr %a52) + %t54 = icmp ne i32 %t53, 0 + br i1 %t54, label %then5989, label %endif5991 +then5989: + %t55 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 + %t56 = load %S.ast.Type, ptr %t55 + %t57 = call i1 @finch.gen.isInt(%S.ast.Type %t56) + %t58 = xor i1 %t57, true + br i1 %t58, label %then5992, label %endif5994 +then5992: + %t59 = load ptr, ptr %a1 + %t60 = load %S.ast.Node, ptr %a2 + %t61 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 + %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.3861, i64 45, i64 0 }, ptr %a65 + store { ptr, i64, i64 } %t63, ptr %a66 + call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) + store { ptr, i64, i64 } %t63, ptr %a67 + call void @finch_str_drop(ptr %a67) + %t68 = load { ptr, i64, i64 }, ptr %a64 + call void @finch.gen.fail(ptr %t59, %S.ast.Node %t60, { ptr, i64, i64 } %t68) + store { ptr, i64, i64 } %t68, ptr %a69 + call void @finch_str_drop(ptr %a69) + br label %endif5994 +endif5994: + %t70 = load ptr, ptr %a1 + %t71 = load ptr, ptr %a1 + %t72 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 + %t73 = load %S.ast.Type, ptr %t72 + %t74 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t71, %S.ast.Type %t73) + store { ptr, i64, i64 } { ptr @.str.3862, i64 4, i64 0 }, ptr %a76 + store { ptr, i64, i64 } %t74, ptr %a77 + call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77) + store { ptr, i64, i64 } %t74, ptr %a78 + call void @finch_str_drop(ptr %a78) + %t79 = load { ptr, i64, i64 }, ptr %a75 + store { ptr, i64, i64 } %t79, ptr %a81 + store { ptr, i64, i64 } { ptr @.str.3863, 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 %a85 - store { ptr, i64, i64 } { ptr @.str.3702, 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) - %t89 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t88, 0 - %t90 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t91 = load %S.ast.Type, ptr %t90 - store %S.ast.Type %t91, ptr %a92 - call void @finch.copy.S_ast_Type(ptr %a93, ptr %a92) - %t94 = load %S.ast.Type, ptr %a93 - %t95 = insertvalue %S.gen.Val %t89, %S.ast.Type %t94, 1 - ret %S.gen.Val %t95 -endif5631: - %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 %then5635, label %endif5637 -then5635: - %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.3703, 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 %endif5637 -endif5637: - %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 %then5638, label %endif5640 -then5638: - %t111 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 3 - %t112 = load i1, ptr %t111 - br i1 %t112, label %then5641, label %endif5643 -then5641: - %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.3705, 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 %then5644, label %endif5646 -then5644: - %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.3706, 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 - %t130 = load %S.ast.Type, ptr %t129 - store %S.ast.Type %t130, ptr %a131 - call void @finch.copy.S_ast_Type(ptr %a132, ptr %a131) - %t133 = load %S.ast.Type, ptr %a132 - %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 -endif5646: + store { ptr, i64, i64 } %t79, ptr %a83 + call void @finch_str_drop(ptr %a83) + %t84 = load { ptr, i64, i64 }, ptr %a80 + %t85 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0 + %t86 = load { ptr, i64, i64 }, ptr %t85 + store { ptr, i64, i64 } %t84, ptr %a88 + store { ptr, i64, i64 } %t86, ptr %a89 + call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89) + store { ptr, i64, i64 } %t84, ptr %a90 + call void @finch_str_drop(ptr %a90) + %t91 = load { ptr, i64, i64 }, ptr %a87 + store { ptr, i64, i64 } %t91, ptr %a93 + store { ptr, i64, i64 } { ptr @.str.3864, i64 4, i64 0 }, ptr %a94 + call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) + store { ptr, i64, i64 } %t91, ptr %a95 + call void @finch_str_drop(ptr %a95) + %t96 = load { ptr, i64, i64 }, ptr %a92 + %t97 = call { ptr, i64, i64 } @finch.gen.op(ptr %t70, { ptr, i64, i64 } %t96) + store { ptr, i64, i64 } %t96, ptr %a98 + call void @finch_str_drop(ptr %a98) + %t99 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t97, 0 + %t100 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 + %t101 = load %S.ast.Type, ptr %t100 + store %S.ast.Type %t101, ptr %a102 + call void @finch.copy.S_ast_Type(ptr %a103, ptr %a102) + %t104 = load %S.ast.Type, ptr %a103 + %t105 = insertvalue %S.gen.Val %t99, %S.ast.Type %t104, 1 + call void @finch.drop.S_gen_Val(ptr %a12) + ret %S.gen.Val %t105 +endif5991: + %t106 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 + %t107 = load %S.ast.Type, ptr %t106 + %t108 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t107) + br i1 %t108, label %then5995, label %endif5997 +then5995: + %t109 = load ptr, ptr %a1 + %t110 = load %S.ast.Node, ptr %a2 + %t111 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 + %t112 = load %S.ast.Type, ptr %t111 + %t113 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t112) + store { ptr, i64, i64 } %t113, ptr %a115 + store { ptr, i64, i64 } { ptr @.str.3865, i64 34, i64 0 }, ptr %a116 + call void @finch_str_concat(ptr %a114, ptr %a115, ptr %a116) + store { ptr, i64, i64 } %t113, ptr %a117 + call void @finch_str_drop(ptr %a117) + %t118 = load { ptr, i64, i64 }, ptr %a114 + call void @finch.gen.fail(ptr %t109, %S.ast.Node %t110, { ptr, i64, i64 } %t118) + store { ptr, i64, i64 } %t118, ptr %a119 + call void @finch_str_drop(ptr %a119) + br label %endif5997 +endif5997: + %t120 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 + %t121 = load %S.ast.Type, ptr %t120 + %t122 = call i1 @finch.gen.isSigned(%S.ast.Type %t121) + br i1 %t122, label %then5998, label %endif6000 +then5998: + %t123 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 3 + %t124 = load i1, ptr %t123 + br i1 %t124, label %then6001, label %endif6003 +then6001: + %t125 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0 + %t126 = load { ptr, i64, i64 }, ptr %t125 + store { ptr, i64, i64 } %t126, ptr %a127 + store { ptr, i64, i64 } { ptr @.str.3867, i64 1, i64 0 }, ptr %a129 + %t130 = call i32 @finch_str_starts(ptr %a127, ptr %a129) + %t131 = icmp ne i32 %t130, 0 + br i1 %t131, label %then6004, label %endif6006 +then6004: + %t132 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0 + %t133 = load { ptr, i64, i64 }, ptr %t132 + store { ptr, i64, i64 } %t133, ptr %a134 %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.3707, 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 - %t142 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t141, 0 - %t143 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t144 = load %S.ast.Type, ptr %t143 - store %S.ast.Type %t144, ptr %a145 - call void @finch.copy.S_ast_Type(ptr %a146, ptr %a145) - %t147 = load %S.ast.Type, ptr %a146 - %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 -endif5643: - %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.3708, 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.3709, 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 - %t164 = load { ptr, i64, i64 }, ptr %t163 - store { ptr, i64, i64 } %t162, 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 - %t169 = call { ptr, i64, i64 } @finch.gen.op(ptr %t150, { ptr, i64, i64 } %t168) - %t170 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t169, 0 - %t171 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t172 = load %S.ast.Type, ptr %t171 - store %S.ast.Type %t172, ptr %a173 - call void @finch.copy.S_ast_Type(ptr %a174, ptr %a173) - %t175 = load %S.ast.Type, ptr %a174 - %t176 = insertvalue %S.gen.Val %t170, %S.ast.Type %t175, 1 - ret %S.gen.Val %t176 -endif5640: - %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 %then5647, label %endif5649 -then5647: - %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.3710, 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.3711, 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 - %t194 = load { ptr, i64, i64 }, ptr %t193 - store { ptr, i64, i64 } %t192, 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 - %t199 = call { ptr, i64, i64 } @finch.gen.op(ptr %t180, { ptr, i64, i64 } %t198) - %t200 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t199, 0 - %t201 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t202 = load %S.ast.Type, ptr %t201 - store %S.ast.Type %t202, ptr %a203 - call void @finch.copy.S_ast_Type(ptr %a204, ptr %a203) - %t205 = load %S.ast.Type, ptr %a204 - %t206 = insertvalue %S.gen.Val %t200, %S.ast.Type %t205, 1 - ret %S.gen.Val %t206 -endif5649: - %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.3712, 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 - call void @finch.gen.fail(ptr %t207, %S.ast.Node %t208, { ptr, i64, i64 } %t215) - %t216 = load %S.gen.Val, ptr %a12 - store %S.gen.Val %t216, ptr %a217 - call void @finch.copy.S_gen_Val(ptr %a218, ptr %a217) - %t219 = load %S.gen.Val, ptr %a218 - ret %S.gen.Val %t219 + %t137 = getelementptr inbounds { ptr, i64, i64 }, ptr %t136, i32 0, i32 1 + %t138 = load i64, ptr %t137 + call void @finch_str_sub(ptr %a135, ptr %a134, i64 1, i64 %t138, ptr @.str.3868, i64 3287) + %t139 = load { ptr, i64, i64 }, ptr %a135 + %t140 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t139, 0 + %t141 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 + %t142 = load %S.ast.Type, ptr %t141 + store %S.ast.Type %t142, ptr %a143 + call void @finch.copy.S_ast_Type(ptr %a144, ptr %a143) + %t145 = load %S.ast.Type, ptr %a144 + %t146 = insertvalue %S.gen.Val %t140, %S.ast.Type %t145, 1 + %t147 = insertvalue %S.gen.Val %t146, i1 true, 3 + call void @finch.drop.S_gen_Val(ptr %a12) + ret %S.gen.Val %t147 +endif6006: + %t148 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0 + %t149 = load { ptr, i64, i64 }, ptr %t148 + store { ptr, i64, i64 } { ptr @.str.3869, i64 1, i64 0 }, ptr %a151 + store { ptr, i64, i64 } %t149, ptr %a152 + call void @finch_str_concat(ptr %a150, ptr %a151, ptr %a152) + %t153 = load { ptr, i64, i64 }, ptr %a150 + %t154 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t153, 0 + %t155 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 + %t156 = load %S.ast.Type, ptr %t155 + store %S.ast.Type %t156, ptr %a157 + call void @finch.copy.S_ast_Type(ptr %a158, ptr %a157) + %t159 = load %S.ast.Type, ptr %a158 + %t160 = insertvalue %S.gen.Val %t154, %S.ast.Type %t159, 1 + %t161 = insertvalue %S.gen.Val %t160, i1 true, 3 + call void @finch.drop.S_gen_Val(ptr %a12) + ret %S.gen.Val %t161 +endif6003: + %t162 = load ptr, ptr %a1 + %t163 = load ptr, ptr %a1 + %t164 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 + %t165 = load %S.ast.Type, ptr %t164 + %t166 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t163, %S.ast.Type %t165) + store { ptr, i64, i64 } { ptr @.str.3870, i64 4, i64 0 }, ptr %a168 + store { ptr, i64, i64 } %t166, ptr %a169 + call void @finch_str_concat(ptr %a167, ptr %a168, ptr %a169) + store { ptr, i64, i64 } %t166, ptr %a170 + call void @finch_str_drop(ptr %a170) + %t171 = load { ptr, i64, i64 }, ptr %a167 + store { ptr, i64, i64 } %t171, ptr %a173 + store { ptr, i64, i64 } { ptr @.str.3871, i64 4, i64 0 }, ptr %a174 + call void @finch_str_concat(ptr %a172, ptr %a173, ptr %a174) + store { ptr, i64, i64 } %t171, ptr %a175 + call void @finch_str_drop(ptr %a175) + %t176 = load { ptr, i64, i64 }, ptr %a172 + %t177 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0 + %t178 = load { ptr, i64, i64 }, ptr %t177 + store { ptr, i64, i64 } %t176, ptr %a180 + store { ptr, i64, i64 } %t178, ptr %a181 + call void @finch_str_concat(ptr %a179, ptr %a180, ptr %a181) + store { ptr, i64, i64 } %t176, ptr %a182 + call void @finch_str_drop(ptr %a182) + %t183 = load { ptr, i64, i64 }, ptr %a179 + %t184 = call { ptr, i64, i64 } @finch.gen.op(ptr %t162, { ptr, i64, i64 } %t183) + store { ptr, i64, i64 } %t183, ptr %a185 + call void @finch_str_drop(ptr %a185) + %t186 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t184, 0 + %t187 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 + %t188 = load %S.ast.Type, ptr %t187 + store %S.ast.Type %t188, ptr %a189 + call void @finch.copy.S_ast_Type(ptr %a190, ptr %a189) + %t191 = load %S.ast.Type, ptr %a190 + %t192 = insertvalue %S.gen.Val %t186, %S.ast.Type %t191, 1 + call void @finch.drop.S_gen_Val(ptr %a12) + ret %S.gen.Val %t192 +endif6000: + %t193 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 + %t194 = load %S.ast.Type, ptr %t193 + %t195 = call i1 @finch.gen.isFloat(%S.ast.Type %t194) + br i1 %t195, label %then6007, label %endif6009 +then6007: + %t196 = load ptr, ptr %a1 + %t197 = load ptr, ptr %a1 + %t198 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 + %t199 = load %S.ast.Type, ptr %t198 + %t200 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t197, %S.ast.Type %t199) + store { ptr, i64, i64 } { ptr @.str.3872, i64 5, i64 0 }, ptr %a202 + store { ptr, i64, i64 } %t200, ptr %a203 + call void @finch_str_concat(ptr %a201, ptr %a202, ptr %a203) + store { ptr, i64, i64 } %t200, ptr %a204 + call void @finch_str_drop(ptr %a204) + %t205 = load { ptr, i64, i64 }, ptr %a201 + store { ptr, i64, i64 } %t205, ptr %a207 + store { ptr, i64, i64 } { ptr @.str.3873, i64 1, i64 0 }, ptr %a208 + call void @finch_str_concat(ptr %a206, ptr %a207, ptr %a208) + store { ptr, i64, i64 } %t205, ptr %a209 + call void @finch_str_drop(ptr %a209) + %t210 = load { ptr, i64, i64 }, ptr %a206 + %t211 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0 + %t212 = load { ptr, i64, i64 }, ptr %t211 + store { ptr, i64, i64 } %t210, ptr %a214 + store { ptr, i64, i64 } %t212, ptr %a215 + call void @finch_str_concat(ptr %a213, ptr %a214, ptr %a215) + store { ptr, i64, i64 } %t210, ptr %a216 + call void @finch_str_drop(ptr %a216) + %t217 = load { ptr, i64, i64 }, ptr %a213 + %t218 = call { ptr, i64, i64 } @finch.gen.op(ptr %t196, { ptr, i64, i64 } %t217) + store { ptr, i64, i64 } %t217, ptr %a219 + call void @finch_str_drop(ptr %a219) + %t220 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t218, 0 + %t221 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 + %t222 = load %S.ast.Type, ptr %t221 + store %S.ast.Type %t222, ptr %a223 + call void @finch.copy.S_ast_Type(ptr %a224, ptr %a223) + %t225 = load %S.ast.Type, ptr %a224 + %t226 = insertvalue %S.gen.Val %t220, %S.ast.Type %t225, 1 + call void @finch.drop.S_gen_Val(ptr %a12) + ret %S.gen.Val %t226 +endif6009: + %t227 = load ptr, ptr %a1 + %t228 = load %S.ast.Node, ptr %a2 + %t229 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 + %t230 = load %S.ast.Type, ptr %t229 + %t231 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t230) + store { ptr, i64, i64 } { ptr @.str.3874, i64 26, i64 0 }, ptr %a233 + store { ptr, i64, i64 } %t231, ptr %a234 + call void @finch_str_concat(ptr %a232, ptr %a233, ptr %a234) + store { ptr, i64, i64 } %t231, ptr %a235 + call void @finch_str_drop(ptr %a235) + %t236 = load { ptr, i64, i64 }, ptr %a232 + call void @finch.gen.fail(ptr %t227, %S.ast.Node %t228, { ptr, i64, i64 } %t236) + store { ptr, i64, i64 } %t236, ptr %a237 + call void @finch_str_drop(ptr %a237) + %t238 = load %S.gen.Val, ptr %a12 + ret %S.gen.Val %t238 } define internal void @finch.gen.badOperands(ptr %p0, { ptr, i64, i64 } %p1, %S.gen.Val %p2, %S.gen.Val %p3, %S.ast.Node %p4) { @@ -51709,355 +61189,395 @@ entry: %a11 = alloca { ptr, i64, i64 }, align 16 %a12 = alloca { ptr, i64, i64 }, align 16 %a13 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 + %a14 = alloca { ptr, i64, i64 }, align 16 %a19 = 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 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 + %a23 = alloca { ptr, i64, i64 }, align 16 + %a25 = 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 + %a40 = 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 + %a44 = alloca { ptr, i64, i64 }, align 16 + %a47 = alloca { ptr, i64, i64 }, align 16 %a49 = alloca { ptr, i64, i64 }, align 16 %a50 = alloca { ptr, i64, i64 }, align 16 %a56 = alloca { ptr, i64, i64 }, align 16 %a57 = 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 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a81 = 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 + %a75 = alloca { ptr, i64, i64 }, align 16 + %a77 = alloca { ptr, i64, i64 }, align 16 + %a78 = alloca { ptr, i64, i64 }, align 16 %a82 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = 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 + %a83 = 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 - %a99 = 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 - %a107 = alloca { ptr, i64, i64 }, align 16 + %a106 = 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 %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 + %a115 = alloca { ptr, i64, i64 }, align 16 + %a116 = alloca { ptr, i64, i64 }, align 16 %a120 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 + %a121 = alloca { ptr, i64, i64 }, align 16 %a126 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 + %a127 = alloca { ptr, i64, i64 }, align 16 %a132 = alloca { ptr, i64, i64 }, align 16 %a133 = alloca { ptr, i64, i64 }, align 16 %a138 = alloca { ptr, i64, i64 }, align 16 %a139 = 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 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = 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 + %a149 = alloca { ptr, i64, i64 }, align 16 + %a153 = alloca { ptr, i64, i64 }, align 16 + %a154 = alloca { ptr, i64, i64 }, align 16 + %a160 = alloca { ptr, i64, i64 }, align 16 + %a161 = alloca { ptr, i64, i64 }, align 16 + %a166 = alloca { ptr, i64, i64 }, align 16 + %a167 = alloca { ptr, i64, i64 }, align 16 + %a171 = alloca { ptr, i64, i64 }, align 16 + %a172 = alloca { ptr, i64, i64 }, align 16 + %a178 = alloca { ptr, i64, i64 }, align 16 + %a179 = alloca { ptr, i64, i64 }, align 16 + %a180 = alloca { ptr, i64, i64 }, align 16 + %a183 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store { ptr, i64, i64 } %p1, ptr %a2 store %S.gen.Val %p2, ptr %a3 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.3713, i64 11, i64 0 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.3875, 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.3714, i64 5, i64 0 }, ptr %a13 + store { ptr, i64, i64 } { ptr @.str.3876, 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 - %t16 = load %S.ast.Type, ptr %t15 - %t17 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t16) - store { ptr, i64, i64 } %t14, 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 %a22 - %t23 = getelementptr inbounds %S.gen.Val, ptr %a3, i32 0, i32 1 - %t24 = load %S.ast.Type, ptr %t23 - %t25 = getelementptr inbounds %S.gen.Val, ptr %a4, i32 0, i32 1 - %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 %then5650, label %endif5652 -then5650: - %t29 = load { ptr, i64, i64 }, ptr %a22 - store { ptr, i64, i64 } %t29, ptr %a31 - store { ptr, i64, i64 } { ptr @.str.3715, 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 - %t35 = load %S.ast.Type, ptr %t34 - %t36 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t35) - store { ptr, i64, i64 } %t33, 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 %a22 - br label %endif5652 -endif5652: - %t41 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t41, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.3716, 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.from5653 -logic.from5653: - br i1 %t45, label %logic.rhs5654, label %logic.end5655 -logic.rhs5654: - %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 } %t10, ptr %a14 + call void @finch_str_drop(ptr %a14) + %t15 = load { ptr, i64, i64 }, ptr %a11 + %t16 = getelementptr inbounds %S.gen.Val, ptr %a3, i32 0, i32 1 + %t17 = load %S.ast.Type, ptr %t16 + %t18 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t17) + store { ptr, i64, i64 } %t15, ptr %a20 + store { ptr, i64, i64 } %t18, ptr %a21 + call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) + store { ptr, i64, i64 } %t15, ptr %a22 + call void @finch_str_drop(ptr %a22) + store { ptr, i64, i64 } %t18, ptr %a23 + call void @finch_str_drop(ptr %a23) + %t24 = load { ptr, i64, i64 }, ptr %a19 + store { ptr, i64, i64 } %t24, ptr %a25 + %t26 = getelementptr inbounds %S.gen.Val, ptr %a3, i32 0, i32 1 + %t27 = load %S.ast.Type, ptr %t26 + %t28 = getelementptr inbounds %S.gen.Val, ptr %a4, i32 0, i32 1 + %t29 = load %S.ast.Type, ptr %t28 + %t30 = call i1 @finch.ast.same(%S.ast.Type %t27, %S.ast.Type %t29) + %t31 = xor i1 %t30, true + br i1 %t31, label %then6010, label %endif6012 +then6010: + %t32 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t32, ptr %a34 + store { ptr, i64, i64 } { ptr @.str.3877, i64 5, 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.gen.Val, ptr %a4, i32 0, i32 1 + %t38 = load %S.ast.Type, ptr %t37 + %t39 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t38) + store { ptr, i64, i64 } %t36, ptr %a41 + store { ptr, i64, i64 } %t39, ptr %a42 + call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) + store { ptr, i64, i64 } %t36, ptr %a43 + call void @finch_str_drop(ptr %a43) + store { ptr, i64, i64 } %t39, ptr %a44 + call void @finch_str_drop(ptr %a44) + %t45 = load { ptr, i64, i64 }, ptr %a40 + %t46 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t45, ptr %a25 + store { ptr, i64, i64 } %t46, ptr %a47 + call void @finch_str_drop(ptr %a47) + br label %endif6012 +endif6012: + %t48 = load { ptr, i64, i64 }, ptr %a2 store { ptr, i64, i64 } %t48, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.3717, i64 3, i64 0 }, ptr %a50 + store { ptr, i64, i64 } { ptr @.str.3878, i64 1, i64 0 }, ptr %a50 %t51 = call i32 @finch_str_eq(ptr %a49, ptr %a50) %t52 = icmp ne i32 %t51, 0 - br label %logic.from5656 -logic.from5656: - br i1 %t52, label %logic.end5658, label %logic.rhs5657 -logic.rhs5657: - %t53 = getelementptr inbounds %S.gen.Val, ptr %a4, i32 0, i32 1 + br label %logic.from6013 +logic.from6013: + br i1 %t52, label %logic.rhs6014, label %logic.end6015 +logic.rhs6014: + %t53 = getelementptr inbounds %S.gen.Val, ptr %a3, 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.3718, i64 3, i64 0 }, ptr %a57 + store { ptr, i64, i64 } { ptr @.str.3879, 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.rend5659 -logic.rend5659: - br label %logic.end5658 -logic.end5658: - %t60 = phi i1 [ true, %logic.from5656 ], [ %t59, %logic.rend5659 ] - br label %logic.rend5660 -logic.rend5660: - br label %logic.end5655 -logic.end5655: - %t61 = phi i1 [ false, %logic.from5653 ], [ %t60, %logic.rend5660 ] - br i1 %t61, label %then5661, label %endif5663 -then5661: - %t62 = load { ptr, i64, i64 }, ptr %a22 - store { ptr, i64, i64 } %t62, ptr %a64 - store { ptr, i64, i64 } { ptr @.str.3719, 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 %endif5663 -endif5663: - %t67 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t67, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.3720, 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.from5664 -logic.from5664: - br i1 %t71, label %logic.end5666, label %logic.rhs5665 -logic.rhs5665: - %t72 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t72, ptr %a73 - store { ptr, i64, i64 } { ptr @.str.3721, 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.rend5667 -logic.rend5667: - br label %logic.end5666 -logic.end5666: - %t77 = phi i1 [ true, %logic.from5664 ], [ %t76, %logic.rend5667 ] - br label %logic.from5668 -logic.from5668: - br i1 %t77, label %logic.rhs5669, label %logic.end5670 -logic.rhs5669: - %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.3722, 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.rend5671 -logic.rend5671: - br label %logic.end5670 -logic.end5670: - %t85 = phi i1 [ false, %logic.from5668 ], [ %t84, %logic.rend5671 ] - br i1 %t85, label %then5672, label %else5673 -then5672: - %t86 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t86, ptr %a87 - store { ptr, i64, i64 } { ptr @.str.3723, 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 %then5675, label %else5676 -then5675: - %t91 = load { ptr, i64, i64 }, ptr %a22 - store { ptr, i64, i64 } %t91, ptr %a93 - store { ptr, i64, i64 } { ptr @.str.3724, 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 %endif5677 -else5676: - %t96 = load { ptr, i64, i64 }, ptr %a22 - store { ptr, i64, i64 } %t96, ptr %a98 - store { ptr, i64, i64 } { ptr @.str.3725, 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 %endif5677 -endif5677: - br label %endif5674 -else5673: - %t101 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t101, ptr %a102 - store { ptr, i64, i64 } { ptr @.str.3726, 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.from5678 -logic.from5678: - br i1 %t105, label %logic.end5680, label %logic.rhs5679 -logic.rhs5679: - %t106 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t106, ptr %a107 - store { ptr, i64, i64 } { ptr @.str.3727, 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.rend5681 -logic.rend5681: - br label %logic.end5680 -logic.end5680: - %t111 = phi i1 [ true, %logic.from5678 ], [ %t110, %logic.rend5681 ] - br label %logic.from5682 -logic.from5682: - br i1 %t111, label %logic.end5684, label %logic.rhs5683 -logic.rhs5683: - %t112 = load { ptr, i64, i64 }, ptr %a2 + br label %logic.from6016 +logic.from6016: + br i1 %t59, label %logic.end6018, label %logic.rhs6017 +logic.rhs6017: + %t60 = getelementptr inbounds %S.gen.Val, ptr %a4, i32 0, i32 1 + %t61 = getelementptr inbounds %S.ast.Type, ptr %t60, i32 0, i32 0 + %t62 = load { ptr, i64, i64 }, ptr %t61 + store { ptr, i64, i64 } %t62, ptr %a63 + store { ptr, i64, i64 } { ptr @.str.3880, i64 3, i64 0 }, ptr %a64 + %t65 = call i32 @finch_str_eq(ptr %a63, ptr %a64) + %t66 = icmp ne i32 %t65, 0 + br label %logic.rend6019 +logic.rend6019: + br label %logic.end6018 +logic.end6018: + %t67 = phi i1 [ true, %logic.from6016 ], [ %t66, %logic.rend6019 ] + br label %logic.rend6020 +logic.rend6020: + br label %logic.end6015 +logic.end6015: + %t68 = phi i1 [ false, %logic.from6013 ], [ %t67, %logic.rend6020 ] + br i1 %t68, label %then6021, label %endif6023 +then6021: + %t69 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t69, ptr %a71 + store { ptr, i64, i64 } { ptr @.str.3881, i64 48, i64 0 }, ptr %a72 + call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) + %t73 = load { ptr, i64, i64 }, ptr %a70 + %t74 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t73, ptr %a25 + store { ptr, i64, i64 } %t74, ptr %a75 + call void @finch_str_drop(ptr %a75) + br label %endif6023 +endif6023: + %t76 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t76, ptr %a77 + store { ptr, i64, i64 } { ptr @.str.3882, i64 1, i64 0 }, ptr %a78 + %t79 = call i32 @finch_str_eq(ptr %a77, ptr %a78) + %t80 = icmp ne i32 %t79, 0 + br label %logic.from6024 +logic.from6024: + br i1 %t80, label %logic.end6026, label %logic.rhs6025 +logic.rhs6025: + %t81 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t81, ptr %a82 + store { ptr, i64, i64 } { ptr @.str.3883, 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.rend6027 +logic.rend6027: + br label %logic.end6026 +logic.end6026: + %t86 = phi i1 [ true, %logic.from6024 ], [ %t85, %logic.rend6027 ] + br label %logic.from6028 +logic.from6028: + br i1 %t86, label %logic.rhs6029, label %logic.end6030 +logic.rhs6029: + %t87 = getelementptr inbounds %S.gen.Val, ptr %a3, i32 0, i32 1 + %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.3884, i64 4, i64 0 }, ptr %a91 + %t92 = call i32 @finch_str_eq(ptr %a90, ptr %a91) + %t93 = icmp ne i32 %t92, 0 + br label %logic.rend6031 +logic.rend6031: + br label %logic.end6030 +logic.end6030: + %t94 = phi i1 [ false, %logic.from6028 ], [ %t93, %logic.rend6031 ] + br i1 %t94, label %then6032, label %else6033 +then6032: + %t95 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t95, ptr %a96 + store { ptr, i64, i64 } { ptr @.str.3885, i64 1, i64 0 }, ptr %a97 + %t98 = call i32 @finch_str_eq(ptr %a96, ptr %a97) + %t99 = icmp ne i32 %t98, 0 + br i1 %t99, label %then6035, label %else6036 +then6035: + %t100 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t100, ptr %a102 + store { ptr, i64, i64 } { ptr @.str.3886, i64 26, i64 0 }, ptr %a103 + call void @finch_str_concat(ptr %a101, ptr %a102, ptr %a103) + %t104 = load { ptr, i64, i64 }, ptr %a101 + %t105 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t104, ptr %a25 + store { ptr, i64, i64 } %t105, ptr %a106 + call void @finch_str_drop(ptr %a106) + br label %endif6037 +else6036: + %t107 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t107, ptr %a109 + store { ptr, i64, i64 } { ptr @.str.3887, i64 26, i64 0 }, ptr %a110 + call void @finch_str_concat(ptr %a108, ptr %a109, ptr %a110) + %t111 = load { ptr, i64, i64 }, ptr %a108 + %t112 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t111, ptr %a25 store { ptr, i64, i64 } %t112, ptr %a113 - store { ptr, i64, i64 } { ptr @.str.3728, 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.rend5685 -logic.rend5685: - br label %logic.end5684 -logic.end5684: - %t117 = phi i1 [ true, %logic.from5682 ], [ %t116, %logic.rend5685 ] - br label %logic.from5686 -logic.from5686: - br i1 %t117, label %logic.end5688, label %logic.rhs5687 -logic.rhs5687: - %t118 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t118, ptr %a119 - store { ptr, i64, i64 } { ptr @.str.3729, 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.rend5689 -logic.rend5689: - br label %logic.end5688 -logic.end5688: - %t123 = phi i1 [ true, %logic.from5686 ], [ %t122, %logic.rend5689 ] - br label %logic.from5690 -logic.from5690: - br i1 %t123, label %logic.end5692, label %logic.rhs5691 -logic.rhs5691: - %t124 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t124, ptr %a125 - store { ptr, i64, i64 } { ptr @.str.3730, 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.rend5693 -logic.rend5693: - br label %logic.end5692 -logic.end5692: - %t129 = phi i1 [ true, %logic.from5690 ], [ %t128, %logic.rend5693 ] - br i1 %t129, label %then5694, label %endif5696 -then5694: - %t130 = load { ptr, i64, i64 }, ptr %a22 - store { ptr, i64, i64 } %t130, ptr %a132 - store { ptr, i64, i64 } { ptr @.str.3731, 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 %endif5696 -endif5696: - br label %endif5674 -endif5674: - %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 + call void @finch_str_drop(ptr %a113) + br label %endif6037 +endif6037: + br label %endif6034 +else6033: + %t114 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t114, ptr %a115 + store { ptr, i64, i64 } { ptr @.str.3888, i64 1, i64 0 }, ptr %a116 + %t117 = call i32 @finch_str_eq(ptr %a115, ptr %a116) + %t118 = icmp ne i32 %t117, 0 + br label %logic.from6038 +logic.from6038: + br i1 %t118, label %logic.end6040, label %logic.rhs6039 +logic.rhs6039: + %t119 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t119, ptr %a120 + store { ptr, i64, i64 } { ptr @.str.3889, i64 1, i64 0 }, ptr %a121 + %t122 = call i32 @finch_str_eq(ptr %a120, ptr %a121) + %t123 = icmp ne i32 %t122, 0 + br label %logic.rend6041 +logic.rend6041: + br label %logic.end6040 +logic.end6040: + %t124 = phi i1 [ true, %logic.from6038 ], [ %t123, %logic.rend6041 ] + br label %logic.from6042 +logic.from6042: + br i1 %t124, label %logic.end6044, label %logic.rhs6043 +logic.rhs6043: + %t125 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t125, ptr %a126 + store { ptr, i64, i64 } { ptr @.str.3890, i64 1, i64 0 }, ptr %a127 + %t128 = call i32 @finch_str_eq(ptr %a126, ptr %a127) + %t129 = icmp ne i32 %t128, 0 + br label %logic.rend6045 +logic.rend6045: + br label %logic.end6044 +logic.end6044: + %t130 = phi i1 [ true, %logic.from6042 ], [ %t129, %logic.rend6045 ] + br label %logic.from6046 +logic.from6046: + br i1 %t130, label %logic.end6048, label %logic.rhs6047 +logic.rhs6047: + %t131 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t131, ptr %a132 + store { ptr, i64, i64 } { ptr @.str.3891, i64 2, i64 0 }, ptr %a133 + %t134 = call i32 @finch_str_eq(ptr %a132, ptr %a133) + %t135 = icmp ne i32 %t134, 0 + br label %logic.rend6049 +logic.rend6049: + br label %logic.end6048 +logic.end6048: + %t136 = phi i1 [ true, %logic.from6046 ], [ %t135, %logic.rend6049 ] + br label %logic.from6050 +logic.from6050: + br i1 %t136, label %logic.end6052, label %logic.rhs6051 +logic.rhs6051: + %t137 = load { ptr, i64, i64 }, ptr %a2 store { ptr, i64, i64 } %t137, ptr %a138 - store { ptr, i64, i64 } { ptr @.str.3732, i64 6, i64 0 }, ptr %a139 + store { ptr, i64, i64 } { ptr @.str.3892, i64 2, i64 0 }, ptr %a139 %t140 = call i32 @finch_str_eq(ptr %a138, ptr %a139) %t141 = icmp ne i32 %t140, 0 - br label %logic.from5697 -logic.from5697: - br i1 %t141, label %logic.end5699, label %logic.rhs5698 -logic.rhs5698: - %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.3733, 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.rend5700 -logic.rend5700: - br label %logic.end5699 -logic.end5699: - %t149 = phi i1 [ true, %logic.from5697 ], [ %t148, %logic.rend5700 ] - br label %logic.from5701 -logic.from5701: - br i1 %t149, label %logic.rhs5702, label %logic.end5703 -logic.rhs5702: - %t150 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t150, ptr %a151 - store { ptr, i64, i64 } { ptr @.str.3734, 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.from5704 -logic.from5704: - br i1 %t154, label %logic.end5706, label %logic.rhs5705 -logic.rhs5705: - %t155 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t155, ptr %a156 - store { ptr, i64, i64 } { ptr @.str.3735, 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.rend5707 -logic.rend5707: - br label %logic.end5706 -logic.end5706: - %t160 = phi i1 [ true, %logic.from5704 ], [ %t159, %logic.rend5707 ] - br label %logic.rend5708 -logic.rend5708: - br label %logic.end5703 -logic.end5703: - %t161 = phi i1 [ false, %logic.from5701 ], [ %t160, %logic.rend5708 ] - br i1 %t161, label %then5709, label %endif5711 -then5709: - %t162 = load { ptr, i64, i64 }, ptr %a22 - store { ptr, i64, i64 } %t162, ptr %a164 - store { ptr, i64, i64 } { ptr @.str.3736, 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 %endif5711 -endif5711: - %t167 = load ptr, ptr %a1 - %t168 = load %S.ast.Node, ptr %a5 - %t169 = load { ptr, i64, i64 }, ptr %a22 - call void @finch.gen.fail(ptr %t167, %S.ast.Node %t168, { ptr, i64, i64 } %t169) + br label %logic.rend6053 +logic.rend6053: + br label %logic.end6052 +logic.end6052: + %t142 = phi i1 [ true, %logic.from6050 ], [ %t141, %logic.rend6053 ] + br i1 %t142, label %then6054, label %endif6056 +then6054: + %t143 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t143, ptr %a145 + store { ptr, i64, i64 } { ptr @.str.3893, i64 43, 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 %a25 + store { ptr, i64, i64 } %t147, ptr %a25 + store { ptr, i64, i64 } %t148, ptr %a149 + call void @finch_str_drop(ptr %a149) + br label %endif6056 +endif6056: + br label %endif6034 +endif6034: + %t150 = getelementptr inbounds %S.gen.Val, ptr %a3, i32 0, i32 1 + %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.3894, i64 6, i64 0 }, ptr %a154 + %t155 = call i32 @finch_str_eq(ptr %a153, ptr %a154) + %t156 = icmp ne i32 %t155, 0 + br label %logic.from6057 +logic.from6057: + br i1 %t156, label %logic.end6059, label %logic.rhs6058 +logic.rhs6058: + %t157 = getelementptr inbounds %S.gen.Val, ptr %a3, i32 0, i32 1 + %t158 = getelementptr inbounds %S.ast.Type, ptr %t157, i32 0, i32 0 + %t159 = load { ptr, i64, i64 }, ptr %t158 + store { ptr, i64, i64 } %t159, ptr %a160 + store { ptr, i64, i64 } { ptr @.str.3895, 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.rend6060 +logic.rend6060: + br label %logic.end6059 +logic.end6059: + %t164 = phi i1 [ true, %logic.from6057 ], [ %t163, %logic.rend6060 ] + br label %logic.from6061 +logic.from6061: + br i1 %t164, label %logic.rhs6062, label %logic.end6063 +logic.rhs6062: + %t165 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t165, ptr %a166 + store { ptr, i64, i64 } { ptr @.str.3896, 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.from6064 +logic.from6064: + br i1 %t169, label %logic.end6066, label %logic.rhs6065 +logic.rhs6065: + %t170 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t170, ptr %a171 + store { ptr, i64, i64 } { ptr @.str.3897, i64 2, i64 0 }, ptr %a172 + %t173 = call i32 @finch_str_eq(ptr %a171, ptr %a172) + %t174 = icmp ne i32 %t173, 0 + br label %logic.rend6067 +logic.rend6067: + br label %logic.end6066 +logic.end6066: + %t175 = phi i1 [ true, %logic.from6064 ], [ %t174, %logic.rend6067 ] + br label %logic.rend6068 +logic.rend6068: + br label %logic.end6063 +logic.end6063: + %t176 = phi i1 [ false, %logic.from6061 ], [ %t175, %logic.rend6068 ] + br i1 %t176, label %then6069, label %endif6071 +then6069: + %t177 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t177, ptr %a179 + store { ptr, i64, i64 } { ptr @.str.3898, i64 31, i64 0 }, ptr %a180 + call void @finch_str_concat(ptr %a178, ptr %a179, ptr %a180) + %t181 = load { ptr, i64, i64 }, ptr %a178 + %t182 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t181, ptr %a25 + store { ptr, i64, i64 } %t182, ptr %a183 + call void @finch_str_drop(ptr %a183) + br label %endif6071 +endif6071: + %t184 = load ptr, ptr %a1 + %t185 = load %S.ast.Node, ptr %a5 + %t186 = load { ptr, i64, i64 }, ptr %a25 + call void @finch.gen.fail(ptr %t184, %S.ast.Node %t185, { ptr, i64, i64 } %t186) + call void @finch_str_drop(ptr %a25) ret void } @@ -52070,149 +61590,161 @@ entry: %a53 = alloca { ptr, i64, i64 }, align 16 %a60 = alloca %S.ast.Type, align 16 %a61 = alloca %S.ast.Type, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca %S.ast.Type, align 16 - %a104 = alloca %S.ast.Type, align 16 - %a138 = alloca %S.ast.Type, align 16 - %a139 = alloca %S.ast.Type, align 16 - %a172 = alloca %S.ast.Type, align 16 - %a173 = alloca %S.ast.Type, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 + %a68 = alloca %S.gen.Val, align 16 + %a97 = alloca { ptr, i64, i64 }, align 16 + %a98 = alloca { ptr, i64, i64 }, align 16 + %a105 = alloca %S.ast.Type, align 16 + %a106 = alloca %S.ast.Type, align 16 + %a113 = alloca %S.gen.Val, align 16 + %a142 = alloca %S.ast.Type, align 16 + %a143 = alloca %S.ast.Type, align 16 + %a149 = alloca %S.gen.Val, align 16 + %a178 = alloca %S.ast.Type, align 16 + %a179 = alloca %S.ast.Type, align 16 + %a185 = alloca %S.gen.Val, align 16 + %a207 = alloca %S.ast.Node, align 16 + %a211 = alloca %S.gen.Val, align 16 + %a233 = alloca %S.ast.Node, align 16 + %a237 = alloca %S.gen.Val, align 16 + %a254 = alloca { ptr, i64, i64 }, align 16 + %a255 = alloca { ptr, i64, i64 }, align 16 + %a269 = alloca %S.ast.Type, align 16 + %a276 = alloca %S.gen.Val, align 16 + %a282 = alloca { ptr, i64, i64 }, align 16 + %a283 = alloca { ptr, i64, i64 }, align 16 + %a297 = alloca %S.ast.Type, align 16 + %a304 = alloca %S.gen.Val, align 16 store ptr %p0, ptr %a1 store ptr %p1, ptr %a2 store ptr %p2, ptr %a3 %t4 = load ptr, ptr %a2 %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic5712, label %ok5713 -panic5712: - call void @finch_panic(ptr @.str.3737, i64 3069, ptr @.str.3738) + br i1 %t5, label %panic6072, label %ok6073 +panic6072: + call void @finch_panic(ptr @.str.3899, i64 3324, ptr @.str.3900) unreachable -ok5713: +ok6073: %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 %panic5714, label %ok5715 -panic5714: - call void @finch_panic(ptr @.str.3739, i64 3069, ptr @.str.3740) + br i1 %t9, label %panic6074, label %ok6075 +panic6074: + call void @finch_panic(ptr @.str.3901, i64 3324, ptr @.str.3902) unreachable -ok5715: +ok6075: %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 %then5716, label %endif5718 -then5716: + br i1 %t12, label %then6076, label %endif6078 +then6076: ret i1 true -endif5718: +endif6078: %t13 = load ptr, ptr %a2 %t14 = icmp eq ptr %t13, null - br i1 %t14, label %panic5719, label %ok5720 -panic5719: - call void @finch_panic(ptr @.str.3741, i64 3072, ptr @.str.3742) + br i1 %t14, label %panic6079, label %ok6080 +panic6079: + call void @finch_panic(ptr @.str.3903, i64 3327, ptr @.str.3904) unreachable -ok5720: +ok6080: %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.from5721 -logic.from5721: - br i1 %t17, label %logic.rhs5722, label %logic.end5723 -logic.rhs5722: + br label %logic.from6081 +logic.from6081: + br i1 %t17, label %logic.rhs6082, label %logic.end6083 +logic.rhs6082: %t18 = load ptr, ptr %a3 %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic5724, label %ok5725 -panic5724: - call void @finch_panic(ptr @.str.3743, i64 3072, ptr @.str.3744) + br i1 %t19, label %panic6084, label %ok6085 +panic6084: + call void @finch_panic(ptr @.str.3905, i64 3327, ptr @.str.3906) unreachable -ok5725: +ok6085: %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.rend5726 -logic.rend5726: - br label %logic.end5723 -logic.end5723: - %t23 = phi i1 [ false, %logic.from5721 ], [ %t22, %logic.rend5726 ] - br i1 %t23, label %then5727, label %endif5729 -then5727: + br label %logic.rend6086 +logic.rend6086: + br label %logic.end6083 +logic.end6083: + %t23 = phi i1 [ false, %logic.from6081 ], [ %t22, %logic.rend6086 ] + br i1 %t23, label %then6087, label %endif6089 +then6087: %t24 = load ptr, ptr %a2 %t25 = icmp eq ptr %t24, null - br i1 %t25, label %panic5730, label %ok5731 -panic5730: - call void @finch_panic(ptr @.str.3745, i64 3075, ptr @.str.3746) + br i1 %t25, label %panic6090, label %ok6091 +panic6090: + call void @finch_panic(ptr @.str.3907, i64 3330, ptr @.str.3908) unreachable -ok5731: +ok6091: %t26 = getelementptr inbounds %S.gen.Val, ptr %t24, i32 0, i32 3 %t27 = load i1, ptr %t26 - br label %logic.from5732 -logic.from5732: - br i1 %t27, label %logic.rhs5733, label %logic.end5734 -logic.rhs5733: + br label %logic.from6092 +logic.from6092: + br i1 %t27, label %logic.rhs6093, label %logic.end6094 +logic.rhs6093: %t28 = load ptr, ptr %a3 %t29 = icmp eq ptr %t28, null - br i1 %t29, label %panic5735, label %ok5736 -panic5735: - call void @finch_panic(ptr @.str.3747, i64 3075, ptr @.str.3748) + br i1 %t29, label %panic6095, label %ok6096 +panic6095: + call void @finch_panic(ptr @.str.3909, i64 3330, ptr @.str.3910) unreachable -ok5736: +ok6096: %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.rend5737 -logic.rend5737: - br label %logic.end5734 -logic.end5734: - %t33 = phi i1 [ false, %logic.from5732 ], [ %t32, %logic.rend5737 ] - br label %logic.from5738 -logic.from5738: - br i1 %t33, label %logic.rhs5739, label %logic.end5740 -logic.rhs5739: + br label %logic.rend6097 +logic.rend6097: + br label %logic.end6094 +logic.end6094: + %t33 = phi i1 [ false, %logic.from6092 ], [ %t32, %logic.rend6097 ] + br label %logic.from6098 +logic.from6098: + br i1 %t33, label %logic.rhs6099, label %logic.end6100 +logic.rhs6099: %t34 = load ptr, ptr %a2 %t35 = icmp eq ptr %t34, null - br i1 %t35, label %panic5741, label %ok5742 -panic5741: - call void @finch_panic(ptr @.str.3749, i64 3075, ptr @.str.3750) + br i1 %t35, label %panic6101, label %ok6102 +panic6101: + call void @finch_panic(ptr @.str.3911, i64 3330, ptr @.str.3912) unreachable -ok5742: +ok6102: %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 %panic5743, label %ok5744 -panic5743: - call void @finch_panic(ptr @.str.3751, i64 3075, ptr @.str.3752) + br i1 %t39, label %panic6103, label %ok6104 +panic6103: + call void @finch_panic(ptr @.str.3913, i64 3330, ptr @.str.3914) unreachable -ok5744: +ok6104: %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 %panic5745, label %ok5746 -panic5745: - call void @finch_panic(ptr @.str.3753, i64 3075, ptr @.str.3754) + br i1 %t43, label %panic6105, label %ok6106 +panic6105: + call void @finch_panic(ptr @.str.3915, i64 3330, ptr @.str.3916) unreachable -ok5746: +ok6106: %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.rend5747 -logic.rend5747: - br label %logic.end5740 -logic.end5740: - %t47 = phi i1 [ false, %logic.from5738 ], [ %t46, %logic.rend5747 ] - br i1 %t47, label %then5748, label %endif5750 -then5748: + br label %logic.rend6107 +logic.rend6107: + br label %logic.end6100 +logic.end6100: + %t47 = phi i1 [ false, %logic.from6098 ], [ %t46, %logic.rend6107 ] + br i1 %t47, label %then6108, label %endif6110 +then6108: %t48 = load ptr, ptr %a2 %t49 = icmp eq ptr %t48, null - br i1 %t49, label %panic5751, label %ok5752 -panic5751: - call void @finch_panic(ptr @.str.3755, i64 3076, ptr @.str.3756) + br i1 %t49, label %panic6111, label %ok6112 +panic6111: + call void @finch_panic(ptr @.str.3917, i64 3331, ptr @.str.3918) unreachable -ok5752: +ok6112: %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 @@ -52221,11 +61753,11 @@ ok5752: %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 %panic5753, label %ok5754 -panic5753: - call void @finch_panic(ptr @.str.3757, i64 3076, ptr @.str.3758) + br i1 %t57, label %panic6113, label %ok6114 +panic6113: + call void @finch_panic(ptr @.str.3919, i64 3331, ptr @.str.3920) unreachable -ok5754: +ok6114: %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 @@ -52235,523 +61767,555 @@ ok5754: %t64 = insertvalue %S.gen.Val %t63, i1 true, 3 %t65 = load ptr, ptr %a2 %t66 = icmp eq ptr %t65, null - br i1 %t66, label %panic5755, label %ok5756 -panic5755: - call void @finch_panic(ptr @.str.3759, i64 3076, ptr @.str.3760) + br i1 %t66, label %panic6115, label %ok6116 +panic6115: + call void @finch_panic(ptr @.str.3921, i64 3331, ptr @.str.3922) unreachable -ok5756: +ok6116: + %t67 = load %S.gen.Val, ptr %t65 store %S.gen.Val %t64, ptr %t65 + store %S.gen.Val %t67, ptr %a68 + call void @finch.drop.S_gen_Val(ptr %a68) ret i1 true -endif5750: - %t67 = load ptr, ptr %a3 - %t68 = icmp eq ptr %t67, null - br i1 %t68, label %panic5757, label %ok5758 -panic5757: - call void @finch_panic(ptr @.str.3761, i64 3079, ptr @.str.3762) +endif6110: + %t69 = load ptr, ptr %a3 + %t70 = icmp eq ptr %t69, null + br i1 %t70, label %panic6117, label %ok6118 +panic6117: + call void @finch_panic(ptr @.str.3923, i64 3334, ptr @.str.3924) unreachable -ok5758: - %t69 = getelementptr inbounds %S.gen.Val, ptr %t67, i32 0, i32 3 - %t70 = load i1, ptr %t69 - br label %logic.from5759 -logic.from5759: - br i1 %t70, label %logic.rhs5760, label %logic.end5761 -logic.rhs5760: - %t71 = load ptr, ptr %a2 - %t72 = icmp eq ptr %t71, null - br i1 %t72, label %panic5762, label %ok5763 -panic5762: - call void @finch_panic(ptr @.str.3763, i64 3079, ptr @.str.3764) +ok6118: + %t71 = getelementptr inbounds %S.gen.Val, ptr %t69, i32 0, i32 3 + %t72 = load i1, ptr %t71 + br label %logic.from6119 +logic.from6119: + br i1 %t72, label %logic.rhs6120, label %logic.end6121 +logic.rhs6120: + %t73 = load ptr, ptr %a2 + %t74 = icmp eq ptr %t73, null + br i1 %t74, label %panic6122, label %ok6123 +panic6122: + call void @finch_panic(ptr @.str.3925, i64 3334, ptr @.str.3926) unreachable -ok5763: - %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.rend5764 -logic.rend5764: - br label %logic.end5761 -logic.end5761: - %t76 = phi i1 [ false, %logic.from5759 ], [ %t75, %logic.rend5764 ] - br label %logic.from5765 -logic.from5765: - br i1 %t76, label %logic.rhs5766, label %logic.end5767 -logic.rhs5766: - %t77 = load ptr, ptr %a3 - %t78 = icmp eq ptr %t77, null - br i1 %t78, label %panic5768, label %ok5769 -panic5768: - call void @finch_panic(ptr @.str.3765, i64 3079, ptr @.str.3766) +ok6123: + %t75 = getelementptr inbounds %S.gen.Val, ptr %t73, i32 0, i32 3 + %t76 = load i1, ptr %t75 + %t77 = xor i1 %t76, true + br label %logic.rend6124 +logic.rend6124: + br label %logic.end6121 +logic.end6121: + %t78 = phi i1 [ false, %logic.from6119 ], [ %t77, %logic.rend6124 ] + br label %logic.from6125 +logic.from6125: + br i1 %t78, label %logic.rhs6126, label %logic.end6127 +logic.rhs6126: + %t79 = load ptr, ptr %a3 + %t80 = icmp eq ptr %t79, null + br i1 %t80, label %panic6128, label %ok6129 +panic6128: + call void @finch_panic(ptr @.str.3927, i64 3334, ptr @.str.3928) unreachable -ok5769: - %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 %panic5770, label %ok5771 -panic5770: - call void @finch_panic(ptr @.str.3767, i64 3079, ptr @.str.3768) +ok6129: + %t81 = getelementptr inbounds %S.gen.Val, ptr %t79, i32 0, i32 0 + %t82 = load { ptr, i64, i64 }, ptr %t81 + %t83 = load ptr, ptr %a3 + %t84 = icmp eq ptr %t83, null + br i1 %t84, label %panic6130, label %ok6131 +panic6130: + call void @finch_panic(ptr @.str.3929, i64 3334, ptr @.str.3930) unreachable -ok5771: - %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 %panic5772, label %ok5773 -panic5772: - call void @finch_panic(ptr @.str.3769, i64 3079, ptr @.str.3770) +ok6131: + %t85 = getelementptr inbounds %S.gen.Val, ptr %t83, i32 0, i32 1 + %t86 = load %S.ast.Type, ptr %t85 + %t87 = load ptr, ptr %a2 + %t88 = icmp eq ptr %t87, null + br i1 %t88, label %panic6132, label %ok6133 +panic6132: + call void @finch_panic(ptr @.str.3931, i64 3334, ptr @.str.3932) unreachable -ok5773: - %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.rend5774 -logic.rend5774: - br label %logic.end5767 -logic.end5767: - %t90 = phi i1 [ false, %logic.from5765 ], [ %t89, %logic.rend5774 ] - br i1 %t90, label %then5775, label %endif5777 -then5775: - %t91 = load ptr, ptr %a3 - %t92 = icmp eq ptr %t91, null - br i1 %t92, label %panic5778, label %ok5779 -panic5778: - call void @finch_panic(ptr @.str.3771, i64 3080, ptr @.str.3772) +ok6133: + %t89 = getelementptr inbounds %S.gen.Val, ptr %t87, i32 0, i32 1 + %t90 = load %S.ast.Type, ptr %t89 + %t91 = call i1 @finch.gen.fits({ ptr, i64, i64 } %t82, %S.ast.Type %t86, %S.ast.Type %t90) + br label %logic.rend6134 +logic.rend6134: + br label %logic.end6127 +logic.end6127: + %t92 = phi i1 [ false, %logic.from6125 ], [ %t91, %logic.rend6134 ] + br i1 %t92, label %then6135, label %endif6137 +then6135: + %t93 = load ptr, ptr %a3 + %t94 = icmp eq ptr %t93, null + br i1 %t94, label %panic6138, label %ok6139 +panic6138: + call void @finch_panic(ptr @.str.3933, i64 3335, ptr @.str.3934) unreachable -ok5779: - %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 - call void @finch_str_copy(ptr %a96, ptr %a95) - %t97 = load { ptr, i64, i64 }, ptr %a96 - %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 %panic5780, label %ok5781 -panic5780: - call void @finch_panic(ptr @.str.3773, i64 3080, ptr @.str.3774) +ok6139: + %t95 = getelementptr inbounds %S.gen.Val, ptr %t93, i32 0, i32 0 + %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 + %t100 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t99, 0 + %t101 = load ptr, ptr %a2 + %t102 = icmp eq ptr %t101, null + br i1 %t102, label %panic6140, label %ok6141 +panic6140: + call void @finch_panic(ptr @.str.3935, i64 3335, ptr @.str.3936) unreachable -ok5781: - %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 - call void @finch.copy.S_ast_Type(ptr %a104, ptr %a103) - %t105 = load %S.ast.Type, ptr %a104 - %t106 = insertvalue %S.gen.Val %t98, %S.ast.Type %t105, 1 - %t107 = insertvalue %S.gen.Val %t106, i1 true, 3 - %t108 = load ptr, ptr %a3 - %t109 = icmp eq ptr %t108, null - br i1 %t109, label %panic5782, label %ok5783 -panic5782: - call void @finch_panic(ptr @.str.3775, i64 3080, ptr @.str.3776) - unreachable -ok5783: - store %S.gen.Val %t107, ptr %t108 - ret i1 true -endif5777: - %t110 = load ptr, ptr %a2 +ok6141: + %t103 = getelementptr inbounds %S.gen.Val, ptr %t101, i32 0, i32 1 + %t104 = load %S.ast.Type, ptr %t103 + store %S.ast.Type %t104, ptr %a105 + call void @finch.copy.S_ast_Type(ptr %a106, ptr %a105) + %t107 = load %S.ast.Type, ptr %a106 + %t108 = insertvalue %S.gen.Val %t100, %S.ast.Type %t107, 1 + %t109 = insertvalue %S.gen.Val %t108, i1 true, 3 + %t110 = load ptr, ptr %a3 %t111 = icmp eq ptr %t110, null - br i1 %t111, label %panic5784, label %ok5785 -panic5784: - call void @finch_panic(ptr @.str.3777, i64 3083, ptr @.str.3778) + br i1 %t111, label %panic6142, label %ok6143 +panic6142: + call void @finch_panic(ptr @.str.3937, i64 3335, ptr @.str.3938) unreachable -ok5785: - %t112 = getelementptr inbounds %S.gen.Val, ptr %t110, i32 0, i32 1 - %t113 = load %S.ast.Type, ptr %t112 - %t114 = load ptr, ptr %a3 +ok6143: + %t112 = load %S.gen.Val, ptr %t110 + store %S.gen.Val %t109, ptr %t110 + store %S.gen.Val %t112, ptr %a113 + call void @finch.drop.S_gen_Val(ptr %a113) + ret i1 true +endif6137: + %t114 = load ptr, ptr %a2 %t115 = icmp eq ptr %t114, null - br i1 %t115, label %panic5786, label %ok5787 -panic5786: - call void @finch_panic(ptr @.str.3779, i64 3083, ptr @.str.3780) + br i1 %t115, label %panic6144, label %ok6145 +panic6144: + call void @finch_panic(ptr @.str.3939, i64 3338, ptr @.str.3940) unreachable -ok5787: +ok6145: %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 %then5788, label %endif5790 -then5788: - %t119 = load ptr, ptr %a1 - %t120 = load ptr, ptr %a2 - %t121 = icmp eq ptr %t120, null - br i1 %t121, label %panic5791, label %ok5792 -panic5791: - call void @finch_panic(ptr @.str.3781, i64 3084, ptr @.str.3782) + %t118 = load ptr, ptr %a3 + %t119 = icmp eq ptr %t118, null + br i1 %t119, label %panic6146, label %ok6147 +panic6146: + call void @finch_panic(ptr @.str.3941, i64 3338, ptr @.str.3942) unreachable -ok5792: - %t122 = getelementptr inbounds %S.gen.Val, ptr %t120, i32 0, i32 0 - %t123 = load { ptr, i64, i64 }, ptr %t122 +ok6147: + %t120 = getelementptr inbounds %S.gen.Val, ptr %t118, i32 0, i32 1 + %t121 = load %S.ast.Type, ptr %t120 + %t122 = call i1 @finch.gen.widens(%S.ast.Type %t117, %S.ast.Type %t121) + br i1 %t122, label %then6148, label %endif6150 +then6148: + %t123 = load ptr, ptr %a1 %t124 = load ptr, ptr %a2 %t125 = icmp eq ptr %t124, null - br i1 %t125, label %panic5793, label %ok5794 -panic5793: - call void @finch_panic(ptr @.str.3783, i64 3084, ptr @.str.3784) + br i1 %t125, label %panic6151, label %ok6152 +panic6151: + call void @finch_panic(ptr @.str.3943, i64 3339, ptr @.str.3944) unreachable -ok5794: - %t126 = getelementptr inbounds %S.gen.Val, ptr %t124, i32 0, i32 1 - %t127 = load %S.ast.Type, ptr %t126 - %t128 = load ptr, ptr %a3 +ok6152: + %t126 = getelementptr inbounds %S.gen.Val, ptr %t124, i32 0, i32 0 + %t127 = load { ptr, i64, i64 }, ptr %t126 + %t128 = load ptr, ptr %a2 %t129 = icmp eq ptr %t128, null - br i1 %t129, label %panic5795, label %ok5796 -panic5795: - call void @finch_panic(ptr @.str.3785, i64 3084, ptr @.str.3786) + br i1 %t129, label %panic6153, label %ok6154 +panic6153: + call void @finch_panic(ptr @.str.3945, i64 3339, ptr @.str.3946) unreachable -ok5796: +ok6154: %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 %panic5797, label %ok5798 -panic5797: - call void @finch_panic(ptr @.str.3787, i64 3084, ptr @.str.3788) + %t132 = load ptr, ptr %a3 + %t133 = icmp eq ptr %t132, null + br i1 %t133, label %panic6155, label %ok6156 +panic6155: + call void @finch_panic(ptr @.str.3947, i64 3339, ptr @.str.3948) unreachable -ok5798: - %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 - call void @finch.copy.S_ast_Type(ptr %a139, ptr %a138) - %t140 = load %S.ast.Type, ptr %a139 - %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 %panic5799, label %ok5800 -panic5799: - call void @finch_panic(ptr @.str.3789, i64 3084, ptr @.str.3790) +ok6156: + %t134 = getelementptr inbounds %S.gen.Val, ptr %t132, i32 0, i32 1 + %t135 = load %S.ast.Type, ptr %t134 + %t136 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t123, { ptr, i64, i64 } %t127, %S.ast.Type %t131, %S.ast.Type %t135) + %t137 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t136, 0 + %t138 = load ptr, ptr %a3 + %t139 = icmp eq ptr %t138, null + br i1 %t139, label %panic6157, label %ok6158 +panic6157: + call void @finch_panic(ptr @.str.3949, i64 3339, ptr @.str.3950) unreachable -ok5800: - store %S.gen.Val %t141, ptr %t142 +ok6158: + %t140 = getelementptr inbounds %S.gen.Val, ptr %t138, i32 0, i32 1 + %t141 = load %S.ast.Type, ptr %t140 + store %S.ast.Type %t141, ptr %a142 + call void @finch.copy.S_ast_Type(ptr %a143, ptr %a142) + %t144 = load %S.ast.Type, ptr %a143 + %t145 = insertvalue %S.gen.Val %t137, %S.ast.Type %t144, 1 + %t146 = load ptr, ptr %a2 + %t147 = icmp eq ptr %t146, null + br i1 %t147, label %panic6159, label %ok6160 +panic6159: + call void @finch_panic(ptr @.str.3951, i64 3339, ptr @.str.3952) + unreachable +ok6160: + %t148 = load %S.gen.Val, ptr %t146 + store %S.gen.Val %t145, ptr %t146 + store %S.gen.Val %t148, ptr %a149 + call void @finch.drop.S_gen_Val(ptr %a149) ret i1 true -endif5790: - %t144 = load ptr, ptr %a3 - %t145 = icmp eq ptr %t144, null - br i1 %t145, label %panic5801, label %ok5802 -panic5801: - call void @finch_panic(ptr @.str.3791, i64 3087, ptr @.str.3792) +endif6150: + %t150 = load ptr, ptr %a3 + %t151 = icmp eq ptr %t150, null + br i1 %t151, label %panic6161, label %ok6162 +panic6161: + call void @finch_panic(ptr @.str.3953, i64 3342, ptr @.str.3954) unreachable -ok5802: - %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 %panic5803, label %ok5804 -panic5803: - call void @finch_panic(ptr @.str.3793, i64 3087, ptr @.str.3794) - unreachable -ok5804: - %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 %then5805, label %endif5807 -then5805: - %t153 = load ptr, ptr %a1 - %t154 = load ptr, ptr %a3 +ok6162: + %t152 = getelementptr inbounds %S.gen.Val, ptr %t150, i32 0, i32 1 + %t153 = load %S.ast.Type, ptr %t152 + %t154 = load ptr, ptr %a2 %t155 = icmp eq ptr %t154, null - br i1 %t155, label %panic5808, label %ok5809 -panic5808: - call void @finch_panic(ptr @.str.3795, i64 3088, ptr @.str.3796) + br i1 %t155, label %panic6163, label %ok6164 +panic6163: + call void @finch_panic(ptr @.str.3955, i64 3342, ptr @.str.3956) unreachable -ok5809: - %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 %panic5810, label %ok5811 -panic5810: - call void @finch_panic(ptr @.str.3797, i64 3088, ptr @.str.3798) +ok6164: + %t156 = getelementptr inbounds %S.gen.Val, ptr %t154, i32 0, i32 1 + %t157 = load %S.ast.Type, ptr %t156 + %t158 = call i1 @finch.gen.widens(%S.ast.Type %t153, %S.ast.Type %t157) + br i1 %t158, label %then6165, label %endif6167 +then6165: + %t159 = load ptr, ptr %a1 + %t160 = load ptr, ptr %a3 + %t161 = icmp eq ptr %t160, null + br i1 %t161, label %panic6168, label %ok6169 +panic6168: + call void @finch_panic(ptr @.str.3957, i64 3343, ptr @.str.3958) unreachable -ok5811: - %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 %panic5812, label %ok5813 -panic5812: - call void @finch_panic(ptr @.str.3799, i64 3088, ptr @.str.3800) +ok6169: + %t162 = getelementptr inbounds %S.gen.Val, ptr %t160, i32 0, i32 0 + %t163 = load { ptr, i64, i64 }, ptr %t162 + %t164 = load ptr, ptr %a3 + %t165 = icmp eq ptr %t164, null + br i1 %t165, label %panic6170, label %ok6171 +panic6170: + call void @finch_panic(ptr @.str.3959, i64 3343, ptr @.str.3960) unreachable -ok5813: - %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 +ok6171: + %t166 = getelementptr inbounds %S.gen.Val, ptr %t164, i32 0, i32 1 + %t167 = load %S.ast.Type, ptr %t166 %t168 = load ptr, ptr %a2 %t169 = icmp eq ptr %t168, null - br i1 %t169, label %panic5814, label %ok5815 -panic5814: - call void @finch_panic(ptr @.str.3801, i64 3088, ptr @.str.3802) + br i1 %t169, label %panic6172, label %ok6173 +panic6172: + call void @finch_panic(ptr @.str.3961, i64 3343, ptr @.str.3962) unreachable -ok5815: +ok6173: %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 - call void @finch.copy.S_ast_Type(ptr %a173, ptr %a172) - %t174 = load %S.ast.Type, ptr %a173 - %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 %panic5816, label %ok5817 -panic5816: - call void @finch_panic(ptr @.str.3803, i64 3088, ptr @.str.3804) + %t172 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t159, { ptr, i64, i64 } %t163, %S.ast.Type %t167, %S.ast.Type %t171) + %t173 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t172, 0 + %t174 = load ptr, ptr %a2 + %t175 = icmp eq ptr %t174, null + br i1 %t175, label %panic6174, label %ok6175 +panic6174: + call void @finch_panic(ptr @.str.3963, i64 3343, ptr @.str.3964) unreachable -ok5817: - store %S.gen.Val %t175, ptr %t176 +ok6175: + %t176 = getelementptr inbounds %S.gen.Val, ptr %t174, i32 0, i32 1 + %t177 = load %S.ast.Type, ptr %t176 + store %S.ast.Type %t177, ptr %a178 + call void @finch.copy.S_ast_Type(ptr %a179, ptr %a178) + %t180 = load %S.ast.Type, ptr %a179 + %t181 = insertvalue %S.gen.Val %t173, %S.ast.Type %t180, 1 + %t182 = load ptr, ptr %a3 + %t183 = icmp eq ptr %t182, null + br i1 %t183, label %panic6176, label %ok6177 +panic6176: + call void @finch_panic(ptr @.str.3965, i64 3343, ptr @.str.3966) + unreachable +ok6177: + %t184 = load %S.gen.Val, ptr %t182 + store %S.gen.Val %t181, ptr %t182 + store %S.gen.Val %t184, ptr %a185 + call void @finch.drop.S_gen_Val(ptr %a185) ret i1 true -endif5807: +endif6167: ret i1 false -endif5729: - %t178 = load ptr, ptr %a2 - %t179 = icmp eq ptr %t178, null - br i1 %t179, label %panic5818, label %ok5819 -panic5818: - call void @finch_panic(ptr @.str.3805, i64 3093, ptr @.str.3806) +endif6089: + %t186 = load ptr, ptr %a2 + %t187 = icmp eq ptr %t186, null + br i1 %t187, label %panic6178, label %ok6179 +panic6178: + call void @finch_panic(ptr @.str.3967, i64 3348, ptr @.str.3968) unreachable -ok5819: - %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.from5820 -logic.from5820: - br i1 %t182, label %logic.rhs5821, label %logic.end5822 -logic.rhs5821: - %t183 = load ptr, ptr %a3 - %t184 = icmp eq ptr %t183, null - br i1 %t184, label %panic5823, label %ok5824 -panic5823: - call void @finch_panic(ptr @.str.3807, i64 3093, ptr @.str.3808) +ok6179: + %t188 = getelementptr inbounds %S.gen.Val, ptr %t186, i32 0, i32 1 + %t189 = load %S.ast.Type, ptr %t188 + %t190 = call i1 @finch.gen.isInt(%S.ast.Type %t189) + br label %logic.from6180 +logic.from6180: + br i1 %t190, label %logic.rhs6181, label %logic.end6182 +logic.rhs6181: + %t191 = load ptr, ptr %a3 + %t192 = icmp eq ptr %t191, null + br i1 %t192, label %panic6183, label %ok6184 +panic6183: + call void @finch_panic(ptr @.str.3969, i64 3348, ptr @.str.3970) unreachable -ok5824: - %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.rend5825 -logic.rend5825: - br label %logic.end5822 -logic.end5822: - %t188 = phi i1 [ false, %logic.from5820 ], [ %t187, %logic.rend5825 ] - br i1 %t188, label %then5826, label %endif5828 -then5826: - %t189 = load ptr, ptr %a1 - %t190 = load ptr, ptr %a2 - %t191 = icmp eq ptr %t190, null - br i1 %t191, label %panic5829, label %ok5830 -panic5829: - call void @finch_panic(ptr @.str.3809, i64 3094, ptr @.str.3810) +ok6184: + %t193 = getelementptr inbounds %S.gen.Val, ptr %t191, i32 0, i32 1 + %t194 = load %S.ast.Type, ptr %t193 + %t195 = call i1 @finch.gen.isFloat(%S.ast.Type %t194) + br label %logic.rend6185 +logic.rend6185: + br label %logic.end6182 +logic.end6182: + %t196 = phi i1 [ false, %logic.from6180 ], [ %t195, %logic.rend6185 ] + br i1 %t196, label %then6186, label %endif6188 +then6186: + %t197 = load ptr, ptr %a1 + %t198 = load ptr, ptr %a2 + %t199 = icmp eq ptr %t198, null + br i1 %t199, label %panic6189, label %ok6190 +panic6189: + call void @finch_panic(ptr @.str.3971, i64 3349, ptr @.str.3972) unreachable -ok5830: - %t192 = load %S.gen.Val, ptr %t190 - %t193 = load ptr, ptr %a3 - %t194 = icmp eq ptr %t193, null - br i1 %t194, label %panic5831, label %ok5832 -panic5831: - call void @finch_panic(ptr @.str.3811, i64 3094, ptr @.str.3812) - unreachable -ok5832: - %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.3813, i64 0, i64 0 }) - %t199 = load ptr, ptr %a2 - %t200 = icmp eq ptr %t199, null - br i1 %t200, label %panic5833, label %ok5834 -panic5833: - call void @finch_panic(ptr @.str.3814, i64 3094, ptr @.str.3815) - unreachable -ok5834: - store %S.gen.Val %t198, ptr %t199 - ret i1 true -endif5828: - %t201 = load ptr, ptr %a2 +ok6190: + %t200 = load %S.gen.Val, ptr %t198 + %t201 = load ptr, ptr %a3 %t202 = icmp eq ptr %t201, null - br i1 %t202, label %panic5835, label %ok5836 -panic5835: - call void @finch_panic(ptr @.str.3816, i64 3097, ptr @.str.3817) + br i1 %t202, label %panic6191, label %ok6192 +panic6191: + call void @finch_panic(ptr @.str.3973, i64 3349, ptr @.str.3974) unreachable -ok5836: +ok6192: %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.from5837 -logic.from5837: - br i1 %t205, label %logic.rhs5838, label %logic.end5839 -logic.rhs5838: - %t206 = load ptr, ptr %a3 - %t207 = icmp eq ptr %t206, null - br i1 %t207, label %panic5840, label %ok5841 -panic5840: - call void @finch_panic(ptr @.str.3818, i64 3097, ptr @.str.3819) + %t205 = call %S.ast.Node @finch.gen.Node0() + %t206 = call %S.gen.Val @finch.gen.coerce(ptr %t197, %S.gen.Val %t200, %S.ast.Type %t204, %S.ast.Node %t205, { ptr, i64, i64 } { ptr @.str.3975, i64 0, i64 0 }) + store %S.ast.Node %t205, ptr %a207 + call void @finch.drop.S_ast_Node(ptr %a207) + %t208 = load ptr, ptr %a2 + %t209 = icmp eq ptr %t208, null + br i1 %t209, label %panic6193, label %ok6194 +panic6193: + call void @finch_panic(ptr @.str.3976, i64 3349, ptr @.str.3977) unreachable -ok5841: - %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.rend5842 -logic.rend5842: - br label %logic.end5839 -logic.end5839: - %t211 = phi i1 [ false, %logic.from5837 ], [ %t210, %logic.rend5842 ] - br i1 %t211, label %then5843, label %endif5845 -then5843: - %t212 = load ptr, ptr %a1 - %t213 = load ptr, ptr %a3 - %t214 = icmp eq ptr %t213, null - br i1 %t214, label %panic5846, label %ok5847 -panic5846: - call void @finch_panic(ptr @.str.3820, i64 3098, ptr @.str.3821) - unreachable -ok5847: - %t215 = load %S.gen.Val, ptr %t213 - %t216 = load ptr, ptr %a2 - %t217 = icmp eq ptr %t216, null - br i1 %t217, label %panic5848, label %ok5849 -panic5848: - call void @finch_panic(ptr @.str.3822, i64 3098, ptr @.str.3823) - unreachable -ok5849: - %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.3824, i64 0, i64 0 }) - %t222 = load ptr, ptr %a3 - %t223 = icmp eq ptr %t222, null - br i1 %t223, label %panic5850, label %ok5851 -panic5850: - call void @finch_panic(ptr @.str.3825, i64 3098, ptr @.str.3826) - unreachable -ok5851: - store %S.gen.Val %t221, ptr %t222 +ok6194: + %t210 = load %S.gen.Val, ptr %t208 + store %S.gen.Val %t206, ptr %t208 + store %S.gen.Val %t210, ptr %a211 + call void @finch.drop.S_gen_Val(ptr %a211) ret i1 true -endif5845: - %t224 = load ptr, ptr %a2 +endif6188: + %t212 = load ptr, ptr %a2 + %t213 = icmp eq ptr %t212, null + br i1 %t213, label %panic6195, label %ok6196 +panic6195: + call void @finch_panic(ptr @.str.3978, i64 3352, ptr @.str.3979) + unreachable +ok6196: + %t214 = getelementptr inbounds %S.gen.Val, ptr %t212, i32 0, i32 1 + %t215 = load %S.ast.Type, ptr %t214 + %t216 = call i1 @finch.gen.isFloat(%S.ast.Type %t215) + br label %logic.from6197 +logic.from6197: + br i1 %t216, label %logic.rhs6198, label %logic.end6199 +logic.rhs6198: + %t217 = load ptr, ptr %a3 + %t218 = icmp eq ptr %t217, null + br i1 %t218, label %panic6200, label %ok6201 +panic6200: + call void @finch_panic(ptr @.str.3980, i64 3352, ptr @.str.3981) + unreachable +ok6201: + %t219 = getelementptr inbounds %S.gen.Val, ptr %t217, i32 0, i32 1 + %t220 = load %S.ast.Type, ptr %t219 + %t221 = call i1 @finch.gen.isInt(%S.ast.Type %t220) + br label %logic.rend6202 +logic.rend6202: + br label %logic.end6199 +logic.end6199: + %t222 = phi i1 [ false, %logic.from6197 ], [ %t221, %logic.rend6202 ] + br i1 %t222, label %then6203, label %endif6205 +then6203: + %t223 = load ptr, ptr %a1 + %t224 = load ptr, ptr %a3 %t225 = icmp eq ptr %t224, null - br i1 %t225, label %panic5852, label %ok5853 -panic5852: - call void @finch_panic(ptr @.str.3827, i64 3101, ptr @.str.3828) + br i1 %t225, label %panic6206, label %ok6207 +panic6206: + call void @finch_panic(ptr @.str.3982, i64 3353, ptr @.str.3983) unreachable -ok5853: - %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.from5854 -logic.from5854: - br i1 %t228, label %logic.rhs5855, label %logic.end5856 -logic.rhs5855: - %t229 = load ptr, ptr %a3 - %t230 = icmp eq ptr %t229, null - br i1 %t230, label %panic5857, label %ok5858 -panic5857: - call void @finch_panic(ptr @.str.3829, i64 3101, ptr @.str.3830) +ok6207: + %t226 = load %S.gen.Val, ptr %t224 + %t227 = load ptr, ptr %a2 + %t228 = icmp eq ptr %t227, null + br i1 %t228, label %panic6208, label %ok6209 +panic6208: + call void @finch_panic(ptr @.str.3984, i64 3353, ptr @.str.3985) unreachable -ok5858: - %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.rend5859 -logic.rend5859: - br label %logic.end5856 -logic.end5856: - %t234 = phi i1 [ false, %logic.from5854 ], [ %t233, %logic.rend5859 ] - br i1 %t234, label %then5860, label %endif5862 -then5860: - %t235 = load ptr, ptr %a2 - %t236 = icmp eq ptr %t235, null - br i1 %t236, label %panic5863, label %ok5864 -panic5863: - call void @finch_panic(ptr @.str.3831, i64 3102, ptr @.str.3832) +ok6209: + %t229 = getelementptr inbounds %S.gen.Val, ptr %t227, i32 0, i32 1 + %t230 = load %S.ast.Type, ptr %t229 + %t231 = call %S.ast.Node @finch.gen.Node0() + %t232 = call %S.gen.Val @finch.gen.coerce(ptr %t223, %S.gen.Val %t226, %S.ast.Type %t230, %S.ast.Node %t231, { ptr, i64, i64 } { ptr @.str.3986, i64 0, i64 0 }) + store %S.ast.Node %t231, ptr %a233 + call void @finch.drop.S_ast_Node(ptr %a233) + %t234 = load ptr, ptr %a3 + %t235 = icmp eq ptr %t234, null + br i1 %t235, label %panic6210, label %ok6211 +panic6210: + call void @finch_panic(ptr @.str.3987, i64 3353, ptr @.str.3988) unreachable -ok5864: - %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.3833, 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 %then5865, label %endif5867 -then5865: - %t244 = load ptr, ptr %a1 - %t245 = load ptr, ptr %a2 - %t246 = icmp eq ptr %t245, null - br i1 %t246, label %panic5868, label %ok5869 -panic5868: - call void @finch_panic(ptr @.str.3834, i64 3103, ptr @.str.3835) +ok6211: + %t236 = load %S.gen.Val, ptr %t234 + store %S.gen.Val %t232, ptr %t234 + store %S.gen.Val %t236, ptr %a237 + call void @finch.drop.S_gen_Val(ptr %a237) + ret i1 true +endif6205: + %t238 = load ptr, ptr %a2 + %t239 = icmp eq ptr %t238, null + br i1 %t239, label %panic6212, label %ok6213 +panic6212: + call void @finch_panic(ptr @.str.3989, i64 3356, ptr @.str.3990) unreachable -ok5869: - %t247 = getelementptr inbounds %S.gen.Val, ptr %t245, i32 0, i32 0 - %t248 = load { ptr, i64, i64 }, ptr %t247 +ok6213: + %t240 = getelementptr inbounds %S.gen.Val, ptr %t238, i32 0, i32 1 + %t241 = load %S.ast.Type, ptr %t240 + %t242 = call i1 @finch.gen.isFloat(%S.ast.Type %t241) + br label %logic.from6214 +logic.from6214: + br i1 %t242, label %logic.rhs6215, label %logic.end6216 +logic.rhs6215: + %t243 = load ptr, ptr %a3 + %t244 = icmp eq ptr %t243, null + br i1 %t244, label %panic6217, label %ok6218 +panic6217: + call void @finch_panic(ptr @.str.3991, i64 3356, ptr @.str.3992) + unreachable +ok6218: + %t245 = getelementptr inbounds %S.gen.Val, ptr %t243, i32 0, i32 1 + %t246 = load %S.ast.Type, ptr %t245 + %t247 = call i1 @finch.gen.isFloat(%S.ast.Type %t246) + br label %logic.rend6219 +logic.rend6219: + br label %logic.end6216 +logic.end6216: + %t248 = phi i1 [ false, %logic.from6214 ], [ %t247, %logic.rend6219 ] + br i1 %t248, label %then6220, label %endif6222 +then6220: %t249 = load ptr, ptr %a2 %t250 = icmp eq ptr %t249, null - br i1 %t250, label %panic5870, label %ok5871 -panic5870: - call void @finch_panic(ptr @.str.3836, i64 3103, ptr @.str.3837) + br i1 %t250, label %panic6223, label %ok6224 +panic6223: + call void @finch_panic(ptr @.str.3993, i64 3357, ptr @.str.3994) unreachable -ok5871: +ok6224: %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.3838, 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.3839, 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 %panic5872, label %ok5873 -panic5872: - call void @finch_panic(ptr @.str.3840, i64 3103, ptr @.str.3841) + %t252 = getelementptr inbounds %S.ast.Type, ptr %t251, i32 0, i32 0 + %t253 = load { ptr, i64, i64 }, ptr %t252 + store { ptr, i64, i64 } %t253, ptr %a254 + store { ptr, i64, i64 } { ptr @.str.3995, i64 3, i64 0 }, ptr %a255 + %t256 = call i32 @finch_str_eq(ptr %a254, ptr %a255) + %t257 = icmp ne i32 %t256, 0 + br i1 %t257, label %then6225, label %endif6227 +then6225: + %t258 = load ptr, ptr %a1 + %t259 = load ptr, ptr %a2 + %t260 = icmp eq ptr %t259, null + br i1 %t260, label %panic6228, label %ok6229 +panic6228: + call void @finch_panic(ptr @.str.3996, i64 3358, ptr @.str.3997) unreachable -ok5873: - store %S.gen.Val %t257, ptr %t258 - br label %endif5867 -endif5867: - %t260 = load ptr, ptr %a3 - %t261 = icmp eq ptr %t260, null - br i1 %t261, label %panic5874, label %ok5875 -panic5874: - call void @finch_panic(ptr @.str.3842, i64 3105, ptr @.str.3843) +ok6229: + %t261 = getelementptr inbounds %S.gen.Val, ptr %t259, i32 0, i32 0 + %t262 = load { ptr, i64, i64 }, ptr %t261 + %t263 = load ptr, ptr %a2 + %t264 = icmp eq ptr %t263, null + br i1 %t264, label %panic6230, label %ok6231 +panic6230: + call void @finch_panic(ptr @.str.3998, i64 3358, ptr @.str.3999) unreachable -ok5875: - %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.3844, 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 %then5876, label %endif5878 -then5876: - %t269 = load ptr, ptr %a1 - %t270 = load ptr, ptr %a3 - %t271 = icmp eq ptr %t270, null - br i1 %t271, label %panic5879, label %ok5880 -panic5879: - call void @finch_panic(ptr @.str.3845, i64 3106, ptr @.str.3846) +ok6231: + %t265 = getelementptr inbounds %S.gen.Val, ptr %t263, i32 0, i32 1 + %t266 = load %S.ast.Type, ptr %t265 + %t267 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4000, i64 5, i64 0 }) + %t268 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t258, { ptr, i64, i64 } %t262, %S.ast.Type %t266, %S.ast.Type %t267) + store %S.ast.Type %t267, ptr %a269 + call void @finch.drop.S_ast_Type(ptr %a269) + %t270 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t268, 0 + %t271 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4001, i64 5, i64 0 }) + %t272 = insertvalue %S.gen.Val %t270, %S.ast.Type %t271, 1 + %t273 = load ptr, ptr %a2 + %t274 = icmp eq ptr %t273, null + br i1 %t274, label %panic6232, label %ok6233 +panic6232: + call void @finch_panic(ptr @.str.4002, i64 3358, ptr @.str.4003) unreachable -ok5880: - %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 %panic5881, label %ok5882 -panic5881: - call void @finch_panic(ptr @.str.3847, i64 3106, ptr @.str.3848) +ok6233: + %t275 = load %S.gen.Val, ptr %t273 + store %S.gen.Val %t272, ptr %t273 + store %S.gen.Val %t275, ptr %a276 + call void @finch.drop.S_gen_Val(ptr %a276) + br label %endif6227 +endif6227: + %t277 = load ptr, ptr %a3 + %t278 = icmp eq ptr %t277, null + br i1 %t278, label %panic6234, label %ok6235 +panic6234: + call void @finch_panic(ptr @.str.4004, i64 3360, ptr @.str.4005) unreachable -ok5882: - %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.3849, 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.3850, 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 %panic5883, label %ok5884 -panic5883: - call void @finch_panic(ptr @.str.3851, i64 3106, ptr @.str.3852) +ok6235: + %t279 = getelementptr inbounds %S.gen.Val, ptr %t277, i32 0, i32 1 + %t280 = getelementptr inbounds %S.ast.Type, ptr %t279, i32 0, i32 0 + %t281 = load { ptr, i64, i64 }, ptr %t280 + store { ptr, i64, i64 } %t281, ptr %a282 + store { ptr, i64, i64 } { ptr @.str.4006, i64 3, i64 0 }, ptr %a283 + %t284 = call i32 @finch_str_eq(ptr %a282, ptr %a283) + %t285 = icmp ne i32 %t284, 0 + br i1 %t285, label %then6236, label %endif6238 +then6236: + %t286 = load ptr, ptr %a1 + %t287 = load ptr, ptr %a3 + %t288 = icmp eq ptr %t287, null + br i1 %t288, label %panic6239, label %ok6240 +panic6239: + call void @finch_panic(ptr @.str.4007, i64 3361, ptr @.str.4008) unreachable -ok5884: - store %S.gen.Val %t282, ptr %t283 - br label %endif5878 -endif5878: +ok6240: + %t289 = getelementptr inbounds %S.gen.Val, ptr %t287, i32 0, i32 0 + %t290 = load { ptr, i64, i64 }, ptr %t289 + %t291 = load ptr, ptr %a3 + %t292 = icmp eq ptr %t291, null + br i1 %t292, label %panic6241, label %ok6242 +panic6241: + call void @finch_panic(ptr @.str.4009, i64 3361, ptr @.str.4010) + unreachable +ok6242: + %t293 = getelementptr inbounds %S.gen.Val, ptr %t291, i32 0, i32 1 + %t294 = load %S.ast.Type, ptr %t293 + %t295 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4011, i64 5, i64 0 }) + %t296 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t286, { ptr, i64, i64 } %t290, %S.ast.Type %t294, %S.ast.Type %t295) + store %S.ast.Type %t295, ptr %a297 + call void @finch.drop.S_ast_Type(ptr %a297) + %t298 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t296, 0 + %t299 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4012, i64 5, i64 0 }) + %t300 = insertvalue %S.gen.Val %t298, %S.ast.Type %t299, 1 + %t301 = load ptr, ptr %a3 + %t302 = icmp eq ptr %t301, null + br i1 %t302, label %panic6243, label %ok6244 +panic6243: + call void @finch_panic(ptr @.str.4013, i64 3361, ptr @.str.4014) + unreachable +ok6244: + %t303 = load %S.gen.Val, ptr %t301 + store %S.gen.Val %t300, ptr %t301 + store %S.gen.Val %t303, ptr %a304 + call void @finch.drop.S_gen_Val(ptr %a304) + br label %endif6238 +endif6238: ret i1 true -endif5862: +endif6222: ret i1 false } @@ -52785,93 +62349,118 @@ entry: %a42 = alloca { ptr, i64, i64 }, align 16 %a43 = alloca { ptr, i64, i64 }, align 16 %a44 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 + %a45 = 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 %a53 = alloca { ptr, i64, i64 }, align 16 %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = 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 + %a56 = alloca { ptr, i64, i64 }, align 16 + %a57 = 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 %a65 = alloca { ptr, i64, i64 }, align 16 %a66 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca i64, align 16 - %a141 = alloca i64, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a147 = 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 + %a73 = alloca { ptr, i64, i64 }, align 16 + %a75 = alloca { ptr, i64, i64 }, align 16 + %a113 = alloca { ptr, i64, i64 }, align 16 + %a129 = alloca { ptr, i64, i64 }, align 16 + %a149 = alloca { ptr, i64, i64 }, align 16 %a152 = alloca i64, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 + %a155 = alloca i64, align 16 + %a160 = alloca { ptr, i64, i64 }, align 16 + %a161 = alloca { ptr, i64, i64 }, align 16 + %a166 = alloca i64, align 16 + %a178 = alloca { ptr, i64, i64 }, align 16 %a180 = alloca { ptr, i64, i64 }, align 16 %a181 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 + %a185 = alloca { ptr, i64, i64 }, align 16 + %a186 = alloca { ptr, i64, i64 }, align 16 %a194 = alloca { ptr, i64, i64 }, align 16 %a195 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a205 = 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 + %a214 = alloca { ptr, i64, i64 }, align 16 + %a218 = 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 - %a222 = 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 %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 + %a229 = 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 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = 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 + %a245 = 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 - %a254 = alloca %S.ast.Type, align 16 - %a255 = alloca %S.ast.Type, align 16 + %a250 = 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 + %a257 = alloca { ptr, i64, i64 }, align 16 + %a258 = alloca { ptr, i64, i64 }, align 16 + %a259 = alloca { ptr, i64, i64 }, align 16 + %a260 = alloca { ptr, i64, i64 }, align 16 + %a262 = alloca { ptr, i64, i64 }, align 16 + %a263 = alloca { ptr, i64, i64 }, align 16 + %a264 = alloca { ptr, i64, i64 }, align 16 + %a265 = 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 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a285 = alloca i64, align 16 - %a288 = alloca i64, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca i64, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = 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 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a334 = alloca { ptr, i64, i64 }, align 16 - %a335 = 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 - %a343 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a345 = alloca { ptr, i64, i64 }, align 16 - %a351 = alloca %S.ast.Type, align 16 - %a352 = alloca %S.ast.Type, align 16 - %a361 = alloca %S.gen.Val, align 16 - %a362 = alloca %S.gen.Val, align 16 + %a272 = alloca { ptr, i64, i64 }, align 16 + %a275 = alloca { ptr, i64, i64 }, align 16 + %a279 = alloca %S.ast.Type, align 16 + %a280 = alloca %S.ast.Type, align 16 + %a296 = alloca { ptr, i64, i64 }, align 16 + %a307 = alloca { ptr, i64, i64 }, align 16 + %a310 = alloca i64, align 16 + %a313 = alloca i64, align 16 + %a318 = alloca { ptr, i64, i64 }, align 16 + %a319 = alloca { ptr, i64, i64 }, align 16 + %a324 = 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 + %a348 = 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 + %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 + %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 + %a366 = 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 + %a373 = alloca { ptr, i64, i64 }, align 16 + %a374 = alloca { ptr, i64, i64 }, align 16 + %a375 = alloca { ptr, i64, i64 }, align 16 + %a376 = alloca { ptr, i64, i64 }, align 16 + %a379 = alloca { ptr, i64, i64 }, align 16 + %a383 = alloca %S.ast.Type, align 16 + %a384 = alloca %S.ast.Type, align 16 store ptr %p0, ptr %a1 store { ptr, i64, i64 } %p1, ptr %a2 store %S.gen.Val %p2, ptr %a3 @@ -52885,511 +62474,582 @@ 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.3853, i64 1, i64 0 }, ptr %a14 + store { ptr, i64, i64 } { ptr @.str.4015, 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.from5885 -logic.from5885: - br i1 %t16, label %logic.rhs5886, label %logic.end5887 -logic.rhs5886: + br label %logic.from6245 +logic.from6245: + br i1 %t16, label %logic.rhs6246, label %logic.end6247 +logic.rhs6246: %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.3854, i64 3, i64 0 }, ptr %a21 + store { ptr, i64, i64 } { ptr @.str.4016, 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.rend5888 -logic.rend5888: - br label %logic.end5887 -logic.end5887: - %t24 = phi i1 [ false, %logic.from5885 ], [ %t23, %logic.rend5888 ] - br label %logic.from5889 -logic.from5889: - br i1 %t24, label %logic.rhs5890, label %logic.end5891 -logic.rhs5890: + br label %logic.rend6248 +logic.rend6248: + br label %logic.end6247 +logic.end6247: + %t24 = phi i1 [ false, %logic.from6245 ], [ %t23, %logic.rend6248 ] + br label %logic.from6249 +logic.from6249: + br i1 %t24, label %logic.rhs6250, label %logic.end6251 +logic.rhs6250: %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.3855, i64 3, i64 0 }, ptr %a29 + store { ptr, i64, i64 } { ptr @.str.4017, 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.rend5892 -logic.rend5892: - br label %logic.end5891 -logic.end5891: - %t32 = phi i1 [ false, %logic.from5889 ], [ %t31, %logic.rend5892 ] - br i1 %t32, label %then5893, label %endif5895 -then5893: + br label %logic.rend6252 +logic.rend6252: + br label %logic.end6251 +logic.end6251: + %t32 = phi i1 [ false, %logic.from6249 ], [ %t31, %logic.rend6252 ] + br i1 %t32, label %then6253, label %endif6255 +then6253: %t33 = load ptr, ptr %a1 - %t34 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t33, { ptr, i64, i64 } { ptr @.str.3856, i64 17, i64 0 }) + %t34 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t33, { ptr, i64, i64 } { ptr @.str.4018, 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.3857, i64 32, i64 0 }, ptr %a39 + store { ptr, i64, i64 } { ptr @.str.4019, 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.3858, i64 6, i64 0 }, ptr %a44 + store { ptr, i64, i64 } { ptr @.str.4020, 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 - %t47 = load %S.gen.Val, ptr %a6 - %t48 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t46, %S.gen.Val %t47) - store { ptr, i64, i64 } %t45, 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.3859, 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 - %t58 = load %S.gen.Val, ptr %a10 - %t59 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t57, %S.gen.Val %t58) - 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.3860, i64 1, i64 0 }, ptr %a66 + store { ptr, i64, i64 } %t41, ptr %a45 + call void @finch_str_drop(ptr %a45) + %t46 = load { ptr, i64, i64 }, ptr %a42 + %t47 = load ptr, ptr %a1 + %t48 = load %S.gen.Val, ptr %a6 + %t49 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t47, %S.gen.Val %t48) + 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) + store { ptr, i64, i64 } %t46, ptr %a53 + call void @finch_str_drop(ptr %a53) + store { ptr, i64, i64 } %t49, ptr %a54 + call void @finch_str_drop(ptr %a54) + %t55 = load { ptr, i64, i64 }, ptr %a50 + store { ptr, i64, i64 } %t55, ptr %a57 + store { ptr, i64, i64 } { ptr @.str.4021, i64 6, i64 0 }, ptr %a58 + call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) + store { ptr, i64, i64 } %t55, ptr %a59 + call void @finch_str_drop(ptr %a59) + %t60 = load { ptr, i64, i64 }, ptr %a56 + %t61 = load ptr, ptr %a1 + %t62 = load %S.gen.Val, ptr %a10 + %t63 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t61, %S.gen.Val %t62) + store { ptr, i64, i64 } %t60, 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 - 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.3861, 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.3862, 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 -endif5895: - %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 %then5896, label %endif5898 -then5896: + store { ptr, i64, i64 } %t60, ptr %a67 + call void @finch_str_drop(ptr %a67) + store { ptr, i64, i64 } %t63, ptr %a68 + call void @finch_str_drop(ptr %a68) + %t69 = load { ptr, i64, i64 }, ptr %a64 + store { ptr, i64, i64 } %t69, ptr %a71 + store { ptr, i64, i64 } { ptr @.str.4022, i64 1, i64 0 }, ptr %a72 + call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) + store { ptr, i64, i64 } %t69, ptr %a73 + call void @finch_str_drop(ptr %a73) + %t74 = load { ptr, i64, i64 }, ptr %a70 + call void @finch.gen.emit(ptr %t36, { ptr, i64, i64 } %t74) + store { ptr, i64, i64 } %t74, ptr %a75 + call void @finch_str_drop(ptr %a75) + %t76 = load ptr, ptr %a1 + %t77 = load %S.gen.Val, ptr %a6 + call void @finch.gen.release(ptr %t76, %S.gen.Val %t77) %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 %endif5898 -endif5898: - %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 %then5899, label %endif5901 -then5899: - %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.3863, i64 1, i64 0 }, ptr %t88 - %t89 = getelementptr inbounds { ptr, i64, i64 }, ptr %t87, i64 1 - store { ptr, i64, i64 } { ptr @.str.3864, i64 1, i64 0 }, ptr %t89 - %t90 = getelementptr inbounds { ptr, i64, i64 }, ptr %t87, i64 2 - store { ptr, i64, i64 } { ptr @.str.3865, i64 1, i64 0 }, ptr %t90 - %t91 = getelementptr inbounds { ptr, i64, i64 }, ptr %t87, i64 3 - store { ptr, i64, i64 } { ptr @.str.3866, i64 1, i64 0 }, ptr %t91 - %t92 = getelementptr inbounds { ptr, i64, i64 }, ptr %t87, i64 4 - store { ptr, i64, i64 } { ptr @.str.3867, i64 1, i64 0 }, ptr %t92 - %t93 = getelementptr inbounds { ptr, i64, i64 }, ptr %t87, i64 5 - store { ptr, i64, i64 } { ptr @.str.3868, i64 1, i64 0 }, ptr %t93 - %t94 = getelementptr inbounds { ptr, i64, i64 }, ptr %t87, i64 6 - store { ptr, i64, i64 } { ptr @.str.3869, i64 1, i64 0 }, ptr %t94 - %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %t87, i64 7 - store { ptr, i64, i64 } { ptr @.str.3870, i64 1, i64 0 }, ptr %t95 - %t96 = getelementptr inbounds { ptr, i64, i64 }, ptr %t87, i64 8 - store { ptr, i64, i64 } { ptr @.str.3871, i64 2, i64 0 }, ptr %t96 - %t97 = getelementptr inbounds { ptr, i64, i64 }, ptr %t87, i64 9 - store { ptr, i64, i64 } { ptr @.str.3872, 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 - store { ptr, i64, i64 } %t100, ptr %a101 - %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.3873, i64 3, i64 0 }, ptr %t104 - %t105 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i64 1 - store { ptr, i64, i64 } { ptr @.str.3874, i64 3, i64 0 }, ptr %t105 - %t106 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i64 2 - store { ptr, i64, i64 } { ptr @.str.3875, i64 3, i64 0 }, ptr %t106 - %t107 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i64 3 - store { ptr, i64, i64 } { ptr @.str.3876, i64 4, i64 0 }, ptr %t107 - %t108 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i64 4 - store { ptr, i64, i64 } { ptr @.str.3877, i64 4, i64 0 }, ptr %t108 - %t109 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i64 5 - store { ptr, i64, i64 } { ptr @.str.3878, i64 3, i64 0 }, ptr %t109 - %t110 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i64 6 - store { ptr, i64, i64 } { ptr @.str.3879, i64 2, i64 0 }, ptr %t110 - %t111 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i64 7 - store { ptr, i64, i64 } { ptr @.str.3880, i64 3, i64 0 }, ptr %t111 - %t112 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i64 8 - store { ptr, i64, i64 } { ptr @.str.3881, i64 3, i64 0 }, ptr %t112 - %t113 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i64 9 - store { ptr, i64, i64 } { ptr @.str.3882, 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 - store { ptr, i64, i64 } %t116, ptr %a117 - %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 %then5902, label %endif5904 -then5902: - %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.3883, i64 3, i64 0 }, ptr %t123 - %t124 = getelementptr inbounds { ptr, i64, i64 }, ptr %t122, i64 1 - store { ptr, i64, i64 } { ptr @.str.3884, i64 3, i64 0 }, ptr %t124 - %t125 = getelementptr inbounds { ptr, i64, i64 }, ptr %t122, i64 2 - store { ptr, i64, i64 } { ptr @.str.3885, i64 3, i64 0 }, ptr %t125 - %t126 = getelementptr inbounds { ptr, i64, i64 }, ptr %t122, i64 3 - store { ptr, i64, i64 } { ptr @.str.3886, i64 4, i64 0 }, ptr %t126 - %t127 = getelementptr inbounds { ptr, i64, i64 }, ptr %t122, i64 4 - store { ptr, i64, i64 } { ptr @.str.3887, i64 4, i64 0 }, ptr %t127 - %t128 = getelementptr inbounds { ptr, i64, i64 }, ptr %t122, i64 5 - store { ptr, i64, i64 } { ptr @.str.3888, i64 3, i64 0 }, ptr %t128 - %t129 = getelementptr inbounds { ptr, i64, i64 }, ptr %t122, i64 6 - store { ptr, i64, i64 } { ptr @.str.3889, i64 2, i64 0 }, ptr %t129 - %t130 = getelementptr inbounds { ptr, i64, i64 }, ptr %t122, i64 7 - store { ptr, i64, i64 } { ptr @.str.3890, i64 3, i64 0 }, ptr %t130 - %t131 = getelementptr inbounds { ptr, i64, i64 }, ptr %t122, i64 8 - store { ptr, i64, i64 } { ptr @.str.3891, i64 3, i64 0 }, ptr %t131 - %t132 = getelementptr inbounds { ptr, i64, i64 }, ptr %t122, i64 9 - store { ptr, i64, i64 } { ptr @.str.3892, 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 %endif5904 -endif5904: - %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.cond5905 -find.cond5905: - %t142 = load i64, ptr %a141 - %t143 = icmp slt i64 %t142, %t139 - br i1 %t143, label %find.body5906, label %find.end5909 -find.body5906: - %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.hit5907, label %find.next5908 -find.hit5907: - store i64 %t142, ptr %a138 - br label %find.end5909 -find.next5908: - %t150 = add i64 %t142, 1 - store i64 %t150, ptr %a141 - br label %find.cond5905 -find.end5909: - %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 %then5910, label %endif5912 -then5910: - %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 %endif5912 -endif5912: - %t160 = load ptr, ptr %a1 - %t161 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t162 = load %S.ast.Type, ptr %t161 - %t163 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t160, %S.ast.Type %t162) - 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.3893, 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.from5913 -logic.from5913: - br i1 %t169, label %logic.end5915, label %logic.rhs5914 -logic.rhs5914: + %t79 = load %S.gen.Val, ptr %a10 + call void @finch.gen.release(ptr %t78, %S.gen.Val %t79) + %t80 = load ptr, ptr %a1 + %t81 = load { ptr, i64, i64 }, ptr %a35 + %t82 = call { ptr, i64, i64 } @finch.gen.load(ptr %t80, { ptr, i64, i64 } { ptr @.str.4023, i64 17, i64 0 }, { ptr, i64, i64 } %t81) + %t83 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t82, 0 + %t84 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4024, i64 3, i64 0 }) + %t85 = insertvalue %S.gen.Val %t83, %S.ast.Type %t84, 1 + %t86 = insertvalue %S.gen.Val %t85, i1 true, 2 + call void @finch_str_drop(ptr %a35) + call void @finch.drop.S_gen_Val(ptr %a10) + call void @finch.drop.S_gen_Val(ptr %a6) + ret %S.gen.Val %t86 +endif6255: + %t87 = load ptr, ptr %a1 + %t88 = call i1 @finch.gen.unify(ptr %t87, ptr %a6, ptr %a10) + %t89 = xor i1 %t88, true + br i1 %t89, label %then6256, label %endif6258 +then6256: + %t90 = load ptr, ptr %a1 + %t91 = load { ptr, i64, i64 }, ptr %a2 + %t92 = load %S.gen.Val, ptr %a6 + %t93 = load %S.gen.Val, ptr %a10 + %t94 = load %S.ast.Node, ptr %a11 + call void @finch.gen.badOperands(ptr %t90, { ptr, i64, i64 } %t91, %S.gen.Val %t92, %S.gen.Val %t93, %S.ast.Node %t94) + br label %endif6258 +endif6258: + %t95 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 + %t96 = load %S.ast.Type, ptr %t95 + %t97 = call i1 @finch.gen.isInt(%S.ast.Type %t96) + br i1 %t97, label %then6259, label %endif6261 +then6259: + %t98 = mul i64 10, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) + %t99 = call ptr @finch_alloc(i64 %t98) + %t100 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 0 + store { ptr, i64, i64 } { ptr @.str.4025, i64 1, i64 0 }, ptr %t100 + %t101 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 1 + store { ptr, i64, i64 } { ptr @.str.4026, i64 1, i64 0 }, ptr %t101 + %t102 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 2 + store { ptr, i64, i64 } { ptr @.str.4027, i64 1, i64 0 }, ptr %t102 + %t103 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 3 + store { ptr, i64, i64 } { ptr @.str.4028, i64 1, i64 0 }, ptr %t103 + %t104 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 4 + store { ptr, i64, i64 } { ptr @.str.4029, i64 1, i64 0 }, ptr %t104 + %t105 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 5 + store { ptr, i64, i64 } { ptr @.str.4030, i64 1, i64 0 }, ptr %t105 + %t106 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 6 + store { ptr, i64, i64 } { ptr @.str.4031, i64 1, i64 0 }, ptr %t106 + %t107 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 7 + store { ptr, i64, i64 } { ptr @.str.4032, i64 1, i64 0 }, ptr %t107 + %t108 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 8 + store { ptr, i64, i64 } { ptr @.str.4033, i64 2, i64 0 }, ptr %t108 + %t109 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 9 + store { ptr, i64, i64 } { ptr @.str.4034, i64 2, i64 0 }, ptr %t109 + %t110 = insertvalue { ptr, i64, i64 } undef, ptr %t99, 0 + %t111 = insertvalue { ptr, i64, i64 } %t110, i64 10, 1 + %t112 = insertvalue { ptr, i64, i64 } %t111, i64 10, 2 + store { ptr, i64, i64 } %t112, ptr %a113 + %t114 = mul i64 10, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) + %t115 = call ptr @finch_alloc(i64 %t114) + %t116 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 0 + store { ptr, i64, i64 } { ptr @.str.4035, i64 3, i64 0 }, ptr %t116 + %t117 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 1 + store { ptr, i64, i64 } { ptr @.str.4036, i64 3, i64 0 }, ptr %t117 + %t118 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 2 + store { ptr, i64, i64 } { ptr @.str.4037, i64 3, i64 0 }, ptr %t118 + %t119 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 3 + store { ptr, i64, i64 } { ptr @.str.4038, i64 4, i64 0 }, ptr %t119 + %t120 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 4 + store { ptr, i64, i64 } { ptr @.str.4039, i64 4, i64 0 }, ptr %t120 + %t121 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 5 + store { ptr, i64, i64 } { ptr @.str.4040, i64 3, i64 0 }, ptr %t121 + %t122 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 6 + store { ptr, i64, i64 } { ptr @.str.4041, i64 2, i64 0 }, ptr %t122 + %t123 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 7 + store { ptr, i64, i64 } { ptr @.str.4042, i64 3, i64 0 }, ptr %t123 + %t124 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 8 + store { ptr, i64, i64 } { ptr @.str.4043, i64 3, i64 0 }, ptr %t124 + %t125 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 9 + store { ptr, i64, i64 } { ptr @.str.4044, i64 4, i64 0 }, ptr %t125 + %t126 = insertvalue { ptr, i64, i64 } undef, ptr %t115, 0 + %t127 = insertvalue { ptr, i64, i64 } %t126, i64 10, 1 + %t128 = insertvalue { ptr, i64, i64 } %t127, i64 10, 2 + store { ptr, i64, i64 } %t128, ptr %a129 + %t130 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 + %t131 = load %S.ast.Type, ptr %t130 + %t132 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t131) + br i1 %t132, label %then6262, label %endif6264 +then6262: + %t133 = mul i64 10, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) + %t134 = call ptr @finch_alloc(i64 %t133) + %t135 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 0 + store { ptr, i64, i64 } { ptr @.str.4045, i64 3, i64 0 }, ptr %t135 + %t136 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 1 + store { ptr, i64, i64 } { ptr @.str.4046, i64 3, i64 0 }, ptr %t136 + %t137 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 2 + store { ptr, i64, i64 } { ptr @.str.4047, i64 3, i64 0 }, ptr %t137 + %t138 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 3 + store { ptr, i64, i64 } { ptr @.str.4048, i64 4, i64 0 }, ptr %t138 + %t139 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 4 + store { ptr, i64, i64 } { ptr @.str.4049, i64 4, i64 0 }, ptr %t139 + %t140 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 5 + store { ptr, i64, i64 } { ptr @.str.4050, i64 3, i64 0 }, ptr %t140 + %t141 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 6 + store { ptr, i64, i64 } { ptr @.str.4051, i64 2, i64 0 }, ptr %t141 + %t142 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 7 + store { ptr, i64, i64 } { ptr @.str.4052, i64 3, i64 0 }, ptr %t142 + %t143 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 8 + store { ptr, i64, i64 } { ptr @.str.4053, i64 3, i64 0 }, ptr %t143 + %t144 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 9 + store { ptr, i64, i64 } { ptr @.str.4054, i64 4, i64 0 }, ptr %t144 + %t145 = insertvalue { ptr, i64, i64 } undef, ptr %t134, 0 + %t146 = insertvalue { ptr, i64, i64 } %t145, i64 10, 1 + %t147 = insertvalue { ptr, i64, i64 } %t146, i64 10, 2 + %t148 = load { ptr, i64, i64 }, ptr %a129 + store { ptr, i64, i64 } %t147, ptr %a129 + store { ptr, i64, i64 } %t148, ptr %a149 + call void @finch.drop.arr_str(ptr %a149) + br label %endif6264 +endif6264: + %t150 = getelementptr inbounds { ptr, i64, i64 }, ptr %a113, i32 0, i32 1 + %t151 = load { ptr, i64, i64 }, ptr %a2 + store i64 -1, ptr %a152 + %t153 = load i64, ptr %t150 + %t154 = load ptr, ptr %a113 + store i64 0, ptr %a155 + br label %find.cond6265 +find.cond6265: + %t156 = load i64, ptr %a155 + %t157 = icmp slt i64 %t156, %t153 + br i1 %t157, label %find.body6266, label %find.end6269 +find.body6266: + %t158 = getelementptr inbounds { ptr, i64, i64 }, ptr %t154, i64 %t156 + %t159 = load { ptr, i64, i64 }, ptr %t158 + store { ptr, i64, i64 } %t159, ptr %a160 + store { ptr, i64, i64 } %t151, ptr %a161 + %t162 = call i32 @finch_str_eq(ptr %a160, ptr %a161) + %t163 = icmp ne i32 %t162, 0 + br i1 %t163, label %find.hit6267, label %find.next6268 +find.hit6267: + store i64 %t156, ptr %a152 + br label %find.end6269 +find.next6268: + %t164 = add i64 %t156, 1 + store i64 %t164, ptr %a155 + br label %find.cond6265 +find.end6269: + %t165 = load i64, ptr %a152 + store i64 %t165, ptr %a166 + %t167 = load i64, ptr %a166 + %t168 = icmp slt i64 %t167, 0 + br i1 %t168, label %then6270, label %endif6272 +then6270: + %t169 = load ptr, ptr %a1 %t170 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t170, ptr %a171 - store { ptr, i64, i64 } { ptr @.str.3894, 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.rend5916 -logic.rend5916: - br label %logic.end5915 -logic.end5915: - %t175 = phi i1 [ true, %logic.from5913 ], [ %t174, %logic.rend5916 ] - br i1 %t175, label %then5917, label %endif5919 -then5917: - %t176 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 3 - %t177 = load i1, ptr %t176 - br label %logic.from5920 -logic.from5920: - br i1 %t177, label %logic.rhs5921, label %logic.end5922 -logic.rhs5921: - %t178 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 - %t179 = load { ptr, i64, i64 }, ptr %t178 + %t171 = load %S.gen.Val, ptr %a6 + %t172 = load %S.gen.Val, ptr %a10 + %t173 = load %S.ast.Node, ptr %a11 + call void @finch.gen.badOperands(ptr %t169, { ptr, i64, i64 } %t170, %S.gen.Val %t171, %S.gen.Val %t172, %S.ast.Node %t173) + br label %endif6272 +endif6272: + %t174 = load ptr, ptr %a1 + %t175 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 + %t176 = load %S.ast.Type, ptr %t175 + %t177 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t174, %S.ast.Type %t176) + store { ptr, i64, i64 } %t177, ptr %a178 + %t179 = load { ptr, i64, i64 }, ptr %a2 store { ptr, i64, i64 } %t179, ptr %a180 - store { ptr, i64, i64 } { ptr @.str.3895, i64 1, i64 0 }, ptr %a181 + store { ptr, i64, i64 } { ptr @.str.4055, 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.rend5923 -logic.rend5923: - br label %logic.end5922 -logic.end5922: - %t184 = phi i1 [ false, %logic.from5920 ], [ %t183, %logic.rend5923 ] - br i1 %t184, label %then5924, label %endif5926 -then5924: - %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.3896, i64 16, i64 0 }) - br label %endif5926 -endif5926: - %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 %then5927, label %endif5929 -then5927: - %t190 = load ptr, ptr %a1 - %t191 = load ptr, ptr %a1 - %t192 = load { ptr, i64, i64 }, ptr %a164 - store { ptr, i64, i64 } { ptr @.str.3897, 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.3898, 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 - %t202 = load { ptr, i64, i64 }, ptr %t201 - store { ptr, i64, i64 } %t200, 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.3899, i64 3, i64 0 }, ptr %a209 + br label %logic.from6273 +logic.from6273: + br i1 %t183, label %logic.end6275, label %logic.rhs6274 +logic.rhs6274: + %t184 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t184, ptr %a185 + store { ptr, i64, i64 } { ptr @.str.4056, i64 1, i64 0 }, ptr %a186 + %t187 = call i32 @finch_str_eq(ptr %a185, ptr %a186) + %t188 = icmp ne i32 %t187, 0 + br label %logic.rend6276 +logic.rend6276: + br label %logic.end6275 +logic.end6275: + %t189 = phi i1 [ true, %logic.from6273 ], [ %t188, %logic.rend6276 ] + br i1 %t189, label %then6277, label %endif6279 +then6277: + %t190 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 3 + %t191 = load i1, ptr %t190 + br label %logic.from6280 +logic.from6280: + br i1 %t191, label %logic.rhs6281, label %logic.end6282 +logic.rhs6281: + %t192 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 + %t193 = load { ptr, i64, i64 }, ptr %t192 + store { ptr, i64, i64 } %t193, ptr %a194 + store { ptr, i64, i64 } { ptr @.str.4057, i64 1, i64 0 }, ptr %a195 + %t196 = call i32 @finch_str_eq(ptr %a194, ptr %a195) + %t197 = icmp ne i32 %t196, 0 + br label %logic.rend6283 +logic.rend6283: + br label %logic.end6282 +logic.end6282: + %t198 = phi i1 [ false, %logic.from6280 ], [ %t197, %logic.rend6283 ] + br i1 %t198, label %then6284, label %endif6286 +then6284: + %t199 = load ptr, ptr %a1 + %t200 = load %S.ast.Node, ptr %a11 + call void @finch.gen.fail(ptr %t199, %S.ast.Node %t200, { ptr, i64, i64 } { ptr @.str.4058, i64 16, i64 0 }) + br label %endif6286 +endif6286: + %t201 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 3 + %t202 = load i1, ptr %t201 + %t203 = xor i1 %t202, true + br i1 %t203, label %then6287, label %endif6289 +then6287: + %t204 = load ptr, ptr %a1 + %t205 = load ptr, ptr %a1 + %t206 = load { ptr, i64, i64 }, ptr %a178 + store { ptr, i64, i64 } { ptr @.str.4059, i64 8, i64 0 }, 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 - %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.3900, i64 16, i64 0 }, %S.ast.Node %t212) - br label %endif5929 -endif5929: - br label %endif5919 -endif5919: - %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 %range5930, label %inrange5931 -range5930: - call void @finch_panic_index(ptr @.str.3901, i64 3145, i64 %t214, i64 %t216) + store { ptr, i64, i64 } %t210, ptr %a212 + store { ptr, i64, i64 } { ptr @.str.4060, i64 1, i64 0 }, ptr %a213 + call void @finch_str_concat(ptr %a211, ptr %a212, ptr %a213) + store { ptr, i64, i64 } %t210, ptr %a214 + call void @finch_str_drop(ptr %a214) + %t215 = load { ptr, i64, i64 }, ptr %a211 + %t216 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 + %t217 = load { ptr, i64, i64 }, ptr %t216 + store { ptr, i64, i64 } %t215, ptr %a219 + store { ptr, i64, i64 } %t217, ptr %a220 + call void @finch_str_concat(ptr %a218, ptr %a219, ptr %a220) + store { ptr, i64, i64 } %t215, ptr %a221 + call void @finch_str_drop(ptr %a221) + %t222 = load { ptr, i64, i64 }, ptr %a218 + store { ptr, i64, i64 } %t222, ptr %a224 + store { ptr, i64, i64 } { ptr @.str.4061, i64 3, i64 0 }, ptr %a225 + call void @finch_str_concat(ptr %a223, ptr %a224, ptr %a225) + store { ptr, i64, i64 } %t222, ptr %a226 + call void @finch_str_drop(ptr %a226) + %t227 = load { ptr, i64, i64 }, ptr %a223 + %t228 = call { ptr, i64, i64 } @finch.gen.op(ptr %t205, { ptr, i64, i64 } %t227) + store { ptr, i64, i64 } %t227, ptr %a229 + call void @finch_str_drop(ptr %a229) + %t230 = load %S.ast.Node, ptr %a11 + call void @finch.gen.panicIf(ptr %t204, { ptr, i64, i64 } %t228, { ptr, i64, i64 } { ptr @.str.4062, i64 16, i64 0 }, %S.ast.Node %t230) + store { ptr, i64, i64 } %t228, ptr %a231 + call void @finch_str_drop(ptr %a231) + br label %endif6289 +endif6289: + br label %endif6279 +endif6279: + %t232 = load ptr, ptr %a1 + %t233 = load i64, ptr %a166 + %t234 = load { ptr, i64, i64 }, ptr %a129 + %t235 = extractvalue { ptr, i64, i64 } %t234, 1 + %t236 = icmp uge i64 %t233, %t235 + br i1 %t236, label %range6290, label %inrange6291 +range6290: + call void @finch_panic_index(ptr @.str.4063, i64 3402, i64 %t233, i64 %t235) unreachable -inrange5931: - %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.3902, 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 - store { ptr, i64, i64 } %t224, 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.3903, 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 - %t235 = load { ptr, i64, i64 }, ptr %t234 - store { ptr, i64, i64 } %t233, ptr %a237 - store { ptr, i64, i64 } %t235, ptr %a238 - call void @finch_str_concat(ptr %a236, ptr %a237, ptr %a238) - %t239 = load { ptr, i64, i64 }, ptr %a236 +inrange6291: + %t237 = extractvalue { ptr, i64, i64 } %t234, 0 + %t238 = getelementptr inbounds { ptr, i64, i64 }, ptr %t237, i64 %t233 + %t239 = load { ptr, i64, i64 }, ptr %t238 store { ptr, i64, i64 } %t239, ptr %a241 - store { ptr, i64, i64 } { ptr @.str.3904, i64 2, i64 0 }, ptr %a242 + store { ptr, i64, i64 } { ptr @.str.4064, i64 1, 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 - %t245 = load { ptr, i64, i64 }, ptr %t244 - store { ptr, i64, i64 } %t243, ptr %a247 - store { ptr, i64, i64 } %t245, ptr %a248 - call void @finch_str_concat(ptr %a246, ptr %a247, ptr %a248) - %t249 = load { ptr, i64, i64 }, ptr %a246 - %t250 = call { ptr, i64, i64 } @finch.gen.op(ptr %t213, { ptr, i64, i64 } %t249) - %t251 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t250, 0 - %t252 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t253 = load %S.ast.Type, ptr %t252 - store %S.ast.Type %t253, ptr %a254 - call void @finch.copy.S_ast_Type(ptr %a255, ptr %a254) - %t256 = load %S.ast.Type, ptr %a255 - %t257 = insertvalue %S.gen.Val %t251, %S.ast.Type %t256, 1 - ret %S.gen.Val %t257 -endif5901: - %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 %then5932, label %endif5934 -then5932: - %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.3905, i64 1, i64 0 }, ptr %t263 - %t264 = getelementptr inbounds { ptr, i64, i64 }, ptr %t262, i64 1 - store { ptr, i64, i64 } { ptr @.str.3906, i64 1, i64 0 }, ptr %t264 - %t265 = getelementptr inbounds { ptr, i64, i64 }, ptr %t262, i64 2 - store { ptr, i64, i64 } { ptr @.str.3907, i64 1, i64 0 }, ptr %t265 - %t266 = getelementptr inbounds { ptr, i64, i64 }, ptr %t262, i64 3 - store { ptr, i64, i64 } { ptr @.str.3908, i64 1, i64 0 }, ptr %t266 - %t267 = getelementptr inbounds { ptr, i64, i64 }, ptr %t262, i64 4 - store { ptr, i64, i64 } { ptr @.str.3909, 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 - store { ptr, i64, i64 } %t270, ptr %a271 - %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.3910, i64 4, i64 0 }, ptr %t274 - %t275 = getelementptr inbounds { ptr, i64, i64 }, ptr %t273, i64 1 - store { ptr, i64, i64 } { ptr @.str.3911, i64 4, i64 0 }, ptr %t275 - %t276 = getelementptr inbounds { ptr, i64, i64 }, ptr %t273, i64 2 - store { ptr, i64, i64 } { ptr @.str.3912, i64 4, i64 0 }, ptr %t276 - %t277 = getelementptr inbounds { ptr, i64, i64 }, ptr %t273, i64 3 - store { ptr, i64, i64 } { ptr @.str.3913, i64 4, i64 0 }, ptr %t277 - %t278 = getelementptr inbounds { ptr, i64, i64 }, ptr %t273, i64 4 - store { ptr, i64, i64 } { ptr @.str.3914, 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 - store { ptr, i64, i64 } %t281, ptr %a282 - %t283 = getelementptr inbounds { ptr, i64, i64 }, ptr %a271, i32 0, i32 1 - %t284 = load { ptr, i64, i64 }, ptr %a2 - store i64 -1, ptr %a285 - %t286 = load i64, ptr %t283 - %t287 = load ptr, ptr %a271 - store i64 0, ptr %a288 - br label %find.cond5935 -find.cond5935: - %t289 = load i64, ptr %a288 - %t290 = icmp slt i64 %t289, %t286 - br i1 %t290, label %find.body5936, label %find.end5939 -find.body5936: - %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.hit5937, label %find.next5938 -find.hit5937: - store i64 %t289, ptr %a285 - br label %find.end5939 -find.next5938: - %t297 = add i64 %t289, 1 - store i64 %t297, ptr %a288 - br label %find.cond5935 -find.end5939: - %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 %then5940, label %endif5942 -then5940: - %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 %endif5942 -endif5942: - %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 %range5943, label %inrange5944 -range5943: - call void @finch_panic_index(ptr @.str.3915, i64 3154, i64 %t308, i64 %t310) + %t244 = load { ptr, i64, i64 }, ptr %a178 + store { ptr, i64, i64 } %t243, ptr %a246 + store { ptr, i64, i64 } %t244, ptr %a247 + call void @finch_str_concat(ptr %a245, ptr %a246, ptr %a247) + store { ptr, i64, i64 } %t243, ptr %a248 + call void @finch_str_drop(ptr %a248) + %t249 = load { ptr, i64, i64 }, ptr %a245 + store { ptr, i64, i64 } %t249, ptr %a251 + store { ptr, i64, i64 } { ptr @.str.4065, i64 1, i64 0 }, ptr %a252 + call void @finch_str_concat(ptr %a250, ptr %a251, ptr %a252) + store { ptr, i64, i64 } %t249, ptr %a253 + call void @finch_str_drop(ptr %a253) + %t254 = load { ptr, i64, i64 }, ptr %a250 + %t255 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 0 + %t256 = load { ptr, i64, i64 }, ptr %t255 + store { ptr, i64, i64 } %t254, ptr %a258 + store { ptr, i64, i64 } %t256, ptr %a259 + call void @finch_str_concat(ptr %a257, ptr %a258, ptr %a259) + store { ptr, i64, i64 } %t254, ptr %a260 + call void @finch_str_drop(ptr %a260) + %t261 = load { ptr, i64, i64 }, ptr %a257 + store { ptr, i64, i64 } %t261, ptr %a263 + store { ptr, i64, i64 } { ptr @.str.4066, i64 2, i64 0 }, ptr %a264 + call void @finch_str_concat(ptr %a262, ptr %a263, ptr %a264) + store { ptr, i64, i64 } %t261, ptr %a265 + call void @finch_str_drop(ptr %a265) + %t266 = load { ptr, i64, i64 }, ptr %a262 + %t267 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 + %t268 = load { ptr, i64, i64 }, ptr %t267 + store { ptr, i64, i64 } %t266, ptr %a270 + store { ptr, i64, i64 } %t268, ptr %a271 + call void @finch_str_concat(ptr %a269, ptr %a270, ptr %a271) + store { ptr, i64, i64 } %t266, ptr %a272 + call void @finch_str_drop(ptr %a272) + %t273 = load { ptr, i64, i64 }, ptr %a269 + %t274 = call { ptr, i64, i64 } @finch.gen.op(ptr %t232, { ptr, i64, i64 } %t273) + store { ptr, i64, i64 } %t273, ptr %a275 + call void @finch_str_drop(ptr %a275) + %t276 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t274, 0 + %t277 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 + %t278 = load %S.ast.Type, ptr %t277 + store %S.ast.Type %t278, ptr %a279 + call void @finch.copy.S_ast_Type(ptr %a280, ptr %a279) + %t281 = load %S.ast.Type, ptr %a280 + %t282 = insertvalue %S.gen.Val %t276, %S.ast.Type %t281, 1 + call void @finch_str_drop(ptr %a178) + call void @finch.drop.arr_str(ptr %a129) + call void @finch.drop.arr_str(ptr %a113) + call void @finch.drop.S_gen_Val(ptr %a10) + call void @finch.drop.S_gen_Val(ptr %a6) + ret %S.gen.Val %t282 +endif6261: + %t283 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 + %t284 = load %S.ast.Type, ptr %t283 + %t285 = call i1 @finch.gen.isFloat(%S.ast.Type %t284) + br i1 %t285, label %then6292, label %endif6294 +then6292: + %t286 = mul i64 5, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) + %t287 = call ptr @finch_alloc(i64 %t286) + %t288 = getelementptr inbounds { ptr, i64, i64 }, ptr %t287, i64 0 + store { ptr, i64, i64 } { ptr @.str.4067, i64 1, i64 0 }, ptr %t288 + %t289 = getelementptr inbounds { ptr, i64, i64 }, ptr %t287, i64 1 + store { ptr, i64, i64 } { ptr @.str.4068, i64 1, i64 0 }, ptr %t289 + %t290 = getelementptr inbounds { ptr, i64, i64 }, ptr %t287, i64 2 + store { ptr, i64, i64 } { ptr @.str.4069, i64 1, i64 0 }, ptr %t290 + %t291 = getelementptr inbounds { ptr, i64, i64 }, ptr %t287, i64 3 + store { ptr, i64, i64 } { ptr @.str.4070, i64 1, i64 0 }, ptr %t291 + %t292 = getelementptr inbounds { ptr, i64, i64 }, ptr %t287, i64 4 + store { ptr, i64, i64 } { ptr @.str.4071, i64 1, i64 0 }, ptr %t292 + %t293 = insertvalue { ptr, i64, i64 } undef, ptr %t287, 0 + %t294 = insertvalue { ptr, i64, i64 } %t293, i64 5, 1 + %t295 = insertvalue { ptr, i64, i64 } %t294, i64 5, 2 + store { ptr, i64, i64 } %t295, ptr %a296 + %t297 = mul i64 5, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) + %t298 = call ptr @finch_alloc(i64 %t297) + %t299 = getelementptr inbounds { ptr, i64, i64 }, ptr %t298, i64 0 + store { ptr, i64, i64 } { ptr @.str.4072, i64 4, i64 0 }, ptr %t299 + %t300 = getelementptr inbounds { ptr, i64, i64 }, ptr %t298, i64 1 + store { ptr, i64, i64 } { ptr @.str.4073, i64 4, i64 0 }, ptr %t300 + %t301 = getelementptr inbounds { ptr, i64, i64 }, ptr %t298, i64 2 + store { ptr, i64, i64 } { ptr @.str.4074, i64 4, i64 0 }, ptr %t301 + %t302 = getelementptr inbounds { ptr, i64, i64 }, ptr %t298, i64 3 + store { ptr, i64, i64 } { ptr @.str.4075, i64 4, i64 0 }, ptr %t302 + %t303 = getelementptr inbounds { ptr, i64, i64 }, ptr %t298, i64 4 + store { ptr, i64, i64 } { ptr @.str.4076, i64 4, i64 0 }, ptr %t303 + %t304 = insertvalue { ptr, i64, i64 } undef, ptr %t298, 0 + %t305 = insertvalue { ptr, i64, i64 } %t304, i64 5, 1 + %t306 = insertvalue { ptr, i64, i64 } %t305, i64 5, 2 + store { ptr, i64, i64 } %t306, ptr %a307 + %t308 = getelementptr inbounds { ptr, i64, i64 }, ptr %a296, i32 0, i32 1 + %t309 = load { ptr, i64, i64 }, ptr %a2 + store i64 -1, ptr %a310 + %t311 = load i64, ptr %t308 + %t312 = load ptr, ptr %a296 + store i64 0, ptr %a313 + br label %find.cond6295 +find.cond6295: + %t314 = load i64, ptr %a313 + %t315 = icmp slt i64 %t314, %t311 + br i1 %t315, label %find.body6296, label %find.end6299 +find.body6296: + %t316 = getelementptr inbounds { ptr, i64, i64 }, ptr %t312, i64 %t314 + %t317 = load { ptr, i64, i64 }, ptr %t316 + store { ptr, i64, i64 } %t317, ptr %a318 + store { ptr, i64, i64 } %t309, ptr %a319 + %t320 = call i32 @finch_str_eq(ptr %a318, ptr %a319) + %t321 = icmp ne i32 %t320, 0 + br i1 %t321, label %find.hit6297, label %find.next6298 +find.hit6297: + store i64 %t314, ptr %a310 + br label %find.end6299 +find.next6298: + %t322 = add i64 %t314, 1 + store i64 %t322, ptr %a313 + br label %find.cond6295 +find.end6299: + %t323 = load i64, ptr %a310 + store i64 %t323, ptr %a324 + %t325 = load i64, ptr %a324 + %t326 = icmp slt i64 %t325, 0 + br i1 %t326, label %then6300, label %endif6302 +then6300: + %t327 = load ptr, ptr %a1 + %t328 = load { ptr, i64, i64 }, ptr %a2 + %t329 = load %S.gen.Val, ptr %a6 + %t330 = load %S.gen.Val, ptr %a10 + %t331 = load %S.ast.Node, ptr %a11 + call void @finch.gen.badOperands(ptr %t327, { ptr, i64, i64 } %t328, %S.gen.Val %t329, %S.gen.Val %t330, %S.ast.Node %t331) + br label %endif6302 +endif6302: + %t332 = load ptr, ptr %a1 + %t333 = load i64, ptr %a324 + %t334 = load { ptr, i64, i64 }, ptr %a307 + %t335 = extractvalue { ptr, i64, i64 } %t334, 1 + %t336 = icmp uge i64 %t333, %t335 + br i1 %t336, label %range6303, label %inrange6304 +range6303: + call void @finch_panic_index(ptr @.str.4077, i64 3411, i64 %t333, i64 %t335) unreachable -inrange5944: - %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.3916, 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 - %t320 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t321 = load %S.ast.Type, ptr %t320 - %t322 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t319, %S.ast.Type %t321) - store { ptr, i64, i64 } %t318, 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.3917, 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 - %t332 = load { ptr, i64, i64 }, ptr %t331 - store { ptr, i64, i64 } %t330, ptr %a334 - store { ptr, i64, i64 } %t332, 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 %a338 - store { ptr, i64, i64 } { ptr @.str.3918, 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 - %t342 = load { ptr, i64, i64 }, ptr %t341 - store { ptr, i64, i64 } %t340, 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 - %t347 = call { ptr, i64, i64 } @finch.gen.op(ptr %t307, { ptr, i64, i64 } %t346) - %t348 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t347, 0 - %t349 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t350 = load %S.ast.Type, ptr %t349 - store %S.ast.Type %t350, ptr %a351 - call void @finch.copy.S_ast_Type(ptr %a352, ptr %a351) - %t353 = load %S.ast.Type, ptr %a352 - %t354 = insertvalue %S.gen.Val %t348, %S.ast.Type %t353, 1 - ret %S.gen.Val %t354 -endif5934: - %t355 = load ptr, ptr %a1 - %t356 = load { ptr, i64, i64 }, ptr %a2 - %t357 = load %S.gen.Val, ptr %a6 - %t358 = load %S.gen.Val, ptr %a10 - %t359 = load %S.ast.Node, ptr %a11 - call void @finch.gen.badOperands(ptr %t355, { ptr, i64, i64 } %t356, %S.gen.Val %t357, %S.gen.Val %t358, %S.ast.Node %t359) - %t360 = load %S.gen.Val, ptr %a6 - store %S.gen.Val %t360, ptr %a361 - call void @finch.copy.S_gen_Val(ptr %a362, ptr %a361) - %t363 = load %S.gen.Val, ptr %a362 - ret %S.gen.Val %t363 +inrange6304: + %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 } %t339, ptr %a341 + store { ptr, i64, i64 } { ptr @.str.4078, i64 1, 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, ptr %a1 + %t345 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 + %t346 = load %S.ast.Type, ptr %t345 + %t347 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t344, %S.ast.Type %t346) + store { ptr, i64, i64 } %t343, ptr %a349 + store { ptr, i64, i64 } %t347, ptr %a350 + call void @finch_str_concat(ptr %a348, ptr %a349, ptr %a350) + store { ptr, i64, i64 } %t343, ptr %a351 + call void @finch_str_drop(ptr %a351) + store { ptr, i64, i64 } %t347, ptr %a352 + call void @finch_str_drop(ptr %a352) + %t353 = load { ptr, i64, i64 }, ptr %a348 + store { ptr, i64, i64 } %t353, ptr %a355 + store { ptr, i64, i64 } { ptr @.str.4079, i64 1, i64 0 }, ptr %a356 + call void @finch_str_concat(ptr %a354, ptr %a355, ptr %a356) + store { ptr, i64, i64 } %t353, ptr %a357 + call void @finch_str_drop(ptr %a357) + %t358 = load { ptr, i64, i64 }, ptr %a354 + %t359 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 0 + %t360 = load { ptr, i64, i64 }, ptr %t359 + store { ptr, i64, i64 } %t358, ptr %a362 + store { ptr, i64, i64 } %t360, ptr %a363 + call void @finch_str_concat(ptr %a361, ptr %a362, ptr %a363) + store { ptr, i64, i64 } %t358, ptr %a364 + call void @finch_str_drop(ptr %a364) + %t365 = load { ptr, i64, i64 }, ptr %a361 + store { ptr, i64, i64 } %t365, ptr %a367 + store { ptr, i64, i64 } { ptr @.str.4080, i64 2, i64 0 }, ptr %a368 + call void @finch_str_concat(ptr %a366, ptr %a367, ptr %a368) + store { ptr, i64, i64 } %t365, ptr %a369 + call void @finch_str_drop(ptr %a369) + %t370 = load { ptr, i64, i64 }, ptr %a366 + %t371 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 + %t372 = load { ptr, i64, i64 }, ptr %t371 + store { ptr, i64, i64 } %t370, ptr %a374 + store { ptr, i64, i64 } %t372, ptr %a375 + call void @finch_str_concat(ptr %a373, ptr %a374, ptr %a375) + store { ptr, i64, i64 } %t370, ptr %a376 + call void @finch_str_drop(ptr %a376) + %t377 = load { ptr, i64, i64 }, ptr %a373 + %t378 = call { ptr, i64, i64 } @finch.gen.op(ptr %t332, { ptr, i64, i64 } %t377) + store { ptr, i64, i64 } %t377, ptr %a379 + call void @finch_str_drop(ptr %a379) + %t380 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t378, 0 + %t381 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 + %t382 = load %S.ast.Type, ptr %t381 + store %S.ast.Type %t382, ptr %a383 + call void @finch.copy.S_ast_Type(ptr %a384, ptr %a383) + %t385 = load %S.ast.Type, ptr %a384 + %t386 = insertvalue %S.gen.Val %t380, %S.ast.Type %t385, 1 + call void @finch.drop.arr_str(ptr %a307) + call void @finch.drop.arr_str(ptr %a296) + call void @finch.drop.S_gen_Val(ptr %a10) + call void @finch.drop.S_gen_Val(ptr %a6) + ret %S.gen.Val %t386 +endif6294: + %t387 = load ptr, ptr %a1 + %t388 = load { ptr, i64, i64 }, ptr %a2 + %t389 = load %S.gen.Val, ptr %a6 + %t390 = load %S.gen.Val, ptr %a10 + %t391 = load %S.ast.Node, ptr %a11 + call void @finch.gen.badOperands(ptr %t387, { ptr, i64, i64 } %t388, %S.gen.Val %t389, %S.gen.Val %t390, %S.ast.Node %t391) + %t392 = load %S.gen.Val, ptr %a6 + call void @finch.drop.S_gen_Val(ptr %a10) + ret %S.gen.Val %t392 } define internal %S.gen.Val @finch.gen.compare(ptr %p0, { ptr, i64, i64 } %p1, %S.gen.Val %p2, %S.gen.Val %p3, %S.ast.Node %p4) { @@ -53423,155 +63083,212 @@ entry: %a79 = alloca { ptr, i64, i64 }, align 16 %a81 = alloca { ptr, i64, i64 }, align 16 %a82 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 + %a86 = alloca { ptr, i64, i64 }, align 16 %a89 = 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 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = 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 + %a100 = 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 %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = 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 + %a115 = alloca { ptr, i64, i64 }, align 16 %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 %a125 = alloca { ptr, i64, i64 }, align 16 %a126 = 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 - %a146 = alloca { ptr, i64, i64 }, align 16 + %a132 = alloca { ptr, i64, i64 }, align 16 + %a133 = alloca { ptr, i64, i64 }, align 16 + %a142 = alloca { ptr, i64, i64 }, align 16 + %a143 = alloca { ptr, i64, i64 }, align 16 + %a144 = alloca { ptr, i64, i64 }, align 16 + %a145 = alloca { ptr, i64, i64 }, align 16 %a147 = alloca { ptr, i64, i64 }, align 16 %a148 = 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 - %a152 = alloca { ptr, i64, i64 }, align 16 %a155 = 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 %a159 = 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 %a164 = 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 %a168 = alloca { ptr, i64, i64 }, align 16 %a169 = alloca { ptr, i64, i64 }, align 16 - %a170 = 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 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = 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 %a179 = alloca { ptr, i64, i64 }, align 16 + %a180 = 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 %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 + %a192 = alloca { ptr, i64, i64 }, align 16 %a194 = 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 %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 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 + %a207 = alloca { ptr, i64, i64 }, align 16 + %a208 = alloca { ptr, i64, i64 }, align 16 %a217 = alloca { ptr, i64, i64 }, align 16 %a218 = alloca { ptr, i64, i64 }, align 16 %a219 = alloca { ptr, i64, i64 }, align 16 + %a220 = alloca { ptr, i64, i64 }, align 16 %a222 = alloca { ptr, i64, i64 }, align 16 %a223 = alloca { ptr, i64, i64 }, align 16 %a224 = 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 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 + %a225 = 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 + %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 + %a239 = alloca { ptr, i64, i64 }, align 16 + %a242 = alloca { ptr, i64, i64 }, align 16 + %a243 = 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 + %a250 = alloca { ptr, i64, i64 }, align 16 + %a252 = 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 + %a258 = 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 %a263 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca i64, align 16 - %a282 = alloca i64, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = 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 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a305 = 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 + %a276 = alloca { ptr, i64, i64 }, align 16 + %a277 = alloca { ptr, i64, i64 }, align 16 + %a293 = alloca { ptr, i64, i64 }, align 16 + %a294 = alloca { ptr, i64, i64 }, align 16 + %a296 = 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 - %a315 = 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 - %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 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 + %a327 = alloca i64, align 16 + %a330 = alloca i64, align 16 + %a335 = alloca { ptr, i64, i64 }, align 16 + %a336 = alloca { ptr, i64, i64 }, align 16 + %a347 = alloca { ptr, i64, i64 }, align 16 %a348 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 + %a349 = alloca { ptr, i64, i64 }, align 16 %a351 = 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 + %a352 = alloca { ptr, i64, i64 }, align 16 + %a353 = alloca { ptr, i64, i64 }, align 16 + %a354 = 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 %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 + %a369 = alloca { ptr, i64, i64 }, align 16 + %a373 = alloca { ptr, i64, i64 }, align 16 + %a374 = 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 %a378 = 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 %a385 = alloca { ptr, i64, i64 }, align 16 %a386 = alloca { ptr, i64, i64 }, align 16 - %a402 = alloca { ptr, i64, i64 }, align 16 - %a403 = alloca { ptr, i64, i64 }, align 16 - %a408 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a424 = 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 + %a396 = alloca { ptr, i64, i64 }, align 16 + %a397 = 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 + %a411 = 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 + %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 %a425 = alloca { ptr, i64, i64 }, align 16 %a426 = alloca { ptr, i64, i64 }, align 16 + %a427 = 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 - %a436 = alloca { ptr, i64, i64 }, align 16 + %a431 = alloca { ptr, i64, i64 }, align 16 + %a432 = alloca { ptr, i64, i64 }, align 16 + %a433 = 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 %a440 = alloca { ptr, i64, i64 }, align 16 - %a441 = alloca { ptr, i64, i64 }, align 16 - %a442 = alloca { ptr, i64, i64 }, align 16 - %a446 = alloca { ptr, i64, i64 }, align 16 - %a447 = alloca { ptr, i64, i64 }, align 16 + %a443 = 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 - %a456 = alloca { ptr, i64, i64 }, align 16 - %a457 = alloca { ptr, i64, i64 }, align 16 - %a458 = alloca { ptr, i64, i64 }, align 16 + %a449 = 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 + %a487 = alloca { ptr, i64, i64 }, align 16 + %a488 = alloca { ptr, i64, i64 }, align 16 + %a489 = alloca { ptr, i64, i64 }, align 16 + %a490 = alloca { ptr, i64, i64 }, align 16 + %a492 = 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 + %a501 = alloca { ptr, i64, i64 }, align 16 + %a502 = alloca { ptr, i64, i64 }, align 16 + %a503 = alloca { ptr, i64, i64 }, align 16 + %a504 = alloca { ptr, i64, i64 }, align 16 + %a505 = alloca { ptr, i64, i64 }, align 16 + %a507 = alloca { ptr, i64, i64 }, align 16 + %a508 = 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 + %a516 = alloca { ptr, i64, i64 }, align 16 + %a517 = alloca { ptr, i64, i64 }, align 16 + %a519 = alloca { ptr, i64, i64 }, align 16 + %a520 = alloca { ptr, i64, i64 }, align 16 + %a521 = alloca { ptr, i64, i64 }, align 16 + %a522 = alloca { ptr, i64, i64 }, align 16 + %a526 = 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 + %a532 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store { ptr, i64, i64 } %p1, ptr %a2 store %S.gen.Val %p2, ptr %a3 @@ -53585,623 +63302,774 @@ 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.3919, i64 2, i64 0 }, ptr %a14 + store { ptr, i64, i64 } { ptr @.str.4081, 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.from5945 -logic.from5945: - br i1 %t16, label %logic.end5947, label %logic.rhs5946 -logic.rhs5946: + br label %logic.from6305 +logic.from6305: + br i1 %t16, label %logic.end6307, label %logic.rhs6306 +logic.rhs6306: %t17 = load { ptr, i64, i64 }, ptr %a2 store { ptr, i64, i64 } %t17, ptr %a18 - store { ptr, i64, i64 } { ptr @.str.3920, i64 2, i64 0 }, ptr %a19 + store { ptr, i64, i64 } { ptr @.str.4082, 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.rend5948 -logic.rend5948: - br label %logic.end5947 -logic.end5947: - %t22 = phi i1 [ true, %logic.from5945 ], [ %t21, %logic.rend5948 ] + br label %logic.rend6308 +logic.rend6308: + br label %logic.end6307 +logic.end6307: + %t22 = phi i1 [ true, %logic.from6305 ], [ %t21, %logic.rend6308 ] 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.3921, i64 3, i64 0 }, ptr %a28 + store { ptr, i64, i64 } { ptr @.str.4083, 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.from5949 -logic.from5949: - br i1 %t30, label %logic.end5951, label %logic.rhs5950 -logic.rhs5950: + br label %logic.from6309 +logic.from6309: + br i1 %t30, label %logic.end6311, label %logic.rhs6310 +logic.rhs6310: %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.3922, i64 3, i64 0 }, ptr %a35 + store { ptr, i64, i64 } { ptr @.str.4084, 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.rend5952 -logic.rend5952: - br label %logic.end5951 -logic.end5951: - %t38 = phi i1 [ true, %logic.from5949 ], [ %t37, %logic.rend5952 ] - br label %logic.from5953 -logic.from5953: - br i1 %t38, label %logic.end5955, label %logic.rhs5954 -logic.rhs5954: + br label %logic.rend6312 +logic.rend6312: + br label %logic.end6311 +logic.end6311: + %t38 = phi i1 [ true, %logic.from6309 ], [ %t37, %logic.rend6312 ] + br label %logic.from6313 +logic.from6313: + br i1 %t38, label %logic.end6315, label %logic.rhs6314 +logic.rhs6314: %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.3923, i64 4, i64 0 }, ptr %a43 + store { ptr, i64, i64 } { ptr @.str.4085, 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.rend5956 -logic.rend5956: - br label %logic.end5955 -logic.end5955: - %t46 = phi i1 [ true, %logic.from5953 ], [ %t45, %logic.rend5956 ] - br label %logic.from5957 -logic.from5957: - br i1 %t46, label %logic.end5959, label %logic.rhs5958 -logic.rhs5958: + br label %logic.rend6316 +logic.rend6316: + br label %logic.end6315 +logic.end6315: + %t46 = phi i1 [ true, %logic.from6313 ], [ %t45, %logic.rend6316 ] + br label %logic.from6317 +logic.from6317: + br i1 %t46, label %logic.end6319, label %logic.rhs6318 +logic.rhs6318: %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.3924, i64 4, i64 0 }, ptr %a51 + store { ptr, i64, i64 } { ptr @.str.4086, 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.rend5960 -logic.rend5960: - br label %logic.end5959 -logic.end5959: - %t54 = phi i1 [ true, %logic.from5957 ], [ %t53, %logic.rend5960 ] - br i1 %t54, label %then5961, label %endif5963 -then5961: + br label %logic.rend6320 +logic.rend6320: + br label %logic.end6319 +logic.end6319: + %t54 = phi i1 [ true, %logic.from6317 ], [ %t53, %logic.rend6320 ] + br i1 %t54, label %then6321, label %endif6323 +then6321: %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.3925, i64 3, i64 0 }, ptr %a59 + store { ptr, i64, i64 } { ptr @.str.4087, 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.from5964 -logic.from5964: - br i1 %t61, label %logic.end5966, label %logic.rhs5965 -logic.rhs5965: + br label %logic.from6324 +logic.from6324: + br i1 %t61, label %logic.end6326, label %logic.rhs6325 +logic.rhs6325: %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.3926, i64 3, i64 0 }, ptr %a66 + store { ptr, i64, i64 } { ptr @.str.4088, 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.rend5967 -logic.rend5967: - br label %logic.end5966 -logic.end5966: - %t69 = phi i1 [ true, %logic.from5964 ], [ %t68, %logic.rend5967 ] - br i1 %t69, label %then5968, label %endif5970 -then5968: + br label %logic.rend6327 +logic.rend6327: + br label %logic.end6326 +logic.end6326: + %t69 = phi i1 [ true, %logic.from6324 ], [ %t68, %logic.rend6327 ] + br i1 %t69, label %then6328, label %endif6330 +then6328: %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.3927, i64 59, i64 0 }) - br label %endif5970 -endif5970: + call void @finch.gen.fail(ptr %t70, %S.ast.Node %t71, { ptr, i64, i64 } { ptr @.str.4089, i64 59, i64 0 }) + br label %endif6330 +endif6330: %t72 = load i1, ptr %a23 %t73 = xor i1 %t72, true - br i1 %t73, label %then5971, label %endif5973 -then5971: + br i1 %t73, label %then6331, label %endif6333 +then6331: %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 %endif5973 -endif5973: - store { ptr, i64, i64 } { ptr @.str.3928, i64 2, i64 0 }, ptr %a79 + br label %endif6333 +endif6333: + store { ptr, i64, i64 } { ptr @.str.4090, 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.3929, i64 2, i64 0 }, ptr %a82 + store { ptr, i64, i64 } { ptr @.str.4091, 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 %then5974, label %endif5976 -then5974: - store { ptr, i64, i64 } { ptr @.str.3930, i64 2, i64 0 }, ptr %a79 - br label %endif5976 -endif5976: - %t85 = load ptr, ptr %a1 - %t86 = load { ptr, i64, i64 }, ptr %a79 - store { ptr, i64, i64 } { ptr @.str.3931, 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.3932, 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 - %t96 = load { ptr, i64, i64 }, ptr %t95 - store { ptr, i64, i64 } %t94, 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.3933, 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 - %t106 = load { ptr, i64, i64 }, ptr %t105 + br i1 %t84, label %then6334, label %endif6336 +then6334: + %t85 = load { ptr, i64, i64 }, ptr %a79 + store { ptr, i64, i64 } { ptr @.str.4092, i64 2, i64 0 }, ptr %a79 + store { ptr, i64, i64 } %t85, ptr %a86 + call void @finch_str_drop(ptr %a86) + br label %endif6336 +endif6336: + %t87 = load ptr, ptr %a1 + %t88 = load { ptr, i64, i64 }, ptr %a79 + store { ptr, i64, i64 } { ptr @.str.4093, i64 5, i64 0 }, ptr %a90 + store { ptr, i64, i64 } %t88, ptr %a91 + call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) + %t92 = load { ptr, i64, i64 }, ptr %a89 + store { ptr, i64, i64 } %t92, ptr %a94 + store { ptr, i64, i64 } { ptr @.str.4094, i64 5, i64 0 }, ptr %a95 + call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) + store { ptr, i64, i64 } %t92, ptr %a96 + call void @finch_str_drop(ptr %a96) + %t97 = load { ptr, i64, i64 }, ptr %a93 + %t98 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 0 + %t99 = load { ptr, i64, i64 }, ptr %t98 + store { ptr, i64, i64 } %t97, ptr %a101 + store { ptr, i64, i64 } %t99, ptr %a102 + call void @finch_str_concat(ptr %a100, ptr %a101, ptr %a102) + store { ptr, i64, i64 } %t97, ptr %a103 + call void @finch_str_drop(ptr %a103) + %t104 = load { ptr, i64, i64 }, ptr %a100 + store { ptr, i64, i64 } %t104, ptr %a106 + store { ptr, i64, i64 } { ptr @.str.4095, i64 2, i64 0 }, ptr %a107 + call void @finch_str_concat(ptr %a105, ptr %a106, ptr %a107) store { ptr, i64, i64 } %t104, 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 - %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.3934, i64 4, i64 0 }) - %t114 = insertvalue %S.gen.Val %t112, %S.ast.Type %t113, 1 - ret %S.gen.Val %t114 -endif5963: - %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.3935, 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.from5977 -logic.from5977: - br i1 %t121, label %logic.rhs5978, label %logic.end5979 -logic.rhs5978: - %t122 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 1 + call void @finch_str_drop(ptr %a108) + %t109 = load { ptr, i64, i64 }, ptr %a105 + %t110 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 + %t111 = load { ptr, i64, i64 }, ptr %t110 + store { ptr, i64, i64 } %t109, ptr %a113 + store { ptr, i64, i64 } %t111, ptr %a114 + call void @finch_str_concat(ptr %a112, ptr %a113, ptr %a114) + store { ptr, i64, i64 } %t109, ptr %a115 + call void @finch_str_drop(ptr %a115) + %t116 = load { ptr, i64, i64 }, ptr %a112 + %t117 = call { ptr, i64, i64 } @finch.gen.op(ptr %t87, { ptr, i64, i64 } %t116) + store { ptr, i64, i64 } %t116, ptr %a118 + call void @finch_str_drop(ptr %a118) + %t119 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t117, 0 + %t120 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4096, i64 4, i64 0 }) + %t121 = insertvalue %S.gen.Val %t119, %S.ast.Type %t120, 1 + call void @finch_str_drop(ptr %a79) + call void @finch.drop.S_gen_Val(ptr %a10) + call void @finch.drop.S_gen_Val(ptr %a6) + ret %S.gen.Val %t121 +endif6323: + %t122 = getelementptr inbounds %S.gen.Val, ptr %a6, 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.3936, i64 3, i64 0 }, ptr %a126 + store { ptr, i64, i64 } { ptr @.str.4097, 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.rend5980 -logic.rend5980: - br label %logic.end5979 -logic.end5979: - %t129 = phi i1 [ false, %logic.from5977 ], [ %t128, %logic.rend5980 ] - br i1 %t129, label %then5981, label %endif5983 -then5981: - %t130 = load i1, ptr %a23 - br i1 %t130, label %then5984, label %endif5986 -then5984: - %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.3937, 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.3938, 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 - %t144 = load %S.gen.Val, ptr %a10 - %t145 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t143, %S.gen.Val %t144) - 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 - store { ptr, i64, i64 } %t149, ptr %a151 - store { ptr, i64, i64 } { ptr @.str.3939, 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.3940, 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.3941, 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 %then5987, label %endif5989 -then5987: - store { ptr, i64, i64 } { ptr @.str.3942, i64 2, i64 0 }, ptr %a156 - br label %endif5989 -endif5989: - %t162 = load ptr, ptr %a1 - %t163 = load { ptr, i64, i64 }, ptr %a156 - store { ptr, i64, i64 } { ptr @.str.3943, 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.3944, 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 - store { ptr, i64, i64 } %t171, 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 - store { ptr, i64, i64 } %t176, ptr %a178 - store { ptr, i64, i64 } { ptr @.str.3945, 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.3946, i64 4, i64 0 }) - %t184 = insertvalue %S.gen.Val %t182, %S.ast.Type %t183, 1 - ret %S.gen.Val %t184 -endif5986: - %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.3947, i64 28, i64 0 }, ptr %a190 + br label %logic.from6337 +logic.from6337: + br i1 %t128, label %logic.rhs6338, label %logic.end6339 +logic.rhs6338: + %t129 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 1 + %t130 = getelementptr inbounds %S.ast.Type, ptr %t129, i32 0, i32 0 + %t131 = load { ptr, i64, i64 }, ptr %t130 + store { ptr, i64, i64 } %t131, ptr %a132 + store { ptr, i64, i64 } { ptr @.str.4098, i64 3, i64 0 }, ptr %a133 + %t134 = call i32 @finch_str_eq(ptr %a132, ptr %a133) + %t135 = icmp ne i32 %t134, 0 + br label %logic.rend6340 +logic.rend6340: + br label %logic.end6339 +logic.end6339: + %t136 = phi i1 [ false, %logic.from6337 ], [ %t135, %logic.rend6340 ] + br i1 %t136, label %then6341, label %endif6343 +then6341: + %t137 = load i1, ptr %a23 + br i1 %t137, label %then6344, label %endif6346 +then6344: + %t138 = load ptr, ptr %a1 + %t139 = load ptr, ptr %a1 + %t140 = load %S.gen.Val, ptr %a6 + %t141 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t139, %S.gen.Val %t140) + store { ptr, i64, i64 } { ptr @.str.4099, i64 27, i64 0 }, ptr %a143 + store { ptr, i64, i64 } %t141, ptr %a144 + call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144) + store { ptr, i64, i64 } %t141, ptr %a145 + call void @finch_str_drop(ptr %a145) + %t146 = load { ptr, i64, i64 }, ptr %a142 + store { ptr, i64, i64 } %t146, ptr %a148 + store { ptr, i64, i64 } { ptr @.str.4100, i64 6, i64 0 }, ptr %a149 + call void @finch_str_concat(ptr %a147, ptr %a148, ptr %a149) + store { ptr, i64, i64 } %t146, ptr %a150 + call void @finch_str_drop(ptr %a150) + %t151 = load { ptr, i64, i64 }, ptr %a147 + %t152 = load ptr, ptr %a1 + %t153 = load %S.gen.Val, ptr %a10 + %t154 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t152, %S.gen.Val %t153) + store { ptr, i64, i64 } %t151, ptr %a156 + store { ptr, i64, i64 } %t154, ptr %a157 + call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) + store { ptr, i64, i64 } %t151, ptr %a158 + call void @finch_str_drop(ptr %a158) + store { ptr, i64, i64 } %t154, ptr %a159 + call void @finch_str_drop(ptr %a159) + %t160 = load { ptr, i64, i64 }, ptr %a155 + store { ptr, i64, i64 } %t160, ptr %a162 + store { ptr, i64, i64 } { ptr @.str.4101, i64 1, i64 0 }, ptr %a163 + call void @finch_str_concat(ptr %a161, ptr %a162, ptr %a163) + store { ptr, i64, i64 } %t160, ptr %a164 + call void @finch_str_drop(ptr %a164) + %t165 = load { ptr, i64, i64 }, ptr %a161 + %t166 = call { ptr, i64, i64 } @finch.gen.op(ptr %t138, { ptr, i64, i64 } %t165) + store { ptr, i64, i64 } %t165, ptr %a167 + call void @finch_str_drop(ptr %a167) + store { ptr, i64, i64 } %t166, ptr %a168 + store { ptr, i64, i64 } { ptr @.str.4102, i64 2, i64 0 }, ptr %a169 + %t170 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t170, ptr %a171 + store { ptr, i64, i64 } { ptr @.str.4103, i64 2, i64 0 }, ptr %a172 + %t173 = call i32 @finch_str_eq(ptr %a171, ptr %a172) + %t174 = icmp ne i32 %t173, 0 + br i1 %t174, label %then6347, label %endif6349 +then6347: + %t175 = load { ptr, i64, i64 }, ptr %a169 + store { ptr, i64, i64 } { ptr @.str.4104, i64 2, i64 0 }, ptr %a169 + store { ptr, i64, i64 } %t175, ptr %a176 + call void @finch_str_drop(ptr %a176) + br label %endif6349 +endif6349: + %t177 = load ptr, ptr %a1 + %t178 = load { ptr, i64, i64 }, ptr %a169 + store { ptr, i64, i64 } { ptr @.str.4105, i64 5, 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 + store { ptr, i64, i64 } %t182, ptr %a184 + store { ptr, i64, i64 } { ptr @.str.4106, i64 5, i64 0 }, ptr %a185 + call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) + store { ptr, i64, i64 } %t182, ptr %a186 + call void @finch_str_drop(ptr %a186) + %t187 = load { ptr, i64, i64 }, ptr %a183 + %t188 = load { ptr, i64, i64 }, ptr %a168 + store { ptr, i64, i64 } %t187, 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.3948, 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 - %t198 = load %S.gen.Val, ptr %a10 - %t199 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t197, %S.gen.Val %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.3949, 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) - store { ptr, i64, i64 } %t208, ptr %a209 - %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.3950, 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.3951, i64 5, i64 0 }, ptr %a219 + store { ptr, i64, i64 } %t187, ptr %a192 + call void @finch_str_drop(ptr %a192) + %t193 = load { ptr, i64, i64 }, ptr %a189 + store { ptr, i64, i64 } %t193, ptr %a195 + store { ptr, i64, i64 } { ptr @.str.4107, i64 3, i64 0 }, ptr %a196 + call void @finch_str_concat(ptr %a194, ptr %a195, ptr %a196) + store { ptr, i64, i64 } %t193, ptr %a197 + call void @finch_str_drop(ptr %a197) + %t198 = load { ptr, i64, i64 }, ptr %a194 + %t199 = call { ptr, i64, i64 } @finch.gen.op(ptr %t177, { ptr, i64, i64 } %t198) + store { ptr, i64, i64 } %t198, ptr %a200 + call void @finch_str_drop(ptr %a200) + store { ptr, i64, i64 } %t199, ptr %a201 + %t202 = load ptr, ptr %a1 + %t203 = load %S.gen.Val, ptr %a6 + call void @finch.gen.release(ptr %t202, %S.gen.Val %t203) + %t204 = load ptr, ptr %a1 + %t205 = load %S.gen.Val, ptr %a10 + call void @finch.gen.release(ptr %t204, %S.gen.Val %t205) + %t206 = load { ptr, i64, i64 }, ptr %a201 + store { ptr, i64, i64 } %t206, ptr %a207 + call void @finch_str_copy(ptr %a208, ptr %a207) + %t209 = load { ptr, i64, i64 }, ptr %a208 + %t210 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t209, 0 + %t211 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4108, i64 4, i64 0 }) + %t212 = insertvalue %S.gen.Val %t210, %S.ast.Type %t211, 1 + call void @finch_str_drop(ptr %a201) + call void @finch_str_drop(ptr %a169) + call void @finch_str_drop(ptr %a168) + call void @finch.drop.S_gen_Val(ptr %a10) + call void @finch.drop.S_gen_Val(ptr %a6) + ret %S.gen.Val %t212 +endif6346: + %t213 = load ptr, ptr %a1 + %t214 = load ptr, ptr %a1 + %t215 = load %S.gen.Val, ptr %a6 + %t216 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t214, %S.gen.Val %t215) + store { ptr, i64, i64 } { ptr @.str.4109, i64 28, 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 - %t221 = load { ptr, i64, i64 }, ptr %a209 - store { ptr, i64, i64 } %t220, ptr %a223 - store { ptr, i64, i64 } %t221, ptr %a224 + store { ptr, i64, i64 } %t216, ptr %a220 + call void @finch_str_drop(ptr %a220) + %t221 = load { ptr, i64, i64 }, ptr %a217 + store { ptr, i64, i64 } %t221, ptr %a223 + store { ptr, i64, i64 } { ptr @.str.4110, i64 6, i64 0 }, ptr %a224 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.3952, 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.3953, i64 4, i64 0 }) - %t233 = insertvalue %S.gen.Val %t231, %S.ast.Type %t232, 1 - ret %S.gen.Val %t233 -endif5983: - %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 %then5990, label %endif5992 -then5990: - %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 %endif5992 -endif5992: - %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 - store { ptr, i64, i64 } %t244, ptr %a245 - call void @finch_str_copy(ptr %a246, ptr %a245) - %t247 = load { ptr, i64, i64 }, ptr %a246 - store { ptr, i64, i64 } %t247, ptr %a248 - %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 %then5993, label %endif5995 -then5993: - %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.3954, i64 2, i64 0 }, ptr %t254 - %t255 = getelementptr inbounds { ptr, i64, i64 }, ptr %t253, i64 1 - store { ptr, i64, i64 } { ptr @.str.3955, i64 2, i64 0 }, ptr %t255 - %t256 = getelementptr inbounds { ptr, i64, i64 }, ptr %t253, i64 2 - store { ptr, i64, i64 } { ptr @.str.3956, i64 1, i64 0 }, ptr %t256 - %t257 = getelementptr inbounds { ptr, i64, i64 }, ptr %t253, i64 3 - store { ptr, i64, i64 } { ptr @.str.3957, i64 2, i64 0 }, ptr %t257 - %t258 = getelementptr inbounds { ptr, i64, i64 }, ptr %t253, i64 4 - store { ptr, i64, i64 } { ptr @.str.3958, i64 1, i64 0 }, ptr %t258 - %t259 = getelementptr inbounds { ptr, i64, i64 }, ptr %t253, i64 5 - store { ptr, i64, i64 } { ptr @.str.3959, 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 - store { ptr, i64, i64 } %t262, ptr %a263 - %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.3960, i64 3, i64 0 }, ptr %t266 - %t267 = getelementptr inbounds { ptr, i64, i64 }, ptr %t265, i64 1 - store { ptr, i64, i64 } { ptr @.str.3961, i64 3, i64 0 }, ptr %t267 - %t268 = getelementptr inbounds { ptr, i64, i64 }, ptr %t265, i64 2 - store { ptr, i64, i64 } { ptr @.str.3962, i64 3, i64 0 }, ptr %t268 - %t269 = getelementptr inbounds { ptr, i64, i64 }, ptr %t265, i64 3 - store { ptr, i64, i64 } { ptr @.str.3963, i64 3, i64 0 }, ptr %t269 - %t270 = getelementptr inbounds { ptr, i64, i64 }, ptr %t265, i64 4 - store { ptr, i64, i64 } { ptr @.str.3964, i64 3, i64 0 }, ptr %t270 - %t271 = getelementptr inbounds { ptr, i64, i64 }, ptr %t265, i64 5 - store { ptr, i64, i64 } { ptr @.str.3965, 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 - store { ptr, i64, i64 } %t274, ptr %a275 - %t276 = load ptr, ptr %a1 - %t277 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 - %t278 = load { ptr, i64, i64 }, ptr %a2 - store i64 -1, ptr %a279 - %t280 = load i64, ptr %t277 - %t281 = load ptr, ptr %a263 - store i64 0, ptr %a282 - br label %find.cond5996 -find.cond5996: - %t283 = load i64, ptr %a282 - %t284 = icmp slt i64 %t283, %t280 - br i1 %t284, label %find.body5997, label %find.end6000 -find.body5997: - %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.hit5998, label %find.next5999 -find.hit5998: - store i64 %t283, ptr %a279 - br label %find.end6000 -find.next5999: - %t291 = add i64 %t283, 1 - store i64 %t291, ptr %a282 - br label %find.cond5996 -find.end6000: - %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 %range6001, label %inrange6002 -range6001: - call void @finch_panic_index(ptr @.str.3967, i64 3194, i64 %t292, i64 %t294) + store { ptr, i64, i64 } %t221, ptr %a225 + call void @finch_str_drop(ptr %a225) + %t226 = load { ptr, i64, i64 }, ptr %a222 + %t227 = load ptr, ptr %a1 + %t228 = load %S.gen.Val, ptr %a10 + %t229 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t227, %S.gen.Val %t228) + store { ptr, i64, i64 } %t226, ptr %a231 + store { ptr, i64, i64 } %t229, ptr %a232 + call void @finch_str_concat(ptr %a230, ptr %a231, ptr %a232) + store { ptr, i64, i64 } %t226, ptr %a233 + call void @finch_str_drop(ptr %a233) + store { ptr, i64, i64 } %t229, ptr %a234 + call void @finch_str_drop(ptr %a234) + %t235 = load { ptr, i64, i64 }, ptr %a230 + store { ptr, i64, i64 } %t235, ptr %a237 + store { ptr, i64, i64 } { ptr @.str.4111, i64 1, i64 0 }, ptr %a238 + call void @finch_str_concat(ptr %a236, ptr %a237, ptr %a238) + store { ptr, i64, i64 } %t235, ptr %a239 + call void @finch_str_drop(ptr %a239) + %t240 = load { ptr, i64, i64 }, ptr %a236 + %t241 = call { ptr, i64, i64 } @finch.gen.op(ptr %t213, { ptr, i64, i64 } %t240) + store { ptr, i64, i64 } %t240, ptr %a242 + call void @finch_str_drop(ptr %a242) + store { ptr, i64, i64 } %t241, ptr %a243 + %t244 = load ptr, ptr %a1 + %t245 = load { ptr, i64, i64 }, ptr %a2 + %t246 = call { ptr, i64, i64 } @finch.gen.intPred({ ptr, i64, i64 } %t245, i1 true) + store { ptr, i64, i64 } { ptr @.str.4112, i64 5, i64 0 }, ptr %a248 + store { ptr, i64, i64 } %t246, ptr %a249 + call void @finch_str_concat(ptr %a247, ptr %a248, ptr %a249) + store { ptr, i64, i64 } %t246, ptr %a250 + call void @finch_str_drop(ptr %a250) + %t251 = load { ptr, i64, i64 }, ptr %a247 + store { ptr, i64, i64 } %t251, ptr %a253 + store { ptr, i64, i64 } { ptr @.str.4113, i64 5, i64 0 }, ptr %a254 + call void @finch_str_concat(ptr %a252, ptr %a253, ptr %a254) + store { ptr, i64, i64 } %t251, ptr %a255 + call void @finch_str_drop(ptr %a255) + %t256 = load { ptr, i64, i64 }, ptr %a252 + %t257 = load { ptr, i64, i64 }, ptr %a243 + store { ptr, i64, i64 } %t256, ptr %a259 + store { ptr, i64, i64 } %t257, ptr %a260 + call void @finch_str_concat(ptr %a258, ptr %a259, ptr %a260) + store { ptr, i64, i64 } %t256, ptr %a261 + call void @finch_str_drop(ptr %a261) + %t262 = load { ptr, i64, i64 }, ptr %a258 + store { ptr, i64, i64 } %t262, ptr %a264 + store { ptr, i64, i64 } { ptr @.str.4114, i64 3, i64 0 }, ptr %a265 + call void @finch_str_concat(ptr %a263, ptr %a264, ptr %a265) + store { ptr, i64, i64 } %t262, ptr %a266 + call void @finch_str_drop(ptr %a266) + %t267 = load { ptr, i64, i64 }, ptr %a263 + %t268 = call { ptr, i64, i64 } @finch.gen.op(ptr %t244, { ptr, i64, i64 } %t267) + store { ptr, i64, i64 } %t267, ptr %a269 + call void @finch_str_drop(ptr %a269) + store { ptr, i64, i64 } %t268, ptr %a270 + %t271 = load ptr, ptr %a1 + %t272 = load %S.gen.Val, ptr %a6 + call void @finch.gen.release(ptr %t271, %S.gen.Val %t272) + %t273 = load ptr, ptr %a1 + %t274 = load %S.gen.Val, ptr %a10 + call void @finch.gen.release(ptr %t273, %S.gen.Val %t274) + %t275 = load { ptr, i64, i64 }, ptr %a270 + store { ptr, i64, i64 } %t275, ptr %a276 + call void @finch_str_copy(ptr %a277, ptr %a276) + %t278 = load { ptr, i64, i64 }, ptr %a277 + %t279 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t278, 0 + %t280 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4115, i64 4, i64 0 }) + %t281 = insertvalue %S.gen.Val %t279, %S.ast.Type %t280, 1 + call void @finch_str_drop(ptr %a270) + call void @finch_str_drop(ptr %a243) + call void @finch.drop.S_gen_Val(ptr %a10) + call void @finch.drop.S_gen_Val(ptr %a6) + ret %S.gen.Val %t281 +endif6343: + %t282 = load ptr, ptr %a1 + %t283 = call i1 @finch.gen.unify(ptr %t282, ptr %a6, ptr %a10) + %t284 = xor i1 %t283, true + br i1 %t284, label %then6350, label %endif6352 +then6350: + %t285 = load ptr, ptr %a1 + %t286 = load { ptr, i64, i64 }, ptr %a2 + %t287 = load %S.gen.Val, ptr %a6 + %t288 = load %S.gen.Val, ptr %a10 + %t289 = load %S.ast.Node, ptr %a11 + call void @finch.gen.badOperands(ptr %t285, { ptr, i64, i64 } %t286, %S.gen.Val %t287, %S.gen.Val %t288, %S.ast.Node %t289) + br label %endif6352 +endif6352: + %t290 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 + %t291 = getelementptr inbounds %S.ast.Type, ptr %t290, i32 0, i32 0 + %t292 = load { ptr, i64, i64 }, ptr %t291 + store { ptr, i64, i64 } %t292, ptr %a293 + call void @finch_str_copy(ptr %a294, ptr %a293) + %t295 = load { ptr, i64, i64 }, ptr %a294 + store { ptr, i64, i64 } %t295, ptr %a296 + %t297 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 + %t298 = load %S.ast.Type, ptr %t297 + %t299 = call i1 @finch.gen.isFloat(%S.ast.Type %t298) + br i1 %t299, label %then6353, label %endif6355 +then6353: + %t300 = mul i64 6, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) + %t301 = call ptr @finch_alloc(i64 %t300) + %t302 = getelementptr inbounds { ptr, i64, i64 }, ptr %t301, i64 0 + store { ptr, i64, i64 } { ptr @.str.4116, i64 2, i64 0 }, ptr %t302 + %t303 = getelementptr inbounds { ptr, i64, i64 }, ptr %t301, i64 1 + store { ptr, i64, i64 } { ptr @.str.4117, i64 2, i64 0 }, ptr %t303 + %t304 = getelementptr inbounds { ptr, i64, i64 }, ptr %t301, i64 2 + store { ptr, i64, i64 } { ptr @.str.4118, i64 1, i64 0 }, ptr %t304 + %t305 = getelementptr inbounds { ptr, i64, i64 }, ptr %t301, i64 3 + store { ptr, i64, i64 } { ptr @.str.4119, i64 2, i64 0 }, ptr %t305 + %t306 = getelementptr inbounds { ptr, i64, i64 }, ptr %t301, i64 4 + store { ptr, i64, i64 } { ptr @.str.4120, i64 1, i64 0 }, ptr %t306 + %t307 = getelementptr inbounds { ptr, i64, i64 }, ptr %t301, i64 5 + store { ptr, i64, i64 } { ptr @.str.4121, i64 2, i64 0 }, ptr %t307 + %t308 = insertvalue { ptr, i64, i64 } undef, ptr %t301, 0 + %t309 = insertvalue { ptr, i64, i64 } %t308, i64 6, 1 + %t310 = insertvalue { ptr, i64, i64 } %t309, i64 6, 2 + store { ptr, i64, i64 } %t310, ptr %a311 + %t312 = mul i64 6, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) + %t313 = call ptr @finch_alloc(i64 %t312) + %t314 = getelementptr inbounds { ptr, i64, i64 }, ptr %t313, i64 0 + store { ptr, i64, i64 } { ptr @.str.4122, i64 3, i64 0 }, ptr %t314 + %t315 = getelementptr inbounds { ptr, i64, i64 }, ptr %t313, i64 1 + store { ptr, i64, i64 } { ptr @.str.4123, i64 3, i64 0 }, ptr %t315 + %t316 = getelementptr inbounds { ptr, i64, i64 }, ptr %t313, i64 2 + store { ptr, i64, i64 } { ptr @.str.4124, i64 3, i64 0 }, ptr %t316 + %t317 = getelementptr inbounds { ptr, i64, i64 }, ptr %t313, i64 3 + store { ptr, i64, i64 } { ptr @.str.4125, i64 3, i64 0 }, ptr %t317 + %t318 = getelementptr inbounds { ptr, i64, i64 }, ptr %t313, i64 4 + store { ptr, i64, i64 } { ptr @.str.4126, i64 3, i64 0 }, ptr %t318 + %t319 = getelementptr inbounds { ptr, i64, i64 }, ptr %t313, i64 5 + store { ptr, i64, i64 } { ptr @.str.4127, i64 3, i64 0 }, ptr %t319 + %t320 = insertvalue { ptr, i64, i64 } undef, ptr %t313, 0 + %t321 = insertvalue { ptr, i64, i64 } %t320, i64 6, 1 + %t322 = insertvalue { ptr, i64, i64 } %t321, i64 6, 2 + store { ptr, i64, i64 } %t322, ptr %a323 + %t324 = load ptr, ptr %a1 + %t325 = getelementptr inbounds { ptr, i64, i64 }, ptr %a311, i32 0, i32 1 + %t326 = load { ptr, i64, i64 }, ptr %a2 + store i64 -1, ptr %a327 + %t328 = load i64, ptr %t325 + %t329 = load ptr, ptr %a311 + store i64 0, ptr %a330 + br label %find.cond6356 +find.cond6356: + %t331 = load i64, ptr %a330 + %t332 = icmp slt i64 %t331, %t328 + br i1 %t332, label %find.body6357, label %find.end6360 +find.body6357: + %t333 = getelementptr inbounds { ptr, i64, i64 }, ptr %t329, i64 %t331 + %t334 = load { ptr, i64, i64 }, ptr %t333 + store { ptr, i64, i64 } %t334, ptr %a335 + store { ptr, i64, i64 } %t326, ptr %a336 + %t337 = call i32 @finch_str_eq(ptr %a335, ptr %a336) + %t338 = icmp ne i32 %t337, 0 + br i1 %t338, label %find.hit6358, label %find.next6359 +find.hit6358: + store i64 %t331, ptr %a327 + br label %find.end6360 +find.next6359: + %t339 = add i64 %t331, 1 + store i64 %t339, ptr %a330 + br label %find.cond6356 +find.end6360: + %t340 = load i64, ptr %a327 + %t341 = load { ptr, i64, i64 }, ptr %a323 + %t342 = extractvalue { ptr, i64, i64 } %t341, 1 + %t343 = icmp uge i64 %t340, %t342 + br i1 %t343, label %range6361, label %inrange6362 +range6361: + call void @finch_panic_index(ptr @.str.4129, i64 3457, i64 %t340, i64 %t342) unreachable -inrange6002: - %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.3966, 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.3968, 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 - %t308 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t309 = load %S.ast.Type, ptr %t308 - %t310 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t307, %S.ast.Type %t309) - store { ptr, i64, i64 } %t306, 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.3969, 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 - %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.3970, 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 - %t330 = load { ptr, i64, i64 }, ptr %t329 - store { ptr, i64, i64 } %t328, 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 = 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.3971, i64 4, i64 0 }) - %t338 = insertvalue %S.gen.Val %t336, %S.ast.Type %t337, 1 - ret %S.gen.Val %t338 -endif5995: - %t339 = load { ptr, i64, i64 }, ptr %a248 - store { ptr, i64, i64 } %t339, ptr %a340 - store { ptr, i64, i64 } { ptr @.str.3972, 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 %then6003, label %endif6005 -then6003: - %t344 = load i1, ptr %a23 - %t345 = xor i1 %t344, true - br i1 %t345, label %then6006, label %endif6008 -then6006: - %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.3973, i64 115, i64 0 }) - br label %endif6008 -endif6008: - store { ptr, i64, i64 } { ptr @.str.3974, 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.3975, 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 %then6009, label %endif6011 -then6009: - store { ptr, i64, i64 } { ptr @.str.3976, i64 2, i64 0 }, ptr %a348 - br label %endif6011 -endif6011: - %t354 = load ptr, ptr %a1 - %t355 = load { ptr, i64, i64 }, ptr %a348 - store { ptr, i64, i64 } { ptr @.str.3977, 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.3978, i64 5, i64 0 }, ptr %a362 +inrange6362: + %t344 = extractvalue { ptr, i64, i64 } %t341, 0 + %t345 = getelementptr inbounds { ptr, i64, i64 }, ptr %t344, i64 %t340 + %t346 = load { ptr, i64, i64 }, ptr %t345 + store { ptr, i64, i64 } { ptr @.str.4128, i64 5, 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.4130, i64 1, i64 0 }, ptr %a353 + call void @finch_str_concat(ptr %a351, ptr %a352, ptr %a353) + store { ptr, i64, i64 } %t350, ptr %a354 + call void @finch_str_drop(ptr %a354) + %t355 = load { ptr, i64, i64 }, ptr %a351 + %t356 = load ptr, ptr %a1 + %t357 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 + %t358 = load %S.ast.Type, ptr %t357 + %t359 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t356, %S.ast.Type %t358) + store { ptr, i64, i64 } %t355, 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 - %t364 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 0 - %t365 = load { ptr, i64, i64 }, ptr %t364 - store { ptr, i64, i64 } %t363, ptr %a367 - store { ptr, i64, i64 } %t365, ptr %a368 + store { ptr, i64, i64 } %t355, ptr %a363 + call void @finch_str_drop(ptr %a363) + store { ptr, i64, i64 } %t359, ptr %a364 + call void @finch_str_drop(ptr %a364) + %t365 = load { ptr, i64, i64 }, ptr %a360 + store { ptr, i64, i64 } %t365, ptr %a367 + store { ptr, i64, i64 } { ptr @.str.4131, i64 1, i64 0 }, 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.3979, 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 - %t375 = load { ptr, i64, i64 }, ptr %t374 - store { ptr, i64, i64 } %t373, ptr %a377 - store { ptr, i64, i64 } %t375, ptr %a378 - call void @finch_str_concat(ptr %a376, ptr %a377, ptr %a378) - %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.3980, i64 4, i64 0 }) - %t383 = insertvalue %S.gen.Val %t381, %S.ast.Type %t382, 1 - ret %S.gen.Val %t383 -endif6005: - %t384 = load { ptr, i64, i64 }, ptr %a248 - store { ptr, i64, i64 } %t384, ptr %a385 - store { ptr, i64, i64 } { ptr @.str.3981, 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.from6012 -logic.from6012: - br i1 %t388, label %logic.rhs6013, label %logic.end6014 -logic.rhs6013: - %t389 = load i1, ptr %a23 - %t390 = xor i1 %t389, true - br label %logic.rend6015 -logic.rend6015: - br label %logic.end6014 -logic.end6014: - %t391 = phi i1 [ false, %logic.from6012 ], [ %t390, %logic.rend6015 ] - br i1 %t391, label %then6016, label %endif6018 -then6016: - %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 %endif6018 -endif6018: - %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.from6019 -logic.from6019: - br i1 %t400, label %logic.rhs6020, label %logic.end6021 -logic.rhs6020: - %t401 = load { ptr, i64, i64 }, ptr %a248 - store { ptr, i64, i64 } %t401, ptr %a402 - store { ptr, i64, i64 } { ptr @.str.3982, 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.rend6022 -logic.rend6022: - br label %logic.end6021 -logic.end6021: - %t406 = phi i1 [ false, %logic.from6019 ], [ %t405, %logic.rend6022 ] - br label %logic.from6023 -logic.from6023: - br i1 %t406, label %logic.rhs6024, label %logic.end6025 -logic.rhs6024: - %t407 = load { ptr, i64, i64 }, ptr %a248 - store { ptr, i64, i64 } %t407, ptr %a408 - store { ptr, i64, i64 } { ptr @.str.3983, 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.rend6026 -logic.rend6026: - br label %logic.end6025 -logic.end6025: - %t412 = phi i1 [ false, %logic.from6023 ], [ %t411, %logic.rend6026 ] - br i1 %t412, label %then6027, label %endif6029 -then6027: - %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 %endif6029 -endif6029: - %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.3984, 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.3985, 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 - %t433 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t434 = load %S.ast.Type, ptr %t433 - %t435 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t432, %S.ast.Type %t434) - store { ptr, i64, i64 } %t431, 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.3986, 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 - %t445 = load { ptr, i64, i64 }, ptr %t444 - store { ptr, i64, i64 } %t443, 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.3987, 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 - %t455 = load { ptr, i64, i64 }, ptr %t454 - store { ptr, i64, i64 } %t453, ptr %a457 - store { ptr, i64, i64 } %t455, ptr %a458 - call void @finch_str_concat(ptr %a456, ptr %a457, ptr %a458) - %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.3988, i64 4, i64 0 }) - %t463 = insertvalue %S.gen.Val %t461, %S.ast.Type %t462, 1 - ret %S.gen.Val %t463 + store { ptr, i64, i64 } %t365, ptr %a369 + call void @finch_str_drop(ptr %a369) + %t370 = load { ptr, i64, i64 }, ptr %a366 + %t371 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 0 + %t372 = load { ptr, i64, i64 }, ptr %t371 + store { ptr, i64, i64 } %t370, ptr %a374 + store { ptr, i64, i64 } %t372, ptr %a375 + call void @finch_str_concat(ptr %a373, ptr %a374, ptr %a375) + store { ptr, i64, i64 } %t370, ptr %a376 + call void @finch_str_drop(ptr %a376) + %t377 = load { ptr, i64, i64 }, ptr %a373 + store { ptr, i64, i64 } %t377, ptr %a379 + store { ptr, i64, i64 } { ptr @.str.4132, i64 2, i64 0 }, ptr %a380 + call void @finch_str_concat(ptr %a378, ptr %a379, ptr %a380) + store { ptr, i64, i64 } %t377, ptr %a381 + call void @finch_str_drop(ptr %a381) + %t382 = load { ptr, i64, i64 }, ptr %a378 + %t383 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 + %t384 = load { ptr, i64, i64 }, ptr %t383 + store { ptr, i64, i64 } %t382, ptr %a386 + store { ptr, i64, i64 } %t384, ptr %a387 + call void @finch_str_concat(ptr %a385, ptr %a386, ptr %a387) + store { ptr, i64, i64 } %t382, ptr %a388 + call void @finch_str_drop(ptr %a388) + %t389 = load { ptr, i64, i64 }, ptr %a385 + %t390 = call { ptr, i64, i64 } @finch.gen.op(ptr %t324, { ptr, i64, i64 } %t389) + store { ptr, i64, i64 } %t389, ptr %a391 + call void @finch_str_drop(ptr %a391) + %t392 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t390, 0 + %t393 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4133, i64 4, i64 0 }) + %t394 = insertvalue %S.gen.Val %t392, %S.ast.Type %t393, 1 + call void @finch.drop.arr_str(ptr %a323) + call void @finch.drop.arr_str(ptr %a311) + call void @finch_str_drop(ptr %a296) + call void @finch.drop.S_gen_Val(ptr %a10) + call void @finch.drop.S_gen_Val(ptr %a6) + ret %S.gen.Val %t394 +endif6355: + %t395 = load { ptr, i64, i64 }, ptr %a296 + store { ptr, i64, i64 } %t395, ptr %a396 + store { ptr, i64, i64 } { ptr @.str.4134, i64 4, i64 0 }, ptr %a397 + %t398 = call i32 @finch_str_eq(ptr %a396, ptr %a397) + %t399 = icmp ne i32 %t398, 0 + br i1 %t399, label %then6363, label %endif6365 +then6363: + %t400 = load i1, ptr %a23 + %t401 = xor i1 %t400, true + br i1 %t401, label %then6366, label %endif6368 +then6366: + %t402 = load ptr, ptr %a1 + %t403 = load %S.ast.Node, ptr %a11 + call void @finch.gen.fail(ptr %t402, %S.ast.Node %t403, { ptr, i64, i64 } { ptr @.str.4135, i64 115, i64 0 }) + br label %endif6368 +endif6368: + store { ptr, i64, i64 } { ptr @.str.4136, i64 2, i64 0 }, ptr %a404 + %t405 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t405, ptr %a406 + store { ptr, i64, i64 } { ptr @.str.4137, i64 2, i64 0 }, ptr %a407 + %t408 = call i32 @finch_str_eq(ptr %a406, ptr %a407) + %t409 = icmp ne i32 %t408, 0 + br i1 %t409, label %then6369, label %endif6371 +then6369: + %t410 = load { ptr, i64, i64 }, ptr %a404 + store { ptr, i64, i64 } { ptr @.str.4138, i64 2, i64 0 }, ptr %a404 + store { ptr, i64, i64 } %t410, ptr %a411 + call void @finch_str_drop(ptr %a411) + br label %endif6371 +endif6371: + %t412 = load ptr, ptr %a1 + %t413 = load { ptr, i64, i64 }, ptr %a404 + store { ptr, i64, i64 } { ptr @.str.4139, i64 5, i64 0 }, ptr %a415 + store { ptr, i64, i64 } %t413, ptr %a416 + 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.4140, i64 5, i64 0 }, ptr %a420 + call void @finch_str_concat(ptr %a418, ptr %a419, ptr %a420) + store { ptr, i64, i64 } %t417, ptr %a421 + call void @finch_str_drop(ptr %a421) + %t422 = load { ptr, i64, i64 }, ptr %a418 + %t423 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 0 + %t424 = load { ptr, i64, i64 }, ptr %t423 + store { ptr, i64, i64 } %t422, ptr %a426 + store { ptr, i64, i64 } %t424, ptr %a427 + call void @finch_str_concat(ptr %a425, ptr %a426, ptr %a427) + store { ptr, i64, i64 } %t422, ptr %a428 + call void @finch_str_drop(ptr %a428) + %t429 = load { ptr, i64, i64 }, ptr %a425 + store { ptr, i64, i64 } %t429, ptr %a431 + store { ptr, i64, i64 } { ptr @.str.4141, i64 2, i64 0 }, ptr %a432 + call void @finch_str_concat(ptr %a430, ptr %a431, ptr %a432) + store { ptr, i64, i64 } %t429, ptr %a433 + call void @finch_str_drop(ptr %a433) + %t434 = load { ptr, i64, i64 }, ptr %a430 + %t435 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 + %t436 = load { ptr, i64, i64 }, ptr %t435 + store { ptr, i64, i64 } %t434, ptr %a438 + store { ptr, i64, i64 } %t436, ptr %a439 + call void @finch_str_concat(ptr %a437, ptr %a438, ptr %a439) + store { ptr, i64, i64 } %t434, ptr %a440 + call void @finch_str_drop(ptr %a440) + %t441 = load { ptr, i64, i64 }, ptr %a437 + %t442 = call { ptr, i64, i64 } @finch.gen.op(ptr %t412, { ptr, i64, i64 } %t441) + store { ptr, i64, i64 } %t441, ptr %a443 + call void @finch_str_drop(ptr %a443) + %t444 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t442, 0 + %t445 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4142, i64 4, i64 0 }) + %t446 = insertvalue %S.gen.Val %t444, %S.ast.Type %t445, 1 + call void @finch_str_drop(ptr %a404) + call void @finch_str_drop(ptr %a296) + call void @finch.drop.S_gen_Val(ptr %a10) + call void @finch.drop.S_gen_Val(ptr %a6) + ret %S.gen.Val %t446 +endif6365: + %t447 = load { ptr, i64, i64 }, ptr %a296 + store { ptr, i64, i64 } %t447, ptr %a448 + store { ptr, i64, i64 } { ptr @.str.4143, i64 4, i64 0 }, ptr %a449 + %t450 = call i32 @finch_str_eq(ptr %a448, ptr %a449) + %t451 = icmp ne i32 %t450, 0 + br label %logic.from6372 +logic.from6372: + br i1 %t451, label %logic.rhs6373, label %logic.end6374 +logic.rhs6373: + %t452 = load i1, ptr %a23 + %t453 = xor i1 %t452, true + br label %logic.rend6375 +logic.rend6375: + br label %logic.end6374 +logic.end6374: + %t454 = phi i1 [ false, %logic.from6372 ], [ %t453, %logic.rend6375 ] + br i1 %t454, label %then6376, label %endif6378 +then6376: + %t455 = load ptr, ptr %a1 + %t456 = load { ptr, i64, i64 }, ptr %a2 + %t457 = load %S.gen.Val, ptr %a6 + %t458 = load %S.gen.Val, ptr %a10 + %t459 = load %S.ast.Node, ptr %a11 + call void @finch.gen.badOperands(ptr %t455, { ptr, i64, i64 } %t456, %S.gen.Val %t457, %S.gen.Val %t458, %S.ast.Node %t459) + br label %endif6378 +endif6378: + %t460 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 + %t461 = load %S.ast.Type, ptr %t460 + %t462 = call i1 @finch.gen.isInt(%S.ast.Type %t461) + %t463 = xor i1 %t462, true + br label %logic.from6379 +logic.from6379: + br i1 %t463, label %logic.rhs6380, label %logic.end6381 +logic.rhs6380: + %t464 = load { ptr, i64, i64 }, ptr %a296 + store { ptr, i64, i64 } %t464, ptr %a465 + store { ptr, i64, i64 } { ptr @.str.4144, i64 4, i64 0 }, ptr %a466 + %t467 = call i32 @finch_str_eq(ptr %a465, ptr %a466) + %t468 = icmp eq i32 %t467, 0 + br label %logic.rend6382 +logic.rend6382: + br label %logic.end6381 +logic.end6381: + %t469 = phi i1 [ false, %logic.from6379 ], [ %t468, %logic.rend6382 ] + br label %logic.from6383 +logic.from6383: + br i1 %t469, label %logic.rhs6384, label %logic.end6385 +logic.rhs6384: + %t470 = load { ptr, i64, i64 }, ptr %a296 + store { ptr, i64, i64 } %t470, ptr %a471 + store { ptr, i64, i64 } { ptr @.str.4145, i64 4, i64 0 }, ptr %a472 + %t473 = call i32 @finch_str_eq(ptr %a471, ptr %a472) + %t474 = icmp eq i32 %t473, 0 + br label %logic.rend6386 +logic.rend6386: + br label %logic.end6385 +logic.end6385: + %t475 = phi i1 [ false, %logic.from6383 ], [ %t474, %logic.rend6386 ] + br i1 %t475, label %then6387, label %endif6389 +then6387: + %t476 = load ptr, ptr %a1 + %t477 = load { ptr, i64, i64 }, ptr %a2 + %t478 = load %S.gen.Val, ptr %a6 + %t479 = load %S.gen.Val, ptr %a10 + %t480 = load %S.ast.Node, ptr %a11 + call void @finch.gen.badOperands(ptr %t476, { ptr, i64, i64 } %t477, %S.gen.Val %t478, %S.gen.Val %t479, %S.ast.Node %t480) + br label %endif6389 +endif6389: + %t481 = load ptr, ptr %a1 + %t482 = load { ptr, i64, i64 }, ptr %a2 + %t483 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 + %t484 = load %S.ast.Type, ptr %t483 + %t485 = call i1 @finch.gen.isSigned(%S.ast.Type %t484) + %t486 = call { ptr, i64, i64 } @finch.gen.intPred({ ptr, i64, i64 } %t482, i1 %t485) + store { ptr, i64, i64 } { ptr @.str.4146, i64 5, i64 0 }, ptr %a488 + store { ptr, i64, i64 } %t486, ptr %a489 + call void @finch_str_concat(ptr %a487, ptr %a488, ptr %a489) + store { ptr, i64, i64 } %t486, ptr %a490 + call void @finch_str_drop(ptr %a490) + %t491 = load { ptr, i64, i64 }, ptr %a487 + store { ptr, i64, i64 } %t491, ptr %a493 + store { ptr, i64, i64 } { ptr @.str.4147, i64 1, i64 0 }, ptr %a494 + call void @finch_str_concat(ptr %a492, ptr %a493, ptr %a494) + store { ptr, i64, i64 } %t491, ptr %a495 + call void @finch_str_drop(ptr %a495) + %t496 = load { ptr, i64, i64 }, ptr %a492 + %t497 = load ptr, ptr %a1 + %t498 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 + %t499 = load %S.ast.Type, ptr %t498 + %t500 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t497, %S.ast.Type %t499) + store { ptr, i64, i64 } %t496, ptr %a502 + store { ptr, i64, i64 } %t500, ptr %a503 + call void @finch_str_concat(ptr %a501, ptr %a502, ptr %a503) + store { ptr, i64, i64 } %t496, ptr %a504 + call void @finch_str_drop(ptr %a504) + store { ptr, i64, i64 } %t500, ptr %a505 + call void @finch_str_drop(ptr %a505) + %t506 = load { ptr, i64, i64 }, ptr %a501 + store { ptr, i64, i64 } %t506, ptr %a508 + store { ptr, i64, i64 } { ptr @.str.4148, i64 1, i64 0 }, ptr %a509 + call void @finch_str_concat(ptr %a507, ptr %a508, ptr %a509) + store { ptr, i64, i64 } %t506, ptr %a510 + call void @finch_str_drop(ptr %a510) + %t511 = load { ptr, i64, i64 }, ptr %a507 + %t512 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 0 + %t513 = load { ptr, i64, i64 }, ptr %t512 + store { ptr, i64, i64 } %t511, ptr %a515 + store { ptr, i64, i64 } %t513, ptr %a516 + call void @finch_str_concat(ptr %a514, ptr %a515, ptr %a516) + store { ptr, i64, i64 } %t511, ptr %a517 + call void @finch_str_drop(ptr %a517) + %t518 = load { ptr, i64, i64 }, ptr %a514 + store { ptr, i64, i64 } %t518, ptr %a520 + store { ptr, i64, i64 } { ptr @.str.4149, i64 2, i64 0 }, ptr %a521 + call void @finch_str_concat(ptr %a519, ptr %a520, ptr %a521) + store { ptr, i64, i64 } %t518, ptr %a522 + call void @finch_str_drop(ptr %a522) + %t523 = load { ptr, i64, i64 }, ptr %a519 + %t524 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 + %t525 = load { ptr, i64, i64 }, ptr %t524 + store { ptr, i64, i64 } %t523, ptr %a527 + store { ptr, i64, i64 } %t525, ptr %a528 + call void @finch_str_concat(ptr %a526, ptr %a527, ptr %a528) + store { ptr, i64, i64 } %t523, ptr %a529 + call void @finch_str_drop(ptr %a529) + %t530 = load { ptr, i64, i64 }, ptr %a526 + %t531 = call { ptr, i64, i64 } @finch.gen.op(ptr %t481, { ptr, i64, i64 } %t530) + store { ptr, i64, i64 } %t530, ptr %a532 + call void @finch_str_drop(ptr %a532) + %t533 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t531, 0 + %t534 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4150, i64 4, i64 0 }) + %t535 = insertvalue %S.gen.Val %t533, %S.ast.Type %t534, 1 + call void @finch_str_drop(ptr %a296) + call void @finch.drop.S_gen_Val(ptr %a10) + call void @finch.drop.S_gen_Val(ptr %a6) + ret %S.gen.Val %t535 } define internal { ptr, i64, i64 } @finch.gen.intPred({ ptr, i64, i64 } %p0, i1 %p1) { @@ -54210,28 +64078,29 @@ entry: %a2 = alloca i1, align 16 %a14 = alloca { ptr, i64, i64 }, align 16 %a26 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca i64, align 16 - %a44 = alloca i64, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 + %a40 = alloca { ptr, i64, i64 }, align 16 + %a43 = alloca i64, align 16 + %a46 = alloca i64, align 16 + %a51 = alloca { ptr, i64, i64 }, align 16 + %a52 = alloca { ptr, i64, i64 }, align 16 + %a63 = alloca { ptr, i64, i64 }, align 16 + %a64 = alloca { ptr, i64, i64 }, align 16 store { ptr, i64, i64 } %p0, ptr %a1 store i1 %p1, ptr %a2 %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.3989, i64 2, i64 0 }, ptr %t5 + store { ptr, i64, i64 } { ptr @.str.4151, i64 2, i64 0 }, ptr %t5 %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 1 - store { ptr, i64, i64 } { ptr @.str.3990, i64 2, i64 0 }, ptr %t6 + store { ptr, i64, i64 } { ptr @.str.4152, i64 2, i64 0 }, ptr %t6 %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 2 - store { ptr, i64, i64 } { ptr @.str.3991, i64 1, i64 0 }, ptr %t7 + store { ptr, i64, i64 } { ptr @.str.4153, i64 1, i64 0 }, ptr %t7 %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 3 - store { ptr, i64, i64 } { ptr @.str.3992, i64 2, i64 0 }, ptr %t8 + store { ptr, i64, i64 } { ptr @.str.4154, i64 2, i64 0 }, ptr %t8 %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 4 - store { ptr, i64, i64 } { ptr @.str.3993, i64 1, i64 0 }, ptr %t9 + store { ptr, i64, i64 } { ptr @.str.4155, i64 1, i64 0 }, ptr %t9 %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 5 - store { ptr, i64, i64 } { ptr @.str.3994, i64 2, i64 0 }, ptr %t10 + store { ptr, i64, i64 } { ptr @.str.4156, 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 @@ -54239,87 +64108,92 @@ 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.3995, i64 2, i64 0 }, ptr %t17 + store { ptr, i64, i64 } { ptr @.str.4157, i64 2, i64 0 }, ptr %t17 %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 1 - store { ptr, i64, i64 } { ptr @.str.3996, i64 2, i64 0 }, ptr %t18 + store { ptr, i64, i64 } { ptr @.str.4158, i64 2, i64 0 }, ptr %t18 %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 2 - store { ptr, i64, i64 } { ptr @.str.3997, i64 3, i64 0 }, ptr %t19 + store { ptr, i64, i64 } { ptr @.str.4159, i64 3, i64 0 }, ptr %t19 %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 3 - store { ptr, i64, i64 } { ptr @.str.3998, i64 3, i64 0 }, ptr %t20 + store { ptr, i64, i64 } { ptr @.str.4160, i64 3, i64 0 }, ptr %t20 %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 4 - store { ptr, i64, i64 } { ptr @.str.3999, i64 3, i64 0 }, ptr %t21 + store { ptr, i64, i64 } { ptr @.str.4161, i64 3, i64 0 }, ptr %t21 %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 5 - store { ptr, i64, i64 } { ptr @.str.4000, i64 3, i64 0 }, ptr %t22 + store { ptr, i64, i64 } { ptr @.str.4162, 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 %then6030, label %endif6032 -then6030: + br i1 %t27, label %then6390, label %endif6392 +then6390: %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.4001, i64 2, i64 0 }, ptr %t30 + store { ptr, i64, i64 } { ptr @.str.4163, i64 2, i64 0 }, ptr %t30 %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 1 - store { ptr, i64, i64 } { ptr @.str.4002, i64 2, i64 0 }, ptr %t31 + store { ptr, i64, i64 } { ptr @.str.4164, i64 2, i64 0 }, ptr %t31 %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 2 - store { ptr, i64, i64 } { ptr @.str.4003, i64 3, i64 0 }, ptr %t32 + store { ptr, i64, i64 } { ptr @.str.4165, i64 3, i64 0 }, ptr %t32 %t33 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 3 - store { ptr, i64, i64 } { ptr @.str.4004, i64 3, i64 0 }, ptr %t33 + store { ptr, i64, i64 } { ptr @.str.4166, i64 3, i64 0 }, ptr %t33 %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 4 - store { ptr, i64, i64 } { ptr @.str.4005, i64 3, i64 0 }, ptr %t34 + store { ptr, i64, i64 } { ptr @.str.4167, i64 3, i64 0 }, ptr %t34 %t35 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 5 - store { ptr, i64, i64 } { ptr @.str.4006, i64 3, i64 0 }, ptr %t35 + store { ptr, i64, i64 } { ptr @.str.4168, 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 + %t39 = load { ptr, i64, i64 }, ptr %a26 store { ptr, i64, i64 } %t38, ptr %a26 - br label %endif6032 -endif6032: - %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.cond6033 -find.cond6033: - %t45 = load i64, ptr %a44 - %t46 = icmp slt i64 %t45, %t42 - br i1 %t46, label %find.body6034, label %find.end6037 -find.body6034: - %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.hit6035, label %find.next6036 -find.hit6035: - store i64 %t45, ptr %a41 - br label %find.end6037 -find.next6036: - %t53 = add i64 %t45, 1 - store i64 %t53, ptr %a44 - br label %find.cond6033 -find.end6037: - %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 %range6038, label %inrange6039 -range6038: - call void @finch_panic_index(ptr @.str.4007, i64 3221, i64 %t54, i64 %t56) + store { ptr, i64, i64 } %t39, ptr %a40 + call void @finch.drop.arr_str(ptr %a40) + br label %endif6392 +endif6392: + %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 + %t42 = load { ptr, i64, i64 }, ptr %a1 + store i64 -1, ptr %a43 + %t44 = load i64, ptr %t41 + %t45 = load ptr, ptr %a14 + store i64 0, ptr %a46 + br label %find.cond6393 +find.cond6393: + %t47 = load i64, ptr %a46 + %t48 = icmp slt i64 %t47, %t44 + br i1 %t48, label %find.body6394, label %find.end6397 +find.body6394: + %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %t45, i64 %t47 + %t50 = load { ptr, i64, i64 }, ptr %t49 + store { ptr, i64, i64 } %t50, ptr %a51 + store { ptr, i64, i64 } %t42, ptr %a52 + %t53 = call i32 @finch_str_eq(ptr %a51, ptr %a52) + %t54 = icmp ne i32 %t53, 0 + br i1 %t54, label %find.hit6395, label %find.next6396 +find.hit6395: + store i64 %t47, ptr %a43 + br label %find.end6397 +find.next6396: + %t55 = add i64 %t47, 1 + store i64 %t55, ptr %a46 + br label %find.cond6393 +find.end6397: + %t56 = load i64, ptr %a43 + %t57 = load { ptr, i64, i64 }, ptr %a26 + %t58 = extractvalue { ptr, i64, i64 } %t57, 1 + %t59 = icmp uge i64 %t56, %t58 + br i1 %t59, label %range6398, label %inrange6399 +range6398: + call void @finch_panic_index(ptr @.str.4169, i64 3484, i64 %t56, i64 %t58) unreachable -inrange6039: - %t58 = extractvalue { ptr, i64, i64 } %t55, 0 - %t59 = getelementptr inbounds { ptr, i64, i64 }, ptr %t58, i64 %t54 - %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 - ret { ptr, i64, i64 } %t63 +inrange6399: + %t60 = extractvalue { ptr, i64, i64 } %t57, 0 + %t61 = getelementptr inbounds { ptr, i64, i64 }, ptr %t60, i64 %t56 + %t62 = load { ptr, i64, i64 }, ptr %t61 + store { ptr, i64, i64 } %t62, ptr %a63 + call void @finch_str_copy(ptr %a64, ptr %a63) + %t65 = load { ptr, i64, i64 }, ptr %a64 + call void @finch.drop.arr_str(ptr %a26) + call void @finch.drop.arr_str(ptr %a14) + ret { ptr, i64, i64 } %t65 } define internal %S.gen.Val @finch.gen.binary(ptr %p0, %S.ast.Node %p1) { @@ -54344,44 +64218,54 @@ entry: %a79 = alloca { ptr, i64, i64 }, align 16 %a81 = alloca { ptr, i64, i64 }, align 16 %a82 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 + %a86 = alloca { ptr, i64, i64 }, align 16 %a89 = 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 + %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 - %a98 = 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 %a102 = 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 %a107 = 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 - %a114 = alloca { ptr, i64, i64 }, align 16 + %a112 = alloca { ptr, i64, i64 }, align 16 + %a113 = 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 %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca %S.gen.Val, align 16 + %a121 = 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 + %a129 = alloca { ptr, i64, i64 }, align 16 + %a132 = alloca { ptr, i64, i64 }, align 16 %a145 = alloca %S.gen.Val, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = 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 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 + %a151 = alloca i64, align 16 + %a163 = alloca %S.gen.Val, align 16 + %a167 = alloca { ptr, i64, i64 }, align 16 + %a168 = alloca { ptr, i64, i64 }, align 16 + %a172 = alloca { ptr, i64, i64 }, align 16 + %a173 = alloca { ptr, i64, i64 }, align 16 + %a178 = alloca { ptr, i64, i64 }, align 16 + %a179 = alloca { ptr, i64, i64 }, align 16 + %a184 = alloca { ptr, i64, i64 }, align 16 + %a185 = alloca { ptr, i64, i64 }, align 16 + %a190 = alloca { ptr, i64, i64 }, align 16 + %a191 = alloca { ptr, i64, i64 }, align 16 + %a196 = alloca { ptr, i64, i64 }, align 16 + %a197 = 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 @@ -54392,48 +64276,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.4008, i64 2, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.4170, 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.from6040 -logic.from6040: - br i1 %t13, label %logic.end6042, label %logic.rhs6041 -logic.rhs6041: + br label %logic.from6400 +logic.from6400: + br i1 %t13, label %logic.end6402, label %logic.rhs6401 +logic.rhs6401: %t14 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t14, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.4009, i64 2, i64 0 }, ptr %a16 + store { ptr, i64, i64 } { ptr @.str.4171, 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.rend6043 -logic.rend6043: - br label %logic.end6042 -logic.end6042: - %t19 = phi i1 [ true, %logic.from6040 ], [ %t18, %logic.rend6043 ] - br i1 %t19, label %then6044, label %endif6046 -then6044: + br label %logic.rend6403 +logic.rend6403: + br label %logic.end6402 +logic.end6402: + %t19 = phi i1 [ true, %logic.from6400 ], [ %t18, %logic.rend6403 ] + br i1 %t19, label %then6404, label %endif6406 +then6404: %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 %range6047, label %inrange6048 -range6047: - call void @finch_panic_index(ptr @.str.4010, i64 3227, i64 0, i64 %t23) + br i1 %t24, label %range6407, label %inrange6408 +range6407: + call void @finch_panic_index(ptr @.str.4172, i64 3490, i64 0, i64 %t23) unreachable -inrange6048: +inrange6408: %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.4011, i64 10, i64 0 }) + %t31 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t30, { ptr, i64, i64 } { ptr @.str.4173, 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.4012, i64 9, i64 0 }) + %t34 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t33, { ptr, i64, i64 } { ptr @.str.4174, 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.4013, i64 9, i64 0 }) + %t37 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t36, { ptr, i64, i64 } { ptr @.str.4175, i64 9, i64 0 }) store { ptr, i64, i64 } %t37, ptr %a38 %t39 = load ptr, ptr %a1 %t40 = load { ptr, i64, i64 }, ptr %a32 @@ -54443,25 +64327,25 @@ inrange6048: 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.4014, i64 2, i64 0 }, ptr %a45 + store { ptr, i64, i64 } { ptr @.str.4176, 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 %then6049, label %else6050 -then6049: + br i1 %t47, label %then6409, label %else6410 +then6409: %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 %endif6051 -else6050: + br label %endif6411 +else6410: %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 %endif6051 -endif6051: + br label %endif6411 +endif6411: %t56 = load ptr, ptr %a1 %t57 = load { ptr, i64, i64 }, ptr %a35 call void @finch.gen.label(ptr %t56, { ptr, i64, i64 } %t57) @@ -54470,18 +64354,18 @@ endif6051: %t60 = load { ptr, i64, i64 }, ptr %t59 %t61 = extractvalue { ptr, i64, i64 } %t60, 1 %t62 = icmp uge i64 1, %t61 - br i1 %t62, label %range6052, label %inrange6053 -range6052: - call void @finch_panic_index(ptr @.str.4015, i64 3239, i64 1, i64 %t61) + br i1 %t62, label %range6412, label %inrange6413 +range6412: + call void @finch_panic_index(ptr @.str.4177, i64 3502, i64 1, i64 %t61) unreachable -inrange6053: +inrange6413: %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.4016, i64 10, i64 0 }) + %t69 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t68, { ptr, i64, i64 } { ptr @.str.4178, i64 10, i64 0 }) store { ptr, i64, i64 } %t69, ptr %a70 %t71 = load ptr, ptr %a1 %t72 = load { ptr, i64, i64 }, ptr %a70 @@ -54495,182 +64379,232 @@ inrange6053: %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.4017, i64 4, i64 0 }, ptr %a79 + store { ptr, i64, i64 } { ptr @.str.4179, 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.4018, i64 2, i64 0 }, ptr %a82 + store { ptr, i64, i64 } { ptr @.str.4180, 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 %then6054, label %endif6056 -then6054: - store { ptr, i64, i64 } { ptr @.str.4019, i64 5, i64 0 }, ptr %a79 - br label %endif6056 -endif6056: - %t85 = load ptr, ptr %a1 - %t86 = load { ptr, i64, i64 }, ptr %a79 - store { ptr, i64, i64 } { ptr @.str.4020, 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.4021, 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 - store { ptr, i64, i64 } %t94, 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.4022, 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 - store { ptr, i64, i64 } %t103, ptr %a106 - store { ptr, i64, i64 } %t104, 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 %a110 - store { ptr, i64, i64 } { ptr @.str.4023, 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 - store { ptr, i64, i64 } %t112, 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.4024, 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.4025, i64 4, i64 0 }) - %t125 = insertvalue %S.gen.Val %t123, %S.ast.Type %t124, 1 - ret %S.gen.Val %t125 -endif6046: - %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 %range6057, label %inrange6058 -range6057: - call void @finch_panic_index(ptr @.str.4026, i64 3251, i64 0, i64 %t129) - unreachable -inrange6058: - %t131 = extractvalue { ptr, i64, i64 } %t128, 0 - %t132 = getelementptr inbounds %S.ast.Node, ptr %t131, i64 0 - %t133 = load %S.ast.Node, ptr %t132 - %t134 = call %S.gen.Val @finch.gen.expr(ptr %t126, %S.ast.Node %t133) - store %S.gen.Val %t134, ptr %a135 + br i1 %t84, label %then6414, label %endif6416 +then6414: + %t85 = load { ptr, i64, i64 }, ptr %a79 + store { ptr, i64, i64 } { ptr @.str.4181, i64 5, i64 0 }, ptr %a79 + store { ptr, i64, i64 } %t85, ptr %a86 + call void @finch_str_drop(ptr %a86) + br label %endif6416 +endif6416: + %t87 = load ptr, ptr %a1 + %t88 = load { ptr, i64, i64 }, ptr %a79 + store { ptr, i64, i64 } { ptr @.str.4182, i64 9, i64 0 }, ptr %a90 + store { ptr, i64, i64 } %t88, ptr %a91 + call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) + %t92 = load { ptr, i64, i64 }, ptr %a89 + store { ptr, i64, i64 } %t92, ptr %a94 + store { ptr, i64, i64 } { ptr @.str.4183, i64 3, i64 0 }, ptr %a95 + call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) + store { ptr, i64, i64 } %t92, ptr %a96 + call void @finch_str_drop(ptr %a96) + %t97 = load { ptr, i64, i64 }, ptr %a93 + %t98 = load { ptr, i64, i64 }, ptr %a32 + store { ptr, i64, i64 } %t97, ptr %a100 + store { ptr, i64, i64 } %t98, ptr %a101 + call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) + store { ptr, i64, i64 } %t97, ptr %a102 + call void @finch_str_drop(ptr %a102) + %t103 = load { ptr, i64, i64 }, ptr %a99 + store { ptr, i64, i64 } %t103, ptr %a105 + store { ptr, i64, i64 } { ptr @.str.4184, i64 6, i64 0 }, ptr %a106 + call void @finch_str_concat(ptr %a104, ptr %a105, ptr %a106) + store { ptr, i64, i64 } %t103, ptr %a107 + call void @finch_str_drop(ptr %a107) + %t108 = load { ptr, i64, i64 }, ptr %a104 + %t109 = load { ptr, i64, i64 }, ptr %a67 + store { ptr, i64, i64 } %t108, ptr %a111 + store { ptr, i64, i64 } %t109, ptr %a112 + call void @finch_str_concat(ptr %a110, ptr %a111, ptr %a112) + store { ptr, i64, i64 } %t108, ptr %a113 + call void @finch_str_drop(ptr %a113) + %t114 = load { ptr, i64, i64 }, ptr %a110 + store { ptr, i64, i64 } %t114, ptr %a116 + store { ptr, i64, i64 } { ptr @.str.4185, i64 3, i64 0 }, ptr %a117 + call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) + store { ptr, i64, i64 } %t114, ptr %a118 + call void @finch_str_drop(ptr %a118) + %t119 = load { ptr, i64, i64 }, ptr %a115 + %t120 = load { ptr, i64, i64 }, ptr %a70 + store { ptr, i64, i64 } %t119, ptr %a122 + store { ptr, i64, i64 } %t120, ptr %a123 + call void @finch_str_concat(ptr %a121, ptr %a122, ptr %a123) + store { ptr, i64, i64 } %t119, ptr %a124 + call void @finch_str_drop(ptr %a124) + %t125 = load { ptr, i64, i64 }, ptr %a121 + store { ptr, i64, i64 } %t125, ptr %a127 + store { ptr, i64, i64 } { ptr @.str.4186, i64 2, i64 0 }, ptr %a128 + call void @finch_str_concat(ptr %a126, ptr %a127, ptr %a128) + store { ptr, i64, i64 } %t125, ptr %a129 + call void @finch_str_drop(ptr %a129) + %t130 = load { ptr, i64, i64 }, ptr %a126 + %t131 = call { ptr, i64, i64 } @finch.gen.op(ptr %t87, { ptr, i64, i64 } %t130) + store { ptr, i64, i64 } %t130, ptr %a132 + call void @finch_str_drop(ptr %a132) + %t133 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t131, 0 + %t134 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4187, i64 4, i64 0 }) + %t135 = insertvalue %S.gen.Val %t133, %S.ast.Type %t134, 1 + call void @finch_str_drop(ptr %a79) + call void @finch_str_drop(ptr %a70) + call void @finch_str_drop(ptr %a67) + call void @finch_str_drop(ptr %a38) + call void @finch_str_drop(ptr %a35) + call void @finch_str_drop(ptr %a32) + call void @finch_str_drop(ptr %a29) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t135 +endif6406: %t136 = load ptr, ptr %a1 %t137 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t138 = load { ptr, i64, i64 }, ptr %t137 %t139 = extractvalue { ptr, i64, i64 } %t138, 1 - %t140 = icmp uge i64 1, %t139 - br i1 %t140, label %range6059, label %inrange6060 -range6059: - call void @finch_panic_index(ptr @.str.4027, i64 3252, i64 1, i64 %t139) + %t140 = icmp uge i64 0, %t139 + br i1 %t140, label %range6417, label %inrange6418 +range6417: + call void @finch_panic_index(ptr @.str.4188, i64 3514, i64 0, i64 %t139) unreachable -inrange6060: +inrange6418: %t141 = extractvalue { ptr, i64, i64 } %t138, 0 - %t142 = getelementptr inbounds %S.ast.Node, ptr %t141, i64 1 + %t142 = getelementptr inbounds %S.ast.Node, ptr %t141, i64 0 %t143 = load %S.ast.Node, ptr %t142 %t144 = call %S.gen.Val @finch.gen.expr(ptr %t136, %S.ast.Node %t143) 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.4028, 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.from6061 -logic.from6061: - br i1 %t150, label %logic.end6063, label %logic.rhs6062 -logic.rhs6062: - %t151 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t151, ptr %a152 - store { ptr, i64, i64 } { ptr @.str.4029, 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.rend6064 -logic.rend6064: - br label %logic.end6063 -logic.end6063: - %t156 = phi i1 [ true, %logic.from6061 ], [ %t155, %logic.rend6064 ] - br label %logic.from6065 -logic.from6065: - br i1 %t156, label %logic.end6067, label %logic.rhs6066 -logic.rhs6066: - %t157 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t157, ptr %a158 - store { ptr, i64, i64 } { ptr @.str.4030, 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.rend6068 -logic.rend6068: - br label %logic.end6067 -logic.end6067: - %t162 = phi i1 [ true, %logic.from6065 ], [ %t161, %logic.rend6068 ] - br label %logic.from6069 -logic.from6069: - br i1 %t162, label %logic.end6071, label %logic.rhs6070 -logic.rhs6070: - %t163 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t163, ptr %a164 - store { ptr, i64, i64 } { ptr @.str.4031, 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.rend6072 -logic.rend6072: - br label %logic.end6071 -logic.end6071: - %t168 = phi i1 [ true, %logic.from6069 ], [ %t167, %logic.rend6072 ] - br label %logic.from6073 -logic.from6073: - br i1 %t168, label %logic.end6075, label %logic.rhs6074 -logic.rhs6074: - %t169 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t169, ptr %a170 - store { ptr, i64, i64 } { ptr @.str.4032, 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.rend6076 -logic.rend6076: - br label %logic.end6075 -logic.end6075: - %t174 = phi i1 [ true, %logic.from6073 ], [ %t173, %logic.rend6076 ] - br label %logic.from6077 -logic.from6077: - br i1 %t174, label %logic.end6079, label %logic.rhs6078 -logic.rhs6078: - %t175 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t175, ptr %a176 - store { ptr, i64, i64 } { ptr @.str.4033, 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.rend6080 -logic.rend6080: - br label %logic.end6079 -logic.end6079: - %t180 = phi i1 [ true, %logic.from6077 ], [ %t179, %logic.rend6080 ] - br i1 %t180, label %then6081, label %endif6083 -then6081: - %t181 = load ptr, ptr %a1 - %t182 = load { ptr, i64, i64 }, ptr %a8 - %t183 = load %S.gen.Val, ptr %a135 - %t184 = load %S.gen.Val, ptr %a145 - %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 -endif6083: - %t187 = load ptr, ptr %a1 - %t188 = load { ptr, i64, i64 }, ptr %a8 - %t189 = load %S.gen.Val, ptr %a135 - %t190 = load %S.gen.Val, ptr %a145 - %t191 = load %S.ast.Node, ptr %a2 - %t192 = call %S.gen.Val @finch.gen.arith(ptr %t187, { ptr, i64, i64 } %t188, %S.gen.Val %t189, %S.gen.Val %t190, %S.ast.Node %t191) - ret %S.gen.Val %t192 + %t146 = load ptr, ptr %a1 + %t147 = icmp eq ptr %t146, null + br i1 %t147, label %panic6419, label %ok6420 +panic6419: + call void @finch_panic(ptr @.str.4189, i64 3515, ptr @.str.4190) + unreachable +ok6420: + %t148 = getelementptr inbounds %S.gen.Gen, ptr %t146, i32 0, i32 11 + %t149 = getelementptr inbounds { ptr, i64, i64 }, ptr %t148, i32 0, i32 1 + %t150 = load i64, ptr %t149 + store i64 %t150, ptr %a151 + %t152 = load ptr, ptr %a1 + %t153 = load %S.gen.Val, ptr %a145 + call void @finch.gen.hold(ptr %t152, %S.gen.Val %t153) + %t154 = load ptr, ptr %a1 + %t155 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t156 = load { ptr, i64, i64 }, ptr %t155 + %t157 = extractvalue { ptr, i64, i64 } %t156, 1 + %t158 = icmp uge i64 1, %t157 + br i1 %t158, label %range6421, label %inrange6422 +range6421: + call void @finch_panic_index(ptr @.str.4191, i64 3517, i64 1, i64 %t157) + unreachable +inrange6422: + %t159 = extractvalue { ptr, i64, i64 } %t156, 0 + %t160 = getelementptr inbounds %S.ast.Node, ptr %t159, i64 1 + %t161 = load %S.ast.Node, ptr %t160 + %t162 = call %S.gen.Val @finch.gen.expr(ptr %t154, %S.ast.Node %t161) + store %S.gen.Val %t162, ptr %a163 + %t164 = load ptr, ptr %a1 + %t165 = load i64, ptr %a151 + call void @finch.gen.heldEnd(ptr %t164, i64 %t165) + %t166 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t166, ptr %a167 + store { ptr, i64, i64 } { ptr @.str.4192, i64 2, i64 0 }, ptr %a168 + %t169 = call i32 @finch_str_eq(ptr %a167, ptr %a168) + %t170 = icmp ne i32 %t169, 0 + br label %logic.from6423 +logic.from6423: + br i1 %t170, label %logic.end6425, label %logic.rhs6424 +logic.rhs6424: + %t171 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t171, ptr %a172 + store { ptr, i64, i64 } { ptr @.str.4193, i64 2, i64 0 }, ptr %a173 + %t174 = call i32 @finch_str_eq(ptr %a172, ptr %a173) + %t175 = icmp ne i32 %t174, 0 + br label %logic.rend6426 +logic.rend6426: + br label %logic.end6425 +logic.end6425: + %t176 = phi i1 [ true, %logic.from6423 ], [ %t175, %logic.rend6426 ] + br label %logic.from6427 +logic.from6427: + br i1 %t176, label %logic.end6429, label %logic.rhs6428 +logic.rhs6428: + %t177 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t177, ptr %a178 + store { ptr, i64, i64 } { ptr @.str.4194, i64 1, i64 0 }, ptr %a179 + %t180 = call i32 @finch_str_eq(ptr %a178, ptr %a179) + %t181 = icmp ne i32 %t180, 0 + br label %logic.rend6430 +logic.rend6430: + br label %logic.end6429 +logic.end6429: + %t182 = phi i1 [ true, %logic.from6427 ], [ %t181, %logic.rend6430 ] + br label %logic.from6431 +logic.from6431: + br i1 %t182, label %logic.end6433, label %logic.rhs6432 +logic.rhs6432: + %t183 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t183, ptr %a184 + store { ptr, i64, i64 } { ptr @.str.4195, i64 2, i64 0 }, ptr %a185 + %t186 = call i32 @finch_str_eq(ptr %a184, ptr %a185) + %t187 = icmp ne i32 %t186, 0 + br label %logic.rend6434 +logic.rend6434: + br label %logic.end6433 +logic.end6433: + %t188 = phi i1 [ true, %logic.from6431 ], [ %t187, %logic.rend6434 ] + br label %logic.from6435 +logic.from6435: + br i1 %t188, label %logic.end6437, label %logic.rhs6436 +logic.rhs6436: + %t189 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t189, ptr %a190 + store { ptr, i64, i64 } { ptr @.str.4196, i64 1, i64 0 }, ptr %a191 + %t192 = call i32 @finch_str_eq(ptr %a190, ptr %a191) + %t193 = icmp ne i32 %t192, 0 + br label %logic.rend6438 +logic.rend6438: + br label %logic.end6437 +logic.end6437: + %t194 = phi i1 [ true, %logic.from6435 ], [ %t193, %logic.rend6438 ] + br label %logic.from6439 +logic.from6439: + br i1 %t194, label %logic.end6441, label %logic.rhs6440 +logic.rhs6440: + %t195 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t195, ptr %a196 + store { ptr, i64, i64 } { ptr @.str.4197, i64 2, i64 0 }, ptr %a197 + %t198 = call i32 @finch_str_eq(ptr %a196, ptr %a197) + %t199 = icmp ne i32 %t198, 0 + br label %logic.rend6442 +logic.rend6442: + br label %logic.end6441 +logic.end6441: + %t200 = phi i1 [ true, %logic.from6439 ], [ %t199, %logic.rend6442 ] + br i1 %t200, label %then6443, label %endif6445 +then6443: + %t201 = load ptr, ptr %a1 + %t202 = load { ptr, i64, i64 }, ptr %a8 + %t203 = load %S.gen.Val, ptr %a145 + %t204 = load %S.gen.Val, ptr %a163 + %t205 = load %S.ast.Node, ptr %a2 + %t206 = call %S.gen.Val @finch.gen.compare(ptr %t201, { ptr, i64, i64 } %t202, %S.gen.Val %t203, %S.gen.Val %t204, %S.ast.Node %t205) + call void @finch.drop.S_gen_Val(ptr %a163) + call void @finch.drop.S_gen_Val(ptr %a145) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t206 +endif6445: + %t207 = load ptr, ptr %a1 + %t208 = load { ptr, i64, i64 }, ptr %a8 + %t209 = load %S.gen.Val, ptr %a145 + %t210 = load %S.gen.Val, ptr %a163 + %t211 = load %S.ast.Node, ptr %a2 + %t212 = call %S.gen.Val @finch.gen.arith(ptr %t207, { ptr, i64, i64 } %t208, %S.gen.Val %t209, %S.gen.Val %t210, %S.ast.Node %t211) + call void @finch.drop.S_gen_Val(ptr %a163) + call void @finch.drop.S_gen_Val(ptr %a145) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t212 } define internal %S.gen.Val @finch.gen.arrayLit(ptr %p0, %S.ast.Node %p1, %S.ast.Type %p2) { @@ -54683,377 +64617,532 @@ entry: %a9 = alloca { ptr, i64, i64 }, align 16 %a19 = alloca %S.ast.Type, align 16 %a20 = alloca %S.ast.Type, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca i64, align 16 - %a38 = alloca %S.ast.Node, align 16 - %a39 = alloca %S.gen.Val, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca %S.ast.Type, align 16 - %a52 = alloca %S.ast.Type, align 16 - %a75 = alloca %S.ast.Type, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = 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 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 + %a23 = alloca %S.ast.Type, align 16 + %a30 = alloca { ptr, i64, i64 }, align 16 + %a36 = alloca i64, align 16 + %a38 = alloca i64, align 16 + %a46 = alloca %S.ast.Node, align 16 + %a47 = alloca %S.gen.Val, align 16 + %a50 = alloca { ptr, i64, i64 }, align 16 + %a51 = alloca { ptr, i64, i64 }, align 16 + %a58 = alloca %S.gen.Val, align 16 + %a61 = alloca %S.ast.Type, align 16 + %a62 = alloca %S.ast.Type, align 16 + %a65 = alloca %S.ast.Type, align 16 + %a71 = alloca %S.gen.Val, align 16 + %a78 = alloca %S.gen.Val, align 16 + %a97 = 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 - %a103 = 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 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca i64, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 + %a102 = alloca %S.ast.Type, align 16 + %a103 = alloca %S.ast.Type, align 16 + %a107 = alloca %S.gen.Val, align 16 + %a114 = alloca %S.ast.Type, align 16 + %a117 = alloca { ptr, i64, i64 }, align 16 + %a119 = alloca { ptr, i64, i64 }, align 16 + %a120 = 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 + %a132 = alloca { ptr, i64, i64 }, align 16 %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a137 = 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 + %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 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a170 = 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 + %a156 = alloca { ptr, i64, i64 }, align 16 + %a159 = alloca { ptr, i64, i64 }, align 16 + %a161 = alloca { ptr, i64, i64 }, align 16 + %a164 = alloca i64, align 16 %a171 = alloca { ptr, i64, i64 }, align 16 %a172 = alloca { ptr, i64, i64 }, align 16 - %a175 = 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 %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 %a182 = 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 %a187 = alloca { ptr, i64, i64 }, align 16 %a188 = alloca { ptr, i64, i64 }, align 16 %a189 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 + %a190 = alloca { ptr, i64, i64 }, align 16 %a193 = 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 + %a198 = alloca { ptr, i64, i64 }, align 16 %a199 = 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 %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a205 = 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 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca %S.ast.Type, align 16 - %a225 = alloca %S.ast.Type, align 16 + %a216 = alloca { ptr, i64, i64 }, align 16 + %a221 = alloca { ptr, i64, i64 }, align 16 + %a222 = alloca { ptr, i64, i64 }, align 16 + %a223 = alloca { ptr, i64, i64 }, align 16 + %a225 = 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 + %a231 = alloca { ptr, i64, i64 }, align 16 + %a232 = alloca { ptr, i64, i64 }, align 16 + %a235 = alloca { ptr, i64, i64 }, align 16 + %a236 = alloca { ptr, i64, i64 }, align 16 + %a237 = alloca { ptr, i64, i64 }, align 16 + %a239 = 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 + %a245 = 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 + %a250 = 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 + %a256 = alloca { ptr, i64, i64 }, align 16 + %a257 = 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 + %a267 = 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 + %a273 = 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 + %a278 = alloca { ptr, i64, i64 }, align 16 + %a281 = alloca { ptr, i64, i64 }, align 16 + %a282 = alloca { ptr, i64, i64 }, align 16 + %a284 = alloca { ptr, i64, i64 }, align 16 + %a285 = alloca { ptr, i64, i64 }, align 16 + %a289 = alloca %S.ast.Type, align 16 + %a290 = alloca %S.ast.Type, align 16 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.4034, i64 4, i64 0 }) + %t4 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4198, 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.4035, i64 5, i64 0 }, ptr %a9 + store { ptr, i64, i64 } { ptr @.str.4199, 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 %then6084, label %else6085 -then6084: + br i1 %t11, label %then6446, label %else6447 +then6446: %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 %range6087, label %inrange6088 -range6087: - call void @finch_panic_index(ptr @.str.4036, i64 3262, i64 0, i64 %t14) + br i1 %t15, label %range6449, label %inrange6450 +range6449: + call void @finch_panic_index(ptr @.str.4200, i64 3528, i64 0, i64 %t14) unreachable -inrange6088: +inrange6450: %t16 = extractvalue { ptr, i64, i64 } %t13, 0 %t17 = getelementptr inbounds %S.ast.Type, ptr %t16, i64 0 %t18 = load %S.ast.Type, ptr %t17 store %S.ast.Type %t18, ptr %a19 call void @finch.copy.S_ast_Type(ptr %a20, ptr %a19) %t21 = load %S.ast.Type, ptr %a20 + %t22 = load %S.ast.Type, ptr %a5 store %S.ast.Type %t21, ptr %a5 - br label %endif6086 -else6085: - %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 %then6089, label %endif6091 -then6089: - %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.4037, i64 47, i64 0 }) - br label %endif6091 -endif6091: - br label %endif6086 -endif6086: - 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.cond6092 -each.cond6092: - %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.body6093, label %each.end6095 -each.body6093: - %t35 = load ptr, ptr %t29 - %t36 = getelementptr inbounds %S.ast.Node, ptr %t35, i64 %t33 - %t37 = load %S.ast.Node, ptr %t36 - store %S.ast.Node %t37, ptr %a38 - store %S.gen.Val zeroinitializer, ptr %a39 - %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.4038, 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 %then6096, label %else6097 -then6096: - %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) - store %S.gen.Val %t48, ptr %a39 - %t49 = getelementptr inbounds %S.gen.Val, ptr %a39, i32 0, i32 1 - %t50 = load %S.ast.Type, ptr %t49 - store %S.ast.Type %t50, ptr %a51 - 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 %endif6098 -else6097: - %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 %endif6098 -endif6098: - %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.4039, 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 - %t65 = load %S.gen.Val, ptr %a39 - %t66 = call { ptr, i64, i64 } @finch.gen.own(ptr %t64, %S.gen.Val %t65) - %t67 = load i64, ptr %t63 - %t68 = add i64 %t67, 1 - call void @finch_arr_reserve(ptr %a28, i64 %t68, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t69 = load ptr, ptr %a28 - %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.step6094 -each.step6094: - %t71 = load i64, ptr %a30 - %t72 = add i64 %t71, 1 - store i64 %t72, ptr %a30 - br label %each.cond6092 -each.end6095: - %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 - %t76 = getelementptr inbounds { ptr, i64, i64 }, ptr %a28, i32 0, i32 1 - %t77 = load i64, ptr %t76 - 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.4040, 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 %then6099, label %endif6101 -then6099: - %t85 = load ptr, ptr %a1 - %t86 = load { ptr, i64, i64 }, ptr %a80 - store { ptr, i64, i64 } { ptr @.str.4041, 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.4042, 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 - %t96 = load %S.ast.Type, ptr %a5 - %t97 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t95, %S.ast.Type %t96) - store { ptr, i64, i64 } %t94, 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 = call { ptr, i64, i64 } @finch.gen.op(ptr %t85, { ptr, i64, i64 } %t101) - 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.4043, 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.4044, 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 %endif6101 -endif6101: - %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.cond6102 -for.cond6102: - %t118 = load i64, ptr %a117 - %t119 = icmp slt i64 %t118, %t116 - br i1 %t119, label %for.body6103, label %for.end6105 -for.body6103: - %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.4045, 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.4046, 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 - store { ptr, i64, i64 } %t131, 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.4047, 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 - call void @finch_str_from_int(ptr %a142, i64 %t141) - %t143 = load { ptr, i64, i64 }, ptr %a142 - store { ptr, i64, i64 } %t140, ptr %a145 - store { ptr, i64, i64 } %t143, ptr %a146 - call void @finch_str_concat(ptr %a144, ptr %a145, ptr %a146) - %t147 = load { ptr, i64, i64 }, ptr %a144 - %t148 = call { ptr, i64, i64 } @finch.gen.op(ptr %t120, { ptr, i64, i64 } %t147) - store { ptr, i64, i64 } %t148, ptr %a149 - %t150 = load ptr, ptr %a1 - %t151 = load ptr, ptr %a1 - %t152 = load %S.ast.Type, ptr %a5 - %t153 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t151, %S.ast.Type %t152) - %t154 = load i64, ptr %a117 - %t155 = load { ptr, i64, i64 }, ptr %a28 - %t156 = extractvalue { ptr, i64, i64 } %t155, 1 - %t157 = icmp uge i64 %t154, %t156 - br i1 %t157, label %range6106, label %inrange6107 -range6106: - call void @finch_panic_index(ptr @.str.4048, i64 3287, i64 %t154, i64 %t156) + store %S.ast.Type %t22, ptr %a23 + call void @finch.drop.S_ast_Type(ptr %a23) + br label %endif6448 +else6447: + %t24 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t25 = getelementptr inbounds { ptr, i64, i64 }, ptr %t24, i32 0, i32 1 + %t26 = load i64, ptr %t25 + %t27 = icmp eq i64 %t26, 0 + br i1 %t27, label %then6451, label %endif6453 +then6451: + %t28 = load ptr, ptr %a1 + %t29 = load %S.ast.Node, ptr %a2 + call void @finch.gen.fail(ptr %t28, %S.ast.Node %t29, { ptr, i64, i64 } { ptr @.str.4201, i64 47, i64 0 }) + br label %endif6453 +endif6453: + br label %endif6448 +endif6448: + store { ptr, i64, i64 } zeroinitializer, ptr %a30 + %t31 = load ptr, ptr %a1 + %t32 = icmp eq ptr %t31, null + br i1 %t32, label %panic6454, label %ok6455 +panic6454: + call void @finch_panic(ptr @.str.4202, i64 3533, ptr @.str.4203) unreachable -inrange6107: - %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.step6104 -for.step6104: - %t162 = load i64, ptr %a117 - %t163 = add i64 %t162, 1 - store i64 %t163, ptr %a117 - br label %for.cond6102 -for.end6105: - %t164 = load ptr, ptr %a1 - %t165 = load { ptr, i64, i64 }, ptr %a81 - store { ptr, i64, i64 } { ptr @.str.4049, 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.4050, 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.4051, 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.4052, i64 6, i64 0 }, ptr %a184 +ok6455: + %t33 = getelementptr inbounds %S.gen.Gen, ptr %t31, i32 0, i32 11 + %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t33, i32 0, i32 1 + %t35 = load i64, ptr %t34 + store i64 %t35, ptr %a36 + %t37 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + store i64 0, ptr %a38 + br label %each.cond6456 +each.cond6456: + %t39 = getelementptr inbounds { ptr, i64, i64 }, ptr %t37, i32 0, i32 1 + %t40 = load i64, ptr %t39 + %t41 = load i64, ptr %a38 + %t42 = icmp slt i64 %t41, %t40 + br i1 %t42, label %each.body6457, label %each.end6459 +each.body6457: + %t43 = load ptr, ptr %t37 + %t44 = getelementptr inbounds %S.ast.Node, ptr %t43, i64 %t41 + %t45 = load %S.ast.Node, ptr %t44 + store %S.ast.Node %t45, ptr %a46 + store %S.gen.Val zeroinitializer, ptr %a47 + %t48 = getelementptr inbounds %S.ast.Type, ptr %a5, i32 0, i32 0 + %t49 = load { ptr, i64, i64 }, ptr %t48 + store { ptr, i64, i64 } %t49, ptr %a50 + store { ptr, i64, i64 } { ptr @.str.4204, i64 4, i64 0 }, ptr %a51 + %t52 = call i32 @finch_str_eq(ptr %a50, ptr %a51) + %t53 = icmp ne i32 %t52, 0 + br i1 %t53, label %then6460, label %else6461 +then6460: + %t54 = load ptr, ptr %a1 + %t55 = load %S.ast.Node, ptr %a46 + %t56 = call %S.gen.Val @finch.gen.expr(ptr %t54, %S.ast.Node %t55) + %t57 = load %S.gen.Val, ptr %a47 + store %S.gen.Val %t56, ptr %a47 + store %S.gen.Val %t57, ptr %a58 + call void @finch.drop.S_gen_Val(ptr %a58) + %t59 = getelementptr inbounds %S.gen.Val, ptr %a47, i32 0, i32 1 + %t60 = load %S.ast.Type, ptr %t59 + store %S.ast.Type %t60, ptr %a61 + call void @finch.copy.S_ast_Type(ptr %a62, ptr %a61) + %t63 = load %S.ast.Type, ptr %a62 + %t64 = load %S.ast.Type, ptr %a5 + store %S.ast.Type %t63, ptr %a5 + store %S.ast.Type %t64, ptr %a65 + call void @finch.drop.S_ast_Type(ptr %a65) + br label %endif6462 +else6461: + %t66 = load ptr, ptr %a1 + %t67 = load %S.ast.Node, ptr %a46 + %t68 = load %S.ast.Type, ptr %a5 + %t69 = call %S.gen.Val @finch.gen.exprWant(ptr %t66, %S.ast.Node %t67, %S.ast.Type %t68) + %t70 = load %S.gen.Val, ptr %a47 + store %S.gen.Val %t69, ptr %a47 + store %S.gen.Val %t70, ptr %a71 + call void @finch.drop.S_gen_Val(ptr %a71) + br label %endif6462 +endif6462: + %t72 = load ptr, ptr %a1 + %t73 = load %S.gen.Val, ptr %a47 + %t74 = load %S.ast.Type, ptr %a5 + %t75 = load %S.ast.Node, ptr %a46 + %t76 = call %S.gen.Val @finch.gen.coerce(ptr %t72, %S.gen.Val %t73, %S.ast.Type %t74, %S.ast.Node %t75, { ptr, i64, i64 } { ptr @.str.4205, i64 27, i64 0 }) + %t77 = load %S.gen.Val, ptr %a47 + store %S.gen.Val %t76, ptr %a47 + store %S.gen.Val %t77, ptr %a78 + call void @finch.drop.S_gen_Val(ptr %a78) + %t79 = getelementptr inbounds { ptr, i64, i64 }, ptr %a30, i32 0, i32 1 + %t80 = load ptr, ptr %a1 + %t81 = load %S.gen.Val, ptr %a47 + %t82 = call { ptr, i64, i64 } @finch.gen.own(ptr %t80, %S.gen.Val %t81) + %t83 = load i64, ptr %t79 + %t84 = add i64 %t83, 1 + call void @finch_arr_reserve(ptr %a30, i64 %t84, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t85 = load ptr, ptr %a30 + %t86 = getelementptr inbounds { ptr, i64, i64 }, ptr %t85, i64 %t83 + store { ptr, i64, i64 } %t82, ptr %t86 + store i64 %t84, ptr %t79 + %t87 = load ptr, ptr %a1 + %t88 = getelementptr inbounds { ptr, i64, i64 }, ptr %a30, i32 0, i32 1 + %t89 = load i64, ptr %t88 + %t90 = sub i64 %t89, 1 + %t91 = load { ptr, i64, i64 }, ptr %a30 + %t92 = extractvalue { ptr, i64, i64 } %t91, 1 + %t93 = icmp uge i64 %t90, %t92 + br i1 %t93, label %range6463, label %inrange6464 +range6463: + call void @finch_panic_index(ptr @.str.4206, i64 3544, i64 %t90, i64 %t92) + unreachable +inrange6464: + %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 + %t100 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t99, 0 + %t101 = load %S.ast.Type, ptr %a5 + store %S.ast.Type %t101, ptr %a102 + call void @finch.copy.S_ast_Type(ptr %a103, ptr %a102) + %t104 = load %S.ast.Type, ptr %a103 + %t105 = insertvalue %S.gen.Val %t100, %S.ast.Type %t104, 1 + %t106 = insertvalue %S.gen.Val %t105, i1 true, 2 + call void @finch.gen.hold(ptr %t87, %S.gen.Val %t106) + store %S.gen.Val %t106, ptr %a107 + call void @finch.drop.S_gen_Val(ptr %a107) + call void @finch.drop.S_gen_Val(ptr %a47) + br label %each.step6458 +each.step6458: + %t108 = load i64, ptr %a38 + %t109 = add i64 %t108, 1 + store i64 %t109, ptr %a38 + br label %each.cond6456 +each.end6459: + %t110 = load ptr, ptr %a1 + %t111 = load i64, ptr %a36 + call void @finch.gen.heldEnd(ptr %t110, i64 %t111) + %t112 = load %S.ast.Type, ptr %a5 + %t113 = call %S.ast.Type @finch.ast.arrayOf(%S.ast.Type %t112) + store %S.ast.Type %t113, ptr %a114 + %t115 = getelementptr inbounds { ptr, i64, i64 }, ptr %a30, i32 0, i32 1 + %t116 = load i64, ptr %t115 + call void @finch_str_from_int(ptr %a117, i64 %t116) + %t118 = load { ptr, i64, i64 }, ptr %a117 + store { ptr, i64, i64 } %t118, ptr %a119 + store { ptr, i64, i64 } { ptr @.str.4207, i64 4, i64 0 }, ptr %a120 + %t121 = getelementptr inbounds { ptr, i64, i64 }, ptr %a30, i32 0, i32 1 + %t122 = load i64, ptr %t121 + %t123 = icmp sgt i64 %t122, 0 + br i1 %t123, label %then6465, label %endif6467 +then6465: + %t124 = load ptr, ptr %a1 + %t125 = load { ptr, i64, i64 }, ptr %a119 + store { ptr, i64, i64 } { ptr @.str.4208, i64 8, 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.4209, i64 2, i64 0 }, ptr %a132 + call void @finch_str_concat(ptr %a130, ptr %a131, ptr %a132) + store { ptr, i64, i64 } %t129, ptr %a133 + call void @finch_str_drop(ptr %a133) + %t134 = load { ptr, i64, i64 }, ptr %a130 + %t135 = load ptr, ptr %a1 + %t136 = load %S.ast.Type, ptr %a5 + %t137 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t135, %S.ast.Type %t136) + store { ptr, i64, i64 } %t134, ptr %a139 + store { ptr, i64, i64 } %t137, ptr %a140 + call void @finch_str_concat(ptr %a138, ptr %a139, ptr %a140) + store { ptr, i64, i64 } %t134, ptr %a141 + call void @finch_str_drop(ptr %a141) + store { ptr, i64, i64 } %t137, ptr %a142 + call void @finch_str_drop(ptr %a142) + %t143 = load { ptr, i64, i64 }, ptr %a138 + %t144 = call { ptr, i64, i64 } @finch.gen.op(ptr %t124, { ptr, i64, i64 } %t143) + store { ptr, i64, i64 } %t143, ptr %a145 + call void @finch_str_drop(ptr %a145) + store { ptr, i64, i64 } %t144, ptr %a146 + %t147 = load ptr, ptr %a1 + %t148 = load { ptr, i64, i64 }, ptr %a146 + store { ptr, i64, i64 } { ptr @.str.4210, i64 26, i64 0 }, 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.4211, i64 1, i64 0 }, ptr %a155 + call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155) + store { ptr, i64, i64 } %t152, ptr %a156 + call void @finch_str_drop(ptr %a156) + %t157 = load { ptr, i64, i64 }, ptr %a153 + %t158 = call { ptr, i64, i64 } @finch.gen.op(ptr %t147, { ptr, i64, i64 } %t157) + store { ptr, i64, i64 } %t157, ptr %a159 + call void @finch_str_drop(ptr %a159) + %t160 = load { ptr, i64, i64 }, ptr %a120 + store { ptr, i64, i64 } %t158, ptr %a120 + store { ptr, i64, i64 } %t160, ptr %a161 + call void @finch_str_drop(ptr %a161) + call void @finch_str_drop(ptr %a146) + br label %endif6467 +endif6467: + %t162 = getelementptr inbounds { ptr, i64, i64 }, ptr %a30, i32 0, i32 1 + %t163 = load i64, ptr %t162 + store i64 0, ptr %a164 + br label %for.cond6468 +for.cond6468: + %t165 = load i64, ptr %a164 + %t166 = icmp slt i64 %t165, %t163 + br i1 %t166, label %for.body6469, label %for.end6471 +for.body6469: + %t167 = load ptr, ptr %a1 + %t168 = load ptr, ptr %a1 + %t169 = load %S.ast.Type, ptr %a5 + %t170 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t168, %S.ast.Type %t169) + store { ptr, i64, i64 } { ptr @.str.4212, i64 23, i64 0 }, ptr %a172 + store { ptr, i64, i64 } %t170, ptr %a173 + call void @finch_str_concat(ptr %a171, ptr %a172, ptr %a173) + store { ptr, i64, i64 } %t170, ptr %a174 + call void @finch_str_drop(ptr %a174) + %t175 = load { ptr, i64, i64 }, ptr %a171 + store { ptr, i64, i64 } %t175, ptr %a177 + store { ptr, i64, i64 } { ptr @.str.4213, i64 6, i64 0 }, ptr %a178 + call void @finch_str_concat(ptr %a176, ptr %a177, ptr %a178) + store { ptr, i64, i64 } %t175, ptr %a179 + call void @finch_str_drop(ptr %a179) + %t180 = load { ptr, i64, i64 }, ptr %a176 + %t181 = load { ptr, i64, i64 }, ptr %a120 + store { ptr, i64, i64 } %t180, ptr %a183 + store { ptr, i64, i64 } %t181, 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 - store { ptr, i64, i64 } %t185, ptr %a188 - store { ptr, i64, i64 } %t186, ptr %a189 + store { ptr, i64, i64 } %t180, ptr %a185 + call void @finch_str_drop(ptr %a185) + %t186 = load { ptr, i64, i64 }, ptr %a182 + store { ptr, i64, i64 } %t186, ptr %a188 + store { ptr, i64, i64 } { ptr @.str.4214, i64 6, i64 0 }, ptr %a189 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.4053, 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.4054, 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.4055, 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 - store { ptr, i64, i64 } %t206, ptr %a209 - store { ptr, i64, i64 } %t207, ptr %a210 - 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.4056, 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) - store { ptr, i64, i64 } %t216, ptr %a217 - %t218 = load { ptr, i64, i64 }, ptr %a217 - store { ptr, i64, i64 } %t218, ptr %a219 - call void @finch_str_copy(ptr %a220, ptr %a219) - %t221 = load { ptr, i64, i64 }, ptr %a220 - %t222 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t221, 0 - %t223 = load %S.ast.Type, ptr %a75 - store %S.ast.Type %t223, ptr %a224 - call void @finch.copy.S_ast_Type(ptr %a225, ptr %a224) - %t226 = load %S.ast.Type, ptr %a225 - %t227 = insertvalue %S.gen.Val %t222, %S.ast.Type %t226, 1 - %t228 = insertvalue %S.gen.Val %t227, i1 true, 2 - ret %S.gen.Val %t228 + store { ptr, i64, i64 } %t186, ptr %a190 + call void @finch_str_drop(ptr %a190) + %t191 = load { ptr, i64, i64 }, ptr %a187 + %t192 = load i64, ptr %a164 + call void @finch_str_from_int(ptr %a193, i64 %t192) + %t194 = load { ptr, i64, i64 }, ptr %a193 + store { ptr, i64, i64 } %t191, ptr %a196 + store { ptr, i64, i64 } %t194, ptr %a197 + call void @finch_str_concat(ptr %a195, ptr %a196, ptr %a197) + store { ptr, i64, i64 } %t191, ptr %a198 + call void @finch_str_drop(ptr %a198) + store { ptr, i64, i64 } %t194, ptr %a199 + call void @finch_str_drop(ptr %a199) + %t200 = load { ptr, i64, i64 }, ptr %a195 + %t201 = call { ptr, i64, i64 } @finch.gen.op(ptr %t167, { ptr, i64, i64 } %t200) + store { ptr, i64, i64 } %t200, ptr %a202 + call void @finch_str_drop(ptr %a202) + store { ptr, i64, i64 } %t201, ptr %a203 + %t204 = load ptr, ptr %a1 + %t205 = load ptr, ptr %a1 + %t206 = load %S.ast.Type, ptr %a5 + %t207 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t205, %S.ast.Type %t206) + %t208 = load i64, ptr %a164 + %t209 = load { ptr, i64, i64 }, ptr %a30 + %t210 = extractvalue { ptr, i64, i64 } %t209, 1 + %t211 = icmp uge i64 %t208, %t210 + br i1 %t211, label %range6472, label %inrange6473 +range6472: + call void @finch_panic_index(ptr @.str.4215, i64 3556, i64 %t208, i64 %t210) + unreachable +inrange6473: + %t212 = extractvalue { ptr, i64, i64 } %t209, 0 + %t213 = getelementptr inbounds { ptr, i64, i64 }, ptr %t212, i64 %t208 + %t214 = load { ptr, i64, i64 }, ptr %t213 + %t215 = load { ptr, i64, i64 }, ptr %a203 + call void @finch.gen.store(ptr %t204, { ptr, i64, i64 } %t207, { ptr, i64, i64 } %t214, { ptr, i64, i64 } %t215) + store { ptr, i64, i64 } %t207, ptr %a216 + call void @finch_str_drop(ptr %a216) + call void @finch_str_drop(ptr %a203) + br label %for.step6470 +for.step6470: + %t217 = load i64, ptr %a164 + %t218 = add i64 %t217, 1 + store i64 %t218, ptr %a164 + br label %for.cond6468 +for.end6471: + %t219 = load ptr, ptr %a1 + %t220 = load { ptr, i64, i64 }, ptr %a120 + store { ptr, i64, i64 } { ptr @.str.4216, i64 41, i64 0 }, ptr %a222 + store { ptr, i64, i64 } %t220, ptr %a223 + call void @finch_str_concat(ptr %a221, ptr %a222, ptr %a223) + %t224 = load { ptr, i64, i64 }, ptr %a221 + store { ptr, i64, i64 } %t224, ptr %a226 + store { ptr, i64, i64 } { ptr @.str.4217, i64 3, i64 0 }, ptr %a227 + call void @finch_str_concat(ptr %a225, ptr %a226, ptr %a227) + store { ptr, i64, i64 } %t224, ptr %a228 + call void @finch_str_drop(ptr %a228) + %t229 = load { ptr, i64, i64 }, ptr %a225 + %t230 = call { ptr, i64, i64 } @finch.gen.op(ptr %t219, { ptr, i64, i64 } %t229) + store { ptr, i64, i64 } %t229, ptr %a231 + call void @finch_str_drop(ptr %a231) + store { ptr, i64, i64 } %t230, ptr %a232 + %t233 = load ptr, ptr %a1 + %t234 = load { ptr, i64, i64 }, ptr %a232 + store { ptr, i64, i64 } { ptr @.str.4218, i64 30, i64 0 }, ptr %a236 + store { ptr, i64, i64 } %t234, ptr %a237 + call void @finch_str_concat(ptr %a235, ptr %a236, ptr %a237) + %t238 = load { ptr, i64, i64 }, ptr %a235 + store { ptr, i64, i64 } %t238, ptr %a240 + store { ptr, i64, i64 } { ptr @.str.4219, i64 6, i64 0 }, ptr %a241 + call void @finch_str_concat(ptr %a239, ptr %a240, ptr %a241) + store { ptr, i64, i64 } %t238, ptr %a242 + call void @finch_str_drop(ptr %a242) + %t243 = load { ptr, i64, i64 }, ptr %a239 + %t244 = load { ptr, i64, i64 }, ptr %a119 + store { ptr, i64, i64 } %t243, ptr %a246 + store { ptr, i64, i64 } %t244, ptr %a247 + call void @finch_str_concat(ptr %a245, ptr %a246, ptr %a247) + store { ptr, i64, i64 } %t243, ptr %a248 + call void @finch_str_drop(ptr %a248) + %t249 = load { ptr, i64, i64 }, ptr %a245 + store { ptr, i64, i64 } %t249, ptr %a251 + store { ptr, i64, i64 } { ptr @.str.4220, i64 3, i64 0 }, ptr %a252 + call void @finch_str_concat(ptr %a250, ptr %a251, ptr %a252) + store { ptr, i64, i64 } %t249, ptr %a253 + call void @finch_str_drop(ptr %a253) + %t254 = load { ptr, i64, i64 }, ptr %a250 + %t255 = call { ptr, i64, i64 } @finch.gen.op(ptr %t233, { ptr, i64, i64 } %t254) + store { ptr, i64, i64 } %t254, ptr %a256 + call void @finch_str_drop(ptr %a256) + store { ptr, i64, i64 } %t255, ptr %a257 + %t258 = load ptr, ptr %a1 + %t259 = load { ptr, i64, i64 }, ptr %a257 + store { ptr, i64, i64 } { ptr @.str.4221, i64 30, 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.4222, i64 6, i64 0 }, ptr %a266 + call void @finch_str_concat(ptr %a264, ptr %a265, ptr %a266) + store { ptr, i64, i64 } %t263, ptr %a267 + call void @finch_str_drop(ptr %a267) + %t268 = load { ptr, i64, i64 }, ptr %a264 + %t269 = load { ptr, i64, i64 }, ptr %a119 + store { ptr, i64, i64 } %t268, ptr %a271 + store { ptr, i64, i64 } %t269, ptr %a272 + call void @finch_str_concat(ptr %a270, ptr %a271, ptr %a272) + store { ptr, i64, i64 } %t268, ptr %a273 + call void @finch_str_drop(ptr %a273) + %t274 = load { ptr, i64, i64 }, ptr %a270 + store { ptr, i64, i64 } %t274, ptr %a276 + store { ptr, i64, i64 } { ptr @.str.4223, i64 3, i64 0 }, ptr %a277 + call void @finch_str_concat(ptr %a275, ptr %a276, ptr %a277) + store { ptr, i64, i64 } %t274, ptr %a278 + call void @finch_str_drop(ptr %a278) + %t279 = load { ptr, i64, i64 }, ptr %a275 + %t280 = call { ptr, i64, i64 } @finch.gen.op(ptr %t258, { ptr, i64, i64 } %t279) + store { ptr, i64, i64 } %t279, ptr %a281 + call void @finch_str_drop(ptr %a281) + store { ptr, i64, i64 } %t280, ptr %a282 + %t283 = load { ptr, i64, i64 }, ptr %a282 + store { ptr, i64, i64 } %t283, ptr %a284 + call void @finch_str_copy(ptr %a285, ptr %a284) + %t286 = load { ptr, i64, i64 }, ptr %a285 + %t287 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t286, 0 + %t288 = load %S.ast.Type, ptr %a114 + store %S.ast.Type %t288, ptr %a289 + call void @finch.copy.S_ast_Type(ptr %a290, ptr %a289) + %t291 = load %S.ast.Type, ptr %a290 + %t292 = insertvalue %S.gen.Val %t287, %S.ast.Type %t291, 1 + %t293 = insertvalue %S.gen.Val %t292, i1 true, 2 + call void @finch_str_drop(ptr %a282) + call void @finch_str_drop(ptr %a257) + call void @finch_str_drop(ptr %a232) + call void @finch_str_drop(ptr %a120) + call void @finch_str_drop(ptr %a119) + call void @finch.drop.S_ast_Type(ptr %a114) + call void @finch.drop.arr_str(ptr %a30) + call void @finch.drop.S_ast_Type(ptr %a5) + ret %S.gen.Val %t293 } define internal void @finch.copy.S_gen_Place(ptr %dst, ptr %src) { @@ -55083,70 +65172,77 @@ entry: %a24 = alloca { ptr, i64, i64 }, align 16 %a25 = alloca { ptr, i64, i64 }, align 16 %a26 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca %S.gen.Ref, align 16 - %a40 = alloca %S.gen.Place, align 16 - %a41 = alloca %S.gen.Place, align 16 + %a27 = alloca { ptr, i64, i64 }, align 16 + %a29 = alloca { ptr, i64, i64 }, align 16 + %a34 = alloca %S.gen.Ref, align 16 + %a42 = alloca %S.gen.Place, align 16 + %a43 = alloca %S.gen.Place, 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.4057, i64 3, i64 0 }, ptr %a7 + store { ptr, i64, i64 } { ptr @.str.4224, 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.from6108 -logic.from6108: - br i1 %t9, label %logic.rhs6109, label %logic.end6110 -logic.rhs6109: + br label %logic.from6474 +logic.from6474: + br i1 %t9, label %logic.rhs6475, label %logic.end6476 +logic.rhs6475: %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.rend6111 -logic.rend6111: - br label %logic.end6110 -logic.end6110: - %t15 = phi i1 [ false, %logic.from6108 ], [ %t14, %logic.rend6111 ] - br i1 %t15, label %then6112, label %endif6114 -then6112: + br label %logic.rend6477 +logic.rend6477: + br label %logic.end6476 +logic.end6476: + %t15 = phi i1 [ false, %logic.from6474 ], [ %t14, %logic.rend6477 ] + br i1 %t15, label %then6478, label %endif6480 +then6478: %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.4058, i64 28, i64 0 }, ptr %a21 + store { ptr, i64, i64 } { ptr @.str.4225, 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.4059, i64 1, i64 0 }, ptr %a26 + store { ptr, i64, i64 } { ptr @.str.4226, 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 %endif6114 -endif6114: - %t28 = load ptr, ptr %a1 - %t29 = load %S.ast.Node, ptr %a2 - %t30 = load i1, ptr %a3 - %t31 = call %S.gen.Ref @finch.gen.ref(ptr %t28, %S.ast.Node %t29, i1 %t30) - store %S.gen.Ref %t31, ptr %a32 - %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 %then6115, label %endif6117 -then6115: - %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.4060, i64 60, i64 0 }) - br label %endif6117 -endif6117: - %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 - call void @finch.copy.S_gen_Place(ptr %a41, ptr %a40) - %t42 = load %S.gen.Place, ptr %a41 - ret %S.gen.Place %t42 + store { ptr, i64, i64 } %t23, ptr %a27 + call void @finch_str_drop(ptr %a27) + %t28 = load { ptr, i64, i64 }, ptr %a24 + call void @finch.gen.fail(ptr %t16, %S.ast.Node %t17, { ptr, i64, i64 } %t28) + store { ptr, i64, i64 } %t28, ptr %a29 + call void @finch_str_drop(ptr %a29) + br label %endif6480 +endif6480: + %t30 = load ptr, ptr %a1 + %t31 = load %S.ast.Node, ptr %a2 + %t32 = load i1, ptr %a3 + %t33 = call %S.gen.Ref @finch.gen.ref(ptr %t30, %S.ast.Node %t31, i1 %t32) + store %S.gen.Ref %t33, ptr %a34 + %t35 = getelementptr inbounds %S.gen.Ref, ptr %a34, i32 0, i32 0 + %t36 = load i1, ptr %t35 + %t37 = xor i1 %t36, true + br i1 %t37, label %then6481, label %endif6483 +then6481: + %t38 = load ptr, ptr %a1 + %t39 = load %S.ast.Node, ptr %a2 + call void @finch.gen.fail(ptr %t38, %S.ast.Node %t39, { ptr, i64, i64 } { ptr @.str.4227, i64 60, i64 0 }) + br label %endif6483 +endif6483: + %t40 = getelementptr inbounds %S.gen.Ref, ptr %a34, i32 0, i32 1 + %t41 = load %S.gen.Place, ptr %t40 + store %S.gen.Place %t41, ptr %a42 + call void @finch.copy.S_gen_Place(ptr %a43, ptr %a42) + %t44 = load %S.gen.Place, ptr %a43 + call void @finch.drop.S_gen_Ref(ptr %a34) + ret %S.gen.Place %t44 } define internal void @finch.copy.S_cimport_CConst(ptr %dst, ptr %src) { @@ -55187,93 +65283,112 @@ entry: %a110 = alloca { ptr, i64, i64 }, align 16 %a113 = alloca { ptr, i64, i64 }, align 16 %a114 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 + %a118 = alloca { ptr, i64, i64 }, align 16 + %a121 = 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 - %a128 = 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 - %a147 = 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 - %a170 = alloca %S.ast.Type, 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 i64, align 16 - %a184 = alloca i64, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a223 = 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 + %a137 = alloca { ptr, i64, i64 }, align 16 + %a140 = alloca { ptr, i64, i64 }, align 16 + %a153 = 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 + %a176 = alloca %S.ast.Type, align 16 + %a183 = alloca { ptr, i64, i64 }, align 16 + %a184 = alloca { ptr, i64, i64 }, align 16 + %a185 = alloca { ptr, i64, i64 }, align 16 + %a187 = alloca i64, align 16 + %a190 = alloca i64, align 16 + %a195 = alloca { ptr, i64, i64 }, align 16 + %a196 = alloca { ptr, i64, i64 }, align 16 + %a200 = alloca { ptr, i64, i64 }, align 16 + %a210 = alloca { ptr, i64, i64 }, align 16 + %a211 = alloca { ptr, i64, i64 }, align 16 + %a212 = 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 %a228 = alloca { ptr, i64, i64 }, align 16 %a229 = alloca { ptr, i64, i64 }, align 16 %a230 = alloca { ptr, i64, i64 }, align 16 + %a231 = 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 %a239 = alloca { ptr, i64, i64 }, align 16 %a240 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca %S.ast.Type, align 16 - %a246 = alloca %S.ast.Type, 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 + %a249 = alloca { ptr, i64, i64 }, align 16 + %a250 = alloca { ptr, i64, i64 }, align 16 + %a251 = alloca { ptr, i64, i64 }, align 16 + %a255 = alloca %S.ast.Type, align 16 + %a256 = alloca %S.ast.Type, 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 + %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 %a286 = alloca { ptr, i64, i64 }, align 16 %a287 = alloca { ptr, i64, i64 }, align 16 %a288 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca %S.gen.Var, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 + %a289 = alloca { ptr, i64, i64 }, align 16 + %a291 = alloca { ptr, i64, i64 }, align 16 + %a296 = alloca { ptr, i64, i64 }, align 16 + %a297 = alloca { ptr, i64, i64 }, align 16 + %a298 = 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 %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 - %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 + %a309 = alloca %S.gen.Var, align 16 %a320 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 + %a321 = 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 + %a328 = 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 + %a333 = alloca { ptr, i64, i64 }, align 16 + %a334 = alloca { ptr, i64, i64 }, align 16 + %a335 = 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 + %a348 = alloca { ptr, i64, i64 }, align 16 + %a352 = alloca { ptr, i64, i64 }, align 16 + %a353 = alloca { ptr, i64, i64 }, align 16 + %a358 = alloca %S.ast.Type, align 16 + %a359 = alloca %S.ast.Type, 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 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.4061, i64 3, i64 0 }, ptr %a7 + store { ptr, i64, i64 } { ptr @.str.4228, 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 %then6118, label %endif6120 -then6118: + br i1 %t9, label %then6484, label %endif6486 +then6484: %t10 = load ptr, ptr %a1 %t11 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 %t12 = load { ptr, i64, i64 }, ptr %t11 @@ -55281,53 +65396,53 @@ then6118: store i64 %t13, ptr %a14 %t15 = load i64, ptr %a14 %t16 = icmp slt i64 %t15, 0 - br label %logic.from6121 -logic.from6121: - br i1 %t16, label %logic.rhs6122, label %logic.end6123 -logic.rhs6122: + br label %logic.from6487 +logic.from6487: + br i1 %t16, label %logic.rhs6488, label %logic.end6489 +logic.rhs6488: %t17 = load ptr, ptr %a1 %t18 = icmp eq ptr %t17, null - br i1 %t18, label %panic6124, label %ok6125 -panic6124: - call void @finch_panic(ptr @.str.4062, i64 3311, ptr @.str.4063) + br i1 %t18, label %panic6490, label %ok6491 +panic6490: + call void @finch_panic(ptr @.str.4229, i64 3580, ptr @.str.4230) unreachable -ok6125: - %t19 = getelementptr inbounds %S.gen.Gen, ptr %t17, i32 0, i32 24 +ok6491: + %t19 = getelementptr inbounds %S.gen.Gen, ptr %t17, i32 0, i32 25 %t20 = getelementptr inbounds %S.cimport.CImports, ptr %t19, i32 0, i32 1 %t21 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 %t22 = load { ptr, i64, i64 }, ptr %t21 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.rend6126 -logic.rend6126: - br label %logic.end6123 -logic.end6123: - %t26 = phi i1 [ false, %logic.from6121 ], [ %t25, %logic.rend6126 ] - br i1 %t26, label %then6127, label %endif6129 -then6127: + br label %logic.rend6492 +logic.rend6492: + br label %logic.end6489 +logic.end6489: + %t26 = phi i1 [ false, %logic.from6487 ], [ %t25, %logic.rend6492 ] + br i1 %t26, label %then6493, label %endif6495 +then6493: %t27 = load ptr, ptr %a1 %t28 = icmp eq ptr %t27, null - br i1 %t28, label %panic6130, label %ok6131 -panic6130: - call void @finch_panic(ptr @.str.4064, i64 3312, ptr @.str.4065) + br i1 %t28, label %panic6496, label %ok6497 +panic6496: + call void @finch_panic(ptr @.str.4231, i64 3581, ptr @.str.4232) unreachable -ok6131: - %t29 = getelementptr inbounds %S.gen.Gen, ptr %t27, i32 0, i32 24 +ok6497: + %t29 = getelementptr inbounds %S.gen.Gen, ptr %t27, i32 0, i32 25 %t30 = getelementptr inbounds %S.cimport.CImports, ptr %t29, i32 0, i32 1 %t31 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 %t32 = load { ptr, i64, i64 }, ptr %t31 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.missing6132, label %map.found6133 -map.missing6132: + br i1 %t35, label %map.missing6498, label %map.found6499 +map.missing6498: 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.4066, i64 3312, ptr %a36) + call void @finch_map_missing(ptr @.str.4233, i64 3581, ptr %a36) unreachable -map.found6133: +map.found6499: %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 @@ -55339,45 +65454,47 @@ map.found6133: 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 %then6134, label %endif6136 -then6134: + br i1 %t48, label %then6500, label %endif6502 +then6500: %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.4067, i64 5, i64 0 }) + %t54 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4234, 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 + call void @finch.drop.S_cimport_CConst(ptr %a46) ret %S.gen.Ref %t57 -endif6136: +endif6502: %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.4068, i64 3, i64 0 }) + %t64 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4235, 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 + call void @finch.drop.S_cimport_CConst(ptr %a46) ret %S.gen.Ref %t67 -endif6129: +endif6495: %t68 = load i64, ptr %a14 %t69 = icmp slt i64 %t68, 0 - br label %logic.from6137 -logic.from6137: - br i1 %t69, label %logic.rhs6138, label %logic.end6139 -logic.rhs6138: + br label %logic.from6503 +logic.from6503: + br i1 %t69, label %logic.rhs6504, label %logic.end6505 +logic.rhs6504: %t70 = load ptr, ptr %a1 %t71 = icmp eq ptr %t70, null - br i1 %t71, label %panic6140, label %ok6141 -panic6140: - call void @finch_panic(ptr @.str.4069, i64 3319, ptr @.str.4070) + br i1 %t71, label %panic6506, label %ok6507 +panic6506: + call void @finch_panic(ptr @.str.4236, i64 3588, ptr @.str.4237) unreachable -ok6141: - %t72 = getelementptr inbounds %S.gen.Gen, ptr %t70, i32 0, i32 24 +ok6507: + %t72 = getelementptr inbounds %S.gen.Gen, ptr %t70, i32 0, i32 25 %t73 = getelementptr inbounds %S.cimport.CImports, ptr %t72, i32 0, i32 2 %t74 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 %t75 = load { ptr, i64, i64 }, ptr %t74 @@ -55385,437 +65502,480 @@ ok6141: %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.rend6142 -logic.rend6142: - br label %logic.end6139 -logic.end6139: - %t80 = phi i1 [ false, %logic.from6137 ], [ %t79, %logic.rend6142 ] - br label %logic.from6143 -logic.from6143: - br i1 %t80, label %logic.rhs6144, label %logic.end6145 -logic.rhs6144: + br label %logic.rend6508 +logic.rend6508: + br label %logic.end6505 +logic.end6505: + %t80 = phi i1 [ false, %logic.from6503 ], [ %t79, %logic.rend6508 ] + br label %logic.from6509 +logic.from6509: + br i1 %t80, label %logic.rhs6510, label %logic.end6511 +logic.rhs6510: %t81 = load ptr, ptr %a1 %t82 = icmp eq ptr %t81, null - br i1 %t82, label %panic6146, label %ok6147 -panic6146: - call void @finch_panic(ptr @.str.4071, i64 3319, ptr @.str.4072) + br i1 %t82, label %panic6512, label %ok6513 +panic6512: + call void @finch_panic(ptr @.str.4238, i64 3588, ptr @.str.4239) unreachable -ok6147: - %t83 = getelementptr inbounds %S.gen.Gen, ptr %t81, i32 0, i32 24 +ok6513: + %t83 = getelementptr inbounds %S.gen.Gen, ptr %t81, i32 0, i32 25 %t84 = getelementptr inbounds %S.cimport.CImports, ptr %t83, i32 0, i32 0 - store { ptr, i64, i64 } { ptr @.str.4073, i64 7, i64 0 }, ptr %a85 + store { ptr, i64, i64 } { ptr @.str.4240, 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.rend6148 -logic.rend6148: - br label %logic.end6145 -logic.end6145: - %t88 = phi i1 [ false, %logic.from6143 ], [ %t87, %logic.rend6148 ] - br label %logic.from6149 -logic.from6149: - br i1 %t88, label %logic.rhs6150, label %logic.end6151 -logic.rhs6150: + br label %logic.rend6514 +logic.rend6514: + br label %logic.end6511 +logic.end6511: + %t88 = phi i1 [ false, %logic.from6509 ], [ %t87, %logic.rend6514 ] + br label %logic.from6515 +logic.from6515: + br i1 %t88, label %logic.rhs6516, label %logic.end6517 +logic.rhs6516: %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.4074, i64 5, i64 0 }, ptr %a92 + store { ptr, i64, i64 } { ptr @.str.4241, 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.from6152 -logic.from6152: - br i1 %t94, label %logic.end6154, label %logic.rhs6153 -logic.rhs6153: + br label %logic.from6518 +logic.from6518: + br i1 %t94, label %logic.end6520, label %logic.rhs6519 +logic.rhs6519: %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.4075, i64 6, i64 0 }, ptr %a98 + store { ptr, i64, i64 } { ptr @.str.4242, 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.rend6155 -logic.rend6155: - br label %logic.end6154 -logic.end6154: - %t101 = phi i1 [ true, %logic.from6152 ], [ %t100, %logic.rend6155 ] - br label %logic.from6156 -logic.from6156: - br i1 %t101, label %logic.end6158, label %logic.rhs6157 -logic.rhs6157: + br label %logic.rend6521 +logic.rend6521: + br label %logic.end6520 +logic.end6520: + %t101 = phi i1 [ true, %logic.from6518 ], [ %t100, %logic.rend6521 ] + br label %logic.from6522 +logic.from6522: + br i1 %t101, label %logic.end6524, label %logic.rhs6523 +logic.rhs6523: %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.4076, i64 6, i64 0 }, ptr %a105 + store { ptr, i64, i64 } { ptr @.str.4243, 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.rend6159 -logic.rend6159: - br label %logic.end6158 -logic.end6158: - %t108 = phi i1 [ true, %logic.from6156 ], [ %t107, %logic.rend6159 ] - br label %logic.rend6160 -logic.rend6160: - br label %logic.end6151 -logic.end6151: - %t109 = phi i1 [ false, %logic.from6149 ], [ %t108, %logic.rend6160 ] - br i1 %t109, label %then6161, label %endif6163 -then6161: - store { ptr, i64, i64 } { ptr @.str.4077, i64 1, i64 0 }, ptr %a110 + br label %logic.rend6525 +logic.rend6525: + br label %logic.end6524 +logic.end6524: + %t108 = phi i1 [ true, %logic.from6522 ], [ %t107, %logic.rend6525 ] + br label %logic.rend6526 +logic.rend6526: + br label %logic.end6517 +logic.end6517: + %t109 = phi i1 [ false, %logic.from6515 ], [ %t108, %logic.rend6526 ] + br i1 %t109, label %then6527, label %endif6529 +then6527: + store { ptr, i64, i64 } { ptr @.str.4244, 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.4078, i64 5, i64 0 }, ptr %a114 + store { ptr, i64, i64 } { ptr @.str.4245, 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 %then6164, label %else6165 -then6164: - store { ptr, i64, i64 } { ptr @.str.4079, i64 1, i64 0 }, ptr %a110 - br label %endif6166 -else6165: - %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.4080, 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 %then6167, label %endif6169 -then6167: - store { ptr, i64, i64 } { ptr @.str.4081, i64 1, i64 0 }, ptr %a110 - br label %endif6169 -endif6169: - br label %endif6166 -endif6166: - %t123 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t124 = load ptr, ptr %a1 + br i1 %t116, label %then6530, label %else6531 +then6530: + %t117 = load { ptr, i64, i64 }, ptr %a110 + store { ptr, i64, i64 } { ptr @.str.4246, i64 1, i64 0 }, ptr %a110 + store { ptr, i64, i64 } %t117, ptr %a118 + call void @finch_str_drop(ptr %a118) + br label %endif6532 +else6531: + %t119 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t120 = load { ptr, i64, i64 }, ptr %t119 + store { ptr, i64, i64 } %t120, ptr %a121 + store { ptr, i64, i64 } { ptr @.str.4247, i64 6, i64 0 }, ptr %a122 + %t123 = call i32 @finch_str_eq(ptr %a121, ptr %a122) + %t124 = icmp ne i32 %t123, 0 + br i1 %t124, label %then6533, label %endif6535 +then6533: %t125 = load { ptr, i64, i64 }, ptr %a110 - store { ptr, i64, i64 } { ptr @.str.4082, 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.4083, i64 1, i64 0 }, ptr %a132 + store { ptr, i64, i64 } { ptr @.str.4248, i64 1, i64 0 }, ptr %a110 + store { ptr, i64, i64 } %t125, ptr %a126 + call void @finch_str_drop(ptr %a126) + br label %endif6535 +endif6535: + br label %endif6532 +endif6532: + %t127 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 + %t128 = load ptr, ptr %a1 + %t129 = load { ptr, i64, i64 }, ptr %a110 + store { ptr, i64, i64 } { ptr @.str.4249, i64 31, i64 0 }, 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 - %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.4084, 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 -endif6163: - %t139 = load i64, ptr %a14 - %t140 = icmp slt i64 %t139, 0 - br label %logic.from6170 -logic.from6170: - br i1 %t140, label %logic.rhs6171, label %logic.end6172 -logic.rhs6171: - %t141 = load ptr, ptr %a1 - %t142 = icmp eq ptr %t141, null - br i1 %t142, label %panic6173, label %ok6174 -panic6173: - call void @finch_panic(ptr @.str.4085, i64 3328, ptr @.str.4086) + store { ptr, i64, i64 } %t133, ptr %a135 + store { ptr, i64, i64 } { ptr @.str.4250, i64 1, i64 0 }, ptr %a136 + call void @finch_str_concat(ptr %a134, ptr %a135, ptr %a136) + store { ptr, i64, i64 } %t133, ptr %a137 + call void @finch_str_drop(ptr %a137) + %t138 = load { ptr, i64, i64 }, ptr %a134 + %t139 = call { ptr, i64, i64 } @finch.gen.op(ptr %t128, { ptr, i64, i64 } %t138) + store { ptr, i64, i64 } %t138, ptr %a140 + call void @finch_str_drop(ptr %a140) + %t141 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t139, 0 + %t142 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4251, i64 3, i64 0 }) + %t143 = insertvalue %S.gen.Val %t141, %S.ast.Type %t142, 1 + %t144 = insertvalue %S.gen.Ref %t127, %S.gen.Val %t143, 2 + call void @finch_str_drop(ptr %a110) + ret %S.gen.Ref %t144 +endif6529: + %t145 = load i64, ptr %a14 + %t146 = icmp slt i64 %t145, 0 + br label %logic.from6536 +logic.from6536: + br i1 %t146, label %logic.rhs6537, label %logic.end6538 +logic.rhs6537: + %t147 = load ptr, ptr %a1 + %t148 = icmp eq ptr %t147, null + br i1 %t148, label %panic6539, label %ok6540 +panic6539: + call void @finch_panic(ptr @.str.4252, i64 3597, ptr @.str.4253) unreachable -ok6174: - %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 - %t146 = load { ptr, i64, i64 }, ptr %t145 - 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.rend6175 -logic.rend6175: - br label %logic.end6172 -logic.end6172: - %t150 = phi i1 [ false, %logic.from6170 ], [ %t149, %logic.rend6175 ] - br i1 %t150, label %then6176, label %endif6178 -then6176: - %t151 = load ptr, ptr %a1 - %t152 = load ptr, ptr %a1 - %t153 = icmp eq ptr %t152, null - br i1 %t153, label %panic6179, label %ok6180 -panic6179: - call void @finch_panic(ptr @.str.4087, i64 3329, ptr @.str.4088) +ok6540: + %t149 = getelementptr inbounds %S.gen.Gen, ptr %t147, i32 0, i32 25 + %t150 = getelementptr inbounds %S.cimport.CImports, ptr %t149, i32 0, i32 2 + %t151 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t152 = load { ptr, i64, i64 }, ptr %t151 + store { ptr, i64, i64 } %t152, ptr %a153 + %t154 = call i64 @finch_map_find(ptr %t150, ptr %a153, 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) + %t155 = icmp sge i64 %t154, 0 + br label %logic.rend6541 +logic.rend6541: + br label %logic.end6538 +logic.end6538: + %t156 = phi i1 [ false, %logic.from6536 ], [ %t155, %logic.rend6541 ] + br i1 %t156, label %then6542, label %endif6544 +then6542: + %t157 = load ptr, ptr %a1 + %t158 = load ptr, ptr %a1 + %t159 = icmp eq ptr %t158, null + br i1 %t159, label %panic6545, label %ok6546 +panic6545: + call void @finch_panic(ptr @.str.4254, i64 3598, ptr @.str.4255) unreachable -ok6180: - %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 - %t157 = load { ptr, i64, i64 }, ptr %t156 - 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.missing6181, label %map.found6182 -map.missing6181: - 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.4089, i64 3329, ptr %a161) +ok6546: + %t160 = getelementptr inbounds %S.gen.Gen, ptr %t158, i32 0, i32 25 + %t161 = getelementptr inbounds %S.cimport.CImports, ptr %t160, i32 0, i32 2 + %t162 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t163 = load { ptr, i64, i64 }, ptr %t162 + store { ptr, i64, i64 } %t163, ptr %a164 + %t165 = call i64 @finch_map_find(ptr %t161, ptr %a164, 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) + %t166 = icmp slt i64 %t165, 0 + br i1 %t166, label %map.missing6547, label %map.found6548 +map.missing6547: + store { ptr, i64, i64 } zeroinitializer, ptr %a167 + store { ptr, i64, i64 } %t163, ptr %a168 + call void @finch_buf_str(ptr %a167, ptr %a168, i32 1) + call void @finch_map_missing(ptr @.str.4256, i64 3598, ptr %a167) unreachable -map.found6182: - %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 - %t166 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t165, i32 0, i32 2 - %t167 = load %S.ast.Type, ptr %t166 - %t168 = load %S.ast.Node, ptr %a2 - %t169 = call %S.ast.Type @finch.gen.resolve(ptr %t151, %S.ast.Type %t167, %S.ast.Node %t168) - store %S.ast.Type %t169, ptr %a170 - %t171 = load ptr, ptr %a1 - %t172 = icmp eq ptr %t171, null - br i1 %t172, label %panic6183, label %ok6184 -panic6183: - call void @finch_panic(ptr @.str.4090, i64 3330, ptr @.str.4091) +map.found6548: + %t169 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t161, i32 0, i32 0 + %t170 = load ptr, ptr %t169 + %t171 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t170, i64 %t165 + %t172 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t171, i32 0, i32 2 + %t173 = load %S.ast.Type, ptr %t172 + %t174 = load %S.ast.Node, ptr %a2 + %t175 = call %S.ast.Type @finch.gen.resolve(ptr %t157, %S.ast.Type %t173, %S.ast.Node %t174) + store %S.ast.Type %t175, ptr %a176 + %t177 = load ptr, ptr %a1 + %t178 = icmp eq ptr %t177, null + br i1 %t178, label %panic6549, label %ok6550 +panic6549: + call void @finch_panic(ptr @.str.4257, i64 3599, ptr @.str.4258) unreachable -ok6184: - %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.4092, 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 - store i64 -1, ptr %a181 - %t182 = load i64, ptr %t174 - %t183 = load ptr, ptr %t173 - store i64 0, ptr %a184 - br label %find.cond6185 -find.cond6185: - %t185 = load i64, ptr %a184 - %t186 = icmp slt i64 %t185, %t182 - br i1 %t186, label %find.body6186, label %find.end6189 -find.body6186: - %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.hit6187, label %find.next6188 -find.hit6187: - store i64 %t185, ptr %a181 - br label %find.end6189 -find.next6188: - %t193 = add i64 %t185, 1 - store i64 %t193, ptr %a184 - br label %find.cond6185 -find.end6189: - %t194 = load i64, ptr %a181 - %t195 = icmp sge i64 %t194, 0 - %t196 = xor i1 %t195, true - br i1 %t196, label %then6190, label %endif6192 -then6190: - %t197 = load ptr, ptr %a1 - %t198 = icmp eq ptr %t197, null - br i1 %t198, label %panic6193, label %ok6194 -panic6193: - call void @finch_panic(ptr @.str.4093, i64 3331, ptr @.str.4094) +ok6550: + %t179 = getelementptr inbounds %S.gen.Gen, ptr %t177, i32 0, i32 39 + %t180 = getelementptr inbounds { ptr, i64, i64 }, ptr %t179, i32 0, i32 1 + %t181 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t182 = load { ptr, i64, i64 }, ptr %t181 + store { ptr, i64, i64 } { ptr @.str.4259, i64 2, 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 i64 -1, ptr %a187 + %t188 = load i64, ptr %t180 + %t189 = load ptr, ptr %t179 + store i64 0, ptr %a190 + br label %find.cond6551 +find.cond6551: + %t191 = load i64, ptr %a190 + %t192 = icmp slt i64 %t191, %t188 + br i1 %t192, label %find.body6552, label %find.end6555 +find.body6552: + %t193 = getelementptr inbounds { ptr, i64, i64 }, ptr %t189, i64 %t191 + %t194 = load { ptr, i64, i64 }, ptr %t193 + store { ptr, i64, i64 } %t194, ptr %a195 + store { ptr, i64, i64 } %t186, ptr %a196 + %t197 = call i32 @finch_str_eq(ptr %a195, ptr %a196) + %t198 = icmp ne i32 %t197, 0 + br i1 %t198, label %find.hit6553, label %find.next6554 +find.hit6553: + store i64 %t191, ptr %a187 + br label %find.end6555 +find.next6554: + %t199 = add i64 %t191, 1 + store i64 %t199, ptr %a190 + br label %find.cond6551 +find.end6555: + store { ptr, i64, i64 } %t186, ptr %a200 + call void @finch_str_drop(ptr %a200) + %t201 = load i64, ptr %a187 + %t202 = icmp sge i64 %t201, 0 + %t203 = xor i1 %t202, true + br i1 %t203, label %then6556, label %endif6558 +then6556: + %t204 = load ptr, ptr %a1 + %t205 = icmp eq ptr %t204, null + br i1 %t205, label %panic6559, label %ok6560 +panic6559: + call void @finch_panic(ptr @.str.4260, i64 3600, ptr @.str.4261) unreachable -ok6194: - %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.4095, 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 - %t207 = load i64, ptr %t200 - %t208 = add i64 %t207, 1 - call void @finch_arr_reserve(ptr %t199, i64 %t208, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t209 = load ptr, ptr %t199 - %t210 = getelementptr inbounds { ptr, i64, i64 }, ptr %t209, i64 %t207 - store { ptr, i64, i64 } %t206, ptr %t210 - store i64 %t208, ptr %t200 - %t211 = load ptr, ptr %a1 - %t212 = icmp eq ptr %t211, null - br i1 %t212, label %panic6195, label %ok6196 -panic6195: - call void @finch_panic(ptr @.str.4096, i64 3332, ptr @.str.4097) +ok6560: + %t206 = getelementptr inbounds %S.gen.Gen, ptr %t204, i32 0, i32 39 + %t207 = getelementptr inbounds { ptr, i64, i64 }, ptr %t206, i32 0, i32 1 + %t208 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t209 = load { ptr, i64, i64 }, ptr %t208 + store { ptr, i64, i64 } { ptr @.str.4262, i64 2, i64 0 }, ptr %a211 + store { ptr, i64, i64 } %t209, ptr %a212 + call void @finch_str_concat(ptr %a210, ptr %a211, ptr %a212) + %t213 = load { ptr, i64, i64 }, ptr %a210 + %t214 = load i64, ptr %t207 + %t215 = add i64 %t214, 1 + call void @finch_arr_reserve(ptr %t206, i64 %t215, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t216 = load ptr, ptr %t206 + %t217 = getelementptr inbounds { ptr, i64, i64 }, ptr %t216, i64 %t214 + store { ptr, i64, i64 } %t213, ptr %t217 + store i64 %t215, ptr %t207 + %t218 = load ptr, ptr %a1 + %t219 = icmp eq ptr %t218, null + br i1 %t219, label %panic6561, label %ok6562 +panic6561: + call void @finch_panic(ptr @.str.4263, i64 3601, ptr @.str.4264) unreachable -ok6196: - %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.4098, 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.4099, 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 - %t226 = load %S.ast.Type, ptr %a170 - %t227 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t225, %S.ast.Type %t226) - store { ptr, i64, i64 } %t224, ptr %a229 - store { ptr, i64, i64 } %t227, ptr %a230 +ok6562: + %t220 = getelementptr inbounds %S.gen.Gen, ptr %t218, i32 0, i32 2 + %t221 = getelementptr inbounds { ptr, i64, i64 }, ptr %t220, i32 0, i32 1 + %t222 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t223 = load { ptr, i64, i64 }, ptr %t222 + store { ptr, i64, i64 } { ptr @.str.4265, i64 1, 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.4266, i64 19, i64 0 }, ptr %a230 call void @finch_str_concat(ptr %a228, ptr %a229, ptr %a230) - %t231 = load { ptr, i64, i64 }, ptr %a228 - %t232 = load i64, ptr %t214 - %t233 = add i64 %t232, 1 - call void @finch_arr_reserve(ptr %t213, i64 %t233, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t234 = load ptr, ptr %t213 - %t235 = getelementptr inbounds { ptr, i64, i64 }, ptr %t234, i64 %t232 - store { ptr, i64, i64 } %t231, ptr %t235 - store i64 %t233, ptr %t214 - br label %endif6192 -endif6192: - %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.4100, 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 - %t243 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t242, 0 - %t244 = load %S.ast.Type, ptr %a170 - store %S.ast.Type %t244, ptr %a245 - call void @finch.copy.S_ast_Type(ptr %a246, ptr %a245) - %t247 = load %S.ast.Type, ptr %a246 - %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 -endif6178: - %t250 = load i64, ptr %a14 - %t251 = icmp slt i64 %t250, 0 - br i1 %t251, label %then6197, label %endif6199 -then6197: - %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 %then6200, label %endif6202 -then6200: - %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.4101, 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.4102, i64 43, i64 0 }, ptr %a266 - call void @finch_str_concat(ptr %a264, ptr %a265, ptr %a266) - %t267 = load { ptr, i64, i64 }, ptr %a264 + store { ptr, i64, i64 } %t227, ptr %a231 + call void @finch_str_drop(ptr %a231) + %t232 = load { ptr, i64, i64 }, ptr %a228 + %t233 = load ptr, ptr %a1 + %t234 = load %S.ast.Type, ptr %a176 + %t235 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t233, %S.ast.Type %t234) + store { ptr, i64, i64 } %t232, ptr %a237 + store { ptr, i64, i64 } %t235, ptr %a238 + call void @finch_str_concat(ptr %a236, ptr %a237, ptr %a238) + store { ptr, i64, i64 } %t232, ptr %a239 + call void @finch_str_drop(ptr %a239) + store { ptr, i64, i64 } %t235, ptr %a240 + call void @finch_str_drop(ptr %a240) + %t241 = load { ptr, i64, i64 }, ptr %a236 + %t242 = load i64, ptr %t221 + %t243 = add i64 %t242, 1 + call void @finch_arr_reserve(ptr %t220, i64 %t243, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t244 = load ptr, ptr %t220 + %t245 = getelementptr inbounds { ptr, i64, i64 }, ptr %t244, i64 %t242 + store { ptr, i64, i64 } %t241, ptr %t245 + store i64 %t243, ptr %t221 + br label %endif6558 +endif6558: + %t246 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 + %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.4267, i64 1, 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 + %t253 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t252, 0 + %t254 = load %S.ast.Type, ptr %a176 + store %S.ast.Type %t254, ptr %a255 + call void @finch.copy.S_ast_Type(ptr %a256, ptr %a255) + %t257 = load %S.ast.Type, ptr %a256 + %t258 = insertvalue %S.gen.Place %t253, %S.ast.Type %t257, 1 + %t259 = insertvalue %S.gen.Ref %t246, %S.gen.Place %t258, 1 + call void @finch.drop.S_ast_Type(ptr %a176) + ret %S.gen.Ref %t259 +endif6544: + %t260 = load i64, ptr %a14 + %t261 = icmp slt i64 %t260, 0 + br i1 %t261, label %then6563, label %endif6565 +then6563: + %t262 = load ptr, ptr %a1 + %t263 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t264 = load { ptr, i64, i64 }, ptr %t263 + %t265 = call i1 @finch.gen.imports(ptr %t262, { ptr, i64, i64 } %t264) + br i1 %t265, label %then6566, label %endif6568 +then6566: + %t266 = load ptr, ptr %a1 + %t267 = load %S.ast.Node, ptr %a2 %t268 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 %t269 = load { ptr, i64, i64 }, ptr %t268 - store { ptr, i64, i64 } %t267, ptr %a271 + store { ptr, i64, i64 } { ptr @.str.4268, i64 1, i64 0 }, 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.4103, i64 10, i64 0 }, ptr %a276 + store { ptr, i64, i64 } { ptr @.str.4269, i64 43, 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 %endif6202 -endif6202: - %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.4104, 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 } %t273, ptr %a277 + call void @finch_str_drop(ptr %a277) + %t278 = load { ptr, i64, i64 }, ptr %a274 + %t279 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t280 = load { ptr, i64, i64 }, ptr %t279 + store { ptr, i64, i64 } %t278, ptr %a282 + store { ptr, i64, i64 } %t280, ptr %a283 + call void @finch_str_concat(ptr %a281, ptr %a282, ptr %a283) + store { ptr, i64, i64 } %t278, ptr %a284 + call void @finch_str_drop(ptr %a284) + %t285 = load { ptr, i64, i64 }, ptr %a281 store { ptr, i64, i64 } %t285, ptr %a287 - store { ptr, i64, i64 } { ptr @.str.4105, i64 1, i64 0 }, ptr %a288 + store { ptr, i64, i64 } { ptr @.str.4270, i64 10, 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 %endif6199 -endif6199: - %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 = 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 - %t303 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t302) - store { ptr, i64, i64 } { ptr @.str.4106, 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.4107, 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.4108, 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 -endif6120: - %t342 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 + store { ptr, i64, i64 } %t285, ptr %a289 + call void @finch_str_drop(ptr %a289) + %t290 = load { ptr, i64, i64 }, ptr %a286 + call void @finch.gen.fail(ptr %t266, %S.ast.Node %t267, { ptr, i64, i64 } %t290) + store { ptr, i64, i64 } %t290, ptr %a291 + call void @finch_str_drop(ptr %a291) + br label %endif6568 +endif6568: + %t292 = load ptr, ptr %a1 + %t293 = load %S.ast.Node, ptr %a2 + %t294 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t295 = load { ptr, i64, i64 }, ptr %t294 + store { ptr, i64, i64 } { ptr @.str.4271, i64 28, i64 0 }, ptr %a297 + store { ptr, i64, i64 } %t295, ptr %a298 + call void @finch_str_concat(ptr %a296, ptr %a297, ptr %a298) + %t299 = load { ptr, i64, i64 }, ptr %a296 + store { ptr, i64, i64 } %t299, ptr %a301 + store { ptr, i64, i64 } { ptr @.str.4272, i64 1, i64 0 }, ptr %a302 + call void @finch_str_concat(ptr %a300, ptr %a301, ptr %a302) + store { ptr, i64, i64 } %t299, ptr %a303 + call void @finch_str_drop(ptr %a303) + %t304 = load { ptr, i64, i64 }, ptr %a300 + call void @finch.gen.fail(ptr %t292, %S.ast.Node %t293, { ptr, i64, i64 } %t304) + store { ptr, i64, i64 } %t304, ptr %a305 + call void @finch_str_drop(ptr %a305) + br label %endif6565 +endif6565: + %t306 = load ptr, ptr %a1 + %t307 = load i64, ptr %a14 + %t308 = call %S.gen.Var @finch.gen.varAt(ptr %t306, i64 %t307) + store %S.gen.Var %t308, ptr %a309 + %t310 = load ptr, ptr %a1 + %t311 = load %S.ast.Node, ptr %a2 + %t312 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 + %t313 = load i64, ptr %t312 + %t314 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t315 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i32 0, i32 1 + %t316 = load i64, ptr %t315 + %t317 = getelementptr inbounds %S.gen.Var, ptr %a309, i32 0, i32 1 + %t318 = load %S.ast.Type, ptr %t317 + %t319 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t318) + store { ptr, i64, i64 } { ptr @.str.4273, i64 9, i64 0 }, ptr %a321 + store { ptr, i64, i64 } %t319, ptr %a322 + call void @finch_str_concat(ptr %a320, ptr %a321, ptr %a322) + store { ptr, i64, i64 } %t319, ptr %a323 + call void @finch_str_drop(ptr %a323) + %t324 = load { ptr, i64, i64 }, ptr %a320 + store { ptr, i64, i64 } %t324, ptr %a326 + store { ptr, i64, i64 } { ptr @.str.4274, i64 1, i64 0 }, ptr %a327 + call void @finch_str_concat(ptr %a325, ptr %a326, ptr %a327) + store { ptr, i64, i64 } %t324, ptr %a328 + call void @finch_str_drop(ptr %a328) + %t329 = load { ptr, i64, i64 }, ptr %a325 + %t330 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t331 = load { ptr, i64, i64 }, ptr %t330 + store { ptr, i64, i64 } %t329, ptr %a333 + store { ptr, i64, i64 } %t331, ptr %a334 + call void @finch_str_concat(ptr %a332, ptr %a333, ptr %a334) + store { ptr, i64, i64 } %t329, ptr %a335 + call void @finch_str_drop(ptr %a335) + %t336 = load { ptr, i64, i64 }, ptr %a332 + store { ptr, i64, i64 } %t336, ptr %a338 + store { ptr, i64, i64 } { ptr @.str.4275, i64 4, i64 0 }, ptr %a339 + call void @finch_str_concat(ptr %a337, ptr %a338, ptr %a339) + store { ptr, i64, i64 } %t336, ptr %a340 + call void @finch_str_drop(ptr %a340) + %t341 = load { ptr, i64, i64 }, ptr %a337 + %t342 = getelementptr inbounds %S.gen.Var, ptr %a309, i32 0, i32 7 %t343 = load { ptr, i64, i64 }, ptr %t342 - store { ptr, i64, i64 } %t343, ptr %a344 - store { ptr, i64, i64 } { ptr @.str.4109, 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 %then6203, label %endif6205 -then6203: - %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 -endif6205: - %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.4110, 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 %then6206, label %endif6208 -then6206: - %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 -endif6208: - %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 + %t344 = getelementptr inbounds %S.gen.Var, ptr %a309, i32 0, i32 8 + %t345 = load i64, ptr %t344 + %t346 = getelementptr inbounds %S.gen.Var, ptr %a309, i32 0, i32 9 + %t347 = load i64, ptr %t346 + call void @finch.gen.noteRef(ptr %t310, %S.ast.Node %t311, i64 %t313, i64 %t316, { ptr, i64, i64 } %t341, { ptr, i64, i64 } %t343, i64 %t345, i64 %t347) + store { ptr, i64, i64 } %t341, ptr %a348 + call void @finch_str_drop(ptr %a348) + %t349 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 + %t350 = getelementptr inbounds %S.gen.Var, ptr %a309, i32 0, i32 2 + %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 + %t355 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t354, 0 + %t356 = getelementptr inbounds %S.gen.Var, ptr %a309, i32 0, i32 1 + %t357 = load %S.ast.Type, ptr %t356 + 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 + %t361 = insertvalue %S.gen.Place %t355, %S.ast.Type %t360, 1 + %t362 = insertvalue %S.gen.Ref %t349, %S.gen.Place %t361, 1 + call void @finch.drop.S_gen_Var(ptr %a309) + ret %S.gen.Ref %t362 +endif6486: + %t363 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 + %t364 = load { ptr, i64, i64 }, ptr %t363 + store { ptr, i64, i64 } %t364, ptr %a365 + store { ptr, i64, i64 } { ptr @.str.4276, i64 6, i64 0 }, ptr %a366 + %t367 = call i32 @finch_str_eq(ptr %a365, ptr %a366) + %t368 = icmp ne i32 %t367, 0 + br i1 %t368, label %then6569, label %endif6571 +then6569: + %t369 = load ptr, ptr %a1 + %t370 = load %S.ast.Node, ptr %a2 + %t371 = load i1, ptr %a3 + %t372 = call %S.gen.Ref @finch.gen.member(ptr %t369, %S.ast.Node %t370, i1 %t371) + ret %S.gen.Ref %t372 +endif6571: + %t373 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 + %t374 = load { ptr, i64, i64 }, ptr %t373 + store { ptr, i64, i64 } %t374, ptr %a375 + store { ptr, i64, i64 } { ptr @.str.4277, i64 5, i64 0 }, ptr %a376 + %t377 = call i32 @finch_str_eq(ptr %a375, ptr %a376) + %t378 = icmp ne i32 %t377, 0 + br i1 %t378, label %then6572, label %endif6574 +then6572: + %t379 = load ptr, ptr %a1 + %t380 = load %S.ast.Node, ptr %a2 + %t381 = load i1, ptr %a3 + %t382 = call %S.gen.Ref @finch.gen.index(ptr %t379, %S.ast.Node %t380, i1 %t381) + ret %S.gen.Ref %t382 +endif6574: + %t383 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 + %t384 = load ptr, ptr %a1 + %t385 = load %S.ast.Node, ptr %a2 + %t386 = call %S.gen.Val @finch.gen.expr(ptr %t384, %S.ast.Node %t385) + %t387 = insertvalue %S.gen.Ref %t383, %S.gen.Val %t386, 2 + ret %S.gen.Ref %t387 } define internal { ptr, i64, i64 } @finch.gen.llFloat({ ptr, i64, i64 } %p0) { @@ -55831,30 +65991,32 @@ entry: %a15 = alloca { ptr, i64, i64 }, align 16 %a16 = alloca { ptr, i64, i64 }, align 16 %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 %a21 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 + %a22 = alloca { ptr, i64, i64 }, align 16 + %a23 = alloca { ptr, i64, i64 }, align 16 %a28 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca i64, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 + %a29 = alloca { ptr, i64, i64 }, align 16 + %a30 = alloca { ptr, i64, i64 }, align 16 + %a32 = alloca i64, align 16 %a36 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 + %a37 = alloca { ptr, i64, i64 }, align 16 + %a38 = alloca { ptr, i64, i64 }, align 16 %a43 = 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 - %a51 = 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 + %a49 = 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 %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = 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 + %a65 = 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 store { ptr, i64, i64 } %p0, ptr %a1 %t2 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t2, ptr %a3 @@ -55863,81 +66025,89 @@ 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.4112, i64 1, i64 0 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.4279, 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 %then6209, label %endif6211 -then6209: + br i1 %t12, label %then6575, label %endif6577 +then6575: %t13 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.4113, i64 1, i64 0 }, ptr %a15 + store { ptr, i64, i64 } { ptr @.str.4280, 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 %endif6211 -endif6211: %t18 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t17, ptr %a6 store { ptr, i64, i64 } %t18, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.4115, 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 %then6212, label %endif6214 -then6212: - %t25 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t25, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.4117, 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 %then6215, label %endif6217 -then6215: - %t33 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t33, ptr %a34 - store { ptr, i64, i64 } { ptr @.str.4119, i64 1, i64 0 }, ptr %a36 - %t37 = call i64 @finch_str_find(ptr %a34, ptr %a36) - store i64 %t37, ptr %a30 - br label %endif6217 -endif6217: - %t38 = load i64, ptr %a30 - %t39 = icmp slt i64 %t38, 0 - br i1 %t39, label %then6218, label %endif6220 -then6218: - %t40 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t40, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.4120, 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 -endif6220: - %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.4121, i64 3369) - %t49 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } %t49, ptr %a51 - store { ptr, i64, i64 } { ptr @.str.4122, 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 - store { ptr, i64, i64 } %t54, ptr %a55 - %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.4123, 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 -endif6214: - %t65 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t65, ptr %a66 - call void @finch_str_copy(ptr %a67, ptr %a66) - %t68 = load { ptr, i64, i64 }, ptr %a67 - ret { ptr, i64, i64 } %t68 + call void @finch_str_drop(ptr %a19) + br label %endif6577 +endif6577: + %t20 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t20, ptr %a21 + store { ptr, i64, i64 } { ptr @.str.4282, i64 1, i64 0 }, ptr %a23 + %t24 = call i64 @finch_str_find(ptr %a21, ptr %a23) + %t25 = icmp sge i64 %t24, 0 + %t26 = xor i1 %t25, true + br i1 %t26, label %then6578, label %endif6580 +then6578: + %t27 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t27, ptr %a28 + store { ptr, i64, i64 } { ptr @.str.4284, i64 1, i64 0 }, ptr %a30 + %t31 = call i64 @finch_str_find(ptr %a28, ptr %a30) + store i64 %t31, ptr %a32 + %t33 = load i64, ptr %a32 + %t34 = icmp slt i64 %t33, 0 + br i1 %t34, label %then6581, label %endif6583 +then6581: + %t35 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t35, ptr %a36 + store { ptr, i64, i64 } { ptr @.str.4286, i64 1, i64 0 }, ptr %a38 + %t39 = call i64 @finch_str_find(ptr %a36, ptr %a38) + store i64 %t39, ptr %a32 + br label %endif6583 +endif6583: + %t40 = load i64, ptr %a32 + %t41 = icmp slt i64 %t40, 0 + br i1 %t41, label %then6584, label %endif6586 +then6584: + %t42 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t42, ptr %a44 + store { ptr, i64, i64 } { ptr @.str.4287, i64 2, 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_str_drop(ptr %a6) + ret { ptr, i64, i64 } %t46 +endif6586: + %t47 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t47, ptr %a48 + %t50 = load i64, ptr %a32 + call void @finch_str_sub(ptr %a49, ptr %a48, i64 0, i64 %t50, ptr @.str.4288, i64 3638) + %t51 = load { ptr, i64, i64 }, ptr %a49 + store { ptr, i64, i64 } %t51, ptr %a53 + store { ptr, i64, i64 } { ptr @.str.4289, i64 2, i64 0 }, ptr %a54 + call void @finch_str_concat(ptr %a52, ptr %a53, ptr %a54) + store { ptr, i64, i64 } %t51, ptr %a55 + call void @finch_str_drop(ptr %a55) + %t56 = load { ptr, i64, i64 }, ptr %a52 + %t57 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t57, ptr %a58 + %t60 = load i64, ptr %a32 + %t61 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 + %t62 = load i64, ptr %t61 + call void @finch_str_sub(ptr %a59, ptr %a58, i64 %t60, i64 %t62, ptr @.str.4290, i64 3638) + %t63 = load { ptr, i64, i64 }, ptr %a59 + store { ptr, i64, i64 } %t56, ptr %a65 + store { ptr, i64, i64 } %t63, ptr %a66 + call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) + store { ptr, i64, i64 } %t56, ptr %a67 + call void @finch_str_drop(ptr %a67) + store { ptr, i64, i64 } %t63, ptr %a68 + call void @finch_str_drop(ptr %a68) + %t69 = load { ptr, i64, i64 }, ptr %a64 + call void @finch_str_drop(ptr %a6) + ret { ptr, i64, i64 } %t69 +endif6580: + %t70 = load { ptr, i64, i64 }, ptr %a6 + ret { ptr, i64, i64 } %t70 } define internal i64 @finch.gen.enumNamed(ptr %p0, %S.ast.Node %p1) { @@ -55955,133 +66125,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.4124, i64 3, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.4291, 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.from6221 -logic.from6221: - br i1 %t8, label %logic.rhs6222, label %logic.end6223 -logic.rhs6222: + br label %logic.from6587 +logic.from6587: + br i1 %t8, label %logic.rhs6588, label %logic.end6589 +logic.rhs6588: %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.rend6224 -logic.rend6224: - br label %logic.end6223 -logic.end6223: - %t14 = phi i1 [ false, %logic.from6221 ], [ %t13, %logic.rend6224 ] - br i1 %t14, label %then6225, label %endif6227 -then6225: + br label %logic.rend6590 +logic.rend6590: + br label %logic.end6589 +logic.end6589: + %t14 = phi i1 [ false, %logic.from6587 ], [ %t13, %logic.rend6590 ] + br i1 %t14, label %then6591, label %endif6593 +then6591: %t15 = load ptr, ptr %a1 %t16 = load ptr, ptr %a1 %t17 = icmp eq ptr %t16, null - br i1 %t17, label %panic6228, label %ok6229 -panic6228: - call void @finch_panic(ptr @.str.4125, i64 3377, ptr @.str.4126) + br i1 %t17, label %panic6594, label %ok6595 +panic6594: + call void @finch_panic(ptr @.str.4292, i64 3646, ptr @.str.4293) unreachable -ok6229: - %t18 = getelementptr inbounds %S.gen.Gen, ptr %t16, i32 0, i32 13 +ok6595: + %t18 = getelementptr inbounds %S.gen.Gen, ptr %t16, i32 0, i32 14 %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 -endif6227: +endif6593: %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.4127, i64 6, i64 0 }, ptr %a26 + store { ptr, i64, i64 } { ptr @.str.4294, 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.from6230 -logic.from6230: - br i1 %t28, label %logic.rhs6231, label %logic.end6232 -logic.rhs6231: + br label %logic.from6596 +logic.from6596: + br i1 %t28, label %logic.rhs6597, label %logic.end6598 +logic.rhs6597: %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 %range6233, label %inrange6234 -range6233: - call void @finch_panic_index(ptr @.str.4128, i64 3379, i64 0, i64 %t31) + br i1 %t32, label %range6599, label %inrange6600 +range6599: + call void @finch_panic_index(ptr @.str.4295, i64 3648, i64 0, i64 %t31) unreachable -inrange6234: +inrange6600: %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.4129, i64 3, i64 0 }, ptr %a38 + store { ptr, i64, i64 } { ptr @.str.4296, 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.rend6235 -logic.rend6235: - br label %logic.end6232 -logic.end6232: - %t41 = phi i1 [ false, %logic.from6230 ], [ %t40, %logic.rend6235 ] - br label %logic.from6236 -logic.from6236: - br i1 %t41, label %logic.rhs6237, label %logic.end6238 -logic.rhs6237: + br label %logic.rend6601 +logic.rend6601: + br label %logic.end6598 +logic.end6598: + %t41 = phi i1 [ false, %logic.from6596 ], [ %t40, %logic.rend6601 ] + br label %logic.from6602 +logic.from6602: + br i1 %t41, label %logic.rhs6603, label %logic.end6604 +logic.rhs6603: %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 %range6239, label %inrange6240 -range6239: - call void @finch_panic_index(ptr @.str.4130, i64 3379, i64 0, i64 %t45) + br i1 %t46, label %range6605, label %inrange6606 +range6605: + call void @finch_panic_index(ptr @.str.4297, i64 3648, i64 0, i64 %t45) unreachable -inrange6240: +inrange6606: %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.rend6241 -logic.rend6241: - br label %logic.end6238 -logic.end6238: - %t53 = phi i1 [ false, %logic.from6236 ], [ %t52, %logic.rend6241 ] - br label %logic.from6242 -logic.from6242: - br i1 %t53, label %logic.rhs6243, label %logic.end6244 -logic.rhs6243: + br label %logic.rend6607 +logic.rend6607: + br label %logic.end6604 +logic.end6604: + %t53 = phi i1 [ false, %logic.from6602 ], [ %t52, %logic.rend6607 ] + br label %logic.from6608 +logic.from6608: + br i1 %t53, label %logic.rhs6609, label %logic.end6610 +logic.rhs6609: %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 %range6245, label %inrange6246 -range6245: - call void @finch_panic_index(ptr @.str.4131, i64 3379, i64 0, i64 %t57) + br i1 %t58, label %range6611, label %inrange6612 +range6611: + call void @finch_panic_index(ptr @.str.4298, i64 3648, i64 0, i64 %t57) unreachable -inrange6246: +inrange6612: %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.rend6247 -logic.rend6247: - br label %logic.end6244 -logic.end6244: - %t64 = phi i1 [ false, %logic.from6242 ], [ %t63, %logic.rend6247 ] - br i1 %t64, label %then6248, label %endif6250 -then6248: + br label %logic.rend6613 +logic.rend6613: + br label %logic.end6610 +logic.end6610: + %t64 = phi i1 [ false, %logic.from6608 ], [ %t63, %logic.rend6613 ] + br i1 %t64, label %then6614, label %endif6616 +then6614: %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 %range6251, label %inrange6252 -range6251: - call void @finch_panic_index(ptr @.str.4132, i64 3380, i64 0, i64 %t68) + br i1 %t69, label %range6617, label %inrange6618 +range6617: + call void @finch_panic_index(ptr @.str.4299, i64 3649, i64 0, i64 %t68) unreachable -inrange6252: +inrange6618: %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 @@ -56090,7 +66260,7 @@ inrange6252: %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 -endif6250: +endif6616: ret i64 -1 } @@ -56113,64 +66283,78 @@ entry: %a47 = alloca { ptr, i64, i64 }, align 16 %a48 = alloca { ptr, i64, i64 }, align 16 %a49 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 + %a50 = alloca { ptr, i64, i64 }, align 16 %a54 = alloca { ptr, i64, i64 }, align 16 %a55 = 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 %a59 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = 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 + %a69 = 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 - %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 + %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 + %a78 = alloca { ptr, i64, i64 }, align 16 + %a80 = 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 %a95 = 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 - %a99 = 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 { ptr, i64, i64 }, align 16 + %a105 = 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 %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 + %a120 = 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 + %a125 = alloca { ptr, i64, i64 }, align 16 + %a126 = 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 + %a129 = alloca { ptr, i64, i64 }, align 16 + %a130 = alloca { ptr, i64, i64 }, align 16 + %a131 = alloca { ptr, i64, i64 }, align 16 + %a133 = alloca { ptr, i64, i64 }, align 16 + %a142 = alloca { ptr, i64, i64 }, align 16 + %a148 = alloca { ptr, i64, i64 }, align 16 + %a149 = alloca { ptr, i64, i64 }, align 16 + %a154 = alloca { ptr, i64, i64 }, align 16 + %a155 = 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 %panic6253, label %ok6254 -panic6253: - call void @finch_panic(ptr @.str.4133, i64 3387, ptr @.str.4134) + br i1 %t5, label %panic6619, label %ok6620 +panic6619: + call void @finch_panic(ptr @.str.4300, i64 3656, ptr @.str.4301) unreachable -ok6254: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 20 +ok6620: + %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 21 %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 %range6255, label %inrange6256 -range6255: - call void @finch_panic_index(ptr @.str.4135, i64 3387, i64 %t7, i64 %t9) + br i1 %t10, label %range6621, label %inrange6622 +range6621: + call void @finch_panic_index(ptr @.str.4302, i64 3656, i64 %t7, i64 %t9) unreachable -inrange6256: +inrange6622: %t11 = extractvalue { ptr, i64, i64 } %t8, 0 %t12 = getelementptr inbounds %S.gen.EnumDef, ptr %t11, i64 %t7 %t13 = load %S.gen.EnumDef, ptr %t12 @@ -56186,154 +66370,183 @@ inrange6256: %t23 = load i64, ptr %t19 %t24 = load ptr, ptr %t18 store i64 0, ptr %a25 - br label %find.cond6257 -find.cond6257: + br label %find.cond6623 +find.cond6623: %t26 = load i64, ptr %a25 %t27 = icmp slt i64 %t26, %t23 - br i1 %t27, label %find.body6258, label %find.end6261 -find.body6258: + br i1 %t27, label %find.body6624, label %find.end6627 +find.body6624: %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.hit6259, label %find.next6260 -find.hit6259: + br i1 %t33, label %find.hit6625, label %find.next6626 +find.hit6625: store i64 %t26, ptr %a22 - br label %find.end6261 -find.next6260: + br label %find.end6627 +find.next6626: %t34 = add i64 %t26, 1 store i64 %t34, ptr %a25 - br label %find.cond6257 -find.end6261: + br label %find.cond6623 +find.end6627: %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 %then6262, label %endif6264 -then6262: + br i1 %t38, label %then6628, label %endif6630 +then6628: %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.4136, i64 9, i64 0 }, ptr %a44 + store { ptr, i64, i64 } { ptr @.str.4303, 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.4137, i64 17, i64 0 }, ptr %a49 + store { ptr, i64, i64 } { ptr @.str.4304, 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 - %t52 = load { ptr, i64, i64 }, ptr %t51 - store { ptr, i64, i64 } %t50, ptr %a54 - store { ptr, i64, i64 } %t52, ptr %a55 - 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.4138, 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.4139, 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 - 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.4140, 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 %endif6264 -endif6264: - %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 - %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.4141, 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.4142, 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 } %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.4143, 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 %range6265, label %inrange6266 -range6265: - call void @finch_panic_index(ptr @.str.4144, i64 3392, i64 %t103, i64 %t105) + store { ptr, i64, i64 } %t46, ptr %a50 + call void @finch_str_drop(ptr %a50) + %t51 = load { ptr, i64, i64 }, ptr %a47 + %t52 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t53 = load { ptr, i64, i64 }, ptr %t52 + store { ptr, i64, i64 } %t51, ptr %a55 + store { ptr, i64, i64 } %t53, ptr %a56 + call void @finch_str_concat(ptr %a54, ptr %a55, ptr %a56) + store { ptr, i64, i64 } %t51, ptr %a57 + call void @finch_str_drop(ptr %a57) + %t58 = load { ptr, i64, i64 }, ptr %a54 + store { ptr, i64, i64 } %t58, ptr %a60 + store { ptr, i64, i64 } { ptr @.str.4305, i64 11, i64 0 }, ptr %a61 + call void @finch_str_concat(ptr %a59, ptr %a60, ptr %a61) + store { ptr, i64, i64 } %t58, ptr %a62 + call void @finch_str_drop(ptr %a62) + %t63 = load { ptr, i64, i64 }, ptr %a59 + %t64 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 2 + %t65 = getelementptr inbounds { ptr, i64, i64 }, ptr %t64, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.4306, i64 2, i64 0 }, ptr %a66 + call void @finch_str_join(ptr %a67, ptr %t64, ptr %a66) + %t68 = load { ptr, i64, i64 }, ptr %a67 + store { ptr, i64, i64 } %t63, ptr %a70 + store { ptr, i64, i64 } %t68, ptr %a71 + call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) + store { ptr, i64, i64 } %t63, ptr %a72 + call void @finch_str_drop(ptr %a72) + store { ptr, i64, i64 } %t68, ptr %a73 + call void @finch_str_drop(ptr %a73) + %t74 = load { ptr, i64, i64 }, ptr %a69 + store { ptr, i64, i64 } %t74, ptr %a76 + store { ptr, i64, i64 } { ptr @.str.4307, i64 1, i64 0 }, ptr %a77 + call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77) + store { ptr, i64, i64 } %t74, ptr %a78 + call void @finch_str_drop(ptr %a78) + %t79 = load { ptr, i64, i64 }, ptr %a75 + call void @finch.gen.fail(ptr %t39, %S.ast.Node %t40, { ptr, i64, i64 } %t79) + store { ptr, i64, i64 } %t79, ptr %a80 + call void @finch_str_drop(ptr %a80) + br label %endif6630 +endif6630: + %t81 = load ptr, ptr %a1 + %t82 = load %S.ast.Node, ptr %a2 + %t83 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 + %t84 = load i64, ptr %t83 + %t85 = add i64 %t84, 1 + %t86 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t87 = getelementptr inbounds { ptr, i64, i64 }, ptr %t86, i32 0, i32 1 + %t88 = load i64, ptr %t87 + %t89 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 1 + %t90 = load { ptr, i64, i64 }, ptr %t89 + store { ptr, i64, i64 } { ptr @.str.4308, i64 9, 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.4309, i64 1, i64 0 }, ptr %a97 + call void @finch_str_concat(ptr %a95, ptr %a96, ptr %a97) + store { ptr, i64, i64 } %t94, ptr %a98 + call void @finch_str_drop(ptr %a98) + %t99 = load { ptr, i64, i64 }, ptr %a95 + %t100 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t101 = load { ptr, i64, i64 }, ptr %t100 + store { ptr, i64, i64 } %t99, ptr %a103 + store { ptr, i64, i64 } %t101, ptr %a104 + call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104) + store { ptr, i64, i64 } %t99, ptr %a105 + call void @finch_str_drop(ptr %a105) + %t106 = load { ptr, i64, i64 }, ptr %a102 + store { ptr, i64, i64 } %t106, ptr %a108 + store { ptr, i64, i64 } { ptr @.str.4310, i64 3, i64 0 }, ptr %a109 + call void @finch_str_concat(ptr %a107, ptr %a108, ptr %a109) + store { ptr, i64, i64 } %t106, ptr %a110 + call void @finch_str_drop(ptr %a110) + %t111 = load { ptr, i64, i64 }, ptr %a107 + %t112 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 3 + %t113 = load i64, ptr %a36 + %t114 = load { ptr, i64, i64 }, ptr %t112 + %t115 = extractvalue { ptr, i64, i64 } %t114, 1 + %t116 = icmp uge i64 %t113, %t115 + br i1 %t116, label %range6631, label %inrange6632 +range6631: + call void @finch_panic_index(ptr @.str.4311, i64 3661, i64 %t113, i64 %t115) unreachable -inrange6266: - %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.4145, 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.4146, 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 %range6267, label %inrange6268 -range6267: - call void @finch_panic_index(ptr @.str.4147, i64 3393, i64 %t121, i64 %t123) +inrange6632: + %t117 = extractvalue { ptr, i64, i64 } %t114, 0 + %t118 = getelementptr inbounds i64, ptr %t117, i64 %t113 + %t119 = load i64, ptr %t118 + call void @finch_str_from_int(ptr %a120, i64 %t119) + %t121 = load { ptr, i64, i64 }, ptr %a120 + store { ptr, i64, i64 } %t111, ptr %a123 + store { ptr, i64, i64 } %t121, ptr %a124 + call void @finch_str_concat(ptr %a122, ptr %a123, ptr %a124) + store { ptr, i64, i64 } %t111, ptr %a125 + call void @finch_str_drop(ptr %a125) + store { ptr, i64, i64 } %t121, ptr %a126 + call void @finch_str_drop(ptr %a126) + %t127 = load { ptr, i64, i64 }, ptr %a122 + store { ptr, i64, i64 } %t127, ptr %a129 + store { ptr, i64, i64 } { ptr @.str.4312, i64 4, i64 0 }, ptr %a130 + call void @finch_str_concat(ptr %a128, ptr %a129, ptr %a130) + store { ptr, i64, i64 } %t127, ptr %a131 + call void @finch_str_drop(ptr %a131) + %t132 = load { ptr, i64, i64 }, ptr %a128 + call void @finch.gen.noteRef(ptr %t81, %S.ast.Node %t82, i64 %t85, i64 %t88, { ptr, i64, i64 } %t132, { ptr, i64, i64 } { ptr @.str.4313, i64 0, i64 0 }, i64 0, i64 0) + store { ptr, i64, i64 } %t132, ptr %a133 + call void @finch_str_drop(ptr %a133) + %t134 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 3 + %t135 = load i64, ptr %a36 + %t136 = load { ptr, i64, i64 }, ptr %t134 + %t137 = extractvalue { ptr, i64, i64 } %t136, 1 + %t138 = icmp uge i64 %t135, %t137 + br i1 %t138, label %range6633, label %inrange6634 +range6633: + call void @finch_panic_index(ptr @.str.4314, i64 3662, i64 %t135, i64 %t137) unreachable -inrange6268: - %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.4148, 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 +inrange6634: + %t139 = extractvalue { ptr, i64, i64 } %t136, 0 + %t140 = getelementptr inbounds i64, ptr %t139, i64 %t135 + %t141 = load i64, ptr %t140 + call void @finch_str_from_int(ptr %a142, i64 %t141) + %t143 = load { ptr, i64, i64 }, ptr %a142 + %t144 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t143, 0 + %t145 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.4315, i64 4, i64 0 }, 0 + %t146 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 1 + %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.ast.Type %t145, { ptr, i64, i64 } %t150, 2 + %t152 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 0 + %t153 = load { ptr, i64, i64 }, ptr %t152 + store { ptr, i64, i64 } %t153, ptr %a154 + call void @finch_str_copy(ptr %a155, ptr %a154) + %t156 = load { ptr, i64, i64 }, ptr %a155 + %t157 = insertvalue %S.ast.Type %t151, { ptr, i64, i64 } %t156, 3 + %t158 = insertvalue %S.gen.Val %t144, %S.ast.Type %t157, 1 + call void @finch.drop.S_gen_EnumDef(ptr %a17) + ret %S.gen.Val %t158 } define internal %S.gen.Ref @finch.gen.member(ptr %p0, %S.ast.Node %p1, i1 %p2) { @@ -56348,234 +66561,302 @@ entry: %a42 = alloca %S.ast.Type, align 16 %a48 = alloca %S.ast.Type, align 16 %a49 = alloca %S.ast.Type, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 + %a52 = alloca %S.ast.Type, align 16 + %a55 = alloca { ptr, i64, i64 }, align 16 + %a56 = alloca { ptr, i64, i64 }, align 16 + %a62 = alloca { ptr, i64, i64 }, align 16 %a63 = 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 + %a65 = alloca { ptr, i64, i64 }, align 16 + %a74 = 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 %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 + %a94 = alloca { ptr, i64, i64 }, align 16 %a97 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca %S.ast.Type, align 16 - %a108 = alloca %S.ast.Type, align 16 - %a110 = alloca %S.ast.Type, align 16 - %a111 = alloca i1, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca i64, align 16 - %a137 = alloca i64, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 + %a98 = alloca { ptr, i64, i64 }, align 16 + %a99 = 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 + %a104 = alloca { ptr, i64, i64 }, align 16 + %a107 = alloca { ptr, i64, i64 }, align 16 + %a108 = alloca { ptr, i64, i64 }, align 16 + %a116 = alloca %S.ast.Type, align 16 + %a117 = alloca %S.ast.Type, align 16 + %a119 = alloca %S.ast.Type, align 16 + %a120 = alloca i1, align 16 + %a123 = alloca { ptr, i64, i64 }, align 16 + %a124 = alloca { ptr, i64, i64 }, align 16 + %a143 = alloca i64, align 16 + %a146 = alloca i64, align 16 %a151 = alloca { ptr, i64, i64 }, align 16 %a152 = alloca { ptr, i64, i64 }, align 16 %a160 = alloca { ptr, i64, i64 }, align 16 %a161 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca %S.ast.Type, align 16 - %a166 = alloca %S.ast.Type, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 + %a169 = alloca { ptr, i64, i64 }, align 16 + %a170 = alloca { ptr, i64, i64 }, align 16 + %a174 = alloca %S.ast.Type, align 16 + %a175 = alloca %S.ast.Type, align 16 %a181 = alloca { ptr, i64, i64 }, align 16 %a182 = 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 + %a189 = alloca { ptr, i64, i64 }, align 16 %a190 = alloca { ptr, i64, i64 }, align 16 %a191 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca %S.ast.Type, align 16 - %a196 = alloca %S.ast.Type, align 16 - %a201 = alloca %S.ast.Type, align 16 - %a202 = alloca %S.ast.Type, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a217 = 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 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 + %a192 = alloca { ptr, i64, i64 }, align 16 + %a194 = 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 + %a199 = alloca { ptr, i64, i64 }, align 16 + %a202 = alloca { ptr, i64, i64 }, align 16 + %a203 = alloca { ptr, i64, i64 }, align 16 + %a207 = alloca %S.ast.Type, align 16 + %a208 = alloca %S.ast.Type, align 16 + %a213 = alloca %S.gen.Ref, align 16 + %a215 = alloca %S.ast.Type, align 16 + %a216 = alloca %S.ast.Type, align 16 + %a219 = alloca %S.ast.Type, align 16 + %a222 = alloca { ptr, i64, i64 }, align 16 + %a223 = alloca { ptr, i64, i64 }, align 16 + %a231 = alloca { ptr, i64, i64 }, align 16 %a232 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 + %a233 = alloca { ptr, i64, i64 }, align 16 + %a235 = 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 + %a240 = alloca { ptr, i64, i64 }, align 16 + %a243 = alloca { ptr, i64, i64 }, align 16 + %a244 = 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 - %a266 = alloca { ptr, i64, i64 }, align 16 + %a259 = alloca { ptr, i64, i64 }, align 16 + %a260 = alloca { ptr, i64, i64 }, align 16 %a267 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 + %a268 = alloca { ptr, i64, i64 }, align 16 + %a269 = alloca { ptr, i64, i64 }, align 16 + %a271 = 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 + %a276 = alloca { ptr, i64, i64 }, align 16 + %a286 = alloca { ptr, i64, i64 }, align 16 + %a287 = alloca { ptr, i64, i64 }, align 16 + %a302 = alloca { ptr, i64, i64 }, align 16 + %a303 = alloca { ptr, i64, i64 }, align 16 + %a308 = alloca { ptr, i64, i64 }, align 16 + %a309 = alloca { ptr, i64, i64 }, align 16 %a315 = 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 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a356 = alloca { ptr, i64, i64 }, align 16 - %a357 = alloca { ptr, i64, i64 }, align 16 + %a316 = 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 + %a344 = alloca { ptr, i64, i64 }, align 16 + %a345 = alloca { ptr, i64, i64 }, align 16 + %a347 = alloca { ptr, i64, i64 }, align 16 %a358 = 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 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 + %a363 = alloca { ptr, i64, i64 }, align 16 + %a364 = alloca { ptr, i64, i64 }, align 16 + %a374 = alloca %S.ast.Type, align 16 + %a380 = alloca { ptr, i64, i64 }, align 16 + %a381 = alloca { ptr, i64, i64 }, align 16 + %a382 = alloca { ptr, i64, i64 }, align 16 %a384 = alloca { ptr, i64, i64 }, align 16 %a385 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %a399 = 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 + %a386 = alloca { ptr, i64, i64 }, align 16 + %a387 = alloca { ptr, i64, i64 }, align 16 + %a390 = alloca { ptr, i64, i64 }, align 16 + %a404 = alloca { ptr, i64, i64 }, align 16 + %a405 = alloca { ptr, i64, i64 }, align 16 %a410 = alloca { ptr, i64, i64 }, align 16 %a411 = alloca { ptr, i64, i64 }, align 16 - %a412 = alloca { ptr, i64, i64 }, align 16 - %a423 = alloca { ptr, i64, i64 }, align 16 + %a417 = alloca { ptr, i64, i64 }, align 16 + %a418 = alloca { ptr, i64, i64 }, align 16 %a424 = alloca { ptr, i64, i64 }, align 16 %a425 = alloca { ptr, i64, i64 }, align 16 - %a427 = alloca { ptr, i64, i64 }, align 16 - %a428 = alloca { ptr, i64, i64 }, align 16 - %a429 = 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 %a436 = 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 - %a440 = alloca { ptr, i64, i64 }, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 + %a441 = alloca { ptr, i64, i64 }, align 16 + %a451 = alloca { ptr, i64, i64 }, align 16 + %a452 = alloca { ptr, i64, i64 }, align 16 + %a453 = alloca { ptr, i64, i64 }, align 16 + %a454 = alloca { ptr, i64, i64 }, align 16 + %a456 = 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 - %a461 = alloca { ptr, i64, i64 }, align 16 - %a462 = alloca { ptr, i64, i64 }, align 16 - %a463 = alloca { ptr, i64, i64 }, align 16 - %a468 = alloca { ptr, i64, i64 }, align 16 + %a464 = alloca { ptr, i64, i64 }, align 16 + %a465 = alloca { ptr, i64, i64 }, align 16 + %a466 = alloca { ptr, i64, i64 }, align 16 + %a467 = 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 %a472 = alloca { ptr, i64, i64 }, align 16 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a474 = alloca { ptr, i64, i64 }, align 16 - %a483 = alloca { ptr, i64, i64 }, align 16 - %a484 = alloca { ptr, i64, i64 }, align 16 + %a475 = alloca { ptr, i64, i64 }, align 16 + %a476 = alloca { ptr, i64, i64 }, align 16 + %a489 = alloca { ptr, i64, i64 }, align 16 + %a490 = 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 + %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 - %a498 = alloca { ptr, i64, i64 }, align 16 - %a499 = alloca { ptr, i64, i64 }, align 16 - %a501 = alloca { ptr, i64, i64 }, align 16 %a502 = alloca { ptr, i64, i64 }, align 16 %a503 = alloca { ptr, i64, i64 }, align 16 - %a520 = alloca %S.gen.StructDef, align 16 - %a521 = alloca %S.gen.StructDef, align 16 - %a523 = alloca %S.gen.StructDef, align 16 - %a528 = alloca i64, align 16 - %a531 = alloca i64, align 16 - %a536 = alloca { ptr, i64, i64 }, align 16 + %a504 = alloca { ptr, i64, i64 }, align 16 + %a505 = alloca { ptr, i64, i64 }, align 16 + %a507 = alloca { ptr, i64, i64 }, align 16 + %a508 = alloca { ptr, i64, i64 }, align 16 + %a509 = alloca { ptr, i64, i64 }, align 16 + %a510 = alloca { ptr, i64, i64 }, align 16 + %a513 = alloca { ptr, i64, i64 }, align 16 + %a514 = alloca { ptr, i64, i64 }, align 16 + %a520 = alloca { ptr, i64, i64 }, align 16 + %a521 = alloca { ptr, i64, i64 }, align 16 + %a529 = alloca { ptr, i64, i64 }, align 16 + %a530 = alloca { ptr, i64, i64 }, align 16 %a537 = alloca { ptr, i64, i64 }, align 16 - %a542 = alloca i64, align 16 + %a538 = alloca { ptr, i64, i64 }, align 16 + %a539 = alloca { ptr, i64, i64 }, align 16 + %a540 = alloca { ptr, i64, i64 }, align 16 + %a544 = 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 %a549 = alloca { ptr, i64, i64 }, align 16 %a550 = alloca { ptr, i64, i64 }, align 16 %a551 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 + %a552 = alloca { ptr, i64, i64 }, align 16 %a554 = alloca { ptr, i64, i64 }, align 16 - %a555 = alloca { ptr, i64, i64 }, align 16 - %a559 = alloca { ptr, i64, i64 }, align 16 - %a560 = alloca { ptr, i64, i64 }, align 16 - %a561 = 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 - %a569 = alloca { ptr, i64, i64 }, align 16 - %a570 = 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 - %a576 = alloca { ptr, i64, i64 }, align 16 - %a577 = alloca { ptr, i64, i64 }, align 16 - %a578 = alloca { ptr, i64, i64 }, align 16 - %a588 = alloca %S.ast.Type, align 16 - %a589 = alloca %S.ast.Type, align 16 - %a591 = alloca %S.ast.Type, align 16 + %a570 = alloca %S.gen.StructDef, align 16 + %a571 = alloca %S.gen.StructDef, align 16 + %a573 = alloca %S.gen.StructDef, align 16 + %a578 = alloca i64, align 16 + %a581 = alloca i64, align 16 + %a586 = alloca { ptr, i64, i64 }, align 16 + %a587 = alloca { ptr, i64, i64 }, align 16 + %a592 = alloca i64, align 16 + %a599 = 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 - %a603 = alloca { ptr, i64, i64 }, align 16 %a604 = 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 - %a608 = 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 %a616 = 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 + %a623 = alloca { ptr, i64, i64 }, align 16 + %a624 = 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 + %a633 = alloca { ptr, i64, i64 }, align 16 + %a634 = alloca { ptr, i64, i64 }, align 16 + %a635 = 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 - %a655 = alloca { ptr, i64, i64 }, align 16 - %a656 = alloca { ptr, i64, i64 }, align 16 - %a657 = alloca { ptr, i64, i64 }, align 16 + %a646 = alloca %S.ast.Type, align 16 + %a647 = alloca %S.ast.Type, align 16 + %a649 = alloca %S.ast.Type, 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 - %a668 = alloca %S.ast.Type, align 16 - %a669 = alloca %S.ast.Type, 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 + %a672 = alloca { ptr, i64, i64 }, align 16 + %a673 = alloca { ptr, i64, i64 }, align 16 + %a674 = alloca { ptr, i64, i64 }, align 16 + %a675 = alloca { ptr, i64, i64 }, align 16 %a677 = alloca { ptr, i64, i64 }, align 16 %a678 = alloca { ptr, i64, i64 }, align 16 %a679 = alloca { ptr, i64, i64 }, align 16 - %a681 = 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 - %a688 = alloca { ptr, i64, i64 }, align 16 %a689 = 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 + %a697 = alloca { ptr, i64, i64 }, align 16 + %a702 = alloca { ptr, i64, i64 }, align 16 + %a703 = alloca { ptr, i64, i64 }, align 16 %a704 = alloca { ptr, i64, i64 }, align 16 - %a706 = alloca { ptr, i64, i64 }, align 16 + %a705 = 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 + %a709 = alloca { ptr, i64, i64 }, align 16 + %a710 = alloca { ptr, i64, i64 }, align 16 + %a720 = alloca { ptr, i64, i64 }, align 16 + %a722 = alloca { ptr, i64, i64 }, align 16 + %a723 = 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 + %a729 = alloca { ptr, i64, i64 }, align 16 + %a730 = alloca { ptr, i64, i64 }, align 16 + %a733 = alloca { ptr, i64, i64 }, align 16 + %a734 = alloca { ptr, i64, i64 }, align 16 + %a738 = alloca %S.ast.Type, align 16 + %a739 = alloca %S.ast.Type, align 16 + %a747 = 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 + %a752 = 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 + %a760 = 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 + %a765 = 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 + %a778 = 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 + %a783 = alloca { ptr, i64, i64 }, align 16 + %a784 = 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 + %a795 = alloca %S.ast.Type, align 16 + %a796 = alloca %S.ast.Type, align 16 + %a799 = alloca %S.gen.Val, align 16 + %a813 = alloca %S.ast.Type, align 16 + %a814 = alloca %S.ast.Type, align 16 + %a819 = alloca %S.gen.Val, align 16 + %a825 = alloca %S.gen.Val, align 16 + %a826 = alloca %S.gen.Val, align 16 store ptr %p0, ptr %a1 store %S.ast.Node %p1, ptr %a2 store i1 %p2, ptr %a3 @@ -56584,11 +66865,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 %range6269, label %inrange6270 -range6269: - call void @finch_panic_index(ptr @.str.4149, i64 3397, i64 0, i64 %t7) + br i1 %t8, label %range6635, label %inrange6636 +range6635: + call void @finch_panic_index(ptr @.str.4316, i64 3666, i64 0, i64 %t7) unreachable -inrange6270: +inrange6636: %t9 = extractvalue { ptr, i64, i64 } %t6, 0 %t10 = getelementptr inbounds %S.ast.Node, ptr %t9, i64 0 %t11 = load %S.ast.Node, ptr %t10 @@ -56596,16 +66877,16 @@ inrange6270: store i64 %t12, ptr %a13 %t14 = load i64, ptr %a13 %t15 = icmp sge i64 %t14, 0 - br i1 %t15, label %then6271, label %endif6273 -then6271: + br i1 %t15, label %then6637, label %endif6639 +then6637: %t16 = load i1, ptr %a3 - br i1 %t16, label %then6274, label %endif6276 -then6274: + br i1 %t16, label %then6640, label %endif6642 +then6640: %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.4150, i64 37, i64 0 }) - br label %endif6276 -endif6276: + call void @finch.gen.fail(ptr %t17, %S.ast.Node %t18, { ptr, i64, i64 } { ptr @.str.4317, i64 37, i64 0 }) + br label %endif6642 +endif6642: %t19 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 %t20 = load ptr, ptr %a1 %t21 = load %S.ast.Node, ptr %a2 @@ -56613,17 +66894,17 @@ endif6276: %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 -endif6273: +endif6639: %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 %range6277, label %inrange6278 -range6277: - call void @finch_panic_index(ptr @.str.4151, i64 3404, i64 0, i64 %t28) + br i1 %t29, label %range6643, label %inrange6644 +range6643: + call void @finch_panic_index(ptr @.str.4318, i64 3673, i64 0, i64 %t28) unreachable -inrange6278: +inrange6644: %t30 = extractvalue { ptr, i64, i64 } %t27, 0 %t31 = getelementptr inbounds %S.ast.Node, ptr %t30, i64 0 %t32 = load %S.ast.Node, ptr %t31 @@ -56639,966 +66920,1148 @@ inrange6278: 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 %then6279, label %endif6281 -then6279: + br i1 %t44, label %then6645, label %endif6647 +then6645: %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 store %S.ast.Type %t47, ptr %a48 call void @finch.copy.S_ast_Type(ptr %a49, ptr %a48) %t50 = load %S.ast.Type, ptr %a49 + %t51 = load %S.ast.Type, ptr %a42 store %S.ast.Type %t50, ptr %a42 - br label %endif6281 -endif6281: - %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.4152, 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 %then6282, label %endif6284 -then6282: - %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 - store { ptr, i64, i64 } %t59, ptr %a60 - call void @finch_str_copy(ptr %a61, ptr %a60) - %t62 = load { ptr, i64, i64 }, ptr %a61 - 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 %then6285, label %endif6287 -then6285: - %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.4153, i64 3, i64 0 }, { ptr, i64, i64 } %t69) - store { ptr, i64, i64 } %t70, ptr %a63 - br label %endif6287 -endif6287: - %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 %then6288, label %endif6290 -then6288: - %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.4154, i64 57, i64 0 }) - br label %endif6290 -endif6290: - %t77 = load ptr, ptr %a1 - %t78 = load ptr, ptr %a1 - %t79 = load { ptr, i64, i64 }, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.4155, 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.4156, i64 6, i64 0 }, ptr %a86 + store %S.ast.Type %t51, ptr %a52 + call void @finch.drop.S_ast_Type(ptr %a52) + br label %endif6647 +endif6647: + %t53 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 0 + %t54 = load { ptr, i64, i64 }, ptr %t53 + store { ptr, i64, i64 } %t54, ptr %a55 + store { ptr, i64, i64 } { ptr @.str.4319, i64 3, i64 0 }, ptr %a56 + %t57 = call i32 @finch_str_eq(ptr %a55, ptr %a56) + %t58 = icmp ne i32 %t57, 0 + br i1 %t58, label %then6648, label %endif6650 +then6648: + %t59 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 2 + %t60 = getelementptr inbounds %S.gen.Val, ptr %t59, i32 0, i32 0 + %t61 = load { ptr, i64, i64 }, ptr %t60 + store { ptr, i64, i64 } %t61, ptr %a62 + call void @finch_str_copy(ptr %a63, ptr %a62) + %t64 = load { ptr, i64, i64 }, ptr %a63 + store { ptr, i64, i64 } %t64, ptr %a65 + %t66 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 0 + %t67 = load i1, ptr %t66 + br i1 %t67, label %then6651, label %endif6653 +then6651: + %t68 = load ptr, ptr %a1 + %t69 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 1 + %t70 = getelementptr inbounds %S.gen.Place, ptr %t69, i32 0, i32 0 + %t71 = load { ptr, i64, i64 }, ptr %t70 + %t72 = call { ptr, i64, i64 } @finch.gen.load(ptr %t68, { ptr, i64, i64 } { ptr @.str.4320, i64 3, i64 0 }, { ptr, i64, i64 } %t71) + %t73 = load { ptr, i64, i64 }, ptr %a65 + store { ptr, i64, i64 } %t72, ptr %a65 + store { ptr, i64, i64 } %t73, ptr %a74 + call void @finch_str_drop(ptr %a74) + br label %endif6653 +endif6653: + %t75 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 1 + %t76 = getelementptr inbounds { ptr, i64, i64 }, ptr %t75, i32 0, i32 1 + %t77 = load i64, ptr %t76 + %t78 = icmp eq i64 %t77, 0 + br i1 %t78, label %then6654, label %endif6656 +then6654: + %t79 = load ptr, ptr %a1 + %t80 = load %S.ast.Node, ptr %a2 + call void @finch.gen.fail(ptr %t79, %S.ast.Node %t80, { ptr, i64, i64 } { ptr @.str.4321, i64 57, i64 0 }) + br label %endif6656 +endif6656: + %t81 = load ptr, ptr %a1 + %t82 = load ptr, ptr %a1 + %t83 = load { ptr, i64, i64 }, ptr %a65 + store { ptr, i64, i64 } { ptr @.str.4322, i64 12, 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 - %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.4157, 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.4158, 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 - call void @finch.gen.panicIf(ptr %t77, { ptr, i64, i64 } %t88, { ptr, i64, i64 } %t98, %S.ast.Node %t99) - %t100 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 1 - %t101 = load { ptr, i64, i64 }, ptr %t100 - %t102 = extractvalue { ptr, i64, i64 } %t101, 1 - %t103 = icmp uge i64 0, %t102 - br i1 %t103, label %range6291, label %inrange6292 -range6291: - call void @finch_panic_index(ptr @.str.4159, i64 3418, i64 0, i64 %t102) + store { ptr, i64, i64 } %t87, ptr %a89 + store { ptr, i64, i64 } { ptr @.str.4323, i64 6, i64 0 }, ptr %a90 + call void @finch_str_concat(ptr %a88, ptr %a89, ptr %a90) + store { ptr, i64, i64 } %t87, ptr %a91 + call void @finch_str_drop(ptr %a91) + %t92 = load { ptr, i64, i64 }, ptr %a88 + %t93 = call { ptr, i64, i64 } @finch.gen.op(ptr %t82, { ptr, i64, i64 } %t92) + store { ptr, i64, i64 } %t92, ptr %a94 + call void @finch_str_drop(ptr %a94) + %t95 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t96 = load { ptr, i64, i64 }, ptr %t95 + store { ptr, i64, i64 } { ptr @.str.4324, i64 6, 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.4325, i64 18, i64 0 }, ptr %a103 + call void @finch_str_concat(ptr %a101, ptr %a102, ptr %a103) + store { ptr, i64, i64 } %t100, ptr %a104 + call void @finch_str_drop(ptr %a104) + %t105 = load { ptr, i64, i64 }, ptr %a101 + %t106 = load %S.ast.Node, ptr %a2 + call void @finch.gen.panicIf(ptr %t81, { ptr, i64, i64 } %t93, { ptr, i64, i64 } %t105, %S.ast.Node %t106) + store { ptr, i64, i64 } %t93, ptr %a107 + call void @finch_str_drop(ptr %a107) + store { ptr, i64, i64 } %t105, ptr %a108 + call void @finch_str_drop(ptr %a108) + %t109 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 1 + %t110 = load { ptr, i64, i64 }, ptr %t109 + %t111 = extractvalue { ptr, i64, i64 } %t110, 1 + %t112 = icmp uge i64 0, %t111 + br i1 %t112, label %range6657, label %inrange6658 +range6657: + call void @finch_panic_index(ptr @.str.4326, i64 3687, i64 0, i64 %t111) unreachable -inrange6292: - %t104 = extractvalue { ptr, i64, i64 } %t101, 0 - %t105 = getelementptr inbounds %S.ast.Type, ptr %t104, i64 0 - %t106 = load %S.ast.Type, ptr %t105 - store %S.ast.Type %t106, ptr %a107 - call void @finch.copy.S_ast_Type(ptr %a108, ptr %a107) - %t109 = load %S.ast.Type, ptr %a108 - store %S.ast.Type %t109, ptr %a110 - store i1 false, ptr %a111 - %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.4160, 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 %then6293, label %endif6295 -then6293: - %t118 = load ptr, ptr %a1 - %t119 = icmp eq ptr %t118, null - br i1 %t119, label %panic6296, label %ok6297 -panic6296: - call void @finch_panic(ptr @.str.4161, i64 3421, ptr @.str.4162) +inrange6658: + %t113 = extractvalue { ptr, i64, i64 } %t110, 0 + %t114 = getelementptr inbounds %S.ast.Type, ptr %t113, i64 0 + %t115 = load %S.ast.Type, ptr %t114 + store %S.ast.Type %t115, ptr %a116 + call void @finch.copy.S_ast_Type(ptr %a117, ptr %a116) + %t118 = load %S.ast.Type, ptr %a117 + store %S.ast.Type %t118, ptr %a119 + store i1 false, ptr %a120 + %t121 = getelementptr inbounds %S.ast.Type, ptr %a119, i32 0, i32 0 + %t122 = load { ptr, i64, i64 }, ptr %t121 + store { ptr, i64, i64 } %t122, ptr %a123 + store { ptr, i64, i64 } { ptr @.str.4327, i64 6, i64 0 }, ptr %a124 + %t125 = call i32 @finch_str_eq(ptr %a123, ptr %a124) + %t126 = icmp ne i32 %t125, 0 + br i1 %t126, label %then6659, label %endif6661 +then6659: + %t127 = load ptr, ptr %a1 + %t128 = icmp eq ptr %t127, null + br i1 %t128, label %panic6662, label %ok6663 +panic6662: + call void @finch_panic(ptr @.str.4328, i64 3690, ptr @.str.4329) unreachable -ok6297: - %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 - %t123 = load { ptr, i64, i64 }, ptr %t122 - %t124 = getelementptr inbounds %S.ast.Type, ptr %a110, i32 0, i32 2 - %t125 = load { ptr, i64, i64 }, ptr %t124 - %t126 = call i64 @finch.gen.findStruct(ptr %t121, { ptr, i64, i64 } %t123, { ptr, i64, i64 } %t125) - %t127 = load { ptr, i64, i64 }, ptr %t120 - %t128 = extractvalue { ptr, i64, i64 } %t127, 1 - %t129 = icmp uge i64 %t126, %t128 - br i1 %t129, label %range6298, label %inrange6299 -range6298: - call void @finch_panic_index(ptr @.str.4163, i64 3421, i64 %t126, i64 %t128) +ok6663: + %t129 = getelementptr inbounds %S.gen.Gen, ptr %t127, i32 0, i32 16 + %t130 = load ptr, ptr %a1 + %t131 = getelementptr inbounds %S.ast.Type, ptr %a119, i32 0, i32 3 + %t132 = load { ptr, i64, i64 }, ptr %t131 + %t133 = getelementptr inbounds %S.ast.Type, ptr %a119, i32 0, i32 2 + %t134 = load { ptr, i64, i64 }, ptr %t133 + %t135 = call i64 @finch.gen.findStruct(ptr %t130, { ptr, i64, i64 } %t132, { ptr, i64, i64 } %t134) + %t136 = load { ptr, i64, i64 }, ptr %t129 + %t137 = extractvalue { ptr, i64, i64 } %t136, 1 + %t138 = icmp uge i64 %t135, %t137 + br i1 %t138, label %range6664, label %inrange6665 +range6664: + call void @finch_panic_index(ptr @.str.4330, i64 3690, i64 %t135, i64 %t137) unreachable -inrange6299: - %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 - %t133 = getelementptr inbounds { ptr, i64, i64 }, ptr %t132, i32 0, i32 1 - store i64 -1, ptr %a134 - %t135 = load i64, ptr %t133 - %t136 = load ptr, ptr %t132 - store i64 0, ptr %a137 - br label %find.cond6300 -find.cond6300: - %t138 = load i64, ptr %a137 - %t139 = icmp slt i64 %t138, %t135 - br i1 %t139, label %find.body6301, label %find.end6304 -find.body6301: - %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.4164, 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.hit6302, label %find.next6303 -find.hit6302: - store i64 %t138, ptr %a134 - br label %find.end6304 -find.next6303: - %t146 = add i64 %t138, 1 - store i64 %t146, ptr %a137 - br label %find.cond6300 -find.end6304: - %t147 = load i64, ptr %a134 - %t148 = icmp sge i64 %t147, 0 - store i1 %t148, ptr %a111 - br label %endif6295 -endif6295: - %t149 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 +inrange6665: + %t139 = extractvalue { ptr, i64, i64 } %t136, 0 + %t140 = getelementptr inbounds %S.gen.StructDef, ptr %t139, i64 %t135 + %t141 = getelementptr inbounds %S.gen.StructDef, ptr %t140, i32 0, i32 11 + %t142 = getelementptr inbounds { ptr, i64, i64 }, ptr %t141, i32 0, i32 1 + store i64 -1, ptr %a143 + %t144 = load i64, ptr %t142 + %t145 = load ptr, ptr %t141 + store i64 0, ptr %a146 + br label %find.cond6666 +find.cond6666: + %t147 = load i64, ptr %a146 + %t148 = icmp slt i64 %t147, %t144 + br i1 %t148, label %find.body6667, label %find.end6670 +find.body6667: + %t149 = getelementptr inbounds { ptr, i64, i64 }, ptr %t145, i64 %t147 %t150 = load { ptr, i64, i64 }, ptr %t149 store { ptr, i64, i64 } %t150, ptr %a151 - store { ptr, i64, i64 } { ptr @.str.4165, i64 5, i64 0 }, ptr %a152 + store { ptr, i64, i64 } { ptr @.str.4331, 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.from6305 -logic.from6305: - br i1 %t154, label %logic.rhs6306, label %logic.end6307 -logic.rhs6306: - %t155 = load i1, ptr %a111 - %t156 = xor i1 %t155, true - br label %logic.rend6308 -logic.rend6308: - br label %logic.end6307 -logic.end6307: - %t157 = phi i1 [ false, %logic.from6305 ], [ %t156, %logic.rend6308 ] - br i1 %t157, label %then6309, label %endif6311 -then6309: - %t158 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t159 = load { ptr, i64, i64 }, ptr %a63 + br i1 %t154, label %find.hit6668, label %find.next6669 +find.hit6668: + store i64 %t147, ptr %a143 + br label %find.end6670 +find.next6669: + %t155 = add i64 %t147, 1 + store i64 %t155, ptr %a146 + br label %find.cond6666 +find.end6670: + %t156 = load i64, ptr %a143 + %t157 = icmp sge i64 %t156, 0 + store i1 %t157, ptr %a120 + br label %endif6661 +endif6661: + %t158 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t159 = load { ptr, i64, i64 }, ptr %t158 store { ptr, i64, i64 } %t159, ptr %a160 - call void @finch_str_copy(ptr %a161, ptr %a160) - %t162 = load { ptr, i64, i64 }, ptr %a161 - %t163 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t162, 0 - %t164 = load %S.ast.Type, ptr %a110 - store %S.ast.Type %t164, ptr %a165 - call void @finch.copy.S_ast_Type(ptr %a166, ptr %a165) - %t167 = load %S.ast.Type, ptr %a166 - %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 -endif6311: - %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.4166, 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 %then6312, label %endif6314 -then6312: - %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.4167, 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.4168, 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 %endif6314 -endif6314: - %t188 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t189 = load { ptr, i64, i64 }, ptr %a63 - store { ptr, i64, i64 } %t189, ptr %a190 - call void @finch_str_copy(ptr %a191, ptr %a190) - %t192 = load { ptr, i64, i64 }, ptr %a191 - %t193 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t192, 0 - %t194 = load %S.ast.Type, ptr %a110 - store %S.ast.Type %t194, ptr %a195 - call void @finch.copy.S_ast_Type(ptr %a196, ptr %a195) - %t197 = load %S.ast.Type, ptr %a196 - %t198 = insertvalue %S.gen.Place %t193, %S.ast.Type %t197, 1 - %t199 = insertvalue %S.gen.Ref %t188, %S.gen.Place %t198, 1 - store %S.gen.Ref %t199, ptr %a35 - %t200 = load %S.ast.Type, ptr %a110 - store %S.ast.Type %t200, ptr %a201 - 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 %endif6284 -endif6284: - %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.4169, 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 %then6315, label %endif6317 -then6315: - %t210 = load i1, ptr %a3 - br i1 %t210, label %then6318, label %endif6320 -then6318: - %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.4170, 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.4171, 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 %endif6320 -endif6320: - %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.4172, 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 %then6321, label %endif6323 -then6321: - %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.4173, 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 -endif6323: - %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.4174, 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 %then6324, label %endif6326 -then6324: - %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.4175, 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.4176, 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 %endif6326 -endif6326: - %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 %then6327, label %endif6329 -then6327: - %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.4177, i64 48, i64 0 }) - br label %endif6329 -endif6329: - %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 - %t265 = load { ptr, i64, i64 }, ptr %t264 - store { ptr, i64, i64 } %t265, ptr %a266 - call void @finch_str_copy(ptr %a267, ptr %a266) - %t268 = load { ptr, i64, i64 }, ptr %a267 - %t269 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t268, 0 - %t270 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 1 - %t271 = load { ptr, i64, i64 }, ptr %t270 - %t272 = extractvalue { ptr, i64, i64 } %t271, 1 - %t273 = icmp uge i64 0, %t272 - br i1 %t273, label %range6330, label %inrange6331 -range6330: - call void @finch_panic_index(ptr @.str.4178, i64 3445, i64 0, i64 %t272) + store { ptr, i64, i64 } { ptr @.str.4332, 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.from6671 +logic.from6671: + br i1 %t163, label %logic.rhs6672, label %logic.end6673 +logic.rhs6672: + %t164 = load i1, ptr %a120 + %t165 = xor i1 %t164, true + br label %logic.rend6674 +logic.rend6674: + br label %logic.end6673 +logic.end6673: + %t166 = phi i1 [ false, %logic.from6671 ], [ %t165, %logic.rend6674 ] + br i1 %t166, label %then6675, label %endif6677 +then6675: + %t167 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 + %t168 = load { ptr, i64, i64 }, ptr %a65 + store { ptr, i64, i64 } %t168, ptr %a169 + call void @finch_str_copy(ptr %a170, ptr %a169) + %t171 = load { ptr, i64, i64 }, ptr %a170 + %t172 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t171, 0 + %t173 = load %S.ast.Type, ptr %a119 + store %S.ast.Type %t173, ptr %a174 + call void @finch.copy.S_ast_Type(ptr %a175, ptr %a174) + %t176 = load %S.ast.Type, ptr %a175 + %t177 = insertvalue %S.gen.Place %t172, %S.ast.Type %t176, 1 + %t178 = insertvalue %S.gen.Ref %t167, %S.gen.Place %t177, 1 + call void @finch.drop.S_ast_Type(ptr %a119) + call void @finch_str_drop(ptr %a65) + call void @finch.drop.S_ast_Type(ptr %a42) + call void @finch.drop.S_gen_Ref(ptr %a35) + ret %S.gen.Ref %t178 +endif6677: + %t179 = getelementptr inbounds %S.ast.Type, ptr %a119, i32 0, i32 0 + %t180 = load { ptr, i64, i64 }, ptr %t179 + store { ptr, i64, i64 } %t180, ptr %a181 + store { ptr, i64, i64 } { ptr @.str.4333, i64 6, i64 0 }, ptr %a182 + %t183 = call i32 @finch_str_eq(ptr %a181, ptr %a182) + %t184 = icmp eq i32 %t183, 0 + br i1 %t184, label %then6678, label %endif6680 +then6678: + %t185 = load ptr, ptr %a1 + %t186 = load %S.ast.Node, ptr %a2 + %t187 = load %S.ast.Type, ptr %a42 + %t188 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t187) + store { ptr, i64, i64 } { ptr @.str.4334, i64 2, i64 0 }, ptr %a190 + store { ptr, i64, i64 } %t188, ptr %a191 + call void @finch_str_concat(ptr %a189, ptr %a190, ptr %a191) + store { ptr, i64, i64 } %t188, ptr %a192 + call void @finch_str_drop(ptr %a192) + %t193 = load { ptr, i64, i64 }, ptr %a189 + store { ptr, i64, i64 } %t193, ptr %a195 + store { ptr, i64, i64 } { ptr @.str.4335, i64 43, i64 0 }, ptr %a196 + call void @finch_str_concat(ptr %a194, ptr %a195, ptr %a196) + store { ptr, i64, i64 } %t193, ptr %a197 + call void @finch_str_drop(ptr %a197) + %t198 = load { ptr, i64, i64 }, ptr %a194 + call void @finch.gen.fail(ptr %t185, %S.ast.Node %t186, { ptr, i64, i64 } %t198) + store { ptr, i64, i64 } %t198, ptr %a199 + call void @finch_str_drop(ptr %a199) + br label %endif6680 +endif6680: + %t200 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 + %t201 = load { ptr, i64, i64 }, ptr %a65 + store { ptr, i64, i64 } %t201, ptr %a202 + call void @finch_str_copy(ptr %a203, ptr %a202) + %t204 = load { ptr, i64, i64 }, ptr %a203 + %t205 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t204, 0 + %t206 = load %S.ast.Type, ptr %a119 + store %S.ast.Type %t206, ptr %a207 + call void @finch.copy.S_ast_Type(ptr %a208, ptr %a207) + %t209 = load %S.ast.Type, ptr %a208 + %t210 = insertvalue %S.gen.Place %t205, %S.ast.Type %t209, 1 + %t211 = insertvalue %S.gen.Ref %t200, %S.gen.Place %t210, 1 + %t212 = load %S.gen.Ref, ptr %a35 + store %S.gen.Ref %t211, ptr %a35 + store %S.gen.Ref %t212, ptr %a213 + call void @finch.drop.S_gen_Ref(ptr %a213) + %t214 = load %S.ast.Type, ptr %a119 + store %S.ast.Type %t214, ptr %a215 + call void @finch.copy.S_ast_Type(ptr %a216, ptr %a215) + %t217 = load %S.ast.Type, ptr %a216 + %t218 = load %S.ast.Type, ptr %a42 + store %S.ast.Type %t217, ptr %a42 + store %S.ast.Type %t218, ptr %a219 + call void @finch.drop.S_ast_Type(ptr %a219) + call void @finch.drop.S_ast_Type(ptr %a119) + call void @finch_str_drop(ptr %a65) + br label %endif6650 +endif6650: + %t220 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 0 + %t221 = load { ptr, i64, i64 }, ptr %t220 + store { ptr, i64, i64 } %t221, ptr %a222 + store { ptr, i64, i64 } { ptr @.str.4336, i64 5, i64 0 }, ptr %a223 + %t224 = call i32 @finch_str_eq(ptr %a222, ptr %a223) + %t225 = icmp ne i32 %t224, 0 + br i1 %t225, label %then6681, label %endif6683 +then6681: + %t226 = load i1, ptr %a3 + br i1 %t226, label %then6684, label %endif6686 +then6684: + %t227 = load ptr, ptr %a1 + %t228 = load %S.ast.Node, ptr %a2 + %t229 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t230 = load { ptr, i64, i64 }, ptr %t229 + store { ptr, i64, i64 } { ptr @.str.4337, i64 1, i64 0 }, ptr %a232 + store { ptr, i64, i64 } %t230, ptr %a233 + call void @finch_str_concat(ptr %a231, ptr %a232, ptr %a233) + %t234 = load { ptr, i64, i64 }, ptr %a231 + store { ptr, i64, i64 } %t234, ptr %a236 + store { ptr, i64, i64 } { ptr @.str.4338, i64 26, i64 0 }, ptr %a237 + call void @finch_str_concat(ptr %a235, ptr %a236, ptr %a237) + store { ptr, i64, i64 } %t234, ptr %a238 + call void @finch_str_drop(ptr %a238) + %t239 = load { ptr, i64, i64 }, ptr %a235 + call void @finch.gen.fail(ptr %t227, %S.ast.Node %t228, { ptr, i64, i64 } %t239) + store { ptr, i64, i64 } %t239, ptr %a240 + call void @finch_str_drop(ptr %a240) + br label %endif6686 +endif6686: + %t241 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t242 = load { ptr, i64, i64 }, ptr %t241 + store { ptr, i64, i64 } %t242, ptr %a243 + store { ptr, i64, i64 } { ptr @.str.4339, i64 3, i64 0 }, ptr %a244 + %t245 = call i32 @finch_str_eq(ptr %a243, ptr %a244) + %t246 = icmp ne i32 %t245, 0 + br i1 %t246, label %then6687, label %endif6689 +then6687: + %t247 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 + %t248 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 4 + %t249 = load i64, ptr %t248 + call void @finch_str_from_int(ptr %a250, i64 %t249) + %t251 = load { ptr, i64, i64 }, ptr %a250 + %t252 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t251, 0 + %t253 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4340, i64 3, i64 0 }) + %t254 = insertvalue %S.gen.Val %t252, %S.ast.Type %t253, 1 + %t255 = insertvalue %S.gen.Val %t254, i1 true, 3 + %t256 = insertvalue %S.gen.Ref %t247, %S.gen.Val %t255, 2 + call void @finch.drop.S_ast_Type(ptr %a42) + call void @finch.drop.S_gen_Ref(ptr %a35) + ret %S.gen.Ref %t256 +endif6689: + %t257 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t258 = load { ptr, i64, i64 }, ptr %t257 + store { ptr, i64, i64 } %t258, ptr %a259 + store { ptr, i64, i64 } { ptr @.str.4341, i64 3, i64 0 }, ptr %a260 + %t261 = call i32 @finch_str_eq(ptr %a259, ptr %a260) + %t262 = icmp eq i32 %t261, 0 + br i1 %t262, label %then6690, label %endif6692 +then6690: + %t263 = load ptr, ptr %a1 + %t264 = load %S.ast.Node, ptr %a2 + %t265 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t266 = load { ptr, i64, i64 }, ptr %t265 + store { ptr, i64, i64 } { ptr @.str.4342, i64 34, i64 0 }, ptr %a268 + store { ptr, i64, i64 } %t266, 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 %a272 + store { ptr, i64, i64 } { ptr @.str.4343, i64 1, i64 0 }, ptr %a273 + call void @finch_str_concat(ptr %a271, ptr %a272, ptr %a273) + store { ptr, i64, i64 } %t270, ptr %a274 + call void @finch_str_drop(ptr %a274) + %t275 = load { ptr, i64, i64 }, ptr %a271 + call void @finch.gen.fail(ptr %t263, %S.ast.Node %t264, { ptr, i64, i64 } %t275) + store { ptr, i64, i64 } %t275, ptr %a276 + call void @finch_str_drop(ptr %a276) + br label %endif6692 +endif6692: + %t277 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 0 + %t278 = load i1, ptr %t277 + %t279 = xor i1 %t278, true + br i1 %t279, label %then6693, label %endif6695 +then6693: + %t280 = load ptr, ptr %a1 + %t281 = load %S.ast.Node, ptr %a2 + call void @finch.gen.fail(ptr %t280, %S.ast.Node %t281, { ptr, i64, i64 } { ptr @.str.4344, i64 48, i64 0 }) + br label %endif6695 +endif6695: + %t282 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 + %t283 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 1 + %t284 = getelementptr inbounds %S.gen.Place, ptr %t283, i32 0, i32 0 + %t285 = load { ptr, i64, i64 }, ptr %t284 + store { ptr, i64, i64 } %t285, ptr %a286 + call void @finch_str_copy(ptr %a287, ptr %a286) + %t288 = load { ptr, i64, i64 }, ptr %a287 + %t289 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t288, 0 + %t290 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 1 + %t291 = load { ptr, i64, i64 }, ptr %t290 + %t292 = extractvalue { ptr, i64, i64 } %t291, 1 + %t293 = icmp uge i64 0, %t292 + br i1 %t293, label %range6696, label %inrange6697 +range6696: + call void @finch_panic_index(ptr @.str.4345, i64 3714, i64 0, i64 %t292) unreachable -inrange6331: - %t274 = extractvalue { ptr, i64, i64 } %t271, 0 - %t275 = getelementptr inbounds %S.ast.Type, ptr %t274, i64 0 - %t276 = load %S.ast.Type, ptr %t275 - %t277 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t276) - %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 -endif6317: - %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.4179, 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.from6332 -logic.from6332: - br i1 %t285, label %logic.end6334, label %logic.rhs6333 -logic.rhs6333: - %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.4180, 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.rend6335 -logic.rend6335: - br label %logic.end6334 -logic.end6334: - %t292 = phi i1 [ true, %logic.from6332 ], [ %t291, %logic.rend6335 ] - br label %logic.from6336 -logic.from6336: - br i1 %t292, label %logic.rhs6337, label %logic.end6338 -logic.rhs6337: - %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.4181, 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.rend6339 -logic.rend6339: - br label %logic.end6338 -logic.end6338: - %t299 = phi i1 [ false, %logic.from6336 ], [ %t298, %logic.rend6339 ] - br i1 %t299, label %then6340, label %endif6342 -then6340: - %t300 = load i1, ptr %a3 - br i1 %t300, label %then6343, label %endif6345 -then6343: - %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.4182, i64 30, i64 0 }) - br label %endif6345 -endif6345: - %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.from6346 -logic.from6346: - br i1 %t305, label %logic.rhs6347, label %logic.end6348 -logic.rhs6347: - %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.rend6349 -logic.rend6349: - br label %logic.end6348 -logic.end6348: - %t309 = phi i1 [ false, %logic.from6346 ], [ %t308, %logic.rend6349 ] - br label %logic.from6350 -logic.from6350: - br i1 %t309, label %logic.rhs6351, label %logic.end6352 -logic.rhs6351: - %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.4184, 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.rend6353 -logic.rend6353: - br label %logic.end6352 -logic.end6352: - %t318 = phi i1 [ false, %logic.from6350 ], [ %t317, %logic.rend6353 ] - br i1 %t318, label %then6354, label %endif6356 -then6354: - %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.4185, i64 53, i64 0 }) - br label %endif6356 -endif6356: - %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 - store { ptr, i64, i64 } %t323, ptr %a324 - call void @finch_str_copy(ptr %a325, ptr %a324) - %t326 = load { ptr, i64, i64 }, ptr %a325 - 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 %then6357, label %endif6359 -then6357: - %t330 = load ptr, ptr %a1 - %t331 = load ptr, ptr %a1 - %t332 = load %S.ast.Type, ptr %a42 - %t333 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t331, %S.ast.Type %t332) - %t334 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 1 - %t335 = getelementptr inbounds %S.gen.Place, ptr %t334, i32 0, i32 0 - %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 %endif6359 -endif6359: - %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.4186, 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 %then6360, label %endif6362 -then6360: - %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.4187, 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 -endif6362: - %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.4188, 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.4189, 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) - %t365 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t364, 0 - %t366 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 1 - %t367 = load { ptr, i64, i64 }, ptr %t366 - %t368 = extractvalue { ptr, i64, i64 } %t367, 1 - %t369 = icmp uge i64 0, %t368 - br i1 %t369, label %range6363, label %inrange6364 -range6363: - call void @finch_panic_index(ptr @.str.4190, i64 3463, i64 0, i64 %t368) - unreachable -inrange6364: - %t370 = extractvalue { ptr, i64, i64 } %t367, 0 - %t371 = getelementptr inbounds %S.ast.Type, ptr %t370, i64 0 - %t372 = load %S.ast.Type, ptr %t371 +inrange6697: + %t294 = extractvalue { ptr, i64, i64 } %t291, 0 + %t295 = getelementptr inbounds %S.ast.Type, ptr %t294, i64 0 + %t296 = load %S.ast.Type, ptr %t295 + %t297 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t296) + %t298 = insertvalue %S.gen.Val %t289, %S.ast.Type %t297, 1 + %t299 = insertvalue %S.gen.Ref %t282, %S.gen.Val %t298, 2 + call void @finch.drop.S_ast_Type(ptr %a42) + call void @finch.drop.S_gen_Ref(ptr %a35) + ret %S.gen.Ref %t299 +endif6683: + %t300 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 0 + %t301 = load { ptr, i64, i64 }, ptr %t300 + store { ptr, i64, i64 } %t301, ptr %a302 + store { ptr, i64, i64 } { ptr @.str.4346, i64 5, i64 0 }, ptr %a303 + %t304 = call i32 @finch_str_eq(ptr %a302, ptr %a303) + %t305 = icmp ne i32 %t304, 0 + br label %logic.from6698 +logic.from6698: + br i1 %t305, label %logic.end6700, label %logic.rhs6699 +logic.rhs6699: + %t306 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 0 + %t307 = load { ptr, i64, i64 }, ptr %t306 + store { ptr, i64, i64 } %t307, ptr %a308 + store { ptr, i64, i64 } { ptr @.str.4347, i64 3, i64 0 }, ptr %a309 + %t310 = call i32 @finch_str_eq(ptr %a308, ptr %a309) + %t311 = icmp ne i32 %t310, 0 + br label %logic.rend6701 +logic.rend6701: + br label %logic.end6700 +logic.end6700: + %t312 = phi i1 [ true, %logic.from6698 ], [ %t311, %logic.rend6701 ] + br label %logic.from6702 +logic.from6702: + br i1 %t312, label %logic.rhs6703, label %logic.end6704 +logic.rhs6703: + %t313 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t314 = load { ptr, i64, i64 }, ptr %t313 + store { ptr, i64, i64 } %t314, ptr %a315 + store { ptr, i64, i64 } { ptr @.str.4348, i64 3, i64 0 }, ptr %a316 + %t317 = call i32 @finch_str_eq(ptr %a315, ptr %a316) + %t318 = icmp ne i32 %t317, 0 + br label %logic.rend6705 +logic.rend6705: + br label %logic.end6704 +logic.end6704: + %t319 = phi i1 [ false, %logic.from6702 ], [ %t318, %logic.rend6705 ] + br i1 %t319, label %then6706, label %endif6708 +then6706: + %t320 = load i1, ptr %a3 + br i1 %t320, label %then6709, label %endif6711 +then6709: + %t321 = load ptr, ptr %a1 + %t322 = load %S.ast.Node, ptr %a2 + call void @finch.gen.fail(ptr %t321, %S.ast.Node %t322, { ptr, i64, i64 } { ptr @.str.4349, i64 30, i64 0 }) + br label %endif6711 +endif6711: + %t323 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 0 + %t324 = load i1, ptr %t323 + %t325 = xor i1 %t324, true + br label %logic.from6712 +logic.from6712: + br i1 %t325, label %logic.rhs6713, label %logic.end6714 +logic.rhs6713: + %t326 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 2 + %t327 = getelementptr inbounds %S.gen.Val, ptr %t326, i32 0, i32 2 + %t328 = load i1, ptr %t327 + br label %logic.rend6715 +logic.rend6715: + br label %logic.end6714 +logic.end6714: + %t329 = phi i1 [ false, %logic.from6712 ], [ %t328, %logic.rend6715 ] + br label %logic.from6716 +logic.from6716: + br i1 %t329, label %logic.rhs6717, label %logic.end6718 +logic.rhs6717: + %t330 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 2 + %t331 = getelementptr inbounds %S.gen.Val, ptr %t330, i32 0, i32 0 + %t332 = load { ptr, i64, i64 }, ptr %t331 + store { ptr, i64, i64 } %t332, ptr %a333 + store { ptr, i64, i64 } { ptr @.str.4351, i64 1, i64 0 }, ptr %a335 + %t336 = call i32 @finch_str_starts(ptr %a333, ptr %a335) + %t337 = icmp ne i32 %t336, 0 + br label %logic.rend6719 +logic.rend6719: + br label %logic.end6718 +logic.end6718: + %t338 = phi i1 [ false, %logic.from6716 ], [ %t337, %logic.rend6719 ] + br i1 %t338, label %then6720, label %endif6722 +then6720: + %t339 = load ptr, ptr %a1 + %t340 = load %S.ast.Node, ptr %a2 + call void @finch.gen.fail(ptr %t339, %S.ast.Node %t340, { ptr, i64, i64 } { ptr @.str.4352, i64 53, i64 0 }) + br label %endif6722 +endif6722: + %t341 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 2 + %t342 = getelementptr inbounds %S.gen.Val, ptr %t341, i32 0, i32 0 + %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 + store { ptr, i64, i64 } %t346, ptr %a347 + %t348 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 0 + %t349 = load i1, ptr %t348 + br i1 %t349, label %then6723, label %endif6725 +then6723: + %t350 = load ptr, ptr %a1 + %t351 = load ptr, ptr %a1 + %t352 = load %S.ast.Type, ptr %a42 + %t353 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t351, %S.ast.Type %t352) + %t354 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 1 + %t355 = getelementptr inbounds %S.gen.Place, ptr %t354, i32 0, i32 0 + %t356 = load { ptr, i64, i64 }, ptr %t355 + %t357 = call { ptr, i64, i64 } @finch.gen.load(ptr %t350, { ptr, i64, i64 } %t353, { ptr, i64, i64 } %t356) + store { ptr, i64, i64 } %t353, ptr %a358 + call void @finch_str_drop(ptr %a358) + %t359 = load { ptr, i64, i64 }, ptr %a347 + store { ptr, i64, i64 } %t357, ptr %a347 + store { ptr, i64, i64 } %t359, ptr %a360 + call void @finch_str_drop(ptr %a360) + br label %endif6725 +endif6725: + %t361 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 0 + %t362 = load { ptr, i64, i64 }, ptr %t361 + store { ptr, i64, i64 } %t362, ptr %a363 + store { ptr, i64, i64 } { ptr @.str.4353, i64 3, i64 0 }, ptr %a364 + %t365 = call i32 @finch_str_eq(ptr %a363, ptr %a364) + %t366 = icmp ne i32 %t365, 0 + br i1 %t366, label %then6726, label %endif6728 +then6726: + %t367 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 + %t368 = load ptr, ptr %a1 + %t369 = load { ptr, i64, i64 }, ptr %a347 + %t370 = call { ptr, i64, i64 } @finch.gen.cstr(ptr %t368, { ptr, i64, i64 } %t369) + %t371 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t370, 0 + %t372 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4354, i64 4, i64 0 }) %t373 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t372) - %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 -endif6342: - %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.4191, 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.from6365 -logic.from6365: - br i1 %t381, label %logic.end6367, label %logic.rhs6366 -logic.rhs6366: - %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.4192, 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.rend6368 -logic.rend6368: - br label %logic.end6367 -logic.end6367: - %t388 = phi i1 [ true, %logic.from6365 ], [ %t387, %logic.rend6368 ] - br label %logic.from6369 -logic.from6369: - br i1 %t388, label %logic.end6371, label %logic.rhs6370 -logic.rhs6370: - %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.4193, 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.rend6372 -logic.rend6372: - br label %logic.end6371 -logic.end6371: - %t395 = phi i1 [ true, %logic.from6369 ], [ %t394, %logic.rend6372 ] - br i1 %t395, label %then6373, label %endif6375 -then6373: - %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.4194, 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 %then6376, label %endif6378 -then6376: - %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.4195, 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.4196, 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 %endif6378 -endif6378: - %t414 = load i1, ptr %a3 - br i1 %t414, label %then6379, label %endif6381 -then6379: - %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.4197, i64 48, i64 0 }) - br label %endif6381 -endif6381: - %t417 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 0 - %t418 = load i1, ptr %t417 - br i1 %t418, label %then6382, label %endif6384 -then6382: - %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.4198, 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.4199, 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 - %t432 = getelementptr inbounds %S.gen.Place, ptr %t431, i32 0, i32 0 - %t433 = load { ptr, i64, i64 }, ptr %t432 - store { ptr, i64, i64 } %t430, 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.4200, 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) - store { ptr, i64, i64 } %t442, ptr %a443 - %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.4201, 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.4202, 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 -endif6384: - %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.4203, 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.4204, 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 - %t466 = getelementptr inbounds %S.gen.Val, ptr %t465, i32 0, i32 0 - %t467 = load { ptr, i64, i64 }, ptr %t466 - store { ptr, i64, i64 } %t464, ptr %a469 - store { ptr, i64, i64 } %t467, ptr %a470 - 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.4205, 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.4206, 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 -endif6375: - %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.4207, 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 %then6385, label %endif6387 -then6385: - %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.4208, 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 - %t496 = load { ptr, i64, i64 }, ptr %t495 - store { ptr, i64, i64 } %t494, ptr %a498 - store { ptr, i64, i64 } %t496, ptr %a499 - 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.4209, 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 %endif6387 -endif6387: - %t505 = load ptr, ptr %a1 - %t506 = icmp eq ptr %t505, null - br i1 %t506, label %panic6388, label %ok6389 -panic6388: - call void @finch_panic(ptr @.str.4210, i64 3481, ptr @.str.4211) + store %S.ast.Type %t372, ptr %a374 + call void @finch.drop.S_ast_Type(ptr %a374) + %t375 = insertvalue %S.gen.Val %t371, %S.ast.Type %t373, 1 + %t376 = insertvalue %S.gen.Ref %t367, %S.gen.Val %t375, 2 + call void @finch_str_drop(ptr %a347) + call void @finch.drop.S_ast_Type(ptr %a42) + call void @finch.drop.S_gen_Ref(ptr %a35) + ret %S.gen.Ref %t376 +endif6728: + %t377 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 + %t378 = load ptr, ptr %a1 + %t379 = load { ptr, i64, i64 }, ptr %a347 + store { ptr, i64, i64 } { ptr @.str.4355, i64 31, i64 0 }, ptr %a381 + store { ptr, i64, i64 } %t379, ptr %a382 + call void @finch_str_concat(ptr %a380, ptr %a381, ptr %a382) + %t383 = load { ptr, i64, i64 }, ptr %a380 + store { ptr, i64, i64 } %t383, ptr %a385 + store { ptr, i64, i64 } { ptr @.str.4356, i64 3, i64 0 }, ptr %a386 + call void @finch_str_concat(ptr %a384, ptr %a385, ptr %a386) + store { ptr, i64, i64 } %t383, ptr %a387 + call void @finch_str_drop(ptr %a387) + %t388 = load { ptr, i64, i64 }, ptr %a384 + %t389 = call { ptr, i64, i64 } @finch.gen.op(ptr %t378, { ptr, i64, i64 } %t388) + store { ptr, i64, i64 } %t388, ptr %a390 + call void @finch_str_drop(ptr %a390) + %t391 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t389, 0 + %t392 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 1 + %t393 = load { ptr, i64, i64 }, ptr %t392 + %t394 = extractvalue { ptr, i64, i64 } %t393, 1 + %t395 = icmp uge i64 0, %t394 + br i1 %t395, label %range6729, label %inrange6730 +range6729: + call void @finch_panic_index(ptr @.str.4357, i64 3732, i64 0, i64 %t394) unreachable -ok6389: - %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 - %t510 = load { ptr, i64, i64 }, ptr %t509 - %t511 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 2 - %t512 = load { ptr, i64, i64 }, ptr %t511 - %t513 = call i64 @finch.gen.findStruct(ptr %t508, { ptr, i64, i64 } %t510, { ptr, i64, i64 } %t512) - %t514 = load { ptr, i64, i64 }, ptr %t507 - %t515 = extractvalue { ptr, i64, i64 } %t514, 1 - %t516 = icmp uge i64 %t513, %t515 - br i1 %t516, label %range6390, label %inrange6391 -range6390: - call void @finch_panic_index(ptr @.str.4212, i64 3481, i64 %t513, i64 %t515) - unreachable -inrange6391: - %t517 = extractvalue { ptr, i64, i64 } %t514, 0 - %t518 = getelementptr inbounds %S.gen.StructDef, ptr %t517, i64 %t513 - %t519 = load %S.gen.StructDef, ptr %t518 - store %S.gen.StructDef %t519, ptr %a520 - call void @finch.copy.S_gen_StructDef(ptr %a521, ptr %a520) - %t522 = load %S.gen.StructDef, ptr %a521 - store %S.gen.StructDef %t522, ptr %a523 - %t524 = getelementptr inbounds %S.gen.StructDef, ptr %a523, i32 0, i32 11 - %t525 = getelementptr inbounds { ptr, i64, i64 }, ptr %t524, i32 0, i32 1 - %t526 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t527 = load { ptr, i64, i64 }, ptr %t526 - store i64 -1, ptr %a528 - %t529 = load i64, ptr %t525 - %t530 = load ptr, ptr %t524 - store i64 0, ptr %a531 - br label %find.cond6392 -find.cond6392: - %t532 = load i64, ptr %a531 - %t533 = icmp slt i64 %t532, %t529 - br i1 %t533, label %find.body6393, label %find.end6396 -find.body6393: - %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.hit6394, label %find.next6395 -find.hit6394: - store i64 %t532, ptr %a528 - br label %find.end6396 -find.next6395: - %t540 = add i64 %t532, 1 - store i64 %t540, ptr %a531 - br label %find.cond6392 -find.end6396: - %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 %then6397, label %endif6399 -then6397: - %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.4213, i64 11, i64 0 }, ptr %a550 - store { ptr, i64, i64 } %t548, ptr %a551 +inrange6730: + %t396 = extractvalue { ptr, i64, i64 } %t393, 0 + %t397 = getelementptr inbounds %S.ast.Type, ptr %t396, i64 0 + %t398 = load %S.ast.Type, ptr %t397 + %t399 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t398) + %t400 = insertvalue %S.gen.Val %t391, %S.ast.Type %t399, 1 + %t401 = insertvalue %S.gen.Ref %t377, %S.gen.Val %t400, 2 + call void @finch_str_drop(ptr %a347) + call void @finch.drop.S_ast_Type(ptr %a42) + call void @finch.drop.S_gen_Ref(ptr %a35) + ret %S.gen.Ref %t401 +endif6708: + %t402 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 0 + %t403 = load { ptr, i64, i64 }, ptr %t402 + store { ptr, i64, i64 } %t403, ptr %a404 + store { ptr, i64, i64 } { ptr @.str.4358, i64 5, i64 0 }, ptr %a405 + %t406 = call i32 @finch_str_eq(ptr %a404, ptr %a405) + %t407 = icmp ne i32 %t406, 0 + br label %logic.from6731 +logic.from6731: + br i1 %t407, label %logic.end6733, label %logic.rhs6732 +logic.rhs6732: + %t408 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 0 + %t409 = load { ptr, i64, i64 }, ptr %t408 + store { ptr, i64, i64 } %t409, ptr %a410 + store { ptr, i64, i64 } { ptr @.str.4359, i64 3, i64 0 }, ptr %a411 + %t412 = call i32 @finch_str_eq(ptr %a410, ptr %a411) + %t413 = icmp ne i32 %t412, 0 + br label %logic.rend6734 +logic.rend6734: + br label %logic.end6733 +logic.end6733: + %t414 = phi i1 [ true, %logic.from6731 ], [ %t413, %logic.rend6734 ] + br label %logic.from6735 +logic.from6735: + br i1 %t414, label %logic.end6737, label %logic.rhs6736 +logic.rhs6736: + %t415 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 0 + %t416 = load { ptr, i64, i64 }, ptr %t415 + store { ptr, i64, i64 } %t416, ptr %a417 + store { ptr, i64, i64 } { ptr @.str.4360, i64 3, i64 0 }, ptr %a418 + %t419 = call i32 @finch_str_eq(ptr %a417, ptr %a418) + %t420 = icmp ne i32 %t419, 0 + br label %logic.rend6738 +logic.rend6738: + br label %logic.end6737 +logic.end6737: + %t421 = phi i1 [ true, %logic.from6735 ], [ %t420, %logic.rend6738 ] + br i1 %t421, label %then6739, label %endif6741 +then6739: + %t422 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t423 = load { ptr, i64, i64 }, ptr %t422 + store { ptr, i64, i64 } %t423, ptr %a424 + store { ptr, i64, i64 } { ptr @.str.4361, i64 3, i64 0 }, ptr %a425 + %t426 = call i32 @finch_str_eq(ptr %a424, ptr %a425) + %t427 = icmp eq i32 %t426, 0 + br i1 %t427, label %then6742, label %endif6744 +then6742: + %t428 = load ptr, ptr %a1 + %t429 = load %S.ast.Node, ptr %a2 + %t430 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t431 = load { ptr, i64, i64 }, ptr %t430 + store { ptr, i64, i64 } { ptr @.str.4362, i64 37, 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.4363, i64 1, i64 0 }, ptr %a438 + call void @finch_str_concat(ptr %a436, ptr %a437, ptr %a438) + store { ptr, i64, i64 } %t435, ptr %a439 + call void @finch_str_drop(ptr %a439) + %t440 = load { ptr, i64, i64 }, ptr %a436 + call void @finch.gen.fail(ptr %t428, %S.ast.Node %t429, { ptr, i64, i64 } %t440) + store { ptr, i64, i64 } %t440, ptr %a441 + call void @finch_str_drop(ptr %a441) + br label %endif6744 +endif6744: + %t442 = load i1, ptr %a3 + br i1 %t442, label %then6745, label %endif6747 +then6745: + %t443 = load ptr, ptr %a1 + %t444 = load %S.ast.Node, ptr %a2 + call void @finch.gen.fail(ptr %t443, %S.ast.Node %t444, { ptr, i64, i64 } { ptr @.str.4364, i64 48, i64 0 }) + br label %endif6747 +endif6747: + %t445 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 0 + %t446 = load i1, ptr %t445 + br i1 %t446, label %then6748, label %endif6750 +then6748: + %t447 = load ptr, ptr %a1 + %t448 = load ptr, ptr %a1 + %t449 = load %S.ast.Type, ptr %a42 + %t450 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t448, %S.ast.Type %t449) + store { ptr, i64, i64 } { ptr @.str.4365, i64 23, i64 0 }, ptr %a452 + store { ptr, i64, i64 } %t450, ptr %a453 + call void @finch_str_concat(ptr %a451, ptr %a452, ptr %a453) + store { ptr, i64, i64 } %t450, ptr %a454 + call void @finch_str_drop(ptr %a454) + %t455 = load { ptr, i64, i64 }, ptr %a451 + store { ptr, i64, i64 } %t455, ptr %a457 + store { ptr, i64, i64 } { ptr @.str.4366, i64 6, i64 0 }, ptr %a458 + call void @finch_str_concat(ptr %a456, ptr %a457, ptr %a458) + store { ptr, i64, i64 } %t455, ptr %a459 + call void @finch_str_drop(ptr %a459) + %t460 = load { ptr, i64, i64 }, ptr %a456 + %t461 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 1 + %t462 = getelementptr inbounds %S.gen.Place, ptr %t461, i32 0, i32 0 + %t463 = load { ptr, i64, i64 }, ptr %t462 + store { ptr, i64, i64 } %t460, ptr %a465 + store { ptr, i64, i64 } %t463, ptr %a466 + call void @finch_str_concat(ptr %a464, ptr %a465, ptr %a466) + store { ptr, i64, i64 } %t460, ptr %a467 + call void @finch_str_drop(ptr %a467) + %t468 = load { ptr, i64, i64 }, ptr %a464 + store { ptr, i64, i64 } %t468, ptr %a470 + store { ptr, i64, i64 } { ptr @.str.4367, i64 14, i64 0 }, ptr %a471 + call void @finch_str_concat(ptr %a469, ptr %a470, ptr %a471) + store { ptr, i64, i64 } %t468, ptr %a472 + call void @finch_str_drop(ptr %a472) + %t473 = load { ptr, i64, i64 }, ptr %a469 + %t474 = call { ptr, i64, i64 } @finch.gen.op(ptr %t447, { ptr, i64, i64 } %t473) + store { ptr, i64, i64 } %t473, ptr %a475 + call void @finch_str_drop(ptr %a475) + store { ptr, i64, i64 } %t474, ptr %a476 + %t477 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 + %t478 = load ptr, ptr %a1 + %t479 = load { ptr, i64, i64 }, ptr %a476 + %t480 = call { ptr, i64, i64 } @finch.gen.load(ptr %t478, { ptr, i64, i64 } { ptr @.str.4368, i64 3, i64 0 }, { ptr, i64, i64 } %t479) + %t481 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t480, 0 + %t482 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4369, i64 3, i64 0 }) + %t483 = insertvalue %S.gen.Val %t481, %S.ast.Type %t482, 1 + %t484 = insertvalue %S.gen.Ref %t477, %S.gen.Val %t483, 2 + call void @finch_str_drop(ptr %a476) + call void @finch.drop.S_ast_Type(ptr %a42) + call void @finch.drop.S_gen_Ref(ptr %a35) + ret %S.gen.Ref %t484 +endif6750: + %t485 = load ptr, ptr %a1 + %t486 = load ptr, ptr %a1 + %t487 = load %S.ast.Type, ptr %a42 + %t488 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t486, %S.ast.Type %t487) + store { ptr, i64, i64 } { ptr @.str.4370, i64 13, i64 0 }, ptr %a490 + store { ptr, i64, i64 } %t488, ptr %a491 + call void @finch_str_concat(ptr %a489, ptr %a490, ptr %a491) + store { ptr, i64, i64 } %t488, ptr %a492 + call void @finch_str_drop(ptr %a492) + %t493 = load { ptr, i64, i64 }, ptr %a489 + store { ptr, i64, i64 } %t493, ptr %a495 + store { ptr, i64, i64 } { ptr @.str.4371, i64 1, i64 0 }, ptr %a496 + call void @finch_str_concat(ptr %a494, ptr %a495, ptr %a496) + store { ptr, i64, i64 } %t493, ptr %a497 + call void @finch_str_drop(ptr %a497) + %t498 = load { ptr, i64, i64 }, ptr %a494 + %t499 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 2 + %t500 = getelementptr inbounds %S.gen.Val, ptr %t499, i32 0, i32 0 + %t501 = load { ptr, i64, i64 }, ptr %t500 + store { ptr, i64, i64 } %t498, ptr %a503 + store { ptr, i64, i64 } %t501, ptr %a504 + call void @finch_str_concat(ptr %a502, ptr %a503, ptr %a504) + store { ptr, i64, i64 } %t498, ptr %a505 + call void @finch_str_drop(ptr %a505) + %t506 = load { ptr, i64, i64 }, ptr %a502 + store { ptr, i64, i64 } %t506, ptr %a508 + store { ptr, i64, i64 } { ptr @.str.4372, i64 3, i64 0 }, ptr %a509 + call void @finch_str_concat(ptr %a507, ptr %a508, ptr %a509) + store { ptr, i64, i64 } %t506, ptr %a510 + call void @finch_str_drop(ptr %a510) + %t511 = load { ptr, i64, i64 }, ptr %a507 + %t512 = call { ptr, i64, i64 } @finch.gen.op(ptr %t485, { ptr, i64, i64 } %t511) + store { ptr, i64, i64 } %t511, ptr %a513 + call void @finch_str_drop(ptr %a513) + store { ptr, i64, i64 } %t512, ptr %a514 + %t515 = load ptr, ptr %a1 + %t516 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 2 + %t517 = load %S.gen.Val, ptr %t516 + call void @finch.gen.release(ptr %t515, %S.gen.Val %t517) + %t518 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 + %t519 = load { ptr, i64, i64 }, ptr %a514 + store { ptr, i64, i64 } %t519, ptr %a520 + call void @finch_str_copy(ptr %a521, ptr %a520) + %t522 = load { ptr, i64, i64 }, ptr %a521 + %t523 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t522, 0 + %t524 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4373, i64 3, i64 0 }) + %t525 = insertvalue %S.gen.Val %t523, %S.ast.Type %t524, 1 + %t526 = insertvalue %S.gen.Ref %t518, %S.gen.Val %t525, 2 + call void @finch_str_drop(ptr %a514) + call void @finch.drop.S_ast_Type(ptr %a42) + call void @finch.drop.S_gen_Ref(ptr %a35) + ret %S.gen.Ref %t526 +endif6741: + %t527 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 0 + %t528 = load { ptr, i64, i64 }, ptr %t527 + store { ptr, i64, i64 } %t528, ptr %a529 + store { ptr, i64, i64 } { ptr @.str.4374, i64 6, i64 0 }, ptr %a530 + %t531 = call i32 @finch_str_eq(ptr %a529, ptr %a530) + %t532 = icmp eq i32 %t531, 0 + br i1 %t532, label %then6751, label %endif6753 +then6751: + %t533 = load ptr, ptr %a1 + %t534 = load %S.ast.Node, ptr %a2 + %t535 = load %S.ast.Type, ptr %a42 + %t536 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t535) + store { ptr, i64, i64 } %t536, ptr %a538 + store { ptr, i64, i64 } { ptr @.str.4375, i64 21, i64 0 }, ptr %a539 + call void @finch_str_concat(ptr %a537, ptr %a538, ptr %a539) + store { ptr, i64, i64 } %t536, ptr %a540 + call void @finch_str_drop(ptr %a540) + %t541 = load { ptr, i64, i64 }, ptr %a537 + %t542 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t543 = load { ptr, i64, i64 }, ptr %t542 + store { ptr, i64, i64 } %t541, ptr %a545 + store { ptr, i64, i64 } %t543, ptr %a546 + call void @finch_str_concat(ptr %a544, ptr %a545, ptr %a546) + store { ptr, i64, i64 } %t541, ptr %a547 + call void @finch_str_drop(ptr %a547) + %t548 = load { ptr, i64, i64 }, ptr %a544 + store { ptr, i64, i64 } %t548, ptr %a550 + store { ptr, i64, i64 } { ptr @.str.4376, i64 2, i64 0 }, 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.4214, 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 - %t558 = load { ptr, i64, i64 }, ptr %t557 - store { ptr, i64, i64 } %t556, ptr %a560 - store { ptr, i64, i64 } %t558, ptr %a561 - 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.4215, 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.4216, 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 - 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 - store { ptr, i64, i64 } %t575, ptr %a577 - store { ptr, i64, i64 } { ptr @.str.4217, 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 %endif6399 -endif6399: - %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 %range6400, label %inrange6401 -range6400: - call void @finch_panic_index(ptr @.str.4218, i64 3486, i64 %t581, i64 %t583) + store { ptr, i64, i64 } %t548, ptr %a552 + call void @finch_str_drop(ptr %a552) + %t553 = load { ptr, i64, i64 }, ptr %a549 + call void @finch.gen.fail(ptr %t533, %S.ast.Node %t534, { ptr, i64, i64 } %t553) + store { ptr, i64, i64 } %t553, ptr %a554 + call void @finch_str_drop(ptr %a554) + br label %endif6753 +endif6753: + %t555 = load ptr, ptr %a1 + %t556 = icmp eq ptr %t555, null + br i1 %t556, label %panic6754, label %ok6755 +panic6754: + call void @finch_panic(ptr @.str.4377, i64 3752, ptr @.str.4378) unreachable -inrange6401: - %t585 = extractvalue { ptr, i64, i64 } %t582, 0 - %t586 = getelementptr inbounds %S.ast.Type, ptr %t585, i64 %t581 - %t587 = load %S.ast.Type, ptr %t586 - store %S.ast.Type %t587, ptr %a588 - 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 = 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.4219, 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 - store { ptr, i64, i64 } %t605, ptr %a607 - store { ptr, i64, i64 } { ptr @.str.4220, 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 +ok6755: + %t557 = getelementptr inbounds %S.gen.Gen, ptr %t555, i32 0, i32 16 + %t558 = load ptr, ptr %a1 + %t559 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 3 + %t560 = load { ptr, i64, i64 }, ptr %t559 + %t561 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 2 + %t562 = load { ptr, i64, i64 }, ptr %t561 + %t563 = call i64 @finch.gen.findStruct(ptr %t558, { ptr, i64, i64 } %t560, { ptr, i64, i64 } %t562) + %t564 = load { ptr, i64, i64 }, ptr %t557 + %t565 = extractvalue { ptr, i64, i64 } %t564, 1 + %t566 = icmp uge i64 %t563, %t565 + br i1 %t566, label %range6756, label %inrange6757 +range6756: + call void @finch_panic_index(ptr @.str.4379, i64 3752, i64 %t563, i64 %t565) + unreachable +inrange6757: + %t567 = extractvalue { ptr, i64, i64 } %t564, 0 + %t568 = getelementptr inbounds %S.gen.StructDef, ptr %t567, i64 %t563 + %t569 = load %S.gen.StructDef, ptr %t568 + store %S.gen.StructDef %t569, ptr %a570 + call void @finch.copy.S_gen_StructDef(ptr %a571, ptr %a570) + %t572 = load %S.gen.StructDef, ptr %a571 + store %S.gen.StructDef %t572, ptr %a573 + %t574 = getelementptr inbounds %S.gen.StructDef, ptr %a573, i32 0, i32 11 + %t575 = getelementptr inbounds { ptr, i64, i64 }, ptr %t574, i32 0, i32 1 + %t576 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t577 = load { ptr, i64, i64 }, ptr %t576 + store i64 -1, ptr %a578 + %t579 = load i64, ptr %t575 + %t580 = load ptr, ptr %t574 + store i64 0, ptr %a581 + br label %find.cond6758 +find.cond6758: + %t582 = load i64, ptr %a581 + %t583 = icmp slt i64 %t582, %t579 + br i1 %t583, label %find.body6759, label %find.end6762 +find.body6759: + %t584 = getelementptr inbounds { ptr, i64, i64 }, ptr %t580, i64 %t582 + %t585 = load { ptr, i64, i64 }, ptr %t584 + store { ptr, i64, i64 } %t585, ptr %a586 + store { ptr, i64, i64 } %t577, ptr %a587 + %t588 = call i32 @finch_str_eq(ptr %a586, ptr %a587) + %t589 = icmp ne i32 %t588, 0 + br i1 %t589, label %find.hit6760, label %find.next6761 +find.hit6760: + store i64 %t582, ptr %a578 + br label %find.end6762 +find.next6761: + %t590 = add i64 %t582, 1 + store i64 %t590, ptr %a581 + br label %find.cond6758 +find.end6762: + %t591 = load i64, ptr %a578 + store i64 %t591, ptr %a592 + %t593 = load i64, ptr %a592 + %t594 = icmp slt i64 %t593, 0 + br i1 %t594, label %then6763, label %endif6765 +then6763: + %t595 = load ptr, ptr %a1 + %t596 = load %S.ast.Node, ptr %a2 + %t597 = load %S.ast.Type, ptr %a42 + %t598 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t597) + store { ptr, i64, i64 } { ptr @.str.4380, i64 11, i64 0 }, ptr %a600 + store { ptr, i64, i64 } %t598, ptr %a601 + call void @finch_str_concat(ptr %a599, ptr %a600, ptr %a601) + store { ptr, i64, i64 } %t598, ptr %a602 + call void @finch_str_drop(ptr %a602) + %t603 = load { ptr, i64, i64 }, ptr %a599 + store { ptr, i64, i64 } %t603, ptr %a605 + store { ptr, i64, i64 } { ptr @.str.4381, i64 15, i64 0 }, ptr %a606 + call void @finch_str_concat(ptr %a604, ptr %a605, ptr %a606) + store { ptr, i64, i64 } %t603, ptr %a607 + call void @finch_str_drop(ptr %a607) + %t608 = load { ptr, i64, i64 }, ptr %a604 + %t609 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t610 = load { ptr, i64, i64 }, ptr %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) + store { ptr, i64, i64 } %t608, ptr %a614 + call void @finch_str_drop(ptr %a614) + %t615 = load { ptr, i64, i64 }, ptr %a611 store { ptr, i64, i64 } %t615, ptr %a617 - store { ptr, i64, i64 } { ptr @.str.4221, i64 4, i64 0 }, ptr %a618 + store { ptr, i64, i64 } { ptr @.str.4382, i64 11, 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.4222, 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 %then6402, label %endif6404 -then6402: - %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.4223, i64 23, i64 0 }, ptr %a627 + store { ptr, i64, i64 } %t615, ptr %a619 + call void @finch_str_drop(ptr %a619) + %t620 = load { ptr, i64, i64 }, ptr %a616 + %t621 = getelementptr inbounds %S.gen.StructDef, ptr %a573, i32 0, i32 11 + %t622 = getelementptr inbounds { ptr, i64, i64 }, ptr %t621, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.4383, i64 2, i64 0 }, ptr %a623 + call void @finch_str_join(ptr %a624, ptr %t621, ptr %a623) + %t625 = load { ptr, i64, i64 }, ptr %a624 + store { ptr, i64, i64 } %t620, 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.4224, 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.4225, 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 %range6405, label %inrange6406 -range6405: - call void @finch_panic_index(ptr @.str.4226, i64 3489, i64 %t646, i64 %t648) + store { ptr, i64, i64 } %t620, ptr %a629 + call void @finch_str_drop(ptr %a629) + store { ptr, i64, i64 } %t625, ptr %a630 + call void @finch_str_drop(ptr %a630) + %t631 = load { ptr, i64, i64 }, ptr %a626 + store { ptr, i64, i64 } %t631, ptr %a633 + store { ptr, i64, i64 } { ptr @.str.4384, i64 1, i64 0 }, ptr %a634 + call void @finch_str_concat(ptr %a632, ptr %a633, ptr %a634) + store { ptr, i64, i64 } %t631, ptr %a635 + call void @finch_str_drop(ptr %a635) + %t636 = load { ptr, i64, i64 }, ptr %a632 + call void @finch.gen.fail(ptr %t595, %S.ast.Node %t596, { ptr, i64, i64 } %t636) + store { ptr, i64, i64 } %t636, ptr %a637 + call void @finch_str_drop(ptr %a637) + br label %endif6765 +endif6765: + %t638 = getelementptr inbounds %S.gen.StructDef, ptr %a573, i32 0, i32 12 + %t639 = load i64, ptr %a592 + %t640 = load { ptr, i64, i64 }, ptr %t638 + %t641 = extractvalue { ptr, i64, i64 } %t640, 1 + %t642 = icmp uge i64 %t639, %t641 + br i1 %t642, label %range6766, label %inrange6767 +range6766: + call void @finch_panic_index(ptr @.str.4385, i64 3757, i64 %t639, i64 %t641) unreachable -inrange6406: - %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 -endif6404: - %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.4227, i64 13, i64 0 }, ptr %a678 - store { ptr, i64, i64 } %t676, ptr %a679 +inrange6767: + %t643 = extractvalue { ptr, i64, i64 } %t640, 0 + %t644 = getelementptr inbounds %S.ast.Type, ptr %t643, i64 %t639 + %t645 = load %S.ast.Type, ptr %t644 + store %S.ast.Type %t645, ptr %a646 + call void @finch.copy.S_ast_Type(ptr %a647, ptr %a646) + %t648 = load %S.ast.Type, ptr %a647 + store %S.ast.Type %t648, ptr %a649 + %t650 = load ptr, ptr %a1 + %t651 = load %S.ast.Node, ptr %a2 + %t652 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 + %t653 = load i64, ptr %t652 + %t654 = add i64 %t653, 1 + %t655 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t656 = getelementptr inbounds { ptr, i64, i64 }, ptr %t655, i32 0, i32 1 + %t657 = load i64, ptr %t656 + %t658 = load %S.ast.Type, ptr %a649 + %t659 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t658) + store { ptr, i64, i64 } { ptr @.str.4386, i64 9, i64 0 }, ptr %a661 + store { ptr, i64, i64 } %t659, ptr %a662 + call void @finch_str_concat(ptr %a660, ptr %a661, ptr %a662) + store { ptr, i64, i64 } %t659, ptr %a663 + call void @finch_str_drop(ptr %a663) + %t664 = load { ptr, i64, i64 }, ptr %a660 + store { ptr, i64, i64 } %t664, ptr %a666 + store { ptr, i64, i64 } { ptr @.str.4387, i64 1, i64 0 }, ptr %a667 + call void @finch_str_concat(ptr %a665, ptr %a666, ptr %a667) + store { ptr, i64, i64 } %t664, ptr %a668 + call void @finch_str_drop(ptr %a668) + %t669 = load { ptr, i64, i64 }, ptr %a665 + %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) + store { ptr, i64, i64 } %t669, ptr %a675 + call void @finch_str_drop(ptr %a675) + %t676 = load { ptr, i64, i64 }, ptr %a672 + store { ptr, i64, i64 } %t676, ptr %a678 + store { ptr, i64, i64 } { ptr @.str.4388, i64 4, i64 0 }, 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.4228, 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.4229, 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 %range6407, label %inrange6408 -range6407: - call void @finch_panic_index(ptr @.str.4230, i64 3492, i64 %t697, i64 %t699) + store { ptr, i64, i64 } %t676, ptr %a680 + call void @finch_str_drop(ptr %a680) + %t681 = load { ptr, i64, i64 }, ptr %a677 + call void @finch.gen.noteRef(ptr %t650, %S.ast.Node %t651, i64 %t654, i64 %t657, { ptr, i64, i64 } %t681, { ptr, i64, i64 } { ptr @.str.4389, i64 0, i64 0 }, i64 0, i64 0) + store { ptr, i64, i64 } %t681, ptr %a682 + call void @finch_str_drop(ptr %a682) + %t683 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 0 + %t684 = load i1, ptr %t683 + br i1 %t684, label %then6768, label %endif6770 +then6768: + %t685 = load ptr, ptr %a1 + %t686 = load ptr, ptr %a1 + %t687 = load %S.ast.Type, ptr %a42 + %t688 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t686, %S.ast.Type %t687) + store { ptr, i64, i64 } { ptr @.str.4390, i64 23, i64 0 }, ptr %a690 + store { ptr, i64, i64 } %t688, ptr %a691 + call void @finch_str_concat(ptr %a689, ptr %a690, ptr %a691) + store { ptr, i64, i64 } %t688, ptr %a692 + call void @finch_str_drop(ptr %a692) + %t693 = load { ptr, i64, i64 }, ptr %a689 + store { ptr, i64, i64 } %t693, ptr %a695 + store { ptr, i64, i64 } { ptr @.str.4391, i64 6, i64 0 }, ptr %a696 + call void @finch_str_concat(ptr %a694, ptr %a695, ptr %a696) + store { ptr, i64, i64 } %t693, ptr %a697 + call void @finch_str_drop(ptr %a697) + %t698 = load { ptr, i64, i64 }, ptr %a694 + %t699 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 1 + %t700 = getelementptr inbounds %S.gen.Place, ptr %t699, i32 0, i32 0 + %t701 = load { ptr, i64, i64 }, ptr %t700 + store { ptr, i64, i64 } %t698, ptr %a703 + store { ptr, i64, i64 } %t701, ptr %a704 + call void @finch_str_concat(ptr %a702, ptr %a703, ptr %a704) + store { ptr, i64, i64 } %t698, ptr %a705 + call void @finch_str_drop(ptr %a705) + %t706 = load { ptr, i64, i64 }, ptr %a702 + store { ptr, i64, i64 } %t706, ptr %a708 + store { ptr, i64, i64 } { ptr @.str.4392, i64 13, i64 0 }, ptr %a709 + call void @finch_str_concat(ptr %a707, ptr %a708, ptr %a709) + store { ptr, i64, i64 } %t706, ptr %a710 + call void @finch_str_drop(ptr %a710) + %t711 = load { ptr, i64, i64 }, ptr %a707 + %t712 = getelementptr inbounds %S.gen.StructDef, ptr %a573, i32 0, i32 3 + %t713 = load i64, ptr %a592 + %t714 = load { ptr, i64, i64 }, ptr %t712 + %t715 = extractvalue { ptr, i64, i64 } %t714, 1 + %t716 = icmp uge i64 %t713, %t715 + br i1 %t716, label %range6771, label %inrange6772 +range6771: + call void @finch_panic_index(ptr @.str.4393, i64 3760, i64 %t713, i64 %t715) unreachable -inrange6408: - %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.from6409 -logic.from6409: - br i1 %t725, label %logic.rhs6410, label %logic.end6411 -logic.rhs6410: - %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.rend6412 -logic.rend6412: - br label %logic.end6411 -logic.end6411: - %t729 = phi i1 [ false, %logic.from6409 ], [ %t728, %logic.rend6412 ] - br i1 %t729, label %then6413, label %endif6415 -then6413: - %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 %endif6415 -endif6415: - %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 +inrange6772: + %t717 = extractvalue { ptr, i64, i64 } %t714, 0 + %t718 = getelementptr inbounds i64, ptr %t717, i64 %t713 + %t719 = load i64, ptr %t718 + call void @finch_str_from_int(ptr %a720, i64 %t719) + %t721 = load { ptr, i64, i64 }, ptr %a720 + store { ptr, i64, i64 } %t711, ptr %a723 + store { ptr, i64, i64 } %t721, ptr %a724 + call void @finch_str_concat(ptr %a722, ptr %a723, ptr %a724) + store { ptr, i64, i64 } %t711, ptr %a725 + call void @finch_str_drop(ptr %a725) + store { ptr, i64, i64 } %t721, ptr %a726 + call void @finch_str_drop(ptr %a726) + %t727 = load { ptr, i64, i64 }, ptr %a722 + %t728 = call { ptr, i64, i64 } @finch.gen.op(ptr %t685, { ptr, i64, i64 } %t727) + store { ptr, i64, i64 } %t727, ptr %a729 + call void @finch_str_drop(ptr %a729) + store { ptr, i64, i64 } %t728, ptr %a730 + %t731 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 + %t732 = load { ptr, i64, i64 }, ptr %a730 + store { ptr, i64, i64 } %t732, ptr %a733 + call void @finch_str_copy(ptr %a734, ptr %a733) + %t735 = load { ptr, i64, i64 }, ptr %a734 + %t736 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t735, 0 + %t737 = load %S.ast.Type, ptr %a649 + store %S.ast.Type %t737, ptr %a738 + call void @finch.copy.S_ast_Type(ptr %a739, ptr %a738) + %t740 = load %S.ast.Type, ptr %a739 + %t741 = insertvalue %S.gen.Place %t736, %S.ast.Type %t740, 1 + %t742 = insertvalue %S.gen.Ref %t731, %S.gen.Place %t741, 1 + call void @finch_str_drop(ptr %a730) + call void @finch.drop.S_ast_Type(ptr %a649) + call void @finch.drop.S_gen_StructDef(ptr %a573) + call void @finch.drop.S_ast_Type(ptr %a42) + call void @finch.drop.S_gen_Ref(ptr %a35) + ret %S.gen.Ref %t742 +endif6770: + %t743 = load ptr, ptr %a1 + %t744 = load ptr, ptr %a1 + %t745 = load %S.ast.Type, ptr %a42 + %t746 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t744, %S.ast.Type %t745) + store { ptr, i64, i64 } { ptr @.str.4394, i64 13, i64 0 }, ptr %a748 + store { ptr, i64, i64 } %t746, ptr %a749 + call void @finch_str_concat(ptr %a747, ptr %a748, ptr %a749) + store { ptr, i64, i64 } %t746, ptr %a750 + call void @finch_str_drop(ptr %a750) + %t751 = load { ptr, i64, i64 }, ptr %a747 + store { ptr, i64, i64 } %t751, ptr %a753 + store { ptr, i64, i64 } { ptr @.str.4395, i64 1, i64 0 }, ptr %a754 + call void @finch_str_concat(ptr %a752, ptr %a753, ptr %a754) + store { ptr, i64, i64 } %t751, ptr %a755 + call void @finch_str_drop(ptr %a755) + %t756 = load { ptr, i64, i64 }, ptr %a752 + %t757 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 2 + %t758 = getelementptr inbounds %S.gen.Val, ptr %t757, i32 0, i32 0 + %t759 = load { ptr, i64, i64 }, ptr %t758 + store { ptr, i64, i64 } %t756, ptr %a761 + store { ptr, i64, i64 } %t759, ptr %a762 + call void @finch_str_concat(ptr %a760, ptr %a761, ptr %a762) + store { ptr, i64, i64 } %t756, ptr %a763 + call void @finch_str_drop(ptr %a763) + %t764 = load { ptr, i64, i64 }, ptr %a760 + store { ptr, i64, i64 } %t764, ptr %a766 + store { ptr, i64, i64 } { ptr @.str.4396, i64 2, i64 0 }, ptr %a767 + call void @finch_str_concat(ptr %a765, ptr %a766, ptr %a767) + store { ptr, i64, i64 } %t764, ptr %a768 + call void @finch_str_drop(ptr %a768) + %t769 = load { ptr, i64, i64 }, ptr %a765 + %t770 = getelementptr inbounds %S.gen.StructDef, ptr %a573, i32 0, i32 3 + %t771 = load i64, ptr %a592 + %t772 = load { ptr, i64, i64 }, ptr %t770 + %t773 = extractvalue { ptr, i64, i64 } %t772, 1 + %t774 = icmp uge i64 %t771, %t773 + br i1 %t774, label %range6773, label %inrange6774 +range6773: + call void @finch_panic_index(ptr @.str.4397, i64 3763, i64 %t771, i64 %t773) + unreachable +inrange6774: + %t775 = extractvalue { ptr, i64, i64 } %t772, 0 + %t776 = getelementptr inbounds i64, ptr %t775, i64 %t771 + %t777 = load i64, ptr %t776 + call void @finch_str_from_int(ptr %a778, i64 %t777) + %t779 = load { ptr, i64, i64 }, ptr %a778 + store { ptr, i64, i64 } %t769, ptr %a781 + store { ptr, i64, i64 } %t779, ptr %a782 + call void @finch_str_concat(ptr %a780, ptr %a781, ptr %a782) + store { ptr, i64, i64 } %t769, ptr %a783 + call void @finch_str_drop(ptr %a783) + store { ptr, i64, i64 } %t779, ptr %a784 + call void @finch_str_drop(ptr %a784) + %t785 = load { ptr, i64, i64 }, ptr %a780 + %t786 = call { ptr, i64, i64 } @finch.gen.op(ptr %t743, { ptr, i64, i64 } %t785) + store { ptr, i64, i64 } %t785, ptr %a787 + call void @finch_str_drop(ptr %a787) + store { ptr, i64, i64 } %t786, ptr %a788 + %t789 = load { ptr, i64, i64 }, ptr %a788 + store { ptr, i64, i64 } %t789, ptr %a790 + call void @finch_str_copy(ptr %a791, ptr %a790) + %t792 = load { ptr, i64, i64 }, ptr %a791 + %t793 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t792, 0 + %t794 = load %S.ast.Type, ptr %a649 + store %S.ast.Type %t794, ptr %a795 + call void @finch.copy.S_ast_Type(ptr %a796, ptr %a795) + %t797 = load %S.ast.Type, ptr %a796 + %t798 = insertvalue %S.gen.Val %t793, %S.ast.Type %t797, 1 + store %S.gen.Val %t798, ptr %a799 + %t800 = load ptr, ptr %a1 + %t801 = load %S.ast.Type, ptr %a649 + %t802 = call i1 @finch.gen.owning(ptr %t800, %S.ast.Type %t801) + br label %logic.from6775 +logic.from6775: + br i1 %t802, label %logic.rhs6776, label %logic.end6777 +logic.rhs6776: + %t803 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 2 + %t804 = getelementptr inbounds %S.gen.Val, ptr %t803, i32 0, i32 2 + %t805 = load i1, ptr %t804 + br label %logic.rend6778 +logic.rend6778: + br label %logic.end6777 +logic.end6777: + %t806 = phi i1 [ false, %logic.from6775 ], [ %t805, %logic.rend6778 ] + br i1 %t806, label %then6779, label %endif6781 +then6779: + %t807 = load ptr, ptr %a1 + %t808 = load { ptr, i64, i64 }, ptr %a788 + %t809 = load %S.ast.Type, ptr %a649 + %t810 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t807, { ptr, i64, i64 } %t808, %S.ast.Type %t809) + %t811 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t810, 0 + %t812 = load %S.ast.Type, ptr %a649 + store %S.ast.Type %t812, ptr %a813 + call void @finch.copy.S_ast_Type(ptr %a814, ptr %a813) + %t815 = load %S.ast.Type, ptr %a814 + %t816 = insertvalue %S.gen.Val %t811, %S.ast.Type %t815, 1 + %t817 = insertvalue %S.gen.Val %t816, i1 true, 2 + %t818 = load %S.gen.Val, ptr %a799 + store %S.gen.Val %t817, ptr %a799 + store %S.gen.Val %t818, ptr %a819 + call void @finch.drop.S_gen_Val(ptr %a819) + br label %endif6781 +endif6781: + %t820 = load ptr, ptr %a1 + %t821 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 2 + %t822 = load %S.gen.Val, ptr %t821 + call void @finch.gen.release(ptr %t820, %S.gen.Val %t822) + %t823 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 + %t824 = load %S.gen.Val, ptr %a799 + store %S.gen.Val %t824, ptr %a825 + call void @finch.copy.S_gen_Val(ptr %a826, ptr %a825) + %t827 = load %S.gen.Val, ptr %a826 + %t828 = insertvalue %S.gen.Ref %t823, %S.gen.Val %t827, 2 + call void @finch.drop.S_gen_Val(ptr %a799) + call void @finch_str_drop(ptr %a788) + call void @finch.drop.S_ast_Type(ptr %a649) + call void @finch.drop.S_gen_StructDef(ptr %a573) + call void @finch.drop.S_ast_Type(ptr %a42) + call void @finch.drop.S_gen_Ref(ptr %a35) + ret %S.gen.Ref %t828 } define internal %S.gen.Ref @finch.gen.index(ptr %p0, %S.ast.Node %p1, i1 %p2) { @@ -57607,134 +68070,8 @@ entry: %a2 = alloca %S.ast.Node, align 16 %a3 = alloca i1, align 16 %a14 = alloca %S.gen.Ref, align 16 - %a18 = alloca %S.ast.Type, align 16 - %a19 = alloca %S.ast.Type, align 16 - %a21 = alloca %S.ast.Type, align 16 - %a27 = alloca %S.ast.Type, align 16 - %a28 = alloca %S.ast.Type, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a65 = 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 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a89 = 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 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = 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 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = 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 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca %S.ast.Type, align 16 - %a134 = alloca %S.ast.Type, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca %S.ast.Type, align 16 - %a172 = alloca %S.ast.Type, align 16 - %a174 = alloca %S.ast.Type, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = 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 - %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 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca %S.ast.Type, align 16 - %a206 = alloca %S.ast.Type, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca %S.ast.Type, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca %S.ast.Type, align 16 - %a247 = alloca %S.ast.Type, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a268 = 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 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a280 = 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 - %a299 = 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 - %a310 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a315 = 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 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca { ptr, i64, i64 }, align 16 - %a326 = 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 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a343 = alloca { ptr, i64, i64 }, align 16 - %a348 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca %S.ast.Type, align 16 - %a354 = alloca %S.ast.Type, align 16 - %a364 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca %S.ast.Type, align 16 - %a372 = alloca %S.ast.Type, align 16 - %a375 = alloca %S.gen.Val, align 16 - %a389 = alloca %S.ast.Type, align 16 - %a390 = alloca %S.ast.Type, align 16 - %a396 = alloca %S.gen.Val, align 16 - %a397 = alloca %S.gen.Val, align 16 + %a20 = alloca i64, align 16 + %a32 = alloca %S.gen.Ref, align 16 store ptr %p0, ptr %a1 store %S.ast.Node %p1, ptr %a2 store i1 %p2, ptr %a3 @@ -57743,523 +68080,847 @@ 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 %range6416, label %inrange6417 -range6416: - call void @finch_panic_index(ptr @.str.4231, i64 3501, i64 0, i64 %t7) + br i1 %t8, label %range6782, label %inrange6783 +range6782: + call void @finch_panic_index(ptr @.str.4398, i64 3773, i64 0, i64 %t7) unreachable -inrange6417: +inrange6783: %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 = load i1, ptr %a3 %t13 = call %S.gen.Ref @finch.gen.ref(ptr %t4, %S.ast.Node %t11, i1 %t12) store %S.gen.Ref %t13, ptr %a14 - %t15 = getelementptr inbounds %S.gen.Ref, ptr %a14, i32 0, i32 2 - %t16 = getelementptr inbounds %S.gen.Val, ptr %t15, i32 0, i32 1 - %t17 = load %S.ast.Type, ptr %t16 - store %S.ast.Type %t17, ptr %a18 - call void @finch.copy.S_ast_Type(ptr %a19, ptr %a18) - %t20 = load %S.ast.Type, ptr %a19 + %t15 = load ptr, ptr %a1 + %t16 = icmp eq ptr %t15, null + br i1 %t16, label %panic6784, label %ok6785 +panic6784: + call void @finch_panic(ptr @.str.4399, i64 3774, ptr @.str.4400) + unreachable +ok6785: + %t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 11 + %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t17, i32 0, i32 1 + %t19 = load i64, ptr %t18 + store i64 %t19, ptr %a20 + %t21 = getelementptr inbounds %S.gen.Ref, ptr %a14, i32 0, i32 0 + %t22 = load i1, ptr %t21 + %t23 = xor i1 %t22, true + br i1 %t23, label %then6786, label %endif6788 +then6786: + %t24 = load ptr, ptr %a1 + %t25 = getelementptr inbounds %S.gen.Ref, ptr %a14, i32 0, i32 2 + %t26 = load %S.gen.Val, ptr %t25 + call void @finch.gen.hold(ptr %t24, %S.gen.Val %t26) + br label %endif6788 +endif6788: + %t27 = load ptr, ptr %a1 + %t28 = load %S.ast.Node, ptr %a2 + %t29 = load %S.gen.Ref, ptr %a14 + %t30 = load i1, ptr %a3 + %t31 = call %S.gen.Ref @finch.gen.indexOf(ptr %t27, %S.ast.Node %t28, %S.gen.Ref %t29, i1 %t30) + store %S.gen.Ref %t31, ptr %a32 + %t33 = load ptr, ptr %a1 + %t34 = load i64, ptr %a20 + call void @finch.gen.heldEnd(ptr %t33, i64 %t34) + %t35 = load %S.gen.Ref, ptr %a32 + call void @finch.drop.S_gen_Ref(ptr %a14) + ret %S.gen.Ref %t35 +} + +define internal %S.gen.Ref @finch.gen.indexOf(ptr %p0, %S.ast.Node %p1, %S.gen.Ref %p2, i1 %p3) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Node, align 16 + %a3 = alloca %S.gen.Ref, align 16 + %a4 = alloca i1, align 16 + %a8 = alloca %S.ast.Type, align 16 + %a9 = alloca %S.ast.Type, align 16 + %a11 = alloca %S.ast.Type, align 16 + %a17 = alloca %S.ast.Type, align 16 + %a18 = alloca %S.ast.Type, align 16 + %a21 = alloca %S.ast.Type, align 16 + %a24 = alloca { ptr, i64, i64 }, align 16 + %a25 = alloca { ptr, i64, i64 }, align 16 + %a53 = alloca %S.gen.Val, align 16 + %a54 = alloca %S.ast.Type, align 16 + %a56 = alloca { ptr, i64, i64 }, align 16 + %a57 = alloca { ptr, i64, i64 }, align 16 + %a59 = alloca %S.gen.Val, align 16 + %a60 = alloca { ptr, i64, i64 }, align 16 + %a63 = alloca { ptr, i64, i64 }, align 16 + %a64 = alloca { ptr, i64, i64 }, align 16 + %a67 = alloca { ptr, i64, i64 }, align 16 + %a73 = alloca { ptr, i64, i64 }, align 16 + %a74 = alloca { ptr, i64, i64 }, align 16 + %a77 = alloca { ptr, i64, i64 }, align 16 + %a83 = alloca { ptr, i64, i64 }, align 16 + %a88 = 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 + %a99 = 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 + %a104 = 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 + %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 + %a115 = 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 + %a121 = alloca { ptr, i64, i64 }, align 16 + %a124 = alloca { ptr, i64, i64 }, align 16 + %a125 = alloca { ptr, i64, i64 }, align 16 + %a128 = alloca { ptr, i64, i64 }, align 16 + %a129 = alloca { ptr, i64, i64 }, align 16 + %a139 = alloca %S.ast.Type, align 16 + %a140 = alloca %S.ast.Type, align 16 + %a146 = alloca { ptr, i64, i64 }, align 16 + %a147 = alloca { ptr, i64, i64 }, align 16 + %a159 = alloca { ptr, i64, i64 }, align 16 + %a160 = alloca { ptr, i64, i64 }, align 16 + %a162 = alloca { ptr, i64, i64 }, align 16 + %a171 = alloca { ptr, i64, i64 }, align 16 + %a179 = alloca %S.ast.Type, align 16 + %a180 = alloca %S.ast.Type, align 16 + %a182 = alloca %S.ast.Type, align 16 + %a188 = 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 + %a196 = alloca { ptr, i64, i64 }, align 16 + %a199 = 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 + %a207 = alloca { ptr, i64, i64 }, align 16 + %a210 = 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 + %a216 = alloca { ptr, i64, i64 }, align 16 + %a219 = alloca %S.ast.Type, align 16 + %a220 = alloca %S.ast.Type, align 16 + %a226 = alloca { ptr, i64, i64 }, align 16 + %a227 = alloca { ptr, i64, i64 }, align 16 + %a232 = alloca { ptr, i64, i64 }, align 16 + %a233 = alloca { ptr, i64, i64 }, align 16 + %a241 = 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 + %a248 = alloca %S.ast.Type, align 16 + %a251 = alloca { ptr, i64, i64 }, align 16 + %a252 = alloca { ptr, i64, i64 }, align 16 + %a262 = alloca %S.ast.Type, align 16 + %a263 = alloca %S.ast.Type, align 16 + %a266 = alloca %S.ast.Type, align 16 + %a269 = alloca { ptr, i64, i64 }, align 16 + %a270 = 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 + %a288 = alloca { ptr, i64, i64 }, align 16 + %a289 = alloca { ptr, i64, i64 }, align 16 + %a290 = alloca { ptr, i64, i64 }, align 16 + %a291 = alloca { ptr, i64, i64 }, align 16 + %a293 = alloca { ptr, i64, i64 }, align 16 + %a297 = alloca { ptr, i64, i64 }, align 16 + %a298 = alloca { ptr, i64, i64 }, align 16 + %a300 = alloca { ptr, i64, i64 }, align 16 + %a309 = 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 + %a316 = alloca { ptr, i64, i64 }, align 16 + %a317 = alloca { ptr, i64, i64 }, align 16 + %a318 = alloca { ptr, i64, i64 }, align 16 + %a319 = alloca { ptr, i64, i64 }, align 16 + %a322 = alloca { ptr, i64, i64 }, align 16 + %a323 = alloca { ptr, i64, i64 }, align 16 + %a330 = alloca { ptr, i64, i64 }, align 16 + %a331 = alloca { ptr, i64, i64 }, align 16 + %a332 = alloca { ptr, i64, i64 }, align 16 + %a334 = 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 + %a340 = alloca { ptr, i64, i64 }, align 16 + %a341 = alloca { ptr, i64, i64 }, align 16 + %a346 = 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 + %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 + %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 + %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 + %a368 = alloca { ptr, i64, i64 }, align 16 + %a369 = alloca { ptr, i64, i64 }, align 16 + %a370 = alloca { ptr, i64, i64 }, align 16 + %a371 = alloca { ptr, i64, i64 }, align 16 + %a374 = alloca { ptr, i64, i64 }, align 16 + %a375 = alloca { ptr, i64, i64 }, align 16 + %a380 = alloca { ptr, i64, i64 }, align 16 + %a381 = alloca { ptr, i64, i64 }, align 16 + %a385 = alloca %S.ast.Type, align 16 + %a386 = alloca %S.ast.Type, align 16 + %a396 = alloca { ptr, i64, i64 }, align 16 + %a397 = alloca { ptr, i64, i64 }, align 16 + %a399 = alloca { ptr, i64, i64 }, align 16 + %a400 = alloca { ptr, i64, i64 }, align 16 + %a404 = alloca %S.ast.Type, align 16 + %a405 = alloca %S.ast.Type, align 16 + %a408 = alloca %S.gen.Val, align 16 + %a422 = alloca %S.ast.Type, align 16 + %a423 = alloca %S.ast.Type, align 16 + %a428 = alloca %S.gen.Val, align 16 + %a434 = alloca %S.gen.Val, align 16 + %a435 = alloca %S.gen.Val, align 16 + store ptr %p0, ptr %a1 + store %S.ast.Node %p1, ptr %a2 + store %S.gen.Ref %p2, ptr %a3 + store i1 %p3, ptr %a4 + %t5 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 + %t6 = getelementptr inbounds %S.gen.Val, ptr %t5, i32 0, i32 1 + %t7 = load %S.ast.Type, ptr %t6 + store %S.ast.Type %t7, ptr %a8 + call void @finch.copy.S_ast_Type(ptr %a9, ptr %a8) + %t10 = load %S.ast.Type, ptr %a9 + store %S.ast.Type %t10, ptr %a11 + %t12 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 + %t13 = load i1, ptr %t12 + br i1 %t13, label %then6789, label %endif6791 +then6789: + %t14 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 1 + %t15 = getelementptr inbounds %S.gen.Place, ptr %t14, i32 0, i32 1 + %t16 = load %S.ast.Type, ptr %t15 + store %S.ast.Type %t16, ptr %a17 + call void @finch.copy.S_ast_Type(ptr %a18, ptr %a17) + %t19 = load %S.ast.Type, ptr %a18 + %t20 = load %S.ast.Type, ptr %a11 + store %S.ast.Type %t19, ptr %a11 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 %then6418, label %endif6420 -then6418: - %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 - store %S.ast.Type %t26, ptr %a27 - 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 %endif6420 -endif6420: - %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.4232, 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 %then6421, label %endif6423 -then6421: - %t36 = load ptr, ptr %a1 - %t37 = load %S.ast.Node, ptr %a2 - %t38 = load %S.gen.Ref, ptr %a14 - %t39 = load %S.ast.Type, ptr %a21 - %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 -endif6423: - %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 %range6424, label %inrange6425 -range6424: - call void @finch_panic_index(ptr @.str.4233, i64 3509, i64 1, i64 %t46) + call void @finch.drop.S_ast_Type(ptr %a21) + br label %endif6791 +endif6791: + %t22 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 0 + %t23 = load { ptr, i64, i64 }, ptr %t22 + store { ptr, i64, i64 } %t23, ptr %a24 + store { ptr, i64, i64 } { ptr @.str.4401, i64 3, i64 0 }, ptr %a25 + %t26 = call i32 @finch_str_eq(ptr %a24, ptr %a25) + %t27 = icmp ne i32 %t26, 0 + br i1 %t27, label %then6792, label %endif6794 +then6792: + %t28 = load ptr, ptr %a1 + %t29 = load %S.ast.Node, ptr %a2 + %t30 = load %S.gen.Ref, ptr %a3 + %t31 = load %S.ast.Type, ptr %a11 + %t32 = load i1, ptr %a4 + %t33 = call %S.gen.Ref @finch.gen.mapIndex(ptr %t28, %S.ast.Node %t29, %S.gen.Ref %t30, %S.ast.Type %t31, i1 %t32) + call void @finch.drop.S_ast_Type(ptr %a11) + ret %S.gen.Ref %t33 +endif6794: + %t34 = load ptr, ptr %a1 + %t35 = load ptr, ptr %a1 + %t36 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t37 = load { ptr, i64, i64 }, ptr %t36 + %t38 = extractvalue { ptr, i64, i64 } %t37, 1 + %t39 = icmp uge i64 1, %t38 + br i1 %t39, label %range6795, label %inrange6796 +range6795: + call void @finch_panic_index(ptr @.str.4402, i64 3791, i64 1, i64 %t38) unreachable -inrange6425: - %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.4234, 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 %range6426, label %inrange6427 -range6426: - call void @finch_panic_index(ptr @.str.4235, i64 3509, i64 1, i64 %t55) +inrange6796: + %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.4403, 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 %range6797, label %inrange6798 +range6797: + call void @finch_panic_index(ptr @.str.4404, i64 3791, i64 1, i64 %t47) unreachable -inrange6427: - %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.4236, 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) - %t64 = load { ptr, i64, i64 }, ptr %a63 - store { ptr, i64, i64 } %t64, ptr %a65 - %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.4237, 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 %then6428, label %endif6430 -then6428: - store { ptr, i64, i64 } { ptr @.str.4238, 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 %then6431, label %else6432 -then6431: - %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 - store { ptr, i64, i64 } %t77, ptr %a78 - 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 %endif6433 -else6432: - %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 %endif6433 -endif6433: - %t85 = load ptr, ptr %a1 - %t86 = load { ptr, i64, i64 }, ptr %a65 - %t87 = getelementptr inbounds %S.ast.Type, ptr %a21, i32 0, i32 4 - %t88 = load i64, ptr %t87 - call void @finch_str_from_int(ptr %a89, i64 %t88) - %t90 = load { ptr, i64, i64 }, ptr %a89 - %t91 = load %S.ast.Node, ptr %a2 - call void @finch.gen.boundsCheck(ptr %t85, { ptr, i64, i64 } %t86, { ptr, i64, i64 } %t90, %S.ast.Node %t91) +inrange6798: + %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.4405, i64 8, i64 0 }) + store %S.gen.Val %t43, ptr %a53 + call void @finch.drop.S_gen_Val(ptr %a53) + store %S.ast.Type %t44, ptr %a54 + call void @finch.drop.S_ast_Type(ptr %a54) + %t55 = extractvalue %S.gen.Val %t52, 0 + store { ptr, i64, i64 } %t55, ptr %a56 + call void @finch_str_copy(ptr %a57, ptr %a56) + %t58 = load { ptr, i64, i64 }, ptr %a57 + store %S.gen.Val %t52, ptr %a59 + call void @finch.drop.S_gen_Val(ptr %a59) + store { ptr, i64, i64 } %t58, ptr %a60 + %t61 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 0 + %t62 = load { ptr, i64, i64 }, ptr %t61 + store { ptr, i64, i64 } %t62, ptr %a63 + store { ptr, i64, i64 } { ptr @.str.4406, i64 5, i64 0 }, ptr %a64 + %t65 = call i32 @finch_str_eq(ptr %a63, ptr %a64) + %t66 = icmp ne i32 %t65, 0 + br i1 %t66, label %then6799, label %endif6801 +then6799: + store { ptr, i64, i64 } { ptr @.str.4407, i64 0, i64 0 }, ptr %a67 + %t68 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 + %t69 = load i1, ptr %t68 + br i1 %t69, label %then6802, label %else6803 +then6802: + %t70 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 1 + %t71 = getelementptr inbounds %S.gen.Place, ptr %t70, i32 0, i32 0 + %t72 = load { ptr, i64, i64 }, ptr %t71 + store { ptr, i64, i64 } %t72, ptr %a73 + call void @finch_str_copy(ptr %a74, ptr %a73) + %t75 = load { ptr, i64, i64 }, ptr %a74 + %t76 = load { ptr, i64, i64 }, ptr %a67 + store { ptr, i64, i64 } %t75, ptr %a67 + store { ptr, i64, i64 } %t76, ptr %a77 + call void @finch_str_drop(ptr %a77) + br label %endif6804 +else6803: + %t78 = load ptr, ptr %a1 + %t79 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 + %t80 = load %S.gen.Val, ptr %t79 + %t81 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t78, %S.gen.Val %t80) + %t82 = load { ptr, i64, i64 }, ptr %a67 + store { ptr, i64, i64 } %t81, ptr %a67 + store { ptr, i64, i64 } %t82, ptr %a83 + call void @finch_str_drop(ptr %a83) + br label %endif6804 +endif6804: + %t84 = load ptr, ptr %a1 + %t85 = load { ptr, i64, i64 }, ptr %a60 + %t86 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 4 + %t87 = load i64, ptr %t86 + call void @finch_str_from_int(ptr %a88, i64 %t87) + %t89 = load { ptr, i64, i64 }, ptr %a88 + %t90 = load %S.ast.Node, ptr %a2 + call void @finch.gen.boundsCheck(ptr %t84, { ptr, i64, i64 } %t85, { ptr, i64, i64 } %t89, %S.ast.Node %t90) + store { ptr, i64, i64 } %t89, ptr %a91 + call void @finch_str_drop(ptr %a91) %t92 = load ptr, ptr %a1 %t93 = load ptr, ptr %a1 - %t94 = load %S.ast.Type, ptr %a21 + %t94 = load %S.ast.Type, ptr %a11 %t95 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t93, %S.ast.Type %t94) - store { ptr, i64, i64 } { ptr @.str.4239, i64 23, i64 0 }, ptr %a97 + store { ptr, i64, i64 } { ptr @.str.4408, 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.4240, 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 - store { ptr, i64, i64 } %t103, ptr %a106 - store { ptr, i64, i64 } %t104, 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 %a110 - store { ptr, i64, i64 } { ptr @.str.4241, 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 - store { ptr, i64, i64 } %t112, 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 - %t118 = call { ptr, i64, i64 } @finch.gen.op(ptr %t92, { ptr, i64, i64 } %t117) - store { ptr, i64, i64 } %t118, ptr %a119 - %t120 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t121 = load { ptr, i64, i64 }, ptr %a119 - store { ptr, i64, i64 } %t121, ptr %a122 - call void @finch_str_copy(ptr %a123, ptr %a122) - %t124 = load { ptr, i64, i64 }, ptr %a123 - %t125 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t124, 0 - %t126 = getelementptr inbounds %S.ast.Type, ptr %a21, i32 0, i32 1 - %t127 = load { ptr, i64, i64 }, ptr %t126 - %t128 = extractvalue { ptr, i64, i64 } %t127, 1 - %t129 = icmp uge i64 0, %t128 - br i1 %t129, label %range6434, label %inrange6435 -range6434: - call void @finch_panic_index(ptr @.str.4242, i64 3519, i64 0, i64 %t128) + store { ptr, i64, i64 } %t95, ptr %a99 + call void @finch_str_drop(ptr %a99) + %t100 = load { ptr, i64, i64 }, ptr %a96 + store { ptr, i64, i64 } %t100, ptr %a102 + store { ptr, i64, i64 } { ptr @.str.4409, i64 6, i64 0 }, ptr %a103 + call void @finch_str_concat(ptr %a101, ptr %a102, ptr %a103) + store { ptr, i64, i64 } %t100, ptr %a104 + call void @finch_str_drop(ptr %a104) + %t105 = load { ptr, i64, i64 }, ptr %a101 + %t106 = load { ptr, i64, i64 }, ptr %a67 + store { ptr, i64, i64 } %t105, ptr %a108 + store { ptr, i64, i64 } %t106, ptr %a109 + call void @finch_str_concat(ptr %a107, ptr %a108, ptr %a109) + store { ptr, i64, i64 } %t105, ptr %a110 + call void @finch_str_drop(ptr %a110) + %t111 = load { ptr, i64, i64 }, ptr %a107 + store { ptr, i64, i64 } %t111, ptr %a113 + store { ptr, i64, i64 } { ptr @.str.4410, i64 13, i64 0 }, ptr %a114 + call void @finch_str_concat(ptr %a112, ptr %a113, ptr %a114) + store { ptr, i64, i64 } %t111, ptr %a115 + call void @finch_str_drop(ptr %a115) + %t116 = load { ptr, i64, i64 }, ptr %a112 + %t117 = load { ptr, i64, i64 }, ptr %a60 + store { ptr, i64, i64 } %t116, ptr %a119 + store { ptr, i64, i64 } %t117, ptr %a120 + call void @finch_str_concat(ptr %a118, ptr %a119, ptr %a120) + store { ptr, i64, i64 } %t116, ptr %a121 + call void @finch_str_drop(ptr %a121) + %t122 = load { ptr, i64, i64 }, ptr %a118 + %t123 = call { ptr, i64, i64 } @finch.gen.op(ptr %t92, { ptr, i64, i64 } %t122) + store { ptr, i64, i64 } %t122, ptr %a124 + call void @finch_str_drop(ptr %a124) + store { ptr, i64, i64 } %t123, ptr %a125 + %t126 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 + %t127 = load { ptr, i64, i64 }, ptr %a125 + store { ptr, i64, i64 } %t127, ptr %a128 + call void @finch_str_copy(ptr %a129, ptr %a128) + %t130 = load { ptr, i64, i64 }, ptr %a129 + %t131 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t130, 0 + %t132 = getelementptr inbounds %S.ast.Type, ptr %a11, 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 %range6805, label %inrange6806 +range6805: + call void @finch_panic_index(ptr @.str.4411, i64 3801, i64 0, i64 %t134) unreachable -inrange6435: - %t130 = extractvalue { ptr, i64, i64 } %t127, 0 - %t131 = getelementptr inbounds %S.ast.Type, ptr %t130, i64 0 - %t132 = load %S.ast.Type, ptr %t131 - store %S.ast.Type %t132, ptr %a133 - call void @finch.copy.S_ast_Type(ptr %a134, ptr %a133) - %t135 = load %S.ast.Type, ptr %a134 - %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 -endif6430: - %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.4243, 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 %then6436, label %endif6438 -then6436: - %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 %then6439, label %endif6441 -then6439: - %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.4244, i64 57, i64 0 }) - br label %endif6441 -endif6441: - %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 - store { ptr, i64, i64 } %t152, ptr %a153 - call void @finch_str_copy(ptr %a154, ptr %a153) - %t155 = load { ptr, i64, i64 }, ptr %a154 - 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 %then6442, label %endif6444 -then6442: - %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.4245, i64 3, i64 0 }, { ptr, i64, i64 } %t162) - store { ptr, i64, i64 } %t163, ptr %a156 - br label %endif6444 -endif6444: - %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 %range6445, label %inrange6446 -range6445: - call void @finch_panic_index(ptr @.str.4246, i64 3529, i64 0, i64 %t166) +inrange6806: + %t136 = extractvalue { ptr, i64, i64 } %t133, 0 + %t137 = getelementptr inbounds %S.ast.Type, ptr %t136, i64 0 + %t138 = load %S.ast.Type, ptr %t137 + store %S.ast.Type %t138, ptr %a139 + call void @finch.copy.S_ast_Type(ptr %a140, ptr %a139) + %t141 = load %S.ast.Type, ptr %a140 + %t142 = insertvalue %S.gen.Place %t131, %S.ast.Type %t141, 1 + %t143 = insertvalue %S.gen.Ref %t126, %S.gen.Place %t142, 1 + call void @finch_str_drop(ptr %a125) + call void @finch_str_drop(ptr %a67) + call void @finch_str_drop(ptr %a60) + call void @finch.drop.S_ast_Type(ptr %a11) + ret %S.gen.Ref %t143 +endif6801: + %t144 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 0 + %t145 = load { ptr, i64, i64 }, ptr %t144 + store { ptr, i64, i64 } %t145, ptr %a146 + store { ptr, i64, i64 } { ptr @.str.4412, i64 3, i64 0 }, ptr %a147 + %t148 = call i32 @finch_str_eq(ptr %a146, ptr %a147) + %t149 = icmp ne i32 %t148, 0 + br i1 %t149, label %then6807, label %endif6809 +then6807: + %t150 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 1 + %t151 = getelementptr inbounds { ptr, i64, i64 }, ptr %t150, i32 0, i32 1 + %t152 = load i64, ptr %t151 + %t153 = icmp eq i64 %t152, 0 + br i1 %t153, label %then6810, label %endif6812 +then6810: + %t154 = load ptr, ptr %a1 + %t155 = load %S.ast.Node, ptr %a2 + call void @finch.gen.fail(ptr %t154, %S.ast.Node %t155, { ptr, i64, i64 } { ptr @.str.4413, i64 57, i64 0 }) + br label %endif6812 +endif6812: + %t156 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 + %t157 = getelementptr inbounds %S.gen.Val, ptr %t156, i32 0, i32 0 + %t158 = load { ptr, i64, i64 }, ptr %t157 + store { ptr, i64, i64 } %t158, ptr %a159 + call void @finch_str_copy(ptr %a160, ptr %a159) + %t161 = load { ptr, i64, i64 }, ptr %a160 + store { ptr, i64, i64 } %t161, ptr %a162 + %t163 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 + %t164 = load i1, ptr %t163 + br i1 %t164, label %then6813, label %endif6815 +then6813: + %t165 = load ptr, ptr %a1 + %t166 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 1 + %t167 = getelementptr inbounds %S.gen.Place, ptr %t166, i32 0, i32 0 + %t168 = load { ptr, i64, i64 }, ptr %t167 + %t169 = call { ptr, i64, i64 } @finch.gen.load(ptr %t165, { ptr, i64, i64 } { ptr @.str.4414, i64 3, i64 0 }, { ptr, i64, i64 } %t168) + %t170 = load { ptr, i64, i64 }, ptr %a162 + store { ptr, i64, i64 } %t169, ptr %a162 + store { ptr, i64, i64 } %t170, ptr %a171 + call void @finch_str_drop(ptr %a171) + br label %endif6815 +endif6815: + %t172 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 1 + %t173 = load { ptr, i64, i64 }, ptr %t172 + %t174 = extractvalue { ptr, i64, i64 } %t173, 1 + %t175 = icmp uge i64 0, %t174 + br i1 %t175, label %range6816, label %inrange6817 +range6816: + call void @finch_panic_index(ptr @.str.4415, i64 3811, i64 0, i64 %t174) unreachable -inrange6446: - %t168 = extractvalue { ptr, i64, i64 } %t165, 0 - %t169 = getelementptr inbounds %S.ast.Type, ptr %t168, i64 0 - %t170 = load %S.ast.Type, ptr %t169 - store %S.ast.Type %t170, ptr %a171 - call void @finch.copy.S_ast_Type(ptr %a172, ptr %a171) - %t173 = load %S.ast.Type, ptr %a172 - store %S.ast.Type %t173, ptr %a174 - %t175 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t176 = load ptr, ptr %a1 - %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.4247, 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.4248, 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 +inrange6817: + %t176 = extractvalue { ptr, i64, i64 } %t173, 0 + %t177 = getelementptr inbounds %S.ast.Type, ptr %t176, i64 0 + %t178 = load %S.ast.Type, ptr %t177 + store %S.ast.Type %t178, ptr %a179 + call void @finch.copy.S_ast_Type(ptr %a180, ptr %a179) + %t181 = load %S.ast.Type, ptr %a180 + store %S.ast.Type %t181, ptr %a182 + %t183 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 + %t184 = load ptr, ptr %a1 + %t185 = load ptr, ptr %a1 + %t186 = load %S.ast.Type, ptr %a182 + %t187 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t185, %S.ast.Type %t186) + store { ptr, i64, i64 } { ptr @.str.4416, i64 23, i64 0 }, ptr %a189 store { ptr, i64, i64 } %t187, 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 + call void @finch_str_concat(ptr %a188, ptr %a189, ptr %a190) + store { ptr, i64, i64 } %t187, ptr %a191 + call void @finch_str_drop(ptr %a191) + %t192 = load { ptr, i64, i64 }, ptr %a188 store { ptr, i64, i64 } %t192, ptr %a194 - store { ptr, i64, i64 } { ptr @.str.4249, i64 6, i64 0 }, ptr %a195 + store { ptr, i64, i64 } { ptr @.str.4417, 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 - store { ptr, i64, i64 } %t196, ptr %a199 + store { ptr, i64, i64 } %t192, ptr %a196 + call void @finch_str_drop(ptr %a196) + %t197 = load { ptr, i64, i64 }, ptr %a193 + %t198 = load { ptr, i64, i64 }, ptr %a162 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 - %t202 = call { ptr, i64, i64 } @finch.gen.op(ptr %t176, { ptr, i64, i64 } %t201) - %t203 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t202, 0 - %t204 = load %S.ast.Type, ptr %a174 - store %S.ast.Type %t204, ptr %a205 - call void @finch.copy.S_ast_Type(ptr %a206, ptr %a205) - %t207 = load %S.ast.Type, ptr %a206 - %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 -endif6438: - %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.4250, 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.from6447 -logic.from6447: - br i1 %t215, label %logic.rhs6448, label %logic.end6449 -logic.rhs6448: - %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.4251, 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.rend6450 -logic.rend6450: - br label %logic.end6449 -logic.end6449: - %t222 = phi i1 [ false, %logic.from6447 ], [ %t221, %logic.rend6450 ] - br i1 %t222, label %then6451, label %endif6453 -then6451: - %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.4252, 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 %endif6453 -endif6453: - %t231 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4253, 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.4254, 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 %then6454, label %endif6456 -then6454: - %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 %range6457, label %inrange6458 -range6457: - call void @finch_panic_index(ptr @.str.4255, i64 3537, i64 0, i64 %t241) - unreachable -inrange6458: - %t243 = extractvalue { ptr, i64, i64 } %t240, 0 - %t244 = getelementptr inbounds %S.ast.Type, ptr %t243, i64 0 - %t245 = load %S.ast.Type, ptr %t244 - store %S.ast.Type %t245, ptr %a246 - 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 %endif6456 -endif6456: - %t249 = getelementptr inbounds %S.ast.Type, ptr %a21, i32 0, i32 0 + store { ptr, i64, i64 } %t198, ptr %a201 + call void @finch_str_concat(ptr %a199, ptr %a200, ptr %a201) + store { ptr, i64, i64 } %t197, ptr %a202 + call void @finch_str_drop(ptr %a202) + %t203 = load { ptr, i64, i64 }, ptr %a199 + store { ptr, i64, i64 } %t203, ptr %a205 + store { ptr, i64, i64 } { ptr @.str.4418, i64 6, i64 0 }, ptr %a206 + call void @finch_str_concat(ptr %a204, ptr %a205, ptr %a206) + store { ptr, i64, i64 } %t203, ptr %a207 + call void @finch_str_drop(ptr %a207) + %t208 = load { ptr, i64, i64 }, ptr %a204 + %t209 = load { ptr, i64, i64 }, ptr %a60 + store { ptr, i64, i64 } %t208, ptr %a211 + store { ptr, i64, i64 } %t209, ptr %a212 + call void @finch_str_concat(ptr %a210, ptr %a211, ptr %a212) + store { ptr, i64, i64 } %t208, ptr %a213 + call void @finch_str_drop(ptr %a213) + %t214 = load { ptr, i64, i64 }, ptr %a210 + %t215 = call { ptr, i64, i64 } @finch.gen.op(ptr %t184, { ptr, i64, i64 } %t214) + store { ptr, i64, i64 } %t214, ptr %a216 + call void @finch_str_drop(ptr %a216) + %t217 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t215, 0 + %t218 = load %S.ast.Type, ptr %a182 + 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 + %t222 = insertvalue %S.gen.Place %t217, %S.ast.Type %t221, 1 + %t223 = insertvalue %S.gen.Ref %t183, %S.gen.Place %t222, 1 + call void @finch.drop.S_ast_Type(ptr %a182) + call void @finch_str_drop(ptr %a162) + call void @finch_str_drop(ptr %a60) + call void @finch.drop.S_ast_Type(ptr %a11) + ret %S.gen.Ref %t223 +endif6809: + %t224 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 0 + %t225 = load { ptr, i64, i64 }, ptr %t224 + store { ptr, i64, i64 } %t225, ptr %a226 + store { ptr, i64, i64 } { ptr @.str.4419, i64 5, i64 0 }, ptr %a227 + %t228 = call i32 @finch_str_eq(ptr %a226, ptr %a227) + %t229 = icmp eq i32 %t228, 0 + br label %logic.from6818 +logic.from6818: + br i1 %t229, label %logic.rhs6819, label %logic.end6820 +logic.rhs6819: + %t230 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 0 + %t231 = load { ptr, i64, i64 }, ptr %t230 + store { ptr, i64, i64 } %t231, ptr %a232 + store { ptr, i64, i64 } { ptr @.str.4420, i64 3, i64 0 }, ptr %a233 + %t234 = call i32 @finch_str_eq(ptr %a232, ptr %a233) + %t235 = icmp eq i32 %t234, 0 + br label %logic.rend6821 +logic.rend6821: + br label %logic.end6820 +logic.end6820: + %t236 = phi i1 [ false, %logic.from6818 ], [ %t235, %logic.rend6821 ] + br i1 %t236, label %then6822, label %endif6824 +then6822: + %t237 = load ptr, ptr %a1 + %t238 = load %S.ast.Node, ptr %a2 + %t239 = load %S.ast.Type, ptr %a11 + %t240 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t239) + store { ptr, i64, i64 } { ptr @.str.4421, i64 46, i64 0 }, ptr %a242 + store { ptr, i64, i64 } %t240, ptr %a243 + call void @finch_str_concat(ptr %a241, ptr %a242, ptr %a243) + store { ptr, i64, i64 } %t240, ptr %a244 + call void @finch_str_drop(ptr %a244) + %t245 = load { ptr, i64, i64 }, ptr %a241 + call void @finch.gen.fail(ptr %t237, %S.ast.Node %t238, { ptr, i64, i64 } %t245) + store { ptr, i64, i64 } %t245, ptr %a246 + call void @finch_str_drop(ptr %a246) + br label %endif6824 +endif6824: + %t247 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4422, i64 4, i64 0 }) + store %S.ast.Type %t247, ptr %a248 + %t249 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 0 %t250 = load { ptr, i64, i64 }, ptr %t249 store { ptr, i64, i64 } %t250, ptr %a251 - store { ptr, i64, i64 } { ptr @.str.4256, i64 3, i64 0 }, ptr %a252 + store { ptr, i64, i64 } { ptr @.str.4423, i64 5, i64 0 }, ptr %a252 %t253 = call i32 @finch_str_eq(ptr %a251, ptr %a252) %t254 = icmp ne i32 %t253, 0 - br label %logic.from6459 -logic.from6459: - br i1 %t254, label %logic.rhs6460, label %logic.end6461 -logic.rhs6460: - %t255 = load i1, ptr %a3 - br label %logic.rend6462 -logic.rend6462: - br label %logic.end6461 -logic.end6461: - %t256 = phi i1 [ false, %logic.from6459 ], [ %t255, %logic.rend6462 ] - br i1 %t256, label %then6463, label %endif6465 -then6463: - %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 %then6466, label %endif6468 -then6466: - %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.4257, i64 44, i64 0 }) - br label %endif6468 -endif6468: - %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.4258, 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.4259, 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 %endif6465 -endif6465: - %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 - store { ptr, i64, i64 } %t276, ptr %a277 - call void @finch_str_copy(ptr %a278, ptr %a277) - %t279 = load { ptr, i64, i64 }, ptr %a278 - 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 %then6469, label %endif6471 -then6469: - %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.4260, i64 17, i64 0 }, { ptr, i64, i64 } %t286) - store { ptr, i64, i64 } %t287, ptr %a280 - br label %endif6471 -endif6471: - %t288 = load ptr, ptr %a1 - %t289 = load { ptr, i64, i64 }, ptr %a280 - store { ptr, i64, i64 } { ptr @.str.4261, 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.4262, 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) - store { ptr, i64, i64 } %t298, ptr %a299 - %t300 = load ptr, ptr %a1 - %t301 = load { ptr, i64, i64 }, ptr %a65 - %t302 = load { ptr, i64, i64 }, ptr %a299 - %t303 = load %S.ast.Node, ptr %a2 - 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.4263, 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.4264, 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) - store { ptr, i64, i64 } %t314, ptr %a315 - %t316 = load ptr, ptr %a1 - %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.4265, 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.4266, 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 - 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.4267, 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 - store { ptr, i64, i64 } %t336, ptr %a339 - store { ptr, i64, i64 } %t337, ptr %a340 - call void @finch_str_concat(ptr %a338, ptr %a339, ptr %a340) - %t341 = load { ptr, i64, i64 }, ptr %a338 - %t342 = call { ptr, i64, i64 } @finch.gen.op(ptr %t316, { ptr, i64, i64 } %t341) - 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 %then6472, label %endif6474 -then6472: - %t346 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t347 = load { ptr, i64, i64 }, ptr %a343 - store { ptr, i64, i64 } %t347, ptr %a348 - call void @finch_str_copy(ptr %a349, ptr %a348) - %t350 = load { ptr, i64, i64 }, ptr %a349 - %t351 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t350, 0 - %t352 = load %S.ast.Type, ptr %a232 - store %S.ast.Type %t352, ptr %a353 - call void @finch.copy.S_ast_Type(ptr %a354, ptr %a353) - %t355 = load %S.ast.Type, ptr %a354 - %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 -endif6474: - %t358 = load ptr, ptr %a1 - %t359 = load ptr, ptr %a1 - %t360 = load %S.ast.Type, ptr %a232 - %t361 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t359, %S.ast.Type %t360) - %t362 = load { ptr, i64, i64 }, ptr %a343 - %t363 = call { ptr, i64, i64 } @finch.gen.load(ptr %t358, { ptr, i64, i64 } %t361, { ptr, i64, i64 } %t362) - store { ptr, i64, i64 } %t363, ptr %a364 - %t365 = load { ptr, i64, i64 }, ptr %a364 - store { ptr, i64, i64 } %t365, ptr %a366 - call void @finch_str_copy(ptr %a367, ptr %a366) - %t368 = load { ptr, i64, i64 }, ptr %a367 - %t369 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t368, 0 - %t370 = load %S.ast.Type, ptr %a232 - store %S.ast.Type %t370, ptr %a371 - call void @finch.copy.S_ast_Type(ptr %a372, ptr %a371) - %t373 = load %S.ast.Type, ptr %a372 - %t374 = insertvalue %S.gen.Val %t369, %S.ast.Type %t373, 1 - store %S.gen.Val %t374, ptr %a375 - %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.from6475 -logic.from6475: - br i1 %t378, label %logic.rhs6476, label %logic.end6477 -logic.rhs6476: - %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.rend6478 -logic.rend6478: - br label %logic.end6477 -logic.end6477: - %t382 = phi i1 [ false, %logic.from6475 ], [ %t381, %logic.rend6478 ] - br i1 %t382, label %then6479, label %endif6481 -then6479: - %t383 = load ptr, ptr %a1 - %t384 = load { ptr, i64, i64 }, ptr %a364 - %t385 = load %S.ast.Type, ptr %a232 - %t386 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t383, { ptr, i64, i64 } %t384, %S.ast.Type %t385) - %t387 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t386, 0 - %t388 = load %S.ast.Type, ptr %a232 - store %S.ast.Type %t388, ptr %a389 - call void @finch.copy.S_ast_Type(ptr %a390, ptr %a389) - %t391 = load %S.ast.Type, ptr %a390 - %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 %endif6481 -endif6481: - %t394 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t395 = load %S.gen.Val, ptr %a375 - store %S.gen.Val %t395, ptr %a396 - call void @finch.copy.S_gen_Val(ptr %a397, ptr %a396) - %t398 = load %S.gen.Val, ptr %a397 - %t399 = insertvalue %S.gen.Ref %t394, %S.gen.Val %t398, 2 - ret %S.gen.Ref %t399 + br i1 %t254, label %then6825, label %endif6827 +then6825: + %t255 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 1 + %t256 = load { ptr, i64, i64 }, ptr %t255 + %t257 = extractvalue { ptr, i64, i64 } %t256, 1 + %t258 = icmp uge i64 0, %t257 + br i1 %t258, label %range6828, label %inrange6829 +range6828: + call void @finch_panic_index(ptr @.str.4424, i64 3819, i64 0, i64 %t257) + unreachable +inrange6829: + %t259 = extractvalue { ptr, i64, i64 } %t256, 0 + %t260 = getelementptr inbounds %S.ast.Type, ptr %t259, i64 0 + %t261 = load %S.ast.Type, ptr %t260 + store %S.ast.Type %t261, ptr %a262 + call void @finch.copy.S_ast_Type(ptr %a263, ptr %a262) + %t264 = load %S.ast.Type, ptr %a263 + %t265 = load %S.ast.Type, ptr %a248 + store %S.ast.Type %t264, ptr %a248 + store %S.ast.Type %t265, ptr %a266 + call void @finch.drop.S_ast_Type(ptr %a266) + br label %endif6827 +endif6827: + %t267 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 0 + %t268 = load { ptr, i64, i64 }, ptr %t267 + store { ptr, i64, i64 } %t268, ptr %a269 + store { ptr, i64, i64 } { ptr @.str.4425, i64 3, i64 0 }, ptr %a270 + %t271 = call i32 @finch_str_eq(ptr %a269, ptr %a270) + %t272 = icmp ne i32 %t271, 0 + br label %logic.from6830 +logic.from6830: + br i1 %t272, label %logic.rhs6831, label %logic.end6832 +logic.rhs6831: + %t273 = load i1, ptr %a4 + br label %logic.rend6833 +logic.rend6833: + br label %logic.end6832 +logic.end6832: + %t274 = phi i1 [ false, %logic.from6830 ], [ %t273, %logic.rend6833 ] + br i1 %t274, label %then6834, label %endif6836 +then6834: + %t275 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 + %t276 = load i1, ptr %t275 + %t277 = xor i1 %t276, true + br i1 %t277, label %then6837, label %endif6839 +then6837: + %t278 = load ptr, ptr %a1 + %t279 = load %S.ast.Node, ptr %a2 + call void @finch.gen.fail(ptr %t278, %S.ast.Node %t279, { ptr, i64, i64 } { ptr @.str.4426, i64 44, i64 0 }) + br label %endif6839 +endif6839: + %t280 = load ptr, ptr %a1 + %t281 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 1 + %t282 = getelementptr inbounds %S.gen.Place, ptr %t281, i32 0, i32 0 + %t283 = load { ptr, i64, i64 }, ptr %t282 + store { ptr, i64, i64 } { ptr @.str.4427, i64 29, 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 + store { ptr, i64, i64 } %t287, ptr %a289 + store { ptr, i64, i64 } { ptr @.str.4428, i64 1, i64 0 }, ptr %a290 + call void @finch_str_concat(ptr %a288, ptr %a289, ptr %a290) + store { ptr, i64, i64 } %t287, ptr %a291 + call void @finch_str_drop(ptr %a291) + %t292 = load { ptr, i64, i64 }, ptr %a288 + call void @finch.gen.emit(ptr %t280, { ptr, i64, i64 } %t292) + store { ptr, i64, i64 } %t292, ptr %a293 + call void @finch_str_drop(ptr %a293) + br label %endif6836 +endif6836: + %t294 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 + %t295 = getelementptr inbounds %S.gen.Val, ptr %t294, i32 0, i32 0 + %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 + store { ptr, i64, i64 } %t299, ptr %a300 + %t301 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 + %t302 = load i1, ptr %t301 + br i1 %t302, label %then6840, label %endif6842 +then6840: + %t303 = load ptr, ptr %a1 + %t304 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 1 + %t305 = getelementptr inbounds %S.gen.Place, ptr %t304, i32 0, i32 0 + %t306 = load { ptr, i64, i64 }, ptr %t305 + %t307 = call { ptr, i64, i64 } @finch.gen.load(ptr %t303, { ptr, i64, i64 } { ptr @.str.4429, i64 17, i64 0 }, { ptr, i64, i64 } %t306) + %t308 = load { ptr, i64, i64 }, ptr %a300 + store { ptr, i64, i64 } %t307, ptr %a300 + store { ptr, i64, i64 } %t308, ptr %a309 + call void @finch_str_drop(ptr %a309) + br label %endif6842 +endif6842: + %t310 = load ptr, ptr %a1 + %t311 = load { ptr, i64, i64 }, ptr %a300 + store { ptr, i64, i64 } { ptr @.str.4430, i64 31, i64 0 }, ptr %a313 + store { ptr, i64, i64 } %t311, ptr %a314 + call void @finch_str_concat(ptr %a312, ptr %a313, ptr %a314) + %t315 = load { ptr, i64, i64 }, ptr %a312 + store { ptr, i64, i64 } %t315, ptr %a317 + store { ptr, i64, i64 } { ptr @.str.4431, i64 3, i64 0 }, ptr %a318 + call void @finch_str_concat(ptr %a316, ptr %a317, ptr %a318) + store { ptr, i64, i64 } %t315, ptr %a319 + call void @finch_str_drop(ptr %a319) + %t320 = load { ptr, i64, i64 }, ptr %a316 + %t321 = call { ptr, i64, i64 } @finch.gen.op(ptr %t310, { ptr, i64, i64 } %t320) + store { ptr, i64, i64 } %t320, ptr %a322 + call void @finch_str_drop(ptr %a322) + store { ptr, i64, i64 } %t321, ptr %a323 + %t324 = load ptr, ptr %a1 + %t325 = load { ptr, i64, i64 }, ptr %a60 + %t326 = load { ptr, i64, i64 }, ptr %a323 + %t327 = load %S.ast.Node, ptr %a2 + call void @finch.gen.boundsCheck(ptr %t324, { ptr, i64, i64 } %t325, { ptr, i64, i64 } %t326, %S.ast.Node %t327) + %t328 = load ptr, ptr %a1 + %t329 = load { ptr, i64, i64 }, ptr %a300 + store { ptr, i64, i64 } { ptr @.str.4432, i64 31, i64 0 }, ptr %a331 + store { ptr, i64, i64 } %t329, ptr %a332 + call void @finch_str_concat(ptr %a330, ptr %a331, ptr %a332) + %t333 = load { ptr, i64, i64 }, ptr %a330 + store { ptr, i64, i64 } %t333, ptr %a335 + store { ptr, i64, i64 } { ptr @.str.4433, i64 3, i64 0 }, ptr %a336 + call void @finch_str_concat(ptr %a334, ptr %a335, ptr %a336) + store { ptr, i64, i64 } %t333, ptr %a337 + call void @finch_str_drop(ptr %a337) + %t338 = load { ptr, i64, i64 }, ptr %a334 + %t339 = call { ptr, i64, i64 } @finch.gen.op(ptr %t328, { ptr, i64, i64 } %t338) + store { ptr, i64, i64 } %t338, ptr %a340 + call void @finch_str_drop(ptr %a340) + store { ptr, i64, i64 } %t339, ptr %a341 + %t342 = load ptr, ptr %a1 + %t343 = load ptr, ptr %a1 + %t344 = load %S.ast.Type, ptr %a248 + %t345 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t343, %S.ast.Type %t344) + store { ptr, i64, i64 } { ptr @.str.4434, i64 23, i64 0 }, ptr %a347 + store { ptr, i64, i64 } %t345, ptr %a348 + call void @finch_str_concat(ptr %a346, ptr %a347, ptr %a348) + store { ptr, i64, i64 } %t345, ptr %a349 + call void @finch_str_drop(ptr %a349) + %t350 = load { ptr, i64, i64 }, ptr %a346 + store { ptr, i64, i64 } %t350, ptr %a352 + store { ptr, i64, i64 } { ptr @.str.4435, i64 6, i64 0 }, ptr %a353 + call void @finch_str_concat(ptr %a351, ptr %a352, ptr %a353) + store { ptr, i64, i64 } %t350, ptr %a354 + call void @finch_str_drop(ptr %a354) + %t355 = load { ptr, i64, i64 }, ptr %a351 + %t356 = load { ptr, i64, i64 }, ptr %a341 + store { ptr, i64, i64 } %t355, ptr %a358 + store { ptr, i64, i64 } %t356, ptr %a359 + call void @finch_str_concat(ptr %a357, ptr %a358, ptr %a359) + store { ptr, i64, i64 } %t355, ptr %a360 + call void @finch_str_drop(ptr %a360) + %t361 = load { ptr, i64, i64 }, ptr %a357 + store { ptr, i64, i64 } %t361, ptr %a363 + store { ptr, i64, i64 } { ptr @.str.4436, i64 6, i64 0 }, ptr %a364 + call void @finch_str_concat(ptr %a362, ptr %a363, ptr %a364) + store { ptr, i64, i64 } %t361, ptr %a365 + call void @finch_str_drop(ptr %a365) + %t366 = load { ptr, i64, i64 }, ptr %a362 + %t367 = load { ptr, i64, i64 }, ptr %a60 + store { ptr, i64, i64 } %t366, ptr %a369 + store { ptr, i64, i64 } %t367, ptr %a370 + call void @finch_str_concat(ptr %a368, ptr %a369, ptr %a370) + store { ptr, i64, i64 } %t366, ptr %a371 + call void @finch_str_drop(ptr %a371) + %t372 = load { ptr, i64, i64 }, ptr %a368 + %t373 = call { ptr, i64, i64 } @finch.gen.op(ptr %t342, { ptr, i64, i64 } %t372) + store { ptr, i64, i64 } %t372, ptr %a374 + call void @finch_str_drop(ptr %a374) + store { ptr, i64, i64 } %t373, ptr %a375 + %t376 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 + %t377 = load i1, ptr %t376 + br i1 %t377, label %then6843, label %endif6845 +then6843: + %t378 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 + %t379 = load { ptr, i64, i64 }, ptr %a375 + store { ptr, i64, i64 } %t379, ptr %a380 + call void @finch_str_copy(ptr %a381, ptr %a380) + %t382 = load { ptr, i64, i64 }, ptr %a381 + %t383 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t382, 0 + %t384 = load %S.ast.Type, ptr %a248 + store %S.ast.Type %t384, ptr %a385 + call void @finch.copy.S_ast_Type(ptr %a386, ptr %a385) + %t387 = load %S.ast.Type, ptr %a386 + %t388 = insertvalue %S.gen.Place %t383, %S.ast.Type %t387, 1 + %t389 = insertvalue %S.gen.Ref %t378, %S.gen.Place %t388, 1 + call void @finch_str_drop(ptr %a375) + call void @finch_str_drop(ptr %a341) + call void @finch_str_drop(ptr %a323) + call void @finch_str_drop(ptr %a300) + call void @finch.drop.S_ast_Type(ptr %a248) + call void @finch_str_drop(ptr %a60) + call void @finch.drop.S_ast_Type(ptr %a11) + ret %S.gen.Ref %t389 +endif6845: + %t390 = load ptr, ptr %a1 + %t391 = load ptr, ptr %a1 + %t392 = load %S.ast.Type, ptr %a248 + %t393 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t391, %S.ast.Type %t392) + %t394 = load { ptr, i64, i64 }, ptr %a375 + %t395 = call { ptr, i64, i64 } @finch.gen.load(ptr %t390, { ptr, i64, i64 } %t393, { ptr, i64, i64 } %t394) + store { ptr, i64, i64 } %t393, ptr %a396 + call void @finch_str_drop(ptr %a396) + store { ptr, i64, i64 } %t395, ptr %a397 + %t398 = load { ptr, i64, i64 }, ptr %a397 + store { ptr, i64, i64 } %t398, ptr %a399 + call void @finch_str_copy(ptr %a400, ptr %a399) + %t401 = load { ptr, i64, i64 }, ptr %a400 + %t402 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t401, 0 + %t403 = load %S.ast.Type, ptr %a248 + store %S.ast.Type %t403, ptr %a404 + call void @finch.copy.S_ast_Type(ptr %a405, ptr %a404) + %t406 = load %S.ast.Type, ptr %a405 + %t407 = insertvalue %S.gen.Val %t402, %S.ast.Type %t406, 1 + store %S.gen.Val %t407, ptr %a408 + %t409 = load ptr, ptr %a1 + %t410 = load %S.ast.Type, ptr %a248 + %t411 = call i1 @finch.gen.owning(ptr %t409, %S.ast.Type %t410) + br label %logic.from6846 +logic.from6846: + br i1 %t411, label %logic.rhs6847, label %logic.end6848 +logic.rhs6847: + %t412 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 + %t413 = getelementptr inbounds %S.gen.Val, ptr %t412, i32 0, i32 2 + %t414 = load i1, ptr %t413 + br label %logic.rend6849 +logic.rend6849: + br label %logic.end6848 +logic.end6848: + %t415 = phi i1 [ false, %logic.from6846 ], [ %t414, %logic.rend6849 ] + br i1 %t415, label %then6850, label %endif6852 +then6850: + %t416 = load ptr, ptr %a1 + %t417 = load { ptr, i64, i64 }, ptr %a397 + %t418 = load %S.ast.Type, ptr %a248 + %t419 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t416, { ptr, i64, i64 } %t417, %S.ast.Type %t418) + %t420 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t419, 0 + %t421 = load %S.ast.Type, ptr %a248 + store %S.ast.Type %t421, ptr %a422 + call void @finch.copy.S_ast_Type(ptr %a423, ptr %a422) + %t424 = load %S.ast.Type, ptr %a423 + %t425 = insertvalue %S.gen.Val %t420, %S.ast.Type %t424, 1 + %t426 = insertvalue %S.gen.Val %t425, i1 true, 2 + %t427 = load %S.gen.Val, ptr %a408 + store %S.gen.Val %t426, ptr %a408 + store %S.gen.Val %t427, ptr %a428 + call void @finch.drop.S_gen_Val(ptr %a428) + br label %endif6852 +endif6852: + %t429 = load ptr, ptr %a1 + %t430 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 + %t431 = load %S.gen.Val, ptr %t430 + call void @finch.gen.release(ptr %t429, %S.gen.Val %t431) + %t432 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 + %t433 = load %S.gen.Val, ptr %a408 + store %S.gen.Val %t433, ptr %a434 + call void @finch.copy.S_gen_Val(ptr %a435, ptr %a434) + %t436 = load %S.gen.Val, ptr %a435 + %t437 = insertvalue %S.gen.Ref %t432, %S.gen.Val %t436, 2 + call void @finch.drop.S_gen_Val(ptr %a408) + call void @finch_str_drop(ptr %a397) + call void @finch_str_drop(ptr %a375) + call void @finch_str_drop(ptr %a341) + call void @finch_str_drop(ptr %a323) + call void @finch_str_drop(ptr %a300) + call void @finch.drop.S_ast_Type(ptr %a248) + call void @finch_str_drop(ptr %a60) + call void @finch.drop.S_ast_Type(ptr %a11) + ret %S.gen.Ref %t437 } define internal void @finch.gen.checkArgs(ptr %p0, %S.ast.Node %p1, i64 %p2, i64 %p3, { ptr, i64, i64 } %p4) { @@ -58278,23 +68939,32 @@ entry: %a32 = alloca { ptr, i64, i64 }, align 16 %a33 = alloca { ptr, i64, i64 }, align 16 %a34 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 + %a35 = alloca { ptr, i64, i64 }, align 16 + %a37 = alloca { ptr, i64, i64 }, align 16 %a46 = 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 %a50 = 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 - %a55 = 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 %a59 = 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 %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 + %a70 = 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 + %a75 = alloca { ptr, i64, i64 }, align 16 + %a76 = alloca { ptr, i64, i64 }, align 16 + %a78 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store %S.ast.Node %p1, ptr %a2 store i64 %p2, ptr %a3 @@ -58308,14 +68978,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.cond6482 -each.cond6482: + br label %each.cond6853 +each.cond6853: %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.body6483, label %each.end6485 -each.body6483: + br i1 %t17, label %each.body6854, label %each.end6856 +each.body6854: %t18 = load ptr, ptr %t12 %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t18, i64 %t16 %t20 = load { ptr, i64, i64 }, ptr %t19 @@ -58323,66 +68993,84 @@ each.body6483: %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 %then6486, label %endif6488 -then6486: + br i1 %t24, label %then6857, label %endif6859 +then6857: %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.4268, i64 17, i64 0 }, ptr %a29 + store { ptr, i64, i64 } { ptr @.str.4437, 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.4269, i64 36, i64 0 }, ptr %a34 + store { ptr, i64, i64 } { ptr @.str.4438, 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 %endif6488 -endif6488: - br label %each.step6484 -each.step6484: - %t36 = load i64, ptr %a13 - %t37 = add i64 %t36, 1 - store i64 %t37, ptr %a13 - br label %each.cond6482 -each.end6485: - %t38 = load i64, ptr %a11 - %t39 = load i64, ptr %a4 - %t40 = icmp ne i64 %t38, %t39 - br i1 %t40, label %then6489, label %endif6491 -then6489: - %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.4270, 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.4271, 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 - call void @finch_str_from_int(ptr %a53, i64 %t52) - %t54 = load { ptr, i64, i64 }, ptr %a53 - 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.4272, 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 - call void @finch_str_from_int(ptr %a64, i64 %t63) - %t65 = load { ptr, i64, i64 }, ptr %a64 - store { ptr, i64, i64 } %t62, 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 - call void @finch.gen.fail(ptr %t41, %S.ast.Node %t42, { ptr, i64, i64 } %t69) - br label %endif6491 -endif6491: + store { ptr, i64, i64 } %t31, ptr %a35 + call void @finch_str_drop(ptr %a35) + %t36 = load { ptr, i64, i64 }, ptr %a32 + call void @finch.gen.fail(ptr %t25, %S.ast.Node %t26, { ptr, i64, i64 } %t36) + store { ptr, i64, i64 } %t36, ptr %a37 + call void @finch_str_drop(ptr %a37) + br label %endif6859 +endif6859: + br label %each.step6855 +each.step6855: + %t38 = load i64, ptr %a13 + %t39 = add i64 %t38, 1 + store i64 %t39, ptr %a13 + br label %each.cond6853 +each.end6856: + %t40 = load i64, ptr %a11 + %t41 = load i64, ptr %a4 + %t42 = icmp ne i64 %t40, %t41 + br i1 %t42, label %then6860, label %endif6862 +then6860: + %t43 = load ptr, ptr %a1 + %t44 = load %S.ast.Node, ptr %a2 + %t45 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.4439, i64 1, i64 0 }, ptr %a47 + store { ptr, i64, i64 } %t45, ptr %a48 + 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.4440, i64 8, i64 0 }, ptr %a52 + call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) + store { ptr, i64, i64 } %t49, ptr %a53 + call void @finch_str_drop(ptr %a53) + %t54 = load { ptr, i64, i64 }, ptr %a50 + %t55 = load i64, ptr %a4 + call void @finch_str_from_int(ptr %a56, i64 %t55) + %t57 = load { ptr, i64, i64 }, ptr %a56 + store { ptr, i64, i64 } %t54, ptr %a59 + store { ptr, i64, i64 } %t57, ptr %a60 + call void @finch_str_concat(ptr %a58, ptr %a59, ptr %a60) + store { ptr, i64, i64 } %t54, ptr %a61 + call void @finch_str_drop(ptr %a61) + store { ptr, i64, i64 } %t57, ptr %a62 + call void @finch_str_drop(ptr %a62) + %t63 = load { ptr, i64, i64 }, ptr %a58 + store { ptr, i64, i64 } %t63, ptr %a65 + store { ptr, i64, i64 } { ptr @.str.4441, i64 22, i64 0 }, ptr %a66 + call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) + store { ptr, i64, i64 } %t63, ptr %a67 + call void @finch_str_drop(ptr %a67) + %t68 = load { ptr, i64, i64 }, ptr %a64 + %t69 = load i64, ptr %a11 + call void @finch_str_from_int(ptr %a70, i64 %t69) + %t71 = load { ptr, i64, i64 }, ptr %a70 + store { ptr, i64, i64 } %t68, ptr %a73 + store { ptr, i64, i64 } %t71, ptr %a74 + call void @finch_str_concat(ptr %a72, ptr %a73, ptr %a74) + store { ptr, i64, i64 } %t68, ptr %a75 + call void @finch_str_drop(ptr %a75) + store { ptr, i64, i64 } %t71, ptr %a76 + call void @finch_str_drop(ptr %a76) + %t77 = load { ptr, i64, i64 }, ptr %a72 + call void @finch.gen.fail(ptr %t43, %S.ast.Node %t44, { ptr, i64, i64 } %t77) + store { ptr, i64, i64 } %t77, ptr %a78 + call void @finch_str_drop(ptr %a78) + br label %endif6862 +endif6862: ret void } @@ -58391,6 +69079,8 @@ entry: %a1 = alloca ptr, align 16 %a2 = alloca %S.ast.Node, align 16 %a3 = alloca { ptr, i64, i64 }, align 16 + %a12 = alloca %S.gen.Val, align 16 + %a13 = alloca %S.ast.Type, align 16 store ptr %p0, ptr %a1 store %S.ast.Node %p1, ptr %a2 store { ptr, i64, i64 } %p2, ptr %a3 @@ -58398,10 +69088,14 @@ 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.4273, i64 3, i64 0 }) + %t8 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4442, 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) + store %S.gen.Val %t7, ptr %a12 + call void @finch.drop.S_gen_Val(ptr %a12) + store %S.ast.Type %t8, ptr %a13 + call void @finch.drop.S_ast_Type(ptr %a13) ret %S.gen.Val %t11 } @@ -58410,7 +69104,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.4274, i64 17, i64 0 }) + %t3 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t2, { ptr, i64, i64 } { ptr @.str.4443, i64 17, i64 0 }) ret { ptr, i64, i64 } %t3 } @@ -58431,50 +69125,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.4275, i64 3, i64 0 }, ptr %a4 + store { ptr, i64, i64 } { ptr @.str.4444, 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 %then6492, label %endif6494 -then6492: - ret { ptr, i64, i64 } { ptr @.str.4276, i64 3, i64 0 } -endif6494: + br i1 %t6, label %then6863, label %endif6865 +then6863: + ret { ptr, i64, i64 } { ptr @.str.4445, i64 3, i64 0 } +endif6865: %t7 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t7, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.4277, i64 3, i64 0 }, ptr %a9 + store { ptr, i64, i64 } { ptr @.str.4446, 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 %then6495, label %endif6497 -then6495: - ret { ptr, i64, i64 } { ptr @.str.4278, i64 5, i64 0 } -endif6497: + br i1 %t11, label %then6866, label %endif6868 +then6866: + ret { ptr, i64, i64 } { ptr @.str.4447, i64 5, i64 0 } +endif6868: %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.4279, i64 3, i64 0 }, ptr %t14 + store { ptr, i64, i64 } { ptr @.str.4448, i64 3, i64 0 }, ptr %t14 %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 1 - store { ptr, i64, i64 } { ptr @.str.4280, i64 5, i64 0 }, ptr %t15 + store { ptr, i64, i64 } { ptr @.str.4449, i64 5, i64 0 }, ptr %t15 %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 2 - store { ptr, i64, i64 } { ptr @.str.4281, i64 4, i64 0 }, ptr %t16 + store { ptr, i64, i64 } { ptr @.str.4450, i64 4, i64 0 }, ptr %t16 %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 3 - store { ptr, i64, i64 } { ptr @.str.4282, i64 4, i64 0 }, ptr %t17 + store { ptr, i64, i64 } { ptr @.str.4451, i64 4, i64 0 }, ptr %t17 %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 4 - store { ptr, i64, i64 } { ptr @.str.4283, i64 2, i64 0 }, ptr %t18 + store { ptr, i64, i64 } { ptr @.str.4452, i64 2, i64 0 }, ptr %t18 %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 5 - store { ptr, i64, i64 } { ptr @.str.4284, i64 3, i64 0 }, ptr %t19 + store { ptr, i64, i64 } { ptr @.str.4453, i64 3, i64 0 }, ptr %t19 %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 6 - store { ptr, i64, i64 } { ptr @.str.4285, i64 3, i64 0 }, ptr %t20 + store { ptr, i64, i64 } { ptr @.str.4454, i64 3, i64 0 }, ptr %t20 %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 7 - store { ptr, i64, i64 } { ptr @.str.4286, i64 2, i64 0 }, ptr %t21 + store { ptr, i64, i64 } { ptr @.str.4455, i64 2, i64 0 }, ptr %t21 %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 8 - store { ptr, i64, i64 } { ptr @.str.4287, i64 3, i64 0 }, ptr %t22 + store { ptr, i64, i64 } { ptr @.str.4456, i64 3, i64 0 }, ptr %t22 %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 9 - store { ptr, i64, i64 } { ptr @.str.4288, i64 3, i64 0 }, ptr %t23 + store { ptr, i64, i64 } { ptr @.str.4457, i64 3, i64 0 }, ptr %t23 %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 10 - store { ptr, i64, i64 } { ptr @.str.4289, i64 3, i64 0 }, ptr %t24 + store { ptr, i64, i64 } { ptr @.str.4458, i64 3, i64 0 }, ptr %t24 %t25 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 11 - store { ptr, i64, i64 } { ptr @.str.4290, i64 3, i64 0 }, ptr %t25 + store { ptr, i64, i64 } { ptr @.str.4459, i64 3, i64 0 }, ptr %t25 %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 12 - store { ptr, i64, i64 } { ptr @.str.4291, i64 3, i64 0 }, ptr %t26 + store { ptr, i64, i64 } { ptr @.str.4460, 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 @@ -58485,38 +69179,40 @@ endif6497: %t34 = load i64, ptr %t31 %t35 = load ptr, ptr %a30 store i64 0, ptr %a36 - br label %find.cond6498 -find.cond6498: + br label %find.cond6869 +find.cond6869: %t37 = load i64, ptr %a36 %t38 = icmp slt i64 %t37, %t34 - br i1 %t38, label %find.body6499, label %find.end6502 -find.body6499: + br i1 %t38, label %find.body6870, label %find.end6873 +find.body6870: %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.hit6500, label %find.next6501 -find.hit6500: + br i1 %t44, label %find.hit6871, label %find.next6872 +find.hit6871: store i64 %t37, ptr %a33 - br label %find.end6502 -find.next6501: + br label %find.end6873 +find.next6872: %t45 = add i64 %t37, 1 store i64 %t45, ptr %a36 - br label %find.cond6498 -find.end6502: + br label %find.cond6869 +find.end6873: %t46 = load i64, ptr %a33 %t47 = icmp sge i64 %t46, 0 - br i1 %t47, label %then6503, label %endif6505 -then6503: + br i1 %t47, label %then6874, label %endif6876 +then6874: %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 + call void @finch.drop.arr_str(ptr %a30) ret { ptr, i64, i64 } %t51 -endif6505: - ret { ptr, i64, i64 } { ptr @.str.4292, i64 0, i64 0 } +endif6876: + call void @finch.drop.arr_str(ptr %a30) + ret { ptr, i64, i64 } { ptr @.str.4461, i64 0, i64 0 } } define internal %S.gen.Val @finch.gen.convert(ptr %p0, %S.ast.Node %p1, %S.ast.Type %p2) { @@ -58528,228 +69224,300 @@ entry: %a20 = alloca %S.ast.Type, align 16 %a21 = alloca %S.ast.Type, align 16 %a23 = alloca %S.ast.Type, align 16 - %a28 = alloca %S.gen.Val, align 16 - %a29 = alloca %S.gen.Val, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 + %a30 = alloca { ptr, i64, i64 }, align 16 + %a31 = alloca { ptr, i64, i64 }, align 16 + %a43 = alloca { ptr, i64, i64 }, align 16 + %a44 = alloca { ptr, i64, i64 }, align 16 %a47 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 + %a51 = alloca { ptr, i64, i64 }, align 16 + %a58 = 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 %a68 = 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 %a72 = 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 %a78 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 + %a79 = alloca { ptr, i64, i64 }, align 16 %a81 = alloca { ptr, i64, i64 }, align 16 %a82 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 + %a83 = alloca { ptr, i64, i64 }, align 16 + %a84 = 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 %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 %a94 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 + %a95 = alloca { ptr, i64, i64 }, align 16 %a98 = alloca { ptr, i64, i64 }, align 16 %a99 = 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 - %a124 = alloca %S.ast.Type, align 16 - %a125 = alloca %S.ast.Type, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = 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 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 + %a104 = 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 + %a109 = alloca { ptr, i64, i64 }, align 16 + %a112 = alloca { ptr, i64, i64 }, align 16 + %a117 = alloca { ptr, i64, i64 }, align 16 + %a125 = alloca { ptr, i64, i64 }, align 16 + %a135 = alloca { ptr, i64, i64 }, align 16 + %a136 = alloca %S.ast.Type, align 16 + %a139 = alloca %S.ast.Type, align 16 + %a140 = alloca %S.ast.Type, align 16 + %a145 = alloca { ptr, i64, i64 }, align 16 %a152 = 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 - %a156 = 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 %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 - %a167 = alloca { ptr, i64, i64 }, align 16 + %a165 = alloca { ptr, i64, i64 }, align 16 + %a166 = alloca { ptr, i64, i64 }, align 16 %a168 = 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 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca %S.ast.Type, align 16 - %a195 = alloca %S.ast.Type, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, 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 + %a174 = alloca { ptr, i64, i64 }, align 16 + %a175 = 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 + %a180 = alloca { ptr, i64, i64 }, align 16 + %a181 = alloca { ptr, i64, i64 }, align 16 + %a182 = alloca { ptr, i64, i64 }, align 16 + %a185 = alloca { ptr, i64, i64 }, align 16 + %a186 = 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 + %a196 = alloca { ptr, i64, i64 }, align 16 + %a199 = alloca { ptr, i64, i64 }, align 16 + %a204 = alloca { ptr, i64, i64 }, align 16 + %a212 = alloca { ptr, i64, i64 }, align 16 + %a222 = alloca { ptr, i64, i64 }, align 16 + %a223 = alloca %S.ast.Type, align 16 + %a226 = alloca %S.ast.Type, align 16 + %a227 = alloca %S.ast.Type, align 16 %a232 = alloca { ptr, i64, i64 }, align 16 %a233 = 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 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca %S.ast.Type, align 16 - %a266 = alloca %S.ast.Type, 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 + %a267 = 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 %a273 = 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 %a278 = alloca { ptr, i64, i64 }, align 16 - %a279 = 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 %a288 = 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 + %a293 = alloca { ptr, i64, i64 }, align 16 %a296 = 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 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca %S.ast.Type, align 16 - %a312 = alloca %S.ast.Type, align 16 + %a297 = alloca { ptr, i64, i64 }, align 16 + %a305 = alloca %S.ast.Type, align 16 + %a308 = alloca %S.ast.Type, align 16 + %a309 = alloca %S.ast.Type, align 16 + %a316 = alloca { ptr, i64, i64 }, align 16 + %a317 = 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 - %a332 = alloca %S.ast.Type, align 16 - %a333 = alloca %S.ast.Type, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 + %a321 = 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 + %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 + %a335 = alloca { ptr, i64, i64 }, align 16 + %a339 = 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 + %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 %a350 = alloca { ptr, i64, i64 }, align 16 + %a353 = alloca { ptr, i64, i64 }, align 16 + %a354 = alloca { ptr, i64, i64 }, align 16 %a362 = alloca %S.ast.Type, align 16 - %a363 = alloca %S.ast.Type, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a369 = 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 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca { ptr, i64, i64 }, align 16 - %a393 = alloca %S.ast.Type, align 16 - %a394 = alloca %S.ast.Type, 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 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a415 = 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 + %a365 = alloca %S.ast.Type, align 16 + %a366 = alloca %S.ast.Type, align 16 + %a373 = alloca { ptr, i64, i64 }, align 16 + %a374 = alloca { ptr, i64, i64 }, align 16 + %a384 = alloca %S.ast.Type, align 16 + %a387 = alloca %S.ast.Type, align 16 + %a388 = alloca %S.ast.Type, align 16 + %a395 = alloca { ptr, i64, i64 }, align 16 + %a396 = alloca { ptr, i64, i64 }, align 16 + %a404 = alloca { ptr, i64, i64 }, align 16 + %a405 = alloca { ptr, i64, i64 }, align 16 + %a417 = alloca %S.ast.Type, align 16 + %a418 = alloca %S.ast.Type, 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 { ptr, i64, i64 }, align 16 %a430 = alloca { ptr, i64, i64 }, align 16 + %a431 = alloca { ptr, i64, i64 }, align 16 + %a432 = alloca { ptr, i64, i64 }, align 16 + %a434 = alloca { ptr, i64, i64 }, align 16 %a435 = alloca { ptr, i64, i64 }, align 16 %a436 = alloca { ptr, i64, i64 }, align 16 %a437 = alloca { ptr, i64, i64 }, align 16 - %a442 = alloca %S.ast.Type, align 16 - %a443 = alloca %S.ast.Type, align 16 - %a458 = alloca %S.ast.Type, align 16 - %a459 = alloca %S.ast.Type, align 16 - %a472 = alloca %S.ast.Type, align 16 - %a473 = alloca %S.ast.Type, align 16 + %a442 = 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 + %a446 = alloca { ptr, i64, i64 }, align 16 + %a449 = alloca { ptr, i64, i64 }, align 16 + %a452 = alloca %S.ast.Type, align 16 + %a453 = alloca %S.ast.Type, align 16 + %a461 = alloca { ptr, i64, i64 }, align 16 + %a465 = alloca { ptr, i64, i64 }, align 16 + %a468 = 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 + %a477 = alloca { ptr, i64, i64 }, align 16 %a478 = 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 + %a484 = alloca { ptr, i64, i64 }, align 16 + %a488 = alloca { ptr, i64, i64 }, align 16 %a489 = alloca { ptr, i64, i64 }, align 16 %a490 = 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 - %a499 = alloca { ptr, i64, i64 }, align 16 - %a500 = alloca { ptr, i64, i64 }, align 16 + %a496 = alloca { ptr, i64, i64 }, align 16 %a501 = alloca { ptr, i64, i64 }, align 16 + %a502 = alloca { ptr, i64, i64 }, align 16 %a503 = alloca { ptr, i64, i64 }, align 16 %a504 = alloca { ptr, i64, i64 }, align 16 %a505 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca %S.ast.Type, align 16 + %a508 = alloca { ptr, i64, i64 }, align 16 %a511 = alloca %S.ast.Type, align 16 - %a516 = alloca { ptr, i64, i64 }, align 16 - %a517 = alloca { ptr, i64, i64 }, align 16 - %a522 = alloca { ptr, i64, i64 }, align 16 - %a523 = alloca { ptr, i64, i64 }, align 16 - %a528 = alloca { ptr, i64, i64 }, align 16 - %a529 = alloca { ptr, i64, i64 }, align 16 - %a536 = alloca { ptr, i64, i64 }, align 16 - %a537 = alloca { ptr, i64, i64 }, align 16 + %a512 = alloca %S.ast.Type, align 16 + %a527 = alloca %S.ast.Type, align 16 + %a528 = alloca %S.ast.Type, align 16 %a541 = alloca %S.ast.Type, align 16 %a542 = alloca %S.ast.Type, align 16 %a547 = alloca { ptr, i64, i64 }, align 16 %a548 = alloca { ptr, i64, i64 }, align 16 + %a558 = alloca { ptr, i64, i64 }, align 16 + %a559 = alloca { ptr, i64, i64 }, align 16 + %a560 = alloca { ptr, i64, i64 }, align 16 %a561 = alloca { ptr, i64, i64 }, align 16 - %a562 = 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 %a566 = alloca { ptr, i64, i64 }, align 16 - %a567 = alloca { ptr, i64, i64 }, align 16 - %a572 = alloca %S.ast.Type, align 16 - %a573 = alloca %S.ast.Type, align 16 - %a580 = alloca { ptr, i64, i64 }, align 16 + %a570 = alloca { ptr, i64, i64 }, align 16 + %a571 = alloca { ptr, i64, i64 }, align 16 + %a572 = alloca { ptr, i64, i64 }, align 16 + %a573 = alloca { ptr, i64, i64 }, align 16 + %a575 = 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 %a581 = alloca { ptr, i64, i64 }, align 16 - %a588 = alloca { ptr, i64, i64 }, align 16 - %a589 = alloca { ptr, i64, i64 }, align 16 + %a584 = alloca %S.ast.Type, align 16 + %a585 = alloca %S.ast.Type, align 16 %a590 = alloca { ptr, i64, i64 }, align 16 - %a592 = alloca { ptr, i64, i64 }, align 16 - %a593 = alloca { ptr, i64, i64 }, align 16 - %a594 = alloca { ptr, i64, i64 }, align 16 - %a599 = alloca { ptr, i64, i64 }, align 16 - %a600 = alloca { ptr, i64, i64 }, align 16 - %a601 = alloca { ptr, i64, i64 }, align 16 - %a606 = alloca %S.ast.Type, align 16 - %a607 = alloca %S.ast.Type, align 16 - %a612 = alloca { ptr, i64, i64 }, align 16 - %a613 = alloca { ptr, i64, i64 }, align 16 - %a618 = alloca { ptr, i64, i64 }, align 16 - %a619 = alloca { ptr, i64, i64 }, align 16 + %a591 = alloca { ptr, i64, i64 }, align 16 + %a596 = alloca { ptr, i64, i64 }, align 16 + %a597 = alloca { ptr, i64, i64 }, align 16 + %a602 = 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 + %a615 = alloca %S.ast.Type, align 16 + %a616 = alloca %S.ast.Type, align 16 + %a621 = alloca { ptr, i64, i64 }, align 16 + %a622 = alloca { ptr, i64, i64 }, align 16 + %a635 = alloca %S.ast.Type, align 16 + %a636 = 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 - %a645 = alloca { ptr, i64, i64 }, align 16 - %a646 = alloca { ptr, i64, i64 }, align 16 + %a644 = 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 - %a656 = alloca %S.gen.Val, align 16 - %a657 = alloca %S.gen.Val, align 16 + %a650 = alloca %S.ast.Type, align 16 + %a651 = alloca %S.ast.Type, align 16 + %a658 = alloca { ptr, i64, i64 }, align 16 + %a659 = 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 + %a670 = 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 + %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 + %a685 = alloca { ptr, i64, i64 }, align 16 + %a688 = alloca %S.ast.Type, align 16 + %a689 = alloca %S.ast.Type, align 16 + %a694 = alloca { ptr, i64, i64 }, align 16 + %a695 = alloca { ptr, i64, i64 }, align 16 + %a700 = alloca { ptr, i64, i64 }, align 16 + %a701 = alloca { ptr, i64, i64 }, align 16 + %a723 = 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 + %a728 = 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 + %a735 = alloca { ptr, i64, i64 }, align 16 + %a736 = alloca { ptr, i64, i64 }, align 16 + %a737 = alloca { ptr, i64, i64 }, align 16 + %a738 = alloca { ptr, i64, i64 }, align 16 + %a740 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store %S.ast.Node %p1, ptr %a2 store %S.ast.Type %p2, ptr %a3 @@ -58763,11 +69531,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 %range6506, label %inrange6507 -range6506: - call void @finch_panic_index(ptr @.str.4293, i64 3606, i64 0, i64 %t11) + br i1 %t12, label %range6877, label %inrange6878 +range6877: + call void @finch_panic_index(ptr @.str.4462, i64 3889, i64 0, i64 %t11) unreachable -inrange6507: +inrange6878: %t13 = extractvalue { ptr, i64, i64 } %t10, 0 %t14 = getelementptr inbounds %S.ast.Node, ptr %t13, i64 0 %t15 = load %S.ast.Node, ptr %t14 @@ -58782,874 +69550,1078 @@ inrange6507: %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 %then6508, label %endif6510 -then6508: + br i1 %t26, label %then6879, label %endif6881 +then6879: %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 -endif6510: - %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.4294, 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.from6511 -logic.from6511: - br i1 %t36, label %logic.rhs6512, label %logic.end6513 -logic.rhs6512: - %t37 = load %S.ast.Type, ptr %a3 - %t38 = call i1 @finch.gen.isNumber(%S.ast.Type %t37) - br label %logic.rend6514 -logic.rend6514: - br label %logic.end6513 -logic.end6513: - %t39 = phi i1 [ false, %logic.from6511 ], [ %t38, %logic.rend6514 ] - br label %logic.from6515 -logic.from6515: - br i1 %t39, label %logic.rhs6516, label %logic.end6517 -logic.rhs6516: - %t40 = load ptr, ptr %a1 - %t41 = icmp eq ptr %t40, null - br i1 %t41, label %panic6518, label %ok6519 -panic6518: - call void @finch_panic(ptr @.str.4295, i64 3611, ptr @.str.4296) + call void @finch.drop.S_ast_Type(ptr %a23) + ret %S.gen.Val %t27 +endif6881: + %t28 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 + %t29 = load { ptr, i64, i64 }, ptr %t28 + store { ptr, i64, i64 } %t29, ptr %a30 + store { ptr, i64, i64 } { ptr @.str.4463, 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.from6882 +logic.from6882: + br i1 %t33, label %logic.rhs6883, label %logic.end6884 +logic.rhs6883: + %t34 = load %S.ast.Type, ptr %a3 + %t35 = call i1 @finch.gen.isNumber(%S.ast.Type %t34) + br label %logic.rend6885 +logic.rend6885: + br label %logic.end6884 +logic.end6884: + %t36 = phi i1 [ false, %logic.from6882 ], [ %t35, %logic.rend6885 ] + br label %logic.from6886 +logic.from6886: + br i1 %t36, label %logic.rhs6887, label %logic.end6888 +logic.rhs6887: + %t37 = load ptr, ptr %a1 + %t38 = icmp eq ptr %t37, null + br i1 %t38, label %panic6889, label %ok6890 +panic6889: + call void @finch_panic(ptr @.str.4464, i64 3894, ptr @.str.4465) unreachable -ok6519: - %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) - store { ptr, i64, i64 } %t43, ptr %a46 - 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.rend6520 -logic.rend6520: - br label %logic.end6517 -logic.end6517: - %t50 = phi i1 [ false, %logic.from6515 ], [ %t49, %logic.rend6520 ] - br i1 %t50, label %then6521, label %endif6523 -then6521: - %t51 = load ptr, ptr %a1 - %t52 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t51, { ptr, i64, i64 } { ptr @.str.4297, 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.4298, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4299, 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 %then6524, label %endif6526 -then6524: - %t58 = load ptr, ptr %a1 - %t59 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t58, { ptr, i64, i64 } { ptr @.str.4300, i64 3, i64 0 }) - store { ptr, i64, i64 } %t59, ptr %a60 +ok6890: + %t39 = getelementptr inbounds %S.gen.Gen, ptr %t37, i32 0, i32 40 + %t40 = load { ptr, i64, i64 }, ptr %t39 + %t41 = load %S.ast.Node, ptr %a2 + %t42 = call { ptr, i64, i64 } @finch.gen.nodeKey(%S.ast.Node %t41) + store { ptr, i64, i64 } %t40, 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 + store { ptr, i64, i64 } %t42, ptr %a47 + call void @finch_str_drop(ptr %a47) + br label %logic.rend6891 +logic.rend6891: + br label %logic.end6888 +logic.end6888: + %t48 = phi i1 [ false, %logic.from6886 ], [ %t46, %logic.rend6891 ] + br i1 %t48, label %then6892, label %endif6894 +then6892: + %t49 = load ptr, ptr %a1 + %t50 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t49, { ptr, i64, i64 } { ptr @.str.4466, i64 17, i64 0 }) + store { ptr, i64, i64 } %t50, ptr %a51 + %t52 = load ptr, ptr %a1 + %t53 = load { ptr, i64, i64 }, ptr %a51 + call void @finch.gen.store(ptr %t52, { ptr, i64, i64 } { ptr @.str.4467, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4468, i64 15, i64 0 }, { ptr, i64, i64 } %t53) + %t54 = load %S.ast.Type, ptr %a3 + %t55 = call i1 @finch.gen.isInt(%S.ast.Type %t54) + br i1 %t55, label %then6895, label %endif6897 +then6895: + %t56 = load ptr, ptr %a1 + %t57 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t56, { ptr, i64, i64 } { ptr @.str.4469, i64 3, i64 0 }) + store { ptr, i64, i64 } %t57, ptr %a58 + %t59 = load ptr, ptr %a1 + %t60 = load { ptr, i64, i64 }, ptr %a58 + call void @finch.gen.store(ptr %t59, { ptr, i64, i64 } { ptr @.str.4470, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.4471, i64 1, i64 0 }, { ptr, i64, i64 } %t60) %t61 = load ptr, ptr %a1 - %t62 = load { ptr, i64, i64 }, ptr %a60 - call void @finch.gen.store(ptr %t61, { ptr, i64, i64 } { ptr @.str.4301, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.4302, 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.4303, 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.4304, 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 + %t62 = load ptr, ptr %a1 + %t63 = load %S.gen.Val, ptr %a17 + %t64 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t62, %S.gen.Val %t63) + store { ptr, i64, i64 } { ptr @.str.4472, i64 32, i64 0 }, ptr %a66 + store { ptr, i64, i64 } %t64, ptr %a67 + call void @finch_str_concat(ptr %a65, ptr %a66, ptr %a67) + store { ptr, i64, i64 } %t64, ptr %a68 + call void @finch_str_drop(ptr %a68) + %t69 = load { ptr, i64, i64 }, ptr %a65 + store { ptr, i64, i64 } %t69, ptr %a71 + store { ptr, i64, i64 } { ptr @.str.4473, i64 6, i64 0 }, ptr %a72 + call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) + store { ptr, i64, i64 } %t69, ptr %a73 + call void @finch_str_drop(ptr %a73) + %t74 = load { ptr, i64, i64 }, ptr %a70 + %t75 = load { ptr, i64, i64 }, ptr %a58 store { ptr, i64, i64 } %t74, 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.4305, 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 - store { ptr, i64, i64 } %t83, 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.4306, 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.4307, 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.4308, 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 %panic6527, label %ok6528 -panic6527: - call void @finch_panic(ptr @.str.4309, i64 3619, ptr @.str.4310) + store { ptr, i64, i64 } %t74, ptr %a79 + call void @finch_str_drop(ptr %a79) + %t80 = load { ptr, i64, i64 }, ptr %a76 + store { ptr, i64, i64 } %t80, ptr %a82 + store { ptr, i64, i64 } { ptr @.str.4474, i64 6, i64 0 }, ptr %a83 + call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) + store { ptr, i64, i64 } %t80, ptr %a84 + call void @finch_str_drop(ptr %a84) + %t85 = load { ptr, i64, i64 }, ptr %a81 + %t86 = load { ptr, i64, i64 }, ptr %a51 + store { ptr, i64, i64 } %t85, ptr %a88 + store { ptr, i64, i64 } %t86, ptr %a89 + call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89) + store { ptr, i64, i64 } %t85, ptr %a90 + call void @finch_str_drop(ptr %a90) + %t91 = load { ptr, i64, i64 }, ptr %a87 + store { ptr, i64, i64 } %t91, ptr %a93 + store { ptr, i64, i64 } { ptr @.str.4475, i64 1, i64 0 }, ptr %a94 + call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) + store { ptr, i64, i64 } %t91, ptr %a95 + call void @finch_str_drop(ptr %a95) + %t96 = load { ptr, i64, i64 }, ptr %a92 + %t97 = call { ptr, i64, i64 } @finch.gen.op(ptr %t61, { ptr, i64, i64 } %t96) + store { ptr, i64, i64 } %t96, ptr %a98 + call void @finch_str_drop(ptr %a98) + store { ptr, i64, i64 } %t97, ptr %a99 + %t100 = load ptr, ptr %a1 + %t101 = load { ptr, i64, i64 }, ptr %a99 + store { ptr, i64, i64 } { ptr @.str.4476, i64 12, 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.4477, i64 3, i64 0 }, ptr %a108 + call void @finch_str_concat(ptr %a106, ptr %a107, ptr %a108) + store { ptr, i64, i64 } %t105, ptr %a109 + call void @finch_str_drop(ptr %a109) + %t110 = load { ptr, i64, i64 }, ptr %a106 + %t111 = call { ptr, i64, i64 } @finch.gen.op(ptr %t100, { ptr, i64, i64 } %t110) + store { ptr, i64, i64 } %t110, ptr %a112 + call void @finch_str_drop(ptr %a112) + %t113 = load ptr, ptr %a1 + %t114 = icmp eq ptr %t113, null + br i1 %t114, label %panic6898, label %ok6899 +panic6898: + call void @finch_panic(ptr @.str.4478, i64 3902, ptr @.str.4479) unreachable -ok6528: - %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.4311, i64 17, i64 0 }, { ptr, i64, i64 } %t110) - %t112 = load ptr, ptr %a1 - %t113 = icmp eq ptr %t112, null - br i1 %t113, label %panic6529, label %ok6530 -panic6529: - call void @finch_panic(ptr @.str.4312, i64 3620, ptr @.str.4313) +ok6899: + %t115 = getelementptr inbounds %S.gen.Gen, ptr %t113, i32 0, i32 41 + %t116 = load { ptr, i64, i64 }, ptr %t115 + store { ptr, i64, i64 } %t111, ptr %t115 + store { ptr, i64, i64 } %t116, ptr %a117 + call void @finch_str_drop(ptr %a117) + %t118 = load ptr, ptr %a1 + %t119 = load { ptr, i64, i64 }, ptr %a51 + %t120 = call { ptr, i64, i64 } @finch.gen.load(ptr %t118, { ptr, i64, i64 } { ptr @.str.4480, i64 17, i64 0 }, { ptr, i64, i64 } %t119) + %t121 = load ptr, ptr %a1 + %t122 = icmp eq ptr %t121, null + br i1 %t122, label %panic6900, label %ok6901 +panic6900: + call void @finch_panic(ptr @.str.4481, i64 3903, ptr @.str.4482) unreachable -ok6530: - %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.4314, i64 3, i64 0 }, { ptr, i64, i64 } %t117) - %t119 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4315, 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 - %t123 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t123, ptr %a124 - call void @finch.copy.S_ast_Type(ptr %a125, ptr %a124) - %t126 = load %S.ast.Type, ptr %a125 - %t127 = insertvalue %S.gen.Val %t122, %S.ast.Type %t126, 1 - ret %S.gen.Val %t127 -endif6526: +ok6901: + %t123 = getelementptr inbounds %S.gen.Gen, ptr %t121, i32 0, i32 42 + %t124 = load { ptr, i64, i64 }, ptr %t123 + store { ptr, i64, i64 } %t120, ptr %t123 + store { ptr, i64, i64 } %t124, ptr %a125 + call void @finch_str_drop(ptr %a125) + %t126 = load ptr, ptr %a1 + %t127 = load %S.gen.Val, ptr %a17 + call void @finch.gen.release(ptr %t126, %S.gen.Val %t127) %t128 = load ptr, ptr %a1 - %t129 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t128, { ptr, i64, i64 } { ptr @.str.4316, 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.4317, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.4318, 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.4319, 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.4320, 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 - store { ptr, i64, i64 } %t144, 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.4321, 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 - store { ptr, i64, i64 } %t153, 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.4322, 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.4323, 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.4324, 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 %panic6531, label %ok6532 -panic6531: - call void @finch_panic(ptr @.str.4325, i64 3626, ptr @.str.4326) + %t129 = load ptr, ptr %a1 + %t130 = load { ptr, i64, i64 }, ptr %a58 + %t131 = call { ptr, i64, i64 } @finch.gen.load(ptr %t129, { ptr, i64, i64 } { ptr @.str.4483, i64 3, i64 0 }, { ptr, i64, i64 } %t130) + %t132 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4484, i64 3, i64 0 }) + %t133 = load %S.ast.Type, ptr %a3 + %t134 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t128, { ptr, i64, i64 } %t131, %S.ast.Type %t132, %S.ast.Type %t133) + store { ptr, i64, i64 } %t131, ptr %a135 + call void @finch_str_drop(ptr %a135) + store %S.ast.Type %t132, ptr %a136 + call void @finch.drop.S_ast_Type(ptr %a136) + %t137 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t134, 0 + %t138 = load %S.ast.Type, ptr %a3 + store %S.ast.Type %t138, ptr %a139 + call void @finch.copy.S_ast_Type(ptr %a140, ptr %a139) + %t141 = load %S.ast.Type, ptr %a140 + %t142 = insertvalue %S.gen.Val %t137, %S.ast.Type %t141, 1 + call void @finch_str_drop(ptr %a99) + call void @finch_str_drop(ptr %a58) + call void @finch_str_drop(ptr %a51) + call void @finch.drop.S_ast_Type(ptr %a23) + call void @finch.drop.S_gen_Val(ptr %a17) + ret %S.gen.Val %t142 +endif6897: + %t143 = load ptr, ptr %a1 + %t144 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t143, { ptr, i64, i64 } { ptr @.str.4485, i64 6, i64 0 }) + store { ptr, i64, i64 } %t144, ptr %a145 + %t146 = load ptr, ptr %a1 + %t147 = load { ptr, i64, i64 }, ptr %a145 + call void @finch.gen.store(ptr %t146, { ptr, i64, i64 } { ptr @.str.4486, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.4487, i64 3, i64 0 }, { ptr, i64, i64 } %t147) + %t148 = load ptr, ptr %a1 + %t149 = load ptr, ptr %a1 + %t150 = load %S.gen.Val, ptr %a17 + %t151 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t149, %S.gen.Val %t150) + store { ptr, i64, i64 } { ptr @.str.4488, i64 34, i64 0 }, ptr %a153 + store { ptr, i64, i64 } %t151, ptr %a154 + call void @finch_str_concat(ptr %a152, ptr %a153, ptr %a154) + store { ptr, i64, i64 } %t151, ptr %a155 + call void @finch_str_drop(ptr %a155) + %t156 = load { ptr, i64, i64 }, ptr %a152 + store { ptr, i64, i64 } %t156, ptr %a158 + store { ptr, i64, i64 } { ptr @.str.4489, i64 6, i64 0 }, ptr %a159 + call void @finch_str_concat(ptr %a157, ptr %a158, ptr %a159) + store { ptr, i64, i64 } %t156, ptr %a160 + call void @finch_str_drop(ptr %a160) + %t161 = load { ptr, i64, i64 }, ptr %a157 + %t162 = load { ptr, i64, i64 }, ptr %a145 + store { ptr, i64, i64 } %t161, ptr %a164 + store { ptr, i64, i64 } %t162, ptr %a165 + call void @finch_str_concat(ptr %a163, ptr %a164, ptr %a165) + store { ptr, i64, i64 } %t161, ptr %a166 + call void @finch_str_drop(ptr %a166) + %t167 = load { ptr, i64, i64 }, ptr %a163 + store { ptr, i64, i64 } %t167, ptr %a169 + store { ptr, i64, i64 } { ptr @.str.4490, i64 6, i64 0 }, ptr %a170 + call void @finch_str_concat(ptr %a168, ptr %a169, ptr %a170) + store { ptr, i64, i64 } %t167, ptr %a171 + call void @finch_str_drop(ptr %a171) + %t172 = load { ptr, i64, i64 }, ptr %a168 + %t173 = load { ptr, i64, i64 }, ptr %a51 + store { ptr, i64, i64 } %t172, ptr %a175 + store { ptr, i64, i64 } %t173, ptr %a176 + call void @finch_str_concat(ptr %a174, ptr %a175, ptr %a176) + store { ptr, i64, i64 } %t172, ptr %a177 + call void @finch_str_drop(ptr %a177) + %t178 = load { ptr, i64, i64 }, ptr %a174 + store { ptr, i64, i64 } %t178, ptr %a180 + store { ptr, i64, i64 } { ptr @.str.4491, i64 1, i64 0 }, ptr %a181 + call void @finch_str_concat(ptr %a179, ptr %a180, ptr %a181) + store { ptr, i64, i64 } %t178, ptr %a182 + call void @finch_str_drop(ptr %a182) + %t183 = load { ptr, i64, i64 }, ptr %a179 + %t184 = call { ptr, i64, i64 } @finch.gen.op(ptr %t148, { ptr, i64, i64 } %t183) + store { ptr, i64, i64 } %t183, ptr %a185 + call void @finch_str_drop(ptr %a185) + store { ptr, i64, i64 } %t184, ptr %a186 + %t187 = load ptr, ptr %a1 + %t188 = load { ptr, i64, i64 }, ptr %a186 + store { ptr, i64, i64 } { ptr @.str.4492, i64 12, 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.4493, i64 3, i64 0 }, ptr %a195 + call void @finch_str_concat(ptr %a193, ptr %a194, ptr %a195) + store { ptr, i64, i64 } %t192, ptr %a196 + call void @finch_str_drop(ptr %a196) + %t197 = load { ptr, i64, i64 }, ptr %a193 + %t198 = call { ptr, i64, i64 } @finch.gen.op(ptr %t187, { ptr, i64, i64 } %t197) + store { ptr, i64, i64 } %t197, ptr %a199 + call void @finch_str_drop(ptr %a199) + %t200 = load ptr, ptr %a1 + %t201 = icmp eq ptr %t200, null + br i1 %t201, label %panic6902, label %ok6903 +panic6902: + call void @finch_panic(ptr @.str.4494, i64 3910, ptr @.str.4495) unreachable -ok6532: - %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.4327, i64 17, i64 0 }, { ptr, i64, i64 } %t180) - %t182 = load ptr, ptr %a1 - %t183 = icmp eq ptr %t182, null - br i1 %t183, label %panic6533, label %ok6534 -panic6533: - call void @finch_panic(ptr @.str.4328, i64 3627, ptr @.str.4329) - unreachable -ok6534: - %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.4330, i64 6, i64 0 }, { ptr, i64, i64 } %t187) - %t189 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4331, 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 - %t193 = load %S.ast.Type, ptr %a3 - 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 %t192, %S.ast.Type %t196, 1 - ret %S.gen.Val %t197 -endif6523: - %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.4332, 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.from6535 -logic.from6535: - br i1 %t203, label %logic.rhs6536, label %logic.end6537 -logic.rhs6536: - %t204 = load %S.ast.Type, ptr %a3 - %t205 = call i1 @finch.gen.isNumber(%S.ast.Type %t204) - br label %logic.rend6538 -logic.rend6538: - br label %logic.end6537 -logic.end6537: - %t206 = phi i1 [ false, %logic.from6535 ], [ %t205, %logic.rend6538 ] - br i1 %t206, label %then6539, label %endif6541 -then6539: - %t207 = load ptr, ptr %a1 +ok6903: + %t202 = getelementptr inbounds %S.gen.Gen, ptr %t200, i32 0, i32 41 + %t203 = load { ptr, i64, i64 }, ptr %t202 + store { ptr, i64, i64 } %t198, ptr %t202 + store { ptr, i64, i64 } %t203, ptr %a204 + call void @finch_str_drop(ptr %a204) + %t205 = load ptr, ptr %a1 + %t206 = load { ptr, i64, i64 }, ptr %a51 + %t207 = call { ptr, i64, i64 } @finch.gen.load(ptr %t205, { ptr, i64, i64 } { ptr @.str.4496, i64 17, i64 0 }, { ptr, i64, i64 } %t206) %t208 = load ptr, ptr %a1 %t209 = icmp eq ptr %t208, null - br i1 %t209, label %panic6542, label %ok6543 -panic6542: - call void @finch_panic(ptr @.str.4333, i64 3631, ptr @.str.4334) + br i1 %t209, label %panic6904, label %ok6905 +panic6904: + call void @finch_panic(ptr @.str.4497, i64 3911, ptr @.str.4498) unreachable -ok6543: - %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 %range6544, label %inrange6545 -range6544: - call void @finch_panic_index(ptr @.str.4335, i64 3631, i64 %t212, i64 %t214) +ok6905: + %t210 = getelementptr inbounds %S.gen.Gen, ptr %t208, i32 0, i32 42 + %t211 = load { ptr, i64, i64 }, ptr %t210 + store { ptr, i64, i64 } %t207, ptr %t210 + store { ptr, i64, i64 } %t211, ptr %a212 + call void @finch_str_drop(ptr %a212) + %t213 = load ptr, ptr %a1 + %t214 = load %S.gen.Val, ptr %a17 + call void @finch.gen.release(ptr %t213, %S.gen.Val %t214) + %t215 = load ptr, ptr %a1 + %t216 = load ptr, ptr %a1 + %t217 = load { ptr, i64, i64 }, ptr %a145 + %t218 = call { ptr, i64, i64 } @finch.gen.load(ptr %t216, { ptr, i64, i64 } { ptr @.str.4499, i64 6, i64 0 }, { ptr, i64, i64 } %t217) + %t219 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4500, i64 5, i64 0 }) + %t220 = load %S.ast.Type, ptr %a3 + %t221 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t215, { ptr, i64, i64 } %t218, %S.ast.Type %t219, %S.ast.Type %t220) + store { ptr, i64, i64 } %t218, ptr %a222 + call void @finch_str_drop(ptr %a222) + store %S.ast.Type %t219, ptr %a223 + call void @finch.drop.S_ast_Type(ptr %a223) + %t224 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t221, 0 + %t225 = load %S.ast.Type, ptr %a3 + 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.Val %t224, %S.ast.Type %t228, 1 + call void @finch_str_drop(ptr %a186) + call void @finch_str_drop(ptr %a145) + call void @finch_str_drop(ptr %a51) + call void @finch.drop.S_ast_Type(ptr %a23) + call void @finch.drop.S_gen_Val(ptr %a17) + ret %S.gen.Val %t229 +endif6894: + %t230 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 + %t231 = load { ptr, i64, i64 }, ptr %t230 + store { ptr, i64, i64 } %t231, ptr %a232 + store { ptr, i64, i64 } { ptr @.str.4501, i64 3, i64 0 }, ptr %a233 + %t234 = call i32 @finch_str_eq(ptr %a232, ptr %a233) + %t235 = icmp ne i32 %t234, 0 + br label %logic.from6906 +logic.from6906: + br i1 %t235, label %logic.rhs6907, label %logic.end6908 +logic.rhs6907: + %t236 = load %S.ast.Type, ptr %a3 + %t237 = call i1 @finch.gen.isNumber(%S.ast.Type %t236) + br label %logic.rend6909 +logic.rend6909: + br label %logic.end6908 +logic.end6908: + %t238 = phi i1 [ false, %logic.from6906 ], [ %t237, %logic.rend6909 ] + br i1 %t238, label %then6910, label %endif6912 +then6910: + %t239 = load ptr, ptr %a1 + %t240 = load ptr, ptr %a1 + %t241 = icmp eq ptr %t240, null + br i1 %t241, label %panic6913, label %ok6914 +panic6913: + call void @finch_panic(ptr @.str.4502, i64 3916, ptr @.str.4503) unreachable -inrange6545: - %t216 = extractvalue { ptr, i64, i64 } %t213, 0 - %t217 = getelementptr inbounds { ptr, i64, i64 }, ptr %t216, i64 %t212 - %t218 = load { ptr, i64, i64 }, ptr %t217 - %t219 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t207, { ptr, i64, i64 } %t218) - 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 %then6546, label %endif6548 -then6546: - %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.4336, 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.4337, 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 - store { ptr, i64, i64 } %t234, ptr %a237 - store { ptr, i64, i64 } %t235, ptr %a238 - 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.4338, 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 - %t245 = load i64, ptr %t244 - call void @finch_str_from_int(ptr %a246, i64 %t245) - %t247 = load { ptr, i64, i64 }, ptr %a246 - store { ptr, i64, i64 } %t243, ptr %a249 - store { ptr, i64, i64 } %t247, ptr %a250 - 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.4339, 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.4340, 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 - %t264 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t264, ptr %a265 - call void @finch.copy.S_ast_Type(ptr %a266, ptr %a265) - %t267 = load %S.ast.Type, ptr %a266 - %t268 = insertvalue %S.gen.Val %t263, %S.ast.Type %t267, 1 - ret %S.gen.Val %t268 -endif6548: - %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.4341, 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.4342, 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 - store { ptr, i64, i64 } %t280, 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.4343, 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 - %t291 = load i64, ptr %t290 - call void @finch_str_from_int(ptr %a292, i64 %t291) - %t293 = load { ptr, i64, i64 }, ptr %a292 - store { ptr, i64, i64 } %t289, ptr %a295 - store { ptr, i64, i64 } %t293, ptr %a296 - 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.4344, 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.4345, i64 5, i64 0 }) +ok6914: + %t242 = getelementptr inbounds %S.gen.Gen, ptr %t240, i32 0, i32 1 + %t243 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 + %t244 = load i64, ptr %t243 + %t245 = load { ptr, i64, i64 }, ptr %t242 + %t246 = extractvalue { ptr, i64, i64 } %t245, 1 + %t247 = icmp uge i64 %t244, %t246 + br i1 %t247, label %range6915, label %inrange6916 +range6915: + call void @finch_panic_index(ptr @.str.4504, i64 3916, i64 %t244, i64 %t246) + unreachable +inrange6916: + %t248 = extractvalue { ptr, i64, i64 } %t245, 0 + %t249 = getelementptr inbounds { ptr, i64, i64 }, ptr %t248, i64 %t244 + %t250 = load { ptr, i64, i64 }, ptr %t249 + %t251 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t239, { ptr, i64, i64 } %t250) + store { ptr, i64, i64 } %t251, ptr %a252 + %t253 = load %S.ast.Type, ptr %a3 + %t254 = call i1 @finch.gen.isInt(%S.ast.Type %t253) + br i1 %t254, label %then6917, label %endif6919 +then6917: + %t255 = load ptr, ptr %a1 + %t256 = load ptr, ptr %a1 + %t257 = load %S.gen.Val, ptr %a17 + %t258 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t256, %S.gen.Val %t257) + store { ptr, i64, i64 } { ptr @.str.4505, i64 31, i64 0 }, ptr %a260 + store { ptr, i64, i64 } %t258, ptr %a261 + call void @finch_str_concat(ptr %a259, ptr %a260, ptr %a261) + store { ptr, i64, i64 } %t258, ptr %a262 + call void @finch_str_drop(ptr %a262) + %t263 = load { ptr, i64, i64 }, ptr %a259 + store { ptr, i64, i64 } %t263, ptr %a265 + store { ptr, i64, i64 } { ptr @.str.4506, i64 6, i64 0 }, ptr %a266 + call void @finch_str_concat(ptr %a264, ptr %a265, ptr %a266) + store { ptr, i64, i64 } %t263, ptr %a267 + call void @finch_str_drop(ptr %a267) + %t268 = load { ptr, i64, i64 }, ptr %a264 + %t269 = load { ptr, i64, i64 }, ptr %a252 + store { ptr, i64, i64 } %t268, ptr %a271 + store { ptr, i64, i64 } %t269, ptr %a272 + call void @finch_str_concat(ptr %a270, ptr %a271, ptr %a272) + store { ptr, i64, i64 } %t268, ptr %a273 + call void @finch_str_drop(ptr %a273) + %t274 = load { ptr, i64, i64 }, ptr %a270 + store { ptr, i64, i64 } %t274, ptr %a276 + store { ptr, i64, i64 } { ptr @.str.4507, i64 6, i64 0 }, ptr %a277 + call void @finch_str_concat(ptr %a275, ptr %a276, ptr %a277) + store { ptr, i64, i64 } %t274, ptr %a278 + call void @finch_str_drop(ptr %a278) + %t279 = load { ptr, i64, i64 }, ptr %a275 + %t280 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 + %t281 = load i64, ptr %t280 + call void @finch_str_from_int(ptr %a282, i64 %t281) + %t283 = load { ptr, i64, i64 }, ptr %a282 + store { ptr, i64, i64 } %t279, ptr %a285 + store { ptr, i64, i64 } %t283, ptr %a286 + call void @finch_str_concat(ptr %a284, ptr %a285, ptr %a286) + store { ptr, i64, i64 } %t279, ptr %a287 + call void @finch_str_drop(ptr %a287) + store { ptr, i64, i64 } %t283, ptr %a288 + call void @finch_str_drop(ptr %a288) + %t289 = load { ptr, i64, i64 }, ptr %a284 + store { ptr, i64, i64 } %t289, ptr %a291 + store { ptr, i64, i64 } { ptr @.str.4508, i64 1, i64 0 }, ptr %a292 + call void @finch_str_concat(ptr %a290, ptr %a291, ptr %a292) + store { ptr, i64, i64 } %t289, ptr %a293 + call void @finch_str_drop(ptr %a293) + %t294 = load { ptr, i64, i64 }, ptr %a290 + %t295 = call { ptr, i64, i64 } @finch.gen.op(ptr %t255, { ptr, i64, i64 } %t294) + store { ptr, i64, i64 } %t294, ptr %a296 + call void @finch_str_drop(ptr %a296) + store { ptr, i64, i64 } %t295, ptr %a297 + %t298 = load ptr, ptr %a1 + %t299 = load %S.gen.Val, ptr %a17 + call void @finch.gen.release(ptr %t298, %S.gen.Val %t299) + %t300 = load ptr, ptr %a1 + %t301 = load { ptr, i64, i64 }, ptr %a297 + %t302 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4509, i64 3, i64 0 }) + %t303 = load %S.ast.Type, ptr %a3 + %t304 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t300, { ptr, i64, i64 } %t301, %S.ast.Type %t302, %S.ast.Type %t303) + store %S.ast.Type %t302, ptr %a305 + call void @finch.drop.S_ast_Type(ptr %a305) + %t306 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t304, 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 - %t310 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t310, ptr %a311 - call void @finch.copy.S_ast_Type(ptr %a312, ptr %a311) - %t313 = load %S.ast.Type, ptr %a312 - %t314 = insertvalue %S.gen.Val %t309, %S.ast.Type %t313, 1 - ret %S.gen.Val %t314 -endif6541: - %t315 = load %S.ast.Type, ptr %a3 - %t316 = call i1 @finch.gen.isInt(%S.ast.Type %t315) - br label %logic.from6549 -logic.from6549: - br i1 %t316, label %logic.rhs6550, label %logic.end6551 -logic.rhs6550: - %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.4346, 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.rend6552 -logic.rend6552: - br label %logic.end6551 -logic.end6551: - %t323 = phi i1 [ false, %logic.from6549 ], [ %t322, %logic.rend6552 ] - br i1 %t323, label %then6553, label %endif6555 -then6553: - %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.4347, 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 - %t331 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t331, ptr %a332 - call void @finch.copy.S_ast_Type(ptr %a333, ptr %a332) - %t334 = load %S.ast.Type, ptr %a333 - %t335 = insertvalue %S.gen.Val %t330, %S.ast.Type %t334, 1 - ret %S.gen.Val %t335 -endif6555: - %t336 = load %S.ast.Type, ptr %a3 - %t337 = call i1 @finch.gen.isInt(%S.ast.Type %t336) - br label %logic.from6556 -logic.from6556: - br i1 %t337, label %logic.end6558, label %logic.rhs6557 -logic.rhs6557: - %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.4348, 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.rend6559 -logic.rend6559: - br label %logic.end6558 -logic.end6558: - %t344 = phi i1 [ true, %logic.from6556 ], [ %t343, %logic.rend6559 ] - br i1 %t344, label %then6560, label %endif6562 -then6560: - %t345 = load %S.ast.Type, ptr %a23 - %t346 = call i1 @finch.gen.isInt(%S.ast.Type %t345) - br label %logic.from6563 -logic.from6563: - br i1 %t346, label %logic.end6565, label %logic.rhs6564 -logic.rhs6564: - %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.4349, 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.rend6566 -logic.rend6566: - br label %logic.end6565 -logic.end6565: - %t353 = phi i1 [ true, %logic.from6563 ], [ %t352, %logic.rend6566 ] - br i1 %t353, label %then6567, label %endif6569 -then6567: - %t354 = load ptr, ptr %a1 - %t355 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 - %t356 = load { ptr, i64, i64 }, ptr %t355 - %t357 = load %S.ast.Type, ptr %a23 - %t358 = load %S.ast.Type, ptr %a3 - %t359 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t354, { ptr, i64, i64 } %t356, %S.ast.Type %t357, %S.ast.Type %t358) - %t360 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t359, 0 - %t361 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t361, ptr %a362 - call void @finch.copy.S_ast_Type(ptr %a363, ptr %a362) - %t364 = load %S.ast.Type, ptr %a363 - %t365 = insertvalue %S.gen.Val %t360, %S.ast.Type %t364, 1 - ret %S.gen.Val %t365 -endif6569: - %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.4350, 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 %then6570, label %endif6572 -then6570: - %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.4351, 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.4352, 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 - %t384 = load %S.ast.Type, ptr %a3 - %t385 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t383, %S.ast.Type %t384) - store { ptr, i64, i64 } %t382, 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 - %t390 = call { ptr, i64, i64 } @finch.gen.op(ptr %t372, { ptr, i64, i64 } %t389) - %t391 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t390, 0 - %t392 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t392, ptr %a393 - call void @finch.copy.S_ast_Type(ptr %a394, ptr %a393) - %t395 = load %S.ast.Type, ptr %a394 - %t396 = insertvalue %S.gen.Val %t391, %S.ast.Type %t395, 1 - ret %S.gen.Val %t396 -endif6572: - %t397 = load %S.ast.Type, ptr %a23 - %t398 = call i1 @finch.gen.isFloat(%S.ast.Type %t397) - br label %logic.from6573 -logic.from6573: - br i1 %t398, label %logic.rhs6574, label %logic.end6575 -logic.rhs6574: - %t399 = load %S.ast.Type, ptr %a3 - %t400 = call i1 @finch.gen.isInt(%S.ast.Type %t399) - br label %logic.rend6576 -logic.rend6576: - br label %logic.end6575 -logic.end6575: - %t401 = phi i1 [ false, %logic.from6573 ], [ %t400, %logic.rend6576 ] - br i1 %t401, label %then6577, label %endif6579 -then6577: - store { ptr, i64, i64 } { ptr @.str.4353, 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 %then6580, label %endif6582 -then6580: - store { ptr, i64, i64 } { ptr @.str.4354, i64 6, i64 0 }, ptr %a402 - br label %endif6582 -endif6582: - %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.4355, 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 + store %S.ast.Type %t307, ptr %a308 + call void @finch.copy.S_ast_Type(ptr %a309, ptr %a308) + %t310 = load %S.ast.Type, ptr %a309 + %t311 = insertvalue %S.gen.Val %t306, %S.ast.Type %t310, 1 + call void @finch_str_drop(ptr %a297) + call void @finch_str_drop(ptr %a252) + call void @finch.drop.S_ast_Type(ptr %a23) + call void @finch.drop.S_gen_Val(ptr %a17) + ret %S.gen.Val %t311 +endif6919: + %t312 = load ptr, ptr %a1 + %t313 = load ptr, ptr %a1 + %t314 = load %S.gen.Val, ptr %a17 + %t315 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t313, %S.gen.Val %t314) + store { ptr, i64, i64 } { ptr @.str.4510, i64 36, i64 0 }, ptr %a317 + store { ptr, i64, i64 } %t315, ptr %a318 + call void @finch_str_concat(ptr %a316, ptr %a317, ptr %a318) + store { ptr, i64, i64 } %t315, ptr %a319 + call void @finch_str_drop(ptr %a319) + %t320 = load { ptr, i64, i64 }, ptr %a316 + store { ptr, i64, i64 } %t320, ptr %a322 + store { ptr, i64, i64 } { ptr @.str.4511, i64 6, i64 0 }, ptr %a323 + call void @finch_str_concat(ptr %a321, ptr %a322, ptr %a323) + store { ptr, i64, i64 } %t320, ptr %a324 + call void @finch_str_drop(ptr %a324) + %t325 = load { ptr, i64, i64 }, ptr %a321 + %t326 = load { ptr, i64, i64 }, ptr %a252 + store { ptr, i64, i64 } %t325, ptr %a328 + store { ptr, i64, i64 } %t326, ptr %a329 + call void @finch_str_concat(ptr %a327, ptr %a328, ptr %a329) + store { ptr, i64, i64 } %t325, ptr %a330 + call void @finch_str_drop(ptr %a330) + %t331 = load { ptr, i64, i64 }, ptr %a327 + store { ptr, i64, i64 } %t331, ptr %a333 + store { ptr, i64, i64 } { ptr @.str.4512, i64 6, i64 0 }, ptr %a334 + call void @finch_str_concat(ptr %a332, ptr %a333, ptr %a334) + store { ptr, i64, i64 } %t331, ptr %a335 + call void @finch_str_drop(ptr %a335) + %t336 = load { ptr, i64, i64 }, ptr %a332 + %t337 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 + %t338 = load i64, ptr %t337 + call void @finch_str_from_int(ptr %a339, i64 %t338) + %t340 = load { ptr, i64, i64 }, ptr %a339 + store { ptr, i64, i64 } %t336, ptr %a342 + store { ptr, i64, i64 } %t340, ptr %a343 + call void @finch_str_concat(ptr %a341, ptr %a342, ptr %a343) + store { ptr, i64, i64 } %t336, ptr %a344 + call void @finch_str_drop(ptr %a344) + store { ptr, i64, i64 } %t340, ptr %a345 + call void @finch_str_drop(ptr %a345) + %t346 = load { ptr, i64, i64 }, ptr %a341 + store { ptr, i64, i64 } %t346, ptr %a348 + store { ptr, i64, i64 } { ptr @.str.4513, i64 1, i64 0 }, ptr %a349 + call void @finch_str_concat(ptr %a347, ptr %a348, ptr %a349) + store { ptr, i64, i64 } %t346, ptr %a350 + call void @finch_str_drop(ptr %a350) + %t351 = load { ptr, i64, i64 }, ptr %a347 + %t352 = call { ptr, i64, i64 } @finch.gen.op(ptr %t312, { ptr, i64, i64 } %t351) + store { ptr, i64, i64 } %t351, ptr %a353 + call void @finch_str_drop(ptr %a353) + store { ptr, i64, i64 } %t352, ptr %a354 + %t355 = load ptr, ptr %a1 + %t356 = load %S.gen.Val, ptr %a17 + call void @finch.gen.release(ptr %t355, %S.gen.Val %t356) + %t357 = load ptr, ptr %a1 + %t358 = load { ptr, i64, i64 }, ptr %a354 + %t359 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4514, i64 5, i64 0 }) + %t360 = load %S.ast.Type, ptr %a3 + %t361 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t357, { ptr, i64, i64 } %t358, %S.ast.Type %t359, %S.ast.Type %t360) + store %S.ast.Type %t359, ptr %a362 + call void @finch.drop.S_ast_Type(ptr %a362) + %t363 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t361, 0 + %t364 = load %S.ast.Type, ptr %a3 + store %S.ast.Type %t364, ptr %a365 + call void @finch.copy.S_ast_Type(ptr %a366, ptr %a365) + %t367 = load %S.ast.Type, ptr %a366 + %t368 = insertvalue %S.gen.Val %t363, %S.ast.Type %t367, 1 + call void @finch_str_drop(ptr %a354) + call void @finch_str_drop(ptr %a252) + call void @finch.drop.S_ast_Type(ptr %a23) + call void @finch.drop.S_gen_Val(ptr %a17) + ret %S.gen.Val %t368 +endif6912: + %t369 = load %S.ast.Type, ptr %a3 + %t370 = call i1 @finch.gen.isInt(%S.ast.Type %t369) + br label %logic.from6920 +logic.from6920: + br i1 %t370, label %logic.rhs6921, label %logic.end6922 +logic.rhs6921: + %t371 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 + %t372 = load { ptr, i64, i64 }, ptr %t371 + store { ptr, i64, i64 } %t372, ptr %a373 + store { ptr, i64, i64 } { ptr @.str.4515, i64 4, i64 0 }, ptr %a374 + %t375 = call i32 @finch_str_eq(ptr %a373, ptr %a374) + %t376 = icmp ne i32 %t375, 0 + br label %logic.rend6923 +logic.rend6923: + br label %logic.end6922 +logic.end6922: + %t377 = phi i1 [ false, %logic.from6920 ], [ %t376, %logic.rend6923 ] + br i1 %t377, label %then6924, label %endif6926 +then6924: + %t378 = load ptr, ptr %a1 + %t379 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 + %t380 = load { ptr, i64, i64 }, ptr %t379 + %t381 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4516, i64 3, i64 0 }) + %t382 = load %S.ast.Type, ptr %a3 + %t383 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t378, { ptr, i64, i64 } %t380, %S.ast.Type %t381, %S.ast.Type %t382) + store %S.ast.Type %t381, ptr %a384 + call void @finch.drop.S_ast_Type(ptr %a384) + %t385 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t383, 0 + %t386 = load %S.ast.Type, ptr %a3 + store %S.ast.Type %t386, ptr %a387 + call void @finch.copy.S_ast_Type(ptr %a388, ptr %a387) + %t389 = load %S.ast.Type, ptr %a388 + %t390 = insertvalue %S.gen.Val %t385, %S.ast.Type %t389, 1 + call void @finch.drop.S_ast_Type(ptr %a23) + call void @finch.drop.S_gen_Val(ptr %a17) + ret %S.gen.Val %t390 +endif6926: + %t391 = load %S.ast.Type, ptr %a3 + %t392 = call i1 @finch.gen.isInt(%S.ast.Type %t391) + br label %logic.from6927 +logic.from6927: + br i1 %t392, label %logic.end6929, label %logic.rhs6928 +logic.rhs6928: + %t393 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 + %t394 = load { ptr, i64, i64 }, ptr %t393 + store { ptr, i64, i64 } %t394, ptr %a395 + store { ptr, i64, i64 } { ptr @.str.4517, i64 4, i64 0 }, ptr %a396 + %t397 = call i32 @finch_str_eq(ptr %a395, ptr %a396) + %t398 = icmp ne i32 %t397, 0 + br label %logic.rend6930 +logic.rend6930: + br label %logic.end6929 +logic.end6929: + %t399 = phi i1 [ true, %logic.from6927 ], [ %t398, %logic.rend6930 ] + br i1 %t399, label %then6931, label %endif6933 +then6931: + %t400 = load %S.ast.Type, ptr %a23 + %t401 = call i1 @finch.gen.isInt(%S.ast.Type %t400) + br label %logic.from6934 +logic.from6934: + br i1 %t401, label %logic.end6936, label %logic.rhs6935 +logic.rhs6935: + %t402 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 + %t403 = load { ptr, i64, i64 }, ptr %t402 + store { ptr, i64, i64 } %t403, ptr %a404 + store { ptr, i64, i64 } { ptr @.str.4518, i64 4, i64 0 }, ptr %a405 + %t406 = call i32 @finch_str_eq(ptr %a404, ptr %a405) + %t407 = icmp ne i32 %t406, 0 + br label %logic.rend6937 +logic.rend6937: + br label %logic.end6936 +logic.end6936: + %t408 = phi i1 [ true, %logic.from6934 ], [ %t407, %logic.rend6937 ] + br i1 %t408, label %then6938, label %endif6940 +then6938: + %t409 = load ptr, ptr %a1 + %t410 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 + %t411 = load { ptr, i64, i64 }, ptr %t410 %t412 = load %S.ast.Type, ptr %a23 - %t413 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t411, %S.ast.Type %t412) - store { ptr, i64, i64 } %t410, ptr %a415 - store { ptr, i64, i64 } %t413, ptr %a416 - 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.4356, 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 - %t423 = load { ptr, i64, i64 }, ptr %t422 - store { ptr, i64, i64 } %t421, 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.4357, 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 - %t433 = load %S.ast.Type, ptr %a3 - %t434 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t432, %S.ast.Type %t433) - store { ptr, i64, i64 } %t431, ptr %a436 - store { ptr, i64, i64 } %t434, ptr %a437 - call void @finch_str_concat(ptr %a435, ptr %a436, ptr %a437) - %t438 = load { ptr, i64, i64 }, ptr %a435 - %t439 = call { ptr, i64, i64 } @finch.gen.op(ptr %t405, { ptr, i64, i64 } %t438) - %t440 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t439, 0 - %t441 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t441, ptr %a442 - call void @finch.copy.S_ast_Type(ptr %a443, ptr %a442) - %t444 = load %S.ast.Type, ptr %a443 - %t445 = insertvalue %S.gen.Val %t440, %S.ast.Type %t444, 1 - ret %S.gen.Val %t445 -endif6579: - br label %endif6562 -endif6562: - %t446 = load %S.ast.Type, ptr %a3 - %t447 = call i1 @finch.gen.isFloat(%S.ast.Type %t446) - br i1 %t447, label %then6583, label %endif6585 -then6583: - %t448 = load %S.ast.Type, ptr %a23 - %t449 = call i1 @finch.gen.isInt(%S.ast.Type %t448) - br i1 %t449, label %then6586, label %endif6588 -then6586: - %t450 = load ptr, ptr %a1 - %t451 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 - %t452 = load { ptr, i64, i64 }, ptr %t451 - %t453 = load %S.ast.Type, ptr %a23 - %t454 = load %S.ast.Type, ptr %a3 - %t455 = call { ptr, i64, i64 } @finch.gen.intToFloat(ptr %t450, { ptr, i64, i64 } %t452, %S.ast.Type %t453, %S.ast.Type %t454) - %t456 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t455, 0 - %t457 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t457, ptr %a458 - call void @finch.copy.S_ast_Type(ptr %a459, ptr %a458) - %t460 = load %S.ast.Type, ptr %a459 - %t461 = insertvalue %S.gen.Val %t456, %S.ast.Type %t460, 1 - ret %S.gen.Val %t461 -endif6588: - %t462 = load %S.ast.Type, ptr %a23 - %t463 = call i1 @finch.gen.isFloat(%S.ast.Type %t462) - br i1 %t463, label %then6589, label %endif6591 -then6589: - %t464 = load ptr, ptr %a1 - %t465 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 - %t466 = load { ptr, i64, i64 }, ptr %t465 - %t467 = load %S.ast.Type, ptr %a23 - %t468 = load %S.ast.Type, ptr %a3 - %t469 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t464, { ptr, i64, i64 } %t466, %S.ast.Type %t467, %S.ast.Type %t468) - %t470 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t469, 0 - %t471 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t471, ptr %a472 - call void @finch.copy.S_ast_Type(ptr %a473, ptr %a472) - %t474 = load %S.ast.Type, ptr %a473 - %t475 = insertvalue %S.gen.Val %t470, %S.ast.Type %t474, 1 - ret %S.gen.Val %t475 -endif6591: - br label %endif6585 -endif6585: - %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.4358, 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.from6592 -logic.from6592: - br i1 %t481, label %logic.rhs6593, label %logic.end6594 -logic.rhs6593: - %t482 = load %S.ast.Type, ptr %a23 - %t483 = call i1 @finch.gen.isInt(%S.ast.Type %t482) - br label %logic.rend6595 -logic.rend6595: - br label %logic.end6594 -logic.end6594: - %t484 = phi i1 [ false, %logic.from6592 ], [ %t483, %logic.rend6595 ] - br i1 %t484, label %then6596, label %endif6598 -then6596: - %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.4359, 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 + %t413 = load %S.ast.Type, ptr %a3 + %t414 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t409, { ptr, i64, i64 } %t411, %S.ast.Type %t412, %S.ast.Type %t413) + %t415 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t414, 0 + %t416 = load %S.ast.Type, ptr %a3 + store %S.ast.Type %t416, ptr %a417 + call void @finch.copy.S_ast_Type(ptr %a418, ptr %a417) + %t419 = load %S.ast.Type, ptr %a418 + %t420 = insertvalue %S.gen.Val %t415, %S.ast.Type %t419, 1 + call void @finch.drop.S_ast_Type(ptr %a23) + call void @finch.drop.S_gen_Val(ptr %a17) + ret %S.gen.Val %t420 +endif6940: + %t421 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 + %t422 = load { ptr, i64, i64 }, ptr %t421 + store { ptr, i64, i64 } %t422, ptr %a423 + store { ptr, i64, i64 } { ptr @.str.4519, i64 4, i64 0 }, ptr %a424 + %t425 = call i32 @finch_str_eq(ptr %a423, ptr %a424) + %t426 = icmp ne i32 %t425, 0 + br i1 %t426, label %then6941, label %endif6943 +then6941: + %t427 = load ptr, ptr %a1 + %t428 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 + %t429 = load { ptr, i64, i64 }, ptr %t428 + store { ptr, i64, i64 } { ptr @.str.4520, i64 8, i64 0 }, ptr %a431 + store { ptr, i64, i64 } %t429, ptr %a432 + call void @finch_str_concat(ptr %a430, ptr %a431, ptr %a432) + %t433 = load { ptr, i64, i64 }, ptr %a430 + store { ptr, i64, i64 } %t433, ptr %a435 + store { ptr, i64, i64 } { ptr @.str.4521, i64 4, i64 0 }, ptr %a436 + call void @finch_str_concat(ptr %a434, ptr %a435, ptr %a436) + store { ptr, i64, i64 } %t433, ptr %a437 + call void @finch_str_drop(ptr %a437) + %t438 = load { ptr, i64, i64 }, ptr %a434 + %t439 = load ptr, ptr %a1 + %t440 = load %S.ast.Type, ptr %a3 + %t441 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t439, %S.ast.Type %t440) + store { ptr, i64, i64 } %t438, ptr %a443 + store { ptr, i64, i64 } %t441, ptr %a444 + call void @finch_str_concat(ptr %a442, ptr %a443, ptr %a444) + store { ptr, i64, i64 } %t438, ptr %a445 + call void @finch_str_drop(ptr %a445) + store { ptr, i64, i64 } %t441, ptr %a446 + call void @finch_str_drop(ptr %a446) + %t447 = load { ptr, i64, i64 }, ptr %a442 + %t448 = call { ptr, i64, i64 } @finch.gen.op(ptr %t427, { ptr, i64, i64 } %t447) + store { ptr, i64, i64 } %t447, ptr %a449 + call void @finch_str_drop(ptr %a449) + %t450 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t448, 0 + %t451 = load %S.ast.Type, ptr %a3 + store %S.ast.Type %t451, ptr %a452 + call void @finch.copy.S_ast_Type(ptr %a453, ptr %a452) + %t454 = load %S.ast.Type, ptr %a453 + %t455 = insertvalue %S.gen.Val %t450, %S.ast.Type %t454, 1 + call void @finch.drop.S_ast_Type(ptr %a23) + call void @finch.drop.S_gen_Val(ptr %a17) + ret %S.gen.Val %t455 +endif6943: + %t456 = load %S.ast.Type, ptr %a23 + %t457 = call i1 @finch.gen.isFloat(%S.ast.Type %t456) + br label %logic.from6944 +logic.from6944: + br i1 %t457, label %logic.rhs6945, label %logic.end6946 +logic.rhs6945: + %t458 = load %S.ast.Type, ptr %a3 + %t459 = call i1 @finch.gen.isInt(%S.ast.Type %t458) + br label %logic.rend6947 +logic.rend6947: + br label %logic.end6946 +logic.end6946: + %t460 = phi i1 [ false, %logic.from6944 ], [ %t459, %logic.rend6947 ] + br i1 %t460, label %then6948, label %endif6950 +then6948: + store { ptr, i64, i64 } { ptr @.str.4522, i64 6, i64 0 }, ptr %a461 + %t462 = load %S.ast.Type, ptr %a3 + %t463 = call i1 @finch.gen.isSigned(%S.ast.Type %t462) + br i1 %t463, label %then6951, label %endif6953 +then6951: + %t464 = load { ptr, i64, i64 }, ptr %a461 + store { ptr, i64, i64 } { ptr @.str.4523, i64 6, i64 0 }, ptr %a461 + store { ptr, i64, i64 } %t464, ptr %a465 + call void @finch_str_drop(ptr %a465) + br label %endif6953 +endif6953: + %t466 = load ptr, ptr %a1 + %t467 = load { ptr, i64, i64 }, ptr %a461 + store { ptr, i64, i64 } %t467, ptr %a469 + store { ptr, i64, i64 } { ptr @.str.4524, i64 1, 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, ptr %a1 + %t473 = load %S.ast.Type, ptr %a23 + %t474 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t472, %S.ast.Type %t473) + store { ptr, i64, i64 } %t471, ptr %a476 + store { ptr, i64, i64 } %t474, ptr %a477 + call void @finch_str_concat(ptr %a475, ptr %a476, ptr %a477) + store { ptr, i64, i64 } %t471, ptr %a478 + call void @finch_str_drop(ptr %a478) + store { ptr, i64, i64 } %t474, ptr %a479 + call void @finch_str_drop(ptr %a479) + %t480 = load { ptr, i64, i64 }, ptr %a475 + store { ptr, i64, i64 } %t480, ptr %a482 + store { ptr, i64, i64 } { ptr @.str.4525, i64 1, i64 0 }, ptr %a483 + call void @finch_str_concat(ptr %a481, ptr %a482, ptr %a483) + store { ptr, i64, i64 } %t480, ptr %a484 + call void @finch_str_drop(ptr %a484) + %t485 = load { ptr, i64, i64 }, ptr %a481 + %t486 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 + %t487 = load { ptr, i64, i64 }, ptr %t486 + store { ptr, i64, i64 } %t485, ptr %a489 + store { ptr, i64, i64 } %t487, ptr %a490 + call void @finch_str_concat(ptr %a488, ptr %a489, ptr %a490) + store { ptr, i64, i64 } %t485, ptr %a491 + call void @finch_str_drop(ptr %a491) + %t492 = load { ptr, i64, i64 }, ptr %a488 store { ptr, i64, i64 } %t492, ptr %a494 - store { ptr, i64, i64 } { ptr @.str.4360, i64 1, i64 0 }, ptr %a495 + store { ptr, i64, i64 } { ptr @.str.4526, i64 4, 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 - %t498 = load { ptr, i64, i64 }, ptr %t497 - store { ptr, i64, i64 } %t496, 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 - store { ptr, i64, i64 } %t502, ptr %a504 - store { ptr, i64, i64 } { ptr @.str.4361, 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) - %t508 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t507, 0 - %t509 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t509, ptr %a510 - call void @finch.copy.S_ast_Type(ptr %a511, ptr %a510) - %t512 = load %S.ast.Type, ptr %a511 - %t513 = insertvalue %S.gen.Val %t508, %S.ast.Type %t512, 1 - ret %S.gen.Val %t513 -endif6598: - %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.4362, 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.from6599 -logic.from6599: - br i1 %t519, label %logic.rhs6600, label %logic.end6601 -logic.rhs6600: - %t520 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 + store { ptr, i64, i64 } %t492, ptr %a496 + call void @finch_str_drop(ptr %a496) + %t497 = load { ptr, i64, i64 }, ptr %a493 + %t498 = load ptr, ptr %a1 + %t499 = load %S.ast.Type, ptr %a3 + %t500 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t498, %S.ast.Type %t499) + store { ptr, i64, i64 } %t497, ptr %a502 + store { ptr, i64, i64 } %t500, ptr %a503 + call void @finch_str_concat(ptr %a501, ptr %a502, ptr %a503) + store { ptr, i64, i64 } %t497, ptr %a504 + call void @finch_str_drop(ptr %a504) + store { ptr, i64, i64 } %t500, ptr %a505 + call void @finch_str_drop(ptr %a505) + %t506 = load { ptr, i64, i64 }, ptr %a501 + %t507 = call { ptr, i64, i64 } @finch.gen.op(ptr %t466, { ptr, i64, i64 } %t506) + store { ptr, i64, i64 } %t506, ptr %a508 + call void @finch_str_drop(ptr %a508) + %t509 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t507, 0 + %t510 = load %S.ast.Type, ptr %a3 + store %S.ast.Type %t510, ptr %a511 + call void @finch.copy.S_ast_Type(ptr %a512, ptr %a511) + %t513 = load %S.ast.Type, ptr %a512 + %t514 = insertvalue %S.gen.Val %t509, %S.ast.Type %t513, 1 + call void @finch_str_drop(ptr %a461) + call void @finch.drop.S_ast_Type(ptr %a23) + call void @finch.drop.S_gen_Val(ptr %a17) + ret %S.gen.Val %t514 +endif6950: + br label %endif6933 +endif6933: + %t515 = load %S.ast.Type, ptr %a3 + %t516 = call i1 @finch.gen.isFloat(%S.ast.Type %t515) + br i1 %t516, label %then6954, label %endif6956 +then6954: + %t517 = load %S.ast.Type, ptr %a23 + %t518 = call i1 @finch.gen.isInt(%S.ast.Type %t517) + br i1 %t518, label %then6957, label %endif6959 +then6957: + %t519 = load ptr, ptr %a1 + %t520 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 %t521 = load { ptr, i64, i64 }, ptr %t520 - store { ptr, i64, i64 } %t521, ptr %a522 - store { ptr, i64, i64 } { ptr @.str.4363, 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.from6602 -logic.from6602: - br i1 %t525, label %logic.end6604, label %logic.rhs6603 -logic.rhs6603: - %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.4364, 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.rend6605 -logic.rend6605: - br label %logic.end6604 -logic.end6604: - %t532 = phi i1 [ true, %logic.from6602 ], [ %t531, %logic.rend6605 ] - br label %logic.rend6606 -logic.rend6606: - br label %logic.end6601 -logic.end6601: - %t533 = phi i1 [ false, %logic.from6599 ], [ %t532, %logic.rend6606 ] - br i1 %t533, label %then6607, label %endif6609 -then6607: + %t522 = load %S.ast.Type, ptr %a23 + %t523 = load %S.ast.Type, ptr %a3 + %t524 = call { ptr, i64, i64 } @finch.gen.intToFloat(ptr %t519, { ptr, i64, i64 } %t521, %S.ast.Type %t522, %S.ast.Type %t523) + %t525 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t524, 0 + %t526 = load %S.ast.Type, ptr %a3 + store %S.ast.Type %t526, ptr %a527 + call void @finch.copy.S_ast_Type(ptr %a528, ptr %a527) + %t529 = load %S.ast.Type, ptr %a528 + %t530 = insertvalue %S.gen.Val %t525, %S.ast.Type %t529, 1 + call void @finch.drop.S_ast_Type(ptr %a23) + call void @finch.drop.S_gen_Val(ptr %a17) + ret %S.gen.Val %t530 +endif6959: + %t531 = load %S.ast.Type, ptr %a23 + %t532 = call i1 @finch.gen.isFloat(%S.ast.Type %t531) + br i1 %t532, label %then6960, label %endif6962 +then6960: + %t533 = load ptr, ptr %a1 %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 - call void @finch_str_copy(ptr %a537, ptr %a536) - %t538 = load { ptr, i64, i64 }, ptr %a537 + %t536 = load %S.ast.Type, ptr %a23 + %t537 = load %S.ast.Type, ptr %a3 + %t538 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t533, { ptr, i64, i64 } %t535, %S.ast.Type %t536, %S.ast.Type %t537) %t539 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t538, 0 %t540 = load %S.ast.Type, ptr %a3 store %S.ast.Type %t540, ptr %a541 call void @finch.copy.S_ast_Type(ptr %a542, ptr %a541) %t543 = load %S.ast.Type, ptr %a542 %t544 = insertvalue %S.gen.Val %t539, %S.ast.Type %t543, 1 + call void @finch.drop.S_ast_Type(ptr %a23) + call void @finch.drop.S_gen_Val(ptr %a17) ret %S.gen.Val %t544 -endif6609: +endif6962: + br label %endif6956 +endif6956: %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.4365, i64 3, i64 0 }, ptr %a548 + store { ptr, i64, i64 } { ptr @.str.4527, i64 4, i64 0 }, ptr %a548 %t549 = call i32 @finch_str_eq(ptr %a547, ptr %a548) %t550 = icmp ne i32 %t549, 0 - br label %logic.from6610 -logic.from6610: - br i1 %t550, label %logic.rhs6611, label %logic.end6612 -logic.rhs6611: + br label %logic.from6963 +logic.from6963: + br i1 %t550, label %logic.rhs6964, label %logic.end6965 +logic.rhs6964: %t551 = load %S.ast.Type, ptr %a23 %t552 = call i1 @finch.gen.isInt(%S.ast.Type %t551) - br label %logic.rend6613 -logic.rend6613: - br label %logic.end6612 -logic.end6612: - %t553 = phi i1 [ false, %logic.from6610 ], [ %t552, %logic.rend6613 ] - br i1 %t553, label %then6614, label %endif6616 -then6614: + br label %logic.rend6966 +logic.rend6966: + br label %logic.end6965 +logic.end6965: + %t553 = phi i1 [ false, %logic.from6963 ], [ %t552, %logic.rend6966 ] + br i1 %t553, label %then6967, label %endif6969 +then6967: %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.4367, 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.4366, 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.4368, 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) - %t570 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t569, 0 - %t571 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t571, ptr %a572 - call void @finch.copy.S_ast_Type(ptr %a573, ptr %a572) - %t574 = load %S.ast.Type, ptr %a573 - %t575 = insertvalue %S.gen.Val %t570, %S.ast.Type %t574, 1 - ret %S.gen.Val %t575 -endif6616: - %t576 = load %S.ast.Type, ptr %a3 - %t577 = call i1 @finch.gen.isInt(%S.ast.Type %t576) - br label %logic.from6617 -logic.from6617: - br i1 %t577, label %logic.rhs6618, label %logic.end6619 -logic.rhs6618: - %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.4369, 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.rend6620 -logic.rend6620: - br label %logic.end6619 -logic.end6619: - %t584 = phi i1 [ false, %logic.from6617 ], [ %t583, %logic.rend6620 ] - br i1 %t584, label %then6621, label %endif6623 -then6621: - %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.4370, 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.4371, 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 - %t597 = load %S.ast.Type, ptr %a3 - %t598 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t596, %S.ast.Type %t597) - store { ptr, i64, i64 } %t595, ptr %a600 - store { ptr, i64, i64 } %t598, ptr %a601 - call void @finch_str_concat(ptr %a599, ptr %a600, ptr %a601) - %t602 = load { ptr, i64, i64 }, ptr %a599 - %t603 = call { ptr, i64, i64 } @finch.gen.op(ptr %t585, { ptr, i64, i64 } %t602) - %t604 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t603, 0 - %t605 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t605, ptr %a606 - call void @finch.copy.S_ast_Type(ptr %a607, ptr %a606) - %t608 = load %S.ast.Type, ptr %a607 - %t609 = insertvalue %S.gen.Val %t604, %S.ast.Type %t608, 1 - ret %S.gen.Val %t609 -endif6623: - %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.4372, 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.from6624 -logic.from6624: - br i1 %t615, label %logic.rhs6625, label %logic.end6626 -logic.rhs6625: - %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.4373, 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.rend6627 -logic.rend6627: - br label %logic.end6626 -logic.end6626: - %t622 = phi i1 [ false, %logic.from6624 ], [ %t621, %logic.rend6627 ] - br i1 %t622, label %then6628, label %endif6630 -then6628: - %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 %range6631, label %inrange6632 -range6631: - call void @finch_panic_index(ptr @.str.4374, i64 3678, i64 0, i64 %t626) - unreachable -inrange6632: - %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.4375, i64 70, i64 0 }) - br label %endif6630 -endif6630: - %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 %range6633, label %inrange6634 -range6633: - call void @finch_panic_index(ptr @.str.4376, i64 3680, i64 0, i64 %t634) - unreachable -inrange6634: - %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.4377, i64 11, i64 0 }, ptr %a642 - store { ptr, i64, i64 } %t640, ptr %a643 + %t556 = load %S.ast.Type, ptr %a23 + %t557 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t555, %S.ast.Type %t556) + store { ptr, i64, i64 } { ptr @.str.4528, i64 8, i64 0 }, ptr %a559 + store { ptr, i64, i64 } %t557, ptr %a560 + call void @finch_str_concat(ptr %a558, ptr %a559, ptr %a560) + store { ptr, i64, i64 } %t557, ptr %a561 + call void @finch_str_drop(ptr %a561) + %t562 = load { ptr, i64, i64 }, ptr %a558 + store { ptr, i64, i64 } %t562, ptr %a564 + store { ptr, i64, i64 } { ptr @.str.4529, i64 1, i64 0 }, ptr %a565 + call void @finch_str_concat(ptr %a563, ptr %a564, ptr %a565) + store { ptr, i64, i64 } %t562, ptr %a566 + call void @finch_str_drop(ptr %a566) + %t567 = load { ptr, i64, i64 }, ptr %a563 + %t568 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 + %t569 = load { ptr, i64, i64 }, ptr %t568 + store { ptr, i64, i64 } %t567, ptr %a571 + store { ptr, i64, i64 } %t569, ptr %a572 + call void @finch_str_concat(ptr %a570, ptr %a571, ptr %a572) + store { ptr, i64, i64 } %t567, ptr %a573 + call void @finch_str_drop(ptr %a573) + %t574 = load { ptr, i64, i64 }, ptr %a570 + store { ptr, i64, i64 } %t574, ptr %a576 + store { ptr, i64, i64 } { ptr @.str.4530, i64 3, i64 0 }, ptr %a577 + call void @finch_str_concat(ptr %a575, ptr %a576, ptr %a577) + store { ptr, i64, i64 } %t574, ptr %a578 + call void @finch_str_drop(ptr %a578) + %t579 = load { ptr, i64, i64 }, ptr %a575 + %t580 = call { ptr, i64, i64 } @finch.gen.op(ptr %t554, { ptr, i64, i64 } %t579) + store { ptr, i64, i64 } %t579, ptr %a581 + call void @finch_str_drop(ptr %a581) + %t582 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t580, 0 + %t583 = load %S.ast.Type, ptr %a3 + store %S.ast.Type %t583, ptr %a584 + call void @finch.copy.S_ast_Type(ptr %a585, ptr %a584) + %t586 = load %S.ast.Type, ptr %a585 + %t587 = insertvalue %S.gen.Val %t582, %S.ast.Type %t586, 1 + call void @finch.drop.S_ast_Type(ptr %a23) + call void @finch.drop.S_gen_Val(ptr %a17) + ret %S.gen.Val %t587 +endif6969: + %t588 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 + %t589 = load { ptr, i64, i64 }, ptr %t588 + store { ptr, i64, i64 } %t589, ptr %a590 + store { ptr, i64, i64 } { ptr @.str.4531, i64 3, i64 0 }, ptr %a591 + %t592 = call i32 @finch_str_eq(ptr %a590, ptr %a591) + %t593 = icmp ne i32 %t592, 0 + br label %logic.from6970 +logic.from6970: + br i1 %t593, label %logic.rhs6971, label %logic.end6972 +logic.rhs6971: + %t594 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 + %t595 = load { ptr, i64, i64 }, ptr %t594 + store { ptr, i64, i64 } %t595, ptr %a596 + store { ptr, i64, i64 } { ptr @.str.4532, i64 3, i64 0 }, ptr %a597 + %t598 = call i32 @finch_str_eq(ptr %a596, ptr %a597) + %t599 = icmp ne i32 %t598, 0 + br label %logic.from6973 +logic.from6973: + br i1 %t599, label %logic.end6975, label %logic.rhs6974 +logic.rhs6974: + %t600 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 + %t601 = load { ptr, i64, i64 }, ptr %t600 + store { ptr, i64, i64 } %t601, ptr %a602 + store { ptr, i64, i64 } { ptr @.str.4533, i64 4, i64 0 }, ptr %a603 + %t604 = call i32 @finch_str_eq(ptr %a602, ptr %a603) + %t605 = icmp ne i32 %t604, 0 + br label %logic.rend6976 +logic.rend6976: + br label %logic.end6975 +logic.end6975: + %t606 = phi i1 [ true, %logic.from6973 ], [ %t605, %logic.rend6976 ] + br label %logic.rend6977 +logic.rend6977: + br label %logic.end6972 +logic.end6972: + %t607 = phi i1 [ false, %logic.from6970 ], [ %t606, %logic.rend6977 ] + br i1 %t607, label %then6978, label %endif6980 +then6978: + %t608 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 + %t609 = load { ptr, i64, i64 }, ptr %t608 + store { ptr, i64, i64 } %t609, ptr %a610 + call void @finch_str_copy(ptr %a611, ptr %a610) + %t612 = load { ptr, i64, i64 }, ptr %a611 + %t613 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t612, 0 + %t614 = load %S.ast.Type, ptr %a3 + store %S.ast.Type %t614, ptr %a615 + call void @finch.copy.S_ast_Type(ptr %a616, ptr %a615) + %t617 = load %S.ast.Type, ptr %a616 + %t618 = insertvalue %S.gen.Val %t613, %S.ast.Type %t617, 1 + call void @finch.drop.S_ast_Type(ptr %a23) + call void @finch.drop.S_gen_Val(ptr %a17) + ret %S.gen.Val %t618 +endif6980: + %t619 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 + %t620 = load { ptr, i64, i64 }, ptr %t619 + store { ptr, i64, i64 } %t620, ptr %a621 + store { ptr, i64, i64 } { ptr @.str.4534, i64 3, i64 0 }, ptr %a622 + %t623 = call i32 @finch_str_eq(ptr %a621, ptr %a622) + %t624 = icmp ne i32 %t623, 0 + br label %logic.from6981 +logic.from6981: + br i1 %t624, label %logic.rhs6982, label %logic.end6983 +logic.rhs6982: + %t625 = load %S.ast.Type, ptr %a23 + %t626 = call i1 @finch.gen.isInt(%S.ast.Type %t625) + br label %logic.rend6984 +logic.rend6984: + br label %logic.end6983 +logic.end6983: + %t627 = phi i1 [ false, %logic.from6981 ], [ %t626, %logic.rend6984 ] + br i1 %t627, label %then6985, label %endif6987 +then6985: + %t628 = load ptr, ptr %a1 + %t629 = load ptr, ptr %a1 + %t630 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 + %t631 = load { ptr, i64, i64 }, ptr %t630 + %t632 = load %S.ast.Type, ptr %a23 + %t633 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4536, i64 3, i64 0 }) + %t634 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t629, { ptr, i64, i64 } %t631, %S.ast.Type %t632, %S.ast.Type %t633) + store %S.ast.Type %t633, ptr %a635 + call void @finch.drop.S_ast_Type(ptr %a635) + store { ptr, i64, i64 } { ptr @.str.4535, i64 13, i64 0 }, ptr %a637 + store { ptr, i64, i64 } %t634, ptr %a638 + call void @finch_str_concat(ptr %a636, ptr %a637, ptr %a638) + store { ptr, i64, i64 } %t634, ptr %a639 + call void @finch_str_drop(ptr %a639) + %t640 = load { ptr, i64, i64 }, ptr %a636 + store { ptr, i64, i64 } %t640, ptr %a642 + store { ptr, i64, i64 } { ptr @.str.4537, i64 7, i64 0 }, 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.4378, 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 - %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 - call void @finch.gen.fail(ptr %t631, %S.ast.Node %t638, { ptr, i64, i64 } %t654) - %t655 = load %S.gen.Val, ptr %a17 - store %S.gen.Val %t655, ptr %a656 - call void @finch.copy.S_gen_Val(ptr %a657, ptr %a656) - %t658 = load %S.gen.Val, ptr %a657 - ret %S.gen.Val %t658 + store { ptr, i64, i64 } %t640, ptr %a644 + call void @finch_str_drop(ptr %a644) + %t645 = load { ptr, i64, i64 }, ptr %a641 + %t646 = call { ptr, i64, i64 } @finch.gen.op(ptr %t628, { ptr, i64, i64 } %t645) + store { ptr, i64, i64 } %t645, ptr %a647 + call void @finch_str_drop(ptr %a647) + %t648 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t646, 0 + %t649 = load %S.ast.Type, ptr %a3 + store %S.ast.Type %t649, ptr %a650 + call void @finch.copy.S_ast_Type(ptr %a651, ptr %a650) + %t652 = load %S.ast.Type, ptr %a651 + %t653 = insertvalue %S.gen.Val %t648, %S.ast.Type %t652, 1 + call void @finch.drop.S_ast_Type(ptr %a23) + call void @finch.drop.S_gen_Val(ptr %a17) + ret %S.gen.Val %t653 +endif6987: + %t654 = load %S.ast.Type, ptr %a3 + %t655 = call i1 @finch.gen.isInt(%S.ast.Type %t654) + br label %logic.from6988 +logic.from6988: + br i1 %t655, label %logic.rhs6989, label %logic.end6990 +logic.rhs6989: + %t656 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 + %t657 = load { ptr, i64, i64 }, ptr %t656 + store { ptr, i64, i64 } %t657, ptr %a658 + store { ptr, i64, i64 } { ptr @.str.4538, i64 3, i64 0 }, ptr %a659 + %t660 = call i32 @finch_str_eq(ptr %a658, ptr %a659) + %t661 = icmp ne i32 %t660, 0 + br label %logic.rend6991 +logic.rend6991: + br label %logic.end6990 +logic.end6990: + %t662 = phi i1 [ false, %logic.from6988 ], [ %t661, %logic.rend6991 ] + br i1 %t662, label %then6992, label %endif6994 +then6992: + %t663 = load ptr, ptr %a1 + %t664 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 + %t665 = load { ptr, i64, i64 }, ptr %t664 + store { ptr, i64, i64 } { ptr @.str.4539, i64 13, i64 0 }, ptr %a667 + store { ptr, i64, i64 } %t665, ptr %a668 + call void @finch_str_concat(ptr %a666, ptr %a667, ptr %a668) + %t669 = load { ptr, i64, i64 }, ptr %a666 + store { ptr, i64, i64 } %t669, ptr %a671 + store { ptr, i64, i64 } { ptr @.str.4540, i64 4, i64 0 }, ptr %a672 + call void @finch_str_concat(ptr %a670, ptr %a671, ptr %a672) + store { ptr, i64, i64 } %t669, ptr %a673 + call void @finch_str_drop(ptr %a673) + %t674 = load { ptr, i64, i64 }, ptr %a670 + %t675 = load ptr, ptr %a1 + %t676 = load %S.ast.Type, ptr %a3 + %t677 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t675, %S.ast.Type %t676) + store { ptr, i64, i64 } %t674, ptr %a679 + store { ptr, i64, i64 } %t677, ptr %a680 + call void @finch_str_concat(ptr %a678, ptr %a679, ptr %a680) + store { ptr, i64, i64 } %t674, ptr %a681 + call void @finch_str_drop(ptr %a681) + store { ptr, i64, i64 } %t677, ptr %a682 + call void @finch_str_drop(ptr %a682) + %t683 = load { ptr, i64, i64 }, ptr %a678 + %t684 = call { ptr, i64, i64 } @finch.gen.op(ptr %t663, { ptr, i64, i64 } %t683) + store { ptr, i64, i64 } %t683, ptr %a685 + call void @finch_str_drop(ptr %a685) + %t686 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t684, 0 + %t687 = load %S.ast.Type, ptr %a3 + store %S.ast.Type %t687, ptr %a688 + call void @finch.copy.S_ast_Type(ptr %a689, ptr %a688) + %t690 = load %S.ast.Type, ptr %a689 + %t691 = insertvalue %S.gen.Val %t686, %S.ast.Type %t690, 1 + call void @finch.drop.S_ast_Type(ptr %a23) + call void @finch.drop.S_gen_Val(ptr %a17) + ret %S.gen.Val %t691 +endif6994: + %t692 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 + %t693 = load { ptr, i64, i64 }, ptr %t692 + store { ptr, i64, i64 } %t693, ptr %a694 + store { ptr, i64, i64 } { ptr @.str.4541, i64 3, i64 0 }, ptr %a695 + %t696 = call i32 @finch_str_eq(ptr %a694, ptr %a695) + %t697 = icmp ne i32 %t696, 0 + br label %logic.from6995 +logic.from6995: + br i1 %t697, label %logic.rhs6996, label %logic.end6997 +logic.rhs6996: + %t698 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 + %t699 = load { ptr, i64, i64 }, ptr %t698 + store { ptr, i64, i64 } %t699, ptr %a700 + store { ptr, i64, i64 } { ptr @.str.4542, i64 3, i64 0 }, ptr %a701 + %t702 = call i32 @finch_str_eq(ptr %a700, ptr %a701) + %t703 = icmp ne i32 %t702, 0 + br label %logic.rend6998 +logic.rend6998: + br label %logic.end6997 +logic.end6997: + %t704 = phi i1 [ false, %logic.from6995 ], [ %t703, %logic.rend6998 ] + br i1 %t704, label %then6999, label %endif7001 +then6999: + %t705 = load ptr, ptr %a1 + %t706 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t707 = load { ptr, i64, i64 }, ptr %t706 + %t708 = extractvalue { ptr, i64, i64 } %t707, 1 + %t709 = icmp uge i64 0, %t708 + br i1 %t709, label %range7002, label %inrange7003 +range7002: + call void @finch_panic_index(ptr @.str.4543, i64 3965, i64 0, i64 %t708) + unreachable +inrange7003: + %t710 = extractvalue { ptr, i64, i64 } %t707, 0 + %t711 = getelementptr inbounds %S.ast.Node, ptr %t710, i64 0 + %t712 = load %S.ast.Node, ptr %t711 + call void @finch.gen.fail(ptr %t705, %S.ast.Node %t712, { ptr, i64, i64 } { ptr @.str.4544, i64 70, i64 0 }) + br label %endif7001 +endif7001: + %t713 = load ptr, ptr %a1 + %t714 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t715 = load { ptr, i64, i64 }, ptr %t714 + %t716 = extractvalue { ptr, i64, i64 } %t715, 1 + %t717 = icmp uge i64 0, %t716 + br i1 %t717, label %range7004, label %inrange7005 +range7004: + call void @finch_panic_index(ptr @.str.4545, i64 3967, i64 0, i64 %t716) + unreachable +inrange7005: + %t718 = extractvalue { ptr, i64, i64 } %t715, 0 + %t719 = getelementptr inbounds %S.ast.Node, ptr %t718, i64 0 + %t720 = load %S.ast.Node, ptr %t719 + %t721 = load %S.ast.Type, ptr %a23 + %t722 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t721) + store { ptr, i64, i64 } { ptr @.str.4546, i64 11, i64 0 }, ptr %a724 + store { ptr, i64, i64 } %t722, ptr %a725 + call void @finch_str_concat(ptr %a723, ptr %a724, ptr %a725) + store { ptr, i64, i64 } %t722, ptr %a726 + call void @finch_str_drop(ptr %a726) + %t727 = load { ptr, i64, i64 }, ptr %a723 + store { ptr, i64, i64 } %t727, ptr %a729 + store { ptr, i64, i64 } { ptr @.str.4547, i64 6, i64 0 }, ptr %a730 + call void @finch_str_concat(ptr %a728, ptr %a729, ptr %a730) + store { ptr, i64, i64 } %t727, ptr %a731 + call void @finch_str_drop(ptr %a731) + %t732 = load { ptr, i64, i64 }, ptr %a728 + %t733 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t734 = load { ptr, i64, i64 }, ptr %t733 + store { ptr, i64, i64 } %t732, ptr %a736 + store { ptr, i64, i64 } %t734, ptr %a737 + call void @finch_str_concat(ptr %a735, ptr %a736, ptr %a737) + store { ptr, i64, i64 } %t732, ptr %a738 + call void @finch_str_drop(ptr %a738) + %t739 = load { ptr, i64, i64 }, ptr %a735 + call void @finch.gen.fail(ptr %t713, %S.ast.Node %t720, { ptr, i64, i64 } %t739) + store { ptr, i64, i64 } %t739, ptr %a740 + call void @finch_str_drop(ptr %a740) + %t741 = load %S.gen.Val, ptr %a17 + call void @finch.drop.S_ast_Type(ptr %a23) + ret %S.gen.Val %t741 } define internal i64 @finch.gen.sizeBytes(ptr %p0, %S.ast.Type %p1) { @@ -59675,19 +70647,19 @@ 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.4379, i64 6, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.4548, 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 %then6635, label %endif6637 -then6635: + br i1 %t8, label %then7006, label %endif7008 +then7006: %t9 = load ptr, ptr %a1 %t10 = icmp eq ptr %t9, null - br i1 %t10, label %panic6638, label %ok6639 -panic6638: - call void @finch_panic(ptr @.str.4380, i64 3713, ptr @.str.4381) + br i1 %t10, label %panic7009, label %ok7010 +panic7009: + call void @finch_panic(ptr @.str.4549, i64 4000, ptr @.str.4550) unreachable -ok6639: - %t11 = getelementptr inbounds %S.gen.Gen, ptr %t9, i32 0, i32 15 +ok7010: + %t11 = getelementptr inbounds %S.gen.Gen, ptr %t9, i32 0, i32 16 %t12 = load ptr, ptr %a1 %t13 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 %t14 = load { ptr, i64, i64 }, ptr %t13 @@ -59697,25 +70669,25 @@ ok6639: %t18 = load { ptr, i64, i64 }, ptr %t11 %t19 = extractvalue { ptr, i64, i64 } %t18, 1 %t20 = icmp uge i64 %t17, %t19 - br i1 %t20, label %range6640, label %inrange6641 -range6640: - call void @finch_panic_index(ptr @.str.4382, i64 3713, i64 %t17, i64 %t19) + br i1 %t20, label %range7011, label %inrange7012 +range7011: + call void @finch_panic_index(ptr @.str.4551, i64 4000, i64 %t17, i64 %t19) unreachable -inrange6641: +inrange7012: %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 -endif6637: +endif7008: %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.4383, i64 5, i64 0 }, ptr %a28 + store { ptr, i64, i64 } { ptr @.str.4552, 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 %then6642, label %endif6644 -then6642: + br i1 %t30, label %then7013, label %endif7015 +then7013: %t31 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 4 %t32 = load i64, ptr %t31 %t33 = load ptr, ptr %a1 @@ -59723,83 +70695,83 @@ then6642: %t35 = load { ptr, i64, i64 }, ptr %t34 %t36 = extractvalue { ptr, i64, i64 } %t35, 1 %t37 = icmp uge i64 0, %t36 - br i1 %t37, label %range6645, label %inrange6646 -range6645: - call void @finch_panic_index(ptr @.str.4384, i64 3716, i64 0, i64 %t36) + br i1 %t37, label %range7016, label %inrange7017 +range7016: + call void @finch_panic_index(ptr @.str.4553, i64 4003, i64 0, i64 %t36) unreachable -inrange6646: +inrange7017: %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 -endif6644: +endif7015: %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.4385, i64 3, i64 0 }, ptr %a46 + store { ptr, i64, i64 } { ptr @.str.4554, 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.from6647 -logic.from6647: - br i1 %t48, label %logic.end6649, label %logic.rhs6648 -logic.rhs6648: + br label %logic.from7018 +logic.from7018: + br i1 %t48, label %logic.end7020, label %logic.rhs7019 +logic.rhs7019: %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.4386, i64 3, i64 0 }, ptr %a52 + store { ptr, i64, i64 } { ptr @.str.4555, 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.rend6650 -logic.rend6650: - br label %logic.end6649 -logic.end6649: - %t55 = phi i1 [ true, %logic.from6647 ], [ %t54, %logic.rend6650 ] - br i1 %t55, label %then6651, label %endif6653 -then6651: + br label %logic.rend7021 +logic.rend7021: + br label %logic.end7020 +logic.end7020: + %t55 = phi i1 [ true, %logic.from7018 ], [ %t54, %logic.rend7021 ] + br i1 %t55, label %then7022, label %endif7024 +then7022: ret i64 8 -endif6653: +endif7024: %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.4387, i64 5, i64 0 }, ptr %a59 + store { ptr, i64, i64 } { ptr @.str.4556, 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 %then6654, label %endif6656 -then6654: + br i1 %t61, label %then7025, label %endif7027 +then7025: ret i64 8 -endif6656: +endif7027: %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.4388, i64 3, i64 0 }, ptr %a65 + store { ptr, i64, i64 } { ptr @.str.4557, 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 %then6657, label %endif6659 -then6657: + br i1 %t67, label %then7028, label %endif7030 +then7028: ret i64 4 -endif6659: +endif7030: %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.4389, i64 4, i64 0 }, ptr %a71 + store { ptr, i64, i64 } { ptr @.str.4558, 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 %then6660, label %endif6662 -then6660: + br i1 %t73, label %then7031, label %endif7033 +then7031: ret i64 1 -endif6662: +endif7033: %t74 = load %S.ast.Type, ptr %a2 %t75 = call i64 @finch.gen.bitsOf(%S.ast.Type %t74) %t76 = sdiv i64 %t75, 8 ret i64 %t76 } -define internal void @finch.copy.arr_S_gen_Leaf(ptr %dst, ptr %src) { +define internal void @finch.drop.arr_S_gen_Leaf(ptr %a) { entry: - call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (%S.gen.Leaf, ptr null, i32 1) to i64)) + call void @finch_arr_free(ptr %a) ret void } @@ -59827,8 +70799,6 @@ entry: %a120 = alloca %S.gen.Leaf, align 16 %a143 = alloca { ptr, i64, i64 }, align 16 %a144 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store %S.ast.Type %p1, ptr %a2 store i64 %p2, ptr %a3 @@ -59836,19 +70806,19 @@ 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.4390, i64 6, i64 0 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.4559, 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 %then6663, label %else6664 -then6663: + br i1 %t10, label %then7034, label %else7035 +then7034: %t11 = load ptr, ptr %a1 %t12 = icmp eq ptr %t11, null - br i1 %t12, label %panic6666, label %ok6667 -panic6666: - call void @finch_panic(ptr @.str.4391, i64 3737, ptr @.str.4392) + br i1 %t12, label %panic7037, label %ok7038 +panic7037: + call void @finch_panic(ptr @.str.4560, i64 4024, ptr @.str.4561) unreachable -ok6667: - %t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 15 +ok7038: + %t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 16 %t14 = load ptr, ptr %a1 %t15 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 %t16 = load { ptr, i64, i64 }, ptr %t15 @@ -59858,11 +70828,11 @@ ok6667: %t20 = load { ptr, i64, i64 }, ptr %t13 %t21 = extractvalue { ptr, i64, i64 } %t20, 1 %t22 = icmp uge i64 %t19, %t21 - br i1 %t22, label %range6668, label %inrange6669 -range6668: - call void @finch_panic_index(ptr @.str.4393, i64 3737, i64 %t19, i64 %t21) + br i1 %t22, label %range7039, label %inrange7040 +range7039: + call void @finch_panic_index(ptr @.str.4562, i64 4024, i64 %t19, i64 %t21) unreachable -inrange6669: +inrange7040: %t23 = extractvalue { ptr, i64, i64 } %t20, 0 %t24 = getelementptr inbounds %S.gen.StructDef, ptr %t23, i64 %t19 %t25 = load %S.gen.StructDef, ptr %t24 @@ -59874,23 +70844,23 @@ inrange6669: %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.cond6670 -for.cond6670: + br label %for.cond7041 +for.cond7041: %t34 = load i64, ptr %a33 %t35 = icmp slt i64 %t34, %t32 - br i1 %t35, label %for.body6671, label %for.end6673 -for.body6671: + br i1 %t35, label %for.body7042, label %for.end7044 +for.body7042: %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 %range6674, label %inrange6675 -range6674: - call void @finch_panic_index(ptr @.str.4394, i64 3739, i64 %t38, i64 %t40) + br i1 %t41, label %range7045, label %inrange7046 +range7045: + call void @finch_panic_index(ptr @.str.4563, i64 4026, i64 %t38, i64 %t40) unreachable -inrange6675: +inrange7046: %t42 = extractvalue { ptr, i64, i64 } %t39, 0 %t43 = getelementptr inbounds %S.ast.Type, ptr %t42, i64 %t38 %t44 = load %S.ast.Type, ptr %t43 @@ -59900,11 +70870,11 @@ inrange6675: %t48 = load { ptr, i64, i64 }, ptr %t46 %t49 = extractvalue { ptr, i64, i64 } %t48, 1 %t50 = icmp uge i64 %t47, %t49 - br i1 %t50, label %range6676, label %inrange6677 -range6676: - call void @finch_panic_index(ptr @.str.4395, i64 3739, i64 %t47, i64 %t49) + br i1 %t50, label %range7047, label %inrange7048 +range7047: + call void @finch_panic_index(ptr @.str.4564, i64 4026, i64 %t47, i64 %t49) unreachable -inrange6677: +inrange7048: %t51 = extractvalue { ptr, i64, i64 } %t48, 0 %t52 = getelementptr inbounds i64, ptr %t51, i64 %t47 %t53 = load i64, ptr %t52 @@ -59912,14 +70882,14 @@ inrange6677: %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.cond6678 -each.cond6678: + br label %each.cond7049 +each.cond7049: %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.body6679, label %each.end6681 -each.body6679: + br i1 %t61, label %each.body7050, label %each.end7052 +each.body7050: %t62 = load ptr, ptr %a56 %t63 = getelementptr inbounds %S.gen.Leaf, ptr %t62, i64 %t60 %t64 = load %S.gen.Leaf, ptr %t63 @@ -59933,40 +70903,42 @@ each.body6679: %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.step6680 -each.step6680: + br label %each.step7051 +each.step7051: %t72 = load i64, ptr %a57 %t73 = add i64 %t72, 1 store i64 %t73, ptr %a57 - br label %each.cond6678 -each.end6681: - br label %for.step6672 -for.step6672: + br label %each.cond7049 +each.end7052: + call void @finch.drop.arr_S_gen_Leaf(ptr %a56) + br label %for.step7043 +for.step7043: %t74 = load i64, ptr %a33 %t75 = add i64 %t74, 1 store i64 %t75, ptr %a33 - br label %for.cond6670 -for.end6673: - br label %endif6665 -else6664: + br label %for.cond7041 +for.end7044: + call void @finch.drop.S_gen_StructDef(ptr %a29) + br label %endif7036 +else7035: %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.4396, i64 5, i64 0 }, ptr %a79 + store { ptr, i64, i64 } { ptr @.str.4565, 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 %then6682, label %else6683 -then6682: + br i1 %t81, label %then7053, label %else7054 +then7053: %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 %range6685, label %inrange6686 -range6685: - call void @finch_panic_index(ptr @.str.4397, i64 3744, i64 0, i64 %t85) + br i1 %t86, label %range7056, label %inrange7057 +range7056: + call void @finch_panic_index(ptr @.str.4566, i64 4031, i64 0, i64 %t85) unreachable -inrange6686: +inrange7057: %t87 = extractvalue { ptr, i64, i64 } %t84, 0 %t88 = getelementptr inbounds %S.ast.Type, ptr %t87, i64 0 %t89 = load %S.ast.Type, ptr %t88 @@ -59975,22 +70947,22 @@ inrange6686: %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.cond6687 -for.cond6687: + br label %for.cond7058 +for.cond7058: %t95 = load i64, ptr %a94 %t96 = icmp slt i64 %t95, %t93 - br i1 %t96, label %for.body6688, label %for.end6690 -for.body6688: + br i1 %t96, label %for.body7059, label %for.end7061 +for.body7059: %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 %range6691, label %inrange6692 -range6691: - call void @finch_panic_index(ptr @.str.4398, i64 3746, i64 0, i64 %t100) + br i1 %t101, label %range7062, label %inrange7063 +range7062: + call void @finch_panic_index(ptr @.str.4567, i64 4033, i64 0, i64 %t100) unreachable -inrange6692: +inrange7063: %t102 = extractvalue { ptr, i64, i64 } %t99, 0 %t103 = getelementptr inbounds %S.ast.Type, ptr %t102, i64 0 %t104 = load %S.ast.Type, ptr %t103 @@ -60002,14 +70974,14 @@ inrange6692: %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.cond6693 -each.cond6693: + br label %each.cond7064 +each.cond7064: %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.body6694, label %each.end6696 -each.body6694: + br i1 %t116, label %each.body7065, label %each.end7067 +each.body7065: %t117 = load ptr, ptr %a111 %t118 = getelementptr inbounds %S.gen.Leaf, ptr %t117, i64 %t115 %t119 = load %S.gen.Leaf, ptr %t118 @@ -60023,22 +70995,23 @@ each.body6694: %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.step6695 -each.step6695: + br label %each.step7066 +each.step7066: %t127 = load i64, ptr %a112 %t128 = add i64 %t127, 1 store i64 %t128, ptr %a112 - br label %each.cond6693 -each.end6696: - br label %for.step6689 -for.step6689: + br label %each.cond7064 +each.end7067: + call void @finch.drop.arr_S_gen_Leaf(ptr %a111) + br label %for.step7060 +for.step7060: %t129 = load i64, ptr %a94 %t130 = add i64 %t129, 1 store i64 %t130, ptr %a94 - br label %for.cond6687 -for.end6690: - br label %endif6684 -else6683: + br label %for.cond7058 +for.end7061: + br label %endif7055 +else7054: %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 @@ -60052,7 +71025,7 @@ else6683: %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.4399, i64 5, i64 0 }, ptr %a144 + store { ptr, i64, i64 } { ptr @.str.4568, 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 @@ -60063,15 +71036,12 @@ else6683: %t151 = getelementptr inbounds %S.gen.Leaf, ptr %t150, i64 %t148 store %S.gen.Leaf %t147, ptr %t151 store i64 %t149, ptr %t131 - br label %endif6684 -endif6684: - br label %endif6665 -endif6665: + br label %endif7055 +endif7055: + br label %endif7036 +endif7036: %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) - %t155 = load { ptr, i64, i64 }, ptr %a154 - ret { ptr, i64, i64 } %t155 + ret { ptr, i64, i64 } %t152 } define internal void @finch.copy.S_gen_Abi(ptr %dst, ptr %src) { @@ -60106,42 +71076,51 @@ entry: %a23 = alloca i64, align 16 %a31 = alloca %S.gen.Leaf, align 16 %a49 = 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 + %a58 = alloca { ptr, i64, i64 }, align 16 + %a61 = 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 + %a71 = alloca { ptr, i64, i64 }, align 16 %a73 = 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 + %a76 = 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 + %a84 = alloca { ptr, i64, i64 }, align 16 %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca i64, align 16 - %a94 = alloca %S.gen.Leaf, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = 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 - %a114 = alloca { ptr, i64, i64 }, align 16 + %a86 = alloca { ptr, i64, i64 }, align 16 + %a87 = alloca { ptr, i64, i64 }, align 16 + %a93 = alloca { ptr, i64, i64 }, align 16 + %a94 = alloca i64, align 16 + %a102 = alloca %S.gen.Leaf, align 16 + %a105 = alloca { ptr, i64, i64 }, align 16 + %a106 = alloca { ptr, i64, i64 }, align 16 %a115 = alloca { ptr, i64, i64 }, align 16 %a116 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca %S.gen.Abi, align 16 - %a121 = alloca %S.gen.Abi, align 16 - %a127 = alloca %S.gen.Abi, align 16 - %a128 = alloca %S.gen.Abi, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca %S.gen.Abi, align 16 - %a166 = alloca %S.gen.Abi, align 16 + %a118 = alloca { ptr, i64, i64 }, align 16 + %a119 = alloca { ptr, i64, i64 }, align 16 + %a120 = alloca { ptr, i64, i64 }, align 16 + %a121 = 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 + %a126 = alloca { ptr, i64, i64 }, align 16 + %a130 = alloca { ptr, i64, i64 }, align 16 + %a136 = alloca { ptr, i64, i64 }, align 16 + %a140 = alloca { ptr, i64, i64 }, align 16 + %a151 = alloca { ptr, i64, i64 }, align 16 + %a162 = alloca { ptr, i64, i64 }, align 16 + %a164 = 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 + %a171 = alloca { ptr, i64, i64 }, align 16 + %a180 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store %S.ast.Type %p1, ptr %a2 store %S.gen.Abi %p2, ptr %a3 @@ -60159,28 +71138,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.from6697 -logic.from6697: - br i1 %t17, label %logic.rhs6698, label %logic.end6699 -logic.rhs6698: + br label %logic.from7068 +logic.from7068: + br i1 %t17, label %logic.rhs7069, label %logic.end7070 +logic.rhs7069: %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.rend6700 -logic.rend6700: - br label %logic.end6699 -logic.end6699: - %t21 = phi i1 [ false, %logic.from6697 ], [ %t20, %logic.rend6700 ] + br label %logic.rend7071 +logic.rend7071: + br label %logic.end7070 +logic.end7070: + %t21 = phi i1 [ false, %logic.from7068 ], [ %t20, %logic.rend7071 ] store i1 %t21, ptr %a22 store i64 0, ptr %a23 - br label %each.cond6701 -each.cond6701: + br label %each.cond7072 +each.cond7072: %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.body6702, label %each.end6704 -each.body6702: + br i1 %t27, label %each.body7073, label %each.end7075 +each.body7073: %t28 = load ptr, ptr %a14 %t29 = getelementptr inbounds %S.gen.Leaf, ptr %t28, i64 %t26 %t30 = load %S.gen.Leaf, ptr %t29 @@ -60188,224 +71167,270 @@ each.body6702: %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.from6705 -logic.from6705: - br i1 %t34, label %logic.end6707, label %logic.rhs6706 -logic.rhs6706: + br label %logic.from7076 +logic.from7076: + br i1 %t34, label %logic.end7078, label %logic.rhs7077 +logic.rhs7077: %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 %range6708, label %inrange6709 -range6708: - call void @finch_panic_index(ptr @.str.4400, i64 3763, i64 0, i64 %t38) + br i1 %t39, label %range7079, label %inrange7080 +range7079: + call void @finch_panic_index(ptr @.str.4569, i64 4050, i64 0, i64 %t38) unreachable -inrange6709: +inrange7080: %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.rend6710 -logic.rend6710: - br label %logic.end6707 -logic.end6707: - %t45 = phi i1 [ true, %logic.from6705 ], [ %t44, %logic.rend6710 ] - br i1 %t45, label %then6711, label %endif6713 -then6711: + br label %logic.rend7081 +logic.rend7081: + br label %logic.end7078 +logic.end7078: + %t45 = phi i1 [ true, %logic.from7076 ], [ %t44, %logic.rend7081 ] + br i1 %t45, label %then7082, label %endif7084 +then7082: store i1 false, ptr %a22 - br label %endif6713 -endif6713: - br label %each.step6703 -each.step6703: + br label %endif7084 +endif7084: + br label %each.step7074 +each.step7074: %t46 = load i64, ptr %a23 %t47 = add i64 %t46, 1 store i64 %t47, ptr %a23 - br label %each.cond6701 -each.end6704: + br label %each.cond7072 +each.end7075: %t48 = load i1, ptr %a22 - br i1 %t48, label %then6714, label %endif6716 -then6714: - store { ptr, i64, i64 } { ptr @.str.4401, i64 5, i64 0 }, ptr %a49 + br i1 %t48, label %then7085, label %endif7087 +then7085: + store { ptr, i64, i64 } { ptr @.str.4570, 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 %range6717, label %inrange6718 -range6717: - call void @finch_panic_index(ptr @.str.4402, i64 3769, i64 0, i64 %t51) + br i1 %t52, label %range7088, label %inrange7089 +range7088: + call void @finch_panic_index(ptr @.str.4571, i64 4056, i64 0, i64 %t51) unreachable -inrange6718: +inrange7089: %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 %then6719, label %endif6721 -then6719: - store { ptr, i64, i64 } { ptr @.str.4403, i64 6, i64 0 }, ptr %a49 - br label %endif6721 -endif6721: - %t57 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 0 - store { ptr, i64, i64 } { ptr @.str.4404, 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.4405, 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.4406, i64 3, i64 0 }, ptr %a70 + br i1 %t56, label %then7090, label %endif7092 +then7090: + %t57 = load { ptr, i64, i64 }, ptr %a49 + store { ptr, i64, i64 } { ptr @.str.4572, i64 6, i64 0 }, ptr %a49 + store { ptr, i64, i64 } %t57, ptr %a58 + call void @finch_str_drop(ptr %a58) + br label %endif7092 +endif7092: + %t59 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 0 + %t60 = load { ptr, i64, i64 }, ptr %t59 + store { ptr, i64, i64 } { ptr @.str.4573, i64 6, i64 0 }, ptr %t59 + store { ptr, i64, i64 } %t60, ptr %a61 + call void @finch_str_drop(ptr %a61) + %t62 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 1 + %t63 = getelementptr inbounds { ptr, i64, i64 }, ptr %t62, i32 0, i32 1 + %t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 + %t65 = load i64, ptr %t64 + call void @finch_str_from_int(ptr %a66, i64 %t65) + %t67 = load { ptr, i64, i64 }, ptr %a66 + store { ptr, i64, i64 } { ptr @.str.4574, 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 { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t71, ptr %a74 - store { ptr, i64, i64 } %t72, ptr %a75 + store { ptr, i64, i64 } %t67, ptr %a71 + call void @finch_str_drop(ptr %a71) + %t72 = load { ptr, i64, i64 }, ptr %a68 + store { ptr, i64, i64 } %t72, ptr %a74 + store { ptr, i64, i64 } { ptr @.str.4575, i64 3, i64 0 }, ptr %a75 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.4407, 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 - %t82 = add i64 %t81, 1 - call void @finch_arr_reserve(ptr %t58, i64 %t82, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t83 = load ptr, ptr %t58 - %t84 = getelementptr inbounds { ptr, i64, i64 }, ptr %t83, i64 %t81 - store { ptr, i64, i64 } %t80, ptr %t84 - store i64 %t82, ptr %t59 - store { ptr, i64, i64 } zeroinitializer, ptr %a85 - store i64 0, ptr %a86 - br label %each.cond6722 -each.cond6722: - %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.body6723, label %each.end6725 -each.body6723: - %t91 = load ptr, ptr %a14 - %t92 = getelementptr inbounds %S.gen.Leaf, ptr %t91, i64 %t89 - %t93 = load %S.gen.Leaf, ptr %t92 - store %S.gen.Leaf %t93, ptr %a94 - %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %a85, i32 0, i32 1 - %t96 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t96, ptr %a97 - call void @finch_str_copy(ptr %a98, ptr %a97) - %t99 = load { ptr, i64, i64 }, ptr %a98 - %t100 = load i64, ptr %t95 - %t101 = add i64 %t100, 1 - call void @finch_arr_reserve(ptr %a85, i64 %t101, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t102 = load ptr, ptr %a85 - %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.step6724 -each.step6724: - %t104 = load i64, ptr %a86 - %t105 = add i64 %t104, 1 - store i64 %t105, ptr %a86 - br label %each.cond6722 -each.end6725: - %t106 = getelementptr inbounds { ptr, i64, i64 }, ptr %a85, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4409, 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.4408, 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.4410, 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 - store { ptr, i64, i64 } %t117, ptr %t118 - %t119 = load %S.gen.Abi, ptr %a10 - store %S.gen.Abi %t119, ptr %a120 - call void @finch.copy.S_gen_Abi(ptr %a121, ptr %a120) - %t122 = load %S.gen.Abi, ptr %a121 - ret %S.gen.Abi %t122 -endif6716: - %t123 = load i64, ptr %a4 - %t124 = icmp sgt i64 %t123, 16 - br i1 %t124, label %then6726, label %endif6728 -then6726: - %t125 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 0 - store { ptr, i64, i64 } { ptr @.str.4411, 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 -endif6728: - %t130 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 0 - store { ptr, i64, i64 } { ptr @.str.4412, i64 6, i64 0 }, ptr %t130 - %t131 = load i64, ptr %a5 - %t132 = icmp sge i64 %t131, 16 - br i1 %t132, label %then6729, label %else6730 -then6729: - %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 - %t136 = add i64 %t135, 1 - 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.4413, 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.4414, i64 4, i64 0 }, ptr %t139 - br label %endif6731 -else6730: - %t140 = load i64, ptr %a4 - %t141 = icmp sle i64 %t140, 8 - br i1 %t141, label %then6732, label %else6733 -then6732: - %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 - %t145 = add i64 %t144, 1 - 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.4415, 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.4416, 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 %endif6734 -else6733: - %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 - %t160 = add i64 %t159, 1 - 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.4417, 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.4418, i64 9, i64 0 }, ptr %t163 - br label %endif6734 -endif6734: - br label %endif6731 -endif6731: - %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) - %t167 = load %S.gen.Abi, ptr %a166 - ret %S.gen.Abi %t167 + store { ptr, i64, i64 } %t72, ptr %a76 + call void @finch_str_drop(ptr %a76) + %t77 = load { ptr, i64, i64 }, ptr %a73 + %t78 = load { ptr, i64, i64 }, ptr %a49 + store { ptr, i64, i64 } %t77, ptr %a80 + store { ptr, i64, i64 } %t78, ptr %a81 + call void @finch_str_concat(ptr %a79, ptr %a80, ptr %a81) + store { ptr, i64, i64 } %t77, ptr %a82 + call void @finch_str_drop(ptr %a82) + %t83 = load { ptr, i64, i64 }, ptr %a79 + store { ptr, i64, i64 } %t83, ptr %a85 + store { ptr, i64, i64 } { ptr @.str.4576, i64 1, i64 0 }, ptr %a86 + call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) + store { ptr, i64, i64 } %t83, ptr %a87 + call void @finch_str_drop(ptr %a87) + %t88 = load { ptr, i64, i64 }, ptr %a84 + %t89 = load i64, ptr %t63 + %t90 = add i64 %t89, 1 + call void @finch_arr_reserve(ptr %t62, i64 %t90, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t91 = load ptr, ptr %t62 + %t92 = getelementptr inbounds { ptr, i64, i64 }, ptr %t91, i64 %t89 + store { ptr, i64, i64 } %t88, ptr %t92 + store i64 %t90, ptr %t63 + store { ptr, i64, i64 } zeroinitializer, ptr %a93 + store i64 0, ptr %a94 + br label %each.cond7093 +each.cond7093: + %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 + %t96 = load i64, ptr %t95 + %t97 = load i64, ptr %a94 + %t98 = icmp slt i64 %t97, %t96 + br i1 %t98, label %each.body7094, label %each.end7096 +each.body7094: + %t99 = load ptr, ptr %a14 + %t100 = getelementptr inbounds %S.gen.Leaf, ptr %t99, i64 %t97 + %t101 = load %S.gen.Leaf, ptr %t100 + store %S.gen.Leaf %t101, ptr %a102 + %t103 = getelementptr inbounds { ptr, i64, i64 }, ptr %a93, i32 0, i32 1 + %t104 = load { ptr, i64, i64 }, ptr %a49 + store { ptr, i64, i64 } %t104, ptr %a105 + call void @finch_str_copy(ptr %a106, ptr %a105) + %t107 = load { ptr, i64, i64 }, ptr %a106 + %t108 = load i64, ptr %t103 + %t109 = add i64 %t108, 1 + call void @finch_arr_reserve(ptr %a93, i64 %t109, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t110 = load ptr, ptr %a93 + %t111 = getelementptr inbounds { ptr, i64, i64 }, ptr %t110, i64 %t108 + store { ptr, i64, i64 } %t107, ptr %t111 + store i64 %t109, ptr %t103 + br label %each.step7095 +each.step7095: + %t112 = load i64, ptr %a94 + %t113 = add i64 %t112, 1 + store i64 %t113, ptr %a94 + br label %each.cond7093 +each.end7096: + %t114 = getelementptr inbounds { ptr, i64, i64 }, ptr %a93, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.4578, i64 2, i64 0 }, ptr %a115 + call void @finch_str_join(ptr %a116, ptr %a93, ptr %a115) + %t117 = load { ptr, i64, i64 }, ptr %a116 + store { ptr, i64, i64 } { ptr @.str.4577, i64 2, i64 0 }, ptr %a119 + store { ptr, i64, i64 } %t117, ptr %a120 + call void @finch_str_concat(ptr %a118, ptr %a119, ptr %a120) + store { ptr, i64, i64 } %t117, ptr %a121 + call void @finch_str_drop(ptr %a121) + %t122 = load { ptr, i64, i64 }, ptr %a118 + store { ptr, i64, i64 } %t122, ptr %a124 + store { ptr, i64, i64 } { ptr @.str.4579, i64 2, i64 0 }, ptr %a125 + call void @finch_str_concat(ptr %a123, ptr %a124, ptr %a125) + store { ptr, i64, i64 } %t122, ptr %a126 + call void @finch_str_drop(ptr %a126) + %t127 = load { ptr, i64, i64 }, ptr %a123 + %t128 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 2 + %t129 = load { ptr, i64, i64 }, ptr %t128 + store { ptr, i64, i64 } %t127, ptr %t128 + store { ptr, i64, i64 } %t129, ptr %a130 + call void @finch_str_drop(ptr %a130) + %t131 = load %S.gen.Abi, ptr %a10 + call void @finch.drop.arr_str(ptr %a93) + call void @finch_str_drop(ptr %a49) + call void @finch.drop.arr_S_gen_Leaf(ptr %a14) + ret %S.gen.Abi %t131 +endif7087: + %t132 = load i64, ptr %a4 + %t133 = icmp sgt i64 %t132, 16 + br i1 %t133, label %then7097, label %endif7099 +then7097: + %t134 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 0 + %t135 = load { ptr, i64, i64 }, ptr %t134 + store { ptr, i64, i64 } { ptr @.str.4580, i64 8, i64 0 }, ptr %t134 + store { ptr, i64, i64 } %t135, ptr %a136 + call void @finch_str_drop(ptr %a136) + %t137 = load %S.gen.Abi, ptr %a10 + call void @finch.drop.arr_S_gen_Leaf(ptr %a14) + ret %S.gen.Abi %t137 +endif7099: + %t138 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 0 + %t139 = load { ptr, i64, i64 }, ptr %t138 + store { ptr, i64, i64 } { ptr @.str.4581, i64 6, i64 0 }, ptr %t138 + store { ptr, i64, i64 } %t139, ptr %a140 + call void @finch_str_drop(ptr %a140) + %t141 = load i64, ptr %a5 + %t142 = icmp sge i64 %t141, 16 + br i1 %t142, label %then7100, label %else7101 +then7100: + %t143 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 1 + %t144 = getelementptr inbounds { ptr, i64, i64 }, ptr %t143, i32 0, i32 1 + %t145 = load i64, ptr %t144 + %t146 = add i64 %t145, 1 + call void @finch_arr_reserve(ptr %t143, i64 %t146, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t147 = load ptr, ptr %t143 + %t148 = getelementptr inbounds { ptr, i64, i64 }, ptr %t147, i64 %t145 + store { ptr, i64, i64 } { ptr @.str.4582, i64 4, i64 0 }, ptr %t148 + store i64 %t146, ptr %t144 + %t149 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 2 + %t150 = load { ptr, i64, i64 }, ptr %t149 + store { ptr, i64, i64 } { ptr @.str.4583, i64 4, i64 0 }, ptr %t149 + store { ptr, i64, i64 } %t150, ptr %a151 + call void @finch_str_drop(ptr %a151) + br label %endif7102 +else7101: + %t152 = load i64, ptr %a4 + %t153 = icmp sle i64 %t152, 8 + br i1 %t153, label %then7103, label %else7104 +then7103: + %t154 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 1 + %t155 = getelementptr inbounds { ptr, i64, i64 }, ptr %t154, i32 0, i32 1 + %t156 = load i64, ptr %t155 + %t157 = add i64 %t156, 1 + call void @finch_arr_reserve(ptr %t154, i64 %t157, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t158 = load ptr, ptr %t154 + %t159 = getelementptr inbounds { ptr, i64, i64 }, ptr %t158, i64 %t156 + store { ptr, i64, i64 } { ptr @.str.4584, i64 3, i64 0 }, ptr %t159 + store i64 %t157, ptr %t155 + %t160 = load i64, ptr %a4 + %t161 = mul i64 %t160, 8 + call void @finch_str_from_int(ptr %a162, i64 %t161) + %t163 = load { ptr, i64, i64 }, ptr %a162 + store { ptr, i64, i64 } { ptr @.str.4585, i64 1, i64 0 }, ptr %a165 + store { ptr, i64, i64 } %t163, ptr %a166 + call void @finch_str_concat(ptr %a164, ptr %a165, ptr %a166) + store { ptr, i64, i64 } %t163, ptr %a167 + call void @finch_str_drop(ptr %a167) + %t168 = load { ptr, i64, i64 }, ptr %a164 + %t169 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 2 + %t170 = load { ptr, i64, i64 }, ptr %t169 + store { ptr, i64, i64 } %t168, ptr %t169 + store { ptr, i64, i64 } %t170, ptr %a171 + call void @finch_str_drop(ptr %a171) + br label %endif7105 +else7104: + %t172 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 1 + %t173 = getelementptr inbounds { ptr, i64, i64 }, ptr %t172, i32 0, i32 1 + %t174 = load i64, ptr %t173 + %t175 = add i64 %t174, 1 + call void @finch_arr_reserve(ptr %t172, i64 %t175, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t176 = load ptr, ptr %t172 + %t177 = getelementptr inbounds { ptr, i64, i64 }, ptr %t176, i64 %t174 + store { ptr, i64, i64 } { ptr @.str.4586, i64 9, i64 0 }, ptr %t177 + store i64 %t175, ptr %t173 + %t178 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 2 + %t179 = load { ptr, i64, i64 }, ptr %t178 + store { ptr, i64, i64 } { ptr @.str.4587, i64 9, i64 0 }, ptr %t178 + store { ptr, i64, i64 } %t179, ptr %a180 + call void @finch_str_drop(ptr %a180) + br label %endif7105 +endif7105: + br label %endif7102 +endif7102: + %t181 = load %S.gen.Abi, ptr %a10 + call void @finch.drop.arr_S_gen_Leaf(ptr %a14) + ret %S.gen.Abi %t181 +} + +define internal void @finch.drop.S_gen_Abi(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.gen.Abi, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.gen.Abi, ptr %a, i32 0, i32 1 + call void @finch.drop.arr_str(ptr %t2) + %t3 = getelementptr inbounds %S.gen.Abi, ptr %a, i32 0, i32 2 + call void @finch_str_drop(ptr %t3) + ret void } define internal %S.gen.Abi @finch.gen.classify(ptr %p0, %S.ast.Type %p1) { @@ -60415,22 +71440,21 @@ entry: %a4 = alloca %S.gen.Abi, align 16 %a7 = alloca { ptr, i64, i64 }, align 16 %a8 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca %S.gen.Abi, align 16 - %a13 = alloca %S.gen.Abi, align 16 + %a27 = alloca %S.gen.StructDef, align 16 + %a28 = alloca %S.gen.StructDef, align 16 %a30 = alloca %S.gen.StructDef, align 16 - %a31 = alloca %S.gen.StructDef, align 16 - %a33 = alloca %S.gen.StructDef, align 16 - %a36 = alloca i64, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 + %a33 = alloca i64, align 16 + %a71 = alloca { ptr, i64, i64 }, align 16 + %a76 = 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 %a95 = alloca { ptr, i64, i64 }, align 16 %a96 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca %S.gen.Abi, align 16 - %a101 = alloca %S.gen.Abi, align 16 - %a110 = alloca %S.gen.Abi, align 16 - %a111 = alloca %S.gen.Abi, align 16 + %a99 = alloca { ptr, i64, i64 }, align 16 + %a102 = alloca { ptr, i64, i64 }, align 16 + %a111 = alloca { ptr, i64, i64 }, align 16 %a116 = alloca { ptr, i64, i64 }, align 16 %a120 = alloca i64, align 16 %a128 = alloca { ptr, i64, i64 }, align 16 @@ -60438,188 +71462,195 @@ entry: %a137 = alloca i64, align 16 %a145 = alloca %S.gen.Leaf, align 16 %a148 = alloca i64, align 16 - %a159 = alloca %S.gen.Abi, align 16 - %a160 = alloca %S.gen.Abi, align 16 - %a165 = alloca i64, align 16 - %a202 = alloca i64, align 16 - %a209 = alloca i64, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 + %a159 = alloca { ptr, i64, i64 }, align 16 + %a164 = alloca i64, align 16 + %a201 = alloca { ptr, i64, i64 }, align 16 + %a203 = alloca i64, align 16 + %a210 = alloca i64, align 16 + %a252 = alloca { ptr, i64, i64 }, align 16 %a254 = alloca { ptr, i64, i64 }, align 16 %a255 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 + %a256 = alloca { ptr, i64, i64 }, align 16 + %a257 = alloca { ptr, i64, i64 }, align 16 + %a277 = alloca { ptr, i64, i64 }, align 16 + %a278 = 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 %a287 = alloca { ptr, i64, i64 }, align 16 %a288 = alloca { ptr, i64, i64 }, align 16 %a289 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca %S.gen.Abi, align 16 - %a294 = alloca %S.gen.Abi, 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 + %a295 = alloca { ptr, i64, i64 }, align 16 + %a299 = alloca { ptr, i64, i64 }, 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.4419, i64 6, i64 0 }, 0 + %t3 = insertvalue %S.gen.Abi zeroinitializer, { ptr, i64, i64 } { ptr @.str.4588, 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.4420, i64 6, i64 0 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.4589, 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 %then6735, label %endif6737 -then6735: + br i1 %t10, label %then7106, label %endif7108 +then7106: %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 -endif6737: + ret %S.gen.Abi %t11 +endif7108: + %t12 = load ptr, ptr %a1 + %t13 = icmp eq ptr %t12, null + br i1 %t13, label %panic7109, label %ok7110 +panic7109: + call void @finch_panic(ptr @.str.4590, i64 4091, ptr @.str.4591) + unreachable +ok7110: + %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 16 %t15 = load ptr, ptr %a1 - %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic6738, label %ok6739 -panic6738: - call void @finch_panic(ptr @.str.4421, i64 3804, ptr @.str.4422) + %t16 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 + %t17 = load { ptr, i64, i64 }, ptr %t16 + %t18 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 + %t19 = load { ptr, i64, i64 }, ptr %t18 + %t20 = call i64 @finch.gen.findStruct(ptr %t15, { ptr, i64, i64 } %t17, { ptr, i64, i64 } %t19) + %t21 = load { ptr, i64, i64 }, ptr %t14 + %t22 = extractvalue { ptr, i64, i64 } %t21, 1 + %t23 = icmp uge i64 %t20, %t22 + br i1 %t23, label %range7111, label %inrange7112 +range7111: + call void @finch_panic_index(ptr @.str.4592, i64 4091, i64 %t20, i64 %t22) unreachable -ok6739: - %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 - %t20 = load { ptr, i64, i64 }, ptr %t19 - %t21 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t22 = load { ptr, i64, i64 }, ptr %t21 - %t23 = call i64 @finch.gen.findStruct(ptr %t18, { ptr, i64, i64 } %t20, { ptr, i64, i64 } %t22) - %t24 = load { ptr, i64, i64 }, ptr %t17 - %t25 = extractvalue { ptr, i64, i64 } %t24, 1 - %t26 = icmp uge i64 %t23, %t25 - br i1 %t26, label %range6740, label %inrange6741 -range6740: - call void @finch_panic_index(ptr @.str.4423, i64 3804, i64 %t23, i64 %t25) - unreachable -inrange6741: - %t27 = extractvalue { ptr, i64, i64 } %t24, 0 - %t28 = getelementptr inbounds %S.gen.StructDef, ptr %t27, i64 %t23 - %t29 = load %S.gen.StructDef, ptr %t28 +inrange7112: + %t24 = extractvalue { ptr, i64, i64 } %t21, 0 + %t25 = getelementptr inbounds %S.gen.StructDef, ptr %t24, i64 %t20 + %t26 = load %S.gen.StructDef, ptr %t25 + store %S.gen.StructDef %t26, ptr %a27 + call void @finch.copy.S_gen_StructDef(ptr %a28, ptr %a27) + %t29 = load %S.gen.StructDef, ptr %a28 store %S.gen.StructDef %t29, ptr %a30 - call void @finch.copy.S_gen_StructDef(ptr %a31, ptr %a30) - %t32 = load %S.gen.StructDef, ptr %a31 - store %S.gen.StructDef %t32, ptr %a33 - %t34 = getelementptr inbounds %S.gen.StructDef, ptr %a33, i32 0, i32 9 - %t35 = load i64, ptr %t34 - store i64 %t35, ptr %a36 - %t37 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 3 - store i64 8, ptr %t37 - %t38 = getelementptr inbounds %S.gen.StructDef, ptr %a33, i32 0, i32 10 + %t31 = getelementptr inbounds %S.gen.StructDef, ptr %a30, i32 0, i32 9 + %t32 = load i64, ptr %t31 + store i64 %t32, ptr %a33 + %t34 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 3 + store i64 8, ptr %t34 + %t35 = getelementptr inbounds %S.gen.StructDef, ptr %a30, i32 0, i32 10 + %t36 = load i64, ptr %t35 + %t37 = icmp sgt i64 %t36, 8 + br i1 %t37, label %then7113, label %endif7115 +then7113: + %t38 = getelementptr inbounds %S.gen.StructDef, ptr %a30, i32 0, i32 10 %t39 = load i64, ptr %t38 - %t40 = icmp sgt i64 %t39, 8 - br i1 %t40, label %then6742, label %endif6744 -then6742: - %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 %endif6744 -endif6744: - %t44 = load ptr, ptr %a1 - %t45 = icmp eq ptr %t44, null - br i1 %t45, label %panic6745, label %ok6746 -panic6745: - call void @finch_panic(ptr @.str.4424, i64 3810, ptr @.str.4425) + %t40 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 3 + store i64 %t39, ptr %t40 + br label %endif7115 +endif7115: + %t41 = load ptr, ptr %a1 + %t42 = icmp eq ptr %t41, null + br i1 %t42, label %panic7116, label %ok7117 +panic7116: + call void @finch_panic(ptr @.str.4593, i64 4097, ptr @.str.4594) unreachable -ok6746: - %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 %then6747, label %endif6749 -then6747: - %t49 = load ptr, ptr %a1 - %t50 = load %S.ast.Type, ptr %a2 - %t51 = load %S.gen.Abi, ptr %a4 - %t52 = load i64, ptr %a36 - %t53 = getelementptr inbounds %S.gen.StructDef, ptr %a33, i32 0, i32 10 - %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 -endif6749: - %t56 = load ptr, ptr %a1 - %t57 = icmp eq ptr %t56, null - br i1 %t57, label %panic6750, label %ok6751 -panic6750: - call void @finch_panic(ptr @.str.4426, i64 3813, ptr @.str.4427) +ok7117: + %t43 = getelementptr inbounds %S.gen.Gen, ptr %t41, i32 0, i32 30 + %t44 = getelementptr inbounds %S.platform.Target, ptr %t43, i32 0, i32 4 + %t45 = load i1, ptr %t44 + br i1 %t45, label %then7118, label %endif7120 +then7118: + %t46 = load ptr, ptr %a1 + %t47 = load %S.ast.Type, ptr %a2 + %t48 = load %S.gen.Abi, ptr %a4 + %t49 = load i64, ptr %a33 + %t50 = getelementptr inbounds %S.gen.StructDef, ptr %a30, i32 0, i32 10 + %t51 = load i64, ptr %t50 + %t52 = call %S.gen.Abi @finch.gen.classifyArm64(ptr %t46, %S.ast.Type %t47, %S.gen.Abi %t48, i64 %t49, i64 %t51) + call void @finch.drop.S_gen_StructDef(ptr %a30) + call void @finch.drop.S_gen_Abi(ptr %a4) + ret %S.gen.Abi %t52 +endif7120: + %t53 = load ptr, ptr %a1 + %t54 = icmp eq ptr %t53, null + br i1 %t54, label %panic7121, label %ok7122 +panic7121: + call void @finch_panic(ptr @.str.4595, i64 4100, ptr @.str.4596) unreachable -ok6751: - %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 %then6752, label %endif6754 -then6752: - %t61 = load i64, ptr %a36 - %t62 = icmp eq i64 %t61, 1 - br label %logic.from6755 -logic.from6755: - br i1 %t62, label %logic.end6757, label %logic.rhs6756 -logic.rhs6756: - %t63 = load i64, ptr %a36 - %t64 = icmp eq i64 %t63, 2 - br label %logic.rend6758 -logic.rend6758: - br label %logic.end6757 -logic.end6757: - %t65 = phi i1 [ true, %logic.from6755 ], [ %t64, %logic.rend6758 ] - br label %logic.from6759 -logic.from6759: - br i1 %t65, label %logic.end6761, label %logic.rhs6760 -logic.rhs6760: - %t66 = load i64, ptr %a36 - %t67 = icmp eq i64 %t66, 4 - br label %logic.rend6762 -logic.rend6762: - br label %logic.end6761 -logic.end6761: - %t68 = phi i1 [ true, %logic.from6759 ], [ %t67, %logic.rend6762 ] - br label %logic.from6763 -logic.from6763: - br i1 %t68, label %logic.end6765, label %logic.rhs6764 -logic.rhs6764: - %t69 = load i64, ptr %a36 - %t70 = icmp eq i64 %t69, 8 - br label %logic.rend6766 -logic.rend6766: - br label %logic.end6765 -logic.end6765: - %t71 = phi i1 [ true, %logic.from6763 ], [ %t70, %logic.rend6766 ] - br i1 %t71, label %then6767, label %else6768 -then6767: - %t72 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 0 - store { ptr, i64, i64 } { ptr @.str.4428, 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.4429, 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 - %t83 = load i64, ptr %t74 +ok7122: + %t55 = getelementptr inbounds %S.gen.Gen, ptr %t53, i32 0, i32 30 + %t56 = getelementptr inbounds %S.platform.Target, ptr %t55, i32 0, i32 1 + %t57 = load i1, ptr %t56 + br i1 %t57, label %then7123, label %endif7125 +then7123: + %t58 = load i64, ptr %a33 + %t59 = icmp eq i64 %t58, 1 + br label %logic.from7126 +logic.from7126: + br i1 %t59, label %logic.end7128, label %logic.rhs7127 +logic.rhs7127: + %t60 = load i64, ptr %a33 + %t61 = icmp eq i64 %t60, 2 + br label %logic.rend7129 +logic.rend7129: + br label %logic.end7128 +logic.end7128: + %t62 = phi i1 [ true, %logic.from7126 ], [ %t61, %logic.rend7129 ] + br label %logic.from7130 +logic.from7130: + br i1 %t62, label %logic.end7132, label %logic.rhs7131 +logic.rhs7131: + %t63 = load i64, ptr %a33 + %t64 = icmp eq i64 %t63, 4 + br label %logic.rend7133 +logic.rend7133: + br label %logic.end7132 +logic.end7132: + %t65 = phi i1 [ true, %logic.from7130 ], [ %t64, %logic.rend7133 ] + br label %logic.from7134 +logic.from7134: + br i1 %t65, label %logic.end7136, label %logic.rhs7135 +logic.rhs7135: + %t66 = load i64, ptr %a33 + %t67 = icmp eq i64 %t66, 8 + br label %logic.rend7137 +logic.rend7137: + br label %logic.end7136 +logic.end7136: + %t68 = phi i1 [ true, %logic.from7134 ], [ %t67, %logic.rend7137 ] + br i1 %t68, label %then7138, label %else7139 +then7138: + %t69 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 0 + %t70 = load { ptr, i64, i64 }, ptr %t69 + store { ptr, i64, i64 } { ptr @.str.4597, i64 6, i64 0 }, ptr %t69 + store { ptr, i64, i64 } %t70, ptr %a71 + call void @finch_str_drop(ptr %a71) + %t72 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 + %t73 = getelementptr inbounds { ptr, i64, i64 }, ptr %t72, i32 0, i32 1 + %t74 = load i64, ptr %a33 + %t75 = mul i64 %t74, 8 + call void @finch_str_from_int(ptr %a76, i64 %t75) + %t77 = load { ptr, i64, i64 }, ptr %a76 + store { ptr, i64, i64 } { ptr @.str.4598, i64 1, i64 0 }, ptr %a79 + store { ptr, i64, i64 } %t77, ptr %a80 + call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) + store { ptr, i64, i64 } %t77, ptr %a81 + call void @finch_str_drop(ptr %a81) + %t82 = load { ptr, i64, i64 }, ptr %a78 + %t83 = load i64, ptr %t73 %t84 = add i64 %t83, 1 - call void @finch_arr_reserve(ptr %t73, i64 %t84, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t85 = load ptr, ptr %t73 + call void @finch_arr_reserve(ptr %t72, i64 %t84, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t85 = load ptr, ptr %t72 %t86 = getelementptr inbounds { ptr, i64, i64 }, ptr %t85, i64 %t83 store { ptr, i64, i64 } %t82, ptr %t86 - store i64 %t84, ptr %t74 + store i64 %t84, ptr %t73 %t87 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 %t88 = load { ptr, i64, i64 }, ptr %t87 %t89 = extractvalue { ptr, i64, i64 } %t88, 1 %t90 = icmp uge i64 0, %t89 - br i1 %t90, label %range6770, label %inrange6771 -range6770: - call void @finch_panic_index(ptr @.str.4430, i64 3819, i64 0, i64 %t89) + br i1 %t90, label %range7141, label %inrange7142 +range7141: + call void @finch_panic_index(ptr @.str.4599, i64 4106, i64 0, i64 %t89) unreachable -inrange6771: +inrange7142: %t91 = extractvalue { ptr, i64, i64 } %t88, 0 %t92 = getelementptr inbounds { ptr, i64, i64 }, ptr %t91, i64 0 %t93 = load { ptr, i64, i64 }, ptr %t92 @@ -60627,47 +71658,52 @@ inrange6771: store { ptr, i64, i64 } %t93, ptr %a95 call void @finch_str_copy(ptr %a96, ptr %a95) %t97 = load { ptr, i64, i64 }, ptr %a96 + %t98 = load { ptr, i64, i64 }, ptr %t94 store { ptr, i64, i64 } %t97, ptr %t94 - br label %endif6769 -else6768: - %t98 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 0 - store { ptr, i64, i64 } { ptr @.str.4431, i64 8, i64 0 }, ptr %t98 - br label %endif6769 -endif6769: - %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 -endif6754: - %t103 = load i64, ptr %a36 - %t104 = icmp sgt i64 %t103, 16 - br label %logic.from6772 -logic.from6772: - br i1 %t104, label %logic.end6774, label %logic.rhs6773 -logic.rhs6773: - %t105 = load i64, ptr %a36 - %t106 = icmp eq i64 %t105, 0 - br label %logic.rend6775 -logic.rend6775: - br label %logic.end6774 -logic.end6774: - %t107 = phi i1 [ true, %logic.from6772 ], [ %t106, %logic.rend6775 ] - br i1 %t107, label %then6776, label %endif6778 -then6776: - %t108 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 0 - store { ptr, i64, i64 } { ptr @.str.4432, 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 + store { ptr, i64, i64 } %t98, ptr %a99 + call void @finch_str_drop(ptr %a99) + br label %endif7140 +else7139: + %t100 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 0 + %t101 = load { ptr, i64, i64 }, ptr %t100 + store { ptr, i64, i64 } { ptr @.str.4600, i64 8, i64 0 }, ptr %t100 + store { ptr, i64, i64 } %t101, ptr %a102 + call void @finch_str_drop(ptr %a102) + br label %endif7140 +endif7140: + %t103 = load %S.gen.Abi, ptr %a4 + call void @finch.drop.S_gen_StructDef(ptr %a30) + ret %S.gen.Abi %t103 +endif7125: + %t104 = load i64, ptr %a33 + %t105 = icmp sgt i64 %t104, 16 + br label %logic.from7143 +logic.from7143: + br i1 %t105, label %logic.end7145, label %logic.rhs7144 +logic.rhs7144: + %t106 = load i64, ptr %a33 + %t107 = icmp eq i64 %t106, 0 + br label %logic.rend7146 +logic.rend7146: + br label %logic.end7145 +logic.end7145: + %t108 = phi i1 [ true, %logic.from7143 ], [ %t107, %logic.rend7146 ] + br i1 %t108, label %then7147, label %endif7149 +then7147: + %t109 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 0 + %t110 = load { ptr, i64, i64 }, ptr %t109 + store { ptr, i64, i64 } { ptr @.str.4601, i64 6, i64 0 }, ptr %t109 + store { ptr, i64, i64 } %t110, ptr %a111 + call void @finch_str_drop(ptr %a111) + %t112 = load %S.gen.Abi, ptr %a4 + call void @finch.drop.S_gen_StructDef(ptr %a30) ret %S.gen.Abi %t112 -endif6778: +endif7149: %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) store { ptr, i64, i64 } %t115, ptr %a116 - %t117 = load i64, ptr %a36 + %t117 = load i64, ptr %a33 %t118 = add i64 %t117, 7 %t119 = sdiv i64 %t118, 8 store i64 %t119, ptr %a120 @@ -60692,14 +71728,14 @@ endif6778: %t135 = insertvalue { ptr, i64, i64 } %t134, i64 2, 2 store { ptr, i64, i64 } %t135, ptr %a136 store i64 0, ptr %a137 - br label %each.cond6779 -each.cond6779: + br label %each.cond7150 +each.cond7150: %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.body6780, label %each.end6782 -each.body6780: + br i1 %t141, label %each.body7151, label %each.end7153 +each.body7151: %t142 = load ptr, ptr %a116 %t143 = getelementptr inbounds %S.gen.Leaf, ptr %t142, i64 %t140 %t144 = load %S.gen.Leaf, ptr %t143 @@ -60709,324 +71745,301 @@ each.body6780: store i64 %t147, ptr %a148 %t149 = load i64, ptr %a148 %t150 = icmp sgt i64 %t149, 8 - br i1 %t150, label %then6783, label %endif6785 -then6783: + br i1 %t150, label %then7154, label %endif7156 +then7154: store i64 8, ptr %a148 - br label %endif6785 -endif6785: + br label %endif7156 +endif7156: %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 %panic6786, label %ok6787 -panic6786: - call void @finch_panic(ptr @.str.4433, i64 3838, ptr @.str.4434) + br i1 %t154, label %panic7157, label %ok7158 +panic7157: + call void @finch_panic(ptr @.str.4602, i64 4125, ptr @.str.4603) unreachable -ok6787: +ok7158: %t155 = srem i64 %t152, %t153 %t156 = icmp ne i64 %t155, 0 - br i1 %t156, label %then6788, label %endif6790 -then6788: + br i1 %t156, label %then7159, label %endif7161 +then7159: %t157 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 0 - store { ptr, i64, i64 } { ptr @.str.4435, 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 -endif6790: - %t162 = getelementptr inbounds %S.gen.Leaf, ptr %a145, i32 0, i32 0 - %t163 = load i64, ptr %t162 - %t164 = sdiv i64 %t163, 8 - store i64 %t164, ptr %a165 - %t166 = load i64, ptr %a165 - %t167 = load { ptr, i64, i64 }, ptr %a128 - %t168 = extractvalue { ptr, i64, i64 } %t167, 1 - %t169 = icmp uge i64 %t166, %t168 - br i1 %t169, label %range6791, label %inrange6792 -range6791: - call void @finch_panic_index(ptr @.str.4436, i64 3843, i64 %t166, i64 %t168) + %t158 = load { ptr, i64, i64 }, ptr %t157 + store { ptr, i64, i64 } { ptr @.str.4604, i64 6, i64 0 }, ptr %t157 + store { ptr, i64, i64 } %t158, ptr %a159 + call void @finch_str_drop(ptr %a159) + %t160 = load %S.gen.Abi, ptr %a4 + call void @finch.drop.arr_bool(ptr %a136) + call void @finch.drop.arr_int(ptr %a128) + call void @finch.drop.arr_S_gen_Leaf(ptr %a116) + call void @finch.drop.S_gen_StructDef(ptr %a30) + ret %S.gen.Abi %t160 +endif7161: + %t161 = getelementptr inbounds %S.gen.Leaf, ptr %a145, i32 0, i32 0 + %t162 = load i64, ptr %t161 + %t163 = sdiv i64 %t162, 8 + store i64 %t163, ptr %a164 + %t165 = load i64, ptr %a164 + %t166 = load { ptr, i64, i64 }, ptr %a128 + %t167 = extractvalue { ptr, i64, i64 } %t166, 1 + %t168 = icmp uge i64 %t165, %t167 + br i1 %t168, label %range7162, label %inrange7163 +range7162: + call void @finch_panic_index(ptr @.str.4605, i64 4130, i64 %t165, i64 %t167) unreachable -inrange6792: - %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.from6793 -logic.from6793: - br i1 %t173, label %logic.end6795, label %logic.rhs6794 -logic.rhs6794: - %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.rend6796 -logic.rend6796: - br label %logic.end6795 -logic.end6795: - %t177 = phi i1 [ true, %logic.from6793 ], [ %t176, %logic.rend6796 ] - br i1 %t177, label %then6797, label %else6798 -then6797: - %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 %range6800, label %inrange6801 -range6800: - call void @finch_panic_index(ptr @.str.4437, i64 3844, i64 %t178, i64 %t180) +inrange7163: + %t169 = extractvalue { ptr, i64, i64 } %t166, 0 + %t170 = getelementptr inbounds i64, ptr %t169, i64 %t165 + %t171 = load i64, ptr %t170 + %t172 = icmp eq i64 %t171, 1 + br label %logic.from7164 +logic.from7164: + br i1 %t172, label %logic.end7166, label %logic.rhs7165 +logic.rhs7165: + %t173 = getelementptr inbounds %S.gen.Leaf, ptr %a145, i32 0, i32 2 + %t174 = load i1, ptr %t173 + %t175 = xor i1 %t174, true + br label %logic.rend7167 +logic.rend7167: + br label %logic.end7166 +logic.end7166: + %t176 = phi i1 [ true, %logic.from7164 ], [ %t175, %logic.rend7167 ] + br i1 %t176, label %then7168, label %else7169 +then7168: + %t177 = load i64, ptr %a164 + %t178 = load { ptr, i64, i64 }, ptr %a128 + %t179 = extractvalue { ptr, i64, i64 } %t178, 1 + %t180 = icmp uge i64 %t177, %t179 + br i1 %t180, label %range7171, label %inrange7172 +range7171: + call void @finch_panic_index(ptr @.str.4606, i64 4131, i64 %t177, i64 %t179) unreachable -inrange6801: - %t182 = extractvalue { ptr, i64, i64 } %t179, 0 - %t183 = getelementptr inbounds i64, ptr %t182, i64 %t178 - store i64 1, ptr %t183 - br label %endif6799 -else6798: - %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 %range6802, label %inrange6803 -range6802: - call void @finch_panic_index(ptr @.str.4438, i64 3846, i64 %t184, i64 %t186) +inrange7172: + %t181 = extractvalue { ptr, i64, i64 } %t178, 0 + %t182 = getelementptr inbounds i64, ptr %t181, i64 %t177 + store i64 1, ptr %t182 + br label %endif7170 +else7169: + %t183 = load i64, ptr %a164 + %t184 = load { ptr, i64, i64 }, ptr %a128 + %t185 = extractvalue { ptr, i64, i64 } %t184, 1 + %t186 = icmp uge i64 %t183, %t185 + br i1 %t186, label %range7173, label %inrange7174 +range7173: + call void @finch_panic_index(ptr @.str.4607, i64 4133, i64 %t183, i64 %t185) unreachable -inrange6803: - %t188 = extractvalue { ptr, i64, i64 } %t185, 0 - %t189 = getelementptr inbounds i64, ptr %t188, i64 %t184 - store i64 2, ptr %t189 - br label %endif6799 -endif6799: - %t190 = getelementptr inbounds %S.gen.Leaf, ptr %a145, i32 0, i32 3 - %t191 = load i1, ptr %t190 - br i1 %t191, label %then6804, label %endif6806 -then6804: - %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 %range6807, label %inrange6808 -range6807: - call void @finch_panic_index(ptr @.str.4439, i64 3849, i64 %t192, i64 %t194) +inrange7174: + %t187 = extractvalue { ptr, i64, i64 } %t184, 0 + %t188 = getelementptr inbounds i64, ptr %t187, i64 %t183 + store i64 2, ptr %t188 + br label %endif7170 +endif7170: + %t189 = getelementptr inbounds %S.gen.Leaf, ptr %a145, i32 0, i32 3 + %t190 = load i1, ptr %t189 + br i1 %t190, label %then7175, label %endif7177 +then7175: + %t191 = load i64, ptr %a164 + %t192 = load { ptr, i64, i64 }, ptr %a136 + %t193 = extractvalue { ptr, i64, i64 } %t192, 1 + %t194 = icmp uge i64 %t191, %t193 + br i1 %t194, label %range7178, label %inrange7179 +range7178: + call void @finch_panic_index(ptr @.str.4608, i64 4136, i64 %t191, i64 %t193) unreachable -inrange6808: - %t196 = extractvalue { ptr, i64, i64 } %t193, 0 - %t197 = getelementptr inbounds i1, ptr %t196, i64 %t192 - store i1 true, ptr %t197 - br label %endif6806 -endif6806: - br label %each.step6781 -each.step6781: - %t198 = load i64, ptr %a137 - %t199 = add i64 %t198, 1 - store i64 %t199, ptr %a137 - br label %each.cond6779 -each.end6782: - %t200 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 0 - store { ptr, i64, i64 } { ptr @.str.4440, i64 6, i64 0 }, ptr %t200 - %t201 = load i64, ptr %a120 - store i64 0, ptr %a202 - br label %for.cond6809 -for.cond6809: - %t203 = load i64, ptr %a202 - %t204 = icmp slt i64 %t203, %t201 - br i1 %t204, label %for.body6810, label %for.end6812 -for.body6810: - %t205 = load i64, ptr %a36 - %t206 = load i64, ptr %a202 - %t207 = mul i64 8, %t206 - %t208 = sub i64 %t205, %t207 - store i64 %t208, ptr %a209 - %t210 = load i64, ptr %a209 - %t211 = icmp sgt i64 %t210, 8 - br i1 %t211, label %then6813, label %endif6815 -then6813: - store i64 8, ptr %a209 - br label %endif6815 -endif6815: - %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 %range6816, label %inrange6817 -range6816: - call void @finch_panic_index(ptr @.str.4441, i64 3858, i64 %t212, i64 %t214) +inrange7179: + %t195 = extractvalue { ptr, i64, i64 } %t192, 0 + %t196 = getelementptr inbounds i1, ptr %t195, i64 %t191 + store i1 true, ptr %t196 + br label %endif7177 +endif7177: + br label %each.step7152 +each.step7152: + %t197 = load i64, ptr %a137 + %t198 = add i64 %t197, 1 + store i64 %t198, ptr %a137 + br label %each.cond7150 +each.end7153: + %t199 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 0 + %t200 = load { ptr, i64, i64 }, ptr %t199 + store { ptr, i64, i64 } { ptr @.str.4609, i64 6, i64 0 }, ptr %t199 + store { ptr, i64, i64 } %t200, ptr %a201 + call void @finch_str_drop(ptr %a201) + %t202 = load i64, ptr %a120 + store i64 0, ptr %a203 + br label %for.cond7180 +for.cond7180: + %t204 = load i64, ptr %a203 + %t205 = icmp slt i64 %t204, %t202 + br i1 %t205, label %for.body7181, label %for.end7183 +for.body7181: + %t206 = load i64, ptr %a33 + %t207 = load i64, ptr %a203 + %t208 = mul i64 8, %t207 + %t209 = sub i64 %t206, %t208 + store i64 %t209, ptr %a210 + %t211 = load i64, ptr %a210 + %t212 = icmp sgt i64 %t211, 8 + br i1 %t212, label %then7184, label %endif7186 +then7184: + store i64 8, ptr %a210 + br label %endif7186 +endif7186: + %t213 = load i64, ptr %a203 + %t214 = load { ptr, i64, i64 }, ptr %a128 + %t215 = extractvalue { ptr, i64, i64 } %t214, 1 + %t216 = icmp uge i64 %t213, %t215 + br i1 %t216, label %range7187, label %inrange7188 +range7187: + call void @finch_panic_index(ptr @.str.4610, i64 4145, i64 %t213, i64 %t215) unreachable -inrange6817: - %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 %then6818, label %else6819 -then6818: - %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 %range6821, label %inrange6822 -range6821: - call void @finch_panic_index(ptr @.str.4442, i64 3859, i64 %t220, i64 %t222) +inrange7188: + %t217 = extractvalue { ptr, i64, i64 } %t214, 0 + %t218 = getelementptr inbounds i64, ptr %t217, i64 %t213 + %t219 = load i64, ptr %t218 + %t220 = icmp eq i64 %t219, 2 + br i1 %t220, label %then7189, label %else7190 +then7189: + %t221 = load i64, ptr %a203 + %t222 = load { ptr, i64, i64 }, ptr %a136 + %t223 = extractvalue { ptr, i64, i64 } %t222, 1 + %t224 = icmp uge i64 %t221, %t223 + br i1 %t224, label %range7192, label %inrange7193 +range7192: + call void @finch_panic_index(ptr @.str.4611, i64 4146, i64 %t221, i64 %t223) unreachable -inrange6822: - %t224 = extractvalue { ptr, i64, i64 } %t221, 0 - %t225 = getelementptr inbounds i1, ptr %t224, i64 %t220 - %t226 = load i1, ptr %t225 - br i1 %t226, label %then6823, label %else6824 -then6823: - %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 - %t230 = add i64 %t229, 1 - 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.4443, i64 6, i64 0 }, ptr %t232 - store i64 %t230, ptr %t228 - br label %endif6825 -else6824: - %t233 = load i64, ptr %a209 - %t234 = icmp sgt i64 %t233, 4 - br i1 %t234, label %then6826, label %else6827 -then6826: - %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 - %t238 = add i64 %t237, 1 - 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.4444, i64 11, i64 0 }, ptr %t240 - store i64 %t238, ptr %t236 - br label %endif6828 -else6827: - %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 - %t244 = add i64 %t243, 1 - 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.4445, i64 5, i64 0 }, ptr %t246 - store i64 %t244, ptr %t242 - br label %endif6828 -endif6828: - br label %endif6825 -endif6825: - br label %endif6820 -else6819: - %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.4446, 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 - %t257 = load i64, ptr %t248 - %t258 = add i64 %t257, 1 - call void @finch_arr_reserve(ptr %t247, i64 %t258, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t259 = load ptr, ptr %t247 - %t260 = getelementptr inbounds { ptr, i64, i64 }, ptr %t259, i64 %t257 - store { ptr, i64, i64 } %t256, ptr %t260 - store i64 %t258, ptr %t248 - br label %endif6820 -endif6820: - br label %for.step6811 -for.step6811: - %t261 = load i64, ptr %a202 - %t262 = add i64 %t261, 1 - store i64 %t262, ptr %a202 - br label %for.cond6809 -for.end6812: - %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 %then6829, label %else6830 -then6829: - %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 %range6832, label %inrange6833 -range6832: - call void @finch_panic_index(ptr @.str.4447, i64 3871, i64 0, i64 %t269) +inrange7193: + %t225 = extractvalue { ptr, i64, i64 } %t222, 0 + %t226 = getelementptr inbounds i1, ptr %t225, i64 %t221 + %t227 = load i1, ptr %t226 + br i1 %t227, label %then7194, label %else7195 +then7194: + %t228 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 + %t229 = getelementptr inbounds { ptr, i64, i64 }, ptr %t228, i32 0, i32 1 + %t230 = load i64, ptr %t229 + %t231 = add i64 %t230, 1 + call void @finch_arr_reserve(ptr %t228, i64 %t231, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t232 = load ptr, ptr %t228 + %t233 = getelementptr inbounds { ptr, i64, i64 }, ptr %t232, i64 %t230 + store { ptr, i64, i64 } { ptr @.str.4612, i64 6, i64 0 }, ptr %t233 + store i64 %t231, ptr %t229 + br label %endif7196 +else7195: + %t234 = load i64, ptr %a210 + %t235 = icmp sgt i64 %t234, 4 + br i1 %t235, label %then7197, label %else7198 +then7197: + %t236 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 + %t237 = getelementptr inbounds { ptr, i64, i64 }, ptr %t236, i32 0, i32 1 + %t238 = load i64, ptr %t237 + %t239 = add i64 %t238, 1 + call void @finch_arr_reserve(ptr %t236, i64 %t239, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t240 = load ptr, ptr %t236 + %t241 = getelementptr inbounds { ptr, i64, i64 }, ptr %t240, i64 %t238 + store { ptr, i64, i64 } { ptr @.str.4613, i64 11, i64 0 }, ptr %t241 + store i64 %t239, ptr %t237 + br label %endif7199 +else7198: + %t242 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 + %t243 = getelementptr inbounds { ptr, i64, i64 }, ptr %t242, i32 0, i32 1 + %t244 = load i64, ptr %t243 + %t245 = add i64 %t244, 1 + call void @finch_arr_reserve(ptr %t242, i64 %t245, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t246 = load ptr, ptr %t242 + %t247 = getelementptr inbounds { ptr, i64, i64 }, ptr %t246, i64 %t244 + store { ptr, i64, i64 } { ptr @.str.4614, i64 5, i64 0 }, ptr %t247 + store i64 %t245, ptr %t243 + br label %endif7199 +endif7199: + br label %endif7196 +endif7196: + br label %endif7191 +else7190: + %t248 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 + %t249 = getelementptr inbounds { ptr, i64, i64 }, ptr %t248, i32 0, i32 1 + %t250 = load i64, ptr %a210 + %t251 = mul i64 %t250, 8 + call void @finch_str_from_int(ptr %a252, i64 %t251) + %t253 = load { ptr, i64, i64 }, ptr %a252 + store { ptr, i64, i64 } { ptr @.str.4615, i64 1, i64 0 }, ptr %a255 + store { ptr, i64, i64 } %t253, ptr %a256 + call void @finch_str_concat(ptr %a254, ptr %a255, ptr %a256) + store { ptr, i64, i64 } %t253, ptr %a257 + call void @finch_str_drop(ptr %a257) + %t258 = load { ptr, i64, i64 }, ptr %a254 + %t259 = load i64, ptr %t249 + %t260 = add i64 %t259, 1 + call void @finch_arr_reserve(ptr %t248, i64 %t260, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t261 = load ptr, ptr %t248 + %t262 = getelementptr inbounds { ptr, i64, i64 }, ptr %t261, i64 %t259 + store { ptr, i64, i64 } %t258, ptr %t262 + store i64 %t260, ptr %t249 + br label %endif7191 +endif7191: + br label %for.step7182 +for.step7182: + %t263 = load i64, ptr %a203 + %t264 = add i64 %t263, 1 + store i64 %t264, ptr %a203 + br label %for.cond7180 +for.end7183: + %t265 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 + %t266 = getelementptr inbounds { ptr, i64, i64 }, ptr %t265, i32 0, i32 1 + %t267 = load i64, ptr %t266 + %t268 = icmp eq i64 %t267, 1 + br i1 %t268, label %then7200, label %else7201 +then7200: + %t269 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 + %t270 = load { ptr, i64, i64 }, ptr %t269 + %t271 = extractvalue { ptr, i64, i64 } %t270, 1 + %t272 = icmp uge i64 0, %t271 + br i1 %t272, label %range7203, label %inrange7204 +range7203: + call void @finch_panic_index(ptr @.str.4616, i64 4158, i64 0, i64 %t271) unreachable -inrange6833: - %t271 = extractvalue { ptr, i64, i64 } %t268, 0 - %t272 = getelementptr inbounds { ptr, i64, i64 }, ptr %t271, i64 0 - %t273 = load { ptr, i64, i64 }, ptr %t272 - %t274 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 2 - store { ptr, i64, i64 } %t273, ptr %a275 - 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 %endif6831 -else6830: - %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.4449, 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.4448, 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.4450, i64 2, i64 0 }, ptr %a289 +inrange7204: + %t273 = extractvalue { ptr, i64, i64 } %t270, 0 + %t274 = getelementptr inbounds { ptr, i64, i64 }, ptr %t273, i64 0 + %t275 = load { ptr, i64, i64 }, ptr %t274 + %t276 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 2 + store { ptr, i64, i64 } %t275, ptr %a277 + call void @finch_str_copy(ptr %a278, ptr %a277) + %t279 = load { ptr, i64, i64 }, ptr %a278 + %t280 = load { ptr, i64, i64 }, ptr %t276 + store { ptr, i64, i64 } %t279, ptr %t276 + store { ptr, i64, i64 } %t280, ptr %a281 + call void @finch_str_drop(ptr %a281) + br label %endif7202 +else7201: + %t282 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 + %t283 = getelementptr inbounds { ptr, i64, i64 }, ptr %t282, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.4618, i64 2, i64 0 }, ptr %a284 + call void @finch_str_join(ptr %a285, ptr %t282, ptr %a284) + %t286 = load { ptr, i64, i64 }, ptr %a285 + store { ptr, i64, i64 } { ptr @.str.4617, i64 2, i64 0 }, ptr %a288 + store { ptr, i64, i64 } %t286, 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 %endif6831 -endif6831: - %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) - %t295 = load %S.gen.Abi, ptr %a294 - ret %S.gen.Abi %t295 -} - -define internal void @finch.copy.arr_S_gen_Abi(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.gen.Abi, 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.cond6885 -n.cond6885: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body6886, label %n.end6887 -n.body6886: - %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.cond6885 -n.end6887: - ret void -} - -define internal void @finch.copy.S_gen_Plan(ptr %dst, ptr %src) { -entry: - - %t1 = load %S.gen.Plan, ptr %src - store %S.gen.Plan %t1, ptr %dst - %t2 = getelementptr inbounds %S.gen.Plan, ptr %dst, i32 0, i32 0 - %t3 = getelementptr inbounds %S.gen.Plan, ptr %src, i32 0, i32 0 - call void @finch.copy.S_gen_Abi(ptr %t2, ptr %t3) - %t4 = getelementptr inbounds %S.gen.Plan, ptr %dst, i32 0, i32 1 - %t5 = getelementptr inbounds %S.gen.Plan, ptr %src, i32 0, i32 1 - call void @finch.copy.arr_S_gen_Abi(ptr %t4, ptr %t5) - %t6 = getelementptr inbounds %S.gen.Plan, ptr %dst, i32 0, i32 2 - %t7 = getelementptr inbounds %S.gen.Plan, ptr %src, i32 0, i32 2 - call void @finch_str_copy(ptr %t6, ptr %t7) - ret void + store { ptr, i64, i64 } %t286, ptr %a290 + call void @finch_str_drop(ptr %a290) + %t291 = load { ptr, i64, i64 }, ptr %a287 + store { ptr, i64, i64 } %t291, ptr %a293 + store { ptr, i64, i64 } { ptr @.str.4619, i64 2, i64 0 }, ptr %a294 + call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) + store { ptr, i64, i64 } %t291, ptr %a295 + call void @finch_str_drop(ptr %a295) + %t296 = load { ptr, i64, i64 }, ptr %a292 + %t297 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 2 + %t298 = load { ptr, i64, i64 }, ptr %t297 + store { ptr, i64, i64 } %t296, ptr %t297 + store { ptr, i64, i64 } %t298, ptr %a299 + call void @finch_str_drop(ptr %a299) + br label %endif7202 +endif7202: + %t300 = load %S.gen.Abi, ptr %a4 + call void @finch.drop.arr_bool(ptr %a136) + call void @finch.drop.arr_int(ptr %a128) + call void @finch.drop.arr_S_gen_Leaf(ptr %a116) + call void @finch.drop.S_gen_StructDef(ptr %a30) + ret %S.gen.Abi %t300 } define internal %S.gen.Plan @finch.gen.makePlan(ptr %p0, %S.ast.Type %p1, { ptr, i64, i64 } %p2) { @@ -61037,34 +72050,39 @@ entry: %a4 = alloca %S.gen.Plan, align 16 %a5 = alloca i64, align 16 %a6 = alloca i64, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 + %a12 = alloca %S.gen.Abi, align 16 %a15 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a45 = 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 i64, align 16 - %a64 = alloca %S.ast.Type, align 16 - %a68 = alloca %S.gen.Abi, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca i64, align 16 - %a76 = alloca i64, align 16 - %a78 = alloca 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 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca %S.gen.Abi, align 16 - %a141 = alloca %S.gen.Abi, align 16 - %a150 = alloca %S.gen.Plan, align 16 - %a151 = alloca %S.gen.Plan, align 16 + %a18 = alloca { ptr, i64, i64 }, align 16 + %a19 = alloca { ptr, i64, i64 }, align 16 + %a27 = alloca { ptr, i64, i64 }, align 16 + %a31 = alloca { ptr, i64, i64 }, align 16 + %a32 = alloca { ptr, i64, i64 }, align 16 + %a38 = alloca { ptr, i64, i64 }, align 16 + %a42 = alloca { ptr, i64, i64 }, align 16 + %a43 = alloca { ptr, i64, i64 }, align 16 + %a49 = alloca { ptr, i64, i64 }, align 16 + %a55 = alloca { ptr, i64, i64 }, align 16 + %a56 = alloca { ptr, i64, i64 }, align 16 + %a63 = alloca { ptr, i64, i64 }, align 16 + %a64 = alloca { ptr, i64, i64 }, align 16 + %a67 = alloca { ptr, i64, i64 }, align 16 + %a68 = alloca i64, align 16 + %a76 = alloca %S.ast.Type, align 16 + %a80 = alloca %S.gen.Abi, align 16 + %a83 = alloca { ptr, i64, i64 }, align 16 + %a84 = alloca { ptr, i64, i64 }, align 16 + %a87 = alloca i64, align 16 + %a88 = alloca i64, align 16 + %a90 = alloca i64, align 16 + %a98 = 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 + %a138 = alloca { ptr, i64, i64 }, align 16 + %a141 = alloca { ptr, i64, i64 }, align 16 + %a142 = alloca { ptr, i64, i64 }, align 16 + %a154 = alloca %S.gen.Abi, align 16 + %a155 = alloca %S.gen.Abi, align 16 store ptr %p0, ptr %a1 store %S.ast.Type %p1, ptr %a2 store { ptr, i64, i64 } %p2, ptr %a3 @@ -61075,264 +72093,283 @@ entry: %t8 = load %S.ast.Type, ptr %a2 %t9 = call %S.gen.Abi @finch.gen.classify(ptr %t7, %S.ast.Type %t8) %t10 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 0 + %t11 = load %S.gen.Abi, ptr %t10 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.4451, 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.4452, 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 %then6834, label %endif6836 -then6834: - %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 %endif6836 -endif6836: - %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.4453, 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 %then6837, label %endif6839 -then6837: - %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.4454, i64 6, i64 0 }, ptr %t30 - br label %endif6839 -endif6839: - %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.4455, 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 %then6840, label %else6841 -then6840: - %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.4456, i64 4, i64 0 }, ptr %t39 - %t40 = load i64, ptr %a5 - %t41 = sub i64 %t40, 1 - store i64 %t41, ptr %a5 - br label %endif6842 -else6841: - %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.4457, 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 %then6843, label %endif6845 -then6843: - %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 - %t52 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 2 - store { ptr, i64, i64 } %t51, ptr %a53 - 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 %endif6845 -endif6845: - br label %endif6842 -endif6842: - store i64 0, ptr %a56 - br label %each.cond6846 -each.cond6846: - %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.body6847, label %each.end6849 -each.body6847: - %t61 = load ptr, ptr %a3 - %t62 = getelementptr inbounds %S.ast.Type, ptr %t61, i64 %t59 - %t63 = load %S.ast.Type, ptr %t62 - store %S.ast.Type %t63, ptr %a64 - %t65 = load ptr, ptr %a1 - %t66 = load %S.ast.Type, ptr %a64 - %t67 = call %S.gen.Abi @finch.gen.classify(ptr %t65, %S.ast.Type %t66) - store %S.gen.Abi %t67, ptr %a68 - %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.4458, 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 %then6850, label %else6851 -then6850: - 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.cond6853 -each.cond6853: - %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.body6854, label %each.end6856 -each.body6854: - %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.4460, 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 %then6857, label %else6858 -then6857: - %t93 = load i64, ptr %a75 - %t94 = add i64 %t93, 1 - store i64 %t94, ptr %a75 - br label %endif6859 -else6858: - %t95 = load i64, ptr %a76 - %t96 = add i64 %t95, 1 - store i64 %t96, ptr %a76 - br label %endif6859 -endif6859: - br label %each.step6855 -each.step6855: - %t97 = load i64, ptr %a78 - %t98 = add i64 %t97, 1 - store i64 %t98, ptr %a78 - br label %each.cond6853 -each.end6856: - %t99 = load ptr, ptr %a1 - %t100 = icmp eq ptr %t99, null - br i1 %t100, label %panic6860, label %ok6861 -panic6860: - call void @finch_panic(ptr @.str.4461, i64 3911, ptr @.str.4462) + store %S.gen.Abi %t11, ptr %a12 + call void @finch.drop.S_gen_Abi(ptr %a12) + %t13 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 2 + %t14 = load { ptr, i64, i64 }, ptr %t13 + store { ptr, i64, i64 } { ptr @.str.4620, i64 4, i64 0 }, ptr %t13 + store { ptr, i64, i64 } %t14, ptr %a15 + call void @finch_str_drop(ptr %a15) + %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.4621, i64 4, i64 0 }, ptr %a19 + %t20 = call i32 @finch_str_eq(ptr %a18, ptr %a19) + %t21 = icmp eq i32 %t20, 0 + br i1 %t21, label %then7205, label %endif7207 +then7205: + %t22 = load ptr, ptr %a1 + %t23 = load %S.ast.Type, ptr %a2 + %t24 = call { ptr, i64, i64 } @finch.gen.cLL(ptr %t22, %S.ast.Type %t23) + %t25 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 2 + %t26 = load { ptr, i64, i64 }, ptr %t25 + store { ptr, i64, i64 } %t24, ptr %t25 + store { ptr, i64, i64 } %t26, ptr %a27 + call void @finch_str_drop(ptr %a27) + br label %endif7207 +endif7207: + %t28 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 0 + %t29 = getelementptr inbounds %S.gen.Abi, ptr %t28, i32 0, i32 0 + %t30 = load { ptr, i64, i64 }, ptr %t29 + store { ptr, i64, i64 } %t30, ptr %a31 + store { ptr, i64, i64 } { ptr @.str.4622, i64 8, i64 0 }, ptr %a32 + %t33 = call i32 @finch_str_eq(ptr %a31, ptr %a32) + %t34 = icmp ne i32 %t33, 0 + br i1 %t34, label %then7208, label %endif7210 +then7208: + %t35 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 0 + %t36 = getelementptr inbounds %S.gen.Abi, ptr %t35, i32 0, i32 0 + %t37 = load { ptr, i64, i64 }, ptr %t36 + store { ptr, i64, i64 } { ptr @.str.4623, i64 6, i64 0 }, ptr %t36 + store { ptr, i64, i64 } %t37, ptr %a38 + call void @finch_str_drop(ptr %a38) + br label %endif7210 +endif7210: + %t39 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 0 + %t40 = getelementptr inbounds %S.gen.Abi, 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.4624, i64 6, i64 0 }, ptr %a43 + %t44 = call i32 @finch_str_eq(ptr %a42, ptr %a43) + %t45 = icmp ne i32 %t44, 0 + br i1 %t45, label %then7211, label %else7212 +then7211: + %t46 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 3 + store i1 true, ptr %t46 + %t47 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 2 + %t48 = load { ptr, i64, i64 }, ptr %t47 + store { ptr, i64, i64 } { ptr @.str.4625, i64 4, i64 0 }, ptr %t47 + store { ptr, i64, i64 } %t48, ptr %a49 + call void @finch_str_drop(ptr %a49) + %t50 = load i64, ptr %a5 + %t51 = sub i64 %t50, 1 + store i64 %t51, ptr %a5 + br label %endif7213 +else7212: + %t52 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 0 + %t53 = getelementptr inbounds %S.gen.Abi, ptr %t52, i32 0, i32 0 + %t54 = load { ptr, i64, i64 }, ptr %t53 + store { ptr, i64, i64 } %t54, ptr %a55 + store { ptr, i64, i64 } { ptr @.str.4626, i64 6, i64 0 }, ptr %a56 + %t57 = call i32 @finch_str_eq(ptr %a55, ptr %a56) + %t58 = icmp ne i32 %t57, 0 + br i1 %t58, label %then7214, label %endif7216 +then7214: + %t59 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 0 + %t60 = getelementptr inbounds %S.gen.Abi, ptr %t59, i32 0, i32 2 + %t61 = load { ptr, i64, i64 }, ptr %t60 + %t62 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 2 + store { ptr, i64, i64 } %t61, ptr %a63 + call void @finch_str_copy(ptr %a64, ptr %a63) + %t65 = load { ptr, i64, i64 }, ptr %a64 + %t66 = load { ptr, i64, i64 }, ptr %t62 + store { ptr, i64, i64 } %t65, ptr %t62 + store { ptr, i64, i64 } %t66, ptr %a67 + call void @finch_str_drop(ptr %a67) + br label %endif7216 +endif7216: + br label %endif7213 +endif7213: + store i64 0, ptr %a68 + br label %each.cond7217 +each.cond7217: + %t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 + %t70 = load i64, ptr %t69 + %t71 = load i64, ptr %a68 + %t72 = icmp slt i64 %t71, %t70 + br i1 %t72, label %each.body7218, label %each.end7220 +each.body7218: + %t73 = load ptr, ptr %a3 + %t74 = getelementptr inbounds %S.ast.Type, ptr %t73, i64 %t71 + %t75 = load %S.ast.Type, ptr %t74 + store %S.ast.Type %t75, ptr %a76 + %t77 = load ptr, ptr %a1 + %t78 = load %S.ast.Type, ptr %a76 + %t79 = call %S.gen.Abi @finch.gen.classify(ptr %t77, %S.ast.Type %t78) + store %S.gen.Abi %t79, ptr %a80 + %t81 = getelementptr inbounds %S.gen.Abi, ptr %a80, i32 0, i32 0 + %t82 = load { ptr, i64, i64 }, ptr %t81 + store { ptr, i64, i64 } %t82, ptr %a83 + store { ptr, i64, i64 } { ptr @.str.4627, i64 6, i64 0 }, ptr %a84 + %t85 = call i32 @finch_str_eq(ptr %a83, ptr %a84) + %t86 = icmp ne i32 %t85, 0 + br i1 %t86, label %then7221, label %else7222 +then7221: + store i64 0, ptr %a87 + store i64 0, ptr %a88 + %t89 = getelementptr inbounds %S.gen.Abi, ptr %a80, i32 0, i32 1 + store i64 0, ptr %a90 + br label %each.cond7224 +each.cond7224: + %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.body7225, label %each.end7227 +each.body7225: + %t95 = load ptr, ptr %t89 + %t96 = getelementptr inbounds { ptr, i64, i64 }, ptr %t95, i64 %t93 + %t97 = load { ptr, i64, i64 }, ptr %t96 + store { ptr, i64, i64 } %t97, ptr %a98 + %t99 = load { ptr, i64, i64 }, ptr %a98 + store { ptr, i64, i64 } %t99, ptr %a100 + store { ptr, i64, i64 } { ptr @.str.4629, i64 1, i64 0 }, ptr %a102 + %t103 = call i32 @finch_str_starts(ptr %a100, ptr %a102) + %t104 = icmp ne i32 %t103, 0 + br i1 %t104, label %then7228, label %else7229 +then7228: + %t105 = load i64, ptr %a87 + %t106 = add i64 %t105, 1 + store i64 %t106, ptr %a87 + br label %endif7230 +else7229: + %t107 = load i64, ptr %a88 + %t108 = add i64 %t107, 1 + store i64 %t108, ptr %a88 + br label %endif7230 +endif7230: + br label %each.step7226 +each.step7226: + %t109 = load i64, ptr %a90 + %t110 = add i64 %t109, 1 + store i64 %t110, ptr %a90 + br label %each.cond7224 +each.end7227: + %t111 = load ptr, ptr %a1 + %t112 = icmp eq ptr %t111, null + br i1 %t112, label %panic7231, label %ok7232 +panic7231: + call void @finch_panic(ptr @.str.4630, i64 4198, ptr @.str.4631) unreachable -ok6861: - %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.from6862 -logic.from6862: - br i1 %t103, label %logic.end6864, label %logic.rhs6863 -logic.rhs6863: - %t104 = load ptr, ptr %a1 - %t105 = icmp eq ptr %t104, null - br i1 %t105, label %panic6865, label %ok6866 -panic6865: - call void @finch_panic(ptr @.str.4463, i64 3911, ptr @.str.4464) +ok7232: + %t113 = getelementptr inbounds %S.gen.Gen, ptr %t111, i32 0, i32 30 + %t114 = getelementptr inbounds %S.platform.Target, ptr %t113, i32 0, i32 1 + %t115 = load i1, ptr %t114 + br label %logic.from7233 +logic.from7233: + br i1 %t115, label %logic.end7235, label %logic.rhs7234 +logic.rhs7234: + %t116 = load ptr, ptr %a1 + %t117 = icmp eq ptr %t116, null + br i1 %t117, label %panic7236, label %ok7237 +panic7236: + call void @finch_panic(ptr @.str.4632, i64 4198, ptr @.str.4633) unreachable -ok6866: - %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.rend6867 -logic.rend6867: - br label %logic.end6864 -logic.end6864: - %t109 = phi i1 [ true, %logic.from6862 ], [ %t108, %logic.rend6867 ] - br label %logic.from6868 -logic.from6868: - br i1 %t109, label %logic.end6870, label %logic.rhs6869 -logic.rhs6869: - %t110 = load i64, ptr %a75 - %t111 = load i64, ptr %a5 - %t112 = icmp sle i64 %t110, %t111 - br label %logic.from6871 -logic.from6871: - br i1 %t112, label %logic.rhs6872, label %logic.end6873 -logic.rhs6872: - %t113 = load i64, ptr %a76 - %t114 = load i64, ptr %a6 - %t115 = icmp sle i64 %t113, %t114 - br label %logic.rend6874 -logic.rend6874: - br label %logic.end6873 -logic.end6873: - %t116 = phi i1 [ false, %logic.from6871 ], [ %t115, %logic.rend6874 ] - br label %logic.rend6875 -logic.rend6875: - br label %logic.end6870 -logic.end6870: - %t117 = phi i1 [ true, %logic.from6868 ], [ %t116, %logic.rend6875 ] - br i1 %t117, label %then6876, label %else6877 -then6876: - %t118 = load i64, ptr %a75 - %t119 = load i64, ptr %a5 - %t120 = sub i64 %t119, %t118 - store i64 %t120, ptr %a5 - %t121 = load i64, ptr %a76 - %t122 = load i64, ptr %a6 - %t123 = sub i64 %t122, %t121 - store i64 %t123, ptr %a6 - br label %endif6878 -else6877: - %t124 = getelementptr inbounds %S.gen.Abi, ptr %a68, i32 0, i32 0 - store { ptr, i64, i64 } { ptr @.str.4465, i64 6, i64 0 }, ptr %t124 - br label %endif6878 -endif6878: - br label %endif6852 -else6851: - %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.4466, 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 %then6879, label %endif6881 -then6879: - %t131 = load %S.ast.Type, ptr %a64 - %t132 = call i1 @finch.gen.isFloat(%S.ast.Type %t131) - br i1 %t132, label %then6882, label %else6883 -then6882: - %t133 = load i64, ptr %a6 - %t134 = sub i64 %t133, 1 - store i64 %t134, ptr %a6 - br label %endif6884 -else6883: - %t135 = load i64, ptr %a5 - %t136 = sub i64 %t135, 1 - store i64 %t136, ptr %a5 - br label %endif6884 -endif6884: - br label %endif6881 -endif6881: - br label %endif6852 -endif6852: - %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 - store %S.gen.Abi %t139, ptr %a140 - call void @finch.copy.S_gen_Abi(ptr %a141, ptr %a140) - %t142 = load %S.gen.Abi, ptr %a141 - %t143 = load i64, ptr %t138 - %t144 = add i64 %t143, 1 - call void @finch_arr_reserve(ptr %t137, i64 %t144, i64 ptrtoint (ptr getelementptr (%S.gen.Abi, ptr null, i32 1) to i64)) - %t145 = load ptr, ptr %t137 - %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.step6848 -each.step6848: - %t147 = load i64, ptr %a56 - %t148 = add i64 %t147, 1 - store i64 %t148, ptr %a56 - br label %each.cond6846 -each.end6849: - %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) - %t152 = load %S.gen.Plan, ptr %a151 - ret %S.gen.Plan %t152 +ok7237: + %t118 = getelementptr inbounds %S.gen.Gen, ptr %t116, i32 0, i32 30 + %t119 = getelementptr inbounds %S.platform.Target, ptr %t118, i32 0, i32 4 + %t120 = load i1, ptr %t119 + br label %logic.rend7238 +logic.rend7238: + br label %logic.end7235 +logic.end7235: + %t121 = phi i1 [ true, %logic.from7233 ], [ %t120, %logic.rend7238 ] + br label %logic.from7239 +logic.from7239: + br i1 %t121, label %logic.end7241, label %logic.rhs7240 +logic.rhs7240: + %t122 = load i64, ptr %a87 + %t123 = load i64, ptr %a5 + %t124 = icmp sle i64 %t122, %t123 + br label %logic.from7242 +logic.from7242: + br i1 %t124, label %logic.rhs7243, label %logic.end7244 +logic.rhs7243: + %t125 = load i64, ptr %a88 + %t126 = load i64, ptr %a6 + %t127 = icmp sle i64 %t125, %t126 + br label %logic.rend7245 +logic.rend7245: + br label %logic.end7244 +logic.end7244: + %t128 = phi i1 [ false, %logic.from7242 ], [ %t127, %logic.rend7245 ] + br label %logic.rend7246 +logic.rend7246: + br label %logic.end7241 +logic.end7241: + %t129 = phi i1 [ true, %logic.from7239 ], [ %t128, %logic.rend7246 ] + br i1 %t129, label %then7247, label %else7248 +then7247: + %t130 = load i64, ptr %a87 + %t131 = load i64, ptr %a5 + %t132 = sub i64 %t131, %t130 + store i64 %t132, ptr %a5 + %t133 = load i64, ptr %a88 + %t134 = load i64, ptr %a6 + %t135 = sub i64 %t134, %t133 + store i64 %t135, ptr %a6 + br label %endif7249 +else7248: + %t136 = getelementptr inbounds %S.gen.Abi, ptr %a80, i32 0, i32 0 + %t137 = load { ptr, i64, i64 }, ptr %t136 + store { ptr, i64, i64 } { ptr @.str.4634, i64 6, i64 0 }, ptr %t136 + store { ptr, i64, i64 } %t137, ptr %a138 + call void @finch_str_drop(ptr %a138) + br label %endif7249 +endif7249: + br label %endif7223 +else7222: + %t139 = getelementptr inbounds %S.gen.Abi, ptr %a80, i32 0, i32 0 + %t140 = load { ptr, i64, i64 }, ptr %t139 + store { ptr, i64, i64 } %t140, ptr %a141 + store { ptr, i64, i64 } { ptr @.str.4635, i64 6, i64 0 }, ptr %a142 + %t143 = call i32 @finch_str_eq(ptr %a141, ptr %a142) + %t144 = icmp ne i32 %t143, 0 + br i1 %t144, label %then7250, label %endif7252 +then7250: + %t145 = load %S.ast.Type, ptr %a76 + %t146 = call i1 @finch.gen.isFloat(%S.ast.Type %t145) + br i1 %t146, label %then7253, label %else7254 +then7253: + %t147 = load i64, ptr %a6 + %t148 = sub i64 %t147, 1 + store i64 %t148, ptr %a6 + br label %endif7255 +else7254: + %t149 = load i64, ptr %a5 + %t150 = sub i64 %t149, 1 + store i64 %t150, ptr %a5 + br label %endif7255 +endif7255: + br label %endif7252 +endif7252: + br label %endif7223 +endif7223: + %t151 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 1 + %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %t151, i32 0, i32 1 + %t153 = load %S.gen.Abi, ptr %a80 + store %S.gen.Abi %t153, ptr %a154 + call void @finch.copy.S_gen_Abi(ptr %a155, ptr %a154) + %t156 = load %S.gen.Abi, ptr %a155 + %t157 = load i64, ptr %t152 + %t158 = add i64 %t157, 1 + call void @finch_arr_reserve(ptr %t151, i64 %t158, i64 ptrtoint (ptr getelementptr (%S.gen.Abi, ptr null, i32 1) to i64)) + %t159 = load ptr, ptr %t151 + %t160 = getelementptr inbounds %S.gen.Abi, ptr %t159, i64 %t157 + store %S.gen.Abi %t156, ptr %t160 + store i64 %t158, ptr %t152 + call void @finch.drop.S_gen_Abi(ptr %a80) + br label %each.step7219 +each.step7219: + %t161 = load i64, ptr %a68 + %t162 = add i64 %t161, 1 + store i64 %t162, ptr %a68 + br label %each.cond7217 +each.end7220: + %t163 = load %S.gen.Plan, ptr %a4 + ret %S.gen.Plan %t163 } define internal void @finch.gen.checkByValue(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3, { ptr, i64, i64 } %p4) { @@ -61353,39 +72390,54 @@ entry: %a41 = alloca { ptr, i64, i64 }, align 16 %a42 = alloca { ptr, i64, i64 }, align 16 %a43 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 + %a44 = 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 %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 %a52 = 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 + %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 %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 + %a63 = 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 + %a68 = alloca { ptr, i64, i64 }, align 16 + %a70 = 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 %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 %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 %a100 = 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 + %a104 = 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 + %a109 = 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 + %a116 = alloca { ptr, i64, i64 }, align 16 + %a118 = 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 @@ -61394,21 +72446,21 @@ 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.4467, i64 6, i64 0 }, ptr %a9 + store { ptr, i64, i64 } { ptr @.str.4636, 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 %then6888, label %endif6890 -then6888: + br i1 %t11, label %then7256, label %endif7258 +then7256: ret void -endif6890: +endif7258: %t12 = load ptr, ptr %a1 %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic6891, label %ok6892 -panic6891: - call void @finch_panic(ptr @.str.4468, i64 3933, ptr @.str.4469) + br i1 %t13, label %panic7259, label %ok7260 +panic7259: + call void @finch_panic(ptr @.str.4637, i64 4220, ptr @.str.4638) unreachable -ok6892: - %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 15 +ok7260: + %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 16 %t15 = load ptr, ptr %a1 %t16 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 3 %t17 = load { ptr, i64, i64 }, ptr %t16 @@ -61418,11 +72470,11 @@ ok6892: %t21 = load { ptr, i64, i64 }, ptr %t14 %t22 = extractvalue { ptr, i64, i64 } %t21, 1 %t23 = icmp uge i64 %t20, %t22 - br i1 %t23, label %range6893, label %inrange6894 -range6893: - call void @finch_panic_index(ptr @.str.4470, i64 3933, i64 %t20, i64 %t22) + br i1 %t23, label %range7261, label %inrange7262 +range7261: + call void @finch_panic_index(ptr @.str.4639, i64 4220, i64 %t20, i64 %t22) unreachable -inrange6894: +inrange7262: %t24 = extractvalue { ptr, i64, i64 } %t21, 0 %t25 = getelementptr inbounds %S.gen.StructDef, ptr %t24, i64 %t20 %t26 = load %S.gen.StructDef, ptr %t25 @@ -61433,86 +72485,117 @@ inrange6894: %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 %then6895, label %endif6897 -then6895: + br i1 %t33, label %then7263, label %endif7265 +then7263: %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.4471, i64 16, i64 0 }, ptr %a38 + store { ptr, i64, i64 } { ptr @.str.4640, 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.4472, i64 2, i64 0 }, ptr %a43 + store { ptr, i64, i64 } { ptr @.str.4641, 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 - store { ptr, i64, i64 } %t44, ptr %a47 + store { ptr, i64, i64 } %t40, ptr %a44 + call void @finch_str_drop(ptr %a44) + %t45 = load { ptr, i64, i64 }, ptr %a41 + %t46 = load { ptr, i64, i64 }, ptr %a5 store { ptr, i64, i64 } %t45, ptr %a48 - 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.4473, 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 - %t55 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t54) - store { ptr, i64, i64 } %t53, 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.4474, 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 %endif6897 -endif6897: - %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 %then6898, label %endif6900 -then6898: - %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.4475, 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.4476, 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 - store { ptr, i64, i64 } %t78, 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.4477, 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 - %t89 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t88) - store { ptr, i64, i64 } %t87, 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.4478, 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 - %t99 = load { ptr, i64, i64 }, ptr %t98 + store { ptr, i64, i64 } %t46, ptr %a49 + call void @finch_str_concat(ptr %a47, ptr %a48, ptr %a49) + store { ptr, i64, i64 } %t45, ptr %a50 + call void @finch_str_drop(ptr %a50) + %t51 = load { ptr, i64, i64 }, ptr %a47 + store { ptr, i64, i64 } %t51, ptr %a53 + store { ptr, i64, i64 } { ptr @.str.4642, i64 18, i64 0 }, ptr %a54 + call void @finch_str_concat(ptr %a52, ptr %a53, ptr %a54) + store { ptr, i64, i64 } %t51, ptr %a55 + call void @finch_str_drop(ptr %a55) + %t56 = load { ptr, i64, i64 }, ptr %a52 + %t57 = load %S.ast.Type, ptr %a4 + %t58 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %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) + store { ptr, i64, i64 } %t56, ptr %a62 + call void @finch_str_drop(ptr %a62) + store { ptr, i64, i64 } %t58, ptr %a63 + call void @finch_str_drop(ptr %a63) + %t64 = load { ptr, i64, i64 }, ptr %a59 + store { ptr, i64, i64 } %t64, ptr %a66 + store { ptr, i64, i64 } { ptr @.str.4643, i64 20, i64 0 }, ptr %a67 + call void @finch_str_concat(ptr %a65, ptr %a66, ptr %a67) + store { ptr, i64, i64 } %t64, ptr %a68 + call void @finch_str_drop(ptr %a68) + %t69 = load { ptr, i64, i64 }, ptr %a65 + call void @finch.gen.fail(ptr %t34, %S.ast.Node %t35, { ptr, i64, i64 } %t69) + store { ptr, i64, i64 } %t69, ptr %a70 + call void @finch_str_drop(ptr %a70) + br label %endif7265 +endif7265: + %t71 = getelementptr inbounds %S.gen.StructDef, ptr %a30, i32 0, i32 8 + %t72 = getelementptr inbounds { ptr, i64, i64 }, ptr %t71, i32 0, i32 1 + %t73 = load i64, ptr %t72 + %t74 = icmp sgt i64 %t73, 0 + br i1 %t74, label %then7266, label %endif7268 +then7266: + %t75 = load ptr, ptr %a1 + %t76 = load %S.ast.Node, ptr %a2 + %t77 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } { ptr @.str.4644, i64 16, 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.4645, i64 2, i64 0 }, ptr %a84 + call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84) + store { ptr, i64, i64 } %t81, ptr %a85 + call void @finch_str_drop(ptr %a85) + %t86 = load { ptr, i64, i64 }, ptr %a82 + %t87 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } %t86, ptr %a89 + store { ptr, i64, i64 } %t87, ptr %a90 + call void @finch_str_concat(ptr %a88, ptr %a89, ptr %a90) + store { ptr, i64, i64 } %t86, ptr %a91 + call void @finch_str_drop(ptr %a91) + %t92 = load { ptr, i64, i64 }, ptr %a88 + store { ptr, i64, i64 } %t92, ptr %a94 + store { ptr, i64, i64 } { ptr @.str.4646, i64 12, i64 0 }, ptr %a95 + call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) + store { ptr, i64, i64 } %t92, ptr %a96 + call void @finch_str_drop(ptr %a96) + %t97 = load { ptr, i64, i64 }, ptr %a93 + %t98 = load %S.ast.Type, ptr %a4 + %t99 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t98) store { ptr, i64, i64 } %t97, ptr %a101 store { ptr, i64, i64 } %t99, ptr %a102 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 %endif6900 -endif6900: + store { ptr, i64, i64 } %t97, ptr %a103 + call void @finch_str_drop(ptr %a103) + store { ptr, i64, i64 } %t99, ptr %a104 + call void @finch_str_drop(ptr %a104) + %t105 = load { ptr, i64, i64 }, ptr %a100 + store { ptr, i64, i64 } %t105, ptr %a107 + store { ptr, i64, i64 } { ptr @.str.4647, i64 40, i64 0 }, ptr %a108 + call void @finch_str_concat(ptr %a106, ptr %a107, ptr %a108) + store { ptr, i64, i64 } %t105, ptr %a109 + call void @finch_str_drop(ptr %a109) + %t110 = load { ptr, i64, i64 }, ptr %a106 + %t111 = getelementptr inbounds %S.gen.StructDef, ptr %a30, i32 0, i32 8 + %t112 = load { ptr, i64, i64 }, ptr %t111 + store { ptr, i64, i64 } %t110, ptr %a114 + store { ptr, i64, i64 } %t112, ptr %a115 + call void @finch_str_concat(ptr %a113, ptr %a114, ptr %a115) + store { ptr, i64, i64 } %t110, ptr %a116 + call void @finch_str_drop(ptr %a116) + %t117 = load { ptr, i64, i64 }, ptr %a113 + call void @finch.gen.fail(ptr %t75, %S.ast.Node %t76, { ptr, i64, i64 } %t117) + store { ptr, i64, i64 } %t117, ptr %a118 + call void @finch_str_drop(ptr %a118) + br label %endif7268 +endif7268: + call void @finch.drop.S_gen_StructDef(ptr %a30) ret void } @@ -61528,51 +72611,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.from6901 -logic.from6901: - br i1 %t3, label %logic.end6903, label %logic.rhs6902 -logic.rhs6902: + br label %logic.from7269 +logic.from7269: + br i1 %t3, label %logic.end7271, label %logic.rhs7270 +logic.rhs7270: %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.4479, i64 4, i64 0 }, ptr %a7 + store { ptr, i64, i64 } { ptr @.str.4648, 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.rend6904 -logic.rend6904: - br label %logic.end6903 -logic.end6903: - %t10 = phi i1 [ true, %logic.from6901 ], [ %t9, %logic.rend6904 ] - br label %logic.from6905 -logic.from6905: - br i1 %t10, label %logic.end6907, label %logic.rhs6906 -logic.rhs6906: + br label %logic.rend7272 +logic.rend7272: + br label %logic.end7271 +logic.end7271: + %t10 = phi i1 [ true, %logic.from7269 ], [ %t9, %logic.rend7272 ] + br label %logic.from7273 +logic.from7273: + br i1 %t10, label %logic.end7275, label %logic.rhs7274 +logic.rhs7274: %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.4480, i64 4, i64 0 }, ptr %a14 + store { ptr, i64, i64 } { ptr @.str.4649, 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.rend6908 -logic.rend6908: - br label %logic.end6907 -logic.end6907: - %t17 = phi i1 [ true, %logic.from6905 ], [ %t16, %logic.rend6908 ] - br label %logic.from6909 -logic.from6909: - br i1 %t17, label %logic.end6911, label %logic.rhs6910 -logic.rhs6910: + br label %logic.rend7276 +logic.rend7276: + br label %logic.end7275 +logic.end7275: + %t17 = phi i1 [ true, %logic.from7273 ], [ %t16, %logic.rend7276 ] + br label %logic.from7277 +logic.from7277: + br i1 %t17, label %logic.end7279, label %logic.rhs7278 +logic.rhs7278: %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.4481, i64 3, i64 0 }, ptr %a21 + store { ptr, i64, i64 } { ptr @.str.4650, 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.rend6912 -logic.rend6912: - br label %logic.end6911 -logic.end6911: - %t24 = phi i1 [ true, %logic.from6909 ], [ %t23, %logic.rend6912 ] + br label %logic.rend7280 +logic.rend7280: + br label %logic.end7279 +logic.end7279: + %t24 = phi i1 [ true, %logic.from7277 ], [ %t23, %logic.rend7280 ] ret i1 %t24 } @@ -61585,27 +72668,35 @@ entry: %a54 = 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 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = 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 + %a61 = alloca { ptr, i64, i64 }, align 16 + %a62 = alloca { ptr, i64, i64 }, align 16 + %a64 = alloca { ptr, i64, i64 }, align 16 + %a70 = alloca { ptr, i64, i64 }, align 16 + %a71 = 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 %a87 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca i64, align 16 - %a100 = alloca %S.gen.FnSig, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = 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 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 + %a89 = 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 + %a94 = alloca { ptr, i64, i64 }, align 16 + %a98 = alloca i64, align 16 + %a106 = alloca %S.gen.FnSig, align 16 + %a113 = alloca { ptr, i64, i64 }, align 16 + %a114 = 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 + %a129 = alloca { ptr, i64, i64 }, align 16 + %a131 = 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 @@ -61613,71 +72704,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 %then6913, label %endif6915 -then6913: + br i1 %t7, label %then7281, label %endif7283 +then7281: %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.4482, i64 59, i64 0 }) - br label %endif6915 -endif6915: + call void @finch.gen.fail(ptr %t8, %S.ast.Node %t9, { ptr, i64, i64 } { ptr @.str.4651, i64 59, i64 0 }) + br label %endif7283 +endif7283: %t10 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 7 %t11 = load i1, ptr %t10 - br i1 %t11, label %then6916, label %endif6918 -then6916: + br i1 %t11, label %then7284, label %endif7286 +then7284: %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.4483, i64 74, i64 0 }) - br label %endif6918 -endif6918: + call void @finch.gen.fail(ptr %t12, %S.ast.Node %t13, { ptr, i64, i64 } { ptr @.str.4652, i64 74, i64 0 }) + br label %endif7286 +endif7286: %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 %then6919, label %endif6921 -then6919: + br i1 %t17, label %then7287, label %endif7289 +then7287: %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.4484, i64 29, i64 0 }) - br label %endif6921 -endif6921: + call void @finch.gen.fail(ptr %t18, %S.ast.Node %t19, { ptr, i64, i64 } { ptr @.str.4653, i64 29, i64 0 }) + br label %endif7289 +endif7289: %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.cond6922 -for.cond6922: + br label %for.cond7290 +for.cond7290: %t24 = load i64, ptr %a23 %t25 = icmp slt i64 %t24, %t22 - br i1 %t25, label %for.body6923, label %for.end6925 -for.body6923: + br i1 %t25, label %for.body7291, label %for.end7293 +for.body7291: %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 %range6926, label %inrange6927 -range6926: - call void @finch_panic_index(ptr @.str.4485, i64 3958, i64 %t27, i64 %t29) + br i1 %t30, label %range7294, label %inrange7295 +range7294: + call void @finch_panic_index(ptr @.str.4654, i64 4245, i64 %t27, i64 %t29) unreachable -inrange6927: +inrange7295: %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 %then6928, label %endif6930 -then6928: + br i1 %t35, label %then7296, label %endif7298 +then7296: %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 %range6931, label %inrange6932 -range6931: - call void @finch_panic_index(ptr @.str.4486, i64 3959, i64 %t38, i64 %t40) + br i1 %t41, label %range7299, label %inrange7300 +range7299: + call void @finch_panic_index(ptr @.str.4655, i64 4246, i64 %t38, i64 %t40) unreachable -inrange6932: +inrange7300: %t42 = extractvalue { ptr, i64, i64 } %t39, 0 %t43 = getelementptr inbounds %S.ast.Node, ptr %t42, i64 %t38 %t44 = load %S.ast.Node, ptr %t43 @@ -61686,135 +72777,151 @@ inrange6932: %t47 = load { ptr, i64, i64 }, ptr %t45 %t48 = extractvalue { ptr, i64, i64 } %t47, 1 %t49 = icmp uge i64 %t46, %t48 - br i1 %t49, label %range6933, label %inrange6934 -range6933: - call void @finch_panic_index(ptr @.str.4488, i64 3959, i64 %t46, i64 %t48) + br i1 %t49, label %range7301, label %inrange7302 +range7301: + call void @finch_panic_index(ptr @.str.4657, i64 4246, i64 %t46, i64 %t48) unreachable -inrange6934: +inrange7302: %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.4487, i64 66, i64 0 }, ptr %a55 + store { ptr, i64, i64 } { ptr @.str.4656, 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.4489, 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 %endif6930 -endif6930: - br label %for.step6924 -for.step6924: - %t62 = load i64, ptr %a23 - %t63 = add i64 %t62, 1 - store i64 %t63, ptr %a23 - br label %for.cond6922 -for.end6925: - %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.4490, 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.from6935 -logic.from6935: - br i1 %t70, label %logic.rhs6936, label %logic.end6937 -logic.rhs6936: - %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.rend6938 -logic.rend6938: - br label %logic.end6937 -logic.end6937: - %t75 = phi i1 [ false, %logic.from6935 ], [ %t74, %logic.rend6938 ] - br i1 %t75, label %then6939, label %endif6941 -then6939: - %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.4491, 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.4492, 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 %endif6941 -endif6941: - %t89 = load ptr, ptr %a1 - %t90 = icmp eq ptr %t89, null - br i1 %t90, label %panic6942, label %ok6943 -panic6942: - call void @finch_panic(ptr @.str.4493, i64 3965, ptr @.str.4494) + store { ptr, i64, i64 } %t53, ptr %a57 + call void @finch_str_drop(ptr %a57) + %t58 = load { ptr, i64, i64 }, ptr %a54 + store { ptr, i64, i64 } %t58, ptr %a60 + store { ptr, i64, i64 } { ptr @.str.4658, i64 50, i64 0 }, ptr %a61 + call void @finch_str_concat(ptr %a59, ptr %a60, ptr %a61) + store { ptr, i64, i64 } %t58, ptr %a62 + call void @finch_str_drop(ptr %a62) + %t63 = load { ptr, i64, i64 }, ptr %a59 + call void @finch.gen.fail(ptr %t36, %S.ast.Node %t44, { ptr, i64, i64 } %t63) + store { ptr, i64, i64 } %t63, ptr %a64 + call void @finch_str_drop(ptr %a64) + br label %endif7298 +endif7298: + br label %for.step7292 +for.step7292: + %t65 = load i64, ptr %a23 + %t66 = add i64 %t65, 1 + store i64 %t66, ptr %a23 + br label %for.cond7290 +for.end7293: + %t67 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 12 + %t68 = getelementptr inbounds %S.ast.Type, ptr %t67, i32 0, i32 0 + %t69 = load { ptr, i64, i64 }, ptr %t68 + store { ptr, i64, i64 } %t69, ptr %a70 + store { ptr, i64, i64 } { ptr @.str.4659, i64 4, i64 0 }, ptr %a71 + %t72 = call i32 @finch_str_eq(ptr %a70, ptr %a71) + %t73 = icmp eq i32 %t72, 0 + br label %logic.from7303 +logic.from7303: + br i1 %t73, label %logic.rhs7304, label %logic.end7305 +logic.rhs7304: + %t74 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 12 + %t75 = load %S.ast.Type, ptr %t74 + %t76 = call i1 @finch.gen.cPlain(%S.ast.Type %t75) + %t77 = xor i1 %t76, true + br label %logic.rend7306 +logic.rend7306: + br label %logic.end7305 +logic.end7305: + %t78 = phi i1 [ false, %logic.from7303 ], [ %t77, %logic.rend7306 ] + br i1 %t78, label %then7307, label %endif7309 +then7307: + %t79 = load ptr, ptr %a1 + %t80 = load %S.ast.Node, ptr %a2 + %t81 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 12 + %t82 = load %S.ast.Type, ptr %t81 + %t83 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t82) + store { ptr, i64, i64 } { ptr @.str.4660, i64 69, i64 0 }, ptr %a85 + store { ptr, i64, i64 } %t83, ptr %a86 + call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) + store { ptr, i64, i64 } %t83, ptr %a87 + call void @finch_str_drop(ptr %a87) + %t88 = load { ptr, i64, i64 }, ptr %a84 + store { ptr, i64, i64 } %t88, ptr %a90 + store { ptr, i64, i64 } { ptr @.str.4661, i64 1, i64 0 }, ptr %a91 + call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) + store { ptr, i64, i64 } %t88, ptr %a92 + call void @finch_str_drop(ptr %a92) + %t93 = load { ptr, i64, i64 }, ptr %a89 + call void @finch.gen.fail(ptr %t79, %S.ast.Node %t80, { ptr, i64, i64 } %t93) + store { ptr, i64, i64 } %t93, ptr %a94 + call void @finch_str_drop(ptr %a94) + br label %endif7309 +endif7309: + %t95 = load ptr, ptr %a1 + %t96 = icmp eq ptr %t95, null + br i1 %t96, label %panic7310, label %ok7311 +panic7310: + call void @finch_panic(ptr @.str.4662, i64 4252, ptr @.str.4663) unreachable -ok6943: - %t91 = getelementptr inbounds %S.gen.Gen, ptr %t89, i32 0, i32 14 - store i64 0, ptr %a92 - br label %each.cond6944 -each.cond6944: - %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.body6945, label %each.end6947 -each.body6945: - %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.from6948 -logic.from6948: - br i1 %t102, label %logic.rhs6949, label %logic.end6950 -logic.rhs6949: - %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 - %t106 = load { ptr, i64, i64 }, ptr %t105 - store { ptr, i64, i64 } %t104, ptr %a107 - 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.rend6951 -logic.rend6951: - br label %logic.end6950 -logic.end6950: - %t111 = phi i1 [ false, %logic.from6948 ], [ %t110, %logic.rend6951 ] - br i1 %t111, label %then6952, label %endif6954 -then6952: - %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.4495, 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.4496, 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 %endif6954 -endif6954: - br label %each.step6946 -each.step6946: - %t124 = load i64, ptr %a92 - %t125 = add i64 %t124, 1 - store i64 %t125, ptr %a92 - br label %each.cond6944 -each.end6947: +ok7311: + %t97 = getelementptr inbounds %S.gen.Gen, ptr %t95, i32 0, i32 15 + store i64 0, ptr %a98 + br label %each.cond7312 +each.cond7312: + %t99 = getelementptr inbounds { ptr, i64, i64 }, ptr %t97, i32 0, i32 1 + %t100 = load i64, ptr %t99 + %t101 = load i64, ptr %a98 + %t102 = icmp slt i64 %t101, %t100 + br i1 %t102, label %each.body7313, label %each.end7315 +each.body7313: + %t103 = load ptr, ptr %t97 + %t104 = getelementptr inbounds %S.gen.FnSig, ptr %t103, i64 %t101 + %t105 = load %S.gen.FnSig, ptr %t104 + store %S.gen.FnSig %t105, ptr %a106 + %t107 = getelementptr inbounds %S.gen.FnSig, ptr %a106, i32 0, i32 5 + %t108 = load i1, ptr %t107 + br label %logic.from7316 +logic.from7316: + br i1 %t108, label %logic.rhs7317, label %logic.end7318 +logic.rhs7317: + %t109 = getelementptr inbounds %S.gen.FnSig, ptr %a106, i32 0, i32 1 + %t110 = load { ptr, i64, i64 }, ptr %t109 + %t111 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 1 + %t112 = load { ptr, i64, i64 }, ptr %t111 + store { ptr, i64, i64 } %t110, ptr %a113 + store { ptr, i64, i64 } %t112, ptr %a114 + %t115 = call i32 @finch_str_eq(ptr %a113, ptr %a114) + %t116 = icmp ne i32 %t115, 0 + br label %logic.rend7319 +logic.rend7319: + br label %logic.end7318 +logic.end7318: + %t117 = phi i1 [ false, %logic.from7316 ], [ %t116, %logic.rend7319 ] + br i1 %t117, label %then7320, label %endif7322 +then7320: + %t118 = load ptr, ptr %a1 + %t119 = load %S.ast.Node, ptr %a2 + %t120 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 1 + %t121 = load { ptr, i64, i64 }, ptr %t120 + store { ptr, i64, i64 } { ptr @.str.4664, 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.4665, i64 38, i64 0 }, ptr %a128 + call void @finch_str_concat(ptr %a126, ptr %a127, ptr %a128) + store { ptr, i64, i64 } %t125, ptr %a129 + call void @finch_str_drop(ptr %a129) + %t130 = load { ptr, i64, i64 }, ptr %a126 + call void @finch.gen.fail(ptr %t118, %S.ast.Node %t119, { ptr, i64, i64 } %t130) + store { ptr, i64, i64 } %t130, ptr %a131 + call void @finch_str_drop(ptr %a131) + br label %endif7322 +endif7322: + br label %each.step7314 +each.step7314: + %t132 = load i64, ptr %a98 + %t133 = add i64 %t132, 1 + store i64 %t133, ptr %a98 + br label %each.cond7312 +each.end7315: ret void } @@ -61835,110 +72942,154 @@ entry: %a36 = alloca { ptr, i64, i64 }, align 16 %a37 = alloca { ptr, i64, i64 }, align 16 %a38 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 + %a39 = 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 %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 %a55 = 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 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a73 = 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 + %a61 = alloca { ptr, i64, i64 }, align 16 + %a62 = 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 %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 %a84 = alloca { ptr, i64, i64 }, align 16 %a85 = alloca { ptr, i64, i64 }, align 16 %a86 = alloca { ptr, i64, i64 }, align 16 + %a87 = alloca { ptr, i64, i64 }, align 16 + %a90 = 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 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a101 = 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 + %a106 = 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 + %a112 = 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 %a117 = 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 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = 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 %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 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 + %a138 = alloca { ptr, i64, i64 }, align 16 + %a142 = alloca { ptr, i64, i64 }, align 16 %a143 = alloca { ptr, i64, i64 }, align 16 %a144 = alloca { ptr, i64, i64 }, align 16 %a145 = alloca { ptr, i64, i64 }, align 16 %a147 = alloca { ptr, i64, i64 }, align 16 %a148 = alloca { ptr, i64, i64 }, align 16 %a149 = alloca { ptr, i64, i64 }, align 16 + %a150 = alloca { ptr, i64, i64 }, align 16 %a153 = alloca { ptr, i64, i64 }, align 16 %a154 = 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 + %a159 = alloca { ptr, i64, i64 }, align 16 + %a160 = alloca { ptr, i64, i64 }, align 16 + %a162 = alloca { ptr, i64, i64 }, align 16 %a163 = alloca { ptr, i64, i64 }, align 16 %a164 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 + %a165 = alloca { ptr, i64, i64 }, 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 - %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 - %a182 = alloca { ptr, i64, i64 }, align 16 %a183 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 + %a184 = alloca { ptr, i64, i64 }, align 16 + %a188 = alloca { ptr, i64, i64 }, align 16 + %a190 = alloca { ptr, i64, i64 }, align 16 %a196 = alloca { ptr, i64, i64 }, align 16 %a197 = alloca { ptr, i64, i64 }, align 16 + %a198 = alloca { ptr, i64, i64 }, align 16 %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 %a201 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 + %a202 = alloca { ptr, i64, i64 }, align 16 + %a203 = alloca { ptr, i64, i64 }, align 16 + %a204 = 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 %a210 = alloca { ptr, i64, i64 }, align 16 + %a211 = alloca { ptr, i64, i64 }, align 16 + %a213 = 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 - %a224 = alloca { ptr, i64, i64 }, align 16 %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = 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 + %a232 = 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 - %a237 = 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 + %a241 = 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 - %a245 = 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 - %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 + %a254 = alloca { ptr, i64, i64 }, align 16 + %a258 = 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 + %a263 = 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 + %a268 = 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 + %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 + %a282 = alloca { ptr, i64, i64 }, align 16 + %a286 = 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 + %a291 = 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 + %a297 = alloca { ptr, i64, i64 }, align 16 + %a298 = 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 + %a306 = 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 + %a314 = alloca { ptr, i64, i64 }, align 16 + %a315 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store %S.gen.FnSig %p1, ptr %a2 store { ptr, i64, i64 } zeroinitializer, ptr %a3 @@ -61950,22 +73101,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.cond6955 -for.cond6955: + br label %for.cond7323 +for.cond7323: %t12 = load i64, ptr %a11 %t13 = icmp slt i64 %t12, %t10 - br i1 %t13, label %for.body6956, label %for.end6958 -for.body6956: + br i1 %t13, label %for.body7324, label %for.end7326 +for.body7324: %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 %range6959, label %inrange6960 -range6959: - call void @finch_panic_index(ptr @.str.4497, i64 3978, i64 %t15, i64 %t17) + br i1 %t18, label %range7327, label %inrange7328 +range7327: + call void @finch_panic_index(ptr @.str.4666, i64 4265, i64 %t15, i64 %t17) unreachable -inrange6960: +inrange7328: %t19 = extractvalue { ptr, i64, i64 } %t16, 0 %t20 = getelementptr inbounds %S.ast.Type, ptr %t19, i64 %t15 %t21 = load %S.ast.Type, ptr %t20 @@ -61976,300 +73127,437 @@ inrange6960: %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.4498, i64 4, i64 0 }, ptr %a29 + store { ptr, i64, i64 } { ptr @.str.4667, 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 %then6961, label %else6962 -then6961: + br i1 %t31, label %then7329, label %else7330 +then7329: %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.4499, i64 13, i64 0 }, ptr %a37 + store { ptr, i64, i64 } { ptr @.str.4668, 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 - %t40 = load i64, ptr %t32 - %t41 = add i64 %t40, 1 - call void @finch_arr_reserve(ptr %a3, i64 %t41, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t42 = load ptr, ptr %a3 - %t43 = getelementptr inbounds { ptr, i64, i64 }, ptr %t42, i64 %t40 - store { ptr, i64, i64 } %t39, ptr %t43 - store i64 %t41, ptr %t32 - %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - %t45 = load ptr, ptr %a1 - %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.4501, 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.4502, 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.4500, 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 - %t62 = load i64, ptr %t44 - %t63 = add i64 %t62, 1 - call void @finch_arr_reserve(ptr %a4, i64 %t63, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t64 = load ptr, ptr %a4 - %t65 = getelementptr inbounds { ptr, i64, i64 }, ptr %t64, i64 %t62 - store { ptr, i64, i64 } %t61, ptr %t65 - store i64 %t63, ptr %t44 - br label %endif6963 -else6962: - %t66 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - %t67 = load ptr, ptr %a1 - %t68 = load %S.ast.Type, ptr %a25 - %t69 = call { ptr, i64, i64 } @finch.gen.cLL(ptr %t67, %S.ast.Type %t68) - %t70 = load ptr, ptr %a1 - %t71 = load %S.ast.Type, ptr %a25 - %t72 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t70, %S.ast.Type %t71) - store { ptr, i64, i64 } %t69, 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 - store { ptr, i64, i64 } %t76, ptr %a78 - store { ptr, i64, i64 } { ptr @.str.4503, 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 - call void @finch_str_from_int(ptr %a82, i64 %t81) - %t83 = load { ptr, i64, i64 }, ptr %a82 - store { ptr, i64, i64 } %t80, ptr %a85 - store { ptr, i64, i64 } %t83, ptr %a86 + store { ptr, i64, i64 } %t35, ptr %a39 + call void @finch_str_drop(ptr %a39) + %t40 = load { ptr, i64, i64 }, ptr %a36 + %t41 = load i64, ptr %t32 + %t42 = add i64 %t41, 1 + call void @finch_arr_reserve(ptr %a3, i64 %t42, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t43 = load ptr, ptr %a3 + %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t43, i64 %t41 + store { ptr, i64, i64 } %t40, ptr %t44 + store i64 %t42, ptr %t32 + %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 + %t46 = load ptr, ptr %a1 + %t47 = load i64, ptr %a11 + call void @finch_str_from_int(ptr %a48, i64 %t47) + %t49 = load { ptr, i64, i64 }, ptr %a48 + store { ptr, i64, i64 } { ptr @.str.4670, i64 13, i64 0 }, ptr %a51 + store { ptr, i64, i64 } %t49, ptr %a52 + call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) + store { ptr, i64, i64 } %t49, ptr %a53 + call void @finch_str_drop(ptr %a53) + %t54 = load { ptr, i64, i64 }, ptr %a50 + store { ptr, i64, i64 } %t54, ptr %a56 + store { ptr, i64, i64 } { ptr @.str.4671, i64 3, i64 0 }, ptr %a57 + call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) + store { ptr, i64, i64 } %t54, ptr %a58 + call void @finch_str_drop(ptr %a58) + %t59 = load { ptr, i64, i64 }, ptr %a55 + %t60 = call { ptr, i64, i64 } @finch.gen.op(ptr %t46, { ptr, i64, i64 } %t59) + store { ptr, i64, i64 } %t59, ptr %a61 + call void @finch_str_drop(ptr %a61) + store { ptr, i64, i64 } { ptr @.str.4669, i64 3, i64 0 }, ptr %a63 + store { ptr, i64, i64 } %t60, ptr %a64 + call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) + store { ptr, i64, i64 } %t60, ptr %a65 + call void @finch_str_drop(ptr %a65) + %t66 = load { ptr, i64, i64 }, ptr %a62 + %t67 = load i64, ptr %t45 + %t68 = add i64 %t67, 1 + call void @finch_arr_reserve(ptr %a4, i64 %t68, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t69 = load ptr, ptr %a4 + %t70 = getelementptr inbounds { ptr, i64, i64 }, ptr %t69, i64 %t67 + store { ptr, i64, i64 } %t66, ptr %t70 + store i64 %t68, ptr %t45 + br label %endif7331 +else7330: + %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 + %t72 = load ptr, ptr %a1 + %t73 = load %S.ast.Type, ptr %a25 + %t74 = call { ptr, i64, i64 } @finch.gen.cLL(ptr %t72, %S.ast.Type %t73) + %t75 = load ptr, ptr %a1 + %t76 = load %S.ast.Type, ptr %a25 + %t77 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t75, %S.ast.Type %t76) + store { ptr, i64, i64 } %t74, ptr %a79 + store { ptr, i64, i64 } %t77, ptr %a80 + call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) + store { ptr, i64, i64 } %t74, ptr %a81 + call void @finch_str_drop(ptr %a81) + store { ptr, i64, i64 } %t77, ptr %a82 + call void @finch_str_drop(ptr %a82) + %t83 = load { ptr, i64, i64 }, ptr %a78 + store { ptr, i64, i64 } %t83, ptr %a85 + store { ptr, i64, i64 } { ptr @.str.4672, i64 3, i64 0 }, ptr %a86 call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) - %t87 = load { ptr, i64, i64 }, ptr %a84 - %t88 = load i64, ptr %t66 - %t89 = add i64 %t88, 1 - call void @finch_arr_reserve(ptr %a3, i64 %t89, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t90 = load ptr, ptr %a3 - %t91 = getelementptr inbounds { ptr, i64, i64 }, ptr %t90, i64 %t88 - store { ptr, i64, i64 } %t87, ptr %t91 - store i64 %t89, ptr %t66 - %t92 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - %t93 = load ptr, ptr %a1 - %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.4504, 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 - call void @finch_str_from_int(ptr %a101, i64 %t100) - %t102 = load { ptr, i64, i64 }, ptr %a101 - store { ptr, i64, i64 } %t99, 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 - %t107 = load i64, ptr %t92 - %t108 = add i64 %t107, 1 - call void @finch_arr_reserve(ptr %a4, i64 %t108, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t109 = load ptr, ptr %a4 - %t110 = getelementptr inbounds { ptr, i64, i64 }, ptr %t109, i64 %t107 - store { ptr, i64, i64 } %t106, ptr %t110 - store i64 %t108, ptr %t92 - br label %endif6963 -endif6963: - br label %for.step6957 -for.step6957: + store { ptr, i64, i64 } %t83, ptr %a87 + call void @finch_str_drop(ptr %a87) + %t88 = load { ptr, i64, i64 }, ptr %a84 + %t89 = load i64, ptr %a11 + call void @finch_str_from_int(ptr %a90, i64 %t89) + %t91 = load { ptr, i64, i64 }, ptr %a90 + store { ptr, i64, i64 } %t88, ptr %a93 + store { ptr, i64, i64 } %t91, ptr %a94 + call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) + store { ptr, i64, i64 } %t88, ptr %a95 + call void @finch_str_drop(ptr %a95) + store { ptr, i64, i64 } %t91, ptr %a96 + call void @finch_str_drop(ptr %a96) + %t97 = load { ptr, i64, i64 }, ptr %a92 + %t98 = load i64, ptr %t71 + %t99 = add i64 %t98, 1 + call void @finch_arr_reserve(ptr %a3, i64 %t99, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t100 = load ptr, ptr %a3 + %t101 = getelementptr inbounds { ptr, i64, i64 }, ptr %t100, i64 %t98 + store { ptr, i64, i64 } %t97, ptr %t101 + store i64 %t99, ptr %t71 + %t102 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 + %t103 = load ptr, ptr %a1 + %t104 = load %S.ast.Type, ptr %a25 + %t105 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t103, %S.ast.Type %t104) + store { ptr, i64, i64 } %t105, ptr %a107 + store { ptr, i64, i64 } { ptr @.str.4673, i64 3, i64 0 }, ptr %a108 + call void @finch_str_concat(ptr %a106, ptr %a107, ptr %a108) + store { ptr, i64, i64 } %t105, ptr %a109 + call void @finch_str_drop(ptr %a109) + %t110 = load { ptr, i64, i64 }, ptr %a106 %t111 = load i64, ptr %a11 - %t112 = add i64 %t111, 1 - store i64 %t112, ptr %a11 - br label %for.cond6955 -for.end6958: - %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.4505, 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.4506, 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 - %t126 = load { ptr, i64, i64 }, ptr %t125 - store { ptr, i64, i64 } %t124, 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.4507, 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.4508, 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 - 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.4509, 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.4510, i64 4, i64 0 }, ptr %a148 - store { ptr, i64, i64 } { ptr @.str.4511, 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.4512, 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 %then6964, label %else6965 -then6964: - %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.4513, i64 8, i64 0 }) - br label %endif6966 -else6965: - %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.4514, 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 %then6967, label %else6968 -then6967: - store { ptr, i64, i64 } { ptr @.str.4515, i64 2, i64 0 }, ptr %a148 - store { ptr, i64, i64 } { ptr @.str.4516, 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.4518, 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.4519, 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.4517, 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 %endif6969 -else6968: - %t185 = load ptr, ptr %a1 - %t186 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t187 = load %S.ast.Type, ptr %t186 - %t188 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t185, %S.ast.Type %t187) - store { ptr, i64, i64 } %t188, ptr %a148 - %t189 = load ptr, ptr %a1 - %t190 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t191 = load %S.ast.Type, ptr %t190 - %t192 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t189, %S.ast.Type %t191) - store { ptr, i64, i64 } %t192, ptr %a149 + call void @finch_str_from_int(ptr %a112, i64 %t111) + %t113 = load { ptr, i64, i64 }, ptr %a112 + store { ptr, i64, i64 } %t110, ptr %a115 + store { ptr, i64, i64 } %t113, ptr %a116 + call void @finch_str_concat(ptr %a114, ptr %a115, ptr %a116) + store { ptr, i64, i64 } %t110, ptr %a117 + call void @finch_str_drop(ptr %a117) + store { ptr, i64, i64 } %t113, ptr %a118 + call void @finch_str_drop(ptr %a118) + %t119 = load { ptr, i64, i64 }, ptr %a114 + %t120 = load i64, ptr %t102 + %t121 = add i64 %t120, 1 + call void @finch_arr_reserve(ptr %a4, i64 %t121, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t122 = load ptr, ptr %a4 + %t123 = getelementptr inbounds { ptr, i64, i64 }, ptr %t122, i64 %t120 + store { ptr, i64, i64 } %t119, ptr %t123 + store i64 %t121, ptr %t102 + br label %endif7331 +endif7331: + call void @finch.drop.S_ast_Type(ptr %a25) + br label %for.step7325 +for.step7325: + %t124 = load i64, ptr %a11 + %t125 = add i64 %t124, 1 + store i64 %t125, ptr %a11 + br label %for.cond7323 +for.end7326: + %t126 = load ptr, ptr %a1 + %t127 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 + %t128 = load %S.ast.Type, ptr %t127 + %t129 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t126, %S.ast.Type %t128) + store { ptr, i64, i64 } { ptr @.str.4674, i64 5, i64 0 }, ptr %a131 + store { ptr, i64, i64 } %t129, ptr %a132 + call void @finch_str_concat(ptr %a130, ptr %a131, ptr %a132) + store { ptr, i64, i64 } %t129, ptr %a133 + call void @finch_str_drop(ptr %a133) + %t134 = load { ptr, i64, i64 }, ptr %a130 + store { ptr, i64, i64 } %t134, ptr %a136 + store { ptr, i64, i64 } { ptr @.str.4675, i64 1, i64 0 }, ptr %a137 + call void @finch_str_concat(ptr %a135, ptr %a136, ptr %a137) + store { ptr, i64, i64 } %t134, ptr %a138 + call void @finch_str_drop(ptr %a138) + %t139 = load { ptr, i64, i64 }, ptr %a135 + %t140 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 11 + %t141 = load { ptr, i64, i64 }, ptr %t140 + store { ptr, i64, i64 } %t139, ptr %a143 + store { ptr, i64, i64 } %t141, ptr %a144 + call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144) + store { ptr, i64, i64 } %t139, ptr %a145 + call void @finch_str_drop(ptr %a145) + %t146 = load { ptr, i64, i64 }, ptr %a142 + store { ptr, i64, i64 } %t146, ptr %a148 + store { ptr, i64, i64 } { ptr @.str.4676, i64 1, i64 0 }, ptr %a149 + call void @finch_str_concat(ptr %a147, ptr %a148, ptr %a149) + store { ptr, i64, i64 } %t146, ptr %a150 + call void @finch_str_drop(ptr %a150) + %t151 = load { ptr, i64, i64 }, ptr %a147 + %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.4677, i64 2, i64 0 }, ptr %a153 + call void @finch_str_join(ptr %a154, ptr %a4, ptr %a153) + %t155 = load { ptr, i64, i64 }, ptr %a154 + store { ptr, i64, i64 } %t151, ptr %a157 + store { ptr, i64, i64 } %t155, ptr %a158 + call void @finch_str_concat(ptr %a156, ptr %a157, ptr %a158) + store { ptr, i64, i64 } %t151, ptr %a159 + call void @finch_str_drop(ptr %a159) + store { ptr, i64, i64 } %t155, ptr %a160 + call void @finch_str_drop(ptr %a160) + %t161 = load { ptr, i64, i64 }, ptr %a156 + store { ptr, i64, i64 } %t161, ptr %a163 + store { ptr, i64, i64 } { ptr @.str.4678, i64 1, i64 0 }, ptr %a164 + call void @finch_str_concat(ptr %a162, ptr %a163, ptr %a164) + store { ptr, i64, i64 } %t161, ptr %a165 + call void @finch_str_drop(ptr %a165) + %t166 = load { ptr, i64, i64 }, ptr %a162 + store { ptr, i64, i64 } %t166, ptr %a167 + store { ptr, i64, i64 } { ptr @.str.4679, i64 4, i64 0 }, ptr %a168 + store { ptr, i64, i64 } { ptr @.str.4680, i64 0, i64 0 }, ptr %a169 + %t170 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 + %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.4681, i64 4, i64 0 }, ptr %a174 + %t175 = call i32 @finch_str_eq(ptr %a173, ptr %a174) + %t176 = icmp ne i32 %t175, 0 + br i1 %t176, label %then7332, label %else7333 +then7332: + %t177 = load ptr, ptr %a1 + %t178 = load { ptr, i64, i64 }, ptr %a167 + call void @finch.gen.emit(ptr %t177, { ptr, i64, i64 } %t178) + %t179 = load ptr, ptr %a1 + call void @finch.gen.emit(ptr %t179, { ptr, i64, i64 } { ptr @.str.4682, i64 8, i64 0 }) + br label %endif7334 +else7333: + %t180 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 + %t181 = getelementptr inbounds %S.ast.Type, ptr %t180, i32 0, i32 0 + %t182 = load { ptr, i64, i64 }, ptr %t181 + store { ptr, i64, i64 } %t182, ptr %a183 + store { ptr, i64, i64 } { ptr @.str.4683, i64 4, i64 0 }, ptr %a184 + %t185 = call i32 @finch_str_eq(ptr %a183, ptr %a184) + %t186 = icmp ne i32 %t185, 0 + br i1 %t186, label %then7335, label %else7336 +then7335: + %t187 = load { ptr, i64, i64 }, ptr %a168 + store { ptr, i64, i64 } { ptr @.str.4684, i64 2, i64 0 }, ptr %a168 + store { ptr, i64, i64 } %t187, ptr %a188 + call void @finch_str_drop(ptr %a188) + %t189 = load { ptr, i64, i64 }, ptr %a169 + store { ptr, i64, i64 } { ptr @.str.4685, i64 8, i64 0 }, ptr %a169 + store { ptr, i64, i64 } %t189, ptr %a190 + call void @finch_str_drop(ptr %a190) + %t191 = load ptr, ptr %a1 + %t192 = load ptr, ptr %a1 %t193 = load ptr, ptr %a1 - %t194 = load { ptr, i64, i64 }, ptr %a148 - store { ptr, i64, i64 } { ptr @.str.4520, 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.4521, 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 - %t204 = load { ptr, i64, i64 }, ptr %a147 - %t205 = call { ptr, i64, i64 } @finch.gen.op(ptr %t203, { ptr, i64, i64 } %t204) - store { ptr, i64, i64 } %t202, 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 - call void @finch.gen.emit(ptr %t193, { ptr, i64, i64 } %t209) - br label %endif6969 -endif6969: - br label %endif6966 -endif6966: - store { ptr, i64, i64 } { ptr @.str.4522, i64 0, i64 0 }, ptr %a210 - %t211 = load ptr, ptr %a1 - %t212 = icmp eq ptr %t211, null - br i1 %t212, label %panic6970, label %ok6971 -panic6970: - call void @finch_panic(ptr @.str.4523, i64 4003, ptr @.str.4524) - unreachable -ok6971: - %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 %then6972, label %endif6974 -then6972: - store { ptr, i64, i64 } { ptr @.str.4525, i64 10, i64 0 }, ptr %a210 - br label %endif6974 -endif6974: - %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.4526, 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 - %t223 = load { ptr, i64, i64 }, ptr %a149 - store { ptr, i64, i64 } %t222, 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.4527, i64 1, i64 0 }, ptr %a230 + %t194 = load { ptr, i64, i64 }, ptr %a167 + %t195 = call { ptr, i64, i64 } @finch.gen.op(ptr %t193, { ptr, i64, i64 } %t194) + store { ptr, i64, i64 } { ptr @.str.4687, i64 8, i64 0 }, ptr %a197 + store { ptr, i64, i64 } %t195, ptr %a198 + call void @finch_str_concat(ptr %a196, ptr %a197, ptr %a198) + store { ptr, i64, i64 } %t195, ptr %a199 + call void @finch_str_drop(ptr %a199) + %t200 = load { ptr, i64, i64 }, ptr %a196 + store { ptr, i64, i64 } %t200, ptr %a202 + store { ptr, i64, i64 } { ptr @.str.4688, i64 6, i64 0 }, ptr %a203 + call void @finch_str_concat(ptr %a201, ptr %a202, ptr %a203) + store { ptr, i64, i64 } %t200, ptr %a204 + call void @finch_str_drop(ptr %a204) + %t205 = load { ptr, i64, i64 }, ptr %a201 + %t206 = call { ptr, i64, i64 } @finch.gen.op(ptr %t192, { ptr, i64, i64 } %t205) + store { ptr, i64, i64 } %t205, ptr %a207 + call void @finch_str_drop(ptr %a207) + store { ptr, i64, i64 } { ptr @.str.4686, i64 7, i64 0 }, ptr %a209 + store { ptr, i64, i64 } %t206, ptr %a210 + call void @finch_str_concat(ptr %a208, ptr %a209, ptr %a210) + store { ptr, i64, i64 } %t206, ptr %a211 + call void @finch_str_drop(ptr %a211) + %t212 = load { ptr, i64, i64 }, ptr %a208 + call void @finch.gen.emit(ptr %t191, { ptr, i64, i64 } %t212) + store { ptr, i64, i64 } %t212, ptr %a213 + call void @finch_str_drop(ptr %a213) + br label %endif7337 +else7336: + %t214 = load ptr, ptr %a1 + %t215 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 + %t216 = load %S.ast.Type, ptr %t215 + %t217 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t214, %S.ast.Type %t216) + %t218 = load { ptr, i64, i64 }, ptr %a168 + store { ptr, i64, i64 } %t217, ptr %a168 + store { ptr, i64, i64 } %t218, ptr %a219 + call void @finch_str_drop(ptr %a219) + %t220 = load ptr, ptr %a1 + %t221 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 + %t222 = load %S.ast.Type, ptr %t221 + %t223 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t220, %S.ast.Type %t222) + %t224 = load { ptr, i64, i64 }, ptr %a169 + store { ptr, i64, i64 } %t223, ptr %a169 + store { ptr, i64, i64 } %t224, ptr %a225 + call void @finch_str_drop(ptr %a225) + %t226 = load ptr, ptr %a1 + %t227 = load { ptr, i64, i64 }, ptr %a168 + store { ptr, i64, i64 } { ptr @.str.4689, i64 4, i64 0 }, 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 %a148 - 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 - store { ptr, i64, i64 } %t236, ptr %a238 - store { ptr, i64, i64 } { ptr @.str.4528, 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 - %t242 = load { ptr, i64, i64 }, ptr %t241 - store { ptr, i64, i64 } %t240, ptr %a244 - store { ptr, i64, i64 } %t242, ptr %a245 - 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.4529, 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.4530, 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 - 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.4531, 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) - %t263 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 1 - %t264 = load { ptr, i64, i64 }, ptr %t263 - store { ptr, i64, i64 } %t264, ptr %a265 - call void @finch_str_copy(ptr %a266, ptr %a265) - %t267 = load { ptr, i64, i64 }, ptr %a266 - ret { ptr, i64, i64 } %t267 + store { ptr, i64, i64 } %t231, ptr %a233 + store { ptr, i64, i64 } { ptr @.str.4690, i64 1, i64 0 }, ptr %a234 + call void @finch_str_concat(ptr %a232, ptr %a233, ptr %a234) + store { ptr, i64, i64 } %t231, ptr %a235 + call void @finch_str_drop(ptr %a235) + %t236 = load { ptr, i64, i64 }, ptr %a232 + %t237 = load ptr, ptr %a1 + %t238 = load { ptr, i64, i64 }, ptr %a167 + %t239 = call { ptr, i64, i64 } @finch.gen.op(ptr %t237, { ptr, i64, i64 } %t238) + store { ptr, i64, i64 } %t236, ptr %a241 + store { ptr, i64, i64 } %t239, ptr %a242 + call void @finch_str_concat(ptr %a240, ptr %a241, ptr %a242) + store { ptr, i64, i64 } %t236, ptr %a243 + call void @finch_str_drop(ptr %a243) + store { ptr, i64, i64 } %t239, ptr %a244 + call void @finch_str_drop(ptr %a244) + %t245 = load { ptr, i64, i64 }, ptr %a240 + call void @finch.gen.emit(ptr %t226, { ptr, i64, i64 } %t245) + store { ptr, i64, i64 } %t245, ptr %a246 + call void @finch_str_drop(ptr %a246) + br label %endif7337 +endif7337: + br label %endif7334 +endif7334: + store { ptr, i64, i64 } { ptr @.str.4691, i64 0, i64 0 }, ptr %a247 + %t248 = load ptr, ptr %a1 + %t249 = icmp eq ptr %t248, null + br i1 %t249, label %panic7338, label %ok7339 +panic7338: + call void @finch_panic(ptr @.str.4692, i64 4290, ptr @.str.4693) + unreachable +ok7339: + %t250 = getelementptr inbounds %S.gen.Gen, ptr %t248, i32 0, i32 30 + %t251 = getelementptr inbounds %S.platform.Target, ptr %t250, i32 0, i32 1 + %t252 = load i1, ptr %t251 + br i1 %t252, label %then7340, label %endif7342 +then7340: + %t253 = load { ptr, i64, i64 }, ptr %a247 + store { ptr, i64, i64 } { ptr @.str.4694, i64 10, i64 0 }, ptr %a247 + store { ptr, i64, i64 } %t253, ptr %a254 + call void @finch_str_drop(ptr %a254) + br label %endif7342 +endif7342: + %t255 = load ptr, ptr %a1 + %t256 = load %S.gen.Saved, ptr %a7 + %t257 = load { ptr, i64, i64 }, ptr %a247 + store { ptr, i64, i64 } { ptr @.str.4695, i64 6, i64 0 }, ptr %a259 + store { ptr, i64, i64 } %t257, ptr %a260 + call void @finch_str_concat(ptr %a258, ptr %a259, ptr %a260) + %t261 = load { ptr, i64, i64 }, ptr %a258 + %t262 = load { ptr, i64, i64 }, ptr %a169 + store { ptr, i64, i64 } %t261, ptr %a264 + store { ptr, i64, i64 } %t262, ptr %a265 + call void @finch_str_concat(ptr %a263, ptr %a264, ptr %a265) + store { ptr, i64, i64 } %t261, ptr %a266 + call void @finch_str_drop(ptr %a266) + %t267 = load { ptr, i64, i64 }, ptr %a263 + store { ptr, i64, i64 } %t267, ptr %a269 + store { ptr, i64, i64 } { ptr @.str.4696, i64 1, i64 0 }, ptr %a270 + call void @finch_str_concat(ptr %a268, ptr %a269, ptr %a270) + store { ptr, i64, i64 } %t267, ptr %a271 + call void @finch_str_drop(ptr %a271) + %t272 = load { ptr, i64, i64 }, ptr %a268 + %t273 = load { ptr, i64, i64 }, ptr %a168 + 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) + store { ptr, i64, i64 } %t272, ptr %a277 + call void @finch_str_drop(ptr %a277) + %t278 = load { ptr, i64, i64 }, ptr %a274 + store { ptr, i64, i64 } %t278, ptr %a280 + store { ptr, i64, i64 } { ptr @.str.4697, i64 2, i64 0 }, ptr %a281 + call void @finch_str_concat(ptr %a279, ptr %a280, ptr %a281) + store { ptr, i64, i64 } %t278, ptr %a282 + call void @finch_str_drop(ptr %a282) + %t283 = load { ptr, i64, i64 }, ptr %a279 + %t284 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 1 + %t285 = load { ptr, i64, i64 }, ptr %t284 + store { ptr, i64, i64 } %t283, ptr %a287 + store { ptr, i64, i64 } %t285, ptr %a288 + call void @finch_str_concat(ptr %a286, ptr %a287, ptr %a288) + store { ptr, i64, i64 } %t283, ptr %a289 + call void @finch_str_drop(ptr %a289) + %t290 = load { ptr, i64, i64 }, ptr %a286 + store { ptr, i64, i64 } %t290, ptr %a292 + store { ptr, i64, i64 } { ptr @.str.4698, i64 1, i64 0 }, ptr %a293 + call void @finch_str_concat(ptr %a291, ptr %a292, ptr %a293) + store { ptr, i64, i64 } %t290, ptr %a294 + call void @finch_str_drop(ptr %a294) + %t295 = load { ptr, i64, i64 }, ptr %a291 + %t296 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.4699, i64 2, i64 0 }, ptr %a297 + call void @finch_str_join(ptr %a298, ptr %a3, ptr %a297) + %t299 = load { ptr, i64, i64 }, ptr %a298 + store { ptr, i64, i64 } %t295, ptr %a301 + store { ptr, i64, i64 } %t299, ptr %a302 + call void @finch_str_concat(ptr %a300, ptr %a301, ptr %a302) + store { ptr, i64, i64 } %t295, ptr %a303 + call void @finch_str_drop(ptr %a303) + store { ptr, i64, i64 } %t299, ptr %a304 + call void @finch_str_drop(ptr %a304) + %t305 = load { ptr, i64, i64 }, ptr %a300 + store { ptr, i64, i64 } %t305, ptr %a307 + store { ptr, i64, i64 } { ptr @.str.4700, i64 1, i64 0 }, ptr %a308 + call void @finch_str_concat(ptr %a306, ptr %a307, ptr %a308) + store { ptr, i64, i64 } %t305, ptr %a309 + call void @finch_str_drop(ptr %a309) + %t310 = load { ptr, i64, i64 }, ptr %a306 + call void @finch.gen.endHelper(ptr %t255, %S.gen.Saved %t256, { ptr, i64, i64 } %t310) + store { ptr, i64, i64 } %t310, ptr %a311 + call void @finch_str_drop(ptr %a311) + %t312 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 1 + %t313 = load { ptr, i64, i64 }, ptr %t312 + store { ptr, i64, i64 } %t313, ptr %a314 + call void @finch_str_copy(ptr %a315, ptr %a314) + %t316 = load { ptr, i64, i64 }, ptr %a315 + call void @finch_str_drop(ptr %a247) + call void @finch_str_drop(ptr %a169) + call void @finch_str_drop(ptr %a168) + call void @finch_str_drop(ptr %a167) + call void @finch.drop.S_gen_Saved(ptr %a7) + call void @finch.drop.arr_str(ptr %a4) + call void @finch.drop.arr_str(ptr %a3) + ret { ptr, i64, i64 } %t316 +} + +define internal void @finch.drop.arr_S_gen_Abi(ptr %a) { +entry: + %a4 = alloca i64, align 16 + %t1 = load ptr, ptr %a + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 + %t3 = load i64, ptr %t2 + store i64 0, ptr %a4 + br label %n.cond7465 +n.cond7465: + %t5 = load i64, ptr %a4 + %t6 = icmp slt i64 %t5, %t3 + br i1 %t6, label %n.body7466, label %n.end7467 +n.body7466: + %t7 = getelementptr inbounds %S.gen.Abi, ptr %t1, i64 %t5 + call void @finch.drop.S_gen_Abi(ptr %t7) + %t8 = load i64, ptr %a4 + %t9 = add i64 %t8, 1 + store i64 %t9, ptr %a4 + br label %n.cond7465 +n.end7467: + call void @finch_arr_free(ptr %a) + ret void +} + +define internal void @finch.drop.S_gen_Plan(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.gen.Plan, ptr %a, i32 0, i32 0 + call void @finch.drop.S_gen_Abi(ptr %t1) + %t2 = getelementptr inbounds %S.gen.Plan, ptr %a, i32 0, i32 1 + call void @finch.drop.arr_S_gen_Abi(ptr %t2) + %t3 = getelementptr inbounds %S.gen.Plan, ptr %a, i32 0, i32 2 + call void @finch_str_drop(ptr %t3) + ret void } define internal { ptr, i64, i64 } @finch.gen.cThunk(ptr %p0, i64 %p1, %S.ast.Node %p2) { @@ -62283,274 +73571,358 @@ entry: %a21 = alloca { ptr, i64, i64 }, align 16 %a22 = alloca { ptr, i64, i64 }, align 16 %a23 = alloca { ptr, i64, i64 }, align 16 - %a25 = 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 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = 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 + %a34 = alloca { ptr, i64, i64 }, align 16 %a35 = 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 i64, align 16 + %a36 = alloca { ptr, i64, i64 }, align 16 + %a38 = alloca { ptr, i64, i64 }, align 16 + %a44 = alloca { ptr, i64, i64 }, align 16 + %a45 = alloca { ptr, i64, i64 }, align 16 + %a46 = alloca { ptr, i64, i64 }, align 16 %a48 = alloca i64, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 + %a51 = alloca i64, align 16 + %a56 = alloca { ptr, i64, i64 }, align 16 + %a57 = alloca { ptr, i64, i64 }, align 16 %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = 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 - %a88 = alloca { ptr, i64, i64 }, align 16 + %a72 = alloca { ptr, i64, i64 }, align 16 %a89 = alloca { ptr, i64, i64 }, align 16 %a90 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 + %a91 = alloca { ptr, i64, i64 }, align 16 %a93 = alloca { ptr, i64, i64 }, align 16 %a94 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca i64, align 16 - %a105 = alloca %S.ast.Type, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = 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 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = 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 + %a100 = alloca i64, align 16 + %a108 = alloca %S.ast.Type, align 16 + %a113 = alloca { ptr, i64, i64 }, align 16 + %a114 = alloca { ptr, i64, i64 }, align 16 + %a120 = alloca { ptr, i64, i64 }, align 16 + %a121 = alloca { ptr, i64, i64 }, align 16 + %a127 = 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 + %a161 = alloca { ptr, i64, i64 }, align 16 %a162 = 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 + %a166 = alloca { ptr, i64, i64 }, align 16 + %a167 = alloca { ptr, i64, i64 }, align 16 %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = 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 + %a175 = alloca { ptr, i64, i64 }, align 16 + %a176 = alloca { ptr, i64, i64 }, align 16 + %a178 = alloca { ptr, i64, i64 }, align 16 + %a187 = alloca { ptr, i64, i64 }, align 16 %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = 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 + %a203 = alloca { ptr, i64, i64 }, align 16 %a204 = alloca { ptr, i64, i64 }, align 16 - %a205 = 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 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 + %a219 = alloca { ptr, i64, i64 }, align 16 + %a220 = alloca { ptr, i64, i64 }, align 16 + %a248 = alloca { ptr, i64, i64 }, align 16 + %a249 = alloca { ptr, i64, i64 }, align 16 + %a250 = alloca { ptr, i64, i64 }, align 16 %a252 = alloca { ptr, i64, i64 }, align 16 %a253 = alloca { ptr, i64, i64 }, align 16 %a254 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca %S.gen.Plan, align 16 - %a265 = alloca %S.gen.Saved, align 16 + %a255 = 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 + %a263 = alloca { ptr, i64, i64 }, align 16 + %a264 = alloca { ptr, i64, i64 }, align 16 %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca i64, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 + %a273 = alloca %S.gen.Plan, align 16 + %a276 = alloca %S.gen.Saved, align 16 %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = 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 + %a278 = alloca i64, align 16 + %a279 = alloca { ptr, i64, i64 }, align 16 + %a287 = alloca { ptr, i64, i64 }, align 16 %a288 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca i64, align 16 - %a303 = alloca %S.ast.Type, align 16 - %a304 = alloca %S.ast.Type, align 16 - %a306 = alloca %S.ast.Type, align 16 - %a315 = alloca %S.gen.Abi, align 16 - %a316 = alloca %S.gen.Abi, align 16 - %a318 = alloca %S.gen.Abi, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = 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 - %a339 = 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 + %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 + %a295 = alloca { ptr, i64, i64 }, align 16 + %a302 = alloca { ptr, i64, i64 }, align 16 + %a303 = alloca { ptr, i64, i64 }, align 16 + %a307 = alloca i64, align 16 + %a318 = alloca %S.ast.Type, align 16 + %a319 = alloca %S.ast.Type, align 16 + %a321 = alloca %S.ast.Type, align 16 + %a330 = alloca %S.gen.Abi, align 16 + %a331 = alloca %S.gen.Abi, align 16 + %a333 = alloca %S.gen.Abi, align 16 + %a336 = alloca { ptr, i64, i64 }, align 16 + %a337 = 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 %a347 = 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 + %a356 = 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 %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 + %a372 = alloca { ptr, i64, i64 }, align 16 %a373 = alloca { ptr, i64, i64 }, align 16 + %a374 = 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 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca { ptr, i64, i64 }, align 16 - %a382 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca { ptr, i64, i64 }, align 16 - %a393 = 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 + %a389 = alloca { ptr, i64, i64 }, align 16 + %a396 = alloca { ptr, i64, i64 }, align 16 %a398 = alloca { ptr, i64, i64 }, align 16 + %a399 = 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 - %a412 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a414 = 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 + %a407 = 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 + %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 { ptr, i64, i64 }, align 16 %a430 = alloca { ptr, i64, i64 }, align 16 - %a440 = alloca { ptr, i64, i64 }, align 16 + %a431 = alloca { ptr, i64, i64 }, align 16 %a441 = alloca { ptr, i64, i64 }, align 16 - %a446 = alloca { ptr, i64, i64 }, align 16 - %a450 = alloca i64, align 16 + %a442 = alloca { ptr, i64, i64 }, align 16 + %a443 = alloca { ptr, i64, i64 }, align 16 + %a444 = alloca { ptr, i64, i64 }, align 16 + %a451 = alloca { ptr, i64, i64 }, align 16 + %a453 = 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 + %a459 = alloca { ptr, i64, i64 }, align 16 + %a460 = alloca { ptr, i64, i64 }, align 16 + %a461 = alloca { ptr, i64, i64 }, align 16 %a462 = alloca { ptr, i64, i64 }, align 16 %a463 = alloca { ptr, i64, i64 }, align 16 %a464 = alloca { ptr, i64, i64 }, align 16 - %a467 = 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 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a489 = alloca { ptr, i64, i64 }, align 16 - %a490 = alloca { ptr, i64, i64 }, align 16 - %a491 = alloca { ptr, i64, i64 }, align 16 - %a495 = alloca { ptr, i64, i64 }, align 16 - %a496 = alloca { ptr, i64, i64 }, align 16 + %a465 = 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 + %a485 = alloca i64, align 16 %a497 = alloca { ptr, i64, i64 }, align 16 + %a498 = 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 + %a502 = alloca { ptr, i64, i64 }, align 16 + %a504 = 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 %a508 = alloca { ptr, i64, i64 }, align 16 - %a509 = alloca { ptr, i64, i64 }, align 16 - %a520 = alloca { ptr, i64, i64 }, align 16 - %a521 = alloca { ptr, i64, i64 }, align 16 - %a522 = alloca { ptr, i64, i64 }, align 16 - %a530 = alloca { ptr, i64, i64 }, align 16 - %a531 = alloca { ptr, i64, i64 }, align 16 - %a532 = alloca { ptr, i64, i64 }, align 16 - %a545 = alloca { ptr, i64, i64 }, align 16 + %a524 = alloca { ptr, i64, i64 }, align 16 + %a526 = 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 + %a533 = alloca { ptr, i64, i64 }, align 16 + %a534 = alloca { ptr, i64, i64 }, align 16 + %a535 = alloca { ptr, i64, i64 }, align 16 + %a537 = alloca { ptr, i64, i64 }, align 16 + %a538 = alloca { ptr, i64, i64 }, align 16 + %a539 = alloca { ptr, i64, i64 }, align 16 + %a540 = alloca { ptr, i64, i64 }, align 16 + %a544 = alloca { ptr, i64, i64 }, align 16 %a546 = alloca { ptr, i64, i64 }, align 16 %a547 = alloca { ptr, i64, i64 }, align 16 + %a548 = alloca { ptr, i64, i64 }, align 16 %a549 = alloca { ptr, i64, i64 }, align 16 %a550 = alloca { ptr, i64, i64 }, align 16 - %a551 = alloca { ptr, i64, i64 }, align 16 + %a553 = 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 - %a558 = 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 + %a555 = 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 + %a567 = alloca { ptr, i64, i64 }, align 16 %a575 = alloca { ptr, i64, i64 }, align 16 %a576 = alloca { ptr, i64, i64 }, align 16 %a577 = alloca { ptr, i64, i64 }, align 16 - %a591 = alloca { ptr, i64, i64 }, align 16 - %a592 = alloca { ptr, i64, i64 }, align 16 + %a578 = alloca { ptr, i64, i64 }, align 16 + %a579 = alloca { ptr, i64, i64 }, align 16 + %a580 = alloca { ptr, i64, i64 }, align 16 %a593 = alloca { ptr, i64, i64 }, align 16 + %a594 = alloca { ptr, i64, i64 }, align 16 %a595 = alloca { ptr, i64, i64 }, align 16 %a596 = alloca { ptr, i64, i64 }, align 16 %a597 = alloca { ptr, i64, i64 }, align 16 + %a599 = 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 - %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 + %a608 = 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 - %a613 = alloca { ptr, i64, i64 }, align 16 - %a614 = alloca { ptr, i64, i64 }, align 16 - %a615 = 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 %a621 = alloca { ptr, i64, i64 }, align 16 %a622 = alloca { ptr, i64, i64 }, align 16 - %a626 = alloca { ptr, i64, i64 }, align 16 + %a623 = alloca { ptr, i64, i64 }, align 16 + %a624 = alloca { ptr, i64, i64 }, align 16 %a627 = 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 + %a633 = 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 + %a650 = 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 - %a668 = alloca { ptr, i64, i64 }, align 16 - %a669 = alloca { ptr, i64, i64 }, align 16 + %a655 = alloca { ptr, i64, i64 }, align 16 + %a659 = 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 + %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 %a670 = alloca { ptr, i64, i64 }, align 16 - %a672 = alloca { ptr, i64, i64 }, align 16 + %a671 = alloca { ptr, i64, i64 }, align 16 %a673 = 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 + %a677 = 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 %a684 = alloca { ptr, i64, i64 }, align 16 - %a695 = alloca { ptr, i64, i64 }, align 16 - %a696 = alloca { ptr, i64, i64 }, align 16 - %a697 = 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 - %a706 = alloca { ptr, i64, i64 }, align 16 + %a685 = alloca { ptr, i64, i64 }, align 16 + %a689 = alloca { ptr, i64, i64 }, align 16 + %a690 = alloca { ptr, i64, i64 }, align 16 %a707 = alloca { ptr, i64, i64 }, align 16 %a708 = alloca { ptr, i64, i64 }, align 16 %a713 = alloca { ptr, i64, i64 }, align 16 %a714 = alloca { ptr, i64, i64 }, align 16 - %a715 = 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 - %a723 = alloca { ptr, i64, i64 }, align 16 - %a724 = alloca { ptr, i64, i64 }, align 16 - %a725 = alloca { ptr, i64, i64 }, align 16 - %a727 = alloca { ptr, i64, i64 }, align 16 - %a728 = alloca { ptr, i64, i64 }, align 16 %a729 = 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 + %a730 = 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 - %a738 = 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 %a742 = 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 - %a749 = alloca { ptr, i64, i64 }, align 16 %a750 = alloca { ptr, i64, i64 }, align 16 + %a751 = 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 + %a762 = 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 + %a771 = 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 + %a781 = alloca { ptr, i64, i64 }, align 16 + %a782 = alloca { ptr, i64, i64 }, align 16 + %a783 = alloca { ptr, i64, i64 }, align 16 + %a784 = alloca { ptr, i64, i64 }, align 16 + %a785 = alloca { ptr, i64, i64 }, align 16 + %a787 = alloca { ptr, i64, i64 }, align 16 + %a791 = alloca { ptr, i64, i64 }, align 16 + %a792 = alloca { ptr, i64, i64 }, align 16 + %a793 = 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 + %a798 = alloca { ptr, i64, i64 }, align 16 + %a802 = alloca { ptr, i64, i64 }, align 16 + %a803 = alloca { ptr, i64, i64 }, align 16 + %a804 = alloca { ptr, i64, i64 }, align 16 + %a805 = alloca { ptr, i64, i64 }, align 16 + %a807 = 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 + %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 + %a824 = alloca { ptr, i64, i64 }, align 16 + %a825 = 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 + %a833 = alloca { ptr, i64, i64 }, align 16 + %a834 = alloca { ptr, i64, i64 }, align 16 + %a835 = alloca { ptr, i64, i64 }, align 16 + %a836 = alloca { ptr, i64, i64 }, align 16 + %a838 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store i64 %p1, ptr %a2 store %S.ast.Node %p2, ptr %a3 %t4 = load ptr, ptr %a1 %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic6975, label %ok6976 -panic6975: - call void @finch_panic(ptr @.str.4532, i64 4012, ptr @.str.4533) + br i1 %t5, label %panic7343, label %ok7344 +panic7343: + call void @finch_panic(ptr @.str.4701, i64 4299, ptr @.str.4702) unreachable -ok6976: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 14 +ok7344: + %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 15 %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 %range6977, label %inrange6978 -range6977: - call void @finch_panic_index(ptr @.str.4534, i64 4012, i64 %t7, i64 %t9) + br i1 %t10, label %range7345, label %inrange7346 +range7345: + call void @finch_panic_index(ptr @.str.4703, i64 4299, i64 %t7, i64 %t9) unreachable -inrange6978: +inrange7346: %t11 = extractvalue { ptr, i64, i64 } %t8, 0 %t12 = getelementptr inbounds %S.gen.FnSig, ptr %t11, i64 %t7 %t13 = load %S.gen.FnSig, ptr %t12 @@ -62561,1032 +73933,1217 @@ inrange6978: %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.4535, i64 9, i64 0 }, ptr %a22 + store { ptr, i64, i64 } { ptr @.str.4704, 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.4536, 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 - %t30 = load { ptr, i64, i64 }, ptr %t29 - store { ptr, i64, i64 } %t28, 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 %a35 - %t36 = load ptr, ptr %a1 - %t37 = icmp eq ptr %t36, null - br i1 %t37, label %panic6979, label %ok6980 -panic6979: - call void @finch_panic(ptr @.str.4537, i64 4014, ptr @.str.4538) + store { ptr, i64, i64 } %t20, ptr %a24 + call void @finch_str_drop(ptr %a24) + %t25 = load { ptr, i64, i64 }, ptr %a21 + store { ptr, i64, i64 } %t25, ptr %a27 + store { ptr, i64, i64 } { ptr @.str.4705, i64 1, i64 0 }, ptr %a28 + call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28) + store { ptr, i64, i64 } %t25, ptr %a29 + call void @finch_str_drop(ptr %a29) + %t30 = load { ptr, i64, i64 }, ptr %a26 + %t31 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 1 + %t32 = load { ptr, i64, i64 }, ptr %t31 + store { ptr, i64, i64 } %t30, ptr %a34 + store { ptr, i64, i64 } %t32, ptr %a35 + call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) + store { ptr, i64, i64 } %t30, ptr %a36 + call void @finch_str_drop(ptr %a36) + %t37 = load { ptr, i64, i64 }, ptr %a33 + store { ptr, i64, i64 } %t37, ptr %a38 + %t39 = load ptr, ptr %a1 + %t40 = icmp eq ptr %t39, null + br i1 %t40, label %panic7347, label %ok7348 +panic7347: + call void @finch_panic(ptr @.str.4706, i64 4301, ptr @.str.4707) unreachable -ok6980: - %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.4539, 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 - store i64 -1, ptr %a45 - %t46 = load i64, ptr %t39 - %t47 = load ptr, ptr %t38 - store i64 0, ptr %a48 - br label %find.cond6981 -find.cond6981: - %t49 = load i64, ptr %a48 - %t50 = icmp slt i64 %t49, %t46 - br i1 %t50, label %find.body6982, label %find.end6985 -find.body6982: - %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.hit6983, label %find.next6984 -find.hit6983: - store i64 %t49, ptr %a45 - br label %find.end6985 -find.next6984: - %t57 = add i64 %t49, 1 - store i64 %t57, ptr %a48 - br label %find.cond6981 -find.end6985: - %t58 = load i64, ptr %a45 - %t59 = icmp sge i64 %t58, 0 - br i1 %t59, label %then6986, label %endif6988 -then6986: - %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 -endif6988: - %t64 = load ptr, ptr %a1 - %t65 = icmp eq ptr %t64, null - br i1 %t65, label %panic6989, label %ok6990 -panic6989: - call void @finch_panic(ptr @.str.4540, i64 4017, ptr @.str.4541) +ok7348: + %t41 = getelementptr inbounds %S.gen.Gen, ptr %t39, i32 0, i32 39 + %t42 = getelementptr inbounds { ptr, i64, i64 }, ptr %t41, i32 0, i32 1 + %t43 = load { ptr, i64, i64 }, ptr %a38 + store { ptr, i64, i64 } { ptr @.str.4708, i64 2, 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 i64 -1, ptr %a48 + %t49 = load i64, ptr %t42 + %t50 = load ptr, ptr %t41 + store i64 0, ptr %a51 + br label %find.cond7349 +find.cond7349: + %t52 = load i64, ptr %a51 + %t53 = icmp slt i64 %t52, %t49 + br i1 %t53, label %find.body7350, label %find.end7353 +find.body7350: + %t54 = getelementptr inbounds { ptr, i64, i64 }, ptr %t50, i64 %t52 + %t55 = load { ptr, i64, i64 }, ptr %t54 + store { ptr, i64, i64 } %t55, ptr %a56 + store { ptr, i64, i64 } %t47, ptr %a57 + %t58 = call i32 @finch_str_eq(ptr %a56, ptr %a57) + %t59 = icmp ne i32 %t58, 0 + br i1 %t59, label %find.hit7351, label %find.next7352 +find.hit7351: + store i64 %t52, ptr %a48 + br label %find.end7353 +find.next7352: + %t60 = add i64 %t52, 1 + store i64 %t60, ptr %a51 + br label %find.cond7349 +find.end7353: + store { ptr, i64, i64 } %t47, ptr %a61 + call void @finch_str_drop(ptr %a61) + %t62 = load i64, ptr %a48 + %t63 = icmp sge i64 %t62, 0 + br i1 %t63, label %then7354, label %endif7356 +then7354: + %t64 = load { ptr, i64, i64 }, ptr %a38 + call void @finch.drop.S_gen_FnSig(ptr %a17) + ret { ptr, i64, i64 } %t64 +endif7356: + %t65 = load ptr, ptr %a1 + %t66 = icmp eq ptr %t65, null + br i1 %t66, label %panic7357, label %ok7358 +panic7357: + call void @finch_panic(ptr @.str.4709, i64 4304, ptr @.str.4710) unreachable -ok6990: - %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.4542, 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 - %t73 = load i64, ptr %t67 - %t74 = add i64 %t73, 1 - call void @finch_arr_reserve(ptr %t66, i64 %t74, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t75 = load ptr, ptr %t66 - %t76 = getelementptr inbounds { ptr, i64, i64 }, ptr %t75, i64 %t73 - store { ptr, i64, i64 } %t72, ptr %t76 - store i64 %t74, ptr %t67 - %t77 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 2 - %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.from6991 -logic.from6991: - br i1 %t80, label %logic.end6993, label %logic.rhs6992 -logic.rhs6992: - %t81 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 9 - %t82 = load i1, ptr %t81 - br label %logic.rend6994 -logic.rend6994: - br label %logic.end6993 -logic.end6993: - %t83 = phi i1 [ true, %logic.from6991 ], [ %t82, %logic.rend6994 ] - br i1 %t83, label %then6995, label %endif6997 -then6995: - %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.4543, 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.4544, 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 %endif6997 -endif6997: - %t96 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 13 - store i64 0, ptr %a97 - br label %each.cond6998 -each.cond6998: - %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.body6999, label %each.end7001 -each.body6999: - %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.from7002 -logic.from7002: - br i1 %t107, label %logic.end7004, label %logic.rhs7003 -logic.rhs7003: - %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.4545, 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.rend7005 -logic.rend7005: - br label %logic.end7004 -logic.end7004: - %t114 = phi i1 [ true, %logic.from7002 ], [ %t113, %logic.rend7005 ] - br label %logic.from7006 -logic.from7006: - br i1 %t114, label %logic.end7008, label %logic.rhs7007 -logic.rhs7007: - %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.4546, 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.rend7009 -logic.rend7009: - br label %logic.end7008 -logic.end7008: - %t121 = phi i1 [ true, %logic.from7006 ], [ %t120, %logic.rend7009 ] - br label %logic.from7010 -logic.from7010: - br i1 %t121, label %logic.end7012, label %logic.rhs7011 -logic.rhs7011: - %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.4547, 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.rend7013 -logic.rend7013: - br label %logic.end7012 -logic.end7012: - %t128 = phi i1 [ true, %logic.from7010 ], [ %t127, %logic.rend7013 ] - br label %logic.from7014 -logic.from7014: - br i1 %t128, label %logic.end7016, label %logic.rhs7015 -logic.rhs7015: - %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.4548, 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.from7017 -logic.from7017: - br i1 %t134, label %logic.rhs7018, label %logic.end7019 -logic.rhs7018: - %t135 = load ptr, ptr %a1 - %t136 = icmp eq ptr %t135, null - br i1 %t136, label %panic7020, label %ok7021 -panic7020: - call void @finch_panic(ptr @.str.4549, i64 4022, ptr @.str.4550) - unreachable -ok7021: - %t137 = getelementptr inbounds %S.gen.Gen, ptr %t135, i32 0, i32 15 +ok7358: + %t67 = getelementptr inbounds %S.gen.Gen, ptr %t65, i32 0, i32 39 + %t68 = getelementptr inbounds { ptr, i64, i64 }, ptr %t67, i32 0, i32 1 + %t69 = load { ptr, i64, i64 }, ptr %a38 + store { ptr, i64, i64 } { ptr @.str.4711, i64 2, 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 + %t74 = load i64, ptr %t68 + %t75 = add i64 %t74, 1 + call void @finch_arr_reserve(ptr %t67, i64 %t75, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t76 = load ptr, ptr %t67 + %t77 = getelementptr inbounds { ptr, i64, i64 }, ptr %t76, i64 %t74 + store { ptr, i64, i64 } %t73, ptr %t77 + store i64 %t75, ptr %t68 + %t78 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 2 + %t79 = getelementptr inbounds { ptr, i64, i64 }, ptr %t78, i32 0, i32 1 + %t80 = load i64, ptr %t79 + %t81 = icmp sgt i64 %t80, 0 + br label %logic.from7359 +logic.from7359: + br i1 %t81, label %logic.end7361, label %logic.rhs7360 +logic.rhs7360: + %t82 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 9 + %t83 = load i1, ptr %t82 + br label %logic.rend7362 +logic.rend7362: + br label %logic.end7361 +logic.end7361: + %t84 = phi i1 [ true, %logic.from7359 ], [ %t83, %logic.rend7362 ] + br i1 %t84, label %then7363, label %endif7365 +then7363: + %t85 = load ptr, ptr %a1 + %t86 = load %S.ast.Node, ptr %a3 + %t87 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 1 + %t88 = load { ptr, i64, i64 }, ptr %t87 + store { ptr, i64, i64 } { ptr @.str.4712, i64 5, i64 0 }, ptr %a90 + store { ptr, i64, i64 } %t88, ptr %a91 + call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) + %t92 = load { ptr, i64, i64 }, ptr %a89 + store { ptr, i64, i64 } %t92, ptr %a94 + store { ptr, i64, i64 } { ptr @.str.4713, i64 81, i64 0 }, ptr %a95 + call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) + store { ptr, i64, i64 } %t92, ptr %a96 + call void @finch_str_drop(ptr %a96) + %t97 = load { ptr, i64, i64 }, ptr %a93 + call void @finch.gen.fail(ptr %t85, %S.ast.Node %t86, { ptr, i64, i64 } %t97) + store { ptr, i64, i64 } %t97, ptr %a98 + call void @finch_str_drop(ptr %a98) + br label %endif7365 +endif7365: + %t99 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 13 + store i64 0, ptr %a100 + br label %each.cond7366 +each.cond7366: + %t101 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i32 0, i32 1 + %t102 = load i64, ptr %t101 + %t103 = load i64, ptr %a100 + %t104 = icmp slt i64 %t103, %t102 + br i1 %t104, label %each.body7367, label %each.end7369 +each.body7367: + %t105 = load ptr, ptr %t99 + %t106 = getelementptr inbounds %S.ast.Type, ptr %t105, i64 %t103 + %t107 = load %S.ast.Type, ptr %t106 + store %S.ast.Type %t107, ptr %a108 + %t109 = load %S.ast.Type, ptr %a108 + %t110 = call i1 @finch.gen.isNumber(%S.ast.Type %t109) + br label %logic.from7370 +logic.from7370: + br i1 %t110, label %logic.end7372, label %logic.rhs7371 +logic.rhs7371: + %t111 = getelementptr inbounds %S.ast.Type, ptr %a108, i32 0, i32 0 + %t112 = load { ptr, i64, i64 }, ptr %t111 + store { ptr, i64, i64 } %t112, ptr %a113 + store { ptr, i64, i64 } { ptr @.str.4714, i64 4, i64 0 }, ptr %a114 + %t115 = call i32 @finch_str_eq(ptr %a113, ptr %a114) + %t116 = icmp ne i32 %t115, 0 + br label %logic.rend7373 +logic.rend7373: + br label %logic.end7372 +logic.end7372: + %t117 = phi i1 [ true, %logic.from7370 ], [ %t116, %logic.rend7373 ] + br label %logic.from7374 +logic.from7374: + br i1 %t117, label %logic.end7376, label %logic.rhs7375 +logic.rhs7375: + %t118 = getelementptr inbounds %S.ast.Type, ptr %a108, i32 0, i32 0 + %t119 = load { ptr, i64, i64 }, ptr %t118 + store { ptr, i64, i64 } %t119, ptr %a120 + store { ptr, i64, i64 } { ptr @.str.4715, i64 4, i64 0 }, ptr %a121 + %t122 = call i32 @finch_str_eq(ptr %a120, ptr %a121) + %t123 = icmp ne i32 %t122, 0 + br label %logic.rend7377 +logic.rend7377: + br label %logic.end7376 +logic.end7376: + %t124 = phi i1 [ true, %logic.from7374 ], [ %t123, %logic.rend7377 ] + br label %logic.from7378 +logic.from7378: + br i1 %t124, label %logic.end7380, label %logic.rhs7379 +logic.rhs7379: + %t125 = getelementptr inbounds %S.ast.Type, ptr %a108, i32 0, i32 0 + %t126 = load { ptr, i64, i64 }, ptr %t125 + store { ptr, i64, i64 } %t126, ptr %a127 + store { ptr, i64, i64 } { ptr @.str.4716, i64 3, i64 0 }, ptr %a128 + %t129 = call i32 @finch_str_eq(ptr %a127, ptr %a128) + %t130 = icmp ne i32 %t129, 0 + br label %logic.rend7381 +logic.rend7381: + br label %logic.end7380 +logic.end7380: + %t131 = phi i1 [ true, %logic.from7378 ], [ %t130, %logic.rend7381 ] + br label %logic.from7382 +logic.from7382: + br i1 %t131, label %logic.end7384, label %logic.rhs7383 +logic.rhs7383: + %t132 = getelementptr inbounds %S.ast.Type, ptr %a108, i32 0, i32 0 + %t133 = load { ptr, i64, i64 }, ptr %t132 + store { ptr, i64, i64 } %t133, ptr %a134 + store { ptr, i64, i64 } { ptr @.str.4717, i64 6, i64 0 }, ptr %a135 + %t136 = call i32 @finch_str_eq(ptr %a134, ptr %a135) + %t137 = icmp ne i32 %t136, 0 + br label %logic.from7385 +logic.from7385: + br i1 %t137, label %logic.rhs7386, label %logic.end7387 +logic.rhs7386: %t138 = load ptr, ptr %a1 - %t139 = getelementptr inbounds %S.ast.Type, ptr %a105, i32 0, i32 3 - %t140 = load { ptr, i64, i64 }, ptr %t139 - %t141 = getelementptr inbounds %S.ast.Type, ptr %a105, i32 0, i32 2 - %t142 = load { ptr, i64, i64 }, ptr %t141 - %t143 = call i64 @finch.gen.findStruct(ptr %t138, { ptr, i64, i64 } %t140, { ptr, i64, i64 } %t142) - %t144 = load { ptr, i64, i64 }, ptr %t137 - %t145 = extractvalue { ptr, i64, i64 } %t144, 1 - %t146 = icmp uge i64 %t143, %t145 - br i1 %t146, label %range7022, label %inrange7023 -range7022: - call void @finch_panic_index(ptr @.str.4551, i64 4022, i64 %t143, i64 %t145) + %t139 = icmp eq ptr %t138, null + br i1 %t139, label %panic7388, label %ok7389 +panic7388: + call void @finch_panic(ptr @.str.4718, i64 4309, ptr @.str.4719) unreachable -inrange7023: - %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.rend7024 -logic.rend7024: - br label %logic.end7019 -logic.end7019: - %t151 = phi i1 [ false, %logic.from7017 ], [ %t150, %logic.rend7024 ] - br label %logic.rend7025 -logic.rend7025: - br label %logic.end7016 -logic.end7016: - %t152 = phi i1 [ true, %logic.from7014 ], [ %t151, %logic.rend7025 ] - %t153 = xor i1 %t152, true - br i1 %t153, label %then7026, label %endif7028 -then7026: - %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.4552, 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.4553, 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 - %t167 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t166) - store { ptr, i64, i64 } %t165, 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 - call void @finch.gen.fail(ptr %t154, %S.ast.Node %t155, { ptr, i64, i64 } %t171) - br label %endif7028 -endif7028: - br label %each.step7000 -each.step7000: - %t172 = load i64, ptr %a97 - %t173 = add i64 %t172, 1 - store i64 %t173, ptr %a97 - br label %each.cond6998 -each.end7001: - %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.from7029 -logic.from7029: - br i1 %t176, label %logic.end7031, label %logic.rhs7030 -logic.rhs7030: - %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.4554, 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.rend7032 -logic.rend7032: - br label %logic.end7031 -logic.end7031: - %t184 = phi i1 [ true, %logic.from7029 ], [ %t183, %logic.rend7032 ] - br label %logic.from7033 -logic.from7033: - br i1 %t184, label %logic.end7035, label %logic.rhs7034 -logic.rhs7034: - %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.4555, 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.rend7036 -logic.rend7036: - br label %logic.end7035 -logic.end7035: - %t192 = phi i1 [ true, %logic.from7033 ], [ %t191, %logic.rend7036 ] - br label %logic.from7037 -logic.from7037: - br i1 %t192, label %logic.end7039, label %logic.rhs7038 -logic.rhs7038: - %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.4556, 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.rend7040 -logic.rend7040: - br label %logic.end7039 -logic.end7039: - %t200 = phi i1 [ true, %logic.from7037 ], [ %t199, %logic.rend7040 ] - br label %logic.from7041 -logic.from7041: - br i1 %t200, label %logic.end7043, label %logic.rhs7042 -logic.rhs7042: - %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.4557, 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.rend7044 -logic.rend7044: - br label %logic.end7043 -logic.end7043: - %t208 = phi i1 [ true, %logic.from7041 ], [ %t207, %logic.rend7044 ] - br label %logic.from7045 -logic.from7045: - br i1 %t208, label %logic.end7047, label %logic.rhs7046 -logic.rhs7046: - %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.4558, 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.from7048 -logic.from7048: - br i1 %t215, label %logic.rhs7049, label %logic.end7050 -logic.rhs7049: - %t216 = load ptr, ptr %a1 - %t217 = icmp eq ptr %t216, null - br i1 %t217, label %panic7051, label %ok7052 -panic7051: - call void @finch_panic(ptr @.str.4559, i64 4026, ptr @.str.4560) +ok7389: + %t140 = getelementptr inbounds %S.gen.Gen, ptr %t138, i32 0, i32 16 + %t141 = load ptr, ptr %a1 + %t142 = getelementptr inbounds %S.ast.Type, ptr %a108, i32 0, i32 3 + %t143 = load { ptr, i64, i64 }, ptr %t142 + %t144 = getelementptr inbounds %S.ast.Type, ptr %a108, i32 0, i32 2 + %t145 = load { ptr, i64, i64 }, ptr %t144 + %t146 = call i64 @finch.gen.findStruct(ptr %t141, { ptr, i64, i64 } %t143, { ptr, i64, i64 } %t145) + %t147 = load { ptr, i64, i64 }, ptr %t140 + %t148 = extractvalue { ptr, i64, i64 } %t147, 1 + %t149 = icmp uge i64 %t146, %t148 + br i1 %t149, label %range7390, label %inrange7391 +range7390: + call void @finch_panic_index(ptr @.str.4720, i64 4309, i64 %t146, i64 %t148) unreachable -ok7052: - %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 - %t221 = getelementptr inbounds %S.ast.Type, ptr %t220, i32 0, i32 3 - %t222 = load { ptr, i64, i64 }, ptr %t221 - %t223 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t224 = getelementptr inbounds %S.ast.Type, ptr %t223, i32 0, i32 2 - %t225 = load { ptr, i64, i64 }, ptr %t224 - %t226 = call i64 @finch.gen.findStruct(ptr %t219, { ptr, i64, i64 } %t222, { ptr, i64, i64 } %t225) - %t227 = load { ptr, i64, i64 }, ptr %t218 - %t228 = extractvalue { ptr, i64, i64 } %t227, 1 - %t229 = icmp uge i64 %t226, %t228 - br i1 %t229, label %range7053, label %inrange7054 -range7053: - call void @finch_panic_index(ptr @.str.4561, i64 4026, i64 %t226, i64 %t228) +inrange7391: + %t150 = extractvalue { ptr, i64, i64 } %t147, 0 + %t151 = getelementptr inbounds %S.gen.StructDef, ptr %t150, i64 %t146 + %t152 = getelementptr inbounds %S.gen.StructDef, ptr %t151, i32 0, i32 2 + %t153 = load i1, ptr %t152 + br label %logic.rend7392 +logic.rend7392: + br label %logic.end7387 +logic.end7387: + %t154 = phi i1 [ false, %logic.from7385 ], [ %t153, %logic.rend7392 ] + br label %logic.rend7393 +logic.rend7393: + br label %logic.end7384 +logic.end7384: + %t155 = phi i1 [ true, %logic.from7382 ], [ %t154, %logic.rend7393 ] + %t156 = xor i1 %t155, true + br i1 %t156, label %then7394, label %endif7396 +then7394: + %t157 = load ptr, ptr %a1 + %t158 = load %S.ast.Node, ptr %a3 + %t159 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 1 + %t160 = load { ptr, i64, i64 }, ptr %t159 + store { ptr, i64, i64 } { ptr @.str.4721, i64 5, i64 0 }, ptr %a162 + store { ptr, i64, i64 } %t160, ptr %a163 + call void @finch_str_concat(ptr %a161, ptr %a162, ptr %a163) + %t164 = load { ptr, i64, i64 }, ptr %a161 + store { ptr, i64, i64 } %t164, ptr %a166 + store { ptr, i64, i64 } { ptr @.str.4722, i64 95, i64 0 }, ptr %a167 + call void @finch_str_concat(ptr %a165, ptr %a166, ptr %a167) + store { ptr, i64, i64 } %t164, ptr %a168 + call void @finch_str_drop(ptr %a168) + %t169 = load { ptr, i64, i64 }, ptr %a165 + %t170 = load %S.ast.Type, ptr %a108 + %t171 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t170) + store { ptr, i64, i64 } %t169, ptr %a173 + store { ptr, i64, i64 } %t171, ptr %a174 + call void @finch_str_concat(ptr %a172, ptr %a173, ptr %a174) + store { ptr, i64, i64 } %t169, ptr %a175 + call void @finch_str_drop(ptr %a175) + store { ptr, i64, i64 } %t171, ptr %a176 + call void @finch_str_drop(ptr %a176) + %t177 = load { ptr, i64, i64 }, ptr %a172 + call void @finch.gen.fail(ptr %t157, %S.ast.Node %t158, { ptr, i64, i64 } %t177) + store { ptr, i64, i64 } %t177, ptr %a178 + call void @finch_str_drop(ptr %a178) + br label %endif7396 +endif7396: + br label %each.step7368 +each.step7368: + %t179 = load i64, ptr %a100 + %t180 = add i64 %t179, 1 + store i64 %t180, ptr %a100 + br label %each.cond7366 +each.end7369: + %t181 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 + %t182 = load %S.ast.Type, ptr %t181 + %t183 = call i1 @finch.gen.isNumber(%S.ast.Type %t182) + br label %logic.from7397 +logic.from7397: + br i1 %t183, label %logic.end7399, label %logic.rhs7398 +logic.rhs7398: + %t184 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 + %t185 = getelementptr inbounds %S.ast.Type, ptr %t184, i32 0, i32 0 + %t186 = load { ptr, i64, i64 }, ptr %t185 + store { ptr, i64, i64 } %t186, ptr %a187 + store { ptr, i64, i64 } { ptr @.str.4723, i64 4, i64 0 }, ptr %a188 + %t189 = call i32 @finch_str_eq(ptr %a187, ptr %a188) + %t190 = icmp ne i32 %t189, 0 + br label %logic.rend7400 +logic.rend7400: + br label %logic.end7399 +logic.end7399: + %t191 = phi i1 [ true, %logic.from7397 ], [ %t190, %logic.rend7400 ] + br label %logic.from7401 +logic.from7401: + br i1 %t191, label %logic.end7403, label %logic.rhs7402 +logic.rhs7402: + %t192 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 + %t193 = getelementptr inbounds %S.ast.Type, ptr %t192, i32 0, i32 0 + %t194 = load { ptr, i64, i64 }, ptr %t193 + store { ptr, i64, i64 } %t194, ptr %a195 + store { ptr, i64, i64 } { ptr @.str.4724, i64 4, i64 0 }, ptr %a196 + %t197 = call i32 @finch_str_eq(ptr %a195, ptr %a196) + %t198 = icmp ne i32 %t197, 0 + br label %logic.rend7404 +logic.rend7404: + br label %logic.end7403 +logic.end7403: + %t199 = phi i1 [ true, %logic.from7401 ], [ %t198, %logic.rend7404 ] + br label %logic.from7405 +logic.from7405: + br i1 %t199, label %logic.end7407, label %logic.rhs7406 +logic.rhs7406: + %t200 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 + %t201 = getelementptr inbounds %S.ast.Type, ptr %t200, i32 0, i32 0 + %t202 = load { ptr, i64, i64 }, ptr %t201 + store { ptr, i64, i64 } %t202, ptr %a203 + store { ptr, i64, i64 } { ptr @.str.4725, i64 3, i64 0 }, ptr %a204 + %t205 = call i32 @finch_str_eq(ptr %a203, ptr %a204) + %t206 = icmp ne i32 %t205, 0 + br label %logic.rend7408 +logic.rend7408: + br label %logic.end7407 +logic.end7407: + %t207 = phi i1 [ true, %logic.from7405 ], [ %t206, %logic.rend7408 ] + br label %logic.from7409 +logic.from7409: + br i1 %t207, label %logic.end7411, label %logic.rhs7410 +logic.rhs7410: + %t208 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 + %t209 = getelementptr inbounds %S.ast.Type, ptr %t208, i32 0, i32 0 + %t210 = load { ptr, i64, i64 }, ptr %t209 + store { ptr, i64, i64 } %t210, ptr %a211 + store { ptr, i64, i64 } { ptr @.str.4726, i64 4, i64 0 }, ptr %a212 + %t213 = call i32 @finch_str_eq(ptr %a211, ptr %a212) + %t214 = icmp ne i32 %t213, 0 + br label %logic.rend7412 +logic.rend7412: + br label %logic.end7411 +logic.end7411: + %t215 = phi i1 [ true, %logic.from7409 ], [ %t214, %logic.rend7412 ] + br label %logic.from7413 +logic.from7413: + br i1 %t215, label %logic.end7415, label %logic.rhs7414 +logic.rhs7414: + %t216 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 + %t217 = getelementptr inbounds %S.ast.Type, ptr %t216, i32 0, i32 0 + %t218 = load { ptr, i64, i64 }, ptr %t217 + store { ptr, i64, i64 } %t218, ptr %a219 + store { ptr, i64, i64 } { ptr @.str.4727, i64 6, i64 0 }, ptr %a220 + %t221 = call i32 @finch_str_eq(ptr %a219, ptr %a220) + %t222 = icmp ne i32 %t221, 0 + br label %logic.from7416 +logic.from7416: + br i1 %t222, label %logic.rhs7417, label %logic.end7418 +logic.rhs7417: + %t223 = load ptr, ptr %a1 + %t224 = icmp eq ptr %t223, null + br i1 %t224, label %panic7419, label %ok7420 +panic7419: + call void @finch_panic(ptr @.str.4728, i64 4313, ptr @.str.4729) unreachable -inrange7054: - %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.rend7055 -logic.rend7055: - br label %logic.end7050 -logic.end7050: - %t234 = phi i1 [ false, %logic.from7048 ], [ %t233, %logic.rend7055 ] - br label %logic.rend7056 -logic.rend7056: - br label %logic.end7047 -logic.end7047: - %t235 = phi i1 [ true, %logic.from7045 ], [ %t234, %logic.rend7056 ] - %t236 = xor i1 %t235, true - br i1 %t236, label %then7057, label %endif7059 -then7057: - %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.4562, 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.4563, 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 - %t250 = load %S.ast.Type, ptr %t249 - %t251 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t250) - store { ptr, i64, i64 } %t248, ptr %a253 - store { ptr, i64, i64 } %t251, ptr %a254 +ok7420: + %t225 = getelementptr inbounds %S.gen.Gen, ptr %t223, i32 0, i32 16 + %t226 = load ptr, ptr %a1 + %t227 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 + %t228 = getelementptr inbounds %S.ast.Type, ptr %t227, i32 0, i32 3 + %t229 = load { ptr, i64, i64 }, ptr %t228 + %t230 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 + %t231 = getelementptr inbounds %S.ast.Type, ptr %t230, i32 0, i32 2 + %t232 = load { ptr, i64, i64 }, ptr %t231 + %t233 = call i64 @finch.gen.findStruct(ptr %t226, { ptr, i64, i64 } %t229, { ptr, i64, i64 } %t232) + %t234 = load { ptr, i64, i64 }, ptr %t225 + %t235 = extractvalue { ptr, i64, i64 } %t234, 1 + %t236 = icmp uge i64 %t233, %t235 + br i1 %t236, label %range7421, label %inrange7422 +range7421: + call void @finch_panic_index(ptr @.str.4730, i64 4313, i64 %t233, i64 %t235) + unreachable +inrange7422: + %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 2 + %t240 = load i1, ptr %t239 + br label %logic.rend7423 +logic.rend7423: + br label %logic.end7418 +logic.end7418: + %t241 = phi i1 [ false, %logic.from7416 ], [ %t240, %logic.rend7423 ] + br label %logic.rend7424 +logic.rend7424: + br label %logic.end7415 +logic.end7415: + %t242 = phi i1 [ true, %logic.from7413 ], [ %t241, %logic.rend7424 ] + %t243 = xor i1 %t242, true + br i1 %t243, label %then7425, label %endif7427 +then7425: + %t244 = load ptr, ptr %a1 + %t245 = load %S.ast.Node, ptr %a3 + %t246 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 1 + %t247 = load { ptr, i64, i64 }, ptr %t246 + store { ptr, i64, i64 } { ptr @.str.4731, i64 5, i64 0 }, ptr %a249 + store { ptr, i64, i64 } %t247, ptr %a250 + 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.4732, i64 38, i64 0 }, ptr %a254 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 %endif7059 -endif7059: - %t256 = load ptr, ptr %a1 + store { ptr, i64, i64 } %t251, ptr %a255 + call void @finch_str_drop(ptr %a255) + %t256 = load { ptr, i64, i64 }, ptr %a252 %t257 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 %t258 = load %S.ast.Type, ptr %t257 - %t259 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 13 - %t260 = load { ptr, i64, i64 }, ptr %t259 - %t261 = call %S.gen.Plan @finch.gen.makePlan(ptr %t256, %S.ast.Type %t258, { ptr, i64, i64 } %t260) - store %S.gen.Plan %t261, ptr %a262 - %t263 = load ptr, ptr %a1 - %t264 = call %S.gen.Saved @finch.gen.beginHelper(ptr %t263) - 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.4564, 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 %then7060, label %endif7062 -then7060: - %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.4565, 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.4566, 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 - %t285 = add i64 %t284, 1 - call void @finch_arr_reserve(ptr %a266, i64 %t285, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t286 = load ptr, ptr %a266 - %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.4567, i64 3, i64 0 }, ptr %a268 - store i64 1, ptr %a267 - br label %endif7062 -endif7062: - 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.cond7063 -for.cond7063: - %t293 = load i64, ptr %a292 - %t294 = icmp slt i64 %t293, %t291 - br i1 %t294, label %for.body7064, label %for.end7066 -for.body7064: - %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 %range7067, label %inrange7068 -range7067: - call void @finch_panic_index(ptr @.str.4568, i64 4041, i64 %t296, i64 %t298) + %t259 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t258) + store { ptr, i64, i64 } %t256, ptr %a261 + store { ptr, i64, i64 } %t259, ptr %a262 + call void @finch_str_concat(ptr %a260, ptr %a261, ptr %a262) + store { ptr, i64, i64 } %t256, ptr %a263 + call void @finch_str_drop(ptr %a263) + store { ptr, i64, i64 } %t259, ptr %a264 + call void @finch_str_drop(ptr %a264) + %t265 = load { ptr, i64, i64 }, ptr %a260 + call void @finch.gen.fail(ptr %t244, %S.ast.Node %t245, { ptr, i64, i64 } %t265) + store { ptr, i64, i64 } %t265, ptr %a266 + call void @finch_str_drop(ptr %a266) + br label %endif7427 +endif7427: + %t267 = load ptr, ptr %a1 + %t268 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 + %t269 = load %S.ast.Type, ptr %t268 + %t270 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 13 + %t271 = load { ptr, i64, i64 }, ptr %t270 + %t272 = call %S.gen.Plan @finch.gen.makePlan(ptr %t267, %S.ast.Type %t269, { ptr, i64, i64 } %t271) + store %S.gen.Plan %t272, ptr %a273 + %t274 = load ptr, ptr %a1 + %t275 = call %S.gen.Saved @finch.gen.beginHelper(ptr %t274) + store %S.gen.Saved %t275, ptr %a276 + store { ptr, i64, i64 } zeroinitializer, ptr %a277 + store i64 0, ptr %a278 + store { ptr, i64, i64 } { ptr @.str.4733, i64 0, i64 0 }, ptr %a279 + %t280 = getelementptr inbounds %S.gen.Plan, ptr %a273, i32 0, i32 3 + %t281 = load i1, ptr %t280 + br i1 %t281, label %then7428, label %endif7430 +then7428: + %t282 = getelementptr inbounds { ptr, i64, i64 }, ptr %a277, i32 0, i32 1 + %t283 = load ptr, ptr %a1 + %t284 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 + %t285 = load %S.ast.Type, ptr %t284 + %t286 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t283, %S.ast.Type %t285) + store { ptr, i64, i64 } { ptr @.str.4734, i64 9, i64 0 }, ptr %a288 + store { ptr, i64, i64 } %t286, ptr %a289 + call void @finch_str_concat(ptr %a287, ptr %a288, ptr %a289) + store { ptr, i64, i64 } %t286, ptr %a290 + call void @finch_str_drop(ptr %a290) + %t291 = load { ptr, i64, i64 }, ptr %a287 + store { ptr, i64, i64 } %t291, ptr %a293 + store { ptr, i64, i64 } { ptr @.str.4735, i64 14, i64 0 }, ptr %a294 + call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) + store { ptr, i64, i64 } %t291, ptr %a295 + call void @finch_str_drop(ptr %a295) + %t296 = load { ptr, i64, i64 }, ptr %a292 + %t297 = load i64, ptr %t282 + %t298 = add i64 %t297, 1 + call void @finch_arr_reserve(ptr %a277, i64 %t298, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t299 = load ptr, ptr %a277 + %t300 = getelementptr inbounds { ptr, i64, i64 }, ptr %t299, i64 %t297 + store { ptr, i64, i64 } %t296, ptr %t300 + store i64 %t298, ptr %t282 + %t301 = load { ptr, i64, i64 }, ptr %a279 + store { ptr, i64, i64 } { ptr @.str.4736, i64 3, i64 0 }, ptr %a279 + store { ptr, i64, i64 } %t301, ptr %a302 + call void @finch_str_drop(ptr %a302) + store i64 1, ptr %a278 + br label %endif7430 +endif7430: + store { ptr, i64, i64 } zeroinitializer, ptr %a303 + %t304 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 13 + %t305 = getelementptr inbounds { ptr, i64, i64 }, ptr %t304, i32 0, i32 1 + %t306 = load i64, ptr %t305 + store i64 0, ptr %a307 + br label %for.cond7431 +for.cond7431: + %t308 = load i64, ptr %a307 + %t309 = icmp slt i64 %t308, %t306 + br i1 %t309, label %for.body7432, label %for.end7434 +for.body7432: + %t310 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 13 + %t311 = load i64, ptr %a307 + %t312 = load { ptr, i64, i64 }, ptr %t310 + %t313 = extractvalue { ptr, i64, i64 } %t312, 1 + %t314 = icmp uge i64 %t311, %t313 + br i1 %t314, label %range7435, label %inrange7436 +range7435: + call void @finch_panic_index(ptr @.str.4737, i64 4328, i64 %t311, i64 %t313) unreachable -inrange7068: - %t300 = extractvalue { ptr, i64, i64 } %t297, 0 - %t301 = getelementptr inbounds %S.ast.Type, ptr %t300, i64 %t296 - %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 - store %S.ast.Type %t305, ptr %a306 - %t307 = getelementptr inbounds %S.gen.Plan, ptr %a262, i32 0, i32 1 - %t308 = load i64, ptr %a292 - %t309 = load { ptr, i64, i64 }, ptr %t307 - %t310 = extractvalue { ptr, i64, i64 } %t309, 1 - %t311 = icmp uge i64 %t308, %t310 - br i1 %t311, label %range7069, label %inrange7070 -range7069: - call void @finch_panic_index(ptr @.str.4569, i64 4042, i64 %t308, i64 %t310) +inrange7436: + %t315 = extractvalue { ptr, i64, i64 } %t312, 0 + %t316 = getelementptr inbounds %S.ast.Type, ptr %t315, i64 %t311 + %t317 = load %S.ast.Type, ptr %t316 + store %S.ast.Type %t317, ptr %a318 + call void @finch.copy.S_ast_Type(ptr %a319, ptr %a318) + %t320 = load %S.ast.Type, ptr %a319 + store %S.ast.Type %t320, ptr %a321 + %t322 = getelementptr inbounds %S.gen.Plan, ptr %a273, i32 0, i32 1 + %t323 = load i64, ptr %a307 + %t324 = load { ptr, i64, i64 }, ptr %t322 + %t325 = extractvalue { ptr, i64, i64 } %t324, 1 + %t326 = icmp uge i64 %t323, %t325 + br i1 %t326, label %range7437, label %inrange7438 +range7437: + call void @finch_panic_index(ptr @.str.4738, i64 4329, i64 %t323, i64 %t325) unreachable -inrange7070: - %t312 = extractvalue { ptr, i64, i64 } %t309, 0 - %t313 = getelementptr inbounds %S.gen.Abi, ptr %t312, i64 %t308 - %t314 = load %S.gen.Abi, ptr %t313 - store %S.gen.Abi %t314, ptr %a315 - call void @finch.copy.S_gen_Abi(ptr %a316, ptr %a315) - %t317 = load %S.gen.Abi, ptr %a316 - store %S.gen.Abi %t317, ptr %a318 - %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.4570, 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 %then7071, label %else7072 -then7071: - %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.4571, 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.4572, 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 - %t338 = load i64, ptr %t337 - call void @finch_str_from_int(ptr %a339, i64 %t338) - %t340 = load { ptr, i64, i64 }, ptr %a339 - store { ptr, i64, i64 } %t336, 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.4573, 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 - call void @finch_str_from_int(ptr %a350, i64 %t349) - %t351 = load { ptr, i64, i64 }, ptr %a350 - store { ptr, i64, i64 } %t348, ptr %a353 - store { ptr, i64, i64 } %t351, ptr %a354 - call void @finch_str_concat(ptr %a352, ptr %a353, ptr %a354) - %t355 = load { ptr, i64, i64 }, ptr %a352 - %t356 = load i64, ptr %t325 - %t357 = add i64 %t356, 1 - call void @finch_arr_reserve(ptr %a266, i64 %t357, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t358 = load ptr, ptr %a266 - %t359 = getelementptr inbounds { ptr, i64, i64 }, ptr %t358, i64 %t356 - store { ptr, i64, i64 } %t355, ptr %t359 - store i64 %t357, ptr %t325 - %t360 = getelementptr inbounds { ptr, i64, i64 }, ptr %a288, i32 0, i32 1 - %t361 = load ptr, ptr %a1 - %t362 = load %S.ast.Type, ptr %a306 - %t363 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t361, %S.ast.Type %t362) +inrange7438: + %t327 = extractvalue { ptr, i64, i64 } %t324, 0 + %t328 = getelementptr inbounds %S.gen.Abi, ptr %t327, i64 %t323 + %t329 = load %S.gen.Abi, ptr %t328 + store %S.gen.Abi %t329, ptr %a330 + call void @finch.copy.S_gen_Abi(ptr %a331, ptr %a330) + %t332 = load %S.gen.Abi, ptr %a331 + store %S.gen.Abi %t332, ptr %a333 + %t334 = getelementptr inbounds %S.gen.Abi, ptr %a333, i32 0, i32 0 + %t335 = load { ptr, i64, i64 }, ptr %t334 + store { ptr, i64, i64 } %t335, ptr %a336 + store { ptr, i64, i64 } { ptr @.str.4739, i64 6, i64 0 }, ptr %a337 + %t338 = call i32 @finch_str_eq(ptr %a336, ptr %a337) + %t339 = icmp ne i32 %t338, 0 + br i1 %t339, label %then7439, label %else7440 +then7439: + %t340 = getelementptr inbounds { ptr, i64, i64 }, ptr %a277, i32 0, i32 1 + %t341 = load ptr, ptr %a1 + %t342 = load %S.ast.Type, ptr %a321 + %t343 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t341, %S.ast.Type %t342) + store { ptr, i64, i64 } { ptr @.str.4740, i64 10, i64 0 }, ptr %a345 + store { ptr, i64, i64 } %t343, ptr %a346 + call void @finch_str_concat(ptr %a344, ptr %a345, ptr %a346) + store { ptr, i64, i64 } %t343, ptr %a347 + call void @finch_str_drop(ptr %a347) + %t348 = load { ptr, i64, i64 }, ptr %a344 + store { ptr, i64, i64 } %t348, ptr %a350 + store { ptr, i64, i64 } { ptr @.str.4741, i64 8, i64 0 }, ptr %a351 + call void @finch_str_concat(ptr %a349, ptr %a350, ptr %a351) + store { ptr, i64, i64 } %t348, ptr %a352 + call void @finch_str_drop(ptr %a352) + %t353 = load { ptr, i64, i64 }, ptr %a349 + %t354 = getelementptr inbounds %S.gen.Abi, ptr %a333, i32 0, i32 3 + %t355 = load i64, ptr %t354 + call void @finch_str_from_int(ptr %a356, i64 %t355) + %t357 = load { ptr, i64, i64 }, ptr %a356 + store { ptr, i64, i64 } %t353, ptr %a359 + store { ptr, i64, i64 } %t357, ptr %a360 + call void @finch_str_concat(ptr %a358, ptr %a359, ptr %a360) + store { ptr, i64, i64 } %t353, ptr %a361 + call void @finch_str_drop(ptr %a361) + store { ptr, i64, i64 } %t357, ptr %a362 + call void @finch_str_drop(ptr %a362) + %t363 = load { ptr, i64, i64 }, ptr %a358 store { ptr, i64, i64 } %t363, ptr %a365 - store { ptr, i64, i64 } { ptr @.str.4574, i64 1, i64 0 }, ptr %a366 + store { ptr, i64, i64 } { ptr @.str.4742, i64 3, 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 - %t369 = load ptr, ptr %a1 - %t370 = load %S.ast.Type, ptr %a306 - %t371 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t369, %S.ast.Type %t370) - %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.4575, 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 - %t379 = call { ptr, i64, i64 } @finch.gen.load(ptr %t368, { ptr, i64, i64 } %t371, { ptr, i64, i64 } %t378) - store { ptr, i64, i64 } %t367, ptr %a381 - store { ptr, i64, i64 } %t379, ptr %a382 - call void @finch_str_concat(ptr %a380, ptr %a381, ptr %a382) - %t383 = load { ptr, i64, i64 }, ptr %a380 - %t384 = load i64, ptr %t360 - %t385 = add i64 %t384, 1 - call void @finch_arr_reserve(ptr %a288, i64 %t385, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t386 = load ptr, ptr %a288 - %t387 = getelementptr inbounds { ptr, i64, i64 }, ptr %t386, i64 %t384 - store { ptr, i64, i64 } %t383, ptr %t387 - store i64 %t385, ptr %t360 - %t388 = load i64, ptr %a267 - %t389 = add i64 %t388, 1 - store i64 %t389, ptr %a267 - br label %endif7073 -else7072: - %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.4576, 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 %then7074, label %else7075 -then7074: - %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.4577, 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 - %t404 = load i64, ptr %t396 - %t405 = add i64 %t404, 1 - call void @finch_arr_reserve(ptr %a266, i64 %t405, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t406 = load ptr, ptr %a266 - %t407 = getelementptr inbounds { ptr, i64, i64 }, ptr %t406, i64 %t404 - store { ptr, i64, i64 } %t403, ptr %t407 - store i64 %t405, ptr %t396 - %t408 = getelementptr inbounds { ptr, i64, i64 }, ptr %a288, i32 0, i32 1 - %t409 = load ptr, ptr %a1 - %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.4578, 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 - %t417 = load ptr, ptr %a1 - %t418 = load %S.ast.Type, ptr %a306 - %t419 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t417, %S.ast.Type %t418) - %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.4579, 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 - %t427 = call { ptr, i64, i64 } @finch.gen.load(ptr %t416, { ptr, i64, i64 } %t419, { ptr, i64, i64 } %t426) - store { ptr, i64, i64 } %t415, ptr %a429 + store { ptr, i64, i64 } %t363, ptr %a367 + call void @finch_str_drop(ptr %a367) + %t368 = load { ptr, i64, i64 }, ptr %a364 + %t369 = load i64, ptr %a278 + call void @finch_str_from_int(ptr %a370, i64 %t369) + %t371 = load { ptr, i64, i64 }, ptr %a370 + store { ptr, i64, i64 } %t368, ptr %a373 + store { ptr, i64, i64 } %t371, ptr %a374 + call void @finch_str_concat(ptr %a372, ptr %a373, ptr %a374) + store { ptr, i64, i64 } %t368, ptr %a375 + call void @finch_str_drop(ptr %a375) + store { ptr, i64, i64 } %t371, ptr %a376 + call void @finch_str_drop(ptr %a376) + %t377 = load { ptr, i64, i64 }, ptr %a372 + %t378 = load i64, ptr %t340 + %t379 = add i64 %t378, 1 + call void @finch_arr_reserve(ptr %a277, i64 %t379, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t380 = load ptr, ptr %a277 + %t381 = getelementptr inbounds { ptr, i64, i64 }, ptr %t380, i64 %t378 + store { ptr, i64, i64 } %t377, ptr %t381 + store i64 %t379, ptr %t340 + %t382 = getelementptr inbounds { ptr, i64, i64 }, ptr %a303, i32 0, i32 1 + %t383 = load ptr, ptr %a1 + %t384 = load %S.ast.Type, ptr %a321 + %t385 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t383, %S.ast.Type %t384) + store { ptr, i64, i64 } %t385, ptr %a387 + store { ptr, i64, i64 } { ptr @.str.4743, i64 1, i64 0 }, ptr %a388 + call void @finch_str_concat(ptr %a386, ptr %a387, ptr %a388) + store { ptr, i64, i64 } %t385, ptr %a389 + call void @finch_str_drop(ptr %a389) + %t390 = load { ptr, i64, i64 }, ptr %a386 + %t391 = load ptr, ptr %a1 + %t392 = load ptr, ptr %a1 + %t393 = load %S.ast.Type, ptr %a321 + %t394 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t392, %S.ast.Type %t393) + %t395 = load i64, ptr %a278 + call void @finch_str_from_int(ptr %a396, i64 %t395) + %t397 = load { ptr, i64, i64 }, ptr %a396 + store { ptr, i64, i64 } { ptr @.str.4744, i64 2, i64 0 }, ptr %a399 + store { ptr, i64, i64 } %t397, ptr %a400 + call void @finch_str_concat(ptr %a398, ptr %a399, ptr %a400) + store { ptr, i64, i64 } %t397, ptr %a401 + call void @finch_str_drop(ptr %a401) + %t402 = load { ptr, i64, i64 }, ptr %a398 + %t403 = call { ptr, i64, i64 } @finch.gen.load(ptr %t391, { ptr, i64, i64 } %t394, { ptr, i64, i64 } %t402) + store { ptr, i64, i64 } %t394, ptr %a404 + call void @finch_str_drop(ptr %a404) + store { ptr, i64, i64 } %t402, ptr %a405 + call void @finch_str_drop(ptr %a405) + store { ptr, i64, i64 } %t390, ptr %a407 + store { ptr, i64, i64 } %t403, ptr %a408 + call void @finch_str_concat(ptr %a406, ptr %a407, ptr %a408) + store { ptr, i64, i64 } %t390, ptr %a409 + call void @finch_str_drop(ptr %a409) + store { ptr, i64, i64 } %t403, ptr %a410 + call void @finch_str_drop(ptr %a410) + %t411 = load { ptr, i64, i64 }, ptr %a406 + %t412 = load i64, ptr %t382 + %t413 = add i64 %t412, 1 + call void @finch_arr_reserve(ptr %a303, i64 %t413, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t414 = load ptr, ptr %a303 + %t415 = getelementptr inbounds { ptr, i64, i64 }, ptr %t414, i64 %t412 + store { ptr, i64, i64 } %t411, ptr %t415 + store i64 %t413, ptr %t382 + %t416 = load i64, ptr %a278 + %t417 = add i64 %t416, 1 + store i64 %t417, ptr %a278 + br label %endif7441 +else7440: + %t418 = getelementptr inbounds %S.gen.Abi, ptr %a333, i32 0, i32 0 + %t419 = load { ptr, i64, i64 }, ptr %t418 + store { ptr, i64, i64 } %t419, ptr %a420 + store { ptr, i64, i64 } { ptr @.str.4745, i64 8, i64 0 }, ptr %a421 + %t422 = call i32 @finch_str_eq(ptr %a420, ptr %a421) + %t423 = icmp ne i32 %t422, 0 + br i1 %t423, label %then7442, label %else7443 +then7442: + %t424 = getelementptr inbounds { ptr, i64, i64 }, ptr %a277, i32 0, i32 1 + %t425 = load i64, ptr %a278 + call void @finch_str_from_int(ptr %a426, i64 %t425) + %t427 = load { ptr, i64, i64 }, ptr %a426 + store { ptr, i64, i64 } { ptr @.str.4746, i64 6, 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 - %t432 = load i64, ptr %t408 - %t433 = add i64 %t432, 1 - call void @finch_arr_reserve(ptr %a288, i64 %t433, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t434 = load ptr, ptr %a288 - %t435 = getelementptr inbounds { ptr, i64, i64 }, ptr %t434, i64 %t432 - store { ptr, i64, i64 } %t431, ptr %t435 - store i64 %t433, ptr %t408 - %t436 = load i64, ptr %a267 - %t437 = add i64 %t436, 1 - store i64 %t437, ptr %a267 - br label %endif7076 -else7075: - %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.4580, 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 %then7077, label %else7078 -then7077: - %t444 = load ptr, ptr %a1 - %t445 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t444, { ptr, i64, i64 } { ptr @.str.4581, 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.cond7080 -for.cond7080: - %t451 = load i64, ptr %a450 - %t452 = icmp slt i64 %t451, %t449 - br i1 %t452, label %for.body7081, label %for.end7083 -for.body7081: - %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 %range7084, label %inrange7085 -range7084: - call void @finch_panic_index(ptr @.str.4582, i64 4054, i64 %t455, i64 %t457) + store { ptr, i64, i64 } %t427, ptr %a431 + call void @finch_str_drop(ptr %a431) + %t432 = load { ptr, i64, i64 }, ptr %a428 + %t433 = load i64, ptr %t424 + %t434 = add i64 %t433, 1 + call void @finch_arr_reserve(ptr %a277, i64 %t434, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t435 = load ptr, ptr %a277 + %t436 = getelementptr inbounds { ptr, i64, i64 }, ptr %t435, i64 %t433 + store { ptr, i64, i64 } %t432, ptr %t436 + store i64 %t434, ptr %t424 + %t437 = getelementptr inbounds { ptr, i64, i64 }, ptr %a303, i32 0, i32 1 + %t438 = load ptr, ptr %a1 + %t439 = load %S.ast.Type, ptr %a321 + %t440 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t438, %S.ast.Type %t439) + store { ptr, i64, i64 } %t440, ptr %a442 + store { ptr, i64, i64 } { ptr @.str.4747, i64 1, i64 0 }, ptr %a443 + call void @finch_str_concat(ptr %a441, ptr %a442, ptr %a443) + store { ptr, i64, i64 } %t440, ptr %a444 + call void @finch_str_drop(ptr %a444) + %t445 = load { ptr, i64, i64 }, ptr %a441 + %t446 = load ptr, ptr %a1 + %t447 = load ptr, ptr %a1 + %t448 = load %S.ast.Type, ptr %a321 + %t449 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t447, %S.ast.Type %t448) + %t450 = load i64, ptr %a278 + call void @finch_str_from_int(ptr %a451, i64 %t450) + %t452 = load { ptr, i64, i64 }, ptr %a451 + store { ptr, i64, i64 } { ptr @.str.4748, i64 2, i64 0 }, ptr %a454 + store { ptr, i64, i64 } %t452, ptr %a455 + call void @finch_str_concat(ptr %a453, ptr %a454, ptr %a455) + store { ptr, i64, i64 } %t452, ptr %a456 + call void @finch_str_drop(ptr %a456) + %t457 = load { ptr, i64, i64 }, ptr %a453 + %t458 = call { ptr, i64, i64 } @finch.gen.load(ptr %t446, { ptr, i64, i64 } %t449, { ptr, i64, i64 } %t457) + store { ptr, i64, i64 } %t449, ptr %a459 + call void @finch_str_drop(ptr %a459) + store { ptr, i64, i64 } %t457, ptr %a460 + call void @finch_str_drop(ptr %a460) + store { ptr, i64, i64 } %t445, ptr %a462 + store { ptr, i64, i64 } %t458, ptr %a463 + call void @finch_str_concat(ptr %a461, ptr %a462, ptr %a463) + store { ptr, i64, i64 } %t445, ptr %a464 + call void @finch_str_drop(ptr %a464) + store { ptr, i64, i64 } %t458, ptr %a465 + call void @finch_str_drop(ptr %a465) + %t466 = load { ptr, i64, i64 }, ptr %a461 + %t467 = load i64, ptr %t437 + %t468 = add i64 %t467, 1 + call void @finch_arr_reserve(ptr %a303, i64 %t468, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t469 = load ptr, ptr %a303 + %t470 = getelementptr inbounds { ptr, i64, i64 }, ptr %t469, i64 %t467 + store { ptr, i64, i64 } %t466, ptr %t470 + store i64 %t468, ptr %t437 + %t471 = load i64, ptr %a278 + %t472 = add i64 %t471, 1 + store i64 %t472, ptr %a278 + br label %endif7444 +else7443: + %t473 = getelementptr inbounds %S.gen.Abi, ptr %a333, i32 0, i32 0 + %t474 = load { ptr, i64, i64 }, ptr %t473 + store { ptr, i64, i64 } %t474, ptr %a475 + store { ptr, i64, i64 } { ptr @.str.4749, i64 6, i64 0 }, ptr %a476 + %t477 = call i32 @finch_str_eq(ptr %a475, ptr %a476) + %t478 = icmp ne i32 %t477, 0 + br i1 %t478, label %then7445, label %else7446 +then7445: + %t479 = load ptr, ptr %a1 + %t480 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t479, { ptr, i64, i64 } { ptr @.str.4750, i64 9, i64 0 }) + store { ptr, i64, i64 } %t480, ptr %a481 + %t482 = getelementptr inbounds %S.gen.Abi, ptr %a333, i32 0, i32 1 + %t483 = getelementptr inbounds { ptr, i64, i64 }, ptr %t482, i32 0, i32 1 + %t484 = load i64, ptr %t483 + store i64 0, ptr %a485 + br label %for.cond7448 +for.cond7448: + %t486 = load i64, ptr %a485 + %t487 = icmp slt i64 %t486, %t484 + br i1 %t487, label %for.body7449, label %for.end7451 +for.body7449: + %t488 = getelementptr inbounds { ptr, i64, i64 }, ptr %a277, i32 0, i32 1 + %t489 = getelementptr inbounds %S.gen.Abi, ptr %a333, i32 0, i32 1 + %t490 = load i64, ptr %a485 + %t491 = load { ptr, i64, i64 }, ptr %t489 + %t492 = extractvalue { ptr, i64, i64 } %t491, 1 + %t493 = icmp uge i64 %t490, %t492 + br i1 %t493, label %range7452, label %inrange7453 +range7452: + call void @finch_panic_index(ptr @.str.4751, i64 4341, i64 %t490, i64 %t492) unreachable -inrange7085: - %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.4583, 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 - call void @finch_str_from_int(ptr %a467, i64 %t466) - %t468 = load { ptr, i64, i64 }, ptr %a467 - store { ptr, i64, i64 } %t465, 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 - %t473 = load i64, ptr %t453 - %t474 = add i64 %t473, 1 - call void @finch_arr_reserve(ptr %a266, i64 %t474, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t475 = load ptr, ptr %a266 - %t476 = getelementptr inbounds { ptr, i64, i64 }, ptr %t475, i64 %t473 - store { ptr, i64, i64 } %t472, ptr %t476 - store i64 %t474, ptr %t453 - %t477 = load ptr, ptr %a1 - %t478 = getelementptr inbounds %S.gen.Abi, ptr %a318, i32 0, i32 1 - %t479 = load i64, ptr %a450 - %t480 = load { ptr, i64, i64 }, ptr %t478 - %t481 = extractvalue { ptr, i64, i64 } %t480, 1 - %t482 = icmp uge i64 %t479, %t481 - br i1 %t482, label %range7086, label %inrange7087 -range7086: - call void @finch_panic_index(ptr @.str.4584, i64 4055, i64 %t479, i64 %t481) +inrange7453: + %t494 = extractvalue { ptr, i64, i64 } %t491, 0 + %t495 = getelementptr inbounds { ptr, i64, i64 }, ptr %t494, i64 %t490 + %t496 = load { ptr, i64, i64 }, ptr %t495 + store { ptr, i64, i64 } %t496, ptr %a498 + store { ptr, i64, i64 } { ptr @.str.4752, i64 3, i64 0 }, ptr %a499 + call void @finch_str_concat(ptr %a497, ptr %a498, ptr %a499) + %t500 = load { ptr, i64, i64 }, ptr %a497 + %t501 = load i64, ptr %a278 + call void @finch_str_from_int(ptr %a502, i64 %t501) + %t503 = load { ptr, i64, i64 }, ptr %a502 + store { ptr, i64, i64 } %t500, ptr %a505 + store { ptr, i64, i64 } %t503, ptr %a506 + call void @finch_str_concat(ptr %a504, ptr %a505, ptr %a506) + store { ptr, i64, i64 } %t500, ptr %a507 + call void @finch_str_drop(ptr %a507) + store { ptr, i64, i64 } %t503, ptr %a508 + call void @finch_str_drop(ptr %a508) + %t509 = load { ptr, i64, i64 }, ptr %a504 + %t510 = load i64, ptr %t488 + %t511 = add i64 %t510, 1 + call void @finch_arr_reserve(ptr %a277, i64 %t511, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t512 = load ptr, ptr %a277 + %t513 = getelementptr inbounds { ptr, i64, i64 }, ptr %t512, i64 %t510 + store { ptr, i64, i64 } %t509, ptr %t513 + store i64 %t511, ptr %t488 + %t514 = load ptr, ptr %a1 + %t515 = getelementptr inbounds %S.gen.Abi, ptr %a333, i32 0, i32 1 + %t516 = load i64, ptr %a485 + %t517 = load { ptr, i64, i64 }, ptr %t515 + %t518 = extractvalue { ptr, i64, i64 } %t517, 1 + %t519 = icmp uge i64 %t516, %t518 + br i1 %t519, label %range7454, label %inrange7455 +range7454: + call void @finch_panic_index(ptr @.str.4753, i64 4342, i64 %t516, i64 %t518) unreachable -inrange7087: - %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.4585, 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.4586, 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.4587, 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 - %t504 = mul i64 8, %t503 - call void @finch_str_from_int(ptr %a505, i64 %t504) - %t506 = load { ptr, i64, i64 }, ptr %a505 - store { ptr, i64, i64 } %t502, ptr %a508 - store { ptr, i64, i64 } %t506, ptr %a509 - call void @finch_str_concat(ptr %a507, ptr %a508, ptr %a509) - %t510 = load { ptr, i64, i64 }, ptr %a507 - %t511 = call { ptr, i64, i64 } @finch.gen.op(ptr %t493, { ptr, i64, i64 } %t510) - call void @finch.gen.store(ptr %t477, { ptr, i64, i64 } %t485, { ptr, i64, i64 } %t492, { ptr, i64, i64 } %t511) - %t512 = load i64, ptr %a267 - %t513 = add i64 %t512, 1 - store i64 %t513, ptr %a267 - br label %for.step7082 -for.step7082: - %t514 = load i64, ptr %a450 - %t515 = add i64 %t514, 1 - store i64 %t515, ptr %a450 - br label %for.cond7080 -for.end7083: - %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.4588, 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 - %t525 = load ptr, ptr %a1 - %t526 = load %S.ast.Type, ptr %a306 - %t527 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t525, %S.ast.Type %t526) - %t528 = load { ptr, i64, i64 }, ptr %a446 - %t529 = call { ptr, i64, i64 } @finch.gen.load(ptr %t524, { ptr, i64, i64 } %t527, { ptr, i64, i64 } %t528) - store { ptr, i64, i64 } %t523, 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 - %t534 = load i64, ptr %t516 - %t535 = add i64 %t534, 1 - call void @finch_arr_reserve(ptr %a288, i64 %t535, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t536 = load ptr, ptr %a288 - %t537 = getelementptr inbounds { ptr, i64, i64 }, ptr %t536, i64 %t534 - store { ptr, i64, i64 } %t533, ptr %t537 - store i64 %t535, ptr %t516 - br label %endif7079 -else7078: - %t538 = getelementptr inbounds { ptr, i64, i64 }, ptr %a266, i32 0, i32 1 - %t539 = load ptr, ptr %a1 - %t540 = load %S.ast.Type, ptr %a306 - %t541 = call { ptr, i64, i64 } @finch.gen.cLL(ptr %t539, %S.ast.Type %t540) - %t542 = load ptr, ptr %a1 - %t543 = load %S.ast.Type, ptr %a306 - %t544 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t542, %S.ast.Type %t543) - store { ptr, i64, i64 } %t541, 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.4589, 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 - call void @finch_str_from_int(ptr %a554, i64 %t553) - %t555 = load { ptr, i64, i64 }, ptr %a554 - store { ptr, i64, i64 } %t552, 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 %t538 - %t561 = add i64 %t560, 1 - call void @finch_arr_reserve(ptr %a266, i64 %t561, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t562 = load ptr, ptr %a266 - %t563 = getelementptr inbounds { ptr, i64, i64 }, ptr %t562, i64 %t560 - store { ptr, i64, i64 } %t559, ptr %t563 - store i64 %t561, ptr %t538 - %t564 = getelementptr inbounds { ptr, i64, i64 }, ptr %a288, i32 0, i32 1 - %t565 = load ptr, ptr %a1 - %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.4590, 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 - call void @finch_str_from_int(ptr %a573, i64 %t572) - %t574 = load { ptr, i64, i64 }, ptr %a573 - store { ptr, i64, i64 } %t571, ptr %a576 - store { ptr, i64, i64 } %t574, ptr %a577 - call void @finch_str_concat(ptr %a575, ptr %a576, ptr %a577) - %t578 = load { ptr, i64, i64 }, ptr %a575 - %t579 = load i64, ptr %t564 - %t580 = add i64 %t579, 1 - call void @finch_arr_reserve(ptr %a288, i64 %t580, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t581 = load ptr, ptr %a288 - %t582 = getelementptr inbounds { ptr, i64, i64 }, ptr %t581, i64 %t579 - store { ptr, i64, i64 } %t578, ptr %t582 - store i64 %t580, ptr %t564 - %t583 = load i64, ptr %a267 - %t584 = add i64 %t583, 1 - store i64 %t584, ptr %a267 - br label %endif7079 -endif7079: - br label %endif7076 -endif7076: - br label %endif7073 -endif7073: - br label %for.step7065 -for.step7065: - %t585 = load i64, ptr %a292 - %t586 = add i64 %t585, 1 - store i64 %t586, ptr %a292 - br label %for.cond7063 -for.end7066: +inrange7455: + %t520 = extractvalue { ptr, i64, i64 } %t517, 0 + %t521 = getelementptr inbounds { ptr, i64, i64 }, ptr %t520, i64 %t516 + %t522 = load { ptr, i64, i64 }, ptr %t521 + %t523 = load i64, ptr %a278 + call void @finch_str_from_int(ptr %a524, i64 %t523) + %t525 = load { ptr, i64, i64 }, ptr %a524 + store { ptr, i64, i64 } { ptr @.str.4754, i64 2, i64 0 }, ptr %a527 + store { ptr, i64, i64 } %t525, ptr %a528 + call void @finch_str_concat(ptr %a526, ptr %a527, ptr %a528) + store { ptr, i64, i64 } %t525, ptr %a529 + call void @finch_str_drop(ptr %a529) + %t530 = load { ptr, i64, i64 }, ptr %a526 + %t531 = load ptr, ptr %a1 + %t532 = load { ptr, i64, i64 }, ptr %a481 + store { ptr, i64, i64 } { ptr @.str.4755, i64 31, 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 + store { ptr, i64, i64 } { ptr @.str.4756, i64 6, i64 0 }, ptr %a539 + call void @finch_str_concat(ptr %a537, ptr %a538, ptr %a539) + store { ptr, i64, i64 } %t536, ptr %a540 + call void @finch_str_drop(ptr %a540) + %t541 = load { ptr, i64, i64 }, ptr %a537 + %t542 = load i64, ptr %a485 + %t543 = mul i64 8, %t542 + call void @finch_str_from_int(ptr %a544, i64 %t543) + %t545 = load { ptr, i64, i64 }, ptr %a544 + store { ptr, i64, i64 } %t541, ptr %a547 + store { ptr, i64, i64 } %t545, ptr %a548 + call void @finch_str_concat(ptr %a546, ptr %a547, ptr %a548) + store { ptr, i64, i64 } %t541, ptr %a549 + call void @finch_str_drop(ptr %a549) + store { ptr, i64, i64 } %t545, ptr %a550 + call void @finch_str_drop(ptr %a550) + %t551 = load { ptr, i64, i64 }, ptr %a546 + %t552 = call { ptr, i64, i64 } @finch.gen.op(ptr %t531, { ptr, i64, i64 } %t551) + store { ptr, i64, i64 } %t551, ptr %a553 + call void @finch_str_drop(ptr %a553) + call void @finch.gen.store(ptr %t514, { ptr, i64, i64 } %t522, { ptr, i64, i64 } %t530, { ptr, i64, i64 } %t552) + store { ptr, i64, i64 } %t530, ptr %a554 + call void @finch_str_drop(ptr %a554) + store { ptr, i64, i64 } %t552, ptr %a555 + call void @finch_str_drop(ptr %a555) + %t556 = load i64, ptr %a278 + %t557 = add i64 %t556, 1 + store i64 %t557, ptr %a278 + br label %for.step7450 +for.step7450: + %t558 = load i64, ptr %a485 + %t559 = add i64 %t558, 1 + store i64 %t559, ptr %a485 + br label %for.cond7448 +for.end7451: + %t560 = getelementptr inbounds { ptr, i64, i64 }, ptr %a303, i32 0, i32 1 + %t561 = load ptr, ptr %a1 + %t562 = load %S.ast.Type, ptr %a321 + %t563 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t561, %S.ast.Type %t562) + store { ptr, i64, i64 } %t563, ptr %a565 + store { ptr, i64, i64 } { ptr @.str.4757, i64 1, i64 0 }, ptr %a566 + call void @finch_str_concat(ptr %a564, ptr %a565, ptr %a566) + store { ptr, i64, i64 } %t563, ptr %a567 + call void @finch_str_drop(ptr %a567) + %t568 = load { ptr, i64, i64 }, ptr %a564 + %t569 = load ptr, ptr %a1 + %t570 = load ptr, ptr %a1 + %t571 = load %S.ast.Type, ptr %a321 + %t572 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t570, %S.ast.Type %t571) + %t573 = load { ptr, i64, i64 }, ptr %a481 + %t574 = call { ptr, i64, i64 } @finch.gen.load(ptr %t569, { ptr, i64, i64 } %t572, { ptr, i64, i64 } %t573) + store { ptr, i64, i64 } %t572, ptr %a575 + call void @finch_str_drop(ptr %a575) + store { ptr, i64, i64 } %t568, ptr %a577 + store { ptr, i64, i64 } %t574, ptr %a578 + call void @finch_str_concat(ptr %a576, ptr %a577, ptr %a578) + store { ptr, i64, i64 } %t568, ptr %a579 + call void @finch_str_drop(ptr %a579) + store { ptr, i64, i64 } %t574, ptr %a580 + call void @finch_str_drop(ptr %a580) + %t581 = load { ptr, i64, i64 }, ptr %a576 + %t582 = load i64, ptr %t560 + %t583 = add i64 %t582, 1 + call void @finch_arr_reserve(ptr %a303, i64 %t583, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t584 = load ptr, ptr %a303 + %t585 = getelementptr inbounds { ptr, i64, i64 }, ptr %t584, i64 %t582 + store { ptr, i64, i64 } %t581, ptr %t585 + store i64 %t583, ptr %t560 + call void @finch_str_drop(ptr %a481) + br label %endif7447 +else7446: + %t586 = getelementptr inbounds { ptr, i64, i64 }, ptr %a277, i32 0, i32 1 %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.4591, 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.4592, 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 - %t600 = load { ptr, i64, i64 }, ptr %t599 + %t588 = load %S.ast.Type, ptr %a321 + %t589 = call { ptr, i64, i64 } @finch.gen.cLL(ptr %t587, %S.ast.Type %t588) + %t590 = load ptr, ptr %a1 + %t591 = load %S.ast.Type, ptr %a321 + %t592 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t590, %S.ast.Type %t591) + store { ptr, i64, i64 } %t589, ptr %a594 + store { ptr, i64, i64 } %t592, ptr %a595 + call void @finch_str_concat(ptr %a593, ptr %a594, ptr %a595) + store { ptr, i64, i64 } %t589, ptr %a596 + call void @finch_str_drop(ptr %a596) + store { ptr, i64, i64 } %t592, ptr %a597 + call void @finch_str_drop(ptr %a597) + %t598 = load { ptr, i64, i64 }, ptr %a593 + store { ptr, i64, i64 } %t598, ptr %a600 + store { ptr, i64, i64 } { ptr @.str.4758, i64 3, i64 0 }, ptr %a601 + call void @finch_str_concat(ptr %a599, ptr %a600, ptr %a601) store { ptr, i64, i64 } %t598, 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.4593, 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.4594, 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 - store { ptr, i64, i64 } %t612, ptr %a615 - 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.4595, 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.4596, 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.4597, 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 %then7088, label %else7089 -then7088: - %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.4598, i64 8, i64 0 }) - br label %endif7090 -else7089: - %t633 = getelementptr inbounds %S.gen.Plan, ptr %a262, i32 0, i32 3 - %t634 = load i1, ptr %t633 - br i1 %t634, label %then7091, label %else7092 -then7091: - %t635 = load ptr, ptr %a1 - %t636 = load ptr, ptr %a1 - %t637 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t638 = load %S.ast.Type, ptr %t637 - %t639 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t636, %S.ast.Type %t638) - %t640 = load ptr, ptr %a1 - %t641 = load { ptr, i64, i64 }, ptr %a621 - %t642 = call { ptr, i64, i64 } @finch.gen.op(ptr %t640, { ptr, i64, i64 } %t641) - %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.4599, i64 8, i64 0 }) - br label %endif7093 -else7092: - %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.4600, 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 %then7094, label %else7095 -then7094: - %t652 = load ptr, ptr %a1 - %t653 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t652, { ptr, i64, i64 } { ptr @.str.4601, i64 9, i64 0 }) - store { ptr, i64, i64 } %t653, ptr %a654 - %t655 = load ptr, ptr %a1 - %t656 = load ptr, ptr %a1 - %t657 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t658 = load %S.ast.Type, ptr %t657 - %t659 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t656, %S.ast.Type %t658) - %t660 = load ptr, ptr %a1 - %t661 = load { ptr, i64, i64 }, ptr %a621 - %t662 = call { ptr, i64, i64 } @finch.gen.op(ptr %t660, { ptr, i64, i64 } %t661) - %t663 = load { ptr, i64, i64 }, ptr %a654 - call void @finch.gen.store(ptr %t655, { ptr, i64, i64 } %t659, { ptr, i64, i64 } %t662, { ptr, i64, i64 } %t663) - %t664 = load ptr, ptr %a1 - %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.4602, 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.4603, 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 - %t677 = getelementptr inbounds %S.gen.Plan, ptr %a262, i32 0, i32 0 - %t678 = getelementptr inbounds %S.gen.Abi, ptr %t677, i32 0, i32 2 - %t679 = load { ptr, i64, i64 }, ptr %t678 - %t680 = load { ptr, i64, i64 }, ptr %a654 - %t681 = call { ptr, i64, i64 } @finch.gen.load(ptr %t676, { ptr, i64, i64 } %t679, { ptr, i64, i64 } %t680) - store { ptr, i64, i64 } %t675, 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 - call void @finch.gen.emit(ptr %t664, { ptr, i64, i64 } %t685) - br label %endif7096 -else7095: - %t686 = load ptr, ptr %a1 - %t687 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t688 = load %S.ast.Type, ptr %t687 - %t689 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t686, %S.ast.Type %t688) - store { ptr, i64, i64 } %t689, ptr %a622 - %t690 = load ptr, ptr %a1 - %t691 = load ptr, ptr %a1 - %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.4604, 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.4605, i64 1, i64 0 }, ptr %a701 - call void @finch_str_concat(ptr %a699, ptr %a700, ptr %a701) - %t702 = load { ptr, i64, i64 }, ptr %a699 + call void @finch_str_drop(ptr %a602) + %t603 = load { ptr, i64, i64 }, ptr %a599 + %t604 = load i64, ptr %a278 + call void @finch_str_from_int(ptr %a605, i64 %t604) + %t606 = load { ptr, i64, i64 }, ptr %a605 + store { ptr, i64, i64 } %t603, ptr %a608 + store { ptr, i64, i64 } %t606, ptr %a609 + call void @finch_str_concat(ptr %a607, ptr %a608, ptr %a609) + store { ptr, i64, i64 } %t603, ptr %a610 + call void @finch_str_drop(ptr %a610) + store { ptr, i64, i64 } %t606, ptr %a611 + call void @finch_str_drop(ptr %a611) + %t612 = load { ptr, i64, i64 }, ptr %a607 + %t613 = load i64, ptr %t586 + %t614 = add i64 %t613, 1 + call void @finch_arr_reserve(ptr %a277, i64 %t614, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t615 = load ptr, ptr %a277 + %t616 = getelementptr inbounds { ptr, i64, i64 }, ptr %t615, i64 %t613 + store { ptr, i64, i64 } %t612, ptr %t616 + store i64 %t614, ptr %t586 + %t617 = getelementptr inbounds { ptr, i64, i64 }, ptr %a303, i32 0, i32 1 + %t618 = load ptr, ptr %a1 + %t619 = load %S.ast.Type, ptr %a321 + %t620 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t618, %S.ast.Type %t619) + store { ptr, i64, i64 } %t620, ptr %a622 + store { ptr, i64, i64 } { ptr @.str.4759, i64 3, i64 0 }, ptr %a623 + call void @finch_str_concat(ptr %a621, ptr %a622, ptr %a623) + store { ptr, i64, i64 } %t620, ptr %a624 + call void @finch_str_drop(ptr %a624) + %t625 = load { ptr, i64, i64 }, ptr %a621 + %t626 = load i64, ptr %a278 + call void @finch_str_from_int(ptr %a627, i64 %t626) + %t628 = load { ptr, i64, i64 }, ptr %a627 + store { ptr, i64, i64 } %t625, ptr %a630 + store { ptr, i64, i64 } %t628, ptr %a631 + call void @finch_str_concat(ptr %a629, ptr %a630, ptr %a631) + store { ptr, i64, i64 } %t625, ptr %a632 + call void @finch_str_drop(ptr %a632) + store { ptr, i64, i64 } %t628, ptr %a633 + call void @finch_str_drop(ptr %a633) + %t634 = load { ptr, i64, i64 }, ptr %a629 + %t635 = load i64, ptr %t617 + %t636 = add i64 %t635, 1 + call void @finch_arr_reserve(ptr %a303, i64 %t636, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t637 = load ptr, ptr %a303 + %t638 = getelementptr inbounds { ptr, i64, i64 }, ptr %t637, i64 %t635 + store { ptr, i64, i64 } %t634, ptr %t638 + store i64 %t636, ptr %t617 + %t639 = load i64, ptr %a278 + %t640 = add i64 %t639, 1 + store i64 %t640, ptr %a278 + br label %endif7447 +endif7447: + br label %endif7444 +endif7444: + br label %endif7441 +endif7441: + call void @finch.drop.S_gen_Abi(ptr %a333) + call void @finch.drop.S_ast_Type(ptr %a321) + br label %for.step7433 +for.step7433: + %t641 = load i64, ptr %a307 + %t642 = add i64 %t641, 1 + store i64 %t642, ptr %a307 + br label %for.cond7431 +for.end7434: + %t643 = load ptr, ptr %a1 + %t644 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 + %t645 = load %S.ast.Type, ptr %t644 + %t646 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t643, %S.ast.Type %t645) + store { ptr, i64, i64 } { ptr @.str.4760, i64 5, i64 0 }, ptr %a648 + store { ptr, i64, i64 } %t646, ptr %a649 + call void @finch_str_concat(ptr %a647, ptr %a648, ptr %a649) + store { ptr, i64, i64 } %t646, ptr %a650 + call void @finch_str_drop(ptr %a650) + %t651 = load { ptr, i64, i64 }, ptr %a647 + store { ptr, i64, i64 } %t651, ptr %a653 + store { ptr, i64, i64 } { ptr @.str.4761, i64 1, i64 0 }, ptr %a654 + call void @finch_str_concat(ptr %a652, ptr %a653, ptr %a654) + store { ptr, i64, i64 } %t651, ptr %a655 + call void @finch_str_drop(ptr %a655) + %t656 = load { ptr, i64, i64 }, ptr %a652 + %t657 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 11 + %t658 = load { ptr, i64, i64 }, ptr %t657 + store { ptr, i64, i64 } %t656, ptr %a660 + store { ptr, i64, i64 } %t658, ptr %a661 + call void @finch_str_concat(ptr %a659, ptr %a660, ptr %a661) + store { ptr, i64, i64 } %t656, ptr %a662 + call void @finch_str_drop(ptr %a662) + %t663 = load { ptr, i64, i64 }, ptr %a659 + store { ptr, i64, i64 } %t663, ptr %a665 + store { ptr, i64, i64 } { ptr @.str.4762, i64 1, i64 0 }, ptr %a666 + call void @finch_str_concat(ptr %a664, ptr %a665, ptr %a666) + store { ptr, i64, i64 } %t663, ptr %a667 + call void @finch_str_drop(ptr %a667) + %t668 = load { ptr, i64, i64 }, ptr %a664 + %t669 = getelementptr inbounds { ptr, i64, i64 }, ptr %a303, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.4763, i64 2, i64 0 }, ptr %a670 + call void @finch_str_join(ptr %a671, ptr %a303, ptr %a670) + %t672 = load { ptr, i64, i64 }, ptr %a671 + store { ptr, i64, i64 } %t668, ptr %a674 + store { ptr, i64, i64 } %t672, ptr %a675 + call void @finch_str_concat(ptr %a673, ptr %a674, ptr %a675) + store { ptr, i64, i64 } %t668, ptr %a676 + call void @finch_str_drop(ptr %a676) + store { ptr, i64, i64 } %t672, ptr %a677 + call void @finch_str_drop(ptr %a677) + %t678 = load { ptr, i64, i64 }, ptr %a673 + store { ptr, i64, i64 } %t678, ptr %a680 + store { ptr, i64, i64 } { ptr @.str.4764, i64 1, i64 0 }, ptr %a681 + call void @finch_str_concat(ptr %a679, ptr %a680, ptr %a681) + store { ptr, i64, i64 } %t678, ptr %a682 + call void @finch_str_drop(ptr %a682) + %t683 = load { ptr, i64, i64 }, ptr %a679 + store { ptr, i64, i64 } %t683, ptr %a684 + store { ptr, i64, i64 } { ptr @.str.4765, i64 0, i64 0 }, ptr %a685 + %t686 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 + %t687 = getelementptr inbounds %S.ast.Type, ptr %t686, i32 0, i32 0 + %t688 = load { ptr, i64, i64 }, ptr %t687 + store { ptr, i64, i64 } %t688, ptr %a689 + store { ptr, i64, i64 } { ptr @.str.4766, 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 %then7456, label %else7457 +then7456: + %t693 = load ptr, ptr %a1 + %t694 = load { ptr, i64, i64 }, ptr %a684 + call void @finch.gen.emit(ptr %t693, { ptr, i64, i64 } %t694) + %t695 = load ptr, ptr %a1 + call void @finch.gen.emit(ptr %t695, { ptr, i64, i64 } { ptr @.str.4767, i64 8, i64 0 }) + br label %endif7458 +else7457: + %t696 = getelementptr inbounds %S.gen.Plan, ptr %a273, i32 0, i32 3 + %t697 = load i1, ptr %t696 + br i1 %t697, label %then7459, label %else7460 +then7459: + %t698 = load ptr, ptr %a1 + %t699 = load ptr, ptr %a1 + %t700 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 + %t701 = load %S.ast.Type, ptr %t700 + %t702 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t699, %S.ast.Type %t701) %t703 = load ptr, ptr %a1 - %t704 = load { ptr, i64, i64 }, ptr %a621 + %t704 = load { ptr, i64, i64 }, ptr %a684 %t705 = call { ptr, i64, i64 } @finch.gen.op(ptr %t703, { ptr, i64, i64 } %t704) + %t706 = load { ptr, i64, i64 }, ptr %a279 + call void @finch.gen.store(ptr %t698, { ptr, i64, i64 } %t702, { ptr, i64, i64 } %t705, { ptr, i64, i64 } %t706) store { ptr, i64, i64 } %t702, ptr %a707 + call void @finch_str_drop(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 - call void @finch.gen.emit(ptr %t690, { ptr, i64, i64 } %t709) - br label %endif7096 -endif7096: - br label %endif7093 -endif7093: - br label %endif7090 -endif7090: - %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.4606, 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.4607, 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 - %t722 = load { ptr, i64, i64 }, ptr %t721 - store { ptr, i64, i64 } %t720, ptr %a724 - store { ptr, i64, i64 } %t722, ptr %a725 - 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.4608, 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 - store { ptr, i64, i64 } %t730, ptr %a733 - store { ptr, i64, i64 } %t731, 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 %a737 - store { ptr, i64, i64 } { ptr @.str.4609, 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.4610, 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 - 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.4611, 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) - %t752 = load { ptr, i64, i64 }, ptr %a35 - store { ptr, i64, i64 } %t752, ptr %a753 - call void @finch_str_copy(ptr %a754, ptr %a753) - %t755 = load { ptr, i64, i64 }, ptr %a754 - ret { ptr, i64, i64 } %t755 + call void @finch_str_drop(ptr %a708) + %t709 = load ptr, ptr %a1 + call void @finch.gen.emit(ptr %t709, { ptr, i64, i64 } { ptr @.str.4768, i64 8, i64 0 }) + br label %endif7461 +else7460: + %t710 = getelementptr inbounds %S.gen.Plan, ptr %a273, i32 0, i32 0 + %t711 = getelementptr inbounds %S.gen.Abi, ptr %t710, i32 0, i32 0 + %t712 = load { ptr, i64, i64 }, ptr %t711 + store { ptr, i64, i64 } %t712, ptr %a713 + store { ptr, i64, i64 } { ptr @.str.4769, i64 6, i64 0 }, ptr %a714 + %t715 = call i32 @finch_str_eq(ptr %a713, ptr %a714) + %t716 = icmp ne i32 %t715, 0 + br i1 %t716, label %then7462, label %else7463 +then7462: + %t717 = load ptr, ptr %a1 + %t718 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t717, { ptr, i64, i64 } { ptr @.str.4770, i64 9, i64 0 }) + store { ptr, i64, i64 } %t718, ptr %a719 + %t720 = load ptr, ptr %a1 + %t721 = load ptr, ptr %a1 + %t722 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 + %t723 = load %S.ast.Type, ptr %t722 + %t724 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t721, %S.ast.Type %t723) + %t725 = load ptr, ptr %a1 + %t726 = load { ptr, i64, i64 }, ptr %a684 + %t727 = call { ptr, i64, i64 } @finch.gen.op(ptr %t725, { ptr, i64, i64 } %t726) + %t728 = load { ptr, i64, i64 }, ptr %a719 + call void @finch.gen.store(ptr %t720, { ptr, i64, i64 } %t724, { ptr, i64, i64 } %t727, { ptr, i64, i64 } %t728) + store { ptr, i64, i64 } %t724, ptr %a729 + call void @finch_str_drop(ptr %a729) + store { ptr, i64, i64 } %t727, ptr %a730 + call void @finch_str_drop(ptr %a730) + %t731 = load ptr, ptr %a1 + %t732 = getelementptr inbounds %S.gen.Plan, ptr %a273, i32 0, i32 0 + %t733 = getelementptr inbounds %S.gen.Abi, ptr %t732, i32 0, i32 2 + %t734 = load { ptr, i64, i64 }, ptr %t733 + store { ptr, i64, i64 } { ptr @.str.4771, i64 4, 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.4772, i64 1, i64 0 }, ptr %a741 + call void @finch_str_concat(ptr %a739, ptr %a740, ptr %a741) + store { ptr, i64, i64 } %t738, ptr %a742 + call void @finch_str_drop(ptr %a742) + %t743 = load { ptr, i64, i64 }, ptr %a739 + %t744 = load ptr, ptr %a1 + %t745 = getelementptr inbounds %S.gen.Plan, ptr %a273, i32 0, i32 0 + %t746 = getelementptr inbounds %S.gen.Abi, ptr %t745, i32 0, i32 2 + %t747 = load { ptr, i64, i64 }, ptr %t746 + %t748 = load { ptr, i64, i64 }, ptr %a719 + %t749 = call { ptr, i64, i64 } @finch.gen.load(ptr %t744, { ptr, i64, i64 } %t747, { ptr, i64, i64 } %t748) + store { ptr, i64, i64 } %t743, ptr %a751 + store { ptr, i64, i64 } %t749, ptr %a752 + call void @finch_str_concat(ptr %a750, ptr %a751, ptr %a752) + store { ptr, i64, i64 } %t743, ptr %a753 + call void @finch_str_drop(ptr %a753) + store { ptr, i64, i64 } %t749, ptr %a754 + call void @finch_str_drop(ptr %a754) + %t755 = load { ptr, i64, i64 }, ptr %a750 + call void @finch.gen.emit(ptr %t731, { ptr, i64, i64 } %t755) + store { ptr, i64, i64 } %t755, ptr %a756 + call void @finch_str_drop(ptr %a756) + call void @finch_str_drop(ptr %a719) + br label %endif7464 +else7463: + %t757 = load ptr, ptr %a1 + %t758 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 + %t759 = load %S.ast.Type, ptr %t758 + %t760 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t757, %S.ast.Type %t759) + %t761 = load { ptr, i64, i64 }, ptr %a685 + store { ptr, i64, i64 } %t760, ptr %a685 + store { ptr, i64, i64 } %t761, ptr %a762 + call void @finch_str_drop(ptr %a762) + %t763 = load ptr, ptr %a1 + %t764 = load ptr, ptr %a1 + %t765 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 + %t766 = load %S.ast.Type, ptr %t765 + %t767 = call { ptr, i64, i64 } @finch.gen.cLL(ptr %t764, %S.ast.Type %t766) + store { ptr, i64, i64 } { ptr @.str.4773, i64 4, i64 0 }, ptr %a769 + store { ptr, i64, i64 } %t767, ptr %a770 + call void @finch_str_concat(ptr %a768, ptr %a769, ptr %a770) + store { ptr, i64, i64 } %t767, ptr %a771 + call void @finch_str_drop(ptr %a771) + %t772 = load { ptr, i64, i64 }, ptr %a768 + store { ptr, i64, i64 } %t772, ptr %a774 + store { ptr, i64, i64 } { ptr @.str.4774, i64 1, i64 0 }, ptr %a775 + call void @finch_str_concat(ptr %a773, ptr %a774, ptr %a775) + store { ptr, i64, i64 } %t772, ptr %a776 + call void @finch_str_drop(ptr %a776) + %t777 = load { ptr, i64, i64 }, ptr %a773 + %t778 = load ptr, ptr %a1 + %t779 = load { ptr, i64, i64 }, ptr %a684 + %t780 = call { ptr, i64, i64 } @finch.gen.op(ptr %t778, { ptr, i64, i64 } %t779) + store { ptr, i64, i64 } %t777, ptr %a782 + store { ptr, i64, i64 } %t780, ptr %a783 + call void @finch_str_concat(ptr %a781, ptr %a782, ptr %a783) + store { ptr, i64, i64 } %t777, ptr %a784 + call void @finch_str_drop(ptr %a784) + store { ptr, i64, i64 } %t780, ptr %a785 + call void @finch_str_drop(ptr %a785) + %t786 = load { ptr, i64, i64 }, ptr %a781 + call void @finch.gen.emit(ptr %t763, { ptr, i64, i64 } %t786) + store { ptr, i64, i64 } %t786, ptr %a787 + call void @finch_str_drop(ptr %a787) + br label %endif7464 +endif7464: + br label %endif7461 +endif7461: + br label %endif7458 +endif7458: + %t788 = load ptr, ptr %a1 + %t789 = load %S.gen.Saved, ptr %a276 + %t790 = load { ptr, i64, i64 }, ptr %a685 + store { ptr, i64, i64 } { ptr @.str.4775, i64 15, i64 0 }, ptr %a792 + store { ptr, i64, i64 } %t790, ptr %a793 + call void @finch_str_concat(ptr %a791, ptr %a792, ptr %a793) + %t794 = load { ptr, i64, i64 }, ptr %a791 + store { ptr, i64, i64 } %t794, ptr %a796 + store { ptr, i64, i64 } { ptr @.str.4776, i64 1, i64 0 }, ptr %a797 + call void @finch_str_concat(ptr %a795, ptr %a796, ptr %a797) + store { ptr, i64, i64 } %t794, ptr %a798 + call void @finch_str_drop(ptr %a798) + %t799 = load { ptr, i64, i64 }, ptr %a795 + %t800 = getelementptr inbounds %S.gen.Plan, ptr %a273, i32 0, i32 2 + %t801 = load { ptr, i64, i64 }, ptr %t800 + store { ptr, i64, i64 } %t799, ptr %a803 + store { ptr, i64, i64 } %t801, ptr %a804 + call void @finch_str_concat(ptr %a802, ptr %a803, ptr %a804) + store { ptr, i64, i64 } %t799, ptr %a805 + call void @finch_str_drop(ptr %a805) + %t806 = load { ptr, i64, i64 }, ptr %a802 + store { ptr, i64, i64 } %t806, ptr %a808 + store { ptr, i64, i64 } { ptr @.str.4777, i64 1, i64 0 }, ptr %a809 + call void @finch_str_concat(ptr %a807, ptr %a808, ptr %a809) + store { ptr, i64, i64 } %t806, ptr %a810 + call void @finch_str_drop(ptr %a810) + %t811 = load { ptr, i64, i64 }, ptr %a807 + %t812 = load { ptr, i64, i64 }, ptr %a38 + 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) + store { ptr, i64, i64 } %t811, ptr %a816 + call void @finch_str_drop(ptr %a816) + %t817 = load { ptr, i64, i64 }, ptr %a813 + store { ptr, i64, i64 } %t817, ptr %a819 + store { ptr, i64, i64 } { ptr @.str.4778, i64 1, i64 0 }, ptr %a820 + call void @finch_str_concat(ptr %a818, ptr %a819, ptr %a820) + store { ptr, i64, i64 } %t817, ptr %a821 + call void @finch_str_drop(ptr %a821) + %t822 = load { ptr, i64, i64 }, ptr %a818 + %t823 = getelementptr inbounds { ptr, i64, i64 }, ptr %a277, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.4779, i64 2, i64 0 }, ptr %a824 + call void @finch_str_join(ptr %a825, ptr %a277, ptr %a824) + %t826 = load { ptr, i64, i64 }, ptr %a825 + store { ptr, i64, i64 } %t822, ptr %a828 + store { ptr, i64, i64 } %t826, ptr %a829 + call void @finch_str_concat(ptr %a827, ptr %a828, ptr %a829) + store { ptr, i64, i64 } %t822, ptr %a830 + call void @finch_str_drop(ptr %a830) + store { ptr, i64, i64 } %t826, ptr %a831 + call void @finch_str_drop(ptr %a831) + %t832 = load { ptr, i64, i64 }, ptr %a827 + store { ptr, i64, i64 } %t832, ptr %a834 + store { ptr, i64, i64 } { ptr @.str.4780, i64 1, i64 0 }, ptr %a835 + call void @finch_str_concat(ptr %a833, ptr %a834, ptr %a835) + store { ptr, i64, i64 } %t832, ptr %a836 + call void @finch_str_drop(ptr %a836) + %t837 = load { ptr, i64, i64 }, ptr %a833 + call void @finch.gen.endHelper(ptr %t788, %S.gen.Saved %t789, { ptr, i64, i64 } %t837) + store { ptr, i64, i64 } %t837, ptr %a838 + call void @finch_str_drop(ptr %a838) + %t839 = load { ptr, i64, i64 }, ptr %a38 + call void @finch_str_drop(ptr %a685) + call void @finch_str_drop(ptr %a684) + call void @finch.drop.arr_str(ptr %a303) + call void @finch_str_drop(ptr %a279) + call void @finch.drop.arr_str(ptr %a277) + call void @finch.drop.S_gen_Saved(ptr %a276) + call void @finch.drop.S_gen_Plan(ptr %a273) + call void @finch.drop.S_gen_FnSig(ptr %a17) + ret { ptr, i64, i64 } %t839 } define internal %S.gen.Val @finch.gen.enumFrom(ptr %p0, %S.ast.Node %p1, i64 %p2) { @@ -63604,86 +75161,107 @@ entry: %a53 = alloca { ptr, i64, i64 }, align 16 %a54 = alloca { ptr, i64, i64 }, align 16 %a55 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca %S.ast.Type, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca i64, align 16 + %a56 = alloca { ptr, i64, i64 }, align 16 + %a57 = 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 + %a73 = alloca %S.ast.Type, align 16 + %a80 = alloca { ptr, i64, i64 }, align 16 %a82 = alloca i64, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = 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 + %a85 = alloca i64, align 16 + %a105 = alloca { ptr, i64, i64 }, align 16 + %a106 = alloca { ptr, i64, i64 }, align 16 + %a107 = 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 %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca %S.ast.Type, align 16 - %a120 = alloca %S.ast.Type, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca 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 + %a116 = alloca { ptr, i64, i64 }, align 16 + %a119 = alloca { ptr, i64, i64 }, align 16 + %a120 = alloca { ptr, i64, i64 }, align 16 + %a124 = alloca %S.ast.Type, align 16 + %a125 = alloca %S.ast.Type, align 16 + %a135 = alloca %S.ast.Type, align 16 + %a136 = alloca { ptr, i64, i64 }, align 16 + %a137 = alloca { ptr, i64, i64 }, align 16 + %a141 = alloca i64, align 16 %a146 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 + %a147 = alloca { ptr, i64, i64 }, align 16 + %a148 = alloca { ptr, i64, i64 }, align 16 + %a150 = 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 %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 %a168 = alloca { ptr, i64, i64 }, align 16 + %a169 = 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 - %a182 = 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 %a191 = alloca { ptr, i64, i64 }, align 16 - %a192 = 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 %a196 = alloca { ptr, i64, i64 }, align 16 %a197 = alloca { ptr, i64, i64 }, align 16 + %a200 = alloca { ptr, i64, i64 }, align 16 %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = 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 - %a211 = 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 %a215 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca %S.ast.Type, align 16 - %a221 = alloca %S.ast.Type, align 16 + %a218 = alloca { ptr, i64, i64 }, align 16 + %a221 = alloca { ptr, i64, i64 }, align 16 + %a222 = alloca { ptr, i64, i64 }, align 16 + %a223 = alloca { ptr, i64, i64 }, align 16 + %a226 = alloca { ptr, i64, i64 }, align 16 + %a227 = 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 + %a237 = alloca { ptr, i64, i64 }, align 16 + %a240 = alloca { ptr, i64, i64 }, align 16 + %a243 = alloca %S.ast.Type, align 16 + %a244 = alloca %S.ast.Type, 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 %panic7097, label %ok7098 -panic7097: - call void @finch_panic(ptr @.str.4612, i64 4087, ptr @.str.4613) + br i1 %t5, label %panic7468, label %ok7469 +panic7468: + call void @finch_panic(ptr @.str.4781, i64 4374, ptr @.str.4782) unreachable -ok7098: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 20 +ok7469: + %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 21 %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 %range7099, label %inrange7100 -range7099: - call void @finch_panic_index(ptr @.str.4614, i64 4087, i64 %t7, i64 %t9) + br i1 %t10, label %range7470, label %inrange7471 +range7470: + call void @finch_panic_index(ptr @.str.4783, i64 4374, i64 %t7, i64 %t9) unreachable -inrange7100: +inrange7471: %t11 = extractvalue { ptr, i64, i64 } %t8, 0 %t12 = getelementptr inbounds %S.gen.EnumDef, ptr %t11, i64 %t7 %t13 = load %S.gen.EnumDef, ptr %t12 @@ -63701,11 +75279,11 @@ inrange7100: %t24 = load { ptr, i64, i64 }, ptr %t23 %t25 = extractvalue { ptr, i64, i64 } %t24, 1 %t26 = icmp uge i64 0, %t25 - br i1 %t26, label %range7101, label %inrange7102 -range7101: - call void @finch_panic_index(ptr @.str.4615, i64 4089, i64 0, i64 %t25) + br i1 %t26, label %range7472, label %inrange7473 +range7472: + call void @finch_panic_index(ptr @.str.4784, i64 4376, i64 0, i64 %t25) unreachable -inrange7102: +inrange7473: %t27 = extractvalue { ptr, i64, i64 } %t24, 0 %t28 = getelementptr inbounds %S.ast.Node, ptr %t27, i64 0 %t29 = load %S.ast.Node, ptr %t28 @@ -63715,25 +75293,25 @@ inrange7102: %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 %then7103, label %endif7105 -then7103: + br i1 %t35, label %then7474, label %endif7476 +then7474: %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 %range7106, label %inrange7107 -range7106: - call void @finch_panic_index(ptr @.str.4616, i64 4091, i64 0, i64 %t39) + br i1 %t40, label %range7477, label %inrange7478 +range7477: + call void @finch_panic_index(ptr @.str.4785, i64 4378, i64 0, i64 %t39) unreachable -inrange7107: +inrange7478: %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.4617, i64 54, i64 0 }, ptr %a48 + store { ptr, i64, i64 } { ptr @.str.4786, 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 @@ -63742,227 +75320,280 @@ inrange7107: store { ptr, i64, i64 } %t49, ptr %a54 store { ptr, i64, i64 } %t52, 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 %t36, %S.ast.Node %t43, { ptr, i64, i64 } %t56) - br label %endif7105 -endif7105: - %t57 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.4618, 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 - call void @finch_str_copy(ptr %a61, ptr %a60) - %t62 = load { ptr, i64, i64 }, ptr %a61 - %t63 = insertvalue %S.ast.Type %t57, { ptr, i64, i64 } %t62, 2 - %t64 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 0 - %t65 = load { ptr, i64, i64 }, ptr %t64 - store { ptr, i64, i64 } %t65, ptr %a66 - call void @finch_str_copy(ptr %a67, ptr %a66) - %t68 = load { ptr, i64, i64 }, ptr %a67 - %t69 = insertvalue %S.ast.Type %t63, { ptr, i64, i64 } %t68, 3 - 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 %then7108, label %endif7110 -then7108: - %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.4619, 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.cond7111 -find.cond7111: - %t83 = load i64, ptr %a82 - %t84 = icmp slt i64 %t83, %t80 - br i1 %t84, label %find.body7112, label %find.end7115 -find.body7112: - %t85 = getelementptr inbounds i64, ptr %t81, i64 %t83 - %t86 = load i64, ptr %t85 - %t87 = icmp eq i64 %t86, %t78 - br i1 %t87, label %find.hit7113, label %find.next7114 -find.hit7113: - store i64 %t83, ptr %a79 - br label %find.end7115 -find.next7114: - %t88 = add i64 %t83, 1 - store i64 %t88, ptr %a82 - br label %find.cond7111 -find.end7115: - %t89 = load i64, ptr %a79 - %t90 = icmp sge i64 %t89, 0 - %t91 = xor i1 %t90, true - br i1 %t91, label %then7116, label %endif7118 -then7116: - %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 %range7119, label %inrange7120 -range7119: - call void @finch_panic_index(ptr @.str.4620, i64 4096, i64 0, i64 %t95) + store { ptr, i64, i64 } %t49, ptr %a56 + call void @finch_str_drop(ptr %a56) + store { ptr, i64, i64 } %t52, ptr %a57 + call void @finch_str_drop(ptr %a57) + %t58 = load { ptr, i64, i64 }, ptr %a53 + call void @finch.gen.fail(ptr %t36, %S.ast.Node %t43, { ptr, i64, i64 } %t58) + store { ptr, i64, i64 } %t58, ptr %a59 + call void @finch_str_drop(ptr %a59) + br label %endif7476 +endif7476: + %t60 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.4787, i64 4, i64 0 }, 0 + %t61 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 1 + %t62 = load { ptr, i64, i64 }, ptr %t61 + store { ptr, i64, i64 } %t62, ptr %a63 + call void @finch_str_copy(ptr %a64, ptr %a63) + %t65 = load { ptr, i64, i64 }, ptr %a64 + %t66 = insertvalue %S.ast.Type %t60, { ptr, i64, i64 } %t65, 2 + %t67 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 0 + %t68 = load { ptr, i64, i64 }, ptr %t67 + store { ptr, i64, i64 } %t68, ptr %a69 + call void @finch_str_copy(ptr %a70, ptr %a69) + %t71 = load { ptr, i64, i64 }, ptr %a70 + %t72 = insertvalue %S.ast.Type %t66, { ptr, i64, i64 } %t71, 3 + store %S.ast.Type %t72, ptr %a73 + %t74 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 3 + %t75 = load i1, ptr %t74 + br i1 %t75, label %then7479, label %endif7481 +then7479: + %t76 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 3 + %t77 = getelementptr inbounds { ptr, i64, i64 }, ptr %t76, i32 0, i32 1 + %t78 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 0 + %t79 = load { ptr, i64, i64 }, ptr %t78 + store { ptr, i64, i64 } %t79, ptr %a80 + %t81 = call i64 @finch_str_to_int(ptr %a80, ptr @.str.4788, i64 4382) + store i64 -1, ptr %a82 + %t83 = load i64, ptr %t77 + %t84 = load ptr, ptr %t76 + store i64 0, ptr %a85 + br label %find.cond7482 +find.cond7482: + %t86 = load i64, ptr %a85 + %t87 = icmp slt i64 %t86, %t83 + br i1 %t87, label %find.body7483, label %find.end7486 +find.body7483: + %t88 = getelementptr inbounds i64, ptr %t84, i64 %t86 + %t89 = load i64, ptr %t88 + %t90 = icmp eq i64 %t89, %t81 + br i1 %t90, label %find.hit7484, label %find.next7485 +find.hit7484: + store i64 %t86, ptr %a82 + br label %find.end7486 +find.next7485: + %t91 = add i64 %t86, 1 + store i64 %t91, ptr %a85 + br label %find.cond7482 +find.end7486: + %t92 = load i64, ptr %a82 + %t93 = icmp sge i64 %t92, 0 + %t94 = xor i1 %t93, true + br i1 %t94, label %then7487, label %endif7489 +then7487: + %t95 = load ptr, ptr %a1 + %t96 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t97 = load { ptr, i64, i64 }, ptr %t96 + %t98 = extractvalue { ptr, i64, i64 } %t97, 1 + %t99 = icmp uge i64 0, %t98 + br i1 %t99, label %range7490, label %inrange7491 +range7490: + call void @finch_panic_index(ptr @.str.4789, i64 4383, i64 0, i64 %t98) unreachable -inrange7120: - %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.4621, 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 - %t107 = load { ptr, i64, i64 }, ptr %t106 - store { ptr, i64, i64 } %t105, 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 - call void @finch.gen.fail(ptr %t92, %S.ast.Node %t99, { ptr, i64, i64 } %t111) - br label %endif7118 -endif7118: - %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 - call void @finch_str_copy(ptr %a115, ptr %a114) - %t116 = load { ptr, i64, i64 }, ptr %a115 - %t117 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t116, 0 - %t118 = load %S.ast.Type, ptr %a70 - store %S.ast.Type %t118, ptr %a119 - call void @finch.copy.S_ast_Type(ptr %a120, ptr %a119) - %t121 = load %S.ast.Type, ptr %a120 - %t122 = insertvalue %S.gen.Val %t117, %S.ast.Type %t121, 1 - ret %S.gen.Val %t122 -endif7110: - %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.4622, 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.4623, 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.cond7121 -for.cond7121: - %t136 = load i64, ptr %a135 - %t137 = icmp slt i64 %t136, %t134 - br i1 %t137, label %for.body7122, label %for.end7124 -for.body7122: - %t138 = load ptr, ptr %a1 - %t139 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } { ptr @.str.4624, 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.4625, 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 - %t149 = load i64, ptr %a135 - %t150 = load { ptr, i64, i64 }, ptr %t148 - %t151 = extractvalue { ptr, i64, i64 } %t150, 1 - %t152 = icmp uge i64 %t149, %t151 - br i1 %t152, label %range7125, label %inrange7126 -range7125: - call void @finch_panic_index(ptr @.str.4626, i64 4103, i64 %t149, i64 %t151) +inrange7491: + %t100 = extractvalue { ptr, i64, i64 } %t97, 0 + %t101 = getelementptr inbounds %S.ast.Node, ptr %t100, i64 0 + %t102 = load %S.ast.Node, ptr %t101 + %t103 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 0 + %t104 = load { ptr, i64, i64 }, ptr %t103 + store { ptr, i64, i64 } %t104, ptr %a106 + store { ptr, i64, i64 } { ptr @.str.4790, i64 37, i64 0 }, ptr %a107 + call void @finch_str_concat(ptr %a105, ptr %a106, ptr %a107) + %t108 = load { ptr, i64, i64 }, ptr %a105 + %t109 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 1 + %t110 = load { ptr, i64, i64 }, ptr %t109 + store { ptr, i64, i64 } %t108, ptr %a112 + store { ptr, i64, i64 } %t110, ptr %a113 + call void @finch_str_concat(ptr %a111, ptr %a112, ptr %a113) + store { ptr, i64, i64 } %t108, ptr %a114 + call void @finch_str_drop(ptr %a114) + %t115 = load { ptr, i64, i64 }, ptr %a111 + call void @finch.gen.fail(ptr %t95, %S.ast.Node %t102, { ptr, i64, i64 } %t115) + store { ptr, i64, i64 } %t115, ptr %a116 + call void @finch_str_drop(ptr %a116) + br label %endif7489 +endif7489: + %t117 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 0 + %t118 = load { ptr, i64, i64 }, ptr %t117 + store { ptr, i64, i64 } %t118, ptr %a119 + call void @finch_str_copy(ptr %a120, ptr %a119) + %t121 = load { ptr, i64, i64 }, ptr %a120 + %t122 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t121, 0 + %t123 = load %S.ast.Type, ptr %a73 + store %S.ast.Type %t123, ptr %a124 + call void @finch.copy.S_ast_Type(ptr %a125, ptr %a124) + %t126 = load %S.ast.Type, ptr %a125 + %t127 = insertvalue %S.gen.Val %t122, %S.ast.Type %t126, 1 + call void @finch.drop.S_ast_Type(ptr %a73) + call void @finch.drop.S_gen_Val(ptr %a31) + call void @finch.drop.S_gen_EnumDef(ptr %a17) + ret %S.gen.Val %t127 +endif7481: + %t128 = load ptr, ptr %a1 + %t129 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 0 + %t130 = load { ptr, i64, i64 }, ptr %t129 + %t131 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 1 + %t132 = load %S.ast.Type, ptr %t131 + %t133 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4791, i64 3, i64 0 }) + %t134 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t128, { ptr, i64, i64 } %t130, %S.ast.Type %t132, %S.ast.Type %t133) + store %S.ast.Type %t133, ptr %a135 + call void @finch.drop.S_ast_Type(ptr %a135) + store { ptr, i64, i64 } %t134, ptr %a136 + store { ptr, i64, i64 } { ptr @.str.4792, i64 0, i64 0 }, ptr %a137 + %t138 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 3 + %t139 = getelementptr inbounds { ptr, i64, i64 }, ptr %t138, i32 0, i32 1 + %t140 = load i64, ptr %t139 + store i64 0, ptr %a141 + br label %for.cond7492 +for.cond7492: + %t142 = load i64, ptr %a141 + %t143 = icmp slt i64 %t142, %t140 + br i1 %t143, label %for.body7493, label %for.end7495 +for.body7493: + %t144 = load ptr, ptr %a1 + %t145 = load { ptr, i64, i64 }, ptr %a136 + store { ptr, i64, i64 } { ptr @.str.4793, i64 12, 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.4794, i64 2, i64 0 }, ptr %a152 + call void @finch_str_concat(ptr %a150, ptr %a151, ptr %a152) + store { ptr, i64, i64 } %t149, ptr %a153 + call void @finch_str_drop(ptr %a153) + %t154 = load { ptr, i64, i64 }, ptr %a150 + %t155 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 3 + %t156 = load i64, ptr %a141 + %t157 = load { ptr, i64, i64 }, ptr %t155 + %t158 = extractvalue { ptr, i64, i64 } %t157, 1 + %t159 = icmp uge i64 %t156, %t158 + br i1 %t159, label %range7496, label %inrange7497 +range7496: + call void @finch_panic_index(ptr @.str.4795, i64 4390, i64 %t156, i64 %t158) unreachable -inrange7126: - %t153 = extractvalue { ptr, i64, i64 } %t150, 0 - %t154 = getelementptr inbounds i64, ptr %t153, i64 %t149 - %t155 = load i64, ptr %t154 - call void @finch_str_from_int(ptr %a156, i64 %t155) - %t157 = load { ptr, i64, i64 }, ptr %a156 - store { ptr, i64, i64 } %t147, 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 - %t162 = call { ptr, i64, i64 } @finch.gen.op(ptr %t138, { ptr, i64, i64 } %t161) - store { ptr, i64, i64 } %t162, ptr %a163 - %t164 = load i64, ptr %a135 - %t165 = icmp eq i64 %t164, 0 - br i1 %t165, label %then7127, label %else7128 -then7127: - %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 %endif7129 -else7128: - %t170 = load ptr, ptr %a1 - %t171 = load { ptr, i64, i64 }, ptr %a131 - store { ptr, i64, i64 } { ptr @.str.4627, 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.4628, 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 - store { ptr, i64, i64 } %t179, 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 - %t185 = call { ptr, i64, i64 } @finch.gen.op(ptr %t170, { ptr, i64, i64 } %t184) - store { ptr, i64, i64 } %t185, ptr %a131 - br label %endif7129 -endif7129: - br label %for.step7123 -for.step7123: - %t186 = load i64, ptr %a135 - %t187 = add i64 %t186, 1 - store i64 %t187, ptr %a135 - br label %for.cond7121 -for.end7124: - %t188 = load ptr, ptr %a1 - %t189 = load ptr, ptr %a1 - %t190 = load { ptr, i64, i64 }, ptr %a131 - store { ptr, i64, i64 } { ptr @.str.4629, 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.4630, 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.4631, 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 - %t206 = load %S.ast.Node, ptr %a2 - 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.4632, 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.4633, 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) - %t218 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t217, 0 - %t219 = load %S.ast.Type, ptr %a70 - store %S.ast.Type %t219, ptr %a220 - call void @finch.copy.S_ast_Type(ptr %a221, ptr %a220) - %t222 = load %S.ast.Type, ptr %a221 - %t223 = insertvalue %S.gen.Val %t218, %S.ast.Type %t222, 1 - ret %S.gen.Val %t223 +inrange7497: + %t160 = extractvalue { ptr, i64, i64 } %t157, 0 + %t161 = getelementptr inbounds i64, ptr %t160, i64 %t156 + %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 } %t154, ptr %a166 + store { ptr, i64, i64 } %t164, ptr %a167 + call void @finch_str_concat(ptr %a165, ptr %a166, ptr %a167) + store { ptr, i64, i64 } %t154, ptr %a168 + call void @finch_str_drop(ptr %a168) + store { ptr, i64, i64 } %t164, ptr %a169 + call void @finch_str_drop(ptr %a169) + %t170 = load { ptr, i64, i64 }, ptr %a165 + %t171 = call { ptr, i64, i64 } @finch.gen.op(ptr %t144, { ptr, i64, i64 } %t170) + store { ptr, i64, i64 } %t170, ptr %a172 + call void @finch_str_drop(ptr %a172) + store { ptr, i64, i64 } %t171, ptr %a173 + %t174 = load i64, ptr %a141 + %t175 = icmp eq i64 %t174, 0 + br i1 %t175, label %then7498, label %else7499 +then7498: + %t176 = load { ptr, i64, i64 }, ptr %a173 + store { ptr, i64, i64 } %t176, ptr %a177 + call void @finch_str_copy(ptr %a178, ptr %a177) + %t179 = load { ptr, i64, i64 }, ptr %a178 + %t180 = load { ptr, i64, i64 }, ptr %a137 + store { ptr, i64, i64 } %t179, ptr %a137 + store { ptr, i64, i64 } %t180, ptr %a181 + call void @finch_str_drop(ptr %a181) + br label %endif7500 +else7499: + %t182 = load ptr, ptr %a1 + %t183 = load { ptr, i64, i64 }, ptr %a137 + store { ptr, i64, i64 } { ptr @.str.4796, i64 6, 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.4797, i64 2, i64 0 }, ptr %a190 + call void @finch_str_concat(ptr %a188, ptr %a189, ptr %a190) + store { ptr, i64, i64 } %t187, ptr %a191 + call void @finch_str_drop(ptr %a191) + %t192 = load { ptr, i64, i64 }, ptr %a188 + %t193 = load { ptr, i64, i64 }, ptr %a173 + store { ptr, i64, i64 } %t192, ptr %a195 + store { ptr, i64, i64 } %t193, ptr %a196 + call void @finch_str_concat(ptr %a194, ptr %a195, ptr %a196) + store { ptr, i64, i64 } %t192, ptr %a197 + call void @finch_str_drop(ptr %a197) + %t198 = load { ptr, i64, i64 }, ptr %a194 + %t199 = call { ptr, i64, i64 } @finch.gen.op(ptr %t182, { ptr, i64, i64 } %t198) + store { ptr, i64, i64 } %t198, ptr %a200 + call void @finch_str_drop(ptr %a200) + %t201 = load { ptr, i64, i64 }, ptr %a137 + store { ptr, i64, i64 } %t199, ptr %a137 + store { ptr, i64, i64 } %t201, ptr %a202 + call void @finch_str_drop(ptr %a202) + br label %endif7500 +endif7500: + call void @finch_str_drop(ptr %a173) + br label %for.step7494 +for.step7494: + %t203 = load i64, ptr %a141 + %t204 = add i64 %t203, 1 + store i64 %t204, ptr %a141 + br label %for.cond7492 +for.end7495: + %t205 = load ptr, ptr %a1 + %t206 = load ptr, ptr %a1 + %t207 = load { ptr, i64, i64 }, ptr %a137 + store { ptr, i64, i64 } { ptr @.str.4798, i64 7, i64 0 }, ptr %a209 + store { ptr, i64, i64 } %t207, ptr %a210 + 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.4799, i64 6, i64 0 }, ptr %a214 + call void @finch_str_concat(ptr %a212, ptr %a213, ptr %a214) + store { ptr, i64, i64 } %t211, ptr %a215 + call void @finch_str_drop(ptr %a215) + %t216 = load { ptr, i64, i64 }, ptr %a212 + %t217 = call { ptr, i64, i64 } @finch.gen.op(ptr %t206, { ptr, i64, i64 } %t216) + store { ptr, i64, i64 } %t216, ptr %a218 + call void @finch_str_drop(ptr %a218) + %t219 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 1 + %t220 = load { ptr, i64, i64 }, ptr %t219 + store { ptr, i64, i64 } { ptr @.str.4800, i64 32, i64 0 }, ptr %a222 + store { ptr, i64, i64 } %t220, ptr %a223 + call void @finch_str_concat(ptr %a221, ptr %a222, ptr %a223) + %t224 = load { ptr, i64, i64 }, ptr %a221 + %t225 = load %S.ast.Node, ptr %a2 + call void @finch.gen.panicIf(ptr %t205, { ptr, i64, i64 } %t217, { ptr, i64, i64 } %t224, %S.ast.Node %t225) + store { ptr, i64, i64 } %t217, ptr %a226 + call void @finch_str_drop(ptr %a226) + store { ptr, i64, i64 } %t224, ptr %a227 + call void @finch_str_drop(ptr %a227) + %t228 = load ptr, ptr %a1 + %t229 = load { ptr, i64, i64 }, ptr %a136 + store { ptr, i64, i64 } { ptr @.str.4801, i64 10, 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.4802, i64 7, i64 0 }, ptr %a236 + call void @finch_str_concat(ptr %a234, ptr %a235, ptr %a236) + store { ptr, i64, i64 } %t233, ptr %a237 + call void @finch_str_drop(ptr %a237) + %t238 = load { ptr, i64, i64 }, ptr %a234 + %t239 = call { ptr, i64, i64 } @finch.gen.op(ptr %t228, { ptr, i64, i64 } %t238) + store { ptr, i64, i64 } %t238, ptr %a240 + call void @finch_str_drop(ptr %a240) + %t241 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t239, 0 + %t242 = load %S.ast.Type, ptr %a73 + store %S.ast.Type %t242, ptr %a243 + call void @finch.copy.S_ast_Type(ptr %a244, ptr %a243) + %t245 = load %S.ast.Type, ptr %a244 + %t246 = insertvalue %S.gen.Val %t241, %S.ast.Type %t245, 1 + call void @finch_str_drop(ptr %a137) + call void @finch_str_drop(ptr %a136) + call void @finch.drop.S_ast_Type(ptr %a73) + call void @finch.drop.S_gen_Val(ptr %a31) + call void @finch.drop.S_gen_EnumDef(ptr %a17) + ret %S.gen.Val %t246 } define internal { ptr, i64, i64 } @finch.gen.cExt(ptr %p0, %S.ast.Type %p1) { @@ -63980,106 +75611,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.4634, i64 4, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.4803, 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.from7130 -logic.from7130: - br i1 %t8, label %logic.end7132, label %logic.rhs7131 -logic.rhs7131: + br label %logic.from7501 +logic.from7501: + br i1 %t8, label %logic.end7503, label %logic.rhs7502 +logic.rhs7502: %t9 = load %S.ast.Type, ptr %a2 %t10 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t9) - br label %logic.rend7133 -logic.rend7133: - br label %logic.end7132 -logic.end7132: - %t11 = phi i1 [ true, %logic.from7130 ], [ %t10, %logic.rend7133 ] - br i1 %t11, label %then7134, label %endif7136 -then7134: + br label %logic.rend7504 +logic.rend7504: + br label %logic.end7503 +logic.end7503: + %t11 = phi i1 [ true, %logic.from7501 ], [ %t10, %logic.rend7504 ] + br i1 %t11, label %then7505, label %endif7507 +then7505: %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 %then7137, label %endif7139 -then7137: - ret { ptr, i64, i64 } { ptr @.str.4635, i64 8, i64 0 } -endif7139: - br label %endif7136 -endif7136: + br i1 %t14, label %then7508, label %endif7510 +then7508: + ret { ptr, i64, i64 } { ptr @.str.4804, i64 8, i64 0 } +endif7510: + br label %endif7507 +endif7507: %t15 = load %S.ast.Type, ptr %a2 %t16 = call i1 @finch.gen.isSigned(%S.ast.Type %t15) - br label %logic.from7140 -logic.from7140: - br i1 %t16, label %logic.end7142, label %logic.rhs7141 -logic.rhs7141: + br label %logic.from7511 +logic.from7511: + br i1 %t16, label %logic.end7513, label %logic.rhs7512 +logic.rhs7512: %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.4636, i64 4, i64 0 }, ptr %a20 + store { ptr, i64, i64 } { ptr @.str.4805, 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.from7143 -logic.from7143: - br i1 %t22, label %logic.rhs7144, label %logic.end7145 -logic.rhs7144: + br label %logic.from7514 +logic.from7514: + br i1 %t22, label %logic.rhs7515, label %logic.end7516 +logic.rhs7515: %t23 = load ptr, ptr %a1 %t24 = icmp eq ptr %t23, null - br i1 %t24, label %panic7146, label %ok7147 -panic7146: - call void @finch_panic(ptr @.str.4637, i64 4123, ptr @.str.4638) + br i1 %t24, label %panic7517, label %ok7518 +panic7517: + call void @finch_panic(ptr @.str.4806, i64 4410, ptr @.str.4807) unreachable -ok7147: - %t25 = getelementptr inbounds %S.gen.Gen, ptr %t23, i32 0, i32 29 +ok7518: + %t25 = getelementptr inbounds %S.gen.Gen, ptr %t23, i32 0, i32 30 %t26 = load %S.platform.Target, ptr %t25 %t27 = call i1 @finch.platform.charIsSigned(%S.platform.Target %t26) - br label %logic.rend7148 -logic.rend7148: - br label %logic.end7145 -logic.end7145: - %t28 = phi i1 [ false, %logic.from7143 ], [ %t27, %logic.rend7148 ] - br label %logic.rend7149 -logic.rend7149: - br label %logic.end7142 -logic.end7142: - %t29 = phi i1 [ true, %logic.from7140 ], [ %t28, %logic.rend7149 ] - br label %logic.from7150 -logic.from7150: - br i1 %t29, label %logic.rhs7151, label %logic.end7152 -logic.rhs7151: + br label %logic.rend7519 +logic.rend7519: + br label %logic.end7516 +logic.end7516: + %t28 = phi i1 [ false, %logic.from7514 ], [ %t27, %logic.rend7519 ] + br label %logic.rend7520 +logic.rend7520: + br label %logic.end7513 +logic.end7513: + %t29 = phi i1 [ true, %logic.from7511 ], [ %t28, %logic.rend7520 ] + br label %logic.from7521 +logic.from7521: + br i1 %t29, label %logic.rhs7522, label %logic.end7523 +logic.rhs7522: %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.rend7153 -logic.rend7153: - br label %logic.end7152 -logic.end7152: - %t33 = phi i1 [ false, %logic.from7150 ], [ %t32, %logic.rend7153 ] - br i1 %t33, label %then7154, label %endif7156 -then7154: - ret { ptr, i64, i64 } { ptr @.str.4639, i64 8, i64 0 } -endif7156: + br label %logic.rend7524 +logic.rend7524: + br label %logic.end7523 +logic.end7523: + %t33 = phi i1 [ false, %logic.from7521 ], [ %t32, %logic.rend7524 ] + br i1 %t33, label %then7525, label %endif7527 +then7525: + ret { ptr, i64, i64 } { ptr @.str.4808, i64 8, i64 0 } +endif7527: %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.4640, i64 4, i64 0 }, ptr %a37 + store { ptr, i64, i64 } { ptr @.str.4809, 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.from7157 -logic.from7157: - br i1 %t39, label %logic.rhs7158, label %logic.end7159 -logic.rhs7158: + br label %logic.from7528 +logic.from7528: + br i1 %t39, label %logic.rhs7529, label %logic.end7530 +logic.rhs7529: %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.rend7160 -logic.rend7160: - br label %logic.end7159 -logic.end7159: - %t43 = phi i1 [ false, %logic.from7157 ], [ %t42, %logic.rend7160 ] - br i1 %t43, label %then7161, label %endif7163 -then7161: - ret { ptr, i64, i64 } { ptr @.str.4641, i64 8, i64 0 } -endif7163: - ret { ptr, i64, i64 } { ptr @.str.4642, i64 0, i64 0 } + br label %logic.rend7531 +logic.rend7531: + br label %logic.end7530 +logic.end7530: + %t43 = phi i1 [ false, %logic.from7528 ], [ %t42, %logic.rend7531 ] + br i1 %t43, label %then7532, label %endif7534 +then7532: + ret { ptr, i64, i64 } { ptr @.str.4810, i64 8, i64 0 } +endif7534: + ret { ptr, i64, i64 } { ptr @.str.4811, i64 0, i64 0 } } define internal { ptr, i64, i64 } @finch.gen.cLL(ptr %p0, %S.ast.Type %p1) { @@ -64093,13 +75724,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.4643, i64 3, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.4812, 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 %then7164, label %endif7166 -then7164: - ret { ptr, i64, i64 } { ptr @.str.4644, i64 3, i64 0 } -endif7166: + br i1 %t8, label %then7535, label %endif7537 +then7535: + ret { ptr, i64, i64 } { ptr @.str.4813, i64 3, i64 0 } +endif7537: %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) @@ -64120,361 +75751,475 @@ entry: %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 + %a51 = 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 %a59 = 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 + %a63 = 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 - %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 + %a72 = alloca { ptr, i64, i64 }, align 16 %a74 = 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 - %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 - %a93 = 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 + %a87 = alloca { ptr, i64, i64 }, align 16 + %a89 = 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 %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a97 = 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 %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 + %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 + %a114 = 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 + %a123 = alloca 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 + %a142 = 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 + %a149 = alloca { ptr, i64, i64 }, align 16 + %a150 = 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 + %a155 = 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 %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 + %a166 = alloca { ptr, i64, i64 }, align 16 + %a167 = alloca { ptr, i64, i64 }, align 16 + %a169 = 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 %a183 = alloca { ptr, i64, i64 }, align 16 %a184 = alloca { ptr, i64, i64 }, align 16 %a185 = alloca { ptr, i64, i64 }, 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 - %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 + %a186 = 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 + %a196 = alloca { ptr, i64, i64 }, align 16 + %a197 = alloca { ptr, i64, i64 }, align 16 + %a199 = 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 + %a205 = 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 + %a210 = alloca { ptr, i64, i64 }, align 16 + %a211 = alloca { ptr, i64, i64 }, align 16 + %a213 = alloca { ptr, i64, i64 }, align 16 + %a219 = alloca %S.ast.Type, align 16 + %a225 = alloca { ptr, i64, i64 }, align 16 + %a227 = alloca i64, align 16 + %a235 = alloca %S.ast.Type, align 16 + %a240 = alloca %S.ast.Type, align 16 + %a248 = alloca %S.ast.Type, align 16 + %a249 = alloca %S.ast.Type, align 16 + %a261 = alloca %S.gen.Plan, align 16 + %a262 = alloca { ptr, i64, i64 }, align 16 + %a263 = alloca { ptr, i64, i64 }, align 16 + %a264 = 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 - %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 - %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 + %a279 = 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 + %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 + %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 + %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 + %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 + %a317 = alloca { ptr, i64, i64 }, align 16 + %a323 = alloca i64, align 16 + %a327 = alloca i64, align 16 + %a342 = alloca %S.ast.Type, align 16 + %a343 = alloca %S.ast.Type, align 16 + %a345 = alloca %S.ast.Type, align 16 + %a354 = alloca %S.gen.Abi, align 16 + %a355 = alloca %S.gen.Abi, align 16 + %a357 = alloca %S.gen.Abi, align 16 %a381 = 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 + %a386 = alloca { ptr, i64, i64 }, align 16 + %a388 = 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 - %a392 = alloca { ptr, i64, i64 }, align 16 - %a393 = 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 %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 - %a409 = 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 - %a422 = alloca { ptr, i64, i64 }, align 16 - %a423 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 + %a401 = alloca %S.gen.Val, align 16 + %a402 = alloca { ptr, i64, i64 }, align 16 + %a403 = alloca %S.gen.Val, align 16 + %a406 = alloca %S.gen.Val, align 16 + %a407 = alloca %S.gen.Val, align 16 + %a417 = alloca { ptr, i64, i64 }, align 16 + %a418 = alloca { ptr, i64, i64 }, align 16 + %a426 = alloca { ptr, i64, i64 }, align 16 + %a427 = alloca { ptr, i64, i64 }, align 16 + %a435 = alloca { ptr, i64, i64 }, align 16 + %a439 = alloca { ptr, i64, i64 }, 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 %a447 = alloca { ptr, i64, i64 }, align 16 - %a448 = alloca { ptr, i64, i64 }, align 16 + %a451 = alloca { ptr, i64, i64 }, align 16 + %a453 = 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 %a457 = alloca { ptr, i64, i64 }, align 16 + %a459 = alloca { ptr, i64, i64 }, align 16 %a462 = alloca { ptr, i64, i64 }, align 16 - %a473 = alloca i64, align 16 + %a463 = alloca { ptr, i64, i64 }, align 16 + %a471 = alloca { ptr, i64, i64 }, align 16 + %a472 = alloca { ptr, i64, i64 }, align 16 + %a473 = alloca { ptr, i64, i64 }, align 16 + %a476 = alloca { ptr, i64, i64 }, align 16 + %a477 = alloca { ptr, i64, i64 }, align 16 + %a478 = alloca { ptr, i64, i64 }, align 16 + %a479 = alloca { ptr, i64, 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 + %a496 = 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 + %a513 = alloca { ptr, i64, i64 }, align 16 + %a514 = alloca { ptr, i64, i64 }, align 16 %a515 = alloca { ptr, i64, i64 }, align 16 - %a516 = 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 + %a523 = alloca { ptr, i64, i64 }, align 16 + %a524 = alloca { ptr, i64, i64 }, align 16 + %a529 = 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 + %a541 = alloca i64, align 16 %a555 = alloca { ptr, i64, i64 }, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a564 = 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 + %a560 = alloca { ptr, i64, i64 }, align 16 + %a561 = alloca { ptr, i64, i64 }, align 16 + %a562 = 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 + %a571 = 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 + %a575 = alloca { ptr, i64, i64 }, align 16 + %a577 = alloca { ptr, i64, i64 }, align 16 + %a578 = 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 - %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 + %a604 = alloca { ptr, i64, i64 }, align 16 + %a605 = alloca { ptr, i64, i64 }, align 16 + %a606 = 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 + %a612 = 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 %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 + %a648 = alloca { ptr, i64, i64 }, align 16 + %a649 = alloca { ptr, i64, i64 }, align 16 + %a650 = alloca { ptr, i64, i64 }, align 16 + %a651 = 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 + %a670 = 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 + %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 - %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 + %a696 = alloca %S.gen.Val, align 16 + %a699 = alloca %S.ast.Type, align 16 + %a700 = alloca %S.ast.Type, align 16 + %a702 = alloca %S.ast.Type, align 16 + %a705 = alloca { ptr, i64, i64 }, align 16 + %a706 = alloca { ptr, i64, i64 }, align 16 + %a720 = alloca %S.gen.Val, align 16 + %a721 = alloca %S.gen.Val, 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 - %a746 = 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 + %a732 = alloca { ptr, i64, i64 }, align 16 + %a737 = alloca { ptr, i64, i64 }, align 16 + %a738 = 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 - %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 - %a777 = alloca i64, align 16 - %a780 = alloca i64, align 16 - %a785 = alloca { ptr, i64, i64 }, align 16 - %a786 = alloca { ptr, i64, i64 }, align 16 + %a756 = alloca { ptr, i64, i64 }, align 16 + %a759 = alloca { ptr, i64, i64 }, align 16 + %a760 = alloca { ptr, i64, i64 }, align 16 + %a768 = alloca %S.ast.Type, align 16 + %a770 = alloca { ptr, i64, i64 }, align 16 + %a773 = alloca %S.ast.Type, align 16 + %a776 = alloca { ptr, i64, i64 }, align 16 + %a777 = alloca { ptr, i64, i64 }, align 16 + %a784 = alloca { ptr, i64, i64 }, align 16 + %a787 = alloca %S.ast.Type, align 16 + %a790 = alloca { ptr, i64, i64 }, align 16 + %a791 = 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 - %a800 = alloca { ptr, i64, i64 }, align 16 %a801 = alloca { ptr, i64, i64 }, align 16 - %a816 = alloca { ptr, i64, i64 }, align 16 + %a802 = alloca { ptr, i64, i64 }, align 16 + %a803 = alloca { ptr, i64, i64 }, align 16 + %a804 = alloca { ptr, i64, i64 }, align 16 + %a807 = alloca { ptr, i64, i64 }, align 16 + %a809 = alloca { ptr, i64, i64 }, align 16 + %a812 = alloca %S.ast.Type, align 16 %a817 = alloca { ptr, i64, i64 }, align 16 %a818 = 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 - %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 - %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 - %a839 = alloca { ptr, i64, i64 }, align 16 - %a840 = alloca { ptr, i64, i64 }, align 16 + %a831 = alloca %S.ast.Type, align 16 + %a833 = alloca { ptr, i64, i64 }, align 16 + %a836 = alloca %S.ast.Type, align 16 %a841 = alloca { ptr, i64, i64 }, align 16 + %a842 = alloca { ptr, i64, i64 }, align 16 + %a843 = alloca { ptr, i64, i64 }, align 16 %a844 = alloca { ptr, i64, i64 }, align 16 - %a845 = alloca { ptr, i64, i64 }, align 16 %a847 = alloca { ptr, i64, i64 }, align 16 %a848 = alloca { ptr, i64, i64 }, align 16 %a849 = 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 - %a856 = alloca { ptr, i64, i64 }, align 16 - %a857 = alloca { ptr, i64, i64 }, align 16 - %a858 = alloca { ptr, i64, i64 }, align 16 + %a850 = alloca { ptr, i64, i64 }, align 16 + %a860 = alloca { ptr, i64, i64 }, align 16 + %a861 = alloca { ptr, i64, i64 }, align 16 + %a863 = 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 + %a893 = 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 + %a897 = alloca i64, align 16 + %a900 = alloca i64, align 16 %a905 = alloca { ptr, i64, i64 }, align 16 - %a909 = alloca { ptr, i64, i64 }, align 16 + %a906 = 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 + %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 - %a925 = alloca { ptr, i64, i64 }, align 16 - %a926 = alloca { ptr, i64, i64 }, align 16 - %a927 = 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 - %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 + %a937 = alloca { ptr, i64, i64 }, align 16 + %a938 = alloca { ptr, i64, i64 }, align 16 + %a939 = alloca { ptr, i64, i64 }, align 16 + %a941 = alloca { ptr, i64, i64 }, align 16 + %a942 = alloca { ptr, i64, i64 }, align 16 + %a943 = alloca { ptr, i64, i64 }, align 16 + %a944 = alloca { ptr, i64, i64 }, align 16 + %a947 = alloca { ptr, i64, i64 }, align 16 + %a948 = alloca { ptr, i64, i64 }, align 16 + %a949 = alloca { ptr, i64, i64 }, align 16 + %a950 = alloca { ptr, i64, i64 }, align 16 + %a952 = alloca { ptr, i64, i64 }, align 16 + %a953 = alloca { ptr, i64, i64 }, align 16 + %a954 = alloca { ptr, i64, i64 }, align 16 + %a955 = alloca { ptr, i64, i64 }, align 16 + %a959 = alloca { ptr, i64, i64 }, align 16 + %a960 = alloca { ptr, i64, i64 }, align 16 + %a961 = alloca { ptr, i64, i64 }, align 16 %a962 = alloca { ptr, i64, i64 }, align 16 + %a964 = alloca { ptr, i64, i64 }, align 16 + %a965 = 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 + %a970 = alloca { ptr, i64, i64 }, align 16 + %a971 = alloca { ptr, i64, i64 }, align 16 + %a973 = 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 + %a977 = alloca { ptr, i64, i64 }, align 16 + %a980 = alloca { ptr, i64, i64 }, align 16 + %a981 = alloca { ptr, i64, i64 }, align 16 + %a982 = alloca { ptr, i64, i64 }, align 16 + %a983 = alloca { ptr, i64, i64 }, align 16 + %a985 = alloca { ptr, i64, i64 }, align 16 + %a986 = alloca { ptr, i64, i64 }, align 16 + %a987 = alloca { ptr, i64, i64 }, align 16 + %a988 = alloca { ptr, i64, i64 }, align 16 %a994 = 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 %a1004 = alloca { ptr, i64, i64 }, align 16 - %a1005 = alloca { ptr, i64, i64 }, align 16 - %a1006 = alloca { ptr, i64, i64 }, align 16 + %a1007 = 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 + %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 - %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 + %a1020 = alloca { ptr, i64, i64 }, align 16 + %a1021 = 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 + %a1027 = 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 - %a1036 = alloca %S.ast.Type, align 16 - %a1037 = alloca %S.ast.Type, align 16 + %a1033 = alloca { ptr, i64, i64 }, align 16 + %a1036 = alloca { ptr, i64, i64 }, align 16 + %a1037 = alloca { ptr, i64, i64 }, align 16 + %a1038 = alloca { ptr, i64, i64 }, align 16 + %a1039 = alloca { ptr, i64, i64 }, align 16 + %a1041 = alloca { ptr, i64, i64 }, align 16 + %a1042 = alloca { ptr, i64, i64 }, align 16 + %a1043 = alloca { ptr, i64, i64 }, align 16 + %a1044 = alloca { ptr, i64, i64 }, align 16 + %a1048 = alloca { ptr, i64, i64 }, align 16 + %a1049 = alloca { ptr, i64, i64 }, align 16 + %a1050 = alloca { ptr, i64, i64 }, align 16 + %a1051 = alloca { ptr, i64, i64 }, align 16 + %a1053 = 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 + %a1060 = alloca { ptr, i64, i64 }, align 16 + %a1062 = alloca { ptr, i64, i64 }, align 16 + %a1063 = alloca { ptr, i64, i64 }, align 16 + %a1064 = alloca { ptr, i64, i64 }, align 16 + %a1065 = alloca { ptr, i64, i64 }, align 16 + %a1066 = alloca { ptr, i64, i64 }, align 16 + %a1068 = 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 + %a1073 = alloca { ptr, i64, i64 }, align 16 + %a1076 = alloca { ptr, i64, i64 }, align 16 + %a1077 = alloca { ptr, i64, i64 }, align 16 + %a1086 = alloca %S.ast.Type, align 16 + %a1087 = alloca %S.ast.Type, align 16 + %a1103 = alloca { ptr, i64, i64 }, align 16 + %a1106 = alloca %S.ast.Type, align 16 + %a1107 = alloca %S.ast.Type, align 16 + %a1113 = alloca { ptr, i64, i64 }, align 16 + %a1120 = alloca { ptr, i64, i64 }, align 16 + %a1121 = alloca { ptr, i64, i64 }, align 16 + %a1126 = alloca { ptr, i64, i64 }, align 16 + %a1139 = alloca { ptr, i64, i64 }, align 16 + %a1142 = alloca %S.ast.Type, align 16 + %a1143 = alloca %S.ast.Type, align 16 + %a1148 = alloca { ptr, i64, i64 }, align 16 + %a1149 = alloca { ptr, i64, i64 }, align 16 + %a1154 = alloca { ptr, i64, i64 }, align 16 + %a1159 = alloca { ptr, i64, i64 }, align 16 + %a1160 = alloca { ptr, i64, i64 }, align 16 + %a1161 = alloca { ptr, i64, i64 }, align 16 + %a1163 = alloca { ptr, i64, i64 }, align 16 + %a1164 = alloca { ptr, i64, i64 }, align 16 + %a1165 = alloca { ptr, i64, i64 }, align 16 + %a1166 = alloca { ptr, i64, i64 }, align 16 + %a1169 = alloca { ptr, i64, i64 }, align 16 + %a1170 = alloca { ptr, i64, i64 }, align 16 + %a1171 = alloca { ptr, i64, i64 }, align 16 + %a1172 = alloca { ptr, i64, i64 }, align 16 + %a1174 = alloca { ptr, i64, i64 }, align 16 + %a1175 = alloca { ptr, i64, i64 }, align 16 + %a1176 = alloca { ptr, i64, i64 }, align 16 + %a1177 = alloca { ptr, i64, i64 }, align 16 + %a1179 = alloca { ptr, i64, i64 }, align 16 + %a1185 = alloca %S.ast.Type, align 16 + %a1186 = alloca %S.ast.Type, align 16 + %a1190 = alloca { ptr, i64, i64 }, align 16 + %a1191 = alloca { ptr, i64, i64 }, align 16 + %a1195 = alloca %S.ast.Type, align 16 + %a1196 = 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 = load ptr, ptr %a1 %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic7167, label %ok7168 -panic7167: - call void @finch_panic(ptr @.str.4645, i64 4140, ptr @.str.4646) + br i1 %t5, label %panic7538, label %ok7539 +panic7538: + call void @finch_panic(ptr @.str.4814, i64 4427, ptr @.str.4815) unreachable -ok7168: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 26 +ok7539: + %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 27 %t7 = load i1, ptr %t6 - br i1 %t7, label %then7169, label %endif7171 -then7169: + br i1 %t7, label %then7540, label %endif7542 +then7540: 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.cond7172 -each.cond7172: + br label %each.cond7543 +each.cond7543: %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.body7173, label %each.end7175 -each.body7173: + br i1 %t14, label %each.body7544, label %each.end7546 +each.body7544: %t15 = load ptr, ptr %t9 %t16 = getelementptr inbounds %S.ast.Type, ptr %t15, i64 %t13 %t17 = load %S.ast.Type, ptr %t16 @@ -64489,27 +76234,27 @@ each.body7173: %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.step7174 -each.step7174: + br label %each.step7545 +each.step7545: %t26 = load i64, ptr %a10 %t27 = add i64 %t26, 1 store i64 %t27, ptr %a10 - br label %each.cond7172 -each.end7175: + br label %each.cond7543 +each.end7546: %t28 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 4 %t29 = load i1, ptr %t28 - br i1 %t29, label %then7176, label %endif7178 -then7176: + br i1 %t29, label %then7547, label %endif7549 +then7547: %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.4647, i64 3, i64 0 }, ptr %t34 + store { ptr, i64, i64 } { ptr @.str.4816, i64 3, i64 0 }, ptr %t34 store i64 %t32, ptr %t30 - br label %endif7178 -endif7178: + br label %endif7549 +endif7549: %t35 = load ptr, ptr %a1 %t36 = load %S.ast.Node, ptr %a2 %t37 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 @@ -64519,1327 +76264,1727 @@ endif7178: %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.4648, i64 17, i64 0 }, ptr %a45 + store { ptr, i64, i64 } { ptr @.str.4817, 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.4649, i64 7, i64 0 }, ptr %a50 + store { ptr, i64, i64 } { ptr @.str.4818, 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.4650, 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 - store { ptr, i64, i64 } %t68, ptr %a70 - store { ptr, i64, i64 } { ptr @.str.4651, i64 1, i64 0 }, ptr %a71 + store { ptr, i64, i64 } %t47, ptr %a51 + call void @finch_str_drop(ptr %a51) + %t52 = load { ptr, i64, i64 }, ptr %a48 + %t53 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 2 + %t54 = load %S.ast.Type, ptr %t53 + %t55 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t54) + store { ptr, i64, i64 } %t52, ptr %a57 + store { ptr, i64, i64 } %t55, ptr %a58 + call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) + store { ptr, i64, i64 } %t52, ptr %a59 + call void @finch_str_drop(ptr %a59) + store { ptr, i64, i64 } %t55, ptr %a60 + call void @finch_str_drop(ptr %a60) + %t61 = load { ptr, i64, i64 }, ptr %a56 + store { ptr, i64, i64 } %t61, ptr %a63 + store { ptr, i64, i64 } { ptr @.str.4819, i64 1, i64 0 }, ptr %a64 + call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) + store { ptr, i64, i64 } %t61, ptr %a65 + call void @finch_str_drop(ptr %a65) + %t66 = load { ptr, i64, i64 }, ptr %a62 + %t67 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 + %t68 = load { ptr, i64, i64 }, ptr %t67 + store { ptr, i64, i64 } %t66, 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 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4652, 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.4653, 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.4654, i64 0, i64 0 }, i64 0, i64 0) - br label %endif7171 -endif7171: - %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 %then7179, label %endif7181 -then7179: - %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.4655, 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.4656, 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 + store { ptr, i64, i64 } %t66, ptr %a72 + call void @finch_str_drop(ptr %a72) + %t73 = load { ptr, i64, i64 }, ptr %a69 + store { ptr, i64, i64 } %t73, ptr %a75 + store { ptr, i64, i64 } { ptr @.str.4820, i64 1, i64 0 }, ptr %a76 + call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) + store { ptr, i64, i64 } %t73, ptr %a77 + call void @finch_str_drop(ptr %a77) + %t78 = load { ptr, i64, i64 }, ptr %a74 + %t79 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.4821, i64 2, i64 0 }, ptr %a80 + call void @finch_str_join(ptr %a81, ptr %a8, ptr %a80) + %t82 = load { ptr, i64, i64 }, ptr %a81 + store { ptr, i64, i64 } %t78, ptr %a84 + store { ptr, i64, i64 } %t82, ptr %a85 + call void @finch_str_concat(ptr %a83, ptr %a84, ptr %a85) + store { ptr, i64, i64 } %t78, ptr %a86 + call void @finch_str_drop(ptr %a86) + store { ptr, i64, i64 } %t82, ptr %a87 + call void @finch_str_drop(ptr %a87) + %t88 = load { ptr, i64, i64 }, ptr %a83 + store { ptr, i64, i64 } %t88, ptr %a90 + store { ptr, i64, i64 } { ptr @.str.4822, i64 5, i64 0 }, ptr %a91 + call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) + store { ptr, i64, i64 } %t88, ptr %a92 + call void @finch_str_drop(ptr %a92) + %t93 = load { ptr, i64, i64 }, ptr %a89 + call void @finch.gen.noteRef(ptr %t35, %S.ast.Node %t36, i64 %t38, i64 %t41, { ptr, i64, i64 } %t93, { ptr, i64, i64 } { ptr @.str.4823, i64 0, i64 0 }, i64 0, i64 0) + store { ptr, i64, i64 } %t93, ptr %a94 + call void @finch_str_drop(ptr %a94) + call void @finch.drop.arr_str(ptr %a8) + br label %endif7542 +endif7542: + %t95 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 5 + %t96 = getelementptr inbounds { ptr, i64, i64 }, ptr %t95, i32 0, i32 1 + %t97 = load i64, ptr %t96 + %t98 = icmp sgt i64 %t97, 0 + br i1 %t98, label %then7550, label %endif7552 +then7550: + %t99 = load ptr, ptr %a1 + %t100 = load %S.ast.Node, ptr %a2 + %t101 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 %t102 = load { ptr, i64, i64 }, ptr %t101 - store { ptr, i64, i64 } %t100, ptr %a104 + store { ptr, i64, i64 } { ptr @.str.4824, i64 16, 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 - call void @finch.gen.fail(ptr %t89, %S.ast.Node %t90, { ptr, i64, i64 } %t106) - br label %endif7181 -endif7181: - %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 %then7182, label %else7183 -then7182: - %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 %then7185, label %endif7187 -then7185: - %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.4657, 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.4658, 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 } %t106, ptr %a108 + store { ptr, i64, i64 } { ptr @.str.4825, i64 35, i64 0 }, ptr %a109 + call void @finch_str_concat(ptr %a107, ptr %a108, ptr %a109) + store { ptr, i64, i64 } %t106, ptr %a110 + call void @finch_str_drop(ptr %a110) + %t111 = load { ptr, i64, i64 }, ptr %a107 + %t112 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 5 + %t113 = load { ptr, i64, i64 }, ptr %t112 + store { ptr, i64, i64 } %t111, ptr %a115 + store { ptr, i64, i64 } %t113, ptr %a116 + call void @finch_str_concat(ptr %a114, ptr %a115, ptr %a116) + store { ptr, i64, i64 } %t111, ptr %a117 + call void @finch_str_drop(ptr %a117) + %t118 = load { ptr, i64, i64 }, ptr %a114 + call void @finch.gen.fail(ptr %t99, %S.ast.Node %t100, { ptr, i64, i64 } %t118) + store { ptr, i64, i64 } %t118, ptr %a119 + call void @finch_str_drop(ptr %a119) + br label %endif7552 +endif7552: + %t120 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t121 = getelementptr inbounds { ptr, i64, i64 }, ptr %t120, i32 0, i32 1 + %t122 = load i64, ptr %t121 + store i64 %t122, ptr %a123 + %t124 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 4 + %t125 = load i1, ptr %t124 + br i1 %t125, label %then7553, label %else7554 +then7553: + %t126 = load i64, ptr %a123 + %t127 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 + %t128 = getelementptr inbounds { ptr, i64, i64 }, ptr %t127, i32 0, i32 1 + %t129 = load i64, ptr %t128 + %t130 = icmp slt i64 %t126, %t129 + br i1 %t130, label %then7556, label %endif7558 +then7556: + %t131 = load ptr, ptr %a1 + %t132 = load %S.ast.Node, ptr %a2 + %t133 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 + %t134 = load { ptr, i64, i64 }, ptr %t133 + store { ptr, i64, i64 } { ptr @.str.4826, i64 1, 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.4659, i64 22, i64 0 }, ptr %a141 + store { ptr, i64, i64 } { ptr @.str.4827, i64 17, 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 %endif7187 -endif7187: - br label %endif7184 -else7183: - %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 %then7188, label %endif7190 -then7188: - %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.4660, 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.4661, i64 8, i64 0 }, ptr %a165 + store { ptr, i64, i64 } %t138, ptr %a142 + call void @finch_str_drop(ptr %a142) + %t143 = load { ptr, i64, i64 }, ptr %a139 + %t144 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 + %t145 = getelementptr inbounds { ptr, i64, i64 }, ptr %t144, i32 0, i32 1 + %t146 = load i64, ptr %t145 + call void @finch_str_from_int(ptr %a147, i64 %t146) + %t148 = load { ptr, i64, i64 }, ptr %a147 + store { ptr, i64, i64 } %t143, ptr %a150 + store { ptr, i64, i64 } %t148, ptr %a151 + call void @finch_str_concat(ptr %a149, ptr %a150, ptr %a151) + store { ptr, i64, i64 } %t143, ptr %a152 + call void @finch_str_drop(ptr %a152) + store { ptr, i64, i64 } %t148, ptr %a153 + call void @finch_str_drop(ptr %a153) + %t154 = load { ptr, i64, i64 }, ptr %a149 + store { ptr, i64, i64 } %t154, ptr %a156 + store { ptr, i64, i64 } { ptr @.str.4828, i64 22, i64 0 }, ptr %a157 + call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) + store { ptr, i64, i64 } %t154, ptr %a158 + call void @finch_str_drop(ptr %a158) + %t159 = load { ptr, i64, i64 }, ptr %a155 + %t160 = load i64, ptr %a123 + call void @finch_str_from_int(ptr %a161, i64 %t160) + %t162 = load { ptr, i64, i64 }, ptr %a161 + store { ptr, i64, i64 } %t159, 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 - %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 - store { ptr, i64, i64 } %t175, ptr %a177 - store { ptr, i64, i64 } { ptr @.str.4662, 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 + store { ptr, i64, i64 } %t159, ptr %a166 + call void @finch_str_drop(ptr %a166) + store { ptr, i64, i64 } %t162, ptr %a167 + call void @finch_str_drop(ptr %a167) + %t168 = load { ptr, i64, i64 }, ptr %a163 + call void @finch.gen.fail(ptr %t131, %S.ast.Node %t132, { ptr, i64, i64 } %t168) + store { ptr, i64, i64 } %t168, ptr %a169 + call void @finch_str_drop(ptr %a169) + br label %endif7558 +endif7558: + br label %endif7555 +else7554: + %t170 = load i64, ptr %a123 + %t171 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 + %t172 = getelementptr inbounds { ptr, i64, i64 }, ptr %t171, i32 0, i32 1 + %t173 = load i64, ptr %t172 + %t174 = icmp ne i64 %t170, %t173 + br i1 %t174, label %then7559, label %endif7561 +then7559: + %t175 = load ptr, ptr %a1 + %t176 = load %S.ast.Node, ptr %a2 + %t177 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 + %t178 = load { ptr, i64, i64 }, ptr %t177 + store { ptr, i64, i64 } { ptr @.str.4829, 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 + store { ptr, i64, i64 } %t182, ptr %a184 + store { ptr, i64, i64 } { ptr @.str.4830, i64 8, 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.fail(ptr %t155, %S.ast.Node %t156, { ptr, i64, i64 } %t186) - br label %endif7190 -endif7190: - br label %endif7184 -endif7184: - %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.4663, 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.cond7191 -each.cond7191: - %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.body7192, label %each.end7194 -each.body7192: - %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 + store { ptr, i64, i64 } %t182, ptr %a186 + call void @finch_str_drop(ptr %a186) + %t187 = load { ptr, i64, i64 }, ptr %a183 + %t188 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 + %t189 = getelementptr inbounds { ptr, i64, i64 }, ptr %t188, i32 0, i32 1 + %t190 = load i64, ptr %t189 + call void @finch_str_from_int(ptr %a191, i64 %t190) + %t192 = load { ptr, i64, i64 }, ptr %a191 + store { ptr, i64, i64 } %t187, ptr %a194 + store { ptr, i64, i64 } %t192, ptr %a195 + call void @finch_str_concat(ptr %a193, ptr %a194, ptr %a195) + store { ptr, i64, i64 } %t187, ptr %a196 + call void @finch_str_drop(ptr %a196) + store { ptr, i64, i64 } %t192, ptr %a197 + call void @finch_str_drop(ptr %a197) + %t198 = load { ptr, i64, i64 }, ptr %a193 + store { ptr, i64, i64 } %t198, ptr %a200 + store { ptr, i64, i64 } { ptr @.str.4831, i64 22, i64 0 }, ptr %a201 + call void @finch_str_concat(ptr %a199, ptr %a200, ptr %a201) + store { ptr, i64, i64 } %t198, ptr %a202 + call void @finch_str_drop(ptr %a202) + %t203 = load { ptr, i64, i64 }, ptr %a199 + %t204 = load i64, ptr %a123 + call void @finch_str_from_int(ptr %a205, i64 %t204) + %t206 = load { ptr, i64, i64 }, ptr %a205 + store { ptr, i64, i64 } %t203, ptr %a208 + store { ptr, i64, i64 } %t206, ptr %a209 + call void @finch_str_concat(ptr %a207, ptr %a208, ptr %a209) + store { ptr, i64, i64 } %t203, ptr %a210 + call void @finch_str_drop(ptr %a210) + store { ptr, i64, i64 } %t206, ptr %a211 + call void @finch_str_drop(ptr %a211) + %t212 = load { ptr, i64, i64 }, ptr %a207 + call void @finch.gen.fail(ptr %t175, %S.ast.Node %t176, { ptr, i64, i64 } %t212) + store { ptr, i64, i64 } %t212, ptr %a213 + call void @finch_str_drop(ptr %a213) + br label %endif7561 +endif7561: + br label %endif7555 +endif7555: %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.4664, 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.step7193 -each.step7193: - %t228 = load i64, ptr %a200 - %t229 = add i64 %t228, 1 - store i64 %t229, ptr %a200 - br label %each.cond7191 -each.end7194: - %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.4665, 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 %then7195, label %endif7197 -then7195: - %t240 = load ptr, ptr %a1 + %t215 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 2 + %t216 = load %S.ast.Type, ptr %t215 + %t217 = load %S.ast.Node, ptr %a2 + %t218 = call %S.ast.Type @finch.gen.resolve(ptr %t214, %S.ast.Type %t216, %S.ast.Node %t217) + store %S.ast.Type %t218, ptr %a219 + %t220 = load ptr, ptr %a1 + %t221 = load %S.ast.Node, ptr %a2 + %t222 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 + %t223 = load { ptr, i64, i64 }, ptr %t222 + %t224 = load %S.ast.Type, ptr %a219 + call void @finch.gen.checkByValue(ptr %t220, %S.ast.Node %t221, { ptr, i64, i64 } %t223, %S.ast.Type %t224, { ptr, i64, i64 } { ptr @.str.4832, i64 7, i64 0 }) + store { ptr, i64, i64 } zeroinitializer, ptr %a225 + %t226 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 + store i64 0, ptr %a227 + br label %each.cond7562 +each.cond7562: + %t228 = getelementptr inbounds { ptr, i64, i64 }, ptr %t226, i32 0, i32 1 + %t229 = load i64, ptr %t228 + %t230 = load i64, ptr %a227 + %t231 = icmp slt i64 %t230, %t229 + br i1 %t231, label %each.body7563, label %each.end7565 +each.body7563: + %t232 = load ptr, ptr %t226 + %t233 = getelementptr inbounds %S.ast.Type, ptr %t232, i64 %t230 + %t234 = load %S.ast.Type, ptr %t233 + store %S.ast.Type %t234, ptr %a235 + %t236 = load ptr, ptr %a1 + %t237 = load %S.ast.Type, ptr %a235 + %t238 = load %S.ast.Node, ptr %a2 + %t239 = call %S.ast.Type @finch.gen.resolve(ptr %t236, %S.ast.Type %t237, %S.ast.Node %t238) + store %S.ast.Type %t239, ptr %a240 %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.4666, 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.4667, 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.4668, 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.4669, 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 %endif7197 -endif7197: - %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.cond7198 -for.cond7198: - %t286 = load i64, ptr %a285 - %t287 = icmp slt i64 %t286, %t284 - br i1 %t287, label %for.body7199, label %for.end7201 -for.body7199: - %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 %then7202, label %endif7204 -then7202: - %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 %range7205, label %inrange7206 -range7205: - call void @finch_panic_index(ptr @.str.4670, i64 4180, i64 %t293, i64 %t295) + %t242 = load %S.ast.Node, ptr %a2 + %t243 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 + %t244 = load { ptr, i64, i64 }, ptr %t243 + %t245 = load %S.ast.Type, ptr %a240 + call void @finch.gen.checkByValue(ptr %t241, %S.ast.Node %t242, { ptr, i64, i64 } %t244, %S.ast.Type %t245, { ptr, i64, i64 } { ptr @.str.4833, i64 5, i64 0 }) + %t246 = getelementptr inbounds { ptr, i64, i64 }, ptr %a225, i32 0, i32 1 + %t247 = load %S.ast.Type, ptr %a240 + store %S.ast.Type %t247, ptr %a248 + call void @finch.copy.S_ast_Type(ptr %a249, ptr %a248) + %t250 = load %S.ast.Type, ptr %a249 + %t251 = load i64, ptr %t246 + %t252 = add i64 %t251, 1 + call void @finch_arr_reserve(ptr %a225, i64 %t252, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) + %t253 = load ptr, ptr %a225 + %t254 = getelementptr inbounds %S.ast.Type, ptr %t253, i64 %t251 + store %S.ast.Type %t250, ptr %t254 + store i64 %t252, ptr %t246 + call void @finch.drop.S_ast_Type(ptr %a240) + br label %each.step7564 +each.step7564: + %t255 = load i64, ptr %a227 + %t256 = add i64 %t255, 1 + store i64 %t256, ptr %a227 + br label %each.cond7562 +each.end7565: + %t257 = load ptr, ptr %a1 + %t258 = load %S.ast.Type, ptr %a219 + %t259 = load { ptr, i64, i64 }, ptr %a225 + %t260 = call %S.gen.Plan @finch.gen.makePlan(ptr %t257, %S.ast.Type %t258, { ptr, i64, i64 } %t259) + store %S.gen.Plan %t260, ptr %a261 + store { ptr, i64, i64 } zeroinitializer, ptr %a262 + store { ptr, i64, i64 } zeroinitializer, ptr %a263 + store { ptr, i64, i64 } { ptr @.str.4834, i64 0, i64 0 }, ptr %a264 + %t265 = getelementptr inbounds %S.gen.Plan, ptr %a261, i32 0, i32 3 + %t266 = load i1, ptr %t265 + br i1 %t266, label %then7566, label %endif7568 +then7566: + %t267 = load ptr, ptr %a1 + %t268 = load ptr, ptr %a1 + %t269 = load %S.ast.Type, ptr %a219 + %t270 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t268, %S.ast.Type %t269) + %t271 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t267, { ptr, i64, i64 } %t270) + store { ptr, i64, i64 } %t270, ptr %a272 + call void @finch_str_drop(ptr %a272) + %t273 = load { ptr, i64, i64 }, ptr %a264 + store { ptr, i64, i64 } %t271, ptr %a264 + store { ptr, i64, i64 } %t273, ptr %a274 + call void @finch_str_drop(ptr %a274) + %t275 = getelementptr inbounds { ptr, i64, i64 }, ptr %a262, i32 0, i32 1 + %t276 = load ptr, ptr %a1 + %t277 = load %S.ast.Type, ptr %a219 + %t278 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t276, %S.ast.Type %t277) + store { ptr, i64, i64 } { ptr @.str.4835, i64 9, i64 0 }, ptr %a280 + store { ptr, i64, i64 } %t278, ptr %a281 + call void @finch_str_concat(ptr %a279, ptr %a280, ptr %a281) + store { ptr, i64, i64 } %t278, ptr %a282 + call void @finch_str_drop(ptr %a282) + %t283 = load { ptr, i64, i64 }, ptr %a279 + store { ptr, i64, i64 } %t283, ptr %a285 + store { ptr, i64, i64 } { ptr @.str.4836, i64 10, i64 0 }, ptr %a286 + call void @finch_str_concat(ptr %a284, ptr %a285, ptr %a286) + store { ptr, i64, i64 } %t283, ptr %a287 + call void @finch_str_drop(ptr %a287) + %t288 = load { ptr, i64, i64 }, ptr %a284 + %t289 = load i64, ptr %t275 + %t290 = add i64 %t289, 1 + call void @finch_arr_reserve(ptr %a262, i64 %t290, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t291 = load ptr, ptr %a262 + %t292 = getelementptr inbounds { ptr, i64, i64 }, ptr %t291, i64 %t289 + store { ptr, i64, i64 } %t288, ptr %t292 + store i64 %t290, ptr %t275 + %t293 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 + %t294 = load ptr, ptr %a1 + %t295 = load %S.ast.Type, ptr %a219 + %t296 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t294, %S.ast.Type %t295) + store { ptr, i64, i64 } { ptr @.str.4837, i64 9, i64 0 }, ptr %a298 + store { ptr, i64, i64 } %t296, ptr %a299 + call void @finch_str_concat(ptr %a297, ptr %a298, ptr %a299) + store { ptr, i64, i64 } %t296, ptr %a300 + call void @finch_str_drop(ptr %a300) + %t301 = load { ptr, i64, i64 }, ptr %a297 + store { ptr, i64, i64 } %t301, ptr %a303 + store { ptr, i64, i64 } { ptr @.str.4838, i64 11, i64 0 }, ptr %a304 + call void @finch_str_concat(ptr %a302, ptr %a303, ptr %a304) + store { ptr, i64, i64 } %t301, ptr %a305 + call void @finch_str_drop(ptr %a305) + %t306 = load { ptr, i64, i64 }, ptr %a302 + %t307 = load { ptr, i64, i64 }, ptr %a264 + store { ptr, i64, i64 } %t306, ptr %a309 + store { ptr, i64, i64 } %t307, ptr %a310 + call void @finch_str_concat(ptr %a308, ptr %a309, ptr %a310) + store { ptr, i64, i64 } %t306, ptr %a311 + call void @finch_str_drop(ptr %a311) + %t312 = load { ptr, i64, i64 }, ptr %a308 + %t313 = load i64, ptr %t293 + %t314 = add i64 %t313, 1 + call void @finch_arr_reserve(ptr %a263, i64 %t314, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t315 = load ptr, ptr %a263 + %t316 = getelementptr inbounds { ptr, i64, i64 }, ptr %t315, i64 %t313 + store { ptr, i64, i64 } %t312, ptr %t316 + store i64 %t314, ptr %t293 + br label %endif7568 +endif7568: + store { ptr, i64, i64 } zeroinitializer, ptr %a317 + %t318 = load ptr, ptr %a1 + %t319 = icmp eq ptr %t318, null + br i1 %t319, label %panic7569, label %ok7570 +panic7569: + call void @finch_panic(ptr @.str.4839, i64 4466, ptr @.str.4840) unreachable -inrange7206: - %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 %range7207, label %inrange7208 -range7207: - call void @finch_panic_index(ptr @.str.4671, i64 4181, i64 %t305, i64 %t307) +ok7570: + %t320 = getelementptr inbounds %S.gen.Gen, ptr %t318, i32 0, i32 11 + %t321 = getelementptr inbounds { ptr, i64, i64 }, ptr %t320, i32 0, i32 1 + %t322 = load i64, ptr %t321 + store i64 %t322, ptr %a323 + %t324 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t325 = getelementptr inbounds { ptr, i64, i64 }, ptr %t324, i32 0, i32 1 + %t326 = load i64, ptr %t325 + store i64 0, ptr %a327 + br label %for.cond7571 +for.cond7571: + %t328 = load i64, ptr %a327 + %t329 = icmp slt i64 %t328, %t326 + br i1 %t329, label %for.body7572, label %for.end7574 +for.body7572: + %t330 = load i64, ptr %a327 + %t331 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 + %t332 = getelementptr inbounds { ptr, i64, i64 }, ptr %t331, i32 0, i32 1 + %t333 = load i64, ptr %t332 + %t334 = icmp slt i64 %t330, %t333 + br i1 %t334, label %then7575, label %endif7577 +then7575: + %t335 = load i64, ptr %a327 + %t336 = load { ptr, i64, i64 }, ptr %a225 + %t337 = extractvalue { ptr, i64, i64 } %t336, 1 + %t338 = icmp uge i64 %t335, %t337 + br i1 %t338, label %range7578, label %inrange7579 +range7578: + call void @finch_panic_index(ptr @.str.4841, i64 4469, i64 %t335, i64 %t337) unreachable -inrange7208: - %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 %range7209, label %inrange7210 -range7209: - call void @finch_panic_index(ptr @.str.4672, i64 4182, i64 %t319, i64 %t321) +inrange7579: + %t339 = extractvalue { ptr, i64, i64 } %t336, 0 + %t340 = getelementptr inbounds %S.ast.Type, ptr %t339, i64 %t335 + %t341 = load %S.ast.Type, ptr %t340 + store %S.ast.Type %t341, ptr %a342 + call void @finch.copy.S_ast_Type(ptr %a343, ptr %a342) + %t344 = load %S.ast.Type, ptr %a343 + store %S.ast.Type %t344, ptr %a345 + %t346 = getelementptr inbounds %S.gen.Plan, ptr %a261, i32 0, i32 1 + %t347 = load i64, ptr %a327 + %t348 = load { ptr, i64, i64 }, ptr %t346 + %t349 = extractvalue { ptr, i64, i64 } %t348, 1 + %t350 = icmp uge i64 %t347, %t349 + br i1 %t350, label %range7580, label %inrange7581 +range7580: + call void @finch_panic_index(ptr @.str.4842, i64 4470, i64 %t347, i64 %t349) unreachable -inrange7210: - %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 %range7211, label %inrange7212 -range7211: - call void @finch_panic_index(ptr @.str.4673, i64 4182, i64 %t330, i64 %t332) +inrange7581: + %t351 = extractvalue { ptr, i64, i64 } %t348, 0 + %t352 = getelementptr inbounds %S.gen.Abi, ptr %t351, i64 %t347 + %t353 = load %S.gen.Abi, ptr %t352 + store %S.gen.Abi %t353, ptr %a354 + call void @finch.copy.S_gen_Abi(ptr %a355, ptr %a354) + %t356 = load %S.gen.Abi, ptr %a355 + store %S.gen.Abi %t356, ptr %a357 + %t358 = load ptr, ptr %a1 + %t359 = load ptr, ptr %a1 + %t360 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t361 = load i64, ptr %a327 + %t362 = load { ptr, i64, i64 }, ptr %t360 + %t363 = extractvalue { ptr, i64, i64 } %t362, 1 + %t364 = icmp uge i64 %t361, %t363 + br i1 %t364, label %range7582, label %inrange7583 +range7582: + call void @finch_panic_index(ptr @.str.4843, i64 4471, i64 %t361, i64 %t363) unreachable -inrange7212: - %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.4674, 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.4675, 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.4676, 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 %then7213, label %else7214 -then7213: - %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 - %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.4677, 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.4678, i64 8, i64 0 }, ptr %a385 +inrange7583: + %t365 = extractvalue { ptr, i64, i64 } %t362, 0 + %t366 = getelementptr inbounds %S.ast.Node, ptr %t365, i64 %t361 + %t367 = load %S.ast.Node, ptr %t366 + %t368 = load %S.ast.Type, ptr %a345 + %t369 = call %S.gen.Val @finch.gen.exprWant(ptr %t359, %S.ast.Node %t367, %S.ast.Type %t368) + %t370 = load %S.ast.Type, ptr %a345 + %t371 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t372 = load i64, ptr %a327 + %t373 = load { ptr, i64, i64 }, ptr %t371 + %t374 = extractvalue { ptr, i64, i64 } %t373, 1 + %t375 = icmp uge i64 %t372, %t374 + br i1 %t375, label %range7584, label %inrange7585 +range7584: + call void @finch_panic_index(ptr @.str.4844, i64 4471, i64 %t372, i64 %t374) + unreachable +inrange7585: + %t376 = extractvalue { ptr, i64, i64 } %t373, 0 + %t377 = getelementptr inbounds %S.ast.Node, ptr %t376, i64 %t372 + %t378 = load %S.ast.Node, ptr %t377 + %t379 = load i64, ptr %a327 + %t380 = add i64 %t379, 1 + call void @finch_str_from_int(ptr %a381, i64 %t380) + %t382 = load { ptr, i64, i64 }, ptr %a381 + store { ptr, i64, i64 } { ptr @.str.4845, i64 9, 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.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.4679, 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 %endif7215 -else7214: - %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.4680, 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 %then7216, label %else7217 -then7216: - %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.4681, 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.4682, 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 %endif7218 -else7217: - %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.4683, 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 %then7219, label %else7220 -then7219: - %t460 = load ptr, ptr %a1 - %t461 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t460, { ptr, i64, i64 } { ptr @.str.4684, i64 9, i64 0 }) + store { ptr, i64, i64 } %t382, ptr %a386 + call void @finch_str_drop(ptr %a386) + %t387 = load { ptr, i64, i64 }, ptr %a383 + store { ptr, i64, i64 } %t387, ptr %a389 + store { ptr, i64, i64 } { ptr @.str.4846, i64 4, i64 0 }, ptr %a390 + call void @finch_str_concat(ptr %a388, ptr %a389, ptr %a390) + store { ptr, i64, i64 } %t387, ptr %a391 + call void @finch_str_drop(ptr %a391) + %t392 = load { ptr, i64, i64 }, ptr %a388 + %t393 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 + %t394 = load { ptr, i64, i64 }, ptr %t393 + store { ptr, i64, i64 } %t392, ptr %a396 + store { ptr, i64, i64 } %t394, ptr %a397 + call void @finch_str_concat(ptr %a395, ptr %a396, ptr %a397) + store { ptr, i64, i64 } %t392, ptr %a398 + call void @finch_str_drop(ptr %a398) + %t399 = load { ptr, i64, i64 }, ptr %a395 + %t400 = call %S.gen.Val @finch.gen.coerce(ptr %t358, %S.gen.Val %t369, %S.ast.Type %t370, %S.ast.Node %t378, { ptr, i64, i64 } %t399) + store %S.gen.Val %t369, ptr %a401 + call void @finch.drop.S_gen_Val(ptr %a401) + store { ptr, i64, i64 } %t399, ptr %a402 + call void @finch_str_drop(ptr %a402) + store %S.gen.Val %t400, ptr %a403 + %t404 = getelementptr inbounds { ptr, i64, i64 }, ptr %a317, i32 0, i32 1 + %t405 = load %S.gen.Val, ptr %a403 + store %S.gen.Val %t405, ptr %a406 + call void @finch.copy.S_gen_Val(ptr %a407, ptr %a406) + %t408 = load %S.gen.Val, ptr %a407 + %t409 = load i64, ptr %t404 + %t410 = add i64 %t409, 1 + call void @finch_arr_reserve(ptr %a317, i64 %t410, i64 ptrtoint (ptr getelementptr (%S.gen.Val, ptr null, i32 1) to i64)) + %t411 = load ptr, ptr %a317 + %t412 = getelementptr inbounds %S.gen.Val, ptr %t411, i64 %t409 + store %S.gen.Val %t408, ptr %t412 + store i64 %t410, ptr %t404 + %t413 = load ptr, ptr %a1 + %t414 = load %S.gen.Val, ptr %a403 + call void @finch.gen.hold(ptr %t413, %S.gen.Val %t414) + %t415 = getelementptr inbounds %S.gen.Abi, ptr %a357, i32 0, i32 0 + %t416 = load { ptr, i64, i64 }, ptr %t415 + store { ptr, i64, i64 } %t416, ptr %a417 + store { ptr, i64, i64 } { ptr @.str.4847, i64 6, i64 0 }, ptr %a418 + %t419 = call i32 @finch_str_eq(ptr %a417, ptr %a418) + %t420 = icmp ne i32 %t419, 0 + br i1 %t420, label %then7586, label %else7587 +then7586: + %t421 = load ptr, ptr %a1 + %t422 = load ptr, ptr %a1 + %t423 = load %S.ast.Type, ptr %a345 + %t424 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t422, %S.ast.Type %t423) + %t425 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t421, { ptr, i64, i64 } %t424) + store { ptr, i64, i64 } %t424, ptr %a426 + call void @finch_str_drop(ptr %a426) + store { ptr, i64, i64 } %t425, ptr %a427 + %t428 = load ptr, ptr %a1 + %t429 = load ptr, ptr %a1 + %t430 = load %S.ast.Type, ptr %a345 + %t431 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t429, %S.ast.Type %t430) + %t432 = getelementptr inbounds %S.gen.Val, ptr %a403, i32 0, i32 0 + %t433 = load { ptr, i64, i64 }, ptr %t432 + %t434 = load { ptr, i64, i64 }, ptr %a427 + call void @finch.gen.store(ptr %t428, { ptr, i64, i64 } %t431, { ptr, i64, i64 } %t433, { ptr, i64, i64 } %t434) + store { ptr, i64, i64 } %t431, ptr %a435 + call void @finch_str_drop(ptr %a435) + %t436 = load ptr, ptr %a1 + %t437 = load %S.ast.Type, ptr %a345 + %t438 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t436, %S.ast.Type %t437) + store { ptr, i64, i64 } { ptr @.str.4848, i64 10, i64 0 }, ptr %a440 + store { ptr, i64, i64 } %t438, ptr %a441 + call void @finch_str_concat(ptr %a439, ptr %a440, ptr %a441) + store { ptr, i64, i64 } %t438, ptr %a442 + call void @finch_str_drop(ptr %a442) + %t443 = load { ptr, i64, i64 }, ptr %a439 + store { ptr, i64, i64 } %t443, ptr %a445 + store { ptr, i64, i64 } { ptr @.str.4849, i64 8, i64 0 }, ptr %a446 + call void @finch_str_concat(ptr %a444, ptr %a445, ptr %a446) + store { ptr, i64, i64 } %t443, ptr %a447 + call void @finch_str_drop(ptr %a447) + %t448 = load { ptr, i64, i64 }, ptr %a444 + %t449 = getelementptr inbounds %S.gen.Abi, ptr %a357, i32 0, i32 3 + %t450 = load i64, ptr %t449 + call void @finch_str_from_int(ptr %a451, i64 %t450) + %t452 = load { ptr, i64, i64 }, ptr %a451 + store { ptr, i64, i64 } %t448, ptr %a454 + store { ptr, i64, i64 } %t452, ptr %a455 + call void @finch_str_concat(ptr %a453, ptr %a454, ptr %a455) + store { ptr, i64, i64 } %t448, ptr %a456 + call void @finch_str_drop(ptr %a456) + store { ptr, i64, i64 } %t452, ptr %a457 + call void @finch_str_drop(ptr %a457) + %t458 = load { ptr, i64, i64 }, ptr %a453 + store { ptr, i64, i64 } %t458, ptr %a459 + %t460 = getelementptr inbounds { ptr, i64, i64 }, ptr %a262, i32 0, i32 1 + %t461 = load { ptr, i64, i64 }, ptr %a459 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.cond7222 -for.cond7222: - %t474 = load i64, ptr %a473 - %t475 = icmp slt i64 %t474, %t472 - br i1 %t475, label %for.body7223, label %for.end7225 -for.body7223: - %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 %range7226, label %inrange7227 -range7226: - call void @finch_panic_index(ptr @.str.4685, i64 4198, i64 %t478, i64 %t480) + call void @finch_str_copy(ptr %a463, ptr %a462) + %t464 = load { ptr, i64, i64 }, ptr %a463 + %t465 = load i64, ptr %t460 + %t466 = add i64 %t465, 1 + call void @finch_arr_reserve(ptr %a262, i64 %t466, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t467 = load ptr, ptr %a262 + %t468 = getelementptr inbounds { ptr, i64, i64 }, ptr %t467, i64 %t465 + store { ptr, i64, i64 } %t464, ptr %t468 + store i64 %t466, ptr %t460 + %t469 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 + %t470 = load { ptr, i64, i64 }, ptr %a459 + store { ptr, i64, i64 } %t470, ptr %a472 + store { ptr, i64, i64 } { ptr @.str.4850, i64 1, i64 0 }, ptr %a473 + call void @finch_str_concat(ptr %a471, ptr %a472, ptr %a473) + %t474 = load { ptr, i64, i64 }, ptr %a471 + %t475 = load { ptr, i64, i64 }, ptr %a427 + store { ptr, i64, i64 } %t474, ptr %a477 + store { ptr, i64, i64 } %t475, ptr %a478 + call void @finch_str_concat(ptr %a476, ptr %a477, ptr %a478) + store { ptr, i64, i64 } %t474, ptr %a479 + call void @finch_str_drop(ptr %a479) + %t480 = load { ptr, i64, i64 }, ptr %a476 + %t481 = load i64, ptr %t469 + %t482 = add i64 %t481, 1 + call void @finch_arr_reserve(ptr %a263, i64 %t482, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t483 = load ptr, ptr %a263 + %t484 = getelementptr inbounds { ptr, i64, i64 }, ptr %t483, i64 %t481 + store { ptr, i64, i64 } %t480, ptr %t484 + store i64 %t482, ptr %t469 + call void @finch_str_drop(ptr %a459) + call void @finch_str_drop(ptr %a427) + br label %endif7588 +else7587: + %t485 = getelementptr inbounds %S.gen.Abi, ptr %a357, i32 0, i32 0 + %t486 = load { ptr, i64, i64 }, ptr %t485 + store { ptr, i64, i64 } %t486, ptr %a487 + store { ptr, i64, i64 } { ptr @.str.4851, i64 8, i64 0 }, ptr %a488 + %t489 = call i32 @finch_str_eq(ptr %a487, ptr %a488) + %t490 = icmp ne i32 %t489, 0 + br i1 %t490, label %then7589, label %else7590 +then7589: + %t491 = load ptr, ptr %a1 + %t492 = load ptr, ptr %a1 + %t493 = load %S.ast.Type, ptr %a345 + %t494 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t492, %S.ast.Type %t493) + %t495 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t491, { ptr, i64, i64 } %t494) + store { ptr, i64, i64 } %t494, ptr %a496 + call void @finch_str_drop(ptr %a496) + store { ptr, i64, i64 } %t495, ptr %a497 + %t498 = load ptr, ptr %a1 + %t499 = load ptr, ptr %a1 + %t500 = load %S.ast.Type, ptr %a345 + %t501 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t499, %S.ast.Type %t500) + %t502 = getelementptr inbounds %S.gen.Val, ptr %a403, i32 0, i32 0 + %t503 = load { ptr, i64, i64 }, ptr %t502 + %t504 = load { ptr, i64, i64 }, ptr %a497 + call void @finch.gen.store(ptr %t498, { ptr, i64, i64 } %t501, { ptr, i64, i64 } %t503, { ptr, i64, i64 } %t504) + store { ptr, i64, i64 } %t501, ptr %a505 + call void @finch_str_drop(ptr %a505) + %t506 = getelementptr inbounds { ptr, i64, i64 }, ptr %a262, i32 0, i32 1 + %t507 = load i64, ptr %t506 + %t508 = add i64 %t507, 1 + call void @finch_arr_reserve(ptr %a262, i64 %t508, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t509 = load ptr, ptr %a262 + %t510 = getelementptr inbounds { ptr, i64, i64 }, ptr %t509, i64 %t507 + store { ptr, i64, i64 } { ptr @.str.4852, i64 3, i64 0 }, ptr %t510 + store i64 %t508, ptr %t506 + %t511 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 + %t512 = load { ptr, i64, i64 }, ptr %a497 + store { ptr, i64, i64 } { ptr @.str.4853, 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 + %t517 = load i64, ptr %t511 + %t518 = add i64 %t517, 1 + call void @finch_arr_reserve(ptr %a263, i64 %t518, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t519 = load ptr, ptr %a263 + %t520 = getelementptr inbounds { ptr, i64, i64 }, ptr %t519, i64 %t517 + store { ptr, i64, i64 } %t516, ptr %t520 + store i64 %t518, ptr %t511 + call void @finch_str_drop(ptr %a497) + br label %endif7591 +else7590: + %t521 = getelementptr inbounds %S.gen.Abi, ptr %a357, i32 0, i32 0 + %t522 = load { ptr, i64, i64 }, ptr %t521 + store { ptr, i64, i64 } %t522, ptr %a523 + store { ptr, i64, i64 } { ptr @.str.4854, i64 6, i64 0 }, ptr %a524 + %t525 = call i32 @finch_str_eq(ptr %a523, ptr %a524) + %t526 = icmp ne i32 %t525, 0 + br i1 %t526, label %then7592, label %else7593 +then7592: + %t527 = load ptr, ptr %a1 + %t528 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t527, { ptr, i64, i64 } { ptr @.str.4855, i64 9, i64 0 }) + store { ptr, i64, i64 } %t528, ptr %a529 + %t530 = load ptr, ptr %a1 + %t531 = load ptr, ptr %a1 + %t532 = load %S.ast.Type, ptr %a345 + %t533 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t531, %S.ast.Type %t532) + %t534 = getelementptr inbounds %S.gen.Val, ptr %a403, i32 0, i32 0 + %t535 = load { ptr, i64, i64 }, ptr %t534 + %t536 = load { ptr, i64, i64 }, ptr %a529 + call void @finch.gen.store(ptr %t530, { ptr, i64, i64 } %t533, { ptr, i64, i64 } %t535, { ptr, i64, i64 } %t536) + store { ptr, i64, i64 } %t533, ptr %a537 + call void @finch_str_drop(ptr %a537) + %t538 = getelementptr inbounds %S.gen.Abi, ptr %a357, i32 0, i32 1 + %t539 = getelementptr inbounds { ptr, i64, i64 }, ptr %t538, i32 0, i32 1 + %t540 = load i64, ptr %t539 + store i64 0, ptr %a541 + br label %for.cond7595 +for.cond7595: + %t542 = load i64, ptr %a541 + %t543 = icmp slt i64 %t542, %t540 + br i1 %t543, label %for.body7596, label %for.end7598 +for.body7596: + %t544 = load ptr, ptr %a1 + %t545 = getelementptr inbounds %S.gen.Abi, ptr %a357, i32 0, i32 1 + %t546 = load i64, ptr %a541 + %t547 = load { ptr, i64, i64 }, ptr %t545 + %t548 = extractvalue { ptr, i64, i64 } %t547, 1 + %t549 = icmp uge i64 %t546, %t548 + br i1 %t549, label %range7599, label %inrange7600 +range7599: + call void @finch_panic_index(ptr @.str.4856, i64 4489, i64 %t546, i64 %t548) unreachable -inrange7227: - %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.4686, 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.4687, 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 %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 %range7228, label %inrange7229 -range7228: - call void @finch_panic_index(ptr @.str.4688, i64 4199, i64 %t508, i64 %t510) +inrange7600: + %t550 = extractvalue { ptr, i64, i64 } %t547, 0 + %t551 = getelementptr inbounds { ptr, i64, i64 }, ptr %t550, i64 %t546 + %t552 = load { ptr, i64, i64 }, ptr %t551 + %t553 = load ptr, ptr %a1 + %t554 = load { ptr, i64, i64 }, ptr %a529 + store { ptr, i64, i64 } { ptr @.str.4857, i64 31, i64 0 }, ptr %a556 + store { ptr, i64, i64 } %t554, ptr %a557 + call void @finch_str_concat(ptr %a555, ptr %a556, ptr %a557) + %t558 = load { ptr, i64, i64 }, ptr %a555 + store { ptr, i64, i64 } %t558, ptr %a560 + store { ptr, i64, i64 } { ptr @.str.4858, i64 6, i64 0 }, ptr %a561 + call void @finch_str_concat(ptr %a559, ptr %a560, ptr %a561) + store { ptr, i64, i64 } %t558, ptr %a562 + call void @finch_str_drop(ptr %a562) + %t563 = load { ptr, i64, i64 }, ptr %a559 + %t564 = load i64, ptr %a541 + %t565 = mul i64 8, %t564 + call void @finch_str_from_int(ptr %a566, i64 %t565) + %t567 = load { ptr, i64, i64 }, ptr %a566 + store { ptr, i64, i64 } %t563, ptr %a569 + store { ptr, i64, i64 } %t567, ptr %a570 + call void @finch_str_concat(ptr %a568, ptr %a569, ptr %a570) + store { ptr, i64, i64 } %t563, ptr %a571 + call void @finch_str_drop(ptr %a571) + store { ptr, i64, i64 } %t567, ptr %a572 + call void @finch_str_drop(ptr %a572) + %t573 = load { ptr, i64, i64 }, ptr %a568 + %t574 = call { ptr, i64, i64 } @finch.gen.op(ptr %t553, { ptr, i64, i64 } %t573) + store { ptr, i64, i64 } %t573, ptr %a575 + call void @finch_str_drop(ptr %a575) + %t576 = call { ptr, i64, i64 } @finch.gen.load(ptr %t544, { ptr, i64, i64 } %t552, { ptr, i64, i64 } %t574) + store { ptr, i64, i64 } %t574, ptr %a577 + call void @finch_str_drop(ptr %a577) + store { ptr, i64, i64 } %t576, ptr %a578 + %t579 = getelementptr inbounds { ptr, i64, i64 }, ptr %a262, i32 0, i32 1 + %t580 = getelementptr inbounds %S.gen.Abi, ptr %a357, i32 0, i32 1 + %t581 = load i64, ptr %a541 + %t582 = load { ptr, i64, i64 }, ptr %t580 + %t583 = extractvalue { ptr, i64, i64 } %t582, 1 + %t584 = icmp uge i64 %t581, %t583 + br i1 %t584, label %range7601, label %inrange7602 +range7601: + call void @finch_panic_index(ptr @.str.4859, i64 4490, i64 %t581, i64 %t583) unreachable -inrange7229: - %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 %range7230, label %inrange7231 -range7230: - call void @finch_panic_index(ptr @.str.4689, i64 4200, i64 %t524, i64 %t526) +inrange7602: + %t585 = extractvalue { ptr, i64, i64 } %t582, 0 + %t586 = getelementptr inbounds { ptr, i64, i64 }, ptr %t585, i64 %t581 + %t587 = load { ptr, i64, i64 }, ptr %t586 + store { ptr, i64, i64 } %t587, ptr %a588 + call void @finch_str_copy(ptr %a589, ptr %a588) + %t590 = load { ptr, i64, i64 }, ptr %a589 + %t591 = load i64, ptr %t579 + %t592 = add i64 %t591, 1 + call void @finch_arr_reserve(ptr %a262, i64 %t592, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t593 = load ptr, ptr %a262 + %t594 = getelementptr inbounds { ptr, i64, i64 }, ptr %t593, i64 %t591 + store { ptr, i64, i64 } %t590, ptr %t594 + store i64 %t592, ptr %t579 + %t595 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 + %t596 = getelementptr inbounds %S.gen.Abi, ptr %a357, i32 0, i32 1 + %t597 = load i64, ptr %a541 + %t598 = load { ptr, i64, i64 }, ptr %t596 + %t599 = extractvalue { ptr, i64, i64 } %t598, 1 + %t600 = icmp uge i64 %t597, %t599 + br i1 %t600, label %range7603, label %inrange7604 +range7603: + call void @finch_panic_index(ptr @.str.4860, i64 4491, i64 %t597, i64 %t599) unreachable -inrange7231: - %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.4690, 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.step7224 -for.step7224: - %t544 = load i64, ptr %a473 - %t545 = add i64 %t544, 1 - store i64 %t545, ptr %a473 - br label %for.cond7222 -for.end7225: - br label %endif7221 -else7220: - %t546 = getelementptr inbounds { ptr, i64, i64 }, ptr %a235, i32 0, i32 1 - %t547 = load ptr, ptr %a1 - %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.4691, 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 %then7232, label %else7233 -then7232: - %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.4692, 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 %endif7234 -else7233: - %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.4693, 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 %endif7234 -endif7234: - br label %endif7221 -endif7221: - br label %endif7218 -endif7218: - br label %endif7215 -endif7215: - br label %for.step7200 -endif7204: - %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 %range7235, label %inrange7236 -range7235: - call void @finch_panic_index(ptr @.str.4694, i64 4213, i64 %t607, i64 %t609) - unreachable -inrange7236: - %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.4695, 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 %then7237, label %endif7239 -then7237: - %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 %range7240, label %inrange7241 -range7240: - call void @finch_panic_index(ptr @.str.4696, i64 4216, i64 %t630, i64 %t632) - unreachable -inrange7241: - %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.4697, i64 23, i64 0 }) - br label %endif7239 -endif7239: - %t637 = getelementptr inbounds %S.ast.Type, ptr %a621, i32 0, i32 0 +inrange7604: + %t601 = extractvalue { ptr, i64, i64 } %t598, 0 + %t602 = getelementptr inbounds { ptr, i64, i64 }, ptr %t601, i64 %t597 + %t603 = load { ptr, i64, i64 }, ptr %t602 + store { ptr, i64, i64 } %t603, ptr %a605 + store { ptr, i64, i64 } { ptr @.str.4861, i64 1, i64 0 }, ptr %a606 + call void @finch_str_concat(ptr %a604, ptr %a605, ptr %a606) + %t607 = load { ptr, i64, i64 }, ptr %a604 + %t608 = load { ptr, i64, i64 }, ptr %a578 + store { ptr, i64, i64 } %t607, ptr %a610 + store { ptr, i64, i64 } %t608, ptr %a611 + call void @finch_str_concat(ptr %a609, ptr %a610, ptr %a611) + store { ptr, i64, i64 } %t607, ptr %a612 + call void @finch_str_drop(ptr %a612) + %t613 = load { ptr, i64, i64 }, ptr %a609 + %t614 = load i64, ptr %t595 + %t615 = add i64 %t614, 1 + call void @finch_arr_reserve(ptr %a263, i64 %t615, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t616 = load ptr, ptr %a263 + %t617 = getelementptr inbounds { ptr, i64, i64 }, ptr %t616, i64 %t614 + store { ptr, i64, i64 } %t613, ptr %t617 + store i64 %t615, ptr %t595 + call void @finch_str_drop(ptr %a578) + br label %for.step7597 +for.step7597: + %t618 = load i64, ptr %a541 + %t619 = add i64 %t618, 1 + store i64 %t619, ptr %a541 + br label %for.cond7595 +for.end7598: + call void @finch_str_drop(ptr %a529) + br label %endif7594 +else7593: + %t620 = getelementptr inbounds { ptr, i64, i64 }, ptr %a262, i32 0, i32 1 + %t621 = load ptr, ptr %a1 + %t622 = load %S.ast.Type, ptr %a345 + %t623 = call { ptr, i64, i64 } @finch.gen.cLL(ptr %t621, %S.ast.Type %t622) + %t624 = load ptr, ptr %a1 + %t625 = load %S.ast.Type, ptr %a345 + %t626 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t624, %S.ast.Type %t625) + store { ptr, i64, i64 } %t623, ptr %a628 + store { ptr, i64, i64 } %t626, ptr %a629 + call void @finch_str_concat(ptr %a627, ptr %a628, ptr %a629) + store { ptr, i64, i64 } %t623, ptr %a630 + call void @finch_str_drop(ptr %a630) + store { ptr, i64, i64 } %t626, ptr %a631 + call void @finch_str_drop(ptr %a631) + %t632 = load { ptr, i64, i64 }, ptr %a627 + %t633 = load i64, ptr %t620 + %t634 = add i64 %t633, 1 + call void @finch_arr_reserve(ptr %a262, i64 %t634, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t635 = load ptr, ptr %a262 + %t636 = getelementptr inbounds { ptr, i64, i64 }, ptr %t635, i64 %t633 + store { ptr, i64, i64 } %t632, ptr %t636 + store i64 %t634, ptr %t620 + %t637 = getelementptr inbounds %S.ast.Type, ptr %a345, i32 0, i32 0 %t638 = load { ptr, i64, i64 }, ptr %t637 store { ptr, i64, i64 } %t638, ptr %a639 - store { ptr, i64, i64 } { ptr @.str.4698, i64 6, i64 0 }, ptr %a640 + store { ptr, i64, i64 } { ptr @.str.4862, i64 3, i64 0 }, ptr %a640 %t641 = call i32 @finch_str_eq(ptr %a639, ptr %a640) %t642 = icmp ne i32 %t641, 0 - br label %logic.from7242 -logic.from7242: - br i1 %t642, label %logic.end7244, label %logic.rhs7243 -logic.rhs7243: - %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.4699, 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.rend7245 -logic.rend7245: - br label %logic.end7244 -logic.end7244: - %t649 = phi i1 [ true, %logic.from7242 ], [ %t648, %logic.rend7245 ] - br i1 %t649, label %then7246, label %endif7248 -then7246: - %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 %range7249, label %inrange7250 -range7249: - call void @finch_panic_index(ptr @.str.4700, i64 4219, i64 %t652, i64 %t654) + br i1 %t642, label %then7605, label %else7606 +then7605: + %t643 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 + %t644 = load ptr, ptr %a1 + %t645 = getelementptr inbounds %S.gen.Val, ptr %a403, i32 0, i32 0 + %t646 = load { ptr, i64, i64 }, ptr %t645 + %t647 = call { ptr, i64, i64 } @finch.gen.cstr(ptr %t644, { ptr, i64, i64 } %t646) + store { ptr, i64, i64 } { ptr @.str.4863, i64 4, i64 0 }, ptr %a649 + store { ptr, i64, i64 } %t647, ptr %a650 + call void @finch_str_concat(ptr %a648, ptr %a649, ptr %a650) + store { ptr, i64, i64 } %t647, ptr %a651 + call void @finch_str_drop(ptr %a651) + %t652 = load { ptr, i64, i64 }, ptr %a648 + %t653 = load i64, ptr %t643 + %t654 = add i64 %t653, 1 + call void @finch_arr_reserve(ptr %a263, i64 %t654, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t655 = load ptr, ptr %a263 + %t656 = getelementptr inbounds { ptr, i64, i64 }, ptr %t655, i64 %t653 + store { ptr, i64, i64 } %t652, ptr %t656 + store i64 %t654, ptr %t643 + br label %endif7607 +else7606: + %t657 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 + %t658 = load ptr, ptr %a1 + %t659 = load %S.ast.Type, ptr %a345 + %t660 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t658, %S.ast.Type %t659) + %t661 = load ptr, ptr %a1 + %t662 = load %S.ast.Type, ptr %a345 + %t663 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t661, %S.ast.Type %t662) + store { ptr, i64, i64 } %t660, ptr %a665 + store { ptr, i64, i64 } %t663, ptr %a666 + call void @finch_str_concat(ptr %a664, ptr %a665, ptr %a666) + store { ptr, i64, i64 } %t660, ptr %a667 + call void @finch_str_drop(ptr %a667) + store { ptr, i64, i64 } %t663, ptr %a668 + call void @finch_str_drop(ptr %a668) + %t669 = load { ptr, i64, i64 }, ptr %a664 + store { ptr, i64, i64 } %t669, ptr %a671 + store { ptr, i64, i64 } { ptr @.str.4864, i64 1, i64 0 }, ptr %a672 + call void @finch_str_concat(ptr %a670, ptr %a671, ptr %a672) + store { ptr, i64, i64 } %t669, ptr %a673 + call void @finch_str_drop(ptr %a673) + %t674 = load { ptr, i64, i64 }, ptr %a670 + %t675 = getelementptr inbounds %S.gen.Val, ptr %a403, i32 0, i32 0 + %t676 = load { ptr, i64, i64 }, ptr %t675 + store { ptr, i64, i64 } %t674, ptr %a678 + store { ptr, i64, i64 } %t676, ptr %a679 + call void @finch_str_concat(ptr %a677, ptr %a678, ptr %a679) + store { ptr, i64, i64 } %t674, ptr %a680 + call void @finch_str_drop(ptr %a680) + %t681 = load { ptr, i64, i64 }, ptr %a677 + %t682 = load i64, ptr %t657 + %t683 = add i64 %t682, 1 + call void @finch_arr_reserve(ptr %a263, i64 %t683, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t684 = load ptr, ptr %a263 + %t685 = getelementptr inbounds { ptr, i64, i64 }, ptr %t684, i64 %t682 + store { ptr, i64, i64 } %t681, ptr %t685 + store i64 %t683, ptr %t657 + br label %endif7607 +endif7607: + br label %endif7594 +endif7594: + br label %endif7591 +endif7591: + br label %endif7588 +endif7588: + call void @finch.drop.S_gen_Val(ptr %a403) + call void @finch.drop.S_gen_Abi(ptr %a357) + call void @finch.drop.S_ast_Type(ptr %a345) + br label %for.step7573 +endif7577: + %t686 = load ptr, ptr %a1 + %t687 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t688 = load i64, ptr %a327 + %t689 = load { ptr, i64, i64 }, ptr %t687 + %t690 = extractvalue { ptr, i64, i64 } %t689, 1 + %t691 = icmp uge i64 %t688, %t690 + br i1 %t691, label %range7608, label %inrange7609 +range7608: + call void @finch_panic_index(ptr @.str.4865, i64 4504, i64 %t688, i64 %t690) unreachable -inrange7250: - %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.4701, i64 68, i64 0 }) - br label %endif7248 -endif7248: - %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.4702, 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 %then7251, label %else7252 -then7251: - %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.4703, 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.4704, i64 5, i64 0 }) - store %S.ast.Type %t676, ptr %a621 - br label %endif7253 -else7252: - %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.4705, 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 %then7254, label %else7255 -then7254: - %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.4706, i64 3, i64 0 }) - store %S.ast.Type %t686, ptr %a621 - br label %endif7256 -else7255: - %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.4707, 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 %then7257, label %else7258 -then7257: - %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.4708, 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.4709, 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.4710, i64 3, i64 0 }) - store %S.ast.Type %t705, ptr %a621 - br label %endif7259 -else7258: - %t706 = load %S.ast.Type, ptr %a621 - %t707 = call i1 @finch.gen.isInt(%S.ast.Type %t706) - br label %logic.from7260 -logic.from7260: - br i1 %t707, label %logic.end7262, label %logic.rhs7261 -logic.rhs7261: - %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.4711, 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.rend7263 -logic.rend7263: - br label %logic.end7262 -logic.end7262: - %t714 = phi i1 [ true, %logic.from7260 ], [ %t713, %logic.rend7263 ] - br label %logic.from7264 -logic.from7264: - br i1 %t714, label %logic.rhs7265, label %logic.end7266 -logic.rhs7265: - %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.rend7267 -logic.rend7267: - br label %logic.end7266 -logic.end7266: - %t718 = phi i1 [ false, %logic.from7264 ], [ %t717, %logic.rend7267 ] - br i1 %t718, label %then7268, label %endif7270 -then7268: - %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.4712, 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.4713, i64 3, i64 0 }) - store %S.ast.Type %t724, ptr %a621 - br label %endif7270 -endif7270: - br label %endif7259 -endif7259: - br label %endif7256 -endif7256: - br label %endif7253 -endif7253: - %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.4714, 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.step7200 -for.step7200: - %t742 = load i64, ptr %a285 - %t743 = add i64 %t742, 1 - store i64 %t743, ptr %a285 - br label %for.cond7198 -for.end7201: - %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.4715, 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 } %t753, ptr %a754 - store { ptr, i64, i64 } { ptr @.str.4716, 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 %then7271, label %endif7273 -then7271: - %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 %endif7273 -endif7273: - store { ptr, i64, i64 } { ptr @.str.4717, 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 %then7274, label %endif7276 -then7274: - store { ptr, i64, i64 } { ptr @.str.4718, 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 %then7277, label %endif7279 -then7277: - store { ptr, i64, i64 } { ptr @.str.4719, i64 3, i64 0 }, ptr %a761 - br label %endif7279 -endif7279: - br label %endif7276 -endif7276: - %t767 = load ptr, ptr %a1 - %t768 = icmp eq ptr %t767, null - br i1 %t768, label %panic7280, label %ok7281 -panic7280: - call void @finch_panic(ptr @.str.4720, i64 4250, ptr @.str.4721) +inrange7609: + %t692 = extractvalue { ptr, i64, i64 } %t689, 0 + %t693 = getelementptr inbounds %S.ast.Node, ptr %t692, i64 %t688 + %t694 = load %S.ast.Node, ptr %t693 + %t695 = call %S.gen.Val @finch.gen.expr(ptr %t686, %S.ast.Node %t694) + store %S.gen.Val %t695, ptr %a696 + %t697 = getelementptr inbounds %S.gen.Val, ptr %a696, i32 0, i32 1 + %t698 = load %S.ast.Type, ptr %t697 + store %S.ast.Type %t698, ptr %a699 + call void @finch.copy.S_ast_Type(ptr %a700, ptr %a699) + %t701 = load %S.ast.Type, ptr %a700 + store %S.ast.Type %t701, ptr %a702 + %t703 = getelementptr inbounds %S.ast.Type, ptr %a702, i32 0, i32 0 + %t704 = load { ptr, i64, i64 }, ptr %t703 + store { ptr, i64, i64 } %t704, ptr %a705 + store { ptr, i64, i64 } { ptr @.str.4866, i64 4, i64 0 }, ptr %a706 + %t707 = call i32 @finch_str_eq(ptr %a705, ptr %a706) + %t708 = icmp ne i32 %t707, 0 + br i1 %t708, label %then7610, label %endif7612 +then7610: + %t709 = load ptr, ptr %a1 + %t710 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t711 = load i64, ptr %a327 + %t712 = load { ptr, i64, i64 }, ptr %t710 + %t713 = extractvalue { ptr, i64, i64 } %t712, 1 + %t714 = icmp uge i64 %t711, %t713 + br i1 %t714, label %range7613, label %inrange7614 +range7613: + call void @finch_panic_index(ptr @.str.4867, i64 4507, i64 %t711, i64 %t713) unreachable -ok7281: - %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.4722, 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.cond7282 -find.cond7282: - %t781 = load i64, ptr %a780 - %t782 = icmp slt i64 %t781, %t778 - br i1 %t782, label %find.body7283, label %find.end7286 -find.body7283: - %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.hit7284, label %find.next7285 -find.hit7284: - store i64 %t781, ptr %a777 - br label %find.end7286 -find.next7285: - %t789 = add i64 %t781, 1 - store i64 %t789, ptr %a780 - br label %find.cond7282 -find.end7286: - %t790 = load i64, ptr %a777 - %t791 = icmp sge i64 %t790, 0 - %t792 = xor i1 %t791, true - br i1 %t792, label %then7287, label %endif7289 -then7287: - %t793 = load ptr, ptr %a1 - %t794 = icmp eq ptr %t793, null - br i1 %t794, label %panic7290, label %ok7291 -panic7290: - call void @finch_panic(ptr @.str.4723, i64 4251, ptr @.str.4724) +inrange7614: + %t715 = extractvalue { ptr, i64, i64 } %t712, 0 + %t716 = getelementptr inbounds %S.ast.Node, ptr %t715, i64 %t711 + %t717 = load %S.ast.Node, ptr %t716 + call void @finch.gen.fail(ptr %t709, %S.ast.Node %t717, { ptr, i64, i64 } { ptr @.str.4868, i64 23, i64 0 }) + br label %endif7612 +endif7612: + %t718 = getelementptr inbounds { ptr, i64, i64 }, ptr %a317, i32 0, i32 1 + %t719 = load %S.gen.Val, ptr %a696 + store %S.gen.Val %t719, ptr %a720 + call void @finch.copy.S_gen_Val(ptr %a721, ptr %a720) + %t722 = load %S.gen.Val, ptr %a721 + %t723 = load i64, ptr %t718 + %t724 = add i64 %t723, 1 + call void @finch_arr_reserve(ptr %a317, i64 %t724, i64 ptrtoint (ptr getelementptr (%S.gen.Val, ptr null, i32 1) to i64)) + %t725 = load ptr, ptr %a317 + %t726 = getelementptr inbounds %S.gen.Val, ptr %t725, i64 %t723 + store %S.gen.Val %t722, ptr %t726 + store i64 %t724, ptr %t718 + %t727 = load ptr, ptr %a1 + %t728 = load %S.gen.Val, ptr %a696 + call void @finch.gen.hold(ptr %t727, %S.gen.Val %t728) + %t729 = getelementptr inbounds %S.ast.Type, ptr %a702, i32 0, i32 0 + %t730 = load { ptr, i64, i64 }, ptr %t729 + store { ptr, i64, i64 } %t730, ptr %a731 + store { ptr, i64, i64 } { ptr @.str.4869, i64 6, i64 0 }, ptr %a732 + %t733 = call i32 @finch_str_eq(ptr %a731, ptr %a732) + %t734 = icmp ne i32 %t733, 0 + br label %logic.from7615 +logic.from7615: + br i1 %t734, label %logic.end7617, label %logic.rhs7616 +logic.rhs7616: + %t735 = getelementptr inbounds %S.ast.Type, ptr %a702, i32 0, i32 0 + %t736 = load { ptr, i64, i64 }, ptr %t735 + store { ptr, i64, i64 } %t736, ptr %a737 + store { ptr, i64, i64 } { ptr @.str.4870, i64 5, i64 0 }, ptr %a738 + %t739 = call i32 @finch_str_eq(ptr %a737, ptr %a738) + %t740 = icmp ne i32 %t739, 0 + br label %logic.rend7618 +logic.rend7618: + br label %logic.end7617 +logic.end7617: + %t741 = phi i1 [ true, %logic.from7615 ], [ %t740, %logic.rend7618 ] + br i1 %t741, label %then7619, label %endif7621 +then7619: + %t742 = load ptr, ptr %a1 + %t743 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t744 = load i64, ptr %a327 + %t745 = load { ptr, i64, i64 }, ptr %t743 + %t746 = extractvalue { ptr, i64, i64 } %t745, 1 + %t747 = icmp uge i64 %t744, %t746 + br i1 %t747, label %range7622, label %inrange7623 +range7622: + call void @finch_panic_index(ptr @.str.4871, i64 4512, i64 %t744, i64 %t746) unreachable -ok7291: - %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.4725, 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 - %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 %then7292, label %endif7294 -then7292: - %t811 = load ptr, ptr %a1 - %t812 = icmp eq ptr %t811, null - br i1 %t812, label %panic7295, label %ok7296 -panic7295: - call void @finch_panic(ptr @.str.4726, i64 4253, ptr @.str.4727) - unreachable -ok7296: - %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.4728, 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.4729, 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.4730, 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.4731, 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.4732, 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 +inrange7623: + %t748 = extractvalue { ptr, i64, i64 } %t745, 0 + %t749 = getelementptr inbounds %S.ast.Node, ptr %t748, i64 %t744 + %t750 = load %S.ast.Node, ptr %t749 + call void @finch.gen.fail(ptr %t742, %S.ast.Node %t750, { ptr, i64, i64 } { ptr @.str.4872, i64 68, i64 0 }) + br label %endif7621 +endif7621: + %t751 = getelementptr inbounds %S.gen.Val, ptr %a696, i32 0, i32 0 + %t752 = load { ptr, i64, i64 }, ptr %t751 + store { ptr, i64, i64 } %t752, ptr %a753 + call void @finch_str_copy(ptr %a754, ptr %a753) + %t755 = load { ptr, i64, i64 }, ptr %a754 + store { ptr, i64, i64 } %t755, ptr %a756 + %t757 = getelementptr inbounds %S.ast.Type, ptr %a702, i32 0, i32 0 + %t758 = load { ptr, i64, i64 }, ptr %t757 + store { ptr, i64, i64 } %t758, ptr %a759 + store { ptr, i64, i64 } { ptr @.str.4873, i64 3, i64 0 }, ptr %a760 + %t761 = call i32 @finch_str_eq(ptr %a759, ptr %a760) + %t762 = icmp ne i32 %t761, 0 + br i1 %t762, label %then7624, label %else7625 +then7624: + %t763 = load ptr, ptr %a1 + %t764 = load { ptr, i64, i64 }, ptr %a756 + %t765 = load %S.ast.Type, ptr %a702 + %t766 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4874, i64 5, i64 0 }) + %t767 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t763, { ptr, i64, i64 } %t764, %S.ast.Type %t765, %S.ast.Type %t766) + store %S.ast.Type %t766, ptr %a768 + call void @finch.drop.S_ast_Type(ptr %a768) + %t769 = load { ptr, i64, i64 }, ptr %a756 + store { ptr, i64, i64 } %t767, ptr %a756 + store { ptr, i64, i64 } %t769, ptr %a770 + call void @finch_str_drop(ptr %a770) + %t771 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4875, i64 5, i64 0 }) + %t772 = load %S.ast.Type, ptr %a702 + store %S.ast.Type %t771, ptr %a702 + store %S.ast.Type %t772, ptr %a773 + call void @finch.drop.S_ast_Type(ptr %a773) + br label %endif7626 +else7625: + %t774 = getelementptr inbounds %S.ast.Type, ptr %a702, i32 0, i32 0 + %t775 = load { ptr, i64, i64 }, ptr %t774 + store { ptr, i64, i64 } %t775, ptr %a776 + store { ptr, i64, i64 } { ptr @.str.4876, i64 3, i64 0 }, ptr %a777 + %t778 = call i32 @finch_str_eq(ptr %a776, ptr %a777) + %t779 = icmp ne i32 %t778, 0 + br i1 %t779, label %then7627, label %else7628 +then7627: + %t780 = load ptr, ptr %a1 + %t781 = load { ptr, i64, i64 }, ptr %a756 + %t782 = call { ptr, i64, i64 } @finch.gen.cstr(ptr %t780, { ptr, i64, i64 } %t781) + %t783 = load { ptr, i64, i64 }, ptr %a756 + store { ptr, i64, i64 } %t782, ptr %a756 + store { ptr, i64, i64 } %t783, ptr %a784 + call void @finch_str_drop(ptr %a784) + %t785 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4877, i64 3, i64 0 }) + %t786 = load %S.ast.Type, ptr %a702 + store %S.ast.Type %t785, ptr %a702 + store %S.ast.Type %t786, ptr %a787 + call void @finch.drop.S_ast_Type(ptr %a787) + br label %endif7629 +else7628: + %t788 = getelementptr inbounds %S.ast.Type, ptr %a702, i32 0, i32 0 + %t789 = load { ptr, i64, i64 }, ptr %t788 + store { ptr, i64, i64 } %t789, ptr %a790 + store { ptr, i64, i64 } { ptr @.str.4878, i64 4, i64 0 }, ptr %a791 + %t792 = call i32 @finch_str_eq(ptr %a790, ptr %a791) + %t793 = icmp ne i32 %t792, 0 + br i1 %t793, label %then7630, label %else7631 +then7630: + %t794 = load ptr, ptr %a1 + %t795 = getelementptr inbounds %S.gen.Val, ptr %a696, i32 0, i32 0 + %t796 = load { ptr, i64, i64 }, ptr %t795 + store { ptr, i64, i64 } { ptr @.str.4879, i64 8, i64 0 }, ptr %a798 + store { ptr, i64, i64 } %t796, ptr %a799 + call void @finch_str_concat(ptr %a797, ptr %a798, ptr %a799) + %t800 = load { ptr, i64, i64 }, ptr %a797 + store { ptr, i64, i64 } %t800, ptr %a802 + store { ptr, i64, i64 } { ptr @.str.4880, i64 7, i64 0 }, ptr %a803 + call void @finch_str_concat(ptr %a801, ptr %a802, ptr %a803) + store { ptr, i64, i64 } %t800, ptr %a804 + call void @finch_str_drop(ptr %a804) + %t805 = load { ptr, i64, i64 }, ptr %a801 + %t806 = call { ptr, i64, i64 } @finch.gen.op(ptr %t794, { ptr, i64, i64 } %t805) + store { ptr, i64, i64 } %t805, ptr %a807 + call void @finch_str_drop(ptr %a807) + %t808 = load { ptr, i64, i64 }, ptr %a756 + store { ptr, i64, i64 } %t806, ptr %a756 + store { ptr, i64, i64 } %t808, ptr %a809 + call void @finch_str_drop(ptr %a809) + %t810 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4881, i64 3, i64 0 }) + %t811 = load %S.ast.Type, ptr %a702 + store %S.ast.Type %t810, ptr %a702 + store %S.ast.Type %t811, ptr %a812 + call void @finch.drop.S_ast_Type(ptr %a812) + br label %endif7632 +else7631: + %t813 = load %S.ast.Type, ptr %a702 + %t814 = call i1 @finch.gen.isInt(%S.ast.Type %t813) + br label %logic.from7633 +logic.from7633: + br i1 %t814, label %logic.end7635, label %logic.rhs7634 +logic.rhs7634: + %t815 = getelementptr inbounds %S.ast.Type, ptr %a702, i32 0, i32 0 + %t816 = load { ptr, i64, i64 }, ptr %t815 + store { ptr, i64, i64 } %t816, ptr %a817 + store { ptr, i64, i64 } { ptr @.str.4882, i64 4, i64 0 }, ptr %a818 + %t819 = call i32 @finch_str_eq(ptr %a817, ptr %a818) + %t820 = icmp ne i32 %t819, 0 + br label %logic.rend7636 +logic.rend7636: + br label %logic.end7635 +logic.end7635: + %t821 = phi i1 [ true, %logic.from7633 ], [ %t820, %logic.rend7636 ] + br label %logic.from7637 +logic.from7637: + br i1 %t821, label %logic.rhs7638, label %logic.end7639 +logic.rhs7638: + %t822 = load %S.ast.Type, ptr %a702 + %t823 = call i64 @finch.gen.bitsOf(%S.ast.Type %t822) + %t824 = icmp slt i64 %t823, 32 + br label %logic.rend7640 +logic.rend7640: + br label %logic.end7639 +logic.end7639: + %t825 = phi i1 [ false, %logic.from7637 ], [ %t824, %logic.rend7640 ] + br i1 %t825, label %then7641, label %endif7643 +then7641: + %t826 = load ptr, ptr %a1 + %t827 = load { ptr, i64, i64 }, ptr %a756 + %t828 = load %S.ast.Type, ptr %a702 + %t829 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4883, i64 3, i64 0 }) + %t830 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t826, { ptr, i64, i64 } %t827, %S.ast.Type %t828, %S.ast.Type %t829) + store %S.ast.Type %t829, ptr %a831 + call void @finch.drop.S_ast_Type(ptr %a831) + %t832 = load { ptr, i64, i64 }, ptr %a756 + store { ptr, i64, i64 } %t830, ptr %a756 + store { ptr, i64, i64 } %t832, ptr %a833 + call void @finch_str_drop(ptr %a833) + %t834 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4884, i64 3, i64 0 }) + %t835 = load %S.ast.Type, ptr %a702 + store %S.ast.Type %t834, ptr %a702 + store %S.ast.Type %t835, ptr %a836 + call void @finch.drop.S_ast_Type(ptr %a836) + br label %endif7643 +endif7643: + br label %endif7632 +endif7632: + br label %endif7629 +endif7629: + br label %endif7626 +endif7626: + %t837 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 + %t838 = load ptr, ptr %a1 + %t839 = load %S.ast.Type, ptr %a702 + %t840 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t838, %S.ast.Type %t839) + store { ptr, i64, i64 } %t840, ptr %a842 + store { ptr, i64, i64 } { ptr @.str.4885, i64 1, i64 0 }, ptr %a843 + call void @finch_str_concat(ptr %a841, ptr %a842, ptr %a843) + store { ptr, i64, i64 } %t840, ptr %a844 + call void @finch_str_drop(ptr %a844) + %t845 = load { ptr, i64, i64 }, ptr %a841 + %t846 = load { ptr, i64, i64 }, ptr %a756 + store { ptr, i64, i64 } %t845, 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.4733, 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 %endif7294 -endif7294: - br label %endif7289 -endif7289: - store { ptr, i64, i64 } { ptr @.str.4734, 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 %then7297, label %endif7299 -then7297: - %t867 = getelementptr inbounds { ptr, i64, i64 }, ptr %a235, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4736, 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.4735, 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.4737, 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 %endif7299 -endif7299: - %t884 = load { ptr, i64, i64 }, ptr %a750 - store { ptr, i64, i64 } { ptr @.str.4738, 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.4739, 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 } %t845, ptr %a850 + call void @finch_str_drop(ptr %a850) + %t851 = load { ptr, i64, i64 }, ptr %a847 + %t852 = load i64, ptr %t837 + %t853 = add i64 %t852, 1 + call void @finch_arr_reserve(ptr %a263, i64 %t853, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t854 = load ptr, ptr %a263 + %t855 = getelementptr inbounds { ptr, i64, i64 }, ptr %t854, i64 %t852 + store { ptr, i64, i64 } %t851, ptr %t855 + store i64 %t853, ptr %t837 + call void @finch_str_drop(ptr %a756) + call void @finch.drop.S_ast_Type(ptr %a702) + call void @finch.drop.S_gen_Val(ptr %a696) + br label %for.step7573 +for.step7573: + %t856 = load i64, ptr %a327 + %t857 = add i64 %t856, 1 + store i64 %t857, ptr %a327 + br label %for.cond7571 +for.end7574: + %t858 = getelementptr inbounds %S.gen.Plan, ptr %a261, i32 0, i32 2 + %t859 = load { ptr, i64, i64 }, ptr %t858 + store { ptr, i64, i64 } %t859, ptr %a860 + call void @finch_str_copy(ptr %a861, ptr %a860) + %t862 = load { ptr, i64, i64 }, ptr %a861 + store { ptr, i64, i64 } %t862, ptr %a863 + store { ptr, i64, i64 } { ptr @.str.4886, i64 0, i64 0 }, ptr %a864 + %t865 = getelementptr inbounds %S.gen.Plan, ptr %a261, i32 0, i32 0 + %t866 = getelementptr inbounds %S.gen.Abi, ptr %t865, i32 0, i32 0 + %t867 = load { ptr, i64, i64 }, ptr %t866 + store { ptr, i64, i64 } %t867, ptr %a868 + store { ptr, i64, i64 } { ptr @.str.4887, i64 6, i64 0 }, ptr %a869 + %t870 = call i32 @finch_str_eq(ptr %a868, ptr %a869) + %t871 = icmp ne i32 %t870, 0 + br i1 %t871, label %then7644, label %endif7646 +then7644: + %t872 = load ptr, ptr %a1 + %t873 = load %S.ast.Type, ptr %a219 + %t874 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t872, %S.ast.Type %t873) + %t875 = load { ptr, i64, i64 }, ptr %a864 + store { ptr, i64, i64 } %t874, ptr %a864 + store { ptr, i64, i64 } %t875, ptr %a876 + call void @finch_str_drop(ptr %a876) + br label %endif7646 +endif7646: + store { ptr, i64, i64 } { ptr @.str.4888, i64 0, i64 0 }, ptr %a877 + %t878 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 4 + %t879 = load i1, ptr %t878 + br i1 %t879, label %then7647, label %endif7649 +then7647: + %t880 = load { ptr, i64, i64 }, ptr %a877 + store { ptr, i64, i64 } { ptr @.str.4889, i64 5, i64 0 }, ptr %a877 + store { ptr, i64, i64 } %t880, ptr %a881 + call void @finch_str_drop(ptr %a881) + %t882 = getelementptr inbounds { ptr, i64, i64 }, ptr %a262, i32 0, i32 1 + %t883 = load i64, ptr %t882 + %t884 = icmp eq i64 %t883, 0 + br i1 %t884, label %then7650, label %endif7652 +then7650: + %t885 = load { ptr, i64, i64 }, ptr %a877 + store { ptr, i64, i64 } { ptr @.str.4890, i64 3, i64 0 }, ptr %a877 + store { ptr, i64, i64 } %t885, ptr %a886 + call void @finch_str_drop(ptr %a886) + br label %endif7652 +endif7652: + br label %endif7649 +endif7649: + %t887 = load ptr, ptr %a1 + %t888 = icmp eq ptr %t887, null + br i1 %t888, label %panic7653, label %ok7654 +panic7653: + call void @finch_panic(ptr @.str.4891, i64 4543, ptr @.str.4892) + unreachable +ok7654: + %t889 = getelementptr inbounds %S.gen.Gen, ptr %t887, i32 0, i32 39 + %t890 = getelementptr inbounds { ptr, i64, i64 }, ptr %t889, i32 0, i32 1 + %t891 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 + %t892 = load { ptr, i64, i64 }, ptr %t891 + store { ptr, i64, i64 } { ptr @.str.4893, i64 2, i64 0 }, ptr %a894 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.4740, 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.4741, 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.4742, 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.4743, 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.4744, 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 %then7300, label %endif7302 -then7300: - %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 -endif7302: - %t943 = getelementptr inbounds %S.gen.Plan, ptr %a234, i32 0, i32 3 - %t944 = load i1, ptr %t943 - br i1 %t944, label %then7303, label %endif7305 -then7303: - %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 %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 -endif7305: - %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.4745, 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 %then7306, label %endif7308 -then7306: - %t970 = load ptr, ptr %a1 - %t971 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t970, { ptr, i64, i64 } { ptr @.str.4746, 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 -endif7308: - %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.4747, 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 %then7309, label %endif7311 -then7309: - %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.4748, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4749, 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.4750, 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.4751, 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.4752, 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.4753, 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 -endif7311: - %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 + call void @finch_str_concat(ptr %a893, ptr %a894, ptr %a895) + %t896 = load { ptr, i64, i64 }, ptr %a893 + store i64 -1, ptr %a897 + %t898 = load i64, ptr %t890 + %t899 = load ptr, ptr %t889 + store i64 0, ptr %a900 + br label %find.cond7655 +find.cond7655: + %t901 = load i64, ptr %a900 + %t902 = icmp slt i64 %t901, %t898 + br i1 %t902, label %find.body7656, label %find.end7659 +find.body7656: + %t903 = getelementptr inbounds { ptr, i64, i64 }, ptr %t899, i64 %t901 + %t904 = load { ptr, i64, i64 }, ptr %t903 + store { ptr, i64, i64 } %t904, ptr %a905 + store { ptr, i64, i64 } %t896, ptr %a906 + %t907 = call i32 @finch_str_eq(ptr %a905, ptr %a906) + %t908 = icmp ne i32 %t907, 0 + br i1 %t908, label %find.hit7657, label %find.next7658 +find.hit7657: + store i64 %t901, ptr %a897 + br label %find.end7659 +find.next7658: + %t909 = add i64 %t901, 1 + store i64 %t909, ptr %a900 + br label %find.cond7655 +find.end7659: + store { ptr, i64, i64 } %t896, ptr %a910 + call void @finch_str_drop(ptr %a910) + %t911 = load i64, ptr %a897 + %t912 = icmp sge i64 %t911, 0 + %t913 = xor i1 %t912, true + br i1 %t913, label %then7660, label %endif7662 +then7660: + %t914 = load ptr, ptr %a1 + %t915 = icmp eq ptr %t914, null + br i1 %t915, label %panic7663, label %ok7664 +panic7663: + call void @finch_panic(ptr @.str.4894, i64 4544, ptr @.str.4895) + unreachable +ok7664: + %t916 = getelementptr inbounds %S.gen.Gen, ptr %t914, i32 0, i32 39 + %t917 = getelementptr inbounds { ptr, i64, i64 }, ptr %t916, i32 0, i32 1 + %t918 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 + %t919 = load { ptr, i64, i64 }, ptr %t918 + store { ptr, i64, i64 } { ptr @.str.4896, i64 2, 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 + %t924 = load i64, ptr %t917 + %t925 = add i64 %t924, 1 + call void @finch_arr_reserve(ptr %t916, i64 %t925, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t926 = load ptr, ptr %t916 + %t927 = getelementptr inbounds { ptr, i64, i64 }, ptr %t926, i64 %t924 + store { ptr, i64, i64 } %t923, ptr %t927 + store i64 %t925, ptr %t917 + %t928 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 + %t929 = load { ptr, i64, i64 }, ptr %t928 + %t930 = call i1 @finch.gen.runtimeDeclares({ ptr, i64, i64 } %t929) + %t931 = xor i1 %t930, true + br i1 %t931, label %then7665, label %endif7667 +then7665: + %t932 = load ptr, ptr %a1 + %t933 = icmp eq ptr %t932, null + br i1 %t933, label %panic7668, label %ok7669 +panic7668: + call void @finch_panic(ptr @.str.4897, i64 4546, ptr @.str.4898) + unreachable +ok7669: + %t934 = getelementptr inbounds %S.gen.Gen, ptr %t932, i32 0, i32 2 + %t935 = getelementptr inbounds { ptr, i64, i64 }, ptr %t934, i32 0, i32 1 + %t936 = load { ptr, i64, i64 }, ptr %a864 + store { ptr, i64, i64 } { ptr @.str.4899, i64 7, i64 0 }, ptr %a938 + store { ptr, i64, i64 } %t936, ptr %a939 + call void @finch_str_concat(ptr %a937, ptr %a938, ptr %a939) + %t940 = load { ptr, i64, i64 }, ptr %a937 + store { ptr, i64, i64 } %t940, ptr %a942 + store { ptr, i64, i64 } { ptr @.str.4900, i64 1, i64 0 }, ptr %a943 + call void @finch_str_concat(ptr %a941, ptr %a942, ptr %a943) + store { ptr, i64, i64 } %t940, ptr %a944 + call void @finch_str_drop(ptr %a944) + %t945 = load { ptr, i64, i64 }, ptr %a941 + %t946 = load { ptr, i64, i64 }, ptr %a863 + store { ptr, i64, i64 } %t945, ptr %a948 + store { ptr, i64, i64 } %t946, ptr %a949 + call void @finch_str_concat(ptr %a947, ptr %a948, ptr %a949) + store { ptr, i64, i64 } %t945, ptr %a950 + call void @finch_str_drop(ptr %a950) + %t951 = load { ptr, i64, i64 }, ptr %a947 + store { ptr, i64, i64 } %t951, ptr %a953 + store { ptr, i64, i64 } { ptr @.str.4901, i64 2, i64 0 }, ptr %a954 + call void @finch_str_concat(ptr %a952, ptr %a953, ptr %a954) + store { ptr, i64, i64 } %t951, ptr %a955 + call void @finch_str_drop(ptr %a955) + %t956 = load { ptr, i64, i64 }, ptr %a952 + %t957 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 + %t958 = load { ptr, i64, i64 }, ptr %t957 + store { ptr, i64, i64 } %t956, ptr %a960 + store { ptr, i64, i64 } %t958, ptr %a961 + call void @finch_str_concat(ptr %a959, ptr %a960, ptr %a961) + store { ptr, i64, i64 } %t956, ptr %a962 + call void @finch_str_drop(ptr %a962) + %t963 = load { ptr, i64, i64 }, ptr %a959 + store { ptr, i64, i64 } %t963, ptr %a965 + store { ptr, i64, i64 } { ptr @.str.4902, i64 1, i64 0 }, ptr %a966 + call void @finch_str_concat(ptr %a964, ptr %a965, ptr %a966) + store { ptr, i64, i64 } %t963, ptr %a967 + call void @finch_str_drop(ptr %a967) + %t968 = load { ptr, i64, i64 }, ptr %a964 + %t969 = getelementptr inbounds { ptr, i64, i64 }, ptr %a262, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.4903, i64 2, i64 0 }, ptr %a970 + call void @finch_str_join(ptr %a971, ptr %a262, ptr %a970) + %t972 = load { ptr, i64, i64 }, ptr %a971 + store { ptr, i64, i64 } %t968, ptr %a974 + store { ptr, i64, i64 } %t972, ptr %a975 + call void @finch_str_concat(ptr %a973, ptr %a974, ptr %a975) + store { ptr, i64, i64 } %t968, ptr %a976 + call void @finch_str_drop(ptr %a976) + store { ptr, i64, i64 } %t972, ptr %a977 + call void @finch_str_drop(ptr %a977) + %t978 = load { ptr, i64, i64 }, ptr %a973 + %t979 = load { ptr, i64, i64 }, ptr %a877 + store { ptr, i64, i64 } %t978, ptr %a981 + store { ptr, i64, i64 } %t979, ptr %a982 + call void @finch_str_concat(ptr %a980, ptr %a981, ptr %a982) + store { ptr, i64, i64 } %t978, ptr %a983 + call void @finch_str_drop(ptr %a983) + %t984 = load { ptr, i64, i64 }, ptr %a980 + store { ptr, i64, i64 } %t984, ptr %a986 + store { ptr, i64, i64 } { ptr @.str.4904, i64 1, i64 0 }, ptr %a987 + call void @finch_str_concat(ptr %a985, ptr %a986, ptr %a987) + store { ptr, i64, i64 } %t984, ptr %a988 + call void @finch_str_drop(ptr %a988) + %t989 = load { ptr, i64, i64 }, ptr %a985 + %t990 = load i64, ptr %t935 + %t991 = add i64 %t990, 1 + call void @finch_arr_reserve(ptr %t934, i64 %t991, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t992 = load ptr, ptr %t934 + %t993 = getelementptr inbounds { ptr, i64, i64 }, ptr %t992, i64 %t990 + store { ptr, i64, i64 } %t989, ptr %t993 + store i64 %t991, ptr %t935 + br label %endif7667 +endif7667: + br label %endif7662 +endif7662: + store { ptr, i64, i64 } { ptr @.str.4905, i64 0, i64 0 }, ptr %a994 + %t995 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 4 + %t996 = load i1, ptr %t995 + br i1 %t996, label %then7670, label %endif7672 +then7670: + %t997 = getelementptr inbounds { ptr, i64, i64 }, ptr %a262, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.4907, i64 2, i64 0 }, ptr %a998 + call void @finch_str_join(ptr %a999, ptr %a262, ptr %a998) + %t1000 = load { ptr, i64, i64 }, ptr %a999 + store { ptr, i64, i64 } { ptr @.str.4906, i64 2, i64 0 }, ptr %a1002 + store { ptr, i64, i64 } %t1000, ptr %a1003 + call void @finch_str_concat(ptr %a1001, ptr %a1002, ptr %a1003) + store { ptr, i64, i64 } %t1000, ptr %a1004 + call void @finch_str_drop(ptr %a1004) + %t1005 = load { ptr, i64, i64 }, ptr %a1001 + %t1006 = load { ptr, i64, i64 }, ptr %a877 + store { ptr, i64, i64 } %t1005, ptr %a1008 + store { ptr, i64, i64 } %t1006, ptr %a1009 + call void @finch_str_concat(ptr %a1007, ptr %a1008, ptr %a1009) + store { ptr, i64, i64 } %t1005, ptr %a1010 + call void @finch_str_drop(ptr %a1010) + %t1011 = load { ptr, i64, i64 }, ptr %a1007 + store { ptr, i64, i64 } %t1011, ptr %a1013 + store { ptr, i64, i64 } { ptr @.str.4908, i64 1, i64 0 }, ptr %a1014 + call void @finch_str_concat(ptr %a1012, ptr %a1013, ptr %a1014) + store { ptr, i64, i64 } %t1011, ptr %a1015 + call void @finch_str_drop(ptr %a1015) + %t1016 = load { ptr, i64, i64 }, ptr %a1012 + %t1017 = load { ptr, i64, i64 }, ptr %a994 + store { ptr, i64, i64 } %t1016, ptr %a994 + store { ptr, i64, i64 } %t1017, ptr %a1018 + call void @finch_str_drop(ptr %a1018) + br label %endif7672 +endif7672: + %t1019 = load { ptr, i64, i64 }, ptr %a864 + store { ptr, i64, i64 } { ptr @.str.4909, i64 4, i64 0 }, 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.4910, i64 1, i64 0 }, ptr %a1026 + call void @finch_str_concat(ptr %a1024, ptr %a1025, ptr %a1026) + store { ptr, i64, i64 } %t1023, ptr %a1027 + call void @finch_str_drop(ptr %a1027) + %t1028 = load { ptr, i64, i64 }, ptr %a1024 + %t1029 = load { ptr, i64, i64 }, ptr %a863 + store { ptr, i64, i64 } %t1028, ptr %a1031 + store { ptr, i64, i64 } %t1029, ptr %a1032 + call void @finch_str_concat(ptr %a1030, ptr %a1031, ptr %a1032) + store { ptr, i64, i64 } %t1028, ptr %a1033 + call void @finch_str_drop(ptr %a1033) + %t1034 = load { ptr, i64, i64 }, ptr %a1030 + %t1035 = load { ptr, i64, i64 }, ptr %a994 + store { ptr, i64, i64 } %t1034, ptr %a1037 + store { ptr, i64, i64 } %t1035, ptr %a1038 + call void @finch_str_concat(ptr %a1036, ptr %a1037, ptr %a1038) + store { ptr, i64, i64 } %t1034, ptr %a1039 + call void @finch_str_drop(ptr %a1039) + %t1040 = load { ptr, i64, i64 }, ptr %a1036 + store { ptr, i64, i64 } %t1040, ptr %a1042 + store { ptr, i64, i64 } { ptr @.str.4911, i64 2, i64 0 }, ptr %a1043 + call void @finch_str_concat(ptr %a1041, ptr %a1042, ptr %a1043) + store { ptr, i64, i64 } %t1040, ptr %a1044 + call void @finch_str_drop(ptr %a1044) + %t1045 = load { ptr, i64, i64 }, ptr %a1041 + %t1046 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 + %t1047 = load { ptr, i64, i64 }, ptr %t1046 + store { ptr, i64, i64 } %t1045, ptr %a1049 + store { ptr, i64, i64 } %t1047, ptr %a1050 + call void @finch_str_concat(ptr %a1048, ptr %a1049, ptr %a1050) + store { ptr, i64, i64 } %t1045, ptr %a1051 + call void @finch_str_drop(ptr %a1051) + %t1052 = load { ptr, i64, i64 }, ptr %a1048 + store { ptr, i64, i64 } %t1052, ptr %a1054 + store { ptr, i64, i64 } { ptr @.str.4912, i64 1, i64 0 }, ptr %a1055 + call void @finch_str_concat(ptr %a1053, ptr %a1054, ptr %a1055) + store { ptr, i64, i64 } %t1052, ptr %a1056 + call void @finch_str_drop(ptr %a1056) + %t1057 = load { ptr, i64, i64 }, ptr %a1053 + %t1058 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.4913, i64 2, i64 0 }, ptr %a1059 + call void @finch_str_join(ptr %a1060, ptr %a263, ptr %a1059) + %t1061 = load { ptr, i64, i64 }, ptr %a1060 + store { ptr, i64, i64 } %t1057, ptr %a1063 + store { ptr, i64, i64 } %t1061, ptr %a1064 + call void @finch_str_concat(ptr %a1062, ptr %a1063, ptr %a1064) + store { ptr, i64, i64 } %t1057, ptr %a1065 + call void @finch_str_drop(ptr %a1065) + store { ptr, i64, i64 } %t1061, ptr %a1066 + call void @finch_str_drop(ptr %a1066) + %t1067 = load { ptr, i64, i64 }, ptr %a1062 + store { ptr, i64, i64 } %t1067, ptr %a1069 + store { ptr, i64, i64 } { ptr @.str.4914, i64 1, i64 0 }, ptr %a1070 + call void @finch_str_concat(ptr %a1068, ptr %a1069, ptr %a1070) + store { ptr, i64, i64 } %t1067, ptr %a1071 + call void @finch_str_drop(ptr %a1071) + %t1072 = load { ptr, i64, i64 }, ptr %a1068 + store { ptr, i64, i64 } %t1072, ptr %a1073 + %t1074 = getelementptr inbounds %S.ast.Type, ptr %a219, i32 0, i32 0 + %t1075 = load { ptr, i64, i64 }, ptr %t1074 + store { ptr, i64, i64 } %t1075, ptr %a1076 + store { ptr, i64, i64 } { ptr @.str.4915, i64 4, i64 0 }, ptr %a1077 + %t1078 = call i32 @finch_str_eq(ptr %a1076, ptr %a1077) + %t1079 = icmp ne i32 %t1078, 0 + br i1 %t1079, label %then7673, label %endif7675 +then7673: + %t1080 = load ptr, ptr %a1 + %t1081 = load { ptr, i64, i64 }, ptr %a1073 + call void @finch.gen.emit(ptr %t1080, { ptr, i64, i64 } %t1081) + %t1082 = load ptr, ptr %a1 + %t1083 = load { ptr, i64, i64 }, ptr %a317 + %t1084 = load i64, ptr %a323 + call void @finch.gen.releaseAll(ptr %t1082, { ptr, i64, i64 } %t1083, i64 %t1084) + %t1085 = load %S.ast.Type, ptr %a219 + store %S.ast.Type %t1085, ptr %a1086 + call void @finch.copy.S_ast_Type(ptr %a1087, ptr %a1086) + %t1088 = load %S.ast.Type, ptr %a1087 + %t1089 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t1088, 1 + call void @finch_str_drop(ptr %a1073) + call void @finch_str_drop(ptr %a994) + call void @finch_str_drop(ptr %a877) + call void @finch_str_drop(ptr %a864) + call void @finch_str_drop(ptr %a863) + call void @finch.drop.arr_S_gen_Val(ptr %a317) + call void @finch_str_drop(ptr %a264) + call void @finch.drop.arr_str(ptr %a263) + call void @finch.drop.arr_str(ptr %a262) + call void @finch.drop.S_gen_Plan(ptr %a261) + call void @finch.drop.arr_S_ast_Type(ptr %a225) + call void @finch.drop.S_ast_Type(ptr %a219) + ret %S.gen.Val %t1089 +endif7675: + %t1090 = getelementptr inbounds %S.gen.Plan, ptr %a261, i32 0, i32 3 + %t1091 = load i1, ptr %t1090 + br i1 %t1091, label %then7676, label %endif7678 +then7676: + %t1092 = load ptr, ptr %a1 + %t1093 = load { ptr, i64, i64 }, ptr %a1073 + call void @finch.gen.emit(ptr %t1092, { ptr, i64, i64 } %t1093) + %t1094 = load ptr, ptr %a1 + %t1095 = load { ptr, i64, i64 }, ptr %a317 + %t1096 = load i64, ptr %a323 + call void @finch.gen.releaseAll(ptr %t1094, { ptr, i64, i64 } %t1095, i64 %t1096) + %t1097 = load ptr, ptr %a1 + %t1098 = load ptr, ptr %a1 + %t1099 = load %S.ast.Type, ptr %a219 + %t1100 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t1098, %S.ast.Type %t1099) + %t1101 = load { ptr, i64, i64 }, ptr %a264 + %t1102 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1097, { ptr, i64, i64 } %t1100, { ptr, i64, i64 } %t1101) + store { ptr, i64, i64 } %t1100, ptr %a1103 + call void @finch_str_drop(ptr %a1103) + %t1104 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1102, 0 + %t1105 = load %S.ast.Type, ptr %a219 + store %S.ast.Type %t1105, ptr %a1106 + call void @finch.copy.S_ast_Type(ptr %a1107, ptr %a1106) + %t1108 = load %S.ast.Type, ptr %a1107 + %t1109 = insertvalue %S.gen.Val %t1104, %S.ast.Type %t1108, 1 + call void @finch_str_drop(ptr %a1073) + call void @finch_str_drop(ptr %a994) + call void @finch_str_drop(ptr %a877) + call void @finch_str_drop(ptr %a864) + call void @finch_str_drop(ptr %a863) + call void @finch.drop.arr_S_gen_Val(ptr %a317) + call void @finch_str_drop(ptr %a264) + call void @finch.drop.arr_str(ptr %a263) + call void @finch.drop.arr_str(ptr %a262) + call void @finch.drop.S_gen_Plan(ptr %a261) + call void @finch.drop.arr_S_ast_Type(ptr %a225) + call void @finch.drop.S_ast_Type(ptr %a219) + ret %S.gen.Val %t1109 +endif7678: + %t1110 = load ptr, ptr %a1 + %t1111 = load { ptr, i64, i64 }, ptr %a1073 + %t1112 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1110, { ptr, i64, i64 } %t1111) + store { ptr, i64, i64 } %t1112, ptr %a1113 + %t1114 = load ptr, ptr %a1 + %t1115 = load { ptr, i64, i64 }, ptr %a317 + %t1116 = load i64, ptr %a323 + call void @finch.gen.releaseAll(ptr %t1114, { ptr, i64, i64 } %t1115, i64 %t1116) + %t1117 = getelementptr inbounds %S.gen.Plan, ptr %a261, i32 0, i32 0 + %t1118 = getelementptr inbounds %S.gen.Abi, ptr %t1117, i32 0, i32 0 + %t1119 = load { ptr, i64, i64 }, ptr %t1118 + store { ptr, i64, i64 } %t1119, ptr %a1120 + store { ptr, i64, i64 } { ptr @.str.4916, i64 6, i64 0 }, ptr %a1121 + %t1122 = call i32 @finch_str_eq(ptr %a1120, ptr %a1121) + %t1123 = icmp ne i32 %t1122, 0 + br i1 %t1123, label %then7679, label %endif7681 +then7679: + %t1124 = load ptr, ptr %a1 + %t1125 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t1124, { ptr, i64, i64 } { ptr @.str.4917, i64 9, i64 0 }) + store { ptr, i64, i64 } %t1125, ptr %a1126 + %t1127 = load ptr, ptr %a1 + %t1128 = getelementptr inbounds %S.gen.Plan, ptr %a261, i32 0, i32 0 + %t1129 = getelementptr inbounds %S.gen.Abi, ptr %t1128, i32 0, i32 2 + %t1130 = load { ptr, i64, i64 }, ptr %t1129 + %t1131 = load { ptr, i64, i64 }, ptr %a1113 + %t1132 = load { ptr, i64, i64 }, ptr %a1126 + call void @finch.gen.store(ptr %t1127, { ptr, i64, i64 } %t1130, { ptr, i64, i64 } %t1131, { ptr, i64, i64 } %t1132) + %t1133 = load ptr, ptr %a1 + %t1134 = load ptr, ptr %a1 + %t1135 = load %S.ast.Type, ptr %a219 + %t1136 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t1134, %S.ast.Type %t1135) + %t1137 = load { ptr, i64, i64 }, ptr %a1126 + %t1138 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1133, { ptr, i64, i64 } %t1136, { ptr, i64, i64 } %t1137) + store { ptr, i64, i64 } %t1136, ptr %a1139 + call void @finch_str_drop(ptr %a1139) + %t1140 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1138, 0 + %t1141 = load %S.ast.Type, ptr %a219 + store %S.ast.Type %t1141, ptr %a1142 + call void @finch.copy.S_ast_Type(ptr %a1143, ptr %a1142) + %t1144 = load %S.ast.Type, ptr %a1143 + %t1145 = insertvalue %S.gen.Val %t1140, %S.ast.Type %t1144, 1 + call void @finch_str_drop(ptr %a1126) + call void @finch_str_drop(ptr %a1113) + call void @finch_str_drop(ptr %a1073) + call void @finch_str_drop(ptr %a994) + call void @finch_str_drop(ptr %a877) + call void @finch_str_drop(ptr %a864) + call void @finch_str_drop(ptr %a863) + call void @finch.drop.arr_S_gen_Val(ptr %a317) + call void @finch_str_drop(ptr %a264) + call void @finch.drop.arr_str(ptr %a263) + call void @finch.drop.arr_str(ptr %a262) + call void @finch.drop.S_gen_Plan(ptr %a261) + call void @finch.drop.arr_S_ast_Type(ptr %a225) + call void @finch.drop.S_ast_Type(ptr %a219) + ret %S.gen.Val %t1145 +endif7681: + %t1146 = getelementptr inbounds %S.ast.Type, ptr %a219, i32 0, i32 0 + %t1147 = load { ptr, i64, i64 }, ptr %t1146 + store { ptr, i64, i64 } %t1147, ptr %a1148 + store { ptr, i64, i64 } { ptr @.str.4918, i64 3, i64 0 }, ptr %a1149 + %t1150 = call i32 @finch_str_eq(ptr %a1148, ptr %a1149) + %t1151 = icmp ne i32 %t1150, 0 + br i1 %t1151, label %then7682, label %endif7684 +then7682: + %t1152 = load ptr, ptr %a1 + %t1153 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t1152) + store { ptr, i64, i64 } %t1153, ptr %a1154 + %t1155 = load ptr, ptr %a1 + %t1156 = load { ptr, i64, i64 }, ptr %a1154 + call void @finch.gen.store(ptr %t1155, { ptr, i64, i64 } { ptr @.str.4919, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4920, i64 15, i64 0 }, { ptr, i64, i64 } %t1156) + %t1157 = load ptr, ptr %a1 + %t1158 = load { ptr, i64, i64 }, ptr %a1154 + store { ptr, i64, i64 } { ptr @.str.4921, i64 32, i64 0 }, ptr %a1160 + store { ptr, i64, i64 } %t1158, ptr %a1161 + call void @finch_str_concat(ptr %a1159, ptr %a1160, ptr %a1161) + %t1162 = load { ptr, i64, i64 }, ptr %a1159 + store { ptr, i64, i64 } %t1162, ptr %a1164 + store { ptr, i64, i64 } { ptr @.str.4922, i64 6, i64 0 }, ptr %a1165 + call void @finch_str_concat(ptr %a1163, ptr %a1164, ptr %a1165) + store { ptr, i64, i64 } %t1162, ptr %a1166 + call void @finch_str_drop(ptr %a1166) + %t1167 = load { ptr, i64, i64 }, ptr %a1163 + %t1168 = load { ptr, i64, i64 }, ptr %a1113 + store { ptr, i64, i64 } %t1167, ptr %a1170 + store { ptr, i64, i64 } %t1168, ptr %a1171 + call void @finch_str_concat(ptr %a1169, ptr %a1170, ptr %a1171) + store { ptr, i64, i64 } %t1167, ptr %a1172 + call void @finch_str_drop(ptr %a1172) + %t1173 = load { ptr, i64, i64 }, ptr %a1169 + store { ptr, i64, i64 } %t1173, ptr %a1175 + store { ptr, i64, i64 } { ptr @.str.4923, i64 1, i64 0 }, ptr %a1176 + call void @finch_str_concat(ptr %a1174, ptr %a1175, ptr %a1176) + store { ptr, i64, i64 } %t1173, ptr %a1177 + call void @finch_str_drop(ptr %a1177) + %t1178 = load { ptr, i64, i64 }, ptr %a1174 + call void @finch.gen.emit(ptr %t1157, { ptr, i64, i64 } %t1178) + store { ptr, i64, i64 } %t1178, ptr %a1179 + call void @finch_str_drop(ptr %a1179) + %t1180 = load ptr, ptr %a1 + %t1181 = load { ptr, i64, i64 }, ptr %a1154 + %t1182 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1180, { ptr, i64, i64 } { ptr @.str.4924, i64 17, i64 0 }, { ptr, i64, i64 } %t1181) + %t1183 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1182, 0 + %t1184 = load %S.ast.Type, ptr %a219 + store %S.ast.Type %t1184, ptr %a1185 + call void @finch.copy.S_ast_Type(ptr %a1186, ptr %a1185) + %t1187 = load %S.ast.Type, ptr %a1186 + %t1188 = insertvalue %S.gen.Val %t1183, %S.ast.Type %t1187, 1 + call void @finch_str_drop(ptr %a1154) + call void @finch_str_drop(ptr %a1113) + call void @finch_str_drop(ptr %a1073) + call void @finch_str_drop(ptr %a994) + call void @finch_str_drop(ptr %a877) + call void @finch_str_drop(ptr %a864) + call void @finch_str_drop(ptr %a863) + call void @finch.drop.arr_S_gen_Val(ptr %a317) + call void @finch_str_drop(ptr %a264) + call void @finch.drop.arr_str(ptr %a263) + call void @finch.drop.arr_str(ptr %a262) + call void @finch.drop.S_gen_Plan(ptr %a261) + call void @finch.drop.arr_S_ast_Type(ptr %a225) + call void @finch.drop.S_ast_Type(ptr %a219) + ret %S.gen.Val %t1188 +endif7684: + %t1189 = load { ptr, i64, i64 }, ptr %a1113 + store { ptr, i64, i64 } %t1189, ptr %a1190 + call void @finch_str_copy(ptr %a1191, ptr %a1190) + %t1192 = load { ptr, i64, i64 }, ptr %a1191 + %t1193 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1192, 0 + %t1194 = load %S.ast.Type, ptr %a219 + store %S.ast.Type %t1194, ptr %a1195 + call void @finch.copy.S_ast_Type(ptr %a1196, ptr %a1195) + %t1197 = load %S.ast.Type, ptr %a1196 + %t1198 = insertvalue %S.gen.Val %t1193, %S.ast.Type %t1197, 1 + call void @finch_str_drop(ptr %a1113) + call void @finch_str_drop(ptr %a1073) + call void @finch_str_drop(ptr %a994) + call void @finch_str_drop(ptr %a877) + call void @finch_str_drop(ptr %a864) + call void @finch_str_drop(ptr %a863) + call void @finch.drop.arr_S_gen_Val(ptr %a317) + call void @finch_str_drop(ptr %a264) + call void @finch.drop.arr_str(ptr %a263) + call void @finch.drop.arr_str(ptr %a262) + call void @finch.drop.S_gen_Plan(ptr %a261) + call void @finch.drop.arr_S_ast_Type(ptr %a225) + call void @finch.drop.S_ast_Type(ptr %a219) + ret %S.gen.Val %t1198 +} + +define internal void @finch.gen.releaseAll(ptr %p0, { ptr, i64, i64 } %p1, i64 %p2) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca i64, align 16 + %a4 = alloca i64, align 16 + %a12 = alloca %S.gen.Val, align 16 + store ptr %p0, ptr %a1 + store { ptr, i64, i64 } %p1, ptr %a2 + store i64 %p2, ptr %a3 + store i64 0, ptr %a4 + br label %each.cond7685 +each.cond7685: + %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t6 = load i64, ptr %t5 + %t7 = load i64, ptr %a4 + %t8 = icmp slt i64 %t7, %t6 + br i1 %t8, label %each.body7686, label %each.end7688 +each.body7686: + %t9 = load ptr, ptr %a2 + %t10 = getelementptr inbounds %S.gen.Val, ptr %t9, i64 %t7 + %t11 = load %S.gen.Val, ptr %t10 + store %S.gen.Val %t11, ptr %a12 + %t13 = load ptr, ptr %a1 + %t14 = load %S.gen.Val, ptr %a12 + call void @finch.gen.release(ptr %t13, %S.gen.Val %t14) + br label %each.step7687 +each.step7687: + %t15 = load i64, ptr %a4 + %t16 = add i64 %t15, 1 + store i64 %t16, ptr %a4 + br label %each.cond7685 +each.end7688: + %t17 = load ptr, ptr %a1 + %t18 = load i64, ptr %a3 + call void @finch.gen.heldEnd(ptr %t17, i64 %t18) + ret void } define internal i1 @finch.gen.runtimeDeclares({ ptr, i64, i64 } %p0) { @@ -65854,15 +77999,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.4754, i64 6, i64 0 }, ptr %t4 + store { ptr, i64, i64 } { ptr @.str.4925, i64 6, i64 0 }, ptr %t4 %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 - store { ptr, i64, i64 } { ptr @.str.4755, i64 6, i64 0 }, ptr %t5 + store { ptr, i64, i64 } { ptr @.str.4926, i64 6, i64 0 }, ptr %t5 %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2 - store { ptr, i64, i64 } { ptr @.str.4756, i64 4, i64 0 }, ptr %t6 + store { ptr, i64, i64 } { ptr @.str.4927, i64 4, i64 0 }, ptr %t6 %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 3 - store { ptr, i64, i64 } { ptr @.str.4757, i64 4, i64 0 }, ptr %t7 + store { ptr, i64, i64 } { ptr @.str.4928, i64 4, i64 0 }, ptr %t7 %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4 - store { ptr, i64, i64 } { ptr @.str.4758, i64 5, i64 0 }, ptr %t8 + store { ptr, i64, i64 } { ptr @.str.4929, 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 @@ -65873,29 +78018,30 @@ entry: %t16 = load i64, ptr %t13 %t17 = load ptr, ptr %a12 store i64 0, ptr %a18 - br label %find.cond7312 -find.cond7312: + br label %find.cond7689 +find.cond7689: %t19 = load i64, ptr %a18 %t20 = icmp slt i64 %t19, %t16 - br i1 %t20, label %find.body7313, label %find.end7316 -find.body7313: + br i1 %t20, label %find.body7690, label %find.end7693 +find.body7690: %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.hit7314, label %find.next7315 -find.hit7314: + br i1 %t26, label %find.hit7691, label %find.next7692 +find.hit7691: store i64 %t19, ptr %a15 - br label %find.end7316 -find.next7315: + br label %find.end7693 +find.next7692: %t27 = add i64 %t19, 1 store i64 %t27, ptr %a18 - br label %find.cond7312 -find.end7316: + br label %find.cond7689 +find.end7693: %t28 = load i64, ptr %a15 %t29 = icmp sge i64 %t28, 0 + call void @finch.drop.arr_str(ptr %a12) ret i1 %t29 } @@ -65915,55 +78061,56 @@ entry: %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 store { ptr, i64, i64 } %p0, ptr %a1 %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.4759, i64 6, i64 0 }, ptr %t4 + store { ptr, i64, i64 } { ptr @.str.4930, i64 6, i64 0 }, ptr %t4 %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 - store { ptr, i64, i64 } { ptr @.str.4760, i64 4, i64 0 }, ptr %t5 + store { ptr, i64, i64 } { ptr @.str.4931, i64 4, i64 0 }, ptr %t5 %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2 - store { ptr, i64, i64 } { ptr @.str.4761, i64 7, i64 0 }, ptr %t6 + store { ptr, i64, i64 } { ptr @.str.4932, i64 7, i64 0 }, ptr %t6 %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 3 - store { ptr, i64, i64 } { ptr @.str.4762, i64 5, i64 0 }, ptr %t7 + store { ptr, i64, i64 } { ptr @.str.4933, i64 5, i64 0 }, ptr %t7 %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4 - store { ptr, i64, i64 } { ptr @.str.4763, i64 5, i64 0 }, ptr %t8 + store { ptr, i64, i64 } { ptr @.str.4934, i64 5, i64 0 }, ptr %t8 %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 5 - store { ptr, i64, i64 } { ptr @.str.4764, i64 7, i64 0 }, ptr %t9 + store { ptr, i64, i64 } { ptr @.str.4935, i64 7, i64 0 }, ptr %t9 %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 6 - store { ptr, i64, i64 } { ptr @.str.4765, i64 4, i64 0 }, ptr %t10 + store { ptr, i64, i64 } { ptr @.str.4936, i64 4, i64 0 }, ptr %t10 %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 7 - store { ptr, i64, i64 } { ptr @.str.4766, i64 3, i64 0 }, ptr %t11 + store { ptr, i64, i64 } { ptr @.str.4937, i64 3, i64 0 }, ptr %t11 %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 8 - store { ptr, i64, i64 } { ptr @.str.4767, i64 3, i64 0 }, ptr %t12 + store { ptr, i64, i64 } { ptr @.str.4938, i64 3, i64 0 }, ptr %t12 %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 9 - store { ptr, i64, i64 } { ptr @.str.4768, i64 3, i64 0 }, ptr %t13 + store { ptr, i64, i64 } { ptr @.str.4939, i64 3, i64 0 }, ptr %t13 %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 10 - store { ptr, i64, i64 } { ptr @.str.4769, i64 5, i64 0 }, ptr %t14 + store { ptr, i64, i64 } { ptr @.str.4940, i64 5, i64 0 }, ptr %t14 %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 11 - store { ptr, i64, i64 } { ptr @.str.4770, i64 4, i64 0 }, ptr %t15 + store { ptr, i64, i64 } { ptr @.str.4941, i64 4, i64 0 }, ptr %t15 %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 12 - store { ptr, i64, i64 } { ptr @.str.4771, i64 6, i64 0 }, ptr %t16 + store { ptr, i64, i64 } { ptr @.str.4942, i64 6, i64 0 }, ptr %t16 %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 13 - store { ptr, i64, i64 } { ptr @.str.4772, i64 4, i64 0 }, ptr %t17 + store { ptr, i64, i64 } { ptr @.str.4943, i64 4, i64 0 }, ptr %t17 %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 14 - store { ptr, i64, i64 } { ptr @.str.4773, i64 5, i64 0 }, ptr %t18 + store { ptr, i64, i64 } { ptr @.str.4944, i64 5, i64 0 }, ptr %t18 %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 15 - store { ptr, i64, i64 } { ptr @.str.4774, i64 3, i64 0 }, ptr %t19 + store { ptr, i64, i64 } { ptr @.str.4945, i64 3, i64 0 }, ptr %t19 %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 16 - store { ptr, i64, i64 } { ptr @.str.4775, i64 4, i64 0 }, ptr %t20 + store { ptr, i64, i64 } { ptr @.str.4946, i64 4, i64 0 }, ptr %t20 %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 17 - store { ptr, i64, i64 } { ptr @.str.4776, i64 6, i64 0 }, ptr %t21 + store { ptr, i64, i64 } { ptr @.str.4947, i64 6, i64 0 }, ptr %t21 %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 18 - store { ptr, i64, i64 } { ptr @.str.4777, i64 6, i64 0 }, ptr %t22 + store { ptr, i64, i64 } { ptr @.str.4948, i64 6, i64 0 }, ptr %t22 %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 19 - store { ptr, i64, i64 } { ptr @.str.4778, i64 6, i64 0 }, ptr %t23 + store { ptr, i64, i64 } { ptr @.str.4949, i64 6, i64 0 }, ptr %t23 %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 20 - store { ptr, i64, i64 } { ptr @.str.4779, i64 4, i64 0 }, ptr %t24 + store { ptr, i64, i64 } { ptr @.str.4950, i64 4, i64 0 }, ptr %t24 %t25 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 21 - store { ptr, i64, i64 } { ptr @.str.4780, i64 5, i64 0 }, ptr %t25 + store { ptr, i64, i64 } { ptr @.str.4951, i64 5, i64 0 }, ptr %t25 %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 22 - store { ptr, i64, i64 } { ptr @.str.4781, i64 6, i64 0 }, ptr %t26 + store { ptr, i64, i64 } { ptr @.str.4952, 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 @@ -65971,51 +78118,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.4782, i64 7, i64 0 }, ptr %t33 + store { ptr, i64, i64 } { ptr @.str.4953, i64 7, i64 0 }, ptr %t33 %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 1 - store { ptr, i64, i64 } { ptr @.str.4783, i64 7, i64 0 }, ptr %t34 + store { ptr, i64, i64 } { ptr @.str.4954, i64 7, i64 0 }, ptr %t34 %t35 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 2 - store { ptr, i64, i64 } { ptr @.str.4784, i64 7, i64 0 }, ptr %t35 + store { ptr, i64, i64 } { ptr @.str.4955, i64 7, i64 0 }, ptr %t35 %t36 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 3 - store { ptr, i64, i64 } { ptr @.str.4785, i64 7, i64 0 }, ptr %t36 + store { ptr, i64, i64 } { ptr @.str.4956, i64 7, i64 0 }, ptr %t36 %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 4 - store { ptr, i64, i64 } { ptr @.str.4786, i64 7, i64 0 }, ptr %t37 + store { ptr, i64, i64 } { ptr @.str.4957, i64 7, i64 0 }, ptr %t37 %t38 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 5 - store { ptr, i64, i64 } { ptr @.str.4787, i64 7, i64 0 }, ptr %t38 + store { ptr, i64, i64 } { ptr @.str.4958, i64 7, i64 0 }, ptr %t38 %t39 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 6 - store { ptr, i64, i64 } { ptr @.str.4788, i64 6, i64 0 }, ptr %t39 + store { ptr, i64, i64 } { ptr @.str.4959, i64 6, i64 0 }, ptr %t39 %t40 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 7 - store { ptr, i64, i64 } { ptr @.str.4789, i64 6, i64 0 }, ptr %t40 + store { ptr, i64, i64 } { ptr @.str.4960, i64 6, i64 0 }, ptr %t40 %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 8 - store { ptr, i64, i64 } { ptr @.str.4790, i64 6, i64 0 }, ptr %t41 + store { ptr, i64, i64 } { ptr @.str.4961, i64 6, i64 0 }, ptr %t41 %t42 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 9 - store { ptr, i64, i64 } { ptr @.str.4791, i64 6, i64 0 }, ptr %t42 + store { ptr, i64, i64 } { ptr @.str.4962, i64 6, i64 0 }, ptr %t42 %t43 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 10 - store { ptr, i64, i64 } { ptr @.str.4792, i64 6, i64 0 }, ptr %t43 + store { ptr, i64, i64 } { ptr @.str.4963, i64 6, i64 0 }, ptr %t43 %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 11 - store { ptr, i64, i64 } { ptr @.str.4793, i64 6, i64 0 }, ptr %t44 + store { ptr, i64, i64 } { ptr @.str.4964, i64 6, i64 0 }, ptr %t44 %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 12 - store { ptr, i64, i64 } { ptr @.str.4794, i64 8, i64 0 }, ptr %t45 + store { ptr, i64, i64 } { ptr @.str.4965, i64 8, i64 0 }, ptr %t45 %t46 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 13 - store { ptr, i64, i64 } { ptr @.str.4795, i64 8, i64 0 }, ptr %t46 + store { ptr, i64, i64 } { ptr @.str.4966, i64 8, i64 0 }, ptr %t46 %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 14 - store { ptr, i64, i64 } { ptr @.str.4796, i64 8, i64 0 }, ptr %t47 + store { ptr, i64, i64 } { ptr @.str.4967, i64 8, i64 0 }, ptr %t47 %t48 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 15 - store { ptr, i64, i64 } { ptr @.str.4797, i64 8, i64 0 }, ptr %t48 + store { ptr, i64, i64 } { ptr @.str.4968, i64 8, i64 0 }, ptr %t48 %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 16 - store { ptr, i64, i64 } { ptr @.str.4798, i64 8, i64 0 }, ptr %t49 + store { ptr, i64, i64 } { ptr @.str.4969, i64 8, i64 0 }, ptr %t49 %t50 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 17 - store { ptr, i64, i64 } { ptr @.str.4799, i64 8, i64 0 }, ptr %t50 + store { ptr, i64, i64 } { ptr @.str.4970, i64 8, i64 0 }, ptr %t50 %t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 18 - store { ptr, i64, i64 } { ptr @.str.4800, i64 8, i64 0 }, ptr %t51 + store { ptr, i64, i64 } { ptr @.str.4971, i64 8, i64 0 }, ptr %t51 %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 19 - store { ptr, i64, i64 } { ptr @.str.4801, i64 8, i64 0 }, ptr %t52 + store { ptr, i64, i64 } { ptr @.str.4972, i64 8, i64 0 }, ptr %t52 %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 20 - store { ptr, i64, i64 } { ptr @.str.4802, i64 6, i64 0 }, ptr %t53 + store { ptr, i64, i64 } { ptr @.str.4973, i64 6, i64 0 }, ptr %t53 %t54 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 21 - store { ptr, i64, i64 } { ptr @.str.4803, i64 8, i64 0 }, ptr %t54 + store { ptr, i64, i64 } { ptr @.str.4974, i64 8, i64 0 }, ptr %t54 %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 22 - store { ptr, i64, i64 } { ptr @.str.4804, i64 8, i64 0 }, ptr %t55 + store { ptr, i64, i64 } { ptr @.str.4975, 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 @@ -66026,56 +78173,98 @@ entry: %t63 = load i64, ptr %t60 %t64 = load ptr, ptr %a30 store i64 0, ptr %a65 - br label %find.cond7317 -find.cond7317: + br label %find.cond7694 +find.cond7694: %t66 = load i64, ptr %a65 %t67 = icmp slt i64 %t66, %t63 - br i1 %t67, label %find.body7318, label %find.end7321 -find.body7318: + br i1 %t67, label %find.body7695, label %find.end7698 +find.body7695: %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.hit7319, label %find.next7320 -find.hit7319: + br i1 %t73, label %find.hit7696, label %find.next7697 +find.hit7696: store i64 %t66, ptr %a62 - br label %find.end7321 -find.next7320: + br label %find.end7698 +find.next7697: %t74 = add i64 %t66, 1 store i64 %t74, ptr %a65 - br label %find.cond7317 -find.end7321: + br label %find.cond7694 +find.end7698: %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 %then7322, label %endif7324 -then7322: - ret { ptr, i64, i64 } { ptr @.str.4805, i64 0, i64 0 } -endif7324: + br i1 %t78, label %then7699, label %endif7701 +then7699: + call void @finch.drop.arr_str(ptr %a59) + call void @finch.drop.arr_str(ptr %a30) + ret { ptr, i64, i64 } { ptr @.str.4976, i64 0, i64 0 } +endif7701: %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 %range7325, label %inrange7326 -range7325: - call void @finch_panic_index(ptr @.str.4807, i64 4299, i64 %t79, i64 %t81) + br i1 %t82, label %range7702, label %inrange7703 +range7702: + call void @finch_panic_index(ptr @.str.4978, i64 4603, i64 %t79, i64 %t81) unreachable -inrange7326: +inrange7703: %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.4806, i64 28, i64 0 }, ptr %a87 + store { ptr, i64, i64 } { ptr @.str.4977, 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.4808, i64 14, i64 0 }, ptr %a92 + store { ptr, i64, i64 } { ptr @.str.4979, 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 + store { ptr, i64, i64 } %t89, ptr %a93 + call void @finch_str_drop(ptr %a93) + %t94 = load { ptr, i64, i64 }, ptr %a90 + call void @finch.drop.arr_str(ptr %a59) + call void @finch.drop.arr_str(ptr %a30) + ret { ptr, i64, i64 } %t94 +} + +define internal void @finch.drop.S_docs_Doc(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.docs.Doc, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.docs.Doc, ptr %a, i32 0, i32 1 + call void @finch_str_drop(ptr %t2) + %t3 = getelementptr inbounds %S.docs.Doc, ptr %a, i32 0, i32 2 + call void @finch_str_drop(ptr %t3) + ret void +} + +define internal void @finch.drop.arr_S_docs_Doc(ptr %a) { +entry: + %a4 = alloca i64, align 16 + %t1 = load ptr, ptr %a + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 + %t3 = load i64, ptr %t2 + store i64 0, ptr %a4 + br label %n.cond7713 +n.cond7713: + %t5 = load i64, ptr %a4 + %t6 = icmp slt i64 %t5, %t3 + br i1 %t6, label %n.body7714, label %n.end7715 +n.body7714: + %t7 = getelementptr inbounds %S.docs.Doc, ptr %t1, i64 %t5 + call void @finch.drop.S_docs_Doc(ptr %t7) + %t8 = load i64, ptr %a4 + %t9 = add i64 %t8, 1 + store i64 %t9, ptr %a4 + br label %n.cond7713 +n.end7715: + call void @finch_arr_free(ptr %a) + ret void } define internal %S.gen.Val @finch.gen.call(ptr %p0, %S.ast.Node %p1) { @@ -66085,485 +78274,652 @@ entry: %a5 = alloca { ptr, i64, i64 }, align 16 %a6 = alloca { ptr, i64, i64 }, align 16 %a8 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca %S.docs.Doc, align 16 + %a19 = alloca { ptr, i64, i64 }, align 16 + %a20 = 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 - %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 - %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 - %a192 = alloca %S.gen.Val, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 + %a35 = alloca { ptr, i64, i64 }, align 16 + %a36 = alloca { ptr, i64, i64 }, align 16 + %a42 = alloca { ptr, i64, i64 }, align 16 + %a43 = alloca { ptr, i64, i64 }, align 16 + %a49 = alloca i64, align 16 + %a62 = alloca %S.gen.Val, align 16 + %a66 = alloca { ptr, i64, i64 }, align 16 + %a67 = alloca { ptr, i64, i64 }, align 16 + %a95 = alloca { ptr, i64, i64 }, align 16 + %a96 = alloca { ptr, i64, i64 }, align 16 + %a109 = alloca %S.ast.Node, align 16 + %a110 = alloca %S.ast.Node, align 16 + %a112 = alloca %S.ast.Node, align 16 + %a115 = alloca { ptr, i64, i64 }, align 16 + %a116 = alloca { ptr, i64, i64 }, align 16 + %a133 = alloca i64, align 16 + %a145 = alloca { ptr, i64, i64 }, align 16 + %a146 = alloca { ptr, i64, i64 }, align 16 + %a151 = alloca { ptr, i64, i64 }, align 16 + %a152 = alloca { ptr, i64, i64 }, align 16 + %a158 = alloca { ptr, i64, i64 }, align 16 + %a159 = alloca { ptr, i64, i64 }, align 16 + %a168 = alloca %S.gen.Place, align 16 + %a171 = alloca { ptr, i64, i64 }, align 16 + %a172 = alloca { ptr, i64, i64 }, align 16 + %a180 = alloca { ptr, i64, i64 }, align 16 + %a181 = alloca { ptr, i64, i64 }, align 16 + %a196 = alloca %S.gen.Val, align 16 %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 + %a203 = alloca { ptr, i64, i64 }, align 16 %a204 = alloca { ptr, i64, i64 }, align 16 - %a205 = 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 + %a206 = alloca { ptr, i64, i64 }, align 16 + %a207 = alloca i1, align 16 + %a209 = alloca { ptr, i64, i64 }, align 16 + %a210 = alloca { ptr, i64, i64 }, align 16 + %a219 = alloca %S.ast.Type, align 16 + %a220 = alloca %S.ast.Type, align 16 %a229 = 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 %a233 = 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 + %a234 = alloca { ptr, i64, i64 }, align 16 + %a235 = alloca { ptr, i64, i64 }, align 16 + %a236 = alloca { ptr, i64, i64 }, align 16 + %a245 = alloca %S.ast.Type, 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 + %a250 = alloca { ptr, i64, i64 }, align 16 + %a252 = 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 - %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 + %a263 = alloca { ptr, i64, i64 }, align 16 + %a264 = alloca { ptr, i64, i64 }, align 16 + %a265 = alloca { ptr, i64, i64 }, align 16 + %a267 = alloca { ptr, i64, i64 }, align 16 + %a268 = 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 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 + %a279 = alloca %S.ast.Type, 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 %a288 = alloca { ptr, i64, i64 }, align 16 %a289 = alloca { ptr, i64, i64 }, align 16 + %a291 = 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 + %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 - %a307 = alloca { ptr, i64, i64 }, align 16 - %a308 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 + %a313 = alloca %S.ast.Type, align 16 %a314 = alloca { ptr, i64, i64 }, align 16 %a315 = 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 - %a319 = 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 %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 - %a332 = 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 + %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 - %a343 = 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 + %a346 = alloca { ptr, i64, i64 }, align 16 + %a347 = 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 - %a355 = alloca { ptr, i64, i64 }, align 16 + %a354 = alloca { ptr, i64, i64 }, align 16 %a356 = 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 + %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 + %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 %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 %a387 = 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 + %a390 = 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 + %a394 = alloca { ptr, i64, i64 }, align 16 + %a395 = alloca { ptr, i64, i64 }, align 16 %a397 = alloca { ptr, i64, i64 }, align 16 + %a399 = alloca { ptr, i64, i64 }, align 16 + %a400 = 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 - %a410 = alloca { ptr, i64, i64 }, align 16 - %a422 = 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 + %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 %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 - %a436 = alloca { ptr, i64, i64 }, align 16 - %a437 = alloca { ptr, i64, i64 }, align 16 - %a438 = 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 + %a430 = alloca { ptr, i64, i64 }, align 16 + %a431 = 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 + %a456 = alloca { ptr, i64, i64 }, align 16 %a457 = alloca { ptr, i64, i64 }, align 16 - %a458 = 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 + %a466 = alloca { ptr, i64, i64 }, align 16 + %a467 = alloca { ptr, i64, i64 }, align 16 + %a468 = 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 + %a471 = alloca { ptr, i64, i64 }, align 16 + %a472 = alloca { ptr, i64, i64 }, align 16 + %a473 = alloca { ptr, i64, i64 }, align 16 + %a478 = alloca { ptr, i64, i64 }, align 16 + %a479 = alloca { ptr, i64, i64 }, align 16 + %a480 = alloca { ptr, i64, i64 }, align 16 %a481 = alloca { ptr, i64, i64 }, align 16 %a482 = alloca { ptr, i64, i64 }, align 16 + %a484 = 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 + %a489 = alloca { ptr, i64, i64 }, align 16 + %a493 = alloca { ptr, i64, i64 }, align 16 + %a494 = alloca { ptr, i64, i64 }, align 16 + %a498 = alloca { ptr, i64, i64 }, align 16 + %a499 = alloca { ptr, i64, i64 }, align 16 + %a504 = 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 %a511 = alloca { ptr, i64, i64 }, align 16 + %a516 = alloca { ptr, i64, i64 }, align 16 + %a517 = 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 - %a537 = alloca { ptr, i64, i64 }, align 16 - %a538 = alloca { ptr, i64, i64 }, align 16 + %a523 = alloca { ptr, i64, i64 }, align 16 + %a548 = alloca { ptr, i64, i64 }, align 16 + %a549 = alloca { ptr, i64, i64 }, align 16 + %a550 = alloca { ptr, i64, i64 }, align 16 + %a551 = 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 %a556 = alloca { ptr, i64, i64 }, align 16 %a558 = alloca { ptr, i64, i64 }, align 16 - %a559 = 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 + %a579 = alloca %S.ast.Type, 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 - %a603 = alloca { ptr, i64, i64 }, align 16 + %a586 = alloca { ptr, i64, i64 }, align 16 + %a587 = alloca { ptr, i64, i64 }, align 16 + %a603 = alloca %S.gen.Val, align 16 + %a607 = 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 - %a612 = 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 %a619 = alloca { ptr, i64, i64 }, align 16 %a620 = alloca { ptr, i64, i64 }, align 16 %a621 = alloca { ptr, i64, i64 }, align 16 - %a623 = alloca { ptr, i64, i64 }, align 16 - %a624 = alloca { ptr, i64, i64 }, align 16 + %a622 = 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 + %a626 = 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 - %a640 = alloca { ptr, i64, i64 }, align 16 + %a638 = 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 + %a647 = alloca { ptr, i64, i64 }, align 16 + %a654 = alloca { ptr, i64, i64 }, align 16 + %a655 = alloca { ptr, i64, i64 }, align 16 + %a658 = alloca { ptr, i64, i64 }, align 16 + %a661 = alloca { ptr, i64, i64 }, align 16 + %a668 = alloca { ptr, i64, i64 }, align 16 + %a669 = alloca { ptr, i64, i64 }, align 16 + %a670 = alloca { ptr, i64, i64 }, align 16 + %a672 = alloca { ptr, i64, i64 }, align 16 + %a673 = alloca { ptr, i64, i64 }, align 16 + %a674 = alloca { ptr, i64, i64 }, align 16 + %a675 = 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 + %a684 = alloca { ptr, i64, i64 }, align 16 %a685 = alloca { ptr, i64, i64 }, align 16 %a686 = alloca { ptr, i64, i64 }, align 16 - %a687 = alloca { ptr, i64, i64 }, align 16 + %a689 = 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 %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 + %a697 = 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 + %a706 = alloca { ptr, i64, i64 }, align 16 + %a708 = alloca { ptr, i64, i64 }, align 16 %a709 = alloca { ptr, i64, i64 }, align 16 + %a710 = 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 + %a714 = alloca { ptr, i64, i64 }, align 16 + %a719 = 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 + %a750 = 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 %a757 = 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 %a765 = alloca { ptr, i64, i64 }, align 16 + %a766 = 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 + %a771 = 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 %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 + %a782 = alloca { ptr, i64, i64 }, align 16 %a786 = alloca { ptr, i64, i64 }, align 16 %a788 = 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 + %a791 = alloca { ptr, i64, i64 }, align 16 + %a792 = alloca { ptr, i64, i64 }, align 16 %a794 = 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 - %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 - %a807 = alloca { ptr, i64, i64 }, align 16 - %a809 = alloca { ptr, i64, i64 }, align 16 %a810 = 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 - %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 - %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 + %a826 = alloca %S.gen.Val, align 16 + %a832 = alloca i64, align 16 + %a844 = alloca %S.gen.Val, 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 - %a877 = alloca %S.gen.Val, align 16 + %a865 = alloca { ptr, i64, i64 }, align 16 + %a868 = alloca { ptr, i64, i64 }, align 16 + %a873 = alloca { ptr, i64, i64 }, align 16 + %a874 = alloca { ptr, i64, i64 }, align 16 + %a875 = alloca { ptr, i64, i64 }, align 16 + %a877 = alloca { ptr, i64, i64 }, align 16 + %a878 = alloca { ptr, i64, i64 }, align 16 + %a879 = alloca { ptr, i64, i64 }, 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 - %a887 = alloca { ptr, i64, i64 }, align 16 + %a886 = alloca { ptr, i64, i64 }, align 16 %a888 = 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 %a894 = alloca { ptr, i64, i64 }, align 16 %a895 = alloca { ptr, i64, i64 }, align 16 %a896 = alloca { ptr, i64, i64 }, align 16 - %a898 = alloca { ptr, i64, i64 }, align 16 + %a897 = alloca { ptr, i64, i64 }, align 16 %a899 = alloca { ptr, i64, i64 }, align 16 %a900 = alloca { ptr, i64, i64 }, align 16 - %a908 = 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 %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 + %a916 = 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 - %a923 = 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 %a942 = alloca { ptr, i64, i64 }, align 16 - %a944 = alloca { ptr, i64, i64 }, align 16 + %a943 = alloca { ptr, i64, i64 }, align 16 %a945 = alloca { ptr, i64, i64 }, align 16 %a946 = alloca { ptr, i64, i64 }, align 16 + %a947 = 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 + %a954 = alloca { ptr, i64, i64 }, align 16 + %a956 = alloca { ptr, i64, i64 }, align 16 + %a957 = alloca { ptr, i64, i64 }, align 16 + %a958 = alloca { ptr, i64, i64 }, align 16 + %a959 = 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 - %a966 = alloca { ptr, i64, i64 }, align 16 - %a967 = alloca { ptr, i64, i64 }, align 16 - %a968 = alloca { ptr, i64, i64 }, align 16 + %a970 = alloca { ptr, i64, i64 }, align 16 %a971 = alloca { ptr, i64, i64 }, align 16 + %a972 = 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 + %a977 = 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 - %a1003 = alloca %S.gen.Val, align 16 - %a1006 = alloca { ptr, i64, i64 }, align 16 + %a985 = alloca { ptr, i64, i64 }, align 16 + %a986 = alloca { ptr, i64, i64 }, align 16 + %a1001 = alloca %S.gen.Val, align 16 + %a1004 = alloca { ptr, i64, i64 }, align 16 + %a1007 = 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 %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 + %a1019 = alloca { ptr, i64, i64 }, align 16 %a1020 = alloca { ptr, i64, i64 }, align 16 %a1021 = alloca { ptr, i64, i64 }, align 16 %a1022 = alloca { ptr, i64, i64 }, align 16 - %a1024 = alloca { ptr, i64, i64 }, align 16 + %a1023 = alloca { ptr, i64, i64 }, align 16 %a1025 = alloca { ptr, i64, i64 }, align 16 %a1026 = alloca { ptr, i64, i64 }, align 16 + %a1027 = alloca { ptr, i64, i64 }, align 16 + %a1028 = 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 + %a1037 = alloca { ptr, i64, i64 }, align 16 + %a1038 = alloca { ptr, i64, i64 }, align 16 + %a1041 = 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 + %a1049 = alloca { ptr, i64, i64 }, align 16 + %a1050 = alloca { ptr, i64, i64 }, align 16 + %a1051 = alloca { ptr, i64, i64 }, align 16 + %a1053 = 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 + %a1060 = alloca { ptr, i64, i64 }, align 16 + %a1061 = alloca { ptr, i64, i64 }, align 16 + %a1062 = alloca { ptr, i64, i64 }, align 16 + %a1064 = 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 + %a1070 = alloca { ptr, i64, i64 }, align 16 + %a1071 = 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 + %a1076 = 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 + %a1080 = alloca { ptr, i64, i64 }, align 16 + %a1081 = alloca { ptr, i64, i64 }, align 16 + %a1084 = 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 + %a1097 = alloca { ptr, i64, i64 }, align 16 + %a1101 = alloca %S.ast.Type, align 16 + %a1108 = alloca { ptr, i64, i64 }, align 16 + %a1109 = alloca { ptr, i64, i64 }, align 16 + %a1110 = alloca { ptr, i64, i64 }, align 16 + %a1112 = alloca { ptr, i64, i64 }, align 16 + %a1113 = alloca { ptr, i64, i64 }, align 16 + %a1114 = alloca { ptr, i64, i64 }, align 16 + %a1115 = alloca { ptr, i64, i64 }, align 16 + %a1118 = alloca { ptr, i64, i64 }, align 16 + %a1119 = alloca { ptr, i64, i64 }, align 16 + %a1123 = alloca %S.ast.Type, align 16 %a1128 = alloca { ptr, i64, i64 }, align 16 %a1129 = alloca { ptr, i64, i64 }, align 16 - %a1131 = alloca { ptr, i64, i64 }, align 16 + %a1130 = alloca { ptr, i64, i64 }, align 16 %a1132 = alloca { ptr, i64, i64 }, align 16 %a1133 = alloca { ptr, i64, i64 }, align 16 + %a1134 = alloca { ptr, i64, i64 }, align 16 + %a1135 = 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 - %a1170 = alloca %S.gen.Val, align 16 - %a1176 = alloca { ptr, i64, i64 }, align 16 + %a1159 = alloca %S.gen.Val, align 16 + %a1162 = alloca { ptr, i64, i64 }, align 16 + %a1165 = alloca { ptr, i64, i64 }, align 16 + %a1166 = alloca { ptr, i64, i64 }, align 16 + %a1167 = alloca { ptr, i64, i64 }, align 16 + %a1169 = alloca { ptr, i64, i64 }, align 16 + %a1170 = alloca { ptr, i64, i64 }, align 16 + %a1171 = alloca { ptr, i64, i64 }, align 16 + %a1172 = alloca { ptr, i64, i64 }, align 16 %a1177 = alloca { ptr, i64, i64 }, align 16 %a1178 = alloca { ptr, i64, i64 }, align 16 + %a1179 = 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 + %a1184 = alloca { ptr, i64, i64 }, align 16 %a1185 = alloca { ptr, i64, i64 }, align 16 + %a1186 = alloca { ptr, i64, i64 }, align 16 + %a1188 = alloca { ptr, i64, i64 }, align 16 + %a1191 = alloca { ptr, i64, i64 }, align 16 + %a1192 = alloca { ptr, i64, i64 }, align 16 + %a1193 = alloca { ptr, i64, i64 }, align 16 + %a1195 = 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 - %a1257 = alloca i64, align 16 + %a1198 = alloca { ptr, i64, i64 }, align 16 + %a1201 = alloca { ptr, i64, i64 }, align 16 + %a1202 = alloca { ptr, i64, i64 }, align 16 + %a1206 = alloca %S.ast.Type, align 16 + %a1210 = alloca { ptr, i64, i64 }, align 16 + %a1211 = alloca { ptr, i64, i64 }, align 16 + %a1217 = alloca { ptr, i64, i64 }, align 16 + %a1218 = alloca { ptr, i64, i64 }, align 16 + %a1243 = alloca %S.gen.Val, align 16 + %a1244 = alloca %S.ast.Type, align 16 + %a1245 = alloca %S.gen.Val, align 16 + %a1249 = alloca { ptr, i64, i64 }, align 16 + %a1250 = alloca { ptr, i64, i64 }, align 16 + %a1251 = alloca { ptr, i64, i64 }, align 16 + %a1253 = alloca { ptr, i64, i64 }, align 16 + %a1254 = alloca { ptr, i64, i64 }, align 16 + %a1255 = alloca { ptr, i64, i64 }, align 16 + %a1256 = alloca { ptr, i64, i64 }, align 16 + %a1259 = alloca { ptr, i64, i64 }, align 16 + %a1260 = alloca { ptr, i64, i64 }, align 16 + %a1263 = alloca { ptr, i64, i64 }, align 16 + %a1266 = alloca { ptr, i64, i64 }, align 16 + %a1267 = alloca { ptr, i64, i64 }, align 16 %a1268 = alloca { ptr, i64, i64 }, align 16 - %a1269 = alloca { ptr, i64, i64 }, align 16 %a1270 = alloca { ptr, i64, i64 }, align 16 + %a1271 = 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 + %a1275 = alloca { ptr, i64, i64 }, align 16 + %a1279 = alloca { ptr, i64, i64 }, align 16 + %a1280 = alloca { ptr, i64, i64 }, align 16 + %a1285 = alloca %S.gen.Val, align 16 + %a1303 = alloca %S.gen.Val, align 16 + %a1306 = alloca { ptr, i64, i64 }, align 16 + %a1309 = alloca { ptr, i64, i64 }, align 16 + %a1310 = alloca { ptr, i64, i64 }, align 16 + %a1311 = alloca { ptr, i64, i64 }, align 16 %a1313 = alloca { ptr, i64, i64 }, align 16 %a1314 = alloca { ptr, i64, i64 }, align 16 + %a1315 = 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 + %a1324 = 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 + %a1328 = 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 - %a1444 = alloca { ptr, i64, i64 }, align 16 - %a1448 = alloca { ptr, i64, i64 }, align 16 + %a1330 = alloca { ptr, i64, i64 }, align 16 + %a1332 = alloca { ptr, i64, i64 }, align 16 + %a1343 = alloca { ptr, i64, i64 }, align 16 + %a1344 = alloca { ptr, i64, i64 }, align 16 + %a1359 = alloca %S.gen.Val, align 16 + %a1365 = alloca { ptr, i64, i64 }, align 16 + %a1366 = alloca { ptr, i64, i64 }, align 16 + %a1367 = alloca { ptr, i64, i64 }, align 16 + %a1368 = alloca { ptr, i64, i64 }, align 16 + %a1370 = alloca { ptr, i64, i64 }, align 16 + %a1371 = alloca { ptr, i64, i64 }, align 16 + %a1372 = alloca { ptr, i64, i64 }, align 16 + %a1373 = alloca { ptr, i64, i64 }, align 16 + %a1376 = alloca { ptr, i64, i64 }, align 16 + %a1377 = alloca { ptr, i64, i64 }, align 16 + %a1387 = alloca { ptr, i64, i64 }, align 16 + %a1388 = alloca { ptr, i64, i64 }, align 16 + %a1390 = alloca { ptr, i64, i64 }, align 16 + %a1391 = alloca { ptr, i64, i64 }, align 16 + %a1399 = alloca { ptr, i64, i64 }, align 16 + %a1400 = alloca { ptr, i64, i64 }, align 16 + %a1415 = alloca %S.gen.Val, align 16 + %a1419 = alloca { ptr, i64, i64 }, align 16 + %a1420 = 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 + %a1458 = alloca { ptr, i64, i64 }, align 16 + %a1459 = alloca { ptr, i64, i64 }, align 16 + %a1461 = alloca { ptr, i64, i64 }, align 16 + %a1462 = alloca { ptr, i64, i64 }, align 16 + %a1463 = alloca { ptr, i64, i64 }, align 16 + %a1464 = alloca { ptr, i64, i64 }, align 16 + %a1467 = alloca { ptr, i64, i64 }, align 16 + %a1470 = alloca { ptr, i64, i64 }, align 16 + %a1491 = alloca { ptr, i64, i64 }, align 16 + %a1492 = alloca { ptr, i64, i64 }, align 16 + %a1493 = alloca { ptr, i64, i64 }, align 16 + %a1495 = alloca { ptr, i64, i64 }, align 16 + %a1496 = alloca { ptr, i64, i64 }, align 16 + %a1497 = alloca { ptr, i64, i64 }, align 16 + %a1498 = alloca { ptr, i64, i64 }, align 16 + %a1500 = alloca { ptr, i64, i64 }, align 16 + %a1510 = alloca i64, align 16 + %a1521 = alloca { ptr, i64, i64 }, align 16 + %a1522 = alloca { ptr, i64, i64 }, align 16 + %a1523 = alloca { ptr, i64, i64 }, align 16 + %a1525 = alloca { ptr, i64, i64 }, align 16 + %a1526 = alloca { ptr, i64, i64 }, align 16 + %a1527 = alloca { ptr, i64, i64 }, align 16 + %a1528 = alloca { ptr, i64, i64 }, align 16 + %a1530 = alloca { ptr, i64, i64 }, align 16 + %a1543 = alloca i64, align 16 + %a1567 = alloca { ptr, i64, i64 }, align 16 + %a1568 = alloca { ptr, i64, i64 }, align 16 + %a1569 = alloca { ptr, i64, i64 }, align 16 + %a1571 = alloca { ptr, i64, i64 }, align 16 + %a1572 = alloca { ptr, i64, i64 }, align 16 + %a1573 = alloca { ptr, i64, i64 }, align 16 + %a1574 = alloca { ptr, i64, i64 }, align 16 + %a1577 = alloca { ptr, i64, i64 }, align 16 + %a1578 = alloca { ptr, i64, i64 }, align 16 + %a1579 = alloca { ptr, i64, i64 }, align 16 + %a1580 = alloca { ptr, i64, i64 }, align 16 + %a1582 = alloca { ptr, i64, i64 }, align 16 + %a1583 = alloca { ptr, i64, i64 }, align 16 + %a1584 = alloca { ptr, i64, i64 }, align 16 + %a1585 = alloca { ptr, i64, i64 }, align 16 + %a1587 = alloca { ptr, i64, i64 }, align 16 + %a1588 = alloca { ptr, i64, i64 }, align 16 + %a1591 = alloca i64, align 16 + %a1599 = alloca %S.ast.Type, align 16 + %a1620 = alloca %S.ast.Type, align 16 + %a1641 = alloca i64, align 16 + %a1654 = alloca %S.gen.StructDef, align 16 + %a1655 = alloca %S.gen.StructDef, align 16 + %a1657 = alloca %S.gen.StructDef, align 16 + %a1685 = alloca %S.ast.Node, align 16 + %a1686 = alloca %S.ast.Node, align 16 + %a1688 = alloca %S.ast.Node, align 16 + %a1697 = alloca { ptr, i64, i64 }, align 16 + %a1698 = alloca { ptr, i64, i64 }, align 16 + %a1699 = alloca { ptr, i64, i64 }, align 16 + %a1701 = alloca { ptr, i64, i64 }, align 16 + %a1702 = alloca { ptr, i64, i64 }, align 16 + %a1703 = alloca { ptr, i64, i64 }, align 16 + %a1704 = alloca { ptr, i64, i64 }, align 16 + %a1708 = alloca { ptr, i64, i64 }, align 16 + %a1709 = alloca { ptr, i64, i64 }, align 16 + %a1711 = alloca { ptr, i64, i64 }, align 16 + %a1712 = alloca { ptr, i64, i64 }, align 16 + %a1713 = alloca { ptr, i64, i64 }, align 16 + %a1714 = alloca { ptr, i64, i64 }, align 16 + %a1715 = alloca { ptr, i64, i64 }, align 16 + %a1717 = alloca { ptr, i64, i64 }, align 16 + %a1718 = alloca { ptr, i64, i64 }, align 16 + %a1719 = alloca { ptr, i64, i64 }, align 16 + %a1720 = alloca { ptr, i64, i64 }, align 16 + %a1737 = alloca { ptr, i64, i64 }, align 16 + %a1753 = alloca i64, align 16 + %a1765 = alloca { ptr, i64, i64 }, align 16 + %a1775 = alloca { ptr, i64, i64 }, align 16 + %a1778 = alloca { ptr, i64, i64 }, align 16 + %a1779 = alloca { ptr, i64, i64 }, align 16 + %a1806 = alloca { ptr, i64, i64 }, align 16 + %a1807 = alloca { ptr, i64, i64 }, align 16 + %a1808 = alloca { ptr, i64, i64 }, align 16 + %a1810 = alloca { ptr, i64, i64 }, align 16 + %a1811 = alloca { ptr, i64, i64 }, align 16 + %a1812 = alloca { ptr, i64, i64 }, align 16 + %a1813 = alloca { ptr, i64, i64 }, align 16 + %a1815 = alloca { ptr, i64, i64 }, align 16 + %a1819 = alloca { ptr, i64, i64 }, align 16 + %a1820 = alloca { ptr, i64, i64 }, align 16 + %a1821 = alloca { ptr, i64, i64 }, align 16 + %a1823 = alloca { ptr, i64, i64 }, align 16 + %a1824 = alloca { ptr, i64, i64 }, align 16 + %a1825 = alloca { ptr, i64, i64 }, align 16 + %a1826 = alloca { ptr, i64, i64 }, align 16 + %a1830 = alloca { ptr, i64, i64 }, align 16 + %a1831 = alloca { ptr, i64, i64 }, align 16 + %a1832 = alloca { ptr, i64, i64 }, align 16 + %a1833 = alloca { ptr, i64, i64 }, align 16 + %a1834 = alloca { ptr, i64, i64 }, align 16 + %a1836 = 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 @@ -66574,2184 +78930,2763 @@ entry: store { ptr, i64, i64 } %t7, ptr %a8 %t9 = load ptr, ptr %a1 %t10 = icmp eq ptr %t9, null - br i1 %t10, label %panic7327, label %ok7328 -panic7327: - call void @finch_panic(ptr @.str.4809, i64 4304, ptr @.str.4810) + br i1 %t10, label %panic7704, label %ok7705 +panic7704: + call void @finch_panic(ptr @.str.4980, i64 4608, ptr @.str.4981) unreachable -ok7328: - %t11 = getelementptr inbounds %S.gen.Gen, ptr %t9, i32 0, i32 26 +ok7705: + %t11 = getelementptr inbounds %S.gen.Gen, ptr %t9, i32 0, i32 27 %t12 = load i1, ptr %t11 - br label %logic.from7329 -logic.from7329: - br i1 %t12, label %logic.rhs7330, label %logic.end7331 -logic.rhs7330: + br label %logic.from7706 +logic.from7706: + br i1 %t12, label %logic.rhs7707, label %logic.end7708 +logic.rhs7707: %t13 = load { ptr, i64, i64 }, ptr %a8 %t14 = call i1 @finch.gen.isBuiltin({ ptr, i64, i64 } %t13) - br label %logic.rend7332 -logic.rend7332: - br label %logic.end7331 -logic.end7331: - %t15 = phi i1 [ false, %logic.from7329 ], [ %t14, %logic.rend7332 ] - br i1 %t15, label %then7333, label %endif7335 -then7333: + br label %logic.rend7709 +logic.rend7709: + br label %logic.end7708 +logic.end7708: + %t15 = phi i1 [ false, %logic.from7706 ], [ %t14, %logic.rend7709 ] + br i1 %t15, label %then7710, label %endif7712 +then7710: %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 %then7336, label %endif7338 -then7336: - %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.4811, i64 0, i64 0 }, i64 0, i64 0) - br label %endif7338 -endif7338: - br label %endif7335 -endif7335: - %t32 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t16, ptr %a19 + call void @finch.drop.arr_S_docs_Doc(ptr %a19) + store %S.docs.Doc %t18, ptr %a20 + %t21 = getelementptr inbounds %S.docs.Doc, ptr %a20, i32 0, i32 0 + %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t21, i32 0, i32 1 + %t23 = load i64, ptr %t22 + %t24 = icmp sgt i64 %t23, 0 + br i1 %t24, label %then7716, label %endif7718 +then7716: + %t25 = load ptr, ptr %a1 + %t26 = load %S.ast.Node, ptr %a2 + %t27 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 + %t28 = load i64, ptr %t27 + %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 + %t30 = load i64, ptr %t29 + %t31 = load %S.docs.Doc, ptr %a20 + %t32 = call { ptr, i64, i64 } @finch.docs.hover(%S.docs.Doc %t31) + call void @finch.gen.noteRef(ptr %t25, %S.ast.Node %t26, i64 %t28, i64 %t30, { ptr, i64, i64 } %t32, { ptr, i64, i64 } { ptr @.str.4982, i64 0, i64 0 }, i64 0, i64 0) store { ptr, i64, i64 } %t32, ptr %a33 - store { ptr, i64, i64 } { ptr @.str.4812, 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 %then7339, label %endif7341 -then7339: - %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.4813, i64 86, i64 0 }) - br label %endif7341 -endif7341: - %t39 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t39, ptr %a40 - store { ptr, i64, i64 } { ptr @.str.4814, 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 %then7342, label %endif7344 -then7342: - %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.cond7345 -for.cond7345: - %t48 = load i64, ptr %a47 - %t49 = icmp slt i64 %t48, %t46 - br i1 %t49, label %for.body7346, label %for.end7348 -for.body7346: - %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 %range7349, label %inrange7350 -range7349: - call void @finch_panic_index(ptr @.str.4815, i64 4315, i64 %t52, i64 %t54) + call void @finch_str_drop(ptr %a33) + br label %endif7718 +endif7718: + call void @finch.drop.S_docs_Doc(ptr %a20) + br label %endif7712 +endif7712: + %t34 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t34, ptr %a35 + store { ptr, i64, i64 } { ptr @.str.4983, i64 5, i64 0 }, ptr %a36 + %t37 = call i32 @finch_str_eq(ptr %a35, ptr %a36) + %t38 = icmp ne i32 %t37, 0 + br i1 %t38, label %then7719, label %endif7721 +then7719: + %t39 = load ptr, ptr %a1 + %t40 = load %S.ast.Node, ptr %a2 + call void @finch.gen.fail(ptr %t39, %S.ast.Node %t40, { ptr, i64, i64 } { ptr @.str.4984, i64 86, i64 0 }) + br label %endif7721 +endif7721: + %t41 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t41, ptr %a42 + store { ptr, i64, i64 } { ptr @.str.4985, i64 5, i64 0 }, ptr %a43 + %t44 = call i32 @finch_str_eq(ptr %a42, ptr %a43) + %t45 = icmp ne i32 %t44, 0 + br i1 %t45, label %then7722, label %endif7724 +then7722: + %t46 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %t46, i32 0, i32 1 + %t48 = load i64, ptr %t47 + store i64 0, ptr %a49 + br label %for.cond7725 +for.cond7725: + %t50 = load i64, ptr %a49 + %t51 = icmp slt i64 %t50, %t48 + br i1 %t51, label %for.body7726, label %for.end7728 +for.body7726: + %t52 = load ptr, ptr %a1 + %t53 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t54 = load i64, ptr %a49 + %t55 = load { ptr, i64, i64 }, ptr %t53 + %t56 = extractvalue { ptr, i64, i64 } %t55, 1 + %t57 = icmp uge i64 %t54, %t56 + br i1 %t57, label %range7729, label %inrange7730 +range7729: + call void @finch_panic_index(ptr @.str.4986, i64 4619, i64 %t54, i64 %t56) unreachable -inrange7350: - %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.4816, 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 %then7351, label %endif7353 -then7351: - %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 %range7354, label %inrange7355 -range7354: - call void @finch_panic_index(ptr @.str.4817, i64 4317, i64 %t70, i64 %t72) +inrange7730: + %t58 = extractvalue { ptr, i64, i64 } %t55, 0 + %t59 = getelementptr inbounds %S.ast.Node, ptr %t58, i64 %t54 + %t60 = load %S.ast.Node, ptr %t59 + %t61 = call %S.gen.Val @finch.gen.expr(ptr %t52, %S.ast.Node %t60) + store %S.gen.Val %t61, ptr %a62 + %t63 = getelementptr inbounds %S.gen.Val, ptr %a62, i32 0, i32 1 + %t64 = getelementptr inbounds %S.ast.Type, ptr %t63, i32 0, i32 0 + %t65 = load { ptr, i64, i64 }, ptr %t64 + store { ptr, i64, i64 } %t65, ptr %a66 + store { ptr, i64, i64 } { ptr @.str.4987, i64 4, i64 0 }, ptr %a67 + %t68 = call i32 @finch_str_eq(ptr %a66, ptr %a67) + %t69 = icmp ne i32 %t68, 0 + br i1 %t69, label %then7731, label %endif7733 +then7731: + %t70 = load ptr, ptr %a1 + %t71 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t72 = load i64, ptr %a49 + %t73 = load { ptr, i64, i64 }, ptr %t71 + %t74 = extractvalue { ptr, i64, i64 } %t73, 1 + %t75 = icmp uge i64 %t72, %t74 + br i1 %t75, label %range7734, label %inrange7735 +range7734: + call void @finch_panic_index(ptr @.str.4988, i64 4621, i64 %t72, i64 %t74) unreachable -inrange7355: - %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.4818, i64 53, i64 0 }) - br label %endif7353 -endif7353: - %t77 = load i64, ptr %a47 - %t78 = icmp sgt i64 %t77, 0 - br i1 %t78, label %then7356, label %endif7358 -then7356: - %t79 = load ptr, ptr %a1 - call void @finch.gen.printf(ptr %t79, { ptr, i64, i64 } { ptr @.str.4819, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.4820, i64 0, i64 0 }) - br label %endif7358 -endif7358: - %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.step7347 -for.step7347: - %t85 = load i64, ptr %a47 - %t86 = add i64 %t85, 1 - store i64 %t86, ptr %a47 - br label %for.cond7345 -for.end7348: +inrange7735: + %t76 = extractvalue { ptr, i64, i64 } %t73, 0 + %t77 = getelementptr inbounds %S.ast.Node, ptr %t76, i64 %t72 + %t78 = load %S.ast.Node, ptr %t77 + call void @finch.gen.fail(ptr %t70, %S.ast.Node %t78, { ptr, i64, i64 } { ptr @.str.4989, i64 53, i64 0 }) + br label %endif7733 +endif7733: + %t79 = load i64, ptr %a49 + %t80 = icmp sgt i64 %t79, 0 + br i1 %t80, label %then7736, label %endif7738 +then7736: + %t81 = load ptr, ptr %a1 + call void @finch.gen.printf(ptr %t81, { ptr, i64, i64 } { ptr @.str.4990, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.4991, i64 0, i64 0 }) + br label %endif7738 +endif7738: + %t82 = load ptr, ptr %a1 + %t83 = getelementptr inbounds %S.gen.Val, ptr %a62, i32 0, i32 0 + %t84 = load { ptr, i64, i64 }, ptr %t83 + %t85 = getelementptr inbounds %S.gen.Val, ptr %a62, i32 0, i32 1 + %t86 = load %S.ast.Type, ptr %t85 + call void @finch.gen.emitPrint(ptr %t82, { ptr, i64, i64 } %t84, %S.ast.Type %t86, i1 false) %t87 = load ptr, ptr %a1 - call void @finch.gen.printf(ptr %t87, { ptr, i64, i64 } { ptr @.str.4821, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.4822, i64 0, i64 0 }) - %t88 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4823, i64 4, i64 0 }) - %t89 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t88, 1 - ret %S.gen.Val %t89 -endif7344: - %t90 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t90, ptr %a91 - store { ptr, i64, i64 } { ptr @.str.4824, 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 %then7359, label %endif7361 -then7359: - %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 %range7362, label %inrange7363 -range7362: - call void @finch_panic_index(ptr @.str.4825, i64 4329, i64 0, i64 %t100) + %t88 = load %S.gen.Val, ptr %a62 + call void @finch.gen.release(ptr %t87, %S.gen.Val %t88) + call void @finch.drop.S_gen_Val(ptr %a62) + br label %for.step7727 +for.step7727: + %t89 = load i64, ptr %a49 + %t90 = add i64 %t89, 1 + store i64 %t90, ptr %a49 + br label %for.cond7725 +for.end7728: + %t91 = load ptr, ptr %a1 + call void @finch.gen.printf(ptr %t91, { ptr, i64, i64 } { ptr @.str.4992, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.4993, i64 0, i64 0 }) + %t92 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4994, i64 4, i64 0 }) + %t93 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t92, 1 + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t93 +endif7724: + %t94 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t94, ptr %a95 + store { ptr, i64, i64 } { ptr @.str.4995, i64 4, i64 0 }, ptr %a96 + %t97 = call i32 @finch_str_eq(ptr %a95, ptr %a96) + %t98 = icmp ne i32 %t97, 0 + br i1 %t98, label %then7739, label %endif7741 +then7739: + %t99 = load ptr, ptr %a1 + %t100 = load %S.ast.Node, ptr %a2 + %t101 = load { ptr, i64, i64 }, ptr %a8 + call void @finch.gen.checkArgs(ptr %t99, %S.ast.Node %t100, i64 0, i64 1, { ptr, i64, i64 } %t101) + %t102 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t103 = load { ptr, i64, i64 }, ptr %t102 + %t104 = extractvalue { ptr, i64, i64 } %t103, 1 + %t105 = icmp uge i64 0, %t104 + br i1 %t105, label %range7742, label %inrange7743 +range7742: + call void @finch_panic_index(ptr @.str.4996, i64 4634, i64 0, i64 %t104) unreachable -inrange7363: - %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.4826, 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.from7364 -logic.from7364: - br i1 %t114, label %logic.rhs7365, label %logic.end7366 -logic.rhs7365: - %t115 = load ptr, ptr %a1 - %t116 = getelementptr inbounds %S.ast.Node, ptr %a108, i32 0, i32 1 - %t117 = load { ptr, i64, i64 }, ptr %t116 - %t118 = call i64 @finch.gen.lookup(ptr %t115, { ptr, i64, i64 } %t117) - %t119 = icmp slt i64 %t118, 0 - br label %logic.rend7367 -logic.rend7367: - br label %logic.end7366 -logic.end7366: - %t120 = phi i1 [ false, %logic.from7364 ], [ %t119, %logic.rend7367 ] - br i1 %t120, label %then7368, label %endif7370 -then7368: - %t121 = load ptr, ptr %a1 - %t122 = load ptr, ptr %a1 - %t123 = icmp eq ptr %t122, null - br i1 %t123, label %panic7371, label %ok7372 -panic7371: - call void @finch_panic(ptr @.str.4827, i64 4331, ptr @.str.4828) +inrange7743: + %t106 = extractvalue { ptr, i64, i64 } %t103, 0 + %t107 = getelementptr inbounds %S.ast.Node, ptr %t106, i64 0 + %t108 = load %S.ast.Node, ptr %t107 + store %S.ast.Node %t108, ptr %a109 + call void @finch.copy.S_ast_Node(ptr %a110, ptr %a109) + %t111 = load %S.ast.Node, ptr %a110 + store %S.ast.Node %t111, ptr %a112 + %t113 = getelementptr inbounds %S.ast.Node, ptr %a112, i32 0, i32 0 + %t114 = load { ptr, i64, i64 }, ptr %t113 + store { ptr, i64, i64 } %t114, ptr %a115 + store { ptr, i64, i64 } { ptr @.str.4997, i64 3, i64 0 }, ptr %a116 + %t117 = call i32 @finch_str_eq(ptr %a115, ptr %a116) + %t118 = icmp ne i32 %t117, 0 + br label %logic.from7744 +logic.from7744: + br i1 %t118, label %logic.rhs7745, label %logic.end7746 +logic.rhs7745: + %t119 = load ptr, ptr %a1 + %t120 = getelementptr inbounds %S.ast.Node, ptr %a112, i32 0, i32 1 + %t121 = load { ptr, i64, i64 }, ptr %t120 + %t122 = call i64 @finch.gen.lookup(ptr %t119, { ptr, i64, i64 } %t121) + %t123 = icmp slt i64 %t122, 0 + br label %logic.rend7747 +logic.rend7747: + br label %logic.end7746 +logic.end7746: + %t124 = phi i1 [ false, %logic.from7744 ], [ %t123, %logic.rend7747 ] + br i1 %t124, label %then7748, label %endif7750 +then7748: + %t125 = load ptr, ptr %a1 + %t126 = load ptr, ptr %a1 + %t127 = icmp eq ptr %t126, null + br i1 %t127, label %panic7751, label %ok7752 +panic7751: + call void @finch_panic(ptr @.str.4998, i64 4636, ptr @.str.4999) unreachable -ok7372: - %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 %then7373, label %endif7375 -then7373: - %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.4829, i64 3, i64 0 }) - %t138 = insertvalue %S.gen.Val %t136, %S.ast.Type %t137, 1 - ret %S.gen.Val %t138 -endif7375: - br label %endif7370 -endif7370: - %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.4830, 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.from7376 -logic.from7376: - br i1 %t144, label %logic.rhs7377, label %logic.end7378 -logic.rhs7377: - %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.4831, 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.rend7379 -logic.rend7379: - br label %logic.end7378 -logic.end7378: - %t151 = phi i1 [ false, %logic.from7376 ], [ %t150, %logic.rend7379 ] - br label %logic.from7380 -logic.from7380: - br i1 %t151, label %logic.rhs7381, label %logic.end7382 -logic.rhs7381: - %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.4832, 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.rend7383 -logic.rend7383: - br label %logic.end7382 -logic.end7382: - %t158 = phi i1 [ false, %logic.from7380 ], [ %t157, %logic.rend7383 ] - br i1 %t158, label %then7384, label %endif7386 -then7384: - %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.4833, i64 63, i64 0 }) - br label %endif7386 -endif7386: - %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 -endif7361: - %t175 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t175, ptr %a176 - store { ptr, i64, i64 } { ptr @.str.4834, 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 %then7387, label %endif7389 -then7387: - %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 %range7390, label %inrange7391 -range7390: - call void @finch_panic_index(ptr @.str.4835, i64 4344, i64 0, i64 %t186) +ok7752: + %t128 = getelementptr inbounds %S.gen.Gen, ptr %t126, i32 0, i32 14 + %t129 = load { ptr, i64, i64 }, ptr %t128 + %t130 = getelementptr inbounds %S.ast.Node, ptr %a112, i32 0, i32 1 + %t131 = load { ptr, i64, i64 }, ptr %t130 + %t132 = call i64 @finch.gen.findFn(ptr %t125, { ptr, i64, i64 } %t129, { ptr, i64, i64 } %t131) + store i64 %t132, ptr %a133 + %t134 = load i64, ptr %a133 + %t135 = icmp sge i64 %t134, 0 + br i1 %t135, label %then7753, label %endif7755 +then7753: + %t136 = load ptr, ptr %a1 + %t137 = load i64, ptr %a133 + %t138 = load %S.ast.Node, ptr %a112 + %t139 = call { ptr, i64, i64 } @finch.gen.cThunk(ptr %t136, i64 %t137, %S.ast.Node %t138) + %t140 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t139, 0 + %t141 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5000, i64 3, i64 0 }) + %t142 = insertvalue %S.gen.Val %t140, %S.ast.Type %t141, 1 + call void @finch.drop.S_ast_Node(ptr %a112) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t142 +endif7755: + br label %endif7750 +endif7750: + %t143 = getelementptr inbounds %S.ast.Node, ptr %a112, i32 0, i32 0 + %t144 = load { ptr, i64, i64 }, ptr %t143 + store { ptr, i64, i64 } %t144, ptr %a145 + store { ptr, i64, i64 } { ptr @.str.5001, i64 3, i64 0 }, ptr %a146 + %t147 = call i32 @finch_str_eq(ptr %a145, ptr %a146) + %t148 = icmp eq i32 %t147, 0 + br label %logic.from7756 +logic.from7756: + br i1 %t148, label %logic.rhs7757, label %logic.end7758 +logic.rhs7757: + %t149 = getelementptr inbounds %S.ast.Node, ptr %a112, i32 0, i32 0 + %t150 = load { ptr, i64, i64 }, ptr %t149 + store { ptr, i64, i64 } %t150, ptr %a151 + store { ptr, i64, i64 } { ptr @.str.5002, i64 6, i64 0 }, ptr %a152 + %t153 = call i32 @finch_str_eq(ptr %a151, ptr %a152) + %t154 = icmp eq i32 %t153, 0 + br label %logic.rend7759 +logic.rend7759: + br label %logic.end7758 +logic.end7758: + %t155 = phi i1 [ false, %logic.from7756 ], [ %t154, %logic.rend7759 ] + br label %logic.from7760 +logic.from7760: + br i1 %t155, label %logic.rhs7761, label %logic.end7762 +logic.rhs7761: + %t156 = getelementptr inbounds %S.ast.Node, ptr %a112, i32 0, i32 0 + %t157 = load { ptr, i64, i64 }, ptr %t156 + store { ptr, i64, i64 } %t157, ptr %a158 + store { ptr, i64, i64 } { ptr @.str.5003, i64 5, i64 0 }, ptr %a159 + %t160 = call i32 @finch_str_eq(ptr %a158, ptr %a159) + %t161 = icmp eq i32 %t160, 0 + br label %logic.rend7763 +logic.rend7763: + br label %logic.end7762 +logic.end7762: + %t162 = phi i1 [ false, %logic.from7760 ], [ %t161, %logic.rend7763 ] + br i1 %t162, label %then7764, label %endif7766 +then7764: + %t163 = load ptr, ptr %a1 + %t164 = load %S.ast.Node, ptr %a112 + call void @finch.gen.fail(ptr %t163, %S.ast.Node %t164, { ptr, i64, i64 } { ptr @.str.5004, i64 63, i64 0 }) + br label %endif7766 +endif7766: + %t165 = load ptr, ptr %a1 + %t166 = load %S.ast.Node, ptr %a112 + %t167 = call %S.gen.Place @finch.gen.place(ptr %t165, %S.ast.Node %t166, i1 true) + store %S.gen.Place %t167, ptr %a168 + %t169 = getelementptr inbounds %S.gen.Place, ptr %a168, i32 0, i32 0 + %t170 = load { ptr, i64, i64 }, ptr %t169 + store { ptr, i64, i64 } %t170, ptr %a171 + call void @finch_str_copy(ptr %a172, ptr %a171) + %t173 = load { ptr, i64, i64 }, ptr %a172 + %t174 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t173, 0 + %t175 = getelementptr inbounds %S.gen.Place, ptr %a168, i32 0, i32 1 + %t176 = load %S.ast.Type, ptr %t175 + %t177 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t176) + %t178 = insertvalue %S.gen.Val %t174, %S.ast.Type %t177, 1 + call void @finch.drop.S_gen_Place(ptr %a168) + call void @finch.drop.S_ast_Node(ptr %a112) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t178 +endif7741: + %t179 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t179, ptr %a180 + store { ptr, i64, i64 } { ptr @.str.5005, i64 3, i64 0 }, ptr %a181 + %t182 = call i32 @finch_str_eq(ptr %a180, ptr %a181) + %t183 = icmp ne i32 %t182, 0 + br i1 %t183, label %then7767, label %endif7769 +then7767: + %t184 = load ptr, ptr %a1 + %t185 = load %S.ast.Node, ptr %a2 + %t186 = load { ptr, i64, i64 }, ptr %a8 + call void @finch.gen.checkArgs(ptr %t184, %S.ast.Node %t185, i64 0, i64 1, { ptr, i64, i64 } %t186) + %t187 = load ptr, ptr %a1 + %t188 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t189 = load { ptr, i64, i64 }, ptr %t188 + %t190 = extractvalue { ptr, i64, i64 } %t189, 1 + %t191 = icmp uge i64 0, %t190 + br i1 %t191, label %range7770, label %inrange7771 +range7770: + call void @finch_panic_index(ptr @.str.5006, i64 4649, i64 0, i64 %t190) unreachable -inrange7391: - %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 +inrange7771: + %t192 = extractvalue { ptr, i64, i64 } %t189, 0 + %t193 = getelementptr inbounds %S.ast.Node, ptr %t192, i64 0 + %t194 = load %S.ast.Node, ptr %t193 + %t195 = call %S.gen.Val @finch.gen.expr(ptr %t187, %S.ast.Node %t194) + store %S.gen.Val %t195, ptr %a196 + %t197 = load ptr, ptr %a1 + %t198 = call { ptr, i64, i64 } @finch.gen.strOut(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.4836, 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 %then7392, label %else7393 -then7392: - %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 - 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 -else7393: - %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 %then7395, label %else7396 -then7395: - %t225 = load ptr, ptr %a1 - %t226 = load { ptr, i64, i64 }, ptr %a195 - store { ptr, i64, i64 } { ptr @.str.4837, 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.4838, 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.4839, 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.4840, i64 1, i64 0 }, ptr %a248 + %t200 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 + %t201 = getelementptr inbounds %S.ast.Type, ptr %t200, i32 0, i32 0 + %t202 = load { ptr, i64, i64 }, ptr %t201 + store { ptr, i64, i64 } %t202, ptr %a203 + call void @finch_str_copy(ptr %a204, ptr %a203) + %t205 = load { ptr, i64, i64 }, ptr %a204 + store { ptr, i64, i64 } %t205, ptr %a206 + store i1 false, ptr %a207 + %t208 = load { ptr, i64, i64 }, ptr %a206 + store { ptr, i64, i64 } %t208, ptr %a209 + store { ptr, i64, i64 } { ptr @.str.5007, i64 3, i64 0 }, ptr %a210 + %t211 = call i32 @finch_str_eq(ptr %a209, ptr %a210) + %t212 = icmp ne i32 %t211, 0 + br i1 %t212, label %then7772, label %else7773 +then7772: + %t213 = load ptr, ptr %a1 + %t214 = load %S.gen.Val, ptr %a196 + %t215 = call { ptr, i64, i64 } @finch.gen.own(ptr %t213, %S.gen.Val %t214) + %t216 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t215, 0 + %t217 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 + %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 + %t222 = insertvalue %S.gen.Val %t216, %S.ast.Type %t221, 1 + %t223 = insertvalue %S.gen.Val %t222, i1 true, 2 + call void @finch_str_drop(ptr %a206) + call void @finch_str_drop(ptr %a199) + call void @finch.drop.S_gen_Val(ptr %a196) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t223 +else7773: + %t224 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 + %t225 = load %S.ast.Type, ptr %t224 + %t226 = call i1 @finch.gen.isSigned(%S.ast.Type %t225) + br i1 %t226, label %then7775, label %else7776 +then7775: + %t227 = load ptr, ptr %a1 + %t228 = load { ptr, i64, i64 }, ptr %a199 + store { ptr, i64, i64 } { ptr @.str.5008, i64 34, i64 0 }, ptr %a230 + store { ptr, i64, i64 } %t228, ptr %a231 + call void @finch_str_concat(ptr %a229, ptr %a230, ptr %a231) + %t232 = load { ptr, i64, i64 }, ptr %a229 + store { ptr, i64, i64 } %t232, ptr %a234 + store { ptr, i64, i64 } { ptr @.str.5009, i64 6, i64 0 }, ptr %a235 + call void @finch_str_concat(ptr %a233, ptr %a234, ptr %a235) + store { ptr, i64, i64 } %t232, ptr %a236 + call void @finch_str_drop(ptr %a236) + %t237 = load { ptr, i64, i64 }, ptr %a233 + %t238 = load ptr, ptr %a1 + %t239 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 0 + %t240 = load { ptr, i64, i64 }, ptr %t239 + %t241 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 + %t242 = load %S.ast.Type, ptr %t241 + %t243 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5010, i64 3, i64 0 }) + %t244 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t238, { ptr, i64, i64 } %t240, %S.ast.Type %t242, %S.ast.Type %t243) + store %S.ast.Type %t243, ptr %a245 + call void @finch.drop.S_ast_Type(ptr %a245) + store { ptr, i64, i64 } %t237, ptr %a247 + store { ptr, i64, i64 } %t244, 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 %endif7397 -else7396: - %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 %then7398, label %else7399 -then7398: - %t253 = load ptr, ptr %a1 - %t254 = load { ptr, i64, i64 }, ptr %a195 - store { ptr, i64, i64 } { ptr @.str.4841, 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.4842, 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.4843, 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.4844, 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 %endif7400 -else7399: - %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 %then7401, label %else7402 -then7401: - %t281 = load ptr, ptr %a1 - %t282 = load { ptr, i64, i64 }, ptr %a195 - store { ptr, i64, i64 } { ptr @.str.4845, 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.4846, 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.4847, 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.4848, 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 %endif7403 -else7402: - %t306 = load { ptr, i64, i64 }, ptr %a202 - store { ptr, i64, i64 } %t306, ptr %a307 - store { ptr, i64, i64 } { ptr @.str.4849, 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 %then7404, label %else7405 -then7404: - %t311 = load ptr, ptr %a1 - %t312 = load { ptr, i64, i64 }, ptr %a195 - store { ptr, i64, i64 } { ptr @.str.4850, 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.4851, 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.4852, 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 %endif7406 -else7405: - %t331 = load { ptr, i64, i64 }, ptr %a202 - store { ptr, i64, i64 } %t331, ptr %a332 - store { ptr, i64, i64 } { ptr @.str.4853, 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 %then7407, label %else7408 -then7407: - %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.4854, 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.4855, 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.4856, 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.4857, 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.4858, i64 1, i64 0 }, ptr %a366 - call void @finch_str_concat(ptr %a364, ptr %a365, ptr %a366) - %t367 = load { ptr, i64, i64 }, ptr %a364 - call void @finch.gen.emit(ptr %t349, { ptr, i64, i64 } %t367) - br label %endif7409 -else7408: - %t368 = load { ptr, i64, i64 }, ptr %a202 - store { ptr, i64, i64 } %t368, ptr %a369 - store { ptr, i64, i64 } { ptr @.str.4859, 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 %then7410, label %else7411 -then7410: - %t373 = load ptr, ptr %a1 - %t374 = load { ptr, i64, i64 }, ptr %a195 - call void @finch.gen.store(ptr %t373, { ptr, i64, i64 } { ptr @.str.4860, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4861, i64 15, i64 0 }, { ptr, i64, i64 } %t374) + store { ptr, i64, i64 } %t237, ptr %a249 + call void @finch_str_drop(ptr %a249) + store { ptr, i64, i64 } %t244, ptr %a250 + call void @finch_str_drop(ptr %a250) + %t251 = load { ptr, i64, i64 }, ptr %a246 + store { ptr, i64, i64 } %t251, ptr %a253 + store { ptr, i64, i64 } { ptr @.str.5011, i64 1, i64 0 }, ptr %a254 + call void @finch_str_concat(ptr %a252, ptr %a253, ptr %a254) + store { ptr, i64, i64 } %t251, ptr %a255 + call void @finch_str_drop(ptr %a255) + %t256 = load { ptr, i64, i64 }, ptr %a252 + call void @finch.gen.emit(ptr %t227, { ptr, i64, i64 } %t256) + store { ptr, i64, i64 } %t256, ptr %a257 + call void @finch_str_drop(ptr %a257) + br label %endif7777 +else7776: + %t258 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 + %t259 = load %S.ast.Type, ptr %t258 + %t260 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t259) + br i1 %t260, label %then7778, label %else7779 +then7778: + %t261 = load ptr, ptr %a1 + %t262 = load { ptr, i64, i64 }, ptr %a199 + store { ptr, i64, i64 } { ptr @.str.5012, i64 35, 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.5013, i64 6, i64 0 }, ptr %a269 + call void @finch_str_concat(ptr %a267, ptr %a268, ptr %a269) + store { ptr, i64, i64 } %t266, ptr %a270 + call void @finch_str_drop(ptr %a270) + %t271 = load { ptr, i64, i64 }, ptr %a267 + %t272 = load ptr, ptr %a1 + %t273 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 0 + %t274 = load { ptr, i64, i64 }, ptr %t273 + %t275 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 + %t276 = load %S.ast.Type, ptr %t275 + %t277 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5014, i64 3, i64 0 }) + %t278 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t272, { ptr, i64, i64 } %t274, %S.ast.Type %t276, %S.ast.Type %t277) + store %S.ast.Type %t277, ptr %a279 + call void @finch.drop.S_ast_Type(ptr %a279) + store { ptr, i64, i64 } %t271, ptr %a281 + store { ptr, i64, i64 } %t278, ptr %a282 + call void @finch_str_concat(ptr %a280, ptr %a281, ptr %a282) + store { ptr, i64, i64 } %t271, ptr %a283 + call void @finch_str_drop(ptr %a283) + store { ptr, i64, i64 } %t278, ptr %a284 + call void @finch_str_drop(ptr %a284) + %t285 = load { ptr, i64, i64 }, ptr %a280 + store { ptr, i64, i64 } %t285, ptr %a287 + store { ptr, i64, i64 } { ptr @.str.5015, i64 1, i64 0 }, ptr %a288 + call void @finch_str_concat(ptr %a286, ptr %a287, ptr %a288) + store { ptr, i64, i64 } %t285, ptr %a289 + call void @finch_str_drop(ptr %a289) + %t290 = load { ptr, i64, i64 }, ptr %a286 + call void @finch.gen.emit(ptr %t261, { ptr, i64, i64 } %t290) + store { ptr, i64, i64 } %t290, ptr %a291 + call void @finch_str_drop(ptr %a291) + br label %endif7780 +else7779: + %t292 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 + %t293 = load %S.ast.Type, ptr %t292 + %t294 = call i1 @finch.gen.isFloat(%S.ast.Type %t293) + br i1 %t294, label %then7781, label %else7782 +then7781: + %t295 = load ptr, ptr %a1 + %t296 = load { ptr, i64, i64 }, ptr %a199 + store { ptr, i64, i64 } { ptr @.str.5016, i64 36, i64 0 }, ptr %a298 + store { ptr, i64, i64 } %t296, ptr %a299 + 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.5017, i64 9, i64 0 }, ptr %a303 + call void @finch_str_concat(ptr %a301, ptr %a302, ptr %a303) + store { ptr, i64, i64 } %t300, ptr %a304 + call void @finch_str_drop(ptr %a304) + %t305 = load { ptr, i64, i64 }, ptr %a301 + %t306 = load ptr, ptr %a1 + %t307 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 0 + %t308 = load { ptr, i64, i64 }, ptr %t307 + %t309 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 + %t310 = load %S.ast.Type, ptr %t309 + %t311 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5018, i64 5, i64 0 }) + %t312 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t306, { ptr, i64, i64 } %t308, %S.ast.Type %t310, %S.ast.Type %t311) + store %S.ast.Type %t311, ptr %a313 + call void @finch.drop.S_ast_Type(ptr %a313) + store { ptr, i64, i64 } %t305, ptr %a315 + store { ptr, i64, i64 } %t312, ptr %a316 + call void @finch_str_concat(ptr %a314, ptr %a315, ptr %a316) + store { ptr, i64, i64 } %t305, ptr %a317 + call void @finch_str_drop(ptr %a317) + store { ptr, i64, i64 } %t312, ptr %a318 + call void @finch_str_drop(ptr %a318) + %t319 = load { ptr, i64, i64 }, ptr %a314 + store { ptr, i64, i64 } %t319, ptr %a321 + store { ptr, i64, i64 } { ptr @.str.5019, i64 1, i64 0 }, ptr %a322 + call void @finch_str_concat(ptr %a320, ptr %a321, ptr %a322) + store { ptr, i64, i64 } %t319, ptr %a323 + call void @finch_str_drop(ptr %a323) + %t324 = load { ptr, i64, i64 }, ptr %a320 + call void @finch.gen.emit(ptr %t295, { ptr, i64, i64 } %t324) + store { ptr, i64, i64 } %t324, ptr %a325 + call void @finch_str_drop(ptr %a325) + br label %endif7783 +else7782: + %t326 = load { ptr, i64, i64 }, ptr %a206 + store { ptr, i64, i64 } %t326, ptr %a327 + store { ptr, i64, i64 } { ptr @.str.5020, i64 4, i64 0 }, ptr %a328 + %t329 = call i32 @finch_str_eq(ptr %a327, ptr %a328) + %t330 = icmp ne i32 %t329, 0 + br i1 %t330, label %then7784, label %else7785 +then7784: + %t331 = load ptr, ptr %a1 + %t332 = load { ptr, i64, i64 }, ptr %a199 + store { ptr, i64, i64 } { ptr @.str.5021, i64 35, i64 0 }, ptr %a334 + store { ptr, i64, i64 } %t332, 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 %a338 + store { ptr, i64, i64 } { ptr @.str.5022, i64 13, i64 0 }, ptr %a339 + call void @finch_str_concat(ptr %a337, ptr %a338, ptr %a339) + store { ptr, i64, i64 } %t336, ptr %a340 + call void @finch_str_drop(ptr %a340) + %t341 = load { ptr, i64, i64 }, ptr %a337 + %t342 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 0 + %t343 = load { ptr, i64, i64 }, ptr %t342 + store { ptr, i64, i64 } %t341, ptr %a345 + store { ptr, i64, i64 } %t343, ptr %a346 + call void @finch_str_concat(ptr %a344, ptr %a345, ptr %a346) + store { ptr, i64, i64 } %t341, ptr %a347 + call void @finch_str_drop(ptr %a347) + %t348 = load { ptr, i64, i64 }, ptr %a344 + store { ptr, i64, i64 } %t348, ptr %a350 + store { ptr, i64, i64 } { ptr @.str.5023, i64 1, i64 0 }, ptr %a351 + call void @finch_str_concat(ptr %a349, ptr %a350, ptr %a351) + store { ptr, i64, i64 } %t348, ptr %a352 + call void @finch_str_drop(ptr %a352) + %t353 = load { ptr, i64, i64 }, ptr %a349 + call void @finch.gen.emit(ptr %t331, { ptr, i64, i64 } %t353) + store { ptr, i64, i64 } %t353, ptr %a354 + call void @finch_str_drop(ptr %a354) + br label %endif7786 +else7785: + %t355 = load { ptr, i64, i64 }, ptr %a206 + store { ptr, i64, i64 } %t355, ptr %a356 + store { ptr, i64, i64 } { ptr @.str.5024, i64 4, i64 0 }, ptr %a357 + %t358 = call i32 @finch_str_eq(ptr %a356, ptr %a357) + %t359 = icmp ne i32 %t358, 0 + br i1 %t359, label %then7787, label %else7788 +then7787: + %t360 = load ptr, ptr %a1 + %t361 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 0 + %t362 = load { ptr, i64, i64 }, ptr %t361 + store { ptr, i64, i64 } { ptr @.str.5025, i64 8, i64 0 }, ptr %a364 + store { ptr, i64, i64 } %t362, 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 %a368 + store { ptr, i64, i64 } { ptr @.str.5026, i64 7, i64 0 }, ptr %a369 + call void @finch_str_concat(ptr %a367, ptr %a368, ptr %a369) + store { ptr, i64, i64 } %t366, ptr %a370 + call void @finch_str_drop(ptr %a370) + %t371 = load { ptr, i64, i64 }, ptr %a367 + %t372 = call { ptr, i64, i64 } @finch.gen.op(ptr %t360, { ptr, i64, i64 } %t371) + store { ptr, i64, i64 } %t371, ptr %a373 + call void @finch_str_drop(ptr %a373) + store { ptr, i64, i64 } %t372, ptr %a374 %t375 = load ptr, ptr %a1 - %t376 = load { ptr, i64, i64 }, ptr %a195 - store { ptr, i64, i64 } { ptr @.str.4862, i64 32, i64 0 }, ptr %a378 + %t376 = load { ptr, i64, i64 }, ptr %a199 + store { ptr, i64, i64 } { ptr @.str.5027, i64 35, 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.4863, i64 6, i64 0 }, ptr %a383 + store { ptr, i64, i64 } { ptr @.str.5028, 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 } %t380, ptr %a384 + call void @finch_str_drop(ptr %a384) + %t385 = load { ptr, i64, i64 }, ptr %a381 + %t386 = load { ptr, i64, i64 }, ptr %a374 + store { ptr, i64, i64 } %t385, 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.4864, 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 %endif7412 -else7411: - %t395 = load { ptr, i64, i64 }, ptr %a202 - store { ptr, i64, i64 } %t395, ptr %a396 - store { ptr, i64, i64 } { ptr @.str.4865, 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.from7413 -logic.from7413: - br i1 %t399, label %logic.rhs7414, label %logic.end7415 -logic.rhs7414: - %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 %range7416, label %inrange7417 -range7416: - call void @finch_panic_index(ptr @.str.4866, i64 4364, i64 0, i64 %t403) + store { ptr, i64, i64 } %t385, ptr %a390 + call void @finch_str_drop(ptr %a390) + %t391 = load { ptr, i64, i64 }, ptr %a387 + store { ptr, i64, i64 } %t391, ptr %a393 + store { ptr, i64, i64 } { ptr @.str.5029, i64 1, i64 0 }, ptr %a394 + call void @finch_str_concat(ptr %a392, ptr %a393, ptr %a394) + store { ptr, i64, i64 } %t391, ptr %a395 + call void @finch_str_drop(ptr %a395) + %t396 = load { ptr, i64, i64 }, ptr %a392 + call void @finch.gen.emit(ptr %t375, { ptr, i64, i64 } %t396) + store { ptr, i64, i64 } %t396, ptr %a397 + call void @finch_str_drop(ptr %a397) + call void @finch_str_drop(ptr %a374) + br label %endif7789 +else7788: + %t398 = load { ptr, i64, i64 }, ptr %a206 + store { ptr, i64, i64 } %t398, ptr %a399 + store { ptr, i64, i64 } { ptr @.str.5030, i64 3, i64 0 }, ptr %a400 + %t401 = call i32 @finch_str_eq(ptr %a399, ptr %a400) + %t402 = icmp ne i32 %t401, 0 + br i1 %t402, label %then7790, label %else7791 +then7790: + %t403 = load ptr, ptr %a1 + %t404 = load { ptr, i64, i64 }, ptr %a199 + call void @finch.gen.store(ptr %t403, { ptr, i64, i64 } { ptr @.str.5031, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5032, i64 15, i64 0 }, { ptr, i64, i64 } %t404) + %t405 = load ptr, ptr %a1 + %t406 = load { ptr, i64, i64 }, ptr %a199 + store { ptr, i64, i64 } { ptr @.str.5033, i64 32, 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.5034, i64 6, i64 0 }, ptr %a413 + call void @finch_str_concat(ptr %a411, ptr %a412, ptr %a413) + store { ptr, i64, i64 } %t410, ptr %a414 + call void @finch_str_drop(ptr %a414) + %t415 = load { ptr, i64, i64 }, ptr %a411 + %t416 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 0 + %t417 = load { ptr, i64, i64 }, ptr %t416 + store { ptr, i64, i64 } %t415, ptr %a419 + store { ptr, i64, i64 } %t417, ptr %a420 + call void @finch_str_concat(ptr %a418, ptr %a419, ptr %a420) + store { ptr, i64, i64 } %t415, ptr %a421 + call void @finch_str_drop(ptr %a421) + %t422 = load { ptr, i64, i64 }, ptr %a418 + store { ptr, i64, i64 } %t422, ptr %a424 + store { ptr, i64, i64 } { ptr @.str.5035, i64 1, i64 0 }, ptr %a425 + call void @finch_str_concat(ptr %a423, ptr %a424, ptr %a425) + store { ptr, i64, i64 } %t422, ptr %a426 + call void @finch_str_drop(ptr %a426) + %t427 = load { ptr, i64, i64 }, ptr %a423 + call void @finch.gen.emit(ptr %t405, { ptr, i64, i64 } %t427) + store { ptr, i64, i64 } %t427, ptr %a428 + call void @finch_str_drop(ptr %a428) + store i1 true, ptr %a207 + br label %endif7792 +else7791: + %t429 = load { ptr, i64, i64 }, ptr %a206 + store { ptr, i64, i64 } %t429, ptr %a430 + store { ptr, i64, i64 } { ptr @.str.5036, i64 5, i64 0 }, ptr %a431 + %t432 = call i32 @finch_str_eq(ptr %a430, ptr %a431) + %t433 = icmp ne i32 %t432, 0 + br label %logic.from7793 +logic.from7793: + br i1 %t433, label %logic.rhs7794, label %logic.end7795 +logic.rhs7794: + %t434 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 + %t435 = getelementptr inbounds %S.ast.Type, ptr %t434, i32 0, i32 1 + %t436 = load { ptr, i64, i64 }, ptr %t435 + %t437 = extractvalue { ptr, i64, i64 } %t436, 1 + %t438 = icmp uge i64 0, %t437 + br i1 %t438, label %range7796, label %inrange7797 +range7796: + call void @finch_panic_index(ptr @.str.5037, i64 4671, i64 0, i64 %t437) unreachable -inrange7417: - %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.4867, 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.from7418 -logic.from7418: - br i1 %t412, label %logic.end7420, label %logic.rhs7419 -logic.rhs7419: - %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 %range7421, label %inrange7422 -range7421: - call void @finch_panic_index(ptr @.str.4868, i64 4364, i64 0, i64 %t416) +inrange7797: + %t439 = extractvalue { ptr, i64, i64 } %t436, 0 + %t440 = getelementptr inbounds %S.ast.Type, ptr %t439, i64 0 + %t441 = getelementptr inbounds %S.ast.Type, ptr %t440, i32 0, i32 0 + %t442 = load { ptr, i64, i64 }, ptr %t441 + store { ptr, i64, i64 } %t442, ptr %a443 + store { ptr, i64, i64 } { ptr @.str.5038, i64 2, i64 0 }, ptr %a444 + %t445 = call i32 @finch_str_eq(ptr %a443, ptr %a444) + %t446 = icmp ne i32 %t445, 0 + br label %logic.from7798 +logic.from7798: + br i1 %t446, label %logic.end7800, label %logic.rhs7799 +logic.rhs7799: + %t447 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 + %t448 = getelementptr inbounds %S.ast.Type, ptr %t447, i32 0, i32 1 + %t449 = load { ptr, i64, i64 }, ptr %t448 + %t450 = extractvalue { ptr, i64, i64 } %t449, 1 + %t451 = icmp uge i64 0, %t450 + br i1 %t451, label %range7801, label %inrange7802 +range7801: + call void @finch_panic_index(ptr @.str.5039, i64 4671, i64 0, i64 %t450) unreachable -inrange7422: - %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.4869, 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.rend7423 -logic.rend7423: - br label %logic.end7420 -logic.end7420: - %t426 = phi i1 [ true, %logic.from7418 ], [ %t425, %logic.rend7423 ] - br label %logic.rend7424 -logic.rend7424: - br label %logic.end7415 -logic.end7415: - %t427 = phi i1 [ false, %logic.from7413 ], [ %t426, %logic.rend7424 ] - br i1 %t427, label %then7425, label %else7426 -then7425: - %t428 = load ptr, ptr %a1 - %t429 = load { ptr, i64, i64 }, ptr %a195 - call void @finch.gen.store(ptr %t428, { ptr, i64, i64 } { ptr @.str.4870, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4871, 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.4872, 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.4873, 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.4874, 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 %endif7427 -else7426: - %t451 = load { ptr, i64, i64 }, ptr %a202 - store { ptr, i64, i64 } %t451, ptr %a452 - store { ptr, i64, i64 } { ptr @.str.4875, 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.from7428 -logic.from7428: - br i1 %t455, label %logic.end7430, label %logic.rhs7429 -logic.rhs7429: - %t456 = load { ptr, i64, i64 }, ptr %a202 - store { ptr, i64, i64 } %t456, ptr %a457 - store { ptr, i64, i64 } { ptr @.str.4876, 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.rend7431 -logic.rend7431: - br label %logic.end7430 -logic.end7430: - %t461 = phi i1 [ true, %logic.from7428 ], [ %t460, %logic.rend7431 ] - br label %logic.from7432 -logic.from7432: - br i1 %t461, label %logic.end7434, label %logic.rhs7433 -logic.rhs7433: - %t462 = load { ptr, i64, i64 }, ptr %a202 - store { ptr, i64, i64 } %t462, ptr %a463 - store { ptr, i64, i64 } { ptr @.str.4877, 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.rend7435 -logic.rend7435: - br label %logic.end7434 -logic.end7434: - %t467 = phi i1 [ true, %logic.from7432 ], [ %t466, %logic.rend7435 ] - br label %logic.from7436 -logic.from7436: - br i1 %t467, label %logic.end7438, label %logic.rhs7437 -logic.rhs7437: - %t468 = load { ptr, i64, i64 }, ptr %a202 - store { ptr, i64, i64 } %t468, ptr %a469 - store { ptr, i64, i64 } { ptr @.str.4878, 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.rend7439 -logic.rend7439: - br label %logic.end7438 -logic.end7438: - %t473 = phi i1 [ true, %logic.from7436 ], [ %t472, %logic.rend7439 ] - br label %logic.from7440 -logic.from7440: - br i1 %t473, label %logic.end7442, label %logic.rhs7441 -logic.rhs7441: - %t474 = load { ptr, i64, i64 }, ptr %a202 - store { ptr, i64, i64 } %t474, ptr %a475 - store { ptr, i64, i64 } { ptr @.str.4879, 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.rend7443 -logic.rend7443: - br label %logic.end7442 -logic.end7442: - %t479 = phi i1 [ true, %logic.from7440 ], [ %t478, %logic.rend7443 ] - br label %logic.from7444 -logic.from7444: - br i1 %t479, label %logic.end7446, label %logic.rhs7445 -logic.rhs7445: - %t480 = load { ptr, i64, i64 }, ptr %a202 - store { ptr, i64, i64 } %t480, ptr %a481 - store { ptr, i64, i64 } { ptr @.str.4880, 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.rend7447 -logic.rend7447: - br label %logic.end7446 -logic.end7446: - %t485 = phi i1 [ true, %logic.from7444 ], [ %t484, %logic.rend7447 ] - br i1 %t485, label %then7448, label %else7449 -then7448: - %t486 = load ptr, ptr %a1 - %t487 = load { ptr, i64, i64 }, ptr %a195 - call void @finch.gen.store(ptr %t486, { ptr, i64, i64 } { ptr @.str.4881, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4882, 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 %endif7450 -else7449: - %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 %range7451, label %inrange7452 -range7451: - call void @finch_panic_index(ptr @.str.4883, i64 4372, i64 0, i64 %t497) - unreachable -inrange7452: - %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.4884, 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.4885, 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 %endif7450 -endif7450: - br label %endif7427 -endif7427: - br label %endif7412 -endif7412: - br label %endif7409 -endif7409: - br label %endif7406 -endif7406: - br label %endif7403 -endif7403: - br label %endif7400 -endif7400: - br label %endif7397 -endif7397: - br label %endif7394 -endif7394: - %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.4886, 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.4887, 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 -endif7389: - %t520 = load { ptr, i64, i64 }, ptr %a8 - %t521 = call { ptr, i64, i64 } @finch.gen.numType({ ptr, i64, i64 } %t520) +inrange7802: + %t452 = extractvalue { ptr, i64, i64 } %t449, 0 + %t453 = getelementptr inbounds %S.ast.Type, ptr %t452, i64 0 + %t454 = getelementptr inbounds %S.ast.Type, ptr %t453, i32 0, i32 0 + %t455 = load { ptr, i64, i64 }, ptr %t454 + store { ptr, i64, i64 } %t455, ptr %a456 + store { ptr, i64, i64 } { ptr @.str.5040, i64 4, i64 0 }, ptr %a457 + %t458 = call i32 @finch_str_eq(ptr %a456, ptr %a457) + %t459 = icmp ne i32 %t458, 0 + br label %logic.rend7803 +logic.rend7803: + br label %logic.end7800 +logic.end7800: + %t460 = phi i1 [ true, %logic.from7798 ], [ %t459, %logic.rend7803 ] + br label %logic.rend7804 +logic.rend7804: + br label %logic.end7795 +logic.end7795: + %t461 = phi i1 [ false, %logic.from7793 ], [ %t460, %logic.rend7804 ] + br i1 %t461, label %then7805, label %else7806 +then7805: + %t462 = load ptr, ptr %a1 + %t463 = load { ptr, i64, i64 }, ptr %a199 + call void @finch.gen.store(ptr %t462, { ptr, i64, i64 } { ptr @.str.5041, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5042, i64 15, i64 0 }, { ptr, i64, i64 } %t463) + %t464 = load ptr, ptr %a1 + %t465 = load { ptr, i64, i64 }, ptr %a199 + store { ptr, i64, i64 } { ptr @.str.5043, i64 36, i64 0 }, ptr %a467 + store { ptr, i64, i64 } %t465, ptr %a468 + 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.5044, i64 6, i64 0 }, ptr %a472 + call void @finch_str_concat(ptr %a470, ptr %a471, ptr %a472) + store { ptr, i64, i64 } %t469, ptr %a473 + call void @finch_str_drop(ptr %a473) + %t474 = load { ptr, i64, i64 }, ptr %a470 + %t475 = load ptr, ptr %a1 + %t476 = load %S.gen.Val, ptr %a196 + %t477 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t475, %S.gen.Val %t476) + store { ptr, i64, i64 } %t474, ptr %a479 + store { ptr, i64, i64 } %t477, ptr %a480 + call void @finch_str_concat(ptr %a478, ptr %a479, ptr %a480) + store { ptr, i64, i64 } %t474, ptr %a481 + call void @finch_str_drop(ptr %a481) + store { ptr, i64, i64 } %t477, ptr %a482 + call void @finch_str_drop(ptr %a482) + %t483 = load { ptr, i64, i64 }, ptr %a478 + store { ptr, i64, i64 } %t483, ptr %a485 + store { ptr, i64, i64 } { ptr @.str.5045, i64 1, i64 0 }, ptr %a486 + call void @finch_str_concat(ptr %a484, ptr %a485, ptr %a486) + store { ptr, i64, i64 } %t483, ptr %a487 + call void @finch_str_drop(ptr %a487) + %t488 = load { ptr, i64, i64 }, ptr %a484 + call void @finch.gen.emit(ptr %t464, { ptr, i64, i64 } %t488) + store { ptr, i64, i64 } %t488, ptr %a489 + call void @finch_str_drop(ptr %a489) + %t490 = load ptr, ptr %a1 + %t491 = load %S.gen.Val, ptr %a196 + call void @finch.gen.release(ptr %t490, %S.gen.Val %t491) + br label %endif7807 +else7806: + %t492 = load { ptr, i64, i64 }, ptr %a206 + store { ptr, i64, i64 } %t492, ptr %a493 + store { ptr, i64, i64 } { ptr @.str.5046, i64 4, i64 0 }, ptr %a494 + %t495 = call i32 @finch_str_eq(ptr %a493, ptr %a494) + %t496 = icmp ne i32 %t495, 0 + br label %logic.from7808 +logic.from7808: + br i1 %t496, label %logic.end7810, label %logic.rhs7809 +logic.rhs7809: + %t497 = load { ptr, i64, i64 }, ptr %a206 + store { ptr, i64, i64 } %t497, ptr %a498 + store { ptr, i64, i64 } { ptr @.str.5047, i64 4, i64 0 }, ptr %a499 + %t500 = call i32 @finch_str_eq(ptr %a498, ptr %a499) + %t501 = icmp ne i32 %t500, 0 + br label %logic.rend7811 +logic.rend7811: + br label %logic.end7810 +logic.end7810: + %t502 = phi i1 [ true, %logic.from7808 ], [ %t501, %logic.rend7811 ] + br label %logic.from7812 +logic.from7812: + br i1 %t502, label %logic.end7814, label %logic.rhs7813 +logic.rhs7813: + %t503 = load { ptr, i64, i64 }, ptr %a206 + store { ptr, i64, i64 } %t503, ptr %a504 + store { ptr, i64, i64 } { ptr @.str.5048, i64 5, i64 0 }, ptr %a505 + %t506 = call i32 @finch_str_eq(ptr %a504, ptr %a505) + %t507 = icmp ne i32 %t506, 0 + br label %logic.rend7815 +logic.rend7815: + br label %logic.end7814 +logic.end7814: + %t508 = phi i1 [ true, %logic.from7812 ], [ %t507, %logic.rend7815 ] + br label %logic.from7816 +logic.from7816: + br i1 %t508, label %logic.end7818, label %logic.rhs7817 +logic.rhs7817: + %t509 = load { ptr, i64, i64 }, ptr %a206 + store { ptr, i64, i64 } %t509, ptr %a510 + store { ptr, i64, i64 } { ptr @.str.5049, i64 3, i64 0 }, ptr %a511 + %t512 = call i32 @finch_str_eq(ptr %a510, ptr %a511) + %t513 = icmp ne i32 %t512, 0 + br label %logic.rend7819 +logic.rend7819: + br label %logic.end7818 +logic.end7818: + %t514 = phi i1 [ true, %logic.from7816 ], [ %t513, %logic.rend7819 ] + br label %logic.from7820 +logic.from7820: + br i1 %t514, label %logic.end7822, label %logic.rhs7821 +logic.rhs7821: + %t515 = load { ptr, i64, i64 }, ptr %a206 + store { ptr, i64, i64 } %t515, ptr %a516 + store { ptr, i64, i64 } { ptr @.str.5050, i64 6, i64 0 }, ptr %a517 + %t518 = call i32 @finch_str_eq(ptr %a516, ptr %a517) + %t519 = icmp ne i32 %t518, 0 + br label %logic.rend7823 +logic.rend7823: + br label %logic.end7822 +logic.end7822: + %t520 = phi i1 [ true, %logic.from7820 ], [ %t519, %logic.rend7823 ] + br label %logic.from7824 +logic.from7824: + br i1 %t520, label %logic.end7826, label %logic.rhs7825 +logic.rhs7825: + %t521 = load { ptr, i64, i64 }, ptr %a206 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 %then7453, label %endif7455 -then7453: - %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 -endif7455: - %t531 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t531, ptr %a532 - store { ptr, i64, i64 } { ptr @.str.4888, 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.from7456 -logic.from7456: - br i1 %t535, label %logic.end7458, label %logic.rhs7457 -logic.rhs7457: - %t536 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t536, ptr %a537 - store { ptr, i64, i64 } { ptr @.str.4889, 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.rend7459 -logic.rend7459: - br label %logic.end7458 -logic.end7458: - %t541 = phi i1 [ true, %logic.from7456 ], [ %t540, %logic.rend7459 ] - br i1 %t541, label %then7460, label %endif7462 -then7460: - %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 %range7463, label %inrange7464 -range7463: - call void @finch_panic_index(ptr @.str.4890, i64 4382, i64 0, i64 %t549) + store { ptr, i64, i64 } { ptr @.str.5051, i64 4, i64 0 }, ptr %a523 + %t524 = call i32 @finch_str_eq(ptr %a522, ptr %a523) + %t525 = icmp ne i32 %t524, 0 + br label %logic.rend7827 +logic.rend7827: + br label %logic.end7826 +logic.end7826: + %t526 = phi i1 [ true, %logic.from7824 ], [ %t525, %logic.rend7827 ] + br i1 %t526, label %then7828, label %else7829 +then7828: + %t527 = load ptr, ptr %a1 + %t528 = load { ptr, i64, i64 }, ptr %a199 + call void @finch.gen.store(ptr %t527, { ptr, i64, i64 } { ptr @.str.5052, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5053, i64 15, i64 0 }, { ptr, i64, i64 } %t528) + %t529 = load ptr, ptr %a1 + %t530 = load { ptr, i64, i64 }, ptr %a199 + %t531 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 0 + %t532 = load { ptr, i64, i64 }, ptr %t531 + %t533 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 + %t534 = load %S.ast.Type, ptr %t533 + call void @finch.gen.emitFormat(ptr %t529, { ptr, i64, i64 } %t530, { ptr, i64, i64 } %t532, %S.ast.Type %t534, i1 false) + %t535 = load ptr, ptr %a1 + %t536 = load %S.gen.Val, ptr %a196 + call void @finch.gen.release(ptr %t535, %S.gen.Val %t536) + br label %endif7830 +else7829: + %t537 = load ptr, ptr %a1 + %t538 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t539 = load { ptr, i64, i64 }, ptr %t538 + %t540 = extractvalue { ptr, i64, i64 } %t539, 1 + %t541 = icmp uge i64 0, %t540 + br i1 %t541, label %range7831, label %inrange7832 +range7831: + call void @finch_panic_index(ptr @.str.5054, i64 4681, i64 0, i64 %t540) unreachable -inrange7464: - %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.4891, 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 +inrange7832: + %t542 = extractvalue { ptr, i64, i64 } %t539, 0 + %t543 = getelementptr inbounds %S.ast.Node, ptr %t542, i64 0 + %t544 = load %S.ast.Node, ptr %t543 + %t545 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 + %t546 = load %S.ast.Type, ptr %t545 + %t547 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t546) + store { ptr, i64, i64 } { ptr @.str.5055, i64 11, i64 0 }, ptr %a549 + store { ptr, i64, i64 } %t547, ptr %a550 + call void @finch_str_concat(ptr %a548, ptr %a549, ptr %a550) + store { ptr, i64, i64 } %t547, ptr %a551 + call void @finch_str_drop(ptr %a551) + %t552 = load { ptr, i64, i64 }, ptr %a548 + store { ptr, i64, i64 } %t552, ptr %a554 + store { ptr, i64, i64 } { ptr @.str.5056, i64 9, i64 0 }, ptr %a555 + call void @finch_str_concat(ptr %a553, ptr %a554, ptr %a555) + store { ptr, i64, i64 } %t552, ptr %a556 + call void @finch_str_drop(ptr %a556) + %t557 = load { ptr, i64, i64 }, ptr %a553 + call void @finch.gen.fail(ptr %t537, %S.ast.Node %t544, { ptr, i64, i64 } %t557) store { ptr, i64, i64 } %t557, ptr %a558 - store { ptr, i64, i64 } { ptr @.str.4892, 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 %then7465, label %endif7467 -then7465: - %t562 = load ptr, ptr %a1 - %t563 = load { ptr, i64, i64 }, ptr %a556 - store { ptr, i64, i64 } { ptr @.str.4893, 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.4894, 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 + call void @finch_str_drop(ptr %a558) + br label %endif7830 +endif7830: + br label %endif7807 +endif7807: + br label %endif7792 +endif7792: + br label %endif7789 +endif7789: + br label %endif7786 +endif7786: + br label %endif7783 +endif7783: + br label %endif7780 +endif7780: + br label %endif7777 +endif7777: + br label %endif7774 +endif7774: + %t559 = load ptr, ptr %a1 + %t560 = load { ptr, i64, i64 }, ptr %a199 + %t561 = call { ptr, i64, i64 } @finch.gen.load(ptr %t559, { ptr, i64, i64 } { ptr @.str.5057, i64 17, i64 0 }, { 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.5058, i64 3, i64 0 }) + %t564 = insertvalue %S.gen.Val %t562, %S.ast.Type %t563, 1 + %t565 = load i1, ptr %a207 + %t566 = xor i1 %t565, true + %t567 = insertvalue %S.gen.Val %t564, i1 %t566, 2 + call void @finch_str_drop(ptr %a206) + call void @finch_str_drop(ptr %a199) + call void @finch.drop.S_gen_Val(ptr %a196) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t567 +endif7769: + %t568 = load { ptr, i64, i64 }, ptr %a8 + %t569 = call { ptr, i64, i64 } @finch.gen.numType({ ptr, i64, i64 } %t568) + store { ptr, i64, i64 } %t569, ptr %a570 + %t571 = getelementptr inbounds { ptr, i64, i64 }, ptr %a570, i32 0, i32 1 + %t572 = load i64, ptr %t571 + %t573 = icmp sgt i64 %t572, 0 + br i1 %t573, label %then7833, label %endif7835 +then7833: %t574 = load ptr, ptr %a1 - %t575 = load { ptr, i64, i64 }, ptr %a573 - store { ptr, i64, i64 } { ptr @.str.4895, 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.4896, 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.4897, i64 4, i64 0 }) - %t587 = insertvalue %S.gen.Val %t585, %S.ast.Type %t586, 1 - ret %S.gen.Val %t587 -endif7467: - %t588 = load ptr, ptr %a1 - %t589 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t588) - store { ptr, i64, i64 } %t589, ptr %a590 + %t575 = load %S.ast.Node, ptr %a2 + %t576 = load { ptr, i64, i64 }, ptr %a570 + %t577 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } %t576) + %t578 = call %S.gen.Val @finch.gen.convert(ptr %t574, %S.ast.Node %t575, %S.ast.Type %t577) + store %S.ast.Type %t577, ptr %a579 + call void @finch.drop.S_ast_Type(ptr %a579) + call void @finch_str_drop(ptr %a570) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t578 +endif7835: + %t580 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t580, ptr %a581 + store { ptr, i64, i64 } { ptr @.str.5059, i64 9, i64 0 }, ptr %a582 + %t583 = call i32 @finch_str_eq(ptr %a581, ptr %a582) + %t584 = icmp ne i32 %t583, 0 + br label %logic.from7836 +logic.from7836: + br i1 %t584, label %logic.end7838, label %logic.rhs7837 +logic.rhs7837: + %t585 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t585, ptr %a586 + store { ptr, i64, i64 } { ptr @.str.5060, i64 11, i64 0 }, ptr %a587 + %t588 = call i32 @finch_str_eq(ptr %a586, ptr %a587) + %t589 = icmp ne i32 %t588, 0 + br label %logic.rend7839 +logic.rend7839: + br label %logic.end7838 +logic.end7838: + %t590 = phi i1 [ true, %logic.from7836 ], [ %t589, %logic.rend7839 ] + br i1 %t590, label %then7840, label %endif7842 +then7840: %t591 = load ptr, ptr %a1 - %t592 = icmp eq ptr %t591, null - br i1 %t592, label %panic7468, label %ok7469 -panic7468: - call void @finch_panic(ptr @.str.4898, i64 4388, ptr @.str.4899) + %t592 = load %S.ast.Node, ptr %a2 + %t593 = load { ptr, i64, i64 }, ptr %a8 + call void @finch.gen.checkArgs(ptr %t591, %S.ast.Node %t592, i64 0, i64 1, { ptr, i64, i64 } %t593) + %t594 = load ptr, ptr %a1 + %t595 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t596 = load { ptr, i64, i64 }, ptr %t595 + %t597 = extractvalue { ptr, i64, i64 } %t596, 1 + %t598 = icmp uge i64 0, %t597 + br i1 %t598, label %range7843, label %inrange7844 +range7843: + call void @finch_panic_index(ptr @.str.5061, i64 4691, i64 0, i64 %t597) unreachable -ok7469: - %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 } %t596, ptr %a598 - %t599 = call i32 @finch_str_eq(ptr %a597, ptr %a598) - %t600 = icmp ne i32 %t599, 0 - br i1 %t600, label %then7470, label %endif7472 -then7470: - %t601 = load ptr, ptr %a1 - %t602 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t601, { ptr, i64, i64 } { ptr @.str.4900, i64 17, i64 0 }) - store { ptr, i64, i64 } %t602, ptr %a603 +inrange7844: + %t599 = extractvalue { ptr, i64, i64 } %t596, 0 + %t600 = getelementptr inbounds %S.ast.Node, ptr %t599, i64 0 + %t601 = load %S.ast.Node, ptr %t600 + %t602 = call %S.gen.Val @finch.gen.strArg(ptr %t594, %S.ast.Node %t601, { ptr, i64, i64 } { ptr @.str.5062, i64 13, i64 0 }) + store %S.gen.Val %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.4901, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4902, 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.4903, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4904, 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.4905, 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.4906, 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 + %t605 = load %S.gen.Val, ptr %a603 + %t606 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t604, %S.gen.Val %t605) + store { ptr, i64, i64 } %t606, ptr %a607 + %t608 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t608, ptr %a609 + store { ptr, i64, i64 } { ptr @.str.5063, i64 11, i64 0 }, ptr %a610 + %t611 = call i32 @finch_str_eq(ptr %a609, ptr %a610) + %t612 = icmp ne i32 %t611, 0 + br i1 %t612, label %then7845, label %endif7847 +then7845: + %t613 = load ptr, ptr %a1 + %t614 = load { ptr, i64, i64 }, ptr %a607 + store { ptr, i64, i64 } { ptr @.str.5064, i64 32, 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.5065, i64 1, i64 0 }, 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.4907, 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.4908, 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.4909, 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.4910, 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 %panic7473, label %ok7474 -panic7473: - call void @finch_panic(ptr @.str.4911, i64 4393, ptr @.str.4912) + store { ptr, i64, i64 } %t618, ptr %a622 + call void @finch_str_drop(ptr %a622) + %t623 = load { ptr, i64, i64 }, ptr %a619 + %t624 = call { ptr, i64, i64 } @finch.gen.op(ptr %t613, { ptr, i64, i64 } %t623) + store { ptr, i64, i64 } %t623, ptr %a625 + call void @finch_str_drop(ptr %a625) + store { ptr, i64, i64 } %t624, ptr %a626 + %t627 = load ptr, ptr %a1 + %t628 = load %S.gen.Val, ptr %a603 + call void @finch.gen.release(ptr %t627, %S.gen.Val %t628) + %t629 = load ptr, ptr %a1 + %t630 = load { ptr, i64, i64 }, ptr %a626 + store { ptr, i64, i64 } { ptr @.str.5066, i64 12, i64 0 }, 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.5067, i64 3, i64 0 }, ptr %a637 + call void @finch_str_concat(ptr %a635, ptr %a636, ptr %a637) + store { ptr, i64, i64 } %t634, ptr %a638 + call void @finch_str_drop(ptr %a638) + %t639 = load { ptr, i64, i64 }, ptr %a635 + %t640 = call { ptr, i64, i64 } @finch.gen.op(ptr %t629, { ptr, i64, i64 } %t639) + store { ptr, i64, i64 } %t639, ptr %a641 + call void @finch_str_drop(ptr %a641) + %t642 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t640, 0 + %t643 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5068, i64 4, i64 0 }) + %t644 = insertvalue %S.gen.Val %t642, %S.ast.Type %t643, 1 + call void @finch_str_drop(ptr %a626) + call void @finch_str_drop(ptr %a607) + call void @finch.drop.S_gen_Val(ptr %a603) + call void @finch_str_drop(ptr %a570) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t644 +endif7847: + %t645 = load ptr, ptr %a1 + %t646 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t645) + store { ptr, i64, i64 } %t646, ptr %a647 + %t648 = load ptr, ptr %a1 + %t649 = icmp eq ptr %t648, null + br i1 %t649, label %panic7848, label %ok7849 +panic7848: + call void @finch_panic(ptr @.str.5069, i64 4699, ptr @.str.5070) unreachable -ok7474: - %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.4913, i64 17, i64 0 }, { ptr, i64, i64 } %t653) - %t655 = load ptr, ptr %a1 - %t656 = icmp eq ptr %t655, null - br i1 %t656, label %panic7475, label %ok7476 -panic7475: - call void @finch_panic(ptr @.str.4914, i64 4394, ptr @.str.4915) - unreachable -ok7476: - %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.4916, 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.4917, 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 -endif7472: - %t665 = load ptr, ptr %a1 +ok7849: + %t650 = getelementptr inbounds %S.gen.Gen, ptr %t648, i32 0, i32 40 + %t651 = load { ptr, i64, i64 }, ptr %t650 + %t652 = load %S.ast.Node, ptr %a2 + %t653 = call { ptr, i64, i64 } @finch.gen.nodeKey(%S.ast.Node %t652) + store { ptr, i64, i64 } %t651, ptr %a654 + store { ptr, i64, i64 } %t653, ptr %a655 + %t656 = call i32 @finch_str_eq(ptr %a654, ptr %a655) + %t657 = icmp ne i32 %t656, 0 + store { ptr, i64, i64 } %t653, ptr %a658 + call void @finch_str_drop(ptr %a658) + br i1 %t657, label %then7850, label %endif7852 +then7850: + %t659 = load ptr, ptr %a1 + %t660 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t659, { ptr, i64, i64 } { ptr @.str.5071, i64 17, i64 0 }) + store { ptr, i64, i64 } %t660, ptr %a661 + %t662 = load ptr, ptr %a1 + %t663 = load { ptr, i64, i64 }, ptr %a647 + call void @finch.gen.store(ptr %t662, { ptr, i64, i64 } { ptr @.str.5072, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5073, i64 15, i64 0 }, { ptr, i64, i64 } %t663) + %t664 = load ptr, ptr %a1 + %t665 = load { ptr, i64, i64 }, ptr %a661 + call void @finch.gen.store(ptr %t664, { ptr, i64, i64 } { ptr @.str.5074, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5075, i64 15, i64 0 }, { ptr, i64, i64 } %t665) %t666 = load ptr, ptr %a1 - %t667 = icmp eq ptr %t666, null - br i1 %t667, label %panic7477, label %ok7478 -panic7477: - call void @finch_panic(ptr @.str.4918, i64 4397, ptr @.str.4919) - unreachable -ok7478: - %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 %range7479, label %inrange7480 -range7479: - call void @finch_panic_index(ptr @.str.4920, i64 4397, i64 %t670, i64 %t672) - unreachable -inrange7480: - %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.4921, 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.4922, 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 + %t667 = load { ptr, i64, i64 }, ptr %a647 + store { ptr, i64, i64 } { ptr @.str.5076, i64 34, 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.5077, i64 6, i64 0 }, ptr %a674 + call void @finch_str_concat(ptr %a672, ptr %a673, ptr %a674) + store { ptr, i64, i64 } %t671, ptr %a675 + call void @finch_str_drop(ptr %a675) + %t676 = load { ptr, i64, i64 }, ptr %a672 + %t677 = load { ptr, i64, i64 }, ptr %a607 + store { ptr, i64, i64 } %t676, ptr %a679 + store { ptr, i64, i64 } %t677, ptr %a680 + call void @finch_str_concat(ptr %a678, ptr %a679, ptr %a680) + store { ptr, i64, i64 } %t676, ptr %a681 + call void @finch_str_drop(ptr %a681) + %t682 = load { ptr, i64, i64 }, ptr %a678 + store { ptr, i64, i64 } %t682, ptr %a684 + store { ptr, i64, i64 } { ptr @.str.5078, i64 6, i64 0 }, ptr %a685 + call void @finch_str_concat(ptr %a683, ptr %a684, ptr %a685) + store { ptr, i64, i64 } %t682, ptr %a686 + call void @finch_str_drop(ptr %a686) + %t687 = load { ptr, i64, i64 }, ptr %a683 + %t688 = load { ptr, i64, i64 }, ptr %a661 + store { ptr, i64, i64 } %t687, ptr %a690 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 + call void @finch_str_concat(ptr %a689, ptr %a690, ptr %a691) + store { ptr, i64, i64 } %t687, ptr %a692 + call void @finch_str_drop(ptr %a692) + %t693 = load { ptr, i64, i64 }, ptr %a689 store { ptr, i64, i64 } %t693, ptr %a695 - store { ptr, i64, i64 } { ptr @.str.4923, i64 6, i64 0 }, ptr %a696 + store { ptr, i64, i64 } { ptr @.str.5079, i64 1, 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.4924, 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.4925, 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.4926, 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.4927, 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 -endif7462: - %t726 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t693, ptr %a697 + call void @finch_str_drop(ptr %a697) + %t698 = load { ptr, i64, i64 }, ptr %a694 + %t699 = call { ptr, i64, i64 } @finch.gen.op(ptr %t666, { ptr, i64, i64 } %t698) + store { ptr, i64, i64 } %t698, ptr %a700 + call void @finch_str_drop(ptr %a700) + store { ptr, i64, i64 } %t699, ptr %a701 + %t702 = load ptr, ptr %a1 + %t703 = load { ptr, i64, i64 }, ptr %a701 + store { ptr, i64, i64 } { ptr @.str.5080, i64 12, i64 0 }, ptr %a705 + store { ptr, i64, i64 } %t703, ptr %a706 + call void @finch_str_concat(ptr %a704, ptr %a705, ptr %a706) + %t707 = load { ptr, i64, i64 }, ptr %a704 + store { ptr, i64, i64 } %t707, ptr %a709 + store { ptr, i64, i64 } { ptr @.str.5081, i64 3, i64 0 }, ptr %a710 + call void @finch_str_concat(ptr %a708, ptr %a709, ptr %a710) + store { ptr, i64, i64 } %t707, ptr %a711 + call void @finch_str_drop(ptr %a711) + %t712 = load { ptr, i64, i64 }, ptr %a708 + %t713 = call { ptr, i64, i64 } @finch.gen.op(ptr %t702, { ptr, i64, i64 } %t712) + store { ptr, i64, i64 } %t712, ptr %a714 + call void @finch_str_drop(ptr %a714) + %t715 = load ptr, ptr %a1 + %t716 = icmp eq ptr %t715, null + br i1 %t716, label %panic7853, label %ok7854 +panic7853: + call void @finch_panic(ptr @.str.5082, i64 4704, ptr @.str.5083) + unreachable +ok7854: + %t717 = getelementptr inbounds %S.gen.Gen, ptr %t715, i32 0, i32 41 + %t718 = load { ptr, i64, i64 }, ptr %t717 + store { ptr, i64, i64 } %t713, ptr %t717 + store { ptr, i64, i64 } %t718, ptr %a719 + call void @finch_str_drop(ptr %a719) + %t720 = load ptr, ptr %a1 + %t721 = load { ptr, i64, i64 }, ptr %a661 + %t722 = call { ptr, i64, i64 } @finch.gen.load(ptr %t720, { ptr, i64, i64 } { ptr @.str.5084, i64 17, i64 0 }, { ptr, i64, i64 } %t721) + %t723 = load ptr, ptr %a1 + %t724 = icmp eq ptr %t723, null + br i1 %t724, label %panic7855, label %ok7856 +panic7855: + call void @finch_panic(ptr @.str.5085, i64 4705, ptr @.str.5086) + unreachable +ok7856: + %t725 = getelementptr inbounds %S.gen.Gen, ptr %t723, i32 0, i32 42 + %t726 = load { ptr, i64, i64 }, ptr %t725 + store { ptr, i64, i64 } %t722, ptr %t725 store { ptr, i64, i64 } %t726, ptr %a727 - store { ptr, i64, i64 } { ptr @.str.4928, 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 %then7481, label %endif7483 -then7481: - %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 = 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 %range7484, label %inrange7485 -range7484: - call void @finch_panic_index(ptr @.str.4929, i64 4403, i64 0, i64 %t738) + call void @finch_str_drop(ptr %a727) + %t728 = load ptr, ptr %a1 + %t729 = load %S.gen.Val, ptr %a603 + call void @finch.gen.release(ptr %t728, %S.gen.Val %t729) + %t730 = load ptr, ptr %a1 + %t731 = load { ptr, i64, i64 }, ptr %a647 + %t732 = call { ptr, i64, i64 } @finch.gen.load(ptr %t730, { ptr, i64, i64 } { ptr @.str.5087, i64 17, i64 0 }, { ptr, i64, i64 } %t731) + %t733 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t732, 0 + %t734 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5088, i64 3, i64 0 }) + %t735 = insertvalue %S.gen.Val %t733, %S.ast.Type %t734, 1 + %t736 = insertvalue %S.gen.Val %t735, i1 true, 2 + call void @finch_str_drop(ptr %a701) + call void @finch_str_drop(ptr %a661) + call void @finch_str_drop(ptr %a647) + call void @finch_str_drop(ptr %a607) + call void @finch.drop.S_gen_Val(ptr %a603) + call void @finch_str_drop(ptr %a570) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t736 +endif7852: + %t737 = load ptr, ptr %a1 + %t738 = load ptr, ptr %a1 + %t739 = icmp eq ptr %t738, null + br i1 %t739, label %panic7857, label %ok7858 +panic7857: + call void @finch_panic(ptr @.str.5089, i64 4709, ptr @.str.5090) unreachable -inrange7485: - %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.4930, 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 %range7486, label %inrange7487 -range7486: - call void @finch_panic_index(ptr @.str.4931, i64 4404, i64 1, i64 %t750) +ok7858: + %t740 = getelementptr inbounds %S.gen.Gen, ptr %t738, i32 0, i32 1 + %t741 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 + %t742 = load i64, ptr %t741 + %t743 = load { ptr, i64, i64 }, ptr %t740 + %t744 = extractvalue { ptr, i64, i64 } %t743, 1 + %t745 = icmp uge i64 %t742, %t744 + br i1 %t745, label %range7859, label %inrange7860 +range7859: + call void @finch_panic_index(ptr @.str.5091, i64 4709, i64 %t742, i64 %t744) unreachable -inrange7487: - %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.4932, 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 %panic7488, label %ok7489 -panic7488: - call void @finch_panic(ptr @.str.4933, i64 4405, ptr @.str.4934) - unreachable -ok7489: - %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) +inrange7860: + %t746 = extractvalue { ptr, i64, i64 } %t743, 0 + %t747 = getelementptr inbounds { ptr, i64, i64 }, ptr %t746, i64 %t742 + %t748 = load { ptr, i64, i64 }, ptr %t747 + %t749 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t737, { ptr, i64, i64 } %t748) + store { ptr, i64, i64 } %t749, ptr %a750 + %t751 = load ptr, ptr %a1 + %t752 = load { ptr, i64, i64 }, ptr %a647 + store { ptr, i64, i64 } { ptr @.str.5092, i64 31, i64 0 }, ptr %a754 + store { ptr, i64, i64 } %t752, ptr %a755 + call void @finch_str_concat(ptr %a753, ptr %a754, ptr %a755) + %t756 = load { ptr, i64, i64 }, ptr %a753 + store { ptr, i64, i64 } %t756, ptr %a758 + store { ptr, i64, i64 } { ptr @.str.5093, i64 6, i64 0 }, ptr %a759 + call void @finch_str_concat(ptr %a757, ptr %a758, ptr %a759) + store { ptr, i64, i64 } %t756, ptr %a760 + call void @finch_str_drop(ptr %a760) + %t761 = load { ptr, i64, i64 }, ptr %a757 + %t762 = load { ptr, i64, i64 }, ptr %a607 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 %then7490, label %endif7492 -then7490: - %t768 = load ptr, ptr %a1 - %t769 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t768, { ptr, i64, i64 } { ptr @.str.4935, 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.4936, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4937, 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.4938, 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 } %t762, ptr %a765 + call void @finch_str_concat(ptr %a763, ptr %a764, ptr %a765) + store { ptr, i64, i64 } %t761, ptr %a766 + call void @finch_str_drop(ptr %a766) + %t767 = load { ptr, i64, i64 }, ptr %a763 + store { ptr, i64, i64 } %t767, ptr %a769 + store { ptr, i64, i64 } { ptr @.str.5094, i64 6, i64 0 }, ptr %a770 + call void @finch_str_concat(ptr %a768, ptr %a769, ptr %a770) + store { ptr, i64, i64 } %t767, ptr %a771 + call void @finch_str_drop(ptr %a771) + %t772 = load { ptr, i64, i64 }, ptr %a768 + %t773 = load { ptr, i64, i64 }, ptr %a750 + store { ptr, i64, i64 } %t772, ptr %a775 + store { ptr, i64, i64 } %t773, ptr %a776 + call void @finch_str_concat(ptr %a774, ptr %a775, ptr %a776) + store { ptr, i64, i64 } %t772, ptr %a777 + call void @finch_str_drop(ptr %a777) + %t778 = load { ptr, i64, i64 }, ptr %a774 store { ptr, i64, i64 } %t778, ptr %a780 - store { ptr, i64, i64 } { ptr @.str.4939, i64 6, i64 0 }, ptr %a781 + store { ptr, i64, i64 } { ptr @.str.5095, 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.4940, i64 6, i64 0 }, ptr %a790 + store { ptr, i64, i64 } %t778, ptr %a782 + call void @finch_str_drop(ptr %a782) + %t783 = load { ptr, i64, i64 }, ptr %a779 + %t784 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 + %t785 = load i64, ptr %t784 + call void @finch_str_from_int(ptr %a786, i64 %t785) + %t787 = load { ptr, i64, i64 }, ptr %a786 + store { ptr, i64, i64 } %t783, ptr %a789 + store { ptr, i64, i64 } %t787, 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.4941, 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.4942, 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.4943, 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) + store { ptr, i64, i64 } %t783, ptr %a791 + call void @finch_str_drop(ptr %a791) + store { ptr, i64, i64 } %t787, ptr %a792 + call void @finch_str_drop(ptr %a792) + %t793 = load { ptr, i64, i64 }, ptr %a788 + store { ptr, i64, i64 } %t793, ptr %a795 + store { ptr, i64, i64 } { ptr @.str.5096, i64 1, i64 0 }, ptr %a796 + call void @finch_str_concat(ptr %a794, ptr %a795, ptr %a796) + store { ptr, i64, i64 } %t793, ptr %a797 + call void @finch_str_drop(ptr %a797) + %t798 = load { ptr, i64, i64 }, ptr %a794 + call void @finch.gen.emit(ptr %t751, { ptr, i64, i64 } %t798) + store { ptr, i64, i64 } %t798, ptr %a799 + call void @finch_str_drop(ptr %a799) + %t800 = load ptr, ptr %a1 + %t801 = load %S.gen.Val, ptr %a603 + call void @finch.gen.release(ptr %t800, %S.gen.Val %t801) + %t802 = load ptr, ptr %a1 + %t803 = load { ptr, i64, i64 }, ptr %a647 + %t804 = call { ptr, i64, i64 } @finch.gen.load(ptr %t802, { ptr, i64, i64 } { ptr @.str.5097, i64 17, i64 0 }, { ptr, i64, i64 } %t803) + %t805 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t804, 0 + %t806 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5098, i64 3, i64 0 }) + %t807 = insertvalue %S.gen.Val %t805, %S.ast.Type %t806, 1 + %t808 = insertvalue %S.gen.Val %t807, i1 true, 2 + call void @finch_str_drop(ptr %a750) + call void @finch_str_drop(ptr %a647) + call void @finch_str_drop(ptr %a607) + call void @finch.drop.S_gen_Val(ptr %a603) + call void @finch_str_drop(ptr %a570) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t808 +endif7842: + %t809 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t809, ptr %a810 + store { ptr, i64, i64 } { ptr @.str.5099, i64 10, i64 0 }, ptr %a811 + %t812 = call i32 @finch_str_eq(ptr %a810, ptr %a811) + %t813 = icmp ne i32 %t812, 0 + br i1 %t813, label %then7861, label %endif7863 +then7861: %t814 = load ptr, ptr %a1 - %t815 = icmp eq ptr %t814, null - br i1 %t815, label %panic7493, label %ok7494 -panic7493: - call void @finch_panic(ptr @.str.4944, i64 4409, ptr @.str.4945) - unreachable -ok7494: - %t816 = getelementptr inbounds %S.gen.Gen, ptr %t814, i32 0, i32 40 - store { ptr, i64, i64 } %t813, ptr %t816 + %t815 = load %S.ast.Node, ptr %a2 + %t816 = load { ptr, i64, i64 }, ptr %a8 + call void @finch.gen.checkArgs(ptr %t814, %S.ast.Node %t815, i64 0, i64 2, { ptr, i64, i64 } %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.4946, i64 17, i64 0 }, { ptr, i64, i64 } %t818) - %t820 = load ptr, ptr %a1 - %t821 = icmp eq ptr %t820, null - br i1 %t821, label %panic7495, label %ok7496 -panic7495: - call void @finch_panic(ptr @.str.4947, i64 4410, ptr @.str.4948) + %t818 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t819 = load { ptr, i64, i64 }, ptr %t818 + %t820 = extractvalue { ptr, i64, i64 } %t819, 1 + %t821 = icmp uge i64 0, %t820 + br i1 %t821, label %range7864, label %inrange7865 +range7864: + call void @finch_panic_index(ptr @.str.5100, i64 4716, i64 0, i64 %t820) unreachable -ok7496: - %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.4949, i64 4, i64 0 }) - %t824 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t823, 1 - ret %S.gen.Val %t824 -endif7492: - %t825 = load ptr, ptr %a1 - %t826 = load { ptr, i64, i64 }, ptr %a745 - store { ptr, i64, i64 } { ptr @.str.4950, 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.4951, 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.4952, 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.4953, 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.4954, 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.4955, i64 4, i64 0 }) - %t859 = insertvalue %S.gen.Val %t857, %S.ast.Type %t858, 1 - ret %S.gen.Val %t859 -endif7483: - %t860 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t860, ptr %a861 - store { ptr, i64, i64 } { ptr @.str.4956, i64 11, i64 0 }, ptr %a862 +inrange7865: + %t822 = extractvalue { ptr, i64, i64 } %t819, 0 + %t823 = getelementptr inbounds %S.ast.Node, ptr %t822, i64 0 + %t824 = load %S.ast.Node, ptr %t823 + %t825 = call %S.gen.Val @finch.gen.strArg(ptr %t817, %S.ast.Node %t824, { ptr, i64, i64 } { ptr @.str.5101, i64 13, i64 0 }) + store %S.gen.Val %t825, ptr %a826 + %t827 = load ptr, ptr %a1 + %t828 = icmp eq ptr %t827, null + br i1 %t828, label %panic7866, label %ok7867 +panic7866: + call void @finch_panic(ptr @.str.5102, i64 4717, ptr @.str.5103) + unreachable +ok7867: + %t829 = getelementptr inbounds %S.gen.Gen, ptr %t827, i32 0, i32 11 + %t830 = getelementptr inbounds { ptr, i64, i64 }, ptr %t829, i32 0, i32 1 + %t831 = load i64, ptr %t830 + store i64 %t831, ptr %a832 + %t833 = load ptr, ptr %a1 + %t834 = load %S.gen.Val, ptr %a826 + call void @finch.gen.hold(ptr %t833, %S.gen.Val %t834) + %t835 = load ptr, ptr %a1 + %t836 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t837 = load { ptr, i64, i64 }, ptr %t836 + %t838 = extractvalue { ptr, i64, i64 } %t837, 1 + %t839 = icmp uge i64 1, %t838 + br i1 %t839, label %range7868, label %inrange7869 +range7868: + call void @finch_panic_index(ptr @.str.5104, i64 4719, i64 1, i64 %t838) + unreachable +inrange7869: + %t840 = extractvalue { ptr, i64, i64 } %t837, 0 + %t841 = getelementptr inbounds %S.ast.Node, ptr %t840, i64 1 + %t842 = load %S.ast.Node, ptr %t841 + %t843 = call %S.gen.Val @finch.gen.strArg(ptr %t835, %S.ast.Node %t842, { ptr, i64, i64 } { ptr @.str.5105, i64 8, i64 0 }) + store %S.gen.Val %t843, ptr %a844 + %t845 = load ptr, ptr %a1 + %t846 = load i64, ptr %a832 + call void @finch.gen.heldEnd(ptr %t845, i64 %t846) + %t847 = load ptr, ptr %a1 + %t848 = load %S.gen.Val, ptr %a826 + %t849 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t847, %S.gen.Val %t848) + store { ptr, i64, i64 } %t849, ptr %a850 + %t851 = load ptr, ptr %a1 + %t852 = load %S.gen.Val, ptr %a844 + %t853 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t851, %S.gen.Val %t852) + store { ptr, i64, i64 } %t853, ptr %a854 + %t855 = load ptr, ptr %a1 + %t856 = icmp eq ptr %t855, null + br i1 %t856, label %panic7870, label %ok7871 +panic7870: + call void @finch_panic(ptr @.str.5106, i64 4723, ptr @.str.5107) + unreachable +ok7871: + %t857 = getelementptr inbounds %S.gen.Gen, ptr %t855, i32 0, i32 40 + %t858 = load { ptr, i64, i64 }, ptr %t857 + %t859 = load %S.ast.Node, ptr %a2 + %t860 = call { ptr, i64, i64 } @finch.gen.nodeKey(%S.ast.Node %t859) + store { ptr, i64, i64 } %t858, ptr %a861 + store { ptr, i64, i64 } %t860, ptr %a862 %t863 = call i32 @finch_str_eq(ptr %a861, ptr %a862) %t864 = icmp ne i32 %t863, 0 - br i1 %t864, label %then7497, label %endif7499 -then7497: - %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 = 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 %range7500, label %inrange7501 -range7500: - call void @finch_panic_index(ptr @.str.4957, i64 4418, i64 0, i64 %t871) - unreachable -inrange7501: - %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.4958, 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.4959, i64 30, i64 0 }, ptr %a884 + store { ptr, i64, i64 } %t860, ptr %a865 + call void @finch_str_drop(ptr %a865) + br i1 %t864, label %then7872, label %endif7874 +then7872: + %t866 = load ptr, ptr %a1 + %t867 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t866, { ptr, i64, i64 } { ptr @.str.5108, i64 17, i64 0 }) + store { ptr, i64, i64 } %t867, ptr %a868 + %t869 = load ptr, ptr %a1 + %t870 = load { ptr, i64, i64 }, ptr %a868 + call void @finch.gen.store(ptr %t869, { ptr, i64, i64 } { ptr @.str.5109, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5110, i64 15, i64 0 }, { ptr, i64, i64 } %t870) + %t871 = load ptr, ptr %a1 + %t872 = load { ptr, i64, i64 }, ptr %a850 + store { ptr, i64, i64 } { ptr @.str.5111, i64 35, i64 0 }, ptr %a874 + store { ptr, i64, i64 } %t872, ptr %a875 + call void @finch_str_concat(ptr %a873, ptr %a874, ptr %a875) + %t876 = load { ptr, i64, i64 }, ptr %a873 + store { ptr, i64, i64 } %t876, ptr %a878 + store { ptr, i64, i64 } { ptr @.str.5112, i64 6, i64 0 }, ptr %a879 + call void @finch_str_concat(ptr %a877, ptr %a878, ptr %a879) + store { ptr, i64, i64 } %t876, ptr %a880 + call void @finch_str_drop(ptr %a880) + %t881 = load { ptr, i64, i64 }, ptr %a877 + %t882 = load { ptr, i64, i64 }, ptr %a854 + store { ptr, i64, i64 } %t881, ptr %a884 store { ptr, i64, i64 } %t882, 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 %a888 - store { ptr, i64, i64 } { ptr @.str.4960, 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 } %t881, ptr %a886 + call void @finch_str_drop(ptr %a886) + %t887 = load { ptr, i64, i64 }, ptr %a883 + store { ptr, i64, i64 } %t887, ptr %a889 + store { ptr, i64, i64 } { ptr @.str.5113, i64 6, i64 0 }, ptr %a890 + call void @finch_str_concat(ptr %a888, ptr %a889, ptr %a890) + store { ptr, i64, i64 } %t887, ptr %a891 + call void @finch_str_drop(ptr %a891) + %t892 = load { ptr, i64, i64 }, ptr %a888 + %t893 = load { ptr, i64, i64 }, ptr %a868 + 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 - store { ptr, i64, i64 } %t897, ptr %a899 - store { ptr, i64, i64 } { ptr @.str.4961, 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 %panic7502, label %ok7503 -panic7502: - call void @finch_panic(ptr @.str.4962, i64 4421, ptr @.str.4963) + store { ptr, i64, i64 } %t892, ptr %a897 + call void @finch_str_drop(ptr %a897) + %t898 = load { ptr, i64, i64 }, ptr %a894 + store { ptr, i64, i64 } %t898, ptr %a900 + store { ptr, i64, i64 } { ptr @.str.5114, i64 1, i64 0 }, ptr %a901 + call void @finch_str_concat(ptr %a899, ptr %a900, ptr %a901) + store { ptr, i64, i64 } %t898, ptr %a902 + call void @finch_str_drop(ptr %a902) + %t903 = load { ptr, i64, i64 }, ptr %a899 + %t904 = call { ptr, i64, i64 } @finch.gen.op(ptr %t871, { ptr, i64, i64 } %t903) + store { ptr, i64, i64 } %t903, ptr %a905 + call void @finch_str_drop(ptr %a905) + store { ptr, i64, i64 } %t904, ptr %a906 + %t907 = load ptr, ptr %a1 + %t908 = load { ptr, i64, i64 }, ptr %a906 + store { ptr, i64, i64 } { ptr @.str.5115, i64 12, i64 0 }, 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.5116, i64 3, i64 0 }, ptr %a915 + call void @finch_str_concat(ptr %a913, ptr %a914, ptr %a915) + store { ptr, i64, i64 } %t912, ptr %a916 + call void @finch_str_drop(ptr %a916) + %t917 = load { ptr, i64, i64 }, ptr %a913 + %t918 = call { ptr, i64, i64 } @finch.gen.op(ptr %t907, { ptr, i64, i64 } %t917) + store { ptr, i64, i64 } %t917, ptr %a919 + call void @finch_str_drop(ptr %a919) + %t920 = load ptr, ptr %a1 + %t921 = icmp eq ptr %t920, null + br i1 %t921, label %panic7875, label %ok7876 +panic7875: + call void @finch_panic(ptr @.str.5117, i64 4727, ptr @.str.5118) unreachable -ok7503: - %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 %then7504, label %endif7506 -then7504: - %t912 = load ptr, ptr %a1 - %t913 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t912, { ptr, i64, i64 } { ptr @.str.4964, i64 17, i64 0 }) - store { ptr, i64, i64 } %t913, ptr %a914 - %t915 = load ptr, ptr %a1 - %t916 = load { ptr, i64, i64 }, ptr %a914 - call void @finch.gen.store(ptr %t915, { ptr, i64, i64 } { ptr @.str.4965, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4966, 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.4967, 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.4968, 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.4969, 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.4970, 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.4971, 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 = icmp eq ptr %t949, null - br i1 %t950, label %panic7507, label %ok7508 -panic7507: - call void @finch_panic(ptr @.str.4972, i64 4425, ptr @.str.4973) +ok7876: + %t922 = getelementptr inbounds %S.gen.Gen, ptr %t920, i32 0, i32 41 + %t923 = load { ptr, i64, i64 }, ptr %t922 + store { ptr, i64, i64 } %t918, ptr %t922 + store { ptr, i64, i64 } %t923, ptr %a924 + call void @finch_str_drop(ptr %a924) + %t925 = load ptr, ptr %a1 + %t926 = load { ptr, i64, i64 }, ptr %a868 + %t927 = call { ptr, i64, i64 } @finch.gen.load(ptr %t925, { ptr, i64, i64 } { ptr @.str.5119, i64 17, i64 0 }, { ptr, i64, i64 } %t926) + %t928 = load ptr, ptr %a1 + %t929 = icmp eq ptr %t928, null + br i1 %t929, label %panic7877, label %ok7878 +panic7877: + call void @finch_panic(ptr @.str.5120, i64 4728, ptr @.str.5121) unreachable -ok7508: - %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.4974, i64 17, i64 0 }, { ptr, i64, i64 } %t953) - %t955 = load ptr, ptr %a1 - %t956 = icmp eq ptr %t955, null - br i1 %t956, label %panic7509, label %ok7510 -panic7509: - call void @finch_panic(ptr @.str.4975, i64 4426, ptr @.str.4976) - unreachable -ok7510: - %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.4977, i64 4, i64 0 }) - %t959 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t958, 1 - ret %S.gen.Val %t959 -endif7506: - %t960 = load ptr, ptr %a1 - %t961 = load { ptr, i64, i64 }, ptr %a880 - store { ptr, i64, i64 } { ptr @.str.4978, 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.4979, 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.4980, i64 12, i64 0 }, ptr %a975 - store { ptr, i64, i64 } %t973, ptr %a976 +ok7878: + %t930 = getelementptr inbounds %S.gen.Gen, ptr %t928, i32 0, i32 42 + %t931 = load { ptr, i64, i64 }, ptr %t930 + store { ptr, i64, i64 } %t927, ptr %t930 + store { ptr, i64, i64 } %t931, ptr %a932 + call void @finch_str_drop(ptr %a932) + %t933 = load ptr, ptr %a1 + %t934 = load %S.gen.Val, ptr %a826 + call void @finch.gen.release(ptr %t933, %S.gen.Val %t934) + %t935 = load ptr, ptr %a1 + %t936 = load %S.gen.Val, ptr %a844 + call void @finch.gen.release(ptr %t935, %S.gen.Val %t936) + %t937 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5122, i64 4, i64 0 }) + %t938 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t937, 1 + call void @finch_str_drop(ptr %a906) + call void @finch_str_drop(ptr %a868) + call void @finch_str_drop(ptr %a854) + call void @finch_str_drop(ptr %a850) + call void @finch.drop.S_gen_Val(ptr %a844) + call void @finch.drop.S_gen_Val(ptr %a826) + call void @finch_str_drop(ptr %a570) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t938 +endif7874: + %t939 = load ptr, ptr %a1 + %t940 = load { ptr, i64, i64 }, ptr %a850 + store { ptr, i64, i64 } { ptr @.str.5123, i64 31, i64 0 }, ptr %a942 + store { ptr, i64, i64 } %t940, ptr %a943 + call void @finch_str_concat(ptr %a941, ptr %a942, ptr %a943) + %t944 = load { ptr, i64, i64 }, ptr %a941 + store { ptr, i64, i64 } %t944, ptr %a946 + store { ptr, i64, i64 } { ptr @.str.5124, i64 6, i64 0 }, ptr %a947 + call void @finch_str_concat(ptr %a945, ptr %a946, ptr %a947) + store { ptr, i64, i64 } %t944, ptr %a948 + call void @finch_str_drop(ptr %a948) + %t949 = load { ptr, i64, i64 }, ptr %a945 + %t950 = load { ptr, i64, i64 }, ptr %a854 + store { ptr, i64, i64 } %t949, ptr %a952 + store { ptr, i64, i64 } %t950, ptr %a953 + call void @finch_str_concat(ptr %a951, ptr %a952, ptr %a953) + store { ptr, i64, i64 } %t949, ptr %a954 + call void @finch_str_drop(ptr %a954) + %t955 = load { ptr, i64, i64 }, ptr %a951 + store { ptr, i64, i64 } %t955, ptr %a957 + store { ptr, i64, i64 } { ptr @.str.5125, i64 1, i64 0 }, ptr %a958 + call void @finch_str_concat(ptr %a956, ptr %a957, ptr %a958) + store { ptr, i64, i64 } %t955, ptr %a959 + call void @finch_str_drop(ptr %a959) + %t960 = load { ptr, i64, i64 }, ptr %a956 + %t961 = call { ptr, i64, i64 } @finch.gen.op(ptr %t939, { ptr, i64, i64 } %t960) + store { ptr, i64, i64 } %t960, ptr %a962 + call void @finch_str_drop(ptr %a962) + store { ptr, i64, i64 } %t961, ptr %a963 + %t964 = load ptr, ptr %a1 + %t965 = load %S.gen.Val, ptr %a826 + call void @finch.gen.release(ptr %t964, %S.gen.Val %t965) + %t966 = load ptr, ptr %a1 + %t967 = load %S.gen.Val, ptr %a844 + call void @finch.gen.release(ptr %t966, %S.gen.Val %t967) + %t968 = load ptr, ptr %a1 + %t969 = load { ptr, i64, i64 }, ptr %a963 + store { ptr, i64, i64 } { ptr @.str.5126, i64 12, i64 0 }, ptr %a971 + store { ptr, i64, i64 } %t969, ptr %a972 + call void @finch_str_concat(ptr %a970, ptr %a971, ptr %a972) + %t973 = load { ptr, i64, i64 }, ptr %a970 + store { ptr, i64, i64 } %t973, ptr %a975 + store { ptr, i64, i64 } { ptr @.str.5127, i64 3, i64 0 }, 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.4981, 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.4982, i64 4, i64 0 }) - %t985 = insertvalue %S.gen.Val %t983, %S.ast.Type %t984, 1 - ret %S.gen.Val %t985 -endif7499: - %t986 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t986, ptr %a987 - store { ptr, i64, i64 } { ptr @.str.4983, 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 %then7511, label %endif7513 -then7511: - %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 = 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 %range7514, label %inrange7515 -range7514: - call void @finch_panic_index(ptr @.str.4984, i64 4434, i64 0, i64 %t997) + store { ptr, i64, i64 } %t973, ptr %a977 + call void @finch_str_drop(ptr %a977) + %t978 = load { ptr, i64, i64 }, ptr %a974 + %t979 = call { ptr, i64, i64 } @finch.gen.op(ptr %t968, { ptr, i64, i64 } %t978) + store { ptr, i64, i64 } %t978, ptr %a980 + call void @finch_str_drop(ptr %a980) + %t981 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t979, 0 + %t982 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5128, i64 4, i64 0 }) + %t983 = insertvalue %S.gen.Val %t981, %S.ast.Type %t982, 1 + call void @finch_str_drop(ptr %a963) + call void @finch_str_drop(ptr %a854) + call void @finch_str_drop(ptr %a850) + call void @finch.drop.S_gen_Val(ptr %a844) + call void @finch.drop.S_gen_Val(ptr %a826) + call void @finch_str_drop(ptr %a570) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t983 +endif7863: + %t984 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t984, ptr %a985 + store { ptr, i64, i64 } { ptr @.str.5129, i64 11, i64 0 }, ptr %a986 + %t987 = call i32 @finch_str_eq(ptr %a985, ptr %a986) + %t988 = icmp ne i32 %t987, 0 + br i1 %t988, label %then7879, label %endif7881 +then7879: + %t989 = load ptr, ptr %a1 + %t990 = load %S.ast.Node, ptr %a2 + %t991 = load { ptr, i64, i64 }, ptr %a8 + call void @finch.gen.checkArgs(ptr %t989, %S.ast.Node %t990, i64 0, i64 1, { ptr, i64, i64 } %t991) + %t992 = load ptr, ptr %a1 + %t993 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t994 = load { ptr, i64, i64 }, ptr %t993 + %t995 = extractvalue { ptr, i64, i64 } %t994, 1 + %t996 = icmp uge i64 0, %t995 + br i1 %t996, label %range7882, label %inrange7883 +range7882: + call void @finch_panic_index(ptr @.str.5130, i64 4740, i64 0, i64 %t995) unreachable -inrange7515: - %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.4985, 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.4986, 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.4987, 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.4988, 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 = load { ptr, i64, i64 }, ptr %a1006 - store { ptr, i64, i64 } { ptr @.str.4989, 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.4990, 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.4991, i64 3, i64 0 }) - %t1041 = insertvalue %S.gen.Val %t1039, %S.ast.Type %t1040, 1 - ret %S.gen.Val %t1041 -endif7513: - %t1042 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t1042, ptr %a1043 - store { ptr, i64, i64 } { ptr @.str.4992, 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 %then7516, label %endif7518 -then7516: +inrange7883: + %t997 = extractvalue { ptr, i64, i64 } %t994, 0 + %t998 = getelementptr inbounds %S.ast.Node, ptr %t997, i64 0 + %t999 = load %S.ast.Node, ptr %t998 + %t1000 = call %S.gen.Val @finch.gen.strArg(ptr %t992, %S.ast.Node %t999, { ptr, i64, i64 } { ptr @.str.5131, i64 13, i64 0 }) + store %S.gen.Val %t1000, ptr %a1001 + %t1002 = load ptr, ptr %a1 + %t1003 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t1002) + store { ptr, i64, i64 } %t1003, ptr %a1004 + %t1005 = load ptr, ptr %a1 + %t1006 = load { ptr, i64, i64 }, ptr %a1004 + store { ptr, i64, i64 } { ptr @.str.5132, i64 30, 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.5133, i64 6, i64 0 }, ptr %a1013 + call void @finch_str_concat(ptr %a1011, ptr %a1012, ptr %a1013) + store { ptr, i64, i64 } %t1010, ptr %a1014 + call void @finch_str_drop(ptr %a1014) + %t1015 = load { ptr, i64, i64 }, ptr %a1011 + %t1016 = load ptr, ptr %a1 + %t1017 = load %S.gen.Val, ptr %a1001 + %t1018 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t1016, %S.gen.Val %t1017) + store { ptr, i64, i64 } %t1015, ptr %a1020 + store { ptr, i64, i64 } %t1018, ptr %a1021 + call void @finch_str_concat(ptr %a1019, ptr %a1020, ptr %a1021) + store { ptr, i64, i64 } %t1015, ptr %a1022 + call void @finch_str_drop(ptr %a1022) + store { ptr, i64, i64 } %t1018, ptr %a1023 + call void @finch_str_drop(ptr %a1023) + %t1024 = load { ptr, i64, i64 }, ptr %a1019 + store { ptr, i64, i64 } %t1024, ptr %a1026 + store { ptr, i64, i64 } { ptr @.str.5134, i64 1, i64 0 }, ptr %a1027 + call void @finch_str_concat(ptr %a1025, ptr %a1026, ptr %a1027) + store { ptr, i64, i64 } %t1024, ptr %a1028 + call void @finch_str_drop(ptr %a1028) + %t1029 = load { ptr, i64, i64 }, ptr %a1025 + call void @finch.gen.emit(ptr %t1005, { ptr, i64, i64 } %t1029) + store { ptr, i64, i64 } %t1029, ptr %a1030 + call void @finch_str_drop(ptr %a1030) + %t1031 = load ptr, ptr %a1 + %t1032 = icmp eq ptr %t1031, null + br i1 %t1032, label %panic7884, label %ok7885 +panic7884: + call void @finch_panic(ptr @.str.5135, i64 4743, ptr @.str.5136) + unreachable +ok7885: + %t1033 = getelementptr inbounds %S.gen.Gen, ptr %t1031, i32 0, i32 40 + %t1034 = load { ptr, i64, i64 }, ptr %t1033 + %t1035 = load %S.ast.Node, ptr %a2 + %t1036 = call { ptr, i64, i64 } @finch.gen.nodeKey(%S.ast.Node %t1035) + store { ptr, i64, i64 } %t1034, ptr %a1037 + store { ptr, i64, i64 } %t1036, ptr %a1038 + %t1039 = call i32 @finch_str_eq(ptr %a1037, ptr %a1038) + %t1040 = icmp ne i32 %t1039, 0 + store { ptr, i64, i64 } %t1036, ptr %a1041 + call void @finch_str_drop(ptr %a1041) + br i1 %t1040, label %then7886, label %endif7888 +then7886: + %t1042 = load ptr, ptr %a1 + %t1043 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t1042, { ptr, i64, i64 } { ptr @.str.5137, i64 17, i64 0 }) + store { ptr, i64, i64 } %t1043, ptr %a1044 + %t1045 = load ptr, ptr %a1 + %t1046 = load { ptr, i64, i64 }, ptr %a1044 + call void @finch.gen.store(ptr %t1045, { ptr, i64, i64 } { ptr @.str.5138, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5139, i64 15, i64 0 }, { ptr, i64, i64 } %t1046) %t1047 = load ptr, ptr %a1 - %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 %range7519, label %inrange7520 -range7519: - call void @finch_panic_index(ptr @.str.4993, i64 4441, i64 0, i64 %t1054) + %t1048 = load { ptr, i64, i64 }, ptr %a1004 + store { ptr, i64, i64 } { ptr @.str.5140, i64 36, 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.5141, i64 6, i64 0 }, ptr %a1055 + call void @finch_str_concat(ptr %a1053, ptr %a1054, ptr %a1055) + store { ptr, i64, i64 } %t1052, ptr %a1056 + call void @finch_str_drop(ptr %a1056) + %t1057 = load { ptr, i64, i64 }, ptr %a1053 + %t1058 = load { ptr, i64, i64 }, ptr %a1044 + store { ptr, i64, i64 } %t1057, ptr %a1060 + store { ptr, i64, i64 } %t1058, ptr %a1061 + call void @finch_str_concat(ptr %a1059, ptr %a1060, ptr %a1061) + store { ptr, i64, i64 } %t1057, ptr %a1062 + call void @finch_str_drop(ptr %a1062) + %t1063 = load { ptr, i64, i64 }, ptr %a1059 + store { ptr, i64, i64 } %t1063, ptr %a1065 + store { ptr, i64, i64 } { ptr @.str.5142, i64 1, i64 0 }, ptr %a1066 + call void @finch_str_concat(ptr %a1064, ptr %a1065, ptr %a1066) + store { ptr, i64, i64 } %t1063, ptr %a1067 + call void @finch_str_drop(ptr %a1067) + %t1068 = load { ptr, i64, i64 }, ptr %a1064 + %t1069 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1047, { ptr, i64, i64 } %t1068) + store { ptr, i64, i64 } %t1068, ptr %a1070 + call void @finch_str_drop(ptr %a1070) + store { ptr, i64, i64 } %t1069, ptr %a1071 + %t1072 = load ptr, ptr %a1 + %t1073 = load { ptr, i64, i64 }, ptr %a1071 + store { ptr, i64, i64 } { ptr @.str.5143, i64 12, i64 0 }, ptr %a1075 + store { ptr, i64, i64 } %t1073, ptr %a1076 + call void @finch_str_concat(ptr %a1074, ptr %a1075, ptr %a1076) + %t1077 = load { ptr, i64, i64 }, ptr %a1074 + store { ptr, i64, i64 } %t1077, ptr %a1079 + store { ptr, i64, i64 } { ptr @.str.5144, i64 3, i64 0 }, ptr %a1080 + call void @finch_str_concat(ptr %a1078, ptr %a1079, ptr %a1080) + store { ptr, i64, i64 } %t1077, ptr %a1081 + call void @finch_str_drop(ptr %a1081) + %t1082 = load { ptr, i64, i64 }, ptr %a1078 + %t1083 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1072, { ptr, i64, i64 } %t1082) + store { ptr, i64, i64 } %t1082, ptr %a1084 + call void @finch_str_drop(ptr %a1084) + %t1085 = load ptr, ptr %a1 + %t1086 = icmp eq ptr %t1085, null + br i1 %t1086, label %panic7889, label %ok7890 +panic7889: + call void @finch_panic(ptr @.str.5145, i64 4747, ptr @.str.5146) unreachable -inrange7520: - %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.4994, 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 %range7521, label %inrange7522 -range7521: - call void @finch_panic_index(ptr @.str.4995, i64 4441, i64 0, i64 %t1063) +ok7890: + %t1087 = getelementptr inbounds %S.gen.Gen, ptr %t1085, i32 0, i32 41 + %t1088 = load { ptr, i64, i64 }, ptr %t1087 + store { ptr, i64, i64 } %t1083, ptr %t1087 + store { ptr, i64, i64 } %t1088, ptr %a1089 + call void @finch_str_drop(ptr %a1089) + %t1090 = load ptr, ptr %a1 + %t1091 = load { ptr, i64, i64 }, ptr %a1044 + %t1092 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1090, { ptr, i64, i64 } { ptr @.str.5147, i64 17, i64 0 }, { ptr, i64, i64 } %t1091) + %t1093 = load ptr, ptr %a1 + %t1094 = icmp eq ptr %t1093, null + br i1 %t1094, label %panic7891, label %ok7892 +panic7891: + call void @finch_panic(ptr @.str.5148, i64 4748, ptr @.str.5149) unreachable -inrange7522: - %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.4996, 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.4997, 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.4998, 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.4999, 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.5000, 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.5001, 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.5002, i64 4, i64 0 }) - %t1097 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t1096, 1 - ret %S.gen.Val %t1097 -endif7518: - %t1098 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t1098, ptr %a1099 - store { ptr, i64, i64 } { ptr @.str.5003, 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 %then7523, label %endif7525 -then7523: - %t1103 = load ptr, ptr %a1 - %t1104 = call %S.gen.Val @finch.gen.strConst(ptr %t1103, { ptr, i64, i64 } { ptr @.str.5004, 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 %then7526, label %endif7528 -then7526: - %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 %range7529, label %inrange7530 -range7529: - call void @finch_panic_index(ptr @.str.5005, i64 4451, i64 0, i64 %t1116) +ok7892: + %t1095 = getelementptr inbounds %S.gen.Gen, ptr %t1093, i32 0, i32 42 + %t1096 = load { ptr, i64, i64 }, ptr %t1095 + store { ptr, i64, i64 } %t1092, ptr %t1095 + store { ptr, i64, i64 } %t1096, ptr %a1097 + call void @finch_str_drop(ptr %a1097) + %t1098 = load ptr, ptr %a1 + %t1099 = load { ptr, i64, i64 }, ptr %a1004 + %t1100 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5150, i64 3, i64 0 }) + call void @finch.gen.dropAt(ptr %t1098, { ptr, i64, i64 } %t1099, %S.ast.Type %t1100) + store %S.ast.Type %t1100, ptr %a1101 + call void @finch.drop.S_ast_Type(ptr %a1101) + %t1102 = load ptr, ptr %a1 + %t1103 = load %S.gen.Val, ptr %a1001 + call void @finch.gen.release(ptr %t1102, %S.gen.Val %t1103) + %t1104 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5151, i64 4, i64 0 }) + %t1105 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t1104, 1 + call void @finch_str_drop(ptr %a1071) + call void @finch_str_drop(ptr %a1044) + call void @finch_str_drop(ptr %a1004) + call void @finch.drop.S_gen_Val(ptr %a1001) + call void @finch_str_drop(ptr %a570) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t1105 +endif7888: + %t1106 = load ptr, ptr %a1 + %t1107 = load { ptr, i64, i64 }, ptr %a1004 + store { ptr, i64, i64 } { ptr @.str.5152, i64 32, i64 0 }, ptr %a1109 + store { ptr, i64, i64 } %t1107, ptr %a1110 + call void @finch_str_concat(ptr %a1108, ptr %a1109, ptr %a1110) + %t1111 = load { ptr, i64, i64 }, ptr %a1108 + store { ptr, i64, i64 } %t1111, ptr %a1113 + store { ptr, i64, i64 } { ptr @.str.5153, i64 1, i64 0 }, ptr %a1114 + call void @finch_str_concat(ptr %a1112, ptr %a1113, ptr %a1114) + store { ptr, i64, i64 } %t1111, ptr %a1115 + call void @finch_str_drop(ptr %a1115) + %t1116 = load { ptr, i64, i64 }, ptr %a1112 + %t1117 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1106, { ptr, i64, i64 } %t1116) + store { ptr, i64, i64 } %t1116, ptr %a1118 + call void @finch_str_drop(ptr %a1118) + store { ptr, i64, i64 } %t1117, ptr %a1119 + %t1120 = load ptr, ptr %a1 + %t1121 = load { ptr, i64, i64 }, ptr %a1004 + %t1122 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5154, i64 3, i64 0 }) + call void @finch.gen.dropAt(ptr %t1120, { ptr, i64, i64 } %t1121, %S.ast.Type %t1122) + store %S.ast.Type %t1122, ptr %a1123 + call void @finch.drop.S_ast_Type(ptr %a1123) + %t1124 = load ptr, ptr %a1 + %t1125 = load %S.gen.Val, ptr %a1001 + call void @finch.gen.release(ptr %t1124, %S.gen.Val %t1125) + %t1126 = load ptr, ptr %a1 + %t1127 = load { ptr, i64, i64 }, ptr %a1119 + store { ptr, i64, i64 } { ptr @.str.5155, i64 12, 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.5156, i64 3, i64 0 }, ptr %a1134 + call void @finch_str_concat(ptr %a1132, ptr %a1133, ptr %a1134) + store { ptr, i64, i64 } %t1131, ptr %a1135 + call void @finch_str_drop(ptr %a1135) + %t1136 = load { ptr, i64, i64 }, ptr %a1132 + %t1137 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1126, { ptr, i64, i64 } %t1136) + store { ptr, i64, i64 } %t1136, ptr %a1138 + call void @finch_str_drop(ptr %a1138) + %t1139 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1137, 0 + %t1140 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5157, i64 4, i64 0 }) + %t1141 = insertvalue %S.gen.Val %t1139, %S.ast.Type %t1140, 1 + call void @finch_str_drop(ptr %a1119) + call void @finch_str_drop(ptr %a1004) + call void @finch.drop.S_gen_Val(ptr %a1001) + call void @finch_str_drop(ptr %a570) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t1141 +endif7881: + %t1142 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t1142, ptr %a1143 + store { ptr, i64, i64 } { ptr @.str.5158, i64 5, i64 0 }, ptr %a1144 + %t1145 = call i32 @finch_str_eq(ptr %a1143, ptr %a1144) + %t1146 = icmp ne i32 %t1145, 0 + br i1 %t1146, label %then7893, label %endif7895 +then7893: + %t1147 = load ptr, ptr %a1 + %t1148 = load %S.ast.Node, ptr %a2 + %t1149 = load { ptr, i64, i64 }, ptr %a8 + call void @finch.gen.checkArgs(ptr %t1147, %S.ast.Node %t1148, i64 0, i64 1, { ptr, i64, i64 } %t1149) + %t1150 = load ptr, ptr %a1 + %t1151 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t1152 = load { ptr, i64, i64 }, ptr %t1151 + %t1153 = extractvalue { ptr, i64, i64 } %t1152, 1 + %t1154 = icmp uge i64 0, %t1153 + br i1 %t1154, label %range7896, label %inrange7897 +range7896: + call void @finch_panic_index(ptr @.str.5159, i64 4760, i64 0, i64 %t1153) unreachable -inrange7530: - %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.5006, i64 12, i64 0 }) - store %S.gen.Val %t1121, ptr %a1105 - br label %endif7528 -endif7528: - %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.5007, 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.5008, 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.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.5009, 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.5010, 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.5011, 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 -endif7525: - %t1153 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t1153, ptr %a1154 - store { ptr, i64, i64 } { ptr @.str.5012, 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 %then7531, label %endif7533 -then7531: - %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 %range7534, label %inrange7535 -range7534: - call void @finch_panic_index(ptr @.str.5013, i64 4459, i64 0, i64 %t1164) +inrange7897: + %t1155 = extractvalue { ptr, i64, i64 } %t1152, 0 + %t1156 = getelementptr inbounds %S.ast.Node, ptr %t1155, i64 0 + %t1157 = load %S.ast.Node, ptr %t1156 + %t1158 = call %S.gen.Val @finch.gen.strArg(ptr %t1150, %S.ast.Node %t1157, { ptr, i64, i64 } { ptr @.str.5160, i64 11, i64 0 }) + store %S.gen.Val %t1158, ptr %a1159 + %t1160 = load ptr, ptr %a1 + %t1161 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t1160) + store { ptr, i64, i64 } %t1161, ptr %a1162 + %t1163 = load ptr, ptr %a1 + %t1164 = load { ptr, i64, i64 }, ptr %a1162 + store { ptr, i64, i64 } { ptr @.str.5161, i64 30, i64 0 }, ptr %a1166 + store { ptr, i64, i64 } %t1164, ptr %a1167 + call void @finch_str_concat(ptr %a1165, ptr %a1166, ptr %a1167) + %t1168 = load { ptr, i64, i64 }, ptr %a1165 + store { ptr, i64, i64 } %t1168, ptr %a1170 + store { ptr, i64, i64 } { ptr @.str.5162, i64 6, i64 0 }, ptr %a1171 + call void @finch_str_concat(ptr %a1169, ptr %a1170, ptr %a1171) + store { ptr, i64, i64 } %t1168, ptr %a1172 + call void @finch_str_drop(ptr %a1172) + %t1173 = load { ptr, i64, i64 }, ptr %a1169 + %t1174 = load ptr, ptr %a1 + %t1175 = load %S.gen.Val, ptr %a1159 + %t1176 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t1174, %S.gen.Val %t1175) + store { ptr, i64, i64 } %t1173, ptr %a1178 + store { ptr, i64, i64 } %t1176, ptr %a1179 + call void @finch_str_concat(ptr %a1177, ptr %a1178, ptr %a1179) + store { ptr, i64, i64 } %t1173, ptr %a1180 + call void @finch_str_drop(ptr %a1180) + store { ptr, i64, i64 } %t1176, ptr %a1181 + call void @finch_str_drop(ptr %a1181) + %t1182 = load { ptr, i64, i64 }, ptr %a1177 + store { ptr, i64, i64 } %t1182, ptr %a1184 + store { ptr, i64, i64 } { ptr @.str.5163, i64 1, i64 0 }, ptr %a1185 + call void @finch_str_concat(ptr %a1183, ptr %a1184, ptr %a1185) + store { ptr, i64, i64 } %t1182, ptr %a1186 + call void @finch_str_drop(ptr %a1186) + %t1187 = load { ptr, i64, i64 }, ptr %a1183 + call void @finch.gen.emit(ptr %t1163, { ptr, i64, i64 } %t1187) + store { ptr, i64, i64 } %t1187, ptr %a1188 + call void @finch_str_drop(ptr %a1188) + %t1189 = load ptr, ptr %a1 + %t1190 = load { ptr, i64, i64 }, ptr %a1162 + store { ptr, i64, i64 } { ptr @.str.5164, i64 26, i64 0 }, ptr %a1192 + store { ptr, i64, i64 } %t1190, ptr %a1193 + call void @finch_str_concat(ptr %a1191, ptr %a1192, ptr %a1193) + %t1194 = load { ptr, i64, i64 }, ptr %a1191 + store { ptr, i64, i64 } %t1194, ptr %a1196 + store { ptr, i64, i64 } { ptr @.str.5165, i64 1, i64 0 }, ptr %a1197 + call void @finch_str_concat(ptr %a1195, ptr %a1196, ptr %a1197) + store { ptr, i64, i64 } %t1194, ptr %a1198 + call void @finch_str_drop(ptr %a1198) + %t1199 = load { ptr, i64, i64 }, ptr %a1195 + %t1200 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1189, { ptr, i64, i64 } %t1199) + store { ptr, i64, i64 } %t1199, ptr %a1201 + call void @finch_str_drop(ptr %a1201) + store { ptr, i64, i64 } %t1200, ptr %a1202 + %t1203 = load ptr, ptr %a1 + %t1204 = load { ptr, i64, i64 }, ptr %a1162 + %t1205 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5166, i64 3, i64 0 }) + call void @finch.gen.dropAt(ptr %t1203, { ptr, i64, i64 } %t1204, %S.ast.Type %t1205) + store %S.ast.Type %t1205, ptr %a1206 + call void @finch.drop.S_ast_Type(ptr %a1206) + %t1207 = load ptr, ptr %a1 + %t1208 = load %S.gen.Val, ptr %a1159 + call void @finch.gen.release(ptr %t1207, %S.gen.Val %t1208) + %t1209 = load { ptr, i64, i64 }, ptr %a1202 + store { ptr, i64, i64 } %t1209, ptr %a1210 + call void @finch_str_copy(ptr %a1211, ptr %a1210) + %t1212 = load { ptr, i64, i64 }, ptr %a1211 + %t1213 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1212, 0 + %t1214 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5167, i64 3, i64 0 }) + %t1215 = insertvalue %S.gen.Val %t1213, %S.ast.Type %t1214, 1 + call void @finch_str_drop(ptr %a1202) + call void @finch_str_drop(ptr %a1162) + call void @finch.drop.S_gen_Val(ptr %a1159) + call void @finch_str_drop(ptr %a570) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t1215 +endif7895: + %t1216 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t1216, ptr %a1217 + store { ptr, i64, i64 } { ptr @.str.5168, i64 4, i64 0 }, ptr %a1218 + %t1219 = call i32 @finch_str_eq(ptr %a1217, ptr %a1218) + %t1220 = icmp ne i32 %t1219, 0 + br i1 %t1220, label %then7898, label %endif7900 +then7898: + %t1221 = load ptr, ptr %a1 + %t1222 = load %S.ast.Node, ptr %a2 + %t1223 = load { ptr, i64, i64 }, ptr %a8 + call void @finch.gen.checkArgs(ptr %t1221, %S.ast.Node %t1222, i64 0, i64 1, { ptr, i64, i64 } %t1223) + %t1224 = load ptr, ptr %a1 + %t1225 = load ptr, ptr %a1 + %t1226 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t1227 = load { ptr, i64, i64 }, ptr %t1226 + %t1228 = extractvalue { ptr, i64, i64 } %t1227, 1 + %t1229 = icmp uge i64 0, %t1228 + br i1 %t1229, label %range7901, label %inrange7902 +range7901: + call void @finch_panic_index(ptr @.str.5169, i64 4770, i64 0, i64 %t1228) unreachable -inrange7535: - %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.5014, 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.5015, 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 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 -endif7533: - %t1204 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t1204, ptr %a1205 - store { ptr, i64, i64 } { ptr @.str.5016, 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 %then7536, label %endif7538 -then7536: - %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 %range7539, label %inrange7540 -range7539: - call void @finch_panic_index(ptr @.str.5017, i64 4466, i64 0, i64 %t1215) +inrange7902: + %t1230 = extractvalue { ptr, i64, i64 } %t1227, 0 + %t1231 = getelementptr inbounds %S.ast.Node, ptr %t1230, i64 0 + %t1232 = load %S.ast.Node, ptr %t1231 + %t1233 = call %S.gen.Val @finch.gen.expr(ptr %t1225, %S.ast.Node %t1232) + %t1234 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5170, i64 3, i64 0 }) + %t1235 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t1236 = load { ptr, i64, i64 }, ptr %t1235 + %t1237 = extractvalue { ptr, i64, i64 } %t1236, 1 + %t1238 = icmp uge i64 0, %t1237 + br i1 %t1238, label %range7903, label %inrange7904 +range7903: + call void @finch_panic_index(ptr @.str.5171, i64 4770, i64 0, i64 %t1237) unreachable -inrange7540: - %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.5018, 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 %then7541, label %endif7543 -then7541: - %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 = extractvalue { ptr, i64, i64 } %t1231, 1 - %t1233 = icmp uge i64 0, %t1232 - br i1 %t1233, label %range7544, label %inrange7545 -range7544: - call void @finch_panic_index(ptr @.str.5019, i64 4468, i64 0, i64 %t1232) +inrange7904: + %t1239 = extractvalue { ptr, i64, i64 } %t1236, 0 + %t1240 = getelementptr inbounds %S.ast.Node, ptr %t1239, i64 0 + %t1241 = load %S.ast.Node, ptr %t1240 + %t1242 = call %S.gen.Val @finch.gen.coerce(ptr %t1224, %S.gen.Val %t1233, %S.ast.Type %t1234, %S.ast.Node %t1241, { ptr, i64, i64 } { ptr @.str.5172, i64 13, i64 0 }) + store %S.gen.Val %t1233, ptr %a1243 + call void @finch.drop.S_gen_Val(ptr %a1243) + store %S.ast.Type %t1234, ptr %a1244 + call void @finch.drop.S_ast_Type(ptr %a1244) + store %S.gen.Val %t1242, ptr %a1245 + %t1246 = load ptr, ptr %a1 + %t1247 = getelementptr inbounds %S.gen.Val, ptr %a1245, i32 0, i32 0 + %t1248 = load { ptr, i64, i64 }, ptr %t1247 + store { ptr, i64, i64 } { ptr @.str.5173, i64 10, i64 0 }, ptr %a1250 + store { ptr, i64, i64 } %t1248, ptr %a1251 + call void @finch_str_concat(ptr %a1249, ptr %a1250, ptr %a1251) + %t1252 = load { ptr, i64, i64 }, ptr %a1249 + store { ptr, i64, i64 } %t1252, ptr %a1254 + store { ptr, i64, i64 } { ptr @.str.5174, i64 7, i64 0 }, ptr %a1255 + call void @finch_str_concat(ptr %a1253, ptr %a1254, ptr %a1255) + store { ptr, i64, i64 } %t1252, ptr %a1256 + call void @finch_str_drop(ptr %a1256) + %t1257 = load { ptr, i64, i64 }, ptr %a1253 + %t1258 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1246, { ptr, i64, i64 } %t1257) + store { ptr, i64, i64 } %t1257, ptr %a1259 + call void @finch_str_drop(ptr %a1259) + store { ptr, i64, i64 } %t1258, ptr %a1260 + %t1261 = load ptr, ptr %a1 + %t1262 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1261, { ptr, i64, i64 } { ptr @.str.5175, i64 26, i64 0 }) + store { ptr, i64, i64 } %t1262, ptr %a1263 + %t1264 = load ptr, ptr %a1 + %t1265 = load { ptr, i64, i64 }, ptr %a1260 + store { ptr, i64, i64 } { ptr @.str.5176, i64 20, i64 0 }, ptr %a1267 + store { ptr, i64, i64 } %t1265, ptr %a1268 + call void @finch_str_concat(ptr %a1266, ptr %a1267, ptr %a1268) + %t1269 = load { ptr, i64, i64 }, ptr %a1266 + store { ptr, i64, i64 } %t1269, ptr %a1271 + store { ptr, i64, i64 } { ptr @.str.5177, i64 1, i64 0 }, ptr %a1272 + call void @finch_str_concat(ptr %a1270, ptr %a1271, ptr %a1272) + store { ptr, i64, i64 } %t1269, ptr %a1273 + call void @finch_str_drop(ptr %a1273) + %t1274 = load { ptr, i64, i64 }, ptr %a1270 + call void @finch.gen.emit(ptr %t1264, { ptr, i64, i64 } %t1274) + store { ptr, i64, i64 } %t1274, ptr %a1275 + call void @finch_str_drop(ptr %a1275) + %t1276 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5178, i64 4, i64 0 }) + %t1277 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t1276, 1 + call void @finch_str_drop(ptr %a1263) + call void @finch_str_drop(ptr %a1260) + call void @finch.drop.S_gen_Val(ptr %a1245) + call void @finch_str_drop(ptr %a570) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t1277 +endif7900: + %t1278 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t1278, ptr %a1279 + store { ptr, i64, i64 } { ptr @.str.5179, i64 5, i64 0 }, ptr %a1280 + %t1281 = call i32 @finch_str_eq(ptr %a1279, ptr %a1280) + %t1282 = icmp ne i32 %t1281, 0 + br i1 %t1282, label %then7905, label %endif7907 +then7905: + %t1283 = load ptr, ptr %a1 + %t1284 = call %S.gen.Val @finch.gen.strConst(ptr %t1283, { ptr, i64, i64 } { ptr @.str.5180, i64 0, i64 0 }) + store %S.gen.Val %t1284, ptr %a1285 + %t1286 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t1287 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1286, i32 0, i32 1 + %t1288 = load i64, ptr %t1287 + %t1289 = icmp sgt i64 %t1288, 0 + br i1 %t1289, label %then7908, label %endif7910 +then7908: + %t1290 = load ptr, ptr %a1 + %t1291 = load %S.ast.Node, ptr %a2 + %t1292 = load { ptr, i64, i64 }, ptr %a8 + call void @finch.gen.checkArgs(ptr %t1290, %S.ast.Node %t1291, i64 0, i64 1, { ptr, i64, i64 } %t1292) + %t1293 = load ptr, ptr %a1 + %t1294 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t1295 = load { ptr, i64, i64 }, ptr %t1294 + %t1296 = extractvalue { ptr, i64, i64 } %t1295, 1 + %t1297 = icmp uge i64 0, %t1296 + br i1 %t1297, label %range7911, label %inrange7912 +range7911: + call void @finch_panic_index(ptr @.str.5181, i64 4780, i64 0, i64 %t1296) unreachable -inrange7545: - %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.5020, i64 119, i64 0 }) - br label %endif7543 -endif7543: - %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.5021, 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.5022, 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.5023, i64 4, i64 0 }) - %t1249 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t1248, 1 - ret %S.gen.Val %t1249 -endif7538: - %t1250 = load ptr, ptr %a1 - %t1251 = load ptr, ptr %a1 - %t1252 = icmp eq ptr %t1251, null - br i1 %t1252, label %panic7546, label %ok7547 -panic7546: - call void @finch_panic(ptr @.str.5024, i64 4473, ptr @.str.5025) - unreachable -ok7547: - %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 %then7548, label %endif7550 -then7548: - %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 %then7551, label %endif7553 -then7551: - %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.5026, 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.5027, 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 %endif7553 -endif7553: - %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.5028, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.5029, i64 0, i64 0 }) - ret %S.gen.Val %t1280 -endif7550: - %t1281 = load ptr, ptr %a1 - %t1282 = load ptr, ptr %a1 - %t1283 = icmp eq ptr %t1282, null - br i1 %t1283, label %panic7554, label %ok7555 -panic7554: - call void @finch_panic(ptr @.str.5030, i64 4480, ptr @.str.5031) - unreachable -ok7555: - %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.5032, 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 %then7556, label %endif7558 -then7556: - %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 -endif7558: - %t1296 = load ptr, ptr %a1 - %t1297 = load ptr, ptr %a1 - %t1298 = icmp eq ptr %t1297, null - br i1 %t1298, label %panic7559, label %ok7560 -panic7559: - call void @finch_panic(ptr @.str.5033, i64 4484, ptr @.str.5034) - unreachable -ok7560: - %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.5035, i64 0, i64 0 }, i1 true) - %t1303 = icmp sge i64 %t1302, 0 - br i1 %t1303, label %then7561, label %endif7563 -then7561: - %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 %then7564, label %endif7566 -then7564: - %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.5036, 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.5037, 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 +inrange7912: + %t1298 = extractvalue { ptr, i64, i64 } %t1295, 0 + %t1299 = getelementptr inbounds %S.ast.Node, ptr %t1298, i64 0 + %t1300 = load %S.ast.Node, ptr %t1299 + %t1301 = call %S.gen.Val @finch.gen.strArg(ptr %t1293, %S.ast.Node %t1300, { ptr, i64, i64 } { ptr @.str.5182, i64 12, i64 0 }) + %t1302 = load %S.gen.Val, ptr %a1285 + store %S.gen.Val %t1301, ptr %a1285 + store %S.gen.Val %t1302, ptr %a1303 + call void @finch.drop.S_gen_Val(ptr %a1303) + br label %endif7910 +endif7910: + %t1304 = load ptr, ptr %a1 + %t1305 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t1304) + store { ptr, i64, i64 } %t1305, ptr %a1306 + %t1307 = load ptr, ptr %a1 + %t1308 = load { ptr, i64, i64 }, ptr %a1306 + store { ptr, i64, i64 } { ptr @.str.5183, i64 27, i64 0 }, ptr %a1310 + store { ptr, i64, i64 } %t1308, ptr %a1311 + call void @finch_str_concat(ptr %a1309, ptr %a1310, ptr %a1311) + %t1312 = load { ptr, i64, i64 }, ptr %a1309 + store { ptr, i64, i64 } %t1312, ptr %a1314 + store { ptr, i64, i64 } { ptr @.str.5184, i64 6, i64 0 }, ptr %a1315 + call void @finch_str_concat(ptr %a1313, ptr %a1314, ptr %a1315) + store { ptr, i64, i64 } %t1312, ptr %a1316 + call void @finch_str_drop(ptr %a1316) + %t1317 = load { ptr, i64, i64 }, ptr %a1313 + %t1318 = load ptr, ptr %a1 + %t1319 = load %S.gen.Val, ptr %a1285 + %t1320 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t1318, %S.gen.Val %t1319) + store { ptr, i64, i64 } %t1317, 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.5038, 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 %endif7566 -endif7566: - 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.cond7567 -each.cond7567: - %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.body7568, label %each.end7570 -each.body7568: - %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.step7569 -each.step7569: - %t1350 = load i64, ptr %a1332 - %t1351 = add i64 %t1350, 1 - store i64 %t1351, ptr %a1332 - br label %each.cond7567 -each.end7570: - %t1352 = load ptr, ptr %a1 - %t1353 = load ptr, ptr %a1 - %t1354 = icmp eq ptr %t1353, null - br i1 %t1354, label %panic7571, label %ok7572 -panic7571: - call void @finch_panic(ptr @.str.5039, i64 4493, ptr @.str.5040) + store { ptr, i64, i64 } %t1317, ptr %a1324 + call void @finch_str_drop(ptr %a1324) + store { ptr, i64, i64 } %t1320, ptr %a1325 + call void @finch_str_drop(ptr %a1325) + %t1326 = load { ptr, i64, i64 }, ptr %a1321 + store { ptr, i64, i64 } %t1326, ptr %a1328 + store { ptr, i64, i64 } { ptr @.str.5185, i64 1, i64 0 }, ptr %a1329 + call void @finch_str_concat(ptr %a1327, ptr %a1328, ptr %a1329) + store { ptr, i64, i64 } %t1326, ptr %a1330 + call void @finch_str_drop(ptr %a1330) + %t1331 = load { ptr, i64, i64 }, ptr %a1327 + call void @finch.gen.emit(ptr %t1307, { ptr, i64, i64 } %t1331) + store { ptr, i64, i64 } %t1331, ptr %a1332 + call void @finch_str_drop(ptr %a1332) + %t1333 = load ptr, ptr %a1 + %t1334 = load %S.gen.Val, ptr %a1285 + call void @finch.gen.release(ptr %t1333, %S.gen.Val %t1334) + %t1335 = load ptr, ptr %a1 + %t1336 = load { ptr, i64, i64 }, ptr %a1306 + %t1337 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1335, { ptr, i64, i64 } { ptr @.str.5186, i64 17, i64 0 }, { ptr, i64, i64 } %t1336) + %t1338 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1337, 0 + %t1339 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5187, i64 3, i64 0 }) + %t1340 = insertvalue %S.gen.Val %t1338, %S.ast.Type %t1339, 1 + %t1341 = insertvalue %S.gen.Val %t1340, i1 true, 2 + call void @finch_str_drop(ptr %a1306) + call void @finch.drop.S_gen_Val(ptr %a1285) + call void @finch_str_drop(ptr %a570) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t1341 +endif7907: + %t1342 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t1342, ptr %a1343 + store { ptr, i64, i64 } { ptr @.str.5188, i64 3, i64 0 }, ptr %a1344 + %t1345 = call i32 @finch_str_eq(ptr %a1343, ptr %a1344) + %t1346 = icmp ne i32 %t1345, 0 + br i1 %t1346, label %then7913, label %endif7915 +then7913: + %t1347 = load ptr, ptr %a1 + %t1348 = load %S.ast.Node, ptr %a2 + %t1349 = load { ptr, i64, i64 }, ptr %a8 + call void @finch.gen.checkArgs(ptr %t1347, %S.ast.Node %t1348, i64 0, i64 1, { ptr, i64, i64 } %t1349) + %t1350 = load ptr, ptr %a1 + %t1351 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t1352 = load { ptr, i64, i64 }, ptr %t1351 + %t1353 = extractvalue { ptr, i64, i64 } %t1352, 1 + %t1354 = icmp uge i64 0, %t1353 + br i1 %t1354, label %range7916, label %inrange7917 +range7916: + call void @finch_panic_index(ptr @.str.5189, i64 4789, i64 0, i64 %t1353) unreachable -ok7572: - %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 = 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 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.Type, ptr %a1361, i32 0, i32 2 - %t1367 = load { ptr, i64, i64 }, ptr %t1366 - %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 -endif7563: - %t1375 = load ptr, ptr %a1 - %t1376 = load ptr, ptr %a1 - %t1377 = icmp eq ptr %t1376, null - br i1 %t1377, label %panic7573, label %ok7574 -panic7573: - call void @finch_panic(ptr @.str.5041, i64 4496, ptr @.str.5042) +inrange7917: + %t1355 = extractvalue { ptr, i64, i64 } %t1352, 0 + %t1356 = getelementptr inbounds %S.ast.Node, ptr %t1355, i64 0 + %t1357 = load %S.ast.Node, ptr %t1356 + %t1358 = call %S.gen.Val @finch.gen.expr(ptr %t1350, %S.ast.Node %t1357) + store %S.gen.Val %t1358, ptr %a1359 + %t1360 = load ptr, ptr %a1 + %t1361 = load ptr, ptr %a1 + %t1362 = getelementptr inbounds %S.gen.Val, ptr %a1359, i32 0, i32 1 + %t1363 = load %S.ast.Type, ptr %t1362 + %t1364 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t1361, %S.ast.Type %t1363) + store { ptr, i64, i64 } { ptr @.str.5190, i64 26, i64 0 }, ptr %a1366 + store { ptr, i64, i64 } %t1364, ptr %a1367 + call void @finch_str_concat(ptr %a1365, ptr %a1366, ptr %a1367) + store { ptr, i64, i64 } %t1364, ptr %a1368 + call void @finch_str_drop(ptr %a1368) + %t1369 = load { ptr, i64, i64 }, ptr %a1365 + store { ptr, i64, i64 } %t1369, ptr %a1371 + store { ptr, i64, i64 } { ptr @.str.5191, i64 1, i64 0 }, ptr %a1372 + call void @finch_str_concat(ptr %a1370, ptr %a1371, ptr %a1372) + store { ptr, i64, i64 } %t1369, ptr %a1373 + call void @finch_str_drop(ptr %a1373) + %t1374 = load { ptr, i64, i64 }, ptr %a1370 + %t1375 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1360, { ptr, i64, i64 } %t1374) + store { ptr, i64, i64 } %t1374, ptr %a1376 + call void @finch_str_drop(ptr %a1376) + store { ptr, i64, i64 } %t1375, ptr %a1377 + %t1378 = load ptr, ptr %a1 + %t1379 = load ptr, ptr %a1 + %t1380 = getelementptr inbounds %S.gen.Val, ptr %a1359, i32 0, i32 1 + %t1381 = load %S.ast.Type, ptr %t1380 + %t1382 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t1379, %S.ast.Type %t1381) + %t1383 = load ptr, ptr %a1 + %t1384 = load %S.gen.Val, ptr %a1359 + %t1385 = call { ptr, i64, i64 } @finch.gen.own(ptr %t1383, %S.gen.Val %t1384) + %t1386 = load { ptr, i64, i64 }, ptr %a1377 + call void @finch.gen.store(ptr %t1378, { ptr, i64, i64 } %t1382, { ptr, i64, i64 } %t1385, { ptr, i64, i64 } %t1386) + store { ptr, i64, i64 } %t1382, ptr %a1387 + call void @finch_str_drop(ptr %a1387) + store { ptr, i64, i64 } %t1385, ptr %a1388 + call void @finch_str_drop(ptr %a1388) + %t1389 = load { ptr, i64, i64 }, ptr %a1377 + store { ptr, i64, i64 } %t1389, ptr %a1390 + call void @finch_str_copy(ptr %a1391, ptr %a1390) + %t1392 = load { ptr, i64, i64 }, ptr %a1391 + %t1393 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1392, 0 + %t1394 = getelementptr inbounds %S.gen.Val, ptr %a1359, i32 0, i32 1 + %t1395 = load %S.ast.Type, ptr %t1394 + %t1396 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t1395) + %t1397 = insertvalue %S.gen.Val %t1393, %S.ast.Type %t1396, 1 + call void @finch_str_drop(ptr %a1377) + call void @finch.drop.S_gen_Val(ptr %a1359) + call void @finch_str_drop(ptr %a570) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t1397 +endif7915: + %t1398 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t1398, ptr %a1399 + store { ptr, i64, i64 } { ptr @.str.5192, i64 4, i64 0 }, ptr %a1400 + %t1401 = call i32 @finch_str_eq(ptr %a1399, ptr %a1400) + %t1402 = icmp ne i32 %t1401, 0 + br i1 %t1402, label %then7918, label %endif7920 +then7918: + %t1403 = load ptr, ptr %a1 + %t1404 = load %S.ast.Node, ptr %a2 + %t1405 = load { ptr, i64, i64 }, ptr %a8 + call void @finch.gen.checkArgs(ptr %t1403, %S.ast.Node %t1404, i64 0, i64 1, { ptr, i64, i64 } %t1405) + %t1406 = load ptr, ptr %a1 + %t1407 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t1408 = load { ptr, i64, i64 }, ptr %t1407 + %t1409 = extractvalue { ptr, i64, i64 } %t1408, 1 + %t1410 = icmp uge i64 0, %t1409 + br i1 %t1410, label %range7921, label %inrange7922 +range7921: + call void @finch_panic_index(ptr @.str.5193, i64 4796, i64 0, i64 %t1409) unreachable -ok7574: - %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 %then7575, label %endif7577 -then7575: - %t1385 = load ptr, ptr %a1 - %t1386 = icmp eq ptr %t1385, null - br i1 %t1386, label %panic7578, label %ok7579 -panic7578: - call void @finch_panic(ptr @.str.5043, i64 4498, ptr @.str.5044) +inrange7922: + %t1411 = extractvalue { ptr, i64, i64 } %t1408, 0 + %t1412 = getelementptr inbounds %S.ast.Node, ptr %t1411, i64 0 + %t1413 = load %S.ast.Node, ptr %t1412 + %t1414 = call %S.gen.Val @finch.gen.expr(ptr %t1406, %S.ast.Node %t1413) + store %S.gen.Val %t1414, ptr %a1415 + %t1416 = getelementptr inbounds %S.gen.Val, ptr %a1415, i32 0, i32 1 + %t1417 = getelementptr inbounds %S.ast.Type, ptr %t1416, i32 0, i32 0 + %t1418 = load { ptr, i64, i64 }, ptr %t1417 + store { ptr, i64, i64 } %t1418, ptr %a1419 + store { ptr, i64, i64 } { ptr @.str.5194, i64 3, i64 0 }, ptr %a1420 + %t1421 = call i32 @finch_str_eq(ptr %a1419, ptr %a1420) + %t1422 = icmp eq i32 %t1421, 0 + br i1 %t1422, label %then7923, label %endif7925 +then7923: + %t1423 = load ptr, ptr %a1 + %t1424 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t1425 = load { ptr, i64, i64 }, ptr %t1424 + %t1426 = extractvalue { ptr, i64, i64 } %t1425, 1 + %t1427 = icmp uge i64 0, %t1426 + br i1 %t1427, label %range7926, label %inrange7927 +range7926: + call void @finch_panic_index(ptr @.str.5195, i64 4798, i64 0, i64 %t1426) unreachable -ok7579: - %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 %range7580, label %inrange7581 -range7580: - call void @finch_panic_index(ptr @.str.5045, i64 4498, i64 %t1388, i64 %t1390) +inrange7927: + %t1428 = extractvalue { ptr, i64, i64 } %t1425, 0 + %t1429 = getelementptr inbounds %S.ast.Node, ptr %t1428, i64 0 + %t1430 = load %S.ast.Node, ptr %t1429 + call void @finch.gen.fail(ptr %t1423, %S.ast.Node %t1430, { ptr, i64, i64 } { ptr @.str.5196, i64 119, i64 0 }) + br label %endif7925 +endif7925: + %t1431 = getelementptr inbounds %S.gen.Val, ptr %a1415, i32 0, i32 1 + %t1432 = getelementptr inbounds %S.ast.Type, ptr %t1431, i32 0, i32 1 + %t1433 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1432, i32 0, i32 1 + %t1434 = load i64, ptr %t1433 + %t1435 = icmp sgt i64 %t1434, 0 + br label %logic.from7928 +logic.from7928: + br i1 %t1435, label %logic.rhs7929, label %logic.end7930 +logic.rhs7929: + %t1436 = load ptr, ptr %a1 + %t1437 = getelementptr inbounds %S.gen.Val, ptr %a1415, i32 0, i32 1 + %t1438 = getelementptr inbounds %S.ast.Type, ptr %t1437, i32 0, i32 1 + %t1439 = load { ptr, i64, i64 }, ptr %t1438 + %t1440 = extractvalue { ptr, i64, i64 } %t1439, 1 + %t1441 = icmp uge i64 0, %t1440 + br i1 %t1441, label %range7931, label %inrange7932 +range7931: + call void @finch_panic_index(ptr @.str.5197, i64 4800, i64 0, i64 %t1440) unreachable -inrange7581: - %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 %panic7582, label %ok7583 -panic7582: - call void @finch_panic(ptr @.str.5046, i64 4499, ptr @.str.5047) +inrange7932: + %t1442 = extractvalue { ptr, i64, i64 } %t1439, 0 + %t1443 = getelementptr inbounds %S.ast.Type, ptr %t1442, i64 0 + %t1444 = load %S.ast.Type, ptr %t1443 + %t1445 = call i1 @finch.gen.owning(ptr %t1436, %S.ast.Type %t1444) + br label %logic.rend7933 +logic.rend7933: + br label %logic.end7930 +logic.end7930: + %t1446 = phi i1 [ false, %logic.from7928 ], [ %t1445, %logic.rend7933 ] + br i1 %t1446, label %then7934, label %endif7936 +then7934: + %t1447 = load ptr, ptr %a1 + %t1448 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t1447, { ptr, i64, i64 } { ptr @.str.5198, i64 9, i64 0 }) + store { ptr, i64, i64 } %t1448, ptr %a1449 + %t1450 = load ptr, ptr %a1 + %t1451 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t1450, { ptr, i64, i64 } { ptr @.str.5199, i64 9, i64 0 }) + store { ptr, i64, i64 } %t1451, ptr %a1452 + %t1453 = load ptr, ptr %a1 + %t1454 = load ptr, ptr %a1 + %t1455 = getelementptr inbounds %S.gen.Val, ptr %a1415, i32 0, i32 0 + %t1456 = load { ptr, i64, i64 }, ptr %t1455 + store { ptr, i64, i64 } { ptr @.str.5200, i64 12, i64 0 }, ptr %a1458 + store { ptr, i64, i64 } %t1456, ptr %a1459 + call void @finch_str_concat(ptr %a1457, ptr %a1458, ptr %a1459) + %t1460 = load { ptr, i64, i64 }, ptr %a1457 + store { ptr, i64, i64 } %t1460, ptr %a1462 + store { ptr, i64, i64 } { ptr @.str.5201, i64 6, i64 0 }, ptr %a1463 + call void @finch_str_concat(ptr %a1461, ptr %a1462, ptr %a1463) + store { ptr, i64, i64 } %t1460, ptr %a1464 + call void @finch_str_drop(ptr %a1464) + %t1465 = load { ptr, i64, i64 }, ptr %a1461 + %t1466 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1454, { ptr, i64, i64 } %t1465) + store { ptr, i64, i64 } %t1465, ptr %a1467 + call void @finch_str_drop(ptr %a1467) + %t1468 = load { ptr, i64, i64 }, ptr %a1452 + %t1469 = load { ptr, i64, i64 }, ptr %a1449 + call void @finch.gen.condBr(ptr %t1453, { ptr, i64, i64 } %t1466, { ptr, i64, i64 } %t1468, { ptr, i64, i64 } %t1469) + store { ptr, i64, i64 } %t1466, ptr %a1470 + call void @finch_str_drop(ptr %a1470) + %t1471 = load ptr, ptr %a1 + %t1472 = load { ptr, i64, i64 }, ptr %a1449 + call void @finch.gen.label(ptr %t1471, { ptr, i64, i64 } %t1472) + %t1473 = load ptr, ptr %a1 + %t1474 = getelementptr inbounds %S.gen.Val, ptr %a1415, i32 0, i32 0 + %t1475 = load { ptr, i64, i64 }, ptr %t1474 + %t1476 = getelementptr inbounds %S.gen.Val, ptr %a1415, i32 0, i32 1 + %t1477 = getelementptr inbounds %S.ast.Type, ptr %t1476, i32 0, i32 1 + %t1478 = load { ptr, i64, i64 }, ptr %t1477 + %t1479 = extractvalue { ptr, i64, i64 } %t1478, 1 + %t1480 = icmp uge i64 0, %t1479 + br i1 %t1480, label %range7937, label %inrange7938 +range7937: + call void @finch_panic_index(ptr @.str.5202, i64 4805, i64 0, i64 %t1479) unreachable -ok7583: - %t1401 = getelementptr inbounds %S.gen.Gen, ptr %t1399, i32 0, i32 26 - %t1402 = load i1, ptr %t1401 - br label %logic.from7584 -logic.from7584: - br i1 %t1402, label %logic.rhs7585, label %logic.end7586 -logic.rhs7585: - %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.rend7587 -logic.rend7587: - br label %logic.end7586 -logic.end7586: - %t1406 = phi i1 [ false, %logic.from7584 ], [ %t1405, %logic.rend7587 ] - br i1 %t1406, label %then7588, label %endif7590 -then7588: - %t1407 = load ptr, ptr %a1 - %t1408 = icmp eq ptr %t1407, null - br i1 %t1408, label %panic7591, label %ok7592 -panic7591: - call void @finch_panic(ptr @.str.5048, i64 4500, ptr @.str.5049) - unreachable -ok7592: - %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 %range7593, label %inrange7594 -range7593: - call void @finch_panic_index(ptr @.str.5050, i64 4500, i64 %t1411, i64 %t1413) - unreachable -inrange7594: - %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 %range7595, label %inrange7596 -range7595: - call void @finch_panic_index(ptr @.str.5051, i64 4500, i64 %t1419, i64 %t1421) - unreachable -inrange7596: - %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.5052, 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.5053, 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.5054, 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 - store { ptr, i64, i64 } %t1454, ptr %a1456 - store { ptr, i64, i64 } { ptr @.str.5055, 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 %panic7597, label %ok7598 -panic7597: - call void @finch_panic(ptr @.str.5056, i64 4501, ptr @.str.5057) - unreachable -ok7598: - %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 %range7599, label %inrange7600 -range7599: - call void @finch_panic_index(ptr @.str.5058, i64 4501, i64 %t1463, i64 %t1465) - unreachable -inrange7600: - %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 %endif7590 -endif7590: - %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 -endif7577: - %t1482 = load ptr, ptr %a1 - %t1483 = load ptr, ptr %a1 - %t1484 = icmp eq ptr %t1483, null - br i1 %t1484, label %panic7601, label %ok7602 -panic7601: - call void @finch_panic(ptr @.str.5059, i64 4505, ptr @.str.5060) - unreachable -ok7602: - %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 %then7603, label %endif7605 -then7603: - %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 -endif7605: - %t1496 = load ptr, ptr %a1 - %t1497 = icmp eq ptr %t1496, null - br i1 %t1497, label %panic7606, label %ok7607 -panic7606: - call void @finch_panic(ptr @.str.5061, i64 4509, ptr @.str.5062) - unreachable -ok7607: - %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 %then7608, label %endif7610 -then7608: +inrange7938: + %t1481 = extractvalue { ptr, i64, i64 } %t1478, 0 + %t1482 = getelementptr inbounds %S.ast.Type, ptr %t1481, i64 0 + %t1483 = load %S.ast.Type, ptr %t1482 + call void @finch.gen.dropAt(ptr %t1473, { ptr, i64, i64 } %t1475, %S.ast.Type %t1483) + %t1484 = load ptr, ptr %a1 + %t1485 = load { ptr, i64, i64 }, ptr %a1452 + call void @finch.gen.br(ptr %t1484, { ptr, i64, i64 } %t1485) + %t1486 = load ptr, ptr %a1 + %t1487 = load { ptr, i64, i64 }, ptr %a1452 + call void @finch.gen.label(ptr %t1486, { ptr, i64, i64 } %t1487) + call void @finch_str_drop(ptr %a1452) + call void @finch_str_drop(ptr %a1449) + br label %endif7936 +endif7936: + %t1488 = load ptr, ptr %a1 + %t1489 = getelementptr inbounds %S.gen.Val, ptr %a1415, i32 0, i32 0 + %t1490 = load { ptr, i64, i64 }, ptr %t1489 + store { ptr, i64, i64 } { ptr @.str.5203, i64 20, i64 0 }, ptr %a1492 + store { ptr, i64, i64 } %t1490, ptr %a1493 + call void @finch_str_concat(ptr %a1491, ptr %a1492, ptr %a1493) + %t1494 = load { ptr, i64, i64 }, ptr %a1491 + store { ptr, i64, i64 } %t1494, ptr %a1496 + store { ptr, i64, i64 } { ptr @.str.5204, i64 1, i64 0 }, ptr %a1497 + call void @finch_str_concat(ptr %a1495, ptr %a1496, ptr %a1497) + store { ptr, i64, i64 } %t1494, ptr %a1498 + call void @finch_str_drop(ptr %a1498) + %t1499 = load { ptr, i64, i64 }, ptr %a1495 + call void @finch.gen.emit(ptr %t1488, { ptr, i64, i64 } %t1499) + store { ptr, i64, i64 } %t1499, ptr %a1500 + call void @finch_str_drop(ptr %a1500) + %t1501 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5205, i64 4, i64 0 }) + %t1502 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t1501, 1 + call void @finch.drop.S_gen_Val(ptr %a1415) + call void @finch_str_drop(ptr %a570) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t1502 +endif7920: + %t1503 = load ptr, ptr %a1 %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 %panic7611, label %ok7612 -panic7611: - call void @finch_panic(ptr @.str.5063, i64 4510, ptr @.str.5064) + %t1505 = icmp eq ptr %t1504, null + br i1 %t1505, label %panic7939, label %ok7940 +panic7939: + call void @finch_panic(ptr @.str.5206, i64 4812, ptr @.str.5207) unreachable -ok7612: - %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.missing7613, label %map.found7614 -map.missing7613: - 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.5065, i64 4510, ptr %a1514) - unreachable -map.found7614: - %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 -endif7610: - %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.5066, 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 %then7615, label %endif7617 -then7615: - %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 +ok7940: + %t1506 = getelementptr inbounds %S.gen.Gen, ptr %t1504, i32 0, i32 14 + %t1507 = load { ptr, i64, i64 }, ptr %t1506 + %t1508 = load { ptr, i64, i64 }, ptr %a8 + %t1509 = call i64 @finch.gen.findFn(ptr %t1503, { ptr, i64, i64 } %t1507, { ptr, i64, i64 } %t1508) + store i64 %t1509, ptr %a1510 + %t1511 = load i64, ptr %a1510 + %t1512 = icmp sge i64 %t1511, 0 + br i1 %t1512, label %then7941, label %endif7943 +then7941: + %t1513 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5 + %t1514 = getelementptr inbounds %S.ast.Type, ptr %t1513, i32 0, i32 1 + %t1515 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1514, i32 0, i32 1 + %t1516 = load i64, ptr %t1515 + %t1517 = icmp sgt i64 %t1516, 0 + br i1 %t1517, label %then7944, label %endif7946 +then7944: + %t1518 = load ptr, ptr %a1 + %t1519 = load %S.ast.Node, ptr %a2 + %t1520 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.5208, i64 1, i64 0 }, ptr %a1522 + store { ptr, i64, i64 } %t1520, ptr %a1523 + call void @finch_str_concat(ptr %a1521, ptr %a1522, ptr %a1523) + %t1524 = load { ptr, i64, i64 }, ptr %a1521 + store { ptr, i64, i64 } %t1524, ptr %a1526 + store { ptr, i64, i64 } { ptr @.str.5209, i64 47, i64 0 }, ptr %a1527 + call void @finch_str_concat(ptr %a1525, ptr %a1526, ptr %a1527) + store { ptr, i64, i64 } %t1524, ptr %a1528 + call void @finch_str_drop(ptr %a1528) + %t1529 = load { ptr, i64, i64 }, ptr %a1525 + call void @finch.gen.fail(ptr %t1518, %S.ast.Node %t1519, { ptr, i64, i64 } %t1529) + store { ptr, i64, i64 } %t1529, ptr %a1530 + call void @finch_str_drop(ptr %a1530) + br label %endif7946 +endif7946: + %t1531 = load ptr, ptr %a1 + %t1532 = load i64, ptr %a1510 %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 -endif7617: - %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 %then7618, label %endif7620 -then7618: - %t1539 = load ptr, ptr %a1 - %t1540 = load %S.ast.Node, ptr %a2 + %t1534 = load { ptr, i64, i64 }, ptr %a8 + %t1535 = call %S.gen.Val @finch.gen.callFn(ptr %t1531, i64 %t1532, %S.ast.Node %t1533, i64 0, { ptr, i64, i64 } %t1534, { ptr, i64, i64 } { ptr @.str.5210, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.5211, i64 0, i64 0 }) + call void @finch_str_drop(ptr %a570) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t1535 +endif7943: + %t1536 = load ptr, ptr %a1 + %t1537 = load ptr, ptr %a1 + %t1538 = icmp eq ptr %t1537, null + br i1 %t1538, label %panic7947, label %ok7948 +panic7947: + call void @finch_panic(ptr @.str.5212, i64 4819, ptr @.str.5213) + unreachable +ok7948: + %t1539 = getelementptr inbounds %S.gen.Gen, ptr %t1537, i32 0, i32 14 + %t1540 = load { ptr, i64, i64 }, ptr %t1539 %t1541 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.5067, 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.5068, 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 %endif7620 -endif7620: - %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.5069, 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.5070, 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) + %t1542 = call i64 @finch.gen.findTemplate(ptr %t1536, { ptr, i64, i64 } %t1540, { ptr, i64, i64 } %t1541, { ptr, i64, i64 } { ptr @.str.5214, i64 0, i64 0 }, i1 false) + store i64 %t1542, ptr %a1543 + %t1544 = load i64, ptr %a1543 + %t1545 = icmp sge i64 %t1544, 0 + br i1 %t1545, label %then7949, label %endif7951 +then7949: + %t1546 = load ptr, ptr %a1 + %t1547 = load %S.ast.Node, ptr %a2 + %t1548 = load i64, ptr %a1543 + %t1549 = load { ptr, i64, i64 }, ptr %a8 + %t1550 = call %S.gen.Val @finch.gen.genericCall(ptr %t1546, %S.ast.Node %t1547, i64 %t1548, i64 0, { ptr, i64, i64 } %t1549) + call void @finch_str_drop(ptr %a570) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t1550 +endif7951: + %t1551 = load ptr, ptr %a1 + %t1552 = load ptr, ptr %a1 + %t1553 = icmp eq ptr %t1552, null + br i1 %t1553, label %panic7952, label %ok7953 +panic7952: + call void @finch_panic(ptr @.str.5215, i64 4823, ptr @.str.5216) + unreachable +ok7953: + %t1554 = getelementptr inbounds %S.gen.Gen, ptr %t1552, i32 0, i32 14 + %t1555 = load { ptr, i64, i64 }, ptr %t1554 + %t1556 = load { ptr, i64, i64 }, ptr %a8 + %t1557 = call i64 @finch.gen.findTemplate(ptr %t1551, { ptr, i64, i64 } %t1555, { ptr, i64, i64 } %t1556, { ptr, i64, i64 } { ptr @.str.5217, i64 0, i64 0 }, i1 true) + %t1558 = icmp sge i64 %t1557, 0 + br i1 %t1558, label %then7954, label %endif7956 +then7954: + %t1559 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5 + %t1560 = getelementptr inbounds %S.ast.Type, ptr %t1559, i32 0, i32 1 + %t1561 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1560, i32 0, i32 1 + %t1562 = load i64, ptr %t1561 + %t1563 = icmp eq i64 %t1562, 0 + br i1 %t1563, label %then7957, label %endif7959 +then7957: + %t1564 = load ptr, ptr %a1 + %t1565 = load %S.ast.Node, ptr %a2 + %t1566 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.5218, i64 1, i64 0 }, ptr %a1568 + store { ptr, i64, i64 } %t1566, ptr %a1569 + call void @finch_str_concat(ptr %a1567, ptr %a1568, ptr %a1569) + %t1570 = load { ptr, i64, i64 }, ptr %a1567 + store { ptr, i64, i64 } %t1570, ptr %a1572 + store { ptr, i64, i64 } { ptr @.str.5219, i64 42, i64 0 }, ptr %a1573 + call void @finch_str_concat(ptr %a1571, ptr %a1572, ptr %a1573) + store { ptr, i64, i64 } %t1570, ptr %a1574 + call void @finch_str_drop(ptr %a1574) + %t1575 = load { ptr, i64, i64 }, ptr %a1571 + %t1576 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t1575, ptr %a1578 + store { ptr, i64, i64 } %t1576, ptr %a1579 + call void @finch_str_concat(ptr %a1577, ptr %a1578, ptr %a1579) + store { ptr, i64, i64 } %t1575, ptr %a1580 + call void @finch_str_drop(ptr %a1580) + %t1581 = load { ptr, i64, i64 }, ptr %a1577 + store { ptr, i64, i64 } %t1581, ptr %a1583 + store { ptr, i64, i64 } { ptr @.str.5220, i64 10, i64 0 }, ptr %a1584 + call void @finch_str_concat(ptr %a1582, ptr %a1583, ptr %a1584) + store { ptr, i64, i64 } %t1581, ptr %a1585 + call void @finch_str_drop(ptr %a1585) + %t1586 = load { ptr, i64, i64 }, ptr %a1582 + call void @finch.gen.fail(ptr %t1564, %S.ast.Node %t1565, { ptr, i64, i64 } %t1586) + store { ptr, i64, i64 } %t1586, ptr %a1587 + call void @finch_str_drop(ptr %a1587) + br label %endif7959 +endif7959: + store { ptr, i64, i64 } zeroinitializer, ptr %a1588 + %t1589 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5 + %t1590 = getelementptr inbounds %S.ast.Type, ptr %t1589, i32 0, i32 1 + store i64 0, ptr %a1591 + br label %each.cond7960 +each.cond7960: + %t1592 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1590, i32 0, i32 1 + %t1593 = load i64, ptr %t1592 + %t1594 = load i64, ptr %a1591 + %t1595 = icmp slt i64 %t1594, %t1593 + br i1 %t1595, label %each.body7961, label %each.end7963 +each.body7961: + %t1596 = load ptr, ptr %t1590 + %t1597 = getelementptr inbounds %S.ast.Type, ptr %t1596, i64 %t1594 + %t1598 = load %S.ast.Type, ptr %t1597 + store %S.ast.Type %t1598, ptr %a1599 + %t1600 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1588, i32 0, i32 1 + %t1601 = load ptr, ptr %a1 + %t1602 = load %S.ast.Type, ptr %a1599 + %t1603 = load %S.ast.Node, ptr %a2 + %t1604 = call %S.ast.Type @finch.gen.resolve(ptr %t1601, %S.ast.Type %t1602, %S.ast.Node %t1603) + %t1605 = load i64, ptr %t1600 + %t1606 = add i64 %t1605, 1 + call void @finch_arr_reserve(ptr %a1588, i64 %t1606, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) + %t1607 = load ptr, ptr %a1588 + %t1608 = getelementptr inbounds %S.ast.Type, ptr %t1607, i64 %t1605 + store %S.ast.Type %t1604, ptr %t1608 + store i64 %t1606, ptr %t1600 + br label %each.step7962 +each.step7962: + %t1609 = load i64, ptr %a1591 + %t1610 = add i64 %t1609, 1 + store i64 %t1610, ptr %a1591 + br label %each.cond7960 +each.end7963: + %t1611 = load ptr, ptr %a1 + %t1612 = load ptr, ptr %a1 + %t1613 = icmp eq ptr %t1612, null + br i1 %t1613, label %panic7964, label %ok7965 +panic7964: + call void @finch_panic(ptr @.str.5221, i64 4832, ptr @.str.5222) + unreachable +ok7965: + %t1614 = getelementptr inbounds %S.gen.Gen, ptr %t1612, i32 0, i32 14 + %t1615 = load { ptr, i64, i64 }, ptr %t1614 + %t1616 = load { ptr, i64, i64 }, ptr %a8 + %t1617 = load { ptr, i64, i64 }, ptr %a1588 + %t1618 = load %S.ast.Node, ptr %a2 + %t1619 = call %S.ast.Type @finch.gen.instStruct(ptr %t1611, { ptr, i64, i64 } %t1615, { ptr, i64, i64 } %t1616, { ptr, i64, i64 } %t1617, %S.ast.Node %t1618) + store %S.ast.Type %t1619, ptr %a1620 + %t1621 = load ptr, ptr %a1 + %t1622 = load ptr, ptr %a1 + %t1623 = getelementptr inbounds %S.ast.Type, ptr %a1620, i32 0, i32 3 + %t1624 = load { ptr, i64, i64 }, ptr %t1623 + %t1625 = getelementptr inbounds %S.ast.Type, ptr %a1620, i32 0, i32 2 + %t1626 = load { ptr, i64, i64 }, ptr %t1625 + %t1627 = call i64 @finch.gen.findStruct(ptr %t1622, { ptr, i64, i64 } %t1624, { ptr, i64, i64 } %t1626) + %t1628 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t1629 = load { ptr, i64, i64 }, ptr %t1628 + %t1630 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 10 + %t1631 = load { ptr, i64, i64 }, ptr %t1630 + %t1632 = load %S.ast.Node, ptr %a2 + %t1633 = call %S.gen.Val @finch.gen.construct(ptr %t1621, i64 %t1627, { ptr, i64, i64 } %t1629, { ptr, i64, i64 } %t1631, %S.ast.Node %t1632) + call void @finch.drop.S_ast_Type(ptr %a1620) + call void @finch.drop.arr_S_ast_Type(ptr %a1588) + call void @finch_str_drop(ptr %a570) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t1633 +endif7956: + %t1634 = load ptr, ptr %a1 + %t1635 = load ptr, ptr %a1 + %t1636 = icmp eq ptr %t1635, null + br i1 %t1636, label %panic7966, label %ok7967 +panic7966: + call void @finch_panic(ptr @.str.5223, i64 4835, ptr @.str.5224) + unreachable +ok7967: + %t1637 = getelementptr inbounds %S.gen.Gen, ptr %t1635, i32 0, i32 14 + %t1638 = load { ptr, i64, i64 }, ptr %t1637 + %t1639 = load { ptr, i64, i64 }, ptr %a8 + %t1640 = call i64 @finch.gen.findStruct(ptr %t1634, { ptr, i64, i64 } %t1638, { ptr, i64, i64 } %t1639) + store i64 %t1640, ptr %a1641 + %t1642 = load i64, ptr %a1641 + %t1643 = icmp sge i64 %t1642, 0 + br i1 %t1643, label %then7968, label %endif7970 +then7968: + %t1644 = load ptr, ptr %a1 + %t1645 = icmp eq ptr %t1644, null + br i1 %t1645, label %panic7971, label %ok7972 +panic7971: + call void @finch_panic(ptr @.str.5225, i64 4837, ptr @.str.5226) + unreachable +ok7972: + %t1646 = getelementptr inbounds %S.gen.Gen, ptr %t1644, i32 0, i32 16 + %t1647 = load i64, ptr %a1641 + %t1648 = load { ptr, i64, i64 }, ptr %t1646 + %t1649 = extractvalue { ptr, i64, i64 } %t1648, 1 + %t1650 = icmp uge i64 %t1647, %t1649 + br i1 %t1650, label %range7973, label %inrange7974 +range7973: + call void @finch_panic_index(ptr @.str.5227, i64 4837, i64 %t1647, i64 %t1649) + unreachable +inrange7974: + %t1651 = extractvalue { ptr, i64, i64 } %t1648, 0 + %t1652 = getelementptr inbounds %S.gen.StructDef, ptr %t1651, i64 %t1647 + %t1653 = load %S.gen.StructDef, ptr %t1652 + store %S.gen.StructDef %t1653, ptr %a1654 + call void @finch.copy.S_gen_StructDef(ptr %a1655, ptr %a1654) + %t1656 = load %S.gen.StructDef, ptr %a1655 + store %S.gen.StructDef %t1656, ptr %a1657 + %t1658 = load ptr, ptr %a1 + %t1659 = icmp eq ptr %t1658, null + br i1 %t1659, label %panic7975, label %ok7976 +panic7975: + call void @finch_panic(ptr @.str.5228, i64 4838, ptr @.str.5229) + unreachable +ok7976: + %t1660 = getelementptr inbounds %S.gen.Gen, ptr %t1658, i32 0, i32 27 + %t1661 = load i1, ptr %t1660 + br label %logic.from7977 +logic.from7977: + br i1 %t1661, label %logic.rhs7978, label %logic.end7979 +logic.rhs7978: + %t1662 = getelementptr inbounds %S.gen.StructDef, ptr %a1657, i32 0, i32 2 + %t1663 = load i1, ptr %t1662 + %t1664 = xor i1 %t1663, true + br label %logic.rend7980 +logic.rend7980: + br label %logic.end7979 +logic.end7979: + %t1665 = phi i1 [ false, %logic.from7977 ], [ %t1664, %logic.rend7980 ] + br i1 %t1665, label %then7981, label %endif7983 +then7981: + %t1666 = load ptr, ptr %a1 + %t1667 = icmp eq ptr %t1666, null + br i1 %t1667, label %panic7984, label %ok7985 +panic7984: + call void @finch_panic(ptr @.str.5230, i64 4839, ptr @.str.5231) + unreachable +ok7985: + %t1668 = getelementptr inbounds %S.gen.Gen, ptr %t1666, i32 0, i32 0 + %t1669 = getelementptr inbounds %S.gen.StructDef, ptr %a1657, i32 0, i32 13 + %t1670 = load i64, ptr %t1669 + %t1671 = load { ptr, i64, i64 }, ptr %t1668 + %t1672 = extractvalue { ptr, i64, i64 } %t1671, 1 + %t1673 = icmp uge i64 %t1670, %t1672 + br i1 %t1673, label %range7986, label %inrange7987 +range7986: + call void @finch_panic_index(ptr @.str.5232, i64 4839, i64 %t1670, i64 %t1672) + unreachable +inrange7987: + %t1674 = extractvalue { ptr, i64, i64 } %t1671, 0 + %t1675 = getelementptr inbounds %S.ast.Program, ptr %t1674, i64 %t1670 + %t1676 = getelementptr inbounds %S.ast.Program, ptr %t1675, i32 0, i32 6 + %t1677 = getelementptr inbounds %S.gen.StructDef, ptr %a1657, i32 0, i32 14 + %t1678 = load i64, ptr %t1677 + %t1679 = load { ptr, i64, i64 }, ptr %t1676 + %t1680 = extractvalue { ptr, i64, i64 } %t1679, 1 + %t1681 = icmp uge i64 %t1678, %t1680 + br i1 %t1681, label %range7988, label %inrange7989 +range7988: + call void @finch_panic_index(ptr @.str.5233, i64 4839, i64 %t1678, i64 %t1680) + unreachable +inrange7989: + %t1682 = extractvalue { ptr, i64, i64 } %t1679, 0 + %t1683 = getelementptr inbounds %S.ast.Node, ptr %t1682, i64 %t1678 + %t1684 = load %S.ast.Node, ptr %t1683 + store %S.ast.Node %t1684, ptr %a1685 + call void @finch.copy.S_ast_Node(ptr %a1686, ptr %a1685) + %t1687 = load %S.ast.Node, ptr %a1686 + store %S.ast.Node %t1687, ptr %a1688 + %t1689 = load ptr, ptr %a1 + %t1690 = load %S.ast.Node, ptr %a2 + %t1691 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 + %t1692 = load i64, ptr %t1691 + %t1693 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 + %t1694 = load i64, ptr %t1693 + %t1695 = getelementptr inbounds %S.gen.StructDef, ptr %a1657, i32 0, i32 1 + %t1696 = load { ptr, i64, i64 }, ptr %t1695 + store { ptr, i64, i64 } { ptr @.str.5234, i64 16, i64 0 }, ptr %a1698 + store { ptr, i64, i64 } %t1696, ptr %a1699 + call void @finch_str_concat(ptr %a1697, ptr %a1698, ptr %a1699) + %t1700 = load { ptr, i64, i64 }, ptr %a1697 + store { ptr, i64, i64 } %t1700, ptr %a1702 + store { ptr, i64, i64 } { ptr @.str.5235, i64 3, i64 0 }, ptr %a1703 + call void @finch_str_concat(ptr %a1701, ptr %a1702, ptr %a1703) + store { ptr, i64, i64 } %t1700, ptr %a1704 + call void @finch_str_drop(ptr %a1704) + %t1705 = load { ptr, i64, i64 }, ptr %a1701 + %t1706 = getelementptr inbounds %S.gen.StructDef, ptr %a1657, i32 0, i32 11 + %t1707 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1706, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.5236, i64 2, i64 0 }, ptr %a1708 + call void @finch_str_join(ptr %a1709, ptr %t1706, ptr %a1708) + %t1710 = load { ptr, i64, i64 }, ptr %a1709 + store { ptr, i64, i64 } %t1705, ptr %a1712 + store { ptr, i64, i64 } %t1710, ptr %a1713 + call void @finch_str_concat(ptr %a1711, ptr %a1712, ptr %a1713) + store { ptr, i64, i64 } %t1705, ptr %a1714 + call void @finch_str_drop(ptr %a1714) + store { ptr, i64, i64 } %t1710, ptr %a1715 + call void @finch_str_drop(ptr %a1715) + %t1716 = load { ptr, i64, i64 }, ptr %a1711 + store { ptr, i64, i64 } %t1716, ptr %a1718 + store { ptr, i64, i64 } { ptr @.str.5237, i64 6, i64 0 }, ptr %a1719 + call void @finch_str_concat(ptr %a1717, ptr %a1718, ptr %a1719) + store { ptr, i64, i64 } %t1716, ptr %a1720 + call void @finch_str_drop(ptr %a1720) + %t1721 = load { ptr, i64, i64 }, ptr %a1717 + %t1722 = load ptr, ptr %a1 + %t1723 = icmp eq ptr %t1722, null + br i1 %t1723, label %panic7990, label %ok7991 +panic7990: + call void @finch_panic(ptr @.str.5238, i64 4840, ptr @.str.5239) + unreachable +ok7991: + %t1724 = getelementptr inbounds %S.gen.Gen, ptr %t1722, i32 0, i32 1 + %t1725 = getelementptr inbounds %S.ast.Node, ptr %a1688, i32 0, i32 13 + %t1726 = load i64, ptr %t1725 + %t1727 = load { ptr, i64, i64 }, ptr %t1724 + %t1728 = extractvalue { ptr, i64, i64 } %t1727, 1 + %t1729 = icmp uge i64 %t1726, %t1728 + br i1 %t1729, label %range7992, label %inrange7993 +range7992: + call void @finch_panic_index(ptr @.str.5240, i64 4840, i64 %t1726, i64 %t1728) + unreachable +inrange7993: + %t1730 = extractvalue { ptr, i64, i64 } %t1727, 0 + %t1731 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1730, i64 %t1726 + %t1732 = load { ptr, i64, i64 }, ptr %t1731 + %t1733 = getelementptr inbounds %S.ast.Node, ptr %a1688, i32 0, i32 11 + %t1734 = load i64, ptr %t1733 + %t1735 = getelementptr inbounds %S.ast.Node, ptr %a1688, i32 0, i32 12 + %t1736 = load i64, ptr %t1735 + call void @finch.gen.noteRef(ptr %t1689, %S.ast.Node %t1690, i64 %t1692, i64 %t1694, { ptr, i64, i64 } %t1721, { ptr, i64, i64 } %t1732, i64 %t1734, i64 %t1736) + store { ptr, i64, i64 } %t1721, ptr %a1737 + call void @finch_str_drop(ptr %a1737) + call void @finch.drop.S_ast_Node(ptr %a1688) + br label %endif7983 +endif7983: + %t1738 = load ptr, ptr %a1 + %t1739 = load i64, ptr %a1641 + %t1740 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t1741 = load { ptr, i64, i64 }, ptr %t1740 + %t1742 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 10 + %t1743 = load { ptr, i64, i64 }, ptr %t1742 + %t1744 = load %S.ast.Node, ptr %a2 + %t1745 = call %S.gen.Val @finch.gen.construct(ptr %t1738, i64 %t1739, { ptr, i64, i64 } %t1741, { ptr, i64, i64 } %t1743, %S.ast.Node %t1744) + call void @finch.drop.S_gen_StructDef(ptr %a1657) + call void @finch_str_drop(ptr %a570) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t1745 +endif7970: + %t1746 = load ptr, ptr %a1 + %t1747 = load ptr, ptr %a1 + %t1748 = icmp eq ptr %t1747, null + br i1 %t1748, label %panic7994, label %ok7995 +panic7994: + call void @finch_panic(ptr @.str.5241, i64 4844, ptr @.str.5242) + unreachable +ok7995: + %t1749 = getelementptr inbounds %S.gen.Gen, ptr %t1747, i32 0, i32 14 + %t1750 = load { ptr, i64, i64 }, ptr %t1749 + %t1751 = load { ptr, i64, i64 }, ptr %a8 + %t1752 = call i64 @finch.gen.findEnum(ptr %t1746, { ptr, i64, i64 } %t1750, { ptr, i64, i64 } %t1751) + store i64 %t1752, ptr %a1753 + %t1754 = load i64, ptr %a1753 + %t1755 = icmp sge i64 %t1754, 0 + br i1 %t1755, label %then7996, label %endif7998 +then7996: + %t1756 = load ptr, ptr %a1 + %t1757 = load %S.ast.Node, ptr %a2 + %t1758 = load i64, ptr %a1753 + %t1759 = call %S.gen.Val @finch.gen.enumFrom(ptr %t1756, %S.ast.Node %t1757, i64 %t1758) + call void @finch_str_drop(ptr %a570) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t1759 +endif7998: + %t1760 = load ptr, ptr %a1 + %t1761 = icmp eq ptr %t1760, null + br i1 %t1761, label %panic7999, label %ok8000 +panic7999: + call void @finch_panic(ptr @.str.5243, i64 4848, ptr @.str.5244) + unreachable +ok8000: + %t1762 = getelementptr inbounds %S.gen.Gen, ptr %t1760, i32 0, i32 25 + %t1763 = getelementptr inbounds %S.cimport.CImports, ptr %t1762, i32 0, i32 0 + %t1764 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t1764, ptr %a1765 + %t1766 = call i64 @finch_map_find(ptr %t1763, ptr %a1765, 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) + %t1767 = icmp sge i64 %t1766, 0 + br i1 %t1767, label %then8001, label %endif8003 +then8001: + %t1768 = load ptr, ptr %a1 + %t1769 = load %S.ast.Node, ptr %a2 + %t1770 = load ptr, ptr %a1 + %t1771 = icmp eq ptr %t1770, null + br i1 %t1771, label %panic8004, label %ok8005 +panic8004: + call void @finch_panic(ptr @.str.5245, i64 4849, ptr @.str.5246) + unreachable +ok8005: + %t1772 = getelementptr inbounds %S.gen.Gen, ptr %t1770, i32 0, i32 25 + %t1773 = getelementptr inbounds %S.cimport.CImports, ptr %t1772, i32 0, i32 0 + %t1774 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t1774, ptr %a1775 + %t1776 = call i64 @finch_map_find(ptr %t1773, ptr %a1775, 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) + %t1777 = icmp slt i64 %t1776, 0 + br i1 %t1777, label %map.missing8006, label %map.found8007 +map.missing8006: + store { ptr, i64, i64 } zeroinitializer, ptr %a1778 + store { ptr, i64, i64 } %t1774, ptr %a1779 + call void @finch_buf_str(ptr %a1778, ptr %a1779, i32 1) + call void @finch_map_missing(ptr @.str.5247, i64 4849, ptr %a1778) + unreachable +map.found8007: + %t1780 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t1773, i32 0, i32 0 + %t1781 = load ptr, ptr %t1780 + %t1782 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t1781, i64 %t1776 + %t1783 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t1782, i32 0, i32 2 + %t1784 = load %S.cimport.CFunc, ptr %t1783 + %t1785 = call %S.gen.Val @finch.gen.callC(ptr %t1768, %S.ast.Node %t1769, %S.cimport.CFunc %t1784) + call void @finch_str_drop(ptr %a570) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t1785 +endif8003: + %t1786 = load ptr, ptr %a1 + %t1787 = load { ptr, i64, i64 }, ptr %a8 + %t1788 = call i64 @finch.gen.findStruct(ptr %t1786, { ptr, i64, i64 } { ptr @.str.5248, i64 1, i64 0 }, { ptr, i64, i64 } %t1787) + store i64 %t1788, ptr %a1641 + %t1789 = load i64, ptr %a1641 + %t1790 = icmp sge i64 %t1789, 0 + br i1 %t1790, label %then8008, label %endif8010 +then8008: + %t1791 = load ptr, ptr %a1 + %t1792 = load i64, ptr %a1641 + %t1793 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t1794 = load { ptr, i64, i64 }, ptr %t1793 + %t1795 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 10 + %t1796 = load { ptr, i64, i64 }, ptr %t1795 + %t1797 = load %S.ast.Node, ptr %a2 + %t1798 = call %S.gen.Val @finch.gen.construct(ptr %t1791, i64 %t1792, { ptr, i64, i64 } %t1794, { ptr, i64, i64 } %t1796, %S.ast.Node %t1797) + call void @finch_str_drop(ptr %a570) + call void @finch_str_drop(ptr %a8) + ret %S.gen.Val %t1798 +endif8010: + %t1799 = load ptr, ptr %a1 + %t1800 = load { ptr, i64, i64 }, ptr %a8 + %t1801 = call i64 @finch.gen.lookup(ptr %t1799, { ptr, i64, i64 } %t1800) + %t1802 = icmp sge i64 %t1801, 0 + br i1 %t1802, label %then8011, label %endif8013 +then8011: + %t1803 = load ptr, ptr %a1 + %t1804 = load %S.ast.Node, ptr %a2 + %t1805 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.5249, i64 1, i64 0 }, ptr %a1807 + store { ptr, i64, i64 } %t1805, ptr %a1808 + call void @finch_str_concat(ptr %a1806, ptr %a1807, ptr %a1808) + %t1809 = load { ptr, i64, i64 }, ptr %a1806 + store { ptr, i64, i64 } %t1809, ptr %a1811 + store { ptr, i64, i64 } { ptr @.str.5250, i64 31, i64 0 }, ptr %a1812 + call void @finch_str_concat(ptr %a1810, ptr %a1811, ptr %a1812) + store { ptr, i64, i64 } %t1809, ptr %a1813 + call void @finch_str_drop(ptr %a1813) + %t1814 = load { ptr, i64, i64 }, ptr %a1810 + call void @finch.gen.fail(ptr %t1803, %S.ast.Node %t1804, { ptr, i64, i64 } %t1814) + store { ptr, i64, i64 } %t1814, ptr %a1815 + call void @finch_str_drop(ptr %a1815) + br label %endif8013 +endif8013: + %t1816 = load ptr, ptr %a1 + %t1817 = load %S.ast.Node, ptr %a2 + %t1818 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.5251, i64 28, i64 0 }, ptr %a1820 + store { ptr, i64, i64 } %t1818, ptr %a1821 + call void @finch_str_concat(ptr %a1819, ptr %a1820, ptr %a1821) + %t1822 = load { ptr, i64, i64 }, ptr %a1819 + store { ptr, i64, i64 } %t1822, ptr %a1824 + store { ptr, i64, i64 } { ptr @.str.5252, i64 1, i64 0 }, ptr %a1825 + call void @finch_str_concat(ptr %a1823, ptr %a1824, ptr %a1825) + store { ptr, i64, i64 } %t1822, ptr %a1826 + call void @finch_str_drop(ptr %a1826) + %t1827 = load { ptr, i64, i64 }, ptr %a1823 + %t1828 = load { ptr, i64, i64 }, ptr %a8 + %t1829 = call { ptr, i64, i64 } @finch.gen.headerHint({ ptr, i64, i64 } %t1828) + store { ptr, i64, i64 } %t1827, ptr %a1831 + store { ptr, i64, i64 } %t1829, ptr %a1832 + call void @finch_str_concat(ptr %a1830, ptr %a1831, ptr %a1832) + store { ptr, i64, i64 } %t1827, ptr %a1833 + call void @finch_str_drop(ptr %a1833) + store { ptr, i64, i64 } %t1829, ptr %a1834 + call void @finch_str_drop(ptr %a1834) + %t1835 = load { ptr, i64, i64 }, ptr %a1830 + call void @finch.gen.fail(ptr %t1816, %S.ast.Node %t1817, { ptr, i64, i64 } %t1835) + store { ptr, i64, i64 } %t1835, ptr %a1836 + call void @finch_str_drop(ptr %a1836) + call void @finch_str_drop(ptr %a570) + call void @finch_str_drop(ptr %a8) ret %S.gen.Val zeroinitializer } @@ -68773,27 +81708,41 @@ entry: %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 - %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 - %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 + %a60 = alloca { ptr, i64, i64 }, align 16 + %a66 = alloca i64, align 16 + %a70 = alloca i64, align 16 + %a83 = alloca %S.ast.Node, align 16 + %a84 = alloca %S.ast.Node, align 16 + %a86 = alloca %S.ast.Node, align 16 + %a116 = alloca { ptr, i64, i64 }, align 16 + %a117 = alloca { ptr, i64, i64 }, align 16 + %a118 = alloca { ptr, i64, i64 }, align 16 + %a120 = alloca { ptr, i64, i64 }, align 16 + %a121 = alloca { ptr, i64, i64 }, align 16 + %a122 = alloca { ptr, i64, i64 }, align 16 + %a123 = alloca { ptr, i64, i64 }, align 16 + %a126 = alloca %S.gen.Val, align 16 + %a127 = alloca { ptr, i64, i64 }, align 16 + %a128 = alloca %S.gen.Val, align 16 + %a150 = alloca { ptr, i64, i64 }, align 16 + %a151 = alloca { ptr, i64, i64 }, align 16 + %a154 = alloca { ptr, i64, i64 }, align 16 + %a165 = alloca %S.ast.Type, align 16 + %a166 = alloca %S.ast.Type, align 16 + %a171 = alloca %S.gen.Val, 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 + %a190 = alloca { ptr, i64, i64 }, align 16 + %a191 = alloca { ptr, i64, i64 }, align 16 + %a192 = alloca { ptr, i64, i64 }, align 16 + %a193 = alloca { ptr, i64, i64 }, align 16 + %a203 = alloca %S.gen.Val, align 16 + %a204 = alloca %S.gen.Val, align 16 + %a220 = alloca %S.gen.Val, align 16 + %a221 = alloca i64, align 16 + %a229 = alloca %S.gen.Val, align 16 store ptr %p0, ptr %a1 store i64 %p1, ptr %a2 store %S.ast.Node %p2, ptr %a3 @@ -68803,21 +81752,21 @@ entry: store { ptr, i64, i64 } %p6, ptr %a7 %t8 = load ptr, ptr %a1 %t9 = icmp eq ptr %t8, null - br i1 %t9, label %panic7621, label %ok7622 -panic7621: - call void @finch_panic(ptr @.str.5071, i64 4524, ptr @.str.5072) + br i1 %t9, label %panic8014, label %ok8015 +panic8014: + call void @finch_panic(ptr @.str.5253, i64 4863, ptr @.str.5254) unreachable -ok7622: - %t10 = getelementptr inbounds %S.gen.Gen, ptr %t8, i32 0, i32 14 +ok8015: + %t10 = getelementptr inbounds %S.gen.Gen, ptr %t8, i32 0, i32 15 %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 %range7623, label %inrange7624 -range7623: - call void @finch_panic_index(ptr @.str.5073, i64 4524, i64 %t11, i64 %t13) + br i1 %t14, label %range8016, label %inrange8017 +range8016: + call void @finch_panic_index(ptr @.str.5255, i64 4863, i64 %t11, i64 %t13) unreachable -inrange7624: +inrange8017: %t15 = extractvalue { ptr, i64, i64 } %t12, 0 %t16 = getelementptr inbounds %S.gen.FnSig, ptr %t15, i64 %t11 %t17 = load %S.gen.FnSig, ptr %t16 @@ -68829,28 +81778,28 @@ inrange7624: %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.from7625 -logic.from7625: - br i1 %t25, label %logic.rhs7626, label %logic.end7627 -logic.rhs7626: + br label %logic.from8018 +logic.from8018: + br i1 %t25, label %logic.rhs8019, label %logic.end8020 +logic.rhs8019: %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.5074, i64 4, i64 0 }, ptr %a29 + store { ptr, i64, i64 } { ptr @.str.5256, 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.rend7628 -logic.rend7628: - br label %logic.end7627 -logic.end7627: - %t32 = phi i1 [ false, %logic.from7625 ], [ %t31, %logic.rend7628 ] - br i1 %t32, label %then7629, label %endif7631 -then7629: + br label %logic.rend8021 +logic.rend8021: + br label %logic.end8020 +logic.end8020: + %t32 = phi i1 [ false, %logic.from8018 ], [ %t31, %logic.rend8021 ] + br i1 %t32, label %then8022, label %endif8024 +then8022: %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.5075, i64 52, i64 0 }) - br label %endif7631 -endif7631: + call void @finch.gen.fail(ptr %t33, %S.ast.Node %t34, { ptr, i64, i64 } { ptr @.str.5257, i64 52, i64 0 }) + br label %endif8024 +endif8024: %t35 = load ptr, ptr %a1 %t36 = load %S.ast.Node, ptr %a3 %t37 = load %S.gen.FnSig, ptr %a21 @@ -68868,11 +81817,11 @@ endif7631: %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 %then7632, label %endif7634 -then7632: + br i1 %t49, label %then8025, label %endif8027 +then8025: %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.5076, i64 4, i64 0 }, ptr %a53 + store { ptr, i64, i64 } { ptr @.str.5258, 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 @@ -68883,212 +81832,293 @@ then7632: %t59 = getelementptr inbounds { ptr, i64, i64 }, ptr %t58, i64 %t56 store { ptr, i64, i64 } %t55, ptr %t59 store i64 %t57, ptr %t50 - br label %endif7634 -endif7634: - %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.cond7635 -for.cond7635: - %t64 = load i64, ptr %a63 - %t65 = icmp slt i64 %t64, %t62 - br i1 %t65, label %for.body7636, label %for.end7638 -for.body7636: - %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 %range7639, label %inrange7640 -range7639: - call void @finch_panic_index(ptr @.str.5077, i64 4535, i64 %t69, i64 %t71) + br label %endif8027 +endif8027: + store { ptr, i64, i64 } zeroinitializer, ptr %a60 + %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.5259, i64 4874, ptr @.str.5260) unreachable -inrange7640: - %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 - 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 %range7641, label %inrange7642 -range7641: - call void @finch_panic_index(ptr @.str.5078, i64 4536, i64 %t84, i64 %t86) +ok8029: + %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 i64, ptr %t64 + store i64 %t65, ptr %a66 + %t67 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 13 + %t68 = getelementptr inbounds { ptr, i64, i64 }, ptr %t67, i32 0, i32 1 + %t69 = load i64, ptr %t68 + store i64 0, ptr %a70 + br label %for.cond8030 +for.cond8030: + %t71 = load i64, ptr %a70 + %t72 = icmp slt i64 %t71, %t69 + br i1 %t72, label %for.body8031, label %for.end8033 +for.body8031: + %t73 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 9 + %t74 = load i64, ptr %a4 + %t75 = load i64, ptr %a70 + %t76 = add i64 %t74, %t75 + %t77 = load { ptr, i64, i64 }, ptr %t73 + %t78 = extractvalue { ptr, i64, i64 } %t77, 1 + %t79 = icmp uge i64 %t76, %t78 + br i1 %t79, label %range8034, label %inrange8035 +range8034: + call void @finch_panic_index(ptr @.str.5261, i64 4876, i64 %t76, i64 %t78) unreachable -inrange7642: - %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 %range7643, label %inrange7644 -range7643: - call void @finch_panic_index(ptr @.str.5079, i64 4536, i64 %t93, i64 %t95) +inrange8035: + %t80 = extractvalue { ptr, i64, i64 } %t77, 0 + %t81 = getelementptr inbounds %S.ast.Node, ptr %t80, i64 %t76 + %t82 = load %S.ast.Node, ptr %t81 + store %S.ast.Node %t82, ptr %a83 + call void @finch.copy.S_ast_Node(ptr %a84, ptr %a83) + %t85 = load %S.ast.Node, ptr %a84 + store %S.ast.Node %t85, ptr %a86 + %t87 = load ptr, ptr %a1 + %t88 = load ptr, ptr %a1 + %t89 = load %S.ast.Node, ptr %a86 + %t90 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 13 + %t91 = load i64, ptr %a70 + %t92 = load { ptr, i64, i64 }, ptr %t90 + %t93 = extractvalue { ptr, i64, i64 } %t92, 1 + %t94 = icmp uge i64 %t91, %t93 + br i1 %t94, label %range8036, label %inrange8037 +range8036: + call void @finch_panic_index(ptr @.str.5262, i64 4877, i64 %t91, i64 %t93) unreachable -inrange7644: - %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 %range7645, label %inrange7646 -range7645: - call void @finch_panic_index(ptr @.str.5081, i64 4536, i64 %t102, i64 %t104) +inrange8037: + %t95 = extractvalue { ptr, i64, i64 } %t92, 0 + %t96 = getelementptr inbounds %S.ast.Type, ptr %t95, i64 %t91 + %t97 = load %S.ast.Type, ptr %t96 + %t98 = call %S.gen.Val @finch.gen.exprWant(ptr %t88, %S.ast.Node %t89, %S.ast.Type %t97) + %t99 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 13 + %t100 = load i64, ptr %a70 + %t101 = load { ptr, i64, i64 }, ptr %t99 + %t102 = extractvalue { ptr, i64, i64 } %t101, 1 + %t103 = icmp uge i64 %t100, %t102 + br i1 %t103, label %range8038, label %inrange8039 +range8038: + call void @finch_panic_index(ptr @.str.5263, i64 4877, i64 %t100, i64 %t102) unreachable -inrange7646: - %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.5080, 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.5082, 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 %range7647, label %inrange7648 -range7647: - call void @finch_panic_index(ptr @.str.5083, i64 4538, i64 %t121, i64 %t123) +inrange8039: + %t104 = extractvalue { ptr, i64, i64 } %t101, 0 + %t105 = getelementptr inbounds %S.ast.Type, ptr %t104, i64 %t100 + %t106 = load %S.ast.Type, ptr %t105 + %t107 = load %S.ast.Node, ptr %a86 + %t108 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 14 + %t109 = load i64, ptr %a70 + %t110 = load { ptr, i64, i64 }, ptr %t108 + %t111 = extractvalue { ptr, i64, i64 } %t110, 1 + %t112 = icmp uge i64 %t109, %t111 + br i1 %t112, label %range8040, label %inrange8041 +range8040: + call void @finch_panic_index(ptr @.str.5265, i64 4877, i64 %t109, i64 %t111) unreachable -inrange7648: - %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.from7649 -logic.from7649: - br i1 %t128, label %logic.rhs7650, label %logic.end7651 -logic.rhs7650: - %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.rend7652 -logic.rend7652: - br label %logic.end7651 -logic.end7651: - %t132 = phi i1 [ false, %logic.from7649 ], [ %t131, %logic.rend7652 ] - br label %logic.from7653 -logic.from7653: - br i1 %t132, label %logic.rhs7654, label %logic.end7655 -logic.rhs7654: - %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.rend7656 -logic.rend7656: - br label %logic.end7655 -logic.end7655: - %t136 = phi i1 [ false, %logic.from7653 ], [ %t135, %logic.rend7656 ] - br label %logic.from7657 -logic.from7657: - br i1 %t136, label %logic.rhs7658, label %logic.end7659 -logic.rhs7658: - %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.rend7660 -logic.rend7660: - br label %logic.end7659 -logic.end7659: - %t144 = phi i1 [ false, %logic.from7657 ], [ %t143, %logic.rend7660 ] - br i1 %t144, label %then7661, label %endif7663 -then7661: - %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 %endif7663 -endif7663: - %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 %range7664, label %inrange7665 -range7664: - call void @finch_panic_index(ptr @.str.5084, i64 4541, i64 %t162, i64 %t164) +inrange8041: + %t113 = extractvalue { ptr, i64, i64 } %t110, 0 + %t114 = getelementptr inbounds { ptr, i64, i64 }, ptr %t113, i64 %t109 + %t115 = load { ptr, i64, i64 }, ptr %t114 + store { ptr, i64, i64 } { ptr @.str.5264, i64 10, 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.5266, i64 1, i64 0 }, ptr %a122 + call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122) + store { ptr, i64, i64 } %t119, ptr %a123 + call void @finch_str_drop(ptr %a123) + %t124 = load { ptr, i64, i64 }, ptr %a120 + %t125 = call %S.gen.Val @finch.gen.coerce(ptr %t87, %S.gen.Val %t98, %S.ast.Type %t106, %S.ast.Node %t107, { ptr, i64, i64 } %t124) + store %S.gen.Val %t98, ptr %a126 + call void @finch.drop.S_gen_Val(ptr %a126) + store { ptr, i64, i64 } %t124, ptr %a127 + call void @finch_str_drop(ptr %a127) + store %S.gen.Val %t125, ptr %a128 + %t129 = load ptr, ptr %a1 + %t130 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 13 + %t131 = load i64, ptr %a70 + %t132 = load { ptr, i64, i64 }, ptr %t130 + %t133 = extractvalue { ptr, i64, i64 } %t132, 1 + %t134 = icmp uge i64 %t131, %t133 + br i1 %t134, label %range8042, label %inrange8043 +range8042: + call void @finch_panic_index(ptr @.str.5267, i64 4879, i64 %t131, i64 %t133) unreachable -inrange7665: - %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.5085, 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.step7637 -for.step7637: - %t184 = load i64, ptr %a63 - %t185 = add i64 %t184, 1 - store i64 %t185, ptr %a63 - br label %for.cond7635 -for.end7638: - %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 +inrange8043: + %t135 = extractvalue { ptr, i64, i64 } %t132, 0 + %t136 = getelementptr inbounds %S.ast.Type, ptr %t135, i64 %t131 + %t137 = load %S.ast.Type, ptr %t136 + %t138 = call i1 @finch.gen.owning(ptr %t129, %S.ast.Type %t137) + br label %logic.from8044 +logic.from8044: + br i1 %t138, label %logic.rhs8045, label %logic.end8046 +logic.rhs8045: + %t139 = getelementptr inbounds %S.gen.Val, ptr %a128, i32 0, i32 2 + %t140 = load i1, ptr %t139 + %t141 = xor i1 %t140, true + br label %logic.rend8047 +logic.rend8047: + br label %logic.end8046 +logic.end8046: + %t142 = phi i1 [ false, %logic.from8044 ], [ %t141, %logic.rend8047 ] + br label %logic.from8048 +logic.from8048: + br i1 %t142, label %logic.rhs8049, label %logic.end8050 +logic.rhs8049: + %t143 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 + %t144 = load i64, ptr %t143 + %t145 = icmp sgt i64 %t144, 0 + br label %logic.rend8051 +logic.rend8051: + br label %logic.end8050 +logic.end8050: + %t146 = phi i1 [ false, %logic.from8048 ], [ %t145, %logic.rend8051 ] + br label %logic.from8052 +logic.from8052: + br i1 %t146, label %logic.rhs8053, label %logic.end8054 +logic.rhs8053: + %t147 = load %S.ast.Node, ptr %a86 + %t148 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t147) + %t149 = load { ptr, i64, i64 }, ptr %a7 + store { ptr, i64, i64 } %t148, ptr %a150 + store { ptr, i64, i64 } %t149, ptr %a151 + %t152 = call i32 @finch_str_eq(ptr %a150, ptr %a151) + %t153 = icmp ne i32 %t152, 0 + store { ptr, i64, i64 } %t148, ptr %a154 + call void @finch_str_drop(ptr %a154) + br label %logic.rend8055 +logic.rend8055: + br label %logic.end8054 +logic.end8054: + %t155 = phi i1 [ false, %logic.from8052 ], [ %t153, %logic.rend8055 ] + br i1 %t155, label %then8056, label %endif8058 +then8056: + %t156 = load ptr, ptr %a1 + %t157 = getelementptr inbounds %S.gen.Val, ptr %a128, i32 0, i32 0 + %t158 = load { ptr, i64, i64 }, ptr %t157 + %t159 = getelementptr inbounds %S.gen.Val, ptr %a128, i32 0, i32 1 + %t160 = load %S.ast.Type, ptr %t159 + %t161 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t156, { ptr, i64, i64 } %t158, %S.ast.Type %t160) + %t162 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t161, 0 + %t163 = getelementptr inbounds %S.gen.Val, ptr %a128, i32 0, i32 1 + %t164 = load %S.ast.Type, ptr %t163 + store %S.ast.Type %t164, ptr %a165 + call void @finch.copy.S_ast_Type(ptr %a166, ptr %a165) + %t167 = load %S.ast.Type, ptr %a166 + %t168 = insertvalue %S.gen.Val %t162, %S.ast.Type %t167, 1 + %t169 = insertvalue %S.gen.Val %t168, i1 true, 2 + %t170 = load %S.gen.Val, ptr %a128 + store %S.gen.Val %t169, ptr %a128 + store %S.gen.Val %t170, ptr %a171 + call void @finch.drop.S_gen_Val(ptr %a171) + br label %endif8058 +endif8058: + %t172 = getelementptr inbounds { ptr, i64, i64 }, ptr %a45, i32 0, i32 1 + %t173 = load ptr, ptr %a1 + %t174 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 13 + %t175 = load i64, ptr %a70 + %t176 = load { ptr, i64, i64 }, ptr %t174 + %t177 = extractvalue { ptr, i64, i64 } %t176, 1 + %t178 = icmp uge i64 %t175, %t177 + br i1 %t178, label %range8059, label %inrange8060 +range8059: + call void @finch_panic_index(ptr @.str.5268, i64 4882, i64 %t175, i64 %t177) + unreachable +inrange8060: + %t179 = extractvalue { ptr, i64, i64 } %t176, 0 + %t180 = getelementptr inbounds %S.ast.Type, ptr %t179, i64 %t175 + %t181 = load %S.ast.Type, ptr %t180 + %t182 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t173, %S.ast.Type %t181) + store { ptr, i64, i64 } %t182, ptr %a184 + store { ptr, i64, i64 } { ptr @.str.5269, i64 1, i64 0 }, ptr %a185 + call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) + store { ptr, i64, i64 } %t182, ptr %a186 + call void @finch_str_drop(ptr %a186) + %t187 = load { ptr, i64, i64 }, ptr %a183 + %t188 = getelementptr inbounds %S.gen.Val, ptr %a128, i32 0, i32 0 + %t189 = load { ptr, i64, i64 }, ptr %t188 + store { ptr, i64, i64 } %t187, ptr %a191 + store { ptr, i64, i64 } %t189, ptr %a192 + call void @finch_str_concat(ptr %a190, ptr %a191, ptr %a192) + store { ptr, i64, i64 } %t187, ptr %a193 + call void @finch_str_drop(ptr %a193) + %t194 = load { ptr, i64, i64 }, ptr %a190 + %t195 = load i64, ptr %t172 + %t196 = add i64 %t195, 1 + call void @finch_arr_reserve(ptr %a45, i64 %t196, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t197 = load ptr, ptr %a45 + %t198 = getelementptr inbounds { ptr, i64, i64 }, ptr %t197, i64 %t195 + store { ptr, i64, i64 } %t194, ptr %t198 + store i64 %t196, ptr %t172 + %t199 = getelementptr inbounds %S.gen.Val, ptr %a128, i32 0, i32 2 + %t200 = load i1, ptr %t199 + br i1 %t200, label %then8061, label %endif8063 +then8061: + %t201 = getelementptr inbounds { ptr, i64, i64 }, ptr %a60, i32 0, i32 1 + %t202 = load %S.gen.Val, ptr %a128 + store %S.gen.Val %t202, ptr %a203 + call void @finch.copy.S_gen_Val(ptr %a204, ptr %a203) + %t205 = load %S.gen.Val, ptr %a204 + %t206 = load i64, ptr %t201 + %t207 = add i64 %t206, 1 + call void @finch_arr_reserve(ptr %a60, i64 %t207, i64 ptrtoint (ptr getelementptr (%S.gen.Val, ptr null, i32 1) to i64)) + %t208 = load ptr, ptr %a60 + %t209 = getelementptr inbounds %S.gen.Val, ptr %t208, i64 %t206 + store %S.gen.Val %t205, ptr %t209 + store i64 %t207, ptr %t201 + br label %endif8063 +endif8063: + %t210 = load ptr, ptr %a1 + %t211 = load %S.gen.Val, ptr %a128 + call void @finch.gen.hold(ptr %t210, %S.gen.Val %t211) + call void @finch.drop.S_gen_Val(ptr %a128) + call void @finch.drop.S_ast_Node(ptr %a86) + br label %for.step8032 +for.step8032: + %t212 = load i64, ptr %a70 + %t213 = add i64 %t212, 1 + store i64 %t213, ptr %a70 + br label %for.cond8030 +for.end8033: + %t214 = load ptr, ptr %a1 + %t215 = load %S.gen.FnSig, ptr %a21 + %t216 = load %S.ast.Node, ptr %a3 + %t217 = load { ptr, i64, i64 }, ptr %a45 + %t218 = load { ptr, i64, i64 }, ptr %a5 + %t219 = call %S.gen.Val @finch.gen.emitCall(ptr %t214, %S.gen.FnSig %t215, %S.ast.Node %t216, { ptr, i64, i64 } %t217, { ptr, i64, i64 } %t218) + store %S.gen.Val %t219, ptr %a220 + store i64 0, ptr %a221 + br label %each.cond8064 +each.cond8064: + %t222 = getelementptr inbounds { ptr, i64, i64 }, ptr %a60, i32 0, i32 1 + %t223 = load i64, ptr %t222 + %t224 = load i64, ptr %a221 + %t225 = icmp slt i64 %t224, %t223 + br i1 %t225, label %each.body8065, label %each.end8067 +each.body8065: + %t226 = load ptr, ptr %a60 + %t227 = getelementptr inbounds %S.gen.Val, ptr %t226, i64 %t224 + %t228 = load %S.gen.Val, ptr %t227 + store %S.gen.Val %t228, ptr %a229 + %t230 = load ptr, ptr %a1 + %t231 = load %S.gen.Val, ptr %a229 + call void @finch.gen.release(ptr %t230, %S.gen.Val %t231) + br label %each.step8066 +each.step8066: + %t232 = load i64, ptr %a221 + %t233 = add i64 %t232, 1 + store i64 %t233, ptr %a221 + br label %each.cond8064 +each.end8067: + %t234 = load ptr, ptr %a1 + %t235 = load i64, ptr %a66 + call void @finch.gen.heldEnd(ptr %t234, i64 %t235) + %t236 = load %S.gen.Val, ptr %a220 + call void @finch.drop.arr_S_gen_Val(ptr %a60) + call void @finch.drop.arr_str(ptr %a45) + call void @finch.drop.S_gen_FnSig(ptr %a21) + ret %S.gen.Val %t236 } 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) { @@ -69100,107 +82130,142 @@ entry: %a5 = alloca { ptr, i64, i64 }, align 16 %a14 = alloca { ptr, i64, i64 }, align 16 %a15 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 + %a18 = 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 + %a25 = alloca { ptr, i64, i64 }, align 16 %a27 = alloca { ptr, i64, i64 }, align 16 %a28 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 + %a29 = alloca { ptr, i64, i64 }, align 16 + %a30 = 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 %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 + %a38 = 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 - %a42 = alloca { ptr, i64, i64 }, 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 %a49 = alloca { ptr, i64, i64 }, align 16 %a50 = alloca { ptr, i64, i64 }, align 16 %a51 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 + %a52 = alloca { ptr, i64, i64 }, align 16 %a55 = 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 - %a64 = alloca { ptr, i64, i64 }, align 16 + %a63 = 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 %a72 = alloca { ptr, i64, i64 }, align 16 %a74 = alloca { ptr, i64, i64 }, align 16 %a75 = alloca { ptr, i64, i64 }, align 16 %a76 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 + %a77 = 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 %a86 = alloca { ptr, i64, i64 }, align 16 %a87 = alloca { ptr, i64, i64 }, align 16 %a88 = alloca { ptr, i64, i64 }, align 16 - %a90 = 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 + %a95 = 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 + %a99 = 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 + %a104 = alloca { ptr, i64, i64 }, align 16 %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = 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 - %a114 = 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 + %a118 = alloca { ptr, i64, i64 }, align 16 %a119 = alloca { ptr, i64, i64 }, align 16 + %a120 = 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 + %a125 = alloca { ptr, i64, i64 }, align 16 %a128 = alloca { ptr, i64, i64 }, align 16 - %a138 = 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 + %a133 = 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 %a139 = alloca { ptr, i64, i64 }, align 16 %a140 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 %a143 = alloca { ptr, i64, i64 }, align 16 %a144 = alloca { ptr, i64, i64 }, align 16 + %a145 = alloca { ptr, i64, i64 }, align 16 %a147 = alloca { ptr, i64, i64 }, align 16 %a148 = 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 + %a150 = alloca { ptr, i64, i64 }, align 16 %a153 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 + %a158 = alloca { ptr, i64, i64 }, align 16 %a163 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca %S.ast.Type, align 16 - %a169 = alloca %S.ast.Type, align 16 + %a164 = alloca { ptr, i64, i64 }, align 16 + %a165 = alloca { ptr, i64, i64 }, align 16 + %a166 = alloca { ptr, i64, i64 }, align 16 + %a168 = 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 + %a174 = alloca { ptr, i64, i64 }, align 16 + %a175 = 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 + %a179 = alloca { ptr, i64, i64 }, align 16 %a180 = alloca { ptr, i64, i64 }, align 16 %a181 = alloca { ptr, i64, i64 }, align 16 %a182 = 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 - %a189 = alloca { ptr, i64, i64 }, align 16 %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca %S.ast.Type, align 16 - %a198 = alloca %S.ast.Type, align 16 + %a194 = alloca { ptr, i64, i64 }, align 16 + %a195 = alloca { ptr, i64, i64 }, align 16 + %a200 = alloca %S.ast.Type, align 16 + %a201 = alloca %S.ast.Type, align 16 + %a208 = alloca { ptr, i64, i64 }, align 16 %a209 = alloca { ptr, i64, i64 }, align 16 %a210 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca %S.ast.Type, align 16 - %a218 = alloca %S.ast.Type, align 16 - %a227 = alloca %S.ast.Type, align 16 - %a228 = alloca %S.ast.Type, align 16 + %a211 = 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 + %a216 = 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 + %a222 = 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 + %a227 = alloca { ptr, i64, i64 }, align 16 + %a230 = alloca { ptr, i64, i64 }, align 16 + %a234 = alloca %S.ast.Type, align 16 + %a235 = alloca %S.ast.Type, align 16 + %a246 = alloca { ptr, i64, i64 }, align 16 + %a247 = alloca { ptr, i64, i64 }, align 16 + %a254 = alloca %S.ast.Type, align 16 + %a255 = alloca %S.ast.Type, align 16 + %a264 = alloca %S.ast.Type, align 16 + %a265 = alloca %S.ast.Type, align 16 store ptr %p0, ptr %a1 store %S.gen.FnSig %p1, ptr %a2 store %S.ast.Node %p2, ptr %a3 @@ -69208,18 +82273,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.from7666 -logic.from7666: - br i1 %t7, label %logic.rhs7667, label %logic.end7668 -logic.rhs7667: + br label %logic.from8068 +logic.from8068: + br i1 %t7, label %logic.rhs8069, label %logic.end8070 +logic.rhs8069: %t8 = load ptr, ptr %a1 %t9 = icmp eq ptr %t8, null - br i1 %t9, label %panic7669, label %ok7670 -panic7669: - call void @finch_panic(ptr @.str.5086, i64 4548, ptr @.str.5087) + br i1 %t9, label %panic8071, label %ok8072 +panic8071: + call void @finch_panic(ptr @.str.5270, i64 4898, ptr @.str.5271) unreachable -ok7670: - %t10 = getelementptr inbounds %S.gen.Gen, ptr %t8, i32 0, i32 39 +ok8072: + %t10 = getelementptr inbounds %S.gen.Gen, ptr %t8, i32 0, i32 40 %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) @@ -69227,259 +82292,339 @@ ok7670: 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.rend7671 -logic.rend7671: - br label %logic.end7668 -logic.end7668: - %t18 = phi i1 [ false, %logic.from7666 ], [ %t17, %logic.rend7671 ] - br i1 %t18, label %then7672, label %endif7674 -then7672: - %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.5088, 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.5089, 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 - store { ptr, i64, i64 } %t29, 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.5090, 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 - store { ptr, i64, i64 } %t38, 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.5091, i64 27, i64 0 }, ptr %a46 + store { ptr, i64, i64 } %t13, ptr %a18 + call void @finch_str_drop(ptr %a18) + br label %logic.rend8073 +logic.rend8073: + br label %logic.end8070 +logic.end8070: + %t19 = phi i1 [ false, %logic.from8068 ], [ %t17, %logic.rend8073 ] + br i1 %t19, label %then8074, label %endif8076 +then8074: + %t20 = load ptr, ptr %a1 + %t21 = load %S.ast.Node, ptr %a3 + %t22 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.5272, i64 1, 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.5273, i64 39, i64 0 }, ptr %a29 + call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) + store { ptr, i64, i64 } %t26, ptr %a30 + call void @finch_str_drop(ptr %a30) + %t31 = load { ptr, i64, i64 }, ptr %a27 + %t32 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } %t31, ptr %a34 + store { ptr, i64, i64 } %t32, ptr %a35 + call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) + store { ptr, i64, i64 } %t31, ptr %a36 + call void @finch_str_drop(ptr %a36) + %t37 = load { ptr, i64, i64 }, ptr %a33 + store { ptr, i64, i64 } %t37, ptr %a39 + store { ptr, i64, i64 } { ptr @.str.5274, i64 19, i64 0 }, ptr %a40 + call void @finch_str_concat(ptr %a38, ptr %a39, ptr %a40) + store { ptr, i64, i64 } %t37, ptr %a41 + call void @finch_str_drop(ptr %a41) + %t42 = load { ptr, i64, i64 }, ptr %a38 + %t43 = load { ptr, i64, i64 }, ptr %a5 + 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, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t47, ptr %a50 - store { ptr, i64, i64 } %t48, ptr %a51 + store { ptr, i64, i64 } %t42, ptr %a47 + call void @finch_str_drop(ptr %a47) + %t48 = load { ptr, i64, i64 }, ptr %a44 + store { ptr, i64, i64 } %t48, ptr %a50 + store { ptr, i64, i64 } { ptr @.str.5275, i64 27, i64 0 }, 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.5092, 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 %endif7674 -endif7674: - %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.5093, i64 5, i64 0 }, ptr %a61 - store { ptr, i64, i64 } %t59, ptr %a62 + store { ptr, i64, i64 } %t48, ptr %a52 + call void @finch_str_drop(ptr %a52) + %t53 = load { ptr, i64, i64 }, ptr %a49 + %t54 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } %t53, ptr %a56 + store { ptr, i64, i64 } %t54, ptr %a57 + call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) + store { ptr, i64, i64 } %t53, ptr %a58 + call void @finch_str_drop(ptr %a58) + %t59 = load { ptr, i64, i64 }, ptr %a55 + store { ptr, i64, i64 } %t59, ptr %a61 + store { ptr, i64, i64 } { ptr @.str.5276, i64 5, i64 0 }, 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.5094, 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 - %t69 = load { ptr, i64, i64 }, ptr %t68 - store { ptr, i64, i64 } %t67, 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 } %t59, ptr %a63 + call void @finch_str_drop(ptr %a63) + %t64 = load { ptr, i64, i64 }, ptr %a60 + call void @finch.gen.fail(ptr %t20, %S.ast.Node %t21, { ptr, i64, i64 } %t64) + store { ptr, i64, i64 } %t64, ptr %a65 + call void @finch_str_drop(ptr %a65) + br label %endif8076 +endif8076: + %t66 = load ptr, ptr %a1 + %t67 = load %S.gen.FnSig, ptr %a2 + %t68 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t66, %S.gen.FnSig %t67) + store { ptr, i64, i64 } { ptr @.str.5277, i64 5, i64 0 }, ptr %a70 + store { ptr, i64, i64 } %t68, ptr %a71 + call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) + store { ptr, i64, i64 } %t68, ptr %a72 + call void @finch_str_drop(ptr %a72) + %t73 = load { ptr, i64, i64 }, ptr %a69 store { ptr, i64, i64 } %t73, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.5095, i64 1, i64 0 }, ptr %a76 + store { ptr, i64, i64 } { ptr @.str.5278, 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.5096, 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 - 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 } %t73, ptr %a77 + call void @finch_str_drop(ptr %a77) + %t78 = load { ptr, i64, i64 }, ptr %a74 + %t79 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 11 + %t80 = load { ptr, i64, i64 }, ptr %t79 + store { ptr, i64, i64 } %t78, ptr %a82 + store { ptr, i64, i64 } %t80, ptr %a83 + call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) + store { ptr, i64, i64 } %t78, ptr %a84 + call void @finch_str_drop(ptr %a84) + %t85 = load { ptr, i64, i64 }, ptr %a81 store { ptr, i64, i64 } %t85, ptr %a87 - store { ptr, i64, i64 } { ptr @.str.5097, i64 1, i64 0 }, ptr %a88 + store { ptr, i64, i64 } { ptr @.str.5279, 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 %then7675, label %endif7677 -then7675: - %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) - store { ptr, i64, i64 } %t95, ptr %a96 - %t97 = load ptr, ptr %a1 - %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.5098, i64 13, i64 0 }, ptr %a102 - store { ptr, i64, i64 } %t100, ptr %a103 + store { ptr, i64, i64 } %t85, ptr %a89 + call void @finch_str_drop(ptr %a89) + %t90 = load { ptr, i64, i64 }, ptr %a86 + %t91 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.5280, i64 2, i64 0 }, ptr %a92 + call void @finch_str_join(ptr %a93, ptr %a4, ptr %a92) + %t94 = load { ptr, i64, i64 }, ptr %a93 + store { ptr, i64, i64 } %t90, ptr %a96 + store { ptr, i64, i64 } %t94, ptr %a97 + call void @finch_str_concat(ptr %a95, ptr %a96, ptr %a97) + store { ptr, i64, i64 } %t90, ptr %a98 + call void @finch_str_drop(ptr %a98) + store { ptr, i64, i64 } %t94, ptr %a99 + call void @finch_str_drop(ptr %a99) + %t100 = load { ptr, i64, i64 }, ptr %a95 + store { ptr, i64, i64 } %t100, ptr %a102 + store { ptr, i64, i64 } { ptr @.str.5281, i64 1, i64 0 }, 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.5099, 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 - store { ptr, i64, i64 } %t108, 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.5100, 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.5101, i64 7, i64 0 }, ptr %a123 - store { ptr, i64, i64 } %t121, ptr %a124 + store { ptr, i64, i64 } %t100, ptr %a104 + call void @finch_str_drop(ptr %a104) + %t105 = load { ptr, i64, i64 }, ptr %a101 + store { ptr, i64, i64 } %t105, ptr %a106 + %t107 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 9 + %t108 = load i1, ptr %t107 + br i1 %t108, label %then8077, label %endif8079 +then8077: + %t109 = load ptr, ptr %a1 + %t110 = load { ptr, i64, i64 }, ptr %a106 + %t111 = call { ptr, i64, i64 } @finch.gen.op(ptr %t109, { ptr, i64, i64 } %t110) + store { ptr, i64, i64 } %t111, ptr %a112 + %t113 = load ptr, ptr %a1 + %t114 = load ptr, ptr %a1 + %t115 = load %S.gen.FnSig, ptr %a2 + %t116 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t114, %S.gen.FnSig %t115) + store { ptr, i64, i64 } { ptr @.str.5282, i64 13, i64 0 }, ptr %a118 + store { ptr, i64, i64 } %t116, ptr %a119 + call void @finch_str_concat(ptr %a117, ptr %a118, ptr %a119) + store { ptr, i64, i64 } %t116, ptr %a120 + call void @finch_str_drop(ptr %a120) + %t121 = load { ptr, i64, i64 }, ptr %a117 + store { ptr, i64, i64 } %t121, ptr %a123 + store { ptr, i64, i64 } { ptr @.str.5283, i64 1, i64 0 }, 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.5102, 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 %panic7678, label %ok7679 -panic7678: - call void @finch_panic(ptr @.str.5103, i64 4555, ptr @.str.5104) - unreachable -ok7679: - %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.5105, 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.5106, 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 - store { ptr, i64, i64 } %t145, ptr %a148 - store { ptr, i64, i64 } %t146, ptr %a149 + store { ptr, i64, i64 } %t121, ptr %a125 + call void @finch_str_drop(ptr %a125) + %t126 = load { ptr, i64, i64 }, ptr %a122 + %t127 = load { ptr, i64, i64 }, ptr %a112 + store { ptr, i64, i64 } %t126, ptr %a129 + store { ptr, i64, i64 } %t127, ptr %a130 + call void @finch_str_concat(ptr %a128, ptr %a129, ptr %a130) + store { ptr, i64, i64 } %t126, ptr %a131 + call void @finch_str_drop(ptr %a131) + %t132 = load { ptr, i64, i64 }, ptr %a128 + store { ptr, i64, i64 } %t132, ptr %a134 + store { ptr, i64, i64 } { ptr @.str.5284, i64 3, i64 0 }, ptr %a135 + call void @finch_str_concat(ptr %a133, ptr %a134, ptr %a135) + store { ptr, i64, i64 } %t132, ptr %a136 + call void @finch_str_drop(ptr %a136) + %t137 = load { ptr, i64, i64 }, ptr %a133 + %t138 = call { ptr, i64, i64 } @finch.gen.op(ptr %t113, { ptr, i64, i64 } %t137) + store { ptr, i64, i64 } %t137, ptr %a139 + call void @finch_str_drop(ptr %a139) + store { ptr, i64, i64 } %t138, ptr %a140 + %t141 = load ptr, ptr %a1 + %t142 = load { ptr, i64, i64 }, ptr %a140 + store { ptr, i64, i64 } { ptr @.str.5285, i64 7, i64 0 }, ptr %a144 + store { ptr, i64, i64 } %t142, 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 %a148 + store { ptr, i64, i64 } { ptr @.str.5286, i64 6, i64 0 }, ptr %a149 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.5107, 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 %panic7680, label %ok7681 -panic7680: - call void @finch_panic(ptr @.str.5108, i64 4556, ptr @.str.5109) + store { ptr, i64, i64 } %t146, ptr %a150 + call void @finch_str_drop(ptr %a150) + %t151 = load { ptr, i64, i64 }, ptr %a147 + %t152 = call { ptr, i64, i64 } @finch.gen.op(ptr %t141, { ptr, i64, i64 } %t151) + store { ptr, i64, i64 } %t151, ptr %a153 + call void @finch_str_drop(ptr %a153) + %t154 = load ptr, ptr %a1 + %t155 = icmp eq ptr %t154, null + br i1 %t155, label %panic8080, label %ok8081 +panic8080: + call void @finch_panic(ptr @.str.5287, i64 4905, ptr @.str.5288) unreachable -ok7681: - %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.5110, 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 %then7682, label %endif7684 -then7682: - %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 - call void @finch.copy.S_ast_Type(ptr %a169, ptr %a168) - %t170 = load %S.ast.Type, ptr %a169 - %t171 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t170, 1 - ret %S.gen.Val %t171 -endif7684: - %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.5111, 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.5112, 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 - store { ptr, i64, i64 } %t183, 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.5113, 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) - %t194 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t193, 0 - %t195 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t196 = load %S.ast.Type, ptr %t195 - store %S.ast.Type %t196, ptr %a197 - call void @finch.copy.S_ast_Type(ptr %a198, ptr %a197) - %t199 = load %S.ast.Type, ptr %a198 - %t200 = insertvalue %S.gen.Val %t194, %S.ast.Type %t199, 1 - %t201 = load ptr, ptr %a1 - %t202 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t203 = load %S.ast.Type, ptr %t202 - %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 -endif7677: - %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.5114, 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 %then7685, label %endif7687 -then7685: - %t213 = load ptr, ptr %a1 - %t214 = load { ptr, i64, i64 }, ptr %a90 - call void @finch.gen.emit(ptr %t213, { ptr, i64, i64 } %t214) - %t215 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t216 = load %S.ast.Type, ptr %t215 - 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 zeroinitializer, %S.ast.Type %t219, 1 - ret %S.gen.Val %t220 -endif7687: - %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) - %t224 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t223, 0 - %t225 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t226 = load %S.ast.Type, ptr %t225 - store %S.ast.Type %t226, ptr %a227 - call void @finch.copy.S_ast_Type(ptr %a228, ptr %a227) - %t229 = load %S.ast.Type, ptr %a228 - %t230 = insertvalue %S.gen.Val %t224, %S.ast.Type %t229, 1 - %t231 = load ptr, ptr %a1 +ok8081: + %t156 = getelementptr inbounds %S.gen.Gen, ptr %t154, i32 0, i32 41 + %t157 = load { ptr, i64, i64 }, ptr %t156 + store { ptr, i64, i64 } %t152, ptr %t156 + store { ptr, i64, i64 } %t157, ptr %a158 + call void @finch_str_drop(ptr %a158) + %t159 = load ptr, ptr %a1 + %t160 = load ptr, ptr %a1 + %t161 = load %S.gen.FnSig, ptr %a2 + %t162 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t160, %S.gen.FnSig %t161) + store { ptr, i64, i64 } { ptr @.str.5289, i64 13, i64 0 }, ptr %a164 + store { ptr, i64, i64 } %t162, ptr %a165 + call void @finch_str_concat(ptr %a163, ptr %a164, ptr %a165) + store { ptr, i64, i64 } %t162, ptr %a166 + call void @finch_str_drop(ptr %a166) + %t167 = load { ptr, i64, i64 }, ptr %a163 + store { ptr, i64, i64 } %t167, ptr %a169 + store { ptr, i64, i64 } { ptr @.str.5290, i64 1, i64 0 }, ptr %a170 + call void @finch_str_concat(ptr %a168, ptr %a169, ptr %a170) + store { ptr, i64, i64 } %t167, ptr %a171 + call void @finch_str_drop(ptr %a171) + %t172 = load { ptr, i64, i64 }, ptr %a168 + %t173 = load { ptr, i64, i64 }, ptr %a112 + store { ptr, i64, i64 } %t172, ptr %a175 + store { ptr, i64, i64 } %t173, ptr %a176 + call void @finch_str_concat(ptr %a174, ptr %a175, ptr %a176) + store { ptr, i64, i64 } %t172, ptr %a177 + call void @finch_str_drop(ptr %a177) + %t178 = load { ptr, i64, i64 }, ptr %a174 + store { ptr, i64, i64 } %t178, ptr %a180 + store { ptr, i64, i64 } { ptr @.str.5291, i64 3, i64 0 }, ptr %a181 + call void @finch_str_concat(ptr %a179, ptr %a180, ptr %a181) + store { ptr, i64, i64 } %t178, ptr %a182 + call void @finch_str_drop(ptr %a182) + %t183 = load { ptr, i64, i64 }, ptr %a179 + %t184 = call { ptr, i64, i64 } @finch.gen.op(ptr %t159, { ptr, i64, i64 } %t183) + store { ptr, i64, i64 } %t183, ptr %a185 + call void @finch_str_drop(ptr %a185) + %t186 = load ptr, ptr %a1 + %t187 = icmp eq ptr %t186, null + br i1 %t187, label %panic8082, label %ok8083 +panic8082: + call void @finch_panic(ptr @.str.5292, i64 4906, ptr @.str.5293) + unreachable +ok8083: + %t188 = getelementptr inbounds %S.gen.Gen, ptr %t186, i32 0, i32 42 + %t189 = load { ptr, i64, i64 }, ptr %t188 + store { ptr, i64, i64 } %t184, ptr %t188 + store { ptr, i64, i64 } %t189, ptr %a190 + call void @finch_str_drop(ptr %a190) + %t191 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 + %t192 = getelementptr inbounds %S.ast.Type, ptr %t191, i32 0, i32 0 + %t193 = load { ptr, i64, i64 }, ptr %t192 + store { ptr, i64, i64 } %t193, ptr %a194 + store { ptr, i64, i64 } { ptr @.str.5294, i64 4, i64 0 }, ptr %a195 + %t196 = call i32 @finch_str_eq(ptr %a194, ptr %a195) + %t197 = icmp ne i32 %t196, 0 + br i1 %t197, label %then8084, label %endif8086 +then8084: + %t198 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 + %t199 = load %S.ast.Type, ptr %t198 + store %S.ast.Type %t199, ptr %a200 + call void @finch.copy.S_ast_Type(ptr %a201, ptr %a200) + %t202 = load %S.ast.Type, ptr %a201 + %t203 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t202, 1 + call void @finch_str_drop(ptr %a140) + call void @finch_str_drop(ptr %a112) + call void @finch_str_drop(ptr %a106) + ret %S.gen.Val %t203 +endif8086: + %t204 = load ptr, ptr %a1 + %t205 = load ptr, ptr %a1 + %t206 = load %S.gen.FnSig, ptr %a2 + %t207 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t205, %S.gen.FnSig %t206) + store { ptr, i64, i64 } { ptr @.str.5295, i64 13, i64 0 }, ptr %a209 + store { ptr, i64, i64 } %t207, ptr %a210 + call void @finch_str_concat(ptr %a208, ptr %a209, ptr %a210) + store { ptr, i64, i64 } %t207, ptr %a211 + call void @finch_str_drop(ptr %a211) + %t212 = load { ptr, i64, i64 }, ptr %a208 + store { ptr, i64, i64 } %t212, ptr %a214 + store { ptr, i64, i64 } { ptr @.str.5296, i64 1, i64 0 }, ptr %a215 + call void @finch_str_concat(ptr %a213, ptr %a214, ptr %a215) + store { ptr, i64, i64 } %t212, ptr %a216 + call void @finch_str_drop(ptr %a216) + %t217 = load { ptr, i64, i64 }, ptr %a213 + %t218 = load { ptr, i64, i64 }, ptr %a112 + store { ptr, i64, i64 } %t217, ptr %a220 + store { ptr, i64, i64 } %t218, ptr %a221 + call void @finch_str_concat(ptr %a219, ptr %a220, ptr %a221) + store { ptr, i64, i64 } %t217, ptr %a222 + call void @finch_str_drop(ptr %a222) + %t223 = load { ptr, i64, i64 }, ptr %a219 + store { ptr, i64, i64 } %t223, ptr %a225 + store { ptr, i64, i64 } { ptr @.str.5297, i64 3, i64 0 }, ptr %a226 + call void @finch_str_concat(ptr %a224, ptr %a225, ptr %a226) + store { ptr, i64, i64 } %t223, ptr %a227 + call void @finch_str_drop(ptr %a227) + %t228 = load { ptr, i64, i64 }, ptr %a224 + %t229 = call { ptr, i64, i64 } @finch.gen.op(ptr %t204, { ptr, i64, i64 } %t228) + store { ptr, i64, i64 } %t228, ptr %a230 + call void @finch_str_drop(ptr %a230) + %t231 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t229, 0 %t232 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 %t233 = load %S.ast.Type, ptr %t232 - %t234 = call i1 @finch.gen.owning(ptr %t231, %S.ast.Type %t233) - %t235 = insertvalue %S.gen.Val %t230, i1 %t234, 2 - ret %S.gen.Val %t235 + store %S.ast.Type %t233, ptr %a234 + call void @finch.copy.S_ast_Type(ptr %a235, ptr %a234) + %t236 = load %S.ast.Type, ptr %a235 + %t237 = insertvalue %S.gen.Val %t231, %S.ast.Type %t236, 1 + %t238 = load ptr, ptr %a1 + %t239 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 + %t240 = load %S.ast.Type, ptr %t239 + %t241 = call i1 @finch.gen.owning(ptr %t238, %S.ast.Type %t240) + %t242 = insertvalue %S.gen.Val %t237, i1 %t241, 2 + call void @finch_str_drop(ptr %a140) + call void @finch_str_drop(ptr %a112) + call void @finch_str_drop(ptr %a106) + ret %S.gen.Val %t242 +endif8079: + %t243 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 + %t244 = getelementptr inbounds %S.ast.Type, ptr %t243, i32 0, i32 0 + %t245 = load { ptr, i64, i64 }, ptr %t244 + store { ptr, i64, i64 } %t245, ptr %a246 + store { ptr, i64, i64 } { ptr @.str.5298, i64 4, i64 0 }, ptr %a247 + %t248 = call i32 @finch_str_eq(ptr %a246, ptr %a247) + %t249 = icmp ne i32 %t248, 0 + br i1 %t249, label %then8087, label %endif8089 +then8087: + %t250 = load ptr, ptr %a1 + %t251 = load { ptr, i64, i64 }, ptr %a106 + call void @finch.gen.emit(ptr %t250, { ptr, i64, i64 } %t251) + %t252 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 + %t253 = load %S.ast.Type, ptr %t252 + store %S.ast.Type %t253, ptr %a254 + call void @finch.copy.S_ast_Type(ptr %a255, ptr %a254) + %t256 = load %S.ast.Type, ptr %a255 + %t257 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t256, 1 + call void @finch_str_drop(ptr %a106) + ret %S.gen.Val %t257 +endif8089: + %t258 = load ptr, ptr %a1 + %t259 = load { ptr, i64, i64 }, ptr %a106 + %t260 = call { ptr, i64, i64 } @finch.gen.op(ptr %t258, { ptr, i64, i64 } %t259) + %t261 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t260, 0 + %t262 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 + %t263 = load %S.ast.Type, ptr %t262 + store %S.ast.Type %t263, ptr %a264 + call void @finch.copy.S_ast_Type(ptr %a265, ptr %a264) + %t266 = load %S.ast.Type, ptr %a265 + %t267 = insertvalue %S.gen.Val %t261, %S.ast.Type %t266, 1 + %t268 = load ptr, ptr %a1 + %t269 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 + %t270 = load %S.ast.Type, ptr %t269 + %t271 = call i1 @finch.gen.owning(ptr %t268, %S.ast.Type %t270) + %t272 = insertvalue %S.gen.Val %t267, i1 %t271, 2 + call void @finch_str_drop(ptr %a106) + ret %S.gen.Val %t272 } define internal %S.gen.Val @finch.gen.construct(ptr %p0, i64 %p1, { ptr, i64, i64 } %p2, { ptr, i64, i64 } %p3, %S.ast.Node %p4) { @@ -69495,138 +82640,188 @@ entry: %a20 = alloca %S.ast.Node, align 16 %a43 = alloca %S.ast.Node, align 16 %a44 = alloca %S.ast.Node, 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 - %a59 = alloca %S.ast.Type, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca i1, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca i64, align 16 - %a93 = alloca i64, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 + %a47 = alloca %S.ast.Node, align 16 + %a51 = alloca { ptr, i64, i64 }, align 16 + %a52 = alloca { ptr, i64, i64 }, align 16 + %a57 = alloca { ptr, i64, i64 }, align 16 + %a58 = alloca { ptr, i64, i64 }, align 16 + %a61 = alloca %S.ast.Type, align 16 + %a65 = alloca { ptr, i64, i64 }, align 16 + %a78 = alloca i1, align 16 + %a79 = alloca { ptr, i64, i64 }, align 16 + %a83 = alloca i64, align 16 + %a95 = alloca i64, align 16 %a129 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 + %a130 = alloca { ptr, i64, i64 }, align 16 + %a131 = alloca { ptr, i64, i64 }, align 16 %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = 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 %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 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 + %a147 = 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 - %a158 = alloca { ptr, i64, i64 }, align 16 + %a155 = alloca { ptr, i64, i64 }, align 16 + %a156 = alloca { ptr, i64, i64 }, align 16 + %a157 = 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 %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca i64, align 16 - %a185 = alloca i64, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 + %a166 = alloca { ptr, i64, i64 }, align 16 + %a167 = alloca { ptr, i64, i64 }, align 16 + %a168 = alloca { ptr, i64, i64 }, align 16 + %a169 = alloca { ptr, i64, i64 }, align 16 + %a171 = 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 + %a193 = alloca i64, align 16 %a196 = alloca i64, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 + %a201 = alloca { ptr, i64, i64 }, align 16 + %a202 = alloca { ptr, i64, i64 }, align 16 + %a207 = alloca i64, align 16 %a220 = alloca { ptr, i64, i64 }, align 16 %a221 = alloca { ptr, i64, i64 }, align 16 %a222 = 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 - %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 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca i64, align 16 - %a283 = alloca %S.ast.Type, align 16 - %a284 = alloca %S.ast.Type, align 16 - %a286 = alloca %S.ast.Type, align 16 - %a287 = alloca %S.gen.Val, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a337 = 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 + %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 + %a239 = alloca { ptr, i64, i64 }, align 16 + %a241 = 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 + %a274 = alloca { ptr, i64, i64 }, align 16 + %a284 = alloca { ptr, i64, i64 }, align 16 + %a290 = alloca i64, align 16 + %a294 = alloca i64, align 16 + %a305 = alloca %S.ast.Type, align 16 + %a306 = alloca %S.ast.Type, align 16 + %a308 = alloca %S.ast.Type, align 16 + %a309 = alloca %S.gen.Val, align 16 + %a357 = alloca { ptr, i64, i64 }, align 16 + %a358 = alloca { ptr, i64, i64 }, align 16 + %a359 = 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 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a382 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca { ptr, i64, i64 }, align 16 + %a367 = alloca %S.gen.Val, align 16 + %a368 = alloca { ptr, i64, i64 }, align 16 + %a370 = alloca %S.gen.Val, align 16 %a390 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a404 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca { ptr, i64, i64 }, align 16 + %a391 = alloca { ptr, i64, i64 }, align 16 + %a393 = alloca { ptr, i64, i64 }, align 16 + %a398 = alloca { ptr, i64, i64 }, align 16 + %a399 = alloca { ptr, i64, i64 }, align 16 + %a401 = alloca { ptr, i64, i64 }, align 16 + %a406 = alloca { ptr, i64, i64 }, align 16 %a407 = alloca { ptr, i64, i64 }, align 16 - %a412 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a421 = alloca { ptr, i64, i64 }, align 16 - %a422 = alloca { ptr, i64, i64 }, align 16 - %a465 = alloca { ptr, i64, i64 }, align 16 - %a466 = alloca { ptr, i64, i64 }, align 16 - %a467 = 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 - %a478 = alloca { ptr, i64, i64 }, align 16 - %a479 = alloca { ptr, i64, i64 }, align 16 - %a485 = alloca { ptr, i64, i64 }, align 16 - %a486 = alloca { ptr, i64, i64 }, align 16 - %a492 = alloca { ptr, i64, i64 }, align 16 - %a493 = alloca { ptr, i64, i64 }, align 16 - %a499 = alloca { ptr, i64, i64 }, align 16 + %a409 = alloca { ptr, i64, i64 }, align 16 + %a414 = alloca { ptr, i64, i64 }, align 16 + %a415 = alloca { ptr, i64, i64 }, align 16 + %a417 = alloca { ptr, i64, i64 }, align 16 + %a423 = alloca { ptr, i64, i64 }, align 16 + %a424 = alloca { ptr, i64, i64 }, align 16 + %a427 = alloca { ptr, i64, i64 }, align 16 + %a433 = alloca { ptr, i64, i64 }, align 16 + %a434 = 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 + %a447 = alloca { ptr, i64, i64 }, align 16 + %a454 = alloca { ptr, i64, i64 }, align 16 + %a455 = alloca { ptr, i64, i64 }, align 16 + %a458 = alloca { ptr, i64, i64 }, align 16 %a500 = alloca { ptr, i64, i64 }, align 16 + %a501 = alloca { ptr, i64, i64 }, align 16 + %a502 = alloca { ptr, i64, i64 }, align 16 %a504 = alloca { ptr, i64, i64 }, align 16 %a505 = alloca { ptr, i64, i64 }, align 16 %a506 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a509 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca { ptr, i64, 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 + %a507 = alloca { ptr, i64, i64 }, align 16 + %a510 = alloca %S.gen.Val, align 16 + %a511 = alloca { ptr, i64, i64 }, align 16 + %a513 = alloca %S.gen.Val, align 16 %a518 = alloca { ptr, i64, i64 }, align 16 %a519 = alloca { ptr, i64, i64 }, align 16 - %a524 = alloca { ptr, i64, i64 }, align 16 - %a525 = alloca { ptr, i64, i64 }, align 16 - %a526 = alloca { ptr, i64, i64 }, align 16 + %a522 = 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 - %a530 = alloca { ptr, i64, i64 }, align 16 - %a535 = alloca { ptr, i64, i64 }, align 16 + %a531 = alloca { ptr, i64, i64 }, align 16 %a536 = alloca { ptr, i64, i64 }, align 16 %a537 = 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 - %a551 = alloca { ptr, i64, i64 }, align 16 + %a545 = alloca { ptr, i64, i64 }, align 16 + %a546 = alloca { ptr, i64, i64 }, align 16 + %a549 = 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 { ptr, i64, i64 }, align 16 - %a562 = alloca { ptr, i64, i64 }, align 16 - %a566 = alloca %S.ast.Type, align 16 - %a567 = alloca %S.ast.Type, align 16 + %a556 = alloca { ptr, i64, i64 }, align 16 + %a557 = alloca { ptr, i64, i64 }, align 16 + %a561 = alloca %S.ast.Type, align 16 + %a562 = alloca %S.ast.Type, align 16 + %a566 = alloca %S.gen.Val, align 16 + %a569 = alloca { ptr, i64, i64 }, align 16 + %a570 = alloca { ptr, i64, i64 }, align 16 + %a571 = alloca { ptr, i64, i64 }, align 16 + %a573 = alloca { ptr, i64, i64 }, align 16 + %a574 = alloca { ptr, i64, i64 }, align 16 + %a575 = alloca { ptr, i64, i64 }, align 16 + %a576 = alloca { ptr, i64, i64 }, align 16 + %a579 = alloca { ptr, i64, i64 }, align 16 + %a580 = alloca { ptr, i64, i64 }, align 16 + %a581 = alloca { ptr, i64, i64 }, align 16 + %a582 = alloca { ptr, i64, i64 }, align 16 + %a584 = alloca { ptr, i64, i64 }, align 16 + %a585 = alloca { ptr, i64, i64 }, align 16 + %a586 = alloca { ptr, i64, i64 }, align 16 + %a587 = alloca { ptr, i64, i64 }, align 16 + %a592 = alloca { ptr, i64, i64 }, align 16 + %a593 = alloca { ptr, i64, i64 }, align 16 + %a594 = alloca { ptr, i64, i64 }, align 16 + %a595 = alloca { ptr, i64, i64 }, align 16 + %a596 = alloca { ptr, i64, i64 }, align 16 + %a598 = alloca { ptr, i64, i64 }, align 16 + %a599 = alloca { ptr, i64, i64 }, align 16 + %a600 = alloca { ptr, i64, i64 }, align 16 + %a601 = alloca { ptr, i64, i64 }, align 16 + %a604 = 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 + %a610 = alloca { ptr, i64, i64 }, align 16 + %a611 = alloca { ptr, i64, i64 }, align 16 + %a612 = alloca { ptr, i64, i64 }, align 16 + %a622 = 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 + %a628 = alloca { ptr, i64, i64 }, align 16 + %a631 = alloca { ptr, i64, i64 }, align 16 + %a633 = alloca { ptr, i64, i64 }, align 16 + %a639 = alloca { ptr, i64, i64 }, align 16 + %a640 = alloca { ptr, i64, i64 }, align 16 + %a644 = alloca %S.ast.Type, align 16 + %a645 = alloca %S.ast.Type, align 16 store ptr %p0, ptr %a1 store i64 %p1, ptr %a2 store { ptr, i64, i64 } %p2, ptr %a3 @@ -69634,21 +82829,21 @@ entry: store %S.ast.Node %p4, ptr %a5 %t6 = load ptr, ptr %a1 %t7 = icmp eq ptr %t6, null - br i1 %t7, label %panic7688, label %ok7689 -panic7688: - call void @finch_panic(ptr @.str.5115, i64 4570, ptr @.str.5116) + br i1 %t7, label %panic8090, label %ok8091 +panic8090: + call void @finch_panic(ptr @.str.5299, i64 4920, ptr @.str.5300) unreachable -ok7689: - %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 15 +ok8091: + %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 %range7690, label %inrange7691 -range7690: - call void @finch_panic_index(ptr @.str.5117, i64 4570, i64 %t9, i64 %t11) + br i1 %t12, label %range8092, label %inrange8093 +range8092: + call void @finch_panic_index(ptr @.str.5301, i64 4920, i64 %t9, i64 %t11) unreachable -inrange7691: +inrange8093: %t13 = extractvalue { ptr, i64, i64 } %t10, 0 %t14 = getelementptr inbounds %S.gen.StructDef, ptr %t13, i64 %t9 %t15 = load %S.gen.StructDef, ptr %t14 @@ -69660,26 +82855,26 @@ inrange7691: %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 %then7692, label %endif7694 -then7692: + br i1 %t23, label %then8094, label %endif8096 +then8094: %t24 = load ptr, ptr %a1 %t25 = icmp eq ptr %t24, null - br i1 %t25, label %panic7695, label %ok7696 -panic7695: - call void @finch_panic(ptr @.str.5118, i64 4573, ptr @.str.5119) + br i1 %t25, label %panic8097, label %ok8098 +panic8097: + call void @finch_panic(ptr @.str.5302, i64 4923, ptr @.str.5303) unreachable -ok7696: +ok8098: %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 %range7697, label %inrange7698 -range7697: - call void @finch_panic_index(ptr @.str.5120, i64 4573, i64 %t28, i64 %t30) + br i1 %t31, label %range8099, label %inrange8100 +range8099: + call void @finch_panic_index(ptr @.str.5304, i64 4923, i64 %t28, i64 %t30) unreachable -inrange7698: +inrange8100: %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 @@ -69688,842 +82883,987 @@ inrange7698: %t37 = load { ptr, i64, i64 }, ptr %t34 %t38 = extractvalue { ptr, i64, i64 } %t37, 1 %t39 = icmp uge i64 %t36, %t38 - br i1 %t39, label %range7699, label %inrange7700 -range7699: - call void @finch_panic_index(ptr @.str.5121, i64 4573, i64 %t36, i64 %t38) + br i1 %t39, label %range8101, label %inrange8102 +range8101: + call void @finch_panic_index(ptr @.str.5305, i64 4923, i64 %t36, i64 %t38) unreachable -inrange7700: +inrange8102: %t40 = extractvalue { ptr, i64, i64 } %t37, 0 %t41 = getelementptr inbounds %S.ast.Node, ptr %t40, i64 %t36 %t42 = load %S.ast.Node, ptr %t41 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 + %t46 = load %S.ast.Node, ptr %a20 store %S.ast.Node %t45, ptr %a20 - br label %endif7694 -endif7694: - %t46 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.5122, 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 - call void @finch_str_copy(ptr %a50, ptr %a49) - %t51 = load { ptr, i64, i64 }, ptr %a50 - %t52 = insertvalue %S.ast.Type %t46, { ptr, i64, i64 } %t51, 2 - %t53 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 0 - %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.ast.Type %t52, { ptr, i64, i64 } %t57, 3 - store %S.ast.Type %t58, ptr %a59 - %t60 = load ptr, ptr %a1 - %t61 = load %S.ast.Type, ptr %a59 - %t62 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t60, %S.ast.Type %t61) - store { ptr, i64, i64 } %t62, ptr %a63 - %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.from7701 -logic.from7701: - br i1 %t66, label %logic.rhs7702, label %logic.end7703 -logic.rhs7702: - %t67 = load { ptr, i64, i64 }, ptr %a4 - %t68 = extractvalue { ptr, i64, i64 } %t67, 1 - %t69 = icmp uge i64 0, %t68 - br i1 %t69, label %range7704, label %inrange7705 -range7704: - call void @finch_panic_index(ptr @.str.5123, i64 4577, i64 0, i64 %t68) + store %S.ast.Node %t46, ptr %a47 + call void @finch.drop.S_ast_Node(ptr %a47) + br label %endif8096 +endif8096: + %t48 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.5306, i64 6, i64 0 }, 0 + %t49 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 1 + %t50 = load { ptr, i64, i64 }, ptr %t49 + store { ptr, i64, i64 } %t50, ptr %a51 + call void @finch_str_copy(ptr %a52, ptr %a51) + %t53 = load { ptr, i64, i64 }, ptr %a52 + %t54 = insertvalue %S.ast.Type %t48, { ptr, i64, i64 } %t53, 2 + %t55 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 0 + %t56 = load { ptr, i64, i64 }, ptr %t55 + store { ptr, i64, i64 } %t56, ptr %a57 + call void @finch_str_copy(ptr %a58, ptr %a57) + %t59 = load { ptr, i64, i64 }, ptr %a58 + %t60 = insertvalue %S.ast.Type %t54, { ptr, i64, i64 } %t59, 3 + store %S.ast.Type %t60, ptr %a61 + %t62 = load ptr, ptr %a1 + %t63 = load %S.ast.Type, ptr %a61 + %t64 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t62, %S.ast.Type %t63) + store { ptr, i64, i64 } %t64, ptr %a65 + %t66 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 + %t67 = load i64, ptr %t66 + %t68 = icmp sgt i64 %t67, 0 + br label %logic.from8103 +logic.from8103: + br i1 %t68, label %logic.rhs8104, label %logic.end8105 +logic.rhs8104: + %t69 = load { ptr, i64, i64 }, ptr %a4 + %t70 = extractvalue { ptr, i64, i64 } %t69, 1 + %t71 = icmp uge i64 0, %t70 + br i1 %t71, label %range8106, label %inrange8107 +range8106: + call void @finch_panic_index(ptr @.str.5307, i64 4927, i64 0, i64 %t70) unreachable -inrange7705: - %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.rend7706 -logic.rend7706: - br label %logic.end7703 -logic.end7703: - %t75 = phi i1 [ false, %logic.from7701 ], [ %t74, %logic.rend7706 ] - 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.cond7707 -for.cond7707: - %t82 = load i64, ptr %a81 - %t83 = icmp slt i64 %t82, %t80 - br i1 %t83, label %for.body7708, label %for.end7710 -for.body7708: - %t84 = getelementptr inbounds { ptr, i64, i64 }, ptr %a77, i32 0, i32 1 - %t85 = load i64, ptr %t84 - %t86 = add i64 %t85, 1 - call void @finch_arr_reserve(ptr %a77, i64 %t86, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t87 = load ptr, ptr %a77 - %t88 = getelementptr inbounds i64, ptr %t87, i64 %t85 - store i64 -1, ptr %t88 - store i64 %t86, ptr %t84 - br label %for.step7709 -for.step7709: - %t89 = load i64, ptr %a81 - %t90 = add i64 %t89, 1 - store i64 %t90, ptr %a81 - br label %for.cond7707 -for.end7710: - %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.cond7711 -for.cond7711: - %t94 = load i64, ptr %a93 - %t95 = icmp slt i64 %t94, %t92 - br i1 %t95, label %for.body7712, label %for.end7714 -for.body7712: - %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 %range7715, label %inrange7716 -range7715: - call void @finch_panic_index(ptr @.str.5124, i64 4583, i64 %t96, i64 %t98) +inrange8107: + %t72 = extractvalue { ptr, i64, i64 } %t69, 0 + %t73 = getelementptr inbounds { ptr, i64, i64 }, ptr %t72, i64 0 + %t74 = getelementptr inbounds { ptr, i64, i64 }, ptr %t73, i32 0, i32 1 + %t75 = load i64, ptr %t74 + %t76 = icmp sgt i64 %t75, 0 + br label %logic.rend8108 +logic.rend8108: + br label %logic.end8105 +logic.end8105: + %t77 = phi i1 [ false, %logic.from8103 ], [ %t76, %logic.rend8108 ] + store i1 %t77, ptr %a78 + store { ptr, i64, i64 } zeroinitializer, ptr %a79 + %t80 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 + %t81 = getelementptr inbounds { ptr, i64, i64 }, ptr %t80, i32 0, i32 1 + %t82 = load i64, ptr %t81 + store i64 0, ptr %a83 + br label %for.cond8109 +for.cond8109: + %t84 = load i64, ptr %a83 + %t85 = icmp slt i64 %t84, %t82 + br i1 %t85, label %for.body8110, label %for.end8112 +for.body8110: + %t86 = getelementptr inbounds { ptr, i64, i64 }, ptr %a79, i32 0, i32 1 + %t87 = load i64, ptr %t86 + %t88 = add i64 %t87, 1 + call void @finch_arr_reserve(ptr %a79, i64 %t88, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) + %t89 = load ptr, ptr %a79 + %t90 = getelementptr inbounds i64, ptr %t89, i64 %t87 + store i64 -1, ptr %t90 + store i64 %t88, ptr %t86 + br label %for.step8111 +for.step8111: + %t91 = load i64, ptr %a83 + %t92 = add i64 %t91, 1 + store i64 %t92, ptr %a83 + br label %for.cond8109 +for.end8112: + %t93 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 + %t94 = load i64, ptr %t93 + store i64 0, ptr %a95 + br label %for.cond8113 +for.cond8113: + %t96 = load i64, ptr %a95 + %t97 = icmp slt i64 %t96, %t94 + br i1 %t97, label %for.body8114, label %for.end8116 +for.body8114: + %t98 = load i64, ptr %a95 + %t99 = load { ptr, i64, i64 }, ptr %a4 + %t100 = extractvalue { ptr, i64, i64 } %t99, 1 + %t101 = icmp uge i64 %t98, %t100 + br i1 %t101, label %range8117, label %inrange8118 +range8117: + call void @finch_panic_index(ptr @.str.5308, i64 4933, i64 %t98, i64 %t100) unreachable -inrange7716: - %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 - %t103 = load i64, ptr %t102 - %t104 = icmp sgt i64 %t103, 0 - %t105 = load i1, ptr %a76 - %t106 = icmp ne i1 %t104, %t105 - br i1 %t106, label %then7717, label %endif7719 -then7717: - %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 %range7720, label %inrange7721 -range7720: - call void @finch_panic_index(ptr @.str.5125, i64 4584, i64 %t108, i64 %t110) +inrange8118: + %t102 = extractvalue { ptr, i64, i64 } %t99, 0 + %t103 = getelementptr inbounds { ptr, i64, i64 }, ptr %t102, i64 %t98 + %t104 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i32 0, i32 1 + %t105 = load i64, ptr %t104 + %t106 = icmp sgt i64 %t105, 0 + %t107 = load i1, ptr %a78 + %t108 = icmp ne i1 %t106, %t107 + br i1 %t108, label %then8119, label %endif8121 +then8119: + %t109 = load ptr, ptr %a1 + %t110 = load i64, ptr %a95 + %t111 = load { ptr, i64, i64 }, ptr %a3 + %t112 = extractvalue { ptr, i64, i64 } %t111, 1 + %t113 = icmp uge i64 %t110, %t112 + br i1 %t113, label %range8122, label %inrange8123 +range8122: + call void @finch_panic_index(ptr @.str.5309, i64 4934, i64 %t110, i64 %t112) unreachable -inrange7721: - %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.5126, i64 69, i64 0 }) - br label %endif7719 -endif7719: - %t115 = load i1, ptr %a76 - %t116 = xor i1 %t115, true - br i1 %t116, label %then7722, label %endif7724 -then7722: - %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 %then7725, label %endif7727 -then7725: - %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.5127, 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 - %t132 = getelementptr inbounds { ptr, i64, i64 }, ptr %t131, i32 0, i32 1 - %t133 = load i64, ptr %t132 - call void @finch_str_from_int(ptr %a134, i64 %t133) - %t135 = load { ptr, i64, i64 }, ptr %a134 - store { ptr, i64, i64 } %t130, 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.5128, 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 - %t145 = load i64, ptr %t144 - call void @finch_str_from_int(ptr %a146, i64 %t145) - %t147 = load { ptr, i64, i64 }, ptr %a146 - store { ptr, i64, i64 } %t143, ptr %a149 - store { ptr, i64, i64 } %t147, ptr %a150 - 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.5129, 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 - %t157 = load { ptr, i64, i64 }, ptr %t156 - store { ptr, i64, i64 } %t155, 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.5130, 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 %endif7727 -endif7727: - %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 %range7728, label %inrange7729 -range7728: - call void @finch_panic_index(ptr @.str.5131, i64 4590, i64 %t167, i64 %t169) +inrange8123: + %t114 = extractvalue { ptr, i64, i64 } %t111, 0 + %t115 = getelementptr inbounds %S.ast.Node, ptr %t114, i64 %t110 + %t116 = load %S.ast.Node, ptr %t115 + call void @finch.gen.fail(ptr %t109, %S.ast.Node %t116, { ptr, i64, i64 } { ptr @.str.5310, i64 69, i64 0 }) + br label %endif8121 +endif8121: + %t117 = load i1, ptr %a78 + %t118 = xor i1 %t117, true + br i1 %t118, label %then8124, label %endif8126 +then8124: + %t119 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 + %t120 = load i64, ptr %t119 + %t121 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 + %t122 = getelementptr inbounds { ptr, i64, i64 }, ptr %t121, i32 0, i32 1 + %t123 = load i64, ptr %t122 + %t124 = icmp ne i64 %t120, %t123 + br i1 %t124, label %then8127, label %endif8129 +then8127: + %t125 = load ptr, ptr %a1 + %t126 = load %S.ast.Node, ptr %a5 + %t127 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 1 + %t128 = load { ptr, i64, i64 }, ptr %t127 + store { ptr, i64, i64 } %t128, ptr %a130 + store { ptr, i64, i64 } { ptr @.str.5311, i64 5, i64 0 }, ptr %a131 + call void @finch_str_concat(ptr %a129, ptr %a130, ptr %a131) + %t132 = load { ptr, i64, i64 }, ptr %a129 + %t133 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 + %t134 = getelementptr inbounds { ptr, i64, i64 }, ptr %t133, i32 0, i32 1 + %t135 = load i64, ptr %t134 + call void @finch_str_from_int(ptr %a136, i64 %t135) + %t137 = load { ptr, i64, i64 }, ptr %a136 + store { ptr, i64, i64 } %t132, ptr %a139 + store { ptr, i64, i64 } %t137, ptr %a140 + call void @finch_str_concat(ptr %a138, ptr %a139, ptr %a140) + store { ptr, i64, i64 } %t132, ptr %a141 + call void @finch_str_drop(ptr %a141) + store { ptr, i64, i64 } %t137, ptr %a142 + call void @finch_str_drop(ptr %a142) + %t143 = load { ptr, i64, i64 }, ptr %a138 + store { ptr, i64, i64 } %t143, ptr %a145 + store { ptr, i64, i64 } { ptr @.str.5312, i64 17, i64 0 }, ptr %a146 + call void @finch_str_concat(ptr %a144, ptr %a145, ptr %a146) + store { ptr, i64, i64 } %t143, ptr %a147 + call void @finch_str_drop(ptr %a147) + %t148 = load { ptr, i64, i64 }, ptr %a144 + %t149 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 + %t150 = load i64, ptr %t149 + call void @finch_str_from_int(ptr %a151, i64 %t150) + %t152 = load { ptr, i64, i64 }, ptr %a151 + store { ptr, i64, i64 } %t148, ptr %a154 + store { ptr, i64, i64 } %t152, ptr %a155 + call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155) + store { ptr, i64, i64 } %t148, ptr %a156 + call void @finch_str_drop(ptr %a156) + store { ptr, i64, i64 } %t152, ptr %a157 + call void @finch_str_drop(ptr %a157) + %t158 = load { ptr, i64, i64 }, ptr %a153 + store { ptr, i64, i64 } %t158, ptr %a160 + store { ptr, i64, i64 } { ptr @.str.5313, i64 23, i64 0 }, ptr %a161 + call void @finch_str_concat(ptr %a159, ptr %a160, ptr %a161) + store { ptr, i64, i64 } %t158, ptr %a162 + call void @finch_str_drop(ptr %a162) + %t163 = load { ptr, i64, i64 }, ptr %a159 + %t164 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 1 + %t165 = load { ptr, i64, i64 }, ptr %t164 + store { ptr, i64, i64 } %t163, ptr %a167 + store { ptr, i64, i64 } %t165, ptr %a168 + call void @finch_str_concat(ptr %a166, ptr %a167, ptr %a168) + store { ptr, i64, i64 } %t163, ptr %a169 + call void @finch_str_drop(ptr %a169) + %t170 = load { ptr, i64, i64 }, ptr %a166 + store { ptr, i64, i64 } %t170, ptr %a172 + store { ptr, i64, i64 } { ptr @.str.5314, i64 15, i64 0 }, ptr %a173 + call void @finch_str_concat(ptr %a171, ptr %a172, ptr %a173) + store { ptr, i64, i64 } %t170, ptr %a174 + call void @finch_str_drop(ptr %a174) + %t175 = load { ptr, i64, i64 }, ptr %a171 + call void @finch.gen.fail(ptr %t125, %S.ast.Node %t126, { ptr, i64, i64 } %t175) + store { ptr, i64, i64 } %t175, ptr %a176 + call void @finch_str_drop(ptr %a176) + br label %endif8129 +endif8129: + %t177 = load i64, ptr %a95 + %t178 = load i64, ptr %a95 + %t179 = load { ptr, i64, i64 }, ptr %a79 + %t180 = extractvalue { ptr, i64, i64 } %t179, 1 + %t181 = icmp uge i64 %t178, %t180 + br i1 %t181, label %range8130, label %inrange8131 +range8130: + call void @finch_panic_index(ptr @.str.5315, i64 4940, i64 %t178, i64 %t180) unreachable -inrange7729: - %t171 = extractvalue { ptr, i64, i64 } %t168, 0 - %t172 = getelementptr inbounds i64, ptr %t171, i64 %t167 - store i64 %t166, ptr %t172 - br label %for.step7713 -endif7724: - %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 %range7730, label %inrange7731 -range7730: - call void @finch_panic_index(ptr @.str.5132, i64 4593, i64 %t175, i64 %t177) +inrange8131: + %t182 = extractvalue { ptr, i64, i64 } %t179, 0 + %t183 = getelementptr inbounds i64, ptr %t182, i64 %t178 + store i64 %t177, ptr %t183 + br label %for.step8115 +endif8126: + %t184 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 + %t185 = getelementptr inbounds { ptr, i64, i64 }, ptr %t184, i32 0, i32 1 + %t186 = load i64, ptr %a95 + %t187 = load { ptr, i64, i64 }, ptr %a4 + %t188 = extractvalue { ptr, i64, i64 } %t187, 1 + %t189 = icmp uge i64 %t186, %t188 + br i1 %t189, label %range8132, label %inrange8133 +range8132: + call void @finch_panic_index(ptr @.str.5316, i64 4943, i64 %t186, i64 %t188) unreachable -inrange7731: - %t179 = extractvalue { ptr, i64, i64 } %t176, 0 - %t180 = getelementptr inbounds { ptr, i64, i64 }, ptr %t179, i64 %t175 - %t181 = load { ptr, i64, i64 }, ptr %t180 - store i64 -1, ptr %a182 - %t183 = load i64, ptr %t174 - %t184 = load ptr, ptr %t173 - store i64 0, ptr %a185 - br label %find.cond7732 -find.cond7732: - %t186 = load i64, ptr %a185 - %t187 = icmp slt i64 %t186, %t183 - br i1 %t187, label %find.body7733, label %find.end7736 -find.body7733: - %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.hit7734, label %find.next7735 -find.hit7734: - store i64 %t186, ptr %a182 - br label %find.end7736 -find.next7735: - %t194 = add i64 %t186, 1 - store i64 %t194, ptr %a185 - br label %find.cond7732 -find.end7736: - %t195 = load i64, ptr %a182 - store i64 %t195, ptr %a196 +inrange8133: + %t190 = extractvalue { ptr, i64, i64 } %t187, 0 + %t191 = getelementptr inbounds { ptr, i64, i64 }, ptr %t190, i64 %t186 + %t192 = load { ptr, i64, i64 }, ptr %t191 + store i64 -1, ptr %a193 + %t194 = load i64, ptr %t185 + %t195 = load ptr, ptr %t184 + store i64 0, ptr %a196 + br label %find.cond8134 +find.cond8134: %t197 = load i64, ptr %a196 - %t198 = icmp slt i64 %t197, 0 - br i1 %t198, label %then7737, label %endif7739 -then7737: - %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 %range7740, label %inrange7741 -range7740: - call void @finch_panic_index(ptr @.str.5133, i64 4595, i64 %t200, i64 %t202) + %t198 = icmp slt i64 %t197, %t194 + br i1 %t198, label %find.body8135, label %find.end8138 +find.body8135: + %t199 = getelementptr inbounds { ptr, i64, i64 }, ptr %t195, i64 %t197 + %t200 = load { ptr, i64, i64 }, ptr %t199 + store { ptr, i64, i64 } %t200, ptr %a201 + store { ptr, i64, i64 } %t192, ptr %a202 + %t203 = call i32 @finch_str_eq(ptr %a201, ptr %a202) + %t204 = icmp ne i32 %t203, 0 + br i1 %t204, label %find.hit8136, label %find.next8137 +find.hit8136: + store i64 %t197, ptr %a193 + br label %find.end8138 +find.next8137: + %t205 = add i64 %t197, 1 + store i64 %t205, ptr %a196 + br label %find.cond8134 +find.end8138: + %t206 = load i64, ptr %a193 + store i64 %t206, ptr %a207 + %t208 = load i64, ptr %a207 + %t209 = icmp slt i64 %t208, 0 + br i1 %t209, label %then8139, label %endif8141 +then8139: + %t210 = load ptr, ptr %a1 + %t211 = load i64, ptr %a95 + %t212 = load { ptr, i64, i64 }, ptr %a3 + %t213 = extractvalue { ptr, i64, i64 } %t212, 1 + %t214 = icmp uge i64 %t211, %t213 + br i1 %t214, label %range8142, label %inrange8143 +range8142: + call void @finch_panic_index(ptr @.str.5317, i64 4945, i64 %t211, i64 %t213) unreachable -inrange7741: - %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.5134, 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 %range7742, label %inrange7743 -range7742: - call void @finch_panic_index(ptr @.str.5135, i64 4595, i64 %t213, i64 %t215) - unreachable -inrange7743: - %t217 = extractvalue { ptr, i64, i64 } %t214, 0 - %t218 = getelementptr inbounds { ptr, i64, i64 }, ptr %t217, i64 %t213 +inrange8143: + %t215 = extractvalue { ptr, i64, i64 } %t212, 0 + %t216 = getelementptr inbounds %S.ast.Node, ptr %t215, i64 %t211 + %t217 = load %S.ast.Node, ptr %t216 + %t218 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 1 %t219 = load { ptr, i64, i64 }, ptr %t218 - store { ptr, i64, i64 } %t212, ptr %a221 - store { ptr, i64, i64 } %t219, ptr %a222 + store { ptr, i64, i64 } %t219, ptr %a221 + store { ptr, i64, i64 } { ptr @.str.5318, i64 15, i64 0 }, ptr %a222 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.5136, 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 %endif7739 -endif7739: - %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 %range7744, label %inrange7745 -range7744: - call void @finch_panic_index(ptr @.str.5137, i64 4597, i64 %t228, i64 %t230) + %t224 = load i64, ptr %a95 + %t225 = load { ptr, i64, i64 }, ptr %a4 + %t226 = extractvalue { ptr, i64, i64 } %t225, 1 + %t227 = icmp uge i64 %t224, %t226 + br i1 %t227, label %range8144, label %inrange8145 +range8144: + call void @finch_panic_index(ptr @.str.5319, i64 4945, i64 %t224, i64 %t226) unreachable -inrange7745: - %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 %then7746, label %endif7748 -then7746: - %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 %range7749, label %inrange7750 -range7749: - call void @finch_panic_index(ptr @.str.5138, i64 4598, i64 %t237, i64 %t239) +inrange8145: + %t228 = extractvalue { ptr, i64, i64 } %t225, 0 + %t229 = getelementptr inbounds { ptr, i64, i64 }, ptr %t228, i64 %t224 + %t230 = load { ptr, i64, i64 }, ptr %t229 + store { ptr, i64, i64 } %t223, ptr %a232 + store { ptr, i64, i64 } %t230, ptr %a233 + call void @finch_str_concat(ptr %a231, ptr %a232, ptr %a233) + store { ptr, i64, i64 } %t223, ptr %a234 + call void @finch_str_drop(ptr %a234) + %t235 = load { ptr, i64, i64 }, ptr %a231 + store { ptr, i64, i64 } %t235, ptr %a237 + store { ptr, i64, i64 } { ptr @.str.5320, i64 1, i64 0 }, ptr %a238 + call void @finch_str_concat(ptr %a236, ptr %a237, ptr %a238) + store { ptr, i64, i64 } %t235, ptr %a239 + call void @finch_str_drop(ptr %a239) + %t240 = load { ptr, i64, i64 }, ptr %a236 + call void @finch.gen.fail(ptr %t210, %S.ast.Node %t217, { ptr, i64, i64 } %t240) + store { ptr, i64, i64 } %t240, ptr %a241 + call void @finch_str_drop(ptr %a241) + br label %endif8141 +endif8141: + %t242 = load i64, ptr %a207 + %t243 = load { ptr, i64, i64 }, ptr %a79 + %t244 = extractvalue { ptr, i64, i64 } %t243, 1 + %t245 = icmp uge i64 %t242, %t244 + br i1 %t245, label %range8146, label %inrange8147 +range8146: + call void @finch_panic_index(ptr @.str.5321, i64 4947, i64 %t242, i64 %t244) unreachable -inrange7750: - %t241 = extractvalue { ptr, i64, i64 } %t238, 0 - %t242 = getelementptr inbounds %S.ast.Node, ptr %t241, i64 %t237 - %t243 = load %S.ast.Node, ptr %t242 - %t244 = load i64, ptr %a93 - %t245 = load { ptr, i64, i64 }, ptr %a4 - %t246 = extractvalue { ptr, i64, i64 } %t245, 1 - %t247 = icmp uge i64 %t244, %t246 - br i1 %t247, label %range7751, label %inrange7752 -range7751: - call void @finch_panic_index(ptr @.str.5140, i64 4598, i64 %t244, i64 %t246) +inrange8147: + %t246 = extractvalue { ptr, i64, i64 } %t243, 0 + %t247 = getelementptr inbounds i64, ptr %t246, i64 %t242 + %t248 = load i64, ptr %t247 + %t249 = icmp sge i64 %t248, 0 + br i1 %t249, label %then8148, label %endif8150 +then8148: + %t250 = load ptr, ptr %a1 + %t251 = load i64, ptr %a95 + %t252 = load { ptr, i64, i64 }, ptr %a3 + %t253 = extractvalue { ptr, i64, i64 } %t252, 1 + %t254 = icmp uge i64 %t251, %t253 + br i1 %t254, label %range8151, label %inrange8152 +range8151: + call void @finch_panic_index(ptr @.str.5322, i64 4948, i64 %t251, i64 %t253) unreachable -inrange7752: - %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.5139, 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.5141, 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 %endif7748 -endif7748: - %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 %range7753, label %inrange7754 -range7753: - call void @finch_panic_index(ptr @.str.5142, i64 4600, i64 %t260, i64 %t262) +inrange8152: + %t255 = extractvalue { ptr, i64, i64 } %t252, 0 + %t256 = getelementptr inbounds %S.ast.Node, ptr %t255, i64 %t251 + %t257 = load %S.ast.Node, ptr %t256 + %t258 = load i64, ptr %a95 + %t259 = load { ptr, i64, i64 }, ptr %a4 + %t260 = extractvalue { ptr, i64, i64 } %t259, 1 + %t261 = icmp uge i64 %t258, %t260 + br i1 %t261, label %range8153, label %inrange8154 +range8153: + call void @finch_panic_index(ptr @.str.5324, i64 4948, i64 %t258, i64 %t260) unreachable -inrange7754: - %t264 = extractvalue { ptr, i64, i64 } %t261, 0 - %t265 = getelementptr inbounds i64, ptr %t264, i64 %t260 - store i64 %t259, ptr %t265 - br label %for.step7713 -for.step7713: - %t266 = load i64, ptr %a93 - %t267 = add i64 %t266, 1 - store i64 %t267, ptr %a93 - br label %for.cond7711 -for.end7714: - store { ptr, i64, i64 } { ptr @.str.5143, 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.cond7755 -for.cond7755: - %t273 = load i64, ptr %a272 - %t274 = icmp slt i64 %t273, %t271 - br i1 %t274, label %for.body7756, label %for.end7758 -for.body7756: - %t275 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 12 - %t276 = load i64, ptr %a272 - %t277 = load { ptr, i64, i64 }, ptr %t275 +inrange8154: + %t262 = extractvalue { ptr, i64, i64 } %t259, 0 + %t263 = getelementptr inbounds { ptr, i64, i64 }, ptr %t262, i64 %t258 + %t264 = load { ptr, i64, i64 }, ptr %t263 + store { ptr, i64, i64 } { ptr @.str.5323, i64 11, 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.5325, i64 16, i64 0 }, ptr %a271 + call void @finch_str_concat(ptr %a269, ptr %a270, ptr %a271) + store { ptr, i64, i64 } %t268, ptr %a272 + call void @finch_str_drop(ptr %a272) + %t273 = load { ptr, i64, i64 }, ptr %a269 + call void @finch.gen.fail(ptr %t250, %S.ast.Node %t257, { ptr, i64, i64 } %t273) + store { ptr, i64, i64 } %t273, ptr %a274 + call void @finch_str_drop(ptr %a274) + br label %endif8150 +endif8150: + %t275 = load i64, ptr %a95 + %t276 = load i64, ptr %a207 + %t277 = load { ptr, i64, i64 }, ptr %a79 %t278 = extractvalue { ptr, i64, i64 } %t277, 1 %t279 = icmp uge i64 %t276, %t278 - br i1 %t279, label %range7759, label %inrange7760 -range7759: - call void @finch_panic_index(ptr @.str.5144, i64 4604, i64 %t276, i64 %t278) + br i1 %t279, label %range8155, label %inrange8156 +range8155: + call void @finch_panic_index(ptr @.str.5326, i64 4950, i64 %t276, i64 %t278) unreachable -inrange7760: +inrange8156: %t280 = extractvalue { ptr, i64, i64 } %t277, 0 - %t281 = getelementptr inbounds %S.ast.Type, ptr %t280, i64 %t276 - %t282 = load %S.ast.Type, ptr %t281 - store %S.ast.Type %t282, ptr %a283 - call void @finch.copy.S_ast_Type(ptr %a284, ptr %a283) - %t285 = load %S.ast.Type, ptr %a284 - store %S.ast.Type %t285, ptr %a286 - store %S.gen.Val zeroinitializer, ptr %a287 - %t288 = load i64, ptr %a272 - %t289 = load { ptr, i64, i64 }, ptr %a77 - %t290 = extractvalue { ptr, i64, i64 } %t289, 1 - %t291 = icmp uge i64 %t288, %t290 - br i1 %t291, label %range7761, label %inrange7762 -range7761: - call void @finch_panic_index(ptr @.str.5145, i64 4606, i64 %t288, i64 %t290) + %t281 = getelementptr inbounds i64, ptr %t280, i64 %t276 + store i64 %t275, ptr %t281 + br label %for.step8115 +for.step8115: + %t282 = load i64, ptr %a95 + %t283 = add i64 %t282, 1 + store i64 %t283, ptr %a95 + br label %for.cond8113 +for.end8116: + store { ptr, i64, i64 } { ptr @.str.5327, i64 15, i64 0 }, ptr %a284 + %t285 = load ptr, ptr %a1 + %t286 = icmp eq ptr %t285, null + br i1 %t286, label %panic8157, label %ok8158 +panic8157: + call void @finch_panic(ptr @.str.5328, i64 4953, ptr @.str.5329) unreachable -inrange7762: - %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 %then7763, label %else7764 -then7763: - %t296 = load ptr, ptr %a1 - %t297 = load ptr, ptr %a1 - %t298 = load i64, ptr %a272 - %t299 = load { ptr, i64, i64 }, ptr %a77 +ok8158: + %t287 = getelementptr inbounds %S.gen.Gen, ptr %t285, i32 0, i32 11 + %t288 = getelementptr inbounds { ptr, i64, i64 }, ptr %t287, i32 0, i32 1 + %t289 = load i64, ptr %t288 + store i64 %t289, ptr %a290 + %t291 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 + %t292 = getelementptr inbounds { ptr, i64, i64 }, ptr %t291, i32 0, i32 1 + %t293 = load i64, ptr %t292 + store i64 0, ptr %a294 + br label %for.cond8159 +for.cond8159: + %t295 = load i64, ptr %a294 + %t296 = icmp slt i64 %t295, %t293 + br i1 %t296, label %for.body8160, label %for.end8162 +for.body8160: + %t297 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 12 + %t298 = load i64, ptr %a294 + %t299 = load { ptr, i64, i64 }, ptr %t297 %t300 = extractvalue { ptr, i64, i64 } %t299, 1 %t301 = icmp uge i64 %t298, %t300 - br i1 %t301, label %range7766, label %inrange7767 -range7766: - call void @finch_panic_index(ptr @.str.5146, i64 4607, i64 %t298, i64 %t300) + br i1 %t301, label %range8163, label %inrange8164 +range8163: + call void @finch_panic_index(ptr @.str.5330, i64 4955, i64 %t298, i64 %t300) unreachable -inrange7767: +inrange8164: %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 %range7768, label %inrange7769 -range7768: - call void @finch_panic_index(ptr @.str.5147, i64 4607, i64 %t304, i64 %t306) + %t303 = getelementptr inbounds %S.ast.Type, ptr %t302, i64 %t298 + %t304 = load %S.ast.Type, ptr %t303 + store %S.ast.Type %t304, ptr %a305 + call void @finch.copy.S_ast_Type(ptr %a306, ptr %a305) + %t307 = load %S.ast.Type, ptr %a306 + store %S.ast.Type %t307, ptr %a308 + store %S.gen.Val zeroinitializer, ptr %a309 + %t310 = load i64, ptr %a294 + %t311 = load { ptr, i64, i64 }, ptr %a79 + %t312 = extractvalue { ptr, i64, i64 } %t311, 1 + %t313 = icmp uge i64 %t310, %t312 + br i1 %t313, label %range8165, label %inrange8166 +range8165: + call void @finch_panic_index(ptr @.str.5331, i64 4957, i64 %t310, i64 %t312) unreachable -inrange7769: - %t308 = extractvalue { ptr, i64, i64 } %t305, 0 - %t309 = getelementptr inbounds %S.ast.Node, ptr %t308, i64 %t304 - %t310 = load %S.ast.Node, ptr %t309 - %t311 = load %S.ast.Type, ptr %a286 - %t312 = call %S.gen.Val @finch.gen.exprWant(ptr %t297, %S.ast.Node %t310, %S.ast.Type %t311) - %t313 = load %S.ast.Type, ptr %a286 - %t314 = load i64, ptr %a272 - %t315 = load { ptr, i64, i64 }, ptr %a77 - %t316 = extractvalue { ptr, i64, i64 } %t315, 1 - %t317 = icmp uge i64 %t314, %t316 - br i1 %t317, label %range7770, label %inrange7771 -range7770: - call void @finch_panic_index(ptr @.str.5148, i64 4607, i64 %t314, i64 %t316) - unreachable -inrange7771: - %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 +inrange8166: + %t314 = extractvalue { ptr, i64, i64 } %t311, 0 + %t315 = getelementptr inbounds i64, ptr %t314, i64 %t310 + %t316 = load i64, ptr %t315 + %t317 = icmp sge i64 %t316, 0 + br i1 %t317, label %then8167, label %else8168 +then8167: + %t318 = load ptr, ptr %a1 + %t319 = load ptr, ptr %a1 + %t320 = load i64, ptr %a294 + %t321 = load { ptr, i64, i64 }, ptr %a79 %t322 = extractvalue { ptr, i64, i64 } %t321, 1 %t323 = icmp uge i64 %t320, %t322 - br i1 %t323, label %range7772, label %inrange7773 -range7772: - call void @finch_panic_index(ptr @.str.5149, i64 4607, i64 %t320, i64 %t322) + br i1 %t323, label %range8170, label %inrange8171 +range8170: + call void @finch_panic_index(ptr @.str.5332, i64 4958, i64 %t320, i64 %t322) unreachable -inrange7773: +inrange8171: %t324 = extractvalue { ptr, i64, i64 } %t321, 0 - %t325 = getelementptr inbounds %S.ast.Node, ptr %t324, i64 %t320 - %t326 = load %S.ast.Node, ptr %t325 - %t327 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 - %t328 = load i64, ptr %a272 - %t329 = load { ptr, i64, i64 }, ptr %t327 - %t330 = extractvalue { ptr, i64, i64 } %t329, 1 - %t331 = icmp uge i64 %t328, %t330 - br i1 %t331, label %range7774, label %inrange7775 -range7774: - call void @finch_panic_index(ptr @.str.5151, i64 4607, i64 %t328, i64 %t330) + %t325 = getelementptr inbounds i64, ptr %t324, i64 %t320 + %t326 = load i64, ptr %t325 + %t327 = load { ptr, i64, i64 }, ptr %a3 + %t328 = extractvalue { ptr, i64, i64 } %t327, 1 + %t329 = icmp uge i64 %t326, %t328 + br i1 %t329, label %range8172, label %inrange8173 +range8172: + call void @finch_panic_index(ptr @.str.5333, i64 4958, i64 %t326, i64 %t328) unreachable -inrange7775: - %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.5150, 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.5152, 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 %endif7765 -else7764: - %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.from7776 -logic.from7776: - br i1 %t346, label %logic.rhs7777, label %logic.end7778 -logic.rhs7777: - %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 %range7779, label %inrange7780 -range7779: - call void @finch_panic_index(ptr @.str.5153, i64 4608, i64 %t348, i64 %t350) +inrange8173: + %t330 = extractvalue { ptr, i64, i64 } %t327, 0 + %t331 = getelementptr inbounds %S.ast.Node, ptr %t330, i64 %t326 + %t332 = load %S.ast.Node, ptr %t331 + %t333 = load %S.ast.Type, ptr %a308 + %t334 = call %S.gen.Val @finch.gen.exprWant(ptr %t319, %S.ast.Node %t332, %S.ast.Type %t333) + %t335 = load %S.ast.Type, ptr %a308 + %t336 = load i64, ptr %a294 + %t337 = load { ptr, i64, i64 }, ptr %a79 + %t338 = extractvalue { ptr, i64, i64 } %t337, 1 + %t339 = icmp uge i64 %t336, %t338 + br i1 %t339, label %range8174, label %inrange8175 +range8174: + call void @finch_panic_index(ptr @.str.5334, i64 4958, i64 %t336, i64 %t338) unreachable -inrange7780: - %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.rend7781 -logic.rend7781: - br label %logic.end7778 -logic.end7778: - %t358 = phi i1 [ false, %logic.from7776 ], [ %t357, %logic.rend7781 ] - br i1 %t358, label %then7782, label %else7783 -then7782: - %t359 = load ptr, ptr %a1 - %t360 = icmp eq ptr %t359, null - br i1 %t360, label %panic7785, label %ok7786 -panic7785: - call void @finch_panic(ptr @.str.5154, i64 4610, ptr @.str.5155) +inrange8175: + %t340 = extractvalue { ptr, i64, i64 } %t337, 0 + %t341 = getelementptr inbounds i64, ptr %t340, i64 %t336 + %t342 = load i64, ptr %t341 + %t343 = load { ptr, i64, i64 }, ptr %a3 + %t344 = extractvalue { ptr, i64, i64 } %t343, 1 + %t345 = icmp uge i64 %t342, %t344 + br i1 %t345, label %range8176, label %inrange8177 +range8176: + call void @finch_panic_index(ptr @.str.5335, i64 4958, i64 %t342, i64 %t344) unreachable -ok7786: - %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 - call void @finch.copy.arr_S_gen_Scope(ptr %a364, ptr %a363) - %t365 = load { ptr, i64, i64 }, ptr %a364 - store { ptr, i64, i64 } %t365, ptr %a366 - %t367 = load ptr, ptr %a1 - %t368 = icmp eq ptr %t367, null - br i1 %t368, label %panic7787, label %ok7788 -panic7787: - call void @finch_panic(ptr @.str.5156, i64 4611, ptr @.str.5157) +inrange8177: + %t346 = extractvalue { ptr, i64, i64 } %t343, 0 + %t347 = getelementptr inbounds %S.ast.Node, ptr %t346, i64 %t342 + %t348 = load %S.ast.Node, ptr %t347 + %t349 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 + %t350 = load i64, ptr %a294 + %t351 = load { ptr, i64, i64 }, ptr %t349 + %t352 = extractvalue { ptr, i64, i64 } %t351, 1 + %t353 = icmp uge i64 %t350, %t352 + br i1 %t353, label %range8178, label %inrange8179 +range8178: + call void @finch_panic_index(ptr @.str.5337, i64 4958, i64 %t350, i64 %t352) unreachable -ok7788: - %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 - call void @finch_str_copy(ptr %a372, ptr %a371) - %t373 = load { ptr, i64, i64 }, ptr %a372 - store { ptr, i64, i64 } %t373, ptr %a374 - %t375 = load ptr, ptr %a1 - %t376 = icmp eq ptr %t375, null - br i1 %t376, label %panic7789, label %ok7790 -panic7789: - call void @finch_panic(ptr @.str.5158, i64 4612, ptr @.str.5159) +inrange8179: + %t354 = extractvalue { ptr, i64, i64 } %t351, 0 + %t355 = getelementptr inbounds { ptr, i64, i64 }, ptr %t354, i64 %t350 + %t356 = load { ptr, i64, i64 }, ptr %t355 + store { ptr, i64, i64 } { ptr @.str.5336, i64 11, 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.5338, i64 1, i64 0 }, ptr %a363 + call void @finch_str_concat(ptr %a361, ptr %a362, ptr %a363) + store { ptr, i64, i64 } %t360, ptr %a364 + call void @finch_str_drop(ptr %a364) + %t365 = load { ptr, i64, i64 }, ptr %a361 + %t366 = call %S.gen.Val @finch.gen.coerce(ptr %t318, %S.gen.Val %t334, %S.ast.Type %t335, %S.ast.Node %t348, { ptr, i64, i64 } %t365) + store %S.gen.Val %t334, ptr %a367 + call void @finch.drop.S_gen_Val(ptr %a367) + store { ptr, i64, i64 } %t365, ptr %a368 + call void @finch_str_drop(ptr %a368) + %t369 = load %S.gen.Val, ptr %a309 + store %S.gen.Val %t366, ptr %a309 + store %S.gen.Val %t369, ptr %a370 + call void @finch.drop.S_gen_Val(ptr %a370) + br label %endif8169 +else8168: + %t371 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 2 + %t372 = load i1, ptr %t371 + %t373 = xor i1 %t372, true + br label %logic.from8180 +logic.from8180: + br i1 %t373, label %logic.rhs8181, label %logic.end8182 +logic.rhs8181: + %t374 = getelementptr inbounds %S.ast.Node, ptr %a20, i32 0, i32 9 + %t375 = load i64, ptr %a294 + %t376 = load { ptr, i64, i64 }, ptr %t374 + %t377 = extractvalue { ptr, i64, i64 } %t376, 1 + %t378 = icmp uge i64 %t375, %t377 + br i1 %t378, label %range8183, label %inrange8184 +range8183: + call void @finch_panic_index(ptr @.str.5339, i64 4959, i64 %t375, i64 %t377) unreachable -ok7790: - %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 - call void @finch.copy.arr_str(ptr %a380, ptr %a379) - %t381 = load { ptr, i64, i64 }, ptr %a380 - store { ptr, i64, i64 } %t381, ptr %a382 - %t383 = load ptr, ptr %a1 - %t384 = icmp eq ptr %t383, null - br i1 %t384, label %panic7791, label %ok7792 -panic7791: - call void @finch_panic(ptr @.str.5160, i64 4613, ptr @.str.5161) +inrange8184: + %t379 = extractvalue { ptr, i64, i64 } %t376, 0 + %t380 = getelementptr inbounds %S.ast.Node, ptr %t379, i64 %t375 + %t381 = getelementptr inbounds %S.ast.Node, ptr %t380, i32 0, i32 9 + %t382 = getelementptr inbounds { ptr, i64, i64 }, ptr %t381, i32 0, i32 1 + %t383 = load i64, ptr %t382 + %t384 = icmp sgt i64 %t383, 0 + br label %logic.rend8185 +logic.rend8185: + br label %logic.end8182 +logic.end8182: + %t385 = phi i1 [ false, %logic.from8180 ], [ %t384, %logic.rend8185 ] + br i1 %t385, label %then8186, label %else8187 +then8186: + %t386 = load ptr, ptr %a1 + %t387 = icmp eq ptr %t386, null + br i1 %t387, label %panic8189, label %ok8190 +panic8189: + call void @finch_panic(ptr @.str.5340, i64 4961, ptr @.str.5341) unreachable -ok7792: - %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 - call void @finch.copy.arr_S_ast_Type(ptr %a388, ptr %a387) - %t389 = load { ptr, i64, i64 }, ptr %a388 +ok8190: + %t388 = getelementptr inbounds %S.gen.Gen, ptr %t386, i32 0, i32 10 + %t389 = load { ptr, i64, i64 }, ptr %t388 store { ptr, i64, i64 } %t389, ptr %a390 - %t391 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 6 - %t392 = load { ptr, i64, i64 }, ptr %t391 - %t393 = load ptr, ptr %a1 - %t394 = icmp eq ptr %t393, null - br i1 %t394, label %panic7793, label %ok7794 -panic7793: - call void @finch_panic(ptr @.str.5162, i64 4614, ptr @.str.5163) + call void @finch.copy.arr_S_gen_Scope(ptr %a391, ptr %a390) + %t392 = load { ptr, i64, i64 }, ptr %a391 + store { ptr, i64, i64 } %t392, ptr %a393 + %t394 = load ptr, ptr %a1 + %t395 = icmp eq ptr %t394, null + br i1 %t395, label %panic8191, label %ok8192 +panic8191: + call void @finch_panic(ptr @.str.5342, i64 4962, ptr @.str.5343) unreachable -ok7794: - %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) - %t398 = load { ptr, i64, i64 }, ptr %a397 - store { ptr, i64, i64 } %t398, ptr %t395 - %t399 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 7 - %t400 = load { ptr, i64, i64 }, ptr %t399 - %t401 = load ptr, ptr %a1 - %t402 = icmp eq ptr %t401, null - br i1 %t402, label %panic7795, label %ok7796 -panic7795: - call void @finch_panic(ptr @.str.5164, i64 4615, ptr @.str.5165) +ok8192: + %t396 = getelementptr inbounds %S.gen.Gen, ptr %t394, i32 0, i32 14 + %t397 = load { ptr, i64, i64 }, ptr %t396 + store { ptr, i64, i64 } %t397, ptr %a398 + call void @finch_str_copy(ptr %a399, ptr %a398) + %t400 = load { ptr, i64, i64 }, ptr %a399 + store { ptr, i64, i64 } %t400, ptr %a401 + %t402 = load ptr, ptr %a1 + %t403 = icmp eq ptr %t402, null + br i1 %t403, label %panic8193, label %ok8194 +panic8193: + call void @finch_panic(ptr @.str.5344, i64 4963, ptr @.str.5345) unreachable -ok7796: - %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) - %t406 = load { ptr, i64, i64 }, ptr %a405 - store { ptr, i64, i64 } %t406, ptr %t403 - store { ptr, i64, i64 } zeroinitializer, ptr %a407 +ok8194: + %t404 = getelementptr inbounds %S.gen.Gen, ptr %t402, i32 0, i32 18 + %t405 = load { ptr, i64, i64 }, ptr %t404 + store { ptr, i64, i64 } %t405, ptr %a406 + call void @finch.copy.arr_str(ptr %a407, ptr %a406) %t408 = load { ptr, i64, i64 }, ptr %a407 - %t409 = load ptr, ptr %a1 - %t410 = icmp eq ptr %t409, null - br i1 %t410, label %panic7797, label %ok7798 -panic7797: - call void @finch_panic(ptr @.str.5166, i64 4617, ptr @.str.5167) + store { ptr, i64, i64 } %t408, ptr %a409 + %t410 = load ptr, ptr %a1 + %t411 = icmp eq ptr %t410, null + br i1 %t411, label %panic8195, label %ok8196 +panic8195: + call void @finch_panic(ptr @.str.5346, i64 4964, ptr @.str.5347) unreachable -ok7798: - %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) - %t414 = load { ptr, i64, i64 }, ptr %a413 - store { ptr, i64, i64 } %t414, ptr %t411 - %t415 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t415) - %t416 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 0 - %t417 = load { ptr, i64, i64 }, ptr %t416 - %t418 = load ptr, ptr %a1 - %t419 = icmp eq ptr %t418, null - br i1 %t419, label %panic7799, label %ok7800 -panic7799: - call void @finch_panic(ptr @.str.5168, i64 4619, ptr @.str.5169) +ok8196: + %t412 = getelementptr inbounds %S.gen.Gen, ptr %t410, i32 0, i32 19 + %t413 = load { ptr, i64, i64 }, ptr %t412 + store { ptr, i64, i64 } %t413, ptr %a414 + call void @finch.copy.arr_S_ast_Type(ptr %a415, ptr %a414) + %t416 = load { ptr, i64, i64 }, ptr %a415 + store { ptr, i64, i64 } %t416, ptr %a417 + %t418 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 6 + %t419 = load { ptr, i64, i64 }, ptr %t418 + %t420 = load ptr, ptr %a1 + %t421 = icmp eq ptr %t420, null + br i1 %t421, label %panic8197, label %ok8198 +panic8197: + call void @finch_panic(ptr @.str.5348, i64 4965, ptr @.str.5349) unreachable -ok7800: - %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) - %t423 = load { ptr, i64, i64 }, ptr %a422 - store { ptr, i64, i64 } %t423, ptr %t420 - %t424 = load ptr, ptr %a1 - %t425 = load ptr, ptr %a1 - %t426 = getelementptr inbounds %S.ast.Node, ptr %a20, i32 0, i32 9 - %t427 = load i64, ptr %a272 - %t428 = load { ptr, i64, i64 }, ptr %t426 - %t429 = extractvalue { ptr, i64, i64 } %t428, 1 - %t430 = icmp uge i64 %t427, %t429 - br i1 %t430, label %range7801, label %inrange7802 -range7801: - call void @finch_panic_index(ptr @.str.5170, i64 4620, i64 %t427, i64 %t429) +ok8198: + %t422 = getelementptr inbounds %S.gen.Gen, ptr %t420, i32 0, i32 18 + store { ptr, i64, i64 } %t419, ptr %a423 + call void @finch.copy.arr_str(ptr %a424, ptr %a423) + %t425 = load { ptr, i64, i64 }, ptr %a424 + %t426 = load { ptr, i64, i64 }, ptr %t422 + store { ptr, i64, i64 } %t425, ptr %t422 + store { ptr, i64, i64 } %t426, ptr %a427 + call void @finch.drop.arr_str(ptr %a427) + %t428 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 7 + %t429 = load { ptr, i64, i64 }, ptr %t428 + %t430 = load ptr, ptr %a1 + %t431 = icmp eq ptr %t430, null + br i1 %t431, label %panic8199, label %ok8200 +panic8199: + call void @finch_panic(ptr @.str.5350, i64 4966, ptr @.str.5351) unreachable -inrange7802: - %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 %range7803, label %inrange7804 -range7803: - call void @finch_panic_index(ptr @.str.5171, i64 4620, i64 0, i64 %t435) +ok8200: + %t432 = getelementptr inbounds %S.gen.Gen, ptr %t430, i32 0, i32 19 + store { ptr, i64, i64 } %t429, ptr %a433 + call void @finch.copy.arr_S_ast_Type(ptr %a434, ptr %a433) + %t435 = load { ptr, i64, i64 }, ptr %a434 + %t436 = load { ptr, i64, i64 }, ptr %t432 + store { ptr, i64, i64 } %t435, ptr %t432 + store { ptr, i64, i64 } %t436, ptr %a437 + call void @finch.drop.arr_S_ast_Type(ptr %a437) + store { ptr, i64, i64 } zeroinitializer, ptr %a438 + %t439 = load { ptr, i64, i64 }, ptr %a438 + %t440 = load ptr, ptr %a1 + %t441 = icmp eq ptr %t440, null + br i1 %t441, label %panic8201, label %ok8202 +panic8201: + call void @finch_panic(ptr @.str.5352, i64 4968, ptr @.str.5353) unreachable -inrange7804: - %t437 = extractvalue { ptr, i64, i64 } %t434, 0 - %t438 = getelementptr inbounds %S.ast.Node, ptr %t437, i64 0 - %t439 = load %S.ast.Node, ptr %t438 - %t440 = load %S.ast.Type, ptr %a286 - %t441 = call %S.gen.Val @finch.gen.exprWant(ptr %t425, %S.ast.Node %t439, %S.ast.Type %t440) - %t442 = load %S.ast.Type, ptr %a286 - %t443 = getelementptr inbounds %S.ast.Node, ptr %a20, i32 0, i32 9 - %t444 = load i64, ptr %a272 - %t445 = load { ptr, i64, i64 }, ptr %t443 - %t446 = extractvalue { ptr, i64, i64 } %t445, 1 - %t447 = icmp uge i64 %t444, %t446 - br i1 %t447, label %range7805, label %inrange7806 -range7805: - call void @finch_panic_index(ptr @.str.5172, i64 4620, i64 %t444, i64 %t446) +ok8202: + %t442 = getelementptr inbounds %S.gen.Gen, ptr %t440, i32 0, i32 10 + store { ptr, i64, i64 } %t439, ptr %a443 + call void @finch.copy.arr_S_gen_Scope(ptr %a444, ptr %a443) + %t445 = load { ptr, i64, i64 }, ptr %a444 + %t446 = load { ptr, i64, i64 }, ptr %t442 + store { ptr, i64, i64 } %t445, ptr %t442 + store { ptr, i64, i64 } %t446, ptr %a447 + call void @finch.drop.arr_S_gen_Scope(ptr %a447) + %t448 = load ptr, ptr %a1 + call void @finch.gen.pushScope(ptr %t448) + %t449 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 0 + %t450 = load { ptr, i64, i64 }, ptr %t449 + %t451 = load ptr, ptr %a1 + %t452 = icmp eq ptr %t451, null + br i1 %t452, label %panic8203, label %ok8204 +panic8203: + call void @finch_panic(ptr @.str.5354, i64 4970, ptr @.str.5355) unreachable -inrange7806: - %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 %range7807, label %inrange7808 -range7807: - call void @finch_panic_index(ptr @.str.5173, i64 4620, i64 0, i64 %t452) +ok8204: + %t453 = getelementptr inbounds %S.gen.Gen, ptr %t451, i32 0, i32 14 + store { ptr, i64, i64 } %t450, ptr %a454 + call void @finch_str_copy(ptr %a455, ptr %a454) + %t456 = load { ptr, i64, i64 }, ptr %a455 + %t457 = load { ptr, i64, i64 }, ptr %t453 + store { ptr, i64, i64 } %t456, ptr %t453 + store { ptr, i64, i64 } %t457, ptr %a458 + call void @finch_str_drop(ptr %a458) + %t459 = load ptr, ptr %a1 + %t460 = load ptr, ptr %a1 + %t461 = getelementptr inbounds %S.ast.Node, ptr %a20, i32 0, i32 9 + %t462 = load i64, ptr %a294 + %t463 = load { ptr, i64, i64 }, ptr %t461 + %t464 = extractvalue { ptr, i64, i64 } %t463, 1 + %t465 = icmp uge i64 %t462, %t464 + br i1 %t465, label %range8205, label %inrange8206 +range8205: + call void @finch_panic_index(ptr @.str.5356, i64 4971, i64 %t462, i64 %t464) unreachable -inrange7808: - %t454 = extractvalue { ptr, i64, i64 } %t451, 0 - %t455 = getelementptr inbounds %S.ast.Node, ptr %t454, i64 0 - %t456 = load %S.ast.Node, ptr %t455 - %t457 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 - %t458 = load i64, ptr %a272 - %t459 = load { ptr, i64, i64 }, ptr %t457 - %t460 = extractvalue { ptr, i64, i64 } %t459, 1 - %t461 = icmp uge i64 %t458, %t460 - br i1 %t461, label %range7809, label %inrange7810 -range7809: - call void @finch_panic_index(ptr @.str.5175, i64 4620, i64 %t458, i64 %t460) +inrange8206: + %t466 = extractvalue { ptr, i64, i64 } %t463, 0 + %t467 = getelementptr inbounds %S.ast.Node, ptr %t466, i64 %t462 + %t468 = getelementptr inbounds %S.ast.Node, ptr %t467, i32 0, i32 9 + %t469 = load { ptr, i64, i64 }, ptr %t468 + %t470 = extractvalue { ptr, i64, i64 } %t469, 1 + %t471 = icmp uge i64 0, %t470 + br i1 %t471, label %range8207, label %inrange8208 +range8207: + call void @finch_panic_index(ptr @.str.5357, i64 4971, i64 0, i64 %t470) unreachable -inrange7810: - %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.5174, 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.5176, 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) - store %S.gen.Val %t473, ptr %a287 - %t474 = load { ptr, i64, i64 }, ptr %a374 - %t475 = load ptr, ptr %a1 - %t476 = icmp eq ptr %t475, null - br i1 %t476, label %panic7811, label %ok7812 -panic7811: - call void @finch_panic(ptr @.str.5177, i64 4621, ptr @.str.5178) +inrange8208: + %t472 = extractvalue { ptr, i64, i64 } %t469, 0 + %t473 = getelementptr inbounds %S.ast.Node, ptr %t472, i64 0 + %t474 = load %S.ast.Node, ptr %t473 + %t475 = load %S.ast.Type, ptr %a308 + %t476 = call %S.gen.Val @finch.gen.exprWant(ptr %t460, %S.ast.Node %t474, %S.ast.Type %t475) + %t477 = load %S.ast.Type, ptr %a308 + %t478 = getelementptr inbounds %S.ast.Node, ptr %a20, i32 0, i32 9 + %t479 = load i64, ptr %a294 + %t480 = load { ptr, i64, i64 }, ptr %t478 + %t481 = extractvalue { ptr, i64, i64 } %t480, 1 + %t482 = icmp uge i64 %t479, %t481 + br i1 %t482, label %range8209, label %inrange8210 +range8209: + call void @finch_panic_index(ptr @.str.5358, i64 4971, i64 %t479, i64 %t481) unreachable -ok7812: - %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) - %t480 = load { ptr, i64, i64 }, ptr %a479 - store { ptr, i64, i64 } %t480, ptr %t477 - %t481 = load { ptr, i64, i64 }, ptr %a382 - %t482 = load ptr, ptr %a1 - %t483 = icmp eq ptr %t482, null - br i1 %t483, label %panic7813, label %ok7814 -panic7813: - call void @finch_panic(ptr @.str.5179, i64 4622, ptr @.str.5180) +inrange8210: + %t483 = extractvalue { ptr, i64, i64 } %t480, 0 + %t484 = getelementptr inbounds %S.ast.Node, ptr %t483, i64 %t479 + %t485 = getelementptr inbounds %S.ast.Node, ptr %t484, i32 0, i32 9 + %t486 = load { ptr, i64, i64 }, ptr %t485 + %t487 = extractvalue { ptr, i64, i64 } %t486, 1 + %t488 = icmp uge i64 0, %t487 + br i1 %t488, label %range8211, label %inrange8212 +range8211: + call void @finch_panic_index(ptr @.str.5359, i64 4971, i64 0, i64 %t487) unreachable -ok7814: - %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) - %t487 = load { ptr, i64, i64 }, ptr %a486 - store { ptr, i64, i64 } %t487, ptr %t484 - %t488 = load { ptr, i64, i64 }, ptr %a390 - %t489 = load ptr, ptr %a1 - %t490 = icmp eq ptr %t489, null - br i1 %t490, label %panic7815, label %ok7816 -panic7815: - call void @finch_panic(ptr @.str.5181, i64 4623, ptr @.str.5182) +inrange8212: + %t489 = extractvalue { ptr, i64, i64 } %t486, 0 + %t490 = getelementptr inbounds %S.ast.Node, ptr %t489, i64 0 + %t491 = load %S.ast.Node, ptr %t490 + %t492 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 + %t493 = load i64, ptr %a294 + %t494 = load { ptr, i64, i64 }, ptr %t492 + %t495 = extractvalue { ptr, i64, i64 } %t494, 1 + %t496 = icmp uge i64 %t493, %t495 + br i1 %t496, label %range8213, label %inrange8214 +range8213: + call void @finch_panic_index(ptr @.str.5361, i64 4971, i64 %t493, i64 %t495) unreachable -ok7816: - %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) - %t494 = load { ptr, i64, i64 }, ptr %a493 - store { ptr, i64, i64 } %t494, ptr %t491 - %t495 = load { ptr, i64, i64 }, ptr %a366 - %t496 = load ptr, ptr %a1 - %t497 = icmp eq ptr %t496, null - br i1 %t497, label %panic7817, label %ok7818 -panic7817: - call void @finch_panic(ptr @.str.5183, i64 4624, ptr @.str.5184) - unreachable -ok7818: - %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 %endif7784 -else7783: - br label %for.step7757 -endif7784: - br label %endif7765 -endif7765: - %t502 = load ptr, ptr %a1 - %t503 = load { ptr, i64, i64 }, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.5185, i64 12, i64 0 }, ptr %a505 - store { ptr, i64, i64 } %t503, ptr %a506 +inrange8214: + %t497 = extractvalue { ptr, i64, i64 } %t494, 0 + %t498 = getelementptr inbounds { ptr, i64, i64 }, ptr %t497, i64 %t493 + %t499 = load { ptr, i64, i64 }, ptr %t498 + store { ptr, i64, i64 } { ptr @.str.5360, i64 16, i64 0 }, ptr %a501 + store { ptr, i64, i64 } %t499, ptr %a502 + call void @finch_str_concat(ptr %a500, ptr %a501, ptr %a502) + %t503 = load { ptr, i64, i64 }, ptr %a500 + store { ptr, i64, i64 } %t503, ptr %a505 + store { ptr, i64, i64 } { ptr @.str.5362, i64 1, i64 0 }, 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.5186, 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 - store { ptr, i64, i64 } %t511, 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.5187, 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 - %t522 = load %S.ast.Type, ptr %a286 - %t523 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t521, %S.ast.Type %t522) - store { ptr, i64, i64 } %t520, ptr %a525 - store { ptr, i64, i64 } %t523, ptr %a526 - 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.5188, 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 - %t533 = load %S.gen.Val, ptr %a287 - %t534 = call { ptr, i64, i64 } @finch.gen.own(ptr %t532, %S.gen.Val %t533) - store { ptr, i64, i64 } %t531, 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.5189, 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 - %t544 = load i64, ptr %a272 - %t545 = load { ptr, i64, i64 }, ptr %t543 - %t546 = extractvalue { ptr, i64, i64 } %t545, 1 - %t547 = icmp uge i64 %t544, %t546 - br i1 %t547, label %range7819, label %inrange7820 -range7819: - call void @finch_panic_index(ptr @.str.5190, i64 4628, i64 %t544, i64 %t546) + store { ptr, i64, i64 } %t503, ptr %a507 + call void @finch_str_drop(ptr %a507) + %t508 = load { ptr, i64, i64 }, ptr %a504 + %t509 = call %S.gen.Val @finch.gen.coerce(ptr %t459, %S.gen.Val %t476, %S.ast.Type %t477, %S.ast.Node %t491, { ptr, i64, i64 } %t508) + store %S.gen.Val %t476, ptr %a510 + call void @finch.drop.S_gen_Val(ptr %a510) + store { ptr, i64, i64 } %t508, ptr %a511 + call void @finch_str_drop(ptr %a511) + %t512 = load %S.gen.Val, ptr %a309 + store %S.gen.Val %t509, ptr %a309 + store %S.gen.Val %t512, ptr %a513 + call void @finch.drop.S_gen_Val(ptr %a513) + %t514 = load { ptr, i64, i64 }, ptr %a401 + %t515 = load ptr, ptr %a1 + %t516 = icmp eq ptr %t515, null + br i1 %t516, label %panic8215, label %ok8216 +panic8215: + call void @finch_panic(ptr @.str.5363, i64 4972, ptr @.str.5364) unreachable -inrange7820: - %t548 = extractvalue { ptr, i64, i64 } %t545, 0 - %t549 = getelementptr inbounds i64, ptr %t548, i64 %t544 - %t550 = load i64, ptr %t549 - call void @finch_str_from_int(ptr %a551, i64 %t550) - %t552 = load { ptr, i64, i64 }, ptr %a551 - store { ptr, i64, i64 } %t542, 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 { ptr, i64, i64 } @finch.gen.op(ptr %t502, { ptr, i64, i64 } %t556) - store { ptr, i64, i64 } %t557, ptr %a268 - br label %for.step7757 -for.step7757: - %t558 = load i64, ptr %a272 - %t559 = add i64 %t558, 1 - store i64 %t559, ptr %a272 - br label %for.cond7755 -for.end7758: - %t560 = load { ptr, i64, i64 }, ptr %a268 - store { ptr, i64, i64 } %t560, ptr %a561 - call void @finch_str_copy(ptr %a562, ptr %a561) - %t563 = load { ptr, i64, i64 }, ptr %a562 - %t564 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t563, 0 - %t565 = load %S.ast.Type, ptr %a59 - store %S.ast.Type %t565, ptr %a566 - call void @finch.copy.S_ast_Type(ptr %a567, ptr %a566) - %t568 = load %S.ast.Type, ptr %a567 - %t569 = insertvalue %S.gen.Val %t564, %S.ast.Type %t568, 1 - %t570 = load ptr, ptr %a1 - %t571 = load %S.ast.Type, ptr %a59 - %t572 = call i1 @finch.gen.owning(ptr %t570, %S.ast.Type %t571) - %t573 = insertvalue %S.gen.Val %t569, i1 %t572, 2 - ret %S.gen.Val %t573 +ok8216: + %t517 = getelementptr inbounds %S.gen.Gen, ptr %t515, i32 0, i32 14 + store { ptr, i64, i64 } %t514, ptr %a518 + call void @finch_str_copy(ptr %a519, ptr %a518) + %t520 = load { ptr, i64, i64 }, ptr %a519 + %t521 = load { ptr, i64, i64 }, ptr %t517 + store { ptr, i64, i64 } %t520, ptr %t517 + store { ptr, i64, i64 } %t521, ptr %a522 + call void @finch_str_drop(ptr %a522) + %t523 = load { ptr, i64, i64 }, ptr %a409 + %t524 = load ptr, ptr %a1 + %t525 = icmp eq ptr %t524, null + br i1 %t525, label %panic8217, label %ok8218 +panic8217: + call void @finch_panic(ptr @.str.5365, i64 4973, ptr @.str.5366) + unreachable +ok8218: + %t526 = getelementptr inbounds %S.gen.Gen, ptr %t524, i32 0, i32 18 + store { ptr, i64, i64 } %t523, ptr %a527 + call void @finch.copy.arr_str(ptr %a528, ptr %a527) + %t529 = load { ptr, i64, i64 }, ptr %a528 + %t530 = load { ptr, i64, i64 }, ptr %t526 + store { ptr, i64, i64 } %t529, ptr %t526 + store { ptr, i64, i64 } %t530, ptr %a531 + call void @finch.drop.arr_str(ptr %a531) + %t532 = load { ptr, i64, i64 }, ptr %a417 + %t533 = load ptr, ptr %a1 + %t534 = icmp eq ptr %t533, null + br i1 %t534, label %panic8219, label %ok8220 +panic8219: + call void @finch_panic(ptr @.str.5367, i64 4974, ptr @.str.5368) + unreachable +ok8220: + %t535 = getelementptr inbounds %S.gen.Gen, ptr %t533, i32 0, i32 19 + store { ptr, i64, i64 } %t532, ptr %a536 + call void @finch.copy.arr_S_ast_Type(ptr %a537, ptr %a536) + %t538 = load { ptr, i64, i64 }, ptr %a537 + %t539 = load { ptr, i64, i64 }, ptr %t535 + store { ptr, i64, i64 } %t538, ptr %t535 + store { ptr, i64, i64 } %t539, ptr %a540 + call void @finch.drop.arr_S_ast_Type(ptr %a540) + %t541 = load { ptr, i64, i64 }, ptr %a393 + %t542 = load ptr, ptr %a1 + %t543 = icmp eq ptr %t542, null + br i1 %t543, label %panic8221, label %ok8222 +panic8221: + call void @finch_panic(ptr @.str.5369, i64 4975, ptr @.str.5370) + unreachable +ok8222: + %t544 = getelementptr inbounds %S.gen.Gen, ptr %t542, i32 0, i32 10 + store { ptr, i64, i64 } %t541, ptr %a545 + call void @finch.copy.arr_S_gen_Scope(ptr %a546, ptr %a545) + %t547 = load { ptr, i64, i64 }, ptr %a546 + %t548 = load { ptr, i64, i64 }, ptr %t544 + store { ptr, i64, i64 } %t547, ptr %t544 + store { ptr, i64, i64 } %t548, ptr %a549 + call void @finch.drop.arr_S_gen_Scope(ptr %a549) + call void @finch.drop.arr_S_gen_Scope(ptr %a438) + call void @finch.drop.arr_S_ast_Type(ptr %a417) + call void @finch.drop.arr_str(ptr %a409) + call void @finch_str_drop(ptr %a401) + call void @finch.drop.arr_S_gen_Scope(ptr %a393) + br label %endif8188 +else8187: + call void @finch.drop.S_gen_Val(ptr %a309) + call void @finch.drop.S_ast_Type(ptr %a308) + br label %for.step8161 +endif8188: + br label %endif8169 +endif8169: + %t550 = load ptr, ptr %a1 + %t551 = load %S.gen.Val, ptr %a309 + %t552 = call { ptr, i64, i64 } @finch.gen.own(ptr %t550, %S.gen.Val %t551) + store { ptr, i64, i64 } %t552, ptr %a553 + %t554 = load ptr, ptr %a1 + %t555 = load { ptr, i64, i64 }, ptr %a553 + store { ptr, i64, i64 } %t555, ptr %a556 + call void @finch_str_copy(ptr %a557, ptr %a556) + %t558 = load { ptr, i64, i64 }, ptr %a557 + %t559 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t558, 0 + %t560 = load %S.ast.Type, ptr %a308 + store %S.ast.Type %t560, ptr %a561 + call void @finch.copy.S_ast_Type(ptr %a562, ptr %a561) + %t563 = load %S.ast.Type, ptr %a562 + %t564 = insertvalue %S.gen.Val %t559, %S.ast.Type %t563, 1 + %t565 = insertvalue %S.gen.Val %t564, i1 true, 2 + call void @finch.gen.hold(ptr %t554, %S.gen.Val %t565) + store %S.gen.Val %t565, ptr %a566 + call void @finch.drop.S_gen_Val(ptr %a566) + %t567 = load ptr, ptr %a1 + %t568 = load { ptr, i64, i64 }, ptr %a65 + store { ptr, i64, i64 } { ptr @.str.5371, i64 12, i64 0 }, ptr %a570 + store { ptr, i64, i64 } %t568, ptr %a571 + call void @finch_str_concat(ptr %a569, ptr %a570, ptr %a571) + %t572 = load { ptr, i64, i64 }, ptr %a569 + store { ptr, i64, i64 } %t572, ptr %a574 + store { ptr, i64, i64 } { ptr @.str.5372, i64 1, i64 0 }, ptr %a575 + call void @finch_str_concat(ptr %a573, ptr %a574, ptr %a575) + store { ptr, i64, i64 } %t572, ptr %a576 + call void @finch_str_drop(ptr %a576) + %t577 = load { ptr, i64, i64 }, ptr %a573 + %t578 = load { ptr, i64, i64 }, ptr %a284 + store { ptr, i64, i64 } %t577, ptr %a580 + store { ptr, i64, i64 } %t578, ptr %a581 + call void @finch_str_concat(ptr %a579, ptr %a580, ptr %a581) + store { ptr, i64, i64 } %t577, ptr %a582 + call void @finch_str_drop(ptr %a582) + %t583 = load { ptr, i64, i64 }, ptr %a579 + store { ptr, i64, i64 } %t583, ptr %a585 + store { ptr, i64, i64 } { ptr @.str.5373, i64 2, i64 0 }, ptr %a586 + call void @finch_str_concat(ptr %a584, ptr %a585, ptr %a586) + store { ptr, i64, i64 } %t583, ptr %a587 + call void @finch_str_drop(ptr %a587) + %t588 = load { ptr, i64, i64 }, ptr %a584 + %t589 = load ptr, ptr %a1 + %t590 = load %S.ast.Type, ptr %a308 + %t591 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t589, %S.ast.Type %t590) + store { ptr, i64, i64 } %t588, ptr %a593 + store { ptr, i64, i64 } %t591, ptr %a594 + call void @finch_str_concat(ptr %a592, ptr %a593, ptr %a594) + store { ptr, i64, i64 } %t588, ptr %a595 + call void @finch_str_drop(ptr %a595) + store { ptr, i64, i64 } %t591, ptr %a596 + call void @finch_str_drop(ptr %a596) + %t597 = load { ptr, i64, i64 }, ptr %a592 + store { ptr, i64, i64 } %t597, ptr %a599 + store { ptr, i64, i64 } { ptr @.str.5374, i64 1, i64 0 }, ptr %a600 + call void @finch_str_concat(ptr %a598, ptr %a599, ptr %a600) + store { ptr, i64, i64 } %t597, ptr %a601 + call void @finch_str_drop(ptr %a601) + %t602 = load { ptr, i64, i64 }, ptr %a598 + %t603 = load { ptr, i64, i64 }, ptr %a553 + store { ptr, i64, i64 } %t602, ptr %a605 + store { ptr, i64, i64 } %t603, ptr %a606 + call void @finch_str_concat(ptr %a604, ptr %a605, ptr %a606) + store { ptr, i64, i64 } %t602, ptr %a607 + call void @finch_str_drop(ptr %a607) + %t608 = load { ptr, i64, i64 }, ptr %a604 + store { ptr, i64, i64 } %t608, ptr %a610 + store { ptr, i64, i64 } { ptr @.str.5375, i64 2, i64 0 }, ptr %a611 + call void @finch_str_concat(ptr %a609, ptr %a610, ptr %a611) + store { ptr, i64, i64 } %t608, ptr %a612 + call void @finch_str_drop(ptr %a612) + %t613 = load { ptr, i64, i64 }, ptr %a609 + %t614 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 3 + %t615 = load i64, ptr %a294 + %t616 = load { ptr, i64, i64 }, ptr %t614 + %t617 = extractvalue { ptr, i64, i64 } %t616, 1 + %t618 = icmp uge i64 %t615, %t617 + br i1 %t618, label %range8223, label %inrange8224 +range8223: + call void @finch_panic_index(ptr @.str.5376, i64 4981, i64 %t615, i64 %t617) + unreachable +inrange8224: + %t619 = extractvalue { ptr, i64, i64 } %t616, 0 + %t620 = getelementptr inbounds i64, ptr %t619, i64 %t615 + %t621 = load i64, ptr %t620 + call void @finch_str_from_int(ptr %a622, i64 %t621) + %t623 = load { ptr, i64, i64 }, ptr %a622 + store { ptr, i64, i64 } %t613, ptr %a625 + store { ptr, i64, i64 } %t623, ptr %a626 + call void @finch_str_concat(ptr %a624, ptr %a625, ptr %a626) + store { ptr, i64, i64 } %t613, ptr %a627 + call void @finch_str_drop(ptr %a627) + store { ptr, i64, i64 } %t623, ptr %a628 + call void @finch_str_drop(ptr %a628) + %t629 = load { ptr, i64, i64 }, ptr %a624 + %t630 = call { ptr, i64, i64 } @finch.gen.op(ptr %t567, { ptr, i64, i64 } %t629) + store { ptr, i64, i64 } %t629, ptr %a631 + call void @finch_str_drop(ptr %a631) + %t632 = load { ptr, i64, i64 }, ptr %a284 + store { ptr, i64, i64 } %t630, ptr %a284 + store { ptr, i64, i64 } %t632, ptr %a633 + call void @finch_str_drop(ptr %a633) + call void @finch_str_drop(ptr %a553) + call void @finch.drop.S_gen_Val(ptr %a309) + call void @finch.drop.S_ast_Type(ptr %a308) + br label %for.step8161 +for.step8161: + %t634 = load i64, ptr %a294 + %t635 = add i64 %t634, 1 + store i64 %t635, ptr %a294 + br label %for.cond8159 +for.end8162: + %t636 = load ptr, ptr %a1 + %t637 = load i64, ptr %a290 + call void @finch.gen.heldEnd(ptr %t636, i64 %t637) + %t638 = load { ptr, i64, i64 }, ptr %a284 + store { ptr, i64, i64 } %t638, ptr %a639 + call void @finch_str_copy(ptr %a640, ptr %a639) + %t641 = load { ptr, i64, i64 }, ptr %a640 + %t642 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t641, 0 + %t643 = load %S.ast.Type, ptr %a61 + store %S.ast.Type %t643, ptr %a644 + call void @finch.copy.S_ast_Type(ptr %a645, ptr %a644) + %t646 = load %S.ast.Type, ptr %a645 + %t647 = insertvalue %S.gen.Val %t642, %S.ast.Type %t646, 1 + %t648 = load ptr, ptr %a1 + %t649 = load %S.ast.Type, ptr %a61 + %t650 = call i1 @finch.gen.owning(ptr %t648, %S.ast.Type %t649) + %t651 = insertvalue %S.gen.Val %t647, i1 %t650, 2 + call void @finch_str_drop(ptr %a284) + call void @finch.drop.arr_int(ptr %a79) + call void @finch_str_drop(ptr %a65) + call void @finch.drop.S_ast_Type(ptr %a61) + call void @finch.drop.S_ast_Node(ptr %a20) + call void @finch.drop.S_gen_StructDef(ptr %a19) + ret %S.gen.Val %t651 } define internal void @finch.gen.noteMethod(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2) { @@ -70532,23 +83872,24 @@ entry: %a2 = alloca %S.ast.Node, align 16 %a3 = alloca { ptr, i64, i64 }, align 16 %a13 = alloca %S.docs.Doc, align 16 + %a28 = 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 %panic7821, label %ok7822 -panic7821: - call void @finch_panic(ptr @.str.5191, i64 4637, ptr @.str.5192) + br i1 %t5, label %panic8225, label %ok8226 +panic8225: + call void @finch_panic(ptr @.str.5377, i64 4991, ptr @.str.5378) unreachable -ok7822: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 26 +ok8226: + %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 27 %t7 = load i1, ptr %t6 %t8 = xor i1 %t7, true - br i1 %t8, label %then7823, label %endif7825 -then7823: + br i1 %t8, label %then8227, label %endif8229 +then8227: ret void -endif7825: +endif8229: %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 @@ -70558,8 +83899,8 @@ endif7825: %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 %then7826, label %endif7828 -then7826: + br i1 %t17, label %then8230, label %endif8232 +then8230: %t18 = load ptr, ptr %a1 %t19 = load %S.ast.Node, ptr %a2 %t20 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 @@ -70570,9 +83911,12 @@ then7826: %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.5193, i64 0, i64 0 }, i64 0, i64 0) - br label %endif7828 -endif7828: + call void @finch.gen.noteRef(ptr %t18, %S.ast.Node %t19, i64 %t22, i64 %t25, { ptr, i64, i64 } %t27, { ptr, i64, i64 } { ptr @.str.5379, i64 0, i64 0 }, i64 0, i64 0) + store { ptr, i64, i64 } %t27, ptr %a28 + call void @finch_str_drop(ptr %a28) + br label %endif8232 +endif8232: + call void @finch.drop.S_docs_Doc(ptr %a13) ret void } @@ -70594,228 +83938,300 @@ entry: %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 + %a46 = 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 %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 %a54 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca i64, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 + %a55 = 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 + %a72 = alloca { ptr, i64, i64 }, align 16 + %a73 = alloca { ptr, i64, i64 }, align 16 %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca i64, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = 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 + %a84 = alloca { ptr, i64, i64 }, align 16 + %a90 = alloca i64, align 16 %a97 = alloca { ptr, i64, i64 }, align 16 %a98 = alloca { ptr, i64, i64 }, align 16 %a99 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca i64, align 16 - %a119 = alloca i64, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca i64, align 16 - %a138 = alloca %S.ast.Node, align 16 - %a139 = alloca %S.ast.Node, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = 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 + %a103 = 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 + %a109 = alloca { ptr, i64, i64 }, align 16 + %a115 = alloca i64, align 16 + %a127 = alloca i64, align 16 + %a130 = alloca { ptr, i64, i64 }, align 16 + %a134 = alloca i64, align 16 + %a146 = alloca %S.ast.Node, align 16 + %a147 = alloca %S.ast.Node, align 16 + %a165 = alloca { ptr, i64, i64 }, align 16 + %a166 = alloca { ptr, i64, i64 }, align 16 %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = 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 %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca i64, align 16 - %a197 = alloca i64, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca %S.gen.Ref, align 16 - %a214 = alloca %S.ast.Type, align 16 - %a215 = alloca %S.ast.Type, align 16 - %a217 = alloca %S.ast.Type, align 16 - %a223 = alloca %S.ast.Type, align 16 - %a224 = alloca %S.ast.Type, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca i64, align 16 - %a247 = alloca i64, align 16 + %a176 = 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 + %a184 = alloca { ptr, i64, i64 }, align 16 + %a186 = alloca { ptr, i64, i64 }, align 16 + %a200 = alloca { ptr, i64, i64 }, align 16 + %a206 = alloca i64, align 16 + %a209 = alloca i64, align 16 + %a214 = alloca { ptr, i64, i64 }, align 16 + %a215 = alloca { ptr, i64, i64 }, align 16 + %a222 = alloca %S.gen.Ref, align 16 + %a228 = alloca i64, align 16 + %a232 = alloca %S.ast.Type, align 16 + %a233 = alloca %S.ast.Type, align 16 + %a235 = alloca %S.ast.Type, align 16 + %a241 = alloca %S.ast.Type, align 16 + %a242 = alloca %S.ast.Type, align 16 + %a245 = alloca %S.ast.Type, align 16 + %a248 = alloca { ptr, i64, i64 }, align 16 + %a249 = alloca { ptr, i64, i64 }, align 16 %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca %S.gen.Val, 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 - %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 - %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 + %a258 = alloca { ptr, i64, i64 }, align 16 + %a259 = alloca { ptr, i64, i64 }, align 16 + %a262 = alloca { ptr, i64, i64 }, align 16 + %a266 = alloca i64, align 16 + %a269 = alloca i64, align 16 + %a274 = alloca { ptr, i64, i64 }, align 16 + %a275 = 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 + %a289 = alloca { ptr, i64, i64 }, align 16 + %a295 = alloca { ptr, i64, i64 }, align 16 + %a305 = alloca { ptr, i64, i64 }, align 16 + %a311 = alloca %S.gen.Val, align 16 + %a327 = alloca { ptr, i64, i64 }, align 16 + %a328 = alloca { ptr, i64, i64 }, align 16 + %a333 = alloca %S.gen.Val, align 16 + %a334 = alloca %S.gen.Val, align 16 + %a336 = alloca %S.gen.Val, align 16 + %a346 = alloca %S.ast.Type, align 16 + %a347 = alloca %S.ast.Type, align 16 + %a351 = alloca %S.gen.Val, align 16 + %a355 = alloca { ptr, i64, i64 }, align 16 + %a367 = alloca { ptr, i64, i64 }, align 16 + %a368 = alloca %S.gen.Val, align 16 + %a379 = alloca { ptr, i64, i64 }, align 16 + %a380 = alloca { ptr, i64, i64 }, align 16 + %a383 = alloca { ptr, i64, i64 }, align 16 + %a389 = alloca { ptr, i64, i64 }, align 16 + %a390 = alloca { ptr, i64, i64 }, align 16 + %a393 = alloca { ptr, i64, i64 }, align 16 + %a397 = alloca i64, align 16 + %a400 = alloca i64, align 16 + %a405 = alloca { ptr, i64, i64 }, align 16 + %a406 = 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 - %a424 = alloca { ptr, i64, i64 }, align 16 - %a425 = alloca { ptr, i64, i64 }, align 16 + %a420 = 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 - %a465 = alloca { ptr, i64, i64 }, align 16 - %a466 = 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 + %a436 = alloca { ptr, i64, i64 }, align 16 + %a442 = alloca %S.gen.Val, align 16 + %a459 = alloca %S.ast.Type, align 16 + %a460 = alloca %S.ast.Type, align 16 + %a462 = alloca %S.ast.Type, align 16 + %a463 = alloca { ptr, i64, i64 }, align 16 + %a464 = alloca i1, align 16 + %a467 = alloca { ptr, i64, i64 }, align 16 + %a468 = alloca { ptr, i64, i64 }, align 16 + %a484 = alloca { ptr, i64, i64 }, align 16 + %a485 = alloca { ptr, i64, i64 }, align 16 + %a492 = alloca { ptr, i64, i64 }, align 16 + %a493 = alloca { ptr, i64, i64 }, align 16 + %a495 = 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 + %a510 = alloca { ptr, i64, i64 }, align 16 + %a512 = alloca { ptr, i64, i64 }, align 16 + %a513 = alloca { ptr, i64, i64 }, align 16 + %a514 = alloca { ptr, i64, i64 }, align 16 + %a515 = alloca { ptr, i64, i64 }, align 16 + %a518 = alloca { ptr, i64, i64 }, align 16 + %a521 = alloca { ptr, i64, i64 }, align 16 + %a522 = alloca { ptr, i64, i64 }, align 16 + %a523 = alloca { ptr, i64, i64 }, align 16 + %a525 = alloca { ptr, i64, i64 }, align 16 + %a526 = alloca { ptr, i64, i64 }, align 16 + %a527 = alloca { ptr, i64, i64 }, align 16 + %a528 = alloca { ptr, i64, i64 }, align 16 + %a531 = alloca { ptr, i64, i64 }, align 16 + %a532 = alloca { ptr, i64, i64 }, align 16 + %a540 = alloca %S.ast.Type, align 16 + %a541 = alloca %S.ast.Type, align 16 + %a544 = alloca %S.ast.Type, 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 + %a559 = alloca { ptr, i64, i64 }, align 16 + %a560 = 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 %a579 = alloca { ptr, i64, i64 }, align 16 - %a586 = 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 - %a614 = alloca { ptr, i64, i64 }, align 16 - %a615 = alloca { ptr, i64, i64 }, align 16 - %a616 = 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 - %a624 = alloca { ptr, i64, i64 }, align 16 - %a625 = alloca { ptr, i64, i64 }, align 16 - %a626 = 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 - %a634 = alloca { ptr, i64, i64 }, align 16 - %a635 = alloca { ptr, i64, i64 }, align 16 - %a636 = 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 - %a652 = alloca { ptr, i64, i64 }, align 16 - %a653 = alloca { ptr, i64, i64 }, align 16 - %a654 = 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 - %a662 = alloca { ptr, i64, i64 }, align 16 - %a663 = alloca { ptr, i64, i64 }, align 16 - %a664 = 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 - %a672 = alloca { ptr, i64, i64 }, align 16 - %a673 = 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 - %a678 = alloca { ptr, i64, i64 }, align 16 - %a681 = 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 + %a582 = alloca { ptr, i64, i64 }, align 16 + %a583 = alloca { ptr, i64, i64 }, align 16 + %a588 = alloca { ptr, i64, i64 }, align 16 + %a589 = alloca { ptr, i64, i64 }, align 16 + %a601 = alloca i64, align 16 + %a606 = alloca { ptr, i64, i64 }, align 16 + %a607 = alloca { ptr, i64, i64 }, align 16 + %a617 = alloca i64, align 16 + %a648 = alloca i64, align 16 + %a669 = alloca { ptr, i64, i64 }, align 16 + %a673 = alloca i64, align 16 + %a681 = alloca %S.gen.FnSig, 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 + %a687 = alloca { ptr, i64, i64 }, align 16 + %a694 = alloca { ptr, i64, i64 }, align 16 + %a695 = alloca { ptr, i64, i64 }, align 16 + %a702 = alloca { ptr, i64, i64 }, align 16 + %a703 = 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 + %a722 = alloca { ptr, i64, i64 }, align 16 + %a723 = 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 + %a729 = alloca { ptr, i64, i64 }, align 16 %a730 = alloca { ptr, i64, i64 }, align 16 %a731 = alloca { ptr, i64, i64 }, align 16 %a732 = alloca { ptr, i64, i64 }, align 16 - %a734 = alloca { ptr, i64, i64 }, align 16 + %a733 = 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 + %a737 = alloca { ptr, i64, i64 }, align 16 + %a738 = alloca { ptr, i64, i64 }, align 16 + %a742 = alloca { ptr, i64, i64 }, align 16 + %a743 = alloca { ptr, i64, i64 }, align 16 + %a744 = alloca { ptr, i64, i64 }, align 16 + %a745 = alloca { ptr, i64, i64 }, align 16 + %a747 = 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 + %a754 = alloca { ptr, i64, i64 }, align 16 + %a755 = alloca { ptr, i64, i64 }, align 16 + %a756 = alloca { ptr, i64, i64 }, align 16 + %a757 = alloca { ptr, i64, i64 }, align 16 %a759 = alloca { ptr, i64, i64 }, align 16 %a760 = 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 + %a769 = 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 %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 + %a774 = alloca { ptr, i64, i64 }, align 16 + %a775 = alloca { ptr, i64, i64 }, align 16 + %a776 = 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 + %a783 = alloca { ptr, i64, i64 }, align 16 + %a784 = 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 %a789 = alloca { ptr, i64, i64 }, align 16 - %a790 = alloca { ptr, i64, i64 }, align 16 - %a791 = 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 + %a796 = alloca { ptr, i64, i64 }, align 16 + %a798 = 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 + %a807 = 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 + %a811 = 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 + %a818 = alloca { ptr, i64, i64 }, align 16 + %a832 = alloca { ptr, i64, i64 }, align 16 + %a833 = alloca { ptr, i64, i64 }, align 16 + %a838 = alloca { ptr, i64, i64 }, align 16 + %a839 = alloca { ptr, i64, i64 }, align 16 + %a851 = alloca { ptr, i64, i64 }, align 16 + %a852 = alloca { ptr, i64, i64 }, align 16 + %a853 = alloca { ptr, i64, i64 }, align 16 + %a857 = alloca { ptr, i64, i64 }, align 16 + %a858 = alloca { ptr, i64, i64 }, align 16 + %a859 = alloca { ptr, i64, i64 }, align 16 + %a860 = alloca { ptr, i64, i64 }, align 16 + %a861 = alloca { ptr, i64, i64 }, align 16 + %a863 = 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 + %a868 = alloca { ptr, i64, i64 }, align 16 + %a871 = alloca { ptr, i64, i64 }, align 16 + %a878 = alloca i64, align 16 + %a885 = alloca %S.gen.Var, align 16 + %a890 = alloca { ptr, i64, i64 }, align 16 + %a891 = alloca { ptr, i64, i64 }, align 16 + %a892 = 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 + %a899 = 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 + %a916 = 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 + %a929 = alloca { ptr, i64, i64 }, align 16 + %a930 = alloca { ptr, i64, i64 }, align 16 + %a931 = alloca %S.gen.Val, align 16 + %a951 = alloca { ptr, i64, i64 }, align 16 + %a952 = alloca { ptr, i64, i64 }, align 16 + %a953 = alloca { ptr, i64, i64 }, align 16 + %a954 = alloca { ptr, i64, i64 }, align 16 + %a956 = 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 %range7829, label %inrange7830 -range7829: - call void @finch_panic_index(ptr @.str.5194, i64 4647, i64 0, i64 %t5) + br i1 %t6, label %range8233, label %inrange8234 +range8233: + call void @finch_panic_index(ptr @.str.5380, i64 5001, i64 0, i64 %t5) unreachable -inrange7830: +inrange8234: %t7 = extractvalue { ptr, i64, i64 } %t4, 0 %t8 = getelementptr inbounds %S.ast.Node, ptr %t7, i64 0 %t9 = load %S.ast.Node, ptr %t8 @@ -70826,25 +84242,25 @@ inrange7830: %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.5195, i64 3, i64 0 }, ptr %a17 + store { ptr, i64, i64 } { ptr @.str.5381, 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.from7831 -logic.from7831: - br i1 %t19, label %logic.rhs7832, label %logic.end7833 -logic.rhs7832: + br label %logic.from8235 +logic.from8235: + br i1 %t19, label %logic.rhs8236, label %logic.end8237 +logic.rhs8236: %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.rend7834 -logic.rend7834: - br label %logic.end7833 -logic.end7833: - %t25 = phi i1 [ false, %logic.from7831 ], [ %t24, %logic.rend7834 ] - br i1 %t25, label %then7835, label %endif7837 -then7835: + br label %logic.rend8238 +logic.rend8238: + br label %logic.end8237 +logic.end8237: + %t25 = phi i1 [ false, %logic.from8235 ], [ %t24, %logic.rend8238 ] + br i1 %t25, label %then8239, label %endif8241 +then8239: %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 @@ -70855,1114 +84271,1475 @@ then7835: %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 %then7838, label %endif7840 -then7838: + br i1 %t35, label %then8242, label %endif8244 +then8242: %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.5196, i64 38, i64 0 }, ptr %a40 + store { ptr, i64, i64 } { ptr @.str.5382, 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.5197, i64 32, i64 0 }, ptr %a45 + store { ptr, i64, i64 } { ptr @.str.5383, 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 - store { ptr, i64, i64 } %t46, ptr %a49 + store { ptr, i64, i64 } %t42, ptr %a46 + call void @finch_str_drop(ptr %a46) + %t47 = load { ptr, i64, i64 }, ptr %a43 + %t48 = load { ptr, i64, i64 }, ptr %a31 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.5198, 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 %endif7840 -endif7840: - %t56 = load ptr, ptr %a1 - %t57 = load { ptr, i64, i64 }, ptr %a31 - %t58 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t59 = load { ptr, i64, i64 }, ptr %t58 - %t60 = call i64 @finch.gen.findFn(ptr %t56, { ptr, i64, i64 } %t57, { ptr, i64, i64 } %t59) - store i64 %t60, ptr %a61 - %t62 = load i64, ptr %a61 - %t63 = icmp sge i64 %t62, 0 - br i1 %t63, label %then7841, label %endif7843 -then7841: - %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.5199, 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 - %t73 = load { ptr, i64, i64 }, ptr %t72 - store { ptr, i64, i64 } %t71, 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 - %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.5200, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.5201, i64 0, i64 0 }) - ret %S.gen.Val %t78 -endif7843: - %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.5202, 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 %then7844, label %endif7846 -then7844: - %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.5203, 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 - %t96 = load { ptr, i64, i64 }, ptr %t95 - store { ptr, i64, i64 } %t94, ptr %a98 - store { ptr, i64, i64 } %t96, ptr %a99 + store { ptr, i64, i64 } %t48, ptr %a51 + call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) + store { ptr, i64, i64 } %t47, ptr %a52 + call void @finch_str_drop(ptr %a52) + %t53 = load { ptr, i64, i64 }, ptr %a49 + store { ptr, i64, i64 } %t53, ptr %a55 + store { ptr, i64, i64 } { ptr @.str.5384, i64 13, i64 0 }, ptr %a56 + call void @finch_str_concat(ptr %a54, ptr %a55, ptr %a56) + store { ptr, i64, i64 } %t53, ptr %a57 + call void @finch_str_drop(ptr %a57) + %t58 = load { ptr, i64, i64 }, ptr %a54 + call void @finch.gen.fail(ptr %t36, %S.ast.Node %t37, { ptr, i64, i64 } %t58) + store { ptr, i64, i64 } %t58, ptr %a59 + call void @finch_str_drop(ptr %a59) + br label %endif8244 +endif8244: + %t60 = load ptr, ptr %a1 + %t61 = load { ptr, i64, i64 }, ptr %a31 + %t62 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t63 = load { ptr, i64, i64 }, ptr %t62 + %t64 = call i64 @finch.gen.findFn(ptr %t60, { ptr, i64, i64 } %t61, { ptr, i64, i64 } %t63) + store i64 %t64, ptr %a65 + %t66 = load i64, ptr %a65 + %t67 = icmp sge i64 %t66, 0 + br i1 %t67, label %then8245, label %endif8247 +then8245: + %t68 = load ptr, ptr %a1 + %t69 = load i64, ptr %a65 + %t70 = load %S.ast.Node, ptr %a2 + %t71 = load { ptr, i64, i64 }, ptr %a31 + store { ptr, i64, i64 } %t71, ptr %a73 + store { ptr, i64, i64 } { ptr @.str.5385, i64 1, i64 0 }, ptr %a74 + call void @finch_str_concat(ptr %a72, ptr %a73, ptr %a74) + %t75 = load { ptr, i64, i64 }, ptr %a72 + %t76 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t77 = load { ptr, i64, i64 }, ptr %t76 + store { ptr, i64, i64 } %t75, ptr %a79 + store { ptr, i64, i64 } %t77, ptr %a80 + call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) + store { ptr, i64, i64 } %t75, ptr %a81 + call void @finch_str_drop(ptr %a81) + %t82 = load { ptr, i64, i64 }, ptr %a78 + %t83 = call %S.gen.Val @finch.gen.callFn(ptr %t68, i64 %t69, %S.ast.Node %t70, i64 1, { ptr, i64, i64 } %t82, { ptr, i64, i64 } { ptr @.str.5386, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.5387, i64 0, i64 0 }) + store { ptr, i64, i64 } %t82, ptr %a84 + call void @finch_str_drop(ptr %a84) + call void @finch_str_drop(ptr %a31) + call void @finch.drop.S_ast_Node(ptr %a13) + ret %S.gen.Val %t83 +endif8247: + %t85 = load ptr, ptr %a1 + %t86 = load { ptr, i64, i64 }, ptr %a31 + %t87 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t88 = load { ptr, i64, i64 }, ptr %t87 + %t89 = call i64 @finch.gen.findTemplate(ptr %t85, { ptr, i64, i64 } %t86, { ptr, i64, i64 } %t88, { ptr, i64, i64 } { ptr @.str.5388, i64 0, i64 0 }, i1 false) + store i64 %t89, ptr %a90 + %t91 = load i64, ptr %a90 + %t92 = icmp sge i64 %t91, 0 + br i1 %t92, label %then8248, label %endif8250 +then8248: + %t93 = load ptr, ptr %a1 + %t94 = load %S.ast.Node, ptr %a2 + %t95 = load i64, ptr %a90 + %t96 = load { ptr, i64, i64 }, ptr %a31 + store { ptr, i64, i64 } %t96, ptr %a98 + store { ptr, i64, i64 } { ptr @.str.5389, i64 1, i64 0 }, ptr %a99 call void @finch_str_concat(ptr %a97, ptr %a98, ptr %a99) %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 -endif7846: - %t102 = load ptr, ptr %a1 - %t103 = load { ptr, i64, i64 }, ptr %a31 - %t104 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t105 = load { ptr, i64, i64 }, ptr %t104 - %t106 = call i64 @finch.gen.findEnum(ptr %t102, { ptr, i64, i64 } %t103, { ptr, i64, i64 } %t105) - store i64 %t106, ptr %a107 - %t108 = load i64, ptr %a107 - %t109 = icmp sge i64 %t108, 0 - br i1 %t109, label %then7847, label %endif7849 -then7847: + %t101 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %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) + store { ptr, i64, i64 } %t100, ptr %a106 + call void @finch_str_drop(ptr %a106) + %t107 = load { ptr, i64, i64 }, ptr %a103 + %t108 = call %S.gen.Val @finch.gen.genericCall(ptr %t93, %S.ast.Node %t94, i64 %t95, i64 1, { ptr, i64, i64 } %t107) + store { ptr, i64, i64 } %t107, ptr %a109 + call void @finch_str_drop(ptr %a109) + call void @finch_str_drop(ptr %a31) + call void @finch.drop.S_ast_Node(ptr %a13) + ret %S.gen.Val %t108 +endif8250: %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 -endif7849: - %t114 = load ptr, ptr %a1 - %t115 = load { ptr, i64, i64 }, ptr %a31 - %t116 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t117 = load { ptr, i64, i64 }, ptr %t116 - %t118 = call i64 @finch.gen.findStruct(ptr %t114, { ptr, i64, i64 } %t115, { ptr, i64, i64 } %t117) - store i64 %t118, ptr %a119 - %t120 = load i64, ptr %a119 - %t121 = icmp sge i64 %t120, 0 - br i1 %t121, label %then7850, label %endif7852 -then7850: - 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.cond7853 -for.cond7853: - %t127 = load i64, ptr %a126 - %t128 = icmp slt i64 %t127, %t125 - br i1 %t128, label %for.body7854, label %for.end7856 -for.body7854: - %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 %range7857, label %inrange7858 -range7857: - call void @finch_panic_index(ptr @.str.5204, i64 4669, i64 %t131, i64 %t133) + %t111 = load { ptr, i64, i64 }, ptr %a31 + %t112 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t113 = load { ptr, i64, i64 }, ptr %t112 + %t114 = call i64 @finch.gen.findEnum(ptr %t110, { ptr, i64, i64 } %t111, { ptr, i64, i64 } %t113) + store i64 %t114, ptr %a115 + %t116 = load i64, ptr %a115 + %t117 = icmp sge i64 %t116, 0 + br i1 %t117, label %then8251, label %endif8253 +then8251: + %t118 = load ptr, ptr %a1 + %t119 = load %S.ast.Node, ptr %a2 + %t120 = load i64, ptr %a115 + %t121 = call %S.gen.Val @finch.gen.enumFrom(ptr %t118, %S.ast.Node %t119, i64 %t120) + call void @finch_str_drop(ptr %a31) + call void @finch.drop.S_ast_Node(ptr %a13) + ret %S.gen.Val %t121 +endif8253: + %t122 = load ptr, ptr %a1 + %t123 = load { ptr, i64, i64 }, ptr %a31 + %t124 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t125 = load { ptr, i64, i64 }, ptr %t124 + %t126 = call i64 @finch.gen.findStruct(ptr %t122, { ptr, i64, i64 } %t123, { ptr, i64, i64 } %t125) + store i64 %t126, ptr %a127 + %t128 = load i64, ptr %a127 + %t129 = icmp sge i64 %t128, 0 + br i1 %t129, label %then8254, label %endif8256 +then8254: + store { ptr, i64, i64 } zeroinitializer, ptr %a130 + %t131 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t132 = getelementptr inbounds { ptr, i64, i64 }, ptr %t131, i32 0, i32 1 + %t133 = load i64, ptr %t132 + store i64 1, ptr %a134 + br label %for.cond8257 +for.cond8257: + %t135 = load i64, ptr %a134 + %t136 = icmp slt i64 %t135, %t133 + br i1 %t136, label %for.body8258, label %for.end8260 +for.body8258: + %t137 = getelementptr inbounds { ptr, i64, i64 }, ptr %a130, i32 0, i32 1 + %t138 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t139 = load i64, ptr %a134 + %t140 = load { ptr, i64, i64 }, ptr %t138 + %t141 = extractvalue { ptr, i64, i64 } %t140, 1 + %t142 = icmp uge i64 %t139, %t141 + br i1 %t142, label %range8261, label %inrange8262 +range8261: + call void @finch_panic_index(ptr @.str.5390, i64 5023, i64 %t139, i64 %t141) unreachable -inrange7858: - %t135 = extractvalue { ptr, i64, i64 } %t132, 0 - %t136 = getelementptr inbounds %S.ast.Node, ptr %t135, i64 %t131 - %t137 = load %S.ast.Node, ptr %t136 - store %S.ast.Node %t137, ptr %a138 - call void @finch.copy.S_ast_Node(ptr %a139, ptr %a138) - %t140 = load %S.ast.Node, ptr %a139 - %t141 = load i64, ptr %t129 - %t142 = add i64 %t141, 1 - call void @finch_arr_reserve(ptr %a122, i64 %t142, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t143 = load ptr, ptr %a122 - %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.step7855 -for.step7855: - %t145 = load i64, ptr %a126 - %t146 = add i64 %t145, 1 - store i64 %t146, ptr %a126 - br label %for.cond7853 -for.end7856: - %t147 = load ptr, ptr %a1 - %t148 = load i64, ptr %a119 - %t149 = load { ptr, i64, i64 }, ptr %a122 - %t150 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 10 - %t151 = load { ptr, i64, i64 }, ptr %t150 - %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 -endif7852: - %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.5205, 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.5206, 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 - %t166 = load { ptr, i64, i64 }, ptr %t165 - store { ptr, i64, i64 } %t164, 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.5207, 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 %endif7837 -endif7837: - %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.5208, i64 4, i64 0 }, ptr %t177 - %t178 = getelementptr inbounds { ptr, i64, i64 }, ptr %t176, i64 1 - store { ptr, i64, i64 } { ptr @.str.5209, i64 3, i64 0 }, ptr %t178 - %t179 = getelementptr inbounds { ptr, i64, i64 }, ptr %t176, i64 2 - store { ptr, i64, i64 } { ptr @.str.5210, i64 6, i64 0 }, ptr %t179 - %t180 = getelementptr inbounds { ptr, i64, i64 }, ptr %t176, i64 3 - store { ptr, i64, i64 } { ptr @.str.5211, i64 6, i64 0 }, ptr %t180 - %t181 = getelementptr inbounds { ptr, i64, i64 }, ptr %t176, i64 4 - store { ptr, i64, i64 } { ptr @.str.5212, i64 5, i64 0 }, ptr %t181 - %t182 = getelementptr inbounds { ptr, i64, i64 }, ptr %t176, i64 5 - store { ptr, i64, i64 } { ptr @.str.5213, i64 6, i64 0 }, ptr %t182 - %t183 = getelementptr inbounds { ptr, i64, i64 }, ptr %t176, i64 6 - store { ptr, i64, i64 } { ptr @.str.5214, i64 4, i64 0 }, ptr %t183 - %t184 = getelementptr inbounds { ptr, i64, i64 }, ptr %t176, i64 7 - store { ptr, i64, i64 } { ptr @.str.5215, 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 - store { ptr, i64, i64 } %t187, ptr %a188 - %t189 = load ptr, ptr %a1 - %t190 = load %S.ast.Node, ptr %a13 - %t191 = getelementptr inbounds { ptr, i64, i64 }, ptr %a188, i32 0, i32 1 - %t192 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t193 = load { ptr, i64, i64 }, ptr %t192 - store i64 -1, ptr %a194 - %t195 = load i64, ptr %t191 - %t196 = load ptr, ptr %a188 - store i64 0, ptr %a197 - br label %find.cond7859 -find.cond7859: - %t198 = load i64, ptr %a197 - %t199 = icmp slt i64 %t198, %t195 - br i1 %t199, label %find.body7860, label %find.end7863 -find.body7860: - %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.hit7861, label %find.next7862 -find.hit7861: - store i64 %t198, ptr %a194 - br label %find.end7863 -find.next7862: - %t206 = add i64 %t198, 1 - store i64 %t206, ptr %a197 - br label %find.cond7859 -find.end7863: - %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) - store %S.gen.Ref %t209, ptr %a210 - %t211 = getelementptr inbounds %S.gen.Ref, ptr %a210, i32 0, i32 2 - %t212 = getelementptr inbounds %S.gen.Val, ptr %t211, i32 0, i32 1 - %t213 = load %S.ast.Type, ptr %t212 - store %S.ast.Type %t213, ptr %a214 - call void @finch.copy.S_ast_Type(ptr %a215, ptr %a214) - %t216 = load %S.ast.Type, ptr %a215 - 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 %then7864, label %endif7866 -then7864: - %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 - store %S.ast.Type %t222, ptr %a223 - 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 %endif7866 -endif7866: - %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.5216, 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 %then7867, label %endif7869 -then7867: - store { ptr, i64, i64 } { ptr @.str.5217, 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 %then7870, label %else7871 -then7870: - %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 - store { ptr, i64, i64 } %t237, ptr %a238 - 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 %endif7872 -else7871: - %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 - store i64 -1, ptr %a244 - %t245 = load i64, ptr %t241 - %t246 = load ptr, ptr %a188 - store i64 0, ptr %a247 - br label %find.cond7873 -find.cond7873: - %t248 = load i64, ptr %a247 - %t249 = icmp slt i64 %t248, %t245 - br i1 %t249, label %find.body7874, label %find.end7877 -find.body7874: - %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.hit7875, label %find.next7876 -find.hit7875: - store i64 %t248, ptr %a244 - br label %find.end7877 -find.next7876: - %t256 = add i64 %t248, 1 - store i64 %t256, ptr %a247 - br label %find.cond7873 -find.end7877: - %t257 = load i64, ptr %a244 - %t258 = icmp sge i64 %t257, 0 - br i1 %t258, label %then7878, label %endif7880 -then7878: - %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.5218, 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 %endif7880 -endif7880: - %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 %endif7872 -endif7872: - %t271 = load ptr, ptr %a1 - %t272 = load %S.ast.Node, ptr %a2 - %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 -endif7869: - %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.5219, 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 %then7881, label %endif7883 -then7881: - %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 - 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 %then7884, label %endif7886 -then7884: - %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.5220, 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 %endif7886 -endif7886: - %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 -endif7883: - %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.5221, 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 %then7887, label %endif7889 -then7887: - store { ptr, i64, i64 } { ptr @.str.5222, 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 %then7890, label %else7891 -then7890: - %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 { 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 %endif7892 -else7891: - %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.cond7893 -find.cond7893: - %t335 = load i64, ptr %a334 - %t336 = icmp slt i64 %t335, %t332 - br i1 %t336, label %find.body7894, label %find.end7897 -find.body7894: - %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.hit7895, label %find.next7896 -find.hit7895: - store i64 %t335, ptr %a331 - br label %find.end7897 -find.next7896: - %t343 = add i64 %t335, 1 - store i64 %t343, ptr %a334 - br label %find.cond7893 -find.end7897: - %t344 = load i64, ptr %a331 - %t345 = icmp sge i64 %t344, 0 - br i1 %t345, label %then7898, label %endif7900 -then7898: - %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.5223, 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 %endif7900 -endif7900: - %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 %endif7892 -endif7892: - %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) +inrange8262: + %t143 = extractvalue { ptr, i64, i64 } %t140, 0 + %t144 = getelementptr inbounds %S.ast.Node, ptr %t143, i64 %t139 + %t145 = load %S.ast.Node, ptr %t144 + store %S.ast.Node %t145, ptr %a146 + call void @finch.copy.S_ast_Node(ptr %a147, ptr %a146) + %t148 = load %S.ast.Node, ptr %a147 + %t149 = load i64, ptr %t137 + %t150 = add i64 %t149, 1 + call void @finch_arr_reserve(ptr %a130, i64 %t150, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) + %t151 = load ptr, ptr %a130 + %t152 = getelementptr inbounds %S.ast.Node, ptr %t151, i64 %t149 + store %S.ast.Node %t148, ptr %t152 + store i64 %t150, ptr %t137 + br label %for.step8259 +for.step8259: + %t153 = load i64, ptr %a134 + %t154 = add i64 %t153, 1 + store i64 %t154, ptr %a134 + br label %for.cond8257 +for.end8260: + %t155 = load ptr, ptr %a1 + %t156 = load i64, ptr %a127 + %t157 = load { ptr, i64, i64 }, ptr %a130 + %t158 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 10 + %t159 = load { ptr, i64, i64 }, ptr %t158 + %t160 = load %S.ast.Node, ptr %a2 + %t161 = call %S.gen.Val @finch.gen.construct(ptr %t155, i64 %t156, { ptr, i64, i64 } %t157, { ptr, i64, i64 } %t159, %S.ast.Node %t160) + call void @finch.drop.arr_S_ast_Node(ptr %a130) + call void @finch_str_drop(ptr %a31) + call void @finch.drop.S_ast_Node(ptr %a13) + ret %S.gen.Val %t161 +endif8256: + %t162 = load ptr, ptr %a1 + %t163 = load %S.ast.Node, ptr %a2 + %t164 = load { ptr, i64, i64 }, ptr %a31 + store { ptr, i64, i64 } { ptr @.str.5391, 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.5392, i64 35, i64 0 }, ptr %a171 + call void @finch_str_concat(ptr %a169, ptr %a170, ptr %a171) + store { ptr, i64, i64 } %t168, ptr %a172 + call void @finch_str_drop(ptr %a172) + %t173 = load { ptr, i64, i64 }, ptr %a169 + %t174 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %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) + store { ptr, i64, i64 } %t173, ptr %a179 + call void @finch_str_drop(ptr %a179) + %t180 = load { ptr, i64, i64 }, ptr %a176 + store { ptr, i64, i64 } %t180, ptr %a182 + store { ptr, i64, i64 } { ptr @.str.5393, i64 1, i64 0 }, ptr %a183 + call void @finch_str_concat(ptr %a181, ptr %a182, ptr %a183) + store { ptr, i64, i64 } %t180, ptr %a184 + call void @finch_str_drop(ptr %a184) + %t185 = load { ptr, i64, i64 }, ptr %a181 + call void @finch.gen.fail(ptr %t162, %S.ast.Node %t163, { ptr, i64, i64 } %t185) + store { ptr, i64, i64 } %t185, ptr %a186 + call void @finch_str_drop(ptr %a186) + call void @finch_str_drop(ptr %a31) + br label %endif8241 +endif8241: + %t187 = mul i64 8, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) + %t188 = call ptr @finch_alloc(i64 %t187) + %t189 = getelementptr inbounds { ptr, i64, i64 }, ptr %t188, i64 0 + store { ptr, i64, i64 } { ptr @.str.5394, i64 4, i64 0 }, ptr %t189 + %t190 = getelementptr inbounds { ptr, i64, i64 }, ptr %t188, i64 1 + store { ptr, i64, i64 } { ptr @.str.5395, i64 3, i64 0 }, ptr %t190 + %t191 = getelementptr inbounds { ptr, i64, i64 }, ptr %t188, i64 2 + store { ptr, i64, i64 } { ptr @.str.5396, i64 6, i64 0 }, ptr %t191 + %t192 = getelementptr inbounds { ptr, i64, i64 }, ptr %t188, i64 3 + store { ptr, i64, i64 } { ptr @.str.5397, i64 6, i64 0 }, ptr %t192 + %t193 = getelementptr inbounds { ptr, i64, i64 }, ptr %t188, i64 4 + store { ptr, i64, i64 } { ptr @.str.5398, i64 5, i64 0 }, ptr %t193 + %t194 = getelementptr inbounds { ptr, i64, i64 }, ptr %t188, i64 5 + store { ptr, i64, i64 } { ptr @.str.5399, i64 6, i64 0 }, ptr %t194 + %t195 = getelementptr inbounds { ptr, i64, i64 }, ptr %t188, i64 6 + store { ptr, i64, i64 } { ptr @.str.5400, i64 4, i64 0 }, ptr %t195 + %t196 = getelementptr inbounds { ptr, i64, i64 }, ptr %t188, i64 7 + store { ptr, i64, i64 } { ptr @.str.5401, i64 7, i64 0 }, ptr %t196 + %t197 = insertvalue { ptr, i64, i64 } undef, ptr %t188, 0 + %t198 = insertvalue { ptr, i64, i64 } %t197, i64 8, 1 + %t199 = insertvalue { ptr, i64, i64 } %t198, i64 8, 2 + store { ptr, i64, i64 } %t199, ptr %a200 + %t201 = load ptr, ptr %a1 + %t202 = load %S.ast.Node, ptr %a13 + %t203 = getelementptr inbounds { ptr, i64, i64 }, ptr %a200, i32 0, i32 1 + %t204 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t205 = load { ptr, i64, i64 }, ptr %t204 + store i64 -1, ptr %a206 + %t207 = load i64, ptr %t203 + %t208 = load ptr, ptr %a200 + store i64 0, ptr %a209 + br label %find.cond8263 +find.cond8263: + %t210 = load i64, ptr %a209 + %t211 = icmp slt i64 %t210, %t207 + br i1 %t211, label %find.body8264, label %find.end8267 +find.body8264: + %t212 = getelementptr inbounds { ptr, i64, i64 }, ptr %t208, i64 %t210 + %t213 = load { ptr, i64, i64 }, ptr %t212 + store { ptr, i64, i64 } %t213, ptr %a214 + store { ptr, i64, i64 } %t205, ptr %a215 + %t216 = call i32 @finch_str_eq(ptr %a214, ptr %a215) + %t217 = icmp ne i32 %t216, 0 + br i1 %t217, label %find.hit8265, label %find.next8266 +find.hit8265: + store i64 %t210, ptr %a206 + br label %find.end8267 +find.next8266: + %t218 = add i64 %t210, 1 + store i64 %t218, ptr %a209 + br label %find.cond8263 +find.end8267: + %t219 = load i64, ptr %a206 + %t220 = icmp sge i64 %t219, 0 + %t221 = call %S.gen.Ref @finch.gen.ref(ptr %t201, %S.ast.Node %t202, i1 %t220) + store %S.gen.Ref %t221, ptr %a222 + %t223 = load ptr, ptr %a1 + %t224 = icmp eq ptr %t223, null + br i1 %t224, label %panic8268, label %ok8269 +panic8268: + call void @finch_panic(ptr @.str.5402, i64 5031, ptr @.str.5403) + unreachable +ok8269: + %t225 = getelementptr inbounds %S.gen.Gen, ptr %t223, i32 0, i32 11 + %t226 = getelementptr inbounds { ptr, i64, i64 }, ptr %t225, i32 0, i32 1 + %t227 = load i64, ptr %t226 + store i64 %t227, ptr %a228 + %t229 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 2 + %t230 = getelementptr inbounds %S.gen.Val, ptr %t229, i32 0, i32 1 + %t231 = load %S.ast.Type, ptr %t230 + store %S.ast.Type %t231, ptr %a232 + call void @finch.copy.S_ast_Type(ptr %a233, ptr %a232) + %t234 = load %S.ast.Type, ptr %a233 + store %S.ast.Type %t234, ptr %a235 + %t236 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 0 + %t237 = load i1, ptr %t236 + br i1 %t237, label %then8270, label %endif8272 +then8270: + %t238 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 1 + %t239 = getelementptr inbounds %S.gen.Place, ptr %t238, i32 0, i32 1 + %t240 = load %S.ast.Type, ptr %t239 + store %S.ast.Type %t240, ptr %a241 + call void @finch.copy.S_ast_Type(ptr %a242, ptr %a241) + %t243 = load %S.ast.Type, ptr %a242 + %t244 = load %S.ast.Type, ptr %a235 + store %S.ast.Type %t243, ptr %a235 + store %S.ast.Type %t244, ptr %a245 + call void @finch.drop.S_ast_Type(ptr %a245) + br label %endif8272 +endif8272: + %t246 = getelementptr inbounds %S.ast.Type, ptr %a235, i32 0, i32 0 + %t247 = load { ptr, i64, i64 }, ptr %t246 + store { ptr, i64, i64 } %t247, ptr %a248 + store { ptr, i64, i64 } { ptr @.str.5404, i64 5, i64 0 }, ptr %a249 + %t250 = call i32 @finch_str_eq(ptr %a248, ptr %a249) + %t251 = icmp ne i32 %t250, 0 + br i1 %t251, label %then8273, label %endif8275 +then8273: + store { ptr, i64, i64 } { ptr @.str.5405, i64 0, i64 0 }, ptr %a252 + %t253 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 0 + %t254 = load i1, ptr %t253 + br i1 %t254, label %then8276, label %else8277 +then8276: + %t255 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 1 + %t256 = getelementptr inbounds %S.gen.Place, ptr %t255, i32 0, i32 0 + %t257 = load { ptr, i64, i64 }, ptr %t256 + store { ptr, i64, i64 } %t257, ptr %a258 + call void @finch_str_copy(ptr %a259, ptr %a258) + %t260 = load { ptr, i64, i64 }, ptr %a259 + %t261 = load { ptr, i64, i64 }, ptr %a252 + store { ptr, i64, i64 } %t260, ptr %a252 + store { ptr, i64, i64 } %t261, ptr %a262 + call void @finch_str_drop(ptr %a262) + br label %endif8278 +else8277: + %t263 = getelementptr inbounds { ptr, i64, i64 }, ptr %a200, i32 0, i32 1 + %t264 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t265 = load { ptr, i64, i64 }, ptr %t264 + store i64 -1, ptr %a266 + %t267 = load i64, ptr %t263 + %t268 = load ptr, ptr %a200 + store i64 0, ptr %a269 + br label %find.cond8279 +find.cond8279: + %t270 = load i64, ptr %a269 + %t271 = icmp slt i64 %t270, %t267 + br i1 %t271, label %find.body8280, label %find.end8283 +find.body8280: + %t272 = getelementptr inbounds { ptr, i64, i64 }, ptr %t268, i64 %t270 + %t273 = load { ptr, i64, i64 }, ptr %t272 + store { ptr, i64, i64 } %t273, ptr %a274 + store { ptr, i64, i64 } %t265, ptr %a275 + %t276 = call i32 @finch_str_eq(ptr %a274, ptr %a275) + %t277 = icmp ne i32 %t276, 0 + br i1 %t277, label %find.hit8281, label %find.next8282 +find.hit8281: + store i64 %t270, ptr %a266 + br label %find.end8283 +find.next8282: + %t278 = add i64 %t270, 1 + store i64 %t278, ptr %a269 + br label %find.cond8279 +find.end8283: + %t279 = load i64, ptr %a266 + %t280 = icmp sge i64 %t279, 0 + br i1 %t280, label %then8284, label %endif8286 +then8284: + %t281 = load ptr, ptr %a1 + %t282 = load %S.ast.Node, ptr %a2 + %t283 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t284 = load { ptr, i64, i64 }, ptr %t283 + store { ptr, i64, i64 } %t284, ptr %a286 + store { ptr, i64, i64 } { ptr @.str.5406, i64 63, i64 0 }, ptr %a287 + call void @finch_str_concat(ptr %a285, ptr %a286, ptr %a287) + %t288 = load { ptr, i64, i64 }, ptr %a285 + call void @finch.gen.fail(ptr %t281, %S.ast.Node %t282, { ptr, i64, i64 } %t288) + store { ptr, i64, i64 } %t288, ptr %a289 + call void @finch_str_drop(ptr %a289) + br label %endif8286 +endif8286: + %t290 = load ptr, ptr %a1 + %t291 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 2 + %t292 = load %S.gen.Val, ptr %t291 + %t293 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t290, %S.gen.Val %t292) + %t294 = load { ptr, i64, i64 }, ptr %a252 + store { ptr, i64, i64 } %t293, ptr %a252 + store { ptr, i64, i64 } %t294, ptr %a295 + call void @finch_str_drop(ptr %a295) + %t296 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 2 + %t297 = getelementptr inbounds %S.gen.Val, ptr %t296, i32 0, i32 2 + %t298 = load i1, ptr %t297 + br i1 %t298, label %then8287, label %endif8289 +then8287: + %t299 = load ptr, ptr %a1 + %t300 = load { ptr, i64, i64 }, ptr %a252 + %t301 = load %S.ast.Type, ptr %a235 + call void @finch.gen.holdAddr(ptr %t299, { ptr, i64, i64 } %t300, %S.ast.Type %t301) + br label %endif8289 +endif8289: + br label %endif8278 +endif8278: + %t302 = load ptr, ptr %a1 + %t303 = load %S.ast.Node, ptr %a2 + %t304 = call { ptr, i64, i64 } @finch.docs.arrayMethods() + call void @finch.gen.noteMethod(ptr %t302, %S.ast.Node %t303, { ptr, i64, i64 } %t304) + store { ptr, i64, i64 } %t304, ptr %a305 + call void @finch.drop.arr_S_docs_Doc(ptr %a305) + %t306 = load ptr, ptr %a1 + %t307 = load %S.ast.Node, ptr %a2 + %t308 = load { ptr, i64, i64 }, ptr %a252 + %t309 = load %S.ast.Type, ptr %a235 + %t310 = call %S.gen.Val @finch.gen.arrayMethod(ptr %t306, %S.ast.Node %t307, { ptr, i64, i64 } %t308, %S.ast.Type %t309) + store %S.gen.Val %t310, ptr %a311 + %t312 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 0 + %t313 = load i1, ptr %t312 + %t314 = xor i1 %t313, true + br label %logic.from8290 +logic.from8290: + br i1 %t314, label %logic.rhs8291, label %logic.end8292 +logic.rhs8291: + %t315 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 2 + %t316 = getelementptr inbounds %S.gen.Val, ptr %t315, i32 0, i32 2 + %t317 = load i1, ptr %t316 + br label %logic.rend8293 +logic.rend8293: + br label %logic.end8292 +logic.end8292: + %t318 = phi i1 [ false, %logic.from8290 ], [ %t317, %logic.rend8293 ] + br i1 %t318, label %then8294, label %endif8296 +then8294: + %t319 = load ptr, ptr %a1 + %t320 = load { ptr, i64, i64 }, ptr %a252 + %t321 = load %S.ast.Type, ptr %a235 + call void @finch.gen.dropAt(ptr %t319, { ptr, i64, i64 } %t320, %S.ast.Type %t321) + br label %endif8296 +endif8296: + %t322 = load ptr, ptr %a1 + %t323 = load i64, ptr %a228 + call void @finch.gen.heldEnd(ptr %t322, i64 %t323) + %t324 = load %S.gen.Val, ptr %a311 + call void @finch_str_drop(ptr %a252) + call void @finch.drop.S_ast_Type(ptr %a235) + call void @finch.drop.S_gen_Ref(ptr %a222) + call void @finch.drop.arr_str(ptr %a200) + call void @finch.drop.S_ast_Node(ptr %a13) + ret %S.gen.Val %t324 +endif8275: + %t325 = getelementptr inbounds %S.ast.Type, ptr %a235, i32 0, i32 0 + %t326 = load { ptr, i64, i64 }, ptr %t325 + store { ptr, i64, i64 } %t326, ptr %a327 + store { ptr, i64, i64 } { ptr @.str.5407, i64 3, i64 0 }, ptr %a328 + %t329 = call i32 @finch_str_eq(ptr %a327, ptr %a328) + %t330 = icmp ne i32 %t329, 0 + br i1 %t330, label %then8297, label %endif8299 +then8297: + %t331 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 2 + %t332 = load %S.gen.Val, ptr %t331 + store %S.gen.Val %t332, ptr %a333 + call void @finch.copy.S_gen_Val(ptr %a334, ptr %a333) + %t335 = load %S.gen.Val, ptr %a334 + store %S.gen.Val %t335, ptr %a336 + %t337 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 0 + %t338 = load i1, ptr %t337 + br i1 %t338, label %then8300, label %endif8302 +then8300: + %t339 = load ptr, ptr %a1 + %t340 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 1 + %t341 = getelementptr inbounds %S.gen.Place, ptr %t340, i32 0, i32 0 + %t342 = load { ptr, i64, i64 }, ptr %t341 + %t343 = call { ptr, i64, i64 } @finch.gen.load(ptr %t339, { ptr, i64, i64 } { ptr @.str.5408, i64 17, i64 0 }, { ptr, i64, i64 } %t342) + %t344 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t343, 0 + %t345 = load %S.ast.Type, ptr %a235 + store %S.ast.Type %t345, ptr %a346 + call void @finch.copy.S_ast_Type(ptr %a347, ptr %a346) + %t348 = load %S.ast.Type, ptr %a347 + %t349 = insertvalue %S.gen.Val %t344, %S.ast.Type %t348, 1 + %t350 = load %S.gen.Val, ptr %a336 + store %S.gen.Val %t349, ptr %a336 + store %S.gen.Val %t350, ptr %a351 + call void @finch.drop.S_gen_Val(ptr %a351) + br label %endif8302 +endif8302: + %t352 = load ptr, ptr %a1 + %t353 = load %S.ast.Node, ptr %a2 + %t354 = call { ptr, i64, i64 } @finch.docs.strMethods() + call void @finch.gen.noteMethod(ptr %t352, %S.ast.Node %t353, { ptr, i64, i64 } %t354) + store { ptr, i64, i64 } %t354, ptr %a355 + call void @finch.drop.arr_S_docs_Doc(ptr %a355) + %t356 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 0 + %t357 = load i1, ptr %t356 + %t358 = xor i1 %t357, true + br i1 %t358, label %then8303, label %endif8305 +then8303: + %t359 = load ptr, ptr %a1 + %t360 = load %S.gen.Val, ptr %a336 + call void @finch.gen.hold(ptr %t359, %S.gen.Val %t360) + br label %endif8305 +endif8305: %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 -endif7889: - %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.5224, 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.5225, 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.from7901 -logic.from7901: - br i1 %t377, label %logic.rhs7902, label %logic.end7903 -logic.rhs7902: - %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.rend7904 -logic.rend7904: - br label %logic.end7903 -logic.end7903: - %t382 = phi i1 [ false, %logic.from7901 ], [ %t381, %logic.rend7904 ] - br label %logic.from7905 -logic.from7905: - br i1 %t382, label %logic.rhs7906, label %logic.end7907 -logic.rhs7906: - %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 %range7908, label %inrange7909 -range7908: - call void @finch_panic_index(ptr @.str.5226, i64 4717, i64 0, i64 %t385) + %t363 = load ptr, ptr %a1 + %t364 = load %S.gen.Val, ptr %a336 + %t365 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t363, %S.gen.Val %t364) + %t366 = call %S.gen.Val @finch.gen.strMethod(ptr %t361, %S.ast.Node %t362, { ptr, i64, i64 } %t365) + store { ptr, i64, i64 } %t365, ptr %a367 + call void @finch_str_drop(ptr %a367) + store %S.gen.Val %t366, ptr %a368 + %t369 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 0 + %t370 = load i1, ptr %t369 + %t371 = xor i1 %t370, true + br i1 %t371, label %then8306, label %endif8308 +then8306: + %t372 = load ptr, ptr %a1 + %t373 = load %S.gen.Val, ptr %a336 + call void @finch.gen.release(ptr %t372, %S.gen.Val %t373) + br label %endif8308 +endif8308: + %t374 = load ptr, ptr %a1 + %t375 = load i64, ptr %a228 + call void @finch.gen.heldEnd(ptr %t374, i64 %t375) + %t376 = load %S.gen.Val, ptr %a368 + call void @finch.drop.S_gen_Val(ptr %a336) + call void @finch.drop.S_ast_Type(ptr %a235) + call void @finch.drop.S_gen_Ref(ptr %a222) + call void @finch.drop.arr_str(ptr %a200) + call void @finch.drop.S_ast_Node(ptr %a13) + ret %S.gen.Val %t376 +endif8299: + %t377 = getelementptr inbounds %S.ast.Type, ptr %a235, i32 0, i32 0 + %t378 = load { ptr, i64, i64 }, ptr %t377 + store { ptr, i64, i64 } %t378, ptr %a379 + store { ptr, i64, i64 } { ptr @.str.5409, i64 3, i64 0 }, ptr %a380 + %t381 = call i32 @finch_str_eq(ptr %a379, ptr %a380) + %t382 = icmp ne i32 %t381, 0 + br i1 %t382, label %then8309, label %endif8311 +then8309: + store { ptr, i64, i64 } { ptr @.str.5410, i64 0, i64 0 }, ptr %a383 + %t384 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 0 + %t385 = load i1, ptr %t384 + br i1 %t385, label %then8312, label %else8313 +then8312: + %t386 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 1 + %t387 = getelementptr inbounds %S.gen.Place, ptr %t386, i32 0, i32 0 + %t388 = load { ptr, i64, i64 }, ptr %t387 + store { ptr, i64, i64 } %t388, ptr %a389 + call void @finch_str_copy(ptr %a390, ptr %a389) + %t391 = load { ptr, i64, i64 }, ptr %a390 + %t392 = load { ptr, i64, i64 }, ptr %a383 + store { ptr, i64, i64 } %t391, ptr %a383 + store { ptr, i64, i64 } %t392, ptr %a393 + call void @finch_str_drop(ptr %a393) + br label %endif8314 +else8313: + %t394 = getelementptr inbounds { ptr, i64, i64 }, ptr %a200, i32 0, i32 1 + %t395 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t396 = load { ptr, i64, i64 }, ptr %t395 + store i64 -1, ptr %a397 + %t398 = load i64, ptr %t394 + %t399 = load ptr, ptr %a200 + store i64 0, ptr %a400 + br label %find.cond8315 +find.cond8315: + %t401 = load i64, ptr %a400 + %t402 = icmp slt i64 %t401, %t398 + br i1 %t402, label %find.body8316, label %find.end8319 +find.body8316: + %t403 = getelementptr inbounds { ptr, i64, i64 }, ptr %t399, i64 %t401 + %t404 = load { ptr, i64, i64 }, ptr %t403 + store { ptr, i64, i64 } %t404, ptr %a405 + store { ptr, i64, i64 } %t396, ptr %a406 + %t407 = call i32 @finch_str_eq(ptr %a405, ptr %a406) + %t408 = icmp ne i32 %t407, 0 + br i1 %t408, label %find.hit8317, label %find.next8318 +find.hit8317: + store i64 %t401, ptr %a397 + br label %find.end8319 +find.next8318: + %t409 = add i64 %t401, 1 + store i64 %t409, ptr %a400 + br label %find.cond8315 +find.end8319: + %t410 = load i64, ptr %a397 + %t411 = icmp sge i64 %t410, 0 + br i1 %t411, label %then8320, label %endif8322 +then8320: + %t412 = load ptr, ptr %a1 + %t413 = load %S.ast.Node, ptr %a2 + %t414 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t415 = load { ptr, i64, i64 }, ptr %t414 + store { ptr, i64, i64 } %t415, ptr %a417 + store { ptr, i64, i64 } { ptr @.str.5411, i64 61, 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.fail(ptr %t412, %S.ast.Node %t413, { ptr, i64, i64 } %t419) + store { ptr, i64, i64 } %t419, ptr %a420 + call void @finch_str_drop(ptr %a420) + br label %endif8322 +endif8322: + %t421 = load ptr, ptr %a1 + %t422 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 2 + %t423 = load %S.gen.Val, ptr %t422 + %t424 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t421, %S.gen.Val %t423) + %t425 = load { ptr, i64, i64 }, ptr %a383 + store { ptr, i64, i64 } %t424, ptr %a383 + store { ptr, i64, i64 } %t425, ptr %a426 + call void @finch_str_drop(ptr %a426) + %t427 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 2 + %t428 = getelementptr inbounds %S.gen.Val, ptr %t427, i32 0, i32 2 + %t429 = load i1, ptr %t428 + br i1 %t429, label %then8323, label %endif8325 +then8323: + %t430 = load ptr, ptr %a1 + %t431 = load { ptr, i64, i64 }, ptr %a383 + %t432 = load %S.ast.Type, ptr %a235 + call void @finch.gen.holdAddr(ptr %t430, { ptr, i64, i64 } %t431, %S.ast.Type %t432) + br label %endif8325 +endif8325: + br label %endif8314 +endif8314: + %t433 = load ptr, ptr %a1 + %t434 = load %S.ast.Node, ptr %a2 + %t435 = call { ptr, i64, i64 } @finch.docs.mapMethods() + call void @finch.gen.noteMethod(ptr %t433, %S.ast.Node %t434, { ptr, i64, i64 } %t435) + store { ptr, i64, i64 } %t435, ptr %a436 + call void @finch.drop.arr_S_docs_Doc(ptr %a436) + %t437 = load ptr, ptr %a1 + %t438 = load %S.ast.Node, ptr %a2 + %t439 = load { ptr, i64, i64 }, ptr %a383 + %t440 = load %S.ast.Type, ptr %a235 + %t441 = call %S.gen.Val @finch.gen.mapMethod(ptr %t437, %S.ast.Node %t438, { ptr, i64, i64 } %t439, %S.ast.Type %t440) + store %S.gen.Val %t441, ptr %a442 + %t443 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 0 + %t444 = load i1, ptr %t443 + %t445 = xor i1 %t444, true + br label %logic.from8326 +logic.from8326: + br i1 %t445, label %logic.rhs8327, label %logic.end8328 +logic.rhs8327: + %t446 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 2 + %t447 = getelementptr inbounds %S.gen.Val, ptr %t446, i32 0, i32 2 + %t448 = load i1, ptr %t447 + br label %logic.rend8329 +logic.rend8329: + br label %logic.end8328 +logic.end8328: + %t449 = phi i1 [ false, %logic.from8326 ], [ %t448, %logic.rend8329 ] + br i1 %t449, label %then8330, label %endif8332 +then8330: + %t450 = load ptr, ptr %a1 + %t451 = load { ptr, i64, i64 }, ptr %a383 + %t452 = load %S.ast.Type, ptr %a235 + call void @finch.gen.dropAt(ptr %t450, { ptr, i64, i64 } %t451, %S.ast.Type %t452) + br label %endif8332 +endif8332: + %t453 = load ptr, ptr %a1 + %t454 = load i64, ptr %a228 + call void @finch.gen.heldEnd(ptr %t453, i64 %t454) + %t455 = load %S.gen.Val, ptr %a442 + call void @finch_str_drop(ptr %a383) + call void @finch.drop.S_ast_Type(ptr %a235) + call void @finch.drop.S_gen_Ref(ptr %a222) + call void @finch.drop.arr_str(ptr %a200) + call void @finch.drop.S_ast_Node(ptr %a13) + ret %S.gen.Val %t455 +endif8311: + %t456 = load ptr, ptr %a1 + %t457 = load i64, ptr %a228 + call void @finch.gen.heldEnd(ptr %t456, i64 %t457) + %t458 = load %S.ast.Type, ptr %a235 + store %S.ast.Type %t458, ptr %a459 + call void @finch.copy.S_ast_Type(ptr %a460, ptr %a459) + %t461 = load %S.ast.Type, ptr %a460 + store %S.ast.Type %t461, ptr %a462 + store { ptr, i64, i64 } { ptr @.str.5412, i64 0, i64 0 }, ptr %a463 + store i1 false, ptr %a464 + %t465 = getelementptr inbounds %S.ast.Type, ptr %a235, i32 0, i32 0 + %t466 = load { ptr, i64, i64 }, ptr %t465 + store { ptr, i64, i64 } %t466, ptr %a467 + store { ptr, i64, i64 } { ptr @.str.5413, i64 3, i64 0 }, ptr %a468 + %t469 = call i32 @finch_str_eq(ptr %a467, ptr %a468) + %t470 = icmp ne i32 %t469, 0 + br label %logic.from8333 +logic.from8333: + br i1 %t470, label %logic.rhs8334, label %logic.end8335 +logic.rhs8334: + %t471 = getelementptr inbounds %S.ast.Type, ptr %a235, i32 0, i32 1 + %t472 = getelementptr inbounds { ptr, i64, i64 }, ptr %t471, i32 0, i32 1 + %t473 = load i64, ptr %t472 + %t474 = icmp sgt i64 %t473, 0 + br label %logic.rend8336 +logic.rend8336: + br label %logic.end8335 +logic.end8335: + %t475 = phi i1 [ false, %logic.from8333 ], [ %t474, %logic.rend8336 ] + br label %logic.from8337 +logic.from8337: + br i1 %t475, label %logic.rhs8338, label %logic.end8339 +logic.rhs8338: + %t476 = getelementptr inbounds %S.ast.Type, ptr %a235, i32 0, i32 1 + %t477 = load { ptr, i64, i64 }, ptr %t476 + %t478 = extractvalue { ptr, i64, i64 } %t477, 1 + %t479 = icmp uge i64 0, %t478 + br i1 %t479, label %range8340, label %inrange8341 +range8340: + call void @finch_panic_index(ptr @.str.5414, i64 5098, i64 0, i64 %t478) unreachable -inrange7909: - %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.5227, 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.rend7910 -logic.rend7910: - br label %logic.end7907 -logic.end7907: - %t395 = phi i1 [ false, %logic.from7905 ], [ %t394, %logic.rend7910 ] - br i1 %t395, label %then7911, label %else7912 -then7911: - %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 %then7914, label %endif7916 -then7914: - %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.5228, i64 3, i64 0 }, { ptr, i64, i64 } %t408) - store { ptr, i64, i64 } %t409, ptr %a402 - br label %endif7916 -endif7916: - %t410 = load ptr, ptr %a1 - %t411 = load ptr, ptr %a1 - %t412 = load { ptr, i64, i64 }, ptr %a402 - store { ptr, i64, i64 } { ptr @.str.5229, 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.5230, 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.5231, 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.5232, 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 %range7917, label %inrange7918 -range7917: - call void @finch_panic_index(ptr @.str.5233, i64 4723, i64 0, i64 %t435) - unreachable -inrange7918: - %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 %endif7913 -else7912: - %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.5234, 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.from7919 -logic.from7919: - br i1 %t452, label %logic.end7921, label %logic.rhs7920 -logic.rhs7920: - %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.5235, 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.rend7922 -logic.rend7922: - br label %logic.end7921 -logic.end7921: - %t459 = phi i1 [ true, %logic.from7919 ], [ %t458, %logic.rend7922 ] - br i1 %t459, label %then7923, label %endif7925 -then7923: - %t460 = getelementptr inbounds %S.gen.Ref, ptr %a210, i32 0, i32 0 - %t461 = load i1, ptr %t460 - br i1 %t461, label %then7926, label %else7927 -then7926: - %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 - 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 %endif7928 -else7927: - %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 %endif7928 -endif7928: - br label %endif7925 -endif7925: - br label %endif7913 -endif7913: - %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.5236, 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.from7929 -logic.from7929: - br i1 %t477, label %logic.end7931, label %logic.rhs7930 -logic.rhs7930: - %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.5237, 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.rend7932 -logic.rend7932: - br label %logic.end7931 -logic.end7931: - %t484 = phi i1 [ true, %logic.from7929 ], [ %t483, %logic.rend7932 ] - br i1 %t484, label %then7933, label %endif7935 -then7933: - %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 +inrange8341: + %t480 = extractvalue { ptr, i64, i64 } %t477, 0 + %t481 = getelementptr inbounds %S.ast.Type, ptr %t480, i64 0 + %t482 = getelementptr inbounds %S.ast.Type, ptr %t481, i32 0, i32 0 + %t483 = load { ptr, i64, i64 }, ptr %t482 + store { ptr, i64, i64 } %t483, ptr %a484 + store { ptr, i64, i64 } { ptr @.str.5415, i64 6, i64 0 }, ptr %a485 + %t486 = call i32 @finch_str_eq(ptr %a484, ptr %a485) + %t487 = icmp ne i32 %t486, 0 + br label %logic.rend8342 +logic.rend8342: + br label %logic.end8339 +logic.end8339: + %t488 = phi i1 [ false, %logic.from8337 ], [ %t487, %logic.rend8342 ] + br i1 %t488, label %then8343, label %else8344 +then8343: + %t489 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 2 + %t490 = getelementptr inbounds %S.gen.Val, ptr %t489, i32 0, i32 0 %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.from7936 -logic.from7936: - br i1 %t495, label %logic.rhs7937, label %logic.end7938 -logic.rhs7937: - %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.5238, 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.rend7939 -logic.rend7939: - br label %logic.end7938 -logic.end7938: - %t502 = phi i1 [ false, %logic.from7936 ], [ %t501, %logic.rend7939 ] - br i1 %t502, label %then7940, label %endif7942 -then7940: - %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 %panic7943, label %ok7944 -panic7943: - call void @finch_panic(ptr @.str.5239, i64 4736, ptr @.str.5240) + store { ptr, i64, i64 } %t491, ptr %a492 + call void @finch_str_copy(ptr %a493, ptr %a492) + %t494 = load { ptr, i64, i64 }, ptr %a493 + store { ptr, i64, i64 } %t494, ptr %a495 + %t496 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 0 + %t497 = load i1, ptr %t496 + br i1 %t497, label %then8346, label %endif8348 +then8346: + %t498 = load ptr, ptr %a1 + %t499 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 1 + %t500 = getelementptr inbounds %S.gen.Place, ptr %t499, i32 0, i32 0 + %t501 = load { ptr, i64, i64 }, ptr %t500 + %t502 = call { ptr, i64, i64 } @finch.gen.load(ptr %t498, { ptr, i64, i64 } { ptr @.str.5416, i64 3, i64 0 }, { ptr, i64, i64 } %t501) + %t503 = load { ptr, i64, i64 }, ptr %a495 + store { ptr, i64, i64 } %t502, ptr %a495 + store { ptr, i64, i64 } %t503, ptr %a504 + call void @finch_str_drop(ptr %a504) + br label %endif8348 +endif8348: + %t505 = load ptr, ptr %a1 + %t506 = load ptr, ptr %a1 + %t507 = load { ptr, i64, i64 }, ptr %a495 + store { ptr, i64, i64 } { ptr @.str.5417, i64 12, i64 0 }, ptr %a509 + store { ptr, i64, i64 } %t507, ptr %a510 + call void @finch_str_concat(ptr %a508, ptr %a509, ptr %a510) + %t511 = load { ptr, i64, i64 }, ptr %a508 + store { ptr, i64, i64 } %t511, ptr %a513 + store { ptr, i64, i64 } { ptr @.str.5418, i64 6, i64 0 }, ptr %a514 + call void @finch_str_concat(ptr %a512, ptr %a513, ptr %a514) + store { ptr, i64, i64 } %t511, ptr %a515 + call void @finch_str_drop(ptr %a515) + %t516 = load { ptr, i64, i64 }, ptr %a512 + %t517 = call { ptr, i64, i64 } @finch.gen.op(ptr %t506, { ptr, i64, i64 } %t516) + store { ptr, i64, i64 } %t516, ptr %a518 + call void @finch_str_drop(ptr %a518) + %t519 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t520 = load { ptr, i64, i64 }, ptr %t519 + store { ptr, i64, i64 } { ptr @.str.5419, i64 8, i64 0 }, ptr %a522 + store { ptr, i64, i64 } %t520, ptr %a523 + call void @finch_str_concat(ptr %a521, ptr %a522, ptr %a523) + %t524 = load { ptr, i64, i64 }, ptr %a521 + store { ptr, i64, i64 } %t524, ptr %a526 + store { ptr, i64, i64 } { ptr @.str.5420, i64 20, i64 0 }, ptr %a527 + call void @finch_str_concat(ptr %a525, ptr %a526, ptr %a527) + store { ptr, i64, i64 } %t524, ptr %a528 + call void @finch_str_drop(ptr %a528) + %t529 = load { ptr, i64, i64 }, ptr %a525 + %t530 = load %S.ast.Node, ptr %a2 + call void @finch.gen.panicIf(ptr %t505, { ptr, i64, i64 } %t517, { ptr, i64, i64 } %t529, %S.ast.Node %t530) + store { ptr, i64, i64 } %t517, ptr %a531 + call void @finch_str_drop(ptr %a531) + store { ptr, i64, i64 } %t529, ptr %a532 + call void @finch_str_drop(ptr %a532) + %t533 = getelementptr inbounds %S.ast.Type, ptr %a235, i32 0, i32 1 + %t534 = load { ptr, i64, i64 }, ptr %t533 + %t535 = extractvalue { ptr, i64, i64 } %t534, 1 + %t536 = icmp uge i64 0, %t535 + br i1 %t536, label %range8349, label %inrange8350 +range8349: + call void @finch_panic_index(ptr @.str.5421, i64 5104, i64 0, i64 %t535) unreachable -ok7944: - %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 %range7945, label %inrange7946 -range7945: - call void @finch_panic_index(ptr @.str.5241, i64 4736, i64 %t513, i64 %t515) +inrange8350: + %t537 = extractvalue { ptr, i64, i64 } %t534, 0 + %t538 = getelementptr inbounds %S.ast.Type, ptr %t537, i64 0 + %t539 = load %S.ast.Type, ptr %t538 + store %S.ast.Type %t539, ptr %a540 + call void @finch.copy.S_ast_Type(ptr %a541, ptr %a540) + %t542 = load %S.ast.Type, ptr %a541 + %t543 = load %S.ast.Type, ptr %a462 + store %S.ast.Type %t542, ptr %a462 + store %S.ast.Type %t543, ptr %a544 + call void @finch.drop.S_ast_Type(ptr %a544) + %t545 = load { ptr, i64, i64 }, ptr %a495 + store { ptr, i64, i64 } %t545, ptr %a546 + call void @finch_str_copy(ptr %a547, ptr %a546) + %t548 = load { ptr, i64, i64 }, ptr %a547 + %t549 = load { ptr, i64, i64 }, ptr %a463 + store { ptr, i64, i64 } %t548, ptr %a463 + store { ptr, i64, i64 } %t549, ptr %a550 + call void @finch_str_drop(ptr %a550) + call void @finch_str_drop(ptr %a495) + br label %endif8345 +else8344: + %t551 = getelementptr inbounds %S.ast.Type, ptr %a235, i32 0, i32 0 + %t552 = load { ptr, i64, i64 }, ptr %t551 + store { ptr, i64, i64 } %t552, ptr %a553 + store { ptr, i64, i64 } { ptr @.str.5422, i64 6, i64 0 }, ptr %a554 + %t555 = call i32 @finch_str_eq(ptr %a553, ptr %a554) + %t556 = icmp ne i32 %t555, 0 + br label %logic.from8351 +logic.from8351: + br i1 %t556, label %logic.end8353, label %logic.rhs8352 +logic.rhs8352: + %t557 = getelementptr inbounds %S.ast.Type, ptr %a235, i32 0, i32 0 + %t558 = load { ptr, i64, i64 }, ptr %t557 + store { ptr, i64, i64 } %t558, ptr %a559 + store { ptr, i64, i64 } { ptr @.str.5423, i64 4, i64 0 }, ptr %a560 + %t561 = call i32 @finch_str_eq(ptr %a559, ptr %a560) + %t562 = icmp ne i32 %t561, 0 + br label %logic.rend8354 +logic.rend8354: + br label %logic.end8353 +logic.end8353: + %t563 = phi i1 [ true, %logic.from8351 ], [ %t562, %logic.rend8354 ] + br i1 %t563, label %then8355, label %endif8357 +then8355: + %t564 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 0 + %t565 = load i1, ptr %t564 + br i1 %t565, label %then8358, label %else8359 +then8358: + %t566 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 1 + %t567 = getelementptr inbounds %S.gen.Place, ptr %t566, i32 0, i32 0 + %t568 = load { ptr, i64, i64 }, ptr %t567 + store { ptr, i64, i64 } %t568, ptr %a569 + call void @finch_str_copy(ptr %a570, ptr %a569) + %t571 = load { ptr, i64, i64 }, ptr %a570 + %t572 = load { ptr, i64, i64 }, ptr %a463 + store { ptr, i64, i64 } %t571, ptr %a463 + store { ptr, i64, i64 } %t572, ptr %a573 + call void @finch_str_drop(ptr %a573) + br label %endif8360 +else8359: + %t574 = load ptr, ptr %a1 + %t575 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 2 + %t576 = load %S.gen.Val, ptr %t575 + %t577 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t574, %S.gen.Val %t576) + %t578 = load { ptr, i64, i64 }, ptr %a463 + store { ptr, i64, i64 } %t577, ptr %a463 + store { ptr, i64, i64 } %t578, ptr %a579 + call void @finch_str_drop(ptr %a579) + store i1 true, ptr %a464 + br label %endif8360 +endif8360: + br label %endif8357 +endif8357: + br label %endif8345 +endif8345: + %t580 = getelementptr inbounds %S.ast.Type, ptr %a462, i32 0, i32 0 + %t581 = load { ptr, i64, i64 }, ptr %t580 + store { ptr, i64, i64 } %t581, ptr %a582 + store { ptr, i64, i64 } { ptr @.str.5424, i64 6, i64 0 }, ptr %a583 + %t584 = call i32 @finch_str_eq(ptr %a582, ptr %a583) + %t585 = icmp ne i32 %t584, 0 + br label %logic.from8361 +logic.from8361: + br i1 %t585, label %logic.end8363, label %logic.rhs8362 +logic.rhs8362: + %t586 = getelementptr inbounds %S.ast.Type, ptr %a462, i32 0, i32 0 + %t587 = load { ptr, i64, i64 }, ptr %t586 + store { ptr, i64, i64 } %t587, ptr %a588 + store { ptr, i64, i64 } { ptr @.str.5425, i64 4, i64 0 }, ptr %a589 + %t590 = call i32 @finch_str_eq(ptr %a588, ptr %a589) + %t591 = icmp ne i32 %t590, 0 + br label %logic.rend8364 +logic.rend8364: + br label %logic.end8363 +logic.end8363: + %t592 = phi i1 [ true, %logic.from8361 ], [ %t591, %logic.rend8364 ] + br i1 %t592, label %then8365, label %endif8367 +then8365: + %t593 = load ptr, ptr %a1 + %t594 = getelementptr inbounds %S.ast.Type, ptr %a462, i32 0, i32 3 + %t595 = load { ptr, i64, i64 }, ptr %t594 + %t596 = getelementptr inbounds %S.ast.Type, ptr %a462, i32 0, i32 2 + %t597 = load { ptr, i64, i64 }, ptr %t596 + %t598 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t599 = load { ptr, i64, i64 }, ptr %t598 + %t600 = call i64 @finch.gen.findMethod(ptr %t593, { ptr, i64, i64 } %t595, { ptr, i64, i64 } %t597, { ptr, i64, i64 } %t599) + store i64 %t600, ptr %a601 + %t602 = load i64, ptr %a601 + %t603 = icmp slt i64 %t602, 0 + br label %logic.from8368 +logic.from8368: + br i1 %t603, label %logic.rhs8369, label %logic.end8370 +logic.rhs8369: + %t604 = getelementptr inbounds %S.ast.Type, ptr %a462, i32 0, i32 0 + %t605 = load { ptr, i64, i64 }, ptr %t604 + store { ptr, i64, i64 } %t605, ptr %a606 + store { ptr, i64, i64 } { ptr @.str.5426, i64 6, i64 0 }, ptr %a607 + %t608 = call i32 @finch_str_eq(ptr %a606, ptr %a607) + %t609 = icmp ne i32 %t608, 0 + br label %logic.rend8371 +logic.rend8371: + br label %logic.end8370 +logic.end8370: + %t610 = phi i1 [ false, %logic.from8368 ], [ %t609, %logic.rend8371 ] + br i1 %t610, label %then8372, label %endif8374 +then8372: + %t611 = load ptr, ptr %a1 + %t612 = getelementptr inbounds %S.ast.Type, ptr %a462, i32 0, i32 3 + %t613 = load { ptr, i64, i64 }, ptr %t612 + %t614 = getelementptr inbounds %S.ast.Type, ptr %a462, i32 0, i32 2 + %t615 = load { ptr, i64, i64 }, ptr %t614 + %t616 = call i64 @finch.gen.findStruct(ptr %t611, { ptr, i64, i64 } %t613, { ptr, i64, i64 } %t615) + store i64 %t616, ptr %a617 + %t618 = load ptr, ptr %a1 + %t619 = icmp eq ptr %t618, null + br i1 %t619, label %panic8375, label %ok8376 +panic8375: + call void @finch_panic(ptr @.str.5427, i64 5118, ptr @.str.5428) unreachable -inrange7946: - %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 %then7947, label %endif7949 -then7947: - %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 %panic7950, label %ok7951 -panic7950: - call void @finch_panic(ptr @.str.5242, i64 4737, ptr @.str.5243) +ok8376: + %t620 = getelementptr inbounds %S.gen.Gen, ptr %t618, i32 0, i32 16 + %t621 = load i64, ptr %a617 + %t622 = load { ptr, i64, i64 }, ptr %t620 + %t623 = extractvalue { ptr, i64, i64 } %t622, 1 + %t624 = icmp uge i64 %t621, %t623 + br i1 %t624, label %range8377, label %inrange8378 +range8377: + call void @finch_panic_index(ptr @.str.5429, i64 5118, i64 %t621, i64 %t623) unreachable -ok7951: - %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 %range7952, label %inrange7953 -range7952: - call void @finch_panic_index(ptr @.str.5244, i64 4737, i64 %t531, i64 %t533) +inrange8378: + %t625 = extractvalue { ptr, i64, i64 } %t622, 0 + %t626 = getelementptr inbounds %S.gen.StructDef, ptr %t625, i64 %t621 + %t627 = getelementptr inbounds %S.gen.StructDef, ptr %t626, i32 0, i32 5 + %t628 = getelementptr inbounds { ptr, i64, i64 }, ptr %t627, i32 0, i32 1 + %t629 = load i64, ptr %t628 + %t630 = icmp sgt i64 %t629, 0 + br i1 %t630, label %then8379, label %endif8381 +then8379: + %t631 = load ptr, ptr %a1 + %t632 = getelementptr inbounds %S.ast.Type, ptr %a462, i32 0, i32 3 + %t633 = load { ptr, i64, i64 }, ptr %t632 + %t634 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t635 = load { ptr, i64, i64 }, ptr %t634 + %t636 = load ptr, ptr %a1 + %t637 = icmp eq ptr %t636, null + br i1 %t637, label %panic8382, label %ok8383 +panic8382: + call void @finch_panic(ptr @.str.5430, i64 5119, ptr @.str.5431) unreachable -inrange7953: - %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 %then7954, label %endif7956 -then7954: - %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 %panic7957, label %ok7958 -panic7957: - call void @finch_panic(ptr @.str.5245, i64 4739, ptr @.str.5246) +ok8383: + %t638 = getelementptr inbounds %S.gen.Gen, ptr %t636, i32 0, i32 16 + %t639 = load i64, ptr %a617 + %t640 = load { ptr, i64, i64 }, ptr %t638 + %t641 = extractvalue { ptr, i64, i64 } %t640, 1 + %t642 = icmp uge i64 %t639, %t641 + br i1 %t642, label %range8384, label %inrange8385 +range8384: + call void @finch_panic_index(ptr @.str.5432, i64 5119, i64 %t639, i64 %t641) unreachable -ok7958: - %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 %range7959, label %inrange7960 -range7959: - call void @finch_panic_index(ptr @.str.5247, i64 4739, i64 %t548, i64 %t550) +inrange8385: + %t643 = extractvalue { ptr, i64, i64 } %t640, 0 + %t644 = getelementptr inbounds %S.gen.StructDef, ptr %t643, i64 %t639 + %t645 = getelementptr inbounds %S.gen.StructDef, ptr %t644, i32 0, i32 5 + %t646 = load { ptr, i64, i64 }, ptr %t645 + %t647 = call i64 @finch.gen.findTemplate(ptr %t631, { ptr, i64, i64 } %t633, { ptr, i64, i64 } %t635, { ptr, i64, i64 } %t646, i1 false) + store i64 %t647, ptr %a648 + %t649 = load i64, ptr %a648 + %t650 = icmp sge i64 %t649, 0 + br i1 %t650, label %then8386, label %endif8388 +then8386: + %t651 = load ptr, ptr %a1 + %t652 = load i64, ptr %a648 + %t653 = load ptr, ptr %a1 + %t654 = icmp eq ptr %t653, null + br i1 %t654, label %panic8389, label %ok8390 +panic8389: + call void @finch_panic(ptr @.str.5433, i64 5121, ptr @.str.5434) unreachable -inrange7960: - %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 %endif7956 -endif7956: - br label %endif7949 -endif7949: - br label %endif7942 -endif7942: - %t559 = load i64, ptr %a493 - %t560 = icmp slt i64 %t559, 0 - br i1 %t560, label %then7961, label %endif7963 -then7961: - store { ptr, i64, i64 } zeroinitializer, ptr %a561 - %t562 = load ptr, ptr %a1 - %t563 = icmp eq ptr %t562, null - br i1 %t563, label %panic7964, label %ok7965 -panic7964: - call void @finch_panic(ptr @.str.5248, i64 4745, ptr @.str.5249) +ok8390: + %t655 = getelementptr inbounds %S.gen.Gen, ptr %t653, i32 0, i32 16 + %t656 = load i64, ptr %a617 + %t657 = load { ptr, i64, i64 }, ptr %t655 + %t658 = extractvalue { ptr, i64, i64 } %t657, 1 + %t659 = icmp uge i64 %t656, %t658 + br i1 %t659, label %range8391, label %inrange8392 +range8391: + call void @finch_panic_index(ptr @.str.5435, i64 5121, i64 %t656, i64 %t658) unreachable -ok7965: - %t564 = getelementptr inbounds %S.gen.Gen, ptr %t562, i32 0, i32 14 - store i64 0, ptr %a565 - br label %each.cond7966 -each.cond7966: - %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.body7967, label %each.end7969 -each.body7967: - %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.from7970 -logic.from7970: - br i1 %t581, label %logic.rhs7971, label %logic.end7972 -logic.rhs7971: - %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.rend7973 -logic.rend7973: - br label %logic.end7972 -logic.end7972: - %t590 = phi i1 [ false, %logic.from7970 ], [ %t589, %logic.rend7973 ] - br i1 %t590, label %then7974, label %endif7976 -then7974: - %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 %endif7976 -endif7976: - br label %each.step7968 -each.step7968: - %t601 = load i64, ptr %a565 - %t602 = add i64 %t601, 1 - store i64 %t602, ptr %a565 - br label %each.cond7966 -each.end7969: - %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 %then7977, label %endif7979 -then7977: - %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.5250, 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.5251, 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.5252, 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.5253, 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.5254, 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 %endif7979 -endif7979: - %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.5255, 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.5256, 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.5257, 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.5258, 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.5259, 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 +inrange8392: + %t660 = extractvalue { ptr, i64, i64 } %t657, 0 + %t661 = getelementptr inbounds %S.gen.StructDef, ptr %t660, i64 %t656 + %t662 = getelementptr inbounds %S.gen.StructDef, ptr %t661, i32 0, i32 7 + %t663 = load { ptr, i64, i64 }, ptr %t662 + %t664 = load %S.ast.Type, ptr %a462 + %t665 = load %S.ast.Node, ptr %a2 + %t666 = call i64 @finch.gen.instFn(ptr %t651, i64 %t652, { ptr, i64, i64 } %t663, %S.ast.Type %t664, %S.ast.Node %t665) + store i64 %t666, ptr %a601 + br label %endif8388 +endif8388: + br label %endif8381 +endif8381: + br label %endif8374 +endif8374: + %t667 = load i64, ptr %a601 + %t668 = icmp slt i64 %t667, 0 + br i1 %t668, label %then8393, label %endif8395 +then8393: + store { ptr, i64, i64 } zeroinitializer, ptr %a669 + %t670 = load ptr, ptr %a1 + %t671 = icmp eq ptr %t670, null + br i1 %t671, label %panic8396, label %ok8397 +panic8396: + call void @finch_panic(ptr @.str.5436, i64 5127, ptr @.str.5437) + unreachable +ok8397: + %t672 = getelementptr inbounds %S.gen.Gen, ptr %t670, i32 0, i32 15 + store i64 0, ptr %a673 + br label %each.cond8398 +each.cond8398: + %t674 = getelementptr inbounds { ptr, i64, i64 }, ptr %t672, i32 0, i32 1 + %t675 = load i64, ptr %t674 + %t676 = load i64, ptr %a673 + %t677 = icmp slt i64 %t676, %t675 + br i1 %t677, label %each.body8399, label %each.end8401 +each.body8399: + %t678 = load ptr, ptr %t672 + %t679 = getelementptr inbounds %S.gen.FnSig, ptr %t678, i64 %t676 + %t680 = load %S.gen.FnSig, ptr %t679 + store %S.gen.FnSig %t680, ptr %a681 + %t682 = getelementptr inbounds %S.gen.FnSig, ptr %a681, i32 0, i32 2 + %t683 = load { ptr, i64, i64 }, ptr %t682 + %t684 = getelementptr inbounds %S.ast.Type, ptr %a462, i32 0, i32 2 + %t685 = load { ptr, i64, i64 }, ptr %t684 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.5260, 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 %endif7963 -endif7963: - %t692 = load ptr, ptr %a1 - %t693 = icmp eq ptr %t692, null - br i1 %t693, label %panic7980, label %ok7981 -panic7980: - call void @finch_panic(ptr @.str.5261, i64 4756, ptr @.str.5262) + store { ptr, i64, i64 } %t685, ptr %a687 + %t688 = call i32 @finch_str_eq(ptr %a686, ptr %a687) + %t689 = icmp ne i32 %t688, 0 + br label %logic.from8402 +logic.from8402: + br i1 %t689, label %logic.rhs8403, label %logic.end8404 +logic.rhs8403: + %t690 = getelementptr inbounds %S.gen.FnSig, ptr %a681, i32 0, i32 3 + %t691 = load { ptr, i64, i64 }, ptr %t690 + %t692 = getelementptr inbounds %S.ast.Type, ptr %a462, i32 0, i32 3 + %t693 = load { ptr, i64, i64 }, ptr %t692 + store { ptr, i64, i64 } %t691, ptr %a694 + store { ptr, i64, i64 } %t693, ptr %a695 + %t696 = call i32 @finch_str_eq(ptr %a694, ptr %a695) + %t697 = icmp ne i32 %t696, 0 + br label %logic.rend8405 +logic.rend8405: + br label %logic.end8404 +logic.end8404: + %t698 = phi i1 [ false, %logic.from8402 ], [ %t697, %logic.rend8405 ] + br i1 %t698, label %then8406, label %endif8408 +then8406: + %t699 = getelementptr inbounds { ptr, i64, i64 }, ptr %a669, i32 0, i32 1 + %t700 = getelementptr inbounds %S.gen.FnSig, ptr %a681, i32 0, i32 1 + %t701 = load { ptr, i64, i64 }, ptr %t700 + store { ptr, i64, i64 } %t701, ptr %a702 + call void @finch_str_copy(ptr %a703, ptr %a702) + %t704 = load { ptr, i64, i64 }, ptr %a703 + %t705 = load i64, ptr %t699 + %t706 = add i64 %t705, 1 + call void @finch_arr_reserve(ptr %a669, i64 %t706, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t707 = load ptr, ptr %a669 + %t708 = getelementptr inbounds { ptr, i64, i64 }, ptr %t707, i64 %t705 + store { ptr, i64, i64 } %t704, ptr %t708 + store i64 %t706, ptr %t699 + br label %endif8408 +endif8408: + br label %each.step8400 +each.step8400: + %t709 = load i64, ptr %a673 + %t710 = add i64 %t709, 1 + store i64 %t710, ptr %a673 + br label %each.cond8398 +each.end8401: + %t711 = getelementptr inbounds { ptr, i64, i64 }, ptr %a669, i32 0, i32 1 + %t712 = load i64, ptr %t711 + %t713 = icmp eq i64 %t712, 0 + br i1 %t713, label %then8409, label %endif8411 +then8409: + %t714 = load ptr, ptr %a1 + %t715 = load %S.ast.Node, ptr %a2 + %t716 = getelementptr inbounds %S.ast.Type, ptr %a462, i32 0, i32 0 + %t717 = load { ptr, i64, i64 }, ptr %t716 + store { ptr, i64, i64 } { ptr @.str.5438, i64 4, 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 + store { ptr, i64, i64 } %t721, ptr %a723 + store { ptr, i64, i64 } { ptr @.str.5439, i64 1, i64 0 }, ptr %a724 + call void @finch_str_concat(ptr %a722, ptr %a723, ptr %a724) + store { ptr, i64, i64 } %t721, ptr %a725 + call void @finch_str_drop(ptr %a725) + %t726 = load { ptr, i64, i64 }, ptr %a722 + %t727 = load %S.ast.Type, ptr %a462 + %t728 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t727) + store { ptr, i64, i64 } %t726, ptr %a730 + store { ptr, i64, i64 } %t728, ptr %a731 + call void @finch_str_concat(ptr %a729, ptr %a730, ptr %a731) + store { ptr, i64, i64 } %t726, ptr %a732 + call void @finch_str_drop(ptr %a732) + store { ptr, i64, i64 } %t728, ptr %a733 + call void @finch_str_drop(ptr %a733) + %t734 = load { ptr, i64, i64 }, ptr %a729 + store { ptr, i64, i64 } %t734, ptr %a736 + store { ptr, i64, i64 } { ptr @.str.5440, i64 34, i64 0 }, ptr %a737 + call void @finch_str_concat(ptr %a735, ptr %a736, ptr %a737) + store { ptr, i64, i64 } %t734, ptr %a738 + call void @finch_str_drop(ptr %a738) + %t739 = load { ptr, i64, i64 }, ptr %a735 + %t740 = getelementptr inbounds %S.ast.Type, ptr %a462, i32 0, i32 2 + %t741 = load { ptr, i64, i64 }, ptr %t740 + store { ptr, i64, i64 } %t739, ptr %a743 + store { ptr, i64, i64 } %t741, ptr %a744 + call void @finch_str_concat(ptr %a742, ptr %a743, ptr %a744) + store { ptr, i64, i64 } %t739, ptr %a745 + call void @finch_str_drop(ptr %a745) + %t746 = load { ptr, i64, i64 }, ptr %a742 + store { ptr, i64, i64 } %t746, ptr %a748 + store { ptr, i64, i64 } { ptr @.str.5441, i64 1, i64 0 }, ptr %a749 + call void @finch_str_concat(ptr %a747, ptr %a748, ptr %a749) + store { ptr, i64, i64 } %t746, ptr %a750 + call void @finch_str_drop(ptr %a750) + %t751 = load { ptr, i64, i64 }, ptr %a747 + %t752 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %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) + store { ptr, i64, i64 } %t751, ptr %a757 + call void @finch_str_drop(ptr %a757) + %t758 = load { ptr, i64, i64 }, ptr %a754 + store { ptr, i64, i64 } %t758, ptr %a760 + store { ptr, i64, i64 } { ptr @.str.5442, i64 13, i64 0 }, ptr %a761 + call void @finch_str_concat(ptr %a759, ptr %a760, ptr %a761) + store { ptr, i64, i64 } %t758, ptr %a762 + call void @finch_str_drop(ptr %a762) + %t763 = load { ptr, i64, i64 }, ptr %a759 + call void @finch.gen.fail(ptr %t714, %S.ast.Node %t715, { ptr, i64, i64 } %t763) + store { ptr, i64, i64 } %t763, ptr %a764 + call void @finch_str_drop(ptr %a764) + br label %endif8411 +endif8411: + %t765 = load ptr, ptr %a1 + %t766 = load %S.ast.Node, ptr %a2 + %t767 = getelementptr inbounds %S.ast.Type, ptr %a462, i32 0, i32 0 + %t768 = load { ptr, i64, i64 }, ptr %t767 + store { ptr, i64, i64 } { ptr @.str.5443, i64 4, i64 0 }, ptr %a770 + store { ptr, i64, i64 } %t768, ptr %a771 + call void @finch_str_concat(ptr %a769, ptr %a770, ptr %a771) + %t772 = load { ptr, i64, i64 }, ptr %a769 + store { ptr, i64, i64 } %t772, ptr %a774 + store { ptr, i64, i64 } { ptr @.str.5444, i64 1, i64 0 }, ptr %a775 + call void @finch_str_concat(ptr %a773, ptr %a774, ptr %a775) + store { ptr, i64, i64 } %t772, ptr %a776 + call void @finch_str_drop(ptr %a776) + %t777 = load { ptr, i64, i64 }, ptr %a773 + %t778 = load %S.ast.Type, ptr %a462 + %t779 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t778) + store { ptr, i64, i64 } %t777, ptr %a781 + store { ptr, i64, i64 } %t779, ptr %a782 + call void @finch_str_concat(ptr %a780, ptr %a781, ptr %a782) + store { ptr, i64, i64 } %t777, ptr %a783 + call void @finch_str_drop(ptr %a783) + store { ptr, i64, i64 } %t779, ptr %a784 + call void @finch_str_drop(ptr %a784) + %t785 = load { ptr, i64, i64 }, ptr %a780 + store { ptr, i64, i64 } %t785, ptr %a787 + store { ptr, i64, i64 } { ptr @.str.5445, i64 16, i64 0 }, ptr %a788 + call void @finch_str_concat(ptr %a786, ptr %a787, ptr %a788) + store { ptr, i64, i64 } %t785, ptr %a789 + call void @finch_str_drop(ptr %a789) + %t790 = load { ptr, i64, i64 }, ptr %a786 + %t791 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t792 = load { ptr, i64, i64 }, ptr %t791 + store { ptr, i64, i64 } %t790, ptr %a794 + store { ptr, i64, i64 } %t792, ptr %a795 + call void @finch_str_concat(ptr %a793, ptr %a794, ptr %a795) + store { ptr, i64, i64 } %t790, ptr %a796 + call void @finch_str_drop(ptr %a796) + %t797 = load { ptr, i64, i64 }, ptr %a793 + store { ptr, i64, i64 } %t797, ptr %a799 + store { ptr, i64, i64 } { ptr @.str.5446, i64 11, i64 0 }, ptr %a800 + call void @finch_str_concat(ptr %a798, ptr %a799, ptr %a800) + store { ptr, i64, i64 } %t797, ptr %a801 + call void @finch_str_drop(ptr %a801) + %t802 = load { ptr, i64, i64 }, ptr %a798 + %t803 = getelementptr inbounds { ptr, i64, i64 }, ptr %a669, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.5447, i64 2, i64 0 }, ptr %a804 + call void @finch_str_join(ptr %a805, ptr %a669, ptr %a804) + %t806 = load { ptr, i64, i64 }, ptr %a805 + store { ptr, i64, i64 } %t802, ptr %a808 + store { ptr, i64, i64 } %t806, ptr %a809 + call void @finch_str_concat(ptr %a807, ptr %a808, ptr %a809) + store { ptr, i64, i64 } %t802, ptr %a810 + call void @finch_str_drop(ptr %a810) + store { ptr, i64, i64 } %t806, ptr %a811 + call void @finch_str_drop(ptr %a811) + %t812 = load { ptr, i64, i64 }, ptr %a807 + store { ptr, i64, i64 } %t812, ptr %a814 + store { ptr, i64, i64 } { ptr @.str.5448, i64 1, i64 0 }, ptr %a815 + call void @finch_str_concat(ptr %a813, ptr %a814, ptr %a815) + store { ptr, i64, i64 } %t812, ptr %a816 + call void @finch_str_drop(ptr %a816) + %t817 = load { ptr, i64, i64 }, ptr %a813 + call void @finch.gen.fail(ptr %t765, %S.ast.Node %t766, { ptr, i64, i64 } %t817) + store { ptr, i64, i64 } %t817, ptr %a818 + call void @finch_str_drop(ptr %a818) + call void @finch.drop.arr_str(ptr %a669) + br label %endif8395 +endif8395: + %t819 = load ptr, ptr %a1 + %t820 = icmp eq ptr %t819, null + br i1 %t820, label %panic8412, label %ok8413 +panic8412: + call void @finch_panic(ptr @.str.5449, i64 5138, ptr @.str.5450) unreachable -ok7981: - %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 %range7982, label %inrange7983 -range7982: - call void @finch_panic_index(ptr @.str.5263, i64 4756, i64 %t695, i64 %t697) +ok8413: + %t821 = getelementptr inbounds %S.gen.Gen, ptr %t819, i32 0, i32 15 + %t822 = load i64, ptr %a601 + %t823 = load { ptr, i64, i64 }, ptr %t821 + %t824 = extractvalue { ptr, i64, i64 } %t823, 1 + %t825 = icmp uge i64 %t822, %t824 + br i1 %t825, label %range8414, label %inrange8415 +range8414: + call void @finch_panic_index(ptr @.str.5451, i64 5138, i64 %t822, i64 %t824) unreachable -inrange7983: - %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.from7984 -logic.from7984: - br i1 %t702, label %logic.rhs7985, label %logic.end7986 -logic.rhs7985: - %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.5264, 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.from7987 -logic.from7987: - br i1 %t708, label %logic.end7989, label %logic.rhs7988 -logic.rhs7988: - %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.5265, 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.rend7990 -logic.rend7990: - br label %logic.end7989 -logic.end7989: - %t715 = phi i1 [ true, %logic.from7987 ], [ %t714, %logic.rend7990 ] - br label %logic.rend7991 -logic.rend7991: - br label %logic.end7986 -logic.end7986: - %t716 = phi i1 [ false, %logic.from7984 ], [ %t715, %logic.rend7991 ] - br i1 %t716, label %then7992, label %endif7994 -then7992: - %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 %then7995, label %endif7997 -then7995: - %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.5266, 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.5267, 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 %endif7997 -endif7997: - %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 %then7998, label %endif8000 -then7998: - %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.from8001 -logic.from8001: - br i1 %t749, label %logic.rhs8002, label %logic.end8003 -logic.rhs8002: - %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.rend8004 -logic.rend8004: - br label %logic.end8003 -logic.end8003: - %t754 = phi i1 [ false, %logic.from8001 ], [ %t753, %logic.rend8004 ] - br i1 %t754, label %then8005, label %endif8007 -then8005: - %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.5268, 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.5269, i64 18, i64 0 }, ptr %a764 - call void @finch_str_concat(ptr %a762, ptr %a763, ptr %a764) - %t765 = load { ptr, i64, i64 }, ptr %a762 - call void @finch.gen.fail(ptr %t755, %S.ast.Node %t756, { ptr, i64, i64 } %t765) - br label %endif8007 -endif8007: - br label %endif8000 -endif8000: - br label %endif7994 -endif7994: - %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.5270, 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 -endif7935: - %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.5271, 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) +inrange8415: + %t826 = extractvalue { ptr, i64, i64 } %t823, 0 + %t827 = getelementptr inbounds %S.gen.FnSig, ptr %t826, i64 %t822 + %t828 = getelementptr inbounds %S.gen.FnSig, ptr %t827, i32 0, i32 10 + %t829 = load i1, ptr %t828 + br label %logic.from8416 +logic.from8416: + br i1 %t829, label %logic.rhs8417, label %logic.end8418 +logic.rhs8417: + %t830 = getelementptr inbounds %S.ast.Type, ptr %a235, i32 0, i32 0 + %t831 = load { ptr, i64, i64 }, ptr %t830 + store { ptr, i64, i64 } %t831, ptr %a832 + store { ptr, i64, i64 } { ptr @.str.5452, i64 6, i64 0 }, ptr %a833 + %t834 = call i32 @finch_str_eq(ptr %a832, ptr %a833) + %t835 = icmp ne i32 %t834, 0 + br label %logic.from8419 +logic.from8419: + br i1 %t835, label %logic.end8421, label %logic.rhs8420 +logic.rhs8420: + %t836 = getelementptr inbounds %S.ast.Type, ptr %a235, i32 0, i32 0 + %t837 = load { ptr, i64, i64 }, ptr %t836 + store { ptr, i64, i64 } %t837, ptr %a838 + store { ptr, i64, i64 } { ptr @.str.5453, i64 4, i64 0 }, ptr %a839 + %t840 = call i32 @finch_str_eq(ptr %a838, ptr %a839) + %t841 = icmp ne i32 %t840, 0 + br label %logic.rend8422 +logic.rend8422: + br label %logic.end8421 +logic.end8421: + %t842 = phi i1 [ true, %logic.from8419 ], [ %t841, %logic.rend8422 ] + br label %logic.rend8423 +logic.rend8423: + br label %logic.end8418 +logic.end8418: + %t843 = phi i1 [ false, %logic.from8416 ], [ %t842, %logic.rend8423 ] + br i1 %t843, label %then8424, label %endif8426 +then8424: + %t844 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 0 + %t845 = load i1, ptr %t844 + %t846 = xor i1 %t845, true + br i1 %t846, label %then8427, label %endif8429 +then8427: + %t847 = load ptr, ptr %a1 + %t848 = load %S.ast.Node, ptr %a2 + %t849 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t850 = load { ptr, i64, i64 }, ptr %t849 + store { ptr, i64, i64 } %t850, ptr %a852 + store { ptr, i64, i64 } { ptr @.str.5454, i64 28, i64 0 }, ptr %a853 + call void @finch_str_concat(ptr %a851, ptr %a852, ptr %a853) + %t854 = load { ptr, i64, i64 }, ptr %a851 + %t855 = load %S.ast.Type, ptr %a462 + %t856 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t855) + store { ptr, i64, i64 } %t854, ptr %a858 + store { ptr, i64, i64 } %t856, ptr %a859 + call void @finch_str_concat(ptr %a857, ptr %a858, ptr %a859) + store { ptr, i64, i64 } %t854, ptr %a860 + call void @finch_str_drop(ptr %a860) + store { ptr, i64, i64 } %t856, ptr %a861 + call void @finch_str_drop(ptr %a861) + %t862 = load { ptr, i64, i64 }, ptr %a857 + store { ptr, i64, i64 } %t862, ptr %a864 + store { ptr, i64, i64 } { ptr @.str.5455, i64 30, i64 0 }, ptr %a865 + call void @finch_str_concat(ptr %a863, ptr %a864, ptr %a865) + store { ptr, i64, i64 } %t862, ptr %a866 + call void @finch_str_drop(ptr %a866) + %t867 = load { ptr, i64, i64 }, ptr %a863 + call void @finch.gen.fail(ptr %t847, %S.ast.Node %t848, { ptr, i64, i64 } %t867) + store { ptr, i64, i64 } %t867, ptr %a868 + call void @finch_str_drop(ptr %a868) + br label %endif8429 +endif8429: + %t869 = load %S.ast.Node, ptr %a13 + %t870 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t869) + store { ptr, i64, i64 } %t870, ptr %a871 + %t872 = getelementptr inbounds { ptr, i64, i64 }, ptr %a871, i32 0, i32 1 + %t873 = load i64, ptr %t872 + %t874 = icmp sgt i64 %t873, 0 + br i1 %t874, label %then8430, label %endif8432 +then8430: + %t875 = load ptr, ptr %a1 + %t876 = load { ptr, i64, i64 }, ptr %a871 + %t877 = call i64 @finch.gen.lookup(ptr %t875, { ptr, i64, i64 } %t876) + store i64 %t877, ptr %a878 + %t879 = load i64, ptr %a878 + %t880 = icmp sge i64 %t879, 0 + br label %logic.from8433 +logic.from8433: + br i1 %t880, label %logic.rhs8434, label %logic.end8435 +logic.rhs8434: + %t881 = load ptr, ptr %a1 + %t882 = load i64, ptr %a878 + %t883 = call %S.gen.Var @finch.gen.varAt(ptr %t881, i64 %t882) + %t884 = extractvalue %S.gen.Var %t883, 3 + store %S.gen.Var %t883, ptr %a885 + call void @finch.drop.S_gen_Var(ptr %a885) + br label %logic.rend8436 +logic.rend8436: + br label %logic.end8435 +logic.end8435: + %t886 = phi i1 [ false, %logic.from8433 ], [ %t884, %logic.rend8436 ] + br i1 %t886, label %then8437, label %endif8439 +then8437: + %t887 = load ptr, ptr %a1 + %t888 = load %S.ast.Node, ptr %a2 + %t889 = load { ptr, i64, i64 }, ptr %a871 + store { ptr, i64, i64 } { ptr @.str.5456, i64 19, i64 0 }, ptr %a891 + store { ptr, i64, i64 } %t889, ptr %a892 + call void @finch_str_concat(ptr %a890, ptr %a891, ptr %a892) + %t893 = load { ptr, i64, i64 }, ptr %a890 + store { ptr, i64, i64 } %t893, ptr %a895 + store { ptr, i64, i64 } { ptr @.str.5457, i64 18, i64 0 }, ptr %a896 + call void @finch_str_concat(ptr %a894, ptr %a895, ptr %a896) + store { ptr, i64, i64 } %t893, ptr %a897 + call void @finch_str_drop(ptr %a897) + %t898 = load { ptr, i64, i64 }, ptr %a894 + call void @finch.gen.fail(ptr %t887, %S.ast.Node %t888, { ptr, i64, i64 } %t898) + store { ptr, i64, i64 } %t898, ptr %a899 + call void @finch_str_drop(ptr %a899) + br label %endif8439 +endif8439: + br label %endif8432 +endif8432: + call void @finch_str_drop(ptr %a871) + br label %endif8426 +endif8426: + %t900 = load i1, ptr %a464 + br label %logic.from8440 +logic.from8440: + br i1 %t900, label %logic.rhs8441, label %logic.end8442 +logic.rhs8441: + %t901 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 2 + %t902 = getelementptr inbounds %S.gen.Val, ptr %t901, i32 0, i32 2 + %t903 = load i1, ptr %t902 + br label %logic.rend8443 +logic.rend8443: + br label %logic.end8442 +logic.end8442: + %t904 = phi i1 [ false, %logic.from8440 ], [ %t903, %logic.rend8443 ] + br i1 %t904, label %then8444, label %endif8446 +then8444: + %t905 = load ptr, ptr %a1 + %t906 = load { ptr, i64, i64 }, ptr %a463 + %t907 = load %S.ast.Type, ptr %a462 + call void @finch.gen.holdAddr(ptr %t905, { ptr, i64, i64 } %t906, %S.ast.Type %t907) + br label %endif8446 +endif8446: + %t908 = load ptr, ptr %a1 + %t909 = load i64, ptr %a601 + %t910 = load %S.ast.Node, ptr %a2 + %t911 = load %S.ast.Type, ptr %a462 + %t912 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t911) + store { ptr, i64, i64 } %t912, ptr %a914 + store { ptr, i64, i64 } { ptr @.str.5458, i64 1, i64 0 }, ptr %a915 + call void @finch_str_concat(ptr %a913, ptr %a914, ptr %a915) + store { ptr, i64, i64 } %t912, ptr %a916 + call void @finch_str_drop(ptr %a916) + %t917 = load { ptr, i64, i64 }, ptr %a913 + %t918 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t919 = load { ptr, i64, i64 }, ptr %t918 + store { ptr, i64, i64 } %t917, ptr %a921 + store { ptr, i64, i64 } %t919, ptr %a922 + call void @finch_str_concat(ptr %a920, ptr %a921, ptr %a922) + store { ptr, i64, i64 } %t917, ptr %a923 + call void @finch_str_drop(ptr %a923) + %t924 = load { ptr, i64, i64 }, ptr %a920 + %t925 = load { ptr, i64, i64 }, ptr %a463 + %t926 = load %S.ast.Node, ptr %a13 + %t927 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t926) + %t928 = call %S.gen.Val @finch.gen.callFn(ptr %t908, i64 %t909, %S.ast.Node %t910, i64 1, { ptr, i64, i64 } %t924, { ptr, i64, i64 } %t925, { ptr, i64, i64 } %t927) + store { ptr, i64, i64 } %t924, ptr %a929 + call void @finch_str_drop(ptr %a929) + store { ptr, i64, i64 } %t927, ptr %a930 + call void @finch_str_drop(ptr %a930) + store %S.gen.Val %t928, ptr %a931 + %t932 = load i1, ptr %a464 + br label %logic.from8447 +logic.from8447: + br i1 %t932, label %logic.rhs8448, label %logic.end8449 +logic.rhs8448: + %t933 = getelementptr inbounds %S.gen.Ref, ptr %a222, i32 0, i32 2 + %t934 = getelementptr inbounds %S.gen.Val, ptr %t933, i32 0, i32 2 + %t935 = load i1, ptr %t934 + br label %logic.rend8450 +logic.rend8450: + br label %logic.end8449 +logic.end8449: + %t936 = phi i1 [ false, %logic.from8447 ], [ %t935, %logic.rend8450 ] + br label %logic.from8451 +logic.from8451: + br i1 %t936, label %logic.rhs8452, label %logic.end8453 +logic.rhs8452: + %t937 = load ptr, ptr %a1 + %t938 = load %S.ast.Type, ptr %a462 + %t939 = call i1 @finch.gen.owning(ptr %t937, %S.ast.Type %t938) + br label %logic.rend8454 +logic.rend8454: + br label %logic.end8453 +logic.end8453: + %t940 = phi i1 [ false, %logic.from8451 ], [ %t939, %logic.rend8454 ] + br i1 %t940, label %then8455, label %endif8457 +then8455: + %t941 = load ptr, ptr %a1 + %t942 = load { ptr, i64, i64 }, ptr %a463 + %t943 = load %S.ast.Type, ptr %a462 + call void @finch.gen.dropAt(ptr %t941, { ptr, i64, i64 } %t942, %S.ast.Type %t943) + br label %endif8457 +endif8457: + %t944 = load ptr, ptr %a1 + %t945 = load i64, ptr %a228 + call void @finch.gen.heldEnd(ptr %t944, i64 %t945) + %t946 = load %S.gen.Val, ptr %a931 + call void @finch_str_drop(ptr %a463) + call void @finch.drop.S_ast_Type(ptr %a462) + call void @finch.drop.S_ast_Type(ptr %a235) + call void @finch.drop.S_gen_Ref(ptr %a222) + call void @finch.drop.arr_str(ptr %a200) + call void @finch.drop.S_ast_Node(ptr %a13) + ret %S.gen.Val %t946 +endif8367: + %t947 = load ptr, ptr %a1 + %t948 = load %S.ast.Node, ptr %a2 + %t949 = load %S.ast.Type, ptr %a235 + %t950 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t949) + store { ptr, i64, i64 } %t950, ptr %a952 + store { ptr, i64, i64 } { ptr @.str.5459, i64 15, i64 0 }, ptr %a953 + call void @finch_str_concat(ptr %a951, ptr %a952, ptr %a953) + store { ptr, i64, i64 } %t950, ptr %a954 + call void @finch_str_drop(ptr %a954) + %t955 = load { ptr, i64, i64 }, ptr %a951 + call void @finch.gen.fail(ptr %t947, %S.ast.Node %t948, { ptr, i64, i64 } %t955) + store { ptr, i64, i64 } %t955, ptr %a956 + call void @finch_str_drop(ptr %a956) + call void @finch_str_drop(ptr %a463) + call void @finch.drop.S_ast_Type(ptr %a462) + call void @finch.drop.S_ast_Type(ptr %a235) + call void @finch.drop.S_gen_Ref(ptr %a222) + call void @finch.drop.arr_str(ptr %a200) + call void @finch.drop.S_ast_Node(ptr %a13) ret %S.gen.Val zeroinitializer } @@ -72002,121 +85779,136 @@ entry: %a32 = alloca { ptr, i64, i64 }, align 16 %a33 = alloca { ptr, i64, i64 }, align 16 %a34 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 + %a35 = alloca { ptr, i64, i64 }, align 16 + %a38 = alloca { ptr, i64, i64 }, align 16 %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 + %a41 = alloca { ptr, i64, i64 }, align 16 + %a42 = alloca { ptr, i64, i64 }, align 16 + %a68 = alloca %S.gen.Val, align 16 + %a70 = alloca %S.gen.Val, align 16 %a71 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = 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 + %a82 = alloca { ptr, i64, i64 }, align 16 %a83 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 + %a84 = alloca { ptr, i64, i64 }, align 16 + %a85 = alloca { ptr, i64, i64 }, align 16 %a88 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 + %a89 = alloca { ptr, i64, i64 }, align 16 %a92 = alloca { ptr, i64, i64 }, align 16 - %a95 = 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 %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a106 = 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 %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 + %a115 = 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 + %a119 = alloca { ptr, i64, i64 }, align 16 + %a121 = 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 - %a125 = 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 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 + %a126 = alloca { ptr, i64, i64 }, align 16 + %a130 = alloca { ptr, i64, i64 }, align 16 %a136 = alloca { ptr, i64, i64 }, align 16 %a137 = alloca { ptr, i64, i64 }, align 16 %a138 = 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 %a143 = 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 + %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 - %a161 = 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 + %a154 = 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 + %a160 = alloca { ptr, i64, i64 }, align 16 + %a163 = alloca { ptr, i64, i64 }, align 16 + %a164 = alloca { ptr, i64, i64 }, align 16 %a171 = 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 + %a172 = 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 + %a188 = alloca { ptr, i64, i64 }, align 16 + %a189 = alloca { ptr, i64, i64 }, align 16 %a190 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 + %a191 = alloca { ptr, i64, i64 }, align 16 + %a194 = alloca { ptr, i64, i64 }, align 16 %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 %a199 = alloca { ptr, i64, i64 }, align 16 %a200 = alloca { ptr, i64, i64 }, align 16 %a201 = alloca { ptr, i64, i64 }, align 16 + %a203 = 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 - %a213 = alloca { ptr, i64, i64 }, align 16 %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = 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 - %a229 = alloca %S.ast.Type, align 16 - %a230 = alloca %S.ast.Type, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 + %a226 = alloca { ptr, i64, i64 }, align 16 + %a229 = 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 + %a237 = 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 + %a243 = alloca { ptr, i64, i64 }, align 16 + %a246 = alloca { ptr, i64, i64 }, align 16 + %a248 = alloca { ptr, i64, i64 }, align 16 %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 %a254 = alloca { ptr, i64, i64 }, align 16 %a255 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca %S.gen.Val, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a308 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a322 = 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 + %a259 = alloca %S.ast.Type, align 16 + %a260 = alloca %S.ast.Type, align 16 + %a268 = alloca { ptr, i64, i64 }, align 16 + %a269 = alloca { ptr, i64, i64 }, align 16 + %a282 = alloca { ptr, i64, i64 }, align 16 + %a283 = alloca { ptr, i64, i64 }, align 16 + %a287 = alloca { ptr, i64, i64 }, align 16 + %a288 = alloca { ptr, i64, i64 }, align 16 + %a314 = alloca %S.gen.Val, align 16 + %a315 = alloca %S.gen.Val, align 16 + %a318 = alloca { ptr, i64, i64 }, align 16 + %a324 = alloca { ptr, i64, i64 }, align 16 + %a328 = alloca { ptr, i64, i64 }, align 16 %a331 = alloca { ptr, i64, i64 }, align 16 - %a334 = alloca { ptr, i64, i64 }, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 %a336 = alloca { ptr, i64, i64 }, align 16 %a339 = 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 - %a354 = alloca { ptr, i64, i64 }, align 16 - %a355 = alloca { ptr, i64, i64 }, align 16 + %a342 = alloca { ptr, i64, i64 }, align 16 + %a345 = alloca { ptr, i64, i64 }, align 16 + %a348 = alloca { ptr, i64, i64 }, align 16 %a356 = alloca { ptr, i64, i64 }, align 16 %a359 = alloca { ptr, i64, i64 }, align 16 %a360 = alloca { ptr, i64, i64 }, align 16 @@ -72124,410 +85916,578 @@ entry: %a363 = alloca { ptr, i64, i64 }, align 16 %a364 = alloca { ptr, i64, i64 }, align 16 %a365 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 + %a366 = alloca { ptr, i64, i64 }, align 16 %a369 = alloca { ptr, i64, i64 }, align 16 %a370 = alloca { ptr, i64, i64 }, align 16 - %a376 = alloca %S.ast.Type, align 16 - %a377 = alloca %S.ast.Type, align 16 - %a380 = alloca %S.gen.Val, 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 %a387 = alloca { ptr, i64, i64 }, align 16 %a388 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a407 = 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 + %a394 = alloca { ptr, i64, i64 }, align 16 + %a397 = alloca { ptr, i64, i64 }, align 16 + %a398 = 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 + %a403 = alloca { ptr, i64, i64 }, align 16 + %a404 = alloca { ptr, i64, i64 }, align 16 + %a405 = 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 %a411 = alloca { ptr, i64, i64 }, align 16 - %a412 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a424 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a427 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a432 = alloca { ptr, i64, i64 }, align 16 - %a439 = alloca { ptr, i64, i64 }, align 16 - %a440 = alloca { ptr, i64, i64 }, align 16 - %a441 = alloca { ptr, i64, i64 }, align 16 + %a414 = alloca { ptr, i64, i64 }, align 16 + %a416 = alloca { ptr, i64, i64 }, align 16 + %a419 = alloca %S.ast.Type, align 16 + %a420 = alloca %S.ast.Type, align 16 + %a423 = alloca %S.gen.Val, align 16 + %a428 = alloca { ptr, i64, i64 }, align 16 + %a429 = alloca { ptr, i64, i64 }, align 16 + %a434 = alloca %S.ast.Type, align 16 + %a435 = alloca %S.ast.Type, align 16 + %a440 = alloca %S.gen.Val, align 16 + %a442 = 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 - %a452 = alloca { ptr, i64, i64 }, align 16 - %a453 = alloca { ptr, i64, i64 }, align 16 - %a460 = alloca { ptr, i64, i64 }, align 16 - %a461 = alloca { ptr, i64, i64 }, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a480 = alloca { ptr, i64, i64 }, align 16 - %a483 = alloca { ptr, i64, i64 }, align 16 - %a484 = alloca { ptr, i64, i64 }, align 16 + %a445 = alloca %S.gen.Val, align 16 + %a446 = alloca { ptr, i64, i64 }, align 16 + %a463 = alloca { ptr, i64, i64 }, align 16 + %a464 = alloca { ptr, i64, i64 }, align 16 + %a465 = alloca { ptr, i64, i64 }, align 16 + %a467 = alloca { ptr, i64, i64 }, align 16 + %a468 = alloca { ptr, i64, i64 }, align 16 + %a469 = alloca { ptr, i64, i64 }, align 16 + %a470 = alloca { ptr, i64, i64 }, align 16 + %a473 = alloca { ptr, i64, i64 }, align 16 + %a475 = alloca { ptr, i64, i64 }, align 16 %a485 = alloca { ptr, i64, i64 }, align 16 %a487 = alloca { ptr, i64, i64 }, align 16 %a488 = alloca { ptr, i64, i64 }, align 16 - %a489 = alloca { ptr, i64, i64 }, align 16 %a492 = alloca { ptr, i64, i64 }, align 16 %a493 = alloca { ptr, i64, i64 }, align 16 - %a494 = alloca { ptr, i64, i64 }, align 16 - %a496 = alloca { ptr, i64, i64 }, align 16 - %a497 = alloca { ptr, i64, i64 }, align 16 - %a498 = alloca { ptr, i64, i64 }, align 16 + %a500 = alloca { ptr, i64, i64 }, align 16 %a501 = alloca { ptr, i64, i64 }, align 16 %a502 = alloca { ptr, i64, i64 }, align 16 - %a503 = alloca { ptr, i64, i64 }, align 16 + %a504 = 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 - %a517 = alloca { ptr, i64, i64 }, align 16 - %a518 = alloca { ptr, i64, i64 }, align 16 - %a543 = alloca { ptr, i64, i64 }, align 16 - %a544 = alloca { ptr, i64, i64 }, align 16 - %a546 = alloca { ptr, i64, i64 }, align 16 + %a510 = alloca { ptr, i64, i64 }, align 16 + %a515 = alloca { ptr, i64, i64 }, align 16 + %a516 = alloca { ptr, i64, i64 }, align 16 + %a523 = alloca { ptr, i64, i64 }, align 16 + %a524 = alloca { ptr, i64, i64 }, align 16 + %a538 = alloca %S.gen.Val, align 16 + %a542 = alloca { ptr, i64, i64 }, align 16 + %a545 = alloca { ptr, i64, i64 }, align 16 + %a548 = alloca { ptr, i64, i64 }, align 16 + %a549 = alloca { ptr, i64, i64 }, align 16 + %a550 = alloca { ptr, i64, i64 }, align 16 + %a552 = 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 + %a558 = alloca { ptr, i64, i64 }, align 16 + %a559 = alloca { ptr, i64, i64 }, align 16 + %a560 = alloca { ptr, i64, i64 }, align 16 + %a561 = 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 + %a566 = alloca { ptr, i64, i64 }, align 16 %a569 = alloca { ptr, i64, i64 }, align 16 - %a583 = alloca { ptr, i64, i64 }, align 16 - %a586 = alloca { ptr, i64, i64 }, align 16 - %a587 = alloca { ptr, i64, i64 }, align 16 - %a588 = alloca { ptr, i64, i64 }, align 16 + %a570 = alloca { ptr, i64, i64 }, align 16 + %a571 = alloca { ptr, i64, i64 }, align 16 + %a572 = alloca { ptr, i64, i64 }, align 16 + %a574 = alloca { ptr, i64, i64 }, align 16 + %a575 = alloca { ptr, i64, i64 }, align 16 + %a576 = alloca { ptr, i64, i64 }, align 16 + %a577 = alloca { ptr, i64, i64 }, align 16 + %a579 = alloca { ptr, i64, i64 }, align 16 %a590 = alloca { ptr, i64, i64 }, align 16 %a591 = alloca { ptr, i64, i64 }, align 16 - %a592 = alloca { ptr, i64, i64 }, align 16 - %a595 = alloca { ptr, i64, i64 }, align 16 - %a596 = alloca { ptr, i64, i64 }, align 16 - %a597 = alloca { ptr, i64, i64 }, align 16 - %a599 = alloca { ptr, i64, i64 }, align 16 - %a600 = alloca { ptr, i64, i64 }, align 16 - %a601 = 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 - %a610 = alloca { ptr, i64, i64 }, align 16 - %a611 = alloca { ptr, i64, i64 }, align 16 - %a612 = 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 + %a615 = alloca %S.gen.Val, align 16 + %a616 = alloca %S.ast.Type, align 16 + %a618 = 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 - %a625 = 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 - %a631 = alloca { ptr, i64, i64 }, align 16 - %a632 = alloca { ptr, i64, i64 }, align 16 - %a633 = alloca { ptr, i64, i64 }, align 16 - %a638 = 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 - %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 - %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 + %a621 = alloca %S.gen.Val, align 16 + %a622 = alloca { ptr, i64, i64 }, align 16 + %a644 = alloca %S.gen.Val, align 16 + %a646 = alloca %S.gen.Val, align 16 + %a647 = alloca { ptr, i64, i64 }, align 16 + %a661 = 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 + %a668 = alloca { ptr, i64, i64 }, align 16 + %a669 = alloca { ptr, i64, i64 }, align 16 %a670 = alloca { ptr, i64, i64 }, align 16 %a671 = 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 + %a677 = 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 + %a687 = 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 + %a691 = 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 - %a697 = alloca { ptr, i64, i64 }, align 16 %a699 = alloca { ptr, i64, i64 }, align 16 - %a709 = 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 + %a704 = alloca { ptr, i64, i64 }, align 16 + %a705 = alloca { ptr, i64, i64 }, align 16 + %a706 = alloca { ptr, i64, i64 }, align 16 + %a707 = 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 %a715 = alloca { ptr, i64, i64 }, align 16 %a716 = alloca { ptr, i64, i64 }, align 16 - %a718 = alloca { ptr, i64, i64 }, align 16 + %a717 = alloca { ptr, i64, i64 }, align 16 %a719 = alloca { ptr, i64, i64 }, align 16 %a720 = alloca { ptr, i64, i64 }, align 16 - %a723 = alloca { ptr, i64, i64 }, align 16 + %a721 = alloca { ptr, i64, i64 }, align 16 + %a722 = alloca { ptr, i64, i64 }, align 16 %a724 = alloca { ptr, i64, i64 }, align 16 - %a725 = alloca { ptr, i64, i64 }, align 16 - %a727 = alloca { ptr, i64, i64 }, align 16 %a728 = alloca { ptr, i64, i64 }, align 16 - %a729 = 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 + %a735 = alloca { ptr, i64, i64 }, align 16 + %a736 = alloca { ptr, i64, i64 }, align 16 %a738 = 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 - %a742 = alloca { ptr, i64, i64 }, align 16 - %a743 = 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 %a747 = alloca { ptr, i64, i64 }, align 16 + %a749 = alloca { ptr, i64, i64 }, align 16 %a750 = alloca { ptr, i64, i64 }, align 16 %a751 = alloca { ptr, i64, i64 }, align 16 %a752 = 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 + %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 - %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 - %a775 = alloca %S.ast.Type, align 16 - %a776 = alloca %S.ast.Type, align 16 - %a784 = alloca { ptr, i64, i64 }, align 16 - %a785 = alloca { ptr, i64, i64 }, align 16 - %a810 = alloca { ptr, i64, i64 }, align 16 - %a811 = alloca { ptr, i64, i64 }, align 16 - %a813 = alloca { ptr, i64, i64 }, align 16 + %a791 = alloca %S.gen.Val, align 16 + %a792 = alloca %S.ast.Type, align 16 + %a794 = alloca { ptr, i64, i64 }, align 16 + %a795 = alloca { ptr, i64, i64 }, align 16 + %a797 = alloca %S.gen.Val, align 16 + %a798 = alloca { ptr, i64, i64 }, align 16 + %a805 = alloca { ptr, i64, i64 }, align 16 + %a809 = 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 + %a824 = 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 %a831 = alloca { ptr, i64, i64 }, align 16 + %a832 = 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 - %a840 = alloca { ptr, i64, i64 }, align 16 %a841 = alloca { ptr, i64, i64 }, align 16 - %a842 = alloca { ptr, i64, i64 }, align 16 + %a843 = alloca { ptr, i64, i64 }, align 16 + %a844 = alloca { ptr, i64, i64 }, align 16 %a847 = alloca { ptr, i64, i64 }, align 16 %a848 = alloca { ptr, i64, i64 }, align 16 - %a856 = alloca { ptr, i64, i64 }, align 16 + %a849 = alloca { ptr, i64, i64 }, align 16 + %a851 = 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 + %a857 = alloca { ptr, i64, i64 }, align 16 + %a858 = alloca { ptr, i64, i64 }, align 16 + %a859 = alloca { ptr, i64, i64 }, align 16 %a860 = alloca { ptr, i64, i64 }, align 16 + %a862 = alloca { ptr, i64, i64 }, align 16 %a863 = alloca { ptr, i64, i64 }, align 16 %a864 = alloca { ptr, i64, i64 }, align 16 %a865 = alloca { ptr, i64, i64 }, align 16 - %a867 = alloca { ptr, i64, i64 }, align 16 - %a868 = alloca { ptr, i64, i64 }, align 16 - %a869 = alloca { ptr, i64, i64 }, align 16 + %a870 = 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 + %a874 = 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 %a879 = alloca { ptr, i64, i64 }, align 16 - %a880 = alloca { ptr, i64, i64 }, align 16 %a881 = 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 - %a890 = alloca { ptr, i64, i64 }, align 16 - %a892 = alloca { ptr, i64, i64 }, align 16 - %a893 = alloca { ptr, i64, i64 }, align 16 - %a894 = alloca { ptr, i64, i64 }, align 16 - %a902 = alloca { ptr, i64, i64 }, align 16 - %a903 = alloca { ptr, i64, i64 }, align 16 - %a904 = alloca { ptr, i64, i64 }, align 16 - %a907 = alloca { ptr, i64, i64 }, align 16 - %a911 = alloca { ptr, i64, i64 }, align 16 - %a912 = alloca { ptr, i64, i64 }, align 16 - %a913 = alloca { ptr, i64, i64 }, align 16 - %a915 = alloca { ptr, i64, i64 }, align 16 - %a916 = alloca { ptr, i64, i64 }, align 16 - %a917 = 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 - %a924 = alloca { ptr, i64, i64 }, align 16 + %a888 = alloca %S.ast.Type, align 16 + %a889 = alloca %S.ast.Type, align 16 + %a897 = alloca { ptr, i64, i64 }, align 16 + %a898 = alloca { ptr, i64, i64 }, align 16 + %a922 = alloca %S.gen.Val, align 16 + %a923 = alloca %S.ast.Type, align 16 %a925 = alloca { ptr, i64, i64 }, align 16 %a926 = alloca { ptr, i64, i64 }, align 16 - %a934 = alloca { ptr, i64, i64 }, align 16 - %a935 = alloca { ptr, i64, i64 }, align 16 + %a928 = alloca %S.gen.Val, align 16 + %a929 = alloca { ptr, i64, i64 }, align 16 %a936 = alloca { ptr, i64, i64 }, align 16 - %a939 = alloca { ptr, i64, i64 }, align 16 + %a937 = alloca { ptr, i64, i64 }, align 16 + %a938 = alloca { ptr, i64, i64 }, align 16 + %a940 = alloca { ptr, i64, i64 }, align 16 + %a941 = alloca { ptr, i64, i64 }, align 16 %a942 = alloca { ptr, i64, i64 }, align 16 %a943 = alloca { ptr, i64, i64 }, align 16 - %a944 = alloca { ptr, i64, i64 }, align 16 %a946 = alloca { ptr, i64, i64 }, align 16 %a947 = alloca { ptr, i64, i64 }, align 16 %a948 = alloca { ptr, i64, i64 }, align 16 + %a949 = 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 + %a954 = alloca { ptr, i64, i64 }, align 16 + %a959 = alloca { ptr, i64, i64 }, align 16 %a960 = alloca { ptr, i64, i64 }, align 16 %a961 = alloca { ptr, i64, i64 }, align 16 %a962 = alloca { ptr, i64, i64 }, align 16 + %a963 = alloca { ptr, i64, i64 }, align 16 %a965 = 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 %a970 = alloca { ptr, i64, i64 }, align 16 + %a974 = alloca { ptr, i64, i64 }, align 16 %a975 = alloca { ptr, i64, i64 }, align 16 - %a989 = alloca { ptr, i64, i64 }, align 16 + %a983 = alloca { ptr, i64, i64 }, align 16 + %a987 = 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 + %a994 = alloca { ptr, i64, i64 }, align 16 + %a995 = alloca { ptr, i64, i64 }, align 16 + %a996 = alloca { ptr, i64, i64 }, align 16 + %a997 = alloca { ptr, i64, i64 }, align 16 + %a1000 = alloca { ptr, i64, i64 }, align 16 + %a1001 = alloca { ptr, i64, i64 }, align 16 + %a1005 = 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 + %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 - %a1016 = alloca { ptr, i64, i64 }, align 16 %a1018 = alloca { ptr, i64, i64 }, align 16 - %a1039 = alloca { ptr, i64, i64 }, align 16 + %a1019 = alloca { ptr, i64, i64 }, align 16 + %a1020 = alloca { ptr, i64, i64 }, align 16 + %a1021 = alloca { ptr, i64, i64 }, align 16 + %a1023 = 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 + %a1034 = alloca { ptr, i64, i64 }, align 16 + %a1035 = alloca { ptr, i64, i64 }, align 16 + %a1036 = alloca { ptr, i64, i64 }, align 16 + %a1037 = alloca { ptr, i64, i64 }, align 16 %a1040 = alloca { ptr, i64, i64 }, align 16 - %a1042 = alloca { ptr, i64, i64 }, align 16 + %a1041 = alloca { ptr, i64, i64 }, align 16 + %a1045 = alloca { ptr, i64, i64 }, align 16 %a1046 = alloca { ptr, i64, i64 }, align 16 + %a1047 = alloca { ptr, i64, i64 }, align 16 %a1049 = alloca { ptr, i64, i64 }, align 16 %a1050 = alloca { ptr, i64, i64 }, align 16 %a1051 = alloca { ptr, i64, i64 }, align 16 - %a1053 = alloca { ptr, i64, i64 }, align 16 - %a1054 = alloca { ptr, i64, i64 }, align 16 + %a1052 = alloca { ptr, i64, i64 }, align 16 %a1055 = alloca { ptr, i64, i64 }, align 16 + %a1056 = alloca { ptr, i64, i64 }, align 16 + %a1057 = alloca { ptr, i64, i64 }, align 16 %a1058 = alloca { ptr, i64, i64 }, align 16 + %a1059 = alloca { ptr, i64, i64 }, align 16 %a1061 = alloca { ptr, i64, i64 }, align 16 %a1062 = alloca { ptr, i64, i64 }, align 16 %a1063 = 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 - %a1070 = alloca { ptr, i64, i64 }, align 16 - %a1071 = alloca { ptr, i64, i64 }, align 16 + %a1064 = alloca { ptr, i64, i64 }, align 16 %a1072 = alloca { ptr, i64, i64 }, align 16 + %a1073 = alloca { ptr, i64, i64 }, align 16 + %a1074 = alloca { ptr, i64, i64 }, align 16 %a1075 = alloca { ptr, i64, i64 }, align 16 %a1078 = alloca { ptr, i64, i64 }, align 16 %a1079 = alloca { ptr, i64, i64 }, align 16 - %a1080 = alloca { ptr, i64, i64 }, align 16 %a1082 = alloca { ptr, i64, i64 }, align 16 %a1083 = alloca { ptr, i64, i64 }, align 16 %a1084 = alloca { ptr, i64, i64 }, align 16 + %a1086 = alloca { ptr, i64, i64 }, align 16 %a1087 = alloca { ptr, i64, i64 }, align 16 %a1088 = alloca { ptr, i64, i64 }, align 16 %a1089 = 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 + %a1095 = alloca { ptr, i64, i64 }, align 16 %a1097 = alloca { ptr, i64, i64 }, align 16 %a1098 = alloca { ptr, i64, i64 }, align 16 %a1099 = alloca { ptr, i64, i64 }, align 16 - %a1101 = alloca { ptr, i64, i64 }, align 16 - %a1102 = alloca { ptr, i64, i64 }, align 16 + %a1100 = alloca { ptr, i64, i64 }, align 16 %a1103 = 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 - %a1107 = alloca { ptr, i64, i64 }, align 16 - %a1108 = alloca { ptr, i64, i64 }, align 16 - %a1111 = alloca { ptr, i64, i64 }, align 16 - %a1112 = alloca { ptr, i64, i64 }, align 16 - %a1113 = 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 %a1120 = alloca { ptr, i64, i64 }, align 16 - %a1121 = alloca { ptr, i64, i64 }, align 16 - %a1122 = alloca { ptr, i64, i64 }, align 16 - %a1128 = alloca { ptr, i64, i64 }, align 16 - %a1129 = alloca { ptr, i64, i64 }, align 16 - %a1130 = alloca { ptr, i64, i64 }, align 16 - %a1132 = alloca { ptr, i64, i64 }, align 16 - %a1133 = alloca { ptr, i64, i64 }, align 16 %a1134 = alloca { ptr, i64, i64 }, align 16 - %a1137 = alloca { ptr, i64, i64 }, align 16 - %a1138 = alloca { ptr, i64, i64 }, align 16 - %a1139 = alloca { ptr, i64, i64 }, align 16 - %a1142 = alloca { ptr, i64, i64 }, align 16 - %a1145 = alloca { ptr, i64, i64 }, align 16 - %a1148 = alloca { ptr, i64, i64 }, align 16 - %a1149 = alloca { ptr, i64, i64 }, align 16 - %a1150 = alloca { ptr, i64, i64 }, align 16 - %a1152 = alloca { ptr, i64, i64 }, align 16 - %a1153 = alloca { ptr, i64, i64 }, align 16 - %a1154 = 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 - %a1161 = alloca { ptr, i64, i64 }, align 16 + %a1135 = alloca { ptr, i64, i64 }, align 16 + %a1159 = alloca %S.gen.Val, align 16 + %a1160 = alloca %S.ast.Type, align 16 %a1162 = alloca { ptr, i64, i64 }, align 16 %a1163 = alloca { ptr, i64, i64 }, align 16 - %a1168 = alloca { ptr, i64, i64 }, align 16 - %a1169 = alloca { ptr, i64, i64 }, align 16 - %a1170 = alloca { ptr, i64, i64 }, align 16 - %a1172 = alloca { ptr, i64, i64 }, align 16 - %a1173 = alloca { ptr, i64, i64 }, align 16 - %a1174 = alloca { ptr, i64, i64 }, align 16 - %a1179 = alloca { ptr, i64, i64 }, align 16 - %a1183 = alloca { ptr, i64, i64 }, align 16 - %a1187 = alloca { ptr, i64, i64 }, align 16 + %a1165 = alloca %S.gen.Val, align 16 + %a1166 = alloca { ptr, i64, i64 }, align 16 + %a1186 = alloca %S.gen.Val, align 16 + %a1187 = alloca %S.ast.Type, align 16 + %a1189 = alloca { ptr, i64, i64 }, align 16 %a1190 = alloca { ptr, i64, i64 }, align 16 - %a1191 = alloca { ptr, i64, i64 }, align 16 - %a1192 = alloca { ptr, i64, i64 }, align 16 - %a1194 = alloca { ptr, i64, i64 }, align 16 - %a1195 = alloca { ptr, i64, i64 }, align 16 - %a1196 = alloca { ptr, i64, i64 }, align 16 - %a1199 = alloca { ptr, i64, i64 }, align 16 + %a1192 = alloca %S.gen.Val, align 16 + %a1193 = alloca { ptr, i64, i64 }, align 16 + %a1197 = alloca { ptr, i64, i64 }, align 16 %a1200 = alloca { ptr, i64, i64 }, align 16 %a1201 = alloca { ptr, i64, i64 }, align 16 - %a1203 = alloca { ptr, i64, i64 }, align 16 + %a1202 = alloca { ptr, i64, i64 }, align 16 %a1204 = alloca { ptr, i64, i64 }, align 16 %a1205 = alloca { ptr, i64, i64 }, align 16 - %a1213 = alloca { ptr, i64, i64 }, align 16 + %a1206 = alloca { ptr, i64, i64 }, align 16 + %a1207 = alloca { ptr, i64, i64 }, align 16 + %a1210 = alloca { ptr, i64, i64 }, align 16 + %a1211 = alloca { ptr, i64, i64 }, align 16 %a1214 = alloca { ptr, i64, i64 }, align 16 %a1215 = alloca { ptr, i64, i64 }, align 16 + %a1216 = alloca { ptr, i64, i64 }, align 16 %a1218 = alloca { ptr, i64, i64 }, align 16 + %a1219 = alloca { ptr, i64, i64 }, align 16 + %a1220 = 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 + %a1224 = alloca { ptr, i64, i64 }, align 16 %a1225 = alloca { ptr, i64, i64 }, align 16 %a1226 = alloca { ptr, i64, i64 }, align 16 %a1227 = alloca { ptr, i64, i64 }, align 16 %a1230 = alloca { ptr, i64, i64 }, align 16 %a1231 = alloca { ptr, i64, i64 }, align 16 - %a1232 = alloca { ptr, i64, i64 }, align 16 %a1234 = alloca { ptr, i64, i64 }, align 16 %a1235 = alloca { ptr, i64, i64 }, align 16 %a1236 = alloca { ptr, i64, i64 }, align 16 + %a1238 = alloca { ptr, i64, i64 }, align 16 + %a1239 = 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 - %a1254 = alloca { ptr, i64, i64 }, align 16 - %a1255 = alloca { ptr, i64, i64 }, align 16 + %a1247 = alloca { ptr, i64, i64 }, align 16 + %a1250 = alloca { ptr, i64, i64 }, align 16 + %a1251 = alloca { ptr, i64, i64 }, align 16 %a1256 = alloca { ptr, i64, i64 }, align 16 - %a1259 = alloca { ptr, i64, i64 }, align 16 + %a1257 = alloca { ptr, i64, i64 }, align 16 + %a1258 = alloca { ptr, i64, i64 }, align 16 %a1260 = alloca { ptr, i64, i64 }, align 16 %a1261 = alloca { ptr, i64, i64 }, align 16 - %a1264 = alloca { ptr, i64, i64 }, align 16 - %a1276 = alloca %S.ast.Type, align 16 - %a1277 = alloca %S.ast.Type, align 16 - %a1282 = alloca { ptr, i64, i64 }, align 16 - %a1283 = alloca { ptr, i64, i64 }, align 16 + %a1262 = alloca { ptr, i64, i64 }, align 16 + %a1263 = alloca { ptr, i64, i64 }, align 16 + %a1266 = alloca { ptr, i64, i64 }, align 16 + %a1267 = alloca { ptr, i64, i64 }, align 16 + %a1268 = alloca { ptr, i64, i64 }, align 16 + %a1269 = 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 + %a1275 = alloca { ptr, i64, i64 }, align 16 + %a1276 = alloca { ptr, i64, i64 }, align 16 + %a1278 = alloca { ptr, i64, i64 }, align 16 + %a1279 = alloca { ptr, i64, i64 }, align 16 + %a1280 = alloca { ptr, i64, i64 }, align 16 + %a1281 = alloca { ptr, i64, i64 }, align 16 + %a1284 = alloca { ptr, i64, i64 }, align 16 + %a1285 = alloca { ptr, i64, i64 }, align 16 + %a1286 = alloca { ptr, i64, i64 }, align 16 + %a1287 = 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 - %a1298 = alloca { ptr, i64, i64 }, align 16 + %a1292 = alloca { ptr, i64, i64 }, align 16 + %a1295 = alloca { ptr, i64, i64 }, align 16 + %a1296 = alloca { ptr, i64, i64 }, align 16 + %a1297 = alloca { ptr, i64, i64 }, align 16 %a1299 = alloca { ptr, i64, i64 }, align 16 - %a1304 = alloca { ptr, i64, i64 }, align 16 + %a1300 = alloca { ptr, i64, i64 }, align 16 + %a1301 = alloca { ptr, i64, i64 }, align 16 + %a1302 = alloca { ptr, i64, i64 }, align 16 %a1305 = alloca { ptr, i64, i64 }, align 16 - %a1314 = alloca { ptr, i64, i64 }, align 16 + %a1306 = alloca { ptr, i64, i64 }, align 16 + %a1307 = alloca { ptr, i64, i64 }, align 16 + %a1308 = alloca { ptr, i64, i64 }, align 16 + %a1311 = alloca { ptr, i64, i64 }, align 16 + %a1312 = alloca { ptr, i64, i64 }, align 16 + %a1315 = alloca { ptr, i64, i64 }, align 16 %a1318 = alloca { ptr, i64, i64 }, align 16 + %a1319 = alloca { ptr, i64, i64 }, align 16 + %a1320 = alloca { ptr, i64, i64 }, align 16 %a1322 = alloca { ptr, i64, i64 }, align 16 + %a1323 = alloca { ptr, i64, i64 }, align 16 + %a1324 = 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 + %a1328 = alloca { ptr, i64, i64 }, align 16 %a1329 = alloca { ptr, i64, i64 }, align 16 %a1330 = alloca { ptr, i64, i64 }, align 16 %a1331 = alloca { ptr, i64, i64 }, align 16 + %a1333 = alloca { ptr, i64, i64 }, align 16 %a1334 = alloca { ptr, i64, i64 }, align 16 %a1335 = alloca { ptr, i64, i64 }, align 16 %a1336 = alloca { ptr, i64, i64 }, align 16 - %a1338 = alloca { ptr, i64, i64 }, align 16 - %a1339 = alloca { ptr, i64, i64 }, align 16 - %a1340 = alloca { ptr, i64, i64 }, align 16 + %a1341 = alloca { ptr, i64, i64 }, align 16 + %a1342 = alloca { ptr, i64, i64 }, align 16 + %a1343 = alloca { ptr, i64, i64 }, align 16 + %a1344 = alloca { ptr, i64, i64 }, align 16 %a1345 = alloca { ptr, i64, i64 }, align 16 - %a1346 = alloca { ptr, i64, i64 }, align 16 %a1347 = alloca { ptr, i64, i64 }, align 16 + %a1348 = alloca { ptr, i64, i64 }, align 16 %a1349 = alloca { ptr, i64, i64 }, align 16 %a1350 = alloca { ptr, i64, i64 }, align 16 - %a1351 = alloca { ptr, i64, i64 }, align 16 - %a1354 = alloca { ptr, i64, i64 }, align 16 - %a1355 = alloca { ptr, i64, i64 }, align 16 + %a1352 = alloca { ptr, i64, i64 }, align 16 %a1356 = alloca { ptr, i64, i64 }, align 16 - %a1358 = alloca { ptr, i64, i64 }, align 16 - %a1359 = alloca { ptr, i64, i64 }, align 16 %a1360 = alloca { ptr, i64, i64 }, align 16 + %a1364 = alloca { ptr, i64, i64 }, align 16 %a1367 = alloca { ptr, i64, i64 }, align 16 %a1368 = alloca { ptr, i64, i64 }, align 16 %a1369 = alloca { ptr, i64, i64 }, align 16 %a1371 = alloca { ptr, i64, i64 }, align 16 %a1372 = alloca { ptr, i64, i64 }, align 16 %a1373 = alloca { ptr, i64, i64 }, align 16 + %a1374 = alloca { ptr, i64, i64 }, align 16 + %a1377 = alloca { ptr, i64, i64 }, align 16 + %a1378 = alloca { ptr, i64, i64 }, align 16 + %a1379 = alloca { ptr, i64, i64 }, align 16 + %a1380 = alloca { ptr, i64, i64 }, align 16 + %a1382 = alloca { ptr, i64, i64 }, align 16 + %a1383 = alloca { ptr, i64, i64 }, align 16 + %a1384 = alloca { ptr, i64, i64 }, align 16 + %a1385 = alloca { ptr, i64, i64 }, align 16 + %a1393 = alloca { ptr, i64, i64 }, align 16 + %a1394 = alloca { ptr, i64, i64 }, align 16 + %a1395 = alloca { ptr, i64, i64 }, align 16 + %a1396 = alloca { ptr, i64, i64 }, align 16 + %a1399 = alloca { ptr, i64, i64 }, align 16 + %a1400 = alloca { ptr, i64, i64 }, align 16 + %a1403 = alloca { ptr, i64, i64 }, align 16 + %a1404 = alloca { ptr, i64, i64 }, align 16 + %a1405 = alloca { ptr, i64, i64 }, align 16 + %a1407 = alloca { ptr, i64, i64 }, align 16 + %a1408 = alloca { ptr, i64, i64 }, align 16 + %a1409 = alloca { ptr, i64, i64 }, align 16 + %a1410 = alloca { ptr, i64, i64 }, align 16 + %a1413 = alloca { ptr, i64, i64 }, align 16 + %a1414 = alloca { ptr, i64, i64 }, align 16 + %a1415 = alloca { ptr, i64, i64 }, align 16 + %a1416 = alloca { ptr, i64, i64 }, align 16 + %a1418 = alloca { ptr, i64, i64 }, align 16 + %a1419 = alloca { ptr, i64, i64 }, align 16 + %a1420 = alloca { ptr, i64, i64 }, align 16 + %a1421 = alloca { ptr, i64, i64 }, align 16 + %a1425 = alloca { ptr, i64, i64 }, align 16 + %a1426 = alloca { ptr, i64, i64 }, align 16 + %a1427 = alloca { ptr, i64, i64 }, align 16 + %a1429 = 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 + %a1440 = alloca { ptr, i64, i64 }, align 16 + %a1441 = alloca { ptr, i64, i64 }, align 16 + %a1442 = alloca { ptr, i64, i64 }, align 16 + %a1443 = alloca { ptr, i64, i64 }, align 16 + %a1446 = alloca { ptr, i64, i64 }, align 16 + %a1447 = alloca { ptr, i64, i64 }, align 16 + %a1448 = alloca { ptr, i64, i64 }, align 16 + %a1449 = alloca { ptr, i64, i64 }, align 16 + %a1450 = alloca { ptr, i64, i64 }, align 16 + %a1451 = alloca { ptr, i64, i64 }, align 16 + %a1454 = alloca { ptr, i64, i64 }, align 16 + %a1455 = alloca { ptr, i64, i64 }, align 16 + %a1467 = alloca %S.ast.Type, align 16 + %a1468 = alloca %S.ast.Type, align 16 + %a1473 = alloca { ptr, i64, i64 }, align 16 + %a1474 = alloca { ptr, i64, i64 }, align 16 + %a1481 = alloca { ptr, i64, i64 }, align 16 + %a1482 = alloca { ptr, i64, i64 }, align 16 + %a1484 = alloca { ptr, i64, i64 }, align 16 + %a1489 = alloca { ptr, i64, i64 }, align 16 + %a1490 = alloca { ptr, i64, i64 }, align 16 + %a1495 = alloca { ptr, i64, i64 }, align 16 + %a1496 = alloca { ptr, i64, i64 }, align 16 + %a1505 = alloca { ptr, i64, i64 }, align 16 + %a1509 = alloca { ptr, i64, i64 }, align 16 + %a1513 = alloca { ptr, i64, i64 }, align 16 + %a1516 = alloca { ptr, i64, i64 }, align 16 + %a1517 = alloca { ptr, i64, i64 }, align 16 + %a1518 = alloca { ptr, i64, i64 }, align 16 + %a1520 = alloca { ptr, i64, i64 }, align 16 + %a1521 = alloca { ptr, i64, i64 }, align 16 + %a1522 = alloca { ptr, i64, i64 }, align 16 + %a1523 = alloca { ptr, i64, i64 }, align 16 + %a1526 = alloca { ptr, i64, i64 }, align 16 + %a1527 = alloca { ptr, i64, i64 }, align 16 + %a1528 = alloca { ptr, i64, i64 }, align 16 + %a1529 = alloca { ptr, i64, i64 }, align 16 + %a1531 = alloca { ptr, i64, i64 }, align 16 + %a1532 = alloca { ptr, i64, i64 }, align 16 + %a1533 = alloca { ptr, i64, i64 }, align 16 + %a1534 = alloca { ptr, i64, i64 }, align 16 + %a1539 = alloca { ptr, i64, i64 }, align 16 + %a1540 = alloca { ptr, i64, i64 }, align 16 + %a1541 = alloca { ptr, i64, i64 }, align 16 + %a1542 = alloca { ptr, i64, i64 }, align 16 + %a1543 = alloca { ptr, i64, i64 }, align 16 + %a1545 = 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 + %a1551 = alloca { ptr, i64, i64 }, align 16 + %a1552 = alloca { ptr, i64, i64 }, align 16 + %a1553 = alloca { ptr, i64, i64 }, align 16 + %a1554 = alloca { ptr, i64, i64 }, align 16 + %a1556 = 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 + %a1561 = alloca { ptr, i64, i64 }, align 16 + %a1567 = alloca { ptr, i64, i64 }, align 16 + %a1568 = alloca { ptr, i64, i64 }, align 16 + %a1569 = alloca { ptr, i64, i64 }, align 16 + %a1571 = alloca { ptr, i64, i64 }, align 16 + %a1572 = alloca { ptr, i64, i64 }, align 16 + %a1573 = alloca { ptr, i64, i64 }, align 16 + %a1574 = alloca { ptr, i64, i64 }, align 16 + %a1576 = 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 @@ -72536,11 +86496,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 %range8008, label %inrange8009 -range8008: - call void @finch_panic_index(ptr @.str.5272, i64 4779, i64 0, i64 %t7) + br i1 %t8, label %range8458, label %inrange8459 +range8458: + call void @finch_panic_index(ptr @.str.5460, i64 5169, i64 0, i64 %t7) unreachable -inrange8009: +inrange8459: %t9 = extractvalue { ptr, i64, i64 } %t6, 0 %t10 = getelementptr inbounds %S.ast.Type, ptr %t9, i64 0 %t11 = load %S.ast.Type, ptr %t10 @@ -72560,1599 +86520,2505 @@ inrange8009: 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.5273, i64 46, i64 0 }, ptr %a29 + store { ptr, i64, i64 } { ptr @.str.5461, 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.5274, i64 14, i64 0 }, ptr %a34 + store { ptr, i64, i64 } { ptr @.str.5462, 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.5275, 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 %then8010, label %endif8012 -then8010: - %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) + store { ptr, i64, i64 } %t31, ptr %a35 + call void @finch_str_drop(ptr %a35) + %t36 = load { ptr, i64, i64 }, ptr %a32 + %t37 = call { ptr, i64, i64 } @finch.gen.op(ptr %t26, { ptr, i64, i64 } %t36) + store { ptr, i64, i64 } %t36, ptr %a38 + call void @finch_str_drop(ptr %a38) + store { ptr, i64, i64 } %t37, ptr %a39 + %t40 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t40, ptr %a41 + store { ptr, i64, i64 } { ptr @.str.5463, 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 %then8460, label %endif8462 +then8460: %t45 = load ptr, ptr %a1 - %t46 = load ptr, ptr %a1 + %t46 = load %S.ast.Node, ptr %a2 + call void @finch.gen.need(ptr %t45, %S.ast.Node %t46, i64 1) %t47 = load ptr, ptr %a1 - %t48 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t49 = load { ptr, i64, i64 }, ptr %t48 - %t50 = extractvalue { ptr, i64, i64 } %t49, 1 - %t51 = icmp uge i64 1, %t50 - br i1 %t51, label %range8013, label %inrange8014 -range8013: - call void @finch_panic_index(ptr @.str.5276, i64 4785, i64 1, i64 %t50) + %t48 = load ptr, ptr %a1 + %t49 = load ptr, ptr %a1 + %t50 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t51 = load { ptr, i64, i64 }, ptr %t50 + %t52 = extractvalue { ptr, i64, i64 } %t51, 1 + %t53 = icmp uge i64 1, %t52 + br i1 %t53, label %range8463, label %inrange8464 +range8463: + call void @finch_panic_index(ptr @.str.5464, i64 5175, i64 1, i64 %t52) unreachable -inrange8014: - %t52 = extractvalue { ptr, i64, i64 } %t49, 0 - %t53 = getelementptr inbounds %S.ast.Node, ptr %t52, i64 1 - %t54 = load %S.ast.Node, ptr %t53 - %t55 = load %S.ast.Type, ptr %a15 - %t56 = call %S.gen.Val @finch.gen.exprWant(ptr %t47, %S.ast.Node %t54, %S.ast.Type %t55) +inrange8464: + %t54 = extractvalue { ptr, i64, i64 } %t51, 0 + %t55 = getelementptr inbounds %S.ast.Node, ptr %t54, i64 1 + %t56 = load %S.ast.Node, ptr %t55 %t57 = load %S.ast.Type, ptr %a15 - %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 1, %t60 - br i1 %t61, label %range8015, label %inrange8016 -range8015: - call void @finch_panic_index(ptr @.str.5277, i64 4785, i64 1, i64 %t60) + %t58 = call %S.gen.Val @finch.gen.exprWant(ptr %t49, %S.ast.Node %t56, %S.ast.Type %t57) + %t59 = load %S.ast.Type, ptr %a15 + %t60 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t61 = load { ptr, i64, i64 }, ptr %t60 + %t62 = extractvalue { ptr, i64, i64 } %t61, 1 + %t63 = icmp uge i64 1, %t62 + br i1 %t63, label %range8465, label %inrange8466 +range8465: + call void @finch_panic_index(ptr @.str.5465, i64 5175, i64 1, i64 %t62) unreachable -inrange8016: - %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.5278, 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.5279, i64 3, i64 0 }, { ptr, i64, i64 } %t69) - store { ptr, i64, i64 } %t70, ptr %a71 +inrange8466: + %t64 = extractvalue { ptr, i64, i64 } %t61, 0 + %t65 = getelementptr inbounds %S.ast.Node, ptr %t64, i64 1 + %t66 = load %S.ast.Node, ptr %t65 + %t67 = call %S.gen.Val @finch.gen.coerce(ptr %t48, %S.gen.Val %t58, %S.ast.Type %t59, %S.ast.Node %t66, { ptr, i64, i64 } { ptr @.str.5466, i64 11, i64 0 }) + store %S.gen.Val %t58, ptr %a68 + call void @finch.drop.S_gen_Val(ptr %a68) + %t69 = call { ptr, i64, i64 } @finch.gen.own(ptr %t47, %S.gen.Val %t67) + store %S.gen.Val %t67, ptr %a70 + call void @finch.drop.S_gen_Val(ptr %a70) + store { ptr, i64, i64 } %t69, ptr %a71 %t72 = load ptr, ptr %a1 - %t73 = load { ptr, i64, i64 }, ptr %a71 - store { ptr, i64, i64 } { ptr @.str.5280, 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.5281, i64 3, i64 0 }, ptr %a80 + %t73 = load { ptr, i64, i64 }, ptr %a39 + %t74 = call { ptr, i64, i64 } @finch.gen.load(ptr %t72, { ptr, i64, i64 } { ptr @.str.5467, i64 3, i64 0 }, { ptr, i64, i64 } %t73) + store { ptr, i64, i64 } %t74, ptr %a75 + %t76 = load ptr, ptr %a1 + %t77 = load { ptr, i64, i64 }, ptr %a75 + store { ptr, i64, i64 } { ptr @.str.5468, i64 8, 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 - %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.5282, 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.5283, 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 - store { ptr, i64, i64 } %t93, ptr %a96 - store { ptr, i64, i64 } %t94, 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 %a100 - store { ptr, i64, i64 } { ptr @.str.5284, 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 - %t104 = load %S.ast.Type, ptr %a15 - %t105 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t103, %S.ast.Type %t104) - store { ptr, i64, i64 } %t102, 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.5285, 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.5286, 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.5287, 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.5288, 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 - store { ptr, i64, i64 } %t130, ptr %a133 - store { ptr, i64, i64 } %t131, ptr %a134 - 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.5289, i64 6, i64 0 }, ptr %a138 + store { ptr, i64, i64 } %t81, ptr %a83 + store { ptr, i64, i64 } { ptr @.str.5469, i64 3, i64 0 }, ptr %a84 + call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84) + store { ptr, i64, i64 } %t81, ptr %a85 + call void @finch_str_drop(ptr %a85) + %t86 = load { ptr, i64, i64 }, ptr %a82 + %t87 = call { ptr, i64, i64 } @finch.gen.op(ptr %t76, { ptr, i64, i64 } %t86) + store { ptr, i64, i64 } %t86, ptr %a88 + call void @finch_str_drop(ptr %a88) + store { ptr, i64, i64 } %t87, ptr %a89 + %t90 = load ptr, ptr %a1 + %t91 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } { ptr @.str.5470, i64 33, 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.5471, i64 6, i64 0 }, ptr %a98 + call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) + store { ptr, i64, i64 } %t95, ptr %a99 + call void @finch_str_drop(ptr %a99) + %t100 = load { ptr, i64, i64 }, ptr %a96 + %t101 = load { ptr, i64, i64 }, ptr %a89 + store { ptr, i64, i64 } %t100, ptr %a103 + store { ptr, i64, i64 } %t101, ptr %a104 + call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104) + store { ptr, i64, i64 } %t100, ptr %a105 + call void @finch_str_drop(ptr %a105) + %t106 = load { ptr, i64, i64 }, ptr %a102 + store { ptr, i64, i64 } %t106, ptr %a108 + store { ptr, i64, i64 } { ptr @.str.5472, i64 6, i64 0 }, ptr %a109 + call void @finch_str_concat(ptr %a107, ptr %a108, ptr %a109) + store { ptr, i64, i64 } %t106, ptr %a110 + call void @finch_str_drop(ptr %a110) + %t111 = load { ptr, i64, i64 }, ptr %a107 + %t112 = load ptr, ptr %a1 + %t113 = load %S.ast.Type, ptr %a15 + %t114 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t112, %S.ast.Type %t113) + store { ptr, i64, i64 } %t111, ptr %a116 + store { ptr, i64, i64 } %t114, ptr %a117 + call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) + store { ptr, i64, i64 } %t111, ptr %a118 + call void @finch_str_drop(ptr %a118) + store { ptr, i64, i64 } %t114, ptr %a119 + call void @finch_str_drop(ptr %a119) + %t120 = load { ptr, i64, i64 }, ptr %a115 + store { ptr, i64, i64 } %t120, ptr %a122 + store { ptr, i64, i64 } { ptr @.str.5473, i64 1, i64 0 }, ptr %a123 + call void @finch_str_concat(ptr %a121, ptr %a122, ptr %a123) + store { ptr, i64, i64 } %t120, ptr %a124 + call void @finch_str_drop(ptr %a124) + %t125 = load { ptr, i64, i64 }, ptr %a121 + call void @finch.gen.emit(ptr %t90, { ptr, i64, i64 } %t125) + store { ptr, i64, i64 } %t125, ptr %a126 + call void @finch_str_drop(ptr %a126) + %t127 = load ptr, ptr %a1 + %t128 = load { ptr, i64, i64 }, ptr %a3 + %t129 = call { ptr, i64, i64 } @finch.gen.load(ptr %t127, { ptr, i64, i64 } { ptr @.str.5474, i64 3, i64 0 }, { ptr, i64, i64 } %t128) + store { ptr, i64, i64 } %t129, ptr %a130 + %t131 = load ptr, ptr %a1 + %t132 = load { ptr, i64, i64 }, ptr %a19 + %t133 = load { ptr, i64, i64 }, ptr %a71 + %t134 = load ptr, ptr %a1 + %t135 = load { ptr, i64, i64 }, ptr %a19 + store { ptr, i64, i64 } { ptr @.str.5475, i64 23, 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 - %t140 = load { ptr, i64, i64 }, ptr %a71 - store { ptr, i64, i64 } %t139, ptr %a142 - store { ptr, i64, i64 } %t140, ptr %a143 - call void @finch_str_concat(ptr %a141, ptr %a142, ptr %a143) - %t144 = load { ptr, i64, i64 }, ptr %a141 - %t145 = call { ptr, i64, i64 } @finch.gen.op(ptr %t121, { ptr, i64, i64 } %t144) - call void @finch.gen.store(ptr %t118, { ptr, i64, i64 } %t119, { ptr, i64, i64 } %t120, { ptr, i64, i64 } %t145) - %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.5290, 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.5291, i64 4, i64 0 }) - %t150 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t149, 1 - ret %S.gen.Val %t150 -endif8012: - %t151 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t151, ptr %a152 - store { ptr, i64, i64 } { ptr @.str.5292, 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 %then8017, label %endif8019 -then8017: - %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.5293, 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.5294, 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.5295, 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.5296, i64 23, i64 0 }, %S.ast.Node %t174) + store { ptr, i64, i64 } %t139, ptr %a141 + store { ptr, i64, i64 } { ptr @.str.5476, i64 6, i64 0 }, ptr %a142 + call void @finch_str_concat(ptr %a140, ptr %a141, ptr %a142) + store { ptr, i64, i64 } %t139, ptr %a143 + call void @finch_str_drop(ptr %a143) + %t144 = load { ptr, i64, i64 }, ptr %a140 + %t145 = load { ptr, i64, i64 }, ptr %a130 + store { ptr, i64, i64 } %t144, ptr %a147 + store { ptr, i64, i64 } %t145, ptr %a148 + call void @finch_str_concat(ptr %a146, ptr %a147, ptr %a148) + store { ptr, i64, i64 } %t144, ptr %a149 + call void @finch_str_drop(ptr %a149) + %t150 = load { ptr, i64, i64 }, ptr %a146 + store { ptr, i64, i64 } %t150, ptr %a152 + store { ptr, i64, i64 } { ptr @.str.5477, i64 6, i64 0 }, ptr %a153 + call void @finch_str_concat(ptr %a151, ptr %a152, ptr %a153) + store { ptr, i64, i64 } %t150, ptr %a154 + call void @finch_str_drop(ptr %a154) + %t155 = load { ptr, i64, i64 }, ptr %a151 + %t156 = load { ptr, i64, i64 }, ptr %a75 + store { ptr, i64, i64 } %t155, ptr %a158 + store { ptr, i64, i64 } %t156, ptr %a159 + call void @finch_str_concat(ptr %a157, ptr %a158, ptr %a159) + store { ptr, i64, i64 } %t155, ptr %a160 + call void @finch_str_drop(ptr %a160) + %t161 = load { ptr, i64, i64 }, ptr %a157 + %t162 = call { ptr, i64, i64 } @finch.gen.op(ptr %t134, { ptr, i64, i64 } %t161) + store { ptr, i64, i64 } %t161, ptr %a163 + call void @finch_str_drop(ptr %a163) + call void @finch.gen.store(ptr %t131, { ptr, i64, i64 } %t132, { ptr, i64, i64 } %t133, { ptr, i64, i64 } %t162) + store { ptr, i64, i64 } %t162, ptr %a164 + call void @finch_str_drop(ptr %a164) + %t165 = load ptr, ptr %a1 + %t166 = load { ptr, i64, i64 }, ptr %a89 + %t167 = load { ptr, i64, i64 }, ptr %a39 + call void @finch.gen.store(ptr %t165, { ptr, i64, i64 } { ptr @.str.5478, i64 3, i64 0 }, { ptr, i64, i64 } %t166, { ptr, i64, i64 } %t167) + %t168 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5479, i64 4, i64 0 }) + %t169 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t168, 1 + call void @finch_str_drop(ptr %a130) + call void @finch_str_drop(ptr %a89) + call void @finch_str_drop(ptr %a75) + call void @finch_str_drop(ptr %a71) + call void @finch_str_drop(ptr %a39) + call void @finch_str_drop(ptr %a25) + call void @finch_str_drop(ptr %a19) + call void @finch.drop.S_ast_Type(ptr %a15) + ret %S.gen.Val %t169 +endif8462: + %t170 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t170, ptr %a171 + store { ptr, i64, i64 } { ptr @.str.5480, i64 3, i64 0 }, ptr %a172 + %t173 = call i32 @finch_str_eq(ptr %a171, ptr %a172) + %t174 = icmp ne i32 %t173, 0 + br i1 %t174, label %then8467, label %endif8469 +then8467: %t175 = load ptr, ptr %a1 - %t176 = load { ptr, i64, i64 }, ptr %a161 - store { ptr, i64, i64 } { ptr @.str.5297, 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.5298, 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.5299, 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.5300, 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.5301, i64 6, i64 0 }, ptr %a201 + %t176 = load %S.ast.Node, ptr %a2 + call void @finch.gen.need(ptr %t175, %S.ast.Node %t176, i64 0) + %t177 = load ptr, ptr %a1 + %t178 = load { ptr, i64, i64 }, ptr %a39 + %t179 = call { ptr, i64, i64 } @finch.gen.load(ptr %t177, { ptr, i64, i64 } { ptr @.str.5481, i64 3, i64 0 }, { ptr, i64, i64 } %t178) + store { ptr, i64, i64 } %t179, ptr %a180 + %t181 = load ptr, ptr %a1 + %t182 = load ptr, ptr %a1 + %t183 = load { ptr, i64, i64 }, ptr %a180 + store { ptr, i64, i64 } { ptr @.str.5482, i64 12, 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.5483, i64 3, i64 0 }, ptr %a190 + call void @finch_str_concat(ptr %a188, ptr %a189, ptr %a190) + store { ptr, i64, i64 } %t187, ptr %a191 + call void @finch_str_drop(ptr %a191) + %t192 = load { ptr, i64, i64 }, ptr %a188 + %t193 = call { ptr, i64, i64 } @finch.gen.op(ptr %t182, { ptr, i64, i64 } %t192) + store { ptr, i64, i64 } %t192, ptr %a194 + call void @finch_str_drop(ptr %a194) + %t195 = load %S.ast.Node, ptr %a2 + call void @finch.gen.panicIf(ptr %t181, { ptr, i64, i64 } %t193, { ptr, i64, i64 } { ptr @.str.5484, i64 23, i64 0 }, %S.ast.Node %t195) + store { ptr, i64, i64 } %t193, ptr %a196 + call void @finch_str_drop(ptr %a196) + %t197 = load ptr, ptr %a1 + %t198 = load { ptr, i64, i64 }, ptr %a180 + store { ptr, i64, i64 } { ptr @.str.5485, i64 8, 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 - %t203 = load { ptr, i64, i64 }, ptr %a190 - store { ptr, i64, i64 } %t202, 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 } %t202, ptr %a204 + store { ptr, i64, i64 } { ptr @.str.5486, i64 3, i64 0 }, ptr %a205 + call void @finch_str_concat(ptr %a203, ptr %a204, ptr %a205) + store { ptr, i64, i64 } %t202, ptr %a206 + call void @finch_str_drop(ptr %a206) + %t207 = load { ptr, i64, i64 }, ptr %a203 + %t208 = call { ptr, i64, i64 } @finch.gen.op(ptr %t197, { ptr, i64, i64 } %t207) store { ptr, i64, i64 } %t207, ptr %a209 - store { ptr, i64, i64 } { ptr @.str.5302, 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 - store { ptr, i64, i64 } %t211, 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 { ptr, i64, i64 } @finch.gen.op(ptr %t193, { ptr, i64, i64 } %t216) - %t218 = call { ptr, i64, i64 } @finch.gen.load(ptr %t191, { ptr, i64, i64 } %t192, { ptr, i64, i64 } %t217) - store { ptr, i64, i64 } %t218, ptr %a219 - %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.5303, 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) - %t226 = load { ptr, i64, i64 }, ptr %a225 - %t227 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t226, 0 - %t228 = load %S.ast.Type, ptr %a15 - store %S.ast.Type %t228, ptr %a229 - call void @finch.copy.S_ast_Type(ptr %a230, ptr %a229) - %t231 = load %S.ast.Type, ptr %a230 - %t232 = insertvalue %S.gen.Val %t227, %S.ast.Type %t231, 1 - %t233 = load ptr, ptr %a1 - %t234 = load %S.ast.Type, ptr %a15 - %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 -endif8019: - %t237 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t237, ptr %a238 - store { ptr, i64, i64 } { ptr @.str.5304, 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 %then8020, label %endif8022 -then8020: - %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.5305, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5306, i64 1, i64 0 }, { ptr, i64, i64 } %t245) - %t246 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5307, i64 4, i64 0 }) - %t247 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t246, 1 - ret %S.gen.Val %t247 -endif8022: - %t248 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t248, ptr %a249 - store { ptr, i64, i64 } { ptr @.str.5308, 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.from8023 -logic.from8023: - br i1 %t252, label %logic.end8025, label %logic.rhs8024 -logic.rhs8024: - %t253 = load { ptr, i64, i64 }, ptr %a25 + call void @finch_str_drop(ptr %a209) + store { ptr, i64, i64 } %t208, ptr %a210 + %t211 = load ptr, ptr %a1 + %t212 = load { ptr, i64, i64 }, ptr %a3 + %t213 = call { ptr, i64, i64 } @finch.gen.load(ptr %t211, { ptr, i64, i64 } { ptr @.str.5487, i64 3, i64 0 }, { ptr, i64, i64 } %t212) + store { ptr, i64, i64 } %t213, ptr %a214 + %t215 = load ptr, ptr %a1 + %t216 = load { ptr, i64, i64 }, ptr %a19 + %t217 = load ptr, ptr %a1 + %t218 = load { ptr, i64, i64 }, ptr %a19 + store { ptr, i64, i64 } { ptr @.str.5488, i64 23, 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.5489, i64 6, i64 0 }, ptr %a225 + call void @finch_str_concat(ptr %a223, ptr %a224, ptr %a225) + store { ptr, i64, i64 } %t222, ptr %a226 + call void @finch_str_drop(ptr %a226) + %t227 = load { ptr, i64, i64 }, ptr %a223 + %t228 = load { ptr, i64, i64 }, ptr %a214 + store { ptr, i64, i64 } %t227, ptr %a230 + store { ptr, i64, i64 } %t228, ptr %a231 + call void @finch_str_concat(ptr %a229, ptr %a230, ptr %a231) + store { ptr, i64, i64 } %t227, ptr %a232 + call void @finch_str_drop(ptr %a232) + %t233 = load { ptr, i64, i64 }, ptr %a229 + store { ptr, i64, i64 } %t233, ptr %a235 + store { ptr, i64, i64 } { ptr @.str.5490, i64 6, i64 0 }, ptr %a236 + call void @finch_str_concat(ptr %a234, ptr %a235, ptr %a236) + store { ptr, i64, i64 } %t233, ptr %a237 + call void @finch_str_drop(ptr %a237) + %t238 = load { ptr, i64, i64 }, ptr %a234 + %t239 = load { ptr, i64, i64 }, ptr %a210 + store { ptr, i64, i64 } %t238, ptr %a241 + store { ptr, i64, i64 } %t239, ptr %a242 + call void @finch_str_concat(ptr %a240, ptr %a241, ptr %a242) + store { ptr, i64, i64 } %t238, ptr %a243 + call void @finch_str_drop(ptr %a243) + %t244 = load { ptr, i64, i64 }, ptr %a240 + %t245 = call { ptr, i64, i64 } @finch.gen.op(ptr %t217, { ptr, i64, i64 } %t244) + store { ptr, i64, i64 } %t244, ptr %a246 + call void @finch_str_drop(ptr %a246) + %t247 = call { ptr, i64, i64 } @finch.gen.load(ptr %t215, { ptr, i64, i64 } %t216, { ptr, i64, i64 } %t245) + store { ptr, i64, i64 } %t245, ptr %a248 + call void @finch_str_drop(ptr %a248) + store { ptr, i64, i64 } %t247, ptr %a249 + %t250 = load ptr, ptr %a1 + %t251 = load { ptr, i64, i64 }, ptr %a210 + %t252 = load { ptr, i64, i64 }, ptr %a39 + call void @finch.gen.store(ptr %t250, { ptr, i64, i64 } { ptr @.str.5491, i64 3, i64 0 }, { ptr, i64, i64 } %t251, { ptr, i64, i64 } %t252) + %t253 = load { ptr, i64, i64 }, ptr %a249 store { ptr, i64, i64 } %t253, ptr %a254 - store { ptr, i64, i64 } { ptr @.str.5309, 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.rend8026 -logic.rend8026: - br label %logic.end8025 -logic.end8025: - %t258 = phi i1 [ true, %logic.from8023 ], [ %t257, %logic.rend8026 ] - br i1 %t258, label %then8027, label %endif8029 -then8027: - %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) - %t261 = load ptr, ptr %a1 - %t262 = load ptr, ptr %a1 - %t263 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t264 = load { ptr, i64, i64 }, ptr %t263 - %t265 = extractvalue { ptr, i64, i64 } %t264, 1 - %t266 = icmp uge i64 1, %t265 - br i1 %t266, label %range8030, label %inrange8031 -range8030: - call void @finch_panic_index(ptr @.str.5310, i64 4811, i64 1, i64 %t265) - unreachable -inrange8031: - %t267 = extractvalue { ptr, i64, i64 } %t264, 0 - %t268 = getelementptr inbounds %S.ast.Node, ptr %t267, i64 1 - %t269 = load %S.ast.Node, ptr %t268 - %t270 = load %S.ast.Type, ptr %a15 - %t271 = call %S.gen.Val @finch.gen.exprWant(ptr %t262, %S.ast.Node %t269, %S.ast.Type %t270) - %t272 = load %S.ast.Type, ptr %a15 - %t273 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t274 = load { ptr, i64, i64 }, ptr %t273 - %t275 = extractvalue { ptr, i64, i64 } %t274, 1 - %t276 = icmp uge i64 1, %t275 - br i1 %t276, label %range8032, label %inrange8033 -range8032: - call void @finch_panic_index(ptr @.str.5311, i64 4811, i64 1, i64 %t275) - unreachable -inrange8033: - %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.5312, 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.5313, 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.5314, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5315, 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.5316, 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.5317, i64 3, i64 0 }, { ptr, i64, i64 } %t292) - store { ptr, i64, i64 } %t293, ptr %a294 + call void @finch_str_copy(ptr %a255, ptr %a254) + %t256 = load { ptr, i64, i64 }, ptr %a255 + %t257 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t256, 0 + %t258 = load %S.ast.Type, ptr %a15 + store %S.ast.Type %t258, ptr %a259 + call void @finch.copy.S_ast_Type(ptr %a260, ptr %a259) + %t261 = load %S.ast.Type, ptr %a260 + %t262 = insertvalue %S.gen.Val %t257, %S.ast.Type %t261, 1 + %t263 = load ptr, ptr %a1 + %t264 = load %S.ast.Type, ptr %a15 + %t265 = call i1 @finch.gen.owning(ptr %t263, %S.ast.Type %t264) + %t266 = insertvalue %S.gen.Val %t262, i1 %t265, 2 + call void @finch_str_drop(ptr %a249) + call void @finch_str_drop(ptr %a214) + call void @finch_str_drop(ptr %a210) + call void @finch_str_drop(ptr %a180) + call void @finch_str_drop(ptr %a39) + call void @finch_str_drop(ptr %a25) + call void @finch_str_drop(ptr %a19) + call void @finch.drop.S_ast_Type(ptr %a15) + ret %S.gen.Val %t266 +endif8469: + %t267 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t267, ptr %a268 + store { ptr, i64, i64 } { ptr @.str.5492, i64 5, i64 0 }, ptr %a269 + %t270 = call i32 @finch_str_eq(ptr %a268, ptr %a269) + %t271 = icmp ne i32 %t270, 0 + br i1 %t271, label %then8470, label %endif8472 +then8470: + %t272 = load ptr, ptr %a1 + %t273 = load %S.ast.Node, ptr %a2 + call void @finch.gen.need(ptr %t272, %S.ast.Node %t273, i64 0) + %t274 = load ptr, ptr %a1 + %t275 = load { ptr, i64, i64 }, ptr %a3 + %t276 = load %S.ast.Type, ptr %a4 + call void @finch.gen.dropFrom(ptr %t274, { ptr, i64, i64 } %t275, %S.ast.Type %t276, { ptr, i64, i64 } { ptr @.str.5493, i64 1, i64 0 }) + %t277 = load ptr, ptr %a1 + %t278 = load { ptr, i64, i64 }, ptr %a39 + call void @finch.gen.store(ptr %t277, { ptr, i64, i64 } { ptr @.str.5494, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5495, i64 1, i64 0 }, { ptr, i64, i64 } %t278) + %t279 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5496, i64 4, i64 0 }) + %t280 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t279, 1 + call void @finch_str_drop(ptr %a39) + call void @finch_str_drop(ptr %a25) + call void @finch_str_drop(ptr %a19) + call void @finch.drop.S_ast_Type(ptr %a15) + ret %S.gen.Val %t280 +endif8472: + %t281 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t281, ptr %a282 + store { ptr, i64, i64 } { ptr @.str.5497, i64 4, i64 0 }, ptr %a283 + %t284 = call i32 @finch_str_eq(ptr %a282, ptr %a283) + %t285 = icmp ne i32 %t284, 0 + br label %logic.from8473 +logic.from8473: + br i1 %t285, label %logic.end8475, label %logic.rhs8474 +logic.rhs8474: + %t286 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t286, ptr %a287 + store { ptr, i64, i64 } { ptr @.str.5498, i64 8, i64 0 }, ptr %a288 + %t289 = call i32 @finch_str_eq(ptr %a287, ptr %a288) + %t290 = icmp ne i32 %t289, 0 + br label %logic.rend8476 +logic.rend8476: + br label %logic.end8475 +logic.end8475: + %t291 = phi i1 [ true, %logic.from8473 ], [ %t290, %logic.rend8476 ] + br i1 %t291, label %then8477, label %endif8479 +then8477: + %t292 = load ptr, ptr %a1 + %t293 = load %S.ast.Node, ptr %a2 + call void @finch.gen.need(ptr %t292, %S.ast.Node %t293, i64 1) + %t294 = load ptr, ptr %a1 %t295 = load ptr, ptr %a1 - %t296 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t295, { ptr, i64, i64 } { ptr @.str.5318, 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.5319, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5320, 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.5321, 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.5322, 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.5323, 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.5324, 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.5325, i64 8, i64 0 }) - store { ptr, i64, i64 } %t313, ptr %a314 - %t315 = load ptr, ptr %a1 - %t316 = load { ptr, i64, i64 }, ptr %a302 - call void @finch.gen.br(ptr %t315, { ptr, i64, i64 } %t316) - %t317 = load ptr, ptr %a1 - %t318 = load { ptr, i64, i64 }, ptr %a302 - call void @finch.gen.label(ptr %t317, { ptr, i64, i64 } %t318) + %t296 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t297 = load { ptr, i64, i64 }, ptr %t296 + %t298 = extractvalue { ptr, i64, i64 } %t297, 1 + %t299 = icmp uge i64 1, %t298 + br i1 %t299, label %range8480, label %inrange8481 +range8480: + call void @finch_panic_index(ptr @.str.5499, i64 5202, i64 1, i64 %t298) + unreachable +inrange8481: + %t300 = extractvalue { ptr, i64, i64 } %t297, 0 + %t301 = getelementptr inbounds %S.ast.Node, ptr %t300, i64 1 + %t302 = load %S.ast.Node, ptr %t301 + %t303 = load %S.ast.Type, ptr %a15 + %t304 = call %S.gen.Val @finch.gen.exprWant(ptr %t295, %S.ast.Node %t302, %S.ast.Type %t303) + %t305 = load %S.ast.Type, ptr %a15 + %t306 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t307 = load { ptr, i64, i64 }, ptr %t306 + %t308 = extractvalue { ptr, i64, i64 } %t307, 1 + %t309 = icmp uge i64 1, %t308 + br i1 %t309, label %range8482, label %inrange8483 +range8482: + call void @finch_panic_index(ptr @.str.5500, i64 5202, i64 1, i64 %t308) + unreachable +inrange8483: + %t310 = extractvalue { ptr, i64, i64 } %t307, 0 + %t311 = getelementptr inbounds %S.ast.Node, ptr %t310, i64 1 + %t312 = load %S.ast.Node, ptr %t311 + %t313 = call %S.gen.Val @finch.gen.coerce(ptr %t294, %S.gen.Val %t304, %S.ast.Type %t305, %S.ast.Node %t312, { ptr, i64, i64 } { ptr @.str.5501, i64 21, i64 0 }) + store %S.gen.Val %t304, ptr %a314 + call void @finch.drop.S_gen_Val(ptr %a314) + store %S.gen.Val %t313, ptr %a315 + %t316 = load ptr, ptr %a1 + %t317 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t316, { ptr, i64, i64 } { ptr @.str.5502, i64 3, i64 0 }) + store { ptr, i64, i64 } %t317, ptr %a318 %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.5326, 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.5327, 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.5328, 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 - store { ptr, i64, i64 } %t332, ptr %a335 - store { ptr, i64, i64 } %t333, ptr %a336 - call void @finch_str_concat(ptr %a334, ptr %a335, ptr %a336) - %t337 = load { ptr, i64, i64 }, ptr %a334 - %t338 = call { ptr, i64, i64 } @finch.gen.op(ptr %t323, { ptr, i64, i64 } %t337) + %t320 = load { ptr, i64, i64 }, ptr %a318 + call void @finch.gen.store(ptr %t319, { ptr, i64, i64 } { ptr @.str.5503, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5504, i64 2, i64 0 }, { ptr, i64, i64 } %t320) + %t321 = load ptr, ptr %a1 + %t322 = load { ptr, i64, i64 }, ptr %a39 + %t323 = call { ptr, i64, i64 } @finch.gen.load(ptr %t321, { ptr, i64, i64 } { ptr @.str.5505, i64 3, i64 0 }, { ptr, i64, i64 } %t322) + store { ptr, i64, i64 } %t323, ptr %a324 + %t325 = load ptr, ptr %a1 + %t326 = load { ptr, i64, i64 }, ptr %a3 + %t327 = call { ptr, i64, i64 } @finch.gen.load(ptr %t325, { ptr, i64, i64 } { ptr @.str.5506, i64 3, i64 0 }, { ptr, i64, i64 } %t326) + store { ptr, i64, i64 } %t327, ptr %a328 + %t329 = load ptr, ptr %a1 + %t330 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t329, { ptr, i64, i64 } { ptr @.str.5507, i64 3, 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.5508, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5509, i64 1, i64 0 }, { ptr, i64, i64 } %t333) + %t334 = load ptr, ptr %a1 + %t335 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t334, { ptr, i64, i64 } { ptr @.str.5510, i64 9, i64 0 }) + store { ptr, i64, i64 } %t335, ptr %a336 + %t337 = load ptr, ptr %a1 + %t338 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t337, { ptr, i64, i64 } { ptr @.str.5511, i64 9, i64 0 }) store { ptr, i64, i64 } %t338, ptr %a339 %t340 = load ptr, ptr %a1 - %t341 = load { ptr, i64, i64 }, ptr %a339 - %t342 = load { ptr, i64, i64 }, ptr %a305 - %t343 = load { ptr, i64, i64 }, ptr %a314 - call void @finch.gen.condBr(ptr %t340, { ptr, i64, i64 } %t341, { ptr, i64, i64 } %t342, { ptr, i64, i64 } %t343) - %t344 = load ptr, ptr %a1 - %t345 = load { ptr, i64, i64 }, ptr %a305 - call void @finch.gen.label(ptr %t344, { ptr, i64, i64 } %t345) + %t341 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t340, { ptr, i64, i64 } { ptr @.str.5512, i64 8, i64 0 }) + store { ptr, i64, i64 } %t341, ptr %a342 + %t343 = load ptr, ptr %a1 + %t344 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t343, { ptr, i64, i64 } { ptr @.str.5513, i64 9, i64 0 }) + store { ptr, i64, i64 } %t344, ptr %a345 %t346 = load ptr, ptr %a1 - %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.5329, 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.5330, 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 - store { ptr, i64, i64 } %t357, ptr %a360 + %t347 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t346, { ptr, i64, i64 } { ptr @.str.5514, i64 8, i64 0 }) + store { ptr, i64, i64 } %t347, ptr %a348 + %t349 = load ptr, ptr %a1 + %t350 = load { ptr, i64, i64 }, ptr %a336 + call void @finch.gen.br(ptr %t349, { ptr, i64, i64 } %t350) + %t351 = load ptr, ptr %a1 + %t352 = load { ptr, i64, i64 }, ptr %a336 + call void @finch.gen.label(ptr %t351, { ptr, i64, i64 } %t352) + %t353 = load ptr, ptr %a1 + %t354 = load { ptr, i64, i64 }, ptr %a331 + %t355 = call { ptr, i64, i64 } @finch.gen.load(ptr %t353, { ptr, i64, i64 } { ptr @.str.5515, i64 3, i64 0 }, { ptr, i64, i64 } %t354) + store { ptr, i64, i64 } %t355, ptr %a356 + %t357 = load ptr, ptr %a1 + %t358 = load { ptr, i64, i64 }, ptr %a356 + store { ptr, i64, i64 } { ptr @.str.5516, i64 13, i64 0 }, 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.5331, i64 6, i64 0 }, ptr %a365 + store { ptr, i64, i64 } { ptr @.str.5517, i64 2, 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 - store { ptr, i64, i64 } %t366, ptr %a369 + store { ptr, i64, i64 } %t362, ptr %a366 + call void @finch_str_drop(ptr %a366) + %t367 = load { ptr, i64, i64 }, ptr %a363 + %t368 = load { ptr, i64, i64 }, ptr %a324 store { ptr, i64, i64 } %t367, ptr %a370 - call void @finch_str_concat(ptr %a368, ptr %a369, ptr %a370) - %t371 = load { ptr, i64, i64 }, ptr %a368 - %t372 = call { ptr, i64, i64 } @finch.gen.op(ptr %t348, { ptr, i64, i64 } %t371) - %t373 = call { ptr, i64, i64 } @finch.gen.load(ptr %t346, { ptr, i64, i64 } %t347, { ptr, i64, i64 } %t372) - %t374 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t373, 0 - %t375 = load %S.ast.Type, ptr %a15 - store %S.ast.Type %t375, ptr %a376 - call void @finch.copy.S_ast_Type(ptr %a377, ptr %a376) - %t378 = load %S.ast.Type, ptr %a377 - %t379 = insertvalue %S.gen.Val %t374, %S.ast.Type %t378, 1 - store %S.gen.Val %t379, ptr %a380 + store { ptr, i64, i64 } %t368, ptr %a371 + call void @finch_str_concat(ptr %a369, ptr %a370, ptr %a371) + store { ptr, i64, i64 } %t367, ptr %a372 + call void @finch_str_drop(ptr %a372) + %t373 = load { ptr, i64, i64 }, ptr %a369 + %t374 = call { ptr, i64, i64 } @finch.gen.op(ptr %t357, { ptr, i64, i64 } %t373) + store { ptr, i64, i64 } %t373, ptr %a375 + call void @finch_str_drop(ptr %a375) + store { ptr, i64, i64 } %t374, ptr %a376 + %t377 = load ptr, ptr %a1 + %t378 = load { ptr, i64, i64 }, ptr %a376 + %t379 = load { ptr, i64, i64 }, ptr %a339 + %t380 = load { ptr, i64, i64 }, ptr %a348 + call void @finch.gen.condBr(ptr %t377, { ptr, i64, i64 } %t378, { ptr, i64, i64 } %t379, { ptr, i64, i64 } %t380) %t381 = load ptr, ptr %a1 - %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.5332, 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) - %t389 = load { ptr, i64, i64 }, ptr %a388 - store { ptr, i64, i64 } %t389, ptr %a390 - %t391 = load ptr, ptr %a1 - %t392 = load { ptr, i64, i64 }, ptr %a390 - %t393 = load { ptr, i64, i64 }, ptr %a308 - %t394 = load { ptr, i64, i64 }, ptr %a311 - call void @finch.gen.condBr(ptr %t391, { ptr, i64, i64 } %t392, { ptr, i64, i64 } %t393, { ptr, i64, i64 } %t394) - %t395 = load ptr, ptr %a1 - %t396 = load { ptr, i64, i64 }, ptr %a308 - call void @finch.gen.label(ptr %t395, { ptr, i64, i64 } %t396) - %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.5333, 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) - %t402 = load ptr, ptr %a1 - %t403 = load { ptr, i64, i64 }, ptr %a311 - call void @finch.gen.label(ptr %t402, { ptr, i64, i64 } %t403) - %t404 = load ptr, ptr %a1 - %t405 = load ptr, ptr %a1 - %t406 = load { ptr, i64, i64 }, ptr %a322 - store { ptr, i64, i64 } { ptr @.str.5335, i64 8, i64 0 }, ptr %a408 + %t382 = load { ptr, i64, i64 }, ptr %a339 + call void @finch.gen.label(ptr %t381, { ptr, i64, i64 } %t382) + %t383 = load ptr, ptr %a1 + %t384 = load { ptr, i64, i64 }, ptr %a19 + %t385 = load ptr, ptr %a1 + %t386 = load { ptr, i64, i64 }, ptr %a19 + store { ptr, i64, i64 } { ptr @.str.5518, i64 23, i64 0 }, 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.5519, i64 6, i64 0 }, ptr %a393 + call void @finch_str_concat(ptr %a391, ptr %a392, ptr %a393) + store { ptr, i64, i64 } %t390, ptr %a394 + call void @finch_str_drop(ptr %a394) + %t395 = load { ptr, i64, i64 }, ptr %a391 + %t396 = load { ptr, i64, i64 }, ptr %a328 + store { ptr, i64, i64 } %t395, ptr %a398 + store { ptr, i64, i64 } %t396, ptr %a399 + call void @finch_str_concat(ptr %a397, ptr %a398, ptr %a399) + store { ptr, i64, i64 } %t395, ptr %a400 + call void @finch_str_drop(ptr %a400) + %t401 = load { ptr, i64, i64 }, ptr %a397 + store { ptr, i64, i64 } %t401, ptr %a403 + store { ptr, i64, i64 } { ptr @.str.5520, i64 6, i64 0 }, ptr %a404 + call void @finch_str_concat(ptr %a402, ptr %a403, ptr %a404) + store { ptr, i64, i64 } %t401, ptr %a405 + call void @finch_str_drop(ptr %a405) + %t406 = load { ptr, i64, i64 }, ptr %a402 + %t407 = load { ptr, i64, i64 }, ptr %a356 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.5336, 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.5334, 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) - %t419 = load ptr, ptr %a1 - %t420 = load { ptr, i64, i64 }, ptr %a314 - 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.5337, 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.5338, 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 %then8034, label %endif8036 -then8034: - %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.5339, i64 3, i64 0 }) - %t436 = insertvalue %S.gen.Val %t434, %S.ast.Type %t435, 1 - ret %S.gen.Val %t436 -endif8036: - %t437 = load ptr, ptr %a1 - %t438 = load { ptr, i64, i64 }, ptr %a424 - store { ptr, i64, i64 } { ptr @.str.5340, 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.5341, 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.5342, i64 4, i64 0 }) - %t450 = insertvalue %S.gen.Val %t448, %S.ast.Type %t449, 1 - ret %S.gen.Val %t450 -endif8029: - %t451 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t451, ptr %a452 - store { ptr, i64, i64 } { ptr @.str.5343, 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 %then8037, label %endif8039 -then8037: + store { ptr, i64, i64 } %t407, ptr %a410 + call void @finch_str_concat(ptr %a408, ptr %a409, ptr %a410) + store { ptr, i64, i64 } %t406, ptr %a411 + call void @finch_str_drop(ptr %a411) + %t412 = load { ptr, i64, i64 }, ptr %a408 + %t413 = call { ptr, i64, i64 } @finch.gen.op(ptr %t385, { ptr, i64, i64 } %t412) + store { ptr, i64, i64 } %t412, ptr %a414 + call void @finch_str_drop(ptr %a414) + %t415 = call { ptr, i64, i64 } @finch.gen.load(ptr %t383, { ptr, i64, i64 } %t384, { ptr, i64, i64 } %t413) + store { ptr, i64, i64 } %t413, ptr %a416 + call void @finch_str_drop(ptr %a416) + %t417 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t415, 0 + %t418 = load %S.ast.Type, ptr %a15 + store %S.ast.Type %t418, ptr %a419 + call void @finch.copy.S_ast_Type(ptr %a420, ptr %a419) + %t421 = load %S.ast.Type, ptr %a420 + %t422 = insertvalue %S.gen.Val %t417, %S.ast.Type %t421, 1 + store %S.gen.Val %t422, ptr %a423 + %t424 = load ptr, ptr %a1 + %t425 = load %S.gen.Val, ptr %a423 + %t426 = getelementptr inbounds %S.gen.Val, ptr %a315, i32 0, i32 0 + %t427 = load { ptr, i64, i64 }, ptr %t426 + store { ptr, i64, i64 } %t427, ptr %a428 + call void @finch_str_copy(ptr %a429, ptr %a428) + %t430 = load { ptr, i64, i64 }, ptr %a429 + %t431 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t430, 0 + %t432 = getelementptr inbounds %S.gen.Val, ptr %a315, i32 0, i32 1 + %t433 = load %S.ast.Type, ptr %t432 + store %S.ast.Type %t433, ptr %a434 + call void @finch.copy.S_ast_Type(ptr %a435, ptr %a434) + %t436 = load %S.ast.Type, ptr %a435 + %t437 = insertvalue %S.gen.Val %t431, %S.ast.Type %t436, 1 + %t438 = load %S.ast.Node, ptr %a2 + %t439 = call %S.gen.Val @finch.gen.compare(ptr %t424, { ptr, i64, i64 } { ptr @.str.5521, i64 2, i64 0 }, %S.gen.Val %t425, %S.gen.Val %t437, %S.ast.Node %t438) + store %S.gen.Val %t437, ptr %a440 + call void @finch.drop.S_gen_Val(ptr %a440) + %t441 = extractvalue %S.gen.Val %t439, 0 + store { ptr, i64, i64 } %t441, ptr %a442 + call void @finch_str_copy(ptr %a443, ptr %a442) + %t444 = load { ptr, i64, i64 }, ptr %a443 + store %S.gen.Val %t439, ptr %a445 + call void @finch.drop.S_gen_Val(ptr %a445) + store { ptr, i64, i64 } %t444, ptr %a446 + %t447 = load ptr, ptr %a1 + %t448 = load { ptr, i64, i64 }, ptr %a446 + %t449 = load { ptr, i64, i64 }, ptr %a342 + %t450 = load { ptr, i64, i64 }, ptr %a345 + call void @finch.gen.condBr(ptr %t447, { ptr, i64, i64 } %t448, { ptr, i64, i64 } %t449, { ptr, i64, i64 } %t450) + %t451 = load ptr, ptr %a1 + %t452 = load { ptr, i64, i64 }, ptr %a342 + call void @finch.gen.label(ptr %t451, { ptr, i64, i64 } %t452) + %t453 = load ptr, ptr %a1 + %t454 = load { ptr, i64, i64 }, ptr %a356 + %t455 = load { ptr, i64, i64 }, ptr %a318 + call void @finch.gen.store(ptr %t453, { ptr, i64, i64 } { ptr @.str.5522, i64 3, i64 0 }, { ptr, i64, i64 } %t454, { ptr, i64, i64 } %t455) %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.5344, 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 %then8040, label %endif8042 -then8040: - %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.5345, i64 31, i64 0 }) - br label %endif8042 -endif8042: - %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 %range8043, label %inrange8044 -range8043: - call void @finch_panic_index(ptr @.str.5346, i64 4850, i64 1, i64 %t470) - unreachable -inrange8044: - %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.5347, 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 + %t457 = load { ptr, i64, i64 }, ptr %a348 + call void @finch.gen.br(ptr %t456, { ptr, i64, i64 } %t457) + %t458 = load ptr, ptr %a1 + %t459 = load { ptr, i64, i64 }, ptr %a345 + call void @finch.gen.label(ptr %t458, { ptr, i64, i64 } %t459) + %t460 = load ptr, ptr %a1 + %t461 = load ptr, ptr %a1 + %t462 = load { ptr, i64, i64 }, ptr %a356 + store { ptr, i64, i64 } { ptr @.str.5524, i64 8, i64 0 }, ptr %a464 + store { ptr, i64, i64 } %t462, ptr %a465 + call void @finch_str_concat(ptr %a463, ptr %a464, ptr %a465) + %t466 = load { ptr, i64, i64 }, ptr %a463 + store { ptr, i64, i64 } %t466, ptr %a468 + store { ptr, i64, i64 } { ptr @.str.5525, i64 3, i64 0 }, ptr %a469 + call void @finch_str_concat(ptr %a467, ptr %a468, ptr %a469) + store { ptr, i64, i64 } %t466, ptr %a470 + call void @finch_str_drop(ptr %a470) + %t471 = load { ptr, i64, i64 }, ptr %a467 + %t472 = call { ptr, i64, i64 } @finch.gen.op(ptr %t461, { ptr, i64, i64 } %t471) + store { ptr, i64, i64 } %t471, ptr %a473 + call void @finch_str_drop(ptr %a473) + %t474 = load { ptr, i64, i64 }, ptr %a331 + call void @finch.gen.store(ptr %t460, { ptr, i64, i64 } { ptr @.str.5523, i64 3, i64 0 }, { ptr, i64, i64 } %t472, { ptr, i64, i64 } %t474) + store { ptr, i64, i64 } %t472, ptr %a475 + call void @finch_str_drop(ptr %a475) + %t476 = load ptr, ptr %a1 + %t477 = load { ptr, i64, i64 }, ptr %a336 + call void @finch.gen.br(ptr %t476, { ptr, i64, i64 } %t477) %t478 = load ptr, ptr %a1 - %t479 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t478) - 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.5348, 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.5349, 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 - store { ptr, i64, i64 } %t490, ptr %a493 - store { ptr, i64, i64 } %t491, ptr %a494 - 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.5350, 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 + %t479 = load { ptr, i64, i64 }, ptr %a348 + call void @finch.gen.label(ptr %t478, { ptr, i64, i64 } %t479) + %t480 = load ptr, ptr %a1 + %t481 = load %S.gen.Val, ptr %a315 + call void @finch.gen.release(ptr %t480, %S.gen.Val %t481) + %t482 = load ptr, ptr %a1 + %t483 = load { ptr, i64, i64 }, ptr %a318 + %t484 = call { ptr, i64, i64 } @finch.gen.load(ptr %t482, { ptr, i64, i64 } { ptr @.str.5526, i64 3, i64 0 }, { ptr, i64, i64 } %t483) + store { ptr, i64, i64 } %t484, ptr %a485 + %t486 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t486, ptr %a487 + store { ptr, i64, i64 } { ptr @.str.5527, i64 4, i64 0 }, ptr %a488 + %t489 = call i32 @finch_str_eq(ptr %a487, ptr %a488) + %t490 = icmp ne i32 %t489, 0 + br i1 %t490, label %then8484, label %endif8486 +then8484: + %t491 = load { ptr, i64, i64 }, ptr %a485 + store { ptr, i64, i64 } %t491, ptr %a492 + call void @finch_str_copy(ptr %a493, ptr %a492) + %t494 = load { ptr, i64, i64 }, ptr %a493 + %t495 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t494, 0 + %t496 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5528, i64 3, i64 0 }) + %t497 = insertvalue %S.gen.Val %t495, %S.ast.Type %t496, 1 + call void @finch_str_drop(ptr %a485) + call void @finch_str_drop(ptr %a446) + call void @finch.drop.S_gen_Val(ptr %a423) + call void @finch_str_drop(ptr %a376) + call void @finch_str_drop(ptr %a356) + call void @finch_str_drop(ptr %a348) + call void @finch_str_drop(ptr %a345) + call void @finch_str_drop(ptr %a342) + call void @finch_str_drop(ptr %a339) + call void @finch_str_drop(ptr %a336) + call void @finch_str_drop(ptr %a331) + call void @finch_str_drop(ptr %a328) + call void @finch_str_drop(ptr %a324) + call void @finch_str_drop(ptr %a318) + call void @finch.drop.S_gen_Val(ptr %a315) + call void @finch_str_drop(ptr %a39) + call void @finch_str_drop(ptr %a25) + call void @finch_str_drop(ptr %a19) + call void @finch.drop.S_ast_Type(ptr %a15) + ret %S.gen.Val %t497 +endif8486: + %t498 = load ptr, ptr %a1 + %t499 = load { ptr, i64, i64 }, ptr %a485 + store { ptr, i64, i64 } { ptr @.str.5529, i64 13, i64 0 }, ptr %a501 store { ptr, i64, i64 } %t499, ptr %a502 - store { ptr, i64, i64 } %t500, ptr %a503 - 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.5351, 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.5352, 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.5353, 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 -endif8039: - %t516 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t516, ptr %a517 - store { ptr, i64, i64 } { ptr @.str.5354, 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 %then8045, label %endif8047 -then8045: - %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) - %t523 = load ptr, ptr %a1 - %t524 = load ptr, ptr %a1 - %t525 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t526 = load { ptr, i64, i64 }, ptr %t525 - %t527 = extractvalue { ptr, i64, i64 } %t526, 1 - %t528 = icmp uge i64 1, %t527 - br i1 %t528, label %range8048, label %inrange8049 -range8048: - call void @finch_panic_index(ptr @.str.5355, i64 4857, i64 1, i64 %t527) + call void @finch_str_concat(ptr %a500, ptr %a501, ptr %a502) + %t503 = load { ptr, i64, i64 }, ptr %a500 + store { ptr, i64, i64 } %t503, ptr %a505 + store { ptr, i64, i64 } { ptr @.str.5530, i64 3, i64 0 }, ptr %a506 + call void @finch_str_concat(ptr %a504, ptr %a505, ptr %a506) + store { ptr, i64, i64 } %t503, ptr %a507 + call void @finch_str_drop(ptr %a507) + %t508 = load { ptr, i64, i64 }, ptr %a504 + %t509 = call { ptr, i64, i64 } @finch.gen.op(ptr %t498, { ptr, i64, i64 } %t508) + store { ptr, i64, i64 } %t508, ptr %a510 + call void @finch_str_drop(ptr %a510) + %t511 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t509, 0 + %t512 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5531, i64 4, i64 0 }) + %t513 = insertvalue %S.gen.Val %t511, %S.ast.Type %t512, 1 + call void @finch_str_drop(ptr %a485) + call void @finch_str_drop(ptr %a446) + call void @finch.drop.S_gen_Val(ptr %a423) + call void @finch_str_drop(ptr %a376) + call void @finch_str_drop(ptr %a356) + call void @finch_str_drop(ptr %a348) + call void @finch_str_drop(ptr %a345) + call void @finch_str_drop(ptr %a342) + call void @finch_str_drop(ptr %a339) + call void @finch_str_drop(ptr %a336) + call void @finch_str_drop(ptr %a331) + call void @finch_str_drop(ptr %a328) + call void @finch_str_drop(ptr %a324) + call void @finch_str_drop(ptr %a318) + call void @finch.drop.S_gen_Val(ptr %a315) + call void @finch_str_drop(ptr %a39) + call void @finch_str_drop(ptr %a25) + call void @finch_str_drop(ptr %a19) + call void @finch.drop.S_ast_Type(ptr %a15) + ret %S.gen.Val %t513 +endif8479: + %t514 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t514, ptr %a515 + store { ptr, i64, i64 } { ptr @.str.5532, i64 4, i64 0 }, ptr %a516 + %t517 = call i32 @finch_str_eq(ptr %a515, ptr %a516) + %t518 = icmp ne i32 %t517, 0 + br i1 %t518, label %then8487, label %endif8489 +then8487: + %t519 = load ptr, ptr %a1 + %t520 = load %S.ast.Node, ptr %a2 + call void @finch.gen.need(ptr %t519, %S.ast.Node %t520, i64 1) + %t521 = getelementptr inbounds %S.ast.Type, ptr %a15, i32 0, i32 0 + %t522 = load { ptr, i64, i64 }, ptr %t521 + store { ptr, i64, i64 } %t522, ptr %a523 + store { ptr, i64, i64 } { ptr @.str.5533, i64 3, i64 0 }, ptr %a524 + %t525 = call i32 @finch_str_eq(ptr %a523, ptr %a524) + %t526 = icmp eq i32 %t525, 0 + br i1 %t526, label %then8490, label %endif8492 +then8490: + %t527 = load ptr, ptr %a1 + %t528 = load %S.ast.Node, ptr %a2 + call void @finch.gen.fail(ptr %t527, %S.ast.Node %t528, { ptr, i64, i64 } { ptr @.str.5534, i64 31, i64 0 }) + br label %endif8492 +endif8492: + %t529 = load ptr, ptr %a1 + %t530 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t531 = load { ptr, i64, i64 }, ptr %t530 + %t532 = extractvalue { ptr, i64, i64 } %t531, 1 + %t533 = icmp uge i64 1, %t532 + br i1 %t533, label %range8493, label %inrange8494 +range8493: + call void @finch_panic_index(ptr @.str.5535, i64 5242, i64 1, i64 %t532) unreachable -inrange8049: - %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.5356, 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 %range8050, label %inrange8051 -range8050: - call void @finch_panic_index(ptr @.str.5357, i64 4857, i64 1, i64 %t536) +inrange8494: + %t534 = extractvalue { ptr, i64, i64 } %t531, 0 + %t535 = getelementptr inbounds %S.ast.Node, ptr %t534, i64 1 + %t536 = load %S.ast.Node, ptr %t535 + %t537 = call %S.gen.Val @finch.gen.strArg(ptr %t529, %S.ast.Node %t536, { ptr, i64, i64 } { ptr @.str.5536, i64 13, i64 0 }) + store %S.gen.Val %t537, ptr %a538 + %t539 = load ptr, ptr %a1 + %t540 = load %S.gen.Val, ptr %a538 + %t541 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t539, %S.gen.Val %t540) + store { ptr, i64, i64 } %t541, ptr %a542 + %t543 = load ptr, ptr %a1 + %t544 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t543) + store { ptr, i64, i64 } %t544, ptr %a545 + %t546 = load ptr, ptr %a1 + %t547 = load { ptr, i64, i64 }, ptr %a545 + store { ptr, i64, i64 } { ptr @.str.5537, i64 30, i64 0 }, ptr %a549 + store { ptr, i64, i64 } %t547, ptr %a550 + call void @finch_str_concat(ptr %a548, ptr %a549, ptr %a550) + %t551 = load { ptr, i64, i64 }, ptr %a548 + store { ptr, i64, i64 } %t551, ptr %a553 + store { ptr, i64, i64 } { ptr @.str.5538, i64 6, i64 0 }, ptr %a554 + call void @finch_str_concat(ptr %a552, ptr %a553, ptr %a554) + store { ptr, i64, i64 } %t551, ptr %a555 + call void @finch_str_drop(ptr %a555) + %t556 = load { ptr, i64, i64 }, ptr %a552 + %t557 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t556, ptr %a559 + store { ptr, i64, i64 } %t557, ptr %a560 + call void @finch_str_concat(ptr %a558, ptr %a559, ptr %a560) + store { ptr, i64, i64 } %t556, ptr %a561 + call void @finch_str_drop(ptr %a561) + %t562 = load { ptr, i64, i64 }, ptr %a558 + store { ptr, i64, i64 } %t562, ptr %a564 + store { ptr, i64, i64 } { ptr @.str.5539, i64 6, i64 0 }, ptr %a565 + call void @finch_str_concat(ptr %a563, ptr %a564, ptr %a565) + store { ptr, i64, i64 } %t562, ptr %a566 + call void @finch_str_drop(ptr %a566) + %t567 = load { ptr, i64, i64 }, ptr %a563 + %t568 = load { ptr, i64, i64 }, ptr %a542 + store { ptr, i64, i64 } %t567, ptr %a570 + store { ptr, i64, i64 } %t568, ptr %a571 + call void @finch_str_concat(ptr %a569, ptr %a570, ptr %a571) + store { ptr, i64, i64 } %t567, ptr %a572 + call void @finch_str_drop(ptr %a572) + %t573 = load { ptr, i64, i64 }, ptr %a569 + store { ptr, i64, i64 } %t573, ptr %a575 + store { ptr, i64, i64 } { ptr @.str.5540, i64 1, i64 0 }, ptr %a576 + call void @finch_str_concat(ptr %a574, ptr %a575, ptr %a576) + store { ptr, i64, i64 } %t573, ptr %a577 + call void @finch_str_drop(ptr %a577) + %t578 = load { ptr, i64, i64 }, ptr %a574 + call void @finch.gen.emit(ptr %t546, { ptr, i64, i64 } %t578) + store { ptr, i64, i64 } %t578, ptr %a579 + call void @finch_str_drop(ptr %a579) + %t580 = load ptr, ptr %a1 + %t581 = load %S.gen.Val, ptr %a538 + call void @finch.gen.release(ptr %t580, %S.gen.Val %t581) + %t582 = load ptr, ptr %a1 + %t583 = load { ptr, i64, i64 }, ptr %a545 + %t584 = call { ptr, i64, i64 } @finch.gen.load(ptr %t582, { ptr, i64, i64 } { ptr @.str.5541, i64 17, i64 0 }, { 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.5542, i64 3, i64 0 }) + %t587 = insertvalue %S.gen.Val %t585, %S.ast.Type %t586, 1 + %t588 = insertvalue %S.gen.Val %t587, i1 true, 2 + call void @finch_str_drop(ptr %a545) + call void @finch_str_drop(ptr %a542) + call void @finch.drop.S_gen_Val(ptr %a538) + call void @finch_str_drop(ptr %a39) + call void @finch_str_drop(ptr %a25) + call void @finch_str_drop(ptr %a19) + call void @finch.drop.S_ast_Type(ptr %a15) + ret %S.gen.Val %t588 +endif8489: + %t589 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t589, ptr %a590 + store { ptr, i64, i64 } { ptr @.str.5543, 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 %then8495, label %endif8497 +then8495: + %t594 = load ptr, ptr %a1 + %t595 = load %S.ast.Node, ptr %a2 + call void @finch.gen.need(ptr %t594, %S.ast.Node %t595, i64 2) + %t596 = load ptr, ptr %a1 + %t597 = load ptr, ptr %a1 + %t598 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t599 = load { ptr, i64, i64 }, ptr %t598 + %t600 = extractvalue { ptr, i64, i64 } %t599, 1 + %t601 = icmp uge i64 1, %t600 + br i1 %t601, label %range8498, label %inrange8499 +range8498: + call void @finch_panic_index(ptr @.str.5544, i64 5251, i64 1, i64 %t600) unreachable -inrange8051: - %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.5358, 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) - %t545 = load { ptr, i64, i64 }, ptr %a544 - store { ptr, i64, i64 } %t545, ptr %a546 - %t547 = load ptr, ptr %a1 - %t548 = load ptr, ptr %a1 - %t549 = load ptr, ptr %a1 - %t550 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t551 = load { ptr, i64, i64 }, ptr %t550 - %t552 = extractvalue { ptr, i64, i64 } %t551, 1 - %t553 = icmp uge i64 2, %t552 - br i1 %t553, label %range8052, label %inrange8053 -range8052: - call void @finch_panic_index(ptr @.str.5359, i64 4858, i64 2, i64 %t552) +inrange8499: + %t602 = extractvalue { ptr, i64, i64 } %t599, 0 + %t603 = getelementptr inbounds %S.ast.Node, ptr %t602, i64 1 + %t604 = load %S.ast.Node, ptr %t603 + %t605 = call %S.gen.Val @finch.gen.expr(ptr %t597, %S.ast.Node %t604) + %t606 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5545, i64 3, i64 0 }) + %t607 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t608 = load { ptr, i64, i64 }, ptr %t607 + %t609 = extractvalue { ptr, i64, i64 } %t608, 1 + %t610 = icmp uge i64 1, %t609 + br i1 %t610, label %range8500, label %inrange8501 +range8500: + call void @finch_panic_index(ptr @.str.5546, i64 5251, i64 1, i64 %t609) unreachable -inrange8053: - %t554 = extractvalue { ptr, i64, i64 } %t551, 0 - %t555 = getelementptr inbounds %S.ast.Node, ptr %t554, i64 2 - %t556 = load %S.ast.Node, ptr %t555 - %t557 = load %S.ast.Type, ptr %a15 - %t558 = call %S.gen.Val @finch.gen.exprWant(ptr %t549, %S.ast.Node %t556, %S.ast.Type %t557) - %t559 = load %S.ast.Type, ptr %a15 - %t560 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t561 = load { ptr, i64, i64 }, ptr %t560 - %t562 = extractvalue { ptr, i64, i64 } %t561, 1 - %t563 = icmp uge i64 2, %t562 - br i1 %t563, label %range8054, label %inrange8055 -range8054: - call void @finch_panic_index(ptr @.str.5360, i64 4858, i64 2, i64 %t562) +inrange8501: + %t611 = extractvalue { ptr, i64, i64 } %t608, 0 + %t612 = getelementptr inbounds %S.ast.Node, ptr %t611, i64 1 + %t613 = load %S.ast.Node, ptr %t612 + %t614 = call %S.gen.Val @finch.gen.coerce(ptr %t596, %S.gen.Val %t605, %S.ast.Type %t606, %S.ast.Node %t613, { ptr, i64, i64 } { ptr @.str.5547, i64 12, i64 0 }) + store %S.gen.Val %t605, ptr %a615 + call void @finch.drop.S_gen_Val(ptr %a615) + store %S.ast.Type %t606, ptr %a616 + call void @finch.drop.S_ast_Type(ptr %a616) + %t617 = extractvalue %S.gen.Val %t614, 0 + store { ptr, i64, i64 } %t617, ptr %a618 + call void @finch_str_copy(ptr %a619, ptr %a618) + %t620 = load { ptr, i64, i64 }, ptr %a619 + store %S.gen.Val %t614, ptr %a621 + call void @finch.drop.S_gen_Val(ptr %a621) + store { ptr, i64, i64 } %t620, ptr %a622 + %t623 = load ptr, ptr %a1 + %t624 = load ptr, ptr %a1 + %t625 = load ptr, ptr %a1 + %t626 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t627 = load { ptr, i64, i64 }, ptr %t626 + %t628 = extractvalue { ptr, i64, i64 } %t627, 1 + %t629 = icmp uge i64 2, %t628 + br i1 %t629, label %range8502, label %inrange8503 +range8502: + call void @finch_panic_index(ptr @.str.5548, i64 5252, i64 2, i64 %t628) unreachable -inrange8055: - %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.5361, 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 %panic8056, label %ok8057 -panic8056: - call void @finch_panic(ptr @.str.5362, i64 4859, ptr @.str.5363) +inrange8503: + %t630 = extractvalue { ptr, i64, i64 } %t627, 0 + %t631 = getelementptr inbounds %S.ast.Node, ptr %t630, i64 2 + %t632 = load %S.ast.Node, ptr %t631 + %t633 = load %S.ast.Type, ptr %a15 + %t634 = call %S.gen.Val @finch.gen.exprWant(ptr %t625, %S.ast.Node %t632, %S.ast.Type %t633) + %t635 = load %S.ast.Type, ptr %a15 + %t636 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t637 = load { ptr, i64, i64 }, ptr %t636 + %t638 = extractvalue { ptr, i64, i64 } %t637, 1 + %t639 = icmp uge i64 2, %t638 + br i1 %t639, label %range8504, label %inrange8505 +range8504: + call void @finch_panic_index(ptr @.str.5549, i64 5252, i64 2, i64 %t638) unreachable -ok8057: - %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 %range8058, label %inrange8059 -range8058: - call void @finch_panic_index(ptr @.str.5364, i64 4859, i64 %t575, i64 %t577) +inrange8505: + %t640 = extractvalue { ptr, i64, i64 } %t637, 0 + %t641 = getelementptr inbounds %S.ast.Node, ptr %t640, i64 2 + %t642 = load %S.ast.Node, ptr %t641 + %t643 = call %S.gen.Val @finch.gen.coerce(ptr %t624, %S.gen.Val %t634, %S.ast.Type %t635, %S.ast.Node %t642, { ptr, i64, i64 } { ptr @.str.5550, i64 11, i64 0 }) + store %S.gen.Val %t634, ptr %a644 + call void @finch.drop.S_gen_Val(ptr %a644) + %t645 = call { ptr, i64, i64 } @finch.gen.own(ptr %t623, %S.gen.Val %t643) + store %S.gen.Val %t643, ptr %a646 + call void @finch.drop.S_gen_Val(ptr %a646) + store { ptr, i64, i64 } %t645, ptr %a647 + %t648 = load ptr, ptr %a1 + %t649 = load ptr, ptr %a1 + %t650 = icmp eq ptr %t649, null + br i1 %t650, label %panic8506, label %ok8507 +panic8506: + call void @finch_panic(ptr @.str.5551, i64 5253, ptr @.str.5552) unreachable -inrange8059: - %t579 = extractvalue { ptr, i64, i64 } %t576, 0 - %t580 = getelementptr inbounds { ptr, i64, i64 }, ptr %t579, i64 %t575 - %t581 = load { ptr, i64, i64 }, ptr %t580 - %t582 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t570, { ptr, i64, i64 } %t581) - 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.5365, 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.5366, 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 - store { ptr, i64, i64 } %t593, 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.5367, 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 - %t604 = load %S.ast.Type, ptr %a15 - %t605 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t603, %S.ast.Type %t604) - store { ptr, i64, i64 } %t602, ptr %a607 - store { ptr, i64, i64 } %t605, ptr %a608 - 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.5368, 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 - store { ptr, i64, i64 } %t613, 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.5369, 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 - %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 } %t622, 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 - store { ptr, i64, i64 } %t630, ptr %a632 - store { ptr, i64, i64 } { ptr @.str.5370, 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.5371, 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.5372, 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.5373, 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 - 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 - store { ptr, i64, i64 } %t656, ptr %a658 - store { ptr, i64, i64 } { ptr @.str.5374, 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 - store { ptr, i64, i64 } %t660, 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 - %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.5375, i64 4, i64 0 }) - %t668 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t667, 1 - ret %S.gen.Val %t668 -endif8047: - %t669 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t669, ptr %a670 - store { ptr, i64, i64 } { ptr @.str.5376, 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 %then8060, label %endif8062 -then8060: - %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) - %t676 = load ptr, ptr %a1 - %t677 = load ptr, ptr %a1 - %t678 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t679 = load { ptr, i64, i64 }, ptr %t678 - %t680 = extractvalue { ptr, i64, i64 } %t679, 1 - %t681 = icmp uge i64 1, %t680 - br i1 %t681, label %range8063, label %inrange8064 -range8063: - call void @finch_panic_index(ptr @.str.5377, i64 4867, i64 1, i64 %t680) +ok8507: + %t651 = getelementptr inbounds %S.gen.Gen, ptr %t649, i32 0, i32 1 + %t652 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 + %t653 = load i64, ptr %t652 + %t654 = load { ptr, i64, i64 }, ptr %t651 + %t655 = extractvalue { ptr, i64, i64 } %t654, 1 + %t656 = icmp uge i64 %t653, %t655 + br i1 %t656, label %range8508, label %inrange8509 +range8508: + call void @finch_panic_index(ptr @.str.5553, i64 5253, i64 %t653, i64 %t655) unreachable -inrange8064: - %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.5378, 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 %range8065, label %inrange8066 -range8065: - call void @finch_panic_index(ptr @.str.5379, i64 4867, i64 1, i64 %t689) +inrange8509: + %t657 = extractvalue { ptr, i64, i64 } %t654, 0 + %t658 = getelementptr inbounds { ptr, i64, i64 }, ptr %t657, i64 %t653 + %t659 = load { ptr, i64, i64 }, ptr %t658 + %t660 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t648, { ptr, i64, i64 } %t659) + store { ptr, i64, i64 } %t660, ptr %a661 + %t662 = load ptr, ptr %a1 + %t663 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } { ptr @.str.5554, i64 36, i64 0 }, ptr %a665 + store { ptr, i64, i64 } %t663, ptr %a666 + call void @finch_str_concat(ptr %a664, ptr %a665, ptr %a666) + %t667 = load { ptr, i64, i64 }, ptr %a664 + store { ptr, i64, i64 } %t667, ptr %a669 + store { ptr, i64, i64 } { ptr @.str.5555, i64 6, i64 0 }, ptr %a670 + call void @finch_str_concat(ptr %a668, ptr %a669, ptr %a670) + store { ptr, i64, i64 } %t667, ptr %a671 + call void @finch_str_drop(ptr %a671) + %t672 = load { ptr, i64, i64 }, ptr %a668 + %t673 = load { ptr, i64, i64 }, ptr %a622 + store { ptr, i64, i64 } %t672, ptr %a675 + store { ptr, i64, i64 } %t673, ptr %a676 + call void @finch_str_concat(ptr %a674, ptr %a675, ptr %a676) + store { ptr, i64, i64 } %t672, ptr %a677 + call void @finch_str_drop(ptr %a677) + %t678 = load { ptr, i64, i64 }, ptr %a674 + store { ptr, i64, i64 } %t678, ptr %a680 + store { ptr, i64, i64 } { ptr @.str.5556, i64 6, i64 0 }, ptr %a681 + call void @finch_str_concat(ptr %a679, ptr %a680, ptr %a681) + store { ptr, i64, i64 } %t678, ptr %a682 + call void @finch_str_drop(ptr %a682) + %t683 = load { ptr, i64, i64 }, ptr %a679 + %t684 = load ptr, ptr %a1 + %t685 = load %S.ast.Type, ptr %a15 + %t686 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t684, %S.ast.Type %t685) + store { ptr, i64, i64 } %t683, ptr %a688 + store { ptr, i64, i64 } %t686, ptr %a689 + call void @finch_str_concat(ptr %a687, ptr %a688, ptr %a689) + store { ptr, i64, i64 } %t683, ptr %a690 + call void @finch_str_drop(ptr %a690) + store { ptr, i64, i64 } %t686, ptr %a691 + call void @finch_str_drop(ptr %a691) + %t692 = load { ptr, i64, i64 }, ptr %a687 + store { ptr, i64, i64 } %t692, ptr %a694 + store { ptr, i64, i64 } { ptr @.str.5557, i64 6, i64 0 }, ptr %a695 + call void @finch_str_concat(ptr %a693, ptr %a694, ptr %a695) + store { ptr, i64, i64 } %t692, ptr %a696 + call void @finch_str_drop(ptr %a696) + %t697 = load { ptr, i64, i64 }, ptr %a693 + %t698 = load { ptr, i64, i64 }, ptr %a661 + 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) + store { ptr, i64, i64 } %t697, ptr %a702 + call void @finch_str_drop(ptr %a702) + %t703 = load { ptr, i64, i64 }, ptr %a699 + store { ptr, i64, i64 } %t703, ptr %a705 + store { ptr, i64, i64 } { ptr @.str.5558, i64 6, i64 0 }, ptr %a706 + call void @finch_str_concat(ptr %a704, ptr %a705, ptr %a706) + store { ptr, i64, i64 } %t703, ptr %a707 + call void @finch_str_drop(ptr %a707) + %t708 = load { ptr, i64, i64 }, ptr %a704 + %t709 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 + %t710 = load i64, ptr %t709 + call void @finch_str_from_int(ptr %a711, i64 %t710) + %t712 = load { ptr, i64, i64 }, ptr %a711 + store { ptr, i64, i64 } %t708, ptr %a714 + store { ptr, i64, i64 } %t712, ptr %a715 + call void @finch_str_concat(ptr %a713, ptr %a714, ptr %a715) + store { ptr, i64, i64 } %t708, ptr %a716 + call void @finch_str_drop(ptr %a716) + store { ptr, i64, i64 } %t712, ptr %a717 + call void @finch_str_drop(ptr %a717) + %t718 = load { ptr, i64, i64 }, ptr %a713 + store { ptr, i64, i64 } %t718, ptr %a720 + store { ptr, i64, i64 } { ptr @.str.5559, i64 1, i64 0 }, ptr %a721 + call void @finch_str_concat(ptr %a719, ptr %a720, ptr %a721) + store { ptr, i64, i64 } %t718, ptr %a722 + call void @finch_str_drop(ptr %a722) + %t723 = load { ptr, i64, i64 }, ptr %a719 + call void @finch.gen.emit(ptr %t662, { ptr, i64, i64 } %t723) + store { ptr, i64, i64 } %t723, ptr %a724 + call void @finch_str_drop(ptr %a724) + %t725 = load ptr, ptr %a1 + %t726 = load { ptr, i64, i64 }, ptr %a3 + %t727 = call { ptr, i64, i64 } @finch.gen.load(ptr %t725, { ptr, i64, i64 } { ptr @.str.5560, i64 3, i64 0 }, { ptr, i64, i64 } %t726) + store { ptr, i64, i64 } %t727, ptr %a728 + %t729 = load ptr, ptr %a1 + %t730 = load { ptr, i64, i64 }, ptr %a19 + %t731 = load { ptr, i64, i64 }, ptr %a647 + %t732 = load ptr, ptr %a1 + %t733 = load { ptr, i64, i64 }, ptr %a19 + store { ptr, i64, i64 } { ptr @.str.5561, i64 23, i64 0 }, 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 + store { ptr, i64, i64 } %t737, ptr %a739 + store { ptr, i64, i64 } { ptr @.str.5562, i64 6, i64 0 }, ptr %a740 + call void @finch_str_concat(ptr %a738, ptr %a739, ptr %a740) + store { ptr, i64, i64 } %t737, ptr %a741 + call void @finch_str_drop(ptr %a741) + %t742 = load { ptr, i64, i64 }, ptr %a738 + %t743 = load { ptr, i64, i64 }, ptr %a728 + 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) + store { ptr, i64, i64 } %t742, ptr %a747 + call void @finch_str_drop(ptr %a747) + %t748 = load { ptr, i64, i64 }, ptr %a744 + store { ptr, i64, i64 } %t748, ptr %a750 + store { ptr, i64, i64 } { ptr @.str.5563, i64 6, i64 0 }, ptr %a751 + call void @finch_str_concat(ptr %a749, ptr %a750, ptr %a751) + store { ptr, i64, i64 } %t748, ptr %a752 + call void @finch_str_drop(ptr %a752) + %t753 = load { ptr, i64, i64 }, ptr %a749 + %t754 = load { ptr, i64, i64 }, ptr %a622 + store { ptr, i64, i64 } %t753, ptr %a756 + store { ptr, i64, i64 } %t754, ptr %a757 + call void @finch_str_concat(ptr %a755, ptr %a756, ptr %a757) + store { ptr, i64, i64 } %t753, ptr %a758 + call void @finch_str_drop(ptr %a758) + %t759 = load { ptr, i64, i64 }, ptr %a755 + %t760 = call { ptr, i64, i64 } @finch.gen.op(ptr %t732, { ptr, i64, i64 } %t759) + store { ptr, i64, i64 } %t759, ptr %a761 + call void @finch_str_drop(ptr %a761) + call void @finch.gen.store(ptr %t729, { ptr, i64, i64 } %t730, { ptr, i64, i64 } %t731, { ptr, i64, i64 } %t760) + store { ptr, i64, i64 } %t760, ptr %a762 + call void @finch_str_drop(ptr %a762) + %t763 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5564, i64 4, i64 0 }) + %t764 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t763, 1 + call void @finch_str_drop(ptr %a728) + call void @finch_str_drop(ptr %a661) + call void @finch_str_drop(ptr %a647) + call void @finch_str_drop(ptr %a622) + call void @finch_str_drop(ptr %a39) + call void @finch_str_drop(ptr %a25) + call void @finch_str_drop(ptr %a19) + call void @finch.drop.S_ast_Type(ptr %a15) + ret %S.gen.Val %t764 +endif8497: + %t765 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t765, ptr %a766 + store { ptr, i64, i64 } { ptr @.str.5565, i64 6, i64 0 }, ptr %a767 + %t768 = call i32 @finch_str_eq(ptr %a766, ptr %a767) + %t769 = icmp ne i32 %t768, 0 + br i1 %t769, label %then8510, label %endif8512 +then8510: + %t770 = load ptr, ptr %a1 + %t771 = load %S.ast.Node, ptr %a2 + call void @finch.gen.need(ptr %t770, %S.ast.Node %t771, i64 1) + %t772 = load ptr, ptr %a1 + %t773 = load ptr, ptr %a1 + %t774 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t775 = load { ptr, i64, i64 }, ptr %t774 + %t776 = extractvalue { ptr, i64, i64 } %t775, 1 + %t777 = icmp uge i64 1, %t776 + br i1 %t777, label %range8513, label %inrange8514 +range8513: + call void @finch_panic_index(ptr @.str.5566, i64 5261, i64 1, i64 %t776) unreachable -inrange8066: - %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.5380, 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) - %t698 = load { ptr, i64, i64 }, ptr %a697 - store { ptr, i64, i64 } %t698, ptr %a699 - %t700 = load ptr, ptr %a1 - %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.5381, 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.5382, 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.5383, 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.5384, 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 - store { ptr, i64, i64 } %t721, ptr %a724 - store { ptr, i64, i64 } %t722, ptr %a725 - 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.5385, 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 - store { ptr, i64, i64 } %t730, ptr %a733 - store { ptr, i64, i64 } %t731, ptr %a734 - call void @finch_str_concat(ptr %a732, ptr %a733, ptr %a734) - %t735 = load { ptr, i64, i64 }, ptr %a732 - %t736 = call { ptr, i64, i64 } @finch.gen.op(ptr %t712, { ptr, i64, i64 } %t735) - %t737 = call { ptr, i64, i64 } @finch.gen.load(ptr %t710, { ptr, i64, i64 } %t711, { ptr, i64, i64 } %t736) - 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.5386, 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.5387, 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 - store { ptr, i64, i64 } %t748, ptr %a751 - store { ptr, i64, i64 } %t749, ptr %a752 - 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.5388, 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 - %t759 = load %S.ast.Type, ptr %a15 - %t760 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t758, %S.ast.Type %t759) - store { ptr, i64, i64 } %t757, 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.5389, 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) - %t769 = load { ptr, i64, i64 }, ptr %a738 - store { ptr, i64, i64 } %t769, ptr %a770 - call void @finch_str_copy(ptr %a771, ptr %a770) - %t772 = load { ptr, i64, i64 }, ptr %a771 - %t773 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t772, 0 - %t774 = load %S.ast.Type, ptr %a15 - store %S.ast.Type %t774, ptr %a775 - call void @finch.copy.S_ast_Type(ptr %a776, ptr %a775) - %t777 = load %S.ast.Type, ptr %a776 - %t778 = insertvalue %S.gen.Val %t773, %S.ast.Type %t777, 1 - %t779 = load ptr, ptr %a1 - %t780 = load %S.ast.Type, ptr %a15 - %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 -endif8062: - %t783 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t783, ptr %a784 - store { ptr, i64, i64 } { ptr @.str.5390, 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 %then8067, label %endif8069 -then8067: - %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) - %t790 = load ptr, ptr %a1 - %t791 = load ptr, ptr %a1 - %t792 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t793 = load { ptr, i64, i64 }, ptr %t792 - %t794 = extractvalue { ptr, i64, i64 } %t793, 1 - %t795 = icmp uge i64 1, %t794 - br i1 %t795, label %range8070, label %inrange8071 -range8070: - call void @finch_panic_index(ptr @.str.5391, i64 4876, i64 1, i64 %t794) +inrange8514: + %t778 = extractvalue { ptr, i64, i64 } %t775, 0 + %t779 = getelementptr inbounds %S.ast.Node, ptr %t778, i64 1 + %t780 = load %S.ast.Node, ptr %t779 + %t781 = call %S.gen.Val @finch.gen.expr(ptr %t773, %S.ast.Node %t780) + %t782 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5567, i64 3, i64 0 }) + %t783 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t784 = load { ptr, i64, i64 }, ptr %t783 + %t785 = extractvalue { ptr, i64, i64 } %t784, 1 + %t786 = icmp uge i64 1, %t785 + br i1 %t786, label %range8515, label %inrange8516 +range8515: + call void @finch_panic_index(ptr @.str.5568, i64 5261, i64 1, i64 %t785) unreachable -inrange8071: - %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.5392, 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 %range8072, label %inrange8073 -range8072: - call void @finch_panic_index(ptr @.str.5393, i64 4876, i64 1, i64 %t803) - unreachable -inrange8073: - %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.5394, 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) - %t812 = load { ptr, i64, i64 }, ptr %a811 - 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.5395, 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.5396, 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 +inrange8516: + %t787 = extractvalue { ptr, i64, i64 } %t784, 0 + %t788 = getelementptr inbounds %S.ast.Node, ptr %t787, i64 1 + %t789 = load %S.ast.Node, ptr %t788 + %t790 = call %S.gen.Val @finch.gen.coerce(ptr %t772, %S.gen.Val %t781, %S.ast.Type %t782, %S.ast.Node %t789, { ptr, i64, i64 } { ptr @.str.5569, i64 12, i64 0 }) + store %S.gen.Val %t781, ptr %a791 + call void @finch.drop.S_gen_Val(ptr %a791) + store %S.ast.Type %t782, ptr %a792 + call void @finch.drop.S_ast_Type(ptr %a792) + %t793 = extractvalue %S.gen.Val %t790, 0 + store { ptr, i64, i64 } %t793, ptr %a794 + call void @finch_str_copy(ptr %a795, ptr %a794) + %t796 = load { ptr, i64, i64 }, ptr %a795 + store %S.gen.Val %t790, ptr %a797 + call void @finch.drop.S_gen_Val(ptr %a797) + store { ptr, i64, i64 } %t796, ptr %a798 + %t799 = load ptr, ptr %a1 + %t800 = load { ptr, i64, i64 }, ptr %a798 + %t801 = load ptr, ptr %a1 + %t802 = load { ptr, i64, i64 }, ptr %a39 + %t803 = call { ptr, i64, i64 } @finch.gen.load(ptr %t801, { ptr, i64, i64 } { ptr @.str.5570, i64 3, i64 0 }, { ptr, i64, i64 } %t802) + %t804 = load %S.ast.Node, ptr %a2 + call void @finch.gen.boundsCheck(ptr %t799, { ptr, i64, i64 } %t800, { ptr, i64, i64 } %t803, %S.ast.Node %t804) + store { ptr, i64, i64 } %t803, ptr %a805 + call void @finch_str_drop(ptr %a805) + %t806 = load ptr, ptr %a1 + %t807 = load { ptr, i64, i64 }, ptr %a3 + %t808 = call { ptr, i64, i64 } @finch.gen.load(ptr %t806, { ptr, i64, i64 } { ptr @.str.5571, i64 3, i64 0 }, { ptr, i64, i64 } %t807) + store { ptr, i64, i64 } %t808, ptr %a809 + %t810 = load ptr, ptr %a1 + %t811 = load { ptr, i64, i64 }, ptr %a19 + %t812 = load ptr, ptr %a1 + %t813 = load { ptr, i64, i64 }, ptr %a19 + store { ptr, i64, i64 } { ptr @.str.5572, i64 23, i64 0 }, ptr %a815 + store { ptr, i64, i64 } %t813, ptr %a816 + call void @finch_str_concat(ptr %a814, ptr %a815, ptr %a816) + %t817 = load { ptr, i64, i64 }, ptr %a814 + store { ptr, i64, i64 } %t817, ptr %a819 + store { ptr, i64, i64 } { ptr @.str.5573, i64 6, i64 0 }, ptr %a820 + call void @finch_str_concat(ptr %a818, ptr %a819, ptr %a820) + store { ptr, i64, i64 } %t817, ptr %a821 + call void @finch_str_drop(ptr %a821) + %t822 = load { ptr, i64, i64 }, ptr %a818 + %t823 = load { ptr, i64, i64 }, ptr %a809 + store { ptr, i64, i64 } %t822, ptr %a825 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 + call void @finch_str_concat(ptr %a824, ptr %a825, ptr %a826) + store { ptr, i64, i64 } %t822, ptr %a827 + call void @finch_str_drop(ptr %a827) + %t828 = load { ptr, i64, i64 }, ptr %a824 store { ptr, i64, i64 } %t828, ptr %a830 - store { ptr, i64, i64 } { ptr @.str.5397, i64 6, i64 0 }, ptr %a831 + store { ptr, i64, i64 } { ptr @.str.5574, 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 - %t834 = load %S.ast.Type, ptr %a15 - %t835 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t833, %S.ast.Type %t834) - store { ptr, i64, i64 } %t832, 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 } %t828, ptr %a832 + call void @finch_str_drop(ptr %a832) + %t833 = load { ptr, i64, i64 }, ptr %a829 + %t834 = load { ptr, i64, i64 }, ptr %a798 + store { ptr, i64, i64 } %t833, ptr %a836 + store { ptr, i64, i64 } %t834, ptr %a837 + call void @finch_str_concat(ptr %a835, ptr %a836, ptr %a837) + store { ptr, i64, i64 } %t833, ptr %a838 + call void @finch_str_drop(ptr %a838) + %t839 = load { ptr, i64, i64 }, ptr %a835 + %t840 = call { ptr, i64, i64 } @finch.gen.op(ptr %t812, { ptr, i64, i64 } %t839) store { ptr, i64, i64 } %t839, ptr %a841 - store { ptr, i64, i64 } { ptr @.str.5398, 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.5399, i64 4, i64 0 }) - %t845 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t844, 1 - ret %S.gen.Val %t845 -endif8069: - %t846 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t846, ptr %a847 - store { ptr, i64, i64 } { ptr @.str.5400, 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 %then8074, label %endif8076 -then8074: - %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.5401, 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.5402, 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.5403, 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.5404, 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) - store { ptr, i64, i64 } %t871, ptr %a872 - %t873 = load ptr, ptr %a1 - %t874 = load { ptr, i64, i64 }, ptr %a872 - %t875 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t873, { ptr, i64, i64 } %t874) - 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.5405, 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.5406, 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 - store { ptr, i64, i64 } %t886, ptr %a889 - store { ptr, i64, i64 } %t887, ptr %a890 - 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.5407, 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 %range8077, label %inrange8078 -range8077: - call void @finch_panic_index(ptr @.str.5408, i64 4886, i64 3, i64 %t897) + call void @finch_str_drop(ptr %a841) + %t842 = call { ptr, i64, i64 } @finch.gen.load(ptr %t810, { ptr, i64, i64 } %t811, { ptr, i64, i64 } %t840) + store { ptr, i64, i64 } %t840, ptr %a843 + call void @finch_str_drop(ptr %a843) + store { ptr, i64, i64 } %t842, ptr %a844 + %t845 = load ptr, ptr %a1 + %t846 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } { ptr @.str.5575, i64 36, i64 0 }, 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 + store { ptr, i64, i64 } %t850, ptr %a852 + store { ptr, i64, i64 } { ptr @.str.5576, i64 6, i64 0 }, ptr %a853 + call void @finch_str_concat(ptr %a851, ptr %a852, ptr %a853) + store { ptr, i64, i64 } %t850, ptr %a854 + call void @finch_str_drop(ptr %a854) + %t855 = load { ptr, i64, i64 }, ptr %a851 + %t856 = load { ptr, i64, i64 }, ptr %a798 + store { ptr, i64, i64 } %t855, ptr %a858 + store { ptr, i64, i64 } %t856, ptr %a859 + call void @finch_str_concat(ptr %a857, ptr %a858, ptr %a859) + store { ptr, i64, i64 } %t855, ptr %a860 + call void @finch_str_drop(ptr %a860) + %t861 = load { ptr, i64, i64 }, ptr %a857 + store { ptr, i64, i64 } %t861, ptr %a863 + store { ptr, i64, i64 } { ptr @.str.5577, i64 6, i64 0 }, ptr %a864 + call void @finch_str_concat(ptr %a862, ptr %a863, ptr %a864) + store { ptr, i64, i64 } %t861, ptr %a865 + call void @finch_str_drop(ptr %a865) + %t866 = load { ptr, i64, i64 }, ptr %a862 + %t867 = load ptr, ptr %a1 + %t868 = load %S.ast.Type, ptr %a15 + %t869 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t867, %S.ast.Type %t868) + store { ptr, i64, i64 } %t866, ptr %a871 + store { ptr, i64, i64 } %t869, ptr %a872 + call void @finch_str_concat(ptr %a870, ptr %a871, ptr %a872) + store { ptr, i64, i64 } %t866, ptr %a873 + call void @finch_str_drop(ptr %a873) + store { ptr, i64, i64 } %t869, ptr %a874 + call void @finch_str_drop(ptr %a874) + %t875 = load { ptr, i64, i64 }, ptr %a870 + store { ptr, i64, i64 } %t875, ptr %a877 + store { ptr, i64, i64 } { ptr @.str.5578, i64 1, i64 0 }, ptr %a878 + call void @finch_str_concat(ptr %a876, ptr %a877, ptr %a878) + store { ptr, i64, i64 } %t875, ptr %a879 + call void @finch_str_drop(ptr %a879) + %t880 = load { ptr, i64, i64 }, ptr %a876 + call void @finch.gen.emit(ptr %t845, { ptr, i64, i64 } %t880) + store { ptr, i64, i64 } %t880, ptr %a881 + call void @finch_str_drop(ptr %a881) + %t882 = load { ptr, i64, i64 }, ptr %a844 + store { ptr, i64, i64 } %t882, ptr %a883 + call void @finch_str_copy(ptr %a884, ptr %a883) + %t885 = load { ptr, i64, i64 }, ptr %a884 + %t886 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t885, 0 + %t887 = load %S.ast.Type, ptr %a15 + store %S.ast.Type %t887, ptr %a888 + call void @finch.copy.S_ast_Type(ptr %a889, ptr %a888) + %t890 = load %S.ast.Type, ptr %a889 + %t891 = insertvalue %S.gen.Val %t886, %S.ast.Type %t890, 1 + %t892 = load ptr, ptr %a1 + %t893 = load %S.ast.Type, ptr %a15 + %t894 = call i1 @finch.gen.owning(ptr %t892, %S.ast.Type %t893) + %t895 = insertvalue %S.gen.Val %t891, i1 %t894, 2 + call void @finch_str_drop(ptr %a844) + call void @finch_str_drop(ptr %a809) + call void @finch_str_drop(ptr %a798) + call void @finch_str_drop(ptr %a39) + call void @finch_str_drop(ptr %a25) + call void @finch_str_drop(ptr %a19) + call void @finch.drop.S_ast_Type(ptr %a15) + ret %S.gen.Val %t895 +endif8512: + %t896 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t896, ptr %a897 + store { ptr, i64, i64 } { ptr @.str.5579, i64 6, i64 0 }, ptr %a898 + %t899 = call i32 @finch_str_eq(ptr %a897, ptr %a898) + %t900 = icmp ne i32 %t899, 0 + br i1 %t900, label %then8517, label %endif8519 +then8517: + %t901 = load ptr, ptr %a1 + %t902 = load %S.ast.Node, ptr %a2 + call void @finch.gen.need(ptr %t901, %S.ast.Node %t902, i64 1) + %t903 = load ptr, ptr %a1 + %t904 = load ptr, ptr %a1 + %t905 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t906 = load { ptr, i64, i64 }, ptr %t905 + %t907 = extractvalue { ptr, i64, i64 } %t906, 1 + %t908 = icmp uge i64 1, %t907 + br i1 %t908, label %range8520, label %inrange8521 +range8520: + call void @finch_panic_index(ptr @.str.5580, i64 5270, i64 1, i64 %t907) unreachable -inrange8078: - %t899 = extractvalue { ptr, i64, i64 } %t896, 0 - %t900 = getelementptr inbounds { ptr, i64, i64 }, ptr %t899, i64 3 - %t901 = load { ptr, i64, i64 }, ptr %t900 - store { ptr, i64, i64 } %t895, ptr %a903 - store { ptr, i64, i64 } %t901, ptr %a904 - call void @finch_str_concat(ptr %a902, ptr %a903, ptr %a904) - %t905 = load { ptr, i64, i64 }, ptr %a902 - %t906 = call { ptr, i64, i64 } @finch.gen.op(ptr %t877, { ptr, i64, i64 } %t905) - store { ptr, i64, i64 } %t906, ptr %a907 - %t908 = load ptr, ptr %a1 - %t909 = load ptr, ptr %a1 - %t910 = load { ptr, i64, i64 }, ptr %a856 - store { ptr, i64, i64 } { ptr @.str.5410, 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.5411, 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.5409, 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.5412, 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 %range8079, label %inrange8080 -range8079: - call void @finch_panic_index(ptr @.str.5413, i64 4887, i64 3, i64 %t929) +inrange8521: + %t909 = extractvalue { ptr, i64, i64 } %t906, 0 + %t910 = getelementptr inbounds %S.ast.Node, ptr %t909, i64 1 + %t911 = load %S.ast.Node, ptr %t910 + %t912 = call %S.gen.Val @finch.gen.expr(ptr %t904, %S.ast.Node %t911) + %t913 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5581, i64 3, i64 0 }) + %t914 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t915 = load { ptr, i64, i64 }, ptr %t914 + %t916 = extractvalue { ptr, i64, i64 } %t915, 1 + %t917 = icmp uge i64 1, %t916 + br i1 %t917, label %range8522, label %inrange8523 +range8522: + call void @finch_panic_index(ptr @.str.5582, i64 5270, i64 1, i64 %t916) unreachable -inrange8080: - %t931 = extractvalue { ptr, i64, i64 } %t928, 0 - %t932 = getelementptr inbounds { ptr, i64, i64 }, ptr %t931, i64 3 - %t933 = load { ptr, i64, i64 }, ptr %t932 - store { ptr, i64, i64 } %t927, ptr %a935 - store { ptr, i64, i64 } %t933, ptr %a936 - call void @finch_str_concat(ptr %a934, ptr %a935, ptr %a936) - %t937 = load { ptr, i64, i64 }, ptr %a934 - %t938 = call { ptr, i64, i64 } @finch.gen.op(ptr %t908, { ptr, i64, i64 } %t937) - 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.5414, 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.5415, i64 6, i64 0 }, ptr %a948 +inrange8523: + %t918 = extractvalue { ptr, i64, i64 } %t915, 0 + %t919 = getelementptr inbounds %S.ast.Node, ptr %t918, i64 1 + %t920 = load %S.ast.Node, ptr %t919 + %t921 = call %S.gen.Val @finch.gen.coerce(ptr %t903, %S.gen.Val %t912, %S.ast.Type %t913, %S.ast.Node %t920, { ptr, i64, i64 } { ptr @.str.5583, i64 14, i64 0 }) + store %S.gen.Val %t912, ptr %a922 + call void @finch.drop.S_gen_Val(ptr %a922) + store %S.ast.Type %t913, ptr %a923 + call void @finch.drop.S_ast_Type(ptr %a923) + %t924 = extractvalue %S.gen.Val %t921, 0 + store { ptr, i64, i64 } %t924, ptr %a925 + call void @finch_str_copy(ptr %a926, ptr %a925) + %t927 = load { ptr, i64, i64 }, ptr %a926 + store %S.gen.Val %t921, ptr %a928 + call void @finch.drop.S_gen_Val(ptr %a928) + store { ptr, i64, i64 } %t927, ptr %a929 + %t930 = load ptr, ptr %a1 + %t931 = load { ptr, i64, i64 }, ptr %a3 + %t932 = load %S.ast.Type, ptr %a4 + %t933 = load { ptr, i64, i64 }, ptr %a929 + call void @finch.gen.dropFrom(ptr %t930, { ptr, i64, i64 } %t931, %S.ast.Type %t932, { ptr, i64, i64 } %t933) + %t934 = load ptr, ptr %a1 + %t935 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } { ptr @.str.5584, i64 32, i64 0 }, ptr %a937 + store { ptr, i64, i64 } %t935, ptr %a938 + call void @finch_str_concat(ptr %a936, ptr %a937, ptr %a938) + %t939 = load { ptr, i64, i64 }, ptr %a936 + store { ptr, i64, i64 } %t939, ptr %a941 + store { ptr, i64, i64 } { ptr @.str.5585, i64 6, i64 0 }, ptr %a942 + call void @finch_str_concat(ptr %a940, ptr %a941, ptr %a942) + store { ptr, i64, i64 } %t939, ptr %a943 + call void @finch_str_drop(ptr %a943) + %t944 = load { ptr, i64, i64 }, ptr %a940 + %t945 = load { ptr, i64, i64 }, ptr %a929 + store { ptr, i64, i64 } %t944, ptr %a947 + store { ptr, i64, i64 } %t945, 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 - store { ptr, i64, i64 } %t949, ptr %a952 - store { ptr, i64, i64 } %t950, ptr %a953 + store { ptr, i64, i64 } %t944, ptr %a949 + call void @finch_str_drop(ptr %a949) + %t950 = load { ptr, i64, i64 }, ptr %a946 + store { ptr, i64, i64 } %t950, ptr %a952 + store { ptr, i64, i64 } { ptr @.str.5586, i64 6, i64 0 }, 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.5416, 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 + store { ptr, i64, i64 } %t950, ptr %a954 + call void @finch_str_drop(ptr %a954) + %t955 = load { ptr, i64, i64 }, ptr %a951 + %t956 = load ptr, ptr %a1 + %t957 = load %S.ast.Type, ptr %a15 + %t958 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t956, %S.ast.Type %t957) + store { ptr, i64, i64 } %t955, ptr %a960 store { ptr, i64, i64 } %t958, ptr %a961 - store { ptr, i64, i64 } %t959, ptr %a962 - call void @finch_str_concat(ptr %a960, ptr %a961, ptr %a962) - %t963 = load { ptr, i64, i64 }, ptr %a960 - %t964 = call { ptr, i64, i64 } @finch.gen.op(ptr %t940, { ptr, i64, i64 } %t963) - store { ptr, i64, i64 } %t964, ptr %a965 - %t966 = load ptr, ptr %a1 - %t967 = load { ptr, i64, i64 }, ptr %a19 - %t968 = load { ptr, i64, i64 }, ptr %a907 - %t969 = call { ptr, i64, i64 } @finch.gen.load(ptr %t966, { ptr, i64, i64 } %t967, { ptr, i64, i64 } %t968) + call void @finch_str_concat(ptr %a959, ptr %a960, ptr %a961) + store { ptr, i64, i64 } %t955, ptr %a962 + call void @finch_str_drop(ptr %a962) + store { ptr, i64, i64 } %t958, ptr %a963 + call void @finch_str_drop(ptr %a963) + %t964 = load { ptr, i64, i64 }, ptr %a959 + store { ptr, i64, i64 } %t964, ptr %a966 + store { ptr, i64, i64 } { ptr @.str.5587, i64 1, i64 0 }, ptr %a967 + call void @finch_str_concat(ptr %a965, ptr %a966, ptr %a967) + store { ptr, i64, i64 } %t964, ptr %a968 + call void @finch_str_drop(ptr %a968) + %t969 = load { ptr, i64, i64 }, ptr %a965 + call void @finch.gen.emit(ptr %t934, { ptr, i64, i64 } %t969) store { ptr, i64, i64 } %t969, ptr %a970 - %t971 = load ptr, ptr %a1 - %t972 = load { ptr, i64, i64 }, ptr %a19 - %t973 = load { ptr, i64, i64 }, ptr %a965 - %t974 = call { ptr, i64, i64 } @finch.gen.load(ptr %t971, { ptr, i64, i64 } %t972, { ptr, i64, i64 } %t973) - store { ptr, i64, i64 } %t974, ptr %a975 - %t976 = load ptr, ptr %a1 - %t977 = load { ptr, i64, i64 }, ptr %a19 - %t978 = load { ptr, i64, i64 }, ptr %a975 - %t979 = load { ptr, i64, i64 }, ptr %a907 - call void @finch.gen.store(ptr %t976, { ptr, i64, i64 } %t977, { ptr, i64, i64 } %t978, { ptr, i64, i64 } %t979) + call void @finch_str_drop(ptr %a970) + %t971 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5588, i64 4, i64 0 }) + %t972 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t971, 1 + call void @finch_str_drop(ptr %a929) + call void @finch_str_drop(ptr %a39) + call void @finch_str_drop(ptr %a25) + call void @finch_str_drop(ptr %a19) + call void @finch.drop.S_ast_Type(ptr %a15) + ret %S.gen.Val %t972 +endif8519: + %t973 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t973, ptr %a974 + store { ptr, i64, i64 } { ptr @.str.5589, i64 7, i64 0 }, ptr %a975 + %t976 = call i32 @finch_str_eq(ptr %a974, ptr %a975) + %t977 = icmp ne i32 %t976, 0 + br i1 %t977, label %then8524, label %endif8526 +then8524: + %t978 = load ptr, ptr %a1 + %t979 = load %S.ast.Node, ptr %a2 + call void @finch.gen.need(ptr %t978, %S.ast.Node %t979, i64 0) %t980 = load ptr, ptr %a1 - %t981 = load { ptr, i64, i64 }, ptr %a19 - %t982 = load { ptr, i64, i64 }, ptr %a970 - %t983 = load { ptr, i64, i64 }, ptr %a965 - call void @finch.gen.store(ptr %t980, { ptr, i64, i64 } %t981, { ptr, i64, i64 } %t982, { ptr, i64, i64 } %t983) + %t981 = load { ptr, i64, i64 }, ptr %a39 + %t982 = call { ptr, i64, i64 } @finch.gen.load(ptr %t980, { ptr, i64, i64 } { ptr @.str.5590, i64 3, i64 0 }, { ptr, i64, i64 } %t981) + store { ptr, i64, i64 } %t982, ptr %a983 %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.5417, i64 4, i64 0 }) - %t987 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t986, 1 - ret %S.gen.Val %t987 -endif8076: - %t988 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t988, ptr %a989 - store { ptr, i64, i64 } { ptr @.str.5418, 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 %then8081, label %endif8083 -then8081: - %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) - %t995 = load ptr, ptr %a1 - %t996 = load ptr, ptr %a1 - %t997 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t998 = load { ptr, i64, i64 }, ptr %t997 - %t999 = extractvalue { ptr, i64, i64 } %t998, 1 - %t1000 = icmp uge i64 1, %t999 - br i1 %t1000, label %range8084, label %inrange8085 -range8084: - call void @finch_panic_index(ptr @.str.5419, i64 4898, i64 1, i64 %t999) + %t985 = load { ptr, i64, i64 }, ptr %a3 + %t986 = call { ptr, i64, i64 } @finch.gen.load(ptr %t984, { ptr, i64, i64 } { ptr @.str.5591, i64 3, i64 0 }, { ptr, i64, i64 } %t985) + store { ptr, i64, i64 } %t986, ptr %a987 + %t988 = load ptr, ptr %a1 + %t989 = load { ptr, i64, i64 }, ptr %a983 + store { ptr, i64, i64 } { ptr @.str.5592, i64 9, i64 0 }, ptr %a991 + store { ptr, i64, i64 } %t989, ptr %a992 + call void @finch_str_concat(ptr %a990, ptr %a991, ptr %a992) + %t993 = load { ptr, i64, i64 }, ptr %a990 + store { ptr, i64, i64 } %t993, ptr %a995 + store { ptr, i64, i64 } { ptr @.str.5593, i64 3, i64 0 }, ptr %a996 + call void @finch_str_concat(ptr %a994, ptr %a995, ptr %a996) + store { ptr, i64, i64 } %t993, ptr %a997 + call void @finch_str_drop(ptr %a997) + %t998 = load { ptr, i64, i64 }, ptr %a994 + %t999 = call { ptr, i64, i64 } @finch.gen.op(ptr %t988, { ptr, i64, i64 } %t998) + store { ptr, i64, i64 } %t998, ptr %a1000 + call void @finch_str_drop(ptr %a1000) + store { ptr, i64, i64 } %t999, ptr %a1001 + %t1002 = load ptr, ptr %a1 + %t1003 = load { ptr, i64, i64 }, ptr %a1001 + %t1004 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t1002, { ptr, i64, i64 } %t1003) + store { ptr, i64, i64 } %t1004, ptr %a1005 + %t1006 = load ptr, ptr %a1 + %t1007 = load { ptr, i64, i64 }, ptr %a19 + store { ptr, i64, i64 } { ptr @.str.5594, i64 23, i64 0 }, ptr %a1009 + store { ptr, i64, i64 } %t1007, ptr %a1010 + call void @finch_str_concat(ptr %a1008, ptr %a1009, ptr %a1010) + %t1011 = load { ptr, i64, i64 }, ptr %a1008 + store { ptr, i64, i64 } %t1011, ptr %a1013 + store { ptr, i64, i64 } { ptr @.str.5595, i64 6, i64 0 }, ptr %a1014 + call void @finch_str_concat(ptr %a1012, ptr %a1013, ptr %a1014) + store { ptr, i64, i64 } %t1011, ptr %a1015 + call void @finch_str_drop(ptr %a1015) + %t1016 = load { ptr, i64, i64 }, ptr %a1012 + %t1017 = load { ptr, i64, i64 }, ptr %a987 + store { ptr, i64, i64 } %t1016, ptr %a1019 + store { ptr, i64, i64 } %t1017, ptr %a1020 + call void @finch_str_concat(ptr %a1018, ptr %a1019, ptr %a1020) + store { ptr, i64, i64 } %t1016, ptr %a1021 + call void @finch_str_drop(ptr %a1021) + %t1022 = load { ptr, i64, i64 }, ptr %a1018 + store { ptr, i64, i64 } %t1022, ptr %a1024 + store { ptr, i64, i64 } { ptr @.str.5596, i64 6, i64 0 }, ptr %a1025 + call void @finch_str_concat(ptr %a1023, ptr %a1024, ptr %a1025) + store { ptr, i64, i64 } %t1022, ptr %a1026 + call void @finch_str_drop(ptr %a1026) + %t1027 = load { ptr, i64, i64 }, ptr %a1023 + %t1028 = load { ptr, i64, i64 }, ptr %a1005 + %t1029 = extractvalue { ptr, i64, i64 } %t1028, 1 + %t1030 = icmp uge i64 3, %t1029 + br i1 %t1030, label %range8527, label %inrange8528 +range8527: + call void @finch_panic_index(ptr @.str.5597, i64 5281, i64 3, i64 %t1029) unreachable -inrange8085: - %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.5420, 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 %range8086, label %inrange8087 -range8086: - call void @finch_panic_index(ptr @.str.5421, i64 4898, i64 1, i64 %t1008) - unreachable -inrange8087: - %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.5422, 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) - %t1017 = load { ptr, i64, i64 }, ptr %a1016 - store { ptr, i64, i64 } %t1017, ptr %a1018 - %t1019 = load ptr, ptr %a1 - %t1020 = load ptr, ptr %a1 - %t1021 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1022 = load { ptr, i64, i64 }, ptr %t1021 - %t1023 = extractvalue { ptr, i64, i64 } %t1022, 1 - %t1024 = icmp uge i64 2, %t1023 - br i1 %t1024, label %range8088, label %inrange8089 -range8088: - call void @finch_panic_index(ptr @.str.5423, i64 4899, i64 2, i64 %t1023) - unreachable -inrange8089: - %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.5424, 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 %range8090, label %inrange8091 -range8090: - call void @finch_panic_index(ptr @.str.5425, i64 4899, i64 2, i64 %t1032) - unreachable -inrange8091: - %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.5426, 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) - %t1041 = load { ptr, i64, i64 }, ptr %a1040 - store { ptr, i64, i64 } %t1041, ptr %a1042 +inrange8528: + %t1031 = extractvalue { ptr, i64, i64 } %t1028, 0 + %t1032 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1031, i64 3 + %t1033 = load { ptr, i64, i64 }, ptr %t1032 + store { ptr, i64, i64 } %t1027, ptr %a1035 + store { ptr, i64, i64 } %t1033, ptr %a1036 + call void @finch_str_concat(ptr %a1034, ptr %a1035, ptr %a1036) + store { ptr, i64, i64 } %t1027, ptr %a1037 + call void @finch_str_drop(ptr %a1037) + %t1038 = load { ptr, i64, i64 }, ptr %a1034 + %t1039 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1006, { ptr, i64, i64 } %t1038) + store { ptr, i64, i64 } %t1038, ptr %a1040 + call void @finch_str_drop(ptr %a1040) + store { ptr, i64, i64 } %t1039, ptr %a1041 + %t1042 = load ptr, ptr %a1 %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.5427, 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.5428, i64 13, i64 0 }, ptr %a1050 - store { ptr, i64, i64 } %t1048, ptr %a1051 + %t1044 = load { ptr, i64, i64 }, ptr %a983 + store { ptr, i64, i64 } { ptr @.str.5599, i64 8, i64 0 }, ptr %a1046 + store { ptr, i64, i64 } %t1044, ptr %a1047 + call void @finch_str_concat(ptr %a1045, ptr %a1046, ptr %a1047) + %t1048 = load { ptr, i64, i64 }, ptr %a1045 + store { ptr, i64, i64 } %t1048, ptr %a1050 + store { ptr, i64, i64 } { ptr @.str.5600, i64 3, i64 0 }, 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.5429, 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.5430, i64 13, i64 0 }, ptr %a1062 - store { ptr, i64, i64 } %t1060, ptr %a1063 + store { ptr, i64, i64 } %t1048, ptr %a1052 + call void @finch_str_drop(ptr %a1052) + %t1053 = load { ptr, i64, i64 }, ptr %a1049 + %t1054 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1043, { ptr, i64, i64 } %t1053) + store { ptr, i64, i64 } %t1053, ptr %a1055 + call void @finch_str_drop(ptr %a1055) + store { ptr, i64, i64 } { ptr @.str.5598, i64 8, i64 0 }, ptr %a1057 + store { ptr, i64, i64 } %t1054, ptr %a1058 + call void @finch_str_concat(ptr %a1056, ptr %a1057, ptr %a1058) + store { ptr, i64, i64 } %t1054, ptr %a1059 + call void @finch_str_drop(ptr %a1059) + %t1060 = load { ptr, i64, i64 }, ptr %a1056 + store { ptr, i64, i64 } %t1060, ptr %a1062 + store { ptr, i64, i64 } { ptr @.str.5601, i64 2, i64 0 }, 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.5431, 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 - store { ptr, i64, i64 } %t1068, ptr %a1071 - store { ptr, i64, i64 } %t1069, ptr %a1072 - call void @finch_str_concat(ptr %a1070, ptr %a1071, ptr %a1072) - %t1073 = load { ptr, i64, i64 }, ptr %a1070 - %t1074 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1059, { ptr, i64, i64 } %t1073) - 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.5432, 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.5433, i64 2, i64 0 }, ptr %a1084 + store { ptr, i64, i64 } %t1060, ptr %a1064 + call void @finch_str_drop(ptr %a1064) + %t1065 = load { ptr, i64, i64 }, ptr %a1061 + %t1066 = load { ptr, i64, i64 }, ptr %a1005 + %t1067 = extractvalue { ptr, i64, i64 } %t1066, 1 + %t1068 = icmp uge i64 3, %t1067 + br i1 %t1068, label %range8529, label %inrange8530 +range8529: + call void @finch_panic_index(ptr @.str.5602, i64 5282, i64 3, i64 %t1067) + unreachable +inrange8530: + %t1069 = extractvalue { ptr, i64, i64 } %t1066, 0 + %t1070 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1069, i64 3 + %t1071 = load { ptr, i64, i64 }, ptr %t1070 + store { ptr, i64, i64 } %t1065, ptr %a1073 + store { ptr, i64, i64 } %t1071, ptr %a1074 + call void @finch_str_concat(ptr %a1072, ptr %a1073, ptr %a1074) + store { ptr, i64, i64 } %t1065, ptr %a1075 + call void @finch_str_drop(ptr %a1075) + %t1076 = load { ptr, i64, i64 }, ptr %a1072 + %t1077 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1042, { ptr, i64, i64 } %t1076) + store { ptr, i64, i64 } %t1076, ptr %a1078 + call void @finch_str_drop(ptr %a1078) + store { ptr, i64, i64 } %t1077, ptr %a1079 + %t1080 = load ptr, ptr %a1 + %t1081 = load { ptr, i64, i64 }, ptr %a19 + store { ptr, i64, i64 } { ptr @.str.5603, i64 23, i64 0 }, ptr %a1083 + store { ptr, i64, i64 } %t1081, 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 - store { ptr, i64, i64 } %t1085, ptr %a1088 - store { ptr, i64, i64 } %t1086, ptr %a1089 - call void @finch_str_concat(ptr %a1087, ptr %a1088, ptr %a1089) - %t1090 = load { ptr, i64, i64 }, ptr %a1087 - %t1091 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1076, { ptr, i64, i64 } %t1090) - store { ptr, i64, i64 } %t1091, ptr %a1092 - %t1093 = load ptr, ptr %a1 - %t1094 = load ptr, ptr %a1 - %t1095 = load ptr, ptr %a1 - %t1096 = load { ptr, i64, i64 }, ptr %a1058 - store { ptr, i64, i64 } { ptr @.str.5435, i64 6, i64 0 }, ptr %a1098 - store { ptr, i64, i64 } %t1096, ptr %a1099 + store { ptr, i64, i64 } %t1085, ptr %a1087 + store { ptr, i64, i64 } { ptr @.str.5604, i64 6, i64 0 }, ptr %a1088 + call void @finch_str_concat(ptr %a1086, ptr %a1087, ptr %a1088) + store { ptr, i64, i64 } %t1085, ptr %a1089 + call void @finch_str_drop(ptr %a1089) + %t1090 = load { ptr, i64, i64 }, ptr %a1086 + %t1091 = load { ptr, i64, i64 }, ptr %a987 + store { ptr, i64, i64 } %t1090, ptr %a1093 + store { ptr, i64, i64 } %t1091, ptr %a1094 + call void @finch_str_concat(ptr %a1092, ptr %a1093, ptr %a1094) + store { ptr, i64, i64 } %t1090, ptr %a1095 + call void @finch_str_drop(ptr %a1095) + %t1096 = load { ptr, i64, i64 }, ptr %a1092 + store { ptr, i64, i64 } %t1096, ptr %a1098 + store { ptr, i64, i64 } { ptr @.str.5605, i64 6, i64 0 }, 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.5436, 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 - store { ptr, i64, i64 } %t1104, ptr %a1107 - store { ptr, i64, i64 } %t1105, ptr %a1108 - 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.5434, 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.5437, 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 - store { ptr, i64, i64 } %t1118, ptr %a1121 - store { ptr, i64, i64 } %t1119, ptr %a1122 - call void @finch_str_concat(ptr %a1120, ptr %a1121, ptr %a1122) + store { ptr, i64, i64 } %t1096, ptr %a1100 + call void @finch_str_drop(ptr %a1100) + %t1101 = load { ptr, i64, i64 }, ptr %a1097 + %t1102 = load { ptr, i64, i64 }, ptr %a1079 + store { ptr, i64, i64 } %t1101, ptr %a1104 + store { ptr, i64, i64 } %t1102, ptr %a1105 + call void @finch_str_concat(ptr %a1103, ptr %a1104, ptr %a1105) + store { ptr, i64, i64 } %t1101, ptr %a1106 + call void @finch_str_drop(ptr %a1106) + %t1107 = load { ptr, i64, i64 }, ptr %a1103 + %t1108 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1080, { ptr, i64, i64 } %t1107) + store { ptr, i64, i64 } %t1107, ptr %a1109 + call void @finch_str_drop(ptr %a1109) + store { ptr, i64, i64 } %t1108, ptr %a1110 + %t1111 = load ptr, ptr %a1 + %t1112 = load { ptr, i64, i64 }, ptr %a19 + %t1113 = load { ptr, i64, i64 }, ptr %a1041 + %t1114 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1111, { ptr, i64, i64 } %t1112, { ptr, i64, i64 } %t1113) + store { ptr, i64, i64 } %t1114, ptr %a1115 + %t1116 = load ptr, ptr %a1 + %t1117 = load { ptr, i64, i64 }, ptr %a19 + %t1118 = load { ptr, i64, i64 }, ptr %a1110 + %t1119 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1116, { ptr, i64, i64 } %t1117, { ptr, i64, i64 } %t1118) + store { ptr, i64, i64 } %t1119, ptr %a1120 + %t1121 = load ptr, ptr %a1 + %t1122 = load { ptr, i64, i64 }, ptr %a19 %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.5438, 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.5439, 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.5440, 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 - store { ptr, i64, i64 } %t1135, ptr %a1138 - store { ptr, i64, i64 } %t1136, ptr %a1139 - call void @finch_str_concat(ptr %a1137, ptr %a1138, ptr %a1139) - %t1140 = load { ptr, i64, i64 }, ptr %a1137 - %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.5441, 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.5442, 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.5443, 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 - store { ptr, i64, i64 } %t1155, ptr %a1158 - store { ptr, i64, i64 } %t1156, ptr %a1159 - 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.5444, 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 - %t1166 = load %S.ast.Type, ptr %a15 - %t1167 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t1165, %S.ast.Type %t1166) - store { ptr, i64, i64 } %t1164, ptr %a1169 - store { ptr, i64, i64 } %t1167, ptr %a1170 - 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.5445, 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.5446, 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.5447, 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 - %t1186 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t1184, { ptr, i64, i64 } %t1185) - 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.5448, 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.5449, 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 - store { ptr, i64, i64 } %t1197, ptr %a1200 - store { ptr, i64, i64 } %t1198, ptr %a1201 - 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.5450, 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 %range8092, label %inrange8093 -range8092: - call void @finch_panic_index(ptr @.str.5451, i64 4911, i64 3, i64 %t1208) + %t1124 = load { ptr, i64, i64 }, ptr %a1041 + call void @finch.gen.store(ptr %t1121, { ptr, i64, i64 } %t1122, { ptr, i64, i64 } %t1123, { ptr, i64, i64 } %t1124) + %t1125 = load ptr, ptr %a1 + %t1126 = load { ptr, i64, i64 }, ptr %a19 + %t1127 = load { ptr, i64, i64 }, ptr %a1115 + %t1128 = load { ptr, i64, i64 }, ptr %a1110 + call void @finch.gen.store(ptr %t1125, { ptr, i64, i64 } %t1126, { ptr, i64, i64 } %t1127, { ptr, i64, i64 } %t1128) + %t1129 = load ptr, ptr %a1 + %t1130 = load { ptr, i64, i64 }, ptr %a1005 + call void @finch.gen.loopEnd(ptr %t1129, { ptr, i64, i64 } %t1130) + %t1131 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5606, i64 4, i64 0 }) + %t1132 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t1131, 1 + call void @finch_str_drop(ptr %a1120) + call void @finch_str_drop(ptr %a1115) + call void @finch_str_drop(ptr %a1110) + call void @finch_str_drop(ptr %a1079) + call void @finch_str_drop(ptr %a1041) + call void @finch.drop.arr_str(ptr %a1005) + call void @finch_str_drop(ptr %a1001) + call void @finch_str_drop(ptr %a987) + call void @finch_str_drop(ptr %a983) + call void @finch_str_drop(ptr %a39) + call void @finch_str_drop(ptr %a25) + call void @finch_str_drop(ptr %a19) + call void @finch.drop.S_ast_Type(ptr %a15) + ret %S.gen.Val %t1132 +endif8526: + %t1133 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t1133, ptr %a1134 + store { ptr, i64, i64 } { ptr @.str.5607, i64 5, i64 0 }, ptr %a1135 + %t1136 = call i32 @finch_str_eq(ptr %a1134, ptr %a1135) + %t1137 = icmp ne i32 %t1136, 0 + br i1 %t1137, label %then8531, label %endif8533 +then8531: + %t1138 = load ptr, ptr %a1 + %t1139 = load %S.ast.Node, ptr %a2 + call void @finch.gen.need(ptr %t1138, %S.ast.Node %t1139, i64 2) + %t1140 = load ptr, ptr %a1 + %t1141 = load ptr, ptr %a1 + %t1142 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t1143 = load { ptr, i64, i64 }, ptr %t1142 + %t1144 = extractvalue { ptr, i64, i64 } %t1143, 1 + %t1145 = icmp uge i64 1, %t1144 + br i1 %t1145, label %range8534, label %inrange8535 +range8534: + call void @finch_panic_index(ptr @.str.5608, i64 5293, i64 1, i64 %t1144) unreachable -inrange8093: - %t1210 = extractvalue { ptr, i64, i64 } %t1207, 0 - %t1211 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1210, i64 3 - %t1212 = load { ptr, i64, i64 }, ptr %t1211 - store { ptr, i64, i64 } %t1206, ptr %a1214 - store { ptr, i64, i64 } %t1212, ptr %a1215 - call void @finch_str_concat(ptr %a1213, ptr %a1214, ptr %a1215) - %t1216 = load { ptr, i64, i64 }, ptr %a1213 - %t1217 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1188, { ptr, i64, i64 } %t1216) - 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.5452, 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.5453, 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 - store { ptr, i64, i64 } %t1228, ptr %a1231 - store { ptr, i64, i64 } %t1229, ptr %a1232 - 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.5454, i64 6, i64 0 }, ptr %a1236 +inrange8535: + %t1146 = extractvalue { ptr, i64, i64 } %t1143, 0 + %t1147 = getelementptr inbounds %S.ast.Node, ptr %t1146, i64 1 + %t1148 = load %S.ast.Node, ptr %t1147 + %t1149 = call %S.gen.Val @finch.gen.expr(ptr %t1141, %S.ast.Node %t1148) + %t1150 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5609, i64 3, i64 0 }) + %t1151 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t1152 = load { ptr, i64, i64 }, ptr %t1151 + %t1153 = extractvalue { ptr, i64, i64 } %t1152, 1 + %t1154 = icmp uge i64 1, %t1153 + br i1 %t1154, label %range8536, label %inrange8537 +range8536: + call void @finch_panic_index(ptr @.str.5610, i64 5293, i64 1, i64 %t1153) + unreachable +inrange8537: + %t1155 = extractvalue { ptr, i64, i64 } %t1152, 0 + %t1156 = getelementptr inbounds %S.ast.Node, ptr %t1155, i64 1 + %t1157 = load %S.ast.Node, ptr %t1156 + %t1158 = call %S.gen.Val @finch.gen.coerce(ptr %t1140, %S.gen.Val %t1149, %S.ast.Type %t1150, %S.ast.Node %t1157, { ptr, i64, i64 } { ptr @.str.5611, i64 9, i64 0 }) + store %S.gen.Val %t1149, ptr %a1159 + call void @finch.drop.S_gen_Val(ptr %a1159) + store %S.ast.Type %t1150, ptr %a1160 + call void @finch.drop.S_ast_Type(ptr %a1160) + %t1161 = extractvalue %S.gen.Val %t1158, 0 + store { ptr, i64, i64 } %t1161, ptr %a1162 + call void @finch_str_copy(ptr %a1163, ptr %a1162) + %t1164 = load { ptr, i64, i64 }, ptr %a1163 + store %S.gen.Val %t1158, ptr %a1165 + call void @finch.drop.S_gen_Val(ptr %a1165) + store { ptr, i64, i64 } %t1164, ptr %a1166 + %t1167 = load ptr, ptr %a1 + %t1168 = load ptr, ptr %a1 + %t1169 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t1170 = load { ptr, i64, i64 }, ptr %t1169 + %t1171 = extractvalue { ptr, i64, i64 } %t1170, 1 + %t1172 = icmp uge i64 2, %t1171 + br i1 %t1172, label %range8538, label %inrange8539 +range8538: + call void @finch_panic_index(ptr @.str.5612, i64 5294, i64 2, i64 %t1171) + unreachable +inrange8539: + %t1173 = extractvalue { ptr, i64, i64 } %t1170, 0 + %t1174 = getelementptr inbounds %S.ast.Node, ptr %t1173, i64 2 + %t1175 = load %S.ast.Node, ptr %t1174 + %t1176 = call %S.gen.Val @finch.gen.expr(ptr %t1168, %S.ast.Node %t1175) + %t1177 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5613, i64 3, i64 0 }) + %t1178 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t1179 = load { ptr, i64, i64 }, ptr %t1178 + %t1180 = extractvalue { ptr, i64, i64 } %t1179, 1 + %t1181 = icmp uge i64 2, %t1180 + br i1 %t1181, label %range8540, label %inrange8541 +range8540: + call void @finch_panic_index(ptr @.str.5614, i64 5294, i64 2, i64 %t1180) + unreachable +inrange8541: + %t1182 = extractvalue { ptr, i64, i64 } %t1179, 0 + %t1183 = getelementptr inbounds %S.ast.Node, ptr %t1182, i64 2 + %t1184 = load %S.ast.Node, ptr %t1183 + %t1185 = call %S.gen.Val @finch.gen.coerce(ptr %t1167, %S.gen.Val %t1176, %S.ast.Type %t1177, %S.ast.Node %t1184, { ptr, i64, i64 } { ptr @.str.5615, i64 7, i64 0 }) + store %S.gen.Val %t1176, ptr %a1186 + call void @finch.drop.S_gen_Val(ptr %a1186) + store %S.ast.Type %t1177, ptr %a1187 + call void @finch.drop.S_ast_Type(ptr %a1187) + %t1188 = extractvalue %S.gen.Val %t1185, 0 + store { ptr, i64, i64 } %t1188, ptr %a1189 + call void @finch_str_copy(ptr %a1190, ptr %a1189) + %t1191 = load { ptr, i64, i64 }, ptr %a1190 + store %S.gen.Val %t1185, ptr %a1192 + call void @finch.drop.S_gen_Val(ptr %a1192) + store { ptr, i64, i64 } %t1191, ptr %a1193 + %t1194 = load ptr, ptr %a1 + %t1195 = load { ptr, i64, i64 }, ptr %a39 + %t1196 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1194, { ptr, i64, i64 } { ptr @.str.5616, i64 3, i64 0 }, { ptr, i64, i64 } %t1195) + store { ptr, i64, i64 } %t1196, ptr %a1197 + %t1198 = load ptr, ptr %a1 + %t1199 = load { ptr, i64, i64 }, ptr %a1166 + store { ptr, i64, i64 } { ptr @.str.5617, i64 13, i64 0 }, ptr %a1201 + store { ptr, i64, i64 } %t1199, ptr %a1202 + call void @finch_str_concat(ptr %a1200, ptr %a1201, ptr %a1202) + %t1203 = load { ptr, i64, i64 }, ptr %a1200 + store { ptr, i64, i64 } %t1203, ptr %a1205 + store { ptr, i64, i64 } { ptr @.str.5618, i64 3, i64 0 }, ptr %a1206 + call void @finch_str_concat(ptr %a1204, ptr %a1205, ptr %a1206) + store { ptr, i64, i64 } %t1203, ptr %a1207 + call void @finch_str_drop(ptr %a1207) + %t1208 = load { ptr, i64, i64 }, ptr %a1204 + %t1209 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1198, { ptr, i64, i64 } %t1208) + store { ptr, i64, i64 } %t1208, ptr %a1210 + call void @finch_str_drop(ptr %a1210) + store { ptr, i64, i64 } %t1209, ptr %a1211 + %t1212 = load ptr, ptr %a1 + %t1213 = load { ptr, i64, i64 }, ptr %a1193 + store { ptr, i64, i64 } { ptr @.str.5619, i64 13, i64 0 }, ptr %a1215 + store { ptr, i64, i64 } %t1213, ptr %a1216 + call void @finch_str_concat(ptr %a1214, ptr %a1215, ptr %a1216) + %t1217 = load { ptr, i64, i64 }, ptr %a1214 + store { ptr, i64, i64 } %t1217, ptr %a1219 + store { ptr, i64, i64 } { ptr @.str.5620, i64 2, i64 0 }, ptr %a1220 + call void @finch_str_concat(ptr %a1218, ptr %a1219, ptr %a1220) + store { ptr, i64, i64 } %t1217, ptr %a1221 + call void @finch_str_drop(ptr %a1221) + %t1222 = load { ptr, i64, i64 }, ptr %a1218 + %t1223 = load { ptr, i64, i64 }, ptr %a1197 + store { ptr, i64, i64 } %t1222, ptr %a1225 + store { ptr, i64, i64 } %t1223, ptr %a1226 + call void @finch_str_concat(ptr %a1224, ptr %a1225, ptr %a1226) + store { ptr, i64, i64 } %t1222, ptr %a1227 + call void @finch_str_drop(ptr %a1227) + %t1228 = load { ptr, i64, i64 }, ptr %a1224 + %t1229 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1212, { ptr, i64, i64 } %t1228) + store { ptr, i64, i64 } %t1228, ptr %a1230 + call void @finch_str_drop(ptr %a1230) + store { ptr, i64, i64 } %t1229, ptr %a1231 + %t1232 = load ptr, ptr %a1 + %t1233 = load { ptr, i64, i64 }, ptr %a1166 + store { ptr, i64, i64 } { ptr @.str.5621, i64 13, i64 0 }, ptr %a1235 + store { ptr, i64, i64 } %t1233, 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.5455, 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.5456, i64 2, i64 0 }, ptr %a1246 + store { ptr, i64, i64 } %t1237, ptr %a1239 + store { ptr, i64, i64 } { ptr @.str.5622, i64 2, i64 0 }, ptr %a1240 + call void @finch_str_concat(ptr %a1238, ptr %a1239, ptr %a1240) + store { ptr, i64, i64 } %t1237, ptr %a1241 + call void @finch_str_drop(ptr %a1241) + %t1242 = load { ptr, i64, i64 }, ptr %a1238 + %t1243 = load { ptr, i64, i64 }, ptr %a1193 + store { ptr, i64, i64 } %t1242, ptr %a1245 + store { ptr, i64, i64 } %t1243, 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 %range8094, label %inrange8095 -range8094: - call void @finch_panic_index(ptr @.str.5457, i64 4912, i64 3, i64 %t1249) - unreachable -inrange8095: - %t1251 = extractvalue { ptr, i64, i64 } %t1248, 0 - %t1252 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1251, i64 3 - %t1253 = load { ptr, i64, i64 }, ptr %t1252 - store { ptr, i64, i64 } %t1247, ptr %a1255 - store { ptr, i64, i64 } %t1253, ptr %a1256 - call void @finch_str_concat(ptr %a1254, ptr %a1255, ptr %a1256) - %t1257 = load { ptr, i64, i64 }, ptr %a1254 - %t1258 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1238, { ptr, i64, i64 } %t1257) - store { ptr, i64, i64 } %t1237, ptr %a1260 - store { ptr, i64, i64 } %t1258, ptr %a1261 - call void @finch_str_concat(ptr %a1259, ptr %a1260, ptr %a1261) - %t1262 = load { ptr, i64, i64 }, ptr %a1259 - %t1263 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1219, { ptr, i64, i64 } %t1262) - store { ptr, i64, i64 } %t1263, ptr %a1264 - %t1265 = load ptr, ptr %a1 - %t1266 = load { ptr, i64, i64 }, ptr %a1218 - %t1267 = load { ptr, i64, i64 }, ptr %a1264 - %t1268 = load %S.ast.Type, ptr %a15 - call void @finch.gen.copyAt(ptr %t1265, { ptr, i64, i64 } %t1266, { ptr, i64, i64 } %t1267, %S.ast.Type %t1268) - %t1269 = load ptr, ptr %a1 - %t1270 = load { ptr, i64, i64 }, ptr %a1187 - 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.5458, 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 - call void @finch.copy.S_ast_Type(ptr %a1277, ptr %a1276) - %t1278 = load %S.ast.Type, ptr %a1277 - %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 -endif8083: - %t1281 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t1281, ptr %a1282 - store { ptr, i64, i64 } { ptr @.str.5459, 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 %then8096, label %endif8098 -then8096: - %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) - %t1288 = getelementptr inbounds %S.ast.Type, ptr %a15, i32 0, i32 0 - %t1289 = load { ptr, i64, i64 }, ptr %t1288 - store { ptr, i64, i64 } %t1289, ptr %a1290 - call void @finch_str_copy(ptr %a1291, ptr %a1290) - %t1292 = load { ptr, i64, i64 }, ptr %a1291 - store { ptr, i64, i64 } %t1292, ptr %a1293 - %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.from8099 -logic.from8099: - br i1 %t1296, label %logic.rhs8100, label %logic.end8101 -logic.rhs8100: - %t1297 = load { ptr, i64, i64 }, ptr %a1293 - store { ptr, i64, i64 } %t1297, ptr %a1298 - store { ptr, i64, i64 } { ptr @.str.5460, 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.rend8102 -logic.rend8102: - br label %logic.end8101 -logic.end8101: - %t1302 = phi i1 [ false, %logic.from8099 ], [ %t1301, %logic.rend8102 ] - br label %logic.from8103 -logic.from8103: - br i1 %t1302, label %logic.rhs8104, label %logic.end8105 -logic.rhs8104: - %t1303 = load { ptr, i64, i64 }, ptr %a1293 - store { ptr, i64, i64 } %t1303, ptr %a1304 - store { ptr, i64, i64 } { ptr @.str.5461, 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.rend8106 -logic.rend8106: - br label %logic.end8105 -logic.end8105: - %t1308 = phi i1 [ false, %logic.from8103 ], [ %t1307, %logic.rend8106 ] - br i1 %t1308, label %then8107, label %endif8109 -then8107: - %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.5462, i64 47, i64 0 }) - br label %endif8109 -endif8109: - %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.5463, 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.5464, 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.5465, 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.5466, 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 - store { ptr, i64, i64 } %t1332, ptr %a1335 - store { ptr, i64, i64 } %t1333, ptr %a1336 - 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.5467, 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 - %t1343 = load %S.ast.Type, ptr %a15 - %t1344 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t1342, %S.ast.Type %t1343) - store { ptr, i64, i64 } %t1341, ptr %a1346 - store { ptr, i64, i64 } %t1344, ptr %a1347 - 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.5468, 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 - store { ptr, i64, i64 } %t1352, ptr %a1355 - store { ptr, i64, i64 } %t1353, ptr %a1356 - 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.5469, 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.5470, i64 4, i64 0 }) - %t1363 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t1362, 1 - ret %S.gen.Val %t1363 -endif8098: - %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.5471, i64 24, i64 0 }, ptr %a1368 + store { ptr, i64, i64 } %t1242, ptr %a1247 + call void @finch_str_drop(ptr %a1247) + %t1248 = load { ptr, i64, i64 }, ptr %a1244 + %t1249 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1232, { ptr, i64, i64 } %t1248) + store { ptr, i64, i64 } %t1248, ptr %a1250 + call void @finch_str_drop(ptr %a1250) + store { ptr, i64, i64 } %t1249, ptr %a1251 + %t1252 = load ptr, ptr %a1 + %t1253 = load ptr, ptr %a1 + %t1254 = load ptr, ptr %a1 + %t1255 = load { ptr, i64, i64 }, ptr %a1211 + store { ptr, i64, i64 } { ptr @.str.5624, i64 6, i64 0 }, ptr %a1257 + store { ptr, i64, i64 } %t1255, ptr %a1258 + call void @finch_str_concat(ptr %a1256, ptr %a1257, ptr %a1258) + %t1259 = load { ptr, i64, i64 }, ptr %a1256 + store { ptr, i64, i64 } %t1259, ptr %a1261 + store { ptr, i64, i64 } { ptr @.str.5625, i64 2, i64 0 }, ptr %a1262 + call void @finch_str_concat(ptr %a1260, ptr %a1261, ptr %a1262) + store { ptr, i64, i64 } %t1259, ptr %a1263 + call void @finch_str_drop(ptr %a1263) + %t1264 = load { ptr, i64, i64 }, ptr %a1260 + %t1265 = load { ptr, i64, i64 }, ptr %a1231 + store { ptr, i64, i64 } %t1264, ptr %a1267 + store { ptr, i64, i64 } %t1265, ptr %a1268 + call void @finch_str_concat(ptr %a1266, ptr %a1267, ptr %a1268) + store { ptr, i64, i64 } %t1264, ptr %a1269 + call void @finch_str_drop(ptr %a1269) + %t1270 = load { ptr, i64, i64 }, ptr %a1266 + %t1271 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1254, { ptr, i64, i64 } %t1270) + store { ptr, i64, i64 } %t1270, ptr %a1272 + call void @finch_str_drop(ptr %a1272) + store { ptr, i64, i64 } { ptr @.str.5623, i64 6, i64 0 }, ptr %a1274 + store { ptr, i64, i64 } %t1271, ptr %a1275 + call void @finch_str_concat(ptr %a1273, ptr %a1274, ptr %a1275) + store { ptr, i64, i64 } %t1271, ptr %a1276 + call void @finch_str_drop(ptr %a1276) + %t1277 = load { ptr, i64, i64 }, ptr %a1273 + store { ptr, i64, i64 } %t1277, ptr %a1279 + store { ptr, i64, i64 } { ptr @.str.5626, i64 2, i64 0 }, ptr %a1280 + call void @finch_str_concat(ptr %a1278, ptr %a1279, ptr %a1280) + store { ptr, i64, i64 } %t1277, ptr %a1281 + call void @finch_str_drop(ptr %a1281) + %t1282 = load { ptr, i64, i64 }, ptr %a1278 + %t1283 = load { ptr, i64, i64 }, ptr %a1251 + store { ptr, i64, i64 } %t1282, ptr %a1285 + store { ptr, i64, i64 } %t1283, ptr %a1286 + call void @finch_str_concat(ptr %a1284, ptr %a1285, ptr %a1286) + store { ptr, i64, i64 } %t1282, ptr %a1287 + call void @finch_str_drop(ptr %a1287) + %t1288 = load { ptr, i64, i64 }, ptr %a1284 + %t1289 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1253, { ptr, i64, i64 } %t1288) + store { ptr, i64, i64 } %t1288, ptr %a1290 + call void @finch_str_drop(ptr %a1290) + %t1291 = load %S.ast.Node, ptr %a2 + call void @finch.gen.panicIf(ptr %t1252, { ptr, i64, i64 } %t1289, { ptr, i64, i64 } { ptr @.str.5627, i64 33, i64 0 }, %S.ast.Node %t1291) + store { ptr, i64, i64 } %t1289, ptr %a1292 + call void @finch_str_drop(ptr %a1292) + %t1293 = load ptr, ptr %a1 + %t1294 = load { ptr, i64, i64 }, ptr %a1193 + store { ptr, i64, i64 } { ptr @.str.5628, i64 8, i64 0 }, ptr %a1296 + store { ptr, i64, i64 } %t1294, ptr %a1297 + call void @finch_str_concat(ptr %a1295, ptr %a1296, ptr %a1297) + %t1298 = load { ptr, i64, i64 }, ptr %a1295 + store { ptr, i64, i64 } %t1298, ptr %a1300 + store { ptr, i64, i64 } { ptr @.str.5629, i64 2, i64 0 }, ptr %a1301 + call void @finch_str_concat(ptr %a1299, ptr %a1300, ptr %a1301) + store { ptr, i64, i64 } %t1298, ptr %a1302 + call void @finch_str_drop(ptr %a1302) + %t1303 = load { ptr, i64, i64 }, ptr %a1299 + %t1304 = load { ptr, i64, i64 }, ptr %a1166 + store { ptr, i64, i64 } %t1303, ptr %a1306 + store { ptr, i64, i64 } %t1304, ptr %a1307 + call void @finch_str_concat(ptr %a1305, ptr %a1306, ptr %a1307) + store { ptr, i64, i64 } %t1303, ptr %a1308 + call void @finch_str_drop(ptr %a1308) + %t1309 = load { ptr, i64, i64 }, ptr %a1305 + %t1310 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1293, { ptr, i64, i64 } %t1309) + store { ptr, i64, i64 } %t1309, ptr %a1311 + call void @finch_str_drop(ptr %a1311) + store { ptr, i64, i64 } %t1310, ptr %a1312 + %t1313 = load ptr, ptr %a1 + %t1314 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t1313, { ptr, i64, i64 } { ptr @.str.5630, i64 17, i64 0 }) + store { ptr, i64, i64 } %t1314, ptr %a1315 + %t1316 = load ptr, ptr %a1 + %t1317 = load { ptr, i64, i64 }, ptr %a1315 + store { ptr, i64, i64 } { ptr @.str.5631, i64 30, i64 0 }, ptr %a1319 + store { ptr, i64, i64 } %t1317, ptr %a1320 + call void @finch_str_concat(ptr %a1318, ptr %a1319, ptr %a1320) + %t1321 = load { ptr, i64, i64 }, ptr %a1318 + store { ptr, i64, i64 } %t1321, ptr %a1323 + store { ptr, i64, i64 } { ptr @.str.5632, i64 6, i64 0 }, ptr %a1324 + call void @finch_str_concat(ptr %a1322, ptr %a1323, ptr %a1324) + store { ptr, i64, i64 } %t1321, ptr %a1325 + call void @finch_str_drop(ptr %a1325) + %t1326 = load { ptr, i64, i64 }, ptr %a1322 + %t1327 = load { ptr, i64, i64 }, ptr %a1312 + store { ptr, i64, i64 } %t1326, ptr %a1329 + store { ptr, i64, i64 } %t1327, ptr %a1330 + call void @finch_str_concat(ptr %a1328, ptr %a1329, ptr %a1330) + store { ptr, i64, i64 } %t1326, ptr %a1331 + call void @finch_str_drop(ptr %a1331) + %t1332 = load { ptr, i64, i64 }, ptr %a1328 + store { ptr, i64, i64 } %t1332, ptr %a1334 + store { ptr, i64, i64 } { ptr @.str.5633, i64 6, i64 0 }, ptr %a1335 + call void @finch_str_concat(ptr %a1333, ptr %a1334, ptr %a1335) + store { ptr, i64, i64 } %t1332, ptr %a1336 + call void @finch_str_drop(ptr %a1336) + %t1337 = load { ptr, i64, i64 }, ptr %a1333 + %t1338 = load ptr, ptr %a1 + %t1339 = load %S.ast.Type, ptr %a15 + %t1340 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t1338, %S.ast.Type %t1339) + store { ptr, i64, i64 } %t1337, ptr %a1342 + store { ptr, i64, i64 } %t1340, ptr %a1343 + call void @finch_str_concat(ptr %a1341, ptr %a1342, ptr %a1343) + store { ptr, i64, i64 } %t1337, ptr %a1344 + call void @finch_str_drop(ptr %a1344) + store { ptr, i64, i64 } %t1340, ptr %a1345 + call void @finch_str_drop(ptr %a1345) + %t1346 = load { ptr, i64, i64 }, ptr %a1341 + store { ptr, i64, i64 } %t1346, ptr %a1348 + store { ptr, i64, i64 } { ptr @.str.5634, i64 1, i64 0 }, ptr %a1349 + call void @finch_str_concat(ptr %a1347, ptr %a1348, ptr %a1349) + store { ptr, i64, i64 } %t1346, ptr %a1350 + call void @finch_str_drop(ptr %a1350) + %t1351 = load { ptr, i64, i64 }, ptr %a1347 + call void @finch.gen.emit(ptr %t1316, { ptr, i64, i64 } %t1351) + store { ptr, i64, i64 } %t1351, ptr %a1352 + call void @finch_str_drop(ptr %a1352) + %t1353 = load ptr, ptr %a1 + %t1354 = load { ptr, i64, i64 }, ptr %a3 + %t1355 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1353, { ptr, i64, i64 } { ptr @.str.5635, i64 3, i64 0 }, { ptr, i64, i64 } %t1354) + store { ptr, i64, i64 } %t1355, ptr %a1356 + %t1357 = load ptr, ptr %a1 + %t1358 = load { ptr, i64, i64 }, ptr %a1315 + %t1359 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1357, { ptr, i64, i64 } { ptr @.str.5636, i64 3, i64 0 }, { ptr, i64, i64 } %t1358) + store { ptr, i64, i64 } %t1359, ptr %a1360 + %t1361 = load ptr, ptr %a1 + %t1362 = load { ptr, i64, i64 }, ptr %a1312 + %t1363 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t1361, { ptr, i64, i64 } %t1362) + store { ptr, i64, i64 } %t1363, ptr %a1364 + %t1365 = load ptr, ptr %a1 + %t1366 = load { ptr, i64, i64 }, ptr %a19 + store { ptr, i64, i64 } { ptr @.str.5637, i64 23, 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.5472, i64 96, i64 0 }, ptr %a1373 + store { ptr, i64, i64 } { ptr @.str.5638, i64 6, 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) + store { ptr, i64, i64 } %t1370, ptr %a1374 + call void @finch_str_drop(ptr %a1374) + %t1375 = load { ptr, i64, i64 }, ptr %a1371 + %t1376 = load { ptr, i64, i64 }, ptr %a1360 + store { ptr, i64, i64 } %t1375, ptr %a1378 + store { ptr, i64, i64 } %t1376, ptr %a1379 + call void @finch_str_concat(ptr %a1377, ptr %a1378, ptr %a1379) + store { ptr, i64, i64 } %t1375, ptr %a1380 + call void @finch_str_drop(ptr %a1380) + %t1381 = load { ptr, i64, i64 }, ptr %a1377 + store { ptr, i64, i64 } %t1381, ptr %a1383 + store { ptr, i64, i64 } { ptr @.str.5639, i64 6, i64 0 }, ptr %a1384 + call void @finch_str_concat(ptr %a1382, ptr %a1383, ptr %a1384) + store { ptr, i64, i64 } %t1381, ptr %a1385 + call void @finch_str_drop(ptr %a1385) + %t1386 = load { ptr, i64, i64 }, ptr %a1382 + %t1387 = load { ptr, i64, i64 }, ptr %a1364 + %t1388 = extractvalue { ptr, i64, i64 } %t1387, 1 + %t1389 = icmp uge i64 3, %t1388 + br i1 %t1389, label %range8542, label %inrange8543 +range8542: + call void @finch_panic_index(ptr @.str.5640, i64 5306, i64 3, i64 %t1388) + unreachable +inrange8543: + %t1390 = extractvalue { ptr, i64, i64 } %t1387, 0 + %t1391 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1390, i64 3 + %t1392 = load { ptr, i64, i64 }, ptr %t1391 + store { ptr, i64, i64 } %t1386, ptr %a1394 + store { ptr, i64, i64 } %t1392, ptr %a1395 + call void @finch_str_concat(ptr %a1393, ptr %a1394, ptr %a1395) + store { ptr, i64, i64 } %t1386, ptr %a1396 + call void @finch_str_drop(ptr %a1396) + %t1397 = load { ptr, i64, i64 }, ptr %a1393 + %t1398 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1365, { ptr, i64, i64 } %t1397) + store { ptr, i64, i64 } %t1397, ptr %a1399 + call void @finch_str_drop(ptr %a1399) + store { ptr, i64, i64 } %t1398, ptr %a1400 + %t1401 = load ptr, ptr %a1 + %t1402 = load { ptr, i64, i64 }, ptr %a19 + store { ptr, i64, i64 } { ptr @.str.5641, i64 23, i64 0 }, ptr %a1404 + store { ptr, i64, i64 } %t1402, ptr %a1405 + call void @finch_str_concat(ptr %a1403, ptr %a1404, ptr %a1405) + %t1406 = load { ptr, i64, i64 }, ptr %a1403 + store { ptr, i64, i64 } %t1406, ptr %a1408 + store { ptr, i64, i64 } { ptr @.str.5642, i64 6, i64 0 }, ptr %a1409 + call void @finch_str_concat(ptr %a1407, ptr %a1408, ptr %a1409) + store { ptr, i64, i64 } %t1406, ptr %a1410 + call void @finch_str_drop(ptr %a1410) + %t1411 = load { ptr, i64, i64 }, ptr %a1407 + %t1412 = load { ptr, i64, i64 }, ptr %a1356 + store { ptr, i64, i64 } %t1411, ptr %a1414 + store { ptr, i64, i64 } %t1412, ptr %a1415 + call void @finch_str_concat(ptr %a1413, ptr %a1414, ptr %a1415) + store { ptr, i64, i64 } %t1411, ptr %a1416 + call void @finch_str_drop(ptr %a1416) + %t1417 = load { ptr, i64, i64 }, ptr %a1413 + store { ptr, i64, i64 } %t1417, ptr %a1419 + store { ptr, i64, i64 } { ptr @.str.5643, i64 6, i64 0 }, ptr %a1420 + call void @finch_str_concat(ptr %a1418, ptr %a1419, ptr %a1420) + store { ptr, i64, i64 } %t1417, ptr %a1421 + call void @finch_str_drop(ptr %a1421) + %t1422 = load { ptr, i64, i64 }, ptr %a1418 + %t1423 = load ptr, ptr %a1 + %t1424 = load { ptr, i64, i64 }, ptr %a1166 + store { ptr, i64, i64 } { ptr @.str.5644, i64 8, i64 0 }, ptr %a1426 + store { ptr, i64, i64 } %t1424, ptr %a1427 + call void @finch_str_concat(ptr %a1425, ptr %a1426, ptr %a1427) + %t1428 = load { ptr, i64, i64 }, ptr %a1425 + store { ptr, i64, i64 } %t1428, ptr %a1430 + store { ptr, i64, i64 } { ptr @.str.5645, i64 2, i64 0 }, ptr %a1431 + call void @finch_str_concat(ptr %a1429, ptr %a1430, ptr %a1431) + store { ptr, i64, i64 } %t1428, ptr %a1432 + call void @finch_str_drop(ptr %a1432) + %t1433 = load { ptr, i64, i64 }, ptr %a1429 + %t1434 = load { ptr, i64, i64 }, ptr %a1364 + %t1435 = extractvalue { ptr, i64, i64 } %t1434, 1 + %t1436 = icmp uge i64 3, %t1435 + br i1 %t1436, label %range8544, label %inrange8545 +range8544: + call void @finch_panic_index(ptr @.str.5646, i64 5307, i64 3, i64 %t1435) + unreachable +inrange8545: + %t1437 = extractvalue { ptr, i64, i64 } %t1434, 0 + %t1438 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1437, i64 3 + %t1439 = load { ptr, i64, i64 }, ptr %t1438 + store { ptr, i64, i64 } %t1433, ptr %a1441 + store { ptr, i64, i64 } %t1439, ptr %a1442 + call void @finch_str_concat(ptr %a1440, ptr %a1441, ptr %a1442) + store { ptr, i64, i64 } %t1433, ptr %a1443 + call void @finch_str_drop(ptr %a1443) + %t1444 = load { ptr, i64, i64 }, ptr %a1440 + %t1445 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1423, { ptr, i64, i64 } %t1444) + store { ptr, i64, i64 } %t1444, ptr %a1446 + call void @finch_str_drop(ptr %a1446) + store { ptr, i64, i64 } %t1422, ptr %a1448 + store { ptr, i64, i64 } %t1445, ptr %a1449 + call void @finch_str_concat(ptr %a1447, ptr %a1448, ptr %a1449) + store { ptr, i64, i64 } %t1422, ptr %a1450 + call void @finch_str_drop(ptr %a1450) + store { ptr, i64, i64 } %t1445, ptr %a1451 + call void @finch_str_drop(ptr %a1451) + %t1452 = load { ptr, i64, i64 }, ptr %a1447 + %t1453 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1401, { ptr, i64, i64 } %t1452) + store { ptr, i64, i64 } %t1452, ptr %a1454 + call void @finch_str_drop(ptr %a1454) + store { ptr, i64, i64 } %t1453, ptr %a1455 + %t1456 = load ptr, ptr %a1 + %t1457 = load { ptr, i64, i64 }, ptr %a1400 + %t1458 = load { ptr, i64, i64 }, ptr %a1455 + %t1459 = load %S.ast.Type, ptr %a15 + call void @finch.gen.copyAt(ptr %t1456, { ptr, i64, i64 } %t1457, { ptr, i64, i64 } %t1458, %S.ast.Type %t1459) + %t1460 = load ptr, ptr %a1 + %t1461 = load { ptr, i64, i64 }, ptr %a1364 + call void @finch.gen.loopEnd(ptr %t1460, { ptr, i64, i64 } %t1461) + %t1462 = load ptr, ptr %a1 + %t1463 = load { ptr, i64, i64 }, ptr %a1315 + %t1464 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1462, { ptr, i64, i64 } { ptr @.str.5647, i64 17, i64 0 }, { ptr, i64, i64 } %t1463) + %t1465 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1464, 0 + %t1466 = load %S.ast.Type, ptr %a4 + store %S.ast.Type %t1466, ptr %a1467 + call void @finch.copy.S_ast_Type(ptr %a1468, ptr %a1467) + %t1469 = load %S.ast.Type, ptr %a1468 + %t1470 = insertvalue %S.gen.Val %t1465, %S.ast.Type %t1469, 1 + %t1471 = insertvalue %S.gen.Val %t1470, i1 true, 2 + call void @finch_str_drop(ptr %a1455) + call void @finch_str_drop(ptr %a1400) + call void @finch.drop.arr_str(ptr %a1364) + call void @finch_str_drop(ptr %a1360) + call void @finch_str_drop(ptr %a1356) + call void @finch_str_drop(ptr %a1315) + call void @finch_str_drop(ptr %a1312) + call void @finch_str_drop(ptr %a1251) + call void @finch_str_drop(ptr %a1231) + call void @finch_str_drop(ptr %a1211) + call void @finch_str_drop(ptr %a1197) + call void @finch_str_drop(ptr %a1193) + call void @finch_str_drop(ptr %a1166) + call void @finch_str_drop(ptr %a39) + call void @finch_str_drop(ptr %a25) + call void @finch_str_drop(ptr %a19) + call void @finch.drop.S_ast_Type(ptr %a15) + ret %S.gen.Val %t1471 +endif8533: + %t1472 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t1472, ptr %a1473 + store { ptr, i64, i64 } { ptr @.str.5648, i64 4, i64 0 }, ptr %a1474 + %t1475 = call i32 @finch_str_eq(ptr %a1473, ptr %a1474) + %t1476 = icmp ne i32 %t1475, 0 + br i1 %t1476, label %then8546, label %endif8548 +then8546: + %t1477 = load ptr, ptr %a1 + %t1478 = load %S.ast.Node, ptr %a2 + call void @finch.gen.need(ptr %t1477, %S.ast.Node %t1478, i64 0) + %t1479 = getelementptr inbounds %S.ast.Type, ptr %a15, i32 0, i32 0 + %t1480 = load { ptr, i64, i64 }, ptr %t1479 + store { ptr, i64, i64 } %t1480, ptr %a1481 + call void @finch_str_copy(ptr %a1482, ptr %a1481) + %t1483 = load { ptr, i64, i64 }, ptr %a1482 + store { ptr, i64, i64 } %t1483, ptr %a1484 + %t1485 = load %S.ast.Type, ptr %a15 + %t1486 = call i1 @finch.gen.isNumber(%S.ast.Type %t1485) + %t1487 = xor i1 %t1486, true + br label %logic.from8549 +logic.from8549: + br i1 %t1487, label %logic.rhs8550, label %logic.end8551 +logic.rhs8550: + %t1488 = load { ptr, i64, i64 }, ptr %a1484 + store { ptr, i64, i64 } %t1488, ptr %a1489 + store { ptr, i64, i64 } { ptr @.str.5649, i64 4, i64 0 }, ptr %a1490 + %t1491 = call i32 @finch_str_eq(ptr %a1489, ptr %a1490) + %t1492 = icmp eq i32 %t1491, 0 + br label %logic.rend8552 +logic.rend8552: + br label %logic.end8551 +logic.end8551: + %t1493 = phi i1 [ false, %logic.from8549 ], [ %t1492, %logic.rend8552 ] + br label %logic.from8553 +logic.from8553: + br i1 %t1493, label %logic.rhs8554, label %logic.end8555 +logic.rhs8554: + %t1494 = load { ptr, i64, i64 }, ptr %a1484 + store { ptr, i64, i64 } %t1494, ptr %a1495 + store { ptr, i64, i64 } { ptr @.str.5650, i64 3, i64 0 }, ptr %a1496 + %t1497 = call i32 @finch_str_eq(ptr %a1495, ptr %a1496) + %t1498 = icmp eq i32 %t1497, 0 + br label %logic.rend8556 +logic.rend8556: + br label %logic.end8555 +logic.end8555: + %t1499 = phi i1 [ false, %logic.from8553 ], [ %t1498, %logic.rend8556 ] + br i1 %t1499, label %then8557, label %endif8559 +then8557: + %t1500 = load ptr, ptr %a1 + %t1501 = load %S.ast.Node, ptr %a2 + call void @finch.gen.fail(ptr %t1500, %S.ast.Node %t1501, { ptr, i64, i64 } { ptr @.str.5651, i64 47, i64 0 }) + br label %endif8559 +endif8559: + %t1502 = load ptr, ptr %a1 + %t1503 = load %S.ast.Type, ptr %a15 + %t1504 = call { ptr, i64, i64 } @finch.gen.cmpFn(ptr %t1502, %S.ast.Type %t1503) + store { ptr, i64, i64 } %t1504, ptr %a1505 + %t1506 = load ptr, ptr %a1 + %t1507 = load { ptr, i64, i64 }, ptr %a39 + %t1508 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1506, { ptr, i64, i64 } { ptr @.str.5652, i64 3, i64 0 }, { ptr, i64, i64 } %t1507) + store { ptr, i64, i64 } %t1508, ptr %a1509 + %t1510 = load ptr, ptr %a1 + %t1511 = load { ptr, i64, i64 }, ptr %a3 + %t1512 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1510, { ptr, i64, i64 } { ptr @.str.5653, i64 3, i64 0 }, { ptr, i64, i64 } %t1511) + store { ptr, i64, i64 } %t1512, ptr %a1513 + %t1514 = load ptr, ptr %a1 + %t1515 = load { ptr, i64, i64 }, ptr %a1513 + store { ptr, i64, i64 } { ptr @.str.5654, i64 21, i64 0 }, ptr %a1517 + store { ptr, i64, i64 } %t1515, ptr %a1518 + call void @finch_str_concat(ptr %a1516, ptr %a1517, ptr %a1518) + %t1519 = load { ptr, i64, i64 }, ptr %a1516 + store { ptr, i64, i64 } %t1519, ptr %a1521 + store { ptr, i64, i64 } { ptr @.str.5655, i64 6, i64 0 }, ptr %a1522 + call void @finch_str_concat(ptr %a1520, ptr %a1521, ptr %a1522) + store { ptr, i64, i64 } %t1519, ptr %a1523 + call void @finch_str_drop(ptr %a1523) + %t1524 = load { ptr, i64, i64 }, ptr %a1520 + %t1525 = load { ptr, i64, i64 }, ptr %a1509 + store { ptr, i64, i64 } %t1524, ptr %a1527 + store { ptr, i64, i64 } %t1525, ptr %a1528 + call void @finch_str_concat(ptr %a1526, ptr %a1527, ptr %a1528) + store { ptr, i64, i64 } %t1524, ptr %a1529 + call void @finch_str_drop(ptr %a1529) + %t1530 = load { ptr, i64, i64 }, ptr %a1526 + store { ptr, i64, i64 } %t1530, ptr %a1532 + store { ptr, i64, i64 } { ptr @.str.5656, i64 6, i64 0 }, ptr %a1533 + call void @finch_str_concat(ptr %a1531, ptr %a1532, ptr %a1533) + store { ptr, i64, i64 } %t1530, ptr %a1534 + call void @finch_str_drop(ptr %a1534) + %t1535 = load { ptr, i64, i64 }, ptr %a1531 + %t1536 = load ptr, ptr %a1 + %t1537 = load %S.ast.Type, ptr %a15 + %t1538 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t1536, %S.ast.Type %t1537) + store { ptr, i64, i64 } %t1535, ptr %a1540 + store { ptr, i64, i64 } %t1538, ptr %a1541 + call void @finch_str_concat(ptr %a1539, ptr %a1540, ptr %a1541) + store { ptr, i64, i64 } %t1535, ptr %a1542 + call void @finch_str_drop(ptr %a1542) + store { ptr, i64, i64 } %t1538, ptr %a1543 + call void @finch_str_drop(ptr %a1543) + %t1544 = load { ptr, i64, i64 }, ptr %a1539 + store { ptr, i64, i64 } %t1544, ptr %a1546 + store { ptr, i64, i64 } { ptr @.str.5657, i64 6, i64 0 }, ptr %a1547 + call void @finch_str_concat(ptr %a1545, ptr %a1546, ptr %a1547) + store { ptr, i64, i64 } %t1544, ptr %a1548 + call void @finch_str_drop(ptr %a1548) + %t1549 = load { ptr, i64, i64 }, ptr %a1545 + %t1550 = load { ptr, i64, i64 }, ptr %a1505 + store { ptr, i64, i64 } %t1549, ptr %a1552 + store { ptr, i64, i64 } %t1550, ptr %a1553 + call void @finch_str_concat(ptr %a1551, ptr %a1552, ptr %a1553) + store { ptr, i64, i64 } %t1549, ptr %a1554 + call void @finch_str_drop(ptr %a1554) + %t1555 = load { ptr, i64, i64 }, ptr %a1551 + store { ptr, i64, i64 } %t1555, ptr %a1557 + store { ptr, i64, i64 } { ptr @.str.5658, i64 1, i64 0 }, ptr %a1558 + call void @finch_str_concat(ptr %a1556, ptr %a1557, ptr %a1558) + store { ptr, i64, i64 } %t1555, ptr %a1559 + call void @finch_str_drop(ptr %a1559) + %t1560 = load { ptr, i64, i64 }, ptr %a1556 + call void @finch.gen.emit(ptr %t1514, { ptr, i64, i64 } %t1560) + store { ptr, i64, i64 } %t1560, ptr %a1561 + call void @finch_str_drop(ptr %a1561) + %t1562 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5659, i64 4, i64 0 }) + %t1563 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t1562, 1 + call void @finch_str_drop(ptr %a1513) + call void @finch_str_drop(ptr %a1509) + call void @finch_str_drop(ptr %a1505) + call void @finch_str_drop(ptr %a1484) + call void @finch_str_drop(ptr %a39) + call void @finch_str_drop(ptr %a25) + call void @finch_str_drop(ptr %a19) + call void @finch.drop.S_ast_Type(ptr %a15) + ret %S.gen.Val %t1563 +endif8548: + %t1564 = load ptr, ptr %a1 + %t1565 = load %S.ast.Node, ptr %a2 + %t1566 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } { ptr @.str.5660, i64 24, i64 0 }, ptr %a1568 + store { ptr, i64, i64 } %t1566, ptr %a1569 + call void @finch_str_concat(ptr %a1567, ptr %a1568, ptr %a1569) + %t1570 = load { ptr, i64, i64 }, ptr %a1567 + store { ptr, i64, i64 } %t1570, ptr %a1572 + store { ptr, i64, i64 } { ptr @.str.5661, i64 96, i64 0 }, ptr %a1573 + call void @finch_str_concat(ptr %a1571, ptr %a1572, ptr %a1573) + store { ptr, i64, i64 } %t1570, ptr %a1574 + call void @finch_str_drop(ptr %a1574) + %t1575 = load { ptr, i64, i64 }, ptr %a1571 + call void @finch.gen.fail(ptr %t1564, %S.ast.Node %t1565, { ptr, i64, i64 } %t1575) + store { ptr, i64, i64 } %t1575, ptr %a1576 + call void @finch_str_drop(ptr %a1576) + call void @finch_str_drop(ptr %a39) + call void @finch_str_drop(ptr %a25) + call void @finch_str_drop(ptr %a19) + call void @finch.drop.S_ast_Type(ptr %a15) ret %S.gen.Val zeroinitializer } +define internal void @finch.gen.dropFrom(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, { ptr, i64, i64 } %p3) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca %S.ast.Type, align 16 + %a4 = alloca { ptr, i64, i64 }, align 16 + %a12 = alloca %S.ast.Type, align 16 + %a13 = alloca %S.ast.Type, align 16 + %a15 = alloca %S.ast.Type, align 16 + %a23 = 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 + %a32 = alloca { ptr, i64, i64 }, align 16 + %a33 = alloca { ptr, i64, i64 }, align 16 + %a34 = 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 + %a44 = 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 + %a54 = alloca { ptr, i64, i64 }, align 16 + %a57 = alloca { ptr, i64, i64 }, align 16 + %a58 = 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 + %a64 = 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 + %a71 = 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 + %a77 = alloca { ptr, i64, i64 }, align 16 + %a78 = 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 + %a85 = alloca { ptr, i64, i64 }, align 16 + %a86 = alloca { ptr, i64, i64 }, align 16 + %a87 = alloca { ptr, i64, i64 }, align 16 + %a88 = 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 + %a99 = 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 + %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 + %a115 = 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 + %a121 = 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 + %a127 = alloca { ptr, i64, i64 }, align 16 + %a128 = alloca { ptr, i64, i64 }, align 16 + %a132 = alloca { ptr, i64, i64 }, align 16 + %a133 = alloca { ptr, i64, i64 }, align 16 + %a134 = alloca { ptr, i64, i64 }, align 16 + %a136 = alloca { ptr, i64, i64 }, align 16 + %a137 = alloca { ptr, i64, i64 }, align 16 + %a138 = alloca { ptr, i64, i64 }, align 16 + %a139 = alloca { ptr, i64, i64 }, align 16 + %a142 = alloca { ptr, i64, i64 }, align 16 + %a143 = alloca { ptr, i64, i64 }, align 16 + %a144 = alloca { ptr, i64, i64 }, align 16 + %a145 = alloca { ptr, i64, i64 }, align 16 + %a148 = alloca { ptr, i64, i64 }, align 16 + %a150 = alloca { ptr, i64, i64 }, align 16 + %a151 = alloca { ptr, i64, i64 }, align 16 + %a154 = alloca { ptr, i64, i64 }, align 16 + %a155 = alloca { ptr, i64, i64 }, align 16 + %a156 = alloca { ptr, i64, i64 }, align 16 + %a158 = 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 + %a164 = 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 + %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 + %a180 = 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 + %a191 = alloca { ptr, i64, i64 }, align 16 + %a192 = alloca { ptr, i64, i64 }, align 16 + %a193 = alloca { ptr, i64, i64 }, align 16 + %a194 = alloca { ptr, i64, i64 }, align 16 + %a197 = alloca { ptr, i64, i64 }, align 16 + %a198 = alloca { ptr, i64, i64 }, align 16 + %a199 = 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 + %a205 = alloca { ptr, i64, i64 }, align 16 + %a206 = alloca { ptr, i64, i64 }, align 16 + store ptr %p0, ptr %a1 + store { ptr, i64, i64 } %p1, ptr %a2 + store %S.ast.Type %p2, ptr %a3 + store { ptr, i64, i64 } %p3, ptr %a4 + %t5 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 + %t6 = load { ptr, i64, i64 }, ptr %t5 + %t7 = extractvalue { ptr, i64, i64 } %t6, 1 + %t8 = icmp uge i64 0, %t7 + br i1 %t8, label %range8560, label %inrange8561 +range8560: + call void @finch_panic_index(ptr @.str.5662, i64 5330, i64 0, i64 %t7) + unreachable +inrange8561: + %t9 = extractvalue { ptr, i64, i64 } %t6, 0 + %t10 = getelementptr inbounds %S.ast.Type, ptr %t9, i64 0 + %t11 = load %S.ast.Type, ptr %t10 + store %S.ast.Type %t11, ptr %a12 + call void @finch.copy.S_ast_Type(ptr %a13, ptr %a12) + %t14 = load %S.ast.Type, ptr %a13 + store %S.ast.Type %t14, ptr %a15 + %t16 = load ptr, ptr %a1 + %t17 = load %S.ast.Type, ptr %a15 + %t18 = call i1 @finch.gen.owning(ptr %t16, %S.ast.Type %t17) + %t19 = xor i1 %t18, true + br i1 %t19, label %then8562, label %endif8564 +then8562: + call void @finch.drop.S_ast_Type(ptr %a15) + ret void +endif8564: + %t20 = load ptr, ptr %a1 + %t21 = load %S.ast.Type, ptr %a15 + %t22 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t20, %S.ast.Type %t21) + store { ptr, i64, i64 } %t22, ptr %a23 + %t24 = load ptr, ptr %a1 + %t25 = load ptr, ptr %a1 + %t26 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } { ptr @.str.5664, i64 46, 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.5665, i64 14, i64 0 }, ptr %a33 + call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) + store { ptr, i64, i64 } %t30, ptr %a34 + call void @finch_str_drop(ptr %a34) + %t35 = load { ptr, i64, i64 }, ptr %a31 + %t36 = call { ptr, i64, i64 } @finch.gen.op(ptr %t25, { ptr, i64, i64 } %t35) + store { ptr, i64, i64 } %t35, ptr %a37 + call void @finch_str_drop(ptr %a37) + %t38 = call { ptr, i64, i64 } @finch.gen.load(ptr %t24, { ptr, i64, i64 } { ptr @.str.5663, i64 3, i64 0 }, { ptr, i64, i64 } %t36) + store { ptr, i64, i64 } %t36, ptr %a39 + call void @finch_str_drop(ptr %a39) + store { ptr, i64, i64 } %t38, ptr %a40 + %t41 = load ptr, ptr %a1 + %t42 = load { ptr, i64, i64 }, ptr %a2 + %t43 = call { ptr, i64, i64 } @finch.gen.load(ptr %t41, { ptr, i64, i64 } { ptr @.str.5666, i64 3, i64 0 }, { ptr, i64, i64 } %t42) + store { ptr, i64, i64 } %t43, ptr %a44 + %t45 = load ptr, ptr %a1 + %t46 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } { ptr @.str.5667, 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.5668, i64 2, i64 0 }, ptr %a53 + call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) + store { ptr, i64, i64 } %t50, ptr %a54 + call void @finch_str_drop(ptr %a54) + %t55 = load { ptr, i64, i64 }, ptr %a51 + %t56 = load { ptr, i64, i64 }, ptr %a40 + store { ptr, i64, i64 } %t55, ptr %a58 + store { ptr, i64, i64 } %t56, ptr %a59 + call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) + store { ptr, i64, i64 } %t55, ptr %a60 + call void @finch_str_drop(ptr %a60) + %t61 = load { ptr, i64, i64 }, ptr %a57 + %t62 = call { ptr, i64, i64 } @finch.gen.op(ptr %t45, { ptr, i64, i64 } %t61) + store { ptr, i64, i64 } %t61, ptr %a63 + call void @finch_str_drop(ptr %a63) + store { ptr, i64, i64 } %t62, ptr %a64 + %t65 = load ptr, ptr %a1 + %t66 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } { ptr @.str.5669, i64 13, 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.5670, i64 3, i64 0 }, ptr %a73 + call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73) + store { ptr, i64, i64 } %t70, ptr %a74 + call void @finch_str_drop(ptr %a74) + %t75 = load { ptr, i64, i64 }, ptr %a71 + %t76 = call { ptr, i64, i64 } @finch.gen.op(ptr %t65, { ptr, i64, i64 } %t75) + store { ptr, i64, i64 } %t75, ptr %a77 + call void @finch_str_drop(ptr %a77) + store { ptr, i64, i64 } %t76, ptr %a78 + %t79 = load ptr, ptr %a1 + %t80 = load { ptr, i64, i64 }, ptr %a64 + store { ptr, i64, i64 } { ptr @.str.5671, i64 10, 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.5672, i64 6, i64 0 }, ptr %a87 + call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) + store { ptr, i64, i64 } %t84, ptr %a88 + call void @finch_str_drop(ptr %a88) + %t89 = load { ptr, i64, i64 }, ptr %a85 + %t90 = load ptr, ptr %a1 + %t91 = load { ptr, i64, i64 }, ptr %a78 + store { ptr, i64, i64 } { ptr @.str.5673, i64 10, 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.5674, i64 13, i64 0 }, ptr %a98 + call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) + store { ptr, i64, i64 } %t95, ptr %a99 + call void @finch_str_drop(ptr %a99) + %t100 = load { ptr, i64, i64 }, ptr %a96 + %t101 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t100, ptr %a103 + store { ptr, i64, i64 } %t101, ptr %a104 + call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104) + store { ptr, i64, i64 } %t100, ptr %a105 + call void @finch_str_drop(ptr %a105) + %t106 = load { ptr, i64, i64 }, ptr %a102 + %t107 = call { ptr, i64, i64 } @finch.gen.op(ptr %t90, { ptr, i64, i64 } %t106) + store { ptr, i64, i64 } %t106, ptr %a108 + call void @finch_str_drop(ptr %a108) + store { ptr, i64, i64 } %t89, ptr %a110 + store { ptr, i64, i64 } %t107, ptr %a111 + call void @finch_str_concat(ptr %a109, ptr %a110, ptr %a111) + store { ptr, i64, i64 } %t89, ptr %a112 + call void @finch_str_drop(ptr %a112) + store { ptr, i64, i64 } %t107, ptr %a113 + call void @finch_str_drop(ptr %a113) + %t114 = load { ptr, i64, i64 }, ptr %a109 + store { ptr, i64, i64 } %t114, ptr %a116 + store { ptr, i64, i64 } { ptr @.str.5675, i64 6, i64 0 }, ptr %a117 + call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) + store { ptr, i64, i64 } %t114, ptr %a118 + call void @finch_str_drop(ptr %a118) + %t119 = load { ptr, i64, i64 }, ptr %a115 + %t120 = load { ptr, i64, i64 }, ptr %a40 + store { ptr, i64, i64 } %t119, ptr %a122 + store { ptr, i64, i64 } %t120, ptr %a123 + call void @finch_str_concat(ptr %a121, ptr %a122, ptr %a123) + store { ptr, i64, i64 } %t119, ptr %a124 + call void @finch_str_drop(ptr %a124) + %t125 = load { ptr, i64, i64 }, ptr %a121 + %t126 = call { ptr, i64, i64 } @finch.gen.op(ptr %t79, { ptr, i64, i64 } %t125) + store { ptr, i64, i64 } %t125, ptr %a127 + call void @finch_str_drop(ptr %a127) + store { ptr, i64, i64 } %t126, ptr %a128 + %t129 = load ptr, ptr %a1 + %t130 = load ptr, ptr %a1 + %t131 = load { ptr, i64, i64 }, ptr %a40 + store { ptr, i64, i64 } { ptr @.str.5676, i64 8, i64 0 }, ptr %a133 + store { ptr, i64, i64 } %t131, ptr %a134 + 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.5677, i64 2, i64 0 }, ptr %a138 + call void @finch_str_concat(ptr %a136, ptr %a137, ptr %a138) + store { ptr, i64, i64 } %t135, ptr %a139 + call void @finch_str_drop(ptr %a139) + %t140 = load { ptr, i64, i64 }, ptr %a136 + %t141 = load { ptr, i64, i64 }, ptr %a128 + store { ptr, i64, i64 } %t140, ptr %a143 + store { ptr, i64, i64 } %t141, ptr %a144 + call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144) + store { ptr, i64, i64 } %t140, ptr %a145 + call void @finch_str_drop(ptr %a145) + %t146 = load { ptr, i64, i64 }, ptr %a142 + %t147 = call { ptr, i64, i64 } @finch.gen.op(ptr %t130, { ptr, i64, i64 } %t146) + store { ptr, i64, i64 } %t146, ptr %a148 + call void @finch_str_drop(ptr %a148) + %t149 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t129, { ptr, i64, i64 } %t147) + store { ptr, i64, i64 } %t147, ptr %a150 + call void @finch_str_drop(ptr %a150) + store { ptr, i64, i64 } %t149, ptr %a151 + %t152 = load ptr, ptr %a1 + %t153 = load { ptr, i64, i64 }, ptr %a23 + store { ptr, i64, i64 } { ptr @.str.5678, i64 23, i64 0 }, ptr %a155 + store { ptr, i64, i64 } %t153, 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 + store { ptr, i64, i64 } { ptr @.str.5679, i64 6, i64 0 }, ptr %a160 + call void @finch_str_concat(ptr %a158, ptr %a159, ptr %a160) + store { ptr, i64, i64 } %t157, ptr %a161 + call void @finch_str_drop(ptr %a161) + %t162 = load { ptr, i64, i64 }, ptr %a158 + %t163 = load { ptr, i64, i64 }, ptr %a44 + store { ptr, i64, i64 } %t162, ptr %a165 + store { ptr, i64, i64 } %t163, ptr %a166 + call void @finch_str_concat(ptr %a164, ptr %a165, ptr %a166) + store { ptr, i64, i64 } %t162, ptr %a167 + call void @finch_str_drop(ptr %a167) + %t168 = load { ptr, i64, i64 }, ptr %a164 + store { ptr, i64, i64 } %t168, ptr %a170 + store { ptr, i64, i64 } { ptr @.str.5680, i64 6, i64 0 }, ptr %a171 + call void @finch_str_concat(ptr %a169, ptr %a170, ptr %a171) + store { ptr, i64, i64 } %t168, ptr %a172 + call void @finch_str_drop(ptr %a172) + %t173 = load { ptr, i64, i64 }, ptr %a169 + %t174 = load ptr, ptr %a1 + %t175 = load { ptr, i64, i64 }, ptr %a128 + store { ptr, i64, i64 } { ptr @.str.5681, i64 8, 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.5682, i64 2, i64 0 }, ptr %a182 + call void @finch_str_concat(ptr %a180, ptr %a181, ptr %a182) + store { ptr, i64, i64 } %t179, ptr %a183 + call void @finch_str_drop(ptr %a183) + %t184 = load { ptr, i64, i64 }, ptr %a180 + %t185 = load { ptr, i64, i64 }, ptr %a151 + %t186 = extractvalue { ptr, i64, i64 } %t185, 1 + %t187 = icmp uge i64 3, %t186 + br i1 %t187, label %range8565, label %inrange8566 +range8565: + call void @finch_panic_index(ptr @.str.5683, i64 5341, i64 3, i64 %t186) + unreachable +inrange8566: + %t188 = extractvalue { ptr, i64, i64 } %t185, 0 + %t189 = getelementptr inbounds { ptr, i64, i64 }, ptr %t188, i64 3 + %t190 = load { ptr, i64, i64 }, ptr %t189 + store { ptr, i64, i64 } %t184, ptr %a192 + store { ptr, i64, i64 } %t190, ptr %a193 + call void @finch_str_concat(ptr %a191, ptr %a192, ptr %a193) + store { ptr, i64, i64 } %t184, ptr %a194 + call void @finch_str_drop(ptr %a194) + %t195 = load { ptr, i64, i64 }, ptr %a191 + %t196 = call { ptr, i64, i64 } @finch.gen.op(ptr %t174, { ptr, i64, i64 } %t195) + store { ptr, i64, i64 } %t195, ptr %a197 + call void @finch_str_drop(ptr %a197) + store { ptr, i64, i64 } %t173, ptr %a199 + store { ptr, i64, i64 } %t196, ptr %a200 + call void @finch_str_concat(ptr %a198, ptr %a199, ptr %a200) + store { ptr, i64, i64 } %t173, ptr %a201 + call void @finch_str_drop(ptr %a201) + store { ptr, i64, i64 } %t196, ptr %a202 + call void @finch_str_drop(ptr %a202) + %t203 = load { ptr, i64, i64 }, ptr %a198 + %t204 = call { ptr, i64, i64 } @finch.gen.op(ptr %t152, { ptr, i64, i64 } %t203) + store { ptr, i64, i64 } %t203, ptr %a205 + call void @finch_str_drop(ptr %a205) + store { ptr, i64, i64 } %t204, ptr %a206 + %t207 = load ptr, ptr %a1 + %t208 = load { ptr, i64, i64 }, ptr %a206 + %t209 = load %S.ast.Type, ptr %a15 + call void @finch.gen.dropAt(ptr %t207, { ptr, i64, i64 } %t208, %S.ast.Type %t209) + %t210 = load ptr, ptr %a1 + %t211 = load { ptr, i64, i64 }, ptr %a151 + call void @finch.gen.loopEnd(ptr %t210, { ptr, i64, i64 } %t211) + call void @finch_str_drop(ptr %a206) + call void @finch.drop.arr_str(ptr %a151) + call void @finch_str_drop(ptr %a128) + call void @finch_str_drop(ptr %a78) + call void @finch_str_drop(ptr %a64) + call void @finch_str_drop(ptr %a44) + call void @finch_str_drop(ptr %a40) + call void @finch_str_drop(ptr %a23) + call void @finch.drop.S_ast_Type(ptr %a15) + ret void +} + define internal { ptr, i64, i64 } @finch.gen.cmpFn(ptr %p0, %S.ast.Type %p1) { entry: %a1 = alloca ptr, align 16 @@ -74160,47 +89026,49 @@ entry: %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 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca %S.gen.Saved, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 + %a8 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca { ptr, i64, i64 }, align 16 + %a23 = alloca { ptr, i64, i64 }, align 16 + %a24 = alloca { ptr, i64, i64 }, align 16 + %a32 = alloca %S.gen.Saved, align 16 + %a33 = alloca { ptr, i64, i64 }, align 16 + %a36 = alloca { ptr, i64, i64 }, align 16 + %a37 = alloca { ptr, i64, i64 }, align 16 + %a42 = 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 - %a48 = 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 %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 + %a55 = alloca { ptr, i64, i64 }, align 16 + %a57 = alloca { ptr, i64, i64 }, align 16 + %a61 = alloca { ptr, i64, i64 }, align 16 + %a65 = alloca { ptr, i64, i64 }, align 16 %a69 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 + %a70 = alloca { ptr, i64, i64 }, align 16 + %a71 = 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 - %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 { ptr, i64, i64 }, align 16 + %a86 = 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 + %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 + %a97 = 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 - %a101 = 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 %a108 = alloca { ptr, i64, i64 }, align 16 %a109 = alloca { ptr, i64, i64 }, align 16 @@ -74208,371 +89076,514 @@ entry: %a112 = alloca { ptr, i64, i64 }, align 16 %a113 = alloca { ptr, i64, i64 }, align 16 %a114 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 + %a115 = 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 + %a121 = 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 %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 %a132 = 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 + %a142 = alloca { ptr, i64, i64 }, align 16 + %a143 = 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 + %a147 = alloca { ptr, i64, i64 }, align 16 %a148 = alloca { ptr, i64, i64 }, align 16 %a149 = alloca { ptr, i64, i64 }, align 16 %a150 = 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 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 + %a156 = alloca { ptr, i64, i64 }, align 16 + %a158 = 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 %a164 = 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 - %a168 = 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 %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 %a175 = alloca { ptr, i64, i64 }, align 16 %a176 = alloca { ptr, i64, i64 }, align 16 %a177 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 + %a178 = alloca { ptr, i64, i64 }, align 16 %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = 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 + %a183 = 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 %a191 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = 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 + %a196 = alloca { ptr, i64, i64 }, align 16 %a199 = 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 - %a203 = 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 %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 %a210 = 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 + %a215 = alloca { ptr, i64, i64 }, align 16 %a216 = alloca { ptr, i64, i64 }, align 16 %a217 = alloca { ptr, i64, i64 }, align 16 %a218 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 %a221 = alloca { ptr, i64, i64 }, align 16 %a222 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 + %a223 = alloca { ptr, i64, i64 }, align 16 + %a224 = alloca { ptr, i64, i64 }, align 16 %a227 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 + %a229 = 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 + %a237 = 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 - %a241 = alloca { ptr, i64, i64 }, align 16 %a243 = alloca { ptr, i64, i64 }, align 16 %a244 = alloca { ptr, i64, i64 }, align 16 %a245 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 + %a246 = alloca { ptr, i64, i64 }, align 16 + %a247 = 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 + %a252 = alloca { ptr, i64, i64 }, align 16 + %a256 = alloca { ptr, i64, i64 }, align 16 + %a257 = alloca { ptr, i64, i64 }, 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 + %a263 = alloca { ptr, i64, i64 }, align 16 + %a266 = alloca { ptr, i64, i64 }, align 16 + %a267 = alloca { ptr, i64, i64 }, align 16 + %a268 = 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 + %a274 = alloca { ptr, i64, i64 }, align 16 + %a276 = 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 + %a287 = alloca { ptr, i64, i64 }, align 16 + %a288 = alloca { ptr, i64, i64 }, align 16 + %a289 = 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 + %a294 = alloca { ptr, i64, i64 }, align 16 + %a296 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 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.5473, i64 11, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.5684, 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 %panic8110, label %ok8111 -panic8110: - call void @finch_panic(ptr @.str.5474, i64 4936, ptr @.str.5475) + store { ptr, i64, i64 } %t4, ptr %a8 + call void @finch_str_drop(ptr %a8) + %t9 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } %t9, ptr %a10 + %t11 = load ptr, ptr %a1 + %t12 = icmp eq ptr %t11, null + br i1 %t12, label %panic8567, label %ok8568 +panic8567: + call void @finch_panic(ptr @.str.5685, i64 5349, ptr @.str.5686) unreachable -ok8111: - %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 %then8112, label %endif8114 -then8112: - %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 -endif8114: - %t20 = load ptr, ptr %a1 - %t21 = icmp eq ptr %t20, null - br i1 %t21, label %panic8115, label %ok8116 -panic8115: - call void @finch_panic(ptr @.str.5476, i64 4939, ptr @.str.5477) +ok8568: + %t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 22 + %t14 = load { ptr, i64, i64 }, ptr %t13 + %t15 = load { ptr, i64, i64 }, ptr %a10 + %t16 = call i1 @finch.gen.has({ ptr, i64, i64 } %t14, { ptr, i64, i64 } %t15) + br i1 %t16, label %then8569, label %endif8571 +then8569: + %t17 = load { ptr, i64, i64 }, ptr %a10 + ret { ptr, i64, i64 } %t17 +endif8571: + %t18 = load ptr, ptr %a1 + %t19 = icmp eq ptr %t18, null + br i1 %t19, label %panic8572, label %ok8573 +panic8572: + call void @finch_panic(ptr @.str.5687, i64 5352, ptr @.str.5688) unreachable -ok8116: - %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 - store { ptr, i64, i64 } %t24, ptr %a25 - call void @finch_str_copy(ptr %a26, ptr %a25) - %t27 = load { ptr, i64, i64 }, ptr %a26 - %t28 = load i64, ptr %t23 - %t29 = add i64 %t28, 1 - call void @finch_arr_reserve(ptr %t22, i64 %t29, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t30 = load ptr, ptr %t22 - %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t30, i64 %t28 - store { ptr, i64, i64 } %t27, ptr %t31 - store i64 %t29, ptr %t23 - %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.5478, 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.5479, 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 %then8117, label %else8118 -then8117: - %t42 = load ptr, ptr %a1 - %t43 = call { ptr, i64, i64 } @finch.gen.op(ptr %t42, { ptr, i64, i64 } { ptr @.str.5480, 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.5481, 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.5482, 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 %endif8119 -else8118: - %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.5483, 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.5484, i64 2, i64 0 }) - store { ptr, i64, i64 } %t66, ptr %a67 - store { ptr, i64, i64 } { ptr @.str.5485, i64 0, i64 0 }, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.5486, 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 %then8120, label %else8121 -then8120: - %t72 = load ptr, ptr %a1 - %t73 = load { ptr, i64, i64 }, ptr %a59 - store { ptr, i64, i64 } { ptr @.str.5487, 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.5488, 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 - store { ptr, i64, i64 } %t81, 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.5489, 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 - 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 - %t96 = call { ptr, i64, i64 } @finch.gen.op(ptr %t72, { ptr, i64, i64 } %t95) - 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.5490, 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.5491, 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 - store { ptr, i64, i64 } %t106, ptr %a109 +ok8573: + %t20 = getelementptr inbounds %S.gen.Gen, ptr %t18, i32 0, i32 22 + %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t20, i32 0, i32 1 + %t22 = load { ptr, i64, i64 }, ptr %a10 + 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 + %t30 = load ptr, ptr %a1 + %t31 = call %S.gen.Saved @finch.gen.beginHelper(ptr %t30) + store %S.gen.Saved %t31, ptr %a32 + store { ptr, i64, i64 } { ptr @.str.5689, i64 0, i64 0 }, ptr %a33 + %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.5690, 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 %then8574, label %else8575 +then8574: + %t40 = load ptr, ptr %a1 + %t41 = call { ptr, i64, i64 } @finch.gen.op(ptr %t40, { ptr, i64, i64 } { ptr @.str.5691, i64 39, i64 0 }) + store { ptr, i64, i64 } %t41, ptr %a42 + %t43 = load ptr, ptr %a1 + %t44 = load { ptr, i64, i64 }, ptr %a42 + store { ptr, i64, i64 } { ptr @.str.5692, i64 10, 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 + store { ptr, i64, i64 } %t48, ptr %a50 + store { ptr, i64, i64 } { ptr @.str.5693, i64 7, i64 0 }, ptr %a51 + call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) + store { ptr, i64, i64 } %t48, ptr %a52 + call void @finch_str_drop(ptr %a52) + %t53 = load { ptr, i64, i64 }, ptr %a49 + %t54 = call { ptr, i64, i64 } @finch.gen.op(ptr %t43, { ptr, i64, i64 } %t53) + store { ptr, i64, i64 } %t53, ptr %a55 + call void @finch_str_drop(ptr %a55) + %t56 = load { ptr, i64, i64 }, ptr %a33 + store { ptr, i64, i64 } %t54, ptr %a33 + store { ptr, i64, i64 } %t56, ptr %a57 + call void @finch_str_drop(ptr %a57) + call void @finch_str_drop(ptr %a42) + br label %endif8576 +else8575: + %t58 = load ptr, ptr %a1 + %t59 = load %S.ast.Type, ptr %a2 + %t60 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t58, %S.ast.Type %t59) + store { ptr, i64, i64 } %t60, ptr %a61 + %t62 = load ptr, ptr %a1 + %t63 = load { ptr, i64, i64 }, ptr %a61 + %t64 = call { ptr, i64, i64 } @finch.gen.load(ptr %t62, { ptr, i64, i64 } %t63, { ptr, i64, i64 } { ptr @.str.5694, i64 2, i64 0 }) + store { ptr, i64, i64 } %t64, ptr %a65 + %t66 = load ptr, ptr %a1 + %t67 = load { ptr, i64, i64 }, ptr %a61 + %t68 = call { ptr, i64, i64 } @finch.gen.load(ptr %t66, { ptr, i64, i64 } %t67, { ptr, i64, i64 } { ptr @.str.5695, i64 2, i64 0 }) + store { ptr, i64, i64 } %t68, ptr %a69 + store { ptr, i64, i64 } { ptr @.str.5696, i64 0, i64 0 }, ptr %a70 + store { ptr, i64, i64 } { ptr @.str.5697, i64 0, i64 0 }, ptr %a71 + %t72 = load %S.ast.Type, ptr %a2 + %t73 = call i1 @finch.gen.isFloat(%S.ast.Type %t72) + br i1 %t73, label %then8577, label %else8578 +then8577: + %t74 = load ptr, ptr %a1 + %t75 = load { ptr, i64, i64 }, ptr %a61 + store { ptr, i64, i64 } { ptr @.str.5698, 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.5699, i64 1, i64 0 }, ptr %a82 + call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82) + store { ptr, i64, i64 } %t79, ptr %a83 + call void @finch_str_drop(ptr %a83) + %t84 = load { ptr, i64, i64 }, ptr %a80 + %t85 = load { ptr, i64, i64 }, ptr %a65 + store { ptr, i64, i64 } %t84, ptr %a87 + store { ptr, i64, i64 } %t85, ptr %a88 + call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) + store { ptr, i64, i64 } %t84, ptr %a89 + call void @finch_str_drop(ptr %a89) + %t90 = load { ptr, i64, i64 }, ptr %a86 + store { ptr, i64, i64 } %t90, ptr %a92 + store { ptr, i64, i64 } { ptr @.str.5700, i64 2, i64 0 }, ptr %a93 + call void @finch_str_concat(ptr %a91, ptr %a92, ptr %a93) + store { ptr, i64, i64 } %t90, ptr %a94 + call void @finch_str_drop(ptr %a94) + %t95 = load { ptr, i64, i64 }, ptr %a91 + %t96 = load { ptr, i64, i64 }, ptr %a69 + store { ptr, i64, i64 } %t95, ptr %a98 + store { ptr, i64, i64 } %t96, ptr %a99 + call void @finch_str_concat(ptr %a97, ptr %a98, ptr %a99) + store { ptr, i64, i64 } %t95, ptr %a100 + call void @finch_str_drop(ptr %a100) + %t101 = load { ptr, i64, i64 }, ptr %a97 + %t102 = call { ptr, i64, i64 } @finch.gen.op(ptr %t74, { ptr, i64, i64 } %t101) + store { ptr, i64, i64 } %t101, ptr %a103 + call void @finch_str_drop(ptr %a103) + %t104 = load { ptr, i64, i64 }, ptr %a70 + store { ptr, i64, i64 } %t102, ptr %a70 + store { ptr, i64, i64 } %t104, ptr %a105 + call void @finch_str_drop(ptr %a105) + %t106 = load ptr, ptr %a1 + %t107 = load { ptr, i64, i64 }, ptr %a61 + store { ptr, i64, i64 } { ptr @.str.5701, i64 9, 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.5492, i64 2, i64 0 }, ptr %a114 + store { ptr, i64, i64 } { ptr @.str.5702, i64 1, 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 - store { ptr, i64, i64 } %t115, ptr %a118 + store { ptr, i64, i64 } %t111, ptr %a115 + call void @finch_str_drop(ptr %a115) + %t116 = load { ptr, i64, i64 }, ptr %a112 + %t117 = load { ptr, i64, i64 }, ptr %a65 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 = call { ptr, i64, i64 } @finch.gen.op(ptr %t97, { ptr, i64, i64 } %t120) - store { ptr, i64, i64 } %t121, ptr %a69 - br label %endif8122 -else8121: - %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.5494, i64 1, i64 0 }, i1 %t124) - store { ptr, i64, i64 } { ptr @.str.5493, 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.5495, 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 - store { ptr, i64, i64 } %t133, 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.5496, 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 - store { ptr, i64, i64 } %t142, ptr %a145 - store { ptr, i64, i64 } %t143, ptr %a146 - 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.5497, 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 + store { ptr, i64, i64 } %t117, ptr %a120 + call void @finch_str_concat(ptr %a118, ptr %a119, ptr %a120) + store { ptr, i64, i64 } %t116, ptr %a121 + call void @finch_str_drop(ptr %a121) + %t122 = load { ptr, i64, i64 }, ptr %a118 + store { ptr, i64, i64 } %t122, ptr %a124 + store { ptr, i64, i64 } { ptr @.str.5703, i64 2, i64 0 }, ptr %a125 + call void @finch_str_concat(ptr %a123, ptr %a124, ptr %a125) + store { ptr, i64, i64 } %t122, ptr %a126 + call void @finch_str_drop(ptr %a126) + %t127 = load { ptr, i64, i64 }, ptr %a123 + %t128 = load { ptr, i64, i64 }, ptr %a69 + store { ptr, i64, i64 } %t127, ptr %a130 + store { ptr, i64, i64 } %t128, ptr %a131 + call void @finch_str_concat(ptr %a129, ptr %a130, ptr %a131) + store { ptr, i64, i64 } %t127, ptr %a132 + call void @finch_str_drop(ptr %a132) + %t133 = load { ptr, i64, i64 }, ptr %a129 + %t134 = call { ptr, i64, i64 } @finch.gen.op(ptr %t106, { ptr, i64, i64 } %t133) + store { ptr, i64, i64 } %t133, ptr %a135 + call void @finch_str_drop(ptr %a135) + %t136 = load { ptr, i64, i64 }, ptr %a71 + store { ptr, i64, i64 } %t134, ptr %a71 + store { ptr, i64, i64 } %t136, ptr %a137 + call void @finch_str_drop(ptr %a137) + br label %endif8579 +else8578: + %t138 = load ptr, ptr %a1 + %t139 = load %S.ast.Type, ptr %a2 + %t140 = call i1 @finch.gen.isSigned(%S.ast.Type %t139) + %t141 = call { ptr, i64, i64 } @finch.gen.intPred({ ptr, i64, i64 } { ptr @.str.5705, i64 1, i64 0 }, i1 %t140) + store { ptr, i64, i64 } { ptr @.str.5704, i64 5, i64 0 }, ptr %a143 + store { ptr, i64, i64 } %t141, ptr %a144 + call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144) + store { ptr, i64, i64 } %t141, ptr %a145 + call void @finch_str_drop(ptr %a145) + %t146 = load { ptr, i64, i64 }, ptr %a142 + store { ptr, i64, i64 } %t146, ptr %a148 + store { ptr, i64, i64 } { ptr @.str.5706, i64 1, i64 0 }, ptr %a149 + call void @finch_str_concat(ptr %a147, ptr %a148, ptr %a149) + store { ptr, i64, i64 } %t146, ptr %a150 + call void @finch_str_drop(ptr %a150) + %t151 = load { ptr, i64, i64 }, ptr %a147 + %t152 = load { ptr, i64, i64 }, ptr %a61 store { ptr, i64, i64 } %t151, 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 - %t157 = call { ptr, i64, i64 } @finch.gen.op(ptr %t122, { ptr, i64, i64 } %t156) - store { ptr, i64, i64 } %t157, ptr %a68 - %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.5499, i64 1, i64 0 }, i1 %t160) - store { ptr, i64, i64 } { ptr @.str.5498, 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.5500, 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 - store { ptr, i64, i64 } %t169, 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.5501, i64 1, i64 0 }, ptr %a177 + store { ptr, i64, i64 } %t151, ptr %a156 + call void @finch_str_drop(ptr %a156) + %t157 = load { ptr, i64, i64 }, ptr %a153 + store { ptr, i64, i64 } %t157, ptr %a159 + store { ptr, i64, i64 } { ptr @.str.5707, i64 1, i64 0 }, ptr %a160 + call void @finch_str_concat(ptr %a158, ptr %a159, ptr %a160) + store { ptr, i64, i64 } %t157, ptr %a161 + call void @finch_str_drop(ptr %a161) + %t162 = load { ptr, i64, i64 }, ptr %a158 + %t163 = load { ptr, i64, i64 }, ptr %a65 + store { ptr, i64, i64 } %t162, ptr %a165 + store { ptr, i64, i64 } %t163, ptr %a166 + call void @finch_str_concat(ptr %a164, ptr %a165, ptr %a166) + store { ptr, i64, i64 } %t162, ptr %a167 + call void @finch_str_drop(ptr %a167) + %t168 = load { ptr, i64, i64 }, ptr %a164 + store { ptr, i64, i64 } %t168, ptr %a170 + store { ptr, i64, i64 } { ptr @.str.5708, i64 2, i64 0 }, ptr %a171 + call void @finch_str_concat(ptr %a169, ptr %a170, ptr %a171) + store { ptr, i64, i64 } %t168, ptr %a172 + call void @finch_str_drop(ptr %a172) + %t173 = load { ptr, i64, i64 }, ptr %a169 + %t174 = load { ptr, i64, i64 }, ptr %a69 + store { ptr, i64, i64 } %t173, ptr %a176 + store { ptr, i64, i64 } %t174, 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 - store { ptr, i64, i64 } %t178, 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.5502, 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 + store { ptr, i64, i64 } %t173, ptr %a178 + call void @finch_str_drop(ptr %a178) + %t179 = load { ptr, i64, i64 }, ptr %a175 + %t180 = call { ptr, i64, i64 } @finch.gen.op(ptr %t138, { ptr, i64, i64 } %t179) + store { ptr, i64, i64 } %t179, ptr %a181 + call void @finch_str_drop(ptr %a181) + %t182 = load { ptr, i64, i64 }, ptr %a70 + store { ptr, i64, i64 } %t180, ptr %a70 + store { ptr, i64, i64 } %t182, ptr %a183 + call void @finch_str_drop(ptr %a183) + %t184 = load ptr, ptr %a1 + %t185 = load %S.ast.Type, ptr %a2 + %t186 = call i1 @finch.gen.isSigned(%S.ast.Type %t185) + %t187 = call { ptr, i64, i64 } @finch.gen.intPred({ ptr, i64, i64 } { ptr @.str.5710, i64 1, i64 0 }, i1 %t186) + store { ptr, i64, i64 } { ptr @.str.5709, i64 5, i64 0 }, ptr %a189 store { ptr, i64, i64 } %t187, 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 - %t193 = call { ptr, i64, i64 } @finch.gen.op(ptr %t158, { ptr, i64, i64 } %t192) - store { ptr, i64, i64 } %t193, ptr %a69 - br label %endif8122 -endif8122: - %t194 = load ptr, ptr %a1 - %t195 = load ptr, ptr %a1 - %t196 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } { ptr @.str.5504, 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.5505, 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.5503, 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.5506, i64 2, i64 0 }, ptr %a212 + call void @finch_str_concat(ptr %a188, ptr %a189, ptr %a190) + store { ptr, i64, i64 } %t187, ptr %a191 + call void @finch_str_drop(ptr %a191) + %t192 = load { ptr, i64, i64 }, ptr %a188 + store { ptr, i64, i64 } %t192, ptr %a194 + store { ptr, i64, i64 } { ptr @.str.5711, i64 1, i64 0 }, ptr %a195 + call void @finch_str_concat(ptr %a193, ptr %a194, ptr %a195) + store { ptr, i64, i64 } %t192, ptr %a196 + call void @finch_str_drop(ptr %a196) + %t197 = load { ptr, i64, i64 }, ptr %a193 + %t198 = load { ptr, i64, i64 }, ptr %a61 + store { ptr, i64, i64 } %t197, ptr %a200 + store { ptr, i64, i64 } %t198, ptr %a201 + call void @finch_str_concat(ptr %a199, ptr %a200, ptr %a201) + store { ptr, i64, i64 } %t197, ptr %a202 + call void @finch_str_drop(ptr %a202) + %t203 = load { ptr, i64, i64 }, ptr %a199 + store { ptr, i64, i64 } %t203, ptr %a205 + store { ptr, i64, i64 } { ptr @.str.5712, i64 1, i64 0 }, ptr %a206 + call void @finch_str_concat(ptr %a204, ptr %a205, ptr %a206) + store { ptr, i64, i64 } %t203, ptr %a207 + call void @finch_str_drop(ptr %a207) + %t208 = load { ptr, i64, i64 }, ptr %a204 + %t209 = load { ptr, i64, i64 }, ptr %a65 + store { ptr, i64, i64 } %t208, ptr %a211 + store { ptr, i64, i64 } %t209, 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.5507, 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.5508, 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) - store { ptr, i64, i64 } %t213, 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 - %t229 = call { ptr, i64, i64 } @finch.gen.op(ptr %t194, { ptr, i64, i64 } %t228) - store { ptr, i64, i64 } %t229, ptr %a35 - br label %endif8119 -endif8119: + store { ptr, i64, i64 } %t208, ptr %a213 + call void @finch_str_drop(ptr %a213) + %t214 = load { ptr, i64, i64 }, ptr %a210 + store { ptr, i64, i64 } %t214, ptr %a216 + store { ptr, i64, i64 } { ptr @.str.5713, i64 2, i64 0 }, ptr %a217 + call void @finch_str_concat(ptr %a215, ptr %a216, ptr %a217) + store { ptr, i64, i64 } %t214, ptr %a218 + call void @finch_str_drop(ptr %a218) + %t219 = load { ptr, i64, i64 }, ptr %a215 + %t220 = load { ptr, i64, i64 }, ptr %a69 + store { ptr, i64, i64 } %t219, ptr %a222 + store { ptr, i64, i64 } %t220, ptr %a223 + call void @finch_str_concat(ptr %a221, ptr %a222, ptr %a223) + store { ptr, i64, i64 } %t219, ptr %a224 + call void @finch_str_drop(ptr %a224) + %t225 = load { ptr, i64, i64 }, ptr %a221 + %t226 = call { ptr, i64, i64 } @finch.gen.op(ptr %t184, { ptr, i64, i64 } %t225) + store { ptr, i64, i64 } %t225, ptr %a227 + call void @finch_str_drop(ptr %a227) + %t228 = load { ptr, i64, i64 }, ptr %a71 + store { ptr, i64, i64 } %t226, ptr %a71 + store { ptr, i64, i64 } %t228, ptr %a229 + call void @finch_str_drop(ptr %a229) + br label %endif8579 +endif8579: %t230 = load ptr, ptr %a1 - %t231 = load { ptr, i64, i64 }, ptr %a35 - store { ptr, i64, i64 } { ptr @.str.5509, 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 - call void @finch.gen.emit(ptr %t230, { ptr, i64, i64 } %t235) - %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.5510, 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.5511, 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) - %t247 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t247, ptr %a248 - call void @finch_str_copy(ptr %a249, ptr %a248) - %t250 = load { ptr, i64, i64 }, ptr %a249 - ret { ptr, i64, i64 } %t250 + %t231 = load ptr, ptr %a1 + %t232 = load { ptr, i64, i64 }, ptr %a71 + store { ptr, i64, i64 } { ptr @.str.5715, i64 8, 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 + store { ptr, i64, i64 } %t236, ptr %a238 + store { ptr, i64, i64 } { ptr @.str.5716, i64 7, i64 0 }, ptr %a239 + call void @finch_str_concat(ptr %a237, ptr %a238, ptr %a239) + store { ptr, i64, i64 } %t236, ptr %a240 + call void @finch_str_drop(ptr %a240) + %t241 = load { ptr, i64, i64 }, ptr %a237 + %t242 = call { ptr, i64, i64 } @finch.gen.op(ptr %t231, { ptr, i64, i64 } %t241) + store { ptr, i64, i64 } %t241, ptr %a243 + call void @finch_str_drop(ptr %a243) + store { ptr, i64, i64 } { ptr @.str.5714, i64 8, i64 0 }, ptr %a245 + store { ptr, i64, i64 } %t242, ptr %a246 + call void @finch_str_concat(ptr %a244, ptr %a245, ptr %a246) + store { ptr, i64, i64 } %t242, ptr %a247 + call void @finch_str_drop(ptr %a247) + %t248 = load { ptr, i64, i64 }, ptr %a244 + store { ptr, i64, i64 } %t248, ptr %a250 + store { ptr, i64, i64 } { ptr @.str.5717, i64 2, i64 0 }, ptr %a251 + call void @finch_str_concat(ptr %a249, ptr %a250, ptr %a251) + store { ptr, i64, i64 } %t248, ptr %a252 + call void @finch_str_drop(ptr %a252) + %t253 = load { ptr, i64, i64 }, ptr %a249 + %t254 = load ptr, ptr %a1 + %t255 = load { ptr, i64, i64 }, ptr %a70 + store { ptr, i64, i64 } { ptr @.str.5718, i64 8, i64 0 }, ptr %a257 + store { ptr, i64, i64 } %t255, ptr %a258 + call void @finch_str_concat(ptr %a256, ptr %a257, ptr %a258) + %t259 = load { ptr, i64, i64 }, ptr %a256 + store { ptr, i64, i64 } %t259, ptr %a261 + store { ptr, i64, i64 } { ptr @.str.5719, i64 7, i64 0 }, ptr %a262 + call void @finch_str_concat(ptr %a260, ptr %a261, ptr %a262) + store { ptr, i64, i64 } %t259, ptr %a263 + call void @finch_str_drop(ptr %a263) + %t264 = load { ptr, i64, i64 }, ptr %a260 + %t265 = call { ptr, i64, i64 } @finch.gen.op(ptr %t254, { ptr, i64, i64 } %t264) + store { ptr, i64, i64 } %t264, ptr %a266 + call void @finch_str_drop(ptr %a266) + store { ptr, i64, i64 } %t253, ptr %a268 + store { ptr, i64, i64 } %t265, ptr %a269 + call void @finch_str_concat(ptr %a267, ptr %a268, ptr %a269) + store { ptr, i64, i64 } %t253, ptr %a270 + call void @finch_str_drop(ptr %a270) + store { ptr, i64, i64 } %t265, ptr %a271 + call void @finch_str_drop(ptr %a271) + %t272 = load { ptr, i64, i64 }, ptr %a267 + %t273 = call { ptr, i64, i64 } @finch.gen.op(ptr %t230, { ptr, i64, i64 } %t272) + store { ptr, i64, i64 } %t272, ptr %a274 + call void @finch_str_drop(ptr %a274) + %t275 = load { ptr, i64, i64 }, ptr %a33 + store { ptr, i64, i64 } %t273, ptr %a33 + store { ptr, i64, i64 } %t275, ptr %a276 + call void @finch_str_drop(ptr %a276) + call void @finch_str_drop(ptr %a71) + call void @finch_str_drop(ptr %a70) + call void @finch_str_drop(ptr %a69) + call void @finch_str_drop(ptr %a65) + call void @finch_str_drop(ptr %a61) + br label %endif8576 +endif8576: + %t277 = load ptr, ptr %a1 + %t278 = load { ptr, i64, i64 }, ptr %a33 + store { ptr, i64, i64 } { ptr @.str.5720, i64 8, i64 0 }, ptr %a280 + store { ptr, i64, i64 } %t278, 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 %t277, { ptr, i64, i64 } %t282) + store { ptr, i64, i64 } %t282, ptr %a283 + call void @finch_str_drop(ptr %a283) + %t284 = load ptr, ptr %a1 + %t285 = load %S.gen.Saved, ptr %a32 + %t286 = load { ptr, i64, i64 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.5721, i64 20, i64 0 }, ptr %a288 + store { ptr, i64, i64 } %t286, ptr %a289 + call void @finch_str_concat(ptr %a287, ptr %a288, ptr %a289) + %t290 = load { ptr, i64, i64 }, ptr %a287 + store { ptr, i64, i64 } %t290, ptr %a292 + store { ptr, i64, i64 } { ptr @.str.5722, i64 16, i64 0 }, ptr %a293 + call void @finch_str_concat(ptr %a291, ptr %a292, ptr %a293) + store { ptr, i64, i64 } %t290, ptr %a294 + call void @finch_str_drop(ptr %a294) + %t295 = load { ptr, i64, i64 }, ptr %a291 + call void @finch.gen.endHelper(ptr %t284, %S.gen.Saved %t285, { ptr, i64, i64 } %t295) + store { ptr, i64, i64 } %t295, ptr %a296 + call void @finch_str_drop(ptr %a296) + %t297 = load { ptr, i64, i64 }, ptr %a10 + call void @finch_str_drop(ptr %a33) + call void @finch.drop.S_gen_Saved(ptr %a32) + ret { ptr, i64, i64 } %t297 } define internal %S.gen.Val @finch.gen.strMethod(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2) { @@ -74587,239 +89598,328 @@ entry: %a26 = alloca { ptr, i64, i64 }, align 16 %a28 = alloca { ptr, i64, i64 }, align 16 %a29 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 + %a53 = alloca %S.gen.Val, align 16 + %a54 = alloca %S.ast.Type, align 16 + %a56 = alloca { ptr, i64, i64 }, align 16 %a57 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 + %a59 = alloca %S.gen.Val, align 16 + %a60 = alloca { ptr, i64, i64 }, align 16 + %a80 = alloca %S.gen.Val, align 16 + %a81 = alloca %S.ast.Type, align 16 + %a83 = 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 + %a86 = alloca %S.gen.Val, align 16 + %a87 = alloca { ptr, i64, i64 }, align 16 %a90 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 + %a91 = 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 %a97 = 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 + %a101 = 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 %a106 = alloca { ptr, i64, i64 }, align 16 %a107 = alloca { ptr, i64, i64 }, align 16 %a108 = 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 - %a115 = 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 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 + %a118 = 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 %a125 = 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 - %a132 = alloca { ptr, i64, i64 }, align 16 %a133 = 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 - %a137 = 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 + %a141 = alloca { ptr, i64, i64 }, align 16 + %a145 = alloca { ptr, i64, i64 }, align 16 + %a147 = alloca { ptr, i64, i64 }, align 16 %a148 = 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 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 + %a155 = alloca { ptr, i64, i64 }, align 16 + %a156 = alloca { ptr, i64, i64 }, align 16 + %a158 = alloca { ptr, i64, i64 }, align 16 + %a167 = alloca { ptr, i64, i64 }, align 16 + %a168 = alloca { ptr, i64, i64 }, align 16 + %a172 = alloca { ptr, i64, i64 }, align 16 + %a173 = alloca { ptr, i64, i64 }, align 16 + %a178 = alloca { ptr, i64, i64 }, align 16 + %a179 = 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 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a193 = 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 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 + %a200 = alloca %S.gen.Val, align 16 %a204 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 %a206 = alloca { ptr, i64, i64 }, align 16 + %a207 = 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 + %a216 = alloca { ptr, i64, i64 }, align 16 + %a217 = alloca { ptr, i64, i64 }, align 16 + %a218 = 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 + %a222 = 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 + %a227 = 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 - %a232 = alloca { ptr, i64, i64 }, align 16 %a233 = alloca { ptr, i64, i64 }, align 16 %a234 = alloca { ptr, i64, i64 }, align 16 - %a237 = 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 + %a238 = alloca { ptr, i64, i64 }, align 16 + %a239 = 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 { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 + %a253 = alloca { ptr, i64, i64 }, align 16 %a255 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 + %a256 = alloca { ptr, i64, i64 }, align 16 + %a257 = alloca { ptr, i64, i64 }, align 16 + %a258 = alloca { ptr, i64, i64 }, align 16 %a261 = alloca { ptr, i64, i64 }, align 16 %a262 = alloca { ptr, i64, i64 }, align 16 + %a263 = 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 + %a267 = alloca { ptr, i64, i64 }, align 16 + %a268 = 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 %a273 = 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 %a278 = 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 %a282 = alloca { ptr, i64, i64 }, align 16 %a283 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 + %a286 = alloca { ptr, i64, i64 }, align 16 %a287 = 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 - %a303 = 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 %a304 = 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 %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 + %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 %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 - %a332 = 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 %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 + %a339 = alloca { ptr, i64, i64 }, align 16 + %a340 = 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 - %a346 = alloca { ptr, i64, i64 }, align 16 %a347 = alloca { ptr, i64, i64 }, align 16 - %a357 = alloca { ptr, i64, i64 }, align 16 + %a348 = alloca { ptr, i64, i64 }, align 16 + %a349 = alloca { ptr, i64, i64 }, align 16 + %a350 = alloca { ptr, i64, i64 }, align 16 + %a353 = alloca { ptr, i64, i64 }, align 16 + %a354 = alloca { ptr, i64, i64 }, align 16 %a358 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 + %a359 = 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 + %a376 = alloca { ptr, i64, i64 }, align 16 + %a377 = alloca { ptr, i64, i64 }, align 16 + %a385 = alloca { ptr, i64, i64 }, align 16 %a386 = alloca { ptr, i64, i64 }, align 16 + %a387 = 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 - %a393 = alloca { ptr, i64, i64 }, align 16 - %a394 = alloca { ptr, i64, i64 }, align 16 + %a392 = 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 %a398 = alloca { ptr, i64, i64 }, align 16 - %a399 = 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 + %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 - %a432 = alloca { ptr, i64, i64 }, align 16 - %a433 = alloca { ptr, i64, i64 }, align 16 - %a449 = 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 + %a425 = alloca { ptr, i64, i64 }, align 16 + %a426 = alloca { ptr, i64, i64 }, align 16 + %a440 = alloca %S.gen.Val, align 16 + %a446 = alloca i64, align 16 + %a458 = alloca %S.gen.Val, align 16 %a464 = alloca { ptr, i64, i64 }, align 16 - %a465 = alloca { ptr, i64, i64 }, align 16 - %a466 = alloca { ptr, i64, i64 }, align 16 %a468 = 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 + %a472 = 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 + %a476 = alloca { ptr, i64, i64 }, align 16 %a477 = alloca { ptr, i64, i64 }, align 16 %a478 = alloca { ptr, i64, i64 }, align 16 - %a479 = alloca { ptr, i64, i64 }, align 16 - %a490 = alloca { ptr, i64, i64 }, align 16 - %a491 = alloca { ptr, i64, i64 }, align 16 - %a516 = alloca { ptr, i64, i64 }, align 16 - %a517 = alloca { ptr, i64, i64 }, align 16 - %a519 = 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 + %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 + %a489 = alloca { ptr, i64, i64 }, align 16 + %a492 = 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 + %a497 = alloca { ptr, i64, i64 }, align 16 + %a498 = alloca { ptr, i64, i64 }, align 16 + %a499 = alloca { ptr, i64, i64 }, align 16 + %a500 = alloca { ptr, i64, i64 }, align 16 + %a503 = alloca { ptr, i64, i64 }, align 16 + %a504 = alloca { ptr, i64, i64 }, align 16 + %a505 = alloca { ptr, i64, i64 }, align 16 + %a506 = alloca { ptr, i64, i64 }, align 16 + %a508 = alloca { ptr, i64, i64 }, align 16 + %a509 = alloca { ptr, i64, i64 }, align 16 + %a510 = alloca { ptr, i64, i64 }, align 16 + %a511 = alloca { ptr, i64, i64 }, align 16 + %a513 = alloca { ptr, i64, i64 }, align 16 %a526 = alloca { ptr, i64, i64 }, align 16 %a527 = alloca { ptr, i64, i64 }, align 16 - %a528 = 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 - %a535 = alloca { ptr, i64, i64 }, align 16 - %a536 = alloca { ptr, i64, i64 }, align 16 - %a537 = alloca { ptr, i64, i64 }, align 16 - %a540 = alloca { ptr, i64, i64 }, align 16 - %a541 = alloca { ptr, i64, i64 }, align 16 - %a542 = alloca { ptr, i64, i64 }, align 16 - %a544 = alloca { ptr, i64, i64 }, align 16 + %a541 = alloca %S.gen.Val, align 16 %a545 = alloca { ptr, i64, i64 }, align 16 - %a546 = alloca { ptr, i64, i64 }, align 16 + %a548 = alloca { ptr, i64, i64 }, align 16 + %a551 = alloca { ptr, i64, i64 }, align 16 + %a552 = alloca { ptr, i64, i64 }, align 16 + %a553 = alloca { ptr, i64, i64 }, align 16 + %a555 = 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 + %a561 = alloca { ptr, i64, i64 }, align 16 + %a562 = alloca { ptr, i64, i64 }, align 16 + %a563 = alloca { ptr, i64, i64 }, align 16 %a564 = alloca { ptr, i64, i64 }, align 16 + %a566 = alloca { ptr, i64, i64 }, align 16 %a567 = alloca { ptr, i64, i64 }, align 16 %a568 = alloca { ptr, i64, i64 }, align 16 %a569 = alloca { ptr, i64, i64 }, align 16 - %a571 = alloca { ptr, i64, i64 }, align 16 %a572 = alloca { ptr, i64, i64 }, align 16 %a573 = alloca { ptr, i64, i64 }, align 16 - %a576 = alloca { ptr, i64, i64 }, align 16 + %a574 = alloca { ptr, i64, i64 }, align 16 + %a575 = alloca { ptr, i64, i64 }, align 16 %a577 = alloca { ptr, i64, i64 }, align 16 %a578 = alloca { ptr, i64, i64 }, align 16 + %a579 = alloca { ptr, i64, i64 }, align 16 %a580 = alloca { ptr, i64, i64 }, align 16 - %a581 = alloca { ptr, i64, i64 }, align 16 %a582 = alloca { ptr, i64, i64 }, align 16 + %a591 = alloca %S.ast.Type, align 16 %a595 = alloca { ptr, i64, i64 }, align 16 %a596 = alloca { ptr, i64, i64 }, align 16 - %a597 = alloca { ptr, i64, i64 }, align 16 - %a599 = alloca { ptr, i64, i64 }, align 16 - %a600 = alloca { ptr, i64, i64 }, align 16 - %a601 = alloca { ptr, i64, i64 }, align 16 + %a620 = alloca %S.gen.Val, align 16 + %a621 = alloca %S.ast.Type, align 16 + %a623 = alloca { ptr, i64, i64 }, align 16 + %a624 = alloca { ptr, i64, i64 }, align 16 + %a626 = alloca %S.gen.Val, 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 + %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 + %a640 = 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 + %a648 = 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 + %a654 = 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 + %a661 = alloca { ptr, i64, i64 }, align 16 + %a670 = alloca { ptr, i64, i64 }, align 16 + %a671 = alloca { ptr, i64, i64 }, align 16 + %a678 = 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 + %a687 = alloca { ptr, i64, i64 }, align 16 + %a688 = 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 + %a696 = alloca { ptr, i64, i64 }, align 16 + %a697 = alloca { ptr, i64, i64 }, align 16 + %a698 = alloca { ptr, i64, i64 }, align 16 + %a699 = alloca { ptr, i64, i64 }, align 16 + %a701 = alloca { ptr, i64, i64 }, align 16 + %a708 = alloca %S.ast.Type, align 16 + %a714 = alloca { ptr, i64, i64 }, align 16 + %a715 = alloca { ptr, i64, i64 }, align 16 + %a716 = 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 + %a721 = alloca { ptr, i64, i64 }, align 16 + %a723 = 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 @@ -74835,22 +89935,22 @@ entry: %t13 = load ptr, ptr %a1 %t14 = load ptr, ptr %a1 %t15 = icmp eq ptr %t14, null - br i1 %t15, label %panic8123, label %ok8124 -panic8123: - call void @finch_panic(ptr @.str.5512, i64 4968, ptr @.str.5513) + br i1 %t15, label %panic8580, label %ok8581 +panic8580: + call void @finch_panic(ptr @.str.5723, i64 5381, ptr @.str.5724) unreachable -ok8124: +ok8581: %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 %range8125, label %inrange8126 -range8125: - call void @finch_panic_index(ptr @.str.5514, i64 4968, i64 %t18, i64 %t20) + br i1 %t21, label %range8582, label %inrange8583 +range8582: + call void @finch_panic_index(ptr @.str.5725, i64 5381, i64 %t18, i64 %t20) unreachable -inrange8126: +inrange8583: %t22 = extractvalue { ptr, i64, i64 } %t19, 0 %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t22, i64 %t18 %t24 = load { ptr, i64, i64 }, ptr %t23 @@ -74858,11 +89958,11 @@ inrange8126: 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.5515, i64 3, i64 0 }, ptr %a29 + store { ptr, i64, i64 } { ptr @.str.5726, 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 %then8127, label %endif8129 -then8127: + br i1 %t31, label %then8584, label %endif8586 +then8584: %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) @@ -74872,879 +89972,1151 @@ then8127: %t37 = load { ptr, i64, i64 }, ptr %t36 %t38 = extractvalue { ptr, i64, i64 } %t37, 1 %t39 = icmp uge i64 1, %t38 - br i1 %t39, label %range8130, label %inrange8131 -range8130: - call void @finch_panic_index(ptr @.str.5516, i64 4971, i64 1, i64 %t38) + br i1 %t39, label %range8587, label %inrange8588 +range8587: + call void @finch_panic_index(ptr @.str.5727, i64 5384, i64 1, i64 %t38) unreachable -inrange8131: +inrange8588: %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.5517, i64 3, i64 0 }) + %t44 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5728, 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 %range8132, label %inrange8133 -range8132: - call void @finch_panic_index(ptr @.str.5518, i64 4971, i64 1, i64 %t47) + br i1 %t48, label %range8589, label %inrange8590 +range8589: + call void @finch_panic_index(ptr @.str.5729, i64 5384, i64 1, i64 %t47) unreachable -inrange8133: +inrange8590: %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.5519, 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) - %t56 = load { ptr, i64, i64 }, ptr %a55 - store { ptr, i64, i64 } %t56, ptr %a57 - %t58 = load ptr, ptr %a1 - %t59 = load ptr, ptr %a1 - %t60 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t61 = load { ptr, i64, i64 }, ptr %t60 - %t62 = extractvalue { ptr, i64, i64 } %t61, 1 - %t63 = icmp uge i64 2, %t62 - br i1 %t63, label %range8134, label %inrange8135 -range8134: - call void @finch_panic_index(ptr @.str.5520, i64 4972, i64 2, i64 %t62) + %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.5730, i64 9, i64 0 }) + store %S.gen.Val %t43, ptr %a53 + call void @finch.drop.S_gen_Val(ptr %a53) + store %S.ast.Type %t44, ptr %a54 + call void @finch.drop.S_ast_Type(ptr %a54) + %t55 = extractvalue %S.gen.Val %t52, 0 + store { ptr, i64, i64 } %t55, ptr %a56 + call void @finch_str_copy(ptr %a57, ptr %a56) + %t58 = load { ptr, i64, i64 }, ptr %a57 + store %S.gen.Val %t52, ptr %a59 + call void @finch.drop.S_gen_Val(ptr %a59) + store { ptr, i64, i64 } %t58, ptr %a60 + %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 2, %t65 + br i1 %t66, label %range8591, label %inrange8592 +range8591: + call void @finch_panic_index(ptr @.str.5731, i64 5385, i64 2, i64 %t65) unreachable -inrange8135: - %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.5521, 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 %range8136, label %inrange8137 -range8136: - call void @finch_panic_index(ptr @.str.5522, i64 4972, i64 2, i64 %t71) +inrange8592: + %t67 = extractvalue { ptr, i64, i64 } %t64, 0 + %t68 = getelementptr inbounds %S.ast.Node, ptr %t67, i64 2 + %t69 = load %S.ast.Node, ptr %t68 + %t70 = call %S.gen.Val @finch.gen.expr(ptr %t62, %S.ast.Node %t69) + %t71 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5732, i64 3, i64 0 }) + %t72 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t73 = load { ptr, i64, i64 }, ptr %t72 + %t74 = extractvalue { ptr, i64, i64 } %t73, 1 + %t75 = icmp uge i64 2, %t74 + br i1 %t75, label %range8593, label %inrange8594 +range8593: + call void @finch_panic_index(ptr @.str.5733, i64 5385, i64 2, i64 %t74) unreachable -inrange8137: - %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.5523, 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) - %t80 = load { ptr, i64, i64 }, ptr %a79 - 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.5524, 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.5525, 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 - store { ptr, i64, i64 } %t91, 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.5526, 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 - store { ptr, i64, i64 } %t100, 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.5527, 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 +inrange8594: + %t76 = extractvalue { ptr, i64, i64 } %t73, 0 + %t77 = getelementptr inbounds %S.ast.Node, ptr %t76, i64 2 + %t78 = load %S.ast.Node, ptr %t77 + %t79 = call %S.gen.Val @finch.gen.coerce(ptr %t61, %S.gen.Val %t70, %S.ast.Type %t71, %S.ast.Node %t78, { ptr, i64, i64 } { ptr @.str.5734, i64 7, i64 0 }) + store %S.gen.Val %t70, ptr %a80 + call void @finch.drop.S_gen_Val(ptr %a80) + store %S.ast.Type %t71, ptr %a81 + call void @finch.drop.S_ast_Type(ptr %a81) + %t82 = extractvalue %S.gen.Val %t79, 0 + store { ptr, i64, i64 } %t82, ptr %a83 + call void @finch_str_copy(ptr %a84, ptr %a83) + %t85 = load { ptr, i64, i64 }, ptr %a84 + store %S.gen.Val %t79, ptr %a86 + call void @finch.drop.S_gen_Val(ptr %a86) + store { ptr, i64, i64 } %t85, ptr %a87 + %t88 = load ptr, ptr %a1 + %t89 = load { ptr, i64, i64 }, ptr %a12 + store { ptr, i64, i64 } { ptr @.str.5735, i64 29, 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.5736, i64 6, i64 0 }, ptr %a96 + call void @finch_str_concat(ptr %a94, ptr %a95, ptr %a96) + store { ptr, i64, i64 } %t93, ptr %a97 + call void @finch_str_drop(ptr %a97) + %t98 = load { ptr, i64, i64 }, ptr %a94 + %t99 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t98, ptr %a101 + store { ptr, i64, i64 } %t99, ptr %a102 + call void @finch_str_concat(ptr %a100, ptr %a101, ptr %a102) + store { ptr, i64, i64 } %t98, ptr %a103 + call void @finch_str_drop(ptr %a103) + %t104 = load { ptr, i64, i64 }, ptr %a100 + store { ptr, i64, i64 } %t104, ptr %a106 + store { ptr, i64, i64 } { ptr @.str.5737, i64 6, i64 0 }, ptr %a107 + call void @finch_str_concat(ptr %a105, ptr %a106, ptr %a107) + store { ptr, i64, i64 } %t104, ptr %a108 + call void @finch_str_drop(ptr %a108) + %t109 = load { ptr, i64, i64 }, ptr %a105 + %t110 = load { ptr, i64, i64 }, ptr %a60 store { ptr, i64, i64 } %t109, ptr %a112 store { ptr, i64, i64 } %t110, 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 %a116 - store { ptr, i64, i64 } { ptr @.str.5528, 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 - store { ptr, i64, i64 } %t118, 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.5529, 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 - %t129 = load i64, ptr %t128 - call void @finch_str_from_int(ptr %a130, i64 %t129) - %t131 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } %t127, ptr %a133 + store { ptr, i64, i64 } %t109, ptr %a114 + call void @finch_str_drop(ptr %a114) + %t115 = load { ptr, i64, i64 }, ptr %a111 + store { ptr, i64, i64 } %t115, ptr %a117 + store { ptr, i64, i64 } { ptr @.str.5738, i64 6, i64 0 }, ptr %a118 + call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118) + store { ptr, i64, i64 } %t115, ptr %a119 + call void @finch_str_drop(ptr %a119) + %t120 = load { ptr, i64, i64 }, ptr %a116 + %t121 = load { ptr, i64, i64 }, ptr %a87 + store { ptr, i64, i64 } %t120, ptr %a123 + store { ptr, i64, i64 } %t121, ptr %a124 + call void @finch_str_concat(ptr %a122, ptr %a123, ptr %a124) + store { ptr, i64, i64 } %t120, ptr %a125 + call void @finch_str_drop(ptr %a125) + %t126 = load { ptr, i64, i64 }, ptr %a122 + store { ptr, i64, i64 } %t126, ptr %a128 + store { ptr, i64, i64 } { ptr @.str.5739, i64 6, i64 0 }, ptr %a129 + call void @finch_str_concat(ptr %a127, ptr %a128, ptr %a129) + store { ptr, i64, i64 } %t126, ptr %a130 + call void @finch_str_drop(ptr %a130) + %t131 = load { ptr, i64, i64 }, ptr %a127 + %t132 = load { ptr, i64, i64 }, ptr %a26 store { ptr, i64, i64 } %t131, ptr %a134 - 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.5530, 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.5531, 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.5532, 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 -endif8129: - %t147 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t147, ptr %a148 - store { ptr, i64, i64 } { ptr @.str.5533, 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.from8138 -logic.from8138: - br i1 %t151, label %logic.end8140, label %logic.rhs8139 -logic.rhs8139: - %t152 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t152, ptr %a153 - store { ptr, i64, i64 } { ptr @.str.5534, 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.rend8141 -logic.rend8141: - br label %logic.end8140 -logic.end8140: - %t157 = phi i1 [ true, %logic.from8138 ], [ %t156, %logic.rend8141 ] - br label %logic.from8142 -logic.from8142: - br i1 %t157, label %logic.end8144, label %logic.rhs8143 -logic.rhs8143: - %t158 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t158, ptr %a159 - store { ptr, i64, i64 } { ptr @.str.5535, 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.rend8145 -logic.rend8145: - br label %logic.end8144 -logic.end8144: - %t163 = phi i1 [ true, %logic.from8142 ], [ %t162, %logic.rend8145 ] - br label %logic.from8146 -logic.from8146: - br i1 %t163, label %logic.end8148, label %logic.rhs8147 -logic.rhs8147: - %t164 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t164, ptr %a165 - store { ptr, i64, i64 } { ptr @.str.5536, 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.rend8149 -logic.rend8149: - br label %logic.end8148 -logic.end8148: - %t169 = phi i1 [ true, %logic.from8146 ], [ %t168, %logic.rend8149 ] - br i1 %t169, label %then8150, label %endif8152 -then8150: - %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) - %t172 = load ptr, ptr %a1 - %t173 = load ptr, ptr %a1 - %t174 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t175 = load { ptr, i64, i64 }, ptr %t174 - %t176 = extractvalue { ptr, i64, i64 } %t175, 1 - %t177 = icmp uge i64 1, %t176 - br i1 %t177, label %range8153, label %inrange8154 -range8153: - call void @finch_panic_index(ptr @.str.5537, i64 4978, i64 1, i64 %t176) - unreachable -inrange8154: - %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.5538, 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.5539, 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 %then8155, label %endif8157 -then8155: + store { ptr, i64, i64 } %t132, ptr %a135 + call void @finch_str_concat(ptr %a133, ptr %a134, ptr %a135) + store { ptr, i64, i64 } %t131, ptr %a136 + call void @finch_str_drop(ptr %a136) + %t137 = load { ptr, i64, i64 }, ptr %a133 + store { ptr, i64, i64 } %t137, ptr %a139 + store { ptr, i64, i64 } { ptr @.str.5740, i64 6, i64 0 }, ptr %a140 + call void @finch_str_concat(ptr %a138, ptr %a139, ptr %a140) + store { ptr, i64, i64 } %t137, ptr %a141 + call void @finch_str_drop(ptr %a141) + %t142 = load { ptr, i64, i64 }, ptr %a138 + %t143 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 + %t144 = load i64, ptr %t143 + call void @finch_str_from_int(ptr %a145, i64 %t144) + %t146 = load { ptr, i64, i64 }, ptr %a145 + store { ptr, i64, i64 } %t142, ptr %a148 + store { ptr, i64, i64 } %t146, ptr %a149 + call void @finch_str_concat(ptr %a147, ptr %a148, ptr %a149) + store { ptr, i64, i64 } %t142, ptr %a150 + call void @finch_str_drop(ptr %a150) + store { ptr, i64, i64 } %t146, ptr %a151 + call void @finch_str_drop(ptr %a151) + %t152 = load { ptr, i64, i64 }, ptr %a147 + store { ptr, i64, i64 } %t152, ptr %a154 + store { ptr, i64, i64 } { ptr @.str.5741, i64 1, i64 0 }, ptr %a155 + call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155) + store { ptr, i64, i64 } %t152, ptr %a156 + call void @finch_str_drop(ptr %a156) + %t157 = load { ptr, i64, i64 }, ptr %a153 + call void @finch.gen.emit(ptr %t88, { ptr, i64, i64 } %t157) + store { ptr, i64, i64 } %t157, ptr %a158 + call void @finch_str_drop(ptr %a158) + %t159 = load ptr, ptr %a1 + %t160 = load { ptr, i64, i64 }, ptr %a12 + %t161 = call { ptr, i64, i64 } @finch.gen.load(ptr %t159, { ptr, i64, i64 } { ptr @.str.5742, i64 17, i64 0 }, { ptr, i64, i64 } %t160) + %t162 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t161, 0 + %t163 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5743, i64 3, i64 0 }) + %t164 = insertvalue %S.gen.Val %t162, %S.ast.Type %t163, 1 + %t165 = insertvalue %S.gen.Val %t164, i1 true, 2 + call void @finch_str_drop(ptr %a87) + call void @finch_str_drop(ptr %a60) + call void @finch_str_drop(ptr %a26) + call void @finch_str_drop(ptr %a12) + call void @finch_str_drop(ptr %a9) + ret %S.gen.Val %t165 +endif8586: + %t166 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t166, ptr %a167 + store { ptr, i64, i64 } { ptr @.str.5744, i64 4, i64 0 }, ptr %a168 + %t169 = call i32 @finch_str_eq(ptr %a167, ptr %a168) + %t170 = icmp ne i32 %t169, 0 + br label %logic.from8595 +logic.from8595: + br i1 %t170, label %logic.end8597, label %logic.rhs8596 +logic.rhs8596: + %t171 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t171, ptr %a172 + store { ptr, i64, i64 } { ptr @.str.5745, i64 8, i64 0 }, ptr %a173 + %t174 = call i32 @finch_str_eq(ptr %a172, ptr %a173) + %t175 = icmp ne i32 %t174, 0 + br label %logic.rend8598 +logic.rend8598: + br label %logic.end8597 +logic.end8597: + %t176 = phi i1 [ true, %logic.from8595 ], [ %t175, %logic.rend8598 ] + br label %logic.from8599 +logic.from8599: + br i1 %t176, label %logic.end8601, label %logic.rhs8600 +logic.rhs8600: + %t177 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t177, ptr %a178 + store { ptr, i64, i64 } { ptr @.str.5746, i64 11, i64 0 }, ptr %a179 + %t180 = call i32 @finch_str_eq(ptr %a178, ptr %a179) + %t181 = icmp ne i32 %t180, 0 + br label %logic.rend8602 +logic.rend8602: + br label %logic.end8601 +logic.end8601: + %t182 = phi i1 [ true, %logic.from8599 ], [ %t181, %logic.rend8602 ] + br label %logic.from8603 +logic.from8603: + br i1 %t182, label %logic.end8605, label %logic.rhs8604 +logic.rhs8604: + %t183 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t183, ptr %a184 + store { ptr, i64, i64 } { ptr @.str.5747, i64 9, i64 0 }, ptr %a185 + %t186 = call i32 @finch_str_eq(ptr %a184, ptr %a185) + %t187 = icmp ne i32 %t186, 0 + br label %logic.rend8606 +logic.rend8606: + br label %logic.end8605 +logic.end8605: + %t188 = phi i1 [ true, %logic.from8603 ], [ %t187, %logic.rend8606 ] + br i1 %t188, label %then8607, label %endif8609 +then8607: %t189 = load ptr, ptr %a1 - %t190 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.5540, 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.5541, 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 - store { ptr, i64, i64 } %t198, 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.5542, 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.5543, i64 3, i64 0 }) - %t211 = insertvalue %S.gen.Val %t209, %S.ast.Type %t210, 1 - ret %S.gen.Val %t211 -endif8157: - %t212 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t212, ptr %a213 - store { ptr, i64, i64 } { ptr @.str.5544, 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 %then8158, label %endif8160 -then8158: - %t217 = load ptr, ptr %a1 - %t218 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.5545, 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.5546, 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 - store { ptr, i64, i64 } %t226, 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 + %t190 = load %S.ast.Node, ptr %a2 + call void @finch.gen.need(ptr %t189, %S.ast.Node %t190, i64 1) + %t191 = load ptr, ptr %a1 + %t192 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t193 = load { ptr, i64, i64 }, ptr %t192 + %t194 = extractvalue { ptr, i64, i64 } %t193, 1 + %t195 = icmp uge i64 1, %t194 + br i1 %t195, label %range8610, label %inrange8611 +range8610: + call void @finch_panic_index(ptr @.str.5748, i64 5391, i64 1, i64 %t194) + unreachable +inrange8611: + %t196 = extractvalue { ptr, i64, i64 } %t193, 0 + %t197 = getelementptr inbounds %S.ast.Node, ptr %t196, i64 1 + %t198 = load %S.ast.Node, ptr %t197 + %t199 = call %S.gen.Val @finch.gen.strArg(ptr %t191, %S.ast.Node %t198, { ptr, i64, i64 } { ptr @.str.5749, i64 20, i64 0 }) + store %S.gen.Val %t199, ptr %a200 + %t201 = load ptr, ptr %a1 + %t202 = load %S.gen.Val, ptr %a200 + %t203 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t201, %S.gen.Val %t202) + store { ptr, i64, i64 } %t203, ptr %a204 + %t205 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t205, ptr %a206 + store { ptr, i64, i64 } { ptr @.str.5750, i64 4, i64 0 }, ptr %a207 + %t208 = call i32 @finch_str_eq(ptr %a206, ptr %a207) + %t209 = icmp ne i32 %t208, 0 + br i1 %t209, label %then8612, label %endif8614 +then8612: + %t210 = load ptr, ptr %a1 + %t211 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } { ptr @.str.5751, i64 29, 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.5752, i64 6, i64 0 }, ptr %a218 + call void @finch_str_concat(ptr %a216, ptr %a217, ptr %a218) + store { ptr, i64, i64 } %t215, ptr %a219 + call void @finch_str_drop(ptr %a219) + %t220 = load { ptr, i64, i64 }, ptr %a216 + %t221 = load { ptr, i64, i64 }, ptr %a204 + store { ptr, i64, i64 } %t220, ptr %a223 + store { ptr, i64, i64 } %t221, ptr %a224 + call void @finch_str_concat(ptr %a222, ptr %a223, ptr %a224) + store { ptr, i64, i64 } %t220, ptr %a225 + call void @finch_str_drop(ptr %a225) + %t226 = load { ptr, i64, i64 }, ptr %a222 + store { ptr, i64, i64 } %t226, ptr %a228 + store { ptr, i64, i64 } { ptr @.str.5753, i64 1, i64 0 }, ptr %a229 + call void @finch_str_concat(ptr %a227, ptr %a228, ptr %a229) + store { ptr, i64, i64 } %t226, ptr %a230 + call void @finch_str_drop(ptr %a230) + %t231 = load { ptr, i64, i64 }, ptr %a227 + %t232 = call { ptr, i64, i64 } @finch.gen.op(ptr %t210, { ptr, i64, i64 } %t231) store { ptr, i64, i64 } %t231, ptr %a233 - store { ptr, i64, i64 } { ptr @.str.5547, 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.5548, 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.5549, 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.5550, i64 4, i64 0 }) - %t251 = insertvalue %S.gen.Val %t249, %S.ast.Type %t250, 1 - ret %S.gen.Val %t251 -endif8160: - store { ptr, i64, i64 } { ptr @.str.5551, 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.5552, 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 %then8161, label %endif8163 -then8161: - store { ptr, i64, i64 } { ptr @.str.5553, i64 15, i64 0 }, ptr %a252 - br label %endif8163 -endif8163: - %t258 = load ptr, ptr %a1 - %t259 = load { ptr, i64, i64 }, ptr %a252 - store { ptr, i64, i64 } { ptr @.str.5554, i64 9, i64 0 }, ptr %a261 + call void @finch_str_drop(ptr %a233) + store { ptr, i64, i64 } %t232, ptr %a234 + %t235 = load ptr, ptr %a1 + %t236 = load %S.gen.Val, ptr %a200 + call void @finch.gen.release(ptr %t235, %S.gen.Val %t236) + %t237 = load { ptr, i64, i64 }, ptr %a234 + store { ptr, i64, i64 } %t237, ptr %a238 + call void @finch_str_copy(ptr %a239, ptr %a238) + %t240 = load { ptr, i64, i64 }, ptr %a239 + %t241 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t240, 0 + %t242 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5754, i64 3, i64 0 }) + %t243 = insertvalue %S.gen.Val %t241, %S.ast.Type %t242, 1 + call void @finch_str_drop(ptr %a234) + call void @finch_str_drop(ptr %a204) + call void @finch.drop.S_gen_Val(ptr %a200) + call void @finch_str_drop(ptr %a26) + call void @finch_str_drop(ptr %a12) + call void @finch_str_drop(ptr %a9) + ret %S.gen.Val %t243 +endif8614: + %t244 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t244, ptr %a245 + store { ptr, i64, i64 } { ptr @.str.5755, i64 8, i64 0 }, ptr %a246 + %t247 = call i32 @finch_str_eq(ptr %a245, ptr %a246) + %t248 = icmp ne i32 %t247, 0 + br i1 %t248, label %then8615, label %endif8617 +then8615: + %t249 = load ptr, ptr %a1 + %t250 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } { ptr @.str.5756, i64 29, 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.5757, i64 6, i64 0 }, ptr %a257 + call void @finch_str_concat(ptr %a255, ptr %a256, ptr %a257) + store { ptr, i64, i64 } %t254, ptr %a258 + call void @finch_str_drop(ptr %a258) + %t259 = load { ptr, i64, i64 }, ptr %a255 + %t260 = load { ptr, i64, i64 }, ptr %a204 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.5555, 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 - 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 - store { ptr, i64, i64 } %t272, ptr %a274 - store { ptr, i64, i64 } { ptr @.str.5556, 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 - store { ptr, i64, i64 } %t276, 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.5557, 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 + store { ptr, i64, i64 } %t260, ptr %a263 + call void @finch_str_concat(ptr %a261, ptr %a262, ptr %a263) + store { ptr, i64, i64 } %t259, ptr %a264 + call void @finch_str_drop(ptr %a264) + %t265 = load { ptr, i64, i64 }, ptr %a261 + store { ptr, i64, i64 } %t265, ptr %a267 + store { ptr, i64, i64 } { ptr @.str.5758, i64 1, i64 0 }, ptr %a268 + call void @finch_str_concat(ptr %a266, ptr %a267, ptr %a268) + store { ptr, i64, i64 } %t265, ptr %a269 + call void @finch_str_drop(ptr %a269) + %t270 = load { ptr, i64, i64 }, ptr %a266 + %t271 = call { ptr, i64, i64 } @finch.gen.op(ptr %t249, { ptr, i64, i64 } %t270) + store { ptr, i64, i64 } %t270, ptr %a272 + call void @finch_str_drop(ptr %a272) + store { ptr, i64, i64 } %t271, ptr %a273 + %t274 = load ptr, ptr %a1 + %t275 = load { ptr, i64, i64 }, ptr %a273 + store { ptr, i64, i64 } { ptr @.str.5759, i64 13, 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.5760, i64 3, i64 0 }, ptr %a282 + call void @finch_str_concat(ptr %a280, ptr %a281, ptr %a282) + store { ptr, i64, i64 } %t279, ptr %a283 + call void @finch_str_drop(ptr %a283) + %t284 = load { ptr, i64, i64 }, ptr %a280 + %t285 = call { ptr, i64, i64 } @finch.gen.op(ptr %t274, { ptr, i64, i64 } %t284) + store { ptr, i64, i64 } %t284, ptr %a286 + call void @finch_str_drop(ptr %a286) + store { ptr, i64, i64 } %t285, ptr %a287 %t288 = load ptr, ptr %a1 - %t289 = load { ptr, i64, i64 }, ptr %a287 - store { ptr, i64, i64 } { ptr @.str.5558, 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.5559, 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.5560, i64 4, i64 0 }) - %t301 = insertvalue %S.gen.Val %t299, %S.ast.Type %t300, 1 - ret %S.gen.Val %t301 -endif8152: - %t302 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t302, ptr %a303 - store { ptr, i64, i64 } { ptr @.str.5561, 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.from8164 -logic.from8164: - br i1 %t306, label %logic.end8166, label %logic.rhs8165 -logic.rhs8165: - %t307 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t307, ptr %a308 - store { ptr, i64, i64 } { ptr @.str.5562, 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.rend8167 -logic.rend8167: - br label %logic.end8166 -logic.end8166: - %t312 = phi i1 [ true, %logic.from8164 ], [ %t311, %logic.rend8167 ] - br label %logic.from8168 -logic.from8168: - br i1 %t312, label %logic.end8170, label %logic.rhs8169 -logic.rhs8169: - %t313 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t313, ptr %a314 - store { ptr, i64, i64 } { ptr @.str.5563, 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.rend8171 -logic.rend8171: - br label %logic.end8170 -logic.end8170: - %t318 = phi i1 [ true, %logic.from8168 ], [ %t317, %logic.rend8171 ] - br i1 %t318, label %then8172, label %endif8174 -then8172: - %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.5564, 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.5565, 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 - store { ptr, i64, i64 } %t330, 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.5566, 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 - store { ptr, i64, i64 } %t339, 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.5567, 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.5568, 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.5569, 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 -endif8174: - %t356 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t356, ptr %a357 - store { ptr, i64, i64 } { ptr @.str.5570, 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 %then8175, label %endif8177 -then8175: - %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) - %t363 = load ptr, ptr %a1 - %t364 = load ptr, ptr %a1 - %t365 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t366 = load { ptr, i64, i64 }, ptr %t365 - %t367 = extractvalue { ptr, i64, i64 } %t366, 1 - %t368 = icmp uge i64 1, %t367 - br i1 %t368, label %range8178, label %inrange8179 -range8178: - call void @finch_panic_index(ptr @.str.5571, i64 5000, i64 1, i64 %t367) - unreachable -inrange8179: - %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.5572, 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 - %t376 = load ptr, ptr %a1 - %t377 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t378 = load { ptr, i64, i64 }, ptr %t377 - %t379 = extractvalue { ptr, i64, i64 } %t378, 1 - %t380 = icmp uge i64 2, %t379 - br i1 %t380, label %range8180, label %inrange8181 -range8180: - call void @finch_panic_index(ptr @.str.5573, i64 5001, i64 2, i64 %t379) - unreachable -inrange8181: - %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.5574, 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.5575, i64 33, i64 0 }, ptr %a390 - store { ptr, i64, i64 } %t388, ptr %a391 + %t289 = load %S.gen.Val, ptr %a200 + call void @finch.gen.release(ptr %t288, %S.gen.Val %t289) + %t290 = load { ptr, i64, i64 }, ptr %a287 + store { ptr, i64, i64 } %t290, ptr %a291 + call void @finch_str_copy(ptr %a292, ptr %a291) + %t293 = load { ptr, i64, i64 }, ptr %a292 + %t294 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t293, 0 + %t295 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5761, i64 4, i64 0 }) + %t296 = insertvalue %S.gen.Val %t294, %S.ast.Type %t295, 1 + call void @finch_str_drop(ptr %a287) + call void @finch_str_drop(ptr %a273) + call void @finch_str_drop(ptr %a204) + call void @finch.drop.S_gen_Val(ptr %a200) + call void @finch_str_drop(ptr %a26) + call void @finch_str_drop(ptr %a12) + call void @finch_str_drop(ptr %a9) + ret %S.gen.Val %t296 +endif8617: + store { ptr, i64, i64 } { ptr @.str.5762, i64 17, i64 0 }, ptr %a297 + %t298 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t298, ptr %a299 + store { ptr, i64, i64 } { ptr @.str.5763, i64 9, i64 0 }, ptr %a300 + %t301 = call i32 @finch_str_eq(ptr %a299, ptr %a300) + %t302 = icmp ne i32 %t301, 0 + br i1 %t302, label %then8618, label %endif8620 +then8618: + %t303 = load { ptr, i64, i64 }, ptr %a297 + store { ptr, i64, i64 } { ptr @.str.5764, i64 15, i64 0 }, ptr %a297 + store { ptr, i64, i64 } %t303, ptr %a304 + call void @finch_str_drop(ptr %a304) + br label %endif8620 +endif8620: + %t305 = load ptr, ptr %a1 + %t306 = load { ptr, i64, i64 }, ptr %a297 + store { ptr, i64, i64 } { ptr @.str.5765, i64 9, i64 0 }, 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.5766, i64 5, i64 0 }, ptr %a313 + call void @finch_str_concat(ptr %a311, ptr %a312, ptr %a313) + store { ptr, i64, i64 } %t310, ptr %a314 + call void @finch_str_drop(ptr %a314) + %t315 = load { ptr, i64, i64 }, ptr %a311 + %t316 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t315, ptr %a318 + store { ptr, i64, i64 } %t316, ptr %a319 + call void @finch_str_concat(ptr %a317, ptr %a318, ptr %a319) + store { ptr, i64, i64 } %t315, ptr %a320 + call void @finch_str_drop(ptr %a320) + %t321 = load { ptr, i64, i64 }, ptr %a317 + store { ptr, i64, i64 } %t321, ptr %a323 + store { ptr, i64, i64 } { ptr @.str.5767, i64 6, i64 0 }, ptr %a324 + call void @finch_str_concat(ptr %a322, ptr %a323, ptr %a324) + store { ptr, i64, i64 } %t321, ptr %a325 + call void @finch_str_drop(ptr %a325) + %t326 = load { ptr, i64, i64 }, ptr %a322 + %t327 = load { ptr, i64, i64 }, ptr %a204 + store { ptr, i64, i64 } %t326, ptr %a329 + store { ptr, i64, i64 } %t327, ptr %a330 + call void @finch_str_concat(ptr %a328, ptr %a329, ptr %a330) + store { ptr, i64, i64 } %t326, ptr %a331 + call void @finch_str_drop(ptr %a331) + %t332 = load { ptr, i64, i64 }, ptr %a328 + store { ptr, i64, i64 } %t332, ptr %a334 + store { ptr, i64, i64 } { ptr @.str.5768, i64 1, i64 0 }, ptr %a335 + call void @finch_str_concat(ptr %a333, ptr %a334, ptr %a335) + store { ptr, i64, i64 } %t332, ptr %a336 + call void @finch_str_drop(ptr %a336) + %t337 = load { ptr, i64, i64 }, ptr %a333 + %t338 = call { ptr, i64, i64 } @finch.gen.op(ptr %t305, { ptr, i64, i64 } %t337) + store { ptr, i64, i64 } %t337, ptr %a339 + call void @finch_str_drop(ptr %a339) + store { ptr, i64, i64 } %t338, ptr %a340 + %t341 = load ptr, ptr %a1 + %t342 = load { ptr, i64, i64 }, ptr %a340 + store { ptr, i64, i64 } { ptr @.str.5769, i64 12, 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.5770, i64 3, i64 0 }, ptr %a349 + call void @finch_str_concat(ptr %a347, ptr %a348, ptr %a349) + store { ptr, i64, i64 } %t346, ptr %a350 + call void @finch_str_drop(ptr %a350) + %t351 = load { ptr, i64, i64 }, ptr %a347 + %t352 = call { ptr, i64, i64 } @finch.gen.op(ptr %t341, { ptr, i64, i64 } %t351) + store { ptr, i64, i64 } %t351, ptr %a353 + call void @finch_str_drop(ptr %a353) + store { ptr, i64, i64 } %t352, ptr %a354 + %t355 = load ptr, ptr %a1 + %t356 = load %S.gen.Val, ptr %a200 + call void @finch.gen.release(ptr %t355, %S.gen.Val %t356) + %t357 = load { ptr, i64, i64 }, ptr %a354 + store { ptr, i64, i64 } %t357, ptr %a358 + call void @finch_str_copy(ptr %a359, ptr %a358) + %t360 = load { ptr, i64, i64 }, ptr %a359 + %t361 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t360, 0 + %t362 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5771, i64 4, i64 0 }) + %t363 = insertvalue %S.gen.Val %t361, %S.ast.Type %t362, 1 + call void @finch_str_drop(ptr %a354) + call void @finch_str_drop(ptr %a340) + call void @finch_str_drop(ptr %a297) + call void @finch_str_drop(ptr %a204) + call void @finch.drop.S_gen_Val(ptr %a200) + call void @finch_str_drop(ptr %a26) + call void @finch_str_drop(ptr %a12) + call void @finch_str_drop(ptr %a9) + ret %S.gen.Val %t363 +endif8609: + %t364 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t364, ptr %a365 + store { ptr, i64, i64 } { ptr @.str.5772, i64 4, i64 0 }, ptr %a366 + %t367 = call i32 @finch_str_eq(ptr %a365, ptr %a366) + %t368 = icmp ne i32 %t367, 0 + br label %logic.from8621 +logic.from8621: + br i1 %t368, label %logic.end8623, label %logic.rhs8622 +logic.rhs8622: + %t369 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t369, ptr %a370 + store { ptr, i64, i64 } { ptr @.str.5773, i64 5, i64 0 }, ptr %a371 + %t372 = call i32 @finch_str_eq(ptr %a370, ptr %a371) + %t373 = icmp ne i32 %t372, 0 + br label %logic.rend8624 +logic.rend8624: + br label %logic.end8623 +logic.end8623: + %t374 = phi i1 [ true, %logic.from8621 ], [ %t373, %logic.rend8624 ] + br label %logic.from8625 +logic.from8625: + br i1 %t374, label %logic.end8627, label %logic.rhs8626 +logic.rhs8626: + %t375 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t375, ptr %a376 + store { ptr, i64, i64 } { ptr @.str.5774, i64 5, i64 0 }, ptr %a377 + %t378 = call i32 @finch_str_eq(ptr %a376, ptr %a377) + %t379 = icmp ne i32 %t378, 0 + br label %logic.rend8628 +logic.rend8628: + br label %logic.end8627 +logic.end8627: + %t380 = phi i1 [ true, %logic.from8625 ], [ %t379, %logic.rend8628 ] + br i1 %t380, label %then8629, label %endif8631 +then8629: + %t381 = load ptr, ptr %a1 + %t382 = load %S.ast.Node, ptr %a2 + call void @finch.gen.need(ptr %t381, %S.ast.Node %t382, i64 0) + %t383 = load ptr, ptr %a1 + %t384 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } { ptr @.str.5775, i64 21, i64 0 }, ptr %a386 + store { ptr, i64, i64 } %t384, ptr %a387 + call void @finch_str_concat(ptr %a385, ptr %a386, ptr %a387) + %t388 = load { ptr, i64, i64 }, ptr %a385 + store { ptr, i64, i64 } %t388, ptr %a390 + store { ptr, i64, i64 } { ptr @.str.5776, i64 5, i64 0 }, 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.5576, 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 - store { ptr, i64, i64 } %t396, 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 %a403 - store { ptr, i64, i64 } { ptr @.str.5577, 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 + store { ptr, i64, i64 } %t388, ptr %a392 + call void @finch_str_drop(ptr %a392) + %t393 = load { ptr, i64, i64 }, ptr %a389 + %t394 = load { ptr, i64, i64 }, ptr %a12 + store { ptr, i64, i64 } %t393, ptr %a396 + store { ptr, i64, i64 } %t394, ptr %a397 + call void @finch_str_concat(ptr %a395, ptr %a396, ptr %a397) + store { ptr, i64, i64 } %t393, ptr %a398 + call void @finch_str_drop(ptr %a398) + %t399 = load { ptr, i64, i64 }, ptr %a395 + store { ptr, i64, i64 } %t399, ptr %a401 + store { ptr, i64, i64 } { ptr @.str.5777, i64 6, i64 0 }, ptr %a402 + call void @finch_str_concat(ptr %a400, ptr %a401, ptr %a402) + store { ptr, i64, i64 } %t399, ptr %a403 + call void @finch_str_drop(ptr %a403) + %t404 = load { ptr, i64, i64 }, ptr %a400 + %t405 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t404, ptr %a407 store { ptr, i64, i64 } %t405, 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 + call void @finch_str_concat(ptr %a406, ptr %a407, ptr %a408) + store { ptr, i64, i64 } %t404, ptr %a409 + call void @finch_str_drop(ptr %a409) + %t410 = load { ptr, i64, i64 }, ptr %a406 store { ptr, i64, i64 } %t410, ptr %a412 - store { ptr, i64, i64 } { ptr @.str.5578, i64 6, i64 0 }, ptr %a413 + store { ptr, i64, i64 } { ptr @.str.5778, i64 1, 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 - store { ptr, i64, i64 } %t414, 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.5579, 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.5580, 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.5581, 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 -endif8177: - %t431 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t431, ptr %a432 - store { ptr, i64, i64 } { ptr @.str.5582, 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 %then8182, label %endif8184 -then8182: - %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) - %t438 = load ptr, ptr %a1 - %t439 = load ptr, ptr %a1 - %t440 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t441 = load { ptr, i64, i64 }, ptr %t440 - %t442 = extractvalue { ptr, i64, i64 } %t441, 1 - %t443 = icmp uge i64 1, %t442 - br i1 %t443, label %range8185, label %inrange8186 -range8185: - call void @finch_panic_index(ptr @.str.5583, i64 5007, i64 1, i64 %t442) + store { ptr, i64, i64 } %t410, ptr %a414 + call void @finch_str_drop(ptr %a414) + %t415 = load { ptr, i64, i64 }, ptr %a411 + call void @finch.gen.emit(ptr %t383, { ptr, i64, i64 } %t415) + store { ptr, i64, i64 } %t415, ptr %a416 + call void @finch_str_drop(ptr %a416) + %t417 = load ptr, ptr %a1 + %t418 = load { ptr, i64, i64 }, ptr %a12 + %t419 = call { ptr, i64, i64 } @finch.gen.load(ptr %t417, { ptr, i64, i64 } { ptr @.str.5779, i64 17, i64 0 }, { ptr, i64, i64 } %t418) + %t420 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t419, 0 + %t421 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5780, i64 3, i64 0 }) + %t422 = insertvalue %S.gen.Val %t420, %S.ast.Type %t421, 1 + %t423 = insertvalue %S.gen.Val %t422, i1 true, 2 + call void @finch_str_drop(ptr %a26) + call void @finch_str_drop(ptr %a12) + call void @finch_str_drop(ptr %a9) + ret %S.gen.Val %t423 +endif8631: + %t424 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t424, ptr %a425 + store { ptr, i64, i64 } { ptr @.str.5781, i64 7, i64 0 }, ptr %a426 + %t427 = call i32 @finch_str_eq(ptr %a425, ptr %a426) + %t428 = icmp ne i32 %t427, 0 + br i1 %t428, label %then8632, label %endif8634 +then8632: + %t429 = load ptr, ptr %a1 + %t430 = load %S.ast.Node, ptr %a2 + call void @finch.gen.need(ptr %t429, %S.ast.Node %t430, i64 2) + %t431 = load ptr, ptr %a1 + %t432 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t433 = load { ptr, i64, i64 }, ptr %t432 + %t434 = extractvalue { ptr, i64, i64 } %t433, 1 + %t435 = icmp uge i64 1, %t434 + br i1 %t435, label %range8635, label %inrange8636 +range8635: + call void @finch_panic_index(ptr @.str.5782, i64 5420, i64 1, i64 %t434) unreachable -inrange8186: - %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.5584, 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 - %t451 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t450) - 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.5585, 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.5586, 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 - store { ptr, i64, i64 } %t462, ptr %a465 - store { ptr, i64, i64 } %t463, ptr %a466 - 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.5587, 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 - store { ptr, i64, i64 } %t471, ptr %a474 - store { ptr, i64, i64 } %t472, ptr %a475 - 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.5588, 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.5589, 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.5590, 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 -endif8184: - %t489 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t489, ptr %a490 - store { ptr, i64, i64 } { ptr @.str.5591, 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 %then8187, label %endif8189 -then8187: - %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) - %t496 = load ptr, ptr %a1 - %t497 = load ptr, ptr %a1 - %t498 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t499 = load { ptr, i64, i64 }, ptr %t498 - %t500 = extractvalue { ptr, i64, i64 } %t499, 1 - %t501 = icmp uge i64 1, %t500 - br i1 %t501, label %range8190, label %inrange8191 -range8190: - call void @finch_panic_index(ptr @.str.5592, i64 5014, i64 1, i64 %t500) +inrange8636: + %t436 = extractvalue { ptr, i64, i64 } %t433, 0 + %t437 = getelementptr inbounds %S.ast.Node, ptr %t436, i64 1 + %t438 = load %S.ast.Node, ptr %t437 + %t439 = call %S.gen.Val @finch.gen.strArg(ptr %t431, %S.ast.Node %t438, { ptr, i64, i64 } { ptr @.str.5783, i64 19, i64 0 }) + store %S.gen.Val %t439, ptr %a440 + %t441 = load ptr, ptr %a1 + %t442 = icmp eq ptr %t441, null + br i1 %t442, label %panic8637, label %ok8638 +panic8637: + call void @finch_panic(ptr @.str.5784, i64 5421, ptr @.str.5785) unreachable -inrange8191: - %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.5593, 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 %range8192, label %inrange8193 -range8192: - call void @finch_panic_index(ptr @.str.5594, i64 5014, i64 1, i64 %t509) +ok8638: + %t443 = getelementptr inbounds %S.gen.Gen, ptr %t441, i32 0, i32 11 + %t444 = getelementptr inbounds { ptr, i64, i64 }, ptr %t443, i32 0, i32 1 + %t445 = load i64, ptr %t444 + store i64 %t445, ptr %a446 + %t447 = load ptr, ptr %a1 + %t448 = load %S.gen.Val, ptr %a440 + call void @finch.gen.hold(ptr %t447, %S.gen.Val %t448) + %t449 = load ptr, ptr %a1 + %t450 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t451 = load { ptr, i64, i64 }, ptr %t450 + %t452 = extractvalue { ptr, i64, i64 } %t451, 1 + %t453 = icmp uge i64 2, %t452 + br i1 %t453, label %range8639, label %inrange8640 +range8639: + call void @finch_panic_index(ptr @.str.5786, i64 5423, i64 2, i64 %t452) unreachable -inrange8193: - %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.5595, 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) - %t518 = load { ptr, i64, i64 }, ptr %a517 - 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.5596, 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.5597, 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 - store { ptr, i64, i64 } %t529, ptr %a532 - store { ptr, i64, i64 } %t530, ptr %a533 - 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.5598, 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 - store { ptr, i64, i64 } %t538, ptr %a541 - store { ptr, i64, i64 } %t539, ptr %a542 - 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.5599, 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.5600, 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.5601, 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 -endif8189: - %t555 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t555, ptr %a556 - store { ptr, i64, i64 } { ptr @.str.5602, 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 %then8194, label %endif8196 -then8194: - %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) - %t562 = load ptr, ptr %a1 - %t563 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t562) - 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.5603, 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.5604, 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 - store { ptr, i64, i64 } %t574, 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.5605, 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.5606, 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.5607, 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 -endif8196: - %t592 = load ptr, ptr %a1 - %t593 = load %S.ast.Node, ptr %a2 +inrange8640: + %t454 = extractvalue { ptr, i64, i64 } %t451, 0 + %t455 = getelementptr inbounds %S.ast.Node, ptr %t454, i64 2 + %t456 = load %S.ast.Node, ptr %t455 + %t457 = call %S.gen.Val @finch.gen.strArg(ptr %t449, %S.ast.Node %t456, { ptr, i64, i64 } { ptr @.str.5787, i64 12, i64 0 }) + store %S.gen.Val %t457, ptr %a458 + %t459 = load ptr, ptr %a1 + %t460 = load i64, ptr %a446 + call void @finch.gen.heldEnd(ptr %t459, i64 %t460) + %t461 = load ptr, ptr %a1 + %t462 = load %S.gen.Val, ptr %a440 + %t463 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t461, %S.gen.Val %t462) + store { ptr, i64, i64 } %t463, ptr %a464 + %t465 = load ptr, ptr %a1 + %t466 = load %S.gen.Val, ptr %a458 + %t467 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t465, %S.gen.Val %t466) + store { ptr, i64, i64 } %t467, ptr %a468 + %t469 = load ptr, ptr %a1 + %t470 = load { ptr, i64, i64 }, ptr %a12 + store { ptr, i64, i64 } { ptr @.str.5788, i64 33, i64 0 }, ptr %a472 + store { ptr, i64, i64 } %t470, ptr %a473 + call void @finch_str_concat(ptr %a471, ptr %a472, ptr %a473) + %t474 = load { ptr, i64, i64 }, ptr %a471 + store { ptr, i64, i64 } %t474, ptr %a476 + store { ptr, i64, i64 } { ptr @.str.5789, i64 6, i64 0 }, ptr %a477 + call void @finch_str_concat(ptr %a475, ptr %a476, ptr %a477) + store { ptr, i64, i64 } %t474, ptr %a478 + call void @finch_str_drop(ptr %a478) + %t479 = load { ptr, i64, i64 }, ptr %a475 + %t480 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t479, ptr %a482 + store { ptr, i64, i64 } %t480, ptr %a483 + call void @finch_str_concat(ptr %a481, ptr %a482, ptr %a483) + store { ptr, i64, i64 } %t479, ptr %a484 + call void @finch_str_drop(ptr %a484) + %t485 = load { ptr, i64, i64 }, ptr %a481 + store { ptr, i64, i64 } %t485, ptr %a487 + store { ptr, i64, i64 } { ptr @.str.5790, i64 6, i64 0 }, ptr %a488 + call void @finch_str_concat(ptr %a486, ptr %a487, ptr %a488) + store { ptr, i64, i64 } %t485, ptr %a489 + call void @finch_str_drop(ptr %a489) + %t490 = load { ptr, i64, i64 }, ptr %a486 + %t491 = load { ptr, i64, i64 }, ptr %a464 + store { ptr, i64, i64 } %t490, ptr %a493 + store { ptr, i64, i64 } %t491, ptr %a494 + call void @finch_str_concat(ptr %a492, ptr %a493, ptr %a494) + store { ptr, i64, i64 } %t490, ptr %a495 + call void @finch_str_drop(ptr %a495) + %t496 = load { ptr, i64, i64 }, ptr %a492 + store { ptr, i64, i64 } %t496, ptr %a498 + store { ptr, i64, i64 } { ptr @.str.5791, i64 6, i64 0 }, ptr %a499 + call void @finch_str_concat(ptr %a497, ptr %a498, ptr %a499) + store { ptr, i64, i64 } %t496, ptr %a500 + call void @finch_str_drop(ptr %a500) + %t501 = load { ptr, i64, i64 }, ptr %a497 + %t502 = load { ptr, i64, i64 }, ptr %a468 + store { ptr, i64, i64 } %t501, ptr %a504 + store { ptr, i64, i64 } %t502, ptr %a505 + call void @finch_str_concat(ptr %a503, ptr %a504, ptr %a505) + store { ptr, i64, i64 } %t501, ptr %a506 + call void @finch_str_drop(ptr %a506) + %t507 = load { ptr, i64, i64 }, ptr %a503 + store { ptr, i64, i64 } %t507, ptr %a509 + store { ptr, i64, i64 } { ptr @.str.5792, i64 1, i64 0 }, ptr %a510 + call void @finch_str_concat(ptr %a508, ptr %a509, ptr %a510) + store { ptr, i64, i64 } %t507, ptr %a511 + call void @finch_str_drop(ptr %a511) + %t512 = load { ptr, i64, i64 }, ptr %a508 + call void @finch.gen.emit(ptr %t469, { ptr, i64, i64 } %t512) + store { ptr, i64, i64 } %t512, ptr %a513 + call void @finch_str_drop(ptr %a513) + %t514 = load ptr, ptr %a1 + %t515 = load %S.gen.Val, ptr %a440 + call void @finch.gen.release(ptr %t514, %S.gen.Val %t515) + %t516 = load ptr, ptr %a1 + %t517 = load %S.gen.Val, ptr %a458 + call void @finch.gen.release(ptr %t516, %S.gen.Val %t517) + %t518 = load ptr, ptr %a1 + %t519 = load { ptr, i64, i64 }, ptr %a12 + %t520 = call { ptr, i64, i64 } @finch.gen.load(ptr %t518, { ptr, i64, i64 } { ptr @.str.5793, i64 17, i64 0 }, { ptr, i64, i64 } %t519) + %t521 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t520, 0 + %t522 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5794, i64 3, i64 0 }) + %t523 = insertvalue %S.gen.Val %t521, %S.ast.Type %t522, 1 + %t524 = insertvalue %S.gen.Val %t523, i1 true, 2 + call void @finch_str_drop(ptr %a468) + call void @finch_str_drop(ptr %a464) + call void @finch.drop.S_gen_Val(ptr %a458) + call void @finch.drop.S_gen_Val(ptr %a440) + call void @finch_str_drop(ptr %a26) + call void @finch_str_drop(ptr %a12) + call void @finch_str_drop(ptr %a9) + ret %S.gen.Val %t524 +endif8634: + %t525 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t525, ptr %a526 + store { ptr, i64, i64 } { ptr @.str.5795, i64 5, i64 0 }, ptr %a527 + %t528 = call i32 @finch_str_eq(ptr %a526, ptr %a527) + %t529 = icmp ne i32 %t528, 0 + br i1 %t529, label %then8641, label %endif8643 +then8641: + %t530 = load ptr, ptr %a1 + %t531 = load %S.ast.Node, ptr %a2 + call void @finch.gen.need(ptr %t530, %S.ast.Node %t531, i64 1) + %t532 = load ptr, ptr %a1 + %t533 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t534 = load { ptr, i64, i64 }, ptr %t533 + %t535 = extractvalue { ptr, i64, i64 } %t534, 1 + %t536 = icmp uge i64 1, %t535 + br i1 %t536, label %range8644, label %inrange8645 +range8644: + call void @finch_panic_index(ptr @.str.5796, i64 5434, i64 1, i64 %t535) + unreachable +inrange8645: + %t537 = extractvalue { ptr, i64, i64 } %t534, 0 + %t538 = getelementptr inbounds %S.ast.Node, ptr %t537, i64 1 + %t539 = load %S.ast.Node, ptr %t538 + %t540 = call %S.gen.Val @finch.gen.strArg(ptr %t532, %S.ast.Node %t539, { ptr, i64, i64 } { ptr @.str.5797, i64 13, i64 0 }) + store %S.gen.Val %t540, ptr %a541 + %t542 = load ptr, ptr %a1 + %t543 = load %S.gen.Val, ptr %a541 + %t544 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t542, %S.gen.Val %t543) + store { ptr, i64, i64 } %t544, ptr %a545 + %t546 = load ptr, ptr %a1 + %t547 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t546) + store { ptr, i64, i64 } %t547, ptr %a548 + %t549 = load ptr, ptr %a1 + %t550 = load { ptr, i64, i64 }, ptr %a548 + store { ptr, i64, i64 } { ptr @.str.5798, i64 31, i64 0 }, ptr %a552 + store { ptr, i64, i64 } %t550, ptr %a553 + call void @finch_str_concat(ptr %a551, ptr %a552, ptr %a553) + %t554 = load { ptr, i64, i64 }, ptr %a551 + store { ptr, i64, i64 } %t554, ptr %a556 + store { ptr, i64, i64 } { ptr @.str.5799, i64 6, i64 0 }, ptr %a557 + call void @finch_str_concat(ptr %a555, ptr %a556, ptr %a557) + store { ptr, i64, i64 } %t554, ptr %a558 + call void @finch_str_drop(ptr %a558) + %t559 = load { ptr, i64, i64 }, ptr %a555 + %t560 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t559, ptr %a562 + store { ptr, i64, i64 } %t560, ptr %a563 + call void @finch_str_concat(ptr %a561, ptr %a562, ptr %a563) + store { ptr, i64, i64 } %t559, ptr %a564 + call void @finch_str_drop(ptr %a564) + %t565 = load { ptr, i64, i64 }, ptr %a561 + store { ptr, i64, i64 } %t565, ptr %a567 + store { ptr, i64, i64 } { ptr @.str.5800, i64 6, i64 0 }, ptr %a568 + call void @finch_str_concat(ptr %a566, ptr %a567, ptr %a568) + store { ptr, i64, i64 } %t565, ptr %a569 + call void @finch_str_drop(ptr %a569) + %t570 = load { ptr, i64, i64 }, ptr %a566 + %t571 = load { ptr, i64, i64 }, ptr %a545 + store { ptr, i64, i64 } %t570, ptr %a573 + store { ptr, i64, i64 } %t571, ptr %a574 + call void @finch_str_concat(ptr %a572, ptr %a573, ptr %a574) + store { ptr, i64, i64 } %t570, ptr %a575 + call void @finch_str_drop(ptr %a575) + %t576 = load { ptr, i64, i64 }, ptr %a572 + store { ptr, i64, i64 } %t576, ptr %a578 + store { ptr, i64, i64 } { ptr @.str.5801, i64 1, i64 0 }, ptr %a579 + call void @finch_str_concat(ptr %a577, ptr %a578, ptr %a579) + store { ptr, i64, i64 } %t576, ptr %a580 + call void @finch_str_drop(ptr %a580) + %t581 = load { ptr, i64, i64 }, ptr %a577 + call void @finch.gen.emit(ptr %t549, { ptr, i64, i64 } %t581) + store { ptr, i64, i64 } %t581, ptr %a582 + call void @finch_str_drop(ptr %a582) + %t583 = load ptr, ptr %a1 + %t584 = load %S.gen.Val, ptr %a541 + call void @finch.gen.release(ptr %t583, %S.gen.Val %t584) + %t585 = load ptr, ptr %a1 + %t586 = load { ptr, i64, i64 }, ptr %a548 + %t587 = call { ptr, i64, i64 } @finch.gen.load(ptr %t585, { ptr, i64, i64 } { ptr @.str.5802, i64 17, i64 0 }, { ptr, i64, i64 } %t586) + %t588 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t587, 0 + %t589 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5803, i64 3, i64 0 }) + %t590 = call %S.ast.Type @finch.ast.arrayOf(%S.ast.Type %t589) + store %S.ast.Type %t589, ptr %a591 + call void @finch.drop.S_ast_Type(ptr %a591) + %t592 = insertvalue %S.gen.Val %t588, %S.ast.Type %t590, 1 + %t593 = insertvalue %S.gen.Val %t592, i1 true, 2 + call void @finch_str_drop(ptr %a548) + call void @finch_str_drop(ptr %a545) + call void @finch.drop.S_gen_Val(ptr %a541) + call void @finch_str_drop(ptr %a26) + call void @finch_str_drop(ptr %a12) + call void @finch_str_drop(ptr %a9) + ret %S.gen.Val %t593 +endif8643: %t594 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } { ptr @.str.5608, 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.5609, 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) + store { ptr, i64, i64 } %t594, ptr %a595 + store { ptr, i64, i64 } { ptr @.str.5804, i64 6, i64 0 }, ptr %a596 + %t597 = call i32 @finch_str_eq(ptr %a595, ptr %a596) + %t598 = icmp ne i32 %t597, 0 + br i1 %t598, label %then8646, label %endif8648 +then8646: + %t599 = load ptr, ptr %a1 + %t600 = load %S.ast.Node, ptr %a2 + call void @finch.gen.need(ptr %t599, %S.ast.Node %t600, i64 1) + %t601 = load ptr, ptr %a1 + %t602 = load ptr, ptr %a1 + %t603 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t604 = load { ptr, i64, i64 }, ptr %t603 + %t605 = extractvalue { ptr, i64, i64 } %t604, 1 + %t606 = icmp uge i64 1, %t605 + br i1 %t606, label %range8649, label %inrange8650 +range8649: + call void @finch_panic_index(ptr @.str.5805, i64 5443, i64 1, i64 %t605) + unreachable +inrange8650: + %t607 = extractvalue { ptr, i64, i64 } %t604, 0 + %t608 = getelementptr inbounds %S.ast.Node, ptr %t607, i64 1 + %t609 = load %S.ast.Node, ptr %t608 + %t610 = call %S.gen.Val @finch.gen.expr(ptr %t602, %S.ast.Node %t609) + %t611 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5806, i64 3, i64 0 }) + %t612 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t613 = load { ptr, i64, i64 }, ptr %t612 + %t614 = extractvalue { ptr, i64, i64 } %t613, 1 + %t615 = icmp uge i64 1, %t614 + br i1 %t615, label %range8651, label %inrange8652 +range8651: + call void @finch_panic_index(ptr @.str.5807, i64 5443, i64 1, i64 %t614) + unreachable +inrange8652: + %t616 = extractvalue { ptr, i64, i64 } %t613, 0 + %t617 = getelementptr inbounds %S.ast.Node, ptr %t616, i64 1 + %t618 = load %S.ast.Node, ptr %t617 + %t619 = call %S.gen.Val @finch.gen.coerce(ptr %t601, %S.gen.Val %t610, %S.ast.Type %t611, %S.ast.Node %t618, { ptr, i64, i64 } { ptr @.str.5808, i64 9, i64 0 }) + store %S.gen.Val %t610, ptr %a620 + call void @finch.drop.S_gen_Val(ptr %a620) + store %S.ast.Type %t611, ptr %a621 + call void @finch.drop.S_ast_Type(ptr %a621) + %t622 = extractvalue %S.gen.Val %t619, 0 + store { ptr, i64, i64 } %t622, ptr %a623 + call void @finch_str_copy(ptr %a624, ptr %a623) + %t625 = load { ptr, i64, i64 }, ptr %a624 + store %S.gen.Val %t619, ptr %a626 + call void @finch.drop.S_gen_Val(ptr %a626) + store { ptr, i64, i64 } %t625, ptr %a627 + %t628 = load ptr, ptr %a1 + %t629 = load { ptr, i64, i64 }, ptr %a12 + store { ptr, i64, i64 } { ptr @.str.5809, i64 32, i64 0 }, 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.5810, i64 6, i64 0 }, ptr %a636 + call void @finch_str_concat(ptr %a634, ptr %a635, ptr %a636) + store { ptr, i64, i64 } %t633, ptr %a637 + call void @finch_str_drop(ptr %a637) + %t638 = load { ptr, i64, i64 }, ptr %a634 + %t639 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t638, ptr %a641 + store { ptr, i64, i64 } %t639, ptr %a642 + call void @finch_str_concat(ptr %a640, ptr %a641, ptr %a642) + store { ptr, i64, i64 } %t638, ptr %a643 + call void @finch_str_drop(ptr %a643) + %t644 = load { ptr, i64, i64 }, ptr %a640 + store { ptr, i64, i64 } %t644, ptr %a646 + store { ptr, i64, i64 } { ptr @.str.5811, i64 6, i64 0 }, ptr %a647 + call void @finch_str_concat(ptr %a645, ptr %a646, ptr %a647) + store { ptr, i64, i64 } %t644, ptr %a648 + call void @finch_str_drop(ptr %a648) + %t649 = load { ptr, i64, i64 }, ptr %a645 + %t650 = load { ptr, i64, i64 }, ptr %a627 + store { ptr, i64, i64 } %t649, ptr %a652 + store { ptr, i64, i64 } %t650, ptr %a653 + call void @finch_str_concat(ptr %a651, ptr %a652, ptr %a653) + store { ptr, i64, i64 } %t649, ptr %a654 + call void @finch_str_drop(ptr %a654) + %t655 = load { ptr, i64, i64 }, ptr %a651 + store { ptr, i64, i64 } %t655, ptr %a657 + store { ptr, i64, i64 } { ptr @.str.5812, i64 1, i64 0 }, ptr %a658 + call void @finch_str_concat(ptr %a656, ptr %a657, ptr %a658) + store { ptr, i64, i64 } %t655, ptr %a659 + call void @finch_str_drop(ptr %a659) + %t660 = load { ptr, i64, i64 }, ptr %a656 + call void @finch.gen.emit(ptr %t628, { ptr, i64, i64 } %t660) + store { ptr, i64, i64 } %t660, ptr %a661 + call void @finch_str_drop(ptr %a661) + %t662 = load ptr, ptr %a1 + %t663 = load { ptr, i64, i64 }, ptr %a12 + %t664 = call { ptr, i64, i64 } @finch.gen.load(ptr %t662, { ptr, i64, i64 } { ptr @.str.5813, i64 17, i64 0 }, { ptr, i64, i64 } %t663) + %t665 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t664, 0 + %t666 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5814, i64 3, i64 0 }) + %t667 = insertvalue %S.gen.Val %t665, %S.ast.Type %t666, 1 + %t668 = insertvalue %S.gen.Val %t667, i1 true, 2 + call void @finch_str_drop(ptr %a627) + call void @finch_str_drop(ptr %a26) + call void @finch_str_drop(ptr %a12) + call void @finch_str_drop(ptr %a9) + ret %S.gen.Val %t668 +endif8648: + %t669 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t669, ptr %a670 + store { ptr, i64, i64 } { ptr @.str.5815, i64 5, i64 0 }, ptr %a671 + %t672 = call i32 @finch_str_eq(ptr %a670, ptr %a671) + %t673 = icmp ne i32 %t672, 0 + br i1 %t673, label %then8653, label %endif8655 +then8653: + %t674 = load ptr, ptr %a1 + %t675 = load %S.ast.Node, ptr %a2 + call void @finch.gen.need(ptr %t674, %S.ast.Node %t675, i64 0) + %t676 = load ptr, ptr %a1 + %t677 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t676) + store { ptr, i64, i64 } %t677, ptr %a678 + %t679 = load ptr, ptr %a1 + %t680 = load { ptr, i64, i64 }, ptr %a678 + store { ptr, i64, i64 } { ptr @.str.5816, i64 36, 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.5817, i64 6, i64 0 }, ptr %a687 + call void @finch_str_concat(ptr %a685, ptr %a686, ptr %a687) + store { ptr, i64, i64 } %t684, ptr %a688 + call void @finch_str_drop(ptr %a688) + %t689 = load { ptr, i64, i64 }, ptr %a685 + %t690 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t689, ptr %a692 + store { ptr, i64, i64 } %t690, ptr %a693 + call void @finch_str_concat(ptr %a691, ptr %a692, ptr %a693) + store { ptr, i64, i64 } %t689, ptr %a694 + call void @finch_str_drop(ptr %a694) + %t695 = load { ptr, i64, i64 }, ptr %a691 + store { ptr, i64, i64 } %t695, ptr %a697 + store { ptr, i64, i64 } { ptr @.str.5818, i64 1, i64 0 }, ptr %a698 + call void @finch_str_concat(ptr %a696, ptr %a697, ptr %a698) + store { ptr, i64, i64 } %t695, ptr %a699 + call void @finch_str_drop(ptr %a699) + %t700 = load { ptr, i64, i64 }, ptr %a696 + call void @finch.gen.emit(ptr %t679, { ptr, i64, i64 } %t700) + store { ptr, i64, i64 } %t700, ptr %a701 + call void @finch_str_drop(ptr %a701) + %t702 = load ptr, ptr %a1 + %t703 = load { ptr, i64, i64 }, ptr %a678 + %t704 = call { ptr, i64, i64 } @finch.gen.load(ptr %t702, { ptr, i64, i64 } { ptr @.str.5819, i64 17, i64 0 }, { ptr, i64, i64 } %t703) + %t705 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t704, 0 + %t706 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5820, i64 2, i64 0 }) + %t707 = call %S.ast.Type @finch.ast.arrayOf(%S.ast.Type %t706) + store %S.ast.Type %t706, ptr %a708 + call void @finch.drop.S_ast_Type(ptr %a708) + %t709 = insertvalue %S.gen.Val %t705, %S.ast.Type %t707, 1 + %t710 = insertvalue %S.gen.Val %t709, i1 true, 2 + call void @finch_str_drop(ptr %a678) + call void @finch_str_drop(ptr %a26) + call void @finch_str_drop(ptr %a12) + call void @finch_str_drop(ptr %a9) + ret %S.gen.Val %t710 +endif8655: + %t711 = load ptr, ptr %a1 + %t712 = load %S.ast.Node, ptr %a2 + %t713 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } { ptr @.str.5821, i64 21, 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.5822, i64 106, i64 0 }, ptr %a720 + call void @finch_str_concat(ptr %a718, ptr %a719, ptr %a720) + store { ptr, i64, i64 } %t717, ptr %a721 + call void @finch_str_drop(ptr %a721) + %t722 = load { ptr, i64, i64 }, ptr %a718 + call void @finch.gen.fail(ptr %t711, %S.ast.Node %t712, { ptr, i64, i64 } %t722) + store { ptr, i64, i64 } %t722, ptr %a723 + call void @finch_str_drop(ptr %a723) + call void @finch_str_drop(ptr %a26) + call void @finch_str_drop(ptr %a12) + call void @finch_str_drop(ptr %a9) ret %S.gen.Val zeroinitializer } define internal { ptr, i64, i64 } @finch.gen.runtimeDecls() { entry: - %a77 = alloca { ptr, i64, i64 }, align 16 - %a79 = 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 - %t1 = mul i64 71, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) + %a85 = alloca { ptr, i64, i64 }, align 16 + %a86 = alloca { ptr, i64, i64 }, align 16 + %a87 = alloca { ptr, i64, i64 }, align 16 + %a88 = alloca { ptr, i64, i64 }, align 16 + %t1 = mul i64 74, 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.5610, i64 54, i64 0 }, ptr %t3 + store { ptr, i64, i64 } { ptr @.str.5823, i64 54, i64 0 }, ptr %t3 %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 1 - store { ptr, i64, i64 } { ptr @.str.5611, i64 65, i64 0 }, ptr %t4 + store { ptr, i64, i64 } { ptr @.str.5824, i64 65, i64 0 }, ptr %t4 %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 2 - store { ptr, i64, i64 } { ptr @.str.5612, i64 29, i64 0 }, ptr %t5 + store { ptr, i64, i64 } { ptr @.str.5825, i64 29, i64 0 }, ptr %t5 %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 3 - store { ptr, i64, i64 } { ptr @.str.5613, i64 38, i64 0 }, ptr %t6 + store { ptr, i64, i64 } { ptr @.str.5826, i64 38, i64 0 }, ptr %t6 %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 4 - store { ptr, i64, i64 } { ptr @.str.5614, i64 32, i64 0 }, ptr %t7 + store { ptr, i64, i64 } { ptr @.str.5827, i64 33, i64 0 }, ptr %t7 %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 5 - store { ptr, i64, i64 } { ptr @.str.5615, i64 45, i64 0 }, ptr %t8 + store { ptr, i64, i64 } { ptr @.str.5828, i64 33, i64 0 }, ptr %t8 %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 6 - store { ptr, i64, i64 } { ptr @.str.5616, i64 35, i64 0 }, ptr %t9 + store { ptr, i64, i64 } { ptr @.str.5829, i64 33, i64 0 }, ptr %t9 %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 7 - store { ptr, i64, i64 } { ptr @.str.5617, i64 36, i64 0 }, ptr %t10 + store { ptr, i64, i64 } { ptr @.str.5830, i64 32, i64 0 }, ptr %t10 %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 8 - store { ptr, i64, i64 } { ptr @.str.5618, i64 42, i64 0 }, ptr %t11 + store { ptr, i64, i64 } { ptr @.str.5831, i64 45, i64 0 }, ptr %t11 %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 9 - store { ptr, i64, i64 } { ptr @.str.5619, i64 37, i64 0 }, ptr %t12 + store { ptr, i64, i64 } { ptr @.str.5832, i64 35, i64 0 }, ptr %t12 %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 10 - store { ptr, i64, i64 } { ptr @.str.5620, i64 38, i64 0 }, ptr %t13 + store { ptr, i64, i64 } { ptr @.str.5833, i64 36, i64 0 }, ptr %t13 %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 11 - store { ptr, i64, i64 } { ptr @.str.5621, i64 42, i64 0 }, ptr %t14 + store { ptr, i64, i64 } { ptr @.str.5834, i64 42, i64 0 }, ptr %t14 %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 12 - store { ptr, i64, i64 } { ptr @.str.5622, i64 38, i64 0 }, ptr %t15 + store { ptr, i64, i64 } { ptr @.str.5835, i64 37, i64 0 }, ptr %t15 %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 13 - store { ptr, i64, i64 } { ptr @.str.5623, i64 37, i64 0 }, ptr %t16 + store { ptr, i64, i64 } { ptr @.str.5836, i64 38, i64 0 }, ptr %t16 %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 14 - store { ptr, i64, i64 } { ptr @.str.5624, i64 42, i64 0 }, ptr %t17 + store { ptr, i64, i64 } { ptr @.str.5837, i64 42, i64 0 }, ptr %t17 %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 15 - store { ptr, i64, i64 } { ptr @.str.5625, i64 42, i64 0 }, ptr %t18 + store { ptr, i64, i64 } { ptr @.str.5838, i64 38, i64 0 }, ptr %t18 %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 16 - store { ptr, i64, i64 } { ptr @.str.5626, i64 34, i64 0 }, ptr %t19 + store { ptr, i64, i64 } { ptr @.str.5839, i64 37, i64 0 }, ptr %t19 %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 17 - store { ptr, i64, i64 } { ptr @.str.5627, i64 42, i64 0 }, ptr %t20 + store { ptr, i64, i64 } { ptr @.str.5840, i64 42, i64 0 }, ptr %t20 %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 18 - store { ptr, i64, i64 } { ptr @.str.5628, i64 43, i64 0 }, ptr %t21 + store { ptr, i64, i64 } { ptr @.str.5841, i64 42, i64 0 }, ptr %t21 %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 19 - store { ptr, i64, i64 } { ptr @.str.5629, i64 47, i64 0 }, ptr %t22 + store { ptr, i64, i64 } { ptr @.str.5842, i64 34, i64 0 }, ptr %t22 %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 20 - store { ptr, i64, i64 } { ptr @.str.5630, i64 50, i64 0 }, ptr %t23 + store { ptr, i64, i64 } { ptr @.str.5843, i64 42, i64 0 }, ptr %t23 %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 21 - store { ptr, i64, i64 } { ptr @.str.5631, i64 43, i64 0 }, ptr %t24 + store { ptr, i64, i64 } { ptr @.str.5844, i64 43, i64 0 }, ptr %t24 %t25 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 22 - store { ptr, i64, i64 } { ptr @.str.5632, i64 44, i64 0 }, ptr %t25 + store { ptr, i64, i64 } { ptr @.str.5845, i64 47, i64 0 }, ptr %t25 %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 23 - store { ptr, i64, i64 } { ptr @.str.5633, i64 49, i64 0 }, ptr %t26 + store { ptr, i64, i64 } { ptr @.str.5846, i64 50, i64 0 }, ptr %t26 %t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 24 - store { ptr, i64, i64 } { ptr @.str.5634, i64 57, i64 0 }, ptr %t27 + store { ptr, i64, i64 } { ptr @.str.5847, i64 43, i64 0 }, ptr %t27 %t28 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 25 - store { ptr, i64, i64 } { ptr @.str.5635, i64 37, i64 0 }, ptr %t28 + store { ptr, i64, i64 } { ptr @.str.5848, i64 44, i64 0 }, ptr %t28 %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 26 - store { ptr, i64, i64 } { ptr @.str.5636, i64 39, i64 0 }, ptr %t29 + store { ptr, i64, i64 } { ptr @.str.5849, i64 49, i64 0 }, ptr %t29 %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 27 - store { ptr, i64, i64 } { ptr @.str.5637, i64 37, i64 0 }, ptr %t30 + store { ptr, i64, i64 } { ptr @.str.5850, i64 57, i64 0 }, ptr %t30 %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 28 - store { ptr, i64, i64 } { ptr @.str.5638, i64 38, i64 0 }, ptr %t31 + store { ptr, i64, i64 } { ptr @.str.5851, i64 37, i64 0 }, ptr %t31 %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 29 - store { ptr, i64, i64 } { ptr @.str.5639, i64 39, i64 0 }, ptr %t32 + store { ptr, i64, i64 } { ptr @.str.5852, i64 39, i64 0 }, ptr %t32 %t33 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 30 - store { ptr, i64, i64 } { ptr @.str.5640, i64 39, i64 0 }, ptr %t33 + store { ptr, i64, i64 } { ptr @.str.5853, i64 37, i64 0 }, ptr %t33 %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 31 - store { ptr, i64, i64 } { ptr @.str.5641, i64 51, i64 0 }, ptr %t34 + store { ptr, i64, i64 } { ptr @.str.5854, i64 38, i64 0 }, ptr %t34 %t35 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 32 - store { ptr, i64, i64 } { ptr @.str.5642, i64 44, i64 0 }, ptr %t35 + store { ptr, i64, i64 } { ptr @.str.5855, i64 39, i64 0 }, ptr %t35 %t36 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 33 - store { ptr, i64, i64 } { ptr @.str.5643, i64 43, i64 0 }, ptr %t36 + store { ptr, i64, i64 } { ptr @.str.5856, i64 39, i64 0 }, ptr %t36 %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 34 - store { ptr, i64, i64 } { ptr @.str.5644, i64 45, i64 0 }, ptr %t37 + store { ptr, i64, i64 } { ptr @.str.5857, i64 51, i64 0 }, ptr %t37 %t38 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 35 - store { ptr, i64, i64 } { ptr @.str.5645, i64 44, i64 0 }, ptr %t38 + store { ptr, i64, i64 } { ptr @.str.5858, i64 44, i64 0 }, ptr %t38 %t39 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 36 - store { ptr, i64, i64 } { ptr @.str.5646, i64 52, i64 0 }, ptr %t39 + store { ptr, i64, i64 } { ptr @.str.5859, i64 43, i64 0 }, ptr %t39 %t40 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 37 - store { ptr, i64, i64 } { ptr @.str.5647, i64 57, i64 0 }, ptr %t40 + store { ptr, i64, i64 } { ptr @.str.5860, i64 45, i64 0 }, ptr %t40 %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 38 - store { ptr, i64, i64 } { ptr @.str.5648, i64 48, i64 0 }, ptr %t41 + store { ptr, i64, i64 } { ptr @.str.5861, i64 44, i64 0 }, ptr %t41 %t42 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 39 - store { ptr, i64, i64 } { ptr @.str.5649, i64 34, i64 0 }, ptr %t42 + store { ptr, i64, i64 } { ptr @.str.5862, i64 52, i64 0 }, ptr %t42 %t43 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 40 - store { ptr, i64, i64 } { ptr @.str.5650, i64 48, i64 0 }, ptr %t43 + store { ptr, i64, i64 } { ptr @.str.5863, i64 57, i64 0 }, ptr %t43 %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 41 - store { ptr, i64, i64 } { ptr @.str.5651, i64 60, i64 0 }, ptr %t44 + store { ptr, i64, i64 } { ptr @.str.5864, i64 48, i64 0 }, ptr %t44 %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 42 - store { ptr, i64, i64 } { ptr @.str.5652, i64 55, i64 0 }, ptr %t45 + store { ptr, i64, i64 } { ptr @.str.5865, i64 34, i64 0 }, ptr %t45 %t46 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 43 - store { ptr, i64, i64 } { ptr @.str.5653, i64 46, i64 0 }, ptr %t46 + store { ptr, i64, i64 } { ptr @.str.5866, i64 48, i64 0 }, ptr %t46 %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 44 - store { ptr, i64, i64 } { ptr @.str.5654, i64 48, i64 0 }, ptr %t47 + store { ptr, i64, i64 } { ptr @.str.5867, i64 60, i64 0 }, ptr %t47 %t48 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 45 - store { ptr, i64, i64 } { ptr @.str.5655, i64 43, i64 0 }, ptr %t48 + store { ptr, i64, i64 } { ptr @.str.5868, i64 55, i64 0 }, ptr %t48 %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 46 - store { ptr, i64, i64 } { ptr @.str.5656, i64 45, i64 0 }, ptr %t49 + store { ptr, i64, i64 } { ptr @.str.5869, i64 46, i64 0 }, ptr %t49 %t50 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 47 - store { ptr, i64, i64 } { ptr @.str.5657, i64 59, i64 0 }, ptr %t50 + store { ptr, i64, i64 } { ptr @.str.5870, i64 48, i64 0 }, ptr %t50 %t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 48 - store { ptr, i64, i64 } { ptr @.str.5658, i64 49, i64 0 }, ptr %t51 + store { ptr, i64, i64 } { ptr @.str.5871, i64 43, i64 0 }, ptr %t51 %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 49 - store { ptr, i64, i64 } { ptr @.str.5659, i64 39, i64 0 }, ptr %t52 + store { ptr, i64, i64 } { ptr @.str.5872, i64 45, i64 0 }, ptr %t52 %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 50 - store { ptr, i64, i64 } { ptr @.str.5660, i64 39, i64 0 }, ptr %t53 + store { ptr, i64, i64 } { ptr @.str.5873, i64 59, i64 0 }, ptr %t53 %t54 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 51 - store { ptr, i64, i64 } { ptr @.str.5661, i64 35, i64 0 }, ptr %t54 + store { ptr, i64, i64 } { ptr @.str.5874, i64 49, i64 0 }, ptr %t54 %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 52 - store { ptr, i64, i64 } { ptr @.str.5662, i64 35, i64 0 }, ptr %t55 + store { ptr, i64, i64 } { ptr @.str.5875, i64 39, i64 0 }, ptr %t55 %t56 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 53 - store { ptr, i64, i64 } { ptr @.str.5663, i64 45, i64 0 }, ptr %t56 + store { ptr, i64, i64 } { ptr @.str.5876, i64 39, i64 0 }, ptr %t56 %t57 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 54 - store { ptr, i64, i64 } { ptr @.str.5664, i64 47, i64 0 }, ptr %t57 + store { ptr, i64, i64 } { ptr @.str.5877, i64 35, i64 0 }, ptr %t57 %t58 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 55 - store { ptr, i64, i64 } { ptr @.str.5665, i64 47, i64 0 }, ptr %t58 + store { ptr, i64, i64 } { ptr @.str.5878, i64 35, i64 0 }, ptr %t58 %t59 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 56 - store { ptr, i64, i64 } { ptr @.str.5666, i64 48, i64 0 }, ptr %t59 + store { ptr, i64, i64 } { ptr @.str.5879, i64 45, i64 0 }, ptr %t59 %t60 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 57 - store { ptr, i64, i64 } { ptr @.str.5667, i64 44, i64 0 }, ptr %t60 + store { ptr, i64, i64 } { ptr @.str.5880, i64 47, i64 0 }, ptr %t60 %t61 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 58 - store { ptr, i64, i64 } { ptr @.str.5668, i64 37, i64 0 }, ptr %t61 + store { ptr, i64, i64 } { ptr @.str.5881, i64 47, i64 0 }, ptr %t61 %t62 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 59 - store { ptr, i64, i64 } { ptr @.str.5669, i64 49, i64 0 }, ptr %t62 + store { ptr, i64, i64 } { ptr @.str.5882, i64 48, i64 0 }, ptr %t62 %t63 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 60 - store { ptr, i64, i64 } { ptr @.str.5670, i64 39, i64 0 }, ptr %t63 + store { ptr, i64, i64 } { ptr @.str.5883, i64 44, i64 0 }, ptr %t63 %t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 61 - store { ptr, i64, i64 } { ptr @.str.5671, i64 29, i64 0 }, ptr %t64 + store { ptr, i64, i64 } { ptr @.str.5884, i64 37, i64 0 }, ptr %t64 %t65 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 62 - store { ptr, i64, i64 } { ptr @.str.5672, i64 35, i64 0 }, ptr %t65 + store { ptr, i64, i64 } { ptr @.str.5885, i64 49, i64 0 }, ptr %t65 %t66 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 63 - store { ptr, i64, i64 } { ptr @.str.5673, i64 29, i64 0 }, ptr %t66 + store { ptr, i64, i64 } { ptr @.str.5886, i64 39, i64 0 }, ptr %t66 %t67 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 64 - store { ptr, i64, i64 } { ptr @.str.5674, i64 24, i64 0 }, ptr %t67 + store { ptr, i64, i64 } { ptr @.str.5887, i64 29, i64 0 }, ptr %t67 %t68 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 65 - store { ptr, i64, i64 } { ptr @.str.5675, i64 40, i64 0 }, ptr %t68 + store { ptr, i64, i64 } { ptr @.str.5888, i64 35, i64 0 }, ptr %t68 %t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 66 - store { ptr, i64, i64 } { ptr @.str.5676, i64 33, i64 0 }, ptr %t69 + store { ptr, i64, i64 } { ptr @.str.5889, i64 29, i64 0 }, ptr %t69 %t70 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 67 - store { ptr, i64, i64 } { ptr @.str.5677, i64 34, i64 0 }, ptr %t70 + store { ptr, i64, i64 } { ptr @.str.5890, i64 24, i64 0 }, ptr %t70 %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 68 - store { ptr, i64, i64 } { ptr @.str.5678, i64 44, i64 0 }, ptr %t71 + store { ptr, i64, i64 } { ptr @.str.5891, i64 40, i64 0 }, ptr %t71 %t72 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 69 - store { ptr, i64, i64 } { ptr @.str.5679, i64 32, i64 0 }, ptr %t72 + store { ptr, i64, i64 } { ptr @.str.5892, i64 33, i64 0 }, ptr %t72 %t73 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 70 - store { ptr, i64, i64 } { ptr @.str.5680, 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.5681, 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.5682, 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 + store { ptr, i64, i64 } { ptr @.str.5893, i64 34, i64 0 }, ptr %t73 + %t74 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 71 + store { ptr, i64, i64 } { ptr @.str.5894, i64 44, i64 0 }, ptr %t74 + %t75 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 72 + store { ptr, i64, i64 } { ptr @.str.5895, i64 32, i64 0 }, ptr %t75 + %t76 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 73 + store { ptr, i64, i64 } { ptr @.str.5896, i64 23, i64 0 }, ptr %t76 + %t77 = insertvalue { ptr, i64, i64 } undef, ptr %t2, 0 + %t78 = insertvalue { ptr, i64, i64 } %t77, i64 74, 1 + %t79 = insertvalue { ptr, i64, i64 } %t78, i64 74, 2 + store { ptr, i64, i64 } %t79, ptr %a80 + %t81 = getelementptr inbounds { ptr, i64, i64 }, ptr %a80, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.5897, i64 1, i64 0 }, ptr %a82 + call void @finch_str_join(ptr %a83, ptr %a80, ptr %a82) + %t84 = load { ptr, i64, i64 }, ptr %a83 + store { ptr, i64, i64 } %t84, ptr %a86 + store { ptr, i64, i64 } { ptr @.str.5898, i64 1, i64 0 }, ptr %a87 + call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) + store { ptr, i64, i64 } %t84, ptr %a88 + call void @finch_str_drop(ptr %a88) + %t89 = load { ptr, i64, i64 }, ptr %a85 + call void @finch.drop.arr_str(ptr %a80) + ret { ptr, i64, i64 } %t89 } define internal { ptr, i64, i64 } @finch.gen.assemble(ptr %p0) { @@ -75757,177 +91129,222 @@ entry: %a18 = alloca { ptr, i64, i64 }, align 16 %a19 = alloca { ptr, i64, i64 }, align 16 %a20 = alloca { ptr, i64, i64 }, align 16 - %a22 = 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 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 + %a25 = alloca { ptr, i64, i64 }, align 16 + %a26 = alloca { ptr, i64, i64 }, align 16 + %a29 = alloca { ptr, i64, i64 }, align 16 %a35 = alloca { ptr, i64, i64 }, align 16 %a36 = alloca { ptr, i64, i64 }, align 16 %a38 = 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 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 + %a46 = 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 + %a52 = alloca { ptr, i64, i64 }, align 16 + %a53 = alloca { ptr, i64, i64 }, align 16 + %a55 = 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 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 + %a61 = 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 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 + %a72 = alloca { ptr, i64, i64 }, align 16 %a78 = alloca { ptr, i64, i64 }, align 16 %a79 = 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 { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 + %a87 = 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 + %a99 = 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 + %a103 = alloca { ptr, i64, i64 }, align 16 + %a106 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 - store { ptr, i64, i64 } { ptr @.str.5683, i64 52, i64 0 }, ptr %a2 + store { ptr, i64, i64 } { ptr @.str.5899, i64 52, i64 0 }, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic8197, label %ok8198 -panic8197: - call void @finch_panic(ptr @.str.5684, i64 5109, ptr @.str.5685) + br i1 %t4, label %panic8656, label %ok8657 +panic8656: + call void @finch_panic(ptr @.str.5900, i64 5541, ptr @.str.5901) unreachable -ok8198: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 29 +ok8657: + %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 30 %t6 = getelementptr inbounds %S.platform.Target, ptr %t5, i32 0, i32 5 %t7 = load i1, ptr %t6 - br i1 %t7, label %then8199, label %endif8201 -then8199: + br i1 %t7, label %then8658, label %endif8660 +then8658: %t8 = load { ptr, i64, i64 }, ptr %a2 store { ptr, i64, i64 } %t8, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.5686, i64 17, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.5902, 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 %panic8202, label %ok8203 -panic8202: - call void @finch_panic(ptr @.str.5687, i64 5110, ptr @.str.5688) + br i1 %t14, label %panic8661, label %ok8662 +panic8661: + call void @finch_panic(ptr @.str.5903, i64 5542, ptr @.str.5904) unreachable -ok8203: - %t15 = getelementptr inbounds %S.gen.Gen, ptr %t13, i32 0, i32 29 +ok8662: + %t15 = getelementptr inbounds %S.gen.Gen, ptr %t13, i32 0, i32 30 %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 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.5689, 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 %endif8201 -endif8201: - %t26 = load { ptr, i64, i64 }, ptr %a2 - %t27 = load ptr, ptr %a1 - %t28 = icmp eq ptr %t27, null - br i1 %t28, label %panic8204, label %ok8205 -panic8204: - call void @finch_panic(ptr @.str.5690, i64 5112, ptr @.str.5691) + store { ptr, i64, i64 } %t12, ptr %a21 + call void @finch_str_drop(ptr %a21) + %t22 = load { ptr, i64, i64 }, ptr %a18 + store { ptr, i64, i64 } %t22, ptr %a24 + store { ptr, i64, i64 } { ptr @.str.5905, i64 3, i64 0 }, ptr %a25 + call void @finch_str_concat(ptr %a23, ptr %a24, ptr %a25) + store { ptr, i64, i64 } %t22, ptr %a26 + call void @finch_str_drop(ptr %a26) + %t27 = load { ptr, i64, i64 }, ptr %a23 + %t28 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t27, ptr %a2 + store { ptr, i64, i64 } %t28, ptr %a29 + call void @finch_str_drop(ptr %a29) + br label %endif8660 +endif8660: + %t30 = load { ptr, i64, i64 }, ptr %a2 + %t31 = load ptr, ptr %a1 + %t32 = icmp eq ptr %t31, null + br i1 %t32, label %panic8663, label %ok8664 +panic8663: + call void @finch_panic(ptr @.str.5906, i64 5544, ptr @.str.5907) unreachable -ok8205: - %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.5692, 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 - 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.5693, i64 2, i64 0 }, ptr %a40 +ok8664: + %t33 = getelementptr inbounds %S.gen.Gen, ptr %t31, i32 0, i32 2 + %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t33, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.5908, i64 1, i64 0 }, ptr %a35 + call void @finch_str_join(ptr %a36, ptr %t33, ptr %a35) + %t37 = load { ptr, i64, i64 }, ptr %a36 + store { ptr, i64, i64 } %t30, 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 - %t42 = call { ptr, i64, i64 } @finch.gen.runtimeDecls() - store { ptr, i64, i64 } %t41, ptr %a44 - store { ptr, i64, i64 } %t42, ptr %a45 + store { ptr, i64, i64 } %t37, ptr %a41 + call void @finch_str_drop(ptr %a41) + %t42 = load { ptr, i64, i64 }, ptr %a38 + store { ptr, i64, i64 } %t42, ptr %a44 + store { ptr, i64, i64 } { ptr @.str.5909, i64 2, 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 %a48 - store { ptr, i64, i64 } { ptr @.str.5694, 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 %panic8206, label %ok8207 -panic8206: - call void @finch_panic(ptr @.str.5695, i64 5113, ptr @.str.5696) - unreachable -ok8207: - %t53 = getelementptr inbounds %S.gen.Gen, ptr %t51, i32 0, i32 28 - %t54 = load i1, ptr %t53 - br i1 %t54, label %then8208, label %endif8210 -then8208: - %t55 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t55, ptr %a57 - store { ptr, i64, i64 } { ptr @.str.5697, 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 %endif8210 -endif8210: + store { ptr, i64, i64 } %t42, ptr %a46 + call void @finch_str_drop(ptr %a46) + %t47 = load { ptr, i64, i64 }, ptr %a43 + %t48 = call { ptr, i64, i64 } @finch.gen.runtimeDecls() + store { ptr, i64, i64 } %t47, ptr %a50 + store { ptr, i64, i64 } %t48, ptr %a51 + call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) + store { ptr, i64, i64 } %t47, ptr %a52 + call void @finch_str_drop(ptr %a52) + store { ptr, i64, i64 } %t48, ptr %a53 + call void @finch_str_drop(ptr %a53) + %t54 = load { ptr, i64, i64 }, ptr %a49 + store { ptr, i64, i64 } %t54, ptr %a56 + store { ptr, i64, i64 } { ptr @.str.5910, i64 1, i64 0 }, ptr %a57 + call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) + store { ptr, i64, i64 } %t54, ptr %a58 + call void @finch_str_drop(ptr %a58) + %t59 = load { ptr, i64, i64 }, ptr %a55 %t60 = load { ptr, i64, i64 }, ptr %a2 - %t61 = load ptr, ptr %a1 - %t62 = icmp eq ptr %t61, null - br i1 %t62, label %panic8211, label %ok8212 -panic8211: - call void @finch_panic(ptr @.str.5698, i64 5116, ptr @.str.5699) + store { ptr, i64, i64 } %t59, ptr %a2 + store { ptr, i64, i64 } %t60, ptr %a61 + call void @finch_str_drop(ptr %a61) + %t62 = load ptr, ptr %a1 + %t63 = icmp eq ptr %t62, null + br i1 %t63, label %panic8665, label %ok8666 +panic8665: + call void @finch_panic(ptr @.str.5911, i64 5545, ptr @.str.5912) unreachable -ok8212: - %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.5700, 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 - 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 %a2 - %t72 = load ptr, ptr %a1 - %t73 = icmp eq ptr %t72, null - br i1 %t73, label %panic8213, label %ok8214 -panic8213: - call void @finch_panic(ptr @.str.5701, i64 5117, ptr @.str.5702) +ok8666: + %t64 = getelementptr inbounds %S.gen.Gen, ptr %t62, i32 0, i32 29 + %t65 = load i1, ptr %t64 + br i1 %t65, label %then8667, label %endif8669 +then8667: + %t66 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t66, ptr %a68 + store { ptr, i64, i64 } { ptr @.str.5913, i64 62, 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 %a2 + store { ptr, i64, i64 } %t70, ptr %a2 + store { ptr, i64, i64 } %t71, ptr %a72 + call void @finch_str_drop(ptr %a72) + br label %endif8669 +endif8669: + %t73 = load { ptr, i64, i64 }, ptr %a2 + %t74 = load ptr, ptr %a1 + %t75 = icmp eq ptr %t74, null + br i1 %t75, label %panic8670, label %ok8671 +panic8670: + call void @finch_panic(ptr @.str.5914, i64 5548, ptr @.str.5915) unreachable -ok8214: - %t74 = getelementptr inbounds %S.gen.Gen, ptr %t72, i32 0, i32 28 - %t75 = load i1, ptr %t74 - br i1 %t75, label %then8215, label %endif8217 -then8215: - %t76 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t76, ptr %a78 - store { ptr, i64, i64 } { ptr @.str.5703, 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 - %t82 = call { ptr, i64, i64 } @finch.gen.dbgModule(ptr %t81) +ok8671: + %t76 = getelementptr inbounds %S.gen.Gen, ptr %t74, i32 0, i32 3 + %t77 = getelementptr inbounds { ptr, i64, i64 }, ptr %t76, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.5916, i64 1, i64 0 }, ptr %a78 + call void @finch_str_join(ptr %a79, ptr %t76, ptr %a78) + %t80 = load { ptr, i64, i64 }, ptr %a79 + store { ptr, i64, i64 } %t73, ptr %a82 + store { ptr, i64, i64 } %t80, ptr %a83 + call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) store { ptr, i64, i64 } %t80, 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 %a2 - br label %endif8217 -endif8217: - %t87 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t87, ptr %a88 - call void @finch_str_copy(ptr %a89, ptr %a88) - %t90 = load { ptr, i64, i64 }, ptr %a89 - ret { ptr, i64, i64 } %t90 + call void @finch_str_drop(ptr %a84) + %t85 = load { ptr, i64, i64 }, ptr %a81 + %t86 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t85, ptr %a2 + store { ptr, i64, i64 } %t86, ptr %a87 + call void @finch_str_drop(ptr %a87) + %t88 = load ptr, ptr %a1 + %t89 = icmp eq ptr %t88, null + br i1 %t89, label %panic8672, label %ok8673 +panic8672: + call void @finch_panic(ptr @.str.5917, i64 5549, ptr @.str.5918) + unreachable +ok8673: + %t90 = getelementptr inbounds %S.gen.Gen, ptr %t88, i32 0, i32 29 + %t91 = load i1, ptr %t90 + br i1 %t91, label %then8674, label %endif8676 +then8674: + %t92 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t92, ptr %a94 + store { ptr, i64, i64 } { ptr @.str.5919, i64 1, i64 0 }, ptr %a95 + call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) + %t96 = load { ptr, i64, i64 }, ptr %a93 + %t97 = load ptr, ptr %a1 + %t98 = call { ptr, i64, i64 } @finch.gen.dbgModule(ptr %t97) + store { ptr, i64, i64 } %t96, ptr %a100 + store { ptr, i64, i64 } %t98, ptr %a101 + call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) + store { ptr, i64, i64 } %t96, ptr %a102 + call void @finch_str_drop(ptr %a102) + store { ptr, i64, i64 } %t98, ptr %a103 + call void @finch_str_drop(ptr %a103) + %t104 = load { ptr, i64, i64 }, ptr %a99 + %t105 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t104, ptr %a2 + store { ptr, i64, i64 } %t105, ptr %a106 + call void @finch_str_drop(ptr %a106) + br label %endif8676 +endif8676: + %t107 = load { ptr, i64, i64 }, ptr %a2 + ret { ptr, i64, i64 } %t107 } define internal void @finch.copy.arr_S_ast_Program(ptr %dst, ptr %src) { @@ -75939,20 +91356,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.cond8218 -n.cond8218: + br label %n.cond8677 +n.cond8677: %t6 = load i64, ptr %a5 %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body8219, label %n.end8220 -n.body8219: + br i1 %t7, label %n.body8678, label %n.end8679 +n.body8678: %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.cond8218 -n.end8220: + br label %n.cond8677 +n.end8679: ret void } @@ -75986,12 +91403,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.cond8221 -n.cond8221: + br label %n.cond8680 +n.cond8680: %t4 = load i64, ptr %a3 %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body8222, label %n.end8223 -n.body8222: + br i1 %t5, label %n.body8681, label %n.end8682 +n.body8681: %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 @@ -76001,21 +91418,21 @@ n.body8222: %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.live8224, label %entry.next8225 -entry.live8224: + br i1 %t14, label %entry.live8683, label %entry.next8684 +entry.live8683: %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.next8225 -entry.next8225: + br label %entry.next8684 +entry.next8684: %t19 = load i64, ptr %a3 %t20 = add i64 %t19, 1 store i64 %t20, ptr %a3 - br label %n.cond8221 -n.end8223: + br label %n.cond8680 +n.end8682: ret void } @@ -76026,12 +91443,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.cond8226 -n.cond8226: + br label %n.cond8685 +n.cond8685: %t4 = load i64, ptr %a3 %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body8227, label %n.end8228 -n.body8227: + br i1 %t5, label %n.body8686, label %n.end8687 +n.body8686: %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 @@ -76041,21 +91458,21 @@ n.body8227: %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.live8229, label %entry.next8230 -entry.live8229: + br i1 %t14, label %entry.live8688, label %entry.next8689 +entry.live8688: %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.next8230 -entry.next8230: + br label %entry.next8689 +entry.next8689: %t19 = load i64, ptr %a3 %t20 = add i64 %t19, 1 store i64 %t20, ptr %a3 - br label %n.cond8226 -n.end8228: + br label %n.cond8685 +n.end8687: ret void } @@ -76066,12 +91483,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.cond8231 -n.cond8231: + br label %n.cond8690 +n.cond8690: %t4 = load i64, ptr %a3 %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body8232, label %n.end8233 -n.body8232: + br i1 %t5, label %n.body8691, label %n.end8692 +n.body8691: %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 @@ -76081,21 +91498,21 @@ n.body8232: %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.live8234, label %entry.next8235 -entry.live8234: + br i1 %t14, label %entry.live8693, label %entry.next8694 +entry.live8693: %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.next8235 -entry.next8235: + br label %entry.next8694 +entry.next8694: %t19 = load i64, ptr %a3 %t20 = add i64 %t19, 1 store i64 %t20, ptr %a3 - br label %n.cond8231 -n.end8233: + br label %n.cond8690 +n.end8692: ret void } @@ -76106,12 +91523,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.cond8236 -n.cond8236: + br label %n.cond8695 +n.cond8695: %t4 = load i64, ptr %a3 %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body8237, label %n.end8238 -n.body8237: + br i1 %t5, label %n.body8696, label %n.end8697 +n.body8696: %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 @@ -76121,21 +91538,21 @@ n.body8237: %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.live8239, label %entry.next8240 -entry.live8239: + br i1 %t14, label %entry.live8698, label %entry.next8699 +entry.live8698: %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.next8240 -entry.next8240: + br label %entry.next8699 +entry.next8699: %t19 = load i64, ptr %a3 %t20 = add i64 %t19, 1 store i64 %t20, ptr %a3 - br label %n.cond8236 -n.end8238: + br label %n.cond8695 +n.end8697: ret void } @@ -76162,6 +91579,252 @@ entry: ret void } +define internal void @finch.drop.arr_S_gen_Pending(ptr %a) { +entry: + %a4 = alloca i64, align 16 + %t1 = load ptr, ptr %a + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 + %t3 = load i64, ptr %t2 + store i64 0, ptr %a4 + br label %n.cond8768 +n.cond8768: + %t5 = load i64, ptr %a4 + %t6 = icmp slt i64 %t5, %t3 + br i1 %t6, label %n.body8769, label %n.end8770 +n.body8769: + %t7 = getelementptr inbounds %S.gen.Pending, ptr %t1, i64 %t5 + call void @finch.drop.S_gen_Pending(ptr %t7) + %t8 = load i64, ptr %a4 + %t9 = add i64 %t8, 1 + store i64 %t9, ptr %a4 + br label %n.cond8768 +n.end8770: + call void @finch_arr_free(ptr %a) + ret void +} + +define internal void @finch.drop.arr_S_gen_Loop(ptr %a) { +entry: + %a4 = alloca i64, align 16 + %t1 = load ptr, ptr %a + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 + %t3 = load i64, ptr %t2 + store i64 0, ptr %a4 + br label %n.cond8771 +n.cond8771: + %t5 = load i64, ptr %a4 + %t6 = icmp slt i64 %t5, %t3 + br i1 %t6, label %n.body8772, label %n.end8773 +n.body8772: + %t7 = getelementptr inbounds %S.gen.Loop, ptr %t1, i64 %t5 + call void @finch.drop.S_gen_Loop(ptr %t7) + %t8 = load i64, ptr %a4 + %t9 = add i64 %t8, 1 + store i64 %t9, ptr %a4 + br label %n.cond8771 +n.end8773: + call void @finch_arr_free(ptr %a) + ret void +} + +define internal void @finch.drop.arr_S_gen_FnSig(ptr %a) { +entry: + %a4 = alloca i64, align 16 + %t1 = load ptr, ptr %a + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 + %t3 = load i64, ptr %t2 + store i64 0, ptr %a4 + br label %n.cond8774 +n.cond8774: + %t5 = load i64, ptr %a4 + %t6 = icmp slt i64 %t5, %t3 + br i1 %t6, label %n.body8775, label %n.end8776 +n.body8775: + %t7 = getelementptr inbounds %S.gen.FnSig, ptr %t1, i64 %t5 + call void @finch.drop.S_gen_FnSig(ptr %t7) + %t8 = load i64, ptr %a4 + %t9 = add i64 %t8, 1 + store i64 %t9, ptr %a4 + br label %n.cond8774 +n.end8776: + call void @finch_arr_free(ptr %a) + ret void +} + +define internal void @finch.drop.arr_S_gen_StructDef(ptr %a) { +entry: + %a4 = alloca i64, align 16 + %t1 = load ptr, ptr %a + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 + %t3 = load i64, ptr %t2 + store i64 0, ptr %a4 + br label %n.cond8777 +n.cond8777: + %t5 = load i64, ptr %a4 + %t6 = icmp slt i64 %t5, %t3 + br i1 %t6, label %n.body8778, label %n.end8779 +n.body8778: + %t7 = getelementptr inbounds %S.gen.StructDef, ptr %t1, i64 %t5 + call void @finch.drop.S_gen_StructDef(ptr %t7) + %t8 = load i64, ptr %a4 + %t9 = add i64 %t8, 1 + store i64 %t9, ptr %a4 + br label %n.cond8777 +n.end8779: + call void @finch_arr_free(ptr %a) + ret void +} + +define internal void @finch.drop.arr_S_gen_Template(ptr %a) { +entry: + %a4 = alloca i64, align 16 + %t1 = load ptr, ptr %a + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 + %t3 = load i64, ptr %t2 + store i64 0, ptr %a4 + br label %n.cond8780 +n.cond8780: + %t5 = load i64, ptr %a4 + %t6 = icmp slt i64 %t5, %t3 + br i1 %t6, label %n.body8781, label %n.end8782 +n.body8781: + %t7 = getelementptr inbounds %S.gen.Template, ptr %t1, i64 %t5 + call void @finch.drop.S_gen_Template(ptr %t7) + %t8 = load i64, ptr %a4 + %t9 = add i64 %t8, 1 + store i64 %t9, ptr %a4 + br label %n.cond8780 +n.end8782: + call void @finch_arr_free(ptr %a) + ret void +} + +define internal void @finch.drop.arr_S_gen_EnumDef(ptr %a) { +entry: + %a4 = alloca i64, align 16 + %t1 = load ptr, ptr %a + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 + %t3 = load i64, ptr %t2 + store i64 0, ptr %a4 + br label %n.cond8783 +n.cond8783: + %t5 = load i64, ptr %a4 + %t6 = icmp slt i64 %t5, %t3 + br i1 %t6, label %n.body8784, label %n.end8785 +n.body8784: + %t7 = getelementptr inbounds %S.gen.EnumDef, ptr %t1, i64 %t5 + call void @finch.drop.S_gen_EnumDef(ptr %t7) + %t8 = load i64, ptr %a4 + %t9 = add i64 %t8, 1 + store i64 %t9, ptr %a4 + br label %n.cond8783 +n.end8785: + call void @finch_arr_free(ptr %a) + ret void +} + +define internal void @finch.drop.map_str_int(ptr %a) { +entry: + %a3 = alloca i64, align 16 + %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 2 + %t2 = load i64, ptr %t1 + store i64 0, ptr %a3 + br label %n.cond8786 +n.cond8786: + %t4 = load i64, ptr %a3 + %t5 = icmp slt i64 %t4, %t2 + br i1 %t5, label %n.body8787, label %n.end8788 +n.body8787: + %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 0 + %t7 = load ptr, ptr %t6 + %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t7, i64 %t4 + %t9 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t8, i32 0, i32 0 + %t10 = load i64, ptr %t9 + %t11 = icmp ne i64 %t10, 0 + br i1 %t11, label %entry.live8789, label %entry.next8790 +entry.live8789: + %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t8, i32 0, i32 1 + call void @finch_str_drop(ptr %t12) + %t13 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t8, i32 0, i32 2 + br label %entry.next8790 +entry.next8790: + %t14 = load i64, ptr %a3 + %t15 = add i64 %t14, 1 + store i64 %t15, ptr %a3 + br label %n.cond8786 +n.end8788: + call void @finch_map_free(ptr %a) + ret void +} + +define internal void @finch.drop.S_gen_Gen(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 0 + call void @finch.drop.arr_S_ast_Program(ptr %t1) + %t2 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 1 + call void @finch.drop.arr_str(ptr %t2) + %t3 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 2 + call void @finch.drop.arr_str(ptr %t3) + %t4 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 3 + call void @finch.drop.arr_str(ptr %t4) + %t5 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 4 + call void @finch.drop.arr_str(ptr %t5) + %t6 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 5 + call void @finch.drop.arr_str(ptr %t6) + %t7 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 10 + call void @finch.drop.arr_S_gen_Scope(ptr %t7) + %t8 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 11 + call void @finch.drop.arr_S_gen_Pending(ptr %t8) + %t9 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 12 + call void @finch.drop.arr_S_gen_Loop(ptr %t9) + %t10 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 13 + call void @finch.drop.S_gen_FnSig(ptr %t10) + %t11 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 14 + call void @finch_str_drop(ptr %t11) + %t12 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 15 + call void @finch.drop.arr_S_gen_FnSig(ptr %t12) + %t13 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 16 + call void @finch.drop.arr_S_gen_StructDef(ptr %t13) + %t14 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 17 + call void @finch.drop.arr_S_gen_Template(ptr %t14) + %t15 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 18 + call void @finch.drop.arr_str(ptr %t15) + %t16 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 19 + call void @finch.drop.arr_S_ast_Type(ptr %t16) + %t17 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 20 + call void @finch_str_drop(ptr %t17) + %t18 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 21 + call void @finch.drop.arr_S_gen_EnumDef(ptr %t18) + %t19 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 22 + call void @finch.drop.arr_str(ptr %t19) + %t20 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 23 + call void @finch.drop.arr_str(ptr %t20) + %t21 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 25 + call void @finch.drop.S_cimport_CImports(ptr %t21) + %t22 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 28 + call void @finch.drop.arr_str(ptr %t22) + %t23 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 30 + call void @finch.drop.S_platform_Target(ptr %t23) + %t24 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 31 + call void @finch_str_drop(ptr %t24) + %t25 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 32 + call void @finch.drop.arr_str(ptr %t25) + %t26 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 33 + call void @finch.drop.map_str_int(ptr %t26) + %t27 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 34 + call void @finch.drop.arr_int(ptr %t27) + %t28 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 39 + call void @finch.drop.arr_str(ptr %t28) + %t29 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 40 + call void @finch_str_drop(ptr %t29) + %t30 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 41 + call void @finch_str_drop(ptr %t30) + %t31 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 42 + call void @finch_str_drop(ptr %t31) + ret void +} + define internal { ptr, i64, i64 } @finch.gen.generate({ ptr, i64, i64 } %p0, { ptr, i64, i64 } %p1, %S.cimport.CImports %p2, %S.gen.Options %p3) { entry: %a1 = alloca { ptr, i64, i64 }, align 16 @@ -76189,127 +91852,166 @@ entry: %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 + %a97 = 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 %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 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = 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 + %a114 = alloca { ptr, i64, i64 }, align 16 %a130 = alloca { ptr, i64, i64 }, 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 + %a135 = alloca { ptr, i64, i64 }, align 16 + %a137 = 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 + %a151 = alloca { ptr, i64, i64 }, align 16 + %a155 = alloca i64, align 16 + %a205 = alloca { ptr, i64, i64 }, align 16 + %a206 = alloca { ptr, i64, i64 }, align 16 + %a207 = alloca { ptr, i64, i64 }, align 16 + %a215 = alloca { ptr, i64, i64 }, align 16 + %a219 = alloca i64, align 16 + %a245 = alloca { ptr, i64, i64 }, 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 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a285 = alloca { ptr, i64, i64 }, align 16 + %a248 = alloca { ptr, i64, i64 }, align 16 + %a255 = alloca { ptr, i64, i64 }, align 16 + %a256 = alloca { ptr, i64, i64 }, align 16 + %a261 = alloca i64, align 16 + %a269 = alloca %S.gen.FnSig, align 16 + %a275 = alloca { ptr, i64, i64 }, align 16 + %a279 = alloca { ptr, i64, i64 }, align 16 %a286 = 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 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = 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 + %a296 = 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 + %a317 = alloca %S.gen.FnSig, align 16 + %a318 = alloca %S.gen.FnSig, align 16 + %a320 = alloca %S.gen.FnSig, align 16 + %a324 = 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 + %a332 = 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 + %a339 = 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 - %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 - %a354 = alloca { ptr, i64, i64 }, align 16 + %a344 = alloca { ptr, i64, i64 }, align 16 + %a346 = alloca { ptr, i64, i64 }, align 16 + %a347 = 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 - %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 %a363 = alloca { ptr, i64, i64 }, align 16 %a364 = alloca { ptr, i64, i64 }, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 + %a367 = alloca { ptr, i64, i64 }, align 16 + %a368 = 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 + %a380 = 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 + %a385 = 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 + %a389 = alloca { ptr, i64, i64 }, align 16 + %a390 = 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 - %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 + %a403 = alloca { ptr, i64, i64 }, align 16 + %a404 = alloca { ptr, i64, i64 }, align 16 + %a405 = alloca { ptr, i64, i64 }, align 16 %a408 = alloca { ptr, i64, i64 }, align 16 - %a412 = 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 %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 + %a421 = alloca { ptr, i64, i64 }, align 16 + %a422 = alloca { ptr, i64, i64 }, align 16 %a423 = alloca { ptr, i64, i64 }, align 16 - %a424 = alloca { ptr, i64, i64 }, align 16 + %a426 = alloca { ptr, i64, i64 }, align 16 + %a427 = 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 + %a432 = alloca { ptr, i64, i64 }, align 16 + %a433 = alloca { ptr, i64, i64 }, align 16 + %a434 = 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 + %a440 = 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 + %a444 = 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 + %a449 = alloca { ptr, i64, i64 }, align 16 + %a453 = 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 %a457 = alloca { ptr, i64, i64 }, align 16 + %a458 = 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 + %a463 = alloca { ptr, i64, i64 }, align 16 + %a467 = alloca { ptr, i64, i64 }, align 16 + %a468 = 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 + %a477 = alloca { ptr, i64, i64 }, align 16 + %a479 = 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 + %a489 = alloca { ptr, i64, i64 }, align 16 + %a490 = alloca { ptr, i64, i64 }, align 16 + %a491 = alloca { ptr, i64, i64 }, align 16 + %a492 = 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 + %a498 = alloca { ptr, i64, i64 }, align 16 + %a500 = alloca { ptr, i64, i64 }, align 16 + %a501 = alloca { ptr, i64, i64 }, align 16 + %a502 = alloca { ptr, i64, i64 }, align 16 + %a503 = 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 + %a509 = alloca { ptr, i64, i64 }, align 16 + %a511 = alloca { ptr, i64, i64 }, align 16 + %a512 = alloca { ptr, i64, i64 }, align 16 + %a513 = alloca { ptr, i64, i64 }, align 16 + %a514 = 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 @@ -76331,713 +92033,815 @@ entry: store %S.cimport.CImports %t18, ptr %a19 call void @finch.copy.S_cimport_CImports(ptr %a20, ptr %a19) %t21 = load %S.cimport.CImports, ptr %a20 - %t22 = insertvalue %S.gen.Gen %t17, %S.cimport.CImports %t21, 24 + %t22 = insertvalue %S.gen.Gen %t17, %S.cimport.CImports %t21, 25 %t23 = getelementptr inbounds %S.gen.Options, ptr %a4, i32 0, i32 0 %t24 = load i1, ptr %t23 - %t25 = insertvalue %S.gen.Gen %t22, i1 %t24, 25 + %t25 = insertvalue %S.gen.Gen %t22, i1 %t24, 26 %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 + %t28 = insertvalue %S.gen.Gen %t25, i1 %t27, 27 %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 + %t31 = insertvalue %S.gen.Gen %t28, i1 %t30, 29 %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 + %t37 = insertvalue %S.gen.Gen %t31, %S.platform.Target %t36, 30 %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 + %t43 = insertvalue %S.gen.Gen %t37, { ptr, i64, i64 } %t42, 31 + %t44 = insertvalue %S.gen.Gen %t43, i64 -1, 35 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 %panic8241, label %ok8242 -panic8241: - call void @finch_panic(ptr @.str.5704, i64 5127, ptr @.str.5705) + br i1 %t48, label %panic8700, label %ok8701 +panic8700: + call void @finch_panic(ptr @.str.5920, i64 5559, ptr @.str.5921) unreachable -ok8242: - %t49 = getelementptr inbounds %S.gen.Gen, ptr %t47, i32 0, i32 28 +ok8701: + %t49 = getelementptr inbounds %S.gen.Gen, ptr %t47, i32 0, i32 29 %t50 = load i1, ptr %t49 - br i1 %t50, label %then8243, label %endif8245 -then8243: + br i1 %t50, label %then8702, label %endif8704 +then8702: %t51 = load ptr, ptr %a46 %t52 = icmp eq ptr %t51, null - br i1 %t52, label %panic8246, label %ok8247 -panic8246: - call void @finch_panic(ptr @.str.5706, i64 5129, ptr @.str.5707) + br i1 %t52, label %panic8705, label %ok8706 +panic8705: + call void @finch_panic(ptr @.str.5922, i64 5561, ptr @.str.5923) unreachable -ok8247: - %t53 = getelementptr inbounds %S.gen.Gen, ptr %t51, i32 0, i32 31 +ok8706: + %t53 = getelementptr inbounds %S.gen.Gen, ptr %t51, i32 0, i32 32 %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.5708, i64 0, i64 0 }, ptr %t58 + store { ptr, i64, i64 } { ptr @.str.5924, 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 %panic8248, label %ok8249 -panic8248: - call void @finch_panic(ptr @.str.5709, i64 5130, ptr @.str.5710) + br i1 %t60, label %panic8707, label %ok8708 +panic8707: + call void @finch_panic(ptr @.str.5925, i64 5562, ptr @.str.5926) unreachable -ok8249: - %t61 = getelementptr inbounds %S.gen.Gen, ptr %t59, i32 0, i32 31 +ok8708: + %t61 = getelementptr inbounds %S.gen.Gen, ptr %t59, i32 0, i32 32 %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.5711, i64 33, i64 0 }, ptr %t66 + store { ptr, i64, i64 } { ptr @.str.5927, 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 %panic8250, label %ok8251 -panic8250: - call void @finch_panic(ptr @.str.5712, i64 5131, ptr @.str.5713) + br i1 %t68, label %panic8709, label %ok8710 +panic8709: + call void @finch_panic(ptr @.str.5928, i64 5563, ptr @.str.5929) unreachable -ok8251: - %t69 = getelementptr inbounds %S.gen.Gen, ptr %t67, i32 0, i32 31 +ok8710: + %t69 = getelementptr inbounds %S.gen.Gen, ptr %t67, i32 0, i32 32 %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.5714, i64 38, i64 0 }, ptr %t74 + store { ptr, i64, i64 } { ptr @.str.5930, i64 38, i64 0 }, ptr %t74 store i64 %t72, ptr %t70 store i64 0, ptr %a75 - br label %each.cond8252 -each.cond8252: + br label %each.cond8711 +each.cond8711: %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.body8253, label %each.end8255 -each.body8253: + br i1 %t79, label %each.body8712, label %each.end8714 +each.body8712: %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 %panic8256, label %ok8257 -panic8256: - call void @finch_panic(ptr @.str.5715, i64 5133, ptr @.str.5716) + br i1 %t85, label %panic8715, label %ok8716 +panic8715: + call void @finch_panic(ptr @.str.5931, i64 5565, ptr @.str.5932) unreachable -ok8257: - %t86 = getelementptr inbounds %S.gen.Gen, ptr %t84, i32 0, i32 33 +ok8716: + %t86 = getelementptr inbounds %S.gen.Gen, ptr %t84, i32 0, i32 34 %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.5717, i64 19, i64 0 }, ptr %a91 + store { ptr, i64, i64 } { ptr @.str.5933, 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.5718, i64 15, i64 0 }, ptr %a96 + store { ptr, i64, i64 } { ptr @.str.5934, 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 %panic8258, label %ok8259 -panic8258: - call void @finch_panic(ptr @.str.5719, i64 5133, ptr @.str.5720) + store { ptr, i64, i64 } %t93, ptr %a97 + call void @finch_str_drop(ptr %a97) + %t98 = load { ptr, i64, i64 }, ptr %a94 + %t99 = load ptr, ptr %a46 + %t100 = icmp eq ptr %t99, null + br i1 %t100, label %panic8717, label %ok8718 +panic8717: + call void @finch_panic(ptr @.str.5935, i64 5565, ptr @.str.5936) unreachable -ok8259: - %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.5721, 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.step8254 -each.step8254: - %t115 = load i64, ptr %a75 +ok8718: + %t101 = getelementptr inbounds %S.gen.Gen, ptr %t99, i32 0, i32 31 + %t102 = load { ptr, i64, i64 }, ptr %t101 + store { ptr, i64, i64 } %t98, ptr %a104 + store { ptr, i64, i64 } %t102, ptr %a105 + call void @finch_str_concat(ptr %a103, ptr %a104, ptr %a105) + store { ptr, i64, i64 } %t98, ptr %a106 + call void @finch_str_drop(ptr %a106) + %t107 = load { ptr, i64, i64 }, ptr %a103 + store { ptr, i64, i64 } %t107, ptr %a109 + store { ptr, i64, i64 } { ptr @.str.5937, i64 2, i64 0 }, ptr %a110 + call void @finch_str_concat(ptr %a108, ptr %a109, ptr %a110) + store { ptr, i64, i64 } %t107, ptr %a111 + call void @finch_str_drop(ptr %a111) + %t112 = load { ptr, i64, i64 }, ptr %a108 + %t113 = call i64 @finch.gen.md(ptr %t88, { ptr, i64, i64 } %t112) + store { ptr, i64, i64 } %t112, ptr %a114 + call void @finch_str_drop(ptr %a114) + %t115 = load i64, ptr %t87 %t116 = add i64 %t115, 1 - store i64 %t116, ptr %a75 - br label %each.cond8252 -each.end8255: - %t117 = load ptr, ptr %a46 - %t118 = icmp eq ptr %t117, null - br i1 %t118, label %panic8260, label %ok8261 -panic8260: - call void @finch_panic(ptr @.str.5723, i64 5135, ptr @.str.5724) + call void @finch_arr_reserve(ptr %t86, i64 %t116, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) + %t117 = load ptr, ptr %t86 + %t118 = getelementptr inbounds i64, ptr %t117, i64 %t115 + store i64 %t113, ptr %t118 + store i64 %t116, ptr %t87 + br label %each.step8713 +each.step8713: + %t119 = load i64, ptr %a75 + %t120 = add i64 %t119, 1 + store i64 %t120, ptr %a75 + br label %each.cond8711 +each.end8714: + %t121 = load ptr, ptr %a46 + %t122 = icmp eq ptr %t121, null + br i1 %t122, label %panic8719, label %ok8720 +panic8719: + call void @finch_panic(ptr @.str.5939, i64 5567, ptr @.str.5940) unreachable -ok8261: - %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 %range8262, label %inrange8263 -range8262: - call void @finch_panic_index(ptr @.str.5725, i64 5135, i64 0, i64 %t121) +ok8720: + %t123 = getelementptr inbounds %S.gen.Gen, ptr %t121, i32 0, i32 34 + %t124 = load { ptr, i64, i64 }, ptr %t123 + %t125 = extractvalue { ptr, i64, i64 } %t124, 1 + %t126 = icmp uge i64 0, %t125 + br i1 %t126, label %range8721, label %inrange8722 +range8721: + call void @finch_panic_index(ptr @.str.5941, i64 5567, i64 0, i64 %t125) unreachable -inrange8263: - %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.5722, 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.5726, i64 84, i64 0 }, ptr %a134 +inrange8722: + %t127 = extractvalue { ptr, i64, i64 } %t124, 0 + %t128 = getelementptr inbounds i64, ptr %t127, i64 0 + %t129 = load i64, ptr %t128 + call void @finch_str_from_int(ptr %a130, i64 %t129) + %t131 = load { ptr, i64, i64 }, ptr %a130 + store { ptr, i64, i64 } { ptr @.str.5938, i64 52, i64 0 }, ptr %a133 + store { ptr, i64, i64 } %t131, 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 %panic8264, label %ok8265 -panic8264: - call void @finch_panic(ptr @.str.5727, i64 5135, ptr @.str.5728) + store { ptr, i64, i64 } %t131, ptr %a135 + call void @finch_str_drop(ptr %a135) + %t136 = load { ptr, i64, i64 }, ptr %a132 + store { ptr, i64, i64 } %t136, ptr %a138 + store { ptr, i64, i64 } { ptr @.str.5942, i64 84, i64 0 }, ptr %a139 + call void @finch_str_concat(ptr %a137, ptr %a138, ptr %a139) + store { ptr, i64, i64 } %t136, ptr %a140 + call void @finch_str_drop(ptr %a140) + %t141 = load { ptr, i64, i64 }, ptr %a137 + %t142 = load ptr, ptr %a46 + %t143 = icmp eq ptr %t142, null + br i1 %t143, label %panic8723, label %ok8724 +panic8723: + call void @finch_panic(ptr @.str.5943, i64 5567, ptr @.str.5944) unreachable -ok8265: - %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 %range8266, label %inrange8267 -range8266: - call void @finch_panic_index(ptr @.str.5729, i64 5135, i64 0, i64 %t140) +ok8724: + %t144 = getelementptr inbounds %S.gen.Gen, ptr %t142, i32 0, i32 32 + %t145 = load { ptr, i64, i64 }, ptr %t144 + %t146 = extractvalue { ptr, i64, i64 } %t145, 1 + %t147 = icmp uge i64 0, %t146 + br i1 %t147, label %range8725, label %inrange8726 +range8725: + call void @finch_panic_index(ptr @.str.5945, i64 5567, i64 0, i64 %t146) unreachable -inrange8267: - %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 %endif8245 -endif8245: - %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.5730, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.5731, i64 4, i64 0 }) - store i64 %t146, ptr %a147 - %t148 = load i1, ptr %a7 - br i1 %t148, label %then8268, label %else8269 -then8268: - %t149 = load i64, ptr %a147 - %t150 = icmp sge i64 %t149, 0 - br i1 %t150, label %then8271, label %endif8273 -then8271: - %t151 = load ptr, ptr %a46 +inrange8726: + %t148 = extractvalue { ptr, i64, i64 } %t145, 0 + %t149 = getelementptr inbounds { ptr, i64, i64 }, ptr %t148, i64 0 + %t150 = load { ptr, i64, i64 }, ptr %t149 + store { ptr, i64, i64 } %t141, ptr %t149 + store { ptr, i64, i64 } %t150, ptr %a151 + call void @finch_str_drop(ptr %a151) + br label %endif8704 +endif8704: %t152 = load ptr, ptr %a46 - %t153 = icmp eq ptr %t152, null - br i1 %t153, label %panic8274, label %ok8275 -panic8274: - call void @finch_panic(ptr @.str.5732, i64 5141, ptr @.str.5733) + call void @finch.gen.declare(ptr %t152) + %t153 = load ptr, ptr %a46 + %t154 = call i64 @finch.gen.findFn(ptr %t153, { ptr, i64, i64 } { ptr @.str.5946, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.5947, i64 4, i64 0 }) + store i64 %t154, ptr %a155 + %t156 = load i1, ptr %a7 + br i1 %t156, label %then8727, label %else8728 +then8727: + %t157 = load i64, ptr %a155 + %t158 = icmp sge i64 %t157, 0 + br i1 %t158, label %then8730, label %endif8732 +then8730: + %t159 = load ptr, ptr %a46 + %t160 = load ptr, ptr %a46 + %t161 = icmp eq ptr %t160, null + br i1 %t161, label %panic8733, label %ok8734 +panic8733: + call void @finch_panic(ptr @.str.5948, i64 5573, ptr @.str.5949) unreachable -ok8275: - %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 %panic8276, label %ok8277 -panic8276: - call void @finch_panic(ptr @.str.5734, i64 5141, ptr @.str.5735) +ok8734: + %t162 = getelementptr inbounds %S.gen.Gen, ptr %t160, i32 0, i32 0 + %t163 = load ptr, ptr %a46 + %t164 = icmp eq ptr %t163, null + br i1 %t164, label %panic8735, label %ok8736 +panic8735: + call void @finch_panic(ptr @.str.5950, i64 5573, ptr @.str.5951) unreachable -ok8277: - %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 %range8278, label %inrange8279 -range8278: - call void @finch_panic_index(ptr @.str.5736, i64 5141, i64 %t158, i64 %t160) +ok8736: + %t165 = getelementptr inbounds %S.gen.Gen, ptr %t163, i32 0, i32 15 + %t166 = load i64, ptr %a155 + %t167 = load { ptr, i64, i64 }, ptr %t165 + %t168 = extractvalue { ptr, i64, i64 } %t167, 1 + %t169 = icmp uge i64 %t166, %t168 + br i1 %t169, label %range8737, label %inrange8738 +range8737: + call void @finch_panic_index(ptr @.str.5952, i64 5573, i64 %t166, i64 %t168) unreachable -inrange8279: - %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 %range8280, label %inrange8281 -range8280: - call void @finch_panic_index(ptr @.str.5737, i64 5141, i64 %t165, i64 %t167) +inrange8738: + %t170 = extractvalue { ptr, i64, i64 } %t167, 0 + %t171 = getelementptr inbounds %S.gen.FnSig, ptr %t170, i64 %t166 + %t172 = getelementptr inbounds %S.gen.FnSig, ptr %t171, i32 0, i32 16 + %t173 = load i64, ptr %t172 + %t174 = load { ptr, i64, i64 }, ptr %t162 + %t175 = extractvalue { ptr, i64, i64 } %t174, 1 + %t176 = icmp uge i64 %t173, %t175 + br i1 %t176, label %range8739, label %inrange8740 +range8739: + call void @finch_panic_index(ptr @.str.5953, i64 5573, i64 %t173, i64 %t175) unreachable -inrange8281: - %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 %panic8282, label %ok8283 -panic8282: - call void @finch_panic(ptr @.str.5738, i64 5141, ptr @.str.5739) +inrange8740: + %t177 = extractvalue { ptr, i64, i64 } %t174, 0 + %t178 = getelementptr inbounds %S.ast.Program, ptr %t177, i64 %t173 + %t179 = getelementptr inbounds %S.ast.Program, ptr %t178, i32 0, i32 8 + %t180 = load ptr, ptr %a46 + %t181 = icmp eq ptr %t180, null + br i1 %t181, label %panic8741, label %ok8742 +panic8741: + call void @finch_panic(ptr @.str.5954, i64 5573, ptr @.str.5955) unreachable -ok8283: - %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 %range8284, label %inrange8285 -range8284: - call void @finch_panic_index(ptr @.str.5740, i64 5141, i64 %t175, i64 %t177) +ok8742: + %t182 = getelementptr inbounds %S.gen.Gen, ptr %t180, i32 0, i32 15 + %t183 = load i64, ptr %a155 + %t184 = load { ptr, i64, i64 }, ptr %t182 + %t185 = extractvalue { ptr, i64, i64 } %t184, 1 + %t186 = icmp uge i64 %t183, %t185 + br i1 %t186, label %range8743, label %inrange8744 +range8743: + call void @finch_panic_index(ptr @.str.5956, i64 5573, i64 %t183, i64 %t185) unreachable -inrange8285: - %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 %range8286, label %inrange8287 -range8286: - call void @finch_panic_index(ptr @.str.5741, i64 5141, i64 %t182, i64 %t184) - unreachable -inrange8287: - %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.5742, i64 82, i64 0 }) - br label %endif8273 -endif8273: - br label %endif8270 -else8269: - %t189 = load i64, ptr %a147 - %t190 = icmp slt i64 %t189, 0 - br i1 %t190, label %then8288, label %endif8290 -then8288: - %t191 = load { ptr, i64, i64 }, ptr %a2 +inrange8744: + %t187 = extractvalue { ptr, i64, i64 } %t184, 0 + %t188 = getelementptr inbounds %S.gen.FnSig, ptr %t187, i64 %t183 + %t189 = getelementptr inbounds %S.gen.FnSig, ptr %t188, i32 0, i32 17 + %t190 = load i64, ptr %t189 + %t191 = load { ptr, i64, i64 }, ptr %t179 %t192 = extractvalue { ptr, i64, i64 } %t191, 1 - %t193 = icmp uge i64 0, %t192 - br i1 %t193, label %range8291, label %inrange8292 -range8291: - call void @finch_panic_index(ptr @.str.5743, i64 5144, i64 0, i64 %t192) + %t193 = icmp uge i64 %t190, %t192 + br i1 %t193, label %range8745, label %inrange8746 +range8745: + call void @finch_panic_index(ptr @.str.5957, i64 5573, i64 %t190, i64 %t192) unreachable -inrange8292: +inrange8746: %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.5744, 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.5745, ptr %t203 - %t206 = call i32 (ptr, ...) @printf(ptr @.str.5746, i32 %t202, ptr %t205) - %t207 = call i32 (ptr, ...) @printf(ptr @.str.5747) - %t208 = trunc i64 1 to i32 - %t209 = call i32 @fflush(ptr null) - call void @exit(i32 %t208) - br label %endif8290 -endif8290: - br label %endif8270 -endif8270: - store i64 0, ptr %a210 - br label %while.cond8293 -while.cond8293: - %t211 = load i64, ptr %a210 - %t212 = load ptr, ptr %a46 - %t213 = icmp eq ptr %t212, null - br i1 %t213, label %panic8296, label %ok8297 -panic8296: - call void @finch_panic(ptr @.str.5748, i64 5149, ptr @.str.5749) + %t195 = getelementptr inbounds %S.ast.Node, ptr %t194, i64 %t190 + %t196 = load %S.ast.Node, ptr %t195 + call void @finch.gen.fail(ptr %t159, %S.ast.Node %t196, { ptr, i64, i64 } { ptr @.str.5958, i64 82, i64 0 }) + br label %endif8732 +endif8732: + br label %endif8729 +else8728: + %t197 = load i64, ptr %a155 + %t198 = icmp slt i64 %t197, 0 + br i1 %t198, label %then8747, label %endif8749 +then8747: + %t199 = load { ptr, i64, i64 }, ptr %a2 + %t200 = extractvalue { ptr, i64, i64 } %t199, 1 + %t201 = icmp uge i64 0, %t200 + br i1 %t201, label %range8750, label %inrange8751 +range8750: + call void @finch_panic_index(ptr @.str.5959, i64 5576, i64 0, i64 %t200) unreachable -ok8297: - %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.body8294, label %while.end8295 -while.body8294: - %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.cond8293 -while.end8295: - %t222 = load ptr, ptr %a46 - %t223 = icmp eq ptr %t222, null - br i1 %t223, label %panic8298, label %ok8299 -panic8298: - call void @finch_panic(ptr @.str.5750, i64 5153, ptr @.str.5751) +inrange8751: + %t202 = extractvalue { ptr, i64, i64 } %t199, 0 + %t203 = getelementptr inbounds { ptr, i64, i64 }, ptr %t202, i64 0 + %t204 = load { ptr, i64, i64 }, ptr %t203 + store { ptr, i64, i64 } %t204, ptr %a206 + store { ptr, i64, i64 } { ptr @.str.5960, i64 64, i64 0 }, ptr %a207 + call void @finch_str_concat(ptr %a205, ptr %a206, ptr %a207) + %t208 = load { ptr, i64, i64 }, ptr %a205 + %t209 = extractvalue { ptr, i64, i64 } %t208, 1 + %t210 = trunc i64 %t209 to i32 + %t211 = extractvalue { ptr, i64, i64 } %t208, 0 + %t212 = icmp eq ptr %t211, null + %t213 = select i1 %t212, ptr @.str.5961, ptr %t211 + %t214 = call i32 (ptr, ...) @printf(ptr @.str.5962, i32 %t210, ptr %t213) + store { ptr, i64, i64 } %t208, ptr %a215 + call void @finch_str_drop(ptr %a215) + %t216 = call i32 (ptr, ...) @printf(ptr @.str.5963) + %t217 = trunc i64 1 to i32 + %t218 = call i32 @fflush(ptr null) + call void @exit(i32 %t217) + br label %endif8749 +endif8749: + br label %endif8729 +endif8729: + store i64 0, ptr %a219 + br label %while.cond8752 +while.cond8752: + %t220 = load i64, ptr %a219 + %t221 = load ptr, ptr %a46 + %t222 = icmp eq ptr %t221, null + br i1 %t222, label %panic8755, label %ok8756 +panic8755: + call void @finch_panic(ptr @.str.5964, i64 5581, ptr @.str.5965) unreachable -ok8299: - %t224 = getelementptr inbounds %S.gen.Gen, ptr %t222, i32 0, i32 26 - %t225 = load i1, ptr %t224 - br i1 %t225, label %then8300, label %endif8302 -then8300: - %t226 = load ptr, ptr %a46 - %t227 = icmp eq ptr %t226, null - br i1 %t227, label %panic8303, label %ok8304 -panic8303: - call void @finch_panic(ptr @.str.5752, i64 5154, ptr @.str.5753) +ok8756: + %t223 = getelementptr inbounds %S.gen.Gen, ptr %t221, i32 0, i32 15 + %t224 = getelementptr inbounds { ptr, i64, i64 }, ptr %t223, i32 0, i32 1 + %t225 = load i64, ptr %t224 + %t226 = icmp slt i64 %t220, %t225 + br i1 %t226, label %while.body8753, label %while.end8754 +while.body8753: + %t227 = load ptr, ptr %a46 + %t228 = load i64, ptr %a219 + call void @finch.gen.define(ptr %t227, i64 %t228) + %t229 = load i64, ptr %a219 + %t230 = add i64 %t229, 1 + store i64 %t230, ptr %a219 + br label %while.cond8752 +while.end8754: + %t231 = load ptr, ptr %a46 + %t232 = icmp eq ptr %t231, null + br i1 %t232, label %panic8757, label %ok8758 +panic8757: + call void @finch_panic(ptr @.str.5966, i64 5585, ptr @.str.5967) unreachable -ok8304: - %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 %range8305, label %inrange8306 -range8305: - call void @finch_panic_index(ptr @.str.5754, i64 5154, i64 0, i64 %t230) +ok8758: + %t233 = getelementptr inbounds %S.gen.Gen, ptr %t231, i32 0, i32 27 + %t234 = load i1, ptr %t233 + br i1 %t234, label %then8759, label %endif8761 +then8759: + %t235 = load ptr, ptr %a46 + %t236 = icmp eq ptr %t235, null + br i1 %t236, label %panic8762, label %ok8763 +panic8762: + call void @finch_panic(ptr @.str.5968, i64 5586, ptr @.str.5969) unreachable -inrange8306: - %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 %panic8307, label %ok8308 -panic8307: - call void @finch_panic(ptr @.str.5755, i64 5156, ptr @.str.5756) +ok8763: + %t237 = getelementptr inbounds %S.gen.Gen, ptr %t235, i32 0, i32 0 + %t238 = load { ptr, i64, i64 }, ptr %t237 + %t239 = extractvalue { ptr, i64, i64 } %t238, 1 + %t240 = icmp uge i64 0, %t239 + br i1 %t240, label %range8764, label %inrange8765 +range8764: + call void @finch_panic_index(ptr @.str.5970, i64 5586, i64 0, i64 %t239) unreachable -ok8308: - %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.5757, 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 -endif8302: +inrange8765: + %t241 = extractvalue { ptr, i64, i64 } %t238, 0 + %t242 = getelementptr inbounds %S.ast.Program, ptr %t241, i64 0 + %t243 = getelementptr inbounds %S.ast.Program, ptr %t242, i32 0, i32 2 + %t244 = load { ptr, i64, i64 }, ptr %t243 + store { ptr, i64, i64 } %t244, 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 %a248 %t249 = load ptr, ptr %a46 - %t250 = icmp eq ptr %t249, null - br i1 %t250, label %panic8309, label %ok8310 -panic8309: - call void @finch_panic(ptr @.str.5758, i64 5158, ptr @.str.5759) + %t250 = load { ptr, i64, i64 }, ptr %a248 + call void @finch.gen.indexAll(ptr %t249, { ptr, i64, i64 } %t250) + %t251 = load ptr, ptr %a46 + %t252 = icmp eq ptr %t251, null + br i1 %t252, label %panic8766, label %ok8767 +panic8766: + call void @finch_panic(ptr @.str.5971, i64 5588, ptr @.str.5972) unreachable -ok8310: - %t251 = getelementptr inbounds %S.gen.Gen, ptr %t249, i32 0, i32 14 - store i64 0, ptr %a252 - br label %each.cond8311 -each.cond8311: - %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.body8312, label %each.end8314 -each.body8312: - %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 %then8315, label %endif8317 -then8315: - %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 %endif8317 -endif8317: - br label %each.step8313 -each.step8313: - %t266 = load i64, ptr %a252 - %t267 = add i64 %t266, 1 - store i64 %t267, ptr %a252 - br label %each.cond8311 -each.end8314: - %t268 = load i1, ptr %a7 - br i1 %t268, label %then8318, label %endif8320 -then8318: - store { ptr, i64, i64 } { ptr @.str.5760, i64 0, i64 0 }, ptr %a269 - %t270 = load ptr, ptr %a46 - %t271 = icmp eq ptr %t270, null - br i1 %t271, label %panic8321, label %ok8322 -panic8321: - call void @finch_panic(ptr @.str.5761, i64 5166, ptr @.str.5762) +ok8767: + %t253 = getelementptr inbounds %S.gen.Gen, ptr %t251, i32 0, i32 28 + %t254 = getelementptr inbounds { ptr, i64, i64 }, ptr %t253, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.5973, i64 1, i64 0 }, ptr %a255 + call void @finch_str_join(ptr %a256, ptr %t253, ptr %a255) + %t257 = load { ptr, i64, i64 }, ptr %a256 + call void @finch.drop.arr_str(ptr %a248) + call void @finch.drop.S_gen_Gen(ptr %a45) + ret { ptr, i64, i64 } %t257 +endif8761: + %t258 = load ptr, ptr %a46 + %t259 = icmp eq ptr %t258, null + br i1 %t259, label %panic8791, label %ok8792 +panic8791: + call void @finch_panic(ptr @.str.5974, i64 5590, ptr @.str.5975) unreachable -ok8322: - %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 %then8323, label %endif8325 -then8323: - store { ptr, i64, i64 } { ptr @.str.5763, i64 10, i64 0 }, ptr %a269 - br label %endif8325 -endif8325: - %t275 = load ptr, ptr %a46 - %t276 = icmp eq ptr %t275, null - br i1 %t276, label %panic8326, label %ok8327 -panic8326: - call void @finch_panic(ptr @.str.5764, i64 5169, ptr @.str.5765) +ok8792: + %t260 = getelementptr inbounds %S.gen.Gen, ptr %t258, i32 0, i32 15 + store i64 0, ptr %a261 + br label %each.cond8793 +each.cond8793: + %t262 = getelementptr inbounds { ptr, i64, i64 }, ptr %t260, i32 0, i32 1 + %t263 = load i64, ptr %t262 + %t264 = load i64, ptr %a261 + %t265 = icmp slt i64 %t264, %t263 + br i1 %t265, label %each.body8794, label %each.end8796 +each.body8794: + %t266 = load ptr, ptr %t260 + %t267 = getelementptr inbounds %S.gen.FnSig, ptr %t266, i64 %t264 + %t268 = load %S.gen.FnSig, ptr %t267 + store %S.gen.FnSig %t268, ptr %a269 + %t270 = getelementptr inbounds %S.gen.FnSig, ptr %a269, i32 0, i32 5 + %t271 = load i1, ptr %t270 + br i1 %t271, label %then8797, label %endif8799 +then8797: + %t272 = load ptr, ptr %a46 + %t273 = load %S.gen.FnSig, ptr %a269 + %t274 = call { ptr, i64, i64 } @finch.gen.exportWrapper(ptr %t272, %S.gen.FnSig %t273) + store { ptr, i64, i64 } %t274, ptr %a275 + call void @finch_str_drop(ptr %a275) + br label %endif8799 +endif8799: + br label %each.step8795 +each.step8795: + %t276 = load i64, ptr %a261 + %t277 = add i64 %t276, 1 + store i64 %t277, ptr %a261 + br label %each.cond8793 +each.end8796: + %t278 = load i1, ptr %a7 + br i1 %t278, label %then8800, label %endif8802 +then8800: + store { ptr, i64, i64 } { ptr @.str.5976, i64 0, i64 0 }, ptr %a279 + %t280 = load ptr, ptr %a46 + %t281 = icmp eq ptr %t280, null + br i1 %t281, label %panic8803, label %ok8804 +panic8803: + call void @finch_panic(ptr @.str.5977, i64 5598, ptr @.str.5978) unreachable -ok8327: - %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.5766, 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.5767, 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 -endif8320: - %t294 = load ptr, ptr %a46 - %t295 = icmp eq ptr %t294, null - br i1 %t295, label %panic8328, label %ok8329 -panic8328: - call void @finch_panic(ptr @.str.5768, i64 5173, ptr @.str.5769) +ok8804: + %t282 = getelementptr inbounds %S.gen.Gen, ptr %t280, i32 0, i32 30 + %t283 = getelementptr inbounds %S.platform.Target, ptr %t282, i32 0, i32 1 + %t284 = load i1, ptr %t283 + br i1 %t284, label %then8805, label %endif8807 +then8805: + %t285 = load { ptr, i64, i64 }, ptr %a279 + store { ptr, i64, i64 } { ptr @.str.5979, i64 10, i64 0 }, ptr %a279 + store { ptr, i64, i64 } %t285, ptr %a286 + call void @finch_str_drop(ptr %a286) + br label %endif8807 +endif8807: + %t287 = load ptr, ptr %a46 + %t288 = icmp eq ptr %t287, null + br i1 %t288, label %panic8808, label %ok8809 +panic8808: + call void @finch_panic(ptr @.str.5980, i64 5601, ptr @.str.5981) unreachable -ok8329: - %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 %range8330, label %inrange8331 -range8330: - call void @finch_panic_index(ptr @.str.5770, i64 5173, i64 %t297, i64 %t299) +ok8809: + %t289 = getelementptr inbounds %S.gen.Gen, ptr %t287, i32 0, i32 3 + %t290 = getelementptr inbounds { ptr, i64, i64 }, ptr %t289, i32 0, i32 1 + %t291 = load { ptr, i64, i64 }, ptr %a279 + store { ptr, i64, i64 } { ptr @.str.5982, i64 6, i64 0 }, ptr %a293 + store { ptr, i64, i64 } %t291, ptr %a294 + 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.5983, i64 107, i64 0 }, ptr %a298 + call void @finch_str_concat(ptr %a296, ptr %a297, ptr %a298) + store { ptr, i64, i64 } %t295, ptr %a299 + call void @finch_str_drop(ptr %a299) + %t300 = load { ptr, i64, i64 }, ptr %a296 + %t301 = load i64, ptr %t290 + %t302 = add i64 %t301, 1 + call void @finch_arr_reserve(ptr %t289, i64 %t302, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t303 = load ptr, ptr %t289 + %t304 = getelementptr inbounds { ptr, i64, i64 }, ptr %t303, i64 %t301 + store { ptr, i64, i64 } %t300, ptr %t304 + store i64 %t302, ptr %t290 + %t305 = load ptr, ptr %a46 + %t306 = call { ptr, i64, i64 } @finch.gen.assemble(ptr %t305) + call void @finch_str_drop(ptr %a279) + call void @finch.drop.S_gen_Gen(ptr %a45) + ret { ptr, i64, i64 } %t306 +endif8802: + %t307 = load ptr, ptr %a46 + %t308 = icmp eq ptr %t307, null + br i1 %t308, label %panic8810, label %ok8811 +panic8810: + call void @finch_panic(ptr @.str.5984, i64 5605, ptr @.str.5985) unreachable -inrange8331: - %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.5771, 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 %a316 - store { ptr, i64, i64 } { ptr @.str.5772, 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.5773, 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.5774, 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 %then8332, label %endif8334 -then8332: - store { ptr, i64, i64 } { ptr @.str.5775, 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.5776, i64 20, i64 0 }, ptr %a338 +ok8811: + %t309 = getelementptr inbounds %S.gen.Gen, ptr %t307, i32 0, i32 15 + %t310 = load i64, ptr %a155 + %t311 = load { ptr, i64, i64 }, ptr %t309 + %t312 = extractvalue { ptr, i64, i64 } %t311, 1 + %t313 = icmp uge i64 %t310, %t312 + br i1 %t313, label %range8812, label %inrange8813 +range8812: + call void @finch_panic_index(ptr @.str.5986, i64 5605, i64 %t310, i64 %t312) + unreachable +inrange8813: + %t314 = extractvalue { ptr, i64, i64 } %t311, 0 + %t315 = getelementptr inbounds %S.gen.FnSig, ptr %t314, i64 %t310 + %t316 = load %S.gen.FnSig, ptr %t315 + store %S.gen.FnSig %t316, ptr %a317 + call void @finch.copy.S_gen_FnSig(ptr %a318, ptr %a317) + %t319 = load %S.gen.FnSig, ptr %a318 + store %S.gen.FnSig %t319, ptr %a320 + %t321 = load ptr, ptr %a46 + %t322 = load %S.gen.FnSig, ptr %a320 + %t323 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t321, %S.gen.FnSig %t322) + store { ptr, i64, i64 } { ptr @.str.5987, i64 5, i64 0 }, ptr %a325 + store { ptr, i64, i64 } %t323, ptr %a326 + call void @finch_str_concat(ptr %a324, ptr %a325, ptr %a326) + store { ptr, i64, i64 } %t323, ptr %a327 + call void @finch_str_drop(ptr %a327) + %t328 = load { ptr, i64, i64 }, ptr %a324 + store { ptr, i64, i64 } %t328, ptr %a330 + store { ptr, i64, i64 } { ptr @.str.5988, i64 1, i64 0 }, ptr %a331 + call void @finch_str_concat(ptr %a329, ptr %a330, ptr %a331) + store { ptr, i64, i64 } %t328, ptr %a332 + call void @finch_str_drop(ptr %a332) + %t333 = load { ptr, i64, i64 }, ptr %a329 + %t334 = getelementptr inbounds %S.gen.FnSig, ptr %a320, i32 0, i32 11 + %t335 = load { ptr, i64, i64 }, ptr %t334 + store { ptr, i64, i64 } %t333, ptr %a337 + store { ptr, i64, i64 } %t335, 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 %endif8334 -endif8334: - %t340 = load { ptr, i64, i64 }, ptr %a329 + store { ptr, i64, i64 } %t333, ptr %a339 + call void @finch_str_drop(ptr %a339) + %t340 = load { ptr, i64, i64 }, ptr %a336 store { ptr, i64, i64 } %t340, ptr %a342 - store { ptr, i64, i64 } { ptr @.str.5777, i64 1, i64 0 }, ptr %a343 + store { ptr, i64, i64 } { ptr @.str.5989, 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.5778, 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 %then8335, label %else8336 -then8335: - %t348 = load { ptr, i64, i64 }, ptr %a329 - store { ptr, i64, i64 } { ptr @.str.5779, 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.5780, 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.5781, 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.5782, 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.5783, i64 21, i64 0 }, ptr %a374 + store { ptr, i64, i64 } %t340, ptr %a344 + call void @finch_str_drop(ptr %a344) + %t345 = load { ptr, i64, i64 }, ptr %a341 + store { ptr, i64, i64 } %t345, ptr %a346 + store { ptr, i64, i64 } { ptr @.str.5990, i64 0, i64 0 }, ptr %a347 + %t348 = getelementptr inbounds %S.gen.FnSig, ptr %a320, i32 0, i32 13 + %t349 = getelementptr inbounds { ptr, i64, i64 }, ptr %t348, i32 0, i32 1 + %t350 = load i64, ptr %t349 + %t351 = icmp eq i64 %t350, 1 + br i1 %t351, label %then8814, label %endif8816 +then8814: + %t352 = load { ptr, i64, i64 }, ptr %a347 + store { ptr, i64, i64 } { ptr @.str.5991, i64 133, i64 0 }, ptr %a347 + store { ptr, i64, i64 } %t352, ptr %a353 + call void @finch_str_drop(ptr %a353) + %t354 = load { ptr, i64, i64 }, ptr %a346 + store { ptr, i64, i64 } %t354, ptr %a356 + store { ptr, i64, i64 } { ptr @.str.5992, i64 20, 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 %a346 + store { ptr, i64, i64 } %t358, ptr %a346 + store { ptr, i64, i64 } %t359, ptr %a360 + call void @finch_str_drop(ptr %a360) + br label %endif8816 +endif8816: + %t361 = load { ptr, i64, i64 }, ptr %a346 + store { ptr, i64, i64 } %t361, ptr %a363 + store { ptr, i64, i64 } { ptr @.str.5993, i64 1, i64 0 }, ptr %a364 + call void @finch_str_concat(ptr %a362, ptr %a363, ptr %a364) + %t365 = load { ptr, i64, i64 }, ptr %a362 + %t366 = load { ptr, i64, i64 }, ptr %a346 + store { ptr, i64, i64 } %t365, ptr %a346 + store { ptr, i64, i64 } %t366, ptr %a367 + call void @finch_str_drop(ptr %a367) + store { ptr, i64, i64 } { ptr @.str.5994, i64 12, i64 0 }, ptr %a368 + %t369 = getelementptr inbounds %S.gen.FnSig, ptr %a320, i32 0, i32 9 + %t370 = load i1, ptr %t369 + br i1 %t370, label %then8817, label %else8818 +then8817: + %t371 = load { ptr, i64, i64 }, ptr %a346 + store { ptr, i64, i64 } { ptr @.str.5995, i64 5, i64 0 }, ptr %a373 + store { ptr, i64, i64 } %t371, 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.5784, 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.5785, i64 20, i64 0 }, ptr %a388 - call void @finch_str_concat(ptr %a386, ptr %a387, ptr %a388) - %t389 = load { ptr, i64, i64 }, ptr %a386 - %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.5786, 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.5787, 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.5788, 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 %then8338, label %endif8340 -then8338: - %t411 = load { ptr, i64, i64 }, ptr %a370 - store { ptr, i64, i64 } { ptr @.str.5789, 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.5790, 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 %a345 - br label %endif8340 -endif8340: - br label %endif8337 -else8336: - %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.5791, 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 %then8341, label %endif8343 -then8341: - %t427 = load { ptr, i64, i64 }, ptr %a329 - store { ptr, i64, i64 } { ptr @.str.5792, 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.5793, i64 46, i64 0 }, ptr %a345 - br label %endif8343 -endif8343: - br label %endif8337 -endif8337: - %t432 = load ptr, ptr %a46 - %t433 = icmp eq ptr %t432, null - br i1 %t433, label %panic8344, label %ok8345 -panic8344: - call void @finch_panic(ptr @.str.5794, i64 5198, ptr @.str.5795) + %t376 = load { ptr, i64, i64 }, ptr %a346 + store { ptr, i64, i64 } %t375, ptr %a346 + store { ptr, i64, i64 } %t376, ptr %a377 + call void @finch_str_drop(ptr %a377) + %t378 = load { ptr, i64, i64 }, ptr %a347 + store { ptr, i64, i64 } %t378, ptr %a380 + store { ptr, i64, i64 } { ptr @.str.5996, i64 2, 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, i64, i64 }, ptr %a346 + store { ptr, i64, i64 } %t382, ptr %a385 + store { ptr, i64, i64 } %t383, ptr %a386 + call void @finch_str_concat(ptr %a384, ptr %a385, ptr %a386) + store { ptr, i64, i64 } %t382, ptr %a387 + call void @finch_str_drop(ptr %a387) + %t388 = load { ptr, i64, i64 }, ptr %a384 + store { ptr, i64, i64 } %t388, ptr %a390 + store { ptr, i64, i64 } { ptr @.str.5997, i64 1, i64 0 }, ptr %a391 + call void @finch_str_concat(ptr %a389, ptr %a390, ptr %a391) + store { ptr, i64, i64 } %t388, ptr %a392 + call void @finch_str_drop(ptr %a392) + %t393 = load { ptr, i64, i64 }, ptr %a389 + %t394 = load { ptr, i64, i64 }, ptr %a347 + store { ptr, i64, i64 } %t393, ptr %a347 + store { ptr, i64, i64 } %t394, ptr %a395 + call void @finch_str_drop(ptr %a395) + %t396 = load { ptr, i64, i64 }, ptr %a346 + store { ptr, i64, i64 } { ptr @.str.5998, i64 0, i64 0 }, ptr %a346 + store { ptr, i64, i64 } %t396, ptr %a397 + call void @finch_str_drop(ptr %a397) + %t398 = load ptr, ptr %a46 + %t399 = load %S.gen.FnSig, ptr %a320 + %t400 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t398, %S.gen.FnSig %t399) + store { ptr, i64, i64 } %t400, ptr %a401 + %t402 = load { ptr, i64, i64 }, ptr %a347 + store { ptr, i64, i64 } %t402, ptr %a404 + store { ptr, i64, i64 } { ptr @.str.5999, i64 21, i64 0 }, ptr %a405 + call void @finch_str_concat(ptr %a403, ptr %a404, ptr %a405) + %t406 = load { ptr, i64, i64 }, ptr %a403 + %t407 = load { ptr, i64, i64 }, ptr %a401 + store { ptr, i64, i64 } %t406, ptr %a409 + store { ptr, i64, i64 } %t407, ptr %a410 + call void @finch_str_concat(ptr %a408, ptr %a409, ptr %a410) + store { ptr, i64, i64 } %t406, ptr %a411 + call void @finch_str_drop(ptr %a411) + %t412 = load { ptr, i64, i64 }, ptr %a408 + store { ptr, i64, i64 } %t412, ptr %a414 + store { ptr, i64, i64 } { ptr @.str.6000, i64 62, i64 0 }, ptr %a415 + call void @finch_str_concat(ptr %a413, ptr %a414, ptr %a415) + store { ptr, i64, i64 } %t412, ptr %a416 + call void @finch_str_drop(ptr %a416) + %t417 = load { ptr, i64, i64 }, ptr %a413 + %t418 = load { ptr, i64, i64 }, ptr %a347 + store { ptr, i64, i64 } %t417, ptr %a347 + store { ptr, i64, i64 } %t418, ptr %a419 + call void @finch_str_drop(ptr %a419) + %t420 = load { ptr, i64, i64 }, ptr %a347 + store { ptr, i64, i64 } %t420, ptr %a422 + store { ptr, i64, i64 } { ptr @.str.6001, i64 20, i64 0 }, ptr %a423 + call void @finch_str_concat(ptr %a421, ptr %a422, ptr %a423) + %t424 = load { ptr, i64, i64 }, ptr %a421 + %t425 = load { ptr, i64, i64 }, ptr %a401 + store { ptr, i64, i64 } %t424, ptr %a427 + store { ptr, i64, i64 } %t425, ptr %a428 + call void @finch_str_concat(ptr %a426, ptr %a427, ptr %a428) + store { ptr, i64, i64 } %t424, ptr %a429 + call void @finch_str_drop(ptr %a429) + %t430 = load { ptr, i64, i64 }, ptr %a426 + store { ptr, i64, i64 } %t430, ptr %a432 + store { ptr, i64, i64 } { ptr @.str.6002, i64 78, i64 0 }, ptr %a433 + call void @finch_str_concat(ptr %a431, ptr %a432, ptr %a433) + store { ptr, i64, i64 } %t430, ptr %a434 + call void @finch_str_drop(ptr %a434) + %t435 = load { ptr, i64, i64 }, ptr %a431 + %t436 = load { ptr, i64, i64 }, ptr %a347 + store { ptr, i64, i64 } %t435, ptr %a347 + store { ptr, i64, i64 } %t436, ptr %a437 + call void @finch_str_drop(ptr %a437) + %t438 = load { ptr, i64, i64 }, ptr %a347 + store { ptr, i64, i64 } %t438, ptr %a440 + store { ptr, i64, i64 } { ptr @.str.6003, i64 62, i64 0 }, ptr %a441 + call void @finch_str_concat(ptr %a439, ptr %a440, ptr %a441) + %t442 = load { ptr, i64, i64 }, ptr %a439 + %t443 = load { ptr, i64, i64 }, ptr %a347 + store { ptr, i64, i64 } %t442, ptr %a347 + store { ptr, i64, i64 } %t443, ptr %a444 + call void @finch_str_drop(ptr %a444) + %t445 = getelementptr inbounds %S.gen.FnSig, ptr %a320, i32 0, i32 12 + %t446 = getelementptr inbounds %S.ast.Type, ptr %t445, i32 0, i32 0 + %t447 = load { ptr, i64, i64 }, ptr %t446 + store { ptr, i64, i64 } %t447, ptr %a448 + store { ptr, i64, i64 } { ptr @.str.6004, i64 3, i64 0 }, ptr %a449 + %t450 = call i32 @finch_str_eq(ptr %a448, ptr %a449) + %t451 = icmp ne i32 %t450, 0 + br i1 %t451, label %then8820, label %endif8822 +then8820: + %t452 = load { ptr, i64, i64 }, ptr %a401 + store { ptr, i64, i64 } { ptr @.str.6005, i64 20, 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.6006, i64 53, i64 0 }, ptr %a459 + call void @finch_str_concat(ptr %a457, ptr %a458, ptr %a459) + store { ptr, i64, i64 } %t456, ptr %a460 + call void @finch_str_drop(ptr %a460) + %t461 = load { ptr, i64, i64 }, ptr %a457 + %t462 = load { ptr, i64, i64 }, ptr %a368 + store { ptr, i64, i64 } %t461, ptr %a368 + store { ptr, i64, i64 } %t462, ptr %a463 + call void @finch_str_drop(ptr %a463) + br label %endif8822 +endif8822: + call void @finch_str_drop(ptr %a401) + br label %endif8819 +else8818: + %t464 = getelementptr inbounds %S.gen.FnSig, ptr %a320, i32 0, i32 12 + %t465 = getelementptr inbounds %S.ast.Type, ptr %t464, i32 0, i32 0 + %t466 = load { ptr, i64, i64 }, ptr %t465 + store { ptr, i64, i64 } %t466, ptr %a467 + store { ptr, i64, i64 } { ptr @.str.6007, i64 3, i64 0 }, ptr %a468 + %t469 = call i32 @finch_str_eq(ptr %a467, ptr %a468) + %t470 = icmp ne i32 %t469, 0 + br i1 %t470, label %then8823, label %endif8825 +then8823: + %t471 = load { ptr, i64, i64 }, ptr %a346 + store { ptr, i64, i64 } { ptr @.str.6008, i64 5, i64 0 }, 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 { ptr, i64, i64 }, ptr %a346 + store { ptr, i64, i64 } %t475, ptr %a346 + store { ptr, i64, i64 } %t476, ptr %a477 + call void @finch_str_drop(ptr %a477) + %t478 = load { ptr, i64, i64 }, ptr %a368 + store { ptr, i64, i64 } { ptr @.str.6009, i64 46, i64 0 }, ptr %a368 + store { ptr, i64, i64 } %t478, ptr %a479 + call void @finch_str_drop(ptr %a479) + br label %endif8825 +endif8825: + br label %endif8819 +endif8819: + %t480 = load ptr, ptr %a46 + %t481 = icmp eq ptr %t480, null + br i1 %t481, label %panic8826, label %ok8827 +panic8826: + call void @finch_panic(ptr @.str.6010, i64 5630, ptr @.str.6011) unreachable -ok8345: - %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.5796, 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.5797, 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.5798, 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.5799, 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 +ok8827: + %t482 = getelementptr inbounds %S.gen.Gen, ptr %t480, i32 0, i32 3 + %t483 = getelementptr inbounds { ptr, i64, i64 }, ptr %t482, i32 0, i32 1 + %t484 = load { ptr, i64, i64 }, ptr %a347 + store { ptr, i64, i64 } { ptr @.str.6012, i64 48, i64 0 }, ptr %a486 + store { ptr, i64, i64 } %t484, ptr %a487 + call void @finch_str_concat(ptr %a485, ptr %a486, ptr %a487) + %t488 = load { ptr, i64, i64 }, ptr %a485 + store { ptr, i64, i64 } %t488, ptr %a490 + store { ptr, i64, i64 } { ptr @.str.6013, i64 2, i64 0 }, ptr %a491 + call void @finch_str_concat(ptr %a489, ptr %a490, ptr %a491) + store { ptr, i64, i64 } %t488, ptr %a492 + call void @finch_str_drop(ptr %a492) + %t493 = load { ptr, i64, i64 }, ptr %a489 + %t494 = load { ptr, i64, i64 }, ptr %a346 + store { ptr, i64, i64 } %t493, ptr %a496 + store { ptr, i64, i64 } %t494, ptr %a497 + call void @finch_str_concat(ptr %a495, ptr %a496, ptr %a497) + store { ptr, i64, i64 } %t493, ptr %a498 + call void @finch_str_drop(ptr %a498) + %t499 = load { ptr, i64, i64 }, ptr %a495 + store { ptr, i64, i64 } %t499, ptr %a501 + store { ptr, i64, i64 } { ptr @.str.6014, i64 1, i64 0 }, ptr %a502 + call void @finch_str_concat(ptr %a500, ptr %a501, ptr %a502) + store { ptr, i64, i64 } %t499, ptr %a503 + call void @finch_str_drop(ptr %a503) + %t504 = load { ptr, i64, i64 }, ptr %a500 + %t505 = load { ptr, i64, i64 }, ptr %a368 + store { ptr, i64, i64 } %t504, ptr %a507 + store { ptr, i64, i64 } %t505, ptr %a508 + call void @finch_str_concat(ptr %a506, ptr %a507, ptr %a508) + store { ptr, i64, i64 } %t504, ptr %a509 + call void @finch_str_drop(ptr %a509) + %t510 = load { ptr, i64, i64 }, ptr %a506 + store { ptr, i64, i64 } %t510, ptr %a512 + store { ptr, i64, i64 } { ptr @.str.6015, i64 2, i64 0 }, ptr %a513 + call void @finch_str_concat(ptr %a511, ptr %a512, ptr %a513) + store { ptr, i64, i64 } %t510, ptr %a514 + call void @finch_str_drop(ptr %a514) + %t515 = load { ptr, i64, i64 }, ptr %a511 + %t516 = load i64, ptr %t483 + %t517 = add i64 %t516, 1 + call void @finch_arr_reserve(ptr %t482, i64 %t517, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t518 = load ptr, ptr %t482 + %t519 = getelementptr inbounds { ptr, i64, i64 }, ptr %t518, i64 %t516 + store { ptr, i64, i64 } %t515, ptr %t519 + store i64 %t517, ptr %t483 + %t520 = load ptr, ptr %a46 + %t521 = call { ptr, i64, i64 } @finch.gen.assemble(ptr %t520) + call void @finch_str_drop(ptr %a368) + call void @finch_str_drop(ptr %a347) + call void @finch_str_drop(ptr %a346) + call void @finch.drop.S_gen_FnSig(ptr %a320) + call void @finch.drop.S_gen_Gen(ptr %a45) + ret { ptr, i64, i64 } %t521 } define internal %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2) { @@ -77075,24 +92879,24 @@ entry: define internal { ptr, i64, i64 } @finch.docs.builtins() { entry: - %t1 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5800, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.5801, i64 16, i64 0 }, { ptr, i64, i64 } { ptr @.str.5802, i64 78, i64 0 }) - %t2 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5803, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.5804, i64 31, i64 0 }, { ptr, i64, i64 } { ptr @.str.5805, i64 77, i64 0 }) - %t3 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5806, i64 9, i64 0 }, { ptr, i64, i64 } { ptr @.str.5807, i64 26, i64 0 }, { ptr, i64, i64 } { ptr @.str.5808, i64 121, i64 0 }) - %t4 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5809, i64 10, i64 0 }, { ptr, i64, i64 } { ptr @.str.5810, i64 38, i64 0 }, { ptr, i64, i64 } { ptr @.str.5811, i64 83, i64 0 }) - %t5 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5812, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.5813, i64 29, i64 0 }, { ptr, i64, i64 } { ptr @.str.5814, i64 29, i64 0 }) - %t6 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5815, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.5816, i64 29, i64 0 }, { ptr, i64, i64 } { ptr @.str.5817, i64 73, i64 0 }) - %t7 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5818, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.5819, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.5820, i64 98, i64 0 }) - %t8 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5821, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.5822, i64 25, i64 0 }, { ptr, i64, i64 } { ptr @.str.5823, i64 66, i64 0 }) - %t9 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5824, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.5825, i64 14, i64 0 }, { ptr, i64, i64 } { ptr @.str.5826, i64 48, i64 0 }) - %t10 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5827, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.5828, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5829, i64 77, i64 0 }) - %t11 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5830, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5831, i64 20, i64 0 }, { ptr, i64, i64 } { ptr @.str.5832, i64 66, i64 0 }) - %t12 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5833, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.5834, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.5835, i64 73, i64 0 }) - %t13 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5836, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5837, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.5838, i64 61, i64 0 }) - %t14 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5839, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5840, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.5841, i64 130, i64 0 }) - %t15 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5842, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.5843, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5844, i64 75, i64 0 }) - %t16 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5845, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.5846, i64 19, i64 0 }, { ptr, i64, i64 } { ptr @.str.5847, i64 29, i64 0 }) - %t17 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5848, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.5849, i64 19, i64 0 }, { ptr, i64, i64 } { ptr @.str.5850, i64 26, i64 0 }) - %t18 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5851, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5852, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.5853, i64 88, i64 0 }) + %t1 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6016, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6017, i64 16, i64 0 }, { ptr, i64, i64 } { ptr @.str.6018, i64 78, i64 0 }) + %t2 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6019, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6020, i64 31, i64 0 }, { ptr, i64, i64 } { ptr @.str.6021, i64 77, i64 0 }) + %t3 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6022, i64 9, i64 0 }, { ptr, i64, i64 } { ptr @.str.6023, i64 26, i64 0 }, { ptr, i64, i64 } { ptr @.str.6024, i64 121, i64 0 }) + %t4 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6025, i64 10, i64 0 }, { ptr, i64, i64 } { ptr @.str.6026, i64 38, i64 0 }, { ptr, i64, i64 } { ptr @.str.6027, i64 83, i64 0 }) + %t5 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6028, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6029, i64 29, i64 0 }, { ptr, i64, i64 } { ptr @.str.6030, i64 29, i64 0 }) + %t6 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6031, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6032, i64 29, i64 0 }, { ptr, i64, i64 } { ptr @.str.6033, i64 73, i64 0 }) + %t7 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6034, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6035, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.6036, i64 98, i64 0 }) + %t8 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6037, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6038, i64 25, i64 0 }, { ptr, i64, i64 } { ptr @.str.6039, i64 66, i64 0 }) + %t9 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6040, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6041, i64 14, i64 0 }, { ptr, i64, i64 } { ptr @.str.6042, i64 48, i64 0 }) + %t10 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6043, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6044, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.6045, i64 77, i64 0 }) + %t11 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6046, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6047, i64 20, i64 0 }, { ptr, i64, i64 } { ptr @.str.6048, i64 66, i64 0 }) + %t12 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6049, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6050, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6051, i64 73, i64 0 }) + %t13 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6052, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6053, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.6054, i64 61, i64 0 }) + %t14 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6055, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6056, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.6057, i64 130, i64 0 }) + %t15 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6058, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6059, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.6060, i64 75, i64 0 }) + %t16 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6061, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6062, i64 19, i64 0 }, { ptr, i64, i64 } { ptr @.str.6063, i64 29, i64 0 }) + %t17 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6064, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6065, i64 19, i64 0 }, { ptr, i64, i64 } { ptr @.str.6066, i64 26, i64 0 }) + %t18 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6067, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6068, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.6069, 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 @@ -77140,20 +92944,20 @@ entry: define internal { ptr, i64, i64 } @finch.docs.arrayMethods() { entry: - %t1 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5854, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5855, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.5856, i64 23, i64 0 }) - %t2 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5857, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5858, i64 14, i64 0 }, { ptr, i64, i64 } { ptr @.str.5859, i64 40, i64 0 }) - %t3 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5860, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.5861, i64 9, i64 0 }, { ptr, i64, i64 } { ptr @.str.5862, i64 18, i64 0 }) - %t4 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5863, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5864, i64 10, i64 0 }, { ptr, i64, i64 } { ptr @.str.5865, i64 43, i64 0 }) - %t5 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5866, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.5867, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.5868, i64 38, i64 0 }) - %t6 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5869, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.5870, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.5871, i64 37, i64 0 }) - %t7 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5872, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.5873, i64 7, i64 0 }, { ptr, i64, i64 } { ptr @.str.5874, i64 19, i64 0 }) - %t8 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5875, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.5876, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.5877, i64 46, i64 0 }) - %t9 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5878, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.5879, i64 16, i64 0 }, { ptr, i64, i64 } { ptr @.str.5880, i64 22, i64 0 }) - %t10 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5881, i64 8, i64 0 }, { ptr, i64, i64 } { ptr @.str.5882, i64 21, i64 0 }, { ptr, i64, i64 } { ptr @.str.5883, i64 18, i64 0 }) - %t11 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5884, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.5885, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.5886, i64 37, i64 0 }) - %t12 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5887, i64 7, i64 0 }, { ptr, i64, i64 } { ptr @.str.5888, i64 9, i64 0 }, { ptr, i64, i64 } { ptr @.str.5889, i64 18, i64 0 }) - %t13 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5890, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.5891, i64 32, i64 0 }, { ptr, i64, i64 } { ptr @.str.5892, i64 45, i64 0 }) - %t14 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5893, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.5894, i64 20, i64 0 }, { ptr, i64, i64 } { ptr @.str.5895, i64 47, i64 0 }) + %t1 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6070, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6071, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6072, i64 23, i64 0 }) + %t2 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6073, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6074, i64 14, i64 0 }, { ptr, i64, i64 } { ptr @.str.6075, i64 40, i64 0 }) + %t3 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6076, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6077, i64 9, i64 0 }, { ptr, i64, i64 } { ptr @.str.6078, i64 18, i64 0 }) + %t4 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6079, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6080, i64 10, i64 0 }, { ptr, i64, i64 } { ptr @.str.6081, i64 43, i64 0 }) + %t5 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6082, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.6083, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.6084, i64 38, i64 0 }) + %t6 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6085, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.6086, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.6087, i64 37, i64 0 }) + %t7 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6088, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6089, i64 7, i64 0 }, { ptr, i64, i64 } { ptr @.str.6090, i64 19, i64 0 }) + %t8 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6091, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.6092, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.6093, i64 46, i64 0 }) + %t9 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6094, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6095, i64 16, i64 0 }, { ptr, i64, i64 } { ptr @.str.6096, i64 22, i64 0 }) + %t10 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6097, i64 8, i64 0 }, { ptr, i64, i64 } { ptr @.str.6098, i64 21, i64 0 }, { ptr, i64, i64 } { ptr @.str.6099, i64 18, i64 0 }) + %t11 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6100, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6101, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.6102, i64 37, i64 0 }) + %t12 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6103, i64 7, i64 0 }, { ptr, i64, i64 } { ptr @.str.6104, i64 9, i64 0 }, { ptr, i64, i64 } { ptr @.str.6105, i64 18, i64 0 }) + %t13 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6106, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6107, i64 32, i64 0 }, { ptr, i64, i64 } { ptr @.str.6108, i64 45, i64 0 }) + %t14 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6109, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6110, i64 20, i64 0 }, { ptr, i64, i64 } { ptr @.str.6111, 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 @@ -77193,20 +92997,20 @@ entry: define internal { ptr, i64, i64 } @finch.docs.strMethods() { entry: - %t1 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5896, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5897, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.5898, i64 20, i64 0 }) - %t2 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5899, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5900, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5901, i64 59, i64 0 }) - %t3 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5902, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5903, i64 30, i64 0 }, { ptr, i64, i64 } { ptr @.str.5904, i64 29, i64 0 }) - %t4 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5905, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.5906, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.5907, i64 22, i64 0 }) - %t5 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5908, i64 8, i64 0 }, { ptr, i64, i64 } { ptr @.str.5909, i64 23, i64 0 }, { ptr, i64, i64 } { ptr @.str.5910, i64 24, i64 0 }) - %t6 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5911, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.5912, i64 26, i64 0 }, { ptr, i64, i64 } { ptr @.str.5913, i64 27, i64 0 }) - %t7 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5914, i64 9, i64 0 }, { ptr, i64, i64 } { ptr @.str.5915, i64 24, i64 0 }, { ptr, i64, i64 } { ptr @.str.5916, i64 25, i64 0 }) - %t8 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5917, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.5918, i64 23, i64 0 }, { ptr, i64, i64 } { ptr @.str.5919, i64 62, i64 0 }) - %t9 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5920, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.5921, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.5922, i64 41, i64 0 }) - %t10 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5923, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.5924, i64 14, i64 0 }, { ptr, i64, i64 } { ptr @.str.5925, i64 24, i64 0 }) - %t11 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5926, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.5927, i64 14, i64 0 }, { ptr, i64, i64 } { ptr @.str.5928, i64 24, i64 0 }) - %t12 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5929, i64 7, i64 0 }, { ptr, i64, i64 } { ptr @.str.5930, i64 32, i64 0 }, { ptr, i64, i64 } { ptr @.str.5931, i64 26, i64 0 }) - %t13 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5932, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.5933, i64 20, i64 0 }, { ptr, i64, i64 } { ptr @.str.5934, i64 17, i64 0 }) - %t14 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5935, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.5936, i64 15, i64 0 }, { ptr, i64, i64 } { ptr @.str.5937, i64 22, i64 0 }) + %t1 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6112, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6113, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6114, i64 20, i64 0 }) + %t2 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6115, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6116, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.6117, i64 59, i64 0 }) + %t3 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6118, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6119, i64 30, i64 0 }, { ptr, i64, i64 } { ptr @.str.6120, i64 29, i64 0 }) + %t4 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6121, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6122, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.6123, i64 22, i64 0 }) + %t5 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6124, i64 8, i64 0 }, { ptr, i64, i64 } { ptr @.str.6125, i64 23, i64 0 }, { ptr, i64, i64 } { ptr @.str.6126, i64 24, i64 0 }) + %t6 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6127, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6128, i64 26, i64 0 }, { ptr, i64, i64 } { ptr @.str.6129, i64 27, i64 0 }) + %t7 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6130, i64 9, i64 0 }, { ptr, i64, i64 } { ptr @.str.6131, i64 24, i64 0 }, { ptr, i64, i64 } { ptr @.str.6132, i64 25, i64 0 }) + %t8 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6133, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6134, i64 23, i64 0 }, { ptr, i64, i64 } { ptr @.str.6135, i64 62, i64 0 }) + %t9 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6136, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6137, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.6138, i64 41, i64 0 }) + %t10 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6139, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6140, i64 14, i64 0 }, { ptr, i64, i64 } { ptr @.str.6141, i64 24, i64 0 }) + %t11 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6142, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6143, i64 14, i64 0 }, { ptr, i64, i64 } { ptr @.str.6144, i64 24, i64 0 }) + %t12 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6145, i64 7, i64 0 }, { ptr, i64, i64 } { ptr @.str.6146, i64 32, i64 0 }, { ptr, i64, i64 } { ptr @.str.6147, i64 26, i64 0 }) + %t13 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6148, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.6149, i64 20, i64 0 }, { ptr, i64, i64 } { ptr @.str.6150, i64 17, i64 0 }) + %t14 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6151, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6152, i64 15, i64 0 }, { ptr, i64, i64 } { ptr @.str.6153, 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 @@ -77246,13 +93050,13 @@ entry: define internal { ptr, i64, i64 } @finch.docs.mapMethods() { entry: - %t1 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5938, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5939, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.5940, i64 19, i64 0 }) - %t2 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5941, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5942, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.5943, i64 22, i64 0 }) - %t3 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5944, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5945, i64 26, i64 0 }, { ptr, i64, i64 } { ptr @.str.5946, i64 53, i64 0 }) - %t4 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5947, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.5948, i64 21, i64 0 }, { ptr, i64, i64 } { ptr @.str.5949, i64 52, i64 0 }) - %t5 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5950, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.5951, i64 7, i64 0 }, { ptr, i64, i64 } { ptr @.str.5952, i64 19, i64 0 }) - %t6 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5953, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.5954, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.5955, i64 39, i64 0 }) - %t7 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5956, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.5957, i64 15, i64 0 }, { ptr, i64, i64 } { ptr @.str.5958, i64 47, i64 0 }) + %t1 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6154, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6155, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6156, i64 19, i64 0 }) + %t2 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6157, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6158, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.6159, i64 22, i64 0 }) + %t3 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6160, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6161, i64 26, i64 0 }, { ptr, i64, i64 } { ptr @.str.6162, i64 53, i64 0 }) + %t4 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6163, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.6164, i64 21, i64 0 }, { ptr, i64, i64 } { ptr @.str.6165, i64 52, i64 0 }) + %t5 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6166, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6167, i64 7, i64 0 }, { ptr, i64, i64 } { ptr @.str.6168, i64 19, i64 0 }) + %t6 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6169, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6170, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.6171, i64 39, i64 0 }) + %t7 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6172, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.6173, i64 15, i64 0 }, { ptr, i64, i64 } { ptr @.str.6174, 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 @@ -77281,49 +93085,49 @@ 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.5959, i64 2, i64 0 }, ptr %t3 + store { ptr, i64, i64 } { ptr @.str.6175, i64 2, i64 0 }, ptr %t3 %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 1 - store { ptr, i64, i64 } { ptr @.str.5960, i64 6, i64 0 }, ptr %t4 + store { ptr, i64, i64 } { ptr @.str.6176, i64 6, i64 0 }, ptr %t4 %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 2 - store { ptr, i64, i64 } { ptr @.str.5961, i64 2, i64 0 }, ptr %t5 + store { ptr, i64, i64 } { ptr @.str.6177, i64 2, i64 0 }, ptr %t5 %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 3 - store { ptr, i64, i64 } { ptr @.str.5962, i64 4, i64 0 }, ptr %t6 + store { ptr, i64, i64 } { ptr @.str.6178, i64 4, i64 0 }, ptr %t6 %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 4 - store { ptr, i64, i64 } { ptr @.str.5963, i64 5, i64 0 }, ptr %t7 + store { ptr, i64, i64 } { ptr @.str.6179, i64 5, i64 0 }, ptr %t7 %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 5 - store { ptr, i64, i64 } { ptr @.str.5964, i64 3, i64 0 }, ptr %t8 + store { ptr, i64, i64 } { ptr @.str.6180, i64 3, i64 0 }, ptr %t8 %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 6 - store { ptr, i64, i64 } { ptr @.str.5965, i64 2, i64 0 }, ptr %t9 + store { ptr, i64, i64 } { ptr @.str.6181, i64 2, i64 0 }, ptr %t9 %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 7 - store { ptr, i64, i64 } { ptr @.str.5966, i64 5, i64 0 }, ptr %t10 + store { ptr, i64, i64 } { ptr @.str.6182, i64 5, i64 0 }, ptr %t10 %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 8 - store { ptr, i64, i64 } { ptr @.str.5967, i64 8, i64 0 }, ptr %t11 + store { ptr, i64, i64 } { ptr @.str.6183, i64 8, i64 0 }, ptr %t11 %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 9 - store { ptr, i64, i64 } { ptr @.str.5968, i64 4, i64 0 }, ptr %t12 + store { ptr, i64, i64 } { ptr @.str.6184, i64 4, i64 0 }, ptr %t12 %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 10 - store { ptr, i64, i64 } { ptr @.str.5969, i64 5, i64 0 }, ptr %t13 + store { ptr, i64, i64 } { ptr @.str.6185, i64 5, i64 0 }, ptr %t13 %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 11 - store { ptr, i64, i64 } { ptr @.str.5970, i64 4, i64 0 }, ptr %t14 + store { ptr, i64, i64 } { ptr @.str.6186, i64 4, i64 0 }, ptr %t14 %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 12 - store { ptr, i64, i64 } { ptr @.str.5971, i64 6, i64 0 }, ptr %t15 + store { ptr, i64, i64 } { ptr @.str.6187, i64 6, i64 0 }, ptr %t15 %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 13 - store { ptr, i64, i64 } { ptr @.str.5972, i64 4, i64 0 }, ptr %t16 + store { ptr, i64, i64 } { ptr @.str.6188, i64 4, i64 0 }, ptr %t16 %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 14 - store { ptr, i64, i64 } { ptr @.str.5973, i64 6, i64 0 }, ptr %t17 + store { ptr, i64, i64 } { ptr @.str.6189, i64 6, i64 0 }, ptr %t17 %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 15 - store { ptr, i64, i64 } { ptr @.str.5974, i64 4, i64 0 }, ptr %t18 + store { ptr, i64, i64 } { ptr @.str.6190, i64 4, i64 0 }, ptr %t18 %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 16 - store { ptr, i64, i64 } { ptr @.str.5975, i64 5, i64 0 }, ptr %t19 + store { ptr, i64, i64 } { ptr @.str.6191, i64 5, i64 0 }, ptr %t19 %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 17 - store { ptr, i64, i64 } { ptr @.str.5976, i64 6, i64 0 }, ptr %t20 + store { ptr, i64, i64 } { ptr @.str.6192, i64 6, i64 0 }, ptr %t20 %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 18 - store { ptr, i64, i64 } { ptr @.str.5977, i64 5, i64 0 }, ptr %t21 + store { ptr, i64, i64 } { ptr @.str.6193, i64 5, i64 0 }, ptr %t21 %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 19 - store { ptr, i64, i64 } { ptr @.str.5978, i64 2, i64 0 }, ptr %t22 + store { ptr, i64, i64 } { ptr @.str.6194, i64 2, i64 0 }, ptr %t22 %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 20 - store { ptr, i64, i64 } { ptr @.str.5979, i64 3, i64 0 }, ptr %t23 + store { ptr, i64, i64 } { ptr @.str.6195, i64 3, i64 0 }, ptr %t23 %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 21 - store { ptr, i64, i64 } { ptr @.str.5980, i64 4, i64 0 }, ptr %t24 + store { ptr, i64, i64 } { ptr @.str.6196, 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 @@ -77336,45 +93140,62 @@ 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.5981, i64 3, i64 0 }, ptr %t3 + store { ptr, i64, i64 } { ptr @.str.6197, i64 3, i64 0 }, ptr %t3 %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 1 - store { ptr, i64, i64 } { ptr @.str.5982, i64 5, i64 0 }, ptr %t4 + store { ptr, i64, i64 } { ptr @.str.6198, i64 5, i64 0 }, ptr %t4 %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 2 - store { ptr, i64, i64 } { ptr @.str.5983, i64 4, i64 0 }, ptr %t5 + store { ptr, i64, i64 } { ptr @.str.6199, i64 4, i64 0 }, ptr %t5 %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 3 - store { ptr, i64, i64 } { ptr @.str.5984, i64 4, i64 0 }, ptr %t6 + store { ptr, i64, i64 } { ptr @.str.6200, i64 4, i64 0 }, ptr %t6 %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 4 - store { ptr, i64, i64 } { ptr @.str.5985, i64 3, i64 0 }, ptr %t7 + store { ptr, i64, i64 } { ptr @.str.6201, i64 3, i64 0 }, ptr %t7 %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 5 - store { ptr, i64, i64 } { ptr @.str.5986, i64 3, i64 0 }, ptr %t8 + store { ptr, i64, i64 } { ptr @.str.6202, i64 3, i64 0 }, ptr %t8 %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 6 - store { ptr, i64, i64 } { ptr @.str.5987, i64 3, i64 0 }, ptr %t9 + store { ptr, i64, i64 } { ptr @.str.6203, i64 3, i64 0 }, ptr %t9 %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 7 - store { ptr, i64, i64 } { ptr @.str.5988, i64 2, i64 0 }, ptr %t10 + store { ptr, i64, i64 } { ptr @.str.6204, i64 2, i64 0 }, ptr %t10 %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 8 - store { ptr, i64, i64 } { ptr @.str.5989, i64 3, i64 0 }, ptr %t11 + store { ptr, i64, i64 } { ptr @.str.6205, i64 3, i64 0 }, ptr %t11 %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 9 - store { ptr, i64, i64 } { ptr @.str.5990, i64 3, i64 0 }, ptr %t12 + store { ptr, i64, i64 } { ptr @.str.6206, i64 3, i64 0 }, ptr %t12 %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 10 - store { ptr, i64, i64 } { ptr @.str.5991, i64 3, i64 0 }, ptr %t13 + store { ptr, i64, i64 } { ptr @.str.6207, i64 3, i64 0 }, ptr %t13 %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 11 - store { ptr, i64, i64 } { ptr @.str.5992, i64 2, i64 0 }, ptr %t14 + store { ptr, i64, i64 } { ptr @.str.6208, i64 2, i64 0 }, ptr %t14 %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 12 - store { ptr, i64, i64 } { ptr @.str.5993, i64 3, i64 0 }, ptr %t15 + store { ptr, i64, i64 } { ptr @.str.6209, i64 3, i64 0 }, ptr %t15 %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 13 - store { ptr, i64, i64 } { ptr @.str.5994, i64 3, i64 0 }, ptr %t16 + store { ptr, i64, i64 } { ptr @.str.6210, i64 3, i64 0 }, ptr %t16 %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 14 - store { ptr, i64, i64 } { ptr @.str.5995, i64 3, i64 0 }, ptr %t17 + store { ptr, i64, i64 } { ptr @.str.6211, i64 3, i64 0 }, ptr %t17 %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 15 - store { ptr, i64, i64 } { ptr @.str.5996, i64 3, i64 0 }, ptr %t18 + store { ptr, i64, i64 } { ptr @.str.6212, i64 3, i64 0 }, ptr %t18 %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 16 - store { ptr, i64, i64 } { ptr @.str.5997, i64 3, i64 0 }, ptr %t19 + store { ptr, i64, i64 } { ptr @.str.6213, 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 void @finch.copy.S_docs_Doc(ptr %dst, ptr %src) { +entry: + + %t1 = load %S.docs.Doc, ptr %src + store %S.docs.Doc %t1, ptr %dst + %t2 = getelementptr inbounds %S.docs.Doc, ptr %dst, i32 0, i32 0 + %t3 = getelementptr inbounds %S.docs.Doc, ptr %src, i32 0, i32 0 + call void @finch_str_copy(ptr %t2, ptr %t3) + %t4 = getelementptr inbounds %S.docs.Doc, ptr %dst, i32 0, i32 1 + %t5 = getelementptr inbounds %S.docs.Doc, ptr %src, i32 0, i32 1 + call void @finch_str_copy(ptr %t4, ptr %t5) + %t6 = getelementptr inbounds %S.docs.Doc, ptr %dst, i32 0, i32 2 + %t7 = getelementptr inbounds %S.docs.Doc, ptr %src, i32 0, i32 2 + call void @finch_str_copy(ptr %t6, ptr %t7) + ret void +} + define internal %S.docs.Doc @finch.docs.find({ ptr, i64, i64 } %p0, { ptr, i64, i64 } %p1) { entry: %a1 = alloca { ptr, i64, i64 }, align 16 @@ -77383,17 +93204,19 @@ entry: %a11 = alloca %S.docs.Doc, align 16 %a15 = alloca { ptr, i64, i64 }, align 16 %a16 = alloca { ptr, i64, i64 }, align 16 + %a20 = alloca %S.docs.Doc, align 16 + %a21 = alloca %S.docs.Doc, align 16 store { ptr, i64, i64 } %p0, ptr %a1 store { ptr, i64, i64 } %p1, ptr %a2 store i64 0, ptr %a3 - br label %each.cond8346 -each.cond8346: + br label %each.cond8828 +each.cond8828: %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.body8347, label %each.end8349 -each.body8347: + br i1 %t7, label %each.body8829, label %each.end8831 +each.body8829: %t8 = load ptr, ptr %a1 %t9 = getelementptr inbounds %S.docs.Doc, ptr %t8, i64 %t6 %t10 = load %S.docs.Doc, ptr %t9 @@ -77405,18 +93228,21 @@ each.body8347: 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 %then8350, label %endif8352 -then8350: + br i1 %t18, label %then8832, label %endif8834 +then8832: %t19 = load %S.docs.Doc, ptr %a11 - ret %S.docs.Doc %t19 -endif8352: - br label %each.step8348 -each.step8348: - %t20 = load i64, ptr %a3 - %t21 = add i64 %t20, 1 - store i64 %t21, ptr %a3 - br label %each.cond8346 -each.end8349: + store %S.docs.Doc %t19, ptr %a20 + call void @finch.copy.S_docs_Doc(ptr %a21, ptr %a20) + %t22 = load %S.docs.Doc, ptr %a21 + ret %S.docs.Doc %t22 +endif8834: + br label %each.step8830 +each.step8830: + %t23 = load i64, ptr %a3 + %t24 = add i64 %t23, 1 + store i64 %t24, ptr %a3 + br label %each.cond8828 +each.end8831: ret %S.docs.Doc zeroinitializer } @@ -77429,27 +93255,33 @@ entry: %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 + %a11 = 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 + %a18 = 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.5998, i64 9, i64 0 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.6214, 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.5999, i64 5, i64 0 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.6215, 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 + store { ptr, i64, i64 } %t7, ptr %a11 + call void @finch_str_drop(ptr %a11) + %t12 = load { ptr, i64, i64 }, ptr %a8 + %t13 = getelementptr inbounds %S.docs.Doc, ptr %a1, i32 0, i32 2 + %t14 = load { ptr, i64, i64 }, ptr %t13 + store { ptr, i64, i64 } %t12, ptr %a16 + store { ptr, i64, i64 } %t14, ptr %a17 + call void @finch_str_concat(ptr %a15, ptr %a16, ptr %a17) + store { ptr, i64, i64 } %t12, ptr %a18 + call void @finch_str_drop(ptr %a18) + %t19 = load { ptr, i64, i64 }, ptr %a15 + ret { ptr, i64, i64 } %t19 } define internal { ptr, i64, i64 } @finch.cimport.text(%S.C.CXString %p0) { @@ -77461,8 +93293,6 @@ entry: %a12 = alloca { ptr, i64, i64 }, align 16 %a14 = alloca { ptr, i64, i64 }, align 16 %a16 = alloca [32 x i8], align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 store %S.C.CXString %p0, ptr %a1 %t2 = load %S.C.CXString, ptr %a1 store %S.C.CXString %t2, ptr %a3 @@ -77486,10 +93316,7 @@ entry: %t20 = load i64, ptr %t19 call void @clang_disposeString(i64 %t18, i64 %t20) %t21 = load { ptr, i64, i64 }, ptr %a14 - store { ptr, i64, i64 } %t21, ptr %a22 - call void @finch_str_copy(ptr %a23, ptr %a22) - %t24 = load { ptr, i64, i64 }, ptr %a23 - ret { ptr, i64, i64 } %t24 + ret { ptr, i64, i64 } %t21 } define internal %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %p0) { @@ -77529,11 +93356,9 @@ entry: %a6 = alloca %S.ast.Type, align 16 %a10 = alloca %S.ast.Type, align 16 %a11 = alloca %S.ast.Type, align 16 - %a18 = alloca %S.ast.Type, align 16 - %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.6000, i64 5, i64 0 }, 0 + %t3 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.6216, 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 @@ -77551,236 +93376,355 @@ entry: store %S.ast.Type %t12, ptr %t16 store i64 %t14, ptr %t8 %t17 = load %S.ast.Type, ptr %a6 - store %S.ast.Type %t17, ptr %a18 - call void @finch.copy.S_ast_Type(ptr %a19, ptr %a18) - %t20 = load %S.ast.Type, ptr %a19 - ret %S.ast.Type %t20 + ret %S.ast.Type %t17 } define internal { ptr, i64, i64 } @finch.cimport.systemIncludeArgs({ ptr, i64, i64 } %p0) { entry: %a1 = alloca { ptr, i64, i64 }, align 16 %a2 = 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 %a7 = alloca { ptr, i64, i64 }, align 16 %a10 = 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 %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 - %a22 = alloca { ptr, i64, i64 }, align 16 + %a20 = alloca { ptr, i64, i64 }, align 16 + %a21 = alloca { ptr, i64, i64 }, align 16 + %a23 = alloca { ptr, i64, i64 }, align 16 + %a25 = 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 - %a30 = alloca i1, align 16 - %a32 = 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 %a36 = alloca { ptr, i64, i64 }, align 16 %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 + %a39 = alloca { ptr, i64, i64 }, align 16 %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca i64, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 + %a41 = alloca { ptr, i64, i64 }, align 16 + %a42 = alloca { ptr, i64, i64 }, align 16 + %a44 = alloca { ptr, i64, i64 }, align 16 + %a46 = alloca { ptr, i64, i64 }, align 16 + %a47 = alloca { ptr, i64, i64 }, align 16 %a51 = alloca { ptr, i64, i64 }, align 16 %a52 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 + %a53 = alloca { ptr, i64, i64 }, align 16 %a57 = alloca { ptr, i64, i64 }, align 16 %a58 = alloca { ptr, i64, i64 }, align 16 - %a62 = 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 %a63 = 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 + %a70 = 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 %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 %a76 = alloca { ptr, i64, i64 }, align 16 - %a81 = 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 %a82 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = 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 + %a86 = alloca { ptr, i64, i64 }, align 16 %a89 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 + %a92 = alloca { ptr, i64, i64 }, align 16 + %a97 = alloca i1, align 16 %a99 = 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 { ptr, i64, i64 }, align 16 + %a105 = 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 - %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 + %a109 = alloca i64, align 16 %a117 = alloca { ptr, i64, i64 }, align 16 + %a119 = alloca { ptr, i64, i64 }, align 16 %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 + %a122 = 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 + %a130 = alloca { ptr, i64, i64 }, align 16 + %a131 = alloca { ptr, i64, i64 }, align 16 + %a132 = alloca { ptr, i64, i64 }, align 16 + %a142 = alloca { ptr, i64, i64 }, align 16 + %a143 = alloca { ptr, i64, i64 }, align 16 + %a144 = alloca { ptr, i64, i64 }, align 16 + %a149 = alloca { ptr, i64, i64 }, align 16 + %a150 = alloca { ptr, i64, i64 }, align 16 + %a155 = 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 + %a166 = alloca { ptr, i64, i64 }, align 16 + %a167 = alloca { ptr, i64, i64 }, align 16 + %a168 = 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.6001, 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.6002, 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 - store { ptr, i64, i64 } %t8, 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.6003, i64 13, i64 0 }, ptr %a16 - call void @finch_str_concat(ptr %a14, ptr %a15, ptr %a16) - %t17 = load { ptr, i64, i64 }, ptr %a14 + %t3 = call { ptr, i64, i64 } @finch.host.tempDir() + store { ptr, i64, i64 } %t3, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.6217, i64 15, i64 0 }, ptr %a6 + call void @finch_str_concat(ptr %a4, ptr %a5, ptr %a6) + store { ptr, i64, i64 } %t3, ptr %a7 + call void @finch_str_drop(ptr %a7) + %t8 = load { ptr, i64, i64 }, ptr %a4 + %t9 = call i64 @finch.host.pid() + call void @finch_str_from_int(ptr %a10, i64 %t9) + %t11 = load { ptr, i64, i64 }, ptr %a10 + store { ptr, i64, i64 } %t8, ptr %a13 + store { ptr, i64, i64 } %t11, ptr %a14 + call void @finch_str_concat(ptr %a12, ptr %a13, ptr %a14) + store { ptr, i64, i64 } %t8, ptr %a15 + call void @finch_str_drop(ptr %a15) + store { ptr, i64, i64 } %t11, ptr %a16 + call void @finch_str_drop(ptr %a16) + %t17 = load { ptr, i64, i64 }, ptr %a12 store { ptr, i64, i64 } %t17, ptr %a19 - call void @finch_str_copy(ptr %a18, ptr %a19) - %t20 = call i64 @finch_shell(ptr %a18) - %t21 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t21, ptr %a22 - %t23 = call i32 @finch_file_exists(ptr %a22) - %t24 = icmp ne i32 %t23, 0 - %t25 = xor i1 %t24, true - br i1 %t25, label %then8353, label %endif8355 -then8353: - %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 -endif8355: - 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.6004, i64 110) - %t34 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t34, ptr %a35 - store { ptr, i64, i64 } { ptr @.str.6006, 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.cond8356 -each.cond8356: - %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.body8357, label %each.end8359 -each.body8357: - %t46 = load ptr, ptr %a40 - %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %t46, i64 %t44 - %t48 = load { ptr, i64, i64 }, ptr %t47 - store { ptr, i64, i64 } %t48, ptr %a49 - %t50 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t50, ptr %a51 - call void @finch_str_trim(ptr %a52, ptr %a51) - %t53 = load { ptr, i64, i64 }, ptr %a52 - 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.6009, 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 %then8360, label %endif8362 -then8360: - store i1 true, ptr %a30 - br label %each.step8358 -endif8362: - %t61 = load { ptr, i64, i64 }, ptr %a54 - store { ptr, i64, i64 } %t61, ptr %a62 - store { ptr, i64, i64 } { ptr @.str.6011, 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 %then8363, label %endif8365 -then8363: - br label %each.end8359 -endif8365: - %t67 = load i1, ptr %a30 - %t68 = xor i1 %t67, true - br label %logic.from8366 -logic.from8366: - br i1 %t68, label %logic.end8368, label %logic.rhs8367 -logic.rhs8367: - %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.rend8369 -logic.rend8369: - br label %logic.end8368 -logic.end8368: - %t72 = phi i1 [ true, %logic.from8366 ], [ %t71, %logic.rend8369 ] - br i1 %t72, label %then8370, label %endif8372 -then8370: - br label %each.step8358 -endif8372: - %t73 = load { ptr, i64, i64 }, ptr %a54 - store { ptr, i64, i64 } %t73, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.6013, 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 %then8373, label %else8374 -then8373: - %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.6015, i64 124) - %t86 = load { ptr, i64, i64 }, ptr %a82 - store { ptr, i64, i64 } { ptr @.str.6014, 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 - %t91 = load i64, ptr %t79 - %t92 = add i64 %t91, 1 - call void @finch_arr_reserve(ptr %a2, i64 %t92, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t93 = load ptr, ptr %a2 - %t94 = getelementptr inbounds { ptr, i64, i64 }, ptr %t93, i64 %t91 - store { ptr, i64, i64 } %t90, ptr %t94 - store i64 %t92, ptr %t79 - br label %endif8375 -else8374: - %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.6016, 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 - %t101 = load i64, ptr %t95 - %t102 = add i64 %t101, 1 - call void @finch_arr_reserve(ptr %a2, i64 %t102, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t103 = load ptr, ptr %a2 - %t104 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i64 %t101 - store { ptr, i64, i64 } %t100, ptr %t104 - store i64 %t102, ptr %t95 - br label %endif8375 -endif8375: - br label %each.step8358 -each.step8358: - %t105 = load i64, ptr %a41 - %t106 = add i64 %t105, 1 - store i64 %t106, ptr %a41 - br label %each.cond8356 -each.end8359: - %t107 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.6017, 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.6018, 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 - call void @finch_str_copy(ptr %a116, ptr %a117) - %t118 = call i64 @finch_shell(ptr %a116) - %t119 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t119, ptr %a120 - call void @finch.copy.arr_str(ptr %a121, ptr %a120) - %t122 = load { ptr, i64, i64 }, ptr %a121 - ret { ptr, i64, i64 } %t122 + store { ptr, i64, i64 } { ptr @.str.6218, i64 4, i64 0 }, ptr %a20 + call void @finch_str_concat(ptr %a18, ptr %a19, ptr %a20) + store { ptr, i64, i64 } %t17, ptr %a21 + call void @finch_str_drop(ptr %a21) + %t22 = load { ptr, i64, i64 }, ptr %a18 + store { ptr, i64, i64 } %t22, ptr %a23 + %t24 = call { ptr, i64, i64 } @finch.host.tempDir() + store { ptr, i64, i64 } %t24, ptr %a26 + store { ptr, i64, i64 } { ptr @.str.6219, i64 13, i64 0 }, ptr %a27 + call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) + store { ptr, i64, i64 } %t24, ptr %a28 + call void @finch_str_drop(ptr %a28) + %t29 = load { ptr, i64, i64 }, ptr %a25 + %t30 = call i64 @finch.host.pid() + call void @finch_str_from_int(ptr %a31, i64 %t30) + %t32 = load { ptr, i64, i64 }, ptr %a31 + store { ptr, i64, i64 } %t29, ptr %a34 + store { ptr, i64, i64 } %t32, ptr %a35 + call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) + store { ptr, i64, i64 } %t29, ptr %a36 + call void @finch_str_drop(ptr %a36) + store { ptr, i64, i64 } %t32, ptr %a37 + call void @finch_str_drop(ptr %a37) + %t38 = load { ptr, i64, i64 }, ptr %a33 + store { ptr, i64, i64 } %t38, ptr %a40 + store { ptr, i64, i64 } { ptr @.str.6220, i64 2, i64 0 }, ptr %a41 + call void @finch_str_concat(ptr %a39, ptr %a40, ptr %a41) + store { ptr, i64, i64 } %t38, ptr %a42 + call void @finch_str_drop(ptr %a42) + %t43 = load { ptr, i64, i64 }, ptr %a39 + store { ptr, i64, i64 } %t43, ptr %a44 + %t45 = load { ptr, i64, i64 }, ptr %a44 + store { ptr, i64, i64 } %t45, ptr %a46 + store { ptr, i64, i64 } { ptr @.str.6221, i64 0, i64 0 }, ptr %a47 + %t48 = call i32 @finch_write_file(ptr %a46, ptr %a47) + %t49 = icmp ne i32 %t48, 0 + %t50 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t50, ptr %a52 + store { ptr, i64, i64 } { ptr @.str.6222, i64 12, 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 %a44 + %t56 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t55) + store { ptr, i64, i64 } %t54, ptr %a58 + store { ptr, i64, i64 } %t56, ptr %a59 + call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) + store { ptr, i64, i64 } %t54, ptr %a60 + call void @finch_str_drop(ptr %a60) + store { ptr, i64, i64 } %t56, ptr %a61 + call void @finch_str_drop(ptr %a61) + %t62 = load { ptr, i64, i64 }, ptr %a57 + store { ptr, i64, i64 } %t62, ptr %a64 + store { ptr, i64, i64 } { ptr @.str.6223, i64 4, i64 0 }, ptr %a65 + call void @finch_str_concat(ptr %a63, ptr %a64, ptr %a65) + store { ptr, i64, i64 } %t62, ptr %a66 + call void @finch_str_drop(ptr %a66) + %t67 = load { ptr, i64, i64 }, ptr %a63 + %t68 = load { ptr, i64, i64 }, ptr %a23 + %t69 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t68) + store { ptr, i64, i64 } %t67, ptr %a71 + store { ptr, i64, i64 } %t69, ptr %a72 + call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) + store { ptr, i64, i64 } %t67, ptr %a73 + call void @finch_str_drop(ptr %a73) + store { ptr, i64, i64 } %t69, ptr %a74 + call void @finch_str_drop(ptr %a74) + %t75 = load { ptr, i64, i64 }, ptr %a70 + store { ptr, i64, i64 } %t75, ptr %a77 + store { ptr, i64, i64 } { ptr @.str.6224, i64 3, i64 0 }, ptr %a78 + call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78) + store { ptr, i64, i64 } %t75, ptr %a79 + call void @finch_str_drop(ptr %a79) + %t80 = load { ptr, i64, i64 }, ptr %a76 + %t81 = call { ptr, i64, i64 } @finch.host.nullDevice() + store { ptr, i64, i64 } %t80, ptr %a83 + store { ptr, i64, i64 } %t81, ptr %a84 + call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84) + store { ptr, i64, i64 } %t80, ptr %a85 + call void @finch_str_drop(ptr %a85) + store { ptr, i64, i64 } %t81, ptr %a86 + call void @finch_str_drop(ptr %a86) + %t87 = load { ptr, i64, i64 }, ptr %a82 + %t88 = call i64 @finch.host.run({ ptr, i64, i64 } %t87) + store { ptr, i64, i64 } %t87, ptr %a89 + call void @finch_str_drop(ptr %a89) + %t90 = load { ptr, i64, i64 }, ptr %a44 + call void @finch.host.remove({ ptr, i64, i64 } %t90) + %t91 = load { ptr, i64, i64 }, ptr %a23 + store { ptr, i64, i64 } %t91, ptr %a92 + %t93 = call i32 @finch_file_exists(ptr %a92) + %t94 = icmp ne i32 %t93, 0 + %t95 = xor i1 %t94, true + br i1 %t95, label %then8835, label %endif8837 +then8835: + %t96 = load { ptr, i64, i64 }, ptr %a2 + call void @finch_str_drop(ptr %a44) + call void @finch_str_drop(ptr %a23) + ret { ptr, i64, i64 } %t96 +endif8837: + store i1 false, ptr %a97 + %t98 = load { ptr, i64, i64 }, ptr %a23 + store { ptr, i64, i64 } %t98, ptr %a99 + call void @finch_read_file(ptr %a100, ptr %a99, ptr @.str.6225, i64 114) + %t101 = load { ptr, i64, i64 }, ptr %a100 + store { ptr, i64, i64 } %t101, ptr %a102 + store { ptr, i64, i64 } { ptr @.str.6227, i64 1, i64 0 }, ptr %a104 + call void @finch_str_split(ptr %a105, ptr %a102, ptr %a104) + %t106 = load { ptr, i64, i64 }, ptr %a105 + store { ptr, i64, i64 } %t101, ptr %a107 + call void @finch_str_drop(ptr %a107) + store { ptr, i64, i64 } %t106, ptr %a108 + store i64 0, ptr %a109 + br label %each.cond8838 +each.cond8838: + %t110 = getelementptr inbounds { ptr, i64, i64 }, ptr %a108, i32 0, i32 1 + %t111 = load i64, ptr %t110 + %t112 = load i64, ptr %a109 + %t113 = icmp slt i64 %t112, %t111 + br i1 %t113, label %each.body8839, label %each.end8841 +each.body8839: + %t114 = load ptr, ptr %a108 + %t115 = getelementptr inbounds { ptr, i64, i64 }, ptr %t114, i64 %t112 + %t116 = load { ptr, i64, i64 }, ptr %t115 + store { ptr, i64, i64 } %t116, ptr %a117 + %t118 = load { ptr, i64, i64 }, ptr %a117 + store { ptr, i64, i64 } %t118, ptr %a119 + call void @finch_str_trim(ptr %a120, ptr %a119) + %t121 = load { ptr, i64, i64 }, ptr %a120 + store { ptr, i64, i64 } %t121, ptr %a122 + %t123 = load { ptr, i64, i64 }, ptr %a122 + store { ptr, i64, i64 } %t123, ptr %a124 + store { ptr, i64, i64 } { ptr @.str.6230, i64 34, i64 0 }, ptr %a126 + %t127 = call i32 @finch_str_starts(ptr %a124, ptr %a126) + %t128 = icmp ne i32 %t127, 0 + br i1 %t128, label %then8842, label %endif8844 +then8842: + store i1 true, ptr %a97 + call void @finch_str_drop(ptr %a122) + br label %each.step8840 +endif8844: + %t129 = load { ptr, i64, i64 }, ptr %a122 + store { ptr, i64, i64 } %t129, ptr %a130 + store { ptr, i64, i64 } { ptr @.str.6232, i64 19, i64 0 }, ptr %a132 + %t133 = call i32 @finch_str_starts(ptr %a130, ptr %a132) + %t134 = icmp ne i32 %t133, 0 + br i1 %t134, label %then8845, label %endif8847 +then8845: + call void @finch_str_drop(ptr %a122) + br label %each.end8841 +endif8847: + %t135 = load i1, ptr %a97 + %t136 = xor i1 %t135, true + br label %logic.from8848 +logic.from8848: + br i1 %t136, label %logic.end8850, label %logic.rhs8849 +logic.rhs8849: + %t137 = getelementptr inbounds { ptr, i64, i64 }, ptr %a122, i32 0, i32 1 + %t138 = load i64, ptr %t137 + %t139 = icmp eq i64 %t138, 0 + br label %logic.rend8851 +logic.rend8851: + br label %logic.end8850 +logic.end8850: + %t140 = phi i1 [ true, %logic.from8848 ], [ %t139, %logic.rend8851 ] + br i1 %t140, label %then8852, label %endif8854 +then8852: + call void @finch_str_drop(ptr %a122) + br label %each.step8840 +endif8854: + %t141 = load { ptr, i64, i64 }, ptr %a122 + store { ptr, i64, i64 } %t141, ptr %a142 + store { ptr, i64, i64 } { ptr @.str.6234, i64 22, i64 0 }, ptr %a144 + %t145 = call i32 @finch_str_ends(ptr %a142, ptr %a144) + %t146 = icmp ne i32 %t145, 0 + br i1 %t146, label %then8855, label %else8856 +then8855: + %t147 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t148 = load { ptr, i64, i64 }, ptr %a122 + store { ptr, i64, i64 } %t148, ptr %a149 + %t151 = getelementptr inbounds { ptr, i64, i64 }, ptr %a122, i32 0, i32 1 + %t152 = load i64, ptr %t151 + %t153 = sub i64 %t152, 22 + call void @finch_str_sub(ptr %a150, ptr %a149, i64 0, i64 %t153, ptr @.str.6236, i64 128) + %t154 = load { ptr, i64, i64 }, ptr %a150 + store { ptr, i64, i64 } { ptr @.str.6235, i64 11, i64 0 }, ptr %a156 + store { ptr, i64, i64 } %t154, ptr %a157 + call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) + store { ptr, i64, i64 } %t154, ptr %a158 + call void @finch_str_drop(ptr %a158) + %t159 = load { ptr, i64, i64 }, ptr %a155 + %t160 = load i64, ptr %t147 + %t161 = add i64 %t160, 1 + call void @finch_arr_reserve(ptr %a2, i64 %t161, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t162 = load ptr, ptr %a2 + %t163 = getelementptr inbounds { ptr, i64, i64 }, ptr %t162, i64 %t160 + store { ptr, i64, i64 } %t159, ptr %t163 + store i64 %t161, ptr %t147 + br label %endif8857 +else8856: + %t164 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t165 = load { ptr, i64, i64 }, ptr %a122 + store { ptr, i64, i64 } { ptr @.str.6237, i64 8, 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 + %t170 = load i64, ptr %t164 + %t171 = add i64 %t170, 1 + call void @finch_arr_reserve(ptr %a2, i64 %t171, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t172 = load ptr, ptr %a2 + %t173 = getelementptr inbounds { ptr, i64, i64 }, ptr %t172, i64 %t170 + store { ptr, i64, i64 } %t169, ptr %t173 + store i64 %t171, ptr %t164 + br label %endif8857 +endif8857: + call void @finch_str_drop(ptr %a122) + br label %each.step8840 +each.step8840: + %t174 = load i64, ptr %a109 + %t175 = add i64 %t174, 1 + store i64 %t175, ptr %a109 + br label %each.cond8838 +each.end8841: + call void @finch.drop.arr_str(ptr %a108) + %t176 = load { ptr, i64, i64 }, ptr %a23 + call void @finch.host.remove({ ptr, i64, i64 } %t176) + %t177 = load { ptr, i64, i64 }, ptr %a2 + call void @finch_str_drop(ptr %a44) + call void @finch_str_drop(ptr %a23) + ret { ptr, i64, i64 } %t177 } define internal { ptr, i64, i64 } @finch.cimport.recordName(ptr %p0, %S.C.CXType %p1) { @@ -77809,12 +93753,13 @@ entry: %a67 = alloca { ptr, i64, i64 }, align 16 %a68 = alloca { ptr, i64, i64 }, align 16 %a69 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca i32, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 + %a70 = alloca { ptr, i64, i64 }, align 16 + %a73 = alloca { ptr, i64, i64 }, align 16 + %a79 = alloca { ptr, i64, i64 }, align 16 + %a80 = alloca i32, align 16 + %a90 = alloca { ptr, i64, i64 }, align 16 %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 + %a94 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store %S.C.CXType %p1, ptr %a2 %t4 = load %S.C.CXType, ptr %a2 @@ -77831,38 +93776,38 @@ entry: store { ptr, i64, i64 } %t13, ptr %a14 %t15 = load ptr, ptr %a1 %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic8376, label %ok8377 -panic8376: - call void @finch_panic(ptr @.str.6019, i64 139, ptr @.str.6020) + br i1 %t16, label %panic8858, label %ok8859 +panic8858: + call void @finch_panic(ptr @.str.6238, i64 143, ptr @.str.6239) unreachable -ok8377: +ok8859: %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 %then8378, label %endif8380 -then8378: + br i1 %t21, label %then8860, label %endif8862 +then8860: %t22 = load ptr, ptr %a1 %t23 = icmp eq ptr %t22, null - br i1 %t23, label %panic8381, label %ok8382 -panic8381: - call void @finch_panic(ptr @.str.6021, i64 140, ptr @.str.6022) + br i1 %t23, label %panic8863, label %ok8864 +panic8863: + call void @finch_panic(ptr @.str.6240, i64 144, ptr @.str.6241) unreachable -ok8382: +ok8864: %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.missing8383, label %map.found8384 -map.missing8383: + br i1 %t28, label %map.missing8865, label %map.found8866 +map.missing8865: 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.6023, i64 140, ptr %a29) + call void @finch_map_missing(ptr @.str.6242, i64 144, ptr %a29) unreachable -map.found8384: +map.found8866: %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 @@ -77871,8 +93816,9 @@ map.found8384: store { ptr, i64, i64 } %t35, ptr %a36 call void @finch_str_copy(ptr %a37, ptr %a36) %t38 = load { ptr, i64, i64 }, ptr %a37 + call void @finch_str_drop(ptr %a14) ret { ptr, i64, i64 } %t38 -endif8380: +endif8862: %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) @@ -77883,87 +93829,93 @@ endif8380: %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.from8385 -logic.from8385: - br i1 %t48, label %logic.end8387, label %logic.rhs8386 -logic.rhs8386: + br label %logic.from8867 +logic.from8867: + br i1 %t48, label %logic.end8869, label %logic.rhs8868 +logic.rhs8868: %t49 = load { ptr, i64, i64 }, ptr %a45 store { ptr, i64, i64 } %t49, ptr %a50 - store { ptr, i64, i64 } { ptr @.str.6025, i64 1, i64 0 }, ptr %a52 + store { ptr, i64, i64 } { ptr @.str.6244, 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.rend8388 -logic.rend8388: - br label %logic.end8387 -logic.end8387: - %t55 = phi i1 [ true, %logic.from8385 ], [ %t54, %logic.rend8388 ] - br i1 %t55, label %then8389, label %endif8391 -then8389: + br label %logic.rend8870 +logic.rend8870: + br label %logic.end8869 +logic.end8869: + %t55 = phi i1 [ true, %logic.from8867 ], [ %t54, %logic.rend8870 ] + br i1 %t55, label %then8871, label %endif8873 +then8871: %t56 = load ptr, ptr %a1 %t57 = icmp eq ptr %t56, null - br i1 %t57, label %panic8392, label %ok8393 -panic8392: - call void @finch_panic(ptr @.str.6026, i64 144, ptr @.str.6027) + br i1 %t57, label %panic8874, label %ok8875 +panic8874: + call void @finch_panic(ptr @.str.6245, i64 148, ptr @.str.6246) unreachable -ok8393: +ok8875: %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 %panic8394, label %ok8395 -panic8394: - call void @finch_panic(ptr @.str.6029, i64 145, ptr @.str.6030) + br i1 %t62, label %panic8876, label %ok8877 +panic8876: + call void @finch_panic(ptr @.str.6248, i64 149, ptr @.str.6249) unreachable -ok8395: +ok8877: %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.6028, i64 12, i64 0 }, ptr %a68 + store { ptr, i64, i64 } { ptr @.str.6247, 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 %endif8391 -endif8391: - %t71 = load { ptr, i64, i64 }, ptr %a45 - %t72 = load ptr, ptr %a1 - %t73 = icmp eq ptr %t72, null - br i1 %t73, label %panic8396, label %ok8397 -panic8396: - call void @finch_panic(ptr @.str.6031, i64 147, ptr @.str.6032) + store { ptr, i64, i64 } %t66, ptr %a70 + call void @finch_str_drop(ptr %a70) + %t71 = load { ptr, i64, i64 }, ptr %a67 + %t72 = load { ptr, i64, i64 }, ptr %a45 + store { ptr, i64, i64 } %t71, ptr %a45 + store { ptr, i64, i64 } %t72, ptr %a73 + call void @finch_str_drop(ptr %a73) + br label %endif8873 +endif8873: + %t74 = load { ptr, i64, i64 }, ptr %a45 + %t75 = load ptr, ptr %a1 + %t76 = icmp eq ptr %t75, null + br i1 %t76, label %panic8878, label %ok8879 +panic8878: + call void @finch_panic(ptr @.str.6250, i64 151, ptr @.str.6251) unreachable -ok8397: - %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 - store i32 0, ptr %a77 - %t78 = call i64 @finch_map_slot(ptr %t74, ptr %a76, 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 %a77) - %t79 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t74, i32 0, i32 0 - %t80 = load ptr, ptr %t79 - %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.new8398, label %map.have8399 -map.new8398: - %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.have8399 -map.have8399: - %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) - %t89 = load { ptr, i64, i64 }, ptr %a88 - store { ptr, i64, i64 } %t89, ptr %t86 - %t90 = load { ptr, i64, i64 }, ptr %a45 - store { ptr, i64, i64 } %t90, ptr %a91 - call void @finch_str_copy(ptr %a92, ptr %a91) - %t93 = load { ptr, i64, i64 }, ptr %a92 - ret { ptr, i64, i64 } %t93 +ok8879: + %t77 = getelementptr inbounds %S.cimport.Importer, ptr %t75, i32 0, i32 3 + %t78 = load { ptr, i64, i64 }, ptr %a14 + store { ptr, i64, i64 } %t78, ptr %a79 + store i32 0, ptr %a80 + %t81 = call i64 @finch_map_slot(ptr %t77, ptr %a79, 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 %a80) + %t82 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t77, i32 0, i32 0 + %t83 = load ptr, ptr %t82 + %t84 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t83, i64 %t81 + %t85 = load i32, ptr %a80 + %t86 = icmp ne i32 %t85, 0 + br i1 %t86, label %map.new8880, label %map.have8881 +map.new8880: + %t87 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t84, i32 0, i32 1 + call void @finch_str_copy(ptr %t87, ptr %a79) + %t88 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t84, i32 0, i32 2 + store { ptr, i64, i64 } zeroinitializer, ptr %t88 + br label %map.have8881 +map.have8881: + %t89 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t84, i32 0, i32 2 + store { ptr, i64, i64 } %t74, ptr %a90 + call void @finch_str_copy(ptr %a91, ptr %a90) + %t92 = load { ptr, i64, i64 }, ptr %a91 + %t93 = load { ptr, i64, i64 }, ptr %t89 + store { ptr, i64, i64 } %t92, ptr %t89 + store { ptr, i64, i64 } %t93, ptr %a94 + call void @finch_str_drop(ptr %a94) + %t95 = load { ptr, i64, i64 }, ptr %a45 + call void @finch_str_drop(ptr %a14) + ret { ptr, i64, i64 } %t95 } define internal i32 @finch.c.cimport.visitField(ptr byval(%S.C.CXCursor) align 8 %c0, ptr %c1) { @@ -77990,28 +93942,26 @@ entry: %a23 = alloca { ptr, i64, i64 }, align 16 %a29 = alloca { ptr, i64, i64 }, align 16 %a36 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca %S.C.CXType, align 16 - %a47 = alloca i64, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca i32, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca %S.C.CXType, align 16 - %a76 = alloca %S.cimport.CStruct, align 16 - %a78 = alloca %S.C.CXCursor, align 16 - %a85 = alloca %S.cimport.FieldCtx, align 16 - %a87 = alloca %S.C.CXType, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca i32, align 16 - %a113 = alloca %S.cimport.CStruct, align 16 - %a114 = alloca %S.cimport.CStruct, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 + %a42 = alloca %S.C.CXType, align 16 + %a44 = alloca i64, align 16 + %a51 = alloca { ptr, i64, i64 }, align 16 + %a52 = alloca i32, align 16 + %a63 = alloca { ptr, i64, i64 }, align 16 + %a64 = alloca { ptr, i64, i64 }, align 16 + %a70 = alloca %S.C.CXType, align 16 + %a73 = alloca %S.cimport.CStruct, align 16 + %a75 = alloca %S.C.CXCursor, align 16 + %a80 = alloca { ptr, i64, i64 }, align 16 + %a84 = alloca %S.cimport.FieldCtx, align 16 + %a86 = alloca %S.C.CXType, align 16 + %a92 = alloca { ptr, i64, i64 }, align 16 + %a106 = alloca { ptr, i64, i64 }, align 16 + %a107 = alloca i32, align 16 + %a117 = alloca %S.cimport.CStruct, align 16 + %a118 = alloca %S.cimport.CStruct, align 16 + %a121 = alloca %S.cimport.CStruct, align 16 + %a128 = alloca { ptr, i64, i64 }, align 16 + %a129 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store %S.C.CXType %p1, ptr %a2 %t4 = load %S.C.CXType, ptr %a2 @@ -78037,187 +93987,208 @@ entry: store { ptr, i64, i64 } %t22, ptr %a23 %t24 = load ptr, ptr %a1 %t25 = icmp eq ptr %t24, null - br i1 %t25, label %panic8400, label %ok8401 -panic8400: - call void @finch_panic(ptr @.str.6033, i64 157, ptr @.str.6034) + br i1 %t25, label %panic8882, label %ok8883 +panic8882: + call void @finch_panic(ptr @.str.6252, i64 161, ptr @.str.6253) unreachable -ok8401: +ok8883: %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.from8402 -logic.from8402: - br i1 %t31, label %logic.end8404, label %logic.rhs8403 -logic.rhs8403: + br label %logic.from8884 +logic.from8884: + br i1 %t31, label %logic.end8886, label %logic.rhs8885 +logic.rhs8885: %t32 = load ptr, ptr %a1 %t33 = icmp eq ptr %t32, null - br i1 %t33, label %panic8405, label %ok8406 -panic8405: - call void @finch_panic(ptr @.str.6035, i64 157, ptr @.str.6036) + br i1 %t33, label %panic8887, label %ok8888 +panic8887: + call void @finch_panic(ptr @.str.6254, i64 161, ptr @.str.6255) unreachable -ok8406: +ok8888: %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.rend8407 -logic.rend8407: - br label %logic.end8404 -logic.end8404: - %t39 = phi i1 [ true, %logic.from8402 ], [ %t38, %logic.rend8407 ] - br i1 %t39, label %then8408, label %endif8410 -then8408: + br label %logic.rend8889 +logic.rend8889: + br label %logic.end8886 +logic.end8886: + %t39 = phi i1 [ true, %logic.from8884 ], [ %t38, %logic.rend8889 ] + br i1 %t39, label %then8890, label %endif8892 +then8890: %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 -endif8410: - %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 %then8411, label %endif8413 -then8411: - ret { ptr, i64, i64 } { ptr @.str.6037, i64 0, i64 0 } -endif8413: - %t50 = load ptr, ptr %a1 - %t51 = icmp eq ptr %t50, null - br i1 %t51, label %panic8414, label %ok8415 -panic8414: - call void @finch_panic(ptr @.str.6038, i64 164, ptr @.str.6039) + call void @finch_str_drop(ptr %a19) + ret { ptr, i64, i64 } %t40 +endif8892: + %t41 = load %S.C.CXType, ptr %a7 + store %S.C.CXType %t41, ptr %a42 + %t43 = call i64 @clang_Type_getSizeOf(ptr byval(%S.C.CXType) align 8 %a42) + store i64 %t43, ptr %a44 + %t45 = load i64, ptr %a44 + %t46 = icmp slt i64 %t45, 0 + br i1 %t46, label %then8893, label %endif8895 +then8893: + call void @finch_str_drop(ptr %a23) + call void @finch_str_drop(ptr %a19) + ret { ptr, i64, i64 } { ptr @.str.6256, i64 0, i64 0 } +endif8895: + %t47 = load ptr, ptr %a1 + %t48 = icmp eq ptr %t47, null + br i1 %t48, label %panic8896, label %ok8897 +panic8896: + call void @finch_panic(ptr @.str.6257, i64 168, ptr @.str.6258) unreachable -ok8415: - %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 - store i32 0, ptr %a55 - %t56 = call i64 @finch_map_slot(ptr %t52, ptr %a54, 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, ptr %a55) - %t57 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t52, i32 0, i32 0 - %t58 = load ptr, ptr %t57 - %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.new8416, label %map.have8417 -map.new8416: - %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.have8417 -map.have8417: - %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 - store { ptr, i64, i64 } %t65, ptr %a66 - call void @finch_str_copy(ptr %a67, ptr %a66) - %t68 = load { ptr, i64, i64 }, ptr %a67 - %t69 = insertvalue %S.cimport.CStruct zeroinitializer, { ptr, i64, i64 } %t68, 0 - %t70 = load i64, ptr %a47 - %t71 = insertvalue %S.cimport.CStruct %t69, i64 %t70, 2 - %t72 = load %S.C.CXType, ptr %a7 - store %S.C.CXType %t72, ptr %a73 - %t74 = call i64 @clang_Type_getAlignOf(ptr byval(%S.C.CXType) align 8 %a73) - %t75 = insertvalue %S.cimport.CStruct %t71, i64 %t74, 3 - store %S.cimport.CStruct %t75, ptr %a76 - %t77 = load %S.C.CXCursor, ptr %a12 - 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 %then8418, label %endif8420 -then8418: - %t81 = getelementptr inbounds %S.cimport.CStruct, ptr %a76, i32 0, i32 4 - store { ptr, i64, i64 } { ptr @.str.6040, i64 12, i64 0 }, ptr %t81 - br label %endif8420 -endif8420: - %t82 = load ptr, ptr %a1 - %t83 = insertvalue %S.cimport.FieldCtx zeroinitializer, ptr %t82, 0 - %t84 = insertvalue %S.cimport.FieldCtx %t83, ptr %a76, 1 - store %S.cimport.FieldCtx %t84, ptr %a85 - %t86 = load %S.C.CXType, ptr %a7 - store %S.C.CXType %t86, ptr %a87 - %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 %panic8421, label %ok8422 -panic8421: - call void @finch_panic(ptr @.str.6041, i64 172, ptr @.str.6042) +ok8897: + %t49 = getelementptr inbounds %S.cimport.Importer, ptr %t47, i32 0, i32 4 + %t50 = load { ptr, i64, i64 }, ptr %a19 + store { ptr, i64, i64 } %t50, ptr %a51 + store i32 0, ptr %a52 + %t53 = call i64 @finch_map_slot(ptr %t49, ptr %a51, 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, ptr %a52) + %t54 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t49, i32 0, i32 0 + %t55 = load ptr, ptr %t54 + %t56 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t55, i64 %t53 + %t57 = load i32, ptr %a52 + %t58 = icmp ne i32 %t57, 0 + br i1 %t58, label %map.new8898, label %map.have8899 +map.new8898: + %t59 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t56, i32 0, i32 1 + call void @finch_str_copy(ptr %t59, ptr %a51) + %t60 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t56, i32 0, i32 2 + store i1 false, ptr %t60 + br label %map.have8899 +map.have8899: + %t61 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t56, i32 0, i32 2 + store i1 true, ptr %t61 + %t62 = load { ptr, i64, i64 }, ptr %a23 + store { ptr, i64, i64 } %t62, ptr %a63 + call void @finch_str_copy(ptr %a64, ptr %a63) + %t65 = load { ptr, i64, i64 }, ptr %a64 + %t66 = insertvalue %S.cimport.CStruct zeroinitializer, { ptr, i64, i64 } %t65, 0 + %t67 = load i64, ptr %a44 + %t68 = insertvalue %S.cimport.CStruct %t66, i64 %t67, 2 + %t69 = load %S.C.CXType, ptr %a7 + store %S.C.CXType %t69, ptr %a70 + %t71 = call i64 @clang_Type_getAlignOf(ptr byval(%S.C.CXType) align 8 %a70) + %t72 = insertvalue %S.cimport.CStruct %t68, i64 %t71, 3 + store %S.cimport.CStruct %t72, ptr %a73 + %t74 = load %S.C.CXCursor, ptr %a12 + store %S.C.CXCursor %t74, ptr %a75 + %t76 = call i32 @clang_getCursorKind(ptr byval(%S.C.CXCursor) align 8 %a75) + %t77 = icmp eq i32 %t76, 3 + br i1 %t77, label %then8900, label %endif8902 +then8900: + %t78 = getelementptr inbounds %S.cimport.CStruct, ptr %a73, i32 0, i32 4 + %t79 = load { ptr, i64, i64 }, ptr %t78 + store { ptr, i64, i64 } { ptr @.str.6259, i64 12, i64 0 }, ptr %t78 + store { ptr, i64, i64 } %t79, ptr %a80 + call void @finch_str_drop(ptr %a80) + br label %endif8902 +endif8902: + %t81 = load ptr, ptr %a1 + %t82 = insertvalue %S.cimport.FieldCtx zeroinitializer, ptr %t81, 0 + %t83 = insertvalue %S.cimport.FieldCtx %t82, ptr %a73, 1 + store %S.cimport.FieldCtx %t83, ptr %a84 + %t85 = load %S.C.CXType, ptr %a7 + store %S.C.CXType %t85, ptr %a86 + %t87 = call i32 @clang_Type_visitFields(ptr byval(%S.C.CXType) align 8 %a86, ptr @finch.c.cimport.visitField, ptr %a84) + %t88 = load ptr, ptr %a1 + %t89 = icmp eq ptr %t88, null + br i1 %t89, label %panic8903, label %ok8904 +panic8903: + call void @finch_panic(ptr @.str.6260, i64 176, ptr @.str.6261) unreachable -ok8422: - %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.hit8423, label %remove.end8424 -remove.hit8423: - 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.end8424 -remove.end8424: - %t96 = load %S.cimport.CStruct, ptr %a76 - %t97 = load ptr, ptr %a1 - %t98 = icmp eq ptr %t97, null - br i1 %t98, label %panic8425, label %ok8426 -panic8425: - call void @finch_panic(ptr @.str.6043, i64 173, ptr @.str.6044) +ok8904: + %t90 = getelementptr inbounds %S.cimport.Importer, ptr %t88, i32 0, i32 4 + %t91 = load { ptr, i64, i64 }, ptr %a19 + store { ptr, i64, i64 } %t91, ptr %a92 + %t93 = call i64 @finch_map_find(ptr %t90, ptr %a92, 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) + %t94 = icmp sge i64 %t93, 0 + br i1 %t94, label %remove.hit8905, label %remove.end8906 +remove.hit8905: + %t95 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t90, i32 0, i32 0 + %t96 = load ptr, ptr %t95 + %t97 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t96, i64 %t93 + %t98 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t97, i32 0, i32 1 + call void @finch_str_drop(ptr %t98) + %t99 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t97, i32 0, i32 2 + call void @finch_map_remove_at(ptr %t90, i64 %t93, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i1 }, ptr null, i32 1) to i64)) + br label %remove.end8906 +remove.end8906: + %t100 = load %S.cimport.CStruct, ptr %a73 + %t101 = load ptr, ptr %a1 + %t102 = icmp eq ptr %t101, null + br i1 %t102, label %panic8907, label %ok8908 +panic8907: + call void @finch_panic(ptr @.str.6262, i64 177, ptr @.str.6263) unreachable -ok8426: - %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 - store { ptr, i64, i64 } %t101, ptr %a102 - store i32 0, ptr %a103 - %t104 = call i64 @finch_map_slot(ptr %t100, ptr %a102, 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, ptr %a103) - %t105 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t100, i32 0, i32 0 - %t106 = load ptr, ptr %t105 - %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.new8427, label %map.have8428 -map.new8427: - %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.have8428 -map.have8428: - %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) - %t115 = load %S.cimport.CStruct, ptr %a114 - store %S.cimport.CStruct %t115, ptr %t112 - %t116 = load ptr, ptr %a1 - %t117 = icmp eq ptr %t116, null - br i1 %t117, label %panic8429, label %ok8430 -panic8429: - call void @finch_panic(ptr @.str.6045, i64 174, ptr @.str.6046) +ok8908: + %t103 = getelementptr inbounds %S.cimport.Importer, ptr %t101, i32 0, i32 0 + %t104 = getelementptr inbounds %S.cimport.CImports, ptr %t103, i32 0, i32 3 + %t105 = load { ptr, i64, i64 }, ptr %a23 + store { ptr, i64, i64 } %t105, ptr %a106 + store i32 0, ptr %a107 + %t108 = call i64 @finch_map_slot(ptr %t104, ptr %a106, 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, ptr %a107) + %t109 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t104, i32 0, i32 0 + %t110 = load ptr, ptr %t109 + %t111 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t110, i64 %t108 + %t112 = load i32, ptr %a107 + %t113 = icmp ne i32 %t112, 0 + br i1 %t113, label %map.new8909, label %map.have8910 +map.new8909: + %t114 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t111, i32 0, i32 1 + call void @finch_str_copy(ptr %t114, ptr %a106) + %t115 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t111, i32 0, i32 2 + store %S.cimport.CStruct zeroinitializer, ptr %t115 + br label %map.have8910 +map.have8910: + %t116 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t111, i32 0, i32 2 + store %S.cimport.CStruct %t100, ptr %a117 + call void @finch.copy.S_cimport_CStruct(ptr %a118, ptr %a117) + %t119 = load %S.cimport.CStruct, ptr %a118 + %t120 = load %S.cimport.CStruct, ptr %t116 + store %S.cimport.CStruct %t119, ptr %t116 + store %S.cimport.CStruct %t120, ptr %a121 + call void @finch.drop.S_cimport_CStruct(ptr %a121) + %t122 = load ptr, ptr %a1 + %t123 = icmp eq ptr %t122, null + br i1 %t123, label %panic8911, label %ok8912 +panic8911: + call void @finch_panic(ptr @.str.6264, i64 178, ptr @.str.6265) unreachable -ok8430: - %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 - %t121 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t121, ptr %a122 - call void @finch_str_copy(ptr %a123, ptr %a122) - %t124 = load { ptr, i64, i64 }, ptr %a123 - %t125 = load i64, ptr %t120 - %t126 = add i64 %t125, 1 - call void @finch_arr_reserve(ptr %t119, i64 %t126, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t127 = load ptr, ptr %t119 - %t128 = getelementptr inbounds { ptr, i64, i64 }, ptr %t127, i64 %t125 - store { ptr, i64, i64 } %t124, ptr %t128 - store i64 %t126, ptr %t120 - %t129 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t129, ptr %a130 - call void @finch_str_copy(ptr %a131, ptr %a130) - %t132 = load { ptr, i64, i64 }, ptr %a131 - ret { ptr, i64, i64 } %t132 +ok8912: + %t124 = getelementptr inbounds %S.cimport.Importer, ptr %t122, i32 0, i32 0 + %t125 = getelementptr inbounds %S.cimport.CImports, ptr %t124, i32 0, i32 4 + %t126 = getelementptr inbounds { ptr, i64, i64 }, ptr %t125, i32 0, i32 1 + %t127 = load { ptr, i64, i64 }, ptr %a23 + store { ptr, i64, i64 } %t127, ptr %a128 + call void @finch_str_copy(ptr %a129, ptr %a128) + %t130 = load { ptr, i64, i64 }, ptr %a129 + %t131 = load i64, ptr %t126 + %t132 = add i64 %t131, 1 + call void @finch_arr_reserve(ptr %t125, i64 %t132, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t133 = load ptr, ptr %t125 + %t134 = getelementptr inbounds { ptr, i64, i64 }, ptr %t133, i64 %t131 + store { ptr, i64, i64 } %t130, ptr %t134 + store i64 %t132, ptr %t126 + %t135 = load { ptr, i64, i64 }, ptr %a23 + call void @finch.drop.S_cimport_CStruct(ptr %a73) + call void @finch_str_drop(ptr %a19) + ret { ptr, i64, i64 } %t135 +} + +define internal void @finch.drop.S_cimport_Mapped(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.cimport.Mapped, ptr %a, i32 0, i32 0 + call void @finch.drop.S_ast_Type(ptr %t1) + %t2 = getelementptr inbounds %S.cimport.Mapped, ptr %a, i32 0, i32 1 + call void @finch_str_drop(ptr %t2) + ret void } define internal i32 @finch.cimport.visitField(%S.C.CXCursor %p0, ptr %p1) { @@ -78237,14 +94208,16 @@ entry: %a27 = alloca %S.C.CXType, align 16 %a31 = alloca %S.C.CXType, align 16 %a35 = alloca %S.C.CXCursor, align 16 - %a48 = alloca %S.C.CXCursor, align 16 - %a50 = alloca %S.C.CXType, align 16 - %a52 = alloca %S.C.CXCursor, align 16 - %a63 = alloca %S.cimport.Mapped, align 16 - %a69 = alloca %S.ast.Type, align 16 - %a70 = alloca %S.ast.Type, align 16 - %a94 = alloca %S.cimport.CField, align 16 - %a95 = alloca %S.cimport.CField, align 16 + %a45 = alloca { ptr, i64, i64 }, align 16 + %a50 = alloca %S.C.CXCursor, align 16 + %a52 = alloca %S.C.CXType, align 16 + %a54 = alloca %S.C.CXCursor, align 16 + %a65 = alloca %S.cimport.Mapped, align 16 + %a71 = alloca %S.ast.Type, align 16 + %a72 = alloca %S.ast.Type, align 16 + %a75 = alloca %S.ast.Type, align 16 + %a98 = alloca %S.cimport.CField, align 16 + %a99 = alloca %S.cimport.CField, align 16 store %S.C.CXCursor %p0, ptr %a1 store ptr %p1, ptr %a2 %t3 = load ptr, ptr %a2 @@ -78285,148 +94258,156 @@ 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 %then8431, label %else8432 -then8431: + br i1 %t37, label %then8913, label %else8914 +then8913: %t38 = load ptr, ptr %a4 %t39 = icmp eq ptr %t38, null - br i1 %t39, label %panic8434, label %ok8435 -panic8434: - call void @finch_panic(ptr @.str.6048, i64 191, ptr @.str.6049) + br i1 %t39, label %panic8916, label %ok8917 +panic8916: + call void @finch_panic(ptr @.str.6267, i64 195, ptr @.str.6268) unreachable -ok8435: +ok8917: %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 %panic8436, label %ok8437 -panic8436: - call void @finch_panic(ptr @.str.6050, i64 191, ptr @.str.6051) + br i1 %t42, label %panic8918, label %ok8919 +panic8918: + call void @finch_panic(ptr @.str.6269, i64 195, ptr @.str.6270) unreachable -ok8437: +ok8919: %t43 = getelementptr inbounds %S.cimport.CStruct, ptr %t41, i32 0, i32 4 - store { ptr, i64, i64 } { ptr @.str.6047, 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 %endif8433 -else8432: - %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.from8438 -logic.from8438: - br i1 %t47, label %logic.rhs8439, label %logic.end8440 -logic.rhs8439: - %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) - %t51 = load %S.C.CXCursor, ptr %a48 - 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.rend8441 -logic.rend8441: - br label %logic.end8440 -logic.end8440: - %t55 = phi i1 [ false, %logic.from8438 ], [ %t54, %logic.rend8441 ] - br i1 %t55, label %then8442, label %else8443 -then8442: - %t56 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 5 - store i1 true, ptr %t56 - br label %endif8444 -else8443: - %t57 = load ptr, ptr %a4 - %t58 = icmp eq ptr %t57, null - br i1 %t58, label %panic8445, label %ok8446 -panic8445: - call void @finch_panic(ptr @.str.6052, i64 196, ptr @.str.6053) + %t44 = load { ptr, i64, i64 }, ptr %t43 + store { ptr, i64, i64 } { ptr @.str.6266, i64 14, i64 0 }, ptr %t43 + store { ptr, i64, i64 } %t44, ptr %a45 + call void @finch_str_drop(ptr %a45) + %t46 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 5 + store i1 true, ptr %t46 + br label %endif8915 +else8914: + %t47 = getelementptr inbounds %S.C.CXType, ptr %a20, i32 0, i32 0 + %t48 = load i32, ptr %t47 + %t49 = icmp eq i32 %t48, 105 + br label %logic.from8920 +logic.from8920: + br i1 %t49, label %logic.rhs8921, label %logic.end8922 +logic.rhs8921: + %t51 = load %S.C.CXType, ptr %a20 + store %S.C.CXType %t51, ptr %a52 + call void @clang_getTypeDeclaration(ptr sret(%S.C.CXCursor) align 16 %a50, ptr byval(%S.C.CXType) align 8 %a52) + %t53 = load %S.C.CXCursor, ptr %a50 + store %S.C.CXCursor %t53, ptr %a54 + %t55 = call i32 @clang_getCursorKind(ptr byval(%S.C.CXCursor) align 8 %a54) + %t56 = icmp eq i32 %t55, 3 + br label %logic.rend8923 +logic.rend8923: + br label %logic.end8922 +logic.end8922: + %t57 = phi i1 [ false, %logic.from8920 ], [ %t56, %logic.rend8923 ] + br i1 %t57, label %then8924, label %else8925 +then8924: + %t58 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 5 + store i1 true, ptr %t58 + br label %endif8926 +else8925: + %t59 = load ptr, ptr %a4 + %t60 = icmp eq ptr %t59, null + br i1 %t60, label %panic8927, label %ok8928 +panic8927: + call void @finch_panic(ptr @.str.6271, i64 200, ptr @.str.6272) unreachable -ok8446: - %t59 = getelementptr inbounds %S.cimport.FieldCtx, ptr %t57, i32 0, i32 0 - %t60 = load ptr, ptr %t59 - %t61 = load %S.C.CXType, ptr %a20 - %t62 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t60, %S.C.CXType %t61, i1 false, i1 false) - 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 %then8447, label %else8448 -then8447: - %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 - store %S.ast.Type %t67, ptr %a69 - 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 %endif8449 -else8448: - %t72 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 5 - store i1 true, ptr %t72 - br label %endif8449 -endif8449: - br label %endif8444 -endif8444: - br label %endif8433 -endif8433: - %t73 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 5 - %t74 = load i1, ptr %t73 - br i1 %t74, label %then8450, label %endif8452 -then8450: - %t75 = load ptr, ptr %a4 - %t76 = icmp eq ptr %t75, null - br i1 %t76, label %panic8453, label %ok8454 -panic8453: - call void @finch_panic(ptr @.str.6054, i64 204, ptr @.str.6055) +ok8928: + %t61 = getelementptr inbounds %S.cimport.FieldCtx, ptr %t59, i32 0, i32 0 + %t62 = load ptr, ptr %t61 + %t63 = load %S.C.CXType, ptr %a20 + %t64 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t62, %S.C.CXType %t63, i1 false, i1 false) + store %S.cimport.Mapped %t64, ptr %a65 + %t66 = getelementptr inbounds %S.cimport.Mapped, ptr %a65, i32 0, i32 2 + %t67 = load i1, ptr %t66 + br i1 %t67, label %then8929, label %else8930 +then8929: + %t68 = getelementptr inbounds %S.cimport.Mapped, ptr %a65, i32 0, i32 0 + %t69 = load %S.ast.Type, ptr %t68 + %t70 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 1 + store %S.ast.Type %t69, ptr %a71 + call void @finch.copy.S_ast_Type(ptr %a72, ptr %a71) + %t73 = load %S.ast.Type, ptr %a72 + %t74 = load %S.ast.Type, ptr %t70 + store %S.ast.Type %t73, ptr %t70 + store %S.ast.Type %t74, ptr %a75 + call void @finch.drop.S_ast_Type(ptr %a75) + br label %endif8931 +else8930: + %t76 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 5 + store i1 true, ptr %t76 + br label %endif8931 +endif8931: + call void @finch.drop.S_cimport_Mapped(ptr %a65) + br label %endif8926 +endif8926: + br label %endif8915 +endif8915: + %t77 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 5 + %t78 = load i1, ptr %t77 + br i1 %t78, label %then8932, label %endif8934 +then8932: + %t79 = load ptr, ptr %a4 + %t80 = icmp eq ptr %t79, null + br i1 %t80, label %panic8935, label %ok8936 +panic8935: + call void @finch_panic(ptr @.str.6273, i64 208, ptr @.str.6274) unreachable -ok8454: - %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 %panic8455, label %ok8456 -panic8455: - call void @finch_panic(ptr @.str.6056, i64 204, ptr @.str.6057) +ok8936: + %t81 = getelementptr inbounds %S.cimport.FieldCtx, ptr %t79, i32 0, i32 1 + %t82 = load ptr, ptr %t81 + %t83 = icmp eq ptr %t82, null + br i1 %t83, label %panic8937, label %ok8938 +panic8937: + call void @finch_panic(ptr @.str.6275, i64 208, ptr @.str.6276) unreachable -ok8456: - %t80 = getelementptr inbounds %S.cimport.CStruct, ptr %t78, i32 0, i32 5 - store i1 true, ptr %t80 - br label %endif8452 -endif8452: - %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 %then8457, label %endif8459 -then8457: - %t85 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 5 - store i1 true, ptr %t85 - br label %endif8459 -endif8459: - %t86 = load ptr, ptr %a4 - %t87 = icmp eq ptr %t86, null - br i1 %t87, label %panic8460, label %ok8461 -panic8460: - call void @finch_panic(ptr @.str.6058, i64 209, ptr @.str.6059) +ok8938: + %t84 = getelementptr inbounds %S.cimport.CStruct, ptr %t82, i32 0, i32 5 + store i1 true, ptr %t84 + br label %endif8934 +endif8934: + %t85 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 0 + %t86 = getelementptr inbounds { ptr, i64, i64 }, ptr %t85, i32 0, i32 1 + %t87 = load i64, ptr %t86 + %t88 = icmp eq i64 %t87, 0 + br i1 %t88, label %then8939, label %endif8941 +then8939: + %t89 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 5 + store i1 true, ptr %t89 + br label %endif8941 +endif8941: + %t90 = load ptr, ptr %a4 + %t91 = icmp eq ptr %t90, null + br i1 %t91, label %panic8942, label %ok8943 +panic8942: + call void @finch_panic(ptr @.str.6277, i64 213, ptr @.str.6278) unreachable -ok8461: - %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 %panic8462, label %ok8463 -panic8462: - call void @finch_panic(ptr @.str.6060, i64 209, ptr @.str.6061) +ok8943: + %t92 = getelementptr inbounds %S.cimport.FieldCtx, ptr %t90, i32 0, i32 1 + %t93 = load ptr, ptr %t92 + %t94 = icmp eq ptr %t93, null + br i1 %t94, label %panic8944, label %ok8945 +panic8944: + call void @finch_panic(ptr @.str.6279, i64 213, ptr @.str.6280) unreachable -ok8463: - %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 - store %S.cimport.CField %t93, ptr %a94 - call void @finch.copy.S_cimport_CField(ptr %a95, ptr %a94) - %t96 = load %S.cimport.CField, ptr %a95 - %t97 = load i64, ptr %t92 - %t98 = add i64 %t97, 1 - call void @finch_arr_reserve(ptr %t91, i64 %t98, i64 ptrtoint (ptr getelementptr (%S.cimport.CField, ptr null, i32 1) to i64)) - %t99 = load ptr, ptr %t91 - %t100 = getelementptr inbounds %S.cimport.CField, ptr %t99, i64 %t97 - store %S.cimport.CField %t96, ptr %t100 - store i64 %t98, ptr %t92 +ok8945: + %t95 = getelementptr inbounds %S.cimport.CStruct, ptr %t93, i32 0, i32 1 + %t96 = getelementptr inbounds { ptr, i64, i64 }, ptr %t95, i32 0, i32 1 + %t97 = load %S.cimport.CField, ptr %a12 + store %S.cimport.CField %t97, ptr %a98 + call void @finch.copy.S_cimport_CField(ptr %a99, ptr %a98) + %t100 = load %S.cimport.CField, ptr %a99 + %t101 = load i64, ptr %t96 + %t102 = add i64 %t101, 1 + call void @finch_arr_reserve(ptr %t95, i64 %t102, i64 ptrtoint (ptr getelementptr (%S.cimport.CField, ptr null, i32 1) to i64)) + %t103 = load ptr, ptr %t95 + %t104 = getelementptr inbounds %S.cimport.CField, ptr %t103, i64 %t101 + store %S.cimport.CField %t100, ptr %t104 + store i64 %t102, ptr %t96 + call void @finch.drop.S_cimport_CField(ptr %a12) ret i32 1 } @@ -78434,89 +94415,122 @@ define internal %S.cimport.Mapped @finch.cimport.sized(i64 %p0, i1 %p1) { entry: %a1 = alloca i64, align 16 %a2 = alloca i1, 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 - %a40 = alloca { ptr, i64, i64 }, align 16 + %a8 = alloca %S.ast.Type, align 16 + %a11 = alloca %S.ast.Type, align 16 + %a17 = alloca %S.ast.Type, align 16 + %a20 = alloca %S.ast.Type, align 16 + %a26 = alloca %S.ast.Type, align 16 + %a29 = alloca %S.ast.Type, align 16 + %a35 = alloca %S.ast.Type, align 16 + %a38 = alloca %S.ast.Type, 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 + %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 + %a51 = alloca { ptr, i64, i64 }, align 16 + %a54 = alloca { ptr, i64, i64 }, align 16 store i64 %p0, ptr %a1 store i1 %p1, ptr %a2 %t3 = load i64, ptr %a1 %t4 = icmp eq i64 %t3, 1 - br i1 %t4, label %then8464, label %endif8466 -then8464: + br i1 %t4, label %then8946, label %endif8948 +then8946: %t5 = load i1, ptr %a2 - br i1 %t5, label %then8467, label %endif8469 -then8467: - %t6 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6062, i64 2, i64 0 }) + br i1 %t5, label %then8949, label %endif8951 +then8949: + %t6 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6281, i64 2, i64 0 }) %t7 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t6) + store %S.ast.Type %t6, ptr %a8 + call void @finch.drop.S_ast_Type(ptr %a8) ret %S.cimport.Mapped %t7 -endif8469: - %t8 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6063, i64 2, i64 0 }) - %t9 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t8) - ret %S.cimport.Mapped %t9 -endif8466: - %t10 = load i64, ptr %a1 - %t11 = icmp eq i64 %t10, 2 - br i1 %t11, label %then8470, label %endif8472 -then8470: - %t12 = load i1, ptr %a2 - br i1 %t12, label %then8473, label %endif8475 -then8473: - %t13 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6064, i64 3, i64 0 }) - %t14 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t13) - ret %S.cimport.Mapped %t14 -endif8475: - %t15 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6065, i64 3, i64 0 }) +endif8951: + %t9 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6282, i64 2, i64 0 }) + %t10 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t9) + store %S.ast.Type %t9, ptr %a11 + call void @finch.drop.S_ast_Type(ptr %a11) + ret %S.cimport.Mapped %t10 +endif8948: + %t12 = load i64, ptr %a1 + %t13 = icmp eq i64 %t12, 2 + br i1 %t13, label %then8952, label %endif8954 +then8952: + %t14 = load i1, ptr %a2 + br i1 %t14, label %then8955, label %endif8957 +then8955: + %t15 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6283, i64 3, i64 0 }) %t16 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t15) + store %S.ast.Type %t15, ptr %a17 + call void @finch.drop.S_ast_Type(ptr %a17) ret %S.cimport.Mapped %t16 -endif8472: - %t17 = load i64, ptr %a1 - %t18 = icmp eq i64 %t17, 4 - br i1 %t18, label %then8476, label %endif8478 -then8476: - %t19 = load i1, ptr %a2 - br i1 %t19, label %then8479, label %endif8481 -then8479: - %t20 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6066, i64 3, i64 0 }) - %t21 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t20) - ret %S.cimport.Mapped %t21 -endif8481: - %t22 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6067, i64 3, i64 0 }) - %t23 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t22) - ret %S.cimport.Mapped %t23 -endif8478: - %t24 = load i64, ptr %a1 - %t25 = icmp eq i64 %t24, 8 - br i1 %t25, label %then8482, label %endif8484 -then8482: - %t26 = load i1, ptr %a2 - br i1 %t26, label %then8485, label %endif8487 -then8485: - %t27 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6068, i64 3, i64 0 }) +endif8957: + %t18 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6284, i64 3, i64 0 }) + %t19 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t18) + store %S.ast.Type %t18, ptr %a20 + call void @finch.drop.S_ast_Type(ptr %a20) + ret %S.cimport.Mapped %t19 +endif8954: + %t21 = load i64, ptr %a1 + %t22 = icmp eq i64 %t21, 4 + br i1 %t22, label %then8958, label %endif8960 +then8958: + %t23 = load i1, ptr %a2 + br i1 %t23, label %then8961, label %endif8963 +then8961: + %t24 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6285, i64 3, i64 0 }) + %t25 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t24) + store %S.ast.Type %t24, ptr %a26 + call void @finch.drop.S_ast_Type(ptr %a26) + ret %S.cimport.Mapped %t25 +endif8963: + %t27 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6286, i64 3, i64 0 }) %t28 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t27) + store %S.ast.Type %t27, ptr %a29 + call void @finch.drop.S_ast_Type(ptr %a29) ret %S.cimport.Mapped %t28 -endif8487: - %t29 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6069, i64 3, i64 0 }) - %t30 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t29) - ret %S.cimport.Mapped %t30 -endif8484: - %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.6070, 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.6071, 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) - ret %S.cimport.Mapped %t43 +endif8960: + %t30 = load i64, ptr %a1 + %t31 = icmp eq i64 %t30, 8 + br i1 %t31, label %then8964, label %endif8966 +then8964: + %t32 = load i1, ptr %a2 + br i1 %t32, label %then8967, label %endif8969 +then8967: + %t33 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6287, i64 3, i64 0 }) + %t34 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t33) + store %S.ast.Type %t33, ptr %a35 + call void @finch.drop.S_ast_Type(ptr %a35) + ret %S.cimport.Mapped %t34 +endif8969: + %t36 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6288, i64 3, i64 0 }) + %t37 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t36) + store %S.ast.Type %t36, ptr %a38 + call void @finch.drop.S_ast_Type(ptr %a38) + ret %S.cimport.Mapped %t37 +endif8966: + %t39 = load i64, ptr %a1 + %t40 = mul i64 %t39, 8 + call void @finch_str_from_int(ptr %a41, i64 %t40) + %t42 = load { ptr, i64, i64 }, ptr %a41 + store { ptr, i64, i64 } { ptr @.str.6289, i64 7, i64 0 }, ptr %a44 + store { ptr, i64, i64 } %t42, ptr %a45 + call void @finch_str_concat(ptr %a43, ptr %a44, ptr %a45) + store { ptr, i64, i64 } %t42, ptr %a46 + call void @finch_str_drop(ptr %a46) + %t47 = load { ptr, i64, i64 }, ptr %a43 + store { ptr, i64, i64 } %t47, ptr %a49 + store { ptr, i64, i64 } { ptr @.str.6290, i64 11, i64 0 }, ptr %a50 + call void @finch_str_concat(ptr %a48, ptr %a49, ptr %a50) + store { ptr, i64, i64 } %t47, ptr %a51 + call void @finch_str_drop(ptr %a51) + %t52 = load { ptr, i64, i64 }, ptr %a48 + %t53 = call %S.cimport.Mapped @finch.cimport.no({ ptr, i64, i64 } %t52) + store { ptr, i64, i64 } %t52, ptr %a54 + call void @finch_str_drop(ptr %a54) + ret %S.cimport.Mapped %t53 } define internal %S.cimport.Mapped @finch.cimport.mapType(ptr %p0, %S.C.CXType %p1, i1 %p2, i1 %p3) { @@ -78531,35 +94545,49 @@ entry: %a11 = alloca %S.C.CXType, align 16 %a13 = alloca i64, align 16 %a16 = alloca i32, align 16 - %a78 = alloca %S.C.CXType, align 16 - %a79 = alloca %S.C.CXType, align 16 - %a81 = alloca %S.C.CXType, align 16 + %a21 = alloca %S.ast.Type, align 16 + %a26 = alloca %S.ast.Type, align 16 + %a34 = alloca %S.ast.Type, align 16 + %a75 = alloca %S.ast.Type, align 16 + %a80 = alloca %S.ast.Type, align 16 %a83 = alloca %S.C.CXType, align 16 - %a85 = alloca %S.C.CXType, align 16 - %a98 = alloca %S.C.CXType, align 16 - %a120 = alloca %S.cimport.Mapped, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 + %a84 = alloca %S.C.CXType, align 16 + %a86 = alloca %S.C.CXType, align 16 + %a88 = alloca %S.C.CXType, align 16 + %a90 = alloca %S.C.CXType, align 16 + %a103 = alloca %S.C.CXType, align 16 + %a109 = alloca %S.ast.Type, align 16 + %a123 = alloca %S.ast.Type, align 16 + %a127 = alloca %S.cimport.Mapped, align 16 + %a134 = alloca { ptr, i64, i64 }, align 16 %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca %S.C.CXCursor, align 16 - %a150 = alloca %S.C.CXType, align 16 - %a152 = alloca %S.C.CXCursor, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca %S.C.CXType, align 16 - %a177 = alloca %S.C.CXType, align 16 - %a180 = alloca %S.cimport.Mapped, align 16 - %a188 = alloca %S.C.CXType, align 16 - %a196 = alloca %S.C.CXType, align 16 - %a198 = alloca [32 x i8], align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 + %a142 = alloca { ptr, i64, i64 }, align 16 + %a143 = alloca { ptr, i64, i64 }, align 16 + %a149 = alloca %S.ast.Type, align 16 + %a154 = alloca %S.ast.Type, align 16 + %a157 = alloca %S.C.CXCursor, align 16 + %a159 = alloca %S.C.CXType, align 16 + %a161 = alloca %S.C.CXCursor, align 16 + %a168 = alloca { ptr, i64, i64 }, align 16 + %a175 = alloca { ptr, i64, i64 }, align 16 + %a176 = alloca { ptr, i64, i64 }, align 16 + %a181 = alloca %S.ast.Type, align 16 + %a185 = alloca %S.C.CXType, align 16 + %a187 = alloca %S.C.CXType, align 16 + %a190 = alloca %S.cimport.Mapped, align 16 + %a198 = alloca %S.C.CXType, align 16 + %a202 = alloca %S.ast.Type, align 16 + %a207 = alloca %S.C.CXType, align 16 + %a209 = alloca [32 x i8], align 16 + %a212 = 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 + %a217 = alloca { ptr, i64, i64 }, align 16 + %a218 = alloca { ptr, i64, i64 }, align 16 + %a219 = alloca { ptr, i64, i64 }, align 16 + %a220 = alloca { ptr, i64, i64 }, align 16 + %a223 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store %S.C.CXType %p1, ptr %a2 store i1 %p2, ptr %a3 @@ -78578,402 +94606,435 @@ entry: store i32 %t15, ptr %a16 %t17 = load i32, ptr %a16 %t18 = icmp eq i32 %t17, 2 - br i1 %t18, label %then8488, label %endif8490 -then8488: - %t19 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6072, i64 4, i64 0 }) + br i1 %t18, label %then8970, label %endif8972 +then8970: + %t19 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6291, i64 4, i64 0 }) %t20 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t19) + store %S.ast.Type %t19, ptr %a21 + call void @finch.drop.S_ast_Type(ptr %a21) ret %S.cimport.Mapped %t20 -endif8490: - %t21 = load i32, ptr %a16 - %t22 = icmp eq i32 %t21, 3 - br i1 %t22, label %then8491, label %endif8493 -then8491: - %t23 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6073, i64 4, i64 0 }) - %t24 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t23) - ret %S.cimport.Mapped %t24 -endif8493: - %t25 = load i32, ptr %a16 - %t26 = icmp eq i32 %t25, 13 - br label %logic.from8494 -logic.from8494: - br i1 %t26, label %logic.end8496, label %logic.rhs8495 -logic.rhs8495: +endif8972: + %t22 = load i32, ptr %a16 + %t23 = icmp eq i32 %t22, 3 + br i1 %t23, label %then8973, label %endif8975 +then8973: + %t24 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6292, i64 4, i64 0 }) + %t25 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t24) + store %S.ast.Type %t24, ptr %a26 + call void @finch.drop.S_ast_Type(ptr %a26) + ret %S.cimport.Mapped %t25 +endif8975: %t27 = load i32, ptr %a16 - %t28 = icmp eq i32 %t27, 4 - br label %logic.rend8497 -logic.rend8497: - br label %logic.end8496 -logic.end8496: - %t29 = phi i1 [ true, %logic.from8494 ], [ %t28, %logic.rend8497 ] - br i1 %t29, label %then8498, label %endif8500 -then8498: - %t30 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6074, i64 4, i64 0 }) - %t31 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t30) - ret %S.cimport.Mapped %t31 -endif8500: - %t32 = load i32, ptr %a16 - %t33 = icmp eq i32 %t32, 14 - br label %logic.from8501 -logic.from8501: - br i1 %t33, label %logic.end8503, label %logic.rhs8502 -logic.rhs8502: - %t34 = load i32, ptr %a16 - %t35 = icmp eq i32 %t34, 16 - br label %logic.rend8504 -logic.rend8504: - br label %logic.end8503 -logic.end8503: - %t36 = phi i1 [ true, %logic.from8501 ], [ %t35, %logic.rend8504 ] - br label %logic.from8505 -logic.from8505: - br i1 %t36, label %logic.end8507, label %logic.rhs8506 -logic.rhs8506: + %t28 = icmp eq i32 %t27, 13 + br label %logic.from8976 +logic.from8976: + br i1 %t28, label %logic.end8978, label %logic.rhs8977 +logic.rhs8977: + %t29 = load i32, ptr %a16 + %t30 = icmp eq i32 %t29, 4 + br label %logic.rend8979 +logic.rend8979: + br label %logic.end8978 +logic.end8978: + %t31 = phi i1 [ true, %logic.from8976 ], [ %t30, %logic.rend8979 ] + br i1 %t31, label %then8980, label %endif8982 +then8980: + %t32 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6293, i64 4, i64 0 }) + %t33 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t32) + store %S.ast.Type %t32, ptr %a34 + call void @finch.drop.S_ast_Type(ptr %a34) + ret %S.cimport.Mapped %t33 +endif8982: + %t35 = load i32, ptr %a16 + %t36 = icmp eq i32 %t35, 14 + br label %logic.from8983 +logic.from8983: + br i1 %t36, label %logic.end8985, label %logic.rhs8984 +logic.rhs8984: %t37 = load i32, ptr %a16 - %t38 = icmp eq i32 %t37, 17 - br label %logic.rend8508 -logic.rend8508: - br label %logic.end8507 -logic.end8507: - %t39 = phi i1 [ true, %logic.from8505 ], [ %t38, %logic.rend8508 ] - br label %logic.from8509 -logic.from8509: - br i1 %t39, label %logic.end8511, label %logic.rhs8510 -logic.rhs8510: + %t38 = icmp eq i32 %t37, 16 + br label %logic.rend8986 +logic.rend8986: + br label %logic.end8985 +logic.end8985: + %t39 = phi i1 [ true, %logic.from8983 ], [ %t38, %logic.rend8986 ] + br label %logic.from8987 +logic.from8987: + br i1 %t39, label %logic.end8989, label %logic.rhs8988 +logic.rhs8988: %t40 = load i32, ptr %a16 - %t41 = icmp eq i32 %t40, 18 - br label %logic.rend8512 -logic.rend8512: - br label %logic.end8511 -logic.end8511: - %t42 = phi i1 [ true, %logic.from8509 ], [ %t41, %logic.rend8512 ] - br label %logic.from8513 -logic.from8513: - br i1 %t42, label %logic.end8515, label %logic.rhs8514 -logic.rhs8514: + %t41 = icmp eq i32 %t40, 17 + br label %logic.rend8990 +logic.rend8990: + br label %logic.end8989 +logic.end8989: + %t42 = phi i1 [ true, %logic.from8987 ], [ %t41, %logic.rend8990 ] + br label %logic.from8991 +logic.from8991: + br i1 %t42, label %logic.end8993, label %logic.rhs8992 +logic.rhs8992: %t43 = load i32, ptr %a16 - %t44 = icmp eq i32 %t43, 19 - br label %logic.rend8516 -logic.rend8516: - br label %logic.end8515 -logic.end8515: - %t45 = phi i1 [ true, %logic.from8513 ], [ %t44, %logic.rend8516 ] - br i1 %t45, label %then8517, label %endif8519 -then8517: - %t46 = load i64, ptr %a13 - %t47 = call %S.cimport.Mapped @finch.cimport.sized(i64 %t46, i1 true) - ret %S.cimport.Mapped %t47 -endif8519: - %t48 = load i32, ptr %a16 - %t49 = icmp eq i32 %t48, 5 - br label %logic.from8520 -logic.from8520: - br i1 %t49, label %logic.end8522, label %logic.rhs8521 -logic.rhs8521: - %t50 = load i32, ptr %a16 - %t51 = icmp eq i32 %t50, 8 - br label %logic.rend8523 -logic.rend8523: - br label %logic.end8522 -logic.end8522: - %t52 = phi i1 [ true, %logic.from8520 ], [ %t51, %logic.rend8523 ] - br label %logic.from8524 -logic.from8524: - br i1 %t52, label %logic.end8526, label %logic.rhs8525 -logic.rhs8525: + %t44 = icmp eq i32 %t43, 18 + br label %logic.rend8994 +logic.rend8994: + br label %logic.end8993 +logic.end8993: + %t45 = phi i1 [ true, %logic.from8991 ], [ %t44, %logic.rend8994 ] + br label %logic.from8995 +logic.from8995: + br i1 %t45, label %logic.end8997, label %logic.rhs8996 +logic.rhs8996: + %t46 = load i32, ptr %a16 + %t47 = icmp eq i32 %t46, 19 + br label %logic.rend8998 +logic.rend8998: + br label %logic.end8997 +logic.end8997: + %t48 = phi i1 [ true, %logic.from8995 ], [ %t47, %logic.rend8998 ] + br i1 %t48, label %then8999, label %endif9001 +then8999: + %t49 = load i64, ptr %a13 + %t50 = call %S.cimport.Mapped @finch.cimport.sized(i64 %t49, i1 true) + ret %S.cimport.Mapped %t50 +endif9001: + %t51 = load i32, ptr %a16 + %t52 = icmp eq i32 %t51, 5 + br label %logic.from9002 +logic.from9002: + br i1 %t52, label %logic.end9004, label %logic.rhs9003 +logic.rhs9003: %t53 = load i32, ptr %a16 - %t54 = icmp eq i32 %t53, 9 - br label %logic.rend8527 -logic.rend8527: - br label %logic.end8526 -logic.end8526: - %t55 = phi i1 [ true, %logic.from8524 ], [ %t54, %logic.rend8527 ] - br label %logic.from8528 -logic.from8528: - br i1 %t55, label %logic.end8530, label %logic.rhs8529 -logic.rhs8529: + %t54 = icmp eq i32 %t53, 8 + br label %logic.rend9005 +logic.rend9005: + br label %logic.end9004 +logic.end9004: + %t55 = phi i1 [ true, %logic.from9002 ], [ %t54, %logic.rend9005 ] + br label %logic.from9006 +logic.from9006: + br i1 %t55, label %logic.end9008, label %logic.rhs9007 +logic.rhs9007: %t56 = load i32, ptr %a16 - %t57 = icmp eq i32 %t56, 10 - br label %logic.rend8531 -logic.rend8531: - br label %logic.end8530 -logic.end8530: - %t58 = phi i1 [ true, %logic.from8528 ], [ %t57, %logic.rend8531 ] - br label %logic.from8532 -logic.from8532: - br i1 %t58, label %logic.end8534, label %logic.rhs8533 -logic.rhs8533: + %t57 = icmp eq i32 %t56, 9 + br label %logic.rend9009 +logic.rend9009: + br label %logic.end9008 +logic.end9008: + %t58 = phi i1 [ true, %logic.from9006 ], [ %t57, %logic.rend9009 ] + br label %logic.from9010 +logic.from9010: + br i1 %t58, label %logic.end9012, label %logic.rhs9011 +logic.rhs9011: %t59 = load i32, ptr %a16 - %t60 = icmp eq i32 %t59, 11 - br label %logic.rend8535 -logic.rend8535: - br label %logic.end8534 -logic.end8534: - %t61 = phi i1 [ true, %logic.from8532 ], [ %t60, %logic.rend8535 ] - br i1 %t61, label %then8536, label %endif8538 -then8536: - %t62 = load i64, ptr %a13 - %t63 = call %S.cimport.Mapped @finch.cimport.sized(i64 %t62, i1 false) - ret %S.cimport.Mapped %t63 -endif8538: - %t64 = load i32, ptr %a16 - %t65 = icmp eq i32 %t64, 106 - br i1 %t65, label %then8539, label %endif8541 -then8539: - %t66 = load i64, ptr %a13 - %t67 = call %S.cimport.Mapped @finch.cimport.sized(i64 %t66, i1 true) - ret %S.cimport.Mapped %t67 -endif8541: - %t68 = load i32, ptr %a16 - %t69 = icmp eq i32 %t68, 21 - br i1 %t69, label %then8542, label %endif8544 -then8542: - %t70 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6075, i64 3, i64 0 }) - %t71 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t70) - ret %S.cimport.Mapped %t71 -endif8544: - %t72 = load i32, ptr %a16 - %t73 = icmp eq i32 %t72, 22 - br i1 %t73, label %then8545, label %endif8547 -then8545: - %t74 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6076, i64 5, i64 0 }) - %t75 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t74) - ret %S.cimport.Mapped %t75 -endif8547: + %t60 = icmp eq i32 %t59, 10 + br label %logic.rend9013 +logic.rend9013: + br label %logic.end9012 +logic.end9012: + %t61 = phi i1 [ true, %logic.from9010 ], [ %t60, %logic.rend9013 ] + br label %logic.from9014 +logic.from9014: + br i1 %t61, label %logic.end9016, label %logic.rhs9015 +logic.rhs9015: + %t62 = load i32, ptr %a16 + %t63 = icmp eq i32 %t62, 11 + br label %logic.rend9017 +logic.rend9017: + br label %logic.end9016 +logic.end9016: + %t64 = phi i1 [ true, %logic.from9014 ], [ %t63, %logic.rend9017 ] + br i1 %t64, label %then9018, label %endif9020 +then9018: + %t65 = load i64, ptr %a13 + %t66 = call %S.cimport.Mapped @finch.cimport.sized(i64 %t65, i1 false) + ret %S.cimport.Mapped %t66 +endif9020: + %t67 = load i32, ptr %a16 + %t68 = icmp eq i32 %t67, 106 + br i1 %t68, label %then9021, label %endif9023 +then9021: + %t69 = load i64, ptr %a13 + %t70 = call %S.cimport.Mapped @finch.cimport.sized(i64 %t69, i1 true) + ret %S.cimport.Mapped %t70 +endif9023: + %t71 = load i32, ptr %a16 + %t72 = icmp eq i32 %t71, 21 + br i1 %t72, label %then9024, label %endif9026 +then9024: + %t73 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6294, i64 3, i64 0 }) + %t74 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t73) + store %S.ast.Type %t73, ptr %a75 + call void @finch.drop.S_ast_Type(ptr %a75) + ret %S.cimport.Mapped %t74 +endif9026: %t76 = load i32, ptr %a16 - %t77 = icmp eq i32 %t76, 101 - br i1 %t77, label %then8548, label %endif8550 -then8548: - %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) - %t82 = load %S.C.CXType, ptr %a79 - store %S.C.CXType %t82, ptr %a83 - call void @clang_getCanonicalType(ptr sret(%S.C.CXType) align 16 %a78, ptr byval(%S.C.CXType) align 8 %a83) - %t84 = load %S.C.CXType, ptr %a78 - store %S.C.CXType %t84, ptr %a85 - %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.from8551 -logic.from8551: - br i1 %t88, label %logic.end8553, label %logic.rhs8552 -logic.rhs8552: - %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.rend8554 -logic.rend8554: - br label %logic.end8553 -logic.end8553: - %t92 = phi i1 [ true, %logic.from8551 ], [ %t91, %logic.rend8554 ] - br label %logic.from8555 -logic.from8555: - br i1 %t92, label %logic.rhs8556, label %logic.end8557 -logic.rhs8556: - %t93 = load i1, ptr %a3 - br label %logic.rend8558 -logic.rend8558: - br label %logic.end8557 -logic.end8557: - %t94 = phi i1 [ false, %logic.from8555 ], [ %t93, %logic.rend8558 ] - br i1 %t94, label %then8559, label %endif8561 -then8559: - %t95 = load i1, ptr %a4 - %t96 = xor i1 %t95, true - br label %logic.from8562 -logic.from8562: - br i1 %t96, label %logic.end8564, label %logic.rhs8563 -logic.rhs8563: - %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.rend8565 -logic.rend8565: - br label %logic.end8564 -logic.end8564: - %t101 = phi i1 [ true, %logic.from8562 ], [ %t100, %logic.rend8565 ] - br i1 %t101, label %then8566, label %endif8568 -then8566: - %t102 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6077, i64 3, i64 0 }) - %t103 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t102) - ret %S.cimport.Mapped %t103 -endif8568: - br label %endif8561 -endif8561: - %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.from8569 -logic.from8569: - br i1 %t106, label %logic.end8571, label %logic.rhs8570 -logic.rhs8570: - %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.rend8572 -logic.rend8572: - br label %logic.end8571 -logic.end8571: - %t110 = phi i1 [ true, %logic.from8569 ], [ %t109, %logic.rend8572 ] - br label %logic.from8573 -logic.from8573: - br i1 %t110, label %logic.end8575, label %logic.rhs8574 -logic.rhs8574: - %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.rend8576 -logic.rend8576: - br label %logic.end8575 -logic.end8575: - %t114 = phi i1 [ true, %logic.from8573 ], [ %t113, %logic.rend8576 ] - br i1 %t114, label %then8577, label %endif8579 -then8577: - %t115 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6078, i64 3, i64 0 }) - %t116 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t115) - ret %S.cimport.Mapped %t116 -endif8579: - %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) - store %S.cimport.Mapped %t119, ptr %a120 - %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.from8580 -logic.from8580: - br i1 %t123, label %logic.end8582, label %logic.rhs8581 -logic.rhs8581: - %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.6079, 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.rend8583 -logic.rend8583: - br label %logic.end8582 -logic.end8582: - %t131 = phi i1 [ true, %logic.from8580 ], [ %t130, %logic.rend8583 ] - br label %logic.from8584 -logic.from8584: - br i1 %t131, label %logic.end8586, label %logic.rhs8585 -logic.rhs8585: - %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.6080, 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.rend8587 -logic.rend8587: - br label %logic.end8586 -logic.end8586: - %t139 = phi i1 [ true, %logic.from8584 ], [ %t138, %logic.rend8587 ] - br i1 %t139, label %then8588, label %endif8590 -then8588: - %t140 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6081, i64 3, i64 0 }) - %t141 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t140) - ret %S.cimport.Mapped %t141 -endif8590: - %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 -endif8550: - %t146 = load i32, ptr %a16 - %t147 = icmp eq i32 %t146, 105 - br i1 %t147, label %then8591, label %endif8593 -then8591: - %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) - %t151 = load %S.C.CXCursor, ptr %a148 - 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 %then8594, label %endif8596 -then8594: - %t155 = call %S.cimport.Mapped @finch.cimport.no({ ptr, i64, i64 } { ptr @.str.6082, i64 23, i64 0 }) - ret %S.cimport.Mapped %t155 -endif8596: - %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) - store { ptr, i64, i64 } %t158, ptr %a159 - %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 %then8597, label %endif8599 -then8597: - %t163 = call %S.cimport.Mapped @finch.cimport.no({ ptr, i64, i64 } { ptr @.str.6083, i64 36, i64 0 }) - ret %S.cimport.Mapped %t163 -endif8599: - %t164 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.6084, 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.6085, i64 1, i64 0 }, 3 - %t171 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t170) - ret %S.cimport.Mapped %t171 -endif8593: - %t172 = load i32, ptr %a16 - %t173 = icmp eq i32 %t172, 112 - br i1 %t173, label %then8600, label %endif8602 -then8600: - %t174 = load ptr, ptr %a1 - %t176 = load %S.C.CXType, ptr %a9 - store %S.C.CXType %t176, ptr %a177 - call void @clang_getArrayElementType(ptr sret(%S.C.CXType) align 16 %a175, ptr byval(%S.C.CXType) align 8 %a177) - %t178 = load %S.C.CXType, ptr %a175 - %t179 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t174, %S.C.CXType %t178, i1 false, i1 false) - store %S.cimport.Mapped %t179, ptr %a180 - %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 %then8603, label %endif8605 -then8603: - %t184 = load %S.cimport.Mapped, ptr %a180 - ret %S.cimport.Mapped %t184 -endif8605: - %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 - store %S.C.CXType %t187, ptr %a188 - %t189 = call i64 @clang_getArraySize(ptr byval(%S.C.CXType) align 8 %a188) - %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 -endif8602: - %t192 = load i32, ptr %a16 - %t193 = icmp eq i32 %t192, 23 - br i1 %t193, label %then8606, label %endif8608 -then8606: - %t194 = call %S.cimport.Mapped @finch.cimport.no({ ptr, i64, i64 } { ptr @.str.6086, i64 16, i64 0 }) + %t77 = icmp eq i32 %t76, 22 + br i1 %t77, label %then9027, label %endif9029 +then9027: + %t78 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6295, i64 5, i64 0 }) + %t79 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t78) + store %S.ast.Type %t78, ptr %a80 + call void @finch.drop.S_ast_Type(ptr %a80) + ret %S.cimport.Mapped %t79 +endif9029: + %t81 = load i32, ptr %a16 + %t82 = icmp eq i32 %t81, 101 + br i1 %t82, label %then9030, label %endif9032 +then9030: + %t85 = load %S.C.CXType, ptr %a9 + store %S.C.CXType %t85, ptr %a86 + call void @clang_getPointeeType(ptr sret(%S.C.CXType) align 16 %a84, ptr byval(%S.C.CXType) align 8 %a86) + %t87 = load %S.C.CXType, ptr %a84 + store %S.C.CXType %t87, ptr %a88 + call void @clang_getCanonicalType(ptr sret(%S.C.CXType) align 16 %a83, ptr byval(%S.C.CXType) align 8 %a88) + %t89 = load %S.C.CXType, ptr %a83 + store %S.C.CXType %t89, ptr %a90 + %t91 = getelementptr inbounds %S.C.CXType, ptr %a90, i32 0, i32 0 + %t92 = load i32, ptr %t91 + %t93 = icmp eq i32 %t92, 13 + br label %logic.from9033 +logic.from9033: + br i1 %t93, label %logic.end9035, label %logic.rhs9034 +logic.rhs9034: + %t94 = getelementptr inbounds %S.C.CXType, ptr %a90, i32 0, i32 0 + %t95 = load i32, ptr %t94 + %t96 = icmp eq i32 %t95, 4 + br label %logic.rend9036 +logic.rend9036: + br label %logic.end9035 +logic.end9035: + %t97 = phi i1 [ true, %logic.from9033 ], [ %t96, %logic.rend9036 ] + br label %logic.from9037 +logic.from9037: + br i1 %t97, label %logic.rhs9038, label %logic.end9039 +logic.rhs9038: + %t98 = load i1, ptr %a3 + br label %logic.rend9040 +logic.rend9040: + br label %logic.end9039 +logic.end9039: + %t99 = phi i1 [ false, %logic.from9037 ], [ %t98, %logic.rend9040 ] + br i1 %t99, label %then9041, label %endif9043 +then9041: + %t100 = load i1, ptr %a4 + %t101 = xor i1 %t100, true + br label %logic.from9044 +logic.from9044: + br i1 %t101, label %logic.end9046, label %logic.rhs9045 +logic.rhs9045: + %t102 = load %S.C.CXType, ptr %a90 + store %S.C.CXType %t102, ptr %a103 + %t104 = call i32 @clang_isConstQualifiedType(ptr byval(%S.C.CXType) align 8 %a103) + %t105 = icmp ne i32 %t104, 0 + br label %logic.rend9047 +logic.rend9047: + br label %logic.end9046 +logic.end9046: + %t106 = phi i1 [ true, %logic.from9044 ], [ %t105, %logic.rend9047 ] + br i1 %t106, label %then9048, label %endif9050 +then9048: + %t107 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6296, i64 3, i64 0 }) + %t108 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t107) + store %S.ast.Type %t107, ptr %a109 + call void @finch.drop.S_ast_Type(ptr %a109) + ret %S.cimport.Mapped %t108 +endif9050: + br label %endif9043 +endif9043: + %t110 = getelementptr inbounds %S.C.CXType, ptr %a90, i32 0, i32 0 + %t111 = load i32, ptr %t110 + %t112 = icmp eq i32 %t111, 2 + br label %logic.from9051 +logic.from9051: + br i1 %t112, label %logic.end9053, label %logic.rhs9052 +logic.rhs9052: + %t113 = getelementptr inbounds %S.C.CXType, ptr %a90, i32 0, i32 0 + %t114 = load i32, ptr %t113 + %t115 = icmp eq i32 %t114, 111 + br label %logic.rend9054 +logic.rend9054: + br label %logic.end9053 +logic.end9053: + %t116 = phi i1 [ true, %logic.from9051 ], [ %t115, %logic.rend9054 ] + br label %logic.from9055 +logic.from9055: + br i1 %t116, label %logic.end9057, label %logic.rhs9056 +logic.rhs9056: + %t117 = getelementptr inbounds %S.C.CXType, ptr %a90, i32 0, i32 0 + %t118 = load i32, ptr %t117 + %t119 = icmp eq i32 %t118, 110 + br label %logic.rend9058 +logic.rend9058: + br label %logic.end9057 +logic.end9057: + %t120 = phi i1 [ true, %logic.from9055 ], [ %t119, %logic.rend9058 ] + br i1 %t120, label %then9059, label %endif9061 +then9059: + %t121 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6297, i64 3, i64 0 }) + %t122 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t121) + store %S.ast.Type %t121, ptr %a123 + call void @finch.drop.S_ast_Type(ptr %a123) + ret %S.cimport.Mapped %t122 +endif9061: + %t124 = load ptr, ptr %a1 + %t125 = load %S.C.CXType, ptr %a90 + %t126 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t124, %S.C.CXType %t125, i1 false, i1 false) + store %S.cimport.Mapped %t126, ptr %a127 + %t128 = getelementptr inbounds %S.cimport.Mapped, ptr %a127, i32 0, i32 2 + %t129 = load i1, ptr %t128 + %t130 = xor i1 %t129, true + br label %logic.from9062 +logic.from9062: + br i1 %t130, label %logic.end9064, label %logic.rhs9063 +logic.rhs9063: + %t131 = getelementptr inbounds %S.cimport.Mapped, ptr %a127, i32 0, i32 0 + %t132 = getelementptr inbounds %S.ast.Type, ptr %t131, i32 0, i32 0 + %t133 = load { ptr, i64, i64 }, ptr %t132 + store { ptr, i64, i64 } %t133, ptr %a134 + store { ptr, i64, i64 } { ptr @.str.6298, 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.rend9065 +logic.rend9065: + br label %logic.end9064 +logic.end9064: + %t138 = phi i1 [ true, %logic.from9062 ], [ %t137, %logic.rend9065 ] + br label %logic.from9066 +logic.from9066: + br i1 %t138, label %logic.end9068, label %logic.rhs9067 +logic.rhs9067: + %t139 = getelementptr inbounds %S.cimport.Mapped, ptr %a127, i32 0, i32 0 + %t140 = getelementptr inbounds %S.ast.Type, ptr %t139, i32 0, i32 0 + %t141 = load { ptr, i64, i64 }, ptr %t140 + store { ptr, i64, i64 } %t141, ptr %a142 + store { ptr, i64, i64 } { ptr @.str.6299, i64 5, i64 0 }, ptr %a143 + %t144 = call i32 @finch_str_eq(ptr %a142, ptr %a143) + %t145 = icmp ne i32 %t144, 0 + br label %logic.rend9069 +logic.rend9069: + br label %logic.end9068 +logic.end9068: + %t146 = phi i1 [ true, %logic.from9066 ], [ %t145, %logic.rend9069 ] + br i1 %t146, label %then9070, label %endif9072 +then9070: + %t147 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6300, i64 3, i64 0 }) + %t148 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t147) + store %S.ast.Type %t147, ptr %a149 + call void @finch.drop.S_ast_Type(ptr %a149) + call void @finch.drop.S_cimport_Mapped(ptr %a127) + ret %S.cimport.Mapped %t148 +endif9072: + %t150 = getelementptr inbounds %S.cimport.Mapped, ptr %a127, i32 0, i32 0 + %t151 = load %S.ast.Type, ptr %t150 + %t152 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t151) + %t153 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t152) + store %S.ast.Type %t152, ptr %a154 + call void @finch.drop.S_ast_Type(ptr %a154) + call void @finch.drop.S_cimport_Mapped(ptr %a127) + ret %S.cimport.Mapped %t153 +endif9032: + %t155 = load i32, ptr %a16 + %t156 = icmp eq i32 %t155, 105 + br i1 %t156, label %then9073, label %endif9075 +then9073: + %t158 = load %S.C.CXType, ptr %a9 + store %S.C.CXType %t158, ptr %a159 + call void @clang_getTypeDeclaration(ptr sret(%S.C.CXCursor) align 16 %a157, ptr byval(%S.C.CXType) align 8 %a159) + %t160 = load %S.C.CXCursor, ptr %a157 + store %S.C.CXCursor %t160, ptr %a161 + %t162 = call i32 @clang_getCursorKind(ptr byval(%S.C.CXCursor) align 8 %a161) + %t163 = icmp eq i32 %t162, 3 + br i1 %t163, label %then9076, label %endif9078 +then9076: + %t164 = call %S.cimport.Mapped @finch.cimport.no({ ptr, i64, i64 } { ptr @.str.6301, i64 23, i64 0 }) + ret %S.cimport.Mapped %t164 +endif9078: + %t165 = load ptr, ptr %a1 + %t166 = load %S.C.CXType, ptr %a9 + %t167 = call { ptr, i64, i64 } @finch.cimport.defineRecord(ptr %t165, %S.C.CXType %t166) + store { ptr, i64, i64 } %t167, ptr %a168 + %t169 = getelementptr inbounds { ptr, i64, i64 }, ptr %a168, i32 0, i32 1 + %t170 = load i64, ptr %t169 + %t171 = icmp eq i64 %t170, 0 + br i1 %t171, label %then9079, label %endif9081 +then9079: + %t172 = call %S.cimport.Mapped @finch.cimport.no({ ptr, i64, i64 } { ptr @.str.6302, i64 36, i64 0 }) + call void @finch_str_drop(ptr %a168) + ret %S.cimport.Mapped %t172 +endif9081: + %t173 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.6303, i64 5, i64 0 }, 0 + %t174 = load { ptr, i64, i64 }, ptr %a168 + store { ptr, i64, i64 } %t174, ptr %a175 + call void @finch_str_copy(ptr %a176, ptr %a175) + %t177 = load { ptr, i64, i64 }, ptr %a176 + %t178 = insertvalue %S.ast.Type %t173, { ptr, i64, i64 } %t177, 2 + %t179 = insertvalue %S.ast.Type %t178, { ptr, i64, i64 } { ptr @.str.6304, i64 1, i64 0 }, 3 + %t180 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t179) + store %S.ast.Type %t179, ptr %a181 + call void @finch.drop.S_ast_Type(ptr %a181) + call void @finch_str_drop(ptr %a168) + ret %S.cimport.Mapped %t180 +endif9075: + %t182 = load i32, ptr %a16 + %t183 = icmp eq i32 %t182, 112 + br i1 %t183, label %then9082, label %endif9084 +then9082: + %t184 = load ptr, ptr %a1 + %t186 = load %S.C.CXType, ptr %a9 + store %S.C.CXType %t186, ptr %a187 + call void @clang_getArrayElementType(ptr sret(%S.C.CXType) align 16 %a185, ptr byval(%S.C.CXType) align 8 %a187) + %t188 = load %S.C.CXType, ptr %a185 + %t189 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t184, %S.C.CXType %t188, i1 false, i1 false) + store %S.cimport.Mapped %t189, ptr %a190 + %t191 = getelementptr inbounds %S.cimport.Mapped, ptr %a190, i32 0, i32 2 + %t192 = load i1, ptr %t191 + %t193 = xor i1 %t192, true + br i1 %t193, label %then9085, label %endif9087 +then9085: + %t194 = load %S.cimport.Mapped, ptr %a190 ret %S.cimport.Mapped %t194 -endif8608: - %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.6087, 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.6088, 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) - ret %S.cimport.Mapped %t209 +endif9087: + %t195 = getelementptr inbounds %S.cimport.Mapped, ptr %a190, i32 0, i32 0 + %t196 = load %S.ast.Type, ptr %t195 + %t197 = load %S.C.CXType, ptr %a9 + store %S.C.CXType %t197, ptr %a198 + %t199 = call i64 @clang_getArraySize(ptr byval(%S.C.CXType) align 8 %a198) + %t200 = call %S.ast.Type @finch.cimport.fixed(%S.ast.Type %t196, i64 %t199) + %t201 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t200) + store %S.ast.Type %t200, ptr %a202 + call void @finch.drop.S_ast_Type(ptr %a202) + call void @finch.drop.S_cimport_Mapped(ptr %a190) + ret %S.cimport.Mapped %t201 +endif9084: + %t203 = load i32, ptr %a16 + %t204 = icmp eq i32 %t203, 23 + br i1 %t204, label %then9088, label %endif9090 +then9088: + %t205 = call %S.cimport.Mapped @finch.cimport.no({ ptr, i64, i64 } { ptr @.str.6305, i64 16, i64 0 }) + ret %S.cimport.Mapped %t205 +endif9090: + %t206 = load %S.C.CXType, ptr %a9 + store %S.C.CXType %t206, ptr %a207 + %t208 = call { i64, i64 } @clang_getTypeSpelling(ptr byval(%S.C.CXType) align 8 %a207) + store { i64, i64 } %t208, ptr %a209 + %t210 = load %S.C.CXString, ptr %a209 + %t211 = call { ptr, i64, i64 } @finch.cimport.text(%S.C.CXString %t210) + store { ptr, i64, i64 } { ptr @.str.6306, i64 17, i64 0 }, ptr %a213 + store { ptr, i64, i64 } %t211, ptr %a214 + call void @finch_str_concat(ptr %a212, ptr %a213, ptr %a214) + store { ptr, i64, i64 } %t211, ptr %a215 + call void @finch_str_drop(ptr %a215) + %t216 = load { ptr, i64, i64 }, ptr %a212 + store { ptr, i64, i64 } %t216, ptr %a218 + store { ptr, i64, i64 } { ptr @.str.6307, i64 1, i64 0 }, ptr %a219 + call void @finch_str_concat(ptr %a217, ptr %a218, ptr %a219) + store { ptr, i64, i64 } %t216, ptr %a220 + call void @finch_str_drop(ptr %a220) + %t221 = load { ptr, i64, i64 }, ptr %a217 + %t222 = call %S.cimport.Mapped @finch.cimport.no({ ptr, i64, i64 } %t221) + store { ptr, i64, i64 } %t221, ptr %a223 + call void @finch_str_drop(ptr %a223) + ret %S.cimport.Mapped %t222 } define internal %S.cimport.Number @finch.cimport.parseInt({ ptr, i64, i64 } %p0) { @@ -78991,17 +95052,20 @@ entry: %a17 = alloca { ptr, i64, i64 }, align 16 %a22 = alloca { ptr, i64, i64 }, align 16 %a23 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca i64, align 16 - %a45 = alloca i1, align 16 - %a46 = alloca i64, align 16 - %a58 = alloca i8, align 16 - %a59 = alloca i64, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 + %a28 = alloca { ptr, i64, i64 }, align 16 + %a41 = alloca { ptr, i64, i64 }, align 16 + %a42 = alloca { ptr, i64, i64 }, align 16 + %a47 = alloca { ptr, i64, i64 }, align 16 + %a48 = alloca i64, align 16 + %a49 = alloca i1, align 16 + %a50 = alloca i64, align 16 + %a62 = alloca i8, align 16 + %a63 = alloca i64, align 16 + %a107 = alloca { ptr, i64, i64 }, align 16 + %a108 = alloca { ptr, i64, i64 }, align 16 + %a116 = alloca { ptr, i64, i64 }, align 16 + %a118 = alloca { ptr, i64, i64 }, align 16 + %a121 = 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 @@ -79011,258 +95075,258 @@ 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.6090, i64 2, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.6309, 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.from8609 -logic.from8609: - br i1 %t13, label %logic.end8611, label %logic.rhs8610 -logic.rhs8610: + br label %logic.from9091 +logic.from9091: + br i1 %t13, label %logic.end9093, label %logic.rhs9092 +logic.rhs9092: %t14 = load { ptr, i64, i64 }, ptr %a6 store { ptr, i64, i64 } %t14, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.6092, i64 2, i64 0 }, ptr %a17 + store { ptr, i64, i64 } { ptr @.str.6311, 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.rend8612 -logic.rend8612: - br label %logic.end8611 -logic.end8611: - %t20 = phi i1 [ true, %logic.from8609 ], [ %t19, %logic.rend8612 ] - br i1 %t20, label %then8613, label %else8614 -then8613: + br label %logic.rend9094 +logic.rend9094: + br label %logic.end9093 +logic.end9093: + %t20 = phi i1 [ true, %logic.from9091 ], [ %t19, %logic.rend9094 ] + br i1 %t20, label %then9095, label %else9096 +then9095: 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.6093, i64 327) + call void @finch_str_sub(ptr %a23, ptr %a22, i64 2, i64 %t25, ptr @.str.6312, i64 331) %t26 = load { ptr, i64, i64 }, ptr %a23 + %t27 = load { ptr, i64, i64 }, ptr %a6 store { ptr, i64, i64 } %t26, ptr %a6 - br label %endif8615 -else8614: - %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.from8616 -logic.from8616: - br i1 %t29, label %logic.rhs8617, label %logic.end8618 -logic.rhs8617: - %t30 = load { ptr, i64, i64 }, ptr %a6 - %t31 = extractvalue { ptr, i64, i64 } %t30, 1 - %t32 = icmp uge i64 0, %t31 - br i1 %t32, label %range8619, label %inrange8620 -range8619: - call void @finch_panic_index(ptr @.str.6094, i64 328, i64 0, i64 %t31) + store { ptr, i64, i64 } %t27, ptr %a28 + call void @finch_str_drop(ptr %a28) + br label %endif9097 +else9096: + %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 + %t30 = load i64, ptr %t29 + %t31 = icmp sgt i64 %t30, 1 + br label %logic.from9098 +logic.from9098: + br i1 %t31, label %logic.rhs9099, label %logic.end9100 +logic.rhs9099: + %t32 = load { ptr, i64, i64 }, ptr %a6 + %t33 = extractvalue { ptr, i64, i64 } %t32, 1 + %t34 = icmp uge i64 0, %t33 + br i1 %t34, label %range9101, label %inrange9102 +range9101: + call void @finch_panic_index(ptr @.str.6313, i64 332, i64 0, i64 %t33) unreachable -inrange8620: - %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.rend8621 -logic.rend8621: - br label %logic.end8618 -logic.end8618: - %t37 = phi i1 [ false, %logic.from8616 ], [ %t36, %logic.rend8621 ] - br i1 %t37, label %then8622, label %endif8624 -then8622: +inrange9102: + %t35 = extractvalue { ptr, i64, i64 } %t32, 0 + %t36 = getelementptr inbounds i8, ptr %t35, i64 0 + %t37 = load i8, ptr %t36 + %t38 = icmp eq i8 %t37, 48 + br label %logic.rend9103 +logic.rend9103: + br label %logic.end9100 +logic.end9100: + %t39 = phi i1 [ false, %logic.from9098 ], [ %t38, %logic.rend9103 ] + br i1 %t39, label %then9104, label %endif9106 +then9104: 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.6095, i64 330) - %t43 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t43, ptr %a6 - br label %endif8624 -endif8624: - br label %endif8615 -endif8615: - store i64 0, ptr %a44 - store i1 false, ptr %a45 - store i64 0, ptr %a46 - br label %while.cond8625 -while.cond8625: - %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.body8626, label %while.end8627 -while.body8626: - %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 %range8628, label %inrange8629 -range8628: - call void @finch_panic_index(ptr @.str.6096, i64 336, i64 %t51, i64 %t53) + %t40 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t40, ptr %a41 + %t43 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 + %t44 = load i64, ptr %t43 + call void @finch_str_sub(ptr %a42, ptr %a41, i64 1, i64 %t44, ptr @.str.6314, i64 334) + %t45 = load { ptr, i64, i64 }, ptr %a42 + %t46 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t45, ptr %a6 + store { ptr, i64, i64 } %t46, ptr %a47 + call void @finch_str_drop(ptr %a47) + br label %endif9106 +endif9106: + br label %endif9097 +endif9097: + store i64 0, ptr %a48 + store i1 false, ptr %a49 + store i64 0, ptr %a50 + br label %while.cond9107 +while.cond9107: + %t51 = load i64, ptr %a50 + %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 + %t53 = load i64, ptr %t52 + %t54 = icmp slt i64 %t51, %t53 + br i1 %t54, label %while.body9108, label %while.end9109 +while.body9108: + %t55 = load i64, ptr %a50 + %t56 = load { ptr, i64, i64 }, ptr %a6 + %t57 = extractvalue { ptr, i64, i64 } %t56, 1 + %t58 = icmp uge i64 %t55, %t57 + br i1 %t58, label %range9110, label %inrange9111 +range9110: + call void @finch_panic_index(ptr @.str.6315, i64 340, i64 %t55, i64 %t57) unreachable -inrange8629: - %t55 = extractvalue { ptr, i64, i64 } %t52, 0 - %t56 = getelementptr inbounds i8, ptr %t55, i64 %t51 - %t57 = load i8, ptr %t56 - store i8 %t57, ptr %a58 - store i64 99, ptr %a59 - %t60 = load i8, ptr %a58 - %t61 = icmp uge i8 %t60, 48 - br label %logic.from8630 -logic.from8630: - br i1 %t61, label %logic.rhs8631, label %logic.end8632 -logic.rhs8631: - %t62 = load i8, ptr %a58 - %t63 = icmp ule i8 %t62, 57 - br label %logic.rend8633 -logic.rend8633: - br label %logic.end8632 -logic.end8632: - %t64 = phi i1 [ false, %logic.from8630 ], [ %t63, %logic.rend8633 ] - br i1 %t64, label %then8634, label %else8635 -then8634: - %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 %endif8636 -else8635: - %t69 = load i8, ptr %a58 - %t70 = icmp uge i8 %t69, 97 - br label %logic.from8637 -logic.from8637: - br i1 %t70, label %logic.rhs8638, label %logic.end8639 -logic.rhs8638: - %t71 = load i8, ptr %a58 - %t72 = icmp ule i8 %t71, 102 - br label %logic.rend8640 -logic.rend8640: - br label %logic.end8639 -logic.end8639: - %t73 = phi i1 [ false, %logic.from8637 ], [ %t72, %logic.rend8640 ] - br i1 %t73, label %then8641, label %else8642 -then8641: - %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 %endif8643 -else8642: - %t79 = load i8, ptr %a58 - %t80 = icmp uge i8 %t79, 65 - br label %logic.from8644 -logic.from8644: - br i1 %t80, label %logic.rhs8645, label %logic.end8646 -logic.rhs8645: - %t81 = load i8, ptr %a58 - %t82 = icmp ule i8 %t81, 70 - br label %logic.rend8647 -logic.rend8647: - br label %logic.end8646 -logic.end8646: - %t83 = phi i1 [ false, %logic.from8644 ], [ %t82, %logic.rend8647 ] - br i1 %t83, label %then8648, label %endif8650 -then8648: - %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 %endif8650 -endif8650: - br label %endif8643 -endif8643: - br label %endif8636 -endif8636: - %t89 = load i64, ptr %a59 - %t90 = load i64, ptr %a7 - %t91 = icmp sge i64 %t89, %t90 - br i1 %t91, label %then8651, label %endif8653 -then8651: - br label %while.end8627 -endif8653: - %t92 = load i64, ptr %a44 - %t93 = load i64, ptr %a7 - %t94 = mul i64 %t92, %t93 - %t95 = load i64, ptr %a59 - %t96 = add i64 %t94, %t95 - store i64 %t96, ptr %a44 - store i1 true, ptr %a45 - %t97 = load i64, ptr %a46 - %t98 = add i64 %t97, 1 - store i64 %t98, ptr %a46 - br label %while.cond8625 -while.end8627: - br label %while.cond8654 -while.cond8654: - %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.body8655, label %while.end8656 -while.body8655: - store { ptr, i64, i64 } { ptr @.str.6097, 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 %range8657, label %inrange8658 -range8657: - call void @finch_panic_index(ptr @.str.6099, i64 354, i64 %t105, i64 %t107) +inrange9111: + %t59 = extractvalue { ptr, i64, i64 } %t56, 0 + %t60 = getelementptr inbounds i8, ptr %t59, i64 %t55 + %t61 = load i8, ptr %t60 + store i8 %t61, ptr %a62 + store i64 99, ptr %a63 + %t64 = load i8, ptr %a62 + %t65 = icmp uge i8 %t64, 48 + br label %logic.from9112 +logic.from9112: + br i1 %t65, label %logic.rhs9113, label %logic.end9114 +logic.rhs9113: + %t66 = load i8, ptr %a62 + %t67 = icmp ule i8 %t66, 57 + br label %logic.rend9115 +logic.rend9115: + br label %logic.end9114 +logic.end9114: + %t68 = phi i1 [ false, %logic.from9112 ], [ %t67, %logic.rend9115 ] + br i1 %t68, label %then9116, label %else9117 +then9116: + %t69 = load i8, ptr %a62 + %t70 = zext i8 %t69 to i64 + %t71 = zext i8 48 to i64 + %t72 = sub i64 %t70, %t71 + store i64 %t72, ptr %a63 + br label %endif9118 +else9117: + %t73 = load i8, ptr %a62 + %t74 = icmp uge i8 %t73, 97 + br label %logic.from9119 +logic.from9119: + br i1 %t74, label %logic.rhs9120, label %logic.end9121 +logic.rhs9120: + %t75 = load i8, ptr %a62 + %t76 = icmp ule i8 %t75, 102 + br label %logic.rend9122 +logic.rend9122: + br label %logic.end9121 +logic.end9121: + %t77 = phi i1 [ false, %logic.from9119 ], [ %t76, %logic.rend9122 ] + br i1 %t77, label %then9123, label %else9124 +then9123: + %t78 = load i8, ptr %a62 + %t79 = zext i8 %t78 to i64 + %t80 = zext i8 97 to i64 + %t81 = sub i64 %t79, %t80 + %t82 = add i64 %t81, 10 + store i64 %t82, ptr %a63 + br label %endif9125 +else9124: + %t83 = load i8, ptr %a62 + %t84 = icmp uge i8 %t83, 65 + br label %logic.from9126 +logic.from9126: + br i1 %t84, label %logic.rhs9127, label %logic.end9128 +logic.rhs9127: + %t85 = load i8, ptr %a62 + %t86 = icmp ule i8 %t85, 70 + br label %logic.rend9129 +logic.rend9129: + br label %logic.end9128 +logic.end9128: + %t87 = phi i1 [ false, %logic.from9126 ], [ %t86, %logic.rend9129 ] + br i1 %t87, label %then9130, label %endif9132 +then9130: + %t88 = load i8, ptr %a62 + %t89 = zext i8 %t88 to i64 + %t90 = zext i8 65 to i64 + %t91 = sub i64 %t89, %t90 + %t92 = add i64 %t91, 10 + store i64 %t92, ptr %a63 + br label %endif9132 +endif9132: + br label %endif9125 +endif9125: + br label %endif9118 +endif9118: + %t93 = load i64, ptr %a63 + %t94 = load i64, ptr %a7 + %t95 = icmp sge i64 %t93, %t94 + br i1 %t95, label %then9133, label %endif9135 +then9133: + br label %while.end9109 +endif9135: + %t96 = load i64, ptr %a48 + %t97 = load i64, ptr %a7 + %t98 = mul i64 %t96, %t97 + %t99 = load i64, ptr %a63 + %t100 = add i64 %t98, %t99 + store i64 %t100, ptr %a48 + store i1 true, ptr %a49 + %t101 = load i64, ptr %a50 + %t102 = add i64 %t101, 1 + store i64 %t102, ptr %a50 + br label %while.cond9107 +while.end9109: + br label %while.cond9136 +while.cond9136: + %t103 = load i64, ptr %a50 + %t104 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 + %t105 = load i64, ptr %t104 + %t106 = icmp slt i64 %t103, %t105 + br i1 %t106, label %while.body9137, label %while.end9138 +while.body9137: + store { ptr, i64, i64 } { ptr @.str.6316, i64 4, i64 0 }, ptr %a107 + %t109 = load i64, ptr %a50 + %t110 = load { ptr, i64, i64 }, ptr %a6 + %t111 = extractvalue { ptr, i64, i64 } %t110, 1 + %t112 = icmp uge i64 %t109, %t111 + br i1 %t112, label %range9139, label %inrange9140 +range9139: + call void @finch_panic_index(ptr @.str.6318, i64 358, i64 %t109, i64 %t111) unreachable -inrange8658: - %t109 = extractvalue { ptr, i64, i64 } %t106, 0 - %t110 = getelementptr inbounds i8, ptr %t109, i64 %t105 - %t111 = load i8, ptr %t110 - call void @finch_str_from_char(ptr %a112, i8 signext %t111) - %t113 = load { ptr, i64, i64 }, ptr %a112 - store { ptr, i64, i64 } %t113, ptr %a114 - %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 %then8659, label %endif8661 -then8659: +inrange9140: + %t113 = extractvalue { ptr, i64, i64 } %t110, 0 + %t114 = getelementptr inbounds i8, ptr %t113, i64 %t109 + %t115 = load i8, ptr %t114 + call void @finch_str_from_char(ptr %a116, i8 signext %t115) + %t117 = load { ptr, i64, i64 }, ptr %a116 + store { ptr, i64, i64 } %t117, ptr %a118 + %t119 = call i64 @finch_str_find(ptr %a107, ptr %a118) + %t120 = icmp sge i64 %t119, 0 + store { ptr, i64, i64 } %t117, ptr %a121 + call void @finch_str_drop(ptr %a121) + %t122 = xor i1 %t120, true + br i1 %t122, label %then9141, label %endif9143 +then9141: + call void @finch_str_drop(ptr %a6) ret %S.cimport.Number zeroinitializer -endif8661: - %t118 = load i64, ptr %a46 - %t119 = add i64 %t118, 1 - store i64 %t119, ptr %a46 - br label %while.cond8654 -while.end8656: - %t120 = load i1, ptr %a45 - %t121 = xor i1 %t120, true - br label %logic.from8662 -logic.from8662: - br i1 %t121, label %logic.rhs8663, label %logic.end8664 -logic.rhs8663: - %t122 = load i64, ptr %a7 - %t123 = icmp ne i64 %t122, 8 - br label %logic.rend8665 -logic.rend8665: - br label %logic.end8664 -logic.end8664: - %t124 = phi i1 [ false, %logic.from8662 ], [ %t123, %logic.rend8665 ] - br i1 %t124, label %then8666, label %endif8668 -then8666: +endif9143: + %t123 = load i64, ptr %a50 + %t124 = add i64 %t123, 1 + store i64 %t124, ptr %a50 + br label %while.cond9136 +while.end9138: + %t125 = load i1, ptr %a49 + %t126 = xor i1 %t125, true + br label %logic.from9144 +logic.from9144: + br i1 %t126, label %logic.rhs9145, label %logic.end9146 +logic.rhs9145: + %t127 = load i64, ptr %a7 + %t128 = icmp ne i64 %t127, 8 + br label %logic.rend9147 +logic.rend9147: + br label %logic.end9146 +logic.end9146: + %t129 = phi i1 [ false, %logic.from9144 ], [ %t128, %logic.rend9147 ] + br i1 %t129, label %then9148, label %endif9150 +then9148: + call void @finch_str_drop(ptr %a6) ret %S.cimport.Number zeroinitializer -endif8668: - %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 - %t128 = insertvalue %S.cimport.Number %t127, i1 true, 1 - ret %S.cimport.Number %t128 -} - -define internal void @finch.copy.S_cimport_Number(ptr %dst, ptr %src) { -entry: - - %t1 = load %S.cimport.Number, ptr %src - store %S.cimport.Number %t1, ptr %dst - %t2 = getelementptr inbounds %S.cimport.Number, ptr %dst, i32 0, i32 0 - %t3 = getelementptr inbounds %S.cimport.Number, ptr %src, i32 0, i32 0 - call void @finch.copy.S_cimport_CConst(ptr %t2, ptr %t3) - ret void +endif9150: + %t130 = load i64, ptr %a48 + %t131 = insertvalue %S.cimport.CConst zeroinitializer, i64 %t130, 1 + %t132 = insertvalue %S.cimport.Number zeroinitializer, %S.cimport.CConst %t131, 0 + %t133 = insertvalue %S.cimport.Number %t132, i1 true, 1 + call void @finch_str_drop(ptr %a6) + ret %S.cimport.Number %t133 } define internal %S.cimport.Number @finch.cimport.macroValue(ptr %p0, %S.C.CXCursor %p1) { @@ -79283,55 +95347,58 @@ entry: %a63 = alloca { ptr, i64, i64 }, align 16 %a76 = alloca { ptr, i64, i64 }, align 16 %a77 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca i1, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 + %a87 = alloca { ptr, i64, i64 }, align 16 + %a95 = alloca { ptr, i64, i64 }, align 16 + %a96 = alloca i1, align 16 + %a106 = alloca { ptr, i64, i64 }, align 16 + %a107 = alloca { ptr, i64, i64 }, align 16 + %a117 = alloca { ptr, i64, i64 }, align 16 %a127 = 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 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a170 = 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 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca i1, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 + %a128 = alloca { ptr, i64, i64 }, align 16 + %a130 = 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 + %a168 = 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 + %a180 = alloca { ptr, i64, i64 }, align 16 + %a181 = alloca { ptr, i64, i64 }, align 16 + %a182 = alloca { ptr, i64, i64 }, align 16 + %a187 = alloca i1, align 16 %a190 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 + %a191 = alloca { ptr, i64, i64 }, align 16 + %a193 = alloca { ptr, i64, i64 }, align 16 + %a197 = alloca { ptr, i64, i64 }, align 16 + %a198 = alloca { ptr, i64, i64 }, align 16 + %a208 = alloca { ptr, i64, i64 }, align 16 + %a210 = alloca { ptr, i64, i64 }, align 16 %a213 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca double, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca double, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca %S.cimport.Number, align 16 - %a255 = alloca %S.cimport.Number, align 16 - %a256 = alloca %S.cimport.Number, align 16 + %a216 = alloca { ptr, i64, i64 }, align 16 + %a217 = alloca { ptr, i64, i64 }, align 16 + %a223 = alloca { ptr, i64, i64 }, align 16 + %a225 = alloca { ptr, i64, i64 }, align 16 + %a226 = alloca double, align 16 + %a227 = alloca { ptr, i64, i64 }, align 16 + %a232 = alloca { ptr, i64, i64 }, align 16 + %a233 = alloca double, align 16 + %a241 = alloca { ptr, i64, i64 }, align 16 + %a242 = alloca { ptr, i64, i64 }, align 16 + %a249 = alloca %S.cimport.Number, align 16 store ptr %p0, ptr %a1 store %S.C.CXCursor %p1, ptr %a2 store ptr null, ptr %a3 store i32 0, ptr %a4 %t5 = load ptr, ptr %a1 %t6 = icmp eq ptr %t5, null - br i1 %t6, label %panic8669, label %ok8670 -panic8669: - call void @finch_panic(ptr @.str.6100, i64 369, ptr @.str.6101) + br i1 %t6, label %panic9151, label %ok9152 +panic9151: + call void @finch_panic(ptr @.str.6319, i64 373, ptr @.str.6320) unreachable -ok8670: +ok9152: %t7 = getelementptr inbounds %S.cimport.Importer, ptr %t5, i32 0, i32 1 %t8 = load ptr, ptr %t7 %t10 = load %S.C.CXCursor, ptr %a2 @@ -79344,12 +95411,12 @@ ok8670: %t15 = load i32, ptr %a4 %t16 = zext i32 %t15 to i64 store i64 1, ptr %a17 - br label %for.cond8671 -for.cond8671: + br label %for.cond9153 +for.cond9153: %t18 = load i64, ptr %a17 %t19 = icmp slt i64 %t18, %t16 - br i1 %t19, label %for.body8672, label %for.end8674 -for.body8672: + br i1 %t19, label %for.body9154, label %for.end9156 +for.body9154: %t20 = load i64, ptr %a17 %t21 = load ptr, ptr %a3 %t22 = getelementptr inbounds %S.C.CXToken, ptr %t21, i64 %t20 @@ -79357,18 +95424,18 @@ for.body8672: 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 %then8675, label %endif8677 -then8675: - br label %for.step8673 -endif8677: + br i1 %t26, label %then9157, label %endif9159 +then9157: + br label %for.step9155 +endif9159: %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 %panic8678, label %ok8679 -panic8678: - call void @finch_panic(ptr @.str.6102, i64 375, ptr @.str.6103) + br i1 %t29, label %panic9160, label %ok9161 +panic9160: + call void @finch_panic(ptr @.str.6321, i64 379, ptr @.str.6322) unreachable -ok8679: +ok9161: %t30 = getelementptr inbounds %S.cimport.Importer, ptr %t28, i32 0, i32 1 %t31 = load ptr, ptr %t30 %t32 = load i64, ptr %a17 @@ -79387,416 +95454,436 @@ ok8679: %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.step8673 -for.step8673: + br label %for.step9155 +for.step9155: %t45 = load i64, ptr %a17 %t46 = add i64 %t45, 1 store i64 %t46, ptr %a17 - br label %for.cond8671 -for.end8674: + br label %for.cond9153 +for.end9156: %t47 = load ptr, ptr %a1 %t48 = icmp eq ptr %t47, null - br i1 %t48, label %panic8680, label %ok8681 -panic8680: - call void @finch_panic(ptr @.str.6104, i64 377, ptr @.str.6105) + br i1 %t48, label %panic9162, label %ok9163 +panic9162: + call void @finch_panic(ptr @.str.6323, i64 381, ptr @.str.6324) unreachable -ok8681: +ok9163: %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.cond8682 -while.cond8682: + br label %while.cond9164 +while.cond9164: %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.from8685 -logic.from8685: - br i1 %t55, label %logic.rhs8686, label %logic.end8687 -logic.rhs8686: + br label %logic.from9167 +logic.from9167: + br i1 %t55, label %logic.rhs9168, label %logic.end9169 +logic.rhs9168: %t56 = load { ptr, i64, i64 }, ptr %a14 %t57 = extractvalue { ptr, i64, i64 } %t56, 1 %t58 = icmp uge i64 0, %t57 - br i1 %t58, label %range8688, label %inrange8689 -range8688: - call void @finch_panic_index(ptr @.str.6106, i64 379, i64 0, i64 %t57) + br i1 %t58, label %range9170, label %inrange9171 +range9170: + call void @finch_panic_index(ptr @.str.6325, i64 383, i64 0, i64 %t57) unreachable -inrange8689: +inrange9171: %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.6107, i64 1, i64 0 }, ptr %a63 + store { ptr, i64, i64 } { ptr @.str.6326, 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.rend8690 -logic.rend8690: - br label %logic.end8687 -logic.end8687: - %t66 = phi i1 [ false, %logic.from8685 ], [ %t65, %logic.rend8690 ] - br label %logic.from8691 -logic.from8691: - br i1 %t66, label %logic.rhs8692, label %logic.end8693 -logic.rhs8692: + br label %logic.rend9172 +logic.rend9172: + br label %logic.end9169 +logic.end9169: + %t66 = phi i1 [ false, %logic.from9167 ], [ %t65, %logic.rend9172 ] + br label %logic.from9173 +logic.from9173: + br i1 %t66, label %logic.rhs9174, label %logic.end9175 +logic.rhs9174: %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 %range8694, label %inrange8695 -range8694: - call void @finch_panic_index(ptr @.str.6108, i64 379, i64 %t69, i64 %t71) + br i1 %t72, label %range9176, label %inrange9177 +range9176: + call void @finch_panic_index(ptr @.str.6327, i64 383, i64 %t69, i64 %t71) unreachable -inrange8695: +inrange9177: %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.6109, i64 1, i64 0 }, ptr %a77 + store { ptr, i64, i64 } { ptr @.str.6328, 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.rend8696 -logic.rend8696: - br label %logic.end8693 -logic.end8693: - %t80 = phi i1 [ false, %logic.from8691 ], [ %t79, %logic.rend8696 ] - br i1 %t80, label %while.body8683, label %while.end8684 -while.body8683: + br label %logic.rend9178 +logic.rend9178: + br label %logic.end9175 +logic.end9175: + %t80 = phi i1 [ false, %logic.from9173 ], [ %t79, %logic.rend9178 ] + br i1 %t80, label %while.body9165, label %while.end9166 +while.body9165: %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 %range8697, label %inrange8698 -range8697: - call void @finch_panic_index(ptr @.str.6110, i64 380, i64 0, i64 %t82) + br i1 %t83, label %range9179, label %inrange9180 +range9179: + call void @finch_panic_index(ptr @.str.6329, i64 384, i64 0, i64 %t82) unreachable -inrange8698: +inrange9180: %t84 = load ptr, ptr %a14 %t85 = getelementptr inbounds { ptr, i64, i64 }, ptr %t84, i64 0 %t86 = load { ptr, i64, i64 }, ptr %t85 call void @finch_arr_remove_gap(ptr %a14, i64 0, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %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 %panic8699, label %ok8700 -panic8699: - call void @finch_panic(ptr @.str.6111, i64 381, ptr @.str.6112) + store { ptr, i64, i64 } %t86, ptr %a87 + call void @finch_str_drop(ptr %a87) + %t88 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 + %t89 = load i64, ptr %t88 + %t90 = icmp eq i64 %t89, 0 + br i1 %t90, label %panic9181, label %ok9182 +panic9181: + call void @finch_panic(ptr @.str.6330, i64 385, ptr @.str.6331) unreachable -ok8700: - %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.cond8682 -while.end8684: - 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.from8701 -logic.from8701: - br i1 %t97, label %logic.rhs8702, label %logic.end8703 -logic.rhs8702: - %t98 = load { ptr, i64, i64 }, ptr %a14 - %t99 = extractvalue { ptr, i64, i64 } %t98, 1 - %t100 = icmp uge i64 0, %t99 - br i1 %t100, label %range8704, label %inrange8705 -range8704: - call void @finch_panic_index(ptr @.str.6113, i64 384, i64 0, i64 %t99) +ok9182: + %t91 = sub i64 %t89, 1 + %t92 = load ptr, ptr %a14 + %t93 = getelementptr inbounds { ptr, i64, i64 }, ptr %t92, i64 %t91 + %t94 = load { ptr, i64, i64 }, ptr %t93 + store i64 %t91, ptr %t88 + store { ptr, i64, i64 } %t94, ptr %a95 + call void @finch_str_drop(ptr %a95) + br label %while.cond9164 +while.end9166: + store i1 false, ptr %a96 + %t97 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 + %t98 = load i64, ptr %t97 + %t99 = icmp eq i64 %t98, 2 + br label %logic.from9183 +logic.from9183: + br i1 %t99, label %logic.rhs9184, label %logic.end9185 +logic.rhs9184: + %t100 = load { ptr, i64, i64 }, ptr %a14 + %t101 = extractvalue { ptr, i64, i64 } %t100, 1 + %t102 = icmp uge i64 0, %t101 + br i1 %t102, label %range9186, label %inrange9187 +range9186: + call void @finch_panic_index(ptr @.str.6332, i64 388, i64 0, i64 %t101) unreachable -inrange8705: - %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.6114, 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.rend8706 -logic.rend8706: - br label %logic.end8703 -logic.end8703: - %t108 = phi i1 [ false, %logic.from8701 ], [ %t107, %logic.rend8706 ] - br i1 %t108, label %then8707, label %endif8709 -then8707: - 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 %range8710, label %inrange8711 -range8710: - call void @finch_panic_index(ptr @.str.6115, i64 386, i64 0, i64 %t110) +inrange9187: + %t103 = extractvalue { ptr, i64, i64 } %t100, 0 + %t104 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i64 0 + %t105 = load { ptr, i64, i64 }, ptr %t104 + store { ptr, i64, i64 } %t105, ptr %a106 + store { ptr, i64, i64 } { ptr @.str.6333, i64 1, i64 0 }, ptr %a107 + %t108 = call i32 @finch_str_eq(ptr %a106, ptr %a107) + %t109 = icmp ne i32 %t108, 0 + br label %logic.rend9188 +logic.rend9188: + br label %logic.end9185 +logic.end9185: + %t110 = phi i1 [ false, %logic.from9183 ], [ %t109, %logic.rend9188 ] + br i1 %t110, label %then9189, label %endif9191 +then9189: + store i1 true, ptr %a96 + %t111 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 + %t112 = load i64, ptr %t111 + %t113 = icmp uge i64 0, %t112 + br i1 %t113, label %range9192, label %inrange9193 +range9192: + call void @finch_panic_index(ptr @.str.6334, i64 390, i64 0, i64 %t112) unreachable -inrange8711: - %t112 = load ptr, ptr %a14 - %t113 = getelementptr inbounds { ptr, i64, i64 }, ptr %t112, i64 0 - %t114 = load { ptr, i64, i64 }, ptr %t113 +inrange9193: + %t114 = load ptr, ptr %a14 + %t115 = getelementptr inbounds { ptr, i64, i64 }, ptr %t114, i64 0 + %t116 = load { ptr, i64, i64 }, ptr %t115 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 %endif8709 -endif8709: - %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 %then8712, label %endif8714 -then8712: + store { ptr, i64, i64 } %t116, ptr %a117 + call void @finch_str_drop(ptr %a117) + br label %endif9191 +endif9191: + %t118 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 + %t119 = load i64, ptr %t118 + %t120 = icmp ne i64 %t119, 1 + br i1 %t120, label %then9194, label %endif9196 +then9194: + call void @finch.drop.arr_str(ptr %a14) ret %S.cimport.Number zeroinitializer -endif8714: - %t118 = load { ptr, i64, i64 }, ptr %a14 - %t119 = extractvalue { ptr, i64, i64 } %t118, 1 - %t120 = icmp uge i64 0, %t119 - br i1 %t120, label %range8715, label %inrange8716 -range8715: - call void @finch_panic_index(ptr @.str.6116, i64 391, i64 0, i64 %t119) +endif9196: + %t121 = load { ptr, i64, i64 }, ptr %a14 + %t122 = extractvalue { ptr, i64, i64 } %t121, 1 + %t123 = icmp uge i64 0, %t122 + br i1 %t123, label %range9197, label %inrange9198 +range9197: + call void @finch_panic_index(ptr @.str.6335, i64 395, i64 0, i64 %t122) unreachable -inrange8716: - %t121 = extractvalue { ptr, i64, i64 } %t118, 0 - %t122 = getelementptr inbounds { ptr, i64, i64 }, ptr %t121, i64 0 - %t123 = load { ptr, i64, i64 }, ptr %t122 - store { ptr, i64, i64 } %t123, ptr %a124 - call void @finch_str_copy(ptr %a125, ptr %a124) - %t126 = load { ptr, i64, i64 }, ptr %a125 +inrange9198: + %t124 = extractvalue { ptr, i64, i64 } %t121, 0 + %t125 = getelementptr inbounds { ptr, i64, i64 }, ptr %t124, i64 0 + %t126 = load { ptr, i64, i64 }, ptr %t125 store { ptr, i64, i64 } %t126, ptr %a127 - %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.from8717 -logic.from8717: - br i1 %t130, label %logic.end8719, label %logic.rhs8718 -logic.rhs8718: - %t131 = load { ptr, i64, i64 }, ptr %a127 - %t132 = extractvalue { ptr, i64, i64 } %t131, 1 - %t133 = icmp uge i64 0, %t132 - br i1 %t133, label %range8720, label %inrange8721 -range8720: - call void @finch_panic_index(ptr @.str.6117, i64 392, i64 0, i64 %t132) + call void @finch_str_copy(ptr %a128, ptr %a127) + %t129 = load { ptr, i64, i64 }, ptr %a128 + store { ptr, i64, i64 } %t129, ptr %a130 + %t131 = getelementptr inbounds { ptr, i64, i64 }, ptr %a130, i32 0, i32 1 + %t132 = load i64, ptr %t131 + %t133 = icmp eq i64 %t132, 0 + br label %logic.from9199 +logic.from9199: + br i1 %t133, label %logic.end9201, label %logic.rhs9200 +logic.rhs9200: + %t134 = load { ptr, i64, i64 }, ptr %a130 + %t135 = extractvalue { ptr, i64, i64 } %t134, 1 + %t136 = icmp uge i64 0, %t135 + br i1 %t136, label %range9202, label %inrange9203 +range9202: + call void @finch_panic_index(ptr @.str.6336, i64 396, i64 0, i64 %t135) unreachable -inrange8721: - %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.from8722 -logic.from8722: - br i1 %t137, label %logic.rhs8723, label %logic.end8724 -logic.rhs8723: - %t138 = load { ptr, i64, i64 }, ptr %a127 - %t139 = extractvalue { ptr, i64, i64 } %t138, 1 - %t140 = icmp uge i64 0, %t139 - br i1 %t140, label %range8725, label %inrange8726 -range8725: - call void @finch_panic_index(ptr @.str.6118, i64 392, i64 0, i64 %t139) +inrange9203: + %t137 = extractvalue { ptr, i64, i64 } %t134, 0 + %t138 = getelementptr inbounds i8, ptr %t137, i64 0 + %t139 = load i8, ptr %t138 + %t140 = icmp uge i8 %t139, 48 + br label %logic.from9204 +logic.from9204: + br i1 %t140, label %logic.rhs9205, label %logic.end9206 +logic.rhs9205: + %t141 = load { ptr, i64, i64 }, ptr %a130 + %t142 = extractvalue { ptr, i64, i64 } %t141, 1 + %t143 = icmp uge i64 0, %t142 + br i1 %t143, label %range9207, label %inrange9208 +range9207: + call void @finch_panic_index(ptr @.str.6337, i64 396, i64 0, i64 %t142) unreachable -inrange8726: - %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.rend8727 -logic.rend8727: - br label %logic.end8724 -logic.end8724: - %t145 = phi i1 [ false, %logic.from8722 ], [ %t144, %logic.rend8727 ] - br label %logic.from8728 -logic.from8728: - br i1 %t145, label %logic.end8730, label %logic.rhs8729 -logic.rhs8729: - %t146 = load { ptr, i64, i64 }, ptr %a127 - %t147 = extractvalue { ptr, i64, i64 } %t146, 1 - %t148 = icmp uge i64 0, %t147 - br i1 %t148, label %range8731, label %inrange8732 -range8731: - call void @finch_panic_index(ptr @.str.6119, i64 392, i64 0, i64 %t147) +inrange9208: + %t144 = extractvalue { ptr, i64, i64 } %t141, 0 + %t145 = getelementptr inbounds i8, ptr %t144, i64 0 + %t146 = load i8, ptr %t145 + %t147 = icmp ule i8 %t146, 57 + br label %logic.rend9209 +logic.rend9209: + br label %logic.end9206 +logic.end9206: + %t148 = phi i1 [ false, %logic.from9204 ], [ %t147, %logic.rend9209 ] + br label %logic.from9210 +logic.from9210: + br i1 %t148, label %logic.end9212, label %logic.rhs9211 +logic.rhs9211: + %t149 = load { ptr, i64, i64 }, ptr %a130 + %t150 = extractvalue { ptr, i64, i64 } %t149, 1 + %t151 = icmp uge i64 0, %t150 + br i1 %t151, label %range9213, label %inrange9214 +range9213: + call void @finch_panic_index(ptr @.str.6338, i64 396, i64 0, i64 %t150) unreachable -inrange8732: - %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.rend8733 -logic.rend8733: - br label %logic.end8730 -logic.end8730: - %t153 = phi i1 [ true, %logic.from8728 ], [ %t152, %logic.rend8733 ] - %t154 = xor i1 %t153, true - br label %logic.rend8734 -logic.rend8734: - br label %logic.end8719 -logic.end8719: - %t155 = phi i1 [ true, %logic.from8717 ], [ %t154, %logic.rend8734 ] - br i1 %t155, label %then8735, label %endif8737 -then8735: +inrange9214: + %t152 = extractvalue { ptr, i64, i64 } %t149, 0 + %t153 = getelementptr inbounds i8, ptr %t152, i64 0 + %t154 = load i8, ptr %t153 + %t155 = icmp eq i8 %t154, 46 + br label %logic.rend9215 +logic.rend9215: + br label %logic.end9212 +logic.end9212: + %t156 = phi i1 [ true, %logic.from9210 ], [ %t155, %logic.rend9215 ] + %t157 = xor i1 %t156, true + br label %logic.rend9216 +logic.rend9216: + br label %logic.end9201 +logic.end9201: + %t158 = phi i1 [ true, %logic.from9199 ], [ %t157, %logic.rend9216 ] + br i1 %t158, label %then9217, label %endif9219 +then9217: + call void @finch_str_drop(ptr %a130) + call void @finch.drop.arr_str(ptr %a14) ret %S.cimport.Number zeroinitializer -endif8737: - %t156 = load { ptr, i64, i64 }, ptr %a127 - store { ptr, i64, i64 } %t156, ptr %a157 - store { ptr, i64, i64 } { ptr @.str.6121, 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.from8738 -logic.from8738: - br i1 %t161, label %logic.end8740, label %logic.rhs8739 -logic.rhs8739: - %t162 = load { ptr, i64, i64 }, ptr %a127 - store { ptr, i64, i64 } %t162, ptr %a163 - store { ptr, i64, i64 } { ptr @.str.6123, 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.rend8741 -logic.rend8741: - br label %logic.end8740 -logic.end8740: - %t168 = phi i1 [ true, %logic.from8738 ], [ %t167, %logic.rend8741 ] - br label %logic.from8742 -logic.from8742: - br i1 %t168, label %logic.end8744, label %logic.rhs8743 -logic.rhs8743: - %t169 = load { ptr, i64, i64 }, ptr %a127 - store { ptr, i64, i64 } %t169, ptr %a170 - store { ptr, i64, i64 } { ptr @.str.6125, 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.rend8745 -logic.rend8745: - br label %logic.end8744 -logic.end8744: - %t175 = phi i1 [ true, %logic.from8742 ], [ %t174, %logic.rend8745 ] - br label %logic.from8746 -logic.from8746: - br i1 %t175, label %logic.rhs8747, label %logic.end8748 -logic.rhs8747: - %t176 = load { ptr, i64, i64 }, ptr %a127 - store { ptr, i64, i64 } %t176, ptr %a177 - store { ptr, i64, i64 } { ptr @.str.6127, 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.rend8749 -logic.rend8749: - br label %logic.end8748 -logic.end8748: - %t183 = phi i1 [ false, %logic.from8746 ], [ %t182, %logic.rend8749 ] - store i1 %t183, ptr %a184 - %t185 = load i1, ptr %a184 - br i1 %t185, label %then8750, label %endif8752 -then8750: - %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 +endif9219: + %t159 = load { ptr, i64, i64 }, ptr %a130 + store { ptr, i64, i64 } %t159, ptr %a160 + store { ptr, i64, i64 } { ptr @.str.6340, i64 1, i64 0 }, ptr %a162 + %t163 = call i64 @finch_str_find(ptr %a160, ptr %a162) + %t164 = icmp sge i64 %t163, 0 + br label %logic.from9220 +logic.from9220: + br i1 %t164, label %logic.end9222, label %logic.rhs9221 +logic.rhs9221: + %t165 = load { ptr, i64, i64 }, ptr %a130 + store { ptr, i64, i64 } %t165, ptr %a166 + store { ptr, i64, i64 } { ptr @.str.6342, i64 1, i64 0 }, ptr %a168 + %t169 = call i64 @finch_str_find(ptr %a166, ptr %a168) + %t170 = icmp sge i64 %t169, 0 + br label %logic.rend9223 +logic.rend9223: + br label %logic.end9222 +logic.end9222: + %t171 = phi i1 [ true, %logic.from9220 ], [ %t170, %logic.rend9223 ] + br label %logic.from9224 +logic.from9224: + br i1 %t171, label %logic.end9226, label %logic.rhs9225 +logic.rhs9225: + %t172 = load { ptr, i64, i64 }, ptr %a130 + store { ptr, i64, i64 } %t172, ptr %a173 + store { ptr, i64, i64 } { ptr @.str.6344, i64 1, i64 0 }, ptr %a175 + %t176 = call i64 @finch_str_find(ptr %a173, ptr %a175) + %t177 = icmp sge i64 %t176, 0 + br label %logic.rend9227 +logic.rend9227: + br label %logic.end9226 +logic.end9226: + %t178 = phi i1 [ true, %logic.from9224 ], [ %t177, %logic.rend9227 ] + br label %logic.from9228 +logic.from9228: + br i1 %t178, label %logic.rhs9229, label %logic.end9230 +logic.rhs9229: + %t179 = load { ptr, i64, i64 }, ptr %a130 + store { ptr, i64, i64 } %t179, ptr %a180 + store { ptr, i64, i64 } { ptr @.str.6346, i64 2, i64 0 }, ptr %a182 + %t183 = call i32 @finch_str_starts(ptr %a180, ptr %a182) + %t184 = icmp ne i32 %t183, 0 + %t185 = xor i1 %t184, true + br label %logic.rend9231 +logic.rend9231: + br label %logic.end9230 +logic.end9230: + %t186 = phi i1 [ false, %logic.from9228 ], [ %t185, %logic.rend9231 ] + store i1 %t186, ptr %a187 + %t188 = load i1, ptr %a187 + br i1 %t188, label %then9232, label %endif9234 +then9232: + %t189 = load { ptr, i64, i64 }, ptr %a130 store { ptr, i64, i64 } %t189, ptr %a190 - br label %while.cond8753 -while.cond8753: - %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.from8756 -logic.from8756: - br i1 %t193, label %logic.rhs8757, label %logic.end8758 -logic.rhs8757: - store { ptr, i64, i64 } { ptr @.str.6128, 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 %range8759, label %inrange8760 -range8759: - call void @finch_panic_index(ptr @.str.6130, i64 398, i64 %t198, i64 %t200) + call void @finch_str_copy(ptr %a191, ptr %a190) + %t192 = load { ptr, i64, i64 }, ptr %a191 + store { ptr, i64, i64 } %t192, ptr %a193 + br label %while.cond9235 +while.cond9235: + %t194 = getelementptr inbounds { ptr, i64, i64 }, ptr %a193, i32 0, i32 1 + %t195 = load i64, ptr %t194 + %t196 = icmp sgt i64 %t195, 0 + br label %logic.from9238 +logic.from9238: + br i1 %t196, label %logic.rhs9239, label %logic.end9240 +logic.rhs9239: + store { ptr, i64, i64 } { ptr @.str.6347, i64 4, i64 0 }, ptr %a197 + %t199 = getelementptr inbounds { ptr, i64, i64 }, ptr %a193, i32 0, i32 1 + %t200 = load i64, ptr %t199 + %t201 = sub i64 %t200, 1 + %t202 = load { ptr, i64, i64 }, ptr %a193 + %t203 = extractvalue { ptr, i64, i64 } %t202, 1 + %t204 = icmp uge i64 %t201, %t203 + br i1 %t204, label %range9241, label %inrange9242 +range9241: + call void @finch_panic_index(ptr @.str.6349, i64 402, i64 %t201, i64 %t203) unreachable -inrange8760: - %t202 = extractvalue { ptr, i64, i64 } %t199, 0 - %t203 = getelementptr inbounds i8, ptr %t202, i64 %t198 - %t204 = load i8, ptr %t203 - call void @finch_str_from_char(ptr %a205, i8 signext %t204) - %t206 = load { ptr, i64, i64 }, ptr %a205 - 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.rend8761 -logic.rend8761: - br label %logic.end8758 -logic.end8758: - %t210 = phi i1 [ false, %logic.from8756 ], [ %t209, %logic.rend8761 ] - br i1 %t210, label %while.body8754, label %while.end8755 -while.body8754: - %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.6131, i64 399) - %t217 = load { ptr, i64, i64 }, ptr %a213 - store { ptr, i64, i64 } %t217, ptr %a190 - br label %while.cond8753 -while.end8755: - %t218 = load { ptr, i64, i64 }, ptr %a190 - store { ptr, i64, i64 } zeroinitializer, ptr %a219 - store double 0.0, ptr %a220 - store { ptr, i64, i64 } %t218, ptr %a221 - %t222 = call i32 @finch_str_try_float(ptr %a221, ptr %a220, ptr %a219) - %t223 = icmp eq i32 %t222, 0 - %t224 = load { ptr, i64, i64 }, ptr %a219 - %t225 = load double, ptr %a220 - br i1 %t223, label %or.failed8762, label %or.ok8763 -or.failed8762: - store { ptr, i64, i64 } %t224, ptr %a226 +inrange9242: + %t205 = extractvalue { ptr, i64, i64 } %t202, 0 + %t206 = getelementptr inbounds i8, ptr %t205, i64 %t201 + %t207 = load i8, ptr %t206 + call void @finch_str_from_char(ptr %a208, i8 signext %t207) + %t209 = load { ptr, i64, i64 }, ptr %a208 + store { ptr, i64, i64 } %t209, ptr %a210 + %t211 = call i64 @finch_str_find(ptr %a197, ptr %a210) + %t212 = icmp sge i64 %t211, 0 + store { ptr, i64, i64 } %t209, ptr %a213 + call void @finch_str_drop(ptr %a213) + br label %logic.rend9243 +logic.rend9243: + br label %logic.end9240 +logic.end9240: + %t214 = phi i1 [ false, %logic.from9238 ], [ %t212, %logic.rend9243 ] + br i1 %t214, label %while.body9236, label %while.end9237 +while.body9236: + %t215 = load { ptr, i64, i64 }, ptr %a193 + store { ptr, i64, i64 } %t215, ptr %a216 + %t218 = getelementptr inbounds { ptr, i64, i64 }, ptr %a193, i32 0, i32 1 + %t219 = load i64, ptr %t218 + %t220 = sub i64 %t219, 1 + call void @finch_str_sub(ptr %a217, ptr %a216, i64 0, i64 %t220, ptr @.str.6350, i64 403) + %t221 = load { ptr, i64, i64 }, ptr %a217 + %t222 = load { ptr, i64, i64 }, ptr %a193 + store { ptr, i64, i64 } %t221, ptr %a193 + store { ptr, i64, i64 } %t222, ptr %a223 + call void @finch_str_drop(ptr %a223) + br label %while.cond9235 +while.end9237: + %t224 = load { ptr, i64, i64 }, ptr %a193 + store { ptr, i64, i64 } zeroinitializer, ptr %a225 + store double 0.0, ptr %a226 + store { ptr, i64, i64 } %t224, ptr %a227 + %t228 = call i32 @finch_str_try_float(ptr %a227, ptr %a226, ptr %a225) + %t229 = icmp eq i32 %t228, 0 + %t230 = load { ptr, i64, i64 }, ptr %a225 + %t231 = load double, ptr %a226 + br i1 %t229, label %or.failed9244, label %or.ok9245 +or.failed9244: + store { ptr, i64, i64 } %t230, ptr %a232 + call void @finch_str_drop(ptr %a232) + call void @finch_str_drop(ptr %a193) + call void @finch_str_drop(ptr %a130) + call void @finch.drop.arr_str(ptr %a14) ret %S.cimport.Number zeroinitializer -or.ok8763: - store double %t225, ptr %a227 - %t228 = load i1, ptr %a94 - br i1 %t228, label %then8764, label %endif8766 -then8764: - %t229 = load double, ptr %a227 - %t230 = fsub double 0.0, %t229 - store double %t230, ptr %a227 - br label %endif8766 -endif8766: - %t231 = insertvalue %S.cimport.CConst zeroinitializer, i1 true, 0 - %t232 = load double, ptr %a227 - %t233 = insertvalue %S.cimport.CConst %t231, double %t232, 2 - %t234 = load { ptr, i64, i64 }, ptr %a190 - 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.cimport.CConst %t233, { ptr, i64, i64 } %t237, 3 - %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 -endif8752: - %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.from8767 -logic.from8767: - br i1 %t245, label %logic.rhs8768, label %logic.end8769 -logic.rhs8768: - %t246 = load i1, ptr %a94 - br label %logic.rend8770 -logic.rend8770: - br label %logic.end8769 -logic.end8769: - %t247 = phi i1 [ false, %logic.from8767 ], [ %t246, %logic.rend8770 ] - br i1 %t247, label %then8771, label %endif8773 -then8771: - %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 - %t251 = sub i64 0, %t250 - %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 %endif8773 -endif8773: - %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) - %t257 = load %S.cimport.Number, ptr %a256 - ret %S.cimport.Number %t257 +or.ok9245: + store double %t231, ptr %a233 + %t234 = load i1, ptr %a96 + br i1 %t234, label %then9246, label %endif9248 +then9246: + %t235 = load double, ptr %a233 + %t236 = fsub double 0.0, %t235 + store double %t236, ptr %a233 + br label %endif9248 +endif9248: + %t237 = insertvalue %S.cimport.CConst zeroinitializer, i1 true, 0 + %t238 = load double, ptr %a233 + %t239 = insertvalue %S.cimport.CConst %t237, double %t238, 2 + %t240 = load { ptr, i64, i64 }, ptr %a193 + store { ptr, i64, i64 } %t240, ptr %a241 + call void @finch_str_copy(ptr %a242, ptr %a241) + %t243 = load { ptr, i64, i64 }, ptr %a242 + %t244 = insertvalue %S.cimport.CConst %t239, { ptr, i64, i64 } %t243, 3 + %t245 = insertvalue %S.cimport.Number zeroinitializer, %S.cimport.CConst %t244, 0 + %t246 = insertvalue %S.cimport.Number %t245, i1 true, 1 + call void @finch_str_drop(ptr %a193) + call void @finch_str_drop(ptr %a130) + call void @finch.drop.arr_str(ptr %a14) + ret %S.cimport.Number %t246 +endif9234: + %t247 = load { ptr, i64, i64 }, ptr %a130 + %t248 = call %S.cimport.Number @finch.cimport.parseInt({ ptr, i64, i64 } %t247) + store %S.cimport.Number %t248, ptr %a249 + %t250 = getelementptr inbounds %S.cimport.Number, ptr %a249, i32 0, i32 1 + %t251 = load i1, ptr %t250 + br label %logic.from9249 +logic.from9249: + br i1 %t251, label %logic.rhs9250, label %logic.end9251 +logic.rhs9250: + %t252 = load i1, ptr %a96 + br label %logic.rend9252 +logic.rend9252: + br label %logic.end9251 +logic.end9251: + %t253 = phi i1 [ false, %logic.from9249 ], [ %t252, %logic.rend9252 ] + br i1 %t253, label %then9253, label %endif9255 +then9253: + %t254 = getelementptr inbounds %S.cimport.Number, ptr %a249, i32 0, i32 0 + %t255 = getelementptr inbounds %S.cimport.CConst, ptr %t254, i32 0, i32 1 + %t256 = load i64, ptr %t255 + %t257 = sub i64 0, %t256 + %t258 = getelementptr inbounds %S.cimport.Number, ptr %a249, i32 0, i32 0 + %t259 = getelementptr inbounds %S.cimport.CConst, ptr %t258, i32 0, i32 1 + store i64 %t257, ptr %t259 + br label %endif9255 +endif9255: + %t260 = load %S.cimport.Number, ptr %a249 + call void @finch_str_drop(ptr %a130) + call void @finch.drop.arr_str(ptr %a14) + ret %S.cimport.Number %t260 } define internal i32 @finch.cimport.visitTop(%S.C.CXCursor %p0, %S.C.CXCursor %p1, ptr %p2) { @@ -79825,6 +95912,14 @@ entry: ret i32 %t3 } +define internal void @finch.drop.S_cimport_Number(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.cimport.Number, ptr %a, i32 0, i32 0 + call void @finch.drop.S_cimport_CConst(ptr %t1) + ret void +} + define internal void @finch.cimport.visit(ptr %p0, %S.C.CXCursor %p1) { entry: %a1 = alloca ptr, align 16 @@ -79855,82 +95950,95 @@ entry: %a85 = alloca i32, align 16 %a95 = alloca { ptr, i64, i64 }, align 16 %a96 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca %S.cimport.CFunc, align 16 - %a123 = alloca %S.C.CXCursor, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca i32, align 16 - %a144 = alloca %S.cimport.CFunc, align 16 - %a145 = alloca %S.cimport.CFunc, align 16 - %a147 = alloca %S.C.CXType, align 16 - %a148 = alloca %S.C.CXType, align 16 - %a150 = alloca %S.C.CXCursor, align 16 - %a152 = alloca %S.C.CXType, align 16 + %a99 = alloca { ptr, i64, i64 }, align 16 + %a107 = alloca { ptr, i64, i64 }, align 16 + %a111 = alloca { ptr, i64, i64 }, align 16 + %a112 = alloca { ptr, i64, i64 }, align 16 + %a119 = alloca { ptr, i64, i64 }, align 16 + %a120 = alloca { ptr, i64, i64 }, align 16 + %a123 = alloca %S.cimport.CFunc, align 16 + %a125 = alloca %S.C.CXCursor, align 16 + %a130 = alloca { ptr, i64, i64 }, align 16 + %a137 = alloca { ptr, i64, i64 }, align 16 + %a138 = alloca i32, align 16 + %a148 = alloca %S.cimport.CFunc, align 16 + %a149 = alloca %S.cimport.CFunc, align 16 + %a152 = alloca %S.cimport.CFunc, align 16 + %a153 = alloca %S.C.CXType, align 16 %a154 = alloca %S.C.CXType, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca i32, align 16 - %a176 = alloca %S.cimport.CFunc, align 16 - %a177 = alloca %S.cimport.CFunc, align 16 - %a180 = alloca %S.C.CXType, align 16 - %a182 = alloca %S.C.CXType, align 16 - %a185 = alloca %S.cimport.Mapped, align 16 - %a191 = alloca %S.ast.Type, align 16 - %a192 = alloca %S.ast.Type, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca %S.C.CXType, align 16 - %a204 = alloca i64, align 16 - %a206 = alloca i64, align 16 - %a214 = alloca %S.C.CXType, align 16 - %a216 = alloca %S.C.CXType, align 16 - %a221 = alloca %S.cimport.Mapped, align 16 - %a228 = alloca %S.ast.Type, align 16 - %a229 = alloca %S.ast.Type, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca %S.C.CXType, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca i32, align 16 - %a265 = alloca %S.cimport.CFunc, align 16 - %a266 = alloca %S.cimport.CFunc, align 16 - %a271 = alloca %S.C.CXCursor, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca %S.C.CXType, align 16 - %a286 = alloca %S.C.CXCursor, align 16 - %a289 = alloca %S.cimport.Mapped, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca i32, align 16 - %a310 = alloca %S.ast.Type, align 16 - %a311 = alloca %S.ast.Type, align 16 - %a316 = alloca %S.C.CXCursor, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca { ptr, i64, i64 }, align 16 - %a326 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca %S.C.CXCursor, align 16 - %a334 = alloca [32 x i8], align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a351 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca i32, align 16 + %a156 = alloca %S.C.CXCursor, align 16 + %a158 = alloca %S.C.CXType, align 16 + %a160 = alloca %S.C.CXType, align 16 + %a166 = alloca { ptr, i64, i64 }, align 16 + %a173 = alloca { ptr, i64, i64 }, align 16 + %a174 = alloca i32, align 16 + %a184 = alloca %S.cimport.CFunc, align 16 + %a185 = alloca %S.cimport.CFunc, align 16 + %a188 = alloca %S.cimport.CFunc, align 16 + %a190 = alloca %S.C.CXType, align 16 + %a192 = alloca %S.C.CXType, align 16 + %a195 = alloca %S.cimport.Mapped, align 16 + %a201 = alloca %S.ast.Type, align 16 + %a202 = alloca %S.ast.Type, align 16 + %a205 = alloca %S.ast.Type, align 16 + %a209 = alloca { ptr, i64, i64 }, align 16 + %a210 = alloca { ptr, i64, i64 }, align 16 + %a213 = alloca { ptr, i64, i64 }, align 16 + %a215 = alloca %S.C.CXType, align 16 + %a218 = alloca i64, align 16 + %a220 = alloca i64, align 16 + %a228 = alloca %S.C.CXType, align 16 + %a230 = alloca %S.C.CXType, align 16 + %a235 = alloca %S.cimport.Mapped, align 16 + %a242 = alloca %S.ast.Type, align 16 + %a243 = alloca %S.ast.Type, align 16 + %a252 = alloca { ptr, i64, i64 }, align 16 + %a253 = alloca { ptr, i64, i64 }, align 16 + %a256 = alloca { ptr, i64, i64 }, align 16 + %a260 = alloca %S.C.CXType, align 16 + %a270 = alloca { ptr, i64, i64 }, align 16 + %a271 = alloca i32, align 16 + %a281 = alloca %S.cimport.CFunc, align 16 + %a282 = alloca %S.cimport.CFunc, align 16 + %a285 = alloca %S.cimport.CFunc, align 16 + %a289 = alloca %S.C.CXCursor, align 16 + %a297 = alloca { ptr, i64, i64 }, align 16 + %a302 = alloca %S.C.CXType, align 16 + %a304 = alloca %S.C.CXCursor, align 16 + %a307 = alloca %S.cimport.Mapped, align 16 + %a317 = alloca { ptr, i64, i64 }, align 16 + %a318 = alloca i32, align 16 + %a328 = alloca %S.ast.Type, align 16 + %a329 = alloca %S.ast.Type, align 16 + %a332 = alloca %S.ast.Type, align 16 + %a336 = alloca %S.C.CXCursor, align 16 + %a344 = alloca { ptr, i64, i64 }, align 16 + %a345 = alloca { ptr, i64, i64 }, align 16 + %a346 = alloca { ptr, i64, i64 }, align 16 + %a352 = alloca %S.C.CXCursor, align 16 + %a354 = alloca [32 x i8], align 16 + %a357 = alloca { ptr, i64, i64 }, align 16 %a362 = alloca { ptr, i64, i64 }, align 16 - %a363 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca %S.C.CXCursor, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca %S.C.CXCursor, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca i32, align 16 + %a371 = alloca { ptr, i64, i64 }, align 16 + %a372 = alloca i32, align 16 + %a382 = alloca { ptr, i64, i64 }, align 16 + %a383 = alloca { ptr, i64, i64 }, align 16 + %a386 = alloca { ptr, i64, i64 }, align 16 + %a390 = alloca %S.C.CXCursor, align 16 + %a400 = alloca { ptr, i64, i64 }, align 16 %a405 = alloca %S.C.CXCursor, align 16 - %a409 = alloca %S.C.CXCursor, align 16 - %a416 = alloca %S.cimport.Number, align 16 - %a424 = alloca { ptr, i64, i64 }, align 16 - %a436 = alloca { ptr, i64, i64 }, align 16 - %a437 = alloca i32, align 16 - %a447 = alloca %S.cimport.CConst, align 16 - %a448 = alloca %S.cimport.CConst, align 16 + %a413 = alloca { ptr, i64, i64 }, align 16 + %a414 = alloca i32, align 16 + %a425 = alloca %S.cimport.CConst, align 16 + %a429 = alloca %S.C.CXCursor, align 16 + %a433 = alloca %S.C.CXCursor, align 16 + %a440 = alloca %S.cimport.Number, align 16 + %a448 = alloca { ptr, i64, i64 }, align 16 + %a460 = alloca { ptr, i64, i64 }, align 16 + %a461 = alloca i32, align 16 + %a471 = alloca %S.cimport.CConst, align 16 + %a472 = alloca %S.cimport.CConst, align 16 + %a475 = alloca %S.cimport.CConst, align 16 store ptr %p0, ptr %a1 store %S.C.CXCursor %p1, ptr %a2 %t3 = load %S.C.CXCursor, ptr %a2 @@ -79946,8 +96054,8 @@ entry: store i32 %t12, ptr %a13 %t14 = load i32, ptr %a13 %t15 = icmp eq i32 %t14, 20 - br i1 %t15, label %then8774, label %else8775 -then8774: + br i1 %t15, label %then9256, label %else9257 +then9256: %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) @@ -79959,8 +96067,8 @@ then8774: %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 %then8777, label %endif8779 -then8777: + br i1 %t26, label %then9259, label %endif9261 +then9259: %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) @@ -79973,49 +96081,49 @@ then8777: store { ptr, i64, i64 } %t35, ptr %a36 %t37 = load ptr, ptr %a1 %t38 = icmp eq ptr %t37, null - br i1 %t38, label %panic8780, label %ok8781 -panic8780: - call void @finch_panic(ptr @.str.6132, i64 433, ptr @.str.6133) + br i1 %t38, label %panic9262, label %ok9263 +panic9262: + call void @finch_panic(ptr @.str.6351, i64 437, ptr @.str.6352) unreachable -ok8781: +ok9263: %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.from8782 -logic.from8782: - br i1 %t43, label %logic.rhs8783, label %logic.end8784 -logic.rhs8783: + br label %logic.from9264 +logic.from9264: + br i1 %t43, label %logic.rhs9265, label %logic.end9266 +logic.rhs9265: %t44 = load ptr, ptr %a1 %t45 = icmp eq ptr %t44, null - br i1 %t45, label %panic8785, label %ok8786 -panic8785: - call void @finch_panic(ptr @.str.6134, i64 433, ptr @.str.6135) + br i1 %t45, label %panic9267, label %ok9268 +panic9267: + call void @finch_panic(ptr @.str.6353, i64 437, ptr @.str.6354) unreachable -ok8786: +ok9268: %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 %panic8787, label %ok8788 -panic8787: - call void @finch_panic(ptr @.str.6136, i64 433, ptr @.str.6137) + br i1 %t49, label %panic9269, label %ok9270 +panic9269: + call void @finch_panic(ptr @.str.6355, i64 437, ptr @.str.6356) unreachable -ok8788: +ok9270: %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.missing8789, label %map.found8790 -map.missing8789: + br i1 %t54, label %map.missing9271, label %map.found9272 +map.missing9271: 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.6138, i64 433, ptr %a55) + call void @finch_map_missing(ptr @.str.6357, i64 437, ptr %a55) unreachable -map.found8790: +map.found9272: %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 @@ -80024,25 +96132,25 @@ map.found8790: 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.rend8791 -logic.rend8791: - br label %logic.end8784 -logic.end8784: - %t65 = phi i1 [ false, %logic.from8782 ], [ %t64, %logic.rend8791 ] + br label %logic.rend9273 +logic.rend9273: + br label %logic.end9266 +logic.end9266: + %t65 = phi i1 [ false, %logic.from9264 ], [ %t64, %logic.rend9273 ] store i1 %t65, ptr %a66 %t67 = load i1, ptr %a66 %t68 = xor i1 %t67, true - br label %logic.from8792 -logic.from8792: - br i1 %t68, label %logic.rhs8793, label %logic.end8794 -logic.rhs8793: + br label %logic.from9274 +logic.from9274: + br i1 %t68, label %logic.rhs9275, label %logic.end9276 +logic.rhs9275: %t69 = load ptr, ptr %a1 %t70 = icmp eq ptr %t69, null - br i1 %t70, label %panic8795, label %ok8796 -panic8795: - call void @finch_panic(ptr @.str.6139, i64 434, ptr @.str.6140) + br i1 %t70, label %panic9277, label %ok9278 +panic9277: + call void @finch_panic(ptr @.str.6358, i64 438, ptr @.str.6359) unreachable -ok8796: +ok9278: %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 @@ -80050,21 +96158,21 @@ ok8796: %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.rend8797 -logic.rend8797: - br label %logic.end8794 -logic.end8794: - %t78 = phi i1 [ false, %logic.from8792 ], [ %t77, %logic.rend8797 ] - br i1 %t78, label %then8798, label %endif8800 -then8798: + br label %logic.rend9279 +logic.rend9279: + br label %logic.end9276 +logic.end9276: + %t78 = phi i1 [ false, %logic.from9274 ], [ %t77, %logic.rend9279 ] + br i1 %t78, label %then9280, label %endif9282 +then9280: %t79 = load { ptr, i64, i64 }, ptr %a9 %t80 = load ptr, ptr %a1 %t81 = icmp eq ptr %t80, null - br i1 %t81, label %panic8801, label %ok8802 -panic8801: - call void @finch_panic(ptr @.str.6141, i64 435, ptr @.str.6142) + br i1 %t81, label %panic9283, label %ok9284 +panic9283: + call void @finch_panic(ptr @.str.6360, i64 439, ptr @.str.6361) unreachable -ok8802: +ok9284: %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 @@ -80075,640 +96183,784 @@ ok8802: %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.new8803, label %map.have8804 -map.new8803: + br i1 %t91, label %map.new9285, label %map.have9286 +map.new9285: %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.have8804 -map.have8804: + br label %map.have9286 +map.have9286: %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 + %t98 = load { ptr, i64, i64 }, ptr %t94 store { ptr, i64, i64 } %t97, ptr %t94 - br label %endif8800 -endif8800: - br label %endif8779 -endif8779: - br label %endif8776 -else8775: - %t98 = load i32, ptr %a13 - %t99 = icmp eq i32 %t98, 8 - br i1 %t99, label %then8805, label %else8806 -then8805: - %t100 = load ptr, ptr %a1 - %t101 = icmp eq ptr %t100, null - br i1 %t101, label %panic8808, label %ok8809 -panic8808: - call void @finch_panic(ptr @.str.6143, i64 439, ptr @.str.6144) + store { ptr, i64, i64 } %t98, ptr %a99 + call void @finch_str_drop(ptr %a99) + br label %endif9282 +endif9282: + call void @finch_str_drop(ptr %a36) + br label %endif9261 +endif9261: + br label %endif9258 +else9257: + %t100 = load i32, ptr %a13 + %t101 = icmp eq i32 %t100, 8 + br i1 %t101, label %then9287, label %else9288 +then9287: + %t102 = load ptr, ptr %a1 + %t103 = icmp eq ptr %t102, null + br i1 %t103, label %panic9290, label %ok9291 +panic9290: + call void @finch_panic(ptr @.str.6362, i64 443, ptr @.str.6363) unreachable -ok8809: - %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 %then8810, label %endif8812 -then8810: +ok9291: + %t104 = getelementptr inbounds %S.cimport.Importer, ptr %t102, i32 0, i32 0 + %t105 = getelementptr inbounds %S.cimport.CImports, ptr %t104, i32 0, i32 0 + %t106 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t106, ptr %a107 + %t108 = call i64 @finch_map_find(ptr %t105, ptr %a107, 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) + %t109 = icmp sge i64 %t108, 0 + br i1 %t109, label %then9292, label %endif9294 +then9292: + call void @finch_str_drop(ptr %a9) ret void -endif8812: - %t108 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t108, ptr %a109 - call void @finch_str_copy(ptr %a110, ptr %a109) - %t111 = load { ptr, i64, i64 }, ptr %a110 - %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 %panic8813, label %ok8814 -panic8813: - call void @finch_panic(ptr @.str.6145, i64 442, ptr @.str.6146) +endif9294: + %t110 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t110, ptr %a111 + call void @finch_str_copy(ptr %a112, ptr %a111) + %t113 = load { ptr, i64, i64 }, ptr %a112 + %t114 = insertvalue %S.cimport.CFunc zeroinitializer, { ptr, i64, i64 } %t113, 0 + %t115 = load ptr, ptr %a1 + %t116 = icmp eq ptr %t115, null + br i1 %t116, label %panic9295, label %ok9296 +panic9295: + call void @finch_panic(ptr @.str.6364, i64 446, ptr @.str.6365) unreachable -ok8814: - %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 - call void @finch_str_copy(ptr %a118, ptr %a117) - %t119 = load { ptr, i64, i64 }, ptr %a118 - %t120 = insertvalue %S.cimport.CFunc %t112, { ptr, i64, i64 } %t119, 1 - store %S.cimport.CFunc %t120, ptr %a121 - %t122 = load %S.C.CXCursor, ptr %a2 - 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 %then8815, label %endif8817 -then8815: - %t126 = getelementptr inbounds %S.cimport.CFunc, ptr %a121, i32 0, i32 5 - store { ptr, i64, i64 } { ptr @.str.6147, 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 %panic8818, label %ok8819 -panic8818: - call void @finch_panic(ptr @.str.6148, i64 445, ptr @.str.6149) +ok9296: + %t117 = getelementptr inbounds %S.cimport.Importer, ptr %t115, i32 0, i32 2 + %t118 = load { ptr, i64, i64 }, ptr %t117 + store { ptr, i64, i64 } %t118, ptr %a119 + call void @finch_str_copy(ptr %a120, ptr %a119) + %t121 = load { ptr, i64, i64 }, ptr %a120 + %t122 = insertvalue %S.cimport.CFunc %t114, { ptr, i64, i64 } %t121, 1 + store %S.cimport.CFunc %t122, ptr %a123 + %t124 = load %S.C.CXCursor, ptr %a2 + store %S.C.CXCursor %t124, ptr %a125 + %t126 = call i32 @clang_Cursor_getStorageClass(ptr byval(%S.C.CXCursor) align 8 %a125) + %t127 = icmp eq i32 %t126, 3 + br i1 %t127, label %then9297, label %endif9299 +then9297: + %t128 = getelementptr inbounds %S.cimport.CFunc, ptr %a123, i32 0, i32 5 + %t129 = load { ptr, i64, i64 }, ptr %t128 + store { ptr, i64, i64 } { ptr @.str.6366, i64 62, i64 0 }, ptr %t128 + store { ptr, i64, i64 } %t129, ptr %a130 + call void @finch_str_drop(ptr %a130) + %t131 = load %S.cimport.CFunc, ptr %a123 + %t132 = load ptr, ptr %a1 + %t133 = icmp eq ptr %t132, null + br i1 %t133, label %panic9300, label %ok9301 +panic9300: + call void @finch_panic(ptr @.str.6367, i64 449, ptr @.str.6368) unreachable -ok8819: - %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 - store { ptr, i64, i64 } %t132, ptr %a133 - store i32 0, ptr %a134 - %t135 = call i64 @finch_map_slot(ptr %t131, ptr %a133, 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, ptr %a134) - %t136 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t131, i32 0, i32 0 - %t137 = load ptr, ptr %t136 - %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.new8820, label %map.have8821 -map.new8820: - %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.have8821 -map.have8821: - %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 +ok9301: + %t134 = getelementptr inbounds %S.cimport.Importer, ptr %t132, i32 0, i32 0 + %t135 = getelementptr inbounds %S.cimport.CImports, ptr %t134, i32 0, i32 0 + %t136 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t136, ptr %a137 + store i32 0, ptr %a138 + %t139 = call i64 @finch_map_slot(ptr %t135, ptr %a137, 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, ptr %a138) + %t140 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t135, i32 0, i32 0 + %t141 = load ptr, ptr %t140 + %t142 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t141, i64 %t139 + %t143 = load i32, ptr %a138 + %t144 = icmp ne i32 %t143, 0 + br i1 %t144, label %map.new9302, label %map.have9303 +map.new9302: + %t145 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t142, i32 0, i32 1 + call void @finch_str_copy(ptr %t145, ptr %a137) + %t146 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t142, i32 0, i32 2 + store %S.cimport.CFunc zeroinitializer, ptr %t146 + br label %map.have9303 +map.have9303: + %t147 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t142, i32 0, i32 2 + store %S.cimport.CFunc %t131, ptr %a148 + call void @finch.copy.S_cimport_CFunc(ptr %a149, ptr %a148) + %t150 = load %S.cimport.CFunc, ptr %a149 + %t151 = load %S.cimport.CFunc, ptr %t147 + store %S.cimport.CFunc %t150, ptr %t147 + store %S.cimport.CFunc %t151, ptr %a152 + call void @finch.drop.S_cimport_CFunc(ptr %a152) + call void @finch.drop.S_cimport_CFunc(ptr %a123) + call void @finch_str_drop(ptr %a9) ret void -endif8817: - %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) - %t151 = load %S.C.CXType, ptr %a148 - store %S.C.CXType %t151, ptr %a152 - call void @clang_getCanonicalType(ptr sret(%S.C.CXType) align 16 %a147, ptr byval(%S.C.CXType) align 8 %a152) - %t153 = load %S.C.CXType, ptr %a147 - store %S.C.CXType %t153, ptr %a154 - %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 %then8822, label %endif8824 -then8822: - %t158 = getelementptr inbounds %S.cimport.CFunc, ptr %a121, i32 0, i32 5 - store { ptr, i64, i64 } { ptr @.str.6150, 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 %panic8825, label %ok8826 -panic8825: - call void @finch_panic(ptr @.str.6151, i64 451, ptr @.str.6152) +endif9299: + %t155 = load %S.C.CXCursor, ptr %a2 + store %S.C.CXCursor %t155, ptr %a156 + call void @clang_getCursorType(ptr sret(%S.C.CXType) align 16 %a154, ptr byval(%S.C.CXCursor) align 8 %a156) + %t157 = load %S.C.CXType, ptr %a154 + store %S.C.CXType %t157, ptr %a158 + call void @clang_getCanonicalType(ptr sret(%S.C.CXType) align 16 %a153, ptr byval(%S.C.CXType) align 8 %a158) + %t159 = load %S.C.CXType, ptr %a153 + store %S.C.CXType %t159, ptr %a160 + %t161 = getelementptr inbounds %S.C.CXType, ptr %a160, i32 0, i32 0 + %t162 = load i32, ptr %t161 + %t163 = icmp eq i32 %t162, 110 + br i1 %t163, label %then9304, label %endif9306 +then9304: + %t164 = getelementptr inbounds %S.cimport.CFunc, ptr %a123, i32 0, i32 5 + %t165 = load { ptr, i64, i64 }, ptr %t164 + store { ptr, i64, i64 } { ptr @.str.6369, i64 42, i64 0 }, ptr %t164 + store { ptr, i64, i64 } %t165, ptr %a166 + call void @finch_str_drop(ptr %a166) + %t167 = load %S.cimport.CFunc, ptr %a123 + %t168 = load ptr, ptr %a1 + %t169 = icmp eq ptr %t168, null + br i1 %t169, label %panic9307, label %ok9308 +panic9307: + call void @finch_panic(ptr @.str.6370, i64 455, ptr @.str.6371) unreachable -ok8826: - %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 - store { ptr, i64, i64 } %t164, ptr %a165 - store i32 0, ptr %a166 - %t167 = call i64 @finch_map_slot(ptr %t163, ptr %a165, 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, ptr %a166) - %t168 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t163, i32 0, i32 0 - %t169 = load ptr, ptr %t168 - %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.new8827, label %map.have8828 -map.new8827: - %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.have8828 -map.have8828: - %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 +ok9308: + %t170 = getelementptr inbounds %S.cimport.Importer, ptr %t168, i32 0, i32 0 + %t171 = getelementptr inbounds %S.cimport.CImports, ptr %t170, i32 0, i32 0 + %t172 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t172, ptr %a173 + store i32 0, ptr %a174 + %t175 = call i64 @finch_map_slot(ptr %t171, ptr %a173, 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, ptr %a174) + %t176 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t171, i32 0, i32 0 + %t177 = load ptr, ptr %t176 + %t178 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t177, i64 %t175 + %t179 = load i32, ptr %a174 + %t180 = icmp ne i32 %t179, 0 + br i1 %t180, label %map.new9309, label %map.have9310 +map.new9309: + %t181 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t178, i32 0, i32 1 + call void @finch_str_copy(ptr %t181, ptr %a173) + %t182 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t178, i32 0, i32 2 + store %S.cimport.CFunc zeroinitializer, ptr %t182 + br label %map.have9310 +map.have9310: + %t183 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t178, i32 0, i32 2 + store %S.cimport.CFunc %t167, ptr %a184 + call void @finch.copy.S_cimport_CFunc(ptr %a185, ptr %a184) + %t186 = load %S.cimport.CFunc, ptr %a185 + %t187 = load %S.cimport.CFunc, ptr %t183 + store %S.cimport.CFunc %t186, ptr %t183 + store %S.cimport.CFunc %t187, ptr %a188 + call void @finch.drop.S_cimport_CFunc(ptr %a188) + call void @finch.drop.S_cimport_CFunc(ptr %a123) + call void @finch_str_drop(ptr %a9) ret void -endif8824: - %t179 = load ptr, ptr %a1 - %t181 = load %S.C.CXType, ptr %a154 - store %S.C.CXType %t181, ptr %a182 - call void @clang_getResultType(ptr sret(%S.C.CXType) align 16 %a180, ptr byval(%S.C.CXType) align 8 %a182) - %t183 = load %S.C.CXType, ptr %a180 - %t184 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t179, %S.C.CXType %t183, i1 true, i1 false) - 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 %then8829, label %else8830 -then8829: - %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 - store %S.ast.Type %t189, ptr %a191 - 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 %endif8831 -else8830: - %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 - 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 %endif8831 -endif8831: - %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) - %t203 = sext i32 %t202 to i64 - store i64 %t203, ptr %a204 - %t205 = load i64, ptr %a204 - store i64 0, ptr %a206 - br label %for.cond8832 -for.cond8832: - %t207 = load i64, ptr %a206 - %t208 = icmp slt i64 %t207, %t205 - br i1 %t208, label %for.body8833, label %for.end8835 -for.body8833: - %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 %then8836, label %endif8838 -then8836: - br label %for.end8835 -endif8838: - %t213 = load ptr, ptr %a1 - %t215 = load %S.C.CXType, ptr %a154 - store %S.C.CXType %t215, ptr %a216 - %t217 = load i64, ptr %a206 - %t218 = trunc i64 %t217 to i32 - call void @clang_getArgType(ptr sret(%S.C.CXType) align 16 %a214, ptr byval(%S.C.CXType) align 8 %a216, i32 %t218) - %t219 = load %S.C.CXType, ptr %a214 - %t220 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t213, %S.C.CXType %t219, i1 true, i1 true) - 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 %then8839, label %else8840 -then8839: - %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 - %t227 = load %S.ast.Type, ptr %t226 - store %S.ast.Type %t227, ptr %a228 - call void @finch.copy.S_ast_Type(ptr %a229, ptr %a228) - %t230 = load %S.ast.Type, ptr %a229 - %t231 = load i64, ptr %t225 - %t232 = add i64 %t231, 1 - call void @finch_arr_reserve(ptr %t224, i64 %t232, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t233 = load ptr, ptr %t224 - %t234 = getelementptr inbounds %S.ast.Type, ptr %t233, i64 %t231 - store %S.ast.Type %t230, ptr %t234 - store i64 %t232, ptr %t225 - br label %endif8841 -else8840: - %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 - store { ptr, i64, i64 } %t236, ptr %a238 - 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 %endif8841 -endif8841: - br label %for.step8834 -for.step8834: - %t241 = load i64, ptr %a206 - %t242 = add i64 %t241, 1 - store i64 %t242, ptr %a206 - br label %for.cond8832 -for.end8835: - %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) - %t246 = icmp ne i32 %t245, 0 - %t247 = getelementptr inbounds %S.cimport.CFunc, ptr %a121, i32 0, i32 4 - store i1 %t246, ptr %t247 - %t248 = load %S.cimport.CFunc, ptr %a121 - %t249 = load ptr, ptr %a1 - %t250 = icmp eq ptr %t249, null - br i1 %t250, label %panic8842, label %ok8843 -panic8842: - call void @finch_panic(ptr @.str.6153, i64 473, ptr @.str.6154) +endif9306: + %t189 = load ptr, ptr %a1 + %t191 = load %S.C.CXType, ptr %a160 + store %S.C.CXType %t191, ptr %a192 + call void @clang_getResultType(ptr sret(%S.C.CXType) align 16 %a190, ptr byval(%S.C.CXType) align 8 %a192) + %t193 = load %S.C.CXType, ptr %a190 + %t194 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t189, %S.C.CXType %t193, i1 true, i1 false) + store %S.cimport.Mapped %t194, ptr %a195 + %t196 = getelementptr inbounds %S.cimport.Mapped, ptr %a195, i32 0, i32 2 + %t197 = load i1, ptr %t196 + br i1 %t197, label %then9311, label %else9312 +then9311: + %t198 = getelementptr inbounds %S.cimport.Mapped, ptr %a195, i32 0, i32 0 + %t199 = load %S.ast.Type, ptr %t198 + %t200 = getelementptr inbounds %S.cimport.CFunc, ptr %a123, i32 0, i32 2 + store %S.ast.Type %t199, ptr %a201 + call void @finch.copy.S_ast_Type(ptr %a202, ptr %a201) + %t203 = load %S.ast.Type, ptr %a202 + %t204 = load %S.ast.Type, ptr %t200 + store %S.ast.Type %t203, ptr %t200 + store %S.ast.Type %t204, ptr %a205 + call void @finch.drop.S_ast_Type(ptr %a205) + br label %endif9313 +else9312: + %t206 = getelementptr inbounds %S.cimport.Mapped, ptr %a195, i32 0, i32 1 + %t207 = load { ptr, i64, i64 }, ptr %t206 + %t208 = getelementptr inbounds %S.cimport.CFunc, ptr %a123, i32 0, i32 5 + store { ptr, i64, i64 } %t207, ptr %a209 + call void @finch_str_copy(ptr %a210, ptr %a209) + %t211 = load { ptr, i64, i64 }, ptr %a210 + %t212 = load { ptr, i64, i64 }, ptr %t208 + store { ptr, i64, i64 } %t211, ptr %t208 + store { ptr, i64, i64 } %t212, ptr %a213 + call void @finch_str_drop(ptr %a213) + br label %endif9313 +endif9313: + %t214 = load %S.C.CXType, ptr %a160 + store %S.C.CXType %t214, ptr %a215 + %t216 = call i32 @clang_getNumArgTypes(ptr byval(%S.C.CXType) align 8 %a215) + %t217 = sext i32 %t216 to i64 + store i64 %t217, ptr %a218 + %t219 = load i64, ptr %a218 + store i64 0, ptr %a220 + br label %for.cond9314 +for.cond9314: + %t221 = load i64, ptr %a220 + %t222 = icmp slt i64 %t221, %t219 + br i1 %t222, label %for.body9315, label %for.end9317 +for.body9315: + %t223 = getelementptr inbounds %S.cimport.CFunc, ptr %a123, i32 0, i32 5 + %t224 = getelementptr inbounds { ptr, i64, i64 }, ptr %t223, i32 0, i32 1 + %t225 = load i64, ptr %t224 + %t226 = icmp sgt i64 %t225, 0 + br i1 %t226, label %then9318, label %endif9320 +then9318: + br label %for.end9317 +endif9320: + %t227 = load ptr, ptr %a1 + %t229 = load %S.C.CXType, ptr %a160 + store %S.C.CXType %t229, ptr %a230 + %t231 = load i64, ptr %a220 + %t232 = trunc i64 %t231 to i32 + call void @clang_getArgType(ptr sret(%S.C.CXType) align 16 %a228, ptr byval(%S.C.CXType) align 8 %a230, i32 %t232) + %t233 = load %S.C.CXType, ptr %a228 + %t234 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t227, %S.C.CXType %t233, i1 true, i1 true) + store %S.cimport.Mapped %t234, ptr %a235 + %t236 = getelementptr inbounds %S.cimport.Mapped, ptr %a235, i32 0, i32 2 + %t237 = load i1, ptr %t236 + br i1 %t237, label %then9321, label %else9322 +then9321: + %t238 = getelementptr inbounds %S.cimport.CFunc, ptr %a123, i32 0, i32 3 + %t239 = getelementptr inbounds { ptr, i64, i64 }, ptr %t238, i32 0, i32 1 + %t240 = getelementptr inbounds %S.cimport.Mapped, ptr %a235, i32 0, i32 0 + %t241 = load %S.ast.Type, ptr %t240 + store %S.ast.Type %t241, ptr %a242 + call void @finch.copy.S_ast_Type(ptr %a243, ptr %a242) + %t244 = load %S.ast.Type, ptr %a243 + %t245 = load i64, ptr %t239 + %t246 = add i64 %t245, 1 + call void @finch_arr_reserve(ptr %t238, i64 %t246, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) + %t247 = load ptr, ptr %t238 + %t248 = getelementptr inbounds %S.ast.Type, ptr %t247, i64 %t245 + store %S.ast.Type %t244, ptr %t248 + store i64 %t246, ptr %t239 + br label %endif9323 +else9322: + %t249 = getelementptr inbounds %S.cimport.Mapped, ptr %a235, i32 0, i32 1 + %t250 = load { ptr, i64, i64 }, ptr %t249 + %t251 = getelementptr inbounds %S.cimport.CFunc, ptr %a123, i32 0, i32 5 + store { ptr, i64, i64 } %t250, ptr %a252 + call void @finch_str_copy(ptr %a253, ptr %a252) + %t254 = load { ptr, i64, i64 }, ptr %a253 + %t255 = load { ptr, i64, i64 }, ptr %t251 + store { ptr, i64, i64 } %t254, ptr %t251 + store { ptr, i64, i64 } %t255, ptr %a256 + call void @finch_str_drop(ptr %a256) + br label %endif9323 +endif9323: + call void @finch.drop.S_cimport_Mapped(ptr %a235) + br label %for.step9316 +for.step9316: + %t257 = load i64, ptr %a220 + %t258 = add i64 %t257, 1 + store i64 %t258, ptr %a220 + br label %for.cond9314 +for.end9317: + %t259 = load %S.C.CXType, ptr %a160 + store %S.C.CXType %t259, ptr %a260 + %t261 = call i32 @clang_isFunctionTypeVariadic(ptr byval(%S.C.CXType) align 8 %a260) + %t262 = icmp ne i32 %t261, 0 + %t263 = getelementptr inbounds %S.cimport.CFunc, ptr %a123, i32 0, i32 4 + store i1 %t262, ptr %t263 + %t264 = load %S.cimport.CFunc, ptr %a123 + %t265 = load ptr, ptr %a1 + %t266 = icmp eq ptr %t265, null + br i1 %t266, label %panic9324, label %ok9325 +panic9324: + call void @finch_panic(ptr @.str.6372, i64 477, ptr @.str.6373) unreachable -ok8843: - %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 - store { ptr, i64, i64 } %t253, ptr %a254 - store i32 0, ptr %a255 - %t256 = call i64 @finch_map_slot(ptr %t252, ptr %a254, 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, ptr %a255) - %t257 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t252, i32 0, i32 0 - %t258 = load ptr, ptr %t257 - %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.new8844, label %map.have8845 -map.new8844: - %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.have8845 -map.have8845: - %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 %endif8807 -else8806: - %t268 = load i32, ptr %a13 - %t269 = icmp eq i32 %t268, 9 - br i1 %t269, label %then8846, label %else8847 -then8846: - %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.from8849 -logic.from8849: - br i1 %t273, label %logic.end8851, label %logic.rhs8850 -logic.rhs8850: - %t274 = load ptr, ptr %a1 - %t275 = icmp eq ptr %t274, null - br i1 %t275, label %panic8852, label %ok8853 -panic8852: - call void @finch_panic(ptr @.str.6155, i64 475, ptr @.str.6156) +ok9325: + %t267 = getelementptr inbounds %S.cimport.Importer, ptr %t265, i32 0, i32 0 + %t268 = getelementptr inbounds %S.cimport.CImports, ptr %t267, i32 0, i32 0 + %t269 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t269, ptr %a270 + store i32 0, ptr %a271 + %t272 = call i64 @finch_map_slot(ptr %t268, ptr %a270, 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, ptr %a271) + %t273 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t268, i32 0, i32 0 + %t274 = load ptr, ptr %t273 + %t275 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t274, i64 %t272 + %t276 = load i32, ptr %a271 + %t277 = icmp ne i32 %t276, 0 + br i1 %t277, label %map.new9326, label %map.have9327 +map.new9326: + %t278 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t275, i32 0, i32 1 + call void @finch_str_copy(ptr %t278, ptr %a270) + %t279 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t275, i32 0, i32 2 + store %S.cimport.CFunc zeroinitializer, ptr %t279 + br label %map.have9327 +map.have9327: + %t280 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t275, i32 0, i32 2 + store %S.cimport.CFunc %t264, ptr %a281 + call void @finch.copy.S_cimport_CFunc(ptr %a282, ptr %a281) + %t283 = load %S.cimport.CFunc, ptr %a282 + %t284 = load %S.cimport.CFunc, ptr %t280 + store %S.cimport.CFunc %t283, ptr %t280 + store %S.cimport.CFunc %t284, ptr %a285 + call void @finch.drop.S_cimport_CFunc(ptr %a285) + call void @finch.drop.S_cimport_Mapped(ptr %a195) + call void @finch.drop.S_cimport_CFunc(ptr %a123) + br label %endif9289 +else9288: + %t286 = load i32, ptr %a13 + %t287 = icmp eq i32 %t286, 9 + br i1 %t287, label %then9328, label %else9329 +then9328: + %t288 = load %S.C.CXCursor, ptr %a2 + store %S.C.CXCursor %t288, ptr %a289 + %t290 = call i32 @clang_Cursor_getStorageClass(ptr byval(%S.C.CXCursor) align 8 %a289) + %t291 = icmp ne i32 %t290, 2 + br label %logic.from9331 +logic.from9331: + br i1 %t291, label %logic.end9333, label %logic.rhs9332 +logic.rhs9332: + %t292 = load ptr, ptr %a1 + %t293 = icmp eq ptr %t292, null + br i1 %t293, label %panic9334, label %ok9335 +panic9334: + call void @finch_panic(ptr @.str.6374, i64 479, ptr @.str.6375) unreachable -ok8853: - %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.rend8854 -logic.rend8854: - br label %logic.end8851 -logic.end8851: - %t282 = phi i1 [ true, %logic.from8849 ], [ %t281, %logic.rend8854 ] - br i1 %t282, label %then8855, label %endif8857 -then8855: +ok9335: + %t294 = getelementptr inbounds %S.cimport.Importer, ptr %t292, i32 0, i32 0 + %t295 = getelementptr inbounds %S.cimport.CImports, ptr %t294, i32 0, i32 2 + %t296 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t296, ptr %a297 + %t298 = call i64 @finch_map_find(ptr %t295, ptr %a297, 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) + %t299 = icmp sge i64 %t298, 0 + br label %logic.rend9336 +logic.rend9336: + br label %logic.end9333 +logic.end9333: + %t300 = phi i1 [ true, %logic.from9331 ], [ %t299, %logic.rend9336 ] + br i1 %t300, label %then9337, label %endif9339 +then9337: + call void @finch_str_drop(ptr %a9) ret void -endif8857: - %t283 = load ptr, ptr %a1 - %t285 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t285, ptr %a286 - call void @clang_getCursorType(ptr sret(%S.C.CXType) align 16 %a284, ptr byval(%S.C.CXCursor) align 8 %a286) - %t287 = load %S.C.CXType, ptr %a284 - %t288 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t283, %S.C.CXType %t287, i1 false, i1 false) - 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 %then8858, label %endif8860 -then8858: - %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 %panic8861, label %ok8862 -panic8861: - call void @finch_panic(ptr @.str.6157, i64 480, ptr @.str.6158) +endif9339: + %t301 = load ptr, ptr %a1 + %t303 = load %S.C.CXCursor, ptr %a2 + store %S.C.CXCursor %t303, ptr %a304 + call void @clang_getCursorType(ptr sret(%S.C.CXType) align 16 %a302, ptr byval(%S.C.CXCursor) align 8 %a304) + %t305 = load %S.C.CXType, ptr %a302 + %t306 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t301, %S.C.CXType %t305, i1 false, i1 false) + store %S.cimport.Mapped %t306, ptr %a307 + %t308 = getelementptr inbounds %S.cimport.Mapped, ptr %a307, i32 0, i32 2 + %t309 = load i1, ptr %t308 + br i1 %t309, label %then9340, label %endif9342 +then9340: + %t310 = getelementptr inbounds %S.cimport.Mapped, ptr %a307, i32 0, i32 0 + %t311 = load %S.ast.Type, ptr %t310 + %t312 = load ptr, ptr %a1 + %t313 = icmp eq ptr %t312, null + br i1 %t313, label %panic9343, label %ok9344 +panic9343: + call void @finch_panic(ptr @.str.6376, i64 484, ptr @.str.6377) unreachable -ok8862: - %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 - store { ptr, i64, i64 } %t298, ptr %a299 - store i32 0, ptr %a300 - %t301 = call i64 @finch_map_slot(ptr %t297, ptr %a299, 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, ptr %a300) - %t302 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t297, i32 0, i32 0 - %t303 = load ptr, ptr %t302 - %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.new8863, label %map.have8864 -map.new8863: - %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.have8864 -map.have8864: - %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 %endif8860 -endif8860: - br label %endif8848 -else8847: - %t313 = load i32, ptr %a13 - %t314 = icmp eq i32 %t313, 2 - br i1 %t314, label %then8865, label %else8866 -then8865: - %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.from8868 -logic.from8868: - br i1 %t318, label %logic.rhs8869, label %logic.end8870 -logic.rhs8869: - %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.rend8871 -logic.rend8871: - br label %logic.end8870 -logic.end8870: - %t322 = phi i1 [ false, %logic.from8868 ], [ %t321, %logic.rend8871 ] - br label %logic.from8872 -logic.from8872: - br i1 %t322, label %logic.rhs8873, label %logic.end8874 -logic.rhs8873: - %t323 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t323, ptr %a324 - store { ptr, i64, i64 } { ptr @.str.6160, 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.rend8875 -logic.rend8875: - br label %logic.end8874 -logic.end8874: - %t330 = phi i1 [ false, %logic.from8872 ], [ %t329, %logic.rend8875 ] - br i1 %t330, label %then8876, label %endif8878 -then8876: - %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) - store { i64, i64 } %t333, ptr %a334 - %t335 = load %S.C.CXString, ptr %a334 - %t336 = call { ptr, i64, i64 } @finch.cimport.text(%S.C.CXString %t335) - store { ptr, i64, i64 } %t336, ptr %a337 - %t338 = load ptr, ptr %a1 - %t339 = icmp eq ptr %t338, null - br i1 %t339, label %panic8879, label %ok8880 -panic8879: - call void @finch_panic(ptr @.str.6161, i64 485, ptr @.str.6162) +ok9344: + %t314 = getelementptr inbounds %S.cimport.Importer, ptr %t312, i32 0, i32 0 + %t315 = getelementptr inbounds %S.cimport.CImports, ptr %t314, i32 0, i32 2 + %t316 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t316, ptr %a317 + store i32 0, ptr %a318 + %t319 = call i64 @finch_map_slot(ptr %t315, ptr %a317, 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, ptr %a318) + %t320 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t315, i32 0, i32 0 + %t321 = load ptr, ptr %t320 + %t322 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t321, i64 %t319 + %t323 = load i32, ptr %a318 + %t324 = icmp ne i32 %t323, 0 + br i1 %t324, label %map.new9345, label %map.have9346 +map.new9345: + %t325 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t322, i32 0, i32 1 + call void @finch_str_copy(ptr %t325, ptr %a317) + %t326 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t322, i32 0, i32 2 + store %S.ast.Type zeroinitializer, ptr %t326 + br label %map.have9346 +map.have9346: + %t327 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t322, i32 0, i32 2 + store %S.ast.Type %t311, ptr %a328 + call void @finch.copy.S_ast_Type(ptr %a329, ptr %a328) + %t330 = load %S.ast.Type, ptr %a329 + %t331 = load %S.ast.Type, ptr %t327 + store %S.ast.Type %t330, ptr %t327 + store %S.ast.Type %t331, ptr %a332 + call void @finch.drop.S_ast_Type(ptr %a332) + br label %endif9342 +endif9342: + call void @finch.drop.S_cimport_Mapped(ptr %a307) + br label %endif9330 +else9329: + %t333 = load i32, ptr %a13 + %t334 = icmp eq i32 %t333, 2 + br i1 %t334, label %then9347, label %else9348 +then9347: + %t335 = load %S.C.CXCursor, ptr %a2 + store %S.C.CXCursor %t335, ptr %a336 + %t337 = call i32 @clang_isCursorDefinition(ptr byval(%S.C.CXCursor) align 8 %a336) + %t338 = icmp ne i32 %t337, 0 + br label %logic.from9350 +logic.from9350: + br i1 %t338, label %logic.rhs9351, label %logic.end9352 +logic.rhs9351: + %t339 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 + %t340 = load i64, ptr %t339 + %t341 = icmp sgt i64 %t340, 0 + br label %logic.rend9353 +logic.rend9353: + br label %logic.end9352 +logic.end9352: + %t342 = phi i1 [ false, %logic.from9350 ], [ %t341, %logic.rend9353 ] + br label %logic.from9354 +logic.from9354: + br i1 %t342, label %logic.rhs9355, label %logic.end9356 +logic.rhs9355: + %t343 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t343, ptr %a344 + store { ptr, i64, i64 } { ptr @.str.6379, i64 1, i64 0 }, ptr %a346 + %t347 = call i64 @finch_str_find(ptr %a344, ptr %a346) + %t348 = icmp sge i64 %t347, 0 + %t349 = xor i1 %t348, true + br label %logic.rend9357 +logic.rend9357: + br label %logic.end9356 +logic.end9356: + %t350 = phi i1 [ false, %logic.from9354 ], [ %t349, %logic.rend9357 ] + br i1 %t350, label %then9358, label %endif9360 +then9358: + %t351 = load %S.C.CXCursor, ptr %a2 + store %S.C.CXCursor %t351, ptr %a352 + %t353 = call { i64, i64 } @clang_getCursorUSR(ptr byval(%S.C.CXCursor) align 8 %a352) + store { i64, i64 } %t353, ptr %a354 + %t355 = load %S.C.CXString, ptr %a354 + %t356 = call { ptr, i64, i64 } @finch.cimport.text(%S.C.CXString %t355) + store { ptr, i64, i64 } %t356, ptr %a357 + %t358 = load ptr, ptr %a1 + %t359 = icmp eq ptr %t358, null + br i1 %t359, label %panic9361, label %ok9362 +panic9361: + call void @finch_panic(ptr @.str.6380, i64 489, ptr @.str.6381) unreachable -ok8880: - %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 %then8881, label %endif8883 -then8881: - %t346 = load { ptr, i64, i64 }, ptr %a9 - %t347 = load ptr, ptr %a1 - %t348 = icmp eq ptr %t347, null - br i1 %t348, label %panic8884, label %ok8885 -panic8884: - call void @finch_panic(ptr @.str.6163, i64 486, ptr @.str.6164) +ok9362: + %t360 = getelementptr inbounds %S.cimport.Importer, ptr %t358, i32 0, i32 3 + %t361 = load { ptr, i64, i64 }, ptr %a357 + store { ptr, i64, i64 } %t361, ptr %a362 + %t363 = call i64 @finch_map_find(ptr %t360, ptr %a362, 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) + %t364 = icmp sge i64 %t363, 0 + %t365 = xor i1 %t364, true + br i1 %t365, label %then9363, label %endif9365 +then9363: + %t366 = load { ptr, i64, i64 }, ptr %a9 + %t367 = load ptr, ptr %a1 + %t368 = icmp eq ptr %t367, null + br i1 %t368, label %panic9366, label %ok9367 +panic9366: + call void @finch_panic(ptr @.str.6382, i64 490, ptr @.str.6383) unreachable -ok8885: - %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 - store i32 0, ptr %a352 - %t353 = call i64 @finch_map_slot(ptr %t349, ptr %a351, 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 %a352) - %t354 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t349, i32 0, i32 0 - %t355 = load ptr, ptr %t354 - %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.new8886, label %map.have8887 -map.new8886: - %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.have8887 -map.have8887: - %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 %endif8883 -endif8883: - br label %endif8878 -endif8878: - br label %endif8867 -else8866: - %t365 = load i32, ptr %a13 - %t366 = icmp eq i32 %t365, 5 - br i1 %t366, label %then8888, label %else8889 -then8888: - %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 %endif8890 -else8889: - %t371 = load i32, ptr %a13 - %t372 = icmp eq i32 %t371, 7 - br i1 %t372, label %then8891, label %else8892 -then8891: - %t373 = load ptr, ptr %a1 - %t374 = icmp eq ptr %t373, null - br i1 %t374, label %panic8894, label %ok8895 -panic8894: - call void @finch_panic(ptr @.str.6165, i64 492, ptr @.str.6166) +ok9367: + %t369 = getelementptr inbounds %S.cimport.Importer, ptr %t367, i32 0, i32 3 + %t370 = load { ptr, i64, i64 }, ptr %a357 + store { ptr, i64, i64 } %t370, ptr %a371 + store i32 0, ptr %a372 + %t373 = call i64 @finch_map_slot(ptr %t369, ptr %a371, 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 %a372) + %t374 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t369, i32 0, i32 0 + %t375 = load ptr, ptr %t374 + %t376 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t375, i64 %t373 + %t377 = load i32, ptr %a372 + %t378 = icmp ne i32 %t377, 0 + br i1 %t378, label %map.new9368, label %map.have9369 +map.new9368: + %t379 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t376, i32 0, i32 1 + call void @finch_str_copy(ptr %t379, ptr %a371) + %t380 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t376, i32 0, i32 2 + store { ptr, i64, i64 } zeroinitializer, ptr %t380 + br label %map.have9369 +map.have9369: + %t381 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t376, i32 0, i32 2 + store { ptr, i64, i64 } %t366, ptr %a382 + call void @finch_str_copy(ptr %a383, ptr %a382) + %t384 = load { ptr, i64, i64 }, ptr %a383 + %t385 = load { ptr, i64, i64 }, ptr %t381 + store { ptr, i64, i64 } %t384, ptr %t381 + store { ptr, i64, i64 } %t385, ptr %a386 + call void @finch_str_drop(ptr %a386) + br label %endif9365 +endif9365: + call void @finch_str_drop(ptr %a357) + br label %endif9360 +endif9360: + br label %endif9349 +else9348: + %t387 = load i32, ptr %a13 + %t388 = icmp eq i32 %t387, 5 + br i1 %t388, label %then9370, label %else9371 +then9370: + %t389 = load %S.C.CXCursor, ptr %a2 + store %S.C.CXCursor %t389, ptr %a390 + %t391 = load ptr, ptr %a1 + %t392 = call i32 @clang_visitChildren(ptr byval(%S.C.CXCursor) align 8 %a390, ptr @finch.c.cimport.visitTop, ptr %t391) + br label %endif9372 +else9371: + %t393 = load i32, ptr %a13 + %t394 = icmp eq i32 %t393, 7 + br i1 %t394, label %then9373, label %else9374 +then9373: + %t395 = load ptr, ptr %a1 + %t396 = icmp eq ptr %t395, null + br i1 %t396, label %panic9376, label %ok9377 +panic9376: + call void @finch_panic(ptr @.str.6384, i64 496, ptr @.str.6385) unreachable -ok8895: - %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 - store { ptr, i64, i64 } %t377, ptr %a378 - %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 %then8896, label %endif8898 -then8896: - %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 %panic8899, label %ok8900 -panic8899: - call void @finch_panic(ptr @.str.6167, i64 493, ptr @.str.6168) - unreachable -ok8900: - %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 - store { ptr, i64, i64 } %t390, ptr %a391 - store i32 0, ptr %a392 - %t393 = call i64 @finch_map_slot(ptr %t389, ptr %a391, 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, ptr %a392) - %t394 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t389, i32 0, i32 0 - %t395 = load ptr, ptr %t394 - %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.new8901, label %map.have8902 -map.new8901: - %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.have8902 -map.have8902: - %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 %endif8898 -endif8898: - br label %endif8893 -else8892: - %t402 = load i32, ptr %a13 - %t403 = icmp eq i32 %t402, 501 - br i1 %t403, label %then8903, label %endif8905 -then8903: +ok9377: + %t397 = getelementptr inbounds %S.cimport.Importer, ptr %t395, i32 0, i32 0 + %t398 = getelementptr inbounds %S.cimport.CImports, ptr %t397, i32 0, i32 1 + %t399 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t399, ptr %a400 + %t401 = call i64 @finch_map_find(ptr %t398, ptr %a400, 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) + %t402 = icmp sge i64 %t401, 0 + %t403 = xor i1 %t402, true + br i1 %t403, label %then9378, label %endif9380 +then9378: %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.from8906 -logic.from8906: - br i1 %t407, label %logic.end8908, label %logic.rhs8907 -logic.rhs8907: - %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.rend8909 -logic.rend8909: - br label %logic.end8908 -logic.end8908: - %t412 = phi i1 [ true, %logic.from8906 ], [ %t411, %logic.rend8909 ] - br i1 %t412, label %then8910, label %endif8912 -then8910: + %t406 = call i64 @clang_getEnumConstantDeclValue(ptr byval(%S.C.CXCursor) align 8 %a405) + %t407 = insertvalue %S.cimport.CConst zeroinitializer, i64 %t406, 1 + %t408 = load ptr, ptr %a1 + %t409 = icmp eq ptr %t408, null + br i1 %t409, label %panic9381, label %ok9382 +panic9381: + call void @finch_panic(ptr @.str.6386, i64 497, ptr @.str.6387) + unreachable +ok9382: + %t410 = getelementptr inbounds %S.cimport.Importer, ptr %t408, i32 0, i32 0 + %t411 = getelementptr inbounds %S.cimport.CImports, ptr %t410, i32 0, i32 1 + %t412 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t412, ptr %a413 + store i32 0, ptr %a414 + %t415 = call i64 @finch_map_slot(ptr %t411, ptr %a413, 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, ptr %a414) + %t416 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t411, i32 0, i32 0 + %t417 = load ptr, ptr %t416 + %t418 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t417, i64 %t415 + %t419 = load i32, ptr %a414 + %t420 = icmp ne i32 %t419, 0 + br i1 %t420, label %map.new9383, label %map.have9384 +map.new9383: + %t421 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t418, i32 0, i32 1 + call void @finch_str_copy(ptr %t421, ptr %a413) + %t422 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t418, i32 0, i32 2 + store %S.cimport.CConst zeroinitializer, ptr %t422 + br label %map.have9384 +map.have9384: + %t423 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t418, i32 0, i32 2 + %t424 = load %S.cimport.CConst, ptr %t423 + store %S.cimport.CConst %t407, ptr %t423 + store %S.cimport.CConst %t424, ptr %a425 + call void @finch.drop.S_cimport_CConst(ptr %a425) + br label %endif9380 +endif9380: + br label %endif9375 +else9374: + %t426 = load i32, ptr %a13 + %t427 = icmp eq i32 %t426, 501 + br i1 %t427, label %then9385, label %endif9387 +then9385: + %t428 = load %S.C.CXCursor, ptr %a2 + store %S.C.CXCursor %t428, ptr %a429 + %t430 = call i32 @clang_Cursor_isMacroBuiltin(ptr byval(%S.C.CXCursor) align 8 %a429) + %t431 = icmp ne i32 %t430, 0 + br label %logic.from9388 +logic.from9388: + br i1 %t431, label %logic.end9390, label %logic.rhs9389 +logic.rhs9389: + %t432 = load %S.C.CXCursor, ptr %a2 + store %S.C.CXCursor %t432, ptr %a433 + %t434 = call i32 @clang_Cursor_isMacroFunctionLike(ptr byval(%S.C.CXCursor) align 8 %a433) + %t435 = icmp ne i32 %t434, 0 + br label %logic.rend9391 +logic.rend9391: + br label %logic.end9390 +logic.end9390: + %t436 = phi i1 [ true, %logic.from9388 ], [ %t435, %logic.rend9391 ] + br i1 %t436, label %then9392, label %endif9394 +then9392: + call void @finch_str_drop(ptr %a9) ret void -endif8912: - %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.from8913 -logic.from8913: - br i1 %t418, label %logic.rhs8914, label %logic.end8915 -logic.rhs8914: - %t419 = load ptr, ptr %a1 - %t420 = icmp eq ptr %t419, null - br i1 %t420, label %panic8916, label %ok8917 -panic8916: - call void @finch_panic(ptr @.str.6169, i64 500, ptr @.str.6170) +endif9394: + %t437 = load ptr, ptr %a1 + %t438 = load %S.C.CXCursor, ptr %a2 + %t439 = call %S.cimport.Number @finch.cimport.macroValue(ptr %t437, %S.C.CXCursor %t438) + store %S.cimport.Number %t439, ptr %a440 + %t441 = getelementptr inbounds %S.cimport.Number, ptr %a440, i32 0, i32 1 + %t442 = load i1, ptr %t441 + br label %logic.from9395 +logic.from9395: + br i1 %t442, label %logic.rhs9396, label %logic.end9397 +logic.rhs9396: + %t443 = load ptr, ptr %a1 + %t444 = icmp eq ptr %t443, null + br i1 %t444, label %panic9398, label %ok9399 +panic9398: + call void @finch_panic(ptr @.str.6388, i64 504, ptr @.str.6389) unreachable -ok8917: - %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 - store { ptr, i64, i64 } %t423, ptr %a424 - %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.rend8918 -logic.rend8918: - br label %logic.end8915 -logic.end8915: - %t428 = phi i1 [ false, %logic.from8913 ], [ %t427, %logic.rend8918 ] - br i1 %t428, label %then8919, label %endif8921 -then8919: - %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 %panic8922, label %ok8923 -panic8922: - call void @finch_panic(ptr @.str.6171, i64 501, ptr @.str.6172) +ok9399: + %t445 = getelementptr inbounds %S.cimport.Importer, ptr %t443, i32 0, i32 0 + %t446 = getelementptr inbounds %S.cimport.CImports, ptr %t445, i32 0, i32 1 + %t447 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t447, ptr %a448 + %t449 = call i64 @finch_map_find(ptr %t446, ptr %a448, 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) + %t450 = icmp sge i64 %t449, 0 + %t451 = xor i1 %t450, true + br label %logic.rend9400 +logic.rend9400: + br label %logic.end9397 +logic.end9397: + %t452 = phi i1 [ false, %logic.from9395 ], [ %t451, %logic.rend9400 ] + br i1 %t452, label %then9401, label %endif9403 +then9401: + %t453 = getelementptr inbounds %S.cimport.Number, ptr %a440, i32 0, i32 0 + %t454 = load %S.cimport.CConst, ptr %t453 + %t455 = load ptr, ptr %a1 + %t456 = icmp eq ptr %t455, null + br i1 %t456, label %panic9404, label %ok9405 +panic9404: + call void @finch_panic(ptr @.str.6390, i64 505, ptr @.str.6391) unreachable -ok8923: - %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 - store { ptr, i64, i64 } %t435, ptr %a436 - store i32 0, ptr %a437 - %t438 = call i64 @finch_map_slot(ptr %t434, ptr %a436, 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, ptr %a437) - %t439 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t434, i32 0, i32 0 - %t440 = load ptr, ptr %t439 - %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.new8924, label %map.have8925 -map.new8924: - %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.have8925 -map.have8925: - %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 %endif8921 -endif8921: - br label %endif8905 -endif8905: - br label %endif8893 -endif8893: - br label %endif8890 -endif8890: - br label %endif8867 -endif8867: - br label %endif8848 -endif8848: - br label %endif8807 -endif8807: - br label %endif8776 -endif8776: +ok9405: + %t457 = getelementptr inbounds %S.cimport.Importer, ptr %t455, i32 0, i32 0 + %t458 = getelementptr inbounds %S.cimport.CImports, ptr %t457, i32 0, i32 1 + %t459 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t459, ptr %a460 + store i32 0, ptr %a461 + %t462 = call i64 @finch_map_slot(ptr %t458, ptr %a460, 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, ptr %a461) + %t463 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t458, i32 0, i32 0 + %t464 = load ptr, ptr %t463 + %t465 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t464, i64 %t462 + %t466 = load i32, ptr %a461 + %t467 = icmp ne i32 %t466, 0 + br i1 %t467, label %map.new9406, label %map.have9407 +map.new9406: + %t468 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t465, i32 0, i32 1 + call void @finch_str_copy(ptr %t468, ptr %a460) + %t469 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t465, i32 0, i32 2 + store %S.cimport.CConst zeroinitializer, ptr %t469 + br label %map.have9407 +map.have9407: + %t470 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t465, i32 0, i32 2 + store %S.cimport.CConst %t454, ptr %a471 + call void @finch.copy.S_cimport_CConst(ptr %a472, ptr %a471) + %t473 = load %S.cimport.CConst, ptr %a472 + %t474 = load %S.cimport.CConst, ptr %t470 + store %S.cimport.CConst %t473, ptr %t470 + store %S.cimport.CConst %t474, ptr %a475 + call void @finch.drop.S_cimport_CConst(ptr %a475) + br label %endif9403 +endif9403: + call void @finch.drop.S_cimport_Number(ptr %a440) + br label %endif9387 +endif9387: + br label %endif9375 +endif9375: + br label %endif9372 +endif9372: + br label %endif9349 +endif9349: + br label %endif9330 +endif9330: + br label %endif9289 +endif9289: + br label %endif9258 +endif9258: + call void @finch_str_drop(ptr %a9) + ret void +} + +define internal void @finch.drop.map_str_str(ptr %a) { +entry: + %a3 = alloca i64, align 16 + %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 2 + %t2 = load i64, ptr %t1 + store i64 0, ptr %a3 + br label %n.cond9411 +n.cond9411: + %t4 = load i64, ptr %a3 + %t5 = icmp slt i64 %t4, %t2 + br i1 %t5, label %n.body9412, label %n.end9413 +n.body9412: + %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 0 + %t7 = load ptr, ptr %t6 + %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t7, i64 %t4 + %t9 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t8, i32 0, i32 0 + %t10 = load i64, ptr %t9 + %t11 = icmp ne i64 %t10, 0 + br i1 %t11, label %entry.live9414, label %entry.next9415 +entry.live9414: + %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t8, i32 0, i32 1 + call void @finch_str_drop(ptr %t12) + %t13 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t8, i32 0, i32 2 + call void @finch_str_drop(ptr %t13) + br label %entry.next9415 +entry.next9415: + %t14 = load i64, ptr %a3 + %t15 = add i64 %t14, 1 + store i64 %t15, ptr %a3 + br label %n.cond9411 +n.end9413: + call void @finch_map_free(ptr %a) + ret void +} + +define internal void @finch.drop.map_str_bool(ptr %a) { +entry: + %a3 = alloca i64, align 16 + %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 2 + %t2 = load i64, ptr %t1 + store i64 0, ptr %a3 + br label %n.cond9416 +n.cond9416: + %t4 = load i64, ptr %a3 + %t5 = icmp slt i64 %t4, %t2 + br i1 %t5, label %n.body9417, label %n.end9418 +n.body9417: + %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 0 + %t7 = load ptr, ptr %t6 + %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t7, i64 %t4 + %t9 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t8, i32 0, i32 0 + %t10 = load i64, ptr %t9 + %t11 = icmp ne i64 %t10, 0 + br i1 %t11, label %entry.live9419, label %entry.next9420 +entry.live9419: + %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t8, i32 0, i32 1 + call void @finch_str_drop(ptr %t12) + %t13 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t8, i32 0, i32 2 + br label %entry.next9420 +entry.next9420: + %t14 = load i64, ptr %a3 + %t15 = add i64 %t14, 1 + store i64 %t15, ptr %a3 + br label %n.cond9416 +n.end9418: + call void @finch_map_free(ptr %a) + ret void +} + +define internal void @finch.drop.S_cimport_Importer(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.cimport.Importer, ptr %a, i32 0, i32 0 + call void @finch.drop.S_cimport_CImports(ptr %t1) + %t2 = getelementptr inbounds %S.cimport.Importer, ptr %a, i32 0, i32 2 + call void @finch_str_drop(ptr %t2) + %t3 = getelementptr inbounds %S.cimport.Importer, ptr %a, i32 0, i32 3 + call void @finch.drop.map_str_str(ptr %t3) + %t4 = getelementptr inbounds %S.cimport.Importer, ptr %a, i32 0, i32 4 + call void @finch.drop.map_str_bool(ptr %t4) + ret void +} + +define internal void @finch.drop.arr_ptr(ptr %a) { +entry: + + call void @finch_arr_free(ptr %a) ret void } @@ -80747,80 +96999,94 @@ entry: %a129 = alloca { ptr, i64, i64 }, align 16 %a130 = alloca { ptr, i64, i64 }, align 16 %a131 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca %S.C.CXUnsavedFile, align 16 - %a147 = alloca ptr, align 16 - %a149 = alloca i64, align 16 - %a162 = alloca i32, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 + %a132 = alloca { ptr, i64, i64 }, align 16 + %a134 = alloca { ptr, i64, i64 }, align 16 + %a147 = alloca %S.C.CXUnsavedFile, align 16 + %a148 = alloca ptr, align 16 + %a150 = alloca i64, align 16 + %a163 = alloca i32, align 16 %a171 = alloca { ptr, i64, i64 }, align 16 %a172 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 + %a173 = 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 %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 %a182 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca i64, align 16 - %a190 = alloca i64, align 16 - %a197 = alloca ptr, align 16 - %a203 = alloca [32 x i8], align 16 - %a206 = 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 + %a191 = alloca i64, align 16 + %a193 = alloca i64, align 16 + %a200 = alloca ptr, align 16 + %a206 = alloca [32 x i8], align 16 %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = 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 %a218 = alloca { ptr, i64, i64 }, align 16 %a219 = 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 - %a229 = alloca { ptr, i64, i64 }, align 16 + %a221 = alloca { ptr, i64, i64 }, align 16 + %a222 = 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 %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 + %a237 = alloca { ptr, i64, i64 }, align 16 + %a238 = alloca { ptr, i64, i64 }, align 16 + %a243 = 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 - %a247 = 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 + %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 %a257 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 %a262 = alloca { ptr, i64, i64 }, align 16 %a263 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 + %a264 = alloca { ptr, i64, i64 }, align 16 %a267 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, 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 %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 %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 + %a285 = alloca { ptr, i64, i64 }, align 16 + %a286 = alloca { ptr, i64, i64 }, align 16 + %a287 = 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 - %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 + %a301 = 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 %a311 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca %S.C.CXCursor, align 16 - %a316 = alloca %S.C.CXCursor, align 16 - %a324 = alloca %S.cimport.CImports, align 16 - %a325 = alloca %S.cimport.CImports, align 16 + %a312 = 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 %S.C.CXCursor, align 16 + %a331 = alloca %S.C.CXCursor, align 16 + %a339 = alloca %S.cimport.CImports, align 16 + %a340 = alloca %S.cimport.CImports, align 16 store { ptr, i64, i64 } %p0, ptr %a1 store { ptr, i64, i64 } %p1, ptr %a2 store { ptr, i64, i64 } %p2, ptr %a3 @@ -80830,25 +97096,26 @@ 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 %then8926, label %endif8928 -then8926: + br i1 %t9, label %then9408, label %endif9410 +then9408: %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 call void @finch.copy.S_cimport_CImports(ptr %a13, ptr %a12) %t14 = load %S.cimport.CImports, ptr %a13 + call void @finch.drop.S_cimport_Importer(ptr %a6) %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 -endif8928: +endif9410: %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.6173, i64 2, i64 0 }, ptr %t19 + store { ptr, i64, i64 } { ptr @.str.6392, i64 2, i64 0 }, ptr %t19 %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t18, i64 1 - store { ptr, i64, i64 } { ptr @.str.6174, i64 1, i64 0 }, ptr %t20 + store { ptr, i64, i64 } { ptr @.str.6393, i64 1, i64 0 }, ptr %t20 %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t18, i64 2 - store { ptr, i64, i64 } { ptr @.str.6175, i64 10, i64 0 }, ptr %t21 + store { ptr, i64, i64 } { ptr @.str.6394, 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 @@ -80856,11 +97123,11 @@ endif8928: %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 %then8929, label %endif8931 -then8929: + br i1 %t28, label %then9421, label %endif9423 +then9421: %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.6176, i64 9, i64 0 }, ptr %a32 + store { ptr, i64, i64 } { ptr @.str.6395, 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 @@ -80871,37 +97138,37 @@ then8929: %t38 = getelementptr inbounds { ptr, i64, i64 }, ptr %t37, i64 %t35 store { ptr, i64, i64 } %t34, ptr %t38 store i64 %t36, ptr %t29 - br label %endif8931 -endif8931: + br label %endif9423 +endif9423: %t39 = load i1, ptr %a4 - br i1 %t39, label %then8932, label %endif8934 -then8932: + br i1 %t39, label %then9424, label %endif9426 +then9424: %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.6177, i64 19, i64 0 }, ptr %t44 + store { ptr, i64, i64 } { ptr @.str.6396, i64 19, i64 0 }, ptr %t44 store i64 %t42, ptr %t40 - br label %endif8934 -endif8934: + br label %endif9426 +endif9426: store i64 0, ptr %a45 - br label %each.cond8935 -each.cond8935: + br label %each.cond9427 +each.cond9427: %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.body8936, label %each.end8938 -each.body8936: + br i1 %t49, label %each.body9428, label %each.end9430 +each.body9428: %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.6178, i64 2, i64 0 }, ptr %a57 + store { ptr, i64, i64 } { ptr @.str.6397, 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 @@ -80912,25 +97179,25 @@ each.body8936: %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.step8937 -each.step8937: + br label %each.step9429 +each.step9429: %t64 = load i64, ptr %a45 %t65 = add i64 %t64, 1 store i64 %t65, ptr %a45 - br label %each.cond8935 -each.end8938: + br label %each.cond9427 +each.end9430: %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.cond8939 -each.cond8939: + br label %each.cond9431 +each.cond9431: %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.body8940, label %each.end8942 -each.body8940: + br i1 %t73, label %each.body9432, label %each.end9434 +each.body9432: %t74 = load ptr, ptr %a68 %t75 = getelementptr inbounds { ptr, i64, i64 }, ptr %t74, i64 %t72 %t76 = load { ptr, i64, i64 }, ptr %t75 @@ -80947,39 +97214,40 @@ each.body8940: %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.step8941 -each.step8941: + br label %each.step9433 +each.step9433: %t87 = load i64, ptr %a69 %t88 = add i64 %t87, 1 store i64 %t88, ptr %a69 - br label %each.cond8939 -each.end8942: + br label %each.cond9431 +each.end9434: + call void @finch.drop.arr_str(ptr %a68) 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.cond8943 -for.cond8943: + br label %for.cond9435 +for.cond9435: %t93 = load i64, ptr %a92 %t94 = icmp slt i64 %t93, %t91 - br i1 %t94, label %for.body8944, label %for.end8946 -for.body8944: + br i1 %t94, label %for.body9436, label %for.end9438 +for.body9436: %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 %range8947, label %inrange8948 -range8947: - call void @finch_panic_index(ptr @.str.6179, i64 528, i64 %t96, i64 %t98) + br i1 %t99, label %range9439, label %inrange9440 +range9439: + call void @finch_panic_index(ptr @.str.6398, i64 532, i64 %t96, i64 %t98) unreachable -inrange8948: +inrange9440: %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.6180, ptr %t103 + %t105 = select i1 %t104, ptr @.str.6399, 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)) @@ -80987,277 +97255,684 @@ inrange8948: %t109 = getelementptr inbounds ptr, ptr %t108, i64 %t106 store ptr %t105, ptr %t109 store i64 %t107, ptr %t95 - br label %for.step8945 -for.step8945: + br label %for.step9437 +for.step9437: %t110 = load i64, ptr %a92 %t111 = add i64 %t110, 1 store i64 %t111, ptr %a92 - br label %for.cond8943 -for.end8946: + br label %for.cond9435 +for.end9438: %t112 = call ptr @clang_createIndex(i32 0, i32 0) store ptr %t112, ptr %a113 store i64 0, ptr %a114 - br label %each.cond8949 -each.cond8949: + br label %each.cond9441 +each.cond9441: %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.body8950, label %each.end8952 -each.body8950: + br i1 %t118, label %each.body9442, label %each.end9444 +each.body9442: %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.6181, i64 10, i64 0 }, ptr %a126 + store { ptr, i64, i64 } { ptr @.str.6400, 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.6182, i64 2, i64 0 }, ptr %a131 + store { ptr, i64, i64 } { ptr @.str.6401, 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.6183, i64 14, i64 0 }, 0 - %t135 = icmp eq ptr %t134, null - %t136 = select i1 %t135, ptr @.str.6184, 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.6185, 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 - %t145 = insertvalue %S.C.CXUnsavedFile %t142, i64 %t144, 2 - store %S.C.CXUnsavedFile %t145, ptr %a146 - store ptr null, ptr %a147 - %t148 = or i64 1, 64 - store i64 %t148, ptr %a149 - %t150 = load ptr, ptr %a113 - %t151 = extractvalue { ptr, i64, i64 } { ptr @.str.6186, i64 14, i64 0 }, 0 - %t152 = icmp eq ptr %t151, null - %t153 = select i1 %t152, ptr @.str.6187, 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 - %t157 = load i64, ptr %t156 - %t158 = trunc i64 %t157 to i32 - %t159 = load i64, ptr %a149 - %t160 = trunc i64 %t159 to i32 - %t161 = call i32 @clang_parseTranslationUnit2(ptr %t150, ptr %t153, ptr %t155, i32 %t158, ptr %a146, i32 1, i32 %t160, ptr %a147) - store i32 %t161, ptr %a162 - %t163 = load i32, ptr %a162 - %t164 = icmp ne i32 %t163, 0 - br label %logic.from8953 -logic.from8953: - br i1 %t164, label %logic.end8955, label %logic.rhs8954 -logic.rhs8954: - %t165 = load ptr, ptr %a147 - %t166 = icmp eq ptr %t165, null - br label %logic.rend8956 -logic.rend8956: - br label %logic.end8955 -logic.end8955: - %t167 = phi i1 [ true, %logic.from8953 ], [ %t166, %logic.rend8956 ] - br i1 %t167, label %then8957, label %endif8959 -then8957: - %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.6188, 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 - %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 - store { ptr, i64, i64 } %t179, ptr %a181 - store { ptr, i64, i64 } { ptr @.str.6189, 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 -endif8959: - %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.cond8960 -for.cond8960: - %t191 = load i64, ptr %a190 - %t192 = icmp slt i64 %t191, %t189 - br i1 %t192, label %for.body8961, label %for.end8963 -for.body8961: - %t193 = load ptr, ptr %a147 - %t194 = load i64, ptr %a190 - %t195 = trunc i64 %t194 to i32 - %t196 = call ptr @clang_getDiagnostic(ptr %t193, i32 %t195) - store ptr %t196, ptr %a197 - %t198 = load ptr, ptr %a197 - %t199 = call i32 @clang_getDiagnosticSeverity(ptr %t198) - %t200 = icmp sge i32 %t199, 3 - br i1 %t200, label %then8964, label %endif8966 -then8964: - %t201 = load ptr, ptr %a197 - %t202 = call { i64, i64 } @clang_getDiagnosticSpelling(ptr %t201) - store { i64, i64 } %t202, ptr %a203 - %t204 = load %S.C.CXString, ptr %a203 - %t205 = call { ptr, i64, i64 } @finch.cimport.text(%S.C.CXString %t204) - store { ptr, i64, i64 } %t205, ptr %a206 - %t207 = load ptr, ptr %a197 - call void @clang_disposeDiagnostic(ptr %t207) - %t208 = load { ptr, i64, i64 }, ptr %a206 + store { ptr, i64, i64 } %t128, ptr %a132 + call void @finch_str_drop(ptr %a132) + %t133 = load { ptr, i64, i64 }, ptr %a129 + store { ptr, i64, i64 } %t133, ptr %a134 + %t135 = extractvalue { ptr, i64, i64 } { ptr @.str.6402, i64 14, i64 0 }, 0 + %t136 = icmp eq ptr %t135, null + %t137 = select i1 %t136, ptr @.str.6403, ptr %t135 + %t138 = insertvalue %S.C.CXUnsavedFile zeroinitializer, ptr %t137, 0 + %t139 = load { ptr, i64, i64 }, ptr %a134 + %t140 = extractvalue { ptr, i64, i64 } %t139, 0 + %t141 = icmp eq ptr %t140, null + %t142 = select i1 %t141, ptr @.str.6404, ptr %t140 + %t143 = insertvalue %S.C.CXUnsavedFile %t138, ptr %t142, 1 + %t144 = getelementptr inbounds { ptr, i64, i64 }, ptr %a134, i32 0, i32 1 + %t145 = load i64, ptr %t144 + %t146 = insertvalue %S.C.CXUnsavedFile %t143, i64 %t145, 2 + store %S.C.CXUnsavedFile %t146, ptr %a147 + store ptr null, ptr %a148 + %t149 = or i64 1, 64 + store i64 %t149, ptr %a150 + %t151 = load ptr, ptr %a113 + %t152 = extractvalue { ptr, i64, i64 } { ptr @.str.6405, i64 14, i64 0 }, 0 + %t153 = icmp eq ptr %t152, null + %t154 = select i1 %t153, ptr @.str.6406, ptr %t152 + %t155 = load { ptr, i64, i64 }, ptr %a89 + %t156 = extractvalue { ptr, i64, i64 } %t155, 0 + %t157 = getelementptr inbounds { ptr, i64, i64 }, ptr %a89, i32 0, i32 1 + %t158 = load i64, ptr %t157 + %t159 = trunc i64 %t158 to i32 + %t160 = load i64, ptr %a150 + %t161 = trunc i64 %t160 to i32 + %t162 = call i32 @clang_parseTranslationUnit2(ptr %t151, ptr %t154, ptr %t156, i32 %t159, ptr %a147, i32 1, i32 %t161, ptr %a148) + store i32 %t162, ptr %a163 + %t164 = load i32, ptr %a163 + %t165 = icmp ne i32 %t164, 0 + br label %logic.from9445 +logic.from9445: + br i1 %t165, label %logic.end9447, label %logic.rhs9446 +logic.rhs9446: + %t166 = load ptr, ptr %a148 + %t167 = icmp eq ptr %t166, null + br label %logic.rend9448 +logic.rend9448: + br label %logic.end9447 +logic.end9447: + %t168 = phi i1 [ true, %logic.from9445 ], [ %t167, %logic.rend9448 ] + br i1 %t168, label %then9449, label %endif9451 +then9449: + %t169 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 1 + %t170 = load { ptr, i64, i64 }, ptr %t169 + store { ptr, i64, i64 } %t170, ptr %a172 + store { ptr, i64, i64 } { ptr @.str.6407, i64 33, 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.cimport.Header, ptr %a122, i32 0, i32 0 + %t176 = load { ptr, i64, i64 }, ptr %t175 + store { ptr, i64, i64 } %t174, ptr %a178 + store { ptr, i64, i64 } %t176, ptr %a179 + call void @finch_str_concat(ptr %a177, ptr %a178, ptr %a179) + store { ptr, i64, i64 } %t174, ptr %a180 + call void @finch_str_drop(ptr %a180) + %t181 = load { ptr, i64, i64 }, ptr %a177 + store { ptr, i64, i64 } %t181, ptr %a183 + store { ptr, i64, i64 } { ptr @.str.6408, i64 1, i64 0 }, ptr %a184 + call void @finch_str_concat(ptr %a182, ptr %a183, ptr %a184) + store { ptr, i64, i64 } %t181, ptr %a185 + call void @finch_str_drop(ptr %a185) + %t186 = load { ptr, i64, i64 }, ptr %a182 + call void @finch_str_drop(ptr %a134) + call void @finch.drop.arr_ptr(ptr %a89) + call void @finch.drop.arr_str(ptr %a25) + call void @finch.drop.S_cimport_Importer(ptr %a6) + %t187 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t186, 2 + ret { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t187 +endif9451: + %t188 = load ptr, ptr %a148 + %t189 = call i32 @clang_getNumDiagnostics(ptr %t188) + %t190 = zext i32 %t189 to i64 + store i64 %t190, ptr %a191 + %t192 = load i64, ptr %a191 + store i64 0, ptr %a193 + br label %for.cond9452 +for.cond9452: + %t194 = load i64, ptr %a193 + %t195 = icmp slt i64 %t194, %t192 + br i1 %t195, label %for.body9453, label %for.end9455 +for.body9453: + %t196 = load ptr, ptr %a148 + %t197 = load i64, ptr %a193 + %t198 = trunc i64 %t197 to i32 + %t199 = call ptr @clang_getDiagnostic(ptr %t196, i32 %t198) + store ptr %t199, ptr %a200 + %t201 = load ptr, ptr %a200 + %t202 = call i32 @clang_getDiagnosticSeverity(ptr %t201) + %t203 = icmp sge i32 %t202, 3 + br i1 %t203, label %then9456, label %endif9458 +then9456: + %t204 = load ptr, ptr %a200 + %t205 = call { i64, i64 } @clang_getDiagnosticSpelling(ptr %t204) + store { i64, i64 } %t205, ptr %a206 + %t207 = load %S.C.CXString, ptr %a206 + %t208 = call { ptr, i64, i64 } @finch.cimport.text(%S.C.CXString %t207) store { ptr, i64, i64 } %t208, ptr %a209 - store { ptr, i64, i64 } { ptr @.str.6191, 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 %then8967, label %endif8969 -then8967: - %t214 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t214, ptr %a215 - %t217 = load { ptr, i64, i64 }, ptr %a206 + %t210 = load ptr, ptr %a200 + call void @clang_disposeDiagnostic(ptr %t210) + %t211 = load { ptr, i64, i64 }, ptr %a209 + store { ptr, i64, i64 } %t211, ptr %a212 + store { ptr, i64, i64 } { ptr @.str.6410, i64 14, i64 0 }, ptr %a214 + %t215 = call i64 @finch_str_find(ptr %a212, ptr %a214) + %t216 = icmp sge i64 %t215, 0 + br i1 %t216, label %then9459, label %endif9461 +then9459: + %t217 = load { ptr, i64, i64 }, ptr %a209 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.6193, i64 548) - %t222 = load { ptr, i64, i64 }, ptr %a219 - store { ptr, i64, i64 } %t222, ptr %a223 - store { ptr, i64, i64 } { ptr @.str.6195, 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.6192, i64 548) - %t228 = load { ptr, i64, i64 }, ptr %a216 - store { ptr, i64, i64 } %t228, ptr %a229 - %t230 = load { ptr, i64, i64 }, ptr %a229 - %t231 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 0 - %t232 = load { ptr, i64, i64 }, ptr %t231 - store { ptr, i64, i64 } %t230, ptr %a233 - 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 %then8970, label %endif8972 -then8970: - %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.6196, 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 - %t244 = load { ptr, i64, i64 }, ptr %t243 - store { ptr, i64, i64 } %t242, 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.6197, i64 1, i64 0 }, ptr %a251 + %t220 = load { ptr, i64, i64 }, ptr %a209 + store { ptr, i64, i64 } %t220, ptr %a221 + %t223 = getelementptr inbounds { ptr, i64, i64 }, ptr %a209, i32 0, i32 1 + %t224 = load i64, ptr %t223 + call void @finch_str_sub(ptr %a222, ptr %a221, i64 1, i64 %t224, ptr @.str.6412, i64 552) + %t225 = load { ptr, i64, i64 }, ptr %a222 + store { ptr, i64, i64 } %t225, ptr %a226 + store { ptr, i64, i64 } { ptr @.str.6414, i64 1, i64 0 }, ptr %a228 + %t229 = call i64 @finch_str_find(ptr %a226, ptr %a228) + store { ptr, i64, i64 } %t225, ptr %a230 + call void @finch_str_drop(ptr %a230) + %t231 = add i64 %t229, 1 + call void @finch_str_sub(ptr %a219, ptr %a218, i64 1, i64 %t231, ptr @.str.6411, i64 552) + %t232 = load { ptr, i64, i64 }, ptr %a219 + store { ptr, i64, i64 } %t232, ptr %a233 + %t234 = load { ptr, i64, i64 }, ptr %a233 + %t235 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 0 + %t236 = load { ptr, i64, i64 }, ptr %t235 + store { ptr, i64, i64 } %t234, ptr %a237 + store { ptr, i64, i64 } %t236, ptr %a238 + %t239 = call i32 @finch_str_eq(ptr %a237, ptr %a238) + %t240 = icmp ne i32 %t239, 0 + br i1 %t240, label %then9462, label %endif9464 +then9462: + %t241 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 1 + %t242 = load { ptr, i64, i64 }, ptr %t241 + store { ptr, i64, i64 } %t242, ptr %a244 + store { ptr, i64, i64 } { ptr @.str.6415, i64 34, 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.cimport.Header, ptr %a122, i32 0, i32 0 + %t248 = load { ptr, i64, i64 }, ptr %t247 + store { ptr, i64, i64 } %t246, 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 - %t253 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t252, 2 - ret { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t253 -endif8972: - %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.6198, 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 - store { ptr, i64, i64 } %t259, ptr %a262 - store { ptr, i64, i64 } %t260, ptr %a263 - 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.6199, 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 - %t270 = load { ptr, i64, i64 }, ptr %t269 - store { ptr, i64, i64 } %t268, ptr %a272 - store { ptr, i64, i64 } %t270, ptr %a273 - 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.6200, 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 -endif8969: - %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.6201, 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 - %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 } %t246, ptr %a252 + call void @finch_str_drop(ptr %a252) + %t253 = load { ptr, i64, i64 }, ptr %a249 + store { ptr, i64, i64 } %t253, ptr %a255 + store { ptr, i64, i64 } { ptr @.str.6416, i64 1, i64 0 }, ptr %a256 + call void @finch_str_concat(ptr %a254, ptr %a255, ptr %a256) + store { ptr, i64, i64 } %t253, ptr %a257 + call void @finch_str_drop(ptr %a257) + %t258 = load { ptr, i64, i64 }, ptr %a254 + call void @finch_str_drop(ptr %a233) + call void @finch_str_drop(ptr %a209) + call void @finch_str_drop(ptr %a134) + call void @finch.drop.arr_ptr(ptr %a89) + call void @finch.drop.arr_str(ptr %a25) + call void @finch.drop.S_cimport_Importer(ptr %a6) + %t259 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t258, 2 + ret { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t259 +endif9464: + %t260 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 1 + %t261 = load { ptr, i64, i64 }, ptr %t260 + store { ptr, i64, i64 } %t261, ptr %a263 + store { ptr, i64, i64 } { ptr @.str.6417, i64 34, i64 0 }, ptr %a264 + call void @finch_str_concat(ptr %a262, ptr %a263, ptr %a264) + %t265 = load { ptr, i64, i64 }, ptr %a262 + %t266 = load { ptr, i64, i64 }, ptr %a233 + store { ptr, i64, i64 } %t265, ptr %a268 + store { ptr, i64, i64 } %t266, ptr %a269 + call void @finch_str_concat(ptr %a267, ptr %a268, ptr %a269) + store { ptr, i64, i64 } %t265, ptr %a270 + call void @finch_str_drop(ptr %a270) + %t271 = load { ptr, i64, i64 }, ptr %a267 + store { ptr, i64, i64 } %t271, ptr %a273 + store { ptr, i64, i64 } { ptr @.str.6418, i64 10, i64 0 }, ptr %a274 + call void @finch_str_concat(ptr %a272, ptr %a273, ptr %a274) + store { ptr, i64, i64 } %t271, ptr %a275 + call void @finch_str_drop(ptr %a275) + %t276 = load { ptr, i64, i64 }, ptr %a272 + %t277 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 0 + %t278 = load { ptr, i64, i64 }, ptr %t277 + store { ptr, i64, i64 } %t276, ptr %a280 + store { ptr, i64, i64 } %t278, ptr %a281 + call void @finch_str_concat(ptr %a279, ptr %a280, ptr %a281) + store { ptr, i64, i64 } %t276, ptr %a282 + call void @finch_str_drop(ptr %a282) + %t283 = load { ptr, i64, i64 }, ptr %a279 + store { ptr, i64, i64 } %t283, ptr %a285 + store { ptr, i64, i64 } { ptr @.str.6419, i64 60, i64 0 }, ptr %a286 + call void @finch_str_concat(ptr %a284, ptr %a285, ptr %a286) + store { ptr, i64, i64 } %t283, ptr %a287 + call void @finch_str_drop(ptr %a287) + %t288 = load { ptr, i64, i64 }, ptr %a284 + call void @finch_str_drop(ptr %a233) + call void @finch_str_drop(ptr %a209) + call void @finch_str_drop(ptr %a134) + call void @finch.drop.arr_ptr(ptr %a89) + call void @finch.drop.arr_str(ptr %a25) + call void @finch.drop.S_cimport_Importer(ptr %a6) + %t289 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t288, 2 + ret { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t289 +endif9461: + %t290 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 1 + %t291 = load { ptr, i64, i64 }, ptr %t290 store { ptr, i64, i64 } %t291, ptr %a293 - store { ptr, i64, i64 } { ptr @.str.6202, i64 16, i64 0 }, ptr %a294 + store { ptr, i64, i64 } { ptr @.str.6420, i64 19, 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 - store { ptr, i64, i64 } %t295, ptr %a298 - store { ptr, i64, i64 } %t296, ptr %a299 - call void @finch_str_concat(ptr %a297, ptr %a298, ptr %a299) - %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 -endif8966: - %t302 = load ptr, ptr %a197 - call void @clang_disposeDiagnostic(ptr %t302) - br label %for.step8962 -for.step8962: - %t303 = load i64, ptr %a190 - %t304 = add i64 %t303, 1 - store i64 %t304, ptr %a190 - br label %for.cond8960 -for.end8963: - %t305 = load ptr, ptr %a147 - %t306 = getelementptr inbounds %S.cimport.Importer, ptr %a6, i32 0, i32 1 - store ptr %t305, ptr %t306 - %t307 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 0 - %t308 = load { ptr, i64, i64 }, ptr %t307 - %t309 = getelementptr inbounds %S.cimport.Importer, ptr %a6, i32 0, i32 2 - store { ptr, i64, i64 } %t308, ptr %a310 - call void @finch_str_copy(ptr %a311, ptr %a310) - %t312 = load { ptr, i64, i64 }, ptr %a311 - store { ptr, i64, i64 } %t312, ptr %t309 - %t314 = load ptr, ptr %a147 - call void @clang_getTranslationUnitCursor(ptr sret(%S.C.CXCursor) align 16 %a313, ptr %t314) - %t315 = load %S.C.CXCursor, ptr %a313 - store %S.C.CXCursor %t315, ptr %a316 - %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.step8951 -each.step8951: - %t319 = load i64, ptr %a114 - %t320 = add i64 %t319, 1 - store i64 %t320, ptr %a114 - br label %each.cond8949 -each.end8952: - %t321 = load ptr, ptr %a113 - call void @clang_disposeIndex(ptr %t321) - %t322 = getelementptr inbounds %S.cimport.Importer, ptr %a6, i32 0, i32 0 - %t323 = load %S.cimport.CImports, ptr %t322 - store %S.cimport.CImports %t323, ptr %a324 - call void @finch.copy.S_cimport_CImports(ptr %a325, ptr %a324) - %t326 = load %S.cimport.CImports, ptr %a325 - %t327 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t328 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t327, %S.cimport.CImports %t326, 1 - ret { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t328 + %t296 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 0 + %t297 = load { ptr, i64, i64 }, ptr %t296 + store { ptr, i64, i64 } %t295, ptr %a299 + store { ptr, i64, i64 } %t297, ptr %a300 + call void @finch_str_concat(ptr %a298, ptr %a299, ptr %a300) + store { ptr, i64, i64 } %t295, ptr %a301 + call void @finch_str_drop(ptr %a301) + %t302 = load { ptr, i64, i64 }, ptr %a298 + store { ptr, i64, i64 } %t302, ptr %a304 + store { ptr, i64, i64 } { ptr @.str.6421, i64 16, i64 0 }, ptr %a305 + call void @finch_str_concat(ptr %a303, ptr %a304, ptr %a305) + store { ptr, i64, i64 } %t302, ptr %a306 + call void @finch_str_drop(ptr %a306) + %t307 = load { ptr, i64, i64 }, ptr %a303 + %t308 = load { ptr, i64, i64 }, ptr %a209 + store { ptr, i64, i64 } %t307, ptr %a310 + store { ptr, i64, i64 } %t308, ptr %a311 + call void @finch_str_concat(ptr %a309, ptr %a310, ptr %a311) + store { ptr, i64, i64 } %t307, ptr %a312 + call void @finch_str_drop(ptr %a312) + %t313 = load { ptr, i64, i64 }, ptr %a309 + call void @finch_str_drop(ptr %a209) + call void @finch_str_drop(ptr %a134) + call void @finch.drop.arr_ptr(ptr %a89) + call void @finch.drop.arr_str(ptr %a25) + call void @finch.drop.S_cimport_Importer(ptr %a6) + %t314 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t313, 2 + ret { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t314 +endif9458: + %t315 = load ptr, ptr %a200 + call void @clang_disposeDiagnostic(ptr %t315) + br label %for.step9454 +for.step9454: + %t316 = load i64, ptr %a193 + %t317 = add i64 %t316, 1 + store i64 %t317, ptr %a193 + br label %for.cond9452 +for.end9455: + %t318 = load ptr, ptr %a148 + %t319 = getelementptr inbounds %S.cimport.Importer, ptr %a6, i32 0, i32 1 + store ptr %t318, ptr %t319 + %t320 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 0 + %t321 = load { ptr, i64, i64 }, ptr %t320 + %t322 = getelementptr inbounds %S.cimport.Importer, ptr %a6, i32 0, i32 2 + store { ptr, i64, i64 } %t321, ptr %a323 + call void @finch_str_copy(ptr %a324, ptr %a323) + %t325 = load { ptr, i64, i64 }, ptr %a324 + %t326 = load { ptr, i64, i64 }, ptr %t322 + store { ptr, i64, i64 } %t325, ptr %t322 + store { ptr, i64, i64 } %t326, ptr %a327 + call void @finch_str_drop(ptr %a327) + %t329 = load ptr, ptr %a148 + call void @clang_getTranslationUnitCursor(ptr sret(%S.C.CXCursor) align 16 %a328, ptr %t329) + %t330 = load %S.C.CXCursor, ptr %a328 + store %S.C.CXCursor %t330, ptr %a331 + %t332 = call i32 @clang_visitChildren(ptr byval(%S.C.CXCursor) align 8 %a331, ptr @finch.c.cimport.visitTop, ptr %a6) + %t333 = load ptr, ptr %a148 + call void @clang_disposeTranslationUnit(ptr %t333) + call void @finch_str_drop(ptr %a134) + br label %each.step9443 +each.step9443: + %t334 = load i64, ptr %a114 + %t335 = add i64 %t334, 1 + store i64 %t335, ptr %a114 + br label %each.cond9441 +each.end9444: + %t336 = load ptr, ptr %a113 + call void @clang_disposeIndex(ptr %t336) + %t337 = getelementptr inbounds %S.cimport.Importer, ptr %a6, i32 0, i32 0 + %t338 = load %S.cimport.CImports, ptr %t337 + store %S.cimport.CImports %t338, ptr %a339 + call void @finch.copy.S_cimport_CImports(ptr %a340, ptr %a339) + %t341 = load %S.cimport.CImports, ptr %a340 + call void @finch.drop.arr_ptr(ptr %a89) + call void @finch.drop.arr_str(ptr %a25) + call void @finch.drop.S_cimport_Importer(ptr %a6) + %t342 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 + %t343 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t342, %S.cimport.CImports %t341, 1 + ret { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t343 +} + +define internal { ptr, i64, i64 } @finch.host.quote({ 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.6424, i64 1, i64 0 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.6425, 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.6422, i64 1, i64 0 }, ptr %a9 + store { ptr, i64, i64 } %t7, ptr %a10 + call void @finch_str_concat(ptr %a8, ptr %a9, ptr %a10) + store { ptr, i64, i64 } %t7, ptr %a11 + call void @finch_str_drop(ptr %a11) + %t12 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t12, ptr %a14 + store { ptr, i64, i64 } { ptr @.str.6426, i64 1, i64 0 }, ptr %a15 + call void @finch_str_concat(ptr %a13, ptr %a14, ptr %a15) + store { ptr, i64, i64 } %t12, ptr %a16 + call void @finch_str_drop(ptr %a16) + %t17 = load { ptr, i64, i64 }, ptr %a13 + ret { ptr, i64, i64 } %t17 +} + +define internal i64 @finch.host.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 + store { ptr, i64, i64 } %p0, ptr %a1 + %t2 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t2, ptr %a4 + call void @finch_str_copy(ptr %a3, ptr %a4) + %t5 = call i64 @finch_shell(ptr %a3) + call void @finch_str_drop(ptr %a3) + ret i64 %t5 +} + +define internal { ptr, i64, i64 } @finch.host.nullDevice() { +entry: + + ret { ptr, i64, i64 } { ptr @.str.6427, i64 9, i64 0 } +} + +define internal { ptr, i64, i64 } @finch.host.tempDir() { +entry: + %a5 = alloca { ptr, i64, i64 }, align 16 + %a7 = alloca { ptr, i64, i64 }, align 16 + %a8 = alloca { ptr, i64, i64 }, align 16 + %a10 = 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 + %a22 = alloca { ptr, i64, i64 }, align 16 + %t1 = extractvalue { ptr, i64, i64 } { ptr @.str.6428, i64 6, i64 0 }, 0 + %t2 = icmp eq ptr %t1, null + %t3 = select i1 %t2, ptr @.str.6429, 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) + %t6 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } %t6, ptr %a7 + call void @finch_str_copy(ptr %a8, ptr %a7) + %t9 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t9, ptr %a10 + %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 %then9465, label %endif9467 +then9465: + %t14 = load { ptr, i64, i64 }, ptr %a10 + store { ptr, i64, i64 } %t14, ptr %a15 + store { ptr, i64, i64 } { ptr @.str.6431, i64 1, i64 0 }, ptr %a17 + %t18 = call i32 @finch_str_ends(ptr %a15, ptr %a17) + %t19 = icmp ne i32 %t18, 0 + br i1 %t19, label %then9468, label %endif9470 +then9468: + %t20 = load { ptr, i64, i64 }, ptr %a10 + store { ptr, i64, i64 } %t20, ptr %a21 + %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %a10, i32 0, i32 1 + %t24 = load i64, ptr %t23 + %t25 = sub i64 %t24, 1 + call void @finch_str_sub(ptr %a22, ptr %a21, i64 0, i64 %t25, ptr @.str.6432, i64 25) + %t26 = load { ptr, i64, i64 }, ptr %a22 + call void @finch_str_drop(ptr %a10) + ret { ptr, i64, i64 } %t26 +endif9470: + %t27 = load { ptr, i64, i64 }, ptr %a10 + ret { ptr, i64, i64 } %t27 +endif9467: + call void @finch_str_drop(ptr %a10) + ret { ptr, i64, i64 } { ptr @.str.6433, i64 4, i64 0 } +} + +define internal { ptr, i64, i64 } @finch.host.pathSeparator() { +entry: + + ret { ptr, i64, i64 } { ptr @.str.6434, i64 1, i64 0 } +} + +define internal i64 @finch.host.pid() { +entry: + + %t1 = call i32 @getpid() + %t2 = sext i32 %t1 to i64 + ret i64 %t2 +} + +define internal { ptr, i64, i64 } @finch.host.cwd() { +entry: + %a5 = alloca { ptr, i64, i64 }, align 16 + %a7 = alloca { ptr, i64, i64 }, align 16 + %a8 = alloca { ptr, i64, i64 }, align 16 + %t1 = extractvalue { ptr, i64, i64 } { ptr @.str.6435, i64 3, i64 0 }, 0 + %t2 = icmp eq ptr %t1, null + %t3 = select i1 %t2, ptr @.str.6436, 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) + %t6 = load { ptr, i64, i64 }, ptr %a5 + 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 +} + +define internal { ptr, i64, i64 } @finch.host.cacheDir() { +entry: + %a5 = alloca { ptr, i64, i64 }, align 16 + %a7 = alloca { ptr, i64, i64 }, align 16 + %a8 = alloca { ptr, i64, i64 }, align 16 + %a10 = 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 + %a23 = 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 + %a33 = alloca { ptr, i64, i64 }, align 16 + %a34 = alloca { ptr, i64, i64 }, align 16 + %a35 = alloca { ptr, i64, i64 }, align 16 + %a38 = 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 + %t1 = extractvalue { ptr, i64, i64 } { ptr @.str.6437, i64 14, i64 0 }, 0 + %t2 = icmp eq ptr %t1, null + %t3 = select i1 %t2, ptr @.str.6438, 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) + %t6 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } %t6, ptr %a7 + call void @finch_str_copy(ptr %a8, ptr %a7) + %t9 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t9, ptr %a10 + %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 %then9471, label %endif9473 +then9471: + %t14 = load { ptr, i64, i64 }, ptr %a10 + store { ptr, i64, i64 } %t14, ptr %a16 + store { ptr, i64, i64 } { ptr @.str.6439, i64 6, i64 0 }, ptr %a17 + call void @finch_str_concat(ptr %a15, ptr %a16, ptr %a17) + %t18 = load { ptr, i64, i64 }, ptr %a15 + call void @finch_str_drop(ptr %a10) + ret { ptr, i64, i64 } %t18 +endif9473: + %t19 = extractvalue { ptr, i64, i64 } { ptr @.str.6440, i64 4, i64 0 }, 0 + %t20 = icmp eq ptr %t19, null + %t21 = select i1 %t20, ptr @.str.6441, 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) + %t24 = load { ptr, i64, i64 }, ptr %a23 + 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 { ptr, i64, i64 }, ptr %a28, i32 0, i32 1 + %t30 = load i64, ptr %t29 + %t31 = icmp sgt i64 %t30, 0 + br i1 %t31, label %then9474, label %endif9476 +then9474: + %t32 = load { ptr, i64, i64 }, ptr %a28 + store { ptr, i64, i64 } %t32, ptr %a34 + store { ptr, i64, i64 } { ptr @.str.6442, i64 13, 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_str_drop(ptr %a28) + call void @finch_str_drop(ptr %a10) + ret { ptr, i64, i64 } %t36 +endif9476: + %t37 = call { ptr, i64, i64 } @finch.host.tempDir() + store { ptr, i64, i64 } %t37, ptr %a39 + store { ptr, i64, i64 } { ptr @.str.6443, i64 12, i64 0 }, ptr %a40 + call void @finch_str_concat(ptr %a38, ptr %a39, ptr %a40) + store { ptr, i64, i64 } %t37, ptr %a41 + call void @finch_str_drop(ptr %a41) + %t42 = load { ptr, i64, i64 }, ptr %a38 + call void @finch_str_drop(ptr %a28) + call void @finch_str_drop(ptr %a10) + ret { ptr, i64, i64 } %t42 +} + +define internal void @finch.host.binaryStdio() { +entry: + + ret void +} + +define internal void @finch.host.makeDirs({ 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 + %a7 = 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 + store { ptr, i64, i64 } %p0, ptr %a1 + %t2 = load { ptr, i64, i64 }, ptr %a1 + %t3 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t2) + store { ptr, i64, i64 } { ptr @.str.6444, i64 9, i64 0 }, ptr %a5 + store { ptr, i64, i64 } %t3, ptr %a6 + call void @finch_str_concat(ptr %a4, ptr %a5, ptr %a6) + store { ptr, i64, i64 } %t3, ptr %a7 + call void @finch_str_drop(ptr %a7) + %t8 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t8, ptr %a10 + call void @finch_str_copy(ptr %a9, ptr %a10) + %t11 = call i64 @finch_shell(ptr %a9) + call void @finch_str_drop(ptr %a9) + store { ptr, i64, i64 } %t8, ptr %a12 + call void @finch_str_drop(ptr %a12) + ret void +} + +define internal void @finch.host.remove({ 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 + store { ptr, i64, i64 } %p0, ptr %a1 + %t2 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t2, ptr %a4 + call void @finch_str_copy(ptr %a3, ptr %a4) + %t5 = call i32 @finch_delete_file(ptr %a3) + call void @finch_str_drop(ptr %a3) + %t6 = icmp ne i32 %t5, 0 + ret void +} + +define internal void @finch.host.removeTree({ 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 + %a7 = 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 + store { ptr, i64, i64 } %p0, ptr %a1 + %t2 = load { ptr, i64, i64 }, ptr %a1 + %t3 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t2) + store { ptr, i64, i64 } { ptr @.str.6445, i64 7, i64 0 }, ptr %a5 + store { ptr, i64, i64 } %t3, ptr %a6 + call void @finch_str_concat(ptr %a4, ptr %a5, ptr %a6) + store { ptr, i64, i64 } %t3, ptr %a7 + call void @finch_str_drop(ptr %a7) + %t8 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t8, ptr %a10 + call void @finch_str_copy(ptr %a9, ptr %a10) + %t11 = call i64 @finch_shell(ptr %a9) + call void @finch_str_drop(ptr %a9) + store { ptr, i64, i64 } %t8, ptr %a12 + call void @finch_str_drop(ptr %a12) + ret void +} + +define internal void @finch.host.move({ ptr, i64, i64 } %p0, { ptr, i64, i64 } %p1) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a2 = 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 + %a8 = alloca { ptr, i64, i64 }, align 16 + %a10 = 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 + %a17 = 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 + %a21 = 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 + store { ptr, i64, i64 } %p0, ptr %a1 + store { ptr, i64, i64 } %p1, ptr %a2 + %t3 = load { ptr, i64, i64 }, ptr %a1 + %t4 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t3) + store { ptr, i64, i64 } { ptr @.str.6446, i64 3, i64 0 }, ptr %a6 + store { ptr, i64, i64 } %t4, ptr %a7 + call void @finch_str_concat(ptr %a5, ptr %a6, ptr %a7) + store { ptr, i64, i64 } %t4, ptr %a8 + call void @finch_str_drop(ptr %a8) + %t9 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } %t9, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.6447, i64 1, i64 0 }, ptr %a12 + call void @finch_str_concat(ptr %a10, ptr %a11, ptr %a12) + store { ptr, i64, i64 } %t9, ptr %a13 + call void @finch_str_drop(ptr %a13) + %t14 = load { ptr, i64, i64 }, ptr %a10 + %t15 = load { ptr, i64, i64 }, ptr %a2 + %t16 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t15) + store { ptr, i64, i64 } %t14, ptr %a18 + store { ptr, i64, i64 } %t16, ptr %a19 + call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) + store { ptr, i64, i64 } %t14, ptr %a20 + call void @finch_str_drop(ptr %a20) + store { ptr, i64, i64 } %t16, ptr %a21 + call void @finch_str_drop(ptr %a21) + %t22 = load { ptr, i64, i64 }, ptr %a17 + store { ptr, i64, i64 } %t22, ptr %a24 + call void @finch_str_copy(ptr %a23, ptr %a24) + %t25 = call i64 @finch_shell(ptr %a23) + call void @finch_str_drop(ptr %a23) + store { ptr, i64, i64 } %t22, ptr %a26 + call void @finch_str_drop(ptr %a26) + ret void } define internal { ptr, i64, i64 } @finch.platform.firstLine({ ptr, i64, i64 } %p0) { @@ -81270,118 +97945,170 @@ entry: %a8 = alloca { ptr, i64, i64 }, align 16 %a9 = alloca { ptr, i64, i64 }, align 16 %a11 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 + %a12 = alloca { ptr, i64, i64 }, align 16 %a19 = alloca { ptr, i64, i64 }, align 16 + %a20 = 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_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.6205, i64 1, i64 0 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.6450, 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 %range8973, label %inrange8974 -range8973: - call void @finch_panic_index(ptr @.str.6206, i64 20, i64 0, i64 %t13) + store { ptr, i64, i64 } %t5, ptr %a11 + call void @finch_str_drop(ptr %a11) + store { ptr, i64, i64 } %t10, ptr %a12 + %t13 = load { ptr, i64, i64 }, ptr %a12 + %t14 = extractvalue { ptr, i64, i64 } %t13, 1 + %t15 = icmp uge i64 0, %t14 + br i1 %t15, label %range9477, label %inrange9478 +range9477: + call void @finch_panic_index(ptr @.str.6451, i64 21, i64 0, i64 %t14) unreachable -inrange8974: - %t15 = extractvalue { ptr, i64, i64 } %t12, 0 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t15, i64 0 - %t17 = load { ptr, i64, i64 }, ptr %t16 - store { ptr, i64, i64 } %t17, ptr %a18 - call void @finch_str_trim(ptr %a19, ptr %a18) - %t20 = load { ptr, i64, i64 }, ptr %a19 - ret { ptr, i64, i64 } %t20 +inrange9478: + %t16 = extractvalue { ptr, i64, i64 } %t13, 0 + %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 0 + %t18 = load { ptr, i64, i64 }, ptr %t17 + store { ptr, i64, i64 } %t18, ptr %a19 + call void @finch_str_trim(ptr %a20, ptr %a19) + %t21 = load { ptr, i64, i64 }, ptr %a20 + call void @finch.drop.arr_str(ptr %a12) + ret { ptr, i64, i64 } %t21 } define internal { ptr, i64, i64 } @finch.platform.hostTriple() { entry: - %a1 = alloca { ptr, i64, i64 }, align 16 + %a2 = 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 { 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 %a12 = alloca { ptr, i64, i64 }, align 16 - %a15 = 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 - %a22 = alloca { ptr, i64, i64 }, align 16 + %a18 = alloca { ptr, i64, i64 }, align 16 + %a19 = alloca { ptr, i64, i64 }, align 16 + %a21 = 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 %a27 = 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 %a31 = alloca { ptr, i64, i64 }, align 16 %a32 = alloca { ptr, i64, i64 }, align 16 - %a34 = 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 %a38 = alloca { ptr, i64, i64 }, align 16 %a39 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } { ptr @.str.6208, i64 21, i64 0 }, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } { ptr @.str.6209, 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.6210, 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 - call void @finch_str_copy(ptr %a11, ptr %a12) - %t13 = call i64 @finch_shell(ptr %a11) - %t14 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t14, ptr %a15 - store { ptr, i64, i64 } zeroinitializer, ptr %a16 - store { ptr, i64, i64 } zeroinitializer, ptr %a17 - %t18 = call i32 @finch_try_read_file(ptr %a16, ptr %a15, ptr %a17) - %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.failed8975, label %or.ok8976 -or.failed8975: - store { ptr, i64, i64 } %t20, ptr %a22 - br label %or.bend8977 -or.bend8977: - br label %or.end8978 -or.ok8976: - br label %or.end8978 -or.end8978: - %t23 = phi { ptr, i64, i64 } [ { ptr @.str.6211, i64 0, i64 0 }, %or.bend8977 ], [ %t21, %or.ok8976 ] - store { ptr, i64, i64 } %t23, ptr %a24 - %t25 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } { ptr @.str.6212, 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.6213, 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 - call void @finch_str_copy(ptr %a34, ptr %a35) - %t36 = call i64 @finch_shell(ptr %a34) - %t37 = load { ptr, i64, i64 }, ptr %a24 - store { ptr, i64, i64 } %t37, ptr %a38 - call void @finch_str_trim(ptr %a39, ptr %a38) - %t40 = load { ptr, i64, i64 }, ptr %a39 - %t41 = extractvalue { ptr, i64, i64 } %t40, 1 - %t42 = icmp eq i64 %t41, 0 - br i1 %t42, label %then8979, label %endif8981 -then8979: - ret { ptr, i64, i64 } { ptr @.str.6215, i64 24, i64 0 } -endif8981: - %t43 = load { ptr, i64, i64 }, ptr %a24 - %t44 = call { ptr, i64, i64 } @finch.platform.firstLine({ ptr, i64, i64 } %t43) - ret { ptr, i64, i64 } %t44 + %a42 = alloca { ptr, i64, i64 }, align 16 + %a44 = alloca { ptr, i64, i64 }, align 16 + %a45 = alloca { ptr, i64, i64 }, align 16 + %a46 = alloca { ptr, i64, i64 }, align 16 + %a51 = 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 + %a60 = alloca { ptr, i64, i64 }, align 16 + %t1 = call { ptr, i64, i64 } @finch.host.tempDir() + store { ptr, i64, i64 } %t1, ptr %a3 + store { ptr, i64, i64 } { ptr @.str.6453, i64 14, i64 0 }, ptr %a4 + call void @finch_str_concat(ptr %a2, ptr %a3, ptr %a4) + store { ptr, i64, i64 } %t1, ptr %a5 + call void @finch_str_drop(ptr %a5) + %t6 = load { ptr, i64, i64 }, ptr %a2 + %t7 = call i64 @finch.host.pid() + call void @finch_str_from_int(ptr %a8, i64 %t7) + %t9 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t6, ptr %a11 + store { ptr, i64, i64 } %t9, ptr %a12 + call void @finch_str_concat(ptr %a10, ptr %a11, ptr %a12) + store { ptr, i64, i64 } %t6, ptr %a13 + call void @finch_str_drop(ptr %a13) + store { ptr, i64, i64 } %t9, ptr %a14 + call void @finch_str_drop(ptr %a14) + %t15 = load { ptr, i64, i64 }, ptr %a10 + store { ptr, i64, i64 } %t15, ptr %a17 + store { ptr, i64, i64 } { ptr @.str.6454, i64 4, i64 0 }, ptr %a18 + call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) + store { ptr, i64, i64 } %t15, ptr %a19 + call void @finch_str_drop(ptr %a19) + %t20 = load { ptr, i64, i64 }, ptr %a16 + store { ptr, i64, i64 } %t20, ptr %a21 + %t22 = load { ptr, i64, i64 }, ptr %a21 + %t23 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t22) + store { ptr, i64, i64 } { ptr @.str.6455, i64 21, i64 0 }, ptr %a25 + store { ptr, i64, i64 } %t23, ptr %a26 + call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) + store { ptr, i64, i64 } %t23, ptr %a27 + call void @finch_str_drop(ptr %a27) + %t28 = load { ptr, i64, i64 }, ptr %a24 + store { ptr, i64, i64 } %t28, ptr %a30 + store { ptr, i64, i64 } { ptr @.str.6456, i64 4, i64 0 }, ptr %a31 + call void @finch_str_concat(ptr %a29, ptr %a30, ptr %a31) + store { ptr, i64, i64 } %t28, ptr %a32 + call void @finch_str_drop(ptr %a32) + %t33 = load { ptr, i64, i64 }, ptr %a29 + %t34 = call { ptr, i64, i64 } @finch.host.nullDevice() + store { ptr, i64, i64 } %t33, ptr %a36 + store { ptr, i64, i64 } %t34, ptr %a37 + call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) + store { ptr, i64, i64 } %t33, ptr %a38 + call void @finch_str_drop(ptr %a38) + store { ptr, i64, i64 } %t34, ptr %a39 + call void @finch_str_drop(ptr %a39) + %t40 = load { ptr, i64, i64 }, ptr %a35 + %t41 = call i64 @finch.host.run({ ptr, i64, i64 } %t40) + store { ptr, i64, i64 } %t40, ptr %a42 + call void @finch_str_drop(ptr %a42) + %t43 = load { ptr, i64, i64 }, ptr %a21 + store { ptr, i64, i64 } %t43, ptr %a44 + store { ptr, i64, i64 } zeroinitializer, ptr %a45 + store { ptr, i64, i64 } zeroinitializer, ptr %a46 + %t47 = call i32 @finch_try_read_file(ptr %a45, ptr %a44, ptr %a46) + %t48 = icmp eq i32 %t47, 0 + %t49 = load { ptr, i64, i64 }, ptr %a46 + %t50 = load { ptr, i64, i64 }, ptr %a45 + br i1 %t48, label %or.failed9479, label %or.ok9480 +or.failed9479: + store { ptr, i64, i64 } %t49, ptr %a51 + call void @finch_str_drop(ptr %a51) + br label %or.bend9481 +or.bend9481: + br label %or.end9482 +or.ok9480: + br label %or.end9482 +or.end9482: + %t52 = phi { ptr, i64, i64 } [ { ptr @.str.6457, i64 0, i64 0 }, %or.bend9481 ], [ %t50, %or.ok9480 ] + store { ptr, i64, i64 } %t52, ptr %a53 + %t54 = load { ptr, i64, i64 }, ptr %a21 + call void @finch.host.remove({ ptr, i64, i64 } %t54) + %t55 = load { ptr, i64, i64 }, ptr %a53 + store { ptr, i64, i64 } %t55, ptr %a56 + call void @finch_str_trim(ptr %a57, ptr %a56) + %t58 = load { ptr, i64, i64 }, ptr %a57 + %t59 = extractvalue { ptr, i64, i64 } %t58, 1 + store { ptr, i64, i64 } %t58, ptr %a60 + call void @finch_str_drop(ptr %a60) + %t61 = icmp eq i64 %t59, 0 + br i1 %t61, label %then9483, label %endif9485 +then9483: + call void @finch_str_drop(ptr %a53) + call void @finch_str_drop(ptr %a21) + ret { ptr, i64, i64 } { ptr @.str.6459, i64 24, i64 0 } +endif9485: + %t62 = load { ptr, i64, i64 }, ptr %a53 + %t63 = call { ptr, i64, i64 } @finch.platform.firstLine({ ptr, i64, i64 } %t62) + call void @finch_str_drop(ptr %a53) + call void @finch_str_drop(ptr %a21) + ret { ptr, i64, i64 } %t63 } define internal %S.platform.Target @finch.platform.select({ ptr, i64, i64 } %p0) { @@ -81394,81 +98121,98 @@ entry: %a13 = alloca { ptr, i64, i64 }, align 16 %a14 = 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 + %a19 = alloca { ptr, i64, i64 }, align 16 + %a20 = 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 - %a32 = 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 %a38 = alloca { ptr, i64, i64 }, align 16 %a39 = alloca { ptr, i64, i64 }, align 16 %a44 = alloca { ptr, i64, i64 }, align 16 %a45 = 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 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 + %a52 = alloca { ptr, i64, i64 }, align 16 + %a53 = alloca { ptr, i64, i64 }, align 16 %a57 = alloca { ptr, i64, i64 }, align 16 - %a62 = 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 - %a66 = alloca %S.platform.Target, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 + %a64 = alloca { ptr, i64, i64 }, align 16 + %a65 = alloca { ptr, i64, i64 }, align 16 %a70 = alloca { ptr, i64, i64 }, align 16 + %a72 = alloca { ptr, i64, i64 }, align 16 %a74 = alloca { ptr, i64, i64 }, align 16 %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 + %a78 = alloca %S.platform.Target, 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 + %a86 = 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 - %a90 = 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 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = 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 + %a100 = alloca { ptr, i64, i64 }, align 16 + %a101 = alloca { ptr, i64, i64 }, align 16 + %a102 = 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 + %a115 = 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 - %a124 = 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 + %a123 = 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 - %a132 = alloca { ptr, i64, i64 }, align 16 + %a136 = alloca { ptr, i64, i64 }, align 16 + %a137 = 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 + %a142 = alloca { ptr, i64, i64 }, align 16 + %a143 = 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 - %a150 = alloca i1, align 16 + %a150 = 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 - %a154 = 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 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca i1, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 + %a162 = alloca i1, align 16 + %a164 = alloca { ptr, i64, i64 }, align 16 + %a165 = alloca { ptr, i64, i64 }, align 16 + %a166 = alloca { ptr, i64, i64 }, 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 i1, align 16 + %a192 = alloca { ptr, i64, i64 }, align 16 %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = 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 - %a242 = alloca %S.platform.Target, align 16 - %a243 = alloca %S.platform.Target, align 16 + %a202 = alloca { ptr, i64, i64 }, align 16 + %a204 = alloca { ptr, i64, i64 }, align 16 + %a205 = alloca { ptr, i64, i64 }, align 16 + %a207 = alloca { ptr, i64, i64 }, align 16 + %a213 = alloca { ptr, i64, i64 }, align 16 + %a214 = alloca { ptr, i64, i64 }, align 16 + %a217 = alloca { ptr, i64, i64 }, align 16 + %a225 = alloca { ptr, i64, i64 }, align 16 + %a237 = alloca { ptr, i64, i64 }, align 16 + %a241 = alloca { ptr, i64, i64 }, align 16 + %a242 = alloca { ptr, i64, i64 }, align 16 + %a243 = alloca { ptr, i64, i64 }, align 16 + %a247 = alloca { ptr, i64, i64 }, align 16 + %a249 = alloca { ptr, i64, i64 }, align 16 + %a250 = alloca { ptr, i64, i64 }, align 16 + %a253 = alloca { ptr, i64, i64 }, align 16 + %a256 = alloca { ptr, i64, i64 }, align 16 + %a259 = alloca { ptr, i64, i64 }, align 16 + %a267 = alloca { ptr, i64, i64 }, align 16 + %a279 = alloca { ptr, i64, i64 }, align 16 store { ptr, i64, i64 } %p0, ptr %a1 %t2 = call { ptr, i64, i64 } @finch.platform.hostTriple() store { ptr, i64, i64 } %t2, ptr %a3 @@ -81480,469 +98224,532 @@ 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 %then8982, label %else8983 -then8982: + br i1 %t11, label %then9486, label %else9487 +then9486: %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 + %t16 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t15, ptr %a8 - br label %endif8984 -else8983: - %t16 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t16, ptr %a17 - store { ptr, i64, i64 } { ptr @.str.6216, 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 %then8985, label %else8986 -then8985: - store { ptr, i64, i64 } { ptr @.str.6217, i64 18, i64 0 }, ptr %a8 - br label %endif8987 -else8986: - %t21 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t21, ptr %a22 - store { ptr, i64, i64 } { ptr @.str.6218, 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 %then8988, label %else8989 -then8988: - store { ptr, i64, i64 } { ptr @.str.6219, i64 24, i64 0 }, ptr %a8 - br label %endif8990 -else8989: - %t26 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t26, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.6220, 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.from8991 -logic.from8991: - br i1 %t30, label %logic.end8993, label %logic.rhs8992 -logic.rhs8992: - %t31 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t31, ptr %a32 - store { ptr, i64, i64 } { ptr @.str.6221, 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.rend8994 -logic.rend8994: - br label %logic.end8993 -logic.end8993: - %t36 = phi i1 [ true, %logic.from8991 ], [ %t35, %logic.rend8994 ] - br label %logic.from8995 -logic.from8995: - br i1 %t36, label %logic.end8997, label %logic.rhs8996 -logic.rhs8996: + call void @finch_str_drop(ptr %a17) + br label %endif9488 +else9487: + %t18 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t18, ptr %a19 + store { ptr, i64, i64 } { ptr @.str.6460, i64 7, i64 0 }, ptr %a20 + %t21 = call i32 @finch_str_eq(ptr %a19, ptr %a20) + %t22 = icmp ne i32 %t21, 0 + br i1 %t22, label %then9489, label %else9490 +then9489: + %t23 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.6461, i64 18, i64 0 }, ptr %a8 + store { ptr, i64, i64 } %t23, ptr %a24 + call void @finch_str_drop(ptr %a24) + br label %endif9491 +else9490: + %t25 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t25, ptr %a26 + store { ptr, i64, i64 } { ptr @.str.6462, i64 5, i64 0 }, ptr %a27 + %t28 = call i32 @finch_str_eq(ptr %a26, ptr %a27) + %t29 = icmp ne i32 %t28, 0 + br i1 %t29, label %then9492, label %else9493 +then9492: + %t30 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.6463, i64 24, i64 0 }, ptr %a8 + store { ptr, i64, i64 } %t30, ptr %a31 + call void @finch_str_drop(ptr %a31) + br label %endif9494 +else9493: + %t32 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t32, ptr %a33 + store { ptr, i64, i64 } { ptr @.str.6464, i64 5, i64 0 }, ptr %a34 + %t35 = call i32 @finch_str_eq(ptr %a33, ptr %a34) + %t36 = icmp ne i32 %t35, 0 + br label %logic.from9495 +logic.from9495: + br i1 %t36, label %logic.end9497, label %logic.rhs9496 +logic.rhs9496: %t37 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t37, ptr %a38 - store { ptr, i64, i64 } { ptr @.str.6222, i64 11, i64 0 }, ptr %a39 + store { ptr, i64, i64 } { ptr @.str.6465, i64 7, i64 0 }, ptr %a39 %t40 = call i32 @finch_str_eq(ptr %a38, ptr %a39) %t41 = icmp ne i32 %t40, 0 - br label %logic.rend8998 -logic.rend8998: - br label %logic.end8997 -logic.end8997: - %t42 = phi i1 [ true, %logic.from8995 ], [ %t41, %logic.rend8998 ] - br i1 %t42, label %then8999, label %else9000 -then8999: - store { ptr, i64, i64 } { ptr @.str.6223, i64 25, i64 0 }, ptr %a8 - br label %endif9001 -else9000: + br label %logic.rend9498 +logic.rend9498: + br label %logic.end9497 +logic.end9497: + %t42 = phi i1 [ true, %logic.from9495 ], [ %t41, %logic.rend9498 ] + br label %logic.from9499 +logic.from9499: + br i1 %t42, label %logic.end9501, label %logic.rhs9500 +logic.rhs9500: %t43 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t43, ptr %a44 - store { ptr, i64, i64 } { ptr @.str.6224, i64 5, i64 0 }, ptr %a45 + store { ptr, i64, i64 } { ptr @.str.6466, i64 11, i64 0 }, ptr %a45 %t46 = call i32 @finch_str_eq(ptr %a44, ptr %a45) %t47 = icmp ne i32 %t46, 0 - br i1 %t47, label %then9002, label %endif9004 -then9002: - %t48 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t48, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.6226, 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.from9005 -logic.from9005: - br i1 %t53, label %logic.end9007, label %logic.rhs9006 -logic.rhs9006: - %t54 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t54, ptr %a55 - store { ptr, i64, i64 } { ptr @.str.6228, 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.rend9008 -logic.rend9008: - br label %logic.end9007 -logic.end9007: - %t60 = phi i1 [ true, %logic.from9005 ], [ %t59, %logic.rend9008 ] - br i1 %t60, label %then9009, label %else9010 -then9009: - store { ptr, i64, i64 } { ptr @.str.6229, i64 24, i64 0 }, ptr %a8 - br label %endif9011 -else9010: - store { ptr, i64, i64 } { ptr @.str.6230, i64 25, i64 0 }, ptr %a8 - br label %endif9011 -endif9011: - br label %endif9004 -endif9004: - br label %endif9001 -endif9001: - br label %endif8990 -endif8990: - br label %endif8987 -endif8987: - br label %endif8984 -endif8984: - %t61 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t61, ptr %a62 - call void @finch_str_copy(ptr %a63, ptr %a62) - %t64 = load { ptr, i64, i64 }, ptr %a63 - %t65 = insertvalue %S.platform.Target zeroinitializer, { ptr, i64, i64 } %t64, 0 - 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.6232, 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.from9012 -logic.from9012: - br i1 %t72, label %logic.end9014, label %logic.rhs9013 -logic.rhs9013: + br label %logic.rend9502 +logic.rend9502: + br label %logic.end9501 +logic.end9501: + %t48 = phi i1 [ true, %logic.from9499 ], [ %t47, %logic.rend9502 ] + br i1 %t48, label %then9503, label %else9504 +then9503: + %t49 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.6467, i64 25, i64 0 }, ptr %a8 + store { ptr, i64, i64 } %t49, ptr %a50 + call void @finch_str_drop(ptr %a50) + br label %endif9505 +else9504: + %t51 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t51, ptr %a52 + store { ptr, i64, i64 } { ptr @.str.6468, i64 5, i64 0 }, ptr %a53 + %t54 = call i32 @finch_str_eq(ptr %a52, ptr %a53) + %t55 = icmp ne i32 %t54, 0 + br i1 %t55, label %then9506, label %endif9508 +then9506: + %t56 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t56, ptr %a57 + store { ptr, i64, i64 } { ptr @.str.6470, i64 7, i64 0 }, ptr %a59 + %t60 = call i32 @finch_str_starts(ptr %a57, ptr %a59) + %t61 = icmp ne i32 %t60, 0 + br label %logic.from9509 +logic.from9509: + br i1 %t61, label %logic.end9511, label %logic.rhs9510 +logic.rhs9510: + %t62 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t62, ptr %a63 + store { ptr, i64, i64 } { ptr @.str.6472, i64 5, i64 0 }, ptr %a65 + %t66 = call i32 @finch_str_starts(ptr %a63, ptr %a65) + %t67 = icmp ne i32 %t66, 0 + br label %logic.rend9512 +logic.rend9512: + br label %logic.end9511 +logic.end9511: + %t68 = phi i1 [ true, %logic.from9509 ], [ %t67, %logic.rend9512 ] + br i1 %t68, label %then9513, label %else9514 +then9513: + %t69 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.6473, i64 24, i64 0 }, ptr %a8 + store { ptr, i64, i64 } %t69, ptr %a70 + call void @finch_str_drop(ptr %a70) + br label %endif9515 +else9514: + %t71 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.6474, i64 25, i64 0 }, ptr %a8 + store { ptr, i64, i64 } %t71, ptr %a72 + call void @finch_str_drop(ptr %a72) + br label %endif9515 +endif9515: + br label %endif9508 +endif9508: + br label %endif9505 +endif9505: + br label %endif9494 +endif9494: + br label %endif9491 +endif9491: + br label %endif9488 +endif9488: %t73 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t73, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.6234, 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.rend9015 -logic.rend9015: - br label %logic.end9014 -logic.end9014: - %t79 = phi i1 [ true, %logic.from9012 ], [ %t78, %logic.rend9015 ] - br label %logic.from9016 -logic.from9016: - br i1 %t79, label %logic.end9018, label %logic.rhs9017 -logic.rhs9017: - %t80 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t80, ptr %a81 - store { ptr, i64, i64 } { ptr @.str.6236, 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.rend9019 -logic.rend9019: - br label %logic.end9018 -logic.end9018: - %t86 = phi i1 [ true, %logic.from9016 ], [ %t85, %logic.rend9019 ] - br label %logic.from9020 -logic.from9020: - br i1 %t86, label %logic.end9022, label %logic.rhs9021 -logic.rhs9021: - %t87 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t87, ptr %a88 - store { ptr, i64, i64 } { ptr @.str.6238, 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.rend9023 -logic.rend9023: - br label %logic.end9022 -logic.end9022: - %t93 = phi i1 [ true, %logic.from9020 ], [ %t92, %logic.rend9023 ] - %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.6240, 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.6242, 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.from9024 -logic.from9024: - br i1 %t107, label %logic.end9026, label %logic.rhs9025 -logic.rhs9025: - %t108 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t108, ptr %a109 - store { ptr, i64, i64 } { ptr @.str.6244, 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.rend9027 -logic.rend9027: - br label %logic.end9026 -logic.end9026: - %t114 = phi i1 [ true, %logic.from9024 ], [ %t113, %logic.rend9027 ] - br label %logic.from9028 -logic.from9028: - br i1 %t114, label %logic.end9030, label %logic.rhs9029 -logic.rhs9029: - %t115 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t115, ptr %a116 - store { ptr, i64, i64 } { ptr @.str.6246, 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.rend9031 -logic.rend9031: - br label %logic.end9030 -logic.end9030: - %t121 = phi i1 [ true, %logic.from9028 ], [ %t120, %logic.rend9031 ] - %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.6248, 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.from9032 -logic.from9032: - br i1 %t128, label %logic.end9034, label %logic.rhs9033 -logic.rhs9033: - %t129 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t129, ptr %a130 - store { ptr, i64, i64 } { ptr @.str.6250, 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.rend9035 -logic.rend9035: - br label %logic.end9034 -logic.end9034: - %t135 = phi i1 [ true, %logic.from9032 ], [ %t134, %logic.rend9035 ] - %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.6252, 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.from9036 -logic.from9036: - br i1 %t142, label %logic.end9038, label %logic.rhs9037 -logic.rhs9037: - %t143 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t143, ptr %a144 - store { ptr, i64, i64 } { ptr @.str.6254, 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.rend9039 -logic.rend9039: - br label %logic.end9038 -logic.end9038: - %t149 = phi i1 [ true, %logic.from9036 ], [ %t148, %logic.rend9039 ] - 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.6256, 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.from9040 -logic.from9040: - br i1 %t156, label %logic.end9042, label %logic.rhs9041 -logic.rhs9041: - %t157 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t157, ptr %a158 - store { ptr, i64, i64 } { ptr @.str.6258, 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.rend9043 -logic.rend9043: - br label %logic.end9042 -logic.end9042: - %t163 = phi i1 [ true, %logic.from9040 ], [ %t162, %logic.rend9043 ] - 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.from9044 -logic.from9044: - br i1 %t166, label %logic.end9046, label %logic.rhs9045 -logic.rhs9045: - %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.rend9047 -logic.rend9047: - br label %logic.end9046 -logic.end9046: - %t171 = phi i1 [ true, %logic.from9044 ], [ %t170, %logic.rend9047 ] - br label %logic.from9048 -logic.from9048: - br i1 %t171, label %logic.end9050, label %logic.rhs9049 -logic.rhs9049: - %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.rend9051 -logic.rend9051: - br label %logic.end9050 -logic.end9050: - %t176 = phi i1 [ true, %logic.from9048 ], [ %t175, %logic.rend9051 ] - %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.6259, i64 0, i64 0 }, ptr %t178 - %t179 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 1 + call void @finch_str_copy(ptr %a75, ptr %a74) + %t76 = load { ptr, i64, i64 }, ptr %a75 + %t77 = insertvalue %S.platform.Target zeroinitializer, { ptr, i64, i64 } %t76, 0 + store %S.platform.Target %t77, ptr %a78 + %t79 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t79, ptr %a80 + store { ptr, i64, i64 } { ptr @.str.6476, i64 7, i64 0 }, ptr %a82 + %t83 = call i64 @finch_str_find(ptr %a80, ptr %a82) + %t84 = icmp sge i64 %t83, 0 + br label %logic.from9516 +logic.from9516: + br i1 %t84, label %logic.end9518, label %logic.rhs9517 +logic.rhs9517: + %t85 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t85, ptr %a86 + store { ptr, i64, i64 } { ptr @.str.6478, i64 5, i64 0 }, ptr %a88 + %t89 = call i64 @finch_str_find(ptr %a86, ptr %a88) + %t90 = icmp sge i64 %t89, 0 + br label %logic.rend9519 +logic.rend9519: + br label %logic.end9518 +logic.end9518: + %t91 = phi i1 [ true, %logic.from9516 ], [ %t90, %logic.rend9519 ] + br label %logic.from9520 +logic.from9520: + br i1 %t91, label %logic.end9522, label %logic.rhs9521 +logic.rhs9521: + %t92 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t92, ptr %a93 + store { ptr, i64, i64 } { ptr @.str.6480, i64 4, i64 0 }, ptr %a95 + %t96 = call i64 @finch_str_find(ptr %a93, ptr %a95) + %t97 = icmp sge i64 %t96, 0 + br label %logic.rend9523 +logic.rend9523: + br label %logic.end9522 +logic.end9522: + %t98 = phi i1 [ true, %logic.from9520 ], [ %t97, %logic.rend9523 ] + br label %logic.from9524 +logic.from9524: + br i1 %t98, label %logic.end9526, label %logic.rhs9525 +logic.rhs9525: + %t99 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t99, ptr %a100 + store { ptr, i64, i64 } { ptr @.str.6482, i64 5, i64 0 }, ptr %a102 + %t103 = call i64 @finch_str_find(ptr %a100, ptr %a102) + %t104 = icmp sge i64 %t103, 0 + br label %logic.rend9527 +logic.rend9527: + br label %logic.end9526 +logic.end9526: + %t105 = phi i1 [ true, %logic.from9524 ], [ %t104, %logic.rend9527 ] + %t106 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 1 + store i1 %t105, ptr %t106 + %t107 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t107, ptr %a108 + store { ptr, i64, i64 } { ptr @.str.6484, i64 4, i64 0 }, ptr %a110 + %t111 = call i64 @finch_str_find(ptr %a108, ptr %a110) + %t112 = icmp sge i64 %t111, 0 + %t113 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 2 + store i1 %t112, ptr %t113 + %t114 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t114, ptr %a115 + store { ptr, i64, i64 } { ptr @.str.6486, i64 5, i64 0 }, ptr %a117 + %t118 = call i64 @finch_str_find(ptr %a115, ptr %a117) + %t119 = icmp sge i64 %t118, 0 + br label %logic.from9528 +logic.from9528: + br i1 %t119, label %logic.end9530, label %logic.rhs9529 +logic.rhs9529: + %t120 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t120, ptr %a121 + store { ptr, i64, i64 } { ptr @.str.6488, i64 6, i64 0 }, ptr %a123 + %t124 = call i64 @finch_str_find(ptr %a121, ptr %a123) + %t125 = icmp sge i64 %t124, 0 + br label %logic.rend9531 +logic.rend9531: + br label %logic.end9530 +logic.end9530: + %t126 = phi i1 [ true, %logic.from9528 ], [ %t125, %logic.rend9531 ] + br label %logic.from9532 +logic.from9532: + br i1 %t126, label %logic.end9534, label %logic.rhs9533 +logic.rhs9533: + %t127 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t127, ptr %a128 + store { ptr, i64, i64 } { ptr @.str.6490, i64 5, i64 0 }, ptr %a130 + %t131 = call i64 @finch_str_find(ptr %a128, ptr %a130) + %t132 = icmp sge i64 %t131, 0 + br label %logic.rend9535 +logic.rend9535: + br label %logic.end9534 +logic.end9534: + %t133 = phi i1 [ true, %logic.from9532 ], [ %t132, %logic.rend9535 ] + %t134 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 3 + store i1 %t133, ptr %t134 + %t135 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t135, ptr %a136 + store { ptr, i64, i64 } { ptr @.str.6492, i64 7, i64 0 }, ptr %a138 + %t139 = call i32 @finch_str_starts(ptr %a136, ptr %a138) + %t140 = icmp ne i32 %t139, 0 + br label %logic.from9536 +logic.from9536: + br i1 %t140, label %logic.end9538, label %logic.rhs9537 +logic.rhs9537: + %t141 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t141, ptr %a142 + store { ptr, i64, i64 } { ptr @.str.6494, i64 5, i64 0 }, ptr %a144 + %t145 = call i32 @finch_str_starts(ptr %a142, ptr %a144) + %t146 = icmp ne i32 %t145, 0 + br label %logic.rend9539 +logic.rend9539: + br label %logic.end9538 +logic.end9538: + %t147 = phi i1 [ true, %logic.from9536 ], [ %t146, %logic.rend9539 ] + %t148 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 4 + store i1 %t147, ptr %t148 + %t149 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t149, ptr %a150 + store { ptr, i64, i64 } { ptr @.str.6496, i64 7, i64 0 }, ptr %a152 + %t153 = call i32 @finch_str_starts(ptr %a150, ptr %a152) + %t154 = icmp ne i32 %t153, 0 + br label %logic.from9540 +logic.from9540: + br i1 %t154, label %logic.end9542, label %logic.rhs9541 +logic.rhs9541: + %t155 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t155, ptr %a156 + store { ptr, i64, i64 } { ptr @.str.6498, i64 5, i64 0 }, ptr %a158 + %t159 = call i32 @finch_str_starts(ptr %a156, ptr %a158) + %t160 = icmp ne i32 %t159, 0 + br label %logic.rend9543 +logic.rend9543: + br label %logic.end9542 +logic.end9542: + %t161 = phi i1 [ true, %logic.from9540 ], [ %t160, %logic.rend9543 ] + store i1 %t161, ptr %a162 + %t163 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t163, ptr %a164 + store { ptr, i64, i64 } { ptr @.str.6500, i64 5, i64 0 }, ptr %a166 + %t167 = call i64 @finch_str_find(ptr %a164, ptr %a166) + %t168 = icmp sge i64 %t167, 0 + br label %logic.from9544 +logic.from9544: + br i1 %t168, label %logic.end9546, label %logic.rhs9545 +logic.rhs9545: + %t169 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t169, ptr %a170 + store { ptr, i64, i64 } { ptr @.str.6502, i64 6, i64 0 }, ptr %a172 + %t173 = call i64 @finch_str_find(ptr %a170, ptr %a172) + %t174 = icmp sge i64 %t173, 0 + br label %logic.rend9547 +logic.rend9547: + br label %logic.end9546 +logic.end9546: + %t175 = phi i1 [ true, %logic.from9544 ], [ %t174, %logic.rend9547 ] + store i1 %t175, ptr %a176 + %t177 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 1 + %t178 = load i1, ptr %t177 + br label %logic.from9548 +logic.from9548: + br i1 %t178, label %logic.end9550, label %logic.rhs9549 +logic.rhs9549: + %t179 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 3 %t180 = load i1, ptr %t179 - br i1 %t180, label %then9052, label %endif9054 -then9052: - %t181 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 6 - store { ptr, i64, i64 } { ptr @.str.6260, i64 4, i64 0 }, ptr %t181 - br label %endif9054 -endif9054: - %t182 = extractvalue { ptr, i64, i64 } { ptr @.str.6261, i64 8, i64 0 }, 0 - %t183 = icmp eq ptr %t182, null - %t184 = select i1 %t183, ptr @.str.6262, 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) - %t187 = load { ptr, i64, i64 }, ptr %a186 - store { ptr, i64, i64 } %t187, ptr %a188 - call void @finch_str_copy(ptr %a189, ptr %a188) - %t190 = load { ptr, i64, i64 }, ptr %a189 - store { ptr, i64, i64 } %t190, ptr %a191 - %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 %then9055, label %else9056 -then9055: - %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 %endif9057 -else9056: - %t200 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 5 - %t201 = load i1, ptr %t200 - br label %logic.from9058 -logic.from9058: - br i1 %t201, label %logic.rhs9059, label %logic.end9060 -logic.rhs9059: - %t202 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 1 - %t203 = load i1, ptr %t202 - br label %logic.rend9061 -logic.rend9061: - br label %logic.end9060 -logic.end9060: - %t204 = phi i1 [ false, %logic.from9058 ], [ %t203, %logic.rend9061 ] - br i1 %t204, label %then9062, label %else9063 -then9062: - %t205 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 7 - store { ptr, i64, i64 } { ptr @.str.6263, i64 22, i64 0 }, ptr %t205 - br label %endif9064 -else9063: - %t206 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 5 - %t207 = load i1, ptr %t206 - br label %logic.from9065 -logic.from9065: - br i1 %t207, label %logic.rhs9066, label %logic.end9067 -logic.rhs9066: - %t208 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 4 - %t209 = load i1, ptr %t208 - br label %logic.rend9068 -logic.rend9068: - br label %logic.end9067 -logic.end9067: - %t210 = phi i1 [ false, %logic.from9065 ], [ %t209, %logic.rend9068 ] - br label %logic.from9069 -logic.from9069: - br i1 %t210, label %logic.rhs9070, label %logic.end9071 -logic.rhs9070: - %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.rend9072 -logic.rend9072: - br label %logic.end9071 -logic.end9071: - %t214 = phi i1 [ false, %logic.from9069 ], [ %t213, %logic.rend9072 ] - br i1 %t214, label %then9073, label %else9074 -then9073: - %t215 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 7 - store { ptr, i64, i64 } { ptr @.str.6264, i64 21, i64 0 }, ptr %t215 - br label %endif9075 -else9074: - %t216 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 5 - %t217 = load i1, ptr %t216 - br i1 %t217, label %then9076, label %else9077 -then9076: - %t218 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.6265, 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 %endif9078 -else9077: - %t224 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 7 - store { ptr, i64, i64 } { ptr @.str.6266, i64 2, i64 0 }, ptr %t224 - br label %endif9078 -endif9078: - br label %endif9075 -endif9075: - br label %endif9064 -endif9064: - br label %endif9057 -endif9057: - %t225 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 5 - %t226 = load i1, ptr %t225 - br label %logic.from9079 -logic.from9079: - br i1 %t226, label %logic.rhs9080, label %logic.end9081 -logic.rhs9080: - %t227 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 1 - %t228 = load i1, ptr %t227 - br label %logic.rend9082 -logic.rend9082: - br label %logic.end9081 -logic.end9081: - %t229 = phi i1 [ false, %logic.from9079 ], [ %t228, %logic.rend9082 ] - br i1 %t229, label %then9083, label %else9084 -then9083: - %t230 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 8 - store { ptr, i64, i64 } { ptr @.str.6267, i64 5, i64 0 }, ptr %t230 - br label %endif9085 -else9084: - %t231 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 5 + %t181 = load i1, ptr %a176 + %t182 = icmp ne i1 %t180, %t181 + br label %logic.rend9551 +logic.rend9551: + br label %logic.end9550 +logic.end9550: + %t183 = phi i1 [ true, %logic.from9548 ], [ %t182, %logic.rend9551 ] + br label %logic.from9552 +logic.from9552: + br i1 %t183, label %logic.end9554, label %logic.rhs9553 +logic.rhs9553: + %t184 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 4 + %t185 = load i1, ptr %t184 + %t186 = load i1, ptr %a162 + %t187 = icmp ne i1 %t185, %t186 + br label %logic.rend9555 +logic.rend9555: + br label %logic.end9554 +logic.end9554: + %t188 = phi i1 [ true, %logic.from9552 ], [ %t187, %logic.rend9555 ] + %t189 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 5 + store i1 %t188, ptr %t189 + %t190 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 6 + %t191 = load { ptr, i64, i64 }, ptr %t190 + store { ptr, i64, i64 } { ptr @.str.6503, i64 0, i64 0 }, ptr %t190 + store { ptr, i64, i64 } %t191, ptr %a192 + call void @finch_str_drop(ptr %a192) + %t193 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 1 + %t194 = load i1, ptr %t193 + br i1 %t194, label %then9556, label %endif9558 +then9556: + %t195 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 6 + %t196 = load { ptr, i64, i64 }, ptr %t195 + store { ptr, i64, i64 } { ptr @.str.6504, i64 4, i64 0 }, ptr %t195 + store { ptr, i64, i64 } %t196, ptr %a197 + call void @finch_str_drop(ptr %a197) + br label %endif9558 +endif9558: + %t198 = extractvalue { ptr, i64, i64 } { ptr @.str.6505, i64 8, i64 0 }, 0 + %t199 = icmp eq ptr %t198, null + %t200 = select i1 %t199, ptr @.str.6506, ptr %t198 + %t201 = call ptr @getenv(ptr %t200) + store { ptr, i64, i64 } zeroinitializer, ptr %a202 + call void @finch_str_from_c(ptr %a202, ptr %t201) + %t203 = load { ptr, i64, i64 }, ptr %a202 + store { ptr, i64, i64 } %t203, ptr %a204 + call void @finch_str_copy(ptr %a205, ptr %a204) + %t206 = load { ptr, i64, i64 }, ptr %a205 + store { ptr, i64, i64 } %t206, ptr %a207 + %t208 = getelementptr inbounds { ptr, i64, i64 }, ptr %a207, i32 0, i32 1 + %t209 = load i64, ptr %t208 + %t210 = icmp sgt i64 %t209, 0 + br i1 %t210, label %then9559, label %else9560 +then9559: + %t211 = load { ptr, i64, i64 }, ptr %a207 + %t212 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 7 + store { ptr, i64, i64 } %t211, ptr %a213 + call void @finch_str_copy(ptr %a214, ptr %a213) + %t215 = load { ptr, i64, i64 }, ptr %a214 + %t216 = load { ptr, i64, i64 }, ptr %t212 + store { ptr, i64, i64 } %t215, ptr %t212 + store { ptr, i64, i64 } %t216, ptr %a217 + call void @finch_str_drop(ptr %a217) + br label %endif9561 +else9560: + %t218 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 5 + %t219 = load i1, ptr %t218 + br label %logic.from9562 +logic.from9562: + br i1 %t219, label %logic.rhs9563, label %logic.end9564 +logic.rhs9563: + %t220 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 1 + %t221 = load i1, ptr %t220 + br label %logic.rend9565 +logic.rend9565: + br label %logic.end9564 +logic.end9564: + %t222 = phi i1 [ false, %logic.from9562 ], [ %t221, %logic.rend9565 ] + br i1 %t222, label %then9566, label %else9567 +then9566: + %t223 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 7 + %t224 = load { ptr, i64, i64 }, ptr %t223 + store { ptr, i64, i64 } { ptr @.str.6507, i64 22, i64 0 }, ptr %t223 + store { ptr, i64, i64 } %t224, ptr %a225 + call void @finch_str_drop(ptr %a225) + br label %endif9568 +else9567: + %t226 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 5 + %t227 = load i1, ptr %t226 + br label %logic.from9569 +logic.from9569: + br i1 %t227, label %logic.rhs9570, label %logic.end9571 +logic.rhs9570: + %t228 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 4 + %t229 = load i1, ptr %t228 + br label %logic.rend9572 +logic.rend9572: + br label %logic.end9571 +logic.end9571: + %t230 = phi i1 [ false, %logic.from9569 ], [ %t229, %logic.rend9572 ] + br label %logic.from9573 +logic.from9573: + br i1 %t230, label %logic.rhs9574, label %logic.end9575 +logic.rhs9574: + %t231 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 3 %t232 = load i1, ptr %t231 - br label %logic.from9086 -logic.from9086: - br i1 %t232, label %logic.rhs9087, label %logic.end9088 -logic.rhs9087: - %t233 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 4 - %t234 = load i1, ptr %t233 - br label %logic.rend9089 -logic.rend9089: - br label %logic.end9088 -logic.end9088: - %t235 = phi i1 [ false, %logic.from9086 ], [ %t234, %logic.rend9089 ] - br label %logic.from9090 -logic.from9090: - br i1 %t235, label %logic.rhs9091, label %logic.end9092 -logic.rhs9091: - %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.rend9093 -logic.rend9093: - br label %logic.end9092 -logic.end9092: - %t239 = phi i1 [ false, %logic.from9090 ], [ %t238, %logic.rend9093 ] - br i1 %t239, label %then9094, label %endif9096 -then9094: - %t240 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 8 - store { ptr, i64, i64 } { ptr @.str.6268, i64 13, i64 0 }, ptr %t240 - br label %endif9096 -endif9096: - br label %endif9085 -endif9085: - %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) - %t244 = load %S.platform.Target, ptr %a243 - ret %S.platform.Target %t244 + %t233 = xor i1 %t232, true + br label %logic.rend9576 +logic.rend9576: + br label %logic.end9575 +logic.end9575: + %t234 = phi i1 [ false, %logic.from9573 ], [ %t233, %logic.rend9576 ] + br i1 %t234, label %then9577, label %else9578 +then9577: + %t235 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 7 + %t236 = load { ptr, i64, i64 }, ptr %t235 + store { ptr, i64, i64 } { ptr @.str.6508, i64 21, i64 0 }, ptr %t235 + store { ptr, i64, i64 } %t236, ptr %a237 + call void @finch_str_drop(ptr %a237) + br label %endif9579 +else9578: + %t238 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 5 + %t239 = load i1, ptr %t238 + br i1 %t239, label %then9580, label %else9581 +then9580: + %t240 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.6509, i64 15, 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 + %t245 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 7 + %t246 = load { ptr, i64, i64 }, ptr %t245 + store { ptr, i64, i64 } %t244, ptr %t245 + store { ptr, i64, i64 } %t246, ptr %a247 + call void @finch_str_drop(ptr %a247) + br label %endif9582 +else9581: + %t248 = call { ptr, i64, i64 } @finch.host.pathSeparator() + store { ptr, i64, i64 } %t248, ptr %a249 + store { ptr, i64, i64 } { ptr @.str.6510, i64 1, i64 0 }, ptr %a250 + %t251 = call i32 @finch_str_eq(ptr %a249, ptr %a250) + %t252 = icmp ne i32 %t251, 0 + store { ptr, i64, i64 } %t248, ptr %a253 + call void @finch_str_drop(ptr %a253) + br i1 %t252, label %then9583, label %else9584 +then9583: + %t254 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 7 + %t255 = load { ptr, i64, i64 }, ptr %t254 + store { ptr, i64, i64 } { ptr @.str.6511, i64 5, i64 0 }, ptr %t254 + store { ptr, i64, i64 } %t255, ptr %a256 + call void @finch_str_drop(ptr %a256) + br label %endif9585 +else9584: + %t257 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 7 + %t258 = load { ptr, i64, i64 }, ptr %t257 + store { ptr, i64, i64 } { ptr @.str.6512, i64 2, i64 0 }, ptr %t257 + store { ptr, i64, i64 } %t258, ptr %a259 + call void @finch_str_drop(ptr %a259) + br label %endif9585 +endif9585: + br label %endif9582 +endif9582: + br label %endif9579 +endif9579: + br label %endif9568 +endif9568: + br label %endif9561 +endif9561: + %t260 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 5 + %t261 = load i1, ptr %t260 + br label %logic.from9586 +logic.from9586: + br i1 %t261, label %logic.rhs9587, label %logic.end9588 +logic.rhs9587: + %t262 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 1 + %t263 = load i1, ptr %t262 + br label %logic.rend9589 +logic.rend9589: + br label %logic.end9588 +logic.end9588: + %t264 = phi i1 [ false, %logic.from9586 ], [ %t263, %logic.rend9589 ] + br i1 %t264, label %then9590, label %else9591 +then9590: + %t265 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 8 + %t266 = load { ptr, i64, i64 }, ptr %t265 + store { ptr, i64, i64 } { ptr @.str.6513, i64 5, i64 0 }, ptr %t265 + store { ptr, i64, i64 } %t266, ptr %a267 + call void @finch_str_drop(ptr %a267) + br label %endif9592 +else9591: + %t268 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 5 + %t269 = load i1, ptr %t268 + br label %logic.from9593 +logic.from9593: + br i1 %t269, label %logic.rhs9594, label %logic.end9595 +logic.rhs9594: + %t270 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 4 + %t271 = load i1, ptr %t270 + br label %logic.rend9596 +logic.rend9596: + br label %logic.end9595 +logic.end9595: + %t272 = phi i1 [ false, %logic.from9593 ], [ %t271, %logic.rend9596 ] + br label %logic.from9597 +logic.from9597: + br i1 %t272, label %logic.rhs9598, label %logic.end9599 +logic.rhs9598: + %t273 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 3 + %t274 = load i1, ptr %t273 + %t275 = xor i1 %t274, true + br label %logic.rend9600 +logic.rend9600: + br label %logic.end9599 +logic.end9599: + %t276 = phi i1 [ false, %logic.from9597 ], [ %t275, %logic.rend9600 ] + br i1 %t276, label %then9601, label %endif9603 +then9601: + %t277 = getelementptr inbounds %S.platform.Target, ptr %a78, i32 0, i32 8 + %t278 = load { ptr, i64, i64 }, ptr %t277 + store { ptr, i64, i64 } { ptr @.str.6514, i64 13, i64 0 }, ptr %t277 + store { ptr, i64, i64 } %t278, ptr %a279 + call void @finch_str_drop(ptr %a279) + br label %endif9603 +endif9603: + br label %endif9592 +endif9592: + %t280 = load %S.platform.Target, ptr %a78 + call void @finch_str_drop(ptr %a207) + call void @finch_str_drop(ptr %a8) + call void @finch_str_drop(ptr %a3) + ret %S.platform.Target %t280 } define internal i1 @finch.platform.charIsSigned(%S.platform.Target %p0) { @@ -81952,28 +98759,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.from9097 -logic.from9097: - br i1 %t4, label %logic.end9099, label %logic.rhs9098 -logic.rhs9098: + br label %logic.from9604 +logic.from9604: + br i1 %t4, label %logic.end9606, label %logic.rhs9605 +logic.rhs9605: %t5 = getelementptr inbounds %S.platform.Target, ptr %a1, i32 0, i32 3 %t6 = load i1, ptr %t5 - br label %logic.rend9100 -logic.rend9100: - br label %logic.end9099 -logic.end9099: - %t7 = phi i1 [ true, %logic.from9097 ], [ %t6, %logic.rend9100 ] - br label %logic.from9101 -logic.from9101: - br i1 %t7, label %logic.end9103, label %logic.rhs9102 -logic.rhs9102: + br label %logic.rend9607 +logic.rend9607: + br label %logic.end9606 +logic.end9606: + %t7 = phi i1 [ true, %logic.from9604 ], [ %t6, %logic.rend9607 ] + br label %logic.from9608 +logic.from9608: + br i1 %t7, label %logic.end9610, label %logic.rhs9609 +logic.rhs9609: %t8 = getelementptr inbounds %S.platform.Target, ptr %a1, i32 0, i32 1 %t9 = load i1, ptr %t8 - br label %logic.rend9104 -logic.rend9104: - br label %logic.end9103 -logic.end9103: - %t10 = phi i1 [ true, %logic.from9101 ], [ %t9, %logic.rend9104 ] + br label %logic.rend9611 +logic.rend9611: + br label %logic.end9610 +logic.end9610: + %t10 = phi i1 [ true, %logic.from9608 ], [ %t9, %logic.rend9611 ] ret i1 %t10 } @@ -81992,14 +98799,14 @@ entry: store { ptr, i64, i64 } %p0, ptr %a1 store i32 2166136261, ptr %a2 store i64 0, ptr %a3 - br label %each.cond9105 -each.cond9105: + br label %each.cond9612 +each.cond9612: %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.body9106, label %each.end9108 -each.body9106: + br i1 %t7, label %each.body9613, label %each.end9615 +each.body9613: %t8 = load ptr, ptr %a1 %t9 = getelementptr inbounds i8, ptr %t8, i64 %t6 %t10 = load i8, ptr %t9 @@ -82010,22 +98817,22 @@ each.body9106: %t15 = xor i32 %t12, %t14 %t16 = mul i32 %t15, 16777619 store i32 %t16, ptr %a2 - br label %each.step9107 -each.step9107: + br label %each.step9614 +each.step9614: %t17 = load i64, ptr %a3 %t18 = add i64 %t17, 1 store i64 %t18, ptr %a3 - br label %each.cond9105 -each.end9108: - store { ptr, i64, i64 } { ptr @.str.6269, i64 16, i64 0 }, ptr %a19 + br label %each.cond9612 +each.end9615: + store { ptr, i64, i64 } { ptr @.str.6515, i64 16, i64 0 }, ptr %a19 store { ptr, i64, i64 } zeroinitializer, ptr %a20 store i64 0, ptr %a21 - br label %for.cond9109 -for.cond9109: + br label %for.cond9616 +for.cond9616: %t22 = load i64, ptr %a21 %t23 = icmp slt i64 %t22, 8 - br i1 %t23, label %for.body9110, label %for.end9112 -for.body9110: + br i1 %t23, label %for.body9617, label %for.end9619 +for.body9617: %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %a20, i32 0, i32 1 %t25 = load i32, ptr %a2 %t26 = load i64, ptr %a21 @@ -82038,11 +98845,11 @@ for.body9110: %t33 = load { ptr, i64, i64 }, ptr %a19 %t34 = extractvalue { ptr, i64, i64 } %t33, 1 %t35 = icmp uge i64 %t32, %t34 - br i1 %t35, label %range9113, label %inrange9114 -range9113: - call void @finch_panic_index(ptr @.str.6270, i64 17, i64 %t32, i64 %t34) + br i1 %t35, label %range9620, label %inrange9621 +range9620: + call void @finch_panic_index(ptr @.str.6516, i64 16, i64 %t32, i64 %t34) unreachable -inrange9114: +inrange9621: %t36 = extractvalue { ptr, i64, i64 } %t33, 0 %t37 = getelementptr inbounds i8, ptr %t36, i64 %t32 %t38 = load i8, ptr %t37 @@ -82055,114 +98862,29 @@ inrange9114: %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.step9111 -for.step9111: + br label %for.step9618 +for.step9618: %t45 = load i64, ptr %a21 %t46 = add i64 %t45, 1 store i64 %t46, ptr %a21 - br label %for.cond9109 -for.end9112: + br label %for.cond9616 +for.end9619: %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %a20, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.6271, i64 0, i64 0 }, ptr %a48 + store { ptr, i64, i64 } { ptr @.str.6517, i64 0, i64 0 }, ptr %a48 call void @finch_str_join(ptr %a49, ptr %a20, ptr %a48) %t50 = load { ptr, i64, i64 }, ptr %a49 + call void @finch.drop.arr_str(ptr %a20) + call void @finch_str_drop(ptr %a19) ret { ptr, i64, i64 } %t50 } define internal { ptr, i64, i64 } @finch.linker.quote({ 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 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a14 = 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.6274, i64 1, i64 0 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.6275, 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.6272, 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.6276, 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 -} - -define internal { ptr, i64, i64 } @finch.linker.cacheDir() { -entry: - %a5 = alloca { ptr, i64, i64 }, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a8 = alloca { ptr, i64, i64 }, align 16 - %a10 = 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 - %a23 = 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 - %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.6277, i64 14, i64 0 }, 0 - %t2 = icmp eq ptr %t1, null - %t3 = select i1 %t2, ptr @.str.6278, 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) - %t6 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t6, ptr %a7 - call void @finch_str_copy(ptr %a8, ptr %a7) - %t9 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t9, ptr %a10 - %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 %then9115, label %endif9117 -then9115: - %t14 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t14, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.6279, 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 -endif9117: - %t19 = extractvalue { ptr, i64, i64 } { ptr @.str.6280, i64 4, i64 0 }, 0 - %t20 = icmp eq ptr %t19, null - %t21 = select i1 %t20, ptr @.str.6281, 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) - %t24 = load { ptr, i64, i64 }, ptr %a23 - 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 { ptr, i64, i64 }, ptr %a28, i32 0, i32 1 - %t30 = load i64, ptr %t29 - %t31 = icmp sgt i64 %t30, 0 - br i1 %t31, label %then9118, label %endif9120 -then9118: - %t32 = load { ptr, i64, i64 }, ptr %a28 - store { ptr, i64, i64 } %t32, ptr %a34 - store { ptr, i64, i64 } { ptr @.str.6282, 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 -endif9120: - ret { ptr, i64, i64 } { ptr @.str.6283, i64 16, i64 0 } + %t3 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t2) + ret { ptr, i64, i64 } %t3 } define internal { ptr, i64, i64 } @finch.linker.libFlags({ ptr, i64, i64 } %p0, %S.platform.Target %p1) { @@ -82177,163 +98899,228 @@ entry: %a17 = alloca { ptr, i64, i64 }, align 16 %a18 = alloca { ptr, i64, i64 }, align 16 %a19 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 + %a20 = alloca { ptr, i64, i64 }, align 16 + %a21 = 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 - %a32 = alloca { ptr, i64, i64 }, align 16 + %a30 = 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 %a38 = alloca { ptr, i64, i64 }, align 16 - %a40 = 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 %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca i64, align 16 + %a46 = 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 + %a52 = alloca { ptr, i64, i64 }, align 16 + %a54 = alloca { ptr, i64, i64 }, align 16 + %a55 = 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 + %a62 = 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 - %a66 = 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 %a70 = 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 %a74 = alloca { ptr, i64, i64 }, align 16 %a75 = alloca { ptr, i64, i64 }, align 16 %a76 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 + %a77 = alloca { ptr, i64, i64 }, align 16 + %a80 = alloca { ptr, i64, i64 }, align 16 + %a81 = 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 + %a92 = alloca { ptr, i64, i64 }, align 16 + %a97 = alloca { ptr, i64, i64 }, align 16 + %a99 = 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 + %a110 = alloca { ptr, i64, i64 }, align 16 + %a111 = alloca { ptr, i64, i64 }, align 16 + %a112 = alloca { ptr, i64, i64 }, align 16 + %a115 = alloca { ptr, i64, i64 }, align 16 store { ptr, i64, i64 } %p0, ptr %a1 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.6285, i64 10, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.6519, 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 %then9121, label %endif9123 -then9121: + br i1 %t8, label %then9622, label %endif9624 +then9622: %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.6287, i64 42) + call void @finch_str_sub(ptr %a11, ptr %a10, i64 0, i64 %t14, ptr @.str.6521, i64 28) %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.6286, 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 -endif9123: - %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 %then9124, label %endif9126 -then9124: - store { ptr, i64, i64 } { ptr @.str.6288, 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.6289, i64 18, i64 0 }, ptr %a28 - store { ptr, i64, i64 } %t26, ptr %a29 + store { ptr, i64, i64 } %t15, ptr %a17 + call void @finch_str_drop(ptr %a17) + store { ptr, i64, i64 } { ptr @.str.6520, i64 11, i64 0 }, ptr %a19 + store { ptr, i64, i64 } %t16, ptr %a20 + call void @finch_str_concat(ptr %a18, ptr %a19, ptr %a20) + store { ptr, i64, i64 } %t16, ptr %a21 + call void @finch_str_drop(ptr %a21) + %t22 = load { ptr, i64, i64 }, ptr %a18 + ret { ptr, i64, i64 } %t22 +endif9624: + %t23 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 5 + %t24 = load i1, ptr %t23 + %t25 = xor i1 %t24, true + br i1 %t25, label %then9625, label %endif9627 +then9625: + %t26 = call { ptr, i64, i64 } @finch.host.tempDir() + store { ptr, i64, i64 } %t26, ptr %a28 + store { ptr, i64, i64 } { ptr @.str.6522, i64 17, i64 0 }, 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.6290, 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 + store { ptr, i64, i64 } %t26, ptr %a30 + call void @finch_str_drop(ptr %a30) + %t31 = load { ptr, i64, i64 }, ptr %a27 + %t32 = call i64 @finch.host.pid() + call void @finch_str_from_int(ptr %a33, i64 %t32) + %t34 = load { ptr, i64, i64 }, ptr %a33 + store { ptr, i64, i64 } %t31, ptr %a36 store { ptr, i64, i64 } %t34, 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.6291, 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 - call void @finch_str_copy(ptr %a44, ptr %a45) - %t46 = call i64 @finch_shell(ptr %a44) - store i64 %t46, ptr %a47 - %t48 = load i64, ptr %a47 - %t49 = icmp eq i64 %t48, 0 - br label %logic.from9127 -logic.from9127: - br i1 %t49, label %logic.rhs9128, label %logic.end9129 -logic.rhs9128: - %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.rend9130 -logic.rend9130: - br label %logic.end9129 -logic.end9129: - %t54 = phi i1 [ false, %logic.from9127 ], [ %t53, %logic.rend9130 ] - br i1 %t54, label %then9131, label %endif9133 -then9131: - %t55 = load { ptr, i64, i64 }, ptr %a24 - store { ptr, i64, i64 } %t55, ptr %a56 - store { ptr, i64, i64 } zeroinitializer, ptr %a57 - store { ptr, i64, i64 } zeroinitializer, ptr %a58 - %t59 = call i32 @finch_try_read_file(ptr %a57, ptr %a56, ptr %a58) - %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.failed9134, label %or.ok9135 -or.failed9134: - store { ptr, i64, i64 } %t61, ptr %a63 - br label %or.bend9136 -or.bend9136: - br label %or.end9137 -or.ok9135: - br label %or.end9137 -or.end9137: - %t64 = phi { ptr, i64, i64 } [ { ptr @.str.6292, i64 0, i64 0 }, %or.bend9136 ], [ %t62, %or.ok9135 ] - 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.6294, 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.6295, 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 - call void @finch_str_copy(ptr %a78, ptr %a79) - %t80 = call i64 @finch_shell(ptr %a78) - %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 %then9138, label %endif9140 -then9138: - %t84 = load { ptr, i64, i64 }, ptr %a68 - ret { ptr, i64, i64 } %t84 -endif9140: - br label %endif9133 -endif9133: - br label %endif9126 -endif9126: - %t85 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } { ptr @.str.6296, 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 - %t90 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t89) - ret { ptr, i64, i64 } %t90 + call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) + store { ptr, i64, i64 } %t31, ptr %a38 + call void @finch_str_drop(ptr %a38) + store { ptr, i64, i64 } %t34, ptr %a39 + call void @finch_str_drop(ptr %a39) + %t40 = load { ptr, i64, i64 }, ptr %a35 + store { ptr, i64, i64 } %t40, ptr %a42 + store { ptr, i64, i64 } { ptr @.str.6523, i64 4, i64 0 }, ptr %a43 + call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) + store { ptr, i64, i64 } %t40, ptr %a44 + call void @finch_str_drop(ptr %a44) + %t45 = load { ptr, i64, i64 }, ptr %a41 + store { ptr, i64, i64 } %t45, ptr %a46 + %t47 = load { ptr, i64, i64 }, ptr %a1 + %t48 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t47) + store { ptr, i64, i64 } { ptr @.str.6524, i64 18, i64 0 }, ptr %a50 + store { ptr, i64, i64 } %t48, ptr %a51 + call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) + store { ptr, i64, i64 } %t48, ptr %a52 + call void @finch_str_drop(ptr %a52) + %t53 = load { ptr, i64, i64 }, ptr %a49 + store { ptr, i64, i64 } %t53, ptr %a55 + store { ptr, i64, i64 } { ptr @.str.6525, i64 3, i64 0 }, ptr %a56 + call void @finch_str_concat(ptr %a54, ptr %a55, ptr %a56) + store { ptr, i64, i64 } %t53, ptr %a57 + call void @finch_str_drop(ptr %a57) + %t58 = load { ptr, i64, i64 }, ptr %a54 + %t59 = load { ptr, i64, i64 }, ptr %a46 + %t60 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t59) + store { ptr, i64, i64 } %t58, ptr %a62 + store { ptr, i64, i64 } %t60, ptr %a63 + call void @finch_str_concat(ptr %a61, ptr %a62, ptr %a63) + store { ptr, i64, i64 } %t58, ptr %a64 + call void @finch_str_drop(ptr %a64) + store { ptr, i64, i64 } %t60, ptr %a65 + call void @finch_str_drop(ptr %a65) + %t66 = load { ptr, i64, i64 }, ptr %a61 + store { ptr, i64, i64 } %t66, ptr %a68 + store { ptr, i64, i64 } { ptr @.str.6526, i64 4, i64 0 }, ptr %a69 + call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) + store { ptr, i64, i64 } %t66, ptr %a70 + call void @finch_str_drop(ptr %a70) + %t71 = load { ptr, i64, i64 }, ptr %a67 + %t72 = call { ptr, i64, i64 } @finch.host.nullDevice() + store { ptr, i64, i64 } %t71, ptr %a74 + store { ptr, i64, i64 } %t72, ptr %a75 + call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) + store { ptr, i64, i64 } %t71, ptr %a76 + call void @finch_str_drop(ptr %a76) + store { ptr, i64, i64 } %t72, ptr %a77 + call void @finch_str_drop(ptr %a77) + %t78 = load { ptr, i64, i64 }, ptr %a73 + %t79 = call i64 @finch.host.run({ ptr, i64, i64 } %t78) + store { ptr, i64, i64 } %t78, ptr %a80 + call void @finch_str_drop(ptr %a80) + store i64 %t79, ptr %a81 + %t82 = load i64, ptr %a81 + %t83 = icmp eq i64 %t82, 0 + br label %logic.from9628 +logic.from9628: + br i1 %t83, label %logic.rhs9629, label %logic.end9630 +logic.rhs9629: + %t84 = load { ptr, i64, i64 }, ptr %a46 + store { ptr, i64, i64 } %t84, ptr %a85 + %t86 = call i32 @finch_file_exists(ptr %a85) + %t87 = icmp ne i32 %t86, 0 + br label %logic.rend9631 +logic.rend9631: + br label %logic.end9630 +logic.end9630: + %t88 = phi i1 [ false, %logic.from9628 ], [ %t87, %logic.rend9631 ] + br i1 %t88, label %then9632, label %endif9634 +then9632: + %t89 = load { ptr, i64, i64 }, ptr %a46 + store { ptr, i64, i64 } %t89, ptr %a90 + store { ptr, i64, i64 } zeroinitializer, ptr %a91 + store { ptr, i64, i64 } zeroinitializer, ptr %a92 + %t93 = call i32 @finch_try_read_file(ptr %a91, ptr %a90, ptr %a92) + %t94 = icmp eq i32 %t93, 0 + %t95 = load { ptr, i64, i64 }, ptr %a92 + %t96 = load { ptr, i64, i64 }, ptr %a91 + br i1 %t94, label %or.failed9635, label %or.ok9636 +or.failed9635: + store { ptr, i64, i64 } %t95, ptr %a97 + call void @finch_str_drop(ptr %a97) + br label %or.bend9637 +or.bend9637: + br label %or.end9638 +or.ok9636: + br label %or.end9638 +or.end9638: + %t98 = phi { ptr, i64, i64 } [ { ptr @.str.6527, i64 0, i64 0 }, %or.bend9637 ], [ %t96, %or.ok9636 ] + store { ptr, i64, i64 } %t98, ptr %a99 + call void @finch_str_trim(ptr %a100, ptr %a99) + %t101 = load { ptr, i64, i64 }, ptr %a100 + store { ptr, i64, i64 } %t98, ptr %a102 + call void @finch_str_drop(ptr %a102) + store { ptr, i64, i64 } %t101, ptr %a103 + %t104 = load { ptr, i64, i64 }, ptr %a46 + call void @finch.host.remove({ ptr, i64, i64 } %t104) + %t105 = getelementptr inbounds { ptr, i64, i64 }, ptr %a103, i32 0, i32 1 + %t106 = load i64, ptr %t105 + %t107 = icmp sgt i64 %t106, 0 + br i1 %t107, label %then9639, label %endif9641 +then9639: + %t108 = load { ptr, i64, i64 }, ptr %a103 + call void @finch_str_drop(ptr %a46) + ret { ptr, i64, i64 } %t108 +endif9641: + call void @finch_str_drop(ptr %a103) + br label %endif9634 +endif9634: + call void @finch_str_drop(ptr %a46) + br label %endif9627 +endif9627: + %t109 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } { ptr @.str.6529, 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 + %t114 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t113) + store { ptr, i64, i64 } %t113, ptr %a115 + call void @finch_str_drop(ptr %a115) + ret { ptr, i64, i64 } %t114 } define internal { ptr, i64, i64 } @finch.linker.guessLib({ ptr, i64, i64 } %p0) { @@ -82349,16 +99136,19 @@ entry: %a16 = alloca { ptr, i64, i64 }, align 16 %a17 = 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 - %a30 = alloca i64, align 16 - %a33 = alloca i64, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 + %a27 = alloca { ptr, i64, i64 }, align 16 + %a28 = alloca { ptr, i64, i64 }, align 16 + %a32 = alloca i64, align 16 + %a35 = alloca i64, align 16 + %a50 = alloca { ptr, i64, i64 }, align 16 + %a51 = alloca { ptr, i64, i64 }, align 16 + %a55 = alloca { ptr, i64, i64 }, align 16 + %a82 = alloca { ptr, i64, i64 }, align 16 + %a83 = 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 store { ptr, i64, i64 } %p0, ptr %a1 %t2 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t2, ptr %a3 @@ -82367,145 +99157,155 @@ 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.6298, i64 1, i64 0 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.6531, i64 1, i64 0 }, ptr %a10 %t11 = call i64 @finch_str_find(ptr %a8, ptr %a10) store i64 %t11, ptr %a12 - br label %while.cond9141 -while.cond9141: + br label %while.cond9642 +while.cond9642: %t13 = load i64, ptr %a12 %t14 = icmp sge i64 %t13, 0 - br i1 %t14, label %while.body9142, label %while.end9143 -while.body9142: + br i1 %t14, label %while.body9643, label %while.end9644 +while.body9643: %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.6299, i64 63) + call void @finch_str_sub(ptr %a17, ptr %a16, i64 %t19, i64 %t21, ptr @.str.6532, i64 49) %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 } %t22, ptr %a6 store { ptr, i64, i64 } %t23, ptr %a24 - store { ptr, i64, i64 } { ptr @.str.6301, i64 1, i64 0 }, ptr %a26 - %t27 = call i64 @finch_str_find(ptr %a24, ptr %a26) - store i64 %t27, ptr %a12 - br label %while.cond9141 -while.end9143: - %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.cond9144 -for.cond9144: - %t34 = load i64, ptr %a33 - %t35 = icmp slt i64 %t34, %t32 - br i1 %t35, label %for.body9145, label %for.end9147 -for.body9145: - %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 %range9148, label %inrange9149 -range9148: - call void @finch_panic_index(ptr @.str.6302, i64 68, i64 %t36, i64 %t38) + call void @finch_str_drop(ptr %a24) + %t25 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t25, ptr %a26 + store { ptr, i64, i64 } { ptr @.str.6534, i64 1, i64 0 }, ptr %a28 + %t29 = call i64 @finch_str_find(ptr %a26, ptr %a28) + store i64 %t29, ptr %a12 + br label %while.cond9642 +while.end9644: + %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 + %t31 = load i64, ptr %t30 + store i64 %t31, ptr %a32 + %t33 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 + %t34 = load i64, ptr %t33 + store i64 0, ptr %a35 + br label %for.cond9645 +for.cond9645: + %t36 = load i64, ptr %a35 + %t37 = icmp slt i64 %t36, %t34 + br i1 %t37, label %for.body9646, label %for.end9648 +for.body9646: + %t38 = load i64, ptr %a35 + %t39 = load { ptr, i64, i64 }, ptr %a6 + %t40 = extractvalue { ptr, i64, i64 } %t39, 1 + %t41 = icmp uge i64 %t38, %t40 + br i1 %t41, label %range9649, label %inrange9650 +range9649: + call void @finch_panic_index(ptr @.str.6535, i64 54, i64 %t38, i64 %t40) unreachable -inrange9149: - %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 %then9150, label %endif9152 -then9150: - %t44 = load i64, ptr %a33 - store i64 %t44, ptr %a30 - br label %endif9152 -endif9152: - br label %for.step9146 -for.step9146: - %t45 = load i64, ptr %a33 - %t46 = add i64 %t45, 1 - store i64 %t46, ptr %a33 - br label %for.cond9144 -for.end9147: - %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.6303, i64 72) - %t51 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t51, ptr %a6 - br label %while.cond9153 -while.cond9153: - %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.from9156 -logic.from9156: - br i1 %t54, label %logic.rhs9157, label %logic.end9158 -logic.rhs9157: - %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 %range9159, label %inrange9160 -range9159: - call void @finch_panic_index(ptr @.str.6304, i64 73, i64 %t57, i64 %t59) +inrange9650: + %t42 = extractvalue { ptr, i64, i64 } %t39, 0 + %t43 = getelementptr inbounds i8, ptr %t42, i64 %t38 + %t44 = load i8, ptr %t43 + %t45 = icmp eq i8 %t44, 46 + br i1 %t45, label %then9651, label %endif9653 +then9651: + %t46 = load i64, ptr %a35 + store i64 %t46, ptr %a32 + br label %endif9653 +endif9653: + br label %for.step9647 +for.step9647: + %t47 = load i64, ptr %a35 + %t48 = add i64 %t47, 1 + store i64 %t48, ptr %a35 + br label %for.cond9645 +for.end9648: + %t49 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t49, ptr %a50 + %t52 = load i64, ptr %a32 + call void @finch_str_sub(ptr %a51, ptr %a50, i64 0, i64 %t52, ptr @.str.6536, i64 58) + %t53 = load { ptr, i64, i64 }, ptr %a51 + %t54 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t53, ptr %a6 + store { ptr, i64, i64 } %t54, ptr %a55 + call void @finch_str_drop(ptr %a55) + br label %while.cond9654 +while.cond9654: + %t56 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 + %t57 = load i64, ptr %t56 + %t58 = icmp sgt i64 %t57, 0 + br label %logic.from9657 +logic.from9657: + br i1 %t58, label %logic.rhs9658, label %logic.end9659 +logic.rhs9658: + %t59 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 + %t60 = load i64, ptr %t59 + %t61 = sub i64 %t60, 1 + %t62 = load { ptr, i64, i64 }, ptr %a6 + %t63 = extractvalue { ptr, i64, i64 } %t62, 1 + %t64 = icmp uge i64 %t61, %t63 + br i1 %t64, label %range9660, label %inrange9661 +range9660: + call void @finch_panic_index(ptr @.str.6537, i64 59, i64 %t61, i64 %t63) unreachable -inrange9160: - %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.rend9161 -logic.rend9161: - br label %logic.end9158 -logic.end9158: - %t65 = phi i1 [ false, %logic.from9156 ], [ %t64, %logic.rend9161 ] - br label %logic.from9162 -logic.from9162: - br i1 %t65, label %logic.rhs9163, label %logic.end9164 -logic.rhs9163: - %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 %range9165, label %inrange9166 -range9165: - call void @finch_panic_index(ptr @.str.6305, i64 73, i64 %t68, i64 %t70) +inrange9661: + %t65 = extractvalue { ptr, i64, i64 } %t62, 0 + %t66 = getelementptr inbounds i8, ptr %t65, i64 %t61 + %t67 = load i8, ptr %t66 + %t68 = icmp uge i8 %t67, 48 + br label %logic.rend9662 +logic.rend9662: + br label %logic.end9659 +logic.end9659: + %t69 = phi i1 [ false, %logic.from9657 ], [ %t68, %logic.rend9662 ] + br label %logic.from9663 +logic.from9663: + br i1 %t69, label %logic.rhs9664, label %logic.end9665 +logic.rhs9664: + %t70 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 + %t71 = load i64, ptr %t70 + %t72 = sub i64 %t71, 1 + %t73 = load { ptr, i64, i64 }, ptr %a6 + %t74 = extractvalue { ptr, i64, i64 } %t73, 1 + %t75 = icmp uge i64 %t72, %t74 + br i1 %t75, label %range9666, label %inrange9667 +range9666: + call void @finch_panic_index(ptr @.str.6538, i64 59, i64 %t72, i64 %t74) unreachable -inrange9166: - %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.rend9167 -logic.rend9167: - br label %logic.end9164 -logic.end9164: - %t76 = phi i1 [ false, %logic.from9162 ], [ %t75, %logic.rend9167 ] - br i1 %t76, label %while.body9154, label %while.end9155 -while.body9154: - %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.6306, i64 74) - %t83 = load { ptr, i64, i64 }, ptr %a79 - store { ptr, i64, i64 } %t83, ptr %a6 - br label %while.cond9153 -while.end9155: - %t84 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t84, ptr %a85 - call void @finch_str_lower(ptr %a86, ptr %a85) - %t87 = load { ptr, i64, i64 }, ptr %a86 - ret { ptr, i64, i64 } %t87 +inrange9667: + %t76 = extractvalue { ptr, i64, i64 } %t73, 0 + %t77 = getelementptr inbounds i8, ptr %t76, i64 %t72 + %t78 = load i8, ptr %t77 + %t79 = icmp ule i8 %t78, 57 + br label %logic.rend9668 +logic.rend9668: + br label %logic.end9665 +logic.end9665: + %t80 = phi i1 [ false, %logic.from9663 ], [ %t79, %logic.rend9668 ] + br i1 %t80, label %while.body9655, label %while.end9656 +while.body9655: + %t81 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t81, ptr %a82 + %t84 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 + %t85 = load i64, ptr %t84 + %t86 = sub i64 %t85, 1 + call void @finch_str_sub(ptr %a83, ptr %a82, i64 0, i64 %t86, ptr @.str.6539, i64 60) + %t87 = load { ptr, i64, i64 }, ptr %a83 + %t88 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t87, ptr %a6 + store { ptr, i64, i64 } %t88, ptr %a89 + call void @finch_str_drop(ptr %a89) + br label %while.cond9654 +while.end9656: + %t90 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t90, ptr %a91 + call void @finch_str_lower(ptr %a92, ptr %a91) + %t93 = load { ptr, i64, i64 }, ptr %a92 + call void @finch_str_drop(ptr %a6) + ret { ptr, i64, i64 } %t93 } define internal void @finch.linker.Names.add(ptr %self, { ptr, i64, i64 } %p0) { @@ -82521,10 +99321,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.from9168 -logic.from9168: - br i1 %t4, label %logic.rhs9169, label %logic.end9170 -logic.rhs9169: + br label %logic.from9669 +logic.from9669: + br i1 %t4, label %logic.rhs9670, label %logic.end9671 +logic.rhs9670: %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 @@ -82532,37 +99332,37 @@ logic.rhs9169: %t9 = load i64, ptr %t6 %t10 = load ptr, ptr %t5 store i64 0, ptr %a11 - br label %find.cond9171 -find.cond9171: + br label %find.cond9672 +find.cond9672: %t12 = load i64, ptr %a11 %t13 = icmp slt i64 %t12, %t9 - br i1 %t13, label %find.body9172, label %find.end9175 -find.body9172: + br i1 %t13, label %find.body9673, label %find.end9676 +find.body9673: %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.hit9173, label %find.next9174 -find.hit9173: + br i1 %t19, label %find.hit9674, label %find.next9675 +find.hit9674: store i64 %t12, ptr %a8 - br label %find.end9175 -find.next9174: + br label %find.end9676 +find.next9675: %t20 = add i64 %t12, 1 store i64 %t20, ptr %a11 - br label %find.cond9171 -find.end9175: + br label %find.cond9672 +find.end9676: %t21 = load i64, ptr %a8 %t22 = icmp sge i64 %t21, 0 %t23 = xor i1 %t22, true - br label %logic.rend9176 -logic.rend9176: - br label %logic.end9170 -logic.end9170: - %t24 = phi i1 [ false, %logic.from9168 ], [ %t23, %logic.rend9176 ] - br i1 %t24, label %then9177, label %endif9179 -then9177: + br label %logic.rend9677 +logic.rend9677: + br label %logic.end9671 +logic.end9671: + %t24 = phi i1 [ false, %logic.from9669 ], [ %t23, %logic.rend9677 ] + br i1 %t24, label %then9678, label %endif9680 +then9678: %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 @@ -82576,8 +99376,8 @@ then9177: %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t33, i64 %t31 store { ptr, i64, i64 } %t30, ptr %t34 store i64 %t32, ptr %t26 - br label %endif9179 -endif9179: + br label %endif9680 +endif9680: ret void } @@ -82598,8 +99398,9 @@ entry: %a31 = alloca { ptr, i64, i64 }, align 16 %a39 = alloca { ptr, i64, i64 }, align 16 %a41 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 + %a44 = alloca { ptr, i64, i64 }, align 16 %a50 = alloca { ptr, i64, i64 }, align 16 + %a51 = 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 @@ -82611,10 +99412,10 @@ entry: store i64 %t9, ptr %a10 %t11 = load i64, ptr %a10 %t12 = icmp slt i64 %t11, 0 - br i1 %t12, label %then9180, label %endif9182 -then9180: - ret { ptr, i64, i64 } { ptr @.str.6309, i64 0, i64 0 } -endif9182: + br i1 %t12, label %then9681, label %endif9683 +then9681: + ret { ptr, i64, i64 } { ptr @.str.6542, i64 0, i64 0 } +endif9683: %t13 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t13, ptr %a14 %t16 = load i64, ptr %a10 @@ -82623,31 +99424,31 @@ endif9182: %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.6310, i64 95) + call void @finch_str_sub(ptr %a15, ptr %a14, i64 %t19, i64 %t21, ptr @.str.6543, i64 81) %t22 = load { ptr, i64, i64 }, ptr %a15 store { ptr, i64, i64 } %t22, ptr %a23 store i64 0, ptr %a24 - br label %while.cond9183 -while.cond9183: + br label %while.cond9684 +while.cond9684: %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.from9186 -logic.from9186: - br i1 %t28, label %logic.rhs9187, label %logic.end9188 -logic.rhs9187: + br label %logic.from9687 +logic.from9687: + br i1 %t28, label %logic.rhs9688, label %logic.end9689 +logic.rhs9688: %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 %range9189, label %inrange9190 -range9189: - call void @finch_panic_index(ptr @.str.6312, i64 97, i64 %t32, i64 %t34) + br i1 %t35, label %range9690, label %inrange9691 +range9690: + call void @finch_panic_index(ptr @.str.6545, i64 83, i64 %t32, i64 %t34) unreachable -inrange9190: +inrange9691: %t36 = extractvalue { ptr, i64, i64 } %t33, 0 %t37 = getelementptr inbounds i8, ptr %t36, i64 %t32 %t38 = load i8, ptr %t37 @@ -82656,25 +99457,60 @@ inrange9190: store { ptr, i64, i64 } %t40, ptr %a41 %t42 = call i64 @finch_str_find(ptr %a30, ptr %a41) %t43 = icmp sge i64 %t42, 0 - %t44 = xor i1 %t43, true - br label %logic.rend9191 -logic.rend9191: - br label %logic.end9188 -logic.end9188: - %t45 = phi i1 [ false, %logic.from9186 ], [ %t44, %logic.rend9191 ] - br i1 %t45, label %while.body9184, label %while.end9185 -while.body9184: - %t46 = load i64, ptr %a24 - %t47 = add i64 %t46, 1 - store i64 %t47, ptr %a24 - br label %while.cond9183 -while.end9185: - %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.6313, i64 100) - %t52 = load { ptr, i64, i64 }, ptr %a50 - ret { ptr, i64, i64 } %t52 + store { ptr, i64, i64 } %t40, ptr %a44 + call void @finch_str_drop(ptr %a44) + %t45 = xor i1 %t43, true + br label %logic.rend9692 +logic.rend9692: + br label %logic.end9689 +logic.end9689: + %t46 = phi i1 [ false, %logic.from9687 ], [ %t45, %logic.rend9692 ] + br i1 %t46, label %while.body9685, label %while.end9686 +while.body9685: + %t47 = load i64, ptr %a24 + %t48 = add i64 %t47, 1 + store i64 %t48, ptr %a24 + br label %while.cond9684 +while.end9686: + %t49 = load { ptr, i64, i64 }, ptr %a23 + store { ptr, i64, i64 } %t49, ptr %a50 + %t52 = load i64, ptr %a24 + call void @finch_str_sub(ptr %a51, ptr %a50, i64 0, i64 %t52, ptr @.str.6546, i64 86) + %t53 = load { ptr, i64, i64 }, ptr %a51 + call void @finch_str_drop(ptr %a23) + ret { ptr, i64, i64 } %t53 +} + +define internal void @finch.drop.S_linker_Names(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.linker.Names, ptr %a, i32 0, i32 0 + call void @finch.drop.arr_str(ptr %t1) + ret void +} + +define internal void @finch.drop.arr_S_linker_Names(ptr %a) { +entry: + %a4 = alloca i64, align 16 + %t1 = load ptr, ptr %a + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 + %t3 = load i64, ptr %t2 + store i64 0, ptr %a4 + br label %n.cond9796 +n.cond9796: + %t5 = load i64, ptr %a4 + %t6 = icmp slt i64 %t5, %t3 + br i1 %t6, label %n.body9797, label %n.end9798 +n.body9797: + %t7 = getelementptr inbounds %S.linker.Names, ptr %t1, i64 %t5 + call void @finch.drop.S_linker_Names(ptr %t7) + %t8 = load i64, ptr %a4 + %t9 = add i64 %t8, 1 + store i64 %t9, ptr %a4 + br label %n.cond9796 +n.end9798: + call void @finch_arr_free(ptr %a) + ret void } define internal i64 @finch.linker.linkFailed({ ptr, i64, i64 } %p0, %S.cimport.CImports %p1, %S.platform.Target %p2) { @@ -82697,125 +99533,153 @@ entry: %a28 = alloca { ptr, i64, i64 }, align 16 %a29 = alloca { ptr, i64, i64 }, align 16 %a30 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 + %a35 = alloca { ptr, i64, i64 }, align 16 %a37 = alloca { ptr, i64, i64 }, align 16 %a38 = alloca { ptr, i64, i64 }, align 16 + %a39 = alloca { ptr, i64, i64 }, align 16 %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 %a46 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 + %a47 = alloca { ptr, i64, i64 }, align 16 + %a48 = alloca { ptr, i64, i64 }, align 16 %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 + %a55 = alloca { ptr, i64, i64 }, align 16 + %a56 = alloca { ptr, i64, i64 }, align 16 + %a57 = alloca { ptr, i64, i64 }, align 16 %a62 = 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 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = 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 + %a71 = alloca { ptr, i64, i64 }, align 16 + %a73 = alloca { ptr, i64, i64 }, align 16 + %a74 = alloca { ptr, i64, i64 }, align 16 + %a75 = 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 + %a88 = alloca { ptr, i64, i64 }, align 16 + %a89 = 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 - %a95 = 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 + %a99 = 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 - %a108 = alloca { ptr, i64, i64 }, align 16 + %a104 = alloca { ptr, i64, i64 }, align 16 + %a105 = 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 %a116 = alloca { ptr, i64, i64 }, align 16 + %a117 = alloca { ptr, i64, i64 }, align 16 + %a119 = alloca { ptr, i64, i64 }, align 16 %a120 = alloca { ptr, i64, i64 }, align 16 %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 + %a124 = alloca { ptr, i64, i64 }, align 16 %a128 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca i64, align 16 + %a129 = alloca { ptr, i64, i64 }, align 16 + %a130 = alloca { ptr, i64, i64 }, align 16 + %a135 = alloca { ptr, i64, i64 }, align 16 + %a136 = alloca { ptr, i64, i64 }, align 16 + %a141 = alloca { ptr, i64, i64 }, align 16 + %a155 = alloca { ptr, i64, i64 }, align 16 + %a156 = alloca { ptr, i64, i64 }, align 16 + %a157 = alloca { ptr, i64, i64 }, align 16 %a165 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 + %a168 = alloca i64, align 16 + %a176 = alloca { ptr, i64, i64 }, align 16 + %a178 = alloca { ptr, i64, i64 }, align 16 + %a179 = alloca { ptr, i64, i64 }, align 16 + %a180 = alloca { ptr, i64, i64 }, align 16 + %a182 = 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 - %a187 = alloca i64, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 + %a193 = alloca { ptr, i64, i64 }, align 16 + %a197 = alloca { ptr, i64, i64 }, align 16 + %a198 = alloca { ptr, i64, i64 }, align 16 + %a200 = alloca i64, align 16 %a208 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca i64, align 16 - %a223 = alloca i64, align 16 + %a209 = alloca { ptr, i64, i64 }, align 16 + %a212 = alloca { ptr, i64, i64 }, align 16 + %a217 = alloca { ptr, i64, i64 }, align 16 + %a220 = alloca { ptr, i64, i64 }, align 16 + %a221 = alloca { ptr, i64, i64 }, align 16 %a228 = alloca { ptr, i64, i64 }, align 16 %a229 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca i64, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca 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 - %a283 = alloca i64, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a306 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca { ptr, i64, i64 }, align 16 - %a309 = 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 + %a232 = alloca { ptr, i64, i64 }, align 16 + %a235 = alloca i64, align 16 + %a238 = alloca i64, align 16 + %a243 = alloca { ptr, i64, i64 }, align 16 + %a244 = alloca { ptr, i64, i64 }, align 16 + %a249 = alloca i64, align 16 + %a254 = alloca { ptr, i64, i64 }, align 16 + %a255 = alloca { ptr, i64, i64 }, align 16 + %a280 = alloca 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 + %a298 = alloca i64, align 16 + %a311 = alloca { ptr, i64, i64 }, align 16 + %a312 = alloca { ptr, i64, i64 }, align 16 %a321 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 + %a322 = 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 + %a331 = alloca { ptr, i64, i64 }, align 16 + %a336 = 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 - %a352 = 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 + %a344 = 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 + %a350 = 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 - %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 + %a373 = alloca { ptr, i64, i64 }, align 16 + %a378 = alloca { ptr, i64, i64 }, align 16 + %a380 = 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 %a385 = alloca { ptr, i64, i64 }, align 16 %a386 = alloca { ptr, i64, i64 }, align 16 %a387 = 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 - %a429 = alloca { ptr, i64, i64 }, align 16 - %a430 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 + %a390 = 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 + %a396 = alloca { ptr, i64, i64 }, align 16 + %a397 = alloca { ptr, i64, i64 }, align 16 + %a398 = 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 + %a410 = 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 + %a415 = alloca { ptr, i64, i64 }, align 16 + %a423 = 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 + %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 + %a462 = alloca { ptr, i64, i64 }, align 16 + %a470 = alloca { ptr, i64, i64 }, align 16 store { ptr, i64, i64 } %p0, ptr %a1 store %S.cimport.CImports %p1, ptr %a2 store %S.platform.Target %p2, ptr %a3 @@ -82823,19 +99687,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.6315, i64 1, i64 0 }, ptr %a9 + store { ptr, i64, i64 } { ptr @.str.6548, 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.cond9192 -each.cond9192: + br label %each.cond9693 +each.cond9693: %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.body9193, label %each.end9195 -each.body9193: + br i1 %t17, label %each.body9694, label %each.end9696 +each.body9694: %t18 = load ptr, ptr %a12 %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t18, i64 %t16 %t20 = load { ptr, i64, i64 }, ptr %t19 @@ -82847,636 +99711,713 @@ each.body9193: 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.6318, i64 24, i64 0 }, ptr %a30 + store { ptr, i64, i64 } { ptr @.str.6551, 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 %then9196, label %else9197 -then9196: + br i1 %t32, label %then9697, label %else9698 +then9697: %t33 = load { ptr, i64, i64 }, ptr %a26 - %t34 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t33, { ptr, i64, i64 } { ptr @.str.6319, i64 24, i64 0 }, { ptr, i64, i64 } { ptr @.str.6320, i64 1, i64 0 }) + %t34 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t33, { ptr, i64, i64 } { ptr @.str.6552, i64 24, i64 0 }, { ptr, i64, i64 } { ptr @.str.6553, i64 1, i64 0 }) call void @finch.linker.Names.add(ptr %a4, { ptr, i64, i64 } %t34) - br label %endif9198 -else9197: - %t35 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t35, ptr %a36 - store { ptr, i64, i64 } { ptr @.str.6322, 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 %then9199, label %else9200 -then9199: - %t41 = load { ptr, i64, i64 }, ptr %a26 - %t42 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t41, { ptr, i64, i64 } { ptr @.str.6323, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.6324, i64 2, i64 0 }) - call void @finch.linker.Names.add(ptr %a4, { ptr, i64, i64 } %t42) - br label %endif9201 -else9200: - %t43 = load { ptr, i64, i64 }, ptr %a26 + store { ptr, i64, i64 } %t34, ptr %a35 + call void @finch_str_drop(ptr %a35) + br label %endif9699 +else9698: + %t36 = load { ptr, i64, i64 }, ptr %a26 + store { ptr, i64, i64 } %t36, ptr %a37 + store { ptr, i64, i64 } { ptr @.str.6555, i64 18, i64 0 }, ptr %a39 + %t40 = call i64 @finch_str_find(ptr %a37, ptr %a39) + %t41 = icmp sge i64 %t40, 0 + br i1 %t41, label %then9700, label %else9701 +then9700: + %t42 = load { ptr, i64, i64 }, ptr %a26 + %t43 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t42, { ptr, i64, i64 } { ptr @.str.6556, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.6557, i64 2, i64 0 }) + call void @finch.linker.Names.add(ptr %a4, { ptr, i64, i64 } %t43) store { ptr, i64, i64 } %t43, ptr %a44 - store { ptr, i64, i64 } { ptr @.str.6326, 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 %then9202, label %else9203 -then9202: - %t49 = load { ptr, i64, i64 }, ptr %a26 - %t50 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t49, { ptr, i64, i64 } { ptr @.str.6327, i64 27, i64 0 }, { ptr, i64, i64 } { ptr @.str.6328, i64 3, i64 0 }) - call void @finch.linker.Names.add(ptr %a4, { ptr, i64, i64 } %t50) - br label %endif9204 -else9203: + call void @finch_str_drop(ptr %a44) + br label %endif9702 +else9701: + %t45 = load { ptr, i64, i64 }, ptr %a26 + store { ptr, i64, i64 } %t45, ptr %a46 + store { ptr, i64, i64 } { ptr @.str.6559, i64 27, i64 0 }, ptr %a48 + %t49 = call i64 @finch_str_find(ptr %a46, ptr %a48) + %t50 = icmp sge i64 %t49, 0 + br i1 %t50, label %then9703, label %else9704 +then9703: %t51 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t51, ptr %a52 - store { ptr, i64, i64 } { ptr @.str.6330, 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 %then9205, label %else9206 -then9205: - %t57 = load { ptr, i64, i64 }, ptr %a26 - %t58 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t57, { ptr, i64, i64 } { ptr @.str.6331, i64 14, i64 0 }, { ptr, i64, i64 } { ptr @.str.6332, i64 4, i64 0 }) - call void @finch.linker.Names.add(ptr %a5, { ptr, i64, i64 } %t58) - br label %endif9207 -else9206: - %t59 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t59, ptr %a60 - store { ptr, i64, i64 } { ptr @.str.6334, 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 %then9208, label %else9209 -then9208: - %t65 = load { ptr, i64, i64 }, ptr %a26 - %t66 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t65, { ptr, i64, i64 } { ptr @.str.6335, i64 24, i64 0 }, { ptr, i64, i64 } { ptr @.str.6336, i64 4, i64 0 }) - call void @finch.linker.Names.add(ptr %a5, { ptr, i64, i64 } %t66) - br label %endif9210 -else9209: - %t67 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t67, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.6338, 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 %then9211, label %else9212 -then9211: - %t73 = load { ptr, i64, i64 }, ptr %a26 - %t74 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t73, { ptr, i64, i64 } { ptr @.str.6339, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.6340, i64 1, i64 0 }) - call void @finch.linker.Names.add(ptr %a5, { ptr, i64, i64 } %t74) - br label %endif9213 -else9212: - %t75 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t75, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.6342, 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.from9214 -logic.from9214: - br i1 %t80, label %logic.rhs9215, label %logic.end9216 -logic.rhs9215: + %t52 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t51, { ptr, i64, i64 } { ptr @.str.6560, i64 27, i64 0 }, { ptr, i64, i64 } { ptr @.str.6561, i64 3, i64 0 }) + call void @finch.linker.Names.add(ptr %a4, { ptr, i64, i64 } %t52) + store { ptr, i64, i64 } %t52, ptr %a53 + call void @finch_str_drop(ptr %a53) + br label %endif9705 +else9704: + %t54 = load { ptr, i64, i64 }, ptr %a26 + store { ptr, i64, i64 } %t54, ptr %a55 + store { ptr, i64, i64 } { ptr @.str.6563, i64 14, i64 0 }, ptr %a57 + %t58 = call i64 @finch_str_find(ptr %a55, ptr %a57) + %t59 = icmp sge i64 %t58, 0 + br i1 %t59, label %then9706, label %else9707 +then9706: + %t60 = load { ptr, i64, i64 }, ptr %a26 + %t61 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t60, { ptr, i64, i64 } { ptr @.str.6564, i64 14, i64 0 }, { ptr, i64, i64 } { ptr @.str.6565, i64 4, i64 0 }) + call void @finch.linker.Names.add(ptr %a5, { ptr, i64, i64 } %t61) + store { ptr, i64, i64 } %t61, ptr %a62 + call void @finch_str_drop(ptr %a62) + br label %endif9708 +else9707: + %t63 = load { ptr, i64, i64 }, ptr %a26 + store { ptr, i64, i64 } %t63, ptr %a64 + store { ptr, i64, i64 } { ptr @.str.6567, i64 24, i64 0 }, ptr %a66 + %t67 = call i64 @finch_str_find(ptr %a64, ptr %a66) + %t68 = icmp sge i64 %t67, 0 + br i1 %t68, label %then9709, label %else9710 +then9709: + %t69 = load { ptr, i64, i64 }, ptr %a26 + %t70 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t69, { ptr, i64, i64 } { ptr @.str.6568, i64 24, i64 0 }, { ptr, i64, i64 } { ptr @.str.6569, i64 4, i64 0 }) + call void @finch.linker.Names.add(ptr %a5, { ptr, i64, i64 } %t70) + store { ptr, i64, i64 } %t70, ptr %a71 + call void @finch_str_drop(ptr %a71) + br label %endif9711 +else9710: + %t72 = load { ptr, i64, i64 }, ptr %a26 + store { ptr, i64, i64 } %t72, ptr %a73 + store { ptr, i64, i64 } { ptr @.str.6571, i64 13, i64 0 }, ptr %a75 + %t76 = call i64 @finch_str_find(ptr %a73, ptr %a75) + %t77 = icmp sge i64 %t76, 0 + br i1 %t77, label %then9712, label %else9713 +then9712: + %t78 = load { ptr, i64, i64 }, ptr %a26 + %t79 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t78, { ptr, i64, i64 } { ptr @.str.6572, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.6573, i64 1, i64 0 }) + call void @finch.linker.Names.add(ptr %a5, { ptr, i64, i64 } %t79) + store { ptr, i64, i64 } %t79, ptr %a80 + call void @finch_str_drop(ptr %a80) + br label %endif9714 +else9713: %t81 = load { ptr, i64, i64 }, ptr %a26 store { ptr, i64, i64 } %t81, ptr %a82 - store { ptr, i64, i64 } { ptr @.str.6344, i64 9, i64 0 }, ptr %a84 + store { ptr, i64, i64 } { ptr @.str.6575, i64 11, i64 0 }, ptr %a84 %t85 = call i64 @finch_str_find(ptr %a82, ptr %a84) %t86 = icmp sge i64 %t85, 0 - br label %logic.rend9217 -logic.rend9217: - br label %logic.end9216 -logic.end9216: - %t87 = phi i1 [ false, %logic.from9214 ], [ %t86, %logic.rend9217 ] - br i1 %t87, label %then9218, label %else9219 -then9218: - %t88 = load { ptr, i64, i64 }, ptr %a26 - %t89 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t88, { ptr, i64, i64 } { ptr @.str.6345, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6346, i64 1, i64 0 }) - store { ptr, i64, i64 } %t89, ptr %a91 - store { ptr, i64, i64 } { ptr @.str.6347, 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 %endif9220 -else9219: + br label %logic.from9715 +logic.from9715: + br i1 %t86, label %logic.rhs9716, label %logic.end9717 +logic.rhs9716: + %t87 = load { ptr, i64, i64 }, ptr %a26 + store { ptr, i64, i64 } %t87, ptr %a88 + store { ptr, i64, i64 } { ptr @.str.6577, i64 9, i64 0 }, ptr %a90 + %t91 = call i64 @finch_str_find(ptr %a88, ptr %a90) + %t92 = icmp sge i64 %t91, 0 + br label %logic.rend9718 +logic.rend9718: + br label %logic.end9717 +logic.end9717: + %t93 = phi i1 [ false, %logic.from9715 ], [ %t92, %logic.rend9718 ] + br i1 %t93, label %then9719, label %else9720 +then9719: %t94 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t94, ptr %a95 - store { ptr, i64, i64 } { ptr @.str.6349, 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.from9221 -logic.from9221: - br i1 %t99, label %logic.rhs9222, label %logic.end9223 -logic.rhs9222: - %t100 = load { ptr, i64, i64 }, ptr %a26 + %t95 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t94, { ptr, i64, i64 } { ptr @.str.6578, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6579, i64 1, i64 0 }) + store { ptr, i64, i64 } %t95, ptr %a97 + store { ptr, i64, i64 } { ptr @.str.6580, i64 10, i64 0 }, ptr %a98 + call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) + store { ptr, i64, i64 } %t95, ptr %a99 + call void @finch_str_drop(ptr %a99) + %t100 = load { ptr, i64, i64 }, ptr %a96 + call void @finch.linker.Names.add(ptr %a5, { ptr, i64, i64 } %t100) store { ptr, i64, i64 } %t100, ptr %a101 - store { ptr, i64, i64 } { ptr @.str.6351, 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.rend9224 -logic.rend9224: - br label %logic.end9223 -logic.end9223: - %t106 = phi i1 [ false, %logic.from9221 ], [ %t105, %logic.rend9224 ] - br i1 %t106, label %then9225, label %endif9227 -then9225: - %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.6354, 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.6352, i64 125) - %t115 = load { ptr, i64, i64 }, ptr %a109 + call void @finch_str_drop(ptr %a101) + br label %endif9721 +else9720: + %t102 = load { ptr, i64, i64 }, ptr %a26 + store { ptr, i64, i64 } %t102, ptr %a103 + store { ptr, i64, i64 } { ptr @.str.6582, i64 1, i64 0 }, ptr %a105 + %t106 = call i32 @finch_str_starts(ptr %a103, ptr %a105) + %t107 = icmp ne i32 %t106, 0 + br label %logic.from9722 +logic.from9722: + br i1 %t107, label %logic.rhs9723, label %logic.end9724 +logic.rhs9723: + %t108 = load { ptr, i64, i64 }, ptr %a26 + store { ptr, i64, i64 } %t108, ptr %a109 + store { ptr, i64, i64 } { ptr @.str.6584, i64 19, i64 0 }, ptr %a111 + %t112 = call i64 @finch_str_find(ptr %a109, ptr %a111) + %t113 = icmp sge i64 %t112, 0 + br label %logic.rend9725 +logic.rend9725: + br label %logic.end9724 +logic.end9724: + %t114 = phi i1 [ false, %logic.from9722 ], [ %t113, %logic.rend9725 ] + br i1 %t114, label %then9726, label %endif9728 +then9726: + %t115 = load { ptr, i64, i64 }, ptr %a26 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.from9228 -logic.from9228: - br i1 %t118, label %logic.rhs9229, label %logic.end9230 -logic.rhs9229: - %t119 = load { ptr, i64, i64 }, ptr %a116 - store { ptr, i64, i64 } %t119, ptr %a120 - store { ptr, i64, i64 } { ptr @.str.6356, 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.rend9231 -logic.rend9231: - br label %logic.end9230 -logic.end9230: - %t125 = phi i1 [ false, %logic.from9228 ], [ %t124, %logic.rend9231 ] - br i1 %t125, label %then9232, label %endif9234 -then9232: - %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.6357, i64 127) - %t131 = load { ptr, i64, i64 }, ptr %a128 - store { ptr, i64, i64 } %t131, ptr %a116 - br label %endif9234 -endif9234: - %t132 = load { ptr, i64, i64 }, ptr %a116 - call void @finch.linker.Names.add(ptr %a4, { ptr, i64, i64 } %t132) - br label %endif9227 -endif9227: - br label %endif9220 -endif9220: - br label %endif9213 -endif9213: - br label %endif9210 -endif9210: - br label %endif9207 -endif9207: - br label %endif9204 -endif9204: - br label %endif9201 -endif9201: - br label %endif9198 -endif9198: - br label %each.step9194 -each.step9194: - %t133 = load i64, ptr %a13 - %t134 = add i64 %t133, 1 - store i64 %t134, ptr %a13 - br label %each.cond9192 -each.end9195: - %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.from9235 -logic.from9235: - br i1 %t138, label %logic.rhs9236, label %logic.end9237 -logic.rhs9236: - %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.rend9238 -logic.rend9238: - br label %logic.end9237 -logic.end9237: - %t143 = phi i1 [ false, %logic.from9235 ], [ %t142, %logic.rend9238 ] - br i1 %t143, label %then9239, label %endif9241 -then9239: - %t144 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t144, ptr %a146 - store { ptr, i64, i64 } { ptr @.str.6358, 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.6359, ptr %t151 - %t154 = call i32 (ptr, ...) @printf(ptr @.str.6360, i32 %t150, ptr %t153) - %t155 = call i32 (ptr, ...) @printf(ptr @.str.6361) + %t118 = load { ptr, i64, i64 }, ptr %a26 + store { ptr, i64, i64 } %t118, ptr %a119 + store { ptr, i64, i64 } { ptr @.str.6587, i64 19, i64 0 }, ptr %a121 + %t122 = call i64 @finch_str_find(ptr %a119, ptr %a121) + call void @finch_str_sub(ptr %a117, ptr %a116, i64 1, i64 %t122, ptr @.str.6585, i64 111) + %t123 = load { ptr, i64, i64 }, ptr %a117 + store { ptr, i64, i64 } %t123, ptr %a124 + %t125 = getelementptr inbounds %S.platform.Target, ptr %a3, i32 0, i32 3 + %t126 = load i1, ptr %t125 + br label %logic.from9729 +logic.from9729: + br i1 %t126, label %logic.rhs9730, label %logic.end9731 +logic.rhs9730: + %t127 = load { ptr, i64, i64 }, ptr %a124 + store { ptr, i64, i64 } %t127, ptr %a128 + store { ptr, i64, i64 } { ptr @.str.6589, i64 1, i64 0 }, ptr %a130 + %t131 = call i32 @finch_str_starts(ptr %a128, ptr %a130) + %t132 = icmp ne i32 %t131, 0 + br label %logic.rend9732 +logic.rend9732: + br label %logic.end9731 +logic.end9731: + %t133 = phi i1 [ false, %logic.from9729 ], [ %t132, %logic.rend9732 ] + br i1 %t133, label %then9733, label %endif9735 +then9733: + %t134 = load { ptr, i64, i64 }, ptr %a124 + store { ptr, i64, i64 } %t134, ptr %a135 + %t137 = getelementptr inbounds { ptr, i64, i64 }, ptr %a124, i32 0, i32 1 + %t138 = load i64, ptr %t137 + call void @finch_str_sub(ptr %a136, ptr %a135, i64 1, i64 %t138, ptr @.str.6590, i64 113) + %t139 = load { ptr, i64, i64 }, ptr %a136 + %t140 = load { ptr, i64, i64 }, ptr %a124 + store { ptr, i64, i64 } %t139, ptr %a124 + store { ptr, i64, i64 } %t140, ptr %a141 + call void @finch_str_drop(ptr %a141) + br label %endif9735 +endif9735: + %t142 = load { ptr, i64, i64 }, ptr %a124 + call void @finch.linker.Names.add(ptr %a4, { ptr, i64, i64 } %t142) + call void @finch_str_drop(ptr %a124) + br label %endif9728 +endif9728: + br label %endif9721 +endif9721: + br label %endif9714 +endif9714: + br label %endif9711 +endif9711: + br label %endif9708 +endif9708: + br label %endif9705 +endif9705: + br label %endif9702 +endif9702: + br label %endif9699 +endif9699: + call void @finch_str_drop(ptr %a26) + br label %each.step9695 +each.step9695: + %t143 = load i64, ptr %a13 + %t144 = add i64 %t143, 1 + store i64 %t144, ptr %a13 + br label %each.cond9693 +each.end9696: + call void @finch.drop.arr_str(ptr %a12) + %t145 = getelementptr inbounds %S.linker.Names, ptr %a4, i32 0, i32 0 + %t146 = getelementptr inbounds { ptr, i64, i64 }, ptr %t145, i32 0, i32 1 + %t147 = load i64, ptr %t146 + %t148 = icmp eq i64 %t147, 0 + br label %logic.from9736 +logic.from9736: + br i1 %t148, label %logic.rhs9737, label %logic.end9738 +logic.rhs9737: + %t149 = getelementptr inbounds %S.linker.Names, ptr %a5, i32 0, i32 0 + %t150 = getelementptr inbounds { ptr, i64, i64 }, ptr %t149, i32 0, i32 1 + %t151 = load i64, ptr %t150 + %t152 = icmp eq i64 %t151, 0 + br label %logic.rend9739 +logic.rend9739: + br label %logic.end9738 +logic.end9738: + %t153 = phi i1 [ false, %logic.from9736 ], [ %t152, %logic.rend9739 ] + br i1 %t153, label %then9740, label %endif9742 +then9740: + %t154 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t154, ptr %a156 + store { ptr, i64, i64 } { ptr @.str.6591, i64 21, i64 0 }, ptr %a157 + call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) + %t158 = load { ptr, i64, i64 }, ptr %a155 + %t159 = extractvalue { ptr, i64, i64 } %t158, 1 + %t160 = trunc i64 %t159 to i32 + %t161 = extractvalue { ptr, i64, i64 } %t158, 0 + %t162 = icmp eq ptr %t161, null + %t163 = select i1 %t162, ptr @.str.6592, ptr %t161 + %t164 = call i32 (ptr, ...) @printf(ptr @.str.6593, i32 %t160, ptr %t163) + store { ptr, i64, i64 } %t158, ptr %a165 + call void @finch_str_drop(ptr %a165) + %t166 = call i32 (ptr, ...) @printf(ptr @.str.6594) + call void @finch.drop.S_linker_Names(ptr %a5) + call void @finch.drop.S_linker_Names(ptr %a4) ret i64 1 -endif9241: - %t156 = getelementptr inbounds %S.linker.Names, ptr %a5, i32 0, i32 0 - store i64 0, ptr %a157 - br label %each.cond9242 -each.cond9242: - %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.body9243, label %each.end9245 -each.body9243: - %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.6362, 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.6363, 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.6364, ptr %t177 - %t180 = call i32 (ptr, ...) @printf(ptr @.str.6365, i32 %t176, ptr %t179) - %t181 = call i32 (ptr, ...) @printf(ptr @.str.6366) - br label %each.step9244 -each.step9244: - %t182 = load i64, ptr %a157 - %t183 = add i64 %t182, 1 - store i64 %t183, ptr %a157 - br label %each.cond9242 -each.end9245: - 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.cond9246 -each.cond9246: - %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.body9247, label %each.end9249 -each.body9247: - %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.6367, 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 %then9250, label %endif9252 -then9250: - %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.missing9253, label %map.found9254 -map.missing9253: - 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.6368, i64 145, ptr %a207) +endif9742: + %t167 = getelementptr inbounds %S.linker.Names, ptr %a5, i32 0, i32 0 + store i64 0, ptr %a168 + br label %each.cond9743 +each.cond9743: + %t169 = getelementptr inbounds { ptr, i64, i64 }, ptr %t167, i32 0, i32 1 + %t170 = load i64, ptr %t169 + %t171 = load i64, ptr %a168 + %t172 = icmp slt i64 %t171, %t170 + br i1 %t172, label %each.body9744, label %each.end9746 +each.body9744: + %t173 = load ptr, ptr %t167 + %t174 = getelementptr inbounds { ptr, i64, i64 }, ptr %t173, i64 %t171 + %t175 = load { ptr, i64, i64 }, ptr %t174 + store { ptr, i64, i64 } %t175, ptr %a176 + %t177 = load { ptr, i64, i64 }, ptr %a176 + store { ptr, i64, i64 } { ptr @.str.6595, i64 20, 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.6596, i64 62, i64 0 }, ptr %a184 + call void @finch_str_concat(ptr %a182, ptr %a183, ptr %a184) + store { ptr, i64, i64 } %t181, ptr %a185 + call void @finch_str_drop(ptr %a185) + %t186 = load { ptr, i64, i64 }, ptr %a182 + %t187 = extractvalue { ptr, i64, i64 } %t186, 1 + %t188 = trunc i64 %t187 to i32 + %t189 = extractvalue { ptr, i64, i64 } %t186, 0 + %t190 = icmp eq ptr %t189, null + %t191 = select i1 %t190, ptr @.str.6597, ptr %t189 + %t192 = call i32 (ptr, ...) @printf(ptr @.str.6598, i32 %t188, ptr %t191) + store { ptr, i64, i64 } %t186, ptr %a193 + call void @finch_str_drop(ptr %a193) + %t194 = call i32 (ptr, ...) @printf(ptr @.str.6599) + br label %each.step9745 +each.step9745: + %t195 = load i64, ptr %a168 + %t196 = add i64 %t195, 1 + store i64 %t196, ptr %a168 + br label %each.cond9743 +each.end9746: + store { ptr, i64, i64 } zeroinitializer, ptr %a197 + store { ptr, i64, i64 } zeroinitializer, ptr %a198 + %t199 = getelementptr inbounds %S.linker.Names, ptr %a4, i32 0, i32 0 + store i64 0, ptr %a200 + br label %each.cond9747 +each.cond9747: + %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.body9748, label %each.end9750 +each.body9748: + %t205 = load ptr, ptr %t199 + %t206 = getelementptr inbounds { ptr, i64, i64 }, ptr %t205, i64 %t203 + %t207 = load { ptr, i64, i64 }, ptr %t206 + store { ptr, i64, i64 } %t207, ptr %a208 + store { ptr, i64, i64 } { ptr @.str.6600, i64 0, i64 0 }, ptr %a209 + %t210 = getelementptr inbounds %S.cimport.CImports, ptr %a2, i32 0, i32 0 + %t211 = load { ptr, i64, i64 }, ptr %a208 + store { ptr, i64, i64 } %t211, ptr %a212 + %t213 = call i64 @finch_map_find(ptr %t210, ptr %a212, 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) + %t214 = icmp sge i64 %t213, 0 + br i1 %t214, label %then9751, label %endif9753 +then9751: + %t215 = getelementptr inbounds %S.cimport.CImports, ptr %a2, i32 0, i32 0 + %t216 = load { ptr, i64, i64 }, ptr %a208 + store { ptr, i64, i64 } %t216, ptr %a217 + %t218 = call i64 @finch_map_find(ptr %t215, ptr %a217, 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) + %t219 = icmp slt i64 %t218, 0 + br i1 %t219, label %map.missing9754, label %map.found9755 +map.missing9754: + store { ptr, i64, i64 } zeroinitializer, ptr %a220 + store { ptr, i64, i64 } %t216, ptr %a221 + call void @finch_buf_str(ptr %a220, ptr %a221, i32 1) + call void @finch_map_missing(ptr @.str.6601, i64 131, ptr %a220) unreachable -map.found9254: - %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 - %t212 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t211, i32 0, i32 2 - %t213 = getelementptr inbounds %S.cimport.CFunc, ptr %t212, i32 0, i32 1 - %t214 = load { ptr, i64, i64 }, ptr %t213 - store { ptr, i64, i64 } %t214, ptr %a215 - 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 %endif9252 -endif9252: - %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.cond9255 -find.cond9255: - %t224 = load i64, ptr %a223 - %t225 = icmp slt i64 %t224, %t221 - br i1 %t225, label %find.body9256, label %find.end9259 -find.body9256: - %t226 = getelementptr inbounds { ptr, i64, i64 }, ptr %t222, i64 %t224 +map.found9755: + %t222 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t215, i32 0, i32 0 + %t223 = load ptr, ptr %t222 + %t224 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t223, i64 %t218 + %t225 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t224, i32 0, i32 2 + %t226 = getelementptr inbounds %S.cimport.CFunc, ptr %t225, i32 0, i32 1 %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.hit9257, label %find.next9258 -find.hit9257: - store i64 %t224, ptr %a220 - br label %find.end9259 -find.next9258: - %t232 = add i64 %t224, 1 - store i64 %t232, ptr %a223 - br label %find.cond9255 -find.end9259: - %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 %then9260, label %endif9262 -then9260: - %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 - call void @finch_str_copy(ptr %a240, ptr %a239) - %t241 = load { ptr, i64, i64 }, ptr %a240 - %t242 = load i64, ptr %t237 - %t243 = add i64 %t242, 1 - call void @finch_arr_reserve(ptr %a184, i64 %t243, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t244 = load ptr, ptr %a184 - %t245 = getelementptr inbounds { ptr, i64, i64 }, ptr %t244, i64 %t242 - store { ptr, i64, i64 } %t241, ptr %t245 - store i64 %t243, ptr %t237 - %t246 = getelementptr inbounds { ptr, i64, i64 }, ptr %a185, i32 0, i32 1 - %t247 = load i64, ptr %t246 - %t248 = add i64 %t247, 1 - call void @finch_arr_reserve(ptr %a185, i64 %t248, i64 ptrtoint (ptr getelementptr (%S.linker.Names, ptr null, i32 1) to i64)) - %t249 = load ptr, ptr %a185 - %t250 = getelementptr inbounds %S.linker.Names, ptr %t249, i64 %t247 - store %S.linker.Names zeroinitializer, ptr %t250 - store i64 %t248, ptr %t246 - %t251 = getelementptr inbounds { ptr, i64, i64 }, ptr %a184, i32 0, i32 1 - %t252 = load i64, ptr %t251 - %t253 = sub i64 %t252, 1 - store i64 %t253, ptr %a234 - br label %endif9262 -endif9262: - %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 %range9263, label %inrange9264 -range9263: - call void @finch_panic_index(ptr @.str.6369, i64 153, i64 %t254, i64 %t256) + call void @finch_str_copy(ptr %a229, ptr %a228) + %t230 = load { ptr, i64, i64 }, ptr %a229 + %t231 = load { ptr, i64, i64 }, ptr %a209 + store { ptr, i64, i64 } %t230, ptr %a209 + store { ptr, i64, i64 } %t231, ptr %a232 + call void @finch_str_drop(ptr %a232) + br label %endif9753 +endif9753: + %t233 = getelementptr inbounds { ptr, i64, i64 }, ptr %a197, i32 0, i32 1 + %t234 = load { ptr, i64, i64 }, ptr %a209 + store i64 -1, ptr %a235 + %t236 = load i64, ptr %t233 + %t237 = load ptr, ptr %a197 + store i64 0, ptr %a238 + br label %find.cond9756 +find.cond9756: + %t239 = load i64, ptr %a238 + %t240 = icmp slt i64 %t239, %t236 + br i1 %t240, label %find.body9757, label %find.end9760 +find.body9757: + %t241 = getelementptr inbounds { ptr, i64, i64 }, ptr %t237, i64 %t239 + %t242 = load { ptr, i64, i64 }, ptr %t241 + store { ptr, i64, i64 } %t242, ptr %a243 + store { ptr, i64, i64 } %t234, ptr %a244 + %t245 = call i32 @finch_str_eq(ptr %a243, ptr %a244) + %t246 = icmp ne i32 %t245, 0 + br i1 %t246, label %find.hit9758, label %find.next9759 +find.hit9758: + store i64 %t239, ptr %a235 + br label %find.end9760 +find.next9759: + %t247 = add i64 %t239, 1 + store i64 %t247, ptr %a238 + br label %find.cond9756 +find.end9760: + %t248 = load i64, ptr %a235 + store i64 %t248, ptr %a249 + %t250 = load i64, ptr %a249 + %t251 = icmp slt i64 %t250, 0 + br i1 %t251, label %then9761, label %endif9763 +then9761: + %t252 = getelementptr inbounds { ptr, i64, i64 }, ptr %a197, i32 0, i32 1 + %t253 = load { ptr, i64, i64 }, ptr %a209 + store { ptr, i64, i64 } %t253, ptr %a254 + call void @finch_str_copy(ptr %a255, ptr %a254) + %t256 = load { ptr, i64, i64 }, ptr %a255 + %t257 = load i64, ptr %t252 + %t258 = add i64 %t257, 1 + call void @finch_arr_reserve(ptr %a197, i64 %t258, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t259 = load ptr, ptr %a197 + %t260 = getelementptr inbounds { ptr, i64, i64 }, ptr %t259, i64 %t257 + store { ptr, i64, i64 } %t256, ptr %t260 + store i64 %t258, ptr %t252 + %t261 = getelementptr inbounds { ptr, i64, i64 }, ptr %a198, i32 0, i32 1 + %t262 = load i64, ptr %t261 + %t263 = add i64 %t262, 1 + call void @finch_arr_reserve(ptr %a198, i64 %t263, i64 ptrtoint (ptr getelementptr (%S.linker.Names, ptr null, i32 1) to i64)) + %t264 = load ptr, ptr %a198 + %t265 = getelementptr inbounds %S.linker.Names, ptr %t264, i64 %t262 + store %S.linker.Names zeroinitializer, ptr %t265 + store i64 %t263, ptr %t261 + %t266 = getelementptr inbounds { ptr, i64, i64 }, ptr %a197, i32 0, i32 1 + %t267 = load i64, ptr %t266 + %t268 = sub i64 %t267, 1 + store i64 %t268, ptr %a249 + br label %endif9763 +endif9763: + %t269 = load i64, ptr %a249 + %t270 = load { ptr, i64, i64 }, ptr %a198 + %t271 = extractvalue { ptr, i64, i64 } %t270, 1 + %t272 = icmp uge i64 %t269, %t271 + br i1 %t272, label %range9764, label %inrange9765 +range9764: + call void @finch_panic_index(ptr @.str.6602, i64 139, i64 %t269, i64 %t271) unreachable -inrange9264: - %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.step9248 -each.step9248: - %t261 = load i64, ptr %a187 - %t262 = add i64 %t261, 1 - store i64 %t262, ptr %a187 - br label %each.cond9246 -each.end9249: - %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.cond9265 -for.cond9265: - %t266 = load i64, ptr %a265 - %t267 = icmp slt i64 %t266, %t264 - br i1 %t267, label %for.body9266, label %for.end9268 -for.body9266: - %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 %range9269, label %inrange9270 -range9269: - call void @finch_panic_index(ptr @.str.6370, i64 156, i64 %t268, i64 %t270) +inrange9765: + %t273 = extractvalue { ptr, i64, i64 } %t270, 0 + %t274 = getelementptr inbounds %S.linker.Names, ptr %t273, i64 %t269 + %t275 = load { ptr, i64, i64 }, ptr %a208 + call void @finch.linker.Names.add(ptr %t274, { ptr, i64, i64 } %t275) + call void @finch_str_drop(ptr %a209) + br label %each.step9749 +each.step9749: + %t276 = load i64, ptr %a200 + %t277 = add i64 %t276, 1 + store i64 %t277, ptr %a200 + br label %each.cond9747 +each.end9750: + %t278 = getelementptr inbounds { ptr, i64, i64 }, ptr %a197, i32 0, i32 1 + %t279 = load i64, ptr %t278 + store i64 0, ptr %a280 + br label %for.cond9766 +for.cond9766: + %t281 = load i64, ptr %a280 + %t282 = icmp slt i64 %t281, %t279 + br i1 %t282, label %for.body9767, label %for.end9769 +for.body9767: + %t283 = load i64, ptr %a280 + %t284 = load { ptr, i64, i64 }, ptr %a198 + %t285 = extractvalue { ptr, i64, i64 } %t284, 1 + %t286 = icmp uge i64 %t283, %t285 + br i1 %t286, label %range9770, label %inrange9771 +range9770: + call void @finch_panic_index(ptr @.str.6603, i64 142, i64 %t283, i64 %t285) unreachable -inrange9270: - %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 - %t275 = load { ptr, i64, i64 }, ptr %t274 - store { ptr, i64, i64 } %t275, ptr %a276 - call void @finch.copy.arr_str(ptr %a277, ptr %a276) - %t278 = load { ptr, i64, i64 }, ptr %a277 - store { ptr, i64, i64 } %t278, ptr %a279 - store { ptr, i64, i64 } zeroinitializer, ptr %a280 - %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.cond9271 -for.cond9271: - %t284 = load i64, ptr %a283 - %t285 = icmp slt i64 %t284, %t282 - br i1 %t285, label %for.body9272, label %for.end9274 -for.body9272: - %t286 = load i64, ptr %a283 - %t287 = icmp slt i64 %t286, 3 - br i1 %t287, label %then9275, label %endif9277 -then9275: - %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 %range9278, label %inrange9279 -range9278: - call void @finch_panic_index(ptr @.str.6371, i64 160, i64 %t289, i64 %t291) +inrange9771: + %t287 = extractvalue { ptr, i64, i64 } %t284, 0 + %t288 = getelementptr inbounds %S.linker.Names, ptr %t287, i64 %t283 + %t289 = getelementptr inbounds %S.linker.Names, ptr %t288, i32 0, i32 0 + %t290 = load { ptr, i64, i64 }, ptr %t289 + store { ptr, i64, i64 } %t290, ptr %a291 + call void @finch.copy.arr_str(ptr %a292, ptr %a291) + %t293 = load { ptr, i64, i64 }, ptr %a292 + store { ptr, i64, i64 } %t293, ptr %a294 + store { ptr, i64, i64 } zeroinitializer, ptr %a295 + %t296 = getelementptr inbounds { ptr, i64, i64 }, ptr %a294, i32 0, i32 1 + %t297 = load i64, ptr %t296 + store i64 0, ptr %a298 + br label %for.cond9772 +for.cond9772: + %t299 = load i64, ptr %a298 + %t300 = icmp slt i64 %t299, %t297 + br i1 %t300, label %for.body9773, label %for.end9775 +for.body9773: + %t301 = load i64, ptr %a298 + %t302 = icmp slt i64 %t301, 3 + br i1 %t302, label %then9776, label %endif9778 +then9776: + %t303 = getelementptr inbounds { ptr, i64, i64 }, ptr %a295, i32 0, i32 1 + %t304 = load i64, ptr %a298 + %t305 = load { ptr, i64, i64 }, ptr %a294 + %t306 = extractvalue { ptr, i64, i64 } %t305, 1 + %t307 = icmp uge i64 %t304, %t306 + br i1 %t307, label %range9779, label %inrange9780 +range9779: + call void @finch_panic_index(ptr @.str.6604, i64 146, i64 %t304, i64 %t306) unreachable -inrange9279: - %t293 = extractvalue { ptr, i64, i64 } %t290, 0 - %t294 = getelementptr inbounds { ptr, i64, i64 }, ptr %t293, i64 %t289 - %t295 = load { ptr, i64, i64 }, ptr %t294 - store { ptr, i64, i64 } %t295, ptr %a296 - call void @finch_str_copy(ptr %a297, ptr %a296) - %t298 = load { ptr, i64, i64 }, ptr %a297 - %t299 = load i64, ptr %t288 - %t300 = add i64 %t299, 1 - call void @finch_arr_reserve(ptr %a280, i64 %t300, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t301 = load ptr, ptr %a280 - %t302 = getelementptr inbounds { ptr, i64, i64 }, ptr %t301, i64 %t299 - store { ptr, i64, i64 } %t298, ptr %t302 - store i64 %t300, ptr %t288 - br label %endif9277 -endif9277: - br label %for.step9273 -for.step9273: - %t303 = load i64, ptr %a283 - %t304 = add i64 %t303, 1 - store i64 %t304, ptr %a283 - br label %for.cond9271 -for.end9274: - %t305 = getelementptr inbounds { ptr, i64, i64 }, ptr %a280, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.6372, 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 %then9280, label %endif9282 -then9280: - %t313 = load { ptr, i64, i64 }, ptr %a309 - store { ptr, i64, i64 } %t313, ptr %a315 - store { ptr, i64, i64 } { ptr @.str.6373, 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 - %t319 = load i64, ptr %t318 - %t320 = sub i64 %t319, 3 - call void @finch_str_from_int(ptr %a321, i64 %t320) - %t322 = load { ptr, i64, i64 }, ptr %a321 - store { ptr, i64, i64 } %t317, 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.6374, 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 %endif9282 -endif9282: - %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 %range9283, label %inrange9284 -range9283: - call void @finch_panic_index(ptr @.str.6375, i64 167, i64 %t331, i64 %t333) +inrange9780: + %t308 = extractvalue { ptr, i64, i64 } %t305, 0 + %t309 = getelementptr inbounds { ptr, i64, i64 }, ptr %t308, i64 %t304 + %t310 = load { ptr, i64, i64 }, ptr %t309 + store { ptr, i64, i64 } %t310, ptr %a311 + call void @finch_str_copy(ptr %a312, ptr %a311) + %t313 = load { ptr, i64, i64 }, ptr %a312 + %t314 = load i64, ptr %t303 + %t315 = add i64 %t314, 1 + call void @finch_arr_reserve(ptr %a295, i64 %t315, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t316 = load ptr, ptr %a295 + %t317 = getelementptr inbounds { ptr, i64, i64 }, ptr %t316, i64 %t314 + store { ptr, i64, i64 } %t313, ptr %t317 + store i64 %t315, ptr %t303 + br label %endif9778 +endif9778: + br label %for.step9774 +for.step9774: + %t318 = load i64, ptr %a298 + %t319 = add i64 %t318, 1 + store i64 %t319, ptr %a298 + br label %for.cond9772 +for.end9775: + %t320 = getelementptr inbounds { ptr, i64, i64 }, ptr %a295, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.6605, i64 2, i64 0 }, ptr %a321 + call void @finch_str_join(ptr %a322, ptr %a295, ptr %a321) + %t323 = load { ptr, i64, i64 }, ptr %a322 + store { ptr, i64, i64 } %t323, ptr %a324 + %t325 = getelementptr inbounds { ptr, i64, i64 }, ptr %a294, i32 0, i32 1 + %t326 = load i64, ptr %t325 + %t327 = icmp sgt i64 %t326, 3 + br i1 %t327, label %then9781, label %endif9783 +then9781: + %t328 = load { ptr, i64, i64 }, ptr %a324 + store { ptr, i64, i64 } %t328, ptr %a330 + store { ptr, i64, i64 } { ptr @.str.6606, i64 5, i64 0 }, ptr %a331 + call void @finch_str_concat(ptr %a329, ptr %a330, ptr %a331) + %t332 = load { ptr, i64, i64 }, ptr %a329 + %t333 = getelementptr inbounds { ptr, i64, i64 }, ptr %a294, i32 0, i32 1 + %t334 = load i64, ptr %t333 + %t335 = sub i64 %t334, 3 + call void @finch_str_from_int(ptr %a336, i64 %t335) + %t337 = load { ptr, i64, i64 }, ptr %a336 + store { ptr, i64, i64 } %t332, ptr %a339 + store { ptr, i64, i64 } %t337, ptr %a340 + call void @finch_str_concat(ptr %a338, ptr %a339, ptr %a340) + store { ptr, i64, i64 } %t332, ptr %a341 + call void @finch_str_drop(ptr %a341) + store { ptr, i64, i64 } %t337, ptr %a342 + call void @finch_str_drop(ptr %a342) + %t343 = load { ptr, i64, i64 }, ptr %a338 + store { ptr, i64, i64 } %t343, ptr %a345 + store { ptr, i64, i64 } { ptr @.str.6607, i64 5, i64 0 }, ptr %a346 + call void @finch_str_concat(ptr %a344, ptr %a345, ptr %a346) + store { ptr, i64, i64 } %t343, ptr %a347 + call void @finch_str_drop(ptr %a347) + %t348 = load { ptr, i64, i64 }, ptr %a344 + %t349 = load { ptr, i64, i64 }, ptr %a324 + store { ptr, i64, i64 } %t348, ptr %a324 + store { ptr, i64, i64 } %t349, ptr %a350 + call void @finch_str_drop(ptr %a350) + br label %endif9783 +endif9783: + %t351 = load i64, ptr %a280 + %t352 = load { ptr, i64, i64 }, ptr %a197 + %t353 = extractvalue { ptr, i64, i64 } %t352, 1 + %t354 = icmp uge i64 %t351, %t353 + br i1 %t354, label %range9784, label %inrange9785 +range9784: + call void @finch_panic_index(ptr @.str.6608, i64 153, i64 %t351, i64 %t353) unreachable -inrange9284: - %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 %then9285, label %endif9287 -then9285: - %t340 = load { ptr, i64, i64 }, ptr %a309 - store { ptr, i64, i64 } { ptr @.str.6376, 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 - %t345 = extractvalue { ptr, i64, i64 } %t344, 1 - %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.6377, ptr %t347 - %t350 = call i32 (ptr, ...) @printf(ptr @.str.6378, i32 %t346, ptr %t349) - %t351 = call i32 (ptr, ...) @printf(ptr @.str.6379) - br label %for.step9267 -endif9287: - store { ptr, i64, i64 } { ptr @.str.6380, 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 %then9288, label %endif9290 -then9288: - store { ptr, i64, i64 } { ptr @.str.6381, i64 5, i64 0 }, ptr %a352 - br label %endif9290 -endif9290: - %t356 = load { ptr, i64, i64 }, ptr %a309 - store { ptr, i64, i64 } { ptr @.str.6382, 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.6383, i64 1, i64 0 }, ptr %a363 +inrange9785: + %t355 = extractvalue { ptr, i64, i64 } %t352, 0 + %t356 = getelementptr inbounds { ptr, i64, i64 }, ptr %t355, i64 %t351 + %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 %then9786, label %endif9788 +then9786: + %t360 = load { ptr, i64, i64 }, ptr %a324 + store { ptr, i64, i64 } { ptr @.str.6609, i64 25, i64 0 }, 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 - %t365 = load { ptr, i64, i64 }, ptr %a352 - store { ptr, i64, i64 } %t364, 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.6384, 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 %range9291, label %inrange9292 -range9291: - call void @finch_panic_index(ptr @.str.6385, i64 175, i64 %t374, i64 %t376) + %t365 = extractvalue { ptr, i64, i64 } %t364, 1 + %t366 = trunc i64 %t365 to i32 + %t367 = extractvalue { ptr, i64, i64 } %t364, 0 + %t368 = icmp eq ptr %t367, null + %t369 = select i1 %t368, ptr @.str.6610, ptr %t367 + %t370 = call i32 (ptr, ...) @printf(ptr @.str.6611, i32 %t366, ptr %t369) + store { ptr, i64, i64 } %t364, ptr %a371 + call void @finch_str_drop(ptr %a371) + %t372 = call i32 (ptr, ...) @printf(ptr @.str.6612) + call void @finch_str_drop(ptr %a324) + call void @finch.drop.arr_str(ptr %a295) + call void @finch.drop.arr_str(ptr %a294) + br label %for.step9768 +endif9788: + store { ptr, i64, i64 } { ptr @.str.6613, i64 4, i64 0 }, ptr %a373 + %t374 = getelementptr inbounds { ptr, i64, i64 }, ptr %a294, i32 0, i32 1 + %t375 = load i64, ptr %t374 + %t376 = icmp eq i64 %t375, 1 + br i1 %t376, label %then9789, label %endif9791 +then9789: + %t377 = load { ptr, i64, i64 }, ptr %a373 + store { ptr, i64, i64 } { ptr @.str.6614, i64 5, i64 0 }, ptr %a373 + store { ptr, i64, i64 } %t377, ptr %a378 + call void @finch_str_drop(ptr %a378) + br label %endif9791 +endif9791: + %t379 = load { ptr, i64, i64 }, ptr %a324 + store { ptr, i64, i64 } { ptr @.str.6615, i64 7, i64 0 }, ptr %a381 + store { ptr, i64, i64 } %t379, ptr %a382 + call void @finch_str_concat(ptr %a380, ptr %a381, ptr %a382) + %t383 = load { ptr, i64, i64 }, ptr %a380 + store { ptr, i64, i64 } %t383, ptr %a385 + store { ptr, i64, i64 } { ptr @.str.6616, i64 1, i64 0 }, ptr %a386 + call void @finch_str_concat(ptr %a384, ptr %a385, ptr %a386) + store { ptr, i64, i64 } %t383, ptr %a387 + call void @finch_str_drop(ptr %a387) + %t388 = load { ptr, i64, i64 }, ptr %a384 + %t389 = load { ptr, i64, i64 }, ptr %a373 + store { ptr, i64, i64 } %t388, ptr %a391 + store { ptr, i64, i64 } %t389, ptr %a392 + call void @finch_str_concat(ptr %a390, ptr %a391, ptr %a392) + store { ptr, i64, i64 } %t388, ptr %a393 + call void @finch_str_drop(ptr %a393) + %t394 = load { ptr, i64, i64 }, ptr %a390 + store { ptr, i64, i64 } %t394, ptr %a396 + store { ptr, i64, i64 } { ptr @.str.6617, i64 7, i64 0 }, ptr %a397 + call void @finch_str_concat(ptr %a395, ptr %a396, ptr %a397) + store { ptr, i64, i64 } %t394, ptr %a398 + call void @finch_str_drop(ptr %a398) + %t399 = load { ptr, i64, i64 }, ptr %a395 + %t400 = load i64, ptr %a280 + %t401 = load { ptr, i64, i64 }, ptr %a197 + %t402 = extractvalue { ptr, i64, i64 } %t401, 1 + %t403 = icmp uge i64 %t400, %t402 + br i1 %t403, label %range9792, label %inrange9793 +range9792: + call void @finch_panic_index(ptr @.str.6618, i64 161, i64 %t400, i64 %t402) unreachable -inrange9292: - %t378 = extractvalue { ptr, i64, i64 } %t375, 0 - %t379 = getelementptr inbounds { ptr, i64, i64 }, ptr %t378, i64 %t374 - %t380 = load { ptr, i64, i64 }, ptr %t379 - store { ptr, i64, i64 } %t373, ptr %a382 - store { ptr, i64, i64 } %t380, 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 %a386 - store { ptr, i64, i64 } { ptr @.str.6386, 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.6387, ptr %t391 - %t394 = call i32 (ptr, ...) @printf(ptr @.str.6388, i32 %t390, ptr %t393) - %t395 = call i32 (ptr, ...) @printf(ptr @.str.6389) - %t396 = extractvalue { ptr, i64, i64 } { ptr @.str.6390, i64 74, i64 0 }, 1 - %t397 = trunc i64 %t396 to i32 - %t398 = extractvalue { ptr, i64, i64 } { ptr @.str.6390, i64 74, i64 0 }, 0 - %t399 = icmp eq ptr %t398, null - %t400 = select i1 %t399, ptr @.str.6391, ptr %t398 - %t401 = call i32 (ptr, ...) @printf(ptr @.str.6392, i32 %t397, ptr %t400) - %t402 = call i32 (ptr, ...) @printf(ptr @.str.6393) - %t403 = extractvalue { ptr, i64, i64 } { ptr @.str.6394, i64 66, i64 0 }, 1 - %t404 = trunc i64 %t403 to i32 - %t405 = extractvalue { ptr, i64, i64 } { ptr @.str.6394, i64 66, i64 0 }, 0 - %t406 = icmp eq ptr %t405, null - %t407 = select i1 %t406, ptr @.str.6395, ptr %t405 - %t408 = call i32 (ptr, ...) @printf(ptr @.str.6396, i32 %t404, ptr %t407) - %t409 = call i32 (ptr, ...) @printf(ptr @.str.6397) - %t410 = extractvalue { ptr, i64, i64 } { ptr @.str.6398, i64 0, i64 0 }, 1 - %t411 = trunc i64 %t410 to i32 - %t412 = extractvalue { ptr, i64, i64 } { ptr @.str.6398, i64 0, i64 0 }, 0 - %t413 = icmp eq ptr %t412, null - %t414 = select i1 %t413, ptr @.str.6399, ptr %t412 - %t415 = call i32 (ptr, ...) @printf(ptr @.str.6400, i32 %t411, ptr %t414) - %t416 = call i32 (ptr, ...) @printf(ptr @.str.6401) - %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 %range9293, label %inrange9294 -range9293: - call void @finch_panic_index(ptr @.str.6403, i64 179, i64 %t417, i64 %t419) +inrange9793: + %t404 = extractvalue { ptr, i64, i64 } %t401, 0 + %t405 = getelementptr inbounds { ptr, i64, i64 }, ptr %t404, i64 %t400 + %t406 = load { ptr, i64, i64 }, ptr %t405 + store { ptr, i64, i64 } %t399, ptr %a408 + store { ptr, i64, i64 } %t406, ptr %a409 + call void @finch_str_concat(ptr %a407, ptr %a408, ptr %a409) + store { ptr, i64, i64 } %t399, ptr %a410 + call void @finch_str_drop(ptr %a410) + %t411 = load { ptr, i64, i64 }, ptr %a407 + store { ptr, i64, i64 } %t411, ptr %a413 + store { ptr, i64, i64 } { ptr @.str.6619, i64 31, i64 0 }, ptr %a414 + call void @finch_str_concat(ptr %a412, ptr %a413, ptr %a414) + store { ptr, i64, i64 } %t411, ptr %a415 + call void @finch_str_drop(ptr %a415) + %t416 = load { ptr, i64, i64 }, ptr %a412 + %t417 = extractvalue { ptr, i64, i64 } %t416, 1 + %t418 = trunc i64 %t417 to i32 + %t419 = extractvalue { ptr, i64, i64 } %t416, 0 + %t420 = icmp eq ptr %t419, null + %t421 = select i1 %t420, ptr @.str.6620, ptr %t419 + %t422 = call i32 (ptr, ...) @printf(ptr @.str.6621, i32 %t418, ptr %t421) + store { ptr, i64, i64 } %t416, ptr %a423 + call void @finch_str_drop(ptr %a423) + %t424 = call i32 (ptr, ...) @printf(ptr @.str.6622) + %t425 = extractvalue { ptr, i64, i64 } { ptr @.str.6623, i64 74, i64 0 }, 1 + %t426 = trunc i64 %t425 to i32 + %t427 = extractvalue { ptr, i64, i64 } { ptr @.str.6623, i64 74, i64 0 }, 0 + %t428 = icmp eq ptr %t427, null + %t429 = select i1 %t428, ptr @.str.6624, ptr %t427 + %t430 = call i32 (ptr, ...) @printf(ptr @.str.6625, i32 %t426, ptr %t429) + %t431 = call i32 (ptr, ...) @printf(ptr @.str.6626) + %t432 = extractvalue { ptr, i64, i64 } { ptr @.str.6627, i64 66, i64 0 }, 1 + %t433 = trunc i64 %t432 to i32 + %t434 = extractvalue { ptr, i64, i64 } { ptr @.str.6627, i64 66, i64 0 }, 0 + %t435 = icmp eq ptr %t434, null + %t436 = select i1 %t435, ptr @.str.6628, ptr %t434 + %t437 = call i32 (ptr, ...) @printf(ptr @.str.6629, i32 %t433, ptr %t436) + %t438 = call i32 (ptr, ...) @printf(ptr @.str.6630) + %t439 = extractvalue { ptr, i64, i64 } { ptr @.str.6631, i64 0, i64 0 }, 1 + %t440 = trunc i64 %t439 to i32 + %t441 = extractvalue { ptr, i64, i64 } { ptr @.str.6631, i64 0, i64 0 }, 0 + %t442 = icmp eq ptr %t441, null + %t443 = select i1 %t442, ptr @.str.6632, ptr %t441 + %t444 = call i32 (ptr, ...) @printf(ptr @.str.6633, i32 %t440, ptr %t443) + %t445 = call i32 (ptr, ...) @printf(ptr @.str.6634) + %t446 = load i64, ptr %a280 + %t447 = load { ptr, i64, i64 }, ptr %a197 + %t448 = extractvalue { ptr, i64, i64 } %t447, 1 + %t449 = icmp uge i64 %t446, %t448 + br i1 %t449, label %range9794, label %inrange9795 +range9794: + call void @finch_panic_index(ptr @.str.6636, i64 165, i64 %t446, i64 %t448) unreachable -inrange9294: - %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.6402, 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.6404, 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.6405, ptr %t435 - %t438 = call i32 (ptr, ...) @printf(ptr @.str.6406, i32 %t434, ptr %t437) - %t439 = call i32 (ptr, ...) @printf(ptr @.str.6407) - %t440 = extractvalue { ptr, i64, i64 } { ptr @.str.6408, i64 0, i64 0 }, 1 - %t441 = trunc i64 %t440 to i32 - %t442 = extractvalue { ptr, i64, i64 } { ptr @.str.6408, i64 0, i64 0 }, 0 - %t443 = icmp eq ptr %t442, null - %t444 = select i1 %t443, ptr @.str.6409, ptr %t442 - %t445 = call i32 (ptr, ...) @printf(ptr @.str.6410, i32 %t441, ptr %t444) - %t446 = call i32 (ptr, ...) @printf(ptr @.str.6411) - br label %for.step9267 -for.step9267: - %t447 = load i64, ptr %a265 - %t448 = add i64 %t447, 1 - store i64 %t448, ptr %a265 - br label %for.cond9265 -for.end9268: +inrange9795: + %t450 = extractvalue { ptr, i64, i64 } %t447, 0 + %t451 = getelementptr inbounds { ptr, i64, i64 }, ptr %t450, i64 %t446 + %t452 = load { ptr, i64, i64 }, ptr %t451 + %t453 = call { ptr, i64, i64 } @finch.linker.guessLib({ ptr, i64, i64 } %t452) + store { ptr, i64, i64 } { ptr @.str.6635, i64 12, i64 0 }, ptr %a455 + store { ptr, i64, i64 } %t453, ptr %a456 + call void @finch_str_concat(ptr %a454, ptr %a455, ptr %a456) + store { ptr, i64, i64 } %t453, ptr %a457 + call void @finch_str_drop(ptr %a457) + %t458 = load { ptr, i64, i64 }, ptr %a454 + store { ptr, i64, i64 } %t458, ptr %a460 + store { ptr, i64, i64 } { ptr @.str.6637, i64 1, i64 0 }, ptr %a461 + call void @finch_str_concat(ptr %a459, ptr %a460, ptr %a461) + store { ptr, i64, i64 } %t458, ptr %a462 + call void @finch_str_drop(ptr %a462) + %t463 = load { ptr, i64, i64 }, ptr %a459 + %t464 = extractvalue { ptr, i64, i64 } %t463, 1 + %t465 = trunc i64 %t464 to i32 + %t466 = extractvalue { ptr, i64, i64 } %t463, 0 + %t467 = icmp eq ptr %t466, null + %t468 = select i1 %t467, ptr @.str.6638, ptr %t466 + %t469 = call i32 (ptr, ...) @printf(ptr @.str.6639, i32 %t465, ptr %t468) + store { ptr, i64, i64 } %t463, ptr %a470 + call void @finch_str_drop(ptr %a470) + %t471 = call i32 (ptr, ...) @printf(ptr @.str.6640) + %t472 = extractvalue { ptr, i64, i64 } { ptr @.str.6641, i64 0, i64 0 }, 1 + %t473 = trunc i64 %t472 to i32 + %t474 = extractvalue { ptr, i64, i64 } { ptr @.str.6641, i64 0, i64 0 }, 0 + %t475 = icmp eq ptr %t474, null + %t476 = select i1 %t475, ptr @.str.6642, ptr %t474 + %t477 = call i32 (ptr, ...) @printf(ptr @.str.6643, i32 %t473, ptr %t476) + %t478 = call i32 (ptr, ...) @printf(ptr @.str.6644) + call void @finch_str_drop(ptr %a373) + call void @finch_str_drop(ptr %a324) + call void @finch.drop.arr_str(ptr %a295) + call void @finch.drop.arr_str(ptr %a294) + br label %for.step9768 +for.step9768: + %t479 = load i64, ptr %a280 + %t480 = add i64 %t479, 1 + store i64 %t480, ptr %a280 + br label %for.cond9766 +for.end9769: + call void @finch.drop.arr_S_linker_Names(ptr %a198) + call void @finch.drop.arr_str(ptr %a197) + call void @finch.drop.S_linker_Names(ptr %a5) + call void @finch.drop.S_linker_Names(ptr %a4) ret i64 1 } @@ -83499,111 +100440,95 @@ entry: %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 + %a32 = alloca { ptr, i64, i64 }, align 16 %a34 = alloca { ptr, i64, i64 }, align 16 %a35 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 + %a36 = alloca { ptr, i64, i64 }, align 16 + %a37 = 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 %a43 = alloca { ptr, i64, i64 }, align 16 %a44 = alloca { ptr, i64, i64 }, align 16 - %a46 = 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 + %a50 = alloca { ptr, i64, i64 }, align 16 %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = 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 + %a54 = alloca { ptr, i64, i64 }, align 16 + %a62 = alloca { ptr, i64, i64 }, align 16 %a63 = alloca { ptr, i64, i64 }, align 16 %a64 = 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 + %a70 = 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 - %a79 = 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 - %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 - %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 + %a98 = 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 %a105 = 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 %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 %a111 = 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 + %a112 = 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 %a120 = alloca { ptr, i64, i64 }, align 16 %a121 = alloca { ptr, i64, i64 }, align 16 + %a122 = 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 %a127 = 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 + %a132 = alloca { ptr, i64, i64 }, align 16 %a133 = alloca { ptr, i64, i64 }, align 16 %a134 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca i64, align 16 + %a135 = alloca { ptr, i64, i64 }, align 16 + %a137 = 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 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 + %a143 = alloca { ptr, i64, i64 }, align 16 + %a144 = alloca i64, align 16 + %a148 = alloca { ptr, i64, i64 }, align 16 %a149 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 + %a150 = 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 - %a164 = alloca { ptr, i64, i64 }, align 16 %a166 = alloca { ptr, i64, i64 }, align 16 %a167 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 + %a168 = alloca { ptr, i64, i64 }, align 16 + %a169 = alloca { ptr, i64, i64 }, align 16 %a171 = alloca { ptr, i64, i64 }, align 16 %a172 = alloca { ptr, i64, i64 }, align 16 - %a175 = 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 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = 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 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 + %a173 = alloca { ptr, i64, i64 }, align 16 + %a174 = alloca { ptr, i64, i64 }, align 16 store { ptr, i64, i64 } %p0, ptr %a1 store %S.platform.Target %p1, ptr %a2 store { ptr, i64, i64 } %p2, ptr %a3 @@ -83615,17 +100540,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.failed9295, label %try.ok9296 -try.failed9295: + br i1 %t9, label %try.failed9799, label %try.ok9800 +try.failed9799: %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.ok9296: +try.ok9800: store { ptr, i64, i64 } %t11, ptr %a13 - %t14 = call { ptr, i64, i64 } @finch.linker.cacheDir() + %t14 = call { ptr, i64, i64 } @finch.host.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.6412, i64 4, i64 0 }, ptr %a19 + store { ptr, i64, i64 } { ptr @.str.6645, 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 @@ -83639,215 +100564,222 @@ try.ok9296: store { ptr, i64, i64 } %t26, 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.6413, 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) - store { ptr, i64, i64 } %t20, 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.6414, 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 - %t47 = load { ptr, i64, i64 }, ptr %a46 - 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 %then9297, label %endif9299 -then9297: - %t51 = load { ptr, i64, i64 }, ptr %a46 + store { ptr, i64, i64 } %t26, ptr %a32 + call void @finch_str_drop(ptr %a32) + %t33 = load { ptr, i64, i64 }, ptr %a29 + store { ptr, i64, i64 } %t33, ptr %a35 + store { ptr, i64, i64 } { ptr @.str.6646, i64 3, i64 0 }, ptr %a36 + call void @finch_str_concat(ptr %a34, ptr %a35, ptr %a36) + store { ptr, i64, i64 } %t33, ptr %a37 + call void @finch_str_drop(ptr %a37) + %t38 = load { ptr, i64, i64 }, ptr %a34 + %t39 = call { ptr, i64, i64 } @finch.linker.fingerprint({ ptr, i64, i64 } %t38) + store { ptr, i64, i64 } %t38, ptr %a40 + call void @finch_str_drop(ptr %a40) + store { ptr, i64, i64 } %t20, ptr %a42 + store { ptr, i64, i64 } %t39, ptr %a43 + call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) + store { ptr, i64, i64 } %t20, ptr %a44 + call void @finch_str_drop(ptr %a44) + store { ptr, i64, i64 } %t39, ptr %a45 + call void @finch_str_drop(ptr %a45) + %t46 = load { ptr, i64, i64 }, ptr %a41 + store { ptr, i64, i64 } %t46, ptr %a48 + store { ptr, i64, i64 } { ptr @.str.6647, i64 2, i64 0 }, ptr %a49 + call void @finch_str_concat(ptr %a47, ptr %a48, ptr %a49) + store { ptr, i64, i64 } %t46, ptr %a50 + call void @finch_str_drop(ptr %a50) + %t51 = load { ptr, i64, i64 }, ptr %a47 store { ptr, i64, i64 } %t51, ptr %a52 - call void @finch_str_copy(ptr %a53, ptr %a52) - %t54 = load { ptr, i64, i64 }, ptr %a53 - %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 -endif9299: - %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.6415, 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 - store { ptr, i64, i64 } %t62, ptr %a64 - call void @finch_str_copy(ptr %a63, ptr %a64) - %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.6416, 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() - %t72 = sext i32 %t71 to i64 - call void @finch_str_from_int(ptr %a73, i64 %t72) - %t74 = load { ptr, i64, i64 }, ptr %a73 - store { ptr, i64, i64 } %t70, ptr %a76 - store { ptr, i64, i64 } %t74, ptr %a77 - 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.6417, 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 %then9300, label %endif9302 -then9300: - store { ptr, i64, i64 } { ptr @.str.6418, i64 0, i64 0 }, ptr %a80 - br label %endif9302 -endif9302: - %t83 = load { ptr, i64, i64 }, ptr %a79 - store { ptr, i64, i64 } %t83, ptr %a85 - store { ptr, i64, i64 } { ptr @.str.6419, 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.6420, 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 - store { ptr, i64, i64 } %t93, ptr %a96 - store { ptr, i64, i64 } %t94, 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 %a100 - store { ptr, i64, i64 } { ptr @.str.6421, i64 4, i64 0 }, ptr %a101 - call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) - %t102 = load { ptr, i64, i64 }, ptr %a99 + %t53 = load { ptr, i64, i64 }, ptr %a52 + store { ptr, i64, i64 } %t53, ptr %a54 + %t55 = call i32 @finch_file_exists(ptr %a54) + %t56 = icmp ne i32 %t55, 0 + br i1 %t56, label %then9801, label %endif9803 +then9801: + %t57 = load { ptr, i64, i64 }, ptr %a52 + call void @finch_str_drop(ptr %a15) + call void @finch_str_drop(ptr %a13) + %t58 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 + %t59 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t58, { ptr, i64, i64 } %t57, 1 + ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t59 +endif9803: + %t60 = load { ptr, i64, i64 }, ptr %a15 + call void @finch.host.makeDirs({ ptr, i64, i64 } %t60) + %t61 = load { ptr, i64, i64 }, ptr %a52 + store { ptr, i64, i64 } %t61, ptr %a63 + store { ptr, i64, i64 } { ptr @.str.6648, 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 = call i64 @finch.host.pid() + call void @finch_str_from_int(ptr %a67, i64 %t66) + %t68 = load { ptr, i64, i64 }, ptr %a67 + 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) + store { ptr, i64, i64 } %t65, ptr %a72 + call void @finch_str_drop(ptr %a72) + store { ptr, i64, i64 } %t68, ptr %a73 + call void @finch_str_drop(ptr %a73) + %t74 = load { ptr, i64, i64 }, ptr %a69 + store { ptr, i64, i64 } %t74, ptr %a75 + store { ptr, i64, i64 } { ptr @.str.6649, i64 6, i64 0 }, ptr %a76 + %t77 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 1 + %t78 = load i1, ptr %t77 + br i1 %t78, label %then9804, label %endif9806 +then9804: + %t79 = load { ptr, i64, i64 }, ptr %a76 + store { ptr, i64, i64 } { ptr @.str.6650, i64 0, i64 0 }, ptr %a76 + store { ptr, i64, i64 } %t79, ptr %a80 + call void @finch_str_drop(ptr %a80) + br label %endif9806 +endif9806: + %t81 = load { ptr, i64, i64 }, ptr %a75 + store { ptr, i64, i64 } %t81, ptr %a83 + store { ptr, i64, i64 } { ptr @.str.6651, i64 4, i64 0 }, 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 %a86 + %t87 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t87, ptr %a89 + store { ptr, i64, i64 } { ptr @.str.6652, i64 4, 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 %a76 + store { ptr, i64, i64 } %t91, ptr %a94 + store { ptr, i64, i64 } %t92, ptr %a95 + call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) + store { ptr, i64, i64 } %t91, ptr %a96 + call void @finch_str_drop(ptr %a96) + %t97 = load { ptr, i64, i64 }, ptr %a93 + store { ptr, i64, i64 } %t97, ptr %a99 + store { ptr, i64, i64 } { ptr @.str.6653, i64 4, i64 0 }, ptr %a100 + call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100) + store { ptr, i64, i64 } %t97, ptr %a101 + call void @finch_str_drop(ptr %a101) + %t102 = load { ptr, i64, i64 }, ptr %a98 %t103 = load { ptr, i64, i64 }, ptr %a1 %t104 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t103) store { ptr, i64, i64 } %t102, ptr %a106 store { ptr, i64, i64 } %t104, 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 %a110 - store { ptr, i64, i64 } { ptr @.str.6422, 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 - %t114 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t113) - store { ptr, i64, i64 } %t112, ptr %a116 - store { ptr, i64, i64 } %t114, 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 %a120 - store { ptr, i64, i64 } { ptr @.str.6423, 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 - %t124 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t123) - store { ptr, i64, i64 } %t122, 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.6424, 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 - call void @finch_str_copy(ptr %a133, ptr %a134) - %t135 = call i64 @finch_shell(ptr %a133) - store i64 %t135, ptr %a136 - %t137 = load i64, ptr %a136 - %t138 = icmp ne i64 %t137, 0 - br i1 %t138, label %then9303, label %endif9305 -then9303: - %t139 = load { ptr, i64, i64 }, ptr %a88 - store { ptr, i64, i64 } %t139, ptr %a140 - store { ptr, i64, i64 } zeroinitializer, ptr %a141 - store { ptr, i64, i64 } zeroinitializer, ptr %a142 - %t143 = call i32 @finch_try_read_file(ptr %a141, ptr %a140, ptr %a142) - %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.failed9306, label %or.ok9307 -or.failed9306: - store { ptr, i64, i64 } %t145, ptr %a147 - br label %or.bend9308 -or.bend9308: - br label %or.end9309 -or.ok9307: - br label %or.end9309 -or.end9309: - %t148 = phi { ptr, i64, i64 } [ { ptr @.str.6425, i64 0, i64 0 }, %or.bend9308 ], [ %t146, %or.ok9307 ] - 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.6426, 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.6427, 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 - %t161 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t160) - store { ptr, i64, i64 } %t159, 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 - call void @finch_str_copy(ptr %a166, ptr %a167) - %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.6428, 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 - store { ptr, i64, i64 } %t173, ptr %a176 - store { ptr, i64, i64 } %t174, ptr %a177 - 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.6429, 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 -endif9305: - %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.6430, 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.6431, 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 - %t195 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t194) - store { ptr, i64, i64 } %t193, 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.6432, 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 - %t205 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t204) - store { ptr, i64, i64 } %t203, 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 - call void @finch_str_copy(ptr %a210, ptr %a211) - %t212 = call i64 @finch_shell(ptr %a210) - %t213 = load { ptr, i64, i64 }, ptr %a46 - store { ptr, i64, i64 } %t213, ptr %a214 - call void @finch_str_copy(ptr %a215, ptr %a214) - %t216 = load { ptr, i64, i64 }, ptr %a215 - %t217 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t218 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t217, { ptr, i64, i64 } %t216, 1 - ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t218 + store { ptr, i64, i64 } %t102, ptr %a108 + call void @finch_str_drop(ptr %a108) + store { ptr, i64, i64 } %t104, ptr %a109 + call void @finch_str_drop(ptr %a109) + %t110 = load { ptr, i64, i64 }, ptr %a105 + store { ptr, i64, i64 } %t110, ptr %a112 + store { ptr, i64, i64 } { ptr @.str.6654, i64 4, i64 0 }, ptr %a113 + call void @finch_str_concat(ptr %a111, ptr %a112, ptr %a113) + store { ptr, i64, i64 } %t110, ptr %a114 + call void @finch_str_drop(ptr %a114) + %t115 = load { ptr, i64, i64 }, ptr %a111 + %t116 = load { ptr, i64, i64 }, ptr %a75 + %t117 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t116) + store { ptr, i64, i64 } %t115, ptr %a119 + store { ptr, i64, i64 } %t117, ptr %a120 + call void @finch_str_concat(ptr %a118, ptr %a119, ptr %a120) + store { ptr, i64, i64 } %t115, ptr %a121 + call void @finch_str_drop(ptr %a121) + store { ptr, i64, i64 } %t117, ptr %a122 + call void @finch_str_drop(ptr %a122) + %t123 = load { ptr, i64, i64 }, ptr %a118 + store { ptr, i64, i64 } %t123, ptr %a125 + store { ptr, i64, i64 } { ptr @.str.6655, i64 3, i64 0 }, ptr %a126 + call void @finch_str_concat(ptr %a124, ptr %a125, ptr %a126) + store { ptr, i64, i64 } %t123, ptr %a127 + call void @finch_str_drop(ptr %a127) + %t128 = load { ptr, i64, i64 }, ptr %a124 + %t129 = load { ptr, i64, i64 }, ptr %a86 + %t130 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t129) + store { ptr, i64, i64 } %t128, ptr %a132 + store { ptr, i64, i64 } %t130, ptr %a133 + call void @finch_str_concat(ptr %a131, ptr %a132, ptr %a133) + store { ptr, i64, i64 } %t128, ptr %a134 + call void @finch_str_drop(ptr %a134) + store { ptr, i64, i64 } %t130, ptr %a135 + call void @finch_str_drop(ptr %a135) + %t136 = load { ptr, i64, i64 }, ptr %a131 + store { ptr, i64, i64 } %t136, ptr %a138 + store { ptr, i64, i64 } { ptr @.str.6656, i64 5, i64 0 }, ptr %a139 + call void @finch_str_concat(ptr %a137, ptr %a138, ptr %a139) + store { ptr, i64, i64 } %t136, ptr %a140 + call void @finch_str_drop(ptr %a140) + %t141 = load { ptr, i64, i64 }, ptr %a137 + %t142 = call i64 @finch.host.run({ ptr, i64, i64 } %t141) + store { ptr, i64, i64 } %t141, ptr %a143 + call void @finch_str_drop(ptr %a143) + store i64 %t142, ptr %a144 + %t145 = load i64, ptr %a144 + %t146 = icmp ne i64 %t145, 0 + br i1 %t146, label %then9807, label %endif9809 +then9807: + %t147 = load { ptr, i64, i64 }, ptr %a86 + store { ptr, i64, i64 } %t147, ptr %a148 + store { ptr, i64, i64 } zeroinitializer, ptr %a149 + store { ptr, i64, i64 } zeroinitializer, ptr %a150 + %t151 = call i32 @finch_try_read_file(ptr %a149, ptr %a148, ptr %a150) + %t152 = icmp eq i32 %t151, 0 + %t153 = load { ptr, i64, i64 }, ptr %a150 + %t154 = load { ptr, i64, i64 }, ptr %a149 + br i1 %t152, label %or.failed9810, label %or.ok9811 +or.failed9810: + store { ptr, i64, i64 } %t153, ptr %a155 + call void @finch_str_drop(ptr %a155) + br label %or.bend9812 +or.bend9812: + br label %or.end9813 +or.ok9811: + br label %or.end9813 +or.end9813: + %t156 = phi { ptr, i64, i64 } [ { ptr @.str.6657, i64 0, i64 0 }, %or.bend9812 ], [ %t154, %or.ok9811 ] + store { ptr, i64, i64 } %t156, ptr %a157 + %t158 = load { ptr, i64, i64 }, ptr %a75 + call void @finch.host.remove({ ptr, i64, i64 } %t158) + %t159 = load { ptr, i64, i64 }, ptr %a86 + call void @finch.host.remove({ ptr, i64, i64 } %t159) + %t160 = load { ptr, i64, i64 }, ptr %a157 + store { ptr, i64, i64 } %t160, ptr %a162 + store { ptr, i64, i64 } { ptr @.str.6658, i64 46, 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 %a3 + store { ptr, i64, i64 } %t164, ptr %a167 + store { ptr, i64, i64 } %t165, ptr %a168 + call void @finch_str_concat(ptr %a166, ptr %a167, ptr %a168) + store { ptr, i64, i64 } %t164, ptr %a169 + call void @finch_str_drop(ptr %a169) + %t170 = load { ptr, i64, i64 }, ptr %a166 + store { ptr, i64, i64 } %t170, ptr %a172 + store { ptr, i64, i64 } { ptr @.str.6659, i64 30, i64 0 }, ptr %a173 + call void @finch_str_concat(ptr %a171, ptr %a172, ptr %a173) + store { ptr, i64, i64 } %t170, ptr %a174 + call void @finch_str_drop(ptr %a174) + %t175 = load { ptr, i64, i64 }, ptr %a171 + call void @finch_str_drop(ptr %a157) + call void @finch_str_drop(ptr %a86) + call void @finch_str_drop(ptr %a76) + call void @finch_str_drop(ptr %a75) + call void @finch_str_drop(ptr %a52) + call void @finch_str_drop(ptr %a15) + call void @finch_str_drop(ptr %a13) + %t176 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t175, 2 + ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t176 +endif9809: + %t177 = load { ptr, i64, i64 }, ptr %a86 + call void @finch.host.remove({ ptr, i64, i64 } %t177) + %t178 = load { ptr, i64, i64 }, ptr %a75 + %t179 = load { ptr, i64, i64 }, ptr %a52 + call void @finch.host.move({ ptr, i64, i64 } %t178, { ptr, i64, i64 } %t179) + %t180 = load { ptr, i64, i64 }, ptr %a52 + call void @finch_str_drop(ptr %a86) + call void @finch_str_drop(ptr %a76) + call void @finch_str_drop(ptr %a75) + call void @finch_str_drop(ptr %a15) + call void @finch_str_drop(ptr %a13) + %t181 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 + %t182 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t181, { ptr, i64, i64 } %t180, 1 + ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t182 } define internal i64 @finch.linker.build(%S.linker.Build %p0, %S.platform.Target %p1, %S.cimport.CImports %p2) { @@ -83860,266 +100792,275 @@ entry: %a11 = alloca { ptr, i64, i64 }, align 16 %a13 = 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 %a21 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a33 = 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 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a64 = 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 - %a71 = alloca { ptr, i64, i64 }, align 16 + %a23 = alloca { ptr, i64, i64 }, align 16 + %a28 = alloca { ptr, i64, i64 }, align 16 + %a29 = alloca { ptr, i64, i64 }, align 16 + %a32 = alloca { ptr, i64, i64 }, align 16 + %a37 = 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 + %a51 = alloca { ptr, i64, i64 }, align 16 + %a61 = 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 %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 + %a77 = alloca { ptr, i64, i64 }, align 16 %a80 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a91 = 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 + %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 %a97 = alloca { ptr, i64, i64 }, align 16 %a98 = alloca { ptr, i64, i64 }, align 16 %a99 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 + %a102 = alloca { ptr, i64, i64 }, align 16 %a105 = alloca { ptr, i64, i64 }, align 16 %a106 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 + %a107 = alloca { ptr, i64, i64 }, align 16 %a109 = 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 - %a115 = alloca { ptr, i64, i64 }, align 16 %a116 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 + %a117 = 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 %a126 = 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 - %a134 = 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 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 + %a137 = alloca { ptr, i64, i64 }, align 16 + %a138 = alloca { ptr, i64, i64 }, align 16 %a142 = alloca { ptr, i64, i64 }, align 16 + %a143 = 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 + %a148 = 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 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 %a155 = 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 %a159 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca i64, align 16 + %a161 = alloca { ptr, i64, i64 }, align 16 + %a162 = 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 - %a166 = alloca { ptr, i64, i64 }, align 16 %a168 = 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 + %a172 = alloca { ptr, i64, i64 }, align 16 %a174 = alloca { ptr, i64, i64 }, align 16 %a175 = alloca { ptr, i64, i64 }, align 16 %a176 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 + %a177 = alloca { ptr, i64, i64 }, align 16 + %a180 = alloca { ptr, i64, i64 }, align 16 + %a181 = alloca i64, align 16 + %a186 = alloca { ptr, i64, i64 }, align 16 + %a187 = alloca { ptr, i64, i64 }, align 16 + %a188 = alloca { ptr, i64, i64 }, align 16 + %a193 = alloca { ptr, i64, i64 }, align 16 %a201 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 %a213 = alloca { ptr, i64, i64 }, align 16 %a214 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 + %a215 = 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 + %a222 = 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 + %a226 = alloca { ptr, i64, i64 }, align 16 %a227 = alloca { ptr, i64, i64 }, align 16 %a228 = alloca { ptr, i64, i64 }, align 16 - %a229 = 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 %a235 = alloca { ptr, i64, i64 }, align 16 - %a237 = 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 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 + %a240 = alloca { ptr, i64, i64 }, align 16 + %a241 = 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 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 + %a249 = alloca { ptr, i64, i64 }, align 16 + %a250 = alloca { ptr, i64, i64 }, align 16 + %a252 = 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 %a262 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 %a268 = alloca { ptr, i64, i64 }, align 16 %a269 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca i64, align 16 + %a270 = alloca { ptr, i64, i64 }, align 16 + %a273 = 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 + %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 + %a283 = alloca i64, align 16 %a291 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = 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 %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 %a306 = 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 + %a310 = 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 + %a314 = alloca { ptr, i64, i64 }, align 16 + %a315 = 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 + %a319 = 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 + %a324 = 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 - %a330 = 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 + %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 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 + %a339 = 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 %a346 = 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 %a350 = alloca { ptr, i64, i64 }, align 16 %a351 = alloca { ptr, i64, i64 }, align 16 %a352 = alloca { ptr, i64, i64 }, align 16 - %a354 = alloca { ptr, i64, i64 }, align 16 - %a355 = alloca { ptr, i64, i64 }, align 16 - %a357 = alloca i64, align 16 - %a361 = 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 %a362 = alloca { ptr, i64, i64 }, align 16 %a363 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 + %a364 = alloca { ptr, i64, i64 }, align 16 + %a365 = alloca { ptr, i64, i64 }, align 16 + %a369 = 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 %a375 = alloca { ptr, i64, i64 }, align 16 %a376 = alloca { ptr, i64, i64 }, align 16 %a377 = alloca { ptr, i64, i64 }, align 16 + %a378 = alloca { ptr, i64, i64 }, align 16 + %a381 = alloca { ptr, i64, i64 }, align 16 + %a382 = alloca i64, align 16 + %a386 = alloca { ptr, i64, i64 }, align 16 + %a387 = alloca { ptr, i64, i64 }, align 16 %a388 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a390 = 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 + %a395 = alloca { ptr, i64, i64 }, align 16 + %a396 = alloca { ptr, i64, i64 }, align 16 + %a397 = alloca { ptr, i64, i64 }, align 16 %a398 = alloca { ptr, i64, i64 }, align 16 - %a399 = 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 - %a408 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a410 = alloca { ptr, i64, i64 }, align 16 %a412 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a417 = alloca { ptr, i64, i64 }, align 16 - %a418 = alloca { ptr, i64, i64 }, align 16 - %a425 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 + %a419 = alloca { ptr, i64, i64 }, align 16 + %a420 = alloca { ptr, i64, i64 }, align 16 %a427 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a432 = alloca { ptr, i64, i64 }, align 16 + %a428 = alloca { ptr, i64, i64 }, align 16 + %a429 = 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 %a436 = alloca { ptr, i64, i64 }, align 16 %a437 = alloca { ptr, i64, i64 }, align 16 - %a438 = alloca { ptr, i64, i64 }, align 16 + %a440 = alloca { ptr, i64, i64 }, align 16 %a442 = alloca { ptr, i64, i64 }, align 16 %a443 = alloca { ptr, i64, i64 }, align 16 %a444 = alloca { ptr, i64, i64 }, align 16 + %a448 = alloca { ptr, i64, i64 }, align 16 %a449 = alloca { ptr, i64, i64 }, align 16 %a450 = alloca { ptr, i64, i64 }, align 16 - %a451 = 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 - %a460 = alloca { ptr, i64, i64 }, align 16 %a461 = alloca { ptr, i64, i64 }, align 16 %a462 = alloca { ptr, i64, i64 }, align 16 - %a467 = alloca { ptr, i64, i64 }, align 16 + %a463 = alloca { ptr, i64, i64 }, align 16 + %a464 = alloca { ptr, i64, i64 }, align 16 + %a465 = alloca { ptr, i64, i64 }, align 16 %a468 = alloca { ptr, i64, i64 }, align 16 - %a469 = alloca { ptr, i64, i64 }, align 16 - %a474 = alloca { ptr, i64, i64 }, align 16 - %a475 = alloca { ptr, i64, i64 }, align 16 - %a476 = alloca { ptr, i64, i64 }, align 16 + %a470 = alloca { ptr, i64, i64 }, align 16 + %a471 = alloca { ptr, i64, i64 }, align 16 + %a472 = alloca { ptr, i64, i64 }, align 16 + %a477 = alloca { ptr, i64, i64 }, align 16 + %a478 = alloca { ptr, i64, i64 }, align 16 + %a479 = alloca { ptr, i64, i64 }, align 16 %a480 = alloca { ptr, i64, i64 }, align 16 %a481 = alloca { ptr, i64, i64 }, align 16 - %a482 = alloca { ptr, i64, i64 }, align 16 %a484 = alloca { ptr, i64, i64 }, align 16 - %a485 = alloca { ptr, i64, i64 }, align 16 - %a486 = alloca { ptr, i64, i64 }, align 16 %a488 = alloca { ptr, i64, i64 }, align 16 %a489 = alloca { ptr, i64, i64 }, align 16 - %a491 = alloca i64, align 16 - %a493 = alloca { ptr, i64, i64 }, align 16 + %a490 = 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 + %a498 = alloca { ptr, i64, i64 }, align 16 %a500 = alloca { ptr, i64, i64 }, align 16 + %a501 = alloca { ptr, i64, i64 }, align 16 %a502 = alloca { ptr, i64, i64 }, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 + %a503 = alloca { ptr, i64, i64 }, align 16 %a506 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 + %a507 = alloca i64, align 16 %a509 = alloca { ptr, i64, i64 }, align 16 %a510 = alloca { ptr, i64, i64 }, align 16 %a511 = 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 - %a519 = alloca { ptr, i64, i64 }, align 16 - %a520 = alloca { ptr, i64, i64 }, align 16 - %a522 = alloca i64, align 16 - %a530 = alloca { ptr, i64, i64 }, align 16 - %a533 = alloca { ptr, i64, i64 }, align 16 - %a534 = alloca { ptr, i64, i64 }, align 16 - %a535 = alloca { ptr, i64, i64 }, align 16 + %a518 = alloca { ptr, i64, i64 }, align 16 + %a521 = alloca i64, align 16 + %a529 = 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 - %a545 = alloca { ptr, i64, i64 }, align 16 - %a546 = alloca { ptr, i64, i64 }, align 16 - %a547 = alloca { ptr, i64, i64 }, align 16 - %a549 = alloca { ptr, i64, i64 }, align 16 - %a550 = alloca { ptr, i64, i64 }, align 16 + %a540 = 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 %a551 = alloca { ptr, i64, i64 }, align 16 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.6433, i64 11, i64 0 }, 0 + %t4 = extractvalue { ptr, i64, i64 } { ptr @.str.6660, i64 11, i64 0 }, 0 %t5 = icmp eq ptr %t4, null - %t6 = select i1 %t5, ptr @.str.6434, ptr %t4 + %t6 = select i1 %t5, ptr @.str.6661, 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) @@ -84131,701 +101072,823 @@ 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 %then9310, label %endif9312 -then9310: - store { ptr, i64, i64 } { ptr @.str.6435, i64 5, i64 0 }, ptr %a13 - br label %endif9312 -endif9312: + br i1 %t16, label %then9814, label %endif9816 +then9814: %t17 = load { ptr, i64, i64 }, ptr %a13 + store { ptr, i64, i64 } { ptr @.str.6662, i64 5, i64 0 }, ptr %a13 store { ptr, i64, i64 } %t17, ptr %a18 - call void @finch_str_copy(ptr %a19, ptr %a18) - %t20 = load { ptr, i64, i64 }, ptr %a19 - 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 %then9313, label %else9314 -then9313: - %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 %endif9315 -else9314: - %t29 = extractvalue { ptr, i64, i64 } { ptr @.str.6436, i64 8, i64 0 }, 0 - %t30 = icmp eq ptr %t29, null - %t31 = select i1 %t30, ptr @.str.6437, 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 %then9316, label %endif9318 -then9316: - %t37 = extractvalue { ptr, i64, i64 } { ptr @.str.6438, i64 8, i64 0 }, 0 - %t38 = icmp eq ptr %t37, null - %t39 = select i1 %t38, ptr @.str.6439, 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) - %t42 = load { ptr, i64, i64 }, ptr %a41 - 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 %a21 - br label %endif9318 -endif9318: - br label %endif9315 -endif9315: - %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 - %t49 = load { ptr, i64, i64 }, ptr %a21 - %t50 = call { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } @finch.linker.runtimeObject({ ptr, i64, i64 } %t47, %S.platform.Target %t48, { ptr, i64, i64 } %t49) - %t51 = extractvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t50, 0 - %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.failed9319, label %or.ok9320 -or.failed9319: - 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.6440, ptr %t59 - %t62 = call i32 (ptr, ...) @printf(ptr @.str.6441, i32 %t58, ptr %t61) - %t63 = call i32 (ptr, ...) @printf(ptr @.str.6442) + call void @finch_str_drop(ptr %a18) + br label %endif9816 +endif9816: + %t19 = load { ptr, i64, i64 }, ptr %a13 + store { ptr, i64, i64 } %t19, ptr %a20 + call void @finch_str_copy(ptr %a21, ptr %a20) + %t22 = load { ptr, i64, i64 }, ptr %a21 + store { ptr, i64, i64 } %t22, ptr %a23 + %t24 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 5 + %t25 = load i1, ptr %t24 + br i1 %t25, label %then9817, label %else9818 +then9817: + %t26 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 7 + %t27 = load { ptr, i64, i64 }, ptr %t26 + store { ptr, i64, i64 } %t27, ptr %a28 + call void @finch_str_copy(ptr %a29, ptr %a28) + %t30 = load { ptr, i64, i64 }, ptr %a29 + %t31 = load { ptr, i64, i64 }, ptr %a23 + store { ptr, i64, i64 } %t30, ptr %a23 + store { ptr, i64, i64 } %t31, ptr %a32 + call void @finch_str_drop(ptr %a32) + br label %endif9819 +else9818: + %t33 = extractvalue { ptr, i64, i64 } { ptr @.str.6663, i64 8, i64 0 }, 0 + %t34 = icmp eq ptr %t33, null + %t35 = select i1 %t34, ptr @.str.6664, ptr %t33 + %t36 = call ptr @getenv(ptr %t35) + store { ptr, i64, i64 } zeroinitializer, ptr %a37 + call void @finch_str_from_c(ptr %a37, ptr %t36) + %t38 = load { ptr, i64, i64 }, ptr %a37 + %t39 = extractvalue { ptr, i64, i64 } %t38, 1 + %t40 = icmp sgt i64 %t39, 0 + br i1 %t40, label %then9820, label %endif9822 +then9820: + %t41 = extractvalue { ptr, i64, i64 } { ptr @.str.6665, i64 8, i64 0 }, 0 + %t42 = icmp eq ptr %t41, null + %t43 = select i1 %t42, ptr @.str.6666, ptr %t41 + %t44 = call ptr @getenv(ptr %t43) + store { ptr, i64, i64 } zeroinitializer, ptr %a45 + call void @finch_str_from_c(ptr %a45, ptr %t44) + %t46 = load { ptr, i64, i64 }, ptr %a45 + store { ptr, i64, i64 } %t46, ptr %a47 + call void @finch_str_copy(ptr %a48, ptr %a47) + %t49 = load { ptr, i64, i64 }, ptr %a48 + %t50 = load { ptr, i64, i64 }, ptr %a23 + store { ptr, i64, i64 } %t49, ptr %a23 + store { ptr, i64, i64 } %t50, ptr %a51 + call void @finch_str_drop(ptr %a51) + br label %endif9822 +endif9822: + br label %endif9819 +endif9819: + %t52 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 2 + %t53 = load { ptr, i64, i64 }, ptr %t52 + %t54 = load %S.platform.Target, ptr %a2 + %t55 = load { ptr, i64, i64 }, ptr %a23 + %t56 = call { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } @finch.linker.runtimeObject({ ptr, i64, i64 } %t53, %S.platform.Target %t54, { ptr, i64, i64 } %t55) + %t57 = extractvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t56, 0 + %t58 = xor i1 %t57, true + %t59 = extractvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t56, 2 + %t60 = extractvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t56, 1 + br i1 %t58, label %or.failed9823, label %or.ok9824 +or.failed9823: + store { ptr, i64, i64 } %t59, ptr %a61 + %t62 = load { ptr, i64, i64 }, ptr %a61 + %t63 = extractvalue { ptr, i64, i64 } %t62, 1 + %t64 = trunc i64 %t63 to i32 + %t65 = extractvalue { ptr, i64, i64 } %t62, 0 + %t66 = icmp eq ptr %t65, null + %t67 = select i1 %t66, ptr @.str.6667, ptr %t65 + %t68 = call i32 (ptr, ...) @printf(ptr @.str.6668, i32 %t64, ptr %t67) + %t69 = call i32 (ptr, ...) @printf(ptr @.str.6669) + call void @finch_str_drop(ptr %a61) + call void @finch_str_drop(ptr %a23) + call void @finch_str_drop(ptr %a13) ret i64 1 -or.ok9320: - 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.6443, 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.6444, 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 - %t79 = load { ptr, i64, i64 }, ptr %a71 - store { ptr, i64, i64 } %t79, ptr %a80 - %t81 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 1 - %t82 = load { ptr, i64, i64 }, ptr %t81 - 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.6445, 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 %then9321, label %endif9323 -then9321: - %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.6446, 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 %endif9323 -endif9323: - %t95 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 0 +or.ok9824: + store { ptr, i64, i64 } %t60, ptr %a70 + %t71 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 0 + %t72 = load { ptr, i64, i64 }, ptr %t71 + store { ptr, i64, i64 } %t72, ptr %a74 + store { ptr, i64, i64 } { ptr @.str.6670, i64 3, i64 0 }, ptr %a75 + call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) + %t76 = load { ptr, i64, i64 }, ptr %a73 + store { ptr, i64, i64 } %t76, ptr %a77 + %t78 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 0 + %t79 = load { ptr, i64, i64 }, ptr %t78 + store { ptr, i64, i64 } %t79, ptr %a81 + store { ptr, i64, i64 } { ptr @.str.6671, i64 2, 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 = load { ptr, i64, i64 }, ptr %a77 + %t86 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 1 + %t87 = load { ptr, i64, i64 }, ptr %t86 + store { ptr, i64, i64 } %t85, ptr %a88 + store { ptr, i64, i64 } %t87, ptr %a89 + %t90 = call i32 @finch_write_file(ptr %a88, ptr %a89) + %t91 = icmp ne i32 %t90, 0 + store { ptr, i64, i64 } { ptr @.str.6672, i64 0, i64 0 }, ptr %a92 + %t93 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 5 + %t94 = load i1, ptr %t93 + br i1 %t94, label %then9825, label %endif9827 +then9825: + %t95 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 0 %t96 = load { ptr, i64, i64 }, ptr %t95 - store { ptr, i64, i64 } %t96, ptr %a98 - store { ptr, i64, i64 } { ptr @.str.6447, i64 4, i64 0 }, ptr %a99 + store { ptr, i64, i64 } { ptr @.str.6673, i64 10, 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 %a101 - %t102 = load { ptr, i64, i64 }, ptr %a13 - %t103 = load { ptr, i64, i64 }, ptr %a86 - store { ptr, i64, i64 } %t102, 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 - store { ptr, i64, i64 } %t107, ptr %a109 - store { ptr, i64, i64 } { ptr @.str.6448, 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 - %t113 = load { ptr, i64, i64 }, ptr %t112 - store { ptr, i64, i64 } %t111, 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 - %t118 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 4 - %t119 = load { ptr, i64, i64 }, ptr %t118 - store { ptr, i64, i64 } %t117, 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.6449, 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 - %t129 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t128) + %t101 = load { ptr, i64, i64 }, ptr %a92 + store { ptr, i64, i64 } %t100, ptr %a92 + store { ptr, i64, i64 } %t101, ptr %a102 + call void @finch_str_drop(ptr %a102) + br label %endif9827 +endif9827: + %t103 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 0 + %t104 = load { ptr, i64, i64 }, ptr %t103 + store { ptr, i64, i64 } %t104, ptr %a106 + store { ptr, i64, i64 } { ptr @.str.6674, i64 4, 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 %a109 + %t110 = load { ptr, i64, i64 }, ptr %a13 + %t111 = load { ptr, i64, i64 }, ptr %a92 + store { ptr, i64, i64 } %t110, 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.6675, i64 1, i64 0 }, ptr %a118 + call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118) + store { ptr, i64, i64 } %t115, ptr %a119 + call void @finch_str_drop(ptr %a119) + %t120 = load { ptr, i64, i64 }, ptr %a116 + %t121 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 3 + %t122 = load { ptr, i64, i64 }, ptr %t121 + store { ptr, i64, i64 } %t120, ptr %a124 + store { ptr, i64, i64 } %t122, ptr %a125 + call void @finch_str_concat(ptr %a123, ptr %a124, ptr %a125) + store { ptr, i64, i64 } %t120, ptr %a126 + call void @finch_str_drop(ptr %a126) + %t127 = load { ptr, i64, i64 }, ptr %a123 + %t128 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 4 + %t129 = load { ptr, i64, i64 }, ptr %t128 store { ptr, i64, i64 } %t127, 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 %a135 - store { ptr, i64, i64 } { ptr @.str.6450, 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 - %t139 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t138) - store { ptr, i64, i64 } %t137, 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.6451, 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 - %t149 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t148) + store { ptr, i64, i64 } %t127, ptr %a133 + call void @finch_str_drop(ptr %a133) + %t134 = load { ptr, i64, i64 }, ptr %a130 + store { ptr, i64, i64 } %t134, ptr %a136 + store { ptr, i64, i64 } { ptr @.str.6676, i64 7, i64 0 }, ptr %a137 + call void @finch_str_concat(ptr %a135, ptr %a136, ptr %a137) + store { ptr, i64, i64 } %t134, ptr %a138 + call void @finch_str_drop(ptr %a138) + %t139 = load { ptr, i64, i64 }, ptr %a135 + %t140 = load { ptr, i64, i64 }, ptr %a77 + %t141 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t140) + store { ptr, i64, i64 } %t139, ptr %a143 + store { ptr, i64, i64 } %t141, ptr %a144 + call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144) + store { ptr, i64, i64 } %t139, ptr %a145 + call void @finch_str_drop(ptr %a145) + store { ptr, i64, i64 } %t141, ptr %a146 + call void @finch_str_drop(ptr %a146) + %t147 = load { ptr, i64, i64 }, ptr %a142 + store { ptr, i64, i64 } %t147, ptr %a149 + store { ptr, i64, i64 } { ptr @.str.6677, i64 4, i64 0 }, ptr %a150 + call void @finch_str_concat(ptr %a148, ptr %a149, ptr %a150) store { ptr, i64, i64 } %t147, ptr %a151 - store { ptr, i64, i64 } %t149, ptr %a152 - 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.6452, 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 - call void @finch_str_copy(ptr %a158, ptr %a159) - %t160 = call i64 @finch_shell(ptr %a158) - 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.6453, 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 - store { ptr, i64, i64 } %t167, ptr %a169 - call void @finch_str_copy(ptr %a168, ptr %a169) - %t170 = call i64 @finch_shell(ptr %a168) - %t171 = load i64, ptr %a161 - %t172 = icmp ne i64 %t171, 0 - br i1 %t172, label %then9324, label %endif9326 -then9324: - %t173 = load { ptr, i64, i64 }, ptr %a101 - store { ptr, i64, i64 } %t173, ptr %a174 - store { ptr, i64, i64 } zeroinitializer, ptr %a175 - store { ptr, i64, i64 } zeroinitializer, ptr %a176 - %t177 = call i32 @finch_try_read_file(ptr %a175, ptr %a174, ptr %a176) - %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.failed9327, label %or.ok9328 -or.failed9327: - store { ptr, i64, i64 } %t179, ptr %a181 - br label %or.bend9329 -or.bend9329: - br label %or.end9330 -or.ok9328: - br label %or.end9330 -or.end9330: - %t182 = phi { ptr, i64, i64 } [ { ptr @.str.6454, i64 0, i64 0 }, %or.bend9329 ], [ %t180, %or.ok9328 ] - %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.6455, ptr %t185 - %t188 = call i32 (ptr, ...) @printf(ptr @.str.6456, i32 %t184, ptr %t187) - %t189 = call i32 (ptr, ...) @printf(ptr @.str.6457) - %t190 = extractvalue { ptr, i64, i64 } { ptr @.str.6458, i64 46, i64 0 }, 1 - %t191 = trunc i64 %t190 to i32 - %t192 = extractvalue { ptr, i64, i64 } { ptr @.str.6458, i64 46, i64 0 }, 0 - %t193 = icmp eq ptr %t192, null - %t194 = select i1 %t193, ptr @.str.6459, ptr %t192 - %t195 = call i32 (ptr, ...) @printf(ptr @.str.6460, i32 %t191, ptr %t194) - %t196 = call i32 (ptr, ...) @printf(ptr @.str.6461) - %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.6462, 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.6463, 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 - %t208 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t207) - store { ptr, i64, i64 } %t206, 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 - call void @finch_str_copy(ptr %a213, ptr %a214) - %t215 = call i64 @finch_shell(ptr %a213) + call void @finch_str_drop(ptr %a151) + %t152 = load { ptr, i64, i64 }, ptr %a148 + %t153 = load { ptr, i64, i64 }, ptr %a84 + %t154 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t153) + store { ptr, i64, i64 } %t152, ptr %a156 + store { ptr, i64, i64 } %t154, ptr %a157 + call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) + store { ptr, i64, i64 } %t152, ptr %a158 + call void @finch_str_drop(ptr %a158) + store { ptr, i64, i64 } %t154, ptr %a159 + call void @finch_str_drop(ptr %a159) + %t160 = load { ptr, i64, i64 }, ptr %a155 + store { ptr, i64, i64 } %t160, ptr %a162 + store { ptr, i64, i64 } { ptr @.str.6678, i64 3, i64 0 }, ptr %a163 + call void @finch_str_concat(ptr %a161, ptr %a162, ptr %a163) + store { ptr, i64, i64 } %t160, ptr %a164 + call void @finch_str_drop(ptr %a164) + %t165 = load { ptr, i64, i64 }, ptr %a161 + %t166 = load { ptr, i64, i64 }, ptr %a109 + %t167 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t166) + store { ptr, i64, i64 } %t165, ptr %a169 + store { ptr, i64, i64 } %t167, ptr %a170 + call void @finch_str_concat(ptr %a168, ptr %a169, ptr %a170) + store { ptr, i64, i64 } %t165, ptr %a171 + call void @finch_str_drop(ptr %a171) + store { ptr, i64, i64 } %t167, ptr %a172 + call void @finch_str_drop(ptr %a172) + %t173 = load { ptr, i64, i64 }, ptr %a168 + store { ptr, i64, i64 } %t173, ptr %a175 + store { ptr, i64, i64 } { ptr @.str.6679, i64 5, i64 0 }, ptr %a176 + call void @finch_str_concat(ptr %a174, ptr %a175, ptr %a176) + store { ptr, i64, i64 } %t173, ptr %a177 + call void @finch_str_drop(ptr %a177) + %t178 = load { ptr, i64, i64 }, ptr %a174 + %t179 = call i64 @finch.host.run({ ptr, i64, i64 } %t178) + store { ptr, i64, i64 } %t178, ptr %a180 + call void @finch_str_drop(ptr %a180) + store i64 %t179, ptr %a181 + %t182 = load { ptr, i64, i64 }, ptr %a77 + call void @finch.host.remove({ ptr, i64, i64 } %t182) + %t183 = load i64, ptr %a181 + %t184 = icmp ne i64 %t183, 0 + br i1 %t184, label %then9828, label %endif9830 +then9828: + %t185 = load { ptr, i64, i64 }, ptr %a109 + store { ptr, i64, i64 } %t185, ptr %a186 + store { ptr, i64, i64 } zeroinitializer, ptr %a187 + store { ptr, i64, i64 } zeroinitializer, ptr %a188 + %t189 = call i32 @finch_try_read_file(ptr %a187, ptr %a186, ptr %a188) + %t190 = icmp eq i32 %t189, 0 + %t191 = load { ptr, i64, i64 }, ptr %a188 + %t192 = load { ptr, i64, i64 }, ptr %a187 + br i1 %t190, label %or.failed9831, label %or.ok9832 +or.failed9831: + store { ptr, i64, i64 } %t191, ptr %a193 + call void @finch_str_drop(ptr %a193) + br label %or.bend9833 +or.bend9833: + br label %or.end9834 +or.ok9832: + br label %or.end9834 +or.end9834: + %t194 = phi { ptr, i64, i64 } [ { ptr @.str.6680, i64 0, i64 0 }, %or.bend9833 ], [ %t192, %or.ok9832 ] + %t195 = extractvalue { ptr, i64, i64 } %t194, 1 + %t196 = trunc i64 %t195 to i32 + %t197 = extractvalue { ptr, i64, i64 } %t194, 0 + %t198 = icmp eq ptr %t197, null + %t199 = select i1 %t198, ptr @.str.6681, ptr %t197 + %t200 = call i32 (ptr, ...) @printf(ptr @.str.6682, i32 %t196, ptr %t199) + store { ptr, i64, i64 } %t194, ptr %a201 + call void @finch_str_drop(ptr %a201) + %t202 = call i32 (ptr, ...) @printf(ptr @.str.6683) + %t203 = extractvalue { ptr, i64, i64 } { ptr @.str.6684, i64 46, i64 0 }, 1 + %t204 = trunc i64 %t203 to i32 + %t205 = extractvalue { ptr, i64, i64 } { ptr @.str.6684, i64 46, i64 0 }, 0 + %t206 = icmp eq ptr %t205, null + %t207 = select i1 %t206, ptr @.str.6685, ptr %t205 + %t208 = call i32 (ptr, ...) @printf(ptr @.str.6686, i32 %t204, ptr %t207) + %t209 = call i32 (ptr, ...) @printf(ptr @.str.6687) + %t210 = load { ptr, i64, i64 }, ptr %a84 + call void @finch.host.remove({ ptr, i64, i64 } %t210) + %t211 = load { ptr, i64, i64 }, ptr %a109 + call void @finch.host.remove({ ptr, i64, i64 } %t211) + call void @finch_str_drop(ptr %a109) + call void @finch_str_drop(ptr %a92) + call void @finch_str_drop(ptr %a84) + call void @finch_str_drop(ptr %a77) + call void @finch_str_drop(ptr %a70) + call void @finch_str_drop(ptr %a23) + call void @finch_str_drop(ptr %a13) ret i64 1 -endif9326: - %t216 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } %t216, ptr %a218 - store { ptr, i64, i64 } { ptr @.str.6464, 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 - %t222 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t221) - store { ptr, i64, i64 } %t220, ptr %a224 - store { ptr, i64, i64 } %t222, ptr %a225 - 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.6465, 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 - %t232 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t231) - store { ptr, i64, i64 } %t230, 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 - store { ptr, i64, i64 } %t236, ptr %a238 - store { ptr, i64, i64 } { ptr @.str.6466, 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 - %t242 = load { ptr, i64, i64 }, ptr %t241 - %t243 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t242) - store { ptr, i64, i64 } %t240, 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 %a248 - %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 %then9331, label %endif9333 -then9331: - %t252 = load { ptr, i64, i64 }, ptr %a248 - store { ptr, i64, i64 } %t252, ptr %a254 - store { ptr, i64, i64 } { ptr @.str.6467, 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 %endif9333 -endif9333: - %t257 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 5 - %t258 = load i1, ptr %t257 - br i1 %t258, label %then9334, label %endif9336 -then9334: - %t259 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 3 - %t260 = load i1, ptr %t259 - br i1 %t260, label %then9337, label %else9338 -then9337: - %t261 = load { ptr, i64, i64 }, ptr %a248 - store { ptr, i64, i64 } %t261, ptr %a263 - store { ptr, i64, i64 } { ptr @.str.6468, 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 %endif9339 -else9338: - %t266 = load { ptr, i64, i64 }, ptr %a248 - store { ptr, i64, i64 } %t266, ptr %a268 - store { ptr, i64, i64 } { ptr @.str.6469, 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 %endif9339 -endif9339: - br label %endif9336 -endif9336: - 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.cond9340 -each.cond9340: - %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.body9341, label %each.end9343 -each.body9341: - %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.6471, 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 %then9344, label %else9345 -then9344: - %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.6472, 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 - %t295 = load i64, ptr %t294 - call void @finch_str_from_int(ptr %a296, i64 %t295) - %t297 = load { ptr, i64, i64 }, ptr %a296 - store { ptr, i64, i64 } %t293, 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.6473, 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.6474, 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 %then9347, label %endif9349 -then9347: - store { ptr, i64, i64 } { ptr @.str.6475, i64 0, i64 0 }, ptr %a307 - br label %endif9349 -endif9349: - %t310 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } %t310, ptr %a312 - store { ptr, i64, i64 } { ptr @.str.6476, 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 - store { ptr, i64, i64 } %t314, 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.6477, i64 4, i64 0 }, ptr %a322 - call void @finch_str_concat(ptr %a320, ptr %a321, ptr %a322) +endif9830: + %t212 = load { ptr, i64, i64 }, ptr %a23 + store { ptr, i64, i64 } %t212, ptr %a214 + store { ptr, i64, i64 } { ptr @.str.6688, i64 1, i64 0 }, ptr %a215 + call void @finch_str_concat(ptr %a213, ptr %a214, ptr %a215) + %t216 = load { ptr, i64, i64 }, ptr %a213 + %t217 = load { ptr, i64, i64 }, ptr %a84 + %t218 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t217) + store { ptr, i64, i64 } %t216, ptr %a220 + store { ptr, i64, i64 } %t218, ptr %a221 + call void @finch_str_concat(ptr %a219, ptr %a220, ptr %a221) + store { ptr, i64, i64 } %t216, ptr %a222 + call void @finch_str_drop(ptr %a222) + store { ptr, i64, i64 } %t218, ptr %a223 + call void @finch_str_drop(ptr %a223) + %t224 = load { ptr, i64, i64 }, ptr %a219 + store { ptr, i64, i64 } %t224, ptr %a226 + store { ptr, i64, i64 } { ptr @.str.6689, i64 1, i64 0 }, ptr %a227 + call void @finch_str_concat(ptr %a225, ptr %a226, ptr %a227) + store { ptr, i64, i64 } %t224, ptr %a228 + call void @finch_str_drop(ptr %a228) + %t229 = load { ptr, i64, i64 }, ptr %a225 + %t230 = load { ptr, i64, i64 }, ptr %a70 + %t231 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t230) + store { ptr, i64, i64 } %t229, ptr %a233 + store { ptr, i64, i64 } %t231, ptr %a234 + call void @finch_str_concat(ptr %a232, ptr %a233, ptr %a234) + store { ptr, i64, i64 } %t229, ptr %a235 + call void @finch_str_drop(ptr %a235) + store { ptr, i64, i64 } %t231, ptr %a236 + call void @finch_str_drop(ptr %a236) + %t237 = load { ptr, i64, i64 }, ptr %a232 + store { ptr, i64, i64 } %t237, ptr %a239 + store { ptr, i64, i64 } { ptr @.str.6690, i64 4, i64 0 }, ptr %a240 + call void @finch_str_concat(ptr %a238, ptr %a239, ptr %a240) + store { ptr, i64, i64 } %t237, ptr %a241 + call void @finch_str_drop(ptr %a241) + %t242 = load { ptr, i64, i64 }, ptr %a238 + %t243 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 0 + %t244 = load { ptr, i64, i64 }, ptr %t243 + %t245 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t244) + store { ptr, i64, i64 } %t242, ptr %a247 + store { ptr, i64, i64 } %t245, ptr %a248 + call void @finch_str_concat(ptr %a246, ptr %a247, ptr %a248) + store { ptr, i64, i64 } %t242, ptr %a249 + call void @finch_str_drop(ptr %a249) + store { ptr, i64, i64 } %t245, ptr %a250 + call void @finch_str_drop(ptr %a250) + %t251 = load { ptr, i64, i64 }, ptr %a246 + store { ptr, i64, i64 } %t251, ptr %a252 + %t253 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 2 + %t254 = load i1, ptr %t253 + %t255 = xor i1 %t254, true + br i1 %t255, label %then9835, label %endif9837 +then9835: + %t256 = load { ptr, i64, i64 }, ptr %a252 + store { ptr, i64, i64 } %t256, ptr %a258 + store { ptr, i64, i64 } { ptr @.str.6691, i64 4, 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 %a252 + store { ptr, i64, i64 } %t260, ptr %a252 + store { ptr, i64, i64 } %t261, ptr %a262 + call void @finch_str_drop(ptr %a262) + br label %endif9837 +endif9837: + %t263 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 5 + %t264 = load i1, ptr %t263 + br i1 %t264, label %then9838, label %endif9840 +then9838: + %t265 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 3 + %t266 = load i1, ptr %t265 + br i1 %t266, label %then9841, label %else9842 +then9841: + %t267 = load { ptr, i64, i64 }, ptr %a252 + store { ptr, i64, i64 } %t267, ptr %a269 + store { ptr, i64, i64 } { ptr @.str.6692, i64 12, 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, i64, i64 }, ptr %a252 + store { ptr, i64, i64 } %t271, ptr %a252 + store { ptr, i64, i64 } %t272, ptr %a273 + call void @finch_str_drop(ptr %a273) + br label %endif9843 +else9842: + %t274 = load { ptr, i64, i64 }, ptr %a252 + store { ptr, i64, i64 } %t274, ptr %a276 + store { ptr, i64, i64 } { ptr @.str.6693, i64 8, 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 %a252 + store { ptr, i64, i64 } %t278, ptr %a252 + store { ptr, i64, i64 } %t279, ptr %a280 + call void @finch_str_drop(ptr %a280) + br label %endif9843 +endif9843: + br label %endif9840 +endif9840: + store { ptr, i64, i64 } zeroinitializer, ptr %a281 + %t282 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 6 + store i64 0, ptr %a283 + br label %each.cond9844 +each.cond9844: + %t284 = getelementptr inbounds { ptr, i64, i64 }, ptr %t282, i32 0, i32 1 + %t285 = load i64, ptr %t284 + %t286 = load i64, ptr %a283 + %t287 = icmp slt i64 %t286, %t285 + br i1 %t287, label %each.body9845, label %each.end9847 +each.body9845: + %t288 = load ptr, ptr %t282 + %t289 = getelementptr inbounds { ptr, i64, i64 }, ptr %t288, i64 %t286 + %t290 = load { ptr, i64, i64 }, ptr %t289 + store { ptr, i64, i64 } %t290, ptr %a291 + %t292 = load { ptr, i64, i64 }, ptr %a291 + store { ptr, i64, i64 } %t292, ptr %a293 + store { ptr, i64, i64 } { ptr @.str.6695, i64 2, i64 0 }, ptr %a295 + %t296 = call i32 @finch_str_ends(ptr %a293, ptr %a295) + %t297 = icmp ne i32 %t296, 0 + br i1 %t297, label %then9848, label %else9849 +then9848: + %t298 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 0 + %t299 = load { ptr, i64, i64 }, ptr %t298 + store { ptr, i64, i64 } %t299, ptr %a301 + store { ptr, i64, i64 } { ptr @.str.6696, i64 1, i64 0 }, ptr %a302 + call void @finch_str_concat(ptr %a300, ptr %a301, ptr %a302) + %t303 = load { ptr, i64, i64 }, ptr %a300 + %t304 = getelementptr inbounds { ptr, i64, i64 }, ptr %a281, i32 0, i32 1 + %t305 = load i64, ptr %t304 + call void @finch_str_from_int(ptr %a306, i64 %t305) + %t307 = load { ptr, i64, i64 }, ptr %a306 + store { ptr, i64, i64 } %t303, ptr %a309 + store { ptr, i64, i64 } %t307, ptr %a310 + call void @finch_str_concat(ptr %a308, ptr %a309, ptr %a310) + store { ptr, i64, i64 } %t303, ptr %a311 + call void @finch_str_drop(ptr %a311) + store { ptr, i64, i64 } %t307, ptr %a312 + call void @finch_str_drop(ptr %a312) + %t313 = load { ptr, i64, i64 }, ptr %a308 + store { ptr, i64, i64 } %t313, ptr %a315 + store { ptr, i64, i64 } { ptr @.str.6697, i64 2, i64 0 }, ptr %a316 + call void @finch_str_concat(ptr %a314, ptr %a315, ptr %a316) + store { ptr, i64, i64 } %t313, ptr %a317 + call void @finch_str_drop(ptr %a317) + %t318 = load { ptr, i64, i64 }, ptr %a314 + store { ptr, i64, i64 } %t318, ptr %a319 + store { ptr, i64, i64 } { ptr @.str.6698, i64 6, i64 0 }, ptr %a320 + %t321 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 1 + %t322 = load i1, ptr %t321 + br i1 %t322, label %then9851, label %endif9853 +then9851: %t323 = load { ptr, i64, i64 }, ptr %a320 - %t324 = load { ptr, i64, i64 }, ptr %a281 - %t325 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t324) - store { ptr, i64, i64 } %t323, ptr %a327 - store { ptr, i64, i64 } %t325, ptr %a328 + store { ptr, i64, i64 } { ptr @.str.6699, i64 0, i64 0 }, ptr %a320 + store { ptr, i64, i64 } %t323, ptr %a324 + call void @finch_str_drop(ptr %a324) + br label %endif9853 +endif9853: + %t325 = load { ptr, i64, i64 }, ptr %a23 + store { ptr, i64, i64 } %t325, ptr %a327 + store { ptr, i64, i64 } { ptr @.str.6700, i64 4, i64 0 }, ptr %a328 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.6478, 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 - %t335 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t334) - store { ptr, i64, i64 } %t333, ptr %a337 - store { ptr, i64, i64 } %t335, ptr %a338 + %t330 = load { ptr, i64, i64 }, ptr %a320 + 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) + store { ptr, i64, i64 } %t329, ptr %a334 + call void @finch_str_drop(ptr %a334) + %t335 = load { ptr, i64, i64 }, ptr %a331 + store { ptr, i64, i64 } %t335, ptr %a337 + store { ptr, i64, i64 } { ptr @.str.6701, i64 4, 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 %a341 - store { ptr, i64, i64 } { ptr @.str.6479, 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 - %t345 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t344) - store { ptr, i64, i64 } %t343, ptr %a347 - store { ptr, i64, i64 } %t345, ptr %a348 - 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.6480, 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 - call void @finch_str_copy(ptr %a354, ptr %a355) - %t356 = call i64 @finch_shell(ptr %a354) - store i64 %t356, ptr %a357 - %t358 = load i64, ptr %a357 - %t359 = icmp ne i64 %t358, 0 - br i1 %t359, label %then9350, label %endif9352 -then9350: - %t360 = load { ptr, i64, i64 }, ptr %a101 - store { ptr, i64, i64 } %t360, ptr %a361 - store { ptr, i64, i64 } zeroinitializer, ptr %a362 - store { ptr, i64, i64 } zeroinitializer, ptr %a363 - %t364 = call i32 @finch_try_read_file(ptr %a362, ptr %a361, ptr %a363) - %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.failed9353, label %or.ok9354 -or.failed9353: - store { ptr, i64, i64 } %t366, ptr %a368 - br label %or.bend9355 -or.bend9355: - br label %or.end9356 -or.ok9354: - br label %or.end9356 -or.end9356: - %t369 = phi { ptr, i64, i64 } [ { ptr @.str.6481, i64 0, i64 0 }, %or.bend9355 ], [ %t367, %or.ok9354 ] - store { ptr, i64, i64 } %t369, ptr %a371 - store { ptr, i64, i64 } { ptr @.str.6482, 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 - store { ptr, i64, i64 } %t373, ptr %a376 - store { ptr, i64, i64 } %t374, ptr %a377 + store { ptr, i64, i64 } %t335, ptr %a339 + call void @finch_str_drop(ptr %a339) + %t340 = load { ptr, i64, i64 }, ptr %a336 + %t341 = load { ptr, i64, i64 }, ptr %a291 + %t342 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t341) + store { ptr, i64, i64 } %t340, ptr %a344 + store { ptr, i64, i64 } %t342, ptr %a345 + call void @finch_str_concat(ptr %a343, ptr %a344, ptr %a345) + store { ptr, i64, i64 } %t340, ptr %a346 + call void @finch_str_drop(ptr %a346) + store { ptr, i64, i64 } %t342, ptr %a347 + call void @finch_str_drop(ptr %a347) + %t348 = load { ptr, i64, i64 }, ptr %a343 + store { ptr, i64, i64 } %t348, ptr %a350 + store { ptr, i64, i64 } { ptr @.str.6702, i64 4, i64 0 }, ptr %a351 + call void @finch_str_concat(ptr %a349, ptr %a350, ptr %a351) + store { ptr, i64, i64 } %t348, ptr %a352 + call void @finch_str_drop(ptr %a352) + %t353 = load { ptr, i64, i64 }, ptr %a349 + %t354 = load { ptr, i64, i64 }, ptr %a319 + %t355 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t354) + store { ptr, i64, i64 } %t353, ptr %a357 + store { ptr, i64, i64 } %t355, ptr %a358 + call void @finch_str_concat(ptr %a356, ptr %a357, ptr %a358) + store { ptr, i64, i64 } %t353, ptr %a359 + call void @finch_str_drop(ptr %a359) + store { ptr, i64, i64 } %t355, ptr %a360 + call void @finch_str_drop(ptr %a360) + %t361 = load { ptr, i64, i64 }, ptr %a356 + store { ptr, i64, i64 } %t361, ptr %a363 + store { ptr, i64, i64 } { ptr @.str.6703, i64 3, i64 0 }, ptr %a364 + call void @finch_str_concat(ptr %a362, ptr %a363, ptr %a364) + store { ptr, i64, i64 } %t361, ptr %a365 + call void @finch_str_drop(ptr %a365) + %t366 = load { ptr, i64, i64 }, ptr %a362 + %t367 = load { ptr, i64, i64 }, ptr %a109 + %t368 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t367) + store { ptr, i64, i64 } %t366, ptr %a370 + store { ptr, i64, i64 } %t368, ptr %a371 + call void @finch_str_concat(ptr %a369, ptr %a370, ptr %a371) + store { ptr, i64, i64 } %t366, ptr %a372 + call void @finch_str_drop(ptr %a372) + store { ptr, i64, i64 } %t368, ptr %a373 + call void @finch_str_drop(ptr %a373) + %t374 = load { ptr, i64, i64 }, ptr %a369 + store { ptr, i64, i64 } %t374, ptr %a376 + store { ptr, i64, i64 } { ptr @.str.6704, i64 5, i64 0 }, ptr %a377 call void @finch_str_concat(ptr %a375, ptr %a376, ptr %a377) - %t378 = load { ptr, i64, i64 }, ptr %a375 - %t379 = extractvalue { ptr, i64, i64 } %t378, 1 - %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.6483, ptr %t381 - %t384 = call i32 (ptr, ...) @printf(ptr @.str.6484, i32 %t380, ptr %t383) - %t385 = call i32 (ptr, ...) @printf(ptr @.str.6485) - %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.6486, i64 6, i64 0 }, ptr %a389 - store { ptr, i64, i64 } %t387, ptr %a390 - call void @finch_str_concat(ptr %a388, ptr %a389, ptr %a390) + store { ptr, i64, i64 } %t374, ptr %a378 + call void @finch_str_drop(ptr %a378) + %t379 = load { ptr, i64, i64 }, ptr %a375 + %t380 = call i64 @finch.host.run({ ptr, i64, i64 } %t379) + store { ptr, i64, i64 } %t379, ptr %a381 + call void @finch_str_drop(ptr %a381) + store i64 %t380, ptr %a382 + %t383 = load i64, ptr %a382 + %t384 = icmp ne i64 %t383, 0 + br i1 %t384, label %then9854, label %endif9856 +then9854: + %t385 = load { ptr, i64, i64 }, ptr %a109 + store { ptr, i64, i64 } %t385, ptr %a386 + store { ptr, i64, i64 } zeroinitializer, ptr %a387 + store { ptr, i64, i64 } zeroinitializer, ptr %a388 + %t389 = call i32 @finch_try_read_file(ptr %a387, ptr %a386, ptr %a388) + %t390 = icmp eq i32 %t389, 0 %t391 = load { ptr, i64, i64 }, ptr %a388 + %t392 = load { ptr, i64, i64 }, ptr %a387 + br i1 %t390, label %or.failed9857, label %or.ok9858 +or.failed9857: store { ptr, i64, i64 } %t391, ptr %a393 - store { ptr, i64, i64 } { ptr @.str.6487, 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 - %t397 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t396) - store { ptr, i64, i64 } %t395, 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 %a403 - store { ptr, i64, i64 } { ptr @.str.6488, 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 - %t407 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t406) - store { ptr, i64, i64 } %t405, ptr %a409 - store { ptr, i64, i64 } %t407, ptr %a410 - call void @finch_str_concat(ptr %a408, ptr %a409, ptr %a410) - %t411 = load { ptr, i64, i64 }, ptr %a408 - store { ptr, i64, i64 } %t411, ptr %a413 - call void @finch_str_copy(ptr %a412, ptr %a413) - %t414 = call i64 @finch_shell(ptr %a412) + call void @finch_str_drop(ptr %a393) + br label %or.bend9859 +or.bend9859: + br label %or.end9860 +or.ok9858: + br label %or.end9860 +or.end9860: + %t394 = phi { ptr, i64, i64 } [ { ptr @.str.6705, i64 0, i64 0 }, %or.bend9859 ], [ %t392, %or.ok9858 ] + store { ptr, i64, i64 } %t394, ptr %a396 + store { ptr, i64, i64 } { ptr @.str.6706, i64 24, i64 0 }, ptr %a397 + call void @finch_str_concat(ptr %a395, ptr %a396, ptr %a397) + store { ptr, i64, i64 } %t394, ptr %a398 + call void @finch_str_drop(ptr %a398) + %t399 = load { ptr, i64, i64 }, ptr %a395 + %t400 = load { ptr, i64, i64 }, ptr %a291 + store { ptr, i64, i64 } %t399, ptr %a402 + store { ptr, i64, i64 } %t400, ptr %a403 + call void @finch_str_concat(ptr %a401, ptr %a402, ptr %a403) + store { ptr, i64, i64 } %t399, ptr %a404 + call void @finch_str_drop(ptr %a404) + %t405 = load { ptr, i64, i64 }, ptr %a401 + %t406 = extractvalue { ptr, i64, i64 } %t405, 1 + %t407 = trunc i64 %t406 to i32 + %t408 = extractvalue { ptr, i64, i64 } %t405, 0 + %t409 = icmp eq ptr %t408, null + %t410 = select i1 %t409, ptr @.str.6707, ptr %t408 + %t411 = call i32 (ptr, ...) @printf(ptr @.str.6708, i32 %t407, ptr %t410) + store { ptr, i64, i64 } %t405, ptr %a412 + call void @finch_str_drop(ptr %a412) + %t413 = call i32 (ptr, ...) @printf(ptr @.str.6709) + %t414 = load { ptr, i64, i64 }, ptr %a84 + call void @finch.host.remove({ ptr, i64, i64 } %t414) + %t415 = load { ptr, i64, i64 }, ptr %a109 + call void @finch.host.remove({ ptr, i64, i64 } %t415) + %t416 = load { ptr, i64, i64 }, ptr %a319 + call void @finch.host.remove({ ptr, i64, i64 } %t416) + call void @finch_str_drop(ptr %a320) + call void @finch_str_drop(ptr %a319) + call void @finch.drop.arr_str(ptr %a281) + call void @finch_str_drop(ptr %a252) + call void @finch_str_drop(ptr %a109) + call void @finch_str_drop(ptr %a92) + call void @finch_str_drop(ptr %a84) + call void @finch_str_drop(ptr %a77) + call void @finch_str_drop(ptr %a70) + call void @finch_str_drop(ptr %a23) + call void @finch_str_drop(ptr %a13) ret i64 1 -endif9352: - %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 - call void @finch_str_copy(ptr %a418, ptr %a417) - %t419 = load { ptr, i64, i64 }, ptr %a418 - %t420 = load i64, ptr %t415 - %t421 = add i64 %t420, 1 - call void @finch_arr_reserve(ptr %a271, i64 %t421, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t422 = load ptr, ptr %a271 - %t423 = getelementptr inbounds { ptr, i64, i64 }, ptr %t422, i64 %t420 - store { ptr, i64, i64 } %t419, ptr %t423 - 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.6489, 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 - %t430 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t429) - store { ptr, i64, i64 } %t428, ptr %a432 - store { ptr, i64, i64 } %t430, ptr %a433 - 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 %endif9346 -else9345: - %t435 = load { ptr, i64, i64 }, ptr %a281 - store { ptr, i64, i64 } %t435, ptr %a436 - store { ptr, i64, i64 } { ptr @.str.6491, 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.from9357 -logic.from9357: - br i1 %t440, label %logic.end9359, label %logic.rhs9358 -logic.rhs9358: - %t441 = load { ptr, i64, i64 }, ptr %a281 +endif9856: + %t417 = getelementptr inbounds { ptr, i64, i64 }, ptr %a281, i32 0, i32 1 + %t418 = load { ptr, i64, i64 }, ptr %a319 + store { ptr, i64, i64 } %t418, ptr %a419 + call void @finch_str_copy(ptr %a420, ptr %a419) + %t421 = load { ptr, i64, i64 }, ptr %a420 + %t422 = load i64, ptr %t417 + %t423 = add i64 %t422, 1 + call void @finch_arr_reserve(ptr %a281, i64 %t423, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t424 = load ptr, ptr %a281 + %t425 = getelementptr inbounds { ptr, i64, i64 }, ptr %t424, i64 %t422 + store { ptr, i64, i64 } %t421, ptr %t425 + store i64 %t423, ptr %t417 + %t426 = load { ptr, i64, i64 }, ptr %a252 + store { ptr, i64, i64 } %t426, ptr %a428 + store { ptr, i64, i64 } { ptr @.str.6710, i64 1, i64 0 }, ptr %a429 + call void @finch_str_concat(ptr %a427, ptr %a428, ptr %a429) + %t430 = load { ptr, i64, i64 }, ptr %a427 + %t431 = load { ptr, i64, i64 }, ptr %a319 + %t432 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t431) + store { ptr, i64, i64 } %t430, ptr %a434 + store { ptr, i64, i64 } %t432, ptr %a435 + call void @finch_str_concat(ptr %a433, ptr %a434, ptr %a435) + store { ptr, i64, i64 } %t430, ptr %a436 + call void @finch_str_drop(ptr %a436) + store { ptr, i64, i64 } %t432, ptr %a437 + call void @finch_str_drop(ptr %a437) + %t438 = load { ptr, i64, i64 }, ptr %a433 + %t439 = load { ptr, i64, i64 }, ptr %a252 + store { ptr, i64, i64 } %t438, ptr %a252 + store { ptr, i64, i64 } %t439, ptr %a440 + call void @finch_str_drop(ptr %a440) + call void @finch_str_drop(ptr %a320) + call void @finch_str_drop(ptr %a319) + br label %endif9850 +else9849: + %t441 = load { ptr, i64, i64 }, ptr %a291 store { ptr, i64, i64 } %t441, ptr %a442 - store { ptr, i64, i64 } { ptr @.str.6493, i64 2, i64 0 }, ptr %a444 + store { ptr, i64, i64 } { ptr @.str.6712, 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.rend9360 -logic.rend9360: - br label %logic.end9359 -logic.end9359: - %t447 = phi i1 [ true, %logic.from9357 ], [ %t446, %logic.rend9360 ] - br i1 %t447, label %then9361, label %else9362 -then9361: - %t448 = load { ptr, i64, i64 }, ptr %a248 - store { ptr, i64, i64 } %t448, ptr %a450 - store { ptr, i64, i64 } { ptr @.str.6494, 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 - %t454 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t453) - store { ptr, i64, i64 } %t452, ptr %a456 - store { ptr, i64, i64 } %t454, ptr %a457 + br label %logic.from9861 +logic.from9861: + br i1 %t446, label %logic.end9863, label %logic.rhs9862 +logic.rhs9862: + %t447 = load { ptr, i64, i64 }, ptr %a291 + store { ptr, i64, i64 } %t447, ptr %a448 + store { ptr, i64, i64 } { ptr @.str.6714, i64 2, i64 0 }, ptr %a450 + %t451 = call i32 @finch_str_ends(ptr %a448, ptr %a450) + %t452 = icmp ne i32 %t451, 0 + br label %logic.rend9864 +logic.rend9864: + br label %logic.end9863 +logic.end9863: + %t453 = phi i1 [ true, %logic.from9861 ], [ %t452, %logic.rend9864 ] + br i1 %t453, label %then9865, label %else9866 +then9865: + %t454 = load { ptr, i64, i64 }, ptr %a252 + store { ptr, i64, i64 } %t454, ptr %a456 + store { ptr, i64, i64 } { ptr @.str.6715, i64 1, i64 0 }, 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 %a248 - br label %endif9363 -else9362: - %t459 = load { ptr, i64, i64 }, ptr %a248 - store { ptr, i64, i64 } %t459, ptr %a461 - store { ptr, i64, i64 } { ptr @.str.6495, 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 - %t465 = load %S.platform.Target, ptr %a2 - %t466 = call { ptr, i64, i64 } @finch.linker.libFlags({ ptr, i64, i64 } %t464, %S.platform.Target %t465) - store { ptr, i64, i64 } %t463, ptr %a468 - store { ptr, i64, i64 } %t466, ptr %a469 - 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 %endif9363 -endif9363: - br label %endif9346 -endif9346: - br label %each.step9342 -each.step9342: - %t471 = load i64, ptr %a273 - %t472 = add i64 %t471, 1 - store i64 %t472, ptr %a273 - br label %each.cond9340 -each.end9343: - %t473 = load { ptr, i64, i64 }, ptr %a248 - store { ptr, i64, i64 } %t473, ptr %a475 - store { ptr, i64, i64 } { ptr @.str.6496, 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 - %t479 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t478) - store { ptr, i64, i64 } %t477, ptr %a481 - store { ptr, i64, i64 } %t479, ptr %a482 - 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.6497, i64 5, i64 0 }, ptr %a486 - call void @finch_str_concat(ptr %a484, ptr %a485, ptr %a486) - %t487 = load { ptr, i64, i64 }, ptr %a484 + %t459 = load { ptr, i64, i64 }, ptr %a291 + %t460 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t459) + store { ptr, i64, i64 } %t458, ptr %a462 + store { ptr, i64, i64 } %t460, ptr %a463 + call void @finch_str_concat(ptr %a461, ptr %a462, ptr %a463) + store { ptr, i64, i64 } %t458, ptr %a464 + call void @finch_str_drop(ptr %a464) + store { ptr, i64, i64 } %t460, ptr %a465 + call void @finch_str_drop(ptr %a465) + %t466 = load { ptr, i64, i64 }, ptr %a461 + %t467 = load { ptr, i64, i64 }, ptr %a252 + store { ptr, i64, i64 } %t466, ptr %a252 + store { ptr, i64, i64 } %t467, ptr %a468 + call void @finch_str_drop(ptr %a468) + br label %endif9867 +else9866: + %t469 = load { ptr, i64, i64 }, ptr %a252 + store { ptr, i64, i64 } %t469, ptr %a471 + store { ptr, i64, i64 } { ptr @.str.6716, 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 = load { ptr, i64, i64 }, ptr %a291 + %t475 = load %S.platform.Target, ptr %a2 + %t476 = call { ptr, i64, i64 } @finch.linker.libFlags({ ptr, i64, i64 } %t474, %S.platform.Target %t475) + store { ptr, i64, i64 } %t473, ptr %a478 + store { ptr, i64, i64 } %t476, ptr %a479 + call void @finch_str_concat(ptr %a477, ptr %a478, ptr %a479) + store { ptr, i64, i64 } %t473, ptr %a480 + call void @finch_str_drop(ptr %a480) + store { ptr, i64, i64 } %t476, ptr %a481 + call void @finch_str_drop(ptr %a481) + %t482 = load { ptr, i64, i64 }, ptr %a477 + %t483 = load { ptr, i64, i64 }, ptr %a252 + store { ptr, i64, i64 } %t482, ptr %a252 + store { ptr, i64, i64 } %t483, ptr %a484 + call void @finch_str_drop(ptr %a484) + br label %endif9867 +endif9867: + br label %endif9850 +endif9850: + br label %each.step9846 +each.step9846: + %t485 = load i64, ptr %a283 + %t486 = add i64 %t485, 1 + store i64 %t486, ptr %a283 + br label %each.cond9844 +each.end9847: + %t487 = load { ptr, i64, i64 }, ptr %a252 store { ptr, i64, i64 } %t487, ptr %a489 - call void @finch_str_copy(ptr %a488, ptr %a489) - %t490 = call i64 @finch_shell(ptr %a488) - store i64 %t490, ptr %a491 - %t492 = load { ptr, i64, i64 }, ptr %a101 - store { ptr, i64, i64 } %t492, ptr %a493 - store { ptr, i64, i64 } zeroinitializer, ptr %a494 - store { ptr, i64, i64 } zeroinitializer, ptr %a495 - %t496 = call i32 @finch_try_read_file(ptr %a494, ptr %a493, ptr %a495) - %t497 = icmp eq i32 %t496, 0 - %t498 = load { ptr, i64, i64 }, ptr %a495 + store { ptr, i64, i64 } { ptr @.str.6717, i64 3, i64 0 }, ptr %a490 + call void @finch_str_concat(ptr %a488, ptr %a489, ptr %a490) + %t491 = load { ptr, i64, i64 }, ptr %a488 + %t492 = load { ptr, i64, i64 }, ptr %a109 + %t493 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t492) + store { ptr, i64, i64 } %t491, ptr %a495 + store { ptr, i64, i64 } %t493, ptr %a496 + call void @finch_str_concat(ptr %a494, ptr %a495, ptr %a496) + store { ptr, i64, i64 } %t491, ptr %a497 + call void @finch_str_drop(ptr %a497) + store { ptr, i64, i64 } %t493, ptr %a498 + call void @finch_str_drop(ptr %a498) %t499 = load { ptr, i64, i64 }, ptr %a494 - br i1 %t497, label %or.failed9364, label %or.ok9365 -or.failed9364: - store { ptr, i64, i64 } %t498, ptr %a500 - br label %or.bend9366 -or.bend9366: - br label %or.end9367 -or.ok9365: - br label %or.end9367 -or.end9367: - %t501 = phi { ptr, i64, i64 } [ { ptr @.str.6498, i64 0, i64 0 }, %or.bend9366 ], [ %t499, %or.ok9365 ] - 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.6499, 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.6500, 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 - %t514 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t513) - store { ptr, i64, i64 } %t512, ptr %a516 - store { ptr, i64, i64 } %t514, ptr %a517 - call void @finch_str_concat(ptr %a515, ptr %a516, ptr %a517) - %t518 = load { ptr, i64, i64 }, ptr %a515 - store { ptr, i64, i64 } %t518, ptr %a520 - call void @finch_str_copy(ptr %a519, ptr %a520) - %t521 = call i64 @finch_shell(ptr %a519) - store i64 0, ptr %a522 - br label %each.cond9368 -each.cond9368: - %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.body9369, label %each.end9371 -each.body9369: - %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.6501, 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.step9370 -each.step9370: - %t540 = load i64, ptr %a522 - %t541 = add i64 %t540, 1 - store i64 %t541, ptr %a522 - br label %each.cond9368 -each.end9371: - %t542 = load i64, ptr %a491 - %t543 = icmp eq i64 %t542, 127 - br i1 %t543, label %then9372, label %endif9374 -then9372: - %t544 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } { ptr @.str.6502, 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.6503, 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.6504, ptr %t555 - %t558 = call i32 (ptr, ...) @printf(ptr @.str.6505, i32 %t554, ptr %t557) - %t559 = call i32 (ptr, ...) @printf(ptr @.str.6506) + store { ptr, i64, i64 } %t499, ptr %a501 + store { ptr, i64, i64 } { ptr @.str.6718, i64 5, i64 0 }, ptr %a502 + call void @finch_str_concat(ptr %a500, ptr %a501, ptr %a502) + store { ptr, i64, i64 } %t499, ptr %a503 + call void @finch_str_drop(ptr %a503) + %t504 = load { ptr, i64, i64 }, ptr %a500 + %t505 = call i64 @finch.host.run({ ptr, i64, i64 } %t504) + store { ptr, i64, i64 } %t504, ptr %a506 + call void @finch_str_drop(ptr %a506) + store i64 %t505, ptr %a507 + %t508 = load { ptr, i64, i64 }, ptr %a109 + store { ptr, i64, i64 } %t508, ptr %a509 + store { ptr, i64, i64 } zeroinitializer, ptr %a510 + store { ptr, i64, i64 } zeroinitializer, ptr %a511 + %t512 = call i32 @finch_try_read_file(ptr %a510, ptr %a509, ptr %a511) + %t513 = icmp eq i32 %t512, 0 + %t514 = load { ptr, i64, i64 }, ptr %a511 + %t515 = load { ptr, i64, i64 }, ptr %a510 + br i1 %t513, label %or.failed9868, label %or.ok9869 +or.failed9868: + store { ptr, i64, i64 } %t514, ptr %a516 + call void @finch_str_drop(ptr %a516) + br label %or.bend9870 +or.bend9870: + br label %or.end9871 +or.ok9869: + br label %or.end9871 +or.end9871: + %t517 = phi { ptr, i64, i64 } [ { ptr @.str.6719, i64 0, i64 0 }, %or.bend9870 ], [ %t515, %or.ok9869 ] + store { ptr, i64, i64 } %t517, ptr %a518 + %t519 = load { ptr, i64, i64 }, ptr %a84 + call void @finch.host.remove({ ptr, i64, i64 } %t519) + %t520 = load { ptr, i64, i64 }, ptr %a109 + call void @finch.host.remove({ ptr, i64, i64 } %t520) + store i64 0, ptr %a521 + br label %each.cond9872 +each.cond9872: + %t522 = getelementptr inbounds { ptr, i64, i64 }, ptr %a281, i32 0, i32 1 + %t523 = load i64, ptr %t522 + %t524 = load i64, ptr %a521 + %t525 = icmp slt i64 %t524, %t523 + br i1 %t525, label %each.body9873, label %each.end9875 +each.body9873: + %t526 = load ptr, ptr %a281 + %t527 = getelementptr inbounds { ptr, i64, i64 }, ptr %t526, i64 %t524 + %t528 = load { ptr, i64, i64 }, ptr %t527 + store { ptr, i64, i64 } %t528, ptr %a529 + %t530 = load { ptr, i64, i64 }, ptr %a529 + call void @finch.host.remove({ ptr, i64, i64 } %t530) + br label %each.step9874 +each.step9874: + %t531 = load i64, ptr %a521 + %t532 = add i64 %t531, 1 + store i64 %t532, ptr %a521 + br label %each.cond9872 +each.end9875: + %t533 = load i64, ptr %a507 + %t534 = icmp eq i64 %t533, 127 + br i1 %t534, label %then9876, label %endif9878 +then9876: + %t535 = load { ptr, i64, i64 }, ptr %a23 + store { ptr, i64, i64 } { ptr @.str.6720, i64 42, i64 0 }, 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 + store { ptr, i64, i64 } %t539, ptr %a541 + store { ptr, i64, i64 } { ptr @.str.6721, i64 32, i64 0 }, ptr %a542 + call void @finch_str_concat(ptr %a540, ptr %a541, ptr %a542) + store { ptr, i64, i64 } %t539, ptr %a543 + call void @finch_str_drop(ptr %a543) + %t544 = load { ptr, i64, i64 }, ptr %a540 + %t545 = extractvalue { ptr, i64, i64 } %t544, 1 + %t546 = trunc i64 %t545 to i32 + %t547 = extractvalue { ptr, i64, i64 } %t544, 0 + %t548 = icmp eq ptr %t547, null + %t549 = select i1 %t548, ptr @.str.6722, ptr %t547 + %t550 = call i32 (ptr, ...) @printf(ptr @.str.6723, i32 %t546, ptr %t549) + store { ptr, i64, i64 } %t544, ptr %a551 + call void @finch_str_drop(ptr %a551) + %t552 = call i32 (ptr, ...) @printf(ptr @.str.6724) + call void @finch_str_drop(ptr %a518) + call void @finch.drop.arr_str(ptr %a281) + call void @finch_str_drop(ptr %a252) + call void @finch_str_drop(ptr %a109) + call void @finch_str_drop(ptr %a92) + call void @finch_str_drop(ptr %a84) + call void @finch_str_drop(ptr %a77) + call void @finch_str_drop(ptr %a70) + call void @finch_str_drop(ptr %a23) + call void @finch_str_drop(ptr %a13) ret i64 1 -endif9374: - %t560 = load i64, ptr %a491 - %t561 = icmp ne i64 %t560, 0 - br i1 %t561, label %then9375, label %endif9377 -then9375: - %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 -endif9377: - %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 %then9378, label %endif9380 -then9378: - %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.6507, ptr %t572 - %t575 = call i32 (ptr, ...) @printf(ptr @.str.6508, i32 %t571, ptr %t574) - %t576 = call i32 (ptr, ...) @printf(ptr @.str.6509) - br label %endif9380 -endif9380: +endif9878: + %t553 = load i64, ptr %a507 + %t554 = icmp ne i64 %t553, 0 + br i1 %t554, label %then9879, label %endif9881 +then9879: + %t555 = load { ptr, i64, i64 }, ptr %a518 + %t556 = load %S.cimport.CImports, ptr %a3 + %t557 = load %S.platform.Target, ptr %a2 + %t558 = call i64 @finch.linker.linkFailed({ ptr, i64, i64 } %t555, %S.cimport.CImports %t556, %S.platform.Target %t557) + call void @finch_str_drop(ptr %a518) + call void @finch.drop.arr_str(ptr %a281) + call void @finch_str_drop(ptr %a252) + call void @finch_str_drop(ptr %a109) + call void @finch_str_drop(ptr %a92) + call void @finch_str_drop(ptr %a84) + call void @finch_str_drop(ptr %a77) + call void @finch_str_drop(ptr %a70) + call void @finch_str_drop(ptr %a23) + call void @finch_str_drop(ptr %a13) + ret i64 %t558 +endif9881: + %t559 = getelementptr inbounds { ptr, i64, i64 }, ptr %a518, i32 0, i32 1 + %t560 = load i64, ptr %t559 + %t561 = icmp sgt i64 %t560, 0 + br i1 %t561, label %then9882, label %endif9884 +then9882: + %t562 = load { ptr, i64, i64 }, ptr %a518 + %t563 = extractvalue { ptr, i64, i64 } %t562, 1 + %t564 = trunc i64 %t563 to i32 + %t565 = extractvalue { ptr, i64, i64 } %t562, 0 + %t566 = icmp eq ptr %t565, null + %t567 = select i1 %t566, ptr @.str.6725, ptr %t565 + %t568 = call i32 (ptr, ...) @printf(ptr @.str.6726, i32 %t564, ptr %t567) + %t569 = call i32 (ptr, ...) @printf(ptr @.str.6727) + br label %endif9884 +endif9884: + call void @finch_str_drop(ptr %a518) + call void @finch.drop.arr_str(ptr %a281) + call void @finch_str_drop(ptr %a252) + call void @finch_str_drop(ptr %a109) + call void @finch_str_drop(ptr %a92) + call void @finch_str_drop(ptr %a84) + call void @finch_str_drop(ptr %a77) + call void @finch_str_drop(ptr %a70) + call void @finch_str_drop(ptr %a23) + call void @finch_str_drop(ptr %a13) ret i64 0 } @@ -84835,72 +101898,79 @@ entry: store i8 %p0, ptr %a1 %t2 = load i8, ptr %a1 %t3 = icmp uge i8 %t2, 48 - br label %logic.from9381 -logic.from9381: - br i1 %t3, label %logic.rhs9382, label %logic.end9383 -logic.rhs9382: + br label %logic.from9885 +logic.from9885: + br i1 %t3, label %logic.rhs9886, label %logic.end9887 +logic.rhs9886: %t4 = load i8, ptr %a1 %t5 = icmp ule i8 %t4, 57 - br label %logic.rend9384 -logic.rend9384: - br label %logic.end9383 -logic.end9383: - %t6 = phi i1 [ false, %logic.from9381 ], [ %t5, %logic.rend9384 ] - br i1 %t6, label %then9385, label %endif9387 -then9385: + br label %logic.rend9888 +logic.rend9888: + br label %logic.end9887 +logic.end9887: + %t6 = phi i1 [ false, %logic.from9885 ], [ %t5, %logic.rend9888 ] + br i1 %t6, label %then9889, label %endif9891 +then9889: %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 -endif9387: +endif9891: %t11 = load i8, ptr %a1 %t12 = icmp uge i8 %t11, 97 - br label %logic.from9388 -logic.from9388: - br i1 %t12, label %logic.rhs9389, label %logic.end9390 -logic.rhs9389: + br label %logic.from9892 +logic.from9892: + br i1 %t12, label %logic.rhs9893, label %logic.end9894 +logic.rhs9893: %t13 = load i8, ptr %a1 %t14 = icmp ule i8 %t13, 102 - br label %logic.rend9391 -logic.rend9391: - br label %logic.end9390 -logic.end9390: - %t15 = phi i1 [ false, %logic.from9388 ], [ %t14, %logic.rend9391 ] - br i1 %t15, label %then9392, label %endif9394 -then9392: + br label %logic.rend9895 +logic.rend9895: + br label %logic.end9894 +logic.end9894: + %t15 = phi i1 [ false, %logic.from9892 ], [ %t14, %logic.rend9895 ] + br i1 %t15, label %then9896, label %endif9898 +then9896: %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 -endif9394: +endif9898: %t21 = load i8, ptr %a1 %t22 = icmp uge i8 %t21, 65 - br label %logic.from9395 -logic.from9395: - br i1 %t22, label %logic.rhs9396, label %logic.end9397 -logic.rhs9396: + br label %logic.from9899 +logic.from9899: + br i1 %t22, label %logic.rhs9900, label %logic.end9901 +logic.rhs9900: %t23 = load i8, ptr %a1 %t24 = icmp ule i8 %t23, 70 - br label %logic.rend9398 -logic.rend9398: - br label %logic.end9397 -logic.end9397: - %t25 = phi i1 [ false, %logic.from9395 ], [ %t24, %logic.rend9398 ] - br i1 %t25, label %then9399, label %endif9401 -then9399: + br label %logic.rend9902 +logic.rend9902: + br label %logic.end9901 +logic.end9901: + %t25 = phi i1 [ false, %logic.from9899 ], [ %t24, %logic.rend9902 ] + br i1 %t25, label %then9903, label %endif9905 +then9903: %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 -endif9401: +endif9905: ret i64 -1 } +define internal void @finch.drop.arr_u8(ptr %a) { +entry: + + call void @finch_arr_free(ptr %a) + ret void +} + define internal { ptr, i64, i64 } @finch.lsp.uriToPath({ ptr, i64, i64 } %p0) { entry: %a1 = alloca { ptr, i64, i64 }, align 16 @@ -84912,10 +101982,11 @@ entry: %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 + %a20 = alloca { ptr, i64, i64 }, align 16 + %a21 = alloca { ptr, i64, i64 }, align 16 + %a22 = alloca i64, align 16 + %a107 = alloca { ptr, i64, i64 }, align 16 + %a108 = 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 @@ -84924,185 +101995,190 @@ 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.6511, i64 7, i64 0 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.6729, 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 %then9402, label %endif9404 -then9402: + br i1 %t12, label %then9906, label %endif9908 +then9906: %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.6512, i64 114) + call void @finch_str_sub(ptr %a15, ptr %a14, i64 7, i64 %t17, ptr @.str.6730, i64 114) %t18 = load { ptr, i64, i64 }, ptr %a15 + %t19 = load { ptr, i64, i64 }, ptr %a6 store { ptr, i64, i64 } %t18, ptr %a6 - br label %endif9404 -endif9404: - store { ptr, i64, i64 } zeroinitializer, ptr %a19 - store i64 0, ptr %a20 - br label %while.cond9405 -while.cond9405: - %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.body9406, label %while.end9407 -while.body9406: - %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 %range9408, label %inrange9409 -range9408: - call void @finch_panic_index(ptr @.str.6513, i64 119, i64 %t25, i64 %t27) + store { ptr, i64, i64 } %t19, ptr %a20 + call void @finch_str_drop(ptr %a20) + br label %endif9908 +endif9908: + store { ptr, i64, i64 } zeroinitializer, ptr %a21 + store i64 0, ptr %a22 + br label %while.cond9909 +while.cond9909: + %t23 = load i64, ptr %a22 + %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 + %t25 = load i64, ptr %t24 + %t26 = icmp slt i64 %t23, %t25 + br i1 %t26, label %while.body9910, label %while.end9911 +while.body9910: + %t27 = load i64, ptr %a22 + %t28 = load { ptr, i64, i64 }, ptr %a6 + %t29 = extractvalue { ptr, i64, i64 } %t28, 1 + %t30 = icmp uge i64 %t27, %t29 + br i1 %t30, label %range9912, label %inrange9913 +range9912: + call void @finch_panic_index(ptr @.str.6731, i64 119, i64 %t27, i64 %t29) unreachable -inrange9409: - %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.from9410 -logic.from9410: - br i1 %t32, label %logic.rhs9411, label %logic.end9412 -logic.rhs9411: - %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.rend9413 -logic.rend9413: - br label %logic.end9412 -logic.end9412: - %t39 = phi i1 [ false, %logic.from9410 ], [ %t38, %logic.rend9413 ] - br label %logic.from9414 -logic.from9414: - br i1 %t39, label %logic.rhs9415, label %logic.end9416 -logic.rhs9415: - %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 %range9417, label %inrange9418 -range9417: - call void @finch_panic_index(ptr @.str.6514, i64 119, i64 %t41, i64 %t43) +inrange9913: + %t31 = extractvalue { ptr, i64, i64 } %t28, 0 + %t32 = getelementptr inbounds i8, ptr %t31, i64 %t27 + %t33 = load i8, ptr %t32 + %t34 = icmp eq i8 %t33, 37 + br label %logic.from9914 +logic.from9914: + br i1 %t34, label %logic.rhs9915, label %logic.end9916 +logic.rhs9915: + %t35 = load i64, ptr %a22 + %t36 = add i64 %t35, 2 + %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 + %t38 = load i64, ptr %t37 + %t39 = add i64 %t38, 0 + %t40 = icmp slt i64 %t36, %t39 + br label %logic.rend9917 +logic.rend9917: + br label %logic.end9916 +logic.end9916: + %t41 = phi i1 [ false, %logic.from9914 ], [ %t40, %logic.rend9917 ] + br label %logic.from9918 +logic.from9918: + br i1 %t41, label %logic.rhs9919, label %logic.end9920 +logic.rhs9919: + %t42 = load i64, ptr %a22 + %t43 = add i64 %t42, 1 + %t44 = load { ptr, i64, i64 }, ptr %a6 + %t45 = extractvalue { ptr, i64, i64 } %t44, 1 + %t46 = icmp uge i64 %t43, %t45 + br i1 %t46, label %range9921, label %inrange9922 +range9921: + call void @finch_panic_index(ptr @.str.6732, i64 119, i64 %t43, i64 %t45) unreachable -inrange9418: - %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.rend9419 -logic.rend9419: - br label %logic.end9416 -logic.end9416: - %t50 = phi i1 [ false, %logic.from9414 ], [ %t49, %logic.rend9419 ] - br label %logic.from9420 -logic.from9420: - br i1 %t50, label %logic.rhs9421, label %logic.end9422 -logic.rhs9421: - %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 %range9423, label %inrange9424 -range9423: - call void @finch_panic_index(ptr @.str.6515, i64 119, i64 %t52, i64 %t54) +inrange9922: + %t47 = extractvalue { ptr, i64, i64 } %t44, 0 + %t48 = getelementptr inbounds i8, ptr %t47, i64 %t43 + %t49 = load i8, ptr %t48 + %t50 = call i64 @finch.lsp.hexval(i8 %t49) + %t51 = icmp sge i64 %t50, 0 + br label %logic.rend9923 +logic.rend9923: + br label %logic.end9920 +logic.end9920: + %t52 = phi i1 [ false, %logic.from9918 ], [ %t51, %logic.rend9923 ] + br label %logic.from9924 +logic.from9924: + br i1 %t52, label %logic.rhs9925, label %logic.end9926 +logic.rhs9925: + %t53 = load i64, ptr %a22 + %t54 = add i64 %t53, 2 + %t55 = load { ptr, i64, i64 }, ptr %a6 + %t56 = extractvalue { ptr, i64, i64 } %t55, 1 + %t57 = icmp uge i64 %t54, %t56 + br i1 %t57, label %range9927, label %inrange9928 +range9927: + call void @finch_panic_index(ptr @.str.6733, i64 119, i64 %t54, i64 %t56) unreachable -inrange9424: - %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.rend9425 -logic.rend9425: - br label %logic.end9422 -logic.end9422: - %t61 = phi i1 [ false, %logic.from9420 ], [ %t60, %logic.rend9425 ] - br i1 %t61, label %then9426, label %else9427 -then9426: - %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 %range9429, label %inrange9430 -range9429: - call void @finch_panic_index(ptr @.str.6516, i64 120, i64 %t64, i64 %t66) +inrange9928: + %t58 = extractvalue { ptr, i64, i64 } %t55, 0 + %t59 = getelementptr inbounds i8, ptr %t58, i64 %t54 + %t60 = load i8, ptr %t59 + %t61 = call i64 @finch.lsp.hexval(i8 %t60) + %t62 = icmp sge i64 %t61, 0 + br label %logic.rend9929 +logic.rend9929: + br label %logic.end9926 +logic.end9926: + %t63 = phi i1 [ false, %logic.from9924 ], [ %t62, %logic.rend9929 ] + br i1 %t63, label %then9930, label %else9931 +then9930: + %t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %a21, i32 0, i32 1 + %t65 = load i64, ptr %a22 + %t66 = add i64 %t65, 1 + %t67 = load { ptr, i64, i64 }, ptr %a6 + %t68 = extractvalue { ptr, i64, i64 } %t67, 1 + %t69 = icmp uge i64 %t66, %t68 + br i1 %t69, label %range9933, label %inrange9934 +range9933: + call void @finch_panic_index(ptr @.str.6734, i64 120, i64 %t66, i64 %t68) unreachable -inrange9430: - %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 %range9431, label %inrange9432 -range9431: - call void @finch_panic_index(ptr @.str.6517, i64 120, i64 %t74, i64 %t76) +inrange9934: + %t70 = extractvalue { ptr, i64, i64 } %t67, 0 + %t71 = getelementptr inbounds i8, ptr %t70, i64 %t66 + %t72 = load i8, ptr %t71 + %t73 = call i64 @finch.lsp.hexval(i8 %t72) + %t74 = mul i64 %t73, 16 + %t75 = load i64, ptr %a22 + %t76 = add i64 %t75, 2 + %t77 = load { ptr, i64, i64 }, ptr %a6 + %t78 = extractvalue { ptr, i64, i64 } %t77, 1 + %t79 = icmp uge i64 %t76, %t78 + br i1 %t79, label %range9935, label %inrange9936 +range9935: + call void @finch_panic_index(ptr @.str.6735, i64 120, i64 %t76, i64 %t78) unreachable -inrange9432: - %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 %endif9428 -else9427: - %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 %range9433, label %inrange9434 -range9433: - call void @finch_panic_index(ptr @.str.6518, i64 123, i64 %t91, i64 %t93) +inrange9936: + %t80 = extractvalue { ptr, i64, i64 } %t77, 0 + %t81 = getelementptr inbounds i8, ptr %t80, i64 %t76 + %t82 = load i8, ptr %t81 + %t83 = call i64 @finch.lsp.hexval(i8 %t82) + %t84 = add i64 %t74, %t83 + %t85 = trunc i64 %t84 to i8 + %t86 = load i64, ptr %t64 + %t87 = add i64 %t86, 1 + call void @finch_arr_reserve(ptr %a21, i64 %t87, i64 ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)) + %t88 = load ptr, ptr %a21 + %t89 = getelementptr inbounds i8, ptr %t88, i64 %t86 + store i8 %t85, ptr %t89 + store i64 %t87, ptr %t64 + %t90 = load i64, ptr %a22 + %t91 = add i64 %t90, 3 + store i64 %t91, ptr %a22 + br label %endif9932 +else9931: + %t92 = getelementptr inbounds { ptr, i64, i64 }, ptr %a21, i32 0, i32 1 + %t93 = load i64, ptr %a22 + %t94 = load { ptr, i64, i64 }, ptr %a6 + %t95 = extractvalue { ptr, i64, i64 } %t94, 1 + %t96 = icmp uge i64 %t93, %t95 + br i1 %t96, label %range9937, label %inrange9938 +range9937: + call void @finch_panic_index(ptr @.str.6736, i64 123, i64 %t93, i64 %t95) unreachable -inrange9434: - %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 %endif9428 -endif9428: - br label %while.cond9405 -while.end9407: - %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 +inrange9938: + %t97 = extractvalue { ptr, i64, i64 } %t94, 0 + %t98 = getelementptr inbounds i8, ptr %t97, i64 %t93 + %t99 = load i8, ptr %t98 + %t100 = load i64, ptr %t92 + %t101 = add i64 %t100, 1 + call void @finch_arr_reserve(ptr %a21, i64 %t101, i64 ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)) + %t102 = load ptr, ptr %a21 + %t103 = getelementptr inbounds i8, ptr %t102, i64 %t100 + store i8 %t99, ptr %t103 + store i64 %t101, ptr %t92 + %t104 = load i64, ptr %a22 + %t105 = add i64 %t104, 1 + store i64 %t105, ptr %a22 + br label %endif9932 +endif9932: + br label %while.cond9909 +while.end9911: + %t106 = load { ptr, i64, i64 }, ptr %a21 + store { ptr, i64, i64 } zeroinitializer, ptr %a107 + store { ptr, i64, i64 } %t106, ptr %a108 + call void @finch_str_from_bytes(ptr %a107, ptr %a108) + %t109 = load { ptr, i64, i64 }, ptr %a107 + call void @finch.drop.arr_u8(ptr %a21) + call void @finch_str_drop(ptr %a6) + ret { ptr, i64, i64 } %t109 } define internal { ptr, i64, i64 } @finch.lsp.pathToUri({ ptr, i64, i64 } %p0) { @@ -85117,36 +102193,40 @@ entry: %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 + %a47 = alloca { ptr, i64, i64 }, align 16 + %a51 = 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 - %a80 = 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 - %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 + %a85 = alloca { ptr, i64, i64 }, align 16 + %a86 = alloca { ptr, i64, i64 }, align 16 + %a87 = alloca { ptr, i64, i64 }, align 16 + %a88 = alloca { ptr, i64, i64 }, align 16 + %a97 = alloca { ptr, i64, i64 }, align 16 + %a98 = alloca { ptr, i64, i64 }, align 16 store { ptr, i64, i64 } %p0, ptr %a1 - store { ptr, i64, i64 } { ptr @.str.6519, i64 16, i64 0 }, ptr %a2 + store { ptr, i64, i64 } { ptr @.str.6737, 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.6520, i64 7, i64 0 }, ptr %t5 + store { ptr, i64, i64 } { ptr @.str.6738, 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.cond9435 -each.cond9435: + br label %each.cond9939 +each.cond9939: %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.body9436, label %each.end9438 -each.body9436: + br i1 %t14, label %each.body9940, label %each.end9942 +each.body9940: %t15 = load ptr, ptr %a1 %t16 = getelementptr inbounds i8, ptr %t15, i64 %t13 %t17 = load i8, ptr %t16 @@ -85156,153 +102236,163 @@ each.body9436: store i64 %t20, ptr %a21 %t22 = load i8, ptr %a18 %t23 = icmp uge i8 %t22, 97 - br label %logic.from9439 -logic.from9439: - br i1 %t23, label %logic.rhs9440, label %logic.end9441 -logic.rhs9440: + br label %logic.from9943 +logic.from9943: + br i1 %t23, label %logic.rhs9944, label %logic.end9945 +logic.rhs9944: %t24 = load i8, ptr %a18 %t25 = icmp ule i8 %t24, 122 - br label %logic.rend9442 -logic.rend9442: - br label %logic.end9441 -logic.end9441: - %t26 = phi i1 [ false, %logic.from9439 ], [ %t25, %logic.rend9442 ] - br label %logic.from9443 -logic.from9443: - br i1 %t26, label %logic.end9445, label %logic.rhs9444 -logic.rhs9444: + br label %logic.rend9946 +logic.rend9946: + br label %logic.end9945 +logic.end9945: + %t26 = phi i1 [ false, %logic.from9943 ], [ %t25, %logic.rend9946 ] + br label %logic.from9947 +logic.from9947: + br i1 %t26, label %logic.end9949, label %logic.rhs9948 +logic.rhs9948: %t27 = load i8, ptr %a18 %t28 = icmp uge i8 %t27, 65 - br label %logic.from9446 -logic.from9446: - br i1 %t28, label %logic.rhs9447, label %logic.end9448 -logic.rhs9447: + br label %logic.from9950 +logic.from9950: + br i1 %t28, label %logic.rhs9951, label %logic.end9952 +logic.rhs9951: %t29 = load i8, ptr %a18 %t30 = icmp ule i8 %t29, 90 - br label %logic.rend9449 -logic.rend9449: - br label %logic.end9448 -logic.end9448: - %t31 = phi i1 [ false, %logic.from9446 ], [ %t30, %logic.rend9449 ] - br label %logic.rend9450 -logic.rend9450: - br label %logic.end9445 -logic.end9445: - %t32 = phi i1 [ true, %logic.from9443 ], [ %t31, %logic.rend9450 ] - br label %logic.from9451 -logic.from9451: - br i1 %t32, label %logic.end9453, label %logic.rhs9452 -logic.rhs9452: + br label %logic.rend9953 +logic.rend9953: + br label %logic.end9952 +logic.end9952: + %t31 = phi i1 [ false, %logic.from9950 ], [ %t30, %logic.rend9953 ] + br label %logic.rend9954 +logic.rend9954: + br label %logic.end9949 +logic.end9949: + %t32 = phi i1 [ true, %logic.from9947 ], [ %t31, %logic.rend9954 ] + br label %logic.from9955 +logic.from9955: + br i1 %t32, label %logic.end9957, label %logic.rhs9956 +logic.rhs9956: %t33 = load i8, ptr %a18 %t34 = icmp uge i8 %t33, 48 - br label %logic.from9454 -logic.from9454: - br i1 %t34, label %logic.rhs9455, label %logic.end9456 -logic.rhs9455: + br label %logic.from9958 +logic.from9958: + br i1 %t34, label %logic.rhs9959, label %logic.end9960 +logic.rhs9959: %t35 = load i8, ptr %a18 %t36 = icmp ule i8 %t35, 57 - br label %logic.rend9457 -logic.rend9457: - br label %logic.end9456 -logic.end9456: - %t37 = phi i1 [ false, %logic.from9454 ], [ %t36, %logic.rend9457 ] - br label %logic.rend9458 -logic.rend9458: - br label %logic.end9453 -logic.end9453: - %t38 = phi i1 [ true, %logic.from9451 ], [ %t37, %logic.rend9458 ] - br label %logic.from9459 -logic.from9459: - br i1 %t38, label %logic.end9461, label %logic.rhs9460 -logic.rhs9460: - store { ptr, i64, i64 } { ptr @.str.6521, i64 5, i64 0 }, ptr %a39 + br label %logic.rend9961 +logic.rend9961: + br label %logic.end9960 +logic.end9960: + %t37 = phi i1 [ false, %logic.from9958 ], [ %t36, %logic.rend9961 ] + br label %logic.rend9962 +logic.rend9962: + br label %logic.end9957 +logic.end9957: + %t38 = phi i1 [ true, %logic.from9955 ], [ %t37, %logic.rend9962 ] + br label %logic.from9963 +logic.from9963: + br i1 %t38, label %logic.end9965, label %logic.rhs9964 +logic.rhs9964: + store { ptr, i64, i64 } { ptr @.str.6739, 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.rend9462 -logic.rend9462: - br label %logic.end9461 -logic.end9461: - %t47 = phi i1 [ true, %logic.from9459 ], [ %t46, %logic.rend9462 ] - br i1 %t47, label %then9463, label %else9464 -then9463: - %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 %endif9465 -else9464: - %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 %range9466, label %inrange9467 -range9466: - call void @finch_panic_index(ptr @.str.6524, i64 138, i64 %t59, i64 %t61) + store { ptr, i64, i64 } %t43, ptr %a47 + call void @finch_str_drop(ptr %a47) + br label %logic.rend9966 +logic.rend9966: + br label %logic.end9965 +logic.end9965: + %t48 = phi i1 [ true, %logic.from9963 ], [ %t46, %logic.rend9966 ] + br i1 %t48, label %then9967, label %else9968 +then9967: + %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 + %t50 = load i8, ptr %a18 + call void @finch_str_from_char(ptr %a51, i8 signext %t50) + %t52 = load { ptr, i64, i64 }, ptr %a51 + %t53 = load i64, ptr %t49 + %t54 = add i64 %t53, 1 + call void @finch_arr_reserve(ptr %a9, i64 %t54, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t55 = load ptr, ptr %a9 + %t56 = getelementptr inbounds { ptr, i64, i64 }, ptr %t55, i64 %t53 + store { ptr, i64, i64 } %t52, ptr %t56 + store i64 %t54, ptr %t49 + br label %endif9969 +else9968: + %t57 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 + %t58 = load i64, ptr %a21 + %t59 = sdiv i64 %t58, 16 + %t60 = srem i64 %t59, 16 + %t61 = load { ptr, i64, i64 }, ptr %a2 + %t62 = extractvalue { ptr, i64, i64 } %t61, 1 + %t63 = icmp uge i64 %t60, %t62 + br i1 %t63, label %range9970, label %inrange9971 +range9970: + call void @finch_panic_index(ptr @.str.6742, i64 138, i64 %t60, i64 %t62) unreachable -inrange9467: - %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.6523, 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 %range9468, label %inrange9469 -range9468: - call void @finch_panic_index(ptr @.str.6525, i64 138, i64 %t73, i64 %t75) +inrange9971: + %t64 = extractvalue { ptr, i64, i64 } %t61, 0 + %t65 = getelementptr inbounds i8, ptr %t64, i64 %t60 + %t66 = load i8, ptr %t65 + call void @finch_str_from_char(ptr %a67, i8 signext %t66) + %t68 = load { ptr, i64, i64 }, ptr %a67 + store { ptr, i64, i64 } { ptr @.str.6741, i64 1, i64 0 }, ptr %a70 + store { ptr, i64, i64 } %t68, ptr %a71 + call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) + store { ptr, i64, i64 } %t68, ptr %a72 + call void @finch_str_drop(ptr %a72) + %t73 = load { ptr, i64, i64 }, ptr %a69 + %t74 = load i64, ptr %a21 + %t75 = srem i64 %t74, 16 + %t76 = load { ptr, i64, i64 }, ptr %a2 + %t77 = extractvalue { ptr, i64, i64 } %t76, 1 + %t78 = icmp uge i64 %t75, %t77 + br i1 %t78, label %range9972, label %inrange9973 +range9972: + call void @finch_panic_index(ptr @.str.6743, i64 138, i64 %t75, i64 %t77) unreachable -inrange9469: - %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 %endif9465 -endif9465: - br label %each.step9437 -each.step9437: - %t90 = load i64, ptr %a10 +inrange9973: + %t79 = extractvalue { ptr, i64, i64 } %t76, 0 + %t80 = getelementptr inbounds i8, ptr %t79, i64 %t75 + %t81 = load i8, ptr %t80 + call void @finch_str_from_char(ptr %a82, i8 signext %t81) + %t83 = load { ptr, i64, i64 }, ptr %a82 + store { ptr, i64, i64 } %t73, ptr %a85 + store { ptr, i64, i64 } %t83, ptr %a86 + call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) + store { ptr, i64, i64 } %t73, ptr %a87 + call void @finch_str_drop(ptr %a87) + store { ptr, i64, i64 } %t83, ptr %a88 + call void @finch_str_drop(ptr %a88) + %t89 = load { ptr, i64, i64 }, ptr %a84 + %t90 = load i64, ptr %t57 %t91 = add i64 %t90, 1 - store i64 %t91, ptr %a10 - br label %each.cond9435 -each.end9438: - %t92 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.6526, 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 + call void @finch_arr_reserve(ptr %a9, i64 %t91, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t92 = load ptr, ptr %a9 + %t93 = getelementptr inbounds { ptr, i64, i64 }, ptr %t92, i64 %t90 + store { ptr, i64, i64 } %t89, ptr %t93 + store i64 %t91, ptr %t57 + br label %endif9969 +endif9969: + br label %each.step9941 +each.step9941: + %t94 = load i64, ptr %a10 + %t95 = add i64 %t94, 1 + store i64 %t95, ptr %a10 + br label %each.cond9939 +each.end9942: + %t96 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.6744, i64 0, i64 0 }, ptr %a97 + call void @finch_str_join(ptr %a98, ptr %a9, ptr %a97) + %t99 = load { ptr, i64, i64 }, ptr %a98 + call void @finch.drop.arr_str(ptr %a9) + call void @finch_str_drop(ptr %a2) + ret { ptr, i64, i64 } %t99 } define internal { ptr, i64, i64 } @finch.lsp.unesc({ ptr, i64, i64 } %p0) { @@ -85317,80 +102407,80 @@ entry: store { ptr, i64, i64 } %p0, ptr %a1 store { ptr, i64, i64 } zeroinitializer, ptr %a2 store i64 0, ptr %a3 - br label %while.cond9470 -while.cond9470: + br label %while.cond9974 +while.cond9974: %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.body9471, label %while.end9472 -while.body9471: + br i1 %t7, label %while.body9975, label %while.end9976 +while.body9975: %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 %range9473, label %inrange9474 -range9473: - call void @finch_panic_index(ptr @.str.6527, i64 149, i64 %t8, i64 %t10) + br i1 %t11, label %range9977, label %inrange9978 +range9977: + call void @finch_panic_index(ptr @.str.6745, i64 149, i64 %t8, i64 %t10) unreachable -inrange9474: +inrange9978: %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.from9475 -logic.from9475: - br i1 %t15, label %logic.rhs9476, label %logic.end9477 -logic.rhs9476: + br label %logic.from9979 +logic.from9979: + br i1 %t15, label %logic.rhs9980, label %logic.end9981 +logic.rhs9980: %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.rend9478 -logic.rend9478: - br label %logic.end9477 -logic.end9477: - %t21 = phi i1 [ false, %logic.from9475 ], [ %t20, %logic.rend9478 ] - br i1 %t21, label %then9479, label %else9480 -then9479: + br label %logic.rend9982 +logic.rend9982: + br label %logic.end9981 +logic.end9981: + %t21 = phi i1 [ false, %logic.from9979 ], [ %t20, %logic.rend9982 ] + br i1 %t21, label %then9983, label %else9984 +then9983: %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 %range9482, label %inrange9483 -range9482: - call void @finch_panic_index(ptr @.str.6528, i64 150, i64 %t23, i64 %t25) + br i1 %t26, label %range9986, label %inrange9987 +range9986: + call void @finch_panic_index(ptr @.str.6746, i64 150, i64 %t23, i64 %t25) unreachable -inrange9483: +inrange9987: %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 %then9484, label %else9485 -then9484: + br i1 %t30, label %then9988, label %else9989 +then9988: %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.6529, i64 1, i64 0 }, ptr %t35 + store { ptr, i64, i64 } { ptr @.str.6747, i64 1, i64 0 }, ptr %t35 store i64 %t33, ptr %t31 - br label %endif9486 -else9485: + br label %endif9990 +else9989: %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 %range9487, label %inrange9488 -range9487: - call void @finch_panic_index(ptr @.str.6530, i64 153, i64 %t38, i64 %t40) + br i1 %t41, label %range9991, label %inrange9992 +range9991: + call void @finch_panic_index(ptr @.str.6748, i64 153, i64 %t38, i64 %t40) unreachable -inrange9488: +inrange9992: %t42 = extractvalue { ptr, i64, i64 } %t39, 0 %t43 = getelementptr inbounds i8, ptr %t42, i64 %t38 %t44 = load i8, ptr %t43 @@ -85403,23 +102493,23 @@ inrange9488: %t50 = getelementptr inbounds { ptr, i64, i64 }, ptr %t49, i64 %t47 store { ptr, i64, i64 } %t46, ptr %t50 store i64 %t48, ptr %t36 - br label %endif9486 -endif9486: + br label %endif9990 +endif9990: %t51 = load i64, ptr %a3 %t52 = add i64 %t51, 2 store i64 %t52, ptr %a3 - br label %endif9481 -else9480: + br label %endif9985 +else9984: %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 %range9489, label %inrange9490 -range9489: - call void @finch_panic_index(ptr @.str.6531, i64 157, i64 %t54, i64 %t56) + br i1 %t57, label %range9993, label %inrange9994 +range9993: + call void @finch_panic_index(ptr @.str.6749, i64 157, i64 %t54, i64 %t56) unreachable -inrange9490: +inrange9994: %t58 = extractvalue { ptr, i64, i64 } %t55, 0 %t59 = getelementptr inbounds i8, ptr %t58, i64 %t54 %t60 = load i8, ptr %t59 @@ -85435,14 +102525,15 @@ inrange9490: %t67 = load i64, ptr %a3 %t68 = add i64 %t67, 1 store i64 %t68, ptr %a3 - br label %endif9481 -endif9481: - br label %while.cond9470 -while.end9472: + br label %endif9985 +endif9985: + br label %while.cond9974 +while.end9976: %t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.6532, i64 0, i64 0 }, ptr %a70 + store { ptr, i64, i64 } { ptr @.str.6750, i64 0, i64 0 }, ptr %a70 call void @finch_str_join(ptr %a71, ptr %a2, ptr %a70) %t72 = load { ptr, i64, i64 }, ptr %a71 + call void @finch.drop.arr_str(ptr %a2) ret { ptr, i64, i64 } %t72 } @@ -85461,46 +102552,48 @@ entry: 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.6534, i64 1, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.6752, 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.from9491 -logic.from9491: - br i1 %t11, label %logic.rhs9492, label %logic.end9493 -logic.rhs9492: + br label %logic.from9995 +logic.from9995: + br i1 %t11, label %logic.rhs9996, label %logic.end9997 +logic.rhs9996: %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.rend9494 -logic.rend9494: - br label %logic.end9493 -logic.end9493: - %t16 = phi i1 [ false, %logic.from9491 ], [ %t15, %logic.rend9494 ] - br i1 %t16, label %then9495, label %endif9497 -then9495: + br label %logic.rend9998 +logic.rend9998: + br label %logic.end9997 +logic.end9997: + %t16 = phi i1 [ false, %logic.from9995 ], [ %t15, %logic.rend9998 ] + br i1 %t16, label %then9999, label %endif10001 +then9999: %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 %range9498, label %inrange9499 -range9498: - call void @finch_panic_index(ptr @.str.6535, i64 167, i64 %t18, i64 %t20) + br i1 %t21, label %range10002, label %inrange10003 +range10002: + call void @finch_panic_index(ptr @.str.6753, i64 167, i64 %t18, i64 %t20) unreachable -inrange9499: +inrange10003: %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 + call void @finch.drop.arr_str(ptr %a9) ret { ptr, i64, i64 } %t27 -endif9497: - ret { ptr, i64, i64 } { ptr @.str.6536, i64 0, i64 0 } +endif10001: + call void @finch.drop.arr_str(ptr %a9) + ret { ptr, i64, i64 } { ptr @.str.6754, i64 0, i64 0 } } define internal { ptr, i64, i64 } @finch.lsp.readLine() { @@ -85516,26 +102609,26 @@ entry: %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.cond9500 -while.cond9500: - br label %while.body9501 -while.body9501: + br label %while.cond10004 +while.cond10004: + br label %while.body10005 +while.body10005: %t2 = call i32 @getchar() store i32 %t2, ptr %a3 %t4 = load i32, ptr %a3 %t5 = icmp slt i32 %t4, 0 - br i1 %t5, label %then9503, label %endif9505 -then9503: - ret { ptr, i64, i64 } { ptr @.str.6537, i64 0, i64 0 } -endif9505: + br i1 %t5, label %then10007, label %endif10009 +then10007: + call void @finch.drop.arr_u8(ptr %a1) + ret { ptr, i64, i64 } { ptr @.str.6755, i64 0, i64 0 } +endif10009: %t6 = load i32, ptr %a3 %t7 = icmp eq i32 %t6, 10 - br i1 %t7, label %then9506, label %endif9508 -then9506: - br label %while.end9502 -endif9508: + br i1 %t7, label %then10010, label %endif10012 +then10010: + br label %while.end10006 +endif10012: %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 %t9 = load i32, ptr %a3 %t10 = trunc i32 %t9 to i8 @@ -85546,8 +102639,8 @@ endif9508: %t14 = getelementptr inbounds i8, ptr %t13, i64 %t11 store i8 %t10, ptr %t14 store i64 %t12, ptr %t8 - br label %while.cond9500 -while.end9502: + br label %while.cond10004 +while.end10006: %t15 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } zeroinitializer, ptr %a16 store { ptr, i64, i64 } %t15, ptr %a17 @@ -85556,26 +102649,27 @@ while.end9502: 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.6539, i64 1, i64 0 }, ptr %a23 + store { ptr, i64, i64 } { ptr @.str.6757, 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 %then9509, label %endif9511 -then9509: + br i1 %t25, label %then10013, label %endif10015 +then10013: %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.6540, i64 188) + call void @finch_str_sub(ptr %a28, ptr %a27, i64 0, i64 %t31, ptr @.str.6758, i64 188) %t32 = load { ptr, i64, i64 }, ptr %a28 - store { ptr, i64, i64 } %t32, ptr %a19 - br label %endif9511 -endif9511: %t33 = load { ptr, i64, i64 }, ptr %a19 + store { ptr, i64, i64 } %t32, 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 + call void @finch_str_drop(ptr %a34) + br label %endif10015 +endif10015: + %t35 = load { ptr, i64, i64 }, ptr %a19 + call void @finch.drop.arr_u8(ptr %a1) + ret { ptr, i64, i64 } %t35 } define internal { i1, %S.json.Json, { ptr, i64, i64 } } @finch.lsp.readMessage() { @@ -85590,133 +102684,150 @@ entry: %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 + %a29 = alloca { ptr, i64, i64 }, align 16 + %a30 = alloca i64, align 16 + %a31 = 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 + %a39 = alloca { ptr, i64, i64 }, align 16 + %a41 = alloca i64, align 16 + %a45 = alloca i32, align 16 + %a59 = alloca { ptr, i64, i64 }, align 16 + %a60 = alloca { ptr, i64, i64 }, align 16 + %a67 = alloca { ptr, i64, i64 }, align 16 store i64 0, ptr %a1 - br label %while.cond9512 -while.cond9512: - br label %while.body9513 -while.body9513: + br label %while.cond10016 +while.cond10016: + br label %while.body10017 +while.body10017: %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 %then9515, label %endif9517 -then9515: + br i1 %t6, label %then10019, label %endif10021 +then10019: %t7 = load i64, ptr %a1 %t8 = icmp sgt i64 %t7, 0 - br i1 %t8, label %then9518, label %endif9520 -then9518: - br label %while.end9514 -endif9520: + br i1 %t8, label %then10022, label %endif10024 +then10022: + call void @finch_str_drop(ptr %a3) + br label %while.end10018 +endif10024: %t9 = load ptr, ptr @stdin %t10 = call i32 @feof(ptr %t9) %t11 = icmp ne i32 %t10, 0 - br i1 %t11, label %then9521, label %endif9523 -then9521: - %t12 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } { ptr @.str.6541, i64 32, i64 0 }, 2 + br i1 %t11, label %then10025, label %endif10027 +then10025: + call void @finch_str_drop(ptr %a3) + %t12 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } { ptr @.str.6759, i64 32, i64 0 }, 2 ret { i1, %S.json.Json, { ptr, i64, i64 } } %t12 -endif9523: - br label %while.cond9512 -endif9517: +endif10027: + call void @finch_str_drop(ptr %a3) + br label %while.cond10016 +endif10021: %t13 = load { ptr, i64, i64 }, ptr %a3 store { ptr, i64, i64 } %t13, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.6543, i64 15, i64 0 }, ptr %a16 + store { ptr, i64, i64 } { ptr @.str.6761, 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 %then9524, label %endif9526 -then9524: + br i1 %t18, label %then10028, label %endif10030 +then10028: %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.6544, i64 208) + call void @finch_str_sub(ptr %a21, ptr %a20, i64 15, i64 %t23, ptr @.str.6762, 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.failed9527, label %or.ok9528 -or.failed9527: - store { ptr, i64, i64 } %t33, ptr %a35 - br label %or.bend9529 -or.bend9529: - br label %or.end9530 -or.ok9528: - br label %or.end9530 -or.end9530: - %t36 = phi i64 [ 0, %or.bend9529 ], [ %t34, %or.ok9528 ] - store i64 %t36, ptr %a1 - br label %endif9526 -endif9526: - br label %while.cond9512 -while.end9514: - store { ptr, i64, i64 } zeroinitializer, ptr %a37 - %t38 = load i64, ptr %a1 - store i64 0, ptr %a39 - br label %for.cond9531 -for.cond9531: - %t40 = load i64, ptr %a39 - %t41 = icmp slt i64 %t40, %t38 - br i1 %t41, label %for.body9532, label %for.end9534 -for.body9532: - %t42 = call i32 @getchar() - store i32 %t42, ptr %a43 - %t44 = load i32, ptr %a43 - %t45 = icmp slt i32 %t44, 0 - br i1 %t45, label %then9535, label %endif9537 -then9535: - %t46 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } { ptr @.str.6546, i64 25, i64 0 }, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t46 -endif9537: - %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.step9533 -for.step9533: - %t54 = load i64, ptr %a39 - %t55 = add i64 %t54, 1 - store i64 %t55, ptr %a39 - br label %for.cond9531 -for.end9534: - %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.failed9538, label %try.ok9539 -try.failed9538: - %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.ok9539: - %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 + store { ptr, i64, i64 } %t24, ptr %a28 + call void @finch_str_drop(ptr %a28) + store { ptr, i64, i64 } zeroinitializer, ptr %a29 + store i64 0, ptr %a30 + store { ptr, i64, i64 } %t27, ptr %a31 + %t32 = call i32 @finch_str_try_int(ptr %a31, ptr %a30, ptr %a29) + %t33 = icmp eq i32 %t32, 0 + %t34 = load { ptr, i64, i64 }, ptr %a29 + store { ptr, i64, i64 } %t27, ptr %a35 + call void @finch_str_drop(ptr %a35) + %t36 = load i64, ptr %a30 + br i1 %t33, label %or.failed10031, label %or.ok10032 +or.failed10031: + store { ptr, i64, i64 } %t34, ptr %a37 + call void @finch_str_drop(ptr %a37) + br label %or.bend10033 +or.bend10033: + br label %or.end10034 +or.ok10032: + br label %or.end10034 +or.end10034: + %t38 = phi i64 [ 0, %or.bend10033 ], [ %t36, %or.ok10032 ] + store i64 %t38, ptr %a1 + br label %endif10030 +endif10030: + call void @finch_str_drop(ptr %a3) + br label %while.cond10016 +while.end10018: + store { ptr, i64, i64 } zeroinitializer, ptr %a39 + %t40 = load i64, ptr %a1 + store i64 0, ptr %a41 + br label %for.cond10035 +for.cond10035: + %t42 = load i64, ptr %a41 + %t43 = icmp slt i64 %t42, %t40 + br i1 %t43, label %for.body10036, label %for.end10038 +for.body10036: + %t44 = call i32 @getchar() + store i32 %t44, ptr %a45 + %t46 = load i32, ptr %a45 + %t47 = icmp slt i32 %t46, 0 + br i1 %t47, label %then10039, label %endif10041 +then10039: + call void @finch.drop.arr_u8(ptr %a39) + %t48 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } { ptr @.str.6764, i64 25, i64 0 }, 2 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t48 +endif10041: + %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %a39, i32 0, i32 1 + %t50 = load i32, ptr %a45 + %t51 = trunc i32 %t50 to i8 + %t52 = load i64, ptr %t49 + %t53 = add i64 %t52, 1 + call void @finch_arr_reserve(ptr %a39, i64 %t53, i64 ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)) + %t54 = load ptr, ptr %a39 + %t55 = getelementptr inbounds i8, ptr %t54, i64 %t52 + store i8 %t51, ptr %t55 + store i64 %t53, ptr %t49 + br label %for.step10037 +for.step10037: + %t56 = load i64, ptr %a41 + %t57 = add i64 %t56, 1 + store i64 %t57, ptr %a41 + br label %for.cond10035 +for.end10038: + %t58 = load { ptr, i64, i64 }, ptr %a39 + store { ptr, i64, i64 } zeroinitializer, ptr %a59 + store { ptr, i64, i64 } %t58, ptr %a60 + call void @finch_str_from_bytes(ptr %a59, ptr %a60) + %t61 = load { ptr, i64, i64 }, ptr %a59 + %t62 = call { i1, %S.json.Json, { ptr, i64, i64 } } @finch.json.parse({ ptr, i64, i64 } %t61) + %t63 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t62, 0 + %t64 = xor i1 %t63, true + %t65 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t62, 2 + %t66 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t62, 1 + store { ptr, i64, i64 } %t61, ptr %a67 + call void @finch_str_drop(ptr %a67) + br i1 %t64, label %try.failed10042, label %try.ok10043 +try.failed10042: + call void @finch.drop.arr_u8(ptr %a39) + %t68 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t65, 2 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t68 +try.ok10043: + call void @finch.drop.arr_u8(ptr %a39) + %t69 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 + %t70 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t69, %S.json.Json %t66, 1 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t70 } define internal void @finch.lsp.send(%S.json.Json %p0) { @@ -85727,14 +102838,16 @@ entry: %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 + %a12 = 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 %a17 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 + %a19 = 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 + %a26 = 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) @@ -85743,32 +102856,75 @@ entry: %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.6547, i64 16, i64 0 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.6765, 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.6548, 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.6549, 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) + store { ptr, i64, i64 } %t8, ptr %a12 + call void @finch_str_drop(ptr %a12) + %t13 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t13, ptr %a15 + store { ptr, i64, i64 } { ptr @.str.6766, i64 4, i64 0 }, ptr %a16 + call void @finch_str_concat(ptr %a14, ptr %a15, ptr %a16) + store { ptr, i64, i64 } %t13, ptr %a17 + call void @finch_str_drop(ptr %a17) + %t18 = load { ptr, i64, i64 }, ptr %a14 + store { ptr, i64, i64 } %t18, ptr %a19 + %t20 = load { ptr, i64, i64 }, ptr %a19 + %t21 = load { ptr, i64, i64 }, ptr %a4 + 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 %a26 + %t27 = load { ptr, i64, i64 }, ptr %a26 + %t28 = extractvalue { ptr, i64, i64 } %t27, 0 + %t29 = icmp eq ptr %t28, null + %t30 = select i1 %t29, ptr @.str.6767, ptr %t28 + %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %a26, i32 0, i32 1 + %t32 = load i64, ptr %t31 %t33 = load ptr, ptr @stdout - %t34 = call i32 @fflush(ptr %t33) + %t34 = call i64 @fwrite(ptr %t30, i64 1, i64 %t32, ptr %t33) + %t35 = load ptr, ptr @stdout + %t36 = call i32 @fflush(ptr %t35) + call void @finch_str_drop(ptr %a26) + call void @finch_str_drop(ptr %a19) + call void @finch_str_drop(ptr %a4) + ret void +} + +define internal void @finch.drop.arr_S_json_Json(ptr %a) { +entry: + %a4 = alloca i64, align 16 + %t1 = load ptr, ptr %a + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 + %t3 = load i64, ptr %t2 + store i64 0, ptr %a4 + br label %n.cond10044 +n.cond10044: + %t5 = load i64, ptr %a4 + %t6 = icmp slt i64 %t5, %t3 + br i1 %t6, label %n.body10045, label %n.end10046 +n.body10045: + %t7 = getelementptr inbounds %S.json.Json, ptr %t1, i64 %t5 + call void @finch.drop.S_json_Json(ptr %t7) + %t8 = load i64, ptr %a4 + %t9 = add i64 %t8, 1 + store i64 %t9, ptr %a4 + br label %n.cond10044 +n.end10046: + call void @finch_arr_free(ptr %a) + ret void +} + +define internal void @finch.drop.S_json_Json(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.json.Json, ptr %a, i32 0, i32 3 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.json.Json, ptr %a, i32 0, i32 4 + call void @finch.drop.arr_S_json_Json(ptr %t2) + %t3 = getelementptr inbounds %S.json.Json, ptr %a, i32 0, i32 5 + call void @finch.drop.arr_str(ptr %t3) ret void } @@ -85777,18 +102933,22 @@ entry: %a1 = alloca %S.json.Json, align 16 %a2 = alloca %S.json.Json, align 16 %a4 = alloca %S.json.Json, align 16 + %a6 = 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.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 %S.json.Json, ptr %a1 - call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.6552, 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.6553, i64 6, i64 0 }, %S.json.Json %t7) - %t8 = load %S.json.Json, ptr %a4 - call void @finch.lsp.send(%S.json.Json %t8) + %t5 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.6769, i64 3, i64 0 }) + call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.6768, i64 7, i64 0 }, %S.json.Json %t5) + store %S.json.Json %t5, ptr %a6 + call void @finch.drop.S_json_Json(ptr %a6) + %t7 = load %S.json.Json, ptr %a1 + call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.6770, i64 2, 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.6771, i64 6, i64 0 }, %S.json.Json %t8) + %t9 = load %S.json.Json, ptr %a4 + call void @finch.lsp.send(%S.json.Json %t9) + call void @finch.drop.S_json_Json(ptr %a4) ret void } @@ -85797,19 +102957,26 @@ entry: %a1 = alloca { ptr, i64, i64 }, align 16 %a2 = alloca %S.json.Json, align 16 %a4 = alloca %S.json.Json, align 16 + %a6 = alloca %S.json.Json, align 16 + %a9 = 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.6555, i64 3, i64 0 }) - call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.6554, 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.6556, 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.6557, i64 6, i64 0 }, %S.json.Json %t8) - %t9 = load %S.json.Json, ptr %a4 - call void @finch.lsp.send(%S.json.Json %t9) + %t5 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.6773, i64 3, i64 0 }) + call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.6772, i64 7, i64 0 }, %S.json.Json %t5) + store %S.json.Json %t5, ptr %a6 + call void @finch.drop.S_json_Json(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 %a4, { ptr, i64, i64 } { ptr @.str.6774, i64 6, i64 0 }, %S.json.Json %t8) + store %S.json.Json %t8, ptr %a9 + call void @finch.drop.S_json_Json(ptr %a9) + %t10 = load %S.json.Json, ptr %a2 + call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.6775, i64 6, i64 0 }, %S.json.Json %t10) + %t11 = load %S.json.Json, ptr %a4 + call void @finch.lsp.send(%S.json.Json %t11) + call void @finch.drop.S_json_Json(ptr %a4) ret void } @@ -85823,71 +102990,29 @@ entry: 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.cond9540 -n.cond9540: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body9541, label %n.end9542 -n.body9541: - %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.cond9540 -n.end9542: - 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 + %a7 = 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.6558, 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.6559, i64 9, i64 0 }, %S.json.Json %t8) - %t9 = load %S.json.Json, ptr %a4 + call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.6776, i64 4, i64 0 }, %S.json.Json %t6) + store %S.json.Json %t6, ptr %a7 + call void @finch.drop.S_json_Json(ptr %a7) + %t8 = load i64, ptr %a2 + %t9 = call %S.json.Json @finch.lsp.num(i64 %t8) + call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.6777, i64 9, i64 0 }, %S.json.Json %t9) 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 + call void @finch.drop.S_json_Json(ptr %a10) + %t11 = load %S.json.Json, ptr %a4 + ret %S.json.Json %t11 } define internal %S.json.Json @finch.lsp.range(i64 %p0, i64 %p1, i64 %p2) { @@ -85896,8 +103021,8 @@ entry: %a2 = alloca i64, align 16 %a3 = alloca i64, align 16 %a5 = alloca %S.json.Json, align 16 + %a9 = 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 @@ -85906,16 +103031,17 @@ entry: %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.6560, 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.6561, i64 3, i64 0 }, %S.json.Json %t11) - %t12 = load %S.json.Json, ptr %a5 + call void @finch.json.Json.set(ptr %a5, { ptr, i64, i64 } { ptr @.str.6778, i64 5, i64 0 }, %S.json.Json %t8) + store %S.json.Json %t8, ptr %a9 + call void @finch.drop.S_json_Json(ptr %a9) + %t10 = load i64, ptr %a1 + %t11 = load i64, ptr %a3 + %t12 = call %S.json.Json @finch.lsp.position(i64 %t10, i64 %t11) + call void @finch.json.Json.set(ptr %a5, { ptr, i64, i64 } { ptr @.str.6779, i64 3, i64 0 }, %S.json.Json %t12) 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 + call void @finch.drop.S_json_Json(ptr %a13) + %t14 = load %S.json.Json, ptr %a5 + ret %S.json.Json %t14 } define internal { ptr, i64, i64 } @finch.lsp.splitTabs({ ptr, i64, i64 } %p0) { @@ -85928,7 +103054,7 @@ 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.6563, i64 1, i64 0 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.6781, 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 @@ -85950,16 +103076,17 @@ entry: %t7 = icmp eq i32 %t6, 0 %t8 = load { ptr, i64, i64 }, ptr %a3 %t9 = load i64, ptr %a4 - br i1 %t7, label %or.failed9543, label %or.ok9544 -or.failed9543: + br i1 %t7, label %or.failed10047, label %or.ok10048 +or.failed10047: store { ptr, i64, i64 } %t8, ptr %a10 - br label %or.bend9545 -or.bend9545: - br label %or.end9546 -or.ok9544: - br label %or.end9546 -or.end9546: - %t11 = phi i64 [ 0, %or.bend9545 ], [ %t9, %or.ok9544 ] + call void @finch_str_drop(ptr %a10) + br label %or.bend10049 +or.bend10049: + br label %or.end10050 +or.ok10048: + br label %or.end10050 +or.end10050: + %t11 = phi i64 [ 0, %or.bend10049 ], [ %t9, %or.ok10048 ] ret i64 %t11 } @@ -85994,19 +103121,19 @@ 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.6565, i64 9, i64 0 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.6783, 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 %then9547, label %endif9549 -then9547: + br i1 %t9, label %then10051, label %endif10053 +then10051: ret %S.lsp.Diag zeroinitializer -endif9549: +endif10053: %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.6566, i64 280) + call void @finch_str_sub(ptr %a12, ptr %a11, i64 0, i64 %t13, ptr @.str.6784, i64 280) %t14 = load { ptr, i64, i64 }, ptr %a12 store { ptr, i64, i64 } %t14, ptr %a15 %t16 = load { ptr, i64, i64 }, ptr %a1 @@ -86015,33 +103142,36 @@ endif9549: %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.6567, i64 281) + call void @finch_str_sub(ptr %a18, ptr %a17, i64 %t20, i64 %t22, ptr @.str.6785, 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.6569, i64 1, i64 0 }, ptr %a28 + store { ptr, i64, i64 } { ptr @.str.6787, 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 %then9550, label %endif9552 -then9550: + br i1 %t34, label %then10054, label %endif10056 +then10054: + call void @finch.drop.arr_str(ptr %a31) + call void @finch_str_drop(ptr %a24) + call void @finch_str_drop(ptr %a15) ret %S.lsp.Diag zeroinitializer -endif9552: +endif10056: %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 %range9553, label %inrange9554 -range9553: - call void @finch_panic_index(ptr @.str.6570, i64 287, i64 %t37, i64 %t39) + br i1 %t40, label %range10057, label %inrange10058 +range10057: + call void @finch_panic_index(ptr @.str.6788, i64 287, i64 %t37, i64 %t39) unreachable -inrange9554: +inrange10058: %t41 = extractvalue { ptr, i64, i64 } %t38, 0 %t42 = getelementptr inbounds { ptr, i64, i64 }, ptr %t41, i64 %t37 %t43 = load { ptr, i64, i64 }, ptr %t42 @@ -86053,11 +103183,11 @@ inrange9554: %t49 = load { ptr, i64, i64 }, ptr %a31 %t50 = extractvalue { ptr, i64, i64 } %t49, 1 %t51 = icmp uge i64 %t48, %t50 - br i1 %t51, label %range9555, label %inrange9556 -range9555: - call void @finch_panic_index(ptr @.str.6571, i64 288, i64 %t48, i64 %t50) + br i1 %t51, label %range10059, label %inrange10060 +range10059: + call void @finch_panic_index(ptr @.str.6789, i64 288, i64 %t48, i64 %t50) unreachable -inrange9556: +inrange10060: %t52 = extractvalue { ptr, i64, i64 } %t49, 0 %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %t52, i64 %t48 %t54 = load { ptr, i64, i64 }, ptr %t53 @@ -86068,22 +103198,22 @@ inrange9556: %t59 = load i64, ptr %t58 %t60 = sub i64 %t59, 2 store i64 0, ptr %a61 - br label %for.cond9557 -for.cond9557: + br label %for.cond10061 +for.cond10061: %t62 = load i64, ptr %a61 %t63 = icmp slt i64 %t62, %t60 - br i1 %t63, label %for.body9558, label %for.end9560 -for.body9558: + br i1 %t63, label %for.body10062, label %for.end10064 +for.body10062: %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 %range9561, label %inrange9562 -range9561: - call void @finch_panic_index(ptr @.str.6572, i64 291, i64 %t65, i64 %t67) + br i1 %t68, label %range10065, label %inrange10066 +range10065: + call void @finch_panic_index(ptr @.str.6790, i64 291, i64 %t65, i64 %t67) unreachable -inrange9562: +inrange10066: %t69 = extractvalue { ptr, i64, i64 } %t66, 0 %t70 = getelementptr inbounds { ptr, i64, i64 }, ptr %t69, i64 %t65 %t71 = load { ptr, i64, i64 }, ptr %t70 @@ -86097,16 +103227,16 @@ inrange9562: %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.step9559 -for.step9559: + br label %for.step10063 +for.step10063: %t79 = load i64, ptr %a61 %t80 = add i64 %t79, 1 store i64 %t80, ptr %a61 - br label %for.cond9557 -for.end9560: + br label %for.cond10061 +for.end10064: %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.6573, i64 1, i64 0 }, ptr %a83 + store { ptr, i64, i64 } { ptr @.str.6791, 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 @@ -86119,285 +103249,20 @@ for.end9560: 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 + call void @finch.drop.arr_str(ptr %a57) + call void @finch.drop.arr_str(ptr %a31) + call void @finch_str_drop(ptr %a24) + call void @finch_str_drop(ptr %a15) ret %S.lsp.Diag %t95 } -define internal void @finch.copy.S_lsp_Ref(ptr %dst, ptr %src) { +define internal void @finch.drop.S_lsp_Diag(ptr %a) { 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.cond9710 -n.cond9710: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body9711, label %n.end9712 -n.body9711: - %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.cond9710 -n.end9712: - 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.cond9713 -n.cond9713: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body9714, label %n.end9715 -n.body9714: - %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.cond9713 -n.end9715: - 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.cond9716 -n.cond9716: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body9717, label %n.end9718 -n.body9717: - %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.cond9716 -n.end9718: - 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.cond9719 -n.cond9719: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body9720, label %n.end9721 -n.body9720: - %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.cond9719 -n.end9721: - 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.cond9722 -n.cond9722: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body9723, label %n.end9724 -n.body9723: - %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.cond9722 -n.end9724: - 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) + %t1 = getelementptr inbounds %S.lsp.Diag, ptr %a, i32 0, i32 1 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.lsp.Diag, ptr %a, i32 0, i32 4 + call void @finch_str_drop(ptr %t2) ret void } @@ -86480,47 +103345,46 @@ entry: %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 + %a536 = alloca %S.lsp.Diag, 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.6575, i64 1, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.6793, 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.cond9563 -each.cond9563: + br label %each.cond10067 +each.cond10067: %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.body9564, label %each.end9566 -each.body9564: + br i1 %t14, label %each.body10068, label %each.end10070 +each.body10068: %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.6577, i64 1, i64 0 }, ptr %a22 + store { ptr, i64, i64 } { ptr @.str.6795, 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 %then9567, label %else9568 -then9567: + br i1 %t24, label %then10071, label %else10072 +then10071: %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 %range9570, label %inrange9571 -range9570: - call void @finch_panic_index(ptr @.str.6578, i64 301, i64 0, i64 %t29) + br i1 %t30, label %range10074, label %inrange10075 +range10074: + call void @finch_panic_index(ptr @.str.6796, i64 301, i64 0, i64 %t29) unreachable -inrange9571: +inrange10075: %t31 = extractvalue { ptr, i64, i64 } %t28, 0 %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %t31, i64 0 %t33 = load { ptr, i64, i64 }, ptr %t32 @@ -86530,33 +103394,33 @@ inrange9571: 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.6579, i64 2, i64 0 }, ptr %a40 + store { ptr, i64, i64 } { ptr @.str.6797, 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.from9572 -logic.from9572: - br i1 %t42, label %logic.rhs9573, label %logic.end9574 -logic.rhs9573: + br label %logic.from10076 +logic.from10076: + br i1 %t42, label %logic.rhs10077, label %logic.end10078 +logic.rhs10077: %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.rend9575 -logic.rend9575: - br label %logic.end9574 -logic.end9574: - %t46 = phi i1 [ false, %logic.from9572 ], [ %t45, %logic.rend9575 ] - br i1 %t46, label %then9576, label %else9577 -then9576: + br label %logic.rend10079 +logic.rend10079: + br label %logic.end10078 +logic.end10078: + %t46 = phi i1 [ false, %logic.from10076 ], [ %t45, %logic.rend10079 ] + br i1 %t46, label %then10080, label %else10081 +then10080: %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 %range9579, label %inrange9580 -range9579: - call void @finch_panic_index(ptr @.str.6580, i64 303, i64 1, i64 %t50) + br i1 %t51, label %range10083, label %inrange10084 +range10083: + call void @finch_panic_index(ptr @.str.6798, i64 303, i64 1, i64 %t50) unreachable -inrange9580: +inrange10084: %t52 = extractvalue { ptr, i64, i64 } %t49, 0 %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %t52, i64 1 %t54 = load { ptr, i64, i64 }, ptr %t53 @@ -86567,11 +103431,11 @@ inrange9580: %t59 = load { ptr, i64, i64 }, ptr %a27 %t60 = extractvalue { ptr, i64, i64 } %t59, 1 %t61 = icmp uge i64 2, %t60 - br i1 %t61, label %range9581, label %inrange9582 -range9581: - call void @finch_panic_index(ptr @.str.6581, i64 303, i64 2, i64 %t60) + br i1 %t61, label %range10085, label %inrange10086 +range10085: + call void @finch_panic_index(ptr @.str.6799, i64 303, i64 2, i64 %t60) unreachable -inrange9582: +inrange10086: %t62 = extractvalue { ptr, i64, i64 } %t59, 0 %t63 = getelementptr inbounds { ptr, i64, i64 }, ptr %t62, i64 2 %t64 = load { ptr, i64, i64 }, ptr %t63 @@ -86580,11 +103444,11 @@ inrange9582: %t67 = load { ptr, i64, i64 }, ptr %a27 %t68 = extractvalue { ptr, i64, i64 } %t67, 1 %t69 = icmp uge i64 3, %t68 - br i1 %t69, label %range9583, label %inrange9584 -range9583: - call void @finch_panic_index(ptr @.str.6582, i64 303, i64 3, i64 %t68) + br i1 %t69, label %range10087, label %inrange10088 +range10087: + call void @finch_panic_index(ptr @.str.6800, i64 303, i64 3, i64 %t68) unreachable -inrange9584: +inrange10088: %t70 = extractvalue { ptr, i64, i64 } %t67, 0 %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %t70, i64 3 %t72 = load { ptr, i64, i64 }, ptr %t71 @@ -86593,11 +103457,11 @@ inrange9584: %t75 = load { ptr, i64, i64 }, ptr %a27 %t76 = extractvalue { ptr, i64, i64 } %t75, 1 %t77 = icmp uge i64 4, %t76 - br i1 %t77, label %range9585, label %inrange9586 -range9585: - call void @finch_panic_index(ptr @.str.6583, i64 303, i64 4, i64 %t76) + br i1 %t77, label %range10089, label %inrange10090 +range10089: + call void @finch_panic_index(ptr @.str.6801, i64 303, i64 4, i64 %t76) unreachable -inrange9586: +inrange10090: %t78 = extractvalue { ptr, i64, i64 } %t75, 0 %t79 = getelementptr inbounds { ptr, i64, i64 }, ptr %t78, i64 4 %t80 = load { ptr, i64, i64 }, ptr %t79 @@ -86606,11 +103470,11 @@ inrange9586: %t83 = load { ptr, i64, i64 }, ptr %a27 %t84 = extractvalue { ptr, i64, i64 } %t83, 1 %t85 = icmp uge i64 5, %t84 - br i1 %t85, label %range9587, label %inrange9588 -range9587: - call void @finch_panic_index(ptr @.str.6584, i64 303, i64 5, i64 %t84) + br i1 %t85, label %range10091, label %inrange10092 +range10091: + call void @finch_panic_index(ptr @.str.6802, i64 303, i64 5, i64 %t84) unreachable -inrange9588: +inrange10092: %t86 = extractvalue { ptr, i64, i64 } %t83, 0 %t87 = getelementptr inbounds { ptr, i64, i64 }, ptr %t86, i64 5 %t88 = load { ptr, i64, i64 }, ptr %t87 @@ -86621,11 +103485,11 @@ inrange9588: %t93 = load { ptr, i64, i64 }, ptr %a27 %t94 = extractvalue { ptr, i64, i64 } %t93, 1 %t95 = icmp uge i64 6, %t94 - br i1 %t95, label %range9589, label %inrange9590 -range9589: - call void @finch_panic_index(ptr @.str.6585, i64 303, i64 6, i64 %t94) + br i1 %t95, label %range10093, label %inrange10094 +range10093: + call void @finch_panic_index(ptr @.str.6803, i64 303, i64 6, i64 %t94) unreachable -inrange9590: +inrange10094: %t96 = extractvalue { ptr, i64, i64 } %t93, 0 %t97 = getelementptr inbounds { ptr, i64, i64 }, ptr %t96, i64 6 %t98 = load { ptr, i64, i64 }, ptr %t97 @@ -86634,11 +103498,11 @@ inrange9590: %t101 = load { ptr, i64, i64 }, ptr %a27 %t102 = extractvalue { ptr, i64, i64 } %t101, 1 %t103 = icmp uge i64 7, %t102 - br i1 %t103, label %range9591, label %inrange9592 -range9591: - call void @finch_panic_index(ptr @.str.6586, i64 303, i64 7, i64 %t102) + br i1 %t103, label %range10095, label %inrange10096 +range10095: + call void @finch_panic_index(ptr @.str.6804, i64 303, i64 7, i64 %t102) unreachable -inrange9592: +inrange10096: %t104 = extractvalue { ptr, i64, i64 } %t101, 0 %t105 = getelementptr inbounds { ptr, i64, i64 }, ptr %t104, i64 7 %t106 = load { ptr, i64, i64 }, ptr %t105 @@ -86647,11 +103511,11 @@ inrange9592: %t109 = load { ptr, i64, i64 }, ptr %a27 %t110 = extractvalue { ptr, i64, i64 } %t109, 1 %t111 = icmp uge i64 8, %t110 - br i1 %t111, label %range9593, label %inrange9594 -range9593: - call void @finch_panic_index(ptr @.str.6587, i64 303, i64 8, i64 %t110) + br i1 %t111, label %range10097, label %inrange10098 +range10097: + call void @finch_panic_index(ptr @.str.6805, i64 303, i64 8, i64 %t110) unreachable -inrange9594: +inrange10098: %t112 = extractvalue { ptr, i64, i64 } %t109, 0 %t113 = getelementptr inbounds { ptr, i64, i64 }, ptr %t112, i64 8 %t114 = load { ptr, i64, i64 }, ptr %t113 @@ -86664,37 +103528,37 @@ inrange9594: %t120 = getelementptr inbounds %S.lsp.Ref, ptr %t119, i64 %t117 store %S.lsp.Ref %t116, ptr %t120 store i64 %t118, ptr %t48 - br label %endif9578 -else9577: + br label %endif10082 +else10081: %t121 = load { ptr, i64, i64 }, ptr %a37 store { ptr, i64, i64 } %t121, ptr %a122 - store { ptr, i64, i64 } { ptr @.str.6588, i64 2, i64 0 }, ptr %a123 + store { ptr, i64, i64 } { ptr @.str.6806, 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.from9595 -logic.from9595: - br i1 %t125, label %logic.rhs9596, label %logic.end9597 -logic.rhs9596: + br label %logic.from10099 +logic.from10099: + br i1 %t125, label %logic.rhs10100, label %logic.end10101 +logic.rhs10100: %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.rend9598 -logic.rend9598: - br label %logic.end9597 -logic.end9597: - %t129 = phi i1 [ false, %logic.from9595 ], [ %t128, %logic.rend9598 ] - br i1 %t129, label %then9599, label %else9600 -then9599: + br label %logic.rend10102 +logic.rend10102: + br label %logic.end10101 +logic.end10101: + %t129 = phi i1 [ false, %logic.from10099 ], [ %t128, %logic.rend10102 ] + br i1 %t129, label %then10103, label %else10104 +then10103: %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 %range9602, label %inrange9603 -range9602: - call void @finch_panic_index(ptr @.str.6589, i64 305, i64 1, i64 %t133) + br i1 %t134, label %range10106, label %inrange10107 +range10106: + call void @finch_panic_index(ptr @.str.6807, i64 305, i64 1, i64 %t133) unreachable -inrange9603: +inrange10107: %t135 = extractvalue { ptr, i64, i64 } %t132, 0 %t136 = getelementptr inbounds { ptr, i64, i64 }, ptr %t135, i64 1 %t137 = load { ptr, i64, i64 }, ptr %t136 @@ -86705,11 +103569,11 @@ inrange9603: %t142 = load { ptr, i64, i64 }, ptr %a27 %t143 = extractvalue { ptr, i64, i64 } %t142, 1 %t144 = icmp uge i64 2, %t143 - br i1 %t144, label %range9604, label %inrange9605 -range9604: - call void @finch_panic_index(ptr @.str.6590, i64 305, i64 2, i64 %t143) + br i1 %t144, label %range10108, label %inrange10109 +range10108: + call void @finch_panic_index(ptr @.str.6808, i64 305, i64 2, i64 %t143) unreachable -inrange9605: +inrange10109: %t145 = extractvalue { ptr, i64, i64 } %t142, 0 %t146 = getelementptr inbounds { ptr, i64, i64 }, ptr %t145, i64 2 %t147 = load { ptr, i64, i64 }, ptr %t146 @@ -86720,11 +103584,11 @@ inrange9605: %t152 = load { ptr, i64, i64 }, ptr %a27 %t153 = extractvalue { ptr, i64, i64 } %t152, 1 %t154 = icmp uge i64 3, %t153 - br i1 %t154, label %range9606, label %inrange9607 -range9606: - call void @finch_panic_index(ptr @.str.6591, i64 305, i64 3, i64 %t153) + br i1 %t154, label %range10110, label %inrange10111 +range10110: + call void @finch_panic_index(ptr @.str.6809, i64 305, i64 3, i64 %t153) unreachable -inrange9607: +inrange10111: %t155 = extractvalue { ptr, i64, i64 } %t152, 0 %t156 = getelementptr inbounds { ptr, i64, i64 }, ptr %t155, i64 3 %t157 = load { ptr, i64, i64 }, ptr %t156 @@ -86735,11 +103599,11 @@ inrange9607: %t162 = load { ptr, i64, i64 }, ptr %a27 %t163 = extractvalue { ptr, i64, i64 } %t162, 1 %t164 = icmp uge i64 4, %t163 - br i1 %t164, label %range9608, label %inrange9609 -range9608: - call void @finch_panic_index(ptr @.str.6592, i64 305, i64 4, i64 %t163) + br i1 %t164, label %range10112, label %inrange10113 +range10112: + call void @finch_panic_index(ptr @.str.6810, i64 305, i64 4, i64 %t163) unreachable -inrange9609: +inrange10113: %t165 = extractvalue { ptr, i64, i64 } %t162, 0 %t166 = getelementptr inbounds { ptr, i64, i64 }, ptr %t165, i64 4 %t167 = load { ptr, i64, i64 }, ptr %t166 @@ -86748,11 +103612,11 @@ inrange9609: %t170 = load { ptr, i64, i64 }, ptr %a27 %t171 = extractvalue { ptr, i64, i64 } %t170, 1 %t172 = icmp uge i64 5, %t171 - br i1 %t172, label %range9610, label %inrange9611 -range9610: - call void @finch_panic_index(ptr @.str.6593, i64 305, i64 5, i64 %t171) + br i1 %t172, label %range10114, label %inrange10115 +range10114: + call void @finch_panic_index(ptr @.str.6811, i64 305, i64 5, i64 %t171) unreachable -inrange9611: +inrange10115: %t173 = extractvalue { ptr, i64, i64 } %t170, 0 %t174 = getelementptr inbounds { ptr, i64, i64 }, ptr %t173, i64 5 %t175 = load { ptr, i64, i64 }, ptr %t174 @@ -86761,11 +103625,11 @@ inrange9611: %t178 = load { ptr, i64, i64 }, ptr %a27 %t179 = extractvalue { ptr, i64, i64 } %t178, 1 %t180 = icmp uge i64 6, %t179 - br i1 %t180, label %range9612, label %inrange9613 -range9612: - call void @finch_panic_index(ptr @.str.6594, i64 305, i64 6, i64 %t179) + br i1 %t180, label %range10116, label %inrange10117 +range10116: + call void @finch_panic_index(ptr @.str.6812, i64 305, i64 6, i64 %t179) unreachable -inrange9613: +inrange10117: %t181 = extractvalue { ptr, i64, i64 } %t178, 0 %t182 = getelementptr inbounds { ptr, i64, i64 }, ptr %t181, i64 6 %t183 = load { ptr, i64, i64 }, ptr %t182 @@ -86776,11 +103640,11 @@ inrange9613: %t188 = load { ptr, i64, i64 }, ptr %a27 %t189 = extractvalue { ptr, i64, i64 } %t188, 1 %t190 = icmp uge i64 7, %t189 - br i1 %t190, label %range9614, label %inrange9615 -range9614: - call void @finch_panic_index(ptr @.str.6595, i64 305, i64 7, i64 %t189) + br i1 %t190, label %range10118, label %inrange10119 +range10118: + call void @finch_panic_index(ptr @.str.6813, i64 305, i64 7, i64 %t189) unreachable -inrange9615: +inrange10119: %t191 = extractvalue { ptr, i64, i64 } %t188, 0 %t192 = getelementptr inbounds { ptr, i64, i64 }, ptr %t191, i64 7 %t193 = load { ptr, i64, i64 }, ptr %t192 @@ -86789,11 +103653,11 @@ inrange9615: %t196 = load { ptr, i64, i64 }, ptr %a27 %t197 = extractvalue { ptr, i64, i64 } %t196, 1 %t198 = icmp uge i64 8, %t197 - br i1 %t198, label %range9616, label %inrange9617 -range9616: - call void @finch_panic_index(ptr @.str.6596, i64 305, i64 8, i64 %t197) + br i1 %t198, label %range10120, label %inrange10121 +range10120: + call void @finch_panic_index(ptr @.str.6814, i64 305, i64 8, i64 %t197) unreachable -inrange9617: +inrange10121: %t199 = extractvalue { ptr, i64, i64 } %t196, 0 %t200 = getelementptr inbounds { ptr, i64, i64 }, ptr %t199, i64 8 %t201 = load { ptr, i64, i64 }, ptr %t200 @@ -86806,37 +103670,37 @@ inrange9617: %t207 = getelementptr inbounds %S.lsp.VarRec, ptr %t206, i64 %t204 store %S.lsp.VarRec %t203, ptr %t207 store i64 %t205, ptr %t131 - br label %endif9601 -else9600: + br label %endif10105 +else10104: %t208 = load { ptr, i64, i64 }, ptr %a37 store { ptr, i64, i64 } %t208, ptr %a209 - store { ptr, i64, i64 } { ptr @.str.6597, i64 2, i64 0 }, ptr %a210 + store { ptr, i64, i64 } { ptr @.str.6815, 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.from9618 -logic.from9618: - br i1 %t212, label %logic.rhs9619, label %logic.end9620 -logic.rhs9619: + br label %logic.from10122 +logic.from10122: + br i1 %t212, label %logic.rhs10123, label %logic.end10124 +logic.rhs10123: %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.rend9621 -logic.rend9621: - br label %logic.end9620 -logic.end9620: - %t216 = phi i1 [ false, %logic.from9618 ], [ %t215, %logic.rend9621 ] - br i1 %t216, label %then9622, label %else9623 -then9622: + br label %logic.rend10125 +logic.rend10125: + br label %logic.end10124 +logic.end10124: + %t216 = phi i1 [ false, %logic.from10122 ], [ %t215, %logic.rend10125 ] + br i1 %t216, label %then10126, label %else10127 +then10126: %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 %range9625, label %inrange9626 -range9625: - call void @finch_panic_index(ptr @.str.6598, i64 307, i64 1, i64 %t220) + br i1 %t221, label %range10129, label %inrange10130 +range10129: + call void @finch_panic_index(ptr @.str.6816, i64 307, i64 1, i64 %t220) unreachable -inrange9626: +inrange10130: %t222 = extractvalue { ptr, i64, i64 } %t219, 0 %t223 = getelementptr inbounds { ptr, i64, i64 }, ptr %t222, i64 1 %t224 = load { ptr, i64, i64 }, ptr %t223 @@ -86847,11 +103711,11 @@ inrange9626: %t229 = load { ptr, i64, i64 }, ptr %a27 %t230 = extractvalue { ptr, i64, i64 } %t229, 1 %t231 = icmp uge i64 2, %t230 - br i1 %t231, label %range9627, label %inrange9628 -range9627: - call void @finch_panic_index(ptr @.str.6599, i64 307, i64 2, i64 %t230) + br i1 %t231, label %range10131, label %inrange10132 +range10131: + call void @finch_panic_index(ptr @.str.6817, i64 307, i64 2, i64 %t230) unreachable -inrange9628: +inrange10132: %t232 = extractvalue { ptr, i64, i64 } %t229, 0 %t233 = getelementptr inbounds { ptr, i64, i64 }, ptr %t232, i64 2 %t234 = load { ptr, i64, i64 }, ptr %t233 @@ -86862,11 +103726,11 @@ inrange9628: %t239 = load { ptr, i64, i64 }, ptr %a27 %t240 = extractvalue { ptr, i64, i64 } %t239, 1 %t241 = icmp uge i64 3, %t240 - br i1 %t241, label %range9629, label %inrange9630 -range9629: - call void @finch_panic_index(ptr @.str.6600, i64 307, i64 3, i64 %t240) + br i1 %t241, label %range10133, label %inrange10134 +range10133: + call void @finch_panic_index(ptr @.str.6818, i64 307, i64 3, i64 %t240) unreachable -inrange9630: +inrange10134: %t242 = extractvalue { ptr, i64, i64 } %t239, 0 %t243 = getelementptr inbounds { ptr, i64, i64 }, ptr %t242, i64 3 %t244 = load { ptr, i64, i64 }, ptr %t243 @@ -86877,11 +103741,11 @@ inrange9630: %t249 = load { ptr, i64, i64 }, ptr %a27 %t250 = extractvalue { ptr, i64, i64 } %t249, 1 %t251 = icmp uge i64 4, %t250 - br i1 %t251, label %range9631, label %inrange9632 -range9631: - call void @finch_panic_index(ptr @.str.6601, i64 307, i64 4, i64 %t250) + br i1 %t251, label %range10135, label %inrange10136 +range10135: + call void @finch_panic_index(ptr @.str.6819, i64 307, i64 4, i64 %t250) unreachable -inrange9632: +inrange10136: %t252 = extractvalue { ptr, i64, i64 } %t249, 0 %t253 = getelementptr inbounds { ptr, i64, i64 }, ptr %t252, i64 4 %t254 = load { ptr, i64, i64 }, ptr %t253 @@ -86892,11 +103756,11 @@ inrange9632: %t259 = load { ptr, i64, i64 }, ptr %a27 %t260 = extractvalue { ptr, i64, i64 } %t259, 1 %t261 = icmp uge i64 5, %t260 - br i1 %t261, label %range9633, label %inrange9634 -range9633: - call void @finch_panic_index(ptr @.str.6602, i64 307, i64 5, i64 %t260) + br i1 %t261, label %range10137, label %inrange10138 +range10137: + call void @finch_panic_index(ptr @.str.6820, i64 307, i64 5, i64 %t260) unreachable -inrange9634: +inrange10138: %t262 = extractvalue { ptr, i64, i64 } %t259, 0 %t263 = getelementptr inbounds { ptr, i64, i64 }, ptr %t262, i64 5 %t264 = load { ptr, i64, i64 }, ptr %t263 @@ -86905,11 +103769,11 @@ inrange9634: %t267 = load { ptr, i64, i64 }, ptr %a27 %t268 = extractvalue { ptr, i64, i64 } %t267, 1 %t269 = icmp uge i64 6, %t268 - br i1 %t269, label %range9635, label %inrange9636 -range9635: - call void @finch_panic_index(ptr @.str.6603, i64 307, i64 6, i64 %t268) + br i1 %t269, label %range10139, label %inrange10140 +range10139: + call void @finch_panic_index(ptr @.str.6821, i64 307, i64 6, i64 %t268) unreachable -inrange9636: +inrange10140: %t270 = extractvalue { ptr, i64, i64 } %t267, 0 %t271 = getelementptr inbounds { ptr, i64, i64 }, ptr %t270, i64 6 %t272 = load { ptr, i64, i64 }, ptr %t271 @@ -86918,11 +103782,11 @@ inrange9636: %t275 = load { ptr, i64, i64 }, ptr %a27 %t276 = extractvalue { ptr, i64, i64 } %t275, 1 %t277 = icmp uge i64 7, %t276 - br i1 %t277, label %range9637, label %inrange9638 -range9637: - call void @finch_panic_index(ptr @.str.6604, i64 307, i64 7, i64 %t276) + br i1 %t277, label %range10141, label %inrange10142 +range10141: + call void @finch_panic_index(ptr @.str.6822, i64 307, i64 7, i64 %t276) unreachable -inrange9638: +inrange10142: %t278 = extractvalue { ptr, i64, i64 } %t275, 0 %t279 = getelementptr inbounds { ptr, i64, i64 }, ptr %t278, i64 7 %t280 = load { ptr, i64, i64 }, ptr %t279 @@ -86931,11 +103795,11 @@ inrange9638: %t283 = load { ptr, i64, i64 }, ptr %a27 %t284 = extractvalue { ptr, i64, i64 } %t283, 1 %t285 = icmp uge i64 8, %t284 - br i1 %t285, label %range9639, label %inrange9640 -range9639: - call void @finch_panic_index(ptr @.str.6605, i64 307, i64 8, i64 %t284) + br i1 %t285, label %range10143, label %inrange10144 +range10143: + call void @finch_panic_index(ptr @.str.6823, i64 307, i64 8, i64 %t284) unreachable -inrange9640: +inrange10144: %t286 = extractvalue { ptr, i64, i64 } %t283, 0 %t287 = getelementptr inbounds { ptr, i64, i64 }, ptr %t286, i64 8 %t288 = load { ptr, i64, i64 }, ptr %t287 @@ -86944,16 +103808,16 @@ inrange9640: %t291 = load { ptr, i64, i64 }, ptr %a27 %t292 = extractvalue { ptr, i64, i64 } %t291, 1 %t293 = icmp uge i64 9, %t292 - br i1 %t293, label %range9641, label %inrange9642 -range9641: - call void @finch_panic_index(ptr @.str.6606, i64 307, i64 9, i64 %t292) + br i1 %t293, label %range10145, label %inrange10146 +range10145: + call void @finch_panic_index(ptr @.str.6824, i64 307, i64 9, i64 %t292) unreachable -inrange9642: +inrange10146: %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.6608, i64 1, i64 0 }, ptr %a299 + store { ptr, i64, i64 } { ptr @.str.6826, 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 @@ -86964,37 +103828,37 @@ inrange9642: %t306 = getelementptr inbounds %S.lsp.FnRec, ptr %t305, i64 %t303 store %S.lsp.FnRec %t302, ptr %t306 store i64 %t304, ptr %t218 - br label %endif9624 -else9623: + br label %endif10128 +else10127: %t307 = load { ptr, i64, i64 }, ptr %a37 store { ptr, i64, i64 } %t307, ptr %a308 - store { ptr, i64, i64 } { ptr @.str.6609, i64 2, i64 0 }, ptr %a309 + store { ptr, i64, i64 } { ptr @.str.6827, 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.from9643 -logic.from9643: - br i1 %t311, label %logic.rhs9644, label %logic.end9645 -logic.rhs9644: + br label %logic.from10147 +logic.from10147: + br i1 %t311, label %logic.rhs10148, label %logic.end10149 +logic.rhs10148: %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.rend9646 -logic.rend9646: - br label %logic.end9645 -logic.end9645: - %t315 = phi i1 [ false, %logic.from9643 ], [ %t314, %logic.rend9646 ] - br i1 %t315, label %then9647, label %else9648 -then9647: + br label %logic.rend10150 +logic.rend10150: + br label %logic.end10149 +logic.end10149: + %t315 = phi i1 [ false, %logic.from10147 ], [ %t314, %logic.rend10150 ] + br i1 %t315, label %then10151, label %else10152 +then10151: %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 %range9650, label %inrange9651 -range9650: - call void @finch_panic_index(ptr @.str.6610, i64 309, i64 1, i64 %t319) + br i1 %t320, label %range10154, label %inrange10155 +range10154: + call void @finch_panic_index(ptr @.str.6828, i64 309, i64 1, i64 %t319) unreachable -inrange9651: +inrange10155: %t321 = extractvalue { ptr, i64, i64 } %t318, 0 %t322 = getelementptr inbounds { ptr, i64, i64 }, ptr %t321, i64 1 %t323 = load { ptr, i64, i64 }, ptr %t322 @@ -87005,11 +103869,11 @@ inrange9651: %t328 = load { ptr, i64, i64 }, ptr %a27 %t329 = extractvalue { ptr, i64, i64 } %t328, 1 %t330 = icmp uge i64 2, %t329 - br i1 %t330, label %range9652, label %inrange9653 -range9652: - call void @finch_panic_index(ptr @.str.6611, i64 309, i64 2, i64 %t329) + br i1 %t330, label %range10156, label %inrange10157 +range10156: + call void @finch_panic_index(ptr @.str.6829, i64 309, i64 2, i64 %t329) unreachable -inrange9653: +inrange10157: %t331 = extractvalue { ptr, i64, i64 } %t328, 0 %t332 = getelementptr inbounds { ptr, i64, i64 }, ptr %t331, i64 2 %t333 = load { ptr, i64, i64 }, ptr %t332 @@ -87020,11 +103884,11 @@ inrange9653: %t338 = load { ptr, i64, i64 }, ptr %a27 %t339 = extractvalue { ptr, i64, i64 } %t338, 1 %t340 = icmp uge i64 3, %t339 - br i1 %t340, label %range9654, label %inrange9655 -range9654: - call void @finch_panic_index(ptr @.str.6612, i64 309, i64 3, i64 %t339) + br i1 %t340, label %range10158, label %inrange10159 +range10158: + call void @finch_panic_index(ptr @.str.6830, i64 309, i64 3, i64 %t339) unreachable -inrange9655: +inrange10159: %t341 = extractvalue { ptr, i64, i64 } %t338, 0 %t342 = getelementptr inbounds { ptr, i64, i64 }, ptr %t341, i64 3 %t343 = load { ptr, i64, i64 }, ptr %t342 @@ -87035,11 +103899,11 @@ inrange9655: %t348 = load { ptr, i64, i64 }, ptr %a27 %t349 = extractvalue { ptr, i64, i64 } %t348, 1 %t350 = icmp uge i64 4, %t349 - br i1 %t350, label %range9656, label %inrange9657 -range9656: - call void @finch_panic_index(ptr @.str.6613, i64 309, i64 4, i64 %t349) + br i1 %t350, label %range10160, label %inrange10161 +range10160: + call void @finch_panic_index(ptr @.str.6831, i64 309, i64 4, i64 %t349) unreachable -inrange9657: +inrange10161: %t351 = extractvalue { ptr, i64, i64 } %t348, 0 %t352 = getelementptr inbounds { ptr, i64, i64 }, ptr %t351, i64 4 %t353 = load { ptr, i64, i64 }, ptr %t352 @@ -87048,11 +103912,11 @@ inrange9657: %t356 = load { ptr, i64, i64 }, ptr %a27 %t357 = extractvalue { ptr, i64, i64 } %t356, 1 %t358 = icmp uge i64 5, %t357 - br i1 %t358, label %range9658, label %inrange9659 -range9658: - call void @finch_panic_index(ptr @.str.6614, i64 309, i64 5, i64 %t357) + br i1 %t358, label %range10162, label %inrange10163 +range10162: + call void @finch_panic_index(ptr @.str.6832, i64 309, i64 5, i64 %t357) unreachable -inrange9659: +inrange10163: %t359 = extractvalue { ptr, i64, i64 } %t356, 0 %t360 = getelementptr inbounds { ptr, i64, i64 }, ptr %t359, i64 5 %t361 = load { ptr, i64, i64 }, ptr %t360 @@ -87065,40 +103929,40 @@ inrange9659: %t367 = getelementptr inbounds %S.lsp.StructRec, ptr %t366, i64 %t364 store %S.lsp.StructRec %t363, ptr %t367 store i64 %t365, ptr %t317 - br label %endif9649 -else9648: + br label %endif10153 +else10152: %t368 = load { ptr, i64, i64 }, ptr %a37 store { ptr, i64, i64 } %t368, ptr %a369 - store { ptr, i64, i64 } { ptr @.str.6615, i64 3, i64 0 }, ptr %a370 + store { ptr, i64, i64 } { ptr @.str.6833, 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.from9660 -logic.from9660: - br i1 %t372, label %logic.rhs9661, label %logic.end9662 -logic.rhs9661: + br label %logic.from10164 +logic.from10164: + br i1 %t372, label %logic.rhs10165, label %logic.end10166 +logic.rhs10165: %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.rend9663 -logic.rend9663: - br label %logic.end9662 -logic.end9662: - %t376 = phi i1 [ false, %logic.from9660 ], [ %t375, %logic.rend9663 ] - br label %logic.from9664 -logic.from9664: - br i1 %t376, label %logic.rhs9665, label %logic.end9666 -logic.rhs9665: + br label %logic.rend10167 +logic.rend10167: + br label %logic.end10166 +logic.end10166: + %t376 = phi i1 [ false, %logic.from10164 ], [ %t375, %logic.rend10167 ] + br label %logic.from10168 +logic.from10168: + br i1 %t376, label %logic.rhs10169, label %logic.end10170 +logic.rhs10169: %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.rend9667 -logic.rend9667: - br label %logic.end9666 -logic.end9666: - %t381 = phi i1 [ false, %logic.from9664 ], [ %t380, %logic.rend9667 ] - br i1 %t381, label %then9668, label %else9669 -then9668: + br label %logic.rend10171 +logic.rend10171: + br label %logic.end10170 +logic.end10170: + %t381 = phi i1 [ false, %logic.from10168 ], [ %t380, %logic.rend10171 ] + br i1 %t381, label %then10172, label %else10173 +then10172: %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 @@ -87109,11 +103973,11 @@ then9668: %t389 = load { ptr, i64, i64 }, ptr %t387 %t390 = extractvalue { ptr, i64, i64 } %t389, 1 %t391 = icmp uge i64 %t388, %t390 - br i1 %t391, label %range9671, label %inrange9672 -range9671: - call void @finch_panic_index(ptr @.str.6616, i64 312, i64 %t388, i64 %t390) + br i1 %t391, label %range10175, label %inrange10176 +range10175: + call void @finch_panic_index(ptr @.str.6834, i64 312, i64 %t388, i64 %t390) unreachable -inrange9672: +inrange10176: %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 @@ -87121,11 +103985,11 @@ inrange9672: %t396 = load { ptr, i64, i64 }, ptr %a27 %t397 = extractvalue { ptr, i64, i64 } %t396, 1 %t398 = icmp uge i64 3, %t397 - br i1 %t398, label %range9673, label %inrange9674 -range9673: - call void @finch_panic_index(ptr @.str.6617, i64 312, i64 3, i64 %t397) + br i1 %t398, label %range10177, label %inrange10178 +range10177: + call void @finch_panic_index(ptr @.str.6835, i64 312, i64 3, i64 %t397) unreachable -inrange9674: +inrange10178: %t399 = extractvalue { ptr, i64, i64 } %t396, 0 %t400 = getelementptr inbounds { ptr, i64, i64 }, ptr %t399, i64 3 %t401 = load { ptr, i64, i64 }, ptr %t400 @@ -87144,11 +104008,11 @@ inrange9674: %t411 = load { ptr, i64, i64 }, ptr %t409 %t412 = extractvalue { ptr, i64, i64 } %t411, 1 %t413 = icmp uge i64 %t410, %t412 - br i1 %t413, label %range9675, label %inrange9676 -range9675: - call void @finch_panic_index(ptr @.str.6618, i64 313, i64 %t410, i64 %t412) + br i1 %t413, label %range10179, label %inrange10180 +range10179: + call void @finch_panic_index(ptr @.str.6836, i64 313, i64 %t410, i64 %t412) unreachable -inrange9676: +inrange10180: %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 @@ -87156,11 +104020,11 @@ inrange9676: %t418 = load { ptr, i64, i64 }, ptr %a27 %t419 = extractvalue { ptr, i64, i64 } %t418, 1 %t420 = icmp uge i64 4, %t419 - br i1 %t420, label %range9677, label %inrange9678 -range9677: - call void @finch_panic_index(ptr @.str.6619, i64 313, i64 4, i64 %t419) + br i1 %t420, label %range10181, label %inrange10182 +range10181: + call void @finch_panic_index(ptr @.str.6837, i64 313, i64 4, i64 %t419) unreachable -inrange9678: +inrange10182: %t421 = extractvalue { ptr, i64, i64 } %t418, 0 %t422 = getelementptr inbounds { ptr, i64, i64 }, ptr %t421, i64 4 %t423 = load { ptr, i64, i64 }, ptr %t422 @@ -87174,37 +104038,37 @@ inrange9678: %t430 = getelementptr inbounds { ptr, i64, i64 }, ptr %t429, i64 %t427 store { ptr, i64, i64 } %t426, ptr %t430 store i64 %t428, ptr %t417 - br label %endif9670 -else9669: + br label %endif10174 +else10173: %t431 = load { ptr, i64, i64 }, ptr %a37 store { ptr, i64, i64 } %t431, ptr %a432 - store { ptr, i64, i64 } { ptr @.str.6620, i64 2, i64 0 }, ptr %a433 + store { ptr, i64, i64 } { ptr @.str.6838, 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.from9679 -logic.from9679: - br i1 %t435, label %logic.rhs9680, label %logic.end9681 -logic.rhs9680: + br label %logic.from10183 +logic.from10183: + br i1 %t435, label %logic.rhs10184, label %logic.end10185 +logic.rhs10184: %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.rend9682 -logic.rend9682: - br label %logic.end9681 -logic.end9681: - %t439 = phi i1 [ false, %logic.from9679 ], [ %t438, %logic.rend9682 ] - br i1 %t439, label %then9683, label %else9684 -then9683: + br label %logic.rend10186 +logic.rend10186: + br label %logic.end10185 +logic.end10185: + %t439 = phi i1 [ false, %logic.from10183 ], [ %t438, %logic.rend10186 ] + br i1 %t439, label %then10187, label %else10188 +then10187: %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 %range9686, label %inrange9687 -range9686: - call void @finch_panic_index(ptr @.str.6621, i64 315, i64 1, i64 %t443) + br i1 %t444, label %range10190, label %inrange10191 +range10190: + call void @finch_panic_index(ptr @.str.6839, i64 315, i64 1, i64 %t443) unreachable -inrange9687: +inrange10191: %t445 = extractvalue { ptr, i64, i64 } %t442, 0 %t446 = getelementptr inbounds { ptr, i64, i64 }, ptr %t445, i64 1 %t447 = load { ptr, i64, i64 }, ptr %t446 @@ -87215,11 +104079,11 @@ inrange9687: %t452 = load { ptr, i64, i64 }, ptr %a27 %t453 = extractvalue { ptr, i64, i64 } %t452, 1 %t454 = icmp uge i64 2, %t453 - br i1 %t454, label %range9688, label %inrange9689 -range9688: - call void @finch_panic_index(ptr @.str.6622, i64 315, i64 2, i64 %t453) + br i1 %t454, label %range10192, label %inrange10193 +range10192: + call void @finch_panic_index(ptr @.str.6840, i64 315, i64 2, i64 %t453) unreachable -inrange9689: +inrange10193: %t455 = extractvalue { ptr, i64, i64 } %t452, 0 %t456 = getelementptr inbounds { ptr, i64, i64 }, ptr %t455, i64 2 %t457 = load { ptr, i64, i64 }, ptr %t456 @@ -87230,11 +104094,11 @@ inrange9689: %t462 = load { ptr, i64, i64 }, ptr %a27 %t463 = extractvalue { ptr, i64, i64 } %t462, 1 %t464 = icmp uge i64 3, %t463 - br i1 %t464, label %range9690, label %inrange9691 -range9690: - call void @finch_panic_index(ptr @.str.6623, i64 315, i64 3, i64 %t463) + br i1 %t464, label %range10194, label %inrange10195 +range10194: + call void @finch_panic_index(ptr @.str.6841, i64 315, i64 3, i64 %t463) unreachable -inrange9691: +inrange10195: %t465 = extractvalue { ptr, i64, i64 } %t462, 0 %t466 = getelementptr inbounds { ptr, i64, i64 }, ptr %t465, i64 3 %t467 = load { ptr, i64, i64 }, ptr %t466 @@ -87245,11 +104109,11 @@ inrange9691: %t472 = load { ptr, i64, i64 }, ptr %a27 %t473 = extractvalue { ptr, i64, i64 } %t472, 1 %t474 = icmp uge i64 4, %t473 - br i1 %t474, label %range9692, label %inrange9693 -range9692: - call void @finch_panic_index(ptr @.str.6624, i64 315, i64 4, i64 %t473) + br i1 %t474, label %range10196, label %inrange10197 +range10196: + call void @finch_panic_index(ptr @.str.6842, i64 315, i64 4, i64 %t473) unreachable -inrange9693: +inrange10197: %t475 = extractvalue { ptr, i64, i64 } %t472, 0 %t476 = getelementptr inbounds { ptr, i64, i64 }, ptr %t475, i64 4 %t477 = load { ptr, i64, i64 }, ptr %t476 @@ -87258,11 +104122,11 @@ inrange9693: %t480 = load { ptr, i64, i64 }, ptr %a27 %t481 = extractvalue { ptr, i64, i64 } %t480, 1 %t482 = icmp uge i64 5, %t481 - br i1 %t482, label %range9694, label %inrange9695 -range9694: - call void @finch_panic_index(ptr @.str.6625, i64 315, i64 5, i64 %t481) + br i1 %t482, label %range10198, label %inrange10199 +range10198: + call void @finch_panic_index(ptr @.str.6843, i64 315, i64 5, i64 %t481) unreachable -inrange9695: +inrange10199: %t483 = extractvalue { ptr, i64, i64 } %t480, 0 %t484 = getelementptr inbounds { ptr, i64, i64 }, ptr %t483, i64 5 %t485 = load { ptr, i64, i64 }, ptr %t484 @@ -87271,16 +104135,16 @@ inrange9695: %t488 = load { ptr, i64, i64 }, ptr %a27 %t489 = extractvalue { ptr, i64, i64 } %t488, 1 %t490 = icmp uge i64 6, %t489 - br i1 %t490, label %range9696, label %inrange9697 -range9696: - call void @finch_panic_index(ptr @.str.6626, i64 315, i64 6, i64 %t489) + br i1 %t490, label %range10200, label %inrange10201 +range10200: + call void @finch_panic_index(ptr @.str.6844, i64 315, i64 6, i64 %t489) unreachable -inrange9697: +inrange10201: %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.6628, i64 1, i64 0 }, ptr %a496 + store { ptr, i64, i64 } { ptr @.str.6846, 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 @@ -87291,37 +104155,37 @@ inrange9697: %t503 = getelementptr inbounds %S.lsp.EnumRec, ptr %t502, i64 %t500 store %S.lsp.EnumRec %t499, ptr %t503 store i64 %t501, ptr %t441 - br label %endif9685 -else9684: + br label %endif10189 +else10188: %t504 = load { ptr, i64, i64 }, ptr %a37 store { ptr, i64, i64 } %t504, ptr %a505 - store { ptr, i64, i64 } { ptr @.str.6629, i64 2, i64 0 }, ptr %a506 + store { ptr, i64, i64 } { ptr @.str.6847, 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.from9698 -logic.from9698: - br i1 %t508, label %logic.rhs9699, label %logic.end9700 -logic.rhs9699: + br label %logic.from10202 +logic.from10202: + br i1 %t508, label %logic.rhs10203, label %logic.end10204 +logic.rhs10203: %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.rend9701 -logic.rend9701: - br label %logic.end9700 -logic.end9700: - %t512 = phi i1 [ false, %logic.from9698 ], [ %t511, %logic.rend9701 ] - br i1 %t512, label %then9702, label %endif9704 -then9702: + br label %logic.rend10205 +logic.rend10205: + br label %logic.end10204 +logic.end10204: + %t512 = phi i1 [ false, %logic.from10202 ], [ %t511, %logic.rend10205 ] + br i1 %t512, label %then10206, label %endif10208 +then10206: %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 %range9705, label %inrange9706 -range9705: - call void @finch_panic_index(ptr @.str.6630, i64 317, i64 1, i64 %t516) + br i1 %t517, label %range10209, label %inrange10210 +range10209: + call void @finch_panic_index(ptr @.str.6848, i64 317, i64 1, i64 %t516) unreachable -inrange9706: +inrange10210: %t518 = extractvalue { ptr, i64, i64 } %t515, 0 %t519 = getelementptr inbounds { ptr, i64, i64 }, ptr %t518, i64 1 %t520 = load { ptr, i64, i64 }, ptr %t519 @@ -87335,139 +104199,635 @@ inrange9706: %t527 = getelementptr inbounds { ptr, i64, i64 }, ptr %t526, i64 %t524 store { ptr, i64, i64 } %t523, ptr %t527 store i64 %t525, ptr %t514 - br label %endif9704 -endif9704: - br label %endif9685 -endif9685: - br label %endif9670 -endif9670: - br label %endif9649 -endif9649: - br label %endif9624 -endif9624: - br label %endif9601 -endif9601: - br label %endif9578 -endif9578: - br label %endif9569 -else9568: + br label %endif10208 +endif10208: + br label %endif10189 +endif10189: + br label %endif10174 +endif10174: + br label %endif10153 +endif10153: + br label %endif10128 +endif10128: + br label %endif10105 +endif10105: + br label %endif10082 +endif10082: + call void @finch_str_drop(ptr %a37) + call void @finch.drop.arr_str(ptr %a27) + br label %endif10073 +else10072: %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 %then9707, label %endif9709 -then9707: + br i1 %t531, label %then10211, label %endif10213 +then10211: %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 + %t535 = load %S.lsp.Diag, ptr %t534 store %S.lsp.Diag %t533, ptr %t534 - br label %endif9709 -endif9709: - br label %endif9569 -endif9569: - br label %each.step9565 -each.step9565: - %t535 = load i64, ptr %a10 - %t536 = add i64 %t535, 1 - store i64 %t536, ptr %a10 - br label %each.cond9563 -each.end9566: - %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 + store %S.lsp.Diag %t535, ptr %a536 + call void @finch.drop.S_lsp_Diag(ptr %a536) + br label %endif10213 +endif10213: + br label %endif10073 +endif10073: + br label %each.step10069 +each.step10069: + %t537 = load i64, ptr %a10 + %t538 = add i64 %t537, 1 + store i64 %t538, ptr %a10 + br label %each.cond10067 +each.end10070: + call void @finch.drop.arr_str(ptr %a9) + %t539 = load %S.lsp.Analysis, ptr %a2 + ret %S.lsp.Analysis %t539 +} + +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.cond10234 +n.cond10234: + %t6 = load i64, ptr %a5 + %t7 = icmp slt i64 %t6, %t4 + br i1 %t7, label %n.body10235, label %n.end10236 +n.body10235: + %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.cond10234 +n.end10236: + 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.cond10237 +n.cond10237: + %t6 = load i64, ptr %a5 + %t7 = icmp slt i64 %t6, %t4 + br i1 %t7, label %n.body10238, label %n.end10239 +n.body10238: + %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.cond10237 +n.end10239: + 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.cond10240 +n.cond10240: + %t6 = load i64, ptr %a5 + %t7 = icmp slt i64 %t6, %t4 + br i1 %t7, label %n.body10241, label %n.end10242 +n.body10241: + %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.cond10240 +n.end10242: + 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.cond10243 +n.cond10243: + %t6 = load i64, ptr %a5 + %t7 = icmp slt i64 %t6, %t4 + br i1 %t7, label %n.body10244, label %n.end10245 +n.body10244: + %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.cond10243 +n.end10245: + 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.cond10246 +n.cond10246: + %t6 = load i64, ptr %a5 + %t7 = icmp slt i64 %t6, %t4 + br i1 %t7, label %n.body10247, label %n.end10248 +n.body10247: + %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.cond10246 +n.end10248: + 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 void @finch.drop.S_lsp_Ref(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.lsp.Ref, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.lsp.Ref, ptr %a, i32 0, i32 4 + call void @finch_str_drop(ptr %t2) + %t3 = getelementptr inbounds %S.lsp.Ref, ptr %a, i32 0, i32 7 + call void @finch_str_drop(ptr %t3) + ret void +} + +define internal void @finch.drop.arr_S_lsp_Ref(ptr %a) { +entry: + %a4 = alloca i64, align 16 + %t1 = load ptr, ptr %a + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 + %t3 = load i64, ptr %t2 + store i64 0, ptr %a4 + br label %n.cond10249 +n.cond10249: + %t5 = load i64, ptr %a4 + %t6 = icmp slt i64 %t5, %t3 + br i1 %t6, label %n.body10250, label %n.end10251 +n.body10250: + %t7 = getelementptr inbounds %S.lsp.Ref, ptr %t1, i64 %t5 + call void @finch.drop.S_lsp_Ref(ptr %t7) + %t8 = load i64, ptr %a4 + %t9 = add i64 %t8, 1 + store i64 %t9, ptr %a4 + br label %n.cond10249 +n.end10251: + call void @finch_arr_free(ptr %a) + ret void +} + +define internal void @finch.drop.S_lsp_VarRec(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.lsp.VarRec, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.lsp.VarRec, ptr %a, i32 0, i32 1 + call void @finch_str_drop(ptr %t2) + %t3 = getelementptr inbounds %S.lsp.VarRec, ptr %a, i32 0, i32 2 + call void @finch_str_drop(ptr %t3) + %t4 = getelementptr inbounds %S.lsp.VarRec, ptr %a, i32 0, i32 5 + call void @finch_str_drop(ptr %t4) + ret void +} + +define internal void @finch.drop.arr_S_lsp_VarRec(ptr %a) { +entry: + %a4 = alloca i64, align 16 + %t1 = load ptr, ptr %a + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 + %t3 = load i64, ptr %t2 + store i64 0, ptr %a4 + br label %n.cond10252 +n.cond10252: + %t5 = load i64, ptr %a4 + %t6 = icmp slt i64 %t5, %t3 + br i1 %t6, label %n.body10253, label %n.end10254 +n.body10253: + %t7 = getelementptr inbounds %S.lsp.VarRec, ptr %t1, i64 %t5 + call void @finch.drop.S_lsp_VarRec(ptr %t7) + %t8 = load i64, ptr %a4 + %t9 = add i64 %t8, 1 + store i64 %t9, ptr %a4 + br label %n.cond10252 +n.end10254: + call void @finch_arr_free(ptr %a) + ret void +} + +define internal void @finch.drop.S_lsp_FnRec(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.lsp.FnRec, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.lsp.FnRec, ptr %a, i32 0, i32 1 + call void @finch_str_drop(ptr %t2) + %t3 = getelementptr inbounds %S.lsp.FnRec, ptr %a, i32 0, i32 2 + call void @finch_str_drop(ptr %t3) + %t4 = getelementptr inbounds %S.lsp.FnRec, ptr %a, i32 0, i32 3 + call void @finch_str_drop(ptr %t4) + %t5 = getelementptr inbounds %S.lsp.FnRec, ptr %a, i32 0, i32 7 + call void @finch_str_drop(ptr %t5) + %t6 = getelementptr inbounds %S.lsp.FnRec, ptr %a, i32 0, i32 8 + call void @finch.drop.arr_str(ptr %t6) + ret void +} + +define internal void @finch.drop.arr_S_lsp_FnRec(ptr %a) { +entry: + %a4 = alloca i64, align 16 + %t1 = load ptr, ptr %a + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 + %t3 = load i64, ptr %t2 + store i64 0, ptr %a4 + br label %n.cond10255 +n.cond10255: + %t5 = load i64, ptr %a4 + %t6 = icmp slt i64 %t5, %t3 + br i1 %t6, label %n.body10256, label %n.end10257 +n.body10256: + %t7 = getelementptr inbounds %S.lsp.FnRec, ptr %t1, i64 %t5 + call void @finch.drop.S_lsp_FnRec(ptr %t7) + %t8 = load i64, ptr %a4 + %t9 = add i64 %t8, 1 + store i64 %t9, ptr %a4 + br label %n.cond10255 +n.end10257: + call void @finch_arr_free(ptr %a) + ret void +} + +define internal void @finch.drop.S_lsp_StructRec(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.lsp.StructRec, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.lsp.StructRec, ptr %a, i32 0, i32 1 + call void @finch_str_drop(ptr %t2) + %t3 = getelementptr inbounds %S.lsp.StructRec, ptr %a, i32 0, i32 2 + call void @finch_str_drop(ptr %t3) + %t4 = getelementptr inbounds %S.lsp.StructRec, ptr %a, i32 0, i32 5 + call void @finch.drop.arr_str(ptr %t4) + %t5 = getelementptr inbounds %S.lsp.StructRec, ptr %a, i32 0, i32 6 + call void @finch.drop.arr_str(ptr %t5) + ret void +} + +define internal void @finch.drop.arr_S_lsp_StructRec(ptr %a) { +entry: + %a4 = alloca i64, align 16 + %t1 = load ptr, ptr %a + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 + %t3 = load i64, ptr %t2 + store i64 0, ptr %a4 + br label %n.cond10258 +n.cond10258: + %t5 = load i64, ptr %a4 + %t6 = icmp slt i64 %t5, %t3 + br i1 %t6, label %n.body10259, label %n.end10260 +n.body10259: + %t7 = getelementptr inbounds %S.lsp.StructRec, ptr %t1, i64 %t5 + call void @finch.drop.S_lsp_StructRec(ptr %t7) + %t8 = load i64, ptr %a4 + %t9 = add i64 %t8, 1 + store i64 %t9, ptr %a4 + br label %n.cond10258 +n.end10260: + call void @finch_arr_free(ptr %a) + ret void +} + +define internal void @finch.drop.S_lsp_EnumRec(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.lsp.EnumRec, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.lsp.EnumRec, ptr %a, i32 0, i32 1 + call void @finch_str_drop(ptr %t2) + %t3 = getelementptr inbounds %S.lsp.EnumRec, ptr %a, i32 0, i32 2 + call void @finch_str_drop(ptr %t3) + %t4 = getelementptr inbounds %S.lsp.EnumRec, ptr %a, i32 0, i32 5 + call void @finch.drop.arr_str(ptr %t4) + ret void +} + +define internal void @finch.drop.arr_S_lsp_EnumRec(ptr %a) { +entry: + %a4 = alloca i64, align 16 + %t1 = load ptr, ptr %a + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 + %t3 = load i64, ptr %t2 + store i64 0, ptr %a4 + br label %n.cond10261 +n.cond10261: + %t5 = load i64, ptr %a4 + %t6 = icmp slt i64 %t5, %t3 + br i1 %t6, label %n.body10262, label %n.end10263 +n.body10262: + %t7 = getelementptr inbounds %S.lsp.EnumRec, ptr %t1, i64 %t5 + call void @finch.drop.S_lsp_EnumRec(ptr %t7) + %t8 = load i64, ptr %a4 + %t9 = add i64 %t8, 1 + store i64 %t9, ptr %a4 + br label %n.cond10261 +n.end10263: + call void @finch_arr_free(ptr %a) + ret void +} + +define internal void @finch.drop.S_lsp_Analysis(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.lsp.Analysis, ptr %a, i32 0, i32 0 + call void @finch.drop.arr_S_lsp_Ref(ptr %t1) + %t2 = getelementptr inbounds %S.lsp.Analysis, ptr %a, i32 0, i32 1 + call void @finch.drop.arr_S_lsp_VarRec(ptr %t2) + %t3 = getelementptr inbounds %S.lsp.Analysis, ptr %a, i32 0, i32 2 + call void @finch.drop.arr_S_lsp_FnRec(ptr %t3) + %t4 = getelementptr inbounds %S.lsp.Analysis, ptr %a, i32 0, i32 3 + call void @finch.drop.arr_S_lsp_StructRec(ptr %t4) + %t5 = getelementptr inbounds %S.lsp.Analysis, ptr %a, i32 0, i32 4 + call void @finch.drop.arr_S_lsp_EnumRec(ptr %t5) + %t6 = getelementptr inbounds %S.lsp.Analysis, ptr %a, i32 0, i32 5 + call void @finch.drop.arr_str(ptr %t6) + %t7 = getelementptr inbounds %S.lsp.Analysis, ptr %a, i32 0, i32 6 + call void @finch.drop.S_lsp_Diag(ptr %t7) + ret void } 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 + %a5 = alloca i64, align 16 + %a7 = alloca { ptr, i64, i64 }, align 16 + %a11 = alloca i64, align 16 + %a14 = alloca i64, align 16 + %a30 = alloca { ptr, i64, i64 }, align 16 + %a31 = alloca i64, align 16 + %a39 = alloca { ptr, i64, i64 }, align 16 + %a42 = alloca { ptr, i64, i64 }, align 16 + %a43 = alloca { ptr, i64, i64 }, align 16 + %a44 = alloca { ptr, i64, i64 }, align 16 + %a47 = 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 + %a52 = 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 + %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 %a64 = 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 %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 + %a74 = alloca { ptr, i64, i64 }, align 16 + %a75 = 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 + %a84 = alloca { ptr, i64, i64 }, align 16 + %a85 = alloca { ptr, i64, i64 }, align 16 + %a86 = alloca { ptr, i64, i64 }, align 16 %a89 = 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 - %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 %a98 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 + %a99 = alloca { ptr, i64, i64 }, align 16 + %a100 = 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 + %a110 = alloca { ptr, i64, i64 }, align 16 + %a111 = alloca { ptr, i64, i64 }, align 16 + %a112 = 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 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 + %a120 = alloca { ptr, i64, i64 }, align 16 + %a121 = alloca { ptr, i64, i64 }, align 16 + %a125 = 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 + %a129 = alloca { ptr, i64, i64 }, align 16 %a132 = alloca { ptr, i64, i64 }, align 16 %a133 = 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 %a137 = 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 - %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 + %a147 = alloca { ptr, i64, i64 }, align 16 + %a148 = alloca { ptr, i64, i64 }, align 16 %a150 = 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 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 + %a156 = 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 + %a159 = alloca { ptr, i64, i64 }, align 16 + %a160 = alloca { ptr, i64, i64 }, align 16 + %a165 = 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 + %a169 = alloca %S.lsp.Analysis, align 16 + %a177 = alloca { ptr, i64, i64 }, align 16 + %a178 = alloca i32, align 16 + %a188 = alloca %S.lsp.Analysis, align 16 + %a189 = alloca %S.lsp.Analysis, align 16 + %a192 = 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 @@ -87477,280 +104837,309 @@ entry: %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 + %a221 = alloca { ptr, i64, i64 }, align 16 + %a225 = alloca { ptr, i64, i64 }, align 16 + %a226 = 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 + %a233 = alloca { ptr, i64, i64 }, align 16 + %a234 = alloca { ptr, i64, i64 }, align 16 + %a237 = alloca { ptr, i64, i64 }, align 16 + %a241 = alloca { ptr, i64, i64 }, align 16 + %a242 = 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 + %a253 = alloca { ptr, i64, i64 }, align 16 + %a254 = alloca { ptr, i64, i64 }, align 16 + %a257 = alloca { ptr, i64, i64 }, align 16 + %a261 = alloca { ptr, i64, i64 }, align 16 + %a262 = alloca i32, align 16 + %a272 = alloca %S.lsp.Analysis, align 16 + %a273 = alloca %S.lsp.Analysis, align 16 + %a276 = 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.6631, 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.6632, 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.6633, 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.cond9725 -n.cond9725: - %t26 = load i64, ptr %a25 - %t27 = icmp slt i64 %t26, %t24 - br i1 %t27, label %n.body9726, label %n.end9727 -n.body9726: - %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.live9728, label %entry.next9729 -entry.live9728: - %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.next9729 -entry.next9729: - %t38 = load i64, ptr %a25 - %t39 = add i64 %t38, 1 - store i64 %t39, ptr %a25 - br label %n.cond9725 -n.end9727: - %t40 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t40, ptr %a41 - store i64 0, ptr %a42 - br label %each.cond9730 -each.cond9730: - %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.body9731, label %each.end9733 -each.body9731: - %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.6634, 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.6635, 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.missing9734, label %map.found9735 -map.missing9734: - 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.6636, i64 333, ptr %a76) + call void @finch.host.makeDirs({ ptr, i64, i64 } %t3) + store { ptr, i64, i64 } { ptr @.str.6849, i64 0, i64 0 }, ptr %a4 + store i64 0, ptr %a5 + %t6 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 + store { ptr, i64, i64 } zeroinitializer, ptr %a7 + %t8 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t6, i32 0, i32 1 + %t9 = load i64, ptr %t8 + call void @finch_arr_make(ptr %a7, i64 %t9, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t10 = load ptr, ptr %a7 + store i64 0, ptr %a11 + %t12 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t6, i32 0, i32 2 + %t13 = load i64, ptr %t12 + store i64 0, ptr %a14 + br label %n.cond10214 +n.cond10214: + %t15 = load i64, ptr %a14 + %t16 = icmp slt i64 %t15, %t13 + br i1 %t16, label %n.body10215, label %n.end10216 +n.body10215: + %t17 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t6, i32 0, i32 0 + %t18 = load ptr, ptr %t17 + %t19 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t18, i64 %t15 + %t20 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t19, i32 0, i32 0 + %t21 = load i64, ptr %t20 + %t22 = icmp ne i64 %t21, 0 + br i1 %t22, label %entry.live10217, label %entry.next10218 +entry.live10217: + %t23 = load i64, ptr %a11 + %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t10, i64 %t23 + %t25 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t19, i32 0, i32 1 + call void @finch_str_copy(ptr %t24, ptr %t25) + %t26 = add i64 %t23, 1 + store i64 %t26, ptr %a11 + br label %entry.next10218 +entry.next10218: + %t27 = load i64, ptr %a14 + %t28 = add i64 %t27, 1 + store i64 %t28, ptr %a14 + br label %n.cond10214 +n.end10216: + %t29 = load { ptr, i64, i64 }, ptr %a7 + store { ptr, i64, i64 } %t29, ptr %a30 + store i64 0, ptr %a31 + br label %each.cond10219 +each.cond10219: + %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %a30, i32 0, i32 1 + %t33 = load i64, ptr %t32 + %t34 = load i64, ptr %a31 + %t35 = icmp slt i64 %t34, %t33 + br i1 %t35, label %each.body10220, label %each.end10222 +each.body10220: + %t36 = load ptr, ptr %a30 + %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %t36, i64 %t34 + %t38 = load { ptr, i64, i64 }, ptr %t37 + store { ptr, i64, i64 } %t38, ptr %a39 + %t40 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 1 + %t41 = load { ptr, i64, i64 }, ptr %t40 + store { ptr, i64, i64 } %t41, ptr %a43 + store { ptr, i64, i64 } { ptr @.str.6850, i64 4, i64 0 }, ptr %a44 + call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) + %t45 = load { ptr, i64, i64 }, ptr %a42 + %t46 = load i64, ptr %a5 + call void @finch_str_from_int(ptr %a47, i64 %t46) + %t48 = load { ptr, i64, i64 }, ptr %a47 + store { ptr, i64, i64 } %t45, ptr %a50 + store { ptr, i64, i64 } %t48, ptr %a51 + call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) + store { ptr, i64, i64 } %t45, ptr %a52 + call void @finch_str_drop(ptr %a52) + store { ptr, i64, i64 } %t48, ptr %a53 + call void @finch_str_drop(ptr %a53) + %t54 = load { ptr, i64, i64 }, ptr %a49 + store { ptr, i64, i64 } %t54, ptr %a56 + store { ptr, i64, i64 } { ptr @.str.6851, i64 4, i64 0 }, ptr %a57 + call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) + store { ptr, i64, i64 } %t54, ptr %a58 + call void @finch_str_drop(ptr %a58) + %t59 = load { ptr, i64, i64 }, ptr %a55 + store { ptr, i64, i64 } %t59, ptr %a60 + %t61 = load { ptr, i64, i64 }, ptr %a60 + %t62 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 + %t63 = load { ptr, i64, i64 }, ptr %a39 + store { ptr, i64, i64 } %t63, ptr %a64 + %t65 = call i64 @finch_map_find(ptr %t62, ptr %a64, 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) + %t66 = icmp slt i64 %t65, 0 + br i1 %t66, label %map.missing10223, label %map.found10224 +map.missing10223: + store { ptr, i64, i64 } zeroinitializer, ptr %a67 + store { ptr, i64, i64 } %t63, ptr %a68 + call void @finch_buf_str(ptr %a67, ptr %a68, i32 1) + call void @finch_map_missing(ptr @.str.6852, i64 333, ptr %a67) unreachable -map.found9735: - %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.6637, 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.6638, i64 1, i64 0 }, ptr %a98 +map.found10224: + %t69 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t62, i32 0, i32 0 + %t70 = load ptr, ptr %t69 + %t71 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t70, i64 %t65 + %t72 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t71, i32 0, i32 2 + %t73 = load { ptr, i64, i64 }, ptr %t72 + store { ptr, i64, i64 } %t61, ptr %a74 + store { ptr, i64, i64 } %t73, ptr %a75 + %t76 = call i32 @finch_write_file(ptr %a74, ptr %a75) + %t77 = icmp ne i32 %t76, 0 + %t78 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t78, ptr %a80 + store { ptr, i64, i64 } { ptr @.str.6853, i64 11, i64 0 }, ptr %a81 + call void @finch_str_concat(ptr %a79, ptr %a80, ptr %a81) + %t82 = load { ptr, i64, i64 }, ptr %a79 + %t83 = load { ptr, i64, i64 }, ptr %a39 + store { ptr, i64, i64 } %t83, ptr %a85 + store { ptr, i64, i64 } { ptr @.str.6854, i64 1, i64 0 }, ptr %a86 + call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) + %t87 = load { ptr, i64, i64 }, ptr %a84 + %t88 = load { ptr, i64, i64 }, ptr %a60 + store { ptr, i64, i64 } %t87, ptr %a90 + store { ptr, i64, i64 } %t88, ptr %a91 + call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) + store { ptr, i64, i64 } %t87, ptr %a92 + call void @finch_str_drop(ptr %a92) + %t93 = load { ptr, i64, i64 }, ptr %a89 + %t94 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t93) + store { ptr, i64, i64 } %t93, ptr %a95 + call void @finch_str_drop(ptr %a95) + store { ptr, i64, i64 } %t82, ptr %a97 + store { ptr, i64, i64 } %t94, 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.6639, 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.step9732 -each.step9732: - %t111 = load i64, ptr %a42 - %t112 = add i64 %t111, 1 - store i64 %t112, ptr %a42 - br label %each.cond9730 -each.end9733: - %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.6640, 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.6641, 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.6642, 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 } %t82, ptr %a99 + call void @finch_str_drop(ptr %a99) + store { ptr, i64, i64 } %t94, ptr %a100 + call void @finch_str_drop(ptr %a100) + %t101 = load { ptr, i64, i64 }, ptr %a96 + %t102 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t101, ptr %a4 + store { ptr, i64, i64 } %t102, ptr %a103 + call void @finch_str_drop(ptr %a103) + %t104 = load i64, ptr %a5 + %t105 = add i64 %t104, 1 + store i64 %t105, ptr %a5 + call void @finch_str_drop(ptr %a60) + br label %each.step10221 +each.step10221: + %t106 = load i64, ptr %a31 + %t107 = add i64 %t106, 1 + store i64 %t107, ptr %a31 + br label %each.cond10219 +each.end10222: + call void @finch.drop.arr_str(ptr %a30) + %t108 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 1 + %t109 = load { ptr, i64, i64 }, ptr %t108 + store { ptr, i64, i64 } %t109, ptr %a111 + store { ptr, i64, i64 } { ptr @.str.6855, i64 8, i64 0 }, 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 %a114 + %t115 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 0 + %t116 = load { ptr, i64, i64 }, ptr %t115 + %t117 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t116) + store { ptr, i64, i64 } %t117, ptr %a119 + store { ptr, i64, i64 } { ptr @.str.6856, i64 7, i64 0 }, ptr %a120 + call void @finch_str_concat(ptr %a118, ptr %a119, ptr %a120) + store { ptr, i64, i64 } %t117, ptr %a121 + call void @finch_str_drop(ptr %a121) + %t122 = load { ptr, i64, i64 }, ptr %a118 + %t123 = load { ptr, i64, i64 }, ptr %a1 + %t124 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t123) + store { ptr, i64, i64 } %t122, ptr %a126 + store { ptr, i64, i64 } %t124, ptr %a127 + call void @finch_str_concat(ptr %a125, ptr %a126, ptr %a127) + store { ptr, i64, i64 } %t122, ptr %a128 + call void @finch_str_drop(ptr %a128) + store { ptr, i64, i64 } %t124, ptr %a129 + call void @finch_str_drop(ptr %a129) + %t130 = load { ptr, i64, i64 }, ptr %a125 + %t131 = load { ptr, i64, i64 }, ptr %a4 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.6643, 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.6644, i64 4, i64 0 }, ptr %a146 + store { ptr, i64, i64 } %t131, ptr %a134 + call void @finch_str_concat(ptr %a132, ptr %a133, ptr %a134) + store { ptr, i64, i64 } %t130, ptr %a135 + call void @finch_str_drop(ptr %a135) + %t136 = load { ptr, i64, i64 }, ptr %a132 + store { ptr, i64, i64 } %t136, ptr %a138 + store { ptr, i64, i64 } { ptr @.str.6857, i64 3, i64 0 }, ptr %a139 + call void @finch_str_concat(ptr %a137, ptr %a138, ptr %a139) + store { ptr, i64, i64 } %t136, ptr %a140 + call void @finch_str_drop(ptr %a140) + %t141 = load { ptr, i64, i64 }, ptr %a137 + %t142 = load { ptr, i64, i64 }, ptr %a114 + %t143 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t142) + store { ptr, i64, i64 } %t141, ptr %a145 + store { ptr, i64, i64 } %t143, 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.6645, 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.failed9736, label %or.ok9737 -or.failed9736: + store { ptr, i64, i64 } %t141, ptr %a147 + call void @finch_str_drop(ptr %a147) + store { ptr, i64, i64 } %t143, ptr %a148 + call void @finch_str_drop(ptr %a148) + %t149 = load { ptr, i64, i64 }, ptr %a144 + store { ptr, i64, i64 } %t149, ptr %a151 + store { ptr, i64, i64 } { ptr @.str.6858, i64 5, i64 0 }, ptr %a152 + call void @finch_str_concat(ptr %a150, ptr %a151, ptr %a152) + store { ptr, i64, i64 } %t149, ptr %a153 + call void @finch_str_drop(ptr %a153) + %t154 = load { ptr, i64, i64 }, ptr %a150 + %t155 = call i64 @finch.host.run({ ptr, i64, i64 } %t154) + store { ptr, i64, i64 } %t154, ptr %a156 + call void @finch_str_drop(ptr %a156) + %t157 = load { ptr, i64, i64 }, ptr %a114 + store { ptr, i64, i64 } %t157, ptr %a158 + store { ptr, i64, i64 } zeroinitializer, ptr %a159 + store { ptr, i64, i64 } zeroinitializer, ptr %a160 + %t161 = call i32 @finch_try_read_file(ptr %a159, ptr %a158, ptr %a160) + %t162 = icmp eq i32 %t161, 0 + %t163 = load { ptr, i64, i64 }, ptr %a160 + %t164 = load { ptr, i64, i64 }, ptr %a159 + br i1 %t162, label %or.failed10225, label %or.ok10226 +or.failed10225: + store { ptr, i64, i64 } %t163, ptr %a165 + call void @finch_str_drop(ptr %a165) + br label %or.bend10227 +or.bend10227: + br label %or.end10228 +or.ok10226: + br label %or.end10228 +or.end10228: + %t166 = phi { ptr, i64, i64 } [ { ptr @.str.6859, i64 0, i64 0 }, %or.bend10227 ], [ %t164, %or.ok10226 ] + %t167 = call %S.lsp.Analysis @finch.lsp.parseOutput({ ptr, i64, i64 } %t166) store { ptr, i64, i64 } %t166, ptr %a168 - br label %or.bend9738 -or.bend9738: - br label %or.end9739 -or.ok9737: - br label %or.end9739 -or.end9739: - %t169 = phi { ptr, i64, i64 } [ { ptr @.str.6646, i64 0, i64 0 }, %or.bend9738 ], [ %t167, %or.ok9737 ] - %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 %then9740, label %else9741 -then9740: - %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.new9743, label %map.have9744 -map.new9743: - %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.have9744 -map.have9744: - %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 %endif9742 -else9741: + call void @finch_str_drop(ptr %a168) + store %S.lsp.Analysis %t167, ptr %a169 + %t170 = getelementptr inbounds %S.lsp.Analysis, ptr %a169, i32 0, i32 6 + %t171 = getelementptr inbounds %S.lsp.Diag, ptr %t170, i32 0, i32 0 + %t172 = load i1, ptr %t171 + %t173 = xor i1 %t172, true + br i1 %t173, label %then10229, label %else10230 +then10229: + %t174 = load %S.lsp.Analysis, ptr %a169 + %t175 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 4 + %t176 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t176, ptr %a177 + store i32 0, ptr %a178 + %t179 = call i64 @finch_map_slot(ptr %t175, ptr %a177, 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 %a178) + %t180 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t175, i32 0, i32 0 + %t181 = load ptr, ptr %t180 + %t182 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t181, i64 %t179 + %t183 = load i32, ptr %a178 + %t184 = icmp ne i32 %t183, 0 + br i1 %t184, label %map.new10232, label %map.have10233 +map.new10232: + %t185 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t182, i32 0, i32 1 + call void @finch_str_copy(ptr %t185, ptr %a177) + %t186 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t182, i32 0, i32 2 + store %S.lsp.Analysis zeroinitializer, ptr %t186 + br label %map.have10233 +map.have10233: + %t187 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t182, i32 0, i32 2 + store %S.lsp.Analysis %t174, ptr %a188 + call void @finch.copy.S_lsp_Analysis(ptr %a189, ptr %a188) + %t190 = load %S.lsp.Analysis, ptr %a189 + %t191 = load %S.lsp.Analysis, ptr %t187 + store %S.lsp.Analysis %t190, ptr %t187 + store %S.lsp.Analysis %t191, ptr %a192 + call void @finch.drop.S_lsp_Analysis(ptr %a192) + br label %endif10231 +else10230: %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 %then9745, label %endif9747 -then9745: + br i1 %t197, label %then10264, label %endif10266 +then10264: %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.missing9748, label %map.found9749 -map.missing9748: + br i1 %t202, label %map.missing10267, label %map.found10268 +map.missing10267: 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.6647, i64 344, ptr %a203) + call void @finch_map_missing(ptr @.str.6860, i64 344, ptr %a203) unreachable -map.found9749: +map.found10268: %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 @@ -87762,78 +105151,100 @@ map.found9749: 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 + %t216 = getelementptr inbounds %S.lsp.Analysis, ptr %a169, 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 + %t220 = load { ptr, i64, i64 }, ptr %t216 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 %then9750, label %endif9752 -then9750: - %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 %endif9752 -endif9752: - br label %endif9747 -endif9747: - br label %endif9742 -endif9742: - %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.new9753, label %map.have9754 -map.new9753: - %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.have9754 -map.have9754: - %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) + store { ptr, i64, i64 } %t220, ptr %a221 + call void @finch.drop.arr_S_lsp_FnRec(ptr %a221) + %t222 = getelementptr inbounds %S.lsp.Analysis, ptr %a213, i32 0, i32 3 + %t223 = load { ptr, i64, i64 }, ptr %t222 + %t224 = getelementptr inbounds %S.lsp.Analysis, ptr %a169, i32 0, i32 3 + store { ptr, i64, i64 } %t223, ptr %a225 + call void @finch.copy.arr_S_lsp_StructRec(ptr %a226, ptr %a225) + %t227 = load { ptr, i64, i64 }, ptr %a226 + %t228 = load { ptr, i64, i64 }, ptr %t224 + store { ptr, i64, i64 } %t227, ptr %t224 + store { ptr, i64, i64 } %t228, ptr %a229 + call void @finch.drop.arr_S_lsp_StructRec(ptr %a229) + %t230 = getelementptr inbounds %S.lsp.Analysis, ptr %a213, i32 0, i32 4 + %t231 = load { ptr, i64, i64 }, ptr %t230 + %t232 = getelementptr inbounds %S.lsp.Analysis, ptr %a169, i32 0, i32 4 + store { ptr, i64, i64 } %t231, ptr %a233 + call void @finch.copy.arr_S_lsp_EnumRec(ptr %a234, ptr %a233) + %t235 = load { ptr, i64, i64 }, ptr %a234 + %t236 = load { ptr, i64, i64 }, ptr %t232 + store { ptr, i64, i64 } %t235, ptr %t232 + store { ptr, i64, i64 } %t236, ptr %a237 + call void @finch.drop.arr_S_lsp_EnumRec(ptr %a237) + %t238 = getelementptr inbounds %S.lsp.Analysis, ptr %a213, i32 0, i32 1 + %t239 = load { ptr, i64, i64 }, ptr %t238 + %t240 = getelementptr inbounds %S.lsp.Analysis, ptr %a169, i32 0, i32 1 + store { ptr, i64, i64 } %t239, ptr %a241 + call void @finch.copy.arr_S_lsp_VarRec(ptr %a242, ptr %a241) + %t243 = load { ptr, i64, i64 }, ptr %a242 + %t244 = load { ptr, i64, i64 }, ptr %t240 + store { ptr, i64, i64 } %t243, ptr %t240 + store { ptr, i64, i64 } %t244, ptr %a245 + call void @finch.drop.arr_S_lsp_VarRec(ptr %a245) + %t246 = getelementptr inbounds %S.lsp.Analysis, ptr %a169, i32 0, i32 5 + %t247 = getelementptr inbounds { ptr, i64, i64 }, ptr %t246, i32 0, i32 1 + %t248 = load i64, ptr %t247 + %t249 = icmp eq i64 %t248, 0 + br i1 %t249, label %then10269, label %endif10271 +then10269: + %t250 = getelementptr inbounds %S.lsp.Analysis, ptr %a213, i32 0, i32 5 + %t251 = load { ptr, i64, i64 }, ptr %t250 + %t252 = getelementptr inbounds %S.lsp.Analysis, ptr %a169, i32 0, i32 5 + store { ptr, i64, i64 } %t251, ptr %a253 + call void @finch.copy.arr_str(ptr %a254, ptr %a253) + %t255 = load { ptr, i64, i64 }, ptr %a254 + %t256 = load { ptr, i64, i64 }, ptr %t252 + store { ptr, i64, i64 } %t255, ptr %t252 + store { ptr, i64, i64 } %t256, ptr %a257 + call void @finch.drop.arr_str(ptr %a257) + br label %endif10271 +endif10271: + call void @finch.drop.S_lsp_Analysis(ptr %a213) + br label %endif10266 +endif10266: + br label %endif10231 +endif10231: + %t258 = load %S.lsp.Analysis, ptr %a169 + %t259 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 3 + %t260 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t260, ptr %a261 + store i32 0, ptr %a262 + %t263 = call i64 @finch_map_slot(ptr %t259, ptr %a261, 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 %a262) + %t264 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t259, i32 0, i32 0 + %t265 = load ptr, ptr %t264 + %t266 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t265, i64 %t263 + %t267 = load i32, ptr %a262 + %t268 = icmp ne i32 %t267, 0 + br i1 %t268, label %map.new10272, label %map.have10273 +map.new10272: + %t269 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t266, i32 0, i32 1 + call void @finch_str_copy(ptr %t269, ptr %a261) + %t270 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t266, i32 0, i32 2 + store %S.lsp.Analysis zeroinitializer, ptr %t270 + br label %map.have10273 +map.have10273: + %t271 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t266, i32 0, i32 2 + store %S.lsp.Analysis %t258, ptr %a272 + call void @finch.copy.S_lsp_Analysis(ptr %a273, ptr %a272) + %t274 = load %S.lsp.Analysis, ptr %a273 + %t275 = load %S.lsp.Analysis, ptr %t271 + store %S.lsp.Analysis %t274, ptr %t271 + store %S.lsp.Analysis %t275, ptr %a276 + call void @finch.drop.S_lsp_Analysis(ptr %a276) + %t277 = load { ptr, i64, i64 }, ptr %a1 + %t278 = load %S.lsp.Analysis, ptr %a169 + call void @finch.lsp.Server.publish(ptr %self, { ptr, i64, i64 } %t277, %S.lsp.Analysis %t278) + call void @finch.drop.S_lsp_Analysis(ptr %a169) + call void @finch_str_drop(ptr %a114) + call void @finch_str_drop(ptr %a4) ret void } @@ -87861,11 +105272,18 @@ entry: %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 + %a98 = alloca %S.json.Json, align 16 + %a100 = alloca %S.json.Json, align 16 + %a102 = alloca %S.json.Json, align 16 + %a107 = alloca %S.json.Json, align 16 + %a111 = alloca { ptr, i64, i64 }, align 16 + %a112 = alloca { ptr, i64, i64 }, align 16 + %a119 = alloca %S.json.Json, align 16 + %a123 = alloca { ptr, i64, i64 }, align 16 + %a124 = alloca %S.json.Json, align 16 + %a131 = alloca { ptr, i64, i64 }, align 16 + %a132 = alloca { ptr, i64, i64 }, align 16 + %a135 = 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 @@ -87882,14 +105300,14 @@ entry: 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.cond9755 -each.cond9755: + br label %each.cond10274 +each.cond10274: %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.body9756, label %each.end9758 -each.body9756: + br i1 %t19, label %each.body10275, label %each.end10277 +each.body10275: %t20 = load ptr, ptr %t14 %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t20, i64 %t18 %t22 = load { ptr, i64, i64 }, ptr %t21 @@ -87900,32 +105318,32 @@ each.body9756: %t27 = load i64, ptr %t24 %t28 = load ptr, ptr %a13 store i64 0, ptr %a29 - br label %find.cond9759 -find.cond9759: + br label %find.cond10278 +find.cond10278: %t30 = load i64, ptr %a29 %t31 = icmp slt i64 %t30, %t27 - br i1 %t31, label %find.body9760, label %find.end9763 -find.body9760: + br i1 %t31, label %find.body10279, label %find.end10282 +find.body10279: %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.hit9761, label %find.next9762 -find.hit9761: + br i1 %t37, label %find.hit10280, label %find.next10281 +find.hit10280: store i64 %t30, ptr %a26 - br label %find.end9763 -find.next9762: + br label %find.end10282 +find.next10281: %t38 = add i64 %t30, 1 store i64 %t38, ptr %a29 - br label %find.cond9759 -find.end9763: + br label %find.cond10278 +find.end10282: %t39 = load i64, ptr %a26 %t40 = icmp sge i64 %t39, 0 %t41 = xor i1 %t40, true - br i1 %t41, label %then9764, label %endif9766 -then9764: + br i1 %t41, label %then10283, label %endif10285 +then10283: %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 @@ -87938,25 +105356,25 @@ then9764: %t50 = getelementptr inbounds { ptr, i64, i64 }, ptr %t49, i64 %t47 store { ptr, i64, i64 } %t46, ptr %t50 store i64 %t48, ptr %t42 - br label %endif9766 -endif9766: - br label %each.step9757 -each.step9757: + br label %endif10285 +endif10285: + br label %each.step10276 +each.step10276: %t51 = load i64, ptr %a15 %t52 = add i64 %t51, 1 store i64 %t52, ptr %a15 - br label %each.cond9755 -each.end9758: + br label %each.cond10274 +each.end10277: store { ptr, i64, i64 } zeroinitializer, ptr %a53 store i64 0, ptr %a54 - br label %each.cond9767 -each.cond9767: + br label %each.cond10286 +each.cond10286: %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.body9768, label %each.end9770 -each.body9768: + br i1 %t58, label %each.body10287, label %each.end10289 +each.body10287: %t59 = load ptr, ptr %a13 %t60 = getelementptr inbounds { ptr, i64, i64 }, ptr %t59, i64 %t57 %t61 = load { ptr, i64, i64 }, ptr %t60 @@ -87966,10 +105384,10 @@ each.body9768: %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.from9771 -logic.from9771: - br i1 %t67, label %logic.rhs9772, label %logic.end9773 -logic.rhs9772: + br label %logic.from10290 +logic.from10290: + br i1 %t67, label %logic.rhs10291, label %logic.end10292 +logic.rhs10291: %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 @@ -87978,13 +105396,13 @@ logic.rhs9772: 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.rend9774 -logic.rend9774: - br label %logic.end9773 -logic.end9773: - %t76 = phi i1 [ false, %logic.from9771 ], [ %t75, %logic.rend9774 ] - br i1 %t76, label %then9775, label %endif9777 -then9775: + br label %logic.rend10293 +logic.rend10293: + br label %logic.end10292 +logic.end10292: + %t76 = phi i1 [ false, %logic.from10290 ], [ %t75, %logic.rend10293 ] + br i1 %t76, label %then10294, label %endif10296 +then10294: %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 @@ -87992,11 +105410,11 @@ then9775: store i64 %t80, ptr %a81 %t82 = load i64, ptr %a81 %t83 = icmp slt i64 %t82, 0 - br i1 %t83, label %then9778, label %endif9780 -then9778: + br i1 %t83, label %then10297, label %endif10299 +then10297: store i64 0, ptr %a81 - br label %endif9780 -endif9780: + br label %endif10299 +endif10299: %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 @@ -88004,11 +105422,11 @@ endif9780: store i64 %t87, ptr %a88 %t89 = load i64, ptr %a88 %t90 = icmp slt i64 %t89, 0 - br i1 %t90, label %then9781, label %endif9783 -then9781: + br i1 %t90, label %then10300, label %endif10302 +then10300: store i64 0, ptr %a88 - br label %endif9783 -endif9783: + br label %endif10302 +endif10302: %t91 = call %S.json.Json @finch.json.new_object() store %S.json.Json %t91, ptr %a92 %t93 = load i64, ptr %a81 @@ -88016,55 +105434,75 @@ endif9783: %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.6648, 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.6649, i64 8, i64 0 }, %S.json.Json %t98) - %t99 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.6651, i64 5, i64 0 }) - call void @finch.json.Json.set(ptr %a92, { ptr, i64, i64 } { ptr @.str.6650, 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.6652, 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 %endif9777 -endif9777: - %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.6653, 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.6654, 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.6655, i64 31, i64 0 }, %S.json.Json %t120) - br label %each.step9769 -each.step9769: - %t121 = load i64, ptr %a54 - %t122 = add i64 %t121, 1 - store i64 %t122, ptr %a54 - br label %each.cond9767 -each.end9770: - %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 + call void @finch.json.Json.set(ptr %a92, { ptr, i64, i64 } { ptr @.str.6861, i64 5, i64 0 }, %S.json.Json %t97) + store %S.json.Json %t97, ptr %a98 + call void @finch.drop.S_json_Json(ptr %a98) + %t99 = call %S.json.Json @finch.lsp.num(i64 1) + call void @finch.json.Json.set(ptr %a92, { ptr, i64, i64 } { ptr @.str.6862, i64 8, i64 0 }, %S.json.Json %t99) + store %S.json.Json %t99, ptr %a100 + call void @finch.drop.S_json_Json(ptr %a100) + %t101 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.6864, i64 5, i64 0 }) + call void @finch.json.Json.set(ptr %a92, { ptr, i64, i64 } { ptr @.str.6863, i64 6, i64 0 }, %S.json.Json %t101) + store %S.json.Json %t101, ptr %a102 + call void @finch.drop.S_json_Json(ptr %a102) + %t103 = getelementptr inbounds %S.lsp.Analysis, ptr %a2, i32 0, i32 6 + %t104 = getelementptr inbounds %S.lsp.Diag, ptr %t103, i32 0, i32 4 + %t105 = load { ptr, i64, i64 }, ptr %t104 + %t106 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t105) + call void @finch.json.Json.set(ptr %a92, { ptr, i64, i64 } { ptr @.str.6865, i64 7, i64 0 }, %S.json.Json %t106) + store %S.json.Json %t106, ptr %a107 + call void @finch.drop.S_json_Json(ptr %a107) + %t108 = load %S.json.Json, ptr %a92 + call void @finch.json.Json.push(ptr %a64, %S.json.Json %t108) + %t109 = getelementptr inbounds { ptr, i64, i64 }, ptr %a53, i32 0, i32 1 + %t110 = load { ptr, i64, i64 }, ptr %a62 + store { ptr, i64, i64 } %t110, ptr %a111 + call void @finch_str_copy(ptr %a112, ptr %a111) + %t113 = load { ptr, i64, i64 }, ptr %a112 + %t114 = load i64, ptr %t109 + %t115 = add i64 %t114, 1 + call void @finch_arr_reserve(ptr %a53, i64 %t115, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t116 = load ptr, ptr %a53 + %t117 = getelementptr inbounds { ptr, i64, i64 }, ptr %t116, i64 %t114 + store { ptr, i64, i64 } %t113, ptr %t117 + store i64 %t115, ptr %t109 + call void @finch.drop.S_json_Json(ptr %a92) + br label %endif10296 +endif10296: + %t118 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t118, ptr %a119 + %t120 = load { ptr, i64, i64 }, ptr %a62 + %t121 = call { ptr, i64, i64 } @finch.lsp.pathToUri({ ptr, i64, i64 } %t120) + %t122 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t121) + store { ptr, i64, i64 } %t121, ptr %a123 + call void @finch_str_drop(ptr %a123) + call void @finch.json.Json.set(ptr %a119, { ptr, i64, i64 } { ptr @.str.6866, i64 3, i64 0 }, %S.json.Json %t122) + store %S.json.Json %t122, ptr %a124 + call void @finch.drop.S_json_Json(ptr %a124) + %t125 = load %S.json.Json, ptr %a64 + call void @finch.json.Json.set(ptr %a119, { ptr, i64, i64 } { ptr @.str.6867, i64 11, i64 0 }, %S.json.Json %t125) + %t126 = load %S.json.Json, ptr %a119 + call void @finch.lsp.notify({ ptr, i64, i64 } { ptr @.str.6868, i64 31, i64 0 }, %S.json.Json %t126) + call void @finch.drop.S_json_Json(ptr %a119) + call void @finch.drop.S_json_Json(ptr %a64) + br label %each.step10288 +each.step10288: + %t127 = load i64, ptr %a54 + %t128 = add i64 %t127, 1 + store i64 %t128, ptr %a54 + br label %each.cond10286 +each.end10289: + %t129 = load { ptr, i64, i64 }, ptr %a53 + %t130 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 5 + store { ptr, i64, i64 } %t129, ptr %a131 + call void @finch.copy.arr_str(ptr %a132, ptr %a131) + %t133 = load { ptr, i64, i64 }, ptr %a132 + %t134 = load { ptr, i64, i64 }, ptr %t130 + store { ptr, i64, i64 } %t133, ptr %t130 + store { ptr, i64, i64 } %t134, ptr %a135 + call void @finch.drop.arr_str(ptr %a135) + call void @finch.drop.arr_str(ptr %a53) + call void @finch.drop.arr_str(ptr %a13) ret void } @@ -88088,22 +105526,22 @@ entry: %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.cond9784 -for.cond9784: + br label %for.cond10303 +for.cond10303: %t9 = load i64, ptr %a8 %t10 = icmp slt i64 %t9, %t7 - br i1 %t10, label %for.body9785, label %for.end9787 -for.body9785: + br i1 %t10, label %for.body10304, label %for.end10306 +for.body10304: %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 %range9788, label %inrange9789 -range9788: - call void @finch_panic_index(ptr @.str.6656, i64 397, i64 %t12, i64 %t14) + br i1 %t15, label %range10307, label %inrange10308 +range10307: + call void @finch_panic_index(ptr @.str.6869, i64 397, i64 %t12, i64 %t14) unreachable -inrange9789: +inrange10308: %t16 = extractvalue { ptr, i64, i64 } %t13, 0 %t17 = getelementptr inbounds %S.lsp.Ref, ptr %t16, i64 %t12 %t18 = load %S.lsp.Ref, ptr %t17 @@ -88115,23 +105553,23 @@ inrange9789: %t24 = load i64, ptr %t23 %t25 = load i64, ptr %a3 %t26 = icmp eq i64 %t24, %t25 - br label %logic.from9790 -logic.from9790: - br i1 %t26, label %logic.rhs9791, label %logic.end9792 -logic.rhs9791: + br label %logic.from10309 +logic.from10309: + br i1 %t26, label %logic.rhs10310, label %logic.end10311 +logic.rhs10310: %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.rend9793 -logic.rend9793: - br label %logic.end9792 -logic.end9792: - %t31 = phi i1 [ false, %logic.from9790 ], [ %t30, %logic.rend9793 ] - br label %logic.from9794 -logic.from9794: - br i1 %t31, label %logic.rhs9795, label %logic.end9796 -logic.rhs9795: + br label %logic.rend10312 +logic.rend10312: + br label %logic.end10311 +logic.end10311: + %t31 = phi i1 [ false, %logic.from10309 ], [ %t30, %logic.rend10312 ] + br label %logic.from10313 +logic.from10313: + br i1 %t31, label %logic.rhs10314, label %logic.end10315 +logic.rhs10314: %t32 = load i64, ptr %a4 %t33 = getelementptr inbounds %S.lsp.Ref, ptr %a22, i32 0, i32 2 %t34 = load i64, ptr %t33 @@ -88139,15 +105577,15 @@ logic.rhs9795: %t36 = load i64, ptr %t35 %t37 = add i64 %t34, %t36 %t38 = icmp sle i64 %t32, %t37 - br label %logic.rend9797 -logic.rend9797: - br label %logic.end9796 -logic.end9796: - %t39 = phi i1 [ false, %logic.from9794 ], [ %t38, %logic.rend9797 ] - br label %logic.from9798 -logic.from9798: - br i1 %t39, label %logic.rhs9799, label %logic.end9800 -logic.rhs9799: + br label %logic.rend10316 +logic.rend10316: + br label %logic.end10315 +logic.end10315: + %t39 = phi i1 [ false, %logic.from10313 ], [ %t38, %logic.rend10316 ] + br label %logic.from10317 +logic.from10317: + br i1 %t39, label %logic.rhs10318, label %logic.end10319 +logic.rhs10318: %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 @@ -88155,23 +105593,25 @@ logic.rhs9799: 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.rend9801 -logic.rend9801: - br label %logic.end9800 -logic.end9800: - %t47 = phi i1 [ false, %logic.from9798 ], [ %t46, %logic.rend9801 ] - br i1 %t47, label %then9802, label %endif9804 -then9802: + br label %logic.rend10320 +logic.rend10320: + br label %logic.end10319 +logic.end10319: + %t47 = phi i1 [ false, %logic.from10317 ], [ %t46, %logic.rend10320 ] + br i1 %t47, label %then10321, label %endif10323 +then10321: %t48 = load i64, ptr %a8 + call void @finch.drop.S_lsp_Ref(ptr %a22) ret i64 %t48 -endif9804: - br label %for.step9786 -for.step9786: +endif10323: + call void @finch.drop.S_lsp_Ref(ptr %a22) + br label %for.step10305 +for.step10305: %t49 = load i64, ptr %a8 %t50 = add i64 %t49, 1 store i64 %t50, ptr %a8 - br label %for.cond9784 -for.end9787: + br label %for.cond10303 +for.end10306: ret i64 -1 } @@ -88183,9 +105623,9 @@ entry: %a4 = alloca i64, align 16 %a10 = alloca i64, align 16 %a15 = alloca %S.json.Json, align 16 + %a17 = 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 + %a30 = 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 @@ -88198,40 +105638,42 @@ entry: store i64 %t9, ptr %a10 %t11 = load i64, ptr %a10 %t12 = icmp slt i64 %t11, 0 - br i1 %t12, label %then9805, label %endif9807 -then9805: + br i1 %t12, label %then10324, label %endif10326 +then10324: %t13 = call %S.json.Json @finch.json.new_null() ret %S.json.Json %t13 -endif9807: +endif10326: %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.6658, i64 8, i64 0 }) - call void @finch.json.Json.set(ptr %a15, { ptr, i64, i64 } { ptr @.str.6657, 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 %range9808, label %inrange9809 -range9808: - call void @finch_panic_index(ptr @.str.6660, i64 412, i64 %t18, i64 %t20) + %t16 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.6871, i64 8, i64 0 }) + call void @finch.json.Json.set(ptr %a15, { ptr, i64, i64 } { ptr @.str.6870, i64 4, i64 0 }, %S.json.Json %t16) + store %S.json.Json %t16, ptr %a17 + call void @finch.drop.S_json_Json(ptr %a17) + %t18 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 0 + %t19 = load i64, ptr %a10 + %t20 = load { ptr, i64, i64 }, ptr %t18 + %t21 = extractvalue { ptr, i64, i64 } %t20, 1 + %t22 = icmp uge i64 %t19, %t21 + br i1 %t22, label %range10327, label %inrange10328 +range10327: + call void @finch_panic_index(ptr @.str.6873, i64 412, i64 %t19, i64 %t21) unreachable -inrange9809: - %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.6659, i64 5, i64 0 }, %S.json.Json %t26) - %t27 = call %S.json.Json @finch.json.new_object() +inrange10328: + %t23 = extractvalue { ptr, i64, i64 } %t20, 0 + %t24 = getelementptr inbounds %S.lsp.Ref, ptr %t23, i64 %t19 + %t25 = getelementptr inbounds %S.lsp.Ref, ptr %t24, i32 0, i32 7 + %t26 = load { ptr, i64, i64 }, ptr %t25 + %t27 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t26) + call void @finch.json.Json.set(ptr %a15, { ptr, i64, i64 } { ptr @.str.6872, i64 5, i64 0 }, %S.json.Json %t27) 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.6661, 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 + call void @finch.drop.S_json_Json(ptr %a28) + %t29 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t29, ptr %a30 + %t31 = load %S.json.Json, ptr %a15 + call void @finch.json.Json.set(ptr %a30, { ptr, i64, i64 } { ptr @.str.6874, i64 8, i64 0 }, %S.json.Json %t31) + %t32 = load %S.json.Json, ptr %a30 + call void @finch.drop.S_json_Json(ptr %a15) + ret %S.json.Json %t32 } define internal %S.json.Json @finch.lsp.definitionAt(%S.lsp.Analysis %p0, { ptr, i64, i64 } %p1, i64 %p2, i64 %p3) { @@ -88245,7 +105687,8 @@ entry: %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 + %a44 = alloca { ptr, i64, i64 }, align 16 + %a45 = 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 @@ -88259,46 +105702,46 @@ entry: store i64 %t9, ptr %a10 %t11 = load i64, ptr %a10 %t12 = icmp slt i64 %t11, 0 - br label %logic.from9810 -logic.from9810: - br i1 %t12, label %logic.end9812, label %logic.rhs9811 -logic.rhs9811: + br label %logic.from10329 +logic.from10329: + br i1 %t12, label %logic.end10331, label %logic.rhs10330 +logic.rhs10330: %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 %range9813, label %inrange9814 -range9813: - call void @finch_panic_index(ptr @.str.6662, i64 420, i64 %t14, i64 %t16) + br i1 %t17, label %range10332, label %inrange10333 +range10332: + call void @finch_panic_index(ptr @.str.6875, i64 420, i64 %t14, i64 %t16) unreachable -inrange9814: +inrange10333: %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.rend9815 -logic.rend9815: - br label %logic.end9812 -logic.end9812: - %t24 = phi i1 [ true, %logic.from9810 ], [ %t23, %logic.rend9815 ] - br i1 %t24, label %then9816, label %endif9818 -then9816: + br label %logic.rend10334 +logic.rend10334: + br label %logic.end10331 +logic.end10331: + %t24 = phi i1 [ true, %logic.from10329 ], [ %t23, %logic.rend10334 ] + br i1 %t24, label %then10335, label %endif10337 +then10335: %t25 = call %S.json.Json @finch.json.new_null() ret %S.json.Json %t25 -endif9818: +endif10337: %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 %range9819, label %inrange9820 -range9819: - call void @finch_panic_index(ptr @.str.6663, i64 423, i64 %t27, i64 %t29) + br i1 %t30, label %range10338, label %inrange10339 +range10338: + call void @finch_panic_index(ptr @.str.6876, i64 423, i64 %t27, i64 %t29) unreachable -inrange9820: +inrange10339: %t31 = extractvalue { ptr, i64, i64 } %t28, 0 %t32 = getelementptr inbounds %S.lsp.Ref, ptr %t31, i64 %t27 %t33 = load %S.lsp.Ref, ptr %t32 @@ -88312,22 +105755,26 @@ inrange9820: %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.6664, 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.6665, 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 + store { ptr, i64, i64 } %t42, ptr %a44 + call void @finch_str_drop(ptr %a44) + call void @finch.json.Json.set(ptr %a39, { ptr, i64, i64 } { ptr @.str.6877, i64 3, i64 0 }, %S.json.Json %t43) + store %S.json.Json %t43, ptr %a45 + call void @finch.drop.S_json_Json(ptr %a45) + %t46 = getelementptr inbounds %S.lsp.Ref, ptr %a37, i32 0, i32 5 + %t47 = load i64, ptr %t46 + %t48 = sub i64 %t47, 1 + %t49 = getelementptr inbounds %S.lsp.Ref, ptr %a37, i32 0, i32 6 + %t50 = load i64, ptr %t49 + %t51 = sub i64 %t50, 1 + %t52 = getelementptr inbounds %S.lsp.Ref, ptr %a37, i32 0, i32 6 + %t53 = load i64, ptr %t52 + %t54 = sub i64 %t53, 1 + %t55 = call %S.json.Json @finch.lsp.range(i64 %t48, i64 %t51, i64 %t54) + call void @finch.json.Json.set(ptr %a39, { ptr, i64, i64 } { ptr @.str.6878, i64 5, i64 0 }, %S.json.Json %t55) + store %S.json.Json %t55, ptr %a56 + call void @finch.drop.S_json_Json(ptr %a56) + %t57 = load %S.json.Json, ptr %a39 + call void @finch.drop.S_lsp_Ref(ptr %a37) ret %S.json.Json %t57 } @@ -88350,30 +105797,33 @@ entry: %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 + %a44 = alloca { ptr, i64, i64 }, align 16 + %a47 = alloca { ptr, i64, i64 }, align 16 + %a57 = alloca %S.json.Json, align 16 + %a61 = alloca i64, align 16 + %a69 = alloca %S.lsp.StructRec, align 16 + %a73 = alloca { ptr, i64, i64 }, align 16 + %a74 = alloca { ptr, i64, i64 }, align 16 + %a91 = alloca %S.json.Json, align 16 + %a95 = alloca i64, align 16 + %a103 = alloca %S.lsp.EnumRec, align 16 + %a107 = alloca { ptr, i64, i64 }, align 16 + %a108 = alloca { ptr, i64, i64 }, align 16 + %a125 = 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.cond9821 -each.cond9821: + br label %each.cond10340 +each.cond10340: %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.body9822, label %each.end9824 -each.body9822: + br i1 %t10, label %each.body10341, label %each.end10343 +each.body10341: %t11 = load ptr, ptr %t5 %t12 = getelementptr inbounds %S.lsp.FnRec, ptr %t11, i64 %t9 %t13 = load %S.lsp.FnRec, ptr %t12 @@ -88385,10 +105835,10 @@ each.body9822: 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 %then9825, label %endif9827 -then9825: - br label %each.step9823 -endif9827: + br i1 %t21, label %then10344, label %endif10346 +then10344: + br label %each.step10342 +endif10346: store i64 12, ptr %a22 %t23 = getelementptr inbounds %S.lsp.FnRec, ptr %a14, i32 0, i32 1 %t24 = load { ptr, i64, i64 }, ptr %t23 @@ -88400,13 +105850,13 @@ endif9827: %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 %then9828, label %endif9830 -then9828: + br i1 %t32, label %then10347, label %endif10349 +then10347: 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.6666, i64 1, i64 0 }, ptr %a37 + store { ptr, i64, i64 } { ptr @.str.6879, 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 @@ -88414,126 +105864,135 @@ then9828: 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 %endif9830 -endif9830: - %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.step9823 -each.step9823: - %t54 = load i64, ptr %a6 - %t55 = add i64 %t54, 1 - store i64 %t55, ptr %a6 - br label %each.cond9821 -each.end9824: - %t56 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 3 - store i64 0, ptr %a57 - br label %each.cond9831 -each.cond9831: - %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.body9832, label %each.end9834 -each.body9832: - %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 %then9835, label %endif9837 -then9835: - %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 + store { ptr, i64, i64 } %t38, ptr %a44 + call void @finch_str_drop(ptr %a44) + %t45 = load { ptr, i64, i64 }, ptr %a41 + %t46 = load { ptr, i64, i64 }, ptr %a28 + store { ptr, i64, i64 } %t45, ptr %a28 + store { ptr, i64, i64 } %t46, ptr %a47 + call void @finch_str_drop(ptr %a47) + br label %endif10349 +endif10349: + %t48 = load { ptr, i64, i64 }, ptr %a28 + %t49 = load i64, ptr %a22 + %t50 = getelementptr inbounds %S.lsp.FnRec, ptr %a14, i32 0, i32 4 + %t51 = load i64, ptr %t50 + %t52 = getelementptr inbounds %S.lsp.FnRec, ptr %a14, i32 0, i32 5 + %t53 = load i64, ptr %t52 + %t54 = getelementptr inbounds %S.lsp.FnRec, ptr %a14, i32 0, i32 6 + %t55 = load i64, ptr %t54 + %t56 = call %S.json.Json @finch.lsp.symbol({ ptr, i64, i64 } %t48, i64 %t49, i64 %t51, i64 %t53, i64 %t55) + call void @finch.json.Json.push(ptr %a4, %S.json.Json %t56) + store %S.json.Json %t56, ptr %a57 + call void @finch.drop.S_json_Json(ptr %a57) + call void @finch_str_drop(ptr %a28) + br label %each.step10342 +each.step10342: + %t58 = load i64, ptr %a6 + %t59 = add i64 %t58, 1 + store i64 %t59, ptr %a6 + br label %each.cond10340 +each.end10343: + %t60 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 3 + store i64 0, ptr %a61 + br label %each.cond10350 +each.cond10350: + %t62 = getelementptr inbounds { ptr, i64, i64 }, ptr %t60, i32 0, i32 1 + %t63 = load i64, ptr %t62 + %t64 = load i64, ptr %a61 + %t65 = icmp slt i64 %t64, %t63 + br i1 %t65, label %each.body10351, label %each.end10353 +each.body10351: + %t66 = load ptr, ptr %t60 + %t67 = getelementptr inbounds %S.lsp.StructRec, ptr %t66, i64 %t64 + %t68 = load %S.lsp.StructRec, ptr %t67 + store %S.lsp.StructRec %t68, ptr %a69 + %t70 = getelementptr inbounds %S.lsp.StructRec, ptr %a69, i32 0, i32 2 + %t71 = load { ptr, i64, i64 }, ptr %t70 + %t72 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t71, ptr %a73 + store { ptr, i64, i64 } %t72, ptr %a74 + %t75 = call i32 @finch_str_eq(ptr %a73, ptr %a74) + %t76 = icmp ne i32 %t75, 0 + br i1 %t76, label %then10354, label %endif10356 +then10354: + %t77 = getelementptr inbounds %S.lsp.StructRec, ptr %a69, i32 0, i32 1 + %t78 = load { ptr, i64, i64 }, ptr %t77 + %t79 = getelementptr inbounds %S.lsp.StructRec, ptr %a69, 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 %endif9837 -endif9837: - br label %each.step9833 -each.step9833: - %t87 = load i64, ptr %a57 - %t88 = add i64 %t87, 1 - store i64 %t88, ptr %a57 - br label %each.cond9831 -each.end9834: - %t89 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 4 - store i64 0, ptr %a90 - br label %each.cond9838 -each.cond9838: - %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.body9839, label %each.end9841 -each.body9839: - %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 %then9842, label %endif9844 -then9842: - %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 + %t81 = getelementptr inbounds %S.lsp.StructRec, ptr %a69, i32 0, i32 4 + %t82 = load i64, ptr %t81 + %t83 = getelementptr inbounds %S.lsp.StructRec, ptr %a69, i32 0, i32 3 + %t84 = load i64, ptr %t83 + %t85 = getelementptr inbounds %S.lsp.StructRec, ptr %a69, i32 0, i32 5 + %t86 = getelementptr inbounds { ptr, i64, i64 }, ptr %t85, i32 0, i32 1 + %t87 = load i64, ptr %t86 + %t88 = add i64 %t84, %t87 + %t89 = add i64 %t88, 1 + %t90 = call %S.json.Json @finch.lsp.symbol({ ptr, i64, i64 } %t78, i64 23, i64 %t80, i64 %t82, i64 %t89) + call void @finch.json.Json.push(ptr %a4, %S.json.Json %t90) + store %S.json.Json %t90, ptr %a91 + call void @finch.drop.S_json_Json(ptr %a91) + br label %endif10356 +endif10356: + br label %each.step10352 +each.step10352: + %t92 = load i64, ptr %a61 + %t93 = add i64 %t92, 1 + store i64 %t93, ptr %a61 + br label %each.cond10350 +each.end10353: + %t94 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 4 + store i64 0, ptr %a95 + br label %each.cond10357 +each.cond10357: + %t96 = getelementptr inbounds { ptr, i64, i64 }, ptr %t94, i32 0, i32 1 + %t97 = load i64, ptr %t96 + %t98 = load i64, ptr %a95 + %t99 = icmp slt i64 %t98, %t97 + br i1 %t99, label %each.body10358, label %each.end10360 +each.body10358: + %t100 = load ptr, ptr %t94 + %t101 = getelementptr inbounds %S.lsp.EnumRec, ptr %t100, i64 %t98 + %t102 = load %S.lsp.EnumRec, ptr %t101 + store %S.lsp.EnumRec %t102, ptr %a103 + %t104 = getelementptr inbounds %S.lsp.EnumRec, ptr %a103, i32 0, i32 2 + %t105 = load { ptr, i64, i64 }, ptr %t104 + %t106 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t105, ptr %a107 + store { ptr, i64, i64 } %t106, ptr %a108 + %t109 = call i32 @finch_str_eq(ptr %a107, ptr %a108) + %t110 = icmp ne i32 %t109, 0 + br i1 %t110, label %then10361, label %endif10363 +then10361: + %t111 = getelementptr inbounds %S.lsp.EnumRec, ptr %a103, i32 0, i32 1 + %t112 = load { ptr, i64, i64 }, ptr %t111 + %t113 = getelementptr inbounds %S.lsp.EnumRec, ptr %a103, i32 0, i32 3 + %t114 = load i64, ptr %t113 + %t115 = getelementptr inbounds %S.lsp.EnumRec, ptr %a103, i32 0, i32 4 %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 %endif9844 -endif9844: - br label %each.step9840 -each.step9840: - %t120 = load i64, ptr %a90 - %t121 = add i64 %t120, 1 - store i64 %t121, ptr %a90 - br label %each.cond9838 -each.end9841: - %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 + %t117 = getelementptr inbounds %S.lsp.EnumRec, ptr %a103, i32 0, i32 3 + %t118 = load i64, ptr %t117 + %t119 = getelementptr inbounds %S.lsp.EnumRec, ptr %a103, i32 0, i32 5 + %t120 = getelementptr inbounds { ptr, i64, i64 }, ptr %t119, i32 0, i32 1 + %t121 = load i64, ptr %t120 + %t122 = add i64 %t118, %t121 + %t123 = add i64 %t122, 1 + %t124 = call %S.json.Json @finch.lsp.symbol({ ptr, i64, i64 } %t112, i64 10, i64 %t114, i64 %t116, i64 %t123) + call void @finch.json.Json.push(ptr %a4, %S.json.Json %t124) + store %S.json.Json %t124, ptr %a125 + call void @finch.drop.S_json_Json(ptr %a125) + br label %endif10363 +endif10363: + br label %each.step10359 +each.step10359: + %t126 = load i64, ptr %a95 + %t127 = add i64 %t126, 1 + store i64 %t127, ptr %a95 + br label %each.cond10357 +each.end10360: + %t128 = load %S.json.Json, ptr %a4 + ret %S.json.Json %t128 } define internal %S.json.Json @finch.lsp.symbol({ ptr, i64, i64 } %p0, i64 %p1, i64 %p2, i64 %p3, i64 %p4) { @@ -88544,9 +106003,12 @@ entry: %a4 = alloca i64, align 16 %a5 = alloca i64, align 16 %a7 = alloca %S.json.Json, align 16 + %a10 = 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 + %a15 = alloca %S.json.Json, align 16 + %a19 = alloca %S.json.Json, align 16 + %a22 = alloca %S.json.Json, align 16 + %a31 = alloca %S.json.Json, align 16 store { ptr, i64, i64 } %p0, ptr %a1 store i64 %p1, ptr %a2 store i64 %p2, ptr %a3 @@ -88556,34 +106018,42 @@ entry: 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.6667, 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.6668, i64 4, i64 0 }, %S.json.Json %t11) - %t12 = call %S.json.Json @finch.json.new_object() + call void @finch.json.Json.set(ptr %a7, { ptr, i64, i64 } { ptr @.str.6880, i64 4, i64 0 }, %S.json.Json %t9) + store %S.json.Json %t9, ptr %a10 + call void @finch.drop.S_json_Json(ptr %a10) + %t11 = load i64, ptr %a2 + %t12 = call %S.json.Json @finch.lsp.num(i64 %t11) + call void @finch.json.Json.set(ptr %a7, { ptr, i64, i64 } { ptr @.str.6881, i64 4, i64 0 }, %S.json.Json %t12) 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.6669, i64 5, i64 0 }, %S.json.Json %t16) - %t17 = load i64, ptr %a5 + call void @finch.drop.S_json_Json(ptr %a13) + %t14 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t14, ptr %a15 + %t16 = load i64, ptr %a3 + %t17 = sub i64 %t16, 1 %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.6670, 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.6671, 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 + call void @finch.json.Json.set(ptr %a15, { ptr, i64, i64 } { ptr @.str.6882, i64 5, i64 0 }, %S.json.Json %t18) + store %S.json.Json %t18, ptr %a19 + call void @finch.drop.S_json_Json(ptr %a19) + %t20 = load i64, ptr %a5 + %t21 = call %S.json.Json @finch.lsp.position(i64 %t20, i64 0) + call void @finch.json.Json.set(ptr %a15, { ptr, i64, i64 } { ptr @.str.6883, i64 3, i64 0 }, %S.json.Json %t21) + store %S.json.Json %t21, ptr %a22 + call void @finch.drop.S_json_Json(ptr %a22) + %t23 = load %S.json.Json, ptr %a15 + call void @finch.json.Json.set(ptr %a7, { ptr, i64, i64 } { ptr @.str.6884, i64 5, i64 0 }, %S.json.Json %t23) + %t24 = load i64, ptr %a3 %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.6672, 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 + %t26 = load i64, ptr %a4 + %t27 = sub i64 %t26, 1 + %t28 = load i64, ptr %a4 + %t29 = sub i64 %t28, 1 + %t30 = call %S.json.Json @finch.lsp.range(i64 %t25, i64 %t27, i64 %t29) + call void @finch.json.Json.set(ptr %a7, { ptr, i64, i64 } { ptr @.str.6885, i64 14, i64 0 }, %S.json.Json %t30) + store %S.json.Json %t30, ptr %a31 + call void @finch.drop.S_json_Json(ptr %a31) + %t32 = load %S.json.Json, ptr %a7 + call void @finch.drop.S_json_Json(ptr %a15) + ret %S.json.Json %t32 } define internal %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %p0, i64 %p1, { ptr, i64, i64 } %p2, { ptr, i64, i64 } %p3) { @@ -88593,9 +106063,12 @@ entry: %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 + %a9 = alloca %S.json.Json, align 16 + %a12 = alloca %S.json.Json, align 16 + %a18 = alloca %S.json.Json, align 16 + %a23 = alloca %S.json.Json, align 16 + %a25 = alloca %S.json.Json, align 16 + %a28 = 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 @@ -88604,41 +106077,49 @@ entry: 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.6673, 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.6674, 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 %then9845, label %endif9847 -then9845: - %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.6675, i64 6, i64 0 }, %S.json.Json %t15) - br label %endif9847 -endif9847: - %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 %then9848, label %endif9850 -then9848: - %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.6677, i64 8, i64 0 }) - call void @finch.json.Json.set(ptr %a20, { ptr, i64, i64 } { ptr @.str.6676, 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.6678, 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.6679, i64 13, i64 0 }, %S.json.Json %t24) - br label %endif9850 -endif9850: - %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 + call void @finch.json.Json.set(ptr %a6, { ptr, i64, i64 } { ptr @.str.6886, i64 5, i64 0 }, %S.json.Json %t8) + store %S.json.Json %t8, ptr %a9 + call void @finch.drop.S_json_Json(ptr %a9) + %t10 = load i64, ptr %a2 + %t11 = call %S.json.Json @finch.lsp.num(i64 %t10) + call void @finch.json.Json.set(ptr %a6, { ptr, i64, i64 } { ptr @.str.6887, i64 4, i64 0 }, %S.json.Json %t11) + store %S.json.Json %t11, ptr %a12 + call void @finch.drop.S_json_Json(ptr %a12) + %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 + %t14 = load i64, ptr %t13 + %t15 = icmp sgt i64 %t14, 0 + br i1 %t15, label %then10364, label %endif10366 +then10364: + %t16 = load { ptr, i64, i64 }, ptr %a3 + %t17 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t16) + call void @finch.json.Json.set(ptr %a6, { ptr, i64, i64 } { ptr @.str.6888, i64 6, i64 0 }, %S.json.Json %t17) + store %S.json.Json %t17, ptr %a18 + call void @finch.drop.S_json_Json(ptr %a18) + br label %endif10366 +endif10366: + %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 + %t20 = load i64, ptr %t19 + %t21 = icmp sgt i64 %t20, 0 + br i1 %t21, label %then10367, label %endif10369 +then10367: + %t22 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t22, ptr %a23 + %t24 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.6890, i64 8, i64 0 }) + call void @finch.json.Json.set(ptr %a23, { ptr, i64, i64 } { ptr @.str.6889, i64 4, i64 0 }, %S.json.Json %t24) + store %S.json.Json %t24, ptr %a25 + call void @finch.drop.S_json_Json(ptr %a25) + %t26 = load { ptr, i64, i64 }, ptr %a4 + %t27 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t26) + call void @finch.json.Json.set(ptr %a23, { ptr, i64, i64 } { ptr @.str.6891, i64 5, i64 0 }, %S.json.Json %t27) + store %S.json.Json %t27, ptr %a28 + call void @finch.drop.S_json_Json(ptr %a28) + %t29 = load %S.json.Json, ptr %a23 + call void @finch.json.Json.set(ptr %a6, { ptr, i64, i64 } { ptr @.str.6892, i64 13, i64 0 }, %S.json.Json %t29) + call void @finch.drop.S_json_Json(ptr %a23) + br label %endif10369 +endif10369: + %t30 = load %S.json.Json, ptr %a6 + ret %S.json.Json %t30 } define internal i1 @finch.lsp.isWordChar(i8 %p0) { @@ -88647,72 +106128,72 @@ entry: store i8 %p0, ptr %a1 %t2 = load i8, ptr %a1 %t3 = icmp uge i8 %t2, 97 - br label %logic.from9851 -logic.from9851: - br i1 %t3, label %logic.rhs9852, label %logic.end9853 -logic.rhs9852: + br label %logic.from10370 +logic.from10370: + br i1 %t3, label %logic.rhs10371, label %logic.end10372 +logic.rhs10371: %t4 = load i8, ptr %a1 %t5 = icmp ule i8 %t4, 122 - br label %logic.rend9854 -logic.rend9854: - br label %logic.end9853 -logic.end9853: - %t6 = phi i1 [ false, %logic.from9851 ], [ %t5, %logic.rend9854 ] - br label %logic.from9855 -logic.from9855: - br i1 %t6, label %logic.end9857, label %logic.rhs9856 -logic.rhs9856: + br label %logic.rend10373 +logic.rend10373: + br label %logic.end10372 +logic.end10372: + %t6 = phi i1 [ false, %logic.from10370 ], [ %t5, %logic.rend10373 ] + br label %logic.from10374 +logic.from10374: + br i1 %t6, label %logic.end10376, label %logic.rhs10375 +logic.rhs10375: %t7 = load i8, ptr %a1 %t8 = icmp uge i8 %t7, 65 - br label %logic.from9858 -logic.from9858: - br i1 %t8, label %logic.rhs9859, label %logic.end9860 -logic.rhs9859: + br label %logic.from10377 +logic.from10377: + br i1 %t8, label %logic.rhs10378, label %logic.end10379 +logic.rhs10378: %t9 = load i8, ptr %a1 %t10 = icmp ule i8 %t9, 90 - br label %logic.rend9861 -logic.rend9861: - br label %logic.end9860 -logic.end9860: - %t11 = phi i1 [ false, %logic.from9858 ], [ %t10, %logic.rend9861 ] - br label %logic.rend9862 -logic.rend9862: - br label %logic.end9857 -logic.end9857: - %t12 = phi i1 [ true, %logic.from9855 ], [ %t11, %logic.rend9862 ] - br label %logic.from9863 -logic.from9863: - br i1 %t12, label %logic.end9865, label %logic.rhs9864 -logic.rhs9864: + br label %logic.rend10380 +logic.rend10380: + br label %logic.end10379 +logic.end10379: + %t11 = phi i1 [ false, %logic.from10377 ], [ %t10, %logic.rend10380 ] + br label %logic.rend10381 +logic.rend10381: + br label %logic.end10376 +logic.end10376: + %t12 = phi i1 [ true, %logic.from10374 ], [ %t11, %logic.rend10381 ] + br label %logic.from10382 +logic.from10382: + br i1 %t12, label %logic.end10384, label %logic.rhs10383 +logic.rhs10383: %t13 = load i8, ptr %a1 %t14 = icmp uge i8 %t13, 48 - br label %logic.from9866 -logic.from9866: - br i1 %t14, label %logic.rhs9867, label %logic.end9868 -logic.rhs9867: + br label %logic.from10385 +logic.from10385: + br i1 %t14, label %logic.rhs10386, label %logic.end10387 +logic.rhs10386: %t15 = load i8, ptr %a1 %t16 = icmp ule i8 %t15, 57 - br label %logic.rend9869 -logic.rend9869: - br label %logic.end9868 -logic.end9868: - %t17 = phi i1 [ false, %logic.from9866 ], [ %t16, %logic.rend9869 ] - br label %logic.rend9870 -logic.rend9870: - br label %logic.end9865 -logic.end9865: - %t18 = phi i1 [ true, %logic.from9863 ], [ %t17, %logic.rend9870 ] - br label %logic.from9871 -logic.from9871: - br i1 %t18, label %logic.end9873, label %logic.rhs9872 -logic.rhs9872: + br label %logic.rend10388 +logic.rend10388: + br label %logic.end10387 +logic.end10387: + %t17 = phi i1 [ false, %logic.from10385 ], [ %t16, %logic.rend10388 ] + br label %logic.rend10389 +logic.rend10389: + br label %logic.end10384 +logic.end10384: + %t18 = phi i1 [ true, %logic.from10382 ], [ %t17, %logic.rend10389 ] + br label %logic.from10390 +logic.from10390: + br i1 %t18, label %logic.end10392, label %logic.rhs10391 +logic.rhs10391: %t19 = load i8, ptr %a1 %t20 = icmp eq i8 %t19, 95 - br label %logic.rend9874 -logic.rend9874: - br label %logic.end9873 -logic.end9873: - %t21 = phi i1 [ true, %logic.from9871 ], [ %t20, %logic.rend9874 ] + br label %logic.rend10393 +logic.rend10393: + br label %logic.end10392 +logic.end10392: + %t21 = phi i1 [ true, %logic.from10390 ], [ %t20, %logic.rend10393 ] ret i1 %t21 } @@ -88726,17 +106207,18 @@ entry: %a15 = alloca { ptr, i64, i64 }, align 16 %a16 = alloca { ptr, i64, i64 }, align 16 %a17 = alloca { ptr, i64, i64 }, align 16 + %a30 = alloca %S.json.Json, align 16 store ptr %p0, ptr %a1 store { ptr, i64, i64 } %p1, ptr %a2 store i64 0, ptr %a3 - br label %each.cond9875 -each.cond9875: + br label %each.cond10394 +each.cond10394: %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.body9876, label %each.end9878 -each.body9876: + br i1 %t7, label %each.body10395, label %each.end10397 +each.body10395: %t8 = load ptr, ptr %a2 %t9 = getelementptr inbounds %S.docs.Doc, ptr %t8, i64 %t6 %t10 = load %S.docs.Doc, ptr %t9 @@ -88745,21 +106227,21 @@ each.body9876: %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.6681, i64 1, i64 0 }, ptr %a17 + store { ptr, i64, i64 } { ptr @.str.6894, 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 %then9879, label %endif9881 -then9879: + br i1 %t19, label %then10398, label %endif10400 +then10398: store i64 5, ptr %a12 - br label %endif9881 -endif9881: + br label %endif10400 +endif10400: %t20 = load ptr, ptr %a1 %t21 = icmp eq ptr %t20, null - br i1 %t21, label %panic9882, label %ok9883 -panic9882: - call void @finch_panic(ptr @.str.6682, i64 497, ptr @.str.6683) + br i1 %t21, label %panic10401, label %ok10402 +panic10401: + call void @finch_panic(ptr @.str.6895, i64 497, ptr @.str.6896) unreachable -ok9883: +ok10402: %t22 = getelementptr inbounds %S.docs.Doc, ptr %a11, i32 0, i32 0 %t23 = load { ptr, i64, i64 }, ptr %t22 %t24 = load i64, ptr %a12 @@ -88769,13 +106251,15 @@ ok9883: %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.step9877 -each.step9877: - %t30 = load i64, ptr %a3 - %t31 = add i64 %t30, 1 - store i64 %t31, ptr %a3 - br label %each.cond9875 -each.end9878: + store %S.json.Json %t29, ptr %a30 + call void @finch.drop.S_json_Json(ptr %a30) + br label %each.step10396 +each.step10396: + %t31 = load i64, ptr %a3 + %t32 = add i64 %t31, 1 + store i64 %t32, ptr %a3 + br label %each.cond10394 +each.end10397: ret void } @@ -88794,8 +106278,7 @@ entry: %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 + %a47 = 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 @@ -88803,14 +106286,14 @@ entry: 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.cond9884 -each.cond9884: + br label %each.cond10403 +each.cond10403: %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.body9885, label %each.end9887 -each.body9885: + br i1 %t11, label %each.body10404, label %each.end10406 +each.body10404: %t12 = load ptr, ptr %t6 %t13 = getelementptr inbounds %S.lsp.VarRec, ptr %t12, i64 %t10 %t14 = load %S.lsp.VarRec, ptr %t13 @@ -88822,37 +106305,37 @@ each.body9885: 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.from9888 -logic.from9888: - br i1 %t22, label %logic.rhs9889, label %logic.end9890 -logic.rhs9889: + br label %logic.from10407 +logic.from10407: + br i1 %t22, label %logic.rhs10408, label %logic.end10409 +logic.rhs10408: %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.rend9891 -logic.rend9891: - br label %logic.end9890 -logic.end9890: - %t27 = phi i1 [ false, %logic.from9888 ], [ %t26, %logic.rend9891 ] - br label %logic.from9892 -logic.from9892: - br i1 %t27, label %logic.rhs9893, label %logic.end9894 -logic.rhs9893: + br label %logic.rend10410 +logic.rend10410: + br label %logic.end10409 +logic.end10409: + %t27 = phi i1 [ false, %logic.from10407 ], [ %t26, %logic.rend10410 ] + br label %logic.from10411 +logic.from10411: + br i1 %t27, label %logic.rhs10412, label %logic.end10413 +logic.rhs10412: %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.rend9895 -logic.rend9895: - br label %logic.end9894 -logic.end9894: - %t33 = phi i1 [ false, %logic.from9892 ], [ %t32, %logic.rend9895 ] - br label %logic.from9896 -logic.from9896: - br i1 %t33, label %logic.rhs9897, label %logic.end9898 -logic.rhs9897: + br label %logic.rend10414 +logic.rend10414: + br label %logic.end10413 +logic.end10413: + %t33 = phi i1 [ false, %logic.from10411 ], [ %t32, %logic.rend10414 ] + br label %logic.from10415 +logic.from10415: + br i1 %t33, label %logic.rhs10416, label %logic.end10417 +logic.rhs10416: %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 @@ -88860,32 +106343,40 @@ logic.rhs9897: 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.rend9899 -logic.rend9899: - br label %logic.end9898 -logic.end9898: - %t41 = phi i1 [ false, %logic.from9896 ], [ %t40, %logic.rend9899 ] - br i1 %t41, label %then9900, label %endif9902 -then9900: + br label %logic.rend10418 +logic.rend10418: + br label %logic.end10417 +logic.end10417: + %t41 = phi i1 [ false, %logic.from10415 ], [ %t40, %logic.rend10418 ] + br i1 %t41, label %then10419, label %endif10421 +then10419: %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 + %t46 = load %S.lsp.VarRec, ptr %a5 store %S.lsp.VarRec %t45, ptr %a5 - br label %endif9902 -endif9902: - br label %each.step9886 -each.step9886: - %t46 = load i64, ptr %a7 - %t47 = add i64 %t46, 1 - store i64 %t47, ptr %a7 - br label %each.cond9884 -each.end9887: - %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 + store %S.lsp.VarRec %t46, ptr %a47 + call void @finch.drop.S_lsp_VarRec(ptr %a47) + br label %endif10421 +endif10421: + br label %each.step10405 +each.step10405: + %t48 = load i64, ptr %a7 + %t49 = add i64 %t48, 1 + store i64 %t49, ptr %a7 + br label %each.cond10403 +each.end10406: + %t50 = load %S.lsp.VarRec, ptr %a5 + ret %S.lsp.VarRec %t50 +} + +define internal void @finch.drop.S_lsp_Names(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.lsp.Names, ptr %a, i32 0, i32 0 + call void @finch.drop.arr_str(ptr %t1) + ret void } define internal %S.json.Json @finch.lsp.completionAt(%S.lsp.Analysis %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, i64 %p3, i64 %p4) { @@ -88914,114 +106405,144 @@ entry: %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 + %a118 = alloca { ptr, i64, i64 }, align 16 + %a122 = alloca i64, align 16 + %a125 = alloca i64, align 16 + %a130 = alloca { ptr, i64, i64 }, align 16 + %a131 = alloca { ptr, i64, i64 }, align 16 + %a138 = alloca i64, align 16 + %a146 = alloca %S.lsp.FnRec, align 16 + %a150 = alloca { ptr, i64, i64 }, align 16 + %a151 = alloca { ptr, i64, i64 }, align 16 + %a164 = alloca %S.json.Json, align 16 + %a168 = alloca i64, align 16 + %a176 = alloca %S.lsp.StructRec, align 16 + %a180 = alloca { ptr, i64, i64 }, align 16 + %a181 = 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 %S.json.Json, align 16 + %a198 = alloca i64, align 16 + %a206 = alloca %S.lsp.EnumRec, align 16 + %a210 = alloca { ptr, i64, i64 }, align 16 + %a211 = alloca { ptr, i64, i64 }, align 16 + %a218 = alloca { ptr, i64, i64 }, align 16 + %a219 = alloca { ptr, i64, i64 }, align 16 + %a220 = alloca { ptr, i64, i64 }, align 16 + %a223 = alloca { ptr, i64, i64 }, align 16 + %a224 = alloca %S.json.Json, align 16 + %a230 = alloca i64, align 16 + %a238 = alloca %S.lsp.EnumRec, align 16 + %a242 = alloca { ptr, i64, i64 }, align 16 + %a243 = alloca { ptr, i64, i64 }, align 16 + %a252 = alloca { ptr, i64, i64 }, align 16 + %a253 = alloca { ptr, i64, i64 }, align 16 + %a255 = alloca %S.lsp.VarRec, align 16 + %a257 = alloca { ptr, i64, i64 }, align 16 + %a261 = alloca 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 + %a273 = alloca { ptr, i64, i64 }, align 16 + %a274 = alloca { ptr, i64, i64 }, align 16 + %a275 = 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 + %a281 = alloca { ptr, i64, i64 }, align 16 + %a284 = alloca { ptr, i64, i64 }, align 16 + %a285 = alloca %S.json.Json, 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 %S.lsp.VarRec, align 16 + %a302 = 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 %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 + %a321 = alloca { ptr, i64, i64 }, align 16 + %a322 = 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 + %a335 = alloca { ptr, i64, i64 }, align 16 + %a336 = alloca { ptr, i64, i64 }, align 16 + %a337 = alloca { ptr, i64, i64 }, align 16 + %a342 = alloca { ptr, i64, i64 }, align 16 + %a343 = alloca { ptr, i64, i64 }, align 16 + %a349 = 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 - %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 + %a357 = alloca { ptr, i64, i64 }, align 16 + %a359 = alloca { ptr, i64, i64 }, align 16 + %a360 = 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 + %a372 = alloca { ptr, i64, i64 }, align 16 + %a374 = alloca { ptr, i64, i64 }, align 16 + %a375 = alloca { ptr, i64, i64 }, align 16 + %a377 = alloca { ptr, i64, i64 }, align 16 + %a379 = alloca i64, align 16 + %a387 = alloca %S.lsp.StructRec, align 16 + %a391 = alloca { ptr, i64, i64 }, align 16 + %a392 = alloca { ptr, i64, i64 }, align 16 + %a398 = alloca i64, align 16 + %a418 = alloca %S.json.Json, align 16 + %a424 = alloca i64, align 16 + %a432 = alloca %S.lsp.FnRec, align 16 + %a436 = alloca { ptr, i64, i64 }, align 16 + %a437 = alloca { ptr, i64, i64 }, align 16 + %a445 = alloca %S.json.Json, align 16 + %a450 = alloca %S.lsp.Names, align 16 + %a452 = alloca i64, align 16 + %a460 = alloca %S.lsp.VarRec, align 16 + %a474 = alloca { ptr, i64, i64 }, align 16 + %a475 = alloca { ptr, i64, i64 }, align 16 + %a488 = alloca %S.json.Json, align 16 + %a492 = alloca i64, align 16 + %a500 = alloca %S.lsp.FnRec, align 16 + %a507 = alloca { ptr, i64, i64 }, align 16 + %a508 = alloca { ptr, i64, i64 }, align 16 + %a521 = alloca %S.json.Json, align 16 + %a525 = alloca i64, align 16 + %a533 = alloca %S.lsp.StructRec, align 16 + %a536 = alloca { ptr, i64, i64 }, align 16 + %a537 = alloca { ptr, i64, i64 }, align 16 + %a548 = alloca { ptr, i64, i64 }, align 16 + %a549 = 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 - %a561 = alloca i64, align 16 + %a554 = alloca %S.json.Json, align 16 + %a558 = alloca i64, align 16 + %a566 = alloca %S.lsp.EnumRec, 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 + %a570 = alloca { ptr, i64, i64 }, align 16 + %a581 = alloca { ptr, i64, i64 }, align 16 + %a582 = alloca { ptr, i64, i64 }, align 16 + %a583 = alloca { ptr, i64, i64 }, align 16 + %a586 = alloca { ptr, i64, i64 }, align 16 + %a587 = alloca %S.json.Json, align 16 + %a591 = alloca i64, align 16 + %a599 = alloca { ptr, i64, i64 }, align 16 + %a604 = alloca %S.json.Json, align 16 + %a608 = alloca { ptr, i64, i64 }, align 16 + %a609 = alloca i64, align 16 + %a617 = alloca %S.docs.Doc, align 16 + %a628 = alloca %S.json.Json, align 16 + %a632 = alloca { ptr, i64, i64 }, align 16 + %a633 = alloca i64, align 16 + %a641 = alloca { ptr, i64, i64 }, align 16 + %a646 = alloca %S.json.Json, align 16 + %a650 = alloca { ptr, i64, i64 }, align 16 + %a651 = alloca i64, align 16 + %a659 = alloca { ptr, i64, i64 }, align 16 + %a664 = 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 @@ -89040,1085 +106561,1170 @@ entry: %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 %then9903, label %endif9905 -then9903: + br i1 %t18, label %then10422, label %endif10424 +then10422: %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %a11, i32 0, i32 1 %t20 = load i64, ptr %t19 store i64 %t20, ptr %a14 - br label %endif9905 -endif9905: + br label %endif10424 +endif10424: %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.6684, i64 519) + call void @finch_str_sub(ptr %a23, ptr %a22, i64 0, i64 %t24, ptr @.str.6897, 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.cond9906 -while.cond9906: + br label %while.cond10425 +while.cond10425: %t30 = load i64, ptr %a29 %t31 = icmp sgt i64 %t30, 0 - br label %logic.from9909 -logic.from9909: - br i1 %t31, label %logic.rhs9910, label %logic.end9911 -logic.rhs9910: + br label %logic.from10428 +logic.from10428: + br i1 %t31, label %logic.rhs10429, label %logic.end10430 +logic.rhs10429: %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 %range9912, label %inrange9913 -range9912: - call void @finch_panic_index(ptr @.str.6685, i64 522, i64 %t33, i64 %t35) + br i1 %t36, label %range10431, label %inrange10432 +range10431: + call void @finch_panic_index(ptr @.str.6898, i64 522, i64 %t33, i64 %t35) unreachable -inrange9913: +inrange10432: %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.rend9914 -logic.rend9914: - br label %logic.end9911 -logic.end9911: - %t41 = phi i1 [ false, %logic.from9909 ], [ %t40, %logic.rend9914 ] - br i1 %t41, label %while.body9907, label %while.end9908 -while.body9907: + br label %logic.rend10433 +logic.rend10433: + br label %logic.end10430 +logic.end10430: + %t41 = phi i1 [ false, %logic.from10428 ], [ %t40, %logic.rend10433 ] + br i1 %t41, label %while.body10426, label %while.end10427 +while.body10426: %t42 = load i64, ptr %a29 %t43 = sub i64 %t42, 1 store i64 %t43, ptr %a29 - br label %while.cond9906 -while.end9908: + br label %while.cond10425 +while.end10427: %t44 = load i64, ptr %a29 %t45 = icmp sgt i64 %t44, 0 - br label %logic.from9915 -logic.from9915: - br i1 %t45, label %logic.rhs9916, label %logic.end9917 -logic.rhs9916: + br label %logic.from10434 +logic.from10434: + br i1 %t45, label %logic.rhs10435, label %logic.end10436 +logic.rhs10435: %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 %range9918, label %inrange9919 -range9918: - call void @finch_panic_index(ptr @.str.6686, i64 525, i64 %t47, i64 %t49) + br i1 %t50, label %range10437, label %inrange10438 +range10437: + call void @finch_panic_index(ptr @.str.6899, i64 525, i64 %t47, i64 %t49) unreachable -inrange9919: +inrange10438: %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.rend9920 -logic.rend9920: - br label %logic.end9917 -logic.end9917: - %t55 = phi i1 [ false, %logic.from9915 ], [ %t54, %logic.rend9920 ] + br label %logic.rend10439 +logic.rend10439: + br label %logic.end10436 +logic.end10436: + %t55 = phi i1 [ false, %logic.from10434 ], [ %t54, %logic.rend10439 ] store i1 %t55, ptr %a56 %t57 = load i1, ptr %a56 - br i1 %t57, label %then9921, label %endif9923 -then9921: + br i1 %t57, label %then10440, label %endif10442 +then10440: %t58 = load i64, ptr %a29 %t59 = sub i64 %t58, 1 store i64 %t59, ptr %a60 - br label %while.cond9924 -while.cond9924: + br label %while.cond10443 +while.cond10443: %t61 = load i64, ptr %a60 %t62 = icmp sgt i64 %t61, 0 - br label %logic.from9927 -logic.from9927: - br i1 %t62, label %logic.rhs9928, label %logic.end9929 -logic.rhs9928: + br label %logic.from10446 +logic.from10446: + br i1 %t62, label %logic.rhs10447, label %logic.end10448 +logic.rhs10447: %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 %range9930, label %inrange9931 -range9930: - call void @finch_panic_index(ptr @.str.6687, i64 528, i64 %t64, i64 %t66) + br i1 %t67, label %range10449, label %inrange10450 +range10449: + call void @finch_panic_index(ptr @.str.6900, i64 528, i64 %t64, i64 %t66) unreachable -inrange9931: +inrange10450: %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.from9932 -logic.from9932: - br i1 %t71, label %logic.end9934, label %logic.rhs9933 -logic.rhs9933: + br label %logic.from10451 +logic.from10451: + br i1 %t71, label %logic.end10453, label %logic.rhs10452 +logic.rhs10452: %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 %range9935, label %inrange9936 -range9935: - call void @finch_panic_index(ptr @.str.6688, i64 528, i64 %t73, i64 %t75) + br i1 %t76, label %range10454, label %inrange10455 +range10454: + call void @finch_panic_index(ptr @.str.6901, i64 528, i64 %t73, i64 %t75) unreachable -inrange9936: +inrange10455: %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.rend9937 -logic.rend9937: - br label %logic.end9934 -logic.end9934: - %t81 = phi i1 [ true, %logic.from9932 ], [ %t80, %logic.rend9937 ] - br label %logic.from9938 -logic.from9938: - br i1 %t81, label %logic.end9940, label %logic.rhs9939 -logic.rhs9939: + br label %logic.rend10456 +logic.rend10456: + br label %logic.end10453 +logic.end10453: + %t81 = phi i1 [ true, %logic.from10451 ], [ %t80, %logic.rend10456 ] + br label %logic.from10457 +logic.from10457: + br i1 %t81, label %logic.end10459, label %logic.rhs10458 +logic.rhs10458: %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 %range9941, label %inrange9942 -range9941: - call void @finch_panic_index(ptr @.str.6689, i64 528, i64 %t83, i64 %t85) + br i1 %t86, label %range10460, label %inrange10461 +range10460: + call void @finch_panic_index(ptr @.str.6902, i64 528, i64 %t83, i64 %t85) unreachable -inrange9942: +inrange10461: %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.rend9943 -logic.rend9943: - br label %logic.end9940 -logic.end9940: - %t91 = phi i1 [ true, %logic.from9938 ], [ %t90, %logic.rend9943 ] - br label %logic.rend9944 -logic.rend9944: - br label %logic.end9929 -logic.end9929: - %t92 = phi i1 [ false, %logic.from9927 ], [ %t91, %logic.rend9944 ] - br i1 %t92, label %while.body9925, label %while.end9926 -while.body9925: + br label %logic.rend10462 +logic.rend10462: + br label %logic.end10459 +logic.end10459: + %t91 = phi i1 [ true, %logic.from10457 ], [ %t90, %logic.rend10462 ] + br label %logic.rend10463 +logic.rend10463: + br label %logic.end10448 +logic.end10448: + %t92 = phi i1 [ false, %logic.from10446 ], [ %t91, %logic.rend10463 ] + br i1 %t92, label %while.body10444, label %while.end10445 +while.body10444: %t93 = load i64, ptr %a60 %t94 = sub i64 %t93, 1 store i64 %t94, ptr %a60 - br label %while.cond9924 -while.end9926: + br label %while.cond10443 +while.end10445: %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.6690, i64 531) + call void @finch_str_sub(ptr %a97, ptr %a96, i64 %t98, i64 %t100, ptr @.str.6903, 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.6692, i64 1, i64 0 }, ptr %a107 + store { ptr, i64, i64 } { ptr @.str.6905, 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 %then9945, label %endif9947 -then9945: + br i1 %t111, label %then10464, label %endif10466 +then10464: %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.6693, i64 535) + call void @finch_str_sub(ptr %a114, ptr %a113, i64 0, i64 %t115, ptr @.str.6906, i64 535) %t116 = load { ptr, i64, i64 }, ptr %a114 + %t117 = load { ptr, i64, i64 }, ptr %a102 store { ptr, i64, i64 } %t116, ptr %a102 + store { ptr, i64, i64 } %t117, ptr %a118 + call void @finch_str_drop(ptr %a118) store i1 true, ptr %a103 - br label %endif9947 -endif9947: - %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.cond9948 -find.cond9948: - %t124 = load i64, ptr %a123 - %t125 = icmp slt i64 %t124, %t121 - br i1 %t125, label %find.body9949, label %find.end9952 -find.body9949: - %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.hit9950, label %find.next9951 -find.hit9950: - store i64 %t124, ptr %a120 - br label %find.end9952 -find.next9951: - %t132 = add i64 %t124, 1 - store i64 %t132, ptr %a123 - br label %find.cond9948 -find.end9952: - %t133 = load i64, ptr %a120 - %t134 = icmp sge i64 %t133, 0 - br i1 %t134, label %then9953, label %endif9955 -then9953: - %t135 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 2 - store i64 0, ptr %a136 - br label %each.cond9956 -each.cond9956: - %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.body9957, label %each.end9959 -each.body9957: - %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.from9960 -logic.from9960: - br i1 %t151, label %logic.rhs9961, label %logic.end9962 -logic.rhs9961: - %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.rend9963 -logic.rend9963: - br label %logic.end9962 -logic.end9962: - %t156 = phi i1 [ false, %logic.from9960 ], [ %t155, %logic.rend9963 ] - br i1 %t156, label %then9964, label %endif9966 -then9964: - %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 + br label %endif10466 +endif10466: + %t119 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 5 + %t120 = getelementptr inbounds { ptr, i64, i64 }, ptr %t119, i32 0, i32 1 + %t121 = load { ptr, i64, i64 }, ptr %a102 + store i64 -1, ptr %a122 + %t123 = load i64, ptr %t120 + %t124 = load ptr, ptr %t119 + store i64 0, ptr %a125 + br label %find.cond10467 +find.cond10467: + %t126 = load i64, ptr %a125 + %t127 = icmp slt i64 %t126, %t123 + br i1 %t127, label %find.body10468, label %find.end10471 +find.body10468: + %t128 = getelementptr inbounds { ptr, i64, i64 }, ptr %t124, i64 %t126 + %t129 = load { ptr, i64, i64 }, ptr %t128 + store { ptr, i64, i64 } %t129, ptr %a130 + store { ptr, i64, i64 } %t121, ptr %a131 + %t132 = call i32 @finch_str_eq(ptr %a130, ptr %a131) + %t133 = icmp ne i32 %t132, 0 + br i1 %t133, label %find.hit10469, label %find.next10470 +find.hit10469: + store i64 %t126, ptr %a122 + br label %find.end10471 +find.next10470: + %t134 = add i64 %t126, 1 + store i64 %t134, ptr %a125 + br label %find.cond10467 +find.end10471: + %t135 = load i64, ptr %a122 + %t136 = icmp sge i64 %t135, 0 + br i1 %t136, label %then10472, label %endif10474 +then10472: + %t137 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 2 + store i64 0, ptr %a138 + br label %each.cond10475 +each.cond10475: + %t139 = getelementptr inbounds { ptr, i64, i64 }, ptr %t137, i32 0, i32 1 + %t140 = load i64, ptr %t139 + %t141 = load i64, ptr %a138 + %t142 = icmp slt i64 %t141, %t140 + br i1 %t142, label %each.body10476, label %each.end10478 +each.body10476: + %t143 = load ptr, ptr %t137 + %t144 = getelementptr inbounds %S.lsp.FnRec, ptr %t143, i64 %t141 + %t145 = load %S.lsp.FnRec, ptr %t144 + store %S.lsp.FnRec %t145, ptr %a146 + %t147 = getelementptr inbounds %S.lsp.FnRec, ptr %a146, i32 0, i32 0 + %t148 = load { ptr, i64, i64 }, ptr %t147 + %t149 = load { ptr, i64, i64 }, ptr %a102 + store { ptr, i64, i64 } %t148, ptr %a150 + store { ptr, i64, i64 } %t149, ptr %a151 + %t152 = call i32 @finch_str_eq(ptr %a150, ptr %a151) + %t153 = icmp ne i32 %t152, 0 + br label %logic.from10479 +logic.from10479: + br i1 %t153, label %logic.rhs10480, label %logic.end10481 +logic.rhs10480: + %t154 = getelementptr inbounds %S.lsp.FnRec, ptr %a146, i32 0, i32 2 + %t155 = getelementptr inbounds { ptr, i64, i64 }, ptr %t154, i32 0, i32 1 + %t156 = load i64, ptr %t155 + %t157 = icmp eq i64 %t156, 0 + br label %logic.rend10482 +logic.rend10482: + br label %logic.end10481 +logic.end10481: + %t158 = phi i1 [ false, %logic.from10479 ], [ %t157, %logic.rend10482 ] + br i1 %t158, label %then10483, label %endif10485 +then10483: + %t159 = getelementptr inbounds %S.lsp.FnRec, ptr %a146, i32 0, i32 1 %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.6694, i64 0, i64 0 }) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t161) - br label %endif9966 -endif9966: - br label %each.step9958 -each.step9958: - %t162 = load i64, ptr %a136 - %t163 = add i64 %t162, 1 - store i64 %t163, ptr %a136 - br label %each.cond9956 -each.end9959: - %t164 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 3 - store i64 0, ptr %a165 - br label %each.cond9967 -each.cond9967: - %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.body9968, label %each.end9970 -each.body9968: - %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 %then9971, label %endif9973 -then9971: - %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.6695, 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.6696, i64 0, i64 0 }) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t189) - br label %endif9973 -endif9973: - br label %each.step9969 -each.step9969: - %t190 = load i64, ptr %a165 - %t191 = add i64 %t190, 1 - store i64 %t191, ptr %a165 - br label %each.cond9967 -each.end9970: - %t192 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 4 - store i64 0, ptr %a193 - br label %each.cond9974 -each.cond9974: - %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.body9975, label %each.end9977 -each.body9975: - %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 %then9978, label %endif9980 -then9978: - %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.6697, 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.6698, i64 0, i64 0 }) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t217) - br label %endif9980 -endif9980: - br label %each.step9976 -each.step9976: - %t218 = load i64, ptr %a193 - %t219 = add i64 %t218, 1 - store i64 %t219, ptr %a193 - br label %each.cond9974 -each.end9977: - %t220 = load %S.json.Json, ptr %a7 - %t221 = call %S.json.Json @finch.lsp.completionList(%S.json.Json %t220) - ret %S.json.Json %t221 -endif9955: - %t222 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 4 - store i64 0, ptr %a223 - br label %each.cond9981 -each.cond9981: - %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.body9982, label %each.end9984 -each.body9982: - %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.from9985 -logic.from9985: - br i1 %t238, label %logic.rhs9986, label %logic.end9987 -logic.rhs9986: - %t239 = load %S.lsp.Analysis, ptr %a1 - %t240 = load { ptr, i64, i64 }, ptr %a3 + %t161 = getelementptr inbounds %S.lsp.FnRec, ptr %a146, i32 0, i32 7 + %t162 = load { ptr, i64, i64 }, ptr %t161 + %t163 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t160, i64 3, { ptr, i64, i64 } %t162, { ptr, i64, i64 } { ptr @.str.6907, i64 0, i64 0 }) + call void @finch.json.Json.push(ptr %a7, %S.json.Json %t163) + store %S.json.Json %t163, ptr %a164 + call void @finch.drop.S_json_Json(ptr %a164) + br label %endif10485 +endif10485: + br label %each.step10477 +each.step10477: + %t165 = load i64, ptr %a138 + %t166 = add i64 %t165, 1 + store i64 %t166, ptr %a138 + br label %each.cond10475 +each.end10478: + %t167 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 3 + store i64 0, ptr %a168 + br label %each.cond10486 +each.cond10486: + %t169 = getelementptr inbounds { ptr, i64, i64 }, ptr %t167, i32 0, i32 1 + %t170 = load i64, ptr %t169 + %t171 = load i64, ptr %a168 + %t172 = icmp slt i64 %t171, %t170 + br i1 %t172, label %each.body10487, label %each.end10489 +each.body10487: + %t173 = load ptr, ptr %t167 + %t174 = getelementptr inbounds %S.lsp.StructRec, ptr %t173, i64 %t171 + %t175 = load %S.lsp.StructRec, ptr %t174 + store %S.lsp.StructRec %t175, ptr %a176 + %t177 = getelementptr inbounds %S.lsp.StructRec, ptr %a176, i32 0, i32 0 + %t178 = load { ptr, i64, i64 }, ptr %t177 + %t179 = load { ptr, i64, i64 }, ptr %a102 + store { ptr, i64, i64 } %t178, ptr %a180 + store { ptr, i64, i64 } %t179, ptr %a181 + %t182 = call i32 @finch_str_eq(ptr %a180, ptr %a181) + %t183 = icmp ne i32 %t182, 0 + br i1 %t183, label %then10490, label %endif10492 +then10490: + %t184 = getelementptr inbounds %S.lsp.StructRec, ptr %a176, i32 0, i32 1 + %t185 = load { ptr, i64, i64 }, ptr %t184 + %t186 = getelementptr inbounds %S.lsp.StructRec, ptr %a176, i32 0, i32 1 + %t187 = load { ptr, i64, i64 }, ptr %t186 + store { ptr, i64, i64 } { ptr @.str.6908, i64 7, i64 0 }, ptr %a189 + store { ptr, i64, i64 } %t187, ptr %a190 + call void @finch_str_concat(ptr %a188, ptr %a189, ptr %a190) + %t191 = load { ptr, i64, i64 }, ptr %a188 + %t192 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t185, i64 22, { ptr, i64, i64 } %t191, { ptr, i64, i64 } { ptr @.str.6909, i64 0, i64 0 }) + store { ptr, i64, i64 } %t191, ptr %a193 + call void @finch_str_drop(ptr %a193) + call void @finch.json.Json.push(ptr %a7, %S.json.Json %t192) + store %S.json.Json %t192, ptr %a194 + call void @finch.drop.S_json_Json(ptr %a194) + br label %endif10492 +endif10492: + br label %each.step10488 +each.step10488: + %t195 = load i64, ptr %a168 + %t196 = add i64 %t195, 1 + store i64 %t196, ptr %a168 + br label %each.cond10486 +each.end10489: + %t197 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 4 + store i64 0, ptr %a198 + br label %each.cond10493 +each.cond10493: + %t199 = getelementptr inbounds { ptr, i64, i64 }, ptr %t197, i32 0, i32 1 + %t200 = load i64, ptr %t199 + %t201 = load i64, ptr %a198 + %t202 = icmp slt i64 %t201, %t200 + br i1 %t202, label %each.body10494, label %each.end10496 +each.body10494: + %t203 = load ptr, ptr %t197 + %t204 = getelementptr inbounds %S.lsp.EnumRec, ptr %t203, i64 %t201 + %t205 = load %S.lsp.EnumRec, ptr %t204 + store %S.lsp.EnumRec %t205, ptr %a206 + %t207 = getelementptr inbounds %S.lsp.EnumRec, ptr %a206, i32 0, i32 0 + %t208 = load { ptr, i64, i64 }, ptr %t207 + %t209 = load { ptr, i64, i64 }, ptr %a102 + store { ptr, i64, i64 } %t208, ptr %a210 + store { ptr, i64, i64 } %t209, ptr %a211 + %t212 = call i32 @finch_str_eq(ptr %a210, ptr %a211) + %t213 = icmp ne i32 %t212, 0 + br i1 %t213, label %then10497, label %endif10499 +then10497: + %t214 = getelementptr inbounds %S.lsp.EnumRec, ptr %a206, i32 0, i32 1 + %t215 = load { ptr, i64, i64 }, ptr %t214 + %t216 = getelementptr inbounds %S.lsp.EnumRec, ptr %a206, i32 0, i32 1 + %t217 = load { ptr, i64, i64 }, ptr %t216 + store { ptr, i64, i64 } { ptr @.str.6910, i64 5, i64 0 }, ptr %a219 + store { ptr, i64, i64 } %t217, ptr %a220 + call void @finch_str_concat(ptr %a218, ptr %a219, ptr %a220) + %t221 = load { ptr, i64, i64 }, ptr %a218 + %t222 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t215, i64 13, { ptr, i64, i64 } %t221, { ptr, i64, i64 } { ptr @.str.6911, i64 0, i64 0 }) + store { ptr, i64, i64 } %t221, ptr %a223 + call void @finch_str_drop(ptr %a223) + call void @finch.json.Json.push(ptr %a7, %S.json.Json %t222) + store %S.json.Json %t222, ptr %a224 + call void @finch.drop.S_json_Json(ptr %a224) + br label %endif10499 +endif10499: + br label %each.step10495 +each.step10495: + %t225 = load i64, ptr %a198 + %t226 = add i64 %t225, 1 + store i64 %t226, ptr %a198 + br label %each.cond10493 +each.end10496: + %t227 = load %S.json.Json, ptr %a7 + %t228 = call %S.json.Json @finch.lsp.completionList(%S.json.Json %t227) + call void @finch_str_drop(ptr %a102) + call void @finch_str_drop(ptr %a26) + call void @finch_str_drop(ptr %a11) + call void @finch.drop.S_json_Json(ptr %a7) + ret %S.json.Json %t228 +endif10474: + %t229 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 4 + store i64 0, ptr %a230 + br label %each.cond10500 +each.cond10500: + %t231 = getelementptr inbounds { ptr, i64, i64 }, ptr %t229, i32 0, i32 1 + %t232 = load i64, ptr %t231 + %t233 = load i64, ptr %a230 + %t234 = icmp slt i64 %t233, %t232 + br i1 %t234, label %each.body10501, label %each.end10503 +each.body10501: + %t235 = load ptr, ptr %t229 + %t236 = getelementptr inbounds %S.lsp.EnumRec, ptr %t235, i64 %t233 + %t237 = load %S.lsp.EnumRec, ptr %t236 + store %S.lsp.EnumRec %t237, ptr %a238 + %t239 = getelementptr inbounds %S.lsp.EnumRec, ptr %a238, i32 0, i32 1 + %t240 = load { ptr, i64, i64 }, ptr %t239 %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.rend9988 -logic.rend9988: - br label %logic.end9987 -logic.end9987: - %t250 = phi i1 [ false, %logic.from9985 ], [ %t249, %logic.rend9988 ] - br i1 %t250, label %then9989, label %endif9991 -then9989: - %t251 = getelementptr inbounds %S.lsp.EnumRec, ptr %a231, i32 0, i32 5 - store i64 0, ptr %a252 - br label %each.cond9992 -each.cond9992: - %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.body9993, label %each.end9995 -each.body9993: - %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.6699, 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.6700, i64 0, i64 0 }) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t273) - br label %each.step9994 -each.step9994: - %t274 = load i64, ptr %a252 - %t275 = add i64 %t274, 1 - store i64 %t275, ptr %a252 - br label %each.cond9992 -each.end9995: - %t276 = load %S.json.Json, ptr %a7 - %t277 = call %S.json.Json @finch.lsp.completionList(%S.json.Json %t276) - ret %S.json.Json %t277 -endif9991: - br label %each.step9983 -each.step9983: - %t278 = load i64, ptr %a223 - %t279 = add i64 %t278, 1 - store i64 %t279, ptr %a223 - br label %each.cond9981 -each.end9984: - %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.from9996 -logic.from9996: - br i1 %t290, label %logic.rhs9997, label %logic.end9998 -logic.rhs9997: - %t291 = load { ptr, i64, i64 }, ptr %a289 - store { ptr, i64, i64 } %t291, ptr %a292 - store { ptr, i64, i64 } { ptr @.str.6702, 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.rend9999 -logic.rend9999: - br label %logic.end9998 -logic.end9998: - %t297 = phi i1 [ false, %logic.from9996 ], [ %t296, %logic.rend9999 ] - br i1 %t297, label %then10000, label %else10001 -then10000: - %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.6703, i64 569) - %t303 = load { ptr, i64, i64 }, ptr %a300 - store { ptr, i64, i64 } %t303, ptr %a289 - br label %endif10002 -else10001: - %t304 = load i1, ptr %a103 - br label %logic.from10003 -logic.from10003: - br i1 %t304, label %logic.rhs10004, label %logic.end10005 -logic.rhs10004: - %t305 = load { ptr, i64, i64 }, ptr %a289 - store { ptr, i64, i64 } %t305, ptr %a306 - store { ptr, i64, i64 } { ptr @.str.6704, i64 3, i64 0 }, ptr %a307 - %t308 = call i32 @finch_str_eq(ptr %a306, ptr %a307) + store { ptr, i64, i64 } %t240, ptr %a242 + store { ptr, i64, i64 } %t241, ptr %a243 + %t244 = call i32 @finch_str_eq(ptr %a242, ptr %a243) + %t245 = icmp ne i32 %t244, 0 + br label %logic.from10504 +logic.from10504: + br i1 %t245, label %logic.rhs10505, label %logic.end10506 +logic.rhs10505: + %t246 = load %S.lsp.Analysis, ptr %a1 + %t247 = load { ptr, i64, i64 }, ptr %a3 + %t248 = load { ptr, i64, i64 }, ptr %a102 + %t249 = load i64, ptr %a4 + %t250 = call %S.lsp.VarRec @finch.lsp.varNamed(%S.lsp.Analysis %t246, { ptr, i64, i64 } %t247, { ptr, i64, i64 } %t248, i64 %t249) + %t251 = extractvalue %S.lsp.VarRec %t250, 0 + store { ptr, i64, i64 } %t251, ptr %a252 + call void @finch_str_copy(ptr %a253, ptr %a252) + %t254 = load { ptr, i64, i64 }, ptr %a253 + store %S.lsp.VarRec %t250, ptr %a255 + call void @finch.drop.S_lsp_VarRec(ptr %a255) + %t256 = extractvalue { ptr, i64, i64 } %t254, 1 + store { ptr, i64, i64 } %t254, ptr %a257 + call void @finch_str_drop(ptr %a257) + %t258 = icmp eq i64 %t256, 0 + br label %logic.rend10507 +logic.rend10507: + br label %logic.end10506 +logic.end10506: + %t259 = phi i1 [ false, %logic.from10504 ], [ %t258, %logic.rend10507 ] + br i1 %t259, label %then10508, label %endif10510 +then10508: + %t260 = getelementptr inbounds %S.lsp.EnumRec, ptr %a238, i32 0, i32 5 + store i64 0, ptr %a261 + br label %each.cond10511 +each.cond10511: + %t262 = getelementptr inbounds { ptr, i64, i64 }, ptr %t260, i32 0, i32 1 + %t263 = load i64, ptr %t262 + %t264 = load i64, ptr %a261 + %t265 = icmp slt i64 %t264, %t263 + br i1 %t265, label %each.body10512, label %each.end10514 +each.body10512: + %t266 = load ptr, ptr %t260 + %t267 = getelementptr inbounds { ptr, i64, i64 }, ptr %t266, i64 %t264 + %t268 = load { ptr, i64, i64 }, ptr %t267 + store { ptr, i64, i64 } %t268, ptr %a269 + %t270 = load { ptr, i64, i64 }, ptr %a269 + %t271 = getelementptr inbounds %S.lsp.EnumRec, ptr %a238, i32 0, i32 1 + %t272 = load { ptr, i64, i64 }, ptr %t271 + store { ptr, i64, i64 } %t272, ptr %a274 + store { ptr, i64, i64 } { ptr @.str.6912, 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 = load { ptr, i64, i64 }, ptr %a269 + store { ptr, i64, i64 } %t276, ptr %a279 + store { ptr, i64, i64 } %t277, ptr %a280 + call void @finch_str_concat(ptr %a278, ptr %a279, ptr %a280) + store { ptr, i64, i64 } %t276, ptr %a281 + call void @finch_str_drop(ptr %a281) + %t282 = load { ptr, i64, i64 }, ptr %a278 + %t283 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t270, i64 20, { ptr, i64, i64 } %t282, { ptr, i64, i64 } { ptr @.str.6913, i64 0, i64 0 }) + store { ptr, i64, i64 } %t282, ptr %a284 + call void @finch_str_drop(ptr %a284) + call void @finch.json.Json.push(ptr %a7, %S.json.Json %t283) + store %S.json.Json %t283, ptr %a285 + call void @finch.drop.S_json_Json(ptr %a285) + br label %each.step10513 +each.step10513: + %t286 = load i64, ptr %a261 + %t287 = add i64 %t286, 1 + store i64 %t287, ptr %a261 + br label %each.cond10511 +each.end10514: + %t288 = load %S.json.Json, ptr %a7 + %t289 = call %S.json.Json @finch.lsp.completionList(%S.json.Json %t288) + call void @finch_str_drop(ptr %a102) + call void @finch_str_drop(ptr %a26) + call void @finch_str_drop(ptr %a11) + call void @finch.drop.S_json_Json(ptr %a7) + ret %S.json.Json %t289 +endif10510: + br label %each.step10502 +each.step10502: + %t290 = load i64, ptr %a230 + %t291 = add i64 %t290, 1 + store i64 %t291, ptr %a230 + br label %each.cond10500 +each.end10503: + %t292 = load %S.lsp.Analysis, ptr %a1 + %t293 = load { ptr, i64, i64 }, ptr %a3 + %t294 = load { ptr, i64, i64 }, ptr %a102 + %t295 = load i64, ptr %a4 + %t296 = call %S.lsp.VarRec @finch.lsp.varNamed(%S.lsp.Analysis %t292, { ptr, i64, i64 } %t293, { ptr, i64, i64 } %t294, i64 %t295) + %t297 = extractvalue %S.lsp.VarRec %t296, 1 + store { ptr, i64, i64 } %t297, ptr %a298 + call void @finch_str_copy(ptr %a299, ptr %a298) + %t300 = load { ptr, i64, i64 }, ptr %a299 + store %S.lsp.VarRec %t296, ptr %a301 + call void @finch.drop.S_lsp_VarRec(ptr %a301) + store { ptr, i64, i64 } %t300, ptr %a302 + %t303 = load i1, ptr %a103 + br label %logic.from10515 +logic.from10515: + br i1 %t303, label %logic.rhs10516, label %logic.end10517 +logic.rhs10516: + %t304 = load { ptr, i64, i64 }, ptr %a302 + store { ptr, i64, i64 } %t304, ptr %a305 + store { ptr, i64, i64 } { ptr @.str.6915, i64 2, i64 0 }, ptr %a307 + %t308 = call i32 @finch_str_starts(ptr %a305, ptr %a307) %t309 = icmp ne i32 %t308, 0 - br label %logic.rend10006 -logic.rend10006: - br label %logic.end10005 -logic.end10005: - %t310 = phi i1 [ false, %logic.from10003 ], [ %t309, %logic.rend10006 ] - br i1 %t310, label %then10007, label %endif10009 -then10007: - store { ptr, i64, i64 } { ptr @.str.6705, i64 4, i64 0 }, ptr %a289 - br label %endif10009 -endif10009: - br label %endif10002 -endif10002: - %t311 = load { ptr, i64, i64 }, ptr %a289 + br label %logic.rend10518 +logic.rend10518: + br label %logic.end10517 +logic.end10517: + %t310 = phi i1 [ false, %logic.from10515 ], [ %t309, %logic.rend10518 ] + br i1 %t310, label %then10519, label %else10520 +then10519: + %t311 = load { ptr, i64, i64 }, ptr %a302 store { ptr, i64, i64 } %t311, ptr %a312 - store { ptr, i64, i64 } { ptr @.str.6707, 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.from10010 -logic.from10010: - br i1 %t316, label %logic.rhs10011, label %logic.end10012 -logic.rhs10011: - %t317 = load { ptr, i64, i64 }, ptr %a289 + %t314 = getelementptr inbounds { ptr, i64, i64 }, ptr %a302, i32 0, i32 1 + %t315 = load i64, ptr %t314 + call void @finch_str_sub(ptr %a313, ptr %a312, i64 2, i64 %t315, ptr @.str.6916, i64 569) + %t316 = load { ptr, i64, i64 }, ptr %a313 + %t317 = load { ptr, i64, i64 }, ptr %a302 + store { ptr, i64, i64 } %t316, ptr %a302 store { ptr, i64, i64 } %t317, ptr %a318 - store { ptr, i64, i64 } { ptr @.str.6709, 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.rend10013 -logic.rend10013: - br label %logic.end10012 -logic.end10012: - %t323 = phi i1 [ false, %logic.from10010 ], [ %t322, %logic.rend10013 ] - br i1 %t323, label %then10014, label %endif10016 -then10014: - %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.6710, i64 574) - %t330 = load { ptr, i64, i64 }, ptr %a326 - store { ptr, i64, i64 } %t330, ptr %a289 - br label %endif10016 -endif10016: - %t331 = load { ptr, i64, i64 }, ptr %a289 - store { ptr, i64, i64 } %t331, ptr %a332 - store { ptr, i64, i64 } { ptr @.str.6712, 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 %then10017, label %else10018 -then10017: - %t337 = call { ptr, i64, i64 } @finch.docs.arrayMethods() - call void @finch.lsp.methodItems(ptr %a7, { ptr, i64, i64 } %t337) - br label %endif10019 -else10018: - %t338 = load { ptr, i64, i64 }, ptr %a289 - store { ptr, i64, i64 } %t338, ptr %a339 - store { ptr, i64, i64 } { ptr @.str.6713, 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 %then10020, label %else10021 -then10020: - %t343 = call { ptr, i64, i64 } @finch.docs.strMethods() - call void @finch.lsp.methodItems(ptr %a7, { ptr, i64, i64 } %t343) - br label %endif10022 -else10021: - %t344 = load { ptr, i64, i64 }, ptr %a289 - store { ptr, i64, i64 } %t344, ptr %a345 - store { ptr, i64, i64 } { ptr @.str.6715, 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 %then10023, label %else10024 -then10023: - %t350 = call { ptr, i64, i64 } @finch.docs.mapMethods() - call void @finch.lsp.methodItems(ptr %a7, { ptr, i64, i64 } %t350) - br label %endif10025 -else10024: - %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.cond10026 -each.cond10026: - %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.body10027, label %each.end10029 -each.body10027: - %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 %then10030, label %endif10032 -then10030: - %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.cond10033 -for.cond10033: - %t377 = load i64, ptr %a376 - %t378 = icmp slt i64 %t377, %t375 - br i1 %t378, label %for.body10034, label %for.end10036 -for.body10034: - %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 %range10037, label %inrange10038 -range10037: - call void @finch_panic_index(ptr @.str.6716, i64 587, i64 %t380, i64 %t382) + call void @finch_str_drop(ptr %a318) + br label %endif10521 +else10520: + %t319 = load i1, ptr %a103 + br label %logic.from10522 +logic.from10522: + br i1 %t319, label %logic.rhs10523, label %logic.end10524 +logic.rhs10523: + %t320 = load { ptr, i64, i64 }, ptr %a302 + store { ptr, i64, i64 } %t320, ptr %a321 + store { ptr, i64, i64 } { ptr @.str.6917, i64 3, i64 0 }, ptr %a322 + %t323 = call i32 @finch_str_eq(ptr %a321, ptr %a322) + %t324 = icmp ne i32 %t323, 0 + br label %logic.rend10525 +logic.rend10525: + br label %logic.end10524 +logic.end10524: + %t325 = phi i1 [ false, %logic.from10522 ], [ %t324, %logic.rend10525 ] + br i1 %t325, label %then10526, label %endif10528 +then10526: + %t326 = load { ptr, i64, i64 }, ptr %a302 + store { ptr, i64, i64 } { ptr @.str.6918, i64 4, i64 0 }, ptr %a302 + store { ptr, i64, i64 } %t326, ptr %a327 + call void @finch_str_drop(ptr %a327) + br label %endif10528 +endif10528: + br label %endif10521 +endif10521: + %t328 = load { ptr, i64, i64 }, ptr %a302 + store { ptr, i64, i64 } %t328, ptr %a329 + store { ptr, i64, i64 } { ptr @.str.6920, i64 4, i64 0 }, ptr %a331 + %t332 = call i32 @finch_str_starts(ptr %a329, ptr %a331) + %t333 = icmp ne i32 %t332, 0 + br label %logic.from10529 +logic.from10529: + br i1 %t333, label %logic.rhs10530, label %logic.end10531 +logic.rhs10530: + %t334 = load { ptr, i64, i64 }, ptr %a302 + store { ptr, i64, i64 } %t334, ptr %a335 + store { ptr, i64, i64 } { ptr @.str.6922, i64 1, i64 0 }, ptr %a337 + %t338 = call i32 @finch_str_ends(ptr %a335, ptr %a337) + %t339 = icmp ne i32 %t338, 0 + br label %logic.rend10532 +logic.rend10532: + br label %logic.end10531 +logic.end10531: + %t340 = phi i1 [ false, %logic.from10529 ], [ %t339, %logic.rend10532 ] + br i1 %t340, label %then10533, label %endif10535 +then10533: + %t341 = load { ptr, i64, i64 }, ptr %a302 + store { ptr, i64, i64 } %t341, ptr %a342 + %t344 = getelementptr inbounds { ptr, i64, i64 }, ptr %a302, i32 0, i32 1 + %t345 = load i64, ptr %t344 + %t346 = sub i64 %t345, 1 + call void @finch_str_sub(ptr %a343, ptr %a342, i64 4, i64 %t346, ptr @.str.6923, i64 574) + %t347 = load { ptr, i64, i64 }, ptr %a343 + %t348 = load { ptr, i64, i64 }, ptr %a302 + store { ptr, i64, i64 } %t347, ptr %a302 + store { ptr, i64, i64 } %t348, ptr %a349 + call void @finch_str_drop(ptr %a349) + br label %endif10535 +endif10535: + %t350 = load { ptr, i64, i64 }, ptr %a302 + store { ptr, i64, i64 } %t350, ptr %a351 + store { ptr, i64, i64 } { ptr @.str.6925, i64 2, i64 0 }, ptr %a353 + %t354 = call i32 @finch_str_starts(ptr %a351, ptr %a353) + %t355 = icmp ne i32 %t354, 0 + br i1 %t355, label %then10536, label %else10537 +then10536: + %t356 = call { ptr, i64, i64 } @finch.docs.arrayMethods() + call void @finch.lsp.methodItems(ptr %a7, { ptr, i64, i64 } %t356) + store { ptr, i64, i64 } %t356, ptr %a357 + call void @finch.drop.arr_S_docs_Doc(ptr %a357) + br label %endif10538 +else10537: + %t358 = load { ptr, i64, i64 }, ptr %a302 + store { ptr, i64, i64 } %t358, ptr %a359 + store { ptr, i64, i64 } { ptr @.str.6926, i64 3, i64 0 }, ptr %a360 + %t361 = call i32 @finch_str_eq(ptr %a359, ptr %a360) + %t362 = icmp ne i32 %t361, 0 + br i1 %t362, label %then10539, label %else10540 +then10539: + %t363 = call { ptr, i64, i64 } @finch.docs.strMethods() + call void @finch.lsp.methodItems(ptr %a7, { ptr, i64, i64 } %t363) + store { ptr, i64, i64 } %t363, ptr %a364 + call void @finch.drop.arr_S_docs_Doc(ptr %a364) + br label %endif10541 +else10540: + %t365 = load { ptr, i64, i64 }, ptr %a302 + store { ptr, i64, i64 } %t365, ptr %a366 + store { ptr, i64, i64 } { ptr @.str.6928, i64 4, i64 0 }, ptr %a368 + %t369 = call i32 @finch_str_starts(ptr %a366, ptr %a368) + %t370 = icmp ne i32 %t369, 0 + br i1 %t370, label %then10542, label %else10543 +then10542: + %t371 = call { ptr, i64, i64 } @finch.docs.mapMethods() + call void @finch.lsp.methodItems(ptr %a7, { ptr, i64, i64 } %t371) + store { ptr, i64, i64 } %t371, ptr %a372 + call void @finch.drop.arr_S_docs_Doc(ptr %a372) + br label %endif10544 +else10543: + %t373 = load { ptr, i64, i64 }, ptr %a302 + 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 %a377 + %t378 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 3 + store i64 0, ptr %a379 + br label %each.cond10545 +each.cond10545: + %t380 = getelementptr inbounds { ptr, i64, i64 }, ptr %t378, i32 0, i32 1 + %t381 = load i64, ptr %t380 + %t382 = load i64, ptr %a379 + %t383 = icmp slt i64 %t382, %t381 + br i1 %t383, label %each.body10546, label %each.end10548 +each.body10546: + %t384 = load ptr, ptr %t378 + %t385 = getelementptr inbounds %S.lsp.StructRec, ptr %t384, i64 %t382 + %t386 = load %S.lsp.StructRec, ptr %t385 + store %S.lsp.StructRec %t386, ptr %a387 + %t388 = getelementptr inbounds %S.lsp.StructRec, ptr %a387, i32 0, i32 1 + %t389 = load { ptr, i64, i64 }, ptr %t388 + %t390 = load { ptr, i64, i64 }, ptr %a377 + store { ptr, i64, i64 } %t389, ptr %a391 + store { ptr, i64, i64 } %t390, ptr %a392 + %t393 = call i32 @finch_str_eq(ptr %a391, ptr %a392) + %t394 = icmp ne i32 %t393, 0 + br i1 %t394, label %then10549, label %endif10551 +then10549: + %t395 = getelementptr inbounds %S.lsp.StructRec, ptr %a387, i32 0, i32 5 + %t396 = getelementptr inbounds { ptr, i64, i64 }, ptr %t395, i32 0, i32 1 + %t397 = load i64, ptr %t396 + store i64 0, ptr %a398 + br label %for.cond10552 +for.cond10552: + %t399 = load i64, ptr %a398 + %t400 = icmp slt i64 %t399, %t397 + br i1 %t400, label %for.body10553, label %for.end10555 +for.body10553: + %t401 = getelementptr inbounds %S.lsp.StructRec, ptr %a387, i32 0, i32 5 + %t402 = load i64, ptr %a398 + %t403 = load { ptr, i64, i64 }, ptr %t401 + %t404 = extractvalue { ptr, i64, i64 } %t403, 1 + %t405 = icmp uge i64 %t402, %t404 + br i1 %t405, label %range10556, label %inrange10557 +range10556: + call void @finch_panic_index(ptr @.str.6929, i64 587, i64 %t402, i64 %t404) unreachable -inrange10038: - %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 %range10039, label %inrange10040 -range10039: - call void @finch_panic_index(ptr @.str.6717, i64 587, i64 %t388, i64 %t390) +inrange10557: + %t406 = extractvalue { ptr, i64, i64 } %t403, 0 + %t407 = getelementptr inbounds { ptr, i64, i64 }, ptr %t406, i64 %t402 + %t408 = load { ptr, i64, i64 }, ptr %t407 + %t409 = getelementptr inbounds %S.lsp.StructRec, ptr %a387, i32 0, i32 6 + %t410 = load i64, ptr %a398 + %t411 = load { ptr, i64, i64 }, ptr %t409 + %t412 = extractvalue { ptr, i64, i64 } %t411, 1 + %t413 = icmp uge i64 %t410, %t412 + br i1 %t413, label %range10558, label %inrange10559 +range10558: + call void @finch_panic_index(ptr @.str.6930, i64 587, i64 %t410, i64 %t412) unreachable -inrange10040: - %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.6718, i64 0, i64 0 }) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t395) - br label %for.step10035 -for.step10035: - %t396 = load i64, ptr %a376 - %t397 = add i64 %t396, 1 - store i64 %t397, ptr %a376 - br label %for.cond10033 -for.end10036: - br label %endif10032 -endif10032: - br label %each.step10028 -each.step10028: - %t398 = load i64, ptr %a357 - %t399 = add i64 %t398, 1 - store i64 %t399, ptr %a357 - br label %each.cond10026 -each.end10029: - %t400 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 2 - store i64 0, ptr %a401 - br label %each.cond10041 -each.cond10041: - %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.body10042, label %each.end10044 -each.body10042: - %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 %then10045, label %endif10047 -then10045: - %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.6719, i64 0, i64 0 }) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t421) - br label %endif10047 -endif10047: - br label %each.step10043 -each.step10043: - %t422 = load i64, ptr %a401 - %t423 = add i64 %t422, 1 - store i64 %t423, ptr %a401 - br label %each.cond10041 -each.end10044: - br label %endif10025 -endif10025: - br label %endif10022 -endif10022: - br label %endif10019 -endif10019: - %t424 = load %S.json.Json, ptr %a7 - %t425 = call %S.json.Json @finch.lsp.completionList(%S.json.Json %t424) - ret %S.json.Json %t425 -endif9923: - 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.cond10048 -each.cond10048: - %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.body10049, label %each.end10051 -each.body10049: - %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.from10052 -logic.from10052: - br i1 %t440, label %logic.rhs10053, label %logic.end10054 -logic.rhs10053: - %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.rend10055 -logic.rend10055: - br label %logic.end10054 -logic.end10054: - %t446 = phi i1 [ false, %logic.from10052 ], [ %t445, %logic.rend10055 ] - br label %logic.from10056 -logic.from10056: - br i1 %t446, label %logic.rhs10057, label %logic.end10058 -logic.rhs10057: - %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.rend10059 -logic.rend10059: - br label %logic.end10058 -logic.end10058: - %t454 = phi i1 [ false, %logic.from10056 ], [ %t453, %logic.rend10059 ] - br label %logic.from10060 -logic.from10060: - br i1 %t454, label %logic.rhs10061, label %logic.end10062 -logic.rhs10061: - %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.rend10063 -logic.rend10063: - br label %logic.end10062 -logic.end10062: - %t458 = phi i1 [ false, %logic.from10060 ], [ %t457, %logic.rend10063 ] - br i1 %t458, label %then10064, label %endif10066 -then10064: - %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.6720, i64 0, i64 0 }) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t463) - br label %endif10066 -endif10066: - br label %each.step10050 -each.step10050: - %t464 = load i64, ptr %a428 - %t465 = add i64 %t464, 1 - store i64 %t465, ptr %a428 - br label %each.cond10048 -each.end10051: - %t466 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 2 - store i64 0, ptr %a467 - br label %each.cond10067 -each.cond10067: - %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.body10068, label %each.end10070 -each.body10068: - %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.from10071 -logic.from10071: - br i1 %t479, label %logic.rhs10072, label %logic.end10073 -logic.rhs10072: - %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.6721, 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.rend10074 -logic.rend10074: - br label %logic.end10073 -logic.end10073: - %t486 = phi i1 [ false, %logic.from10071 ], [ %t485, %logic.rend10074 ] - br label %logic.from10075 -logic.from10075: - br i1 %t486, label %logic.rhs10076, label %logic.end10077 -logic.rhs10076: - %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.rend10078 -logic.rend10078: - br label %logic.end10077 -logic.end10077: - %t490 = phi i1 [ false, %logic.from10075 ], [ %t489, %logic.rend10078 ] - br i1 %t490, label %then10079, label %endif10081 -then10079: - %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.6722, i64 0, i64 0 }) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t495) - br label %endif10081 -endif10081: - br label %each.step10069 -each.step10069: - %t496 = load i64, ptr %a467 - %t497 = add i64 %t496, 1 - store i64 %t497, ptr %a467 - br label %each.cond10067 -each.end10070: - %t498 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 3 - store i64 0, ptr %a499 - br label %each.cond10082 -each.cond10082: - %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.body10083, label %each.end10085 -each.body10083: - %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.6723, 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.from10086 -logic.from10086: - br i1 %t513, label %logic.rhs10087, label %logic.end10088 -logic.rhs10087: - %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.rend10089 -logic.rend10089: - br label %logic.end10088 -logic.end10088: - %t517 = phi i1 [ false, %logic.from10086 ], [ %t516, %logic.rend10089 ] - br i1 %t517, label %then10090, label %endif10092 -then10090: - %t518 = getelementptr inbounds %S.lsp.StructRec, ptr %a507, i32 0, i32 1 +inrange10559: + %t414 = extractvalue { ptr, i64, i64 } %t411, 0 + %t415 = getelementptr inbounds { ptr, i64, i64 }, ptr %t414, i64 %t410 + %t416 = load { ptr, i64, i64 }, ptr %t415 + %t417 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t408, i64 5, { ptr, i64, i64 } %t416, { ptr, i64, i64 } { ptr @.str.6931, i64 0, i64 0 }) + call void @finch.json.Json.push(ptr %a7, %S.json.Json %t417) + store %S.json.Json %t417, ptr %a418 + call void @finch.drop.S_json_Json(ptr %a418) + br label %for.step10554 +for.step10554: + %t419 = load i64, ptr %a398 + %t420 = add i64 %t419, 1 + store i64 %t420, ptr %a398 + br label %for.cond10552 +for.end10555: + br label %endif10551 +endif10551: + br label %each.step10547 +each.step10547: + %t421 = load i64, ptr %a379 + %t422 = add i64 %t421, 1 + store i64 %t422, ptr %a379 + br label %each.cond10545 +each.end10548: + %t423 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 2 + store i64 0, ptr %a424 + br label %each.cond10560 +each.cond10560: + %t425 = getelementptr inbounds { ptr, i64, i64 }, ptr %t423, i32 0, i32 1 + %t426 = load i64, ptr %t425 + %t427 = load i64, ptr %a424 + %t428 = icmp slt i64 %t427, %t426 + br i1 %t428, label %each.body10561, label %each.end10563 +each.body10561: + %t429 = load ptr, ptr %t423 + %t430 = getelementptr inbounds %S.lsp.FnRec, ptr %t429, i64 %t427 + %t431 = load %S.lsp.FnRec, ptr %t430 + store %S.lsp.FnRec %t431, ptr %a432 + %t433 = getelementptr inbounds %S.lsp.FnRec, ptr %a432, i32 0, i32 2 + %t434 = load { ptr, i64, i64 }, ptr %t433 + %t435 = load { ptr, i64, i64 }, ptr %a377 + store { ptr, i64, i64 } %t434, ptr %a436 + store { ptr, i64, i64 } %t435, ptr %a437 + %t438 = call i32 @finch_str_eq(ptr %a436, ptr %a437) + %t439 = icmp ne i32 %t438, 0 + br i1 %t439, label %then10564, label %endif10566 +then10564: + %t440 = getelementptr inbounds %S.lsp.FnRec, ptr %a432, i32 0, i32 1 + %t441 = load { ptr, i64, i64 }, ptr %t440 + %t442 = getelementptr inbounds %S.lsp.FnRec, ptr %a432, i32 0, i32 7 + %t443 = load { ptr, i64, i64 }, ptr %t442 + %t444 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t441, i64 2, { ptr, i64, i64 } %t443, { ptr, i64, i64 } { ptr @.str.6932, i64 0, i64 0 }) + call void @finch.json.Json.push(ptr %a7, %S.json.Json %t444) + store %S.json.Json %t444, ptr %a445 + call void @finch.drop.S_json_Json(ptr %a445) + br label %endif10566 +endif10566: + br label %each.step10562 +each.step10562: + %t446 = load i64, ptr %a424 + %t447 = add i64 %t446, 1 + store i64 %t447, ptr %a424 + br label %each.cond10560 +each.end10563: + call void @finch_str_drop(ptr %a377) + br label %endif10544 +endif10544: + br label %endif10541 +endif10541: + br label %endif10538 +endif10538: + %t448 = load %S.json.Json, ptr %a7 + %t449 = call %S.json.Json @finch.lsp.completionList(%S.json.Json %t448) + call void @finch_str_drop(ptr %a302) + call void @finch_str_drop(ptr %a102) + call void @finch_str_drop(ptr %a26) + call void @finch_str_drop(ptr %a11) + call void @finch.drop.S_json_Json(ptr %a7) + ret %S.json.Json %t449 +endif10442: + store %S.lsp.Names zeroinitializer, ptr %a450 + %t451 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 1 + store i64 0, ptr %a452 + br label %each.cond10567 +each.cond10567: + %t453 = getelementptr inbounds { ptr, i64, i64 }, ptr %t451, i32 0, i32 1 + %t454 = load i64, ptr %t453 + %t455 = load i64, ptr %a452 + %t456 = icmp slt i64 %t455, %t454 + br i1 %t456, label %each.body10568, label %each.end10570 +each.body10568: + %t457 = load ptr, ptr %t451 + %t458 = getelementptr inbounds %S.lsp.VarRec, ptr %t457, i64 %t455 + %t459 = load %S.lsp.VarRec, ptr %t458 + store %S.lsp.VarRec %t459, ptr %a460 + %t461 = getelementptr inbounds %S.lsp.VarRec, ptr %a460, i32 0, i32 3 + %t462 = load i64, ptr %t461 + %t463 = load i64, ptr %a4 + %t464 = icmp sle i64 %t462, %t463 + br label %logic.from10571 +logic.from10571: + br i1 %t464, label %logic.rhs10572, label %logic.end10573 +logic.rhs10572: + %t465 = load i64, ptr %a4 + %t466 = getelementptr inbounds %S.lsp.VarRec, ptr %a460, i32 0, i32 7 + %t467 = load i64, ptr %t466 + %t468 = add i64 %t467, 1 + %t469 = icmp sle i64 %t465, %t468 + br label %logic.rend10574 +logic.rend10574: + br label %logic.end10573 +logic.end10573: + %t470 = phi i1 [ false, %logic.from10571 ], [ %t469, %logic.rend10574 ] + br label %logic.from10575 +logic.from10575: + br i1 %t470, label %logic.rhs10576, label %logic.end10577 +logic.rhs10576: + %t471 = getelementptr inbounds %S.lsp.VarRec, ptr %a460, i32 0, i32 5 + %t472 = load { ptr, i64, i64 }, ptr %t471 + %t473 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t472, ptr %a474 + store { ptr, i64, i64 } %t473, ptr %a475 + %t476 = call i32 @finch_str_eq(ptr %a474, ptr %a475) + %t477 = icmp ne i32 %t476, 0 + br label %logic.rend10578 +logic.rend10578: + br label %logic.end10577 +logic.end10577: + %t478 = phi i1 [ false, %logic.from10575 ], [ %t477, %logic.rend10578 ] + br label %logic.from10579 +logic.from10579: + br i1 %t478, label %logic.rhs10580, label %logic.end10581 +logic.rhs10580: + %t479 = getelementptr inbounds %S.lsp.VarRec, ptr %a460, i32 0, i32 0 + %t480 = load { ptr, i64, i64 }, ptr %t479 + %t481 = call i1 @finch.lsp.Names.add(ptr %a450, { ptr, i64, i64 } %t480) + br label %logic.rend10582 +logic.rend10582: + br label %logic.end10581 +logic.end10581: + %t482 = phi i1 [ false, %logic.from10579 ], [ %t481, %logic.rend10582 ] + br i1 %t482, label %then10583, label %endif10585 +then10583: + %t483 = getelementptr inbounds %S.lsp.VarRec, ptr %a460, i32 0, i32 0 + %t484 = load { ptr, i64, i64 }, ptr %t483 + %t485 = getelementptr inbounds %S.lsp.VarRec, ptr %a460, i32 0, i32 1 + %t486 = load { ptr, i64, i64 }, ptr %t485 + %t487 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t484, i64 6, { ptr, i64, i64 } %t486, { ptr, i64, i64 } { ptr @.str.6933, i64 0, i64 0 }) + call void @finch.json.Json.push(ptr %a7, %S.json.Json %t487) + store %S.json.Json %t487, ptr %a488 + call void @finch.drop.S_json_Json(ptr %a488) + br label %endif10585 +endif10585: + br label %each.step10569 +each.step10569: + %t489 = load i64, ptr %a452 + %t490 = add i64 %t489, 1 + store i64 %t490, ptr %a452 + br label %each.cond10567 +each.end10570: + %t491 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 2 + store i64 0, ptr %a492 + br label %each.cond10586 +each.cond10586: + %t493 = getelementptr inbounds { ptr, i64, i64 }, ptr %t491, i32 0, i32 1 + %t494 = load i64, ptr %t493 + %t495 = load i64, ptr %a492 + %t496 = icmp slt i64 %t495, %t494 + br i1 %t496, label %each.body10587, label %each.end10589 +each.body10587: + %t497 = load ptr, ptr %t491 + %t498 = getelementptr inbounds %S.lsp.FnRec, ptr %t497, i64 %t495 + %t499 = load %S.lsp.FnRec, ptr %t498 + store %S.lsp.FnRec %t499, ptr %a500 + %t501 = getelementptr inbounds %S.lsp.FnRec, ptr %a500, i32 0, i32 2 + %t502 = getelementptr inbounds { ptr, i64, i64 }, ptr %t501, i32 0, i32 1 + %t503 = load i64, ptr %t502 + %t504 = icmp eq i64 %t503, 0 + br label %logic.from10590 +logic.from10590: + br i1 %t504, label %logic.rhs10591, label %logic.end10592 +logic.rhs10591: + %t505 = getelementptr inbounds %S.lsp.FnRec, ptr %a500, i32 0, i32 0 + %t506 = load { ptr, i64, i64 }, ptr %t505 + store { ptr, i64, i64 } %t506, ptr %a507 + store { ptr, i64, i64 } { ptr @.str.6934, i64 0, i64 0 }, ptr %a508 + %t509 = call i32 @finch_str_eq(ptr %a507, ptr %a508) + %t510 = icmp ne i32 %t509, 0 + br label %logic.rend10593 +logic.rend10593: + br label %logic.end10592 +logic.end10592: + %t511 = phi i1 [ false, %logic.from10590 ], [ %t510, %logic.rend10593 ] + br label %logic.from10594 +logic.from10594: + br i1 %t511, label %logic.rhs10595, label %logic.end10596 +logic.rhs10595: + %t512 = getelementptr inbounds %S.lsp.FnRec, ptr %a500, i32 0, i32 1 + %t513 = load { ptr, i64, i64 }, ptr %t512 + %t514 = call i1 @finch.lsp.Names.add(ptr %a450, { ptr, i64, i64 } %t513) + br label %logic.rend10597 +logic.rend10597: + br label %logic.end10596 +logic.end10596: + %t515 = phi i1 [ false, %logic.from10594 ], [ %t514, %logic.rend10597 ] + br i1 %t515, label %then10598, label %endif10600 +then10598: + %t516 = getelementptr inbounds %S.lsp.FnRec, ptr %a500, i32 0, i32 1 + %t517 = load { ptr, i64, i64 }, ptr %t516 + %t518 = getelementptr inbounds %S.lsp.FnRec, ptr %a500, i32 0, i32 7 %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.6724, 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.6725, i64 0, i64 0 }) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t526) - br label %endif10092 -endif10092: - br label %each.step10084 -each.step10084: - %t527 = load i64, ptr %a499 - %t528 = add i64 %t527, 1 - store i64 %t528, ptr %a499 - br label %each.cond10082 -each.end10085: - %t529 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 4 - store i64 0, ptr %a530 - br label %each.cond10093 -each.cond10093: - %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.body10094, label %each.end10096 -each.body10094: - %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.6726, 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.from10097 -logic.from10097: - br i1 %t544, label %logic.rhs10098, label %logic.end10099 -logic.rhs10098: - %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.rend10100 -logic.rend10100: - br label %logic.end10099 -logic.end10099: - %t548 = phi i1 [ false, %logic.from10097 ], [ %t547, %logic.rend10100 ] - br i1 %t548, label %then10101, label %endif10103 -then10101: - %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.6727, 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.6728, i64 0, i64 0 }) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t557) - br label %endif10103 -endif10103: - br label %each.step10095 -each.step10095: - %t558 = load i64, ptr %a530 - %t559 = add i64 %t558, 1 - store i64 %t559, ptr %a530 - br label %each.cond10093 -each.end10096: - %t560 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 5 - store i64 0, ptr %a561 - br label %each.cond10104 -each.cond10104: - %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.body10105, label %each.end10107 -each.body10105: - %t566 = load ptr, ptr %t560 - %t567 = getelementptr inbounds { ptr, i64, i64 }, ptr %t566, i64 %t564 + %t520 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t517, i64 3, { ptr, i64, i64 } %t519, { ptr, i64, i64 } { ptr @.str.6935, i64 0, i64 0 }) + call void @finch.json.Json.push(ptr %a7, %S.json.Json %t520) + store %S.json.Json %t520, ptr %a521 + call void @finch.drop.S_json_Json(ptr %a521) + br label %endif10600 +endif10600: + br label %each.step10588 +each.step10588: + %t522 = load i64, ptr %a492 + %t523 = add i64 %t522, 1 + store i64 %t523, ptr %a492 + br label %each.cond10586 +each.end10589: + %t524 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 3 + store i64 0, ptr %a525 + br label %each.cond10601 +each.cond10601: + %t526 = getelementptr inbounds { ptr, i64, i64 }, ptr %t524, i32 0, i32 1 + %t527 = load i64, ptr %t526 + %t528 = load i64, ptr %a525 + %t529 = icmp slt i64 %t528, %t527 + br i1 %t529, label %each.body10602, label %each.end10604 +each.body10602: + %t530 = load ptr, ptr %t524 + %t531 = getelementptr inbounds %S.lsp.StructRec, ptr %t530, i64 %t528 + %t532 = load %S.lsp.StructRec, ptr %t531 + store %S.lsp.StructRec %t532, ptr %a533 + %t534 = getelementptr inbounds %S.lsp.StructRec, ptr %a533, i32 0, i32 0 + %t535 = load { ptr, i64, i64 }, ptr %t534 + store { ptr, i64, i64 } %t535, ptr %a536 + store { ptr, i64, i64 } { ptr @.str.6936, i64 0, i64 0 }, ptr %a537 + %t538 = call i32 @finch_str_eq(ptr %a536, ptr %a537) + %t539 = icmp ne i32 %t538, 0 + br label %logic.from10605 +logic.from10605: + br i1 %t539, label %logic.rhs10606, label %logic.end10607 +logic.rhs10606: + %t540 = getelementptr inbounds %S.lsp.StructRec, ptr %a533, i32 0, i32 1 + %t541 = load { ptr, i64, i64 }, ptr %t540 + %t542 = call i1 @finch.lsp.Names.add(ptr %a450, { ptr, i64, i64 } %t541) + br label %logic.rend10608 +logic.rend10608: + br label %logic.end10607 +logic.end10607: + %t543 = phi i1 [ false, %logic.from10605 ], [ %t542, %logic.rend10608 ] + br i1 %t543, label %then10609, label %endif10611 +then10609: + %t544 = getelementptr inbounds %S.lsp.StructRec, ptr %a533, i32 0, i32 1 + %t545 = load { ptr, i64, i64 }, ptr %t544 + %t546 = getelementptr inbounds %S.lsp.StructRec, ptr %a533, i32 0, i32 1 + %t547 = load { ptr, i64, i64 }, ptr %t546 + store { ptr, i64, i64 } { ptr @.str.6937, i64 7, i64 0 }, ptr %a549 + store { ptr, i64, i64 } %t547, ptr %a550 + call void @finch_str_concat(ptr %a548, ptr %a549, ptr %a550) + %t551 = load { ptr, i64, i64 }, ptr %a548 + %t552 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t545, i64 22, { ptr, i64, i64 } %t551, { ptr, i64, i64 } { ptr @.str.6938, i64 0, i64 0 }) + store { ptr, i64, i64 } %t551, ptr %a553 + call void @finch_str_drop(ptr %a553) + call void @finch.json.Json.push(ptr %a7, %S.json.Json %t552) + store %S.json.Json %t552, ptr %a554 + call void @finch.drop.S_json_Json(ptr %a554) + br label %endif10611 +endif10611: + br label %each.step10603 +each.step10603: + %t555 = load i64, ptr %a525 + %t556 = add i64 %t555, 1 + store i64 %t556, ptr %a525 + br label %each.cond10601 +each.end10604: + %t557 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 4 + store i64 0, ptr %a558 + br label %each.cond10612 +each.cond10612: + %t559 = getelementptr inbounds { ptr, i64, i64 }, ptr %t557, i32 0, i32 1 + %t560 = load i64, ptr %t559 + %t561 = load i64, ptr %a558 + %t562 = icmp slt i64 %t561, %t560 + br i1 %t562, label %each.body10613, label %each.end10615 +each.body10613: + %t563 = load ptr, ptr %t557 + %t564 = getelementptr inbounds %S.lsp.EnumRec, ptr %t563, i64 %t561 + %t565 = load %S.lsp.EnumRec, ptr %t564 + store %S.lsp.EnumRec %t565, ptr %a566 + %t567 = getelementptr inbounds %S.lsp.EnumRec, ptr %a566, i32 0, i32 0 %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 %then10108, label %endif10110 -then10108: - %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.6729, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.6730, i64 0, i64 0 }) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t573) - br label %endif10110 -endif10110: - br label %each.step10106 -each.step10106: - %t574 = load i64, ptr %a561 - %t575 = add i64 %t574, 1 - store i64 %t575, ptr %a561 - br label %each.cond10104 -each.end10107: - %t576 = call { ptr, i64, i64 } @finch.docs.builtins() - store { ptr, i64, i64 } %t576, ptr %a577 - store i64 0, ptr %a578 - br label %each.cond10111 -each.cond10111: - %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.body10112, label %each.end10114 -each.body10112: - %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 %then10115, label %endif10117 -then10115: - %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 %endif10117 -endif10117: - br label %each.step10113 -each.step10113: - %t597 = load i64, ptr %a578 - %t598 = add i64 %t597, 1 - store i64 %t598, ptr %a578 - br label %each.cond10111 -each.end10114: - %t599 = call { ptr, i64, i64 } @finch.docs.keywords() - store { ptr, i64, i64 } %t599, ptr %a600 - store i64 0, ptr %a601 - br label %each.cond10118 -each.cond10118: - %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.body10119, label %each.end10121 -each.body10119: - %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 %then10122, label %endif10124 -then10122: - %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.6731, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.6732, i64 0, i64 0 }) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t613) - br label %endif10124 -endif10124: - br label %each.step10120 -each.step10120: - %t614 = load i64, ptr %a601 - %t615 = add i64 %t614, 1 - store i64 %t615, ptr %a601 - br label %each.cond10118 -each.end10121: - %t616 = call { ptr, i64, i64 } @finch.docs.typeNames() - store { ptr, i64, i64 } %t616, ptr %a617 - store i64 0, ptr %a618 - br label %each.cond10125 -each.cond10125: - %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.body10126, label %each.end10128 -each.body10126: - %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 %then10129, label %endif10131 -then10129: - %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.6733, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.6734, i64 0, i64 0 }) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t630) - br label %endif10131 -endif10131: - br label %each.step10127 -each.step10127: - %t631 = load i64, ptr %a618 - %t632 = add i64 %t631, 1 - store i64 %t632, ptr %a618 - br label %each.cond10125 -each.end10128: - %t633 = load %S.json.Json, ptr %a7 - %t634 = call %S.json.Json @finch.lsp.completionList(%S.json.Json %t633) - ret %S.json.Json %t634 + store { ptr, i64, i64 } { ptr @.str.6939, i64 0, i64 0 }, ptr %a570 + %t571 = call i32 @finch_str_eq(ptr %a569, ptr %a570) + %t572 = icmp ne i32 %t571, 0 + br label %logic.from10616 +logic.from10616: + br i1 %t572, label %logic.rhs10617, label %logic.end10618 +logic.rhs10617: + %t573 = getelementptr inbounds %S.lsp.EnumRec, ptr %a566, i32 0, i32 1 + %t574 = load { ptr, i64, i64 }, ptr %t573 + %t575 = call i1 @finch.lsp.Names.add(ptr %a450, { ptr, i64, i64 } %t574) + br label %logic.rend10619 +logic.rend10619: + br label %logic.end10618 +logic.end10618: + %t576 = phi i1 [ false, %logic.from10616 ], [ %t575, %logic.rend10619 ] + br i1 %t576, label %then10620, label %endif10622 +then10620: + %t577 = getelementptr inbounds %S.lsp.EnumRec, ptr %a566, i32 0, i32 1 + %t578 = load { ptr, i64, i64 }, ptr %t577 + %t579 = getelementptr inbounds %S.lsp.EnumRec, ptr %a566, i32 0, i32 1 + %t580 = load { ptr, i64, i64 }, ptr %t579 + store { ptr, i64, i64 } { ptr @.str.6940, i64 5, i64 0 }, ptr %a582 + store { ptr, i64, i64 } %t580, ptr %a583 + call void @finch_str_concat(ptr %a581, ptr %a582, ptr %a583) + %t584 = load { ptr, i64, i64 }, ptr %a581 + %t585 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t578, i64 13, { ptr, i64, i64 } %t584, { ptr, i64, i64 } { ptr @.str.6941, i64 0, i64 0 }) + store { ptr, i64, i64 } %t584, ptr %a586 + call void @finch_str_drop(ptr %a586) + call void @finch.json.Json.push(ptr %a7, %S.json.Json %t585) + store %S.json.Json %t585, ptr %a587 + call void @finch.drop.S_json_Json(ptr %a587) + br label %endif10622 +endif10622: + br label %each.step10614 +each.step10614: + %t588 = load i64, ptr %a558 + %t589 = add i64 %t588, 1 + store i64 %t589, ptr %a558 + br label %each.cond10612 +each.end10615: + %t590 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 5 + store i64 0, ptr %a591 + br label %each.cond10623 +each.cond10623: + %t592 = getelementptr inbounds { ptr, i64, i64 }, ptr %t590, i32 0, i32 1 + %t593 = load i64, ptr %t592 + %t594 = load i64, ptr %a591 + %t595 = icmp slt i64 %t594, %t593 + br i1 %t595, label %each.body10624, label %each.end10626 +each.body10624: + %t596 = load ptr, ptr %t590 + %t597 = getelementptr inbounds { ptr, i64, i64 }, ptr %t596, i64 %t594 + %t598 = load { ptr, i64, i64 }, ptr %t597 + store { ptr, i64, i64 } %t598, ptr %a599 + %t600 = load { ptr, i64, i64 }, ptr %a599 + %t601 = call i1 @finch.lsp.Names.add(ptr %a450, { ptr, i64, i64 } %t600) + br i1 %t601, label %then10627, label %endif10629 +then10627: + %t602 = load { ptr, i64, i64 }, ptr %a599 + %t603 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t602, i64 9, { ptr, i64, i64 } { ptr @.str.6942, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.6943, i64 0, i64 0 }) + call void @finch.json.Json.push(ptr %a7, %S.json.Json %t603) + store %S.json.Json %t603, ptr %a604 + call void @finch.drop.S_json_Json(ptr %a604) + br label %endif10629 +endif10629: + br label %each.step10625 +each.step10625: + %t605 = load i64, ptr %a591 + %t606 = add i64 %t605, 1 + store i64 %t606, ptr %a591 + br label %each.cond10623 +each.end10626: + %t607 = call { ptr, i64, i64 } @finch.docs.builtins() + store { ptr, i64, i64 } %t607, ptr %a608 + store i64 0, ptr %a609 + br label %each.cond10630 +each.cond10630: + %t610 = getelementptr inbounds { ptr, i64, i64 }, ptr %a608, i32 0, i32 1 + %t611 = load i64, ptr %t610 + %t612 = load i64, ptr %a609 + %t613 = icmp slt i64 %t612, %t611 + br i1 %t613, label %each.body10631, label %each.end10633 +each.body10631: + %t614 = load ptr, ptr %a608 + %t615 = getelementptr inbounds %S.docs.Doc, ptr %t614, i64 %t612 + %t616 = load %S.docs.Doc, ptr %t615 + store %S.docs.Doc %t616, ptr %a617 + %t618 = getelementptr inbounds %S.docs.Doc, ptr %a617, i32 0, i32 0 + %t619 = load { ptr, i64, i64 }, ptr %t618 + %t620 = call i1 @finch.lsp.Names.add(ptr %a450, { ptr, i64, i64 } %t619) + br i1 %t620, label %then10634, label %endif10636 +then10634: + %t621 = getelementptr inbounds %S.docs.Doc, ptr %a617, i32 0, i32 0 + %t622 = load { ptr, i64, i64 }, ptr %t621 + %t623 = getelementptr inbounds %S.docs.Doc, ptr %a617, i32 0, i32 1 + %t624 = load { ptr, i64, i64 }, ptr %t623 + %t625 = getelementptr inbounds %S.docs.Doc, ptr %a617, i32 0, i32 2 + %t626 = load { ptr, i64, i64 }, ptr %t625 + %t627 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t622, i64 3, { ptr, i64, i64 } %t624, { ptr, i64, i64 } %t626) + call void @finch.json.Json.push(ptr %a7, %S.json.Json %t627) + store %S.json.Json %t627, ptr %a628 + call void @finch.drop.S_json_Json(ptr %a628) + br label %endif10636 +endif10636: + br label %each.step10632 +each.step10632: + %t629 = load i64, ptr %a609 + %t630 = add i64 %t629, 1 + store i64 %t630, ptr %a609 + br label %each.cond10630 +each.end10633: + call void @finch.drop.arr_S_docs_Doc(ptr %a608) + %t631 = call { ptr, i64, i64 } @finch.docs.keywords() + store { ptr, i64, i64 } %t631, ptr %a632 + store i64 0, ptr %a633 + br label %each.cond10637 +each.cond10637: + %t634 = getelementptr inbounds { ptr, i64, i64 }, ptr %a632, i32 0, i32 1 + %t635 = load i64, ptr %t634 + %t636 = load i64, ptr %a633 + %t637 = icmp slt i64 %t636, %t635 + br i1 %t637, label %each.body10638, label %each.end10640 +each.body10638: + %t638 = load ptr, ptr %a632 + %t639 = getelementptr inbounds { ptr, i64, i64 }, ptr %t638, i64 %t636 + %t640 = load { ptr, i64, i64 }, ptr %t639 + store { ptr, i64, i64 } %t640, ptr %a641 + %t642 = load { ptr, i64, i64 }, ptr %a641 + %t643 = call i1 @finch.lsp.Names.add(ptr %a450, { ptr, i64, i64 } %t642) + br i1 %t643, label %then10641, label %endif10643 +then10641: + %t644 = load { ptr, i64, i64 }, ptr %a641 + %t645 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t644, i64 14, { ptr, i64, i64 } { ptr @.str.6944, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.6945, i64 0, i64 0 }) + call void @finch.json.Json.push(ptr %a7, %S.json.Json %t645) + store %S.json.Json %t645, ptr %a646 + call void @finch.drop.S_json_Json(ptr %a646) + br label %endif10643 +endif10643: + br label %each.step10639 +each.step10639: + %t647 = load i64, ptr %a633 + %t648 = add i64 %t647, 1 + store i64 %t648, ptr %a633 + br label %each.cond10637 +each.end10640: + call void @finch.drop.arr_str(ptr %a632) + %t649 = call { ptr, i64, i64 } @finch.docs.typeNames() + store { ptr, i64, i64 } %t649, ptr %a650 + store i64 0, ptr %a651 + br label %each.cond10644 +each.cond10644: + %t652 = getelementptr inbounds { ptr, i64, i64 }, ptr %a650, i32 0, i32 1 + %t653 = load i64, ptr %t652 + %t654 = load i64, ptr %a651 + %t655 = icmp slt i64 %t654, %t653 + br i1 %t655, label %each.body10645, label %each.end10647 +each.body10645: + %t656 = load ptr, ptr %a650 + %t657 = getelementptr inbounds { ptr, i64, i64 }, ptr %t656, i64 %t654 + %t658 = load { ptr, i64, i64 }, ptr %t657 + store { ptr, i64, i64 } %t658, ptr %a659 + %t660 = load { ptr, i64, i64 }, ptr %a659 + %t661 = call i1 @finch.lsp.Names.add(ptr %a450, { ptr, i64, i64 } %t660) + br i1 %t661, label %then10648, label %endif10650 +then10648: + %t662 = load { ptr, i64, i64 }, ptr %a659 + %t663 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t662, i64 25, { ptr, i64, i64 } { ptr @.str.6946, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.6947, i64 0, i64 0 }) + call void @finch.json.Json.push(ptr %a7, %S.json.Json %t663) + store %S.json.Json %t663, ptr %a664 + call void @finch.drop.S_json_Json(ptr %a664) + br label %endif10650 +endif10650: + br label %each.step10646 +each.step10646: + %t665 = load i64, ptr %a651 + %t666 = add i64 %t665, 1 + store i64 %t666, ptr %a651 + br label %each.cond10644 +each.end10647: + call void @finch.drop.arr_str(ptr %a650) + %t667 = load %S.json.Json, ptr %a7 + %t668 = call %S.json.Json @finch.lsp.completionList(%S.json.Json %t667) + call void @finch.drop.S_lsp_Names(ptr %a450) + call void @finch_str_drop(ptr %a26) + call void @finch_str_drop(ptr %a11) + call void @finch.drop.S_json_Json(ptr %a7) + ret %S.json.Json %t668 } define internal i1 @finch.lsp.Names.add(ptr %self, { ptr, i64, i64 } %p0) { @@ -90138,33 +107744,33 @@ entry: %t6 = load i64, ptr %t3 %t7 = load ptr, ptr %t2 store i64 0, ptr %a8 - br label %find.cond10132 -find.cond10132: + br label %find.cond10651 +find.cond10651: %t9 = load i64, ptr %a8 %t10 = icmp slt i64 %t9, %t6 - br i1 %t10, label %find.body10133, label %find.end10136 -find.body10133: + br i1 %t10, label %find.body10652, label %find.end10655 +find.body10652: %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.hit10134, label %find.next10135 -find.hit10134: + br i1 %t16, label %find.hit10653, label %find.next10654 +find.hit10653: store i64 %t9, ptr %a5 - br label %find.end10136 -find.next10135: + br label %find.end10655 +find.next10654: %t17 = add i64 %t9, 1 store i64 %t17, ptr %a8 - br label %find.cond10132 -find.end10136: + br label %find.cond10651 +find.end10655: %t18 = load i64, ptr %a5 %t19 = icmp sge i64 %t18, 0 - br i1 %t19, label %then10137, label %endif10139 -then10137: + br i1 %t19, label %then10656, label %endif10658 +then10656: ret i1 false -endif10139: +endif10658: %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 @@ -90185,20 +107791,18 @@ 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 + %a5 = 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.6735, 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.6736, 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 + call void @finch.json.Json.set(ptr %a3, { ptr, i64, i64 } { ptr @.str.6948, i64 12, i64 0 }, %S.json.Json %t4) + store %S.json.Json %t4, ptr %a5 + call void @finch.drop.S_json_Json(ptr %a5) + %t6 = load %S.json.Json, ptr %a1 + call void @finch.json.Json.set(ptr %a3, { ptr, i64, i64 } { ptr @.str.6949, i64 5, i64 0 }, %S.json.Json %t6) + %t7 = load %S.json.Json, ptr %a3 + ret %S.json.Json %t7 } define internal %S.json.Json @finch.lsp.signatureAt(%S.lsp.Analysis %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, i64 %p3, i64 %p4) { @@ -90230,34 +107834,46 @@ entry: %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 + %a149 = alloca %S.lsp.VarRec, align 16 + %a150 = 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 + %a154 = 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 + %a160 = alloca { ptr, i64, i64 }, align 16 %a165 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 + %a166 = 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 + %a174 = alloca { ptr, i64, i64 }, align 16 + %a175 = alloca { ptr, i64, i64 }, align 16 + %a178 = alloca { ptr, i64, i64 }, align 16 + %a180 = alloca i64, align 16 + %a188 = alloca %S.lsp.FnRec, align 16 + %a192 = alloca { ptr, i64, i64 }, align 16 + %a193 = alloca { ptr, i64, i64 }, align 16 + %a199 = alloca { ptr, i64, i64 }, align 16 + %a200 = alloca { ptr, i64, i64 }, 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 + %a209 = alloca %S.json.Json, align 16 + %a211 = alloca %S.json.Json, align 16 + %a213 = alloca i64, align 16 + %a221 = alloca { ptr, i64, i64 }, align 16 + %a226 = alloca %S.json.Json, align 16 + %a229 = alloca %S.json.Json, align 16 + %a235 = alloca %S.json.Json, align 16 + %a238 = alloca %S.json.Json, align 16 + %a241 = alloca %S.json.Json, align 16 + %a244 = alloca %S.json.Json, align 16 + %a251 = alloca { ptr, i64, i64 }, align 16 + %a252 = alloca %S.docs.Doc, align 16 + %a258 = alloca %S.json.Json, align 16 + %a262 = alloca %S.json.Json, align 16 + %a266 = alloca %S.json.Json, align 16 + %a268 = alloca %S.json.Json, align 16 + %a271 = alloca %S.json.Json, align 16 + %a274 = alloca %S.json.Json, align 16 + %a277 = 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 @@ -90274,17 +107890,17 @@ entry: %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 %then10140, label %endif10142 -then10140: + br i1 %t16, label %then10659, label %endif10661 +then10659: %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 %t18 = load i64, ptr %t17 store i64 %t18, ptr %a12 - br label %endif10142 -endif10142: + br label %endif10661 +endif10661: %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.6737, i64 671) + call void @finch_str_sub(ptr %a21, ptr %a20, i64 0, i64 %t22, ptr @.str.6950, i64 671) %t23 = load { ptr, i64, i64 }, ptr %a21 store { ptr, i64, i64 } %t23, ptr %a24 store i64 0, ptr %a25 @@ -90294,241 +107910,246 @@ endif10142: %t29 = load i64, ptr %t28 %t30 = sub i64 %t29, 1 store i64 %t30, ptr %a31 - br label %while.cond10143 -while.cond10143: + br label %while.cond10662 +while.cond10662: %t32 = load i64, ptr %a31 %t33 = icmp sge i64 %t32, 0 - br i1 %t33, label %while.body10144, label %while.end10145 -while.body10144: + br i1 %t33, label %while.body10663, label %while.end10664 +while.body10663: %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 %range10146, label %inrange10147 -range10146: - call void @finch_panic_index(ptr @.str.6738, i64 678, i64 %t34, i64 %t36) + br i1 %t37, label %range10665, label %inrange10666 +range10665: + call void @finch_panic_index(ptr @.str.6951, i64 678, i64 %t34, i64 %t36) unreachable -inrange10147: +inrange10666: %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.from10148 -logic.from10148: - br i1 %t43, label %logic.end10150, label %logic.rhs10149 -logic.rhs10149: + br label %logic.from10667 +logic.from10667: + br i1 %t43, label %logic.end10669, label %logic.rhs10668 +logic.rhs10668: %t44 = load i8, ptr %a41 %t45 = icmp eq i8 %t44, 93 - br label %logic.rend10151 -logic.rend10151: - br label %logic.end10150 -logic.end10150: - %t46 = phi i1 [ true, %logic.from10148 ], [ %t45, %logic.rend10151 ] - br i1 %t46, label %then10152, label %else10153 -then10152: + br label %logic.rend10670 +logic.rend10670: + br label %logic.end10669 +logic.end10669: + %t46 = phi i1 [ true, %logic.from10667 ], [ %t45, %logic.rend10670 ] + br i1 %t46, label %then10671, label %else10672 +then10671: %t47 = load i64, ptr %a25 %t48 = add i64 %t47, 1 store i64 %t48, ptr %a25 - br label %endif10154 -else10153: + br label %endif10673 +else10672: %t49 = load i8, ptr %a41 %t50 = icmp eq i8 %t49, 40 - br label %logic.from10155 -logic.from10155: - br i1 %t50, label %logic.end10157, label %logic.rhs10156 -logic.rhs10156: + br label %logic.from10674 +logic.from10674: + br i1 %t50, label %logic.end10676, label %logic.rhs10675 +logic.rhs10675: %t51 = load i8, ptr %a41 %t52 = icmp eq i8 %t51, 91 - br label %logic.rend10158 -logic.rend10158: - br label %logic.end10157 -logic.end10157: - %t53 = phi i1 [ true, %logic.from10155 ], [ %t52, %logic.rend10158 ] - br i1 %t53, label %then10159, label %else10160 -then10159: + br label %logic.rend10677 +logic.rend10677: + br label %logic.end10676 +logic.end10676: + %t53 = phi i1 [ true, %logic.from10674 ], [ %t52, %logic.rend10677 ] + br i1 %t53, label %then10678, label %else10679 +then10678: %t54 = load i64, ptr %a25 %t55 = icmp eq i64 %t54, 0 - br i1 %t55, label %then10162, label %else10163 -then10162: + br i1 %t55, label %then10681, label %else10682 +then10681: %t56 = load i8, ptr %a41 %t57 = icmp eq i8 %t56, 40 - br i1 %t57, label %then10165, label %endif10167 -then10165: + br i1 %t57, label %then10684, label %endif10686 +then10684: %t58 = load i64, ptr %a31 store i64 %t58, ptr %a27 - br label %while.end10145 -endif10167: - br label %endif10164 -else10163: + br label %while.end10664 +endif10686: + br label %endif10683 +else10682: %t59 = load i64, ptr %a25 %t60 = sub i64 %t59, 1 store i64 %t60, ptr %a25 - br label %endif10164 -endif10164: - br label %endif10161 -else10160: + br label %endif10683 +endif10683: + br label %endif10680 +else10679: %t61 = load i8, ptr %a41 %t62 = icmp eq i8 %t61, 44 - br label %logic.from10168 -logic.from10168: - br i1 %t62, label %logic.rhs10169, label %logic.end10170 -logic.rhs10169: + br label %logic.from10687 +logic.from10687: + br i1 %t62, label %logic.rhs10688, label %logic.end10689 +logic.rhs10688: %t63 = load i64, ptr %a25 %t64 = icmp eq i64 %t63, 0 - br label %logic.rend10171 -logic.rend10171: - br label %logic.end10170 -logic.end10170: - %t65 = phi i1 [ false, %logic.from10168 ], [ %t64, %logic.rend10171 ] - br i1 %t65, label %then10172, label %endif10174 -then10172: + br label %logic.rend10690 +logic.rend10690: + br label %logic.end10689 +logic.end10689: + %t65 = phi i1 [ false, %logic.from10687 ], [ %t64, %logic.rend10690 ] + br i1 %t65, label %then10691, label %endif10693 +then10691: %t66 = load i64, ptr %a26 %t67 = add i64 %t66, 1 store i64 %t67, ptr %a26 - br label %endif10174 -endif10174: - br label %endif10161 -endif10161: - br label %endif10154 -endif10154: + br label %endif10693 +endif10693: + br label %endif10680 +endif10680: + br label %endif10673 +endif10673: %t68 = load i64, ptr %a31 %t69 = sub i64 %t68, 1 store i64 %t69, ptr %a31 - br label %while.cond10143 -while.end10145: + br label %while.cond10662 +while.end10664: %t70 = load i64, ptr %a27 %t71 = icmp slt i64 %t70, 0 - br i1 %t71, label %then10175, label %endif10177 -then10175: + br i1 %t71, label %then10694, label %endif10696 +then10694: %t72 = call %S.json.Json @finch.json.new_null() + call void @finch_str_drop(ptr %a24) + call void @finch_str_drop(ptr %a9) ret %S.json.Json %t72 -endif10177: +endif10696: %t73 = load i64, ptr %a27 store i64 %t73, ptr %a74 %t75 = load i64, ptr %a74 store i64 %t75, ptr %a76 - br label %while.cond10178 -while.cond10178: + br label %while.cond10697 +while.cond10697: %t77 = load i64, ptr %a76 %t78 = icmp sgt i64 %t77, 0 - br label %logic.from10181 -logic.from10181: - br i1 %t78, label %logic.rhs10182, label %logic.end10183 -logic.rhs10182: + br label %logic.from10700 +logic.from10700: + br i1 %t78, label %logic.rhs10701, label %logic.end10702 +logic.rhs10701: %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 %range10184, label %inrange10185 -range10184: - call void @finch_panic_index(ptr @.str.6739, i64 700, i64 %t80, i64 %t82) + br i1 %t83, label %range10703, label %inrange10704 +range10703: + call void @finch_panic_index(ptr @.str.6952, i64 700, i64 %t80, i64 %t82) unreachable -inrange10185: +inrange10704: %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.rend10186 -logic.rend10186: - br label %logic.end10183 -logic.end10183: - %t88 = phi i1 [ false, %logic.from10181 ], [ %t87, %logic.rend10186 ] - br i1 %t88, label %while.body10179, label %while.end10180 -while.body10179: + br label %logic.rend10705 +logic.rend10705: + br label %logic.end10702 +logic.end10702: + %t88 = phi i1 [ false, %logic.from10700 ], [ %t87, %logic.rend10705 ] + br i1 %t88, label %while.body10698, label %while.end10699 +while.body10698: %t89 = load i64, ptr %a76 %t90 = sub i64 %t89, 1 store i64 %t90, ptr %a76 - br label %while.cond10178 -while.end10180: + br label %while.cond10697 +while.end10699: %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.6740, i64 703) + call void @finch_str_sub(ptr %a93, ptr %a92, i64 %t94, i64 %t95, ptr @.str.6953, 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 %then10187, label %endif10189 -then10187: + br i1 %t100, label %then10706, label %endif10708 +then10706: %t101 = call %S.json.Json @finch.json.new_null() + call void @finch_str_drop(ptr %a97) + call void @finch_str_drop(ptr %a24) + call void @finch_str_drop(ptr %a9) ret %S.json.Json %t101 -endif10189: - store { ptr, i64, i64 } { ptr @.str.6741, i64 0, i64 0 }, ptr %a102 +endif10708: + store { ptr, i64, i64 } { ptr @.str.6954, i64 0, i64 0 }, ptr %a102 %t103 = load i64, ptr %a76 %t104 = icmp sgt i64 %t103, 0 - br label %logic.from10190 -logic.from10190: - br i1 %t104, label %logic.rhs10191, label %logic.end10192 -logic.rhs10191: + br label %logic.from10709 +logic.from10709: + br i1 %t104, label %logic.rhs10710, label %logic.end10711 +logic.rhs10710: %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 %range10193, label %inrange10194 -range10193: - call void @finch_panic_index(ptr @.str.6742, i64 708, i64 %t106, i64 %t108) + br i1 %t109, label %range10712, label %inrange10713 +range10712: + call void @finch_panic_index(ptr @.str.6955, i64 708, i64 %t106, i64 %t108) unreachable -inrange10194: +inrange10713: %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.rend10195 -logic.rend10195: - br label %logic.end10192 -logic.end10192: - %t114 = phi i1 [ false, %logic.from10190 ], [ %t113, %logic.rend10195 ] - br i1 %t114, label %then10196, label %endif10198 -then10196: + br label %logic.rend10714 +logic.rend10714: + br label %logic.end10711 +logic.end10711: + %t114 = phi i1 [ false, %logic.from10709 ], [ %t113, %logic.rend10714 ] + br i1 %t114, label %then10715, label %endif10717 +then10715: %t115 = load i64, ptr %a76 %t116 = sub i64 %t115, 1 store i64 %t116, ptr %a117 - br label %while.cond10199 -while.cond10199: + br label %while.cond10718 +while.cond10718: %t118 = load i64, ptr %a117 %t119 = icmp sgt i64 %t118, 0 - br label %logic.from10202 -logic.from10202: - br i1 %t119, label %logic.rhs10203, label %logic.end10204 -logic.rhs10203: + br label %logic.from10721 +logic.from10721: + br i1 %t119, label %logic.rhs10722, label %logic.end10723 +logic.rhs10722: %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 %range10205, label %inrange10206 -range10205: - call void @finch_panic_index(ptr @.str.6743, i64 711, i64 %t121, i64 %t123) + br i1 %t124, label %range10724, label %inrange10725 +range10724: + call void @finch_panic_index(ptr @.str.6956, i64 711, i64 %t121, i64 %t123) unreachable -inrange10206: +inrange10725: %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.rend10207 -logic.rend10207: - br label %logic.end10204 -logic.end10204: - %t129 = phi i1 [ false, %logic.from10202 ], [ %t128, %logic.rend10207 ] - br i1 %t129, label %while.body10200, label %while.end10201 -while.body10200: + br label %logic.rend10726 +logic.rend10726: + br label %logic.end10723 +logic.end10723: + %t129 = phi i1 [ false, %logic.from10721 ], [ %t128, %logic.rend10726 ] + br i1 %t129, label %while.body10719, label %while.end10720 +while.body10719: %t130 = load i64, ptr %a117 %t131 = sub i64 %t130, 1 store i64 %t131, ptr %a117 - br label %while.cond10199 -while.end10201: + br label %while.cond10718 +while.end10720: %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.6744, i64 714) + call void @finch_str_sub(ptr %a134, ptr %a133, i64 %t135, i64 %t137, ptr @.str.6957, i64 714) %t138 = load { ptr, i64, i64 }, ptr %a134 store { ptr, i64, i64 } %t138, ptr %a139 %t140 = load %S.lsp.Analysis, ptr %a1 @@ -90540,190 +108161,238 @@ while.end10201: 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.6746, 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.from10208 -logic.from10208: - br i1 %t155, label %logic.rhs10209, label %logic.end10210 -logic.rhs10209: - %t156 = load { ptr, i64, i64 }, ptr %a149 - store { ptr, i64, i64 } %t156, ptr %a157 - store { ptr, i64, i64 } { ptr @.str.6748, 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.rend10211 -logic.rend10211: - br label %logic.end10210 -logic.end10210: - %t162 = phi i1 [ false, %logic.from10208 ], [ %t161, %logic.rend10211 ] - br i1 %t162, label %then10212, label %endif10214 -then10212: - %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.6749, i64 717) - %t169 = load { ptr, i64, i64 }, ptr %a165 - store { ptr, i64, i64 } %t169, ptr %a149 - br label %endif10214 -endif10214: - %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 %endif10198 -endif10198: - %t174 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 2 - store i64 0, ptr %a175 - br label %each.cond10215 -each.cond10215: - %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.body10216, label %each.end10218 -each.body10216: - %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.from10219 -logic.from10219: - br i1 %t190, label %logic.rhs10220, label %logic.end10221 -logic.rhs10220: - %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.rend10222 -logic.rend10222: - br label %logic.end10221 -logic.end10221: - %t198 = phi i1 [ false, %logic.from10219 ], [ %t197, %logic.rend10222 ] - br i1 %t198, label %then10223, label %endif10225 -then10223: - %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.6750, i64 5, i64 0 }, %S.json.Json %t203) - %t204 = call %S.json.Json @finch.json.new_list() + store %S.lsp.VarRec %t144, ptr %a149 + call void @finch.drop.S_lsp_VarRec(ptr %a149) + store { ptr, i64, i64 } %t148, ptr %a150 + %t151 = load { ptr, i64, i64 }, ptr %a150 + store { ptr, i64, i64 } %t151, ptr %a152 + store { ptr, i64, i64 } { ptr @.str.6959, i64 4, i64 0 }, ptr %a154 + %t155 = call i32 @finch_str_starts(ptr %a152, ptr %a154) + %t156 = icmp ne i32 %t155, 0 + br label %logic.from10727 +logic.from10727: + br i1 %t156, label %logic.rhs10728, label %logic.end10729 +logic.rhs10728: + %t157 = load { ptr, i64, i64 }, ptr %a150 + store { ptr, i64, i64 } %t157, ptr %a158 + store { ptr, i64, i64 } { ptr @.str.6961, i64 1, i64 0 }, ptr %a160 + %t161 = call i32 @finch_str_ends(ptr %a158, ptr %a160) + %t162 = icmp ne i32 %t161, 0 + br label %logic.rend10730 +logic.rend10730: + br label %logic.end10729 +logic.end10729: + %t163 = phi i1 [ false, %logic.from10727 ], [ %t162, %logic.rend10730 ] + br i1 %t163, label %then10731, label %endif10733 +then10731: + %t164 = load { ptr, i64, i64 }, ptr %a150 + store { ptr, i64, i64 } %t164, ptr %a165 + %t167 = getelementptr inbounds { ptr, i64, i64 }, ptr %a150, i32 0, i32 1 + %t168 = load i64, ptr %t167 + %t169 = sub i64 %t168, 1 + call void @finch_str_sub(ptr %a166, ptr %a165, i64 4, i64 %t169, ptr @.str.6962, i64 717) + %t170 = load { ptr, i64, i64 }, ptr %a166 + %t171 = load { ptr, i64, i64 }, ptr %a150 + store { ptr, i64, i64 } %t170, ptr %a150 + store { ptr, i64, i64 } %t171, ptr %a172 + call void @finch_str_drop(ptr %a172) + br label %endif10733 +endif10733: + %t173 = load { ptr, i64, i64 }, ptr %a150 + store { ptr, i64, i64 } %t173, ptr %a174 + call void @finch_str_copy(ptr %a175, ptr %a174) + %t176 = load { ptr, i64, i64 }, ptr %a175 + %t177 = load { ptr, i64, i64 }, ptr %a102 + store { ptr, i64, i64 } %t176, ptr %a102 + store { ptr, i64, i64 } %t177, ptr %a178 + call void @finch_str_drop(ptr %a178) + call void @finch_str_drop(ptr %a150) + call void @finch_str_drop(ptr %a139) + br label %endif10717 +endif10717: + %t179 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 2 + store i64 0, ptr %a180 + br label %each.cond10734 +each.cond10734: + %t181 = getelementptr inbounds { ptr, i64, i64 }, ptr %t179, i32 0, i32 1 + %t182 = load i64, ptr %t181 + %t183 = load i64, ptr %a180 + %t184 = icmp slt i64 %t183, %t182 + br i1 %t184, label %each.body10735, label %each.end10737 +each.body10735: + %t185 = load ptr, ptr %t179 + %t186 = getelementptr inbounds %S.lsp.FnRec, ptr %t185, i64 %t183 + %t187 = load %S.lsp.FnRec, ptr %t186 + store %S.lsp.FnRec %t187, ptr %a188 + %t189 = getelementptr inbounds %S.lsp.FnRec, ptr %a188, i32 0, i32 1 + %t190 = load { ptr, i64, i64 }, ptr %t189 + %t191 = load { ptr, i64, i64 }, ptr %a97 + store { ptr, i64, i64 } %t190, ptr %a192 + store { ptr, i64, i64 } %t191, ptr %a193 + %t194 = call i32 @finch_str_eq(ptr %a192, ptr %a193) + %t195 = icmp ne i32 %t194, 0 + br label %logic.from10738 +logic.from10738: + br i1 %t195, label %logic.rhs10739, label %logic.end10740 +logic.rhs10739: + %t196 = getelementptr inbounds %S.lsp.FnRec, ptr %a188, i32 0, i32 2 + %t197 = load { ptr, i64, i64 }, ptr %t196 + %t198 = load { ptr, i64, i64 }, ptr %a102 + store { ptr, i64, i64 } %t197, ptr %a199 + store { ptr, i64, i64 } %t198, ptr %a200 + %t201 = call i32 @finch_str_eq(ptr %a199, ptr %a200) + %t202 = icmp ne i32 %t201, 0 + br label %logic.rend10741 +logic.rend10741: + br label %logic.end10740 +logic.end10740: + %t203 = phi i1 [ false, %logic.from10738 ], [ %t202, %logic.rend10741 ] + br i1 %t203, label %then10742, label %endif10744 +then10742: + %t204 = call %S.json.Json @finch.json.new_object() 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.cond10226 -each.cond10226: - %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.body10227, label %each.end10229 -each.body10227: - %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 %then10230, label %endif10232 -then10230: - %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.6751, 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 %endif10232 -endif10232: - br label %each.step10228 -each.step10228: - %t224 = load i64, ptr %a207 - %t225 = add i64 %t224, 1 - store i64 %t225, ptr %a207 - br label %each.cond10226 -each.end10229: - %t226 = load %S.json.Json, ptr %a205 - call void @finch.json.Json.set(ptr %a200, { ptr, i64, i64 } { ptr @.str.6752, 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.6753, 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.6754, 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.6755, i64 15, i64 0 }, %S.json.Json %t235) - %t236 = load %S.json.Json, ptr %a231 - ret %S.json.Json %t236 -endif10225: - br label %each.step10217 -each.step10217: - %t237 = load i64, ptr %a175 - %t238 = add i64 %t237, 1 - store i64 %t238, ptr %a175 - br label %each.cond10215 -each.end10218: - %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 %then10233, label %endif10235 -then10233: - %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.6756, 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.6757, 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.6758, 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.6759, 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.6760, i64 15, i64 0 }, %S.json.Json %t263) - %t264 = load %S.json.Json, ptr %a259 - ret %S.json.Json %t264 -endif10235: - %t265 = call %S.json.Json @finch.json.new_null() - ret %S.json.Json %t265 + %t206 = getelementptr inbounds %S.lsp.FnRec, ptr %a188, i32 0, i32 7 + %t207 = load { ptr, i64, i64 }, ptr %t206 + %t208 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t207) + call void @finch.json.Json.set(ptr %a205, { ptr, i64, i64 } { ptr @.str.6963, i64 5, i64 0 }, %S.json.Json %t208) + store %S.json.Json %t208, ptr %a209 + call void @finch.drop.S_json_Json(ptr %a209) + %t210 = call %S.json.Json @finch.json.new_list() + store %S.json.Json %t210, ptr %a211 + %t212 = getelementptr inbounds %S.lsp.FnRec, ptr %a188, i32 0, i32 8 + store i64 0, ptr %a213 + br label %each.cond10745 +each.cond10745: + %t214 = getelementptr inbounds { ptr, i64, i64 }, ptr %t212, i32 0, i32 1 + %t215 = load i64, ptr %t214 + %t216 = load i64, ptr %a213 + %t217 = icmp slt i64 %t216, %t215 + br i1 %t217, label %each.body10746, label %each.end10748 +each.body10746: + %t218 = load ptr, ptr %t212 + %t219 = getelementptr inbounds { ptr, i64, i64 }, ptr %t218, i64 %t216 + %t220 = load { ptr, i64, i64 }, ptr %t219 + store { ptr, i64, i64 } %t220, ptr %a221 + %t222 = getelementptr inbounds { ptr, i64, i64 }, ptr %a221, i32 0, i32 1 + %t223 = load i64, ptr %t222 + %t224 = icmp sgt i64 %t223, 0 + br i1 %t224, label %then10749, label %endif10751 +then10749: + %t225 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t225, ptr %a226 + %t227 = load { ptr, i64, i64 }, ptr %a221 + %t228 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t227) + call void @finch.json.Json.set(ptr %a226, { ptr, i64, i64 } { ptr @.str.6964, i64 5, i64 0 }, %S.json.Json %t228) + store %S.json.Json %t228, ptr %a229 + call void @finch.drop.S_json_Json(ptr %a229) + %t230 = load %S.json.Json, ptr %a226 + call void @finch.json.Json.push(ptr %a211, %S.json.Json %t230) + call void @finch.drop.S_json_Json(ptr %a226) + br label %endif10751 +endif10751: + br label %each.step10747 +each.step10747: + %t231 = load i64, ptr %a213 + %t232 = add i64 %t231, 1 + store i64 %t232, ptr %a213 + br label %each.cond10745 +each.end10748: + %t233 = load %S.json.Json, ptr %a211 + call void @finch.json.Json.set(ptr %a205, { ptr, i64, i64 } { ptr @.str.6965, i64 10, i64 0 }, %S.json.Json %t233) + %t234 = call %S.json.Json @finch.json.new_list() + store %S.json.Json %t234, ptr %a235 + %t236 = load %S.json.Json, ptr %a205 + call void @finch.json.Json.push(ptr %a235, %S.json.Json %t236) + %t237 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t237, ptr %a238 + %t239 = load %S.json.Json, ptr %a235 + call void @finch.json.Json.set(ptr %a238, { ptr, i64, i64 } { ptr @.str.6966, i64 10, i64 0 }, %S.json.Json %t239) + %t240 = call %S.json.Json @finch.lsp.num(i64 0) + call void @finch.json.Json.set(ptr %a238, { ptr, i64, i64 } { ptr @.str.6967, i64 15, i64 0 }, %S.json.Json %t240) + store %S.json.Json %t240, ptr %a241 + call void @finch.drop.S_json_Json(ptr %a241) + %t242 = load i64, ptr %a26 + %t243 = call %S.json.Json @finch.lsp.num(i64 %t242) + call void @finch.json.Json.set(ptr %a238, { ptr, i64, i64 } { ptr @.str.6968, i64 15, i64 0 }, %S.json.Json %t243) + store %S.json.Json %t243, ptr %a244 + call void @finch.drop.S_json_Json(ptr %a244) + %t245 = load %S.json.Json, ptr %a238 + call void @finch.drop.S_json_Json(ptr %a235) + call void @finch.drop.S_json_Json(ptr %a211) + call void @finch.drop.S_json_Json(ptr %a205) + call void @finch_str_drop(ptr %a102) + call void @finch_str_drop(ptr %a97) + call void @finch_str_drop(ptr %a24) + call void @finch_str_drop(ptr %a9) + ret %S.json.Json %t245 +endif10744: + br label %each.step10736 +each.step10736: + %t246 = load i64, ptr %a180 + %t247 = add i64 %t246, 1 + store i64 %t247, ptr %a180 + br label %each.cond10734 +each.end10737: + %t248 = call { ptr, i64, i64 } @finch.docs.builtins() + %t249 = load { ptr, i64, i64 }, ptr %a97 + %t250 = call %S.docs.Doc @finch.docs.find({ ptr, i64, i64 } %t248, { ptr, i64, i64 } %t249) + store { ptr, i64, i64 } %t248, ptr %a251 + call void @finch.drop.arr_S_docs_Doc(ptr %a251) + store %S.docs.Doc %t250, ptr %a252 + %t253 = getelementptr inbounds %S.docs.Doc, ptr %a252, i32 0, i32 0 + %t254 = getelementptr inbounds { ptr, i64, i64 }, ptr %t253, i32 0, i32 1 + %t255 = load i64, ptr %t254 + %t256 = icmp sgt i64 %t255, 0 + br i1 %t256, label %then10752, label %endif10754 +then10752: + %t257 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t257, ptr %a258 + %t259 = getelementptr inbounds %S.docs.Doc, ptr %a252, i32 0, i32 1 + %t260 = load { ptr, i64, i64 }, ptr %t259 + %t261 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t260) + call void @finch.json.Json.set(ptr %a258, { ptr, i64, i64 } { ptr @.str.6969, i64 5, i64 0 }, %S.json.Json %t261) + store %S.json.Json %t261, ptr %a262 + call void @finch.drop.S_json_Json(ptr %a262) + %t263 = getelementptr inbounds %S.docs.Doc, ptr %a252, i32 0, i32 2 + %t264 = load { ptr, i64, i64 }, ptr %t263 + %t265 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t264) + call void @finch.json.Json.set(ptr %a258, { ptr, i64, i64 } { ptr @.str.6970, i64 13, i64 0 }, %S.json.Json %t265) + store %S.json.Json %t265, ptr %a266 + call void @finch.drop.S_json_Json(ptr %a266) + %t267 = call %S.json.Json @finch.json.new_list() + store %S.json.Json %t267, ptr %a268 + %t269 = load %S.json.Json, ptr %a258 + call void @finch.json.Json.push(ptr %a268, %S.json.Json %t269) + %t270 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t270, ptr %a271 + %t272 = load %S.json.Json, ptr %a268 + call void @finch.json.Json.set(ptr %a271, { ptr, i64, i64 } { ptr @.str.6971, i64 10, i64 0 }, %S.json.Json %t272) + %t273 = call %S.json.Json @finch.lsp.num(i64 0) + call void @finch.json.Json.set(ptr %a271, { ptr, i64, i64 } { ptr @.str.6972, i64 15, i64 0 }, %S.json.Json %t273) + store %S.json.Json %t273, ptr %a274 + call void @finch.drop.S_json_Json(ptr %a274) + %t275 = load i64, ptr %a26 + %t276 = call %S.json.Json @finch.lsp.num(i64 %t275) + call void @finch.json.Json.set(ptr %a271, { ptr, i64, i64 } { ptr @.str.6973, i64 15, i64 0 }, %S.json.Json %t276) + store %S.json.Json %t276, ptr %a277 + call void @finch.drop.S_json_Json(ptr %a277) + %t278 = load %S.json.Json, ptr %a271 + call void @finch.drop.S_json_Json(ptr %a268) + call void @finch.drop.S_json_Json(ptr %a258) + call void @finch.drop.S_docs_Doc(ptr %a252) + call void @finch_str_drop(ptr %a102) + call void @finch_str_drop(ptr %a97) + call void @finch_str_drop(ptr %a24) + call void @finch_str_drop(ptr %a9) + ret %S.json.Json %t278 +endif10754: + %t279 = call %S.json.Json @finch.json.new_null() + call void @finch.drop.S_docs_Doc(ptr %a252) + call void @finch_str_drop(ptr %a102) + call void @finch_str_drop(ptr %a97) + call void @finch_str_drop(ptr %a24) + call void @finch_str_drop(ptr %a9) + ret %S.json.Json %t279 } define internal { ptr, i64, i64 } @finch.lsp.textOf(%S.json.Json %p0) { @@ -90732,11 +108401,13 @@ entry: %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.6761, i64 12, i64 0 }) + %t2 = call %S.json.Json @finch.json.Json.get(ptr %a1, { ptr, i64, i64 } { ptr @.str.6974, 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.6762, i64 4, i64 0 }) + %t4 = call %S.json.Json @finch.json.Json.get(ptr %a3, { ptr, i64, i64 } { ptr @.str.6975, i64 4, i64 0 }) + call void @finch.drop.S_json_Json(ptr %a3) store %S.json.Json %t4, ptr %a5 - %t6 = call { ptr, i64, i64 } @finch.json.Json.str_or(ptr %a5, { ptr, i64, i64 } { ptr @.str.6763, i64 0, i64 0 }) + %t6 = call { ptr, i64, i64 } @finch.json.Json.str_or(ptr %a5, { ptr, i64, i64 } { ptr @.str.6976, i64 0, i64 0 }) + call void @finch.drop.S_json_Json(ptr %a5) ret { ptr, i64, i64 } %t6 } @@ -90745,13 +108416,18 @@ entry: %a1 = alloca %S.json.Json, align 16 %a3 = alloca %S.json.Json, align 16 %a5 = alloca %S.json.Json, align 16 + %a8 = 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.6764, i64 12, i64 0 }) + %t2 = call %S.json.Json @finch.json.Json.get(ptr %a1, { ptr, i64, i64 } { ptr @.str.6977, 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.6765, i64 3, i64 0 }) + %t4 = call %S.json.Json @finch.json.Json.get(ptr %a3, { ptr, i64, i64 } { ptr @.str.6978, i64 3, i64 0 }) + call void @finch.drop.S_json_Json(ptr %a3) store %S.json.Json %t4, ptr %a5 - %t6 = call { ptr, i64, i64 } @finch.json.Json.str_or(ptr %a5, { ptr, i64, i64 } { ptr @.str.6766, i64 0, i64 0 }) + %t6 = call { ptr, i64, i64 } @finch.json.Json.str_or(ptr %a5, { ptr, i64, i64 } { ptr @.str.6979, i64 0, i64 0 }) + call void @finch.drop.S_json_Json(ptr %a5) %t7 = call { ptr, i64, i64 } @finch.lsp.uriToPath({ ptr, i64, i64 } %t6) + store { ptr, i64, i64 } %t6, ptr %a8 + call void @finch_str_drop(ptr %a8) ret { ptr, i64, i64 } %t7 } @@ -90765,277 +108441,314 @@ entry: %a11 = alloca { ptr, i64, i64 }, align 16 %a12 = alloca { ptr, i64, i64 }, align 16 %a16 = alloca %S.json.Json, align 16 + %a18 = alloca %S.json.Json, align 16 + %a20 = 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 + %a26 = alloca %S.json.Json, align 16 + %a28 = alloca %S.json.Json, align 16 + %a30 = alloca %S.json.Json, align 16 + %a34 = alloca %S.json.Json, align 16 + %a36 = alloca %S.json.Json, align 16 + %a38 = 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 + %a44 = alloca %S.json.Json, align 16 + %a47 = alloca %S.json.Json, align 16 + %a49 = alloca %S.json.Json, 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 + %a54 = alloca { ptr, i64, i64 }, align 16 + %a60 = alloca %S.json.Json, align 16 + %a61 = alloca { ptr, i64, i64 }, align 16 + %a62 = alloca { ptr, i64, i64 }, align 16 + %a67 = alloca { ptr, i64, i64 }, align 16 + %a68 = alloca { ptr, i64, i64 }, align 16 + %a73 = alloca { ptr, i64, i64 }, align 16 + %a78 = alloca { ptr, i64, i64 }, align 16 + %a79 = alloca i32, align 16 + %a90 = alloca { ptr, i64, i64 }, align 16 + %a92 = alloca { ptr, i64, i64 }, align 16 + %a93 = alloca { ptr, i64, i64 }, align 16 + %a98 = alloca { ptr, i64, i64 }, align 16 + %a100 = alloca %S.json.Json, align 16 + %a106 = alloca %S.json.Json, align 16 + %a108 = alloca %S.json.Json, align 16 + %a112 = alloca { ptr, i64, i64 }, align 16 + %a113 = alloca i32, align 16 + %a124 = 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 + %a139 = 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 + %a148 = alloca { ptr, i64, i64 }, align 16 + %a158 = 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 + %a177 = alloca %S.json.Json, align 16 + %a181 = alloca { ptr, i64, i64 }, align 16 + %a182 = alloca %S.json.Json, align 16 + %a184 = alloca %S.json.Json, align 16 + %a186 = alloca { ptr, i64, i64 }, align 16 + %a187 = alloca { ptr, i64, i64 }, align 16 + %a190 = alloca { ptr, i64, i64 }, align 16 + %a191 = alloca { ptr, i64, i64 }, align 16 %a194 = alloca { ptr, i64, i64 }, align 16 + %a195 = alloca { ptr, i64, i64 }, align 16 + %a198 = alloca { ptr, i64, i64 }, align 16 + %a199 = 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 + %a203 = alloca { ptr, i64, i64 }, align 16 + %a208 = alloca { ptr, i64, i64 }, align 16 + %a210 = alloca %S.json.Json, align 16 + %a212 = alloca %S.json.Json, align 16 + %a215 = alloca i64, align 16 + %a217 = alloca %S.json.Json, align 16 + %a219 = alloca %S.json.Json, align 16 + %a222 = alloca i64, align 16 + %a225 = alloca { ptr, i64, i64 }, align 16 + %a231 = alloca %S.json.Json, align 16 %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 + %a237 = alloca { ptr, i64, i64 }, align 16 %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 + %a244 = alloca %S.lsp.Analysis, align 16 + %a245 = alloca %S.lsp.Analysis, align 16 + %a247 = alloca %S.lsp.Analysis, align 16 %a248 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 + %a251 = alloca { ptr, i64, i64 }, align 16 + %a256 = alloca { ptr, i64, i64 }, align 16 %a259 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 + %a260 = alloca { ptr, i64, i64 }, align 16 + %a266 = alloca { ptr, i64, i64 }, align 16 + %a267 = 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 + %a282 = alloca %S.json.Json, align 16 + %a283 = alloca { ptr, i64, i64 }, align 16 + %a284 = alloca { ptr, i64, i64 }, align 16 + %a293 = alloca %S.json.Json, align 16 + %a294 = alloca { ptr, i64, i64 }, align 16 + %a295 = alloca { ptr, i64, i64 }, align 16 + %a305 = alloca %S.json.Json, align 16 + %a306 = alloca { ptr, i64, i64 }, align 16 + %a307 = alloca { ptr, i64, i64 }, align 16 + %a314 = alloca %S.json.Json, align 16 + %a322 = alloca %S.json.Json, align 16 + %a328 = 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.6767, i64 6, i64 0 }) + %t2 = call %S.json.Json @finch.json.Json.get(ptr %a1, { ptr, i64, i64 } { ptr @.str.6980, 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.6768, i64 0, i64 0 }) + %t4 = call { ptr, i64, i64 } @finch.json.Json.str_or(ptr %a3, { ptr, i64, i64 } { ptr @.str.6981, i64 0, i64 0 }) + call void @finch.drop.S_json_Json(ptr %a3) store { ptr, i64, i64 } %t4, ptr %a5 - %t6 = call %S.json.Json @finch.json.Json.get(ptr %a1, { ptr, i64, i64 } { ptr @.str.6769, i64 6, i64 0 }) + %t6 = call %S.json.Json @finch.json.Json.get(ptr %a1, { ptr, i64, i64 } { ptr @.str.6982, 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.6770, i64 2, i64 0 }) + %t8 = call %S.json.Json @finch.json.Json.get(ptr %a1, { ptr, i64, i64 } { ptr @.str.6983, 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.6771, i64 10, i64 0 }, ptr %a12 + store { ptr, i64, i64 } { ptr @.str.6984, 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.arm10237, label %match.next10238 -match.arm10237: + br i1 %t14, label %match.arm10756, label %match.next10757 +match.arm10756: %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.6772, 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.6773, i64 13, i64 0 }, %S.json.Json %t18) + call void @finch.json.Json.set(ptr %a16, { ptr, i64, i64 } { ptr @.str.6985, i64 16, i64 0 }, %S.json.Json %t17) + store %S.json.Json %t17, ptr %a18 + call void @finch.drop.S_json_Json(ptr %a18) %t19 = call %S.json.Json @finch.json.new_bool(i1 true) - call void @finch.json.Json.set(ptr %a16, { ptr, i64, i64 } { ptr @.str.6774, 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.6775, i64 22, i64 0 }, %S.json.Json %t20) - %t21 = call %S.json.Json @finch.json.new_object() + call void @finch.json.Json.set(ptr %a16, { ptr, i64, i64 } { ptr @.str.6986, i64 13, i64 0 }, %S.json.Json %t19) + store %S.json.Json %t19, ptr %a20 + call void @finch.drop.S_json_Json(ptr %a20) + %t21 = call %S.json.Json @finch.json.new_bool(i1 true) + call void @finch.json.Json.set(ptr %a16, { ptr, i64, i64 } { ptr @.str.6987, i64 18, i64 0 }, %S.json.Json %t21) store %S.json.Json %t21, ptr %a22 - %t23 = call %S.json.Json @finch.json.new_list() + call void @finch.drop.S_json_Json(ptr %a22) + %t23 = call %S.json.Json @finch.json.new_bool(i1 true) + call void @finch.json.Json.set(ptr %a16, { ptr, i64, i64 } { ptr @.str.6988, i64 22, i64 0 }, %S.json.Json %t23) store %S.json.Json %t23, ptr %a24 - %t25 = 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 %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.6777, 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.6778, 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.6779, 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.6780, 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.6781, 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.6782, 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.6783, i64 12, i64 0 }, %S.json.Json %t38) - %t39 = call %S.json.Json @finch.json.new_object() + call void @finch.drop.S_json_Json(ptr %a24) + %t25 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t25, ptr %a26 + %t27 = call %S.json.Json @finch.json.new_list() + store %S.json.Json %t27, ptr %a28 + %t29 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.6989, i64 1, i64 0 }) + call void @finch.json.Json.push(ptr %a28, %S.json.Json %t29) + store %S.json.Json %t29, ptr %a30 + call void @finch.drop.S_json_Json(ptr %a30) + %t31 = load %S.json.Json, ptr %a28 + call void @finch.json.Json.set(ptr %a26, { ptr, i64, i64 } { ptr @.str.6990, i64 17, i64 0 }, %S.json.Json %t31) + %t32 = load %S.json.Json, ptr %a26 + call void @finch.json.Json.set(ptr %a16, { ptr, i64, i64 } { ptr @.str.6991, i64 18, i64 0 }, %S.json.Json %t32) + %t33 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t33, ptr %a34 + %t35 = call %S.json.Json @finch.json.new_list() + store %S.json.Json %t35, ptr %a36 + %t37 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.6992, i64 1, i64 0 }) + call void @finch.json.Json.push(ptr %a36, %S.json.Json %t37) + store %S.json.Json %t37, ptr %a38 + call void @finch.drop.S_json_Json(ptr %a38) + %t39 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.6993, i64 1, i64 0 }) + call void @finch.json.Json.push(ptr %a36, %S.json.Json %t39) store %S.json.Json %t39, ptr %a40 - %t41 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.6785, i64 5, i64 0 }) - call void @finch.json.Json.set(ptr %a40, { ptr, i64, i64 } { ptr @.str.6784, 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.6786, 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.end10236 -match.next10238: - store { ptr, i64, i64 } %t10, ptr %a45 - store { ptr, i64, i64 } { ptr @.str.6787, 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.arm10239, label %match.next10240 -match.arm10239: - %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.end10236 -match.next10240: - store { ptr, i64, i64 } %t10, ptr %a52 - store { ptr, i64, i64 } { ptr @.str.6788, 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.arm10241, label %match.next10242 -match.arm10241: - %t56 = trunc i64 0 to i32 - %t57 = call i32 @fflush(ptr null) - call void @exit(i32 %t56) - br label %match.end10236 -match.next10242: - store { ptr, i64, i64 } %t10, ptr %a58 - store { ptr, i64, i64 } { ptr @.str.6789, 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.arm10243, label %match.next10244 -match.arm10243: - %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.new10245, label %map.have10246 -map.new10245: - %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.have10246 -map.have10246: - %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.end10236 -match.next10244: - store { ptr, i64, i64 } %t10, ptr %a81 - store { ptr, i64, i64 } { ptr @.str.6790, 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.arm10247, label %match.next10248 -match.arm10247: - %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.6791, 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 %then10249, label %endif10251 -then10249: - %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.6792, 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.6793, 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.new10252, label %map.have10253 -map.new10252: - %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.have10253 -map.have10253: - %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 %endif10251 -endif10251: - br label %match.end10236 -match.next10248: - store { ptr, i64, i64 } %t10, ptr %a113 - store { ptr, i64, i64 } { ptr @.str.6794, 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.arm10254, label %match.next10255 -match.arm10254: - %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 %then10256, label %endif10258 -then10256: - %t125 = load { ptr, i64, i64 }, ptr %a119 + call void @finch.drop.S_json_Json(ptr %a40) + %t41 = load %S.json.Json, ptr %a36 + call void @finch.json.Json.set(ptr %a34, { ptr, i64, i64 } { ptr @.str.6994, i64 17, i64 0 }, %S.json.Json %t41) + %t42 = load %S.json.Json, ptr %a34 + call void @finch.json.Json.set(ptr %a16, { ptr, i64, i64 } { ptr @.str.6995, i64 21, i64 0 }, %S.json.Json %t42) + %t43 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t43, ptr %a44 + %t45 = load %S.json.Json, ptr %a16 + call void @finch.json.Json.set(ptr %a44, { ptr, i64, i64 } { ptr @.str.6996, i64 12, i64 0 }, %S.json.Json %t45) + %t46 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t46, ptr %a47 + %t48 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.6998, i64 5, i64 0 }) + call void @finch.json.Json.set(ptr %a47, { ptr, i64, i64 } { ptr @.str.6997, i64 4, i64 0 }, %S.json.Json %t48) + store %S.json.Json %t48, ptr %a49 + call void @finch.drop.S_json_Json(ptr %a49) + %t50 = load %S.json.Json, ptr %a47 + call void @finch.json.Json.set(ptr %a44, { ptr, i64, i64 } { ptr @.str.6999, i64 10, i64 0 }, %S.json.Json %t50) + %t51 = load %S.json.Json, ptr %a9 + %t52 = load %S.json.Json, ptr %a44 + call void @finch.lsp.reply(%S.json.Json %t51, %S.json.Json %t52) + call void @finch.drop.S_json_Json(ptr %a47) + call void @finch.drop.S_json_Json(ptr %a44) + call void @finch.drop.S_json_Json(ptr %a36) + call void @finch.drop.S_json_Json(ptr %a34) + call void @finch.drop.S_json_Json(ptr %a28) + call void @finch.drop.S_json_Json(ptr %a26) + call void @finch.drop.S_json_Json(ptr %a16) + br label %match.end10755 +match.next10757: + store { ptr, i64, i64 } %t10, ptr %a53 + store { ptr, i64, i64 } { ptr @.str.7000, i64 8, i64 0 }, ptr %a54 + %t55 = call i32 @finch_str_eq(ptr %a53, ptr %a54) + %t56 = icmp ne i32 %t55, 0 + br i1 %t56, label %match.arm10758, label %match.next10759 +match.arm10758: + %t57 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 6 + store i1 true, ptr %t57 + %t58 = load %S.json.Json, ptr %a9 + %t59 = call %S.json.Json @finch.json.new_null() + call void @finch.lsp.reply(%S.json.Json %t58, %S.json.Json %t59) + store %S.json.Json %t59, ptr %a60 + call void @finch.drop.S_json_Json(ptr %a60) + br label %match.end10755 +match.next10759: + store { ptr, i64, i64 } %t10, ptr %a61 + store { ptr, i64, i64 } { ptr @.str.7001, i64 4, i64 0 }, ptr %a62 + %t63 = call i32 @finch_str_eq(ptr %a61, ptr %a62) + %t64 = icmp ne i32 %t63, 0 + br i1 %t64, label %match.arm10760, label %match.next10761 +match.arm10760: + %t65 = trunc i64 0 to i32 + %t66 = call i32 @fflush(ptr null) + call void @exit(i32 %t65) + br label %match.end10755 +match.next10761: + store { ptr, i64, i64 } %t10, ptr %a67 + store { ptr, i64, i64 } { ptr @.str.7002, i64 20, i64 0 }, ptr %a68 + %t69 = call i32 @finch_str_eq(ptr %a67, ptr %a68) + %t70 = icmp ne i32 %t69, 0 + br i1 %t70, label %match.arm10762, label %match.next10763 +match.arm10762: + %t71 = load %S.json.Json, ptr %a7 + %t72 = call { ptr, i64, i64 } @finch.lsp.pathOf(%S.json.Json %t71) + store { ptr, i64, i64 } %t72, ptr %a73 + %t74 = load %S.json.Json, ptr %a7 + %t75 = call { ptr, i64, i64 } @finch.lsp.textOf(%S.json.Json %t74) + %t76 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 + %t77 = load { ptr, i64, i64 }, ptr %a73 + store { ptr, i64, i64 } %t77, ptr %a78 + store i32 0, ptr %a79 + %t80 = call i64 @finch_map_slot(ptr %t76, ptr %a78, 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 %a79) + %t81 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t76, i32 0, i32 0 + %t82 = load ptr, ptr %t81 + %t83 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t82, i64 %t80 + %t84 = load i32, ptr %a79 + %t85 = icmp ne i32 %t84, 0 + br i1 %t85, label %map.new10764, label %map.have10765 +map.new10764: + %t86 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t83, i32 0, i32 1 + call void @finch_str_copy(ptr %t86, ptr %a78) + %t87 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t83, i32 0, i32 2 + store { ptr, i64, i64 } zeroinitializer, ptr %t87 + br label %map.have10765 +map.have10765: + %t88 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t83, i32 0, i32 2 + %t89 = load { ptr, i64, i64 }, ptr %t88 + store { ptr, i64, i64 } %t75, ptr %t88 + store { ptr, i64, i64 } %t89, ptr %a90 + call void @finch_str_drop(ptr %a90) + %t91 = load { ptr, i64, i64 }, ptr %a73 + call void @finch.lsp.Server.analyse(ptr %self, { ptr, i64, i64 } %t91) + call void @finch_str_drop(ptr %a73) + br label %match.end10755 +match.next10763: + store { ptr, i64, i64 } %t10, ptr %a92 + store { ptr, i64, i64 } { ptr @.str.7003, i64 22, i64 0 }, ptr %a93 + %t94 = call i32 @finch_str_eq(ptr %a92, ptr %a93) + %t95 = icmp ne i32 %t94, 0 + br i1 %t95, label %match.arm10766, label %match.next10767 +match.arm10766: + %t96 = load %S.json.Json, ptr %a7 + %t97 = call { ptr, i64, i64 } @finch.lsp.pathOf(%S.json.Json %t96) + store { ptr, i64, i64 } %t97, ptr %a98 + %t99 = call %S.json.Json @finch.json.Json.get(ptr %a7, { ptr, i64, i64 } { ptr @.str.7004, i64 14, i64 0 }) + store %S.json.Json %t99, ptr %a100 + %t101 = call i64 @finch.json.Json.len(ptr %a100) + %t102 = icmp sgt i64 %t101, 0 + br i1 %t102, label %then10768, label %endif10770 +then10768: + %t103 = call i64 @finch.json.Json.len(ptr %a100) + %t104 = sub i64 %t103, 1 + %t105 = call %S.json.Json @finch.json.Json.at(ptr %a100, i64 %t104) + store %S.json.Json %t105, ptr %a106 + %t107 = call %S.json.Json @finch.json.Json.get(ptr %a106, { ptr, i64, i64 } { ptr @.str.7005, i64 4, i64 0 }) + call void @finch.drop.S_json_Json(ptr %a106) + store %S.json.Json %t107, ptr %a108 + %t109 = call { ptr, i64, i64 } @finch.json.Json.str_or(ptr %a108, { ptr, i64, i64 } { ptr @.str.7006, i64 0, i64 0 }) + call void @finch.drop.S_json_Json(ptr %a108) + %t110 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 + %t111 = load { ptr, i64, i64 }, ptr %a98 + store { ptr, i64, i64 } %t111, ptr %a112 + store i32 0, ptr %a113 + %t114 = call i64 @finch_map_slot(ptr %t110, ptr %a112, 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 %a113) + %t115 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t110, i32 0, i32 0 + %t116 = load ptr, ptr %t115 + %t117 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t116, i64 %t114 + %t118 = load i32, ptr %a113 + %t119 = icmp ne i32 %t118, 0 + br i1 %t119, label %map.new10771, label %map.have10772 +map.new10771: + %t120 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t117, i32 0, i32 1 + call void @finch_str_copy(ptr %t120, ptr %a112) + %t121 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t117, i32 0, i32 2 + store { ptr, i64, i64 } zeroinitializer, ptr %t121 + br label %map.have10772 +map.have10772: + %t122 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t117, i32 0, i32 2 + %t123 = load { ptr, i64, i64 }, ptr %t122 + store { ptr, i64, i64 } %t109, ptr %t122 + store { ptr, i64, i64 } %t123, ptr %a124 + call void @finch_str_drop(ptr %a124) + %t125 = load { ptr, i64, i64 }, ptr %a98 call void @finch.lsp.Server.analyse(ptr %self, { ptr, i64, i64 } %t125) - br label %endif10258 -endif10258: - br label %match.end10236 -match.next10255: + br label %endif10770 +endif10770: + call void @finch.drop.S_json_Json(ptr %a100) + call void @finch_str_drop(ptr %a98) + br label %match.end10755 +match.next10767: store { ptr, i64, i64 } %t10, ptr %a126 - store { ptr, i64, i64 } { ptr @.str.6795, i64 21, i64 0 }, ptr %a127 + store { ptr, i64, i64 } { ptr @.str.7007, i64 20, 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.arm10259, label %match.next10260 -match.arm10259: + br i1 %t129, label %match.arm10773, label %match.next10774 +match.arm10773: %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 @@ -91044,245 +108757,381 @@ match.arm10259: 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.hit10261, label %remove.end10262 -remove.hit10261: - 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.end10262 -remove.end10262: - %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.hit10263, label %remove.end10264 -remove.hit10263: - 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.end10264 -remove.end10264: - %t143 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 4 - %t144 = load { ptr, i64, i64 }, ptr %a132 + br i1 %t137, label %then10775, label %endif10777 +then10775: + %t138 = load { ptr, i64, i64 }, ptr %a132 + call void @finch.lsp.Server.analyse(ptr %self, { ptr, i64, i64 } %t138) + br label %endif10777 +endif10777: + call void @finch_str_drop(ptr %a132) + br label %match.end10755 +match.next10774: + store { ptr, i64, i64 } %t10, ptr %a139 + store { ptr, i64, i64 } { ptr @.str.7008, i64 21, i64 0 }, ptr %a140 + %t141 = call i32 @finch_str_eq(ptr %a139, ptr %a140) + %t142 = icmp ne i32 %t141, 0 + br i1 %t142, label %match.arm10778, label %match.next10779 +match.arm10778: + %t143 = load %S.json.Json, ptr %a7 + %t144 = call { ptr, i64, i64 } @finch.lsp.pathOf(%S.json.Json %t143) 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.hit10265, label %remove.end10266 -remove.hit10265: - 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.end10266 -remove.end10266: - %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.6796, 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.6797, 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.6798, i64 31, i64 0 }, %S.json.Json %t154) - br label %match.end10236 -match.next10260: - store { ptr, i64, i64 } %t10, ptr %a155 - store { ptr, i64, i64 } { ptr @.str.6799, 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.arm10267, label %match.or10269 -match.or10269: - store { ptr, i64, i64 } %t10, ptr %a159 - store { ptr, i64, i64 } { ptr @.str.6800, 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.arm10267, label %match.or10270 -match.or10270: - store { ptr, i64, i64 } %t10, ptr %a163 - store { ptr, i64, i64 } { ptr @.str.6801, 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.arm10267, label %match.or10271 -match.or10271: - store { ptr, i64, i64 } %t10, ptr %a167 - store { ptr, i64, i64 } { ptr @.str.6802, 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.arm10267, label %match.or10272 -match.or10272: - store { ptr, i64, i64 } %t10, ptr %a171 - store { ptr, i64, i64 } { ptr @.str.6803, 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.arm10267, label %match.next10268 -match.arm10267: - %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.6804, 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.6805, 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.6806, 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.6807, 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 %then10273, label %endif10275 -then10273: - %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) + %t146 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 + %t147 = load { ptr, i64, i64 }, ptr %a145 + store { ptr, i64, i64 } %t147, ptr %a148 + %t149 = call i64 @finch_map_find(ptr %t146, ptr %a148, 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) + %t150 = icmp sge i64 %t149, 0 + br i1 %t150, label %remove.hit10780, label %remove.end10781 +remove.hit10780: + %t151 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t146, i32 0, i32 0 + %t152 = load ptr, ptr %t151 + %t153 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t152, i64 %t149 + %t154 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t153, i32 0, i32 1 + call void @finch_str_drop(ptr %t154) + %t155 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t153, i32 0, i32 2 + call void @finch_str_drop(ptr %t155) + call void @finch_map_remove_at(ptr %t146, i64 %t149, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64)) + br label %remove.end10781 +remove.end10781: + %t156 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 3 + %t157 = load { ptr, i64, i64 }, ptr %a145 + store { ptr, i64, i64 } %t157, ptr %a158 + %t159 = call i64 @finch_map_find(ptr %t156, ptr %a158, 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) + %t160 = icmp sge i64 %t159, 0 + br i1 %t160, label %remove.hit10782, label %remove.end10783 +remove.hit10782: + %t161 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t156, i32 0, i32 0 + %t162 = load ptr, ptr %t161 + %t163 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t162, i64 %t159 + %t164 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t163, i32 0, i32 1 + call void @finch_str_drop(ptr %t164) + %t165 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t163, i32 0, i32 2 + call void @finch.drop.S_lsp_Analysis(ptr %t165) + call void @finch_map_remove_at(ptr %t156, i64 %t159, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64)) + br label %remove.end10783 +remove.end10783: + %t166 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 4 + %t167 = load { ptr, i64, i64 }, ptr %a145 + store { ptr, i64, i64 } %t167, ptr %a168 + %t169 = call i64 @finch_map_find(ptr %t166, ptr %a168, 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) + %t170 = icmp sge i64 %t169, 0 + br i1 %t170, label %remove.hit10784, label %remove.end10785 +remove.hit10784: + %t171 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t166, i32 0, i32 0 + %t172 = load ptr, ptr %t171 + %t173 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t172, i64 %t169 + %t174 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t173, i32 0, i32 1 + call void @finch_str_drop(ptr %t174) + %t175 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t173, i32 0, i32 2 + call void @finch.drop.S_lsp_Analysis(ptr %t175) + call void @finch_map_remove_at(ptr %t166, i64 %t169, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64)) + br label %remove.end10785 +remove.end10785: + %t176 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t176, ptr %a177 + %t178 = load { ptr, i64, i64 }, ptr %a145 + %t179 = call { ptr, i64, i64 } @finch.lsp.pathToUri({ ptr, i64, i64 } %t178) + %t180 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t179) + store { ptr, i64, i64 } %t179, ptr %a181 + call void @finch_str_drop(ptr %a181) + call void @finch.json.Json.set(ptr %a177, { ptr, i64, i64 } { ptr @.str.7009, i64 3, i64 0 }, %S.json.Json %t180) + store %S.json.Json %t180, ptr %a182 + call void @finch.drop.S_json_Json(ptr %a182) + %t183 = call %S.json.Json @finch.json.new_list() + call void @finch.json.Json.set(ptr %a177, { ptr, i64, i64 } { ptr @.str.7010, i64 11, i64 0 }, %S.json.Json %t183) + store %S.json.Json %t183, ptr %a184 + call void @finch.drop.S_json_Json(ptr %a184) + %t185 = load %S.json.Json, ptr %a177 + call void @finch.lsp.notify({ ptr, i64, i64 } { ptr @.str.7011, i64 31, i64 0 }, %S.json.Json %t185) + call void @finch.drop.S_json_Json(ptr %a177) + call void @finch_str_drop(ptr %a145) + br label %match.end10755 +match.next10779: + store { ptr, i64, i64 } %t10, ptr %a186 + store { ptr, i64, i64 } { ptr @.str.7012, i64 18, i64 0 }, ptr %a187 + %t188 = call i32 @finch_str_eq(ptr %a186, ptr %a187) + %t189 = icmp ne i32 %t188, 0 + br i1 %t189, label %match.arm10786, label %match.or10788 +match.or10788: + store { ptr, i64, i64 } %t10, ptr %a190 + store { ptr, i64, i64 } { ptr @.str.7013, i64 23, i64 0 }, ptr %a191 + %t192 = call i32 @finch_str_eq(ptr %a190, ptr %a191) + %t193 = icmp ne i32 %t192, 0 + br i1 %t193, label %match.arm10786, label %match.or10789 +match.or10789: + store { ptr, i64, i64 } %t10, ptr %a194 + store { ptr, i64, i64 } { ptr @.str.7014, i64 23, i64 0 }, ptr %a195 + %t196 = call i32 @finch_str_eq(ptr %a194, ptr %a195) + %t197 = icmp ne i32 %t196, 0 + br i1 %t197, label %match.arm10786, label %match.or10790 +match.or10790: + store { ptr, i64, i64 } %t10, ptr %a198 + store { ptr, i64, i64 } { ptr @.str.7015, i64 27, i64 0 }, ptr %a199 + %t200 = call i32 @finch_str_eq(ptr %a198, ptr %a199) + %t201 = icmp ne i32 %t200, 0 + br i1 %t201, label %match.arm10786, label %match.or10791 +match.or10791: + store { ptr, i64, i64 } %t10, ptr %a202 + store { ptr, i64, i64 } { ptr @.str.7016, i64 26, i64 0 }, ptr %a203 + %t204 = call i32 @finch_str_eq(ptr %a202, ptr %a203) + %t205 = icmp ne i32 %t204, 0 + br i1 %t205, label %match.arm10786, label %match.next10787 +match.arm10786: + %t206 = load %S.json.Json, ptr %a7 + %t207 = call { ptr, i64, i64 } @finch.lsp.pathOf(%S.json.Json %t206) + store { ptr, i64, i64 } %t207, ptr %a208 + %t209 = call %S.json.Json @finch.json.Json.get(ptr %a7, { ptr, i64, i64 } { ptr @.str.7017, i64 8, i64 0 }) + store %S.json.Json %t209, ptr %a210 + %t211 = call %S.json.Json @finch.json.Json.get(ptr %a210, { ptr, i64, i64 } { ptr @.str.7018, i64 4, i64 0 }) + call void @finch.drop.S_json_Json(ptr %a210) + store %S.json.Json %t211, ptr %a212 + %t213 = call i64 @finch.json.Json.int_or(ptr %a212, i64 0) + call void @finch.drop.S_json_Json(ptr %a212) + %t214 = add i64 %t213, 1 + store i64 %t214, ptr %a215 + %t216 = call %S.json.Json @finch.json.Json.get(ptr %a7, { ptr, i64, i64 } { ptr @.str.7019, i64 8, i64 0 }) + store %S.json.Json %t216, ptr %a217 + %t218 = call %S.json.Json @finch.json.Json.get(ptr %a217, { ptr, i64, i64 } { ptr @.str.7020, i64 9, i64 0 }) + call void @finch.drop.S_json_Json(ptr %a217) + store %S.json.Json %t218, ptr %a219 + %t220 = call i64 @finch.json.Json.int_or(ptr %a219, i64 0) + call void @finch.drop.S_json_Json(ptr %a219) + %t221 = add i64 %t220, 1 + store i64 %t221, ptr %a222 + %t223 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 3 + %t224 = load { ptr, i64, i64 }, ptr %a208 + store { ptr, i64, i64 } %t224, ptr %a225 + %t226 = call i64 @finch_map_find(ptr %t223, ptr %a225, 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) + %t227 = icmp sge i64 %t226, 0 + %t228 = xor i1 %t227, true + br i1 %t228, label %then10792, label %endif10794 +then10792: + %t229 = load %S.json.Json, ptr %a9 + %t230 = call %S.json.Json @finch.json.new_null() + call void @finch.lsp.reply(%S.json.Json %t229, %S.json.Json %t230) + store %S.json.Json %t230, ptr %a231 + call void @finch.drop.S_json_Json(ptr %a231) + call void @finch_str_drop(ptr %a208) + call void @finch.drop.S_json_Json(ptr %a9) + call void @finch.drop.S_json_Json(ptr %a7) + call void @finch_str_drop(ptr %a5) ret void -endif10275: - %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.missing10276, label %map.found10277 -map.missing10276: - 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.6808, i64 842, ptr %a205) - unreachable -map.found10277: - %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.6809, 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 %then10278, label %endif10280 -then10278: - %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.missing10281, label %map.found10282 -map.missing10281: - 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.6810, i64 845, ptr %a227) - unreachable -map.found10282: - %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 +endif10794: + %t232 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 3 + %t233 = load { ptr, i64, i64 }, ptr %a208 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 %endif10280 -endif10280: - %t237 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t237, ptr %a238 - store { ptr, i64, i64 } { ptr @.str.6811, 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.arm10284, label %match.next10285 -match.arm10284: - %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.end10283 -match.next10285: - store { ptr, i64, i64 } %t237, ptr %a248 - store { ptr, i64, i64 } { ptr @.str.6812, 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.arm10286, label %match.next10287 -match.arm10286: - %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.end10283 -match.next10287: - store { ptr, i64, i64 } %t237, ptr %a258 - store { ptr, i64, i64 } { ptr @.str.6813, 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.arm10288, label %match.next10289 -match.arm10288: - %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.end10283 -match.next10289: - store { ptr, i64, i64 } %t237, ptr %a269 - store { ptr, i64, i64 } { ptr @.str.6814, 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.arm10290, label %match.next10291 -match.arm10290: - %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.end10283 -match.next10291: - br label %match.arm10292 -match.arm10292: - %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.end10283 -match.end10283: - br label %match.end10236 -match.next10268: - br label %match.arm10294 -match.arm10294: - %t284 = getelementptr inbounds %S.json.Json, ptr %a9, i32 0, i32 0 - %t285 = load i32, ptr %t284 + %t235 = call i64 @finch_map_find(ptr %t232, ptr %a234, 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) + %t236 = icmp slt i64 %t235, 0 + br i1 %t236, label %map.missing10795, label %map.found10796 +map.missing10795: + store { ptr, i64, i64 } zeroinitializer, ptr %a237 + store { ptr, i64, i64 } %t233, ptr %a238 + call void @finch_buf_str(ptr %a237, ptr %a238, i32 1) + call void @finch_map_missing(ptr @.str.7021, i64 842, ptr %a237) + unreachable +map.found10796: + %t239 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t232, i32 0, i32 0 + %t240 = load ptr, ptr %t239 + %t241 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t240, i64 %t235 + %t242 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t241, i32 0, i32 2 + %t243 = load %S.lsp.Analysis, ptr %t242 + store %S.lsp.Analysis %t243, ptr %a244 + call void @finch.copy.S_lsp_Analysis(ptr %a245, ptr %a244) + %t246 = load %S.lsp.Analysis, ptr %a245 + store %S.lsp.Analysis %t246, ptr %a247 + store { ptr, i64, i64 } { ptr @.str.7022, i64 0, i64 0 }, ptr %a248 + %t249 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 + %t250 = load { ptr, i64, i64 }, ptr %a208 + store { ptr, i64, i64 } %t250, ptr %a251 + %t252 = call i64 @finch_map_find(ptr %t249, ptr %a251, 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) + %t253 = icmp sge i64 %t252, 0 + br i1 %t253, label %then10797, label %endif10799 +then10797: + %t254 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 + %t255 = load { ptr, i64, i64 }, ptr %a208 + store { ptr, i64, i64 } %t255, ptr %a256 + %t257 = call i64 @finch_map_find(ptr %t254, ptr %a256, 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) + %t258 = icmp slt i64 %t257, 0 + br i1 %t258, label %map.missing10800, label %map.found10801 +map.missing10800: + store { ptr, i64, i64 } zeroinitializer, ptr %a259 + store { ptr, i64, i64 } %t255, ptr %a260 + call void @finch_buf_str(ptr %a259, ptr %a260, i32 1) + call void @finch_map_missing(ptr @.str.7023, i64 845, ptr %a259) + unreachable +map.found10801: + %t261 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t254, i32 0, i32 0 + %t262 = load ptr, ptr %t261 + %t263 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t262, i64 %t257 + %t264 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t263, i32 0, i32 2 + %t265 = load { ptr, i64, i64 }, ptr %t264 + store { ptr, i64, i64 } %t265, ptr %a266 + call void @finch_str_copy(ptr %a267, ptr %a266) + %t268 = load { ptr, i64, i64 }, ptr %a267 + %t269 = load { ptr, i64, i64 }, ptr %a248 + store { ptr, i64, i64 } %t268, ptr %a248 + store { ptr, i64, i64 } %t269, ptr %a270 + call void @finch_str_drop(ptr %a270) + br label %endif10799 +endif10799: + %t271 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } %t271, ptr %a272 + store { ptr, i64, i64 } { ptr @.str.7024, i64 18, i64 0 }, ptr %a273 + %t274 = call i32 @finch_str_eq(ptr %a272, ptr %a273) + %t275 = icmp ne i32 %t274, 0 + br i1 %t275, label %match.arm10803, label %match.next10804 +match.arm10803: + %t276 = load %S.json.Json, ptr %a9 + %t277 = load %S.lsp.Analysis, ptr %a247 + %t278 = load { ptr, i64, i64 }, ptr %a208 + %t279 = load i64, ptr %a215 + %t280 = load i64, ptr %a222 + %t281 = call %S.json.Json @finch.lsp.hoverAt(%S.lsp.Analysis %t277, { ptr, i64, i64 } %t278, i64 %t279, i64 %t280) + call void @finch.lsp.reply(%S.json.Json %t276, %S.json.Json %t281) + store %S.json.Json %t281, ptr %a282 + call void @finch.drop.S_json_Json(ptr %a282) + br label %match.end10802 +match.next10804: + store { ptr, i64, i64 } %t271, ptr %a283 + store { ptr, i64, i64 } { ptr @.str.7025, i64 23, i64 0 }, ptr %a284 + %t285 = call i32 @finch_str_eq(ptr %a283, ptr %a284) %t286 = icmp ne i32 %t285, 0 - br i1 %t286, label %then10296, label %endif10298 -then10296: + br i1 %t286, label %match.arm10805, label %match.next10806 +match.arm10805: %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 %endif10298 -endif10298: - br label %match.end10236 -match.end10236: + %t288 = load %S.lsp.Analysis, ptr %a247 + %t289 = load { ptr, i64, i64 }, ptr %a208 + %t290 = load i64, ptr %a215 + %t291 = load i64, ptr %a222 + %t292 = call %S.json.Json @finch.lsp.definitionAt(%S.lsp.Analysis %t288, { ptr, i64, i64 } %t289, i64 %t290, i64 %t291) + call void @finch.lsp.reply(%S.json.Json %t287, %S.json.Json %t292) + store %S.json.Json %t292, ptr %a293 + call void @finch.drop.S_json_Json(ptr %a293) + br label %match.end10802 +match.next10806: + store { ptr, i64, i64 } %t271, ptr %a294 + store { ptr, i64, i64 } { ptr @.str.7026, i64 23, i64 0 }, ptr %a295 + %t296 = call i32 @finch_str_eq(ptr %a294, ptr %a295) + %t297 = icmp ne i32 %t296, 0 + br i1 %t297, label %match.arm10807, label %match.next10808 +match.arm10807: + %t298 = load %S.json.Json, ptr %a9 + %t299 = load %S.lsp.Analysis, ptr %a247 + %t300 = load { ptr, i64, i64 }, ptr %a248 + %t301 = load { ptr, i64, i64 }, ptr %a208 + %t302 = load i64, ptr %a215 + %t303 = load i64, ptr %a222 + %t304 = call %S.json.Json @finch.lsp.completionAt(%S.lsp.Analysis %t299, { ptr, i64, i64 } %t300, { ptr, i64, i64 } %t301, i64 %t302, i64 %t303) + call void @finch.lsp.reply(%S.json.Json %t298, %S.json.Json %t304) + store %S.json.Json %t304, ptr %a305 + call void @finch.drop.S_json_Json(ptr %a305) + br label %match.end10802 +match.next10808: + store { ptr, i64, i64 } %t271, ptr %a306 + store { ptr, i64, i64 } { ptr @.str.7027, i64 27, i64 0 }, ptr %a307 + %t308 = call i32 @finch_str_eq(ptr %a306, ptr %a307) + %t309 = icmp ne i32 %t308, 0 + br i1 %t309, label %match.arm10809, label %match.next10810 +match.arm10809: + %t310 = load %S.json.Json, ptr %a9 + %t311 = load %S.lsp.Analysis, ptr %a247 + %t312 = load { ptr, i64, i64 }, ptr %a208 + %t313 = call %S.json.Json @finch.lsp.symbolsOf(%S.lsp.Analysis %t311, { ptr, i64, i64 } %t312) + call void @finch.lsp.reply(%S.json.Json %t310, %S.json.Json %t313) + store %S.json.Json %t313, ptr %a314 + call void @finch.drop.S_json_Json(ptr %a314) + br label %match.end10802 +match.next10810: + br label %match.arm10811 +match.arm10811: + %t315 = load %S.json.Json, ptr %a9 + %t316 = load %S.lsp.Analysis, ptr %a247 + %t317 = load { ptr, i64, i64 }, ptr %a248 + %t318 = load { ptr, i64, i64 }, ptr %a208 + %t319 = load i64, ptr %a215 + %t320 = load i64, ptr %a222 + %t321 = call %S.json.Json @finch.lsp.signatureAt(%S.lsp.Analysis %t316, { ptr, i64, i64 } %t317, { ptr, i64, i64 } %t318, i64 %t319, i64 %t320) + call void @finch.lsp.reply(%S.json.Json %t315, %S.json.Json %t321) + store %S.json.Json %t321, ptr %a322 + call void @finch.drop.S_json_Json(ptr %a322) + br label %match.end10802 +match.end10802: + call void @finch_str_drop(ptr %a248) + call void @finch.drop.S_lsp_Analysis(ptr %a247) + call void @finch_str_drop(ptr %a208) + br label %match.end10755 +match.next10787: + br label %match.arm10813 +match.arm10813: + %t323 = getelementptr inbounds %S.json.Json, ptr %a9, i32 0, i32 0 + %t324 = load i32, ptr %t323 + %t325 = icmp ne i32 %t324, 0 + br i1 %t325, label %then10815, label %endif10817 +then10815: + %t326 = load %S.json.Json, ptr %a9 + %t327 = call %S.json.Json @finch.json.new_null() + call void @finch.lsp.reply(%S.json.Json %t326, %S.json.Json %t327) + store %S.json.Json %t327, ptr %a328 + call void @finch.drop.S_json_Json(ptr %a328) + br label %endif10817 +endif10817: + br label %match.end10755 +match.end10755: + call void @finch.drop.S_json_Json(ptr %a9) + call void @finch.drop.S_json_Json(ptr %a7) + call void @finch_str_drop(ptr %a5) + ret void +} + +define internal void @finch.drop.map_str_S_lsp_Analysis(ptr %a) { +entry: + %a3 = alloca i64, align 16 + %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 2 + %t2 = load i64, ptr %t1 + store i64 0, ptr %a3 + br label %n.cond10823 +n.cond10823: + %t4 = load i64, ptr %a3 + %t5 = icmp slt i64 %t4, %t2 + br i1 %t5, label %n.body10824, label %n.end10825 +n.body10824: + %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 0 + %t7 = load ptr, ptr %t6 + %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t7, i64 %t4 + %t9 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t8, i32 0, i32 0 + %t10 = load i64, ptr %t9 + %t11 = icmp ne i64 %t10, 0 + br i1 %t11, label %entry.live10826, label %entry.next10827 +entry.live10826: + %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t8, i32 0, i32 1 + call void @finch_str_drop(ptr %t12) + %t13 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t8, i32 0, i32 2 + call void @finch.drop.S_lsp_Analysis(ptr %t13) + br label %entry.next10827 +entry.next10827: + %t14 = load i64, ptr %a3 + %t15 = add i64 %t14, 1 + store i64 %t15, ptr %a3 + br label %n.cond10823 +n.end10825: + call void @finch_map_free(ptr %a) + ret void +} + +define internal void @finch.drop.S_lsp_Server(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.lsp.Server, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + %t2 = getelementptr inbounds %S.lsp.Server, ptr %a, i32 0, i32 1 + call void @finch_str_drop(ptr %t2) + %t3 = getelementptr inbounds %S.lsp.Server, ptr %a, i32 0, i32 2 + call void @finch.drop.map_str_str(ptr %t3) + %t4 = getelementptr inbounds %S.lsp.Server, ptr %a, i32 0, i32 3 + call void @finch.drop.map_str_S_lsp_Analysis(ptr %t4) + %t5 = getelementptr inbounds %S.lsp.Server, ptr %a, i32 0, i32 4 + call void @finch.drop.map_str_S_lsp_Analysis(ptr %t5) + %t6 = getelementptr inbounds %S.lsp.Server, ptr %a, i32 0, i32 5 + call void @finch.drop.arr_str(ptr %t6) ret void } @@ -91291,69 +109140,71 @@ entry: %a1 = alloca { ptr, i64, i64 }, align 16 %a3 = alloca { ptr, i64, i64 }, align 16 %a4 = 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 - %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 + %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 + %a19 = alloca { ptr, i64, i64 }, align 16 + %a20 = alloca { ptr, i64, i64 }, align 16 + %a23 = alloca %S.lsp.Server, 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 + %a30 = alloca %S.json.Json, align 16 store { ptr, i64, i64 } %p0, ptr %a1 + call void @finch.host.binaryStdio() %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.6815, 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.cond10299 -while.cond10299: - br label %while.body10300 -while.body10300: - %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.failed10302, label %or.ok10303 -or.failed10302: - store { ptr, i64, i64 } %t20, ptr %a22 - br label %while.end10301 -or.ok10303: - 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.cond10299 -while.end10301: - %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.6816, 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.6817, 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) + %t7 = call { ptr, i64, i64 } @finch.host.tempDir() + store { ptr, i64, i64 } %t7, ptr %a9 + store { ptr, i64, i64 } { ptr @.str.7028, i64 11, i64 0 }, ptr %a10 + call void @finch_str_concat(ptr %a8, ptr %a9, ptr %a10) + store { ptr, i64, i64 } %t7, ptr %a11 + call void @finch_str_drop(ptr %a11) + %t12 = load { ptr, i64, i64 }, ptr %a8 + %t13 = call i64 @finch.host.pid() + call void @finch_str_from_int(ptr %a14, i64 %t13) + %t15 = load { ptr, i64, i64 }, ptr %a14 + store { ptr, i64, i64 } %t12, ptr %a17 + store { ptr, i64, i64 } %t15, ptr %a18 + call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) + store { ptr, i64, i64 } %t12, ptr %a19 + call void @finch_str_drop(ptr %a19) + store { ptr, i64, i64 } %t15, ptr %a20 + call void @finch_str_drop(ptr %a20) + %t21 = load { ptr, i64, i64 }, ptr %a16 + %t22 = insertvalue %S.lsp.Server %t6, { ptr, i64, i64 } %t21, 1 + store %S.lsp.Server %t22, ptr %a23 + br label %while.cond10818 +while.cond10818: + br label %while.body10819 +while.body10819: + %t24 = call { i1, %S.json.Json, { ptr, i64, i64 } } @finch.lsp.readMessage() + %t25 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t24, 0 + %t26 = xor i1 %t25, true + %t27 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t24, 2 + %t28 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t24, 1 + br i1 %t26, label %or.failed10821, label %or.ok10822 +or.failed10821: + store { ptr, i64, i64 } %t27, ptr %a29 + call void @finch_str_drop(ptr %a29) + br label %while.end10820 +or.ok10822: + store %S.json.Json %t28, ptr %a30 + %t31 = load %S.json.Json, ptr %a30 + call void @finch.lsp.Server.answer(ptr %a23, %S.json.Json %t31) + call void @finch.drop.S_json_Json(ptr %a30) + br label %while.cond10818 +while.end10820: + %t32 = getelementptr inbounds %S.lsp.Server, ptr %a23, i32 0, i32 1 + %t33 = load { ptr, i64, i64 }, ptr %t32 + call void @finch.host.removeTree({ ptr, i64, i64 } %t33) + call void @finch.drop.S_lsp_Server(ptr %a23) ret i64 0 } @@ -91428,35 +109279,35 @@ 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.arm10305, label %match.or10307 -match.or10307: + br i1 %t3, label %match.arm10829, label %match.or10831 +match.or10831: %t4 = icmp eq i32 %t2, 5 - br i1 %t4, label %match.arm10305, label %match.next10306 -match.arm10305: + br i1 %t4, label %match.arm10829, label %match.next10830 +match.arm10829: %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.from10308 -match.from10308: - br label %match.end10304 -match.next10306: + br label %match.from10832 +match.from10832: + br label %match.end10828 +match.next10830: %t8 = icmp eq i32 %t2, 3 - br i1 %t8, label %match.arm10309, label %match.next10310 -match.arm10309: + br i1 %t8, label %match.arm10833, label %match.next10834 +match.arm10833: %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.from10311 -match.from10311: - br label %match.end10304 -match.next10310: - br label %match.arm10312 -match.arm10312: - br label %match.from10314 -match.from10314: - br label %match.end10304 -match.end10304: - %t12 = phi i64 [ %t7, %match.from10308 ], [ %t11, %match.from10311 ], [ 0, %match.from10314 ] + br label %match.from10835 +match.from10835: + br label %match.end10828 +match.next10834: + br label %match.arm10836 +match.arm10836: + br label %match.from10838 +match.from10838: + br label %match.end10828 +match.end10828: + %t12 = phi i64 [ %t7, %match.from10832 ], [ %t11, %match.from10835 ], [ 0, %match.from10838 ] ret i64 %t12 } @@ -91471,10 +109322,10 @@ entry: %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.from10315 -logic.from10315: - br i1 %t4, label %logic.rhs10316, label %logic.end10317 -logic.rhs10316: + br label %logic.from10839 +logic.from10839: + br i1 %t4, label %logic.rhs10840, label %logic.end10841 +logic.rhs10840: %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 @@ -91482,37 +109333,80 @@ logic.rhs10316: %t9 = load i64, ptr %t6 %t10 = load ptr, ptr %t5 store i64 0, ptr %a11 - br label %find.cond10318 -find.cond10318: + br label %find.cond10842 +find.cond10842: %t12 = load i64, ptr %a11 %t13 = icmp slt i64 %t12, %t9 - br i1 %t13, label %find.body10319, label %find.end10322 -find.body10319: + br i1 %t13, label %find.body10843, label %find.end10846 +find.body10843: %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.hit10320, label %find.next10321 -find.hit10320: + br i1 %t19, label %find.hit10844, label %find.next10845 +find.hit10844: store i64 %t12, ptr %a8 - br label %find.end10322 -find.next10321: + br label %find.end10846 +find.next10845: %t20 = add i64 %t12, 1 store i64 %t20, ptr %a11 - br label %find.cond10318 -find.end10322: + br label %find.cond10842 +find.end10846: %t21 = load i64, ptr %a8 %t22 = icmp sge i64 %t21, 0 - br label %logic.rend10323 -logic.rend10323: - br label %logic.end10317 -logic.end10317: - %t23 = phi i1 [ false, %logic.from10315 ], [ %t22, %logic.rend10323 ] + br label %logic.rend10847 +logic.rend10847: + br label %logic.end10841 +logic.end10841: + %t23 = phi i1 [ false, %logic.from10839 ], [ %t22, %logic.rend10847 ] ret i1 %t23 } +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.cond10861 +n.cond10861: + %t6 = load i64, ptr %a5 + %t7 = icmp slt i64 %t6, %t4 + br i1 %t7, label %n.body10862, label %n.end10863 +n.body10862: + %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.cond10861 +n.end10863: + 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.json.Json.get(ptr %self, { ptr, i64, i64 } %p0) { entry: %a1 = alloca { ptr, i64, i64 }, align 16 @@ -91527,11 +109421,11 @@ entry: %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 %then10324, label %endif10326 -then10324: + br i1 %t4, label %then10848, label %endif10850 +then10848: %t5 = call %S.json.Json @finch.json.new_null() ret %S.json.Json %t5 -endif10326: +endif10850: %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 @@ -91539,46 +109433,46 @@ endif10326: %t10 = load i64, ptr %t7 %t11 = load ptr, ptr %t6 store i64 0, ptr %a12 - br label %find.cond10327 -find.cond10327: + br label %find.cond10851 +find.cond10851: %t13 = load i64, ptr %a12 %t14 = icmp slt i64 %t13, %t10 - br i1 %t14, label %find.body10328, label %find.end10331 -find.body10328: + br i1 %t14, label %find.body10852, label %find.end10855 +find.body10852: %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.hit10329, label %find.next10330 -find.hit10329: + br i1 %t20, label %find.hit10853, label %find.next10854 +find.hit10853: store i64 %t13, ptr %a9 - br label %find.end10331 -find.next10330: + br label %find.end10855 +find.next10854: %t21 = add i64 %t13, 1 store i64 %t21, ptr %a12 - br label %find.cond10327 -find.end10331: + br label %find.cond10851 +find.end10855: %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 %then10332, label %endif10334 -then10332: + br i1 %t25, label %then10856, label %endif10858 +then10856: %t26 = call %S.json.Json @finch.json.new_null() ret %S.json.Json %t26 -endif10334: +endif10858: %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 %range10335, label %inrange10336 -range10335: - call void @finch_panic_index(ptr @.str.6818, i64 84, i64 %t28, i64 %t30) + br i1 %t31, label %range10859, label %inrange10860 +range10859: + call void @finch_panic_index(ptr @.str.7029, i64 84, i64 %t28, i64 %t30) unreachable -inrange10336: +inrange10860: %t32 = extractvalue { ptr, i64, i64 } %t29, 0 %t33 = getelementptr inbounds %S.json.Json, ptr %t32, i64 %t28 %t34 = load %S.json.Json, ptr %t33 @@ -91597,46 +109491,46 @@ entry: %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.from10337 -logic.from10337: - br i1 %t4, label %logic.end10339, label %logic.rhs10338 -logic.rhs10338: + br label %logic.from10864 +logic.from10864: + br i1 %t4, label %logic.end10866, label %logic.rhs10865 +logic.rhs10865: %t5 = load i64, ptr %a1 %t6 = icmp slt i64 %t5, 0 - br label %logic.rend10340 -logic.rend10340: - br label %logic.end10339 -logic.end10339: - %t7 = phi i1 [ true, %logic.from10337 ], [ %t6, %logic.rend10340 ] - br label %logic.from10341 -logic.from10341: - br i1 %t7, label %logic.end10343, label %logic.rhs10342 -logic.rhs10342: + br label %logic.rend10867 +logic.rend10867: + br label %logic.end10866 +logic.end10866: + %t7 = phi i1 [ true, %logic.from10864 ], [ %t6, %logic.rend10867 ] + br label %logic.from10868 +logic.from10868: + br i1 %t7, label %logic.end10870, label %logic.rhs10869 +logic.rhs10869: %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.rend10344 -logic.rend10344: - br label %logic.end10343 -logic.end10343: - %t13 = phi i1 [ true, %logic.from10341 ], [ %t12, %logic.rend10344 ] - br i1 %t13, label %then10345, label %endif10347 -then10345: + br label %logic.rend10871 +logic.rend10871: + br label %logic.end10870 +logic.end10870: + %t13 = phi i1 [ true, %logic.from10868 ], [ %t12, %logic.rend10871 ] + br i1 %t13, label %then10872, label %endif10874 +then10872: %t14 = call %S.json.Json @finch.json.new_null() ret %S.json.Json %t14 -endif10347: +endif10874: %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 %range10348, label %inrange10349 -range10348: - call void @finch_panic_index(ptr @.str.6819, i64 92, i64 %t16, i64 %t18) + br i1 %t19, label %range10875, label %inrange10876 +range10875: + call void @finch_panic_index(ptr @.str.7030, i64 92, i64 %t16, i64 %t18) unreachable -inrange10349: +inrange10876: %t20 = extractvalue { ptr, i64, i64 } %t17, 0 %t21 = getelementptr inbounds %S.json.Json, ptr %t20, i64 %t16 %t22 = load %S.json.Json, ptr %t21 @@ -91657,15 +109551,15 @@ entry: %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 %then10350, label %endif10352 -then10350: + br i1 %t4, label %then10877, label %endif10879 +then10877: %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 -endif10352: +endif10879: %t10 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t10, ptr %a11 call void @finch_str_copy(ptr %a12, ptr %a11) @@ -91680,12 +109574,12 @@ entry: %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 %then10353, label %endif10355 -then10353: + br i1 %t4, label %then10880, label %endif10882 +then10880: %t5 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 2 %t6 = load double, ptr %t5 ret double %t6 -endif10355: +endif10882: %t7 = load double, ptr %a1 ret double %t7 } @@ -91697,13 +109591,13 @@ entry: %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 %then10356, label %endif10358 -then10356: + br i1 %t4, label %then10883, label %endif10885 +then10883: %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 -endif10358: +endif10885: %t8 = load i64, ptr %a1 ret i64 %t8 } @@ -91715,12 +109609,12 @@ entry: %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 %then10359, label %endif10361 -then10359: + br i1 %t4, label %then10886, label %endif10888 +then10886: %t5 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 1 %t6 = load i1, ptr %t5 ret i1 %t6 -endif10361: +endif10888: %t7 = load i1, ptr %a1 ret i1 %t7 } @@ -91770,10 +109664,11 @@ entry: %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 + %a35 = alloca %S.json.Json, align 16 + %a39 = alloca { ptr, i64, i64 }, align 16 + %a40 = alloca { ptr, i64, i64 }, align 16 + %a49 = alloca %S.json.Json, align 16 + %a50 = 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 @@ -91783,78 +109678,81 @@ entry: %t7 = load i64, ptr %t4 %t8 = load ptr, ptr %t3 store i64 0, ptr %a9 - br label %find.cond10362 -find.cond10362: + br label %find.cond10889 +find.cond10889: %t10 = load i64, ptr %a9 %t11 = icmp slt i64 %t10, %t7 - br i1 %t11, label %find.body10363, label %find.end10366 -find.body10363: + br i1 %t11, label %find.body10890, label %find.end10893 +find.body10890: %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.hit10364, label %find.next10365 -find.hit10364: + br i1 %t17, label %find.hit10891, label %find.next10892 +find.hit10891: store i64 %t10, ptr %a6 - br label %find.end10366 -find.next10365: + br label %find.end10893 +find.next10892: %t18 = add i64 %t10, 1 store i64 %t18, ptr %a9 - br label %find.cond10362 -find.end10366: + br label %find.cond10889 +find.end10893: %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 %then10367, label %endif10369 -then10367: + br i1 %t22, label %then10894, label %endif10896 +then10894: %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 %range10370, label %inrange10371 -range10370: - call void @finch_panic_index(ptr @.str.6820, i64 140, i64 %t25, i64 %t27) + br i1 %t28, label %range10897, label %inrange10898 +range10897: + call void @finch_panic_index(ptr @.str.7031, i64 140, i64 %t25, i64 %t27) unreachable -inrange10371: +inrange10898: %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 + %t34 = load %S.json.Json, ptr %t30 store %S.json.Json %t33, ptr %t30 + store %S.json.Json %t34, ptr %a35 + call void @finch.drop.S_json_Json(ptr %a35) ret void -endif10369: - %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 +endif10896: + %t36 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 5 + %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %t36, i32 0, i32 1 + %t38 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t38, ptr %a39 + call void @finch_str_copy(ptr %a40, ptr %a39) + %t41 = load { ptr, i64, i64 }, ptr %a40 + %t42 = load i64, ptr %t37 + %t43 = add i64 %t42, 1 + call void @finch_arr_reserve(ptr %t36, i64 %t43, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t44 = load ptr, ptr %t36 + %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %t44, i64 %t42 + store { ptr, i64, i64 } %t41, ptr %t45 + store i64 %t43, ptr %t37 + %t46 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 4 + %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %t46, i32 0, i32 1 + %t48 = load %S.json.Json, ptr %a2 + store %S.json.Json %t48, ptr %a49 + call void @finch.copy.S_json_Json(ptr %a50, ptr %a49) + %t51 = load %S.json.Json, ptr %a50 + %t52 = load i64, ptr %t47 + %t53 = add i64 %t52, 1 + call void @finch_arr_reserve(ptr %t46, i64 %t53, i64 ptrtoint (ptr getelementptr (%S.json.Json, ptr null, i32 1) to i64)) + %t54 = load ptr, ptr %t46 + %t55 = getelementptr inbounds %S.json.Json, ptr %t54, i64 %t52 + store %S.json.Json %t51, ptr %t55 + store i64 %t53, ptr %t47 ret void } @@ -91868,30 +109766,33 @@ entry: %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 + %a65 = 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 + %a72 = alloca { ptr, i64, i64 }, align 16 + %a73 = alloca { ptr, i64, i64 }, align 16 + %a74 = alloca { ptr, i64, i64 }, align 16 + %a82 = alloca { ptr, i64, i64 }, align 16 + %a96 = alloca { ptr, i64, i64 }, align 16 + %a97 = 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.6821, i64 1, i64 0 }, ptr %t4 + store { ptr, i64, i64 } { ptr @.str.7032, 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.cond10372 -each.cond10372: + br label %each.cond10899 +each.cond10899: %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.body10373, label %each.end10375 -each.body10373: + br i1 %t13, label %each.body10900, label %each.end10902 +each.body10900: %t14 = load ptr, ptr %a1 %t15 = getelementptr inbounds i8, ptr %t14, i64 %t12 %t16 = load i8, ptr %t15 @@ -91901,145 +109802,152 @@ each.body10373: store i64 %t19, ptr %a20 %t21 = load i8, ptr %a17 %t22 = icmp eq i8 %t21, 34 - br i1 %t22, label %then10376, label %else10377 -then10376: + br i1 %t22, label %then10903, label %else10904 +then10903: %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.6822, i64 2, i64 0 }, ptr %t27 + store { ptr, i64, i64 } { ptr @.str.7033, i64 2, i64 0 }, ptr %t27 store i64 %t25, ptr %t23 - br label %endif10378 -else10377: + br label %endif10905 +else10904: %t28 = load i8, ptr %a17 %t29 = icmp eq i8 %t28, 92 - br i1 %t29, label %then10379, label %else10380 -then10379: + br i1 %t29, label %then10906, label %else10907 +then10906: %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.6823, i64 2, i64 0 }, ptr %t34 + store { ptr, i64, i64 } { ptr @.str.7034, i64 2, i64 0 }, ptr %t34 store i64 %t32, ptr %t30 - br label %endif10381 -else10380: + br label %endif10908 +else10907: %t35 = load i8, ptr %a17 %t36 = icmp eq i8 %t35, 10 - br i1 %t36, label %then10382, label %else10383 -then10382: + br i1 %t36, label %then10909, label %else10910 +then10909: %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.6824, i64 2, i64 0 }, ptr %t41 + store { ptr, i64, i64 } { ptr @.str.7035, i64 2, i64 0 }, ptr %t41 store i64 %t39, ptr %t37 - br label %endif10384 -else10383: + br label %endif10911 +else10910: %t42 = load i8, ptr %a17 %t43 = icmp eq i8 %t42, 13 - br i1 %t43, label %then10385, label %else10386 -then10385: + br i1 %t43, label %then10912, label %else10913 +then10912: %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.6825, i64 2, i64 0 }, ptr %t48 + store { ptr, i64, i64 } { ptr @.str.7036, i64 2, i64 0 }, ptr %t48 store i64 %t46, ptr %t44 - br label %endif10387 -else10386: + br label %endif10914 +else10913: %t49 = load i8, ptr %a17 %t50 = icmp eq i8 %t49, 9 - br i1 %t50, label %then10388, label %else10389 -then10388: + br i1 %t50, label %then10915, label %else10916 +then10915: %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.6826, i64 2, i64 0 }, ptr %t55 + store { ptr, i64, i64 } { ptr @.str.7037, i64 2, i64 0 }, ptr %t55 store i64 %t53, ptr %t51 - br label %endif10390 -else10389: + br label %endif10917 +else10916: %t56 = load i64, ptr %a20 %t57 = icmp slt i64 %t56, 32 - br i1 %t57, label %then10391, label %else10392 -then10391: + br i1 %t57, label %then10918, label %else10919 +then10918: %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.6827, i64 4, i64 0 }, ptr %a63 + store { ptr, i64, i64 } { ptr @.str.7038, 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 %endif10393 -else10392: - %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 %endif10393 -endif10393: - br label %endif10390 -endif10390: - br label %endif10387 -endif10387: - br label %endif10384 -endif10384: - br label %endif10381 -endif10381: - br label %endif10378 -endif10378: - br label %each.step10374 -each.step10374: - %t85 = load i64, ptr %a9 - %t86 = add i64 %t85, 1 - store i64 %t86, ptr %a9 - br label %each.cond10372 -each.end10375: - %t87 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 - %t88 = load i64, ptr %t87 + store { ptr, i64, i64 } %t61, ptr %a65 + call void @finch_str_drop(ptr %a65) + %t66 = load { ptr, i64, i64 }, ptr %a62 + %t67 = load i64, ptr %a20 + %t68 = srem i64 %t67, 16 + %t69 = call { ptr, i64, i64 } @finch.json.hexdigit(i64 %t68) + store { ptr, i64, i64 } %t66, ptr %a71 + store { ptr, i64, i64 } %t69, ptr %a72 + call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) + store { ptr, i64, i64 } %t66, ptr %a73 + call void @finch_str_drop(ptr %a73) + store { ptr, i64, i64 } %t69, ptr %a74 + call void @finch_str_drop(ptr %a74) + %t75 = load { ptr, i64, i64 }, ptr %a70 + %t76 = load i64, ptr %t58 + %t77 = add i64 %t76, 1 + call void @finch_arr_reserve(ptr %a8, i64 %t77, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t78 = load ptr, ptr %a8 + %t79 = getelementptr inbounds { ptr, i64, i64 }, ptr %t78, i64 %t76 + store { ptr, i64, i64 } %t75, ptr %t79 + store i64 %t77, ptr %t58 + br label %endif10920 +else10919: + %t80 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 + %t81 = load i8, ptr %a17 + call void @finch_str_from_char(ptr %a82, i8 signext %t81) + %t83 = load { ptr, i64, i64 }, ptr %a82 + %t84 = load i64, ptr %t80 + %t85 = add i64 %t84, 1 + call void @finch_arr_reserve(ptr %a8, i64 %t85, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t86 = load ptr, ptr %a8 + %t87 = getelementptr inbounds { ptr, i64, i64 }, ptr %t86, i64 %t84 + store { ptr, i64, i64 } %t83, ptr %t87 + store i64 %t85, ptr %t80 + br label %endif10920 +endif10920: + br label %endif10917 +endif10917: + br label %endif10914 +endif10914: + br label %endif10911 +endif10911: + br label %endif10908 +endif10908: + br label %endif10905 +endif10905: + br label %each.step10901 +each.step10901: + %t88 = load i64, ptr %a9 %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.6828, 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.6829, 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 + store i64 %t89, ptr %a9 + br label %each.cond10899 +each.end10902: + %t90 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 + %t91 = load i64, ptr %t90 + %t92 = add i64 %t91, 1 + call void @finch_arr_reserve(ptr %a8, i64 %t92, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t93 = load ptr, ptr %a8 + %t94 = getelementptr inbounds { ptr, i64, i64 }, ptr %t93, i64 %t91 + store { ptr, i64, i64 } { ptr @.str.7039, i64 1, i64 0 }, ptr %t94 + store i64 %t92, ptr %t90 + %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.7040, i64 0, i64 0 }, ptr %a96 + call void @finch_str_join(ptr %a97, ptr %a8, ptr %a96) + %t98 = load { ptr, i64, i64 }, ptr %a97 + call void @finch.drop.arr_str(ptr %a8) + ret { ptr, i64, i64 } %t98 } define internal { ptr, i64, i64 } @finch.json.hexdigit(i64 %p0) { @@ -92048,21 +109956,22 @@ entry: %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.6830, i64 16, i64 0 }, ptr %a2 + store { ptr, i64, i64 } { ptr @.str.7041, 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 %range10394, label %inrange10395 -range10394: - call void @finch_panic_index(ptr @.str.6831, i64 175, i64 %t3, i64 %t5) + br i1 %t6, label %range10921, label %inrange10922 +range10921: + call void @finch_panic_index(ptr @.str.7042, i64 175, i64 %t3, i64 %t5) unreachable -inrange10395: +inrange10922: %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 + call void @finch_str_drop(ptr %a2) ret { ptr, i64, i64 } %t11 } @@ -92077,37 +109986,37 @@ entry: %t4 = fptosi double %t3 to i64 %t5 = sitofp i64 %t4 to double %t6 = fcmp oeq double %t2, %t5 - br label %logic.from10396 -logic.from10396: - br i1 %t6, label %logic.rhs10397, label %logic.end10398 -logic.rhs10397: + br label %logic.from10923 +logic.from10923: + br i1 %t6, label %logic.rhs10924, label %logic.end10925 +logic.rhs10924: %t7 = load double, ptr %a1 %t8 = fneg double 1000000000000000.0 %t9 = fcmp ogt double %t7, %t8 - br label %logic.rend10399 -logic.rend10399: - br label %logic.end10398 -logic.end10398: - %t10 = phi i1 [ false, %logic.from10396 ], [ %t9, %logic.rend10399 ] - br label %logic.from10400 -logic.from10400: - br i1 %t10, label %logic.rhs10401, label %logic.end10402 -logic.rhs10401: + br label %logic.rend10926 +logic.rend10926: + br label %logic.end10925 +logic.end10925: + %t10 = phi i1 [ false, %logic.from10923 ], [ %t9, %logic.rend10926 ] + br label %logic.from10927 +logic.from10927: + br i1 %t10, label %logic.rhs10928, label %logic.end10929 +logic.rhs10928: %t11 = load double, ptr %a1 %t12 = fcmp olt double %t11, 1000000000000000.0 - br label %logic.rend10403 -logic.rend10403: - br label %logic.end10402 -logic.end10402: - %t13 = phi i1 [ false, %logic.from10400 ], [ %t12, %logic.rend10403 ] - br i1 %t13, label %then10404, label %endif10406 -then10404: + br label %logic.rend10930 +logic.rend10930: + br label %logic.end10929 +logic.end10929: + %t13 = phi i1 [ false, %logic.from10927 ], [ %t12, %logic.rend10930 ] + br i1 %t13, label %then10931, label %endif10933 +then10931: %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 -endif10406: +endif10933: %t18 = load double, ptr %a1 call void @finch_str_from_float(ptr %a19, double %t18) %t20 = load { ptr, i64, i64 }, ptr %a19 @@ -92124,516 +110033,560 @@ entry: %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 + %a13 = 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 + %a17 = alloca { ptr, i64, i64 }, align 16 + %a18 = alloca { ptr, i64, i64 }, align 16 + %a21 = alloca { ptr, i64, i64 }, align 16 + %a23 = 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 + %a105 = alloca i64, align 16 + %a113 = alloca i64, align 16 + %a114 = alloca %S.json.Json, align 16 + %a123 = alloca { ptr, i64, i64 }, align 16 + %a124 = alloca { ptr, i64, i64 }, align 16 + %a125 = alloca { ptr, i64, i64 }, align 16 + %a136 = alloca { ptr, i64, i64 }, align 16 + %a137 = 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 + %a156 = alloca { ptr, i64, i64 }, align 16 + %a157 = 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 + %a162 = alloca { ptr, i64, i64 }, align 16 + %a186 = alloca { ptr, i64, i64 }, align 16 + %a187 = alloca { ptr, i64, i64 }, align 16 + %a188 = alloca { ptr, i64, i64 }, align 16 + %a195 = alloca i64, align 16 + %a203 = alloca i64, align 16 + %a204 = alloca %S.json.Json, align 16 + %a213 = alloca { ptr, i64, i64 }, align 16 + %a214 = alloca { ptr, i64, i64 }, align 16 + %a215 = 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 + %a236 = alloca { ptr, i64, i64 }, align 16 + %a237 = alloca { ptr, i64, i64 }, align 16 + %a238 = alloca { ptr, i64, i64 }, align 16 + %a241 = 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 + %a262 = alloca { ptr, i64, i64 }, align 16 + %a263 = alloca { ptr, i64, i64 }, align 16 + %a264 = alloca { ptr, i64, i64 }, align 16 + %a266 = alloca { ptr, i64, i64 }, align 16 + %a267 = alloca { ptr, i64, i64 }, align 16 + %a268 = alloca { ptr, i64, i64 }, align 16 + %a269 = 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.6832, i64 0, i64 0 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.6833, i64 0, i64 0 }, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.6834, i64 1, i64 0 }, ptr %a7 - store { ptr, i64, i64 } { ptr @.str.6835, i64 1, i64 0 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.7043, i64 0, i64 0 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.7044, i64 0, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.7045, i64 1, i64 0 }, ptr %a7 + store { ptr, i64, i64 } { ptr @.str.7046, 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 %then10407, label %endif10409 -then10407: - store { ptr, i64, i64 } { ptr @.str.6836, 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.6837, i64 2, i64 0 }, ptr %a8 - br label %endif10409 -endif10409: - %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.arm10411, label %match.next10412 -match.arm10411: - %t21 = load ptr, ptr %a4 - %t22 = icmp eq ptr %t21, null - br i1 %t22, label %panic10413, label %ok10414 -panic10413: - call void @finch_panic(ptr @.str.6838, i64 200, ptr @.str.6839) + br i1 %t11, label %then10934, label %endif10936 +then10934: + %t12 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.7047, i64 1, i64 0 }, ptr %a5 + store { ptr, i64, i64 } %t12, ptr %a13 + call void @finch_str_drop(ptr %a13) + %t14 = load { ptr, i64, i64 }, ptr %a3 + %t15 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t14, 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 + %t20 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t19, ptr %a6 + store { ptr, i64, i64 } %t20, ptr %a21 + call void @finch_str_drop(ptr %a21) + %t22 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.7048, i64 2, i64 0 }, ptr %a8 + store { ptr, i64, i64 } %t22, ptr %a23 + call void @finch_str_drop(ptr %a23) + br label %endif10936 +endif10936: + %t24 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 0 + %t25 = load i32, ptr %t24 + %t26 = icmp eq i32 %t25, 0 + br i1 %t26, label %match.arm10938, label %match.next10939 +match.arm10938: + %t27 = load ptr, ptr %a4 + %t28 = icmp eq ptr %t27, null + br i1 %t28, label %panic10940, label %ok10941 +panic10940: + call void @finch_panic(ptr @.str.7049, i64 200, ptr @.str.7050) unreachable -ok10414: - %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.6840, i64 4, i64 0 }, ptr %t28 - store i64 %t26, ptr %t24 - br label %match.end10410 -match.next10412: - %t29 = icmp eq i32 %t19, 1 - br i1 %t29, label %match.arm10415, label %match.next10416 -match.arm10415: - %t30 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 1 - %t31 = load i1, ptr %t30 - br i1 %t31, label %then10417, label %else10418 -then10417: - %t32 = load ptr, ptr %a4 - %t33 = icmp eq ptr %t32, null - br i1 %t33, label %panic10420, label %ok10421 -panic10420: - call void @finch_panic(ptr @.str.6841, i64 203, ptr @.str.6842) +ok10941: + %t29 = getelementptr inbounds %S.json.Writer, ptr %t27, i32 0, i32 0 + %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i32 0, i32 1 + %t31 = load i64, ptr %t30 + %t32 = add i64 %t31, 1 + call void @finch_arr_reserve(ptr %t29, i64 %t32, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t33 = load ptr, ptr %t29 + %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t33, i64 %t31 + store { ptr, i64, i64 } { ptr @.str.7051, i64 4, i64 0 }, ptr %t34 + store i64 %t32, ptr %t30 + br label %match.end10937 +match.next10939: + %t35 = icmp eq i32 %t25, 1 + br i1 %t35, label %match.arm10942, label %match.next10943 +match.arm10942: + %t36 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 1 + %t37 = load i1, ptr %t36 + br i1 %t37, label %then10944, label %else10945 +then10944: + %t38 = load ptr, ptr %a4 + %t39 = icmp eq ptr %t38, null + br i1 %t39, label %panic10947, label %ok10948 +panic10947: + call void @finch_panic(ptr @.str.7052, i64 203, ptr @.str.7053) unreachable -ok10421: - %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.6843, i64 4, i64 0 }, ptr %t39 - store i64 %t37, ptr %t35 - br label %endif10419 -else10418: - %t40 = load ptr, ptr %a4 - %t41 = icmp eq ptr %t40, null - br i1 %t41, label %panic10422, label %ok10423 -panic10422: - call void @finch_panic(ptr @.str.6844, i64 205, ptr @.str.6845) +ok10948: + %t40 = getelementptr inbounds %S.json.Writer, ptr %t38, i32 0, i32 0 + %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i32 0, i32 1 + %t42 = load i64, ptr %t41 + %t43 = add i64 %t42, 1 + call void @finch_arr_reserve(ptr %t40, i64 %t43, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t44 = load ptr, ptr %t40 + %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %t44, i64 %t42 + store { ptr, i64, i64 } { ptr @.str.7054, i64 4, i64 0 }, ptr %t45 + store i64 %t43, ptr %t41 + br label %endif10946 +else10945: + %t46 = load ptr, ptr %a4 + %t47 = icmp eq ptr %t46, null + br i1 %t47, label %panic10949, label %ok10950 +panic10949: + call void @finch_panic(ptr @.str.7055, i64 205, ptr @.str.7056) unreachable -ok10423: - %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.6846, i64 5, i64 0 }, ptr %t47 - store i64 %t45, ptr %t43 - br label %endif10419 -endif10419: - br label %match.end10410 -match.next10416: - %t48 = icmp eq i32 %t19, 2 - br i1 %t48, label %match.arm10424, label %match.next10425 -match.arm10424: - %t49 = load ptr, ptr %a4 - %t50 = icmp eq ptr %t49, null - br i1 %t50, label %panic10426, label %ok10427 -panic10426: - call void @finch_panic(ptr @.str.6847, i64 208, ptr @.str.6848) +ok10950: + %t48 = getelementptr inbounds %S.json.Writer, ptr %t46, i32 0, i32 0 + %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %t48, i32 0, i32 1 + %t50 = load i64, ptr %t49 + %t51 = add i64 %t50, 1 + call void @finch_arr_reserve(ptr %t48, i64 %t51, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t52 = load ptr, ptr %t48 + %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %t52, i64 %t50 + store { ptr, i64, i64 } { ptr @.str.7057, i64 5, i64 0 }, ptr %t53 + store i64 %t51, ptr %t49 + br label %endif10946 +endif10946: + br label %match.end10937 +match.next10943: + %t54 = icmp eq i32 %t25, 2 + br i1 %t54, label %match.arm10951, label %match.next10952 +match.arm10951: + %t55 = load ptr, ptr %a4 + %t56 = icmp eq ptr %t55, null + br i1 %t56, label %panic10953, label %ok10954 +panic10953: + call void @finch_panic(ptr @.str.7058, i64 208, ptr @.str.7059) unreachable -ok10427: - %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.end10410 -match.next10425: - %t60 = icmp eq i32 %t19, 3 - br i1 %t60, label %match.arm10428, label %match.next10429 -match.arm10428: - %t61 = load ptr, ptr %a4 - %t62 = icmp eq ptr %t61, null - br i1 %t62, label %panic10430, label %ok10431 -panic10430: - call void @finch_panic(ptr @.str.6849, i64 209, ptr @.str.6850) +ok10954: + %t57 = getelementptr inbounds %S.json.Writer, ptr %t55, i32 0, i32 0 + %t58 = getelementptr inbounds { ptr, i64, i64 }, ptr %t57, i32 0, i32 1 + %t59 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 2 + %t60 = load double, ptr %t59 + %t61 = call { ptr, i64, i64 } @finch.json.number_text(double %t60) + %t62 = load i64, ptr %t58 + %t63 = add i64 %t62, 1 + call void @finch_arr_reserve(ptr %t57, i64 %t63, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t64 = load ptr, ptr %t57 + %t65 = getelementptr inbounds { ptr, i64, i64 }, ptr %t64, i64 %t62 + store { ptr, i64, i64 } %t61, ptr %t65 + store i64 %t63, ptr %t58 + br label %match.end10937 +match.next10952: + %t66 = icmp eq i32 %t25, 3 + br i1 %t66, label %match.arm10955, label %match.next10956 +match.arm10955: + %t67 = load ptr, ptr %a4 + %t68 = icmp eq ptr %t67, null + br i1 %t68, label %panic10957, label %ok10958 +panic10957: + call void @finch_panic(ptr @.str.7060, i64 209, ptr @.str.7061) unreachable -ok10431: - %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.end10410 -match.next10429: - %t72 = icmp eq i32 %t19, 4 - br i1 %t72, label %match.arm10432, label %match.next10433 -match.arm10432: - %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 %then10434, label %endif10436 -then10434: - %t77 = load ptr, ptr %a4 - %t78 = icmp eq ptr %t77, null - br i1 %t78, label %panic10437, label %ok10438 -panic10437: - call void @finch_panic(ptr @.str.6851, i64 212, ptr @.str.6852) - unreachable -ok10438: - %t79 = getelementptr inbounds %S.json.Writer, ptr %t77, i32 0, i32 0 +ok10958: + %t69 = getelementptr inbounds %S.json.Writer, ptr %t67, i32 0, i32 0 + %t70 = getelementptr inbounds { ptr, i64, i64 }, ptr %t69, i32 0, i32 1 + %t71 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 3 + %t72 = load { ptr, i64, i64 }, ptr %t71 + %t73 = call { ptr, i64, i64 } @finch.json.quote({ ptr, i64, i64 } %t72) + %t74 = load i64, ptr %t70 + %t75 = add i64 %t74, 1 + call void @finch_arr_reserve(ptr %t69, i64 %t75, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t76 = load ptr, ptr %t69 + %t77 = getelementptr inbounds { ptr, i64, i64 }, ptr %t76, i64 %t74 + store { ptr, i64, i64 } %t73, ptr %t77 + store i64 %t75, ptr %t70 + br label %match.end10937 +match.next10956: + %t78 = icmp eq i32 %t25, 4 + br i1 %t78, label %match.arm10959, label %match.next10960 +match.arm10959: + %t79 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 4 %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.6853, i64 2, i64 0 }, ptr %t84 - store i64 %t82, ptr %t80 + %t82 = icmp eq i64 %t81, 0 + br i1 %t82, label %then10961, label %endif10963 +then10961: + %t83 = load ptr, ptr %a4 + %t84 = icmp eq ptr %t83, null + br i1 %t84, label %panic10964, label %ok10965 +panic10964: + call void @finch_panic(ptr @.str.7062, i64 212, ptr @.str.7063) + unreachable +ok10965: + %t85 = getelementptr inbounds %S.json.Writer, ptr %t83, i32 0, i32 0 + %t86 = getelementptr inbounds { ptr, i64, i64 }, ptr %t85, i32 0, i32 1 + %t87 = load i64, ptr %t86 + %t88 = add i64 %t87, 1 + call void @finch_arr_reserve(ptr %t85, i64 %t88, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t89 = load ptr, ptr %t85 + %t90 = getelementptr inbounds { ptr, i64, i64 }, ptr %t89, i64 %t87 + store { ptr, i64, i64 } { ptr @.str.7064, i64 2, i64 0 }, ptr %t90 + store i64 %t88, ptr %t86 + call void @finch_str_drop(ptr %a8) + call void @finch_str_drop(ptr %a7) + call void @finch_str_drop(ptr %a6) + call void @finch_str_drop(ptr %a5) ret void -endif10436: - %t85 = load ptr, ptr %a4 - %t86 = icmp eq ptr %t85, null - br i1 %t86, label %panic10439, label %ok10440 -panic10439: - call void @finch_panic(ptr @.str.6854, i64 215, ptr @.str.6855) +endif10963: + %t91 = load ptr, ptr %a4 + %t92 = icmp eq ptr %t91, null + br i1 %t92, label %panic10966, label %ok10967 +panic10966: + call void @finch_panic(ptr @.str.7065, i64 215, ptr @.str.7066) unreachable -ok10440: - %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.6856, 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.cond10441 -each.cond10441: - %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.body10442, label %each.end10444 -each.body10442: - %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 %then10445, label %endif10447 -then10445: - %t111 = load ptr, ptr %a4 - %t112 = icmp eq ptr %t111, null - br i1 %t112, label %panic10448, label %ok10449 -panic10448: - call void @finch_panic(ptr @.str.6857, i64 218, ptr @.str.6858) +ok10967: + %t93 = getelementptr inbounds %S.json.Writer, ptr %t91, i32 0, i32 0 + %t94 = getelementptr inbounds { ptr, i64, i64 }, ptr %t93, i32 0, i32 1 + %t95 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.7067, i64 1, 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 + %t100 = load i64, ptr %t94 + %t101 = add i64 %t100, 1 + call void @finch_arr_reserve(ptr %t93, i64 %t101, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t102 = load ptr, ptr %t93 + %t103 = getelementptr inbounds { ptr, i64, i64 }, ptr %t102, i64 %t100 + store { ptr, i64, i64 } %t99, ptr %t103 + store i64 %t101, ptr %t94 + %t104 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 4 + store i64 0, ptr %a105 + br label %each.cond10968 +each.cond10968: + %t106 = getelementptr inbounds { ptr, i64, i64 }, ptr %t104, i32 0, i32 1 + %t107 = load i64, ptr %t106 + %t108 = load i64, ptr %a105 + %t109 = icmp slt i64 %t108, %t107 + br i1 %t109, label %each.body10969, label %each.end10971 +each.body10969: + %t110 = load ptr, ptr %t104 + %t111 = getelementptr inbounds %S.json.Json, ptr %t110, i64 %t108 + %t112 = load %S.json.Json, ptr %t111 + store i64 %t108, ptr %a113 + store %S.json.Json %t112, ptr %a114 + %t115 = load i64, ptr %a113 + %t116 = icmp sgt i64 %t115, 0 + br i1 %t116, label %then10972, label %endif10974 +then10972: + %t117 = load ptr, ptr %a4 + %t118 = icmp eq ptr %t117, null + br i1 %t118, label %panic10975, label %ok10976 +panic10975: + call void @finch_panic(ptr @.str.7068, i64 218, ptr @.str.7069) unreachable -ok10449: - %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 %endif10447 -endif10447: - %t125 = load ptr, ptr %a4 - %t126 = icmp eq ptr %t125, null - br i1 %t126, label %panic10450, label %ok10451 -panic10450: - call void @finch_panic(ptr @.str.6859, i64 220, ptr @.str.6860) +ok10976: + %t119 = getelementptr inbounds %S.json.Writer, ptr %t117, i32 0, i32 0 + %t120 = getelementptr inbounds { ptr, i64, i64 }, ptr %t119, i32 0, i32 1 + %t121 = load { ptr, i64, i64 }, ptr %a7 + %t122 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } %t121, 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 + %t127 = load i64, ptr %t120 + %t128 = add i64 %t127, 1 + call void @finch_arr_reserve(ptr %t119, i64 %t128, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t129 = load ptr, ptr %t119 + %t130 = getelementptr inbounds { ptr, i64, i64 }, ptr %t129, i64 %t127 + store { ptr, i64, i64 } %t126, ptr %t130 + store i64 %t128, ptr %t120 + br label %endif10974 +endif10974: + %t131 = load ptr, ptr %a4 + %t132 = icmp eq ptr %t131, null + br i1 %t132, label %panic10977, label %ok10978 +panic10977: + call void @finch_panic(ptr @.str.7070, i64 220, ptr @.str.7071) unreachable -ok10451: - %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.step10443 -each.step10443: - %t141 = load i64, ptr %a99 - %t142 = add i64 %t141, 1 - store i64 %t142, ptr %a99 - br label %each.cond10441 -each.end10444: - %t143 = load ptr, ptr %a4 - %t144 = icmp eq ptr %t143, null - br i1 %t144, label %panic10452, label %ok10453 -panic10452: - call void @finch_panic(ptr @.str.6861, i64 223, ptr @.str.6862) +ok10978: + %t133 = getelementptr inbounds %S.json.Writer, ptr %t131, i32 0, i32 0 + %t134 = getelementptr inbounds { ptr, i64, i64 }, ptr %t133, i32 0, i32 1 + %t135 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t135, ptr %a136 + call void @finch_str_copy(ptr %a137, ptr %a136) + %t138 = load { ptr, i64, i64 }, ptr %a137 + %t139 = load i64, ptr %t134 + %t140 = add i64 %t139, 1 + call void @finch_arr_reserve(ptr %t133, i64 %t140, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t141 = load ptr, ptr %t133 + %t142 = getelementptr inbounds { ptr, i64, i64 }, ptr %t141, i64 %t139 + store { ptr, i64, i64 } %t138, ptr %t142 + store i64 %t140, ptr %t134 + %t143 = load %S.json.Json, ptr %a114 + %t144 = load { ptr, i64, i64 }, ptr %a2 + %t145 = load { ptr, i64, i64 }, ptr %a6 + %t146 = load ptr, ptr %a4 + call void @finch.json.write(%S.json.Json %t143, { ptr, i64, i64 } %t144, { ptr, i64, i64 } %t145, ptr %t146) + br label %each.step10970 +each.step10970: + %t147 = load i64, ptr %a105 + %t148 = add i64 %t147, 1 + store i64 %t148, ptr %a105 + br label %each.cond10968 +each.end10971: + %t149 = load ptr, ptr %a4 + %t150 = icmp eq ptr %t149, null + br i1 %t150, label %panic10979, label %ok10980 +panic10979: + call void @finch_panic(ptr @.str.7072, i64 223, ptr @.str.7073) unreachable -ok10453: - %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.6863, 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.end10410 -match.next10433: - %t161 = icmp eq i32 %t19, 5 - br i1 %t161, label %match.arm10454, label %match.next10455 -match.arm10454: - %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 %then10456, label %endif10458 -then10456: - %t166 = load ptr, ptr %a4 - %t167 = icmp eq ptr %t166, null - br i1 %t167, label %panic10459, label %ok10460 -panic10459: - call void @finch_panic(ptr @.str.6864, i64 227, ptr @.str.6865) +ok10980: + %t151 = getelementptr inbounds %S.json.Writer, ptr %t149, i32 0, i32 0 + %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %t151, i32 0, i32 1 + %t153 = load { ptr, i64, i64 }, ptr %a5 + %t154 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t153, 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.7074, i64 1, i64 0 }, ptr %a161 + call void @finch_str_concat(ptr %a159, ptr %a160, ptr %a161) + store { ptr, i64, i64 } %t158, ptr %a162 + call void @finch_str_drop(ptr %a162) + %t163 = load { ptr, i64, i64 }, ptr %a159 + %t164 = load i64, ptr %t152 + %t165 = add i64 %t164, 1 + call void @finch_arr_reserve(ptr %t151, i64 %t165, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t166 = load ptr, ptr %t151 + %t167 = getelementptr inbounds { ptr, i64, i64 }, ptr %t166, i64 %t164 + store { ptr, i64, i64 } %t163, ptr %t167 + store i64 %t165, ptr %t152 + br label %match.end10937 +match.next10960: + %t168 = icmp eq i32 %t25, 5 + br i1 %t168, label %match.arm10981, label %match.next10982 +match.arm10981: + %t169 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 4 + %t170 = getelementptr inbounds { ptr, i64, i64 }, ptr %t169, i32 0, i32 1 + %t171 = load i64, ptr %t170 + %t172 = icmp eq i64 %t171, 0 + br i1 %t172, label %then10983, label %endif10985 +then10983: + %t173 = load ptr, ptr %a4 + %t174 = icmp eq ptr %t173, null + br i1 %t174, label %panic10986, label %ok10987 +panic10986: + call void @finch_panic(ptr @.str.7075, i64 227, ptr @.str.7076) unreachable -ok10460: - %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.6866, i64 2, i64 0 }, ptr %t173 - store i64 %t171, ptr %t169 +ok10987: + %t175 = getelementptr inbounds %S.json.Writer, ptr %t173, i32 0, i32 0 + %t176 = getelementptr inbounds { ptr, i64, i64 }, ptr %t175, i32 0, i32 1 + %t177 = load i64, ptr %t176 + %t178 = add i64 %t177, 1 + call void @finch_arr_reserve(ptr %t175, i64 %t178, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t179 = load ptr, ptr %t175 + %t180 = getelementptr inbounds { ptr, i64, i64 }, ptr %t179, i64 %t177 + store { ptr, i64, i64 } { ptr @.str.7077, i64 2, i64 0 }, ptr %t180 + store i64 %t178, ptr %t176 + call void @finch_str_drop(ptr %a8) + call void @finch_str_drop(ptr %a7) + call void @finch_str_drop(ptr %a6) + call void @finch_str_drop(ptr %a5) ret void -endif10458: - %t174 = load ptr, ptr %a4 - %t175 = icmp eq ptr %t174, null - br i1 %t175, label %panic10461, label %ok10462 -panic10461: - call void @finch_panic(ptr @.str.6867, i64 230, ptr @.str.6868) +endif10985: + %t181 = load ptr, ptr %a4 + %t182 = icmp eq ptr %t181, null + br i1 %t182, label %panic10988, label %ok10989 +panic10988: + call void @finch_panic(ptr @.str.7078, i64 230, ptr @.str.7079) unreachable -ok10462: - %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.6869, 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.cond10463 -each.cond10463: - %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.body10464, label %each.end10466 -each.body10464: - %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 %then10467, label %endif10469 -then10467: - %t200 = load ptr, ptr %a4 - %t201 = icmp eq ptr %t200, null - br i1 %t201, label %panic10470, label %ok10471 -panic10470: - call void @finch_panic(ptr @.str.6870, i64 233, ptr @.str.6871) +ok10989: + %t183 = getelementptr inbounds %S.json.Writer, ptr %t181, i32 0, i32 0 + %t184 = getelementptr inbounds { ptr, i64, i64 }, ptr %t183, i32 0, i32 1 + %t185 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.7080, i64 1, 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 + %t190 = load i64, ptr %t184 + %t191 = add i64 %t190, 1 + call void @finch_arr_reserve(ptr %t183, i64 %t191, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t192 = load ptr, ptr %t183 + %t193 = getelementptr inbounds { ptr, i64, i64 }, ptr %t192, i64 %t190 + store { ptr, i64, i64 } %t189, ptr %t193 + store i64 %t191, ptr %t184 + %t194 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 4 + store i64 0, ptr %a195 + br label %each.cond10990 +each.cond10990: + %t196 = getelementptr inbounds { ptr, i64, i64 }, ptr %t194, i32 0, i32 1 + %t197 = load i64, ptr %t196 + %t198 = load i64, ptr %a195 + %t199 = icmp slt i64 %t198, %t197 + br i1 %t199, label %each.body10991, label %each.end10993 +each.body10991: + %t200 = load ptr, ptr %t194 + %t201 = getelementptr inbounds %S.json.Json, ptr %t200, i64 %t198 + %t202 = load %S.json.Json, ptr %t201 + store i64 %t198, ptr %a203 + store %S.json.Json %t202, ptr %a204 + %t205 = load i64, ptr %a203 + %t206 = icmp sgt i64 %t205, 0 + br i1 %t206, label %then10994, label %endif10996 +then10994: + %t207 = load ptr, ptr %a4 + %t208 = icmp eq ptr %t207, null + br i1 %t208, label %panic10997, label %ok10998 +panic10997: + call void @finch_panic(ptr @.str.7081, i64 233, ptr @.str.7082) unreachable -ok10471: - %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 %endif10469 -endif10469: - %t214 = load ptr, ptr %a4 - %t215 = icmp eq ptr %t214, null - br i1 %t215, label %panic10472, label %ok10473 -panic10472: - call void @finch_panic(ptr @.str.6872, i64 235, ptr @.str.6873) +ok10998: + %t209 = getelementptr inbounds %S.json.Writer, ptr %t207, i32 0, i32 0 + %t210 = getelementptr inbounds { ptr, i64, i64 }, ptr %t209, i32 0, i32 1 + %t211 = load { ptr, i64, i64 }, ptr %a7 + %t212 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } %t211, 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 = load i64, ptr %t210 + %t218 = add i64 %t217, 1 + call void @finch_arr_reserve(ptr %t209, i64 %t218, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t219 = load ptr, ptr %t209 + %t220 = getelementptr inbounds { ptr, i64, i64 }, ptr %t219, i64 %t217 + store { ptr, i64, i64 } %t216, ptr %t220 + store i64 %t218, ptr %t210 + br label %endif10996 +endif10996: + %t221 = load ptr, ptr %a4 + %t222 = icmp eq ptr %t221, null + br i1 %t222, label %panic10999, label %ok11000 +panic10999: + call void @finch_panic(ptr @.str.7083, i64 235, ptr @.str.7084) unreachable -ok10473: - %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 %range10474, label %inrange10475 -range10474: - call void @finch_panic_index(ptr @.str.6874, i64 235, i64 %t220, i64 %t222) +ok11000: + %t223 = getelementptr inbounds %S.json.Writer, ptr %t221, i32 0, i32 0 + %t224 = getelementptr inbounds { ptr, i64, i64 }, ptr %t223, i32 0, i32 1 + %t225 = load { ptr, i64, i64 }, ptr %a6 + %t226 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 5 + %t227 = load i64, ptr %a203 + %t228 = load { ptr, i64, i64 }, ptr %t226 + %t229 = extractvalue { ptr, i64, i64 } %t228, 1 + %t230 = icmp uge i64 %t227, %t229 + br i1 %t230, label %range11001, label %inrange11002 +range11001: + call void @finch_panic_index(ptr @.str.7085, i64 235, i64 %t227, i64 %t229) unreachable -inrange10475: - %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.step10465 -each.step10465: - %t245 = load i64, ptr %a188 - %t246 = add i64 %t245, 1 - store i64 %t246, ptr %a188 - br label %each.cond10463 -each.end10466: - %t247 = load ptr, ptr %a4 - %t248 = icmp eq ptr %t247, null - br i1 %t248, label %panic10476, label %ok10477 -panic10476: - call void @finch_panic(ptr @.str.6875, i64 238, ptr @.str.6876) +inrange11002: + %t231 = extractvalue { ptr, i64, i64 } %t228, 0 + %t232 = getelementptr inbounds { ptr, i64, i64 }, ptr %t231, i64 %t227 + %t233 = load { ptr, i64, i64 }, ptr %t232 + %t234 = call { ptr, i64, i64 } @finch.json.quote({ ptr, i64, i64 } %t233) + store { ptr, i64, i64 } %t225, ptr %a236 + store { ptr, i64, i64 } %t234, ptr %a237 + call void @finch_str_concat(ptr %a235, ptr %a236, ptr %a237) + store { ptr, i64, i64 } %t234, ptr %a238 + call void @finch_str_drop(ptr %a238) + %t239 = load { ptr, i64, i64 }, ptr %a235 + %t240 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t239, ptr %a242 + store { ptr, i64, i64 } %t240, ptr %a243 + call void @finch_str_concat(ptr %a241, ptr %a242, ptr %a243) + store { ptr, i64, i64 } %t239, ptr %a244 + call void @finch_str_drop(ptr %a244) + %t245 = load { ptr, i64, i64 }, ptr %a241 + %t246 = load i64, ptr %t224 + %t247 = add i64 %t246, 1 + call void @finch_arr_reserve(ptr %t223, i64 %t247, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t248 = load ptr, ptr %t223 + %t249 = getelementptr inbounds { ptr, i64, i64 }, ptr %t248, i64 %t246 + store { ptr, i64, i64 } %t245, ptr %t249 + store i64 %t247, ptr %t224 + %t250 = load %S.json.Json, ptr %a204 + %t251 = load { ptr, i64, i64 }, ptr %a2 + %t252 = load { ptr, i64, i64 }, ptr %a6 + %t253 = load ptr, ptr %a4 + call void @finch.json.write(%S.json.Json %t250, { ptr, i64, i64 } %t251, { ptr, i64, i64 } %t252, ptr %t253) + br label %each.step10992 +each.step10992: + %t254 = load i64, ptr %a195 + %t255 = add i64 %t254, 1 + store i64 %t255, ptr %a195 + br label %each.cond10990 +each.end10993: + %t256 = load ptr, ptr %a4 + %t257 = icmp eq ptr %t256, null + br i1 %t257, label %panic11003, label %ok11004 +panic11003: + call void @finch_panic(ptr @.str.7086, i64 238, ptr @.str.7087) unreachable -ok10477: - %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.6877, 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.end10410 -match.next10455: - br i1 true, label %panic10478, label %ok10479 -panic10478: - call void @finch_panic(ptr @.str.6878, i64 199, ptr @.str.6879) +ok11004: + %t258 = getelementptr inbounds %S.json.Writer, ptr %t256, i32 0, i32 0 + %t259 = getelementptr inbounds { ptr, i64, i64 }, ptr %t258, i32 0, i32 1 + %t260 = load { ptr, i64, i64 }, ptr %a5 + %t261 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t260, ptr %a263 + store { ptr, i64, i64 } %t261, 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 %a267 + store { ptr, i64, i64 } { ptr @.str.7088, i64 1, i64 0 }, ptr %a268 + call void @finch_str_concat(ptr %a266, ptr %a267, ptr %a268) + store { ptr, i64, i64 } %t265, ptr %a269 + call void @finch_str_drop(ptr %a269) + %t270 = load { ptr, i64, i64 }, ptr %a266 + %t271 = load i64, ptr %t259 + %t272 = add i64 %t271, 1 + call void @finch_arr_reserve(ptr %t258, i64 %t272, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t273 = load ptr, ptr %t258 + %t274 = getelementptr inbounds { ptr, i64, i64 }, ptr %t273, i64 %t271 + store { ptr, i64, i64 } %t270, ptr %t274 + store i64 %t272, ptr %t259 + br label %match.end10937 +match.next10982: + br i1 true, label %panic11005, label %ok11006 +panic11005: + call void @finch_panic(ptr @.str.7089, i64 199, ptr @.str.7090) unreachable -ok10479: +ok11006: unreachable -match.end10410: +match.end10937: + call void @finch_str_drop(ptr %a8) + call void @finch_str_drop(ptr %a7) + call void @finch_str_drop(ptr %a6) + call void @finch_str_drop(ptr %a5) + ret void +} + +define internal void @finch.drop.S_json_Writer(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.json.Writer, ptr %a, i32 0, i32 0 + call void @finch.drop.arr_str(ptr %t1) ret void } @@ -92646,12 +110599,13 @@ entry: 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.6880, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.6881, i64 0, i64 0 }, ptr %a2) + call void @finch.json.write(%S.json.Json %t3, { ptr, i64, i64 } { ptr @.str.7091, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.7092, 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.6882, i64 0, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.7093, i64 0, i64 0 }, ptr %a6 call void @finch_str_join(ptr %a7, ptr %t4, ptr %a6) %t8 = load { ptr, i64, i64 }, ptr %a7 + call void @finch.drop.S_json_Writer(ptr %a2) ret { ptr, i64, i64 } %t8 } @@ -92664,12 +110618,13 @@ entry: 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.6883, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.6884, i64 0, i64 0 }, ptr %a2) + call void @finch.json.write(%S.json.Json %t3, { ptr, i64, i64 } { ptr @.str.7094, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.7095, 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.6885, i64 0, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.7096, i64 0, i64 0 }, ptr %a6 call void @finch_str_join(ptr %a7, ptr %t4, ptr %a6) %t8 = load { ptr, i64, i64 }, ptr %a7 + call void @finch.drop.S_json_Writer(ptr %a2) ret { ptr, i64, i64 } %t8 } @@ -92683,113 +110638,125 @@ entry: %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 + %a42 = 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 + %a46 = alloca { ptr, i64, i64 }, align 16 + %a47 = 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 + %a53 = alloca { ptr, i64, i64 }, align 16 + %a54 = alloca { ptr, i64, i64 }, align 16 + %a55 = alloca { ptr, i64, i64 }, align 16 + %a56 = 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 %panic10480, label %ok10481 -panic10480: - call void @finch_panic(ptr @.str.6886, i64 268, ptr @.str.6887) + br i1 %t5, label %panic11007, label %ok11008 +panic11007: + call void @finch_panic(ptr @.str.7097, i64 268, ptr @.str.7098) unreachable -ok10481: +ok11008: %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.cond10482 -for.cond10482: + br label %for.cond11009 +for.cond11009: %t9 = load i64, ptr %a8 %t10 = icmp slt i64 %t9, %t7 - br i1 %t10, label %for.body10483, label %for.end10485 -for.body10483: + br i1 %t10, label %for.body11010, label %for.end11012 +for.body11010: %t11 = load i64, ptr %a8 %t12 = load ptr, ptr %a1 %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic10486, label %ok10487 -panic10486: - call void @finch_panic(ptr @.str.6888, i64 269, ptr @.str.6889) + br i1 %t13, label %panic11013, label %ok11014 +panic11013: + call void @finch_panic(ptr @.str.7099, i64 269, ptr @.str.7100) unreachable -ok10487: +ok11014: %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.from10488 -logic.from10488: - br i1 %t17, label %logic.rhs10489, label %logic.end10490 -logic.rhs10489: + br label %logic.from11015 +logic.from11015: + br i1 %t17, label %logic.rhs11016, label %logic.end11017 +logic.rhs11016: %t18 = load ptr, ptr %a1 %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic10491, label %ok10492 -panic10491: - call void @finch_panic(ptr @.str.6890, i64 269, ptr @.str.6891) + br i1 %t19, label %panic11018, label %ok11019 +panic11018: + call void @finch_panic(ptr @.str.7101, i64 269, ptr @.str.7102) unreachable -ok10492: +ok11019: %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 %range10493, label %inrange10494 -range10493: - call void @finch_panic_index(ptr @.str.6892, i64 269, i64 %t21, i64 %t23) + br i1 %t24, label %range11020, label %inrange11021 +range11020: + call void @finch_panic_index(ptr @.str.7103, i64 269, i64 %t21, i64 %t23) unreachable -inrange10494: +inrange11021: %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.rend10495 -logic.rend10495: - br label %logic.end10490 -logic.end10490: - %t29 = phi i1 [ false, %logic.from10488 ], [ %t28, %logic.rend10495 ] - br i1 %t29, label %then10496, label %else10497 -then10496: + br label %logic.rend11022 +logic.rend11022: + br label %logic.end11017 +logic.end11017: + %t29 = phi i1 [ false, %logic.from11015 ], [ %t28, %logic.rend11022 ] + br i1 %t29, label %then11023, label %else11024 +then11023: %t30 = load i64, ptr %a2 %t31 = add i64 %t30, 1 store i64 %t31, ptr %a2 store i64 1, ptr %a3 - br label %endif10498 -else10497: + br label %endif11025 +else11024: %t32 = load i64, ptr %a3 %t33 = add i64 %t32, 1 store i64 %t33, ptr %a3 - br label %endif10498 -endif10498: - br label %for.step10484 -for.step10484: + br label %endif11025 +endif11025: + br label %for.step11011 +for.step11011: %t34 = load i64, ptr %a8 %t35 = add i64 %t34, 1 store i64 %t35, ptr %a8 - br label %for.cond10482 -for.end10485: + br label %for.cond11009 +for.end11012: %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.6893, i64 5, i64 0 }, ptr %a40 + store { ptr, i64, i64 } { ptr @.str.7104, 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.6894, 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 + store { ptr, i64, i64 } %t38, ptr %a42 + call void @finch_str_drop(ptr %a42) + %t43 = load { ptr, i64, i64 }, ptr %a39 + store { ptr, i64, i64 } %t43, ptr %a45 + store { ptr, i64, i64 } { ptr @.str.7105, i64 9, i64 0 }, ptr %a46 + call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46) + store { ptr, i64, i64 } %t43, ptr %a47 + call void @finch_str_drop(ptr %a47) + %t48 = load { ptr, i64, i64 }, ptr %a44 + %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) + store { ptr, i64, i64 } %t48, ptr %a55 + call void @finch_str_drop(ptr %a55) + store { ptr, i64, i64 } %t51, ptr %a56 + call void @finch_str_drop(ptr %a56) + %t57 = load { ptr, i64, i64 }, ptr %a52 + ret { ptr, i64, i64 } %t57 } define internal i8 @finch.json.peek(ptr %p0) { @@ -92798,56 +110765,56 @@ entry: store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic10499, label %ok10500 -panic10499: - call void @finch_panic(ptr @.str.6895, i64 280, ptr @.str.6896) + br i1 %t3, label %panic11026, label %ok11027 +panic11026: + call void @finch_panic(ptr @.str.7106, i64 280, ptr @.str.7107) unreachable -ok10500: +ok11027: %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 %panic10501, label %ok10502 -panic10501: - call void @finch_panic(ptr @.str.6897, i64 280, ptr @.str.6898) + br i1 %t7, label %panic11028, label %ok11029 +panic11028: + call void @finch_panic(ptr @.str.7108, i64 280, ptr @.str.7109) unreachable -ok10502: +ok11029: %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 %then10503, label %endif10505 -then10503: + br i1 %t11, label %then11030, label %endif11032 +then11030: %t12 = load ptr, ptr %a1 %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic10506, label %ok10507 -panic10506: - call void @finch_panic(ptr @.str.6899, i64 281, ptr @.str.6900) + br i1 %t13, label %panic11033, label %ok11034 +panic11033: + call void @finch_panic(ptr @.str.7110, i64 281, ptr @.str.7111) unreachable -ok10507: +ok11034: %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 %panic10508, label %ok10509 -panic10508: - call void @finch_panic(ptr @.str.6901, i64 281, ptr @.str.6902) + br i1 %t16, label %panic11035, label %ok11036 +panic11035: + call void @finch_panic(ptr @.str.7112, i64 281, ptr @.str.7113) unreachable -ok10509: +ok11036: %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 %range10510, label %inrange10511 -range10510: - call void @finch_panic_index(ptr @.str.6903, i64 281, i64 %t18, i64 %t20) + br i1 %t21, label %range11037, label %inrange11038 +range11037: + call void @finch_panic_index(ptr @.str.7114, i64 281, i64 %t18, i64 %t20) unreachable -inrange10511: +inrange11038: %t22 = extractvalue { ptr, i64, i64 } %t19, 0 %t23 = getelementptr inbounds i8, ptr %t22, i64 %t18 %t24 = load i8, ptr %t23 ret i8 %t24 -endif10505: +endif11032: %t25 = trunc i64 0 to i8 ret i8 %t25 } @@ -92856,195 +110823,195 @@ define internal void @finch.json.skip_space(ptr %p0) { entry: %a1 = alloca ptr, align 16 store ptr %p0, ptr %a1 - br label %while.cond10512 -while.cond10512: + br label %while.cond11039 +while.cond11039: %t2 = load ptr, ptr %a1 %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic10515, label %ok10516 -panic10515: - call void @finch_panic(ptr @.str.6904, i64 287, ptr @.str.6905) + br i1 %t3, label %panic11042, label %ok11043 +panic11042: + call void @finch_panic(ptr @.str.7115, i64 287, ptr @.str.7116) unreachable -ok10516: +ok11043: %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 %panic10517, label %ok10518 -panic10517: - call void @finch_panic(ptr @.str.6906, i64 287, ptr @.str.6907) + br i1 %t7, label %panic11044, label %ok11045 +panic11044: + call void @finch_panic(ptr @.str.7117, i64 287, ptr @.str.7118) unreachable -ok10518: +ok11045: %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.from10519 -logic.from10519: - br i1 %t11, label %logic.rhs10520, label %logic.end10521 -logic.rhs10520: + br label %logic.from11046 +logic.from11046: + br i1 %t11, label %logic.rhs11047, label %logic.end11048 +logic.rhs11047: %t12 = load ptr, ptr %a1 %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic10522, label %ok10523 -panic10522: - call void @finch_panic(ptr @.str.6908, i64 287, ptr @.str.6909) + br i1 %t13, label %panic11049, label %ok11050 +panic11049: + call void @finch_panic(ptr @.str.7119, i64 287, ptr @.str.7120) unreachable -ok10523: +ok11050: %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 %panic10524, label %ok10525 -panic10524: - call void @finch_panic(ptr @.str.6910, i64 287, ptr @.str.6911) + br i1 %t16, label %panic11051, label %ok11052 +panic11051: + call void @finch_panic(ptr @.str.7121, i64 287, ptr @.str.7122) unreachable -ok10525: +ok11052: %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 %range10526, label %inrange10527 -range10526: - call void @finch_panic_index(ptr @.str.6912, i64 287, i64 %t18, i64 %t20) + br i1 %t21, label %range11053, label %inrange11054 +range11053: + call void @finch_panic_index(ptr @.str.7123, i64 287, i64 %t18, i64 %t20) unreachable -inrange10527: +inrange11054: %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.from10528 -logic.from10528: - br i1 %t25, label %logic.end10530, label %logic.rhs10529 -logic.rhs10529: + br label %logic.from11055 +logic.from11055: + br i1 %t25, label %logic.end11057, label %logic.rhs11056 +logic.rhs11056: %t26 = load ptr, ptr %a1 %t27 = icmp eq ptr %t26, null - br i1 %t27, label %panic10531, label %ok10532 -panic10531: - call void @finch_panic(ptr @.str.6913, i64 287, ptr @.str.6914) + br i1 %t27, label %panic11058, label %ok11059 +panic11058: + call void @finch_panic(ptr @.str.7124, i64 287, ptr @.str.7125) unreachable -ok10532: +ok11059: %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 %panic10533, label %ok10534 -panic10533: - call void @finch_panic(ptr @.str.6915, i64 287, ptr @.str.6916) + br i1 %t30, label %panic11060, label %ok11061 +panic11060: + call void @finch_panic(ptr @.str.7126, i64 287, ptr @.str.7127) unreachable -ok10534: +ok11061: %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 %range10535, label %inrange10536 -range10535: - call void @finch_panic_index(ptr @.str.6917, i64 287, i64 %t32, i64 %t34) + br i1 %t35, label %range11062, label %inrange11063 +range11062: + call void @finch_panic_index(ptr @.str.7128, i64 287, i64 %t32, i64 %t34) unreachable -inrange10536: +inrange11063: %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.rend10537 -logic.rend10537: - br label %logic.end10530 -logic.end10530: - %t40 = phi i1 [ true, %logic.from10528 ], [ %t39, %logic.rend10537 ] - br label %logic.from10538 -logic.from10538: - br i1 %t40, label %logic.end10540, label %logic.rhs10539 -logic.rhs10539: + br label %logic.rend11064 +logic.rend11064: + br label %logic.end11057 +logic.end11057: + %t40 = phi i1 [ true, %logic.from11055 ], [ %t39, %logic.rend11064 ] + br label %logic.from11065 +logic.from11065: + br i1 %t40, label %logic.end11067, label %logic.rhs11066 +logic.rhs11066: %t41 = load ptr, ptr %a1 %t42 = icmp eq ptr %t41, null - br i1 %t42, label %panic10541, label %ok10542 -panic10541: - call void @finch_panic(ptr @.str.6918, i64 287, ptr @.str.6919) + br i1 %t42, label %panic11068, label %ok11069 +panic11068: + call void @finch_panic(ptr @.str.7129, i64 287, ptr @.str.7130) unreachable -ok10542: +ok11069: %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 %panic10543, label %ok10544 -panic10543: - call void @finch_panic(ptr @.str.6920, i64 287, ptr @.str.6921) + br i1 %t45, label %panic11070, label %ok11071 +panic11070: + call void @finch_panic(ptr @.str.7131, i64 287, ptr @.str.7132) unreachable -ok10544: +ok11071: %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 %range10545, label %inrange10546 -range10545: - call void @finch_panic_index(ptr @.str.6922, i64 287, i64 %t47, i64 %t49) + br i1 %t50, label %range11072, label %inrange11073 +range11072: + call void @finch_panic_index(ptr @.str.7133, i64 287, i64 %t47, i64 %t49) unreachable -inrange10546: +inrange11073: %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.rend10547 -logic.rend10547: - br label %logic.end10540 -logic.end10540: - %t55 = phi i1 [ true, %logic.from10538 ], [ %t54, %logic.rend10547 ] - br label %logic.from10548 -logic.from10548: - br i1 %t55, label %logic.end10550, label %logic.rhs10549 -logic.rhs10549: + br label %logic.rend11074 +logic.rend11074: + br label %logic.end11067 +logic.end11067: + %t55 = phi i1 [ true, %logic.from11065 ], [ %t54, %logic.rend11074 ] + br label %logic.from11075 +logic.from11075: + br i1 %t55, label %logic.end11077, label %logic.rhs11076 +logic.rhs11076: %t56 = load ptr, ptr %a1 %t57 = icmp eq ptr %t56, null - br i1 %t57, label %panic10551, label %ok10552 -panic10551: - call void @finch_panic(ptr @.str.6923, i64 287, ptr @.str.6924) + br i1 %t57, label %panic11078, label %ok11079 +panic11078: + call void @finch_panic(ptr @.str.7134, i64 287, ptr @.str.7135) unreachable -ok10552: +ok11079: %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 %panic10553, label %ok10554 -panic10553: - call void @finch_panic(ptr @.str.6925, i64 287, ptr @.str.6926) + br i1 %t60, label %panic11080, label %ok11081 +panic11080: + call void @finch_panic(ptr @.str.7136, i64 287, ptr @.str.7137) unreachable -ok10554: +ok11081: %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 %range10555, label %inrange10556 -range10555: - call void @finch_panic_index(ptr @.str.6927, i64 287, i64 %t62, i64 %t64) + br i1 %t65, label %range11082, label %inrange11083 +range11082: + call void @finch_panic_index(ptr @.str.7138, i64 287, i64 %t62, i64 %t64) unreachable -inrange10556: +inrange11083: %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.rend10557 -logic.rend10557: - br label %logic.end10550 -logic.end10550: - %t70 = phi i1 [ true, %logic.from10548 ], [ %t69, %logic.rend10557 ] - br label %logic.rend10558 -logic.rend10558: - br label %logic.end10521 -logic.end10521: - %t71 = phi i1 [ false, %logic.from10519 ], [ %t70, %logic.rend10558 ] - br i1 %t71, label %while.body10513, label %while.end10514 -while.body10513: + br label %logic.rend11084 +logic.rend11084: + br label %logic.end11077 +logic.end11077: + %t70 = phi i1 [ true, %logic.from11075 ], [ %t69, %logic.rend11084 ] + br label %logic.rend11085 +logic.rend11085: + br label %logic.end11048 +logic.end11048: + %t71 = phi i1 [ false, %logic.from11046 ], [ %t70, %logic.rend11085 ] + br i1 %t71, label %while.body11040, label %while.end11041 +while.body11040: %t72 = load ptr, ptr %a1 %t73 = icmp eq ptr %t72, null - br i1 %t73, label %panic10559, label %ok10560 -panic10559: - call void @finch_panic(ptr @.str.6928, i64 288, ptr @.str.6929) + br i1 %t73, label %panic11086, label %ok11087 +panic11086: + call void @finch_panic(ptr @.str.7139, i64 288, ptr @.str.7140) unreachable -ok10560: +ok11087: %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.cond10512 -while.end10514: + br label %while.cond11039 +while.end11041: ret void } @@ -93058,134 +111025,167 @@ entry: %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 + %a21 = alloca { ptr, i64, i64 }, align 16 %a25 = 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 - %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 + %a31 = alloca { ptr, i64, i64 }, align 16 + %a32 = alloca { ptr, i64, i64 }, align 16 + %a33 = alloca { ptr, i64, i64 }, align 16 + %a34 = 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 + %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 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 + %a59 = alloca { ptr, i64, i64 }, align 16 %a62 = alloca { ptr, i64, i64 }, align 16 - %a66 = 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 %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 + %a74 = 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 + %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 + %a83 = 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 %panic10561, label %ok10562 -panic10561: - call void @finch_panic(ptr @.str.6930, i64 293, ptr @.str.6931) + br i1 %t4, label %panic11088, label %ok11089 +panic11088: + call void @finch_panic(ptr @.str.7141, i64 293, ptr @.str.7142) unreachable -ok10562: +ok11089: %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 %panic10563, label %ok10564 -panic10563: - call void @finch_panic(ptr @.str.6932, i64 293, ptr @.str.6933) + br i1 %t8, label %panic11090, label %ok11091 +panic11090: + call void @finch_panic(ptr @.str.7143, i64 293, ptr @.str.7144) unreachable -ok10564: +ok11091: %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 %then10565, label %endif10567 -then10565: + br i1 %t12, label %then11092, label %endif11094 +then11092: %t13 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.6934, i64 26, i64 0 }, ptr %a15 + store { ptr, i64, i64 } { ptr @.str.7145, 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.6935, i64 12, i64 0 }, ptr %a20 + store { ptr, i64, i64 } { ptr @.str.7146, 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.6936, 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 -endif10567: - %t32 = load ptr, ptr %a1 - %t33 = icmp eq ptr %t32, null - br i1 %t33, label %panic10568, label %ok10569 -panic10568: - call void @finch_panic(ptr @.str.6938, i64 296, ptr @.str.6939) + store { ptr, i64, i64 } %t17, ptr %a21 + call void @finch_str_drop(ptr %a21) + %t22 = load { ptr, i64, i64 }, ptr %a18 + %t23 = load ptr, ptr %a1 + %t24 = call { ptr, i64, i64 } @finch.json.where(ptr %t23) + store { ptr, i64, i64 } %t22, ptr %a26 + store { ptr, i64, i64 } %t24, ptr %a27 + call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) + store { ptr, i64, i64 } %t22, ptr %a28 + call void @finch_str_drop(ptr %a28) + store { ptr, i64, i64 } %t24, ptr %a29 + call void @finch_str_drop(ptr %a29) + %t30 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t30, ptr %a32 + store { ptr, i64, i64 } { ptr @.str.7147, i64 1, i64 0 }, ptr %a33 + call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) + store { ptr, i64, i64 } %t30, ptr %a34 + call void @finch_str_drop(ptr %a34) + %t35 = load { ptr, i64, i64 }, ptr %a31 + ret { ptr, i64, i64 } %t35 +endif11094: + %t36 = load ptr, ptr %a1 + %t37 = icmp eq ptr %t36, null + br i1 %t37, label %panic11095, label %ok11096 +panic11095: + call void @finch_panic(ptr @.str.7149, i64 296, ptr @.str.7150) unreachable -ok10569: - %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 %panic10570, label %ok10571 -panic10570: - call void @finch_panic(ptr @.str.6940, i64 296, ptr @.str.6941) +ok11096: + %t38 = getelementptr inbounds %S.json.Reader, ptr %t36, i32 0, i32 0 + %t39 = load ptr, ptr %a1 + %t40 = icmp eq ptr %t39, null + br i1 %t40, label %panic11097, label %ok11098 +panic11097: + call void @finch_panic(ptr @.str.7151, i64 296, ptr @.str.7152) unreachable -ok10571: - %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 %range10572, label %inrange10573 -range10572: - call void @finch_panic_index(ptr @.str.6942, i64 296, i64 %t38, i64 %t40) +ok11098: + %t41 = getelementptr inbounds %S.json.Reader, ptr %t39, i32 0, i32 1 + %t42 = load i64, ptr %t41 + %t43 = load { ptr, i64, i64 }, ptr %t38 + %t44 = extractvalue { ptr, i64, i64 } %t43, 1 + %t45 = icmp uge i64 %t42, %t44 + br i1 %t45, label %range11099, label %inrange11100 +range11099: + call void @finch_panic_index(ptr @.str.7153, i64 296, i64 %t42, i64 %t44) unreachable -inrange10573: - %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.6937, 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.6943, i64 8, i64 0 }, ptr %a53 +inrange11100: + %t46 = extractvalue { ptr, i64, i64 } %t43, 0 + %t47 = getelementptr inbounds i8, ptr %t46, i64 %t42 + %t48 = load i8, ptr %t47 + call void @finch_str_from_char(ptr %a49, i8 signext %t48) + %t50 = load { ptr, i64, i64 }, ptr %a49 + store { ptr, i64, i64 } { ptr @.str.7148, i64 13, 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 - %t55 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t54, ptr %a57 - store { ptr, i64, i64 } %t55, ptr %a58 + store { ptr, i64, i64 } %t50, ptr %a54 + call void @finch_str_drop(ptr %a54) + %t55 = load { ptr, i64, i64 }, ptr %a51 + store { ptr, i64, i64 } %t55, ptr %a57 + store { ptr, i64, i64 } { ptr @.str.7154, i64 8, 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 %a61 - store { ptr, i64, i64 } { ptr @.str.6944, 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.6945, 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 + store { ptr, i64, i64 } %t55, ptr %a59 + call void @finch_str_drop(ptr %a59) + %t60 = load { ptr, i64, i64 }, ptr %a56 + %t61 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t60, ptr %a63 + store { ptr, i64, i64 } %t61, ptr %a64 + call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) + store { ptr, i64, i64 } %t60, ptr %a65 + call void @finch_str_drop(ptr %a65) + %t66 = load { ptr, i64, i64 }, ptr %a62 + store { ptr, i64, i64 } %t66, ptr %a68 + store { ptr, i64, i64 } { ptr @.str.7155, i64 12, i64 0 }, ptr %a69 + call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) + store { ptr, i64, i64 } %t66, ptr %a70 + call void @finch_str_drop(ptr %a70) + %t71 = load { ptr, i64, i64 }, ptr %a67 + %t72 = load ptr, ptr %a1 + %t73 = call { ptr, i64, i64 } @finch.json.where(ptr %t72) + store { ptr, i64, i64 } %t71, ptr %a75 + store { ptr, i64, i64 } %t73, ptr %a76 + call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) + store { ptr, i64, i64 } %t71, ptr %a77 + call void @finch_str_drop(ptr %a77) + store { ptr, i64, i64 } %t73, ptr %a78 + call void @finch_str_drop(ptr %a78) + %t79 = load { ptr, i64, i64 }, ptr %a74 + store { ptr, i64, i64 } %t79, ptr %a81 + store { ptr, i64, i64 } { ptr @.str.7156, i64 1, i64 0 }, ptr %a82 + call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82) + store { ptr, i64, i64 } %t79, ptr %a83 + call void @finch_str_drop(ptr %a83) + %t84 = load { ptr, i64, i64 }, ptr %a80 + ret { ptr, i64, i64 } %t84 } define internal i1 @finch.json.comes(ptr %p0, { ptr, i64, i64 } %p1) { @@ -93196,79 +111196,82 @@ entry: %a21 = alloca { ptr, i64, i64 }, align 16 %a35 = alloca { ptr, i64, i64 }, align 16 %a36 = alloca { ptr, i64, i64 }, align 16 + %a39 = 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 %panic10574, label %ok10575 -panic10574: - call void @finch_panic(ptr @.str.6946, i64 301, ptr @.str.6947) + br i1 %t4, label %panic11101, label %ok11102 +panic11101: + call void @finch_panic(ptr @.str.7157, i64 301, ptr @.str.7158) unreachable -ok10575: +ok11102: %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 %panic10576, label %ok10577 -panic10576: - call void @finch_panic(ptr @.str.6948, i64 301, ptr @.str.6949) + br i1 %t9, label %panic11103, label %ok11104 +panic11103: + call void @finch_panic(ptr @.str.7159, i64 301, ptr @.str.7160) unreachable -ok10577: +ok11104: %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.from10578 -logic.from10578: - br i1 %t15, label %logic.rhs10579, label %logic.end10580 -logic.rhs10579: + br label %logic.from11105 +logic.from11105: + br i1 %t15, label %logic.rhs11106, label %logic.end11107 +logic.rhs11106: %t16 = load ptr, ptr %a1 %t17 = icmp eq ptr %t16, null - br i1 %t17, label %panic10581, label %ok10582 -panic10581: - call void @finch_panic(ptr @.str.6950, i64 301, ptr @.str.6951) + br i1 %t17, label %panic11108, label %ok11109 +panic11108: + call void @finch_panic(ptr @.str.7161, i64 301, ptr @.str.7162) unreachable -ok10582: +ok11109: %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 %panic10583, label %ok10584 -panic10583: - call void @finch_panic(ptr @.str.6953, i64 301, ptr @.str.6954) + br i1 %t23, label %panic11110, label %ok11111 +panic11110: + call void @finch_panic(ptr @.str.7164, i64 301, ptr @.str.7165) unreachable -ok10584: +ok11111: %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 %panic10585, label %ok10586 -panic10585: - call void @finch_panic(ptr @.str.6955, i64 301, ptr @.str.6956) + br i1 %t27, label %panic11112, label %ok11113 +panic11112: + call void @finch_panic(ptr @.str.7166, i64 301, ptr @.str.7167) unreachable -ok10586: +ok11113: %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.6952, i64 301) + call void @finch_str_sub(ptr %a21, ptr %a20, i64 %t25, i64 %t32, ptr @.str.7163, 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.rend10587 -logic.rend10587: - br label %logic.end10580 -logic.end10580: - %t39 = phi i1 [ false, %logic.from10578 ], [ %t38, %logic.rend10587 ] - ret i1 %t39 + store { ptr, i64, i64 } %t33, ptr %a39 + call void @finch_str_drop(ptr %a39) + br label %logic.rend11114 +logic.rend11114: + br label %logic.end11107 +logic.end11107: + %t40 = phi i1 [ false, %logic.from11105 ], [ %t38, %logic.rend11114 ] + ret i1 %t40 } define internal { i1, i8, { ptr, i64, i64 } } @finch.json.expect_word(ptr %p0, { ptr, i64, i64 } %p1) { @@ -93281,41 +111284,47 @@ entry: %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 + %a19 = 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 %then10588, label %endif10590 -then10588: + br i1 %t6, label %then11115, label %endif11117 +then11115: %t7 = load ptr, ptr %a1 %t8 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.6957, i64 1, i64 0 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.7168, 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.6958, i64 1, i64 0 }, ptr %a15 + store { ptr, i64, i64 } { ptr @.str.7169, 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 -endif10590: - %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 %panic10591, label %ok10592 -panic10591: - call void @finch_panic(ptr @.str.6959, i64 308, ptr @.str.6960) + store { ptr, i64, i64 } %t12, ptr %a16 + call void @finch_str_drop(ptr %a16) + %t17 = load { ptr, i64, i64 }, ptr %a13 + %t18 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t7, { ptr, i64, i64 } %t17) + store { ptr, i64, i64 } %t17, ptr %a19 + call void @finch_str_drop(ptr %a19) + %t20 = insertvalue { i1, i8, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t18, 2 + ret { i1, i8, { ptr, i64, i64 } } %t20 +endif11117: + %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t22 = load i64, ptr %t21 + %t23 = load ptr, ptr %a1 + %t24 = icmp eq ptr %t23, null + br i1 %t24, label %panic11118, label %ok11119 +panic11118: + call void @finch_panic(ptr @.str.7170, i64 308, ptr @.str.7171) unreachable -ok10592: - %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 +ok11119: + %t25 = getelementptr inbounds %S.json.Reader, ptr %t23, i32 0, i32 1 + %t26 = load i64, ptr %t25 + %t27 = add i64 %t26, %t22 + store i64 %t27, ptr %t25 ret { i1, i8, { ptr, i64, i64 } } { i1 true, i8 0, { ptr, i64, i64 } zeroinitializer } } @@ -93325,69 +111334,69 @@ entry: store i8 %p0, ptr %a1 %t2 = load i8, ptr %a1 %t3 = icmp uge i8 %t2, 48 - br label %logic.from10593 -logic.from10593: - br i1 %t3, label %logic.rhs10594, label %logic.end10595 -logic.rhs10594: + br label %logic.from11120 +logic.from11120: + br i1 %t3, label %logic.rhs11121, label %logic.end11122 +logic.rhs11121: %t4 = load i8, ptr %a1 %t5 = icmp ule i8 %t4, 57 - br label %logic.rend10596 -logic.rend10596: - br label %logic.end10595 -logic.end10595: - %t6 = phi i1 [ false, %logic.from10593 ], [ %t5, %logic.rend10596 ] - br i1 %t6, label %then10597, label %endif10599 -then10597: + br label %logic.rend11123 +logic.rend11123: + br label %logic.end11122 +logic.end11122: + %t6 = phi i1 [ false, %logic.from11120 ], [ %t5, %logic.rend11123 ] + br i1 %t6, label %then11124, label %endif11126 +then11124: %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 -endif10599: +endif11126: %t11 = load i8, ptr %a1 %t12 = icmp uge i8 %t11, 97 - br label %logic.from10600 -logic.from10600: - br i1 %t12, label %logic.rhs10601, label %logic.end10602 -logic.rhs10601: + br label %logic.from11127 +logic.from11127: + br i1 %t12, label %logic.rhs11128, label %logic.end11129 +logic.rhs11128: %t13 = load i8, ptr %a1 %t14 = icmp ule i8 %t13, 102 - br label %logic.rend10603 -logic.rend10603: - br label %logic.end10602 -logic.end10602: - %t15 = phi i1 [ false, %logic.from10600 ], [ %t14, %logic.rend10603 ] - br i1 %t15, label %then10604, label %endif10606 -then10604: + br label %logic.rend11130 +logic.rend11130: + br label %logic.end11129 +logic.end11129: + %t15 = phi i1 [ false, %logic.from11127 ], [ %t14, %logic.rend11130 ] + br i1 %t15, label %then11131, label %endif11133 +then11131: %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 -endif10606: +endif11133: %t21 = load i8, ptr %a1 %t22 = icmp uge i8 %t21, 65 - br label %logic.from10607 -logic.from10607: - br i1 %t22, label %logic.rhs10608, label %logic.end10609 -logic.rhs10608: + br label %logic.from11134 +logic.from11134: + br i1 %t22, label %logic.rhs11135, label %logic.end11136 +logic.rhs11135: %t23 = load i8, ptr %a1 %t24 = icmp ule i8 %t23, 70 - br label %logic.rend10610 -logic.rend10610: - br label %logic.end10609 -logic.end10609: - %t25 = phi i1 [ false, %logic.from10607 ], [ %t24, %logic.rend10610 ] - br i1 %t25, label %then10611, label %endif10613 -then10611: + br label %logic.rend11137 +logic.rend11137: + br label %logic.end11136 +logic.end11136: + %t25 = phi i1 [ false, %logic.from11134 ], [ %t24, %logic.rend11137 ] + br i1 %t25, label %then11138, label %endif11140 +then11138: %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 -endif10613: +endif11140: ret i64 -1 } @@ -93401,8 +111410,8 @@ entry: store { ptr, i64, i64 } zeroinitializer, ptr %a2 %t3 = load i64, ptr %a1 %t4 = icmp slt i64 %t3, 128 - br i1 %t4, label %then10614, label %else10615 -then10614: + br i1 %t4, label %then11141, label %else11142 +then11141: %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 %t6 = load i64, ptr %a1 %t7 = trunc i64 %t6 to i8 @@ -93413,12 +111422,12 @@ then10614: %t11 = getelementptr inbounds i8, ptr %t10, i64 %t8 store i8 %t7, ptr %t11 store i64 %t9, ptr %t5 - br label %endif10616 -else10615: + br label %endif11143 +else11142: %t12 = load i64, ptr %a1 %t13 = icmp slt i64 %t12, 2048 - br i1 %t13, label %then10617, label %else10618 -then10617: + br i1 %t13, label %then11144, label %else11145 +then11144: %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 %t15 = load i64, ptr %a1 %t16 = sdiv i64 %t15, 64 @@ -93443,12 +111452,12 @@ then10617: %t31 = getelementptr inbounds i8, ptr %t30, i64 %t28 store i8 %t27, ptr %t31 store i64 %t29, ptr %t23 - br label %endif10619 -else10618: + br label %endif11146 +else11145: %t32 = load i64, ptr %a1 %t33 = icmp slt i64 %t32, 65536 - br i1 %t33, label %then10620, label %else10621 -then10620: + br i1 %t33, label %then11147, label %else11148 +then11147: %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 %t35 = load i64, ptr %a1 %t36 = sdiv i64 %t35, 4096 @@ -93486,8 +111495,8 @@ then10620: %t61 = getelementptr inbounds i8, ptr %t60, i64 %t58 store i8 %t57, ptr %t61 store i64 %t59, ptr %t53 - br label %endif10622 -else10621: + br label %endif11149 +else11148: %t62 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 %t63 = load i64, ptr %a1 %t64 = sdiv i64 %t63, 262144 @@ -93538,17 +111547,18 @@ else10621: %t99 = getelementptr inbounds i8, ptr %t98, i64 %t96 store i8 %t95, ptr %t99 store i64 %t97, ptr %t91 - br label %endif10622 -endif10622: - br label %endif10619 -endif10619: - br label %endif10616 -endif10616: + br label %endif11149 +endif11149: + br label %endif11146 +endif11146: + br label %endif11143 +endif11143: %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 + call void @finch.drop.arr_u8(ptr %a2) ret { ptr, i64, i64 } %t103 } @@ -93560,105 +111570,105 @@ entry: store ptr %p0, ptr %a1 store i64 0, ptr %a2 store i64 0, ptr %a3 - br label %for.cond10623 -for.cond10623: + br label %for.cond11150 +for.cond11150: %t4 = load i64, ptr %a3 %t5 = icmp slt i64 %t4, 4 - br i1 %t5, label %for.body10624, label %for.end10626 -for.body10624: + br i1 %t5, label %for.body11151, label %for.end11153 +for.body11151: %t6 = load ptr, ptr %a1 %t7 = icmp eq ptr %t6, null - br i1 %t7, label %panic10627, label %ok10628 -panic10627: - call void @finch_panic(ptr @.str.6961, i64 348, ptr @.str.6962) + br i1 %t7, label %panic11154, label %ok11155 +panic11154: + call void @finch_panic(ptr @.str.7172, i64 348, ptr @.str.7173) unreachable -ok10628: +ok11155: %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 %panic10629, label %ok10630 -panic10629: - call void @finch_panic(ptr @.str.6963, i64 348, ptr @.str.6964) + br i1 %t11, label %panic11156, label %ok11157 +panic11156: + call void @finch_panic(ptr @.str.7174, i64 348, ptr @.str.7175) unreachable -ok10630: +ok11157: %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.from10631 -logic.from10631: - br i1 %t15, label %logic.end10633, label %logic.rhs10632 -logic.rhs10632: + br label %logic.from11158 +logic.from11158: + br i1 %t15, label %logic.end11160, label %logic.rhs11159 +logic.rhs11159: %t16 = load ptr, ptr %a1 %t17 = icmp eq ptr %t16, null - br i1 %t17, label %panic10634, label %ok10635 -panic10634: - call void @finch_panic(ptr @.str.6965, i64 348, ptr @.str.6966) + br i1 %t17, label %panic11161, label %ok11162 +panic11161: + call void @finch_panic(ptr @.str.7176, i64 348, ptr @.str.7177) unreachable -ok10635: +ok11162: %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 %panic10636, label %ok10637 -panic10636: - call void @finch_panic(ptr @.str.6967, i64 348, ptr @.str.6968) + br i1 %t20, label %panic11163, label %ok11164 +panic11163: + call void @finch_panic(ptr @.str.7178, i64 348, ptr @.str.7179) unreachable -ok10637: +ok11164: %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 %range10638, label %inrange10639 -range10638: - call void @finch_panic_index(ptr @.str.6969, i64 348, i64 %t22, i64 %t24) + br i1 %t25, label %range11165, label %inrange11166 +range11165: + call void @finch_panic_index(ptr @.str.7180, i64 348, i64 %t22, i64 %t24) unreachable -inrange10639: +inrange11166: %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.rend10640 -logic.rend10640: - br label %logic.end10633 -logic.end10633: - %t31 = phi i1 [ true, %logic.from10631 ], [ %t30, %logic.rend10640 ] - br i1 %t31, label %then10641, label %endif10643 -then10641: + br label %logic.rend11167 +logic.rend11167: + br label %logic.end11160 +logic.end11160: + %t31 = phi i1 [ true, %logic.from11158 ], [ %t30, %logic.rend11167 ] + br i1 %t31, label %then11168, label %endif11170 +then11168: %t32 = load ptr, ptr %a1 - %t33 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t32, { ptr, i64, i64 } { ptr @.str.6970, i64 19, i64 0 }) + %t33 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t32, { ptr, i64, i64 } { ptr @.str.7181, i64 19, i64 0 }) %t34 = insertvalue { i1, i64, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t33, 2 ret { i1, i64, { ptr, i64, i64 } } %t34 -endif10643: +endif11170: %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 %panic10644, label %ok10645 -panic10644: - call void @finch_panic(ptr @.str.6971, i64 351, ptr @.str.6972) + br i1 %t38, label %panic11171, label %ok11172 +panic11171: + call void @finch_panic(ptr @.str.7182, i64 351, ptr @.str.7183) unreachable -ok10645: +ok11172: %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 %panic10646, label %ok10647 -panic10646: - call void @finch_panic(ptr @.str.6973, i64 351, ptr @.str.6974) + br i1 %t41, label %panic11173, label %ok11174 +panic11173: + call void @finch_panic(ptr @.str.7184, i64 351, ptr @.str.7185) unreachable -ok10647: +ok11174: %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 %range10648, label %inrange10649 -range10648: - call void @finch_panic_index(ptr @.str.6975, i64 351, i64 %t43, i64 %t45) + br i1 %t46, label %range11175, label %inrange11176 +range11175: + call void @finch_panic_index(ptr @.str.7186, i64 351, i64 %t43, i64 %t45) unreachable -inrange10649: +inrange11176: %t47 = extractvalue { ptr, i64, i64 } %t44, 0 %t48 = getelementptr inbounds i8, ptr %t47, i64 %t43 %t49 = load i8, ptr %t48 @@ -93667,22 +111677,22 @@ inrange10649: store i64 %t51, ptr %a2 %t52 = load ptr, ptr %a1 %t53 = icmp eq ptr %t52, null - br i1 %t53, label %panic10650, label %ok10651 -panic10650: - call void @finch_panic(ptr @.str.6976, i64 352, ptr @.str.6977) + br i1 %t53, label %panic11177, label %ok11178 +panic11177: + call void @finch_panic(ptr @.str.7187, i64 352, ptr @.str.7188) unreachable -ok10651: +ok11178: %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.step10625 -for.step10625: + br label %for.step11152 +for.step11152: %t57 = load i64, ptr %a3 %t58 = add i64 %t57, 1 store i64 %t58, ptr %a3 - br label %for.cond10623 -for.end10626: + br label %for.cond11150 +for.end11153: %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 @@ -93697,47 +111707,56 @@ entry: %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 + %a28 = 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 + %a32 = alloca { ptr, i64, i64 }, align 16 + %a33 = alloca { ptr, i64, i64 }, align 16 + %a49 = alloca i8, align 16 + %a57 = alloca { ptr, i64, i64 }, align 16 + %a58 = alloca { ptr, i64, i64 }, align 16 + %a75 = alloca { ptr, i64, i64 }, align 16 + %a76 = alloca { ptr, i64, i64 }, align 16 %a85 = alloca { ptr, i64, i64 }, align 16 + %a86 = 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 + %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 + %a108 = alloca { ptr, i64, i64 }, align 16 + %a109 = alloca { ptr, i64, i64 }, align 16 + %a127 = alloca i8, align 16 + %a180 = alloca { ptr, i64, i64 }, align 16 + %a195 = alloca i64, align 16 + %a216 = alloca 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 + %a237 = alloca { ptr, i64, i64 }, align 16 + %a239 = 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 + %a247 = alloca { ptr, i64, i64 }, align 16 + %a248 = alloca { ptr, i64, i64 }, align 16 + %a249 = alloca { ptr, i64, i64 }, align 16 + %a250 = alloca { ptr, i64, i64 }, align 16 + %a252 = 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 store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic10652, label %ok10653 -panic10652: - call void @finch_panic(ptr @.str.6978, i64 358, ptr @.str.6979) + br i1 %t3, label %panic11179, label %ok11180 +panic11179: + call void @finch_panic(ptr @.str.7189, i64 358, ptr @.str.7190) unreachable -ok10653: +ok11180: %t4 = getelementptr inbounds %S.json.Reader, ptr %t2, i32 0, i32 1 %t5 = load i64, ptr %t4 %t6 = add i64 %t5, 1 @@ -93745,470 +111764,494 @@ ok10653: store { ptr, i64, i64 } zeroinitializer, ptr %a7 %t8 = load ptr, ptr %a1 %t9 = icmp eq ptr %t8, null - br i1 %t9, label %panic10654, label %ok10655 -panic10654: - call void @finch_panic(ptr @.str.6980, i64 360, ptr @.str.6981) + br i1 %t9, label %panic11181, label %ok11182 +panic11181: + call void @finch_panic(ptr @.str.7191, i64 360, ptr @.str.7192) unreachable -ok10655: +ok11182: %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.cond10656 -while.cond10656: - br label %while.body10657 -while.body10657: + br label %while.cond11183 +while.cond11183: + br label %while.body11184 +while.body11184: %t13 = load ptr, ptr %a1 %t14 = icmp eq ptr %t13, null - br i1 %t14, label %panic10659, label %ok10660 -panic10659: - call void @finch_panic(ptr @.str.6982, i64 362, ptr @.str.6983) + br i1 %t14, label %panic11186, label %ok11187 +panic11186: + call void @finch_panic(ptr @.str.7193, i64 362, ptr @.str.7194) unreachable -ok10660: +ok11187: %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 %panic10661, label %ok10662 -panic10661: - call void @finch_panic(ptr @.str.6984, i64 362, ptr @.str.6985) + br i1 %t18, label %panic11188, label %ok11189 +panic11188: + call void @finch_panic(ptr @.str.7195, i64 362, ptr @.str.7196) unreachable -ok10662: +ok11189: %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 %then10663, label %endif10665 -then10663: + br i1 %t22, label %then11190, label %endif11192 +then11190: %t23 = load ptr, ptr %a1 %t24 = call { ptr, i64, i64 } @finch.json.where(ptr %t23) - store { ptr, i64, i64 } { ptr @.str.6986, i64 30, i64 0 }, ptr %a26 + store { ptr, i64, i64 } { ptr @.str.7197, 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.6987, 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 -endif10665: - %t34 = load ptr, ptr %a1 - %t35 = icmp eq ptr %t34, null - br i1 %t35, label %panic10666, label %ok10667 -panic10666: - call void @finch_panic(ptr @.str.6988, i64 365, ptr @.str.6989) + store { ptr, i64, i64 } %t24, ptr %a28 + call void @finch_str_drop(ptr %a28) + %t29 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t29, ptr %a31 + store { ptr, i64, i64 } { ptr @.str.7198, i64 1, i64 0 }, ptr %a32 + call void @finch_str_concat(ptr %a30, ptr %a31, ptr %a32) + store { ptr, i64, i64 } %t29, ptr %a33 + call void @finch_str_drop(ptr %a33) + %t34 = load { ptr, i64, i64 }, ptr %a30 + call void @finch.drop.arr_str(ptr %a7) + %t35 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t34, 2 + ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t35 +endif11192: + %t36 = load ptr, ptr %a1 + %t37 = icmp eq ptr %t36, null + br i1 %t37, label %panic11193, label %ok11194 +panic11193: + call void @finch_panic(ptr @.str.7199, i64 365, ptr @.str.7200) unreachable -ok10667: - %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 %panic10668, label %ok10669 -panic10668: - call void @finch_panic(ptr @.str.6990, i64 365, ptr @.str.6991) +ok11194: + %t38 = getelementptr inbounds %S.json.Reader, ptr %t36, i32 0, i32 0 + %t39 = load ptr, ptr %a1 + %t40 = icmp eq ptr %t39, null + br i1 %t40, label %panic11195, label %ok11196 +panic11195: + call void @finch_panic(ptr @.str.7201, i64 365, ptr @.str.7202) unreachable -ok10669: - %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 %range10670, label %inrange10671 -range10670: - call void @finch_panic_index(ptr @.str.6992, i64 365, i64 %t40, i64 %t42) +ok11196: + %t41 = getelementptr inbounds %S.json.Reader, ptr %t39, i32 0, i32 1 + %t42 = load i64, ptr %t41 + %t43 = load { ptr, i64, i64 }, ptr %t38 + %t44 = extractvalue { ptr, i64, i64 } %t43, 1 + %t45 = icmp uge i64 %t42, %t44 + br i1 %t45, label %range11197, label %inrange11198 +range11197: + call void @finch_panic_index(ptr @.str.7203, i64 365, i64 %t42, i64 %t44) unreachable -inrange10671: - %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 %then10672, label %endif10674 -then10672: - %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 %panic10675, label %ok10676 -panic10675: - call void @finch_panic(ptr @.str.6993, i64 367, ptr @.str.6994) +inrange11198: + %t46 = extractvalue { ptr, i64, i64 } %t43, 0 + %t47 = getelementptr inbounds i8, ptr %t46, i64 %t42 + %t48 = load i8, ptr %t47 + store i8 %t48, ptr %a49 + %t50 = load i8, ptr %a49 + %t51 = icmp eq i8 %t50, 34 + br i1 %t51, label %then11199, label %endif11201 +then11199: + %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 + %t53 = load ptr, ptr %a1 + %t54 = icmp eq ptr %t53, null + br i1 %t54, label %panic11202, label %ok11203 +panic11202: + call void @finch_panic(ptr @.str.7204, i64 367, ptr @.str.7205) unreachable -ok10676: - %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 %panic10677, label %ok10678 -panic10677: - call void @finch_panic(ptr @.str.6996, i64 367, ptr @.str.6997) +ok11203: + %t55 = getelementptr inbounds %S.json.Reader, ptr %t53, i32 0, i32 0 + %t56 = load { ptr, i64, i64 }, ptr %t55 + store { ptr, i64, i64 } %t56, ptr %a57 + %t59 = load i64, ptr %a12 + %t60 = load ptr, ptr %a1 + %t61 = icmp eq ptr %t60, null + br i1 %t61, label %panic11204, label %ok11205 +panic11204: + call void @finch_panic(ptr @.str.7207, i64 367, ptr @.str.7208) unreachable -ok10678: - %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.6995, 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 %panic10679, label %ok10680 -panic10679: - call void @finch_panic(ptr @.str.6998, i64 368, ptr @.str.6999) +ok11205: + %t62 = getelementptr inbounds %S.json.Reader, ptr %t60, i32 0, i32 1 + %t63 = load i64, ptr %t62 + call void @finch_str_sub(ptr %a58, ptr %a57, i64 %t59, i64 %t63, ptr @.str.7206, i64 367) + %t64 = load { ptr, i64, i64 }, ptr %a58 + %t65 = load i64, ptr %t52 + %t66 = add i64 %t65, 1 + call void @finch_arr_reserve(ptr %a7, i64 %t66, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t67 = load ptr, ptr %a7 + %t68 = getelementptr inbounds { ptr, i64, i64 }, ptr %t67, i64 %t65 + store { ptr, i64, i64 } %t64, ptr %t68 + store i64 %t66, ptr %t52 + %t69 = load ptr, ptr %a1 + %t70 = icmp eq ptr %t69, null + br i1 %t70, label %panic11206, label %ok11207 +panic11206: + call void @finch_panic(ptr @.str.7209, i64 368, ptr @.str.7210) unreachable -ok10680: - %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.7000, 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 -endif10674: - %t78 = load i8, ptr %a47 - %t79 = zext i8 %t78 to i64 - %t80 = icmp slt i64 %t79, 32 - br i1 %t80, label %then10681, label %endif10683 -then10681: - %t81 = load ptr, ptr %a1 - %t82 = call { ptr, i64, i64 } @finch.json.where(ptr %t81) - store { ptr, i64, i64 } { ptr @.str.7001, 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.7002, 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 -endif10683: - %t92 = load i8, ptr %a47 - %t93 = icmp ne i8 %t92, 92 - br i1 %t93, label %then10684, label %endif10686 -then10684: - %t94 = load ptr, ptr %a1 - %t95 = icmp eq ptr %t94, null - br i1 %t95, label %panic10687, label %ok10688 -panic10687: - call void @finch_panic(ptr @.str.7003, i64 375, ptr @.str.7004) +ok11207: + %t71 = getelementptr inbounds %S.json.Reader, ptr %t69, i32 0, i32 1 + %t72 = load i64, ptr %t71 + %t73 = add i64 %t72, 1 + store i64 %t73, ptr %t71 + %t74 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.7211, i64 0, i64 0 }, ptr %a75 + call void @finch_str_join(ptr %a76, ptr %a7, ptr %a75) + %t77 = load { ptr, i64, i64 }, ptr %a76 + call void @finch.drop.arr_str(ptr %a7) + %t78 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 + %t79 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t78, { ptr, i64, i64 } %t77, 1 + ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t79 +endif11201: + %t80 = load i8, ptr %a49 + %t81 = zext i8 %t80 to i64 + %t82 = icmp slt i64 %t81, 32 + br i1 %t82, label %then11208, label %endif11210 +then11208: + %t83 = load ptr, ptr %a1 + %t84 = call { ptr, i64, i64 } @finch.json.where(ptr %t83) + store { ptr, i64, i64 } { ptr @.str.7212, i64 55, i64 0 }, ptr %a86 + store { ptr, i64, i64 } %t84, ptr %a87 + call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) + store { ptr, i64, i64 } %t84, ptr %a88 + call void @finch_str_drop(ptr %a88) + %t89 = load { ptr, i64, i64 }, ptr %a85 + store { ptr, i64, i64 } %t89, ptr %a91 + store { ptr, i64, i64 } { ptr @.str.7213, i64 1, i64 0 }, ptr %a92 + call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92) + store { ptr, i64, i64 } %t89, ptr %a93 + call void @finch_str_drop(ptr %a93) + %t94 = load { ptr, i64, i64 }, ptr %a90 + call void @finch.drop.arr_str(ptr %a7) + %t95 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t94, 2 + ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t95 +endif11210: + %t96 = load i8, ptr %a49 + %t97 = icmp ne i8 %t96, 92 + br i1 %t97, label %then11211, label %endif11213 +then11211: + %t98 = load ptr, ptr %a1 + %t99 = icmp eq ptr %t98, null + br i1 %t99, label %panic11214, label %ok11215 +panic11214: + call void @finch_panic(ptr @.str.7214, i64 375, ptr @.str.7215) unreachable -ok10688: - %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.cond10656 -endif10686: - %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 %panic10689, label %ok10690 -panic10689: - call void @finch_panic(ptr @.str.7005, i64 378, ptr @.str.7006) +ok11215: + %t100 = getelementptr inbounds %S.json.Reader, ptr %t98, i32 0, i32 1 + %t101 = load i64, ptr %t100 + %t102 = add i64 %t101, 1 + store i64 %t102, ptr %t100 + br label %while.cond11183 +endif11213: + %t103 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 + %t104 = load ptr, ptr %a1 + %t105 = icmp eq ptr %t104, null + br i1 %t105, label %panic11216, label %ok11217 +panic11216: + call void @finch_panic(ptr @.str.7216, i64 378, ptr @.str.7217) unreachable -ok10690: - %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 %panic10691, label %ok10692 -panic10691: - call void @finch_panic(ptr @.str.7008, i64 378, ptr @.str.7009) +ok11217: + %t106 = getelementptr inbounds %S.json.Reader, ptr %t104, i32 0, i32 0 + %t107 = load { ptr, i64, i64 }, ptr %t106 + store { ptr, i64, i64 } %t107, ptr %a108 + %t110 = load i64, ptr %a12 + %t111 = load ptr, ptr %a1 + %t112 = icmp eq ptr %t111, null + br i1 %t112, label %panic11218, label %ok11219 +panic11218: + call void @finch_panic(ptr @.str.7219, i64 378, ptr @.str.7220) unreachable -ok10692: - %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.7007, 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 %panic10693, label %ok10694 -panic10693: - call void @finch_panic(ptr @.str.7010, i64 379, ptr @.str.7011) +ok11219: + %t113 = getelementptr inbounds %S.json.Reader, ptr %t111, i32 0, i32 1 + %t114 = load i64, ptr %t113 + call void @finch_str_sub(ptr %a109, ptr %a108, i64 %t110, i64 %t114, ptr @.str.7218, i64 378) + %t115 = load { ptr, i64, i64 }, ptr %a109 + %t116 = load i64, ptr %t103 + %t117 = add i64 %t116, 1 + call void @finch_arr_reserve(ptr %a7, i64 %t117, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t118 = load ptr, ptr %a7 + %t119 = getelementptr inbounds { ptr, i64, i64 }, ptr %t118, i64 %t116 + store { ptr, i64, i64 } %t115, ptr %t119 + store i64 %t117, ptr %t103 + %t120 = load ptr, ptr %a1 + %t121 = icmp eq ptr %t120, null + br i1 %t121, label %panic11220, label %ok11221 +panic11220: + call void @finch_panic(ptr @.str.7221, i64 379, ptr @.str.7222) unreachable -ok10694: - %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 %panic10695, label %ok10696 -panic10695: - call void @finch_panic(ptr @.str.7012, i64 381, ptr @.str.7013) +ok11221: + %t122 = getelementptr inbounds %S.json.Reader, ptr %t120, i32 0, i32 1 + %t123 = load i64, ptr %t122 + %t124 = add i64 %t123, 1 + store i64 %t124, ptr %t122 + %t125 = load ptr, ptr %a1 + %t126 = call i8 @finch.json.peek(ptr %t125) + store i8 %t126, ptr %a127 + %t128 = load ptr, ptr %a1 + %t129 = icmp eq ptr %t128, null + br i1 %t129, label %panic11222, label %ok11223 +panic11222: + call void @finch_panic(ptr @.str.7223, i64 381, ptr @.str.7224) unreachable -ok10696: - %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 %then10697, label %else10698 -then10697: - %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.7014, i64 1, i64 0 }, ptr %t135 - store i64 %t133, ptr %t131 - br label %endif10699 -else10698: - %t136 = load i8, ptr %a123 - %t137 = icmp eq i8 %t136, 116 - br i1 %t137, label %then10700, label %else10701 -then10700: - %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.7015, i64 1, i64 0 }, ptr %t142 - store i64 %t140, ptr %t138 - br label %endif10702 -else10701: - %t143 = load i8, ptr %a123 - %t144 = icmp eq i8 %t143, 114 - br i1 %t144, label %then10703, label %else10704 -then10703: - %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.7016, i64 1, i64 0 }, ptr %t149 - store i64 %t147, ptr %t145 - br label %endif10705 -else10704: - %t150 = load i8, ptr %a123 - %t151 = icmp eq i8 %t150, 98 - br i1 %t151, label %then10706, label %else10707 -then10706: - %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 %endif10708 -else10707: - %t158 = load i8, ptr %a123 - %t159 = icmp eq i8 %t158, 102 - br i1 %t159, label %then10709, label %else10710 -then10709: - %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 %endif10711 -else10710: - %t166 = load i8, ptr %a123 - %t167 = icmp eq i8 %t166, 34 - br label %logic.from10712 -logic.from10712: - br i1 %t167, label %logic.end10714, label %logic.rhs10713 -logic.rhs10713: - %t168 = load i8, ptr %a123 - %t169 = icmp eq i8 %t168, 92 - br label %logic.rend10715 -logic.rend10715: - br label %logic.end10714 -logic.end10714: - %t170 = phi i1 [ true, %logic.from10712 ], [ %t169, %logic.rend10715 ] - br label %logic.from10716 -logic.from10716: - br i1 %t170, label %logic.end10718, label %logic.rhs10717 -logic.rhs10717: - %t171 = load i8, ptr %a123 - %t172 = icmp eq i8 %t171, 47 - br label %logic.rend10719 -logic.rend10719: - br label %logic.end10718 -logic.end10718: - %t173 = phi i1 [ true, %logic.from10716 ], [ %t172, %logic.rend10719 ] - br i1 %t173, label %then10720, label %else10721 -then10720: - %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 %endif10722 -else10721: - %t182 = load i8, ptr %a123 - %t183 = icmp eq i8 %t182, 117 - br i1 %t183, label %then10723, label %else10724 -then10723: - %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.failed10726, label %try.ok10727 -try.failed10726: - %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.ok10727: - store i64 %t189, ptr %a191 - %t192 = load i64, ptr %a191 - %t193 = icmp sge i64 %t192, 55296 - br label %logic.from10728 -logic.from10728: - br i1 %t193, label %logic.rhs10729, label %logic.end10730 -logic.rhs10729: - %t194 = load i64, ptr %a191 - %t195 = icmp slt i64 %t194, 56320 - br label %logic.rend10731 -logic.rend10731: - br label %logic.end10730 -logic.end10730: - %t196 = phi i1 [ false, %logic.from10728 ], [ %t195, %logic.rend10731 ] - br label %logic.from10732 -logic.from10732: - br i1 %t196, label %logic.rhs10733, label %logic.end10734 -logic.rhs10733: - %t197 = load ptr, ptr %a1 - %t198 = call i1 @finch.json.comes(ptr %t197, { ptr, i64, i64 } { ptr @.str.7017, i64 2, i64 0 }) - br label %logic.rend10735 -logic.rend10735: - br label %logic.end10734 -logic.end10734: - %t199 = phi i1 [ false, %logic.from10732 ], [ %t198, %logic.rend10735 ] - br i1 %t199, label %then10736, label %endif10738 -then10736: - %t200 = load ptr, ptr %a1 - %t201 = icmp eq ptr %t200, null - br i1 %t201, label %panic10739, label %ok10740 -panic10739: - call void @finch_panic(ptr @.str.7018, i64 398, ptr @.str.7019) +ok11223: + %t130 = getelementptr inbounds %S.json.Reader, ptr %t128, i32 0, i32 1 + %t131 = load i64, ptr %t130 + %t132 = add i64 %t131, 1 + store i64 %t132, ptr %t130 + %t133 = load i8, ptr %a127 + %t134 = icmp eq i8 %t133, 110 + br i1 %t134, label %then11224, label %else11225 +then11224: + %t135 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 + %t136 = load i64, ptr %t135 + %t137 = add i64 %t136, 1 + call void @finch_arr_reserve(ptr %a7, i64 %t137, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t138 = load ptr, ptr %a7 + %t139 = getelementptr inbounds { ptr, i64, i64 }, ptr %t138, i64 %t136 + store { ptr, i64, i64 } { ptr @.str.7225, i64 1, i64 0 }, ptr %t139 + store i64 %t137, ptr %t135 + br label %endif11226 +else11225: + %t140 = load i8, ptr %a127 + %t141 = icmp eq i8 %t140, 116 + br i1 %t141, label %then11227, label %else11228 +then11227: + %t142 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 + %t143 = load i64, ptr %t142 + %t144 = add i64 %t143, 1 + call void @finch_arr_reserve(ptr %a7, i64 %t144, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t145 = load ptr, ptr %a7 + %t146 = getelementptr inbounds { ptr, i64, i64 }, ptr %t145, i64 %t143 + store { ptr, i64, i64 } { ptr @.str.7226, i64 1, i64 0 }, ptr %t146 + store i64 %t144, ptr %t142 + br label %endif11229 +else11228: + %t147 = load i8, ptr %a127 + %t148 = icmp eq i8 %t147, 114 + br i1 %t148, label %then11230, label %else11231 +then11230: + %t149 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 + %t150 = load i64, ptr %t149 + %t151 = add i64 %t150, 1 + call void @finch_arr_reserve(ptr %a7, i64 %t151, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t152 = load ptr, ptr %a7 + %t153 = getelementptr inbounds { ptr, i64, i64 }, ptr %t152, i64 %t150 + store { ptr, i64, i64 } { ptr @.str.7227, i64 1, i64 0 }, ptr %t153 + store i64 %t151, ptr %t149 + br label %endif11232 +else11231: + %t154 = load i8, ptr %a127 + %t155 = icmp eq i8 %t154, 98 + br i1 %t155, label %then11233, label %else11234 +then11233: + %t156 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 + %t157 = call { ptr, i64, i64 } @finch.json.utf8(i64 8) + %t158 = load i64, ptr %t156 + %t159 = add i64 %t158, 1 + call void @finch_arr_reserve(ptr %a7, i64 %t159, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t160 = load ptr, ptr %a7 + %t161 = getelementptr inbounds { ptr, i64, i64 }, ptr %t160, i64 %t158 + store { ptr, i64, i64 } %t157, ptr %t161 + store i64 %t159, ptr %t156 + br label %endif11235 +else11234: + %t162 = load i8, ptr %a127 + %t163 = icmp eq i8 %t162, 102 + br i1 %t163, label %then11236, label %else11237 +then11236: + %t164 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 + %t165 = call { ptr, i64, i64 } @finch.json.utf8(i64 12) + %t166 = load i64, ptr %t164 + %t167 = add i64 %t166, 1 + call void @finch_arr_reserve(ptr %a7, i64 %t167, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t168 = load ptr, ptr %a7 + %t169 = getelementptr inbounds { ptr, i64, i64 }, ptr %t168, i64 %t166 + store { ptr, i64, i64 } %t165, ptr %t169 + store i64 %t167, ptr %t164 + br label %endif11238 +else11237: + %t170 = load i8, ptr %a127 + %t171 = icmp eq i8 %t170, 34 + br label %logic.from11239 +logic.from11239: + br i1 %t171, label %logic.end11241, label %logic.rhs11240 +logic.rhs11240: + %t172 = load i8, ptr %a127 + %t173 = icmp eq i8 %t172, 92 + br label %logic.rend11242 +logic.rend11242: + br label %logic.end11241 +logic.end11241: + %t174 = phi i1 [ true, %logic.from11239 ], [ %t173, %logic.rend11242 ] + br label %logic.from11243 +logic.from11243: + br i1 %t174, label %logic.end11245, label %logic.rhs11244 +logic.rhs11244: + %t175 = load i8, ptr %a127 + %t176 = icmp eq i8 %t175, 47 + br label %logic.rend11246 +logic.rend11246: + br label %logic.end11245 +logic.end11245: + %t177 = phi i1 [ true, %logic.from11243 ], [ %t176, %logic.rend11246 ] + br i1 %t177, label %then11247, label %else11248 +then11247: + %t178 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 + %t179 = load i8, ptr %a127 + call void @finch_str_from_char(ptr %a180, i8 signext %t179) + %t181 = load { ptr, i64, i64 }, ptr %a180 + %t182 = load i64, ptr %t178 + %t183 = add i64 %t182, 1 + call void @finch_arr_reserve(ptr %a7, i64 %t183, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t184 = load ptr, ptr %a7 + %t185 = getelementptr inbounds { ptr, i64, i64 }, ptr %t184, i64 %t182 + store { ptr, i64, i64 } %t181, ptr %t185 + store i64 %t183, ptr %t178 + br label %endif11249 +else11248: + %t186 = load i8, ptr %a127 + %t187 = icmp eq i8 %t186, 117 + br i1 %t187, label %then11250, label %else11251 +then11250: + %t188 = load ptr, ptr %a1 + %t189 = call { i1, i64, { ptr, i64, i64 } } @finch.json.read_hex4(ptr %t188) + %t190 = extractvalue { i1, i64, { ptr, i64, i64 } } %t189, 0 + %t191 = xor i1 %t190, true + %t192 = extractvalue { i1, i64, { ptr, i64, i64 } } %t189, 2 + %t193 = extractvalue { i1, i64, { ptr, i64, i64 } } %t189, 1 + br i1 %t191, label %try.failed11253, label %try.ok11254 +try.failed11253: + call void @finch.drop.arr_str(ptr %a7) + %t194 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t192, 2 + ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t194 +try.ok11254: + store i64 %t193, ptr %a195 + %t196 = load i64, ptr %a195 + %t197 = icmp sge i64 %t196, 55296 + br label %logic.from11255 +logic.from11255: + br i1 %t197, label %logic.rhs11256, label %logic.end11257 +logic.rhs11256: + %t198 = load i64, ptr %a195 + %t199 = icmp slt i64 %t198, 56320 + br label %logic.rend11258 +logic.rend11258: + br label %logic.end11257 +logic.end11257: + %t200 = phi i1 [ false, %logic.from11255 ], [ %t199, %logic.rend11258 ] + br label %logic.from11259 +logic.from11259: + br i1 %t200, label %logic.rhs11260, label %logic.end11261 +logic.rhs11260: + %t201 = load ptr, ptr %a1 + %t202 = call i1 @finch.json.comes(ptr %t201, { ptr, i64, i64 } { ptr @.str.7228, i64 2, i64 0 }) + br label %logic.rend11262 +logic.rend11262: + br label %logic.end11261 +logic.end11261: + %t203 = phi i1 [ false, %logic.from11259 ], [ %t202, %logic.rend11262 ] + br i1 %t203, label %then11263, label %endif11265 +then11263: + %t204 = load ptr, ptr %a1 + %t205 = icmp eq ptr %t204, null + br i1 %t205, label %panic11266, label %ok11267 +panic11266: + call void @finch_panic(ptr @.str.7229, i64 398, ptr @.str.7230) unreachable -ok10740: - %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.failed10741, label %try.ok10742 -try.failed10741: - %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.ok10742: - 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 %endif10738 -endif10738: - %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 %endif10725 -else10724: - %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.7020, 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.7021, i64 12, i64 0 }, ptr %a236 +ok11267: + %t206 = getelementptr inbounds %S.json.Reader, ptr %t204, i32 0, i32 1 + %t207 = load i64, ptr %t206 + %t208 = add i64 %t207, 2 + store i64 %t208, ptr %t206 + %t209 = load ptr, ptr %a1 + %t210 = call { i1, i64, { ptr, i64, i64 } } @finch.json.read_hex4(ptr %t209) + %t211 = extractvalue { i1, i64, { ptr, i64, i64 } } %t210, 0 + %t212 = xor i1 %t211, true + %t213 = extractvalue { i1, i64, { ptr, i64, i64 } } %t210, 2 + %t214 = extractvalue { i1, i64, { ptr, i64, i64 } } %t210, 1 + br i1 %t212, label %try.failed11268, label %try.ok11269 +try.failed11268: + call void @finch.drop.arr_str(ptr %a7) + %t215 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t213, 2 + ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t215 +try.ok11269: + store i64 %t214, ptr %a216 + %t217 = load i64, ptr %a195 + %t218 = sub i64 %t217, 55296 + %t219 = mul i64 %t218, 1024 + %t220 = add i64 65536, %t219 + %t221 = load i64, ptr %a216 + %t222 = sub i64 %t221, 56320 + %t223 = add i64 %t220, %t222 + store i64 %t223, ptr %a195 + br label %endif11265 +endif11265: + %t224 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 + %t225 = load i64, ptr %a195 + %t226 = call { ptr, i64, i64 } @finch.json.utf8(i64 %t225) + %t227 = load i64, ptr %t224 + %t228 = add i64 %t227, 1 + call void @finch_arr_reserve(ptr %a7, i64 %t228, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t229 = load ptr, ptr %a7 + %t230 = getelementptr inbounds { ptr, i64, i64 }, ptr %t229, i64 %t227 + store { ptr, i64, i64 } %t226, ptr %t230 + store i64 %t228, ptr %t224 + br label %endif11252 +else11251: + %t231 = load i8, ptr %a127 + call void @finch_str_from_char(ptr %a232, i8 signext %t231) + %t233 = load { ptr, i64, i64 }, ptr %a232 + store { ptr, i64, i64 } { ptr @.str.7231, i64 22, 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 - %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.7022, 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 -endif10725: - br label %endif10722 -endif10722: - br label %endif10711 -endif10711: - br label %endif10708 -endif10708: - br label %endif10705 -endif10705: - br label %endif10702 -endif10702: - br label %endif10699 -endif10699: - %t249 = load ptr, ptr %a1 - %t250 = icmp eq ptr %t249, null - br i1 %t250, label %panic10743, label %ok10744 -panic10743: - call void @finch_panic(ptr @.str.7023, i64 406, ptr @.str.7024) + store { ptr, i64, i64 } %t233, ptr %a237 + call void @finch_str_drop(ptr %a237) + %t238 = load { ptr, i64, i64 }, ptr %a234 + store { ptr, i64, i64 } %t238, ptr %a240 + store { ptr, i64, i64 } { ptr @.str.7232, i64 12, i64 0 }, ptr %a241 + call void @finch_str_concat(ptr %a239, ptr %a240, ptr %a241) + store { ptr, i64, i64 } %t238, ptr %a242 + call void @finch_str_drop(ptr %a242) + %t243 = load { ptr, i64, i64 }, ptr %a239 + %t244 = load ptr, ptr %a1 + %t245 = call { ptr, i64, i64 } @finch.json.where(ptr %t244) + store { ptr, i64, i64 } %t243, ptr %a247 + store { ptr, i64, i64 } %t245, ptr %a248 + call void @finch_str_concat(ptr %a246, ptr %a247, ptr %a248) + store { ptr, i64, i64 } %t243, ptr %a249 + call void @finch_str_drop(ptr %a249) + store { ptr, i64, i64 } %t245, ptr %a250 + call void @finch_str_drop(ptr %a250) + %t251 = load { ptr, i64, i64 }, ptr %a246 + store { ptr, i64, i64 } %t251, ptr %a253 + store { ptr, i64, i64 } { ptr @.str.7233, i64 1, i64 0 }, ptr %a254 + call void @finch_str_concat(ptr %a252, ptr %a253, ptr %a254) + store { ptr, i64, i64 } %t251, ptr %a255 + call void @finch_str_drop(ptr %a255) + %t256 = load { ptr, i64, i64 }, ptr %a252 + call void @finch.drop.arr_str(ptr %a7) + %t257 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t256, 2 + ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t257 +endif11252: + br label %endif11249 +endif11249: + br label %endif11238 +endif11238: + br label %endif11235 +endif11235: + br label %endif11232 +endif11232: + br label %endif11229 +endif11229: + br label %endif11226 +endif11226: + %t258 = load ptr, ptr %a1 + %t259 = icmp eq ptr %t258, null + br i1 %t259, label %panic11270, label %ok11271 +panic11270: + call void @finch_panic(ptr @.str.7234, i64 406, ptr @.str.7235) unreachable -ok10744: - %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.cond10656 +ok11271: + %t260 = getelementptr inbounds %S.json.Reader, ptr %t258, i32 0, i32 1 + %t261 = load i64, ptr %t260 + store i64 %t261, ptr %a12 + br label %while.cond11183 } define internal { i1, %S.json.Json, { ptr, i64, i64 } } @finch.json.read_number(ptr %p0) { @@ -94220,361 +112263,362 @@ entry: %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 + %a153 = alloca { ptr, i64, i64 }, align 16 + %a155 = alloca { ptr, i64, i64 }, align 16 + %a163 = alloca double, align 16 store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic10745, label %ok10746 -panic10745: - call void @finch_panic(ptr @.str.7025, i64 411, ptr @.str.7026) + br i1 %t3, label %panic11272, label %ok11273 +panic11272: + call void @finch_panic(ptr @.str.7236, i64 411, ptr @.str.7237) unreachable -ok10746: +ok11273: %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 %then10747, label %endif10749 -then10747: + br i1 %t9, label %then11274, label %endif11276 +then11274: %t10 = load ptr, ptr %a1 %t11 = icmp eq ptr %t10, null - br i1 %t11, label %panic10750, label %ok10751 -panic10750: - call void @finch_panic(ptr @.str.7027, i64 413, ptr @.str.7028) + br i1 %t11, label %panic11277, label %ok11278 +panic11277: + call void @finch_panic(ptr @.str.7238, i64 413, ptr @.str.7239) unreachable -ok10751: +ok11278: %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 %endif10749 -endif10749: - br label %while.cond10752 -while.cond10752: + br label %endif11276 +endif11276: + br label %while.cond11279 +while.cond11279: %t15 = load ptr, ptr %a1 %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic10755, label %ok10756 -panic10755: - call void @finch_panic(ptr @.str.7029, i64 415, ptr @.str.7030) + br i1 %t16, label %panic11282, label %ok11283 +panic11282: + call void @finch_panic(ptr @.str.7240, i64 415, ptr @.str.7241) unreachable -ok10756: +ok11283: %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 %panic10757, label %ok10758 -panic10757: - call void @finch_panic(ptr @.str.7031, i64 415, ptr @.str.7032) + br i1 %t20, label %panic11284, label %ok11285 +panic11284: + call void @finch_panic(ptr @.str.7242, i64 415, ptr @.str.7243) unreachable -ok10758: +ok11285: %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.from10759 -logic.from10759: - br i1 %t24, label %logic.rhs10760, label %logic.end10761 -logic.rhs10760: + br label %logic.from11286 +logic.from11286: + br i1 %t24, label %logic.rhs11287, label %logic.end11288 +logic.rhs11287: %t25 = load ptr, ptr %a1 %t26 = icmp eq ptr %t25, null - br i1 %t26, label %panic10762, label %ok10763 -panic10762: - call void @finch_panic(ptr @.str.7033, i64 415, ptr @.str.7034) + br i1 %t26, label %panic11289, label %ok11290 +panic11289: + call void @finch_panic(ptr @.str.7244, i64 415, ptr @.str.7245) unreachable -ok10763: +ok11290: %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 %panic10764, label %ok10765 -panic10764: - call void @finch_panic(ptr @.str.7035, i64 415, ptr @.str.7036) + br i1 %t29, label %panic11291, label %ok11292 +panic11291: + call void @finch_panic(ptr @.str.7246, i64 415, ptr @.str.7247) unreachable -ok10765: +ok11292: %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 %range10766, label %inrange10767 -range10766: - call void @finch_panic_index(ptr @.str.7037, i64 415, i64 %t31, i64 %t33) + br i1 %t34, label %range11293, label %inrange11294 +range11293: + call void @finch_panic_index(ptr @.str.7248, i64 415, i64 %t31, i64 %t33) unreachable -inrange10767: +inrange11294: %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.from10768 -logic.from10768: - br i1 %t38, label %logic.rhs10769, label %logic.end10770 -logic.rhs10769: + br label %logic.from11295 +logic.from11295: + br i1 %t38, label %logic.rhs11296, label %logic.end11297 +logic.rhs11296: %t39 = load ptr, ptr %a1 %t40 = icmp eq ptr %t39, null - br i1 %t40, label %panic10771, label %ok10772 -panic10771: - call void @finch_panic(ptr @.str.7038, i64 415, ptr @.str.7039) + br i1 %t40, label %panic11298, label %ok11299 +panic11298: + call void @finch_panic(ptr @.str.7249, i64 415, ptr @.str.7250) unreachable -ok10772: +ok11299: %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 %panic10773, label %ok10774 -panic10773: - call void @finch_panic(ptr @.str.7040, i64 415, ptr @.str.7041) + br i1 %t43, label %panic11300, label %ok11301 +panic11300: + call void @finch_panic(ptr @.str.7251, i64 415, ptr @.str.7252) unreachable -ok10774: +ok11301: %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 %range10775, label %inrange10776 -range10775: - call void @finch_panic_index(ptr @.str.7042, i64 415, i64 %t45, i64 %t47) + br i1 %t48, label %range11302, label %inrange11303 +range11302: + call void @finch_panic_index(ptr @.str.7253, i64 415, i64 %t45, i64 %t47) unreachable -inrange10776: +inrange11303: %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.rend10777 -logic.rend10777: - br label %logic.end10770 -logic.end10770: - %t53 = phi i1 [ false, %logic.from10768 ], [ %t52, %logic.rend10777 ] - br label %logic.from10778 -logic.from10778: - br i1 %t53, label %logic.end10780, label %logic.rhs10779 -logic.rhs10779: + br label %logic.rend11304 +logic.rend11304: + br label %logic.end11297 +logic.end11297: + %t53 = phi i1 [ false, %logic.from11295 ], [ %t52, %logic.rend11304 ] + br label %logic.from11305 +logic.from11305: + br i1 %t53, label %logic.end11307, label %logic.rhs11306 +logic.rhs11306: %t54 = load ptr, ptr %a1 %t55 = icmp eq ptr %t54, null - br i1 %t55, label %panic10781, label %ok10782 -panic10781: - call void @finch_panic(ptr @.str.7043, i64 415, ptr @.str.7044) + br i1 %t55, label %panic11308, label %ok11309 +panic11308: + call void @finch_panic(ptr @.str.7254, i64 415, ptr @.str.7255) unreachable -ok10782: +ok11309: %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 %panic10783, label %ok10784 -panic10783: - call void @finch_panic(ptr @.str.7045, i64 415, ptr @.str.7046) + br i1 %t58, label %panic11310, label %ok11311 +panic11310: + call void @finch_panic(ptr @.str.7256, i64 415, ptr @.str.7257) unreachable -ok10784: +ok11311: %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 %range10785, label %inrange10786 -range10785: - call void @finch_panic_index(ptr @.str.7047, i64 415, i64 %t60, i64 %t62) + br i1 %t63, label %range11312, label %inrange11313 +range11312: + call void @finch_panic_index(ptr @.str.7258, i64 415, i64 %t60, i64 %t62) unreachable -inrange10786: +inrange11313: %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.rend10787 -logic.rend10787: - br label %logic.end10780 -logic.end10780: - %t68 = phi i1 [ true, %logic.from10778 ], [ %t67, %logic.rend10787 ] - br label %logic.from10788 -logic.from10788: - br i1 %t68, label %logic.end10790, label %logic.rhs10789 -logic.rhs10789: + br label %logic.rend11314 +logic.rend11314: + br label %logic.end11307 +logic.end11307: + %t68 = phi i1 [ true, %logic.from11305 ], [ %t67, %logic.rend11314 ] + br label %logic.from11315 +logic.from11315: + br i1 %t68, label %logic.end11317, label %logic.rhs11316 +logic.rhs11316: %t69 = load ptr, ptr %a1 %t70 = icmp eq ptr %t69, null - br i1 %t70, label %panic10791, label %ok10792 -panic10791: - call void @finch_panic(ptr @.str.7048, i64 415, ptr @.str.7049) + br i1 %t70, label %panic11318, label %ok11319 +panic11318: + call void @finch_panic(ptr @.str.7259, i64 415, ptr @.str.7260) unreachable -ok10792: +ok11319: %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 %panic10793, label %ok10794 -panic10793: - call void @finch_panic(ptr @.str.7050, i64 415, ptr @.str.7051) + br i1 %t73, label %panic11320, label %ok11321 +panic11320: + call void @finch_panic(ptr @.str.7261, i64 415, ptr @.str.7262) unreachable -ok10794: +ok11321: %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 %range10795, label %inrange10796 -range10795: - call void @finch_panic_index(ptr @.str.7052, i64 415, i64 %t75, i64 %t77) + br i1 %t78, label %range11322, label %inrange11323 +range11322: + call void @finch_panic_index(ptr @.str.7263, i64 415, i64 %t75, i64 %t77) unreachable -inrange10796: +inrange11323: %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.rend10797 -logic.rend10797: - br label %logic.end10790 -logic.end10790: - %t83 = phi i1 [ true, %logic.from10788 ], [ %t82, %logic.rend10797 ] - br label %logic.from10798 -logic.from10798: - br i1 %t83, label %logic.end10800, label %logic.rhs10799 -logic.rhs10799: + br label %logic.rend11324 +logic.rend11324: + br label %logic.end11317 +logic.end11317: + %t83 = phi i1 [ true, %logic.from11315 ], [ %t82, %logic.rend11324 ] + br label %logic.from11325 +logic.from11325: + br i1 %t83, label %logic.end11327, label %logic.rhs11326 +logic.rhs11326: %t84 = load ptr, ptr %a1 %t85 = icmp eq ptr %t84, null - br i1 %t85, label %panic10801, label %ok10802 -panic10801: - call void @finch_panic(ptr @.str.7053, i64 415, ptr @.str.7054) + br i1 %t85, label %panic11328, label %ok11329 +panic11328: + call void @finch_panic(ptr @.str.7264, i64 415, ptr @.str.7265) unreachable -ok10802: +ok11329: %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 %panic10803, label %ok10804 -panic10803: - call void @finch_panic(ptr @.str.7055, i64 415, ptr @.str.7056) + br i1 %t88, label %panic11330, label %ok11331 +panic11330: + call void @finch_panic(ptr @.str.7266, i64 415, ptr @.str.7267) unreachable -ok10804: +ok11331: %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 %range10805, label %inrange10806 -range10805: - call void @finch_panic_index(ptr @.str.7057, i64 415, i64 %t90, i64 %t92) + br i1 %t93, label %range11332, label %inrange11333 +range11332: + call void @finch_panic_index(ptr @.str.7268, i64 415, i64 %t90, i64 %t92) unreachable -inrange10806: +inrange11333: %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.rend10807 -logic.rend10807: - br label %logic.end10800 -logic.end10800: - %t98 = phi i1 [ true, %logic.from10798 ], [ %t97, %logic.rend10807 ] - br label %logic.from10808 -logic.from10808: - br i1 %t98, label %logic.end10810, label %logic.rhs10809 -logic.rhs10809: + br label %logic.rend11334 +logic.rend11334: + br label %logic.end11327 +logic.end11327: + %t98 = phi i1 [ true, %logic.from11325 ], [ %t97, %logic.rend11334 ] + br label %logic.from11335 +logic.from11335: + br i1 %t98, label %logic.end11337, label %logic.rhs11336 +logic.rhs11336: %t99 = load ptr, ptr %a1 %t100 = icmp eq ptr %t99, null - br i1 %t100, label %panic10811, label %ok10812 -panic10811: - call void @finch_panic(ptr @.str.7058, i64 415, ptr @.str.7059) + br i1 %t100, label %panic11338, label %ok11339 +panic11338: + call void @finch_panic(ptr @.str.7269, i64 415, ptr @.str.7270) unreachable -ok10812: +ok11339: %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 %panic10813, label %ok10814 -panic10813: - call void @finch_panic(ptr @.str.7060, i64 415, ptr @.str.7061) + br i1 %t103, label %panic11340, label %ok11341 +panic11340: + call void @finch_panic(ptr @.str.7271, i64 415, ptr @.str.7272) unreachable -ok10814: +ok11341: %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 %range10815, label %inrange10816 -range10815: - call void @finch_panic_index(ptr @.str.7062, i64 415, i64 %t105, i64 %t107) + br i1 %t108, label %range11342, label %inrange11343 +range11342: + call void @finch_panic_index(ptr @.str.7273, i64 415, i64 %t105, i64 %t107) unreachable -inrange10816: +inrange11343: %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.rend10817 -logic.rend10817: - br label %logic.end10810 -logic.end10810: - %t113 = phi i1 [ true, %logic.from10808 ], [ %t112, %logic.rend10817 ] - br label %logic.from10818 -logic.from10818: - br i1 %t113, label %logic.end10820, label %logic.rhs10819 -logic.rhs10819: + br label %logic.rend11344 +logic.rend11344: + br label %logic.end11337 +logic.end11337: + %t113 = phi i1 [ true, %logic.from11335 ], [ %t112, %logic.rend11344 ] + br label %logic.from11345 +logic.from11345: + br i1 %t113, label %logic.end11347, label %logic.rhs11346 +logic.rhs11346: %t114 = load ptr, ptr %a1 %t115 = icmp eq ptr %t114, null - br i1 %t115, label %panic10821, label %ok10822 -panic10821: - call void @finch_panic(ptr @.str.7063, i64 415, ptr @.str.7064) + br i1 %t115, label %panic11348, label %ok11349 +panic11348: + call void @finch_panic(ptr @.str.7274, i64 415, ptr @.str.7275) unreachable -ok10822: +ok11349: %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 %panic10823, label %ok10824 -panic10823: - call void @finch_panic(ptr @.str.7065, i64 415, ptr @.str.7066) + br i1 %t118, label %panic11350, label %ok11351 +panic11350: + call void @finch_panic(ptr @.str.7276, i64 415, ptr @.str.7277) unreachable -ok10824: +ok11351: %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 %range10825, label %inrange10826 -range10825: - call void @finch_panic_index(ptr @.str.7067, i64 415, i64 %t120, i64 %t122) + br i1 %t123, label %range11352, label %inrange11353 +range11352: + call void @finch_panic_index(ptr @.str.7278, i64 415, i64 %t120, i64 %t122) unreachable -inrange10826: +inrange11353: %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.rend10827 -logic.rend10827: - br label %logic.end10820 -logic.end10820: - %t128 = phi i1 [ true, %logic.from10818 ], [ %t127, %logic.rend10827 ] - br label %logic.rend10828 -logic.rend10828: - br label %logic.end10761 -logic.end10761: - %t129 = phi i1 [ false, %logic.from10759 ], [ %t128, %logic.rend10828 ] - br i1 %t129, label %while.body10753, label %while.end10754 -while.body10753: + br label %logic.rend11354 +logic.rend11354: + br label %logic.end11347 +logic.end11347: + %t128 = phi i1 [ true, %logic.from11345 ], [ %t127, %logic.rend11354 ] + br label %logic.rend11355 +logic.rend11355: + br label %logic.end11288 +logic.end11288: + %t129 = phi i1 [ false, %logic.from11286 ], [ %t128, %logic.rend11355 ] + br i1 %t129, label %while.body11280, label %while.end11281 +while.body11280: %t130 = load ptr, ptr %a1 %t131 = icmp eq ptr %t130, null - br i1 %t131, label %panic10829, label %ok10830 -panic10829: - call void @finch_panic(ptr @.str.7068, i64 416, ptr @.str.7069) + br i1 %t131, label %panic11356, label %ok11357 +panic11356: + call void @finch_panic(ptr @.str.7279, i64 416, ptr @.str.7280) unreachable -ok10830: +ok11357: %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.cond10752 -while.end10754: + br label %while.cond11279 +while.end11281: %t135 = load ptr, ptr %a1 %t136 = icmp eq ptr %t135, null - br i1 %t136, label %panic10831, label %ok10832 -panic10831: - call void @finch_panic(ptr @.str.7070, i64 418, ptr @.str.7071) + br i1 %t136, label %panic11358, label %ok11359 +panic11358: + call void @finch_panic(ptr @.str.7281, i64 418, ptr @.str.7282) unreachable -ok10832: +ok11359: %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 %panic10833, label %ok10834 -panic10833: - call void @finch_panic(ptr @.str.7073, i64 418, ptr @.str.7074) + br i1 %t143, label %panic11360, label %ok11361 +panic11360: + call void @finch_panic(ptr @.str.7284, i64 418, ptr @.str.7285) unreachable -ok10834: +ok11361: %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.7072, i64 418) + call void @finch_str_sub(ptr %a140, ptr %a139, i64 %t141, i64 %t145, ptr @.str.7283, i64 418) %t146 = load { ptr, i64, i64 }, ptr %a140 store { ptr, i64, i64 } zeroinitializer, ptr %a147 store double 0.0, ptr %a148 @@ -94582,31 +112626,34 @@ ok10834: %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.failed10835, label %or.ok10836 -or.failed10835: - 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 %panic10837, label %ok10838 -panic10837: - call void @finch_panic(ptr @.str.7075, i64 419, ptr @.str.7076) + store { ptr, i64, i64 } %t146, ptr %a153 + call void @finch_str_drop(ptr %a153) + %t154 = load double, ptr %a148 + br i1 %t151, label %or.failed11362, label %or.ok11363 +or.failed11362: + store { ptr, i64, i64 } %t152, ptr %a155 + %t156 = load i64, ptr %a6 + %t157 = load ptr, ptr %a1 + %t158 = icmp eq ptr %t157, null + br i1 %t158, label %panic11364, label %ok11365 +panic11364: + call void @finch_panic(ptr @.str.7286, i64 419, ptr @.str.7287) unreachable -ok10838: - %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.7077, 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.ok10836: - 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 +ok11365: + %t159 = getelementptr inbounds %S.json.Reader, ptr %t157, i32 0, i32 1 + store i64 %t156, ptr %t159 + %t160 = load ptr, ptr %a1 + %t161 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t160, { ptr, i64, i64 } { ptr @.str.7288, i64 8, i64 0 }) + call void @finch_str_drop(ptr %a155) + %t162 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t161, 2 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t162 +or.ok11363: + store double %t154, ptr %a163 + %t164 = load double, ptr %a163 + %t165 = call %S.json.Json @finch.json.new_number(double %t164) + %t166 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 + %t167 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t166, %S.json.Json %t165, 1 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t167 } define internal { i1, %S.json.Json, { ptr, i64, i64 } } @finch.json.read_value(ptr %p0) { @@ -94627,44 +112674,44 @@ entry: store i8 %t4, ptr %a5 %t6 = load ptr, ptr %a1 %t7 = icmp eq ptr %t6, null - br i1 %t7, label %panic10839, label %ok10840 -panic10839: - call void @finch_panic(ptr @.str.7078, i64 428, ptr @.str.7079) + br i1 %t7, label %panic11366, label %ok11367 +panic11366: + call void @finch_panic(ptr @.str.7289, i64 428, ptr @.str.7290) unreachable -ok10840: +ok11367: %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 %panic10841, label %ok10842 -panic10841: - call void @finch_panic(ptr @.str.7080, i64 428, ptr @.str.7081) + br i1 %t11, label %panic11368, label %ok11369 +panic11368: + call void @finch_panic(ptr @.str.7291, i64 428, ptr @.str.7292) unreachable -ok10842: +ok11369: %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 %then10843, label %endif10845 -then10843: + br i1 %t15, label %then11370, label %endif11372 +then11370: %t16 = load ptr, ptr %a1 - %t17 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t16, { ptr, i64, i64 } { ptr @.str.7082, i64 7, i64 0 }) + %t17 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t16, { ptr, i64, i64 } { ptr @.str.7293, 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 -endif10845: +endif11372: %t19 = load i8, ptr %a5 %t20 = icmp eq i8 %t19, 123 - br i1 %t20, label %then10846, label %endif10848 -then10846: + br i1 %t20, label %then11373, label %endif11375 +then11373: %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 %panic10849, label %ok10850 -panic10849: - call void @finch_panic(ptr @.str.7083, i64 433, ptr @.str.7084) + br i1 %t24, label %panic11376, label %ok11377 +panic11376: + call void @finch_panic(ptr @.str.7294, i64 433, ptr @.str.7295) unreachable -ok10850: +ok11377: %t25 = getelementptr inbounds %S.json.Reader, ptr %t23, i32 0, i32 1 %t26 = load i64, ptr %t25 %t27 = add i64 %t26, 1 @@ -94674,15 +112721,15 @@ ok10850: %t29 = load ptr, ptr %a1 %t30 = call i8 @finch.json.peek(ptr %t29) %t31 = icmp eq i8 %t30, 125 - br i1 %t31, label %then10851, label %endif10853 -then10851: + br i1 %t31, label %then11378, label %endif11380 +then11378: %t32 = load ptr, ptr %a1 %t33 = icmp eq ptr %t32, null - br i1 %t33, label %panic10854, label %ok10855 -panic10854: - call void @finch_panic(ptr @.str.7085, i64 436, ptr @.str.7086) + br i1 %t33, label %panic11381, label %ok11382 +panic11381: + call void @finch_panic(ptr @.str.7296, i64 436, ptr @.str.7297) unreachable -ok10855: +ok11382: %t34 = getelementptr inbounds %S.json.Reader, ptr %t32, i32 0, i32 1 %t35 = load i64, ptr %t34 %t36 = add i64 %t35, 1 @@ -94691,54 +112738,58 @@ ok10855: %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 -endif10853: - br label %while.cond10856 -while.cond10856: - br label %while.body10857 -while.body10857: +endif11380: + br label %while.cond11383 +while.cond11383: + br label %while.body11384 +while.body11384: %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 %then10859, label %endif10861 -then10859: + br i1 %t43, label %then11386, label %endif11388 +then11386: %t44 = load ptr, ptr %a1 - %t45 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t44, { ptr, i64, i64 } { ptr @.str.7087, i64 15, i64 0 }) + %t45 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t44, { ptr, i64, i64 } { ptr @.str.7298, i64 15, i64 0 }) + call void @finch.drop.S_json_Json(ptr %a22) %t46 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t45, 2 ret { i1, %S.json.Json, { ptr, i64, i64 } } %t46 -endif10861: +endif11388: %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.failed10862, label %try.ok10863 -try.failed10862: + br i1 %t50, label %try.failed11389, label %try.ok11390 +try.failed11389: + call void @finch.drop.S_json_Json(ptr %a22) %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.ok10863: +try.ok11390: 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 %then10864, label %endif10866 -then10864: + br i1 %t58, label %then11391, label %endif11393 +then11391: %t59 = load ptr, ptr %a1 - %t60 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t59, { ptr, i64, i64 } { ptr @.str.7088, i64 3, i64 0 }) + %t60 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t59, { ptr, i64, i64 } { ptr @.str.7299, i64 3, i64 0 }) + call void @finch_str_drop(ptr %a54) + call void @finch.drop.S_json_Json(ptr %a22) %t61 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t60, 2 ret { i1, %S.json.Json, { ptr, i64, i64 } } %t61 -endif10866: +endif11393: %t62 = load ptr, ptr %a1 %t63 = icmp eq ptr %t62, null - br i1 %t63, label %panic10867, label %ok10868 -panic10867: - call void @finch_panic(ptr @.str.7089, i64 449, ptr @.str.7090) + br i1 %t63, label %panic11394, label %ok11395 +panic11394: + call void @finch_panic(ptr @.str.7300, i64 449, ptr @.str.7301) unreachable -ok10868: +ok11395: %t64 = getelementptr inbounds %S.json.Reader, ptr %t62, i32 0, i32 1 %t65 = load i64, ptr %t64 %t66 = add i64 %t65, 1 @@ -94749,11 +112800,13 @@ ok10868: %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.failed10869, label %try.ok10870 -try.failed10869: + br i1 %t70, label %try.failed11396, label %try.ok11397 +try.failed11396: + call void @finch_str_drop(ptr %a54) + call void @finch.drop.S_json_Json(ptr %a22) %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.ok10870: +try.ok11397: store %S.json.Json %t72, ptr %a74 %t75 = load { ptr, i64, i64 }, ptr %a54 %t76 = load %S.json.Json, ptr %a74 @@ -94763,60 +112816,67 @@ try.ok10870: %t78 = load ptr, ptr %a1 %t79 = call i8 @finch.json.peek(ptr %t78) %t80 = icmp eq i8 %t79, 44 - br i1 %t80, label %then10871, label %endif10873 -then10871: + br i1 %t80, label %then11398, label %endif11400 +then11398: %t81 = load ptr, ptr %a1 %t82 = icmp eq ptr %t81, null - br i1 %t82, label %panic10874, label %ok10875 -panic10874: - call void @finch_panic(ptr @.str.7091, i64 454, ptr @.str.7092) + br i1 %t82, label %panic11401, label %ok11402 +panic11401: + call void @finch_panic(ptr @.str.7302, i64 454, ptr @.str.7303) unreachable -ok10875: +ok11402: %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.cond10856 -endif10873: + call void @finch.drop.S_json_Json(ptr %a74) + call void @finch_str_drop(ptr %a54) + br label %while.cond11383 +endif11400: %t86 = load ptr, ptr %a1 %t87 = call i8 @finch.json.peek(ptr %t86) %t88 = icmp eq i8 %t87, 125 - br i1 %t88, label %then10876, label %endif10878 -then10876: + br i1 %t88, label %then11403, label %endif11405 +then11403: %t89 = load ptr, ptr %a1 %t90 = icmp eq ptr %t89, null - br i1 %t90, label %panic10879, label %ok10880 -panic10879: - call void @finch_panic(ptr @.str.7093, i64 458, ptr @.str.7094) + br i1 %t90, label %panic11406, label %ok11407 +panic11406: + call void @finch_panic(ptr @.str.7304, i64 458, ptr @.str.7305) unreachable -ok10880: +ok11407: %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 + call void @finch.drop.S_json_Json(ptr %a74) + call void @finch_str_drop(ptr %a54) %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 -endif10878: +endif11405: %t97 = load ptr, ptr %a1 - %t98 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t97, { ptr, i64, i64 } { ptr @.str.7095, i64 10, i64 0 }) + %t98 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t97, { ptr, i64, i64 } { ptr @.str.7306, i64 10, i64 0 }) + call void @finch.drop.S_json_Json(ptr %a74) + call void @finch_str_drop(ptr %a54) + call void @finch.drop.S_json_Json(ptr %a22) %t99 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t98, 2 ret { i1, %S.json.Json, { ptr, i64, i64 } } %t99 -endif10848: +endif11375: %t100 = load i8, ptr %a5 %t101 = icmp eq i8 %t100, 91 - br i1 %t101, label %then10881, label %endif10883 -then10881: + br i1 %t101, label %then11408, label %endif11410 +then11408: %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 %panic10884, label %ok10885 -panic10884: - call void @finch_panic(ptr @.str.7096, i64 466, ptr @.str.7097) + br i1 %t105, label %panic11411, label %ok11412 +panic11411: + call void @finch_panic(ptr @.str.7307, i64 466, ptr @.str.7308) unreachable -ok10885: +ok11412: %t106 = getelementptr inbounds %S.json.Reader, ptr %t104, i32 0, i32 1 %t107 = load i64, ptr %t106 %t108 = add i64 %t107, 1 @@ -94826,15 +112886,15 @@ ok10885: %t110 = load ptr, ptr %a1 %t111 = call i8 @finch.json.peek(ptr %t110) %t112 = icmp eq i8 %t111, 93 - br i1 %t112, label %then10886, label %endif10888 -then10886: + br i1 %t112, label %then11413, label %endif11415 +then11413: %t113 = load ptr, ptr %a1 %t114 = icmp eq ptr %t113, null - br i1 %t114, label %panic10889, label %ok10890 -panic10889: - call void @finch_panic(ptr @.str.7098, i64 469, ptr @.str.7099) + br i1 %t114, label %panic11416, label %ok11417 +panic11416: + call void @finch_panic(ptr @.str.7309, i64 469, ptr @.str.7310) unreachable -ok10890: +ok11417: %t115 = getelementptr inbounds %S.json.Reader, ptr %t113, i32 0, i32 1 %t116 = load i64, ptr %t115 %t117 = add i64 %t116, 1 @@ -94843,22 +112903,23 @@ ok10890: %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 -endif10888: - br label %while.cond10891 -while.cond10891: - br label %while.body10892 -while.body10892: +endif11415: + br label %while.cond11418 +while.cond11418: + br label %while.body11419 +while.body11419: %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.failed10894, label %try.ok10895 -try.failed10894: + br i1 %t124, label %try.failed11421, label %try.ok11422 +try.failed11421: + call void @finch.drop.S_json_Json(ptr %a103) %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.ok10895: +try.ok11422: 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) @@ -94867,173 +112928,186 @@ try.ok10895: %t131 = load ptr, ptr %a1 %t132 = call i8 @finch.json.peek(ptr %t131) %t133 = icmp eq i8 %t132, 44 - br i1 %t133, label %then10896, label %endif10898 -then10896: + br i1 %t133, label %then11423, label %endif11425 +then11423: %t134 = load ptr, ptr %a1 %t135 = icmp eq ptr %t134, null - br i1 %t135, label %panic10899, label %ok10900 -panic10899: - call void @finch_panic(ptr @.str.7100, i64 477, ptr @.str.7101) + br i1 %t135, label %panic11426, label %ok11427 +panic11426: + call void @finch_panic(ptr @.str.7311, i64 477, ptr @.str.7312) unreachable -ok10900: +ok11427: %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.cond10891 -endif10898: + call void @finch.drop.S_json_Json(ptr %a128) + br label %while.cond11418 +endif11425: %t139 = load ptr, ptr %a1 %t140 = call i8 @finch.json.peek(ptr %t139) %t141 = icmp eq i8 %t140, 93 - br i1 %t141, label %then10901, label %endif10903 -then10901: + br i1 %t141, label %then11428, label %endif11430 +then11428: %t142 = load ptr, ptr %a1 %t143 = icmp eq ptr %t142, null - br i1 %t143, label %panic10904, label %ok10905 -panic10904: - call void @finch_panic(ptr @.str.7102, i64 481, ptr @.str.7103) + br i1 %t143, label %panic11431, label %ok11432 +panic11431: + call void @finch_panic(ptr @.str.7313, i64 481, ptr @.str.7314) unreachable -ok10905: +ok11432: %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 + call void @finch.drop.S_json_Json(ptr %a128) %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 -endif10903: +endif11430: %t150 = load ptr, ptr %a1 - %t151 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t150, { ptr, i64, i64 } { ptr @.str.7104, i64 10, i64 0 }) + %t151 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t150, { ptr, i64, i64 } { ptr @.str.7315, i64 10, i64 0 }) + call void @finch.drop.S_json_Json(ptr %a128) + call void @finch.drop.S_json_Json(ptr %a103) %t152 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t151, 2 ret { i1, %S.json.Json, { ptr, i64, i64 } } %t152 -endif10883: +endif11410: %t153 = load i8, ptr %a5 %t154 = icmp eq i8 %t153, 34 - br i1 %t154, label %then10906, label %endif10908 -then10906: + br i1 %t154, label %then11433, label %endif11435 +then11433: %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.failed10909, label %try.ok10910 -try.failed10909: + br i1 %t158, label %try.failed11436, label %try.ok11437 +try.failed11436: %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.ok10910: +try.ok11437: 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) + call void @finch_str_drop(ptr %a162) %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 -endif10908: +endif11435: %t167 = load i8, ptr %a5 %t168 = icmp eq i8 %t167, 116 - br i1 %t168, label %then10911, label %endif10913 -then10911: + br i1 %t168, label %then11438, label %endif11440 +then11438: %t169 = load ptr, ptr %a1 - %t170 = call { i1, i8, { ptr, i64, i64 } } @finch.json.expect_word(ptr %t169, { ptr, i64, i64 } { ptr @.str.7105, i64 4, i64 0 }) + %t170 = call { i1, i8, { ptr, i64, i64 } } @finch.json.expect_word(ptr %t169, { ptr, i64, i64 } { ptr @.str.7316, 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.failed10914, label %try.ok10915 -try.failed10914: + br i1 %t172, label %try.failed11441, label %try.ok11442 +try.failed11441: %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.ok10915: +try.ok11442: %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 -endif10913: +endif11440: %t178 = load i8, ptr %a5 %t179 = icmp eq i8 %t178, 102 - br i1 %t179, label %then10916, label %endif10918 -then10916: + br i1 %t179, label %then11443, label %endif11445 +then11443: %t180 = load ptr, ptr %a1 - %t181 = call { i1, i8, { ptr, i64, i64 } } @finch.json.expect_word(ptr %t180, { ptr, i64, i64 } { ptr @.str.7106, i64 5, i64 0 }) + %t181 = call { i1, i8, { ptr, i64, i64 } } @finch.json.expect_word(ptr %t180, { ptr, i64, i64 } { ptr @.str.7317, 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.failed10919, label %try.ok10920 -try.failed10919: + br i1 %t183, label %try.failed11446, label %try.ok11447 +try.failed11446: %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.ok10920: +try.ok11447: %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 -endif10918: +endif11445: %t189 = load i8, ptr %a5 %t190 = icmp eq i8 %t189, 110 - br i1 %t190, label %then10921, label %endif10923 -then10921: + br i1 %t190, label %then11448, label %endif11450 +then11448: %t191 = load ptr, ptr %a1 - %t192 = call { i1, i8, { ptr, i64, i64 } } @finch.json.expect_word(ptr %t191, { ptr, i64, i64 } { ptr @.str.7107, i64 4, i64 0 }) + %t192 = call { i1, i8, { ptr, i64, i64 } } @finch.json.expect_word(ptr %t191, { ptr, i64, i64 } { ptr @.str.7318, 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.failed10924, label %try.ok10925 -try.failed10924: + br i1 %t194, label %try.failed11451, label %try.ok11452 +try.failed11451: %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.ok10925: +try.ok11452: %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 -endif10923: +endif11450: %t200 = load i8, ptr %a5 %t201 = icmp eq i8 %t200, 45 - br label %logic.from10926 -logic.from10926: - br i1 %t201, label %logic.end10928, label %logic.rhs10927 -logic.rhs10927: + br label %logic.from11453 +logic.from11453: + br i1 %t201, label %logic.end11455, label %logic.rhs11454 +logic.rhs11454: %t202 = load i8, ptr %a5 %t203 = icmp uge i8 %t202, 48 - br label %logic.from10929 -logic.from10929: - br i1 %t203, label %logic.rhs10930, label %logic.end10931 -logic.rhs10930: + br label %logic.from11456 +logic.from11456: + br i1 %t203, label %logic.rhs11457, label %logic.end11458 +logic.rhs11457: %t204 = load i8, ptr %a5 %t205 = icmp ule i8 %t204, 57 - br label %logic.rend10932 -logic.rend10932: - br label %logic.end10931 -logic.end10931: - %t206 = phi i1 [ false, %logic.from10929 ], [ %t205, %logic.rend10932 ] - br label %logic.rend10933 -logic.rend10933: - br label %logic.end10928 -logic.end10928: - %t207 = phi i1 [ true, %logic.from10926 ], [ %t206, %logic.rend10933 ] - br i1 %t207, label %then10934, label %endif10936 -then10934: + br label %logic.rend11459 +logic.rend11459: + br label %logic.end11458 +logic.end11458: + %t206 = phi i1 [ false, %logic.from11456 ], [ %t205, %logic.rend11459 ] + br label %logic.rend11460 +logic.rend11460: + br label %logic.end11455 +logic.end11455: + %t207 = phi i1 [ true, %logic.from11453 ], [ %t206, %logic.rend11460 ] + br i1 %t207, label %then11461, label %endif11463 +then11461: %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.failed10937, label %try.ok10938 -try.failed10937: + br i1 %t211, label %try.failed11464, label %try.ok11465 +try.failed11464: %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.ok10938: +try.ok11465: %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 -endif10936: +endif11463: %t217 = load ptr, ptr %a1 - %t218 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t217, { ptr, i64, i64 } { ptr @.str.7108, i64 7, i64 0 }) + %t218 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t217, { ptr, i64, i64 } { ptr @.str.7319, 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 void @finch.drop.S_json_Reader(ptr %a) { +entry: + + %t1 = getelementptr inbounds %S.json.Reader, ptr %a, i32 0, i32 0 + call void @finch_str_drop(ptr %t1) + ret void +} + define internal { i1, %S.json.Json, { ptr, i64, i64 } } @finch.json.parse({ ptr, i64, i64 } %p0) { entry: %a1 = alloca { ptr, i64, i64 }, align 16 @@ -95041,8 +113115,6 @@ entry: %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 @@ -95055,11 +113127,12 @@ entry: %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.failed10939, label %try.ok10940 -try.failed10939: + br i1 %t10, label %try.failed11466, label %try.ok11467 +try.failed11466: + call void @finch.drop.S_json_Reader(ptr %a7) %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.ok10940: +try.ok11467: 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 @@ -95068,19 +113141,163 @@ try.ok10940: %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 %then10941, label %endif10943 -then10941: - %t21 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %a7, { ptr, i64, i64 } { ptr @.str.7109, i64 19, i64 0 }) + br i1 %t20, label %then11468, label %endif11470 +then11468: + %t21 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %a7, { ptr, i64, i64 } { ptr @.str.7320, i64 19, i64 0 }) + call void @finch.drop.S_json_Json(ptr %a14) + call void @finch.drop.S_json_Reader(ptr %a7) %t22 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t21, 2 ret { i1, %S.json.Json, { ptr, i64, i64 } } %t22 -endif10943: +endif11470: %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 + call void @finch.drop.S_json_Reader(ptr %a7) + %t24 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 + %t25 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t24, %S.json.Json %t23, 1 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t25 +} + +define internal { ptr, i64, i64 } @finch.embedded.names() { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + store { ptr, i64, i64 } zeroinitializer, ptr %a1 + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t3 = load i64, ptr %t2 + %t4 = add i64 %t3, 1 + call void @finch_arr_reserve(ptr %a1, i64 %t4, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t5 = load ptr, ptr %a1 + %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 %t3 + store { ptr, i64, i64 } { ptr @.str.7321, i64 18, i64 0 }, ptr %t6 + store i64 %t4, ptr %t2 + %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t8 = load i64, ptr %t7 + %t9 = add i64 %t8, 1 + call void @finch_arr_reserve(ptr %a1, i64 %t9, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t10 = load ptr, ptr %a1 + %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t10, i64 %t8 + store { ptr, i64, i64 } { ptr @.str.7322, i64 12, i64 0 }, ptr %t11 + store i64 %t9, ptr %t7 + %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t13 = load i64, ptr %t12 + %t14 = add i64 %t13, 1 + call void @finch_arr_reserve(ptr %a1, i64 %t14, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t15 = load ptr, ptr %a1 + %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t15, i64 %t13 + store { ptr, i64, i64 } { ptr @.str.7323, i64 12, i64 0 }, ptr %t16 + store i64 %t14, ptr %t12 + %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t18 = load i64, ptr %t17 + %t19 = add i64 %t18, 1 + call void @finch_arr_reserve(ptr %a1, i64 %t19, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t20 = load ptr, ptr %a1 + %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t20, i64 %t18 + store { ptr, i64, i64 } { ptr @.str.7324, i64 12, i64 0 }, ptr %t21 + store i64 %t19, ptr %t17 + %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t23 = load i64, ptr %t22 + %t24 = add i64 %t23, 1 + call void @finch_arr_reserve(ptr %a1, i64 %t24, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t25 = load ptr, ptr %a1 + %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t25, i64 %t23 + store { ptr, i64, i64 } { ptr @.str.7325, i64 20, i64 0 }, ptr %t26 + store i64 %t24, ptr %t22 + %t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t28 = load i64, ptr %t27 + %t29 = add i64 %t28, 1 + call void @finch_arr_reserve(ptr %a1, i64 %t29, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t30 = load ptr, ptr %a1 + %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t30, i64 %t28 + store { ptr, i64, i64 } { ptr @.str.7326, i64 12, i64 0 }, ptr %t31 + store i64 %t29, ptr %t27 + %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t33 = load i64, ptr %t32 + %t34 = add i64 %t33, 1 + call void @finch_arr_reserve(ptr %a1, i64 %t34, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t35 = load ptr, ptr %a1 + %t36 = getelementptr inbounds { ptr, i64, i64 }, ptr %t35, i64 %t33 + store { ptr, i64, i64 } { ptr @.str.7327, i64 20, i64 0 }, ptr %t36 + store i64 %t34, ptr %t32 + %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t38 = load i64, ptr %t37 + %t39 = add i64 %t38, 1 + call void @finch_arr_reserve(ptr %a1, i64 %t39, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t40 = load ptr, ptr %a1 + %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i64 %t38 + store { ptr, i64, i64 } { ptr @.str.7328, i64 15, i64 0 }, ptr %t41 + store i64 %t39, ptr %t37 + %t42 = load { ptr, i64, i64 }, ptr %a1 + ret { ptr, i64, i64 } %t42 +} + +define internal { ptr, i64, i64 } @finch.embedded.texts() { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + store { ptr, i64, i64 } zeroinitializer, ptr %a1 + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t3 = load i64, ptr %t2 + %t4 = add i64 %t3, 1 + call void @finch_arr_reserve(ptr %a1, i64 %t4, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t5 = load ptr, ptr %a1 + %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 %t3 + store { ptr, i64, i64 } { ptr @.str.7329, i64 24981, i64 0 }, ptr %t6 + store i64 %t4, ptr %t2 + %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t8 = load i64, ptr %t7 + %t9 = add i64 %t8, 1 + call void @finch_arr_reserve(ptr %a1, i64 %t9, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t10 = load ptr, ptr %a1 + %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t10, i64 %t8 + store { ptr, i64, i64 } { ptr @.str.7330, i64 12884, i64 0 }, ptr %t11 + store i64 %t9, ptr %t7 + %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t13 = load i64, ptr %t12 + %t14 = add i64 %t13, 1 + call void @finch_arr_reserve(ptr %a1, i64 %t14, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t15 = load ptr, ptr %a1 + %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t15, i64 %t13 + store { ptr, i64, i64 } { ptr @.str.7331, i64 2846, i64 0 }, ptr %t16 + store i64 %t14, ptr %t12 + %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t18 = load i64, ptr %t17 + %t19 = add i64 %t18, 1 + call void @finch_arr_reserve(ptr %a1, i64 %t19, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t20 = load ptr, ptr %a1 + %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t20, i64 %t18 + store { ptr, i64, i64 } { ptr @.str.7332, i64 1406, i64 0 }, ptr %t21 + store i64 %t19, ptr %t17 + %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t23 = load i64, ptr %t22 + %t24 = add i64 %t23, 1 + call void @finch_arr_reserve(ptr %a1, i64 %t24, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t25 = load ptr, ptr %a1 + %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t25, i64 %t23 + store { ptr, i64, i64 } { ptr @.str.7333, i64 995, i64 0 }, ptr %t26 + store i64 %t24, ptr %t22 + %t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t28 = load i64, ptr %t27 + %t29 = add i64 %t28, 1 + call void @finch_arr_reserve(ptr %a1, i64 %t29, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t30 = load ptr, ptr %a1 + %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t30, i64 %t28 + store { ptr, i64, i64 } { ptr @.str.7334, i64 2539, i64 0 }, ptr %t31 + store i64 %t29, ptr %t27 + %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t33 = load i64, ptr %t32 + %t34 = add i64 %t33, 1 + call void @finch_arr_reserve(ptr %a1, i64 %t34, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t35 = load ptr, ptr %a1 + %t36 = getelementptr inbounds { ptr, i64, i64 }, ptr %t35, i64 %t33 + store { ptr, i64, i64 } { ptr @.str.7335, i64 1792, i64 0 }, ptr %t36 + store i64 %t34, ptr %t32 + %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t38 = load i64, ptr %t37 + %t39 = add i64 %t38, 1 + call void @finch_arr_reserve(ptr %a1, i64 %t39, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t40 = load ptr, ptr %a1 + %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i64 %t38 + store { ptr, i64, i64 } { ptr @.str.7336, i64 365, i64 0 }, ptr %t41 + store i64 %t39, ptr %t37 + %t42 = load { ptr, i64, i64 }, ptr %a1 + ret { ptr, i64, i64 } %t42 } define i32 @main(i32 %argc, ptr %argv) { diff --git a/src/gen.fch b/src/gen.fch index 66e8ff8..3ba4b96 100644 --- a/src/gen.fch +++ b/src/gen.fch @@ -14,6 +14,8 @@ struct Var { str slot bool readonly int order // how many variables were declared before this one (for defer) + bool owned // it holds memory that is dropped when its scope ends + bool moved // `return x` moved it out: its cleanup is skipped str dpath // where it was declared, for the language server int dline int dcol @@ -54,16 +56,33 @@ struct EnumDef { []int values } +// What happens when a scope ends, in the order things happened (run newest first): a variable is dropped, +// a defer is run. `idx` is the variable's number in the scope, or the defer's. +struct Cleanup { + bool isDefer + int idx +} + struct Scope { []Var vars []ast.Node defers []int orders + []Cleanup cleanups +} + +// A value some expression is holding while it computes the rest: if `try` or `or` leaves the function now, +// it has to be dropped. isAddr: v is the address of the value, not the value. +struct Pending { + str v + ast.Type ty + bool isAddr } struct Loop { str cont str brk int depth // the scope depth at the loop: break and continue unwind down to it + int pend // and so are the temporaries held by the expressions around it } struct FnSig { @@ -137,6 +156,7 @@ struct Gen { int nstr bool term []Scope scopes + []Pending pending []Loop loops FnSig cur str module @@ -849,6 +869,121 @@ fn copyValue(ptr[Gen] g, str v, ast.Type t) -> str { return load(g, llty(g, t), dst) } +// ---------- dropping ---------- + +fn dropAt(ptr[Gen] g, str slot, ast.Type t) { + if !owning(g, t) { + return + } + if t.kind == "str" { + emit(g, "call void @finch_str_drop(ptr " + slot + ")") + } else { + emit(g, "call void " + dropFn(g, t) + "(ptr " + slot + ")") + } +} + +fn dropValue(ptr[Gen] g, str v, ast.Type t) { + if owning(g, t) { + dropAt(g, spill(g, Val(v: v, ty: t)), t) + } +} + +// a temporary nobody keeps: dropped right after use. Constants (text literals, empty arrays) own no memory. +fn release(ptr[Gen] g, Val v) { + if v.fresh && v.v.len > 0 && !isConstant(v.v) && owning(g, v.ty) { + dropValue(g, v.v, v.ty) + } +} + +fn isConstant(str v) -> bool { + return !v.starts_with("%") +} + +fn dropFn(ptr[Gen] g, ast.Type t) -> str { + name := "@finch.drop." + typeKey(t) + if has(g.done, name) { + return name + } + g.done.push(name) + s := beginHelper(g) + if t.kind == "array" { + et := t.elem[0] + if owning(g, et) { + d := load(g, "ptr", "%a") + len := load(g, "i64", op(g, "getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1")) + l := loopStart(g, len) + ep := op(g, "getelementptr inbounds " + llty(g, et) + ", ptr " + d + ", i64 " + l[3]) + dropAt(g, ep, et) + loopEnd(g, l) + } + emit(g, "call void @finch_arr_free(ptr %a)") + } else if t.kind == "map" { + kt := t.elem[0] + vt := t.elem[1] + if owning(g, kt) || owning(g, vt) { + used := load(g, "i64", op(g, "getelementptr inbounds " + llty(g, t) + ", ptr %a, i32 0, i32 2")) + l := loopStart(g, used) + e := entryAt(g, "%a", t, l[3]) + live := newLabel(g, "entry.live") + next := newLabel(g, "entry.next") + condBr(g, op(g, "icmp ne i64 " + load(g, "i64", entryField(g, e, t, 0)) + ", 0"), live, next) + label(g, live) + dropAt(g, entryField(g, e, t, 1), kt) + dropAt(g, entryField(g, e, t, 2), vt) + br(g, next) + label(g, next) + loopEnd(g, l) + } + emit(g, "call void @finch_map_free(ptr %a)") + } else { + sd := g.structs[findStruct(g, t.module, t.name)] + st := llty(g, t) + for k in 0..sd.ftypes.len { + if owning(g, sd.ftypes[k]) { + dropAt(g, op(g, "getelementptr inbounds " + st + ", ptr %a, i32 0, i32 " + str(sd.lidx[k])), sd.ftypes[k]) + } + } + } + emit(g, "ret void") + endHelper(g, s, "define internal void " + name + "(ptr %a)") + return name +} + +// ---------- values held while an expression goes on ---------- + +fn hold(ptr[Gen] g, Val v) { + if v.fresh && v.v.len > 0 && !isConstant(v.v) && owning(g, v.ty) { + g.pending.push(Pending(v: v.v, ty: v.ty, isAddr: false)) + } +} + +fn holdAddr(ptr[Gen] g, str slot, ast.Type t) { + if owning(g, t) { + g.pending.push(Pending(v: slot, ty: t, isAddr: true)) + } +} + +// emit the drops of pending[downTo..], newest first (for a path that leaves the function or a loop) +fn dropPending(ptr[Gen] g, int downTo) { + i := g.pending.len + while i > downTo { + i -= 1 + p := g.pending[i] + if p.isAddr { + dropAt(g, p.v, p.ty) + } else { + dropValue(g, p.v, p.ty) + } + } +} + +// the expression is done: what it held is not pending any more +fn heldEnd(ptr[Gen] g, int mark) { + while g.pending.len > mark { + g.pending.pop() + } +} + // something that can be stored: a fresh value moves, anything else is copied fn own(ptr[Gen] g, Val v) -> str { if !owning(g, v.ty) || v.fresh { @@ -1188,7 +1323,7 @@ fn isBuiltin(str n) -> bool { return names.contains(n) } -fn addVar(ptr[Gen] g, ast.Node at, str name, ast.Type t, str init, bool readonly) -> str { +fn addVar(ptr[Gen] g, ast.Node at, str name, ast.Type t, str init, bool readonly, bool owned) -> str { if lookup(g, name) >= 0 && name != "err" { fail(g, at, "a variable named '" + name + "' already exists here") } @@ -1200,7 +1335,12 @@ 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, dpath: g.files[at.file], dline: at.line, dcol: at.col)) + sc := g.scopes.len - 1 + mine := owned && owning(g, t) + if mine { + g.scopes[sc].cleanups.push(Cleanup(isDefer: false, idx: g.scopes[sc].vars.len)) + } + g.scopes[sc].vars.push(Var(name: name, ty: t, slot: slot, readonly: readonly, owned: mine, 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("$") { @@ -1215,23 +1355,35 @@ fn pushScope(ptr[Gen] g) { g.scopes.push(Scope()) } +// The end of a scope: its variables are dropped and its defers run, unless it has already been left by return, +// break or continue. fn popScope(ptr[Gen] g) { + if !g.term { + runCleanups(g, g.scopes.len - 1) + } g.scopes.pop() } -// Run the defers of scope `idx`, newest first, as if written where the scope ends. -fn runDefers(ptr[Gen] g, int idx) { - sc := g.scopes[idx] - k := sc.defers.len +// Drop the variables of scope `idx` and run its defers, newest first, as if written where the scope ends. +fn runCleanups(ptr[Gen] g, int idx) { + k := g.scopes[idx].cleanups.len while k > 0 { k -= 1 + c := g.scopes[idx].cleanups[k] + if !c.isDefer { + v := g.scopes[idx].vars[c.idx] + if !v.moved { + dropAt(g, v.slot, v.ty) + } + continue + } savedOn := g.deferOn savedLimit := g.deferLimit g.deferOn = true - g.deferLimit = sc.orders[k] + g.deferLimit = g.scopes[idx].orders[c.idx] g.inDefer += 1 pushScope(g) - stmt(g, sc.defers[k]) + stmt(g, g.scopes[idx].defers[c.idx]) popScope(g) g.inDefer -= 1 g.deferOn = savedOn @@ -1244,16 +1396,12 @@ fn unwind(ptr[Gen] g, int depth) { i := g.scopes.len while i > depth { i -= 1 - runDefers(g, i) + runCleanups(g, i) } } -// The end of a block: its defers run, unless the block has already left by return, break or continue. fn endScope(ptr[Gen] g) { - if !g.term { - runDefers(g, g.scopes.len - 1) - } - g.scopes.pop() + popScope(g) } // ---------- mutation analysis: does a function change a parameter? ---------- @@ -1577,12 +1725,14 @@ fn genericCall(ptr[Gen] g, ast.Node c, int ti, int first, str shown) -> Val { b.bound.push(false) } []Val vals + mark := g.pending.len for k in 0..nparams { v := expr(g, c.kids[first + k]) if v.ty.kind == "void" || v.ty.kind == "null" { fail(g, c.kids[first + k], "this has no type to work out " + tpl.tparams.join(", ") + " from") } vals.push(v) + hold(g, v) bindType(g, f.kids[k].ty, v.ty, tpl.tparams, addr(b)) } for i in 0..tpl.tparams.len { @@ -1598,7 +1748,12 @@ fn genericCall(ptr[Gen] g, ast.Node c, int ti, int first, str shown) -> Val { v := coerce(g, vals[k], sig.params[k], c.kids[first + k], "argument '" + sig.pnames[k] + "'") out.push(llty(g, sig.params[k]) + " " + v.v) } - return emitCall(g, sig, c, out, shown) + r := emitCall(g, sig, c, out, shown) + for v in vals { + release(g, v) + } + heldEnd(g, mark) + return r } // A struct from a C header: the fields clang says it has, at the offsets clang says, @@ -1986,7 +2141,7 @@ fn define(ptr[Gen] g, int si) { if g.cur.recv.len > 0 { g.dbgArg = k + 2 } - addVar(g, f.kids[k], g.cur.pnames[k], pt, v, false) + addVar(g, f.kids[k], g.cur.pnames[k], pt, v, false, owning(g, pt) && !g.cur.borrow[k]) g.dbgArg = 0 } block(g, f.kids[f.kids.len - 1], false) @@ -1994,7 +2149,7 @@ fn define(ptr[Gen] g, int si) { if g.cur.ret.kind != "void" { fail(g, f, "function '" + f.name + "' can reach its end without returning " + ast.show(g.cur.ret)) } - runDefers(g, 0) + unwind(g, 0) if g.cur.fallible { emit(g, "ret " + retTy(g, g.cur) + " { i1 true, i8 0, { ptr, i64, i64 } zeroinitializer }") } else { @@ -2039,9 +2194,9 @@ fn stmt(ptr[Gen] g, ast.Node s) { assignStmt(g, s) } else if k == "expr" { if s.kids[0].kind == "or" { - orElse(g, s.kids[0], true) + release(g, orElse(g, s.kids[0], true)) } else { - expr(g, s.kids[0]) + release(g, expr(g, s.kids[0])) } } else if k == "match" { matchGen(g, s, false) @@ -2060,6 +2215,7 @@ fn stmt(ptr[Gen] g, ast.Node s) { fail(g, s, "defer inside defer is not allowed") } sc := g.scopes.len - 1 + g.scopes[sc].cleanups.push(Cleanup(isDefer: true, idx: g.scopes[sc].defers.len)) g.scopes[sc].defers.push(s.kids[0]) g.scopes[sc].orders.push(g.nvars) } else if k == "break" || k == "continue" { @@ -2070,6 +2226,7 @@ fn stmt(ptr[Gen] g, ast.Node s) { fail(g, s, k + " can only be used inside a loop") } l := g.loops[g.loops.len - 1] + dropPending(g, l.pend) unwind(g, l.depth) if k == "break" { br(g, l.brk) @@ -2090,7 +2247,7 @@ fn declStmt(ptr[Gen] g, ast.Node s) { if v.ty.kind == "null" { fail(g, s.kids[0], "null needs a type, like: ptr[int] " + s.name + " = null") } - addVar(g, s, s.name, v.ty, own(g, v), false) + addVar(g, s, s.name, v.ty, own(g, v), false, true) return } t := resolve(g, s.ty, s) @@ -2099,14 +2256,14 @@ fn declStmt(ptr[Gen] g, ast.Node s) { []ast.Node noArgs []str noNames v := construct(g, findStruct(g, t.module, t.name), noArgs, noNames, s) - addVar(g, s, s.name, t, v.v, false) + addVar(g, s, s.name, t, v.v, false, true) return } - addVar(g, s, s.name, t, zeroOf(t), false) + addVar(g, s, s.name, t, zeroOf(t), false, true) return } v := coerce(g, exprWant(g, s.kids[0], t), t, s.kids[0], "'" + s.name + "'") - addVar(g, s, s.name, t, own(g, v), false) + addVar(g, s, s.name, t, own(g, v), false, true) } fn hasDefaults(ptr[Gen] g, ast.Type t) -> bool { @@ -2139,18 +2296,50 @@ fn assignStmt(ptr[Gen] g, ast.Node s) { what = "'" + root + "'" } if s.name == "=" { - v := expr(g, s.kids[1]) + // the right side first: it may move memory the target lives in (a.push(...) inside it) + want := T("void") + known := false + if target.kind == "var" { + id := lookup(g, root) + if id >= 0 { + want = varAt(g, id).ty + known = true + } + } + v := Val() + if known { + v = exprWant(g, s.kids[1], want) + } else { + v = expr(g, s.kids[1]) + } + mark := g.pending.len + hold(g, v) // while the target is computed (a[try f()] = ...) dst := place(g, target, true) v = coerce(g, v, dst.ty, s.kids[1], what) - store(g, llty(g, dst.ty), own(g, v), dst.addr) + nv := own(g, v) + if owning(g, dst.ty) { + old := load(g, llty(g, dst.ty), dst.addr) + store(g, llty(g, dst.ty), nv, dst.addr) + dropValue(g, old, dst.ty) + } else { + store(g, llty(g, dst.ty), nv, dst.addr) + } + heldEnd(g, mark) return } rhs := expr(g, s.kids[1]) + mark := g.pending.len + hold(g, rhs) dst := place(g, target, true) cur := Val(v: load(g, llty(g, dst.ty), dst.addr), ty: dst.ty) opName := s.name.sub(0, 1) v := coerce(g, arith(g, opName, cur, rhs, s), dst.ty, s, what) - store(g, llty(g, dst.ty), own(g, v), dst.addr) + nv := own(g, v) + store(g, llty(g, dst.ty), nv, dst.addr) + if owning(g, dst.ty) { + dropValue(g, cur.v, dst.ty) + } + heldEnd(g, mark) } fn condition(ptr[Gen] g, ast.Node e) -> str { @@ -2198,7 +2387,7 @@ fn whileStmt(ptr[Gen] g, ast.Node s) { condBr(g, c, body, end) } label(g, body) - g.loops.push(Loop(cont: cond, brk: end, depth: g.scopes.len)) + g.loops.push(Loop(cont: cond, brk: end, depth: g.scopes.len, pend: g.pending.len)) breaks := countBreaks(s.kids[1]) block(g, s.kids[1], true) g.loops.pop() @@ -2228,7 +2417,7 @@ fn forStmt(ptr[Gen] g, ast.Node s) { from := coerce(g, expr(g, s.kids[0]), T("int"), s.kids[0], "the start of a range").v to := coerce(g, expr(g, s.kids[1]), T("int"), s.kids[1], "the end of a range").v pushScope(g) - i := addVar(g, s, s.name, T("int"), from, true) + i := addVar(g, s, s.name, T("int"), from, true, false) cond := newLabel(g, "for.cond") body := newLabel(g, "for.body") step := newLabel(g, "for.step") @@ -2239,7 +2428,7 @@ fn forStmt(ptr[Gen] g, ast.Node s) { c := op(g, "icmp slt i64 " + iv + ", " + to) condBr(g, c, body, end) label(g, body) - g.loops.push(Loop(cont: step, brk: end, depth: g.scopes.len)) + g.loops.push(Loop(cont: step, brk: end, depth: g.scopes.len, pend: g.pending.len)) block(g, s.kids[2], true) g.loops.pop() br(g, step) @@ -2289,19 +2478,19 @@ fn eachMap(ptr[Gen] g, ast.Node s, str mp, ast.Type t, bool live) { hash := load(g, "i64", entryField(g, entry, t, 0)) condBr(g, op(g, "icmp eq i64 " + hash + ", 0"), step, body) // a removed entry label(g, body) - g.loops.push(Loop(cont: step, brk: end, depth: g.scopes.len)) + g.loops.push(Loop(cont: step, brk: end, depth: g.scopes.len, pend: g.pending.len)) pushScope(g) kv := load(g, llty(g, kt), entryField(g, entry, t, 1)) if changes { kv = copyValue(g, kv, kt) } - addVar(g, s, s.name, kt, kv, true) + addVar(g, s, s.name, kt, kv, true, changes) if s.text.len > 0 { vv := load(g, llty(g, vt), entryField(g, entry, t, 2)) if changes { vv = copyValue(g, vv, vt) } - addVar(g, s, s.text, vt, vv, true) + addVar(g, s, s.text, vt, vv, true, changes) } block(g, s.kids[1], true) popScope(g) @@ -2324,7 +2513,7 @@ fn eachStmt(ptr[Gen] g, ast.Node s) { lt = r.pl.ty } else { lt = r.val.ty - listAddr = spill(g, r.val) + listAddr = addVar(g, s, "$list" + str(g.nvars), lt, own(g, r.val), false, true) } if lt.kind == "map" { eachMap(g, s, listAddr, lt, r.isPlace) @@ -2358,14 +2547,14 @@ fn eachStmt(ptr[Gen] g, ast.Node s) { if copyElems { elem = copyValue(g, elem, et) } - g.loops.push(Loop(cont: step, brk: end, depth: g.scopes.len)) + g.loops.push(Loop(cont: step, brk: end, depth: g.scopes.len, pend: g.pending.len)) pushScope(g) elemVar := s.name if s.text.len > 0 { // for i, x in list - addVar(g, s, s.name, T("int"), i, true) + addVar(g, s, s.name, T("int"), i, true, false) elemVar = s.text } - addVar(g, s, elemVar, et, elem, true) + addVar(g, s, elemVar, et, elem, true, copyElems) block(g, s.kids[1], true) popScope(g) g.loops.pop() @@ -2395,6 +2584,7 @@ fn returnStmt(ptr[Gen] g, ast.Node s) { checkArgs(g, c, 0, 1, "error") msg := coerce(g, expr(g, c.kids[0]), T("str"), c.kids[0], "the error message") out := own(g, msg) + dropPending(g, 0) unwind(g, 0) emit(g, "ret " + retTy(g, g.cur) + " " + op(g, "insertvalue " + retTy(g, g.cur) + " zeroinitializer, { ptr, i64, i64 } " + out + ", 2")) g.term = true @@ -2404,6 +2594,7 @@ fn returnStmt(ptr[Gen] g, ast.Node s) { if s.kids.len > 0 { fail(g, s.kids[0], "'" + g.cur.name + "' doesn't return a value (it has no '-> type')") } + dropPending(g, 0) unwind(g, 0) if g.cur.fallible { emit(g, "ret " + retTy(g, g.cur) + " { i1 true, i8 0, { ptr, i64, i64 } zeroinitializer }") @@ -2416,18 +2607,42 @@ fn returnStmt(ptr[Gen] g, ast.Node s) { if s.kids.len == 0 { fail(g, s, "'" + g.cur.name + "' must return " + ast.show(g.cur.ret)) } - v := coerce(g, exprWant(g, s.kids[0], g.cur.ret), g.cur.ret, s.kids[0], "the returned value") - out := v.v - // returning a local variable moves it out; anything else borrowed is copied - isLocal := false + // `return local` moves the variable out instead of copying it if s.kids[0].kind == "var" { - id := lookup(g, s.kids[0].name) - isLocal = id >= 0 && id / 100000 > 0 - } - if !isLocal { - out = own(g, v) + name := s.kids[0].name + idx := g.scopes.len + while idx > 0 { + idx -= 1 + found := -1 + for vi in 0..g.scopes[idx].vars.len { + if g.scopes[idx].vars[vi].name == name && !(g.deferOn && g.scopes[idx].vars[vi].order >= g.deferLimit) { + found = vi + } + } + if found < 0 { + continue + } + lv := g.scopes[idx].vars[found] + if lv.owned && ast.same(lv.ty, g.cur.ret) { + out := load(g, llty(g, lv.ty), lv.slot) + g.scopes[idx].vars[found].moved = true + dropPending(g, 0) + unwind(g, 0) + g.scopes[idx].vars[found].moved = false + finishReturn(g, out) + return + } + break + } } + v := coerce(g, exprWant(g, s.kids[0], g.cur.ret), g.cur.ret, s.kids[0], "the returned value") + out := own(g, v) + dropPending(g, 0) unwind(g, 0) + finishReturn(g, out) +} + +fn finishReturn(ptr[Gen] g, str out) { if g.cur.fallible { a := op(g, "insertvalue " + retTy(g, g.cur) + " zeroinitializer, i1 true, 0") b := op(g, "insertvalue " + retTy(g, g.cur) + " " + a + ", " + llty(g, g.cur.ret) + " " + out + ", 1") @@ -2517,6 +2732,7 @@ fn mapIndex(ptr[Gen] g, ast.Node e, Ref obj, ast.Type t, bool write) -> Ref { fail(g, e, "this is a temporary map, it can't be changed") } entry := mapSlot(g, obj.pl.addr, t, key, true, e) + release(g, key) return Ref(isPlace: true, pl: Place(addr: entryField(g, entry, t, 2), ty: vt)) } mp := "" @@ -2538,6 +2754,7 @@ fn mapIndex(ptr[Gen] g, ast.Node e, Ref obj, ast.Type t, bool write) -> Ref { emit(g, "unreachable") g.term = true label(g, found) + release(g, key) va := entryField(g, entryAt(g, mp, t, i), t, 2) if obj.isPlace { return Ref(isPlace: true, pl: Place(addr: va, ty: vt)) @@ -2547,6 +2764,7 @@ fn mapIndex(ptr[Gen] g, ast.Node e, Ref obj, ast.Type t, bool write) -> Ref { if owning(g, vt) && obj.val.fresh { out = Val(v: copyValue(g, v, vt), ty: vt, fresh: true) } + release(g, obj.val) // from a temporary map: take the value, drop the rest return Ref(isPlace: false, val: out) } @@ -2591,19 +2809,30 @@ fn mapLit(ptr[Gen] g, ast.Node e, ast.Type want) -> Val { } mp := alloca(g, llty(g, t)) store(g, llty(g, t), "zeroinitializer", mp) + outer := g.pending.len + holdAddr(g, mp, t) // the entries so far, if a later one leaves early for i in 0..e.kids.len / 2 { + mark := g.pending.len k := k0 - v := v0 if !(i == 0 && first) { k = exprWant(g, e.kids[2 * i], t.elem[0]) - v = exprWant(g, e.kids[2 * i + 1], t.elem[1]) } k = coerce(g, k, t.elem[0], e.kids[2 * i], "every key of this map") + hold(g, k) + v := v0 + if !(i == 0 && first) { + v = exprWant(g, e.kids[2 * i + 1], t.elem[1]) + } v = coerce(g, v, t.elem[1], e.kids[2 * i + 1], "every value of this map") vv := own(g, v) entry := mapSlot(g, mp, t, k, false, e) - store(g, llty(g, t.elem[1]), vv, entryField(g, entry, t, 2)) + va := entryField(g, entry, t, 2) + dropAt(g, va, t.elem[1]) // a key given twice: the last value wins + store(g, llty(g, t.elem[1]), vv, va) + release(g, k) + heldEnd(g, mark) } + heldEnd(g, outer) return Val(v: load(g, llty(g, t), mp), ty: t, fresh: true) } @@ -2619,6 +2848,7 @@ fn mapMethod(ptr[Gen] g, ast.Node m, str mp, ast.Type t) -> Val { } key := coerce(g, exprWant(g, m.kids[1], kt), kt, m.kids[1], "the key") i := mapFind(g, mp, spill(g, key), t) + release(g, key) was := op(g, "icmp sge i64 " + i + ", 0") if n == "has" { return Val(v: was, ty: T("bool")) @@ -2628,6 +2858,9 @@ fn mapMethod(ptr[Gen] g, ast.Node m, str mp, ast.Type t) -> Val { end := newLabel(g, "remove.end") condBr(g, was, hit, end) label(g, hit) + ent := entryAt(g, mp, t, i) + dropAt(g, entryField(g, ent, t, 1), kt) + dropAt(g, entryField(g, ent, t, 2), vt) emit(g, "call void @finch_map_remove_at(ptr " + mp + ", i64 " + i + ", i64 " + entrySize(g, t) + ")") br(g, end) label(g, end) @@ -2655,6 +2888,20 @@ fn mapMethod(ptr[Gen] g, ast.Node m, str mp, ast.Type t) -> Val { } if n == "clear" { checkArgs(g, m, 1, 0, n) + if owning(g, kt) || owning(g, vt) { + used := load(g, "i64", op(g, "getelementptr inbounds " + llty(g, t) + ", ptr " + mp + ", i32 0, i32 2")) + l := loopStart(g, used) + e := entryAt(g, mp, t, l[3]) + live := newLabel(g, "entry.live") + next := newLabel(g, "entry.next") + condBr(g, op(g, "icmp ne i64 " + load(g, "i64", entryField(g, e, t, 0)) + ", 0"), live, next) + label(g, live) + dropAt(g, entryField(g, e, t, 1), kt) + dropAt(g, entryField(g, e, t, 2), vt) + br(g, next) + label(g, next) + loopEnd(g, l) + } emit(g, "call void @finch_map_clear(ptr " + mp + ")") return Val(ty: T("void")) } @@ -2716,6 +2963,8 @@ fn matchGen(ptr[Gen] g, ast.Node e, bool asValue) -> Val { if st.kind == "void" || st.kind == "null" { fail(g, e.kids[0], "there is nothing to match here") } + mark := g.pending.len + hold(g, subj) // a temporary subject lives through the arms end := newLabel(g, "match.end") hasElse := false reached := false // does any arm go on to the end? @@ -2806,6 +3055,7 @@ fn matchGen(ptr[Gen] g, ast.Node e, bool asValue) -> Val { emit(g, "unreachable") g.term = true } + heldEnd(g, mark) label(g, end) if !reached { emit(g, "unreachable") @@ -2813,8 +3063,11 @@ fn matchGen(ptr[Gen] g, ast.Node e, bool asValue) -> Val { return Val(ty: T("void")) } if asValue { - return Val(v: op(g, "phi " + llty(g, resultTy) + " " + phiList(inVals, inLabels)), ty: resultTy, fresh: owning(g, resultTy)) + out := Val(v: op(g, "phi " + llty(g, resultTy) + " " + phiList(inVals, inLabels)), ty: resultTy, fresh: owning(g, resultTy)) + release(g, subj) + return out } + release(g, subj) return Val(ty: T("void")) } @@ -2873,6 +3126,7 @@ fn tryExpr(ptr[Gen] g, ast.Node e) -> Val { ok := newLabel(g, "try.ok") condBr(g, f.failed, bad, ok) label(g, bad) + dropPending(g, 0) // what the expressions around this `try` were holding unwind(g, 0) emit(g, "ret " + retTy(g, g.cur) + " " + op(g, "insertvalue " + retTy(g, g.cur) + " zeroinitializer, { ptr, i64, i64 } " + f.msg + ", 2")) g.term = true @@ -2890,7 +3144,7 @@ fn orElse(ptr[Gen] g, ast.Node e, bool discard) -> Val { label(g, bad) if e.flag { pushScope(g) - addVar(g, e, "err", T("str"), f.msg, true) + addVar(g, e, "err", T("str"), f.msg, true, true) block(g, e.kids[1], true) left := g.term popScope(g) @@ -2901,6 +3155,7 @@ fn orElse(ptr[Gen] g, ast.Node e, bool discard) -> Val { join := newLabel(g, "or.end") br(g, join) label(g, ok) + release(g, v) // read_file(p) or { ... } as a statement: the unused value goes br(g, join) label(g, join) return Val(ty: T("void")) @@ -2913,7 +3168,7 @@ fn orElse(ptr[Gen] g, ast.Node e, bool discard) -> Val { fail(g, e.kids[1], "this call gives back no value, so there is nothing to replace; handle the failure with or { ... }") } pushScope(g) - addVar(g, e, "err", T("str"), f.msg, true) + addVar(g, e, "err", T("str"), f.msg, true, true) fb := coerce(g, exprWant(g, e.kids[1], v.ty), v.ty, e.kids[1], "the value after 'or'") fv := own(g, fb) popScope(g) @@ -3118,6 +3373,8 @@ fn arith(ptr[Gen] g, str o, Val l, Val r, ast.Node at) -> Val { if o == "+" && l.ty.kind == "str" && r.ty.kind == "str" { out := alloca(g, "{ ptr, i64, i64 }") emit(g, "call void @finch_str_concat(ptr " + out + ", ptr " + spill(g, l) + ", ptr " + spill(g, r) + ")") + release(g, l) + release(g, r) return Val(v: load(g, "{ ptr, i64, i64 }", out), ty: T("str"), fresh: true) } if !unify(g, addr(l), addr(r)) { @@ -3179,10 +3436,16 @@ fn compare(ptr[Gen] g, str o, Val l, Val r, ast.Node at) -> Val { if o == "!=" { pred = "eq" } - return Val(v: op(g, "icmp " + pred + " i32 " + c + ", 0"), ty: T("bool")) + res := op(g, "icmp " + pred + " i32 " + c + ", 0") + release(g, l) + release(g, r) + return Val(v: res, ty: T("bool")) } c := op(g, "call i64 @finch_str_cmp(ptr " + spill(g, l) + ", ptr " + spill(g, r) + ")") - return Val(v: op(g, "icmp " + intPred(o, true) + " i64 " + c + ", 0"), ty: T("bool")) + res := op(g, "icmp " + intPred(o, true) + " i64 " + c + ", 0") + release(g, l) + release(g, r) + return Val(v: res, ty: T("bool")) } if !unify(g, addr(l), addr(r)) { badOperands(g, o, l, r, at) @@ -3249,7 +3512,10 @@ fn binary(ptr[Gen] g, ast.Node e) -> Val { return Val(v: op(g, "phi i1 [ " + short + ", %" + from + " ], [ " + r + ", %" + rhsEnd + " ]"), ty: T("bool")) } l := expr(g, e.kids[0]) + mark := g.pending.len + hold(g, l) // while the right side is computed (it may `try`) r := expr(g, e.kids[1]) + heldEnd(g, mark) if o == "==" || o == "!=" || o == "<" || o == "<=" || o == ">" || o == ">=" { return compare(g, o, l, r, e) } @@ -3264,6 +3530,7 @@ fn arrayLit(ptr[Gen] g, ast.Node a, ast.Type want) -> Val { fail(g, a, "an empty [] needs a type, like: []int nums = []") } []str vals + mark := g.pending.len for k in a.kids { v := Val() if et.kind == "void" { @@ -3274,7 +3541,9 @@ fn arrayLit(ptr[Gen] g, ast.Node a, ast.Type want) -> Val { } v = coerce(g, v, et, k, "every element of this array") vals.push(own(g, v)) + hold(g, Val(v: vals[vals.len - 1], ty: et, fresh: true)) // while the next elements are computed } + heldEnd(g, mark) at := ast.arrayOf(et) n := str(vals.len) data := "null" @@ -3473,7 +3742,9 @@ fn member(ptr[Gen] g, ast.Node m, bool write) -> Ref { lp := op(g, "getelementptr inbounds " + llty(g, t) + ", ptr " + obj.pl.addr + ", i32 0, i32 1") return Ref(isPlace: false, val: Val(v: load(g, "i64", lp), ty: T("int"))) } - return Ref(isPlace: false, val: Val(v: op(g, "extractvalue " + llty(g, t) + " " + obj.val.v + ", 1"), ty: T("int"))) + n := op(g, "extractvalue " + llty(g, t) + " " + obj.val.v + ", 1") + release(g, obj.val) + return Ref(isPlace: false, val: Val(v: n, ty: T("int"))) } if t.kind != "struct" { fail(g, m, ast.show(t) + " has no fields (no '." + m.name + "')") @@ -3494,11 +3765,22 @@ fn member(ptr[Gen] g, ast.Node m, bool write) -> Ref { if owning(g, ft) && obj.val.fresh { out = Val(v: copyValue(g, fv, ft), ty: ft, fresh: true) } + release(g, obj.val) // a field of a temporary struct: take it, then drop the rest return Ref(isPlace: false, val: out) } fn index(ptr[Gen] g, ast.Node e, bool write) -> Ref { obj := ref(g, e.kids[0], write) + mark := g.pending.len + if !obj.isPlace { + hold(g, obj.val) // while the index is computed + } + r := indexOf(g, e, obj, write) + heldEnd(g, mark) + return r +} + +fn indexOf(ptr[Gen] g, ast.Node e, Ref obj, bool write) -> Ref { t := obj.val.ty if obj.isPlace { t = obj.pl.ty @@ -3558,6 +3840,7 @@ fn index(ptr[Gen] g, ast.Node e, bool write) -> Ref { if owning(g, et) && obj.val.fresh { out = Val(v: copyValue(g, ev, et), ty: et, fresh: true) } + release(g, obj.val) return Ref(isPlace: false, val: out) } @@ -3618,6 +3901,7 @@ fn convert(ptr[Gen] g, ast.Node c, ast.Type to) -> Val { ok := op(g, "call i32 @finch_str_try_int(ptr " + spill(g, v) + ", ptr " + out + ", ptr " + err + ")") g.ffailed = op(g, "icmp eq i32 " + ok + ", 0") g.fmsg = load(g, "{ ptr, i64, i64 }", err) + release(g, v) return Val(v: intCast(g, load(g, "i64", out), T("int"), to), ty: to) } out := alloca(g, "double") @@ -3625,15 +3909,18 @@ fn convert(ptr[Gen] g, ast.Node c, ast.Type to) -> Val { ok := op(g, "call i32 @finch_str_try_float(ptr " + spill(g, v) + ", ptr " + out + ", ptr " + err + ")") g.ffailed = op(g, "icmp eq i32 " + ok + ", 0") g.fmsg = load(g, "{ ptr, i64, i64 }", err) + release(g, v) return Val(v: floatCast(g, load(g, "double", out), T("float"), to), ty: to) } if from.kind == "str" && isNumber(to) { file := strGlobal(g, g.files[c.file]) if isInt(to) { r := op(g, "call i64 @finch_str_to_int(ptr " + spill(g, v) + ", ptr " + file + ", i64 " + str(c.line) + ")") + release(g, v) return Val(v: intCast(g, r, T("int"), to), ty: to) } r := op(g, "call double @finch_str_to_float(ptr " + spill(g, v) + ", ptr " + file + ", i64 " + str(c.line) + ")") + release(g, v) return Val(v: floatCast(g, r, T("float"), to), ty: to) } if isInt(to) && from.kind == "enum" { @@ -4175,11 +4462,15 @@ fn callC(ptr[Gen] g, ast.Node c, cimport.CFunc f) -> Val { ptys.push("ptr sret(" + llty(g, ret) + ") align 16") args.push("ptr sret(" + llty(g, ret) + ") align 16 " + sretSlot) } + []Val temps + mark := g.pending.len for i in 0..c.kids.len { if i < f.params.len { pt := ptypes[i] a := pl.params[i] v := coerce(g, exprWant(g, c.kids[i], pt), pt, c.kids[i], "argument " + str(i + 1) + " of " + f.name) + temps.push(v) + hold(g, v) if a.kind == "memory" { slot := alloca(g, llty(g, pt)) store(g, llty(g, pt), v.v, slot) @@ -4215,6 +4506,8 @@ fn callC(ptr[Gen] g, ast.Node c, cimport.CFunc f) -> Val { if t.kind == "void" { fail(g, c.kids[i], "this gives back nothing") } + temps.push(v) + hold(g, v) if t.kind == "struct" || t.kind == "array" { fail(g, c.kids[i], "structs and arrays can't be passed to the '...' part of a C function") } @@ -4260,13 +4553,16 @@ fn callC(ptr[Gen] g, ast.Node c, cimport.CFunc f) -> Val { text := "call" + retExt + " " + retLL + sig + " @" + f.name + "(" + args.join(", ") + ")" if ret.kind == "void" { emit(g, text) + releaseAll(g, temps, mark) return Val(ty: ret) } if pl.sret { emit(g, text) + releaseAll(g, temps, mark) return Val(v: load(g, llty(g, ret), sretSlot), ty: ret) } r := op(g, text) + releaseAll(g, temps, mark) if pl.ret.kind == "expand" { slot := alloca(g, "[32 x i8]") store(g, pl.ret.coerced, r, slot) @@ -4281,6 +4577,14 @@ fn callC(ptr[Gen] g, ast.Node c, cimport.CFunc f) -> Val { return Val(v: r, ty: ret) } +// the call is made: what its arguments held is dropped +fn releaseAll(ptr[Gen] g, []Val vals, int mark) { + for v in vals { + release(g, v) + } + heldEnd(g, mark) +} + // libc functions the runtime declares itself, with the signatures C has fn runtimeDeclares(str name) -> bool { return ["printf", "fflush", "exit", "free", "qsort"].contains(name) @@ -4320,6 +4624,7 @@ fn call(ptr[Gen] g, ast.Node c) -> Val { printf(g, " ", "") } emitPrint(g, v.v, v.ty, false) + release(g, v) } printf(g, "\n", "") return Val(ty: T("void")) @@ -4344,8 +4649,9 @@ fn call(ptr[Gen] g, ast.Node c) -> Val { v := expr(g, c.kids[0]) out := strOut(g) k := v.ty.kind + borrowed := false // a C string is not copied: whoever keeps it copies it if k == "str" { - return Val(v: copyValue(g, v.v, v.ty), ty: v.ty, fresh: true) + return Val(v: own(g, v), ty: v.ty, fresh: true) } else if isSigned(v.ty) { emit(g, "call void @finch_str_from_int(ptr " + out + ", i64 " + intCast(g, v.v, v.ty, T("int")) + ")") } else if isUnsigned(v.ty) { @@ -4361,17 +4667,20 @@ fn call(ptr[Gen] g, ast.Node c) -> Val { // a C string, copied store(g, "{ ptr, i64, i64 }", "zeroinitializer", out) emit(g, "call void @finch_str_from_c(ptr " + out + ", ptr " + v.v + ")") + borrowed = true } else if k == "array" && (v.ty.elem[0].kind == "u8" || v.ty.elem[0].kind == "char") { // bytes become text store(g, "{ ptr, i64, i64 }", "zeroinitializer", out) emit(g, "call void @finch_str_from_bytes(ptr " + out + ", ptr " + spill(g, v) + ")") + release(g, v) } else if k == "bool" || k == "char" || k == "array" || k == "map" || k == "struct" || k == "enum" { store(g, "{ ptr, i64, i64 }", "zeroinitializer", out) emitFormat(g, out, v.v, v.ty, false) + release(g, v) } else { fail(g, c.kids[0], "can't turn " + ast.show(v.ty) + " into str") } - return Val(v: load(g, "{ ptr, i64, i64 }", out), ty: T("str"), fresh: true) + return Val(v: load(g, "{ ptr, i64, i64 }", out), ty: T("str"), fresh: !borrowed) } to := numType(n) if to.len > 0 { @@ -4379,9 +4688,11 @@ fn call(ptr[Gen] g, ast.Node c) -> Val { } if n == "read_file" || n == "file_exists" { checkArgs(g, c, 0, 1, n) - path := spill(g, strArg(g, c.kids[0], "the file name")) + pv := strArg(g, c.kids[0], "the file name") + path := spill(g, pv) if n == "file_exists" { r := op(g, "call i32 @finch_file_exists(ptr " + path + ")") + release(g, pv) return Val(v: op(g, "icmp ne i32 " + r + ", 0"), ty: T("bool")) } out := strOut(g) @@ -4392,25 +4703,36 @@ fn call(ptr[Gen] g, ast.Node c) -> Val { ok := op(g, "call i32 @finch_try_read_file(ptr " + out + ", ptr " + path + ", ptr " + err + ")") g.ffailed = op(g, "icmp eq i32 " + ok + ", 0") g.fmsg = load(g, "{ ptr, i64, i64 }", err) + release(g, pv) return Val(v: load(g, "{ ptr, i64, i64 }", out), ty: T("str"), fresh: true) } file := strGlobal(g, g.files[c.file]) emit(g, "call void @finch_read_file(ptr " + out + ", ptr " + path + ", ptr " + file + ", i64 " + str(c.line) + ")") + release(g, pv) return Val(v: load(g, "{ ptr, i64, i64 }", out), ty: T("str"), fresh: true) } if n == "write_file" { checkArgs(g, c, 0, 2, n) - path := spill(g, strArg(g, c.kids[0], "the file name")) - text := spill(g, strArg(g, c.kids[1], "the text")) + pv := strArg(g, c.kids[0], "the file name") + mark := g.pending.len + hold(g, pv) + tv := strArg(g, c.kids[1], "the text") + heldEnd(g, mark) + path := spill(g, pv) + text := spill(g, tv) if g.ftarget == nodeKey(c) { err := alloca(g, "{ ptr, i64, i64 }") store(g, "{ ptr, i64, i64 }", "zeroinitializer", err) ok := op(g, "call i32 @finch_try_write_file(ptr " + path + ", ptr " + text + ", ptr " + err + ")") g.ffailed = op(g, "icmp eq i32 " + ok + ", 0") g.fmsg = load(g, "{ ptr, i64, i64 }", err) + release(g, pv) + release(g, tv) return Val(ty: T("void")) } r := op(g, "call i32 @finch_write_file(ptr " + path + ", ptr " + text + ")") + release(g, pv) + release(g, tv) return Val(v: op(g, "icmp ne i32 " + r + ", 0"), ty: T("bool")) } if n == "delete_file" { @@ -4424,9 +4746,13 @@ fn call(ptr[Gen] g, ast.Node c) -> Val { ok := op(g, "call i32 @finch_try_delete_file(ptr " + heap + ", ptr " + err + ")") g.ffailed = op(g, "icmp eq i32 " + ok + ", 0") g.fmsg = load(g, "{ ptr, i64, i64 }", err) + dropAt(g, heap, T("str")) + release(g, p) return Val(ty: T("void")) } r := op(g, "call i32 @finch_delete_file(ptr " + heap + ")") + dropAt(g, heap, T("str")) + release(g, p) return Val(v: op(g, "icmp ne i32 " + r + ", 0"), ty: T("bool")) } if n == "shell" { @@ -4434,7 +4760,10 @@ fn call(ptr[Gen] g, ast.Node c) -> Val { cmd := strArg(g, c.kids[0], "the command") heap := strOut(g) emit(g, "call void @finch_str_copy(ptr " + heap + ", ptr " + spill(g, cmd) + ")") - return Val(v: op(g, "call i64 @finch_shell(ptr " + heap + ")"), ty: T("int")) + r := op(g, "call i64 @finch_shell(ptr " + heap + ")") + dropAt(g, heap, T("str")) + release(g, cmd) + return Val(v: r, ty: T("int")) } if n == "exit" { checkArgs(g, c, 0, 1, n) @@ -4452,6 +4781,7 @@ fn call(ptr[Gen] g, ast.Node c) -> Val { } out := strOut(g) emit(g, "call void @finch_input(ptr " + out + ", ptr " + spill(g, prompt) + ")") + release(g, prompt) return Val(v: load(g, "{ ptr, i64, i64 }", out), ty: T("str"), fresh: true) } if n == "new" { @@ -4467,6 +4797,15 @@ fn call(ptr[Gen] g, ast.Node c) -> Val { if v.ty.kind != "ptr" { fail(g, c.kids[0], "free(...) is only for pointers from new(...) or C; arrays, str and structs are freed by Finch at the end of their block") } + if v.ty.elem.len > 0 && owning(g, v.ty.elem[0]) { + drop := newLabel(g, "free.drop") + done := newLabel(g, "free.done") + condBr(g, op(g, "icmp eq ptr " + v.v + ", null"), done, drop) + label(g, drop) + dropAt(g, v.v, v.ty.elem[0]) + br(g, done) + label(g, done) + } emit(g, "call void @free(ptr " + v.v + ")") return Val(ty: T("void")) } @@ -4531,6 +4870,8 @@ fn callFn(ptr[Gen] g, int fi, ast.Node c, int first, str shown, str selfAddr, st if sig.recv.len > 0 { args.push("ptr " + selfAddr) } + []Val fresh + mark := g.pending.len for k in 0..sig.params.len { a := c.kids[first + k] v := coerce(g, exprWant(g, a, sig.params[k]), sig.params[k], a, "argument '" + sig.pnames[k] + "'") @@ -4538,9 +4879,18 @@ fn callFn(ptr[Gen] g, int fi, ast.Node c, int first, str shown, str selfAddr, st if owning(g, sig.params[k]) && !v.fresh && selfRoot.len > 0 && rootVar(a) == selfRoot { v = Val(v: copyValue(g, v.v, v.ty), ty: v.ty, fresh: true) } - args.push(llty(g, sig.params[k]) + " " + v.v) + args.push(llty(g, sig.params[k]) + " " + v.v) // owning values are lent: the function never drops them + if v.fresh { + fresh.push(v) + } + hold(g, v) } - return emitCall(g, sig, c, args, shown) + r := emitCall(g, sig, c, args, shown) + for v in fresh { + release(g, v) + } + heldEnd(g, mark) + return r } // The call itself, once the arguments are values ("i64 5"); the receiver's address, if any, is already first. @@ -4600,6 +4950,7 @@ fn construct(ptr[Gen] g, int si, []ast.Node args, []str names, ast.Node at) -> V given[k] = i } v := "zeroinitializer" + mark := g.pending.len for k in 0..sd.fnames.len { ft := sd.ftypes[k] fv := Val() @@ -4625,8 +4976,11 @@ fn construct(ptr[Gen] g, int si, []ast.Node args, []str names, ast.Node at) -> V } else { continue } - v = op(g, "insertvalue " + st + " " + v + ", " + llty(g, ft) + " " + own(g, fv) + ", " + str(sd.lidx[k])) + fo := own(g, fv) + hold(g, Val(v: fo, ty: ft, fresh: true)) + v = op(g, "insertvalue " + st + " " + v + ", " + llty(g, ft) + " " + fo + ", " + str(sd.lidx[k])) } + heldEnd(g, mark) return Val(v: v, ty: t, fresh: owning(g, t)) } @@ -4674,6 +5028,7 @@ fn method(ptr[Gen] g, ast.Node m) -> Val { } changing := ["push", "pop", "insert", "remove", "clear", "resize", "sort", "reverse"] r := ref(g, objNode, changing.contains(m.name)) + mark := g.pending.len t := r.val.ty if r.isPlace { t = r.pl.ty @@ -4687,9 +5042,17 @@ fn method(ptr[Gen] g, ast.Node m) -> Val { fail(g, m, m.name + "() would change a temporary array; store it in a variable first") } a = spill(g, r.val) + if r.val.fresh { + holdAddr(g, a, t) + } } noteMethod(g, m, docs.arrayMethods()) - return arrayMethod(g, m, a, t) + out := arrayMethod(g, m, a, t) + if !r.isPlace && r.val.fresh { + dropAt(g, a, t) + } + heldEnd(g, mark) + return out } if t.kind == "str" { sv := r.val @@ -4697,7 +5060,15 @@ fn method(ptr[Gen] g, ast.Node m) -> Val { 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 !r.isPlace { + hold(g, sv) + } + out := strMethod(g, m, spill(g, sv)) + if !r.isPlace { + release(g, sv) + } + heldEnd(g, mark) + return out } if t.kind == "map" { mp := "" @@ -4708,12 +5079,22 @@ fn method(ptr[Gen] g, ast.Node m) -> Val { fail(g, m, m.name + "() would change a temporary map; store it in a variable first") } mp = spill(g, r.val) + if r.val.fresh { + holdAddr(g, mp, t) + } } noteMethod(g, m, docs.mapMethods()) - return mapMethod(g, m, mp, t) + out := mapMethod(g, m, mp, t) + if !r.isPlace && r.val.fresh { + dropAt(g, mp, t) + } + heldEnd(g, mark) + return out } + heldEnd(g, mark) st := t selfAddr := "" + temp := false if t.kind == "ptr" && t.elem.len > 0 && t.elem[0].kind == "struct" { pv := r.val.v if r.isPlace { @@ -4726,7 +5107,8 @@ fn method(ptr[Gen] g, ast.Node m) -> Val { if r.isPlace { selfAddr = r.pl.addr } else { - selfAddr = spill(g, r.val) + selfAddr = spill(g, r.val) // a temporary struct: Point(1, 2).length() + temp = true } } if st.kind == "struct" || st.kind == "enum" { @@ -4765,7 +5147,15 @@ fn method(ptr[Gen] g, ast.Node m) -> Val { } } } - return callFn(g, fi, m, 1, ast.show(st) + "." + m.name, selfAddr, rootVar(objNode)) + if temp && r.val.fresh { + holdAddr(g, selfAddr, st) + } + out := callFn(g, fi, m, 1, ast.show(st) + "." + m.name, selfAddr, rootVar(objNode)) + if temp && r.val.fresh && owning(g, st) { + dropAt(g, selfAddr, st) + } + heldEnd(g, mark) + return out } fail(g, m, ast.show(t) + " has no methods") return Val() @@ -4803,6 +5193,7 @@ fn arrayMethod(ptr[Gen] g, ast.Node m, str a, ast.Type at) -> Val { } if n == "clear" { need(g, m, 0) + dropFrom(g, a, at, "0") store(g, "i64", "0", lenAddr) return Val(ty: T("void")) } @@ -4827,7 +5218,7 @@ fn arrayMethod(ptr[Gen] g, ast.Node m, str a, ast.Type at) -> Val { condBr(g, c, body, end) label(g, body) ev := Val(v: load(g, ET, op(g, "getelementptr inbounds " + ET + ", ptr " + data + ", i64 " + i)), ty: et) - eq := compare(g, "==", ev, x, m).v + eq := compare(g, "==", ev, Val(v: x.v, ty: x.ty), m).v condBr(g, eq, hit, nxt) label(g, hit) store(g, "i64", i, res) @@ -4836,6 +5227,7 @@ fn arrayMethod(ptr[Gen] g, ast.Node m, str a, ast.Type at) -> Val { store(g, "i64", op(g, "add i64 " + i + ", 1"), iv) br(g, cond) label(g, end) + release(g, x) r := load(g, "i64", res) if n == "find" { return Val(v: r, ty: T("int")) @@ -4847,9 +5239,11 @@ fn arrayMethod(ptr[Gen] g, ast.Node m, str a, ast.Type at) -> Val { if et.kind != "str" { fail(g, m, "join() works on an array of str") } - sep := spill(g, strArg(g, m.kids[1], "the separator")) + sepv := strArg(g, m.kids[1], "the separator") + sep := spill(g, sepv) out := strOut(g) emit(g, "call void @finch_str_join(ptr " + out + ", ptr " + a + ", ptr " + sep + ")") + release(g, sepv) return Val(v: load(g, "{ ptr, i64, i64 }", out), ty: T("str"), fresh: true) } if n == "insert" { @@ -4874,6 +5268,7 @@ fn arrayMethod(ptr[Gen] g, ast.Node m, str a, ast.Type at) -> Val { if n == "resize" { need(g, m, 1) k := coerce(g, expr(g, m.kids[1]), T("int"), m.kids[1], "the new length").v + dropFrom(g, a, at, k) emit(g, "call void @finch_arr_resize(ptr " + a + ", i64 " + k + ", i64 " + sizeOf(g, et) + ")") return Val(ty: T("void")) } @@ -4930,6 +5325,24 @@ fn arrayMethod(ptr[Gen] g, ast.Node m, str a, ast.Type at) -> Val { return Val() } +// resize/clear: the elements from `from` on go away, so they are dropped +fn dropFrom(ptr[Gen] g, str a, ast.Type at, str from) { + et := at.elem[0] + if !owning(g, et) { + return + } + ET := llty(g, et) + l := load(g, "i64", op(g, "getelementptr inbounds { ptr, i64, i64 }, ptr " + a + ", i32 0, i32 1")) + d := load(g, "ptr", a) + under := op(g, "icmp slt i64 " + from + ", " + l) + neg := op(g, "icmp slt i64 " + from + ", 0") + start := op(g, "select i1 " + under + ", i64 " + op(g, "select i1 " + neg + ", i64 0, i64 " + from) + ", i64 " + l) + lp := loopStart(g, op(g, "sub i64 " + l + ", " + start)) + ep := op(g, "getelementptr inbounds " + ET + ", ptr " + d + ", i64 " + op(g, "add i64 " + start + ", " + lp[3])) + dropAt(g, ep, et) + loopEnd(g, lp) +} + // -1, 0 or 1, for qsort fn cmpFn(ptr[Gen] g, ast.Type t) -> str { name := "@finch.cmp." + typeKey(t) @@ -4975,20 +5388,27 @@ fn strMethod(ptr[Gen] g, ast.Node m, str s) -> Val { } if n == "find" || n == "contains" || n == "starts_with" || n == "ends_with" { need(g, m, 1) - t := spill(g, strArg(g, m.kids[1], "the text to look for")) + tv := strArg(g, m.kids[1], "the text to look for") + t := spill(g, tv) if n == "find" { - return Val(v: op(g, "call i64 @finch_str_find(ptr " + s + ", ptr " + t + ")"), ty: T("int")) + res := op(g, "call i64 @finch_str_find(ptr " + s + ", ptr " + t + ")") + release(g, tv) + return Val(v: res, ty: T("int")) } if n == "contains" { r := op(g, "call i64 @finch_str_find(ptr " + s + ", ptr " + t + ")") - return Val(v: op(g, "icmp sge i64 " + r + ", 0"), ty: T("bool")) + res := op(g, "icmp sge i64 " + r + ", 0") + release(g, tv) + return Val(v: res, ty: T("bool")) } fname := "@finch_str_starts" if n == "ends_with" { fname = "@finch_str_ends" } r := op(g, "call i32 " + fname + "(ptr " + s + ", ptr " + t + ")") - return Val(v: op(g, "icmp ne i32 " + r + ", 0"), ty: T("bool")) + res := op(g, "icmp ne i32 " + r + ", 0") + release(g, tv) + return Val(v: res, ty: T("bool")) } if n == "trim" || n == "upper" || n == "lower" { need(g, m, 0) @@ -4997,16 +5417,25 @@ fn strMethod(ptr[Gen] g, ast.Node m, str s) -> Val { } if n == "replace" { need(g, m, 2) - a := spill(g, strArg(g, m.kids[1], "the text to replace")) - b := spill(g, strArg(g, m.kids[2], "the new text")) + av := strArg(g, m.kids[1], "the text to replace") + mark := g.pending.len + hold(g, av) + bv := strArg(g, m.kids[2], "the new text") + heldEnd(g, mark) + a := spill(g, av) + b := spill(g, bv) emit(g, "call void @finch_str_replace(ptr " + out + ", ptr " + s + ", ptr " + a + ", ptr " + b + ")") + release(g, av) + release(g, bv) return Val(v: load(g, "{ ptr, i64, i64 }", out), ty: T("str"), fresh: true) } if n == "split" { need(g, m, 1) - sep := spill(g, strArg(g, m.kids[1], "the separator")) + sepv := strArg(g, m.kids[1], "the separator") + sep := spill(g, sepv) ao := strOut(g) emit(g, "call void @finch_str_split(ptr " + ao + ", ptr " + s + ", ptr " + sep + ")") + release(g, sepv) return Val(v: load(g, "{ ptr, i64, i64 }", ao), ty: ast.arrayOf(T("str")), fresh: true) } if n == "repeat" { @@ -5033,6 +5462,9 @@ fn runtimeDecls() -> str { "declare void @finch_panic_index(ptr, i64, i64, i64) noreturn cold", "declare ptr @finch_alloc(i64)", "declare void @finch_str_copy(ptr, ptr)", + "declare void @finch_str_drop(ptr)", + "declare void @finch_arr_free(ptr)", + "declare void @finch_map_free(ptr)", "declare void @finch_str_own(ptr)", "declare void @finch_str_concat(ptr, ptr, ptr)", "declare i32 @finch_str_eq(ptr, ptr)",